From 36e18c2a892ec88bb60dc0a07c94f2eed8855236 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 10 Sep 2025 10:56:34 +0200 Subject: [PATCH 001/965] JS: Enable inline expectations in BuildArtifactLeak The tests already have the annotations, it just seems to have been disable by accident --- .../ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.qlref | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.qlref b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.qlref index ac51e69c797..b0fc1218f95 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.qlref +++ b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.qlref @@ -1 +1,2 @@ query: Security/CWE-312/BuildArtifactLeak.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql From 602dae059240333c303d02b984d8016b18c95190 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 10 Sep 2025 10:58:34 +0200 Subject: [PATCH 002/965] JS: Add test showing FP --- .../CWE-312/BuildArtifactLeak.expected | 19 +++++++++++++++---- .../Security/CWE-312/build-leaks.js | 12 +++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected index 2e8c7462e2d..56f41bab444 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected +++ b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected @@ -1,3 +1,8 @@ +#select +| build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | This creates a build artifact that depends on $@. | build-leaks.js:5:35:5:45 | process.env | sensitive data returned byprocess environment | +| build-leaks.js:34:26:34:57 | getEnv( ... ngified | build-leaks.js:15:24:15:34 | process.env | build-leaks.js:34:26:34:57 | getEnv( ... ngified | This creates a build artifact that depends on $@. | build-leaks.js:15:24:15:34 | process.env | sensitive data returned byprocess environment | +| build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | This creates a build artifact that depends on $@. | build-leaks.js:40:14:40:60 | url.par ... assword | sensitive data returned byan access to current_password | +| build-leaks.js:102:30:102:46 | getFilteredEnv4() | build-leaks.js:97:43:97:53 | process.env | build-leaks.js:102:30:102:46 | getFilteredEnv4() | This creates a build artifact that depends on $@. | build-leaks.js:97:43:97:53 | process.env | sensitive data returned byprocess environment | edges | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | provenance | | | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | provenance | | @@ -23,6 +28,11 @@ edges | build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:40:9:40:10 | pw | provenance | | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | provenance | | | build-leaks.js:41:82:41:83 | pw | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | provenance | | +| build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | build-leaks.js:102:30:102:46 | getFilteredEnv4() | provenance | | +| build-leaks.js:97:17:97:19 | [post update] env | build-leaks.js:98:24:98:26 | env | provenance | | +| build-leaks.js:97:43:97:53 | process.env | build-leaks.js:97:17:97:19 | [post update] env | provenance | Config | +| build-leaks.js:98:24:98:26 | env | build-leaks.js:22:49:22:51 | env | provenance | | +| build-leaks.js:98:24:98:26 | env | build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | provenance | | nodes | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | semmle.label | {\\n " ... leak]\\n} | | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | semmle.label | JSON.st ... ss.env) | @@ -50,10 +60,11 @@ nodes | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | semmle.label | { "proc ... y(pw) } | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | semmle.label | JSON.stringify(pw) | | build-leaks.js:41:82:41:83 | pw | semmle.label | pw | +| build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | semmle.label | ["FOO", ... }, {}) | +| build-leaks.js:97:17:97:19 | [post update] env | semmle.label | [post update] env | +| build-leaks.js:97:43:97:53 | process.env | semmle.label | process.env | +| build-leaks.js:98:24:98:26 | env | semmle.label | env | +| build-leaks.js:102:30:102:46 | getFilteredEnv4() | semmle.label | getFilteredEnv4() | subpaths | build-leaks.js:22:36:22:38 | raw | build-leaks.js:22:49:22:51 | env | build-leaks.js:24:20:24:22 | env | build-leaks.js:22:24:25:14 | Object. ... }, {}) | | build-leaks.js:22:36:22:38 | raw | build-leaks.js:23:39:23:41 | raw | build-leaks.js:24:20:24:22 | env | build-leaks.js:22:24:25:14 | Object. ... }, {}) | -#select -| build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | This creates a build artifact that depends on $@. | build-leaks.js:5:35:5:45 | process.env | sensitive data returned byprocess environment | -| build-leaks.js:34:26:34:57 | getEnv( ... ngified | build-leaks.js:15:24:15:34 | process.env | build-leaks.js:34:26:34:57 | getEnv( ... ngified | This creates a build artifact that depends on $@. | build-leaks.js:15:24:15:34 | process.env | sensitive data returned byprocess environment | -| build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | This creates a build artifact that depends on $@. | build-leaks.js:40:14:40:60 | url.par ... assword | sensitive data returned byan access to current_password | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js b/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js index e99122cb6af..fb501535296 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js +++ b/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js @@ -90,4 +90,14 @@ var server = https.createServer(function (req, res) { } new webpack.DefinePlugin(getOnlyReactVariables3()); -})(); \ No newline at end of file + + function getFilteredEnv4() { + return ["FOO", "BAR", "BAZ"] + .reduce((env, key) => { + env[key] = JSON.stringify(process.env[key]); // $ SPURIOUS: Source[js/build-artifact-leak] + return env; + }, {}); + } + + new webpack.DefinePlugin(getFilteredEnv4()); // $ SPURIOUS: Alert[js/build-artifact-leak] +})(); From 2a4d6830ec5d7fae5f499c066d25bde6dc1c383a Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 10 Sep 2025 11:02:45 +0200 Subject: [PATCH 003/965] JS: An array of constants should be considered "filtered" --- .../dataflow/CleartextLoggingCustomizations.qll | 14 ++++++++++++++ .../Security/CWE-312/BuildArtifactLeak.expected | 11 ----------- .../query-tests/Security/CWE-312/build-leaks.js | 4 ++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/CleartextLoggingCustomizations.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/CleartextLoggingCustomizations.qll index dbb775f99b5..a7bbc73ce03 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/CleartextLoggingCustomizations.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/CleartextLoggingCustomizations.qll @@ -247,10 +247,24 @@ module CleartextLogging { reduceCall.getABoundCallbackParameter(0, 1) = name | reduceCall.getReceiver+().(DataFlow::MethodCallNode).getMethodName() = "filter" + or + isArrayOfConstants(reduceCall.getReceiver+()) ) or exists(StringOps::RegExpTest test | test.getStringOperand().getALocalSource() = name) or exists(MembershipCandidate test | test.getAMemberNode().getALocalSource() = name) } + + private predicate isArrayOfConstants(DataFlow::ArrayCreationNode array) { + forex(DataFlow::Node node | + node = + [ + array.getAnElement(), array.getAPropertyWrite().getRhs(), + array.getAMethodCall("push").getArgument(0) + ] + | + exists(node.getStringValue()) + ) + } } diff --git a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected index 56f41bab444..59560d7c7f3 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected +++ b/javascript/ql/test/query-tests/Security/CWE-312/BuildArtifactLeak.expected @@ -2,7 +2,6 @@ | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | This creates a build artifact that depends on $@. | build-leaks.js:5:35:5:45 | process.env | sensitive data returned byprocess environment | | build-leaks.js:34:26:34:57 | getEnv( ... ngified | build-leaks.js:15:24:15:34 | process.env | build-leaks.js:34:26:34:57 | getEnv( ... ngified | This creates a build artifact that depends on $@. | build-leaks.js:15:24:15:34 | process.env | sensitive data returned byprocess environment | | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | This creates a build artifact that depends on $@. | build-leaks.js:40:14:40:60 | url.par ... assword | sensitive data returned byan access to current_password | -| build-leaks.js:102:30:102:46 | getFilteredEnv4() | build-leaks.js:97:43:97:53 | process.env | build-leaks.js:102:30:102:46 | getFilteredEnv4() | This creates a build artifact that depends on $@. | build-leaks.js:97:43:97:53 | process.env | sensitive data returned byprocess environment | edges | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | provenance | | | build-leaks.js:5:35:5:45 | process.env | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | provenance | | @@ -28,11 +27,6 @@ edges | build-leaks.js:40:14:40:60 | url.par ... assword | build-leaks.js:40:9:40:10 | pw | provenance | | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | provenance | | | build-leaks.js:41:82:41:83 | pw | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | provenance | | -| build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | build-leaks.js:102:30:102:46 | getFilteredEnv4() | provenance | | -| build-leaks.js:97:17:97:19 | [post update] env | build-leaks.js:98:24:98:26 | env | provenance | | -| build-leaks.js:97:43:97:53 | process.env | build-leaks.js:97:17:97:19 | [post update] env | provenance | Config | -| build-leaks.js:98:24:98:26 | env | build-leaks.js:22:49:22:51 | env | provenance | | -| build-leaks.js:98:24:98:26 | env | build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | provenance | | nodes | build-leaks.js:4:39:6:1 | {\\n " ... leak]\\n} | semmle.label | {\\n " ... leak]\\n} | | build-leaks.js:5:20:5:46 | JSON.st ... ss.env) | semmle.label | JSON.st ... ss.env) | @@ -60,11 +54,6 @@ nodes | build-leaks.js:41:43:41:86 | { "proc ... y(pw) } | semmle.label | { "proc ... y(pw) } | | build-leaks.js:41:67:41:84 | JSON.stringify(pw) | semmle.label | JSON.stringify(pw) | | build-leaks.js:41:82:41:83 | pw | semmle.label | pw | -| build-leaks.js:95:16:99:18 | ["FOO", ... }, {}) | semmle.label | ["FOO", ... }, {}) | -| build-leaks.js:97:17:97:19 | [post update] env | semmle.label | [post update] env | -| build-leaks.js:97:43:97:53 | process.env | semmle.label | process.env | -| build-leaks.js:98:24:98:26 | env | semmle.label | env | -| build-leaks.js:102:30:102:46 | getFilteredEnv4() | semmle.label | getFilteredEnv4() | subpaths | build-leaks.js:22:36:22:38 | raw | build-leaks.js:22:49:22:51 | env | build-leaks.js:24:20:24:22 | env | build-leaks.js:22:24:25:14 | Object. ... }, {}) | | build-leaks.js:22:36:22:38 | raw | build-leaks.js:23:39:23:41 | raw | build-leaks.js:24:20:24:22 | env | build-leaks.js:22:24:25:14 | Object. ... }, {}) | diff --git a/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js b/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js index fb501535296..ca81d1fab73 100644 --- a/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js +++ b/javascript/ql/test/query-tests/Security/CWE-312/build-leaks.js @@ -94,10 +94,10 @@ var server = https.createServer(function (req, res) { function getFilteredEnv4() { return ["FOO", "BAR", "BAZ"] .reduce((env, key) => { - env[key] = JSON.stringify(process.env[key]); // $ SPURIOUS: Source[js/build-artifact-leak] + env[key] = JSON.stringify(process.env[key]); return env; }, {}); } - new webpack.DefinePlugin(getFilteredEnv4()); // $ SPURIOUS: Alert[js/build-artifact-leak] + new webpack.DefinePlugin(getFilteredEnv4()); })(); From 7eabed6594c195cbb10b416f8c0dd636e71fb2e6 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 18 Sep 2025 13:34:10 +0100 Subject: [PATCH 004/965] Split insecure cookies queries into 3 queries --- .../Security/CWE-1004/NonHttpOnlyCookie.ql | 19 ++++++++++ .../Security/CWE-1275/SameSiteNoneCookie.ql | 19 ++++++++++ .../ql/src/Security/CWE-614/InsecureCookie.ql | 37 ++----------------- 3 files changed, 41 insertions(+), 34 deletions(-) create mode 100644 python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql create mode 100644 python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql new file mode 100644 index 00000000000..fbd0ce3832c --- /dev/null +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -0,0 +1,19 @@ +/** + * @name Cookie missing `HttpOnly` attribute. + * @description Cookies without the `HttpOnly` attribute set can be accessed by JS scripts, making them more vulnerable to XSS attacks. + * @kind problem + * @problem.severity warning + * @security-severity 5.0 + * @precision high + * @id py/client-exposed-cookie + * @tags security + * external/cwe/cwe-1004 + */ + +import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.Concepts + +from Http::Server::CookieWrite cookie +where cookie.hasHttpOnlyFlag(false) +select cookie, "Cookie is added without the HttpOnly attribute properly set." diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql new file mode 100644 index 00000000000..67886a204b6 --- /dev/null +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -0,0 +1,19 @@ +/** + * @name Cookie with `SameSite` attribute set to `None`. + * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. + * @kind problem + * @problem.severity warning + * @security-severity 5.0 + * @precision high + * @id py/samesite-none-cookie + * @tags security + * external/cwe/cwe-1275 + */ + +import python +import semmle.python.dataflow.new.DataFlow +import semmle.python.Concepts + +from Http::Server::CookieWrite cookie +where cookie.hasSameSiteAttribute(any(Http::Server::CookieWrite::SameSiteNone v)) +select cookie, "Cookie is added with the SameSite attribute set to None." diff --git a/python/ql/src/Security/CWE-614/InsecureCookie.ql b/python/ql/src/Security/CWE-614/InsecureCookie.ql index 260bd303310..bf6c5ce44d0 100644 --- a/python/ql/src/Security/CWE-614/InsecureCookie.ql +++ b/python/ql/src/Security/CWE-614/InsecureCookie.ql @@ -9,43 +9,12 @@ * @id py/insecure-cookie * @tags security * external/cwe/cwe-614 - * external/cwe/cwe-1004 - * external/cwe/cwe-1275 */ import python import semmle.python.dataflow.new.DataFlow import semmle.python.Concepts -predicate hasProblem(Http::Server::CookieWrite cookie, string alert, int idx) { - cookie.hasSecureFlag(false) and - alert = "Secure" and - idx = 0 - or - cookie.hasHttpOnlyFlag(false) and - alert = "HttpOnly" and - idx = 1 - or - cookie.hasSameSiteAttribute(any(Http::Server::CookieWrite::SameSiteNone v)) and - alert = "SameSite" and - idx = 2 -} - -predicate hasAlert(Http::Server::CookieWrite cookie, string alert) { - exists(int numProblems | numProblems = strictcount(string p | hasProblem(cookie, p, _)) | - numProblems = 1 and - alert = any(string prob | hasProblem(cookie, prob, _)) + " attribute" - or - numProblems = 2 and - alert = - strictconcat(string prob, int idx | hasProblem(cookie, prob, idx) | prob, " and " order by idx) - + " attributes" - or - numProblems = 3 and - alert = "Secure, HttpOnly, and SameSite attributes" - ) -} - -from Http::Server::CookieWrite cookie, string alert -where hasAlert(cookie, alert) -select cookie, "Cookie is added without the " + alert + " properly set." +from Http::Server::CookieWrite cookie +where cookie.hasSecureFlag(false) +select cookie, "Cookie is added without the Secure attribute properly set." From 04316d306fc4bc47a0ac32faddafb11077d57074 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 19 Sep 2025 12:42:30 +0100 Subject: [PATCH 005/965] Update qhelp --- .../Security/CWE-1004/NotHttpOnlyCookie.qhelp | 26 +++++++++++++++++++ .../CWE-1004/examples/InsecureCookie.py | 21 +++++++++++++++ .../CWE-1275/SameSiteNoneCookie.qhelp | 26 +++++++++++++++++++ .../CWE-1275/examples/InsecureCookie.py | 21 +++++++++++++++ .../src/Security/CWE-614/InsecureCookie.qhelp | 15 +++++------ .../CWE-614/examples/InsecureCookie.py | 1 + 6 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp create mode 100644 python/ql/src/Security/CWE-1004/examples/InsecureCookie.py create mode 100644 python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp create mode 100644 python/ql/src/Security/CWE-1275/examples/InsecureCookie.py diff --git a/python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp b/python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp new file mode 100644 index 00000000000..01c472021ad --- /dev/null +++ b/python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp @@ -0,0 +1,26 @@ + + + + +

Cookies without the HttpOnly flag set are accessible to JavaScript running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

+
+ + +

Set httponly to True, or add ; HttpOnly; to the cookie's raw header value, to ensure that the cookie is not accessible via JavaScript.

+
+ + +

In the following examples, the cases marked GOOD show secure cookie attributes being set; whereas in the case marked BAD they are not set.

+ +
+ + +
  • PortSwigger: Cookie without HttpOnly flag set
  • +
  • MDN: Set-Cookie.
  • +
    + +
    diff --git a/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py b/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py new file mode 100644 index 00000000000..8ca12936a12 --- /dev/null +++ b/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py @@ -0,0 +1,21 @@ +from flask import Flask, request, make_response, Response + + +@app.route("/good1") +def good1(): + resp = make_response() + resp.set_cookie("name", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set + return resp + + +@app.route("/good2") +def good2(): + resp = make_response() + resp.headers['Set-Cookie'] = "name=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set + return resp + +@app.route("/bad1") +def bad1(): + resp = make_response() + resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. + return resp \ No newline at end of file diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp new file mode 100644 index 00000000000..e38ef00433a --- /dev/null +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp @@ -0,0 +1,26 @@ + + + + +

    Cookies with the SameSite attribute set to 'None' will be sent with cross-origin requests. +This can sometimes allow for Cross-Site Request Forgery (CSRF) attacks, in which a third-party site could perform actions on behalf of a user.

    +
    + + +

    Set the samesite to Lax or Strict, or add ; SameSite=Lax;, or +; SameSite=Strict; to the cookie's raw header value. The default value in most cases is Lax.

    +
    + + +

    In the following examples, the cases marked GOOD show secure cookie attributes being set; whereas in the case marked BAD they are not set.

    + +
    + + +
  • MDN: Set-Cookie.
  • +
  • OWASP: SameSite.
  • +
    + +
    diff --git a/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py b/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py new file mode 100644 index 00000000000..8ca12936a12 --- /dev/null +++ b/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py @@ -0,0 +1,21 @@ +from flask import Flask, request, make_response, Response + + +@app.route("/good1") +def good1(): + resp = make_response() + resp.set_cookie("name", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set + return resp + + +@app.route("/good2") +def good2(): + resp = make_response() + resp.headers['Set-Cookie'] = "name=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set + return resp + +@app.route("/bad1") +def bad1(): + resp = make_response() + resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. + return resp \ No newline at end of file diff --git a/python/ql/src/Security/CWE-614/InsecureCookie.qhelp b/python/ql/src/Security/CWE-614/InsecureCookie.qhelp index 5b36c9cc59d..914d9d0baa5 100644 --- a/python/ql/src/Security/CWE-614/InsecureCookie.qhelp +++ b/python/ql/src/Security/CWE-614/InsecureCookie.qhelp @@ -4,26 +4,25 @@ -

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS, which leaves them vulnerable to reading by a third party.

    -

    Cookies without the HttpOnly flag set are accessible to JavaScript running in the same origin. In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script.

    -

    Cookies with the SameSite attribute set to 'None' will be sent with cross-origin requests, which can be controlled by third-party JavaScript code and allow for Cross-Site Request Forgery (CSRF) attacks.

    +

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS. +This leaves them vulnerable to being read by a third party attacker. If a sensitive cookie such as a session +key is intercepted this way, it would allow the attacker to perform actions on a user's behalf.

    -

    Always set secure to True or add "; Secure;" to the cookie's raw value.

    -

    Always set httponly to True or add "; HttpOnly;" to the cookie's raw value.

    -

    Always set samesite to Lax or Strict, or add "; SameSite=Lax;", or -"; Samesite=Strict;" to the cookie's raw header value.

    +

    Always set secure to True, or add ; Secure; to the cookie's raw header value, to ensure SSL is used to transmit the cookie +with encryption.

    -

    In the following examples, the cases marked GOOD show secure cookie attributes being set; whereas in the cases marked BAD they are not set.

    +

    In the following examples, the cases marked GOOD show secure cookie attributes being set; whereas in the case marked BAD they are not set.

  • Detectify: Cookie lack Secure flag.
  • PortSwigger: TLS cookie without secure flag set.
  • +
  • MDN: Set-Cookie.
  • diff --git a/python/ql/src/Security/CWE-614/examples/InsecureCookie.py b/python/ql/src/Security/CWE-614/examples/InsecureCookie.py index 07cca6c3fce..8ca12936a12 100644 --- a/python/ql/src/Security/CWE-614/examples/InsecureCookie.py +++ b/python/ql/src/Security/CWE-614/examples/InsecureCookie.py @@ -15,6 +15,7 @@ def good2(): return resp @app.route("/bad1") +def bad1(): resp = make_response() resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. return resp \ No newline at end of file From 2e95c2b3c2f23cdad0a8d13fd60396053acb03a1 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 19 Sep 2025 14:41:02 +0100 Subject: [PATCH 006/965] Split test cases for insecure cookie queries --- .../Security/CWE-1275/SameSiteNoneCookie.ql | 2 +- .../NonHttpOnlyCookie.expected | 7 +++++++ .../NonHttpOnlyCookie.qlref | 2 ++ .../CWE-1004-NonHttpOnlyCookie/test.py | 18 ++++++++++++++++++ .../SameSiteNoneCookie.expected | 3 +++ .../SameSiteNoneCookie.qlref | 2 ++ .../CWE-1275-SameSiteNoneCookie/test.py | 18 ++++++++++++++++++ .../InsecureCookie.expected | 17 +++++++---------- .../InsecureCookie.qlref | 3 ++- .../Security/CWE-614-InsecureCookie/test.py | 18 ++++++++---------- 10 files changed, 68 insertions(+), 22 deletions(-) create mode 100644 python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected create mode 100644 python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.qlref create mode 100644 python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py create mode 100644 python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected create mode 100644 python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.qlref create mode 100644 python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql index 67886a204b6..58f0e358390 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -3,7 +3,7 @@ * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 3.5 * @precision high * @id py/samesite-none-cookie * @tags security diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected new file mode 100644 index 00000000000..fc1ceee53d5 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected @@ -0,0 +1,7 @@ +| test.py:8:5:8:37 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:9:5:9:50 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:11:5:11:56 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:12:5:12:53 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:14:5:14:69 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:16:5:16:67 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.qlref b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.qlref new file mode 100644 index 00000000000..7173918e360 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-1004/NonHttpOnlyCookie.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py new file mode 100644 index 00000000000..b036cc0e45a --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py @@ -0,0 +1,18 @@ +from flask import Flask, request, make_response + +app = Flask(__name__) + +@app.route("/test") +def test(): + resp = make_response() + resp.set_cookie("key1", "value1") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", secure=True) # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", httponly=True) + resp.set_cookie("key2", "value2", samesite="Strict") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", samesite="Lax") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", secure=True, samesite="Strict") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") + resp.set_cookie("key2", "value2", secure=True, samesite="None") # $Alert[py/client-exposed-cookie] + resp.set_cookie("key2", "value2", httponly=True, samesite="None") + resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected new file mode 100644 index 00000000000..71a578b328d --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected @@ -0,0 +1,3 @@ +| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | +| test.py:16:5:16:67 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | +| test.py:17:5:17:69 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.qlref b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.qlref new file mode 100644 index 00000000000..ad4e08218b3 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.qlref @@ -0,0 +1,2 @@ +query: Security/CWE-1275/SameSiteNoneCookie.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py new file mode 100644 index 00000000000..460594c1ab2 --- /dev/null +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py @@ -0,0 +1,18 @@ +from flask import Flask, request, make_response + +app = Flask(__name__) + +@app.route("/test") +def test(): + resp = make_response() + resp.set_cookie("key1", "value1") + resp.set_cookie("key2", "value2", secure=True) + resp.set_cookie("key2", "value2", httponly=True) + resp.set_cookie("key2", "value2", samesite="Strict") + resp.set_cookie("key2", "value2", samesite="Lax") + resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/samesite-none-cookie] + resp.set_cookie("key2", "value2", secure=True, samesite="Strict") + resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") + resp.set_cookie("key2", "value2", secure=True, samesite="None") # $Alert[py/samesite-none-cookie] + resp.set_cookie("key2", "value2", httponly=True, samesite="None") # $Alert[py/samesite-none-cookie] + resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected index 95cad5b954e..582a47589e6 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected @@ -1,10 +1,7 @@ -| test.py:10:5:10:37 | ControlFlowNode for Attribute() | Cookie is added without the Secure and HttpOnly attributes properly set. | -| test.py:11:5:11:50 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:12:5:12:52 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:13:5:13:56 | ControlFlowNode for Attribute() | Cookie is added without the Secure and HttpOnly attributes properly set. | -| test.py:14:5:14:53 | ControlFlowNode for Attribute() | Cookie is added without the Secure and HttpOnly attributes properly set. | -| test.py:15:5:15:54 | ControlFlowNode for Attribute() | Cookie is added without the Secure, HttpOnly, and SameSite attributes properly set. | -| test.py:16:5:16:69 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:17:5:17:71 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:18:5:18:67 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly and SameSite attributes properly set. | -| test.py:19:5:19:69 | ControlFlowNode for Attribute() | Cookie is added without the Secure and SameSite attributes properly set. | +| test.py:8:5:8:37 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:10:5:10:52 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:11:5:11:56 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:12:5:12:53 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:15:5:15:71 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:17:5:17:69 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.qlref b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.qlref index d5143f6eaae..f7020667719 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.qlref +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.qlref @@ -1 +1,2 @@ -Security/CWE-614/InsecureCookie.ql \ No newline at end of file +query: Security/CWE-614/InsecureCookie.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py index 1a108fe41d4..9a305f0499f 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py @@ -1,20 +1,18 @@ from flask import Flask, request, make_response -import lxml.etree -import markupsafe app = Flask(__name__) @app.route("/test") def test(): resp = make_response() - resp.set_cookie("key1", "value1") - resp.set_cookie("key2", "value2", secure=True) - resp.set_cookie("key2", "value2", httponly=True) - resp.set_cookie("key2", "value2", samesite="Strict") - resp.set_cookie("key2", "value2", samesite="Lax") - resp.set_cookie("key2", "value2", samesite="None") + resp.set_cookie("key1", "value1") # $Alert[py/insecure-cookie] + resp.set_cookie("key2", "value2", secure=True) + resp.set_cookie("key2", "value2", httponly=True) # $Alert[py/insecure-cookie] + resp.set_cookie("key2", "value2", samesite="Strict") # $Alert[py/insecure-cookie] + resp.set_cookie("key2", "value2", samesite="Lax") # $Alert[py/insecure-cookie] + resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/insecure-cookie] resp.set_cookie("key2", "value2", secure=True, samesite="Strict") - resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") + resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") # $Alert[py/insecure-cookie] resp.set_cookie("key2", "value2", secure=True, samesite="None") - resp.set_cookie("key2", "value2", httponly=True, samesite="None") + resp.set_cookie("key2", "value2", httponly=True, samesite="None") # $Alert[py/insecure-cookie] resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file From a9a258e7437f66923801869d7e1fac8678b97a48 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 19 Sep 2025 15:11:02 +0100 Subject: [PATCH 007/965] Add changenote --- python/ql/src/change-notes/2025-09-19-insecure-cookie.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/ql/src/change-notes/2025-09-19-insecure-cookie.md diff --git a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md new file mode 100644 index 00000000000..58415584a96 --- /dev/null +++ b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. \ No newline at end of file From 6eac6b725863fa4716ec38e171c21d1b6abf651e Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 19 Sep 2025 17:03:19 +0100 Subject: [PATCH 008/965] Rename qhelp file --- .../CWE-1004/{NotHttpOnlyCookie.qhelp => NonHttpOnlyCookie.qhelp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename python/ql/src/Security/CWE-1004/{NotHttpOnlyCookie.qhelp => NonHttpOnlyCookie.qhelp} (100%) diff --git a/python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp similarity index 100% rename from python/ql/src/Security/CWE-1004/NotHttpOnlyCookie.qhelp rename to python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp From d28e8004fdb5b58e48f5a18dcd657229e71e12d8 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 23 Sep 2025 10:08:08 +0100 Subject: [PATCH 009/965] Add sensitive data heuristic --- python/ql/lib/semmle/python/Concepts.qll | 13 +++++++++++++ .../python/dataflow/new/SensitiveDataSources.qll | 2 ++ python/ql/src/Security/CWE-614/InsecureCookie.ql | 3 ++- .../InsecureCookie.expected | 10 +++------- .../Security/CWE-614-InsecureCookie/test.py | 16 +++++----------- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/python/ql/lib/semmle/python/Concepts.qll b/python/ql/lib/semmle/python/Concepts.qll index 16524aaf1db..0a6a4376247 100644 --- a/python/ql/lib/semmle/python/Concepts.qll +++ b/python/ql/lib/semmle/python/Concepts.qll @@ -12,6 +12,7 @@ private import semmle.python.dataflow.new.TaintTracking private import semmle.python.Files private import semmle.python.Frameworks private import semmle.python.security.internal.EncryptionKeySizes +private import semmle.python.dataflow.new.SensitiveDataSources private import codeql.threatmodels.ThreatModels private import codeql.concepts.ConceptsShared @@ -1290,6 +1291,18 @@ module Http { */ DataFlow::Node getValueArg() { result = super.getValueArg() } + /** Holds if the name of this cookie indicates it may contain sensitive information. */ + predicate isSensitive() { + exists(DataFlow::Node name | + name = [this.getNameArg(), this.getHeaderArg()] and + ( + name instanceof SensitiveDataSource + or + name = sensitiveLookupStringConst(_) + ) + ) + } + /** * Holds if the `Secure` flag of the cookie is known to have a value of `b`. */ diff --git a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll index 0e017c4a229..1a32965d08d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/SensitiveDataSources.qll @@ -334,3 +334,5 @@ private module SensitiveDataModeling { } predicate sensitiveDataExtraStepForCalls = SensitiveDataModeling::extraStepForCalls/2; + +predicate sensitiveLookupStringConst = SensitiveDataModeling::sensitiveLookupStringConst/1; diff --git a/python/ql/src/Security/CWE-614/InsecureCookie.ql b/python/ql/src/Security/CWE-614/InsecureCookie.ql index bf6c5ce44d0..98e90c687ca 100644 --- a/python/ql/src/Security/CWE-614/InsecureCookie.ql +++ b/python/ql/src/Security/CWE-614/InsecureCookie.ql @@ -16,5 +16,6 @@ import semmle.python.dataflow.new.DataFlow import semmle.python.Concepts from Http::Server::CookieWrite cookie -where cookie.hasSecureFlag(false) +where cookie.hasSecureFlag(false) //and +//cookie.isSensitive() select cookie, "Cookie is added without the Secure attribute properly set." diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected index 582a47589e6..8d33578e533 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected @@ -1,7 +1,3 @@ -| test.py:8:5:8:37 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:10:5:10:52 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:11:5:11:56 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:12:5:12:53 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:15:5:15:71 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:17:5:17:69 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:8:5:8:40 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:10:5:10:57 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:11:5:11:60 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py index 9a305f0499f..214567275e5 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/test.py @@ -5,14 +5,8 @@ app = Flask(__name__) @app.route("/test") def test(): resp = make_response() - resp.set_cookie("key1", "value1") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", secure=True) - resp.set_cookie("key2", "value2", httponly=True) # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", samesite="Strict") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", samesite="Lax") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", secure=True, samesite="Strict") - resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", secure=True, samesite="None") - resp.set_cookie("key2", "value2", httponly=True, samesite="None") # $Alert[py/insecure-cookie] - resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file + resp.set_cookie("authKey", "value1") # $Alert[py/insecure-cookie] + resp.set_cookie("authKey", "value2", secure=True) + resp.set_cookie("sessionID", "value2", httponly=True) # $Alert[py/insecure-cookie] + resp.set_cookie("password", "value2", samesite="Strict") # $Alert[py/insecure-cookie] + resp.set_cookie("notSensitive", "value3") From 2cffb2160415eabeaa49fe1d061422d347175aca Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 23 Sep 2025 15:41:09 +0100 Subject: [PATCH 010/965] Update and fix tests --- python/ql/lib/semmle/python/Concepts.qll | 2 +- .../Security/CWE-1004/NonHttpOnlyCookie.ql | 4 +++- .../Security/CWE-1275/SameSiteNoneCookie.ql | 6 ++++-- .../ql/src/Security/CWE-614/InsecureCookie.ql | 5 +++-- .../NonHttpOnlyCookie.expected | 10 +++------ .../CWE-1004-NonHttpOnlyCookie/test.py | 16 +++++--------- .../SameSiteNoneCookie.expected | 5 ++--- .../CWE-1275-SameSiteNoneCookie/test.py | 21 ++++++++----------- 8 files changed, 30 insertions(+), 39 deletions(-) diff --git a/python/ql/lib/semmle/python/Concepts.qll b/python/ql/lib/semmle/python/Concepts.qll index 0a6a4376247..0ca8a4dbef0 100644 --- a/python/ql/lib/semmle/python/Concepts.qll +++ b/python/ql/lib/semmle/python/Concepts.qll @@ -1296,7 +1296,7 @@ module Http { exists(DataFlow::Node name | name = [this.getNameArg(), this.getHeaderArg()] and ( - name instanceof SensitiveDataSource + DataFlow::localFlow(any(SensitiveDataSource src), name) or name = sensitiveLookupStringConst(_) ) diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql index fbd0ce3832c..4c2c9c585e8 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -15,5 +15,7 @@ import semmle.python.dataflow.new.DataFlow import semmle.python.Concepts from Http::Server::CookieWrite cookie -where cookie.hasHttpOnlyFlag(false) +where + cookie.hasHttpOnlyFlag(false) and + cookie.isSensitive() select cookie, "Cookie is added without the HttpOnly attribute properly set." diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql index 58f0e358390..b33f815e715 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -3,7 +3,7 @@ * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. * @kind problem * @problem.severity warning - * @security-severity 3.5 + * @security-severity 4.0 * @precision high * @id py/samesite-none-cookie * @tags security @@ -15,5 +15,7 @@ import semmle.python.dataflow.new.DataFlow import semmle.python.Concepts from Http::Server::CookieWrite cookie -where cookie.hasSameSiteAttribute(any(Http::Server::CookieWrite::SameSiteNone v)) +where + cookie.hasSameSiteAttribute(any(Http::Server::CookieWrite::SameSiteNone v)) and + cookie.isSensitive() select cookie, "Cookie is added with the SameSite attribute set to None." diff --git a/python/ql/src/Security/CWE-614/InsecureCookie.ql b/python/ql/src/Security/CWE-614/InsecureCookie.ql index 98e90c687ca..0a13e2dc378 100644 --- a/python/ql/src/Security/CWE-614/InsecureCookie.ql +++ b/python/ql/src/Security/CWE-614/InsecureCookie.ql @@ -16,6 +16,7 @@ import semmle.python.dataflow.new.DataFlow import semmle.python.Concepts from Http::Server::CookieWrite cookie -where cookie.hasSecureFlag(false) //and -//cookie.isSensitive() +where + cookie.hasSecureFlag(false) and + cookie.isSensitive() select cookie, "Cookie is added without the Secure attribute properly set." diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected index fc1ceee53d5..1ba2ce8846d 100644 --- a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected @@ -1,7 +1,3 @@ -| test.py:8:5:8:37 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:9:5:9:50 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:11:5:11:56 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:12:5:12:53 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:14:5:14:69 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:16:5:16:67 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:8:5:8:38 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:9:5:9:51 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:11:5:11:57 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py index b036cc0e45a..6091e31ae32 100644 --- a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/test.py @@ -5,14 +5,8 @@ app = Flask(__name__) @app.route("/test") def test(): resp = make_response() - resp.set_cookie("key1", "value1") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", secure=True) # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", httponly=True) - resp.set_cookie("key2", "value2", samesite="Strict") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", samesite="Lax") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", secure=True, samesite="Strict") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") - resp.set_cookie("key2", "value2", secure=True, samesite="None") # $Alert[py/client-exposed-cookie] - resp.set_cookie("key2", "value2", httponly=True, samesite="None") - resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file + resp.set_cookie("oauth", "value1") # $Alert[py/client-exposed-cookie] + resp.set_cookie("oauth", "value2", secure=True) # $Alert[py/client-exposed-cookie] + resp.set_cookie("oauth", "value2", httponly=True) + resp.set_cookie("oauth", "value2", samesite="Strict") # $Alert[py/client-exposed-cookie] + resp.set_cookie("oauth", "value2", httponly=True, samesite="None") \ No newline at end of file diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected index 71a578b328d..63efaa86dfc 100644 --- a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected @@ -1,3 +1,2 @@ -| test.py:13:5:13:54 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | -| test.py:16:5:16:67 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | -| test.py:17:5:17:69 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | +| test.py:10:5:10:60 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | +| test.py:13:5:13:78 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py index 460594c1ab2..f1fd1fd4486 100644 --- a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/test.py @@ -3,16 +3,13 @@ from flask import Flask, request, make_response app = Flask(__name__) @app.route("/test") -def test(): +def test(oauth_cookie_name): resp = make_response() - resp.set_cookie("key1", "value1") - resp.set_cookie("key2", "value2", secure=True) - resp.set_cookie("key2", "value2", httponly=True) - resp.set_cookie("key2", "value2", samesite="Strict") - resp.set_cookie("key2", "value2", samesite="Lax") - resp.set_cookie("key2", "value2", samesite="None") # $Alert[py/samesite-none-cookie] - resp.set_cookie("key2", "value2", secure=True, samesite="Strict") - resp.set_cookie("key2", "value2", httponly=True, samesite="Strict") - resp.set_cookie("key2", "value2", secure=True, samesite="None") # $Alert[py/samesite-none-cookie] - resp.set_cookie("key2", "value2", httponly=True, samesite="None") # $Alert[py/samesite-none-cookie] - resp.set_cookie("key2", "value2", secure=True, httponly=True, samesite="Strict") \ No newline at end of file + resp.set_cookie("password", "value1") + resp.set_cookie("authKey", "value2", samesite="Lax") + resp.set_cookie("session_id", "value2", samesite="None") # $Alert[py/samesite-none-cookie] + resp.set_cookie("oauth", "value2", secure=True, samesite="Strict") + resp.set_cookie("oauth", "value2", httponly=True, samesite="Strict") + resp.set_cookie(oauth_cookie_name, "value2", secure=True, samesite="None") # $Alert[py/samesite-none-cookie] + resp.set_cookie("not_sensitive", "value2", samesite="None") + \ No newline at end of file From 1208195d8a3db74fd0d63d9547f32d9741b53e88 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 23 Sep 2025 15:46:53 +0100 Subject: [PATCH 011/965] Align alert messages across languages. --- python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql | 4 ++-- python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql | 4 ++-- python/ql/src/Security/CWE-614/InsecureCookie.ql | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql index 4c2c9c585e8..43f02cbcb57 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -1,5 +1,5 @@ /** - * @name Cookie missing `HttpOnly` attribute. + * @name Sensitive cookie missing `HttpOnly` attribute. * @description Cookies without the `HttpOnly` attribute set can be accessed by JS scripts, making them more vulnerable to XSS attacks. * @kind problem * @problem.severity warning @@ -18,4 +18,4 @@ from Http::Server::CookieWrite cookie where cookie.hasHttpOnlyFlag(false) and cookie.isSensitive() -select cookie, "Cookie is added without the HttpOnly attribute properly set." +select cookie, "Sensitive cookie is set without HttpOnly flag." diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql index b33f815e715..ebad2ddbba6 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -1,5 +1,5 @@ /** - * @name Cookie with `SameSite` attribute set to `None`. + * @name Sensitive cookie with `SameSite` attribute set to `None`. * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. * @kind problem * @problem.severity warning @@ -18,4 +18,4 @@ from Http::Server::CookieWrite cookie where cookie.hasSameSiteAttribute(any(Http::Server::CookieWrite::SameSiteNone v)) and cookie.isSensitive() -select cookie, "Cookie is added with the SameSite attribute set to None." +select cookie, "Sensitive cookie with SameSite set to 'None'." diff --git a/python/ql/src/Security/CWE-614/InsecureCookie.ql b/python/ql/src/Security/CWE-614/InsecureCookie.ql index 0a13e2dc378..603c573e17f 100644 --- a/python/ql/src/Security/CWE-614/InsecureCookie.ql +++ b/python/ql/src/Security/CWE-614/InsecureCookie.ql @@ -19,4 +19,4 @@ from Http::Server::CookieWrite cookie where cookie.hasSecureFlag(false) and cookie.isSensitive() -select cookie, "Cookie is added without the Secure attribute properly set." +select cookie, "Cookie is added to response without the 'secure' flag being set." From 55fd7c85c6ad5b529e45db8b09fde58149ca8fb8 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 23 Sep 2025 15:50:27 +0100 Subject: [PATCH 012/965] Update documentation --- python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp | 2 +- python/ql/src/Security/CWE-1004/examples/InsecureCookie.py | 6 +++--- python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp | 2 +- python/ql/src/Security/CWE-1275/examples/InsecureCookie.py | 6 +++--- python/ql/src/Security/CWE-614/examples/InsecureCookie.py | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp index 01c472021ad..7addd758fca 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.qhelp @@ -6,7 +6,7 @@

    Cookies without the HttpOnly flag set are accessible to JavaScript running in the same origin. In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. -If a cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

    +If a sensitive cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

    diff --git a/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py b/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py index 8ca12936a12..19d84d14537 100644 --- a/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py +++ b/python/ql/src/Security/CWE-1004/examples/InsecureCookie.py @@ -4,18 +4,18 @@ from flask import Flask, request, make_response, Response @app.route("/good1") def good1(): resp = make_response() - resp.set_cookie("name", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set + resp.set_cookie("sessionid", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set return resp @app.route("/good2") def good2(): resp = make_response() - resp.headers['Set-Cookie'] = "name=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set + resp.headers['Set-Cookie'] = "sessionid=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set return resp @app.route("/bad1") def bad1(): resp = make_response() - resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. + resp.set_cookie("sessionid", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. return resp \ No newline at end of file diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp index e38ef00433a..e0cc6eade1d 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.qhelp @@ -5,7 +5,7 @@

    Cookies with the SameSite attribute set to 'None' will be sent with cross-origin requests. -This can sometimes allow for Cross-Site Request Forgery (CSRF) attacks, in which a third-party site could perform actions on behalf of a user.

    +This can sometimes allow for Cross-Site Request Forgery (CSRF) attacks, in which a third-party site could perform actions on behalf of a user, if the cookie is used for authentication.

    diff --git a/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py b/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py index 8ca12936a12..19d84d14537 100644 --- a/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py +++ b/python/ql/src/Security/CWE-1275/examples/InsecureCookie.py @@ -4,18 +4,18 @@ from flask import Flask, request, make_response, Response @app.route("/good1") def good1(): resp = make_response() - resp.set_cookie("name", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set + resp.set_cookie("sessionid", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set return resp @app.route("/good2") def good2(): resp = make_response() - resp.headers['Set-Cookie'] = "name=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set + resp.headers['Set-Cookie'] = "sessionid=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set return resp @app.route("/bad1") def bad1(): resp = make_response() - resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. + resp.set_cookie("sessionid", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. return resp \ No newline at end of file diff --git a/python/ql/src/Security/CWE-614/examples/InsecureCookie.py b/python/ql/src/Security/CWE-614/examples/InsecureCookie.py index 8ca12936a12..19d84d14537 100644 --- a/python/ql/src/Security/CWE-614/examples/InsecureCookie.py +++ b/python/ql/src/Security/CWE-614/examples/InsecureCookie.py @@ -4,18 +4,18 @@ from flask import Flask, request, make_response, Response @app.route("/good1") def good1(): resp = make_response() - resp.set_cookie("name", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set + resp.set_cookie("sessionid", value="value", secure=True, httponly=True, samesite='Strict') # GOOD: Attributes are securely set return resp @app.route("/good2") def good2(): resp = make_response() - resp.headers['Set-Cookie'] = "name=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set + resp.headers['Set-Cookie'] = "sessionid=value; Secure; HttpOnly; SameSite=Strict" # GOOD: Attributes are securely set return resp @app.route("/bad1") def bad1(): resp = make_response() - resp.set_cookie("name", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. + resp.set_cookie("sessionid", value="value", samesite='None') # BAD: the SameSite attribute is set to 'None' and the 'Secure' and 'HttpOnly' attributes are set to False by default. return resp \ No newline at end of file From 85f886932d38a29c77122de29487f342bddd3a97 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 23 Sep 2025 15:51:31 +0100 Subject: [PATCH 013/965] Update changenote --- python/ql/src/change-notes/2025-09-19-insecure-cookie.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md index 58415584a96..51c6dc6ce30 100644 --- a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md +++ b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. \ No newline at end of file +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file From 654ed9ca12dd14b186fd01420a6af5f0e027e292 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 24 Sep 2025 10:58:53 +0100 Subject: [PATCH 014/965] Update integration tests --- .../query-suite/python-code-scanning.qls.expected | 2 ++ .../query-suite/python-security-and-quality.qls.expected | 2 ++ .../query-suite/python-security-extended.qls.expected | 2 ++ 3 files changed, 6 insertions(+) diff --git a/python/ql/integration-tests/query-suite/python-code-scanning.qls.expected b/python/ql/integration-tests/query-suite/python-code-scanning.qls.expected index 4db5af9c1a2..90885318d0d 100644 --- a/python/ql/integration-tests/query-suite/python-code-scanning.qls.expected +++ b/python/ql/integration-tests/query-suite/python-code-scanning.qls.expected @@ -13,8 +13,10 @@ ql/python/ql/src/Security/CWE-079/ReflectedXss.ql ql/python/ql/src/Security/CWE-089/SqlInjection.ql ql/python/ql/src/Security/CWE-090/LdapInjection.ql ql/python/ql/src/Security/CWE-094/CodeInjection.ql +ql/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql ql/python/ql/src/Security/CWE-113/HeaderInjection.ql ql/python/ql/src/Security/CWE-116/BadTagFilter.ql +ql/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql ql/python/ql/src/Security/CWE-209/StackTraceExposure.ql ql/python/ql/src/Security/CWE-215/FlaskDebug.ql ql/python/ql/src/Security/CWE-285/PamAuthorization.ql diff --git a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected index faa4204c3c7..11b75dd0ee3 100644 --- a/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected +++ b/python/ql/integration-tests/query-suite/python-security-and-quality.qls.expected @@ -106,9 +106,11 @@ ql/python/ql/src/Security/CWE-079/ReflectedXss.ql ql/python/ql/src/Security/CWE-089/SqlInjection.ql ql/python/ql/src/Security/CWE-090/LdapInjection.ql ql/python/ql/src/Security/CWE-094/CodeInjection.ql +ql/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql ql/python/ql/src/Security/CWE-113/HeaderInjection.ql ql/python/ql/src/Security/CWE-116/BadTagFilter.ql ql/python/ql/src/Security/CWE-117/LogInjection.ql +ql/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql ql/python/ql/src/Security/CWE-209/StackTraceExposure.ql ql/python/ql/src/Security/CWE-215/FlaskDebug.ql ql/python/ql/src/Security/CWE-285/PamAuthorization.ql diff --git a/python/ql/integration-tests/query-suite/python-security-extended.qls.expected b/python/ql/integration-tests/query-suite/python-security-extended.qls.expected index 1b255c6a0d0..d677e65c3cf 100644 --- a/python/ql/integration-tests/query-suite/python-security-extended.qls.expected +++ b/python/ql/integration-tests/query-suite/python-security-extended.qls.expected @@ -16,9 +16,11 @@ ql/python/ql/src/Security/CWE-079/ReflectedXss.ql ql/python/ql/src/Security/CWE-089/SqlInjection.ql ql/python/ql/src/Security/CWE-090/LdapInjection.ql ql/python/ql/src/Security/CWE-094/CodeInjection.ql +ql/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql ql/python/ql/src/Security/CWE-113/HeaderInjection.ql ql/python/ql/src/Security/CWE-116/BadTagFilter.ql ql/python/ql/src/Security/CWE-117/LogInjection.ql +ql/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql ql/python/ql/src/Security/CWE-209/StackTraceExposure.ql ql/python/ql/src/Security/CWE-215/FlaskDebug.ql ql/python/ql/src/Security/CWE-285/PamAuthorization.ql From 9f5bfeb7f411a880943ba11665f4984a23014ab7 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 24 Sep 2025 15:03:40 +0100 Subject: [PATCH 015/965] Update test output --- .../CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected | 6 +++--- .../CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected | 4 ++-- .../Security/CWE-614-InsecureCookie/InsecureCookie.expected | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected index 1ba2ce8846d..20c5912c6e1 100644 --- a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected @@ -1,3 +1,3 @@ -| test.py:8:5:8:38 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:9:5:9:51 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | -| test.py:11:5:11:57 | ControlFlowNode for Attribute() | Cookie is added without the HttpOnly attribute properly set. | +| test.py:8:5:8:38 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | +| test.py:9:5:9:51 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | +| test.py:11:5:11:57 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | diff --git a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected index 63efaa86dfc..7a8e83a732c 100644 --- a/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-1275-SameSiteNoneCookie/SameSiteNoneCookie.expected @@ -1,2 +1,2 @@ -| test.py:10:5:10:60 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | -| test.py:13:5:13:78 | ControlFlowNode for Attribute() | Cookie is added with the SameSite attribute set to None. | +| test.py:10:5:10:60 | ControlFlowNode for Attribute() | Sensitive cookie with SameSite set to 'None'. | +| test.py:13:5:13:78 | ControlFlowNode for Attribute() | Sensitive cookie with SameSite set to 'None'. | diff --git a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected index 8d33578e533..3b07bc6d9eb 100644 --- a/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-614-InsecureCookie/InsecureCookie.expected @@ -1,3 +1,3 @@ -| test.py:8:5:8:40 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:10:5:10:57 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | -| test.py:11:5:11:60 | ControlFlowNode for Attribute() | Cookie is added without the Secure attribute properly set. | +| test.py:8:5:8:40 | ControlFlowNode for Attribute() | Cookie is added to response without the 'secure' flag being set. | +| test.py:10:5:10:57 | ControlFlowNode for Attribute() | Cookie is added to response without the 'secure' flag being set. | +| test.py:11:5:11:60 | ControlFlowNode for Attribute() | Cookie is added to response without the 'secure' flag being set. | From cb7b1efe8182031430371f8844aecf69e927de90 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 25 Sep 2025 09:52:27 +0100 Subject: [PATCH 016/965] Update alert message --- python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql | 2 +- .../CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql index 43f02cbcb57..01056daaf78 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -18,4 +18,4 @@ from Http::Server::CookieWrite cookie where cookie.hasHttpOnlyFlag(false) and cookie.isSensitive() -select cookie, "Sensitive cookie is set without HttpOnly flag." +select cookie, "Sensitive server cookie is set without HttpOnly flag." diff --git a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected index 20c5912c6e1..7af8af8d870 100644 --- a/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected +++ b/python/ql/test/query-tests/Security/CWE-1004-NonHttpOnlyCookie/NonHttpOnlyCookie.expected @@ -1,3 +1,3 @@ -| test.py:8:5:8:38 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | -| test.py:9:5:9:51 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | -| test.py:11:5:11:57 | ControlFlowNode for Attribute() | Sensitive cookie is set without HttpOnly flag. | +| test.py:8:5:8:38 | ControlFlowNode for Attribute() | Sensitive server cookie is set without HttpOnly flag. | +| test.py:9:5:9:51 | ControlFlowNode for Attribute() | Sensitive server cookie is set without HttpOnly flag. | +| test.py:11:5:11:57 | ControlFlowNode for Attribute() | Sensitive server cookie is set without HttpOnly flag. | From 6b7d5d29024788a45b3424c09d649fb5ba909a58 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 29 Sep 2025 09:12:36 +0200 Subject: [PATCH 017/965] Rust: Add models for actix-web --- .../rust/frameworks/actix-web.model.yml | 13 + .../dataflow/sources/InlineFlow.expected | 885 +++++++++--------- .../dataflow/sources/TaintSources.expected | 32 + .../dataflow/sources/web_frameworks.rs | 24 +- 4 files changed, 519 insertions(+), 435 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml new file mode 100644 index 00000000000..8600336651a --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml @@ -0,0 +1,13 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["::to", "Argument[0].Parameter[0..7]", "remote", "manual"] + # Actix attributes such as `get` expand to this `to` call on the handler. + - ["::to", "Argument[0].Parameter[0..7]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::into_inner", "Argument[self]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index e0855a5d854..d97a8d8657b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -2,144 +2,147 @@ models | 1 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | | 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | | 3 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | -| 4 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 5 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 7 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 8 | Source: ::file_name; ReturnValue; file | -| 9 | Source: ::path; ReturnValue; file | -| 10 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 11 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 12 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 13 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 14 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 15 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 16 | Source: ::file_name; ReturnValue; file | -| 17 | Source: ::path; ReturnValue; file | -| 18 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 19 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 20 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 21 | Source: std::env::args; ReturnValue.Element; commandargs | -| 22 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 23 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 24 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 25 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 26 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 27 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 28 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 29 | Source: std::fs::read; ReturnValue; file | -| 30 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 31 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 32 | Source: std::fs::read_to_string; ReturnValue; file | -| 33 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 34 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 35 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 36 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 37 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 38 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 39 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 40 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 41 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 43 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 44 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 49 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 53 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 54 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 55 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 56 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 57 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 58 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 59 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 60 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 61 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 62 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 63 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 65 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 66 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 70 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 79 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 80 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 81 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 82 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 83 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 84 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | -| 85 | Summary: ::new; Argument[0]; ReturnValue; value | -| 86 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 87 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 88 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 89 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 90 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 91 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 92 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 93 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 94 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 95 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 98 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 100 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 101 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 102 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 103 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 104 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 105 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 106 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 107 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 108 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 109 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 110 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 111 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 112 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 113 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 114 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 115 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 116 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 117 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 118 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 119 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 120 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 121 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 122 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 123 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 124 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 125 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 126 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 4 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 5 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 6 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 7 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 8 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 9 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 10 | Source: ::file_name; ReturnValue; file | +| 11 | Source: ::path; ReturnValue; file | +| 12 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 13 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 14 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 15 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 16 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 17 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 18 | Source: ::file_name; ReturnValue; file | +| 19 | Source: ::path; ReturnValue; file | +| 20 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 21 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 22 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 23 | Source: std::env::args; ReturnValue.Element; commandargs | +| 24 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 25 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 26 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 27 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 28 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 29 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 30 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 31 | Source: std::fs::read; ReturnValue; file | +| 32 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 33 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 34 | Source: std::fs::read_to_string; ReturnValue; file | +| 35 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 36 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 37 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 38 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 39 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 40 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 41 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 42 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 44 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 45 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 50 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 54 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 55 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 56 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 57 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 58 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 59 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 60 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 61 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 62 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 64 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 66 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 71 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 81 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 82 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 83 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 84 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 85 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 86 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 87 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | +| 88 | Summary: ::new; Argument[0]; ReturnValue; value | +| 89 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 90 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 91 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 92 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 93 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 94 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 95 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 96 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 97 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 98 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 99 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 100 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 101 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 102 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 103 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 104 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 105 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 106 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 107 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 108 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 109 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 110 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 111 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 112 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 113 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 114 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 115 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 116 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 117 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 118 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 119 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 120 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 121 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 122 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 123 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 124 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 125 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 126 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 127 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 128 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 129 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges -| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:26 | -| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:27 | +| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:28 | +| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:29 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:86 | +| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:28 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:89 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:27 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:82 | +| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:29 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:85 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | -| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:41 | +| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:23 | +| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:43 | | test.rs:29:29:29:54 | ... .collect() [element] | test.rs:29:9:29:12 | args [element] | provenance | | | test.rs:30:9:30:15 | my_path [&ref] | test.rs:36:10:36:16 | my_path | provenance | | | test.rs:30:19:30:26 | &... [&ref] | test.rs:30:9:30:15 | my_path [&ref] | provenance | | @@ -150,89 +153,89 @@ edges | test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:82 | +| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:23 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:44 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:85 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:22 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:82 | +| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:44 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:85 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:82 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:90 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:87 | +| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:23 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:44 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:85 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:93 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:90 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | -| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:21 | +| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:23 | | test.rs:42:16:42:31 | ...::args(...) [element] | test.rs:42:9:42:11 | arg | provenance | | | test.rs:46:9:46:11 | arg | test.rs:47:14:47:16 | arg | provenance | | -| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:22 | +| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:86 | +| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:25 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:89 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:24 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:86 | +| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:26 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:89 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:25 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:81 | +| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:27 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:84 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | -| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:97 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:100 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:97 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:87 | +| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:90 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:100 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:90 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:98 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:87 | +| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:90 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:101 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:90 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:96 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:87 | +| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:90 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:99 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:90 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | -| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | +| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:95 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:98 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | | test.rs:77:9:77:22 | remote_string6 | test.rs:78:10:78:23 | remote_string6 | provenance | | -| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | +| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:93 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:96 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:97 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:97 | +| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:82 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:85 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -243,129 +246,129 @@ edges | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | test.rs:114:24:114:57 | await ... [Ok] | provenance | | | test.rs:114:24:114:57 | await ... [Ok] | test.rs:114:24:114:58 | TryExpr | provenance | | | test.rs:114:24:114:58 | TryExpr | test.rs:114:13:114:20 | response | provenance | | -| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | | test.rs:115:15:115:22 | response | test.rs:115:14:115:22 | &response | provenance | | | test.rs:121:9:121:20 | mut response | test.rs:122:11:122:18 | response | provenance | | | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | test.rs:121:24:121:57 | await ... [Ok] | provenance | | | test.rs:121:24:121:57 | await ... [Ok] | test.rs:121:24:121:58 | TryExpr | provenance | | | test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | -| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:110 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:109 | +| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:113 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:112 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:113 | +| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:116 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:118 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:117 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:116 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:117 | +| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:119 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:120 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:112 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:111 | +| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:114 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:57 | +| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:106 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:109 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:108 | +| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:111 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:107 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:110 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:108 | +| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:111 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:54 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:56 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:108 | +| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:111 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:57 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:108 | +| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:111 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:105 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:105 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:56 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:108 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:108 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:108 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:82 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:87 | +| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:111 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:85 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:90 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:87 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:90 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:53 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:108 | +| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:111 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:76 | -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:77 | -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:79 | +| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:78 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:74 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:73 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:75 | -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:80 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:76 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:75 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:77 | +| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | @@ -383,150 +386,150 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:71 | -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:65 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:67 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:121 | +| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:124 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:120 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:123 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:121 | +| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:124 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:67 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:69 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:121 | +| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:124 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:68 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:121 | +| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:124 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:123 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:123 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:69 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:126 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:126 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:121 | +| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:124 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:82 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:85 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:66 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:68 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:121 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:122 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:122 | +| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:124 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:125 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:125 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:82 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:85 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | | test.rs:396:32:396:54 | await ... [Ok, Some] | test.rs:396:32:396:55 | TryExpr [Some] | provenance | | | test.rs:396:32:396:55 | TryExpr [Some] | test.rs:396:19:396:28 | Some(...) [Some] | provenance | | | test.rs:408:13:408:18 | buffer | test.rs:409:14:409:19 | buffer | provenance | | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:28 | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:28 | -| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:29 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:30 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:30 | +| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:31 | | test.rs:408:31:408:55 | ...::read(...) [Ok] | test.rs:408:31:408:56 | TryExpr | provenance | | | test.rs:408:31:408:56 | TryExpr | test.rs:408:13:408:18 | buffer | provenance | | | test.rs:413:13:413:18 | buffer | test.rs:414:14:414:19 | buffer | provenance | | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:28 | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:28 | -| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:29 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:30 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:30 | +| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:31 | | test.rs:413:31:413:50 | ...::read(...) [Ok] | test.rs:413:31:413:51 | TryExpr | provenance | | | test.rs:413:31:413:51 | TryExpr | test.rs:413:13:413:18 | buffer | provenance | | | test.rs:418:13:418:18 | buffer | test.rs:419:14:419:19 | buffer | provenance | | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:31 | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:32 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:33 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:33 | +| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:34 | | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | test.rs:418:22:418:52 | TryExpr | provenance | | | test.rs:418:22:418:52 | TryExpr | test.rs:418:13:418:18 | buffer | provenance | | | test.rs:425:13:425:16 | path | test.rs:426:14:426:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:40 | +| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | | test.rs:425:13:425:16 | path | test.rs:427:14:427:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:40 | +| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | | test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | | test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:9 MaD:9 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:40 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:40 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:119 | +| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:11 MaD:11 | +| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | +| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:122 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:40 | +| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | | test.rs:439:25:439:37 | e.file_name() | test.rs:439:13:439:21 | file_name | provenance | | -| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:8 MaD:8 | -| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:40 | +| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:10 MaD:10 | +| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | | test.rs:461:13:461:18 | target | test.rs:462:14:462:19 | target | provenance | | -| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:30 | +| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:32 | | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | test.rs:461:22:461:50 | TryExpr | provenance | | | test.rs:461:22:461:50 | TryExpr | test.rs:461:13:461:18 | target | provenance | | | test.rs:470:13:470:18 | buffer | test.rs:471:14:471:19 | buffer | provenance | | -| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:34 | +| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:36 | | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | test.rs:470:31:470:63 | await ... [Ok] | provenance | | | test.rs:470:31:470:63 | await ... [Ok] | test.rs:470:31:470:64 | TryExpr | provenance | | | test.rs:470:31:470:64 | TryExpr | test.rs:470:13:470:18 | buffer | provenance | | | test.rs:475:13:475:18 | buffer | test.rs:476:14:476:19 | buffer | provenance | | -| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:34 | +| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:36 | | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | test.rs:475:31:475:63 | await ... [Ok] | provenance | | | test.rs:475:31:475:63 | await ... [Ok] | test.rs:475:31:475:64 | TryExpr | provenance | | | test.rs:475:31:475:64 | TryExpr | test.rs:475:13:475:18 | buffer | provenance | | | test.rs:480:13:480:18 | buffer | test.rs:481:14:481:19 | buffer | provenance | | -| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:36 | +| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:38 | | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | test.rs:480:22:480:64 | await ... [Ok] | provenance | | | test.rs:480:22:480:64 | await ... [Ok] | test.rs:480:22:480:65 | TryExpr | provenance | | | test.rs:480:22:480:65 | TryExpr | test.rs:480:13:480:18 | buffer | provenance | | | test.rs:486:13:486:16 | path | test.rs:488:14:488:17 | path | provenance | | | test.rs:486:20:486:31 | entry.path() | test.rs:486:13:486:16 | path | provenance | | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:17 MaD:17 | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:17 MaD:17 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:19 MaD:19 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:19 MaD:19 | | test.rs:487:13:487:21 | file_name | test.rs:489:14:489:22 | file_name | provenance | | | test.rs:487:25:487:41 | entry.file_name() | test.rs:487:13:487:21 | file_name | provenance | | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:16 MaD:16 | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:16 MaD:16 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:18 MaD:18 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:18 MaD:18 | | test.rs:493:13:493:18 | target | test.rs:494:14:494:19 | target | provenance | | -| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:35 | +| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:37 | | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:99 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:102 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:101 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:104 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:103 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:57 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:103 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:102 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:105 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:107 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:106 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | +| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:12 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | | test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | @@ -545,69 +548,69 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:87 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:103 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:102 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:90 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | -| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:87 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:103 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:102 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:90 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | -| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:99 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:87 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:103 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:102 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:90 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | -| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:59 | -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:61 | +| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | | test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | -| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:12 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:58 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:64 | -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:66 | +| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:76 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:77 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:78 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:74 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:73 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:75 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:71 | -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:14 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:79 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:80 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:76 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:75 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:77 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:16 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | | test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | @@ -642,45 +645,45 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | -| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:17 | | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | test.rs:629:35:629:40 | [post] buffer | provenance | | | test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | | test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:4 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:41 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:6 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:41 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:52 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | -| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:5 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:118 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:121 | +| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:14 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | @@ -688,21 +691,21 @@ edges | test.rs:695:34:695:39 | [post] buffer | test.rs:699:14:699:22 | buffer[0] | provenance | | | test.rs:698:15:698:20 | buffer | test.rs:698:14:698:20 | &buffer | provenance | | | test.rs:707:13:707:22 | mut stream | test.rs:715:58:715:63 | stream | provenance | | -| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:15 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:54 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:64 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:56 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:66 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:108 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:111 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:124 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:70 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:125 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:126 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:18 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:127 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:128 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:129 | +| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | | test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | @@ -722,7 +725,7 @@ edges | test.rs:817:27:817:32 | buffer | test.rs:817:26:817:32 | &buffer | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:20:11:20:13 | tcp | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:26:53:26:55 | tcp | provenance | | -| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:6 | +| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:8 | | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | test_futures_io.rs:19:15:19:43 | await ... [Ok] | provenance | | | test_futures_io.rs:19:15:19:43 | await ... [Ok] | test_futures_io.rs:19:15:19:44 | TryExpr | provenance | | | test_futures_io.rs:19:15:19:44 | TryExpr | test_futures_io.rs:19:9:19:11 | tcp | provenance | | @@ -731,15 +734,15 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:91 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:94 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | @@ -747,60 +750,60 @@ edges | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | test_futures_io.rs:32:13:32:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:85 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:86 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:88 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [Pin, &ref] | provenance | MaD:87 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [Pin, &ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:44 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:44 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:47 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:50 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:45 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:48 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:54 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:92 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:95 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:59:13:59:22 | mut pinned [Pin, &ref] | test_futures_io.rs:60:15:60:20 | pinned [Pin, &ref] | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:59:13:59:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:85 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:86 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:88 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [Pin, &ref] | provenance | MaD:87 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -813,11 +816,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:86 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:88 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -835,35 +838,35 @@ edges | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:90:13:90:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:85 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:86 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:88 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [Pin, &ref] | provenance | MaD:87 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [Pin, &ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:113:13:113:22 | mut pinned [Pin, &ref] | test_futures_io.rs:114:15:114:20 | pinned [Pin, &ref] | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | test_futures_io.rs:113:13:113:22 | mut pinned [Pin, &ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:85 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | provenance | MaD:84 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:86 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:88 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [Pin, &ref] | provenance | MaD:87 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -879,42 +882,60 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:47 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:45 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:92 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:92 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:88 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:91 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:91 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:88 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:22 | a.as_str() | provenance | MaD:92 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:92 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:24 | a.as_bytes() | provenance | MaD:91 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:91 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:81 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:92 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:91 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | +| web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:83 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:92 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:82 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:91 | +| web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:32 | path.into_inner() | provenance | MaD:81 | +| web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | +| web_frameworks.rs:131:17:131:32 | path.into_inner() | web_frameworks.rs:131:13:131:13 | a | provenance | | +| web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | @@ -1719,6 +1740,20 @@ nodes | web_frameworks.rs:68:15:68:15 | a | semmle.label | a | | web_frameworks.rs:70:14:70:14 | a | semmle.label | a | | web_frameworks.rs:70:14:70:14 | a | semmle.label | a | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| web_frameworks.rs:100:13:100:13 | a | semmle.label | a | +| web_frameworks.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | +| web_frameworks.rs:101:14:101:14 | a | semmle.label | a | +| web_frameworks.rs:101:14:101:23 | a.as_str() | semmle.label | a.as_str() | +| web_frameworks.rs:102:14:102:14 | a | semmle.label | a | +| web_frameworks.rs:102:14:102:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| web_frameworks.rs:103:14:103:14 | a | semmle.label | a | +| web_frameworks.rs:127:5:127:20 | to | semmle.label | to | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| web_frameworks.rs:131:13:131:13 | a | semmle.label | a | +| web_frameworks.rs:131:17:131:32 | path.into_inner() | semmle.label | path.into_inner() | +| web_frameworks.rs:132:14:132:14 | a | semmle.label | a | +| web_frameworks.rs:139:41:139:42 | to | semmle.label | to | | web_frameworks.rs:242:33:242:35 | map | semmle.label | map | | web_frameworks.rs:242:33:242:35 | map | semmle.label | map | | web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | @@ -1882,6 +1917,10 @@ testFailures | web_frameworks.rs:15:14:15:14 | a | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | $@ | web_frameworks.rs:11:31:11:31 | a | a | | web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a | | web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a | +| web_frameworks.rs:101:14:101:23 | a.as_str() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:101:14:101:23 | a.as_str() | $@ | web_frameworks.rs:139:41:139:42 | to | to | +| web_frameworks.rs:102:14:102:25 | a.as_bytes() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:102:14:102:25 | a.as_bytes() | $@ | web_frameworks.rs:139:41:139:42 | to | to | +| web_frameworks.rs:103:14:103:14 | a | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:103:14:103:14 | a | $@ | web_frameworks.rs:139:41:139:42 | to | to | +| web_frameworks.rs:132:14:132:14 | a | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:132:14:132:14 | a | $@ | web_frameworks.rs:127:5:127:20 | to | to | | web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | | web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | | web_frameworks.rs:252:22:252:22 | a | web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:252:22:252:22 | a | $@ | web_frameworks.rs:250:46:250:49 | then | then | diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 96b6426baf4..c54f7e1696b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -100,6 +100,38 @@ | web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs index 3b901bd823f..e5ce0f313ae 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -95,18 +95,18 @@ mod actix_test { use actix_web::{get, web, App}; async fn my_actix_handler_1( - path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + path: web::Path, ) -> String { let a = path.into_inner(); - sink(a.as_str()); // $ MISSING: hasTaintFlow - sink(a.as_bytes()); // $ MISSING: hasTaintFlow - sink(a); // $ MISSING: hasTaintFlow + sink(a.as_str()); // $ hasTaintFlow=my_actix_handler_1 + sink(a.as_bytes()); // $ hasTaintFlow=my_actix_handler_1 + sink(a); // $ hasTaintFlow=my_actix_handler_1 "".to_string() } async fn my_actix_handler_2( - path: web::Path<(String, String)>, // $ MISSING: Alert[rust/summary/taint-sources] + path: web::Path<(String, String)>, ) -> String { let (a, b) = path.into_inner(); @@ -117,28 +117,28 @@ mod actix_test { } async fn my_actix_handler_3( - web::Query(a): web::Query, // $ MISSING: Alert[rust/summary/taint-sources] + web::Query(a): web::Query, ) -> String { sink(a); // $ MISSING: hasTaintFlow "".to_string() } - #[get("/4/{a}")] + #[get("/4/{a}")] // $ Alert[rust/summary/taint-sources] async fn my_actix_handler_4( - path: web::Path, // $ MISSING: Alert[rust/summary/taint-sources] + path: web::Path, ) -> String { let a = path.into_inner(); - sink(a); // $ MISSING: hasTaintFlow + sink(a); // $ hasTaintFlow=my_actix_handler_4 "".to_string() } async fn test_actix() { let app = App::new() - .route("/1/{a}", web::get().to(my_actix_handler_1)) - .route("/2/{a}/{b}", web::get().to(my_actix_handler_2)) - .route("/3/{a}", web::get().to(my_actix_handler_3)) + .route("/1/{a}", web::get().to(my_actix_handler_1)) // $ Alert[rust/summary/taint-sources] + .route("/2/{a}/{b}", web::get().to(my_actix_handler_2)) // $ Alert[rust/summary/taint-sources] + .route("/3/{a}", web::get().to(my_actix_handler_3)) // $ Alert[rust/summary/taint-sources] .service(my_actix_handler_4); // ... From 84c6a3a3760f726298330980525b462ec383ba9e Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 29 Sep 2025 13:03:10 +0200 Subject: [PATCH 018/965] Rust: Add change note for actix-web models --- rust/ql/lib/change-notes/2025-09-29-actix-web-model.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md new file mode 100644 index 00000000000..7bf9ce8a7d5 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added basic models for the `actix-web` web framework. \ No newline at end of file From 18c5cb10d98479b862f9cd0711abeb878214d703 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Mon, 29 Sep 2025 18:42:11 +0100 Subject: [PATCH 019/965] Ruby: Update CSRF protection notes in documentation Autofix is confused about how the `protect_from_forgery` method works in Rails >= 5: GPT-5 says: > In modern Rails versions (>=5, including 6 and 7 which this gem permits), ActionController::Base already enables CSRF protection by default with the `:exception` strategy; an explicit call to `protect_from_forgery` without options does not weaken security. This is false: manual testing confirms that it actually does downgrade from `:exception` to `:null-session` behaviour when a manual call is made. I can't find any authoritative source showing this gotcha, so I can see how the AI is confused and how humans might also struggle to verify the truth. --- .../queries/security/cwe-352/CSRFProtectionDisabled.qhelp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp index 7656a676d64..138ff588ac5 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp @@ -58,6 +58,11 @@ for example if parts of the session are memoized. Calling protect_from_forgery with: :exception can help to avoid this by raising an exception on an invalid CSRF token instead. + Note this remains true even in Rails version 5 and later: these versions + automatically run protect_from_forgery with: :exception + by default, but manually calling protect_from_forgery with + no with argument will still downgrade protection to null the + session rather than raise an exception.

    From f1239352cefe57081023951bda21a898fb495321 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Mon, 29 Sep 2025 18:43:59 +0100 Subject: [PATCH 020/965] Note issue in related query --- .../queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp index 9b8944b1d65..5af4be5c7ec 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp @@ -42,6 +42,12 @@ vulnerability - for example if parts of the session are memoized. Calling protect_from_forgery with: :exception can help to avoid this by raising an exception on an invalid CSRF token instead. + + Note that Rails version 5 and later + automatically run protect_from_forgery with: :exception + by default, but manually calling protect_from_forgery with + no with argument will downgrade protection to null the + session rather than raise an exception.

    From ff4b97bf2d329001dae6e6572008bcd46b68f369 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Tue, 30 Sep 2025 13:08:03 +0100 Subject: [PATCH 021/965] Reword --- .../src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp | 4 ++-- .../queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp index 138ff588ac5..f14f04de57f 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionDisabled.qhelp @@ -61,8 +61,8 @@ Note this remains true even in Rails version 5 and later: these versions automatically run protect_from_forgery with: :exception by default, but manually calling protect_from_forgery with - no with argument will still downgrade protection to null the - session rather than raise an exception. + no with argument will still downgrade protection to provide an + empty session rather than raise an exception.

    diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp index 5af4be5c7ec..5cbbbd1eea1 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp @@ -43,10 +43,10 @@ protect_from_forgery with: :exception can help to avoid this by raising an exception on an invalid CSRF token instead. - Note that Rails version 5 and later + Note that Rails versions 5 and later automatically run protect_from_forgery with: :exception by default, but manually calling protect_from_forgery with - no with argument will downgrade protection to null the + no with argument will downgrade protection to provide an empty session rather than raise an exception.

    From c5cf0ffa75ba55201346f786fe6db8cb4f610223 Mon Sep 17 00:00:00 2001 From: Mark C Date: Wed, 1 Oct 2025 11:55:51 +0100 Subject: [PATCH 022/965] added java cryptographic check queries --- .../Analysis/InsecureNonceGeneration.ql | 23 ++++++++++++++ .../quantum/Analysis/NonAESGCMCipher.ql | 25 ++++++++++++++++ .../quantum/Analysis/NonceReuse.ql | 18 +++++++++++ .../quantum/Analysis/WeakAsymmetric.ql | 25 ++++++++++++++++ .../quantum/Analysis/WeakBlockModes.ql | 30 +++++++++++++++++++ .../quantum/Analysis/WeakHashing.ql | 20 +++++++++++++ .../quantum/Analysis/WeakKDFIterationCount.ql | 21 +++++++++++++ .../quantum/Analysis/WeakKDFKeySize.ql | 21 +++++++++++++ .../experimental/quantum/Analysis/WeakRSA.ql | 25 ++++++++++++++++ .../quantum/Analysis/WeakSymmetricCiphers.ql | 20 +++++++++++++ 10 files changed, 228 insertions(+) create mode 100644 java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/NonceReuse.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakHashing.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakRSA.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql b/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql new file mode 100644 index 00000000000..792287445f0 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql @@ -0,0 +1,23 @@ +/** + * @name Insecure nonce at a cipher operation + * @id java/quantum/insecure-nonce + * @description A nonce is generated from a source that is not secure. This can lead to + * vulnerabilities such as replay attacks or key recovery. + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +predicate isInsecureNonceSource(Crypto::NonceArtifactNode n, Crypto::NodeBase src) { + src = n.getSourceNode() and + not src.asElement() instanceof SecureRandomnessInstance +} + +from Crypto::KeyOperationNode op, Crypto::NodeBase src +where isInsecureNonceSource(op.getANonce(), src) +select op, "Operation uses insecure nonce source $@", src, src.toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql new file mode 100644 index 00000000000..65b00f94d73 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql @@ -0,0 +1,25 @@ +/** + * @name Cipher not AES-GCM mode + * @id java/quantum/non-aes-gcm + * @description An AES cipher is in use without GCM + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +class NonAESGCMAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { + NonAESGCMAlgorithmNode() { + this.getAlgorithmType() = Crypto::KeyOpAlg::TSymmetricCipher(Crypto::KeyOpAlg::AES()) and + this.getModeOfOperation().getModeType() != Crypto::KeyOpAlg::GCM() + } +} + +from Crypto::KeyOperationNode op, Crypto::KeyOperationOutputNode codeNode +where op.getAKnownAlgorithm() instanceof NonAESGCMAlgorithmNode and + codeNode = op.getAnOutputArtifact() +select op, "Non-AES-GCM instance." \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql b/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql new file mode 100644 index 00000000000..7f92123fe2e --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql @@ -0,0 +1,18 @@ +/** + * @name Reuse of cryptographic nonce + * @description Reuse of nonce in cryptographic operations can lead to vulnerabilities. + * @id java/quantum/reused-nonce + * @kind problem + * @problem.severity error + * @security.severity low + * @precision medium + * @tags quantum + * experimental + */ + +import java +import ArtifactReuse + +from Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2 +where isArtifactReuse(nonce1, nonce2) +select nonce1, "Reuse with nonce $@", nonce2, nonce2.toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql new file mode 100644 index 00000000000..531b7e01d60 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql @@ -0,0 +1,25 @@ +/** + * @name Weak Asymetric Key Size + * @id java/quantum/weak-asymmetric-key-size + * @description An asymmetric cipher with a short key size is in use + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::KeyOperationAlgorithmNode op, DataFlow::Node configSrc, int keySize, string algName +where + keySize = op.getKeySizeFixed() and + keySize < 2048 and + algName = op.getAlgorithmName() and + // Can't be an elliptic curve + not Crypto::isEllipticCurveAlgorithmName(algName) +select op, + "Use of weak asymmetric key size (int bits)" + keySize.toString() + " for algorithm " + + algName.toString() + " at config source $@", configSrc, configSrc.toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql new file mode 100644 index 00000000000..dec3296a38b --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql @@ -0,0 +1,30 @@ +/** + * @name Weak AES Block mode + * @id java/quantum/weak-block-modes + * @description An AES cipher is in use with an insecure block mode + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +class WeakAESBlockModeAlgNode extends Crypto::KeyOperationAlgorithmNode { + WeakAESBlockModeAlgNode() { + this.getAlgorithmType() = Crypto::KeyOpAlg::TSymmetricCipher(Crypto::KeyOpAlg::AES()) and + (this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::ECB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CFB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::OFB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CTR() + ) + } +} + +from Crypto::KeyOperationNode op, Crypto::KeyOperationOutputNode codeNode +where op.getAKnownAlgorithm() instanceof WeakAESBlockModeAlgNode and + codeNode = op.getAnOutputArtifact() +select op, "Weak AES block mode instance." diff --git a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql new file mode 100644 index 00000000000..8a725ec6a5e --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql @@ -0,0 +1,20 @@ +/** + * @name Weak hashes + * @description Finds uses of cryptographic hashing algorithms that are unapproved or otherwise weak. + * @id java/quantum/slices/weak-hashes + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags external/cwe/cwe-327 + */ + +import java +import experimental.quantum.Language + +from Crypto::HashAlgorithmNode alg, string name, string msg +where + name = alg.getAlgorithmName() and + not name in ["SHA256", "SHA384", "SHA512", "SHA-256", "SHA-384", "SHA-512"] and + msg = "Use of unapproved hash algorithm or API " + name + "." +select alg, msg diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql new file mode 100644 index 00000000000..c902b286b19 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql @@ -0,0 +1,21 @@ +/** + * @name Weak known key derivation function iteration count + * @description Detects key derivation operations with a known weak iteration count. + * @id java/quantum/weak-kdf-iteration-count + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::KeyDerivationOperationNode op, Literal l +where + op.getIterationCount().asElement() = l and + l.getValue().toInt() < 100000 +select op, "Key derivation operation configures iteration count below 100k: $@", l, + l.getValue().toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql new file mode 100644 index 00000000000..0161fc1186d --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql @@ -0,0 +1,21 @@ +/** + * @name Weak known key derivation function output length + * @description Detects key derivation operations with a known weak output length + * @id java/quantum/weak-kdf-iteration-count + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::KeyDerivationOperationNode op, Literal l +where + op.getOutputKeySize().asElement() = l and + l.getValue().toInt() < 256 +select op, "Key derivation operation configures output key length below 256: $@", l, + l.getValue().toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql new file mode 100644 index 00000000000..3bc15529363 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql @@ -0,0 +1,25 @@ +/** + * @name Cipher is Weak RSA Implementation + * @id java/quantum/weak-rsa + * @description RSA with a key length <2048 found + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +class WeakRSAAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { + WeakRSAAlgorithmNode() { + this.getAlgorithmType() = Crypto::KeyOpAlg::TAsymmetricCipher(Crypto::KeyOpAlg::RSA()) and + this.getKeySizeFixed() < 2048 + } +} + +from Crypto::KeyOperationNode op, string message +where op.getAKnownAlgorithm() instanceof WeakRSAAlgorithmNode and + message = "Weak RSA instance found with key length <2048" +select op, message diff --git a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql new file mode 100644 index 00000000000..3ab18c85e54 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql @@ -0,0 +1,20 @@ +/** + * @name Weak symmetric ciphers + * @description Finds uses of cryptographic symmetric cipher algorithms that are unapproved or otherwise weak. + * @id java/quantum/slices/weak-ciphers + * @kind problem + * @problem.severity error + * @security.severity low + * @precision high + * @tags external/cwe/cwe-327 + */ + +import java +import experimental.quantum.Language + +from Crypto::KeyOperationAlgorithmNode alg, string name, string msg +where + name = alg.getAlgorithmName() and + name in ["DES", "TripleDES", "DoubleDES", "RC2", "RC4", "IDEA", "Blowfish"] and + msg = "Use of unapproved symmetric cipher algorithm or API: " + name + "." +select alg, msg \ No newline at end of file From f38ab45e94fc2ed969876f490afaa04909a9ad6b Mon Sep 17 00:00:00 2001 From: Mark C Date: Wed, 1 Oct 2025 17:49:45 +0100 Subject: [PATCH 023/965] removed all @security.severity ratings to keep the main impartial --- .../src/experimental/quantum/Analysis/InsecureNonceGeneration.ql | 1 - java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql | 1 - java/ql/src/experimental/quantum/Analysis/NonceReuse.ql | 1 - .../experimental/quantum/Analysis/UnknownKDFIterationCount.ql | 1 - java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql | 1 - java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql | 1 - java/ql/src/experimental/quantum/Analysis/WeakHashing.ql | 1 - .../src/experimental/quantum/Analysis/WeakKDFIterationCount.ql | 1 - java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql | 1 - java/ql/src/experimental/quantum/Analysis/WeakRSA.ql | 1 - .../ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql | 1 - 11 files changed, 11 deletions(-) diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql b/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql index 792287445f0..2514f6b384a 100644 --- a/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql +++ b/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql @@ -5,7 +5,6 @@ * vulnerabilities such as replay attacks or key recovery. * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql index 65b00f94d73..659ae4d0286 100644 --- a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql +++ b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql @@ -4,7 +4,6 @@ * @description An AES cipher is in use without GCM * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql b/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql index 7f92123fe2e..f185e48d6b2 100644 --- a/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql +++ b/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql @@ -4,7 +4,6 @@ * @id java/quantum/reused-nonce * @kind problem * @problem.severity error - * @security.severity low * @precision medium * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql b/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql index 21bca11cc1a..db22bf4a369 100644 --- a/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql @@ -4,7 +4,6 @@ * @id java/quantum/unknown-kdf-iteration-count * @kind problem * @precision medium - * @severity warning * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql index 531b7e01d60..9ae4ea9130e 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql @@ -4,7 +4,6 @@ * @description An asymmetric cipher with a short key size is in use * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql index dec3296a38b..3a2d9765915 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql @@ -4,7 +4,6 @@ * @description An AES cipher is in use with an insecure block mode * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql index 8a725ec6a5e..74a3a19d472 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql @@ -4,7 +4,6 @@ * @id java/quantum/slices/weak-hashes * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags external/cwe/cwe-327 */ diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql index c902b286b19..3fd84c9ecc4 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-kdf-iteration-count * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql index 0161fc1186d..789d7952997 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-kdf-iteration-count * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql index 3bc15529363..5ed405fe3d9 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql @@ -4,7 +4,6 @@ * @description RSA with a key length <2048 found * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql index 3ab18c85e54..8d938e7dd1b 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql @@ -4,7 +4,6 @@ * @id java/quantum/slices/weak-ciphers * @kind problem * @problem.severity error - * @security.severity low * @precision high * @tags external/cwe/cwe-327 */ From 64caae554a2d832f549108d798646d354b17d4a5 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 22 Sep 2025 12:44:36 +0200 Subject: [PATCH 024/965] Guards: Refactor representation of false. --- .../controlflow/codeql/controlflow/Guards.qll | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index e9f48152cab..02e8918f8a7 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -202,12 +202,14 @@ module Make< private newtype TAbstractSingleValue = TValueNull() or - TValueTrue() or + TValueBool(Boolean b) or TValueInt(int i) { exists(ConstantExpr c | c.asIntegerValue() = i) or i = 0 } or TValueConstant(ConstantValue c) { exists(ConstantExpr ce | ce.asConstantValue() = c) } private newtype TGuardValue = - TValue(TAbstractSingleValue val, Boolean isVal) or + TValue(TAbstractSingleValue val, Boolean isVal) { + val instanceof TValueBool implies isVal = true + } or TIntRange(int bound, Boolean upper) { exists(ConstantExpr c | c.asIntegerValue() + [-1, 0, 1] = bound) and // exclude edge cases to avoid overflow issues when computing duals @@ -221,7 +223,9 @@ module Make< string toString() { result = "null" and this instanceof TValueNull or - result = "true" and this instanceof TValueTrue + result = "true" and this = TValueBool(true) + or + result = "false" and this = TValueBool(false) or exists(int i | result = i.toString() and this = TValueInt(i)) or @@ -244,6 +248,11 @@ module Make< result = TValue(val, isVal.booleanNot()) ) or + exists(boolean b | + this = TValue(TValueBool(b), true) and + result = TValue(TValueBool(b.booleanNot()), true) + ) + or exists(int bound, int d, boolean upper | upper = true and d = 1 or @@ -275,7 +284,7 @@ module Make< int asIntValue() { this = TValue(TValueInt(result), true) } /** Gets the boolean that this value represents, if any. */ - boolean asBooleanValue() { this = TValue(TValueTrue(), result) } + boolean asBooleanValue() { this = TValue(TValueBool(result), true) } /** Gets the constant that this value represents, if any. */ ConstantValue asConstantValue() { this = TValue(TValueConstant(result), true) } @@ -293,9 +302,7 @@ module Make< /** Gets a textual representation of this value. */ string toString() { - result = this.asBooleanValue().toString() - or - exists(AbstractSingleValue val | not val instanceof TValueTrue | + exists(AbstractSingleValue val | this = TValue(val, true) and result = val.toString() or this = TValue(val, false) and result = "not " + val.toString() @@ -365,15 +372,10 @@ module Make< } private predicate branchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v) { - exists(ConditionalSuccessor s | - bb1.getASuccessor(s) = bb2 and - exists(AbstractSingleValue val | - s instanceof NullnessSuccessor and val = TValueNull() - or - s instanceof BooleanSuccessor and val = TValueTrue() - | - v = TValue(val, s.getValue()) - ) + exists(ConditionalSuccessor s | bb1.getASuccessor(s) = bb2 | + s instanceof NullnessSuccessor and v = TValue(TValueNull(), s.getValue()) + or + s instanceof BooleanSuccessor and v = TValue(TValueBool(s.getValue()), true) ) or exceptionBranchPoint(bb1, bb2, _) and v = TException(false) From ca7d56023ac3e2b0fd474efedb9e00e38af28b5d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 22 Sep 2025 12:46:16 +0200 Subject: [PATCH 025/965] ControlFlow: Rename getAPhiInput to getAnInput. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 3 +++ java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll | 3 +++ shared/controlflow/codeql/controlflow/ControlFlow.qll | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 962f38e80ea..40da9a4e94d 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -336,6 +336,9 @@ class SsaPhiNode extends SsaVariable instanceof PhiNode { /** Gets an input to the phi node defining the SSA variable. */ SsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } + /** Gets an input to the phi node defining the SSA variable. */ + SsaVariable getAnInput() { this.hasInputFromBlock(result, _) } + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { phiHasInputFromBlock(this, inp, bb) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index e50581c7e14..5a818d18b85 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -366,6 +366,9 @@ class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { /** Gets an input to the phi node defining the SSA variable. */ BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } + /** Gets an input to the phi node defining the SSA variable. */ + BaseSsaVariable getAnInput() { this.hasInputFromBlock(result, _) } + /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ predicate hasInputFromBlock(BaseSsaVariable inp, BasicBlock bb) { phiHasInputFromBlock(this, inp, bb) diff --git a/shared/controlflow/codeql/controlflow/ControlFlow.qll b/shared/controlflow/codeql/controlflow/ControlFlow.qll index 7fd6ec70bfc..11aedc7e243 100644 --- a/shared/controlflow/codeql/controlflow/ControlFlow.qll +++ b/shared/controlflow/codeql/controlflow/ControlFlow.qll @@ -64,7 +64,7 @@ signature module InputSig Date: Fri, 26 Sep 2025 10:08:49 +0200 Subject: [PATCH 026/965] Guards: Disregard more trivial guards. --- .../controlflow/codeql/controlflow/Guards.qll | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 02e8918f8a7..959d78748db 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -505,7 +505,8 @@ module Make< or exists(NonNullExpr nonnull | equalityTestSymmetric(g1, g2, nonnull, v1.asBooleanValue()) and - v2.isNonNullValue() + v2.isNonNullValue() and + not g2 instanceof NonNullExpr // disregard trivial guard ) or exists(Case c1, Expr switchExpr | @@ -801,13 +802,16 @@ module Make< } private predicate impliesStep2(Guard g1, GuardValue v1, Guard g2, GuardValue v2) { - impliesStep1(g1, v1, g2, v2) - or - exists(Expr nonnull | - exprHasValue(nonnull, v2) and - equalityTestSymmetric(g1, g2, nonnull, v1.asBooleanValue()) and - v2.isNonNullValue() - ) + ( + impliesStep1(g1, v1, g2, v2) + or + exists(Expr nonnull | + exprHasValue(nonnull, v2) and + equalityTestSymmetric(g1, g2, nonnull, v1.asBooleanValue()) and + v2.isNonNullValue() + ) + ) and + not exprHasValue(g2, v2) // disregard trivial guard } bindingset[g1, v1] From b52a9a818c43833f881a86ff84590b3ae275d00a Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 17 Sep 2025 09:23:44 +0200 Subject: [PATCH 027/965] C#: Instantiate shared Guards. --- .../csharp/controlflow/ControlFlowElement.qll | 4 + .../csharp/controlflow/ControlFlowGraph.qll | 2 + .../semmle/code/csharp/controlflow/Guards.qll | 359 ++++++++++++++++++ shared/controlflow/codeql/controlflow/Cfg.qll | 4 + 4 files changed, 369 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index f914b13e228..ebb6ab1db53 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -40,6 +40,10 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { */ Nodes::ElementNode getAControlFlowNode() { result.getAstNode() = this } + ControlFlow::Node getControlFlowNode() { result.getAstNode() = this } + + BasicBlock getBasicBlock() { result = this.getAControlFlowNode().getBasicBlock() } + /** * Gets a first control flow node executed within this element. */ diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll index 4b9d636824c..a84672f2ed6 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -251,6 +251,8 @@ module ControlFlow { } } + class NormalExitNode extends AnnotatedExitNode instanceof Impl::NormalExitNode { } + /** A node for a callable exit point. */ class ExitNode extends Node instanceof Impl::ExitNode { /** Gets the callable that this exit applies to. */ diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 7185e39a45b..d873c1fced3 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -13,6 +13,365 @@ private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.Linq private import semmle.code.csharp.frameworks.system.Collections private import semmle.code.csharp.frameworks.system.collections.Generic +private import codeql.controlflow.Guards as SharedGuards + +private module GuardsInput implements + SharedGuards::InputSig +{ + private import csharp as CS + + class NormalExitNode = ControlFlow::Nodes::NormalExitNode; + + class AstNode = ControlFlowElement; + + class Expr = CS::Expr; + + private newtype TConstantValue = + TStringValue(string value) { any(StringLiteral s).getValue() = value } + + class ConstantValue extends TConstantValue { + string toString() { this = TStringValue(result) } + } + + abstract class ConstantExpr extends Expr { + predicate isNull() { none() } + + boolean asBooleanValue() { none() } + + int asIntegerValue() { none() } + + ConstantValue asConstantValue() { none() } + } + + private class NullConstant extends ConstantExpr { + NullConstant() { nullValueImplied(this) } + + override predicate isNull() { any() } + } + + private class BooleanConstant extends ConstantExpr instanceof BoolLiteral { + override boolean asBooleanValue() { result = super.getBoolValue() } + } + + private predicate intConst(Expr e, int i) { + e.getValue().toInt() = i and + ( + e.getType() instanceof Enum + or + e.getType() instanceof IntegralType + ) + } + + private class IntegerConstant extends ConstantExpr { + IntegerConstant() { intConst(this, _) } + + override int asIntegerValue() { intConst(this, result) } + } + + private class EnumConst extends ConstantExpr { + EnumConst() { this.getType() instanceof Enum and this.hasValue() } + + override int asIntegerValue() { result = this.getValue().toInt() } + } + + private class StringConstant extends ConstantExpr instanceof StringLiteral { + override ConstantValue asConstantValue() { result = TStringValue(this.getValue()) } + } + + class NonNullExpr extends Expr { + NonNullExpr() { nonNullValueImplied(this) } + } + + class Case extends AstNode instanceof CS::Case { + Expr getSwitchExpr() { super.getExpr() = result } + + predicate isDefaultCase() { this instanceof DefaultCase } + + ConstantExpr asConstantCase() { super.getPattern() = result } + + private predicate hasEdge(BasicBlock bb1, BasicBlock bb2, MatchingCompletion c) { + exists(PatternExpr pe | + super.getPattern() = pe and + c.isValidFor(pe) and + bb1.getLastNode() = pe.getAControlFlowNode() and + bb1.getASuccessor(c.getAMatchingSuccessorType()) = bb2 + ) + } + + predicate matchEdge(BasicBlock bb1, BasicBlock bb2) { + exists(MatchingCompletion c | this.hasEdge(bb1, bb2, c) and c.isMatch()) + } + + predicate nonMatchEdge(BasicBlock bb1, BasicBlock bb2) { + exists(MatchingCompletion c | this.hasEdge(bb1, bb2, c) and c.isNonMatch()) + } + } + + abstract private class BinExpr extends BinaryOperation { } + + class AndExpr extends BinExpr { + AndExpr() { + this instanceof LogicalAndExpr or + this instanceof BitwiseAndExpr + } + } + + class OrExpr extends BinExpr { + OrExpr() { + this instanceof LogicalOrExpr or + this instanceof BitwiseOrExpr + } + } + + class NotExpr = LogicalNotExpr; + + class IdExpr extends Expr { + IdExpr() { this instanceof AssignExpr or this instanceof CastExpr } + + Expr getEqualChildExpr() { + result = this.(AssignExpr).getRValue() + or + result = this.(CastExpr).getExpr() + } + } + + predicate equalityTest(Expr eqtest, Expr left, Expr right, boolean polarity) { + exists(ComparisonTest ct | + ct.getExpr() = eqtest and + ct.getFirstArgument() = left and + ct.getSecondArgument() = right + | + ct.getComparisonKind().isEquality() and polarity = true + or + ct.getComparisonKind().isInequality() and polarity = false + ) + or + exists(IsExpr ie, PatternExpr pat | + ie = eqtest and + ie.getExpr() = left and + ie.getPattern() = pat + | + right = pat.(ConstantPatternExpr) and + polarity = true + or + right = pat.(NotPatternExpr).getPattern().(ConstantPatternExpr) and + polarity = false + ) + } + + class ConditionalExpr = CS::ConditionalExpr; + + class Parameter = CS::Parameter; + + private int parameterPosition() { result in [-1, any(Parameter p).getPosition()] } + + class ParameterPosition extends int { + ParameterPosition() { this = parameterPosition() } + } + + class ArgumentPosition extends int { + ArgumentPosition() { this = parameterPosition() } + } + + pragma[inline] + predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos } + + final private class FinalCallable = Callable; + + class NonOverridableMethod extends FinalCallable { + NonOverridableMethod() { not this.(Overridable).isOverridableOrImplementable() } + + Parameter getParameter(ParameterPosition ppos) { + super.getParameter(ppos) = result and + not result.isParams() + } + + Expr getAReturnExpr() { this.canReturn(result) } + } + + class NonOverridableMethodCall extends Expr instanceof Call { + NonOverridableMethod getMethod() { super.getTarget().getUnboundDeclaration() = result } + + Expr getArgument(ArgumentPosition apos) { + result = super.getArgumentForParameter(any(Parameter p | p.getPosition() = apos)) + } + } +} + +private module GuardsImpl = SharedGuards::Make; + +class GuardValue = GuardsImpl::GuardValue; + +private module LogicInput implements GuardsImpl::LogicInputSig { + class SsaDefinition extends Ssa::Definition { + Expr getARead() { super.getARead() = result } + } + + class SsaWriteDefinition extends SsaDefinition instanceof Ssa::ExplicitDefinition { + Expr getDefinition() { result = super.getADefinition().getSource() } + } + + class SsaPhiNode extends SsaDefinition instanceof Ssa::PhiNode { + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { + super.hasInputFromBlock(inp, bb) + } + } + + predicate parameterDefinition(Parameter p, SsaDefinition def) { + def.(Ssa::ImplicitParameterDefinition).getParameter() = p + } + + predicate additionalNullCheck(GuardsImpl::PreGuard guard, GuardValue val, Expr e, boolean isNull) { + // Comparison with a non-`null` value, for example `x?.Length > 0` + exists(ComparisonTest ct, ComparisonKind ck, Expr arg | ct.getExpr() = guard | + e instanceof DereferenceableExpr and + ct.getAnArgument() = e and + ct.getAnArgument() = arg and + arg = any(NullValue nv | nv.isNonNull()).getAnExpr() and + ck = ct.getComparisonKind() and + e != arg and + isNull = false and + not ck.isEquality() and + not ck.isInequality() and + val.asBooleanValue() = true + ) + or + // Call to `string.IsNullOrEmpty()` or `string.IsNullOrWhiteSpace()` + exists(MethodCall mc, string name | guard = mc | + mc.getTarget() = any(SystemStringClass c).getAMethod(name) and + name.regexpMatch("IsNullOr(Empty|WhiteSpace)") and + mc.getArgument(0) = e and + val.asBooleanValue() = false and + isNull = false + ) + or + guard = + any(PatternMatch pm | + e instanceof DereferenceableExpr and + e = pm.getExpr() and + ( + val.asBooleanValue().booleanNot() = patternMatchesNull(pm.getPattern()) and + isNull = false + or + exists(TypePatternExpr tpe | + // E.g. `x is string` where `x` has type `string` + typePattern(guard, tpe, tpe.getCheckedType()) and + val.asBooleanValue() = false and + isNull = true + ) + ) + ) + or + e.(DereferenceableExpr).hasNullableType() and + guard = + any(PropertyAccess pa | + pa.getQualifier() = e and + pa.getTarget().hasName("HasValue") and + val.asBooleanValue().booleanNot() = isNull + ) + } + + predicate additionalImpliesStep( + GuardsImpl::PreGuard g1, GuardValue v1, GuardsImpl::PreGuard g2, GuardValue v2 + ) { + g1 instanceof DereferenceableExpr and + g1 = getNullEquivParent(g2) and + v1.isNullness(_) and + v2 = v1 + or + g1 instanceof DereferenceableExpr and + g2 = getANullImplyingChild(g1) and + v1.isNonNullValue() and + v2 = v1 + or + g2 = g1.(NullCoalescingExpr).getAnOperand() and + v1.isNullValue() and + v2 = v1 + } +} + +module Guards = GuardsImpl::Logic; + +/* + * Temporary debug predicates: + */ + +predicate debug_newcontrols(Guards::Guard g, BasicBlock bb, GuardValue v) { g.valueControls(bb, v) } + +predicate debug_oldconvert(Guards::Guard g, BasicBlock bb, GuardValue v) { + exists(AbstractValue av | + g.(Guard).controlsBasicBlock(bb, av) and + debug_convVals(av, v) + ) + or + debug_oldconvertCase(_, _, g, bb, v) +} + +predicate debug_oldconvertCase(Guard g1, MatchValue av, Guards::Guard g2, BasicBlock bb, GuardValue v) { + g1.controlsBasicBlock(bb, av) and + av.getCase() = g2 and + if av.isMatch() then v.asBooleanValue() = true else v.asBooleanValue() = false +} + +predicate debug_caseconverted(Guard g1, Guards::Guard g, BasicBlock bb, GuardValue v) { + debug_oldconvertCase(g1, _, g, bb, v) and + 2 <= strictcount(Guard g0 | debug_oldconvertCase(g0, _, g, bb, v)) +} + +predicate debug_useless(Guards::Guard g, BasicBlock bb, GuardValue v) { + debug_oldconvert(g, bb, v) and + Guards::InternalUtil::exprHasValue(g, v) +} + +predicate debug_compare(int eq, int oldconv, int oldnonconv, int added, int new) { + eq = + count(Guards::Guard g, BasicBlock bb, GuardValue v | + debug_newcontrols(g, bb, v) and debug_oldconvert(g, bb, v) + ) and + oldconv = + count(Guards::Guard g, BasicBlock bb, GuardValue v | + debug_oldconvert(g, bb, v) and + not debug_newcontrols(g, bb, v) and + not debug_useless(g, bb, v) + ) and + oldnonconv = + count(Guard g, BasicBlock bb, AbstractValue av | + g.controlsBasicBlock(bb, av) and + not debug_convVals(av, _) and + not debug_oldconvertCase(g, av, _, bb, _) + // Remaining that are not converted: + // av instanceof EmptyCollectionValue + ) and + added = + count(Guards::Guard g, BasicBlock bb, GuardValue v | + debug_newcontrols(g, bb, v) and + not debug_oldconvert(g, bb, v) and + not debug_newGv(v) + ) and + new = + count(Guards::Guard g, BasicBlock bb, GuardValue v | + debug_newcontrols(g, bb, v) and + not debug_oldconvert(g, bb, v) and + debug_newGv(v) + ) +} + +predicate debug_newGv(GuardValue v) { + v.isThrowsException() or + v.getDualValue().isThrowsException() or + exists(v.getDualValue().asIntValue()) or + v.isIntRange(_, _) +} + +predicate debug_convVals(AbstractValue av, GuardValue gv) { + av.(AbstractValues::BooleanValue).getValue() = gv.asBooleanValue() + or + av.(AbstractValues::IntegerValue).getValue() = gv.asIntValue() + or + av.(AbstractValues::NullValue).isNull() and gv.isNullValue() + or + av.(AbstractValues::NullValue).isNonNull() and gv.isNonNullValue() +} /** An expression whose value may control the execution of another element. */ class Guard extends Expr { diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll index 9e094385405..1a279c61fcf 100644 --- a/shared/controlflow/codeql/controlflow/Cfg.qll +++ b/shared/controlflow/codeql/controlflow/Cfg.qll @@ -1185,6 +1185,10 @@ module MakeWithSplitting< final class AnnotatedExitNode = AnnotatedExitNodeImpl; + final class NormalExitNode extends AnnotatedExitNodeImpl { + NormalExitNode() { this = TAnnotatedExitNode(_, true) } + } + /** An exit node for a given scope. */ private class ExitNodeImpl extends NodeImpl, TExitNode { private CfgScope scope; From 449059f1ac811a9857017fd6dbbe2b2cbe2b7629 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 26 Sep 2025 10:20:42 +0200 Subject: [PATCH 028/965] C#: Disable FinallySplit, BooleanSplit, and LoopSplit --- .../semmle/code/csharp/controlflow/internal/Splitting.qll | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index bcc4c48ec92..37016730f88 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -40,14 +40,16 @@ private module Cached { success in [false, true] } or TFinallySplit(FinallySplitting::FinallySplitType type, int nestLevel) { - nestLevel = any(Statements::TryStmtTree t).nestLevel() + nestLevel = any(Statements::TryStmtTree t).nestLevel() and + none() } or TExceptionHandlerSplit(ExceptionClass ec) or TBooleanSplit(BooleanSplitting::BooleanSplitSubKind kind, boolean branch) { kind.startsSplit(_) and - branch in [false, true] + branch in [false, true] and + none() } or - TLoopSplit(LoopSplitting::AnalyzableLoopStmt loop) + TLoopSplit(LoopSplitting::AnalyzableLoopStmt loop) { none() } } import Cached From c2d21e95b94e749b8898079cf4caf59761a7e248 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 22 Sep 2025 12:50:10 +0200 Subject: [PATCH 029/965] C#: Instantiate ControlFlowReachability and implement new nullness. --- .../controlflow/ControlFlowReachability.qll | 57 +++++++++++ .../semmle/code/csharp/dataflow/Nullness.qll | 96 ++++++++++++++----- .../lib/semmle/code/csharp/dataflow/SSA.qll | 10 +- 3 files changed, 133 insertions(+), 30 deletions(-) create mode 100644 csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll new file mode 100644 index 00000000000..8885dd45fe8 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll @@ -0,0 +1,57 @@ +/** + * Provides an implementation of local (intraprocedural) control flow reachability. + */ + +import csharp +private import codeql.controlflow.ControlFlow +private import semmle.code.csharp.controlflow.BasicBlocks +private import semmle.code.csharp.controlflow.Guards as Guards +private import semmle.code.csharp.ExprOrStmtParent + +private module ControlFlowInput implements + InputSig +{ + private import csharp as CS + + AstNode getEnclosingAstNode(ControlFlow::Node node) { + node.getAstNode() = result + or + not exists(node.getAstNode()) and result = node.getEnclosingCallable() + } + + class AstNode = ExprOrStmtParent; + + AstNode getParent(AstNode node) { result = node.getParent() } + + class FinallyBlock extends AstNode { + FinallyBlock() { any(TryStmt try).getFinally() = this } + } + + class Expr = CS::Expr; + + class SourceVariable = Ssa::SourceVariable; + + class SsaDefinition = Ssa::Definition; + + class SsaWriteDefinition extends SsaDefinition instanceof Ssa::ExplicitDefinition { + Expr getDefinition() { result = super.getADefinition().getSource() } + } + + class SsaPhiNode = Ssa::PhiNode; + + class SsaUncertainDefinition = Ssa::UncertainDefinition; + + class GuardValue = Guards::GuardValue; + + predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v) { + Guards::Guards::ssaControlsBranchEdge(def, bb1, bb2, v) + } + + predicate ssaControls(SsaDefinition def, BasicBlock bb, GuardValue v) { + Guards::Guards::ssaControls(def, bb, v) + } + + import Guards::Guards::InternalUtil +} + +module ControlFlowReachability = Make; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 3723dcaec12..8d19f9720d8 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -26,27 +26,30 @@ private import semmle.code.csharp.controlflow.Guards::AbstractValues private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.Test +private import semmle.code.csharp.controlflow.ControlFlowReachability as Cf + +private Expr maybeNullExpr(Expr reason) { + G::Internal::nullValue(result) and reason = result + or + result instanceof AsExpr and reason = result + or + result.(AssignExpr).getRValue() = maybeNullExpr(reason) + or + result.(Cast).getExpr() = maybeNullExpr(reason) + or + result = + any(ConditionalExpr ce | + ce.getThen() = maybeNullExpr(reason) + or + ce.getElse() = maybeNullExpr(reason) + ) + or + result.(NullCoalescingExpr).getRightOperand() = maybeNullExpr(reason) +} /** An expression that may be `null`. */ class MaybeNullExpr extends Expr { - MaybeNullExpr() { - G::Internal::nullValue(this) - or - this instanceof AsExpr - or - this.(AssignExpr).getRValue() instanceof MaybeNullExpr - or - this.(Cast).getExpr() instanceof MaybeNullExpr - or - this = - any(ConditionalExpr ce | - ce.getThen() instanceof MaybeNullExpr - or - ce.getElse() instanceof MaybeNullExpr - ) - or - this.(NullCoalescingExpr).getRightOperand() instanceof MaybeNullExpr - } + MaybeNullExpr() { this = maybeNullExpr(_) } } /** An expression that is always `null`. */ @@ -123,6 +126,10 @@ private predicate dereferenceAt(BasicBlock bb, int i, Ssa::Definition def, Deref d = def.getAReadAtNode(bb.getNode(i)) } +private predicate dereferenceAt(ControlFlow::Node node, Ssa::Definition def, Dereference d) { + d = def.getAReadAtNode(node) +} + /** * Holds if `e` having abstract value `vExpr` implies that SSA definition `def` * has abstract value `vDef`. @@ -217,13 +224,16 @@ private predicate isNullDefaultArgument(Ssa::ImplicitParameterDefinition def, Al } /** Holds if `def` is an SSA definition that may be `null`. */ -private predicate defMaybeNull(Ssa::Definition def, string msg, Element reason) { +private predicate defMaybeNull( + Ssa::Definition def, ControlFlow::Node node, string msg, Element reason +) { not nonNullDef(def) and ( // A variable compared to `null` might be `null` exists(G::DereferenceableExpr de | de = def.getARead() | reason = de.getANullCheck(_, true) and msg = "as suggested by $@ null check" and + node = def.getControlFlowNode() and not de = any(Ssa::PhiNode phi).getARead() and strictcount(Element e | e = any(Ssa::Definition def0 | de = def0.getARead()).getElement()) = 1 and // Don't use a check as reason if there is a `null` assignment @@ -234,23 +244,27 @@ private predicate defMaybeNull(Ssa::Definition def, string msg, Element reason) or // A parameter might be `null` if there is a `null` argument somewhere isMaybeNullArgument(def, reason) and + node = def.getControlFlowNode() and ( if reason instanceof AlwaysNullExpr then msg = "because of $@ null argument" else msg = "because of $@ potential null argument" ) or - isNullDefaultArgument(def, reason) and msg = "because the parameter has a null default value" + isNullDefaultArgument(def, reason) and + node = def.getControlFlowNode() and + msg = "because the parameter has a null default value" or // If the source of a variable is `null` then the variable may be `null` exists(AssignableDefinition adef | adef = def.(Ssa::ExplicitDefinition).getADefinition() | - adef.getSource() instanceof MaybeNullExpr and + adef.getSource() = maybeNullExpr(node.getAstNode()) and reason = adef.getExpr() and msg = "because of $@ assignment" ) or // A variable of nullable type may be null exists(Dereference d | dereferenceAt(_, _, def, d) | + node = def.getControlFlowNode() and d.hasNullableType() and not def instanceof Ssa::PhiNode and reason = def.getSourceVariable().getAssignable() and @@ -261,7 +275,7 @@ private predicate defMaybeNull(Ssa::Definition def, string msg, Element reason) pragma[noinline] private predicate sourceVariableMaybeNull(Ssa::SourceVariable v) { - defMaybeNull(v.getAnSsaDefinition(), _, _) + defMaybeNull(v.getAnSsaDefinition(), _, _, _) } pragma[noinline] @@ -305,7 +319,7 @@ private predicate defNullImpliesStep( * That is, those basic blocks for which the SSA definition is suspected of being `null`. */ private predicate defMaybeNullInBlock(Ssa::Definition def, BasicBlock bb) { - defMaybeNull(def, _, _) and + defMaybeNull(def, _, _, _) and bb = def.getBasicBlock() or exists(BasicBlock mid, Ssa::Definition midDef | defMaybeNullInBlock(midDef, mid) | @@ -341,7 +355,7 @@ private predicate succSourceSink(SourcePathNode source, Ssa::Definition def, Bas private newtype TPathNode = TSourcePathNode(Ssa::Definition def, string msg, Element reason, boolean isNullArgument) { nullDerefCandidateVariable(def.getSourceVariable()) and - defMaybeNull(def, msg, reason) and + defMaybeNull(def, _, msg, reason) and if isMaybeNullArgument(def, reason) then isNullArgument = true else isNullArgument = false } or TInternalPathNode(Ssa::Definition def, BasicBlock bb) { @@ -503,6 +517,40 @@ private predicate defReaches(Ssa::Definition def, ControlFlow::Node cfn, boolean ) } +private module NullnessConfig implements Cf::ControlFlowReachability::ConfigSig { + predicate source(ControlFlow::Node node, Ssa::Definition def) { defMaybeNull(def, node, _, _) } + + predicate sink(ControlFlow::Node node, Ssa::Definition def) { + exists(Dereference d | + dereferenceAt(node, def, d) and + not d instanceof NonNullExpr + ) + } + + predicate barrierValue(G::GuardValue gv) { gv.isNullness(false) } + + predicate uncertainFlow() { none() } +} + +private module NullnessFlow = Cf::ControlFlowReachability::Flow; + +predicate debug_nullness_new(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { + exists( + Ssa::Definition origin, Ssa::Definition ssa, ControlFlow::Node src, ControlFlow::Node sink + | + defMaybeNull(origin, src, msg, reason) and + NullnessFlow::flow(src, origin, sink, ssa) and + ssa.getSourceVariable() = v and + dereferenceAt(sink, ssa, d) and + not d.isAlwaysNull(v) + ) +} + +predicate debug_nullness_orig(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { + d.isFirstMaybeNull(v.getAnSsaDefinition(), _, _, msg, reason) and + not d instanceof NonNullExpr +} + /** * An expression that dereferences a value. That is, an expression that may * result in a `NullReferenceException` if the value is `null`. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll index 4c9f64de4b9..e8180201b9a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll @@ -163,13 +163,11 @@ module Ssa { * (`ImplicitDefinition`), or a phi node (`PhiNode`). */ class Definition extends SsaImpl::Definition { - /** - * Gets the control flow node of this SSA definition, if any. Phi nodes are - * examples of SSA definitions without a control flow node, as they are - * modeled at index `-1` in the relevant basic block. - */ + /** Gets the control flow node of this SSA definition. */ final ControlFlow::Node getControlFlowNode() { - exists(ControlFlow::BasicBlock bb, int i | this.definesAt(_, bb, i) | result = bb.getNode(i)) + exists(ControlFlow::BasicBlock bb, int i | this.definesAt(_, bb, i) | + result = bb.getNode(0.maximum(i)) + ) } /** From 6cfadbfe90907b2f89331c3743fb9e04c3b6e055 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 26 Sep 2025 10:30:53 +0200 Subject: [PATCH 030/965] C#: Clean up. --- .../csharp/controlflow/ControlFlowGraph.qll | 6 - .../semmle/code/csharp/controlflow/Guards.qll | 81 -- .../csharp/controlflow/internal/Splitting.qll | 705 +----------------- .../library-tests/controlflow/graph/Nodes.ql | 16 - 4 files changed, 4 insertions(+), 804 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll index a84672f2ed6..3f2ef54f644 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -294,13 +294,7 @@ module ControlFlow { class Split = Splitting::Split; - class FinallySplit = Splitting::FinallySplitting::FinallySplit; - class ExceptionHandlerSplit = Splitting::ExceptionHandlerSplitting::ExceptionHandlerSplit; - - class BooleanSplit = Splitting::BooleanSplitting::BooleanSplit; - - class LoopSplit = Splitting::LoopSplitting::LoopSplit; } class BasicBlock = BBs::BasicBlock; diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index d873c1fced3..f12fa66dde8 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -292,87 +292,6 @@ private module LogicInput implements GuardsImpl::LogicInputSig { module Guards = GuardsImpl::Logic; -/* - * Temporary debug predicates: - */ - -predicate debug_newcontrols(Guards::Guard g, BasicBlock bb, GuardValue v) { g.valueControls(bb, v) } - -predicate debug_oldconvert(Guards::Guard g, BasicBlock bb, GuardValue v) { - exists(AbstractValue av | - g.(Guard).controlsBasicBlock(bb, av) and - debug_convVals(av, v) - ) - or - debug_oldconvertCase(_, _, g, bb, v) -} - -predicate debug_oldconvertCase(Guard g1, MatchValue av, Guards::Guard g2, BasicBlock bb, GuardValue v) { - g1.controlsBasicBlock(bb, av) and - av.getCase() = g2 and - if av.isMatch() then v.asBooleanValue() = true else v.asBooleanValue() = false -} - -predicate debug_caseconverted(Guard g1, Guards::Guard g, BasicBlock bb, GuardValue v) { - debug_oldconvertCase(g1, _, g, bb, v) and - 2 <= strictcount(Guard g0 | debug_oldconvertCase(g0, _, g, bb, v)) -} - -predicate debug_useless(Guards::Guard g, BasicBlock bb, GuardValue v) { - debug_oldconvert(g, bb, v) and - Guards::InternalUtil::exprHasValue(g, v) -} - -predicate debug_compare(int eq, int oldconv, int oldnonconv, int added, int new) { - eq = - count(Guards::Guard g, BasicBlock bb, GuardValue v | - debug_newcontrols(g, bb, v) and debug_oldconvert(g, bb, v) - ) and - oldconv = - count(Guards::Guard g, BasicBlock bb, GuardValue v | - debug_oldconvert(g, bb, v) and - not debug_newcontrols(g, bb, v) and - not debug_useless(g, bb, v) - ) and - oldnonconv = - count(Guard g, BasicBlock bb, AbstractValue av | - g.controlsBasicBlock(bb, av) and - not debug_convVals(av, _) and - not debug_oldconvertCase(g, av, _, bb, _) - // Remaining that are not converted: - // av instanceof EmptyCollectionValue - ) and - added = - count(Guards::Guard g, BasicBlock bb, GuardValue v | - debug_newcontrols(g, bb, v) and - not debug_oldconvert(g, bb, v) and - not debug_newGv(v) - ) and - new = - count(Guards::Guard g, BasicBlock bb, GuardValue v | - debug_newcontrols(g, bb, v) and - not debug_oldconvert(g, bb, v) and - debug_newGv(v) - ) -} - -predicate debug_newGv(GuardValue v) { - v.isThrowsException() or - v.getDualValue().isThrowsException() or - exists(v.getDualValue().asIntValue()) or - v.isIntRange(_, _) -} - -predicate debug_convVals(AbstractValue av, GuardValue gv) { - av.(AbstractValues::BooleanValue).getValue() = gv.asBooleanValue() - or - av.(AbstractValues::IntegerValue).getValue() = gv.asIntValue() - or - av.(AbstractValues::NullValue).isNull() and gv.isNullValue() - or - av.(AbstractValues::NullValue).isNonNull() and gv.isNonNullValue() -} - /** An expression whose value may control the execution of another element. */ class Guard extends Expr { Guard() { isGuard(this, _) } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index 37016730f88..e31b1a9f44c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -26,10 +26,7 @@ private module Cached { TInitializerSplitKind() or TConditionalCompletionSplitKind() or TAssertionSplitKind() or - TFinallySplitKind(int nestLevel) { nestLevel = any(Statements::TryStmtTree t).nestLevel() } or - TExceptionHandlerSplitKind() or - TBooleanSplitKind(BooleanSplitting::BooleanSplitSubKind kind) { kind.startsSplit(_) } or - TLoopSplitKind(LoopSplitting::AnalyzableLoopStmt loop) + TExceptionHandlerSplitKind() cached newtype TSplit = @@ -39,17 +36,7 @@ private module Cached { exists(a.getExpr(i)) and success in [false, true] } or - TFinallySplit(FinallySplitting::FinallySplitType type, int nestLevel) { - nestLevel = any(Statements::TryStmtTree t).nestLevel() and - none() - } or - TExceptionHandlerSplit(ExceptionClass ec) or - TBooleanSplit(BooleanSplitting::BooleanSplitSubKind kind, boolean branch) { - kind.startsSplit(_) and - branch in [false, true] and - none() - } or - TLoopSplit(LoopSplitting::AnalyzableLoopStmt loop) { none() } + TExceptionHandlerSplit(ExceptionClass ec) } import Cached @@ -463,241 +450,6 @@ module AssertionSplitting { } } -module FinallySplitting { - /** - * The type of a split `finally` node. - * - * The type represents one of the possible ways of entering a `finally` - * block. For example, if a `try` statement ends with a `return` statement, - * then the `finally` block must end with a `return` as well (provided that - * the `finally` block exits normally). - */ - class FinallySplitType extends Cfg::SuccessorType { - FinallySplitType() { not this instanceof Cfg::ConditionalSuccessor } - - /** Holds if this split type matches entry into a `finally` block with completion `c`. */ - predicate isSplitForEntryCompletion(Completion c) { - if c instanceof NormalCompletion - then - // If the entry into the `finally` block completes with any normal completion, - // it simply means normal execution after the `finally` block - this instanceof Cfg::DirectSuccessor - else this = c.getAMatchingSuccessorType() - } - } - - /** A control flow element that belongs to a `finally` block. */ - private class FinallyAstNode extends AstNode { - private Statements::TryStmtTree try; - - FinallyAstNode() { this = try.getAFinallyDescendant() } - - /** Gets the immediate `try` block that this node belongs to. */ - Statements::TryStmtTree getTryStmt() { result = try } - - /** Holds if this node is the entry node in the `finally` block it belongs to. */ - predicate isEntryNode() { first(try.(TryStmt).getFinally(), this) } - } - - /** - * A split for elements belonging to a `finally` block, which determines how to - * continue execution after leaving the `finally` block. For example, in - * - * ```csharp - * try - * { - * if (!M()) - * throw new Exception(); - * } - * finally - * { - * Log.Write("M failed"); - * } - * ``` - * - * all control flow nodes in the `finally` block have two splits: one representing - * normal execution of the `try` block (when `M()` returns `true`), and one - * representing exceptional execution of the `try` block (when `M()` returns `false`). - */ - class FinallySplit extends Split, TFinallySplit { - private FinallySplitType type; - private int nestLevel; - - FinallySplit() { this = TFinallySplit(type, nestLevel) } - - /** - * Gets the type of this `finally` split, that is, how to continue execution after the - * `finally` block. - */ - FinallySplitType getType() { result = type } - - /** Gets the `finally` nesting level. */ - int getNestLevel() { result = nestLevel } - - override string toString() { - if type instanceof Cfg::DirectSuccessor - then result = "" - else - if nestLevel > 0 - then result = "finally(" + nestLevel + "): " + type.toString() - else result = "finally: " + type.toString() - } - } - - private int getListOrder(FinallySplitKind kind) { - result = AssertionSplitting::getNextListOrder() + kind.getNestLevel() - } - - int getNextListOrder() { - result = max([getListOrder(_) + 1, AssertionSplitting::getNextListOrder()]) - } - - private class FinallySplitKind extends SplitKind, TFinallySplitKind { - private int nestLevel; - - FinallySplitKind() { this = TFinallySplitKind(nestLevel) } - - /** Gets the `finally` nesting level. */ - int getNestLevel() { result = nestLevel } - - override int getListOrder() { result = getListOrder(this) } - - override string toString() { result = "Finally (" + nestLevel + ")" } - } - - pragma[nomagic] - private predicate hasEntry0(AstNode pred, FinallyAstNode succ, int nestLevel, Completion c) { - succ.isEntryNode() and - nestLevel = succ.getTryStmt().nestLevel() and - succ(pred, succ, c) - } - - private class FinallySplitImpl extends SplitImpl instanceof FinallySplit { - override FinallySplitKind getKind() { result.getNestLevel() = super.getNestLevel() } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - hasEntry0(pred, succ, super.getNestLevel(), c) and - super.getType().isSplitForEntryCompletion(c) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { none() } - - /** - * Holds if this split applies to control flow element `pred`, where `pred` - * is a valid predecessor. - */ - private predicate appliesToPredecessor(AstNode pred) { - this.appliesTo(pred) and - (succ(pred, _, _) or scopeLast(_, pred, _)) - } - - pragma[noinline] - private predicate exit0(AstNode pred, Statements::TryStmtTree try, int nestLevel, Completion c) { - this.appliesToPredecessor(pred) and - nestLevel = try.nestLevel() and - last(try, pred, c) - } - - /** - * Holds if `pred` may exit this split with completion `c`. The Boolean - * `inherited` indicates whether `c` is an inherited completion from a `try`/ - * `catch` block. - */ - private predicate exit(AstNode pred, Completion c, boolean inherited) { - exists(TryStmt try, FinallySplitType type | - this.exit0(pred, try, super.getNestLevel(), c) and - type = super.getType() - | - if last(try.getFinally(), pred, c) - then - // Finally block can itself exit with completion `c`: either `c` must - // match this split, `c` must be an abnormal completion, or this split - // does not require another completion to be recovered - inherited = false and - ( - type = c.getAMatchingSuccessorType() - or - not c instanceof NormalCompletion - or - type instanceof Cfg::DirectSuccessor - ) - else ( - // Finally block can exit with completion `c` inherited from try/catch - // block: must match this split - inherited = true and - type = c.getAMatchingSuccessorType() and - not type instanceof Cfg::DirectSuccessor - ) - ) - or - // If this split is normal, and an outer split can exit based on an inherited - // completion, we need to exit this split as well. For example, in - // - // ```csharp - // bool done; - // try - // { - // if (b1) throw new ExceptionA(); - // } - // finally - // { - // try - // { - // if (b2) throw new ExceptionB(); - // } - // finally - // { - // done = true; - // } - // } - // ``` - // - // if the outer split for `done = true` is `ExceptionA` and the inner split - // is "normal" (corresponding to `b1 = true` and `b2 = false`), then the inner - // split must be able to exit with an `ExceptionA` completion. - this.appliesToPredecessor(pred) and - exists(FinallySplit outer | - outer.getNestLevel() = super.getNestLevel() - 1 and - outer.(FinallySplitImpl).exit(pred, c, inherited) and - super.getType() instanceof Cfg::DirectSuccessor and - inherited = true - ) - } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - succ(pred, succ, c) and - ( - this.exit(pred, c, _) - or - this.exit(pred, c.(NestedBreakCompletion).getAnInnerCompatibleCompletion(), _) - ) - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - scopeLast(scope, last, c) and - ( - this.exit(last, c, _) - or - this.exit(last, c.(NestedBreakCompletion).getAnInnerCompatibleCompletion(), _) - ) - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - this.appliesSucc(pred, succ, c) and - succ = - any(FinallyAstNode fcfe | - if fcfe.isEntryNode() - then - // entering a nested `finally` block - fcfe.getTryStmt().nestLevel() > super.getNestLevel() - else - // staying in the same (possibly nested) `finally` block as `pred` - fcfe.getTryStmt().nestLevel() >= super.getNestLevel() - ) - } - } -} - module ExceptionHandlerSplitting { private newtype TMatch = TAlways() or @@ -751,12 +503,12 @@ module ExceptionHandlerSplitting { } private class ExceptionHandlerSplitKind extends SplitKind, TExceptionHandlerSplitKind { - override int getListOrder() { result = FinallySplitting::getNextListOrder() } + override int getListOrder() { result = AssertionSplitting::getNextListOrder() } override string toString() { result = "ExceptionHandler" } } - int getNextListOrder() { result = FinallySplitting::getNextListOrder() + 1 } + int getNextListOrder() { result = AssertionSplitting::getNextListOrder() + 1 } private class ExceptionHandlerSplitImpl extends SplitImpl instanceof ExceptionHandlerSplit { override ExceptionHandlerSplitKind getKind() { any() } @@ -873,452 +625,3 @@ module ExceptionHandlerSplitting { } } } - -module BooleanSplitting { - private import semmle.code.csharp.controlflow.internal.PreBasicBlocks - - /** A sub-classification of Boolean splits. */ - abstract class BooleanSplitSubKind extends TBooleanSplitSubKind { - /** - * Holds if the branch taken by condition `cb1` should be recorded in - * this split, and the recorded value determines the branch taken by a - * later condition `cb2`, possibly inverted. - * - * For example, in - * - * ```csharp - * var b = GetB(); - * if (b) - * Console.WriteLine("b is true"); - * if (!b) - * Console.WriteLine("b is false"); - * ``` - * - * the branch taken in the condition on line 2 can be recorded, and the - * recorded value will determine the branch taken in the condition on line 4. - */ - abstract predicate correlatesConditions(ConditionBlock cb1, ConditionBlock cb2, boolean inverted); - - /** Holds if control flow element `cfe` starts a split of this kind. */ - predicate startsSplit(AstNode cfe) { - this.correlatesConditions(any(ConditionBlock cb | cb.getLastNode() = cfe), _, _) - } - - /** - * Holds if basic block `bb` can reach a condition correlated with a - * split of this kind. - */ - abstract predicate canReachCorrelatedCondition(PreBasicBlock bb); - - /** Gets the callable that this Boolean split kind belongs to. */ - abstract Callable getEnclosingCallable(); - - /** Gets a textual representation of this Boolean split kind. */ - abstract string toString(); - - /** Gets the location of this Boolean split kind. */ - abstract Location getLocation(); - } - - /** - * A Boolean split that records the value of a Boolean SSA variable. - * - * For example, in - * - * ```csharp - * var b = GetB(); - * if (b) - * Console.WriteLine("b is true"); - * if (!b) - * Console.WriteLine("b is false"); - * ``` - * - * there is a Boolean split on the SSA variable for `b` at line 1. - */ - class SsaBooleanSplitSubKind extends BooleanSplitSubKind, TSsaBooleanSplitSubKind { - private PreSsa::Definition def; - - SsaBooleanSplitSubKind() { this = TSsaBooleanSplitSubKind(def) } - - /** - * Holds if condition `cb` is a read of the SSA variable in this split. - */ - private predicate defCondition(ConditionBlock cb) { cb.getLastNode() = def.getARead() } - - /** - * Holds if condition `cb` is a read of the SSA variable in this split, - * and `cb` can be reached from `read` without passing through another - * condition that reads the same SSA variable. - */ - private predicate defConditionReachableFromRead(ConditionBlock cb, AssignableRead read) { - this.defCondition(cb) and - read = cb.getLastNode() - or - exists(AssignableRead mid | this.defConditionReachableFromRead(cb, mid) | - PreSsa::adjacentReadPairSameVar(read, mid) and - not this.defCondition(read) - ) - } - - /** - * Holds if condition `cb` is a read of the SSA variable in this split, - * and `cb` can be reached from the SSA definition without passing through - * another condition that reads the same SSA variable. - */ - private predicate firstDefCondition(ConditionBlock cb) { - this.defConditionReachableFromRead(cb, def.getAFirstRead()) - } - - override predicate correlatesConditions(ConditionBlock cb1, ConditionBlock cb2, boolean inverted) { - this.firstDefCondition(cb1) and - exists(AssignableRead read1, AssignableRead read2 | - read1 = cb1.getLastNode() and - PreSsa::adjacentReadPairSameVar+(read1, read2) and - read2 = cb2.getLastNode() and - inverted = false - ) - } - - override predicate canReachCorrelatedCondition(PreBasicBlock bb) { - this.correlatesConditions(_, bb, _) and - not def.getBasicBlock() = bb - or - exists(PreBasicBlock mid | this.canReachCorrelatedCondition(mid) | - bb = mid.getAPredecessor() and - not def.getBasicBlock() = bb - ) - } - - override Callable getEnclosingCallable() { result = def.getBasicBlock().getEnclosingCallable() } - - override string toString() { result = def.getSourceVariable().toString() } - - override Location getLocation() { result = def.getLocation() } - } - - /** - * A split for elements that can reach a condition where this split determines - * the Boolean value that the condition evaluates to. For example, in - * - * ```csharp - * if (b) - * Console.WriteLine("b is true"); - * if (!b) - * Console.WriteLine("b is false"); - * ``` - * - * all control flow nodes on line 2 and line 3 have two splits: one representing - * that the condition on line 1 took the `true` branch, and one representing that - * the condition on line 1 took the `false` branch. - */ - class BooleanSplit extends Split, TBooleanSplit { - private BooleanSplitSubKind kind; - private boolean branch; - - BooleanSplit() { this = TBooleanSplit(kind, branch) } - - /** Gets the kind of this Boolean split. */ - BooleanSplitSubKind getSubKind() { result = kind } - - /** Gets the branch taken in this split. */ - boolean getBranch() { result = branch } - - override string toString() { - exists(int line | - line = kind.getLocation().getStartLine() and - result = kind.toString() + " (line " + line + "): " + branch.toString() - ) - } - } - - private int getListOrder(BooleanSplitSubKind kind) { - exists(Callable c, int r | c = kind.getEnclosingCallable() | - result = r + ExceptionHandlerSplitting::getNextListOrder() - 1 and - kind = - rank[r](BooleanSplitSubKind kind0, Location l | - kind0.getEnclosingCallable() = c and - kind0.startsSplit(_) and - l = kind0.getLocation() - | - kind0 order by l.getStartLine(), l.getStartColumn(), kind0.toString() - ) - ) - } - - int getNextListOrder() { - result = max([getListOrder(_) + 1, ExceptionHandlerSplitting::getNextListOrder()]) - } - - private class BooleanSplitKind extends SplitKind, TBooleanSplitKind { - private BooleanSplitSubKind kind; - - BooleanSplitKind() { this = TBooleanSplitKind(kind) } - - /** Gets the sub kind of this Boolean split kind. */ - BooleanSplitSubKind getSubKind() { result = kind } - - override int getListOrder() { result = getListOrder(kind) } - - override string toString() { result = kind.toString() } - } - - pragma[nomagic] - private predicate hasEntry0( - AstNode pred, AstNode succ, BooleanSplitSubKind kind, boolean b, Completion c - ) { - kind.startsSplit(pred) and - succ(pred, succ, c) and - b = c.getInnerCompletion().(BooleanCompletion).getValue() - } - - private class BooleanSplitImpl extends SplitImpl instanceof BooleanSplit { - override BooleanSplitKind getKind() { result.getSubKind() = super.getSubKind() } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - hasEntry0(pred, succ, super.getSubKind(), super.getBranch(), c) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { none() } - - private ConditionBlock getACorrelatedCondition(boolean inverted) { - super.getSubKind().correlatesConditions(_, result, inverted) - } - - /** - * Holds if this split applies to basic block `bb`, where the the last - * element of `bb` can have completion `c`. - */ - private predicate appliesToBlock(PreBasicBlock bb, Completion c) { - this.appliesTo(bb) and - exists(AstNode last | last = bb.getLastNode() | - (succ(last, _, c) or scopeLast(_, last, c)) and - // Respect the value recorded in this split for all correlated conditions - forall(boolean inverted | bb = this.getACorrelatedCondition(inverted) | - c.getInnerCompletion() instanceof BooleanCompletion - implies - c.getInnerCompletion().(BooleanCompletion).getValue() = - super.getBranch().booleanXor(inverted) - ) - ) - } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - exists(PreBasicBlock bb | this.appliesToBlock(bb, c) | - pred = bb.getLastNode() and - succ(pred, succ, c) and - // Exit this split if we can no longer reach a correlated condition - not super.getSubKind().canReachCorrelatedCondition(succ) - ) - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - exists(PreBasicBlock bb | this.appliesToBlock(bb, c) | - last = bb.getLastNode() and - scopeLast(scope, last, c) - ) - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - exists(PreBasicBlock bb, Completion c0 | this.appliesToBlock(bb, c0) | - pred = bb.getAnElement() and - this.appliesSucc(pred, succ, c) and - ( - pred = bb.getLastNode() - implies - ( - // We must still be able to reach a correlated condition to stay in this split - super.getSubKind().canReachCorrelatedCondition(succ) and - c = c0 - ) - ) - ) - } - } -} - -module LoopSplitting { - private import semmle.code.csharp.controlflow.Guards as Guards - private import PreBasicBlocks - - /** Holds if `ce` is guarded by a (non-)empty check, as specified by `v`. */ - private predicate emptinessGuarded( - Guards::Guard g, Guards::EnumerableCollectionExpr ce, - Guards::AbstractValues::EmptyCollectionValue v - ) { - exists(PreBasicBlock bb | Guards::Internal::preControls(g, bb, v) | - PreSsa::adjacentReadPairSameVar(g, ce) and - bb.getAnElement() = ce - ) - } - - /** - * A loop where the body is guaranteed to be executed at least once, and hence - * can be unrolled in the control flow graph, or where the body is guaranteed - * to never be executed, and hence can be removed from the control flow graph. - */ - abstract class AnalyzableLoopStmt extends LoopStmt { - /** Holds if the step `pred --c--> succ` should start the split. */ - abstract predicate start(AstNode pred, AstNode succ, Completion c); - - /** Holds if the step `pred --c--> succ` should stop the split. */ - abstract predicate stop(AstNode pred, AstNode succ, Completion c); - - /** - * Holds if any step `pred --c--> _` should be pruned from the control flow graph. - */ - abstract predicate pruneLoopCondition(AstNode pred, ConditionalCompletion c); - - /** - * Holds if the body is guaranteed to be executed at least once. If not, the - * body is guaranteed to never be executed. - */ - abstract predicate isUnroll(); - } - - private class AnalyzableForeachStmt extends AnalyzableLoopStmt, ForeachStmt { - Guards::AbstractValues::EmptyCollectionValue v; - - AnalyzableForeachStmt() { - /* - * We use `unique` to avoid degenerate cases like - * ```csharp - * if (xs.Length == 0) - * return; - * if (xs.Length > 0) - * return; - * foreach (var x in xs) - * .... - * ``` - * where the iterator expression `xs` is guarded by both an emptiness check - * and a non-emptiness check. - */ - - v = - unique(Guards::AbstractValues::EmptyCollectionValue v0 | - emptinessGuarded(_, this.getIterableExpr(), v0) - or - this.getIterableExpr() = v0.getAnExpr() - | - v0 - ) - } - - override predicate start(AstNode pred, AstNode succ, Completion c) { - last(this.getIterableExpr(), pred, c) and - succ = this - } - - override predicate stop(AstNode pred, AstNode succ, Completion c) { - pred = this and - succ(pred, succ, c) - } - - override predicate pruneLoopCondition(AstNode pred, ConditionalCompletion c) { - pred = this and - c = any(EmptinessCompletion ec | if v.isEmpty() then not ec.isEmpty() else ec.isEmpty()) - } - - override predicate isUnroll() { v.isNonEmpty() } - } - - /** - * A split for loops where the body is guaranteed to be executed at least once, or - * guaranteed to never be executed. For example, in - * - * ```csharp - * void M(string[] args) - * { - * if (args.Length == 0) - * return; - * foreach (var arg in args) - * System.Console.WriteLine(args); - * } - * ``` - * - * the `foreach` loop is guaranteed to be executed at least once, as a result of the - * `args.Length == 0` check. - */ - class LoopSplit extends Split, TLoopSplit { - AnalyzableLoopStmt loop; - - LoopSplit() { this = TLoopSplit(loop) } - - override string toString() { - if loop.isUnroll() - then result = "unroll (line " + loop.getLocation().getStartLine() + ")" - else result = "skip (line " + loop.getLocation().getStartLine() + ")" - } - } - - pragma[noinline] - private Callable enclosingCallable(AnalyzableLoopStmt loop) { - result = loop.getEnclosingCallable() - } - - private int getListOrder(AnalyzableLoopStmt loop) { - exists(Callable c, int r | c = enclosingCallable(loop) | - result = r + BooleanSplitting::getNextListOrder() - 1 and - loop = - rank[r](AnalyzableLoopStmt loop0, Location l | - enclosingCallable(loop0) = c and - l = loop0.getLocation() - | - loop0 order by l.getStartLine(), l.getStartColumn() - ) - ) - } - - int getNextListOrder() { - result = max([getListOrder(_) + 1, BooleanSplitting::getNextListOrder()]) - } - - private class LoopSplitKind extends SplitKind, TLoopSplitKind { - private AnalyzableLoopStmt loop; - - LoopSplitKind() { this = TLoopSplitKind(loop) } - - override int getListOrder() { result = getListOrder(loop) } - - override string toString() { result = "Unroll" } - } - - private class LoopUnrollingSplitImpl extends SplitImpl instanceof LoopSplit { - AnalyzableLoopStmt loop; - - LoopUnrollingSplitImpl() { this = TLoopSplit(loop) } - - override LoopSplitKind getKind() { result = TLoopSplitKind(loop) } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - loop.start(pred, succ, c) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { none() } - - /** - * Holds if this split applies to control flow element `pred`, where `pred` - * is a valid predecessor. - */ - private predicate appliesToPredecessor(AstNode pred, Completion c) { - this.appliesTo(pred) and - (succ(pred, _, c) or scopeLast(_, pred, c)) and - not loop.pruneLoopCondition(pred, c) - } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - this.appliesToPredecessor(pred, c) and - loop.stop(pred, succ, c) - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - this.appliesToPredecessor(last, c) and - scopeLast(scope, last, c) - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - this.appliesToPredecessor(pred, c) and - this.appliesSucc(pred, succ, c) and - not loop.stop(pred, succ, c) - } - } -} diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql b/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql index 3f4ed835fc2..1140f78de66 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql @@ -5,22 +5,6 @@ import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as Impl import semmle.code.csharp.controlflow.internal.Splitting as Splitting import Nodes -query predicate booleanNode(ElementNode e, BooleanSplit split) { split = e.getASplit() } - -class MyFinallySplitControlFlowNode extends ElementNode { - MyFinallySplitControlFlowNode() { - exists(Splitting::FinallySplitting::FinallySplitType type | - type = this.getASplit().(FinallySplit).getType() - | - not type instanceof DirectSuccessor - ) - } - - Impl::Statements::TryStmtTree getTryStmt() { this.getAstNode() = result.getAFinallyDescendant() } -} - -query predicate finallyNode(MyFinallySplitControlFlowNode f, TryStmt try) { try = f.getTryStmt() } - query predicate entryPoint(Callable c, SourceControlFlowElement cfn) { c.getEntryPoint().getASuccessor().getAstNode() = cfn } From 587901bc8aa9453df26bb9df90ee79010df4867a Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 26 Sep 2025 13:38:25 +0200 Subject: [PATCH 031/965] C#: Replace NullMaybe.ql implementation. --- .../semmle/code/csharp/dataflow/Nullness.qll | 309 +----------------- csharp/ql/src/CSI/NullMaybe.ql | 11 +- 2 files changed, 14 insertions(+), 306 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 8d19f9720d8..1b527623db5 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -20,7 +20,6 @@ import csharp private import ControlFlow private import internal.CallableReturns -private import semmle.code.csharp.commons.Assertions private import semmle.code.csharp.controlflow.Guards as G private import semmle.code.csharp.controlflow.Guards::AbstractValues private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl @@ -119,49 +118,12 @@ private predicate nonNullDef(Ssa::ExplicitDefinition def) { } /** - * Holds if the `i`th node of basic block `bb` is a dereference `d` of SSA - * definition `def`. + * Holds if the `node` is a dereference `d` of SSA definition `def`. */ -private predicate dereferenceAt(BasicBlock bb, int i, Ssa::Definition def, Dereference d) { - d = def.getAReadAtNode(bb.getNode(i)) -} - private predicate dereferenceAt(ControlFlow::Node node, Ssa::Definition def, Dereference d) { d = def.getAReadAtNode(node) } -/** - * Holds if `e` having abstract value `vExpr` implies that SSA definition `def` - * has abstract value `vDef`. - */ -private predicate exprImpliesSsaDef( - G::Guard e, G::AbstractValue vExpr, Ssa::Definition def, G::AbstractValue vDef -) { - vExpr = e.getAValue() and - vExpr = vDef and - ( - e = def.getARead() - or - e = def.(Ssa::ExplicitDefinition).getADefinition().getTargetAccess() - ) - or - exists(Expr e0, G::AbstractValue vExpr0 | - exprImpliesSsaDef(e0, vExpr0, def, vDef) and - G::Internal::impliesStep(e, vExpr, e0, vExpr0) - ) -} - -/** - * Gets an element that tests whether a given SSA definition, `def`, is - * `null` or not. - * - * If the returned element takes the `s` branch, then `def` is guaranteed to be - * `null` if `nv.isNull()` holds, and non-`null` otherwise. - */ -private ControlFlowElement getANullCheck(Ssa::Definition def, ConditionalSuccessor s, NullValue nv) { - exists(Expr e, G::AbstractValue v | v.branch(result, s, e) | exprImpliesSsaDef(e, v, def, nv)) -} - private predicate isMaybeNullArgument(Ssa::ImplicitParameterDefinition def, MaybeNullExpr arg) { exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p | p = def.getParameter() @@ -263,7 +225,7 @@ private predicate defMaybeNull( ) or // A variable of nullable type may be null - exists(Dereference d | dereferenceAt(_, _, def, d) | + exists(Dereference d | dereferenceAt(_, def, d) | node = def.getControlFlowNode() and d.hasNullableType() and not def instanceof Ssa::PhiNode and @@ -273,219 +235,6 @@ private predicate defMaybeNull( ) } -pragma[noinline] -private predicate sourceVariableMaybeNull(Ssa::SourceVariable v) { - defMaybeNull(v.getAnSsaDefinition(), _, _, _) -} - -pragma[noinline] -private predicate defNullImpliesStep0( - Ssa::SourceVariable v, Ssa::Definition def1, BasicBlock bb1, BasicBlock bb2 -) { - sourceVariableMaybeNull(v) and - def1.getSourceVariable() = v and - def1.isLiveAtEndOfBlock(bb1) and - bb2 = bb1.getASuccessor() -} - -/** - * Holds if `def1` being `null` in basic block `bb1` implies that `def2` might - * be `null` in basic block `bb2`. The SSA definitions share the same source - * variable. - */ -private predicate defNullImpliesStep( - Ssa::Definition def1, BasicBlock bb1, Ssa::Definition def2, BasicBlock bb2 -) { - exists(Ssa::SourceVariable v | defNullImpliesStep0(v, def1, bb1, bb2) | - def2.(Ssa::PhiNode).getAnInput() = def1 and - bb2 = def2.getBasicBlock() - or - def2 = def1 and - not exists(Ssa::PhiNode phi | - phi.getSourceVariable() = v and - bb2 = phi.getBasicBlock() - ) - ) and - not exists(ConditionalSuccessor s, NullValue nv | - bb1.getLastNode() = getANullCheck(def1, s, nv).getAControlFlowNode() - | - bb2 = bb1.getASuccessor(s) and - nv.isNonNull() - ) -} - -/** - * The transitive closure of `defNullImpliesStep()` originating from `defMaybeNull()`. - * That is, those basic blocks for which the SSA definition is suspected of being `null`. - */ -private predicate defMaybeNullInBlock(Ssa::Definition def, BasicBlock bb) { - defMaybeNull(def, _, _, _) and - bb = def.getBasicBlock() - or - exists(BasicBlock mid, Ssa::Definition midDef | defMaybeNullInBlock(midDef, mid) | - defNullImpliesStep(midDef, mid, def, bb) - ) -} - -/** - * Holds if `v` is a source variable that might reach a potential `null` - * dereference. - */ -private predicate nullDerefCandidateVariable(Ssa::SourceVariable v) { - exists(Ssa::Definition def, BasicBlock bb | dereferenceAt(bb, _, def, _) | - defMaybeNullInBlock(def, bb) and - v = def.getSourceVariable() - ) -} - -private predicate succStep(PathNode pred, Ssa::Definition def, BasicBlock bb) { - defNullImpliesStep(pred.getSsaDefinition(), pred.getBasicBlock(), def, bb) -} - -private predicate succNullArgument(SourcePathNode pred, Ssa::Definition def, BasicBlock bb) { - pred = TSourcePathNode(def, _, _, true) and - bb = def.getBasicBlock() -} - -private predicate succSourceSink(SourcePathNode source, Ssa::Definition def, BasicBlock bb) { - source = TSourcePathNode(def, _, _, false) and - bb = def.getBasicBlock() -} - -private newtype TPathNode = - TSourcePathNode(Ssa::Definition def, string msg, Element reason, boolean isNullArgument) { - nullDerefCandidateVariable(def.getSourceVariable()) and - defMaybeNull(def, _, msg, reason) and - if isMaybeNullArgument(def, reason) then isNullArgument = true else isNullArgument = false - } or - TInternalPathNode(Ssa::Definition def, BasicBlock bb) { - succStep(_, def, bb) - or - succNullArgument(_, def, bb) - } or - TSinkPathNode(Ssa::Definition def, BasicBlock bb, int i, Dereference d) { - dereferenceAt(bb, i, def, d) and - ( - succStep(_, def, bb) - or - succNullArgument(_, def, bb) - or - succSourceSink(_, def, bb) - ) - } - -/** - * An SSA definition, which may be `null`, augmented with at basic block which can - * be reached without passing through a `null` check. - */ -abstract class PathNode extends TPathNode { - /** Gets the SSA definition. */ - abstract Ssa::Definition getSsaDefinition(); - - /** Gets the basic block that can be reached without passing through a `null` check. */ - abstract BasicBlock getBasicBlock(); - - /** Gets another node that can be reached from this node. */ - abstract PathNode getASuccessor(); - - /** Gets a textual representation of this node. */ - abstract string toString(); - - /** Gets the location of this node. */ - abstract Location getLocation(); -} - -private class SourcePathNode extends PathNode, TSourcePathNode { - private Ssa::Definition def; - private string msg; - private Element reason; - private boolean isNullArgument; - - SourcePathNode() { this = TSourcePathNode(def, msg, reason, isNullArgument) } - - override Ssa::Definition getSsaDefinition() { result = def } - - override BasicBlock getBasicBlock() { - isNullArgument = false and - result = def.getBasicBlock() - } - - string getMessage() { result = msg } - - Element getReason() { result = reason } - - override PathNode getASuccessor() { - succStep(this, result.getSsaDefinition(), result.getBasicBlock()) - or - succNullArgument(this, result.getSsaDefinition(), result.getBasicBlock()) - or - result instanceof SinkPathNode and - succSourceSink(this, result.getSsaDefinition(), result.getBasicBlock()) - } - - override string toString() { - if isNullArgument = true then result = reason.toString() else result = def.toString() - } - - override Location getLocation() { - if isNullArgument = true then result = reason.getLocation() else result = def.getLocation() - } -} - -private class InternalPathNode extends PathNode, TInternalPathNode { - private Ssa::Definition def; - private BasicBlock bb; - - InternalPathNode() { this = TInternalPathNode(def, bb) } - - override Ssa::Definition getSsaDefinition() { result = def } - - override BasicBlock getBasicBlock() { result = bb } - - override PathNode getASuccessor() { - succStep(this, result.getSsaDefinition(), result.getBasicBlock()) - } - - override string toString() { result = bb.getFirstNode().toString() } - - override Location getLocation() { result = bb.getFirstNode().getLocation() } -} - -private class SinkPathNode extends PathNode, TSinkPathNode { - private Ssa::Definition def; - private BasicBlock bb; - private int i; - private Dereference d; - - SinkPathNode() { this = TSinkPathNode(def, bb, i, d) } - - override Ssa::Definition getSsaDefinition() { result = def } - - override BasicBlock getBasicBlock() { result = bb } - - override PathNode getASuccessor() { none() } - - Dereference getDereference() { result = d } - - override string toString() { result = d.toString() } - - override Location getLocation() { result = d.getLocation() } -} - -/** - * Provides the query predicates needed to include a graph in a path-problem query - * for `Dereference::is[First]MaybeNull()`. - */ -module PathGraph { - query predicate nodes(PathNode n) { n.getASuccessor*() instanceof SinkPathNode } - - query predicate edges(PathNode pred, PathNode succ) { - nodes(pred) and - nodes(succ) and - succ = pred.getASuccessor() - } -} - private Ssa::Definition getAPseudoInput(Ssa::Definition def) { result = def.(Ssa::PhiNode).getAnInput() } @@ -499,21 +248,15 @@ private Ssa::Definition getAnUltimateDefinition(Ssa::Definition def) { /** * Holds if SSA definition `def` can reach a read at `cfn`, without passing - * through an intermediate dereference that always (`always = true`) or - * maybe (`always = false`) throws a null reference exception. + * through an intermediate dereference that always throws a null reference + * exception. */ -private predicate defReaches(Ssa::Definition def, ControlFlow::Node cfn, boolean always) { - exists(def.getAFirstReadAtNode(cfn)) and - (always = true or always = false) +private predicate defReaches(Ssa::Definition def, ControlFlow::Node cfn) { + exists(def.getAFirstReadAtNode(cfn)) or - exists(ControlFlow::Node mid | defReaches(def, mid, always) | + exists(ControlFlow::Node mid | defReaches(def, mid) | SsaImpl::adjacentReadPairSameVar(_, mid, cfn) and - not mid = - any(Dereference d | - if always = true - then d.isAlwaysNull(def.getSourceVariable()) - else d.isMaybeNull(def, _, _, _, _) - ).getAControlFlowNode() + not mid = any(Dereference d | d.isAlwaysNull(def.getSourceVariable())).getAControlFlowNode() ) } @@ -534,7 +277,7 @@ private module NullnessConfig implements Cf::ControlFlowReachability::ConfigSig private module NullnessFlow = Cf::ControlFlowReachability::Flow; -predicate debug_nullness_new(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { +predicate maybeNullDeref(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { exists( Ssa::Definition origin, Ssa::Definition ssa, ControlFlow::Node src, ControlFlow::Node sink | @@ -546,11 +289,6 @@ predicate debug_nullness_new(Dereference d, Ssa::SourceVariable v, string msg, E ) } -predicate debug_nullness_orig(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { - d.isFirstMaybeNull(v.getAnSsaDefinition(), _, _, msg, reason) and - not d instanceof NonNullExpr -} - /** * An expression that dereferences a value. That is, an expression that may * result in a `NullReferenceException` if the value is `null`. @@ -645,33 +383,6 @@ class Dereference extends G::DereferenceableExpr { */ predicate isFirstAlwaysNull(Ssa::SourceVariable v) { this.isAlwaysNull(v) and - defReaches(v.getAnSsaDefinition(), this.getAControlFlowNode(), true) - } - - /** - * Holds if this expression dereferences SSA definition `def`, which may - * be `null`. - */ - predicate isMaybeNull( - Ssa::Definition def, SourcePathNode source, SinkPathNode sink, string msg, Element reason - ) { - source.getASuccessor*() = sink and - msg = source.getMessage() and - reason = source.getReason() and - def = sink.getSsaDefinition() and - this = sink.getDereference() and - not this.isAlwaysNull(def.getSourceVariable()) - } - - /** - * Holds if this expression dereferences SSA definition `def`, which may - * be `null`, and this expression can be reached from `def` without passing - * through another such dereference. - */ - predicate isFirstMaybeNull( - Ssa::Definition def, SourcePathNode source, SinkPathNode sink, string msg, Element reason - ) { - this.isMaybeNull(def, source, sink, msg, reason) and - defReaches(def, this.getAControlFlowNode(), false) + defReaches(v.getAnSsaDefinition(), this.getAControlFlowNode()) } } diff --git a/csharp/ql/src/CSI/NullMaybe.ql b/csharp/ql/src/CSI/NullMaybe.ql index 67873ebb291..f78a8d89bcf 100644 --- a/csharp/ql/src/CSI/NullMaybe.ql +++ b/csharp/ql/src/CSI/NullMaybe.ql @@ -2,7 +2,7 @@ * @name Dereferenced variable may be null * @description Dereferencing a variable whose value may be 'null' may cause a * 'NullReferenceException'. - * @kind path-problem + * @kind problem * @problem.severity warning * @precision high * @id cs/dereferenced-value-may-be-null @@ -15,10 +15,7 @@ import csharp import semmle.code.csharp.dataflow.Nullness -import PathGraph -from - Dereference d, PathNode source, PathNode sink, Ssa::SourceVariable v, string msg, Element reason -where d.isFirstMaybeNull(v.getAnSsaDefinition(), source, sink, msg, reason) -select d, source, sink, "Variable $@ may be null at this access " + msg + ".", v, v.toString(), - reason, "this" +from Dereference d, Ssa::SourceVariable v, string msg, Element reason +where maybeNullDeref(d, v, msg, reason) +select d, "Variable $@ may be null at this access " + msg + ".", v, v.toString(), reason, "this" From 64810f6fb5dcbacaca4d0cc32c3682c5657ed650 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 26 Sep 2025 16:28:32 +0200 Subject: [PATCH 032/965] C#: Improve ConstantCondition.ql --- .../Control-Flow/ConstantCondition.ql | 82 +++++++++++++++- .../controlflow/queries/ConstantCondition.qll | 93 +++++++++++++++++++ 2 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index eb71239e0fc..c1590d002e8 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -16,16 +16,90 @@ import csharp import semmle.code.csharp.commons.Assertions import semmle.code.csharp.commons.Constants +import semmle.code.csharp.controlflow.BasicBlocks +import semmle.code.csharp.controlflow.Guards as Guards +import codeql.controlflow.queries.ConstantCondition as ConstCond + +module ConstCondInput implements ConstCond::InputSig { + class SsaDefinition = Ssa::Definition; + + class GuardValue = Guards::GuardValue; + + class Guard = Guards::Guards::Guard; + + predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v) { + Guards::Guards::ssaControlsBranchEdge(def, bb1, bb2, v) + } + + import Guards::Guards::InternalUtil +} + +module ConstCondImpl = ConstCond::Make; + +predicate nullCheck(Expr e, boolean direct) { + exists(QualifiableExpr qe | qe.isConditional() and qe.getQualifier() = e and direct = true) + or + exists(NullCoalescingExpr nce | nce.getLeftOperand() = e and direct = true) + or + exists(ConditionalExpr ce | ce.getThen() = e or ce.getElse() = e | + nullCheck(ce, _) and direct = false + ) +} + +predicate constantGuard( + Guards::Guards::Guard g, string msg, Guards::Guards::Guard reason, string reasonMsg +) { + ConstCondImpl::problems(g, msg, reason, reasonMsg) and + // conditional qualified expressions sit at an akward place in the CFG, which + // leads to FPs + not g.(QualifiableExpr).getQualifier() = reason and + // and if they're extension method calls, the syntactic qualifier is actually argument 0 + not g.(ExtensionMethodCall).getArgument(0) = reason and + // if a logical connective is constant, one of its operands is constant, so + // we report that instead + not g instanceof LogicalNotExpr and + not g instanceof LogicalAndExpr and + not g instanceof LogicalOrExpr and + // if a logical connective is a reason for another condition to be constant, + // then one of its operands is a more precise reason + not reason instanceof LogicalNotExpr and + not reason instanceof LogicalAndExpr and + not reason instanceof LogicalOrExpr and + // don't report double-checked locking + not exists(LockStmt ls, BasicBlock bb | + bb = ls.getBasicBlock() and + reason.getBasicBlock().strictlyDominates(bb) and + bb.dominates(g.getBasicBlock()) + ) and + // exclude indirect null checks like `x` in `(b ? x : null)?.Foo()` + not nullCheck(g, false) +} /** A constant condition. */ -abstract class ConstantCondition extends Expr { +abstract class ConstantCondition extends Guards::Guards::Guard { /** Gets the alert message for this constant condition. */ abstract string getMessage(); + predicate hasReason(Guards::Guards::Guard reason, string reasonMsg) { + // dummy value, overridden when message has a placeholder + reason = this and reasonMsg = "dummy" + } + /** Holds if this constant condition is white-listed. */ predicate isWhiteListed() { none() } } +/** A constant guard. */ +class ConstantGuard extends ConstantCondition { + ConstantGuard() { constantGuard(this, _, _, _) } + + override string getMessage() { constantGuard(this, result, _, _) } + + override predicate hasReason(Guards::Guards::Guard reason, string reasonMsg) { + constantGuard(this, _, reason, reasonMsg) + } +} + /** A constant Boolean condition. */ class ConstantBooleanCondition extends ConstantCondition { boolean b; @@ -111,6 +185,7 @@ class ConstantMatchingCondition extends ConstantCondition { boolean b; ConstantMatchingCondition() { + this instanceof Expr and forex(ControlFlow::Node cfn | cfn = this.getAControlFlowNode() | exists(ControlFlow::MatchingSuccessor t | exists(cfn.getASuccessorByType(t)) | b = t.getValue() @@ -138,9 +213,10 @@ class ConstantMatchingCondition extends ConstantCondition { } } -from ConstantCondition c, string msg +from ConstantCondition c, string msg, Guards::Guards::Guard reason, string reasonMsg where msg = c.getMessage() and + c.hasReason(reason, reasonMsg) and not c.isWhiteListed() and not isExprInAssertion(c) -select c, msg +select c, msg, reason, reasonMsg diff --git a/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll b/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll new file mode 100644 index 00000000000..ea1c5a424f8 --- /dev/null +++ b/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll @@ -0,0 +1,93 @@ +/** + * Provides a query for detecting constant conditions. + */ +overlay[local?] +module; + +private import codeql.controlflow.BasicBlock as BB +private import codeql.util.Location + +private signature class TypSig; + +signature module InputSig { + class SsaDefinition; + + /** An abstract value that a `Guard` may evaluate to. */ + class GuardValue { + /** Gets a textual representation of this value. */ + string toString(); + + /** + * Gets the dual value. Examples of dual values include: + * - null vs. not null + * - true vs. false + * - evaluating to a specific value vs. evaluating to any other value + * - throwing an exception vs. not throwing an exception + */ + GuardValue getDualValue(); + + /** Holds if this value represents throwing an exception. */ + predicate isThrowsException(); + } + + /** + * A guard. This may be any expression whose value determines subsequent + * control flow. It may also be a switch case, which as a guard is considered + * to evaluate to either true or false depending on whether the case matches. + */ + class Guard { + /** Gets a textual representation of this guard. */ + string toString(); + + /** + * Holds if this guard evaluating to `v` corresponds to taking the edge + * from `bb1` to `bb2`. For ordinary conditional branching this guard is + * the last node in `bb1`, but for switch case matching it is the switch + * expression, which may either be in `bb1` or an earlier basic block. + */ + predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue v); + } + + /** + * Holds if `def` evaluating to `v` controls the control-flow branch + * edge from `bb1` to `bb2`. That is, following the edge from `bb1` to + * `bb2` implies that `def` evaluated to `v`. + */ + predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v); + + bindingset[gv1, gv2] + predicate disjointValues(GuardValue gv1, GuardValue gv2); +} + +module Make Cfg, InputSig Input> { + private import Cfg + private import Input + + private predicate ssaControlsGuardEdge( + SsaDefinition def, GuardValue v, Guard g, BasicBlock bb1, BasicBlock bb2, GuardValue gv + ) { + g.hasValueBranchEdge(bb1, bb2, gv) and + ssaControlsBranchEdge(def, bb1, bb2, v) + } + + query predicate problems(Guard g, string msg, Guard reason, string reasonMsg) { + exists( + BasicBlock bb, GuardValue gv, GuardValue dual, SsaDefinition def, GuardValue v1, + GuardValue v2, BasicBlock bb1, BasicBlock bb2 + | + // If `g` in `bb` evaluates to `gv` then `def` has value `v1`, + ssaControlsGuardEdge(def, v1, g, bb, _, gv) and + dual = gv.getDualValue() and + not gv.isThrowsException() and + not dual.isThrowsException() and + // but `def` controls `bb` with value `v2` via the guard `reason` taking the branch `bb1` to `bb2`, + ssaControlsGuardEdge(def, v2, reason, bb1, bb2, _) and + dominatingEdge(bb1, bb2) and + bb2.dominates(bb) and + // and `v1` and `v2` are disjoint so `g` cannot be `gv`. + disjointValues(v1, v2) and + msg = "Condition is always " + dual + " because of $@." and + reasonMsg = reason.toString() + ) + } +} From df6172b1f3c6f0b52ef08dc5c805ce0b91f48a31 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 2 Oct 2025 13:54:49 +0200 Subject: [PATCH 033/965] C#: Update nullness qltest --- csharp/ql/test/query-tests/Nullness/D.cs | 62 +- csharp/ql/test/query-tests/Nullness/E.cs | 78 +- .../Nullness/EqualityCheck.expected | 12 +- .../query-tests/Nullness/NullAlways.expected | 2 - .../query-tests/Nullness/NullCheck.expected | 10 +- .../query-tests/Nullness/NullMaybe.expected | 1034 +---------------- 6 files changed, 149 insertions(+), 1049 deletions(-) diff --git a/csharp/ql/test/query-tests/Nullness/D.cs b/csharp/ql/test/query-tests/Nullness/D.cs index ffc4fd193c7..a465a434be6 100644 --- a/csharp/ql/test/query-tests/Nullness/D.cs +++ b/csharp/ql/test/query-tests/Nullness/D.cs @@ -14,7 +14,7 @@ public class D public void Caller() { Callee1(new object()); - Callee1(null); // $ Source[cs/dereferenced-value-may-be-null] + Callee1(null); Callee2(new object()); } @@ -23,7 +23,7 @@ public class D param.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } - public void Callee2(object param) // $ Source[cs/dereferenced-value-may-be-null] + public void Callee2(object param) { if (param != null) { @@ -55,24 +55,24 @@ public class D if ((2 > 1 && o4 != null) != false) o4.ToString(); // GOOD - var o5 = (o4 != null) ? "" : null; // $ Source[cs/dereferenced-value-may-be-null] + var o5 = (o4 != null) ? "" : null; if (o5 != null) o4.ToString(); // GOOD if (o4 != null) - o5.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + o5.ToString(); // GOOD var o6 = maybe ? null : ""; if (!CustomIsNull(o6)) o6.ToString(); // GOOD - var o7 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] + var o7 = maybe ? null : ""; var ok = o7 != null && 2 > 1; if (ok) o7.ToString(); // GOOD else o7.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] - var o8 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] + var o8 = maybe ? null : ""; int track = o8 == null ? 42 : 1 + 1; if (track == 2) o8.ToString(); // GOOD @@ -86,7 +86,7 @@ public class D public void Deref(int i) { - int[] xs = maybe ? null : new int[2]; // $ Source[cs/dereferenced-value-may-be-null] + int[] xs = maybe ? null : new int[2]; if (i > 1) xs[0] = 5; // $ Alert[cs/dereferenced-value-may-be-null] @@ -122,7 +122,7 @@ public class D x.ToString(); // GOOD } - public void LengthGuard(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null] + public void LengthGuard(int[] a, int[] b) { int alen = a == null ? 0 : a.Length; // GOOD int blen = b == null ? 0 : b.Length; // GOOD @@ -146,7 +146,7 @@ public class D } } - public void MissedGuard(object obj) // $ Source[cs/dereferenced-value-may-be-null] + public void MissedGuard(object obj) { obj.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] var x = obj != null ? 1 : 0; @@ -160,7 +160,7 @@ public class D public void Exceptions() { - object obj = null; // $ Source[cs/dereferenced-value-may-be-null] + object obj = null; try { obj = MkMaybe(); @@ -237,16 +237,16 @@ public class D if (flag) o.ToString(); // GOOD - o = null; // $ Source[cs/dereferenced-value-may-be-null] + o = null; var other = maybe ? null : ""; if (other == null) o = ""; if (other != null) o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] (always - but reported as maybe) else - o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + o.ToString(); // GOOD - var o2 = (num < 0) ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] + var o2 = (num < 0) ? null : ""; if (num < 0) o2 = ""; else @@ -255,7 +255,7 @@ public class D public void TrackingVariable(int[] a) { - object o = null; // $ Source[cs/dereferenced-value-may-be-null] + object o = null; object other = null; if (maybe) { @@ -264,9 +264,9 @@ public class D } if (other is string) - o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + o.ToString(); // GOOD - o = null; // $ Source[cs/dereferenced-value-may-be-null] + o = null; int count = 0; var found = false; for (var i = 0; i < a.Length; i++) @@ -280,7 +280,7 @@ public class D } if (a[i] > 10000) { - o = null; // $ Source[cs/dereferenced-value-may-be-null] + o = null; count = 0; if (2 > i) { } found = false; @@ -291,17 +291,17 @@ public class D o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (found) - o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + o.ToString(); // GOOD - object prev = null; // $ Source[cs/dereferenced-value-may-be-null] + object prev = null; for (var i = 0; i < a.Length; ++i) { if (i != 0) - prev.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + prev.ToString(); // GOOD prev = a[i]; } - string s = null; // $ Source[cs/dereferenced-value-may-be-null] + string s = null; { var s_null = true; foreach (var i in a) @@ -310,10 +310,10 @@ public class D s = "" + a; } if (!s_null) - s.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + s.ToString(); // GOOD } - object r = null; // $ Source[cs/dereferenced-value-may-be-null] + object r = null; var stat = MyStatus.INIT; while (stat == MyStatus.INIT && stat != MyStatus.READY) { @@ -321,7 +321,7 @@ public class D if (stat == MyStatus.INIT) stat = MyStatus.READY; } - r.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + r.ToString(); // GOOD } public enum MyStatus @@ -348,7 +348,7 @@ public class D public void LoopCorr(int iters) { - int[] a = null; // $ Source[cs/dereferenced-value-may-be-null] + int[] a = null; if (iters > 0) a = new int[iters]; @@ -357,13 +357,13 @@ public class D if (iters > 0) { - string last = null; // $ Source[cs/dereferenced-value-may-be-null] + string last = null; for (var i = 0; i < iters; i++) last = "abc"; last.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } - int[] b = maybe ? null : new int[iters]; // $ Source[cs/dereferenced-value-may-be-null] + int[] b = maybe ? null : new int[iters]; if (iters > 0 && (b == null || b.Length < iters)) throw new Exception(); @@ -385,7 +385,7 @@ public class D ioe.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } - public void LengthGuard2(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null] + public void LengthGuard2(int[] a, int[] b) { int alen = a == null ? 0 : a.Length; // GOOD int sum = 0; @@ -402,13 +402,13 @@ public class D i = -3; } - public void CorrConds2(object x, object y) // $ Source[cs/dereferenced-value-may-be-null] + public void CorrConds2(object x, object y) { if ((x != null && y == null) || (x == null && y != null)) return; if (x != null) - y.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + y.ToString(); // GOOD if (y != null) - x.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + x.ToString(); // GOOD } } diff --git a/csharp/ql/test/query-tests/Nullness/E.cs b/csharp/ql/test/query-tests/Nullness/E.cs index ef588699780..e6a8066d9a7 100644 --- a/csharp/ql/test/query-tests/Nullness/E.cs +++ b/csharp/ql/test/query-tests/Nullness/E.cs @@ -6,9 +6,9 @@ public class E { public void Ex1(long[][][] a1, int ix, int len) { - long[][] a2 = null; // $ Source[cs/dereferenced-value-may-be-null] + long[][] a2 = null; var haveA2 = ix < len && (a2 = a1[ix]) != null; - long[] a3 = null; // $ Source[cs/dereferenced-value-may-be-null] + long[] a3 = null; var haveA3 = haveA2 && (a3 = a2[ix]) != null; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (haveA3) a3[0] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] @@ -20,7 +20,7 @@ public class E var s2 = (s1 == null) ? null : ""; if (s2 == null) { - s1 = y ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] + s1 = y ? null : ""; s2 = (s1 == null) ? null : ""; } if (s2 != null) @@ -32,7 +32,7 @@ public class E string last = null; foreach (var s in new string[] { "aa", "bb" }) last = s; - last.ToString(); // GOOD + last.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] last = null; if (ss.Any()) @@ -40,7 +40,7 @@ public class E foreach (var s in ss) last = s; - last.ToString(); // GOOD + last.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } @@ -48,7 +48,7 @@ public class E { int index = 0; var result = new List>(); - List slice = null; // $ Source[cs/dereferenced-value-may-be-null] + List slice = null; var iter = list.GetEnumerator(); while (iter.MoveNext()) { @@ -63,7 +63,7 @@ public class E } } - public void Ex5(bool hasArr, int[] arr) // $ Source[cs/dereferenced-value-may-be-null] + public void Ex5(bool hasArr, int[] arr) { int arrLen = 0; if (hasArr) @@ -104,7 +104,7 @@ public class E public void Ex7(int[] arr1) { - int[] arr2 = null; // $ Source[cs/dereferenced-value-may-be-null] + int[] arr2 = null; if (arr1.Length > 0) arr2 = new int[arr1.Length]; @@ -122,7 +122,7 @@ public class E int j = 0; while (!stop && j < lim) { - int step = (j * obj.GetHashCode()) % 10; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + int step = (j * obj.GetHashCode()) % 10; // GOOD if (step == 0) { obj.ToString(); // GOOD @@ -134,7 +134,7 @@ public class E } else { - obj = null; // $ Source[cs/dereferenced-value-may-be-null] + obj = null; } continue; } @@ -149,17 +149,17 @@ public class E { return; } - object obj2 = obj1; // $ Source[cs/dereferenced-value-may-be-null] + object obj2 = obj1; if (obj2 != null && obj2.GetHashCode() % 5 > 2) { obj2.ToString(); // GOOD cond = true; } if (cond) - obj2.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + obj2.ToString(); // GOOD } - public void Ex10(int[] a) // $ Source[cs/dereferenced-value-may-be-null] + public void Ex10(int[] a) { int n = a == null ? 0 : a.Length; for (var i = 0; i < n; i++) @@ -170,12 +170,12 @@ public class E } } - public void Ex11(object obj, bool b1) // $ Source[cs/dereferenced-value-may-be-null] + public void Ex11(object obj, bool b1) { bool b2 = obj == null ? false : b1; if (b2 == null) { - obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + obj.ToString(); // GOOD } if (obj == null) { @@ -183,11 +183,11 @@ public class E } if (b1 == null) { - obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + obj.ToString(); // GOOD } } - public void Ex12(object o) // $ Source[cs/dereferenced-value-may-be-null] + public void Ex12(object o) { var i = o.GetHashCode(); // $ Alert[cs/dereferenced-value-may-be-null] var s = o?.ToString(); @@ -195,12 +195,12 @@ public class E public void Ex13(bool b) { - var o = b ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] - o.M1(); // GOOD + var o = b ? null : ""; + o.M1(); // GOOD (because M1 doesn't deref o) if (b) o.M2(); // $ Alert[cs/dereferenced-value-may-be-null] else - o.Select(x => x); // $ Alert[cs/dereferenced-value-may-be-null] + o.Select(x => x); // GOOD } public int Ex14(string s) @@ -214,28 +214,28 @@ public class E { var x = ""; if (b) - x = null; // $ Source[cs/dereferenced-value-may-be-null] + x = null; x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] if (b) - x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] + x.ToString(); // dominated by prior deref, i.e. not reported } public void Ex16(bool b) { var x = ""; if (b) - x = null; // $ Source[cs/dereferenced-value-may-be-null] + x = null; if (b) - x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] - x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] + x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] + x.ToString(); // "dominated" by prior deref, i.e. not reported } - public int Ex17(int? i) // $ Source[cs/dereferenced-value-may-be-null] + public int Ex17(int? i) { return i.Value; // $ Alert[cs/dereferenced-value-may-be-null] } - public int Ex18(int? i) // $ Source[cs/dereferenced-value-may-be-null] + public int Ex18(int? i) { return (int)i; // $ Alert[cs/dereferenced-value-may-be-null] } @@ -280,7 +280,7 @@ public class E { if (b) b.ToString(); - var o = Make(); // $ Source[cs/dereferenced-value-may-be-null] + var o = Make(); o?.ToString(); o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] if (b) @@ -298,7 +298,7 @@ public class E public void Ex25(object o) { - var s = o as string; // $ Source[cs/dereferenced-value-may-be-null] + var s = o as string; s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } @@ -339,13 +339,13 @@ public class E static void Ex30(string s, object o) { - var x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null] + var x = s ?? o as string; x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } static void Ex31(string s, object o) { - dynamic x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null] + dynamic x = s ?? o as string; x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } @@ -371,19 +371,19 @@ public class E { if (o is string) { - var s = o as string; // $ Source[cs/dereferenced-value-may-be-null] + var s = o as string; return s.Length; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } return -1; } - static bool Ex37(E e1, E e2) // $ Source[cs/dereferenced-value-may-be-null] + static bool Ex37(E e1, E e2) { if ((e1 == null && e2 != null) || (e1 != null && e2 == null)) return false; if (e1 == null && e2 == null) return true; - return e1.Long == e2.Long; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + return e1.Long == e2.Long; // GOOD } int Ex38(int? i) @@ -432,24 +432,24 @@ public class E return @is.Any(); } - static void Ex45(string s) // $ Source[cs/dereferenced-value-may-be-null] + static void Ex45(string s, int i) { - if (s is null) + if (i == 0 && s is null) { s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } - if (s is not not null) + if (i == 1 && s is not not null) { s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] MISSING: Alert[cs/dereferenced-value-is-always-null] } - if (s is not null) + if (i == 2 && s is not null) { s.ToString(); // GOOD } - if (s is object) + if (i == 3 && s is object) { s.ToString(); // GOOD } diff --git a/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected b/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected index 9e66a5bccd1..7bb568f695a 100644 --- a/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected @@ -244,8 +244,16 @@ | E.cs:423:33:423:44 | ... == ... | true | E.cs:423:38:423:44 | access to property Value | E.cs:423:33:423:33 | access to parameter j | | E.cs:430:34:430:45 | ... == ... | true | E.cs:430:34:430:34 | access to parameter j | E.cs:430:39:430:45 | access to property Value | | E.cs:430:34:430:45 | ... == ... | true | E.cs:430:39:430:45 | access to property Value | E.cs:430:34:430:34 | access to parameter j | -| E.cs:437:13:437:21 | ... is ... | true | E.cs:437:13:437:13 | access to parameter s | E.cs:437:18:437:21 | null | -| E.cs:437:13:437:21 | ... is ... | true | E.cs:437:18:437:21 | null | E.cs:437:13:437:13 | access to parameter s | +| E.cs:437:13:437:18 | ... == ... | true | E.cs:437:13:437:13 | access to parameter i | E.cs:437:18:437:18 | 0 | +| E.cs:437:13:437:18 | ... == ... | true | E.cs:437:18:437:18 | 0 | E.cs:437:13:437:13 | access to parameter i | +| E.cs:437:23:437:31 | ... is ... | true | E.cs:437:23:437:23 | access to parameter s | E.cs:437:28:437:31 | null | +| E.cs:437:23:437:31 | ... is ... | true | E.cs:437:28:437:31 | null | E.cs:437:23:437:23 | access to parameter s | +| E.cs:442:13:442:18 | ... == ... | true | E.cs:442:13:442:13 | access to parameter i | E.cs:442:18:442:18 | 1 | +| E.cs:442:13:442:18 | ... == ... | true | E.cs:442:18:442:18 | 1 | E.cs:442:13:442:13 | access to parameter i | +| E.cs:447:13:447:18 | ... == ... | true | E.cs:447:13:447:13 | access to parameter i | E.cs:447:18:447:18 | 2 | +| E.cs:447:13:447:18 | ... == ... | true | E.cs:447:18:447:18 | 2 | E.cs:447:13:447:13 | access to parameter i | +| E.cs:452:13:452:18 | ... == ... | true | E.cs:452:13:452:13 | access to parameter i | E.cs:452:18:452:18 | 3 | +| E.cs:452:13:452:18 | ... == ... | true | E.cs:452:18:452:18 | 3 | E.cs:452:13:452:13 | access to parameter i | | Forwarding.cs:59:13:59:21 | ... == ... | true | Forwarding.cs:59:13:59:13 | access to parameter o | Forwarding.cs:59:18:59:21 | null | | Forwarding.cs:59:13:59:21 | ... == ... | true | Forwarding.cs:59:18:59:21 | null | Forwarding.cs:59:13:59:13 | access to parameter o | | Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | true | Forwarding.cs:78:32:78:32 | access to parameter o | Forwarding.cs:78:35:78:38 | null | diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.expected b/csharp/ql/test/query-tests/Nullness/NullAlways.expected index e2e594b2e2c..f432be31d5a 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlways.expected +++ b/csharp/ql/test/query-tests/Nullness/NullAlways.expected @@ -31,8 +31,6 @@ | D.cs:222:13:222:14 | access to local variable o4 | Variable $@ is always null at this dereference. | D.cs:220:13:220:14 | o4 | o4 | | D.cs:385:13:385:15 | access to local variable ioe | Variable $@ is always null at this dereference. | D.cs:378:19:378:21 | ioe | ioe | | E.cs:210:16:210:16 | access to parameter s | Variable $@ is always null at this dereference. | E.cs:206:28:206:28 | s | s | -| E.cs:220:13:220:13 | access to local variable x | Variable $@ is always null at this dereference. | E.cs:215:13:215:13 | x | x | -| E.cs:229:13:229:13 | access to local variable x | Variable $@ is always null at this dereference. | E.cs:225:13:225:13 | x | x | | E.cs:323:13:323:14 | access to parameter s1 | Variable $@ is always null at this dereference. | E.cs:319:29:319:30 | s1 | s1 | | E.cs:324:13:324:14 | access to parameter s2 | Variable $@ is always null at this dereference. | E.cs:319:40:319:41 | s2 | s2 | | E.cs:331:9:331:9 | access to local variable x | Variable $@ is always null at this dereference. | E.cs:330:13:330:13 | x | x | diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index 7b4c89a0b21..e8b9a30e5d1 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -298,11 +298,11 @@ | E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | true | false | | E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | false | true | | E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | true | false | -| E.cs:437:13:437:21 | ... is ... | E.cs:437:13:437:13 | access to parameter s | false | false | -| E.cs:437:13:437:21 | ... is ... | E.cs:437:13:437:13 | access to parameter s | true | true | -| E.cs:442:13:442:29 | ... is ... | E.cs:442:13:442:13 | access to parameter s | false | false | -| E.cs:447:13:447:25 | ... is ... | E.cs:447:13:447:13 | access to parameter s | true | false | -| E.cs:452:13:452:23 | ... is ... | E.cs:452:13:452:13 | access to parameter s | true | false | +| E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | false | false | +| E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | true | true | +| E.cs:442:23:442:39 | ... is ... | E.cs:442:23:442:23 | access to parameter s | false | false | +| E.cs:447:23:447:35 | ... is ... | E.cs:447:23:447:23 | access to parameter s | true | false | +| E.cs:452:23:452:33 | ... is ... | E.cs:452:23:452:23 | access to parameter s | true | false | | E.cs:457:13:457:27 | ... is ... | E.cs:457:13:457:13 | access to parameter s | false | false | | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | Forwarding.cs:9:14:9:14 | access to local variable s | false | false | | Forwarding.cs:14:13:14:32 | call to method IsNotNullOrEmpty | Forwarding.cs:14:13:14:13 | access to local variable s | true | false | diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index 816a8b3b440..ce9b6d8b182 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -1,970 +1,64 @@ -#select -| C.cs:64:9:64:10 | access to local variable o1 | C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this | -| C.cs:68:9:68:10 | access to local variable o2 | C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this | -| C.cs:95:15:95:15 | access to local variable o | C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this | -| C.cs:103:27:103:30 | access to parameter list | C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this | -| C.cs:177:13:177:13 | access to local variable s | C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this | -| C.cs:203:13:203:13 | access to local variable s | C.cs:204:13:204:20 | SSA def(s) | C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this | -| C.cs:223:9:223:9 | access to local variable s | C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this | -| C.cs:242:13:242:13 | access to local variable s | C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this | -| D.cs:23:9:23:13 | access to parameter param | D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this | -| D.cs:32:9:32:13 | access to parameter param | D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this | -| D.cs:62:13:62:14 | access to local variable o5 | D.cs:58:13:58:41 | SSA def(o5) | D.cs:62:13:62:14 | access to local variable o5 | Variable $@ may be null at this access because of $@ assignment. | D.cs:58:13:58:14 | o5 | o5 | D.cs:58:13:58:41 | String o5 = ... | this | -| D.cs:73:13:73:14 | access to local variable o7 | D.cs:68:13:68:34 | SSA def(o7) | D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this | -| D.cs:82:13:82:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | -| D.cs:84:13:84:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | -| D.cs:91:13:91:14 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:94:21:94:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:98:21:98:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:102:31:102:32 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:105:19:105:20 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | -| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | -| D.cs:135:24:135:24 | access to parameter b | D.cs:125:44:125:44 | SSA param(b) | D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this | -| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | -| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | -| D.cs:151:9:151:11 | access to parameter obj | D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this | -| D.cs:171:9:171:11 | access to local variable obj | D.cs:163:16:163:25 | SSA def(obj) | D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this | -| D.cs:245:13:245:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | -| D.cs:247:13:247:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:247:13:247:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | -| D.cs:253:13:253:14 | access to local variable o2 | D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this | -| D.cs:267:13:267:13 | access to local variable o | D.cs:258:16:258:23 | SSA def(o) | D.cs:267:13:267:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:258:16:258:23 | Object o = ... | this | -| D.cs:291:13:291:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | -| D.cs:291:13:291:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | -| D.cs:294:13:294:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | -| D.cs:294:13:294:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | -| D.cs:300:17:300:20 | access to local variable prev | D.cs:296:16:296:26 | SSA def(prev) | D.cs:300:17:300:20 | access to local variable prev | Variable $@ may be null at this access because of $@ assignment. | D.cs:296:16:296:19 | prev | prev | D.cs:296:16:296:26 | Object prev = ... | this | -| D.cs:313:17:313:17 | access to local variable s | D.cs:304:16:304:23 | SSA def(s) | D.cs:313:17:313:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | D.cs:304:16:304:16 | s | s | D.cs:304:16:304:23 | String s = ... | this | -| D.cs:324:9:324:9 | access to local variable r | D.cs:316:16:316:23 | SSA def(r) | D.cs:324:9:324:9 | access to local variable r | Variable $@ may be null at this access because of $@ assignment. | D.cs:316:16:316:16 | r | r | D.cs:316:16:316:23 | Object r = ... | this | -| D.cs:356:13:356:13 | access to local variable a | D.cs:351:15:351:22 | SSA def(a) | D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this | -| D.cs:363:13:363:16 | access to local variable last | D.cs:360:20:360:30 | SSA def(last) | D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this | -| D.cs:372:13:372:13 | access to local variable b | D.cs:366:15:366:47 | SSA def(b) | D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this | -| D.cs:395:20:395:20 | access to parameter a | D.cs:388:36:388:36 | SSA param(a) | D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this | -| D.cs:400:20:400:20 | access to parameter b | D.cs:388:45:388:45 | SSA param(b) | D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:27:407:35 | ... == ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:55:407:63 | ... != ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:411:13:411:21 | ... != ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:14:407:22 | ... != ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:42:407:50 | ... == ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:409:13:409:21 | ... != ... | this | -| E.cs:12:38:12:39 | access to local variable a2 | E.cs:9:18:9:26 | SSA def(a2) | E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this | -| E.cs:14:13:14:14 | access to local variable a3 | E.cs:11:16:11:24 | SSA def(a3) | E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this | -| E.cs:27:13:27:14 | access to local variable s1 | E.cs:23:13:23:30 | SSA def(s1) | E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this | -| E.cs:61:13:61:17 | access to local variable slice | E.cs:51:22:51:33 | SSA def(slice) | E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this | -| E.cs:73:13:73:15 | access to parameter arr | E.cs:66:40:66:42 | SSA param(arr) | E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this | -| E.cs:112:13:112:16 | access to local variable arr2 | E.cs:107:15:107:25 | SSA def(arr2) | E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this | -| E.cs:125:33:125:35 | access to local variable obj | E.cs:137:25:137:34 | SSA def(obj) | E.cs:125:33:125:35 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | E.cs:119:13:119:15 | obj | obj | E.cs:137:25:137:34 | ... = ... | this | -| E.cs:159:13:159:16 | access to local variable obj2 | E.cs:152:16:152:26 | SSA def(obj2) | E.cs:159:13:159:16 | access to local variable obj2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:152:16:152:19 | obj2 | obj2 | E.cs:153:13:153:24 | ... != ... | this | -| E.cs:167:21:167:21 | access to parameter a | E.cs:162:28:162:28 | SSA param(a) | E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this | -| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | -| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | -| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | -| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | -| E.cs:192:17:192:17 | access to parameter o | E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this | -| E.cs:201:13:201:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | -| E.cs:203:13:203:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | -| E.cs:218:9:218:9 | access to local variable x | E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this | -| E.cs:230:9:230:9 | access to local variable x | E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:230:9:230:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this | -| E.cs:235:16:235:16 | access to parameter i | E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this | -| E.cs:240:21:240:21 | access to parameter i | E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this | -| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | -| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | -| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this | -| E.cs:343:9:343:9 | access to local variable x | E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this | -| E.cs:349:9:349:9 | access to local variable x | E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this | -| E.cs:366:41:366:41 | access to parameter s | E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | -| E.cs:375:20:375:20 | access to local variable s | E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:14:382:23 | ... == ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:44:382:53 | ... != ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:384:13:384:22 | ... == ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:28:382:37 | ... != ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:58:382:67 | ... == ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:384:27:384:36 | ... == ... | this | -| E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | -| E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | -| E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | -| E.cs:444:13:444:13 | access to parameter s | E.cs:435:29:435:29 | SSA param(s) | E.cs:444:13:444:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:13:437:21 | ... is ... | this | -| E.cs:459:13:459:13 | access to parameter s | E.cs:435:29:435:29 | SSA param(s) | E.cs:459:13:459:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:13:437:21 | ... is ... | this | -| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | -| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | -| Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | -| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this | -edges -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:8:15:8:32 | access to local variable synchronizedAlways | -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:10:13:10:30 | access to local variable synchronizedAlways | -| A.cs:16:15:16:30 | SSA def(arrayNull) | A.cs:17:9:17:17 | access to local variable arrayNull | -| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:31:27:31:37 | access to local variable arrayAccess | -| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:36:27:36:37 | access to local variable arrayAccess | -| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:32:27:32:37 | access to local variable fieldAccess | -| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:37:27:37:37 | access to local variable fieldAccess | -| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:33:28:33:39 | access to local variable methodAccess | -| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:38:15:38:26 | access to local variable methodAccess | -| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:34:27:34:36 | access to local variable methodCall | -| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:39:27:39:36 | access to local variable methodCall | -| A.cs:48:16:48:28 | SSA def(varRef) | A.cs:50:9:50:14 | access to local variable varRef | -| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) | Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | -| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | Assert.cs:47:27:47:27 | access to local variable s | -| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | -| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | -| Assert.cs:50:24:50:38 | [false] ... \|\| ... | Assert.cs:51:27:51:27 | access to local variable s | -| Assert.cs:50:37:50:38 | [false] !... | Assert.cs:50:24:50:38 | [false] ... \|\| ... | -| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | Assert.cs:50:37:50:38 | [false] !... | -| B.cs:7:11:7:29 | SSA def(eqCallAlways) | B.cs:13:13:13:24 | access to local variable eqCallAlways | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:13:13:13:36 | ...; | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:15:9:16:26 | if (...) ... | -| B.cs:13:13:13:36 | ...; | B.cs:15:9:16:26 | if (...) ... | -| B.cs:15:9:16:26 | if (...) ... | B.cs:16:13:16:26 | ...; | -| B.cs:15:9:16:26 | if (...) ... | B.cs:18:9:20:26 | if (...) ... | -| B.cs:16:13:16:26 | ...; | B.cs:18:9:20:26 | if (...) ... | -| B.cs:18:9:20:26 | if (...) ... | B.cs:18:25:18:27 | {...} | -| B.cs:18:9:20:26 | if (...) ... | B.cs:20:13:20:26 | ...; | -| B.cs:18:25:18:27 | {...} | B.cs:22:9:24:37 | if (...) ... | -| B.cs:20:13:20:26 | ...; | B.cs:22:9:24:37 | if (...) ... | -| B.cs:22:9:24:37 | if (...) ... | B.cs:24:13:24:25 | access to local variable neqCallAlways | -| C.cs:10:16:10:23 | SSA def(o) | C.cs:11:17:11:28 | [false] !... | -| C.cs:11:13:11:30 | [false] !... | C.cs:16:9:19:9 | if (...) ... | -| C.cs:11:15:11:29 | [true] !... | C.cs:11:13:11:30 | [false] !... | -| C.cs:11:17:11:28 | [false] !... | C.cs:11:15:11:29 | [true] !... | -| C.cs:16:9:19:9 | if (...) ... | C.cs:16:13:16:24 | [true] !... | -| C.cs:16:13:16:24 | [true] !... | C.cs:18:13:18:13 | access to local variable o | -| C.cs:40:13:40:35 | SSA def(s) | C.cs:42:9:42:9 | access to local variable s | -| C.cs:55:13:55:36 | SSA def(o2) | C.cs:57:9:57:10 | access to local variable o2 | -| C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | -| C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | -| C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | -| C.cs:94:13:94:45 | SSA def(o) | C.cs:96:13:96:13 | access to local variable o | -| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | -| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:103:22:103:22 | Int32 x | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:106:13:106:16 | access to parameter list | -| C.cs:103:22:103:22 | Int32 x | C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:103:27:103:30 | access to parameter list | C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:159:9:159:16 | SSA def(s) | C.cs:162:13:162:13 | access to local variable s | -| C.cs:167:9:167:16 | SSA def(s) | C.cs:170:13:170:13 | access to local variable s | -| C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | -| C.cs:193:9:193:16 | SSA def(s) | C.cs:196:13:196:13 | access to local variable s | -| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) | C.cs:196:13:196:13 | access to local variable s | -| C.cs:201:16:201:19 | true | C.cs:203:13:203:13 | access to local variable s | -| C.cs:204:13:204:20 | SSA def(s) | C.cs:201:16:201:19 | true | -| C.cs:210:13:210:35 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | -| C.cs:214:13:214:20 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | -| C.cs:217:9:218:25 | if (...) ... | C.cs:218:13:218:13 | access to local variable s | -| C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | -| C.cs:229:22:229:22 | access to local variable s | C.cs:233:9:233:9 | access to local variable s | -| C.cs:229:33:229:40 | SSA def(s) | C.cs:229:22:229:22 | access to local variable s | -| C.cs:235:14:235:21 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | -| C.cs:235:24:235:24 | access to local variable s | C.cs:237:13:237:13 | access to local variable s | -| C.cs:235:35:235:42 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | -| C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | -| C.cs:248:15:248:22 | SSA def(a) | C.cs:249:9:249:9 | access to local variable a | -| C.cs:257:15:257:23 | SSA def(ia) | C.cs:260:9:260:10 | access to local variable ia | -| C.cs:257:15:257:23 | SSA def(ia) | C.cs:263:9:263:10 | access to local variable ia | -| C.cs:258:18:258:26 | SSA def(sa) | C.cs:261:20:261:21 | access to local variable sa | -| C.cs:258:18:258:26 | SSA def(sa) | C.cs:264:16:264:17 | access to local variable sa | -| D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | -| D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | -| D.cs:58:13:58:41 | SSA def(o5) | D.cs:61:9:62:26 | if (...) ... | -| D.cs:61:9:62:26 | if (...) ... | D.cs:62:13:62:14 | access to local variable o5 | -| D.cs:68:13:68:34 | SSA def(o7) | D.cs:69:18:69:36 | ... && ... | -| D.cs:69:18:69:36 | ... && ... | D.cs:73:13:73:14 | access to local variable o7 | -| D.cs:75:13:75:34 | SSA def(o8) | D.cs:76:34:76:35 | 42 | -| D.cs:76:21:76:43 | ... ? ... : ... | D.cs:79:9:80:26 | if (...) ... | -| D.cs:76:34:76:35 | 42 | D.cs:76:21:76:43 | ... ? ... : ... | -| D.cs:79:9:80:26 | if (...) ... | D.cs:81:9:82:26 | if (...) ... | -| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:14 | access to local variable o8 | -| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:26 | ...; | -| D.cs:81:9:82:26 | if (...) ... | D.cs:83:9:84:26 | if (...) ... | -| D.cs:82:13:82:26 | ...; | D.cs:83:9:84:26 | if (...) ... | -| D.cs:83:9:84:26 | if (...) ... | D.cs:84:13:84:14 | access to local variable o8 | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:22 | ...; | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:93:9:94:30 | if (...) ... | -| D.cs:91:13:91:22 | ...; | D.cs:93:9:94:30 | if (...) ... | -| D.cs:93:9:94:30 | if (...) ... | D.cs:94:13:94:30 | ...; | -| D.cs:93:9:94:30 | if (...) ... | D.cs:94:21:94:22 | access to local variable xs | -| D.cs:93:9:94:30 | if (...) ... | D.cs:96:9:99:9 | if (...) ... | -| D.cs:94:13:94:30 | ...; | D.cs:96:9:99:9 | if (...) ... | -| D.cs:96:9:99:9 | if (...) ... | D.cs:97:9:99:9 | {...} | -| D.cs:96:9:99:9 | if (...) ... | D.cs:98:21:98:22 | access to local variable xs | -| D.cs:96:9:99:9 | if (...) ... | D.cs:101:9:102:35 | if (...) ... | -| D.cs:97:9:99:9 | {...} | D.cs:101:9:102:35 | if (...) ... | -| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | D.cs:104:9:106:30 | if (...) ... | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:102:26:102:26 | Int32 _ | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:104:9:106:30 | if (...) ... | -| D.cs:102:26:102:26 | Int32 _ | D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:102:31:102:32 | access to local variable xs | D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:104:9:106:30 | if (...) ... | D.cs:105:19:105:20 | access to local variable xs | -| D.cs:104:9:106:30 | if (...) ... | D.cs:106:17:106:18 | access to local variable xs | -| D.cs:118:9:118:30 | SSA def(x) | D.cs:120:13:120:13 | access to local variable x | -| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | -| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | -| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:32:127:32 | 0 | -| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:36:127:36 | access to parameter a | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:36:128:36 | access to parameter b | -| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:36:127:36 | access to parameter a | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:138:9:138:18 | ... ...; | -| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:36:128:36 | access to parameter b | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | -| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | -| D.cs:132:29:132:29 | access to local variable i | D.cs:134:24:134:24 | access to parameter a | -| D.cs:132:29:132:29 | access to local variable i | D.cs:135:24:135:24 | access to parameter b | -| D.cs:132:29:132:29 | access to local variable i | D.cs:138:9:138:18 | ... ...; | -| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:138:9:138:18 | ... ...; | D.cs:142:13:142:22 | ...; | -| D.cs:142:13:142:22 | ...; | D.cs:143:9:146:9 | for (...;...;...) ... | -| D.cs:143:9:146:9 | for (...;...;...) ... | D.cs:143:25:143:25 | access to local variable i | -| D.cs:143:25:143:25 | access to local variable i | D.cs:144:9:146:9 | {...} | -| D.cs:143:25:143:25 | access to local variable i | D.cs:145:20:145:20 | access to parameter a | -| D.cs:144:9:146:9 | {...} | D.cs:143:25:143:25 | access to local variable i | -| D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | -| D.cs:163:16:163:25 | SSA def(obj) | D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | -| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | D.cs:168:26:168:26 | [exception: Exception] Exception e | -| D.cs:168:26:168:26 | [exception: Exception] Exception e | D.cs:171:9:171:11 | access to local variable obj | -| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:29:241:32 | null | -| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:36:241:37 | "" | -| D.cs:241:21:241:37 | ... ? ... : ... | D.cs:244:9:247:25 | if (...) ... | -| D.cs:241:29:241:32 | null | D.cs:241:21:241:37 | ... ? ... : ... | -| D.cs:241:36:241:37 | "" | D.cs:241:21:241:37 | ... ? ... : ... | -| D.cs:244:9:247:25 | if (...) ... | D.cs:245:13:245:13 | access to local variable o | -| D.cs:244:9:247:25 | if (...) ... | D.cs:247:13:247:13 | access to local variable o | -| D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | -| D.cs:258:16:258:23 | SSA def(o) | D.cs:266:9:267:25 | if (...) ... | -| D.cs:266:9:267:25 | if (...) ... | D.cs:266:13:266:27 | [true] ... is ... | -| D.cs:266:13:266:27 | [true] ... is ... | D.cs:267:13:267:13 | access to local variable o | -| D.cs:269:9:269:16 | SSA def(o) | D.cs:272:25:272:25 | access to local variable i | -| D.cs:272:25:272:25 | access to local variable i | D.cs:273:9:288:9 | {...} | -| D.cs:272:25:272:25 | access to local variable i | D.cs:290:9:291:25 | if (...) ... | -| D.cs:272:39:272:39 | access to local variable i | D.cs:272:25:272:25 | access to local variable i | -| D.cs:273:9:288:9 | {...} | D.cs:281:13:287:13 | if (...) ... | -| D.cs:281:13:287:13 | if (...) ... | D.cs:272:39:272:39 | access to local variable i | -| D.cs:283:17:283:24 | SSA def(o) | D.cs:285:28:285:30 | {...} | -| D.cs:283:17:283:24 | SSA def(o) | D.cs:286:17:286:30 | ...; | -| D.cs:285:28:285:30 | {...} | D.cs:286:17:286:30 | ...; | -| D.cs:286:17:286:30 | ...; | D.cs:272:39:272:39 | access to local variable i | -| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:13 | access to local variable o | -| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:25 | ...; | -| D.cs:290:9:291:25 | if (...) ... | D.cs:293:9:294:25 | if (...) ... | -| D.cs:291:13:291:25 | ...; | D.cs:293:9:294:25 | if (...) ... | -| D.cs:293:9:294:25 | if (...) ... | D.cs:294:13:294:13 | access to local variable o | -| D.cs:296:16:296:26 | SSA def(prev) | D.cs:297:25:297:25 | access to local variable i | -| D.cs:297:25:297:25 | access to local variable i | D.cs:298:9:302:9 | {...} | -| D.cs:298:9:302:9 | {...} | D.cs:300:17:300:20 | access to local variable prev | -| D.cs:304:16:304:23 | SSA def(s) | D.cs:307:13:311:13 | foreach (... ... in ...) ... | -| D.cs:307:13:311:13 | foreach (... ... in ...) ... | D.cs:312:13:313:29 | if (...) ... | -| D.cs:312:13:313:29 | if (...) ... | D.cs:312:17:312:23 | [true] !... | -| D.cs:312:17:312:23 | [true] !... | D.cs:313:17:313:17 | access to local variable s | -| D.cs:316:16:316:23 | SSA def(r) | D.cs:318:16:318:19 | access to local variable stat | -| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | -| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:41:318:44 | access to local variable stat | -| D.cs:318:16:318:62 | [false] ... && ... | D.cs:324:9:324:9 | access to local variable r | -| D.cs:318:41:318:44 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | -| D.cs:351:15:351:22 | SSA def(a) | D.cs:355:9:356:21 | for (...;...;...) ... | -| D.cs:355:9:356:21 | for (...;...;...) ... | D.cs:355:25:355:25 | access to local variable i | -| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:13 | access to local variable a | -| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:21 | ...; | -| D.cs:356:13:356:21 | ...; | D.cs:355:25:355:25 | access to local variable i | -| D.cs:360:20:360:30 | SSA def(last) | D.cs:361:29:361:29 | access to local variable i | -| D.cs:361:29:361:29 | access to local variable i | D.cs:363:13:363:16 | access to local variable last | -| D.cs:366:15:366:47 | SSA def(b) | D.cs:367:13:367:56 | [false] ... && ... | -| D.cs:367:13:367:56 | [false] ... && ... | D.cs:370:9:373:9 | for (...;...;...) ... | -| D.cs:370:9:373:9 | for (...;...;...) ... | D.cs:370:25:370:25 | access to local variable i | -| D.cs:370:25:370:25 | access to local variable i | D.cs:371:9:373:9 | {...} | -| D.cs:370:25:370:25 | access to local variable i | D.cs:372:13:372:13 | access to local variable b | -| D.cs:371:9:373:9 | {...} | D.cs:370:25:370:25 | access to local variable i | -| D.cs:378:19:378:28 | SSA def(ioe) | D.cs:382:9:385:27 | if (...) ... | -| D.cs:382:9:385:27 | if (...) ... | D.cs:385:13:385:15 | access to local variable ioe | -| D.cs:388:36:388:36 | SSA param(a) | D.cs:390:32:390:32 | 0 | -| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:32:390:32 | 0 | -| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:36:390:36 | access to parameter a | -| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | -| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | -| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:36:390:36 | access to parameter a | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | -| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | -| D.cs:393:21:393:21 | access to local variable i | D.cs:395:20:395:20 | access to parameter a | -| D.cs:393:21:393:21 | access to local variable i | D.cs:397:9:397:44 | ... ...; | -| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | -| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | -| D.cs:397:9:397:44 | ... ...; | D.cs:397:32:397:32 | 0 | -| D.cs:397:20:397:43 | ... ? ... : ... | D.cs:398:21:398:21 | access to local variable i | -| D.cs:397:32:397:32 | 0 | D.cs:397:20:397:43 | ... ? ... : ... | -| D.cs:398:21:398:21 | access to local variable i | D.cs:399:9:401:9 | {...} | -| D.cs:398:21:398:21 | access to local variable i | D.cs:400:20:400:20 | access to parameter b | -| D.cs:399:9:401:9 | {...} | D.cs:398:21:398:21 | access to local variable i | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | -| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:409:9:410:25 | if (...) ... | D.cs:410:13:410:13 | access to parameter y | -| D.cs:409:9:410:25 | if (...) ... | D.cs:411:9:412:25 | if (...) ... | -| D.cs:411:9:412:25 | if (...) ... | D.cs:412:13:412:13 | access to parameter x | -| E.cs:9:18:9:26 | SSA def(a2) | E.cs:10:22:10:54 | ... && ... | -| E.cs:10:22:10:54 | ... && ... | E.cs:12:38:12:39 | access to local variable a2 | -| E.cs:11:16:11:24 | SSA def(a3) | E.cs:12:22:12:52 | ... && ... | -| E.cs:12:22:12:52 | ... && ... | E.cs:14:13:14:14 | access to local variable a3 | -| E.cs:23:13:23:30 | SSA def(s1) | E.cs:24:33:24:36 | null | -| E.cs:24:18:24:41 | ... ? ... : ... | E.cs:26:9:27:26 | if (...) ... | -| E.cs:24:33:24:36 | null | E.cs:24:18:24:41 | ... ? ... : ... | -| E.cs:26:9:27:26 | if (...) ... | E.cs:27:13:27:14 | access to local variable s1 | -| E.cs:51:22:51:33 | SSA def(slice) | E.cs:53:16:53:19 | access to local variable iter | -| E.cs:53:16:53:19 | access to local variable iter | E.cs:54:9:63:9 | {...} | -| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:17 | access to local variable slice | -| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:27 | ...; | -| E.cs:61:13:61:27 | ...; | E.cs:53:16:53:19 | access to local variable iter | -| E.cs:66:40:66:42 | SSA param(arr) | E.cs:70:13:70:50 | ...; | -| E.cs:66:40:66:42 | SSA param(arr) | E.cs:72:9:73:23 | if (...) ... | -| E.cs:70:13:70:50 | ...; | E.cs:70:36:70:36 | 0 | -| E.cs:70:22:70:49 | ... ? ... : ... | E.cs:72:9:73:23 | if (...) ... | -| E.cs:70:36:70:36 | 0 | E.cs:70:22:70:49 | ... ? ... : ... | -| E.cs:72:9:73:23 | if (...) ... | E.cs:73:13:73:15 | access to parameter arr | -| E.cs:107:15:107:25 | SSA def(arr2) | E.cs:111:9:112:30 | for (...;...;...) ... | -| E.cs:111:9:112:30 | for (...;...;...) ... | E.cs:111:25:111:25 | access to local variable i | -| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:16 | access to local variable arr2 | -| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:30 | ...; | -| E.cs:112:13:112:30 | ...; | E.cs:111:25:111:25 | access to local variable i | -| E.cs:120:16:120:20 | [true] !... | E.cs:121:9:143:9 | {...} | -| E.cs:120:17:120:20 | access to local variable stop | E.cs:120:16:120:20 | [true] !... | -| E.cs:121:9:143:9 | {...} | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:123:20:123:24 | [false] !... | E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:20:123:24 | [true] !... | E.cs:123:29:123:29 | access to local variable j | -| E.cs:123:20:123:35 | [false] ... && ... | E.cs:120:17:120:20 | access to local variable stop | -| E.cs:123:20:123:35 | [true] ... && ... | E.cs:124:13:142:13 | {...} | -| E.cs:123:20:123:35 | [true] ... && ... | E.cs:125:33:125:35 | access to local variable obj | -| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [false] !... | -| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [true] !... | -| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [true] ... && ... | -| E.cs:124:13:142:13 | {...} | E.cs:128:21:128:23 | access to local variable obj | -| E.cs:124:13:142:13 | {...} | E.cs:141:17:141:26 | ...; | -| E.cs:137:25:137:34 | SSA def(obj) | E.cs:139:21:139:29 | continue; | -| E.cs:139:21:139:29 | continue; | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:141:17:141:26 | ...; | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:152:16:152:26 | SSA def(obj2) | E.cs:153:13:153:54 | [false] ... && ... | -| E.cs:153:13:153:54 | [false] ... && ... | E.cs:158:9:159:28 | if (...) ... | -| E.cs:158:9:159:28 | if (...) ... | E.cs:159:13:159:16 | access to local variable obj2 | -| E.cs:162:28:162:28 | SSA param(a) | E.cs:164:29:164:29 | 0 | -| E.cs:164:17:164:40 | ... ? ... : ... | E.cs:165:25:165:25 | access to local variable i | -| E.cs:164:29:164:29 | 0 | E.cs:164:17:164:40 | ... ? ... : ... | -| E.cs:165:25:165:25 | access to local variable i | E.cs:166:9:170:9 | {...} | -| E.cs:165:25:165:25 | access to local variable i | E.cs:167:21:167:21 | access to parameter a | -| E.cs:165:32:165:32 | access to local variable i | E.cs:165:25:165:25 | access to local variable i | -| E.cs:166:9:170:9 | {...} | E.cs:165:32:165:32 | access to local variable i | -| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | -| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:177:9:179:9 | {...} | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:178:13:178:15 | access to parameter obj | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:180:9:183:9 | if (...) ... | -| E.cs:175:33:175:37 | false | E.cs:175:19:175:42 | ... ? ... : ... | -| E.cs:177:9:179:9 | {...} | E.cs:180:9:183:9 | if (...) ... | -| E.cs:180:9:183:9 | if (...) ... | E.cs:181:9:183:9 | {...} | -| E.cs:181:9:183:9 | {...} | E.cs:184:9:187:9 | if (...) ... | -| E.cs:184:9:187:9 | if (...) ... | E.cs:186:13:186:15 | access to parameter obj | -| E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | -| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | -| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | -| E.cs:206:28:206:28 | SSA param(s) | E.cs:208:13:208:23 | [false] ... is ... | -| E.cs:208:13:208:23 | [false] ... is ... | E.cs:210:16:210:16 | access to parameter s | -| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | -| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:220:13:220:13 | access to local variable x | -| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:13 | access to local variable x | -| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:25 | ...; | -| E.cs:229:13:229:25 | ...; | E.cs:230:9:230:9 | access to local variable x | -| E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | -| E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | -| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | -| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | -| E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | -| E.cs:319:29:319:30 | SSA param(s1) | E.cs:321:20:321:21 | access to parameter s2 | -| E.cs:321:13:321:30 | [true] ... is ... | E.cs:323:13:323:14 | access to parameter s1 | -| E.cs:321:14:321:21 | ... ?? ... | E.cs:321:13:321:30 | [true] ... is ... | -| E.cs:321:20:321:21 | access to parameter s2 | E.cs:321:14:321:21 | ... ?? ... | -| E.cs:330:13:330:36 | SSA def(x) | E.cs:331:9:331:9 | access to local variable x | -| E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | -| E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | -| E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | -| E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | -| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | -| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:384:9:385:24 | if (...) ... | E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 | -| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:16:386:17 | access to parameter e1 | -| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 | -| E.cs:384:27:384:28 | access to parameter e2 | E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | -| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | -| E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | -| E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | -| E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | -| E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... | -| E.cs:437:13:437:21 | [true] ... is ... | E.cs:438:9:440:9 | {...} | -| E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s | -| E.cs:438:9:440:9 | {...} | E.cs:442:9:445:9 | if (...) ... | -| E.cs:442:9:445:9 | if (...) ... | E.cs:442:22:442:29 | [no-match] not ... | -| E.cs:442:13:442:29 | [true] ... is ... | E.cs:443:9:445:9 | {...} | -| E.cs:442:13:442:29 | [true] ... is ... | E.cs:444:13:444:13 | access to parameter s | -| E.cs:442:18:442:29 | [match] not ... | E.cs:442:13:442:29 | [true] ... is ... | -| E.cs:442:22:442:29 | [no-match] not ... | E.cs:442:18:442:29 | [match] not ... | -| E.cs:443:9:445:9 | {...} | E.cs:447:9:450:9 | if (...) ... | -| E.cs:447:9:450:9 | if (...) ... | E.cs:447:18:447:25 | [no-match] not ... | -| E.cs:447:13:447:25 | [false] ... is ... | E.cs:452:9:455:9 | if (...) ... | -| E.cs:447:18:447:25 | [no-match] not ... | E.cs:447:13:447:25 | [false] ... is ... | -| E.cs:452:9:455:9 | if (...) ... | E.cs:452:13:452:23 | [false] ... is ... | -| E.cs:452:13:452:23 | [false] ... is ... | E.cs:457:9:464:9 | if (...) ... | -| E.cs:457:9:464:9 | if (...) ... | E.cs:457:18:457:27 | [match] not ... | -| E.cs:457:13:457:27 | [true] ... is ... | E.cs:459:13:459:13 | access to parameter s | -| E.cs:457:18:457:27 | [match] not ... | E.cs:457:13:457:27 | [true] ... is ... | -| F.cs:7:16:7:23 | SSA def(o) | F.cs:8:9:8:9 | access to local variable o | -| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... | -| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... | -| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... | -| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... | -| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... | -| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... | -| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... | -| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} | -| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s | -| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s | -| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... | -| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... | -| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... | -| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... | -| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 | -| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... | -| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 | -| GuardedString.cs:22:25:22:25 | 0 | GuardedString.cs:25:9:26:40 | if (...) ... | -| GuardedString.cs:25:9:26:40 | if (...) ... | GuardedString.cs:25:26:25:26 | 0 | -| GuardedString.cs:25:26:25:26 | 0 | GuardedString.cs:28:9:29:40 | if (...) ... | -| GuardedString.cs:28:9:29:40 | if (...) ... | GuardedString.cs:28:25:28:26 | 10 | -| GuardedString.cs:28:25:28:26 | 10 | GuardedString.cs:31:9:32:40 | if (...) ... | -| GuardedString.cs:31:9:32:40 | if (...) ... | GuardedString.cs:31:26:31:27 | 10 | -| GuardedString.cs:31:26:31:27 | 10 | GuardedString.cs:34:9:37:40 | if (...) ... | -| GuardedString.cs:34:9:37:40 | if (...) ... | GuardedString.cs:34:26:34:26 | 0 | -| GuardedString.cs:34:26:34:26 | 0 | GuardedString.cs:35:31:35:31 | access to local variable s | -| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | NullAlwaysBad.cs:9:30:9:30 | access to parameter s | -| NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | -| Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | -| StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:15:16:15:16 | access to local variable s | -| StringConcatenation.cs:15:16:15:16 | access to local variable s | StringConcatenation.cs:16:17:16:17 | access to local variable s | -nodes -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | -| A.cs:8:15:8:32 | access to local variable synchronizedAlways | -| A.cs:10:13:10:30 | access to local variable synchronizedAlways | -| A.cs:16:15:16:30 | SSA def(arrayNull) | -| A.cs:17:9:17:17 | access to local variable arrayNull | -| A.cs:26:15:26:32 | SSA def(arrayAccess) | -| A.cs:27:18:27:35 | SSA def(fieldAccess) | -| A.cs:28:16:28:34 | SSA def(methodAccess) | -| A.cs:29:16:29:32 | SSA def(methodCall) | -| A.cs:31:27:31:37 | access to local variable arrayAccess | -| A.cs:32:27:32:37 | access to local variable fieldAccess | -| A.cs:33:28:33:39 | access to local variable methodAccess | -| A.cs:34:27:34:36 | access to local variable methodCall | -| A.cs:36:27:36:37 | access to local variable arrayAccess | -| A.cs:37:27:37:37 | access to local variable fieldAccess | -| A.cs:38:15:38:26 | access to local variable methodAccess | -| A.cs:39:27:39:36 | access to local variable methodCall | -| A.cs:48:16:48:28 | SSA def(varRef) | -| A.cs:50:9:50:14 | access to local variable varRef | -| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) | -| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) | -| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) | -| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | -| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | -| Assert.cs:47:27:47:27 | access to local variable s | -| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | -| Assert.cs:50:24:50:38 | [false] ... \|\| ... | -| Assert.cs:50:37:50:38 | [false] !... | -| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | -| Assert.cs:51:27:51:27 | access to local variable s | -| B.cs:7:11:7:29 | SSA def(eqCallAlways) | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | -| B.cs:13:13:13:24 | access to local variable eqCallAlways | -| B.cs:13:13:13:36 | ...; | -| B.cs:15:9:16:26 | if (...) ... | -| B.cs:16:13:16:26 | ...; | -| B.cs:18:9:20:26 | if (...) ... | -| B.cs:18:25:18:27 | {...} | -| B.cs:20:13:20:26 | ...; | -| B.cs:22:9:24:37 | if (...) ... | -| B.cs:24:13:24:25 | access to local variable neqCallAlways | -| C.cs:10:16:10:23 | SSA def(o) | -| C.cs:11:13:11:30 | [false] !... | -| C.cs:11:15:11:29 | [true] !... | -| C.cs:11:17:11:28 | [false] !... | -| C.cs:16:9:19:9 | if (...) ... | -| C.cs:16:13:16:24 | [true] !... | -| C.cs:18:13:18:13 | access to local variable o | -| C.cs:40:13:40:35 | SSA def(s) | -| C.cs:42:9:42:9 | access to local variable s | -| C.cs:55:13:55:36 | SSA def(o2) | -| C.cs:57:9:57:10 | access to local variable o2 | -| C.cs:62:13:62:46 | SSA def(o1) | -| C.cs:64:9:64:10 | access to local variable o1 | -| C.cs:66:13:66:46 | SSA def(o2) | -| C.cs:68:9:68:10 | access to local variable o2 | -| C.cs:94:13:94:45 | SSA def(o) | -| C.cs:95:15:95:15 | access to local variable o | -| C.cs:96:13:96:13 | access to local variable o | -| C.cs:102:13:102:23 | SSA def(list) | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:103:22:103:22 | Int32 x | -| C.cs:103:27:103:30 | access to parameter list | -| C.cs:103:27:103:30 | access to parameter list | -| C.cs:106:13:106:16 | access to parameter list | -| C.cs:159:9:159:16 | SSA def(s) | -| C.cs:162:13:162:13 | access to local variable s | -| C.cs:167:9:167:16 | SSA def(s) | -| C.cs:170:13:170:13 | access to local variable s | -| C.cs:177:13:177:13 | access to local variable s | -| C.cs:178:13:178:20 | SSA def(s) | -| C.cs:193:9:193:16 | SSA def(s) | -| C.cs:196:13:196:13 | access to local variable s | -| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) | -| C.cs:201:16:201:19 | true | -| C.cs:203:13:203:13 | access to local variable s | -| C.cs:204:13:204:20 | SSA def(s) | -| C.cs:210:13:210:35 | SSA def(s) | -| C.cs:214:13:214:20 | SSA def(s) | -| C.cs:217:9:218:25 | if (...) ... | -| C.cs:218:13:218:13 | access to local variable s | -| C.cs:222:13:222:20 | SSA def(s) | -| C.cs:223:9:223:9 | access to local variable s | -| C.cs:229:22:229:22 | access to local variable s | -| C.cs:229:33:229:40 | SSA def(s) | -| C.cs:233:9:233:9 | access to local variable s | -| C.cs:235:14:235:21 | SSA def(s) | -| C.cs:235:24:235:24 | access to local variable s | -| C.cs:235:35:235:42 | SSA def(s) | -| C.cs:237:13:237:13 | access to local variable s | -| C.cs:240:24:240:31 | SSA def(s) | -| C.cs:242:13:242:13 | access to local variable s | -| C.cs:248:15:248:22 | SSA def(a) | -| C.cs:249:9:249:9 | access to local variable a | -| C.cs:257:15:257:23 | SSA def(ia) | -| C.cs:258:18:258:26 | SSA def(sa) | -| C.cs:260:9:260:10 | access to local variable ia | -| C.cs:261:20:261:21 | access to local variable sa | -| C.cs:263:9:263:10 | access to local variable ia | -| C.cs:264:16:264:17 | access to local variable sa | -| D.cs:17:17:17:20 | null | -| D.cs:23:9:23:13 | access to parameter param | -| D.cs:26:32:26:36 | SSA param(param) | -| D.cs:32:9:32:13 | access to parameter param | -| D.cs:58:13:58:41 | SSA def(o5) | -| D.cs:61:9:62:26 | if (...) ... | -| D.cs:62:13:62:14 | access to local variable o5 | -| D.cs:68:13:68:34 | SSA def(o7) | -| D.cs:69:18:69:36 | ... && ... | -| D.cs:73:13:73:14 | access to local variable o7 | -| D.cs:75:13:75:34 | SSA def(o8) | -| D.cs:76:21:76:43 | ... ? ... : ... | -| D.cs:76:34:76:35 | 42 | -| D.cs:79:9:80:26 | if (...) ... | -| D.cs:81:9:82:26 | if (...) ... | -| D.cs:82:13:82:14 | access to local variable o8 | -| D.cs:82:13:82:26 | ...; | -| D.cs:83:9:84:26 | if (...) ... | -| D.cs:84:13:84:14 | access to local variable o8 | -| D.cs:89:15:89:44 | SSA def(xs) | -| D.cs:91:13:91:14 | access to local variable xs | -| D.cs:91:13:91:22 | ...; | -| D.cs:93:9:94:30 | if (...) ... | -| D.cs:94:13:94:30 | ...; | -| D.cs:94:21:94:22 | access to local variable xs | -| D.cs:96:9:99:9 | if (...) ... | -| D.cs:97:9:99:9 | {...} | -| D.cs:98:21:98:22 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:102:26:102:26 | Int32 _ | -| D.cs:102:31:102:32 | access to local variable xs | -| D.cs:102:31:102:32 | access to local variable xs | -| D.cs:104:9:106:30 | if (...) ... | -| D.cs:105:19:105:20 | access to local variable xs | -| D.cs:106:17:106:18 | access to local variable xs | -| D.cs:118:9:118:30 | SSA def(x) | -| D.cs:120:13:120:13 | access to local variable x | -| D.cs:125:35:125:35 | SSA param(a) | -| D.cs:125:35:125:35 | SSA param(a) | -| D.cs:125:44:125:44 | SSA param(b) | -| D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:32:127:32 | 0 | -| D.cs:127:32:127:32 | 0 | -| D.cs:127:36:127:36 | access to parameter a | -| D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:32:128:32 | 0 | -| D.cs:128:32:128:32 | 0 | -| D.cs:128:36:128:36 | access to parameter b | -| D.cs:131:9:137:9 | {...} | -| D.cs:131:9:137:9 | {...} | -| D.cs:132:29:132:29 | access to local variable i | -| D.cs:132:29:132:29 | access to local variable i | -| D.cs:133:13:136:13 | {...} | -| D.cs:133:13:136:13 | {...} | -| D.cs:134:24:134:24 | access to parameter a | -| D.cs:135:24:135:24 | access to parameter b | -| D.cs:138:9:138:18 | ... ...; | -| D.cs:142:13:142:22 | ...; | -| D.cs:143:9:146:9 | for (...;...;...) ... | -| D.cs:143:25:143:25 | access to local variable i | -| D.cs:144:9:146:9 | {...} | -| D.cs:145:20:145:20 | access to parameter a | -| D.cs:149:36:149:38 | SSA param(obj) | -| D.cs:151:9:151:11 | access to parameter obj | -| D.cs:163:16:163:25 | SSA def(obj) | -| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | -| D.cs:168:26:168:26 | [exception: Exception] Exception e | -| D.cs:171:9:171:11 | access to local variable obj | -| D.cs:240:9:240:16 | SSA def(o) | -| D.cs:241:21:241:37 | ... ? ... : ... | -| D.cs:241:29:241:32 | null | -| D.cs:241:36:241:37 | "" | -| D.cs:244:9:247:25 | if (...) ... | -| D.cs:245:13:245:13 | access to local variable o | -| D.cs:247:13:247:13 | access to local variable o | -| D.cs:249:13:249:38 | SSA def(o2) | -| D.cs:253:13:253:14 | access to local variable o2 | -| D.cs:258:16:258:23 | SSA def(o) | -| D.cs:266:9:267:25 | if (...) ... | -| D.cs:266:13:266:27 | [true] ... is ... | -| D.cs:267:13:267:13 | access to local variable o | -| D.cs:269:9:269:16 | SSA def(o) | -| D.cs:272:25:272:25 | access to local variable i | -| D.cs:272:39:272:39 | access to local variable i | -| D.cs:273:9:288:9 | {...} | -| D.cs:281:13:287:13 | if (...) ... | -| D.cs:283:17:283:24 | SSA def(o) | -| D.cs:285:28:285:30 | {...} | -| D.cs:286:17:286:30 | ...; | -| D.cs:290:9:291:25 | if (...) ... | -| D.cs:291:13:291:13 | access to local variable o | -| D.cs:291:13:291:25 | ...; | -| D.cs:293:9:294:25 | if (...) ... | -| D.cs:294:13:294:13 | access to local variable o | -| D.cs:296:16:296:26 | SSA def(prev) | -| D.cs:297:25:297:25 | access to local variable i | -| D.cs:298:9:302:9 | {...} | -| D.cs:300:17:300:20 | access to local variable prev | -| D.cs:304:16:304:23 | SSA def(s) | -| D.cs:307:13:311:13 | foreach (... ... in ...) ... | -| D.cs:312:13:313:29 | if (...) ... | -| D.cs:312:17:312:23 | [true] !... | -| D.cs:313:17:313:17 | access to local variable s | -| D.cs:316:16:316:23 | SSA def(r) | -| D.cs:318:16:318:19 | access to local variable stat | -| D.cs:318:16:318:62 | [false] ... && ... | -| D.cs:318:41:318:44 | access to local variable stat | -| D.cs:324:9:324:9 | access to local variable r | -| D.cs:351:15:351:22 | SSA def(a) | -| D.cs:355:9:356:21 | for (...;...;...) ... | -| D.cs:355:25:355:25 | access to local variable i | -| D.cs:356:13:356:13 | access to local variable a | -| D.cs:356:13:356:21 | ...; | -| D.cs:360:20:360:30 | SSA def(last) | -| D.cs:361:29:361:29 | access to local variable i | -| D.cs:363:13:363:16 | access to local variable last | -| D.cs:366:15:366:47 | SSA def(b) | -| D.cs:367:13:367:56 | [false] ... && ... | -| D.cs:370:9:373:9 | for (...;...;...) ... | -| D.cs:370:25:370:25 | access to local variable i | -| D.cs:371:9:373:9 | {...} | -| D.cs:372:13:372:13 | access to local variable b | -| D.cs:378:19:378:28 | SSA def(ioe) | -| D.cs:382:9:385:27 | if (...) ... | -| D.cs:385:13:385:15 | access to local variable ioe | -| D.cs:388:36:388:36 | SSA param(a) | -| D.cs:388:45:388:45 | SSA param(b) | -| D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:32:390:32 | 0 | -| D.cs:390:32:390:32 | 0 | -| D.cs:390:36:390:36 | access to parameter a | -| D.cs:393:21:393:21 | access to local variable i | -| D.cs:393:21:393:21 | access to local variable i | -| D.cs:394:9:396:9 | {...} | -| D.cs:394:9:396:9 | {...} | -| D.cs:395:20:395:20 | access to parameter a | -| D.cs:397:9:397:44 | ... ...; | -| D.cs:397:20:397:43 | ... ? ... : ... | -| D.cs:397:32:397:32 | 0 | -| D.cs:398:21:398:21 | access to local variable i | -| D.cs:399:9:401:9 | {...} | -| D.cs:400:20:400:20 | access to parameter b | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:35:405:35 | SSA param(x) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:405:45:405:45 | SSA param(y) | -| D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:55:407:55 | access to parameter y | -| D.cs:409:9:410:25 | if (...) ... | -| D.cs:409:9:410:25 | if (...) ... | -| D.cs:410:13:410:13 | access to parameter y | -| D.cs:411:9:412:25 | if (...) ... | -| D.cs:412:13:412:13 | access to parameter x | -| E.cs:9:18:9:26 | SSA def(a2) | -| E.cs:10:22:10:54 | ... && ... | -| E.cs:11:16:11:24 | SSA def(a3) | -| E.cs:12:22:12:52 | ... && ... | -| E.cs:12:38:12:39 | access to local variable a2 | -| E.cs:14:13:14:14 | access to local variable a3 | -| E.cs:23:13:23:30 | SSA def(s1) | -| E.cs:24:18:24:41 | ... ? ... : ... | -| E.cs:24:33:24:36 | null | -| E.cs:26:9:27:26 | if (...) ... | -| E.cs:27:13:27:14 | access to local variable s1 | -| E.cs:51:22:51:33 | SSA def(slice) | -| E.cs:53:16:53:19 | access to local variable iter | -| E.cs:54:9:63:9 | {...} | -| E.cs:61:13:61:17 | access to local variable slice | -| E.cs:61:13:61:27 | ...; | -| E.cs:66:40:66:42 | SSA param(arr) | -| E.cs:70:13:70:50 | ...; | -| E.cs:70:22:70:49 | ... ? ... : ... | -| E.cs:70:36:70:36 | 0 | -| E.cs:72:9:73:23 | if (...) ... | -| E.cs:73:13:73:15 | access to parameter arr | -| E.cs:107:15:107:25 | SSA def(arr2) | -| E.cs:111:9:112:30 | for (...;...;...) ... | -| E.cs:111:25:111:25 | access to local variable i | -| E.cs:112:13:112:16 | access to local variable arr2 | -| E.cs:112:13:112:30 | ...; | -| E.cs:120:16:120:20 | [true] !... | -| E.cs:120:17:120:20 | access to local variable stop | -| E.cs:121:9:143:9 | {...} | -| E.cs:123:20:123:24 | [false] !... | -| E.cs:123:20:123:24 | [true] !... | -| E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:20:123:35 | [true] ... && ... | -| E.cs:123:21:123:24 | access to local variable stop | -| E.cs:123:29:123:29 | access to local variable j | -| E.cs:124:13:142:13 | {...} | -| E.cs:125:33:125:35 | access to local variable obj | -| E.cs:128:21:128:23 | access to local variable obj | -| E.cs:137:25:137:34 | SSA def(obj) | -| E.cs:139:21:139:29 | continue; | -| E.cs:141:17:141:26 | ...; | -| E.cs:152:16:152:26 | SSA def(obj2) | -| E.cs:153:13:153:54 | [false] ... && ... | -| E.cs:158:9:159:28 | if (...) ... | -| E.cs:159:13:159:16 | access to local variable obj2 | -| E.cs:162:28:162:28 | SSA param(a) | -| E.cs:164:17:164:40 | ... ? ... : ... | -| E.cs:164:29:164:29 | 0 | -| E.cs:165:25:165:25 | access to local variable i | -| E.cs:165:32:165:32 | access to local variable i | -| E.cs:166:9:170:9 | {...} | -| E.cs:167:21:167:21 | access to parameter a | -| E.cs:173:29:173:31 | SSA param(obj) | -| E.cs:173:29:173:31 | SSA param(obj) | -| E.cs:175:19:175:42 | ... ? ... : ... | -| E.cs:175:33:175:37 | false | -| E.cs:177:9:179:9 | {...} | -| E.cs:178:13:178:15 | access to parameter obj | -| E.cs:180:9:183:9 | if (...) ... | -| E.cs:181:9:183:9 | {...} | -| E.cs:184:9:187:9 | if (...) ... | -| E.cs:186:13:186:15 | access to parameter obj | -| E.cs:190:29:190:29 | SSA param(o) | -| E.cs:192:17:192:17 | access to parameter o | -| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | -| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | -| E.cs:201:13:201:13 | access to local variable o | -| E.cs:203:13:203:13 | access to local variable o | -| E.cs:206:28:206:28 | SSA param(s) | -| E.cs:208:13:208:23 | [false] ... is ... | -| E.cs:210:16:210:16 | access to parameter s | -| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | -| E.cs:218:9:218:9 | access to local variable x | -| E.cs:220:13:220:13 | access to local variable x | -| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | -| E.cs:229:13:229:13 | access to local variable x | -| E.cs:229:13:229:25 | ...; | -| E.cs:230:9:230:9 | access to local variable x | -| E.cs:233:26:233:26 | SSA param(i) | -| E.cs:235:16:235:16 | access to parameter i | -| E.cs:238:26:238:26 | SSA param(i) | -| E.cs:240:21:240:21 | access to parameter i | -| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | -| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | -| E.cs:285:9:285:9 | access to local variable o | -| E.cs:285:9:285:9 | access to local variable o | -| E.cs:301:13:301:27 | SSA def(s) | -| E.cs:302:9:302:9 | access to local variable s | -| E.cs:319:29:319:30 | SSA param(s1) | -| E.cs:321:13:321:30 | [true] ... is ... | -| E.cs:321:14:321:21 | ... ?? ... | -| E.cs:321:20:321:21 | access to parameter s2 | -| E.cs:323:13:323:14 | access to parameter s1 | -| E.cs:330:13:330:36 | SSA def(x) | -| E.cs:331:9:331:9 | access to local variable x | -| E.cs:342:13:342:32 | SSA def(x) | -| E.cs:343:9:343:9 | access to local variable x | -| E.cs:348:17:348:36 | SSA def(x) | -| E.cs:349:9:349:9 | access to local variable x | -| E.cs:366:28:366:28 | SSA param(s) | -| E.cs:366:41:366:41 | access to parameter s | -| E.cs:374:17:374:31 | SSA def(s) | -| E.cs:375:20:375:20 | access to local variable s | -| E.cs:380:24:380:25 | SSA param(e1) | -| E.cs:380:24:380:25 | SSA param(e1) | -| E.cs:380:24:380:25 | SSA param(e1) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:380:30:380:31 | SSA param(e2) | -| E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:384:9:385:24 | if (...) ... | -| E.cs:384:9:385:24 | if (...) ... | -| E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:27:384:28 | access to parameter e2 | -| E.cs:386:16:386:17 | access to parameter e1 | -| E.cs:386:27:386:28 | access to parameter e2 | -| E.cs:404:9:404:18 | SSA def(i) | -| E.cs:404:9:404:18 | SSA def(i) | -| E.cs:405:16:405:16 | access to local variable i | -| E.cs:417:24:417:40 | SSA capture def(i) | -| E.cs:417:34:417:34 | access to parameter i | -| E.cs:423:28:423:44 | SSA capture def(i) | -| E.cs:423:38:423:38 | access to parameter i | -| E.cs:430:29:430:45 | SSA capture def(i) | -| E.cs:430:39:430:39 | access to parameter i | -| E.cs:435:29:435:29 | SSA param(s) | -| E.cs:437:13:437:21 | [true] ... is ... | -| E.cs:438:9:440:9 | {...} | -| E.cs:439:13:439:13 | access to parameter s | -| E.cs:442:9:445:9 | if (...) ... | -| E.cs:442:13:442:29 | [true] ... is ... | -| E.cs:442:18:442:29 | [match] not ... | -| E.cs:442:22:442:29 | [no-match] not ... | -| E.cs:443:9:445:9 | {...} | -| E.cs:444:13:444:13 | access to parameter s | -| E.cs:447:9:450:9 | if (...) ... | -| E.cs:447:13:447:25 | [false] ... is ... | -| E.cs:447:18:447:25 | [no-match] not ... | -| E.cs:452:9:455:9 | if (...) ... | -| E.cs:452:13:452:23 | [false] ... is ... | -| E.cs:457:9:464:9 | if (...) ... | -| E.cs:457:13:457:27 | [true] ... is ... | -| E.cs:457:18:457:27 | [match] not ... | -| E.cs:459:13:459:13 | access to parameter s | -| F.cs:7:16:7:23 | SSA def(o) | -| F.cs:8:9:8:9 | access to local variable o | -| Forwarding.cs:7:16:7:23 | SSA def(s) | -| Forwarding.cs:9:13:9:30 | [false] !... | -| Forwarding.cs:14:9:17:9 | if (...) ... | -| Forwarding.cs:19:9:22:9 | if (...) ... | -| Forwarding.cs:19:13:19:23 | [false] !... | -| Forwarding.cs:24:9:27:9 | if (...) ... | -| Forwarding.cs:29:9:32:9 | if (...) ... | -| Forwarding.cs:34:9:37:9 | if (...) ... | -| Forwarding.cs:35:9:37:9 | {...} | -| Forwarding.cs:36:31:36:31 | access to local variable s | -| Forwarding.cs:40:27:40:27 | access to local variable s | -| GuardedString.cs:7:16:7:32 | SSA def(s) | -| GuardedString.cs:9:13:9:36 | [false] !... | -| GuardedString.cs:14:9:17:9 | if (...) ... | -| GuardedString.cs:14:13:14:41 | [false] !... | -| GuardedString.cs:19:9:20:40 | if (...) ... | -| GuardedString.cs:19:26:19:26 | 0 | -| GuardedString.cs:22:9:23:40 | if (...) ... | -| GuardedString.cs:22:25:22:25 | 0 | -| GuardedString.cs:25:9:26:40 | if (...) ... | -| GuardedString.cs:25:26:25:26 | 0 | -| GuardedString.cs:28:9:29:40 | if (...) ... | -| GuardedString.cs:28:25:28:26 | 10 | -| GuardedString.cs:31:9:32:40 | if (...) ... | -| GuardedString.cs:31:26:31:27 | 10 | -| GuardedString.cs:34:9:37:40 | if (...) ... | -| GuardedString.cs:34:26:34:26 | 0 | -| GuardedString.cs:35:31:35:31 | access to local variable s | -| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | -| NullAlwaysBad.cs:9:30:9:30 | access to parameter s | -| NullMaybeBad.cs:7:27:7:27 | access to parameter o | -| NullMaybeBad.cs:13:17:13:20 | null | -| Params.cs:14:17:14:20 | access to parameter args | -| Params.cs:20:12:20:15 | null | -| StringConcatenation.cs:14:16:14:23 | SSA def(s) | -| StringConcatenation.cs:15:16:15:16 | access to local variable s | -| StringConcatenation.cs:16:17:16:17 | access to local variable s | +| C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this | +| C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this | +| C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this | +| C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this | +| C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this | +| C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this | +| C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this | +| C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this | +| D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this | +| D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this | +| D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this | +| D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | +| D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | +| D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | +| D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | +| D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this | +| D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | +| D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | +| D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this | +| D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this | +| D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | +| D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this | +| D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | +| D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | +| D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this | +| D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this | +| D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this | +| D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this | +| D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this | +| E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this | +| E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this | +| E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this | +| E.cs:35:9:35:12 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | E.cs:32:16:32:19 | last | last | E.cs:32:16:32:26 | String last = ... | this | +| E.cs:43:13:43:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | E.cs:32:16:32:19 | last | last | E.cs:37:9:37:19 | ... = ... | this | +| E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this | +| E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this | +| E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this | +| E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this | +| E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this | +| E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | +| E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this | +| E.cs:229:13:229:13 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this | +| E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this | +| E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this | +| E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | +| E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this | +| E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this | +| E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this | +| E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | +| E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this | +| E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | +| E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | +| E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | +| E.cs:444:13:444:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:23:437:31 | ... is ... | this | +| E.cs:459:13:459:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:23:437:31 | ... is ... | this | +| GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | +| NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | +| Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | +| StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this | From b392767252083ef97fb030789fd6c275acf37130 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 3 Oct 2025 15:08:49 +0200 Subject: [PATCH 034/965] C#: Accept qltest changes. --- .../AssignableDefinitionNode.expected | 1 - .../controlflow/graph/BasicBlock.expected | 446 +- .../graph/CONSISTENCY/CfgConsistency.expected | 6 + .../controlflow/graph/Condition.expected | 2526 ++---- .../controlflow/graph/Dominance.expected | 7917 ++++++++--------- .../graph/EnclosingCallable.expected | 1510 ++-- .../controlflow/graph/NodeGraph.expected | 1480 ++- .../controlflow/graph/Nodes.expected | 840 -- .../guards/BooleanGuardedExpr.expected | 5 +- .../guards/GuardedControlFlowNode.expected | 106 +- .../controlflow/guards/GuardedExpr.expected | 10 +- .../guards/NullGuardedExpr.expected | 3 +- .../CONSISTENCY/CfgConsistency.expected | 3 - .../splits/SplittingStressTest.expected | 2302 +---- .../CallSensitivityFlow.expected | 8 +- .../dataflow/global/DataFlow.expected | 7 +- .../dataflow/global/DataFlowPath.expected | 80 +- .../dataflow/global/GetAnOutNode.expected | 12 +- .../dataflow/global/TaintTracking.expected | 7 +- .../global/TaintTrackingPath.expected | 80 +- .../dataflow/local/DataFlow.expected | 8 +- .../dataflow/local/DataFlowStep.expected | 192 +- .../dataflow/local/TaintTracking.expected | 10 +- .../dataflow/local/TaintTrackingStep.expected | 227 +- .../modulusanalysis/ModulusAnalysis.expected | 66 +- .../signanalysis/SignAnalysis.expected | 20 +- .../dataflow/ssa/SSAPhi.expected | 6 +- .../dataflow/ssa/SsaDef.expected | 17 +- .../dataflow/ssa/SsaDefElement.expected | 44 +- .../dataflow/ssa/SsaExplicitDef.expected | 14 +- .../dataflow/ssa/SsaRead.expected | 27 +- .../dataflow/ssa/SsaUltimateDef.expected | 20 +- .../ConstantCondition.expected | 62 +- .../DeadStoreOfLocal/DeadStoreOfLocal.cs | 2 +- .../DeadStoreOfLocal.expected | 1 - .../Nullness/Implications.expected | 38 +- .../ConstantCondition.expected | 4 +- 37 files changed, 6729 insertions(+), 11378 deletions(-) create mode 100644 csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected delete mode 100644 csharp/ql/test/library-tests/controlflow/splits/CONSISTENCY/CfgConsistency.expected diff --git a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected index 0189d522a6c..cbac7059afd 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected +++ b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected @@ -81,7 +81,6 @@ | Discards.cs:25:22:25:22 | String _ | Discards.cs:25:22:25:22 | String _ | | Finally.cs:7:13:7:17 | Int32 i = ... | Finally.cs:7:13:7:17 | Int32 i = ... | | Finally.cs:15:13:15:17 | ... = ... | Finally.cs:15:13:15:17 | ... = ... | -| Finally.cs:15:13:15:17 | ... = ... | Finally.cs:15:13:15:17 | [finally: exception] ... = ... | | Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:16:7:23 | Object o = ... | | Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:18:8:23 | Int32 i1 | | Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:23:12:31 | String s1 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index 4f78a6f8303..b8ec85b3641 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -69,119 +69,118 @@ | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (normal) | 6 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:20 | access to parameter b | 4 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | 1 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | 7 | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | 7 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:31 | ... != ... | 6 | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | 1 | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | 1 | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 2 | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (normal) | 6 | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | 1 | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | 1 | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | 1 | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | 1 | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | 1 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:20 | access to parameter b | 4 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | 1 | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | 7 | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | 7 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:32 | ... == ... | 6 | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | 1 | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | 1 | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 2 | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (normal) | 6 | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | 1 | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | 1 | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | 1 | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | 1 | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | 1 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:20 | access to parameter b | 4 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | 1 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | 7 | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | 7 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:31 | ... == ... | 6 | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | 1 | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | 1 | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 2 | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (normal) | 6 | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | 1 | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | 1 | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | 1 | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | 1 | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | 1 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:20 | access to parameter b | 4 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | 1 | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | 7 | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | 7 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:32 | ... != ... | 6 | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | 1 | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | 1 | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 2 | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (normal) | 6 | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | 1 | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | 1 | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | 1 | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | 1 | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | 1 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:20 | access to parameter b | 4 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | 1 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | 1 | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | 7 | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | 7 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | 1 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | 1 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | 5 | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | 5 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | 1 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | 1 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | 5 | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | 5 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | 1 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | 1 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | 7 | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | 7 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | 1 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | 1 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | 7 | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | 7 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | 1 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | 1 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | 7 | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | 7 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | 1 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | 1 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | 7 | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | 7 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | 1 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | 1 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | 7 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | 7 | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | 7 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | 1 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | 1 | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | 1 | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | 1 | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | 1 | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | 1 | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | 1 | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | 7 | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | 1 | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | 1 | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | 1 | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | 1 | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | 1 | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | 7 | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | 1 | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | 7 | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | 1 | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | 1 | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | 1 | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | 7 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:22:87:30 | ... != ... | 6 | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | 1 | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | 1 | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | 1 | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:13:90:13 | access to parameter b | 7 | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:23:91:23 | access to local variable s | 4 | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | 1 | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | 1 | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | 1 | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:13:94:13 | access to parameter b | 7 | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:26:95:26 | access to local variable s | 4 | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | 1 | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | 1 | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | 1 | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:13:98:13 | access to parameter b | 7 | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:23:99:31 | ... == ... | 6 | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | 1 | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | 1 | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | 1 | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:13 | access to parameter b | 7 | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:23:103:31 | ... != ... | 6 | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | 1 | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | 1 | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | 1 | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:13 | access to parameter b | 7 | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:24:107:32 | ... != ... | 6 | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | 1 | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | 1 | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | 1 | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:13 | access to parameter b | 7 | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:24:111:32 | ... == ... | 6 | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | 1 | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | 1 | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | 1 | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:13 | access to parameter b | 7 | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:31 | ... != ... | 6 | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | 1 | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | 1 | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | 1 | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:13 | access to parameter b | 7 | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | 1 | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | 1 | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | 1 | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:32 | ... == ... | 6 | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | 1 | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | 1 | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | 1 | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:13 | access to parameter b | 7 | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | 1 | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | 1 | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | 1 | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | 1 | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | 1 | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:31 | ... == ... | 6 | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | 1 | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | 1 | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | 1 | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:13 | access to parameter b | 7 | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | 1 | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | 1 | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | 1 | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:32 | ... != ... | 6 | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | 1 | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | 1 | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | 1 | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (normal) | 6 | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | 1 | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | 1 | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | 1 | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | 1 | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | 1 | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | 1 | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse | 4 | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:25:140:26 | access to parameter b1 | 5 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | 1 | @@ -206,31 +205,24 @@ | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:22:29:22:32 | access to parameter args | 3 | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | 1 | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | ... == ... | 8 | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | 6 | +| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | 1 | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | 5 | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | 1 | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | 1 | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 | 3 | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:42:17:42:28 | ... == ... | 8 | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 | 2 | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | 3 | +| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | 1 | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | 2 | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | 1 | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | 1 | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | ... == ... | 6 | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | 6 | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:50:21:50:26 | [finally: return] break; | 1 | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | 1 | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | 1 | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:60:17:60:28 | ... == ... | 8 | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 | 2 | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | 3 | +| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | 1 | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | 2 | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | 1 | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | 1 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | ... == ... | 6 | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | 6 | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:68:21:68:26 | [finally: return] break; | 1 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | 1 | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | 5 | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | exit Default | 6 | @@ -238,7 +230,11 @@ | CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | 6 | | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | 6 | | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | 5 | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M | 15 | +| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | 9 | +| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | 1 | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | 1 | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | 3 | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | 5 | | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | 5 | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 2 | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | 2 | @@ -279,49 +275,41 @@ | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 5 | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | 2 | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | 5 | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | 2 | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | ...++ | 3 | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | 2 | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | 1 | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | 1 | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:15 | ...-- | 3 | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:14:13:14:13 | access to parameter b | 7 | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | 7 | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | 4 | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | 2 | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | 2 | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:15 | ...++ | 3 | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | ... > ... | 4 | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | 2 | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | 1 | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | 1 | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:19 | ...-- | 3 | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | exit M1 | 4 | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:25:13:25:14 | access to parameter b1 | 7 | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | 2 | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | 5 | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | 2 | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:19 | ...++ | 3 | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | 2 | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:15 | ...++ | 3 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | exit M2 | 4 | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:37:13:37:14 | access to parameter b1 | 10 | | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:19 | ... = ... | 3 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | 2 | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | 5 | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | 2 | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:15 | ...++ | 3 | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | 2 | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:15 | ...++ | 3 | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | exit M3 | 4 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:16:49:22 | ... > ... | 10 | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | 4 | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | 3 | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | 3 | +| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:9:53:9 | while (...) ... | 6 | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:22 | ... > ... | 4 | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:17:51:17 | access to parameter b | 3 | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | 7 | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:19 | ...++ | 3 | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | exit M4 | 4 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:16:60:22 | ... > ... | 10 | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | 4 | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | 3 | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | 3 | +| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:9:64:9 | while (...) ... | 6 | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:22 | ... > ... | 4 | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:17:62:17 | access to parameter b | 3 | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | 7 | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | 2 | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | 2 | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:19 | ...++ | 3 | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | 2 | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:15 | ...++ | 3 | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | exit M5 | 4 | @@ -344,10 +332,9 @@ | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | ...++ | 3 | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | exit M7 | 4 | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:105:13:105:13 | access to parameter b | 8 | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | 10 | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | 5 | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | 2 | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | 2 | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... = ... | 5 | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | 5 | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | 2 | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | 1 | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | 1 | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... = ... | 5 | @@ -357,26 +344,21 @@ | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:39 | ... < ... | 4 | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | 2 | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:18:119:21 | access to local variable last | 11 | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | 1 | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | 1 | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | 5 | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | 2 | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | 1 | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | 1 | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:22 | ... = ... | 3 | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | 2 | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:24 | ... = ... | 3 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | true | 4 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | 1 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | 1 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | 4 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | 4 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | 4 | +| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:9:140:9 | while (...) ... | 3 | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | 1 | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:17:133:22 | access to field Field1 | 4 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | 4 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | 4 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | 4 | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | 6 | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:21:135:26 | access to field Field2 | 4 | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:37 | call to method ToString | 5 | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:17 | access to parameter b | 4 | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | 2 | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | 5 | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | 5 | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:146:13:146:13 | access to parameter b | 4 | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | 1 | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | 1 | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | call to method WriteLine | 6 | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | call to method WriteLine | 6 | | ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods | 5 | @@ -433,61 +415,50 @@ | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 5 | | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | exit Main | 20 | | Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | exit Finally | 5 | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:11:13:11:37 | call to method WriteLine | 7 | +| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:15:13:15:40 | call to method WriteLine | 11 | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | 1 | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:7:10:7:11 | exit M1 (abnormal) | 5 | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | exit M1 (normal) | 5 | +| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | 1 | +| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | 1 | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:23:13:23:37 | call to method WriteLine | 7 | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | 1 | +| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | 1 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | 1 | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | 5 | +| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | 1 | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | 1 | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | 2 | | Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | 2 | | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | 1 | | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:34:21:34:24 | true | 6 | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:38:17:38:44 | [finally: exception] throw ...; | 5 | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:38:17:38:44 | throw ...; | 5 | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | 5 | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:19:10:19:11 | exit M2 (abnormal) | 5 | +| Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | 1 | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | 4 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:58:13:58:37 | call to method WriteLine | 7 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | 1 | +| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | 1 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | 1 | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | 5 | +| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | 1 | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | 1 | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | 2 | | Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | 2 | | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | 1 | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | 5 | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | 5 | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:54:10:54:11 | exit M3 (abnormal) | 5 | +| Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | 1 | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | 4 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:77:9:100:9 | while (...) ... | 6 | | Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | 1 | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | 1 | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 (normal) | 1 | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:20 | ... > ... | 3 | | Finally.cs:78:9:100:9 | {...} | Finally.cs:81:21:81:26 | ... == ... | 7 | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:92:25:92:30 | [finally: return] ... == ... | 8 | +| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | 1 | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:26 | ... == ... | 4 | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:92:25:92:30 | [finally: continue] ... == ... | 8 | +| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | 1 | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:26 | ... == ... | 4 | -| Finally.cs:86:21:86:26 | break; | Finally.cs:92:25:92:30 | [finally: break] ... == ... | 8 | +| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | 1 | | Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | ... == ... | 7 | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:93:25:93:46 | [finally: break] throw ...; | 1 | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | 1 | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:93:25:93:46 | [finally: return] throw ...; | 1 | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | 1 | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | 1 | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | 1 | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | 1 | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | 1 | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:97:21:97:23 | [finally: break] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:97:21:97:23 | [finally: continue] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | 4 | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:97:21:97:23 | [finally: return] ...-- | 4 | | Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:23 | ...-- | 4 | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:107:17:107:21 | access to field Field | 7 | | Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | 1 | @@ -495,59 +466,35 @@ | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | 1 | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | 1 | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | 2 | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:19:114:35 | [finally: return] ... == ... | 8 | +| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | 1 | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | access to field Field | 3 | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | 1 | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | 2 | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | 1 | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | 1 | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:19:114:35 | [finally: exception] ... == ... | 7 | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | ... == ... | 7 | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | 1 | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:114:17:114:36 | [false, finally: return] !... | 1 | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | 1 | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | 1 | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:114:17:114:36 | [true, finally: return] !... | 1 | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | 1 | | Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | call to method WriteLine | 4 | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | 4 | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | 4 | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:116:17:116:32 | [finally: exception] ... > ... | 6 | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:116:17:116:32 | [finally: return] ... > ... | 6 | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:32 | ... > ... | 6 | | Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:36 | call to method WriteLine | 3 | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | 3 | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | 3 | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | exit M6 | 12 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:137:13:137:36 | call to method WriteLine | 7 | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | exit M7 | 2 | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:141:13:141:44 | [finally: exception] throw ...; | 4 | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:13:141:44 | throw ...; | 4 | +| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | exit M7 | 13 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:151:17:151:28 | ... == ... | 8 | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | 1 | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | 1 | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | 1 | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | 1 | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | 1 | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:158:21:158:31 | [finally: exception] access to property Length | 6 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:31 | access to property Length | 6 | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | 2 | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:158:21:158:36 | [finally: exception] ... == ... | 2 | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | 1 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | 1 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | 2 | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | 2 | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | 1 | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | 1 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | 1 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | 1 | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | 5 | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | 5 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | 5 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | 5 | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | 6 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | 6 | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | 5 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:167:17:167:37 | call to method WriteLine | 5 | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA | 5 | | Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB | 5 | @@ -556,67 +503,47 @@ | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | 1 | | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | 1 | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | 1 | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | 1 | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | 1 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | 5 | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | 5 | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | 2 | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | 2 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | 1 | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | 1 | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | 1 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | 1 | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | 1 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | 1 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | 1 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | 1 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | 3 | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | 3 | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:190:25:190:47 | [finally: exception] throw ...; | 2 | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | 1 | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | 1 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | 5 | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | 2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | 1 | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | 1 | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | 1 | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | 1 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | 3 | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | 2 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:17:199:18 | access to parameter b1 | 6 | | Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | 1 | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | 1 | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | 1 | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | 1 | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | 5 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | access to parameter b2 | 5 | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | 1 | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | 1 | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | 1 | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | 1 | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | 3 | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | 3 | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | 3 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | 3 | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | 2 | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | 2 | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception] throw ...; | 2 | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | 2 | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | exit M10 (normal) | 9 | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:211:13:211:28 | [finally: exception] ... = ... | 4 | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | ... = ... | 4 | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | exit M10 (normal) | 5 | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:220:13:220:36 | call to method WriteLine | 7 | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:224:13:224:38 | call to method WriteLine | 5 | | Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | exit M11 | 9 | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:239:21:239:22 | access to parameter b1 | 8 | | Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | 1 | +| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | 1 | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | 1 | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | 1 | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | 5 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | access to parameter b2 | 5 | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | 1 | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | 1 | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | 1 | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | 1 | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | 4 | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | 4 | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | 4 | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:254:13:254:44 | call to method WriteLine | 7 | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | 5 | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | exit M12 (normal) | 8 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:267:13:267:34 | call to method WriteLine | 7 | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | 4 | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | call to method WriteLine | 3 | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | 4 | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | exit M12 (normal) | 4 | +| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:272:13:272:18 | ... = ... | 16 | | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | 1 | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:263:10:263:12 | exit M13 (abnormal) | 10 | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | exit M13 (normal) | 10 | +| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | 1 | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | 1 | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | exit Foreach | 5 | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:29:8:32 | access to parameter args | 3 | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | 2 | @@ -661,48 +588,60 @@ | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:9:13:9:28 | ... == ... | 7 | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | 2 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | 1 | -| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | 5 | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | 2 | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | 12 | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | 4 | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | 1 | +| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | 11 | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 | 2 | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | 5 | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | 4 | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:29:24:32 | access to parameter args | 3 | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 | 2 | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | 3 | -| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | 5 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | 2 | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | 4 | +| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | 7 | | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 | 2 | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | 20 | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | 4 | +| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | 19 | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | 2 | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | 3 | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | 7 | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | 12 | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | 2 | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | 6 | +| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | 12 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | 2 | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | 2 | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:51:13:51:23 | goto ...; | 5 | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | 12 | +| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | 11 | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 | 2 | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | 1 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | access to parameter b | 4 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | 4 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | 4 | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | 5 | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | 2 | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | 4 | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | 3 | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | 2 | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | 3 | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:14:69:23 | call to method Any | 5 | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | 2 | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | 1 | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | 1 | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | 1 | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | 5 | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | 9 | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:29:72:32 | access to parameter args | 4 | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | 4 | +| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | 8 | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | 2 | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | 9 | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | 5 | +| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | 8 | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | 2 | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | 9 | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | 5 | +| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | 8 | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | 2 | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | 6 | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | 1 | +| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | 5 | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | 2 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | 1 | | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | 2 | @@ -1220,9 +1159,12 @@ | cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | 1 | | cflow.cs:255:13:255:20 | default: | cflow.cs:257:17:257:22 | break; | 5 | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:264:18:264:22 | Int32 i = ... | 7 | +| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | 1 | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | 1 | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | 1 | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:30 | ... < ... | 3 | | cflow.cs:265:9:267:9 | {...} | cflow.cs:264:33:264:35 | ...++ | 5 | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield | 9 | +| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | 7 | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub | 5 | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | exit ControlFlowSub | 5 | | cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | exit ControlFlowSub | 7 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected b/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected new file mode 100644 index 00000000000..ff3ec45f5ce --- /dev/null +++ b/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected @@ -0,0 +1,6 @@ +multipleSuccessors +| BreakInTry.cs:31:21:31:32 | ... == ... | false | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| BreakInTry.cs:31:21:31:32 | ... == ... | false | BreakInTry.cs:35:7:35:7 | ; | +simpleAndNormalSuccessors +| BreakInTry.cs:32:21:32:21 | ; | break | successor | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| Finally.cs:97:21:97:23 | ...-- | break | successor | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:77:16:77:16 | access to local variable i | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected index b4a4cbb6a15..71bcf08de16 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected @@ -27,1053 +27,661 @@ conditionBlock | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:31:51:32 | "" | false | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | true | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | [b (line 56): true] null | true | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | [b (line 56): false] "" | false | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | [true] ... && ... | true | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | false | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | true | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:23:59:36 | [true] ... && ... | true | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | true | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | true | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | true | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | false | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [true] ... && ... | true | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | true | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | [b (line 63): true] null | true | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | [b (line 63): false] "" | false | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | false | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | true | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | false | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | false | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | true | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | false | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | false | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | [b (line 70): true] null | true | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | [b (line 70): false] "" | false | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | [true] ... && ... | true | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | false | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | true | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:23:73:36 | [true] ... && ... | true | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | true | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | true | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | true | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | false | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [true] ... && ... | true | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | true | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | [b (line 77): true] null | true | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | [b (line 77): false] "" | false | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | false | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | true | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | false | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | false | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | true | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | false | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | false | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:17:90:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:24:90:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:24:94:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | false | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | false | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:90:24:90:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:90:24:90:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:94:24:94:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:90:17:90:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | false | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | false | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:94:24:94:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | true | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | true | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:122:17:122:20 | [b (line 84): true] null | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:126:17:126:20 | [b (line 84): true] null | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | true | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | true | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | false | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:17:90:20 | null | true | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:24:90:25 | "" | false | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | false | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:24:94:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:24:98:25 | "" | false | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | false | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:17:122:20 | null | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:17:126:20 | null | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | false | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | false | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | access to parameter b2 | true | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false | @@ -1091,42 +699,16 @@ conditionBlock | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:27:21:27:26 | break; | false | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | false | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | false | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | [finally: break] ; | false | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:27:21:27:26 | break; | true | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:30:13:33:13 | {...} | false | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:32:21:32:21 | ; | false | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:32:21:32:21 | [finally: break] ; | true | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | true | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:32:21:32:21 | ; | true | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:43:17:43:23 | return ...; | true | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:46:9:52:9 | {...} | false | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | true | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:26:47:28 | String arg | false | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | true | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:50:21:50:26 | [finally: return] break; | true | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:50:21:50:26 | break; | false | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:53:7:53:7 | ; | false | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | false | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | [finally: return] break; | false | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | false | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | false | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:50:21:50:26 | break; | true | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:50:21:50:26 | [finally: return] break; | true | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:61:17:61:23 | return ...; | true | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:64:9:70:9 | {...} | false | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | true | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:26:65:28 | String arg | false | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | true | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:68:21:68:26 | [finally: return] break; | true | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:68:21:68:26 | break; | false | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | false | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | [finally: return] break; | false | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | false | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | false | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:68:21:68:26 | break; | true | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:68:21:68:26 | [finally: return] break; | true | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:38 | call to method ToString | false | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | false | | ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | false | @@ -1149,71 +731,38 @@ conditionBlock | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false | | ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false | | ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:24 | call to method Out | false | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | true | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | false | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:8:13:8:16 | ...; | false | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:8:13:8:16 | ...; | false | +| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | true | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | true | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | false | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:8:13:8:16 | ...; | false | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | true | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | false | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | false | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | true | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:18:17:18:20 | ...; | false | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | true | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | true | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | true | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:18:17:18:20 | ...; | false | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | ...; | true | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | true | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | true | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | true | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | false | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | false | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:26:13:27:20 | if (...) ... | true | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | true | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | true | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:28:9:29:16 | if (...) ... | false | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | true | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | false | +| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | ...; | true | +| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | true | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:29:13:29:16 | ...; | true | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:38:13:38:20 | ...; | true | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | true | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | false | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | true | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:42:13:42:16 | ...; | true | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | true | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | true | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | true | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | {...} | true | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | true | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | false | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | false | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | true | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | {...} | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | true | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | if (...) ... | false | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | true | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | true | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | true | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | true | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | false | +| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | true | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | true | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | true | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | true | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:54:16:54:16 | access to local variable y | false | +| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | ...; | true | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | true | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | true | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:65:9:66:16 | if (...) ... | false | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:66:13:66:16 | ...; | false | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:67:16:67:16 | access to local variable y | false | +| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | ...; | true | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:66:13:66:16 | ...; | true | | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | false | | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:77:17:77:20 | ...; | false | | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:78:13:79:26 | if (...) ... | false | @@ -1234,77 +783,38 @@ conditionBlock | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:93:17:93:20 | ...; | true | | Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:95:17:95:26 | ...; | true | | Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:97:17:97:20 | ...; | true | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | true | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | false | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | false | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:109:17:109:24 | ...; | false | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | true | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | true | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:24 | ...; | false | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | ...; | true | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | true | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | true | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | true | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | false | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | false | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | exit M9 (normal) | false | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | true | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | true | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | true | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | true | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | true | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | true | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | true | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | false | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | false | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | true | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | false | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:122:17:122:25 | ...; | false | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | true | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | false | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | false | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | false | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | false | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | false | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | true | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | false | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:147:13:147:49 | ...; | true | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:149:13:149:49 | ...; | false | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:147:13:147:49 | ...; | true | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:149:13:149:49 | ...; | false | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false] !... | true | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true] !... | false | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | ...; | false | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:122:17:122:25 | ...; | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:134:13:139:13 | {...} | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | {...} | true | +| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | "a" | true | +| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | "b" | false | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:147:13:147:49 | ...; | true | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:149:13:149:49 | ...; | false | | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | false | | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | false | | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | true | @@ -1353,254 +863,62 @@ conditionBlock | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:86:21:86:26 | break; | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:89:13:99:13 | {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: break] throw ...; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: return] throw ...; | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | throw ...; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: break] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: continue] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: return] {...} | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | {...} | true | | Finally.cs:78:9:100:9 | {...} | Finally.cs:82:21:82:27 | return ...; | true | | Finally.cs:78:9:100:9 | {...} | Finally.cs:83:17:84:29 | if (...) ... | false | | Finally.cs:78:9:100:9 | {...} | Finally.cs:84:21:84:29 | continue; | false | | Finally.cs:78:9:100:9 | {...} | Finally.cs:85:17:86:26 | if (...) ... | false | | Finally.cs:78:9:100:9 | {...} | Finally.cs:86:21:86:26 | break; | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:89:13:99:13 | {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: break] throw ...; | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: return] throw ...; | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | throw ...; | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: break] {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: continue] {...} | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: return] {...} | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:93:25:93:46 | [finally: return] throw ...; | true | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | true | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | true | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:96:17:98:17 | [finally: return] {...} | false | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:84:21:84:29 | continue; | true | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | false | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:86:21:86:26 | break; | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:89:13:99:13 | {...} | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | [finally: break] throw ...; | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | true | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | throw ...; | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | true | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | object creation of type Exception | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break] {...} | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | true | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: continue] {...} | true | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | true | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | true | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | true | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:96:17:98:17 | [finally: continue] {...} | false | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:86:21:86:26 | break; | true | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:89:13:99:13 | {...} | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:25:93:46 | [finally: break] throw ...; | true | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:25:93:46 | throw ...; | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | true | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:31:93:45 | object creation of type Exception | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | true | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break] {...} | true | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:86:21:86:26 | break; | Finally.cs:93:25:93:46 | [finally: break] throw ...; | true | -| Finally.cs:86:21:86:26 | break; | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | true | -| Finally.cs:86:21:86:26 | break; | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | true | -| Finally.cs:86:21:86:26 | break; | Finally.cs:96:17:98:17 | [finally: break] {...} | false | | Finally.cs:89:13:99:13 | {...} | Finally.cs:93:25:93:46 | throw ...; | true | | Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | true | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:96:17:98:17 | {...} | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:108:17:108:23 | return ...; | true | | Finally.cs:107:33:107:33 | 0 | Finally.cs:109:13:110:49 | if (...) ... | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:109:17:109:28 | access to property Length | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:109:33:109:33 | 1 | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:110:17:110:49 | throw ...; | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:113:9:118:9 | {...} | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [false, finally: return] !... | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [false] !... | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [true, finally: return] !... | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:115:17:115:41 | ...; | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:115:17:115:41 | [finally: return] ...; | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:117:17:117:37 | ...; | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:117:17:117:37 | [finally: return] ...; | true | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:17:114:36 | [false, finally: return] !... | true | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:17:114:36 | [true, finally: return] !... | false | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:115:17:115:41 | [finally: return] ...; | false | | Finally.cs:109:33:109:33 | 1 | Finally.cs:110:17:110:49 | throw ...; | true | | Finally.cs:109:33:109:33 | 1 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:113:9:118:9 | {...} | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:114:17:114:36 | [false] !... | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:115:17:115:41 | ...; | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:117:17:117:37 | ...; | false | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:17:114:36 | [false, finally: exception] !... | true | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:17:114:36 | [true, finally: exception] !... | false | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:115:17:115:41 | [finally: exception] ...; | false | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [false] !... | true | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [true] !... | false | | Finally.cs:113:9:118:9 | {...} | Finally.cs:115:17:115:41 | ...; | false | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:115:17:115:41 | [finally: exception] ...; | true | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:41 | [finally: return] ...; | true | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:117:17:117:37 | [finally: exception] ...; | true | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:117:17:117:37 | [finally: return] ...; | true | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:117:17:117:37 | ...; | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (abnormal) | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (normal) | false | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:17:152:50 | throw ...; | true | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:155:9:169:9 | [finally: exception] {...} | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:155:9:169:9 | {...} | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | 1 | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | [finally: exception] 1 | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | throw ...; | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | "1" | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | [finally: exception] "1" | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | [finally: exception] {...} | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | {...} | false | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | catch {...} | false | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:21:159:45 | throw ...; | true | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | true | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:159:41:159:43 | [finally: exception] "1" | true | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | true | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | true | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | true | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | false | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | true | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | true | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | throw ...; | true | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | true | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | true | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:21:199:43 | throw ...; | true | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:202:9:212:9 | [finally: exception] {...} | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:202:9:212:9 | {...} | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:25:205:47 | throw ...; | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally: exception] {...} | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | {...} | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:211:13:211:29 | [finally: exception] ...; | true | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | true | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | true | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | true | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception] {...} | false | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | false | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:211:13:211:29 | [finally: exception] ...; | false | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:25:205:47 | throw ...; | true | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | true | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:208:13:210:13 | {...} | false | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | false | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:211:13:211:29 | [finally: exception] ...; | false | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | | Finally.cs:208:13:210:13 | {...} | Finally.cs:211:13:211:29 | ...; | false | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:213:9:213:25 | ...; | false | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:21:240:43 | throw ...; | true | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:243:13:253:13 | [finally: exception] {...} | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:243:13:253:13 | {...} | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:25:247:47 | throw ...; | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally: exception] {...} | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | {...} | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:257:9:259:9 | {...} | false | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | true | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | true | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | true | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception] {...} | false | | Finally.cs:243:13:253:13 | {...} | Finally.cs:247:25:247:47 | throw ...; | true | | Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | true | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:250:17:252:17 | {...} | false | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:257:9:259:9 | {...} | false | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 (normal) | true | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | false | | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 (normal) | true | @@ -1615,60 +933,51 @@ conditionBlock | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | exit M6 (normal) | true | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | false | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:10:13:10:19 | return ...; | true | +| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | false | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:22:11:24 | String arg | false | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:22:11:24 | String arg | false | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | false | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:22:18:22 | String x | false | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | true | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | false | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | true | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | false | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | true | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | false | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | false | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | true | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | false | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:22:40:22 | String x | false | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:41:26:41:26 | String y | false | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | true | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | false | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | true | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | false | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:26:41:26 | String y | false | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | true | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | true | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | false | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | false | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | false | +| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | true | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:22:48:22 | String x | false | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:50:9:50:13 | Label: | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | String x | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | false | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | false | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | false | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | true | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | true | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | false | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | false | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | true | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | false | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | false | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | false | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | ...; | true | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | true | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [false] !... | true | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [true] !... | false | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:70:13:70:19 | return ...; | false | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:71:9:71:21 | ...; | true | +| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | true | +| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:22:72:24 | String arg | true | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | false | +| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:22:72:24 | String arg | false | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | true | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | true | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | true | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | false | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:22:97:22 | String x | false | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | true | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | false | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | true | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | false | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | true | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | false | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | true | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | false | | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:28:3:28 | 0 | true | | NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | true | | NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:30:5:34 | false | true | @@ -2360,6 +1669,9 @@ conditionBlock | cflow.cs:250:13:250:19 | case ...: | cflow.cs:253:13:253:19 | case ...: | false | | cflow.cs:250:13:250:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | false | | cflow.cs:253:13:253:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | true | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield | false | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (abnormal) | false | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (normal) | false | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | true | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:268:9:276:9 | try {...} ... | false | | cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:51 | [false] !... | true | @@ -2391,111 +1703,98 @@ conditionFlow | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | false | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | true | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | [b (line 56): true] null | true | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | [b (line 56): false] "" | false | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | true | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | true | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | true | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | [b (line 63): true] null | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | [b (line 63): false] "" | false | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | false | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | false | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | true | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | false | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | [b (line 70): true] null | true | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | [b (line 70): false] "" | false | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | true | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | true | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | true | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | [b (line 77): true] null | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | [b (line 77): false] "" | false | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | false | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | false | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | true | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | false | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | true | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | [b (line 84): false] "" | false | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | false | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | true | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | false | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | true | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | Assert.cs:90:24:90:25 | [b (line 84): false] "" | false | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | true | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | Assert.cs:94:24:94:25 | [b (line 84): false] "" | false | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | true | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | false | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | true | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | false | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | false | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | false | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | false | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | false | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | false | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | true | | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false | @@ -2510,74 +1809,51 @@ conditionFlow | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | false | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | false | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | true | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:32:21:32:21 | [finally: break] ; | true | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | true | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | false | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | false | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | true | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | false | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:50:21:50:26 | [finally: return] break; | true | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | true | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | false | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | false | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | true | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | false | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:68:21:68:26 | [finally: return] break; | true | | ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:14:20:14:20 | 0 | true | | ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:16:20:16:20 | 1 | false | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | true | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | false | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | true | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | false | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | false | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | true | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | false | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | true | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | true | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | true | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | false | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | true | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:19:16:19:16 | access to local variable x | false | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | true | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | false | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | true | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | false | -| Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | -| Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | true | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | false | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | | Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:38:13:38:20 | ...; | true | | Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:39:9:40:16 | if (...) ... | false | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | true | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | false | -| Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | true | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | false | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | true | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | true | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | true | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | false | -| Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | access to parameter x | false | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | true | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | true | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | false | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | true | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | false | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | true | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | false | -| Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | false | -| Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | -| Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | access to parameter x | false | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | true | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | | Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:77:17:77:20 | ...; | true | @@ -2592,41 +1868,31 @@ conditionFlow | Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:96:13:97:20 | if (...) ... | false | | Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | false | | Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:97:17:97:20 | ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | false | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | true | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | true | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | false | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | true | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:110:16:110:16 | access to local variable x | false | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | | Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:113:10:113:11 | exit M9 (normal) | false | | Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:117:9:123:9 | {...} | true | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | false | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | false | -| Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:121:13:122:25 | if (...) ... | false | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | true | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | false | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | | Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | false | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | false | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | true | false | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | true | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:131:16:131:19 | true | false | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | true | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | false | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | | ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | false | | ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:69:19:69:33 | object creation of type Exception | true | | ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:75:19:75:33 | object creation of type Exception | true | @@ -2655,82 +1921,48 @@ conditionFlow | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:89:13:99:13 | {...} | false | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | true | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:96:17:98:17 | [finally: break] {...} | false | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:96:17:98:17 | [finally: continue] {...} | false | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:96:17:98:17 | [finally: return] {...} | false | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | true | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | false | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:113:9:118:9 | {...} | false | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | false | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | false | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:115:17:115:41 | [finally: exception] ...; | true | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:41 | [finally: return] ...; | true | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | true | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | true | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | false | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [false, finally: return] !... | true | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [true, finally: return] !... | false | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | false | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | true | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:117:17:117:37 | [finally: exception] ...; | true | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:117:17:117:37 | [finally: return] ...; | true | | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:159:41:159:43 | [finally: exception] "1" | true | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:162:13:164:13 | {...} | true | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | {...} | true | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:162:13:164:13 | [finally: exception] {...} | true | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | false | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | [finally: exception] {...} | true | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | false | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | true | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | false | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | true | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | true | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | false | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | false | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | true | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:208:13:210:13 | [finally: exception] {...} | false | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | false | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:211:13:211:29 | [finally: exception] ...; | false | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | false | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | false | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | true | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:250:17:252:17 | [finally: exception] {...} | false | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | false | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:10:13:10:19 | return ...; | true | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | true | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | true | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | true | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | false | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | true | | LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [false] !... | true | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index bc5082c4c18..89fc10e6019 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -465,27 +465,20 @@ dominance | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:57:5:61:5 | {...} | | Assert.cs:57:5:61:5 | {...} | Assert.cs:58:9:58:33 | ... ...; | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:20:58:20 | access to parameter b | -| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | Assert.cs:59:9:59:38 | [b (line 56): false] ...; | -| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | Assert.cs:59:9:59:38 | [b (line 56): true] ...; | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | [b (line 56): false] "" | -| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | -| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:59:9:59:38 | ...; | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | -| Assert.cs:59:9:59:38 | [b (line 56): true] ...; | Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | -| Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | Assert.cs:59:28:59:31 | [b (line 56): false] null | -| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | Assert.cs:59:28:59:31 | [b (line 56): true] null | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:28:59:31 | [b (line 56): false] null | Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | -| Assert.cs:59:28:59:31 | [b (line 56): true] null | Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | @@ -493,27 +486,20 @@ dominance | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:64:5:68:5 | {...} | | Assert.cs:64:5:68:5 | {...} | Assert.cs:65:9:65:33 | ... ...; | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:20:65:20 | access to parameter b | -| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | Assert.cs:66:9:66:39 | [b (line 63): false] ...; | -| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | Assert.cs:66:9:66:39 | [b (line 63): true] ...; | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | [b (line 63): true] null | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | [b (line 63): false] "" | -| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | -| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:66:9:66:39 | ...; | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | -| Assert.cs:66:9:66:39 | [b (line 63): true] ...; | Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | -| Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | Assert.cs:66:29:66:32 | [b (line 63): false] null | -| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | Assert.cs:66:29:66:32 | [b (line 63): true] null | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:66:29:66:32 | [b (line 63): false] null | Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | -| Assert.cs:66:29:66:32 | [b (line 63): true] null | Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | +| Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | @@ -521,27 +507,20 @@ dominance | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:71:5:75:5 | {...} | | Assert.cs:71:5:75:5 | {...} | Assert.cs:72:9:72:33 | ... ...; | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:20:72:20 | access to parameter b | -| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | Assert.cs:73:9:73:38 | [b (line 70): false] ...; | -| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | Assert.cs:73:9:73:38 | [b (line 70): true] ...; | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | [b (line 70): false] "" | -| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | -| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:73:9:73:38 | ...; | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | -| Assert.cs:73:9:73:38 | [b (line 70): true] ...; | Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | -| Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | Assert.cs:73:28:73:31 | [b (line 70): false] null | -| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | Assert.cs:73:28:73:31 | [b (line 70): true] null | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:28:73:31 | [b (line 70): false] null | Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | -| Assert.cs:73:28:73:31 | [b (line 70): true] null | Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | @@ -549,27 +528,20 @@ dominance | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:78:5:82:5 | {...} | | Assert.cs:78:5:82:5 | {...} | Assert.cs:79:9:79:33 | ... ...; | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:20:79:20 | access to parameter b | -| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | Assert.cs:80:9:80:39 | [b (line 77): false] ...; | -| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | Assert.cs:80:9:80:39 | [b (line 77): true] ...; | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | [b (line 77): true] null | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | [b (line 77): false] "" | -| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | -| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:80:9:80:39 | ...; | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | -| Assert.cs:80:9:80:39 | [b (line 77): true] ...; | Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | -| Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | Assert.cs:80:29:80:32 | [b (line 77): false] null | -| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | Assert.cs:80:29:80:32 | [b (line 77): true] null | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:80:29:80:32 | [b (line 77): false] null | Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | -| Assert.cs:80:29:80:32 | [b (line 77): true] null | Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | +| Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | @@ -577,287 +549,178 @@ dominance | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:85:5:129:5 | {...} | | Assert.cs:85:5:129:5 | {...} | Assert.cs:86:9:86:33 | ... ...; | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:20:86:20 | access to parameter b | -| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | Assert.cs:87:9:87:32 | [b (line 84): false] ...; | -| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | Assert.cs:87:9:87:32 | [b (line 84): true] ...; | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | [b (line 84): false] "" | -| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | -| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:88:9:88:36 | [b (line 84): false] ...; | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:88:9:88:36 | [b (line 84): true] ...; | -| Assert.cs:87:9:87:32 | [b (line 84): false] ...; | Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | -| Assert.cs:87:9:87:32 | [b (line 84): true] ...; | Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | -| Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | Assert.cs:87:27:87:30 | [b (line 84): false] null | -| Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | Assert.cs:87:27:87:30 | [b (line 84): true] null | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:87:27:87:30 | [b (line 84): false] null | Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | -| Assert.cs:87:27:87:30 | [b (line 84): true] null | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | -| Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | Assert.cs:90:9:90:26 | [b (line 84): false] ...; | -| Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | Assert.cs:90:9:90:26 | [b (line 84): true] ...; | -| Assert.cs:88:9:88:36 | [b (line 84): false] ...; | Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | -| Assert.cs:88:9:88:36 | [b (line 84): true] ...; | Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | -| Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | -| Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | -| Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | Assert.cs:91:9:91:25 | [b (line 84): false] ...; | -| Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | Assert.cs:91:9:91:25 | [b (line 84): true] ...; | -| Assert.cs:90:9:90:26 | [b (line 84): false] ...; | Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | -| Assert.cs:90:9:90:26 | [b (line 84): true] ...; | Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | -| Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:92:9:92:36 | [b (line 84): false] ...; | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:92:9:92:36 | [b (line 84): true] ...; | -| Assert.cs:91:9:91:25 | [b (line 84): false] ...; | Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | -| Assert.cs:91:9:91:25 | [b (line 84): true] ...; | Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | Assert.cs:94:9:94:26 | [b (line 84): false] ...; | -| Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | Assert.cs:94:9:94:26 | [b (line 84): true] ...; | -| Assert.cs:92:9:92:36 | [b (line 84): false] ...; | Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | -| Assert.cs:92:9:92:36 | [b (line 84): true] ...; | Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | -| Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | -| Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | -| Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | Assert.cs:95:9:95:28 | [b (line 84): false] ...; | -| Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | Assert.cs:95:9:95:28 | [b (line 84): true] ...; | -| Assert.cs:94:9:94:26 | [b (line 84): false] ...; | Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | -| Assert.cs:94:9:94:26 | [b (line 84): true] ...; | Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | -| Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:96:9:96:36 | [b (line 84): false] ...; | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:96:9:96:36 | [b (line 84): true] ...; | -| Assert.cs:95:9:95:28 | [b (line 84): false] ...; | Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | -| Assert.cs:95:9:95:28 | [b (line 84): true] ...; | Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | Assert.cs:98:9:98:26 | [b (line 84): false] ...; | -| Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | Assert.cs:98:9:98:26 | [b (line 84): true] ...; | -| Assert.cs:96:9:96:36 | [b (line 84): false] ...; | Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | -| Assert.cs:96:9:96:36 | [b (line 84): true] ...; | Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | -| Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | -| Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | -| Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | Assert.cs:99:9:99:33 | [b (line 84): false] ...; | -| Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | Assert.cs:99:9:99:33 | [b (line 84): true] ...; | -| Assert.cs:98:9:98:26 | [b (line 84): false] ...; | Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | -| Assert.cs:98:9:98:26 | [b (line 84): true] ...; | Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | -| Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:100:9:100:36 | [b (line 84): false] ...; | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:100:9:100:36 | [b (line 84): true] ...; | -| Assert.cs:99:9:99:33 | [b (line 84): false] ...; | Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | -| Assert.cs:99:9:99:33 | [b (line 84): true] ...; | Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | -| Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | Assert.cs:99:28:99:31 | [b (line 84): false] null | -| Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | Assert.cs:99:28:99:31 | [b (line 84): true] null | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:99:28:99:31 | [b (line 84): false] null | Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | -| Assert.cs:99:28:99:31 | [b (line 84): true] null | Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | -| Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | Assert.cs:102:9:102:26 | [b (line 84): false] ...; | -| Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | Assert.cs:102:9:102:26 | [b (line 84): true] ...; | -| Assert.cs:100:9:100:36 | [b (line 84): false] ...; | Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | -| Assert.cs:100:9:100:36 | [b (line 84): true] ...; | Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | -| Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | -| Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | -| Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | Assert.cs:103:9:103:33 | [b (line 84): false] ...; | -| Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | Assert.cs:103:9:103:33 | [b (line 84): true] ...; | -| Assert.cs:102:9:102:26 | [b (line 84): false] ...; | Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | -| Assert.cs:102:9:102:26 | [b (line 84): true] ...; | Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | -| Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:104:9:104:36 | [b (line 84): false] ...; | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:104:9:104:36 | [b (line 84): true] ...; | -| Assert.cs:103:9:103:33 | [b (line 84): false] ...; | Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | -| Assert.cs:103:9:103:33 | [b (line 84): true] ...; | Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | -| Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | Assert.cs:103:28:103:31 | [b (line 84): false] null | -| Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | Assert.cs:103:28:103:31 | [b (line 84): true] null | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:103:28:103:31 | [b (line 84): false] null | Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | -| Assert.cs:103:28:103:31 | [b (line 84): true] null | Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | -| Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | Assert.cs:106:9:106:26 | [b (line 84): false] ...; | -| Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | Assert.cs:106:9:106:26 | [b (line 84): true] ...; | -| Assert.cs:104:9:104:36 | [b (line 84): false] ...; | Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | -| Assert.cs:104:9:104:36 | [b (line 84): true] ...; | Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | -| Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | -| Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | -| Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | Assert.cs:107:9:107:34 | [b (line 84): false] ...; | -| Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | Assert.cs:107:9:107:34 | [b (line 84): true] ...; | -| Assert.cs:106:9:106:26 | [b (line 84): false] ...; | Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | -| Assert.cs:106:9:106:26 | [b (line 84): true] ...; | Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | -| Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:108:9:108:36 | [b (line 84): false] ...; | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:108:9:108:36 | [b (line 84): true] ...; | -| Assert.cs:107:9:107:34 | [b (line 84): false] ...; | Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | -| Assert.cs:107:9:107:34 | [b (line 84): true] ...; | Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | -| Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | Assert.cs:107:29:107:32 | [b (line 84): false] null | -| Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | Assert.cs:107:29:107:32 | [b (line 84): true] null | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:107:29:107:32 | [b (line 84): false] null | Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | -| Assert.cs:107:29:107:32 | [b (line 84): true] null | Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | -| Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | Assert.cs:110:9:110:26 | [b (line 84): false] ...; | -| Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | Assert.cs:110:9:110:26 | [b (line 84): true] ...; | -| Assert.cs:108:9:108:36 | [b (line 84): false] ...; | Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | -| Assert.cs:108:9:108:36 | [b (line 84): true] ...; | Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | -| Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | -| Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | -| Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | Assert.cs:111:9:111:34 | [b (line 84): false] ...; | -| Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | Assert.cs:111:9:111:34 | [b (line 84): true] ...; | -| Assert.cs:110:9:110:26 | [b (line 84): false] ...; | Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | -| Assert.cs:110:9:110:26 | [b (line 84): true] ...; | Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | -| Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:112:9:112:36 | [b (line 84): false] ...; | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:112:9:112:36 | [b (line 84): true] ...; | -| Assert.cs:111:9:111:34 | [b (line 84): false] ...; | Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | -| Assert.cs:111:9:111:34 | [b (line 84): true] ...; | Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | -| Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | Assert.cs:111:29:111:32 | [b (line 84): false] null | -| Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | Assert.cs:111:29:111:32 | [b (line 84): true] null | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:111:29:111:32 | [b (line 84): false] null | Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | -| Assert.cs:111:29:111:32 | [b (line 84): true] null | Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | -| Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | Assert.cs:114:9:114:26 | [b (line 84): false] ...; | -| Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | Assert.cs:114:9:114:26 | [b (line 84): true] ...; | -| Assert.cs:112:9:112:36 | [b (line 84): false] ...; | Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | -| Assert.cs:112:9:112:36 | [b (line 84): true] ...; | Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | -| Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | -| Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | -| Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | Assert.cs:115:9:115:38 | [b (line 84): false] ...; | -| Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | Assert.cs:115:9:115:38 | [b (line 84): true] ...; | -| Assert.cs:114:9:114:26 | [b (line 84): false] ...; | Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | -| Assert.cs:114:9:114:26 | [b (line 84): true] ...; | Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | -| Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:116:9:116:36 | [b (line 84): true] ...; | -| Assert.cs:115:9:115:38 | [b (line 84): false] ...; | Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | -| Assert.cs:115:9:115:38 | [b (line 84): true] ...; | Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | -| Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | Assert.cs:115:28:115:31 | [b (line 84): false] null | -| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | Assert.cs:115:28:115:31 | [b (line 84): true] null | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:28:115:31 | [b (line 84): false] null | Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | -| Assert.cs:115:28:115:31 | [b (line 84): true] null | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | Assert.cs:118:9:118:26 | [b (line 84): true] ...; | -| Assert.cs:116:9:116:36 | [b (line 84): true] ...; | Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | -| Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | -| Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | Assert.cs:119:9:119:40 | [b (line 84): true] ...; | -| Assert.cs:118:9:118:26 | [b (line 84): true] ...; | Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:120:9:120:36 | [b (line 84): true] ...; | -| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | -| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | Assert.cs:119:29:119:32 | [b (line 84): true] null | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:119:29:119:32 | [b (line 84): true] null | Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | Assert.cs:122:9:122:26 | [b (line 84): true] ...; | -| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | -| Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | -| Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | Assert.cs:123:9:123:38 | [b (line 84): true] ...; | -| Assert.cs:122:9:122:26 | [b (line 84): true] ...; | Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:124:9:124:36 | [b (line 84): true] ...; | -| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | -| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | Assert.cs:123:28:123:31 | [b (line 84): true] null | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:28:123:31 | [b (line 84): true] null | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | Assert.cs:126:9:126:26 | [b (line 84): true] ...; | -| Assert.cs:124:9:124:36 | [b (line 84): true] ...; | Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | -| Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | -| Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | Assert.cs:127:9:127:40 | [b (line 84): true] ...; | -| Assert.cs:126:9:126:26 | [b (line 84): true] ...; | Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:87:9:87:32 | ...; | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | +| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | +| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:34 | access to property Length | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:91:9:91:25 | ...; | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:13:90:13 | access to parameter b | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | +| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:95:9:95:28 | ...; | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:13:94:13 | access to parameter b | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | +| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:99:9:99:33 | ...; | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:13:98:13 | access to parameter b | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | +| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | +| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:34 | access to property Length | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:103:9:103:33 | ...; | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:13:102:13 | access to parameter b | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | +| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | +| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:34 | access to property Length | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:107:9:107:34 | ...; | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:13:106:13 | access to parameter b | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | +| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | +| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:34 | access to property Length | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:111:9:111:34 | ...; | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:13:110:13 | access to parameter b | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | +| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | +| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:34 | access to property Length | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:115:9:115:38 | ...; | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:13:114:13 | access to parameter b | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | +| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:119:9:119:40 | ...; | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:13:118:13 | access to parameter b | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | +| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:123:9:123:38 | ...; | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:13:122:13 | access to parameter b | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | +| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:127:9:127:40 | ...; | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:13:126:13 | access to parameter b | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | -| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | Assert.cs:127:29:127:32 | [b (line 84): true] null | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:127:29:127:32 | [b (line 84): true] null | Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | +| Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | @@ -963,16 +826,10 @@ dominance | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:31 | ... == ... | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:30:13:33:13 | [finally: break] {...} | -| BreakInTry.cs:30:13:33:13 | [finally: break] {...} | BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:17:32:21 | if (...) ... | -| BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:24 | access to parameter args | -| BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | BreakInTry.cs:31:29:31:32 | [finally: break] null | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:29:31:32 | null | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:32:21:32:21 | [finally: break] ; | -| BreakInTry.cs:31:29:31:32 | [finally: break] null | BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:32 | ... == ... | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:39:5:54:5 | {...} | @@ -985,25 +842,16 @@ dominance | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:28 | ... == ... | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:46:9:52:9 | [finally: return] {...} | -| BreakInTry.cs:46:9:52:9 | [finally: return] {...} | BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:48:13:51:13 | {...} | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:48:13:51:13 | [finally: return] {...} | -| BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:48:13:51:13 | [finally: return] {...} | BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:49:17:50:26 | if (...) ... | -| BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | -| BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | BreakInTry.cs:49:28:49:31 | [finally: return] null | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:28:49:31 | null | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:50:21:50:26 | [finally: return] break; | -| BreakInTry.cs:49:28:49:31 | [finally: return] null | BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:31 | ... == ... | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:57:5:71:5 | {...} | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 | @@ -1015,24 +863,15 @@ dominance | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:28 | ... == ... | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:64:9:70:9 | [finally: return] {...} | -| BreakInTry.cs:64:9:70:9 | [finally: return] {...} | BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:66:13:69:13 | {...} | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:66:13:69:13 | [finally: return] {...} | -| BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:66:13:69:13 | [finally: return] {...} | BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:67:17:68:26 | if (...) ... | -| BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | -| BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | BreakInTry.cs:67:28:67:31 | [finally: return] null | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:28:67:31 | null | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:68:21:68:26 | [finally: return] break; | -| BreakInTry.cs:67:28:67:31 | [finally: return] null | BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | @@ -1063,15 +902,18 @@ dominance | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | -| CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:31:9:34:9 | {...} | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | -| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | -| CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | -| CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | -| CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | -| CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | +| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | +| CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:37:13:37:41 | ...; | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:31:37:39 | "Finally" | +| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:27:39:32 | "Dead" | +| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:14:40:38 | ...; | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | @@ -1163,16 +1005,14 @@ dominance | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:5:9:6:16 | if (...) ... | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | -| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | -| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | -| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | +| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:15 | ...++ | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:13 | access to parameter x | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:15 | ...-- | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:13 | access to parameter x | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:12:5:20:5 | {...} | @@ -1182,24 +1022,19 @@ dominance | Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:14:9:15:16 | if (...) ... | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:13:13:17 | Int32 x = ... | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | -| Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | -| Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | -| Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | -| Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | -| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:15 | ...++ | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:13 | access to local variable x | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:13 | access to local variable x | +| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:17:16:17 | 0 | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | +| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:17 | ... > ... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:17 | access to local variable x | | Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | exit M1 (normal) | @@ -1214,14 +1049,12 @@ dominance | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | -| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | -| Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | -| Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:19 | ...++ | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:17 | access to local variable x | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:13 | access to local variable x | | Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | exit M2 (normal) | @@ -1241,14 +1074,13 @@ dominance | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:18:38:19 | access to parameter b1 | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:19 | ... = ... | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | -| Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | -| Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | -| Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | +| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:15 | ...++ | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:13 | access to local variable x | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:13 | access to local variable x | | Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | exit M3 (normal) | @@ -1260,30 +1092,16 @@ dominance | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:49:9:53:9 | while (...) ... | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:13:48:17 | Int32 y = ... | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | -| Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:18 | ...-- | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:22:49:22 | 0 | -| Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | -| Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:22 | ... > ... | -| Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | -| Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:13:52:20 | if (...) ... | -| Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | -| Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:51:17:51:17 | access to parameter b | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | -| Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | -| Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:19 | ...++ | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:17 | access to local variable y | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | exit M4 (normal) | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:9:54:17 | return ...; | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:58:5:68:5 | {...} | @@ -1293,35 +1111,19 @@ dominance | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:60:9:64:9 | while (...) ... | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:13:59:17 | Int32 y = ... | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | -| Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:18 | ...-- | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:22:60:22 | 0 | -| Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | -| Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:22 | ... > ... | -| Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | -| Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:13:63:20 | if (...) ... | -| Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | -| Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:62:17:62:17 | access to parameter b | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | -| Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:19 | ...++ | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:17 | access to local variable y | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:13 | access to local variable y | | Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | exit M5 (normal) | @@ -1404,28 +1206,22 @@ dominance | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:28 | call to method ToString | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | Conditions.cs:106:18:106:19 | [b (line 102): true] "" | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | -| Conditions.cs:106:18:106:19 | [b (line 102): true] "" | Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | -| Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | -| Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | -| Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | -| Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | -| Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | -| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | +| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:19 | ... = ... | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... + ... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | +| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | +| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:24 | ... > ... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | | Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:23 | ... = ... | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | @@ -1457,73 +1253,43 @@ dominance | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:24:118:43 | ... == ... | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:43 | ... - ... | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:18:119:21 | access to local variable last | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:120:21:120:22 | [last (line 118): false] "" | -| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | -| Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | Conditions.cs:122:17:122:25 | ...; | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:21:120:22 | "" | +| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:22 | ... = ... | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:21:122:24 | null | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:24 | ... = ... | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:130:5:141:5 | {...} | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:131:9:140:9 | while (...) ... | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:16:131:19 | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | | Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:13:139:13 | if (...) ... | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | this access | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | access to field Field1 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:17:138:17 | if (...) ... | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | this access | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | access to field Field2 | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:38 | ...; | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | +| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | access to field Field1 | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:26 | this access | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:144:5:150:5 | {...} | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:145:9:145:30 | ... ...; | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:17:145:17 | access to parameter b | -| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | -| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | -| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | -| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | -| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | -| Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:146:9:149:49 | if (...) ... | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:13:146:13 | access to parameter b | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:40:147:43 | "a = " | | Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | | Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:45:147:45 | access to local variable s | @@ -1741,18 +1507,14 @@ dominance | Finally.cs:8:5:17:5 | {...} | Finally.cs:9:9:16:9 | try {...} ... | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:10:9:12:9 | {...} | | Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:38 | ...; | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | [finally: exception] {...} | | Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | | Finally.cs:11:13:11:38 | ...; | Finally.cs:11:31:11:36 | "Try1" | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:37 | call to method WriteLine | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:15:13:15:41 | [finally: exception] ...; | | Finally.cs:14:9:16:9 | {...} | Finally.cs:15:13:15:41 | ...; | -| Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | +| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (normal) | | Finally.cs:15:13:15:41 | ...; | Finally.cs:15:31:15:39 | "Finally" | -| Finally.cs:15:13:15:41 | [finally: exception] ...; | Finally.cs:15:31:15:39 | [finally: exception] "Finally" | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:40 | call to method WriteLine | -| Finally.cs:15:31:15:39 | [finally: exception] "Finally" | Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:20:5:52:5 | {...} | | Finally.cs:20:5:52:5 | {...} | Finally.cs:21:9:51:9 | try {...} ... | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:22:9:25:9 | {...} | @@ -1761,7 +1523,6 @@ dominance | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | | Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:49:9:51:9 | [finally: return] {...} | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | @@ -1775,22 +1536,16 @@ dominance | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:34:21:34:24 | true | | Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | [finally: exception] {...} | -| Finally.cs:37:13:39:13 | [finally: exception] {...} | Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | -| Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | Finally.cs:38:17:38:44 | [finally: exception] throw ...; | -| Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | {...} | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:37:38:42 | "Boo!" | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | +| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:50:13:50:41 | [finally: exception] ...; | -| Finally.cs:49:9:51:9 | [finally: return] {...} | Finally.cs:50:13:50:41 | [finally: return] ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | -| Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:50:13:50:41 | ...; | Finally.cs:50:31:50:39 | "Finally" | -| Finally.cs:50:13:50:41 | [finally: exception] ...; | Finally.cs:50:31:50:39 | [finally: exception] "Finally" | -| Finally.cs:50:13:50:41 | [finally: return] ...; | Finally.cs:50:31:50:39 | [finally: return] "Finally" | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:40 | call to method WriteLine | -| Finally.cs:50:31:50:39 | [finally: exception] "Finally" | Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | -| Finally.cs:50:31:50:39 | [finally: return] "Finally" | Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:55:5:72:5 | {...} | | Finally.cs:55:5:72:5 | {...} | Finally.cs:56:9:71:9 | try {...} ... | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:57:9:60:9 | {...} | @@ -1799,7 +1554,6 @@ dominance | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | | Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:69:9:71:9 | [finally: return] {...} | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | @@ -1811,17 +1565,11 @@ dominance | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:48:65:51 | [exception: Exception] null | | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:66:9:67:9 | {...} | | Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:70:13:70:41 | [finally: exception] ...; | -| Finally.cs:69:9:71:9 | [finally: return] {...} | Finally.cs:70:13:70:41 | [finally: return] ...; | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | -| Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:70:13:70:41 | ...; | Finally.cs:70:31:70:39 | "Finally" | -| Finally.cs:70:13:70:41 | [finally: exception] ...; | Finally.cs:70:31:70:39 | [finally: exception] "Finally" | -| Finally.cs:70:13:70:41 | [finally: return] ...; | Finally.cs:70:31:70:39 | [finally: return] "Finally" | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:40 | call to method WriteLine | -| Finally.cs:70:31:70:39 | [finally: exception] "Finally" | Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | -| Finally.cs:70:31:70:39 | [finally: return] "Finally" | Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:75:5:101:5 | {...} | | Finally.cs:75:5:101:5 | {...} | Finally.cs:76:9:76:19 | ... ...; | | Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:17:76:18 | 10 | @@ -1840,165 +1588,69 @@ dominance | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:83:17:84:29 | if (...) ... | | Finally.cs:81:26:81:26 | 0 | Finally.cs:81:21:81:26 | ... == ... | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:89:13:99:13 | [finally: return] {...} | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:21 | access to local variable i | | Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:26:83:26 | 1 | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:84:21:84:29 | continue; | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:83:26:83:26 | 1 | Finally.cs:83:21:83:26 | ... == ... | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:89:13:99:13 | [finally: continue] {...} | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:21 | access to local variable i | | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:26:85:26 | 2 | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:86:21:86:26 | break; | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:89:13:99:13 | {...} | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:26 | ... == ... | -| Finally.cs:86:21:86:26 | break; | Finally.cs:89:13:99:13 | [finally: break] {...} | -| Finally.cs:89:13:99:13 | [finally: break] {...} | Finally.cs:90:17:98:17 | [finally: break] try {...} ... | -| Finally.cs:89:13:99:13 | [finally: continue] {...} | Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | -| Finally.cs:89:13:99:13 | [finally: return] {...} | Finally.cs:90:17:98:17 | [finally: return] try {...} ... | | Finally.cs:89:13:99:13 | {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:90:17:98:17 | [finally: break] try {...} ... | Finally.cs:91:17:94:17 | [finally: break] {...} | -| Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | Finally.cs:91:17:94:17 | [finally: continue] {...} | -| Finally.cs:90:17:98:17 | [finally: return] try {...} ... | Finally.cs:91:17:94:17 | [finally: return] {...} | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:91:17:94:17 | {...} | -| Finally.cs:91:17:94:17 | [finally: break] {...} | Finally.cs:92:21:93:46 | [finally: break] if (...) ... | -| Finally.cs:91:17:94:17 | [finally: continue] {...} | Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | -| Finally.cs:91:17:94:17 | [finally: return] {...} | Finally.cs:92:21:93:46 | [finally: return] if (...) ... | | Finally.cs:91:17:94:17 | {...} | Finally.cs:92:21:93:46 | if (...) ... | -| Finally.cs:92:21:93:46 | [finally: break] if (...) ... | Finally.cs:92:25:92:25 | [finally: break] access to local variable i | -| Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | -| Finally.cs:92:21:93:46 | [finally: return] if (...) ... | Finally.cs:92:25:92:25 | [finally: return] access to local variable i | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:25 | access to local variable i | -| Finally.cs:92:25:92:25 | [finally: break] access to local variable i | Finally.cs:92:30:92:30 | [finally: break] 3 | -| Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | Finally.cs:92:30:92:30 | [finally: continue] 3 | -| Finally.cs:92:25:92:25 | [finally: return] access to local variable i | Finally.cs:92:30:92:30 | [finally: return] 3 | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:30:92:30 | 3 | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:30 | ... == ... | -| Finally.cs:92:30:92:30 | [finally: break] 3 | Finally.cs:92:25:92:30 | [finally: break] ... == ... | -| Finally.cs:92:30:92:30 | [finally: continue] 3 | Finally.cs:92:25:92:30 | [finally: continue] ... == ... | -| Finally.cs:92:30:92:30 | [finally: return] 3 | Finally.cs:92:25:92:30 | [finally: return] ... == ... | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: return] throw ...; | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally(1): exception] ...; | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:97:21:97:24 | [finally: break] ...; | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:97:21:97:24 | [finally: continue] ...; | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:97:21:97:24 | [finally: return] ...; | | Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:24 | ...; | -| Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | -| Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | -| Finally.cs:97:21:97:21 | [finally: break] access to local variable i | Finally.cs:97:21:97:23 | [finally: break] ...-- | -| Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | -| Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | Finally.cs:97:21:97:23 | [finally: continue] ...-- | -| Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | -| Finally.cs:97:21:97:21 | [finally: return] access to local variable i | Finally.cs:97:21:97:23 | [finally: return] ...-- | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:23 | ...-- | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | | Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:21 | access to local variable i | -| Finally.cs:97:21:97:24 | [finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: break] ...; | Finally.cs:97:21:97:21 | [finally: break] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: continue] ...; | Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:24 | [finally: return] ...; | Finally.cs:97:21:97:21 | [finally: return] access to local variable i | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:104:5:119:5 | {...} | | Finally.cs:104:5:119:5 | {...} | Finally.cs:105:9:118:9 | try {...} ... | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:106:9:111:9 | {...} | | Finally.cs:106:9:111:9 | {...} | Finally.cs:107:13:108:23 | if (...) ... | | Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:21 | this access | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | [finally: exception] {...} | +| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | | Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | access to field Field | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:113:9:118:9 | [finally: return] {...} | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | this access | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | access to field Field | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:113:9:118:9 | {...} | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | -| Finally.cs:113:9:118:9 | [finally: return] {...} | Finally.cs:114:13:115:41 | [finally: return] if (...) ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:13:115:41 | if (...) ... | -| Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | Finally.cs:114:19:114:23 | [finally: exception] this access | -| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:114:19:114:23 | [finally: return] this access | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:19:114:23 | this access | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:41 | [finally: return] ...; | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:114:19:114:23 | [finally: exception] access to field Field | Finally.cs:114:19:114:30 | [finally: exception] access to property Length | -| Finally.cs:114:19:114:23 | [finally: exception] this access | Finally.cs:114:19:114:23 | [finally: exception] access to field Field | -| Finally.cs:114:19:114:23 | [finally: return] access to field Field | Finally.cs:114:19:114:30 | [finally: return] access to property Length | -| Finally.cs:114:19:114:23 | [finally: return] this access | Finally.cs:114:19:114:23 | [finally: return] access to field Field | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:30 | access to property Length | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | access to field Field | -| Finally.cs:114:19:114:30 | [finally: exception] access to property Length | Finally.cs:114:35:114:35 | [finally: exception] 0 | -| Finally.cs:114:19:114:30 | [finally: return] access to property Length | Finally.cs:114:35:114:35 | [finally: return] 0 | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:35:114:35 | 0 | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [true, finally: return] !... | | Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:35 | ... == ... | -| Finally.cs:114:35:114:35 | [finally: exception] 0 | Finally.cs:114:19:114:35 | [finally: exception] ... == ... | -| Finally.cs:114:35:114:35 | [finally: return] 0 | Finally.cs:114:19:114:35 | [finally: return] ... == ... | | Finally.cs:115:17:115:41 | ...; | Finally.cs:115:35:115:39 | this access | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:115:35:115:39 | [finally: exception] this access | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:35:115:39 | [finally: return] this access | -| Finally.cs:115:35:115:39 | [finally: exception] access to field Field | Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | -| Finally.cs:115:35:115:39 | [finally: exception] this access | Finally.cs:115:35:115:39 | [finally: exception] access to field Field | -| Finally.cs:115:35:115:39 | [finally: return] access to field Field | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | -| Finally.cs:115:35:115:39 | [finally: return] this access | Finally.cs:115:35:115:39 | [finally: return] access to field Field | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | | Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | access to field Field | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:116:17:116:21 | [finally: exception] this access | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:116:17:116:21 | [finally: return] this access | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:21 | this access | -| Finally.cs:116:17:116:21 | [finally: exception] access to field Field | Finally.cs:116:17:116:28 | [finally: exception] access to property Length | -| Finally.cs:116:17:116:21 | [finally: exception] this access | Finally.cs:116:17:116:21 | [finally: exception] access to field Field | -| Finally.cs:116:17:116:21 | [finally: return] access to field Field | Finally.cs:116:17:116:28 | [finally: return] access to property Length | -| Finally.cs:116:17:116:21 | [finally: return] this access | Finally.cs:116:17:116:21 | [finally: return] access to field Field | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:28 | access to property Length | | Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | access to field Field | -| Finally.cs:116:17:116:28 | [finally: exception] access to property Length | Finally.cs:116:32:116:32 | [finally: exception] 0 | -| Finally.cs:116:17:116:28 | [finally: return] access to property Length | Finally.cs:116:32:116:32 | [finally: return] 0 | | Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:32:116:32 | 0 | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:32 | ... > ... | -| Finally.cs:116:32:116:32 | [finally: exception] 0 | Finally.cs:116:17:116:32 | [finally: exception] ... > ... | -| Finally.cs:116:32:116:32 | [finally: return] 0 | Finally.cs:116:17:116:32 | [finally: return] ... > ... | | Finally.cs:117:17:117:37 | ...; | Finally.cs:117:35:117:35 | 1 | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:117:35:117:35 | [finally: exception] 1 | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:117:35:117:35 | [finally: return] 1 | | Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:36 | call to method WriteLine | -| Finally.cs:117:35:117:35 | [finally: exception] 1 | Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | -| Finally.cs:117:35:117:35 | [finally: return] 1 | Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:122:5:131:5 | {...} | | Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | exit M6 | | Finally.cs:122:5:131:5 | {...} | Finally.cs:123:9:130:9 | try {...} ... | @@ -2015,16 +1667,13 @@ dominance | Finally.cs:134:5:145:5 | {...} | Finally.cs:135:9:143:9 | try {...} ... | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:136:9:138:9 | {...} | | Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:37 | ...; | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | [finally: exception] {...} | | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | | Finally.cs:137:13:137:37 | ...; | Finally.cs:137:31:137:35 | "Try" | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:36 | call to method WriteLine | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:141:41:141:42 | [finally: exception] "" | | Finally.cs:140:9:143:9 | {...} | Finally.cs:141:41:141:42 | "" | -| Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | Finally.cs:141:13:141:44 | [finally: exception] throw ...; | +| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | exit M7 (abnormal) | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | | Finally.cs:141:41:141:42 | "" | Finally.cs:141:19:141:43 | object creation of type ArgumentException | -| Finally.cs:141:41:141:42 | [finally: exception] "" | Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:148:5:170:5 | {...} | | Finally.cs:148:5:170:5 | {...} | Finally.cs:149:9:169:9 | try {...} ... | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:150:9:153:9 | {...} | @@ -2035,69 +1684,37 @@ dominance | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:28 | ... == ... | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:155:9:169:9 | [finally: exception] {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | | Finally.cs:155:9:169:9 | {...} | Finally.cs:156:13:168:13 | try {...} ... | -| Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | Finally.cs:157:13:160:13 | [finally: exception] {...} | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:157:13:160:13 | {...} | -| Finally.cs:157:13:160:13 | [finally: exception] {...} | Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | | Finally.cs:157:13:160:13 | {...} | Finally.cs:158:17:159:45 | if (...) ... | -| Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | -| Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | Finally.cs:158:21:158:31 | [finally: exception] access to property Length | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:159:41:159:43 | [finally: exception] "1" | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:158:21:158:36 | [finally: exception] ... == ... | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | -| Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | -| Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [exception: Exception] "1" | | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | -| Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | -| Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | | Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | -| Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | -| Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:163:17:163:43 | [finally: exception] ...; | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | | Finally.cs:163:17:163:43 | ...; | Finally.cs:163:35:163:38 | access to parameter args | -| Finally.cs:163:17:163:43 | [finally: exception] ...; | Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | -| Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | Finally.cs:163:40:163:40 | [finally: exception] 0 | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:40:163:40 | 0 | -| Finally.cs:163:35:163:41 | [finally: exception] access to array element | Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:41 | access to array element | -| Finally.cs:163:40:163:40 | [finally: exception] 0 | Finally.cs:163:35:163:41 | [finally: exception] access to array element | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:166:13:168:13 | [finally: exception] {...} | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:166:13:168:13 | {...} | -| Finally.cs:166:13:168:13 | [finally: exception] {...} | Finally.cs:167:17:167:38 | [finally: exception] ...; | | Finally.cs:166:13:168:13 | {...} | Finally.cs:167:17:167:38 | ...; | | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | -| Finally.cs:167:17:167:38 | [finally: exception] ...; | Finally.cs:167:35:167:36 | [finally: exception] "" | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | -| Finally.cs:167:35:167:36 | [finally: exception] "" | Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | call to constructor Exception | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | @@ -2115,37 +1732,25 @@ dominance | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:179:9:181:9 | {...} | | Finally.cs:179:9:181:9 | {...} | Finally.cs:180:13:180:43 | if (...) ... | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:17:180:18 | access to parameter b1 | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | -| Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | -| Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | -| Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:190:25:190:47 | [finally: exception] throw ...; | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:184:13:191:13 | try {...} ... | +| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:185:13:187:13 | {...} | +| Finally.cs:185:13:187:13 | {...} | Finally.cs:186:17:186:47 | if (...) ... | +| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:21:186:22 | access to parameter b2 | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | +| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:196:5:214:5 | {...} | | Finally.cs:196:5:214:5 | {...} | Finally.cs:197:9:212:9 | try {...} ... | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:198:9:200:9 | {...} | @@ -2154,48 +1759,23 @@ dominance | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:202:9:212:9 | [finally: exception] {...} | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | | Finally.cs:202:9:212:9 | {...} | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | Finally.cs:204:13:206:13 | [finally: exception] {...} | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:204:13:206:13 | {...} | -| Finally.cs:204:13:206:13 | [finally: exception] {...} | Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | | Finally.cs:204:13:206:13 | {...} | Finally.cs:205:17:205:47 | if (...) ... | -| Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:21:205:22 | access to parameter b2 | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:208:13:210:13 | [finally: exception] {...} | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:17:209:47 | if (...) ... | -| Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | -| Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | -| Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:21:209:22 | access to parameter b3 | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception] throw ...; | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | -| Finally.cs:211:13:211:16 | [finally: exception] this access | Finally.cs:211:26:211:28 | [finally: exception] "0" | | Finally.cs:211:13:211:16 | this access | Finally.cs:211:26:211:28 | "0" | | Finally.cs:211:13:211:28 | ... = ... | Finally.cs:213:9:213:25 | ...; | | Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:16 | this access | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:211:13:211:16 | [finally: exception] this access | | Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:28 | ... = ... | -| Finally.cs:211:26:211:28 | [finally: exception] "0" | Finally.cs:211:13:211:28 | [finally: exception] ... = ... | | Finally.cs:213:9:213:12 | this access | Finally.cs:213:22:213:24 | "1" | | Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (normal) | | Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:12 | this access | @@ -2230,47 +1810,25 @@ dominance | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:243:13:253:13 | [finally: exception] {...} | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | | Finally.cs:243:13:253:13 | {...} | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | Finally.cs:245:17:248:17 | [finally: exception] {...} | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:245:17:248:17 | {...} | -| Finally.cs:245:17:248:17 | [finally: exception] {...} | Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | | Finally.cs:245:17:248:17 | {...} | Finally.cs:246:21:247:47 | if (...) ... | -| Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:246:25:246:26 | access to parameter b2 | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:250:17:252:17 | [finally: exception] {...} | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:251:21:251:55 | [finally(1): exception] ...; | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:251:21:251:55 | [finally: exception] ...; | | Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:55 | ...; | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | | Finally.cs:251:21:251:55 | ...; | Finally.cs:251:39:251:53 | "Inner finally" | -| Finally.cs:251:21:251:55 | [finally(1): exception] ...; | Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | -| Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | -| Finally.cs:251:21:251:55 | [finally: exception] ...; | Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:54 | call to method WriteLine | -| Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | -| Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | -| Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | | Finally.cs:254:13:254:45 | ...; | Finally.cs:254:31:254:43 | "Mid finally" | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:44 | call to method WriteLine | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:258:13:258:47 | [finally: exception] ...; | | Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:47 | ...; | -| Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | +| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:260:9:260:34 | ...; | | Finally.cs:258:13:258:47 | ...; | Finally.cs:258:31:258:45 | "Outer finally" | -| Finally.cs:258:13:258:47 | [finally: exception] ...; | Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:46 | call to method WriteLine | -| Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (normal) | | Finally.cs:260:9:260:34 | ...; | Finally.cs:260:27:260:32 | "Done" | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:33 | call to method WriteLine | @@ -2278,28 +1836,19 @@ dominance | Finally.cs:264:5:274:5 | {...} | Finally.cs:265:9:273:9 | try {...} ... | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:266:9:268:9 | {...} | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:35 | ...; | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | [finally: exception] {...} | | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | | Finally.cs:267:13:267:35 | ...; | Finally.cs:267:31:267:33 | "1" | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:34 | call to method WriteLine | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:271:13:271:35 | [finally: exception] ...; | | Finally.cs:270:9:273:9 | {...} | Finally.cs:271:13:271:35 | ...; | -| Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | Finally.cs:272:13:272:19 | [finally: exception] ...; | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:272:13:272:19 | ...; | | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | -| Finally.cs:271:13:271:35 | [finally: exception] ...; | Finally.cs:271:31:271:33 | [finally: exception] "3" | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | -| Finally.cs:271:31:271:33 | [finally: exception] "3" | Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | -| Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | Finally.cs:272:18:272:18 | [finally: exception] 3 | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | | Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:18 | ... = ... | +| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | | Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (normal) | -| Finally.cs:272:13:272:18 | [finally: exception] ... + ... | Finally.cs:272:13:272:18 | [finally: exception] ... = ... | -| Finally.cs:272:13:272:18 | [finally: exception] ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | -| Finally.cs:272:13:272:19 | [finally: exception] ...; | Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | -| Finally.cs:272:18:272:18 | [finally: exception] 3 | Finally.cs:272:13:272:18 | [finally: exception] ... + ... | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | call to constructor Object | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | @@ -2579,10 +2128,9 @@ dominance | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:10:13:10:19 | return ...; | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:28 | ... == ... | -| LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:35 | ...; | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:16:5:20:5 | {...} | @@ -2596,11 +2144,10 @@ dominance | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:38:17:40 | "b" | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:43:17:45 | "c" | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | -| LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:33 | ...; | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:23:5:27:5 | {...} | @@ -2610,10 +2157,9 @@ dominance | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | | LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:30:5:34:5 | {...} | @@ -2623,8 +2169,12 @@ dominance | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | -| LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:33 | ...; | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:31:33:31 | access to local variable x | +| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:37:5:43:5 | {...} | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:38:9:38:48 | ... ...; | @@ -2644,20 +2194,19 @@ dominance | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:38:39:40 | "1" | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:43:39:45 | "2" | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | -| LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:41 | ...; | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:35:42:35 | access to local variable x | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:39:42:39 | access to local variable y | | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:39 | ... + ... | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:46:5:53:5 | {...} | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:47:9:47:48 | ... ...; | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:18:47:47 | 3 | | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | @@ -2667,9 +2216,10 @@ dominance | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:38:47:40 | "b" | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:43:47:45 | "c" | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | -| LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:16:50:36 | ...; | | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:51:13:51:23 | goto ...; | @@ -2686,31 +2236,20 @@ dominance | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:38:57:40 | "b" | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:43:57:45 | "c" | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:59:9:64:9 | {...} | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:60:13:61:37 | if (...) ... | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | -| LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | -| LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:35:61:35 | access to local variable x | +| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:35:63:35 | access to local variable x | +| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:68:5:74:5 | {...} | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:69:9:70:19 | if (...) ... | @@ -2723,7 +2262,11 @@ dominance | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:12 | access to parameter args | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:35 | ...; | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | +| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:77:5:83:5 | {...} | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:78:9:78:34 | ... ...; | @@ -2732,8 +2275,13 @@ dominance | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:32:78:32 | 0 | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | -| LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:80:9:82:9 | {...} | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:81:13:81:33 | ...; | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:31:81:31 | access to local variable x | +| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:86:5:92:5 | {...} | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:87:9:87:34 | ... ...; | @@ -2742,8 +2290,13 @@ dominance | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:32:87:32 | 2 | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | -| LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:89:9:91:9 | {...} | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:90:13:90:33 | ...; | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:31:90:31 | access to local variable x | +| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:95:5:101:5 | {...} | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:96:9:96:34 | ... ...; | @@ -2752,12 +2305,11 @@ dominance | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | -| LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:98:9:100:9 | {...} | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:99:13:99:33 | ...; | -| LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | @@ -4203,7 +3755,6 @@ dominance | cflow.cs:256:17:256:37 | ...; | cflow.cs:256:35:256:35 | 0 | | cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:36 | call to method WriteLine | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:262:5:277:5 | {...} | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield | | cflow.cs:262:5:277:5 | {...} | cflow.cs:263:22:263:22 | 0 | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | | cflow.cs:263:22:263:22 | 0 | cflow.cs:263:9:263:23 | yield return ...; | @@ -4220,11 +3771,12 @@ dominance | cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:13:266:27 | yield return ...; | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:269:9:272:9 | {...} | | cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | yield break; | -| cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | [finally: return] {...} | -| cflow.cs:274:9:276:9 | [finally: return] {...} | cflow.cs:275:13:275:42 | [finally: return] ...; | -| cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:275:13:275:42 | [finally: return] ...; | cflow.cs:275:31:275:40 | [finally: return] "not dead" | -| cflow.cs:275:31:275:40 | [finally: return] "not dead" | cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | +| cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | {...} | +| cflow.cs:274:9:276:9 | {...} | cflow.cs:275:13:275:42 | ...; | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | +| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | @@ -4743,23 +4295,17 @@ postDominance | Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:60:9:60:35 | call to method WriteLine | | Assert.cs:57:5:61:5 | {...} | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:57:5:61:5 | {...} | -| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | -| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:32 | ... ? ... : ... | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:9:58:33 | ... ...; | -| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | Assert.cs:58:31:58:32 | [b (line 56): false] "" | -| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:58:20:58:20 | access to parameter b | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | -| Assert.cs:59:9:59:38 | [b (line 56): true] ...; | Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | -| Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | Assert.cs:59:9:59:38 | [b (line 56): false] ...; | -| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | Assert.cs:59:9:59:38 | [b (line 56): true] ...; | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:28:59:31 | [b (line 56): false] null | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:28:59:31 | [b (line 56): true] null | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | -| Assert.cs:59:28:59:31 | [b (line 56): false] null | Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | -| Assert.cs:59:28:59:31 | [b (line 56): true] null | Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:58:16:58:32 | String s = ... | +| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:9:59:38 | ...; | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:28:59:31 | null | +| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:31 | ... != ... | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:34 | access to property Length | | Assert.cs:60:9:60:36 | ...; | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:9:60:36 | ...; | @@ -4768,23 +4314,17 @@ postDominance | Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:67:9:67:35 | call to method WriteLine | | Assert.cs:64:5:68:5 | {...} | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:64:5:68:5 | {...} | -| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | -| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:32 | ... ? ... : ... | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:9:65:33 | ... ...; | -| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | Assert.cs:65:31:65:32 | [b (line 63): false] "" | -| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | Assert.cs:65:24:65:27 | [b (line 63): true] null | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:65:20:65:20 | access to parameter b | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | -| Assert.cs:66:9:66:39 | [b (line 63): true] ...; | Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | -| Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | Assert.cs:66:9:66:39 | [b (line 63): false] ...; | -| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | Assert.cs:66:9:66:39 | [b (line 63): true] ...; | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:29:66:32 | [b (line 63): false] null | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:29:66:32 | [b (line 63): true] null | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | -| Assert.cs:66:29:66:32 | [b (line 63): false] null | Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | -| Assert.cs:66:29:66:32 | [b (line 63): true] null | Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:65:16:65:32 | String s = ... | +| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:9:66:39 | ...; | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:29:66:32 | null | +| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:32 | ... == ... | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:34 | access to property Length | | Assert.cs:67:9:67:36 | ...; | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:9:67:36 | ...; | @@ -4793,23 +4333,17 @@ postDominance | Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:74:9:74:35 | call to method WriteLine | | Assert.cs:71:5:75:5 | {...} | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:71:5:75:5 | {...} | -| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | -| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:32 | ... ? ... : ... | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:9:72:33 | ... ...; | -| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | Assert.cs:72:31:72:32 | [b (line 70): false] "" | -| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:72:20:72:20 | access to parameter b | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | -| Assert.cs:73:9:73:38 | [b (line 70): true] ...; | Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | -| Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | Assert.cs:73:9:73:38 | [b (line 70): false] ...; | -| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | Assert.cs:73:9:73:38 | [b (line 70): true] ...; | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:28:73:31 | [b (line 70): false] null | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:28:73:31 | [b (line 70): true] null | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | -| Assert.cs:73:28:73:31 | [b (line 70): false] null | Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | -| Assert.cs:73:28:73:31 | [b (line 70): true] null | Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:72:16:72:32 | String s = ... | +| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:9:73:38 | ...; | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:28:73:31 | null | +| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:31 | ... == ... | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:34 | access to property Length | | Assert.cs:74:9:74:36 | ...; | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:9:74:36 | ...; | @@ -4818,23 +4352,17 @@ postDominance | Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:81:9:81:35 | call to method WriteLine | | Assert.cs:78:5:82:5 | {...} | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:78:5:82:5 | {...} | -| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | -| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:32 | ... ? ... : ... | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:9:79:33 | ... ...; | -| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | Assert.cs:79:31:79:32 | [b (line 77): false] "" | -| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | Assert.cs:79:24:79:27 | [b (line 77): true] null | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:79:20:79:20 | access to parameter b | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | -| Assert.cs:80:9:80:39 | [b (line 77): true] ...; | Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | -| Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | Assert.cs:80:9:80:39 | [b (line 77): false] ...; | -| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | Assert.cs:80:9:80:39 | [b (line 77): true] ...; | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:29:80:32 | [b (line 77): false] null | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:29:80:32 | [b (line 77): true] null | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | -| Assert.cs:80:29:80:32 | [b (line 77): false] null | Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | -| Assert.cs:80:29:80:32 | [b (line 77): true] null | Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:79:16:79:32 | String s = ... | +| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:9:80:39 | ...; | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:29:80:32 | null | +| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:32 | ... != ... | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:34 | access to property Length | | Assert.cs:81:9:81:36 | ...; | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:9:81:36 | ...; | @@ -4842,247 +4370,161 @@ postDominance | Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:128:9:128:35 | call to method WriteLine | | Assert.cs:85:5:129:5 | {...} | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:85:5:129:5 | {...} | -| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:9:86:33 | ... ...; | -| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | Assert.cs:86:31:86:32 | [b (line 84): false] "" | -| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:86:20:86:20 | access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | -| Assert.cs:87:9:87:32 | [b (line 84): false] ...; | Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | -| Assert.cs:87:9:87:32 | [b (line 84): true] ...; | Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | -| Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | Assert.cs:87:9:87:32 | [b (line 84): false] ...; | -| Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | Assert.cs:87:9:87:32 | [b (line 84): true] ...; | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:27:87:30 | [b (line 84): false] null | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:27:87:30 | [b (line 84): true] null | -| Assert.cs:87:27:87:30 | [b (line 84): false] null | Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | -| Assert.cs:87:27:87:30 | [b (line 84): true] null | Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | -| Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | -| Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | -| Assert.cs:88:9:88:36 | [b (line 84): false] ...; | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:88:9:88:36 | [b (line 84): true] ...; | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | Assert.cs:88:9:88:36 | [b (line 84): false] ...; | -| Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | Assert.cs:88:9:88:36 | [b (line 84): true] ...; | -| Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | -| Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | -| Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:90:9:90:26 | [b (line 84): false] ...; | Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:90:9:90:26 | [b (line 84): true] ...; | Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | Assert.cs:90:9:90:26 | [b (line 84): false] ...; | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | Assert.cs:90:9:90:26 | [b (line 84): true] ...; | -| Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | -| Assert.cs:91:9:91:25 | [b (line 84): false] ...; | Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | -| Assert.cs:91:9:91:25 | [b (line 84): true] ...; | Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:91:9:91:25 | [b (line 84): false] ...; | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:91:9:91:25 | [b (line 84): true] ...; | -| Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | -| Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | -| Assert.cs:92:9:92:36 | [b (line 84): false] ...; | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:92:9:92:36 | [b (line 84): true] ...; | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | Assert.cs:92:9:92:36 | [b (line 84): false] ...; | -| Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | Assert.cs:92:9:92:36 | [b (line 84): true] ...; | -| Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | -| Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | -| Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:94:9:94:26 | [b (line 84): false] ...; | Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:94:9:94:26 | [b (line 84): true] ...; | Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | Assert.cs:94:9:94:26 | [b (line 84): false] ...; | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | Assert.cs:94:9:94:26 | [b (line 84): true] ...; | -| Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | -| Assert.cs:95:9:95:28 | [b (line 84): false] ...; | Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | -| Assert.cs:95:9:95:28 | [b (line 84): true] ...; | Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:95:9:95:28 | [b (line 84): false] ...; | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:95:9:95:28 | [b (line 84): true] ...; | -| Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | -| Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | -| Assert.cs:96:9:96:36 | [b (line 84): false] ...; | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:96:9:96:36 | [b (line 84): true] ...; | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | Assert.cs:96:9:96:36 | [b (line 84): false] ...; | -| Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | Assert.cs:96:9:96:36 | [b (line 84): true] ...; | -| Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | -| Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | -| Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:98:9:98:26 | [b (line 84): false] ...; | Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:98:9:98:26 | [b (line 84): true] ...; | Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | Assert.cs:98:9:98:26 | [b (line 84): false] ...; | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | Assert.cs:98:9:98:26 | [b (line 84): true] ...; | -| Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | -| Assert.cs:99:9:99:33 | [b (line 84): false] ...; | Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | -| Assert.cs:99:9:99:33 | [b (line 84): true] ...; | Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | -| Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | Assert.cs:99:9:99:33 | [b (line 84): false] ...; | -| Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | Assert.cs:99:9:99:33 | [b (line 84): true] ...; | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:28:99:31 | [b (line 84): false] null | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:28:99:31 | [b (line 84): true] null | -| Assert.cs:99:28:99:31 | [b (line 84): false] null | Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | -| Assert.cs:99:28:99:31 | [b (line 84): true] null | Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | -| Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | -| Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | -| Assert.cs:100:9:100:36 | [b (line 84): false] ...; | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:100:9:100:36 | [b (line 84): true] ...; | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | Assert.cs:100:9:100:36 | [b (line 84): false] ...; | -| Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | Assert.cs:100:9:100:36 | [b (line 84): true] ...; | -| Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | -| Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | -| Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:102:9:102:26 | [b (line 84): false] ...; | Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:102:9:102:26 | [b (line 84): true] ...; | Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | Assert.cs:102:9:102:26 | [b (line 84): false] ...; | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | Assert.cs:102:9:102:26 | [b (line 84): true] ...; | -| Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | -| Assert.cs:103:9:103:33 | [b (line 84): false] ...; | Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | -| Assert.cs:103:9:103:33 | [b (line 84): true] ...; | Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | -| Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | Assert.cs:103:9:103:33 | [b (line 84): false] ...; | -| Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | Assert.cs:103:9:103:33 | [b (line 84): true] ...; | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:28:103:31 | [b (line 84): false] null | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:28:103:31 | [b (line 84): true] null | -| Assert.cs:103:28:103:31 | [b (line 84): false] null | Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | -| Assert.cs:103:28:103:31 | [b (line 84): true] null | Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | -| Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | -| Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | -| Assert.cs:104:9:104:36 | [b (line 84): false] ...; | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:104:9:104:36 | [b (line 84): true] ...; | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | Assert.cs:104:9:104:36 | [b (line 84): false] ...; | -| Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | Assert.cs:104:9:104:36 | [b (line 84): true] ...; | -| Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | -| Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | -| Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:106:9:106:26 | [b (line 84): false] ...; | Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:106:9:106:26 | [b (line 84): true] ...; | Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | Assert.cs:106:9:106:26 | [b (line 84): false] ...; | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | Assert.cs:106:9:106:26 | [b (line 84): true] ...; | -| Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | -| Assert.cs:107:9:107:34 | [b (line 84): false] ...; | Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | -| Assert.cs:107:9:107:34 | [b (line 84): true] ...; | Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | -| Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | Assert.cs:107:9:107:34 | [b (line 84): false] ...; | -| Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | Assert.cs:107:9:107:34 | [b (line 84): true] ...; | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:29:107:32 | [b (line 84): false] null | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:29:107:32 | [b (line 84): true] null | -| Assert.cs:107:29:107:32 | [b (line 84): false] null | Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | -| Assert.cs:107:29:107:32 | [b (line 84): true] null | Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | -| Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | -| Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | -| Assert.cs:108:9:108:36 | [b (line 84): false] ...; | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:108:9:108:36 | [b (line 84): true] ...; | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | Assert.cs:108:9:108:36 | [b (line 84): false] ...; | -| Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | Assert.cs:108:9:108:36 | [b (line 84): true] ...; | -| Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | -| Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | -| Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:110:9:110:26 | [b (line 84): false] ...; | Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:110:9:110:26 | [b (line 84): true] ...; | Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | Assert.cs:110:9:110:26 | [b (line 84): false] ...; | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | Assert.cs:110:9:110:26 | [b (line 84): true] ...; | -| Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | -| Assert.cs:111:9:111:34 | [b (line 84): false] ...; | Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | -| Assert.cs:111:9:111:34 | [b (line 84): true] ...; | Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | -| Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | Assert.cs:111:9:111:34 | [b (line 84): false] ...; | -| Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | Assert.cs:111:9:111:34 | [b (line 84): true] ...; | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:29:111:32 | [b (line 84): false] null | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:29:111:32 | [b (line 84): true] null | -| Assert.cs:111:29:111:32 | [b (line 84): false] null | Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | -| Assert.cs:111:29:111:32 | [b (line 84): true] null | Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | -| Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | -| Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | -| Assert.cs:112:9:112:36 | [b (line 84): false] ...; | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:112:9:112:36 | [b (line 84): true] ...; | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | Assert.cs:112:9:112:36 | [b (line 84): false] ...; | -| Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | Assert.cs:112:9:112:36 | [b (line 84): true] ...; | -| Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | -| Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | -| Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | -| Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:114:9:114:26 | [b (line 84): false] ...; | Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | -| Assert.cs:114:9:114:26 | [b (line 84): true] ...; | Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | Assert.cs:114:9:114:26 | [b (line 84): false] ...; | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | Assert.cs:114:9:114:26 | [b (line 84): true] ...; | -| Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:9:115:38 | [b (line 84): false] ...; | Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | -| Assert.cs:115:9:115:38 | [b (line 84): true] ...; | Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | -| Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | Assert.cs:115:9:115:38 | [b (line 84): false] ...; | -| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | Assert.cs:115:9:115:38 | [b (line 84): true] ...; | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:28:115:31 | [b (line 84): false] null | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:28:115:31 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:28:115:31 | [b (line 84): false] null | Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | -| Assert.cs:115:28:115:31 | [b (line 84): true] null | Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | -| Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | -| Assert.cs:116:9:116:36 | [b (line 84): true] ...; | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | Assert.cs:116:9:116:36 | [b (line 84): true] ...; | -| Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | -| Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:118:9:118:26 | [b (line 84): true] ...; | Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | Assert.cs:118:9:118:26 | [b (line 84): true] ...; | -| Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | -| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | Assert.cs:119:9:119:40 | [b (line 84): true] ...; | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:29:119:32 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:29:119:32 | [b (line 84): true] null | Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | -| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | -| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | Assert.cs:120:9:120:36 | [b (line 84): true] ...; | -| Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | -| Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:122:9:122:26 | [b (line 84): true] ...; | Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | Assert.cs:122:9:122:26 | [b (line 84): true] ...; | -| Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | -| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | Assert.cs:123:9:123:38 | [b (line 84): true] ...; | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:28:123:31 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:28:123:31 | [b (line 84): true] null | Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | -| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | -| Assert.cs:124:9:124:36 | [b (line 84): true] ...; | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | Assert.cs:124:9:124:36 | [b (line 84): true] ...; | -| Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | -| Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | -| Assert.cs:126:9:126:26 | [b (line 84): true] ...; | Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | Assert.cs:126:9:126:26 | [b (line 84): true] ...; | -| Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:22:87:30 | ... != ... | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:86:16:86:32 | String s = ... | +| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:9:87:32 | ...; | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:27:87:30 | null | +| Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:22 | access to local variable s | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:27:88:34 | access to property Length | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:27 | access to local variable s | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:88:9:88:35 | call to method WriteLine | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:9:90:26 | ...; | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:90:9:90:25 | ... = ... | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:25 | ...; | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:27:92:34 | access to property Length | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:27 | access to local variable s | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:92:9:92:35 | call to method WriteLine | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:9:94:26 | ...; | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:94:9:94:25 | ... = ... | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:28 | ...; | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:27:96:34 | access to property Length | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:27 | access to local variable s | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:96:9:96:35 | call to method WriteLine | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:9:98:26 | ...; | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:23:99:31 | ... == ... | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:98:9:98:25 | ... = ... | +| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:9:99:33 | ...; | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:28:99:31 | null | +| Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:23 | access to local variable s | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:27:100:34 | access to property Length | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:27 | access to local variable s | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:100:9:100:35 | call to method WriteLine | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:9:102:26 | ...; | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:23:103:31 | ... != ... | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:102:9:102:25 | ... = ... | +| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:9:103:33 | ...; | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:28:103:31 | null | +| Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:23 | access to local variable s | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:27:104:34 | access to property Length | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:27 | access to local variable s | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:104:9:104:35 | call to method WriteLine | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:9:106:26 | ...; | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:24:107:32 | ... != ... | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:106:9:106:25 | ... = ... | +| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:9:107:34 | ...; | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:29:107:32 | null | +| Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:24 | access to local variable s | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:27:108:34 | access to property Length | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:27 | access to local variable s | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:108:9:108:35 | call to method WriteLine | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:9:110:26 | ...; | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:24:111:32 | ... == ... | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:110:9:110:25 | ... = ... | +| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:9:111:34 | ...; | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:29:111:32 | null | +| Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:24 | access to local variable s | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:27:112:34 | access to property Length | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:27 | access to local variable s | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:112:9:112:35 | call to method WriteLine | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:9:114:26 | ...; | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:114:9:114:25 | ... = ... | +| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:9:115:38 | ...; | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:28:115:31 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:31 | ... != ... | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:34 | access to property Length | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:27 | access to local variable s | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:116:9:116:35 | call to method WriteLine | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:9:118:26 | ...; | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:118:9:118:25 | ... = ... | +| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:9:119:40 | ...; | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:29:119:32 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:32 | ... == ... | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:34 | access to property Length | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:27 | access to local variable s | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:120:9:120:35 | call to method WriteLine | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:9:122:26 | ...; | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:122:9:122:25 | ... = ... | +| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:9:123:38 | ...; | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:28:123:31 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:31 | ... == ... | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:34 | access to property Length | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:27 | access to local variable s | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:124:9:124:35 | call to method WriteLine | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:9:126:26 | ...; | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | -| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | Assert.cs:127:9:127:40 | [b (line 84): true] ...; | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:29:127:32 | [b (line 84): true] null | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:126:9:126:25 | ... = ... | +| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:9:127:40 | ...; | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:29:127:32 | null | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:29:127:32 | [b (line 84): true] null | Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | +| Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:32 | ... != ... | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:34 | access to property Length | | Assert.cs:128:9:128:36 | ...; | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:9:128:36 | ...; | @@ -5173,8 +4615,6 @@ postDominance | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | BreakInTry.cs:35:7:35:7 | ; | | BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:20:10:20:11 | enter M2 | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | access to parameter args | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:31:21:31:32 | ... == ... | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:21:5:36:5 | {...} | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:23:9:34:9 | {...} | @@ -5183,21 +4623,18 @@ postDominance | BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:17:27:26 | if (...) ... | | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:28:26:31 | null | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:23 | access to local variable arg | -| BreakInTry.cs:30:13:33:13 | [finally: break] {...} | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | BreakInTry.cs:30:13:33:13 | [finally: break] {...} | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:26:21:26:31 | ... == ... | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:17:32:21 | if (...) ... | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:29:31:32 | null | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:31:29:31:32 | [finally: break] null | -| BreakInTry.cs:31:29:31:32 | [finally: break] null | BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:24 | access to parameter args | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | +| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:31:21:31:32 | ... == ... | +| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:38:10:38:11 | exit M3 | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | [finally: return] break; | +| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:38:10:38:11 | enter M3 | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:39:5:54:5 | {...} | @@ -5206,27 +4643,17 @@ postDominance | BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:13:43:23 | if (...) ... | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:25:42:28 | null | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:20 | access to parameter args | -| BreakInTry.cs:46:9:52:9 | [finally: return] {...} | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:42:17:42:28 | ... == ... | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | access to parameter args | -| BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | BreakInTry.cs:46:9:52:9 | [finally: return] {...} | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:48:13:51:13 | [finally: return] {...} | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | BreakInTry.cs:48:13:51:13 | [finally: return] {...} | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:48:13:51:13 | {...} | -| BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:17:50:26 | if (...) ... | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:28:49:31 | null | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:49:28:49:31 | [finally: return] null | -| BreakInTry.cs:49:28:49:31 | [finally: return] null | BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:23 | access to local variable arg | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:56:10:56:11 | exit M4 | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | [finally: return] break; | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | break; | | BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:56:10:56:11 | enter M4 | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:57:5:71:5 | {...} | @@ -5235,20 +4662,14 @@ postDominance | BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:13:61:23 | if (...) ... | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:25:60:28 | null | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:20 | access to parameter args | -| BreakInTry.cs:64:9:70:9 | [finally: return] {...} | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:60:17:60:28 | ... == ... | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | access to parameter args | -| BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | BreakInTry.cs:64:9:70:9 | [finally: return] {...} | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:66:13:69:13 | [finally: return] {...} | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | BreakInTry.cs:66:13:69:13 | [finally: return] {...} | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:66:13:69:13 | {...} | -| BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:17:68:26 | if (...) ... | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:28:67:31 | null | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:67:28:67:31 | [finally: return] null | -| BreakInTry.cs:67:28:67:31 | [finally: return] null | BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:23 | access to local variable arg | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | @@ -5278,17 +4699,19 @@ postDominance | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | {...} | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | enter M | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:29:5:41:5 | {...} | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:31:9:34:9 | {...} | -| CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | -| CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | -| CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | -| CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | +| CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | "Finally" | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | +| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:41 | ...; | +| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:39:27:39:32 | "Dead" | +| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:32:40:36 | "End" | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:9:40:11 | End: | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:38 | ...; | @@ -5381,13 +4804,11 @@ postDominance | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:3:10:3:19 | enter IncrOrDecr | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:9:6:16 | if (...) ... | -| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | -| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | +| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:13 | access to parameter x | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:6:13:6:15 | ...++ | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:13 | access to parameter x | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:13:7:16 | [true] !... | @@ -5399,25 +4820,19 @@ postDominance | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:9:13:18 | ... ...; | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:13:13:13:17 | Int32 x = ... | | Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:9:15:16 | if (...) ... | -| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | -| Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | -| Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | -| Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | -| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | +| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:15:13:15:13 | access to local variable x | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:15:13:15:15 | ...++ | +| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:17:16:17 | 0 | +| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:13 | access to local variable x | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:13:18:20 | if (...) ... | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:17 | access to local variable x | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | +| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:13:16:17 | ... > ... | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [false] !... | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | | Conditions.cs:22:9:22:10 | exit M2 | Conditions.cs:22:9:22:10 | exit M2 (normal) | @@ -5429,17 +4844,15 @@ postDominance | Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:24:13:24:17 | Int32 x = ... | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:9:27:20 | if (...) ... | | Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | -| Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | -| Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | -| Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | +| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:27:17:27:17 | access to local variable x | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:25:13:25:14 | access to parameter b1 | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:27:17:27:19 | ...++ | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:29:13:29:13 | access to local variable x | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | | Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:13:28:14 | access to parameter b2 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | | Conditions.cs:33:9:33:10 | exit M3 | Conditions.cs:33:9:33:10 | exit M3 (normal) | @@ -5458,16 +4871,15 @@ postDominance | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:37:13:37:14 | access to parameter b1 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:38:13:38:19 | ... = ... | | Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | -| Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | -| Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | +| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:40:13:40:13 | access to local variable x | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:40:13:40:15 | ...++ | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:42:13:42:13 | access to local variable x | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | | Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | +| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:13:41:14 | access to local variable b2 | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | | Conditions.cs:46:9:46:10 | exit M4 | Conditions.cs:46:9:46:10 | exit M4 (normal) | | Conditions.cs:46:9:46:10 | exit M4 (normal) | Conditions.cs:54:9:54:17 | return ...; | @@ -5476,31 +4888,18 @@ postDominance | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:17:48:17 | 0 | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:9:48:18 | ... ...; | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:48:13:48:17 | Int32 y = ... | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | -| Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:9:53:9 | while (...) ... | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:51:17:51:17 | access to parameter b | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:19 | ...++ | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:22:49:22 | 0 | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:18 | ...-- | -| Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | -| Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | -| Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | -| Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | | Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:13:52:20 | if (...) ... | -| Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | -| Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | +| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:52:17:52:17 | access to local variable y | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:54:16:54:16 | access to local variable y | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:22 | ... > ... | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | | Conditions.cs:57:9:57:10 | exit M5 | Conditions.cs:57:9:57:10 | exit M5 (normal) | | Conditions.cs:57:9:57:10 | exit M5 (normal) | Conditions.cs:67:9:67:17 | return ...; | | Conditions.cs:58:5:68:5 | {...} | Conditions.cs:57:9:57:10 | enter M5 | @@ -5508,37 +4907,21 @@ postDominance | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:17:59:17 | 0 | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:9:59:18 | ... ...; | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:59:13:59:17 | Int32 y = ... | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | -| Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:9:64:9 | while (...) ... | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:62:17:62:17 | access to parameter b | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:19 | ...++ | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:22:60:22 | 0 | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:18 | ...-- | -| Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | -| Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | -| Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | -| Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | | Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:13:63:20 | if (...) ... | -| Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | -| Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | +| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:63:17:63:17 | access to local variable y | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:60:16:60:22 | ... > ... | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:9:66:16 | if (...) ... | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:66:13:66:13 | access to local variable y | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | | Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:13:65:13 | access to parameter b | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | | Conditions.cs:70:9:70:10 | exit M6 | Conditions.cs:70:9:70:10 | exit M6 (normal) | @@ -5620,31 +5003,24 @@ postDominance | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:17 | access to parameter b | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:104:13:104:28 | String x = ... | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:9:106:20 | if (...) ... | -| Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | Conditions.cs:106:18:106:19 | [b (line 102): true] "" | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | -| Conditions.cs:106:18:106:19 | [b (line 102): true] "" | Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | -| Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | -| Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | -| Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | -| Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | -| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | +| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:18:106:19 | "" | +| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:106:13:106:19 | ... + ... | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:13 | access to local variable x | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:19 | ... = ... | +| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:13 | access to local variable x | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:24:107:24 | 0 | +| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:20 | access to property Length | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:13:109:24 | if (...) ... | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:24 | ...; | | Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:22:109:23 | "" | | Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:109:17:109:23 | ... + ... | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:17 | access to local variable x | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | ... > ... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [false] !... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:23 | ... = ... | | Conditions.cs:113:10:113:11 | exit M9 | Conditions.cs:113:10:113:11 | exit M9 (normal) | @@ -5661,7 +5037,7 @@ postDominance | Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:29:116:39 | access to property Length | | Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:29:116:32 | access to parameter args | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:17:121:20 | access to local variable last | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:122:17:122:24 | ... = ... | | Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:117:9:123:9 | {...} | @@ -5674,67 +5050,43 @@ postDominance | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:39 | access to property Length | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:118:17:118:43 | Boolean last = ... | | Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:13:120:23 | if (...) ... | -| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | Conditions.cs:120:21:120:22 | [last (line 118): false] "" | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:21:120:22 | "" | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:120:17:120:22 | ... = ... | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:21:122:24 | null | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:129:10:129:12 | enter M10 | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:130:5:141:5 | {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:9:140:9 | while (...) ... | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | | Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | this access | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:13:139:13 | if (...) ... | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | this access | +| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:17:138:17 | if (...) ... | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:26 | this access | +| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:38 | ...; | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:26 | access to field Field1 | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:136:17:138:17 | {...} | | Conditions.cs:143:10:143:12 | exit M11 | Conditions.cs:143:10:143:12 | exit M11 (normal) | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:147:13:147:48 | call to method WriteLine | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:149:13:149:48 | call to method WriteLine | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:143:10:143:12 | enter M11 | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:144:5:150:5 | {...} | -| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | -| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | | Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:9:145:30 | ... ...; | -| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | -| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | -| Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:27:145:29 | "b" | +| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:9:149:49 | if (...) ... | | Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:38:147:47 | $"..." | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | | Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:44:147:46 | {...} | | Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:13:147:49 | ...; | | Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:45:147:45 | access to local variable s | | Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:40:147:43 | "a = " | | Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:38:149:47 | $"..." | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | | Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:44:149:46 | {...} | | Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:13:149:49 | ...; | | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:45:149:45 | access to local variable s | @@ -5933,7 +5285,6 @@ postDominance | Finally.cs:3:14:3:20 | exit Finally | Finally.cs:3:14:3:20 | exit Finally (normal) | | Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | {...} | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | call to constructor Object | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | | Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:15:13:15:40 | call to method WriteLine | | Finally.cs:8:5:17:5 | {...} | Finally.cs:7:10:7:11 | enter M1 | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:8:5:17:5 | {...} | @@ -5942,14 +5293,9 @@ postDominance | Finally.cs:11:13:11:38 | ...; | Finally.cs:10:9:12:9 | {...} | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:38 | ...; | | Finally.cs:14:9:16:9 | {...} | Finally.cs:11:13:11:37 | call to method WriteLine | -| Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | Finally.cs:15:31:15:39 | [finally: exception] "Finally" | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:15:31:15:39 | "Finally" | | Finally.cs:15:13:15:41 | ...; | Finally.cs:14:9:16:9 | {...} | -| Finally.cs:15:13:15:41 | [finally: exception] ...; | Finally.cs:14:9:16:9 | [finally: exception] {...} | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:41 | ...; | -| Finally.cs:15:31:15:39 | [finally: exception] "Finally" | Finally.cs:15:13:15:41 | [finally: exception] ...; | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:50:13:50:40 | call to method WriteLine | | Finally.cs:20:5:52:5 | {...} | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:20:5:52:5 | {...} | @@ -5958,32 +5304,26 @@ postDominance | Finally.cs:23:13:23:38 | ...; | Finally.cs:22:9:25:9 | {...} | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:38 | ...; | | Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:48:26:51 | [exception: Exception] true | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | | Finally.cs:31:9:40:9 | {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:31:9:40:9 | {...} | | Finally.cs:33:13:35:13 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:33:13:35:13 | {...} | | Finally.cs:34:21:34:24 | true | Finally.cs:34:17:34:32 | if (...) ... | -| Finally.cs:37:13:39:13 | [finally: exception] {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:38:17:38:44 | [finally: exception] throw ...; | Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | -| Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | -| Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | Finally.cs:37:13:39:13 | [finally: exception] {...} | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:21:34:24 | true | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:38:23:38:43 | object creation of type Exception | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:37:38:42 | "Boo!" | +| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:37:13:39:13 | {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:49:9:51:9 | [finally: return] {...} | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:38:17:38:44 | throw ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | Finally.cs:50:31:50:39 | [finally: exception] "Finally" | -| Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | Finally.cs:50:31:50:39 | [finally: return] "Finally" | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:31:50:39 | "Finally" | | Finally.cs:50:13:50:41 | ...; | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:50:13:50:41 | [finally: exception] ...; | Finally.cs:49:9:51:9 | [finally: exception] {...} | -| Finally.cs:50:13:50:41 | [finally: return] ...; | Finally.cs:49:9:51:9 | [finally: return] {...} | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:41 | ...; | -| Finally.cs:50:31:50:39 | [finally: exception] "Finally" | Finally.cs:50:13:50:41 | [finally: exception] ...; | -| Finally.cs:50:31:50:39 | [finally: return] "Finally" | Finally.cs:50:13:50:41 | [finally: return] ...; | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:70:13:70:40 | call to method WriteLine | | Finally.cs:55:5:72:5 | {...} | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:55:5:72:5 | {...} | @@ -5992,36 +5332,28 @@ postDominance | Finally.cs:58:13:58:38 | ...; | Finally.cs:57:9:60:9 | {...} | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:38 | ...; | | Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:48:61:51 | [exception: Exception] true | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:65:48:65:51 | [exception: Exception] null | | Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | -| Finally.cs:69:9:71:9 | [finally: return] {...} | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | | Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | Finally.cs:70:31:70:39 | [finally: exception] "Finally" | -| Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | Finally.cs:70:31:70:39 | [finally: return] "Finally" | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:31:70:39 | "Finally" | | Finally.cs:70:13:70:41 | ...; | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:70:13:70:41 | [finally: exception] ...; | Finally.cs:69:9:71:9 | [finally: exception] {...} | -| Finally.cs:70:13:70:41 | [finally: return] ...; | Finally.cs:69:9:71:9 | [finally: return] {...} | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:41 | ...; | -| Finally.cs:70:31:70:39 | [finally: exception] "Finally" | Finally.cs:70:13:70:41 | [finally: exception] ...; | -| Finally.cs:70:31:70:39 | [finally: return] "Finally" | Finally.cs:70:13:70:41 | [finally: return] ...; | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:77:16:77:20 | ... > ... | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:97:21:97:23 | [finally: break] ...-- | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:97:21:97:23 | [finally: return] ...-- | +| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:97:21:97:23 | ...-- | | Finally.cs:75:5:101:5 | {...} | Finally.cs:74:10:74:11 | enter M4 | | Finally.cs:76:9:76:19 | ... ...; | Finally.cs:75:5:101:5 | {...} | | Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:17:76:18 | 10 | | Finally.cs:76:17:76:18 | 10 | Finally.cs:76:9:76:19 | ... ...; | | Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:76:13:76:18 | Int32 i = ... | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:9:100:9 | while (...) ... | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:97:21:97:23 | ...-- | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:97:21:97:23 | [finally: continue] ...-- | | Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:20:77:20 | 0 | | Finally.cs:77:20:77:20 | 0 | Finally.cs:77:16:77:16 | access to local variable i | | Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:78:9:100:9 | {...} | @@ -6036,64 +5368,23 @@ postDominance | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:26:85:26 | 2 | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:21 | access to local variable i | -| Finally.cs:89:13:99:13 | [finally: break] {...} | Finally.cs:86:21:86:26 | break; | -| Finally.cs:89:13:99:13 | [finally: continue] {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:89:13:99:13 | [finally: return] {...} | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:90:17:98:17 | [finally: break] try {...} ... | Finally.cs:89:13:99:13 | [finally: break] {...} | -| Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | Finally.cs:89:13:99:13 | [finally: continue] {...} | -| Finally.cs:90:17:98:17 | [finally: return] try {...} ... | Finally.cs:89:13:99:13 | [finally: return] {...} | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:82:21:82:27 | return ...; | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:84:21:84:29 | continue; | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:21:85:26 | ... == ... | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:86:21:86:26 | break; | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:91:17:94:17 | [finally: break] {...} | Finally.cs:90:17:98:17 | [finally: break] try {...} ... | -| Finally.cs:91:17:94:17 | [finally: continue] {...} | Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | -| Finally.cs:91:17:94:17 | [finally: return] {...} | Finally.cs:90:17:98:17 | [finally: return] try {...} ... | | Finally.cs:91:17:94:17 | {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:92:21:93:46 | [finally: break] if (...) ... | Finally.cs:91:17:94:17 | [finally: break] {...} | -| Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | Finally.cs:91:17:94:17 | [finally: continue] {...} | -| Finally.cs:92:21:93:46 | [finally: return] if (...) ... | Finally.cs:91:17:94:17 | [finally: return] {...} | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:91:17:94:17 | {...} | -| Finally.cs:92:25:92:25 | [finally: break] access to local variable i | Finally.cs:92:21:93:46 | [finally: break] if (...) ... | -| Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | -| Finally.cs:92:25:92:25 | [finally: return] access to local variable i | Finally.cs:92:21:93:46 | [finally: return] if (...) ... | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:21:93:46 | if (...) ... | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:30:92:30 | 3 | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:92:30:92:30 | [finally: break] 3 | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:92:30:92:30 | [finally: continue] 3 | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:92:30:92:30 | [finally: return] 3 | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:25 | access to local variable i | -| Finally.cs:92:30:92:30 | [finally: break] 3 | Finally.cs:92:25:92:25 | [finally: break] access to local variable i | -| Finally.cs:92:30:92:30 | [finally: continue] 3 | Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | -| Finally.cs:92:30:92:30 | [finally: return] 3 | Finally.cs:92:25:92:25 | [finally: return] access to local variable i | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:92:25:92:30 | [finally: break] ... == ... | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:92:25:92:30 | [finally: continue] ... == ... | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:92:25:92:30 | [finally: return] ... == ... | | Finally.cs:96:17:98:17 | {...} | Finally.cs:92:25:92:30 | ... == ... | -| Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | Finally.cs:97:21:97:24 | [finally(1): exception] ...; | -| Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | -| Finally.cs:97:21:97:21 | [finally: break] access to local variable i | Finally.cs:97:21:97:24 | [finally: break] ...; | -| Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | -| Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | Finally.cs:97:21:97:24 | [finally: continue] ...; | -| Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | -| Finally.cs:97:21:97:21 | [finally: return] access to local variable i | Finally.cs:97:21:97:24 | [finally: return] ...; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:25:93:46 | throw ...; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:24 | ...; | | Finally.cs:97:21:97:23 | ...-- | Finally.cs:97:21:97:21 | access to local variable i | -| Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: break] ...-- | Finally.cs:97:21:97:21 | [finally: break] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: continue] ...-- | Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | -| Finally.cs:97:21:97:23 | [finally: return] ...-- | Finally.cs:97:21:97:21 | [finally: return] access to local variable i | | Finally.cs:97:21:97:24 | ...; | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:97:21:97:24 | [finally(1): exception] ...; | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:97:21:97:24 | [finally: break] ...; | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:97:21:97:24 | [finally: continue] ...; | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:97:21:97:24 | [finally: return] ...; | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:17:116:32 | ... > ... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:17:116:32 | [finally: return] ... > ... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:36 | call to method WriteLine | | Finally.cs:104:5:119:5 | {...} | Finally.cs:103:10:103:11 | enter M5 | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:104:5:119:5 | {...} | @@ -6101,70 +5392,37 @@ postDominance | Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:106:9:111:9 | {...} | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | this access | | Finally.cs:107:17:107:21 | this access | Finally.cs:107:13:108:23 | if (...) ... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:21 | access to field Field | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:28 | access to property Length | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | this access | | Finally.cs:109:17:109:21 | this access | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:21 | access to field Field | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:113:9:118:9 | [finally: return] {...} | Finally.cs:108:17:108:23 | return ...; | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:21 | access to field Field | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:108:17:108:23 | return ...; | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:21 | access to field Field | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:33 | ... == ... | -| Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | Finally.cs:113:9:118:9 | [finally: exception] {...} | -| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:113:9:118:9 | [finally: return] {...} | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:114:19:114:23 | [finally: exception] access to field Field | Finally.cs:114:19:114:23 | [finally: exception] this access | -| Finally.cs:114:19:114:23 | [finally: exception] this access | Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | -| Finally.cs:114:19:114:23 | [finally: return] access to field Field | Finally.cs:114:19:114:23 | [finally: return] this access | -| Finally.cs:114:19:114:23 | [finally: return] this access | Finally.cs:114:13:115:41 | [finally: return] if (...) ... | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | this access | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:13:115:41 | if (...) ... | -| Finally.cs:114:19:114:30 | [finally: exception] access to property Length | Finally.cs:114:19:114:23 | [finally: exception] access to field Field | -| Finally.cs:114:19:114:30 | [finally: return] access to property Length | Finally.cs:114:19:114:23 | [finally: return] access to field Field | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:23 | access to field Field | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:35:114:35 | 0 | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:35:114:35 | [finally: exception] 0 | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:35:114:35 | [finally: return] 0 | | Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:30 | access to property Length | -| Finally.cs:114:35:114:35 | [finally: exception] 0 | Finally.cs:114:19:114:30 | [finally: exception] access to property Length | -| Finally.cs:114:35:114:35 | [finally: return] 0 | Finally.cs:114:19:114:30 | [finally: return] access to property Length | -| Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | Finally.cs:115:35:115:39 | [finally: exception] access to field Field | -| Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | Finally.cs:115:35:115:39 | [finally: return] access to field Field | | Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:35:115:39 | access to field Field | | Finally.cs:115:17:115:41 | ...; | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:115:35:115:39 | [finally: exception] access to field Field | Finally.cs:115:35:115:39 | [finally: exception] this access | -| Finally.cs:115:35:115:39 | [finally: exception] this access | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:115:35:115:39 | [finally: return] access to field Field | Finally.cs:115:35:115:39 | [finally: return] this access | -| Finally.cs:115:35:115:39 | [finally: return] this access | Finally.cs:115:17:115:41 | [finally: return] ...; | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:35:115:39 | this access | | Finally.cs:115:35:115:39 | this access | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [false] !... | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:115:17:115:40 | call to method WriteLine | -| Finally.cs:116:17:116:21 | [finally: exception] access to field Field | Finally.cs:116:17:116:21 | [finally: exception] this access | -| Finally.cs:116:17:116:21 | [finally: exception] this access | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | -| Finally.cs:116:17:116:21 | [finally: return] access to field Field | Finally.cs:116:17:116:21 | [finally: return] this access | -| Finally.cs:116:17:116:21 | [finally: return] this access | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:21 | this access | | Finally.cs:116:17:116:21 | this access | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:116:17:116:28 | [finally: exception] access to property Length | Finally.cs:116:17:116:21 | [finally: exception] access to field Field | -| Finally.cs:116:17:116:28 | [finally: return] access to property Length | Finally.cs:116:17:116:21 | [finally: return] access to field Field | | Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:21 | access to field Field | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:32:116:32 | 0 | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:116:32:116:32 | [finally: exception] 0 | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:116:32:116:32 | [finally: return] 0 | | Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:28 | access to property Length | -| Finally.cs:116:32:116:32 | [finally: exception] 0 | Finally.cs:116:17:116:28 | [finally: exception] access to property Length | -| Finally.cs:116:32:116:32 | [finally: return] 0 | Finally.cs:116:17:116:28 | [finally: return] access to property Length | -| Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | Finally.cs:117:35:117:35 | [finally: exception] 1 | -| Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | Finally.cs:117:35:117:35 | [finally: return] 1 | | Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:117:35:117:35 | 1 | | Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:117:35:117:35 | [finally: exception] 1 | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:117:35:117:35 | [finally: return] 1 | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:121:10:121:11 | exit M6 | Finally.cs:121:10:121:11 | exit M6 (normal) | | Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:125:17:125:40 | Double temp = ... | | Finally.cs:122:5:131:5 | {...} | Finally.cs:121:10:121:11 | enter M6 | @@ -6177,18 +5435,17 @@ postDominance | Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:28:125:40 | access to constant E | | Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:24:125:24 | (...) ... | | Finally.cs:133:10:133:11 | exit M7 | Finally.cs:133:10:133:11 | exit M7 (abnormal) | +| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:141:13:141:44 | throw ...; | | Finally.cs:134:5:145:5 | {...} | Finally.cs:133:10:133:11 | enter M7 | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:134:5:145:5 | {...} | | Finally.cs:136:9:138:9 | {...} | Finally.cs:135:9:143:9 | try {...} ... | | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:31:137:35 | "Try" | | Finally.cs:137:13:137:37 | ...; | Finally.cs:136:9:138:9 | {...} | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:37 | ...; | -| Finally.cs:141:13:141:44 | [finally: exception] throw ...; | Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:137:13:137:36 | call to method WriteLine | | Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:19:141:43 | object creation of type ArgumentException | -| Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | Finally.cs:141:41:141:42 | [finally: exception] "" | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" | | Finally.cs:141:41:141:42 | "" | Finally.cs:140:9:143:9 | {...} | -| Finally.cs:141:41:141:42 | [finally: exception] "" | Finally.cs:140:9:143:9 | [finally: exception] {...} | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:158:21:158:36 | ... == ... | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:163:17:163:42 | call to method WriteLine | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:167:17:167:37 | call to method WriteLine | @@ -6200,19 +5457,14 @@ postDominance | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:25:151:28 | null | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:20 | access to parameter args | | Finally.cs:155:9:169:9 | {...} | Finally.cs:151:17:151:28 | ... == ... | -| Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | Finally.cs:155:9:169:9 | [finally: exception] {...} | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:17:152:50 | throw ...; | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:155:9:169:9 | {...} | -| Finally.cs:157:13:160:13 | [finally: exception] {...} | Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | | Finally.cs:157:13:160:13 | {...} | Finally.cs:156:13:168:13 | try {...} ... | -| Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | Finally.cs:157:13:160:13 | [finally: exception] {...} | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:157:13:160:13 | {...} | -| Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:17:159:45 | if (...) ... | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:24 | access to parameter args | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:159:41:159:43 | [finally: exception] "1" | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:41:159:43 | "1" | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:27:159:44 | object creation of type Exception | @@ -6220,38 +5472,21 @@ postDominance | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | -| Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | -| Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:161:52:161:54 | [exception: Exception] "1" | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | | Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | -| Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | -| Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | -| Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | Finally.cs:163:35:163:41 | [finally: exception] access to array element | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:35:163:41 | access to array element | | Finally.cs:163:17:163:43 | ...; | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:163:17:163:43 | [finally: exception] ...; | Finally.cs:162:13:164:13 | [finally: exception] {...} | -| Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | Finally.cs:163:17:163:43 | [finally: exception] ...; | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:17:163:43 | ...; | -| Finally.cs:163:35:163:41 | [finally: exception] access to array element | Finally.cs:163:40:163:40 | [finally: exception] 0 | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:40:163:40 | 0 | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:38 | access to parameter args | -| Finally.cs:163:40:163:40 | [finally: exception] 0 | Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | -| Finally.cs:166:13:168:13 | [finally: exception] {...} | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | | Finally.cs:166:13:168:13 | {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | Finally.cs:167:35:167:36 | [finally: exception] "" | | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:35:167:36 | "" | | Finally.cs:167:17:167:38 | ...; | Finally.cs:166:13:168:13 | {...} | -| Finally.cs:167:17:167:38 | [finally: exception] ...; | Finally.cs:166:13:168:13 | [finally: exception] {...} | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:38 | ...; | -| Finally.cs:167:35:167:36 | [finally: exception] "" | Finally.cs:167:17:167:38 | [finally: exception] ...; | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | enter ExceptionA | | Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | {...} | @@ -6264,33 +5499,28 @@ postDominance | Finally.cs:174:11:174:20 | exit ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | {...} | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | call to constructor Exception | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:21:186:22 | access to parameter b2 | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:190:21:190:22 | access to parameter b1 | | Finally.cs:177:5:193:5 | {...} | Finally.cs:176:10:176:11 | enter M9 | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:177:5:193:5 | {...} | | Finally.cs:179:9:181:9 | {...} | Finally.cs:178:9:192:9 | try {...} ... | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:179:9:181:9 | {...} | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:13:180:43 | if (...) ... | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:180:17:180:18 | access to parameter b1 | -| Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | -| Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | -| Finally.cs:190:25:190:47 | [finally: exception] throw ...; | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:17:180:18 | access to parameter b1 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:185:13:187:13 | {...} | Finally.cs:184:13:191:13 | try {...} ... | +| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:185:13:187:13 | {...} | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:17:186:47 | if (...) ... | +| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:17:190:47 | if (...) ... | +| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:195:10:195:12 | exit M10 (normal) | Finally.cs:213:9:213:24 | ... = ... | | Finally.cs:196:5:214:5 | {...} | Finally.cs:195:10:195:12 | enter M10 | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:196:5:214:5 | {...} | @@ -6298,34 +5528,22 @@ postDominance | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:198:9:200:9 | {...} | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:13:199:43 | if (...) ... | | Finally.cs:202:9:212:9 | {...} | Finally.cs:199:17:199:18 | access to parameter b1 | -| Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | Finally.cs:202:9:212:9 | [finally: exception] {...} | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:204:13:206:13 | [finally: exception] {...} | Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | | Finally.cs:204:13:206:13 | {...} | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | Finally.cs:204:13:206:13 | [finally: exception] {...} | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:204:13:206:13 | {...} | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:17:205:47 | if (...) ... | | Finally.cs:208:13:210:13 | {...} | Finally.cs:205:21:205:22 | access to parameter b2 | -| Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | Finally.cs:208:13:210:13 | [finally: exception] {...} | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:17:209:47 | if (...) ... | -| Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:25:209:47 | [finally: exception] throw ...; | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | | Finally.cs:209:25:209:47 | throw ...; | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:211:13:211:16 | [finally: exception] this access | Finally.cs:211:13:211:29 | [finally: exception] ...; | | Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:29 | ...; | | Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:26:211:28 | "0" | -| Finally.cs:211:13:211:28 | [finally: exception] ... = ... | Finally.cs:211:26:211:28 | [finally: exception] "0" | | Finally.cs:211:13:211:29 | ...; | Finally.cs:209:21:209:22 | access to parameter b3 | | Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:16 | this access | -| Finally.cs:211:26:211:28 | [finally: exception] "0" | Finally.cs:211:13:211:16 | [finally: exception] this access | | Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:25 | ...; | | Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:22:213:24 | "1" | | Finally.cs:213:9:213:25 | ...; | Finally.cs:211:13:211:28 | ... = ... | @@ -6350,7 +5568,6 @@ postDominance | Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:27:230:32 | "Done" | | Finally.cs:230:9:230:34 | ...; | Finally.cs:228:13:228:40 | call to method WriteLine | | Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:9:230:34 | ...; | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | | Finally.cs:233:10:233:12 | exit M12 (normal) | Finally.cs:260:9:260:33 | call to method WriteLine | | Finally.cs:234:5:261:5 | {...} | Finally.cs:233:10:233:12 | enter M12 | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:234:5:261:5 | {...} | @@ -6360,41 +5577,28 @@ postDominance | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:238:13:241:13 | {...} | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:17:240:43 | if (...) ... | | Finally.cs:243:13:253:13 | {...} | Finally.cs:239:21:239:22 | access to parameter b1 | -| Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | Finally.cs:243:13:253:13 | [finally: exception] {...} | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:245:17:248:17 | [finally: exception] {...} | Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | | Finally.cs:245:17:248:17 | {...} | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | Finally.cs:245:17:248:17 | [finally: exception] {...} | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:245:17:248:17 | {...} | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:21:247:47 | if (...) ... | | Finally.cs:250:17:252:17 | {...} | Finally.cs:246:25:246:26 | access to parameter b2 | -| Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | -| Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | -| Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:251:39:251:53 | "Inner finally" | | Finally.cs:251:21:251:55 | ...; | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:251:21:251:55 | [finally(1): exception] ...; | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:251:21:251:55 | [finally: exception] ...; | Finally.cs:250:17:252:17 | [finally: exception] {...} | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:55 | ...; | -| Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | Finally.cs:251:21:251:55 | [finally(1): exception] ...; | -| Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | -| Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | Finally.cs:251:21:251:55 | [finally: exception] ...; | | Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:31:254:43 | "Mid finally" | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:251:21:251:54 | call to method WriteLine | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | | Finally.cs:257:9:259:9 | {...} | Finally.cs:254:13:254:44 | call to method WriteLine | -| Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:258:31:258:45 | "Outer finally" | | Finally.cs:258:13:258:47 | ...; | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:258:13:258:47 | [finally: exception] ...; | Finally.cs:257:9:259:9 | [finally: exception] {...} | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:47 | ...; | -| Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | Finally.cs:258:13:258:47 | [finally: exception] ...; | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | | Finally.cs:260:9:260:34 | ...; | Finally.cs:258:13:258:46 | call to method WriteLine | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:272:13:272:18 | [finally: exception] ... = ... | | Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:272:13:272:18 | ... = ... | | Finally.cs:264:5:274:5 | {...} | Finally.cs:263:10:263:12 | enter M13 | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:264:5:274:5 | {...} | @@ -6403,22 +5607,14 @@ postDominance | Finally.cs:267:13:267:35 | ...; | Finally.cs:266:9:268:9 | {...} | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:35 | ...; | | Finally.cs:270:9:273:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | -| Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | Finally.cs:271:31:271:33 | [finally: exception] "3" | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:31:271:33 | "3" | | Finally.cs:271:13:271:35 | ...; | Finally.cs:270:9:273:9 | {...} | -| Finally.cs:271:13:271:35 | [finally: exception] ...; | Finally.cs:270:9:273:9 | [finally: exception] {...} | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:35 | ...; | -| Finally.cs:271:31:271:33 | [finally: exception] "3" | Finally.cs:271:13:271:35 | [finally: exception] ...; | -| Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | Finally.cs:272:13:272:19 | [finally: exception] ...; | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:19 | ...; | | Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:18:272:18 | 3 | | Finally.cs:272:13:272:18 | ... = ... | Finally.cs:272:13:272:18 | ... + ... | -| Finally.cs:272:13:272:18 | [finally: exception] ... + ... | Finally.cs:272:18:272:18 | [finally: exception] 3 | -| Finally.cs:272:13:272:18 | [finally: exception] ... = ... | Finally.cs:272:13:272:18 | [finally: exception] ... + ... | | Finally.cs:272:13:272:19 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | -| Finally.cs:272:13:272:19 | [finally: exception] ...; | Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:13 | access to parameter i | -| Finally.cs:272:18:272:18 | [finally: exception] 3 | Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | enter Foreach | | Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | exit Foreach (normal) | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | {...} | @@ -6698,9 +5894,8 @@ postDominance | LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:13:9:16 | access to parameter args | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:28:9:28 | 0 | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:23 | access to property Length | -| LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | -| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:35 | ...; | @@ -6715,9 +5910,8 @@ postDominance | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:33:17:35 | "a" | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:38:17:40 | "b" | -| LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:18:22:18:22 | String x | @@ -6728,22 +5922,25 @@ postDominance | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | access to parameter args | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:23:5:27:5 | {...} | -| LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | -| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | | LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:24:22:24:24 | Char arg | | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | | LoopUnrolling.cs:29:10:29:11 | exit M4 | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:29:10:29:11 | enter M4 | | LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:30:5:34:5 | {...} | | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:29:31:29 | 0 | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:9:31:31 | ... ...; | -| LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | +| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:31:33:31 | access to local variable x | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:33 | ...; | | LoopUnrolling.cs:36:10:36:11 | exit M5 | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:36:10:36:11 | enter M5 | @@ -6763,19 +5960,19 @@ postDominance | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:33:39:35 | "0" | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:38:39:40 | "1" | -| LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | -| LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:40:22:40:22 | String x | | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:35:42:39 | ... + ... | | LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:17:42:41 | ...; | | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:39:42:39 | access to local variable y | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:35 | access to local variable x | +| LoopUnrolling.cs:45:10:45:11 | exit M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:45:10:45:11 | enter M6 | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:46:5:53:5 | {...} | | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | @@ -6785,7 +5982,7 @@ postDominance | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:33:47:35 | "a" | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:38:47:40 | "b" | -| LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:50:34:50:34 | access to local variable x | @@ -6793,8 +5990,7 @@ postDominance | LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:16:50:36 | ...; | | LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | | LoopUnrolling.cs:55:10:55:11 | exit M7 | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | +| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:55:10:55:11 | enter M7 | | LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:56:5:65:5 | {...} | | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | @@ -6804,33 +6000,23 @@ postDominance | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:33:57:35 | "a" | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:38:57:40 | "b" | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | -| LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:59:9:64:9 | {...} | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | | LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:13:61:37 | if (...) ... | -| LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | -| LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | -| LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | -| LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | +| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:61:35:61:35 | access to local variable x | +| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x | +| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:67:10:67:11 | exit M8 | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:67:10:67:11 | enter M8 | | LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:68:5:74:5 | {...} | | LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:9:70:19 | if (...) ... | @@ -6839,28 +6025,42 @@ postDominance | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:21 | ...; | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | | LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | +| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:35 | ...; | | LoopUnrolling.cs:76:10:76:11 | exit M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:76:10:76:11 | enter M9 | | LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:77:5:83:5 | {...} | | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:32:78:32 | 0 | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:9:78:34 | ... ...; | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:29:78:29 | 2 | -| LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | +| LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:81:31:81:31 | access to local variable x | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:80:9:82:9 | {...} | +| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:33 | ...; | | LoopUnrolling.cs:85:10:85:12 | exit M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | +| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:85:10:85:12 | enter M10 | | LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:86:5:92:5 | {...} | | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:32:87:32 | 2 | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:9:87:34 | ... ...; | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:29:87:29 | 0 | -| LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | +| LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:90:31:90:31 | access to local variable x | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:89:9:91:9 | {...} | +| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:33 | ...; | | LoopUnrolling.cs:94:10:94:12 | exit M11 | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:94:10:94:12 | enter M11 | @@ -6869,9 +6069,8 @@ postDominance | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:32:96:32 | 2 | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:9:96:34 | ... ...; | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:29:96:29 | 2 | -| LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:31:99:31 | access to local variable x | @@ -8255,8 +7454,7 @@ postDominance | cflow.cs:256:17:256:37 | ...; | cflow.cs:255:13:255:20 | default: | | cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:37 | ...; | | cflow.cs:257:17:257:22 | break; | cflow.cs:256:17:256:36 | call to method WriteLine | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:275:13:275:41 | call to method WriteLine | | cflow.cs:262:5:277:5 | {...} | cflow.cs:261:49:261:53 | enter Yield | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:22:263:22 | 0 | | cflow.cs:263:22:263:22 | 0 | cflow.cs:262:5:277:5 | {...} | @@ -8274,10 +7472,10 @@ postDominance | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:264:25:264:30 | ... < ... | | cflow.cs:269:9:272:9 | {...} | cflow.cs:268:9:276:9 | try {...} ... | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:269:9:272:9 | {...} | -| cflow.cs:274:9:276:9 | [finally: return] {...} | cflow.cs:270:13:270:24 | yield break; | -| cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | cflow.cs:275:31:275:40 | [finally: return] "not dead" | -| cflow.cs:275:13:275:42 | [finally: return] ...; | cflow.cs:274:9:276:9 | [finally: return] {...} | -| cflow.cs:275:31:275:40 | [finally: return] "not dead" | cflow.cs:275:13:275:42 | [finally: return] ...; | +| cflow.cs:274:9:276:9 | {...} | cflow.cs:270:13:270:24 | yield break; | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:274:9:276:9 | {...} | +| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:42 | ...; | | cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:31:282:33 | {...} | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | enter ControlFlowSub | @@ -8470,1169 +7668,1272 @@ blockDominance | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | [b (line 56): false] "" | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | [false] ... && ... | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:58:31:58:32 | [b (line 56): false] "" | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [false] ... && ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | [b (line 63): true] null | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | [b (line 63): false] "" | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | [false] ... \|\| ... | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | [true] ... \|\| ... | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:65:24:65:27 | [b (line 63): true] null | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:65:31:65:32 | [b (line 63): false] "" | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | [b (line 70): false] "" | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | [false] ... && ... | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:72:31:72:32 | [b (line 70): false] "" | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [false] ... && ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | [b (line 77): true] null | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | [b (line 77): false] "" | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | [false] ... \|\| ... | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | [true] ... \|\| ... | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:79:24:79:27 | [b (line 77): true] null | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:79:31:79:32 | [b (line 77): false] "" | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:17:126:20 | [b (line 84): true] null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:17:90:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:24:90:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:17:94:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:24:94:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:17:98:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:24:98:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:17:102:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:24:102:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:17:106:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:24:106:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:17:110:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:24:110:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:17:114:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:24:114:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:17:118:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:24:118:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:17:122:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:24:122:25 | "" | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:17:126:20 | null | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:24:126:25 | "" | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [false] ... \|\| ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [true] ... \|\| ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:86:31:86:32 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 (abnormal) | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:17:90:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:24:90:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:17:94:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:24:94:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:17:98:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:24:98:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:17:102:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:24:102:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:17:106:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:24:106:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:17:110:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:24:110:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:17:114:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:24:114:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:17:118:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:24:118:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:17:122:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:24:122:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:17:126:20 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:24:126:25 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:17:94:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:24:94:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:17:98:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:24:98:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:17:102:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:24:102:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:17:106:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:24:106:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:17:110:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:24:110:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:17:114:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:24:114:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:17:118:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:24:118:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:17:122:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:24:122:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:17:126:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:24:126:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:17:98:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:24:98:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:17:102:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:24:102:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:17:106:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:24:106:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:17:110:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:24:110:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:17:114:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:24:114:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:17:118:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:24:118:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:17:122:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:24:122:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:17:126:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:24:126:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:17:118:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:17:122:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:17:126:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:17:122:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:17:126:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:17:122:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:17:126:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:17:126:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | @@ -9642,10 +8943,12 @@ blockDominance | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | exit M13 | @@ -9697,92 +9000,67 @@ blockDominance | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:35:7:35:7 | ; | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | enter M3 | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:50:21:50:26 | [finally: return] break; | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:50:21:50:26 | [finally: return] break; | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:46:9:52:9 | {...} | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:26:47:28 | String arg | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | [finally: return] break; | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:50:21:50:26 | [finally: return] break; | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:50:21:50:26 | [finally: return] break; | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | enter M4 | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:68:21:68:26 | [finally: return] break; | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:68:21:68:26 | break; | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:68:21:68:26 | [finally: return] break; | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:64:9:70:9 | {...} | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:26:65:28 | String arg | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | [finally: return] break; | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:68:21:68:26 | [finally: return] break; | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:68:21:68:26 | [finally: return] break; | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | enter Default | @@ -9791,6 +9069,14 @@ blockDominance | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | enter M | +| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M | +| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | +| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:40:9:40:11 | End: | +| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:9:40:11 | End: | | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | enter M1 | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | @@ -9866,42 +9152,41 @@ blockDominance | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | enter Conditions | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | enter IncrOrDecr | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | +| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:9:8:16 | if (...) ... | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [false] !... | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [true] !... | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:8:13:8:16 | ...; | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | +| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | if (...) ... | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [false] !... | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:19:16:19:16 | access to local variable x | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | @@ -9909,85 +9194,69 @@ blockDominance | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | enter M2 | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | +| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | ...; | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:28:9:29:16 | if (...) ... | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:30:16:30:16 | access to local variable x | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | +| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:20 | ...; | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:29:13:29:16 | ...; | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:30:16:30:16 | access to local variable x | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | enter M3 | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:38:13:38:20 | ...; | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | +| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:20 | ...; | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | +| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | +| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:16:49:16 | access to parameter x | | Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | +| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:54:16:54:16 | access to local variable y | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | +| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | +| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:16:60:16 | access to parameter x | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | +| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:63:17:63:20 | ...; | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | if (...) ... | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:65:9:66:16 | if (...) ... | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:67:16:67:16 | access to local variable y | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | +| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:20 | ...; | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:67:16:67:16 | access to local variable y | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | | Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:70:9:70:10 | enter M6 | @@ -10054,26 +9323,24 @@ blockDominance | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:20 | ...; | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | +| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | if (...) ... | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [false] !... | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:109:17:109:24 | ...; | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:110:16:110:16 | access to local variable x | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | @@ -10084,92 +9351,66 @@ blockDominance | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 (normal) | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | exit M9 (normal) | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:122:17:122:25 | ...; | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:116:42:116:42 | access to local variable i | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | enter M10 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | true | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:136:17:138:17 | {...} | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:136:17:138:17 | {...} | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | enter M11 | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | +| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | "b" | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:147:13:147:49 | ...; | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:149:13:149:49 | ...; | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:149:13:149:49 | ...; | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | exit M11 (normal) | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:149:13:149:49 | ...; | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:49 | ...; | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:49 | ...; | | ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | enter ExitMethods | @@ -10257,13 +9498,14 @@ blockDominance | Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | enter Finally | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | enter M1 | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:14:9:16:9 | [finally: exception] {...} | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 (abnormal) | +| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 (normal) | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:14:9:16:9 | [finally: exception] {...} | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | +| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | @@ -10274,8 +9516,9 @@ blockDominance | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:34:27:34:32 | throw ...; | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:49:9:51:9 | [finally: exception] {...} | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:49:9:51:9 | {...} | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | +| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | @@ -10286,7 +9529,6 @@ blockDominance | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:49:9:51:9 | [finally: exception] {...} | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:27:9:29:9 | {...} | | Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | @@ -10301,9 +9543,13 @@ blockDominance | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:49:9:51:9 | [finally: exception] {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (abnormal) | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (normal) | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | {...} | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | @@ -10312,8 +9558,9 @@ blockDominance | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:69:9:71:9 | [finally: exception] {...} | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:69:9:71:9 | {...} | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | +| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | @@ -10322,7 +9569,6 @@ blockDominance | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:69:9:71:9 | [finally: exception] {...} | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:62:9:64:9 | {...} | | Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | @@ -10332,7 +9578,10 @@ blockDominance | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:66:9:67:9 | {...} | | Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:69:9:71:9 | [finally: exception] {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 (abnormal) | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 (normal) | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | {...} | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | enter M4 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | exit M4 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | exit M4 (abnormal) | @@ -10345,21 +9594,8 @@ blockDominance | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:86:21:86:26 | break; | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | {...} | | Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | @@ -10375,21 +9611,8 @@ blockDominance | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:86:21:86:26 | break; | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | {...} | | Finally.cs:78:9:100:9 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | | Finally.cs:78:9:100:9 | {...} | Finally.cs:78:9:100:9 | {...} | @@ -10399,93 +9622,27 @@ blockDominance | Finally.cs:78:9:100:9 | {...} | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:78:9:100:9 | {...} | Finally.cs:86:21:86:26 | break; | | Finally.cs:78:9:100:9 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | | Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | {...} | | Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:93:25:93:46 | [finally: return] throw ...; | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:96:17:98:17 | [finally: return] {...} | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:84:21:84:29 | continue; | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:86:21:86:26 | break; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:96:17:98:17 | {...} | | Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:96:17:98:17 | [finally: continue] {...} | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:86:21:86:26 | break; | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:96:17:98:17 | {...} | | Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | -| Finally.cs:86:21:86:26 | break; | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:86:21:86:26 | break; | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:86:21:86:26 | break; | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:86:21:86:26 | break; | Finally.cs:96:17:98:17 | [finally: break] {...} | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | | Finally.cs:89:13:99:13 | {...} | Finally.cs:89:13:99:13 | {...} | | Finally.cs:89:13:99:13 | {...} | Finally.cs:93:25:93:46 | throw ...; | | Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | | Finally.cs:89:13:99:13 | {...} | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: return] throw ...; | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:96:17:98:17 | [finally: return] {...} | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | | Finally.cs:96:17:98:17 | {...} | Finally.cs:96:17:98:17 | {...} | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | enter M5 | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | exit M5 | @@ -10499,27 +9656,15 @@ blockDominance | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:109:33:109:33 | 1 | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:113:9:118:9 | [finally: exception] {...} | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [false, finally: exception] !... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [false, finally: return] !... | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [true, finally: exception] !... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [true, finally: return] !... | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:116:13:117:37 | if (...) ... | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | | Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 (abnormal) | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:103:10:103:11 | exit M5 (normal) | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:108:17:108:23 | return ...; | @@ -10528,18 +9673,6 @@ blockDominance | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:117:17:117:37 | [finally: return] ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:103:10:103:11 | exit M5 (normal) | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:33:107:33 | 0 | | Finally.cs:107:33:107:33 | 0 | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:107:33:107:33 | 0 | Finally.cs:109:13:110:49 | if (...) ... | @@ -10547,153 +9680,67 @@ blockDominance | Finally.cs:107:33:107:33 | 0 | Finally.cs:109:33:109:33 | 1 | | Finally.cs:107:33:107:33 | 0 | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:107:33:107:33 | 0 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:33:109:33 | 1 | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:117:17:117:37 | ...; | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:117:17:117:37 | ...; | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:33:109:33 | 1 | | Finally.cs:109:33:109:33 | 1 | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:109:33:109:33 | 1 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:117:17:117:37 | ...; | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:113:9:118:9 | [finally: exception] {...} | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:17:114:36 | [false, finally: exception] !... | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:17:114:36 | [true, finally: exception] !... | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:117:17:117:37 | [finally: exception] ...; | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 (abnormal) | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 (normal) | | Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [false] !... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:115:17:115:41 | ...; | | Finally.cs:113:9:118:9 | {...} | Finally.cs:116:13:117:37 | if (...) ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:114:17:114:36 | [false, finally: return] !... | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:41 | [finally: return] ...; | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | | Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:117:17:117:37 | [finally: return] ...; | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 (normal) | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:117:17:117:37 | ...; | | Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | enter M6 | | Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | enter M7 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | exit M7 (abnormal) | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:140:9:143:9 | [finally: exception] {...} | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:140:9:143:9 | {...} | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | exit M7 (abnormal) | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:140:9:143:9 | [finally: exception] {...} | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:140:9:143:9 | {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | enter M8 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (abnormal) | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (normal) | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:17:152:50 | throw ...; | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:155:9:169:9 | [finally: exception] {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:155:9:169:9 | {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | [finally: exception] "1" | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | [finally: exception] {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | exit M8 (abnormal) | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:155:9:169:9 | [finally: exception] {...} | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:159:41:159:43 | [finally: exception] "1" | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:162:13:164:13 | [finally: exception] {...} | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:147:10:147:11 | exit M8 (abnormal) | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:155:9:169:9 | [finally: exception] {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:159:41:159:43 | [finally: exception] "1" | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:162:13:164:13 | [finally: exception] {...} | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 (abnormal) | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 (normal) | | Finally.cs:155:9:169:9 | {...} | Finally.cs:155:9:169:9 | {...} | | Finally.cs:155:9:169:9 | {...} | Finally.cs:158:36:158:36 | 1 | @@ -10708,30 +9755,16 @@ blockDominance | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:159:41:159:43 | [finally: exception] "1" | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:41:159:43 | [finally: exception] "1" | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:162:13:164:13 | [finally: exception] {...} | | Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | | Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | enter ExceptionB | @@ -10740,158 +9773,88 @@ blockDominance | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 (normal) | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | enter M10 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | exit M10 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:21:199:43 | throw ...; | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:202:9:212:9 | [finally: exception] {...} | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | [finally: exception] {...} | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:213:9:213:25 | ...; | | Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:202:9:212:9 | [finally: exception] {...} | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:208:13:210:13 | [finally: exception] {...} | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:211:13:211:29 | [finally: exception] ...; | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:202:9:212:9 | [finally: exception] {...} | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception] {...} | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | exit M10 | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:202:9:212:9 | {...} | Finally.cs:202:9:212:9 | {...} | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:25:205:47 | throw ...; | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | | Finally.cs:202:9:212:9 | {...} | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | | Finally.cs:202:9:212:9 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:202:9:212:9 | {...} | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:213:9:213:25 | ...; | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception] {...} | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | exit M10 | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:208:13:210:13 | {...} | Finally.cs:208:13:210:13 | {...} | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:208:13:210:13 | {...} | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:213:9:213:25 | ...; | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:213:9:213:25 | ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:25 | ...; | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | enter M11 | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:222:9:225:9 | catch {...} | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:227:9:229:9 | {...} | @@ -10899,62 +9862,52 @@ blockDominance | Finally.cs:227:9:229:9 | {...} | Finally.cs:227:9:229:9 | {...} | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | enter M12 | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:21:240:43 | throw ...; | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:243:13:253:13 | [finally: exception] {...} | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | [finally: exception] {...} | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:257:9:259:9 | [finally: exception] {...} | +| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:254:13:254:45 | ...; | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:260:9:260:34 | ...; | | Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:243:13:253:13 | [finally: exception] {...} | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally: exception] {...} | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:243:13:253:13 | [finally: exception] {...} | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception] {...} | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:243:13:253:13 | {...} | Finally.cs:243:13:253:13 | {...} | | Finally.cs:243:13:253:13 | {...} | Finally.cs:247:25:247:47 | throw ...; | | Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | | Finally.cs:243:13:253:13 | {...} | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:254:13:254:45 | ...; | | Finally.cs:243:13:253:13 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:260:9:260:34 | ...; | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception] {...} | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:254:13:254:45 | ...; | | Finally.cs:250:17:252:17 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:257:9:259:9 | [finally: exception] {...} | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:260:9:260:34 | ...; | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:260:9:260:34 | ...; | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; | | Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | enter M13 | | Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:270:9:273:9 | [finally: exception] {...} | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:270:9:273:9 | {...} | +| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 (abnormal) | +| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 (normal) | | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:270:9:273:9 | [finally: exception] {...} | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | {...} | +| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | enter Foreach | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | exit M1 (normal) | @@ -11035,110 +9988,149 @@ blockDominance | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | enter M1 | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | enter M2 | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | +| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | enter M3 | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | enter M4 | | LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | +| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:22:32:22 | String x | | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | enter M5 | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | enter M6 | +| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:50:9:50:13 | Label: | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | enter M7 | | LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | +| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | +| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | enter M8 | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [false] !... | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [true] !... | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | enter M9 | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | +| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:22:79:22 | String x | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | enter M10 | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | +| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:22:88:22 | String x | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | enter M11 | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | +| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | @@ -12774,13 +11766,25 @@ blockDominance | cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | | cflow.cs:255:13:255:20 | default: | cflow.cs:255:13:255:20 | default: | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | enter Yield | +| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield | +| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield (normal) | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:264:25:264:25 | access to local variable i | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:265:9:267:9 | {...} | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:268:9:276:9 | try {...} ... | +| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (normal) | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:268:9:276:9 | try {...} ... | | cflow.cs:265:9:267:9 | {...} | cflow.cs:265:9:267:9 | {...} | +| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield | +| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield (normal) | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:268:9:276:9 | try {...} ... | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | enter ControlFlowSub | | cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | enter ControlFlowSub | @@ -12922,687 +11926,1174 @@ postBlockDominance | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:58:31:58:32 | [b (line 56): false] "" | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | enter M8 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:24:58:27 | [b (line 56): true] null | +| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:24:58:27 | null | +| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:31:58:32 | "" | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | +| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:24:58:27 | [b (line 56): true] null | +| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:24:58:27 | null | +| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:31:58:32 | "" | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:58:24:58:27 | [b (line 56): true] null | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | +| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | enter M8 | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:24:58:27 | null | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:31:58:32 | "" | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:65:24:65:27 | [b (line 63): true] null | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:65:31:65:32 | [b (line 63): false] "" | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | enter M9 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:31:65:32 | [b (line 63): false] "" | +| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:24:65:27 | null | +| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:31:65:32 | "" | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | +| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:31:65:32 | [b (line 63): false] "" | +| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:24:65:27 | null | +| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:31:65:32 | "" | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | +| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:65:31:65:32 | [b (line 63): false] "" | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | enter M9 | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:24:65:27 | null | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:31:65:32 | "" | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:72:31:72:32 | [b (line 70): false] "" | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | enter M10 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:24:72:27 | [b (line 70): true] null | +| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:24:72:27 | null | +| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:31:72:32 | "" | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | +| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:24:72:27 | [b (line 70): true] null | +| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:24:72:27 | null | +| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:31:72:32 | "" | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:72:24:72:27 | [b (line 70): true] null | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | +| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | enter M10 | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:24:72:27 | null | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:31:72:32 | "" | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:79:24:79:27 | [b (line 77): true] null | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:79:31:79:32 | [b (line 77): false] "" | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | enter M11 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:31:79:32 | [b (line 77): false] "" | +| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:24:79:27 | null | +| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:31:79:32 | "" | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | +| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:31:79:32 | [b (line 77): false] "" | +| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:24:79:27 | null | +| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:31:79:32 | "" | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | +| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:79:31:79:32 | [b (line 77): false] "" | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | enter M11 | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:24:79:27 | null | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:31:79:32 | "" | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:86:31:86:32 | [b (line 84): false] "" | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:90:24:90:25 | [b (line 84): false] "" | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:94:24:94:25 | [b (line 84): false] "" | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:98:24:98:25 | [b (line 84): false] "" | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:102:24:102:25 | [b (line 84): false] "" | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:106:24:106:25 | [b (line 84): false] "" | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:110:24:110:25 | [b (line 84): false] "" | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:114:24:114:25 | [b (line 84): false] "" | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:126:17:126:20 | [b (line 84): true] null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:24:86:27 | null | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:31:86:32 | "" | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:24:86:27 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:31:86:32 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:17:90:20 | null | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:24:90:25 | "" | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:24:86:27 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:31:86:32 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:17:90:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:24:90:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:17:94:20 | null | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:24:94:25 | "" | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:24:86:27 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:31:86:32 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:17:90:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:24:90:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:17:94:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:24:94:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:17:98:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:24:98:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:17:102:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:24:102:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:17:106:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:24:106:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:17:110:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:24:110:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:17:114:20 | null | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:24:86:27 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:17:90:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:17:94:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:17:98:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:17:102:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:17:106:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:17:110:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:17:114:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:17:118:20 | null | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:24:86:27 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:31:86:32 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:17:90:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:24:90:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:17:94:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:24:94:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:17:98:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:24:98:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:17:102:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:24:102:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:17:106:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:24:106:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:17:110:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:24:110:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:17:114:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:17:118:20 | null | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:24:86:27 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:31:86:32 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:17:90:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:24:90:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:17:94:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:24:94:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:17:98:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:24:98:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:17:102:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:24:102:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:17:106:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:24:106:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:17:110:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:24:110:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:17:114:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:17:118:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:17:122:20 | null | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | [b (line 84): true] null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | [b (line 84): true] null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:17:126:20 | [b (line 84): true] null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:24:86:27 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:17:90:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:17:94:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:17:98:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:17:102:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:17:106:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:17:110:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:17:114:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:17:118:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:17:122:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:17:126:20 | null | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:24:126:25 | "" | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | +| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:24:86:27 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:31:86:32 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:17:90:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:24:90:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:17:94:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:24:94:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:17:98:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:24:98:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:17:102:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:24:102:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:17:106:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:24:106:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:17:110:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:24:110:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:17:114:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:17:118:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:17:122:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:17:126:20 | null | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | @@ -13641,68 +13132,56 @@ postBlockDominance | BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:20:10:20:11 | enter M2 | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | enter M2 | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | enter M2 | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:27:21:27:26 | break; | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:30:13:33:13 | {...} | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | [finally: break] ; | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | enter M3 | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | enter M3 | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | [finally: return] break; | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | enter M3 | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | enter M3 | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | {...} | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:50:21:50:26 | [finally: return] break; | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | enter M4 | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | enter M4 | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | [finally: return] break; | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | break; | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | enter M4 | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | enter M4 | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | {...} | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:68:21:68:26 | [finally: return] break; | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | enter Default | @@ -13711,6 +13190,12 @@ postBlockDominance | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | enter M | +| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | enter M | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:39:9:39:34 | ...; | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:9:40:11 | End: | | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | enter M1 | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | enter M1 | @@ -13784,52 +13269,48 @@ postBlockDominance | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | enter IncrOrDecr | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | enter IncrOrDecr | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | +| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:9:8:16 | if (...) ... | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [false] !... | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [true] !... | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | enter IncrOrDecr | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:13:7:16 | [true] !... | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | enter M1 | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | +| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:13:18:20 | if (...) ... | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [false] !... | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [true] !... | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | enter M2 | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | enter M2 | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | enter M2 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | +| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:27:17:27:20 | ...; | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:9:29:16 | if (...) ... | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | @@ -13838,59 +13319,49 @@ postBlockDominance | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | enter M3 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:38:13:38:20 | ...; | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | enter M3 | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:38:13:38:20 | ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | enter M3 | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:38:13:38:20 | ...; | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | +| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | enter M4 | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | +| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:16 | access to parameter x | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | +| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | enter M5 | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | enter M5 | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:61:9:64:9 | {...} | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:63:17:63:20 | ...; | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | +| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:60:16:60:16 | access to parameter x | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | +| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:63:17:63:20 | ...; | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:9:66:16 | if (...) ... | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | @@ -13955,22 +13426,19 @@ postBlockDominance | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:97:17:97:20 | ...; | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | enter M8 | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:24 | ...; | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | if (...) ... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [false] !... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [true] !... | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:24 | ...; | @@ -13981,60 +13449,58 @@ postBlockDominance | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | enter M9 | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:117:9:123:9 | {...} | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [false] !... | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [true] !... | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | enter M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:136:17:138:17 | {...} | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | enter M11 | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | enter M11 | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | +| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:27:145:29 | "b" | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:147:13:147:49 | ...; | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | enter M11 | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:27:145:29 | "b" | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:49 | ...; | | ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | enter ExitMethods | | ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | enter M1 | @@ -14106,57 +13572,78 @@ postBlockDominance | Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | enter Finally | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | enter M1 | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:14:9:16:9 | [finally: exception] {...} | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | enter M1 | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | +| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | enter M1 | +| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | +| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:27:9:29:9 | {...} | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:34:27:34:32 | throw ...; | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:49:9:51:9 | {...} | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | | Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:49:9:51:9 | [finally: exception] {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | enter M2 | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | {...} | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | +| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:62:9:64:9 | {...} | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:69:9:71:9 | {...} | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | | Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | | Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:69:9:71:9 | [finally: exception] {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | enter M3 | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | {...} | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | enter M4 | | Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | @@ -14170,42 +13657,35 @@ postBlockDominance | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:86:21:86:26 | break; | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:96:17:98:17 | [finally: return] {...} | +| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:93:25:93:46 | throw ...; | +| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:93:31:93:45 | object creation of type Exception | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:96:17:98:17 | {...} | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | enter M4 | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:16 | access to local variable i | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | {...} | | Finally.cs:78:9:100:9 | {...} | Finally.cs:78:9:100:9 | {...} | | Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | | Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:78:9:100:9 | {...} | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:82:21:82:27 | return ...; | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:83:17:84:29 | if (...) ... | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:84:21:84:29 | continue; | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:17:86:26 | if (...) ... | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:86:21:86:26 | break; | | Finally.cs:89:13:99:13 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:93:25:93:46 | [finally: break] throw ...; | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:86:21:86:26 | break; | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:96:17:98:17 | [finally: break] {...} | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:96:17:98:17 | [finally: continue] {...} | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:96:17:98:17 | [finally: return] {...} | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:78:9:100:9 | {...} | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:82:21:82:27 | return ...; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:83:17:84:29 | if (...) ... | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:84:21:84:29 | continue; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:85:17:86:26 | if (...) ... | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:86:21:86:26 | break; | | Finally.cs:96:17:98:17 | {...} | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:25:93:46 | throw ...; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | | Finally.cs:96:17:98:17 | {...} | Finally.cs:96:17:98:17 | {...} | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | enter M5 | | Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | @@ -14218,74 +13698,60 @@ postBlockDominance | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:33:109:33 | 1 | +| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [false, finally: return] !... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [true, finally: return] !... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:13:117:37 | if (...) ... | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:37 | [finally: return] ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:103:10:103:11 | enter M5 | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:28 | access to property Length | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:33:107:33 | 0 | | Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:33:109:33 | 1 | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:113:9:118:9 | [finally: exception] {...} | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | enter M5 | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:33:107:33 | 0 | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:33:109:33 | 1 | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:114:17:114:36 | [false, finally: return] !... | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:114:17:114:36 | [true, finally: return] !... | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:115:17:115:41 | ...; | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:115:17:115:41 | [finally: exception] ...; | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:114:17:114:36 | [false, finally: return] !... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:114:17:114:36 | [true, finally: return] !... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:115:17:115:41 | [finally: return] ...; | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | enter M5 | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:107:17:107:28 | access to property Length | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:107:33:107:33 | 0 | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:33:109:33 | 1 | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:113:9:118:9 | {...} | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [false] !... | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [true] !... | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:115:17:115:41 | ...; | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | | Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:117:17:117:37 | [finally: exception] ...; | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:117:17:117:37 | [finally: return] ...; | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | enter M6 | | Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | enter M7 | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | exit M7 (abnormal) | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:140:9:143:9 | [finally: exception] {...} | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:140:9:143:9 | {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | enter M8 | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | enter M8 | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | +| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:152:17:152:50 | throw ...; | +| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:155:9:169:9 | {...} | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:158:36:158:36 | 1 | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:159:21:159:45 | throw ...; | @@ -14298,32 +13764,24 @@ postBlockDominance | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:155:9:169:9 | [finally: exception] {...} | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | enter M8 | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:17:152:50 | throw ...; | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | | Finally.cs:155:9:169:9 | {...} | Finally.cs:155:9:169:9 | {...} | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:158:36:158:36 | [finally: exception] 1 | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:41:159:43 | [finally: exception] "1" | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:41:159:43 | "1" | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:159:41:159:43 | "1" | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:162:13:164:13 | [finally: exception] {...} | | Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | | Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | enter ExceptionB | @@ -14333,65 +13791,71 @@ postBlockDominance | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | enter M9 | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | enter M9 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | enter M9 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | enter M10 | | Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:202:9:212:9 | [finally: exception] {...} | | Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | enter M10 | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | Finally.cs:202:9:212:9 | {...} | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:208:13:210:13 | [finally: exception] {...} | | Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | enter M10 | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | Finally.cs:208:13:210:13 | {...} | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | | Finally.cs:208:13:210:13 | {...} | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | enter M10 | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | Finally.cs:211:13:211:29 | ...; | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:205:31:205:46 | object creation of type ExceptionB | | Finally.cs:211:13:211:29 | ...; | Finally.cs:208:13:210:13 | {...} | | Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:211:13:211:29 | [finally: exception] ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | enter M10 | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:199:27:199:42 | object creation of type ExceptionA | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:205:31:205:46 | object creation of type ExceptionB | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:211:13:211:29 | ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:25 | ...; | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | enter M11 | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:222:9:225:9 | catch {...} | | Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | enter M11 | @@ -14399,31 +13863,47 @@ postBlockDominance | Finally.cs:227:9:229:9 | {...} | Finally.cs:227:9:229:9 | {...} | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | enter M12 | | Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | +| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:243:13:253:13 | [finally: exception] {...} | | Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | enter M12 | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:243:13:253:13 | {...} | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:250:17:252:17 | [finally: exception] {...} | | Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | enter M12 | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:250:17:252:17 | {...} | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | | Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:257:9:259:9 | [finally: exception] {...} | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:45 | ...; | | Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | enter M12 | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:257:9:259:9 | {...} | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | | Finally.cs:257:9:259:9 | {...} | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:254:13:254:45 | ...; | | Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | enter M12 | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:240:27:240:42 | object creation of type ExceptionA | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; | | Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | enter M13 | | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:270:9:273:9 | [finally: exception] {...} | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | enter M13 | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | {...} | +| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | enter M13 | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | enter Foreach | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | enter M1 | @@ -14508,76 +13988,92 @@ postBlockDominance | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | enter M1 | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | enter M2 | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | enter M2 | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | +| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | enter M2 | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | enter M2 | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | enter M3 | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | enter M3 | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | enter M3 | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | enter M4 | | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | enter M4 | | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | +| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | enter M4 | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | enter M5 | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | enter M5 | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | enter M5 | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | enter M5 | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | enter M5 | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | enter M6 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | enter M6 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | enter M7 | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | enter M7 | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | +| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | enter M7 | +| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | enter M7 | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | enter M8 | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | enter M8 | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | @@ -14585,23 +14081,45 @@ postBlockDominance | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:69:13:69:23 | [true] !... | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:69:13:69:23 | [true] !... | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:69:13:69:23 | [false] !... | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:69:13:69:23 | [false] !... | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | enter M9 | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | enter M9 | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | +| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | enter M9 | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | enter M10 | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | enter M10 | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | +| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | enter M10 | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | enter M11 | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | enter M11 | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | +| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:22:97:22 | String x | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | enter M11 | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | enter M11 | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | @@ -15965,6 +15483,13 @@ postBlockDominance | cflow.cs:255:13:255:20 | default: | cflow.cs:249:17:249:29 | goto default; | | cflow.cs:255:13:255:20 | default: | cflow.cs:255:13:255:20 | default: | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | enter Yield | +| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | enter Yield | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:264:25:264:25 | access to local variable i | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:265:9:267:9 | {...} | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:268:9:276:9 | try {...} ... | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | enter Yield | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index 2c2e977ae12..ea9f0d28e61 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -509,27 +509,20 @@ nodeEnclosing | Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:56:10:56:11 | M8 | | Assert.cs:57:5:61:5 | {...} | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:38 | [b (line 56): true] ...; | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:28:59:31 | [b (line 56): false] null | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:28:59:31 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:28:59:31 | null | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:56:10:56:11 | M8 | @@ -540,27 +533,20 @@ nodeEnclosing | Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:63:10:63:11 | M9 | | Assert.cs:64:5:68:5 | {...} | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:39 | [b (line 63): true] ...; | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:29:66:32 | [b (line 63): false] null | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:29:66:32 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:29:66:32 | null | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:63:10:63:11 | M9 | @@ -571,27 +557,20 @@ nodeEnclosing | Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:70:10:70:12 | M10 | | Assert.cs:71:5:75:5 | {...} | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:38 | [b (line 70): true] ...; | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:28:73:31 | [b (line 70): false] null | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:28:73:31 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:28:73:31 | null | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:70:10:70:12 | M10 | @@ -602,27 +581,20 @@ nodeEnclosing | Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:77:10:77:12 | M11 | | Assert.cs:78:5:82:5 | {...} | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:39 | [b (line 77): true] ...; | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:29:80:32 | [b (line 77): false] null | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:29:80:32 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:29:80:32 | null | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:77:10:77:12 | M11 | @@ -633,287 +605,189 @@ nodeEnclosing | Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:84:10:84:12 | M12 | | Assert.cs:85:5:129:5 | {...} | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:32 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:32 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:27:87:30 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:27:87:30 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:9:88:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:9:88:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:9:90:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:9:90:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:25 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:25 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:9:92:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:9:92:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:9:94:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:9:94:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:28 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:28 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:9:96:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:9:96:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:9:98:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:9:98:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:33 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:33 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:28:99:31 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:28:99:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:9:100:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:9:100:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:9:102:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:9:102:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:33 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:33 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:28:103:31 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:28:103:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:9:104:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:9:104:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:9:106:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:9:106:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:34 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:34 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:29:107:32 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:29:107:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:9:108:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:9:108:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:9:110:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:9:110:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:34 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:34 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:29:111:32 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:29:111:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:9:112:36 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:9:112:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:9:114:26 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:9:114:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:38 | [b (line 84): false] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:38 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:28:115:31 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:28:115:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:116:9:116:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:9:118:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:29:119:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:9:122:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:28:123:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:124:9:124:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:9:126:26 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:27:87:30 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:28:99:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:28:103:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:29:107:32 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:29:111:32 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:28:115:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:29:119:32 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:28:123:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:29:127:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:29:127:32 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | @@ -1029,18 +903,12 @@ nodeEnclosing | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:30:13:33:13 | [finally: break] {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:31:29:31:32 | [finally: break] null | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:38:10:38:11 | exit M3 | BreakInTry.cs:38:10:38:11 | M3 | @@ -1053,25 +921,15 @@ nodeEnclosing | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:46:9:52:9 | [finally: return] {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:48:13:51:13 | [finally: return] {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:49:28:49:31 | [finally: return] null | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | M4 | @@ -1085,25 +943,15 @@ nodeEnclosing | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:64:9:70:9 | [finally: return] {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:66:13:69:13 | [finally: return] {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:67:28:67:31 | [finally: return] null | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | M4 | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | @@ -1141,15 +989,19 @@ nodeEnclosing | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | @@ -1259,15 +1111,13 @@ nodeEnclosing | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | @@ -1280,23 +1130,17 @@ nodeEnclosing | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:11:9:11:10 | M1 | @@ -1313,14 +1157,10 @@ nodeEnclosing | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:22:9:22:10 | M2 | @@ -1344,13 +1184,11 @@ nodeEnclosing | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:33:9:33:10 | M3 | @@ -1364,30 +1202,16 @@ nodeEnclosing | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | M5 | @@ -1398,35 +1222,17 @@ nodeEnclosing | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:57:9:57:10 | M5 | @@ -1515,27 +1321,20 @@ nodeEnclosing | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:18:106:19 | [b (line 102): true] "" | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:102:12:102:13 | M8 | @@ -1569,75 +1368,46 @@ nodeEnclosing | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:21:120:22 | "" | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:21:122:24 | null | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:131:16:131:19 | true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | this access | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:26 | this access | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:143:10:143:12 | exit M11 | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:143:10:143:12 | M11 | @@ -1899,14 +1669,10 @@ nodeEnclosing | Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:11:13:11:38 | ...; | Finally.cs:7:10:7:11 | M1 | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:7:10:7:11 | M1 | | Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:13:15:41 | ...; | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:15:13:15:41 | [finally: exception] ...; | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:15:31:15:39 | [finally: exception] "Finally" | Finally.cs:7:10:7:11 | M1 | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | M2 | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | M2 | | Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | M2 | @@ -1931,24 +1697,16 @@ nodeEnclosing | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:21:34:24 | true | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:37:13:39:13 | [finally: exception] {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:38:17:38:44 | [finally: exception] throw ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:19:10:19:11 | M2 | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:49:9:51:9 | [finally: return] {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:41 | ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:13:50:41 | [finally: exception] ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:13:50:41 | [finally: return] ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:31:50:39 | [finally: exception] "Finally" | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:50:31:50:39 | [finally: return] "Finally" | Finally.cs:19:10:19:11 | M2 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | M3 | @@ -1972,18 +1730,10 @@ nodeEnclosing | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:54:10:54:11 | M3 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:69:9:71:9 | [finally: return] {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:13:70:41 | ...; | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:13:70:41 | [finally: exception] ...; | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:13:70:41 | [finally: return] ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:31:70:39 | [finally: exception] "Finally" | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:70:31:70:39 | [finally: return] "Finally" | Finally.cs:54:10:54:11 | M3 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | M4 | | Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | M4 | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | M4 | @@ -2014,74 +1764,19 @@ nodeEnclosing | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:85:26:85:26 | 2 | Finally.cs:74:10:74:11 | M4 | | Finally.cs:86:21:86:26 | break; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:89:13:99:13 | [finally: break] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:89:13:99:13 | [finally: continue] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:89:13:99:13 | [finally: return] {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:90:17:98:17 | [finally: break] try {...} ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:90:17:98:17 | [finally: return] try {...} ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:91:17:94:17 | [finally: break] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:91:17:94:17 | [finally: continue] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:91:17:94:17 | [finally: return] {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:91:17:94:17 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:21:93:46 | [finally: break] if (...) ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:21:93:46 | [finally: return] if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:25 | [finally: break] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:25 | [finally: return] access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:30:92:30 | 3 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:30:92:30 | [finally: break] 3 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:30:92:30 | [finally: continue] 3 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:92:30:92:30 | [finally: return] 3 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: break] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:21 | [finally: return] access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: break] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: continue] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:23 | [finally: return] ...-- | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:24 | ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally(1): exception] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: break] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: continue] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:97:21:97:24 | [finally: return] ...; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | M5 | @@ -2104,72 +1799,28 @@ nodeEnclosing | Finally.cs:109:33:109:33 | 1 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:113:9:118:9 | [finally: return] {...} | Finally.cs:103:10:103:11 | M5 | | Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:23 | [finally: exception] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:23 | [finally: exception] this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:23 | [finally: return] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:23 | [finally: return] this access | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:23 | this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:30 | [finally: exception] access to property Length | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:30 | [finally: return] access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:35:114:35 | 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:35:114:35 | [finally: exception] 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:35:114:35 | [finally: return] 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:17:115:41 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:35:115:39 | [finally: exception] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:35:115:39 | [finally: exception] this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:35:115:39 | [finally: return] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:35:115:39 | [finally: return] this access | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:35:115:39 | this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:21 | [finally: exception] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:21 | [finally: exception] this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:21 | [finally: return] access to field Field | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:21 | [finally: return] this access | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:21 | this access | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:28 | [finally: exception] access to property Length | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:28 | [finally: return] access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:32:116:32 | 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:32:116:32 | [finally: exception] 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:32:116:32 | [finally: return] 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:17:117:37 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:35:117:35 | 1 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:35:117:35 | [finally: exception] 1 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:35:117:35 | [finally: return] 1 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | M6 | | Finally.cs:121:10:121:11 | exit M6 | Finally.cs:121:10:121:11 | M6 | | Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | M6 | @@ -2191,14 +1842,10 @@ nodeEnclosing | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:133:10:133:11 | M7 | | Finally.cs:137:13:137:37 | ...; | Finally.cs:133:10:133:11 | M7 | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:133:10:133:11 | M7 | | Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:141:13:141:44 | [finally: exception] throw ...; | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:41:141:42 | "" | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:141:41:141:42 | [finally: exception] "" | Finally.cs:133:10:133:11 | M7 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | M8 | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | M8 | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | M8 | @@ -2212,74 +1859,40 @@ nodeEnclosing | Finally.cs:151:25:151:28 | null | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:157:13:160:13 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:157:13:160:13 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:36:158:36 | 1 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:43 | ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:163:17:163:43 | [finally: exception] ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:163:35:163:41 | [finally: exception] access to array element | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:40:163:40 | 0 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:163:40:163:40 | [finally: exception] 0 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:166:13:168:13 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:166:13:168:13 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:17:167:38 | ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:167:17:167:38 | [finally: exception] ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:35:167:36 | "" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:167:35:167:36 | [finally: exception] "" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | @@ -2304,38 +1917,24 @@ nodeEnclosing | Finally.cs:179:9:181:9 | {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:25:190:47 | [finally: exception] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:185:13:187:13 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | M10 | @@ -2347,48 +1946,22 @@ nodeEnclosing | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:204:13:206:13 | [finally: exception] {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:204:13:206:13 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:25:209:47 | [finally: exception] throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:13:211:16 | [finally: exception] this access | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:16 | this access | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:13:211:28 | [finally: exception] ... = ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:26:211:28 | "0" | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:26:211:28 | [finally: exception] "0" | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:12 | this access | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | M10 | @@ -2427,47 +2000,24 @@ nodeEnclosing | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:245:17:248:17 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:245:17:248:17 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:233:10:233:12 | M12 | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:21:251:55 | ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:55 | [finally(1): exception] ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:21:251:55 | [finally: exception] ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:13:254:45 | ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:13:258:47 | ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:258:13:258:47 | [finally: exception] ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:233:10:233:12 | M12 | @@ -2481,24 +2031,15 @@ nodeEnclosing | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:267:13:267:35 | ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:267:31:267:33 | "1" | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:263:10:263:12 | M13 | | Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:13:271:35 | ...; | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:271:13:271:35 | [finally: exception] ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:31:271:33 | "3" | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:271:31:271:33 | [finally: exception] "3" | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:18 | ... + ... | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:18 | [finally: exception] ... + ... | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:18 | [finally: exception] ... = ... | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:19 | ...; | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:13:272:19 | [finally: exception] ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:18:272:18 | 3 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:272:18:272:18 | [finally: exception] 3 | Finally.cs:263:10:263:12 | M13 | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | Foreach | @@ -2795,7 +2336,6 @@ nodeEnclosing | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:7:10:7:11 | M1 | @@ -2814,7 +2354,6 @@ nodeEnclosing | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:15:10:15:11 | M2 | @@ -2828,7 +2367,6 @@ nodeEnclosing | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:22:10:22:11 | M3 | @@ -2843,8 +2381,12 @@ nodeEnclosing | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:36:10:36:11 | exit M5 | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | M5 | @@ -2865,11 +2407,9 @@ nodeEnclosing | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:36:10:36:11 | M5 | @@ -2879,6 +2419,8 @@ nodeEnclosing | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:45:10:45:11 | M6 | @@ -2888,7 +2430,7 @@ nodeEnclosing | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:45:10:45:11 | M6 | @@ -2909,32 +2451,20 @@ nodeEnclosing | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:67:10:67:11 | exit M8 | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 | @@ -2948,8 +2478,12 @@ nodeEnclosing | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:76:10:76:11 | exit M9 | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | M9 | @@ -2959,8 +2493,13 @@ nodeEnclosing | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:85:10:85:12 | exit M10 | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | M10 | @@ -2970,8 +2509,13 @@ nodeEnclosing | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:94:10:94:12 | exit M11 | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | M11 | @@ -2981,7 +2525,6 @@ nodeEnclosing | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:94:10:94:12 | M11 | -| LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:94:10:94:12 | M11 | @@ -4599,6 +4142,7 @@ nodeEnclosing | cflow.cs:257:17:257:22 | break; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | Yield | | cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | Yield | | cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | Yield | | cflow.cs:262:5:277:5 | {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:261:49:261:53 | Yield | @@ -4617,10 +4161,10 @@ nodeEnclosing | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:269:9:272:9 | {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:274:9:276:9 | [finally: return] {...} | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:275:13:275:42 | [finally: return] ...; | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:275:31:275:40 | [finally: return] "not dead" | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:274:9:276:9 | {...} | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:261:49:261:53 | Yield | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | ControlFlowSub | @@ -4761,119 +4305,118 @@ blockEnclosing | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | M7 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | M8 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | M9 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | M10 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | M11 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | M12 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | M13 | @@ -4901,28 +4444,21 @@ blockEnclosing | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | M4 | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | Default | @@ -4931,6 +4467,10 @@ blockEnclosing | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | M | | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 | | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | M1 | @@ -4971,49 +4511,41 @@ blockEnclosing | Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | @@ -5036,10 +4568,9 @@ blockEnclosing | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:102:12:102:13 | M8 | @@ -5049,26 +4580,21 @@ blockEnclosing | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:143:10:143:12 | M11 | | ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | @@ -5127,10 +4653,11 @@ blockEnclosing | Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | Finally | | Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | M1 | | Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | M1 | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | M2 | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | M2 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | M2 | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | @@ -5141,9 +4668,10 @@ blockEnclosing | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | M3 | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | @@ -5152,7 +4680,7 @@ blockEnclosing | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:54:10:54:11 | M3 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | M4 | | Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | M4 | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | M4 | @@ -5165,21 +4693,8 @@ blockEnclosing | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:86:21:86:26 | break; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | M5 | @@ -5193,53 +4708,29 @@ blockEnclosing | Finally.cs:109:33:109:33 | 1 | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:103:10:103:11 | M5 | | Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:17:115:41 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:17:117:37 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | M6 | | Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | M7 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | M8 | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | M8 | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | M8 | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:36:158:36 | 1 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | @@ -5248,67 +4739,47 @@ blockEnclosing | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | M9 | | Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | M9 | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | M10 | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | M11 | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | M12 | | Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | M13 | | Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | M13 | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | M1 | @@ -5352,47 +4823,59 @@ blockEnclosing | LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | M11 | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | C1 | @@ -5911,6 +5394,9 @@ blockEnclosing | cflow.cs:254:17:254:27 | goto ...; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:255:13:255:20 | default: | cflow.cs:240:10:240:13 | Goto | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | Yield | | cflow.cs:265:9:267:9 | {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | Yield | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 8726e77130b..8d7b69f0f6b 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -494,30 +494,23 @@ | Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:56:10:56:11 | exit M8 | | | Assert.cs:57:5:61:5 | {...} | Assert.cs:58:9:58:33 | ... ...; | | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:20:58:20 | access to parameter b | | -| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | Assert.cs:59:9:59:38 | [b (line 56): false] ...; | | -| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | Assert.cs:59:9:59:38 | [b (line 56): true] ...; | | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | [b (line 56): true] null | true | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | [b (line 56): false] "" | false | -| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | | -| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:59:9:59:38 | ...; | | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | true | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | false | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:20:58:32 | ... ? ... : ... | | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:20:58:32 | ... ? ... : ... | | | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | exception | | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:60:9:60:36 | ...; | | -| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | | -| Assert.cs:59:9:59:38 | [b (line 56): true] ...; | Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | | -| Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | Assert.cs:59:28:59:31 | [b (line 56): false] null | | -| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | Assert.cs:59:28:59:31 | [b (line 56): true] null | | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | true | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | true | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | | +| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | | Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:28:59:31 | [b (line 56): false] null | Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | | -| Assert.cs:59:28:59:31 | [b (line 56): true] null | Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | +| Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | | @@ -527,30 +520,23 @@ | Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:63:10:63:11 | exit M9 | | | Assert.cs:64:5:68:5 | {...} | Assert.cs:65:9:65:33 | ... ...; | | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:20:65:20 | access to parameter b | | -| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | Assert.cs:66:9:66:39 | [b (line 63): false] ...; | | -| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | Assert.cs:66:9:66:39 | [b (line 63): true] ...; | | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | [b (line 63): true] null | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | [b (line 63): false] "" | false | -| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | | -| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:66:9:66:39 | ...; | | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | true | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | false | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:20:65:32 | ... ? ... : ... | | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:20:65:32 | ... ? ... : ... | | | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | exception | | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:67:9:67:36 | ...; | | -| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | | -| Assert.cs:66:9:66:39 | [b (line 63): true] ...; | Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | | -| Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | Assert.cs:66:29:66:32 | [b (line 63): false] null | | -| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | Assert.cs:66:29:66:32 | [b (line 63): true] null | | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | false | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | false | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | | +| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | | Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | | Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:66:29:66:32 | [b (line 63): false] null | Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | | -| Assert.cs:66:29:66:32 | [b (line 63): true] null | Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | | @@ -560,30 +546,23 @@ | Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:70:10:70:12 | exit M10 | | | Assert.cs:71:5:75:5 | {...} | Assert.cs:72:9:72:33 | ... ...; | | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:20:72:20 | access to parameter b | | -| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | Assert.cs:73:9:73:38 | [b (line 70): false] ...; | | -| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | Assert.cs:73:9:73:38 | [b (line 70): true] ...; | | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | [b (line 70): true] null | true | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | [b (line 70): false] "" | false | -| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | | -| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:73:9:73:38 | ...; | | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | true | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | false | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:20:72:32 | ... ? ... : ... | | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:20:72:32 | ... ? ... : ... | | | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | exception | | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:74:9:74:36 | ...; | | -| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | | -| Assert.cs:73:9:73:38 | [b (line 70): true] ...; | Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | | -| Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | Assert.cs:73:28:73:31 | [b (line 70): false] null | | -| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | Assert.cs:73:28:73:31 | [b (line 70): true] null | | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | true | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | true | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | | +| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | | Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | | Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:28:73:31 | [b (line 70): false] null | Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | | -| Assert.cs:73:28:73:31 | [b (line 70): true] null | Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | +| Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | | @@ -593,30 +572,23 @@ | Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:77:10:77:12 | exit M11 | | | Assert.cs:78:5:82:5 | {...} | Assert.cs:79:9:79:33 | ... ...; | | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:20:79:20 | access to parameter b | | -| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | Assert.cs:80:9:80:39 | [b (line 77): false] ...; | | -| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | Assert.cs:80:9:80:39 | [b (line 77): true] ...; | | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | [b (line 77): true] null | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | [b (line 77): false] "" | false | -| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | | -| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:80:9:80:39 | ...; | | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | true | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | false | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:20:79:32 | ... ? ... : ... | | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:20:79:32 | ... ? ... : ... | | | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | exception | | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:81:9:81:36 | ...; | | -| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | | -| Assert.cs:80:9:80:39 | [b (line 77): true] ...; | Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | | -| Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | Assert.cs:80:29:80:32 | [b (line 77): false] null | | -| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | Assert.cs:80:29:80:32 | [b (line 77): true] null | | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | false | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | false | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | | +| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | | Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | | Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:80:29:80:32 | [b (line 77): false] null | Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | | -| Assert.cs:80:29:80:32 | [b (line 77): true] null | Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | | @@ -626,307 +598,215 @@ | Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:84:10:84:12 | exit M12 | | | Assert.cs:85:5:129:5 | {...} | Assert.cs:86:9:86:33 | ... ...; | | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:20:86:20 | access to parameter b | | -| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | Assert.cs:87:9:87:32 | [b (line 84): false] ...; | | -| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | Assert.cs:87:9:87:32 | [b (line 84): true] ...; | | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | [b (line 84): true] null | true | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | [b (line 84): false] "" | false | -| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | | -| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:88:9:88:36 | [b (line 84): false] ...; | | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | Assert.cs:88:9:88:36 | [b (line 84): true] ...; | | -| Assert.cs:87:9:87:32 | [b (line 84): false] ...; | Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | | -| Assert.cs:87:9:87:32 | [b (line 84): true] ...; | Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | | -| Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | Assert.cs:87:27:87:30 | [b (line 84): false] null | | -| Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | Assert.cs:87:27:87:30 | [b (line 84): true] null | | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | false | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | true | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | false | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | true | -| Assert.cs:87:27:87:30 | [b (line 84): false] null | Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | | -| Assert.cs:87:27:87:30 | [b (line 84): true] null | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | | -| Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | Assert.cs:90:9:90:26 | [b (line 84): false] ...; | | -| Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | Assert.cs:90:9:90:26 | [b (line 84): true] ...; | | -| Assert.cs:88:9:88:36 | [b (line 84): false] ...; | Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:88:9:88:36 | [b (line 84): true] ...; | Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | | -| Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | | -| Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | Assert.cs:91:9:91:25 | [b (line 84): false] ...; | | -| Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | Assert.cs:91:9:91:25 | [b (line 84): true] ...; | | -| Assert.cs:90:9:90:26 | [b (line 84): false] ...; | Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:90:9:90:26 | [b (line 84): true] ...; | Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | Assert.cs:90:24:90:25 | [b (line 84): false] "" | false | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | Assert.cs:90:17:90:20 | [b (line 84): true] null | true | -| Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | | -| Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | Assert.cs:92:9:92:36 | [b (line 84): false] ...; | | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | Assert.cs:92:9:92:36 | [b (line 84): true] ...; | | -| Assert.cs:91:9:91:25 | [b (line 84): false] ...; | Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | | -| Assert.cs:91:9:91:25 | [b (line 84): true] ...; | Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | non-null | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | null | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | non-null | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | null | -| Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | Assert.cs:94:9:94:26 | [b (line 84): false] ...; | | -| Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | Assert.cs:94:9:94:26 | [b (line 84): true] ...; | | -| Assert.cs:92:9:92:36 | [b (line 84): false] ...; | Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:92:9:92:36 | [b (line 84): true] ...; | Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | | -| Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | | -| Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | Assert.cs:95:9:95:28 | [b (line 84): false] ...; | | -| Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | Assert.cs:95:9:95:28 | [b (line 84): true] ...; | | -| Assert.cs:94:9:94:26 | [b (line 84): false] ...; | Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:94:9:94:26 | [b (line 84): true] ...; | Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | Assert.cs:94:24:94:25 | [b (line 84): false] "" | false | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | Assert.cs:94:17:94:20 | [b (line 84): true] null | true | -| Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | | -| Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | Assert.cs:96:9:96:36 | [b (line 84): false] ...; | | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | Assert.cs:96:9:96:36 | [b (line 84): true] ...; | | -| Assert.cs:95:9:95:28 | [b (line 84): false] ...; | Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | | -| Assert.cs:95:9:95:28 | [b (line 84): true] ...; | Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | null | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | non-null | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | null | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | non-null | -| Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | Assert.cs:98:9:98:26 | [b (line 84): false] ...; | | -| Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | Assert.cs:98:9:98:26 | [b (line 84): true] ...; | | -| Assert.cs:96:9:96:36 | [b (line 84): false] ...; | Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:96:9:96:36 | [b (line 84): true] ...; | Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | | -| Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | | -| Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | Assert.cs:99:9:99:33 | [b (line 84): false] ...; | | -| Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | Assert.cs:99:9:99:33 | [b (line 84): true] ...; | | -| Assert.cs:98:9:98:26 | [b (line 84): false] ...; | Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:98:9:98:26 | [b (line 84): true] ...; | Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | Assert.cs:98:24:98:25 | [b (line 84): false] "" | false | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | Assert.cs:98:17:98:20 | [b (line 84): true] null | true | -| Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | | -| Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:100:9:100:36 | [b (line 84): false] ...; | | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:100:9:100:36 | [b (line 84): true] ...; | | -| Assert.cs:99:9:99:33 | [b (line 84): false] ...; | Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | | -| Assert.cs:99:9:99:33 | [b (line 84): true] ...; | Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | | -| Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | Assert.cs:99:28:99:31 | [b (line 84): false] null | | -| Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | Assert.cs:99:28:99:31 | [b (line 84): true] null | | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:99:28:99:31 | [b (line 84): false] null | Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | | -| Assert.cs:99:28:99:31 | [b (line 84): true] null | Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | | -| Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | Assert.cs:102:9:102:26 | [b (line 84): false] ...; | | -| Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | Assert.cs:102:9:102:26 | [b (line 84): true] ...; | | -| Assert.cs:100:9:100:36 | [b (line 84): false] ...; | Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:100:9:100:36 | [b (line 84): true] ...; | Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | | -| Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | | -| Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | Assert.cs:103:9:103:33 | [b (line 84): false] ...; | | -| Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | Assert.cs:103:9:103:33 | [b (line 84): true] ...; | | -| Assert.cs:102:9:102:26 | [b (line 84): false] ...; | Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:102:9:102:26 | [b (line 84): true] ...; | Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | Assert.cs:102:24:102:25 | [b (line 84): false] "" | false | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | Assert.cs:102:17:102:20 | [b (line 84): true] null | true | -| Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | | -| Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | Assert.cs:104:9:104:36 | [b (line 84): false] ...; | | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:104:9:104:36 | [b (line 84): true] ...; | | -| Assert.cs:103:9:103:33 | [b (line 84): false] ...; | Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | | -| Assert.cs:103:9:103:33 | [b (line 84): true] ...; | Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | | -| Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | Assert.cs:103:28:103:31 | [b (line 84): false] null | | -| Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | Assert.cs:103:28:103:31 | [b (line 84): true] null | | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | true | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:103:28:103:31 | [b (line 84): false] null | Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | | -| Assert.cs:103:28:103:31 | [b (line 84): true] null | Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | | -| Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | Assert.cs:106:9:106:26 | [b (line 84): false] ...; | | -| Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | Assert.cs:106:9:106:26 | [b (line 84): true] ...; | | -| Assert.cs:104:9:104:36 | [b (line 84): false] ...; | Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:104:9:104:36 | [b (line 84): true] ...; | Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | | -| Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | | -| Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | Assert.cs:107:9:107:34 | [b (line 84): false] ...; | | -| Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | Assert.cs:107:9:107:34 | [b (line 84): true] ...; | | -| Assert.cs:106:9:106:26 | [b (line 84): false] ...; | Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:106:9:106:26 | [b (line 84): true] ...; | Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | Assert.cs:106:24:106:25 | [b (line 84): false] "" | false | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | Assert.cs:106:17:106:20 | [b (line 84): true] null | true | -| Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | | -| Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:108:9:108:36 | [b (line 84): false] ...; | | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:108:9:108:36 | [b (line 84): true] ...; | | -| Assert.cs:107:9:107:34 | [b (line 84): false] ...; | Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | | -| Assert.cs:107:9:107:34 | [b (line 84): true] ...; | Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | | -| Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | Assert.cs:107:29:107:32 | [b (line 84): false] null | | -| Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | Assert.cs:107:29:107:32 | [b (line 84): true] null | | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:107:29:107:32 | [b (line 84): false] null | Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | | -| Assert.cs:107:29:107:32 | [b (line 84): true] null | Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | | -| Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | Assert.cs:110:9:110:26 | [b (line 84): false] ...; | | -| Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | Assert.cs:110:9:110:26 | [b (line 84): true] ...; | | -| Assert.cs:108:9:108:36 | [b (line 84): false] ...; | Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:108:9:108:36 | [b (line 84): true] ...; | Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | | -| Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | | -| Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | Assert.cs:111:9:111:34 | [b (line 84): false] ...; | | -| Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | Assert.cs:111:9:111:34 | [b (line 84): true] ...; | | -| Assert.cs:110:9:110:26 | [b (line 84): false] ...; | Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:110:9:110:26 | [b (line 84): true] ...; | Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | Assert.cs:110:24:110:25 | [b (line 84): false] "" | false | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | Assert.cs:110:17:110:20 | [b (line 84): true] null | true | -| Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | | -| Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:112:9:112:36 | [b (line 84): false] ...; | | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:112:9:112:36 | [b (line 84): true] ...; | | -| Assert.cs:111:9:111:34 | [b (line 84): false] ...; | Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | | -| Assert.cs:111:9:111:34 | [b (line 84): true] ...; | Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | | -| Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | Assert.cs:111:29:111:32 | [b (line 84): false] null | | -| Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | Assert.cs:111:29:111:32 | [b (line 84): true] null | | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | false | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:111:29:111:32 | [b (line 84): false] null | Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | | -| Assert.cs:111:29:111:32 | [b (line 84): true] null | Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | | -| Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | Assert.cs:114:9:114:26 | [b (line 84): false] ...; | | -| Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | Assert.cs:114:9:114:26 | [b (line 84): true] ...; | | -| Assert.cs:112:9:112:36 | [b (line 84): false] ...; | Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | | -| Assert.cs:112:9:112:36 | [b (line 84): true] ...; | Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | | -| Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | | -| Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | | -| Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | Assert.cs:115:9:115:38 | [b (line 84): false] ...; | | -| Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | Assert.cs:115:9:115:38 | [b (line 84): true] ...; | | -| Assert.cs:114:9:114:26 | [b (line 84): false] ...; | Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | | -| Assert.cs:114:9:114:26 | [b (line 84): true] ...; | Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | Assert.cs:114:24:114:25 | [b (line 84): false] "" | false | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | Assert.cs:114:17:114:20 | [b (line 84): true] null | true | -| Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | | -| Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:116:9:116:36 | [b (line 84): true] ...; | | -| Assert.cs:115:9:115:38 | [b (line 84): false] ...; | Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | | -| Assert.cs:115:9:115:38 | [b (line 84): true] ...; | Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | | -| Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | Assert.cs:115:28:115:31 | [b (line 84): false] null | | -| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | Assert.cs:115:28:115:31 | [b (line 84): true] null | | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | true | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:115:28:115:31 | [b (line 84): false] null | Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | | -| Assert.cs:115:28:115:31 | [b (line 84): true] null | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | false | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | Assert.cs:118:9:118:26 | [b (line 84): true] ...; | | -| Assert.cs:116:9:116:36 | [b (line 84): true] ...; | Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | | -| Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | Assert.cs:119:9:119:40 | [b (line 84): true] ...; | | -| Assert.cs:118:9:118:26 | [b (line 84): true] ...; | Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | Assert.cs:118:17:118:20 | [b (line 84): true] null | true | -| Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:120:9:120:36 | [b (line 84): true] ...; | | -| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | | -| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | Assert.cs:119:29:119:32 | [b (line 84): true] null | | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | true | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | false | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | true | -| Assert.cs:119:29:119:32 | [b (line 84): true] null | Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | false | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | true | -| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | Assert.cs:122:9:122:26 | [b (line 84): true] ...; | | -| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | | -| Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | Assert.cs:123:9:123:38 | [b (line 84): true] ...; | | -| Assert.cs:122:9:122:26 | [b (line 84): true] ...; | Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | Assert.cs:122:17:122:20 | [b (line 84): true] null | true | -| Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | Assert.cs:124:9:124:36 | [b (line 84): true] ...; | | -| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | | -| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | Assert.cs:123:28:123:31 | [b (line 84): true] null | | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | false | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | true | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | true | -| Assert.cs:123:28:123:31 | [b (line 84): true] null | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | true | -| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | Assert.cs:126:9:126:26 | [b (line 84): true] ...; | | -| Assert.cs:124:9:124:36 | [b (line 84): true] ...; | Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | | -| Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | | -| Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | | -| Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | Assert.cs:127:9:127:40 | [b (line 84): true] ...; | | -| Assert.cs:126:9:126:26 | [b (line 84): true] ...; | Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | Assert.cs:126:17:126:20 | [b (line 84): true] null | true | -| Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:87:9:87:32 | ...; | | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | true | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | false | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:20:86:32 | ... ? ... : ... | | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:20:86:32 | ... ? ... : ... | | +| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | +| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:88:9:88:36 | ...; | | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | | +| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | +| Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | | +| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:34 | access to property Length | | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:91:9:91:25 | ...; | | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:13:90:13 | access to parameter b | | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | true | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | false | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:13:90:25 | ... ? ... : ... | | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:13:90:25 | ... ? ... : ... | | +| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:92:9:92:36 | ...; | | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | non-null | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | null | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | | +| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:95:9:95:28 | ...; | | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:13:94:13 | access to parameter b | | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | false | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:13:94:25 | ... ? ... : ... | | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:13:94:25 | ... ? ... : ... | | +| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | null | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | non-null | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | | +| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:99:9:99:33 | ...; | | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:13:98:13 | access to parameter b | | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | false | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:13:98:25 | ... ? ... : ... | | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:13:98:25 | ... ? ... : ... | | +| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:100:9:100:36 | ...; | | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | | +| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | | +| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:34 | access to property Length | | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:103:9:103:33 | ...; | | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:13:102:13 | access to parameter b | | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | false | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:13:102:25 | ... ? ... : ... | | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:13:102:25 | ... ? ... : ... | | +| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:104:9:104:36 | ...; | | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | | +| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | | +| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:34 | access to property Length | | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:107:9:107:34 | ...; | | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:13:106:13 | access to parameter b | | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | false | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:13:106:25 | ... ? ... : ... | | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:13:106:25 | ... ? ... : ... | | +| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:108:9:108:36 | ...; | | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | | +| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | | +| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:34 | access to property Length | | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:111:9:111:34 | ...; | | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:13:110:13 | access to parameter b | | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:13:110:25 | ... ? ... : ... | | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:13:110:25 | ... ? ... : ... | | +| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:112:9:112:36 | ...; | | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | | +| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | | +| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:34 | access to property Length | | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:115:9:115:38 | ...; | | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:13:114:13 | access to parameter b | | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | false | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:13:114:25 | ... ? ... : ... | | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:13:114:25 | ... ? ... : ... | | +| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:116:9:116:36 | ...; | | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | | +| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | | +| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:119:9:119:40 | ...; | | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:13:118:13 | access to parameter b | | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | false | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:13:118:25 | ... ? ... : ... | | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:13:118:25 | ... ? ... : ... | | +| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:120:9:120:36 | ...; | | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | | +| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | +| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | +| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | | +| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | +| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | | +| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:123:9:123:38 | ...; | | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:13:122:13 | access to parameter b | | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | false | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:13:122:25 | ... ? ... : ... | | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:13:122:25 | ... ? ... : ... | | +| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:124:9:124:36 | ...; | | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | | +| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | +| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | | +| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:127:9:127:40 | ...; | | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:13:126:13 | access to parameter b | | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | false | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:13:126:25 | ... ? ... : ... | | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:13:126:25 | ... ? ... : ... | | | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:128:9:128:36 | ...; | | -| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | | -| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | Assert.cs:127:29:127:32 | [b (line 84): true] null | | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | false | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | | +| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | | Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | | Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:127:29:127:32 | [b (line 84): true] null | Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | | +| Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | | | Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | | @@ -1039,21 +919,16 @@ | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:27:21:27:26 | break; | true | | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | false | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:31 | ... == ... | | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:30:13:33:13 | [finally: break] {...} | break | -| BreakInTry.cs:30:13:33:13 | [finally: break] {...} | BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | | +| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:30:13:33:13 | {...} | break | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:17:32:21 | if (...) ... | | -| BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:24 | access to parameter args | | -| BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | BreakInTry.cs:31:29:31:32 | [finally: break] null | | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:29:31:32 | null | | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | false | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | true | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:32:21:32:21 | [finally: break] ; | true | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | -| BreakInTry.cs:31:29:31:32 | [finally: break] null | BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:32 | ... == ... | | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:35:7:35:7 | ; | break | +| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:35:7:35:7 | ; | break | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | | | BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:39:5:54:5 | {...} | | | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 | | @@ -1065,30 +940,20 @@ | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | true | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | false | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:28 | ... == ... | | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:46:9:52:9 | [finally: return] {...} | return | -| BreakInTry.cs:46:9:52:9 | [finally: return] {...} | BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | | +| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:46:9:52:9 | {...} | return | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | [finally: return] String arg | non-empty | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | non-empty | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | empty | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:48:13:51:13 | {...} | | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:48:13:51:13 | [finally: return] {...} | | -| BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | -| BreakInTry.cs:48:13:51:13 | [finally: return] {...} | BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:49:17:50:26 | if (...) ... | | -| BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | | -| BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | BreakInTry.cs:49:28:49:31 | [finally: return] null | | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:28:49:31 | null | | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | false | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | true | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | false | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:50:21:50:26 | [finally: return] break; | true | -| BreakInTry.cs:49:28:49:31 | [finally: return] null | BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:31 | ... == ... | | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | +| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:53:7:53:7 | ; | break | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | | BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:57:5:71:5 | {...} | | @@ -1101,31 +966,19 @@ | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | true | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | false | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:28 | ... == ... | | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:64:9:70:9 | [finally: return] {...} | return | -| BreakInTry.cs:64:9:70:9 | [finally: return] {...} | BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | | +| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:64:9:70:9 | {...} | return | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | return | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | [finally: return] String arg | non-empty | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | empty | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | empty, return | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | non-empty | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:66:13:69:13 | {...} | | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:66:13:69:13 | [finally: return] {...} | | -| BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | -| BreakInTry.cs:66:13:69:13 | [finally: return] {...} | BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:67:17:68:26 | if (...) ... | | -| BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | | -| BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | BreakInTry.cs:67:28:67:31 | [finally: return] null | | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:28:67:31 | null | | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | false | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | true | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | false | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:68:21:68:26 | [finally: return] break; | true | -| BreakInTry.cs:67:28:67:31 | [finally: return] null | BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | return | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | break | +| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | break, return | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | | | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | | @@ -1155,15 +1008,21 @@ | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | | CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | | +| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:31:9:34:9 | {...} | | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | | -| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | goto | -| CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | | -| CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | goto | -| CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | | -| CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | | +| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | goto | +| CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:37:13:37:41 | ...; | | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | exception | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | ...; | | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | goto | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:31:37:39 | "Finally" | | +| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | | +| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:27:39:32 | "Dead" | | +| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:14:40:38 | ...; | | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | | @@ -1271,17 +1130,16 @@ | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:5:9:6:16 | if (...) ... | | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | true | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | false | -| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | | -| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | | -| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | true | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | false | +| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:15 | ...++ | | +| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:7:9:8:16 | if (...) ... | | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:13 | access to parameter x | | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | | | Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | false | | Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:15 | ...-- | | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:13 | access to parameter x | | @@ -1292,27 +1150,21 @@ | Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:14:9:15:16 | if (...) ... | | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:13:13:17 | Int32 x = ... | | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | true | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | false | -| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | | -| Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | | -| Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | | -| Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | | -| Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | true | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | true | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | | -| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | true | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | false | +| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:15 | ...++ | | +| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:16:9:18:20 | if (...) ... | | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:13 | access to local variable x | | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:13 | access to local variable x | | +| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:17:16:17 | 0 | | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | true | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | +| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:17 | ... > ... | | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | | | Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:19:16:19:16 | access to local variable x | false | | Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:19:16:19:16 | access to local variable x | | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:17 | access to local variable x | | @@ -1328,16 +1180,12 @@ | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | true | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | false | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | true | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | false | -| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | | -| Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | | -| Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | true | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | false | +| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:19 | ...++ | | +| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:28:9:29:16 | if (...) ... | | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:17 | access to local variable x | | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | | -| Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | -| Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | | @@ -1361,15 +1209,14 @@ | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:18:38:19 | access to parameter b1 | | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:19 | ... = ... | | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | true | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | false | -| Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | | -| Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | | -| Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | | -| Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | true | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | false | +| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:15 | ...++ | | +| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:41:9:42:16 | if (...) ... | | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:13 | access to local variable x | | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | | | Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:43:16:43:16 | access to local variable x | | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:13 | access to local variable x | | @@ -1382,34 +1229,18 @@ | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:49:9:53:9 | while (...) ... | | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:13:48:17 | Int32 y = ... | | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:16:49:16 | access to parameter x | | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | | -| Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:18 | ...-- | | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:22:49:22 | 0 | | -| Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | | -| Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | true | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | true | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | true | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:22 | ... > ... | | -| Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | | -| Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:13:52:20 | if (...) ... | | -| Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | | -| Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:51:17:51:17 | access to parameter b | | -| Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | false | -| Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | true | -| Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | | -| Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | access to parameter x | false | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | true | +| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:19 | ...++ | | +| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:49:16:49:16 | access to parameter x | | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:17 | access to local variable y | | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | exit M4 (normal) | return | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:9:54:17 | return ...; | | | Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:58:5:68:5 | {...} | | @@ -1419,39 +1250,19 @@ | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:60:9:64:9 | while (...) ... | | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:13:59:17 | Int32 y = ... | | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | | -| Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:18 | ...-- | | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:22:60:22 | 0 | | -| Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | | -| Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | true | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | false | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | true | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | false | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | true | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | false | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:22 | ... > ... | | -| Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | | -| Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:13:63:20 | if (...) ... | | -| Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | | -| Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:62:17:62:17 | access to parameter b | | -| Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | false | -| Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | true | -| Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | | -| Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | access to parameter x | false | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | true | +| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:19 | ...++ | | +| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:60:16:60:16 | access to parameter x | | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:17 | access to local variable y | | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | | -| Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | -| Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | | @@ -1545,31 +1356,24 @@ | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:28 | call to method ToString | | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | false | -| Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | Conditions.cs:106:18:106:19 | [b (line 102): true] "" | | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | | -| Conditions.cs:106:18:106:19 | [b (line 102): true] "" | Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | | -| Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | | -| Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | | -| Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | | -| Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | | -| Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | true | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | true | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | | -| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | true | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | false | +| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | | +| Conditions.cs:106:13:106:19 | ... + ... | Conditions.cs:106:13:106:19 | ... = ... | | +| Conditions.cs:106:13:106:19 | ... = ... | Conditions.cs:107:9:109:24 | if (...) ... | | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | | +| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... + ... | | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | | +| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | true | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | +| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:24 | ... > ... | | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | | | Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:110:16:110:16 | access to local variable x | false | | Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | | | Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:23 | ... = ... | | | Conditions.cs:109:17:109:23 | ... = ... | Conditions.cs:110:16:110:16 | access to local variable x | | @@ -1603,78 +1407,51 @@ | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:24:118:43 | ... == ... | | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:43 | ... - ... | | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:18:119:21 | access to local variable last | | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | false | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | false | -| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:120:21:120:22 | [last (line 118): false] "" | | -| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | | -| Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | | -| Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | +| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:121:13:122:25 | if (...) ... | false | +| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | true | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | false | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:121:13:122:25 | if (...) ... | | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:21:120:22 | "" | | +| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:22 | ... = ... | | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | | Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:116:42:116:42 | access to local variable i | | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:21:122:24 | null | | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:24 | ... = ... | | | Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:130:5:141:5 | {...} | | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:131:9:140:9 | while (...) ... | | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:16:131:19 | true | | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | | Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:13:139:13 | if (...) ... | | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | this access | | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | false | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | true | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | true | false | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | true | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | access to field Field1 | | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:17:138:17 | if (...) ... | | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | this access | | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:131:16:131:19 | true | false | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | access to field Field2 | | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:38 | ...; | | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | | +| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | access to field Field1 | | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:131:16:131:19 | true | | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:26 | this access | | | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:144:5:150:5 | {...} | | | Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:145:9:145:30 | ... ...; | | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:17:145:17 | access to parameter b | | -| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | | -| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | false | -| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | | -| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | | -| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | | -| Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:146:9:149:49 | if (...) ... | | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | true | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | false | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:17:145:29 | ... ? ... : ... | | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:17:145:29 | ... ? ... : ... | | +| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:13:146:13 | access to parameter b | | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | | Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | exit M11 (normal) | | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:40:147:43 | "a = " | | | Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | | @@ -1912,18 +1689,14 @@ | Finally.cs:8:5:17:5 | {...} | Finally.cs:9:9:16:9 | try {...} ... | | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:10:9:12:9 | {...} | | | Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:38 | ...; | | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | [finally: exception] {...} | exception | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | | +| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | , exception | | Finally.cs:11:13:11:38 | ...; | Finally.cs:11:31:11:36 | "Try1" | | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:37 | call to method WriteLine | | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:15:13:15:41 | [finally: exception] ...; | | | Finally.cs:14:9:16:9 | {...} | Finally.cs:15:13:15:41 | ...; | | -| Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | exception | +| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | exception | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (normal) | | | Finally.cs:15:13:15:41 | ...; | Finally.cs:15:31:15:39 | "Finally" | | -| Finally.cs:15:13:15:41 | [finally: exception] ...; | Finally.cs:15:31:15:39 | [finally: exception] "Finally" | | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:40 | call to method WriteLine | | -| Finally.cs:15:31:15:39 | [finally: exception] "Finally" | Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:20:5:52:5 | {...} | | | Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 | | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 | | @@ -1934,13 +1707,13 @@ | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | exception | | Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:49:9:51:9 | [finally: return] {...} | return | +| Finally.cs:24:13:24:19 | return ...; | Finally.cs:49:9:51:9 | {...} | return | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | match | | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | no-match | | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | | | Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:27:9:29:9 | {...} | true | | Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | | -| Finally.cs:28:13:28:18 | throw ...; | Finally.cs:49:9:51:9 | [finally: exception] {...} | exception | +| Finally.cs:28:13:28:18 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | match | | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | no-match | | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | @@ -1949,25 +1722,18 @@ | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:34:21:34:24 | true | | | Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | [finally: exception] {...} | exception | -| Finally.cs:37:13:39:13 | [finally: exception] {...} | Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | | -| Finally.cs:38:17:38:44 | [finally: exception] throw ...; | Finally.cs:49:9:51:9 | [finally: exception] {...} | exception | -| Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | Finally.cs:38:17:38:44 | [finally: exception] throw ...; | | -| Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | {...} | exception | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:37:38:42 | "Boo!" | | +| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | | +| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | | | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | match | | Finally.cs:42:9:43:9 | {...} | Finally.cs:49:9:51:9 | {...} | | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:50:13:50:41 | [finally: exception] ...; | | -| Finally.cs:49:9:51:9 | [finally: return] {...} | Finally.cs:50:13:50:41 | [finally: return] ...; | | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | | -| Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | exception | -| Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | return | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | exception | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | , return | | Finally.cs:50:13:50:41 | ...; | Finally.cs:50:31:50:39 | "Finally" | | -| Finally.cs:50:13:50:41 | [finally: exception] ...; | Finally.cs:50:31:50:39 | [finally: exception] "Finally" | | -| Finally.cs:50:13:50:41 | [finally: return] ...; | Finally.cs:50:31:50:39 | [finally: return] "Finally" | | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:40 | call to method WriteLine | | -| Finally.cs:50:31:50:39 | [finally: exception] "Finally" | Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | | -| Finally.cs:50:31:50:39 | [finally: return] "Finally" | Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:55:5:72:5 | {...} | | | Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 | | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 | | @@ -1978,33 +1744,26 @@ | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | exception | | Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:69:9:71:9 | [finally: return] {...} | return | +| Finally.cs:59:13:59:19 | return ...; | Finally.cs:69:9:71:9 | {...} | return | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | match | | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | no-match | | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | | | Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:62:9:64:9 | {...} | true | | Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | | -| Finally.cs:63:13:63:18 | throw ...; | Finally.cs:69:9:71:9 | [finally: exception] {...} | exception | +| Finally.cs:63:13:63:18 | throw ...; | Finally.cs:69:9:71:9 | {...} | exception | | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | match | | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | | | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | | | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:48:65:51 | [exception: Exception] null | | | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:69:9:71:9 | [finally: exception] {...} | exception | +| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:69:9:71:9 | {...} | exception | | Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | | | Finally.cs:66:9:67:9 | {...} | Finally.cs:69:9:71:9 | {...} | | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:70:13:70:41 | [finally: exception] ...; | | -| Finally.cs:69:9:71:9 | [finally: return] {...} | Finally.cs:70:13:70:41 | [finally: return] ...; | | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | | -| Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | exception | -| Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | return | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | exception | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | , return | | Finally.cs:70:13:70:41 | ...; | Finally.cs:70:31:70:39 | "Finally" | | -| Finally.cs:70:13:70:41 | [finally: exception] ...; | Finally.cs:70:31:70:39 | [finally: exception] "Finally" | | -| Finally.cs:70:13:70:41 | [finally: return] ...; | Finally.cs:70:31:70:39 | [finally: return] "Finally" | | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:40 | call to method WriteLine | | -| Finally.cs:70:31:70:39 | [finally: exception] "Finally" | Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | | -| Finally.cs:70:31:70:39 | [finally: return] "Finally" | Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:75:5:101:5 | {...} | | | Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 | | | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 | | @@ -2025,95 +1784,36 @@ | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | true | | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:83:17:84:29 | if (...) ... | false | | Finally.cs:81:26:81:26 | 0 | Finally.cs:81:21:81:26 | ... == ... | | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:89:13:99:13 | [finally: return] {...} | return | +| Finally.cs:82:21:82:27 | return ...; | Finally.cs:89:13:99:13 | {...} | return | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:21 | access to local variable i | | | Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:26:83:26 | 1 | | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:84:21:84:29 | continue; | true | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:85:17:86:26 | if (...) ... | false | | Finally.cs:83:26:83:26 | 1 | Finally.cs:83:21:83:26 | ... == ... | | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:89:13:99:13 | [finally: continue] {...} | continue | +| Finally.cs:84:21:84:29 | continue; | Finally.cs:89:13:99:13 | {...} | continue | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:21 | access to local variable i | | | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:26:85:26 | 2 | | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:86:21:86:26 | break; | true | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:89:13:99:13 | {...} | false | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:26 | ... == ... | | -| Finally.cs:86:21:86:26 | break; | Finally.cs:89:13:99:13 | [finally: break] {...} | break | -| Finally.cs:89:13:99:13 | [finally: break] {...} | Finally.cs:90:17:98:17 | [finally: break] try {...} ... | | -| Finally.cs:89:13:99:13 | [finally: continue] {...} | Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | | -| Finally.cs:89:13:99:13 | [finally: return] {...} | Finally.cs:90:17:98:17 | [finally: return] try {...} ... | | +| Finally.cs:86:21:86:26 | break; | Finally.cs:89:13:99:13 | {...} | break | | Finally.cs:89:13:99:13 | {...} | Finally.cs:90:17:98:17 | try {...} ... | | -| Finally.cs:90:17:98:17 | [finally: break] try {...} ... | Finally.cs:91:17:94:17 | [finally: break] {...} | | -| Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | Finally.cs:91:17:94:17 | [finally: continue] {...} | | -| Finally.cs:90:17:98:17 | [finally: return] try {...} ... | Finally.cs:91:17:94:17 | [finally: return] {...} | | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:91:17:94:17 | {...} | | -| Finally.cs:91:17:94:17 | [finally: break] {...} | Finally.cs:92:21:93:46 | [finally: break] if (...) ... | | -| Finally.cs:91:17:94:17 | [finally: continue] {...} | Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | | -| Finally.cs:91:17:94:17 | [finally: return] {...} | Finally.cs:92:21:93:46 | [finally: return] if (...) ... | | | Finally.cs:91:17:94:17 | {...} | Finally.cs:92:21:93:46 | if (...) ... | | -| Finally.cs:92:21:93:46 | [finally: break] if (...) ... | Finally.cs:92:25:92:25 | [finally: break] access to local variable i | | -| Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | | -| Finally.cs:92:21:93:46 | [finally: return] if (...) ... | Finally.cs:92:25:92:25 | [finally: return] access to local variable i | | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:25 | access to local variable i | | -| Finally.cs:92:25:92:25 | [finally: break] access to local variable i | Finally.cs:92:30:92:30 | [finally: break] 3 | | -| Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | Finally.cs:92:30:92:30 | [finally: continue] 3 | | -| Finally.cs:92:25:92:25 | [finally: return] access to local variable i | Finally.cs:92:30:92:30 | [finally: return] 3 | | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:30:92:30 | 3 | | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | true | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:96:17:98:17 | [finally: break] {...} | false | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:96:17:98:17 | [finally: continue] {...} | false | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | true | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:96:17:98:17 | [finally: return] {...} | false | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:30 | ... == ... | | -| Finally.cs:92:30:92:30 | [finally: break] 3 | Finally.cs:92:25:92:30 | [finally: break] ... == ... | | -| Finally.cs:92:30:92:30 | [finally: continue] 3 | Finally.cs:92:25:92:30 | [finally: continue] ... == ... | | -| Finally.cs:92:30:92:30 | [finally: return] 3 | Finally.cs:92:25:92:30 | [finally: return] ... == ... | | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | exception | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | exception | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | exception | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | exception | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: break] throw ...; | | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | exception | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: continue] throw ...; | | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | exception | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:93:25:93:46 | [finally: return] throw ...; | | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | exception | +| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:96:17:98:17 | {...} | exception | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:96:17:98:17 | [finally(1): exception] {...} | exception | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally(1): exception] ...; | | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:97:21:97:24 | [finally: break] ...; | | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:97:21:97:24 | [finally: continue] ...; | | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:97:21:97:24 | [finally: return] ...; | | +| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:96:17:98:17 | {...} | exception | | Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:24 | ...; | | -| Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | | -| Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | | -| Finally.cs:97:21:97:21 | [finally: break] access to local variable i | Finally.cs:97:21:97:23 | [finally: break] ...-- | | -| Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | | -| Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | Finally.cs:97:21:97:23 | [finally: continue] ...-- | | -| Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | | -| Finally.cs:97:21:97:21 | [finally: return] access to local variable i | Finally.cs:97:21:97:23 | [finally: return] ...-- | | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:23 | ...-- | | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:77:16:77:16 | access to local variable i | | -| Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | -| Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | -| Finally.cs:97:21:97:23 | [finally: break] ...-- | Finally.cs:74:10:74:11 | exit M4 (normal) | break | -| Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | -| Finally.cs:97:21:97:23 | [finally: continue] ...-- | Finally.cs:77:16:77:16 | access to local variable i | continue | -| Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | -| Finally.cs:97:21:97:23 | [finally: return] ...-- | Finally.cs:74:10:74:11 | exit M4 (normal) | return | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (normal) | break, return | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:77:16:77:16 | access to local variable i | , continue | | Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:21 | access to local variable i | | -| Finally.cs:97:21:97:24 | [finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: break] ...; | Finally.cs:97:21:97:21 | [finally: break] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: continue] ...; | Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | | -| Finally.cs:97:21:97:24 | [finally: return] ...; | Finally.cs:97:21:97:21 | [finally: return] access to local variable i | | | Finally.cs:103:10:103:11 | enter M5 | Finally.cs:104:5:119:5 | {...} | | | Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 | | | Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 | | @@ -2122,98 +1822,52 @@ | Finally.cs:106:9:111:9 | {...} | Finally.cs:107:13:108:23 | if (...) ... | | | Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:21 | this access | | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:28 | access to property Length | | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | +| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | access to field Field | | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | +| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | true | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | false | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:113:9:118:9 | [finally: return] {...} | return | +| Finally.cs:108:17:108:23 | return ...; | Finally.cs:113:9:118:9 | {...} | return | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | this access | | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:28 | access to property Length | | -| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | +| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | access to field Field | | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | +| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:113:9:118:9 | {...} | false | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | +| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:113:9:118:9 | [finally: exception] {...} | exception | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | | -| Finally.cs:113:9:118:9 | [finally: return] {...} | Finally.cs:114:13:115:41 | [finally: return] if (...) ... | | +| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:13:115:41 | if (...) ... | | -| Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | Finally.cs:114:19:114:23 | [finally: exception] this access | | -| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:114:19:114:23 | [finally: return] this access | | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:19:114:23 | this access | | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | false | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | false | | Finally.cs:114:17:114:36 | [false] !... | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:115:17:115:41 | [finally: exception] ...; | true | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:41 | [finally: return] ...; | true | | Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | -| Finally.cs:114:19:114:23 | [finally: exception] access to field Field | Finally.cs:114:19:114:30 | [finally: exception] access to property Length | | -| Finally.cs:114:19:114:23 | [finally: exception] this access | Finally.cs:114:19:114:23 | [finally: exception] access to field Field | | -| Finally.cs:114:19:114:23 | [finally: return] access to field Field | Finally.cs:114:19:114:30 | [finally: return] access to property Length | | -| Finally.cs:114:19:114:23 | [finally: return] this access | Finally.cs:114:19:114:23 | [finally: return] access to field Field | | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:30 | access to property Length | | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | access to field Field | | -| Finally.cs:114:19:114:30 | [finally: exception] access to property Length | Finally.cs:114:35:114:35 | [finally: exception] 0 | | -| Finally.cs:114:19:114:30 | [finally: return] access to property Length | Finally.cs:114:35:114:35 | [finally: return] 0 | | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:35:114:35 | 0 | | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | true | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [false, finally: exception] !... | true | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:114:17:114:36 | [true, finally: exception] !... | false | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [false, finally: return] !... | true | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:114:17:114:36 | [true, finally: return] !... | false | | Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:35 | ... == ... | | -| Finally.cs:114:35:114:35 | [finally: exception] 0 | Finally.cs:114:19:114:35 | [finally: exception] ... == ... | | -| Finally.cs:114:35:114:35 | [finally: return] 0 | Finally.cs:114:19:114:35 | [finally: return] ... == ... | | -| Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | | -| Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | Finally.cs:116:13:117:37 | [finally: return] if (...) ... | | | Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:116:13:117:37 | if (...) ... | | | Finally.cs:115:17:115:41 | ...; | Finally.cs:115:35:115:39 | this access | | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:115:35:115:39 | [finally: exception] this access | | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:35:115:39 | [finally: return] this access | | -| Finally.cs:115:35:115:39 | [finally: exception] access to field Field | Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | | -| Finally.cs:115:35:115:39 | [finally: exception] this access | Finally.cs:115:35:115:39 | [finally: exception] access to field Field | | -| Finally.cs:115:35:115:39 | [finally: return] access to field Field | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | | -| Finally.cs:115:35:115:39 | [finally: return] this access | Finally.cs:115:35:115:39 | [finally: return] access to field Field | | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | | | Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | access to field Field | | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:116:17:116:21 | [finally: exception] this access | | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:116:17:116:21 | [finally: return] this access | | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:21 | this access | | -| Finally.cs:116:17:116:21 | [finally: exception] access to field Field | Finally.cs:116:17:116:28 | [finally: exception] access to property Length | | -| Finally.cs:116:17:116:21 | [finally: exception] this access | Finally.cs:116:17:116:21 | [finally: exception] access to field Field | | -| Finally.cs:116:17:116:21 | [finally: return] access to field Field | Finally.cs:116:17:116:28 | [finally: return] access to property Length | | -| Finally.cs:116:17:116:21 | [finally: return] this access | Finally.cs:116:17:116:21 | [finally: return] access to field Field | | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:28 | access to property Length | | | Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | access to field Field | | -| Finally.cs:116:17:116:28 | [finally: exception] access to property Length | Finally.cs:116:32:116:32 | [finally: exception] 0 | | -| Finally.cs:116:17:116:28 | [finally: return] access to property Length | Finally.cs:116:32:116:32 | [finally: return] 0 | | | Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:32:116:32 | 0 | | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | false | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | false, return | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | true | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:117:17:117:37 | [finally: exception] ...; | true | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | return | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:117:17:117:37 | [finally: return] ...; | true | | Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:32 | ... > ... | | -| Finally.cs:116:32:116:32 | [finally: exception] 0 | Finally.cs:116:17:116:32 | [finally: exception] ... > ... | | -| Finally.cs:116:32:116:32 | [finally: return] 0 | Finally.cs:116:17:116:32 | [finally: return] ... > ... | | -| Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | -| Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (normal) | return | -| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (normal) | | +| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | +| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (normal) | , return | | Finally.cs:117:17:117:37 | ...; | Finally.cs:117:35:117:35 | 1 | | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:117:35:117:35 | [finally: exception] 1 | | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:117:35:117:35 | [finally: return] 1 | | | Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:36 | call to method WriteLine | | -| Finally.cs:117:35:117:35 | [finally: exception] 1 | Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | | -| Finally.cs:117:35:117:35 | [finally: return] 1 | Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | | | Finally.cs:121:10:121:11 | enter M6 | Finally.cs:122:5:131:5 | {...} | | | Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | exit M6 | | | Finally.cs:122:5:131:5 | {...} | Finally.cs:123:9:130:9 | try {...} ... | | @@ -2230,18 +1884,13 @@ | Finally.cs:134:5:145:5 | {...} | Finally.cs:135:9:143:9 | try {...} ... | | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:136:9:138:9 | {...} | | | Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:37 | ...; | | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | [finally: exception] {...} | exception | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | | +| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | , exception | | Finally.cs:137:13:137:37 | ...; | Finally.cs:137:31:137:35 | "Try" | | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:36 | call to method WriteLine | | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:141:41:141:42 | [finally: exception] "" | | | Finally.cs:140:9:143:9 | {...} | Finally.cs:141:41:141:42 | "" | | -| Finally.cs:141:13:141:44 | [finally: exception] throw ...; | Finally.cs:133:10:133:11 | exit M7 (abnormal) | exception | | Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | exit M7 (abnormal) | exception | -| Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | Finally.cs:141:13:141:44 | [finally: exception] throw ...; | | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | | | Finally.cs:141:41:141:42 | "" | Finally.cs:141:19:141:43 | object creation of type ArgumentException | | -| Finally.cs:141:41:141:42 | [finally: exception] "" | Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:148:5:170:5 | {...} | | | Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 | | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 | | @@ -2253,89 +1902,52 @@ | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | false | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:28 | ... == ... | | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:155:9:169:9 | [finally: exception] {...} | exception | +| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:155:9:169:9 | {...} | exception | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:155:9:169:9 | [finally: exception] {...} | exception | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | | +| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:155:9:169:9 | {...} | exception | | Finally.cs:155:9:169:9 | {...} | Finally.cs:156:13:168:13 | try {...} ... | | -| Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | Finally.cs:157:13:160:13 | [finally: exception] {...} | | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:157:13:160:13 | {...} | | -| Finally.cs:157:13:160:13 | [finally: exception] {...} | Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | | | Finally.cs:157:13:160:13 | {...} | Finally.cs:158:17:159:45 | if (...) ... | | -| Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | | -| Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | Finally.cs:158:21:158:31 | [finally: exception] access to property Length | | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:158:36:158:36 | [finally: exception] 1 | | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | exception | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | exception | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | exception | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:159:41:159:43 | [finally: exception] "1" | true | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:158:21:158:36 | [finally: exception] ... == ... | | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | exception | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:159:21:159:45 | [finally: exception] throw ...; | | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | exception | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | | | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | match | | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | match | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | match | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | match | | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | | | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | | | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | | | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | | -| Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | | -| Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | | | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [exception: Exception] "1" | | | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | | -| Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | | -| Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:162:13:164:13 | {...} | true | | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | {...} | true | | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:162:13:164:13 | [finally: exception] {...} | true | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | false | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | [finally: exception] {...} | true | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | [finally: exception] catch {...} | false | | Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | | | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | | -| Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | | -| Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:163:17:163:43 | [finally: exception] ...; | | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | | -| Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | +| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (normal) | | | Finally.cs:163:17:163:43 | ...; | Finally.cs:163:35:163:38 | access to parameter args | | -| Finally.cs:163:17:163:43 | [finally: exception] ...; | Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | | -| Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | Finally.cs:163:40:163:40 | [finally: exception] 0 | | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:40:163:40 | 0 | | -| Finally.cs:163:35:163:41 | [finally: exception] access to array element | Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:41 | access to array element | | -| Finally.cs:163:40:163:40 | [finally: exception] 0 | Finally.cs:163:35:163:41 | [finally: exception] access to array element | | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:166:13:168:13 | [finally: exception] {...} | | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:166:13:168:13 | {...} | | -| Finally.cs:166:13:168:13 | [finally: exception] {...} | Finally.cs:167:17:167:38 | [finally: exception] ...; | | | Finally.cs:166:13:168:13 | {...} | Finally.cs:167:17:167:38 | ...; | | -| Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | +| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (normal) | | | Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | | -| Finally.cs:167:17:167:38 | [finally: exception] ...; | Finally.cs:167:35:167:36 | [finally: exception] "" | | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | | -| Finally.cs:167:35:167:36 | [finally: exception] "" | Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | call to constructor Exception | | | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | | @@ -2355,47 +1967,35 @@ | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:179:9:181:9 | {...} | | | Finally.cs:179:9:181:9 | {...} | Finally.cs:180:13:180:43 | if (...) ... | | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:17:180:18 | access to parameter b1 | | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | true | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | false | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | exception | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | exception | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | | -| Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | | -| Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | | -| Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | true | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | exception | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | exception | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | exception | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | exception | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | match | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | match | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | match | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | match | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | true | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | true | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | | -| Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | | -| Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:190:25:190:47 | [finally: exception] throw ...; | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:190:25:190:47 | [finally: exception] throw ...; | | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | false | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:183:9:192:9 | {...} | exception | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:183:9:192:9 | {...} | exception | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:184:13:191:13 | try {...} ... | | +| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:185:13:187:13 | {...} | | +| Finally.cs:185:13:187:13 | {...} | Finally.cs:186:17:186:47 | if (...) ... | | +| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:21:186:22 | access to parameter b2 | | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | exception | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | exception | +| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | match | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | match | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | | +| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | +| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:196:5:214:5 | {...} | | | Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 | | | Finally.cs:195:10:195:12 | exit M10 (normal) | Finally.cs:195:10:195:12 | exit M10 | | @@ -2405,59 +2005,30 @@ | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:17:199:18 | access to parameter b1 | | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | false | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:202:9:212:9 | [finally: exception] {...} | exception | +| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:202:9:212:9 | {...} | exception | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:202:9:212:9 | [finally: exception] {...} | exception | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | | +| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:202:9:212:9 | {...} | exception | | Finally.cs:202:9:212:9 | {...} | Finally.cs:203:13:210:13 | try {...} ... | | -| Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | Finally.cs:204:13:206:13 | [finally: exception] {...} | | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:204:13:206:13 | {...} | | -| Finally.cs:204:13:206:13 | [finally: exception] {...} | Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | | | Finally.cs:204:13:206:13 | {...} | Finally.cs:205:17:205:47 | if (...) ... | | -| Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:21:205:22 | access to parameter b2 | | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | true | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:208:13:210:13 | [finally: exception] {...} | false | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | false | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | exception | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | exception | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:205:25:205:47 | [finally: exception] throw ...; | | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | exception | +| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:208:13:210:13 | {...} | exception | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:208:13:210:13 | [finally(1): exception] {...} | exception | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | | +| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:208:13:210:13 | {...} | exception | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:17:209:47 | if (...) ... | | -| Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | | -| Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | | -| Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:21:209:22 | access to parameter b3 | | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:211:13:211:29 | [finally: exception] ...; | false | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:25:209:47 | [finally: exception] throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | | Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:209:25:209:47 | [finally: exception] throw ...; | | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | | -| Finally.cs:211:13:211:16 | [finally: exception] this access | Finally.cs:211:26:211:28 | [finally: exception] "0" | | | Finally.cs:211:13:211:16 | this access | Finally.cs:211:26:211:28 | "0" | | +| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | | Finally.cs:211:13:211:28 | ... = ... | Finally.cs:213:9:213:25 | ...; | | -| Finally.cs:211:13:211:28 | [finally: exception] ... = ... | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | | Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:16 | this access | | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:211:13:211:16 | [finally: exception] this access | | | Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:28 | ... = ... | | -| Finally.cs:211:26:211:28 | [finally: exception] "0" | Finally.cs:211:13:211:28 | [finally: exception] ... = ... | | | Finally.cs:213:9:213:12 | this access | Finally.cs:213:22:213:24 | "1" | | | Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (normal) | | | Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:12 | this access | | @@ -2494,55 +2065,31 @@ | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:239:21:239:22 | access to parameter b1 | | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | false | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:243:13:253:13 | [finally: exception] {...} | exception | +| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:243:13:253:13 | {...} | exception | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:243:13:253:13 | [finally: exception] {...} | exception | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | | +| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:243:13:253:13 | {...} | exception | | Finally.cs:243:13:253:13 | {...} | Finally.cs:244:17:252:17 | try {...} ... | | -| Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | Finally.cs:245:17:248:17 | [finally: exception] {...} | | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:245:17:248:17 | {...} | | -| Finally.cs:245:17:248:17 | [finally: exception] {...} | Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | | | Finally.cs:245:17:248:17 | {...} | Finally.cs:246:21:247:47 | if (...) ... | | -| Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:246:25:246:26 | access to parameter b2 | | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | true | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:250:17:252:17 | [finally: exception] {...} | false | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | false | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | exception | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | exception | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:247:25:247:47 | [finally: exception] throw ...; | | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | exception | +| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:250:17:252:17 | {...} | exception | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | [finally(1): exception] {...} | exception | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:251:21:251:55 | [finally(1): exception] ...; | | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:251:21:251:55 | [finally: exception] ...; | | +| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | {...} | exception | | Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:55 | ...; | | -| Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | Finally.cs:257:9:259:9 | [finally: exception] {...} | exception | -| Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | Finally.cs:257:9:259:9 | [finally: exception] {...} | exception | -| Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | Finally.cs:257:9:259:9 | [finally: exception] {...} | exception | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:254:13:254:45 | ...; | | +| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | exception | | Finally.cs:251:21:251:55 | ...; | Finally.cs:251:39:251:53 | "Inner finally" | | -| Finally.cs:251:21:251:55 | [finally(1): exception] ...; | Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | | -| Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | | -| Finally.cs:251:21:251:55 | [finally: exception] ...; | Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:54 | call to method WriteLine | | -| Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | | -| Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | | -| Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | [finally: exception] {...} | exception | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | | +| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | , exception | | Finally.cs:254:13:254:45 | ...; | Finally.cs:254:31:254:43 | "Mid finally" | | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:44 | call to method WriteLine | | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:258:13:258:47 | [finally: exception] ...; | | | Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:47 | ...; | | -| Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | exception | +| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | exception | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:260:9:260:34 | ...; | | | Finally.cs:258:13:258:47 | ...; | Finally.cs:258:31:258:45 | "Outer finally" | | -| Finally.cs:258:13:258:47 | [finally: exception] ...; | Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:46 | call to method WriteLine | | -| Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (normal) | | | Finally.cs:260:9:260:34 | ...; | Finally.cs:260:27:260:32 | "Done" | | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:33 | call to method WriteLine | | @@ -2552,28 +2099,19 @@ | Finally.cs:264:5:274:5 | {...} | Finally.cs:265:9:273:9 | try {...} ... | | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:266:9:268:9 | {...} | | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:35 | ...; | | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | [finally: exception] {...} | exception | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | | +| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | , exception | | Finally.cs:267:13:267:35 | ...; | Finally.cs:267:31:267:33 | "1" | | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:34 | call to method WriteLine | | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:271:13:271:35 | [finally: exception] ...; | | | Finally.cs:270:9:273:9 | {...} | Finally.cs:271:13:271:35 | ...; | | -| Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | Finally.cs:272:13:272:19 | [finally: exception] ...; | | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:272:13:272:19 | ...; | | | Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | | -| Finally.cs:271:13:271:35 | [finally: exception] ...; | Finally.cs:271:31:271:33 | [finally: exception] "3" | | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | | -| Finally.cs:271:31:271:33 | [finally: exception] "3" | Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | | -| Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | Finally.cs:272:18:272:18 | [finally: exception] 3 | | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | | | Finally.cs:272:13:272:18 | ... + ... | Finally.cs:272:13:272:18 | ... = ... | | +| Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | exception | | Finally.cs:272:13:272:18 | ... = ... | Finally.cs:263:10:263:12 | exit M13 (normal) | | -| Finally.cs:272:13:272:18 | [finally: exception] ... + ... | Finally.cs:272:13:272:18 | [finally: exception] ... = ... | | -| Finally.cs:272:13:272:18 | [finally: exception] ... = ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | exception | | Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | | -| Finally.cs:272:13:272:19 | [finally: exception] ...; | Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... + ... | | -| Finally.cs:272:18:272:18 | [finally: exception] 3 | Finally.cs:272:13:272:18 | [finally: exception] ... + ... | | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | | Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | call to constructor Object | | | Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | | @@ -2863,11 +2401,10 @@ | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:28 | ... == ... | | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | return | -| LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | non-empty | | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | empty | | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | non-empty | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:35 | ...; | | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | [unroll (line 11)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | | @@ -2882,11 +2419,10 @@ | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:38:17:40 | "b" | | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:43:17:45 | "c" | | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | | -| LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | non-empty | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | empty | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | non-empty | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:33 | ...; | | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | [unroll (line 18)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | | @@ -2897,11 +2433,10 @@ | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | non-empty | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | non-empty | | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | empty | | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | non-empty | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | [unroll (line 25)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | | @@ -2912,8 +2447,13 @@ | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | | -| LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | empty | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | [skip (line 32)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | empty | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | non-empty | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:33 | ...; | | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:31:33:31 | access to local variable x | | +| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | | | LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:37:5:43:5 | {...} | | | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:38:9:38:48 | ... ...; | | @@ -2933,22 +2473,21 @@ | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:38:39:40 | "1" | | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:43:39:45 | "2" | | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | | -| LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | non-empty | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | empty | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | non-empty | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | [unroll (line 40)] foreach (... ... in ...) ... | | -| LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | non-empty | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | empty | | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | non-empty | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:41 | ...; | | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | [unroll (line 41)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:35:42:35 | access to local variable x | | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:39:42:39 | access to local variable y | | | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:39 | ... + ... | | | LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:46:5:53:5 | {...} | | +| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:47:9:47:48 | ... ...; | | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:18:47:47 | 3 | | | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | @@ -2958,9 +2497,10 @@ | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:38:47:40 | "b" | | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:43:47:45 | "c" | | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | | -| LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | non-empty | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | empty | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | non-empty | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | [unroll (line 48)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:50:9:50:13 | Label: | | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:16:50:36 | ...; | | | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:51:13:51:23 | goto ...; | | @@ -2978,35 +2518,23 @@ | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:38:57:40 | "b" | | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:43:57:45 | "c" | | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | empty | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | non-empty | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | empty | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | non-empty | -| LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | non-empty | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | empty | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | non-empty | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:59:9:64:9 | {...} | | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | [unroll (line 58)] foreach (... ... in ...) ... | | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:60:13:61:37 | if (...) ... | | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | false | -| LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | | -| LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | true | -| LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | | -| LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | true | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | +| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:62:13:63:37 | if (...) ... | | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:35:61:35 | access to local variable x | | +| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | true | +| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:35:63:35 | access to local variable x | | +| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | | | LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:68:5:74:5 | {...} | | | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:69:9:70:19 | if (...) ... | | @@ -3020,8 +2548,13 @@ | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | -| LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | empty | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | empty | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | non-empty | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:35 | ...; | | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | | +| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | | | LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:77:5:83:5 | {...} | | | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:78:9:78:34 | ... ...; | | @@ -3030,8 +2563,14 @@ | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:32:78:32 | 0 | | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | | -| LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | empty | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | [skip (line 79)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | empty | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | non-empty | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:80:9:82:9 | {...} | | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:81:13:81:33 | ...; | | +| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:31:81:31 | access to local variable x | | +| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | | | LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:86:5:92:5 | {...} | | | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:87:9:87:34 | ... ...; | | @@ -3040,8 +2579,14 @@ | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:32:87:32 | 2 | | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | | -| LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | empty | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | [skip (line 88)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | empty | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | non-empty | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:89:9:91:9 | {...} | | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:90:13:90:33 | ...; | | +| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:31:90:31 | access to local variable x | | +| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | | | LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:95:5:101:5 | {...} | | | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:96:9:96:34 | ... ...; | | @@ -3050,11 +2595,10 @@ | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | | -| LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | non-empty | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | empty | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | non-empty | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:98:9:100:9 | {...} | | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:99:13:99:33 | ...; | | | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | @@ -4708,6 +4252,7 @@ | cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:36 | call to method WriteLine | | | cflow.cs:257:17:257:22 | break; | cflow.cs:240:10:240:13 | exit Goto (normal) | break | | cflow.cs:261:49:261:53 | enter Yield | cflow.cs:262:5:277:5 | {...} | | +| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield | | | cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield | | | cflow.cs:262:5:277:5 | {...} | cflow.cs:263:22:263:22 | 0 | | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | | @@ -4726,11 +4271,12 @@ | cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:13:266:27 | yield return ...; | | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:269:9:272:9 | {...} | | | cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | yield break; | | -| cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | [finally: return] {...} | return | -| cflow.cs:274:9:276:9 | [finally: return] {...} | cflow.cs:275:13:275:42 | [finally: return] ...; | | -| cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | return | -| cflow.cs:275:13:275:42 | [finally: return] ...; | cflow.cs:275:31:275:40 | [finally: return] "not dead" | | -| cflow.cs:275:31:275:40 | [finally: return] "not dead" | cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | | +| cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | {...} | return | +| cflow.cs:274:9:276:9 | {...} | cflow.cs:275:13:275:42 | ...; | | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (abnormal) | exception | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | , return | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | | +| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | | | cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected index 81c15438679..26e8d074b19 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -1,843 +1,3 @@ -booleanNode -| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | b (line 56): false | -| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | b (line 56): true | -| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | b (line 56): false | -| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | b (line 56): true | -| Assert.cs:58:24:58:27 | [b (line 56): true] null | b (line 56): true | -| Assert.cs:58:31:58:32 | [b (line 56): false] "" | b (line 56): false | -| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | b (line 56): false | -| Assert.cs:59:9:59:38 | [b (line 56): true] ...; | b (line 56): true | -| Assert.cs:59:23:59:23 | [b (line 56): false] access to local variable s | b (line 56): false | -| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | b (line 56): true | -| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | b (line 56): false | -| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | b (line 56): true | -| Assert.cs:59:28:59:31 | [b (line 56): false] null | b (line 56): false | -| Assert.cs:59:28:59:31 | [b (line 56): true] null | b (line 56): true | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | b (line 56): false | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | b (line 56): true | -| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | b (line 63): false | -| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | b (line 63): true | -| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | b (line 63): false | -| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | b (line 63): true | -| Assert.cs:65:24:65:27 | [b (line 63): true] null | b (line 63): true | -| Assert.cs:65:31:65:32 | [b (line 63): false] "" | b (line 63): false | -| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | b (line 63): false | -| Assert.cs:66:9:66:39 | [b (line 63): true] ...; | b (line 63): true | -| Assert.cs:66:24:66:24 | [b (line 63): false] access to local variable s | b (line 63): false | -| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | b (line 63): true | -| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | b (line 63): false | -| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | b (line 63): true | -| Assert.cs:66:29:66:32 | [b (line 63): false] null | b (line 63): false | -| Assert.cs:66:29:66:32 | [b (line 63): true] null | b (line 63): true | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | b (line 63): false | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | b (line 63): true | -| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | b (line 70): false | -| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | b (line 70): true | -| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | b (line 70): false | -| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | b (line 70): true | -| Assert.cs:72:24:72:27 | [b (line 70): true] null | b (line 70): true | -| Assert.cs:72:31:72:32 | [b (line 70): false] "" | b (line 70): false | -| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | b (line 70): false | -| Assert.cs:73:9:73:38 | [b (line 70): true] ...; | b (line 70): true | -| Assert.cs:73:23:73:23 | [b (line 70): false] access to local variable s | b (line 70): false | -| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | b (line 70): true | -| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | b (line 70): false | -| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | b (line 70): true | -| Assert.cs:73:28:73:31 | [b (line 70): false] null | b (line 70): false | -| Assert.cs:73:28:73:31 | [b (line 70): true] null | b (line 70): true | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | b (line 70): false | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | b (line 70): true | -| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | b (line 77): false | -| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | b (line 77): true | -| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | b (line 77): false | -| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | b (line 77): true | -| Assert.cs:79:24:79:27 | [b (line 77): true] null | b (line 77): true | -| Assert.cs:79:31:79:32 | [b (line 77): false] "" | b (line 77): false | -| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | b (line 77): false | -| Assert.cs:80:9:80:39 | [b (line 77): true] ...; | b (line 77): true | -| Assert.cs:80:24:80:24 | [b (line 77): false] access to local variable s | b (line 77): false | -| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | b (line 77): true | -| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | b (line 77): false | -| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | b (line 77): true | -| Assert.cs:80:29:80:32 | [b (line 77): false] null | b (line 77): false | -| Assert.cs:80:29:80:32 | [b (line 77): true] null | b (line 77): true | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | b (line 77): false | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | b (line 77): true | -| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | b (line 84): false | -| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | b (line 84): true | -| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:86:24:86:27 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:86:31:86:32 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | b (line 84): false | -| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | b (line 84): true | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | b (line 84): false | -| Assert.cs:87:9:87:31 | [assertion success, b (line 84): true] call to method Assert | b (line 84): true | -| Assert.cs:87:9:87:32 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:87:9:87:32 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:87:22:87:22 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:87:22:87:22 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | b (line 84): false | -| Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | b (line 84): true | -| Assert.cs:87:27:87:30 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:87:27:87:30 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:88:9:88:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:88:9:88:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:88:9:88:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:88:9:88:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:88:27:88:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:88:27:88:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:88:27:88:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:88:27:88:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:90:9:90:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:90:9:90:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:90:9:90:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:90:9:90:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:90:13:90:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:90:13:90:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:90:13:90:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:90:13:90:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:90:17:90:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:90:24:90:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): false] call to method IsNull | b (line 84): false | -| Assert.cs:91:9:91:24 | [assertion failure, b (line 84): true] call to method IsNull | b (line 84): true | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): false] call to method IsNull | b (line 84): false | -| Assert.cs:91:9:91:24 | [assertion success, b (line 84): true] call to method IsNull | b (line 84): true | -| Assert.cs:91:9:91:25 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:91:9:91:25 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:91:23:91:23 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:92:9:92:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:92:9:92:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:92:9:92:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:92:9:92:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:92:27:92:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:92:27:92:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:92:27:92:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:92:27:92:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:94:9:94:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:94:9:94:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:94:9:94:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:94:9:94:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:94:13:94:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:94:13:94:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:94:13:94:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:94:13:94:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:94:17:94:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:94:24:94:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): false] call to method IsNotNull | b (line 84): false | -| Assert.cs:95:9:95:27 | [assertion failure, b (line 84): true] call to method IsNotNull | b (line 84): true | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): false] call to method IsNotNull | b (line 84): false | -| Assert.cs:95:9:95:27 | [assertion success, b (line 84): true] call to method IsNotNull | b (line 84): true | -| Assert.cs:95:9:95:28 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:95:9:95:28 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:95:26:95:26 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:95:26:95:26 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:96:9:96:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:96:9:96:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:96:9:96:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:96:9:96:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:96:27:96:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:96:27:96:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:96:27:96:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:96:27:96:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:98:9:98:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:98:9:98:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:98:9:98:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:98:9:98:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:98:13:98:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:98:13:98:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:98:13:98:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:98:13:98:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:98:17:98:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:98:24:98:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): false] call to method IsTrue | b (line 84): false | -| Assert.cs:99:9:99:32 | [assertion failure, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): false] call to method IsTrue | b (line 84): false | -| Assert.cs:99:9:99:32 | [assertion success, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:99:9:99:33 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:99:9:99:33 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:99:23:99:23 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:99:23:99:23 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:99:23:99:31 | [b (line 84): false] ... == ... | b (line 84): false | -| Assert.cs:99:23:99:31 | [b (line 84): true] ... == ... | b (line 84): true | -| Assert.cs:99:28:99:31 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:99:28:99:31 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:100:9:100:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:100:9:100:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:100:9:100:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:100:9:100:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:100:27:100:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:100:27:100:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:100:27:100:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:100:27:100:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:102:9:102:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:102:9:102:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:102:9:102:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:102:9:102:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:102:13:102:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:102:13:102:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:102:13:102:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:102:13:102:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:102:17:102:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:102:24:102:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): false] call to method IsTrue | b (line 84): false | -| Assert.cs:103:9:103:32 | [assertion failure, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): false] call to method IsTrue | b (line 84): false | -| Assert.cs:103:9:103:32 | [assertion success, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:103:9:103:33 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:103:9:103:33 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:103:23:103:23 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:103:23:103:23 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:103:23:103:31 | [b (line 84): false] ... != ... | b (line 84): false | -| Assert.cs:103:23:103:31 | [b (line 84): true] ... != ... | b (line 84): true | -| Assert.cs:103:28:103:31 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:103:28:103:31 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:104:9:104:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:104:9:104:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:104:9:104:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:104:9:104:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:104:27:104:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:104:27:104:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:104:27:104:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:104:27:104:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:106:9:106:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:106:9:106:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:106:9:106:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:106:9:106:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:106:13:106:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:106:13:106:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:106:13:106:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:106:13:106:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:106:17:106:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:106:24:106:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): false] call to method IsFalse | b (line 84): false | -| Assert.cs:107:9:107:33 | [assertion failure, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): false] call to method IsFalse | b (line 84): false | -| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:107:9:107:34 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:107:9:107:34 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:107:24:107:24 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:107:24:107:24 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:107:24:107:32 | [b (line 84): false] ... != ... | b (line 84): false | -| Assert.cs:107:24:107:32 | [b (line 84): true] ... != ... | b (line 84): true | -| Assert.cs:107:29:107:32 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:107:29:107:32 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:108:9:108:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:108:9:108:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:108:9:108:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:108:9:108:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:108:27:108:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:108:27:108:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:108:27:108:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:108:27:108:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:110:9:110:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:110:9:110:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:110:9:110:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:110:9:110:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:110:13:110:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:110:13:110:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:110:13:110:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:110:13:110:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:110:17:110:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:110:24:110:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | b (line 84): false | -| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | b (line 84): false | -| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:111:9:111:34 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:111:9:111:34 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:111:24:111:24 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:111:24:111:24 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:111:24:111:32 | [b (line 84): false] ... == ... | b (line 84): false | -| Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | b (line 84): true | -| Assert.cs:111:29:111:32 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:111:29:111:32 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:112:9:112:35 | [b (line 84): false] call to method WriteLine | b (line 84): false | -| Assert.cs:112:9:112:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:112:9:112:36 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:112:9:112:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:112:27:112:27 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:112:27:112:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:112:27:112:34 | [b (line 84): false] access to property Length | b (line 84): false | -| Assert.cs:112:27:112:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:114:9:114:25 | [b (line 84): false] ... = ... | b (line 84): false | -| Assert.cs:114:9:114:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:114:9:114:26 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:114:9:114:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:114:13:114:13 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:114:13:114:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:114:13:114:25 | [b (line 84): false] ... ? ... : ... | b (line 84): false | -| Assert.cs:114:13:114:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:114:17:114:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:114:24:114:25 | [b (line 84): false] "" | b (line 84): false | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | b (line 84): false | -| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:115:9:115:37 | [assertion success, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:115:9:115:38 | [b (line 84): false] ...; | b (line 84): false | -| Assert.cs:115:9:115:38 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:115:23:115:23 | [b (line 84): false] access to local variable s | b (line 84): false | -| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | b (line 84): false | -| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | b (line 84): true | -| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | b (line 84): false | -| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | b (line 84): true | -| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | b (line 84): true | -| Assert.cs:115:28:115:31 | [b (line 84): false] null | b (line 84): false | -| Assert.cs:115:28:115:31 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | b (line 84): false | -| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:116:9:116:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:116:9:116:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:116:27:116:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:116:27:116:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:118:9:118:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:118:9:118:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:118:13:118:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:118:13:118:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:118:17:118:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:119:9:119:39 | [assertion success, b (line 84): true] call to method IsFalse | b (line 84): true | -| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | b (line 84): true | -| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | b (line 84): true | -| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | b (line 84): true | -| Assert.cs:119:29:119:32 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | b (line 84): true | -| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:120:27:120:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:120:27:120:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:122:9:122:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:122:9:122:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:122:13:122:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:122:13:122:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:122:17:122:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:123:9:123:37 | [assertion success, b (line 84): true] call to method IsTrue | b (line 84): true | -| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | b (line 84): true | -| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | b (line 84): true | -| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | b (line 84): true | -| Assert.cs:123:28:123:31 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | b (line 84): true | -| Assert.cs:124:9:124:36 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:124:27:124:27 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:124:27:124:34 | [b (line 84): true] access to property Length | b (line 84): true | -| Assert.cs:126:9:126:25 | [b (line 84): true] ... = ... | b (line 84): true | -| Assert.cs:126:9:126:26 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:126:13:126:13 | [b (line 84): true] access to parameter b | b (line 84): true | -| Assert.cs:126:13:126:25 | [b (line 84): true] ... ? ... : ... | b (line 84): true | -| Assert.cs:126:17:126:20 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | b (line 84): true | -| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | b (line 84): true | -| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | b (line 84): true | -| Assert.cs:127:29:127:32 | [b (line 84): true] null | b (line 84): true | -| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | b (line 84): true | -| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | inc (line 3): true | -| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | inc (line 3): true | -| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | inc (line 3): true | -| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | inc (line 3): false | -| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | inc (line 3): true | -| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | inc (line 3): false | -| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | inc (line 3): true | -| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | b (line 11): true | -| Conditions.cs:15:13:15:15 | [b (line 11): true] ...++ | b (line 11): true | -| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | b (line 11): true | -| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | b (line 11): false | -| Conditions.cs:16:9:18:20 | [b (line 11): true] if (...) ... | b (line 11): true | -| Conditions.cs:16:13:16:13 | [b (line 11): false] access to local variable x | b (line 11): false | -| Conditions.cs:16:13:16:13 | [b (line 11): true] access to local variable x | b (line 11): true | -| Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | b (line 11): false | -| Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | b (line 11): true | -| Conditions.cs:16:17:16:17 | [b (line 11): false] 0 | b (line 11): false | -| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | b (line 11): true | -| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | b (line 11): false | -| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | b (line 11): true | -| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | b (line 11): false | -| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | b (line 11): true | -| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | b2 (line 22): true | -| Conditions.cs:27:17:27:19 | [b2 (line 22): true] ...++ | b2 (line 22): true | -| Conditions.cs:27:17:27:20 | [b2 (line 22): true] ...; | b2 (line 22): true | -| Conditions.cs:28:9:29:16 | [b2 (line 22): false] if (...) ... | b2 (line 22): false | -| Conditions.cs:28:9:29:16 | [b2 (line 22): true] if (...) ... | b2 (line 22): true | -| Conditions.cs:28:13:28:14 | [b2 (line 22): false] access to parameter b2 | b2 (line 22): false | -| Conditions.cs:28:13:28:14 | [b2 (line 22): true] access to parameter b2 | b2 (line 22): true | -| Conditions.cs:40:13:40:13 | [b2 (line 39): true] access to local variable x | b2 (line 39): true | -| Conditions.cs:40:13:40:15 | [b2 (line 39): true] ...++ | b2 (line 39): true | -| Conditions.cs:40:13:40:16 | [b2 (line 39): true] ...; | b2 (line 39): true | -| Conditions.cs:41:9:42:16 | [b2 (line 39): false] if (...) ... | b2 (line 39): false | -| Conditions.cs:41:9:42:16 | [b2 (line 39): true] if (...) ... | b2 (line 39): true | -| Conditions.cs:41:13:41:14 | [b2 (line 39): false] access to local variable b2 | b2 (line 39): false | -| Conditions.cs:41:13:41:14 | [b2 (line 39): true] access to local variable b2 | b2 (line 39): true | -| Conditions.cs:49:16:49:16 | [b (line 46): false] access to parameter x | b (line 46): false | -| Conditions.cs:49:16:49:16 | [b (line 46): true] access to parameter x | b (line 46): true | -| Conditions.cs:49:16:49:18 | [b (line 46): false] ...-- | b (line 46): false | -| Conditions.cs:49:16:49:18 | [b (line 46): true] ...-- | b (line 46): true | -| Conditions.cs:49:16:49:22 | [b (line 46): false] ... > ... | b (line 46): false | -| Conditions.cs:49:16:49:22 | [b (line 46): true] ... > ... | b (line 46): true | -| Conditions.cs:49:22:49:22 | [b (line 46): false] 0 | b (line 46): false | -| Conditions.cs:49:22:49:22 | [b (line 46): true] 0 | b (line 46): true | -| Conditions.cs:50:9:53:9 | [b (line 46): false] {...} | b (line 46): false | -| Conditions.cs:50:9:53:9 | [b (line 46): true] {...} | b (line 46): true | -| Conditions.cs:51:13:52:20 | [b (line 46): false] if (...) ... | b (line 46): false | -| Conditions.cs:51:13:52:20 | [b (line 46): true] if (...) ... | b (line 46): true | -| Conditions.cs:51:17:51:17 | [b (line 46): false] access to parameter b | b (line 46): false | -| Conditions.cs:51:17:51:17 | [b (line 46): true] access to parameter b | b (line 46): true | -| Conditions.cs:52:17:52:17 | [b (line 46): true] access to local variable y | b (line 46): true | -| Conditions.cs:52:17:52:19 | [b (line 46): true] ...++ | b (line 46): true | -| Conditions.cs:52:17:52:20 | [b (line 46): true] ...; | b (line 46): true | -| Conditions.cs:60:16:60:16 | [b (line 57): false] access to parameter x | b (line 57): false | -| Conditions.cs:60:16:60:16 | [b (line 57): true] access to parameter x | b (line 57): true | -| Conditions.cs:60:16:60:18 | [b (line 57): false] ...-- | b (line 57): false | -| Conditions.cs:60:16:60:18 | [b (line 57): true] ...-- | b (line 57): true | -| Conditions.cs:60:16:60:22 | [b (line 57): false] ... > ... | b (line 57): false | -| Conditions.cs:60:16:60:22 | [b (line 57): true] ... > ... | b (line 57): true | -| Conditions.cs:60:22:60:22 | [b (line 57): false] 0 | b (line 57): false | -| Conditions.cs:60:22:60:22 | [b (line 57): true] 0 | b (line 57): true | -| Conditions.cs:61:9:64:9 | [b (line 57): false] {...} | b (line 57): false | -| Conditions.cs:61:9:64:9 | [b (line 57): true] {...} | b (line 57): true | -| Conditions.cs:62:13:63:20 | [b (line 57): false] if (...) ... | b (line 57): false | -| Conditions.cs:62:13:63:20 | [b (line 57): true] if (...) ... | b (line 57): true | -| Conditions.cs:62:17:62:17 | [b (line 57): false] access to parameter b | b (line 57): false | -| Conditions.cs:62:17:62:17 | [b (line 57): true] access to parameter b | b (line 57): true | -| Conditions.cs:63:17:63:17 | [b (line 57): true] access to local variable y | b (line 57): true | -| Conditions.cs:63:17:63:19 | [b (line 57): true] ...++ | b (line 57): true | -| Conditions.cs:63:17:63:20 | [b (line 57): true] ...; | b (line 57): true | -| Conditions.cs:65:9:66:16 | [b (line 57): false] if (...) ... | b (line 57): false | -| Conditions.cs:65:9:66:16 | [b (line 57): true] if (...) ... | b (line 57): true | -| Conditions.cs:65:13:65:13 | [b (line 57): false] access to parameter b | b (line 57): false | -| Conditions.cs:65:13:65:13 | [b (line 57): true] access to parameter b | b (line 57): true | -| Conditions.cs:106:13:106:13 | [b (line 102): true] access to local variable x | b (line 102): true | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... + ... | b (line 102): true | -| Conditions.cs:106:13:106:19 | [b (line 102): true] ... = ... | b (line 102): true | -| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | b (line 102): true | -| Conditions.cs:106:18:106:19 | [b (line 102): true] "" | b (line 102): true | -| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | b (line 102): false | -| Conditions.cs:107:9:109:24 | [b (line 102): true] if (...) ... | b (line 102): true | -| Conditions.cs:107:13:107:13 | [b (line 102): false] access to local variable x | b (line 102): false | -| Conditions.cs:107:13:107:13 | [b (line 102): true] access to local variable x | b (line 102): true | -| Conditions.cs:107:13:107:20 | [b (line 102): false] access to property Length | b (line 102): false | -| Conditions.cs:107:13:107:20 | [b (line 102): true] access to property Length | b (line 102): true | -| Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | b (line 102): false | -| Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | b (line 102): true | -| Conditions.cs:107:24:107:24 | [b (line 102): false] 0 | b (line 102): false | -| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | b (line 102): true | -| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | b (line 102): false | -| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | b (line 102): true | -| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | b (line 102): false | -| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | b (line 102): true | -| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | last (line 118): true | -| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | last (line 118): false | -| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | last (line 118): false | -| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | last (line 118): false | -| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | last (line 118): false | -| Conditions.cs:121:13:122:25 | [last (line 118): false] if (...) ... | last (line 118): false | -| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | last (line 118): true | -| Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | last (line 118): false | -| Conditions.cs:121:17:121:20 | [last (line 118): true] access to local variable last | last (line 118): true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Field1 (line 129): false | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Field1 (line 129): true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Field2 (line 129): false | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Field1 (line 129): true | -| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): true] true | Field2 (line 129): true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): false] {...} | Field1 (line 129): false | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Field1 (line 129): true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Field2 (line 129): false | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field1 (line 129): true | -| Conditions.cs:132:9:140:9 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field2 (line 129): true | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): false] if (...) ... | Field1 (line 129): false | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Field1 (line 129): true | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Field2 (line 129): false | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Field1 (line 129): true | -| Conditions.cs:133:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Field2 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | Field1 (line 129): false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): false] this access | Field1 (line 129): false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Field1 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field1 | Field2 (line 129): false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Field1 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): false] this access | Field2 (line 129): false | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Field1 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Field2 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field1 (line 129): true | -| Conditions.cs:133:17:133:22 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field2 (line 129): true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Field1 (line 129): true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): false] {...} | Field2 (line 129): false | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field1 (line 129): true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field2 (line 129): true | -| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Field1 (line 129): true | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Field1 (line 129): true | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): false] if (...) ... | Field2 (line 129): false | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Field1 (line 129): true | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] if (...) ... | Field2 (line 129): true | -| Conditions.cs:135:17:138:17 | [Field1 (line 129): true] if (...) ... | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | Field2 (line 129): false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] this access | Field2 (line 129): false | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | Field2 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field2 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | Field1 (line 129): true | -| Conditions.cs:135:21:135:26 | [Field1 (line 129): true] this access | Field1 (line 129): true | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field1 (line 129): true | -| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Field2 (line 129): true | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Field1 (line 129): true | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field1 | Field2 (line 129): true | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field1 (line 129): true | -| Conditions.cs:137:21:137:26 | [Field1 (line 129): true, Field2 (line 129): true] this access | Field2 (line 129): true | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Field1 (line 129): true | -| Conditions.cs:137:21:137:37 | [Field1 (line 129): true, Field2 (line 129): true] call to method ToString | Field2 (line 129): true | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Field1 (line 129): true | -| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Field2 (line 129): true | -| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | b (line 143): false | -| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | b (line 143): true | -| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | b (line 143): false | -| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | b (line 143): true | -| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | b (line 143): true | -| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | b (line 143): false | -| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | b (line 143): false | -| Conditions.cs:146:9:149:49 | [b (line 143): true] if (...) ... | b (line 143): true | -| Conditions.cs:146:13:146:13 | [b (line 143): false] access to parameter b | b (line 143): false | -| Conditions.cs:146:13:146:13 | [b (line 143): true] access to parameter b | b (line 143): true | -| Finally.cs:180:21:180:43 | [b1 (line 176): true] throw ...; | b1 (line 176): true | -| Finally.cs:180:27:180:42 | [b1 (line 176): true] object creation of type ExceptionA | b1 (line 176): true | -| Finally.cs:183:9:192:9 | [b1 (line 176): false] {...} | b1 (line 176): false | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | b1 (line 176): true | -| Finally.cs:184:13:191:13 | [b1 (line 176): false] try {...} ... | b1 (line 176): false | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | b1 (line 176): true | -| Finally.cs:185:13:187:13 | [b1 (line 176): false] {...} | b1 (line 176): false | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | b1 (line 176): true | -| Finally.cs:186:17:186:47 | [b1 (line 176): false] if (...) ... | b1 (line 176): false | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | b1 (line 176): true | -| Finally.cs:186:21:186:22 | [b1 (line 176): false] access to parameter b2 | b1 (line 176): false | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | b1 (line 176): true | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | b1 (line 176): false | -| Finally.cs:186:25:186:47 | [b1 (line 176): false, b2 (line 176): true] throw ...; | b2 (line 176): true | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | b1 (line 176): true | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | b2 (line 176): true | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | b1 (line 176): false | -| Finally.cs:186:31:186:46 | [b1 (line 176): false, b2 (line 176): true] object creation of type ExceptionB | b2 (line 176): true | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | b1 (line 176): true | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | b2 (line 176): true | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | b1 (line 176): false | -| Finally.cs:188:13:191:13 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | b2 (line 176): true | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | b1 (line 176): false | -| Finally.cs:188:13:191:13 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] catch (...) {...} | b2 (line 176): true | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | b1 (line 176): true | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | b2 (line 176): true | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | b1 (line 176): true | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | b2 (line 176): true | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | b1 (line 176): false | -| Finally.cs:188:38:188:39 | [exception: Exception, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | b2 (line 176): true | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | b1 (line 176): false | -| Finally.cs:188:38:188:39 | [exception: ExceptionB, b1 (line 176): false, b2 (line 176): true] access to parameter b2 | b2 (line 176): true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | b1 (line 176): true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | b2 (line 176): true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | b1 (line 176): true | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | b2 (line 176): true | -| Finally.cs:189:13:191:13 | [b1 (line 176): false] {...} | b1 (line 176): false | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | b1 (line 176): true | -| Finally.cs:190:17:190:47 | [b1 (line 176): false] if (...) ... | b1 (line 176): false | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | b1 (line 176): true | -| Finally.cs:190:21:190:22 | [b1 (line 176): false] access to parameter b1 | b1 (line 176): false | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | b1 (line 176): true | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | b (line 55): false | -| LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | b (line 55): true | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): false] String x | b (line 55): false | -| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | b (line 55): true | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): false] {...} | b (line 55): false | -| LoopUnrolling.cs:59:9:64:9 | [b (line 55): true] {...} | b (line 55): true | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): false] if (...) ... | b (line 55): false | -| LoopUnrolling.cs:60:13:61:37 | [b (line 55): true] if (...) ... | b (line 55): true | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): false] access to parameter b | b (line 55): false | -| LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | b (line 55): true | -| LoopUnrolling.cs:61:17:61:36 | [b (line 55): true] call to method WriteLine | b (line 55): true | -| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | b (line 55): true | -| LoopUnrolling.cs:61:35:61:35 | [b (line 55): true] access to local variable x | b (line 55): true | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | b (line 55): false | -| LoopUnrolling.cs:62:13:63:37 | [b (line 55): true] if (...) ... | b (line 55): true | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): false] access to parameter b | b (line 55): false | -| LoopUnrolling.cs:62:17:62:17 | [b (line 55): true] access to parameter b | b (line 55): true | -| LoopUnrolling.cs:63:17:63:36 | [b (line 55): true] call to method WriteLine | b (line 55): true | -| LoopUnrolling.cs:63:17:63:37 | [b (line 55): true] ...; | b (line 55): true | -| LoopUnrolling.cs:63:35:63:35 | [b (line 55): true] access to local variable x | b (line 55): true | -finallyNode -| BreakInTry.cs:30:13:33:13 | [finally: break] {...} | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:31:17:32:21 | [finally: break] if (...) ... | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:31:21:31:24 | [finally: break] access to parameter args | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:31:21:31:32 | [finally: break] ... == ... | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:31:29:31:32 | [finally: break] null | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:32:21:32:21 | [finally: break] ; | BreakInTry.cs:24:13:33:13 | try {...} ... | -| BreakInTry.cs:46:9:52:9 | [finally: return] {...} | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:47:13:51:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:47:26:47:28 | [finally: return] String arg | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:47:33:47:36 | [finally: return] access to parameter args | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:48:13:51:13 | [finally: return] {...} | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:49:17:50:26 | [finally: return] if (...) ... | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:49:21:49:23 | [finally: return] access to local variable arg | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:49:21:49:31 | [finally: return] ... == ... | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:49:28:49:31 | [finally: return] null | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:50:21:50:26 | [finally: return] break; | BreakInTry.cs:40:9:52:9 | try {...} ... | -| BreakInTry.cs:64:9:70:9 | [finally: return] {...} | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:65:13:69:13 | [finally: return] foreach (... ... in ...) ... | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:65:26:65:28 | [finally: return] String arg | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:65:33:65:36 | [finally: return] access to parameter args | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:66:13:69:13 | [finally: return] {...} | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:67:17:68:26 | [finally: return] if (...) ... | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:67:21:67:23 | [finally: return] access to local variable arg | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:67:21:67:31 | [finally: return] ... == ... | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:67:28:67:31 | [finally: return] null | BreakInTry.cs:58:9:70:9 | try {...} ... | -| BreakInTry.cs:68:21:68:26 | [finally: return] break; | BreakInTry.cs:58:9:70:9 | try {...} ... | -| CompileTimeOperators.cs:36:9:38:9 | [finally: goto] {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | -| CompileTimeOperators.cs:37:13:37:40 | [finally: goto] call to method WriteLine | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | -| CompileTimeOperators.cs:37:13:37:41 | [finally: goto] ...; | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | -| CompileTimeOperators.cs:37:31:37:39 | [finally: goto] "Finally" | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | -| Finally.cs:14:9:16:9 | [finally: exception] {...} | Finally.cs:9:9:16:9 | try {...} ... | -| Finally.cs:15:13:15:40 | [finally: exception] call to method WriteLine | Finally.cs:9:9:16:9 | try {...} ... | -| Finally.cs:15:13:15:41 | [finally: exception] ...; | Finally.cs:9:9:16:9 | try {...} ... | -| Finally.cs:15:31:15:39 | [finally: exception] "Finally" | Finally.cs:9:9:16:9 | try {...} ... | -| Finally.cs:37:13:39:13 | [finally: exception] {...} | Finally.cs:32:13:39:13 | try {...} ... | -| Finally.cs:38:17:38:44 | [finally: exception] throw ...; | Finally.cs:32:13:39:13 | try {...} ... | -| Finally.cs:38:23:38:43 | [finally: exception] object creation of type Exception | Finally.cs:32:13:39:13 | try {...} ... | -| Finally.cs:38:37:38:42 | [finally: exception] "Boo!" | Finally.cs:32:13:39:13 | try {...} ... | -| Finally.cs:49:9:51:9 | [finally: exception] {...} | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:49:9:51:9 | [finally: return] {...} | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:13:50:40 | [finally: exception] call to method WriteLine | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:13:50:40 | [finally: return] call to method WriteLine | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:13:50:41 | [finally: exception] ...; | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:13:50:41 | [finally: return] ...; | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:31:50:39 | [finally: exception] "Finally" | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:50:31:50:39 | [finally: return] "Finally" | Finally.cs:21:9:51:9 | try {...} ... | -| Finally.cs:69:9:71:9 | [finally: exception] {...} | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:69:9:71:9 | [finally: return] {...} | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:13:70:40 | [finally: exception] call to method WriteLine | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:13:70:40 | [finally: return] call to method WriteLine | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:13:70:41 | [finally: exception] ...; | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:13:70:41 | [finally: return] ...; | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:31:70:39 | [finally: exception] "Finally" | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:70:31:70:39 | [finally: return] "Finally" | Finally.cs:56:9:71:9 | try {...} ... | -| Finally.cs:89:13:99:13 | [finally: break] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:89:13:99:13 | [finally: continue] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:89:13:99:13 | [finally: return] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:90:17:98:17 | [finally: break] try {...} ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:90:17:98:17 | [finally: continue] try {...} ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:90:17:98:17 | [finally: return] try {...} ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:91:17:94:17 | [finally: break] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:91:17:94:17 | [finally: continue] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:91:17:94:17 | [finally: return] {...} | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:21:93:46 | [finally: break] if (...) ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:21:93:46 | [finally: continue] if (...) ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:21:93:46 | [finally: return] if (...) ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:25 | [finally: break] access to local variable i | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:25 | [finally: continue] access to local variable i | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:25 | [finally: return] access to local variable i | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:30 | [finally: break] ... == ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:30 | [finally: continue] ... == ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:25:92:30 | [finally: return] ... == ... | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:30:92:30 | [finally: break] 3 | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:30:92:30 | [finally: continue] 3 | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:92:30:92:30 | [finally: return] 3 | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:25:93:46 | [finally: break] throw ...; | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:25:93:46 | [finally: continue] throw ...; | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:25:93:46 | [finally: return] throw ...; | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:31:93:45 | [finally: break] object creation of type Exception | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:31:93:45 | [finally: continue] object creation of type Exception | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:93:31:93:45 | [finally: return] object creation of type Exception | Finally.cs:79:13:99:13 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally(1): exception] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: break, finally(1): exception] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: break] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: continue, finally(1): exception] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: continue] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: return, finally(1): exception] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:96:17:98:17 | [finally: return] {...} | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally(1): exception] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: break, finally(1): exception] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: break] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: continue, finally(1): exception] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: continue] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: return, finally(1): exception] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:21 | [finally: return] access to local variable i | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally(1): exception] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: break, finally(1): exception] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: break] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: continue, finally(1): exception] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: continue] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: return, finally(1): exception] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:23 | [finally: return] ...-- | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally(1): exception] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: break, finally(1): exception] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: break] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: continue, finally(1): exception] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: continue] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: return, finally(1): exception] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:97:21:97:24 | [finally: return] ...; | Finally.cs:90:17:98:17 | try {...} ... | -| Finally.cs:113:9:118:9 | [finally: exception] {...} | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:113:9:118:9 | [finally: return] {...} | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:13:115:41 | [finally: exception] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:17:114:36 | [false, finally: exception] !... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:17:114:36 | [true, finally: exception] !... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:23 | [finally: exception] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:23 | [finally: exception] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:23 | [finally: return] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:23 | [finally: return] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:30 | [finally: exception] access to property Length | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:30 | [finally: return] access to property Length | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:35 | [finally: exception] ... == ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:19:114:35 | [finally: return] ... == ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:35:114:35 | [finally: exception] 0 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:114:35:114:35 | [finally: return] 0 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:17:115:40 | [finally: exception] call to method WriteLine | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:17:115:41 | [finally: exception] ...; | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:35:115:39 | [finally: exception] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:35:115:39 | [finally: exception] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:35:115:39 | [finally: return] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:115:35:115:39 | [finally: return] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:13:117:37 | [finally: exception] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:13:117:37 | [finally: return] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:21 | [finally: exception] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:21 | [finally: exception] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:21 | [finally: return] access to field Field | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:21 | [finally: return] this access | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:28 | [finally: exception] access to property Length | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:28 | [finally: return] access to property Length | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:32 | [finally: exception] ... > ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:17:116:32 | [finally: return] ... > ... | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:32:116:32 | [finally: exception] 0 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:116:32:116:32 | [finally: return] 0 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:17:117:36 | [finally: exception] call to method WriteLine | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:17:117:36 | [finally: return] call to method WriteLine | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:17:117:37 | [finally: exception] ...; | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:17:117:37 | [finally: return] ...; | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:35:117:35 | [finally: exception] 1 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:117:35:117:35 | [finally: return] 1 | Finally.cs:105:9:118:9 | try {...} ... | -| Finally.cs:140:9:143:9 | [finally: exception] {...} | Finally.cs:135:9:143:9 | try {...} ... | -| Finally.cs:141:13:141:44 | [finally: exception] throw ...; | Finally.cs:135:9:143:9 | try {...} ... | -| Finally.cs:141:19:141:43 | [finally: exception] object creation of type ArgumentException | Finally.cs:135:9:143:9 | try {...} ... | -| Finally.cs:141:41:141:42 | [finally: exception] "" | Finally.cs:135:9:143:9 | try {...} ... | -| Finally.cs:155:9:169:9 | [finally: exception] {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:156:13:168:13 | [finally: exception] try {...} ... | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:157:13:160:13 | [finally: exception] {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:158:17:159:45 | [finally: exception] if (...) ... | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:158:21:158:24 | [finally: exception] access to parameter args | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:158:21:158:31 | [finally: exception] access to property Length | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:158:21:158:36 | [finally: exception] ... == ... | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:158:36:158:36 | [finally: exception] 1 | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:159:21:159:45 | [finally: exception] throw ...; | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:159:27:159:44 | [finally: exception] object creation of type Exception | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:159:41:159:43 | [finally: exception] "1" | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:13:164:13 | [finally: exception, exception: Exception] catch (...) {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:13:164:13 | [finally: exception, exception: NullReferenceException] catch (...) {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:30:161:30 | [finally: exception, exception: Exception] Exception e | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:30:161:30 | [finally: exception, exception: NullReferenceException] Exception e | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:39 | [finally: exception, exception: Exception] access to local variable e | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:39 | [finally: exception, exception: NullReferenceException] access to local variable e | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:47 | [finally: exception, exception: Exception] access to property Message | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:47 | [finally: exception, exception: NullReferenceException] access to property Message | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:54 | [finally: exception, exception: Exception] ... == ... | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:39:161:54 | [finally: exception, exception: NullReferenceException] ... == ... | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:52:161:54 | [finally: exception, exception: Exception] "1" | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:161:52:161:54 | [finally: exception, exception: NullReferenceException] "1" | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:162:13:164:13 | [finally: exception] {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:163:17:163:42 | [finally: exception] call to method WriteLine | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:163:17:163:43 | [finally: exception] ...; | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:163:35:163:38 | [finally: exception] access to parameter args | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:163:35:163:41 | [finally: exception] access to array element | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:163:40:163:40 | [finally: exception] 0 | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:165:13:168:13 | [finally: exception] catch {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:166:13:168:13 | [finally: exception] {...} | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:167:17:167:37 | [finally: exception] call to method WriteLine | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:167:17:167:38 | [finally: exception] ...; | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:167:35:167:36 | [finally: exception] "" | Finally.cs:149:9:169:9 | try {...} ... | -| Finally.cs:183:9:192:9 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:184:13:191:13 | [finally: exception, b1 (line 176): true] try {...} ... | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:185:13:187:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:186:17:186:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:186:21:186:22 | [finally: exception, b1 (line 176): true] access to parameter b2 | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:186:25:186:47 | [finally: exception, b1 (line 176): true, b2 (line 176): true] throw ...; | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:186:31:186:46 | [finally: exception, b1 (line 176): true, b2 (line 176): true] object creation of type ExceptionB | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:188:13:191:13 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:188:13:191:13 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] catch (...) {...} | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:188:38:188:39 | [finally: exception, exception: Exception, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:188:38:188:39 | [finally: exception, exception: ExceptionB, b1 (line 176): true, b2 (line 176): true] access to parameter b2 | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:189:13:191:13 | [finally: exception, b1 (line 176): true] {...} | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:190:17:190:47 | [finally: exception, b1 (line 176): true] if (...) ... | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:190:21:190:22 | [finally: exception, b1 (line 176): true] access to parameter b1 | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:190:25:190:47 | [finally: exception] throw ...; | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:190:31:190:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:178:9:192:9 | try {...} ... | -| Finally.cs:202:9:212:9 | [finally: exception] {...} | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:203:13:210:13 | [finally: exception] try {...} ... | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:204:13:206:13 | [finally: exception] {...} | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:205:17:205:47 | [finally: exception] if (...) ... | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:205:21:205:22 | [finally: exception] access to parameter b2 | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:205:25:205:47 | [finally: exception] throw ...; | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:205:31:205:46 | [finally: exception] object creation of type ExceptionB | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:208:13:210:13 | [finally(1): exception] {...} | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:208:13:210:13 | [finally: exception, finally(1): exception] {...} | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:208:13:210:13 | [finally: exception] {...} | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:17:209:47 | [finally(1): exception] if (...) ... | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:17:209:47 | [finally: exception, finally(1): exception] if (...) ... | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:17:209:47 | [finally: exception] if (...) ... | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:21:209:22 | [finally(1): exception] access to parameter b3 | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:21:209:22 | [finally: exception, finally(1): exception] access to parameter b3 | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:21:209:22 | [finally: exception] access to parameter b3 | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:25:209:47 | [finally(1): exception] throw ...; | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:25:209:47 | [finally: exception, finally(1): exception] throw ...; | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:25:209:47 | [finally: exception] throw ...; | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:31:209:46 | [finally(1): exception] object creation of type ExceptionC | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:31:209:46 | [finally: exception, finally(1): exception] object creation of type ExceptionC | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:209:31:209:46 | [finally: exception] object creation of type ExceptionC | Finally.cs:203:13:210:13 | try {...} ... | -| Finally.cs:211:13:211:16 | [finally: exception] this access | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:211:13:211:28 | [finally: exception] ... = ... | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:211:13:211:29 | [finally: exception] ...; | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:211:26:211:28 | [finally: exception] "0" | Finally.cs:197:9:212:9 | try {...} ... | -| Finally.cs:243:13:253:13 | [finally: exception] {...} | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:244:17:252:17 | [finally: exception] try {...} ... | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:245:17:248:17 | [finally: exception] {...} | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:246:21:247:47 | [finally: exception] if (...) ... | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:246:25:246:26 | [finally: exception] access to parameter b2 | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:247:25:247:47 | [finally: exception] throw ...; | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:247:31:247:46 | [finally: exception] object creation of type ExceptionA | Finally.cs:237:13:253:13 | try {...} ... | -| Finally.cs:250:17:252:17 | [finally(1): exception] {...} | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:250:17:252:17 | [finally: exception, finally(1): exception] {...} | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:250:17:252:17 | [finally: exception] {...} | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:54 | [finally(1): exception] call to method WriteLine | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:54 | [finally: exception, finally(1): exception] call to method WriteLine | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:54 | [finally: exception] call to method WriteLine | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:55 | [finally(1): exception] ...; | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:55 | [finally: exception, finally(1): exception] ...; | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:21:251:55 | [finally: exception] ...; | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:39:251:53 | [finally(1): exception] "Inner finally" | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:39:251:53 | [finally: exception, finally(1): exception] "Inner finally" | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:251:39:251:53 | [finally: exception] "Inner finally" | Finally.cs:244:17:252:17 | try {...} ... | -| Finally.cs:257:9:259:9 | [finally: exception] {...} | Finally.cs:235:9:259:9 | try {...} ... | -| Finally.cs:258:13:258:46 | [finally: exception] call to method WriteLine | Finally.cs:235:9:259:9 | try {...} ... | -| Finally.cs:258:13:258:47 | [finally: exception] ...; | Finally.cs:235:9:259:9 | try {...} ... | -| Finally.cs:258:31:258:45 | [finally: exception] "Outer finally" | Finally.cs:235:9:259:9 | try {...} ... | -| Finally.cs:270:9:273:9 | [finally: exception] {...} | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:271:13:271:34 | [finally: exception] call to method WriteLine | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:271:13:271:35 | [finally: exception] ...; | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:271:31:271:33 | [finally: exception] "3" | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:272:13:272:13 | [finally: exception] access to parameter i | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:272:13:272:18 | [finally: exception] ... + ... | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:272:13:272:18 | [finally: exception] ... = ... | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:272:13:272:19 | [finally: exception] ...; | Finally.cs:265:9:273:9 | try {...} ... | -| Finally.cs:272:18:272:18 | [finally: exception] 3 | Finally.cs:265:9:273:9 | try {...} ... | -| cflow.cs:274:9:276:9 | [finally: return] {...} | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:275:13:275:41 | [finally: return] call to method WriteLine | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:275:13:275:42 | [finally: return] ...; | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:275:31:275:40 | [finally: return] "not dead" | cflow.cs:268:9:276:9 | try {...} ... | -entryPoint | AccessorCalls.cs:1:7:1:19 | AccessorCalls | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | | AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:37:5:39 | {...} | diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 67150b178dc..6b81372682d 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -74,8 +74,6 @@ | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | | Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | false | -| Splitting.cs:35:13:35:13 | access to parameter o | Splitting.cs:32:17:32:25 | ... == ... | Splitting.cs:32:17:32:17 | access to parameter o | false | | Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | | Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | | Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | @@ -83,11 +81,10 @@ | Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | | Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | | Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:90:13:90:13 | access to parameter o | Splitting.cs:87:26:87:34 | ... != ... | Splitting.cs:87:26:87:26 | access to parameter o | true | -| Splitting.cs:99:13:99:13 | access to parameter o | Splitting.cs:97:26:97:34 | ... == ... | Splitting.cs:97:26:97:26 | access to parameter o | true | | Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | | Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | | Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | +| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index 506f9e1f04c..fda9da9f7bd 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -10,39 +10,27 @@ | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:24 | access to local variable s | false | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | non-null | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:24 | access to local variable s | false | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | true | -| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | non-null | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:23 | access to local variable s | true | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | true | -| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | non-null | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:24 | access to local variable s | false | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | false | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | -| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | -| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s | null | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:23 | access to local variable s | true | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | false | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | true | -| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | true | -| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | true | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s | false | -| Assert.cs:93:33:93:34 | [assertion failure, b1 (line 91): false] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | -| Assert.cs:93:33:93:34 | [assertion failure, b1 (line 91): false] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | -| Assert.cs:93:33:93:34 | [assertion failure, b1 (line 91): true] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | -| Assert.cs:93:33:93:34 | [assertion success, b1 (line 91): true] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | -| Assert.cs:94:16:94:17 | [b1 (line 91): true] access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | +| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | +| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | +| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | +| Assert.cs:93:33:93:34 | [assertion success] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | +| Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | | Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | non-empty | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | @@ -203,78 +191,40 @@ | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match null | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:342:27:342:27 | [b (line 339): false] access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:342:27:342:27 | [b (line 339): false] access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | non-null | -| Guards.cs:342:27:342:27 | [b (line 339): true] access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:342:27:342:27 | [b (line 339): true] access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | true | -| Guards.cs:342:27:342:27 | [b (line 339): true] access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | non-null | +| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | +| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | non-null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | non-null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | non-null | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | -| Splitting.cs:13:17:13:17 | [b (line 9): true] access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | -| Splitting.cs:13:17:13:17 | [b (line 9): true] access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | -| Splitting.cs:14:13:14:13 | [b (line 9): false] access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | false | -| Splitting.cs:14:13:14:13 | [b (line 9): true] access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | true | +| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | +| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | non-null | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:24:13:24:13 | [b (line 19): false] access to parameter b | Splitting.cs:21:13:21:13 | access to parameter b | Splitting.cs:21:13:21:13 | access to parameter b | false | -| Splitting.cs:24:13:24:13 | [b (line 19): true] access to parameter b | Splitting.cs:21:13:21:13 | access to parameter b | Splitting.cs:21:13:21:13 | access to parameter b | true | -| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | null | -| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | false | -| Splitting.cs:34:13:34:13 | [b (line 29): false] access to parameter b | Splitting.cs:31:13:31:13 | access to parameter b | Splitting.cs:31:13:31:13 | access to parameter b | false | -| Splitting.cs:34:13:34:13 | [b (line 29): true] access to parameter b | Splitting.cs:31:13:31:13 | access to parameter b | Splitting.cs:31:13:31:13 | access to parameter b | true | -| Splitting.cs:35:13:35:13 | access to parameter o | Splitting.cs:32:17:32:17 | access to parameter o | Splitting.cs:32:17:32:17 | access to parameter o | non-null | -| Splitting.cs:35:13:35:13 | access to parameter o | Splitting.cs:32:17:32:25 | ... == ... | Splitting.cs:32:17:32:17 | access to parameter o | false | -| Splitting.cs:44:17:44:17 | [b (line 39): true] access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:44:17:44:17 | [b (line 39): true] access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:45:17:45:17 | [b (line 39): false] access to parameter b | Splitting.cs:43:17:43:17 | access to parameter b | Splitting.cs:43:17:43:17 | access to parameter b | false | -| Splitting.cs:45:17:45:17 | [b (line 39): true] access to parameter b | Splitting.cs:43:17:43:17 | access to parameter b | Splitting.cs:43:17:43:17 | access to parameter b | true | +| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | +| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | | Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | | Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:55:13:55:13 | [b (line 50): false] access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | non-null | -| Splitting.cs:55:13:55:13 | [b (line 50): false] access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | -| Splitting.cs:55:13:55:13 | [b (line 50): true] access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | non-null | -| Splitting.cs:55:13:55:13 | [b (line 50): true] access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | -| Splitting.cs:56:13:56:13 | [b (line 50): false] access to parameter b | Splitting.cs:52:13:52:13 | access to parameter b | Splitting.cs:52:13:52:13 | access to parameter b | false | -| Splitting.cs:56:13:56:13 | [b (line 50): true] access to parameter b | Splitting.cs:52:13:52:13 | access to parameter b | Splitting.cs:52:13:52:13 | access to parameter b | true | +| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | non-null | +| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | | Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | non-null | | Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | true | -| Splitting.cs:67:13:67:13 | [b (line 61): false] access to parameter b | Splitting.cs:63:13:63:13 | access to parameter b | Splitting.cs:63:13:63:13 | access to parameter b | false | -| Splitting.cs:67:13:67:13 | [b (line 61): true] access to parameter b | Splitting.cs:63:13:63:13 | access to parameter b | Splitting.cs:63:13:63:13 | access to parameter b | true | | Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | | Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | | Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | | Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | | Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | non-null | | Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:79:13:79:13 | [b (line 72): false] access to parameter b | Splitting.cs:74:13:74:13 | access to parameter b | Splitting.cs:74:13:74:13 | access to parameter b | false | -| Splitting.cs:79:13:79:13 | [b (line 72): true] access to parameter b | Splitting.cs:74:13:74:13 | access to parameter b | Splitting.cs:74:13:74:13 | access to parameter b | true | -| Splitting.cs:88:9:88:9 | [b (line 84): true] access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | non-null | -| Splitting.cs:88:9:88:9 | [b (line 84): true] access to parameter o | Splitting.cs:87:26:87:34 | ... != ... | Splitting.cs:87:26:87:26 | access to parameter o | true | -| Splitting.cs:89:13:89:13 | [b (line 84): false] access to parameter b | Splitting.cs:86:13:86:13 | access to parameter b | Splitting.cs:86:13:86:13 | access to parameter b | false | -| Splitting.cs:89:13:89:13 | [b (line 84): true] access to parameter b | Splitting.cs:86:13:86:13 | access to parameter b | Splitting.cs:86:13:86:13 | access to parameter b | true | -| Splitting.cs:90:13:90:13 | access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | non-null | -| Splitting.cs:90:13:90:13 | access to parameter o | Splitting.cs:87:26:87:34 | ... != ... | Splitting.cs:87:26:87:26 | access to parameter o | true | -| Splitting.cs:98:13:98:13 | [b (line 94): false] access to parameter b | Splitting.cs:96:13:96:13 | access to parameter b | Splitting.cs:96:13:96:13 | access to parameter b | false | -| Splitting.cs:98:13:98:13 | [b (line 94): true] access to parameter b | Splitting.cs:96:13:96:13 | access to parameter b | Splitting.cs:96:13:96:13 | access to parameter b | true | -| Splitting.cs:99:13:99:13 | access to parameter o | Splitting.cs:97:26:97:26 | access to parameter o | Splitting.cs:97:26:97:26 | access to parameter o | null | -| Splitting.cs:99:13:99:13 | access to parameter o | Splitting.cs:97:26:97:34 | ... == ... | Splitting.cs:97:26:97:26 | access to parameter o | true | -| Splitting.cs:107:13:107:13 | [b (line 103): true] access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:107:13:107:13 | [b (line 103): true] access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:108:13:108:13 | [b (line 103): false] access to parameter b | Splitting.cs:106:13:106:13 | access to parameter b | Splitting.cs:106:13:106:13 | access to parameter b | false | -| Splitting.cs:108:13:108:13 | [b (line 103): true] access to parameter b | Splitting.cs:106:13:106:13 | access to parameter b | Splitting.cs:106:13:106:13 | access to parameter b | true | +| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | +| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | | Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | | Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:117:9:117:9 | [b (line 112): false] access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:117:9:117:9 | [b (line 112): false] access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:117:9:117:9 | [b (line 112): true] access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:117:9:117:9 | [b (line 112): true] access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:118:13:118:13 | [b (line 112): false] access to parameter b | Splitting.cs:114:13:114:13 | access to parameter b | Splitting.cs:114:13:114:13 | access to parameter b | false | -| Splitting.cs:118:13:118:13 | [b (line 112): true] access to parameter b | Splitting.cs:114:13:114:13 | access to parameter b | Splitting.cs:114:13:114:13 | access to parameter b | true | +| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | +| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | | Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | | Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:131:21:131:21 | [b (line 123): false] access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | -| Splitting.cs:133:25:133:25 | [b (line 123): false] access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | +| Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | +| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | non-null | +| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index c61f41519ad..0921594637b 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -197,10 +197,6 @@ | Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | non-null | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | null | -| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | false | -| Splitting.cs:35:13:35:13 | access to parameter o | Splitting.cs:32:17:32:17 | access to parameter o | Splitting.cs:32:17:32:17 | access to parameter o | non-null | -| Splitting.cs:35:13:35:13 | access to parameter o | Splitting.cs:32:17:32:25 | ... == ... | Splitting.cs:32:17:32:17 | access to parameter o | false | | Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | | Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | | Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | @@ -215,10 +211,6 @@ | Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | | Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | non-null | | Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:90:13:90:13 | access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | Splitting.cs:87:26:87:26 | access to parameter o | non-null | -| Splitting.cs:90:13:90:13 | access to parameter o | Splitting.cs:87:26:87:34 | ... != ... | Splitting.cs:87:26:87:26 | access to parameter o | true | -| Splitting.cs:99:13:99:13 | access to parameter o | Splitting.cs:97:26:97:26 | access to parameter o | Splitting.cs:97:26:97:26 | access to parameter o | null | -| Splitting.cs:99:13:99:13 | access to parameter o | Splitting.cs:97:26:97:34 | ... == ... | Splitting.cs:97:26:97:26 | access to parameter o | true | | Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | | Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | | Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | @@ -230,3 +222,5 @@ | Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | | Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | | Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | +| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | non-null | +| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected index fa21b5cb312..f78fae64ee1 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected @@ -49,15 +49,14 @@ | Guards.cs:349:13:349:13 | access to parameter o | | Splitting.cs:13:17:13:17 | access to parameter o | | Splitting.cs:23:24:23:24 | access to parameter o | -| Splitting.cs:35:13:35:13 | access to parameter o | | Splitting.cs:44:17:44:17 | access to parameter o | | Splitting.cs:46:17:46:17 | access to parameter o | | Splitting.cs:55:13:55:13 | access to parameter o | | Splitting.cs:66:20:66:20 | access to parameter o | | Splitting.cs:78:24:78:24 | access to parameter o | -| Splitting.cs:90:13:90:13 | access to parameter o | | Splitting.cs:107:13:107:13 | access to parameter o | | Splitting.cs:109:13:109:13 | access to parameter o | | Splitting.cs:117:9:117:9 | access to parameter o | | Splitting.cs:119:13:119:13 | access to parameter o | | Splitting.cs:120:16:120:16 | access to parameter o | +| Splitting.cs:133:28:133:28 | access to local variable o | diff --git a/csharp/ql/test/library-tests/controlflow/splits/CONSISTENCY/CfgConsistency.expected b/csharp/ql/test/library-tests/controlflow/splits/CONSISTENCY/CfgConsistency.expected deleted file mode 100644 index 04f7ae1f7d6..00000000000 --- a/csharp/ql/test/library-tests/controlflow/splits/CONSISTENCY/CfgConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -deadEnd -| SplittingStressTest.cs:95:13:95:14 | [b5 (line 3): false] access to parameter b5 | -| SplittingStressTest.cs:95:13:95:14 | [b5 (line 3): true] access to parameter b5 | diff --git a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected b/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected index 8ba5f8687b4..f8b96a5041b 100644 --- a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected +++ b/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected @@ -5,377 +5,484 @@ countSplits | SplittingStressTest.cs:5:9:6:13 | if (...) ... | 1 | | SplittingStressTest.cs:5:13:5:14 | access to parameter b1 | 1 | | SplittingStressTest.cs:6:13:6:13 | ; | 1 | -| SplittingStressTest.cs:7:9:8:13 | if (...) ... | 2 | -| SplittingStressTest.cs:7:13:7:14 | access to parameter b2 | 2 | -| SplittingStressTest.cs:8:13:8:13 | ; | 2 | -| SplittingStressTest.cs:9:9:10:13 | if (...) ... | 4 | -| SplittingStressTest.cs:9:13:9:14 | access to parameter b3 | 4 | -| SplittingStressTest.cs:10:13:10:13 | ; | 4 | -| SplittingStressTest.cs:11:9:12:13 | if (...) ... | 8 | -| SplittingStressTest.cs:11:13:11:14 | access to parameter b4 | 8 | -| SplittingStressTest.cs:12:13:12:13 | ; | 8 | -| SplittingStressTest.cs:13:9:14:13 | if (...) ... | 16 | -| SplittingStressTest.cs:13:13:13:14 | access to parameter b5 | 16 | -| SplittingStressTest.cs:14:13:14:13 | ; | 16 | -| SplittingStressTest.cs:15:9:16:13 | if (...) ... | 32 | -| SplittingStressTest.cs:15:13:15:14 | access to parameter b6 | 32 | -| SplittingStressTest.cs:16:13:16:13 | ; | 32 | -| SplittingStressTest.cs:17:9:18:13 | if (...) ... | 32 | -| SplittingStressTest.cs:17:13:17:14 | access to parameter b7 | 32 | -| SplittingStressTest.cs:18:13:18:13 | ; | 32 | -| SplittingStressTest.cs:19:9:20:13 | if (...) ... | 32 | -| SplittingStressTest.cs:19:13:19:14 | access to parameter b8 | 32 | -| SplittingStressTest.cs:20:13:20:13 | ; | 32 | -| SplittingStressTest.cs:21:9:22:13 | if (...) ... | 32 | -| SplittingStressTest.cs:21:13:21:14 | access to parameter b9 | 32 | -| SplittingStressTest.cs:22:13:22:13 | ; | 32 | -| SplittingStressTest.cs:23:9:24:13 | if (...) ... | 32 | -| SplittingStressTest.cs:23:13:23:15 | access to parameter b10 | 32 | -| SplittingStressTest.cs:24:13:24:13 | ; | 32 | -| SplittingStressTest.cs:25:9:26:13 | if (...) ... | 32 | -| SplittingStressTest.cs:25:13:25:15 | access to parameter b11 | 32 | -| SplittingStressTest.cs:26:13:26:13 | ; | 32 | -| SplittingStressTest.cs:27:9:28:13 | if (...) ... | 32 | -| SplittingStressTest.cs:27:13:27:15 | access to parameter b12 | 32 | -| SplittingStressTest.cs:28:13:28:13 | ; | 32 | -| SplittingStressTest.cs:29:9:30:13 | if (...) ... | 32 | -| SplittingStressTest.cs:29:13:29:15 | access to parameter b13 | 32 | -| SplittingStressTest.cs:30:13:30:13 | ; | 32 | -| SplittingStressTest.cs:31:9:32:13 | if (...) ... | 32 | -| SplittingStressTest.cs:31:13:31:15 | access to parameter b14 | 32 | -| SplittingStressTest.cs:32:13:32:13 | ; | 32 | -| SplittingStressTest.cs:33:9:34:13 | if (...) ... | 32 | -| SplittingStressTest.cs:33:13:33:15 | access to parameter b15 | 32 | -| SplittingStressTest.cs:34:13:34:13 | ; | 32 | -| SplittingStressTest.cs:35:9:36:13 | if (...) ... | 32 | -| SplittingStressTest.cs:35:13:35:15 | access to parameter b16 | 32 | -| SplittingStressTest.cs:36:13:36:13 | ; | 32 | -| SplittingStressTest.cs:37:9:38:13 | if (...) ... | 32 | -| SplittingStressTest.cs:37:13:37:15 | access to parameter b17 | 32 | -| SplittingStressTest.cs:38:13:38:13 | ; | 32 | -| SplittingStressTest.cs:39:9:40:13 | if (...) ... | 32 | -| SplittingStressTest.cs:39:13:39:15 | access to parameter b18 | 32 | -| SplittingStressTest.cs:40:13:40:13 | ; | 32 | -| SplittingStressTest.cs:41:9:42:13 | if (...) ... | 32 | -| SplittingStressTest.cs:41:13:41:15 | access to parameter b19 | 32 | -| SplittingStressTest.cs:42:13:42:13 | ; | 32 | -| SplittingStressTest.cs:43:9:44:13 | if (...) ... | 32 | -| SplittingStressTest.cs:43:13:43:15 | access to parameter b20 | 32 | -| SplittingStressTest.cs:44:13:44:13 | ; | 32 | -| SplittingStressTest.cs:45:9:46:13 | if (...) ... | 32 | -| SplittingStressTest.cs:45:13:45:15 | access to parameter b21 | 32 | -| SplittingStressTest.cs:46:13:46:13 | ; | 32 | -| SplittingStressTest.cs:47:9:48:13 | if (...) ... | 32 | -| SplittingStressTest.cs:47:13:47:15 | access to parameter b22 | 32 | -| SplittingStressTest.cs:48:13:48:13 | ; | 32 | -| SplittingStressTest.cs:49:9:50:13 | if (...) ... | 32 | -| SplittingStressTest.cs:49:13:49:15 | access to parameter b23 | 32 | -| SplittingStressTest.cs:50:13:50:13 | ; | 32 | -| SplittingStressTest.cs:51:9:52:13 | if (...) ... | 32 | -| SplittingStressTest.cs:51:13:51:15 | access to parameter b24 | 32 | -| SplittingStressTest.cs:52:13:52:13 | ; | 32 | -| SplittingStressTest.cs:53:9:54:13 | if (...) ... | 32 | -| SplittingStressTest.cs:53:13:53:15 | access to parameter b25 | 32 | -| SplittingStressTest.cs:54:13:54:13 | ; | 32 | -| SplittingStressTest.cs:55:9:56:13 | if (...) ... | 32 | -| SplittingStressTest.cs:55:13:55:15 | access to parameter b26 | 32 | -| SplittingStressTest.cs:56:13:56:13 | ; | 32 | -| SplittingStressTest.cs:57:9:58:13 | if (...) ... | 32 | -| SplittingStressTest.cs:57:13:57:15 | access to parameter b27 | 32 | -| SplittingStressTest.cs:58:13:58:13 | ; | 32 | -| SplittingStressTest.cs:59:9:60:13 | if (...) ... | 32 | -| SplittingStressTest.cs:59:13:59:15 | access to parameter b28 | 32 | -| SplittingStressTest.cs:60:13:60:13 | ; | 32 | -| SplittingStressTest.cs:61:9:62:13 | if (...) ... | 32 | -| SplittingStressTest.cs:61:13:61:15 | access to parameter b29 | 32 | -| SplittingStressTest.cs:62:13:62:13 | ; | 32 | -| SplittingStressTest.cs:63:9:64:13 | if (...) ... | 32 | -| SplittingStressTest.cs:63:13:63:15 | access to parameter b30 | 32 | -| SplittingStressTest.cs:64:13:64:13 | ; | 32 | -| SplittingStressTest.cs:65:9:66:13 | if (...) ... | 32 | -| SplittingStressTest.cs:65:13:65:15 | access to parameter b31 | 32 | -| SplittingStressTest.cs:66:13:66:13 | ; | 32 | -| SplittingStressTest.cs:67:9:68:13 | if (...) ... | 32 | -| SplittingStressTest.cs:67:13:67:15 | access to parameter b32 | 32 | -| SplittingStressTest.cs:68:13:68:13 | ; | 32 | -| SplittingStressTest.cs:69:9:70:13 | if (...) ... | 32 | -| SplittingStressTest.cs:69:13:69:15 | access to parameter b33 | 32 | -| SplittingStressTest.cs:70:13:70:13 | ; | 32 | -| SplittingStressTest.cs:71:9:72:13 | if (...) ... | 32 | -| SplittingStressTest.cs:71:13:71:15 | access to parameter b34 | 32 | -| SplittingStressTest.cs:72:13:72:13 | ; | 32 | -| SplittingStressTest.cs:73:9:74:13 | if (...) ... | 32 | -| SplittingStressTest.cs:73:13:73:15 | access to parameter b35 | 32 | -| SplittingStressTest.cs:74:13:74:13 | ; | 32 | -| SplittingStressTest.cs:75:9:76:13 | if (...) ... | 32 | -| SplittingStressTest.cs:75:13:75:15 | access to parameter b36 | 32 | -| SplittingStressTest.cs:76:13:76:13 | ; | 32 | -| SplittingStressTest.cs:77:9:78:13 | if (...) ... | 32 | -| SplittingStressTest.cs:77:13:77:15 | access to parameter b37 | 32 | -| SplittingStressTest.cs:78:13:78:13 | ; | 32 | -| SplittingStressTest.cs:79:9:80:13 | if (...) ... | 32 | -| SplittingStressTest.cs:79:13:79:15 | access to parameter b38 | 32 | -| SplittingStressTest.cs:80:13:80:13 | ; | 32 | -| SplittingStressTest.cs:81:9:82:13 | if (...) ... | 32 | -| SplittingStressTest.cs:81:13:81:15 | access to parameter b39 | 32 | -| SplittingStressTest.cs:82:13:82:13 | ; | 32 | -| SplittingStressTest.cs:83:9:84:13 | if (...) ... | 32 | -| SplittingStressTest.cs:83:13:83:15 | access to parameter b40 | 32 | -| SplittingStressTest.cs:84:13:84:13 | ; | 32 | -| SplittingStressTest.cs:85:9:85:9 | ; | 32 | -| SplittingStressTest.cs:87:9:88:13 | if (...) ... | 32 | -| SplittingStressTest.cs:87:13:87:14 | access to parameter b1 | 32 | -| SplittingStressTest.cs:88:13:88:13 | ; | 16 | -| SplittingStressTest.cs:89:9:90:13 | if (...) ... | 16 | -| SplittingStressTest.cs:89:13:89:14 | access to parameter b2 | 16 | -| SplittingStressTest.cs:90:13:90:13 | ; | 8 | -| SplittingStressTest.cs:91:9:92:13 | if (...) ... | 8 | -| SplittingStressTest.cs:91:13:91:14 | access to parameter b3 | 8 | -| SplittingStressTest.cs:92:13:92:13 | ; | 4 | -| SplittingStressTest.cs:93:9:94:13 | if (...) ... | 4 | -| SplittingStressTest.cs:93:13:93:14 | access to parameter b4 | 4 | -| SplittingStressTest.cs:94:13:94:13 | ; | 2 | -| SplittingStressTest.cs:95:9:96:13 | if (...) ... | 2 | -| SplittingStressTest.cs:95:13:95:14 | access to parameter b5 | 2 | +| SplittingStressTest.cs:7:9:8:13 | if (...) ... | 1 | +| SplittingStressTest.cs:7:13:7:14 | access to parameter b2 | 1 | +| SplittingStressTest.cs:8:13:8:13 | ; | 1 | +| SplittingStressTest.cs:9:9:10:13 | if (...) ... | 1 | +| SplittingStressTest.cs:9:13:9:14 | access to parameter b3 | 1 | +| SplittingStressTest.cs:10:13:10:13 | ; | 1 | +| SplittingStressTest.cs:11:9:12:13 | if (...) ... | 1 | +| SplittingStressTest.cs:11:13:11:14 | access to parameter b4 | 1 | +| SplittingStressTest.cs:12:13:12:13 | ; | 1 | +| SplittingStressTest.cs:13:9:14:13 | if (...) ... | 1 | +| SplittingStressTest.cs:13:13:13:14 | access to parameter b5 | 1 | +| SplittingStressTest.cs:14:13:14:13 | ; | 1 | +| SplittingStressTest.cs:15:9:16:13 | if (...) ... | 1 | +| SplittingStressTest.cs:15:13:15:14 | access to parameter b6 | 1 | +| SplittingStressTest.cs:16:13:16:13 | ; | 1 | +| SplittingStressTest.cs:17:9:18:13 | if (...) ... | 1 | +| SplittingStressTest.cs:17:13:17:14 | access to parameter b7 | 1 | +| SplittingStressTest.cs:18:13:18:13 | ; | 1 | +| SplittingStressTest.cs:19:9:20:13 | if (...) ... | 1 | +| SplittingStressTest.cs:19:13:19:14 | access to parameter b8 | 1 | +| SplittingStressTest.cs:20:13:20:13 | ; | 1 | +| SplittingStressTest.cs:21:9:22:13 | if (...) ... | 1 | +| SplittingStressTest.cs:21:13:21:14 | access to parameter b9 | 1 | +| SplittingStressTest.cs:22:13:22:13 | ; | 1 | +| SplittingStressTest.cs:23:9:24:13 | if (...) ... | 1 | +| SplittingStressTest.cs:23:13:23:15 | access to parameter b10 | 1 | +| SplittingStressTest.cs:24:13:24:13 | ; | 1 | +| SplittingStressTest.cs:25:9:26:13 | if (...) ... | 1 | +| SplittingStressTest.cs:25:13:25:15 | access to parameter b11 | 1 | +| SplittingStressTest.cs:26:13:26:13 | ; | 1 | +| SplittingStressTest.cs:27:9:28:13 | if (...) ... | 1 | +| SplittingStressTest.cs:27:13:27:15 | access to parameter b12 | 1 | +| SplittingStressTest.cs:28:13:28:13 | ; | 1 | +| SplittingStressTest.cs:29:9:30:13 | if (...) ... | 1 | +| SplittingStressTest.cs:29:13:29:15 | access to parameter b13 | 1 | +| SplittingStressTest.cs:30:13:30:13 | ; | 1 | +| SplittingStressTest.cs:31:9:32:13 | if (...) ... | 1 | +| SplittingStressTest.cs:31:13:31:15 | access to parameter b14 | 1 | +| SplittingStressTest.cs:32:13:32:13 | ; | 1 | +| SplittingStressTest.cs:33:9:34:13 | if (...) ... | 1 | +| SplittingStressTest.cs:33:13:33:15 | access to parameter b15 | 1 | +| SplittingStressTest.cs:34:13:34:13 | ; | 1 | +| SplittingStressTest.cs:35:9:36:13 | if (...) ... | 1 | +| SplittingStressTest.cs:35:13:35:15 | access to parameter b16 | 1 | +| SplittingStressTest.cs:36:13:36:13 | ; | 1 | +| SplittingStressTest.cs:37:9:38:13 | if (...) ... | 1 | +| SplittingStressTest.cs:37:13:37:15 | access to parameter b17 | 1 | +| SplittingStressTest.cs:38:13:38:13 | ; | 1 | +| SplittingStressTest.cs:39:9:40:13 | if (...) ... | 1 | +| SplittingStressTest.cs:39:13:39:15 | access to parameter b18 | 1 | +| SplittingStressTest.cs:40:13:40:13 | ; | 1 | +| SplittingStressTest.cs:41:9:42:13 | if (...) ... | 1 | +| SplittingStressTest.cs:41:13:41:15 | access to parameter b19 | 1 | +| SplittingStressTest.cs:42:13:42:13 | ; | 1 | +| SplittingStressTest.cs:43:9:44:13 | if (...) ... | 1 | +| SplittingStressTest.cs:43:13:43:15 | access to parameter b20 | 1 | +| SplittingStressTest.cs:44:13:44:13 | ; | 1 | +| SplittingStressTest.cs:45:9:46:13 | if (...) ... | 1 | +| SplittingStressTest.cs:45:13:45:15 | access to parameter b21 | 1 | +| SplittingStressTest.cs:46:13:46:13 | ; | 1 | +| SplittingStressTest.cs:47:9:48:13 | if (...) ... | 1 | +| SplittingStressTest.cs:47:13:47:15 | access to parameter b22 | 1 | +| SplittingStressTest.cs:48:13:48:13 | ; | 1 | +| SplittingStressTest.cs:49:9:50:13 | if (...) ... | 1 | +| SplittingStressTest.cs:49:13:49:15 | access to parameter b23 | 1 | +| SplittingStressTest.cs:50:13:50:13 | ; | 1 | +| SplittingStressTest.cs:51:9:52:13 | if (...) ... | 1 | +| SplittingStressTest.cs:51:13:51:15 | access to parameter b24 | 1 | +| SplittingStressTest.cs:52:13:52:13 | ; | 1 | +| SplittingStressTest.cs:53:9:54:13 | if (...) ... | 1 | +| SplittingStressTest.cs:53:13:53:15 | access to parameter b25 | 1 | +| SplittingStressTest.cs:54:13:54:13 | ; | 1 | +| SplittingStressTest.cs:55:9:56:13 | if (...) ... | 1 | +| SplittingStressTest.cs:55:13:55:15 | access to parameter b26 | 1 | +| SplittingStressTest.cs:56:13:56:13 | ; | 1 | +| SplittingStressTest.cs:57:9:58:13 | if (...) ... | 1 | +| SplittingStressTest.cs:57:13:57:15 | access to parameter b27 | 1 | +| SplittingStressTest.cs:58:13:58:13 | ; | 1 | +| SplittingStressTest.cs:59:9:60:13 | if (...) ... | 1 | +| SplittingStressTest.cs:59:13:59:15 | access to parameter b28 | 1 | +| SplittingStressTest.cs:60:13:60:13 | ; | 1 | +| SplittingStressTest.cs:61:9:62:13 | if (...) ... | 1 | +| SplittingStressTest.cs:61:13:61:15 | access to parameter b29 | 1 | +| SplittingStressTest.cs:62:13:62:13 | ; | 1 | +| SplittingStressTest.cs:63:9:64:13 | if (...) ... | 1 | +| SplittingStressTest.cs:63:13:63:15 | access to parameter b30 | 1 | +| SplittingStressTest.cs:64:13:64:13 | ; | 1 | +| SplittingStressTest.cs:65:9:66:13 | if (...) ... | 1 | +| SplittingStressTest.cs:65:13:65:15 | access to parameter b31 | 1 | +| SplittingStressTest.cs:66:13:66:13 | ; | 1 | +| SplittingStressTest.cs:67:9:68:13 | if (...) ... | 1 | +| SplittingStressTest.cs:67:13:67:15 | access to parameter b32 | 1 | +| SplittingStressTest.cs:68:13:68:13 | ; | 1 | +| SplittingStressTest.cs:69:9:70:13 | if (...) ... | 1 | +| SplittingStressTest.cs:69:13:69:15 | access to parameter b33 | 1 | +| SplittingStressTest.cs:70:13:70:13 | ; | 1 | +| SplittingStressTest.cs:71:9:72:13 | if (...) ... | 1 | +| SplittingStressTest.cs:71:13:71:15 | access to parameter b34 | 1 | +| SplittingStressTest.cs:72:13:72:13 | ; | 1 | +| SplittingStressTest.cs:73:9:74:13 | if (...) ... | 1 | +| SplittingStressTest.cs:73:13:73:15 | access to parameter b35 | 1 | +| SplittingStressTest.cs:74:13:74:13 | ; | 1 | +| SplittingStressTest.cs:75:9:76:13 | if (...) ... | 1 | +| SplittingStressTest.cs:75:13:75:15 | access to parameter b36 | 1 | +| SplittingStressTest.cs:76:13:76:13 | ; | 1 | +| SplittingStressTest.cs:77:9:78:13 | if (...) ... | 1 | +| SplittingStressTest.cs:77:13:77:15 | access to parameter b37 | 1 | +| SplittingStressTest.cs:78:13:78:13 | ; | 1 | +| SplittingStressTest.cs:79:9:80:13 | if (...) ... | 1 | +| SplittingStressTest.cs:79:13:79:15 | access to parameter b38 | 1 | +| SplittingStressTest.cs:80:13:80:13 | ; | 1 | +| SplittingStressTest.cs:81:9:82:13 | if (...) ... | 1 | +| SplittingStressTest.cs:81:13:81:15 | access to parameter b39 | 1 | +| SplittingStressTest.cs:82:13:82:13 | ; | 1 | +| SplittingStressTest.cs:83:9:84:13 | if (...) ... | 1 | +| SplittingStressTest.cs:83:13:83:15 | access to parameter b40 | 1 | +| SplittingStressTest.cs:84:13:84:13 | ; | 1 | +| SplittingStressTest.cs:85:9:85:9 | ; | 1 | +| SplittingStressTest.cs:87:9:88:13 | if (...) ... | 1 | +| SplittingStressTest.cs:87:13:87:14 | access to parameter b1 | 1 | +| SplittingStressTest.cs:88:13:88:13 | ; | 1 | +| SplittingStressTest.cs:89:9:90:13 | if (...) ... | 1 | +| SplittingStressTest.cs:89:13:89:14 | access to parameter b2 | 1 | +| SplittingStressTest.cs:90:13:90:13 | ; | 1 | +| SplittingStressTest.cs:91:9:92:13 | if (...) ... | 1 | +| SplittingStressTest.cs:91:13:91:14 | access to parameter b3 | 1 | +| SplittingStressTest.cs:92:13:92:13 | ; | 1 | +| SplittingStressTest.cs:93:9:94:13 | if (...) ... | 1 | +| SplittingStressTest.cs:93:13:93:14 | access to parameter b4 | 1 | +| SplittingStressTest.cs:94:13:94:13 | ; | 1 | +| SplittingStressTest.cs:95:9:96:13 | if (...) ... | 1 | +| SplittingStressTest.cs:95:13:95:14 | access to parameter b5 | 1 | +| SplittingStressTest.cs:96:13:96:13 | ; | 1 | +| SplittingStressTest.cs:97:9:98:13 | if (...) ... | 1 | +| SplittingStressTest.cs:97:13:97:14 | access to parameter b6 | 1 | +| SplittingStressTest.cs:98:13:98:13 | ; | 1 | +| SplittingStressTest.cs:99:9:100:13 | if (...) ... | 1 | +| SplittingStressTest.cs:99:13:99:14 | access to parameter b7 | 1 | +| SplittingStressTest.cs:100:13:100:13 | ; | 1 | +| SplittingStressTest.cs:101:9:102:13 | if (...) ... | 1 | +| SplittingStressTest.cs:101:13:101:14 | access to parameter b8 | 1 | +| SplittingStressTest.cs:102:13:102:13 | ; | 1 | +| SplittingStressTest.cs:103:9:104:13 | if (...) ... | 1 | +| SplittingStressTest.cs:103:13:103:14 | access to parameter b9 | 1 | +| SplittingStressTest.cs:104:13:104:13 | ; | 1 | +| SplittingStressTest.cs:105:9:106:13 | if (...) ... | 1 | +| SplittingStressTest.cs:105:13:105:15 | access to parameter b10 | 1 | +| SplittingStressTest.cs:106:13:106:13 | ; | 1 | +| SplittingStressTest.cs:107:9:108:13 | if (...) ... | 1 | +| SplittingStressTest.cs:107:13:107:15 | access to parameter b11 | 1 | +| SplittingStressTest.cs:108:13:108:13 | ; | 1 | +| SplittingStressTest.cs:109:9:110:13 | if (...) ... | 1 | +| SplittingStressTest.cs:109:13:109:15 | access to parameter b12 | 1 | +| SplittingStressTest.cs:110:13:110:13 | ; | 1 | +| SplittingStressTest.cs:111:9:112:13 | if (...) ... | 1 | +| SplittingStressTest.cs:111:13:111:15 | access to parameter b13 | 1 | +| SplittingStressTest.cs:112:13:112:13 | ; | 1 | +| SplittingStressTest.cs:113:9:114:13 | if (...) ... | 1 | +| SplittingStressTest.cs:113:13:113:15 | access to parameter b14 | 1 | +| SplittingStressTest.cs:114:13:114:13 | ; | 1 | +| SplittingStressTest.cs:115:9:116:13 | if (...) ... | 1 | +| SplittingStressTest.cs:115:13:115:15 | access to parameter b15 | 1 | +| SplittingStressTest.cs:116:13:116:13 | ; | 1 | +| SplittingStressTest.cs:117:9:118:13 | if (...) ... | 1 | +| SplittingStressTest.cs:117:13:117:15 | access to parameter b16 | 1 | +| SplittingStressTest.cs:118:13:118:13 | ; | 1 | +| SplittingStressTest.cs:119:9:120:13 | if (...) ... | 1 | +| SplittingStressTest.cs:119:13:119:15 | access to parameter b17 | 1 | +| SplittingStressTest.cs:120:13:120:13 | ; | 1 | +| SplittingStressTest.cs:121:9:122:13 | if (...) ... | 1 | +| SplittingStressTest.cs:121:13:121:15 | access to parameter b18 | 1 | +| SplittingStressTest.cs:122:13:122:13 | ; | 1 | +| SplittingStressTest.cs:123:9:124:13 | if (...) ... | 1 | +| SplittingStressTest.cs:123:13:123:15 | access to parameter b19 | 1 | +| SplittingStressTest.cs:124:13:124:13 | ; | 1 | +| SplittingStressTest.cs:125:9:126:13 | if (...) ... | 1 | +| SplittingStressTest.cs:125:13:125:15 | access to parameter b20 | 1 | +| SplittingStressTest.cs:126:13:126:13 | ; | 1 | +| SplittingStressTest.cs:127:9:128:13 | if (...) ... | 1 | +| SplittingStressTest.cs:127:13:127:15 | access to parameter b21 | 1 | +| SplittingStressTest.cs:128:13:128:13 | ; | 1 | +| SplittingStressTest.cs:129:9:130:13 | if (...) ... | 1 | +| SplittingStressTest.cs:129:13:129:15 | access to parameter b22 | 1 | +| SplittingStressTest.cs:130:13:130:13 | ; | 1 | +| SplittingStressTest.cs:131:9:132:13 | if (...) ... | 1 | +| SplittingStressTest.cs:131:13:131:15 | access to parameter b23 | 1 | +| SplittingStressTest.cs:132:13:132:13 | ; | 1 | +| SplittingStressTest.cs:133:9:134:13 | if (...) ... | 1 | +| SplittingStressTest.cs:133:13:133:15 | access to parameter b24 | 1 | +| SplittingStressTest.cs:134:13:134:13 | ; | 1 | +| SplittingStressTest.cs:135:9:136:13 | if (...) ... | 1 | +| SplittingStressTest.cs:135:13:135:15 | access to parameter b25 | 1 | +| SplittingStressTest.cs:136:13:136:13 | ; | 1 | +| SplittingStressTest.cs:137:9:138:13 | if (...) ... | 1 | +| SplittingStressTest.cs:137:13:137:15 | access to parameter b26 | 1 | +| SplittingStressTest.cs:138:13:138:13 | ; | 1 | +| SplittingStressTest.cs:139:9:140:13 | if (...) ... | 1 | +| SplittingStressTest.cs:139:13:139:15 | access to parameter b27 | 1 | +| SplittingStressTest.cs:140:13:140:13 | ; | 1 | +| SplittingStressTest.cs:141:9:142:13 | if (...) ... | 1 | +| SplittingStressTest.cs:141:13:141:15 | access to parameter b28 | 1 | +| SplittingStressTest.cs:142:13:142:13 | ; | 1 | +| SplittingStressTest.cs:143:9:144:13 | if (...) ... | 1 | +| SplittingStressTest.cs:143:13:143:15 | access to parameter b29 | 1 | +| SplittingStressTest.cs:144:13:144:13 | ; | 1 | +| SplittingStressTest.cs:145:9:146:13 | if (...) ... | 1 | +| SplittingStressTest.cs:145:13:145:15 | access to parameter b30 | 1 | +| SplittingStressTest.cs:146:13:146:13 | ; | 1 | +| SplittingStressTest.cs:147:9:148:13 | if (...) ... | 1 | +| SplittingStressTest.cs:147:13:147:15 | access to parameter b31 | 1 | +| SplittingStressTest.cs:148:13:148:13 | ; | 1 | +| SplittingStressTest.cs:149:9:150:13 | if (...) ... | 1 | +| SplittingStressTest.cs:149:13:149:15 | access to parameter b32 | 1 | +| SplittingStressTest.cs:150:13:150:13 | ; | 1 | +| SplittingStressTest.cs:151:9:152:13 | if (...) ... | 1 | +| SplittingStressTest.cs:151:13:151:15 | access to parameter b33 | 1 | +| SplittingStressTest.cs:152:13:152:13 | ; | 1 | +| SplittingStressTest.cs:153:9:154:13 | if (...) ... | 1 | +| SplittingStressTest.cs:153:13:153:15 | access to parameter b34 | 1 | +| SplittingStressTest.cs:154:13:154:13 | ; | 1 | +| SplittingStressTest.cs:155:9:156:13 | if (...) ... | 1 | +| SplittingStressTest.cs:155:13:155:15 | access to parameter b35 | 1 | +| SplittingStressTest.cs:156:13:156:13 | ; | 1 | +| SplittingStressTest.cs:157:9:158:13 | if (...) ... | 1 | +| SplittingStressTest.cs:157:13:157:15 | access to parameter b36 | 1 | +| SplittingStressTest.cs:158:13:158:13 | ; | 1 | +| SplittingStressTest.cs:159:9:160:13 | if (...) ... | 1 | +| SplittingStressTest.cs:159:13:159:15 | access to parameter b37 | 1 | +| SplittingStressTest.cs:160:13:160:13 | ; | 1 | +| SplittingStressTest.cs:161:9:162:13 | if (...) ... | 1 | +| SplittingStressTest.cs:161:13:161:15 | access to parameter b38 | 1 | +| SplittingStressTest.cs:162:13:162:13 | ; | 1 | +| SplittingStressTest.cs:163:9:164:13 | if (...) ... | 1 | +| SplittingStressTest.cs:163:13:163:15 | access to parameter b39 | 1 | +| SplittingStressTest.cs:164:13:164:13 | ; | 1 | +| SplittingStressTest.cs:165:9:166:13 | if (...) ... | 1 | +| SplittingStressTest.cs:165:13:165:15 | access to parameter b40 | 1 | +| SplittingStressTest.cs:166:13:166:13 | ; | 1 | +| SplittingStressTest.cs:167:9:167:9 | ; | 1 | | SplittingStressTest.cs:171:5:320:5 | {...} | 1 | | SplittingStressTest.cs:172:9:319:9 | while (...) ... | 1 | -| SplittingStressTest.cs:172:16:172:16 | access to parameter i | 243 | -| SplittingStressTest.cs:172:16:172:18 | ...-- | 243 | -| SplittingStressTest.cs:172:16:172:22 | ... > ... | 243 | -| SplittingStressTest.cs:172:22:172:22 | 0 | 243 | -| SplittingStressTest.cs:173:9:319:9 | {...} | 243 | -| SplittingStressTest.cs:174:13:178:13 | if (...) ... | 243 | -| SplittingStressTest.cs:174:17:174:17 | access to parameter i | 243 | -| SplittingStressTest.cs:174:17:174:22 | ... == ... | 243 | -| SplittingStressTest.cs:174:22:174:22 | 1 | 243 | -| SplittingStressTest.cs:175:13:178:13 | {...} | 243 | -| SplittingStressTest.cs:176:17:177:21 | if (...) ... | 243 | -| SplittingStressTest.cs:176:21:176:22 | access to parameter b1 | 243 | -| SplittingStressTest.cs:177:21:177:21 | ; | 81 | -| SplittingStressTest.cs:179:13:183:13 | if (...) ... | 243 | -| SplittingStressTest.cs:179:17:179:17 | access to parameter i | 243 | -| SplittingStressTest.cs:179:17:179:22 | ... == ... | 243 | -| SplittingStressTest.cs:179:22:179:22 | 2 | 243 | -| SplittingStressTest.cs:180:13:183:13 | {...} | 243 | -| SplittingStressTest.cs:181:17:182:21 | if (...) ... | 243 | -| SplittingStressTest.cs:181:21:181:22 | access to parameter b2 | 243 | -| SplittingStressTest.cs:182:21:182:21 | ; | 81 | -| SplittingStressTest.cs:184:13:188:13 | if (...) ... | 243 | -| SplittingStressTest.cs:184:17:184:17 | access to parameter i | 243 | -| SplittingStressTest.cs:184:17:184:22 | ... == ... | 243 | -| SplittingStressTest.cs:184:22:184:22 | 3 | 243 | -| SplittingStressTest.cs:185:13:188:13 | {...} | 243 | -| SplittingStressTest.cs:186:17:187:21 | if (...) ... | 243 | -| SplittingStressTest.cs:186:21:186:22 | access to parameter b3 | 243 | -| SplittingStressTest.cs:187:21:187:21 | ; | 81 | -| SplittingStressTest.cs:189:13:193:13 | if (...) ... | 243 | -| SplittingStressTest.cs:189:17:189:17 | access to parameter i | 243 | -| SplittingStressTest.cs:189:17:189:22 | ... == ... | 243 | -| SplittingStressTest.cs:189:22:189:22 | 4 | 243 | -| SplittingStressTest.cs:190:13:193:13 | {...} | 243 | -| SplittingStressTest.cs:191:17:192:21 | if (...) ... | 243 | -| SplittingStressTest.cs:191:21:191:22 | access to parameter b4 | 243 | -| SplittingStressTest.cs:192:21:192:21 | ; | 81 | -| SplittingStressTest.cs:194:13:198:13 | if (...) ... | 243 | -| SplittingStressTest.cs:194:17:194:17 | access to parameter i | 243 | -| SplittingStressTest.cs:194:17:194:22 | ... == ... | 243 | -| SplittingStressTest.cs:194:22:194:22 | 5 | 243 | -| SplittingStressTest.cs:195:13:198:13 | {...} | 243 | -| SplittingStressTest.cs:196:17:197:21 | if (...) ... | 243 | -| SplittingStressTest.cs:196:21:196:22 | access to parameter b5 | 243 | -| SplittingStressTest.cs:197:21:197:21 | ; | 81 | -| SplittingStressTest.cs:199:13:203:13 | if (...) ... | 243 | -| SplittingStressTest.cs:199:17:199:17 | access to parameter i | 243 | -| SplittingStressTest.cs:199:17:199:22 | ... == ... | 243 | -| SplittingStressTest.cs:199:22:199:22 | 6 | 243 | -| SplittingStressTest.cs:200:13:203:13 | {...} | 243 | -| SplittingStressTest.cs:201:17:202:21 | if (...) ... | 243 | -| SplittingStressTest.cs:201:21:201:22 | access to parameter b6 | 243 | -| SplittingStressTest.cs:202:21:202:21 | ; | 243 | -| SplittingStressTest.cs:204:13:208:13 | if (...) ... | 243 | -| SplittingStressTest.cs:204:17:204:17 | access to parameter i | 243 | -| SplittingStressTest.cs:204:17:204:22 | ... == ... | 243 | -| SplittingStressTest.cs:204:22:204:22 | 7 | 243 | -| SplittingStressTest.cs:205:13:208:13 | {...} | 243 | -| SplittingStressTest.cs:206:17:207:21 | if (...) ... | 243 | -| SplittingStressTest.cs:206:21:206:22 | access to parameter b7 | 243 | -| SplittingStressTest.cs:207:21:207:21 | ; | 243 | -| SplittingStressTest.cs:209:13:213:13 | if (...) ... | 243 | -| SplittingStressTest.cs:209:17:209:17 | access to parameter i | 243 | -| SplittingStressTest.cs:209:17:209:22 | ... == ... | 243 | -| SplittingStressTest.cs:209:22:209:22 | 8 | 243 | -| SplittingStressTest.cs:210:13:213:13 | {...} | 243 | -| SplittingStressTest.cs:211:17:212:21 | if (...) ... | 243 | -| SplittingStressTest.cs:211:21:211:22 | access to parameter b8 | 243 | -| SplittingStressTest.cs:212:21:212:21 | ; | 243 | -| SplittingStressTest.cs:214:13:218:13 | if (...) ... | 243 | -| SplittingStressTest.cs:214:17:214:17 | access to parameter i | 243 | -| SplittingStressTest.cs:214:17:214:22 | ... == ... | 243 | -| SplittingStressTest.cs:214:22:214:22 | 9 | 243 | -| SplittingStressTest.cs:215:13:218:13 | {...} | 243 | -| SplittingStressTest.cs:216:17:217:21 | if (...) ... | 243 | -| SplittingStressTest.cs:216:21:216:22 | access to parameter b9 | 243 | -| SplittingStressTest.cs:217:21:217:21 | ; | 243 | -| SplittingStressTest.cs:219:13:223:13 | if (...) ... | 243 | -| SplittingStressTest.cs:219:17:219:17 | access to parameter i | 243 | -| SplittingStressTest.cs:219:17:219:23 | ... == ... | 243 | -| SplittingStressTest.cs:219:22:219:23 | 10 | 243 | -| SplittingStressTest.cs:220:13:223:13 | {...} | 243 | -| SplittingStressTest.cs:221:17:222:21 | if (...) ... | 243 | -| SplittingStressTest.cs:221:21:221:23 | access to parameter b10 | 243 | -| SplittingStressTest.cs:222:21:222:21 | ; | 243 | -| SplittingStressTest.cs:224:13:228:13 | if (...) ... | 243 | -| SplittingStressTest.cs:224:17:224:17 | access to parameter i | 243 | -| SplittingStressTest.cs:224:17:224:23 | ... == ... | 243 | -| SplittingStressTest.cs:224:22:224:23 | 11 | 243 | -| SplittingStressTest.cs:225:13:228:13 | {...} | 243 | -| SplittingStressTest.cs:226:17:227:21 | if (...) ... | 243 | -| SplittingStressTest.cs:226:21:226:23 | access to parameter b11 | 243 | -| SplittingStressTest.cs:227:21:227:21 | ; | 243 | -| SplittingStressTest.cs:229:13:233:13 | if (...) ... | 243 | -| SplittingStressTest.cs:229:17:229:17 | access to parameter i | 243 | -| SplittingStressTest.cs:229:17:229:23 | ... == ... | 243 | -| SplittingStressTest.cs:229:22:229:23 | 12 | 243 | -| SplittingStressTest.cs:230:13:233:13 | {...} | 243 | -| SplittingStressTest.cs:231:17:232:21 | if (...) ... | 243 | -| SplittingStressTest.cs:231:21:231:23 | access to parameter b12 | 243 | -| SplittingStressTest.cs:232:21:232:21 | ; | 243 | -| SplittingStressTest.cs:234:13:238:13 | if (...) ... | 243 | -| SplittingStressTest.cs:234:17:234:17 | access to parameter i | 243 | -| SplittingStressTest.cs:234:17:234:23 | ... == ... | 243 | -| SplittingStressTest.cs:234:22:234:23 | 13 | 243 | -| SplittingStressTest.cs:235:13:238:13 | {...} | 243 | -| SplittingStressTest.cs:236:17:237:21 | if (...) ... | 243 | -| SplittingStressTest.cs:236:21:236:23 | access to parameter b13 | 243 | -| SplittingStressTest.cs:237:21:237:21 | ; | 243 | -| SplittingStressTest.cs:239:13:243:13 | if (...) ... | 243 | -| SplittingStressTest.cs:239:17:239:17 | access to parameter i | 243 | -| SplittingStressTest.cs:239:17:239:23 | ... == ... | 243 | -| SplittingStressTest.cs:239:22:239:23 | 14 | 243 | -| SplittingStressTest.cs:240:13:243:13 | {...} | 243 | -| SplittingStressTest.cs:241:17:242:21 | if (...) ... | 243 | -| SplittingStressTest.cs:241:21:241:23 | access to parameter b14 | 243 | -| SplittingStressTest.cs:242:21:242:21 | ; | 243 | -| SplittingStressTest.cs:244:13:248:13 | if (...) ... | 243 | -| SplittingStressTest.cs:244:17:244:17 | access to parameter i | 243 | -| SplittingStressTest.cs:244:17:244:23 | ... == ... | 243 | -| SplittingStressTest.cs:244:22:244:23 | 15 | 243 | -| SplittingStressTest.cs:245:13:248:13 | {...} | 243 | -| SplittingStressTest.cs:246:17:247:21 | if (...) ... | 243 | -| SplittingStressTest.cs:246:21:246:23 | access to parameter b15 | 243 | -| SplittingStressTest.cs:247:21:247:21 | ; | 243 | -| SplittingStressTest.cs:249:13:253:13 | if (...) ... | 243 | -| SplittingStressTest.cs:249:17:249:17 | access to parameter i | 243 | -| SplittingStressTest.cs:249:17:249:23 | ... == ... | 243 | -| SplittingStressTest.cs:249:22:249:23 | 16 | 243 | -| SplittingStressTest.cs:250:13:253:13 | {...} | 243 | -| SplittingStressTest.cs:251:17:252:21 | if (...) ... | 243 | -| SplittingStressTest.cs:251:21:251:23 | access to parameter b16 | 243 | -| SplittingStressTest.cs:252:21:252:21 | ; | 243 | -| SplittingStressTest.cs:254:13:258:13 | if (...) ... | 243 | -| SplittingStressTest.cs:254:17:254:17 | access to parameter i | 243 | -| SplittingStressTest.cs:254:17:254:23 | ... == ... | 243 | -| SplittingStressTest.cs:254:22:254:23 | 17 | 243 | -| SplittingStressTest.cs:255:13:258:13 | {...} | 243 | -| SplittingStressTest.cs:256:17:257:21 | if (...) ... | 243 | -| SplittingStressTest.cs:256:21:256:23 | access to parameter b17 | 243 | -| SplittingStressTest.cs:257:21:257:21 | ; | 243 | -| SplittingStressTest.cs:259:13:263:13 | if (...) ... | 243 | -| SplittingStressTest.cs:259:17:259:17 | access to parameter i | 243 | -| SplittingStressTest.cs:259:17:259:23 | ... == ... | 243 | -| SplittingStressTest.cs:259:22:259:23 | 18 | 243 | -| SplittingStressTest.cs:260:13:263:13 | {...} | 243 | -| SplittingStressTest.cs:261:17:262:21 | if (...) ... | 243 | -| SplittingStressTest.cs:261:21:261:23 | access to parameter b18 | 243 | -| SplittingStressTest.cs:262:21:262:21 | ; | 243 | -| SplittingStressTest.cs:264:13:268:13 | if (...) ... | 243 | -| SplittingStressTest.cs:264:17:264:17 | access to parameter i | 243 | -| SplittingStressTest.cs:264:17:264:23 | ... == ... | 243 | -| SplittingStressTest.cs:264:22:264:23 | 19 | 243 | -| SplittingStressTest.cs:265:13:268:13 | {...} | 243 | -| SplittingStressTest.cs:266:17:267:21 | if (...) ... | 243 | -| SplittingStressTest.cs:266:21:266:23 | access to parameter b19 | 243 | -| SplittingStressTest.cs:267:21:267:21 | ; | 243 | -| SplittingStressTest.cs:269:13:273:13 | if (...) ... | 243 | -| SplittingStressTest.cs:269:17:269:17 | access to parameter i | 243 | -| SplittingStressTest.cs:269:17:269:23 | ... == ... | 243 | -| SplittingStressTest.cs:269:22:269:23 | 20 | 243 | -| SplittingStressTest.cs:270:13:273:13 | {...} | 243 | -| SplittingStressTest.cs:271:17:272:21 | if (...) ... | 243 | -| SplittingStressTest.cs:271:21:271:23 | access to parameter b20 | 243 | -| SplittingStressTest.cs:272:21:272:21 | ; | 243 | -| SplittingStressTest.cs:274:13:278:13 | if (...) ... | 243 | -| SplittingStressTest.cs:274:17:274:17 | access to parameter i | 243 | -| SplittingStressTest.cs:274:17:274:23 | ... == ... | 243 | -| SplittingStressTest.cs:274:22:274:23 | 21 | 243 | -| SplittingStressTest.cs:275:13:278:13 | {...} | 243 | -| SplittingStressTest.cs:276:17:277:21 | if (...) ... | 243 | -| SplittingStressTest.cs:276:21:276:23 | access to parameter b21 | 243 | -| SplittingStressTest.cs:277:21:277:21 | ; | 243 | -| SplittingStressTest.cs:279:13:283:13 | if (...) ... | 243 | -| SplittingStressTest.cs:279:17:279:17 | access to parameter i | 243 | -| SplittingStressTest.cs:279:17:279:23 | ... == ... | 243 | -| SplittingStressTest.cs:279:22:279:23 | 22 | 243 | -| SplittingStressTest.cs:280:13:283:13 | {...} | 243 | -| SplittingStressTest.cs:281:17:282:21 | if (...) ... | 243 | -| SplittingStressTest.cs:281:21:281:23 | access to parameter b22 | 243 | -| SplittingStressTest.cs:282:21:282:21 | ; | 243 | -| SplittingStressTest.cs:284:13:288:13 | if (...) ... | 243 | -| SplittingStressTest.cs:284:17:284:17 | access to parameter i | 243 | -| SplittingStressTest.cs:284:17:284:23 | ... == ... | 243 | -| SplittingStressTest.cs:284:22:284:23 | 23 | 243 | -| SplittingStressTest.cs:285:13:288:13 | {...} | 243 | -| SplittingStressTest.cs:286:17:287:21 | if (...) ... | 243 | -| SplittingStressTest.cs:286:21:286:23 | access to parameter b23 | 243 | -| SplittingStressTest.cs:287:21:287:21 | ; | 243 | -| SplittingStressTest.cs:289:13:293:13 | if (...) ... | 243 | -| SplittingStressTest.cs:289:17:289:17 | access to parameter i | 243 | -| SplittingStressTest.cs:289:17:289:23 | ... == ... | 243 | -| SplittingStressTest.cs:289:22:289:23 | 24 | 243 | -| SplittingStressTest.cs:290:13:293:13 | {...} | 243 | -| SplittingStressTest.cs:291:17:292:21 | if (...) ... | 243 | -| SplittingStressTest.cs:291:21:291:23 | access to parameter b24 | 243 | -| SplittingStressTest.cs:292:21:292:21 | ; | 243 | -| SplittingStressTest.cs:294:13:298:13 | if (...) ... | 243 | -| SplittingStressTest.cs:294:17:294:17 | access to parameter i | 243 | -| SplittingStressTest.cs:294:17:294:23 | ... == ... | 243 | -| SplittingStressTest.cs:294:22:294:23 | 25 | 243 | -| SplittingStressTest.cs:295:13:298:13 | {...} | 243 | -| SplittingStressTest.cs:296:17:297:21 | if (...) ... | 243 | -| SplittingStressTest.cs:296:21:296:23 | access to parameter b25 | 243 | -| SplittingStressTest.cs:297:21:297:21 | ; | 243 | -| SplittingStressTest.cs:299:13:303:13 | if (...) ... | 243 | -| SplittingStressTest.cs:299:17:299:17 | access to parameter i | 243 | -| SplittingStressTest.cs:299:17:299:23 | ... == ... | 243 | -| SplittingStressTest.cs:299:22:299:23 | 26 | 243 | -| SplittingStressTest.cs:300:13:303:13 | {...} | 243 | -| SplittingStressTest.cs:301:17:302:21 | if (...) ... | 243 | -| SplittingStressTest.cs:301:21:301:23 | access to parameter b26 | 243 | -| SplittingStressTest.cs:302:21:302:21 | ; | 243 | -| SplittingStressTest.cs:304:13:308:13 | if (...) ... | 243 | -| SplittingStressTest.cs:304:17:304:17 | access to parameter i | 243 | -| SplittingStressTest.cs:304:17:304:23 | ... == ... | 243 | -| SplittingStressTest.cs:304:22:304:23 | 27 | 243 | -| SplittingStressTest.cs:305:13:308:13 | {...} | 243 | -| SplittingStressTest.cs:306:17:307:21 | if (...) ... | 243 | -| SplittingStressTest.cs:306:21:306:23 | access to parameter b27 | 243 | -| SplittingStressTest.cs:307:21:307:21 | ; | 243 | -| SplittingStressTest.cs:309:13:313:13 | if (...) ... | 243 | -| SplittingStressTest.cs:309:17:309:17 | access to parameter i | 243 | -| SplittingStressTest.cs:309:17:309:23 | ... == ... | 243 | -| SplittingStressTest.cs:309:22:309:23 | 28 | 243 | -| SplittingStressTest.cs:310:13:313:13 | {...} | 243 | -| SplittingStressTest.cs:311:17:312:21 | if (...) ... | 243 | -| SplittingStressTest.cs:311:21:311:23 | access to parameter b28 | 243 | -| SplittingStressTest.cs:312:21:312:21 | ; | 243 | -| SplittingStressTest.cs:314:13:318:13 | if (...) ... | 243 | -| SplittingStressTest.cs:314:17:314:17 | access to parameter i | 243 | -| SplittingStressTest.cs:314:17:314:23 | ... == ... | 243 | -| SplittingStressTest.cs:314:22:314:23 | 29 | 243 | -| SplittingStressTest.cs:315:13:318:13 | {...} | 243 | -| SplittingStressTest.cs:316:17:317:21 | if (...) ... | 243 | -| SplittingStressTest.cs:316:21:316:23 | access to parameter b29 | 243 | -| SplittingStressTest.cs:317:21:317:21 | ; | 243 | +| SplittingStressTest.cs:172:16:172:16 | access to parameter i | 1 | +| SplittingStressTest.cs:172:16:172:18 | ...-- | 1 | +| SplittingStressTest.cs:172:16:172:22 | ... > ... | 1 | +| SplittingStressTest.cs:172:22:172:22 | 0 | 1 | +| SplittingStressTest.cs:173:9:319:9 | {...} | 1 | +| SplittingStressTest.cs:174:13:178:13 | if (...) ... | 1 | +| SplittingStressTest.cs:174:17:174:17 | access to parameter i | 1 | +| SplittingStressTest.cs:174:17:174:22 | ... == ... | 1 | +| SplittingStressTest.cs:174:22:174:22 | 1 | 1 | +| SplittingStressTest.cs:175:13:178:13 | {...} | 1 | +| SplittingStressTest.cs:176:17:177:21 | if (...) ... | 1 | +| SplittingStressTest.cs:176:21:176:22 | access to parameter b1 | 1 | +| SplittingStressTest.cs:177:21:177:21 | ; | 1 | +| SplittingStressTest.cs:179:13:183:13 | if (...) ... | 1 | +| SplittingStressTest.cs:179:17:179:17 | access to parameter i | 1 | +| SplittingStressTest.cs:179:17:179:22 | ... == ... | 1 | +| SplittingStressTest.cs:179:22:179:22 | 2 | 1 | +| SplittingStressTest.cs:180:13:183:13 | {...} | 1 | +| SplittingStressTest.cs:181:17:182:21 | if (...) ... | 1 | +| SplittingStressTest.cs:181:21:181:22 | access to parameter b2 | 1 | +| SplittingStressTest.cs:182:21:182:21 | ; | 1 | +| SplittingStressTest.cs:184:13:188:13 | if (...) ... | 1 | +| SplittingStressTest.cs:184:17:184:17 | access to parameter i | 1 | +| SplittingStressTest.cs:184:17:184:22 | ... == ... | 1 | +| SplittingStressTest.cs:184:22:184:22 | 3 | 1 | +| SplittingStressTest.cs:185:13:188:13 | {...} | 1 | +| SplittingStressTest.cs:186:17:187:21 | if (...) ... | 1 | +| SplittingStressTest.cs:186:21:186:22 | access to parameter b3 | 1 | +| SplittingStressTest.cs:187:21:187:21 | ; | 1 | +| SplittingStressTest.cs:189:13:193:13 | if (...) ... | 1 | +| SplittingStressTest.cs:189:17:189:17 | access to parameter i | 1 | +| SplittingStressTest.cs:189:17:189:22 | ... == ... | 1 | +| SplittingStressTest.cs:189:22:189:22 | 4 | 1 | +| SplittingStressTest.cs:190:13:193:13 | {...} | 1 | +| SplittingStressTest.cs:191:17:192:21 | if (...) ... | 1 | +| SplittingStressTest.cs:191:21:191:22 | access to parameter b4 | 1 | +| SplittingStressTest.cs:192:21:192:21 | ; | 1 | +| SplittingStressTest.cs:194:13:198:13 | if (...) ... | 1 | +| SplittingStressTest.cs:194:17:194:17 | access to parameter i | 1 | +| SplittingStressTest.cs:194:17:194:22 | ... == ... | 1 | +| SplittingStressTest.cs:194:22:194:22 | 5 | 1 | +| SplittingStressTest.cs:195:13:198:13 | {...} | 1 | +| SplittingStressTest.cs:196:17:197:21 | if (...) ... | 1 | +| SplittingStressTest.cs:196:21:196:22 | access to parameter b5 | 1 | +| SplittingStressTest.cs:197:21:197:21 | ; | 1 | +| SplittingStressTest.cs:199:13:203:13 | if (...) ... | 1 | +| SplittingStressTest.cs:199:17:199:17 | access to parameter i | 1 | +| SplittingStressTest.cs:199:17:199:22 | ... == ... | 1 | +| SplittingStressTest.cs:199:22:199:22 | 6 | 1 | +| SplittingStressTest.cs:200:13:203:13 | {...} | 1 | +| SplittingStressTest.cs:201:17:202:21 | if (...) ... | 1 | +| SplittingStressTest.cs:201:21:201:22 | access to parameter b6 | 1 | +| SplittingStressTest.cs:202:21:202:21 | ; | 1 | +| SplittingStressTest.cs:204:13:208:13 | if (...) ... | 1 | +| SplittingStressTest.cs:204:17:204:17 | access to parameter i | 1 | +| SplittingStressTest.cs:204:17:204:22 | ... == ... | 1 | +| SplittingStressTest.cs:204:22:204:22 | 7 | 1 | +| SplittingStressTest.cs:205:13:208:13 | {...} | 1 | +| SplittingStressTest.cs:206:17:207:21 | if (...) ... | 1 | +| SplittingStressTest.cs:206:21:206:22 | access to parameter b7 | 1 | +| SplittingStressTest.cs:207:21:207:21 | ; | 1 | +| SplittingStressTest.cs:209:13:213:13 | if (...) ... | 1 | +| SplittingStressTest.cs:209:17:209:17 | access to parameter i | 1 | +| SplittingStressTest.cs:209:17:209:22 | ... == ... | 1 | +| SplittingStressTest.cs:209:22:209:22 | 8 | 1 | +| SplittingStressTest.cs:210:13:213:13 | {...} | 1 | +| SplittingStressTest.cs:211:17:212:21 | if (...) ... | 1 | +| SplittingStressTest.cs:211:21:211:22 | access to parameter b8 | 1 | +| SplittingStressTest.cs:212:21:212:21 | ; | 1 | +| SplittingStressTest.cs:214:13:218:13 | if (...) ... | 1 | +| SplittingStressTest.cs:214:17:214:17 | access to parameter i | 1 | +| SplittingStressTest.cs:214:17:214:22 | ... == ... | 1 | +| SplittingStressTest.cs:214:22:214:22 | 9 | 1 | +| SplittingStressTest.cs:215:13:218:13 | {...} | 1 | +| SplittingStressTest.cs:216:17:217:21 | if (...) ... | 1 | +| SplittingStressTest.cs:216:21:216:22 | access to parameter b9 | 1 | +| SplittingStressTest.cs:217:21:217:21 | ; | 1 | +| SplittingStressTest.cs:219:13:223:13 | if (...) ... | 1 | +| SplittingStressTest.cs:219:17:219:17 | access to parameter i | 1 | +| SplittingStressTest.cs:219:17:219:23 | ... == ... | 1 | +| SplittingStressTest.cs:219:22:219:23 | 10 | 1 | +| SplittingStressTest.cs:220:13:223:13 | {...} | 1 | +| SplittingStressTest.cs:221:17:222:21 | if (...) ... | 1 | +| SplittingStressTest.cs:221:21:221:23 | access to parameter b10 | 1 | +| SplittingStressTest.cs:222:21:222:21 | ; | 1 | +| SplittingStressTest.cs:224:13:228:13 | if (...) ... | 1 | +| SplittingStressTest.cs:224:17:224:17 | access to parameter i | 1 | +| SplittingStressTest.cs:224:17:224:23 | ... == ... | 1 | +| SplittingStressTest.cs:224:22:224:23 | 11 | 1 | +| SplittingStressTest.cs:225:13:228:13 | {...} | 1 | +| SplittingStressTest.cs:226:17:227:21 | if (...) ... | 1 | +| SplittingStressTest.cs:226:21:226:23 | access to parameter b11 | 1 | +| SplittingStressTest.cs:227:21:227:21 | ; | 1 | +| SplittingStressTest.cs:229:13:233:13 | if (...) ... | 1 | +| SplittingStressTest.cs:229:17:229:17 | access to parameter i | 1 | +| SplittingStressTest.cs:229:17:229:23 | ... == ... | 1 | +| SplittingStressTest.cs:229:22:229:23 | 12 | 1 | +| SplittingStressTest.cs:230:13:233:13 | {...} | 1 | +| SplittingStressTest.cs:231:17:232:21 | if (...) ... | 1 | +| SplittingStressTest.cs:231:21:231:23 | access to parameter b12 | 1 | +| SplittingStressTest.cs:232:21:232:21 | ; | 1 | +| SplittingStressTest.cs:234:13:238:13 | if (...) ... | 1 | +| SplittingStressTest.cs:234:17:234:17 | access to parameter i | 1 | +| SplittingStressTest.cs:234:17:234:23 | ... == ... | 1 | +| SplittingStressTest.cs:234:22:234:23 | 13 | 1 | +| SplittingStressTest.cs:235:13:238:13 | {...} | 1 | +| SplittingStressTest.cs:236:17:237:21 | if (...) ... | 1 | +| SplittingStressTest.cs:236:21:236:23 | access to parameter b13 | 1 | +| SplittingStressTest.cs:237:21:237:21 | ; | 1 | +| SplittingStressTest.cs:239:13:243:13 | if (...) ... | 1 | +| SplittingStressTest.cs:239:17:239:17 | access to parameter i | 1 | +| SplittingStressTest.cs:239:17:239:23 | ... == ... | 1 | +| SplittingStressTest.cs:239:22:239:23 | 14 | 1 | +| SplittingStressTest.cs:240:13:243:13 | {...} | 1 | +| SplittingStressTest.cs:241:17:242:21 | if (...) ... | 1 | +| SplittingStressTest.cs:241:21:241:23 | access to parameter b14 | 1 | +| SplittingStressTest.cs:242:21:242:21 | ; | 1 | +| SplittingStressTest.cs:244:13:248:13 | if (...) ... | 1 | +| SplittingStressTest.cs:244:17:244:17 | access to parameter i | 1 | +| SplittingStressTest.cs:244:17:244:23 | ... == ... | 1 | +| SplittingStressTest.cs:244:22:244:23 | 15 | 1 | +| SplittingStressTest.cs:245:13:248:13 | {...} | 1 | +| SplittingStressTest.cs:246:17:247:21 | if (...) ... | 1 | +| SplittingStressTest.cs:246:21:246:23 | access to parameter b15 | 1 | +| SplittingStressTest.cs:247:21:247:21 | ; | 1 | +| SplittingStressTest.cs:249:13:253:13 | if (...) ... | 1 | +| SplittingStressTest.cs:249:17:249:17 | access to parameter i | 1 | +| SplittingStressTest.cs:249:17:249:23 | ... == ... | 1 | +| SplittingStressTest.cs:249:22:249:23 | 16 | 1 | +| SplittingStressTest.cs:250:13:253:13 | {...} | 1 | +| SplittingStressTest.cs:251:17:252:21 | if (...) ... | 1 | +| SplittingStressTest.cs:251:21:251:23 | access to parameter b16 | 1 | +| SplittingStressTest.cs:252:21:252:21 | ; | 1 | +| SplittingStressTest.cs:254:13:258:13 | if (...) ... | 1 | +| SplittingStressTest.cs:254:17:254:17 | access to parameter i | 1 | +| SplittingStressTest.cs:254:17:254:23 | ... == ... | 1 | +| SplittingStressTest.cs:254:22:254:23 | 17 | 1 | +| SplittingStressTest.cs:255:13:258:13 | {...} | 1 | +| SplittingStressTest.cs:256:17:257:21 | if (...) ... | 1 | +| SplittingStressTest.cs:256:21:256:23 | access to parameter b17 | 1 | +| SplittingStressTest.cs:257:21:257:21 | ; | 1 | +| SplittingStressTest.cs:259:13:263:13 | if (...) ... | 1 | +| SplittingStressTest.cs:259:17:259:17 | access to parameter i | 1 | +| SplittingStressTest.cs:259:17:259:23 | ... == ... | 1 | +| SplittingStressTest.cs:259:22:259:23 | 18 | 1 | +| SplittingStressTest.cs:260:13:263:13 | {...} | 1 | +| SplittingStressTest.cs:261:17:262:21 | if (...) ... | 1 | +| SplittingStressTest.cs:261:21:261:23 | access to parameter b18 | 1 | +| SplittingStressTest.cs:262:21:262:21 | ; | 1 | +| SplittingStressTest.cs:264:13:268:13 | if (...) ... | 1 | +| SplittingStressTest.cs:264:17:264:17 | access to parameter i | 1 | +| SplittingStressTest.cs:264:17:264:23 | ... == ... | 1 | +| SplittingStressTest.cs:264:22:264:23 | 19 | 1 | +| SplittingStressTest.cs:265:13:268:13 | {...} | 1 | +| SplittingStressTest.cs:266:17:267:21 | if (...) ... | 1 | +| SplittingStressTest.cs:266:21:266:23 | access to parameter b19 | 1 | +| SplittingStressTest.cs:267:21:267:21 | ; | 1 | +| SplittingStressTest.cs:269:13:273:13 | if (...) ... | 1 | +| SplittingStressTest.cs:269:17:269:17 | access to parameter i | 1 | +| SplittingStressTest.cs:269:17:269:23 | ... == ... | 1 | +| SplittingStressTest.cs:269:22:269:23 | 20 | 1 | +| SplittingStressTest.cs:270:13:273:13 | {...} | 1 | +| SplittingStressTest.cs:271:17:272:21 | if (...) ... | 1 | +| SplittingStressTest.cs:271:21:271:23 | access to parameter b20 | 1 | +| SplittingStressTest.cs:272:21:272:21 | ; | 1 | +| SplittingStressTest.cs:274:13:278:13 | if (...) ... | 1 | +| SplittingStressTest.cs:274:17:274:17 | access to parameter i | 1 | +| SplittingStressTest.cs:274:17:274:23 | ... == ... | 1 | +| SplittingStressTest.cs:274:22:274:23 | 21 | 1 | +| SplittingStressTest.cs:275:13:278:13 | {...} | 1 | +| SplittingStressTest.cs:276:17:277:21 | if (...) ... | 1 | +| SplittingStressTest.cs:276:21:276:23 | access to parameter b21 | 1 | +| SplittingStressTest.cs:277:21:277:21 | ; | 1 | +| SplittingStressTest.cs:279:13:283:13 | if (...) ... | 1 | +| SplittingStressTest.cs:279:17:279:17 | access to parameter i | 1 | +| SplittingStressTest.cs:279:17:279:23 | ... == ... | 1 | +| SplittingStressTest.cs:279:22:279:23 | 22 | 1 | +| SplittingStressTest.cs:280:13:283:13 | {...} | 1 | +| SplittingStressTest.cs:281:17:282:21 | if (...) ... | 1 | +| SplittingStressTest.cs:281:21:281:23 | access to parameter b22 | 1 | +| SplittingStressTest.cs:282:21:282:21 | ; | 1 | +| SplittingStressTest.cs:284:13:288:13 | if (...) ... | 1 | +| SplittingStressTest.cs:284:17:284:17 | access to parameter i | 1 | +| SplittingStressTest.cs:284:17:284:23 | ... == ... | 1 | +| SplittingStressTest.cs:284:22:284:23 | 23 | 1 | +| SplittingStressTest.cs:285:13:288:13 | {...} | 1 | +| SplittingStressTest.cs:286:17:287:21 | if (...) ... | 1 | +| SplittingStressTest.cs:286:21:286:23 | access to parameter b23 | 1 | +| SplittingStressTest.cs:287:21:287:21 | ; | 1 | +| SplittingStressTest.cs:289:13:293:13 | if (...) ... | 1 | +| SplittingStressTest.cs:289:17:289:17 | access to parameter i | 1 | +| SplittingStressTest.cs:289:17:289:23 | ... == ... | 1 | +| SplittingStressTest.cs:289:22:289:23 | 24 | 1 | +| SplittingStressTest.cs:290:13:293:13 | {...} | 1 | +| SplittingStressTest.cs:291:17:292:21 | if (...) ... | 1 | +| SplittingStressTest.cs:291:21:291:23 | access to parameter b24 | 1 | +| SplittingStressTest.cs:292:21:292:21 | ; | 1 | +| SplittingStressTest.cs:294:13:298:13 | if (...) ... | 1 | +| SplittingStressTest.cs:294:17:294:17 | access to parameter i | 1 | +| SplittingStressTest.cs:294:17:294:23 | ... == ... | 1 | +| SplittingStressTest.cs:294:22:294:23 | 25 | 1 | +| SplittingStressTest.cs:295:13:298:13 | {...} | 1 | +| SplittingStressTest.cs:296:17:297:21 | if (...) ... | 1 | +| SplittingStressTest.cs:296:21:296:23 | access to parameter b25 | 1 | +| SplittingStressTest.cs:297:21:297:21 | ; | 1 | +| SplittingStressTest.cs:299:13:303:13 | if (...) ... | 1 | +| SplittingStressTest.cs:299:17:299:17 | access to parameter i | 1 | +| SplittingStressTest.cs:299:17:299:23 | ... == ... | 1 | +| SplittingStressTest.cs:299:22:299:23 | 26 | 1 | +| SplittingStressTest.cs:300:13:303:13 | {...} | 1 | +| SplittingStressTest.cs:301:17:302:21 | if (...) ... | 1 | +| SplittingStressTest.cs:301:21:301:23 | access to parameter b26 | 1 | +| SplittingStressTest.cs:302:21:302:21 | ; | 1 | +| SplittingStressTest.cs:304:13:308:13 | if (...) ... | 1 | +| SplittingStressTest.cs:304:17:304:17 | access to parameter i | 1 | +| SplittingStressTest.cs:304:17:304:23 | ... == ... | 1 | +| SplittingStressTest.cs:304:22:304:23 | 27 | 1 | +| SplittingStressTest.cs:305:13:308:13 | {...} | 1 | +| SplittingStressTest.cs:306:17:307:21 | if (...) ... | 1 | +| SplittingStressTest.cs:306:21:306:23 | access to parameter b27 | 1 | +| SplittingStressTest.cs:307:21:307:21 | ; | 1 | +| SplittingStressTest.cs:309:13:313:13 | if (...) ... | 1 | +| SplittingStressTest.cs:309:17:309:17 | access to parameter i | 1 | +| SplittingStressTest.cs:309:17:309:23 | ... == ... | 1 | +| SplittingStressTest.cs:309:22:309:23 | 28 | 1 | +| SplittingStressTest.cs:310:13:313:13 | {...} | 1 | +| SplittingStressTest.cs:311:17:312:21 | if (...) ... | 1 | +| SplittingStressTest.cs:311:21:311:23 | access to parameter b28 | 1 | +| SplittingStressTest.cs:312:21:312:21 | ; | 1 | +| SplittingStressTest.cs:314:13:318:13 | if (...) ... | 1 | +| SplittingStressTest.cs:314:17:314:17 | access to parameter i | 1 | +| SplittingStressTest.cs:314:17:314:23 | ... == ... | 1 | +| SplittingStressTest.cs:314:22:314:23 | 29 | 1 | +| SplittingStressTest.cs:315:13:318:13 | {...} | 1 | +| SplittingStressTest.cs:316:17:317:21 | if (...) ... | 1 | +| SplittingStressTest.cs:316:21:316:23 | access to parameter b29 | 1 | +| SplittingStressTest.cs:317:21:317:21 | ; | 1 | ssaDef | SplittingStressTest.cs:3:18:3:19 | SSA param(b1) | | SplittingStressTest.cs:3:27:3:28 | SSA param(b2) | @@ -449,1460 +556,3 @@ ssaDef | SplittingStressTest.cs:170:296:170:298 | SSA param(b29) | | SplittingStressTest.cs:172:16:172:16 | SSA phi(i) | | SplittingStressTest.cs:172:16:172:18 | SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b2 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b2 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b1 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b2 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b3 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): false, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): false, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): true, b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): true, b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b4 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b5 (line 170): false] SSA def(i) | -| SplittingStressTest.cs:172:16:172:18 | [b5 (line 170): true] SSA def(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:177:21:177:21 | [b1 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:179:13:183:13 | [b1 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): false, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b1 (line 170): true, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:182:21:182:21 | [b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): false, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b1 (line 170): true, b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:184:13:188:13 | [b2 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b1 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:187:21:187:21 | [b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b1 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): false, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b2 (line 170): true, b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:189:13:193:13 | [b3 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b1 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:192:21:192:21 | [b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b1 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b2 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): false, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b3 (line 170): true, b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:194:13:198:13 | [b4 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b1 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:197:21:197:21 | [b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b1 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b2 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b3 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b4 (line 170): false, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b4 (line 170): false, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b4 (line 170): true, b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b4 (line 170): true, b5 (line 170): true] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b5 (line 170): false] SSA phi(i) | -| SplittingStressTest.cs:199:13:203:13 | [b5 (line 170): true] SSA phi(i) | 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 955202f6afd..bcd15ee7831 100644 --- a/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected @@ -2,7 +2,7 @@ edges | 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:35:41:35:41 | o : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | provenance | | +| CallSensitivityFlow.cs:35:41:35:41 | o : Object | CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | provenance | | | CallSensitivityFlow.cs:43:45:43:45 | o : Object | CallSensitivityFlow.cs:45:16:45:17 | access to local variable o1 : Object | provenance | | | CallSensitivityFlow.cs:45:16:45:17 | access to local variable o1 : Object | CallSensitivityFlow.cs:49:20:49:22 | access to local variable tmp : Object | provenance | | | CallSensitivityFlow.cs:49:20:49:22 | access to local variable tmp : Object | CallSensitivityFlow.cs:50:13:50:14 | access to local variable o2 : Object | provenance | | @@ -71,7 +71,7 @@ nodes | CallSensitivityFlow.cs:27:40:27:40 | o : Object | semmle.label | o : Object | | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | semmle.label | access to parameter o | | CallSensitivityFlow.cs:35:41:35:41 | o : Object | semmle.label | o : Object | -| CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | semmle.label | [cond (line 35): true] access to parameter o | +| CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | semmle.label | access to parameter o | | CallSensitivityFlow.cs:43:45:43:45 | o : Object | semmle.label | o : Object | | CallSensitivityFlow.cs:45:16:45:17 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | CallSensitivityFlow.cs:49:20:49:22 | access to local variable tmp : Object | semmle.label | access to local variable tmp : Object | @@ -147,7 +147,7 @@ subpaths #select | CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | $@ | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | access to parameter o | | CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | $@ | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | access to parameter o | -| CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | $@ | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | [cond (line 35): true] access to parameter o | +| CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | $@ | CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | access to parameter o | | CallSensitivityFlow.cs:81:30:81:41 | object creation of type Object : Object | CallSensitivityFlow.cs:81:30:81:41 | object creation of type Object : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | $@ | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | access to local variable o3 | | CallSensitivityFlow.cs:82:31:82:42 | object creation of type Object : Object | CallSensitivityFlow.cs:82:31:82:42 | object creation of type Object : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | $@ | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | access to local variable o3 | | CallSensitivityFlow.cs:83:31:83:42 | object creation of type Object : Object | CallSensitivityFlow.cs:83:31:83:42 | object creation of type Object : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | $@ | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | access to local variable o3 | @@ -156,7 +156,7 @@ subpaths | CallSensitivityFlow.cs:87:31:87:42 | object creation of type Object : Object | CallSensitivityFlow.cs:87:31:87:42 | object creation of type Object : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | $@ | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | access to local variable o3 | | CallSensitivityFlow.cs:101:24:101:35 | object creation of type Object : Object | CallSensitivityFlow.cs:101:24:101:35 | object creation of type Object : Object | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | $@ | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | access to parameter o | | CallSensitivityFlow.cs:102:25:102:36 | object creation of type Object : Object | CallSensitivityFlow.cs:102:25:102:36 | object creation of type Object : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | $@ | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | access to parameter o | -| CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | $@ | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | [cond (line 35): true] access to parameter o | +| CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | $@ | CallSensitivityFlow.cs:39:18:39:18 | access to parameter o | access to parameter o | | CallSensitivityFlow.cs:104:30:104:41 | object creation of type Object : Object | CallSensitivityFlow.cs:104:30:104:41 | object creation of type Object : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | $@ | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | access to local variable o3 | | CallSensitivityFlow.cs:105:26:105:37 | object creation of type Object : 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:105:14:105:41 | call to method FlowThrough | call to method FlowThrough | | CallSensitivityFlow.cs:117:26:117:37 | object creation of type Object : Object | CallSensitivityFlow.cs:117:26:117:37 | object creation of type Object : Object | CallSensitivityFlow.cs:128:22:128:22 | access to parameter o | $@ | CallSensitivityFlow.cs:128:22:128:22 | access to parameter o | access to parameter o | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected index 3180b00f205..743b754a97b 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlow.expected @@ -84,13 +84,12 @@ | GlobalDataFlow.cs:547:15:547:21 | access to field field | | MultiImplementationA.cs:7:39:7:39 | access to parameter x | | MultiImplementationB.cs:5:39:5:39 | access to parameter x | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | +| Splitting.cs:9:15:9:15 | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | | Splitting.cs:21:21:21:33 | call to method Return | -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | +| Splitting.cs:32:15:32:15 | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | | Splitting.cs:41:19:41:19 | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | | Splitting.cs:50:19:50:19 | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index 7333890f68f..81f76ca4dc0 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -464,17 +464,12 @@ edges | MultiImplementationA.cs:7:27:7:27 | x : String | MultiImplementationA.cs:7:39:7:39 | access to parameter x | provenance | | | MultiImplementationB.cs:3:28:3:41 | "taint source" : String | MultiImplementationB.cs:5:27:5:27 | x : String | provenance | | | MultiImplementationB.cs:5:27:5:27 | x : String | MultiImplementationB.cs:5:39:5:39 | access to parameter x | 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:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | provenance | | -| Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | access to parameter tainted : String | provenance | | +| Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | access to local variable x | provenance | | | Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:11:19:11:19 | access to local variable x | provenance | | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | provenance | | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | 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:8:17:8:31 | call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | provenance | | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | Splitting.cs:8:17:8:31 | call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | 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 | | @@ -482,23 +477,17 @@ edges | 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:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | provenance | | -| Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | access to parameter tainted : String | provenance | | +| Splitting.cs:30:17:30:23 | access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | access to local variable x | provenance | | | Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:34:19:34:19 | access to local variable x | provenance | | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | provenance | | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | 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:31:17:31:26 | dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | provenance | | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:31:17:31:26 | dynamic access to element : String | provenance | | | Splitting.cs:39:13:39:13 | access to local variable s : String | Splitting.cs:41:19:41:19 | access to local variable s | provenance | | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:39:13:39:13 | access to local variable s : String | provenance | | +| Splitting.cs:39:13:39:13 | access to local variable s : String | Splitting.cs:43:19:43:19 | access to local variable s | provenance | | +| Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:39:13:39:13 | access to local variable s : String | provenance | | | Splitting.cs:48:13:48:13 | access to local variable s : String | Splitting.cs:50:19:50:19 | access to local variable s | provenance | | | Splitting.cs:48:13:48:13 | access to local variable s : String | Splitting.cs:52:19:52:19 | access to local variable s | provenance | | | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | @@ -919,13 +908,9 @@ nodes | MultiImplementationB.cs:5:39:5:39 | access to parameter x | semmle.label | access to parameter x | | Splitting.cs:3:28:3:34 | tainted : String | semmle.label | tainted : String | | Splitting.cs:8:13:8:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:8:13:8:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | semmle.label | [b (line 3): false] call to method Return : String | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | semmle.label | [b (line 3): true] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | semmle.label | [b (line 3): false] access to parameter tainted : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | semmle.label | [b (line 3): true] access to parameter tainted : String | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | semmle.label | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | semmle.label | [b (line 3): true] access to local variable x | +| Splitting.cs:8:17:8:31 | call to method Return : String | semmle.label | call to method Return : String | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Splitting.cs:9:15:9:15 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:16:26:16:26 | x : String | semmle.label | x : String | | Splitting.cs:16:32:16:32 | access to parameter x : String | semmle.label | access to parameter x : String | @@ -936,20 +921,16 @@ nodes | Splitting.cs:21:21:21:33 | call to method Return | semmle.label | call to method Return | | Splitting.cs:21:28:21:32 | access to parameter value : String | semmle.label | access to parameter value : String | | Splitting.cs:24:28:24:34 | tainted : String | semmle.label | tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | semmle.label | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | semmle.label | [b (line 24): true] access to parameter tainted : String | +| Splitting.cs:30:17:30:23 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Splitting.cs:31:13:31:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:31:13:31:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | semmle.label | [b (line 24): false] dynamic access to element : String | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | semmle.label | [b (line 24): true] dynamic access to element : String | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | semmle.label | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | semmle.label | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | semmle.label | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | semmle.label | [b (line 24): true] access to local variable x | +| Splitting.cs:31:17:31:26 | dynamic access to element : String | semmle.label | dynamic access to element : String | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Splitting.cs:32:15:32:15 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:39:13:39:13 | access to local variable s : String | semmle.label | access to local variable s : String | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | semmle.label | [b (line 37): true] "taint source" : String | +| Splitting.cs:39:21:39:34 | "taint source" : String | semmle.label | "taint source" : String | | Splitting.cs:41:19:41:19 | access to local variable s | semmle.label | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:48:13:48:13 | access to local variable s : String | semmle.label | access to local variable s : String | | Splitting.cs:48:36:48:49 | "taint source" : String | semmle.label | "taint source" : String | | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | @@ -984,17 +965,11 @@ subpaths | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : 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:16:32:16:32 | access to parameter x : 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): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | call to method Return : String | | Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:20:22:20:30 | call to method Return : String | | Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:21:21:21:33 | call to method Return | -| 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:20:22:20:30 | call to method Return : 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:20:22:20:30 | call to method Return : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:22:20:30 | call to method Return : String | Splitting.cs:31:17:31:26 | dynamic access to element : String | #select -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | [b (line 24): true] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | [b (line 3): true] access to local variable x | | Capture.cs:246:19:246:25 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:246:19:246:25 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | | Capture.cs:251:15:251:21 | access to field Field | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:251:15:251:21 | access to field Field | access to field Field | @@ -1016,7 +991,8 @@ subpaths | GlobalDataFlow.cs:533:15:533:21 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | access to field field | | GlobalDataFlow.cs:539:15:539:22 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | access to field field | | GlobalDataFlow.cs:547:15:547:21 | access to field field | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | access to field field | -| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s | +| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s | access to local variable s | | Splitting.cs:50:19:50: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 | access to local variable s | | Splitting.cs:52:19:52: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 | access to local variable s | | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | access to local variable sink0 | @@ -1068,7 +1044,9 @@ subpaths | Capture.cs:319:19:319:19 | access to local variable x | Capture.cs:318:17:318:30 | "taint source" : String | Capture.cs:319:19:319:19 | access to local variable x | access to local variable x | | Capture.cs:330:47:330:47 | access to local variable x | Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:330:47:330:47 | access to local variable x | access to local variable x | | Capture.cs:341:45:341:45 | access to local variable x | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:45:341:45 | access to local variable x | access to local variable x | +| Splitting.cs:9:15:9:15 | access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | access to local variable x | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:11:19:11:19 | access to local variable x | access to local variable x | +| Splitting.cs:32:15:32:15 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | access to local variable x | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:34:19:34:19 | access to local variable x | access to local variable x | | Capture.cs:206:19:206:19 | access to parameter s | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:206:19:206:19 | access to parameter s | access to parameter s | | Capture.cs:217:19:217:19 | access to parameter s | Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:217:19:217:19 | access to parameter s | access to parameter s | diff --git a/csharp/ql/test/library-tests/dataflow/global/GetAnOutNode.expected b/csharp/ql/test/library-tests/dataflow/global/GetAnOutNode.expected index 643b3e81350..db91ca3e73f 100644 --- a/csharp/ql/test/library-tests/dataflow/global/GetAnOutNode.expected +++ b/csharp/ql/test/library-tests/dataflow/global/GetAnOutNode.expected @@ -184,16 +184,12 @@ | MultiImplementationA.cs:3:7:3:15 | call to constructor Object | normal | MultiImplementationA.cs:3:7:3:15 | call to constructor Object | | MultiImplementationB.cs:1:7:1:15 | call to constructor Object | normal | MultiImplementationB.cs:1:7:1:15 | call to constructor Object | | Splitting.cs:1:7:1:15 | call to constructor Object | normal | Splitting.cs:1:7:1:15 | call to constructor Object | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return | normal | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return | normal | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return | +| Splitting.cs:8:17:8:31 | call to method Return | normal | Splitting.cs:8:17:8:31 | call to method Return | | Splitting.cs:20:22:20:30 | call to method Return | normal | Splitting.cs:20:22:20:30 | call to method Return | | Splitting.cs:21:21:21:33 | call to method Return | normal | Splitting.cs:21:21:21:33 | call to method Return | -| Splitting.cs:30:9:30:13 | [b (line 24): false] dynamic access to element | normal | Splitting.cs:30:9:30:13 | [b (line 24): false] dynamic access to element | -| Splitting.cs:30:9:30:13 | [b (line 24): true] dynamic access to element | normal | Splitting.cs:30:9:30:13 | [b (line 24): true] dynamic access to element | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element | normal | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element | normal | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element | -| Splitting.cs:32:9:32:16 | [b (line 24): false] dynamic call to method Check | normal | Splitting.cs:32:9:32:16 | [b (line 24): false] dynamic call to method Check | -| Splitting.cs:32:9:32:16 | [b (line 24): true] dynamic call to method Check | normal | Splitting.cs:32:9:32:16 | [b (line 24): true] dynamic call to method Check | +| Splitting.cs:30:9:30:13 | dynamic access to element | normal | Splitting.cs:30:9:30:13 | dynamic access to element | +| Splitting.cs:31:17:31:26 | dynamic access to element | normal | Splitting.cs:31:17:31:26 | dynamic access to element | +| Splitting.cs:32:9:32:16 | dynamic call to method Check | normal | Splitting.cs:32:9:32:16 | dynamic call to method Check | | Splitting.cs:34:13:34:20 | dynamic call to method Check | normal | Splitting.cs:34:13:34:20 | dynamic call to method Check | | This.cs:7:5:7:8 | call to constructor Object | normal | This.cs:7:5:7:8 | call to constructor Object | | This.cs:17:9:17:18 | object creation of type This | normal | This.cs:17:9:17:18 | object creation of type This | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected index 8a68b204e02..aa37485069a 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected @@ -94,13 +94,12 @@ | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | | MultiImplementationA.cs:7:39:7:39 | access to parameter x | | MultiImplementationB.cs:5:39:5:39 | access to parameter x | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | +| Splitting.cs:9:15:9:15 | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | | Splitting.cs:21:21:21:33 | call to method Return | -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | +| Splitting.cs:32:15:32:15 | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | | Splitting.cs:41:19:41:19 | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | | Splitting.cs:50:19:50:19 | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 8fcf385a4f5..7a6f90e961d 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -536,17 +536,12 @@ edges | MultiImplementationA.cs:7:27:7:27 | x : String | MultiImplementationA.cs:7:39:7:39 | access to parameter x | provenance | | | MultiImplementationB.cs:3:28:3:41 | "taint source" : String | MultiImplementationB.cs:5:27:5:27 | x : String | provenance | | | MultiImplementationB.cs:5:27:5:27 | x : String | MultiImplementationB.cs:5:39:5:39 | access to parameter x | 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:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | provenance | | -| Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | access to parameter tainted : String | provenance | | +| Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:9:15:9:15 | access to local variable x | provenance | | | Splitting.cs:8:13:8:13 | access to local variable x : String | Splitting.cs:11:19:11:19 | access to local variable x | provenance | | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | provenance | | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | 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:8:17:8:31 | call to method Return : String | Splitting.cs:8:13:8:13 | access to local variable x : String | provenance | | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | Splitting.cs:8:17:8:31 | call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | 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 | | @@ -554,23 +549,17 @@ edges | 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:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | provenance | | -| Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | access to parameter tainted : String | provenance | | +| Splitting.cs:30:17:30:23 | access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:32:15:32:15 | access to local variable x | provenance | | | Splitting.cs:31:13:31:13 | access to local variable x : String | Splitting.cs:34:19:34:19 | access to local variable x | provenance | | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | provenance | | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | 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:31:17:31:26 | dynamic access to element : String | Splitting.cs:31:13:31:13 | access to local variable x : String | provenance | | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:31:17:31:26 | dynamic access to element : String | provenance | | | Splitting.cs:39:13:39:13 | access to local variable s : String | Splitting.cs:41:19:41:19 | access to local variable s | provenance | | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:39:13:39:13 | access to local variable s : String | provenance | | +| Splitting.cs:39:13:39:13 | access to local variable s : String | Splitting.cs:43:19:43:19 | access to local variable s | provenance | | +| Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:39:13:39:13 | access to local variable s : String | provenance | | | Splitting.cs:48:13:48:13 | access to local variable s : String | Splitting.cs:50:19:50:19 | access to local variable s | provenance | | | Splitting.cs:48:13:48:13 | access to local variable s : String | Splitting.cs:52:19:52:19 | access to local variable s | provenance | | | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | @@ -1056,13 +1045,9 @@ nodes | MultiImplementationB.cs:5:39:5:39 | access to parameter x | semmle.label | access to parameter x | | Splitting.cs:3:28:3:34 | tainted : String | semmle.label | tainted : String | | Splitting.cs:8:13:8:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:8:13:8:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | semmle.label | [b (line 3): false] call to method Return : String | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | semmle.label | [b (line 3): true] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | semmle.label | [b (line 3): false] access to parameter tainted : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | semmle.label | [b (line 3): true] access to parameter tainted : String | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | semmle.label | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | semmle.label | [b (line 3): true] access to local variable x | +| Splitting.cs:8:17:8:31 | call to method Return : String | semmle.label | call to method Return : String | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Splitting.cs:9:15:9:15 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:16:26:16:26 | x : String | semmle.label | x : String | | Splitting.cs:16:32:16:32 | access to parameter x : String | semmle.label | access to parameter x : String | @@ -1073,20 +1058,16 @@ nodes | Splitting.cs:21:21:21:33 | call to method Return | semmle.label | call to method Return | | Splitting.cs:21:28:21:32 | access to parameter value : String | semmle.label | access to parameter value : String | | Splitting.cs:24:28:24:34 | tainted : String | semmle.label | tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | semmle.label | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | semmle.label | [b (line 24): true] access to parameter tainted : String | +| Splitting.cs:30:17:30:23 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Splitting.cs:31:13:31:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:31:13:31:13 | access to local variable x : String | semmle.label | access to local variable x : String | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | semmle.label | [b (line 24): false] dynamic access to element : String | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | semmle.label | [b (line 24): true] dynamic access to element : String | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | semmle.label | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | semmle.label | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | semmle.label | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | semmle.label | [b (line 24): true] access to local variable x | +| Splitting.cs:31:17:31:26 | dynamic access to element : String | semmle.label | dynamic access to element : String | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Splitting.cs:32:15:32:15 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | semmle.label | access to local variable x | | Splitting.cs:39:13:39:13 | access to local variable s : String | semmle.label | access to local variable s : String | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | semmle.label | [b (line 37): true] "taint source" : String | +| Splitting.cs:39:21:39:34 | "taint source" : String | semmle.label | "taint source" : String | | Splitting.cs:41:19:41:19 | access to local variable s | semmle.label | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:48:13:48:13 | access to local variable s : String | semmle.label | access to local variable s : String | | Splitting.cs:48:36:48:49 | "taint source" : String | semmle.label | "taint source" : String | | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | @@ -1127,12 +1108,10 @@ subpaths | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | | GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] 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:22:65:22:66 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | -| 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:16:32:16:32 | access to parameter x : 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): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | +| Splitting.cs:8:24:8:30 | access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | call to method Return : String | | Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:20:22:20:30 | call to method Return : String | | Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:21:21:21:33 | call to method Return | -| 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:20:22:20:30 | call to method Return : 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:20:22:20:30 | call to method Return : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | +| Splitting.cs:31:19:31:25 | access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:22:20:30 | call to method Return : String | Splitting.cs:31:17:31:26 | dynamic access to element : String | #select | Capture.cs:12:19:12:24 | access to local variable sink27 | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:12:19:12:24 | access to local variable sink27 | access to local variable sink27 | | Capture.cs:21:23:21:28 | access to local variable sink28 | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:21:23:21:28 | access to local variable sink28 | access to local variable sink28 | @@ -1235,13 +1214,12 @@ subpaths | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | access to local variable sink3 | | MultiImplementationA.cs:7:39:7:39 | access to parameter x | MultiImplementationA.cs:5:28:5:41 | "taint source" : String | MultiImplementationA.cs:7:39:7:39 | access to parameter x | access to parameter x | | MultiImplementationB.cs:5:39:5:39 | access to parameter x | MultiImplementationB.cs:3:28:3:41 | "taint source" : String | MultiImplementationB.cs:5:39:5:39 | access to parameter x | access to parameter x | -| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | [b (line 3): false] access to local variable x | -| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | [b (line 3): true] access to local variable x | +| Splitting.cs:9:15:9:15 | access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | access to local variable x | access to local variable x | | Splitting.cs:11:19:11:19 | access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:11:19:11:19 | access to local variable x | access to local variable x | | Splitting.cs:21:21:21:33 | call to method Return | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:21:21:21:33 | call to method Return | call to method Return | -| Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | [b (line 24): false] access to local variable x | -| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | [b (line 24): true] access to local variable x | +| Splitting.cs:32:15:32:15 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | access to local variable x | access to local variable x | | Splitting.cs:34:19:34:19 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:34:19:34:19 | access to local variable x | access to local variable x | -| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s | +| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s | +| Splitting.cs:43:19:43:19 | access to local variable s | Splitting.cs:39:21:39:34 | "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s | access to local variable s | | Splitting.cs:50:19:50: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 | access to local variable s | | Splitting.cs:52:19:52: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 | access to local variable s | diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected index 005d84b1c97..ed80fa1e8b3 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected @@ -13,7 +13,9 @@ | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | -| Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | -| Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | +| Splitting.cs:8:19:8:19 | access to local variable x | +| Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:29:19:29:19 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 7dc5e3e4636..6bf236135a2 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -50,32 +50,24 @@ | LocalDataFlow.cs:76:13:76:17 | access to local variable sink6 | LocalDataFlow.cs:76:13:76:27 | SSA def(sink6) | | LocalDataFlow.cs:76:13:76:27 | SSA def(sink6) | LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | | LocalDataFlow.cs:76:22:76:26 | access to local variable sink5 | LocalDataFlow.cs:76:13:76:17 | access to local variable sink6 | -| LocalDataFlow.cs:77:15:77:19 | [post] access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | -| LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | +| LocalDataFlow.cs:77:15:77:19 | [post] access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | +| LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | | LocalDataFlow.cs:80:9:80:16 | access to local variable nonSink0 | LocalDataFlow.cs:80:9:80:29 | SSA def(nonSink0) | | LocalDataFlow.cs:80:9:80:29 | SSA def(nonSink0) | LocalDataFlow.cs:81:15:81:22 | access to local variable nonSink0 | | LocalDataFlow.cs:80:21:80:28 | access to local variable nonSink0 | LocalDataFlow.cs:80:9:80:16 | access to local variable nonSink0 | -| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) | -| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | -| LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | -| LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | -| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): false] access to parameter b | -| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): true] access to parameter b | -| LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | -| LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | -| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | -| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | SSA def(sink7) | +| LocalDataFlow.cs:84:13:84:35 | SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | access to local variable sink7 | +| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | access to parameter b | +| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | +| LocalDataFlow.cs:84:25:84:27 | "a" | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | +| LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | +| LocalDataFlow.cs:85:15:85:19 | [post] access to local variable sink7 | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | +| LocalDataFlow.cs:85:15:85:19 | access to local variable sink7 | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -930,115 +922,85 @@ | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | | Splitting.cs:3:28:3:34 | tainted | Splitting.cs:3:28:3:34 | SSA param(tainted) | | Splitting.cs:5:13:5:13 | access to local variable x | Splitting.cs:5:13:5:23 | SSA def(x) | -| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | -| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | +| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | +| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | access to local variable x | | Splitting.cs:5:17:5:23 | access to parameter tainted | Splitting.cs:5:13:5:13 | access to local variable x | -| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | [b (line 3): false] access to parameter b | -| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | [b (line 3): true] access to parameter b | -| Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | -| Splitting.cs:8:19:8:19 | [post] [b (line 3): true] access to local variable x | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | -| Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | -| Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | -| Splitting.cs:12:15:12:15 | [post] [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | access to parameter b | +| Splitting.cs:8:19:8:19 | [post] access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | +| Splitting.cs:8:19:8:19 | access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | +| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | +| Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:12:15:12:15 | [post] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:12:15:12:15 | access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | | Splitting.cs:17:18:17:18 | b | Splitting.cs:17:18:17:18 | SSA param(b) | | Splitting.cs:19:13:19:13 | access to local variable x | Splitting.cs:19:13:19:18 | SSA def(x) | -| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | [b (line 17): true] access to local variable x | -| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | +| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:20:13:20:13 | [input] SSA phi(x) | +| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | access to local variable x | | Splitting.cs:19:17:19:18 | "" | Splitting.cs:19:13:19:13 | access to local variable x | -| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | [b (line 17): false] access to parameter b | -| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | [b (line 17): true] access to parameter b | -| Splitting.cs:23:13:23:13 | access to local variable x | Splitting.cs:23:13:23:30 | [b (line 17): true] SSA def(x) | -| Splitting.cs:23:13:23:30 | [b (line 17): true] SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | -| Splitting.cs:23:17:23:30 | [b (line 17): true] "taint source" | Splitting.cs:23:13:23:13 | access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [post] [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [post] [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:20:13:20:13 | [input] SSA phi(x) | Splitting.cs:25:15:25:15 | access to local variable x | +| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | access to parameter b | +| Splitting.cs:23:13:23:13 | access to local variable x | Splitting.cs:23:13:23:30 | SSA def(x) | +| Splitting.cs:23:13:23:30 | SSA def(x) | Splitting.cs:25:15:25:15 | access to local variable x | +| Splitting.cs:23:17:23:30 | "taint source" | Splitting.cs:23:13:23:13 | access to local variable x | +| Splitting.cs:25:15:25:15 | [post] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | [post] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | | Splitting.cs:32:18:32:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | | Splitting.cs:32:18:32:18 | b | Splitting.cs:32:18:32:18 | SSA param(b) | | Splitting.cs:34:17:34:18 | "" | Splitting.cs:34:13:34:13 | access to local variable x | -| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | -| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | -| Splitting.cs:36:17:36:19 | [b (line 32): true] "a" | Splitting.cs:36:13:36:13 | access to local variable x | -| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | [b (line 32): false] SSA def(x) | -| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | [b (line 32): true] SSA def(x) | -| Splitting.cs:37:9:37:15 | [b (line 32): false] SSA def(x) | Splitting.cs:38:15:38:15 | [b (line 32): false] access to local variable x | -| Splitting.cs:37:9:37:15 | [b (line 32): true] SSA def(x) | Splitting.cs:38:15:38:15 | [b (line 32): true] access to local variable x | -| Splitting.cs:37:13:37:15 | [b (line 32): false] "b" | Splitting.cs:37:9:37:9 | access to local variable x | -| Splitting.cs:37:13:37:15 | [b (line 32): true] "b" | Splitting.cs:37:9:37:9 | access to local variable x | -| Splitting.cs:38:15:38:15 | [b (line 32): false] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | -| Splitting.cs:38:15:38:15 | [b (line 32): true] access to local variable x | Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | -| Splitting.cs:38:15:38:15 | [post] [b (line 32): false] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | -| Splitting.cs:38:15:38:15 | [post] [b (line 32): true] access to local variable x | Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | Splitting.cs:42:13:42:13 | [b (line 32): false] access to parameter b | -| Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | Splitting.cs:42:13:42:13 | [b (line 32): true] access to parameter b | -| Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | Splitting.cs:39:15:39:25 | [b (line 32): true] ... ? ... : ... | -| Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:19:39:19 | [post] [b (line 32): true] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:23:39:25 | [b (line 32): false] "c" | Splitting.cs:39:15:39:25 | [b (line 32): false] ... ? ... : ... | -| Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | Splitting.cs:40:15:40:23 | [b (line 32): false] (...) ... | -| Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | Splitting.cs:40:15:40:23 | [b (line 32): true] (...) ... | -| Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:15 | access to local variable x | -| Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:21 | [b (line 32): false] ... = ... | -| Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:15 | access to local variable x | -| Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:21 | [b (line 32): true] ... = ... | +| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | access to parameter b | +| Splitting.cs:36:17:36:19 | "a" | Splitting.cs:36:13:36:13 | access to local variable x | +| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | SSA def(x) | +| Splitting.cs:37:9:37:15 | SSA def(x) | Splitting.cs:38:15:38:15 | access to local variable x | +| Splitting.cs:37:13:37:15 | "b" | Splitting.cs:37:9:37:9 | access to local variable x | +| Splitting.cs:38:15:38:15 | [post] access to local variable x | Splitting.cs:39:19:39:19 | access to local variable x | +| Splitting.cs:38:15:38:15 | [post] access to local variable x | Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | +| Splitting.cs:38:15:38:15 | access to local variable x | Splitting.cs:39:19:39:19 | access to local variable x | +| Splitting.cs:38:15:38:15 | access to local variable x | Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | +| Splitting.cs:39:15:39:15 | access to parameter b | Splitting.cs:42:13:42:13 | access to parameter b | +| Splitting.cs:39:19:39:19 | [post] access to local variable x | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:39:19:39:19 | access to local variable x | Splitting.cs:39:15:39:25 | ... ? ... : ... | +| Splitting.cs:39:19:39:19 | access to local variable x | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:39:23:39:25 | "c" | Splitting.cs:39:15:39:25 | ... ? ... : ... | +| Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:40:23:40:23 | access to local variable x | Splitting.cs:40:15:40:23 | (...) ... | +| Splitting.cs:41:19:41:21 | "d" | Splitting.cs:41:15:41:15 | access to local variable x | +| Splitting.cs:41:19:41:21 | "d" | Splitting.cs:41:15:41:21 | ... = ... | | Splitting.cs:46:18:46:18 | SSA param(b) | Splitting.cs:49:13:49:13 | access to parameter b | | Splitting.cs:46:18:46:18 | b | Splitting.cs:46:18:46:18 | SSA param(b) | | Splitting.cs:48:13:48:13 | access to local variable x | Splitting.cs:48:13:48:18 | SSA def(x) | -| Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): false] access to local variable x | +| Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | access to local variable x | | Splitting.cs:48:17:48:18 | "" | Splitting.cs:48:13:48:13 | access to local variable x | -| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | [b (line 46): false] access to parameter b | -| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | [b (line 46): true] access to parameter b | -| Splitting.cs:50:13:50:13 | access to local variable x | Splitting.cs:50:13:50:21 | [b (line 46): true] SSA def(x) | -| Splitting.cs:50:13:50:21 | [b (line 46): true] SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): true] access to local variable x | -| Splitting.cs:50:17:50:21 | [b (line 46): true] "abc" | Splitting.cs:50:13:50:13 | access to local variable x | -| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | [b (line 46): false] SSA def(y) | -| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | [b (line 46): true] SSA def(y) | -| Splitting.cs:51:13:51:36 | [b (line 46): false] SSA def(y) | Splitting.cs:52:9:52:9 | [b (line 46): false] access to local variable y | -| Splitting.cs:51:13:51:36 | [b (line 46): true] SSA def(y) | Splitting.cs:52:9:52:9 | [b (line 46): true] access to local variable y | -| Splitting.cs:51:17:51:36 | [b (line 46): false] array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | -| Splitting.cs:51:17:51:36 | [b (line 46): true] array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | -| Splitting.cs:51:30:51:36 | [b (line 46): false] { ..., ... } | Splitting.cs:51:17:51:36 | [b (line 46): false] array creation of type String[] | -| Splitting.cs:51:30:51:36 | [b (line 46): true] { ..., ... } | Splitting.cs:51:17:51:36 | [b (line 46): true] array creation of type String[] | -| Splitting.cs:52:9:52:9 | [b (line 46): false] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:52:9:52:9 | [b (line 46): true] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:52:9:52:9 | [post] [b (line 46): false] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:52:9:52:9 | [post] [b (line 46): true] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:52:16:52:18 | [b (line 46): false] "b" | Splitting.cs:52:9:52:12 | access to array element | -| Splitting.cs:52:16:52:18 | [b (line 46): true] "b" | Splitting.cs:52:9:52:12 | access to array element | -| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | [b (line 46): false] SSA def(x) | -| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | [b (line 46): true] SSA def(x) | -| Splitting.cs:53:9:53:20 | [b (line 46): false] SSA def(x) | Splitting.cs:54:17:54:17 | [b (line 46): false] access to local variable x | -| Splitting.cs:53:9:53:20 | [b (line 46): true] SSA def(x) | Splitting.cs:54:17:54:17 | [b (line 46): true] access to local variable x | -| Splitting.cs:53:13:53:20 | [b (line 46): false] ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | -| Splitting.cs:53:13:53:20 | [b (line 46): true] ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | -| Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | Splitting.cs:57:17:57:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | Splitting.cs:57:17:57:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | [b (line 46): false] SSA def(z) | -| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | [b (line 46): true] SSA def(z) | -| Splitting.cs:54:13:54:23 | [b (line 46): false] SSA def(z) | Splitting.cs:55:14:55:14 | [b (line 46): false] access to local variable z | -| Splitting.cs:54:13:54:23 | [b (line 46): true] SSA def(z) | Splitting.cs:55:14:55:14 | [b (line 46): true] access to local variable z | -| Splitting.cs:54:17:54:17 | [b (line 46): false] access to local variable x | Splitting.cs:56:17:56:17 | [b (line 46): false] access to local variable x | -| Splitting.cs:54:17:54:17 | [b (line 46): true] access to local variable x | Splitting.cs:56:17:56:17 | [b (line 46): true] access to local variable x | -| Splitting.cs:54:17:54:23 | [b (line 46): false] ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | -| Splitting.cs:54:17:54:23 | [b (line 46): true] ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | -| Splitting.cs:55:13:55:14 | [b (line 46): false] !... | Splitting.cs:55:9:55:9 | access to local variable z | -| Splitting.cs:55:13:55:14 | [b (line 46): true] !... | Splitting.cs:55:9:55:9 | access to local variable z | -| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | [b (line 46): false] SSA def(x) | -| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | [b (line 46): true] SSA def(x) | -| Splitting.cs:56:9:56:19 | [b (line 46): false] SSA def(x) | Splitting.cs:57:14:57:14 | [b (line 46): false] access to local variable x | -| Splitting.cs:56:9:56:19 | [b (line 46): true] SSA def(x) | Splitting.cs:57:14:57:14 | [b (line 46): true] access to local variable x | -| Splitting.cs:56:13:56:19 | [b (line 46): false] $"..." | Splitting.cs:56:9:56:9 | access to local variable x | -| Splitting.cs:56:13:56:19 | [b (line 46): true] $"..." | Splitting.cs:56:9:56:9 | access to local variable x | -| Splitting.cs:57:13:57:24 | [b (line 46): false] access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | -| Splitting.cs:57:13:57:24 | [b (line 46): true] access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | -| Splitting.cs:57:17:57:17 | [b (line 46): false] access to local variable y | Splitting.cs:58:27:58:27 | [b (line 46): false] access to local variable y | -| Splitting.cs:57:17:57:17 | [b (line 46): true] access to local variable y | Splitting.cs:58:27:58:27 | [b (line 46): true] access to local variable y | -| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | [b (line 46): false] SSA def(s) | -| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | [b (line 46): true] SSA def(s) | -| Splitting.cs:58:22:58:22 | [b (line 46): false] SSA def(s) | Splitting.cs:59:19:59:19 | [b (line 46): false] access to local variable s | -| Splitting.cs:58:22:58:22 | [b (line 46): true] SSA def(s) | Splitting.cs:59:19:59:19 | [b (line 46): true] access to local variable s | +| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | access to parameter b | +| Splitting.cs:50:13:50:13 | access to local variable x | Splitting.cs:50:13:50:21 | SSA def(x) | +| Splitting.cs:50:13:50:21 | SSA def(x) | Splitting.cs:53:13:53:13 | access to local variable x | +| Splitting.cs:50:17:50:21 | "abc" | Splitting.cs:50:13:50:13 | access to local variable x | +| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | SSA def(y) | +| Splitting.cs:51:13:51:36 | SSA def(y) | Splitting.cs:52:9:52:9 | access to local variable y | +| Splitting.cs:51:17:51:36 | array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | +| Splitting.cs:51:30:51:36 | { ..., ... } | Splitting.cs:51:17:51:36 | array creation of type String[] | +| Splitting.cs:52:9:52:9 | [post] access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y | +| Splitting.cs:52:9:52:9 | access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y | +| Splitting.cs:52:16:52:18 | "b" | Splitting.cs:52:9:52:12 | access to array element | +| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | SSA def(x) | +| Splitting.cs:53:9:53:20 | SSA def(x) | Splitting.cs:54:17:54:17 | access to local variable x | +| Splitting.cs:53:13:53:20 | ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | +| Splitting.cs:53:17:53:17 | access to local variable y | Splitting.cs:57:17:57:17 | access to local variable y | +| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | SSA def(z) | +| Splitting.cs:54:13:54:23 | SSA def(z) | Splitting.cs:55:14:55:14 | access to local variable z | +| Splitting.cs:54:17:54:17 | access to local variable x | Splitting.cs:56:17:56:17 | access to local variable x | +| Splitting.cs:54:17:54:23 | ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | +| Splitting.cs:55:13:55:14 | !... | Splitting.cs:55:9:55:9 | access to local variable z | +| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | SSA def(x) | +| Splitting.cs:56:9:56:19 | SSA def(x) | Splitting.cs:57:14:57:14 | access to local variable x | +| Splitting.cs:56:13:56:19 | $"..." | Splitting.cs:56:9:56:9 | access to local variable x | +| Splitting.cs:57:13:57:24 | access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | +| Splitting.cs:57:17:57:17 | access to local variable y | Splitting.cs:58:27:58:27 | access to local variable y | +| Splitting.cs:58:22:58:22 | SSA def(s) | Splitting.cs:59:19:59:19 | access to local variable s | +| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | SSA def(s) | | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected index 37988a13066..372d0bfb3e1 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected @@ -2,7 +2,7 @@ | LocalDataFlow.cs:61:15:61:19 | access to local variable sink1 | | LocalDataFlow.cs:69:15:69:19 | access to local variable sink5 | | LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | +| LocalDataFlow.cs:85:15:85:19 | access to local variable sink7 | | LocalDataFlow.cs:93:15:93:19 | access to local variable sink8 | | LocalDataFlow.cs:101:15:101:19 | access to local variable sink9 | | LocalDataFlow.cs:109:15:109:20 | access to local variable sink15 | @@ -51,7 +51,9 @@ | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | -| Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | -| Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | +| Splitting.cs:8:19:8:19 | access to local variable x | +| Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:29:19:29:19 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index 360c0abd82d..1e9e48f5456 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -58,32 +58,24 @@ | LocalDataFlow.cs:76:13:76:17 | access to local variable sink6 | LocalDataFlow.cs:76:13:76:27 | SSA def(sink6) | | LocalDataFlow.cs:76:13:76:27 | SSA def(sink6) | LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | | LocalDataFlow.cs:76:22:76:26 | access to local variable sink5 | LocalDataFlow.cs:76:13:76:17 | access to local variable sink6 | -| LocalDataFlow.cs:77:15:77:19 | [post] access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | -| LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | +| LocalDataFlow.cs:77:15:77:19 | [post] access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | +| LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 | LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | | LocalDataFlow.cs:80:9:80:16 | access to local variable nonSink0 | LocalDataFlow.cs:80:9:80:29 | SSA def(nonSink0) | | LocalDataFlow.cs:80:9:80:29 | SSA def(nonSink0) | LocalDataFlow.cs:81:15:81:22 | access to local variable nonSink0 | | LocalDataFlow.cs:80:21:80:28 | access to local variable nonSink0 | LocalDataFlow.cs:80:9:80:16 | access to local variable nonSink0 | -| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) | -| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | -| LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | -| LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | -| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): false] access to parameter b | -| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): true] access to parameter b | -| LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | -| LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | -| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | -| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | -| LocalDataFlow.cs:85:15:85:19 | [post] [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | +| LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | LocalDataFlow.cs:84:13:84:35 | SSA def(sink7) | +| LocalDataFlow.cs:84:13:84:35 | SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | access to local variable sink7 | +| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | access to parameter b | +| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:17 | access to local variable sink7 | +| LocalDataFlow.cs:84:25:84:27 | "a" | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | +| LocalDataFlow.cs:84:31:84:35 | access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | +| LocalDataFlow.cs:85:15:85:19 | [post] access to local variable sink7 | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | +| LocalDataFlow.cs:85:15:85:19 | access to local variable sink7 | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -1060,138 +1052,97 @@ | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | | Splitting.cs:3:28:3:34 | tainted | Splitting.cs:3:28:3:34 | SSA param(tainted) | | Splitting.cs:5:13:5:13 | access to local variable x | Splitting.cs:5:13:5:23 | SSA def(x) | -| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | -| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:12:15:12:15 | [b (line 3): false] access to local variable x | +| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | +| Splitting.cs:5:13:5:23 | SSA def(x) | Splitting.cs:8:19:8:19 | access to local variable x | | Splitting.cs:5:17:5:23 | access to parameter tainted | Splitting.cs:5:13:5:13 | access to local variable x | -| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | [b (line 3): false] access to parameter b | -| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | [b (line 3): true] access to parameter b | -| Splitting.cs:8:19:8:19 | [b (line 3): true] access to local variable x | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | -| Splitting.cs:8:19:8:19 | [post] [b (line 3): true] access to local variable x | Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | -| Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | Splitting.cs:9:17:9:25 | [b (line 3): true] ... == ... | -| Splitting.cs:9:17:9:17 | [b (line 3): true] access to local variable x | Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | -| Splitting.cs:12:15:12:15 | [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | -| Splitting.cs:12:15:12:15 | [post] [b (line 3): true] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | access to parameter b | +| Splitting.cs:8:19:8:19 | [post] access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | +| Splitting.cs:8:19:8:19 | access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | +| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | ... == ... | +| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | +| Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:12:15:12:15 | [post] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | +| Splitting.cs:12:15:12:15 | access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | | Splitting.cs:17:18:17:18 | b | Splitting.cs:17:18:17:18 | SSA param(b) | | Splitting.cs:19:13:19:13 | access to local variable x | Splitting.cs:19:13:19:18 | SSA def(x) | -| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | [b (line 17): true] access to local variable x | -| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | +| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:20:13:20:13 | [input] SSA phi(x) | +| Splitting.cs:19:13:19:18 | SSA def(x) | Splitting.cs:22:19:22:19 | access to local variable x | | Splitting.cs:19:17:19:18 | "" | Splitting.cs:19:13:19:13 | access to local variable x | -| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | [b (line 17): false] access to parameter b | -| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | [b (line 17): true] access to parameter b | -| Splitting.cs:23:13:23:13 | access to local variable x | Splitting.cs:23:13:23:30 | [b (line 17): true] SSA def(x) | -| Splitting.cs:23:13:23:30 | [b (line 17): true] SSA def(x) | Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | -| Splitting.cs:23:17:23:30 | [b (line 17): true] "taint source" | Splitting.cs:23:13:23:13 | access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [post] [b (line 17): false] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | -| Splitting.cs:25:15:25:15 | [post] [b (line 17): true] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:20:13:20:13 | [input] SSA phi(x) | Splitting.cs:25:15:25:15 | access to local variable x | +| Splitting.cs:20:13:20:13 | access to parameter b | Splitting.cs:26:13:26:13 | access to parameter b | +| Splitting.cs:23:13:23:13 | access to local variable x | Splitting.cs:23:13:23:30 | SSA def(x) | +| Splitting.cs:23:13:23:30 | SSA def(x) | Splitting.cs:25:15:25:15 | access to local variable x | +| Splitting.cs:23:17:23:30 | "taint source" | Splitting.cs:23:13:23:13 | access to local variable x | +| Splitting.cs:25:15:25:15 | [post] access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | [post] access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | Splitting.cs:27:19:27:19 | access to local variable x | +| Splitting.cs:25:15:25:15 | access to local variable x | Splitting.cs:29:19:29:19 | access to local variable x | | Splitting.cs:32:18:32:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | | Splitting.cs:32:18:32:18 | b | Splitting.cs:32:18:32:18 | SSA param(b) | | Splitting.cs:34:17:34:18 | "" | Splitting.cs:34:13:34:13 | access to local variable x | -| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | -| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | -| Splitting.cs:36:17:36:19 | [b (line 32): true] "a" | Splitting.cs:36:13:36:13 | access to local variable x | -| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | [b (line 32): false] SSA def(x) | -| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | [b (line 32): true] SSA def(x) | -| Splitting.cs:37:9:37:15 | [b (line 32): false] SSA def(x) | Splitting.cs:38:15:38:15 | [b (line 32): false] access to local variable x | -| Splitting.cs:37:9:37:15 | [b (line 32): true] SSA def(x) | Splitting.cs:38:15:38:15 | [b (line 32): true] access to local variable x | -| Splitting.cs:37:13:37:15 | [b (line 32): false] "b" | Splitting.cs:37:9:37:9 | access to local variable x | -| Splitting.cs:37:13:37:15 | [b (line 32): true] "b" | Splitting.cs:37:9:37:9 | access to local variable x | -| Splitting.cs:38:15:38:15 | [b (line 32): false] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | -| Splitting.cs:38:15:38:15 | [b (line 32): true] access to local variable x | Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | -| Splitting.cs:38:15:38:15 | [post] [b (line 32): false] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | -| Splitting.cs:38:15:38:15 | [post] [b (line 32): true] access to local variable x | Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:15:39:15 | [b (line 32): false] access to parameter b | Splitting.cs:42:13:42:13 | [b (line 32): false] access to parameter b | -| Splitting.cs:39:15:39:15 | [b (line 32): true] access to parameter b | Splitting.cs:42:13:42:13 | [b (line 32): true] access to parameter b | -| Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | Splitting.cs:39:15:39:25 | [b (line 32): true] ... ? ... : ... | -| Splitting.cs:39:19:39:19 | [b (line 32): true] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:19:39:19 | [post] [b (line 32): true] access to local variable x | Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | -| Splitting.cs:39:23:39:25 | [b (line 32): false] "c" | Splitting.cs:39:15:39:25 | [b (line 32): false] ... ? ... : ... | -| Splitting.cs:40:23:40:23 | [b (line 32): false] access to local variable x | Splitting.cs:40:15:40:23 | [b (line 32): false] (...) ... | -| Splitting.cs:40:23:40:23 | [b (line 32): true] access to local variable x | Splitting.cs:40:15:40:23 | [b (line 32): true] (...) ... | -| Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:15 | access to local variable x | -| Splitting.cs:41:19:41:21 | [b (line 32): false] "d" | Splitting.cs:41:15:41:21 | [b (line 32): false] ... = ... | -| Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:15 | access to local variable x | -| Splitting.cs:41:19:41:21 | [b (line 32): true] "d" | Splitting.cs:41:15:41:21 | [b (line 32): true] ... = ... | +| Splitting.cs:35:13:35:13 | access to parameter b | Splitting.cs:39:15:39:15 | access to parameter b | +| Splitting.cs:36:17:36:19 | "a" | Splitting.cs:36:13:36:13 | access to local variable x | +| Splitting.cs:37:9:37:9 | access to local variable x | Splitting.cs:37:9:37:15 | SSA def(x) | +| Splitting.cs:37:9:37:15 | SSA def(x) | Splitting.cs:38:15:38:15 | access to local variable x | +| Splitting.cs:37:13:37:15 | "b" | Splitting.cs:37:9:37:9 | access to local variable x | +| Splitting.cs:38:15:38:15 | [post] access to local variable x | Splitting.cs:39:19:39:19 | access to local variable x | +| Splitting.cs:38:15:38:15 | [post] access to local variable x | Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | +| Splitting.cs:38:15:38:15 | access to local variable x | Splitting.cs:39:19:39:19 | access to local variable x | +| Splitting.cs:38:15:38:15 | access to local variable x | Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | +| Splitting.cs:39:15:39:15 | access to parameter b | Splitting.cs:42:13:42:13 | access to parameter b | +| Splitting.cs:39:19:39:19 | [post] access to local variable x | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:39:19:39:19 | access to local variable x | Splitting.cs:39:15:39:25 | ... ? ... : ... | +| Splitting.cs:39:19:39:19 | access to local variable x | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:39:23:39:25 | "c" | Splitting.cs:39:15:39:25 | ... ? ... : ... | +| Splitting.cs:39:23:39:25 | [input] SSA phi read(x) | Splitting.cs:40:23:40:23 | access to local variable x | +| Splitting.cs:40:23:40:23 | access to local variable x | Splitting.cs:40:15:40:23 | (...) ... | +| Splitting.cs:41:19:41:21 | "d" | Splitting.cs:41:15:41:15 | access to local variable x | +| Splitting.cs:41:19:41:21 | "d" | Splitting.cs:41:15:41:21 | ... = ... | | Splitting.cs:46:18:46:18 | SSA param(b) | Splitting.cs:49:13:49:13 | access to parameter b | | Splitting.cs:46:18:46:18 | b | Splitting.cs:46:18:46:18 | SSA param(b) | | Splitting.cs:48:13:48:13 | access to local variable x | Splitting.cs:48:13:48:18 | SSA def(x) | -| Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): false] access to local variable x | +| Splitting.cs:48:13:48:18 | SSA def(x) | Splitting.cs:53:13:53:13 | access to local variable x | | Splitting.cs:48:17:48:18 | "" | Splitting.cs:48:13:48:13 | access to local variable x | -| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | [b (line 46): false] access to parameter b | -| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | [b (line 46): true] access to parameter b | -| Splitting.cs:50:13:50:13 | access to local variable x | Splitting.cs:50:13:50:21 | [b (line 46): true] SSA def(x) | -| Splitting.cs:50:13:50:21 | [b (line 46): true] SSA def(x) | Splitting.cs:53:13:53:13 | [b (line 46): true] access to local variable x | -| Splitting.cs:50:17:50:21 | [b (line 46): true] "abc" | Splitting.cs:50:13:50:13 | access to local variable x | -| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | [b (line 46): false] SSA def(y) | -| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | [b (line 46): true] SSA def(y) | -| Splitting.cs:51:13:51:36 | [b (line 46): false] SSA def(y) | Splitting.cs:52:9:52:9 | [b (line 46): false] access to local variable y | -| Splitting.cs:51:13:51:36 | [b (line 46): true] SSA def(y) | Splitting.cs:52:9:52:9 | [b (line 46): true] access to local variable y | -| Splitting.cs:51:17:51:36 | [b (line 46): false] array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | -| Splitting.cs:51:17:51:36 | [b (line 46): true] array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | -| Splitting.cs:51:30:51:36 | [b (line 46): false] { ..., ... } | Splitting.cs:51:17:51:36 | [b (line 46): false] array creation of type String[] | -| Splitting.cs:51:30:51:36 | [b (line 46): true] { ..., ... } | Splitting.cs:51:17:51:36 | [b (line 46): true] array creation of type String[] | -| Splitting.cs:51:32:51:34 | [b (line 46): false] "a" | Splitting.cs:51:30:51:36 | [b (line 46): false] { ..., ... } | -| Splitting.cs:51:32:51:34 | [b (line 46): true] "a" | Splitting.cs:51:30:51:36 | [b (line 46): true] { ..., ... } | -| Splitting.cs:52:9:52:9 | [b (line 46): false] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:52:9:52:9 | [b (line 46): true] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:52:9:52:9 | [post] [b (line 46): false] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:52:9:52:9 | [post] [b (line 46): true] access to local variable y | Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:52:16:52:18 | [b (line 46): false] "b" | Splitting.cs:52:9:52:9 | [post] [b (line 46): false] access to local variable y | -| Splitting.cs:52:16:52:18 | [b (line 46): false] "b" | Splitting.cs:52:9:52:12 | access to array element | -| Splitting.cs:52:16:52:18 | [b (line 46): true] "b" | Splitting.cs:52:9:52:9 | [post] [b (line 46): true] access to local variable y | -| Splitting.cs:52:16:52:18 | [b (line 46): true] "b" | Splitting.cs:52:9:52:12 | access to array element | -| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | [b (line 46): false] SSA def(x) | -| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | [b (line 46): true] SSA def(x) | -| Splitting.cs:53:9:53:20 | [b (line 46): false] SSA def(x) | Splitting.cs:54:17:54:17 | [b (line 46): false] access to local variable x | -| Splitting.cs:53:9:53:20 | [b (line 46): true] SSA def(x) | Splitting.cs:54:17:54:17 | [b (line 46): true] access to local variable x | -| Splitting.cs:53:13:53:13 | [b (line 46): false] access to local variable x | Splitting.cs:53:13:53:20 | [b (line 46): false] ... + ... | -| Splitting.cs:53:13:53:13 | [b (line 46): true] access to local variable x | Splitting.cs:53:13:53:20 | [b (line 46): true] ... + ... | -| Splitting.cs:53:13:53:20 | [b (line 46): false] ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | -| Splitting.cs:53:13:53:20 | [b (line 46): true] ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | -| Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | Splitting.cs:53:17:53:20 | [b (line 46): false] access to array element | -| Splitting.cs:53:17:53:17 | [b (line 46): false] access to local variable y | Splitting.cs:57:17:57:17 | [b (line 46): false] access to local variable y | -| Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | Splitting.cs:53:17:53:20 | [b (line 46): true] access to array element | -| Splitting.cs:53:17:53:17 | [b (line 46): true] access to local variable y | Splitting.cs:57:17:57:17 | [b (line 46): true] access to local variable y | -| Splitting.cs:53:17:53:20 | [b (line 46): false] access to array element | Splitting.cs:53:13:53:20 | [b (line 46): false] ... + ... | -| Splitting.cs:53:17:53:20 | [b (line 46): true] access to array element | Splitting.cs:53:13:53:20 | [b (line 46): true] ... + ... | -| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | [b (line 46): false] SSA def(z) | -| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | [b (line 46): true] SSA def(z) | -| Splitting.cs:54:13:54:23 | [b (line 46): false] SSA def(z) | Splitting.cs:55:14:55:14 | [b (line 46): false] access to local variable z | -| Splitting.cs:54:13:54:23 | [b (line 46): true] SSA def(z) | Splitting.cs:55:14:55:14 | [b (line 46): true] access to local variable z | -| Splitting.cs:54:17:54:17 | [b (line 46): false] access to local variable x | Splitting.cs:54:17:54:23 | [b (line 46): false] ... == ... | -| Splitting.cs:54:17:54:17 | [b (line 46): false] access to local variable x | Splitting.cs:56:17:56:17 | [b (line 46): false] access to local variable x | -| Splitting.cs:54:17:54:17 | [b (line 46): true] access to local variable x | Splitting.cs:54:17:54:23 | [b (line 46): true] ... == ... | -| Splitting.cs:54:17:54:17 | [b (line 46): true] access to local variable x | Splitting.cs:56:17:56:17 | [b (line 46): true] access to local variable x | -| Splitting.cs:54:17:54:23 | [b (line 46): false] ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | -| Splitting.cs:54:17:54:23 | [b (line 46): true] ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | -| Splitting.cs:55:13:55:14 | [b (line 46): false] !... | Splitting.cs:55:9:55:9 | access to local variable z | -| Splitting.cs:55:13:55:14 | [b (line 46): true] !... | Splitting.cs:55:9:55:9 | access to local variable z | -| Splitting.cs:55:14:55:14 | [b (line 46): false] access to local variable z | Splitting.cs:55:13:55:14 | [b (line 46): false] !... | -| Splitting.cs:55:14:55:14 | [b (line 46): true] access to local variable z | Splitting.cs:55:13:55:14 | [b (line 46): true] !... | -| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | [b (line 46): false] SSA def(x) | -| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | [b (line 46): true] SSA def(x) | -| Splitting.cs:56:9:56:19 | [b (line 46): false] SSA def(x) | Splitting.cs:57:14:57:14 | [b (line 46): false] access to local variable x | -| Splitting.cs:56:9:56:19 | [b (line 46): true] SSA def(x) | Splitting.cs:57:14:57:14 | [b (line 46): true] access to local variable x | -| Splitting.cs:56:13:56:19 | [b (line 46): false] $"..." | Splitting.cs:56:9:56:9 | access to local variable x | -| Splitting.cs:56:13:56:19 | [b (line 46): true] $"..." | Splitting.cs:56:9:56:9 | access to local variable x | -| Splitting.cs:56:15:56:15 | [b (line 46): false] "c" | Splitting.cs:56:13:56:19 | [b (line 46): false] $"..." | -| Splitting.cs:56:15:56:15 | [b (line 46): true] "c" | Splitting.cs:56:13:56:19 | [b (line 46): true] $"..." | -| Splitting.cs:56:16:56:18 | [b (line 46): false] {...} | Splitting.cs:56:13:56:19 | [b (line 46): false] $"..." | -| Splitting.cs:56:16:56:18 | [b (line 46): true] {...} | Splitting.cs:56:13:56:19 | [b (line 46): true] $"..." | -| Splitting.cs:56:17:56:17 | [b (line 46): false] access to local variable x | Splitting.cs:56:16:56:18 | [b (line 46): false] {...} | -| Splitting.cs:56:17:56:17 | [b (line 46): true] access to local variable x | Splitting.cs:56:16:56:18 | [b (line 46): true] {...} | -| Splitting.cs:57:13:57:24 | [b (line 46): false] access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | -| Splitting.cs:57:13:57:24 | [b (line 46): true] access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | -| Splitting.cs:57:17:57:17 | [b (line 46): false] access to local variable y | Splitting.cs:58:27:58:27 | [b (line 46): false] access to local variable y | -| Splitting.cs:57:17:57:17 | [b (line 46): true] access to local variable y | Splitting.cs:58:27:58:27 | [b (line 46): true] access to local variable y | -| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | [b (line 46): false] SSA def(s) | -| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | [b (line 46): true] SSA def(s) | -| Splitting.cs:58:22:58:22 | [b (line 46): false] SSA def(s) | Splitting.cs:59:19:59:19 | [b (line 46): false] access to local variable s | -| Splitting.cs:58:22:58:22 | [b (line 46): true] SSA def(s) | Splitting.cs:59:19:59:19 | [b (line 46): true] access to local variable s | -| Splitting.cs:58:27:58:27 | [b (line 46): false] access to local variable y | Splitting.cs:58:22:58:22 | [b (line 46): false] SSA def(s) | -| Splitting.cs:58:27:58:27 | [b (line 46): true] access to local variable y | Splitting.cs:58:22:58:22 | [b (line 46): true] SSA def(s) | +| Splitting.cs:49:13:49:13 | access to parameter b | Splitting.cs:60:13:60:13 | access to parameter b | +| Splitting.cs:50:13:50:13 | access to local variable x | Splitting.cs:50:13:50:21 | SSA def(x) | +| Splitting.cs:50:13:50:21 | SSA def(x) | Splitting.cs:53:13:53:13 | access to local variable x | +| Splitting.cs:50:17:50:21 | "abc" | Splitting.cs:50:13:50:13 | access to local variable x | +| Splitting.cs:51:13:51:13 | access to local variable y | Splitting.cs:51:13:51:36 | SSA def(y) | +| Splitting.cs:51:13:51:36 | SSA def(y) | Splitting.cs:52:9:52:9 | access to local variable y | +| Splitting.cs:51:17:51:36 | array creation of type String[] | Splitting.cs:51:13:51:13 | access to local variable y | +| Splitting.cs:51:30:51:36 | { ..., ... } | Splitting.cs:51:17:51:36 | array creation of type String[] | +| Splitting.cs:51:32:51:34 | "a" | Splitting.cs:51:30:51:36 | { ..., ... } | +| Splitting.cs:52:9:52:9 | [post] access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y | +| Splitting.cs:52:9:52:9 | access to local variable y | Splitting.cs:53:17:53:17 | access to local variable y | +| Splitting.cs:52:16:52:18 | "b" | Splitting.cs:52:9:52:9 | [post] access to local variable y | +| Splitting.cs:52:16:52:18 | "b" | Splitting.cs:52:9:52:12 | access to array element | +| Splitting.cs:53:9:53:9 | access to local variable x | Splitting.cs:53:9:53:20 | SSA def(x) | +| Splitting.cs:53:9:53:20 | SSA def(x) | Splitting.cs:54:17:54:17 | access to local variable x | +| Splitting.cs:53:13:53:13 | access to local variable x | Splitting.cs:53:13:53:20 | ... + ... | +| Splitting.cs:53:13:53:20 | ... + ... | Splitting.cs:53:9:53:9 | access to local variable x | +| Splitting.cs:53:17:53:17 | access to local variable y | Splitting.cs:53:17:53:20 | access to array element | +| Splitting.cs:53:17:53:17 | access to local variable y | Splitting.cs:57:17:57:17 | access to local variable y | +| Splitting.cs:53:17:53:20 | access to array element | Splitting.cs:53:13:53:20 | ... + ... | +| Splitting.cs:54:13:54:13 | access to local variable z | Splitting.cs:54:13:54:23 | SSA def(z) | +| Splitting.cs:54:13:54:23 | SSA def(z) | Splitting.cs:55:14:55:14 | access to local variable z | +| Splitting.cs:54:17:54:17 | access to local variable x | Splitting.cs:54:17:54:23 | ... == ... | +| Splitting.cs:54:17:54:17 | access to local variable x | Splitting.cs:56:17:56:17 | access to local variable x | +| Splitting.cs:54:17:54:23 | ... == ... | Splitting.cs:54:13:54:13 | access to local variable z | +| Splitting.cs:55:13:55:14 | !... | Splitting.cs:55:9:55:9 | access to local variable z | +| Splitting.cs:55:14:55:14 | access to local variable z | Splitting.cs:55:13:55:14 | !... | +| Splitting.cs:56:9:56:9 | access to local variable x | Splitting.cs:56:9:56:19 | SSA def(x) | +| Splitting.cs:56:9:56:19 | SSA def(x) | Splitting.cs:57:14:57:14 | access to local variable x | +| Splitting.cs:56:13:56:19 | $"..." | Splitting.cs:56:9:56:9 | access to local variable x | +| Splitting.cs:56:15:56:15 | "c" | Splitting.cs:56:13:56:19 | $"..." | +| Splitting.cs:56:16:56:18 | {...} | Splitting.cs:56:13:56:19 | $"..." | +| Splitting.cs:56:17:56:17 | access to local variable x | Splitting.cs:56:16:56:18 | {...} | +| Splitting.cs:57:13:57:24 | access to field Item1 | Splitting.cs:57:9:57:9 | access to local variable x | +| Splitting.cs:57:17:57:17 | access to local variable y | Splitting.cs:58:27:58:27 | access to local variable y | +| Splitting.cs:58:22:58:22 | SSA def(s) | Splitting.cs:59:19:59:19 | access to local variable s | +| Splitting.cs:58:22:58:22 | String s | Splitting.cs:58:22:58:22 | SSA def(s) | +| Splitting.cs:58:27:58:27 | access to local variable y | Splitting.cs:58:22:58:22 | SSA def(s) | | UseUseExplosion.cs:21:10:21:10 | SSA entry def(this.Prop) | UseUseExplosion.cs:24:13:24:16 | access to property Prop | | UseUseExplosion.cs:21:10:21:10 | this | UseUseExplosion.cs:24:13:24:16 | this access | | UseUseExplosion.cs:23:13:23:13 | access to local variable x | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected index eb08a808522..ac03ba8b8f3 100644 --- a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected @@ -89,26 +89,24 @@ | ModulusAnalysis.cs:47:37:47:38 | 11 | 0 | 11 | 0 | | ModulusAnalysis.cs:48:34:48:34 | access to local variable l | 0 | 1 | 4 | | ModulusAnalysis.cs:48:34:48:34 | access to local variable l | SSA def(l) | 0 | 0 | -| ModulusAnalysis.cs:52:13:52:25 | [cond2 (line 9): true] ... = ... | 0 | 3 | 4 | -| ModulusAnalysis.cs:52:17:52:17 | [cond2 (line 9): true] access to parameter i | SSA param(i) | 0 | 0 | -| ModulusAnalysis.cs:52:17:52:21 | [cond2 (line 9): true] ... * ... | 0 | 0 | 4 | -| ModulusAnalysis.cs:52:17:52:25 | [cond2 (line 9): true] ... + ... | 0 | 3 | 4 | -| ModulusAnalysis.cs:52:21:52:21 | [cond2 (line 9): true] 4 | 0 | 4 | 0 | -| ModulusAnalysis.cs:52:25:52:25 | [cond2 (line 9): true] 3 | 0 | 3 | 0 | -| ModulusAnalysis.cs:56:13:56:25 | [cond2 (line 9): false] ... = ... | 0 | 7 | 8 | -| ModulusAnalysis.cs:56:17:56:17 | [cond2 (line 9): false] access to parameter i | SSA param(i) | 0 | 0 | -| ModulusAnalysis.cs:56:17:56:21 | [cond2 (line 9): false] ... * ... | 0 | 0 | 8 | -| ModulusAnalysis.cs:56:17:56:25 | [cond2 (line 9): false] ... + ... | 0 | 7 | 8 | -| ModulusAnalysis.cs:56:21:56:21 | [cond2 (line 9): false] 8 | 0 | 8 | 0 | -| ModulusAnalysis.cs:56:25:56:25 | [cond2 (line 9): false] 7 | 0 | 7 | 0 | -| ModulusAnalysis.cs:58:34:58:34 | [cond2 (line 9): false] access to local variable j | 0 | 7 | 8 | -| ModulusAnalysis.cs:58:34:58:34 | [cond2 (line 9): false] access to local variable j | [cond2 (line 9): false] SSA def(j) | 0 | 0 | -| ModulusAnalysis.cs:58:34:58:34 | [cond2 (line 9): true] access to local variable j | 0 | 3 | 4 | -| ModulusAnalysis.cs:58:34:58:34 | [cond2 (line 9): true] access to local variable j | [cond2 (line 9): true] SSA def(j) | 0 | 0 | +| ModulusAnalysis.cs:52:13:52:25 | ... = ... | 0 | 3 | 4 | +| ModulusAnalysis.cs:52:17:52:17 | access to parameter i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.cs:52:17:52:21 | ... * ... | 0 | 0 | 4 | +| ModulusAnalysis.cs:52:17:52:25 | ... + ... | 0 | 3 | 4 | +| ModulusAnalysis.cs:52:21:52:21 | 4 | 0 | 4 | 0 | +| ModulusAnalysis.cs:52:25:52:25 | 3 | 0 | 3 | 0 | +| ModulusAnalysis.cs:56:13:56:25 | ... = ... | 0 | 7 | 8 | +| ModulusAnalysis.cs:56:17:56:17 | access to parameter i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.cs:56:17:56:21 | ... * ... | 0 | 0 | 8 | +| ModulusAnalysis.cs:56:17:56:25 | ... + ... | 0 | 7 | 8 | +| ModulusAnalysis.cs:56:21:56:21 | 8 | 0 | 8 | 0 | +| ModulusAnalysis.cs:56:25:56:25 | 7 | 0 | 7 | 0 | +| ModulusAnalysis.cs:58:34:58:34 | access to local variable j | 0 | 3 | 4 | +| ModulusAnalysis.cs:58:34:58:34 | access to local variable j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.cs:62:38:62:38 | access to local variable j | 0 | 3 | 4 | -| ModulusAnalysis.cs:62:38:62:38 | access to local variable j | [cond2 (line 9): true] SSA def(j) | 0 | 0 | -| ModulusAnalysis.cs:66:38:66:38 | access to local variable j | 0 | 7 | 8 | -| ModulusAnalysis.cs:66:38:66:38 | access to local variable j | [cond2 (line 9): false] SSA def(j) | 0 | 0 | +| ModulusAnalysis.cs:62:38:62:38 | access to local variable j | SSA phi(j) | 0 | 0 | +| ModulusAnalysis.cs:66:38:66:38 | access to local variable j | 0 | 3 | 4 | +| ModulusAnalysis.cs:66:38:66:38 | access to local variable j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.cs:69:17:69:18 | 64 | 0 | 64 | 0 | | ModulusAnalysis.cs:70:34:70:34 | access to local variable t | 0 | 64 | 0 | | ModulusAnalysis.cs:70:34:70:34 | access to local variable t | SSA def(t) | 0 | 0 | @@ -131,22 +129,20 @@ | ModulusAnalysis.cs:75:25:75:25 | 3 | 0 | 3 | 0 | | ModulusAnalysis.cs:77:38:77:38 | access to parameter x | 0 | 3 | 16 | | ModulusAnalysis.cs:77:38:77:38 | access to parameter x | SSA param(x) | 0 | 0 | -| ModulusAnalysis.cs:80:9:82:23 | [cond3 (line 9): false] ... = ... | 0 | 7 | 8 | -| ModulusAnalysis.cs:80:9:82:23 | [cond3 (line 9): true] ... = ... | 0 | 3 | 4 | -| ModulusAnalysis.cs:80:13:82:23 | [cond3 (line 9): false] ... ? ... : ... | 0 | 7 | 8 | -| ModulusAnalysis.cs:80:13:82:23 | [cond3 (line 9): true] ... ? ... : ... | 0 | 3 | 4 | -| ModulusAnalysis.cs:81:15:81:15 | [cond3 (line 9): true] access to parameter i | SSA param(i) | 0 | 0 | -| ModulusAnalysis.cs:81:15:81:19 | [cond3 (line 9): true] ... * ... | 0 | 0 | 4 | -| ModulusAnalysis.cs:81:15:81:23 | [cond3 (line 9): true] ... + ... | 0 | 3 | 4 | -| ModulusAnalysis.cs:81:19:81:19 | [cond3 (line 9): true] 4 | 0 | 4 | 0 | -| ModulusAnalysis.cs:81:23:81:23 | [cond3 (line 9): true] 3 | 0 | 3 | 0 | -| ModulusAnalysis.cs:82:15:82:15 | [cond3 (line 9): false] access to parameter i | SSA param(i) | 0 | 0 | -| ModulusAnalysis.cs:82:15:82:19 | [cond3 (line 9): false] ... * ... | 0 | 0 | 8 | -| ModulusAnalysis.cs:82:15:82:23 | [cond3 (line 9): false] ... + ... | 0 | 7 | 8 | -| ModulusAnalysis.cs:82:19:82:19 | [cond3 (line 9): false] 8 | 0 | 8 | 0 | -| ModulusAnalysis.cs:82:23:82:23 | [cond3 (line 9): false] 7 | 0 | 7 | 0 | -| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | 0 | 7 | 8 | -| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | [cond3 (line 9): false] SSA def(j) | 0 | 0 | +| ModulusAnalysis.cs:80:9:82:23 | ... = ... | 0 | 3 | 4 | +| ModulusAnalysis.cs:80:13:82:23 | ... ? ... : ... | 0 | 3 | 4 | +| ModulusAnalysis.cs:81:15:81:15 | access to parameter i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.cs:81:15:81:19 | ... * ... | 0 | 0 | 4 | +| ModulusAnalysis.cs:81:15:81:23 | ... + ... | 0 | 3 | 4 | +| ModulusAnalysis.cs:81:19:81:19 | 4 | 0 | 4 | 0 | +| ModulusAnalysis.cs:81:23:81:23 | 3 | 0 | 3 | 0 | +| ModulusAnalysis.cs:82:15:82:15 | access to parameter i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.cs:82:15:82:19 | ... * ... | 0 | 0 | 8 | +| ModulusAnalysis.cs:82:15:82:23 | ... + ... | 0 | 7 | 8 | +| ModulusAnalysis.cs:82:19:82:19 | 8 | 0 | 8 | 0 | +| ModulusAnalysis.cs:82:23:82:23 | 7 | 0 | 7 | 0 | +| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | 0 | 3 | 4 | +| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | SSA def(j) | 0 | 0 | | ModulusAnalysis.cs:89:22:89:22 | 0 | 0 | 0 | 0 | | ModulusAnalysis.cs:89:25:89:25 | access to local variable i | SSA phi(i) | 0 | 0 | | ModulusAnalysis.cs:89:29:89:31 | access to parameter cap | SSA param(cap) | 0 | 0 | diff --git a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected index 69a73d52508..b0d97c4d6e4 100644 --- a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected @@ -236,15 +236,11 @@ | SignAnalysis.cs:464:9:464:9 | access to local variable x | positive | | SignAnalysis.cs:464:9:464:11 | ...++ | positive | | SignAnalysis.cs:465:34:465:34 | access to local variable x | strictlyPositive | -| SignAnalysis.cs:470:21:470:21 | [b (line 468): true] 1 | strictlyPositive | -| SignAnalysis.cs:470:25:470:26 | [b (line 468): false] -... | strictlyNegative | -| SignAnalysis.cs:470:26:470:26 | [b (line 468): false] 1 | strictlyPositive | -| SignAnalysis.cs:480:16:480:20 | [b (line 477): true] ... = ... | strictlyPositive | -| SignAnalysis.cs:480:20:480:20 | [b (line 477): true] 1 | strictlyPositive | -| SignAnalysis.cs:480:28:480:33 | [b (line 477): false] ... = ... | strictlyNegative | -| SignAnalysis.cs:480:32:480:33 | [b (line 477): false] -... | strictlyNegative | -| SignAnalysis.cs:480:33:480:33 | [b (line 477): false] 1 | strictlyPositive | -| SignAnalysis.cs:482:34:482:34 | [b (line 477): false] access to local variable x | strictlyNegative | -| SignAnalysis.cs:482:34:482:34 | [b (line 477): true] access to local variable x | strictlyPositive | -| SignAnalysis.cs:485:38:485:38 | access to local variable x | strictlyPositive | -| SignAnalysis.cs:487:38:487:38 | access to local variable x | strictlyNegative | +| SignAnalysis.cs:470:21:470:21 | 1 | strictlyPositive | +| SignAnalysis.cs:470:25:470:26 | -... | strictlyNegative | +| SignAnalysis.cs:470:26:470:26 | 1 | strictlyPositive | +| SignAnalysis.cs:480:16:480:20 | ... = ... | strictlyPositive | +| SignAnalysis.cs:480:20:480:20 | 1 | strictlyPositive | +| SignAnalysis.cs:480:28:480:33 | ... = ... | strictlyNegative | +| SignAnalysis.cs:480:32:480:33 | -... | strictlyNegative | +| SignAnalysis.cs:480:33:480:33 | 1 | strictlyPositive | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected index 8cbd5e6b1b6..4834c19b8b5 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected @@ -33,8 +33,10 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:7:13:7:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:10:13:10:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:46:13:46:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:49:13:49:19 | SSA def(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:25:16:25:16 | SSA phi(param1) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected index 7fa4581f5aa..009e22c52f8 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected @@ -35,7 +35,6 @@ | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | -| Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | | Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | @@ -243,16 +242,16 @@ | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | | Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | | Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected index 02e4624488e..cfe3a9992c6 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected @@ -35,7 +35,6 @@ | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | b | | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | -| Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:9:25:30 | call to method Out | | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:9:25:30 | call to method Out | | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | @@ -52,9 +51,12 @@ | DefUse.cs:13:13:13:18 | SSA def(y) | DefUse.cs:13:13:13:18 | ... = ... | | DefUse.cs:18:13:18:18 | SSA def(y) | DefUse.cs:18:13:18:18 | ... = ... | | DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:19:13:19:18 | ... = ... | +| DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:23:9:23:15 | ...; | +| DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:23:9:23:15 | ...; | | DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:28:13:28:18 | ... = ... | | DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:29:13:29:18 | ... = ... | | DefUse.cs:39:13:39:18 | SSA def(y) | DefUse.cs:39:13:39:18 | ... = ... | +| DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:42:9:42:15 | ...; | | DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:44:13:44:17 | Int32 z = ... | | DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:47:9:47:24 | call to method outMethod | | DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:50:9:50:24 | call to method refMethod | @@ -65,12 +67,14 @@ | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | TestClass tc = ... | | DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:79:13:79:18 | Int32 x1 = ... | | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:16:80:32 | call to method refMethod | +| DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:83:13:83:18 | Int32 x2 = ... | | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:84:9:86:17 | call to method refOutMethod | | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:89:13:89:18 | Int32 x3 = ... | | DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:91:9:93:17 | call to method refOutMethod | | DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:91:9:93:17 | call to method refOutMethod | | DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | Int32 x5 = ... | +| DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 | | DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | ... = ... | | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... = ... | | DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | ... = ... | @@ -93,13 +97,16 @@ | Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:8:9:8:22 | ... = ... | | Example.cs:11:13:11:30 | SSA def(this.Field) | Example.cs:11:13:11:30 | ... = ... | | Example.cs:13:13:13:23 | SSA call def(this.Field) | Example.cs:13:13:13:23 | call to method SetField | +| Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:14:9:14:24 | ...; | | Example.cs:18:16:18:16 | SSA param(p) | Example.cs:18:16:18:16 | p | | Example.cs:18:24:18:24 | SSA param(b) | Example.cs:18:24:18:24 | b | | Example.cs:23:13:23:17 | SSA def(p) | Example.cs:23:13:23:17 | ... = ... | +| Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:25:9:25:15 | ...; | | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | Fields.cs:16:17:16:17 | F | | Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:19:9:19:13 | call to method Upd | | Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:20:9:20:14 | ... = ... | | Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:22:13:22:17 | call to method Upd | +| Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:23:9:23:20 | ...; | | Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:24:9:24:23 | ... = ... | | Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | Fields.cs:28:17:28:17 | G | | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | Fields.cs:28:17:28:17 | G | @@ -118,6 +125,9 @@ | Fields.cs:49:13:49:28 | SSA def(f) | Fields.cs:49:13:49:28 | ... = ... | | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | Fields.cs:49:13:49:28 | ... = ... | | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:49:17:49:28 | object creation of type Fields | +| Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:50:9:50:17 | ...; | +| Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:50:9:50:17 | ...; | +| Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:50:9:50:17 | ...; | | Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:51:9:51:20 | object creation of type Fields | | Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | Fields.cs:61:17:61:17 | H | | Fields.cs:61:17:61:17 | SSA entry def(this.SingleAccessedField) | Fields.cs:61:17:61:17 | H | @@ -179,6 +189,7 @@ | Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:19:9:19:13 | call to method Upd | | Properties.cs:20:9:20:14 | SSA def(x) | Properties.cs:20:9:20:14 | ... = ... | | Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:22:13:22:17 | call to method Upd | +| Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:23:9:23:20 | ...; | | Properties.cs:24:9:24:23 | SSA def(this.xs) | Properties.cs:24:9:24:23 | ... = ... | | Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | Properties.cs:28:17:28:17 | G | | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | Properties.cs:28:17:28:17 | G | @@ -197,10 +208,14 @@ | Properties.cs:49:13:49:32 | SSA def(f) | Properties.cs:49:13:49:32 | ... = ... | | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | Properties.cs:49:13:49:32 | ... = ... | | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:49:17:49:32 | object creation of type Properties | +| Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:50:9:50:17 | ...; | +| Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:50:9:50:17 | ...; | +| Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:50:9:50:17 | ...; | | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:51:9:51:24 | object creation of type Properties | | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | Properties.cs:61:17:61:17 | H | | Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:61:17:61:17 | H | | Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:61:23:61:23 | i | +| Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:16 | access to parameter i | | Properties.cs:63:16:63:18 | SSA def(i) | Properties.cs:63:16:63:18 | ...-- | | Properties.cs:70:17:70:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:70:17:70:17 | I | | Properties.cs:73:13:73:32 | SSA def(f) | Properties.cs:73:13:73:32 | Properties f = ... | @@ -222,15 +237,16 @@ | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:113:9:113:22 | call to method SetProps | | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | call to method SetProps | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:3:18:3:18 | b | -| Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | -| Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | +| Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | +| Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | +| Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:13:9:13:21 | ...; | | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:22:18:22:18 | b | -| Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | -| Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | -| Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | +| Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | +| Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:42:18:42:18 | b | -| Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | -| Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | +| Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | +| Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | +| Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:52:9:53:22 | if (...) ... | | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | param1 | | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | param2 | | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | @@ -243,17 +259,28 @@ | Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... = ... | | Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | ... = ... | | Test.cs:22:13:22:17 | SSA def(z) | Test.cs:22:13:22:17 | ... = ... | +| Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:24:9:24:15 | ...; | +| Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:24:9:24:15 | ...; | +| Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:24:9:24:15 | ...; | +| Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:24:9:24:15 | ...; | +| Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:25:16:25:16 | access to local variable x | +| Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:25:16:25:16 | access to local variable x | | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | | Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... = ... | +| Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:33:9:33:19 | ...; | | Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | Int32 i = ... | +| Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i | +| Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:34:25:34:25 | access to local variable i | | Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:33:34:35 | ...++ | | Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... = ... | +| Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:39:9:42:9 | foreach (... ... in ...) ... | | Test.cs:39:22:39:22 | SSA def(w) | Test.cs:39:22:39:22 | Int32 w | | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... = ... | | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:46:10:46:10 | g | | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | in | | Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | ... = ... | | Test.cs:54:13:54:20 | SSA def(out) | Test.cs:54:13:54:20 | ... = ... | +| Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:56:9:56:19 | ...; | | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... | | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x | | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | @@ -265,6 +292,7 @@ | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | b6 | | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... | | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... | +| Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:113:9:116:9 | if (...) ... | | Tuples.cs:10:9:10:54 | SSA def(b) | Tuples.cs:10:9:10:54 | ... = ... | | Tuples.cs:10:9:10:54 | SSA def(s) | Tuples.cs:10:9:10:54 | ... = ... | | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index 4a2158c6736..3b2a3e88e8b 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -15,7 +15,6 @@ | Capture.cs:212:30:212:35 | exited | Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:212:30:212:71 | EventHandler exited = ... | | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | -| Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | Consistency c | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | S s | @@ -117,13 +116,12 @@ | Properties.cs:76:9:76:12 | f.xs | Properties.cs:84:9:84:25 | SSA def(f.xs) | Properties.cs:84:9:84:25 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:81:9:81:22 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:83:9:83:22 | ... = ... | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | | Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... = ... | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected index cc6a0e59546..6a59b148b2e 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected @@ -35,7 +35,6 @@ | Capture.cs:212:30:212:35 | exited | Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:213:29:213:34 | access to local variable exited | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:11:17:11:17 | access to parameter b | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:16:17:16:17 | access to local variable i | -| Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | Consistency.cs:16:17:16:17 | access to local variable i | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:26:13:26:13 | access to local variable c | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:27:13:27:13 | access to local variable c | | Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:26:13:26:19 | access to field Field | @@ -290,25 +289,21 @@ | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:116:17:116:35 | access to property xs | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:15:13:15:13 | access to parameter b | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:13:9:13:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:14:9:14:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:17:13:17:13 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:11:13:11:13 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:13:9:13:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:14:9:14:9 | access to local variable x | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:11:13:11:13 | access to local variable x | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:13:9:13:9 | access to local variable x | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:14:9:14:9 | access to local variable x | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:17:13:17:13 | access to local variable x | | Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:25:13:25:13 | access to parameter b | | Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | Splitting.cs:30:13:30:13 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | Splitting.cs:33:9:33:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | Splitting.cs:34:9:34:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:33:9:33:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:34:9:34:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:37:13:37:13 | access to local variable x | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:30:13:30:13 | access to local variable x | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:33:9:33:9 | access to local variable x | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:34:9:34:9 | access to local variable x | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:37:13:37:13 | access to local variable x | | Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:45:13:45:13 | access to parameter b | | Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:52:13:52:13 | access to parameter b | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | Splitting.cs:50:13:50:13 | access to local variable x | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:54:9:54:9 | access to local variable x | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:55:9:55:9 | access to local variable x | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:50:13:50:13 | access to local variable x | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:54:9:54:9 | access to local variable x | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:55:9:55:9 | access to local variable x | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:11:13:11:18 | access to parameter param1 | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:22 | access to parameter param1 | | Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected index 1219abdfe45..c2800b61832 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected @@ -35,7 +35,6 @@ | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | SSA param(b) | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | SSA def(i) | -| Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | Consistency.cs:15:17:15:21 | [finally: exception] SSA def(i) | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | SSA def(c) | | Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | SSA def(c) | @@ -330,17 +329,18 @@ | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:3:18:3:18 | SSA param(b) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | Splitting.cs:7:13:7:19 | [b (line 3): true] SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | Splitting.cs:10:13:10:19 | [b (line 3): false] SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:7:13:7:19 | SSA def(x) | +| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:10:13:10:19 | SSA def(x) | | Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:22:18:22:18 | SSA param(b) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | Splitting.cs:29:13:29:19 | [b (line 22): false] SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | Splitting.cs:32:9:32:15 | [b (line 22): false] SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | Splitting.cs:32:9:32:15 | [b (line 22): true] SSA def(x) | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | SSA def(x) | +| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | SSA def(x) | | Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:42:18:42:18 | SSA param(b) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:46:13:46:19 | [b (line 42): true] SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:21 | SSA phi(x) | Splitting.cs:49:13:49:19 | [b (line 42): false] SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:46:13:46:19 | SSA def(x) | +| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:49:13:49:19 | SSA def(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | diff --git a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected index e154d10b9d3..fc310e53fde 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected +++ b/csharp/ql/test/query-tests/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected @@ -1,31 +1,31 @@ -| ConstantCondition.cs:38:18:38:29 | (...) ... | Expression is always 'null'. | -| ConstantCondition.cs:39:18:39:24 | (...) ... | Expression is never 'null'. | -| ConstantCondition.cs:46:17:46:26 | (...) ... | Expression is always 'null'. | -| ConstantCondition.cs:47:17:47:18 | "" | Expression is never 'null'. | -| ConstantCondition.cs:48:13:48:19 | (...) ... | Expression is never 'null'. | -| ConstantCondition.cs:49:13:49:14 | "" | Expression is never 'null'. | -| ConstantCondition.cs:62:18:62:18 | 2 | Pattern never matches. | -| ConstantCondition.cs:64:18:64:18 | 3 | Pattern always matches. | -| ConstantCondition.cs:75:18:75:20 | access to type Int32 | Pattern never matches. | -| ConstantCondition.cs:95:13:95:13 | _ | Pattern always matches. | -| ConstantCondition.cs:114:13:114:14 | access to parameter b1 | Condition always evaluates to 'true'. | -| ConstantCondition.cs:114:19:114:20 | access to parameter b2 | Condition always evaluates to 'true'. | -| ConstantCondition.cs:141:22:141:22 | _ | Pattern always matches. | -| ConstantConditionBad.cs:5:16:5:20 | ... > ... | Condition always evaluates to 'false'. | -| ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | Condition always evaluates to 'true'. | -| ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | Condition always evaluates to 'false'. | -| ConstantConditionalExpressionCondition.cs:13:21:13:30 | ... == ... | Condition always evaluates to 'true'. | -| ConstantForCondition.cs:9:29:9:33 | false | Condition always evaluates to 'false'. | -| ConstantForCondition.cs:11:29:11:34 | ... == ... | Condition always evaluates to 'false'. | -| ConstantIfCondition.cs:11:17:11:29 | ... == ... | Condition always evaluates to 'true'. | -| ConstantIfCondition.cs:14:17:14:21 | false | Condition always evaluates to 'false'. | -| ConstantIfCondition.cs:17:17:17:26 | ... == ... | Condition always evaluates to 'true'. | -| ConstantIsNullOrEmpty.cs:10:21:10:54 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | -| ConstantIsNullOrEmpty.cs:46:21:46:46 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | -| ConstantIsNullOrEmpty.cs:50:21:50:44 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | -| ConstantIsNullOrEmpty.cs:54:21:54:45 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | -| ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | Expression is never 'null'. | -| ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | Expression is always 'null'. | -| ConstantWhileCondition.cs:12:20:12:32 | ... == ... | Condition always evaluates to 'true'. | -| ConstantWhileCondition.cs:16:20:16:24 | false | Condition always evaluates to 'false'. | -| ConstantWhileCondition.cs:24:20:24:29 | ... == ... | Condition always evaluates to 'true'. | +| ConstantCondition.cs:38:18:38:29 | (...) ... | Expression is always 'null'. | ConstantCondition.cs:38:18:38:29 | (...) ... | dummy | +| ConstantCondition.cs:39:18:39:24 | (...) ... | Expression is never 'null'. | ConstantCondition.cs:39:18:39:24 | (...) ... | dummy | +| ConstantCondition.cs:46:17:46:26 | (...) ... | Expression is always 'null'. | ConstantCondition.cs:46:17:46:26 | (...) ... | dummy | +| ConstantCondition.cs:47:17:47:18 | "" | Expression is never 'null'. | ConstantCondition.cs:47:17:47:18 | "" | dummy | +| ConstantCondition.cs:48:13:48:19 | (...) ... | Expression is never 'null'. | ConstantCondition.cs:48:13:48:19 | (...) ... | dummy | +| ConstantCondition.cs:49:13:49:14 | "" | Expression is never 'null'. | ConstantCondition.cs:49:13:49:14 | "" | dummy | +| ConstantCondition.cs:62:18:62:18 | 2 | Pattern never matches. | ConstantCondition.cs:62:18:62:18 | 2 | dummy | +| ConstantCondition.cs:64:18:64:18 | 3 | Pattern always matches. | ConstantCondition.cs:64:18:64:18 | 3 | dummy | +| ConstantCondition.cs:75:18:75:20 | access to type Int32 | Pattern never matches. | ConstantCondition.cs:75:18:75:20 | access to type Int32 | dummy | +| ConstantCondition.cs:95:13:95:13 | _ | Pattern always matches. | ConstantCondition.cs:95:13:95:13 | _ | dummy | +| ConstantCondition.cs:114:13:114:14 | access to parameter b1 | Condition is always true because of $@. | ConstantCondition.cs:110:14:110:15 | access to parameter b1 | access to parameter b1 | +| ConstantCondition.cs:114:19:114:20 | access to parameter b2 | Condition is always true because of $@. | ConstantCondition.cs:112:14:112:15 | access to parameter b2 | access to parameter b2 | +| ConstantCondition.cs:141:22:141:22 | _ | Pattern always matches. | ConstantCondition.cs:141:22:141:22 | _ | dummy | +| ConstantConditionBad.cs:5:16:5:20 | ... > ... | Condition always evaluates to 'false'. | ConstantConditionBad.cs:5:16:5:20 | ... > ... | dummy | +| ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | Condition always evaluates to 'true'. | ConstantConditionalExpressionCondition.cs:11:22:11:34 | ... == ... | dummy | +| ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | Condition always evaluates to 'false'. | ConstantConditionalExpressionCondition.cs:12:21:12:25 | false | dummy | +| ConstantConditionalExpressionCondition.cs:13:21:13:30 | ... == ... | Condition always evaluates to 'true'. | ConstantConditionalExpressionCondition.cs:13:21:13:30 | ... == ... | dummy | +| ConstantForCondition.cs:9:29:9:33 | false | Condition always evaluates to 'false'. | ConstantForCondition.cs:9:29:9:33 | false | dummy | +| ConstantForCondition.cs:11:29:11:34 | ... == ... | Condition always evaluates to 'false'. | ConstantForCondition.cs:11:29:11:34 | ... == ... | dummy | +| ConstantIfCondition.cs:11:17:11:29 | ... == ... | Condition always evaluates to 'true'. | ConstantIfCondition.cs:11:17:11:29 | ... == ... | dummy | +| ConstantIfCondition.cs:14:17:14:21 | false | Condition always evaluates to 'false'. | ConstantIfCondition.cs:14:17:14:21 | false | dummy | +| ConstantIfCondition.cs:17:17:17:26 | ... == ... | Condition always evaluates to 'true'. | ConstantIfCondition.cs:17:17:17:26 | ... == ... | dummy | +| ConstantIsNullOrEmpty.cs:10:21:10:54 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | ConstantIsNullOrEmpty.cs:10:21:10:54 | call to method IsNullOrEmpty | dummy | +| ConstantIsNullOrEmpty.cs:46:21:46:46 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | ConstantIsNullOrEmpty.cs:46:21:46:46 | call to method IsNullOrEmpty | dummy | +| ConstantIsNullOrEmpty.cs:50:21:50:44 | call to method IsNullOrEmpty | Condition always evaluates to 'true'. | ConstantIsNullOrEmpty.cs:50:21:50:44 | call to method IsNullOrEmpty | dummy | +| ConstantIsNullOrEmpty.cs:54:21:54:45 | call to method IsNullOrEmpty | Condition always evaluates to 'false'. | ConstantIsNullOrEmpty.cs:54:21:54:45 | call to method IsNullOrEmpty | dummy | +| ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | Expression is never 'null'. | ConstantNullCoalescingLeftHandOperand.cs:11:24:11:34 | access to constant NULL_OBJECT | dummy | +| ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | Expression is always 'null'. | ConstantNullCoalescingLeftHandOperand.cs:12:24:12:27 | null | dummy | +| ConstantWhileCondition.cs:12:20:12:32 | ... == ... | Condition always evaluates to 'true'. | ConstantWhileCondition.cs:12:20:12:32 | ... == ... | dummy | +| ConstantWhileCondition.cs:16:20:16:24 | false | Condition always evaluates to 'false'. | ConstantWhileCondition.cs:16:20:16:24 | false | dummy | +| ConstantWhileCondition.cs:24:20:24:29 | ... == ... | Condition always evaluates to 'true'. | ConstantWhileCondition.cs:24:20:24:29 | ... == ... | dummy | diff --git a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.cs b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.cs index 04d8e20c09e..03a6644fe80 100644 --- a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.cs +++ b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.cs @@ -395,7 +395,7 @@ class Initializers { var s = ""; if (b) - s = "abc"; // $ Alert + s = "abc"; // Not reported if (!b) return s; return null; diff --git a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected index 6f718c49407..6271d6276c7 100644 --- a/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected +++ b/csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected @@ -13,7 +13,6 @@ | DeadStoreOfLocal.cs:314:18:314:23 | Object v2 | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:314:22:314:23 | v2 | v2 | | DeadStoreOfLocal.cs:331:9:331:32 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:327:23:327:23 | b | b | | DeadStoreOfLocal.cs:372:13:372:20 | String s = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:372:13:372:13 | s | s | -| DeadStoreOfLocal.cs:398:13:398:21 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:396:13:396:13 | s | s | | DeadStoreOfLocal.cs:472:20:472:76 | FileStream y = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:472:20:472:20 | y | y | | DeadStoreOfLocalBad.cs:7:13:7:48 | Boolean success = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocalBad.cs:7:13:7:19 | success | success | | DeadStoreOfLocalBad.cs:23:32:23:32 | FormatException e | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocalBad.cs:23:32:23:32 | e | e | diff --git a/csharp/ql/test/query-tests/Nullness/Implications.expected b/csharp/ql/test/query-tests/Nullness/Implications.expected index 584b4e3ad1a..a3e70f0474b 100644 --- a/csharp/ql/test/query-tests/Nullness/Implications.expected +++ b/csharp/ql/test/query-tests/Nullness/Implications.expected @@ -824,8 +824,6 @@ | D.cs:152:17:152:27 | ... != ... | true | D.cs:152:17:152:19 | access to parameter obj | non-null | | D.cs:182:9:182:12 | access to local variable obj2 | non-null | D.cs:176:20:176:28 | call to method MkMaybe | non-null | | D.cs:182:9:182:12 | access to local variable obj2 | null | D.cs:176:20:176:28 | call to method MkMaybe | null | -| D.cs:190:9:190:12 | access to local variable obj3 | non-null | D.cs:187:20:187:28 | call to method MkMaybe | non-null | -| D.cs:190:9:190:12 | access to local variable obj3 | null | D.cs:187:20:187:28 | call to method MkMaybe | null | | D.cs:196:13:196:13 | access to local variable o | non-null | D.cs:195:17:195:28 | object creation of type Object | non-null | | D.cs:196:13:196:13 | access to local variable o | null | D.cs:195:17:195:28 | object creation of type Object | null | | D.cs:196:13:196:21 | ... == ... | false | D.cs:196:13:196:13 | access to local variable o | non-null | @@ -876,10 +874,6 @@ | D.cs:222:13:222:14 | access to local variable o4 | null | D.cs:220:18:220:26 | ... + ... | null | | D.cs:223:9:223:10 | access to local variable o4 | non-null | D.cs:220:18:220:26 | ... + ... | non-null | | D.cs:223:9:223:10 | access to local variable o4 | null | D.cs:220:18:220:26 | ... + ... | null | -| D.cs:232:13:232:13 | access to local variable o | non-null | D.cs:230:17:230:28 | object creation of type Object | non-null | -| D.cs:232:13:232:13 | access to local variable o | null | D.cs:230:17:230:28 | object creation of type Object | null | -| D.cs:238:13:238:13 | access to local variable o | non-null | D.cs:236:17:236:18 | "" | non-null | -| D.cs:238:13:238:13 | access to local variable o | null | D.cs:236:17:236:18 | "" | null | | D.cs:241:21:241:37 | ... ? ... : ... | non-null | D.cs:241:21:241:25 | access to field maybe | false | | D.cs:241:21:241:37 | ... ? ... : ... | non-null | D.cs:241:36:241:37 | "" | non-null | | D.cs:241:21:241:37 | ... ? ... : ... | null | D.cs:241:21:241:25 | access to field maybe | true | @@ -1049,16 +1043,8 @@ | E.cs:24:19:24:28 | ... == ... | true | E.cs:24:19:24:20 | access to local variable s1 | null | | E.cs:26:13:26:22 | ... != ... | false | E.cs:26:13:26:14 | access to local variable s2 | null | | E.cs:26:13:26:22 | ... != ... | true | E.cs:26:13:26:14 | access to local variable s2 | non-null | -| E.cs:35:9:35:12 | access to local variable last | empty | E.cs:34:20:34:20 | access to local variable s | empty | -| E.cs:35:9:35:12 | access to local variable last | non-empty | E.cs:34:20:34:20 | access to local variable s | non-empty | -| E.cs:35:9:35:12 | access to local variable last | non-null | E.cs:34:20:34:20 | access to local variable s | non-null | -| E.cs:35:9:35:12 | access to local variable last | null | E.cs:34:20:34:20 | access to local variable s | null | | E.cs:38:13:38:20 | call to method Any | false | E.cs:38:13:38:14 | access to parameter ss | empty | | E.cs:38:13:38:20 | call to method Any | true | E.cs:38:13:38:14 | access to parameter ss | non-empty | -| E.cs:43:13:43:16 | access to local variable last | empty | E.cs:41:24:41:24 | access to local variable s | empty | -| E.cs:43:13:43:16 | access to local variable last | non-empty | E.cs:41:24:41:24 | access to local variable s | non-empty | -| E.cs:43:13:43:16 | access to local variable last | non-null | E.cs:41:24:41:24 | access to local variable s | non-null | -| E.cs:43:13:43:16 | access to local variable last | null | E.cs:41:24:41:24 | access to local variable s | null | | E.cs:53:16:53:19 | access to local variable iter | non-null | E.cs:52:20:52:39 | call to method GetEnumerator | non-null | | E.cs:53:16:53:19 | access to local variable iter | null | E.cs:52:20:52:39 | call to method GetEnumerator | null | | E.cs:55:23:55:26 | access to local variable iter | non-null | E.cs:52:20:52:39 | call to method GetEnumerator | non-null | @@ -1152,12 +1138,6 @@ | E.cs:203:13:203:13 | access to local variable o | null | E.cs:198:17:198:29 | ... ? ... : ... | null | | E.cs:208:13:208:23 | ... is ... | false | E.cs:208:13:208:13 | access to parameter s | null | | E.cs:208:13:208:23 | ... is ... | true | E.cs:208:13:208:13 | access to parameter s | non-null | -| E.cs:220:13:220:13 | access to local variable x | non-null | E.cs:217:17:217:20 | null | non-null | -| E.cs:220:13:220:13 | access to local variable x | null | E.cs:217:17:217:20 | null | null | -| E.cs:229:13:229:13 | access to local variable x | empty | E.cs:227:17:227:20 | null | empty | -| E.cs:229:13:229:13 | access to local variable x | non-empty | E.cs:227:17:227:20 | null | non-empty | -| E.cs:229:13:229:13 | access to local variable x | non-null | E.cs:227:17:227:20 | null | non-null | -| E.cs:229:13:229:13 | access to local variable x | null | E.cs:227:17:227:20 | null | null | | E.cs:245:13:245:22 | access to property HasValue | false | E.cs:245:13:245:13 | access to parameter i | null | | E.cs:245:13:245:22 | access to property HasValue | true | E.cs:245:13:245:13 | access to parameter i | non-null | | E.cs:252:13:252:21 | ... != ... | false | E.cs:252:13:252:13 | access to parameter i | null | @@ -1300,11 +1280,19 @@ | E.cs:429:13:429:22 | access to property HasValue | true | E.cs:429:13:429:13 | access to parameter i | non-null | | E.cs:432:16:432:24 | call to method Any | false | E.cs:432:16:432:18 | access to parameter is | empty | | E.cs:432:16:432:24 | call to method Any | true | E.cs:432:16:432:18 | access to parameter is | non-empty | -| E.cs:437:13:437:21 | ... is ... | false | E.cs:437:13:437:13 | access to parameter s | non-null | -| E.cs:437:13:437:21 | ... is ... | true | E.cs:437:13:437:13 | access to parameter s | null | -| E.cs:442:13:442:29 | ... is ... | false | E.cs:442:13:442:13 | access to parameter s | non-null | -| E.cs:447:13:447:25 | ... is ... | true | E.cs:447:13:447:13 | access to parameter s | non-null | -| E.cs:452:13:452:23 | ... is ... | true | E.cs:452:13:452:13 | access to parameter s | non-null | +| E.cs:437:13:437:31 | ... && ... | true | E.cs:437:13:437:18 | ... == ... | true | +| E.cs:437:13:437:31 | ... && ... | true | E.cs:437:23:437:31 | ... is ... | true | +| E.cs:437:23:437:31 | ... is ... | false | E.cs:437:23:437:23 | access to parameter s | non-null | +| E.cs:437:23:437:31 | ... is ... | true | E.cs:437:23:437:23 | access to parameter s | null | +| E.cs:442:13:442:39 | ... && ... | true | E.cs:442:13:442:18 | ... == ... | true | +| E.cs:442:13:442:39 | ... && ... | true | E.cs:442:23:442:39 | ... is ... | true | +| E.cs:442:23:442:39 | ... is ... | false | E.cs:442:23:442:23 | access to parameter s | non-null | +| E.cs:447:13:447:35 | ... && ... | true | E.cs:447:13:447:18 | ... == ... | true | +| E.cs:447:13:447:35 | ... && ... | true | E.cs:447:23:447:35 | ... is ... | true | +| E.cs:447:23:447:35 | ... is ... | true | E.cs:447:23:447:23 | access to parameter s | non-null | +| E.cs:452:13:452:33 | ... && ... | true | E.cs:452:13:452:18 | ... == ... | true | +| E.cs:452:13:452:33 | ... && ... | true | E.cs:452:23:452:33 | ... is ... | true | +| E.cs:452:23:452:33 | ... is ... | true | E.cs:452:23:452:23 | access to parameter s | non-null | | E.cs:457:13:457:27 | ... is ... | false | E.cs:457:13:457:13 | access to parameter s | non-null | | F.cs:8:9:8:9 | access to local variable o | non-null | F.cs:7:20:7:23 | null | non-null | | F.cs:8:9:8:9 | access to local variable o | null | F.cs:7:20:7:23 | null | null | diff --git a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected index 25ed39bebb7..b00cfb3115e 100644 --- a/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected +++ b/csharp/ql/test/query-tests/standalone/Bad Practices/Control-Flow/ConstantCondition/ConstantCondition.expected @@ -1,2 +1,2 @@ -| ConstantCondition.cs:15:13:15:26 | ... is ... | Condition always evaluates to 'false'. | -| ConstantCondition.cs:15:24:15:26 | access to type Int32 | Pattern never matches. | +| ConstantCondition.cs:15:13:15:26 | ... is ... | Condition always evaluates to 'false'. | ConstantCondition.cs:15:13:15:26 | ... is ... | dummy | +| ConstantCondition.cs:15:24:15:26 | access to type Int32 | Pattern never matches. | ConstantCondition.cs:15:24:15:26 | access to type Int32 | dummy | From 613c78937872aad42adfd91686cd71ca2af8fff4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 3 Oct 2025 15:16:55 +0200 Subject: [PATCH 035/965] C#: Remove some obsolete tests. --- .../controlflow/guards/AbstractValue.expected | 40 -- .../guards/BooleanGuardedExpr.expected | 16 - .../guards/GuardedControlFlowNode.expected | 31 - .../controlflow/guards/GuardedExpr.expected | 31 - .../controlflow/guards/Implications.expected | 27 - .../guards/NullGuardedExpr.expected | 13 - .../controlflow/guards/Splitting.cs | 139 ----- .../controlflow/splits/SplittingStressTest.cs | 321 ---------- .../splits/SplittingStressTest.expected | 558 ------------------ .../controlflow/splits/SplittingStressTest.ql | 8 - .../dataflow/ssa/DefAdjacentRead.expected | 7 - .../dataflow/ssa/ReadAdjacentRead.expected | 8 - .../dataflow/ssa/SSAPhi.expected | 4 - .../library-tests/dataflow/ssa/Splitting.cs | 57 -- .../dataflow/ssa/SsaDef.expected | 11 - .../dataflow/ssa/SsaDefElement.expected | 11 - .../dataflow/ssa/SsaExplicitDef.expected | 6 - .../ssa/SsaImplicitParameterDef.expected | 3 - .../dataflow/ssa/SsaRead.expected | 17 - .../dataflow/ssa/SsaUltimateDef.expected | 13 - 20 files changed, 1321 deletions(-) delete mode 100644 csharp/ql/test/library-tests/controlflow/guards/Splitting.cs delete mode 100644 csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.cs delete mode 100644 csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected delete mode 100644 csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.ql delete mode 100644 csharp/ql/test/library-tests/dataflow/ssa/Splitting.cs diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected index fc84d28f449..b6059d48772 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected @@ -32,7 +32,6 @@ abstractValue | 0 | Guards.cs:322:18:322:18 | 0 | | 0 | Guards.cs:329:17:329:19 | access to constant A | | 0 | Guards.cs:334:20:334:20 | 0 | -| 0 | Splitting.cs:137:20:137:20 | 0 | | 1 | Collections.cs:12:28:12:28 | 1 | | 1 | Collections.cs:14:28:14:28 | 1 | | 1 | Collections.cs:17:28:17:28 | 1 | @@ -371,32 +370,6 @@ abstractValue | non-null | Guards.cs:343:13:343:19 | access to type Console | | non-null | Guards.cs:343:31:343:31 | access to local variable s | | non-null | Guards.cs:349:13:349:13 | access to parameter o | -| non-null | Splitting.cs:13:17:13:17 | access to parameter o | -| non-null | Splitting.cs:23:24:23:24 | access to parameter o | -| non-null | Splitting.cs:33:24:33:25 | "" | -| non-null | Splitting.cs:44:17:44:17 | access to parameter o | -| non-null | Splitting.cs:46:17:46:17 | access to parameter o | -| non-null | Splitting.cs:55:13:55:13 | access to parameter o | -| non-null | Splitting.cs:66:20:66:20 | access to parameter o | -| non-null | Splitting.cs:78:24:78:24 | access to parameter o | -| non-null | Splitting.cs:87:13:87:17 | access to type Debug | -| non-null | Splitting.cs:90:13:90:13 | access to parameter o | -| non-null | Splitting.cs:91:9:91:9 | access to parameter o | -| non-null | Splitting.cs:97:13:97:17 | access to type Debug | -| non-null | Splitting.cs:105:9:105:13 | access to type Debug | -| non-null | Splitting.cs:107:13:107:13 | access to parameter o | -| non-null | Splitting.cs:109:13:109:13 | access to parameter o | -| non-null | Splitting.cs:116:9:116:13 | access to type Debug | -| non-null | Splitting.cs:117:9:117:9 | access to parameter o | -| non-null | Splitting.cs:119:13:119:13 | access to parameter o | -| non-null | Splitting.cs:120:16:120:16 | access to parameter o | -| non-null | Splitting.cs:129:17:129:17 | access to local variable o | -| non-null | Splitting.cs:133:17:133:17 | access to local variable o | -| non-null | Splitting.cs:133:17:133:29 | ... = ... | -| non-null | Splitting.cs:133:21:133:29 | call to method M11 | -| non-null | Splitting.cs:133:21:133:29 | this access | -| non-null | Splitting.cs:133:28:133:28 | access to local variable o | -| non-null | Splitting.cs:134:17:134:17 | access to local variable o | | null | Assert.cs:9:24:9:27 | null | | null | Assert.cs:10:27:10:30 | null | | null | Assert.cs:16:24:16:27 | null | @@ -447,19 +420,6 @@ abstractValue | null | Guards.cs:203:18:203:21 | null | | null | Guards.cs:341:24:341:27 | null | | null | Guards.cs:342:18:342:21 | null | -| null | Splitting.cs:12:22:12:25 | null | -| null | Splitting.cs:22:22:22:25 | null | -| null | Splitting.cs:32:22:32:25 | null | -| null | Splitting.cs:41:18:41:21 | null | -| null | Splitting.cs:54:18:54:21 | null | -| null | Splitting.cs:65:18:65:21 | null | -| null | Splitting.cs:76:18:76:21 | null | -| null | Splitting.cs:87:31:87:34 | null | -| null | Splitting.cs:97:31:97:34 | null | -| null | Splitting.cs:105:27:105:30 | null | -| null | Splitting.cs:116:27:116:30 | null | -| null | Splitting.cs:125:21:125:24 | null | -| null | Splitting.cs:129:22:129:25 | null | | true | Assert.cs:86:61:86:64 | true | | true | Guards.cs:177:20:177:23 | true | | true | Guards.cs:181:46:181:49 | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 6b81372682d..6e9829600eb 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -72,19 +72,3 @@ | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | -| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | -| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | -| Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | true | -| Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | -| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index fda9da9f7bd..c04f1459790 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -197,34 +197,3 @@ | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | non-null | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | -| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | -| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | -| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | non-null | -| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | non-null | -| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | -| Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | non-null | -| Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | true | -| Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | -| Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | -| Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | non-null | -| Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | -| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | non-null | -| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index 0921594637b..ec693ae3cdd 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -193,34 +193,3 @@ | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | non-null | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | -| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | -| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | -| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | non-null | -| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | -| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:44:17:44:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:46:17:46:17 | access to parameter o | Splitting.cs:41:13:41:21 | ... != ... | Splitting.cs:41:13:41:13 | access to parameter o | true | -| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | Splitting.cs:54:13:54:13 | access to parameter o | non-null | -| Splitting.cs:55:13:55:13 | access to parameter o | Splitting.cs:54:13:54:21 | ... != ... | Splitting.cs:54:13:54:13 | access to parameter o | true | -| Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | non-null | -| Splitting.cs:66:20:66:20 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | true | -| Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | -| Splitting.cs:68:13:68:13 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | Splitting.cs:65:13:65:13 | access to parameter o | null | -| Splitting.cs:69:16:69:16 | access to parameter o | Splitting.cs:65:13:65:21 | ... != ... | Splitting.cs:65:13:65:13 | access to parameter o | false | -| Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | Splitting.cs:76:13:76:13 | access to parameter o | non-null | -| Splitting.cs:78:24:78:24 | access to parameter o | Splitting.cs:76:13:76:21 | ... != ... | Splitting.cs:76:13:76:13 | access to parameter o | true | -| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:107:13:107:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:109:13:109:13 | access to parameter o | Splitting.cs:105:22:105:30 | ... != ... | Splitting.cs:105:22:105:22 | access to parameter o | true | -| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:117:9:117:9 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:119:13:119:13 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:120:16:120:16 | access to parameter o | Splitting.cs:116:22:116:30 | ... != ... | Splitting.cs:116:22:116:22 | access to parameter o | true | -| Splitting.cs:133:25:133:25 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | Splitting.cs:131:21:131:21 | access to parameter b | false | -| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | Splitting.cs:129:17:129:17 | access to local variable o | non-null | -| Splitting.cs:133:28:133:28 | access to local variable o | Splitting.cs:129:17:129:25 | ... != ... | Splitting.cs:129:17:129:17 | access to local variable o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected b/csharp/ql/test/library-tests/controlflow/guards/Implications.expected index b346e653ec7..9a9bdd82aa9 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/Implications.expected @@ -443,30 +443,3 @@ | Guards.cs:343:31:343:31 | access to local variable s | non-null | Guards.cs:341:20:341:32 | ... ? ... : ... | non-null | | Guards.cs:343:31:343:31 | access to local variable s | null | Guards.cs:341:20:341:32 | ... ? ... : ... | null | | Guards.cs:348:13:348:25 | ... is ... | true | Guards.cs:348:13:348:13 | access to parameter o | non-null | -| Splitting.cs:12:17:12:25 | ... != ... | false | Splitting.cs:12:17:12:17 | access to parameter o | null | -| Splitting.cs:12:17:12:25 | ... != ... | true | Splitting.cs:12:17:12:17 | access to parameter o | non-null | -| Splitting.cs:22:17:22:25 | ... != ... | false | Splitting.cs:22:17:22:17 | access to parameter o | null | -| Splitting.cs:22:17:22:25 | ... != ... | true | Splitting.cs:22:17:22:17 | access to parameter o | non-null | -| Splitting.cs:32:17:32:25 | ... == ... | false | Splitting.cs:32:17:32:17 | access to parameter o | non-null | -| Splitting.cs:32:17:32:25 | ... == ... | true | Splitting.cs:32:17:32:17 | access to parameter o | null | -| Splitting.cs:41:13:41:21 | ... != ... | false | Splitting.cs:41:13:41:13 | access to parameter o | null | -| Splitting.cs:41:13:41:21 | ... != ... | true | Splitting.cs:41:13:41:13 | access to parameter o | non-null | -| Splitting.cs:54:13:54:21 | ... != ... | false | Splitting.cs:54:13:54:13 | access to parameter o | null | -| Splitting.cs:54:13:54:21 | ... != ... | true | Splitting.cs:54:13:54:13 | access to parameter o | non-null | -| Splitting.cs:65:13:65:21 | ... != ... | false | Splitting.cs:65:13:65:13 | access to parameter o | null | -| Splitting.cs:65:13:65:21 | ... != ... | true | Splitting.cs:65:13:65:13 | access to parameter o | non-null | -| Splitting.cs:76:13:76:21 | ... != ... | false | Splitting.cs:76:13:76:13 | access to parameter o | null | -| Splitting.cs:76:13:76:21 | ... != ... | true | Splitting.cs:76:13:76:13 | access to parameter o | non-null | -| Splitting.cs:87:26:87:34 | ... != ... | false | Splitting.cs:87:26:87:26 | access to parameter o | null | -| Splitting.cs:87:26:87:34 | ... != ... | true | Splitting.cs:87:26:87:26 | access to parameter o | non-null | -| Splitting.cs:97:26:97:34 | ... == ... | false | Splitting.cs:97:26:97:26 | access to parameter o | non-null | -| Splitting.cs:97:26:97:34 | ... == ... | true | Splitting.cs:97:26:97:26 | access to parameter o | null | -| Splitting.cs:105:22:105:30 | ... != ... | false | Splitting.cs:105:22:105:22 | access to parameter o | null | -| Splitting.cs:105:22:105:30 | ... != ... | true | Splitting.cs:105:22:105:22 | access to parameter o | non-null | -| Splitting.cs:116:22:116:30 | ... != ... | false | Splitting.cs:116:22:116:22 | access to parameter o | null | -| Splitting.cs:116:22:116:30 | ... != ... | true | Splitting.cs:116:22:116:22 | access to parameter o | non-null | -| Splitting.cs:129:17:129:25 | ... != ... | false | Splitting.cs:129:17:129:17 | access to local variable o | null | -| Splitting.cs:129:17:129:25 | ... != ... | false | Splitting.cs:129:22:129:25 | null | non-null | -| Splitting.cs:129:17:129:25 | ... != ... | true | Splitting.cs:129:17:129:17 | access to local variable o | non-null | -| Splitting.cs:134:17:134:17 | access to local variable o | non-null | Splitting.cs:133:21:133:29 | call to method M11 | non-null | -| Splitting.cs:134:17:134:17 | access to local variable o | null | Splitting.cs:133:21:133:29 | call to method M11 | null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected index f78fae64ee1..81607656b30 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected @@ -47,16 +47,3 @@ | Guards.cs:287:17:287:17 | access to parameter o | | Guards.cs:343:31:343:31 | access to local variable s | | Guards.cs:349:13:349:13 | access to parameter o | -| Splitting.cs:13:17:13:17 | access to parameter o | -| Splitting.cs:23:24:23:24 | access to parameter o | -| Splitting.cs:44:17:44:17 | access to parameter o | -| Splitting.cs:46:17:46:17 | access to parameter o | -| Splitting.cs:55:13:55:13 | access to parameter o | -| Splitting.cs:66:20:66:20 | access to parameter o | -| Splitting.cs:78:24:78:24 | access to parameter o | -| Splitting.cs:107:13:107:13 | access to parameter o | -| Splitting.cs:109:13:109:13 | access to parameter o | -| Splitting.cs:117:9:117:9 | access to parameter o | -| Splitting.cs:119:13:119:13 | access to parameter o | -| Splitting.cs:120:16:120:16 | access to parameter o | -| Splitting.cs:133:28:133:28 | access to local variable o | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Splitting.cs b/csharp/ql/test/library-tests/controlflow/guards/Splitting.cs deleted file mode 100644 index 7f42c5a87df..00000000000 --- a/csharp/ql/test/library-tests/controlflow/guards/Splitting.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Diagnostics; -#nullable enable -/// -/// Tests related to CFG splitting. -/// -public class Splitting -{ - void M1(bool b, object? o) - { - if (b) - if (o != null) - o.ToString(); // null guarded - if (b) - o.ToString(); // not null guarded - o.ToString(); // not null guarded - } - - string M2(bool b, object? o) - { - if (b) - if (o != null) - return o.ToString(); // null guarded - if (b) - o.ToString(); // anti-null guarded - return o.ToString(); // not null guarded - } - - string M3(bool b, object? o) - { - if (b) - if (o == null) - return ""; - if (b) - o.ToString(); // null guarded - return o.ToString(); // not null guarded - } - - void M4(bool b, object? o) - { - if (o != null) - { - if (b) - o.ToString(); // null guarded - if (b) - o.ToString(); // null guarded - } - } - - string M5(bool b, object? o) - { - if (b) - o.ToString(); // not null guarded - if (o != null) - o.ToString(); // null guarded - if (b) - o.ToString(); // not null guarded - return o.ToString(); // not null guarded - } - - string M6(bool b, object? o) - { - if (b) - o.ToString(); // not null guarded - if (o != null) - return o.ToString(); // null guarded - if (b) - o.ToString(); // anti-null guarded - return o.ToString(); // anti-null guarded - } - - string M7(bool b, object? o, bool b2) - { - if (b) - o.ToString(); // not null guarded - if (o != null) - if (b2) - return o.ToString(); // null guarded - if (b) - o.ToString(); // not null guarded - return o.ToString(); // not null guarded - } - - void M8(bool b, object? o) - { - if (b) - Debug.Assert(o != null); - o.ToString(); // not null guarded - if (b) - o.ToString(); // null guarded - o.ToString(); // not null guarded - } - - string M9(bool b, object? o) - { - if (b) - Debug.Assert(o == null); - if (b) - o.ToString(); // anti-null guarded - return o.ToString(); // not null guarded - } - - void M10(bool b, object? o) - { - Debug.Assert(o != null); - if (b) - o.ToString(); // null guarded - if (b) - o.ToString(); // null guarded - } - - string M11(bool b, object? o) - { - if (b) - o.ToString(); // not null guarded - Debug.Assert(o != null); - o.ToString(); // null guarded - if (b) - o.ToString(); // null guarded - return o.ToString(); // null guarded - } - - public void M12(int i, bool b) - { - object? o = null; - do - { - o.GetHashCode(); // not null guarded - if (o != null) - { - if (b) - return; - o = M11(b, o); - o.GetHashCode(); // not null guarded - } - } - while (i > 0); - } -} diff --git a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.cs b/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.cs deleted file mode 100644 index 14644f973d0..00000000000 --- a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.cs +++ /dev/null @@ -1,321 +0,0 @@ -class SplittingStressTest -{ - void M1(bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7, bool b8, bool b9, bool b10, bool b11, bool b12, bool b13, bool b14, bool b15, bool b16, bool b17, bool b18, bool b19, bool b20, bool b21, bool b22, bool b23, bool b24, bool b25, bool b26, bool b27, bool b28, bool b29, bool b30, bool b31, bool b32, bool b33, bool b34, bool b35, bool b36, bool b37, bool b38, bool b39, bool b40) - { - if (b1) - ; - if (b2) - ; - if (b3) - ; - if (b4) - ; - if (b5) - ; - if (b6) - ; - if (b7) - ; - if (b8) - ; - if (b9) - ; - if (b10) - ; - if (b11) - ; - if (b12) - ; - if (b13) - ; - if (b14) - ; - if (b15) - ; - if (b16) - ; - if (b17) - ; - if (b18) - ; - if (b19) - ; - if (b20) - ; - if (b21) - ; - if (b22) - ; - if (b23) - ; - if (b24) - ; - if (b25) - ; - if (b26) - ; - if (b27) - ; - if (b28) - ; - if (b29) - ; - if (b30) - ; - if (b31) - ; - if (b32) - ; - if (b33) - ; - if (b34) - ; - if (b35) - ; - if (b36) - ; - if (b37) - ; - if (b38) - ; - if (b39) - ; - if (b40) - ; - ; // 2^40 splits - - if (b1) - ; - if (b2) - ; - if (b3) - ; - if (b4) - ; - if (b5) - ; - if (b6) - ; - if (b7) - ; - if (b8) - ; - if (b9) - ; - if (b10) - ; - if (b11) - ; - if (b12) - ; - if (b13) - ; - if (b14) - ; - if (b15) - ; - if (b16) - ; - if (b17) - ; - if (b18) - ; - if (b19) - ; - if (b20) - ; - if (b21) - ; - if (b22) - ; - if (b23) - ; - if (b24) - ; - if (b25) - ; - if (b26) - ; - if (b27) - ; - if (b28) - ; - if (b29) - ; - if (b30) - ; - if (b31) - ; - if (b32) - ; - if (b33) - ; - if (b34) - ; - if (b35) - ; - if (b36) - ; - if (b37) - ; - if (b38) - ; - if (b39) - ; - if (b40) - ; - ; - } - - void M2(int i, bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7, bool b8, bool b9, bool b10, bool b11, bool b12, bool b13, bool b14, bool b15, bool b16, bool b17, bool b18, bool b19, bool b20, bool b21, bool b22, bool b23, bool b24, bool b25, bool b26, bool b27, bool b28, bool b29) - { - while (i-- > 0) - { - if (i == 1) - { - if (b1) - ; - } - if (i == 2) - { - if (b2) - ; - } - if (i == 3) - { - if (b3) - ; - } - if (i == 4) - { - if (b4) - ; - } - if (i == 5) - { - if (b5) - ; - } - if (i == 6) - { - if (b6) - ; - } - if (i == 7) - { - if (b7) - ; - } - if (i == 8) - { - if (b8) - ; - } - if (i == 9) - { - if (b9) - ; - } - if (i == 10) - { - if (b10) - ; - } - if (i == 11) - { - if (b11) - ; - } - if (i == 12) - { - if (b12) - ; - } - if (i == 13) - { - if (b13) - ; - } - if (i == 14) - { - if (b14) - ; - } - if (i == 15) - { - if (b15) - ; - } - if (i == 16) - { - if (b16) - ; - } - if (i == 17) - { - if (b17) - ; - } - if (i == 18) - { - if (b18) - ; - } - if (i == 19) - { - if (b19) - ; - } - if (i == 20) - { - if (b20) - ; - } - if (i == 21) - { - if (b21) - ; - } - if (i == 22) - { - if (b22) - ; - } - if (i == 23) - { - if (b23) - ; - } - if (i == 24) - { - if (b24) - ; - } - if (i == 25) - { - if (b25) - ; - } - if (i == 26) - { - if (b26) - ; - } - if (i == 27) - { - if (b27) - ; - } - if (i == 28) - { - if (b28) - ; - } - if (i == 29) - { - if (b29) - ; - } - } - } -} diff --git a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected b/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected deleted file mode 100644 index f8b96a5041b..00000000000 --- a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.expected +++ /dev/null @@ -1,558 +0,0 @@ -countSplits -| SplittingStressTest.cs:1:7:1:25 | call to constructor Object | 1 | -| SplittingStressTest.cs:1:7:1:25 | {...} | 1 | -| SplittingStressTest.cs:4:5:168:5 | {...} | 1 | -| SplittingStressTest.cs:5:9:6:13 | if (...) ... | 1 | -| SplittingStressTest.cs:5:13:5:14 | access to parameter b1 | 1 | -| SplittingStressTest.cs:6:13:6:13 | ; | 1 | -| SplittingStressTest.cs:7:9:8:13 | if (...) ... | 1 | -| SplittingStressTest.cs:7:13:7:14 | access to parameter b2 | 1 | -| SplittingStressTest.cs:8:13:8:13 | ; | 1 | -| SplittingStressTest.cs:9:9:10:13 | if (...) ... | 1 | -| SplittingStressTest.cs:9:13:9:14 | access to parameter b3 | 1 | -| SplittingStressTest.cs:10:13:10:13 | ; | 1 | -| SplittingStressTest.cs:11:9:12:13 | if (...) ... | 1 | -| SplittingStressTest.cs:11:13:11:14 | access to parameter b4 | 1 | -| SplittingStressTest.cs:12:13:12:13 | ; | 1 | -| SplittingStressTest.cs:13:9:14:13 | if (...) ... | 1 | -| SplittingStressTest.cs:13:13:13:14 | access to parameter b5 | 1 | -| SplittingStressTest.cs:14:13:14:13 | ; | 1 | -| SplittingStressTest.cs:15:9:16:13 | if (...) ... | 1 | -| SplittingStressTest.cs:15:13:15:14 | access to parameter b6 | 1 | -| SplittingStressTest.cs:16:13:16:13 | ; | 1 | -| SplittingStressTest.cs:17:9:18:13 | if (...) ... | 1 | -| SplittingStressTest.cs:17:13:17:14 | access to parameter b7 | 1 | -| SplittingStressTest.cs:18:13:18:13 | ; | 1 | -| SplittingStressTest.cs:19:9:20:13 | if (...) ... | 1 | -| SplittingStressTest.cs:19:13:19:14 | access to parameter b8 | 1 | -| SplittingStressTest.cs:20:13:20:13 | ; | 1 | -| SplittingStressTest.cs:21:9:22:13 | if (...) ... | 1 | -| SplittingStressTest.cs:21:13:21:14 | access to parameter b9 | 1 | -| SplittingStressTest.cs:22:13:22:13 | ; | 1 | -| SplittingStressTest.cs:23:9:24:13 | if (...) ... | 1 | -| SplittingStressTest.cs:23:13:23:15 | access to parameter b10 | 1 | -| SplittingStressTest.cs:24:13:24:13 | ; | 1 | -| SplittingStressTest.cs:25:9:26:13 | if (...) ... | 1 | -| SplittingStressTest.cs:25:13:25:15 | access to parameter b11 | 1 | -| SplittingStressTest.cs:26:13:26:13 | ; | 1 | -| SplittingStressTest.cs:27:9:28:13 | if (...) ... | 1 | -| SplittingStressTest.cs:27:13:27:15 | access to parameter b12 | 1 | -| SplittingStressTest.cs:28:13:28:13 | ; | 1 | -| SplittingStressTest.cs:29:9:30:13 | if (...) ... | 1 | -| SplittingStressTest.cs:29:13:29:15 | access to parameter b13 | 1 | -| SplittingStressTest.cs:30:13:30:13 | ; | 1 | -| SplittingStressTest.cs:31:9:32:13 | if (...) ... | 1 | -| SplittingStressTest.cs:31:13:31:15 | access to parameter b14 | 1 | -| SplittingStressTest.cs:32:13:32:13 | ; | 1 | -| SplittingStressTest.cs:33:9:34:13 | if (...) ... | 1 | -| SplittingStressTest.cs:33:13:33:15 | access to parameter b15 | 1 | -| SplittingStressTest.cs:34:13:34:13 | ; | 1 | -| SplittingStressTest.cs:35:9:36:13 | if (...) ... | 1 | -| SplittingStressTest.cs:35:13:35:15 | access to parameter b16 | 1 | -| SplittingStressTest.cs:36:13:36:13 | ; | 1 | -| SplittingStressTest.cs:37:9:38:13 | if (...) ... | 1 | -| SplittingStressTest.cs:37:13:37:15 | access to parameter b17 | 1 | -| SplittingStressTest.cs:38:13:38:13 | ; | 1 | -| SplittingStressTest.cs:39:9:40:13 | if (...) ... | 1 | -| SplittingStressTest.cs:39:13:39:15 | access to parameter b18 | 1 | -| SplittingStressTest.cs:40:13:40:13 | ; | 1 | -| SplittingStressTest.cs:41:9:42:13 | if (...) ... | 1 | -| SplittingStressTest.cs:41:13:41:15 | access to parameter b19 | 1 | -| SplittingStressTest.cs:42:13:42:13 | ; | 1 | -| SplittingStressTest.cs:43:9:44:13 | if (...) ... | 1 | -| SplittingStressTest.cs:43:13:43:15 | access to parameter b20 | 1 | -| SplittingStressTest.cs:44:13:44:13 | ; | 1 | -| SplittingStressTest.cs:45:9:46:13 | if (...) ... | 1 | -| SplittingStressTest.cs:45:13:45:15 | access to parameter b21 | 1 | -| SplittingStressTest.cs:46:13:46:13 | ; | 1 | -| SplittingStressTest.cs:47:9:48:13 | if (...) ... | 1 | -| SplittingStressTest.cs:47:13:47:15 | access to parameter b22 | 1 | -| SplittingStressTest.cs:48:13:48:13 | ; | 1 | -| SplittingStressTest.cs:49:9:50:13 | if (...) ... | 1 | -| SplittingStressTest.cs:49:13:49:15 | access to parameter b23 | 1 | -| SplittingStressTest.cs:50:13:50:13 | ; | 1 | -| SplittingStressTest.cs:51:9:52:13 | if (...) ... | 1 | -| SplittingStressTest.cs:51:13:51:15 | access to parameter b24 | 1 | -| SplittingStressTest.cs:52:13:52:13 | ; | 1 | -| SplittingStressTest.cs:53:9:54:13 | if (...) ... | 1 | -| SplittingStressTest.cs:53:13:53:15 | access to parameter b25 | 1 | -| SplittingStressTest.cs:54:13:54:13 | ; | 1 | -| SplittingStressTest.cs:55:9:56:13 | if (...) ... | 1 | -| SplittingStressTest.cs:55:13:55:15 | access to parameter b26 | 1 | -| SplittingStressTest.cs:56:13:56:13 | ; | 1 | -| SplittingStressTest.cs:57:9:58:13 | if (...) ... | 1 | -| SplittingStressTest.cs:57:13:57:15 | access to parameter b27 | 1 | -| SplittingStressTest.cs:58:13:58:13 | ; | 1 | -| SplittingStressTest.cs:59:9:60:13 | if (...) ... | 1 | -| SplittingStressTest.cs:59:13:59:15 | access to parameter b28 | 1 | -| SplittingStressTest.cs:60:13:60:13 | ; | 1 | -| SplittingStressTest.cs:61:9:62:13 | if (...) ... | 1 | -| SplittingStressTest.cs:61:13:61:15 | access to parameter b29 | 1 | -| SplittingStressTest.cs:62:13:62:13 | ; | 1 | -| SplittingStressTest.cs:63:9:64:13 | if (...) ... | 1 | -| SplittingStressTest.cs:63:13:63:15 | access to parameter b30 | 1 | -| SplittingStressTest.cs:64:13:64:13 | ; | 1 | -| SplittingStressTest.cs:65:9:66:13 | if (...) ... | 1 | -| SplittingStressTest.cs:65:13:65:15 | access to parameter b31 | 1 | -| SplittingStressTest.cs:66:13:66:13 | ; | 1 | -| SplittingStressTest.cs:67:9:68:13 | if (...) ... | 1 | -| SplittingStressTest.cs:67:13:67:15 | access to parameter b32 | 1 | -| SplittingStressTest.cs:68:13:68:13 | ; | 1 | -| SplittingStressTest.cs:69:9:70:13 | if (...) ... | 1 | -| SplittingStressTest.cs:69:13:69:15 | access to parameter b33 | 1 | -| SplittingStressTest.cs:70:13:70:13 | ; | 1 | -| SplittingStressTest.cs:71:9:72:13 | if (...) ... | 1 | -| SplittingStressTest.cs:71:13:71:15 | access to parameter b34 | 1 | -| SplittingStressTest.cs:72:13:72:13 | ; | 1 | -| SplittingStressTest.cs:73:9:74:13 | if (...) ... | 1 | -| SplittingStressTest.cs:73:13:73:15 | access to parameter b35 | 1 | -| SplittingStressTest.cs:74:13:74:13 | ; | 1 | -| SplittingStressTest.cs:75:9:76:13 | if (...) ... | 1 | -| SplittingStressTest.cs:75:13:75:15 | access to parameter b36 | 1 | -| SplittingStressTest.cs:76:13:76:13 | ; | 1 | -| SplittingStressTest.cs:77:9:78:13 | if (...) ... | 1 | -| SplittingStressTest.cs:77:13:77:15 | access to parameter b37 | 1 | -| SplittingStressTest.cs:78:13:78:13 | ; | 1 | -| SplittingStressTest.cs:79:9:80:13 | if (...) ... | 1 | -| SplittingStressTest.cs:79:13:79:15 | access to parameter b38 | 1 | -| SplittingStressTest.cs:80:13:80:13 | ; | 1 | -| SplittingStressTest.cs:81:9:82:13 | if (...) ... | 1 | -| SplittingStressTest.cs:81:13:81:15 | access to parameter b39 | 1 | -| SplittingStressTest.cs:82:13:82:13 | ; | 1 | -| SplittingStressTest.cs:83:9:84:13 | if (...) ... | 1 | -| SplittingStressTest.cs:83:13:83:15 | access to parameter b40 | 1 | -| SplittingStressTest.cs:84:13:84:13 | ; | 1 | -| SplittingStressTest.cs:85:9:85:9 | ; | 1 | -| SplittingStressTest.cs:87:9:88:13 | if (...) ... | 1 | -| SplittingStressTest.cs:87:13:87:14 | access to parameter b1 | 1 | -| SplittingStressTest.cs:88:13:88:13 | ; | 1 | -| SplittingStressTest.cs:89:9:90:13 | if (...) ... | 1 | -| SplittingStressTest.cs:89:13:89:14 | access to parameter b2 | 1 | -| SplittingStressTest.cs:90:13:90:13 | ; | 1 | -| SplittingStressTest.cs:91:9:92:13 | if (...) ... | 1 | -| SplittingStressTest.cs:91:13:91:14 | access to parameter b3 | 1 | -| SplittingStressTest.cs:92:13:92:13 | ; | 1 | -| SplittingStressTest.cs:93:9:94:13 | if (...) ... | 1 | -| SplittingStressTest.cs:93:13:93:14 | access to parameter b4 | 1 | -| SplittingStressTest.cs:94:13:94:13 | ; | 1 | -| SplittingStressTest.cs:95:9:96:13 | if (...) ... | 1 | -| SplittingStressTest.cs:95:13:95:14 | access to parameter b5 | 1 | -| SplittingStressTest.cs:96:13:96:13 | ; | 1 | -| SplittingStressTest.cs:97:9:98:13 | if (...) ... | 1 | -| SplittingStressTest.cs:97:13:97:14 | access to parameter b6 | 1 | -| SplittingStressTest.cs:98:13:98:13 | ; | 1 | -| SplittingStressTest.cs:99:9:100:13 | if (...) ... | 1 | -| SplittingStressTest.cs:99:13:99:14 | access to parameter b7 | 1 | -| SplittingStressTest.cs:100:13:100:13 | ; | 1 | -| SplittingStressTest.cs:101:9:102:13 | if (...) ... | 1 | -| SplittingStressTest.cs:101:13:101:14 | access to parameter b8 | 1 | -| SplittingStressTest.cs:102:13:102:13 | ; | 1 | -| SplittingStressTest.cs:103:9:104:13 | if (...) ... | 1 | -| SplittingStressTest.cs:103:13:103:14 | access to parameter b9 | 1 | -| SplittingStressTest.cs:104:13:104:13 | ; | 1 | -| SplittingStressTest.cs:105:9:106:13 | if (...) ... | 1 | -| SplittingStressTest.cs:105:13:105:15 | access to parameter b10 | 1 | -| SplittingStressTest.cs:106:13:106:13 | ; | 1 | -| SplittingStressTest.cs:107:9:108:13 | if (...) ... | 1 | -| SplittingStressTest.cs:107:13:107:15 | access to parameter b11 | 1 | -| SplittingStressTest.cs:108:13:108:13 | ; | 1 | -| SplittingStressTest.cs:109:9:110:13 | if (...) ... | 1 | -| SplittingStressTest.cs:109:13:109:15 | access to parameter b12 | 1 | -| SplittingStressTest.cs:110:13:110:13 | ; | 1 | -| SplittingStressTest.cs:111:9:112:13 | if (...) ... | 1 | -| SplittingStressTest.cs:111:13:111:15 | access to parameter b13 | 1 | -| SplittingStressTest.cs:112:13:112:13 | ; | 1 | -| SplittingStressTest.cs:113:9:114:13 | if (...) ... | 1 | -| SplittingStressTest.cs:113:13:113:15 | access to parameter b14 | 1 | -| SplittingStressTest.cs:114:13:114:13 | ; | 1 | -| SplittingStressTest.cs:115:9:116:13 | if (...) ... | 1 | -| SplittingStressTest.cs:115:13:115:15 | access to parameter b15 | 1 | -| SplittingStressTest.cs:116:13:116:13 | ; | 1 | -| SplittingStressTest.cs:117:9:118:13 | if (...) ... | 1 | -| SplittingStressTest.cs:117:13:117:15 | access to parameter b16 | 1 | -| SplittingStressTest.cs:118:13:118:13 | ; | 1 | -| SplittingStressTest.cs:119:9:120:13 | if (...) ... | 1 | -| SplittingStressTest.cs:119:13:119:15 | access to parameter b17 | 1 | -| SplittingStressTest.cs:120:13:120:13 | ; | 1 | -| SplittingStressTest.cs:121:9:122:13 | if (...) ... | 1 | -| SplittingStressTest.cs:121:13:121:15 | access to parameter b18 | 1 | -| SplittingStressTest.cs:122:13:122:13 | ; | 1 | -| SplittingStressTest.cs:123:9:124:13 | if (...) ... | 1 | -| SplittingStressTest.cs:123:13:123:15 | access to parameter b19 | 1 | -| SplittingStressTest.cs:124:13:124:13 | ; | 1 | -| SplittingStressTest.cs:125:9:126:13 | if (...) ... | 1 | -| SplittingStressTest.cs:125:13:125:15 | access to parameter b20 | 1 | -| SplittingStressTest.cs:126:13:126:13 | ; | 1 | -| SplittingStressTest.cs:127:9:128:13 | if (...) ... | 1 | -| SplittingStressTest.cs:127:13:127:15 | access to parameter b21 | 1 | -| SplittingStressTest.cs:128:13:128:13 | ; | 1 | -| SplittingStressTest.cs:129:9:130:13 | if (...) ... | 1 | -| SplittingStressTest.cs:129:13:129:15 | access to parameter b22 | 1 | -| SplittingStressTest.cs:130:13:130:13 | ; | 1 | -| SplittingStressTest.cs:131:9:132:13 | if (...) ... | 1 | -| SplittingStressTest.cs:131:13:131:15 | access to parameter b23 | 1 | -| SplittingStressTest.cs:132:13:132:13 | ; | 1 | -| SplittingStressTest.cs:133:9:134:13 | if (...) ... | 1 | -| SplittingStressTest.cs:133:13:133:15 | access to parameter b24 | 1 | -| SplittingStressTest.cs:134:13:134:13 | ; | 1 | -| SplittingStressTest.cs:135:9:136:13 | if (...) ... | 1 | -| SplittingStressTest.cs:135:13:135:15 | access to parameter b25 | 1 | -| SplittingStressTest.cs:136:13:136:13 | ; | 1 | -| SplittingStressTest.cs:137:9:138:13 | if (...) ... | 1 | -| SplittingStressTest.cs:137:13:137:15 | access to parameter b26 | 1 | -| SplittingStressTest.cs:138:13:138:13 | ; | 1 | -| SplittingStressTest.cs:139:9:140:13 | if (...) ... | 1 | -| SplittingStressTest.cs:139:13:139:15 | access to parameter b27 | 1 | -| SplittingStressTest.cs:140:13:140:13 | ; | 1 | -| SplittingStressTest.cs:141:9:142:13 | if (...) ... | 1 | -| SplittingStressTest.cs:141:13:141:15 | access to parameter b28 | 1 | -| SplittingStressTest.cs:142:13:142:13 | ; | 1 | -| SplittingStressTest.cs:143:9:144:13 | if (...) ... | 1 | -| SplittingStressTest.cs:143:13:143:15 | access to parameter b29 | 1 | -| SplittingStressTest.cs:144:13:144:13 | ; | 1 | -| SplittingStressTest.cs:145:9:146:13 | if (...) ... | 1 | -| SplittingStressTest.cs:145:13:145:15 | access to parameter b30 | 1 | -| SplittingStressTest.cs:146:13:146:13 | ; | 1 | -| SplittingStressTest.cs:147:9:148:13 | if (...) ... | 1 | -| SplittingStressTest.cs:147:13:147:15 | access to parameter b31 | 1 | -| SplittingStressTest.cs:148:13:148:13 | ; | 1 | -| SplittingStressTest.cs:149:9:150:13 | if (...) ... | 1 | -| SplittingStressTest.cs:149:13:149:15 | access to parameter b32 | 1 | -| SplittingStressTest.cs:150:13:150:13 | ; | 1 | -| SplittingStressTest.cs:151:9:152:13 | if (...) ... | 1 | -| SplittingStressTest.cs:151:13:151:15 | access to parameter b33 | 1 | -| SplittingStressTest.cs:152:13:152:13 | ; | 1 | -| SplittingStressTest.cs:153:9:154:13 | if (...) ... | 1 | -| SplittingStressTest.cs:153:13:153:15 | access to parameter b34 | 1 | -| SplittingStressTest.cs:154:13:154:13 | ; | 1 | -| SplittingStressTest.cs:155:9:156:13 | if (...) ... | 1 | -| SplittingStressTest.cs:155:13:155:15 | access to parameter b35 | 1 | -| SplittingStressTest.cs:156:13:156:13 | ; | 1 | -| SplittingStressTest.cs:157:9:158:13 | if (...) ... | 1 | -| SplittingStressTest.cs:157:13:157:15 | access to parameter b36 | 1 | -| SplittingStressTest.cs:158:13:158:13 | ; | 1 | -| SplittingStressTest.cs:159:9:160:13 | if (...) ... | 1 | -| SplittingStressTest.cs:159:13:159:15 | access to parameter b37 | 1 | -| SplittingStressTest.cs:160:13:160:13 | ; | 1 | -| SplittingStressTest.cs:161:9:162:13 | if (...) ... | 1 | -| SplittingStressTest.cs:161:13:161:15 | access to parameter b38 | 1 | -| SplittingStressTest.cs:162:13:162:13 | ; | 1 | -| SplittingStressTest.cs:163:9:164:13 | if (...) ... | 1 | -| SplittingStressTest.cs:163:13:163:15 | access to parameter b39 | 1 | -| SplittingStressTest.cs:164:13:164:13 | ; | 1 | -| SplittingStressTest.cs:165:9:166:13 | if (...) ... | 1 | -| SplittingStressTest.cs:165:13:165:15 | access to parameter b40 | 1 | -| SplittingStressTest.cs:166:13:166:13 | ; | 1 | -| SplittingStressTest.cs:167:9:167:9 | ; | 1 | -| SplittingStressTest.cs:171:5:320:5 | {...} | 1 | -| SplittingStressTest.cs:172:9:319:9 | while (...) ... | 1 | -| SplittingStressTest.cs:172:16:172:16 | access to parameter i | 1 | -| SplittingStressTest.cs:172:16:172:18 | ...-- | 1 | -| SplittingStressTest.cs:172:16:172:22 | ... > ... | 1 | -| SplittingStressTest.cs:172:22:172:22 | 0 | 1 | -| SplittingStressTest.cs:173:9:319:9 | {...} | 1 | -| SplittingStressTest.cs:174:13:178:13 | if (...) ... | 1 | -| SplittingStressTest.cs:174:17:174:17 | access to parameter i | 1 | -| SplittingStressTest.cs:174:17:174:22 | ... == ... | 1 | -| SplittingStressTest.cs:174:22:174:22 | 1 | 1 | -| SplittingStressTest.cs:175:13:178:13 | {...} | 1 | -| SplittingStressTest.cs:176:17:177:21 | if (...) ... | 1 | -| SplittingStressTest.cs:176:21:176:22 | access to parameter b1 | 1 | -| SplittingStressTest.cs:177:21:177:21 | ; | 1 | -| SplittingStressTest.cs:179:13:183:13 | if (...) ... | 1 | -| SplittingStressTest.cs:179:17:179:17 | access to parameter i | 1 | -| SplittingStressTest.cs:179:17:179:22 | ... == ... | 1 | -| SplittingStressTest.cs:179:22:179:22 | 2 | 1 | -| SplittingStressTest.cs:180:13:183:13 | {...} | 1 | -| SplittingStressTest.cs:181:17:182:21 | if (...) ... | 1 | -| SplittingStressTest.cs:181:21:181:22 | access to parameter b2 | 1 | -| SplittingStressTest.cs:182:21:182:21 | ; | 1 | -| SplittingStressTest.cs:184:13:188:13 | if (...) ... | 1 | -| SplittingStressTest.cs:184:17:184:17 | access to parameter i | 1 | -| SplittingStressTest.cs:184:17:184:22 | ... == ... | 1 | -| SplittingStressTest.cs:184:22:184:22 | 3 | 1 | -| SplittingStressTest.cs:185:13:188:13 | {...} | 1 | -| SplittingStressTest.cs:186:17:187:21 | if (...) ... | 1 | -| SplittingStressTest.cs:186:21:186:22 | access to parameter b3 | 1 | -| SplittingStressTest.cs:187:21:187:21 | ; | 1 | -| SplittingStressTest.cs:189:13:193:13 | if (...) ... | 1 | -| SplittingStressTest.cs:189:17:189:17 | access to parameter i | 1 | -| SplittingStressTest.cs:189:17:189:22 | ... == ... | 1 | -| SplittingStressTest.cs:189:22:189:22 | 4 | 1 | -| SplittingStressTest.cs:190:13:193:13 | {...} | 1 | -| SplittingStressTest.cs:191:17:192:21 | if (...) ... | 1 | -| SplittingStressTest.cs:191:21:191:22 | access to parameter b4 | 1 | -| SplittingStressTest.cs:192:21:192:21 | ; | 1 | -| SplittingStressTest.cs:194:13:198:13 | if (...) ... | 1 | -| SplittingStressTest.cs:194:17:194:17 | access to parameter i | 1 | -| SplittingStressTest.cs:194:17:194:22 | ... == ... | 1 | -| SplittingStressTest.cs:194:22:194:22 | 5 | 1 | -| SplittingStressTest.cs:195:13:198:13 | {...} | 1 | -| SplittingStressTest.cs:196:17:197:21 | if (...) ... | 1 | -| SplittingStressTest.cs:196:21:196:22 | access to parameter b5 | 1 | -| SplittingStressTest.cs:197:21:197:21 | ; | 1 | -| SplittingStressTest.cs:199:13:203:13 | if (...) ... | 1 | -| SplittingStressTest.cs:199:17:199:17 | access to parameter i | 1 | -| SplittingStressTest.cs:199:17:199:22 | ... == ... | 1 | -| SplittingStressTest.cs:199:22:199:22 | 6 | 1 | -| SplittingStressTest.cs:200:13:203:13 | {...} | 1 | -| SplittingStressTest.cs:201:17:202:21 | if (...) ... | 1 | -| SplittingStressTest.cs:201:21:201:22 | access to parameter b6 | 1 | -| SplittingStressTest.cs:202:21:202:21 | ; | 1 | -| SplittingStressTest.cs:204:13:208:13 | if (...) ... | 1 | -| SplittingStressTest.cs:204:17:204:17 | access to parameter i | 1 | -| SplittingStressTest.cs:204:17:204:22 | ... == ... | 1 | -| SplittingStressTest.cs:204:22:204:22 | 7 | 1 | -| SplittingStressTest.cs:205:13:208:13 | {...} | 1 | -| SplittingStressTest.cs:206:17:207:21 | if (...) ... | 1 | -| SplittingStressTest.cs:206:21:206:22 | access to parameter b7 | 1 | -| SplittingStressTest.cs:207:21:207:21 | ; | 1 | -| SplittingStressTest.cs:209:13:213:13 | if (...) ... | 1 | -| SplittingStressTest.cs:209:17:209:17 | access to parameter i | 1 | -| SplittingStressTest.cs:209:17:209:22 | ... == ... | 1 | -| SplittingStressTest.cs:209:22:209:22 | 8 | 1 | -| SplittingStressTest.cs:210:13:213:13 | {...} | 1 | -| SplittingStressTest.cs:211:17:212:21 | if (...) ... | 1 | -| SplittingStressTest.cs:211:21:211:22 | access to parameter b8 | 1 | -| SplittingStressTest.cs:212:21:212:21 | ; | 1 | -| SplittingStressTest.cs:214:13:218:13 | if (...) ... | 1 | -| SplittingStressTest.cs:214:17:214:17 | access to parameter i | 1 | -| SplittingStressTest.cs:214:17:214:22 | ... == ... | 1 | -| SplittingStressTest.cs:214:22:214:22 | 9 | 1 | -| SplittingStressTest.cs:215:13:218:13 | {...} | 1 | -| SplittingStressTest.cs:216:17:217:21 | if (...) ... | 1 | -| SplittingStressTest.cs:216:21:216:22 | access to parameter b9 | 1 | -| SplittingStressTest.cs:217:21:217:21 | ; | 1 | -| SplittingStressTest.cs:219:13:223:13 | if (...) ... | 1 | -| SplittingStressTest.cs:219:17:219:17 | access to parameter i | 1 | -| SplittingStressTest.cs:219:17:219:23 | ... == ... | 1 | -| SplittingStressTest.cs:219:22:219:23 | 10 | 1 | -| SplittingStressTest.cs:220:13:223:13 | {...} | 1 | -| SplittingStressTest.cs:221:17:222:21 | if (...) ... | 1 | -| SplittingStressTest.cs:221:21:221:23 | access to parameter b10 | 1 | -| SplittingStressTest.cs:222:21:222:21 | ; | 1 | -| SplittingStressTest.cs:224:13:228:13 | if (...) ... | 1 | -| SplittingStressTest.cs:224:17:224:17 | access to parameter i | 1 | -| SplittingStressTest.cs:224:17:224:23 | ... == ... | 1 | -| SplittingStressTest.cs:224:22:224:23 | 11 | 1 | -| SplittingStressTest.cs:225:13:228:13 | {...} | 1 | -| SplittingStressTest.cs:226:17:227:21 | if (...) ... | 1 | -| SplittingStressTest.cs:226:21:226:23 | access to parameter b11 | 1 | -| SplittingStressTest.cs:227:21:227:21 | ; | 1 | -| SplittingStressTest.cs:229:13:233:13 | if (...) ... | 1 | -| SplittingStressTest.cs:229:17:229:17 | access to parameter i | 1 | -| SplittingStressTest.cs:229:17:229:23 | ... == ... | 1 | -| SplittingStressTest.cs:229:22:229:23 | 12 | 1 | -| SplittingStressTest.cs:230:13:233:13 | {...} | 1 | -| SplittingStressTest.cs:231:17:232:21 | if (...) ... | 1 | -| SplittingStressTest.cs:231:21:231:23 | access to parameter b12 | 1 | -| SplittingStressTest.cs:232:21:232:21 | ; | 1 | -| SplittingStressTest.cs:234:13:238:13 | if (...) ... | 1 | -| SplittingStressTest.cs:234:17:234:17 | access to parameter i | 1 | -| SplittingStressTest.cs:234:17:234:23 | ... == ... | 1 | -| SplittingStressTest.cs:234:22:234:23 | 13 | 1 | -| SplittingStressTest.cs:235:13:238:13 | {...} | 1 | -| SplittingStressTest.cs:236:17:237:21 | if (...) ... | 1 | -| SplittingStressTest.cs:236:21:236:23 | access to parameter b13 | 1 | -| SplittingStressTest.cs:237:21:237:21 | ; | 1 | -| SplittingStressTest.cs:239:13:243:13 | if (...) ... | 1 | -| SplittingStressTest.cs:239:17:239:17 | access to parameter i | 1 | -| SplittingStressTest.cs:239:17:239:23 | ... == ... | 1 | -| SplittingStressTest.cs:239:22:239:23 | 14 | 1 | -| SplittingStressTest.cs:240:13:243:13 | {...} | 1 | -| SplittingStressTest.cs:241:17:242:21 | if (...) ... | 1 | -| SplittingStressTest.cs:241:21:241:23 | access to parameter b14 | 1 | -| SplittingStressTest.cs:242:21:242:21 | ; | 1 | -| SplittingStressTest.cs:244:13:248:13 | if (...) ... | 1 | -| SplittingStressTest.cs:244:17:244:17 | access to parameter i | 1 | -| SplittingStressTest.cs:244:17:244:23 | ... == ... | 1 | -| SplittingStressTest.cs:244:22:244:23 | 15 | 1 | -| SplittingStressTest.cs:245:13:248:13 | {...} | 1 | -| SplittingStressTest.cs:246:17:247:21 | if (...) ... | 1 | -| SplittingStressTest.cs:246:21:246:23 | access to parameter b15 | 1 | -| SplittingStressTest.cs:247:21:247:21 | ; | 1 | -| SplittingStressTest.cs:249:13:253:13 | if (...) ... | 1 | -| SplittingStressTest.cs:249:17:249:17 | access to parameter i | 1 | -| SplittingStressTest.cs:249:17:249:23 | ... == ... | 1 | -| SplittingStressTest.cs:249:22:249:23 | 16 | 1 | -| SplittingStressTest.cs:250:13:253:13 | {...} | 1 | -| SplittingStressTest.cs:251:17:252:21 | if (...) ... | 1 | -| SplittingStressTest.cs:251:21:251:23 | access to parameter b16 | 1 | -| SplittingStressTest.cs:252:21:252:21 | ; | 1 | -| SplittingStressTest.cs:254:13:258:13 | if (...) ... | 1 | -| SplittingStressTest.cs:254:17:254:17 | access to parameter i | 1 | -| SplittingStressTest.cs:254:17:254:23 | ... == ... | 1 | -| SplittingStressTest.cs:254:22:254:23 | 17 | 1 | -| SplittingStressTest.cs:255:13:258:13 | {...} | 1 | -| SplittingStressTest.cs:256:17:257:21 | if (...) ... | 1 | -| SplittingStressTest.cs:256:21:256:23 | access to parameter b17 | 1 | -| SplittingStressTest.cs:257:21:257:21 | ; | 1 | -| SplittingStressTest.cs:259:13:263:13 | if (...) ... | 1 | -| SplittingStressTest.cs:259:17:259:17 | access to parameter i | 1 | -| SplittingStressTest.cs:259:17:259:23 | ... == ... | 1 | -| SplittingStressTest.cs:259:22:259:23 | 18 | 1 | -| SplittingStressTest.cs:260:13:263:13 | {...} | 1 | -| SplittingStressTest.cs:261:17:262:21 | if (...) ... | 1 | -| SplittingStressTest.cs:261:21:261:23 | access to parameter b18 | 1 | -| SplittingStressTest.cs:262:21:262:21 | ; | 1 | -| SplittingStressTest.cs:264:13:268:13 | if (...) ... | 1 | -| SplittingStressTest.cs:264:17:264:17 | access to parameter i | 1 | -| SplittingStressTest.cs:264:17:264:23 | ... == ... | 1 | -| SplittingStressTest.cs:264:22:264:23 | 19 | 1 | -| SplittingStressTest.cs:265:13:268:13 | {...} | 1 | -| SplittingStressTest.cs:266:17:267:21 | if (...) ... | 1 | -| SplittingStressTest.cs:266:21:266:23 | access to parameter b19 | 1 | -| SplittingStressTest.cs:267:21:267:21 | ; | 1 | -| SplittingStressTest.cs:269:13:273:13 | if (...) ... | 1 | -| SplittingStressTest.cs:269:17:269:17 | access to parameter i | 1 | -| SplittingStressTest.cs:269:17:269:23 | ... == ... | 1 | -| SplittingStressTest.cs:269:22:269:23 | 20 | 1 | -| SplittingStressTest.cs:270:13:273:13 | {...} | 1 | -| SplittingStressTest.cs:271:17:272:21 | if (...) ... | 1 | -| SplittingStressTest.cs:271:21:271:23 | access to parameter b20 | 1 | -| SplittingStressTest.cs:272:21:272:21 | ; | 1 | -| SplittingStressTest.cs:274:13:278:13 | if (...) ... | 1 | -| SplittingStressTest.cs:274:17:274:17 | access to parameter i | 1 | -| SplittingStressTest.cs:274:17:274:23 | ... == ... | 1 | -| SplittingStressTest.cs:274:22:274:23 | 21 | 1 | -| SplittingStressTest.cs:275:13:278:13 | {...} | 1 | -| SplittingStressTest.cs:276:17:277:21 | if (...) ... | 1 | -| SplittingStressTest.cs:276:21:276:23 | access to parameter b21 | 1 | -| SplittingStressTest.cs:277:21:277:21 | ; | 1 | -| SplittingStressTest.cs:279:13:283:13 | if (...) ... | 1 | -| SplittingStressTest.cs:279:17:279:17 | access to parameter i | 1 | -| SplittingStressTest.cs:279:17:279:23 | ... == ... | 1 | -| SplittingStressTest.cs:279:22:279:23 | 22 | 1 | -| SplittingStressTest.cs:280:13:283:13 | {...} | 1 | -| SplittingStressTest.cs:281:17:282:21 | if (...) ... | 1 | -| SplittingStressTest.cs:281:21:281:23 | access to parameter b22 | 1 | -| SplittingStressTest.cs:282:21:282:21 | ; | 1 | -| SplittingStressTest.cs:284:13:288:13 | if (...) ... | 1 | -| SplittingStressTest.cs:284:17:284:17 | access to parameter i | 1 | -| SplittingStressTest.cs:284:17:284:23 | ... == ... | 1 | -| SplittingStressTest.cs:284:22:284:23 | 23 | 1 | -| SplittingStressTest.cs:285:13:288:13 | {...} | 1 | -| SplittingStressTest.cs:286:17:287:21 | if (...) ... | 1 | -| SplittingStressTest.cs:286:21:286:23 | access to parameter b23 | 1 | -| SplittingStressTest.cs:287:21:287:21 | ; | 1 | -| SplittingStressTest.cs:289:13:293:13 | if (...) ... | 1 | -| SplittingStressTest.cs:289:17:289:17 | access to parameter i | 1 | -| SplittingStressTest.cs:289:17:289:23 | ... == ... | 1 | -| SplittingStressTest.cs:289:22:289:23 | 24 | 1 | -| SplittingStressTest.cs:290:13:293:13 | {...} | 1 | -| SplittingStressTest.cs:291:17:292:21 | if (...) ... | 1 | -| SplittingStressTest.cs:291:21:291:23 | access to parameter b24 | 1 | -| SplittingStressTest.cs:292:21:292:21 | ; | 1 | -| SplittingStressTest.cs:294:13:298:13 | if (...) ... | 1 | -| SplittingStressTest.cs:294:17:294:17 | access to parameter i | 1 | -| SplittingStressTest.cs:294:17:294:23 | ... == ... | 1 | -| SplittingStressTest.cs:294:22:294:23 | 25 | 1 | -| SplittingStressTest.cs:295:13:298:13 | {...} | 1 | -| SplittingStressTest.cs:296:17:297:21 | if (...) ... | 1 | -| SplittingStressTest.cs:296:21:296:23 | access to parameter b25 | 1 | -| SplittingStressTest.cs:297:21:297:21 | ; | 1 | -| SplittingStressTest.cs:299:13:303:13 | if (...) ... | 1 | -| SplittingStressTest.cs:299:17:299:17 | access to parameter i | 1 | -| SplittingStressTest.cs:299:17:299:23 | ... == ... | 1 | -| SplittingStressTest.cs:299:22:299:23 | 26 | 1 | -| SplittingStressTest.cs:300:13:303:13 | {...} | 1 | -| SplittingStressTest.cs:301:17:302:21 | if (...) ... | 1 | -| SplittingStressTest.cs:301:21:301:23 | access to parameter b26 | 1 | -| SplittingStressTest.cs:302:21:302:21 | ; | 1 | -| SplittingStressTest.cs:304:13:308:13 | if (...) ... | 1 | -| SplittingStressTest.cs:304:17:304:17 | access to parameter i | 1 | -| SplittingStressTest.cs:304:17:304:23 | ... == ... | 1 | -| SplittingStressTest.cs:304:22:304:23 | 27 | 1 | -| SplittingStressTest.cs:305:13:308:13 | {...} | 1 | -| SplittingStressTest.cs:306:17:307:21 | if (...) ... | 1 | -| SplittingStressTest.cs:306:21:306:23 | access to parameter b27 | 1 | -| SplittingStressTest.cs:307:21:307:21 | ; | 1 | -| SplittingStressTest.cs:309:13:313:13 | if (...) ... | 1 | -| SplittingStressTest.cs:309:17:309:17 | access to parameter i | 1 | -| SplittingStressTest.cs:309:17:309:23 | ... == ... | 1 | -| SplittingStressTest.cs:309:22:309:23 | 28 | 1 | -| SplittingStressTest.cs:310:13:313:13 | {...} | 1 | -| SplittingStressTest.cs:311:17:312:21 | if (...) ... | 1 | -| SplittingStressTest.cs:311:21:311:23 | access to parameter b28 | 1 | -| SplittingStressTest.cs:312:21:312:21 | ; | 1 | -| SplittingStressTest.cs:314:13:318:13 | if (...) ... | 1 | -| SplittingStressTest.cs:314:17:314:17 | access to parameter i | 1 | -| SplittingStressTest.cs:314:17:314:23 | ... == ... | 1 | -| SplittingStressTest.cs:314:22:314:23 | 29 | 1 | -| SplittingStressTest.cs:315:13:318:13 | {...} | 1 | -| SplittingStressTest.cs:316:17:317:21 | if (...) ... | 1 | -| SplittingStressTest.cs:316:21:316:23 | access to parameter b29 | 1 | -| SplittingStressTest.cs:317:21:317:21 | ; | 1 | -ssaDef -| SplittingStressTest.cs:3:18:3:19 | SSA param(b1) | -| SplittingStressTest.cs:3:27:3:28 | SSA param(b2) | -| SplittingStressTest.cs:3:36:3:37 | SSA param(b3) | -| SplittingStressTest.cs:3:45:3:46 | SSA param(b4) | -| SplittingStressTest.cs:3:54:3:55 | SSA param(b5) | -| SplittingStressTest.cs:3:63:3:64 | SSA param(b6) | -| SplittingStressTest.cs:3:72:3:73 | SSA param(b7) | -| SplittingStressTest.cs:3:81:3:82 | SSA param(b8) | -| SplittingStressTest.cs:3:90:3:91 | SSA param(b9) | -| SplittingStressTest.cs:3:99:3:101 | SSA param(b10) | -| SplittingStressTest.cs:3:109:3:111 | SSA param(b11) | -| SplittingStressTest.cs:3:119:3:121 | SSA param(b12) | -| SplittingStressTest.cs:3:129:3:131 | SSA param(b13) | -| SplittingStressTest.cs:3:139:3:141 | SSA param(b14) | -| SplittingStressTest.cs:3:149:3:151 | SSA param(b15) | -| SplittingStressTest.cs:3:159:3:161 | SSA param(b16) | -| SplittingStressTest.cs:3:169:3:171 | SSA param(b17) | -| SplittingStressTest.cs:3:179:3:181 | SSA param(b18) | -| SplittingStressTest.cs:3:189:3:191 | SSA param(b19) | -| SplittingStressTest.cs:3:199:3:201 | SSA param(b20) | -| SplittingStressTest.cs:3:209:3:211 | SSA param(b21) | -| SplittingStressTest.cs:3:219:3:221 | SSA param(b22) | -| SplittingStressTest.cs:3:229:3:231 | SSA param(b23) | -| SplittingStressTest.cs:3:239:3:241 | SSA param(b24) | -| SplittingStressTest.cs:3:249:3:251 | SSA param(b25) | -| SplittingStressTest.cs:3:259:3:261 | SSA param(b26) | -| SplittingStressTest.cs:3:269:3:271 | SSA param(b27) | -| SplittingStressTest.cs:3:279:3:281 | SSA param(b28) | -| SplittingStressTest.cs:3:289:3:291 | SSA param(b29) | -| SplittingStressTest.cs:3:299:3:301 | SSA param(b30) | -| SplittingStressTest.cs:3:309:3:311 | SSA param(b31) | -| SplittingStressTest.cs:3:319:3:321 | SSA param(b32) | -| SplittingStressTest.cs:3:329:3:331 | SSA param(b33) | -| SplittingStressTest.cs:3:339:3:341 | SSA param(b34) | -| SplittingStressTest.cs:3:349:3:351 | SSA param(b35) | -| SplittingStressTest.cs:3:359:3:361 | SSA param(b36) | -| SplittingStressTest.cs:3:369:3:371 | SSA param(b37) | -| SplittingStressTest.cs:3:379:3:381 | SSA param(b38) | -| SplittingStressTest.cs:3:389:3:391 | SSA param(b39) | -| SplittingStressTest.cs:3:399:3:401 | SSA param(b40) | -| SplittingStressTest.cs:170:17:170:17 | SSA param(i) | -| SplittingStressTest.cs:170:25:170:26 | SSA param(b1) | -| SplittingStressTest.cs:170:34:170:35 | SSA param(b2) | -| SplittingStressTest.cs:170:43:170:44 | SSA param(b3) | -| SplittingStressTest.cs:170:52:170:53 | SSA param(b4) | -| SplittingStressTest.cs:170:61:170:62 | SSA param(b5) | -| SplittingStressTest.cs:170:70:170:71 | SSA param(b6) | -| SplittingStressTest.cs:170:79:170:80 | SSA param(b7) | -| SplittingStressTest.cs:170:88:170:89 | SSA param(b8) | -| SplittingStressTest.cs:170:97:170:98 | SSA param(b9) | -| SplittingStressTest.cs:170:106:170:108 | SSA param(b10) | -| SplittingStressTest.cs:170:116:170:118 | SSA param(b11) | -| SplittingStressTest.cs:170:126:170:128 | SSA param(b12) | -| SplittingStressTest.cs:170:136:170:138 | SSA param(b13) | -| SplittingStressTest.cs:170:146:170:148 | SSA param(b14) | -| SplittingStressTest.cs:170:156:170:158 | SSA param(b15) | -| SplittingStressTest.cs:170:166:170:168 | SSA param(b16) | -| SplittingStressTest.cs:170:176:170:178 | SSA param(b17) | -| SplittingStressTest.cs:170:186:170:188 | SSA param(b18) | -| SplittingStressTest.cs:170:196:170:198 | SSA param(b19) | -| SplittingStressTest.cs:170:206:170:208 | SSA param(b20) | -| SplittingStressTest.cs:170:216:170:218 | SSA param(b21) | -| SplittingStressTest.cs:170:226:170:228 | SSA param(b22) | -| SplittingStressTest.cs:170:236:170:238 | SSA param(b23) | -| SplittingStressTest.cs:170:246:170:248 | SSA param(b24) | -| SplittingStressTest.cs:170:256:170:258 | SSA param(b25) | -| SplittingStressTest.cs:170:266:170:268 | SSA param(b26) | -| SplittingStressTest.cs:170:276:170:278 | SSA param(b27) | -| SplittingStressTest.cs:170:286:170:288 | SSA param(b28) | -| SplittingStressTest.cs:170:296:170:298 | SSA param(b29) | -| SplittingStressTest.cs:172:16:172:16 | SSA phi(i) | -| SplittingStressTest.cs:172:16:172:18 | SSA def(i) | diff --git a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.ql b/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.ql deleted file mode 100644 index c1b5633912d..00000000000 --- a/csharp/ql/test/library-tests/controlflow/splits/SplittingStressTest.ql +++ /dev/null @@ -1,8 +0,0 @@ -import csharp - -query predicate countSplits(ControlFlowElement cfe, int i) { - not cfe.fromLibrary() and - i = strictcount(ControlFlow::Nodes::ElementNode n | n.getAstNode() = cfe) -} - -query predicate ssaDef(Ssa::Definition def) { any() } diff --git a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected index 221b551b1f0..13036f0f0ae 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected @@ -119,13 +119,6 @@ | Properties.cs:74:23:74:23 | a | Properties.cs:74:23:74:54 | Action a = ... | Properties.cs:77:9:77:9 | access to local variable a | | Properties.cs:75:23:75:23 | b | Properties.cs:75:23:75:35 | Action b = ... | Properties.cs:80:9:80:9 | access to local variable b | | Properties.cs:106:37:106:37 | p | Properties.cs:106:37:106:37 | p | Properties.cs:106:42:106:42 | access to parameter p | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | b | Splitting.cs:6:13:6:13 | access to parameter b | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | ... = ... | Splitting.cs:11:13:11:13 | access to local variable x | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | b | Splitting.cs:25:13:25:13 | access to parameter b | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | ... = ... | Splitting.cs:30:13:30:13 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | ... = ... | Splitting.cs:33:9:33:9 | access to local variable x | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | b | Splitting.cs:45:13:45:13 | access to parameter b | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | ... = ... | Splitting.cs:50:13:50:13 | access to local variable x | | Test.cs:3:9:3:13 | field | Test.cs:57:9:57:17 | ... = ... | Test.cs:58:13:58:17 | access to field field | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | param1 | Test.cs:11:13:11:18 | access to parameter param1 | | Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | param2 | Test.cs:39:27:39:32 | access to parameter param2 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/ReadAdjacentRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/ReadAdjacentRead.expected index 1b416d1b4f2..3e6623aa4e8 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/ReadAdjacentRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/ReadAdjacentRead.expected @@ -94,14 +94,6 @@ | Properties.cs:104:16:104:20 | Props | Properties.cs:114:20:114:35 | access to field Props | Properties.cs:115:21:115:36 | access to field Props | | Properties.cs:104:16:104:20 | Props | Properties.cs:115:21:115:30 | access to field Props | Properties.cs:116:17:116:26 | access to field Props | | Properties.cs:104:16:104:20 | Props | Properties.cs:115:21:115:36 | access to field Props | Properties.cs:116:17:116:32 | access to field Props | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:15:13:15:13 | access to parameter b | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:9 | access to local variable x | Splitting.cs:14:9:14:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:14:9:14:9 | access to local variable x | Splitting.cs:17:13:17:13 | access to local variable x | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:25:13:25:13 | access to parameter b | Splitting.cs:35:13:35:13 | access to parameter b | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:33:9:33:9 | access to local variable x | Splitting.cs:34:9:34:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:34:9:34:9 | access to local variable x | Splitting.cs:37:13:37:13 | access to local variable x | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:45:13:45:13 | access to parameter b | Splitting.cs:52:13:52:13 | access to parameter b | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:54:9:54:9 | access to local variable x | Splitting.cs:55:9:55:9 | access to local variable x | | Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | Test.cs:25:16:25:16 | access to local variable x | | Test.cs:9:13:9:13 | y | Test.cs:25:20:25:20 | access to local variable y | Test.cs:31:13:31:13 | access to local variable y | | Test.cs:9:13:9:13 | y | Test.cs:25:20:25:20 | access to local variable y | Test.cs:43:20:43:20 | access to local variable y | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected index 4834c19b8b5..e69a5cbe088 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected @@ -33,10 +33,6 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:7:13:7:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:10:13:10:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:46:13:46:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:49:13:49:19 | SSA def(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:25:16:25:16 | SSA phi(param1) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/Splitting.cs b/csharp/ql/test/library-tests/dataflow/ssa/Splitting.cs deleted file mode 100644 index 3969b9ab339..00000000000 --- a/csharp/ql/test/library-tests/dataflow/ssa/Splitting.cs +++ /dev/null @@ -1,57 +0,0 @@ -class Splitting -{ - void M1(bool b) - { - var x = ""; - if (b) - x = "a"; - else - { - x = "b"; - x.ToString(); - } - x.ToString(); - x.ToString(); - if (b) - { - x.ToString(); - x = "c"; - } - } - - void M2(bool b) - { - var x = ""; - if (b) - x = "a"; - else - { - x = "b"; - x.ToString(); - } - x = "c"; - x.ToString(); - x.ToString(); - if (b) - { - x.ToString(); - x = "d"; - } - } - - void M3(bool b) - { - var x = ""; - if (b) - x = "a"; - else - { - x = "b"; - x.ToString(); - } - if (b) - b = false; - x.ToString(); - x.ToString(); - } -} diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected index 009e22c52f8..b14622b13df 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected @@ -241,17 +241,6 @@ | Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected index cfe3a9992c6..a22b4693052 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected @@ -236,17 +236,6 @@ | Properties.cs:113:9:113:22 | SSA call def(this.Props) | Properties.cs:113:9:113:22 | call to method SetProps | | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:113:9:113:22 | call to method SetProps | | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | call to method SetProps | -| Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:3:18:3:18 | b | -| Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | -| Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | -| Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:13:9:13:21 | ...; | -| Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:22:18:22:18 | b | -| Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | -| Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | -| Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:42:18:42:18 | b | -| Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | -| Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | -| Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:52:9:53:22 | if (...) ... | | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | param1 | | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | param2 | | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index 3b2a3e88e8b..900048fde8c 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -116,12 +116,6 @@ | Properties.cs:76:9:76:12 | f.xs | Properties.cs:84:9:84:25 | SSA def(f.xs) | Properties.cs:84:9:84:25 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:81:9:81:22 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:83:9:83:22 | ... = ... | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | ... = ... | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | ... = ... | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | ... = ... | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | ... = ... | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | ... = ... | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | ... = ... | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | | Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... = ... | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected index f5c93b95944..3ba88d1dd17 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected @@ -28,9 +28,6 @@ | OutRef.cs:39:35:39:35 | j | OutRef.cs:39:35:39:35 | SSA param(j) | OutRef.cs:39:35:39:35 | j | | Properties.cs:61:23:61:23 | i | Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:61:23:61:23 | i | | Properties.cs:106:37:106:37 | p | Properties.cs:106:37:106:37 | SSA param(p) | Properties.cs:106:37:106:37 | p | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:3:18:3:18 | b | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:22:18:22:18 | b | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:42:18:42:18 | b | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | param1 | | Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | param2 | | Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | in | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected index 6a59b148b2e..bc53d950d80 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected @@ -287,23 +287,6 @@ | Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:116:17:116:32 | access to field Props | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:115:21:115:39 | access to property xs | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:116:17:116:35 | access to property xs | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:15:13:15:13 | access to parameter b | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:11:13:11:13 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:13:9:13:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:14:9:14:9 | access to local variable x | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:17:13:17:13 | access to local variable x | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:25:13:25:13 | access to parameter b | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:35:13:35:13 | access to parameter b | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:30:13:30:13 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:33:9:33:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:34:9:34:9 | access to local variable x | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:37:13:37:13 | access to local variable x | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:45:13:45:13 | access to parameter b | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:52:13:52:13 | access to parameter b | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:50:13:50:13 | access to local variable x | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:54:9:54:9 | access to local variable x | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:55:9:55:9 | access to local variable x | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:11:13:11:18 | access to parameter param1 | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:22 | access to parameter param1 | | Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected index c2800b61832..4225577d7d4 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected @@ -328,19 +328,6 @@ | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | -| Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:3:18:3:18 | SSA param(b) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:7:13:7:19 | SSA def(x) | Splitting.cs:7:13:7:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:10:13:10:19 | SSA def(x) | Splitting.cs:10:13:10:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:7:13:7:19 | SSA def(x) | -| Splitting.cs:5:13:5:13 | x | Splitting.cs:13:9:13:21 | SSA phi(x) | Splitting.cs:10:13:10:19 | SSA def(x) | -| Splitting.cs:22:18:22:18 | b | Splitting.cs:22:18:22:18 | SSA param(b) | Splitting.cs:22:18:22:18 | SSA param(b) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:29:13:29:19 | SSA def(x) | Splitting.cs:29:13:29:19 | SSA def(x) | -| Splitting.cs:24:13:24:13 | x | Splitting.cs:32:9:32:15 | SSA def(x) | Splitting.cs:32:9:32:15 | SSA def(x) | -| Splitting.cs:42:18:42:18 | b | Splitting.cs:42:18:42:18 | SSA param(b) | Splitting.cs:42:18:42:18 | SSA param(b) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:46:13:46:19 | SSA def(x) | Splitting.cs:46:13:46:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:49:13:49:19 | SSA def(x) | Splitting.cs:49:13:49:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:46:13:46:19 | SSA def(x) | -| Splitting.cs:44:13:44:13 | x | Splitting.cs:52:9:53:22 | SSA phi(x) | Splitting.cs:49:13:49:19 | SSA def(x) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | From fad49ffbfb62ed0d0b5b3f3bbd006b00a818da36 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 3 Oct 2025 15:59:54 +0200 Subject: [PATCH 036/965] C++: Accept qltest change (useless guard tautology removed). --- .../test/library-tests/controlflow/guards/GuardsControl.expected | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected index 26175106d69..80a6530291d 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected @@ -115,7 +115,6 @@ | test.c:127:9:127:9 | 1 | not 0 | test.c:131:10:132:16 | { ... } | | test.c:131:7:131:7 | b | not 0 | test.c:131:10:132:16 | { ... } | | test.c:131:7:131:7 | b | true | test.c:131:10:132:16 | { ... } | -| test.c:137:7:137:7 | 0 | 0 | test.c:142:3:136:10 | return ... | | test.c:137:7:137:7 | 0 | false | test.c:142:3:136:10 | return ... | | test.c:145:16:145:16 | x | 0 | test.c:146:11:147:9 | { ... } | | test.c:146:7:146:8 | ! ... | true | test.c:146:11:147:9 | { ... } | From 84a65bef435371fda772b68264fbb7a52caf40d9 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 3 Oct 2025 16:29:56 +0200 Subject: [PATCH 037/965] C#: Add change note. --- csharp/ql/lib/change-notes/2025-10-03-nullness.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-03-nullness.md diff --git a/csharp/ql/lib/change-notes/2025-10-03-nullness.md b/csharp/ql/lib/change-notes/2025-10-03-nullness.md new file mode 100644 index 00000000000..0d44c1e98c1 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-03-nullness.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. From dac50fa0c1ad83fe306a6fa02d5178601dc3363d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 12 Aug 2025 09:59:57 +0200 Subject: [PATCH 038/965] Enable overlay compilation in lib/qlpack.yml --- python/ql/lib/qlpack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 35ab576bf1a..d8e4448dc6b 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -19,3 +19,4 @@ dataExtensions: - semmle/python/frameworks/**/*.model.yml - ext/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true From 4c9ca93cdfbe0b52707b3ee65c2b724f2ef92e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 16:31:37 +0200 Subject: [PATCH 039/965] Turn on overlay support in codeql-extractor.yml --- python/codeql-extractor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/python/codeql-extractor.yml b/python/codeql-extractor.yml index c8b51db42e6..993b1505bd1 100644 --- a/python/codeql-extractor.yml +++ b/python/codeql-extractor.yml @@ -2,6 +2,7 @@ name: "python" display_name: "Python" version: 1.22.1 column_kind: utf32 +overlay_support_version: 20250626 build_modes: - none default_queries: From a88d3397cd5c1f39adb44fa8a38a6d287ced2f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 16:14:07 +0200 Subject: [PATCH 040/965] Add overlay builtins to python dbscheme --- config/dbscheme-fragments.json | 1 + python/extractor/semmle/dbscheme.template | 16 ++++++++++++++++ python/ql/lib/semmlecode.python.dbscheme | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/config/dbscheme-fragments.json b/config/dbscheme-fragments.json index c2a9a5e734b..a626025de0b 100644 --- a/config/dbscheme-fragments.json +++ b/config/dbscheme-fragments.json @@ -9,6 +9,7 @@ "fragments": [ "/*- Compilations -*/", "/*- External data -*/", + "/*- Overlay support -*/", "/*- Files and folders -*/", "/*- Diagnostic messages -*/", "/*- Diagnostic messages: severity -*/", diff --git a/python/extractor/semmle/dbscheme.template b/python/extractor/semmle/dbscheme.template index 07b65434bbd..43015df66f4 100644 --- a/python/extractor/semmle/dbscheme.template +++ b/python/extractor/semmle/dbscheme.template @@ -40,6 +40,22 @@ externalData( string value : string ref ); +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + /*- DEPRECATED: Snapshot date -*/ snapshotDate(unique date snapshotDate : date ref); diff --git a/python/ql/lib/semmlecode.python.dbscheme b/python/ql/lib/semmlecode.python.dbscheme index 5af903da088..6a1f497168d 100644 --- a/python/ql/lib/semmlecode.python.dbscheme +++ b/python/ql/lib/semmlecode.python.dbscheme @@ -47,6 +47,22 @@ externalData( string value : string ref ); +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + /*- DEPRECATED: Snapshot date -*/ snapshotDate(unique date snapshotDate : date ref); From 1c3a7f2b1e680404312b6092c1cb6e0146f23f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 16:50:15 +0200 Subject: [PATCH 041/965] Add database upgrade/downgrade scripts --- .../old.dbscheme | 1252 +++++++++++++++++ .../semmlecode.python.dbscheme | 1236 ++++++++++++++++ .../upgrade.properties | 4 + .../old.dbscheme | 1236 ++++++++++++++++ .../semmlecode.python.dbscheme | 1252 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 4982 insertions(+) create mode 100644 python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme create mode 100644 python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme create mode 100644 python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties create mode 100644 python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/old.dbscheme create mode 100644 python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/semmlecode.python.dbscheme create mode 100644 python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/upgrade.properties diff --git a/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme new file mode 100644 index 00000000000..6a1f497168d --- /dev/null +++ b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme @@ -0,0 +1,1252 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme new file mode 100644 index 00000000000..5af903da088 --- /dev/null +++ b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme @@ -0,0 +1,1236 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties new file mode 100644 index 00000000000..1a7cdb0ad71 --- /dev/null +++ b/python/downgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties @@ -0,0 +1,4 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/old.dbscheme b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/old.dbscheme new file mode 100644 index 00000000000..5af903da088 --- /dev/null +++ b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/old.dbscheme @@ -0,0 +1,1236 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/semmlecode.python.dbscheme b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/semmlecode.python.dbscheme new file mode 100644 index 00000000000..6a1f497168d --- /dev/null +++ b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/semmlecode.python.dbscheme @@ -0,0 +1,1252 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/upgrade.properties b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/upgrade.properties new file mode 100644 index 00000000000..52b67d65af7 --- /dev/null +++ b/python/ql/lib/upgrades/5af903da088e3746aa283700a43a779302453523/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full From 1574b5fd91a1ff397b6083329f39ecf9082c20a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 20 Aug 2025 16:30:02 +0200 Subject: [PATCH 042/965] Add synthetic data to dbscheme.stats for `databaseMetadata`/`overlayChangedFiles` --- .../ql/lib/semmlecode.python.dbscheme.stats | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/python/ql/lib/semmlecode.python.dbscheme.stats b/python/ql/lib/semmlecode.python.dbscheme.stats index 289c0487066..a4060cf9b8e 100644 --- a/python/ql/lib/semmlecode.python.dbscheme.stats +++ b/python/ql/lib/semmlecode.python.dbscheme.stats @@ -1269,6 +1269,53 @@ +databaseMetadata +1 + + +metadataKey +1 + + +value +1 + + + + +metadataKey +value + + +12 + + + + + +value +metadataKey + + +12 + + + + + + + +overlayChangedFiles +50 + + +path +50 + + + + + snapshotDate 2 From 29b1a7403b0d96c88322c659e846fd164f7d5981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 17:29:39 +0200 Subject: [PATCH 043/965] Support CODEQL_PATH_TRANSFORMER env var in python path renamer The new name is required by overlay support. --- python/extractor/semmle/path_rename.py | 2 +- python/extractor/tests/test_use_projectlayout.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/extractor/semmle/path_rename.py b/python/extractor/semmle/path_rename.py index 3a72d41e971..39832d6d96a 100644 --- a/python/extractor/semmle/path_rename.py +++ b/python/extractor/semmle/path_rename.py @@ -25,7 +25,7 @@ def renamer_from_options_and_env(options, logger): except (AttributeError, ImportError): raise SemmleError("Cannot get renamer from module " + options.renamer) else: - path_transformer = os.environ.get("SEMMLE_PATH_TRANSFORMER", None) + path_transformer = os.environ.get("CODEQL_PATH_TRANSFORMER", None) or os.environ.get("SEMMLE_PATH_TRANSFORMER", None) if path_transformer: logger.info("Using path transformer '%s'", path_transformer) rename = projectlayout.get_renamer(path_transformer) diff --git a/python/extractor/tests/test_use_projectlayout.py b/python/extractor/tests/test_use_projectlayout.py index fde36016f97..a573044b0b4 100644 --- a/python/extractor/tests/test_use_projectlayout.py +++ b/python/extractor/tests/test_use_projectlayout.py @@ -19,7 +19,7 @@ class ProjectLayoutUseTest(ExtractorTest): def test_invalid_layout(self): try: - with environment("SEMMLE_PATH_TRANSFORMER", "nonsuch/project-layout"): + with environment("CODEQL_PATH_TRANSFORMER", "nonsuch/project-layout"): self.run_extractor("-R", self.src_path) except subprocess.CalledProcessError as ex: self.assertEqual(ex.returncode, 2) From e0cf719cb94f8135f37466a94b5867fa6c4cabcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 10 Sep 2025 17:30:56 +0200 Subject: [PATCH 044/965] Path transformer: handle Windows-style paths And don't add slash to start of path patterns on Windows. --- python/extractor/semmle/projectlayout.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/python/extractor/semmle/projectlayout.py b/python/extractor/semmle/projectlayout.py index ec657d2ae24..2886f9e9e4d 100644 --- a/python/extractor/semmle/projectlayout.py +++ b/python/extractor/semmle/projectlayout.py @@ -12,12 +12,16 @@ import collections import re from functools import total_ordering import sys +from pathlib import PureWindowsPath +import os def get_renamer(filename): layout = load(filename) def rename(path): renamed = layout.artificial_path(path) return path if renamed is None else renamed + if os.name == "nt": + return lambda path: rename(PureWindowsPath(path).as_posix()) return rename def load(filename): @@ -257,7 +261,7 @@ class _Rewrite(object): exclude = path self._line = line; self._original = u'-' + exclude; - if not exclude.startswith(u"/"): + if os.name != 'nt' and not exclude.startswith(u"/"): exclude = u'/' + exclude if exclude.find(u"//") != -1: raise _error(u"Illegal '//' in exclude path", line) @@ -274,14 +278,14 @@ class _Rewrite(object): include = path self._line = line; self._original = include; - if not include.startswith(u"/"): + if os.name != 'nt' and not include.startswith(u"/"): include = u'/' + include doubleslash = include.find(u"//") if doubleslash != include.find(u"//"): raise _error(u"More than one '//' in include path (project-layout)", line) if self._verify_stars.match(include): raise _error(u"Illegal use of '**' in include path (project-layout)", line) - if not virtual.startswith(u"/"): + if os.name != 'nt' and not virtual.startswith(u"/"): virtual = u"/" + virtual if virtual.endswith(u"/"): virtual = virtual[0 : -1] From 49b18db0440f798b9b034e7201893bbb67065dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 18:31:12 +0200 Subject: [PATCH 045/965] Python extractor: in overlay mode, traverse only changed files - fall back to full extraction on overlay changes json read error - we filter both root modules and (transitive) imports against the overlay-changes json. --- python/extractor/semmle/worker.py | 42 ++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/python/extractor/semmle/worker.py b/python/extractor/semmle/worker.py index 726c2c90c3b..1005842daca 100644 --- a/python/extractor/semmle/worker.py +++ b/python/extractor/semmle/worker.py @@ -11,6 +11,7 @@ from semmle.extractors import SuperExtractor, ModulePrinter, SkippedBuiltin from semmle.profiling import get_profiler from semmle.path_rename import renamer_from_options_and_env from semmle.logging import WARN, recursion_error_message, internal_error_message, Logger +from semmle.util import FileExtractable, FolderExtractable class ExtractorFailure(Exception): 'Generic exception representing the failure of an extractor.' @@ -19,17 +20,32 @@ class ExtractorFailure(Exception): class ModuleImportGraph(object): - def __init__(self, max_depth): + def __init__(self, max_depth, logger: Logger): self.modules = {} self.succ = defaultdict(set) self.todo = set() self.done = set() self.max_depth = max_depth + self.logger = logger + + # During overlay extraction, only traverse the files that were changed. + self.overlay_changes = None + if 'CODEQL_EXTRACTOR_PYTHON_OVERLAY_CHANGES' in os.environ: + overlay_changes_file = os.environ['CODEQL_EXTRACTOR_PYTHON_OVERLAY_CHANGES'] + logger.info("Overlay extraction mode: only extracting files changed according to '%s'", overlay_changes_file) + try: + with open(overlay_changes_file, 'r', encoding='utf-8') as f: + data = json.load(f) + changed_paths = data.get('changes', []) + self.overlay_changes = { os.path.abspath(p) for p in changed_paths } + except (IOError, ValueError) as e: + logger.warn("Failed to read overlay changes from '%s' (falling back to full extraction): %s", overlay_changes_file, e) + self.overlay_changes = None def add_root(self, mod): self.modules[mod] = 0 if mod not in self.done: - self.todo.add(mod) + self.add_todo(mod) def add_import(self, mod, imported): assert mod in self.modules @@ -39,7 +55,7 @@ class ModuleImportGraph(object): self._reduce_depth(imported, self.modules[mod] + 1) else: if self.modules[mod] < self.max_depth and imported not in self.done: - self.todo.add(imported) + self.add_todo(imported) self.modules[imported] = self.modules[mod] + 1 def _reduce_depth(self, mod, depth): @@ -48,7 +64,7 @@ class ModuleImportGraph(object): if depth > self.max_depth: return if mod not in self.done: - self.todo.add(mod) + self.add_todo(mod) self.modules[mod] = depth for imp in self.succ[mod]: self._reduce_depth(imp, depth+1) @@ -61,11 +77,25 @@ class ModuleImportGraph(object): def push_back(self, mod): self.done.remove(mod) - self.todo.add(mod) + self.add_todo(mod) def empty(self): return not self.todo + def add_todo(self, mod): + if not self._module_in_overlay_changes(mod): + self.logger.debug("Skipping module '%s' as it was not changed in overlay extraction.", mod) + return + self.todo.add(mod) + + def _module_in_overlay_changes(self, mod): + if self.overlay_changes is not None: + if isinstance(mod, FileExtractable): + return mod.path in self.overlay_changes + if isinstance(mod, FolderExtractable): + return mod.path + '/__init__.py' in self.overlay_changes + return True + class ExtractorPool(object): '''Pool of worker processes running extractors''' @@ -90,7 +120,7 @@ class ExtractorPool(object): self.enqueued = set() self.done = set() self.requirements = {} - self.import_graph = ModuleImportGraph(options.max_import_depth) + self.import_graph = ModuleImportGraph(options.max_import_depth, logger) logger.debug("Source archive: %s", archive) self.logger = logger DiagnosticsWriter.create_output_dir() From 6f208e9decf8eb053c8d73be61fa5af422958984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 11 Aug 2025 18:55:09 +0200 Subject: [PATCH 046/965] Write overlay metadata at end of extraction. --- python/extractor/semmle/worker.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/extractor/semmle/worker.py b/python/extractor/semmle/worker.py index 1005842daca..96761a01c77 100644 --- a/python/extractor/semmle/worker.py +++ b/python/extractor/semmle/worker.py @@ -192,6 +192,10 @@ class ExtractorPool(object): self.module_queue.put(None) for p in self.procs: p.join() + if 'CODEQL_EXTRACTOR_PYTHON_OVERLAY_BASE_METADATA_OUT' in os.environ: + with open(os.environ['CODEQL_EXTRACTOR_PYTHON_OVERLAY_BASE_METADATA_OUT'], 'w', encoding='utf-8') as f: + metadata = {} + json.dump(metadata, f) self.logger.info("Processed %d modules in %0.2fs", len(self.import_graph.done), time.time() - self.start_time) def stop(self, timeout=2.0): From 1a9683f98663e442752f0cbbbc101948667090bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 1 Oct 2025 14:24:15 +0200 Subject: [PATCH 047/965] Add `@top` database type --- .../old.dbscheme | 1261 +++++++++++++++++ .../semmlecode.python.dbscheme | 1252 ++++++++++++++++ .../upgrade.properties | 2 + python/extractor/semmle/dbscheme.template | 9 + python/ql/lib/semmlecode.python.dbscheme | 9 + .../old.dbscheme | 1252 ++++++++++++++++ .../semmlecode.python.dbscheme | 1261 +++++++++++++++++ .../upgrade.properties | 2 + 8 files changed, 5048 insertions(+) create mode 100644 python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/old.dbscheme create mode 100644 python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/semmlecode.python.dbscheme create mode 100644 python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/upgrade.properties create mode 100644 python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme create mode 100644 python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme create mode 100644 python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties diff --git a/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/old.dbscheme b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/old.dbscheme new file mode 100644 index 00000000000..acf8d3b08ae --- /dev/null +++ b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/old.dbscheme @@ -0,0 +1,1261 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/semmlecode.python.dbscheme b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/semmlecode.python.dbscheme new file mode 100644 index 00000000000..6a1f497168d --- /dev/null +++ b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/semmlecode.python.dbscheme @@ -0,0 +1,1252 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/upgrade.properties b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/upgrade.properties new file mode 100644 index 00000000000..63392513719 --- /dev/null +++ b/python/downgrades/acf8d3b08ae3cfac8833d16efbfa5a10fef86819/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @top type +compatibility: full diff --git a/python/extractor/semmle/dbscheme.template b/python/extractor/semmle/dbscheme.template index 43015df66f4..6b320aafab6 100644 --- a/python/extractor/semmle/dbscheme.template +++ b/python/extractor/semmle/dbscheme.template @@ -436,3 +436,12 @@ py_decorated_object(int object : @py_object ref, @py_object = @py_cobject | @py_flow_node; @py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/ql/lib/semmlecode.python.dbscheme b/python/ql/lib/semmlecode.python.dbscheme index 6a1f497168d..acf8d3b08ae 100644 --- a/python/ql/lib/semmlecode.python.dbscheme +++ b/python/ql/lib/semmlecode.python.dbscheme @@ -1250,3 +1250,12 @@ py_decorated_object(int object : @py_object ref, @py_object = @py_cobject | @py_flow_node; @py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme new file mode 100644 index 00000000000..6a1f497168d --- /dev/null +++ b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/old.dbscheme @@ -0,0 +1,1252 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; diff --git a/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme new file mode 100644 index 00000000000..acf8d3b08ae --- /dev/null +++ b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/semmlecode.python.dbscheme @@ -0,0 +1,1261 @@ +/* + * This dbscheme is auto-generated by 'semmle/dbscheme_gen.py'. + * WARNING: Any modifications to this file will be lost. + * Relations can be changed by modifying master.py or + * by adding rules to dbscheme.template + */ + +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2020-07-02 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/*- DEPRECATED: External defects and metrics -*/ + +externalDefects( + unique int id : @externalDefect, + varchar(900) queryPath : string ref, + int location : @location ref, + varchar(900) message : string ref, + float severity : float ref +); + +externalMetrics( + unique int id : @externalMetric, + varchar(900) queryPath : string ref, + int location : @location ref, + float value : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/*- DEPRECATED: Snapshot date -*/ + +snapshotDate(unique date snapshotDate : date ref); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- DEPRECATED: Duplicate code -*/ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/*- DEPRECATED: Version control data -*/ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Python dbscheme -*/ + +/* + * Line metrics + */ +py_codelines(int id : @py_scope ref, + int count : int ref); + +py_commentlines(int id : @py_scope ref, + int count : int ref); + +py_docstringlines(int id : @py_scope ref, + int count : int ref); + +py_alllines(int id : @py_scope ref, + int count : int ref); + +/**************************** + Python dbscheme +****************************/ + +@sourceline = @file | @py_Module | @xmllocatable; + +@location = @location_ast | @location_default ; + +locations_ast(unique int id: @location_ast, + int module: @py_Module ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +file_contents(unique int file: @file ref, string contents: string ref); + +py_module_path(int module: @py_Module ref, int file: @container ref); + +variable(unique int id : @py_variable, + int scope : @py_scope ref, + varchar(1) name : string ref); + +py_line_lengths(unique int id : @py_line, + int file: @py_Module ref, + int line : int ref, + int length : int ref); + +py_extracted_version(int module : @py_Module ref, + varchar(1) version : string ref); + +/* AUTO GENERATED PART STARTS HERE */ + + +/* AnnAssign.location = 0, location */ +/* AnnAssign.value = 1, expr */ +/* AnnAssign.annotation = 2, expr */ +/* AnnAssign.target = 3, expr */ + +/* Assert.location = 0, location */ +/* Assert.test = 1, expr */ +/* Assert.msg = 2, expr */ + +/* Assign.location = 0, location */ +/* Assign.value = 1, expr */ +/* Assign.targets = 2, expr_list */ + +/* AssignExpr.location = 0, location */ +/* AssignExpr.parenthesised = 1, bool */ +/* AssignExpr.value = 2, expr */ +/* AssignExpr.target = 3, expr */ + +/* Attribute.location = 0, location */ +/* Attribute.parenthesised = 1, bool */ +/* Attribute.value = 2, expr */ +/* Attribute.attr = 3, str */ +/* Attribute.ctx = 4, expr_context */ + +/* AugAssign.location = 0, location */ +/* AugAssign.operation = 1, BinOp */ + +/* Await.location = 0, location */ +/* Await.parenthesised = 1, bool */ +/* Await.value = 2, expr */ + +/* BinaryExpr.location = 0, location */ +/* BinaryExpr.parenthesised = 1, bool */ +/* BinaryExpr.left = 2, expr */ +/* BinaryExpr.op = 3, operator */ +/* BinaryExpr.right = 4, expr */ +/* BinaryExpr = AugAssign */ + +/* BoolExpr.location = 0, location */ +/* BoolExpr.parenthesised = 1, bool */ +/* BoolExpr.op = 2, boolop */ +/* BoolExpr.values = 3, expr_list */ + +/* Break.location = 0, location */ + +/* Bytes.location = 0, location */ +/* Bytes.parenthesised = 1, bool */ +/* Bytes.s = 2, bytes */ +/* Bytes.prefix = 3, bytes */ +/* Bytes.implicitly_concatenated_parts = 4, StringPart_list */ + +/* Call.location = 0, location */ +/* Call.parenthesised = 1, bool */ +/* Call.func = 2, expr */ +/* Call.positional_args = 3, expr_list */ +/* Call.named_args = 4, dict_item_list */ + +/* Case.location = 0, location */ +/* Case.pattern = 1, pattern */ +/* Case.guard = 2, expr */ +/* Case.body = 3, stmt_list */ + +/* Class.name = 0, str */ +/* Class.body = 1, stmt_list */ +/* Class = ClassExpr */ + +/* ClassExpr.location = 0, location */ +/* ClassExpr.parenthesised = 1, bool */ +/* ClassExpr.name = 2, str */ +/* ClassExpr.bases = 3, expr_list */ +/* ClassExpr.keywords = 4, dict_item_list */ +/* ClassExpr.inner_scope = 5, Class */ +/* ClassExpr.type_parameters = 6, type_parameter_list */ + +/* Compare.location = 0, location */ +/* Compare.parenthesised = 1, bool */ +/* Compare.left = 2, expr */ +/* Compare.ops = 3, cmpop_list */ +/* Compare.comparators = 4, expr_list */ + +/* Continue.location = 0, location */ + +/* Delete.location = 0, location */ +/* Delete.targets = 1, expr_list */ + +/* Dict.location = 0, location */ +/* Dict.parenthesised = 1, bool */ +/* Dict.items = 2, dict_item_list */ + +/* DictComp.location = 0, location */ +/* DictComp.parenthesised = 1, bool */ +/* DictComp.function = 2, Function */ +/* DictComp.iterable = 3, expr */ + +/* DictUnpacking.location = 0, location */ +/* DictUnpacking.value = 1, expr */ + +/* Ellipsis.location = 0, location */ +/* Ellipsis.parenthesised = 1, bool */ + +/* ExceptGroupStmt.location = 0, location */ +/* ExceptGroupStmt.type = 1, expr */ +/* ExceptGroupStmt.name = 2, expr */ +/* ExceptGroupStmt.body = 3, stmt_list */ + +/* ExceptStmt.location = 0, location */ +/* ExceptStmt.type = 1, expr */ +/* ExceptStmt.name = 2, expr */ +/* ExceptStmt.body = 3, stmt_list */ + +/* Exec.location = 0, location */ +/* Exec.body = 1, expr */ +/* Exec.globals = 2, expr */ +/* Exec.locals = 3, expr */ + +/* ExprStmt.location = 0, location */ +/* ExprStmt.value = 1, expr */ + +/* Filter.location = 0, location */ +/* Filter.parenthesised = 1, bool */ +/* Filter.value = 2, expr */ +/* Filter.filter = 3, expr */ + +/* For.location = 0, location */ +/* For.target = 1, expr */ +/* For.iter = 2, expr */ +/* For.body = 3, stmt_list */ +/* For.orelse = 4, stmt_list */ +/* For.is_async = 5, bool */ + +/* FormattedValue.location = 0, location */ +/* FormattedValue.parenthesised = 1, bool */ +/* FormattedValue.value = 2, expr */ +/* FormattedValue.conversion = 3, str */ +/* FormattedValue.format_spec = 4, JoinedStr */ + +/* Function.name = 0, str */ +/* Function.args = 1, parameter_list */ +/* Function.vararg = 2, expr */ +/* Function.kwonlyargs = 3, expr_list */ +/* Function.kwarg = 4, expr */ +/* Function.body = 5, stmt_list */ +/* Function.is_async = 6, bool */ +/* Function.type_parameters = 7, type_parameter_list */ +/* Function = FunctionParent */ + +/* FunctionExpr.location = 0, location */ +/* FunctionExpr.parenthesised = 1, bool */ +/* FunctionExpr.name = 2, str */ +/* FunctionExpr.args = 3, arguments */ +/* FunctionExpr.returns = 4, expr */ +/* FunctionExpr.inner_scope = 5, Function */ + +/* GeneratorExp.location = 0, location */ +/* GeneratorExp.parenthesised = 1, bool */ +/* GeneratorExp.function = 2, Function */ +/* GeneratorExp.iterable = 3, expr */ + +/* Global.location = 0, location */ +/* Global.names = 1, str_list */ + +/* Guard.location = 0, location */ +/* Guard.parenthesised = 1, bool */ +/* Guard.test = 2, expr */ + +/* If.location = 0, location */ +/* If.test = 1, expr */ +/* If.body = 2, stmt_list */ +/* If.orelse = 3, stmt_list */ + +/* IfExp.location = 0, location */ +/* IfExp.parenthesised = 1, bool */ +/* IfExp.test = 2, expr */ +/* IfExp.body = 3, expr */ +/* IfExp.orelse = 4, expr */ + +/* Import.location = 0, location */ +/* Import.names = 1, alias_list */ + +/* ImportExpr.location = 0, location */ +/* ImportExpr.parenthesised = 1, bool */ +/* ImportExpr.level = 2, int */ +/* ImportExpr.name = 3, str */ +/* ImportExpr.top = 4, bool */ + +/* ImportStar.location = 0, location */ +/* ImportStar.module = 1, expr */ + +/* ImportMember.location = 0, location */ +/* ImportMember.parenthesised = 1, bool */ +/* ImportMember.module = 2, expr */ +/* ImportMember.name = 3, str */ + +/* Fstring.location = 0, location */ +/* Fstring.parenthesised = 1, bool */ +/* Fstring.values = 2, expr_list */ +/* Fstring = FormattedValue */ + +/* KeyValuePair.location = 0, location */ +/* KeyValuePair.value = 1, expr */ +/* KeyValuePair.key = 2, expr */ + +/* Lambda.location = 0, location */ +/* Lambda.parenthesised = 1, bool */ +/* Lambda.args = 2, arguments */ +/* Lambda.inner_scope = 3, Function */ + +/* List.location = 0, location */ +/* List.parenthesised = 1, bool */ +/* List.elts = 2, expr_list */ +/* List.ctx = 3, expr_context */ + +/* ListComp.location = 0, location */ +/* ListComp.parenthesised = 1, bool */ +/* ListComp.function = 2, Function */ +/* ListComp.iterable = 3, expr */ +/* ListComp.generators = 4, comprehension_list */ +/* ListComp.elt = 5, expr */ + +/* MatchStmt.location = 0, location */ +/* MatchStmt.subject = 1, expr */ +/* MatchStmt.cases = 2, stmt_list */ + +/* MatchAsPattern.location = 0, location */ +/* MatchAsPattern.parenthesised = 1, bool */ +/* MatchAsPattern.pattern = 2, pattern */ +/* MatchAsPattern.alias = 3, expr */ + +/* MatchCapturePattern.location = 0, location */ +/* MatchCapturePattern.parenthesised = 1, bool */ +/* MatchCapturePattern.variable = 2, expr */ + +/* MatchClassPattern.location = 0, location */ +/* MatchClassPattern.parenthesised = 1, bool */ +/* MatchClassPattern.class = 2, expr */ +/* MatchClassPattern.class_name = 3, expr */ +/* MatchClassPattern.positional = 4, pattern_list */ +/* MatchClassPattern.keyword = 5, pattern_list */ + +/* MatchDoubleStarPattern.location = 0, location */ +/* MatchDoubleStarPattern.parenthesised = 1, bool */ +/* MatchDoubleStarPattern.target = 2, pattern */ + +/* MatchKeyValuePattern.location = 0, location */ +/* MatchKeyValuePattern.parenthesised = 1, bool */ +/* MatchKeyValuePattern.key = 2, pattern */ +/* MatchKeyValuePattern.value = 3, pattern */ + +/* MatchKeywordPattern.location = 0, location */ +/* MatchKeywordPattern.parenthesised = 1, bool */ +/* MatchKeywordPattern.attribute = 2, expr */ +/* MatchKeywordPattern.value = 3, pattern */ + +/* MatchLiteralPattern.location = 0, location */ +/* MatchLiteralPattern.parenthesised = 1, bool */ +/* MatchLiteralPattern.literal = 2, expr */ + +/* MatchMappingPattern.location = 0, location */ +/* MatchMappingPattern.parenthesised = 1, bool */ +/* MatchMappingPattern.mappings = 2, pattern_list */ + +/* MatchOrPattern.location = 0, location */ +/* MatchOrPattern.parenthesised = 1, bool */ +/* MatchOrPattern.patterns = 2, pattern_list */ + +/* MatchSequencePattern.location = 0, location */ +/* MatchSequencePattern.parenthesised = 1, bool */ +/* MatchSequencePattern.patterns = 2, pattern_list */ + +/* MatchStarPattern.location = 0, location */ +/* MatchStarPattern.parenthesised = 1, bool */ +/* MatchStarPattern.target = 2, pattern */ + +/* MatchValuePattern.location = 0, location */ +/* MatchValuePattern.parenthesised = 1, bool */ +/* MatchValuePattern.value = 2, expr */ + +/* MatchWildcardPattern.location = 0, location */ +/* MatchWildcardPattern.parenthesised = 1, bool */ + +/* Module.name = 0, str */ +/* Module.hash = 1, str */ +/* Module.body = 2, stmt_list */ +/* Module.kind = 3, str */ + +/* Name.location = 0, location */ +/* Name.parenthesised = 1, bool */ +/* Name.variable = 2, variable */ +/* Name.ctx = 3, expr_context */ +/* Name = ParameterList */ + +/* Nonlocal.location = 0, location */ +/* Nonlocal.names = 1, str_list */ + +/* Num.location = 0, location */ +/* Num.parenthesised = 1, bool */ +/* Num.n = 2, number */ +/* Num.text = 3, number */ + +/* ParamSpec.location = 0, location */ +/* ParamSpec.name = 1, expr */ +/* ParamSpec.default = 2, expr */ + +/* Pass.location = 0, location */ + +/* PlaceHolder.location = 0, location */ +/* PlaceHolder.parenthesised = 1, bool */ +/* PlaceHolder.variable = 2, variable */ +/* PlaceHolder.ctx = 3, expr_context */ + +/* Print.location = 0, location */ +/* Print.dest = 1, expr */ +/* Print.values = 2, expr_list */ +/* Print.nl = 3, bool */ + +/* Raise.location = 0, location */ +/* Raise.exc = 1, expr */ +/* Raise.cause = 2, expr */ +/* Raise.type = 3, expr */ +/* Raise.inst = 4, expr */ +/* Raise.tback = 5, expr */ + +/* Repr.location = 0, location */ +/* Repr.parenthesised = 1, bool */ +/* Repr.value = 2, expr */ + +/* Return.location = 0, location */ +/* Return.value = 1, expr */ + +/* Set.location = 0, location */ +/* Set.parenthesised = 1, bool */ +/* Set.elts = 2, expr_list */ + +/* SetComp.location = 0, location */ +/* SetComp.parenthesised = 1, bool */ +/* SetComp.function = 2, Function */ +/* SetComp.iterable = 3, expr */ + +/* Slice.location = 0, location */ +/* Slice.parenthesised = 1, bool */ +/* Slice.start = 2, expr */ +/* Slice.stop = 3, expr */ +/* Slice.step = 4, expr */ + +/* SpecialOperation.location = 0, location */ +/* SpecialOperation.parenthesised = 1, bool */ +/* SpecialOperation.name = 2, str */ +/* SpecialOperation.arguments = 3, expr_list */ + +/* Starred.location = 0, location */ +/* Starred.parenthesised = 1, bool */ +/* Starred.value = 2, expr */ +/* Starred.ctx = 3, expr_context */ + +/* Str.location = 0, location */ +/* Str.parenthesised = 1, bool */ +/* Str.s = 2, str */ +/* Str.prefix = 3, str */ +/* Str.implicitly_concatenated_parts = 4, StringPart_list */ + +/* StringPart.text = 0, str */ +/* StringPart.location = 1, location */ +/* StringPart = StringPartList */ +/* StringPartList = BytesOrStr */ + +/* Subscript.location = 0, location */ +/* Subscript.parenthesised = 1, bool */ +/* Subscript.value = 2, expr */ +/* Subscript.index = 3, expr */ +/* Subscript.ctx = 4, expr_context */ + +/* TemplateDottedNotation.location = 0, location */ +/* TemplateDottedNotation.parenthesised = 1, bool */ +/* TemplateDottedNotation.value = 2, expr */ +/* TemplateDottedNotation.attr = 3, str */ +/* TemplateDottedNotation.ctx = 4, expr_context */ + +/* TemplateWrite.location = 0, location */ +/* TemplateWrite.value = 1, expr */ + +/* Try.location = 0, location */ +/* Try.body = 1, stmt_list */ +/* Try.orelse = 2, stmt_list */ +/* Try.handlers = 3, stmt_list */ +/* Try.finalbody = 4, stmt_list */ + +/* Tuple.location = 0, location */ +/* Tuple.parenthesised = 1, bool */ +/* Tuple.elts = 2, expr_list */ +/* Tuple.ctx = 3, expr_context */ +/* Tuple = ParameterList */ + +/* TypeAlias.location = 0, location */ +/* TypeAlias.name = 1, expr */ +/* TypeAlias.type_parameters = 2, type_parameter_list */ +/* TypeAlias.value = 3, expr */ + +/* TypeVar.location = 0, location */ +/* TypeVar.name = 1, expr */ +/* TypeVar.bound = 2, expr */ +/* TypeVar.default = 3, expr */ + +/* TypeVarTuple.location = 0, location */ +/* TypeVarTuple.name = 1, expr */ +/* TypeVarTuple.default = 2, expr */ + +/* UnaryExpr.location = 0, location */ +/* UnaryExpr.parenthesised = 1, bool */ +/* UnaryExpr.op = 2, unaryop */ +/* UnaryExpr.operand = 3, expr */ + +/* While.location = 0, location */ +/* While.test = 1, expr */ +/* While.body = 2, stmt_list */ +/* While.orelse = 3, stmt_list */ + +/* With.location = 0, location */ +/* With.context_expr = 1, expr */ +/* With.optional_vars = 2, expr */ +/* With.body = 3, stmt_list */ +/* With.is_async = 4, bool */ + +/* Yield.location = 0, location */ +/* Yield.parenthesised = 1, bool */ +/* Yield.value = 2, expr */ + +/* YieldFrom.location = 0, location */ +/* YieldFrom.parenthesised = 1, bool */ +/* YieldFrom.value = 2, expr */ + +/* Alias.value = 0, expr */ +/* Alias.asname = 1, expr */ +/* Alias = AliasList */ +/* AliasList = Import */ + +/* Arguments.kw_defaults = 0, expr_list */ +/* Arguments.defaults = 1, expr_list */ +/* Arguments.annotations = 2, expr_list */ +/* Arguments.varargannotation = 3, expr */ +/* Arguments.kwargannotation = 4, expr */ +/* Arguments.kw_annotations = 5, expr_list */ +/* Arguments = ArgumentsParent */ +/* boolean = BoolParent */ +/* Boolop = BoolExpr */ +/* string = Bytes */ +/* Cmpop = CmpopList */ +/* CmpopList = Compare */ + +/* Comprehension.location = 0, location */ +/* Comprehension.iter = 1, expr */ +/* Comprehension.target = 2, expr */ +/* Comprehension.ifs = 3, expr_list */ +/* Comprehension = ComprehensionList */ +/* ComprehensionList = ListComp */ +/* DictItem = DictItemList */ +/* DictItemList = DictItemListParent */ + +/* Expr.location = 0, location */ +/* Expr.parenthesised = 1, bool */ +/* Expr = ExprParent */ +/* ExprContext = ExprContextParent */ +/* ExprList = ExprListParent */ +/* int = ImportExpr */ + +/* Keyword.location = 0, location */ +/* Keyword.value = 1, expr */ +/* Keyword.arg = 2, str */ +/* Location = LocationParent */ +/* string = Num */ +/* Operator = BinaryExpr */ +/* ParameterList = Function */ + +/* Pattern.location = 0, location */ +/* Pattern.parenthesised = 1, bool */ +/* Pattern = PatternParent */ +/* PatternList = PatternListParent */ + +/* Stmt.location = 0, location */ +/* Stmt = StmtList */ +/* StmtList = StmtListParent */ +/* string = StrParent */ +/* StringList = StrListParent */ + +/* TypeParameter.location = 0, location */ +/* TypeParameter = TypeParameterList */ +/* TypeParameterList = TypeParameterListParent */ +/* Unaryop = UnaryExpr */ +/* Variable = VariableParent */ +py_Classes(unique int id : @py_Class, + unique int parent : @py_ClassExpr ref); + +py_Functions(unique int id : @py_Function, + unique int parent : @py_Function_parent ref); + +py_Modules(unique int id : @py_Module); + +py_StringParts(unique int id : @py_StringPart, + int parent : @py_StringPart_list ref, + int idx : int ref); + +py_StringPart_lists(unique int id : @py_StringPart_list, + unique int parent : @py_Bytes_or_Str ref); + +py_aliases(unique int id : @py_alias, + int parent : @py_alias_list ref, + int idx : int ref); + +py_alias_lists(unique int id : @py_alias_list, + unique int parent : @py_Import ref); + +py_arguments(unique int id : @py_arguments, + unique int parent : @py_arguments_parent ref); + +py_bools(int parent : @py_bool_parent ref, + int idx : int ref); + +py_boolops(unique int id : @py_boolop, + int kind: int ref, + unique int parent : @py_BoolExpr ref); + +py_bytes(varchar(1) id : string ref, + int parent : @py_Bytes ref, + int idx : int ref); + +py_cmpops(unique int id : @py_cmpop, + int kind: int ref, + int parent : @py_cmpop_list ref, + int idx : int ref); + +py_cmpop_lists(unique int id : @py_cmpop_list, + unique int parent : @py_Compare ref); + +py_comprehensions(unique int id : @py_comprehension, + int parent : @py_comprehension_list ref, + int idx : int ref); + +py_comprehension_lists(unique int id : @py_comprehension_list, + unique int parent : @py_ListComp ref); + +py_dict_items(unique int id : @py_dict_item, + int kind: int ref, + int parent : @py_dict_item_list ref, + int idx : int ref); + +py_dict_item_lists(unique int id : @py_dict_item_list, + unique int parent : @py_dict_item_list_parent ref); + +py_exprs(unique int id : @py_expr, + int kind: int ref, + int parent : @py_expr_parent ref, + int idx : int ref); + +py_expr_contexts(unique int id : @py_expr_context, + int kind: int ref, + unique int parent : @py_expr_context_parent ref); + +py_expr_lists(unique int id : @py_expr_list, + int parent : @py_expr_list_parent ref, + int idx : int ref); + +py_ints(int id : int ref, + unique int parent : @py_ImportExpr ref); + +py_locations(unique int id : @location ref, + unique int parent : @py_location_parent ref); + +py_numbers(varchar(1) id : string ref, + int parent : @py_Num ref, + int idx : int ref); + +py_operators(unique int id : @py_operator, + int kind: int ref, + unique int parent : @py_BinaryExpr ref); + +py_parameter_lists(unique int id : @py_parameter_list, + unique int parent : @py_Function ref); + +py_patterns(unique int id : @py_pattern, + int kind: int ref, + int parent : @py_pattern_parent ref, + int idx : int ref); + +py_pattern_lists(unique int id : @py_pattern_list, + int parent : @py_pattern_list_parent ref, + int idx : int ref); + +py_stmts(unique int id : @py_stmt, + int kind: int ref, + int parent : @py_stmt_list ref, + int idx : int ref); + +py_stmt_lists(unique int id : @py_stmt_list, + int parent : @py_stmt_list_parent ref, + int idx : int ref); + +py_strs(varchar(1) id : string ref, + int parent : @py_str_parent ref, + int idx : int ref); + +py_str_lists(unique int id : @py_str_list, + unique int parent : @py_str_list_parent ref); + +py_type_parameters(unique int id : @py_type_parameter, + int kind: int ref, + int parent : @py_type_parameter_list ref, + int idx : int ref); + +py_type_parameter_lists(unique int id : @py_type_parameter_list, + unique int parent : @py_type_parameter_list_parent ref); + +py_unaryops(unique int id : @py_unaryop, + int kind: int ref, + unique int parent : @py_UnaryExpr ref); + +py_variables(int id : @py_variable ref, + unique int parent : @py_variable_parent ref); + +case @py_boolop.kind of + 0 = @py_And +| 1 = @py_Or; + +case @py_cmpop.kind of + 0 = @py_Eq +| 1 = @py_Gt +| 2 = @py_GtE +| 3 = @py_In +| 4 = @py_Is +| 5 = @py_IsNot +| 6 = @py_Lt +| 7 = @py_LtE +| 8 = @py_NotEq +| 9 = @py_NotIn; + +case @py_dict_item.kind of + 0 = @py_DictUnpacking +| 1 = @py_KeyValuePair +| 2 = @py_keyword; + +case @py_expr.kind of + 0 = @py_Attribute +| 1 = @py_BinaryExpr +| 2 = @py_BoolExpr +| 3 = @py_Bytes +| 4 = @py_Call +| 5 = @py_ClassExpr +| 6 = @py_Compare +| 7 = @py_Dict +| 8 = @py_DictComp +| 9 = @py_Ellipsis +| 10 = @py_FunctionExpr +| 11 = @py_GeneratorExp +| 12 = @py_IfExp +| 13 = @py_ImportExpr +| 14 = @py_ImportMember +| 15 = @py_Lambda +| 16 = @py_List +| 17 = @py_ListComp +| 18 = @py_Guard +| 19 = @py_Name +| 20 = @py_Num +| 21 = @py_Repr +| 22 = @py_Set +| 23 = @py_SetComp +| 24 = @py_Slice +| 25 = @py_Starred +| 26 = @py_Str +| 27 = @py_Subscript +| 28 = @py_Tuple +| 29 = @py_UnaryExpr +| 30 = @py_Yield +| 31 = @py_YieldFrom +| 32 = @py_TemplateDottedNotation +| 33 = @py_Filter +| 34 = @py_PlaceHolder +| 35 = @py_Await +| 36 = @py_Fstring +| 37 = @py_FormattedValue +| 38 = @py_AssignExpr +| 39 = @py_SpecialOperation; + +case @py_expr_context.kind of + 0 = @py_AugLoad +| 1 = @py_AugStore +| 2 = @py_Del +| 3 = @py_Load +| 4 = @py_Param +| 5 = @py_Store; + +case @py_operator.kind of + 0 = @py_Add +| 1 = @py_BitAnd +| 2 = @py_BitOr +| 3 = @py_BitXor +| 4 = @py_Div +| 5 = @py_FloorDiv +| 6 = @py_LShift +| 7 = @py_Mod +| 8 = @py_Mult +| 9 = @py_Pow +| 10 = @py_RShift +| 11 = @py_Sub +| 12 = @py_MatMult; + +case @py_pattern.kind of + 0 = @py_MatchAsPattern +| 1 = @py_MatchOrPattern +| 2 = @py_MatchLiteralPattern +| 3 = @py_MatchCapturePattern +| 4 = @py_MatchWildcardPattern +| 5 = @py_MatchValuePattern +| 6 = @py_MatchSequencePattern +| 7 = @py_MatchStarPattern +| 8 = @py_MatchMappingPattern +| 9 = @py_MatchDoubleStarPattern +| 10 = @py_MatchKeyValuePattern +| 11 = @py_MatchClassPattern +| 12 = @py_MatchKeywordPattern; + +case @py_stmt.kind of + 0 = @py_Assert +| 1 = @py_Assign +| 2 = @py_AugAssign +| 3 = @py_Break +| 4 = @py_Continue +| 5 = @py_Delete +| 6 = @py_ExceptStmt +| 7 = @py_ExceptGroupStmt +| 8 = @py_Exec +| 9 = @py_Expr_stmt +| 10 = @py_For +| 11 = @py_Global +| 12 = @py_If +| 13 = @py_Import +| 14 = @py_ImportStar +| 15 = @py_MatchStmt +| 16 = @py_Case +| 17 = @py_Nonlocal +| 18 = @py_Pass +| 19 = @py_Print +| 20 = @py_Raise +| 21 = @py_Return +| 22 = @py_Try +| 23 = @py_While +| 24 = @py_With +| 25 = @py_TemplateWrite +| 26 = @py_AnnAssign +| 27 = @py_TypeAlias; + +case @py_type_parameter.kind of + 0 = @py_ParamSpec +| 1 = @py_TypeVar +| 2 = @py_TypeVarTuple; + +case @py_unaryop.kind of + 0 = @py_Invert +| 1 = @py_Not +| 2 = @py_UAdd +| 3 = @py_USub; + +@py_Bytes_or_Str = @py_Bytes | @py_Str; + +@py_Function_parent = @py_DictComp | @py_FunctionExpr | @py_GeneratorExp | @py_Lambda | @py_ListComp | @py_SetComp; + +@py_arguments_parent = @py_FunctionExpr | @py_Lambda; + +@py_ast_node = @py_Class | @py_Function | @py_Module | @py_StringPart | @py_comprehension | @py_dict_item | @py_expr | @py_pattern | @py_stmt | @py_type_parameter; + +@py_bool_parent = @py_For | @py_Function | @py_Print | @py_With | @py_expr | @py_pattern; + +@py_dict_item_list_parent = @py_Call | @py_ClassExpr | @py_Dict; + +@py_expr_context_parent = @py_Attribute | @py_List | @py_Name | @py_PlaceHolder | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_Tuple; + +@py_expr_list_parent = @py_Assign | @py_BoolExpr | @py_Call | @py_ClassExpr | @py_Compare | @py_Delete | @py_Fstring | @py_Function | @py_List | @py_Print | @py_Set | @py_SpecialOperation | @py_Tuple | @py_arguments | @py_comprehension; + +@py_expr_or_stmt = @py_expr | @py_stmt; + +@py_expr_parent = @py_AnnAssign | @py_Assert | @py_Assign | @py_AssignExpr | @py_Attribute | @py_AugAssign | @py_Await | @py_BinaryExpr | @py_Call | @py_Case | @py_Compare | @py_DictComp | @py_DictUnpacking | @py_ExceptGroupStmt | @py_ExceptStmt | @py_Exec | @py_Expr_stmt | @py_Filter | @py_For | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_GeneratorExp | @py_Guard | @py_If | @py_IfExp | @py_ImportMember | @py_ImportStar | @py_KeyValuePair | @py_ListComp | @py_MatchAsPattern | @py_MatchCapturePattern | @py_MatchClassPattern | @py_MatchKeywordPattern | @py_MatchLiteralPattern | @py_MatchStmt | @py_MatchValuePattern | @py_ParamSpec | @py_Print | @py_Raise | @py_Repr | @py_Return | @py_SetComp | @py_Slice | @py_Starred | @py_Subscript | @py_TemplateDottedNotation | @py_TemplateWrite | @py_TypeAlias | @py_TypeVar | @py_TypeVarTuple | @py_UnaryExpr | @py_While | @py_With | @py_Yield | @py_YieldFrom | @py_alias | @py_arguments | @py_comprehension | @py_expr_list | @py_keyword | @py_parameter_list; + +@py_location_parent = @py_DictUnpacking | @py_KeyValuePair | @py_StringPart | @py_comprehension | @py_expr | @py_keyword | @py_pattern | @py_stmt | @py_type_parameter; + +@py_parameter = @py_Name | @py_Tuple; + +@py_pattern_list_parent = @py_MatchClassPattern | @py_MatchMappingPattern | @py_MatchOrPattern | @py_MatchSequencePattern; + +@py_pattern_parent = @py_Case | @py_MatchAsPattern | @py_MatchDoubleStarPattern | @py_MatchKeyValuePattern | @py_MatchKeywordPattern | @py_MatchStarPattern | @py_pattern_list; + +@py_scope = @py_Class | @py_Function | @py_Module; + +@py_stmt_list_parent = @py_Case | @py_Class | @py_ExceptGroupStmt | @py_ExceptStmt | @py_For | @py_Function | @py_If | @py_MatchStmt | @py_Module | @py_Try | @py_While | @py_With; + +@py_str_list_parent = @py_Global | @py_Nonlocal; + +@py_str_parent = @py_Attribute | @py_Class | @py_ClassExpr | @py_FormattedValue | @py_Function | @py_FunctionExpr | @py_ImportExpr | @py_ImportMember | @py_Module | @py_SpecialOperation | @py_Str | @py_StringPart | @py_TemplateDottedNotation | @py_keyword | @py_str_list; + +@py_type_parameter_list_parent = @py_ClassExpr | @py_Function | @py_TypeAlias; + +@py_variable_parent = @py_Name | @py_PlaceHolder; + + +/* + * End of auto-generated part + */ + + + +/* Map relative names to absolute names for imports */ +py_absolute_names(int module : @py_Module ref, + varchar(1) relname : string ref, + varchar(1) absname : string ref); + +py_exports(int id : @py_Module ref, + varchar(1) name : string ref); + +/* Successor information */ +py_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_true_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_exception_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_false_successors(int predecessor : @py_flow_node ref, + int successor : @py_flow_node ref); + +py_flow_bb_node(unique int flownode : @py_flow_node, + int realnode : @py_ast_node ref, + int basicblock : @py_flow_node ref, + int index : int ref); + +py_scope_flow(int flow : @py_flow_node ref, + int scope : @py_scope ref, + int kind : int ref); + +py_idoms(unique int node : @py_flow_node ref, + int immediate_dominator : @py_flow_node ref); + +py_ssa_phi(int phi : @py_ssa_var ref, + int arg: @py_ssa_var ref); + +py_ssa_var(unique int id : @py_ssa_var, + int var : @py_variable ref); + +py_ssa_use(int node: @py_flow_node ref, + int var : @py_ssa_var ref); + +py_ssa_defn(unique int id : @py_ssa_var ref, + int node: @py_flow_node ref); + +@py_base_var = @py_variable | @py_ssa_var; + +py_scopes(unique int node : @py_expr_or_stmt ref, + int scope : @py_scope ref); + +py_scope_location(unique int id : @location ref, + unique int scope : @py_scope ref); + +py_flags_versioned(varchar(1) name : string ref, + varchar(1) value : string ref, + varchar(1) version : string ref); + +py_syntax_error_versioned(unique int id : @location ref, + varchar(1) message : string ref, + varchar(1) version : string ref); + +py_comments(unique int id : @py_comment, + varchar(1) text : string ref, + unique int location : @location ref); + +/* Type information support */ + +py_cobjects(unique int obj : @py_cobject); + +py_cobjecttypes(unique int obj : @py_cobject ref, + int typeof : @py_cobject ref); + +py_cobjectnames(unique int obj : @py_cobject ref, + varchar(1) name : string ref); + +/* Kind should be 0 for introspection, > 0 from source, as follows: + 1 from C extension source + */ +py_cobject_sources(int obj : @py_cobject ref, + int kind : int ref); + +py_cmembers_versioned(int object : @py_cobject ref, + varchar(1) name : string ref, + int member : @py_cobject ref, + varchar(1) version : string ref); + +py_citems(int object : @py_cobject ref, + int index : int ref, + int member : @py_cobject ref); + +ext_argtype(int funcid : @py_object ref, + int arg : int ref, + int typeid : @py_object ref); + +ext_rettype(int funcid : @py_object ref, + int typeid : @py_object ref); + +ext_proptype(int propid : @py_object ref, + int typeid : @py_object ref); + +ext_argreturn(int funcid : @py_object ref, + int arg : int ref); + +py_special_objects(unique int obj : @py_cobject ref, + unique varchar(1) name : string ref); + +py_decorated_object(int object : @py_object ref, + int level: int ref); + +@py_object = @py_cobject | @py_flow_node; + +@py_source_element = @py_ast_node | @container; + +/** The union of all Python database entities */ +@top = + @py_source_element | @py_object | @py_base_var | @location | @py_line | @py_comment | + @py_expr_parent | @py_expr_context | + @py_operator | @py_boolop | @py_cmpop | @py_unaryop | + @py_cmpop_list | @py_alias_list | @py_StringPart_list | @py_comprehension_list | @py_dict_item_list | @py_pattern_list | @py_stmt_list | @py_str_list | @py_type_parameter_list | + @externalDefect | @externalMetric | @externalDataElement | @duplication_or_similarity | @svnentry | + @xmllocatable | @yaml_locatable; diff --git a/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties new file mode 100644 index 00000000000..63392513719 --- /dev/null +++ b/python/ql/lib/upgrades/6a1f497168da2f43828161d3c86db7d4c94c2b53/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @top type +compatibility: full From 7174d4c8ba2c1f5f01d5d53398257d9fcef69f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Mon, 18 Aug 2025 19:45:37 +0200 Subject: [PATCH 048/965] Overlay.qll: discard predicates for dbscheme elements with direct or indirect location links in dbscheme. - Unify discardable entities under one Discardable superclass. - Two discard predicates depending on TRAP ID type. - Future-proof the XML and Yaml discard predicates for when their extractors become incremental. --- python/ql/lib/python.qll | 1 + python/ql/lib/semmle/python/Overlay.qll | 355 ++++++++++++++++++++++++ 2 files changed, 356 insertions(+) create mode 100644 python/ql/lib/semmle/python/Overlay.qll diff --git a/python/ql/lib/python.qll b/python/ql/lib/python.qll index 24744d005a1..b08f0ae35bb 100644 --- a/python/ql/lib/python.qll +++ b/python/ql/lib/python.qll @@ -37,6 +37,7 @@ import semmle.python.pointsto.CallGraph import semmle.python.objects.ObjectAPI import semmle.python.Unit import site +private import semmle.python.Overlay // Removing this import perturbs the compilation process enough that the points-to analysis gets // compiled -- and cached -- differently depending on whether the data flow library is imported. By // importing it privately here, we ensure that the points-to analysis is compiled the same way. diff --git a/python/ql/lib/semmle/python/Overlay.qll b/python/ql/lib/semmle/python/Overlay.qll new file mode 100644 index 00000000000..fa782801457 --- /dev/null +++ b/python/ql/lib/semmle/python/Overlay.qll @@ -0,0 +1,355 @@ +/** + * Defines entity discard predicates for Python overlay analysis. + */ + +/*- Predicates -*/ +/** + * Holds always for the overlay variant and never for the base variant. + * This local predicate is used to define local predicates that behave + * differently for the base and overlay variant. + */ +overlay[local] +predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +overlay[local] +private string getPathForLocation(@location loc) { + exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) + or + exists(@py_Module mod | locations_ast(loc, mod, _, _, _, _) | result = getPathForModule(mod)) +} + +overlay[local] +private string getPathForModule(@py_Module mod) { + exists(@container fileOrFolder | py_module_path(mod, fileOrFolder) | + result = getPathForContainer(fileOrFolder) + ) +} + +overlay[local] +private string getPathForContainer(@container fileOrFolder) { + files(fileOrFolder, result) or folders(fileOrFolder, result) +} + +/*- Discardable entities and their discard predicates -*/ +/** Python database entities that use named TRAP IDs; the rest use *-ids. */ +overlay[local] +private class NamedEntity = @py_Module or @container or @py_cobject; + +overlay[discard_entity] +private predicate discardNamedEntity(@top el) { + el instanceof NamedEntity and + // Entities with named IDs can exist both in base, overlay, or both. + exists(Discardable d | d = el | + overlayChangedFiles(d.getPath()) and + not d.existsInOverlay() + ) +} + +overlay[discard_entity] +private predicate discardStarEntity(@top el) { + not el instanceof NamedEntity and + // Entities with *-ids can exist either in base or overlay, but not both. + exists(Discardable d | d = el | + overlayChangedFiles(d.getPath()) and + d.existsInBase() + ) +} + +/** + * An abstract base class for all elements that can be discarded from the base. + */ +overlay[local] +abstract class Discardable extends @top { + /** Gets the path to the file in which this element occurs. */ + abstract string getPath(); + + /** Holds if this element exists in the base variant. */ + predicate existsInBase() { not isOverlay() and exists(this) } + + /** Holds if this element exists in the overlay variant. */ + predicate existsInOverlay() { isOverlay() and exists(this) } + + /** Gets a textual representation of this discardable element. */ + string toString() { none() } +} + +/** + * Discardable locatable AST nodes (`@py_location_parent`). + */ +overlay[local] +final private class DiscardableLocatable extends Discardable instanceof @py_location_parent { + override string getPath() { + exists(@location loc | py_locations(loc, this) | result = getPathForLocation(loc)) + } +} + +/** + * Discardable scopes (classes, functions, modules). + */ +overlay[local] +final private class DiscardableScope extends Discardable instanceof @py_scope { + override string getPath() { + exists(@location loc | py_scope_location(loc, this) | result = getPathForLocation(loc)) + or + result = getPathForModule(this) + } +} + +/** + * Discardable files and folders. + */ +overlay[local] +final private class DiscardableContainer extends Discardable instanceof @container { + override string getPath() { result = getPathForContainer(this) } +} + +/** Discardable control flow nodes */ +overlay[local] +final private class DiscardableCfgNode extends Discardable instanceof @py_flow_node { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_flow_bb_node(this, d.(@py_ast_node), _, _)) + } +} + +/** Discardable Python variables. */ +overlay[local] +final private class DiscardableVar extends Discardable instanceof @py_variable { + override string getPath() { + exists(Discardable parent | result = parent.getPath() | variable(this, parent.(@py_scope), _)) + } +} + +/** Discardable SSA variables. */ +overlay[local] +final private class DiscardableSsaVar extends Discardable instanceof @py_ssa_var { + override string getPath() { + exists(DiscardableVar other | result = other.getPath() | py_ssa_var(this, other)) + } +} + +/** Discardable locations. */ +overlay[local] +final private class DiscardableLocation extends Discardable instanceof @location { + override string getPath() { result = getPathForLocation(this) } +} + +/** Discardable lines. */ +overlay[local] +final private class DiscardableLine extends Discardable instanceof @py_line { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_line_lengths(this, d.(@py_Module), _, _)) + } +} + +/** Discardable string part lists. */ +overlay[local] +final private class DiscardableStringPartList extends Discardable instanceof @py_StringPart_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_StringPart_lists(this, d.(@py_Bytes_or_Str))) + } +} + +/** Discardable alias */ +overlay[local] +final private class DiscardableAlias extends Discardable instanceof @py_alias { + override string getPath() { + exists(DiscardableAliasList d | result = d.getPath() | py_aliases(this, d, _)) + } +} + +/** Discardable alias list */ +overlay[local] +final private class DiscardableAliasList extends Discardable instanceof @py_alias_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_alias_lists(this, d.(@py_Import))) + } +} + +/** Discardable arguments */ +overlay[local] +final private class DiscardableArguments extends Discardable instanceof @py_arguments { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_arguments(this, d.(@py_arguments_parent))) + } +} + +/** Discardable boolop */ +overlay[local] +final private class DiscardableBoolOp extends Discardable instanceof @py_boolop { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_boolops(this, _, d.(@py_BoolExpr))) + } +} + +/** Discardable cmpop */ +overlay[local] +final private class DiscardableCmpOp extends Discardable instanceof @py_cmpop { + override string getPath() { + exists(DiscardableCmpOpList d | result = d.getPath() | py_cmpops(this, _, d, _)) + } +} + +/** Discardable cmpop list */ +overlay[local] +final private class DiscardableCmpOpList extends Discardable instanceof @py_cmpop_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_cmpop_lists(this, d.(@py_Compare))) + } +} + +/** Discardable comprehension list */ +overlay[local] +final private class DiscardableComprehensionList extends Discardable instanceof @py_comprehension_list +{ + override string getPath() { + exists(Discardable d | result = d.getPath() | py_comprehension_lists(this, d.(@py_ListComp))) + } +} + +/** Discardable dict item list */ +overlay[local] +final private class DiscardableDictItemList extends Discardable instanceof @py_dict_item_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | + py_dict_item_lists(this, d.(@py_dict_item_list_parent)) + ) + } +} + +/** Discardable expr context */ +overlay[local] +final private class DiscardableExprContext extends Discardable instanceof @py_expr_context { + override string getPath() { + exists(Discardable d | result = d.getPath() | + py_expr_contexts(this, _, d.(@py_expr_context_parent)) + ) + } +} + +/** Discardable expr list */ +overlay[local] +final private class DiscardableExprList extends Discardable instanceof @py_expr_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_expr_lists(this, d.(@py_expr_list_parent), _)) + } +} + +/** Discardable operator */ +overlay[local] +final private class DiscardableOperator extends Discardable instanceof @py_operator { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_operators(this, _, d.(@py_BinaryExpr))) + } +} + +/** Discardable parameter list */ +overlay[local] +final private class DiscardableParameterList extends Discardable instanceof @py_parameter_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_parameter_lists(this, d.(@py_Function))) + } +} + +/** Discardable pattern list */ +overlay[local] +final private class DiscardablePatternList extends Discardable instanceof @py_pattern_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | + py_pattern_lists(this, d.(@py_pattern_list_parent), _) + ) + } +} + +/** Discardable stmt list */ +overlay[local] +final private class DiscardableStmtList extends Discardable instanceof @py_stmt_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_stmt_lists(this, d.(@py_stmt_list_parent), _)) + } +} + +/** Discardable str list */ +overlay[local] +final private class DiscardableStrList extends Discardable instanceof @py_str_list { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_str_lists(this, d.(@py_str_list_parent))) + } +} + +/** Discardable type parameter list */ +overlay[local] +final private class DiscardableTypeParameterList extends Discardable instanceof @py_type_parameter_list +{ + override string getPath() { + exists(Discardable d | result = d.getPath() | + py_type_parameter_lists(this, d.(@py_type_parameter_list_parent)) + ) + } +} + +/** Discardable unaryop */ +overlay[local] +final private class DiscardableUnaryOp extends Discardable instanceof @py_unaryop { + override string getPath() { + exists(Discardable d | result = d.getPath() | py_unaryops(this, _, d.(@py_UnaryExpr))) + } +} + +/** Discardable comment */ +overlay[local] +final private class DiscardableComment extends Discardable instanceof @py_comment { + override string getPath() { + exists(DiscardableLocation d | result = d.getPath() | py_comments(this, _, d)) + } +} + +/*- XML -*/ +overlay[local] +final private class DiscardableXmlLocatable extends Discardable instanceof @xmllocatable { + override string getPath() { + exists(@location loc | xmllocations(this, loc) | result = getPathForLocation(loc)) + } +} + +overlay[local] +private predicate overlayXmlExtracted(string path) { + exists(DiscardableXmlLocatable d | not files(d, _) and not xmlNs(d, _, _, _) | + d.existsInOverlay() and + path = d.getPath() + ) +} + +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable el) { + exists(DiscardableXmlLocatable d | d = el | + // The XML extractor is currently not incremental and may extract more + // XML files than those included in `overlayChangedFiles`, so this discard predicate + // handles those files alongside the normal `discardStarEntity` logic. + overlayXmlExtracted(d.getPath()) and + d.existsInBase() + ) +} + +/*- YAML -*/ +overlay[local] +final private class DiscardableYamlLocatable extends Discardable instanceof @yaml_locatable { + override string getPath() { + exists(@location loc | yaml_locations(this, loc) | result = getPathForLocation(loc)) + } +} + +overlay[local] +private predicate overlayYamlExtracted(string path) { + exists(DiscardableYamlLocatable l | l.existsInOverlay() | path = l.getPath()) +} + +overlay[discard_entity] +private predicate discardBaseYamlLocatable(@yaml_locatable el) { + exists(DiscardableYamlLocatable d | d = el | + // The Yaml extractor is currently not incremental and may extract more + // Yaml files than those included in `overlayChangedFiles`, so this discard predicate + // handles those files alongside the normal `discardStarEntity` logic. + overlayYamlExtracted(d.getPath()) and + d.existsInBase() + ) +} From 20d4e429ca49a58712a2d8820a7776b3b476c3ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 2 Oct 2025 11:38:18 +0200 Subject: [PATCH 049/965] Add consistency query (exactly one path for every entity) --- .../OverlayDiscardConsistency.ql | 1 + .../OverlayDiscardConsistencyQuery.qll | 90 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 python/ql/consistency-queries/OverlayDiscardConsistency.ql create mode 100644 python/ql/lib/semmle/python/internal/OverlayDiscardConsistencyQuery.qll diff --git a/python/ql/consistency-queries/OverlayDiscardConsistency.ql b/python/ql/consistency-queries/OverlayDiscardConsistency.ql new file mode 100644 index 00000000000..d37afe1f919 --- /dev/null +++ b/python/ql/consistency-queries/OverlayDiscardConsistency.ql @@ -0,0 +1 @@ +import semmle.python.internal.OverlayDiscardConsistencyQuery diff --git a/python/ql/lib/semmle/python/internal/OverlayDiscardConsistencyQuery.qll b/python/ql/lib/semmle/python/internal/OverlayDiscardConsistencyQuery.qll new file mode 100644 index 00000000000..9cca328b02d --- /dev/null +++ b/python/ql/lib/semmle/python/internal/OverlayDiscardConsistencyQuery.qll @@ -0,0 +1,90 @@ +/** + * Provides consistency queries for checking that every database entity + * that can be discarded (i.e. everything but `@py_cobject`) in an overlay + * database is indeed discarded, by proxy of having exactly one `Discardable.getPath()`. + */ + +import python +import semmle.python.Overlay + +class TopWithToString instanceof @top { + string getDbType() { + this instanceof @py_source_element and result = "@source_element" + or + this instanceof @py_object and result = "@py_object" + or + this instanceof @py_base_var and result = "@py_base_var" + or + this instanceof @location and result = "@location" + or + this instanceof @py_line and result = "@py_line" + or + this instanceof @py_comment and result = "@py_comment" + or + this instanceof @py_expr_parent and result = "@py_expr_parent" + or + this instanceof @py_expr_context and result = "@py_expr_context" + or + this instanceof @py_operator and result = "@py_operator" + or + this instanceof @py_boolop and result = "@py_boolop" + or + this instanceof @py_cmpop and result = "@py_cmpop" + or + this instanceof @py_unaryop and result = "@py_unaryop" + or + this instanceof @py_cmpop_list and result = "@py_cmpop_list" + or + this instanceof @py_alias_list and result = "@py_alias_list" + or + this instanceof @py_StringPart_list and result = "@py_StringPart_list" + or + this instanceof @py_comprehension_list and result = "@py_comprehension_list" + or + this instanceof @py_dict_item_list and result = "@py_dict_item_list" + or + this instanceof @py_pattern_list and result = "@py_pattern_list" + or + this instanceof @py_stmt_list and result = "@py_stmt_list" + or + this instanceof @py_str_list and result = "@py_str_list" + or + this instanceof @py_type_parameter_list and result = "@py_type_parameter_list" + or + this instanceof @externalDefect and result = "@externalDefect" + or + this instanceof @externalMetric and result = "@externalMetric" + or + this instanceof @externalDataElement and result = "@externalDataElement" + or + this instanceof @duplication_or_similarity and result = "@duplication_or_similarity" + or + this instanceof @svnentry and result = "@svnentry" + or + this instanceof @xmllocatable and result = "@xmllocatable" + or + this instanceof @yaml_locatable and result = "@yaml_locatable" + } + + string toString() { + result = this.getDbType() + or + not exists(this.getDbType()) and + result = "Unknown type" + } +} + +query predicate consistencyTest(TopWithToString el, string message) { + not el instanceof Discardable and + not el instanceof @py_cobject and // cannot be linked to a path + not el instanceof @externalDataElement and // cannot be linked to a path + message = "Not Discardable" + or + exists(Discardable d, int numPaths | d = el and numPaths = count(d.getPath()) | + numPaths = 0 and + message = "Discardable but no path found" + or + numPaths > 1 and + message = "Discardable but multiple paths found (" + concat(d.getPath(), ", ") + ")" + ) +} From 9d7c52423a95b13e45f5a18a27c49f44e9391a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 2 Oct 2025 16:41:06 +0200 Subject: [PATCH 050/965] Basic python overlay tests The base source is in basic-overlay-eval/orig_src, the overlay source is in basic-full-eval. We run two tests: a full evaluation test in basic-full-eval, and an overlay evaluation test in basic-overlay-eval. The test source and expected results are the SAME, due to the .qlref, meaning we expect the same results for full and overlay evaluation. --- .../overlay/basic-full-eval/greeting.py | 5 + .../overlay/basic-full-eval/hello.py | 4 + .../overlay/basic-full-eval/lib/__init__.py | 1 + .../overlay/basic-full-eval/new.py | 2 + .../overlay/basic-full-eval/options | 1 + .../overlay/basic-full-eval/test.expected | 152 ++++++++++++++++++ .../overlay/basic-full-eval/test.ql | 19 +++ .../basic-overlay-eval/codeql-test.yml | 3 + .../overlay/basic-overlay-eval/options | 1 + .../basic-overlay-eval/orig_src/greeting.py | 5 + .../basic-overlay-eval/orig_src/hello.py | 4 + .../orig_src/lib/__init__.py | 1 + .../basic-overlay-eval/orig_src/old.py | 2 + .../overlay/basic-overlay-eval/test.qlref | 1 + 14 files changed, 201 insertions(+) create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/greeting.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/hello.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/lib/__init__.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/new.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/options create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/test.expected create mode 100644 python/ql/test/extractor-tests/overlay/basic-full-eval/test.ql create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/codeql-test.yml create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/options create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/greeting.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/hello.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/lib/__init__.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/old.py create mode 100644 python/ql/test/extractor-tests/overlay/basic-overlay-eval/test.qlref diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/greeting.py b/python/ql/test/extractor-tests/overlay/basic-full-eval/greeting.py new file mode 100644 index 00000000000..8bff5db5bbf --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/greeting.py @@ -0,0 +1,5 @@ +from new import * +from lib import * + +def get_greeting(): + return combine("Goodbye", get_new_target()) diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/hello.py b/python/ql/test/extractor-tests/overlay/basic-full-eval/hello.py new file mode 100644 index 00000000000..2744a6c2978 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/hello.py @@ -0,0 +1,4 @@ +from greeting import * + +if __name__ == "__main__": + print(get_greeting()) diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/lib/__init__.py b/python/ql/test/extractor-tests/overlay/basic-full-eval/lib/__init__.py new file mode 100644 index 00000000000..b3587542d9b --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/lib/__init__.py @@ -0,0 +1 @@ +def combine(a, b): return f"{a}, {b}!" diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/new.py b/python/ql/test/extractor-tests/overlay/basic-full-eval/new.py new file mode 100644 index 00000000000..25722f63b07 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/new.py @@ -0,0 +1,2 @@ +def get_new_target(): + return "世界" diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/options b/python/ql/test/extractor-tests/overlay/basic-full-eval/options new file mode 100644 index 00000000000..4f6e4043862 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/options @@ -0,0 +1 @@ +semmle-extractor-options: -R . -m hello.py --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/test.expected b/python/ql/test/extractor-tests/overlay/basic-full-eval/test.expected new file mode 100644 index 00000000000..523e2eb8883 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/test.expected @@ -0,0 +1,152 @@ +testStringLiterals +| greeting.py:5:20:5:28 | StringLiteral | Goodbye | +| hello.py:3:16:3:25 | StringLiteral | __main__ | +| lib/__init__.py:1:27:1:29 | StringLiteral | | +| lib/__init__.py:1:31:1:34 | StringLiteral | , | +| lib/__init__.py:1:36:1:38 | StringLiteral | ! | +| new.py:2:12:2:15 | StringLiteral | \u4e16\u754c | +testModules +| greeting.py:0:0:0:0 | Module greeting | +| hello.py:0:0:0:0 | Module hello | +| lib/__init__.py:0:0:0:0 | Module lib.__init__ | +| lib:0:0:0:0 | Package lib | +| new.py:0:0:0:0 | Module new | +testFunctions +| greeting.py:4:1:4:19 | Function get_greeting | +| lib/__init__.py:1:1:1:18 | Function combine | +| new.py:1:1:1:21 | Function get_new_target | +testClasses +testLocations +| greeting.py:0:0:0:0 | greeting.py:0 | +| greeting.py:1:1:1:17 | greeting.py:1 | +| greeting.py:1:6:1:8 | greeting.py:1 | +| greeting.py:2:1:2:17 | greeting.py:2 | +| greeting.py:2:6:2:8 | greeting.py:2 | +| greeting.py:4:1:4:19 | greeting.py:4 | +| greeting.py:4:1:4:19 | greeting.py:4 | +| greeting.py:4:1:4:19 | greeting.py:4 | +| greeting.py:4:5:4:16 | greeting.py:4 | +| greeting.py:5:5:5:47 | greeting.py:5 | +| greeting.py:5:12:5:18 | greeting.py:5 | +| greeting.py:5:12:5:47 | greeting.py:5 | +| greeting.py:5:20:5:28 | greeting.py:5 | +| greeting.py:5:31:5:44 | greeting.py:5 | +| greeting.py:5:31:5:46 | greeting.py:5 | +| hello.py:0:0:0:0 | hello.py:0 | +| hello.py:1:1:1:22 | hello.py:1 | +| hello.py:1:6:1:13 | hello.py:1 | +| hello.py:3:1:3:26 | hello.py:3 | +| hello.py:3:4:3:11 | hello.py:3 | +| hello.py:3:4:3:25 | hello.py:3 | +| hello.py:3:16:3:25 | hello.py:3 | +| hello.py:4:5:4:9 | hello.py:4 | +| hello.py:4:5:4:25 | hello.py:4 | +| hello.py:4:5:4:25 | hello.py:4 | +| hello.py:4:11:4:22 | hello.py:4 | +| hello.py:4:11:4:24 | hello.py:4 | +| lib/__init__.py:0:0:0:0 | lib/__init__.py:0 | +| lib/__init__.py:1:1:1:18 | lib/__init__.py:1 | +| lib/__init__.py:1:1:1:18 | lib/__init__.py:1 | +| lib/__init__.py:1:1:1:18 | lib/__init__.py:1 | +| lib/__init__.py:1:5:1:11 | lib/__init__.py:1 | +| lib/__init__.py:1:13:1:13 | lib/__init__.py:1 | +| lib/__init__.py:1:16:1:16 | lib/__init__.py:1 | +| lib/__init__.py:1:20:1:38 | lib/__init__.py:1 | +| lib/__init__.py:1:27:1:29 | lib/__init__.py:1 | +| lib/__init__.py:1:27:1:38 | lib/__init__.py:1 | +| lib/__init__.py:1:30:1:30 | lib/__init__.py:1 | +| lib/__init__.py:1:31:1:34 | lib/__init__.py:1 | +| lib/__init__.py:1:35:1:35 | lib/__init__.py:1 | +| lib/__init__.py:1:36:1:38 | lib/__init__.py:1 | +| lib:0:0:0:0 | lib:0 | +| new.py:0:0:0:0 | new.py:0 | +| new.py:1:1:1:21 | new.py:1 | +| new.py:1:1:1:21 | new.py:1 | +| new.py:1:1:1:21 | new.py:1 | +| new.py:1:5:1:18 | new.py:1 | +| new.py:2:5:2:15 | new.py:2 | +| new.py:2:12:2:15 | new.py:2 | +testFiles +| greeting.py:0:0:0:0 | greeting.py | +| hello.py:0:0:0:0 | hello.py | +| lib/__init__.py:0:0:0:0 | lib/__init__.py | +| new.py:0:0:0:0 | new.py | +testCfgNodes +| greeting.py:0:0:0:0 | Entry node for Module greeting | +| greeting.py:0:0:0:0 | Exit node for Module greeting | +| greeting.py:1:1:1:17 | ControlFlowNode for from new import * | +| greeting.py:1:6:1:8 | ControlFlowNode for ImportExpr | +| greeting.py:2:1:2:17 | ControlFlowNode for from lib import * | +| greeting.py:2:6:2:8 | ControlFlowNode for ImportExpr | +| greeting.py:4:1:4:19 | ControlFlowNode for FunctionExpr | +| greeting.py:4:1:4:19 | Entry node for Function get_greeting | +| greeting.py:4:1:4:19 | Exit node for Function get_greeting | +| greeting.py:4:5:4:16 | ControlFlowNode for get_greeting | +| greeting.py:5:5:5:47 | ControlFlowNode for Return | +| greeting.py:5:12:5:18 | ControlFlowNode for combine | +| greeting.py:5:12:5:47 | ControlFlowNode for combine() | +| greeting.py:5:20:5:28 | ControlFlowNode for StringLiteral | +| greeting.py:5:31:5:44 | ControlFlowNode for get_new_target | +| greeting.py:5:31:5:46 | ControlFlowNode for get_new_target() | +| hello.py:0:0:0:0 | Entry node for Module hello | +| hello.py:0:0:0:0 | Exit node for Module hello | +| hello.py:1:1:1:22 | ControlFlowNode for from greeting import * | +| hello.py:1:6:1:13 | ControlFlowNode for ImportExpr | +| hello.py:3:4:3:11 | ControlFlowNode for __name__ | +| hello.py:3:4:3:25 | ControlFlowNode for Compare | +| hello.py:3:16:3:25 | ControlFlowNode for StringLiteral | +| hello.py:4:5:4:9 | ControlFlowNode for print | +| hello.py:4:5:4:25 | ControlFlowNode for print() | +| hello.py:4:11:4:22 | ControlFlowNode for get_greeting | +| hello.py:4:11:4:24 | ControlFlowNode for get_greeting() | +| lib/__init__.py:0:0:0:0 | Entry node for Module lib.__init__ | +| lib/__init__.py:0:0:0:0 | Exit node for Module lib.__init__ | +| lib/__init__.py:1:1:1:18 | ControlFlowNode for FunctionExpr | +| lib/__init__.py:1:1:1:18 | Entry node for Function combine | +| lib/__init__.py:1:1:1:18 | Exit node for Function combine | +| lib/__init__.py:1:5:1:11 | ControlFlowNode for combine | +| lib/__init__.py:1:13:1:13 | ControlFlowNode for a | +| lib/__init__.py:1:16:1:16 | ControlFlowNode for b | +| lib/__init__.py:1:20:1:38 | ControlFlowNode for Return | +| lib/__init__.py:1:27:1:29 | ControlFlowNode for StringLiteral | +| lib/__init__.py:1:27:1:38 | ControlFlowNode for Fstring | +| lib/__init__.py:1:30:1:30 | ControlFlowNode for a | +| lib/__init__.py:1:31:1:34 | ControlFlowNode for StringLiteral | +| lib/__init__.py:1:35:1:35 | ControlFlowNode for b | +| lib/__init__.py:1:36:1:38 | ControlFlowNode for StringLiteral | +| lib:0:0:0:0 | Entry node for Package lib | +| new.py:0:0:0:0 | Entry node for Module new | +| new.py:0:0:0:0 | Exit node for Module new | +| new.py:1:1:1:21 | ControlFlowNode for FunctionExpr | +| new.py:1:1:1:21 | Entry node for Function get_new_target | +| new.py:1:1:1:21 | Exit node for Function get_new_target | +| new.py:1:5:1:18 | ControlFlowNode for get_new_target | +| new.py:2:5:2:15 | ControlFlowNode for Return | +| new.py:2:12:2:15 | ControlFlowNode for StringLiteral | +testSsaVars +| file://:0:0:0:0 | SSA Variable __name__ | +| file://:0:0:0:0 | SSA Variable get_greeting | +| file://:0:0:0:0 | SSA Variable print | +| greeting.py:4:5:4:16 | SSA Variable get_greeting | +| lib/__init__.py:1:5:1:11 | SSA Variable combine | +| lib/__init__.py:1:13:1:13 | SSA Variable a | +| lib/__init__.py:1:16:1:16 | SSA Variable b | +| new.py:1:5:1:18 | SSA Variable get_new_target | +testVars +| Global Variable __name__ | greeting.py:0:0:0:0 | Module greeting | +| Global Variable __name__ | hello.py:0:0:0:0 | Module hello | +| Global Variable __name__ | lib/__init__.py:0:0:0:0 | Module lib.__init__ | +| Global Variable __name__ | new.py:0:0:0:0 | Module new | +| Global Variable __package__ | greeting.py:0:0:0:0 | Module greeting | +| Global Variable __package__ | hello.py:0:0:0:0 | Module hello | +| Global Variable __package__ | lib/__init__.py:0:0:0:0 | Module lib.__init__ | +| Global Variable __package__ | new.py:0:0:0:0 | Module new | +| Global Variable combine | greeting.py:0:0:0:0 | Module greeting | +| Global Variable combine | lib/__init__.py:0:0:0:0 | Module lib.__init__ | +| Global Variable get_greeting | greeting.py:0:0:0:0 | Module greeting | +| Global Variable get_greeting | hello.py:0:0:0:0 | Module hello | +| Global Variable get_new_target | greeting.py:0:0:0:0 | Module greeting | +| Global Variable get_new_target | new.py:0:0:0:0 | Module new | +| Global Variable print | hello.py:0:0:0:0 | Module hello | +| Local Variable a | lib/__init__.py:1:1:1:18 | Function combine | +| Local Variable b | lib/__init__.py:1:1:1:18 | Function combine | diff --git a/python/ql/test/extractor-tests/overlay/basic-full-eval/test.ql b/python/ql/test/extractor-tests/overlay/basic-full-eval/test.ql new file mode 100644 index 00000000000..469fb9118f0 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-full-eval/test.ql @@ -0,0 +1,19 @@ +import python + +query predicate testStringLiterals(StringLiteral l, string text) { l.getText() = text } + +query predicate testModules(Module m) { any() } + +query predicate testFunctions(Function f) { any() } + +query predicate testClasses(Class c) { any() } + +query predicate testLocations(Location l) { any() } + +query predicate testFiles(File f) { any() } + +query predicate testCfgNodes(ControlFlowNode n) { any() } + +query predicate testSsaVars(SsaVariable var) { any() } + +query predicate testVars(Variable var, Scope s) { s = var.getScope() } diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/codeql-test.yml b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/codeql-test.yml new file mode 100644 index 00000000000..b0ad72e42d8 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/codeql-test.yml @@ -0,0 +1,3 @@ +overlay: + base: "orig_src" + overlay: "../basic-full-eval" diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/options b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/options new file mode 100644 index 00000000000..4f6e4043862 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/options @@ -0,0 +1 @@ +semmle-extractor-options: -R . -m hello.py --filter exclude:**/*.testproj/** diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/greeting.py b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/greeting.py new file mode 100644 index 00000000000..5b16454e2c6 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/greeting.py @@ -0,0 +1,5 @@ +from old import * +from lib import * + +def get_greeting(): + return combine("Hello", get_old_target()) diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/hello.py b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/hello.py new file mode 100644 index 00000000000..2744a6c2978 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/hello.py @@ -0,0 +1,4 @@ +from greeting import * + +if __name__ == "__main__": + print(get_greeting()) diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/lib/__init__.py b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/lib/__init__.py new file mode 100644 index 00000000000..b3587542d9b --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/lib/__init__.py @@ -0,0 +1 @@ +def combine(a, b): return f"{a}, {b}!" diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/old.py b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/old.py new file mode 100644 index 00000000000..8dc6e3416fb --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/orig_src/old.py @@ -0,0 +1,2 @@ +def get_old_target(): + return "World" diff --git a/python/ql/test/extractor-tests/overlay/basic-overlay-eval/test.qlref b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/test.qlref new file mode 100644 index 00000000000..961494fbda1 --- /dev/null +++ b/python/ql/test/extractor-tests/overlay/basic-overlay-eval/test.qlref @@ -0,0 +1 @@ +../basic-full-eval/test.ql From ece121070bde6b85ae89f53f88b6dd62fddbcfcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 2 Oct 2025 18:03:11 +0200 Subject: [PATCH 051/965] Add change note. --- .../2025-10-02-python-overlay-compilation-plus-extractor.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md diff --git a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md new file mode 100644 index 00000000000..5eb698354c1 --- /dev/null +++ b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md @@ -0,0 +1,5 @@ +--- +category: feature +--- + +* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. From c749607db802e9e48c08274a1dad48d39938e35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 7 Oct 2025 11:22:16 +0200 Subject: [PATCH 052/965] Bump python extractor version to 7.1.5 --- python/extractor/semmle/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/extractor/semmle/util.py b/python/extractor/semmle/util.py index 8196f76e437..2f6a18ac7a9 100644 --- a/python/extractor/semmle/util.py +++ b/python/extractor/semmle/util.py @@ -10,7 +10,7 @@ from io import BytesIO #Semantic version of extractor. #Update this if any changes are made -VERSION = "7.1.4" +VERSION = "7.1.5" PY_EXTENSIONS = ".py", ".pyw" From 77d4af153dce1d38d687cf3086a3552f74e00277 Mon Sep 17 00:00:00 2001 From: Alex Eyers-Taylor Date: Thu, 25 Sep 2025 17:20:33 +0100 Subject: [PATCH 053/965] Java: Make some query libraries local. --- .../lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll | 1 + .../code/java/security/StaticInitializationVectorQuery.qll | 1 + java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll | 1 + 3 files changed, 3 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll index 4f9e39b23f2..0c1f14c902b 100644 --- a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll @@ -12,6 +12,7 @@ private class ShortStringLiteral extends StringLiteral { /** * A string literal that may refer to a broken or risky cryptographic algorithm. */ +overlay[local?] class BrokenAlgoLiteral extends ShortStringLiteral { BrokenAlgoLiteral() { this.getValue().regexpMatch(getInsecureAlgorithmRegex()) and diff --git a/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll b/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll index 282133ec5c6..a0377599054 100644 --- a/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll +++ b/java/ql/lib/semmle/code/java/security/StaticInitializationVectorQuery.qll @@ -33,6 +33,7 @@ private class StaticByteArrayCreation extends ArrayCreationExpr { } /** An expression that updates `array`. */ +overlay[local?] private class ArrayUpdate extends Expr { Expr array; diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index 7234b4c788f..895e824b3db 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -69,6 +69,7 @@ private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } +overlay[local?] private class BarrierPrefix extends InterestingPrefix { int offset; From 90db349f4bf623498d1b86bbf94495339824b90b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 8 Oct 2025 14:05:00 +0100 Subject: [PATCH 054/965] State that ruby broken crypto algo doesn't deal with hashing --- .../queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp index cede4e735d5..d793312c45d 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp @@ -13,6 +13,12 @@ algorithm means that encrypted or hashed data is less secure than it appears to be.

    +

    + This query alerts on any use of a weak cryptographic algorithm, that is + not a hashing algorithm. Use of broken or weak cryptographic hash + functions are handled by the + rb/weak-sensitive-data-hashing query. +

    From 2a1c9d8ec15d6fe5fd169c33294498b2603eb67b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 8 Oct 2025 14:08:36 +0100 Subject: [PATCH 055/965] Remove erroneous comma --- python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp | 2 +- .../ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp | 2 +- .../ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index 1b26d30e0fe..a457db90431 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -16,7 +16,7 @@

    - This query alerts on any use of a weak cryptographic algorithm, that is + This query alerts on any use of a weak cryptographic algorithm that is not a hashing algorithm. Use of broken or weak cryptographic hash functions are handled by the py/weak-sensitive-data-hashing query. diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp index d793312c45d..3346d3f7015 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp @@ -14,7 +14,7 @@ secure than it appears to be.

    - This query alerts on any use of a weak cryptographic algorithm, that is + This query alerts on any use of a weak cryptographic algorithm that is not a hashing algorithm. Use of broken or weak cryptographic hash functions are handled by the rb/weak-sensitive-data-hashing query. diff --git a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp index e24222e09fc..7bc1eb018e2 100644 --- a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -16,7 +16,7 @@

    - This query alerts on any use of a weak cryptographic algorithm, that is + This query alerts on any use of a weak cryptographic algorithm that is not a hashing algorithm. Use of broken or weak cryptographic hash functions are handled by the rust/weak-sensitive-data-hashing query. From 0bcdb91639f5433b2a2f2b64c52b64f02b14b134 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 8 Oct 2025 14:10:54 +0100 Subject: [PATCH 056/965] Improve qhelp for broken crypto algo queries Previously it focussed too much on the risk of data being decrypted, and didn't explain why using weak algorithms is a problem in other contexts. --- .../CWE/CWE-327/BrokenCryptoAlgorithm.qhelp | 12 ++++-- .../CWE/CWE-327/BrokenCryptoAlgorithm.qhelp | 12 ++++-- .../CWE-327/BrokenCryptoAlgorithm.qhelp | 29 ++++++++++++--- .../CWE-327/BrokenCryptoAlgorithm.qhelp | 30 ++++++++++++--- .../cwe-327/BrokenCryptoAlgorithm.qhelp | 30 ++++++++++++--- .../CWE-327/BrokenCryptoAlgorithm.qhelp | 37 ++++++++++++++----- 6 files changed, 114 insertions(+), 36 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp b/cpp/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp index 0fcbd89d892..33561b3d1bf 100644 --- a/cpp/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/cpp/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -3,11 +3,15 @@ "qhelp.dtd"> -

    Using broken or weak cryptographic algorithms can leave data vulnerable to being decrypted.

    +

    Using broken or weak cryptographic algorithms may compromise security guarantees such as confidentiality, integrity, and authenticity.

    -

    Many cryptographic algorithms provided by cryptography libraries are known to be weak, or -flawed. Using such an algorithm means that an attacker may be able to easily decrypt the encrypted -data.

    +

    Many cryptographic algorithms are known to be weak or flawed. The security guarantees of a system often rely on the underlying cryptography, so using a weak algorithm can have severe consequences. For example: +

    +
      +
    • If a weak encryption algorithm is used, an attacker may be able to decrypt sensitive data.
    • +
    • If a weak hashing algorithm is used to protect data integrity, an attacker may be able to craft a malicious input that has the same hash as a benign one.
    • +
    • If a weak algorithm is used for digital signatures, an attacker may be able to forge signatures and impersonate legitimate users.
    • +
    diff --git a/java/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp b/java/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp index 1d8e8db6798..35b37b9f814 100644 --- a/java/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/java/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -3,11 +3,15 @@ "qhelp.dtd"> -

    Using broken or weak cryptographic algorithms can leave data vulnerable to being decrypted.

    +

    Using broken or weak cryptographic algorithms may compromise security guarantees such as confidentiality, integrity, and authenticity.

    -

    Many cryptographic algorithms provided by cryptography libraries are known to be weak, or -flawed. Using such an algorithm means that an attacker may be able to easily decrypt the encrypted -data.

    +

    Many cryptographic algorithms are known to be weak or flawed. The security guarantees of a system often rely on the underlying cryptography, so using a weak algorithm can have severe consequences. For example: +

    +
      +
    • If a weak encryption algorithm is used, an attacker may be able to decrypt sensitive data.
    • +
    • If a weak hashing algorithm is used to protect data integrity, an attacker may be able to craft a malicious input that has the same hash as a benign one.
    • +
    • If a weak algorithm is used for digital signatures, an attacker may be able to forge signatures and impersonate legitimate users.
    • +
    diff --git a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index e0ccf71572f..bdd1071b613 100644 --- a/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/javascript/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -4,17 +4,34 @@

    - Using broken or weak cryptographic algorithms can leave data - vulnerable to being decrypted or forged by an attacker. + Using broken or weak cryptographic algorithms may compromise + security guarantees such as confidentiality, integrity, and + authenticity.

    - Many cryptographic algorithms provided by cryptography - libraries are known to be weak, or flawed. Using such an - algorithm means that encrypted or hashed data is less - secure than it appears to be. + Many cryptographic algorithms are known to be weak or flawed. The + security guarantees of a system often rely on the underlying + cryptography, so using a weak algorithm can have severe consequences. + For example:

    +
      +
    • + If a weak encryption algorithm is used, an attacker may be able to + decrypt sensitive data. +
    • +
    • + If a weak hashing algorithm is used to protect data integrity, an + attacker may be able to craft a malicious input that has the same + hash as a benign one. +
    • +
    • + If a weak algorithm is used for digital signatures, an attacker may + be able to forge signatures and impersonate legitimate users. +
    • +
    +
    diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index a457db90431..003849b17cc 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -3,18 +3,36 @@ "qhelp.dtd"> +

    - Using broken or weak cryptographic algorithms can leave data - vulnerable to being decrypted or forged by an attacker. + Using broken or weak cryptographic algorithms may compromise + security guarantees such as confidentiality, integrity, and + authenticity.

    - Many cryptographic algorithms provided by cryptography - libraries are known to be weak, or flawed. Using such an - algorithm means that encrypted or hashed data is less - secure than it appears to be. + Many cryptographic algorithms are known to be weak or flawed. The + security guarantees of a system often rely on the underlying + cryptography, so using a weak algorithm can have severe consequences. + For example:

    +
      +
    • + If a weak encryption algorithm is used, an attacker may be able to + decrypt sensitive data. +
    • +
    • + If a weak hashing algorithm is used to protect data integrity, an + attacker may be able to craft a malicious input that has the same + hash as a benign one. +
    • +
    • + If a weak algorithm is used for digital signatures, an attacker may + be able to forge signatures and impersonate legitimate users. +
    • +
    +

    This query alerts on any use of a weak cryptographic algorithm that is not a hashing algorithm. Use of broken or weak cryptographic hash diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp index 3346d3f7015..3c4dae2ae7b 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp @@ -4,15 +4,33 @@

    - Using broken or weak cryptographic algorithms can leave data - vulnerable to being decrypted or forged by an attacker. + Using broken or weak cryptographic algorithms may compromise + security guarantees such as confidentiality, integrity, and + authenticity.

    +

    - Many cryptographic algorithms provided by cryptography - libraries are known to be weak, or flawed. Using such an - algorithm means that encrypted or hashed data is less - secure than it appears to be. + Many cryptographic algorithms are known to be weak or flawed. The + security guarantees of a system often rely on the underlying + cryptography, so using a weak algorithm can have severe consequences. + For example:

    + +
      +
    • + If a weak encryption algorithm is used, an attacker may be able to + decrypt sensitive data. +
    • +
    • + If a weak hashing algorithm is used to protect data integrity, an + attacker may be able to craft a malicious input that has the same + hash as a benign one. +
    • +
    • + If a weak algorithm is used for digital signatures, an attacker may + be able to forge signatures and impersonate legitimate users. +
    • +

    This query alerts on any use of a weak cryptographic algorithm that is not a hashing algorithm. Use of broken or weak cryptographic hash diff --git a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp index 7bc1eb018e2..89aa8f71a58 100644 --- a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -3,17 +3,34 @@ "qhelp.dtd"> -

    - Using broken or weak cryptographic algorithms can leave data - vulnerable to being decrypted or forged by an attacker. -

    +

    + Using broken or weak cryptographic algorithms may compromise + security guarantees such as confidentiality, integrity, and + authenticity. +

    -

    - Many cryptographic algorithms provided by cryptography - libraries are known to be weak, or flawed. Using such an - algorithm means that encrypted or hashed data is less - secure than it appears to be. -

    +

    + Many cryptographic algorithms are known to be weak or flawed. The + security guarantees of a system often rely on the underlying + cryptography, so using a weak algorithm can have severe consequences. + For example: +

    + +
      +
    • + If a weak encryption algorithm is used, an attacker may be able to + decrypt sensitive data. +
    • +
    • + If a weak hashing algorithm is used to protect data integrity, an + attacker may be able to craft a malicious input that has the same + hash as a benign one. +
    • +
    • + If a weak algorithm is used for digital signatures, an attacker may + be able to forge signatures and impersonate legitimate users. +
    • +

    This query alerts on any use of a weak cryptographic algorithm that is From cf88e3f52d1930c491d4fda1f2e527c650dd2df9 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 09:54:53 -0400 Subject: [PATCH 057/965] Crypto: Standardize naming where use of "family" and "type" have been used. Prefer 'type'. --- .../EllipticCurveAlgorithmInstance.qll | 2 +- .../HashAlgorithmInstance.qll | 2 +- java/ql/lib/experimental/quantum/JCA.qll | 10 +++++----- .../codeql/quantum/experimental/Model.qll | 18 ++++++++---------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll index ef7186d07a0..76746eceba4 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/EllipticCurveAlgorithmInstance.qll @@ -40,7 +40,7 @@ class KnownOpenSslEllipticCurveConstantAlgorithmInstance extends OpenSslAlgorith result = this.(Call).getTarget().getName() } - override Crypto::EllipticCurveFamilyType getEllipticCurveFamilyType() { + override Crypto::EllipticCurveType getEllipticCurveType() { if Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getParsedEllipticCurveName(), _, _) diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll index 55b2dcd7af4..0facc99519d 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/AlgorithmInstances/HashAlgorithmInstance.qll @@ -72,7 +72,7 @@ class KnownOpenSslHashConstantAlgorithmInstance extends OpenSslAlgorithmInstance override OpenSslAlgorithmValueConsumer getAvc() { result = getterCall } - override Crypto::THashType getHashFamily() { + override Crypto::THashType getHashType() { knownOpenSslConstantToHashFamilyType(this, result) or not knownOpenSslConstantToHashFamilyType(this, _) and result = Crypto::OtherHashType() diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index 8b27409410a..a599823ff11 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -426,7 +426,7 @@ module JCAModel { override string getRawHashAlgorithmName() { result = super.getPadding() } - override Crypto::THashType getHashFamily() { result = hash_name_to_type_known(hashName, _) } + override Crypto::THashType getHashType() { result = hash_name_to_type_known(hashName, _) } override int getFixedDigestLength() { exists(hash_name_to_type_known(hashName, result)) } } @@ -859,7 +859,7 @@ module JCAModel { override string getRawHashAlgorithmName() { result = super.getValue() } - override Crypto::THashType getHashFamily() { + override Crypto::THashType getHashType() { result = hash_name_to_type_known(this.getRawHashAlgorithmName(), _) } @@ -1302,7 +1302,7 @@ module JCAModel { override string getRawHashAlgorithmName() { result = this.(StringLiteral).getValue() } - override Crypto::THashType getHashFamily() { result = hash_name_to_type_known(hashName, _) } + override Crypto::THashType getHashType() { result = hash_name_to_type_known(hashName, _) } override int getFixedDigestLength() { exists(hash_name_to_type_known(hashName, result)) } } @@ -1770,7 +1770,7 @@ module JCAModel { override string getRawHashAlgorithmName() { result = this.(StringLiteral).getValue() } - override Crypto::THashType getHashFamily() { result = hashType } + override Crypto::THashType getHashType() { result = hashType } override int getFixedDigestLength() { result = digestLength } } @@ -1905,7 +1905,7 @@ module JCAModel { override string getRawEllipticCurveName() { result = super.getValue() } - override Crypto::EllipticCurveFamilyType getEllipticCurveFamilyType() { + override Crypto::EllipticCurveType getEllipticCurveType() { if Crypto::ellipticCurveNameToKnownKeySizeAndFamilyMapping(this.getRawEllipticCurveName(), _, _) then diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 5ee0d1eb298..43ffc0ffb69 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -825,20 +825,20 @@ module CryptographyBase Input> { */ abstract string getRawEllipticCurveName(); - abstract TEllipticCurveFamilyType getEllipticCurveFamilyType(); + abstract TEllipticCurveType getEllipticCurveType(); abstract int getKeySize(); /** * The 'parsed' curve name, e.g., "P-256" or "secp256r1" - * The parsed name is full name of the curve, including the family, key size, and other + * The parsed name is full name of the curve, including the type, key size, and other * typical parameters found on the name. * * In many cases this will be equivalent to `getRawEllipticCurveAlgorithmName()`, * but not always (e.g., if the curve is specified through a raw NID). * * In cases like an NID, we want the standardized name so users can quickly - * understand what the curve is, while also parsing out the family and key size + * understand what the curve is, while also parsing out the type and key size * separately. */ string getParsedEllipticCurveName() { result = this.getRawEllipticCurveName() } @@ -854,7 +854,7 @@ module CryptographyBase Input> { /** * Gets the type of this digest algorithm, e.g., "SHA1", "SHA2", "MD5" etc. */ - abstract THashType getHashFamily(); + abstract THashType getHashType(); /** * Gets the isolated name as it appears in source, e.g., "SHA-256" in "SHA-256/PKCS7Padding". @@ -2293,13 +2293,13 @@ module CryptographyBase Input> { * * When modeling a new hashing algorithm, use this predicate to specify the type of the algorithm. */ - HashType getHashFamily() { result = instance.asAlg().getHashFamily() } + HashType getHashType() { result = instance.asAlg().getHashType() } - override string getAlgorithmName() { result = this.getHashFamily().toString() } + override string getAlgorithmName() { result = this.getHashType().toString() } int getDigestLength() { result = instance.asAlg().getFixedDigestLength() or - fixedImplicitDigestLength(instance.asAlg().getHashFamily(), result) + fixedImplicitDigestLength(instance.asAlg().getHashType(), result) } final override predicate properties(string key, string value, Location location) { @@ -2340,9 +2340,7 @@ module CryptographyBase Input> { override string getAlgorithmName() { result = this.getRawAlgorithmName() } - EllipticCurveFamilyType getEllipticCurveFamilyType() { - result = instance.asAlg().getEllipticCurveFamilyType() - } + EllipticCurveType getEllipticCurveType() { result = instance.asAlg().getEllipticCurveType() } override predicate properties(string key, string value, Location location) { super.properties(key, value, location) From 1b1b333e8b5175ee89b184fd2875049b101b46c5 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 10:21:06 -0400 Subject: [PATCH 058/965] Crypto: Modify suggested queries per misc. side conversations on standards. Remove redundant query. Fix QL-for-QL issues. --- .../quantum/Analysis/NonceReuse.ql | 17 ------------- .../quantum/Analysis/ReusedNonce.ql | 2 +- .../quantum/Analysis/WeakAsymmetric.ql | 6 ++--- .../quantum/Analysis/WeakBlockModes.ql | 14 ++++++----- .../quantum/Analysis/WeakHashing.ql | 25 +++++++++++++++---- .../quantum/Analysis/WeakKDFKeySize.ql | 4 +-- .../experimental/quantum/Analysis/WeakRSA.ql | 9 ++++--- .../quantum/Analysis/WeakSymmetricCiphers.ql | 23 ++++++++++++----- .../quantum/experimental/Standardization.qll | 6 ++--- 9 files changed, 59 insertions(+), 47 deletions(-) delete mode 100644 java/ql/src/experimental/quantum/Analysis/NonceReuse.ql diff --git a/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql b/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql deleted file mode 100644 index f185e48d6b2..00000000000 --- a/java/ql/src/experimental/quantum/Analysis/NonceReuse.ql +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @name Reuse of cryptographic nonce - * @description Reuse of nonce in cryptographic operations can lead to vulnerabilities. - * @id java/quantum/reused-nonce - * @kind problem - * @problem.severity error - * @precision medium - * @tags quantum - * experimental - */ - -import java -import ArtifactReuse - -from Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2 -where isArtifactReuse(nonce1, nonce2) -select nonce1, "Reuse with nonce $@", nonce2, nonce2.toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql b/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql index ed2872bb67e..c90dbbf5746 100644 --- a/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql +++ b/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql @@ -4,7 +4,7 @@ * @id java/quantum/reused-nonce * @kind problem * @problem.severity error - * @precision medium + * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql index 9ae4ea9130e..57a40bf7621 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql @@ -1,5 +1,5 @@ /** - * @name Weak Asymetric Key Size + * @name Weak Asymmetric Key Size * @id java/quantum/weak-asymmetric-key-size * @description An asymmetric cipher with a short key size is in use * @kind problem @@ -20,5 +20,5 @@ where // Can't be an elliptic curve not Crypto::isEllipticCurveAlgorithmName(algName) select op, - "Use of weak asymmetric key size (int bits)" + keySize.toString() + " for algorithm " + - algName.toString() + " at config source $@", configSrc, configSrc.toString() \ No newline at end of file + "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm " + + algName.toString() + " at config source $@", configSrc, configSrc.toString() diff --git a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql index 3a2d9765915..fee89507176 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql @@ -15,15 +15,17 @@ import experimental.quantum.Language class WeakAESBlockModeAlgNode extends Crypto::KeyOperationAlgorithmNode { WeakAESBlockModeAlgNode() { this.getAlgorithmType() = Crypto::KeyOpAlg::TSymmetricCipher(Crypto::KeyOpAlg::AES()) and - (this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::ECB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CFB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::OFB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CTR() + ( + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::ECB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CFB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::OFB() or + this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CTR() ) } } from Crypto::KeyOperationNode op, Crypto::KeyOperationOutputNode codeNode -where op.getAKnownAlgorithm() instanceof WeakAESBlockModeAlgNode and - codeNode = op.getAnOutputArtifact() +where + op.getAKnownAlgorithm() instanceof WeakAESBlockModeAlgNode and + codeNode = op.getAnOutputArtifact() select op, "Weak AES block mode instance." diff --git a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql index 74a3a19d472..39bd8c6e463 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql @@ -1,19 +1,34 @@ /** * @name Weak hashes * @description Finds uses of cryptographic hashing algorithms that are unapproved or otherwise weak. - * @id java/quantum/slices/weak-hashes + * @id java/quantum/weak-hashes * @kind problem * @problem.severity error * @precision high * @tags external/cwe/cwe-327 + * quantum + * experimental */ import java import experimental.quantum.Language -from Crypto::HashAlgorithmNode alg, string name, string msg +from Crypto::HashAlgorithmNode alg, Crypto::HashType htype, string msg where - name = alg.getAlgorithmName() and - not name in ["SHA256", "SHA384", "SHA512", "SHA-256", "SHA-384", "SHA-512"] and - msg = "Use of unapproved hash algorithm or API " + name + "." + htype = alg.getHashType() and + ( + htype != Crypto::SHA2() and + msg = "Use of unapproved hash algorithm or API " + htype.toString() + "." + or + htype = Crypto::SHA2() and + not exists(alg.getDigestLength()) and + msg = + "Use of approved hash algorithm or API type " + htype.toString() + " but unknown digest size." + or + htype = Crypto::SHA2() and + alg.getDigestLength() < 256 and + msg = + "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" + + alg.getDigestLength() + ")." + ) select alg, msg diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql index 789d7952997..1bae9ebef4f 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql @@ -1,7 +1,7 @@ /** * @name Weak known key derivation function output length * @description Detects key derivation operations with a known weak output length - * @id java/quantum/weak-kdf-iteration-count + * @id java/quantum/weak-kdf-key-size * @kind problem * @problem.severity error * @precision high @@ -17,4 +17,4 @@ where op.getOutputKeySize().asElement() = l and l.getValue().toInt() < 256 select op, "Key derivation operation configures output key length below 256: $@", l, - l.getValue().toString() \ No newline at end of file + l.getValue().toString() diff --git a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql index 5ed405fe3d9..f365b4d7e75 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql @@ -11,14 +11,15 @@ import experimental.quantum.Language -class WeakRSAAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { - WeakRSAAlgorithmNode() { +class WeakRsaAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { + WeakRsaAlgorithmNode() { this.getAlgorithmType() = Crypto::KeyOpAlg::TAsymmetricCipher(Crypto::KeyOpAlg::RSA()) and this.getKeySizeFixed() < 2048 } } from Crypto::KeyOperationNode op, string message -where op.getAKnownAlgorithm() instanceof WeakRSAAlgorithmNode and - message = "Weak RSA instance found with key length <2048" +where + op.getAKnownAlgorithm() instanceof WeakRsaAlgorithmNode and + message = "Weak RSA instance found with key length <2048" select op, message diff --git a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql index 8d938e7dd1b..00e59ebe484 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql @@ -1,19 +1,30 @@ /** * @name Weak symmetric ciphers * @description Finds uses of cryptographic symmetric cipher algorithms that are unapproved or otherwise weak. - * @id java/quantum/slices/weak-ciphers + * @id java/quantum/weak-ciphers * @kind problem * @problem.severity error * @precision high * @tags external/cwe/cwe-327 + * quantum + * experimental */ import java import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg -from Crypto::KeyOperationAlgorithmNode alg, string name, string msg +from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::AlgorithmType algType, string msg where - name = alg.getAlgorithmName() and - name in ["DES", "TripleDES", "DoubleDES", "RC2", "RC4", "IDEA", "Blowfish"] and - msg = "Use of unapproved symmetric cipher algorithm or API: " + name + "." -select alg, msg \ No newline at end of file + algType = alg.getAlgorithmType() and + ( + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DOUBLE_DES()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC2()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) + ) and + msg = "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." +select alg, msg diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll index c713865f9ac..aac9e30c3b6 100644 --- a/shared/quantum/codeql/quantum/experimental/Standardization.qll +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -344,7 +344,7 @@ module Types { /** * Elliptic curve algorithms */ - newtype TEllipticCurveFamilyType = + newtype TEllipticCurveType = NIST() or SEC() or NUMS() or @@ -357,7 +357,7 @@ module Types { ES() or OtherEllipticCurveType() - class EllipticCurveFamilyType extends TEllipticCurveFamilyType { + class EllipticCurveType extends TEllipticCurveType { string toString() { this = NIST() and result = "NIST" or @@ -445,7 +445,7 @@ module Types { */ bindingset[rawName] predicate ellipticCurveNameToKnownKeySizeAndFamilyMapping( - string rawName, int keySize, TEllipticCurveFamilyType curveFamily + string rawName, int keySize, TEllipticCurveType curveFamily ) { exists(string curveName | curveName = rawName.toUpperCase() | isSecCurve(curveName, keySize) and curveFamily = SEC() From 143be8cc35a6acb985757811f6897cd196a41bf4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 10:26:05 -0400 Subject: [PATCH 059/965] Crypto: Remove redundant queries. --- .../Analysis/InsecureNonceGeneration.ql | 22 ------------------- .../Analysis/KnownWeakKDFIterationCount.ql | 20 ----------------- 2 files changed, 42 deletions(-) delete mode 100644 java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql delete mode 100644 java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql b/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql deleted file mode 100644 index 2514f6b384a..00000000000 --- a/java/ql/src/experimental/quantum/Analysis/InsecureNonceGeneration.ql +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @name Insecure nonce at a cipher operation - * @id java/quantum/insecure-nonce - * @description A nonce is generated from a source that is not secure. This can lead to - * vulnerabilities such as replay attacks or key recovery. - * @kind problem - * @problem.severity error - * @precision high - * @tags quantum - * experimental - */ - -import experimental.quantum.Language - -predicate isInsecureNonceSource(Crypto::NonceArtifactNode n, Crypto::NodeBase src) { - src = n.getSourceNode() and - not src.asElement() instanceof SecureRandomnessInstance -} - -from Crypto::KeyOperationNode op, Crypto::NodeBase src -where isInsecureNonceSource(op.getANonce(), src) -select op, "Operation uses insecure nonce source $@", src, src.toString() \ No newline at end of file diff --git a/java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql deleted file mode 100644 index 2dd5b0b006b..00000000000 --- a/java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @name Weak known key derivation function iteration count - * @description Detects key derivation operations with a known weak iteration count. - * @id java/quantum/weak-kdf-iteration-count - * @kind problem - * @problem.severity error - * @precision high - * @tags quantum - * experimental - */ - -import java -import experimental.quantum.Language - -from Crypto::KeyDerivationOperationNode op, Literal l -where - op.getIterationCount().asElement() = l and - l.getValue().toInt() < 100000 -select op, "Key derivation operation configures iteration count below 100k: $@", l, - l.getValue().toString() From bd34b6ce027f5d9ee20e40a3ca98545d30a937d2 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 11:41:21 -0400 Subject: [PATCH 060/965] Crypto: Removing JCA model of random, need to reassess this as this impacts the insecure IV/Nonce query. Updated name of the Insecure nonce query to be InsecureIVorNonce --- java/ql/lib/experimental/quantum/JCA.qll | 15 ------------- .../Analysis/InsecureIVorNonceSource.ql | 19 ++++++++++++++++ .../quantum/Analysis/InsecureNonceSource.ql | 22 ------------------- 3 files changed, 19 insertions(+), 37 deletions(-) create mode 100644 java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql delete mode 100644 java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index a599823ff11..03438d1ac22 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -1095,21 +1095,6 @@ module JCAModel { } } - /** - * An instance of `java.security.SecureRandom.nextBytes(byte[])` call. - * This is already generally modeled for Java in CodeQL, but - * we model it again as part of the crypto API model to have a cohesive model. - */ - class JavaSecuritySecureRandom extends Crypto::RandomNumberGenerationInstance instanceof Call { - JavaSecuritySecureRandom() { - this.getCallee().hasQualifiedName("java.security", "SecureRandom", "nextBytes") - } - - override Crypto::DataFlowNode getOutputNode() { result.asExpr() = this.(Call).getArgument(0) } - - override string getGeneratorName() { result = this.(Call).getCallee().getName() } - } - class KeyGeneratorGenerateCall extends Crypto::KeyGenerationOperationInstance instanceof MethodCall { Crypto::KeyArtifactType type; diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql new file mode 100644 index 00000000000..94f4d09e212 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql @@ -0,0 +1,19 @@ +/** + * @name Insecure nonce (static value or weak random source) + * @id java/quantum/insecure-iv-or-nonce + * @description A nonce is generated from a source that is not secure. This can lead to + * vulnerabilities such as replay attacks or key recovery. + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src +where + nonce.getSourceNode() = src and + not src.asElement() instanceof SecureRandomnessInstance +select nonce, "Nonce or IV uses insecure nonce source $@", src, src.toString() diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql b/java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql deleted file mode 100644 index f00621d4d2b..00000000000 --- a/java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @name Insecure nonce at a cipher operation - * @id java/quantum/insecure-nonce - * @description A nonce is generated from a source that is not secure. This can lead to - * vulnerabilities such as replay attacks or key recovery. - * @kind problem - * @problem.severity error - * @precision high - * @tags quantum - * experimental - */ - -import experimental.quantum.Language - -predicate isInsecureNonceSource(Crypto::NonceArtifactNode n, Crypto::NodeBase src) { - src = n.getSourceNode() and - not src.asElement() instanceof SecureRandomnessInstance -} - -from Crypto::KeyOperationNode op, Crypto::NodeBase src -where isInsecureNonceSource(op.getANonce(), src) -select op, "Operation uses insecure nonce source $@", src, src.toString() From 2f22acdd062fd00ad3cbcf24a9008dbeeb547817 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 8 Oct 2025 16:48:57 +0100 Subject: [PATCH 061/965] Remove hashing example when not covered by query --- python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp | 5 ----- .../src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp | 5 ----- .../src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp | 5 ----- 3 files changed, 15 deletions(-) diff --git a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index 003849b17cc..9757f2d49bf 100644 --- a/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/python/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -23,11 +23,6 @@ decrypt sensitive data.

  • - If a weak hashing algorithm is used to protect data integrity, an - attacker may be able to craft a malicious input that has the same - hash as a benign one. -
  • -
  • If a weak algorithm is used for digital signatures, an attacker may be able to forge signatures and impersonate legitimate users.
  • diff --git a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp index 3c4dae2ae7b..cf84089e3d2 100644 --- a/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/BrokenCryptoAlgorithm.qhelp @@ -22,11 +22,6 @@ decrypt sensitive data.
  • - If a weak hashing algorithm is used to protect data integrity, an - attacker may be able to craft a malicious input that has the same - hash as a benign one. -
  • -
  • If a weak algorithm is used for digital signatures, an attacker may be able to forge signatures and impersonate legitimate users.
  • diff --git a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp index 89aa8f71a58..0c9e8fc289d 100644 --- a/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -22,11 +22,6 @@ decrypt sensitive data.
  • - If a weak hashing algorithm is used to protect data integrity, an - attacker may be able to craft a malicious input that has the same - hash as a benign one. -
  • -
  • If a weak algorithm is used for digital signatures, an attacker may be able to forge signatures and impersonate legitimate users.
  • From 83ff70bcd868cab2aa271343a3bdc5653ec1b6d4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 12:47:58 -0400 Subject: [PATCH 062/965] Crypto: Adding tests for insecure iv or nonce. Updating generic literal sources to include array literals. --- java/ql/lib/experimental/quantum/Language.qll | 19 +- .../Analysis/InsecureIVorNonceSource.ql | 6 +- .../InsecureIVorNonceSource.expected | 7 + .../InsecureIVorNonceSource.java | 210 ++++++++++++++++++ .../InsecureIVorNonceSource.qlref | 4 + 5 files changed, 241 insertions(+), 5 deletions(-) create mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java create mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index e203d2a1587..7d7488244a9 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -93,8 +93,9 @@ private class GenericRemoteDataSource extends Crypto::GenericRemoteDataSource { override string getAdditionalDescription() { result = this.toString() } } -private class ConstantDataSource extends Crypto::GenericConstantSourceInstance instanceof Literal { - ConstantDataSource() { +private class ConstantDataSourceLiteral extends Crypto::GenericConstantSourceInstance instanceof Literal +{ + ConstantDataSourceLiteral() { // TODO: this is an API specific workaround for JCA, as 'EC' is a constant that may be used // where typical algorithms are specified, but EC specifically means set up a // default curve container, that will later be specified explicitly (or if not a default) @@ -112,6 +113,20 @@ private class ConstantDataSource extends Crypto::GenericConstantSourceInstance i override string getAdditionalDescription() { result = this.toString() } } +private class ConstantDataSourceArrayInitializer extends Crypto::GenericConstantSourceInstance instanceof ArrayInit +{ + ConstantDataSourceArrayInitializer() { exists(Literal l | this.getAnInit() = l) } + + override DataFlow::Node getOutputNode() { result.asExpr() = this } + + override predicate flowsTo(Crypto::FlowAwareElement other) { + // TODO: separate config to avoid blowing up data-flow analysis + GenericDataSourceFlow::flow(this.getOutputNode(), other.getInputNode()) + } + + override string getAdditionalDescription() { result = this.toString() } +} + /** * An instance of random number generation, modeled as the expression * tied to an output node (i.e., the result of the source of randomness) diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql index 94f4d09e212..1e0dcadf10d 100644 --- a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql @@ -1,7 +1,7 @@ /** - * @name Insecure nonce (static value or weak random source) + * @name Insecure nonce/iv (static value or weak random source) * @id java/quantum/insecure-iv-or-nonce - * @description A nonce is generated from a source that is not secure. This can lead to + * @description A nonce/iv is generated from a source that is not secure. This can lead to * vulnerabilities such as replay attacks or key recovery. * @kind problem * @problem.severity error @@ -16,4 +16,4 @@ from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src where nonce.getSourceNode() = src and not src.asElement() instanceof SecureRandomnessInstance -select nonce, "Nonce or IV uses insecure nonce source $@", src, src.toString() +select nonce, "Nonce or IV uses insecure or constant source $@", src, src.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected new file mode 100644 index 00000000000..7cf062f5c02 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected @@ -0,0 +1,7 @@ +| InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:14:21:14:81 | Constant | Constant | +| InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:42:21:42:21 | Constant | Constant | +| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:57:13:57:62 | Constant | Constant | +| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:58:13:58:63 | Constant | Constant | +| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:73:13:73:73 | Constant | Constant | +| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:74:13:74:74 | Constant | Constant | +| InsecureIVorNonceSource.java:206:51:206:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:194:26:194:30 | RandomNumberGeneration | RandomNumberGeneration | diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java new file mode 100644 index 00000000000..35f50842dc7 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java @@ -0,0 +1,210 @@ +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.util.Random; + +import java.security.SecureRandom; +import java.util.Arrays; + +public class InsecureIVorNonceSource { + + // BAD: AES-GCM with static IV from a byte array + public byte[] encryptWithStaticIvByteArrayWithInitializer(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; // $Source + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // BAD: AES-GCM with static IV from zero-initialized byte array + public byte[] encryptWithZeroStaticIvByteArray(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = new byte[16]; // $Source + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-initialization] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // BAD: AES-CBC with static IV from 1-initialized byte array + public byte[] encryptWithStaticIvByteArray(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = new byte[16]; // $Source + for (byte i = 0; i < iv.length; i++) { + iv[i] = 1; + } + + IvParameterSpec ivSpec = new IvParameterSpec(iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // BAD: AES-GCM with static IV from a multidimensional byte array + public byte[] encryptWithOneOfStaticIvs01(byte[] key, byte[] plaintext) throws Exception { + byte[][] staticIvs = new byte[][] { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } + }; // $Source + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // BAD: AES-GCM with static IV from a multidimensional byte array + public byte[] encryptWithOneOfStaticIvs02(byte[] key, byte[] plaintext) throws Exception { + byte[][] staticIvs = new byte[][] { + new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, + new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } + }; // $Source + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // BAD: AES-GCM with static IV from a zero-initialized multidimensional byte array + public byte[] encryptWithOneOfStaticZeroIvs(byte[] key, byte[] plaintext) throws Exception { + byte[][] ivs = new byte[][] { + new byte[8], // $Source + new byte[16] // $Source + }; + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, ivs[1]); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-initialization] + cipher.update(plaintext); + return cipher.doFinal(); + } + + // GOOD: AES-GCM with a random IV + public byte[] encryptWithRandomIv(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = new byte[16]; + + SecureRandom random = SecureRandom.getInstanceStrong(); + random.nextBytes(iv); + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + cipher.update(plaintext); + return cipher.doFinal(); + } + + // GOOD: AES-GCM with a random IV + public byte[] encryptWithRandomIvByteByByte(byte[] key, byte[] plaintext) throws Exception { + SecureRandom random = SecureRandom.getInstanceStrong(); + byte[] iv = new byte[16]; + for (int i = 0; i < iv.length; i++) { + iv[i] = (byte) random.nextInt(); + } + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + cipher.update(plaintext); + return cipher.doFinal(); + } + + // GOOD: AES-GCM with a random IV + public byte[] encryptWithRandomIvWithSystemArrayCopy(byte[] key, byte[] plaintext) throws Exception { + byte[] randomBytes = new byte[16]; + SecureRandom.getInstanceStrong().nextBytes(randomBytes); + + byte[] iv = new byte[16]; + System.arraycopy(randomBytes, 0, iv, 0, 16); + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + cipher.update(plaintext); + return cipher.doFinal(); + } + + // GOOD: AES-GCM with a random IV + public byte[] encryptWithRandomIvWithArraysCopy(byte[] key, byte[] plaintext) throws Exception { + byte[] randomBytes = new byte[16]; + SecureRandom.getInstanceStrong().nextBytes(randomBytes); + + byte[] iv = new byte[16]; + iv = Arrays.copyOf(randomBytes, 16); + + GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + cipher.update(plaintext); + return cipher.doFinal(); + } + + public byte[] generate(int size) throws Exception { + if (size == 0) { + return new byte[0]; + } + byte[] randomBytes = new byte[size]; + SecureRandom.getInstanceStrong().nextBytes(randomBytes); + return randomBytes; + } + + // GOOD: AES-CBC with a random IV + public byte[] encryptWithGeneratedIvByteArray(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = generate(16); + + IvParameterSpec ivSpec = new IvParameterSpec(iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + cipher.update(plaintext); + return cipher.doFinal(); + } + + public byte[] generateInsecureRandomBytes(int numBytes) { + Random random = new Random(); + byte[] bytes = new byte[numBytes]; + random.nextBytes(bytes); // $Source + return bytes; + } + + // BAD: AES-CBC with an insecure random IV + public byte[] encryptWithGeneratedIvByteArrayInsecure(byte[] key, byte[] plaintext) throws Exception { + byte[] iv = generateInsecureRandomBytes(16); + + IvParameterSpec ivSpec = new IvParameterSpec(iv); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce]] + cipher.update(plaintext); + return cipher.doFinal(); + } +} diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref new file mode 100644 index 00000000000..4ce79ecde8f --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Analysis/InsecureIVorNonceSource.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file From 8e10e1937d5bc60ceee5739753ae1a6497b9bc13 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 12:49:54 -0400 Subject: [PATCH 063/965] Crypto: Adding query for unknown IV initialization. --- .../Analysis/UnknownIVorNonceInitialization.ql | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql b/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql new file mode 100644 index 00000000000..b2ef2ca4e56 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql @@ -0,0 +1,17 @@ +/** + * @name Unknown nonce/iv initialization + * @id java/quantum/unknown-iv-or-nonce-initialization + * @description A nonce/iv is generated from a source that is not secure. Failure to initialize + * an IV or nonce properly can lead to vulnerabilities such as replay attacks or key recovery. + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::NonceArtifactNode nonce +where exists(nonce.getSourceNode()) +select nonce, "Unknown (unobserved) IV/Nonce initialization." From 75b5a9fda8d7a535238c0b84709204ac5791f23e Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 12:55:11 -0400 Subject: [PATCH 064/965] Crypto: Update general regression test results to account for removal of JCA random source. --- .../library-tests/quantum/node_edges.expected | 61 ++----------------- .../quantum/node_properties.expected | 46 ++------------ .../library-tests/quantum/nodes.expected | 46 ++------------ 3 files changed, 13 insertions(+), 140 deletions(-) diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 94e4d2bf056..064f1203d6c 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -29,7 +29,6 @@ | jca/AesWrapAndPBEWith.java:109:27:109:54 | KeyDerivation | Output | jca/AesWrapAndPBEWith.java:109:27:109:54 | Key | | jca/AesWrapAndPBEWith.java:109:27:109:54 | KeyDerivation | Salt | jca/AesWrapAndPBEWith.java:107:66:107:69 | Salt | | jca/AesWrapAndPBEWith.java:123:42:123:63 | Message | Source | jca/AesWrapAndPBEWith.java:200:55:200:69 | Parameter | -| jca/AesWrapAndPBEWith.java:123:66:123:69 | Salt | Source | jca/AesWrapAndPBEWith.java:122:9:122:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:123:66:123:69 | Salt | Source | jca/AesWrapAndPBEWith.java:122:38:122:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:124:65:124:86 | HMACAlgorithm | H | jca/AesWrapAndPBEWith.java:124:65:124:86 | HashAlgorithm | | jca/AesWrapAndPBEWith.java:124:65:124:86 | KeyDerivationAlgorithm | PRF | jca/AesWrapAndPBEWith.java:124:65:124:86 | HMACAlgorithm | @@ -38,7 +37,6 @@ | jca/AesWrapAndPBEWith.java:125:27:125:54 | KeyDerivation | Output | jca/AesWrapAndPBEWith.java:125:27:125:54 | Key | | jca/AesWrapAndPBEWith.java:125:27:125:54 | KeyDerivation | Salt | jca/AesWrapAndPBEWith.java:123:66:123:69 | Salt | | jca/AesWrapAndPBEWith.java:141:42:141:63 | Message | Source | jca/AesWrapAndPBEWith.java:200:55:200:69 | Parameter | -| jca/AesWrapAndPBEWith.java:141:66:141:69 | Salt | Source | jca/AesWrapAndPBEWith.java:140:9:140:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:141:66:141:69 | Salt | Source | jca/AesWrapAndPBEWith.java:140:38:140:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:143:28:143:55 | KeyDerivation | Algorithm | jca/AesWrapAndPBEWith.java:142:65:142:98 | KeyDerivationAlgorithm | | jca/AesWrapAndPBEWith.java:143:28:143:55 | KeyDerivation | Input | jca/AesWrapAndPBEWith.java:141:42:141:63 | Message | @@ -47,7 +45,6 @@ | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | Mode | jca/AesWrapAndPBEWith.java:146:44:146:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | Padding | jca/AesWrapAndPBEWith.java:146:44:146:65 | PaddingAlgorithm | | jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | Source | jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | -| jca/AesWrapAndPBEWith.java:150:50:150:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:148:9:148:40 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:150:50:150:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:148:38:148:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | Algorithm | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | Input | jca/AesWrapAndPBEWith.java:151:44:151:63 | Message | @@ -56,7 +53,6 @@ | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | Output | jca/AesWrapAndPBEWith.java:151:29:151:64 | KeyOperationOutput | | jca/AesWrapAndPBEWith.java:151:44:151:63 | Message | Source | jca/AesWrapAndPBEWith.java:200:72:200:87 | Parameter | | jca/AesWrapAndPBEWith.java:168:42:168:63 | Message | Source | jca/AesWrapAndPBEWith.java:200:55:200:69 | Parameter | -| jca/AesWrapAndPBEWith.java:168:66:168:69 | Salt | Source | jca/AesWrapAndPBEWith.java:167:9:167:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:168:66:168:69 | Salt | Source | jca/AesWrapAndPBEWith.java:167:38:167:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:170:28:170:55 | KeyDerivation | Algorithm | jca/AesWrapAndPBEWith.java:169:65:169:96 | KeyDerivationAlgorithm | | jca/AesWrapAndPBEWith.java:170:28:170:55 | KeyDerivation | Input | jca/AesWrapAndPBEWith.java:168:42:168:63 | Message | @@ -65,7 +61,6 @@ | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | Mode | jca/AesWrapAndPBEWith.java:173:44:173:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | Padding | jca/AesWrapAndPBEWith.java:173:44:173:65 | PaddingAlgorithm | | jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | Source | jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | -| jca/AesWrapAndPBEWith.java:177:50:177:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:175:9:175:40 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:177:50:177:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:175:38:175:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | Algorithm | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | Input | jca/AesWrapAndPBEWith.java:178:44:178:63 | Message | @@ -112,7 +107,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | ModeOfOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | PaddingAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:173:45:173:50 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:173:45:173:50 | Key | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:173:53:173:81 | Nonce | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:9:171:40 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:173:53:173:81 | Nonce | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:174:29:174:56 | EncryptOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:174:29:174:56 | EncryptOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:174:47:174:55 | Message | @@ -142,7 +136,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | ModeOfOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | PaddingAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:222:42:222:47 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:222:42:222:47 | Key | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:222:50:222:78 | Nonce | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:9:220:40 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:222:50:222:78 | Nonce | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:223:29:223:53 | EncryptOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:223:29:223:53 | EncryptOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:223:44:223:52 | Message | @@ -187,7 +180,6 @@ | jca/ChainedEncryptionTest.java:19:44:19:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:19:44:19:62 | ModeOfOperation | | jca/ChainedEncryptionTest.java:19:44:19:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:19:44:19:62 | PaddingAlgorithm | | jca/ChainedEncryptionTest.java:23:42:23:44 | Key | Source | jca/ChainedEncryptionTest.java:119:28:119:47 | Key | -| jca/ChainedEncryptionTest.java:23:47:23:50 | Nonce | Source | jca/ChainedEncryptionTest.java:21:9:21:40 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:23:47:23:50 | Nonce | Source | jca/ChainedEncryptionTest.java:21:38:21:39 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:24:29:24:53 | EncryptOperation | Algorithm | jca/ChainedEncryptionTest.java:19:44:19:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:24:29:24:53 | EncryptOperation | Input | jca/ChainedEncryptionTest.java:24:44:24:52 | Message | @@ -208,7 +200,6 @@ | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:43:42:43:44 | Key | Source | jca/ChainedEncryptionTest.java:124:31:124:53 | Key | -| jca/ChainedEncryptionTest.java:43:47:43:72 | Nonce | Source | jca/ChainedEncryptionTest.java:42:9:42:43 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:43:47:43:72 | Nonce | Source | jca/ChainedEncryptionTest.java:42:38:42:42 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | Algorithm | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | Input | jca/ChainedEncryptionTest.java:44:44:44:52 | Message | @@ -233,7 +224,6 @@ | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:90:47:90:65 | ModeOfOperation | | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:90:47:90:65 | PaddingAlgorithm | | jca/ChainedEncryptionTest.java:92:45:92:52 | Key | Source | jca/ChainedEncryptionTest.java:81:30:81:49 | Key | -| jca/ChainedEncryptionTest.java:92:55:92:61 | Nonce | Source | jca/ChainedEncryptionTest.java:89:9:89:43 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:92:55:92:61 | Nonce | Source | jca/ChainedEncryptionTest.java:89:38:89:42 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:93:34:93:62 | EncryptOperation | Algorithm | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:93:34:93:62 | EncryptOperation | Input | jca/ChainedEncryptionTest.java:93:52:93:61 | Message | @@ -244,7 +234,6 @@ | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:99:48:99:55 | Key | Source | jca/ChainedEncryptionTest.java:85:30:85:52 | Key | -| jca/ChainedEncryptionTest.java:99:58:99:89 | Nonce | Source | jca/ChainedEncryptionTest.java:97:9:97:49 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:99:58:99:89 | Nonce | Source | jca/ChainedEncryptionTest.java:97:38:97:48 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:100:34:100:70 | EncryptOperation | Algorithm | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:100:34:100:70 | EncryptOperation | Input | jca/ChainedEncryptionTest.java:100:55:100:69 | Message | @@ -255,7 +244,6 @@ | jca/ChainedEncryptionTest.java:103:47:103:65 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:103:47:103:65 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:103:47:103:65 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:103:47:103:65 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:104:45:104:52 | Key | Source | jca/ChainedEncryptionTest.java:104:45:104:52 | Key | -| jca/ChainedEncryptionTest.java:104:55:104:86 | Nonce | Source | jca/ChainedEncryptionTest.java:97:9:97:49 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:104:55:104:86 | Nonce | Source | jca/ChainedEncryptionTest.java:97:38:97:48 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:105:43:105:76 | DecryptOperation | Algorithm | jca/ChainedEncryptionTest.java:103:47:103:65 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:105:43:105:76 | DecryptOperation | Input | jca/ChainedEncryptionTest.java:105:61:105:75 | Message | @@ -266,7 +254,6 @@ | jca/ChainedEncryptionTest.java:108:44:108:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:108:44:108:62 | ModeOfOperation | | jca/ChainedEncryptionTest.java:108:44:108:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:108:44:108:62 | PaddingAlgorithm | | jca/ChainedEncryptionTest.java:109:42:109:49 | Key | Source | jca/ChainedEncryptionTest.java:109:42:109:49 | Key | -| jca/ChainedEncryptionTest.java:109:52:109:83 | Nonce | Source | jca/ChainedEncryptionTest.java:89:9:89:43 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:109:52:109:83 | Nonce | Source | jca/ChainedEncryptionTest.java:89:38:89:42 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:110:37:110:76 | DecryptOperation | Algorithm | jca/ChainedEncryptionTest.java:108:44:108:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:110:37:110:76 | DecryptOperation | Input | jca/ChainedEncryptionTest.java:110:52:110:75 | Message | @@ -293,7 +280,6 @@ | jca/Digest.java:75:23:75:62 | HashOperation | Digest | jca/Digest.java:75:23:75:62 | Digest | | jca/Digest.java:75:23:75:62 | HashOperation | Message | jca/Digest.java:75:43:75:61 | Message | | jca/Digest.java:75:43:75:61 | Message | Source | jca/Digest.java:73:49:73:63 | Parameter | -| jca/Digest.java:86:23:86:26 | Message | Source | jca/Digest.java:253:9:253:42 | RandomNumberGeneration | | jca/Digest.java:86:23:86:26 | Message | Source | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | | jca/Digest.java:87:23:87:56 | Digest | Source | jca/Digest.java:87:23:87:56 | Digest | | jca/Digest.java:87:23:87:56 | HashOperation | Algorithm | jca/Digest.java:85:58:85:66 | HashAlgorithm | @@ -302,7 +288,6 @@ | jca/Digest.java:87:23:87:56 | HashOperation | Message | jca/Digest.java:87:37:87:55 | Message | | jca/Digest.java:87:37:87:55 | Message | Source | jca/Digest.java:83:37:83:51 | Parameter | | jca/Digest.java:97:42:97:63 | Message | Source | jca/Digest.java:95:37:95:51 | Parameter | -| jca/Digest.java:97:66:97:69 | Salt | Source | jca/Digest.java:253:9:253:42 | RandomNumberGeneration | | jca/Digest.java:97:66:97:69 | Salt | Source | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | | jca/Digest.java:98:65:98:86 | HMACAlgorithm | H | jca/Digest.java:98:65:98:86 | HashAlgorithm | | jca/Digest.java:98:65:98:86 | KeyDerivationAlgorithm | PRF | jca/Digest.java:98:65:98:86 | HMACAlgorithm | @@ -336,7 +321,6 @@ | jca/Digest.java:142:32:142:74 | EncryptOperation | Output | jca/Digest.java:142:32:142:74 | KeyOperationOutput | | jca/Digest.java:142:47:142:73 | Message | Source | jca/Digest.java:142:47:142:62 | Constant | | jca/Digest.java:176:42:176:71 | Message | Source | jca/Digest.java:171:50:171:62 | Parameter | -| jca/Digest.java:176:74:176:77 | Salt | Source | jca/Digest.java:253:9:253:42 | RandomNumberGeneration | | jca/Digest.java:176:74:176:77 | Salt | Source | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | | jca/Digest.java:177:65:177:86 | HMACAlgorithm | H | jca/Digest.java:177:65:177:86 | HashAlgorithm | | jca/Digest.java:177:65:177:86 | KeyDerivationAlgorithm | PRF | jca/Digest.java:177:65:177:86 | HMACAlgorithm | @@ -481,7 +465,6 @@ | jca/EllipticCurve2.java:219:44:219:62 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:219:44:219:62 | ModeOfOperation | | jca/EllipticCurve2.java:219:44:219:62 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:219:44:219:62 | PaddingAlgorithm | | jca/EllipticCurve2.java:223:42:223:47 | Key | Source | jca/EllipticCurve2.java:223:42:223:47 | Key | -| jca/EllipticCurve2.java:223:50:223:53 | Nonce | Source | jca/EllipticCurve2.java:221:9:221:40 | RandomNumberGeneration | | jca/EllipticCurve2.java:223:50:223:53 | Nonce | Source | jca/EllipticCurve2.java:221:38:221:39 | RandomNumberGeneration | | jca/EllipticCurve2.java:224:29:224:53 | EncryptOperation | Algorithm | jca/EllipticCurve2.java:219:44:219:62 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:224:29:224:53 | EncryptOperation | Input | jca/EllipticCurve2.java:224:44:224:52 | Message | @@ -494,7 +477,6 @@ | jca/Encryption1.java:63:44:63:62 | KeyOperationAlgorithm | Mode | jca/Encryption1.java:63:44:63:62 | ModeOfOperation | | jca/Encryption1.java:63:44:63:62 | KeyOperationAlgorithm | Padding | jca/Encryption1.java:63:44:63:62 | PaddingAlgorithm | | jca/Encryption1.java:67:42:67:44 | Key | Source | jca/Encryption1.java:62:25:62:44 | Key | -| jca/Encryption1.java:67:47:67:53 | Nonce | Source | jca/Encryption1.java:65:9:65:40 | RandomNumberGeneration | | jca/Encryption1.java:67:47:67:53 | Nonce | Source | jca/Encryption1.java:65:38:65:39 | RandomNumberGeneration | | jca/Encryption1.java:68:32:68:74 | EncryptOperation | Algorithm | jca/Encryption1.java:63:44:63:62 | KeyOperationAlgorithm | | jca/Encryption1.java:68:32:68:74 | EncryptOperation | Input | jca/Encryption1.java:68:47:68:73 | Message | @@ -564,7 +546,6 @@ | jca/Encryption1.java:171:47:171:65 | KeyOperationAlgorithm | Mode | jca/Encryption1.java:171:47:171:65 | ModeOfOperation | | jca/Encryption1.java:171:47:171:65 | KeyOperationAlgorithm | Padding | jca/Encryption1.java:171:47:171:65 | PaddingAlgorithm | | jca/Encryption1.java:175:45:175:50 | Key | Source | jca/Encryption1.java:163:28:163:47 | Key | -| jca/Encryption1.java:175:53:175:59 | Nonce | Source | jca/Encryption1.java:173:9:173:40 | RandomNumberGeneration | | jca/Encryption1.java:175:53:175:59 | Nonce | Source | jca/Encryption1.java:173:38:173:39 | RandomNumberGeneration | | jca/Encryption1.java:176:32:176:65 | EncryptOperation | Algorithm | jca/Encryption1.java:171:47:171:65 | KeyOperationAlgorithm | | jca/Encryption1.java:176:32:176:65 | EncryptOperation | Input | jca/Encryption1.java:176:50:176:64 | Message | @@ -591,7 +572,6 @@ | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | Mode | jca/Encryption2.java:105:47:105:65 | ModeOfOperation | | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | Padding | jca/Encryption2.java:105:47:105:65 | PaddingAlgorithm | | jca/Encryption2.java:109:45:109:50 | Key | Source | jca/Encryption2.java:109:45:109:50 | Key | -| jca/Encryption2.java:109:53:109:59 | Nonce | Source | jca/Encryption2.java:107:9:107:40 | RandomNumberGeneration | | jca/Encryption2.java:109:53:109:59 | Nonce | Source | jca/Encryption2.java:107:38:107:39 | RandomNumberGeneration | | jca/Encryption2.java:110:32:110:65 | EncryptOperation | Algorithm | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | | jca/Encryption2.java:110:32:110:65 | EncryptOperation | Input | jca/Encryption2.java:110:50:110:64 | Message | @@ -602,7 +582,6 @@ | jca/Encryption2.java:145:47:145:65 | KeyOperationAlgorithm | Mode | jca/Encryption2.java:145:47:145:65 | ModeOfOperation | | jca/Encryption2.java:145:47:145:65 | KeyOperationAlgorithm | Padding | jca/Encryption2.java:145:47:145:65 | PaddingAlgorithm | | jca/Encryption2.java:149:45:149:50 | Key | Source | jca/Encryption2.java:149:45:149:50 | Key | -| jca/Encryption2.java:149:53:149:59 | Nonce | Source | jca/Encryption2.java:147:9:147:40 | RandomNumberGeneration | | jca/Encryption2.java:149:53:149:59 | Nonce | Source | jca/Encryption2.java:147:38:147:39 | RandomNumberGeneration | | jca/Encryption2.java:150:32:150:98 | EncryptOperation | Algorithm | jca/Encryption2.java:145:47:145:65 | KeyOperationAlgorithm | | jca/Encryption2.java:150:32:150:98 | EncryptOperation | Input | jca/Encryption2.java:150:50:150:97 | Message | @@ -656,6 +635,7 @@ | jca/Hash.java:174:23:174:52 | HashOperation | Message | jca/Hash.java:174:37:174:51 | Message | | jca/Hash.java:174:37:174:51 | Message | Source | jca/Hash.java:172:43:172:53 | Parameter | | jca/Hash.java:195:27:195:57 | Digest | Source | jca/Hash.java:195:27:195:57 | Digest | +| jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:31:192:48 | Constant | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:32:191:38 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:41:191:49 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:52:191:60 | HashAlgorithm | @@ -682,6 +662,7 @@ | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | | jca/Hash.java:216:22:216:30 | Key | Source | jca/Hash.java:211:57:211:66 | Parameter | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:31:212:116 | Constant | | jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | | jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | | jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | @@ -696,7 +677,6 @@ | jca/Hash.java:217:27:217:55 | MACOperation | Output | jca/Hash.java:217:27:217:55 | KeyOperationOutput | | jca/Hash.java:217:39:217:54 | Message | Source | jca/Hash.java:211:43:211:54 | Parameter | | jca/Hash.java:235:42:235:63 | Message | Source | jca/Hash.java:232:40:232:54 | Parameter | -| jca/Hash.java:235:66:235:69 | Salt | Source | jca/Hash.java:310:9:310:42 | RandomNumberGeneration | | jca/Hash.java:235:66:235:69 | Salt | Source | jca/Hash.java:310:38:310:41 | RandomNumberGeneration | | jca/Hash.java:236:65:236:86 | HMACAlgorithm | H | jca/Hash.java:236:65:236:86 | HashAlgorithm | | jca/Hash.java:236:65:236:86 | KeyDerivationAlgorithm | PRF | jca/Hash.java:236:65:236:86 | HMACAlgorithm | @@ -712,6 +692,7 @@ | jca/Hash.java:252:37:252:69 | Message | Source | jca/Hash.java:252:37:252:58 | Constant | | jca/Hash.java:270:27:270:30 | Message | Source | jca/Hash.java:269:27:269:38 | Constant | | jca/Hash.java:271:40:271:54 | Digest | Source | jca/Hash.java:271:40:271:54 | Digest | +| jca/Hash.java:271:40:271:54 | HashOperation | Algorithm | jca/Hash.java:266:31:266:76 | Constant | | jca/Hash.java:271:40:271:54 | HashOperation | Algorithm | jca/Hash.java:266:32:266:40 | HashAlgorithm | | jca/Hash.java:271:40:271:54 | HashOperation | Algorithm | jca/Hash.java:266:43:266:51 | HashAlgorithm | | jca/Hash.java:271:40:271:54 | HashOperation | Algorithm | jca/Hash.java:266:54:266:63 | HashAlgorithm | @@ -721,7 +702,6 @@ | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | Mode | jca/IVArtifact.java:30:44:30:65 | ModeOfOperation | | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | Padding | jca/IVArtifact.java:30:44:30:65 | PaddingAlgorithm | | jca/IVArtifact.java:31:42:31:44 | Key | Source | jca/IVArtifact.java:76:16:76:35 | Key | -| jca/IVArtifact.java:31:47:31:52 | Nonce | Source | jca/IVArtifact.java:81:9:81:40 | RandomNumberGeneration | | jca/IVArtifact.java:31:47:31:52 | Nonce | Source | jca/IVArtifact.java:81:38:81:39 | RandomNumberGeneration | | jca/IVArtifact.java:32:29:32:73 | EncryptOperation | Algorithm | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | | jca/IVArtifact.java:32:29:32:73 | EncryptOperation | Input | jca/IVArtifact.java:32:44:32:72 | Message | @@ -730,7 +710,6 @@ | jca/IVArtifact.java:32:29:32:73 | EncryptOperation | Output | jca/IVArtifact.java:32:29:32:73 | KeyOperationOutput | | jca/IVArtifact.java:32:44:32:72 | Message | Source | jca/IVArtifact.java:32:44:32:61 | Constant | | jca/IVArtifact.java:38:42:38:44 | Key | Source | jca/IVArtifact.java:76:16:76:35 | Key | -| jca/IVArtifact.java:38:47:38:52 | Nonce | Source | jca/IVArtifact.java:81:9:81:40 | RandomNumberGeneration | | jca/IVArtifact.java:38:47:38:52 | Nonce | Source | jca/IVArtifact.java:81:38:81:39 | RandomNumberGeneration | | jca/IVArtifact.java:38:47:38:52 | Nonce | Source | jca/IVArtifact.java:87:32:87:33 | RandomNumberGeneration | | jca/IVArtifact.java:39:29:39:53 | EncryptOperation | Algorithm | jca/IVArtifact.java:70:16:70:81 | LocalData | @@ -758,7 +737,6 @@ | jca/IVArtifact.java:132:44:132:62 | KeyOperationAlgorithm | Padding | jca/IVArtifact.java:132:44:132:62 | PaddingAlgorithm | | jca/IVArtifact.java:134:42:134:44 | Key | Source | jca/IVArtifact.java:255:29:255:44 | Key | | jca/IVArtifact.java:134:47:134:50 | Nonce | Source | jca/IVArtifact.java:116:31:116:34 | Constant | -| jca/IVArtifact.java:134:47:134:50 | Nonce | Source | jca/IVArtifact.java:130:13:130:50 | RandomNumberGeneration | | jca/IVArtifact.java:134:47:134:50 | Nonce | Source | jca/IVArtifact.java:130:42:130:49 | RandomNumberGeneration | | jca/IVArtifact.java:135:16:135:40 | EncryptOperation | Algorithm | jca/IVArtifact.java:132:44:132:62 | KeyOperationAlgorithm | | jca/IVArtifact.java:135:16:135:40 | EncryptOperation | Input | jca/IVArtifact.java:135:31:135:39 | Message | @@ -784,7 +762,6 @@ | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | Mode | jca/IVArtifact.java:180:48:180:66 | ModeOfOperation | | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | Padding | jca/IVArtifact.java:180:48:180:66 | PaddingAlgorithm | | jca/IVArtifact.java:182:46:182:48 | Key | Source | jca/IVArtifact.java:255:29:255:44 | Key | -| jca/IVArtifact.java:182:51:182:54 | Nonce | Source | jca/IVArtifact.java:177:9:177:40 | RandomNumberGeneration | | jca/IVArtifact.java:182:51:182:54 | Nonce | Source | jca/IVArtifact.java:177:38:177:39 | RandomNumberGeneration | | jca/IVArtifact.java:183:30:183:58 | EncryptOperation | Algorithm | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | | jca/IVArtifact.java:183:30:183:58 | EncryptOperation | Input | jca/IVArtifact.java:183:45:183:57 | Message | @@ -834,7 +811,6 @@ | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | KeyOperationAlgorithm | Mode | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | ModeOfOperation | | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | KeyOperationAlgorithm | Padding | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | PaddingAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | Key | -| jca/KeyAgreementHybridCryptosystem.java:112:50:112:53 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:110:9:110:40 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:112:50:112:53 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:110:38:110:39 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:113:29:113:53 | EncryptOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:113:29:113:53 | EncryptOperation | Input | jca/KeyAgreementHybridCryptosystem.java:113:44:113:52 | Message | @@ -860,7 +836,6 @@ | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | Mode | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | Padding | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | -| jca/KeyAgreementHybridCryptosystem.java:156:53:156:78 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:155:9:155:43 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:156:53:156:78 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | EncryptOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | EncryptOperation | Input | jca/KeyAgreementHybridCryptosystem.java:157:44:157:52 | Message | @@ -879,7 +854,6 @@ | jca/KeyAgreementHybridCryptosystem.java:176:29:176:53 | EncryptOperation | Output | jca/KeyAgreementHybridCryptosystem.java:176:29:176:53 | KeyOperationOutput | | jca/KeyAgreementHybridCryptosystem.java:176:44:176:52 | Message | Source | jca/KeyAgreementHybridCryptosystem.java:188:58:188:73 | Parameter | | jca/KeyAgreementHybridCryptosystem.java:215:42:215:66 | Message | Source | jca/KeyAgreementHybridCryptosystem.java:212:58:212:70 | Parameter | -| jca/KeyAgreementHybridCryptosystem.java:215:69:215:72 | Salt | Source | jca/KeyAgreementHybridCryptosystem.java:269:9:269:42 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:215:69:215:72 | Salt | Source | jca/KeyAgreementHybridCryptosystem.java:269:38:269:41 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:216:65:216:86 | HMACAlgorithm | H | jca/KeyAgreementHybridCryptosystem.java:216:65:216:86 | HashAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:216:65:216:86 | KeyDerivationAlgorithm | PRF | jca/KeyAgreementHybridCryptosystem.java:216:65:216:86 | HMACAlgorithm | @@ -890,7 +864,6 @@ | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | KeyOperationAlgorithm | Mode | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | ModeOfOperation | | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | KeyOperationAlgorithm | Padding | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | PaddingAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | Key | -| jca/KeyAgreementHybridCryptosystem.java:227:57:227:63 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:225:9:225:40 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:227:57:227:63 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | Input | jca/KeyAgreementHybridCryptosystem.java:228:44:228:52 | Message | @@ -927,13 +900,12 @@ | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Algorithm | jca/KeyArtifact.java:62:28:62:73 | LocalData | | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Algorithm | jca/KeyArtifact.java:62:68:62:72 | KeyOperationAlgorithm | | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Output | jca/KeyArtifact.java:66:32:66:51 | Key | +| jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | -| jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:45:78:53 | Constant | +| jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | -| jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | Constant | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Output | jca/KeyArtifact.java:73:16:73:43 | Key | | jca/KeyDerivation1.java:80:42:80:63 | Message | Source | jca/KeyDerivation1.java:78:39:78:53 | Parameter | -| jca/KeyDerivation1.java:80:66:80:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:80:66:80:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:81:65:81:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:81:65:81:86 | HashAlgorithm | | jca/KeyDerivation1.java:81:65:81:86 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:81:65:81:86 | HMACAlgorithm | @@ -942,7 +914,6 @@ | jca/KeyDerivation1.java:82:22:82:49 | KeyDerivation | Output | jca/KeyDerivation1.java:82:22:82:49 | Key | | jca/KeyDerivation1.java:82:22:82:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:80:66:80:69 | Salt | | jca/KeyDerivation1.java:94:42:94:63 | Message | Source | jca/KeyDerivation1.java:92:36:92:50 | Parameter | -| jca/KeyDerivation1.java:94:66:94:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:94:66:94:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:95:65:95:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:95:65:95:86 | HashAlgorithm | | jca/KeyDerivation1.java:95:65:95:86 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:95:65:95:86 | HMACAlgorithm | @@ -951,7 +922,6 @@ | jca/KeyDerivation1.java:96:22:96:49 | KeyDerivation | Output | jca/KeyDerivation1.java:96:22:96:49 | Key | | jca/KeyDerivation1.java:96:22:96:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:94:66:94:69 | Salt | | jca/KeyDerivation1.java:108:42:108:63 | Message | Source | jca/KeyDerivation1.java:106:37:106:51 | Parameter | -| jca/KeyDerivation1.java:108:66:108:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:108:66:108:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:109:65:109:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:109:65:109:86 | HashAlgorithm | | jca/KeyDerivation1.java:109:65:109:86 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:109:65:109:86 | HMACAlgorithm | @@ -960,7 +930,6 @@ | jca/KeyDerivation1.java:110:22:110:49 | KeyDerivation | Output | jca/KeyDerivation1.java:110:22:110:49 | Key | | jca/KeyDerivation1.java:110:22:110:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:108:66:108:69 | Salt | | jca/KeyDerivation1.java:122:42:122:63 | Message | Source | jca/KeyDerivation1.java:120:32:120:46 | Parameter | -| jca/KeyDerivation1.java:122:66:122:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:122:66:122:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:123:65:123:84 | HMACAlgorithm | H | jca/KeyDerivation1.java:123:65:123:84 | HashAlgorithm | | jca/KeyDerivation1.java:123:65:123:84 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:123:65:123:84 | HMACAlgorithm | @@ -969,7 +938,6 @@ | jca/KeyDerivation1.java:124:22:124:49 | KeyDerivation | Output | jca/KeyDerivation1.java:124:22:124:49 | Key | | jca/KeyDerivation1.java:124:22:124:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:122:66:122:69 | Salt | | jca/KeyDerivation1.java:136:42:136:63 | Message | Source | jca/KeyDerivation1.java:134:34:134:48 | Parameter | -| jca/KeyDerivation1.java:136:66:136:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:136:66:136:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:137:65:137:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:137:65:137:86 | HashAlgorithm | | jca/KeyDerivation1.java:137:65:137:86 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:137:65:137:86 | HMACAlgorithm | @@ -978,14 +946,12 @@ | jca/KeyDerivation1.java:138:22:138:49 | KeyDerivation | Output | jca/KeyDerivation1.java:138:22:138:49 | Key | | jca/KeyDerivation1.java:138:22:138:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:136:66:136:69 | Salt | | jca/KeyDerivation1.java:157:42:157:63 | Message | Source | jca/KeyDerivation1.java:154:28:154:42 | Parameter | -| jca/KeyDerivation1.java:157:66:157:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:157:66:157:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:159:22:159:49 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:158:65:158:72 | Constant | | jca/KeyDerivation1.java:159:22:159:49 | KeyDerivation | Input | jca/KeyDerivation1.java:157:42:157:63 | Message | | jca/KeyDerivation1.java:159:22:159:49 | KeyDerivation | Output | jca/KeyDerivation1.java:159:22:159:49 | Key | | jca/KeyDerivation1.java:159:22:159:49 | KeyDerivation | Salt | jca/KeyDerivation1.java:157:66:157:69 | Salt | | jca/KeyDerivation1.java:172:42:172:63 | Message | Source | jca/KeyDerivation1.java:169:30:169:44 | Parameter | -| jca/KeyDerivation1.java:172:66:172:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:172:66:172:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:174:22:174:49 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:173:65:173:72 | Constant | | jca/KeyDerivation1.java:174:22:174:49 | KeyDerivation | Input | jca/KeyDerivation1.java:172:42:172:63 | Message | @@ -1008,7 +974,6 @@ | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | H | jca/KeyDerivation1.java:309:54:309:75 | HashAlgorithm | | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | | jca/KeyDerivation1.java:314:42:314:63 | Message | Source | jca/KeyDerivation1.java:302:37:302:51 | Parameter | -| jca/KeyDerivation1.java:314:66:314:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:314:66:314:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:309:25:309:76 | LocalData | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | @@ -1016,7 +981,6 @@ | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Output | jca/KeyDerivation1.java:316:26:316:53 | Key | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Salt | jca/KeyDerivation1.java:314:66:314:69 | Salt | | jca/KeyDerivation1.java:333:42:333:63 | Message | Source | jca/KeyDerivation1.java:283:43:283:57 | Parameter | -| jca/KeyDerivation1.java:333:66:333:69 | Salt | Source | jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:333:66:333:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:334:65:334:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:334:65:334:86 | HashAlgorithm | | jca/KeyDerivation1.java:334:65:334:86 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:334:65:334:86 | HMACAlgorithm | @@ -1062,7 +1026,6 @@ | jca/KeyEncapsulation.java:73:47:73:65 | KeyOperationAlgorithm | Mode | jca/KeyEncapsulation.java:73:47:73:65 | ModeOfOperation | | jca/KeyEncapsulation.java:73:47:73:65 | KeyOperationAlgorithm | Padding | jca/KeyEncapsulation.java:73:47:73:65 | PaddingAlgorithm | | jca/KeyEncapsulation.java:77:45:77:50 | Key | Source | jca/KeyEncapsulation.java:62:28:62:47 | Key | -| jca/KeyEncapsulation.java:77:53:77:59 | Nonce | Source | jca/KeyEncapsulation.java:75:9:75:40 | RandomNumberGeneration | | jca/KeyEncapsulation.java:77:53:77:59 | Nonce | Source | jca/KeyEncapsulation.java:75:38:75:39 | RandomNumberGeneration | | jca/KeyEncapsulation.java:78:29:78:80 | EncryptOperation | Algorithm | jca/KeyEncapsulation.java:73:47:73:65 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:78:29:78:80 | EncryptOperation | Input | jca/KeyEncapsulation.java:78:47:78:79 | Message | @@ -1094,7 +1057,6 @@ | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | Mode | jca/KeyEncapsulation.java:133:47:133:65 | ModeOfOperation | | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | Padding | jca/KeyEncapsulation.java:133:47:133:65 | PaddingAlgorithm | | jca/KeyEncapsulation.java:136:45:136:50 | Key | Source | jca/KeyEncapsulation.java:136:45:136:50 | Key | -| jca/KeyEncapsulation.java:136:53:136:81 | Nonce | Source | jca/KeyEncapsulation.java:135:9:135:40 | RandomNumberGeneration | | jca/KeyEncapsulation.java:136:53:136:81 | Nonce | Source | jca/KeyEncapsulation.java:135:38:135:39 | RandomNumberGeneration | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | Algorithm | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | Input | jca/KeyEncapsulation.java:137:47:137:72 | Message | @@ -1245,7 +1207,6 @@ | jca/MACOperation.java:138:32:138:74 | EncryptOperation | Output | jca/MACOperation.java:138:32:138:74 | KeyOperationOutput | | jca/MACOperation.java:138:47:138:73 | Message | Source | jca/MACOperation.java:138:47:138:62 | Constant | | jca/MACOperation.java:170:42:170:68 | Message | Source | jca/MACOperation.java:166:47:166:62 | Parameter | -| jca/MACOperation.java:170:71:170:74 | Salt | Source | jca/MACOperation.java:246:9:246:42 | RandomNumberGeneration | | jca/MACOperation.java:170:71:170:74 | Salt | Source | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | | jca/MACOperation.java:171:65:171:86 | HMACAlgorithm | H | jca/MACOperation.java:171:65:171:86 | HashAlgorithm | | jca/MACOperation.java:171:65:171:86 | KeyDerivationAlgorithm | PRF | jca/MACOperation.java:171:65:171:86 | HMACAlgorithm | @@ -1319,7 +1280,6 @@ | jca/Nonce.java:61:44:61:62 | KeyOperationAlgorithm | Mode | jca/Nonce.java:61:44:61:62 | ModeOfOperation | | jca/Nonce.java:61:44:61:62 | KeyOperationAlgorithm | Padding | jca/Nonce.java:61:44:61:62 | PaddingAlgorithm | | jca/Nonce.java:62:42:62:44 | Key | Source | jca/Nonce.java:58:37:58:49 | Parameter | -| jca/Nonce.java:62:47:62:53 | Nonce | Source | jca/Nonce.java:98:9:98:43 | RandomNumberGeneration | | jca/Nonce.java:62:47:62:53 | Nonce | Source | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | | jca/Nonce.java:63:29:63:53 | EncryptOperation | Algorithm | jca/Nonce.java:61:44:61:62 | KeyOperationAlgorithm | | jca/Nonce.java:63:29:63:53 | EncryptOperation | Input | jca/Nonce.java:63:44:63:52 | Message | @@ -1369,7 +1329,6 @@ | jca/SignEncryptCombinations.java:92:44:92:62 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:92:44:92:62 | ModeOfOperation | | jca/SignEncryptCombinations.java:92:44:92:62 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:92:44:92:62 | PaddingAlgorithm | | jca/SignEncryptCombinations.java:96:42:96:44 | Key | Source | jca/SignEncryptCombinations.java:84:16:84:31 | Key | -| jca/SignEncryptCombinations.java:96:47:96:50 | Nonce | Source | jca/SignEncryptCombinations.java:94:9:94:28 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:96:47:96:50 | Nonce | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:97:29:97:53 | EncryptOperation | Algorithm | jca/SignEncryptCombinations.java:92:44:92:62 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:97:29:97:53 | EncryptOperation | Input | jca/SignEncryptCombinations.java:97:44:97:52 | Message | @@ -1540,7 +1499,6 @@ | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:51:44:51:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:55:42:55:44 | Key | Source | jca/SymmetricAlgorithm.java:244:64:244:76 | Parameter | -| jca/SymmetricAlgorithm.java:55:47:55:50 | Nonce | Source | jca/SymmetricAlgorithm.java:53:9:53:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:55:47:55:50 | Nonce | Source | jca/SymmetricAlgorithm.java:53:38:53:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:56:29:56:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:56:29:56:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:56:44:56:52 | Message | @@ -1561,7 +1519,6 @@ | jca/SymmetricAlgorithm.java:94:44:94:65 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:94:44:94:65 | ModeOfOperation | | jca/SymmetricAlgorithm.java:94:44:94:65 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:94:44:94:65 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:98:42:98:44 | Key | Source | jca/SymmetricAlgorithm.java:244:64:244:76 | Parameter | -| jca/SymmetricAlgorithm.java:98:47:98:52 | Nonce | Source | jca/SymmetricAlgorithm.java:96:9:96:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:98:47:98:52 | Nonce | Source | jca/SymmetricAlgorithm.java:96:38:96:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:99:29:99:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:94:44:94:65 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:99:29:99:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:99:44:99:52 | Message | @@ -1590,7 +1547,6 @@ | jca/SymmetricAlgorithm.java:146:44:146:65 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:146:44:146:65 | ModeOfOperation | | jca/SymmetricAlgorithm.java:146:44:146:65 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:146:44:146:65 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:150:42:150:44 | Key | Source | jca/SymmetricAlgorithm.java:145:36:145:48 | Parameter | -| jca/SymmetricAlgorithm.java:150:47:150:52 | Nonce | Source | jca/SymmetricAlgorithm.java:148:9:148:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:150:47:150:52 | Nonce | Source | jca/SymmetricAlgorithm.java:148:38:148:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:151:29:151:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:146:44:146:65 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:151:29:151:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:151:44:151:52 | Message | @@ -1601,7 +1557,6 @@ | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:168:44:168:68 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:172:42:172:44 | Key | Source | jca/SymmetricAlgorithm.java:167:42:167:54 | Parameter | -| jca/SymmetricAlgorithm.java:172:47:172:52 | Nonce | Source | jca/SymmetricAlgorithm.java:170:9:170:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:172:47:172:52 | Nonce | Source | jca/SymmetricAlgorithm.java:170:38:170:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:173:29:173:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:173:29:173:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:173:44:173:52 | Message | @@ -1612,7 +1567,6 @@ | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:194:42:194:44 | Key | Source | jca/SymmetricAlgorithm.java:244:64:244:76 | Parameter | -| jca/SymmetricAlgorithm.java:194:47:194:72 | Nonce | Source | jca/SymmetricAlgorithm.java:192:9:192:43 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:194:47:194:72 | Nonce | Source | jca/SymmetricAlgorithm.java:192:38:192:42 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:195:29:195:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:195:29:195:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:195:44:195:52 | Message | @@ -1632,7 +1586,6 @@ | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:218:44:218:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:218:44:218:62 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:222:42:222:51 | Key | Source | jca/SymmetricAlgorithm.java:222:42:222:51 | Key | -| jca/SymmetricAlgorithm.java:222:54:222:57 | Nonce | Source | jca/SymmetricAlgorithm.java:220:9:220:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:222:54:222:57 | Nonce | Source | jca/SymmetricAlgorithm.java:220:38:220:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:223:44:223:52 | Message | @@ -1641,7 +1594,6 @@ | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | Output | jca/SymmetricAlgorithm.java:223:29:223:53 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:223:44:223:52 | Message | Source | jca/SymmetricAlgorithm.java:223:44:223:52 | Message | | jca/SymmetricAlgorithm.java:287:42:287:66 | Message | Source | jca/SymmetricAlgorithm.java:284:58:284:70 | Parameter | -| jca/SymmetricAlgorithm.java:287:69:287:72 | Salt | Source | jca/SymmetricAlgorithm.java:345:9:345:42 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:287:69:287:72 | Salt | Source | jca/SymmetricAlgorithm.java:345:38:345:41 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:288:65:288:86 | HMACAlgorithm | H | jca/SymmetricAlgorithm.java:288:65:288:86 | HashAlgorithm | | jca/SymmetricAlgorithm.java:288:65:288:86 | KeyDerivationAlgorithm | PRF | jca/SymmetricAlgorithm.java:288:65:288:86 | HMACAlgorithm | @@ -1652,7 +1604,6 @@ | jca/SymmetricAlgorithm.java:295:44:295:62 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:295:44:295:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:295:44:295:62 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:295:44:295:62 | PaddingAlgorithm | | jca/SymmetricAlgorithm.java:298:42:298:47 | Key | Source | jca/SymmetricAlgorithm.java:298:42:298:47 | Key | -| jca/SymmetricAlgorithm.java:298:50:298:78 | Nonce | Source | jca/SymmetricAlgorithm.java:297:9:297:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:298:50:298:78 | Nonce | Source | jca/SymmetricAlgorithm.java:297:38:297:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:295:44:295:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:299:44:299:52 | Message | @@ -1689,7 +1640,6 @@ | jca/SymmetricModesTest.java:79:44:79:63 | KeyOperationAlgorithm | Mode | jca/SymmetricModesTest.java:79:44:79:63 | ModeOfOperation | | jca/SymmetricModesTest.java:79:44:79:63 | KeyOperationAlgorithm | Padding | jca/SymmetricModesTest.java:79:44:79:63 | PaddingAlgorithm | | jca/SymmetricModesTest.java:83:42:83:44 | Key | Source | jca/SymmetricModesTest.java:78:43:78:55 | Parameter | -| jca/SymmetricModesTest.java:83:47:83:52 | Nonce | Source | jca/SymmetricModesTest.java:81:9:81:40 | RandomNumberGeneration | | jca/SymmetricModesTest.java:83:47:83:52 | Nonce | Source | jca/SymmetricModesTest.java:81:38:81:39 | RandomNumberGeneration | | jca/SymmetricModesTest.java:84:29:84:53 | EncryptOperation | Algorithm | jca/SymmetricModesTest.java:79:44:79:63 | KeyOperationAlgorithm | | jca/SymmetricModesTest.java:84:29:84:53 | EncryptOperation | Input | jca/SymmetricModesTest.java:84:44:84:52 | Message | @@ -1715,7 +1665,6 @@ | jca/UniversalFlowTest.java:28:29:28:47 | KeyOperationAlgorithm | Mode | jca/UniversalFlowTest.java:28:29:28:47 | ModeOfOperation | | jca/UniversalFlowTest.java:28:29:28:47 | KeyOperationAlgorithm | Padding | jca/UniversalFlowTest.java:28:29:28:47 | PaddingAlgorithm | | jca/UniversalFlowTest.java:33:42:33:44 | Key | Source | jca/UniversalFlowTest.java:27:25:27:44 | Key | -| jca/UniversalFlowTest.java:33:47:33:53 | Nonce | Source | jca/UniversalFlowTest.java:31:9:31:40 | RandomNumberGeneration | | jca/UniversalFlowTest.java:33:47:33:53 | Nonce | Source | jca/UniversalFlowTest.java:31:38:31:39 | RandomNumberGeneration | | jca/UniversalFlowTest.java:34:32:34:74 | EncryptOperation | Algorithm | jca/UniversalFlowTest.java:28:29:28:47 | KeyOperationAlgorithm | | jca/UniversalFlowTest.java:34:32:34:74 | EncryptOperation | Input | jca/UniversalFlowTest.java:34:47:34:73 | Message | diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index ea071871fd9..506be879d63 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -31,7 +31,6 @@ | jca/AesWrapAndPBEWith.java:109:27:109:54 | Key | KeyType | Symmetric | jca/AesWrapAndPBEWith.java:109:27:109:54 | jca/AesWrapAndPBEWith.java:109:27:109:54 | | jca/AesWrapAndPBEWith.java:109:27:109:54 | KeyDerivation | Iterations | Constant:1000 | jca/AesWrapAndPBEWith.java:107:72:107:75 | jca/AesWrapAndPBEWith.java:107:72:107:75 | | jca/AesWrapAndPBEWith.java:109:27:109:54 | KeyDerivation | KeySize | Constant:64 | jca/AesWrapAndPBEWith.java:107:78:107:79 | jca/AesWrapAndPBEWith.java:107:78:107:79 | -| jca/AesWrapAndPBEWith.java:122:9:122:42 | RandomNumberGeneration | Description | nextBytes | jca/AesWrapAndPBEWith.java:122:9:122:42 | jca/AesWrapAndPBEWith.java:122:9:122:42 | | jca/AesWrapAndPBEWith.java:122:38:122:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AesWrapAndPBEWith.java:122:38:122:41 | jca/AesWrapAndPBEWith.java:122:38:122:41 | | jca/AesWrapAndPBEWith.java:123:72:123:76 | Constant | Description | 10000 | jca/AesWrapAndPBEWith.java:123:72:123:76 | jca/AesWrapAndPBEWith.java:123:72:123:76 | | jca/AesWrapAndPBEWith.java:123:79:123:81 | Constant | Description | 256 | jca/AesWrapAndPBEWith.java:123:79:123:81 | jca/AesWrapAndPBEWith.java:123:79:123:81 | @@ -45,7 +44,6 @@ | jca/AesWrapAndPBEWith.java:125:27:125:54 | Key | KeyType | Symmetric | jca/AesWrapAndPBEWith.java:125:27:125:54 | jca/AesWrapAndPBEWith.java:125:27:125:54 | | jca/AesWrapAndPBEWith.java:125:27:125:54 | KeyDerivation | Iterations | Constant:10000 | jca/AesWrapAndPBEWith.java:123:72:123:76 | jca/AesWrapAndPBEWith.java:123:72:123:76 | | jca/AesWrapAndPBEWith.java:125:27:125:54 | KeyDerivation | KeySize | Constant:256 | jca/AesWrapAndPBEWith.java:123:79:123:81 | jca/AesWrapAndPBEWith.java:123:79:123:81 | -| jca/AesWrapAndPBEWith.java:140:9:140:42 | RandomNumberGeneration | Description | nextBytes | jca/AesWrapAndPBEWith.java:140:9:140:42 | jca/AesWrapAndPBEWith.java:140:9:140:42 | | jca/AesWrapAndPBEWith.java:140:38:140:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AesWrapAndPBEWith.java:140:38:140:41 | jca/AesWrapAndPBEWith.java:140:38:140:41 | | jca/AesWrapAndPBEWith.java:141:72:141:76 | Constant | Description | 10000 | jca/AesWrapAndPBEWith.java:141:72:141:76 | jca/AesWrapAndPBEWith.java:141:72:141:76 | | jca/AesWrapAndPBEWith.java:141:79:141:81 | Constant | Description | 128 | jca/AesWrapAndPBEWith.java:141:79:141:81 | jca/AesWrapAndPBEWith.java:141:79:141:81 | @@ -61,11 +59,9 @@ | jca/AesWrapAndPBEWith.java:146:44:146:65 | ModeOfOperation | RawName | CBC | jca/AesWrapAndPBEWith.java:146:44:146:65 | jca/AesWrapAndPBEWith.java:146:44:146:65 | | jca/AesWrapAndPBEWith.java:146:44:146:65 | PaddingAlgorithm | Name | PKCS7 | jca/AesWrapAndPBEWith.java:146:44:146:65 | jca/AesWrapAndPBEWith.java:146:44:146:65 | | jca/AesWrapAndPBEWith.java:146:44:146:65 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AesWrapAndPBEWith.java:146:44:146:65 | jca/AesWrapAndPBEWith.java:146:44:146:65 | -| jca/AesWrapAndPBEWith.java:148:9:148:40 | RandomNumberGeneration | Description | nextBytes | jca/AesWrapAndPBEWith.java:148:9:148:40 | jca/AesWrapAndPBEWith.java:148:9:148:40 | | jca/AesWrapAndPBEWith.java:148:38:148:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AesWrapAndPBEWith.java:148:38:148:39 | jca/AesWrapAndPBEWith.java:148:38:148:39 | | jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | KeyType | Unknown | jca/AesWrapAndPBEWith.java:150:42:150:47 | jca/AesWrapAndPBEWith.java:150:42:150:47 | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AesWrapAndPBEWith.java:151:29:151:64 | jca/AesWrapAndPBEWith.java:151:29:151:64 | -| jca/AesWrapAndPBEWith.java:167:9:167:42 | RandomNumberGeneration | Description | nextBytes | jca/AesWrapAndPBEWith.java:167:9:167:42 | jca/AesWrapAndPBEWith.java:167:9:167:42 | | jca/AesWrapAndPBEWith.java:167:38:167:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AesWrapAndPBEWith.java:167:38:167:41 | jca/AesWrapAndPBEWith.java:167:38:167:41 | | jca/AesWrapAndPBEWith.java:168:72:168:76 | Constant | Description | 10000 | jca/AesWrapAndPBEWith.java:168:72:168:76 | jca/AesWrapAndPBEWith.java:168:72:168:76 | | jca/AesWrapAndPBEWith.java:168:79:168:81 | Constant | Description | 128 | jca/AesWrapAndPBEWith.java:168:79:168:81 | jca/AesWrapAndPBEWith.java:168:79:168:81 | @@ -81,7 +77,6 @@ | jca/AesWrapAndPBEWith.java:173:44:173:65 | ModeOfOperation | RawName | CBC | jca/AesWrapAndPBEWith.java:173:44:173:65 | jca/AesWrapAndPBEWith.java:173:44:173:65 | | jca/AesWrapAndPBEWith.java:173:44:173:65 | PaddingAlgorithm | Name | PKCS7 | jca/AesWrapAndPBEWith.java:173:44:173:65 | jca/AesWrapAndPBEWith.java:173:44:173:65 | | jca/AesWrapAndPBEWith.java:173:44:173:65 | PaddingAlgorithm | RawName | PKCS5Padding | jca/AesWrapAndPBEWith.java:173:44:173:65 | jca/AesWrapAndPBEWith.java:173:44:173:65 | -| jca/AesWrapAndPBEWith.java:175:9:175:40 | RandomNumberGeneration | Description | nextBytes | jca/AesWrapAndPBEWith.java:175:9:175:40 | jca/AesWrapAndPBEWith.java:175:9:175:40 | | jca/AesWrapAndPBEWith.java:175:38:175:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AesWrapAndPBEWith.java:175:38:175:39 | jca/AesWrapAndPBEWith.java:175:38:175:39 | | jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | KeyType | Unknown | jca/AesWrapAndPBEWith.java:177:42:177:47 | jca/AesWrapAndPBEWith.java:177:42:177:47 | | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AesWrapAndPBEWith.java:178:29:178:64 | jca/AesWrapAndPBEWith.java:178:29:178:64 | @@ -122,7 +117,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:166:47:166:85 | PaddingAlgorithm | RawName | OAEPWithSHA-256AndMGF1Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:166:47:166:85 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:166:47:166:85 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:167:42:167:58 | Key | KeyType | Unknown | jca/AsymmetricEncryptionMacHybridCryptosystem.java:167:42:167:58 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:167:42:167:58 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:34:168:55 | WrapOperation | KeyOperationSubtype | Wrap | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:34:168:55 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:34:168:55 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:9:171:40 | RandomNumberGeneration | Description | nextBytes | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:9:171:40 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:9:171:40 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | Name | AES | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | @@ -152,7 +146,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:29:197:56 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:29:197:56 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:29:197:56 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | KeyAgreementAlgorithm | Name | ECDH | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | KeyAgreementAlgorithm | RawName | ECDH | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:9:220:40 | RandomNumberGeneration | Description | nextBytes | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:9:220:40 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:9:220:40 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | Name | AES | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | @@ -196,7 +189,6 @@ | jca/ChainedEncryptionTest.java:19:44:19:62 | ModeOfOperation | RawName | GCM | jca/ChainedEncryptionTest.java:19:44:19:62 | jca/ChainedEncryptionTest.java:19:44:19:62 | | jca/ChainedEncryptionTest.java:19:44:19:62 | PaddingAlgorithm | Name | UnknownPadding | jca/ChainedEncryptionTest.java:19:44:19:62 | jca/ChainedEncryptionTest.java:19:44:19:62 | | jca/ChainedEncryptionTest.java:19:44:19:62 | PaddingAlgorithm | RawName | NoPadding | jca/ChainedEncryptionTest.java:19:44:19:62 | jca/ChainedEncryptionTest.java:19:44:19:62 | -| jca/ChainedEncryptionTest.java:21:9:21:40 | RandomNumberGeneration | Description | nextBytes | jca/ChainedEncryptionTest.java:21:9:21:40 | jca/ChainedEncryptionTest.java:21:9:21:40 | | jca/ChainedEncryptionTest.java:21:38:21:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/ChainedEncryptionTest.java:21:38:21:39 | jca/ChainedEncryptionTest.java:21:38:21:39 | | jca/ChainedEncryptionTest.java:23:42:23:44 | Key | KeyType | Unknown | jca/ChainedEncryptionTest.java:23:42:23:44 | jca/ChainedEncryptionTest.java:23:42:23:44 | | jca/ChainedEncryptionTest.java:24:29:24:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/ChainedEncryptionTest.java:24:29:24:53 | jca/ChainedEncryptionTest.java:24:29:24:53 | @@ -211,7 +203,6 @@ | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | KeyOperationSubtype | Decrypt | jca/ChainedEncryptionTest.java:35:16:35:41 | jca/ChainedEncryptionTest.java:35:16:35:41 | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | Name | Unknown | jca/ChainedEncryptionTest.java:40:44:40:62 | jca/ChainedEncryptionTest.java:40:44:40:62 | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | RawName | ChaCha20-Poly1305 | jca/ChainedEncryptionTest.java:40:44:40:62 | jca/ChainedEncryptionTest.java:40:44:40:62 | -| jca/ChainedEncryptionTest.java:42:9:42:43 | RandomNumberGeneration | Description | nextBytes | jca/ChainedEncryptionTest.java:42:9:42:43 | jca/ChainedEncryptionTest.java:42:9:42:43 | | jca/ChainedEncryptionTest.java:42:38:42:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/ChainedEncryptionTest.java:42:38:42:42 | jca/ChainedEncryptionTest.java:42:38:42:42 | | jca/ChainedEncryptionTest.java:43:42:43:44 | Key | KeyType | Unknown | jca/ChainedEncryptionTest.java:43:42:43:44 | jca/ChainedEncryptionTest.java:43:42:43:44 | | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/ChainedEncryptionTest.java:44:29:44:53 | jca/ChainedEncryptionTest.java:44:29:44:53 | @@ -233,7 +224,6 @@ | jca/ChainedEncryptionTest.java:83:59:83:68 | KeyOperationAlgorithm | Structure | Stream | jca/ChainedEncryptionTest.java:83:59:83:68 | jca/ChainedEncryptionTest.java:83:59:83:68 | | jca/ChainedEncryptionTest.java:84:24:84:26 | Constant | Description | 256 | jca/ChainedEncryptionTest.java:84:24:84:26 | jca/ChainedEncryptionTest.java:84:24:84:26 | | jca/ChainedEncryptionTest.java:85:30:85:52 | Key | KeyType | Symmetric | jca/ChainedEncryptionTest.java:85:30:85:52 | jca/ChainedEncryptionTest.java:85:30:85:52 | -| jca/ChainedEncryptionTest.java:89:9:89:43 | RandomNumberGeneration | Description | nextBytes | jca/ChainedEncryptionTest.java:89:9:89:43 | jca/ChainedEncryptionTest.java:89:9:89:43 | | jca/ChainedEncryptionTest.java:89:38:89:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/ChainedEncryptionTest.java:89:38:89:42 | jca/ChainedEncryptionTest.java:89:38:89:42 | | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | Name | AES | jca/ChainedEncryptionTest.java:90:47:90:65 | jca/ChainedEncryptionTest.java:90:47:90:65 | | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/ChainedEncryptionTest.java:90:47:90:65 | jca/ChainedEncryptionTest.java:90:47:90:65 | @@ -244,7 +234,6 @@ | jca/ChainedEncryptionTest.java:90:47:90:65 | PaddingAlgorithm | RawName | NoPadding | jca/ChainedEncryptionTest.java:90:47:90:65 | jca/ChainedEncryptionTest.java:90:47:90:65 | | jca/ChainedEncryptionTest.java:92:45:92:52 | Key | KeyType | Unknown | jca/ChainedEncryptionTest.java:92:45:92:52 | jca/ChainedEncryptionTest.java:92:45:92:52 | | jca/ChainedEncryptionTest.java:93:34:93:62 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/ChainedEncryptionTest.java:93:34:93:62 | jca/ChainedEncryptionTest.java:93:34:93:62 | -| jca/ChainedEncryptionTest.java:97:9:97:49 | RandomNumberGeneration | Description | nextBytes | jca/ChainedEncryptionTest.java:97:9:97:49 | jca/ChainedEncryptionTest.java:97:9:97:49 | | jca/ChainedEncryptionTest.java:97:38:97:48 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/ChainedEncryptionTest.java:97:38:97:48 | jca/ChainedEncryptionTest.java:97:38:97:48 | | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | Name | Unknown | jca/ChainedEncryptionTest.java:98:50:98:68 | jca/ChainedEncryptionTest.java:98:50:98:68 | | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | RawName | ChaCha20-Poly1305 | jca/ChainedEncryptionTest.java:98:50:98:68 | jca/ChainedEncryptionTest.java:98:50:98:68 | @@ -369,7 +358,6 @@ | jca/Digest.java:239:56:239:60 | KeyOperationAlgorithm | Structure | Block | jca/Digest.java:239:56:239:60 | jca/Digest.java:239:56:239:60 | | jca/Digest.java:240:21:240:23 | Constant | Description | 256 | jca/Digest.java:240:21:240:23 | jca/Digest.java:240:21:240:23 | | jca/Digest.java:241:16:241:35 | Key | KeyType | Symmetric | jca/Digest.java:241:16:241:35 | jca/Digest.java:241:16:241:35 | -| jca/Digest.java:253:9:253:42 | RandomNumberGeneration | Description | nextBytes | jca/Digest.java:253:9:253:42 | jca/Digest.java:253:9:253:42 | | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Digest.java:253:38:253:41 | jca/Digest.java:253:38:253:41 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | KeySize | 256 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | Name | secp256r1 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | @@ -465,7 +453,6 @@ | jca/EllipticCurve2.java:219:44:219:62 | ModeOfOperation | RawName | GCM | jca/EllipticCurve2.java:219:44:219:62 | jca/EllipticCurve2.java:219:44:219:62 | | jca/EllipticCurve2.java:219:44:219:62 | PaddingAlgorithm | Name | UnknownPadding | jca/EllipticCurve2.java:219:44:219:62 | jca/EllipticCurve2.java:219:44:219:62 | | jca/EllipticCurve2.java:219:44:219:62 | PaddingAlgorithm | RawName | NoPadding | jca/EllipticCurve2.java:219:44:219:62 | jca/EllipticCurve2.java:219:44:219:62 | -| jca/EllipticCurve2.java:221:9:221:40 | RandomNumberGeneration | Description | nextBytes | jca/EllipticCurve2.java:221:9:221:40 | jca/EllipticCurve2.java:221:9:221:40 | | jca/EllipticCurve2.java:221:38:221:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/EllipticCurve2.java:221:38:221:39 | jca/EllipticCurve2.java:221:38:221:39 | | jca/EllipticCurve2.java:223:42:223:47 | Key | KeyType | Unknown | jca/EllipticCurve2.java:223:42:223:47 | jca/EllipticCurve2.java:223:42:223:47 | | jca/EllipticCurve2.java:224:29:224:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/EllipticCurve2.java:224:29:224:53 | jca/EllipticCurve2.java:224:29:224:53 | @@ -484,7 +471,6 @@ | jca/Encryption1.java:63:44:63:62 | ModeOfOperation | RawName | GCM | jca/Encryption1.java:63:44:63:62 | jca/Encryption1.java:63:44:63:62 | | jca/Encryption1.java:63:44:63:62 | PaddingAlgorithm | Name | UnknownPadding | jca/Encryption1.java:63:44:63:62 | jca/Encryption1.java:63:44:63:62 | | jca/Encryption1.java:63:44:63:62 | PaddingAlgorithm | RawName | NoPadding | jca/Encryption1.java:63:44:63:62 | jca/Encryption1.java:63:44:63:62 | -| jca/Encryption1.java:65:9:65:40 | RandomNumberGeneration | Description | nextBytes | jca/Encryption1.java:65:9:65:40 | jca/Encryption1.java:65:9:65:40 | | jca/Encryption1.java:65:38:65:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Encryption1.java:65:38:65:39 | jca/Encryption1.java:65:38:65:39 | | jca/Encryption1.java:67:42:67:44 | Key | KeyType | Unknown | jca/Encryption1.java:67:42:67:44 | jca/Encryption1.java:67:42:67:44 | | jca/Encryption1.java:68:32:68:74 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption1.java:68:32:68:74 | jca/Encryption1.java:68:32:68:74 | @@ -575,7 +561,6 @@ | jca/Encryption1.java:171:47:171:65 | ModeOfOperation | RawName | GCM | jca/Encryption1.java:171:47:171:65 | jca/Encryption1.java:171:47:171:65 | | jca/Encryption1.java:171:47:171:65 | PaddingAlgorithm | Name | UnknownPadding | jca/Encryption1.java:171:47:171:65 | jca/Encryption1.java:171:47:171:65 | | jca/Encryption1.java:171:47:171:65 | PaddingAlgorithm | RawName | NoPadding | jca/Encryption1.java:171:47:171:65 | jca/Encryption1.java:171:47:171:65 | -| jca/Encryption1.java:173:9:173:40 | RandomNumberGeneration | Description | nextBytes | jca/Encryption1.java:173:9:173:40 | jca/Encryption1.java:173:9:173:40 | | jca/Encryption1.java:173:38:173:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Encryption1.java:173:38:173:39 | jca/Encryption1.java:173:38:173:39 | | jca/Encryption1.java:175:45:175:50 | Key | KeyType | Unknown | jca/Encryption1.java:175:45:175:50 | jca/Encryption1.java:175:45:175:50 | | jca/Encryption1.java:176:32:176:65 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption1.java:176:32:176:65 | jca/Encryption1.java:176:32:176:65 | @@ -600,7 +585,6 @@ | jca/Encryption2.java:105:47:105:65 | ModeOfOperation | RawName | GCM | jca/Encryption2.java:105:47:105:65 | jca/Encryption2.java:105:47:105:65 | | jca/Encryption2.java:105:47:105:65 | PaddingAlgorithm | Name | UnknownPadding | jca/Encryption2.java:105:47:105:65 | jca/Encryption2.java:105:47:105:65 | | jca/Encryption2.java:105:47:105:65 | PaddingAlgorithm | RawName | NoPadding | jca/Encryption2.java:105:47:105:65 | jca/Encryption2.java:105:47:105:65 | -| jca/Encryption2.java:107:9:107:40 | RandomNumberGeneration | Description | nextBytes | jca/Encryption2.java:107:9:107:40 | jca/Encryption2.java:107:9:107:40 | | jca/Encryption2.java:107:38:107:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Encryption2.java:107:38:107:39 | jca/Encryption2.java:107:38:107:39 | | jca/Encryption2.java:109:45:109:50 | Key | KeyType | Unknown | jca/Encryption2.java:109:45:109:50 | jca/Encryption2.java:109:45:109:50 | | jca/Encryption2.java:110:32:110:65 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption2.java:110:32:110:65 | jca/Encryption2.java:110:32:110:65 | @@ -613,7 +597,6 @@ | jca/Encryption2.java:145:47:145:65 | ModeOfOperation | RawName | GCM | jca/Encryption2.java:145:47:145:65 | jca/Encryption2.java:145:47:145:65 | | jca/Encryption2.java:145:47:145:65 | PaddingAlgorithm | Name | UnknownPadding | jca/Encryption2.java:145:47:145:65 | jca/Encryption2.java:145:47:145:65 | | jca/Encryption2.java:145:47:145:65 | PaddingAlgorithm | RawName | NoPadding | jca/Encryption2.java:145:47:145:65 | jca/Encryption2.java:145:47:145:65 | -| jca/Encryption2.java:147:9:147:40 | RandomNumberGeneration | Description | nextBytes | jca/Encryption2.java:147:9:147:40 | jca/Encryption2.java:147:9:147:40 | | jca/Encryption2.java:147:38:147:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Encryption2.java:147:38:147:39 | jca/Encryption2.java:147:38:147:39 | | jca/Encryption2.java:149:45:149:50 | Key | KeyType | Unknown | jca/Encryption2.java:149:45:149:50 | jca/Encryption2.java:149:45:149:50 | | jca/Encryption2.java:150:32:150:98 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption2.java:150:32:150:98 | jca/Encryption2.java:150:32:150:98 | @@ -654,6 +637,7 @@ | jca/Hash.java:173:58:173:66 | HashAlgorithm | Name | SHA2 | jca/Hash.java:173:58:173:66 | jca/Hash.java:173:58:173:66 | | jca/Hash.java:173:58:173:66 | HashAlgorithm | RawName | SHA-256 | jca/Hash.java:173:58:173:66 | jca/Hash.java:173:58:173:66 | | jca/Hash.java:190:43:190:54 | Parameter | Description | input | jca/Hash.java:190:43:190:54 | jca/Hash.java:190:43:190:54 | +| jca/Hash.java:191:31:192:48 | Constant | Description | {...} | jca/Hash.java:191:31:192:48 | jca/Hash.java:191:31:192:48 | | jca/Hash.java:191:32:191:38 | HashAlgorithm | DigestSize | 160 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | | jca/Hash.java:191:32:191:38 | HashAlgorithm | Name | SHA1 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | | jca/Hash.java:191:32:191:38 | HashAlgorithm | RawName | SHA-1 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | @@ -683,6 +667,7 @@ | jca/Hash.java:192:43:192:47 | HashAlgorithm | RawName | MD5 | jca/Hash.java:192:43:192:47 | jca/Hash.java:192:43:192:47 | | jca/Hash.java:211:43:211:54 | Parameter | Description | input | jca/Hash.java:211:43:211:54 | jca/Hash.java:211:43:211:54 | | jca/Hash.java:211:57:211:66 | Parameter | Description | key | jca/Hash.java:211:57:211:66 | jca/Hash.java:211:57:211:66 | +| jca/Hash.java:212:31:212:116 | Constant | Description | {...} | jca/Hash.java:212:31:212:116 | jca/Hash.java:212:31:212:116 | | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | RawName | HmacSHA1 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | @@ -711,6 +696,7 @@ | jca/Hash.java:237:23:237:50 | KeyDerivation | Iterations | Constant:10000 | jca/Hash.java:235:72:235:76 | jca/Hash.java:235:72:235:76 | | jca/Hash.java:237:23:237:50 | KeyDerivation | KeySize | Constant:256 | jca/Hash.java:235:79:235:81 | jca/Hash.java:235:79:235:81 | | jca/Hash.java:252:37:252:58 | Constant | Description | "Config-based Hashing" | jca/Hash.java:252:37:252:58 | jca/Hash.java:252:37:252:58 | +| jca/Hash.java:266:31:266:76 | Constant | Description | {...} | jca/Hash.java:266:31:266:76 | jca/Hash.java:266:31:266:76 | | jca/Hash.java:266:32:266:40 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:266:32:266:40 | jca/Hash.java:266:32:266:40 | | jca/Hash.java:266:32:266:40 | HashAlgorithm | Name | SHA2 | jca/Hash.java:266:32:266:40 | jca/Hash.java:266:32:266:40 | | jca/Hash.java:266:32:266:40 | HashAlgorithm | RawName | SHA-256 | jca/Hash.java:266:32:266:40 | jca/Hash.java:266:32:266:40 | @@ -728,7 +714,6 @@ | jca/Hash.java:294:57:294:65 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:294:57:294:65 | jca/Hash.java:294:57:294:65 | | jca/Hash.java:294:57:294:65 | HashAlgorithm | Name | SHA2 | jca/Hash.java:294:57:294:65 | jca/Hash.java:294:57:294:65 | | jca/Hash.java:294:57:294:65 | HashAlgorithm | RawName | SHA-256 | jca/Hash.java:294:57:294:65 | jca/Hash.java:294:57:294:65 | -| jca/Hash.java:310:9:310:42 | RandomNumberGeneration | Description | nextBytes | jca/Hash.java:310:9:310:42 | jca/Hash.java:310:9:310:42 | | jca/Hash.java:310:38:310:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Hash.java:310:38:310:41 | jca/Hash.java:310:38:310:41 | | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | Name | AES | jca/IVArtifact.java:30:44:30:65 | jca/IVArtifact.java:30:44:30:65 | | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | RawName | AES/CBC/PKCS5Padding | jca/IVArtifact.java:30:44:30:65 | jca/IVArtifact.java:30:44:30:65 | @@ -757,7 +742,6 @@ | jca/IVArtifact.java:74:56:74:60 | KeyOperationAlgorithm | Structure | Block | jca/IVArtifact.java:74:56:74:60 | jca/IVArtifact.java:74:56:74:60 | | jca/IVArtifact.java:75:21:75:23 | Constant | Description | 256 | jca/IVArtifact.java:75:21:75:23 | jca/IVArtifact.java:75:21:75:23 | | jca/IVArtifact.java:76:16:76:35 | Key | KeyType | Symmetric | jca/IVArtifact.java:76:16:76:35 | jca/IVArtifact.java:76:16:76:35 | -| jca/IVArtifact.java:81:9:81:40 | RandomNumberGeneration | Description | nextBytes | jca/IVArtifact.java:81:9:81:40 | jca/IVArtifact.java:81:9:81:40 | | jca/IVArtifact.java:81:38:81:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/IVArtifact.java:81:38:81:39 | jca/IVArtifact.java:81:38:81:39 | | jca/IVArtifact.java:87:32:87:33 | RandomNumberGeneration | Description | java.util.Random | jca/IVArtifact.java:87:32:87:33 | jca/IVArtifact.java:87:32:87:33 | | jca/IVArtifact.java:105:44:105:62 | KeyOperationAlgorithm | Name | AES | jca/IVArtifact.java:105:44:105:62 | jca/IVArtifact.java:105:44:105:62 | @@ -770,7 +754,6 @@ | jca/IVArtifact.java:108:42:108:44 | Key | KeyType | Unknown | jca/IVArtifact.java:108:42:108:44 | jca/IVArtifact.java:108:42:108:44 | | jca/IVArtifact.java:109:16:109:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/IVArtifact.java:109:16:109:40 | jca/IVArtifact.java:109:16:109:40 | | jca/IVArtifact.java:116:31:116:34 | Constant | Description | null | jca/IVArtifact.java:116:31:116:34 | jca/IVArtifact.java:116:31:116:34 | -| jca/IVArtifact.java:130:13:130:50 | RandomNumberGeneration | Description | nextBytes | jca/IVArtifact.java:130:13:130:50 | jca/IVArtifact.java:130:13:130:50 | | jca/IVArtifact.java:130:42:130:49 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/IVArtifact.java:130:42:130:49 | jca/IVArtifact.java:130:42:130:49 | | jca/IVArtifact.java:132:44:132:62 | KeyOperationAlgorithm | Name | AES | jca/IVArtifact.java:132:44:132:62 | jca/IVArtifact.java:132:44:132:62 | | jca/IVArtifact.java:132:44:132:62 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/IVArtifact.java:132:44:132:62 | jca/IVArtifact.java:132:44:132:62 | @@ -794,7 +777,6 @@ | jca/IVArtifact.java:156:44:156:62 | PaddingAlgorithm | RawName | NoPadding | jca/IVArtifact.java:156:44:156:62 | jca/IVArtifact.java:156:44:156:62 | | jca/IVArtifact.java:158:42:158:44 | Key | KeyType | Unknown | jca/IVArtifact.java:158:42:158:44 | jca/IVArtifact.java:158:42:158:44 | | jca/IVArtifact.java:159:16:159:40 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/IVArtifact.java:159:16:159:40 | jca/IVArtifact.java:159:16:159:40 | -| jca/IVArtifact.java:177:9:177:40 | RandomNumberGeneration | Description | nextBytes | jca/IVArtifact.java:177:9:177:40 | jca/IVArtifact.java:177:9:177:40 | | jca/IVArtifact.java:177:38:177:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/IVArtifact.java:177:38:177:39 | jca/IVArtifact.java:177:38:177:39 | | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | Name | AES | jca/IVArtifact.java:180:48:180:66 | jca/IVArtifact.java:180:48:180:66 | | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | RawName | AES/GCM/NoPadding | jca/IVArtifact.java:180:48:180:66 | jca/IVArtifact.java:180:48:180:66 | @@ -851,7 +833,6 @@ | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | ModeOfOperation | RawName | GCM | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | PaddingAlgorithm | Name | UnknownPadding | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | PaddingAlgorithm | RawName | NoPadding | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | -| jca/KeyAgreementHybridCryptosystem.java:110:9:110:40 | RandomNumberGeneration | Description | nextBytes | jca/KeyAgreementHybridCryptosystem.java:110:9:110:40 | jca/KeyAgreementHybridCryptosystem.java:110:9:110:40 | | jca/KeyAgreementHybridCryptosystem.java:110:38:110:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyAgreementHybridCryptosystem.java:110:38:110:39 | jca/KeyAgreementHybridCryptosystem.java:110:38:110:39 | | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | Key | KeyType | Unknown | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | | jca/KeyAgreementHybridCryptosystem.java:113:29:113:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyAgreementHybridCryptosystem.java:113:29:113:53 | jca/KeyAgreementHybridCryptosystem.java:113:29:113:53 | @@ -873,7 +854,6 @@ | jca/KeyAgreementHybridCryptosystem.java:150:59:150:67 | HashAlgorithm | RawName | SHA-256 | jca/KeyAgreementHybridCryptosystem.java:150:59:150:67 | jca/KeyAgreementHybridCryptosystem.java:150:59:150:67 | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | Name | Unknown | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | RawName | ChaCha20-Poly1305 | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | -| jca/KeyAgreementHybridCryptosystem.java:155:9:155:43 | RandomNumberGeneration | Description | nextBytes | jca/KeyAgreementHybridCryptosystem.java:155:9:155:43 | jca/KeyAgreementHybridCryptosystem.java:155:9:155:43 | | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | KeyType | Unknown | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | @@ -905,7 +885,6 @@ | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | ModeOfOperation | RawName | GCM | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | PaddingAlgorithm | Name | UnknownPadding | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | PaddingAlgorithm | RawName | NoPadding | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | -| jca/KeyAgreementHybridCryptosystem.java:225:9:225:40 | RandomNumberGeneration | Description | nextBytes | jca/KeyAgreementHybridCryptosystem.java:225:9:225:40 | jca/KeyAgreementHybridCryptosystem.java:225:9:225:40 | | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | Key | KeyType | Unknown | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | @@ -919,7 +898,6 @@ | jca/KeyAgreementHybridCryptosystem.java:259:52:259:56 | KeyOperationAlgorithm | Structure | Block | jca/KeyAgreementHybridCryptosystem.java:259:52:259:56 | jca/KeyAgreementHybridCryptosystem.java:259:52:259:56 | | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | Constant | Description | 256 | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | | jca/KeyAgreementHybridCryptosystem.java:261:16:261:31 | Key | KeyType | Symmetric | jca/KeyAgreementHybridCryptosystem.java:261:16:261:31 | jca/KeyAgreementHybridCryptosystem.java:261:16:261:31 | -| jca/KeyAgreementHybridCryptosystem.java:269:9:269:42 | RandomNumberGeneration | Description | nextBytes | jca/KeyAgreementHybridCryptosystem.java:269:9:269:42 | jca/KeyAgreementHybridCryptosystem.java:269:9:269:42 | | jca/KeyAgreementHybridCryptosystem.java:269:38:269:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyAgreementHybridCryptosystem.java:269:38:269:41 | jca/KeyAgreementHybridCryptosystem.java:269:38:269:41 | | jca/KeyArtifact.java:18:56:18:60 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/KeyArtifact.java:19:21:19:23 | jca/KeyArtifact.java:19:21:19:23 | | jca/KeyArtifact.java:18:56:18:60 | KeyOperationAlgorithm | Name | AES | jca/KeyArtifact.java:18:56:18:60 | jca/KeyArtifact.java:18:56:18:60 | @@ -954,10 +932,10 @@ | jca/KeyArtifact.java:66:32:66:51 | Key | KeyType | Symmetric | jca/KeyArtifact.java:66:32:66:51 | jca/KeyArtifact.java:66:32:66:51 | | jca/KeyArtifact.java:72:31:72:34 | Constant | Description | 2048 | jca/KeyArtifact.java:72:31:72:34 | jca/KeyArtifact.java:72:31:72:34 | | jca/KeyArtifact.java:73:16:73:43 | Key | KeyType | Asymmetric | jca/KeyArtifact.java:73:16:73:43 | jca/KeyArtifact.java:73:16:73:43 | +| jca/KeyArtifact.java:78:31:78:54 | Constant | Description | {...} | jca/KeyArtifact.java:78:31:78:54 | jca/KeyArtifact.java:78:31:78:54 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | KeySize | Constant:2048 | jca/KeyArtifact.java:72:31:72:34 | jca/KeyArtifact.java:72:31:72:34 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | Name | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | RawName | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | -| jca/KeyArtifact.java:78:45:78:53 | Constant | Description | "Ed25519" | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | Description | password | jca/KeyDerivation1.java:78:39:78:53 | jca/KeyDerivation1.java:78:39:78:53 | | jca/KeyDerivation1.java:80:72:80:76 | Constant | Description | 10000 | jca/KeyDerivation1.java:80:72:80:76 | jca/KeyDerivation1.java:80:72:80:76 | | jca/KeyDerivation1.java:80:79:80:81 | Constant | Description | 256 | jca/KeyDerivation1.java:80:79:80:81 | jca/KeyDerivation1.java:80:79:80:81 | @@ -1087,7 +1065,6 @@ | jca/KeyDerivation1.java:352:19:352:54 | Key | KeyType | Unknown | jca/KeyDerivation1.java:352:19:352:54 | jca/KeyDerivation1.java:352:19:352:54 | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | KeyOperationSubtype | Mac | jca/KeyDerivation1.java:353:22:353:62 | jca/KeyDerivation1.java:353:22:353:62 | | jca/KeyDerivation1.java:353:35:353:50 | Constant | Description | "hkdf-expansion" | jca/KeyDerivation1.java:353:35:353:50 | jca/KeyDerivation1.java:353:35:353:50 | -| jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | Description | nextBytes | jca/KeyDerivation1.java:365:9:365:42 | jca/KeyDerivation1.java:365:9:365:42 | | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyDerivation1.java:365:38:365:41 | jca/KeyDerivation1.java:365:38:365:41 | | jca/KeyEncapsulation.java:60:56:60:60 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/KeyEncapsulation.java:61:21:61:23 | jca/KeyEncapsulation.java:61:21:61:23 | | jca/KeyEncapsulation.java:60:56:60:60 | KeyOperationAlgorithm | Name | AES | jca/KeyEncapsulation.java:60:56:60:60 | jca/KeyEncapsulation.java:60:56:60:60 | @@ -1113,7 +1090,6 @@ | jca/KeyEncapsulation.java:73:47:73:65 | ModeOfOperation | RawName | GCM | jca/KeyEncapsulation.java:73:47:73:65 | jca/KeyEncapsulation.java:73:47:73:65 | | jca/KeyEncapsulation.java:73:47:73:65 | PaddingAlgorithm | Name | UnknownPadding | jca/KeyEncapsulation.java:73:47:73:65 | jca/KeyEncapsulation.java:73:47:73:65 | | jca/KeyEncapsulation.java:73:47:73:65 | PaddingAlgorithm | RawName | NoPadding | jca/KeyEncapsulation.java:73:47:73:65 | jca/KeyEncapsulation.java:73:47:73:65 | -| jca/KeyEncapsulation.java:75:9:75:40 | RandomNumberGeneration | Description | nextBytes | jca/KeyEncapsulation.java:75:9:75:40 | jca/KeyEncapsulation.java:75:9:75:40 | | jca/KeyEncapsulation.java:75:38:75:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyEncapsulation.java:75:38:75:39 | jca/KeyEncapsulation.java:75:38:75:39 | | jca/KeyEncapsulation.java:77:45:77:50 | Key | KeyType | Unknown | jca/KeyEncapsulation.java:77:45:77:50 | jca/KeyEncapsulation.java:77:45:77:50 | | jca/KeyEncapsulation.java:78:29:78:80 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyEncapsulation.java:78:29:78:80 | jca/KeyEncapsulation.java:78:29:78:80 | @@ -1147,7 +1123,6 @@ | jca/KeyEncapsulation.java:133:47:133:65 | ModeOfOperation | RawName | GCM | jca/KeyEncapsulation.java:133:47:133:65 | jca/KeyEncapsulation.java:133:47:133:65 | | jca/KeyEncapsulation.java:133:47:133:65 | PaddingAlgorithm | Name | UnknownPadding | jca/KeyEncapsulation.java:133:47:133:65 | jca/KeyEncapsulation.java:133:47:133:65 | | jca/KeyEncapsulation.java:133:47:133:65 | PaddingAlgorithm | RawName | NoPadding | jca/KeyEncapsulation.java:133:47:133:65 | jca/KeyEncapsulation.java:133:47:133:65 | -| jca/KeyEncapsulation.java:135:9:135:40 | RandomNumberGeneration | Description | nextBytes | jca/KeyEncapsulation.java:135:9:135:40 | jca/KeyEncapsulation.java:135:9:135:40 | | jca/KeyEncapsulation.java:135:38:135:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyEncapsulation.java:135:38:135:39 | jca/KeyEncapsulation.java:135:38:135:39 | | jca/KeyEncapsulation.java:136:45:136:50 | Key | KeyType | Unknown | jca/KeyEncapsulation.java:136:45:136:50 | jca/KeyEncapsulation.java:136:45:136:50 | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyEncapsulation.java:137:29:137:73 | jca/KeyEncapsulation.java:137:29:137:73 | @@ -1302,7 +1277,6 @@ | jca/MACOperation.java:232:56:232:60 | KeyOperationAlgorithm | Structure | Block | jca/MACOperation.java:232:56:232:60 | jca/MACOperation.java:232:56:232:60 | | jca/MACOperation.java:233:21:233:23 | Constant | Description | 256 | jca/MACOperation.java:233:21:233:23 | jca/MACOperation.java:233:21:233:23 | | jca/MACOperation.java:234:16:234:35 | Key | KeyType | Symmetric | jca/MACOperation.java:234:16:234:35 | jca/MACOperation.java:234:16:234:35 | -| jca/MACOperation.java:246:9:246:42 | RandomNumberGeneration | Description | nextBytes | jca/MACOperation.java:246:9:246:42 | jca/MACOperation.java:246:9:246:42 | | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/MACOperation.java:246:38:246:41 | jca/MACOperation.java:246:38:246:41 | | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Name | HMAC | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | @@ -1343,7 +1317,6 @@ | jca/Nonce.java:80:40:80:55 | Constant | Description | "Sensitive Data" | jca/Nonce.java:80:40:80:55 | jca/Nonce.java:80:40:80:55 | | jca/Nonce.java:92:56:92:67 | Constant | Description | "HmacSHA256" | jca/Nonce.java:92:56:92:67 | jca/Nonce.java:92:56:92:67 | | jca/Nonce.java:93:16:93:35 | Key | KeyType | Symmetric | jca/Nonce.java:93:16:93:35 | jca/Nonce.java:93:16:93:35 | -| jca/Nonce.java:98:9:98:43 | RandomNumberGeneration | Description | nextBytes | jca/Nonce.java:98:9:98:43 | jca/Nonce.java:98:9:98:43 | | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Nonce.java:98:38:98:42 | jca/Nonce.java:98:38:98:42 | | jca/Nonce.java:112:16:112:33 | Constant | Description | "BADNONCEBADNONCE" | jca/Nonce.java:112:16:112:33 | jca/Nonce.java:112:16:112:33 | | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/PrngTest.java:153:21:153:23 | jca/PrngTest.java:153:21:153:23 | @@ -1384,7 +1357,6 @@ | jca/SignEncryptCombinations.java:92:44:92:62 | ModeOfOperation | RawName | GCM | jca/SignEncryptCombinations.java:92:44:92:62 | jca/SignEncryptCombinations.java:92:44:92:62 | | jca/SignEncryptCombinations.java:92:44:92:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SignEncryptCombinations.java:92:44:92:62 | jca/SignEncryptCombinations.java:92:44:92:62 | | jca/SignEncryptCombinations.java:92:44:92:62 | PaddingAlgorithm | RawName | NoPadding | jca/SignEncryptCombinations.java:92:44:92:62 | jca/SignEncryptCombinations.java:92:44:92:62 | -| jca/SignEncryptCombinations.java:94:9:94:28 | RandomNumberGeneration | Description | nextBytes | jca/SignEncryptCombinations.java:94:9:94:28 | jca/SignEncryptCombinations.java:94:9:94:28 | | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SignEncryptCombinations.java:94:26:94:27 | jca/SignEncryptCombinations.java:94:26:94:27 | | jca/SignEncryptCombinations.java:96:42:96:44 | Key | KeyType | Unknown | jca/SignEncryptCombinations.java:96:42:96:44 | jca/SignEncryptCombinations.java:96:42:96:44 | | jca/SignEncryptCombinations.java:97:29:97:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SignEncryptCombinations.java:97:29:97:53 | jca/SignEncryptCombinations.java:97:29:97:53 | @@ -1506,7 +1478,6 @@ | jca/SymmetricAlgorithm.java:51:44:51:62 | ModeOfOperation | RawName | GCM | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricAlgorithm.java:51:44:51:62 | jca/SymmetricAlgorithm.java:51:44:51:62 | -| jca/SymmetricAlgorithm.java:53:9:53:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:53:9:53:40 | jca/SymmetricAlgorithm.java:53:9:53:40 | | jca/SymmetricAlgorithm.java:53:38:53:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:53:38:53:39 | jca/SymmetricAlgorithm.java:53:38:53:39 | | jca/SymmetricAlgorithm.java:55:42:55:44 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:55:42:55:44 | jca/SymmetricAlgorithm.java:55:42:55:44 | | jca/SymmetricAlgorithm.java:56:29:56:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:56:29:56:53 | jca/SymmetricAlgorithm.java:56:29:56:53 | @@ -1528,7 +1499,6 @@ | jca/SymmetricAlgorithm.java:94:44:94:65 | ModeOfOperation | RawName | CBC | jca/SymmetricAlgorithm.java:94:44:94:65 | jca/SymmetricAlgorithm.java:94:44:94:65 | | jca/SymmetricAlgorithm.java:94:44:94:65 | PaddingAlgorithm | Name | PKCS7 | jca/SymmetricAlgorithm.java:94:44:94:65 | jca/SymmetricAlgorithm.java:94:44:94:65 | | jca/SymmetricAlgorithm.java:94:44:94:65 | PaddingAlgorithm | RawName | PKCS5Padding | jca/SymmetricAlgorithm.java:94:44:94:65 | jca/SymmetricAlgorithm.java:94:44:94:65 | -| jca/SymmetricAlgorithm.java:96:9:96:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:96:9:96:40 | jca/SymmetricAlgorithm.java:96:9:96:40 | | jca/SymmetricAlgorithm.java:96:38:96:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:96:38:96:39 | jca/SymmetricAlgorithm.java:96:38:96:39 | | jca/SymmetricAlgorithm.java:98:42:98:44 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:98:42:98:44 | jca/SymmetricAlgorithm.java:98:42:98:44 | | jca/SymmetricAlgorithm.java:99:29:99:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:99:29:99:53 | jca/SymmetricAlgorithm.java:99:29:99:53 | @@ -1556,7 +1526,6 @@ | jca/SymmetricAlgorithm.java:146:44:146:65 | ModeOfOperation | RawName | CBC | jca/SymmetricAlgorithm.java:146:44:146:65 | jca/SymmetricAlgorithm.java:146:44:146:65 | | jca/SymmetricAlgorithm.java:146:44:146:65 | PaddingAlgorithm | Name | PKCS7 | jca/SymmetricAlgorithm.java:146:44:146:65 | jca/SymmetricAlgorithm.java:146:44:146:65 | | jca/SymmetricAlgorithm.java:146:44:146:65 | PaddingAlgorithm | RawName | PKCS5Padding | jca/SymmetricAlgorithm.java:146:44:146:65 | jca/SymmetricAlgorithm.java:146:44:146:65 | -| jca/SymmetricAlgorithm.java:148:9:148:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:148:9:148:40 | jca/SymmetricAlgorithm.java:148:9:148:40 | | jca/SymmetricAlgorithm.java:148:38:148:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:148:38:148:39 | jca/SymmetricAlgorithm.java:148:38:148:39 | | jca/SymmetricAlgorithm.java:150:42:150:44 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:150:42:150:44 | jca/SymmetricAlgorithm.java:150:42:150:44 | | jca/SymmetricAlgorithm.java:151:29:151:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:151:29:151:53 | jca/SymmetricAlgorithm.java:151:29:151:53 | @@ -1568,7 +1537,6 @@ | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | RawName | CBC | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | PaddingAlgorithm | Name | PKCS7 | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | PaddingAlgorithm | RawName | PKCS5Padding | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | -| jca/SymmetricAlgorithm.java:170:9:170:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:170:9:170:40 | jca/SymmetricAlgorithm.java:170:9:170:40 | | jca/SymmetricAlgorithm.java:170:38:170:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:170:38:170:39 | jca/SymmetricAlgorithm.java:170:38:170:39 | | jca/SymmetricAlgorithm.java:172:42:172:44 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:172:42:172:44 | jca/SymmetricAlgorithm.java:172:42:172:44 | | jca/SymmetricAlgorithm.java:173:29:173:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:173:29:173:53 | jca/SymmetricAlgorithm.java:173:29:173:53 | @@ -1576,7 +1544,6 @@ | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | Name | ChaCha20 | jca/SymmetricAlgorithm.java:190:44:190:53 | jca/SymmetricAlgorithm.java:190:44:190:53 | | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | RawName | ChaCha20 | jca/SymmetricAlgorithm.java:190:44:190:53 | jca/SymmetricAlgorithm.java:190:44:190:53 | | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | Structure | Stream | jca/SymmetricAlgorithm.java:190:44:190:53 | jca/SymmetricAlgorithm.java:190:44:190:53 | -| jca/SymmetricAlgorithm.java:192:9:192:43 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:192:9:192:43 | jca/SymmetricAlgorithm.java:192:9:192:43 | | jca/SymmetricAlgorithm.java:192:38:192:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:192:38:192:42 | jca/SymmetricAlgorithm.java:192:38:192:42 | | jca/SymmetricAlgorithm.java:194:42:194:44 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:194:42:194:44 | jca/SymmetricAlgorithm.java:194:42:194:44 | | jca/SymmetricAlgorithm.java:195:29:195:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:195:29:195:53 | jca/SymmetricAlgorithm.java:195:29:195:53 | @@ -1592,7 +1559,6 @@ | jca/SymmetricAlgorithm.java:218:44:218:62 | ModeOfOperation | RawName | GCM | jca/SymmetricAlgorithm.java:218:44:218:62 | jca/SymmetricAlgorithm.java:218:44:218:62 | | jca/SymmetricAlgorithm.java:218:44:218:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricAlgorithm.java:218:44:218:62 | jca/SymmetricAlgorithm.java:218:44:218:62 | | jca/SymmetricAlgorithm.java:218:44:218:62 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricAlgorithm.java:218:44:218:62 | jca/SymmetricAlgorithm.java:218:44:218:62 | -| jca/SymmetricAlgorithm.java:220:9:220:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:220:9:220:40 | jca/SymmetricAlgorithm.java:220:9:220:40 | | jca/SymmetricAlgorithm.java:220:38:220:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:220:38:220:39 | jca/SymmetricAlgorithm.java:220:38:220:39 | | jca/SymmetricAlgorithm.java:222:42:222:51 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:222:42:222:51 | jca/SymmetricAlgorithm.java:222:42:222:51 | | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:223:29:223:53 | jca/SymmetricAlgorithm.java:223:29:223:53 | @@ -1619,7 +1585,6 @@ | jca/SymmetricAlgorithm.java:295:44:295:62 | ModeOfOperation | RawName | GCM | jca/SymmetricAlgorithm.java:295:44:295:62 | jca/SymmetricAlgorithm.java:295:44:295:62 | | jca/SymmetricAlgorithm.java:295:44:295:62 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricAlgorithm.java:295:44:295:62 | jca/SymmetricAlgorithm.java:295:44:295:62 | | jca/SymmetricAlgorithm.java:295:44:295:62 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricAlgorithm.java:295:44:295:62 | jca/SymmetricAlgorithm.java:295:44:295:62 | -| jca/SymmetricAlgorithm.java:297:9:297:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:297:9:297:40 | jca/SymmetricAlgorithm.java:297:9:297:40 | | jca/SymmetricAlgorithm.java:297:38:297:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:297:38:297:39 | jca/SymmetricAlgorithm.java:297:38:297:39 | | jca/SymmetricAlgorithm.java:298:42:298:47 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:298:42:298:47 | jca/SymmetricAlgorithm.java:298:42:298:47 | | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:299:29:299:53 | jca/SymmetricAlgorithm.java:299:29:299:53 | @@ -1633,7 +1598,6 @@ | jca/SymmetricAlgorithm.java:331:52:331:56 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricAlgorithm.java:331:52:331:56 | jca/SymmetricAlgorithm.java:331:52:331:56 | | jca/SymmetricAlgorithm.java:332:17:332:19 | Constant | Description | 256 | jca/SymmetricAlgorithm.java:332:17:332:19 | jca/SymmetricAlgorithm.java:332:17:332:19 | | jca/SymmetricAlgorithm.java:333:16:333:31 | Key | KeyType | Symmetric | jca/SymmetricAlgorithm.java:333:16:333:31 | jca/SymmetricAlgorithm.java:333:16:333:31 | -| jca/SymmetricAlgorithm.java:345:9:345:42 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricAlgorithm.java:345:9:345:42 | jca/SymmetricAlgorithm.java:345:9:345:42 | | jca/SymmetricAlgorithm.java:345:38:345:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:345:38:345:41 | jca/SymmetricAlgorithm.java:345:38:345:41 | | jca/SymmetricModesTest.java:48:52:48:56 | KeyOperationAlgorithm | KeySize | Constant:128 | jca/SymmetricModesTest.java:53:17:53:19 | jca/SymmetricModesTest.java:53:17:53:19 | | jca/SymmetricModesTest.java:48:52:48:56 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/SymmetricModesTest.java:49:17:49:19 | jca/SymmetricModesTest.java:49:17:49:19 | @@ -1660,7 +1624,6 @@ | jca/SymmetricModesTest.java:79:44:79:63 | ModeOfOperation | RawName | OFB8 | jca/SymmetricModesTest.java:79:44:79:63 | jca/SymmetricModesTest.java:79:44:79:63 | | jca/SymmetricModesTest.java:79:44:79:63 | PaddingAlgorithm | Name | UnknownPadding | jca/SymmetricModesTest.java:79:44:79:63 | jca/SymmetricModesTest.java:79:44:79:63 | | jca/SymmetricModesTest.java:79:44:79:63 | PaddingAlgorithm | RawName | NoPadding | jca/SymmetricModesTest.java:79:44:79:63 | jca/SymmetricModesTest.java:79:44:79:63 | -| jca/SymmetricModesTest.java:81:9:81:40 | RandomNumberGeneration | Description | nextBytes | jca/SymmetricModesTest.java:81:9:81:40 | jca/SymmetricModesTest.java:81:9:81:40 | | jca/SymmetricModesTest.java:81:38:81:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricModesTest.java:81:38:81:39 | jca/SymmetricModesTest.java:81:38:81:39 | | jca/SymmetricModesTest.java:83:42:83:44 | Key | KeyType | Unknown | jca/SymmetricModesTest.java:83:42:83:44 | jca/SymmetricModesTest.java:83:42:83:44 | | jca/SymmetricModesTest.java:84:29:84:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricModesTest.java:84:29:84:53 | jca/SymmetricModesTest.java:84:29:84:53 | @@ -1693,7 +1656,6 @@ | jca/UniversalFlowTest.java:28:29:28:47 | ModeOfOperation | RawName | GCM | jca/UniversalFlowTest.java:28:29:28:47 | jca/UniversalFlowTest.java:28:29:28:47 | | jca/UniversalFlowTest.java:28:29:28:47 | PaddingAlgorithm | Name | UnknownPadding | jca/UniversalFlowTest.java:28:29:28:47 | jca/UniversalFlowTest.java:28:29:28:47 | | jca/UniversalFlowTest.java:28:29:28:47 | PaddingAlgorithm | RawName | NoPadding | jca/UniversalFlowTest.java:28:29:28:47 | jca/UniversalFlowTest.java:28:29:28:47 | -| jca/UniversalFlowTest.java:31:9:31:40 | RandomNumberGeneration | Description | nextBytes | jca/UniversalFlowTest.java:31:9:31:40 | jca/UniversalFlowTest.java:31:9:31:40 | | jca/UniversalFlowTest.java:31:38:31:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/UniversalFlowTest.java:31:38:31:39 | jca/UniversalFlowTest.java:31:38:31:39 | | jca/UniversalFlowTest.java:33:42:33:44 | Key | KeyType | Unknown | jca/UniversalFlowTest.java:33:42:33:44 | jca/UniversalFlowTest.java:33:42:33:44 | | jca/UniversalFlowTest.java:34:32:34:74 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/UniversalFlowTest.java:34:32:34:74 | jca/UniversalFlowTest.java:34:32:34:74 | diff --git a/java/ql/test/experimental/library-tests/quantum/nodes.expected b/java/ql/test/experimental/library-tests/quantum/nodes.expected index 39816c68234..5e4c033707a 100644 --- a/java/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/java/ql/test/experimental/library-tests/quantum/nodes.expected @@ -27,7 +27,6 @@ | jca/AesWrapAndPBEWith.java:108:65:108:82 | KeyDerivationAlgorithm | | jca/AesWrapAndPBEWith.java:109:27:109:54 | Key | | jca/AesWrapAndPBEWith.java:109:27:109:54 | KeyDerivation | -| jca/AesWrapAndPBEWith.java:122:9:122:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:122:38:122:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:123:42:123:63 | Message | | jca/AesWrapAndPBEWith.java:123:66:123:69 | Salt | @@ -38,7 +37,6 @@ | jca/AesWrapAndPBEWith.java:124:65:124:86 | KeyDerivationAlgorithm | | jca/AesWrapAndPBEWith.java:125:27:125:54 | Key | | jca/AesWrapAndPBEWith.java:125:27:125:54 | KeyDerivation | -| jca/AesWrapAndPBEWith.java:140:9:140:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:140:38:140:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:141:42:141:63 | Message | | jca/AesWrapAndPBEWith.java:141:66:141:69 | Salt | @@ -50,14 +48,12 @@ | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:146:44:146:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:146:44:146:65 | PaddingAlgorithm | -| jca/AesWrapAndPBEWith.java:148:9:148:40 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:148:38:148:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | | jca/AesWrapAndPBEWith.java:150:50:150:55 | Nonce | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | | jca/AesWrapAndPBEWith.java:151:29:151:64 | KeyOperationOutput | | jca/AesWrapAndPBEWith.java:151:44:151:63 | Message | -| jca/AesWrapAndPBEWith.java:167:9:167:42 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:167:38:167:41 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:168:42:168:63 | Message | | jca/AesWrapAndPBEWith.java:168:66:168:69 | Salt | @@ -69,7 +65,6 @@ | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:173:44:173:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:173:44:173:65 | PaddingAlgorithm | -| jca/AesWrapAndPBEWith.java:175:9:175:40 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:175:38:175:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | | jca/AesWrapAndPBEWith.java:177:50:177:55 | Nonce | @@ -109,7 +104,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:34:168:55 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:34:168:55 | WrapOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:168:49:168:54 | Message | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:9:171:40 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:172:47:172:65 | ModeOfOperation | @@ -135,7 +129,6 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:29:197:56 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:47:197:55 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:215:91:215:96 | KeyAgreementAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:9:220:40 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:221:44:221:62 | ModeOfOperation | @@ -172,7 +165,6 @@ | jca/ChainedEncryptionTest.java:19:44:19:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:19:44:19:62 | ModeOfOperation | | jca/ChainedEncryptionTest.java:19:44:19:62 | PaddingAlgorithm | -| jca/ChainedEncryptionTest.java:21:9:21:40 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:21:38:21:39 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:23:42:23:44 | Key | | jca/ChainedEncryptionTest.java:23:47:23:50 | Nonce | @@ -188,7 +180,6 @@ | jca/ChainedEncryptionTest.java:35:16:35:41 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:35:31:35:40 | Message | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | -| jca/ChainedEncryptionTest.java:42:9:42:43 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:42:38:42:42 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:43:42:43:44 | Key | | jca/ChainedEncryptionTest.java:43:47:43:72 | Nonce | @@ -210,7 +201,6 @@ | jca/ChainedEncryptionTest.java:84:24:84:26 | Constant | | jca/ChainedEncryptionTest.java:85:30:85:52 | Key | | jca/ChainedEncryptionTest.java:85:30:85:52 | KeyGeneration | -| jca/ChainedEncryptionTest.java:89:9:89:43 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:89:38:89:42 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:90:47:90:65 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:90:47:90:65 | ModeOfOperation | @@ -220,7 +210,6 @@ | jca/ChainedEncryptionTest.java:93:34:93:62 | EncryptOperation | | jca/ChainedEncryptionTest.java:93:34:93:62 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:93:52:93:61 | Message | -| jca/ChainedEncryptionTest.java:97:9:97:49 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:97:38:97:48 | RandomNumberGeneration | | jca/ChainedEncryptionTest.java:98:50:98:68 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:99:48:99:55 | Key | @@ -337,7 +326,6 @@ | jca/Digest.java:240:21:240:23 | Constant | | jca/Digest.java:241:16:241:35 | Key | | jca/Digest.java:241:16:241:35 | KeyGeneration | -| jca/Digest.java:253:9:253:42 | RandomNumberGeneration | | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | | jca/EllipticCurve1.java:47:16:47:36 | Key | @@ -422,7 +410,6 @@ | jca/EllipticCurve2.java:219:44:219:62 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:219:44:219:62 | ModeOfOperation | | jca/EllipticCurve2.java:219:44:219:62 | PaddingAlgorithm | -| jca/EllipticCurve2.java:221:9:221:40 | RandomNumberGeneration | | jca/EllipticCurve2.java:221:38:221:39 | RandomNumberGeneration | | jca/EllipticCurve2.java:223:42:223:47 | Key | | jca/EllipticCurve2.java:223:50:223:53 | Nonce | @@ -438,7 +425,6 @@ | jca/Encryption1.java:63:44:63:62 | KeyOperationAlgorithm | | jca/Encryption1.java:63:44:63:62 | ModeOfOperation | | jca/Encryption1.java:63:44:63:62 | PaddingAlgorithm | -| jca/Encryption1.java:65:9:65:40 | RandomNumberGeneration | | jca/Encryption1.java:65:38:65:39 | RandomNumberGeneration | | jca/Encryption1.java:67:42:67:44 | Key | | jca/Encryption1.java:67:47:67:53 | Nonce | @@ -508,7 +494,6 @@ | jca/Encryption1.java:171:47:171:65 | KeyOperationAlgorithm | | jca/Encryption1.java:171:47:171:65 | ModeOfOperation | | jca/Encryption1.java:171:47:171:65 | PaddingAlgorithm | -| jca/Encryption1.java:173:9:173:40 | RandomNumberGeneration | | jca/Encryption1.java:173:38:173:39 | RandomNumberGeneration | | jca/Encryption1.java:175:45:175:50 | Key | | jca/Encryption1.java:175:53:175:59 | Nonce | @@ -532,7 +517,6 @@ | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | | jca/Encryption2.java:105:47:105:65 | ModeOfOperation | | jca/Encryption2.java:105:47:105:65 | PaddingAlgorithm | -| jca/Encryption2.java:107:9:107:40 | RandomNumberGeneration | | jca/Encryption2.java:107:38:107:39 | RandomNumberGeneration | | jca/Encryption2.java:109:45:109:50 | Key | | jca/Encryption2.java:109:53:109:59 | Nonce | @@ -544,7 +528,6 @@ | jca/Encryption2.java:145:47:145:65 | KeyOperationAlgorithm | | jca/Encryption2.java:145:47:145:65 | ModeOfOperation | | jca/Encryption2.java:145:47:145:65 | PaddingAlgorithm | -| jca/Encryption2.java:147:9:147:40 | RandomNumberGeneration | | jca/Encryption2.java:147:38:147:39 | RandomNumberGeneration | | jca/Encryption2.java:149:45:149:50 | Key | | jca/Encryption2.java:149:53:149:59 | Nonce | @@ -590,6 +573,7 @@ | jca/Hash.java:174:23:174:52 | HashOperation | | jca/Hash.java:174:37:174:51 | Message | | jca/Hash.java:190:43:190:54 | Parameter | +| jca/Hash.java:191:31:192:48 | Constant | | jca/Hash.java:191:32:191:38 | HashAlgorithm | | jca/Hash.java:191:41:191:49 | HashAlgorithm | | jca/Hash.java:191:52:191:60 | HashAlgorithm | @@ -605,6 +589,7 @@ | jca/Hash.java:195:41:195:56 | Message | | jca/Hash.java:211:43:211:54 | Parameter | | jca/Hash.java:211:57:211:66 | Parameter | +| jca/Hash.java:212:31:212:116 | Constant | | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | | jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | @@ -629,6 +614,7 @@ | jca/Hash.java:252:23:252:70 | HashOperation | | jca/Hash.java:252:37:252:58 | Constant | | jca/Hash.java:252:37:252:69 | Message | +| jca/Hash.java:266:31:266:76 | Constant | | jca/Hash.java:266:32:266:40 | HashAlgorithm | | jca/Hash.java:266:43:266:51 | HashAlgorithm | | jca/Hash.java:266:54:266:63 | HashAlgorithm | @@ -639,7 +625,6 @@ | jca/Hash.java:271:40:271:54 | HashOperation | | jca/Hash.java:294:16:294:66 | LocalData | | jca/Hash.java:294:57:294:65 | HashAlgorithm | -| jca/Hash.java:310:9:310:42 | RandomNumberGeneration | | jca/Hash.java:310:38:310:41 | RandomNumberGeneration | | jca/IVArtifact.java:30:44:30:65 | KeyOperationAlgorithm | | jca/IVArtifact.java:30:44:30:65 | ModeOfOperation | @@ -664,7 +649,6 @@ | jca/IVArtifact.java:75:21:75:23 | Constant | | jca/IVArtifact.java:76:16:76:35 | Key | | jca/IVArtifact.java:76:16:76:35 | KeyGeneration | -| jca/IVArtifact.java:81:9:81:40 | RandomNumberGeneration | | jca/IVArtifact.java:81:38:81:39 | RandomNumberGeneration | | jca/IVArtifact.java:87:32:87:33 | RandomNumberGeneration | | jca/IVArtifact.java:105:44:105:62 | KeyOperationAlgorithm | @@ -676,7 +660,6 @@ | jca/IVArtifact.java:109:16:109:40 | KeyOperationOutput | | jca/IVArtifact.java:109:31:109:39 | Message | | jca/IVArtifact.java:116:31:116:34 | Constant | -| jca/IVArtifact.java:130:13:130:50 | RandomNumberGeneration | | jca/IVArtifact.java:130:42:130:49 | RandomNumberGeneration | | jca/IVArtifact.java:132:44:132:62 | KeyOperationAlgorithm | | jca/IVArtifact.java:132:44:132:62 | ModeOfOperation | @@ -699,7 +682,6 @@ | jca/IVArtifact.java:159:16:159:40 | EncryptOperation | | jca/IVArtifact.java:159:16:159:40 | KeyOperationOutput | | jca/IVArtifact.java:159:31:159:39 | Message | -| jca/IVArtifact.java:177:9:177:40 | RandomNumberGeneration | | jca/IVArtifact.java:177:38:177:39 | RandomNumberGeneration | | jca/IVArtifact.java:180:48:180:66 | KeyOperationAlgorithm | | jca/IVArtifact.java:180:48:180:66 | ModeOfOperation | @@ -748,7 +730,6 @@ | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | ModeOfOperation | | jca/KeyAgreementHybridCryptosystem.java:108:44:108:62 | PaddingAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:110:9:110:40 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:110:38:110:39 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:112:42:112:47 | Key | | jca/KeyAgreementHybridCryptosystem.java:112:50:112:53 | Nonce | @@ -770,7 +751,6 @@ | jca/KeyAgreementHybridCryptosystem.java:150:59:150:67 | HashAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:150:77:150:88 | Message | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:155:9:155:43 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | | jca/KeyAgreementHybridCryptosystem.java:156:53:156:78 | Nonce | @@ -799,7 +779,6 @@ | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | ModeOfOperation | | jca/KeyAgreementHybridCryptosystem.java:223:44:223:62 | PaddingAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:225:9:225:40 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | Key | | jca/KeyAgreementHybridCryptosystem.java:227:57:227:63 | Nonce | @@ -815,7 +794,6 @@ | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | Constant | | jca/KeyAgreementHybridCryptosystem.java:261:16:261:31 | Key | | jca/KeyAgreementHybridCryptosystem.java:261:16:261:31 | KeyGeneration | -| jca/KeyAgreementHybridCryptosystem.java:269:9:269:42 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:269:38:269:41 | RandomNumberGeneration | | jca/KeyArtifact.java:18:56:18:60 | KeyOperationAlgorithm | | jca/KeyArtifact.java:19:21:19:23 | Constant | @@ -844,8 +822,8 @@ | jca/KeyArtifact.java:72:31:72:34 | Constant | | jca/KeyArtifact.java:73:16:73:43 | Key | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | +| jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | -| jca/KeyArtifact.java:78:45:78:53 | Constant | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | | jca/KeyDerivation1.java:80:42:80:63 | Message | | jca/KeyDerivation1.java:80:66:80:69 | Salt | @@ -958,7 +936,6 @@ | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | | jca/KeyDerivation1.java:353:35:353:50 | Constant | | jca/KeyDerivation1.java:353:35:353:61 | Message | -| jca/KeyDerivation1.java:365:9:365:42 | RandomNumberGeneration | | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyEncapsulation.java:60:56:60:60 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:61:21:61:23 | Constant | @@ -975,7 +952,6 @@ | jca/KeyEncapsulation.java:73:47:73:65 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:73:47:73:65 | ModeOfOperation | | jca/KeyEncapsulation.java:73:47:73:65 | PaddingAlgorithm | -| jca/KeyEncapsulation.java:75:9:75:40 | RandomNumberGeneration | | jca/KeyEncapsulation.java:75:38:75:39 | RandomNumberGeneration | | jca/KeyEncapsulation.java:77:45:77:50 | Key | | jca/KeyEncapsulation.java:77:53:77:59 | Nonce | @@ -1004,7 +980,6 @@ | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:133:47:133:65 | ModeOfOperation | | jca/KeyEncapsulation.java:133:47:133:65 | PaddingAlgorithm | -| jca/KeyEncapsulation.java:135:9:135:40 | RandomNumberGeneration | | jca/KeyEncapsulation.java:135:38:135:39 | RandomNumberGeneration | | jca/KeyEncapsulation.java:136:45:136:50 | Key | | jca/KeyEncapsulation.java:136:53:136:81 | Nonce | @@ -1158,7 +1133,6 @@ | jca/MACOperation.java:233:21:233:23 | Constant | | jca/MACOperation.java:234:16:234:35 | Key | | jca/MACOperation.java:234:16:234:35 | KeyGeneration | -| jca/MACOperation.java:246:9:246:42 | RandomNumberGeneration | | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | | jca/Nonce.java:25:18:25:20 | Key | @@ -1201,7 +1175,6 @@ | jca/Nonce.java:92:56:92:67 | Constant | | jca/Nonce.java:93:16:93:35 | Key | | jca/Nonce.java:93:16:93:35 | KeyGeneration | -| jca/Nonce.java:98:9:98:43 | RandomNumberGeneration | | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | | jca/Nonce.java:112:16:112:33 | Constant | | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | @@ -1230,7 +1203,6 @@ | jca/SignEncryptCombinations.java:92:44:92:62 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:92:44:92:62 | ModeOfOperation | | jca/SignEncryptCombinations.java:92:44:92:62 | PaddingAlgorithm | -| jca/SignEncryptCombinations.java:94:9:94:28 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:96:42:96:44 | Key | | jca/SignEncryptCombinations.java:96:47:96:50 | Nonce | @@ -1335,7 +1307,6 @@ | jca/SymmetricAlgorithm.java:51:44:51:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:51:44:51:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:51:44:51:62 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:53:9:53:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:53:38:53:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:55:42:55:44 | Key | | jca/SymmetricAlgorithm.java:55:47:55:50 | Nonce | @@ -1355,7 +1326,6 @@ | jca/SymmetricAlgorithm.java:94:44:94:65 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:94:44:94:65 | ModeOfOperation | | jca/SymmetricAlgorithm.java:94:44:94:65 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:96:9:96:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:96:38:96:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:98:42:98:44 | Key | | jca/SymmetricAlgorithm.java:98:47:98:52 | Nonce | @@ -1379,7 +1349,6 @@ | jca/SymmetricAlgorithm.java:146:44:146:65 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:146:44:146:65 | ModeOfOperation | | jca/SymmetricAlgorithm.java:146:44:146:65 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:148:9:148:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:148:38:148:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:150:42:150:44 | Key | | jca/SymmetricAlgorithm.java:150:47:150:52 | Nonce | @@ -1391,7 +1360,6 @@ | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | | jca/SymmetricAlgorithm.java:168:44:168:68 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:170:9:170:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:170:38:170:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:172:42:172:44 | Key | | jca/SymmetricAlgorithm.java:172:47:172:52 | Nonce | @@ -1399,7 +1367,6 @@ | jca/SymmetricAlgorithm.java:173:29:173:53 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:173:44:173:52 | Message | | jca/SymmetricAlgorithm.java:190:44:190:53 | KeyOperationAlgorithm | -| jca/SymmetricAlgorithm.java:192:9:192:43 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:192:38:192:42 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:194:42:194:44 | Key | | jca/SymmetricAlgorithm.java:194:47:194:72 | Nonce | @@ -1416,7 +1383,6 @@ | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:218:44:218:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:218:44:218:62 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:220:9:220:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:220:38:220:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:222:42:222:51 | Key | | jca/SymmetricAlgorithm.java:222:54:222:57 | Nonce | @@ -1439,7 +1405,6 @@ | jca/SymmetricAlgorithm.java:295:44:295:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:295:44:295:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:295:44:295:62 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:297:9:297:40 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:297:38:297:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:298:42:298:47 | Key | | jca/SymmetricAlgorithm.java:298:50:298:78 | Nonce | @@ -1455,7 +1420,6 @@ | jca/SymmetricAlgorithm.java:332:17:332:19 | Constant | | jca/SymmetricAlgorithm.java:333:16:333:31 | Key | | jca/SymmetricAlgorithm.java:333:16:333:31 | KeyGeneration | -| jca/SymmetricAlgorithm.java:345:9:345:42 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:345:38:345:41 | RandomNumberGeneration | | jca/SymmetricModesTest.java:48:52:48:56 | KeyOperationAlgorithm | | jca/SymmetricModesTest.java:49:17:49:19 | Constant | @@ -1476,7 +1440,6 @@ | jca/SymmetricModesTest.java:79:44:79:63 | KeyOperationAlgorithm | | jca/SymmetricModesTest.java:79:44:79:63 | ModeOfOperation | | jca/SymmetricModesTest.java:79:44:79:63 | PaddingAlgorithm | -| jca/SymmetricModesTest.java:81:9:81:40 | RandomNumberGeneration | | jca/SymmetricModesTest.java:81:38:81:39 | RandomNumberGeneration | | jca/SymmetricModesTest.java:83:42:83:44 | Key | | jca/SymmetricModesTest.java:83:47:83:52 | Nonce | @@ -1504,7 +1467,6 @@ | jca/UniversalFlowTest.java:28:29:28:47 | KeyOperationAlgorithm | | jca/UniversalFlowTest.java:28:29:28:47 | ModeOfOperation | | jca/UniversalFlowTest.java:28:29:28:47 | PaddingAlgorithm | -| jca/UniversalFlowTest.java:31:9:31:40 | RandomNumberGeneration | | jca/UniversalFlowTest.java:31:38:31:39 | RandomNumberGeneration | | jca/UniversalFlowTest.java:33:42:33:44 | Key | | jca/UniversalFlowTest.java:33:47:33:53 | Nonce | From 11e81395b5ba1668741a5a51b80cfd06ca4af22e Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 14:14:17 -0400 Subject: [PATCH 065/965] Crypto: Updated default flows to use taint tracking (this is needed to fix false positives in the unknown IV/Nonce query). Add the unknown IV/Nonce query and associated test cases. Fix unknown IV/Nonce query to focus on cases where the oepration isn't known or the operation subtype is not encrypt or wrap. --- java/ql/lib/experimental/quantum/Language.qll | 2 +- .../UnknownIVorNonceInitialization.ql | 17 ---- .../Analysis/UnknownIVorNonceSource.ql | 36 +++++++++ .../library-tests/quantum/node_edges.expected | 77 +++++++++++++------ .../InsecureIVorNonceSource.expected | 0 .../InsecureIVorNonceSource.java | 20 ++--- .../InsecureIVorNonceSource.qlref | 0 .../UnknownIVorNonceSource.expected | 2 + .../UnknownIVorNonceSource.qlref | 4 + 9 files changed, 108 insertions(+), 50 deletions(-) delete mode 100644 java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql create mode 100644 java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql rename java/ql/test/experimental/query-tests/quantum/{InsecureNonceSource => InsecureOrUnknownNonceSource}/InsecureIVorNonceSource.expected (100%) rename java/ql/test/experimental/query-tests/quantum/{InsecureNonceSource => InsecureOrUnknownNonceSource}/InsecureIVorNonceSource.java (95%) rename java/ql/test/experimental/query-tests/quantum/{InsecureNonceSource => InsecureOrUnknownNonceSource}/InsecureIVorNonceSource.qlref (100%) create mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 7d7488244a9..534ea2e1b37 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -230,7 +230,7 @@ module ArtifactFlowConfig implements DataFlow::ConfigSig { module GenericDataSourceFlow = TaintTracking::Global; -module ArtifactFlow = DataFlow::Global; +module ArtifactFlow = TaintTracking::Global; // Import library-specific modeling import JCA diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql b/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql deleted file mode 100644 index b2ef2ca4e56..00000000000 --- a/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceInitialization.ql +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @name Unknown nonce/iv initialization - * @id java/quantum/unknown-iv-or-nonce-initialization - * @description A nonce/iv is generated from a source that is not secure. Failure to initialize - * an IV or nonce properly can lead to vulnerabilities such as replay attacks or key recovery. - * @kind problem - * @problem.severity error - * @precision high - * @tags quantum - * experimental - */ - -import experimental.quantum.Language - -from Crypto::NonceArtifactNode nonce -where exists(nonce.getSourceNode()) -select nonce, "Unknown (unobserved) IV/Nonce initialization." diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql b/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql new file mode 100644 index 00000000000..fdd04f7f217 --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql @@ -0,0 +1,36 @@ +/** + * @name Unknown nonce/iv source + * @id java/quantum/unknown-iv-or-nonce-source + * @description A nonce/iv is generated from a source that is not secure. Failure to initialize + * an IV or nonce properly can lead to vulnerabilities such as replay attacks or key recovery. + * IV may be unknown at a decryption operation (IV would be provided alongside the ciphertext). + * These cases are ignored. + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import experimental.quantum.Language + +from Crypto::NonceArtifactNode nonce, Crypto::NodeBase op, string msg +where + not exists(nonce.getSourceNode()) and + ( + // Nonce not associated with any known cipher operation, assume unknown as insecure + not exists(Crypto::CipherOperationNode o | o.getANonce() = nonce) and + op = nonce and + msg = + "Unknown IV/Nonce initialization source with no observed nonce usage (assuming could be for encryption)." + or + // Nonce associated cipher operation where the mode is not explicitly encryption + op.(Crypto::CipherOperationNode).getANonce() = nonce and + ( + op.(Crypto::CipherOperationNode).getKeyOperationSubtype() instanceof Crypto::TEncryptMode + or + op.(Crypto::CipherOperationNode).getKeyOperationSubtype() instanceof Crypto::TWrapMode + ) and + msg = "Unknown IV/Nonce initialization source at encryption operation $@" + ) +select nonce, msg, op, op.toString() diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 064f1203d6c..0be5a459da1 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -44,7 +44,7 @@ | jca/AesWrapAndPBEWith.java:143:28:143:55 | KeyDerivation | Salt | jca/AesWrapAndPBEWith.java:141:66:141:69 | Salt | | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | Mode | jca/AesWrapAndPBEWith.java:146:44:146:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | Padding | jca/AesWrapAndPBEWith.java:146:44:146:65 | PaddingAlgorithm | -| jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | Source | jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | +| jca/AesWrapAndPBEWith.java:150:42:150:47 | Key | Source | jca/AesWrapAndPBEWith.java:143:28:143:55 | Key | | jca/AesWrapAndPBEWith.java:150:50:150:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:148:38:148:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | Algorithm | jca/AesWrapAndPBEWith.java:146:44:146:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:151:29:151:64 | EncryptOperation | Input | jca/AesWrapAndPBEWith.java:151:44:151:63 | Message | @@ -60,7 +60,7 @@ | jca/AesWrapAndPBEWith.java:170:28:170:55 | KeyDerivation | Salt | jca/AesWrapAndPBEWith.java:168:66:168:69 | Salt | | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | Mode | jca/AesWrapAndPBEWith.java:173:44:173:65 | ModeOfOperation | | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | Padding | jca/AesWrapAndPBEWith.java:173:44:173:65 | PaddingAlgorithm | -| jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | Source | jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | +| jca/AesWrapAndPBEWith.java:177:42:177:47 | Key | Source | jca/AesWrapAndPBEWith.java:170:28:170:55 | Key | | jca/AesWrapAndPBEWith.java:177:50:177:55 | Nonce | Source | jca/AesWrapAndPBEWith.java:175:38:175:39 | RandomNumberGeneration | | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | Algorithm | jca/AesWrapAndPBEWith.java:173:44:173:65 | KeyOperationAlgorithm | | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | Input | jca/AesWrapAndPBEWith.java:178:44:178:63 | Message | @@ -155,7 +155,7 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:44:246:52 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | Parameter | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | @@ -163,10 +163,13 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Message | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Nonce | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | KeyOperationOutput | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:171:38:171:39 | RandomNumberGeneration | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:174:29:174:56 | KeyOperationOutput | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | RandomNumberGeneration | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:223:29:223:53 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | @@ -174,7 +177,8 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Message | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Nonce | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | KeyOperationOutput | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:197:29:197:56 | KeyOperationOutput | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | KeyGeneration | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:320:52:320:56 | KeyOperationAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | KeyGeneration | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | Key | | jca/ChainedEncryptionTest.java:19:44:19:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:19:44:19:62 | ModeOfOperation | @@ -190,13 +194,13 @@ | jca/ChainedEncryptionTest.java:32:44:32:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:32:44:32:62 | ModeOfOperation | | jca/ChainedEncryptionTest.java:32:44:32:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:32:44:32:62 | PaddingAlgorithm | | jca/ChainedEncryptionTest.java:34:42:34:44 | Key | Source | jca/ChainedEncryptionTest.java:119:28:119:47 | Key | -| jca/ChainedEncryptionTest.java:34:47:34:50 | Nonce | Source | jca/ChainedEncryptionTest.java:34:47:34:50 | Nonce | +| jca/ChainedEncryptionTest.java:34:47:34:50 | Nonce | Source | jca/ChainedEncryptionTest.java:54:16:54:41 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | Algorithm | jca/ChainedEncryptionTest.java:32:44:32:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | Input | jca/ChainedEncryptionTest.java:35:31:35:40 | Message | | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | Key | jca/ChainedEncryptionTest.java:34:42:34:44 | Key | | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | Nonce | jca/ChainedEncryptionTest.java:34:47:34:50 | Nonce | | jca/ChainedEncryptionTest.java:35:16:35:41 | DecryptOperation | Output | jca/ChainedEncryptionTest.java:35:16:35:41 | KeyOperationOutput | -| jca/ChainedEncryptionTest.java:35:31:35:40 | Message | Source | jca/ChainedEncryptionTest.java:35:31:35:40 | Message | +| jca/ChainedEncryptionTest.java:35:31:35:40 | Message | Source | jca/ChainedEncryptionTest.java:54:16:54:41 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:40:44:40:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:43:42:43:44 | Key | Source | jca/ChainedEncryptionTest.java:124:31:124:53 | Key | @@ -206,17 +210,20 @@ | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | Key | jca/ChainedEncryptionTest.java:43:42:43:44 | Key | | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | Nonce | jca/ChainedEncryptionTest.java:43:47:43:72 | Nonce | | jca/ChainedEncryptionTest.java:44:29:44:53 | EncryptOperation | Output | jca/ChainedEncryptionTest.java:44:29:44:53 | KeyOperationOutput | -| jca/ChainedEncryptionTest.java:44:44:44:52 | Message | Source | jca/ChainedEncryptionTest.java:44:44:44:52 | Message | +| jca/ChainedEncryptionTest.java:44:44:44:52 | Message | Source | jca/ChainedEncryptionTest.java:21:38:21:39 | RandomNumberGeneration | +| jca/ChainedEncryptionTest.java:44:44:44:52 | Message | Source | jca/ChainedEncryptionTest.java:24:29:24:53 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:52:44:52:62 | KeyOperationAlgorithm | Mode | jca/ChainedEncryptionTest.java:52:44:52:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:52:44:52:62 | KeyOperationAlgorithm | Padding | jca/ChainedEncryptionTest.java:52:44:52:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:53:42:53:44 | Key | Source | jca/ChainedEncryptionTest.java:124:31:124:53 | Key | -| jca/ChainedEncryptionTest.java:53:47:53:72 | Nonce | Source | jca/ChainedEncryptionTest.java:53:47:53:72 | Nonce | +| jca/ChainedEncryptionTest.java:53:47:53:72 | Nonce | Source | jca/ChainedEncryptionTest.java:42:38:42:42 | RandomNumberGeneration | +| jca/ChainedEncryptionTest.java:53:47:53:72 | Nonce | Source | jca/ChainedEncryptionTest.java:44:29:44:53 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:54:16:54:41 | DecryptOperation | Algorithm | jca/ChainedEncryptionTest.java:52:44:52:62 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:54:16:54:41 | DecryptOperation | Input | jca/ChainedEncryptionTest.java:54:31:54:40 | Message | | jca/ChainedEncryptionTest.java:54:16:54:41 | DecryptOperation | Key | jca/ChainedEncryptionTest.java:53:42:53:44 | Key | | jca/ChainedEncryptionTest.java:54:16:54:41 | DecryptOperation | Nonce | jca/ChainedEncryptionTest.java:53:47:53:72 | Nonce | | jca/ChainedEncryptionTest.java:54:16:54:41 | DecryptOperation | Output | jca/ChainedEncryptionTest.java:54:16:54:41 | KeyOperationOutput | -| jca/ChainedEncryptionTest.java:54:31:54:40 | Message | Source | jca/ChainedEncryptionTest.java:54:31:54:40 | Message | +| jca/ChainedEncryptionTest.java:54:31:54:40 | Message | Source | jca/ChainedEncryptionTest.java:42:38:42:42 | RandomNumberGeneration | +| jca/ChainedEncryptionTest.java:54:31:54:40 | Message | Source | jca/ChainedEncryptionTest.java:44:29:44:53 | KeyOperationOutput | | jca/ChainedEncryptionTest.java:81:30:81:49 | KeyGeneration | Algorithm | jca/ChainedEncryptionTest.java:79:56:79:60 | KeyOperationAlgorithm | | jca/ChainedEncryptionTest.java:81:30:81:49 | KeyGeneration | Output | jca/ChainedEncryptionTest.java:81:30:81:49 | Key | | jca/ChainedEncryptionTest.java:85:30:85:52 | KeyGeneration | Algorithm | jca/ChainedEncryptionTest.java:83:59:83:68 | KeyOperationAlgorithm | @@ -313,7 +320,13 @@ | jca/Digest.java:121:36:121:51 | Message | Source | jca/Digest.java:117:35:117:46 | Parameter | | jca/Digest.java:140:44:140:62 | KeyOperationAlgorithm | Mode | jca/Digest.java:140:44:140:62 | ModeOfOperation | | jca/Digest.java:140:44:140:62 | KeyOperationAlgorithm | Padding | jca/Digest.java:140:44:140:62 | PaddingAlgorithm | -| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:141:42:141:44 | Key | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:55:23:55:66 | Digest | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:65:23:65:70 | Digest | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:75:23:75:62 | Digest | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:87:23:87:56 | Digest | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:99:23:99:50 | Key | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:109:23:109:57 | Digest | +| jca/Digest.java:141:42:141:44 | Key | Source | jca/Digest.java:121:23:121:52 | KeyOperationOutput | | jca/Digest.java:142:32:142:74 | EncryptOperation | Algorithm | jca/Digest.java:140:44:140:62 | KeyOperationAlgorithm | | jca/Digest.java:142:32:142:74 | EncryptOperation | Input | jca/Digest.java:142:47:142:73 | Message | | jca/Digest.java:142:32:142:74 | EncryptOperation | Key | jca/Digest.java:141:42:141:44 | Key | @@ -571,7 +584,7 @@ | jca/Encryption2.java:100:44:100:55 | Message | Source | jca/Encryption2.java:74:16:74:44 | SharedSecret | | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | Mode | jca/Encryption2.java:105:47:105:65 | ModeOfOperation | | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | Padding | jca/Encryption2.java:105:47:105:65 | PaddingAlgorithm | -| jca/Encryption2.java:109:45:109:50 | Key | Source | jca/Encryption2.java:109:45:109:50 | Key | +| jca/Encryption2.java:109:45:109:50 | Key | Source | jca/Encryption2.java:100:30:100:56 | Digest | | jca/Encryption2.java:109:53:109:59 | Nonce | Source | jca/Encryption2.java:107:38:107:39 | RandomNumberGeneration | | jca/Encryption2.java:110:32:110:65 | EncryptOperation | Algorithm | jca/Encryption2.java:105:47:105:65 | KeyOperationAlgorithm | | jca/Encryption2.java:110:32:110:65 | EncryptOperation | Input | jca/Encryption2.java:110:50:110:64 | Message | @@ -752,7 +765,7 @@ | jca/IVArtifact.java:156:44:156:62 | KeyOperationAlgorithm | Mode | jca/IVArtifact.java:156:44:156:62 | ModeOfOperation | | jca/IVArtifact.java:156:44:156:62 | KeyOperationAlgorithm | Padding | jca/IVArtifact.java:156:44:156:62 | PaddingAlgorithm | | jca/IVArtifact.java:158:42:158:44 | Key | Source | jca/IVArtifact.java:255:29:255:44 | Key | -| jca/IVArtifact.java:158:47:158:50 | Nonce | Source | jca/IVArtifact.java:158:47:158:50 | Nonce | +| jca/IVArtifact.java:158:47:158:50 | Nonce | Source | jca/IVArtifact.java:154:31:154:78 | Digest | | jca/IVArtifact.java:159:16:159:40 | EncryptOperation | Algorithm | jca/IVArtifact.java:156:44:156:62 | KeyOperationAlgorithm | | jca/IVArtifact.java:159:16:159:40 | EncryptOperation | Input | jca/IVArtifact.java:159:31:159:39 | Message | | jca/IVArtifact.java:159:16:159:40 | EncryptOperation | Key | jca/IVArtifact.java:158:42:158:44 | Key | @@ -835,7 +848,7 @@ | jca/KeyAgreementHybridCryptosystem.java:150:77:150:88 | Message | Source | jca/KeyAgreementHybridCryptosystem.java:70:16:70:34 | SharedSecret | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | Mode | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | Padding | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | +| jca/KeyAgreementHybridCryptosystem.java:156:42:156:50 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:150:33:150:89 | Digest | | jca/KeyAgreementHybridCryptosystem.java:156:53:156:78 | Nonce | Source | jca/KeyAgreementHybridCryptosystem.java:155:38:155:42 | RandomNumberGeneration | | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | EncryptOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:153:44:153:62 | KeyOperationAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:157:29:157:53 | EncryptOperation | Input | jca/KeyAgreementHybridCryptosystem.java:157:44:157:52 | Message | @@ -964,7 +977,7 @@ | jca/KeyDerivation1.java:244:43:244:58 | Message | Source | jca/KeyDerivation1.java:242:45:242:56 | Parameter | | jca/KeyDerivation1.java:249:70:249:88 | KeyOperationAlgorithm | Mode | jca/KeyDerivation1.java:249:70:249:88 | ModeOfOperation | | jca/KeyDerivation1.java:249:70:249:88 | KeyOperationAlgorithm | Padding | jca/KeyDerivation1.java:249:70:249:88 | PaddingAlgorithm | -| jca/KeyDerivation1.java:250:55:250:57 | Key | Source | jca/KeyDerivation1.java:250:55:250:57 | Key | +| jca/KeyDerivation1.java:250:55:250:57 | Key | Source | jca/KeyDerivation1.java:244:29:244:59 | Digest | | jca/KeyDerivation1.java:251:29:251:74 | EncryptOperation | Algorithm | jca/KeyDerivation1.java:249:70:249:88 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:251:29:251:74 | EncryptOperation | Input | jca/KeyDerivation1.java:251:44:251:73 | Message | | jca/KeyDerivation1.java:251:29:251:74 | EncryptOperation | Key | jca/KeyDerivation1.java:250:55:250:57 | Key | @@ -990,7 +1003,8 @@ | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | Salt | jca/KeyDerivation1.java:333:66:333:69 | Salt | | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | Mode | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | Padding | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | -| jca/KeyDerivation1.java:347:19:347:27 | Key | Source | jca/KeyDerivation1.java:347:19:347:27 | Key | +| jca/KeyDerivation1.java:347:19:347:27 | Key | Source | jca/KeyDerivation1.java:335:16:335:43 | Key | +| jca/KeyDerivation1.java:347:19:347:27 | Key | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Input | jca/KeyDerivation1.java:348:35:348:37 | Message | @@ -1000,7 +1014,7 @@ | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Output | jca/KeyDerivation1.java:348:22:348:38 | KeyOperationOutput | | jca/KeyDerivation1.java:348:35:348:37 | Message | Source | jca/KeyDerivation1.java:269:32:269:41 | Parameter | | jca/KeyDerivation1.java:348:35:348:37 | Message | Source | jca/KeyDerivation1.java:283:60:283:78 | Parameter | -| jca/KeyDerivation1.java:352:19:352:54 | Key | Source | jca/KeyDerivation1.java:352:19:352:54 | Key | +| jca/KeyDerivation1.java:352:19:352:54 | Key | Source | jca/KeyDerivation1.java:348:22:348:38 | KeyOperationOutput | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Input | jca/KeyDerivation1.java:353:35:353:61 | Message | @@ -1056,7 +1070,7 @@ | jca/KeyEncapsulation.java:124:31:124:49 | SharedSecret | Source | jca/KeyEncapsulation.java:124:31:124:49 | SharedSecret | | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | Mode | jca/KeyEncapsulation.java:133:47:133:65 | ModeOfOperation | | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | Padding | jca/KeyEncapsulation.java:133:47:133:65 | PaddingAlgorithm | -| jca/KeyEncapsulation.java:136:45:136:50 | Key | Source | jca/KeyEncapsulation.java:136:45:136:50 | Key | +| jca/KeyEncapsulation.java:136:45:136:50 | Key | Source | jca/KeyEncapsulation.java:124:31:124:49 | SharedSecret | | jca/KeyEncapsulation.java:136:53:136:81 | Nonce | Source | jca/KeyEncapsulation.java:135:38:135:39 | RandomNumberGeneration | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | Algorithm | jca/KeyEncapsulation.java:133:47:133:65 | KeyOperationAlgorithm | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | Input | jca/KeyEncapsulation.java:137:47:137:72 | Message | @@ -1308,6 +1322,8 @@ | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:62:28:62:34 | Key | Source | jca/SignEncryptCombinations.java:53:16:53:38 | Key | +| jca/SignEncryptCombinations.java:63:26:63:29 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:63:26:63:29 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | | jca/SignEncryptCombinations.java:63:26:63:29 | Message | Source | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | | jca/SignEncryptCombinations.java:64:16:64:31 | SignOperation | Algorithm | jca/SignEncryptCombinations.java:61:53:61:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:64:16:64:31 | SignOperation | HashAlgorithm | jca/SignEncryptCombinations.java:61:53:61:69 | HashAlgorithm | @@ -1317,12 +1333,18 @@ | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:69:30:69:35 | Key | Source | jca/SignEncryptCombinations.java:53:16:53:38 | Key | +| jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | +| jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | | jca/SignEncryptCombinations.java:70:26:70:29 | Message | Source | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | | jca/SignEncryptCombinations.java:71:16:71:47 | VerifyOperation | Algorithm | jca/SignEncryptCombinations.java:68:53:68:69 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:71:16:71:47 | VerifyOperation | HashAlgorithm | jca/SignEncryptCombinations.java:68:53:68:69 | HashAlgorithm | | jca/SignEncryptCombinations.java:71:16:71:47 | VerifyOperation | Input | jca/SignEncryptCombinations.java:70:26:70:29 | Message | | jca/SignEncryptCombinations.java:71:16:71:47 | VerifyOperation | Key | jca/SignEncryptCombinations.java:69:30:69:35 | Key | | jca/SignEncryptCombinations.java:71:16:71:47 | VerifyOperation | Signature | jca/SignEncryptCombinations.java:71:33:71:46 | SignatureInput | +| jca/SignEncryptCombinations.java:71:33:71:46 | SignatureInput | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | +| jca/SignEncryptCombinations.java:71:33:71:46 | SignatureInput | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:71:33:71:46 | SignatureInput | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | | jca/SignEncryptCombinations.java:71:33:71:46 | SignatureInput | Source | jca/SignEncryptCombinations.java:113:16:113:41 | KeyOperationOutput | | jca/SignEncryptCombinations.java:84:16:84:31 | KeyGeneration | Algorithm | jca/SignEncryptCombinations.java:82:52:82:56 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:84:16:84:31 | KeyGeneration | Output | jca/SignEncryptCombinations.java:84:16:84:31 | Key | @@ -1336,17 +1358,24 @@ | jca/SignEncryptCombinations.java:97:29:97:53 | EncryptOperation | Nonce | jca/SignEncryptCombinations.java:96:47:96:50 | Nonce | | jca/SignEncryptCombinations.java:97:29:97:53 | EncryptOperation | Output | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | | jca/SignEncryptCombinations.java:97:44:97:52 | Message | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | +| jca/SignEncryptCombinations.java:97:44:97:52 | Message | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:97:44:97:52 | Message | Source | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | | jca/SignEncryptCombinations.java:111:44:111:62 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:111:44:111:62 | ModeOfOperation | | jca/SignEncryptCombinations.java:111:44:111:62 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:111:44:111:62 | PaddingAlgorithm | | jca/SignEncryptCombinations.java:112:42:112:44 | Key | Source | jca/SignEncryptCombinations.java:84:16:84:31 | Key | -| jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | Source | jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | +| jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | +| jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | +| jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | Algorithm | jca/SignEncryptCombinations.java:111:44:111:62 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | Input | jca/SignEncryptCombinations.java:113:31:113:40 | Message | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | Key | jca/SignEncryptCombinations.java:112:42:112:44 | Key | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | Nonce | jca/SignEncryptCombinations.java:112:47:112:75 | Nonce | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | Output | jca/SignEncryptCombinations.java:113:16:113:41 | KeyOperationOutput | -| jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:113:31:113:40 | Message | +| jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:64:16:64:31 | SignatureOutput | +| jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | +| jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | | jca/SignEncryptCombinations.java:122:18:122:20 | Key | Source | jca/SignEncryptCombinations.java:84:16:84:31 | Key | @@ -1357,6 +1386,10 @@ | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Message | jca/SignEncryptCombinations.java:123:28:123:31 | Message | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Nonce | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Output | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | +| jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | +| jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | +| jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:113:16:113:41 | KeyOperationOutput | +| jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:123:28:123:31 | Message | Source | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | | jca/SignatureOperation.java:54:16:54:36 | Key | Algorithm | jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | | jca/SignatureOperation.java:54:16:54:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:52:61:52:65 | KeyOperationAlgorithm | @@ -1585,7 +1618,7 @@ | jca/SymmetricAlgorithm.java:215:42:215:50 | Message | Source | jca/SymmetricAlgorithm.java:212:50:212:65 | Parameter | | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:218:44:218:62 | ModeOfOperation | | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:218:44:218:62 | PaddingAlgorithm | -| jca/SymmetricAlgorithm.java:222:42:222:51 | Key | Source | jca/SymmetricAlgorithm.java:222:42:222:51 | Key | +| jca/SymmetricAlgorithm.java:222:42:222:51 | Key | Source | jca/SymmetricAlgorithm.java:215:29:215:51 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:222:54:222:57 | Nonce | Source | jca/SymmetricAlgorithm.java:220:38:220:39 | RandomNumberGeneration | | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | Algorithm | jca/SymmetricAlgorithm.java:218:44:218:62 | KeyOperationAlgorithm | | jca/SymmetricAlgorithm.java:223:29:223:53 | EncryptOperation | Input | jca/SymmetricAlgorithm.java:223:44:223:52 | Message | diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.expected rename to java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java similarity index 95% rename from java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java rename to java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java index 35f50842dc7..a638909410a 100644 --- a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.java +++ b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java @@ -11,7 +11,7 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from a byte array public byte[] encryptWithStaticIvByteArrayWithInitializer(byte[] key, byte[] plaintext) throws Exception { - byte[] iv = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; // $Source + byte[] iv = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); @@ -24,20 +24,20 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from zero-initialized byte array public byte[] encryptWithZeroStaticIvByteArray(byte[] key, byte[] plaintext) throws Exception { - byte[] iv = new byte[16]; // $Source + byte[] iv = new byte[16]; GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-initialization] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-source] cipher.update(plaintext); return cipher.doFinal(); } // BAD: AES-CBC with static IV from 1-initialized byte array public byte[] encryptWithStaticIvByteArray(byte[] key, byte[] plaintext) throws Exception { - byte[] iv = new byte[16]; // $Source + byte[] iv = new byte[16]; for (byte i = 0; i < iv.length; i++) { iv[i] = 1; } @@ -56,7 +56,7 @@ public class InsecureIVorNonceSource { byte[][] staticIvs = new byte[][] { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } - }; // $Source + }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); @@ -72,7 +72,7 @@ public class InsecureIVorNonceSource { byte[][] staticIvs = new byte[][] { new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } - }; // $Source + }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); @@ -86,15 +86,15 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from a zero-initialized multidimensional byte array public byte[] encryptWithOneOfStaticZeroIvs(byte[] key, byte[] plaintext) throws Exception { byte[][] ivs = new byte[][] { - new byte[8], // $Source - new byte[16] // $Source + new byte[8], + new byte[16] }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, ivs[1]); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-initialization] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-source] cipher.update(plaintext); return cipher.doFinal(); } @@ -191,7 +191,7 @@ public class InsecureIVorNonceSource { public byte[] generateInsecureRandomBytes(int numBytes) { Random random = new Random(); byte[] bytes = new byte[numBytes]; - random.nextBytes(bytes); // $Source + random.nextBytes(bytes); return bytes; } diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/InsecureNonceSource/InsecureIVorNonceSource.qlref rename to java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected new file mode 100644 index 00000000000..afa5f061cb0 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected @@ -0,0 +1,2 @@ +| InsecureIVorNonceSource.java:33:51:33:56 | Nonce | Unknown IV/Nonce initialization source. | +| InsecureIVorNonceSource.java:97:51:97:56 | Nonce | Unknown IV/Nonce initialization source. | diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref new file mode 100644 index 00000000000..9dfd0e28200 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Analysis/UnknownIVorNonceSource.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file From 7a57496c54f9765dd688241d8696e09bc9692cde Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 14:16:47 -0400 Subject: [PATCH 066/965] Crypto: Missing test update. --- .../UnknownIVorNonceSource.expected | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected index afa5f061cb0..3759e19826b 100644 --- a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected +++ b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected @@ -1,2 +1,2 @@ -| InsecureIVorNonceSource.java:33:51:33:56 | Nonce | Unknown IV/Nonce initialization source. | -| InsecureIVorNonceSource.java:97:51:97:56 | Nonce | Unknown IV/Nonce initialization source. | +| InsecureIVorNonceSource.java:33:51:33:56 | Nonce | Unknown IV/Nonce initialization source at encryption operation $@ | InsecureIVorNonceSource.java:35:16:35:31 | EncryptOperation | EncryptOperation | +| InsecureIVorNonceSource.java:97:51:97:56 | Nonce | Unknown IV/Nonce initialization source at encryption operation $@ | InsecureIVorNonceSource.java:99:16:99:31 | EncryptOperation | EncryptOperation | From f524de4afc2a73f841cebe5be9074159384074b5 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 8 Oct 2025 16:27:18 -0400 Subject: [PATCH 067/965] Crypto: Updating insecure iv/nonce to consider if an operation is known for it, and if so do not alert on non-secure random if it is tied to decryption --- .../Analysis/InsecureIVorNonceSource.ql | 36 ++++++++++++++++--- .../InsecureIVorNonceSource.expected | 14 ++++---- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql index 1e0dcadf10d..278372922b8 100644 --- a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql @@ -2,7 +2,10 @@ * @name Insecure nonce/iv (static value or weak random source) * @id java/quantum/insecure-iv-or-nonce * @description A nonce/iv is generated from a source that is not secure. This can lead to - * vulnerabilities such as replay attacks or key recovery. + * vulnerabilities such as replay attacks or key recovery. Insecure generation + * is any static nonce, or any known insecure source for a nonce/iv if + * the value is used for an encryption operation (decryption operations are ignored + * as the nonce/iv would be provided alongside the ciphertext). * @kind problem * @problem.severity error * @precision high @@ -12,8 +15,33 @@ import experimental.quantum.Language -from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src +from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src, Crypto::NodeBase op, string msg where nonce.getSourceNode() = src and - not src.asElement() instanceof SecureRandomnessInstance -select nonce, "Nonce or IV uses insecure or constant source $@", src, src.toString() + ( + // Case 1: Any constant nonce/iv is bad, regardless of how it is used + src.asElement() instanceof Crypto::GenericConstantSourceInstance and + op = nonce and // binding op by not using it + msg = "Nonce or IV uses constant source $@" + or + // Case 2: The nonce has a non-random source and there is no known operation for the nonce + // assume it is used for encryption + not src.asElement() instanceof SecureRandomnessInstance and + not src.asElement() instanceof Crypto::GenericConstantSourceInstance and + not exists(Crypto::CipherOperationNode o | o.getANonce() = nonce) and + op = nonce and // binding op, but not using it + msg = + "Nonce or IV uses insecure source $@ with no observed nonce usage (assuming could be for encryption)." + or + // Case 3: The nonce has a non-random source and is used in an encryption operation + not src.asElement() instanceof SecureRandomnessInstance and + not src.asElement() instanceof Crypto::GenericConstantSourceInstance and + op.(Crypto::CipherOperationNode).getANonce() = nonce and + ( + op.(Crypto::CipherOperationNode).getKeyOperationSubtype() instanceof Crypto::TEncryptMode + or + op.(Crypto::CipherOperationNode).getKeyOperationSubtype() instanceof Crypto::TWrapMode + ) and + msg = "Nonce or IV uses insecure source $@ at encryption operation $@" + ) +select nonce, msg, src, src.toString(), op, op.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected index 7cf062f5c02..5cb3fb117a6 100644 --- a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected +++ b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected @@ -1,7 +1,7 @@ -| InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:14:21:14:81 | Constant | Constant | -| InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:42:21:42:21 | Constant | Constant | -| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:57:13:57:62 | Constant | Constant | -| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:58:13:58:63 | Constant | Constant | -| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:73:13:73:73 | Constant | Constant | -| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:74:13:74:74 | Constant | Constant | -| InsecureIVorNonceSource.java:206:51:206:56 | Nonce | Nonce or IV uses insecure or constant source $@ | InsecureIVorNonceSource.java:194:26:194:30 | RandomNumberGeneration | RandomNumberGeneration | +| InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:14:21:14:81 | Constant | Constant | InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:42:21:42:21 | Constant | Constant | InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:57:13:57:62 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:58:13:58:63 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:73:13:73:73 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:74:13:74:74 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:206:51:206:56 | Nonce | Nonce or IV uses insecure source $@ at encryption operation $@ | InsecureIVorNonceSource.java:194:26:194:30 | RandomNumberGeneration | RandomNumberGeneration | InsecureIVorNonceSource.java:208:16:208:31 | EncryptOperation | EncryptOperation | From fe487e8bf0a301fd718c4ffad0704ec5814f0719 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 13 Jan 2025 21:46:00 +0100 Subject: [PATCH 068/965] java: add ThreadSafe query (P3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Raúl Pardo Co-authored-by: SimonJorgensenMancofi Co-authored-by: Bjørnar Haugstad JÃ¥tten --- .../semmle/code/java/ConflictingAccess.qll | 338 ++++++++++++++++++ .../Likely Bugs/Concurrency/ThreadSafe.qhelp | 33 ++ .../src/Likely Bugs/Concurrency/ThreadSafe.ql | 26 ++ .../2025-06-22-query-not-thread-safe.md | 4 + .../ThreadSafe/ThreadSafe.expected | 74 ++++ .../query-tests/ThreadSafe/ThreadSafe.qlref | 2 + .../query-tests/ThreadSafe/examples/App.java | 14 + .../query-tests/ThreadSafe/examples/C.java | 72 ++++ .../examples/FaultyTurnstileExample.java | 40 +++ .../ThreadSafe/examples/FlawedSemaphore.java | 30 ++ .../ThreadSafe/examples/LockCorrect.java | 51 +++ .../ThreadSafe/examples/LockExample.java | 156 ++++++++ .../ThreadSafe/examples/LoopyCallGraph.java | 33 ++ .../ThreadSafe/examples/SyncLstExample.java | 47 +++ .../ThreadSafe/examples/SyncStackExample.java | 39 ++ .../examples/SynchronizedAndLock.java | 21 ++ .../query-tests/ThreadSafe/examples/Test.java | 76 ++++ .../ThreadSafe/examples/Test2.java | 22 ++ .../ThreadSafe/examples/Test3Super.java | 17 + .../ThreadSafe/examples/ThreadSafe.java | 4 + .../ThreadSafe/examples/TurnstileExample.java | 23 ++ 21 files changed, 1122 insertions(+) create mode 100644 java/ql/lib/semmle/code/java/ConflictingAccess.qll create mode 100644 java/ql/src/Likely Bugs/Concurrency/ThreadSafe.qhelp create mode 100644 java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql create mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md create mode 100644 java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected create mode 100644 java/ql/test/query-tests/ThreadSafe/ThreadSafe.qlref create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/App.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/C.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/LockCorrect.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/LockExample.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/Test.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/Test2.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/Test3Super.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/ThreadSafe.java create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/TurnstileExample.java diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll new file mode 100644 index 00000000000..0d92438ae0f --- /dev/null +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -0,0 +1,338 @@ +/** + * Provides classes and predicates for detecting conflicting accesses in the sense of the Java Memory Model. + */ + +import java +import Concurrency + +/** + * Holds if `t` is the type of a lock. + * Currently a crude test of the type name. + */ +pragma[inline] +predicate isLockType(Type t) { t.getName().matches("%Lock%") } + +/** + * This module provides predicates, chiefly `locallyMonitors`, to check if a given expression is synchronized on a specific monitor. + */ +module Monitors { + /** + * A monitor is any object that is used to synchronize access to a shared resource. + * This includes locks as well as variables used in synchronized blocks (including `this`). + */ + newtype TMonitor = + /** Either a lock or a variable used in a synchronized block. */ + TVariableMonitor(Variable v) { isLockType(v.getType()) or locallySynchronizedOn(_, _, v) } or + /** An instance reference used as a monitor. */ + TInstanceMonitor(RefType thisType) { locallySynchronizedOnThis(_, thisType) } or + /** A class used as a monitor. */ + TClassMonitor(RefType classType) { locallySynchronizedOnClass(_, classType) } + + /** + * A monitor is any object that is used to synchronize access to a shared resource. + * This includes locks as well as variables used in synchronized blocks (including `this`). + */ + class Monitor extends TMonitor { + /** Gets the location of this monitor. */ + abstract Location getLocation(); + + /** Gets a textual representation of this element. */ + string toString() { result = "Monitor" } + } + + /** + * A variable used as a monitor. + * The variable is either a lock or is used in a synchronized block. + * E.g `synchronized (m) { ... }` or `m.lock();` + */ + class VariableMonitor extends Monitor, TVariableMonitor { + Variable v; + + VariableMonitor() { this = TVariableMonitor(v) } + + override Location getLocation() { result = v.getLocation() } + + override string toString() { result = "VariableMonitor(" + v.toString() + ")" } + + /** Gets the variable being used as a monitor. */ + Variable getVariable() { result = v } + } + + /** + * An instance reference used as a monitor. + * Either via `synchronized (this) { ... }` or by marking a non-static method as `synchronized`. + */ + class InstanceMonitor extends Monitor, TInstanceMonitor { + RefType thisType; + + InstanceMonitor() { this = TInstanceMonitor(thisType) } + + override Location getLocation() { result = thisType.getLocation() } + + override string toString() { result = "InstanceMonitor(" + thisType.toString() + ")" } + + /** Gets the instance reference being used as a monitor. */ + RefType getThisType() { result = thisType } + } + + /** + * A class used as a monitor. + * This is achieved by marking a static method as `synchronized`. + */ + class ClassMonitor extends Monitor, TClassMonitor { + RefType classType; + + ClassMonitor() { this = TClassMonitor(classType) } + + override Location getLocation() { result = classType.getLocation() } + + override string toString() { result = "ClassMonitor(" + classType.toString() + ")" } + + /** Gets the class being used as a monitor. */ + RefType getClassType() { result = classType } + } + + /** Holds if the expression `e` is synchronized on the monitor `m`. */ + predicate locallyMonitors(Expr e, Monitor m) { + exists(Variable v | v = m.(VariableMonitor).getVariable() | + locallyLockedOn(e, v) + or + locallySynchronizedOn(e, _, v) + ) + or + locallySynchronizedOnThis(e, m.(InstanceMonitor).getThisType()) + or + locallySynchronizedOnClass(e, m.(ClassMonitor).getClassType()) + } + + /** Holds if `localLock` refers to `lock`. */ + predicate represents(Field lock, Variable localLock) { + isLockType(lock.getType()) and + ( + localLock = lock + or + localLock.getInitializer() = lock.getAnAccess() + ) + } + + /** Holds if `e` is synchronized on the `Lock` `lock` by a locking call. */ + predicate locallyLockedOn(Expr e, Field lock) { + isLockType(lock.getType()) and + exists(Variable localLock, MethodCall lockCall, MethodCall unlockCall | + represents(lock, localLock) and + lockCall.getQualifier() = localLock.getAnAccess() and + lockCall.getMethod().getName() in ["lock", "lockInterruptibly", "tryLock"] and + unlockCall.getQualifier() = localLock.getAnAccess() and + unlockCall.getMethod().getName() = "unlock" + | + dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and + dominates(lockCall.getControlFlowNode(), e.getControlFlowNode()) and + postDominates(unlockCall.getControlFlowNode(), e.getControlFlowNode()) + ) + } +} + +/** Provides predicates, chiefly `isModifying`, to check if a given expression modifies a shared resource. */ +module Modification { + import semmle.code.java.dataflow.FlowSummary + + /** Holds if the field access `a` modifies a shared resource. */ + predicate isModifying(FieldAccess a) { + a.isVarWrite() + or + exists(Call c | c.(MethodCall).getQualifier() = a | isModifyingCall(c)) + or + exists(ArrayAccess aa, Assignment asa | aa.getArray() = a | asa.getDest() = aa) + } + + /** Holds if the call `c` modifies a shared resource. */ + predicate isModifyingCall(Call c) { + exists(SummarizedCallable sc, string output, string prefix | sc.getACall() = c | + sc.propagatesFlow(_, output, _, _) and + prefix = "Argument[this]" and + output.prefix(prefix.length()) = prefix + ) + } +} + +/** Holds if the class is annotated as `@ThreadSafe`. */ +Class annotatedAsThreadSafe() { result.getAnAnnotation().getType().getName() = "ThreadSafe" } + +/** Holds if the type `t` is thread-safe. */ +predicate isThreadSafeType(Type t) { + t.getName().matches(["Atomic%", "Concurrent%"]) + or + t.getName() in [ + "CopyOnWriteArraySet", "BlockingQueue", "ThreadLocal", + // this is a method that returns a thread-safe version of the collection used as parameter + "synchronizedMap", "Executor", "ExecutorService", "CopyOnWriteArrayList", + "LinkedBlockingDeque", "LinkedBlockingQueue", "CompletableFuture" + ] + or + t = annotatedAsThreadSafe() +} + +/** + * A field access that is exposed to potential data races. + * We require the field to be in a class that is annotated as `@ThreadSafe`. + */ +class ExposedFieldAccess extends FieldAccess { + ExposedFieldAccess() { + this.getField() = annotatedAsThreadSafe().getAField() and + not this.getField().isVolatile() and + // field is not a lock + not isLockType(this.getField().getType()) and + // field is not thread-safe + not isThreadSafeType(this.getField().getType()) and + not isThreadSafeType(this.getField().getInitializer().getType()) and + // access is not the initializer of the field + not this.(VarWrite).getASource() = this.getField().getInitializer() and + // access not in a constructor + not this.getEnclosingCallable() = this.getField().getDeclaringType().getAConstructor() and + // not a field on a local variable + not this.getQualifier+().(VarAccess).getVariable() instanceof LocalVariableDecl and + // not the variable mention in a synchronized statement + not this = any(SynchronizedStmt sync).getExpr() + } + + // LHS of assignments are excluded from the control flow graph, + // so we use the control flow node for the assignment itself instead. + override ControlFlowNode getControlFlowNode() { + // this is the LHS of an assignment, use the control flow node for the assignment + exists(Assignment asgn | asgn.getDest() = this | result = asgn.getControlFlowNode()) + or + // this is not the LHS of an assignment, use the default control flow node + not exists(Assignment asgn | asgn.getDest() = this) and + result = super.getControlFlowNode() + } +} + +/** Holds if the location of `a` is strictly before the location of `b`. */ +pragma[inline] +predicate orderedLocations(Location a, Location b) { + a.getStartLine() < b.getStartLine() + or + a.getStartLine() = b.getStartLine() and + a.getStartColumn() < b.getStartColumn() +} + +/** + * A class annotated as `@ThreadSafe`. + * Provides predicates to check for concurrency issues. + */ +class ClassAnnotatedAsThreadSafe extends Class { + ClassAnnotatedAsThreadSafe() { this = annotatedAsThreadSafe() } + + /** Holds if `a` and `b` are conflicting accesses to the same field and not monitored by the same monitor. */ + predicate unsynchronised(ExposedFieldAccess a, ExposedFieldAccess b) { + this.conflicting(a, b) and + this.publicAccess(_, a) and + this.publicAccess(_, b) and + not exists(Monitors::Monitor m | + this.monitors(a, m) and + this.monitors(b, m) + ) + } + + /** Holds if `a` is the earliest write to its field that is unsynchronized with `b`. */ + predicate unsynchronised_normalized(ExposedFieldAccess a, ExposedFieldAccess b) { + this.unsynchronised(a, b) and + // Eliminate double reporting by making `a` the earliest write to this field + // that is unsynchronized with `b`. + not exists(ExposedFieldAccess earlier_a | + earlier_a.getField() = a.getField() and + orderedLocations(earlier_a.getLocation(), a.getLocation()) + | + this.unsynchronised(earlier_a, b) + ) + } + + /** + * Holds if `a` and `b` are unsynchronized and both publicly accessible + * as witnessed by `witness_a` and `witness_b`. + */ + predicate witness(ExposedFieldAccess a, Expr witness_a, ExposedFieldAccess b, Expr witness_b) { + this.unsynchronised_normalized(a, b) and + this.publicAccess(witness_a, a) and + this.publicAccess(witness_b, b) and + // avoid double reporting + not exists(Expr better_witness_a | this.publicAccess(better_witness_a, a) | + orderedLocations(better_witness_a.getLocation(), witness_a.getLocation()) + ) and + not exists(Expr better_witness_b | this.publicAccess(better_witness_b, b) | + orderedLocations(better_witness_b.getLocation(), witness_b.getLocation()) + ) + } + + /** + * Actions `a` and `b` are conflicting iff + * they are field access operations on the same field and + * at least one of them is a write. + */ + predicate conflicting(ExposedFieldAccess a, ExposedFieldAccess b) { + // We allow a = b, since they could be executed on different threads + // We are looking for two operations: + // - on the same non-volatile field + a.getField() = b.getField() and + // - on this class + a.getField() = this.getAField() and + // - where at least one is a write + // wlog we assume that is `a` + // We use a slightly more inclusive definition than simply `a.isVarWrite()` + Modification::isModifying(a) and + // Avoid reporting both `(a, b)` and `(b, a)` by choosing the tuple + // where `a` appears before `b` in the source code. + ( + ( + Modification::isModifying(b) and + a != b + ) + implies + orderedLocations(a.getLocation(), b.getLocation()) + ) + } + + /** Holds if `a` can be reached by a path from a public method, and all such paths are monitored by `monitor`. */ + predicate monitors(ExposedFieldAccess a, Monitors::Monitor monitor) { + forex(Method m | this.providesAccess(m, _, a) and m.isPublic() | + this.monitorsVia(m, a, monitor) + ) + } + + /** Holds if `a` can be reached by a path from a public method and `e` is the expression in that method that stsarts the path. */ + predicate publicAccess(Expr e, ExposedFieldAccess a) { + exists(Method m | m.isPublic() | this.providesAccess(m, e, a)) + } + + /** + * Holds if a call to method `m` can cause an access of `a` and `e` is the expression inside `m` that leads to that access. + * `e` will either be `a` itself or a method call that leads to `a`. + */ + predicate providesAccess(Method m, Expr e, ExposedFieldAccess a) { + m = this.getAMethod() and + ( + a.getEnclosingCallable() = m and + e = a + or + exists(MethodCall c | c.getEnclosingCallable() = m | + this.providesAccess(c.getCallee(), _, a) and + e = c + ) + ) + } + + /** Holds if all paths from `m` to `a` are monitored by `monitor`. */ + predicate monitorsVia(Method m, ExposedFieldAccess a, Monitors::Monitor monitor) { + m = this.getAMethod() and + this.providesAccess(m, _, a) and + (a.getEnclosingCallable() = m implies Monitors::locallyMonitors(a, monitor)) and + forall(MethodCall c | + c.getEnclosingCallable() = m and + this.providesAccess(c.getCallee(), _, a) + | + Monitors::locallyMonitors(c, monitor) + or + this.monitorsVia(c.getCallee(), a, monitor) + ) + } +} diff --git a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.qhelp b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.qhelp new file mode 100644 index 00000000000..cafcb3cdd79 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.qhelp @@ -0,0 +1,33 @@ + + + + + +

    +In a thread-safe class, all field accesses that can be caused by calls to public methods must be properly synchronized.

    + +
    + + +

    +Protect the field access with a lock. Alternatively mark the field as volatile if the write operation is atomic. You can also choose to use a data type that guarantees atomic access. If the field is immutable, mark it as final.

    + +
    + + + + +
  • + Java Language Specification, chapter 17: + Threads and Locks. +
  • +
  • + Java concurrency package: + java.util.concurrent. +
  • + + +
    +
    diff --git a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql new file mode 100644 index 00000000000..1498274131e --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql @@ -0,0 +1,26 @@ +/** + * @name Not thread-safe + * @description This class is not thread-safe. It is annotated as `@ThreadSafe`, but it has a + * conflicting access to a field that is not synchronized with the same monitor. + * @kind problem + * @problem.severity warning + * @precision high + * @id java/not-threadsafe + * @tags quality + * reliability + * concurrency + */ + +import java +import semmle.code.java.ConflictingAccess + +from + ClassAnnotatedAsThreadSafe cls, FieldAccess modifyingAccess, Expr witness_modifyingAccess, + FieldAccess conflictingAccess, Expr witness_conflictingAccess +where + cls.witness(modifyingAccess, witness_modifyingAccess, conflictingAccess, witness_conflictingAccess) +select modifyingAccess, + "This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor.", + witness_modifyingAccess, "this expression", conflictingAccess, "this field access", + witness_conflictingAccess, "this expression" +// select c, a.getField() diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md new file mode 100644 index 00000000000..d5dd0744609 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected new file mode 100644 index 00000000000..72d0bbb1a3a --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -0,0 +1,74 @@ +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:14:9:14:14 | this.y | this field access | examples/C.java:14:9:14:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:15:9:15:14 | this.y | this field access | examples/C.java:15:9:15:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:16:9:16:14 | this.y | this field access | examples/C.java:16:9:16:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:16:18:16:23 | this.y | this field access | examples/C.java:16:18:16:23 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:20:9:20:14 | this.y | this field access | examples/C.java:20:9:20:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:21:9:21:14 | this.y | this field access | examples/C.java:21:9:21:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:22:9:22:14 | this.y | this field access | examples/C.java:22:9:22:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:22:18:22:23 | this.y | this field access | examples/C.java:22:18:22:23 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:26:9:26:14 | this.y | this field access | examples/C.java:26:9:26:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:30:13:30:13 | y | this field access | examples/C.java:30:13:30:13 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:33:9:33:9 | y | this field access | examples/C.java:33:9:33:9 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:39:9:39:14 | this.y | this field access | examples/C.java:39:9:39:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:40:9:40:14 | this.y | this field access | examples/C.java:40:9:40:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:41:9:41:14 | this.y | this field access | examples/C.java:41:9:41:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:41:18:41:23 | this.y | this field access | examples/C.java:41:18:41:23 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:53:9:53:14 | this.y | this field access | examples/C.java:53:9:53:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:54:9:54:14 | this.y | this field access | examples/C.java:54:9:54:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:55:9:55:14 | this.y | this field access | examples/C.java:55:9:55:14 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:55:18:55:23 | this.y | this field access | examples/C.java:55:18:55:23 | this.y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:61:9:61:9 | y | this field access | examples/C.java:61:9:61:9 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:62:9:62:9 | y | this field access | examples/C.java:62:9:62:9 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:63:9:63:9 | y | this field access | examples/C.java:63:9:63:9 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:63:13:63:13 | y | this field access | examples/C.java:63:13:63:13 | y | this expression | +| examples/FaultyTurnstileExample.java:13:5:13:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FaultyTurnstileExample.java:13:5:13:9 | count | this expression | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this field access | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this expression | +| examples/FaultyTurnstileExample.java:30:5:30:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FaultyTurnstileExample.java:30:5:30:9 | count | this expression | examples/FaultyTurnstileExample.java:36:5:36:9 | count | this field access | examples/FaultyTurnstileExample.java:36:5:36:9 | count | this expression | +| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:15:14:15:18 | state | this field access | examples/FlawedSemaphore.java:15:14:15:18 | state | this expression | +| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:18:7:18:11 | state | this field access | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | +| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:26:7:26:11 | state | this field access | examples/FlawedSemaphore.java:26:7:26:11 | state | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:38:5:38:10 | length | this field access | examples/LockExample.java:38:5:38:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:39:13:39:18 | length | this field access | examples/LockExample.java:39:13:39:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:44:5:44:10 | length | this field access | examples/LockExample.java:44:5:44:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:45:13:45:18 | length | this field access | examples/LockExample.java:45:13:45:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:49:5:49:10 | length | this field access | examples/LockExample.java:49:5:49:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:57:5:57:10 | length | this field access | examples/LockExample.java:57:5:57:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:58:13:58:18 | length | this field access | examples/LockExample.java:58:13:58:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:62:5:62:10 | length | this field access | examples/LockExample.java:62:5:62:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:65:13:65:18 | length | this field access | examples/LockExample.java:65:13:65:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:69:5:69:10 | length | this field access | examples/LockExample.java:69:5:69:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:71:13:71:18 | length | this field access | examples/LockExample.java:71:13:71:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:76:5:76:10 | length | this field access | examples/LockExample.java:76:5:76:10 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:79:13:79:18 | length | this field access | examples/LockExample.java:79:13:79:18 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:127:7:127:12 | length | this field access | examples/LockExample.java:127:7:127:12 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:136:7:136:12 | length | this field access | examples/LockExample.java:136:7:136:12 | length | this expression | +| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:142:7:142:12 | length | this field access | examples/LockExample.java:142:7:142:12 | length | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:39:5:39:11 | content | this field access | examples/LockExample.java:39:5:39:11 | content | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:45:5:45:11 | content | this field access | examples/LockExample.java:45:5:45:11 | content | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:58:5:58:11 | content | this field access | examples/LockExample.java:58:5:58:11 | content | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:65:5:65:11 | content | this field access | examples/LockExample.java:65:5:65:11 | content | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:71:5:71:11 | content | this field access | examples/LockExample.java:71:5:71:11 | content | this expression | +| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:79:5:79:11 | content | this field access | examples/LockExample.java:79:5:79:11 | content | this expression | +| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:25:13:25:18 | length | this field access | examples/LockExample.java:25:13:25:18 | length | this expression | +| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:32:13:32:18 | length | this field access | examples/LockExample.java:32:13:32:18 | length | this expression | +| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:52:13:52:18 | length | this field access | examples/LockExample.java:52:13:52:18 | length | this expression | +| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:150:7:150:12 | length | this field access | examples/LockExample.java:150:7:150:12 | length | this expression | +| examples/LockExample.java:39:5:39:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:39:5:39:11 | content | this expression | examples/LockExample.java:52:5:52:11 | content | this field access | examples/LockExample.java:52:5:52:11 | content | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this field access | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:112:5:112:21 | notRelatedToOther | this field access | examples/LockExample.java:112:5:112:21 | notRelatedToOther | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:119:5:119:21 | notRelatedToOther | this field access | examples/LockExample.java:119:5:119:21 | notRelatedToOther | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this field access | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this field access | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this expression | +| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this field access | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | +| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:100:5:100:21 | notRelatedToOther | this field access | examples/LockExample.java:100:5:100:21 | notRelatedToOther | this expression | +| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this field access | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this expression | +| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this field access | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this expression | +| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this field access | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this expression | +| examples/LoopyCallGraph.java:25:5:25:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | examples/LoopyCallGraph.java:25:5:25:9 | count | this field access | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | +| examples/LoopyCallGraph.java:25:5:25:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | examples/LoopyCallGraph.java:31:5:31:9 | count | this field access | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | +| examples/SyncLstExample.java:40:5:40:7 | lst | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncLstExample.java:40:5:40:7 | lst | this expression | examples/SyncLstExample.java:45:5:45:7 | lst | this field access | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | +| examples/SyncStackExample.java:32:5:32:7 | stc | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncStackExample.java:32:5:32:7 | stc | this expression | examples/SyncStackExample.java:37:5:37:7 | stc | this field access | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | +| examples/SynchronizedAndLock.java:14:9:14:14 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SynchronizedAndLock.java:14:9:14:14 | length | this expression | examples/SynchronizedAndLock.java:19:9:19:14 | length | this field access | examples/SynchronizedAndLock.java:19:9:19:14 | length | this expression | +| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:52:5:52:10 | this.y | this field access | examples/Test.java:24:5:24:18 | setYPrivate(...) | this expression | +| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:60:5:60:10 | this.y | this field access | examples/Test.java:60:5:60:10 | this.y | this expression | +| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:74:5:74:10 | this.y | this field access | examples/Test.java:74:5:74:10 | this.y | this expression | +| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:74:14:74:14 | y | this field access | examples/Test.java:74:14:74:14 | y | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.qlref b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.qlref new file mode 100644 index 00000000000..eba9a674554 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Concurrency/ThreadSafe.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/query-tests/ThreadSafe/examples/App.java b/java/ql/test/query-tests/ThreadSafe/examples/App.java new file mode 100644 index 00000000000..1c085ee6179 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/App.java @@ -0,0 +1,14 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package examples; + +public class App { + public String getGreeting() { + return "Hello World!"; + } + + public static void main(String[] args) { + System.out.println(new App().getGreeting()); + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/C.java b/java/ql/test/query-tests/ThreadSafe/examples/C.java new file mode 100644 index 00000000000..51201d4f6be --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/C.java @@ -0,0 +1,72 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class C { + + private int y; + private Lock lock = new ReentrantLock(); + private Lock lock2 = new ReentrantLock(); + + public void m() { + this.y = 0; // $ Alert + this.y += 1; + this.y = this.y - 1; + } + + public void n4() { + this.y = 0; + this.y += 1; + this.y = this.y - 1; + } + + public void setY(int y) { + this.y = y; + } + + public void test() { + if (y == 0) { + lock.lock(); + } + y = 0; + lock.unlock(); + } + + public void n() { + this.lock.lock(); + this.y = 0; + this.y += 1; + this.y = this.y - 1; + this.lock.unlock(); + } + + public void callTestLock2() { + lock2.lock(); + setY(1); + lock2.unlock(); + } + + public void n2() { + lock.lock(); + this.y = 0; + this.y += 1; + this.y = this.y - 1; + lock.unlock(); + } + + public void n3() { + lock.lock(); + y = 0; + y += 1; + y = y - 1; + lock.unlock(); + } + + public void callTest() { + lock.lock(); + setY(1); + lock.unlock(); + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java b/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java new file mode 100644 index 00000000000..adbd74473e4 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java @@ -0,0 +1,40 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +class FaultyTurnstileExample { + private Lock lock = new ReentrantLock(); + private int count = 0; + + public void inc() { + lock.lock(); + count++; // $ Alert + lock.unlock(); + } + + public void dec() { + count--; + } +} + +@ThreadSafe +class FaultyTurnstileExample2 { + private Lock lock1 = new ReentrantLock(); + private Lock lock2 = new ReentrantLock(); + private int count = 0; + + public void inc() { + lock1.lock(); + count++; // $ Alert + lock1.unlock(); + } + + public void dec() { + lock2.lock(); + count--; + lock2.unlock(); + } +} + diff --git a/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java b/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java new file mode 100644 index 00000000000..405edbe7058 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java @@ -0,0 +1,30 @@ +package examples; + +@ThreadSafe +public class FlawedSemaphore { + private final int capacity; + private int state; + + public FlawedSemaphore(int c) { + capacity = c; + state = 0; + } + + public void acquire() { + try { + while (state == capacity) { + this.wait(); + } + state++; // $ Alert + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void release() { + synchronized (this) { + state--; // State can become negative + this.notifyAll(); + } + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LockCorrect.java b/java/ql/test/query-tests/ThreadSafe/examples/LockCorrect.java new file mode 100644 index 00000000000..9c6c5abce56 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/LockCorrect.java @@ -0,0 +1,51 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class LockCorrect { + private Lock lock1 = new ReentrantLock(); + + private int length = 0; + private int notRelatedToOther = 10; + private int[] content = new int[10]; + private int thisSynchronized = 0; + + public void add(int value) { + lock1.lock(); + length++; + content[length] = value; + lock1.unlock(); + } + + public void removeCorrect() { + lock1.lock(); + content[length] = 0; + length--; + lock1.unlock(); + } + + public void synchronizedOnLock1() { + synchronized(lock1) { + notRelatedToOther++; + } + } + + public void synchronizedOnLock12() { + synchronized(lock1) { + notRelatedToOther++; + } + } + + public synchronized void x() { + thisSynchronized++; + } + + public void x1() { + synchronized(this) { + thisSynchronized++; + } + } + +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java new file mode 100644 index 00000000000..92886bbb5ff --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java @@ -0,0 +1,156 @@ +// This example shows that we only get one alert "per concurrency problem": +// For each problematic variable, we get one alert at the earliest conflicting write. +// If the variable is involved in several different monitors, we get an alert for each monitor that +// is not correctly used. +// A single alert can have many related locations, since each conflicting access which is not +// prpoerly synchronized is a related location. +// This leads to many lines in the .expected file. +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class LockExample { + private Lock lock1 = new ReentrantLock(); + private Lock lock2 = new ReentrantLock(); + + private int length = 0; + private int notRelatedToOther = 10; + private int[] content = new int[10]; + + public void add(int value) { + lock1.lock(); + length++; // $ Alert + content[length] = value; // $ Alert + lock1.unlock(); + } + + public void removeCorrect() { + lock1.lock(); + length--; + content[length] = 0; + lock1.unlock(); + } + + public void notTheSameLockAsAdd() { // use locks, but different ones + lock2.lock(); + length--; // $ Alert + content[length] = 0; // $ Alert + lock2.unlock(); + } + + public void noLock() { // no locks + length--; + content[length] = 0; + } + + public void fieldUpdatedOutsideOfLock() { // adjusts length without lock + length--; + + lock1.lock(); + content[length] = 0; + lock1.unlock(); + } + + public synchronized void synchronizedLock() { // no locks, but with synchronized + length--; + content[length] = 0; + } + + public void onlyLocked() { // never unlocked, only locked + length--; + + lock1.lock(); + content[length] = 0; + } + + public void onlyUnlocked() { // never locked, only unlocked + length--; + + content[length] = 0; + lock1.unlock(); + } + + public void notSameLock() { + length--; + + lock2.lock();// Not the same lock + content[length] = 0; + lock1.unlock(); + } + + public void updateCount() { + lock2.lock(); + notRelatedToOther++; // $ Alert + lock2.unlock(); + } + + public void updateCountTwiceCorrect() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + lock1.lock(); + notRelatedToOther++; // $ Alert + lock1.unlock(); + } + + public void updateCountTwiceDifferentLocks() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + lock1.lock(); + notRelatedToOther++; + lock2.unlock(); + } + + public void updateCountTwiceLock() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + lock1.lock(); + notRelatedToOther++; + } + + public void updateCountTwiceUnLock() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + notRelatedToOther++; + lock1.unlock(); + } + + public void synchronizedNonRelatedOutside() { + notRelatedToOther++; + + synchronized(this) { + length++; + } + } + + public void synchronizedNonRelatedOutside2() { + int x = 0; + x++; + + synchronized(this) { + length++; + } + } + + public void synchronizedNonRelatedOutside3() { + synchronized(this) { + length++; + } + + notRelatedToOther = 1; + } + + public void synchronizedNonRelatedOutside4() { + synchronized(lock1) { + length++; + } + + notRelatedToOther = 1; + } + +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java b/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java new file mode 100644 index 00000000000..595aea014f2 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java @@ -0,0 +1,33 @@ +package examples; + +import java.util.Random; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class LoopyCallGraph { + private Lock lock = new ReentrantLock(); + private int count = 0; + private Random random = new Random(); + + public void entry() { + if (random.nextBoolean()) { + increase(); // this looks like an unprotected path to a call to dec() + } else { + lock.lock(); + dec(); + lock.unlock(); + } + } + + private void increase() { + lock.lock(); + count = 10; //$ SPURIOUS: Alert + lock.unlock(); + entry(); // this looks like an unprotected path to a call to dec() + } + + private void dec() { + count--; + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java b/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java new file mode 100644 index 00000000000..63f6985840c --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java @@ -0,0 +1,47 @@ +package examples; + +import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class SyncLstExample { + private Lock lock = new ReentrantLock(); + private List lst; + + public SyncLstExample(List lst) { + this.lst = lst; + } + + public void add(T item) { + lock.lock(); + lst.add(item); + lock.unlock(); + } + + public void remove(int i) { + lock.lock(); + lst.remove(i); + lock.unlock(); + } +} + +@ThreadSafe +class FaultySyncLstExample { + private Lock lock = new ReentrantLock(); + private List lst; + + public FaultySyncLstExample(List lst) { + this.lst = lst; + } + + public void add(T item) { + lock.lock(); + lst.add(item); // $ Alert + lock.unlock(); + } + + public void remove(int i) { + lst.remove(i); + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java b/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java new file mode 100644 index 00000000000..62eabde4b7d --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java @@ -0,0 +1,39 @@ +package examples; + +import java.util.Stack; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class SyncStackExample { + private Lock lock = new ReentrantLock(); + private Stack stc = new Stack(); + + public void push(T item) { + lock.lock(); + stc.push(item); + lock.unlock(); + } + + public void pop() { + lock.lock(); + stc.pop(); + lock.unlock(); + } +} + +@ThreadSafe +class FaultySyncStackExample { + private Lock lock = new ReentrantLock(); + private Stack stc = new Stack(); + + public void push(T item) { + lock.lock(); + stc.push(item); // $ Alert + lock.unlock(); + } + + public void pop() { + stc.pop(); + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java b/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java new file mode 100644 index 00000000000..fc0aa038b0e --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java @@ -0,0 +1,21 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class SynchronizedAndLock { + private Lock lock = new ReentrantLock(); + + private int length = 0; + + public void add(int value) { + lock.lock(); + length++; // $ Alert + lock.unlock(); + } + + public synchronized void subtract() { + length--; + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Test.java b/java/ql/test/query-tests/ThreadSafe/examples/Test.java new file mode 100644 index 00000000000..55fef174fc5 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/Test.java @@ -0,0 +1,76 @@ +package examples; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class Test { + /** + * Escaping field due to public visuability. + */ + int publicField; + + private int y; + final int immutableField = 1; + + // As of the below examples with synchronized as well. Except the incorretly placed lock. + + private Lock lock = new ReentrantLock(); + + /** + * Calls the a method where y field escapes. + * @param y + */ + public void setYAgainInCorrect(int t) { + setYPrivate(t); + } + + /** + * Locks the method where y field escapes. + * @param y + */ + public void setYAgainCorrect(int y) { + lock.lock(); + setYPrivate(y); + lock.unlock(); + } + + /** + * No escaping y field. Locks the y before assignment. + * @param y + */ + public void setYCorrect(int y) { + lock.lock(); + this.y = y; // $ Alert + lock.unlock(); + } + + /** + * No direct escaping, since it method is private. Only escaping if another public method uses this. + * @param y + */ + private void setYPrivate(int y) { + this.y = y; + } + + /** + * Incorretly locks y. + * @param y + */ + public void setYWrongLock(int y) { + this.y = y; + lock.lock(); + lock.unlock(); + } + + public synchronized int getImmutableField() { + return immutableField; + } + + public synchronized int getImmutableField2() { + return immutableField; + } + + public void testMethod() { + this.y = y + 2; + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Test2.java b/java/ql/test/query-tests/ThreadSafe/examples/Test2.java new file mode 100644 index 00000000000..731af5ecf67 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/Test2.java @@ -0,0 +1,22 @@ +package examples; + +import java.util.ArrayList; + +// Note: Not marked as thread-safe +// We inherit from this in Test3Super.java +public class Test2 { + int x; + protected ArrayList lst = new ArrayList<>(); + + public Test2() { + this.x = 0; + } + + public void changeX() { + this.x = x + 1; + } + + public void changeLst() { + lst.add("Hello"); + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Test3Super.java b/java/ql/test/query-tests/ThreadSafe/examples/Test3Super.java new file mode 100644 index 00000000000..5a48e20bc05 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/Test3Super.java @@ -0,0 +1,17 @@ +package examples; + +@ThreadSafe +public class Test3Super extends Test2 { // We might want an alert here for the inherited unsafe methods. + + public Test3Super() { + super.x = 0; + } + + public void y() { + super.x = 0; //$ MISSING: Alert + } + + public void yLst() { + super.lst.add("Hello!"); //$ MISSING: Alert + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafe.java b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafe.java new file mode 100644 index 00000000000..fc0a645c442 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafe.java @@ -0,0 +1,4 @@ +package examples; + +public @interface ThreadSafe { +} \ No newline at end of file diff --git a/java/ql/test/query-tests/ThreadSafe/examples/TurnstileExample.java b/java/ql/test/query-tests/ThreadSafe/examples/TurnstileExample.java new file mode 100644 index 00000000000..90ea98a77d9 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/TurnstileExample.java @@ -0,0 +1,23 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class TurnstileExample { + private Lock lock = new ReentrantLock(); + private int count = 0; + + public void inc() { + Lock l = lock; + l.lock(); + count++; + l.unlock(); + } + + public void dec() { + lock.lock(); + count--; + lock.unlock(); + } +} \ No newline at end of file From 328b53576a67c1eff6aabf2afab7a1bb2d271fa0 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 15 May 2025 13:06:38 +0200 Subject: [PATCH 069/965] java: add SafePublication query (P2) --- .../Concurrency/SafePublication.java | 11 +++ .../Concurrency/SafePublication.qhelp | 62 +++++++++++++ .../Concurrency/SafePublication.ql | 93 +++++++++++++++++++ .../Concurrency/UnsafePublication.java | 12 +++ .../2025-06-22-query-safe-publication.md | 4 + .../SafePublication/SafePublication.expected | 7 ++ .../SafePublication/SafePublication.java | 29 ++++++ .../SafePublication/SafePublication.qlref | 2 + .../SafePublication/ThreadSafe.java | 2 + 9 files changed, 222 insertions(+) create mode 100644 java/ql/src/Likely Bugs/Concurrency/SafePublication.java create mode 100644 java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp create mode 100644 java/ql/src/Likely Bugs/Concurrency/SafePublication.ql create mode 100644 java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java create mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md create mode 100644 java/ql/test/query-tests/SafePublication/SafePublication.expected create mode 100644 java/ql/test/query-tests/SafePublication/SafePublication.java create mode 100644 java/ql/test/query-tests/SafePublication/SafePublication.qlref create mode 100644 java/ql/test/query-tests/SafePublication/ThreadSafe.java diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.java b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java new file mode 100644 index 00000000000..64341017890 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java @@ -0,0 +1,11 @@ +public class SafePublication { + private Object value; + + public synchronized void produce() { + value = new Object(); // Safely published using synchronization + } + + public synchronized Object getValue() { + return value; + } +} \ No newline at end of file diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp b/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp new file mode 100644 index 00000000000..a24977e6730 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp @@ -0,0 +1,62 @@ + + + + + +

    +In a thread-safe class, values must be published safely to avoid inconsistent or unexpected behavior caused by visibility issues between threads. If a value is not safely published, one thread may see a stale or partially constructed value written by another thread, leading to subtle concurrency bugs. +

    +

    +In particular, values of primitive types should not be initialised to anything but their default values (which for Object is null) unless this happens in a static context. +

    +

    +Techniques for safe publication include: +

    +
      +
    • Using synchronized blocks or methods to ensure that a value is fully constructed before it is published.
    • +
    • Using volatile fields to ensure visibility of changes across threads.
    • +
    • Using thread-safe collections or classes that provide built-in synchronization, such as are found in java.util.concurrent.
    • +
    • Using the final keyword to ensure that a reference to an object is safely published when the object is constructed.
    • +
    + +
    + + +

    +Choose a safe publication technique that fits your use case. If the value only needs to be written once, say for a singleton, consider using the final keyword. If the value is mutable and needs to be shared across threads, consider using synchronized blocks or methods, or using a thread-safe collection from java.util.concurrent. +

    + +
    + + +

    In the following example, the value of value is not safely published. The produce method + creates a new object and assigns it to the field value. However, the field is not + declared as volatile, and there are no synchronization mechanisms in place to ensure + that the value is fully constructed before it is published.

    + + + +

    To fix this example, declare the field value as volatile, or use + synchronized blocks or methods to ensure that the value is fully constructed before it is + published. We illustrate the latter with the following example:

    + + + +
    + + + +
  • + Java Language Specification, chapter 17: + Threads and Locks. +
  • +
  • + Java concurrency package: + java.util.concurrent. +
  • + + +
    +
    diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql b/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql new file mode 100644 index 00000000000..08cd3d5a577 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql @@ -0,0 +1,93 @@ +/** + * @name Safe publication + * @description A field of a thread-safe class is not safely published. + * @kind problem + * @problem.severity warning + * @precision high + * @id java/safe-publication + * @tags quality + * reliability + * concurrency + */ + +import java +import semmle.code.java.ConflictingAccess + +/** + * Holds if `v` should be the default value for the field `f`. + * That is, `v` is an initial (or constructor) assignment of `f`. + */ +predicate shouldBeDefaultValueFor(Field f, Expr v) { + v = f.getAnAssignedValue() and + ( + v = f.getInitializer() + or + v.getEnclosingCallable() = f.getDeclaringType().getAConstructor() + ) +} + +/** + * Gets the default value for the field `f`. + * See https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html + * for the default values of the primitive types. + * The default value for non-primitive types is null. + */ +bindingset[result] +Expr getDefaultValue(Field f) { + f.getType().hasName("byte") and result.(IntegerLiteral).getIntValue() = 0 + or + f.getType().hasName("short") and result.(IntegerLiteral).getIntValue() = 0 + or + f.getType().hasName("int") and result.(IntegerLiteral).getIntValue() = 0 + or + f.getType().hasName("long") and + ( + result.(LongLiteral).getValue() = "0" or + result.(IntegerLiteral).getValue() = "0" + ) + or + f.getType().hasName("float") and result.(FloatLiteral).getValue() = "0.0" + or + f.getType().hasName("double") and result.(DoubleLiteral).getValue() = "0.0" + or + f.getType().hasName("char") and result.(CharacterLiteral).getCodePointValue() = 0 + or + f.getType().hasName("boolean") and result.(BooleanLiteral).getBooleanValue() = false + or + not f.getType().getName() in [ + "byte", "short", "int", "long", "float", "double", "char", "boolean" + ] and + result instanceof NullLiteral +} + +/** + * Holds if all constructor or initial assignments (if any) are to the default value. + * That is, assignments by the declaration: + * int x = 0; OK + * int x = 3; not OK + * or inside a constructor: + * public c(a) { + * x = 0; OK + * x = 3; not OK + * x = a; not OK + * } + */ +predicate isAssignedDefaultValue(Field f) { + forall(Expr v | shouldBeDefaultValueFor(f, v) | v = getDefaultValue(f)) +} + +predicate isSafelyPublished(Field f) { + f.isFinal() or // TODO: Consider non-primitive types + f.isStatic() or + f.isVolatile() or + isThreadSafeType(f.getType()) or + isThreadSafeType(f.getInitializer().getType()) or + isAssignedDefaultValue(f) +} + +from Field f, ClassAnnotatedAsThreadSafe c +where + f = c.getAField() and + not isSafelyPublished(f) +select f, "The class $@ is marked as thread-safe, but this field is not safely published.", c, + c.getName() diff --git a/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java b/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java new file mode 100644 index 00000000000..ddf8c8b400f --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java @@ -0,0 +1,12 @@ +@ThreadSafe +public class UnsafePublication { + private Object value; + + public void produce() { + value = new Object(); // Not safely published, other threads may see the default value null + } + + public Object getValue() { + return value; + } +} \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md new file mode 100644 index 00000000000..23b64c970b3 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/test/query-tests/SafePublication/SafePublication.expected b/java/ql/test/query-tests/SafePublication/SafePublication.expected new file mode 100644 index 00000000000..fbb54ff7b8c --- /dev/null +++ b/java/ql/test/query-tests/SafePublication/SafePublication.expected @@ -0,0 +1,7 @@ +| SafePublication.java:5:9:5:9 | z | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:6:9:6:9 | w | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:7:9:7:9 | u | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:11:10:11:10 | d | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:12:10:12:10 | e | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:14:11:14:13 | arr | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | +| SafePublication.java:17:10:17:11 | cc | The class $@ is marked as thread-safe, but this field is not safely published. | SafePublication.java:2:14:2:28 | SafePublication | SafePublication | diff --git a/java/ql/test/query-tests/SafePublication/SafePublication.java b/java/ql/test/query-tests/SafePublication/SafePublication.java new file mode 100644 index 00000000000..9c1d031987b --- /dev/null +++ b/java/ql/test/query-tests/SafePublication/SafePublication.java @@ -0,0 +1,29 @@ +@ThreadSafe +public class SafePublication { + int x; + int y = 0; + int z = 3; //$ Alert + int w; //$ Alert + int u; //$ Alert + long a; + long b = 0; + long c = 0L; + long d = 3; //$ Alert + long e = 3L; //$ Alert + + int[] arr = new int[3]; //$ Alert + float f = 0.0f; + double dd = 00.0d; + char cc = 'a'; //$ Alert + char ok = '\u0000'; + + public SafePublication(int a) { + x = 0; + w = 3; // not ok + u = a; // not ok + } + + public void methodLocal() { + int i; + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/SafePublication/SafePublication.qlref b/java/ql/test/query-tests/SafePublication/SafePublication.qlref new file mode 100644 index 00000000000..51bf2ced966 --- /dev/null +++ b/java/ql/test/query-tests/SafePublication/SafePublication.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Concurrency/SafePublication.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/query-tests/SafePublication/ThreadSafe.java b/java/ql/test/query-tests/SafePublication/ThreadSafe.java new file mode 100644 index 00000000000..1a4534cc78f --- /dev/null +++ b/java/ql/test/query-tests/SafePublication/ThreadSafe.java @@ -0,0 +1,2 @@ +public @interface ThreadSafe { +} \ No newline at end of file From 5b301531135385eed02c23a63605d07afa07d696 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 15 May 2025 13:16:51 +0200 Subject: [PATCH 070/965] java: add Escaping query (P1) --- .../Likely Bugs/Concurrency/Escaping.qhelp | 34 +++++++++++++++++++ .../src/Likely Bugs/Concurrency/Escaping.ql | 26 ++++++++++++++ .../change-notes/2025-06-22-query-escaping.md | 4 +++ .../query-tests/Escaping/Escaping.expected | 3 ++ .../test/query-tests/Escaping/Escaping.java | 17 ++++++++++ .../test/query-tests/Escaping/Escaping.qlref | 2 ++ .../test/query-tests/Escaping/ThreadSafe.java | 2 ++ 7 files changed, 88 insertions(+) create mode 100644 java/ql/src/Likely Bugs/Concurrency/Escaping.qhelp create mode 100644 java/ql/src/Likely Bugs/Concurrency/Escaping.ql create mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md create mode 100644 java/ql/test/query-tests/Escaping/Escaping.expected create mode 100644 java/ql/test/query-tests/Escaping/Escaping.java create mode 100644 java/ql/test/query-tests/Escaping/Escaping.qlref create mode 100644 java/ql/test/query-tests/Escaping/ThreadSafe.java diff --git a/java/ql/src/Likely Bugs/Concurrency/Escaping.qhelp b/java/ql/src/Likely Bugs/Concurrency/Escaping.qhelp new file mode 100644 index 00000000000..a8a614dbe36 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/Escaping.qhelp @@ -0,0 +1,34 @@ + + + + + +

    +In a thread-safe class, non-final fields should generally be private (or possibly volatile) to ensure that they cannot be accessed by other threads in an unsafe manner. +

    + +
    + + +

    +If the field does not change, mark it as final. If the field is mutable, mark it as private and provide properly synchronized accessors.

    + +
    + + + + +
  • + Java Language Specification, chapter 17: + Threads and Locks. +
  • +
  • + Java concurrency package: + java.util.concurrent. +
  • + + +
    +
    diff --git a/java/ql/src/Likely Bugs/Concurrency/Escaping.ql b/java/ql/src/Likely Bugs/Concurrency/Escaping.ql new file mode 100644 index 00000000000..a2f3e0f7b46 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/Escaping.ql @@ -0,0 +1,26 @@ +/** + * @name Escaping + * @description In a thread-safe class, care should be taken to avoid exposing mutable state. + * @kind problem + * @problem.severity warning + * @precision high + * @id java/escaping + * @tags quality + * reliability + * concurrency + */ + +import java +import semmle.code.java.ConflictingAccess + +from Field f, ClassAnnotatedAsThreadSafe c +where + f = c.getAField() and + not f.isFinal() and // final fields do not change + not f.isPrivate() and + // We believe that protected fields are also dangerous + // Volatile fields cannot cause data races, but it is dubious to allow changes. + // For now, we ignore volatile fields, but there are likely bugs to be caught here. + not f.isVolatile() +select f, "The class $@ is marked as thread-safe, but this field is potentially escaping.", c, + c.getName() diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md new file mode 100644 index 00000000000..f33de2e8556 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-escaping.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/test/query-tests/Escaping/Escaping.expected b/java/ql/test/query-tests/Escaping/Escaping.expected new file mode 100644 index 00000000000..e066b29dae4 --- /dev/null +++ b/java/ql/test/query-tests/Escaping/Escaping.expected @@ -0,0 +1,3 @@ +| Escaping.java:3:7:3:7 | x | The class $@ is marked as thread-safe, but this field is potentially escaping. | Escaping.java:2:14:2:21 | Escaping | Escaping | +| Escaping.java:4:14:4:14 | y | The class $@ is marked as thread-safe, but this field is potentially escaping. | Escaping.java:2:14:2:21 | Escaping | Escaping | +| Escaping.java:9:18:9:18 | b | The class $@ is marked as thread-safe, but this field is potentially escaping. | Escaping.java:2:14:2:21 | Escaping | Escaping | diff --git a/java/ql/test/query-tests/Escaping/Escaping.java b/java/ql/test/query-tests/Escaping/Escaping.java new file mode 100644 index 00000000000..9d3b568369a --- /dev/null +++ b/java/ql/test/query-tests/Escaping/Escaping.java @@ -0,0 +1,17 @@ +@ThreadSafe +public class Escaping { + int x; //$ Alert + public int y = 0; //$ Alert + private int z = 3; + final int w = 0; + public final int u = 4; + private final long a = 5; + protected long b = 0; //$ Alert + protected final long c = 0L; + volatile long d = 3; + protected volatile long e = 3L; + + public void methodLocal() { + int i; + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/Escaping/Escaping.qlref b/java/ql/test/query-tests/Escaping/Escaping.qlref new file mode 100644 index 00000000000..846d88a1e0a --- /dev/null +++ b/java/ql/test/query-tests/Escaping/Escaping.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Concurrency/Escaping.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/query-tests/Escaping/ThreadSafe.java b/java/ql/test/query-tests/Escaping/ThreadSafe.java new file mode 100644 index 00000000000..1a4534cc78f --- /dev/null +++ b/java/ql/test/query-tests/Escaping/ThreadSafe.java @@ -0,0 +1,2 @@ +public @interface ThreadSafe { +} \ No newline at end of file From 096d5f2a56e1ab778eec98c74de39bd67705858a Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 20 May 2025 14:12:45 +0200 Subject: [PATCH 071/965] java: implement SCC contraction of the call graph Our monitor analysis would be fooled by cycles in the call graph, since it required all edges on a path to a conflicting access to be either - targetting a method where the access is monitored (recursively) or - monitored locally, that is the call is monitored in the calling method For access to be monitored (first case) all outgoing edges (towards an access) need to satisfy this property. For a loop, that is too strong, only edges out of the loop actually need to be protected. This led to FPs. --- .../semmle/code/java/ConflictingAccess.qll | 111 ++++++++++++++++-- .../ThreadSafe/ThreadSafe.expected | 2 - .../ThreadSafe/examples/LoopyCallGraph.java | 6 +- 3 files changed, 107 insertions(+), 12 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 0d92438ae0f..75845044d27 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -321,18 +321,115 @@ class ClassAnnotatedAsThreadSafe extends Class { ) } - /** Holds if all paths from `m` to `a` are monitored by `monitor`. */ - predicate monitorsVia(Method m, ExposedFieldAccess a, Monitors::Monitor monitor) { + // NOTE: + // In order to deal with loops in the call graph, we compute the strongly connected components (SCCs). + // We only wish to do this for the methods that can lead to exposed field accesses. + // Given a field access `a`, we can consider a "call graph of interest", a sub graph of the call graph + // that only contains methods that lead to an access of `a`. We call this "the call graph induced by `a`". + // We can then compute the SCCs of this graph, yielding the SCC graph induced by `a`. + // + /** + * Holds if a call to method `m` can cause an access of `a` by `m` calling `callee`. + * This is an edge in the call graph induced by `a`. + */ + predicate accessVia(Method m, ExposedFieldAccess a, Method callee) { + exists(MethodCall c | this.providesAccess(m, c, a) | callee = c.getCallee()) + } + + /** Holds if `m` can reach `reached` by a path in the call graph induced by `a`. */ + predicate accessReach(Method m, ExposedFieldAccess a, Method reached) { + m = this.getAMethod() and + reached = this.getAMethod() and + this.providesAccess(m, _, a) and + this.providesAccess(reached, _, a) and + ( + this.accessVia(m, a, reached) + or + exists(Method mid | this.accessReach(m, a, mid) | this.accessVia(mid, a, reached)) + ) + } + + /** + * Holds if `rep` is a representative of the SCC containing `m` in the call graph induced by `a`. + * This only assigns representatives to methods involved in loops. + * To get a representative of any method, use `repScc`. + */ + predicate repInLoopScc(Method rep, ExposedFieldAccess a, Method m) { + // `rep` and `m` are in the same SCC + this.accessReach(rep, a, m) and + this.accessReach(m, a, rep) and + // `rep` is the representative of the SCC + // that is, the earliest in the source code + forall(Method alt_rep | + rep != alt_rep and + this.accessReach(alt_rep, a, m) and + this.accessReach(m, a, alt_rep) + | + rep.getLocation().getStartLine() < alt_rep.getLocation().getStartLine() + ) + } + + /** Holds if `rep` is a representative of the SCC containing `m` in the call graph induced by `a`. */ + predicate repScc(Method rep, ExposedFieldAccess a, Method m) { + this.repInLoopScc(rep, a, m) + or + // If `m` is in the call graph induced by `a` and did not get a representative from `repInLoopScc`, + // it is represented by itself. m = this.getAMethod() and this.providesAccess(m, _, a) and - (a.getEnclosingCallable() = m implies Monitors::locallyMonitors(a, monitor)) and - forall(MethodCall c | - c.getEnclosingCallable() = m and - this.providesAccess(c.getCallee(), _, a) + not this.repInLoopScc(_, a, m) and + rep = m + } + + /** + * Holds if `c` is a call from the SCC represented by `callerRep` to the (different) SCC represented by `calleeRep`. + * This is an edge in the SCC graph induced by `a`. + */ + predicate callEdgeScc(Method callerRep, ExposedFieldAccess a, MethodCall c, Method calleeRep) { + callerRep != calleeRep and + exists(Method caller, Method callee | + this.repScc(callerRep, a, caller) and + this.repScc(calleeRep, a, callee) | + this.accessVia(caller, a, callee) and + c.getEnclosingCallable() = caller and + c.getCallee() = callee + ) + } + + /** + * Holds if the SCC represented by `rep` can cause an access to `a` and `e` is the expression that leads to that access. + * `e` will either be `a` itself or a method call that leads to `a` via a different SCC. + */ + predicate providesAccessScc(Method rep, Expr e, ExposedFieldAccess a) { + rep = this.getAMethod() and + exists(Method m | this.repScc(rep, a, m) | + a.getEnclosingCallable() = m and + e = a + or + exists(MethodCall c | this.callEdgeScc(rep, a, c, _) | e = c) + ) + } + + /** Holds if all paths from `rep` to `a` are monitored by `monitor`. */ + predicate monitorsViaScc(Method rep, ExposedFieldAccess a, Monitors::Monitor monitor) { + rep = this.getAMethod() and + this.providesAccessScc(rep, _, a) and + // If we are in an SCC that can access `a`, the access must be monitored locally + (this.repScc(rep, a, a.getEnclosingCallable()) implies Monitors::locallyMonitors(a, monitor)) and + // Any call towards `a` must either be monitored or guarantee that the access is monitored + forall(MethodCall c, Method calleeRep | this.callEdgeScc(rep, a, c, calleeRep) | Monitors::locallyMonitors(c, monitor) or - this.monitorsVia(c.getCallee(), a, monitor) + this.monitorsViaScc(calleeRep, a, monitor) + ) + } + + /** Holds if all paths from `m` to `a` are monitored by `monitor`. */ + predicate monitorsVia(Method m, ExposedFieldAccess a, Monitors::Monitor monitor) { + exists(Method rep | + this.repScc(rep, a, m) and + this.monitorsViaScc(rep, a, monitor) ) } } diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index 72d0bbb1a3a..d25b09260ee 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -63,8 +63,6 @@ | examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this field access | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this expression | | examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this field access | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this expression | | examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this field access | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this expression | -| examples/LoopyCallGraph.java:25:5:25:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | examples/LoopyCallGraph.java:25:5:25:9 | count | this field access | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | -| examples/LoopyCallGraph.java:25:5:25:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | examples/LoopyCallGraph.java:31:5:31:9 | count | this field access | examples/LoopyCallGraph.java:15:7:15:16 | increase(...) | this expression | | examples/SyncLstExample.java:40:5:40:7 | lst | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncLstExample.java:40:5:40:7 | lst | this expression | examples/SyncLstExample.java:45:5:45:7 | lst | this field access | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | | examples/SyncStackExample.java:32:5:32:7 | stc | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncStackExample.java:32:5:32:7 | stc | this expression | examples/SyncStackExample.java:37:5:37:7 | stc | this field access | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | | examples/SynchronizedAndLock.java:14:9:14:14 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SynchronizedAndLock.java:14:9:14:14 | length | this expression | examples/SynchronizedAndLock.java:19:9:19:14 | length | this field access | examples/SynchronizedAndLock.java:19:9:19:14 | length | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java b/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java index 595aea014f2..caea22ac851 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/LoopyCallGraph.java @@ -12,7 +12,7 @@ public class LoopyCallGraph { public void entry() { if (random.nextBoolean()) { - increase(); // this looks like an unprotected path to a call to dec() + increase(); // this could look like an unprotected path to a call to dec() } else { lock.lock(); dec(); @@ -22,9 +22,9 @@ public class LoopyCallGraph { private void increase() { lock.lock(); - count = 10; //$ SPURIOUS: Alert + count = 10; lock.unlock(); - entry(); // this looks like an unprotected path to a call to dec() + entry(); // this could look like an unprotected path to a call to dec() } private void dec() { From bf138693a3a7c56482b4c77ee084cdf82cb0502b Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 22 May 2025 14:44:24 +0200 Subject: [PATCH 072/965] java: update expectations for java-code-quality suite --- .../java/query-suite/java-code-quality.qls.expected | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected index eb502feb6ba..56e2daa58ce 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected @@ -30,10 +30,13 @@ ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/Escaping.ql ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +ql/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql From 77734f83d5ea7281ef676df99f490274dd464432 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 27 May 2025 15:39:41 +0200 Subject: [PATCH 073/965] java: better detection of thread safe fields. Identified by triage of DCA results. Previously, we did not use the erased type, so would not recgnize `CompletableFuture`. We now also recognize safe initializers. --- .../semmle/code/java/ConflictingAccess.qll | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 75845044d27..1a497566174 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -160,18 +160,22 @@ Class annotatedAsThreadSafe() { result.getAnAnnotation().getType().getName() = " /** Holds if the type `t` is thread-safe. */ predicate isThreadSafeType(Type t) { - t.getName().matches(["Atomic%", "Concurrent%"]) + t.getErasure().getName().matches(["Atomic%", "Concurrent%"]) or - t.getName() in [ - "CopyOnWriteArraySet", "BlockingQueue", "ThreadLocal", - // this is a method that returns a thread-safe version of the collection used as parameter - "synchronizedMap", "Executor", "ExecutorService", "CopyOnWriteArrayList", - "LinkedBlockingDeque", "LinkedBlockingQueue", "CompletableFuture" - ] + t.getErasure().getName() in ["ThreadLocal"] + or + // Anything in `java.itul.concurrent` is thread safe. + // See https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility + t.getTypeDescriptor().matches("Ljava/util/concurrent/%;") or t = annotatedAsThreadSafe() } +/** Holds if the expression `e` is a thread-safe initializer. */ +predicate isThreadSafeInitializer(Expr e) { + e.(Call).getCallee().getQualifiedName().matches("java.util.Collections.synchronized%") +} + /** * A field access that is exposed to potential data races. * We require the field to be in a class that is annotated as `@ThreadSafe`. @@ -185,6 +189,8 @@ class ExposedFieldAccess extends FieldAccess { // field is not thread-safe not isThreadSafeType(this.getField().getType()) and not isThreadSafeType(this.getField().getInitializer().getType()) and + // the initializer guarantees thread safety + not isThreadSafeInitializer(this.getField().getInitializer()) and // access is not the initializer of the field not this.(VarWrite).getASource() = this.getField().getInitializer() and // access not in a constructor From 01ddc11fa7b6a2e964f28c0784738a9dae878b84 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 9 Jun 2025 08:40:51 +0200 Subject: [PATCH 074/965] java: address some review comments --- .../semmle/code/java/ConflictingAccess.qll | 61 +++++++------------ 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 1a497566174..7ef2ca38dbd 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -37,7 +37,7 @@ module Monitors { abstract Location getLocation(); /** Gets a textual representation of this element. */ - string toString() { result = "Monitor" } + abstract string toString(); } /** @@ -46,16 +46,12 @@ module Monitors { * E.g `synchronized (m) { ... }` or `m.lock();` */ class VariableMonitor extends Monitor, TVariableMonitor { - Variable v; + override Location getLocation() { result = this.getVariable().getLocation() } - VariableMonitor() { this = TVariableMonitor(v) } - - override Location getLocation() { result = v.getLocation() } - - override string toString() { result = "VariableMonitor(" + v.toString() + ")" } + override string toString() { result = "VariableMonitor(" + this.getVariable().toString() + ")" } /** Gets the variable being used as a monitor. */ - Variable getVariable() { result = v } + Variable getVariable() { this = TVariableMonitor(result) } } /** @@ -63,16 +59,12 @@ module Monitors { * Either via `synchronized (this) { ... }` or by marking a non-static method as `synchronized`. */ class InstanceMonitor extends Monitor, TInstanceMonitor { - RefType thisType; + override Location getLocation() { result = this.getThisType().getLocation() } - InstanceMonitor() { this = TInstanceMonitor(thisType) } - - override Location getLocation() { result = thisType.getLocation() } - - override string toString() { result = "InstanceMonitor(" + thisType.toString() + ")" } + override string toString() { result = "InstanceMonitor(" + this.getThisType().toString() + ")" } /** Gets the instance reference being used as a monitor. */ - RefType getThisType() { result = thisType } + RefType getThisType() { this = TInstanceMonitor(result) } } /** @@ -80,16 +72,12 @@ module Monitors { * This is achieved by marking a static method as `synchronized`. */ class ClassMonitor extends Monitor, TClassMonitor { - RefType classType; + override Location getLocation() { result = this.getClassType().getLocation() } - ClassMonitor() { this = TClassMonitor(classType) } - - override Location getLocation() { result = classType.getLocation() } - - override string toString() { result = "ClassMonitor(" + classType.toString() + ")" } + override string toString() { result = "ClassMonitor(" + this.getClassType().toString() + ")" } /** Gets the class being used as a monitor. */ - RefType getClassType() { result = classType } + RefType getClassType() { this = TClassMonitor(result) } } /** Holds if the expression `e` is synchronized on the monitor `m`. */ @@ -115,6 +103,15 @@ module Monitors { ) } + ControlFlowNode getNodeToBeDominated(Expr e) { + // If `e` is the LHS of an assignment, use the control flow node for the assignment + exists(Assignment asgn | asgn.getDest() = e | result = asgn.getControlFlowNode()) + or + // if `e` is not the LHS of an assignment, use the default control flow node + not exists(Assignment asgn | asgn.getDest() = e) and + result = e.getControlFlowNode() + } + /** Holds if `e` is synchronized on the `Lock` `lock` by a locking call. */ predicate locallyLockedOn(Expr e, Field lock) { isLockType(lock.getType()) and @@ -126,8 +123,8 @@ module Monitors { unlockCall.getMethod().getName() = "unlock" | dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and - dominates(lockCall.getControlFlowNode(), e.getControlFlowNode()) and - postDominates(unlockCall.getControlFlowNode(), e.getControlFlowNode()) + dominates(lockCall.getControlFlowNode(), getNodeToBeDominated(e)) and + postDominates(unlockCall.getControlFlowNode(), getNodeToBeDominated(e)) ) } } @@ -147,10 +144,9 @@ module Modification { /** Holds if the call `c` modifies a shared resource. */ predicate isModifyingCall(Call c) { - exists(SummarizedCallable sc, string output, string prefix | sc.getACall() = c | + exists(SummarizedCallable sc, string output | sc.getACall() = c | sc.propagatesFlow(_, output, _, _) and - prefix = "Argument[this]" and - output.prefix(prefix.length()) = prefix + output.matches("Argument[this]%") ) } } @@ -200,17 +196,6 @@ class ExposedFieldAccess extends FieldAccess { // not the variable mention in a synchronized statement not this = any(SynchronizedStmt sync).getExpr() } - - // LHS of assignments are excluded from the control flow graph, - // so we use the control flow node for the assignment itself instead. - override ControlFlowNode getControlFlowNode() { - // this is the LHS of an assignment, use the control flow node for the assignment - exists(Assignment asgn | asgn.getDest() = this | result = asgn.getControlFlowNode()) - or - // this is not the LHS of an assignment, use the default control flow node - not exists(Assignment asgn | asgn.getDest() = this) and - result = super.getControlFlowNode() - } } /** Holds if the location of `a` is strictly before the location of `b`. */ From 821b1de5b39041db4e3c17b82542967c29be4d02 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 9 Jun 2025 09:18:02 +0200 Subject: [PATCH 075/965] java: inline char pred --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 7ef2ca38dbd..74ae148db39 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -151,9 +151,6 @@ module Modification { } } -/** Holds if the class is annotated as `@ThreadSafe`. */ -Class annotatedAsThreadSafe() { result.getAnAnnotation().getType().getName() = "ThreadSafe" } - /** Holds if the type `t` is thread-safe. */ predicate isThreadSafeType(Type t) { t.getErasure().getName().matches(["Atomic%", "Concurrent%"]) @@ -164,7 +161,7 @@ predicate isThreadSafeType(Type t) { // See https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility t.getTypeDescriptor().matches("Ljava/util/concurrent/%;") or - t = annotatedAsThreadSafe() + t instanceof ClassAnnotatedAsThreadSafe } /** Holds if the expression `e` is a thread-safe initializer. */ @@ -178,7 +175,7 @@ predicate isThreadSafeInitializer(Expr e) { */ class ExposedFieldAccess extends FieldAccess { ExposedFieldAccess() { - this.getField() = annotatedAsThreadSafe().getAField() and + this.getField() = any(ClassAnnotatedAsThreadSafe c).getAField() and not this.getField().isVolatile() and // field is not a lock not isLockType(this.getField().getType()) and @@ -212,7 +209,7 @@ predicate orderedLocations(Location a, Location b) { * Provides predicates to check for concurrency issues. */ class ClassAnnotatedAsThreadSafe extends Class { - ClassAnnotatedAsThreadSafe() { this = annotatedAsThreadSafe() } + ClassAnnotatedAsThreadSafe() { this.getAnAnnotation().getType().getName() = "ThreadSafe" } /** Holds if `a` and `b` are conflicting accesses to the same field and not monitored by the same monitor. */ predicate unsynchronised(ExposedFieldAccess a, ExposedFieldAccess b) { From a1671ea8af6d2661b32b379f27e6c875224e6d87 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 09:11:02 +0200 Subject: [PATCH 076/965] java: small cleanups - add missing qldoc - remove use of `getErasure` - remove use of `getTypeDescriptor` - define `ExposedField` --- .../semmle/code/java/ConflictingAccess.qll | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 74ae148db39..17890e1798f 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -103,6 +103,7 @@ module Monitors { ) } + /** Gets the control flow node that must dominate `e` when `e` is synchronized on a lock. */ ControlFlowNode getNodeToBeDominated(Expr e) { // If `e` is the LHS of an assignment, use the control flow node for the assignment exists(Assignment asgn | asgn.getDest() = e | result = asgn.getControlFlowNode()) @@ -153,13 +154,13 @@ module Modification { /** Holds if the type `t` is thread-safe. */ predicate isThreadSafeType(Type t) { - t.getErasure().getName().matches(["Atomic%", "Concurrent%"]) + t.(RefType).getSourceDeclaration().getName().matches(["Atomic%", "Concurrent%"]) or - t.getErasure().getName() in ["ThreadLocal"] + t.(RefType).getSourceDeclaration().getName() in ["ThreadLocal"] or // Anything in `java.itul.concurrent` is thread safe. // See https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility - t.getTypeDescriptor().matches("Ljava/util/concurrent/%;") + t.(RefType).getPackage().getName() = "java.util.concurrent" or t instanceof ClassAnnotatedAsThreadSafe } @@ -169,28 +170,39 @@ predicate isThreadSafeInitializer(Expr e) { e.(Call).getCallee().getQualifiedName().matches("java.util.Collections.synchronized%") } +/** + * A field that is exposed to potential data races. + * We require the field to be in a class that is annotated as `@ThreadSafe`. + */ +class ExposedField extends Field { + ExposedField() { + this.getDeclaringType() instanceof ClassAnnotatedAsThreadSafe and + not this.isVolatile() and + // field is not a lock + not isLockType(this.getType()) and + // field is not thread-safe + not isThreadSafeType(this.getType()) and + not isThreadSafeType(this.getInitializer().getType()) and + // the initializer guarantees thread safety + not isThreadSafeInitializer(this.getInitializer()) + } +} + /** * A field access that is exposed to potential data races. * We require the field to be in a class that is annotated as `@ThreadSafe`. */ class ExposedFieldAccess extends FieldAccess { ExposedFieldAccess() { - this.getField() = any(ClassAnnotatedAsThreadSafe c).getAField() and - not this.getField().isVolatile() and - // field is not a lock - not isLockType(this.getField().getType()) and - // field is not thread-safe - not isThreadSafeType(this.getField().getType()) and - not isThreadSafeType(this.getField().getInitializer().getType()) and - // the initializer guarantees thread safety - not isThreadSafeInitializer(this.getField().getInitializer()) and + // access is to an exposed field + this.getField() instanceof ExposedField and // access is not the initializer of the field not this.(VarWrite).getASource() = this.getField().getInitializer() and // access not in a constructor not this.getEnclosingCallable() = this.getField().getDeclaringType().getAConstructor() and // not a field on a local variable not this.getQualifier+().(VarAccess).getVariable() instanceof LocalVariableDecl and - // not the variable mention in a synchronized statement + // not the variable mentioned in a synchronized statement not this = any(SynchronizedStmt sync).getExpr() } } From 93fc287ef12768b571a22f2ce4a2b44d8a3f784b Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 09:25:57 +0200 Subject: [PATCH 077/965] java: add auto-generated overlay annotations --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 17890e1798f..39bd7f0d383 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for detecting conflicting accesses in the sense of the Java Memory Model. */ +overlay[local?] +module; import java import Concurrency @@ -9,6 +11,7 @@ import Concurrency * Holds if `t` is the type of a lock. * Currently a crude test of the type name. */ +overlay[caller?] pragma[inline] predicate isLockType(Type t) { t.getName().matches("%Lock%") } @@ -208,6 +211,7 @@ class ExposedFieldAccess extends FieldAccess { } /** Holds if the location of `a` is strictly before the location of `b`. */ +overlay[caller?] pragma[inline] predicate orderedLocations(Location a, Location b) { a.getStartLine() < b.getStartLine() From 830f02af1ff14968cae0c45e9f0c595d11a7831a Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 09:37:31 +0200 Subject: [PATCH 078/965] java: fixes from the CI bots --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 6 +++--- java/ql/src/Likely Bugs/Concurrency/SafePublication.ql | 2 +- .../test/query-tests/ThreadSafe/examples/LockExample.java | 2 +- java/ql/test/query-tests/ThreadSafe/examples/Test.java | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 39bd7f0d383..1243a94d661 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -159,9 +159,9 @@ module Modification { predicate isThreadSafeType(Type t) { t.(RefType).getSourceDeclaration().getName().matches(["Atomic%", "Concurrent%"]) or - t.(RefType).getSourceDeclaration().getName() in ["ThreadLocal"] + t.(RefType).getSourceDeclaration().getName() = "ThreadLocal" or - // Anything in `java.itul.concurrent` is thread safe. + // Anything in `java.util.concurrent` is thread safe. // See https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html#MemoryVisibility t.(RefType).getPackage().getName() = "java.util.concurrent" or @@ -303,7 +303,7 @@ class ClassAnnotatedAsThreadSafe extends Class { ) } - /** Holds if `a` can be reached by a path from a public method and `e` is the expression in that method that stsarts the path. */ + /** Holds if `a` can be reached by a path from a public method and `e` is the expression in that method that starts the path. */ predicate publicAccess(Expr e, ExposedFieldAccess a) { exists(Method m | m.isPublic() | this.providesAccess(m, e, a)) } diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql b/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql index 08cd3d5a577..5e2a89ce372 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql @@ -77,7 +77,7 @@ predicate isAssignedDefaultValue(Field f) { } predicate isSafelyPublished(Field f) { - f.isFinal() or // TODO: Consider non-primitive types + f.isFinal() or // NOTE: For non-primitive types, 'final' alone does not guarantee safe publication unless the object is immutable or safely constructed. Consider reviewing the handling of non-primitive fields for safe publication. f.isStatic() or f.isVolatile() or isThreadSafeType(f.getType()) or diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java index 92886bbb5ff..8ce34922c5b 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java @@ -3,7 +3,7 @@ // If the variable is involved in several different monitors, we get an alert for each monitor that // is not correctly used. // A single alert can have many related locations, since each conflicting access which is not -// prpoerly synchronized is a related location. +// properly synchronized is a related location. // This leads to many lines in the .expected file. package examples; diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Test.java b/java/ql/test/query-tests/ThreadSafe/examples/Test.java index 55fef174fc5..b2e7ac46c0b 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/Test.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/Test.java @@ -5,14 +5,14 @@ import java.util.concurrent.locks.ReentrantLock; @ThreadSafe public class Test { /** - * Escaping field due to public visuability. + * Escaping field due to public visibility. */ int publicField; private int y; final int immutableField = 1; - // As of the below examples with synchronized as well. Except the incorretly placed lock. + // As of the below examples with synchronized as well. Except the incorrectly placed lock. private Lock lock = new ReentrantLock(); @@ -53,7 +53,7 @@ public class Test { } /** - * Incorretly locks y. + * Incorrectly locks y. * @param y */ public void setYWrongLock(int y) { From 26c1b2f14316ccda78f8878769d84a3fc069cedc Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 12:29:42 +0200 Subject: [PATCH 079/965] java: adjust test expectations; new queries are enabled in extended --- .../java/query-suite/java-code-quality-extended.qls.expected | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected index cdd6769ab46..6d0319431d6 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -67,15 +67,18 @@ ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql ql/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/Escaping.ql ql/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql ql/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql +ql/java/ql/src/Likely Bugs/Concurrency/SafePublication.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql ql/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql ql/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql +ql/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql ql/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql From f90e9dbb5ebb51596536f9eb73093806491b0fc6 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 13:01:25 +0200 Subject: [PATCH 080/965] java: favour `inline_late` over `inline` This gives much greater control over the join-order --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 1243a94d661..ae76e0fa46e 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -11,8 +11,9 @@ import Concurrency * Holds if `t` is the type of a lock. * Currently a crude test of the type name. */ +bindingset[t] overlay[caller?] -pragma[inline] +pragma[inline_late] predicate isLockType(Type t) { t.getName().matches("%Lock%") } /** @@ -211,8 +212,9 @@ class ExposedFieldAccess extends FieldAccess { } /** Holds if the location of `a` is strictly before the location of `b`. */ +bindingset[a, b] overlay[caller?] -pragma[inline] +pragma[inline_late] predicate orderedLocations(Location a, Location b) { a.getStartLine() < b.getStartLine() or From 1ad239459f505f7da741ec13fa93fd054a1e1033 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 13:36:35 +0200 Subject: [PATCH 081/965] java: move shared code into `Concurrency.qll` --- java/ql/lib/semmle/code/java/Concurrency.qll | 161 ++++++++++++++++++ .../semmle/code/java/ConflictingAccess.qll | 129 +------------- .../Likely Bugs/Concurrency/UnreleasedLock.ql | 42 +---- 3 files changed, 163 insertions(+), 169 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index 7322f16068c..f32c7ee963c 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -2,6 +2,47 @@ overlay[local?] module; import java +import semmle.code.java.frameworks.Mockito + +class LockType extends RefType { + LockType() { + this.getAMethod().hasName("lock") and + this.getAMethod().hasName("unlock") + } + + Method getLockMethod() { + result.getDeclaringType() = this and + result.hasName(["lock", "lockInterruptibly", "tryLock"]) + } + + Method getUnlockMethod() { + result.getDeclaringType() = this and + result.hasName("unlock") + } + + Method getIsHeldByCurrentThreadMethod() { + result.getDeclaringType() = this and + result.hasName("isHeldByCurrentThread") + } + + MethodCall getLockAccess() { + result.getMethod() = this.getLockMethod() and + // Not part of a Mockito verification call + not result instanceof MockitoVerifiedMethodCall + } + + MethodCall getUnlockAccess() { + result.getMethod() = this.getUnlockMethod() and + // Not part of a Mockito verification call + not result instanceof MockitoVerifiedMethodCall + } + + MethodCall getIsHeldByCurrentThreadAccess() { + result.getMethod() = this.getIsHeldByCurrentThreadMethod() and + // Not part of a Mockito verification call + not result instanceof MockitoVerifiedMethodCall + } +} /** * Holds if `e` is synchronized by a local synchronized statement `sync` on the variable `v`. @@ -49,3 +90,123 @@ class SynchronizedCallable extends Callable { ) } } + +/** + * This module provides predicates, chiefly `locallyMonitors`, to check if a given expression is synchronized on a specific monitor. + */ +module Monitors { + /** + * A monitor is any object that is used to synchronize access to a shared resource. + * This includes locks as well as variables used in synchronized blocks (including `this`). + */ + newtype TMonitor = + /** Either a lock or a variable used in a synchronized block. */ + TVariableMonitor(Variable v) { + v.getType() instanceof LockType or locallySynchronizedOn(_, _, v) + } or + /** An instance reference used as a monitor. */ + TInstanceMonitor(RefType thisType) { locallySynchronizedOnThis(_, thisType) } or + /** A class used as a monitor. */ + TClassMonitor(RefType classType) { locallySynchronizedOnClass(_, classType) } + + /** + * A monitor is any object that is used to synchronize access to a shared resource. + * This includes locks as well as variables used in synchronized blocks (including `this`). + */ + class Monitor extends TMonitor { + /** Gets the location of this monitor. */ + abstract Location getLocation(); + + /** Gets a textual representation of this element. */ + abstract string toString(); + } + + /** + * A variable used as a monitor. + * The variable is either a lock or is used in a synchronized block. + * E.g `synchronized (m) { ... }` or `m.lock();` + */ + class VariableMonitor extends Monitor, TVariableMonitor { + override Location getLocation() { result = this.getVariable().getLocation() } + + override string toString() { result = "VariableMonitor(" + this.getVariable().toString() + ")" } + + /** Gets the variable being used as a monitor. */ + Variable getVariable() { this = TVariableMonitor(result) } + } + + /** + * An instance reference used as a monitor. + * Either via `synchronized (this) { ... }` or by marking a non-static method as `synchronized`. + */ + class InstanceMonitor extends Monitor, TInstanceMonitor { + override Location getLocation() { result = this.getThisType().getLocation() } + + override string toString() { result = "InstanceMonitor(" + this.getThisType().toString() + ")" } + + /** Gets the instance reference being used as a monitor. */ + RefType getThisType() { this = TInstanceMonitor(result) } + } + + /** + * A class used as a monitor. + * This is achieved by marking a static method as `synchronized`. + */ + class ClassMonitor extends Monitor, TClassMonitor { + override Location getLocation() { result = this.getClassType().getLocation() } + + override string toString() { result = "ClassMonitor(" + this.getClassType().toString() + ")" } + + /** Gets the class being used as a monitor. */ + RefType getClassType() { this = TClassMonitor(result) } + } + + /** Holds if the expression `e` is synchronized on the monitor `m`. */ + predicate locallyMonitors(Expr e, Monitor m) { + exists(Variable v | v = m.(VariableMonitor).getVariable() | + locallyLockedOn(e, v) + or + locallySynchronizedOn(e, _, v) + ) + or + locallySynchronizedOnThis(e, m.(InstanceMonitor).getThisType()) + or + locallySynchronizedOnClass(e, m.(ClassMonitor).getClassType()) + } + + /** Holds if `localLock` refers to `lock`. */ + predicate represents(Field lock, Variable localLock) { + lock.getType() instanceof LockType and + ( + localLock = lock + or + localLock.getInitializer() = lock.getAnAccess() + ) + } + + /** Gets the control flow node that must dominate `e` when `e` is synchronized on a lock. */ + ControlFlowNode getNodeToBeDominated(Expr e) { + // If `e` is the LHS of an assignment, use the control flow node for the assignment + exists(Assignment asgn | asgn.getDest() = e | result = asgn.getControlFlowNode()) + or + // if `e` is not the LHS of an assignment, use the default control flow node + not exists(Assignment asgn | asgn.getDest() = e) and + result = e.getControlFlowNode() + } + + /** Holds if `e` is synchronized on the `Lock` `lock` by a locking call. */ + predicate locallyLockedOn(Expr e, Field lock) { + lock.getType() instanceof LockType and + exists(Variable localLock, MethodCall lockCall, MethodCall unlockCall | + represents(lock, localLock) and + lockCall.getQualifier() = localLock.getAnAccess() and + lockCall.getMethod() = lock.getType().(LockType).getLockMethod() and + unlockCall.getQualifier() = localLock.getAnAccess() and + unlockCall.getMethod() = lock.getType().(LockType).getUnlockMethod() + | + dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and + dominates(lockCall.getControlFlowNode(), getNodeToBeDominated(e)) and + postDominates(unlockCall.getControlFlowNode(), getNodeToBeDominated(e)) + ) + } +} diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index ae76e0fa46e..c98fb3bdf3b 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -7,133 +7,6 @@ module; import java import Concurrency -/** - * Holds if `t` is the type of a lock. - * Currently a crude test of the type name. - */ -bindingset[t] -overlay[caller?] -pragma[inline_late] -predicate isLockType(Type t) { t.getName().matches("%Lock%") } - -/** - * This module provides predicates, chiefly `locallyMonitors`, to check if a given expression is synchronized on a specific monitor. - */ -module Monitors { - /** - * A monitor is any object that is used to synchronize access to a shared resource. - * This includes locks as well as variables used in synchronized blocks (including `this`). - */ - newtype TMonitor = - /** Either a lock or a variable used in a synchronized block. */ - TVariableMonitor(Variable v) { isLockType(v.getType()) or locallySynchronizedOn(_, _, v) } or - /** An instance reference used as a monitor. */ - TInstanceMonitor(RefType thisType) { locallySynchronizedOnThis(_, thisType) } or - /** A class used as a monitor. */ - TClassMonitor(RefType classType) { locallySynchronizedOnClass(_, classType) } - - /** - * A monitor is any object that is used to synchronize access to a shared resource. - * This includes locks as well as variables used in synchronized blocks (including `this`). - */ - class Monitor extends TMonitor { - /** Gets the location of this monitor. */ - abstract Location getLocation(); - - /** Gets a textual representation of this element. */ - abstract string toString(); - } - - /** - * A variable used as a monitor. - * The variable is either a lock or is used in a synchronized block. - * E.g `synchronized (m) { ... }` or `m.lock();` - */ - class VariableMonitor extends Monitor, TVariableMonitor { - override Location getLocation() { result = this.getVariable().getLocation() } - - override string toString() { result = "VariableMonitor(" + this.getVariable().toString() + ")" } - - /** Gets the variable being used as a monitor. */ - Variable getVariable() { this = TVariableMonitor(result) } - } - - /** - * An instance reference used as a monitor. - * Either via `synchronized (this) { ... }` or by marking a non-static method as `synchronized`. - */ - class InstanceMonitor extends Monitor, TInstanceMonitor { - override Location getLocation() { result = this.getThisType().getLocation() } - - override string toString() { result = "InstanceMonitor(" + this.getThisType().toString() + ")" } - - /** Gets the instance reference being used as a monitor. */ - RefType getThisType() { this = TInstanceMonitor(result) } - } - - /** - * A class used as a monitor. - * This is achieved by marking a static method as `synchronized`. - */ - class ClassMonitor extends Monitor, TClassMonitor { - override Location getLocation() { result = this.getClassType().getLocation() } - - override string toString() { result = "ClassMonitor(" + this.getClassType().toString() + ")" } - - /** Gets the class being used as a monitor. */ - RefType getClassType() { this = TClassMonitor(result) } - } - - /** Holds if the expression `e` is synchronized on the monitor `m`. */ - predicate locallyMonitors(Expr e, Monitor m) { - exists(Variable v | v = m.(VariableMonitor).getVariable() | - locallyLockedOn(e, v) - or - locallySynchronizedOn(e, _, v) - ) - or - locallySynchronizedOnThis(e, m.(InstanceMonitor).getThisType()) - or - locallySynchronizedOnClass(e, m.(ClassMonitor).getClassType()) - } - - /** Holds if `localLock` refers to `lock`. */ - predicate represents(Field lock, Variable localLock) { - isLockType(lock.getType()) and - ( - localLock = lock - or - localLock.getInitializer() = lock.getAnAccess() - ) - } - - /** Gets the control flow node that must dominate `e` when `e` is synchronized on a lock. */ - ControlFlowNode getNodeToBeDominated(Expr e) { - // If `e` is the LHS of an assignment, use the control flow node for the assignment - exists(Assignment asgn | asgn.getDest() = e | result = asgn.getControlFlowNode()) - or - // if `e` is not the LHS of an assignment, use the default control flow node - not exists(Assignment asgn | asgn.getDest() = e) and - result = e.getControlFlowNode() - } - - /** Holds if `e` is synchronized on the `Lock` `lock` by a locking call. */ - predicate locallyLockedOn(Expr e, Field lock) { - isLockType(lock.getType()) and - exists(Variable localLock, MethodCall lockCall, MethodCall unlockCall | - represents(lock, localLock) and - lockCall.getQualifier() = localLock.getAnAccess() and - lockCall.getMethod().getName() in ["lock", "lockInterruptibly", "tryLock"] and - unlockCall.getQualifier() = localLock.getAnAccess() and - unlockCall.getMethod().getName() = "unlock" - | - dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and - dominates(lockCall.getControlFlowNode(), getNodeToBeDominated(e)) and - postDominates(unlockCall.getControlFlowNode(), getNodeToBeDominated(e)) - ) - } -} - /** Provides predicates, chiefly `isModifying`, to check if a given expression modifies a shared resource. */ module Modification { import semmle.code.java.dataflow.FlowSummary @@ -183,7 +56,7 @@ class ExposedField extends Field { this.getDeclaringType() instanceof ClassAnnotatedAsThreadSafe and not this.isVolatile() and // field is not a lock - not isLockType(this.getType()) and + not this.getType() instanceof LockType and // field is not thread-safe not isThreadSafeType(this.getType()) and not isThreadSafeType(this.getInitializer().getType()) and diff --git a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql index 118593e31fe..c7d33eff4a9 100644 --- a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql +++ b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql @@ -16,47 +16,7 @@ import java import semmle.code.java.controlflow.Guards import semmle.code.java.dataflow.SSA -import semmle.code.java.frameworks.Mockito - -class LockType extends RefType { - LockType() { - this.getAMethod().hasName("lock") and - this.getAMethod().hasName("unlock") - } - - Method getLockMethod() { - result.getDeclaringType() = this and - (result.hasName("lock") or result.hasName("tryLock")) - } - - Method getUnlockMethod() { - result.getDeclaringType() = this and - result.hasName("unlock") - } - - Method getIsHeldByCurrentThreadMethod() { - result.getDeclaringType() = this and - result.hasName("isHeldByCurrentThread") - } - - MethodCall getLockAccess() { - result.getMethod() = this.getLockMethod() and - // Not part of a Mockito verification call - not result instanceof MockitoVerifiedMethodCall - } - - MethodCall getUnlockAccess() { - result.getMethod() = this.getUnlockMethod() and - // Not part of a Mockito verification call - not result instanceof MockitoVerifiedMethodCall - } - - MethodCall getIsHeldByCurrentThreadAccess() { - result.getMethod() = this.getIsHeldByCurrentThreadMethod() and - // Not part of a Mockito verification call - not result instanceof MockitoVerifiedMethodCall - } -} +import semmle.code.java.Concurrency predicate lockBlock(LockType t, BasicBlock b, int locks) { locks = strictcount(int i | b.getNode(i).asExpr() = t.getLockAccess()) From fdba3acc4ba212b68fb5b64e88c9b233d88e4013 Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Thu, 9 Oct 2025 13:59:51 +0200 Subject: [PATCH 082/965] Crypto: Fix QL-for-QL alert and auto-format --- java/ql/lib/experimental/quantum/Language.qll | 2 +- .../src/experimental/quantum/Analysis/NonAESGCMCipher.ql | 7 ++++--- .../experimental/quantum/Analysis/WeakKDFIterationCount.ql | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 534ea2e1b37..4b198dd69b5 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -115,7 +115,7 @@ private class ConstantDataSourceLiteral extends Crypto::GenericConstantSourceIns private class ConstantDataSourceArrayInitializer extends Crypto::GenericConstantSourceInstance instanceof ArrayInit { - ConstantDataSourceArrayInitializer() { exists(Literal l | this.getAnInit() = l) } + ConstantDataSourceArrayInitializer() { this.getAnInit() instanceof Literal } override DataFlow::Node getOutputNode() { result.asExpr() = this } diff --git a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql index 659ae4d0286..aa05f7695c6 100644 --- a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql +++ b/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql @@ -19,6 +19,7 @@ class NonAESGCMAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { } from Crypto::KeyOperationNode op, Crypto::KeyOperationOutputNode codeNode -where op.getAKnownAlgorithm() instanceof NonAESGCMAlgorithmNode and - codeNode = op.getAnOutputArtifact() -select op, "Non-AES-GCM instance." \ No newline at end of file +where + op.getAKnownAlgorithm() instanceof NonAESGCMAlgorithmNode and + codeNode = op.getAnOutputArtifact() +select op, "Non-AES-GCM instance." diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql index 3fd84c9ecc4..2dd5b0b006b 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql @@ -17,4 +17,4 @@ where op.getIterationCount().asElement() = l and l.getValue().toInt() < 100000 select op, "Key derivation operation configures iteration count below 100k: $@", l, - l.getValue().toString() \ No newline at end of file + l.getValue().toString() From c6cc4fff51c71daf739d340a23ade7ab58f9346c Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 9 Oct 2025 08:16:28 -0400 Subject: [PATCH 083/965] Crypto: Minor fixes to WeakBlockModes, WeakHash to consider SHA3 ok, Added unknown hash. --- .../quantum/Analysis/UnknownHash.ql | 17 ++++++++++++++++ .../quantum/Analysis/WeakBlockModes.ql | 20 ++++++++++--------- .../Analysis/{WeakHashing.ql => WeakHash.ql} | 8 ++++---- 3 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 java/ql/src/experimental/quantum/Analysis/UnknownHash.ql rename java/ql/src/experimental/quantum/Analysis/{WeakHashing.ql => WeakHash.ql} (80%) diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownHash.ql b/java/ql/src/experimental/quantum/Analysis/UnknownHash.ql new file mode 100644 index 00000000000..d9dce7a7aba --- /dev/null +++ b/java/ql/src/experimental/quantum/Analysis/UnknownHash.ql @@ -0,0 +1,17 @@ +/** + * @name Unknown hashes + * @description Finds uses of cryptographic hashing algorithms of unknown type. + * @id java/quantum/unknown-hash + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::HashAlgorithmNode alg +where not exists(alg.getHashType()) +select alg, "Use of unknown hash algorithm or API." diff --git a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql index fee89507176..189f58eebad 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql @@ -13,19 +13,21 @@ import java import experimental.quantum.Language class WeakAESBlockModeAlgNode extends Crypto::KeyOperationAlgorithmNode { + Crypto::ModeOfOperationAlgorithmNode mode; + WeakAESBlockModeAlgNode() { this.getAlgorithmType() = Crypto::KeyOpAlg::TSymmetricCipher(Crypto::KeyOpAlg::AES()) and + mode = super.getModeOfOperation() and ( - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::ECB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CFB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::OFB() or - this.getModeOfOperation().getModeType() = Crypto::KeyOpAlg::CTR() + mode.getModeType() = Crypto::KeyOpAlg::ECB() or + mode.getModeType() = Crypto::KeyOpAlg::CFB() or + mode.getModeType() = Crypto::KeyOpAlg::OFB() or + mode.getModeType() = Crypto::KeyOpAlg::CTR() ) } + + Crypto::ModeOfOperationAlgorithmNode getMode() { result = mode } } -from Crypto::KeyOperationNode op, Crypto::KeyOperationOutputNode codeNode -where - op.getAKnownAlgorithm() instanceof WeakAESBlockModeAlgNode and - codeNode = op.getAnOutputArtifact() -select op, "Weak AES block mode instance." +from WeakAESBlockModeAlgNode alg +select alg, "Weak AES block mode instance $@.", alg.getMode(), alg.getMode().toString() diff --git a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql b/java/ql/src/experimental/quantum/Analysis/WeakHash.ql similarity index 80% rename from java/ql/src/experimental/quantum/Analysis/WeakHashing.ql rename to java/ql/src/experimental/quantum/Analysis/WeakHash.ql index 39bd8c6e463..737643a8f9f 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakHashing.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakHash.ql @@ -1,7 +1,7 @@ /** * @name Weak hashes * @description Finds uses of cryptographic hashing algorithms that are unapproved or otherwise weak. - * @id java/quantum/weak-hashes + * @id java/quantum/weak-hash * @kind problem * @problem.severity error * @precision high @@ -17,15 +17,15 @@ from Crypto::HashAlgorithmNode alg, Crypto::HashType htype, string msg where htype = alg.getHashType() and ( - htype != Crypto::SHA2() and + (htype != Crypto::SHA2() and htype != Crypto::SHA2()) and msg = "Use of unapproved hash algorithm or API " + htype.toString() + "." or - htype = Crypto::SHA2() and + (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and not exists(alg.getDigestLength()) and msg = "Use of approved hash algorithm or API type " + htype.toString() + " but unknown digest size." or - htype = Crypto::SHA2() and + (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and alg.getDigestLength() < 256 and msg = "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" + From 5109babd928a0733782d398d421fce4301b8baa8 Mon Sep 17 00:00:00 2001 From: yoff Date: Thu, 9 Oct 2025 14:20:28 +0200 Subject: [PATCH 084/965] java: add qldoc These interfaces were previously in a .ql file. Also, use the XXAccess variants. --- java/ql/lib/semmle/code/java/Concurrency.qll | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index f32c7ee963c..7fbf0647b27 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -4,39 +4,49 @@ module; import java import semmle.code.java.frameworks.Mockito +/** + * A Java type representing a lock. + * We identify a lock type as one that has both `lock` and `unlock` methods. + */ class LockType extends RefType { LockType() { this.getAMethod().hasName("lock") and this.getAMethod().hasName("unlock") } + /** Gets a method that is locking this lock type. */ Method getLockMethod() { result.getDeclaringType() = this and result.hasName(["lock", "lockInterruptibly", "tryLock"]) } + /** Gets a method that is unlocking this lock type. */ Method getUnlockMethod() { result.getDeclaringType() = this and result.hasName("unlock") } + /** Gets an `isHeldByCurrentThread` method of this lock type. */ Method getIsHeldByCurrentThreadMethod() { result.getDeclaringType() = this and result.hasName("isHeldByCurrentThread") } + /** Gets a call to a method that is locking this lock type. */ MethodCall getLockAccess() { result.getMethod() = this.getLockMethod() and // Not part of a Mockito verification call not result instanceof MockitoVerifiedMethodCall } + /** Gets a call to a method that is unlocking this lock type. */ MethodCall getUnlockAccess() { result.getMethod() = this.getUnlockMethod() and // Not part of a Mockito verification call not result instanceof MockitoVerifiedMethodCall } + /** Gets a call to a method that checks if the lock is held by the current thread. */ MethodCall getIsHeldByCurrentThreadAccess() { result.getMethod() = this.getIsHeldByCurrentThreadMethod() and // Not part of a Mockito verification call @@ -200,9 +210,9 @@ module Monitors { exists(Variable localLock, MethodCall lockCall, MethodCall unlockCall | represents(lock, localLock) and lockCall.getQualifier() = localLock.getAnAccess() and - lockCall.getMethod() = lock.getType().(LockType).getLockMethod() and + lockCall = lock.getType().(LockType).getLockAccess() and unlockCall.getQualifier() = localLock.getAnAccess() and - unlockCall.getMethod() = lock.getType().(LockType).getUnlockMethod() + unlockCall = lock.getType().(LockType).getUnlockAccess() | dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and dominates(lockCall.getControlFlowNode(), getNodeToBeDominated(e)) and From deb43735be446124c46d7879e53b9e68957b5910 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 9 Oct 2025 08:39:39 -0400 Subject: [PATCH 085/965] Crypto: Minor fixes to WeakSymmetricCipher, change to a singular name for consistency. --- .../{WeakSymmetricCiphers.ql => WeakSymmetricCipher.ql} | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) rename java/ql/src/experimental/quantum/Analysis/{WeakSymmetricCiphers.ql => WeakSymmetricCipher.ql} (87%) diff --git a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCipher.ql similarity index 87% rename from java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql rename to java/ql/src/experimental/quantum/Analysis/WeakSymmetricCipher.ql index 00e59ebe484..a7e03c62a53 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCiphers.ql +++ b/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCipher.ql @@ -14,7 +14,7 @@ import java import experimental.quantum.Language import Crypto::KeyOpAlg as KeyOpAlg -from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::AlgorithmType algType, string msg +from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::AlgorithmType algType where algType = alg.getAlgorithmType() and ( @@ -25,6 +25,5 @@ where algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) - ) and - msg = "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." -select alg, msg + ) +select alg, "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." From fba80870a6c184d8c2b22660f8c409d623b32bd3 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 9 Oct 2025 09:03:00 -0400 Subject: [PATCH 086/965] Crypto: Example query reorg - moving queries of this PR into 'examples' subdirectories. --- .../quantum/{Analysis => Examples}/ArtifactReuse.qll | 0 .../{Analysis => Examples}/InsecureIVorNonceSource.ql | 0 .../quantum/{Analysis => Examples}/NonAESGCMCipher.ql | 0 .../quantum/{Analysis => Examples}/ReusedNonce.ql | 0 .../quantum/{Analysis => Examples}/UnknownHash.ql | 0 .../{Analysis => Examples}/UnknownIVorNonceSource.ql | 0 .../{Analysis => Examples}/UnknownKDFIterationCount.ql | 1 + .../quantum/{Analysis => Examples}/WeakAsymmetric.ql | 8 +++----- .../quantum/{Analysis => Examples}/WeakBlockModes.ql | 0 .../quantum/{Analysis => Examples}/WeakHash.ql | 0 .../{Analysis => Examples}/WeakKDFIterationCount.ql | 0 .../quantum/{Analysis => Examples}/WeakKDFKeySize.ql | 0 .../quantum/{Analysis => Examples}/WeakRSA.ql | 0 .../quantum/{Analysis => Examples}/WeakSymmetricCipher.ql | 0 .../InsecureIVorNonceSource.qlref | 4 ---- .../UnknownIVorNonceSource.qlref | 4 ---- .../query-tests/quantum/NonceReuse/NonceReuse.qlref | 1 - .../InsecureIVorNonceSource.expected | 0 .../InsecureIVorNonceSource.java | 0 .../InsecureIVorNonceSource.qlref | 4 ++++ .../UnknownIVorNonceSource.expected | 0 .../UnknownIVorNonceSource.qlref | 4 ++++ .../quantum/{ => examples}/NonceReuse/NonceReuse.expected | 0 .../quantum/examples/NonceReuse/NonceReuse.qlref | 1 + .../quantum/{ => examples}/NonceReuse/Test.java | 0 25 files changed, 13 insertions(+), 14 deletions(-) rename java/ql/src/experimental/quantum/{Analysis => Examples}/ArtifactReuse.qll (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/InsecureIVorNonceSource.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/NonAESGCMCipher.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/ReusedNonce.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/UnknownHash.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/UnknownIVorNonceSource.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/UnknownKDFIterationCount.ql (96%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakAsymmetric.ql (57%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakBlockModes.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakHash.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakKDFIterationCount.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakKDFKeySize.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakRSA.ql (100%) rename java/ql/src/experimental/quantum/{Analysis => Examples}/WeakSymmetricCipher.ql (100%) delete mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref delete mode 100644 java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref delete mode 100644 java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.qlref rename java/ql/test/experimental/query-tests/quantum/{ => examples}/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected (100%) rename java/ql/test/experimental/query-tests/quantum/{ => examples}/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java (100%) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref rename java/ql/test/experimental/query-tests/quantum/{ => examples}/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected (100%) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref rename java/ql/test/experimental/query-tests/quantum/{ => examples}/NonceReuse/NonceReuse.expected (100%) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref rename java/ql/test/experimental/query-tests/quantum/{ => examples}/NonceReuse/Test.java (100%) diff --git a/java/ql/src/experimental/quantum/Analysis/ArtifactReuse.qll b/java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/ArtifactReuse.qll rename to java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll diff --git a/java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/InsecureIVorNonceSource.ql rename to java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql diff --git a/java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/NonAESGCMCipher.ql rename to java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql diff --git a/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql rename to java/ql/src/experimental/quantum/Examples/ReusedNonce.ql diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownHash.ql b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/UnknownHash.ql rename to java/ql/src/experimental/quantum/Examples/UnknownHash.ql diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/UnknownIVorNonceSource.ql rename to java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql diff --git a/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql similarity index 96% rename from java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql rename to java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql index db22bf4a369..b0c41298eb2 100644 --- a/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql @@ -4,6 +4,7 @@ * @id java/quantum/unknown-kdf-iteration-count * @kind problem * @precision medium + * @problem.severity error * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql similarity index 57% rename from java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql rename to java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql index 57a40bf7621..299aa8d8cbd 100644 --- a/java/ql/src/experimental/quantum/Analysis/WeakAsymmetric.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql @@ -12,13 +12,11 @@ import java import experimental.quantum.Language -from Crypto::KeyOperationAlgorithmNode op, DataFlow::Node configSrc, int keySize, string algName +from Crypto::KeyOperationAlgorithmNode op, int keySize, string algName where keySize = op.getKeySizeFixed() and keySize < 2048 and algName = op.getAlgorithmName() and // Can't be an elliptic curve - not Crypto::isEllipticCurveAlgorithmName(algName) -select op, - "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm " + - algName.toString() + " at config source $@", configSrc, configSrc.toString() + op.getAlgorithmType() != Crypto::KeyOpAlg::AlgorithmType::EllipticCurveType() +select "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm " + algName diff --git a/java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakBlockModes.ql rename to java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql diff --git a/java/ql/src/experimental/quantum/Analysis/WeakHash.ql b/java/ql/src/experimental/quantum/Examples/WeakHash.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakHash.ql rename to java/ql/src/experimental/quantum/Examples/WeakHash.ql diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakKDFIterationCount.ql rename to java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql diff --git a/java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakKDFKeySize.ql rename to java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql diff --git a/java/ql/src/experimental/quantum/Analysis/WeakRSA.ql b/java/ql/src/experimental/quantum/Examples/WeakRSA.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakRSA.ql rename to java/ql/src/experimental/quantum/Examples/WeakRSA.ql diff --git a/java/ql/src/experimental/quantum/Analysis/WeakSymmetricCipher.ql b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql similarity index 100% rename from java/ql/src/experimental/quantum/Analysis/WeakSymmetricCipher.ql rename to java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref deleted file mode 100644 index 4ce79ecde8f..00000000000 --- a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref +++ /dev/null @@ -1,4 +0,0 @@ -query: experimental/quantum/Analysis/InsecureIVorNonceSource.ql -postprocess: - - utils/test/PrettyPrintModels.ql - - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref deleted file mode 100644 index 9dfd0e28200..00000000000 --- a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref +++ /dev/null @@ -1,4 +0,0 @@ -query: experimental/quantum/Analysis/UnknownIVorNonceSource.ql -postprocess: - - utils/test/PrettyPrintModels.ql - - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.qlref b/java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.qlref deleted file mode 100644 index bfe67a6c2e8..00000000000 --- a/java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/quantum/Analysis/ReusedNonce.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected rename to java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java rename to java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref new file mode 100644 index 00000000000..1b26475bb35 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/InsecureIVorNonceSource.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected rename to java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.expected diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref new file mode 100644 index 00000000000..8bdc38026ad --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/UnknownIVorNonceSource.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/UnknownIVorNonceSource.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/NonceReuse/NonceReuse.expected rename to java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref new file mode 100644 index 00000000000..6f8aa4b838b --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref @@ -0,0 +1 @@ +experimental/quantum/Examples/ReusedNonce.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/NonceReuse/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/NonceReuse/Test.java rename to java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java From 2930e793f150758aa3ce5316d2b60c0cc45dd33d Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 10 Oct 2025 10:06:53 +0100 Subject: [PATCH 087/965] Fix mistakes in Go data flow examples in docs --- .../codeql-language-guides/analyzing-data-flow-in-go.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst index 537a2308203..be6cd30a2fa 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst @@ -224,7 +224,7 @@ The resulting module has an identical signature to the one obtained from ``DataF Flow sources ~~~~~~~~~~~~ -The data flow library contains some predefined flow sources. The class ``RemoteFlowSource`` (defined in ``semmle.code.java.dataflow.FlowSources``) represents data flow sources that may be controlled by a remote user, which is useful for finding security problems. +The data flow library contains some predefined flow sources. The class ``RemoteFlowSource`` represents data flow sources that may be controlled by a remote user, which is useful for finding security problems. Examples ~~~~~~~~ @@ -312,7 +312,7 @@ Exercise 3 import go - class GetenvSource extends CallExpr { + class GetenvSource extends DataFlow::CallNode { GetenvSource() { exists(Function m | m = this.getTarget() | m.hasQualifiedName("os", "Getenv") @@ -327,7 +327,7 @@ Exercise 4 import go - class GetenvSource extends CallExpr { + class GetenvSource extends DataFlow::CallNode { GetenvSource() { exists(Function m | m = this.getTarget() | m.hasQualifiedName("os", "Getenv") @@ -350,7 +350,6 @@ Exercise 4 sink.asExpr() = call.getArgument(0) ) } - } } module GetenvToURLFlow = DataFlow::Global; From 100463572b7bb0b2986211cbc7a2da6090d820c7 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 10 Oct 2025 10:37:09 +0100 Subject: [PATCH 088/965] Add path query example to python data flow docs --- .../analyzing-data-flow-in-python.rst | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst index 4bce178d41f..f8625eb9f0a 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst @@ -354,11 +354,50 @@ This data flow configuration tracks data flow from environment variables to open select fileOpen, "This call to 'os.open' uses data from $@.", environment, "call to 'os.getenv'" +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the first example above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id file-system-access-from-remote-input + */ + + import python + import semmle.python.dataflow.new.DataFlow + import semmle.python.dataflow.new.TaintTracking + import semmle.python.dataflow.new.RemoteFlowSources + import semmle.python.Concepts + + module RemoteToFileConfiguration implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof RemoteFlowSource + } + + predicate isSink(DataFlow::Node sink) { + sink = any(FileSystemAccess fa).getAPathArgument() + } + } + + module RemoteToFileFlow = TaintTracking::Global; + + import RemoteToFileFlow::PathGraph + + from RemoteToFileFlow::PathNode input, RemoteToFileFlow::PathNode fileAccess + where RemoteToFileFlow::flowPath(input, fileAccess) + select fileAccess.getNode(), input, fileAccess, "This file access uses data from $@.", + input, "user-controllable input." + +For more information, see ":doc:`Creating path queries `". Further reading --------------- -- `Exploring data flow with path queries `__ in the GitHub documentation. +- `Creating path queries `__ in the GitHub documentation. .. include:: ../reusables/python-further-reading.rst From 56ff0baba33fc6c755cb2831c65dc96a6f0543a6 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 25 Sep 2025 16:41:21 +0200 Subject: [PATCH 089/965] C#: Use * IDs for source locations. --- .../Locations/NonGeneratedSourceLocation.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Locations/NonGeneratedSourceLocation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Locations/NonGeneratedSourceLocation.cs index 69e9ea4e9dc..7a13138ff6a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Locations/NonGeneratedSourceLocation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Locations/NonGeneratedSourceLocation.cs @@ -40,8 +40,29 @@ namespace Semmle.Extraction.CSharp.Entities get; } + private static void WriteStarId(EscapingTextWriter writer) + { + writer.Write('*'); + } + + public sealed override void WriteQuotedId(EscapingTextWriter writer) + { + if (Context.ExtractionContext.IsStandalone) + { + WriteStarId(writer); + return; + } + base.WriteQuotedId(writer); + } + public override void WriteId(EscapingTextWriter trapFile) { + if (Context.ExtractionContext.IsStandalone) + { + WriteStarId(trapFile); + return; + } + trapFile.Write("loc,"); trapFile.WriteSubId(FileEntity); trapFile.Write(','); From 9ec0c9d5f251550673b06785101037c20cfcbc58 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 10 Oct 2025 14:06:45 +0200 Subject: [PATCH 090/965] C#: Add change note. --- csharp/ql/lib/change-notes/2025-10-10-starid-locations.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md new file mode 100644 index 00000000000..a258abcf3ab --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. From 3c80690ba822488957cafd20326eb9a832419095 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 10 Oct 2025 13:58:19 +0100 Subject: [PATCH 091/965] Fix link syntax --- .../codeql-language-guides/analyzing-data-flow-in-python.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst index f8625eb9f0a..5befd235f81 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst @@ -392,7 +392,7 @@ Here is the first example above, converted into a path query: select fileAccess.getNode(), input, fileAccess, "This file access uses data from $@.", input, "user-controllable input." -For more information, see ":doc:`Creating path queries `". +For more information, see "`Creating path queries `__". Further reading --------------- From ef93b364da64f1bea6753c77153ce3ddab6c4624 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:08:48 +0100 Subject: [PATCH 092/965] Rust: Add test cases for the mysql library. --- .../query-tests/security/CWE-089/Cargo.lock | 394 +++++++++++++++++- .../query-tests/security/CWE-089/mysql.rs | 55 +++ .../query-tests/security/CWE-089/options.yml | 1 + 3 files changed, 444 insertions(+), 6 deletions(-) create mode 100644 rust/ql/test/query-tests/security/CWE-089/mysql.rs diff --git a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock index 2df49df403f..217f1c4d6ea 100644 --- a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock @@ -17,6 +17,15 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -251,6 +260,21 @@ dependencies = [ "piper", ] +[[package]] +name = "btoi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" +dependencies = [ + "num-traits", +] + +[[package]] +name = "bufstream" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" + [[package]] name = "bumpalo" version = "3.18.1" @@ -339,6 +363,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-queue" version = "0.3.12" @@ -364,6 +397,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "der" version = "0.7.10" @@ -375,6 +443,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "derive_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "digest" version = "0.10.7" @@ -491,6 +570,17 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "flate2" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +dependencies = [ + "crc32fast", + "libz-sys", + "miniz_oxide", +] + [[package]] name = "flume" version = "0.11.1" @@ -1011,6 +1101,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "1.0.3" @@ -1034,9 +1130,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", "hashbrown", @@ -1051,6 +1147,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "io-enum" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d197db2f7ebf90507296df3aebaf65d69f5dce8559d8dbd82776a6cadab61bbf" +dependencies = [ + "derive_utils", +] + [[package]] name = "io-lifetimes" version = "1.0.11" @@ -1135,6 +1240,17 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libz-sys" +version = "1.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.3.8" @@ -1172,6 +1288,12 @@ dependencies = [ "value-bag", ] +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + [[package]] name = "md-5" version = "0.10.6" @@ -1201,6 +1323,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -1214,6 +1337,83 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "mysql" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2510a735f601bab18202b07ea0a197bd1d130d3a5ce2edf4577d225f0c3ee4" +dependencies = [ + "bufstream", + "bytes", + "crossbeam-queue", + "crossbeam-utils", + "flate2", + "io-enum", + "libc", + "lru", + "mysql_common", + "named_pipe", + "pem", + "percent-encoding", + "socket2 0.5.10", + "twox-hash", + "url", +] + +[[package]] +name = "mysql-common-derive" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" +dependencies = [ + "darling", + "heck", + "num-bigint", + "proc-macro-crate", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", + "termcolor", + "thiserror", +] + +[[package]] +name = "mysql_common" +version = "0.35.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" +dependencies = [ + "base64", + "bitflags 2.9.1", + "btoi", + "byteorder", + "bytes", + "crc32fast", + "flate2", + "getrandom 0.3.3", + "mysql-common-derive", + "num-bigint", + "num-traits", + "regex", + "saturating", + "serde", + "serde_json", + "sha1", + "sha2", + "thiserror", + "uuid", +] + +[[package]] +name = "named_pipe" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" +dependencies = [ + "winapi", +] + [[package]] name = "native-tls" version = "0.2.14" @@ -1231,6 +1431,16 @@ dependencies = [ "tempfile", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -1366,6 +1576,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "pem" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +dependencies = [ + "base64", + "serde", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -1480,6 +1700,37 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.95" @@ -1543,6 +1794,35 @@ dependencies = [ "bitflags 2.9.1", ] +[[package]] +name = "regex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + [[package]] name = "reqwest" version = "0.12.20" @@ -1697,6 +1977,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "saturating" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" + [[package]] name = "schannel" version = "0.1.27" @@ -1737,18 +2023,28 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1817,6 +2113,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "slab" version = "0.4.10" @@ -2077,6 +2379,12 @@ dependencies = [ "unicode-properties", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.6.1" @@ -2148,11 +2456,21 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "test" version = "0.0.1" dependencies = [ "futures", + "mysql", "reqwest", "sqlx", ] @@ -2250,6 +2568,36 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + [[package]] name = "tower" version = "0.5.2" @@ -2333,6 +2681,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + [[package]] name = "typenum" version = "1.18.0" @@ -2389,6 +2743,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "value-bag" version = "1.11.1" @@ -2550,6 +2914,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -2739,6 +3112,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs new file mode 100644 index 00000000000..711fe2be54b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -0,0 +1,55 @@ +use mysql::*; +use mysql::prelude::*; + +async fn test_mysql(url: &str) -> Result<(), Box> { + // connect through a MySQL connection pool + let mut pool = Pool::new("")?; // (this test is not runnable) + let mut conn: PooledConn = pool.get_conn()?; + let mut conn2: Conn = pool.get_conn()?.unwrap(); + + // construct queries + let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote10 + let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); + let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; + let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) + + // direct execution (safe) + let _ : Vec = conn.query(safe_query.as_str())?; + + // direct execution (unsafe) + let _ : Vec = conn.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_iter(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + + // prepared queries (safe) + let stmt = conn.prep(prepared_query.as_str())?; + let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),))?; + let _ : Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; + let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)])?; + conn.exec_drop(&stmt, (&remote_string.as_str(),)); + let _ : i64 = conn.exec_first(&stmt, (remote_string.as_str(),))?.unwrap(); + let _ : Result = conn.exec_first_opt(&stmt, (remote_string.as_str(),))?.unwrap(); + let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 })?; + let _ = conn.exec_fold_opt(&stmt, (remote_string.as_str(),), 0, |_: i64, _: Result| -> i64 { 0 })?; + let _ = conn.exec_iter(&stmt, (remote_string.as_str(),))?; + let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; + let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; + + Ok(()) +} + +fn main() { + println!("test_mysql..."); + match futures::executor::block_on(test_mysql("")) { + Ok(_) => println!(" successful!"), + Err(e) => println!(" error: {}", e), + } +} diff --git a/rust/ql/test/query-tests/security/CWE-089/options.yml b/rust/ql/test/query-tests/security/CWE-089/options.yml index 24744b7dfb4..776696a56a6 100644 --- a/rust/ql/test/query-tests/security/CWE-089/options.yml +++ b/rust/ql/test/query-tests/security/CWE-089/options.yml @@ -3,3 +3,4 @@ qltest_dependencies: - reqwest = { version = "0.12.9", features = ["blocking"] } - sqlx = { version = "0.8", features = ["mysql", "sqlite", "postgres", "runtime-async-std", "tls-native-tls"] } - futures = { version = "0.3" } + - mysql = { version = "26.0.1" } From 883e00558af2df4eca2e00e8ec05489b6597124a Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:35:20 +0100 Subject: [PATCH 093/965] Rust: Add test cases for the mysql_async library. --- .../query-tests/security/CWE-089/Cargo.lock | 94 ++++++++++-- .../query-tests/security/CWE-089/mysql.rs | 134 ++++++++++++------ .../query-tests/security/CWE-089/options.yml | 1 + 3 files changed, 179 insertions(+), 50 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock index 217f1c4d6ea..cd8ef4b1381 100644 --- a/rust/ql/test/query-tests/security/CWE-089/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-089/Cargo.lock @@ -1199,6 +1199,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "keyed_priority_queue" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +dependencies = [ + "indexmap", +] + [[package]] name = "kv-log-macro" version = "1.0.7" @@ -1294,6 +1303,15 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +[[package]] +name = "lru" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" +dependencies = [ + "hashbrown", +] + [[package]] name = "md-5" version = "0.10.6" @@ -1350,7 +1368,7 @@ dependencies = [ "flate2", "io-enum", "libc", - "lru", + "lru 0.12.5", "mysql_common", "named_pipe", "pem", @@ -1378,6 +1396,34 @@ dependencies = [ "thiserror", ] +[[package]] +name = "mysql_async" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "277ce2f2459b2af4cc6d0a0b7892381f80800832f57c533f03e2845f4ea331ea" +dependencies = [ + "bytes", + "crossbeam-queue", + "flate2", + "futures-core", + "futures-sink", + "futures-util", + "keyed_priority_queue", + "lru 0.14.0", + "mysql_common", + "pem", + "percent-encoding", + "rand 0.9.2", + "serde", + "serde_json", + "socket2 0.5.10", + "thiserror", + "tokio", + "tokio-util", + "twox-hash", + "url", +] + [[package]] name = "mysql_common" version = "0.35.5" @@ -1453,7 +1499,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -1762,8 +1808,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -1773,7 +1829,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1785,6 +1851,15 @@ dependencies = [ "getrandom 0.2.16", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + [[package]] name = "redox_syscall" version = "0.5.13" @@ -1892,7 +1967,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "signature", "spki", "subtle", @@ -2110,7 +2185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -2288,7 +2363,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand", + "rand 0.8.5", "rsa", "serde", "sha1", @@ -2326,7 +2401,7 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_json", "sha2", @@ -2471,6 +2546,7 @@ version = "0.0.1" dependencies = [ "futures", "mysql", + "mysql_async", "reqwest", "sqlx", ] diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 711fe2be54b..33e5c83c8bf 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -1,54 +1,106 @@ -use mysql::*; -use mysql::prelude::*; +mod sync_test +{ + use mysql::*; + use mysql::prelude::*; -async fn test_mysql(url: &str) -> Result<(), Box> { - // connect through a MySQL connection pool - let mut pool = Pool::new("")?; // (this test is not runnable) - let mut conn: PooledConn = pool.get_conn()?; - let mut conn2: Conn = pool.get_conn()?.unwrap(); + pub fn test_mysql(url: &str) -> Result<(), Box> { + // connect through a MySQL connection pool + let mut pool = Pool::new("")?; // (this test is not runnable) + let mut conn: PooledConn = pool.get_conn()?; + let mut conn2: Conn = pool.get_conn()?.unwrap(); - // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote10 - let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); - let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; - let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) + // construct queries + let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote10 + let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); + let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; + let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) - // direct execution (safe) - let _ : Vec = conn.query(safe_query.as_str())?; + // direct execution (safe) + let _ : Vec = conn.query(safe_query.as_str())?; - // direct execution (unsafe) - let _ : Vec = conn.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_iter(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + // direct execution (unsafe) + let _ : Vec = conn.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_iter(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - // prepared queries (safe) - let stmt = conn.prep(prepared_query.as_str())?; - let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),))?; - let _ : Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; - let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)])?; - conn.exec_drop(&stmt, (&remote_string.as_str(),)); - let _ : i64 = conn.exec_first(&stmt, (remote_string.as_str(),))?.unwrap(); - let _ : Result = conn.exec_first_opt(&stmt, (remote_string.as_str(),))?.unwrap(); - let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 })?; - let _ = conn.exec_fold_opt(&stmt, (remote_string.as_str(),), 0, |_: i64, _: Result| -> i64 { 0 })?; - let _ = conn.exec_iter(&stmt, (remote_string.as_str(),))?; - let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; - let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; + // prepared queries (safe) + let stmt = conn.prep(prepared_query.as_str())?; + let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),))?; + let _ : Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; + let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)])?; + conn.exec_drop(&stmt, (&remote_string.as_str(),)); + let _ : i64 = conn.exec_first(&stmt, (remote_string.as_str(),))?.unwrap(); + let _ : Result = conn.exec_first_opt(&stmt, (remote_string.as_str(),))?.unwrap(); + let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 })?; + let _ = conn.exec_fold_opt(&stmt, (remote_string.as_str(),), 0, |_: i64, _: Result| -> i64 { 0 })?; + let _ = conn.exec_iter(&stmt, (remote_string.as_str(),))?; + let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; + let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; - Ok(()) + Ok(()) + } +} + +mod async_test +{ + use mysql_async::*; + use mysql_async::prelude::*; + + pub async fn test_mysql_async(url: &str) -> Result<()> { + // connect through a MySQL connection pool + let mut pool = Pool::new(""); // (this test is not runnable) + let mut conn = pool.get_conn().await?; + + // construct queries + let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote11 + let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); + let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; + let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) + + // direct execution (safe) + let _ : Vec = conn.query(safe_query.as_str()).await?; + + // direct execution (unsafe) + let _ : Vec = conn.query(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ : Option = conn.query_first(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_iter(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_stream::(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {}).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + + // prepared queries (safe) + let stmt = conn.prep(prepared_query.as_str()).await?; + let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),)).await?; + let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)]).await?; + conn.exec_drop(&stmt, (&remote_string.as_str(),)); + let _ : Option = conn.exec_first(&stmt, (remote_string.as_str(),)).await?; + let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 }).await?; + let _ = conn.exec_iter(&stmt, (remote_string.as_str(),)).await?; + let _ = conn.exec_stream::(&stmt, (remote_string.as_str(),)).await?; + let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {}).await?; + + Ok(()) + } } fn main() { println!("test_mysql..."); - match futures::executor::block_on(test_mysql("")) { + match (sync_test::test_mysql("")) { + Ok(_) => println!(" successful!"), + Err(e) => println!(" error: {}", e), + } + + println!("test_mysql_async..."); + match futures::executor::block_on(async_test::test_mysql_async("")) { Ok(_) => println!(" successful!"), Err(e) => println!(" error: {}", e), } diff --git a/rust/ql/test/query-tests/security/CWE-089/options.yml b/rust/ql/test/query-tests/security/CWE-089/options.yml index 776696a56a6..1febc233696 100644 --- a/rust/ql/test/query-tests/security/CWE-089/options.yml +++ b/rust/ql/test/query-tests/security/CWE-089/options.yml @@ -4,3 +4,4 @@ qltest_dependencies: - sqlx = { version = "0.8", features = ["mysql", "sqlite", "postgres", "runtime-async-std", "tls-native-tls"] } - futures = { version = "0.3" } - mysql = { version = "26.0.1" } + - mysql_async = { version = "0.36.1" } From f15a34f361aa9f05153d88e33e2f2c13d51c43f1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:38:25 +0100 Subject: [PATCH 094/965] Rust: Add test cases for transactions as well. --- rust/ql/test/query-tests/security/CWE-089/mysql.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 33e5c83c8bf..92377eaa493 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -45,6 +45,11 @@ mod sync_test let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; + // transactions + let mut trans = conn.start_transaction(TxOpts::default())?; + trans.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + trans.commit()?; + Ok(()) } } @@ -88,6 +93,11 @@ mod async_test let _ = conn.exec_stream::(&stmt, (remote_string.as_str(),)).await?; let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {}).await?; + // transactions + let mut trans = conn.start_transaction(TxOpts::default()).await?; + trans.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + trans.commit().await?; + Ok(()) } } From 944e116cc00cc4ff890d3669fe6b9ef9f1f5618b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 10 Oct 2025 16:22:50 +0100 Subject: [PATCH 095/965] Add path query example to other lang data flow docs --- .../analyzing-data-flow-in-cpp.rst | 42 ++++++++++++++++ .../analyzing-data-flow-in-csharp.rst | 42 ++++++++++++++++ .../analyzing-data-flow-in-go.rst | 48 +++++++++++++++++++ .../analyzing-data-flow-in-java.rst | 46 ++++++++++++++++++ ...data-flow-in-javascript-and-typescript.rst | 40 ++++++++++++++++ .../analyzing-data-flow-in-ruby.rst | 37 ++++++++++++++ .../analyzing-data-flow-in-rust.rst | 40 ++++++++++++++++ .../analyzing-data-flow-in-swift.rst | 39 +++++++++++++++ 8 files changed, 334 insertions(+) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst index e04cdac3deb..4216c1b379c 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst @@ -411,6 +411,48 @@ Exercise 4 GetenvToGethostbynameFlow::flow(source, sink) select getenv, fc +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the answer to exercise 4 above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id getenv-to-gethostbyname + */ + + import cpp + import semmle.code.cpp.dataflow.new.DataFlow + + class GetenvSource extends DataFlow::Node { + GetenvSource() { this.asIndirectExpr(1).(FunctionCall).getTarget().hasGlobalName("getenv") } + } + + module GetenvToGethostbynameConfiguration implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof GetenvSource } + + predicate isSink(DataFlow::Node sink) { + exists(FunctionCall fc | + sink.asIndirectExpr(1) = fc.getArgument(0) and + fc.getTarget().hasName("gethostbyname") + ) + } + } + + module GetenvToGethostbynameFlow = DataFlow::Global; + + import GetenvToGethostbynameFlow::PathGraph + + from GetenvToGethostbynameFlow::PathNode source, GetenvToGethostbynameFlow::PathNode sink + where GetenvToGethostbynameFlow::flowPath(source, sink) + select sink.getNode(), source, sink, "This file access uses data from $@.", + source, "user-controllable input." + +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst index 7e60956a5a9..08905fa4d15 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst @@ -537,6 +537,48 @@ This can be adapted from the ``SystemUriFlow`` class: } } +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the answer to exercise 4 above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id getenv-to-gethostbyname + */ + + import csharp + + class EnvironmentVariableFlowSource extends DataFlow::ExprNode { + EnvironmentVariableFlowSource() { + this.getExpr().(MethodCall).getTarget().hasQualifiedName("System.Environment.GetEnvironmentVariable") + } + } + + module EnvironmentToUriConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { + src instanceof EnvironmentVariableFlowSource + } + + predicate isSink(DataFlow::Node sink) { + exists(Call c | c.getTarget().(Constructor).getDeclaringType().hasQualifiedName("System.Uri") + and sink.asExpr()=c.getArgument(0)) + } + } + + module EnvironmentToUriFlow = DataFlow::Global; + + import EnvironmentToUriFlow::PathGraph + + from EnvironmentToUriFlow::PathNode src, EnvironmentToUriFlow::PathNode sink + where EnvironmentToUriFlow::flowPath(src, sink) + select src.getNode(), src, sink, "This environment variable constructs a 'System.Uri' $@.", sink, "here" + +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst index be6cd30a2fa..4b56b2093f3 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst @@ -358,6 +358,54 @@ Exercise 4 where GetenvToURLFlow::flow(src, sink) select src, "This environment variable constructs a URL $@.", sink, "here" +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the answer to exercise 4 above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id getenv-to-url + */ + + import go + + class GetenvSource extends DataFlow::CallNode { + GetenvSource() { + exists(Function m | m = this.getTarget() | + m.hasQualifiedName("os", "Getenv") + ) + } + } + + module GetenvToURLConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof GetenvSource + } + + predicate isSink(DataFlow::Node sink) { + exists(Function urlParse, CallExpr call | + ( + urlParse.hasQualifiedName("url", "Parse") or + urlParse.hasQualifiedName("url", "ParseRequestURI") + ) and + call.getTarget() = urlParse and + sink.asExpr() = call.getArgument(0) + ) + } + } + + module GetenvToURLFlow = DataFlow::Global; + + import GetenvToURLFlow::PathGraph + + from GetenvToURLFlow::PathNode src, GetenvToURLFlow::PathNode sink + where GetenvToURLFlow::flowPath(src, sink) + select src.getNode(), src, sink, "This environment variable constructs a URL $@.", sink, "here" + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst index bade378d3a0..3e3bf9cab03 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst @@ -361,6 +361,52 @@ Exercise 4 where GetenvToURLFlow::flow(src, sink) select src, "This environment variable constructs a URL $@.", sink, "here" +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the answer to exercise 4 above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id getenv-to-url + */ + + import java + import semmle.code.java.dataflow.DataFlow + + class GetenvSource extends DataFlow::ExprNode { + GetenvSource() { + exists(Method m | m = this.asExpr().(MethodCall).getMethod() | + m.hasName("getenv") and + m.getDeclaringType() instanceof TypeSystem + ) + } + } + + module GetenvToURLConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof GetenvSource + } + + predicate isSink(DataFlow::Node sink) { + exists(Call call | + sink.asExpr() = call.getArgument(0) and + call.getCallee().(Constructor).getDeclaringType().hasQualifiedName("java.net", "URL") + ) + } + } + + module GetenvToURLFlow = DataFlow::Global; + + import GetenvToURLFlow::PathGraph + + from GetenvToURLFlow::PathNode src, GetenvToURLFlow::PathNode sink + where GetenvToURLFlow::flowPath(src, sink) + select src.getNode(), src, sink, "This environment variable constructs a URL $@.", sink, "here" + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst index d6e6621e578..6e7284f0c44 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst @@ -541,6 +541,46 @@ Exercise 4 where HardCodedTagNameFlow::flow(source, sink) select source, sink +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the answer to exercise 4 above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id hard-coded-tag-name + */ + + import javascript + + class ArrayEntryCallResult extends DataFlow::Node { + ArrayEntryCallResult() { + exists(DataFlow::CallNode call, string index | + this = call.getAPropertyRead(index) and + index.regexpMatch("\\d+") + ) + } + } + + module HardCodedTagNameConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ArrayEntryCallResult } + + predicate isSink(DataFlow::Node sink) { + sink = DataFlow::globalVarRef("document").getAMethodCall("createElement").getArgument(0) + } + } + + module HardCodedTagNameFlow = DataFlow::Global; + + import HardCodedTagNameFlow::PathGraph + + from HardCodedTagNameFlow::PathNode source, HardCodedTagNameFlow::PathNode sink + where HardCodedTagNameFlow::flowPath(source, sink) + select sink.getNode(), source, sink, "Hard-coded tag name $@.", source, "here" + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst index 53d6dfa2d1c..c472e0a7b1e 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst @@ -372,6 +372,43 @@ The following global data-flow query finds calls to ``File.open`` where the file select fileOpen, "This call to 'File.open' uses data from $@.", environment, "an environment variable" +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the first example above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id file-system-access-from-remote-input + */ + + import codeql.ruby.DataFlow + import codeql.ruby.TaintTracking + import codeql.ruby.Concepts + import codeql.ruby.dataflow.RemoteFlowSources + + module RemoteToFileConfiguration implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node sink) { + sink = any(FileSystemAccess fa).getAPathArgument() + } + } + + module RemoteToFileFlow = TaintTracking::Global; + + import RemoteToFileFlow::PathGraph + + from RemoteToFileFlow::PathNode input, RemoteToFileFlow::PathNode fileAccess + where RemoteToFileFlow::flowPath(input, fileAccess) + select fileAccess.getNode(), input, fileAccess, "This file access uses data from $@.", + input, "user-controllable input." + +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst index 8aed9fc9326..f8f05a11674 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst @@ -231,6 +231,46 @@ The following global taint-tracking query finds places where a string literal is where ConstantPasswordFlow::flow(sourceNode, sinkNode) select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the first example above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id constant-password + */ + + import rust + import codeql.rust.dataflow.DataFlow + import codeql.rust.dataflow.TaintTracking + + module ConstantPasswordConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node.asExpr().getExpr() instanceof StringLiteralExpr } + + predicate isSink(DataFlow::Node node) { + // any argument going to a parameter called `password` + exists(Function f, CallExpr call, int index | + call.getArg(index) = node.asExpr().getExpr() and + call.getStaticTarget() = f and + f.getParam(index).getPat().(IdentPat).getName().getText() = "password" + ) + } + } + + module ConstantPasswordFlow = TaintTracking::Global; + + import ConstantPasswordFlow::PathGraph + + from ConstantPasswordFlow::PathNode sourceNode, ConstantPasswordFlow::PathNode sinkNode + where ConstantPasswordFlow::flowPath(sourceNode, sinkNode) + select sinkNode.getNode(), sourceNode, sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() + +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst index b41c82ca7ef..bf60fa9b884 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst @@ -278,6 +278,45 @@ The following global taint-tracking query finds places where a value from a remo where SqlInjectionFlow::flow(sourceNode, sinkNode) select sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" +Path Query Example +~~~~~~~~~~~~~~~~~~ + +Here is the first example above, converted into a path query: + +.. code-block:: ql + + /** + * @kind path-problem + * @problem.severity warning + * @id sql-injection + */ + + import swift + import codeql.swift.dataflow.DataFlow + import codeql.swift.dataflow.TaintTracking + import codeql.swift.dataflow.FlowSources + + module SqlInjectionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node instanceof FlowSource } + + predicate isSink(DataFlow::Node node) { + exists(CallExpr call | + call.getStaticTarget().(Method).hasQualifiedName("Connection", "execute(_:)") and + call.getArgument(0).getExpr() = node.asExpr() + ) + } + } + + module SqlInjectionFlow = TaintTracking::Global; + + import SqlInjectionFlow::PathGraph + + from SqlInjectionFlow::PathNode sourceNode, SqlInjectionFlow::PathNode sinkNode + where SqlInjectionFlow::flowPath(sourceNode, sinkNode) + select sinkNode.getNode(), sourceNode, sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" + +For more information, see "`Creating path queries `__". + Further reading --------------- From 47632cdbd1615357124d3af6cb89532794c6e07f Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 10 Oct 2025 17:08:24 +0100 Subject: [PATCH 096/965] C#: Improve log messages in `DotNetCliInvoker` --- .../DotNetCliInvoker.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs index a690e3f880f..e3efce09481 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs @@ -44,7 +44,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching // Configure the proxy settings, if applicable. if (this.proxy != null) { - logger.LogInfo($"Setting up Dependabot proxy at {this.proxy.Address}"); + logger.LogDebug($"Configuring environment variables for the Dependabot proxy at {this.proxy.Address}"); startInfo.EnvironmentVariables["HTTP_PROXY"] = this.proxy.Address; startInfo.EnvironmentVariables["HTTPS_PROXY"] = this.proxy.Address; @@ -57,11 +57,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private bool RunCommandAux(string args, string? workingDirectory, out IList output, bool silent) { var dirLog = string.IsNullOrWhiteSpace(workingDirectory) ? "" : $" in {workingDirectory}"; - logger.LogInfo($"Running '{Exec} {args}'{dirLog}"); var pi = MakeDotnetStartInfo(args, workingDirectory); var threadId = Environment.CurrentManagedThreadId; void onOut(string s) => logger.Log(silent ? Severity.Debug : Severity.Info, s, threadId); void onError(string s) => logger.LogError(s, threadId); + logger.LogInfo($"Running '{Exec} {args}'{dirLog}"); var exitCode = pi.ReadOutput(out output, onOut, onError); if (exitCode != 0) { From f16742bf743c1f91a7c6c04763f04d9f81a51c7e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:45:12 +0100 Subject: [PATCH 097/965] Rust: Add models. --- .../rust/frameworks/mysql-async.model.yml | 13 + .../codeql/rust/frameworks/mysql.model.yml | 17 + .../security/CWE-089/SqlInjection.expected | 615 ++++++++++++++---- .../query-tests/security/CWE-089/mysql.rs | 52 +- 4 files changed, 538 insertions(+), 159 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml create mode 100644 rust/ql/lib/codeql/rust/frameworks/mysql.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml new file mode 100644 index 00000000000..fc38ca2baed --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml @@ -0,0 +1,13 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["<_ as mysql_async::queryable::Queryable>::query", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_drop", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_first", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_stream", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] + - ["::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["::prep", "Argument[0]", "sql-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml new file mode 100644 index 00000000000..da3ee84a779 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -0,0 +1,17 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["<_ as mysql::conn::queryable::Queryable>::query", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_opt", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_drop", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_first", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_first_opt", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[0]", "sql-injection", "manual"] + - ["::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query", "Argument[0]", "sql-injection", "manual"] + - ["::prep", "Argument[0]", "sql-injection", "manual"] diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 45ce48f2ef3..f58ee2343d0 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,4 +1,26 @@ #select +| mysql.rs:22:33:22:37 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:22:33:22:37 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:22:33:22:37 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:22:33:22:37 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:23:55:23:63 | query_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:23:55:23:63 | query_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:24:14:24:23 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:24:14:24:23 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:25:28:25:38 | query_first | mysql.rs:13:33:13:54 | ...::get | mysql.rs:25:28:25:38 | query_first | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:26:49:26:63 | query_first_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:26:49:26:63 | query_first_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:27:22:27:31 | query_fold | mysql.rs:13:33:13:54 | ...::get | mysql.rs:27:22:27:31 | query_fold | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:28:22:28:35 | query_fold_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:28:22:28:35 | query_fold_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:29:22:29:31 | query_iter | mysql.rs:13:33:13:54 | ...::get | mysql.rs:29:22:29:31 | query_iter | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:30:22:30:30 | query_map | mysql.rs:13:33:13:54 | ...::get | mysql.rs:30:22:30:30 | query_map | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:31:22:31:34 | query_map_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:31:22:31:34 | query_map_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:50:15:50:24 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:50:15:50:24 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:77:33:77:37 | query | mysql.rs:68:33:68:54 | ...::get | mysql.rs:77:33:77:37 | query | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:78:14:78:23 | query_drop | mysql.rs:68:33:68:54 | ...::get | mysql.rs:78:14:78:23 | query_drop | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:79:36:79:46 | query_first | mysql.rs:68:33:68:54 | ...::get | mysql.rs:79:36:79:46 | query_first | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:80:22:80:31 | query_fold | mysql.rs:68:33:68:54 | ...::get | mysql.rs:80:22:80:31 | query_fold | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:81:22:81:31 | query_iter | mysql.rs:68:33:68:54 | ...::get | mysql.rs:81:22:81:31 | query_iter | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:82:22:82:33 | query_stream | mysql.rs:68:33:68:54 | ...::get | mysql.rs:82:22:82:33 | query_stream | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:83:22:83:30 | query_map | mysql.rs:68:33:68:54 | ...::get | mysql.rs:83:22:83:30 | query_map | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:98:15:98:24 | query_drop | mysql.rs:68:33:68:54 | ...::get | mysql.rs:98:15:98:24 | query_drop | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | | sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -12,180 +34,507 @@ | sqlx.rs:153:17:153:27 | ...::query | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:153:17:153:27 | ...::query | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | | sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | edges +| mysql.rs:13:13:13:29 | mut remote_string | mysql.rs:15:86:15:98 | remote_string | provenance | | +| mysql.rs:13:33:13:54 | ...::get | mysql.rs:13:33:13:77 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | mysql.rs:13:33:13:86 | ... .unwrap() | provenance | MaD:28 | +| mysql.rs:13:33:13:86 | ... .unwrap() | mysql.rs:13:33:13:93 | ... .text() [Ok] | provenance | MaD:32 | +| mysql.rs:13:33:13:93 | ... .text() [Ok] | mysql.rs:13:33:13:121 | ... .unwrap_or(...) | provenance | MaD:29 | +| mysql.rs:13:33:13:121 | ... .unwrap_or(...) | mysql.rs:13:13:13:29 | mut remote_string | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:50 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:76 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:36 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:51 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:76 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:44 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:48 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:44 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:43 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:47 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:51 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:37 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | +| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:28:15:104 | ... + ... | provenance | MaD:25 | +| mysql.rs:15:28:15:104 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | +| mysql.rs:15:85:15:98 | &remote_string [&ref] | mysql.rs:15:28:15:98 | ... + ... | provenance | MaD:24 | +| mysql.rs:15:86:15:98 | remote_string | mysql.rs:15:85:15:98 | &remote_string [&ref] | provenance | | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:23:65:23:85 | unsafe_query.as_str() | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | +| mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:24:25:24:45 | unsafe_query.as_str() | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:25:40:25:60 | unsafe_query.as_str() | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | +| mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:26:65:26:85 | unsafe_query.as_str() | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | +| mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:27:33:27:53 | unsafe_query.as_str() | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | +| mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:28:37:28:57 | unsafe_query.as_str() | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | +| mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:30:32:30:52 | unsafe_query.as_str() | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | +| mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:31:36:31:56 | unsafe_query.as_str() | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | +| mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:50:26:50:46 | unsafe_query.as_str() | mysql.rs:50:15:50:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | mysql.rs:50:15:50:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:68:13:68:29 | mut remote_string | mysql.rs:70:86:70:98 | remote_string | provenance | | +| mysql.rs:68:33:68:54 | ...::get | mysql.rs:68:33:68:77 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| mysql.rs:68:33:68:77 | ...::get(...) [Ok] | mysql.rs:68:33:68:86 | ... .unwrap() | provenance | MaD:28 | +| mysql.rs:68:33:68:86 | ... .unwrap() | mysql.rs:68:33:68:93 | ... .text() [Ok] | provenance | MaD:32 | +| mysql.rs:68:33:68:93 | ... .text() [Ok] | mysql.rs:68:33:68:121 | ... .unwrap_or(...) | provenance | MaD:29 | +| mysql.rs:68:33:68:121 | ... .unwrap_or(...) | mysql.rs:68:13:68:29 | mut remote_string | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:50 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:36 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:59 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:44 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:44 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:59 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:43 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:37 | unsafe_query | provenance | | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:26 | +| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:70:28:70:98 | ... + ... | mysql.rs:70:13:70:24 | unsafe_query | provenance | | +| mysql.rs:70:28:70:98 | ... + ... | mysql.rs:70:28:70:104 | ... + ... | provenance | MaD:25 | +| mysql.rs:70:28:70:104 | ... + ... | mysql.rs:70:13:70:24 | unsafe_query | provenance | | +| mysql.rs:70:85:70:98 | &remote_string [&ref] | mysql.rs:70:28:70:98 | ... + ... | provenance | MaD:24 | +| mysql.rs:70:86:70:98 | remote_string | mysql.rs:70:85:70:98 | &remote_string [&ref] | provenance | | +| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:77:39:77:59 | unsafe_query.as_str() | mysql.rs:77:33:77:37 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | mysql.rs:77:33:77:37 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:78:25:78:45 | unsafe_query.as_str() | mysql.rs:78:14:78:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | mysql.rs:78:14:78:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:79:48:79:68 | unsafe_query.as_str() | mysql.rs:79:36:79:46 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | mysql.rs:79:36:79:46 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:80:33:80:53 | unsafe_query.as_str() | mysql.rs:80:22:80:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | mysql.rs:80:22:80:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:81:33:81:53 | unsafe_query.as_str() | mysql.rs:81:22:81:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | mysql.rs:81:22:81:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:82:48:82:68 | unsafe_query.as_str() | mysql.rs:82:22:82:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | mysql.rs:82:22:82:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:83:32:83:52 | unsafe_query.as_str() | mysql.rs:83:22:83:30 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | mysql.rs:83:22:83:30 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | +| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:98:26:98:46 | unsafe_query.as_str() | mysql.rs:98:15:98:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | mysql.rs:98:15:98:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | -| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:5 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:6 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:10 | +| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:22 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:23 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:27 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:14 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:14 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:31 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:31 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | -| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:28 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:32 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:13 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:9 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:13 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:30 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:26 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:30 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:16 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:17 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:33 | +| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:34 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:30 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:13 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:9 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:13 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:30 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:26 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:30 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:25 | | sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:7 | +| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:24 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:13 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:9 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:13 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:30 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:26 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:30 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:16 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:17 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:33 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:34 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | -| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:28 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:32 | +| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:25 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:7 | +| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:24 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:3 Sink:MaD:3 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:3 Sink:MaD:3 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | -| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:28 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:32 | +| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:26 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:30 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:25 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:7 | +| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:24 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | models -| 1 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | -| 2 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | -| 3 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | -| 4 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 5 | Source: std::env::args; ReturnValue.Element; commandargs | -| 6 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 7 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 8 | Summary: ::add; Argument[self]; ReturnValue; value | -| 9 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 10 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 11 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 14 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 15 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 16 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 17 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | +| 2 | Sink: <_ as mysql::conn::queryable::Queryable>::query_drop; Argument[0]; sql-injection | +| 3 | Sink: <_ as mysql::conn::queryable::Queryable>::query_first; Argument[0]; sql-injection | +| 4 | Sink: <_ as mysql::conn::queryable::Queryable>::query_first_opt; Argument[0]; sql-injection | +| 5 | Sink: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[0]; sql-injection | +| 6 | Sink: <_ as mysql::conn::queryable::Queryable>::query_fold_opt; Argument[0]; sql-injection | +| 7 | Sink: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[0]; sql-injection | +| 8 | Sink: <_ as mysql::conn::queryable::Queryable>::query_map_opt; Argument[0]; sql-injection | +| 9 | Sink: <_ as mysql::conn::queryable::Queryable>::query_opt; Argument[0]; sql-injection | +| 10 | Sink: <_ as mysql_async::queryable::Queryable>::query; Argument[0]; sql-injection | +| 11 | Sink: <_ as mysql_async::queryable::Queryable>::query_drop; Argument[0]; sql-injection | +| 12 | Sink: <_ as mysql_async::queryable::Queryable>::query_first; Argument[0]; sql-injection | +| 13 | Sink: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[0]; sql-injection | +| 14 | Sink: <_ as mysql_async::queryable::Queryable>::query_map; Argument[0]; sql-injection | +| 15 | Sink: <_ as mysql_async::queryable::Queryable>::query_stream; Argument[0]; sql-injection | +| 16 | Sink: ::query_iter; Argument[0]; sql-injection | +| 17 | Sink: ::query_iter; Argument[0]; sql-injection | +| 18 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | +| 19 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | +| 20 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | +| 21 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 22 | Source: std::env::args; ReturnValue.Element; commandargs | +| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 24 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | +| 25 | Summary: ::add; Argument[self]; ReturnValue; value | +| 26 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 27 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 28 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 29 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 30 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 31 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 34 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes +| mysql.rs:13:13:13:29 | mut remote_string | semmle.label | mut remote_string | +| mysql.rs:13:33:13:54 | ...::get | semmle.label | ...::get | +| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| mysql.rs:13:33:13:86 | ... .unwrap() | semmle.label | ... .unwrap() | +| mysql.rs:13:33:13:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| mysql.rs:13:33:13:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| mysql.rs:15:13:15:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:15:28:15:98 | ... + ... | semmle.label | ... + ... | +| mysql.rs:15:28:15:104 | ... + ... | semmle.label | ... + ... | +| mysql.rs:15:85:15:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | +| mysql.rs:15:86:15:98 | remote_string | semmle.label | remote_string | +| mysql.rs:22:33:22:37 | query | semmle.label | query | +| mysql.rs:22:33:22:37 | query | semmle.label | query | +| mysql.rs:22:39:22:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:23:55:23:63 | query_opt | semmle.label | query_opt | +| mysql.rs:23:65:23:76 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:23:65:23:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:24:14:24:23 | query_drop | semmle.label | query_drop | +| mysql.rs:24:25:24:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:24:25:24:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:25:28:25:38 | query_first | semmle.label | query_first | +| mysql.rs:25:40:25:51 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:25:40:25:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:26:49:26:63 | query_first_opt | semmle.label | query_first_opt | +| mysql.rs:26:65:26:76 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:26:65:26:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:27:22:27:31 | query_fold | semmle.label | query_fold | +| mysql.rs:27:33:27:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:27:33:27:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:28:22:28:35 | query_fold_opt | semmle.label | query_fold_opt | +| mysql.rs:28:37:28:48 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:28:37:28:57 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:29:22:29:31 | query_iter | semmle.label | query_iter | +| mysql.rs:29:33:29:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:30:22:30:30 | query_map | semmle.label | query_map | +| mysql.rs:30:32:30:43 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:30:32:30:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:31:22:31:34 | query_map_opt | semmle.label | query_map_opt | +| mysql.rs:31:36:31:47 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:31:36:31:56 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:32:34:32:38 | query | semmle.label | query | +| mysql.rs:32:34:32:38 | query | semmle.label | query | +| mysql.rs:32:40:32:51 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:50:15:50:24 | query_drop | semmle.label | query_drop | +| mysql.rs:50:26:50:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:50:26:50:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:68:13:68:29 | mut remote_string | semmle.label | mut remote_string | +| mysql.rs:68:33:68:54 | ...::get | semmle.label | ...::get | +| mysql.rs:68:33:68:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| mysql.rs:68:33:68:86 | ... .unwrap() | semmle.label | ... .unwrap() | +| mysql.rs:68:33:68:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| mysql.rs:68:33:68:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| mysql.rs:70:13:70:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:70:28:70:98 | ... + ... | semmle.label | ... + ... | +| mysql.rs:70:28:70:104 | ... + ... | semmle.label | ... + ... | +| mysql.rs:70:85:70:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | +| mysql.rs:70:86:70:98 | remote_string | semmle.label | remote_string | +| mysql.rs:77:33:77:37 | query | semmle.label | query | +| mysql.rs:77:39:77:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:77:39:77:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:78:14:78:23 | query_drop | semmle.label | query_drop | +| mysql.rs:78:25:78:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:78:25:78:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:79:36:79:46 | query_first | semmle.label | query_first | +| mysql.rs:79:48:79:59 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:79:48:79:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:80:22:80:31 | query_fold | semmle.label | query_fold | +| mysql.rs:80:33:80:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:80:33:80:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:81:22:81:31 | query_iter | semmle.label | query_iter | +| mysql.rs:81:33:81:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:81:33:81:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:82:22:82:33 | query_stream | semmle.label | query_stream | +| mysql.rs:82:48:82:59 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:82:48:82:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:83:22:83:30 | query_map | semmle.label | query_map | +| mysql.rs:83:32:83:43 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:83:32:83:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:98:15:98:24 | query_drop | semmle.label | query_drop | +| mysql.rs:98:26:98:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:98:26:98:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 92377eaa493..30f5d8b022d 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -10,29 +10,29 @@ mod sync_test let mut conn2: Conn = pool.get_conn()?.unwrap(); // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote10 + let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ Source=remote10 let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) // direct execution (safe) - let _ : Vec = conn.query(safe_query.as_str())?; + let _ : Vec = conn.query(safe_query.as_str())?; // $ sql-sink // direct execution (unsafe) - let _ : Vec = conn.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_iter(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec = conn.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + conn.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_iter(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 // prepared queries (safe) - let stmt = conn.prep(prepared_query.as_str())?; + let stmt = conn.prep(prepared_query.as_str())?; // $ sql-sink let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),))?; let _ : Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)])?; @@ -47,7 +47,7 @@ mod sync_test // transactions let mut trans = conn.start_transaction(TxOpts::default())?; - trans.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + trans.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote10 trans.commit()?; Ok(()) @@ -65,25 +65,25 @@ mod async_test let mut conn = pool.get_conn().await?; // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ MISSING: Source=remote11 + let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ Source=remote11 let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) // direct execution (safe) - let _ : Vec = conn.query(safe_query.as_str()).await?; + let _ : Vec = conn.query(safe_query.as_str()).await?; // $ sql-sink // direct execution (unsafe) - let _ : Vec = conn.query(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - conn.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - let _ : Option = conn.query_first(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_iter(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_stream::(unsafe_query.as_str()).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {}).await?; // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + let _ : Vec = conn.query(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + conn.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ : Option = conn.query_first(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_iter(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_stream::(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {}).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 // prepared queries (safe) - let stmt = conn.prep(prepared_query.as_str()).await?; + let stmt = conn.prep(prepared_query.as_str()).await?; // $ sql-sink let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),)).await?; let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)]).await?; conn.exec_drop(&stmt, (&remote_string.as_str(),)); @@ -95,7 +95,7 @@ mod async_test // transactions let mut trans = conn.start_transaction(TxOpts::default()).await?; - trans.query_drop(unsafe_query.as_str()); // $ MISSING: sql-sink Alert[rust/sql-injection]=remote11 + trans.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote11 trans.commit().await?; Ok(()) From 859c1ef55d22c366537bfae4b113c326fda23bc3 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 17:11:20 +0100 Subject: [PATCH 098/965] Rust: Change note. --- rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md new file mode 100644 index 00000000000..037f813a856 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-10-mysql.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for the `mysql` and `mysql_async` libraries. From c102ce41b740ab867b037125be459738b5629581 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 17:12:48 +0100 Subject: [PATCH 099/965] Rust: Claim support for the two libraries. --- docs/codeql/reusables/supported-frameworks.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index e9981014ef5..472e463cf79 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -336,6 +336,8 @@ and the CodeQL library pack ``codeql/rust-all`` (`changelog `__, Logging library `md5 `__, Utility library `memchr `__, Utility library + `mysql `__, Database + `mysql_async `__, Database `once_cell `__, Utility library `poem `__, Web framework `postgres `__, Database From 106bad2764a8478dfd30f46e08bac3c5b5cdc771 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 17:17:08 +0100 Subject: [PATCH 100/965] Rust: Add test cases for bad use of prepared statements as well. --- .../security/CWE-089/SqlInjection.expected | 744 +++++++++--------- .../query-tests/security/CWE-089/mysql.rs | 8 + 2 files changed, 395 insertions(+), 357 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index f58ee2343d0..cf5529c7a99 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -12,15 +12,17 @@ | mysql.rs:31:22:31:34 | query_map_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:31:22:31:34 | query_map_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:50:15:50:24 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:50:15:50:24 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:77:33:77:37 | query | mysql.rs:68:33:68:54 | ...::get | mysql.rs:77:33:77:37 | query | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:78:14:78:23 | query_drop | mysql.rs:68:33:68:54 | ...::get | mysql.rs:78:14:78:23 | query_drop | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:79:36:79:46 | query_first | mysql.rs:68:33:68:54 | ...::get | mysql.rs:79:36:79:46 | query_first | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:80:22:80:31 | query_fold | mysql.rs:68:33:68:54 | ...::get | mysql.rs:80:22:80:31 | query_fold | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:81:22:81:31 | query_iter | mysql.rs:68:33:68:54 | ...::get | mysql.rs:81:22:81:31 | query_iter | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:82:22:82:33 | query_stream | mysql.rs:68:33:68:54 | ...::get | mysql.rs:82:22:82:33 | query_stream | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:83:22:83:30 | query_map | mysql.rs:68:33:68:54 | ...::get | mysql.rs:83:22:83:30 | query_map | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | -| mysql.rs:98:15:98:24 | query_drop | mysql.rs:68:33:68:54 | ...::get | mysql.rs:98:15:98:24 | query_drop | This query depends on a $@. | mysql.rs:68:33:68:54 | ...::get | user-provided value | +| mysql.rs:49:26:49:29 | prep | mysql.rs:13:33:13:54 | ...::get | mysql.rs:49:26:49:29 | prep | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:54:15:54:24 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:54:15:54:24 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | +| mysql.rs:81:33:81:37 | query | mysql.rs:72:33:72:54 | ...::get | mysql.rs:81:33:81:37 | query | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:82:14:82:23 | query_drop | mysql.rs:72:33:72:54 | ...::get | mysql.rs:82:14:82:23 | query_drop | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:83:36:83:46 | query_first | mysql.rs:72:33:72:54 | ...::get | mysql.rs:83:36:83:46 | query_first | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:84:22:84:31 | query_fold | mysql.rs:72:33:72:54 | ...::get | mysql.rs:84:22:84:31 | query_fold | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:85:22:85:31 | query_iter | mysql.rs:72:33:72:54 | ...::get | mysql.rs:85:22:85:31 | query_iter | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:86:22:86:33 | query_stream | mysql.rs:72:33:72:54 | ...::get | mysql.rs:86:22:86:33 | query_stream | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:87:22:87:30 | query_map | mysql.rs:72:33:72:54 | ...::get | mysql.rs:87:22:87:30 | query_map | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:101:26:101:29 | prep | mysql.rs:72:33:72:54 | ...::get | mysql.rs:101:26:101:29 | prep | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:106:15:106:24 | query_drop | mysql.rs:72:33:72:54 | ...::get | mysql.rs:106:15:106:24 | query_drop | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | | sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -35,366 +37,384 @@ | sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | edges | mysql.rs:13:13:13:29 | mut remote_string | mysql.rs:15:86:15:98 | remote_string | provenance | | -| mysql.rs:13:33:13:54 | ...::get | mysql.rs:13:33:13:77 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | mysql.rs:13:33:13:86 | ... .unwrap() | provenance | MaD:28 | -| mysql.rs:13:33:13:86 | ... .unwrap() | mysql.rs:13:33:13:93 | ... .text() [Ok] | provenance | MaD:32 | -| mysql.rs:13:33:13:93 | ... .text() [Ok] | mysql.rs:13:33:13:121 | ... .unwrap_or(...) | provenance | MaD:29 | +| mysql.rs:13:33:13:54 | ...::get | mysql.rs:13:33:13:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | mysql.rs:13:33:13:86 | ... .unwrap() | provenance | MaD:30 | +| mysql.rs:13:33:13:86 | ... .unwrap() | mysql.rs:13:33:13:93 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:13:33:13:93 | ... .text() [Ok] | mysql.rs:13:33:13:121 | ... .unwrap_or(...) | provenance | MaD:31 | | mysql.rs:13:33:13:121 | ... .unwrap_or(...) | mysql.rs:13:13:13:29 | mut remote_string | provenance | | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:50 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:76 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:36 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:51 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:76 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:44 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:48 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:44 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:43 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:47 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:51 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:37 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() | provenance | MaD:30 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:42 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:37 | unsafe_query | provenance | | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:32 | | mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | -| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:28:15:104 | ... + ... | provenance | MaD:25 | +| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:28:15:104 | ... + ... | provenance | MaD:27 | | mysql.rs:15:28:15:104 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | -| mysql.rs:15:85:15:98 | &remote_string [&ref] | mysql.rs:15:28:15:98 | ... + ... | provenance | MaD:24 | +| mysql.rs:15:85:15:98 | &remote_string [&ref] | mysql.rs:15:28:15:98 | ... + ... | provenance | MaD:26 | | mysql.rs:15:86:15:98 | remote_string | mysql.rs:15:85:15:98 | &remote_string [&ref] | provenance | | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:23:65:23:85 | unsafe_query.as_str() | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:24:25:24:45 | unsafe_query.as_str() | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:25:40:25:60 | unsafe_query.as_str() | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:26:65:26:85 | unsafe_query.as_str() | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:27:33:27:53 | unsafe_query.as_str() | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:28:37:28:57 | unsafe_query.as_str() | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:30:32:30:52 | unsafe_query.as_str() | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:31:36:31:56 | unsafe_query.as_str() | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:50:26:50:37 | unsafe_query | mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:50:26:50:46 | unsafe_query.as_str() | mysql.rs:50:15:50:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | mysql.rs:50:15:50:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:68:13:68:29 | mut remote_string | mysql.rs:70:86:70:98 | remote_string | provenance | | -| mysql.rs:68:33:68:54 | ...::get | mysql.rs:68:33:68:77 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| mysql.rs:68:33:68:77 | ...::get(...) [Ok] | mysql.rs:68:33:68:86 | ... .unwrap() | provenance | MaD:28 | -| mysql.rs:68:33:68:86 | ... .unwrap() | mysql.rs:68:33:68:93 | ... .text() [Ok] | provenance | MaD:32 | -| mysql.rs:68:33:68:93 | ... .text() [Ok] | mysql.rs:68:33:68:121 | ... .unwrap_or(...) | provenance | MaD:29 | -| mysql.rs:68:33:68:121 | ... .unwrap_or(...) | mysql.rs:68:13:68:29 | mut remote_string | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:50 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:36 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:59 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:44 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:44 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:59 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:43 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:37 | unsafe_query | provenance | | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:26 | -| mysql.rs:70:13:70:24 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() | provenance | MaD:30 | -| mysql.rs:70:28:70:98 | ... + ... | mysql.rs:70:13:70:24 | unsafe_query | provenance | | -| mysql.rs:70:28:70:98 | ... + ... | mysql.rs:70:28:70:104 | ... + ... | provenance | MaD:25 | -| mysql.rs:70:28:70:104 | ... + ... | mysql.rs:70:13:70:24 | unsafe_query | provenance | | -| mysql.rs:70:85:70:98 | &remote_string [&ref] | mysql.rs:70:28:70:98 | ... + ... | provenance | MaD:24 | -| mysql.rs:70:86:70:98 | remote_string | mysql.rs:70:85:70:98 | &remote_string [&ref] | provenance | | -| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:77:39:77:50 | unsafe_query | mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:77:39:77:59 | unsafe_query.as_str() | mysql.rs:77:33:77:37 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | mysql.rs:77:33:77:37 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:78:25:78:36 | unsafe_query | mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:78:25:78:45 | unsafe_query.as_str() | mysql.rs:78:14:78:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | mysql.rs:78:14:78:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:79:48:79:59 | unsafe_query | mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:79:48:79:68 | unsafe_query.as_str() | mysql.rs:79:36:79:46 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | mysql.rs:79:36:79:46 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:80:33:80:44 | unsafe_query | mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:80:33:80:53 | unsafe_query.as_str() | mysql.rs:80:22:80:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | mysql.rs:80:22:80:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:81:33:81:44 | unsafe_query | mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:81:33:81:53 | unsafe_query.as_str() | mysql.rs:81:22:81:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | mysql.rs:81:22:81:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:82:48:82:59 | unsafe_query | mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:82:48:82:68 | unsafe_query.as_str() | mysql.rs:82:22:82:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | mysql.rs:82:22:82:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:83:32:83:43 | unsafe_query | mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:83:32:83:52 | unsafe_query.as_str() | mysql.rs:83:22:83:30 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | mysql.rs:83:22:83:30 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:26 | -| mysql.rs:98:26:98:37 | unsafe_query | mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | provenance | MaD:30 | -| mysql.rs:98:26:98:46 | unsafe_query.as_str() | mysql.rs:98:15:98:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | mysql.rs:98:15:98:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:49:31:49:51 | unsafe_query.as_str() | mysql.rs:49:26:49:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | mysql.rs:49:26:49:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:54:26:54:46 | unsafe_query.as_str() | mysql.rs:54:15:54:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | mysql.rs:54:15:54:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:72:13:72:29 | mut remote_string | mysql.rs:74:86:74:98 | remote_string | provenance | | +| mysql.rs:72:33:72:54 | ...::get | mysql.rs:72:33:72:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:72:33:72:77 | ...::get(...) [Ok] | mysql.rs:72:33:72:86 | ... .unwrap() | provenance | MaD:30 | +| mysql.rs:72:33:72:86 | ... .unwrap() | mysql.rs:72:33:72:93 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:72:33:72:93 | ... .text() [Ok] | mysql.rs:72:33:72:121 | ... .unwrap_or(...) | provenance | MaD:31 | +| mysql.rs:72:33:72:121 | ... .unwrap_or(...) | mysql.rs:72:13:72:29 | mut remote_string | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:50 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:36 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:59 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:44 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:44 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:59 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:43 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:42 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:37 | unsafe_query | provenance | | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:74:28:74:98 | ... + ... | mysql.rs:74:13:74:24 | unsafe_query | provenance | | +| mysql.rs:74:28:74:98 | ... + ... | mysql.rs:74:28:74:104 | ... + ... | provenance | MaD:27 | +| mysql.rs:74:28:74:104 | ... + ... | mysql.rs:74:13:74:24 | unsafe_query | provenance | | +| mysql.rs:74:85:74:98 | &remote_string [&ref] | mysql.rs:74:28:74:98 | ... + ... | provenance | MaD:26 | +| mysql.rs:74:86:74:98 | remote_string | mysql.rs:74:85:74:98 | &remote_string [&ref] | provenance | | +| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:81:39:81:59 | unsafe_query.as_str() | mysql.rs:81:33:81:37 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | mysql.rs:81:33:81:37 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:82:25:82:45 | unsafe_query.as_str() | mysql.rs:82:14:82:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | mysql.rs:82:14:82:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:83:48:83:68 | unsafe_query.as_str() | mysql.rs:83:36:83:46 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | mysql.rs:83:36:83:46 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:84:33:84:53 | unsafe_query.as_str() | mysql.rs:84:22:84:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | mysql.rs:84:22:84:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:85:33:85:53 | unsafe_query.as_str() | mysql.rs:85:22:85:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | mysql.rs:85:22:85:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:86:48:86:68 | unsafe_query.as_str() | mysql.rs:86:22:86:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | mysql.rs:86:22:86:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:87:32:87:52 | unsafe_query.as_str() | mysql.rs:87:22:87:30 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | mysql.rs:87:22:87:30 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:101:31:101:51 | unsafe_query.as_str() | mysql.rs:101:26:101:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | mysql.rs:101:26:101:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:106:26:106:46 | unsafe_query.as_str() | mysql.rs:106:15:106:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | mysql.rs:106:15:106:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | -| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:22 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:23 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:27 | +| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:29 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:31 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:31 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:33 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:33 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | -| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:28 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:32 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:29 | +| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:30 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:31 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:29 | +| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:31 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:30 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:26 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:30 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:32 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:28 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:32 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:33 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:34 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:35 | +| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:36 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:30 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:32 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:30 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:26 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:30 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:32 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:28 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:32 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:25 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:24 | +| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:30 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:26 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:30 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:32 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:28 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:32 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:33 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:34 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:35 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:36 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | -| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:28 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:32 | -| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:29 | +| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:30 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:31 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:25 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:24 | +| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:19 Sink:MaD:19 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | -| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:28 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:32 | -| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:29 | +| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:30 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:31 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:30 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:26 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:30 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:32 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:28 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:32 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:25 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:24 | +| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:26 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:30 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:28 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:32 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | models | 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | | 2 | Sink: <_ as mysql::conn::queryable::Queryable>::query_drop; Argument[0]; sql-injection | @@ -411,25 +431,27 @@ models | 13 | Sink: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[0]; sql-injection | | 14 | Sink: <_ as mysql_async::queryable::Queryable>::query_map; Argument[0]; sql-injection | | 15 | Sink: <_ as mysql_async::queryable::Queryable>::query_stream; Argument[0]; sql-injection | -| 16 | Sink: ::query_iter; Argument[0]; sql-injection | -| 17 | Sink: ::query_iter; Argument[0]; sql-injection | -| 18 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | -| 19 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | -| 20 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | -| 21 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 22 | Source: std::env::args; ReturnValue.Element; commandargs | -| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 24 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 25 | Summary: ::add; Argument[self]; ReturnValue; value | -| 26 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 27 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 28 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 29 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 30 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 31 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 34 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 16 | Sink: ::prep; Argument[0]; sql-injection | +| 17 | Sink: ::query_iter; Argument[0]; sql-injection | +| 18 | Sink: ::prep; Argument[0]; sql-injection | +| 19 | Sink: ::query_iter; Argument[0]; sql-injection | +| 20 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | +| 21 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | +| 22 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | +| 23 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 24 | Source: std::env::args; ReturnValue.Element; commandargs | +| 25 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 26 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | +| 27 | Summary: ::add; Argument[self]; ReturnValue; value | +| 28 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 29 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 30 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 31 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 32 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 33 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 36 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:13:13:13:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:13:33:13:54 | ...::get | semmle.label | ...::get | @@ -488,53 +510,61 @@ nodes | mysql.rs:32:40:32:51 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:32:40:32:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:50:15:50:24 | query_drop | semmle.label | query_drop | -| mysql.rs:50:26:50:37 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:50:26:50:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:50:26:50:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:68:13:68:29 | mut remote_string | semmle.label | mut remote_string | -| mysql.rs:68:33:68:54 | ...::get | semmle.label | ...::get | -| mysql.rs:68:33:68:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| mysql.rs:68:33:68:86 | ... .unwrap() | semmle.label | ... .unwrap() | -| mysql.rs:68:33:68:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | -| mysql.rs:68:33:68:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| mysql.rs:70:13:70:24 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:70:28:70:98 | ... + ... | semmle.label | ... + ... | -| mysql.rs:70:28:70:104 | ... + ... | semmle.label | ... + ... | -| mysql.rs:70:85:70:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | -| mysql.rs:70:86:70:98 | remote_string | semmle.label | remote_string | -| mysql.rs:77:33:77:37 | query | semmle.label | query | -| mysql.rs:77:39:77:50 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:77:39:77:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:77:39:77:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:78:14:78:23 | query_drop | semmle.label | query_drop | -| mysql.rs:78:25:78:36 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:78:25:78:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:78:25:78:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:79:36:79:46 | query_first | semmle.label | query_first | -| mysql.rs:79:48:79:59 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:79:48:79:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:79:48:79:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:80:22:80:31 | query_fold | semmle.label | query_fold | -| mysql.rs:80:33:80:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:80:33:80:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:80:33:80:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:81:22:81:31 | query_iter | semmle.label | query_iter | -| mysql.rs:81:33:81:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:81:33:81:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:81:33:81:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:82:22:82:33 | query_stream | semmle.label | query_stream | -| mysql.rs:82:48:82:59 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:82:48:82:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:82:48:82:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:83:22:83:30 | query_map | semmle.label | query_map | -| mysql.rs:83:32:83:43 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:83:32:83:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:83:32:83:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:98:15:98:24 | query_drop | semmle.label | query_drop | -| mysql.rs:98:26:98:37 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:98:26:98:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:98:26:98:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:49:26:49:29 | prep | semmle.label | prep | +| mysql.rs:49:31:49:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:49:31:49:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:54:15:54:24 | query_drop | semmle.label | query_drop | +| mysql.rs:54:26:54:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:54:26:54:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:72:13:72:29 | mut remote_string | semmle.label | mut remote_string | +| mysql.rs:72:33:72:54 | ...::get | semmle.label | ...::get | +| mysql.rs:72:33:72:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| mysql.rs:72:33:72:86 | ... .unwrap() | semmle.label | ... .unwrap() | +| mysql.rs:72:33:72:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| mysql.rs:72:33:72:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| mysql.rs:74:13:74:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:74:28:74:98 | ... + ... | semmle.label | ... + ... | +| mysql.rs:74:28:74:104 | ... + ... | semmle.label | ... + ... | +| mysql.rs:74:85:74:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | +| mysql.rs:74:86:74:98 | remote_string | semmle.label | remote_string | +| mysql.rs:81:33:81:37 | query | semmle.label | query | +| mysql.rs:81:39:81:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:81:39:81:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:82:14:82:23 | query_drop | semmle.label | query_drop | +| mysql.rs:82:25:82:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:82:25:82:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:83:36:83:46 | query_first | semmle.label | query_first | +| mysql.rs:83:48:83:59 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:83:48:83:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:84:22:84:31 | query_fold | semmle.label | query_fold | +| mysql.rs:84:33:84:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:84:33:84:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:85:22:85:31 | query_iter | semmle.label | query_iter | +| mysql.rs:85:33:85:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:85:33:85:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:86:22:86:33 | query_stream | semmle.label | query_stream | +| mysql.rs:86:48:86:59 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:86:48:86:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:87:22:87:30 | query_map | semmle.label | query_map | +| mysql.rs:87:32:87:43 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:87:32:87:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:101:26:101:29 | prep | semmle.label | prep | +| mysql.rs:101:31:101:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:101:31:101:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:106:15:106:24 | query_drop | semmle.label | query_drop | +| mysql.rs:106:26:106:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:106:26:106:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 30f5d8b022d..142dfc3aa9f 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -45,6 +45,10 @@ mod sync_test let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; + // prepared queries (unsafe use) + let stmt2 = conn.prep(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + // ... + // transactions let mut trans = conn.start_transaction(TxOpts::default())?; trans.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote10 @@ -93,6 +97,10 @@ mod async_test let _ = conn.exec_stream::(&stmt, (remote_string.as_str(),)).await?; let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {}).await?; + // prepared queries (unsafe use) + let stmt2 = conn.prep(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + // ... + // transactions let mut trans = conn.start_transaction(TxOpts::default()).await?; trans.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote11 From 758759a304559a22ea25895ccd1e737686986e7e Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 10 Oct 2025 12:25:31 -0400 Subject: [PATCH 101/965] Crypto: Reused nonce query updates and test updates to address false positives. --- .../quantum/Examples/ArtifactReuse.qll | 56 +++++++++++++++---- .../quantum/Examples/ReusedNonce.ql | 40 ++++++++++++- .../examples/NonceReuse/NonceReuse.expected | 8 +-- .../quantum/examples/NonceReuse/Test.java | 28 ++++++++++ 4 files changed, 115 insertions(+), 17 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll b/java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll index 0e28d9ffe5e..776510b52ad 100644 --- a/java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll +++ b/java/ql/src/experimental/quantum/Examples/ArtifactReuse.qll @@ -8,7 +8,7 @@ import experimental.quantum.Language * NOTE: TODO: need to handle call by refernece for now. Need to re-evaluate (see notes below) * Such functions may be 'wrappers' for some derived value. */ -private module WrapperConfig implements DataFlow::ConfigSig { +private module ArtifactGeneratingWrapperConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr() instanceof Call and // not handling references yet, I think we want to flat say references are only ok @@ -28,25 +28,41 @@ private module WrapperConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(Crypto::ArtifactNode i).asElement() } } -module WrapperFlow = DataFlow::Global; +module ArtifactGeneratingWrapperFlow = TaintTracking::Global; /** * Using a set approach to determine if reuse of an artifact exists. * This predicate produces a set of 'wrappers' that flow to the artifact node. * This set can be compared with the set to another artifact node to determine if they are the same. */ -private DataFlow::Node getWrapperSet(Crypto::NonceArtifactNode a) { - WrapperFlow::flow(result, DataFlow::exprNode(a.asElement())) +private DataFlow::Node getGeneratingWrapperSet(Crypto::NonceArtifactNode a) { + ArtifactGeneratingWrapperFlow::flow(result, DataFlow::exprNode(a.asElement())) or result.asExpr() = a.getSourceElement() } +private predicate ancestorOfArtifact( + Crypto::ArtifactNode a, Callable enclosingCallable, ControlFlow::Node midOrTarget +) { + a.asElement().(Expr).getEnclosingCallable() = enclosingCallable and + ( + midOrTarget.asExpr() = a.asElement() or + midOrTarget.asExpr().(Call).getCallee().calls*(a.asElement().(Expr).getEnclosingCallable()) + ) +} + /** * Two different artifact nodes are considered reuse if any of the following conditions are met: * 1. The source for artifact `a` and artifact `b` are the same and the source is a literal. * 2. The source for artifact `a` and artifact `b` are not the same and the source is a literal of the same value. - * 3. For all 'wrappers' that return the source of artifact `a`, and that wrapper also exists for artifact `b`. - * 4. For all 'wrappers' that return the source of artifact `b`, and that wrapper also exists for artifact `a`. + * 3. For all 'wrappers' that return the source of artifact `a`, and each wrapper also exists for artifact `b`. + * 4. For all 'wrappers' that return the source of artifact `b`, and each wrapper also exists for artifact `a`. + * + * The above conditions determine that the use of the IV is from the same source, but the use may + * be on separate code paths that do not occur sequentially. We must therefore also find a common callable ancestor + * for both uses, and in that ancestor, there must be control flow from the call or use of one to the call or use of the other. + * Note that if no shared ancestor callable exists, it means the flow is more nuanced and ignore the shared ancestor + * use flow. */ predicate isArtifactReuse(Crypto::ArtifactNode a, Crypto::ArtifactNode b) { a != b and @@ -55,12 +71,32 @@ predicate isArtifactReuse(Crypto::ArtifactNode a, Crypto::ArtifactNode b) { or a.getSourceElement().(Literal).getValue() = b.getSourceElement().(Literal).getValue() or - forex(DataFlow::Node e | e = getWrapperSet(a) | - exists(DataFlow::Node e2 | e2 = getWrapperSet(b) | e = e2) + forex(DataFlow::Node e | e = getGeneratingWrapperSet(a) | + exists(DataFlow::Node e2 | e2 = getGeneratingWrapperSet(b) | e = e2) ) or - forex(DataFlow::Node e | e = getWrapperSet(b) | - exists(DataFlow::Node e2 | e2 = getWrapperSet(a) | e = e2) + forex(DataFlow::Node e | e = getGeneratingWrapperSet(b) | + exists(DataFlow::Node e2 | e2 = getGeneratingWrapperSet(a) | e = e2) + ) + ) and + // If there is a common parent, there is control flow between the two uses in the parent + // TODO: this logic needs to be examined/revisited to ensure it is correct + ( + exists(Callable commonParent | + ancestorOfArtifact(a, commonParent, _) and + ancestorOfArtifact(b, commonParent, _) + ) + implies + exists(Callable commonParent, ControlFlow::Node aMid, ControlFlow::Node bMid | + ancestorOfArtifact(a, commonParent, aMid) and + ancestorOfArtifact(b, commonParent, bMid) and + a instanceof Crypto::NonceArtifactNode and + b instanceof Crypto::NonceArtifactNode and + ( + aMid.getASuccessor*() = bMid + or + bMid.getASuccessor*() = aMid + ) ) ) } diff --git a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql index c90dbbf5746..2236df8ce33 100644 --- a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql +++ b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql @@ -12,6 +12,40 @@ import java import ArtifactReuse -from Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2 -where isArtifactReuse(nonce1, nonce2) -select nonce1, "Reuse with nonce $@", nonce2, nonce2.toString() +from Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2, Crypto::NodeBase sourceNode +where + isArtifactReuse(nonce1, nonce2) and + // NOTE: in general we may not know a source, but see possible reuse, + // we are not detecting these cases here (only where the source is the same). + sourceNode = nonce1.getSourceNode() and + sourceNode = nonce2.getSourceNode() and + // Null literals are typically used for initialization, and if two 'nulls' + // are reused, it is likely an uninitialization path that would result in a NullPointerException. + not sourceNode.asElement() instanceof NullLiteral and + // if the nonce is used in an encryption and decryption, ignore that reuse + not exists(Crypto::CipherOperationNode op1, Crypto::CipherOperationNode op2 | + op1 != op2 and + op1.getANonce() = nonce1 and + op2.getANonce() = nonce2 and + ( + ( + op1.getKeyOperationSubtype() instanceof Crypto::TEncryptMode or + op1.getKeyOperationSubtype() instanceof Crypto::TWrapMode + ) and + ( + op2.getKeyOperationSubtype() instanceof Crypto::TDecryptMode or + op2.getKeyOperationSubtype() instanceof Crypto::TUnwrapMode + ) + or + ( + op2.getKeyOperationSubtype() instanceof Crypto::TEncryptMode or + op2.getKeyOperationSubtype() instanceof Crypto::TWrapMode + ) and + ( + op1.getKeyOperationSubtype() instanceof Crypto::TDecryptMode or + op1.getKeyOperationSubtype() instanceof Crypto::TUnwrapMode + ) + ) + ) +select sourceNode, "Nonce source is reused, see $@ and $@", nonce1, nonce1.toString(), nonce2, + nonce2.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected index 38ba6187b59..f5e9382a40c 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected @@ -1,4 +1,4 @@ -| Test.java:40:47:40:52 | Nonce | Reuse with nonce $@ | Test.java:49:47:49:52 | Nonce | Nonce | -| Test.java:49:47:49:52 | Nonce | Reuse with nonce $@ | Test.java:40:47:40:52 | Nonce | Nonce | -| Test.java:76:48:76:54 | Nonce | Reuse with nonce $@ | Test.java:82:49:82:55 | Nonce | Nonce | -| Test.java:82:49:82:55 | Nonce | Reuse with nonce $@ | Test.java:76:48:76:54 | Nonce | Nonce | +| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:40:47:40:52 | Nonce | Nonce | Test.java:49:47:49:52 | Nonce | Nonce | +| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:49:47:49:52 | Nonce | Nonce | Test.java:40:47:40:52 | Nonce | Nonce | +| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:76:48:76:54 | Nonce | Nonce | Test.java:82:49:82:55 | Nonce | Nonce | +| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:82:49:82:55 | Nonce | Nonce | Test.java:76:48:76:54 | Nonce | Nonce | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java index 1b65e324275..e384143db08 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/Test.java @@ -83,6 +83,34 @@ public class Test { byte[] ciphertext2 = cipher2.doFinal("Simple Test Data".getBytes()); } + public void falsePositive1() throws Exception { + byte[] iv = null; + new SecureRandom().nextBytes(iv); + IvParameterSpec ivSpec = new IvParameterSpec(iv); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + SecretKey key = generateAESKey(); + if (iv != null) { + cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); // GOOD + byte[] ciphertext = cipher.doFinal("Simple Test Data".getBytes()); + } else if(iv.length > 0) { + cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); // GOOD + byte[] ciphertext = cipher.doFinal("Simple Test Data".getBytes()); + } + } + + public void falsePositive2() throws Exception { + byte[] iv = null; + new SecureRandom().nextBytes(iv); + IvParameterSpec ivSpec = new IvParameterSpec(iv); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + SecretKey key = generateAESKey(); + cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); // GOOD + byte[] ciphertext = cipher.doFinal("Simple Test Data".getBytes()); + + cipher.init(Cipher.DECRYPT_MODE, key, ivSpec); // GOOD + byte[] decryptedData = cipher.doFinal(ciphertext); + } + public static void main(String[] args) { try { funcA2(); From 36673659adcdc8c481c78ebb5b3e3662403b6433 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 10 Oct 2025 14:49:35 -0400 Subject: [PATCH 102/965] Crypto: Weak asymmetric key gen size fixes and test. --- java/ql/lib/experimental/quantum/JCA.qll | 8 ++++-- .../quantum/Examples/WeakAsymmetric.ql | 22 --------------- .../Examples/WeakAsymmetricKeyGenSize.ql | 22 +++++++++++++++ .../InsufficientAsymmetricKeySize.java | 28 +++++++++++++++++++ ...WeakOrUnknownAsymmetricKeyGenSize.expected | 1 + .../WeakOrUnknownAsymmetricKeyGenSize.qlref | 1 + 6 files changed, 58 insertions(+), 24 deletions(-) delete mode 100644 java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql create mode 100644 java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index 03438d1ac22..76031c506ea 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -110,7 +110,8 @@ module JCAModel { predicate signature_names(string name) { name.toUpperCase().splitAt("WITH", 1).matches(["RSA%", "ECDSA%", "DSA%"]) or - name.toUpperCase().matches(["RSASSA-PSS", "ED25519", "ED448", "EDDSA", "ML-DSA%", "HSS/LMS"]) + name.toUpperCase() + .matches(["RSASSA-PSS", "ED25519", "ED448", "EDDSA", "ML-DSA%", "HSS/LMS", "DSA"]) } bindingset[name] @@ -257,6 +258,8 @@ module JCAModel { name.toUpperCase().matches("ML-DSA%") and type = KeyOpAlg::TSignature(KeyOpAlg::DSA()) or name.toUpperCase() = "HSS/LMS" and type = KeyOpAlg::TSignature(KeyOpAlg::HSS_LMS()) + or + name.toUpperCase() = "DSA" and type = KeyOpAlg::TSignature(KeyOpAlg::DSA()) } bindingset[name] @@ -1019,7 +1022,8 @@ module JCAModel { } class KeyGenerationAlgorithmValueConsumer extends CipherAlgorithmValueConsumer, - KeyAgreementAlgorithmValueConsumer, EllipticCurveAlgorithmValueConsumer instanceof Expr + KeyAgreementAlgorithmValueConsumer, EllipticCurveAlgorithmValueConsumer, + SignatureAlgorithmValueConsumer instanceof Expr { KeyGeneratorGetInstanceCall instantiationCall; diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql deleted file mode 100644 index 299aa8d8cbd..00000000000 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetric.ql +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @name Weak Asymmetric Key Size - * @id java/quantum/weak-asymmetric-key-size - * @description An asymmetric cipher with a short key size is in use - * @kind problem - * @problem.severity error - * @precision high - * @tags quantum - * experimental - */ - -import java -import experimental.quantum.Language - -from Crypto::KeyOperationAlgorithmNode op, int keySize, string algName -where - keySize = op.getKeySizeFixed() and - keySize < 2048 and - algName = op.getAlgorithmName() and - // Can't be an elliptic curve - op.getAlgorithmType() != Crypto::KeyOpAlg::AlgorithmType::EllipticCurveType() -select "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm " + algName diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql new file mode 100644 index 00000000000..7b1330a768a --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -0,0 +1,22 @@ +/** + * @name Weak Asymmetric Key Size + * @id java/quantum/weak-asymmetric-key-gen-size + * @description An asymmetric key of known size is less than 2048 bits for any non-elliptic curve key operation. + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +from Crypto::KeyArtifactNode key, int keySize, Crypto::AlgorithmNode alg +where + key.getCreatingOperation().getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and + alg = key.getAKnownAlgorithm() and // NOTE: if algorithm is not known (doesn't bind) we need a separate query + not alg instanceof Crypto::EllipticCurveNode and // Elliptic curve sizes are handled separately and are more tied directly to the algorithm + keySize < 2048 +select key, "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm $@", + alg, alg.getAlgorithmName() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java new file mode 100644 index 00000000000..35b9dd40748 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java @@ -0,0 +1,28 @@ +import java.security.*; +public class InsufficientAsymmetricKeySize{ + public static void test() throws Exception{ + KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("RSA"); + keyPairGen1.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen1.generateKeyPair(); + + KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("DSA"); + keyPairGen2.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen2.generateKeyPair(); + + KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("DH"); + keyPairGen3.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen3.generateKeyPair(); + + KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("RSA"); + keyPairGen4.initialize(2048); // GOOD + keyPairGen4.generateKeyPair(); + + KeyPairGenerator keyPairGen5 = KeyPairGenerator.getInstance("DSA"); + keyPairGen5.initialize(2048); // GOOD + keyPairGen5.generateKeyPair(); + + KeyPairGenerator keyPairGen6 = KeyPairGenerator.getInstance("DH"); + keyPairGen6.initialize(2048); // GOOD + keyPairGen6.generateKeyPair(); + } +} \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected new file mode 100644 index 00000000000..2e65efe2a14 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected @@ -0,0 +1 @@ +a \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref new file mode 100644 index 00000000000..1229e635fd8 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref @@ -0,0 +1 @@ +experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql \ No newline at end of file From ffd191d0e1d7696c7ab91068789479f9b6e6c53e Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 10 Oct 2025 14:50:50 -0400 Subject: [PATCH 103/965] Crypto: missing new endpoint to get the creating operation for a key if known. --- shared/quantum/codeql/quantum/experimental/Model.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 43ffc0ffb69..517142de1ef 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1497,6 +1497,10 @@ module CryptographyBase Input> { .getAGenericSourceNode() } + KeyCreationOperationNode getCreatingOperation() { + instance.(KeyArtifactOutputInstance).getCreator() = result.asElement() + } + KeyCreationCandidateAlgorithmNode getAKnownAlgorithm() { result = instance From d68f3cff8bf625ca304bef27aaa4b7d1c1f71e7b Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 10 Oct 2025 14:51:16 -0400 Subject: [PATCH 104/965] Crypto: InsecureIVorNonceSource now ignored null to avoid being too noisy. --- .../experimental/quantum/Examples/InsecureIVorNonceSource.ql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql index 278372922b8..b1f04069218 100644 --- a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql @@ -18,6 +18,10 @@ import experimental.quantum.Language from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src, Crypto::NodeBase op, string msg where nonce.getSourceNode() = src and + // NOTE: null nonces should be handled seaparately, often used for default values prior to initialization + // failure to initialize should, in practice, lead to a NullPointerException, which is a separate concern + // however there may be APIs where NULL uses a default nonce or action. + not src.asElement() instanceof NullLiteral and ( // Case 1: Any constant nonce/iv is bad, regardless of how it is used src.asElement() instanceof Crypto::GenericConstantSourceInstance and From e76ced1513785fdbbb538a18f3a62cf64935b746 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 10 Oct 2025 15:32:39 -0400 Subject: [PATCH 105/965] Crypto: Updating weak asymmetric key gen to include key exchange. --- .../experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql | 1 + shared/quantum/codeql/quantum/experimental/Model.qll | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql index 7b1330a768a..d478f2383a5 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -17,6 +17,7 @@ where key.getCreatingOperation().getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and alg = key.getAKnownAlgorithm() and // NOTE: if algorithm is not known (doesn't bind) we need a separate query not alg instanceof Crypto::EllipticCurveNode and // Elliptic curve sizes are handled separately and are more tied directly to the algorithm + alg instanceof Crypto::AsymmetricAlgorithmNode and keySize < 2048 select key, "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm $@", alg, alg.getAlgorithmName() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 517142de1ef..4de99ccb46a 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1467,7 +1467,8 @@ module CryptographyBase Input> { class AsymmetricAlgorithmNode extends TKeyCreationCandidateAlgorithm instanceof AlgorithmNode { AsymmetricAlgorithmNode() { this instanceof EllipticCurveNode or - this.(KeyOperationAlgorithmNode).isAsymmetric() + this.(KeyOperationAlgorithmNode).isAsymmetric() or + this instanceof KeyAgreementAlgorithmNode } string toString() { result = super.toString() } From 257745284905ed49bf2342a85ece6708a853eaf4 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 12 Oct 2025 08:09:08 +0200 Subject: [PATCH 106/965] C#: Add neutral model for `System.ComponentModel.PropertyDescriptor.GetValue` --- csharp/ql/lib/ext/System.ComponentModel.model.yml | 5 +++++ .../library-tests/dataflow/library/FlowSummaries.expected | 4 ++-- .../dataflow/library/FlowSummariesFiltered.expected | 1 - 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/ext/System.ComponentModel.model.yml b/csharp/ql/lib/ext/System.ComponentModel.model.yml index d98c97727fb..a3b561583e3 100644 --- a/csharp/ql/lib/ext/System.ComponentModel.model.yml +++ b/csharp/ql/lib/ext/System.ComponentModel.model.yml @@ -36,3 +36,8 @@ extensions: - ["System.ComponentModel", "PropertyDescriptorCollection", False, "set_Item", "(System.Int32,System.Object)", "", "Argument[0]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Key]", "value", "manual"] - ["System.ComponentModel", "PropertyDescriptorCollection", False, "set_Item", "(System.Int32,System.Object)", "", "Argument[1]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Value]", "value", "manual"] - ["System.ComponentModel", "PropertyDescriptorCollection", False, "set_Item", "(System.Object,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] + - addsTo: + pack: codeql/csharp-all + extensible: neutralModel + data: + - ["System.ComponentModel", "PropertyDescriptor", "GetValue", "(System.Object)", "summary", "manual"] \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 36e23003fcc..8ffcd84e54b 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -3715,7 +3715,6 @@ summary | Newtonsoft.Json.Linq;JObject;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Key];value;manual | | Newtonsoft.Json.Linq;JObject;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Value];value;manual | | Newtonsoft.Json.Linq;JObject;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);Argument[1];Argument[this].Element;value;manual | -| Newtonsoft.Json.Linq;JPropertyDescriptor;GetValue;(System.Object);Argument[0];ReturnValue;taint;dfc-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;ResetValue;(System.Object);Argument[this];Argument[0];taint;df-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;SetValue;(System.Object,System.Object);Argument[0];Argument[this];taint;df-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;SetValue;(System.Object,System.Object);Argument[1];Argument[0];taint;df-generated | @@ -9085,7 +9084,6 @@ summary | System.ComponentModel;PropertyDescriptor;FillAttributes;(System.Collections.IList);Argument[this];Argument[0].Element;taint;df-generated | | System.ComponentModel;PropertyDescriptor;GetEditor;(System.Type);Argument[this];ReturnValue;taint;df-generated | | System.ComponentModel;PropertyDescriptor;GetInvocationTarget;(System.Type,System.Object);Argument[1];ReturnValue;value;dfc-generated | -| System.ComponentModel;PropertyDescriptor;GetValue;(System.Object);Argument[0];ReturnValue;taint;dfc-generated | | System.ComponentModel;PropertyDescriptor;RemoveValueChanged;(System.Object,System.EventHandler);Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.ComponentModel;PropertyDescriptor;ResetValue;(System.Object);Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;PropertyDescriptor;SetValue;(System.Object,System.Object);Argument[0];Argument[this];taint;df-generated | @@ -25715,6 +25713,7 @@ neutral | Newtonsoft.Json.Linq;JObject;remove_PropertyChanged;(System.ComponentModel.PropertyChangedEventHandler);summary;df-generated | | Newtonsoft.Json.Linq;JObject;remove_PropertyChanging;(System.ComponentModel.PropertyChangingEventHandler);summary;df-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;CanResetValue;(System.Object);summary;df-generated | +| Newtonsoft.Json.Linq;JPropertyDescriptor;GetValue;(System.Object);summary;manual | | Newtonsoft.Json.Linq;JPropertyDescriptor;ShouldSerializeValue;(System.Object);summary;df-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;get_ComponentType;();summary;df-generated | | Newtonsoft.Json.Linq;JPropertyDescriptor;get_IsReadOnly;();summary;df-generated | @@ -28812,6 +28811,7 @@ neutral | System.ComponentModel;PropertyDescriptor;GetChildProperties;(System.Object,System.Attribute[]);summary;df-generated | | System.ComponentModel;PropertyDescriptor;GetHashCode;();summary;df-generated | | System.ComponentModel;PropertyDescriptor;GetTypeFromName;(System.String);summary;df-generated | +| System.ComponentModel;PropertyDescriptor;GetValue;(System.Object);summary;manual | | System.ComponentModel;PropertyDescriptor;GetValueChangedHandler;(System.Object);summary;df-generated | | System.ComponentModel;PropertyDescriptor;OnValueChanged;(System.Object,System.EventArgs);summary;df-generated | | System.ComponentModel;PropertyDescriptor;PropertyDescriptor;(System.ComponentModel.MemberDescriptor);summary;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 25ac85e9548..c885864a31e 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -6727,7 +6727,6 @@ | System.ComponentModel;PropertyChangingEventHandler;BeginInvoke;(System.Object,System.ComponentModel.PropertyChangingEventArgs,System.AsyncCallback,System.Object);Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.ComponentModel;PropertyDescriptor;AddValueChanged;(System.Object,System.EventHandler);Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.ComponentModel;PropertyDescriptor;GetEditor;(System.Type);Argument[this];ReturnValue;taint;df-generated | -| System.ComponentModel;PropertyDescriptor;GetValue;(System.Object);Argument[0];ReturnValue;taint;dfc-generated | | System.ComponentModel;PropertyDescriptor;RemoveValueChanged;(System.Object,System.EventHandler);Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.ComponentModel;PropertyDescriptor;ResetValue;(System.Object);Argument[this];Argument[0];taint;df-generated | | System.ComponentModel;PropertyDescriptor;SetValue;(System.Object,System.Object);Argument[0];Argument[this];taint;df-generated | From 54aefe0dce9012b3dba28b828ea2d3b5d35023d2 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 29 Sep 2025 15:14:28 +0100 Subject: [PATCH 107/965] Copy experimental query to main --- .../CWE-1004/SensitiveCookieNotHttpOnly.java | 44 ++++ .../CWE-1004/SensitiveCookieNotHttpOnly.qhelp | 27 +++ .../CWE-1004/SensitiveCookieNotHttpOnly.ql | 223 ++++++++++++++++++ 3 files changed, 294 insertions(+) create mode 100644 java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java create mode 100644 java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp create mode 100644 java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java new file mode 100644 index 00000000000..48d80707ff8 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java @@ -0,0 +1,44 @@ +class SensitiveCookieNotHttpOnly { + // GOOD - Create a sensitive cookie with the `HttpOnly` flag set. + public void addCookie(String jwt_token, HttpServletRequest request, HttpServletResponse response) { + Cookie jwtCookie =new Cookie("jwt_token", jwt_token); + jwtCookie.setPath("/"); + jwtCookie.setMaxAge(3600*24*7); + jwtCookie.setHttpOnly(true); + response.addCookie(jwtCookie); + } + + // BAD - Create a sensitive cookie without the `HttpOnly` flag set. + public void addCookie2(String jwt_token, String userId, HttpServletRequest request, HttpServletResponse response) { + Cookie jwtCookie =new Cookie("jwt_token", jwt_token); + jwtCookie.setPath("/"); + jwtCookie.setMaxAge(3600*24*7); + response.addCookie(jwtCookie); + } + + // GOOD - Set a sensitive cookie header with the `HttpOnly` flag set. + public void addCookie3(String authId, HttpServletRequest request, HttpServletResponse response) { + response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure"); + } + + // BAD - Set a sensitive cookie header without the `HttpOnly` flag set. + public void addCookie4(String authId, HttpServletRequest request, HttpServletResponse response) { + response.addHeader("Set-Cookie", "token=" +authId + ";Secure"); + } + + // GOOD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through string concatenation. + public void addCookie5(String accessKey, HttpServletRequest request, HttpServletResponse response) { + response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true) + ";HttpOnly"); + } + + // BAD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. + public void addCookie6(String accessKey, HttpServletRequest request, HttpServletResponse response) { + response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true).toString()); + } + + // GOOD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through the constructor. + public void addCookie7(String accessKey, HttpServletRequest request, HttpServletResponse response) { + NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true); + response.setHeader("Set-Cookie", accessKeyCookie.toString()); + } +} diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp new file mode 100644 index 00000000000..ee3e8a4181a --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp @@ -0,0 +1,27 @@ + + + + +

    Cross-Site Scripting (XSS) is categorized as one of the OWASP Top 10 Security Vulnerabilities. The HttpOnly flag directs compatible browsers to prevent client-side script from accessing cookies. Including the HttpOnly flag in the Set-Cookie HTTP response header for a sensitive cookie helps mitigate the risk associated with XSS where an attacker's script code attempts to read the contents of a cookie and exfiltrate information obtained.

    +
    + + +

    Use the HttpOnly flag when generating a cookie containing sensitive information to help mitigate the risk of client side script accessing the protected cookie.

    +
    + + +

    The following example shows two ways of generating sensitive cookies. In the 'BAD' cases, the HttpOnly flag is not set. In the 'GOOD' cases, the HttpOnly flag is set.

    + +
    + + +
  • + PortSwigger: + Cookie without HttpOnly flag set +
  • +
  • + OWASP: + HttpOnly +
  • +
    +
    diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql new file mode 100644 index 00000000000..d2d596c23fa --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql @@ -0,0 +1,223 @@ +/** + * @name Sensitive cookies without the HttpOnly response header set + * @description Sensitive cookies without the 'HttpOnly' flag set leaves session cookies vulnerable to + * an XSS attack. + * @kind path-problem + * @problem.severity warning + * @precision medium + * @id java/sensitive-cookie-not-httponly + * @tags security + * external/cwe/cwe-1004 + */ + +/* + * Sketch of the structure of this query: we track cookie names that appear to be sensitive + * (e.g. `session` or `token`) to a `ServletResponse.addHeader(...)` or `.addCookie(...)` + * method that does not set the `httpOnly` flag. Subsidiary configurations + * `MatchesHttpOnlyConfiguration` and `SetHttpOnlyInCookieConfiguration` are used to establish + * when the `httpOnly` flag is likely to have been set, before configuration + * `MissingHttpOnlyConfiguration` establishes that a non-`httpOnly` cookie has a sensitive-seeming name. + */ + +import java +import semmle.code.java.dataflow.FlowSteps +import semmle.code.java.frameworks.Servlets +import semmle.code.java.dataflow.TaintTracking +import MissingHttpOnlyFlow::PathGraph + +/** Gets a regular expression for matching common names of sensitive cookies. */ +string getSensitiveCookieNameRegex() { result = "(?i).*(auth|session|token|key|credential).*" } + +/** Gets a regular expression for matching CSRF cookies. */ +string getCsrfCookieNameRegex() { result = "(?i).*(csrf).*" } + +/** + * Holds if a string is concatenated with the name of a sensitive cookie. Excludes CSRF cookies since + * they are special cookies implementing the Synchronizer Token Pattern that can be used in JavaScript. + */ +predicate isSensitiveCookieNameExpr(Expr expr) { + exists(string s | s = expr.(CompileTimeConstantExpr).getStringValue() | + s.regexpMatch(getSensitiveCookieNameRegex()) and not s.regexpMatch(getCsrfCookieNameRegex()) + ) + or + isSensitiveCookieNameExpr(expr.(AddExpr).getAnOperand()) +} + +/** A sensitive cookie name. */ +class SensitiveCookieNameExpr extends Expr { + SensitiveCookieNameExpr() { isSensitiveCookieNameExpr(this) } +} + +/** A method call that sets a `Set-Cookie` header. */ +class SetCookieMethodCall extends MethodCall { + SetCookieMethodCall() { + ( + this.getMethod() instanceof ResponseAddHeaderMethod or + this.getMethod() instanceof ResponseSetHeaderMethod + ) and + this.getArgument(0).(CompileTimeConstantExpr).getStringValue().toLowerCase() = "set-cookie" + } +} + +/** + * A taint configuration tracking flow from the text `httponly` to argument 1 of + * `SetCookieMethodCall`. + */ +module MatchesHttpOnlyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr().(CompileTimeConstantExpr).getStringValue().toLowerCase().matches("%httponly%") + } + + predicate isSink(DataFlow::Node sink) { + sink.asExpr() = any(SetCookieMethodCall ma).getArgument(1) + } +} + +module MatchesHttpOnlyFlow = TaintTracking::Global; + +/** A class descended from `javax.servlet.http.Cookie`. */ +class CookieClass extends RefType { + CookieClass() { this.getAnAncestor().hasQualifiedName("javax.servlet.http", "Cookie") } +} + +/** Holds if `expr` is any boolean-typed expression other than literal `false`. */ +// Inlined because this could be a very large result set if computed out of context +pragma[inline] +predicate mayBeBooleanTrue(Expr expr) { + expr.getType() instanceof BooleanType and + not expr.(CompileTimeConstantExpr).getBooleanValue() = false +} + +/** Holds if the method call may set the `HttpOnly` flag. */ +predicate setsCookieHttpOnly(MethodCall ma) { + ma.getMethod().getName() = "setHttpOnly" and + // any use of setHttpOnly(x) where x isn't false is probably safe + mayBeBooleanTrue(ma.getArgument(0)) +} + +/** Holds if `ma` removes a cookie. */ +predicate removesCookie(MethodCall ma) { + ma.getMethod().getName() = "setMaxAge" and + ma.getArgument(0).(IntegerLiteral).getIntValue() = 0 +} + +/** + * Holds if the MethodCall `ma` is a test method call indicated by: + * a) in a test directory such as `src/test/java` + * b) in a test package whose name has the word `test` + * c) in a test class whose name has the word `test` + * d) in a test class implementing a test framework such as JUnit or TestNG + */ +predicate isTestMethod(MethodCall ma) { + exists(Method m | + m = ma.getEnclosingCallable() and + ( + m.getDeclaringType().getName().toLowerCase().matches("%test%") or // Simple check to exclude test classes to reduce FPs + m.getDeclaringType().getPackage().getName().toLowerCase().matches("%test%") or // Simple check to exclude classes in test packages to reduce FPs + exists(m.getLocation().getFile().getAbsolutePath().indexOf("/src/test/java")) or // Match test directory structure of build tools like maven + m instanceof TestMethod // Test method of a test case implementing a test framework such as JUnit or TestNG + ) + ) +} + +/** + * A taint configuration tracking flow of a method that sets the `HttpOnly` flag, + * or one that removes a cookie, to a `ServletResponse.addCookie` call. + */ +module SetHttpOnlyOrRemovesCookieConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr() = + any(MethodCall ma | setsCookieHttpOnly(ma) or removesCookie(ma)).getQualifier() + } + + predicate isSink(DataFlow::Node sink) { + sink.asExpr() = + any(MethodCall ma | ma.getMethod() instanceof ResponseAddCookieMethod).getArgument(0) + } +} + +module SetHttpOnlyOrRemovesCookieFlow = TaintTracking::Global; + +/** + * A cookie that is added to an HTTP response and which doesn't have `httpOnly` set, used as a sink + * in `MissingHttpOnlyConfiguration`. + */ +class CookieResponseSink extends DataFlow::ExprNode { + CookieResponseSink() { + exists(MethodCall ma | + ( + ma.getMethod() instanceof ResponseAddCookieMethod and + this.getExpr() = ma.getArgument(0) and + not SetHttpOnlyOrRemovesCookieFlow::flowTo(this) + or + ma instanceof SetCookieMethodCall and + this.getExpr() = ma.getArgument(1) and + not MatchesHttpOnlyFlow::flowTo(this) // response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure") + ) and + not isTestMethod(ma) // Test class or method + ) + } +} + +/** Holds if `cie` is an invocation of a JAX-RS `NewCookie` constructor that sets `HttpOnly` to true. */ +predicate setsHttpOnlyInNewCookie(ClassInstanceExpr cie) { + cie.getConstructedType().hasQualifiedName(["javax.ws.rs.core", "jakarta.ws.rs.core"], "NewCookie") and + ( + cie.getNumArgument() = 6 and + mayBeBooleanTrue(cie.getArgument(5)) // NewCookie(Cookie cookie, String comment, int maxAge, Date expiry, boolean secure, boolean httpOnly) + or + cie.getNumArgument() = 8 and + cie.getArgument(6).getType() instanceof BooleanType and + mayBeBooleanTrue(cie.getArgument(7)) // NewCookie(String name, String value, String path, String domain, String comment, int maxAge, boolean secure, boolean httpOnly) + or + cie.getNumArgument() = 10 and + mayBeBooleanTrue(cie.getArgument(9)) // NewCookie(String name, String value, String path, String domain, int version, String comment, int maxAge, Date expiry, boolean secure, boolean httpOnly) + ) +} + +/** + * A taint configuration tracking flow from a sensitive cookie without the `HttpOnly` flag + * set to its HTTP response. + */ +module MissingHttpOnlyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr() instanceof SensitiveCookieNameExpr } + + predicate isSink(DataFlow::Node sink) { sink instanceof CookieResponseSink } + + predicate isBarrier(DataFlow::Node node) { + // JAX-RS's `new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true)` and similar + setsHttpOnlyInNewCookie(node.asExpr()) + } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists( + ConstructorCall cc // new Cookie(...) + | + cc.getConstructedType() instanceof CookieClass and + pred.asExpr() = cc.getAnArgument() and + succ.asExpr() = cc + ) + or + exists( + MethodCall ma // cookie.toString() + | + ma.getMethod().getName() = "toString" and + ma.getQualifier().getType() instanceof CookieClass and + pred.asExpr() = ma.getQualifier() and + succ.asExpr() = ma + ) + } +} + +module MissingHttpOnlyFlow = TaintTracking::Global; + +deprecated query predicate problems( + DataFlow::Node sinkNode, MissingHttpOnlyFlow::PathNode source, MissingHttpOnlyFlow::PathNode sink, + string message1, DataFlow::Node sourceNode, string message2 +) { + MissingHttpOnlyFlow::flowPath(source, sink) and + sinkNode = sink.getNode() and + message1 = "$@ doesn't have the HttpOnly flag set." and + sourceNode = source.getNode() and + message2 = "This sensitive cookie" +} From e1cf3d30d2447b779ec3bc847f9262e1f90d3866 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 1 Oct 2025 11:20:11 +0100 Subject: [PATCH 108/965] Update documentation, rename things and add more comments to explain how the implementation works, remove filter for test code (prefer to filter in code scanning ui than in query logic) --- .../CWE-1004/SensitiveCookieNotHttpOnly.qhelp | 7 +- .../CWE-1004/SensitiveCookieNotHttpOnly.ql | 70 +++++++------------ 2 files changed, 29 insertions(+), 48 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp index ee3e8a4181a..71e016510e2 100644 --- a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp @@ -2,11 +2,13 @@ -

    Cross-Site Scripting (XSS) is categorized as one of the OWASP Top 10 Security Vulnerabilities. The HttpOnly flag directs compatible browsers to prevent client-side script from accessing cookies. Including the HttpOnly flag in the Set-Cookie HTTP response header for a sensitive cookie helps mitigate the risk associated with XSS where an attacker's script code attempts to read the contents of a cookie and exfiltrate information obtained.

    +

    Cookies without the HttpOnly flag set are accessible to client-side scripts (such as JavaScript) running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a sensitive cookie does not need to be accessed directly by client-side scripts, the HttpOnly flag should be set.

    -

    Use the HttpOnly flag when generating a cookie containing sensitive information to help mitigate the risk of client side script accessing the protected cookie.

    +

    Use the HttpOnly flag when generating a cookie containing sensitive information to help mitigate the risk of client-side scripts accessing the protected cookie.

    @@ -23,5 +25,6 @@ OWASP: HttpOnly +
  • MDN: Set-Cookie HttpOnly.
  • diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql index d2d596c23fa..41b2c95c870 100644 --- a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql @@ -14,7 +14,7 @@ * Sketch of the structure of this query: we track cookie names that appear to be sensitive * (e.g. `session` or `token`) to a `ServletResponse.addHeader(...)` or `.addCookie(...)` * method that does not set the `httpOnly` flag. Subsidiary configurations - * `MatchesHttpOnlyConfiguration` and `SetHttpOnlyInCookieConfiguration` are used to establish + * `MatchesHttpOnlyToRawHeaderConfiguration` and `SetHttpOnlyInCookieConfiguration` are used to establish * when the `httpOnly` flag is likely to have been set, before configuration * `MissingHttpOnlyConfiguration` establishes that a non-`httpOnly` cookie has a sensitive-seeming name. */ @@ -49,8 +49,8 @@ class SensitiveCookieNameExpr extends Expr { } /** A method call that sets a `Set-Cookie` header. */ -class SetCookieMethodCall extends MethodCall { - SetCookieMethodCall() { +class SetCookieRawHeaderMethodCall extends MethodCall { + SetCookieRawHeaderMethodCall() { ( this.getMethod() instanceof ResponseAddHeaderMethod or this.getMethod() instanceof ResponseSetHeaderMethod @@ -61,19 +61,19 @@ class SetCookieMethodCall extends MethodCall { /** * A taint configuration tracking flow from the text `httponly` to argument 1 of - * `SetCookieMethodCall`. + * `SetCookieRawHeaderMethodCall`. */ -module MatchesHttpOnlyConfig implements DataFlow::ConfigSig { +module MatchesHttpOnlyToRawHeaderConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr().(CompileTimeConstantExpr).getStringValue().toLowerCase().matches("%httponly%") } predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(SetCookieMethodCall ma).getArgument(1) + sink.asExpr() = any(SetCookieRawHeaderMethodCall ma).getArgument(1) } } -module MatchesHttpOnlyFlow = TaintTracking::Global; +module MatchesHttpOnlyToRawHeaderFlow = TaintTracking::Global; /** A class descended from `javax.servlet.http.Cookie`. */ class CookieClass extends RefType { @@ -101,30 +101,11 @@ predicate removesCookie(MethodCall ma) { ma.getArgument(0).(IntegerLiteral).getIntValue() = 0 } -/** - * Holds if the MethodCall `ma` is a test method call indicated by: - * a) in a test directory such as `src/test/java` - * b) in a test package whose name has the word `test` - * c) in a test class whose name has the word `test` - * d) in a test class implementing a test framework such as JUnit or TestNG - */ -predicate isTestMethod(MethodCall ma) { - exists(Method m | - m = ma.getEnclosingCallable() and - ( - m.getDeclaringType().getName().toLowerCase().matches("%test%") or // Simple check to exclude test classes to reduce FPs - m.getDeclaringType().getPackage().getName().toLowerCase().matches("%test%") or // Simple check to exclude classes in test packages to reduce FPs - exists(m.getLocation().getFile().getAbsolutePath().indexOf("/src/test/java")) or // Match test directory structure of build tools like maven - m instanceof TestMethod // Test method of a test case implementing a test framework such as JUnit or TestNG - ) - ) -} - /** * A taint configuration tracking flow of a method that sets the `HttpOnly` flag, * or one that removes a cookie, to a `ServletResponse.addCookie` call. */ -module SetHttpOnlyOrRemovesCookieConfig implements DataFlow::ConfigSig { +module SetHttpOnlyOrRemovesCookieToAddCookieConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr() = any(MethodCall ma | setsCookieHttpOnly(ma) or removesCookie(ma)).getQualifier() @@ -136,25 +117,25 @@ module SetHttpOnlyOrRemovesCookieConfig implements DataFlow::ConfigSig { } } -module SetHttpOnlyOrRemovesCookieFlow = TaintTracking::Global; +module SetHttpOnlyOrRemovesCookieToAddCookieFlow = + TaintTracking::Global; /** * A cookie that is added to an HTTP response and which doesn't have `httpOnly` set, used as a sink * in `MissingHttpOnlyConfiguration`. */ -class CookieResponseSink extends DataFlow::ExprNode { - CookieResponseSink() { +class CookieResponseWithoutHttpOnlySink extends DataFlow::ExprNode { + CookieResponseWithoutHttpOnlySink() { exists(MethodCall ma | ( ma.getMethod() instanceof ResponseAddCookieMethod and this.getExpr() = ma.getArgument(0) and - not SetHttpOnlyOrRemovesCookieFlow::flowTo(this) + not SetHttpOnlyOrRemovesCookieToAddCookieFlow::flowTo(this) or - ma instanceof SetCookieMethodCall and + ma instanceof SetCookieRawHeaderMethodCall and this.getExpr() = ma.getArgument(1) and - not MatchesHttpOnlyFlow::flowTo(this) // response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure") - ) and - not isTestMethod(ma) // Test class or method + not MatchesHttpOnlyToRawHeaderFlow::flowTo(this) // response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure") + ) ) } } @@ -178,14 +159,18 @@ predicate setsHttpOnlyInNewCookie(ClassInstanceExpr cie) { /** * A taint configuration tracking flow from a sensitive cookie without the `HttpOnly` flag * set to its HTTP response. + * Tracks string literals containing sensitive names (`SensitiveNameExpr`), to an `addCookie` call (as a `Cookie` object) + * or an `addHeader` call (as a string) (`CookieResponseWithoutHttpOnly`). + * Passes through `Cookie` constructors and `toString` calls. */ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr() instanceof SensitiveCookieNameExpr } - predicate isSink(DataFlow::Node sink) { sink instanceof CookieResponseSink } + predicate isSink(DataFlow::Node sink) { sink instanceof CookieResponseWithoutHttpOnlySink } predicate isBarrier(DataFlow::Node node) { // JAX-RS's `new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true)` and similar + // Cookie constructors, but barriers to considering the flow of the sensitive name, as httponly flag is set. setsHttpOnlyInNewCookie(node.asExpr()) } @@ -211,13 +196,6 @@ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { module MissingHttpOnlyFlow = TaintTracking::Global; -deprecated query predicate problems( - DataFlow::Node sinkNode, MissingHttpOnlyFlow::PathNode source, MissingHttpOnlyFlow::PathNode sink, - string message1, DataFlow::Node sourceNode, string message2 -) { - MissingHttpOnlyFlow::flowPath(source, sink) and - sinkNode = sink.getNode() and - message1 = "$@ doesn't have the HttpOnly flag set." and - sourceNode = source.getNode() and - message2 = "This sensitive cookie" -} +from MissingHttpOnlyFlow::PathNode source, MissingHttpOnlyFlow::PathNode sink +where MissingHttpOnlyFlow::flowPath(source, sink) +select sink, source, sink, "$@ doesn't have the HttpOnly flag set.", source, "This sensitive cookie" From c799f9381140d28844a1654c323a1455c9e689e2 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 1 Oct 2025 16:48:09 +0100 Subject: [PATCH 109/965] Update tests and add inline expectations --- .../CWE-1004/SensitiveCookieNotHttpOnly.ql | 3 +- .../SensitiveCookieNotHttpOnly.expected | 60 +++++++ .../CWE-1004/SensitiveCookieNotHttpOnly.java | 164 ++++++++++++++++++ .../CWE-1004/SensitiveCookieNotHttpOnly.qlref | 2 + .../query-tests/security/CWE-1004/options | 1 + 5 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected create mode 100644 java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java create mode 100644 java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref create mode 100644 java/ql/test/query-tests/security/CWE-1004/options diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql index 41b2c95c870..4eae5f1ee4e 100644 --- a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql @@ -23,7 +23,6 @@ import java import semmle.code.java.dataflow.FlowSteps import semmle.code.java.frameworks.Servlets import semmle.code.java.dataflow.TaintTracking -import MissingHttpOnlyFlow::PathGraph /** Gets a regular expression for matching common names of sensitive cookies. */ string getSensitiveCookieNameRegex() { result = "(?i).*(auth|session|token|key|credential).*" } @@ -196,6 +195,8 @@ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { module MissingHttpOnlyFlow = TaintTracking::Global; +import MissingHttpOnlyFlow::PathGraph + from MissingHttpOnlyFlow::PathNode source, MissingHttpOnlyFlow::PathNode sink where MissingHttpOnlyFlow::flowPath(source, sink) select sink, source, sink, "$@ doesn't have the HttpOnly flag set.", source, "This sensitive cookie" diff --git a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected new file mode 100644 index 00000000000..71c73f3921e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected @@ -0,0 +1,60 @@ +#select +| SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | This sensitive cookie | +| SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | This sensitive cookie | +edges +| 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 | Sink:MaD:46211 | +| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | Config | +| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | MaD:46217 | +| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:46212 | +| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:46212 | +| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | provenance | MaD:46260 Sink:MaD:46214 | +| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | provenance | MaD:46298 | +| 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 | MaD:46298 | +| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | provenance | MaD:46260 | +| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | provenance | Sink:MaD:46214 | +| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | +| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | +| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | +| 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 | Config | +| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | provenance | MaD:46217 | +| 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 | Sink:MaD:46211 | +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 | +| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | semmle.label | tokenCookieStr : String | +| SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | semmle.label | jwtCookie | +| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | semmle.label | "token=" : String | +| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | semmle.label | ... + ... : String | +| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | semmle.label | ... + ... | +| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | semmle.label | new NewCookie(...) : NewCookie | +| SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | semmle.label | toString(...) | +| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | semmle.label | "session-access-key" : String | +| SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | semmle.label | new NewCookie(...) : NewCookie | +| SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | semmle.label | "session-access-key" : String | +| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | semmle.label | accessKeyCookie : NewCookie | +| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | semmle.label | toString(...) : String | +| SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | semmle.label | keyStr | +| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | semmle.label | "token=" : String | +| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | semmle.label | ... + ... : String | +| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | semmle.label | ... + ... : String | +| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | semmle.label | secString | +| SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | semmle.label | "Presto-UI-Token" : String | +| SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | semmle.label | new Cookie(...) : Cookie | +| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | semmle.label | PRESTO_UI_COOKIE : String | +| SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | semmle.label | cookie : Cookie | +| SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | semmle.label | createAuthenticationCookie(...) : Cookie | +| SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | semmle.label | cookie | +subpaths diff --git a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java new file mode 100644 index 00000000000..a57a502336f --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java @@ -0,0 +1,164 @@ +import java.io.IOException; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; + +import javax.ws.rs.core.NewCookie; + +import org.springframework.security.web.csrf.CsrfToken; + +class SensitiveCookieNotHttpOnly { + // GOOD - Tests adding a sensitive cookie with the `HttpOnly` flag set. + public void addCookie(String jwt_token, HttpServletRequest request, HttpServletResponse response) { + Cookie jwtCookie = new Cookie("jwt_token", jwt_token); + jwtCookie.setPath("/"); + jwtCookie.setMaxAge(3600*24*7); + jwtCookie.setHttpOnly(true); + response.addCookie(jwtCookie); + } + + // BAD - Tests adding a sensitive cookie without the `HttpOnly` flag set. + public void addCookie2(String jwt_token, String userId, HttpServletRequest request, HttpServletResponse response) { + String tokenCookieStr = "jwt_token"; // $Source + Cookie jwtCookie = new Cookie(tokenCookieStr, jwt_token); + Cookie userIdCookie = new Cookie("user_id", userId); + jwtCookie.setPath("/"); + userIdCookie.setPath("/"); + jwtCookie.setMaxAge(3600*24*7); + userIdCookie.setMaxAge(3600*24*7); + response.addCookie(jwtCookie); // $Alert + response.addCookie(userIdCookie); + } + + // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set. + public void addCookie3(String authId, HttpServletRequest request, HttpServletResponse response) { + response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure"); + } + + // BAD - Tests set a sensitive cookie header without the `HttpOnly` flag set. + public void addCookie4(String authId, HttpServletRequest request, HttpServletResponse response) { + response.addHeader("Set-Cookie", "token=" +authId + ";Secure"); // $Alert + } + + // GOOD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through string concatenation. + public void addCookie5(String accessKey, HttpServletRequest request, HttpServletResponse response) { + response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true) + ";HttpOnly"); + } + + // BAD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. + public void addCookie6(String accessKey, HttpServletRequest request, HttpServletResponse response) { + response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true).toString()); // $Alert + } + + // GOOD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through the constructor. + public void addCookie7(String accessKey, HttpServletRequest request, HttpServletResponse response) { + NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true); + response.setHeader("Set-Cookie", accessKeyCookie.toString()); + } + + // BAD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. + public void addCookie8(String accessKey, HttpServletRequest request, HttpServletResponse response) { + NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, 0, null, 86400, true); // $Source + String keyStr = accessKeyCookie.toString(); + response.setHeader("Set-Cookie", keyStr); // $Alert + } + + // BAD - Tests set a sensitive cookie header using a variable without the `HttpOnly` flag set. + public void addCookie9(String authId, HttpServletRequest request, HttpServletResponse response) { + String secString = "token=" +authId + ";Secure"; // $Source + response.addHeader("Set-Cookie", secString); // $Alert + } + + // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set using `String.format(...)`. + public void addCookie10(HttpServletRequest request, HttpServletResponse response) { + response.addHeader("SET-COOKIE", String.format("%s=%s;HttpOnly", "sessionkey", request.getSession().getAttribute("sessionkey"))); + } + + public Cookie createHttpOnlyAuthenticationCookie(HttpServletRequest request, String jwt) { + String PRESTO_UI_COOKIE = "Presto-UI-Token"; + Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); + cookie.setHttpOnly(true); + cookie.setPath("/ui"); + return cookie; + } + + public Cookie createAuthenticationCookie(HttpServletRequest request, String jwt) { + String PRESTO_UI_COOKIE = "Presto-UI-Token"; // $Source + Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); + cookie.setPath("/ui"); + return cookie; + } + + public Cookie removeAuthenticationCookie(HttpServletRequest request, String jwt) { + String PRESTO_UI_COOKIE = "Presto-UI-Token"; + Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); + cookie.setPath("/ui"); + cookie.setMaxAge(0); + return cookie; + } + + // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set using a wrapper method. + public void addCookie11(HttpServletRequest request, HttpServletResponse response, String jwt) { + Cookie cookie = createHttpOnlyAuthenticationCookie(request, jwt); + response.addCookie(cookie); + } + + // BAD - Tests set a sensitive cookie header without the `HttpOnly` flag set using a wrapper method. + public void addCookie12(HttpServletRequest request, HttpServletResponse response, String jwt) { + Cookie cookie = createAuthenticationCookie(request, jwt); + response.addCookie(cookie); // $Alert + } + + // GOOD - Tests remove a sensitive cookie header without the `HttpOnly` flag set using a wrapper method. + public void addCookie13(HttpServletRequest request, HttpServletResponse response, String jwt) { + Cookie cookie = removeAuthenticationCookie(request, jwt); + response.addCookie(cookie); + } + + private Cookie createCookie(String name, String value, Boolean httpOnly){ + Cookie cookie = null; + cookie = new Cookie(name, value); + cookie.setDomain("/"); + cookie.setHttpOnly(httpOnly); + + //for production https + cookie.setSecure(true); + + cookie.setMaxAge(60*60*24*30); + cookie.setPath("/"); + + return cookie; + } + + // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set through a boolean variable using a wrapper method. + public void addCookie14(HttpServletRequest request, HttpServletResponse response, String refreshToken) { + response.addCookie(createCookie("refresh_token", refreshToken, true)); + } + + // BAD (but not detected) - Tests set a sensitive cookie header with the `HttpOnly` flag not set through a boolean variable using a wrapper method. + // This example is missed because the `cookie.setHttpOnly` call in `createCookie` is thought to maybe set the HTTP-only flag, and the `cookie` + // object flows to this `addCookie` call. + public void addCookie15(HttpServletRequest request, HttpServletResponse response, String refreshToken) { + response.addCookie(createCookie("refresh_token", refreshToken, false)); // $MISSING:Alert + } + + // GOOD - CSRF token doesn't need to have the `HttpOnly` flag set. + public void addCsrfCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Spring put the CSRF token in session attribute "_csrf" + CsrfToken csrfToken = (CsrfToken) request.getAttribute("_csrf"); + + // Send the cookie only if the token has changed + String actualToken = request.getHeader("X-CSRF-TOKEN"); + if (actualToken == null || !actualToken.equals(csrfToken.getToken())) { + // Session cookie that can be used by AngularJS + String pCookieName = "CSRF-TOKEN"; + Cookie cookie = new Cookie(pCookieName, csrfToken.getToken()); + cookie.setMaxAge(-1); + cookie.setHttpOnly(false); + cookie.setPath("/"); + response.addCookie(cookie); + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref new file mode 100644 index 00000000000..e3b99f6e685 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-1004/options b/java/ql/test/query-tests/security/CWE-1004/options new file mode 100644 index 00000000000..0db0b6e7242 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-1004/options @@ -0,0 +1 @@ +// semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/springframework-5.8.x From c4781146c0f7497ded8090b532f9f84411159391 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 2 Oct 2025 09:59:44 +0100 Subject: [PATCH 110/965] Remove experimental query and tests --- .../CWE-1004/SensitiveCookieNotHttpOnly.java | 44 ---- .../CWE-1004/SensitiveCookieNotHttpOnly.qhelp | 27 --- .../CWE-1004/SensitiveCookieNotHttpOnly.ql | 224 ------------------ .../SensitiveCookieNotHttpOnly.expected | 67 ------ .../CWE-1004/SensitiveCookieNotHttpOnly.java | 164 ------------- .../CWE-1004/SensitiveCookieNotHttpOnly.qlref | 2 - .../query-tests/security/CWE-1004/options | 1 - 7 files changed, 529 deletions(-) delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-1004/options diff --git a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java b/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java deleted file mode 100644 index 48d80707ff8..00000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.java +++ /dev/null @@ -1,44 +0,0 @@ -class SensitiveCookieNotHttpOnly { - // GOOD - Create a sensitive cookie with the `HttpOnly` flag set. - public void addCookie(String jwt_token, HttpServletRequest request, HttpServletResponse response) { - Cookie jwtCookie =new Cookie("jwt_token", jwt_token); - jwtCookie.setPath("/"); - jwtCookie.setMaxAge(3600*24*7); - jwtCookie.setHttpOnly(true); - response.addCookie(jwtCookie); - } - - // BAD - Create a sensitive cookie without the `HttpOnly` flag set. - public void addCookie2(String jwt_token, String userId, HttpServletRequest request, HttpServletResponse response) { - Cookie jwtCookie =new Cookie("jwt_token", jwt_token); - jwtCookie.setPath("/"); - jwtCookie.setMaxAge(3600*24*7); - response.addCookie(jwtCookie); - } - - // GOOD - Set a sensitive cookie header with the `HttpOnly` flag set. - public void addCookie3(String authId, HttpServletRequest request, HttpServletResponse response) { - response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure"); - } - - // BAD - Set a sensitive cookie header without the `HttpOnly` flag set. - public void addCookie4(String authId, HttpServletRequest request, HttpServletResponse response) { - response.addHeader("Set-Cookie", "token=" +authId + ";Secure"); - } - - // GOOD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through string concatenation. - public void addCookie5(String accessKey, HttpServletRequest request, HttpServletResponse response) { - response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true) + ";HttpOnly"); - } - - // BAD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. - public void addCookie6(String accessKey, HttpServletRequest request, HttpServletResponse response) { - response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true).toString()); - } - - // GOOD - Set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through the constructor. - public void addCookie7(String accessKey, HttpServletRequest request, HttpServletResponse response) { - NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true); - response.setHeader("Set-Cookie", accessKeyCookie.toString()); - } -} diff --git a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp b/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp deleted file mode 100644 index ee3e8a4181a..00000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.qhelp +++ /dev/null @@ -1,27 +0,0 @@ - - - - -

    Cross-Site Scripting (XSS) is categorized as one of the OWASP Top 10 Security Vulnerabilities. The HttpOnly flag directs compatible browsers to prevent client-side script from accessing cookies. Including the HttpOnly flag in the Set-Cookie HTTP response header for a sensitive cookie helps mitigate the risk associated with XSS where an attacker's script code attempts to read the contents of a cookie and exfiltrate information obtained.

    -
    - - -

    Use the HttpOnly flag when generating a cookie containing sensitive information to help mitigate the risk of client side script accessing the protected cookie.

    -
    - - -

    The following example shows two ways of generating sensitive cookies. In the 'BAD' cases, the HttpOnly flag is not set. In the 'GOOD' cases, the HttpOnly flag is set.

    - -
    - - -
  • - PortSwigger: - Cookie without HttpOnly flag set -
  • -
  • - OWASP: - HttpOnly -
  • -
    -
    diff --git a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql deleted file mode 100644 index fa5237d32bb..00000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +++ /dev/null @@ -1,224 +0,0 @@ -/** - * @name Sensitive cookies without the HttpOnly response header set - * @description Sensitive cookies without the 'HttpOnly' flag set leaves session cookies vulnerable to - * an XSS attack. - * @kind path-problem - * @problem.severity warning - * @precision medium - * @id java/sensitive-cookie-not-httponly - * @tags security - * experimental - * external/cwe/cwe-1004 - */ - -/* - * Sketch of the structure of this query: we track cookie names that appear to be sensitive - * (e.g. `session` or `token`) to a `ServletResponse.addHeader(...)` or `.addCookie(...)` - * method that does not set the `httpOnly` flag. Subsidiary configurations - * `MatchesHttpOnlyConfiguration` and `SetHttpOnlyInCookieConfiguration` are used to establish - * when the `httpOnly` flag is likely to have been set, before configuration - * `MissingHttpOnlyConfiguration` establishes that a non-`httpOnly` cookie has a sensitive-seeming name. - */ - -import java -import semmle.code.java.dataflow.FlowSteps -import semmle.code.java.frameworks.Servlets -import semmle.code.java.dataflow.TaintTracking -import MissingHttpOnlyFlow::PathGraph - -/** Gets a regular expression for matching common names of sensitive cookies. */ -string getSensitiveCookieNameRegex() { result = "(?i).*(auth|session|token|key|credential).*" } - -/** Gets a regular expression for matching CSRF cookies. */ -string getCsrfCookieNameRegex() { result = "(?i).*(csrf).*" } - -/** - * Holds if a string is concatenated with the name of a sensitive cookie. Excludes CSRF cookies since - * they are special cookies implementing the Synchronizer Token Pattern that can be used in JavaScript. - */ -predicate isSensitiveCookieNameExpr(Expr expr) { - exists(string s | s = expr.(CompileTimeConstantExpr).getStringValue() | - s.regexpMatch(getSensitiveCookieNameRegex()) and not s.regexpMatch(getCsrfCookieNameRegex()) - ) - or - isSensitiveCookieNameExpr(expr.(AddExpr).getAnOperand()) -} - -/** A sensitive cookie name. */ -class SensitiveCookieNameExpr extends Expr { - SensitiveCookieNameExpr() { isSensitiveCookieNameExpr(this) } -} - -/** A method call that sets a `Set-Cookie` header. */ -class SetCookieMethodCall extends MethodCall { - SetCookieMethodCall() { - ( - this.getMethod() instanceof ResponseAddHeaderMethod or - this.getMethod() instanceof ResponseSetHeaderMethod - ) and - this.getArgument(0).(CompileTimeConstantExpr).getStringValue().toLowerCase() = "set-cookie" - } -} - -/** - * A taint configuration tracking flow from the text `httponly` to argument 1 of - * `SetCookieMethodCall`. - */ -module MatchesHttpOnlyConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.asExpr().(CompileTimeConstantExpr).getStringValue().toLowerCase().matches("%httponly%") - } - - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(SetCookieMethodCall ma).getArgument(1) - } -} - -module MatchesHttpOnlyFlow = TaintTracking::Global; - -/** A class descended from `javax.servlet.http.Cookie`. */ -class CookieClass extends RefType { - CookieClass() { this.getAnAncestor().hasQualifiedName("javax.servlet.http", "Cookie") } -} - -/** Holds if `expr` is any boolean-typed expression other than literal `false`. */ -// Inlined because this could be a very large result set if computed out of context -pragma[inline] -predicate mayBeBooleanTrue(Expr expr) { - expr.getType() instanceof BooleanType and - not expr.(CompileTimeConstantExpr).getBooleanValue() = false -} - -/** Holds if the method call may set the `HttpOnly` flag. */ -predicate setsCookieHttpOnly(MethodCall ma) { - ma.getMethod().getName() = "setHttpOnly" and - // any use of setHttpOnly(x) where x isn't false is probably safe - mayBeBooleanTrue(ma.getArgument(0)) -} - -/** Holds if `ma` removes a cookie. */ -predicate removesCookie(MethodCall ma) { - ma.getMethod().getName() = "setMaxAge" and - ma.getArgument(0).(IntegerLiteral).getIntValue() = 0 -} - -/** - * Holds if the MethodCall `ma` is a test method call indicated by: - * a) in a test directory such as `src/test/java` - * b) in a test package whose name has the word `test` - * c) in a test class whose name has the word `test` - * d) in a test class implementing a test framework such as JUnit or TestNG - */ -predicate isTestMethod(MethodCall ma) { - exists(Method m | - m = ma.getEnclosingCallable() and - ( - m.getDeclaringType().getName().toLowerCase().matches("%test%") or // Simple check to exclude test classes to reduce FPs - m.getDeclaringType().getPackage().getName().toLowerCase().matches("%test%") or // Simple check to exclude classes in test packages to reduce FPs - exists(m.getLocation().getFile().getAbsolutePath().indexOf("/src/test/java")) or // Match test directory structure of build tools like maven - m instanceof TestMethod // Test method of a test case implementing a test framework such as JUnit or TestNG - ) - ) -} - -/** - * A taint configuration tracking flow of a method that sets the `HttpOnly` flag, - * or one that removes a cookie, to a `ServletResponse.addCookie` call. - */ -module SetHttpOnlyOrRemovesCookieConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.asExpr() = - any(MethodCall ma | setsCookieHttpOnly(ma) or removesCookie(ma)).getQualifier() - } - - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = - any(MethodCall ma | ma.getMethod() instanceof ResponseAddCookieMethod).getArgument(0) - } -} - -module SetHttpOnlyOrRemovesCookieFlow = TaintTracking::Global; - -/** - * A cookie that is added to an HTTP response and which doesn't have `httpOnly` set, used as a sink - * in `MissingHttpOnlyConfiguration`. - */ -class CookieResponseSink extends DataFlow::ExprNode { - CookieResponseSink() { - exists(MethodCall ma | - ( - ma.getMethod() instanceof ResponseAddCookieMethod and - this.getExpr() = ma.getArgument(0) and - not SetHttpOnlyOrRemovesCookieFlow::flowTo(this) - or - ma instanceof SetCookieMethodCall and - this.getExpr() = ma.getArgument(1) and - not MatchesHttpOnlyFlow::flowTo(this) // response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure") - ) and - not isTestMethod(ma) // Test class or method - ) - } -} - -/** Holds if `cie` is an invocation of a JAX-RS `NewCookie` constructor that sets `HttpOnly` to true. */ -predicate setsHttpOnlyInNewCookie(ClassInstanceExpr cie) { - cie.getConstructedType().hasQualifiedName(["javax.ws.rs.core", "jakarta.ws.rs.core"], "NewCookie") and - ( - cie.getNumArgument() = 6 and - mayBeBooleanTrue(cie.getArgument(5)) // NewCookie(Cookie cookie, String comment, int maxAge, Date expiry, boolean secure, boolean httpOnly) - or - cie.getNumArgument() = 8 and - cie.getArgument(6).getType() instanceof BooleanType and - mayBeBooleanTrue(cie.getArgument(7)) // NewCookie(String name, String value, String path, String domain, String comment, int maxAge, boolean secure, boolean httpOnly) - or - cie.getNumArgument() = 10 and - mayBeBooleanTrue(cie.getArgument(9)) // NewCookie(String name, String value, String path, String domain, int version, String comment, int maxAge, Date expiry, boolean secure, boolean httpOnly) - ) -} - -/** - * A taint configuration tracking flow from a sensitive cookie without the `HttpOnly` flag - * set to its HTTP response. - */ -module MissingHttpOnlyConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.asExpr() instanceof SensitiveCookieNameExpr } - - predicate isSink(DataFlow::Node sink) { sink instanceof CookieResponseSink } - - predicate isBarrier(DataFlow::Node node) { - // JAX-RS's `new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true)` and similar - setsHttpOnlyInNewCookie(node.asExpr()) - } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists( - ConstructorCall cc // new Cookie(...) - | - cc.getConstructedType() instanceof CookieClass and - pred.asExpr() = cc.getAnArgument() and - succ.asExpr() = cc - ) - or - exists( - MethodCall ma // cookie.toString() - | - ma.getMethod().getName() = "toString" and - ma.getQualifier().getType() instanceof CookieClass and - pred.asExpr() = ma.getQualifier() and - succ.asExpr() = ma - ) - } -} - -module MissingHttpOnlyFlow = TaintTracking::Global; - -deprecated query predicate problems( - DataFlow::Node sinkNode, MissingHttpOnlyFlow::PathNode source, MissingHttpOnlyFlow::PathNode sink, - string message1, DataFlow::Node sourceNode, string message2 -) { - MissingHttpOnlyFlow::flowPath(source, sink) and - sinkNode = sink.getNode() and - message1 = "$@ doesn't have the HttpOnly flag set." and - sourceNode = source.getNode() and - message2 = "This sensitive cookie" -} 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 deleted file mode 100644 index caecb52fe45..00000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected +++ /dev/null @@ -1,67 +0,0 @@ -edges -| 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 | Sink:MaD:1 | -| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | Config | -| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | MaD:4 | -| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:2 | -| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:2 | -| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | provenance | MaD:5 Sink:MaD:3 | -| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | provenance | MaD:6 | -| 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 | MaD:6 | -| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | provenance | MaD:5 | -| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | provenance | Sink:MaD:3 | -| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | -| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | -| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | -| 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 | Config | -| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | provenance | MaD:4 | -| 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 | Sink:MaD:1 | -models -| 1 | Sink: javax.servlet.http; HttpServletResponse; false; addCookie; ; ; Argument[0]; response-splitting; manual | -| 2 | Sink: javax.servlet.http; HttpServletResponse; false; addHeader; ; ; Argument[0..1]; response-splitting; manual | -| 3 | Sink: javax.servlet.http; HttpServletResponse; false; setHeader; ; ; Argument[0..1]; response-splitting; manual | -| 4 | Summary: javax.servlet.http; Cookie; false; Cookie; ; ; Argument[0]; Argument[this]; taint; manual | -| 5 | Summary: javax.ws.rs.core; Cookie; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | -| 6 | Summary: javax.ws.rs.core; NewCookie; false; NewCookie; ; ; Argument[0..9]; Argument[this]; taint; manual | -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 | -| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | semmle.label | tokenCookieStr : String | -| SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | semmle.label | jwtCookie | -| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | semmle.label | "token=" : String | -| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | semmle.label | ... + ... : String | -| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | semmle.label | ... + ... | -| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | semmle.label | new NewCookie(...) : NewCookie | -| SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | semmle.label | toString(...) | -| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | semmle.label | "session-access-key" : String | -| SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | semmle.label | new NewCookie(...) : NewCookie | -| SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | semmle.label | "session-access-key" : String | -| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | semmle.label | accessKeyCookie : NewCookie | -| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | semmle.label | toString(...) : String | -| SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | semmle.label | keyStr | -| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | semmle.label | "token=" : String | -| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | semmle.label | ... + ... : String | -| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | semmle.label | ... + ... : String | -| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | semmle.label | secString | -| SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | semmle.label | "Presto-UI-Token" : String | -| SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | semmle.label | new Cookie(...) : Cookie | -| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | semmle.label | PRESTO_UI_COOKIE : String | -| SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | semmle.label | cookie : Cookie | -| SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | semmle.label | createAuthenticationCookie(...) : Cookie | -| SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | semmle.label | cookie | -problems -| SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... | This sensitive cookie | -| SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" | This sensitive cookie | -subpaths diff --git a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java b/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java deleted file mode 100644 index 627575c8403..00000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java +++ /dev/null @@ -1,164 +0,0 @@ -import java.io.IOException; - -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.ServletException; - -import javax.ws.rs.core.NewCookie; - -import org.springframework.security.web.csrf.CsrfToken; - -class SensitiveCookieNotHttpOnly { - // GOOD - Tests adding a sensitive cookie with the `HttpOnly` flag set. - public void addCookie(String jwt_token, HttpServletRequest request, HttpServletResponse response) { - Cookie jwtCookie = new Cookie("jwt_token", jwt_token); - jwtCookie.setPath("/"); - jwtCookie.setMaxAge(3600*24*7); - jwtCookie.setHttpOnly(true); - response.addCookie(jwtCookie); - } - - // BAD - Tests adding a sensitive cookie without the `HttpOnly` flag set. - public void addCookie2(String jwt_token, String userId, HttpServletRequest request, HttpServletResponse response) { - String tokenCookieStr = "jwt_token"; - Cookie jwtCookie = new Cookie(tokenCookieStr, jwt_token); - Cookie userIdCookie = new Cookie("user_id", userId); - jwtCookie.setPath("/"); - userIdCookie.setPath("/"); - jwtCookie.setMaxAge(3600*24*7); - userIdCookie.setMaxAge(3600*24*7); - response.addCookie(jwtCookie); - response.addCookie(userIdCookie); - } - - // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set. - public void addCookie3(String authId, HttpServletRequest request, HttpServletResponse response) { - response.addHeader("Set-Cookie", "token=" +authId + ";HttpOnly;Secure"); - } - - // BAD - Tests set a sensitive cookie header without the `HttpOnly` flag set. - public void addCookie4(String authId, HttpServletRequest request, HttpServletResponse response) { - response.addHeader("Set-Cookie", "token=" +authId + ";Secure"); - } - - // GOOD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through string concatenation. - public void addCookie5(String accessKey, HttpServletRequest request, HttpServletResponse response) { - response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true) + ";HttpOnly"); - } - - // BAD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. - public void addCookie6(String accessKey, HttpServletRequest request, HttpServletResponse response) { - response.setHeader("Set-Cookie", new NewCookie("session-access-key", accessKey, "/", null, null, 0, true).toString()); - } - - // GOOD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` with the `HttpOnly` flag set through the constructor. - public void addCookie7(String accessKey, HttpServletRequest request, HttpServletResponse response) { - NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true); - response.setHeader("Set-Cookie", accessKeyCookie.toString()); - } - - // BAD - Tests set a sensitive cookie header using the class `javax.ws.rs.core.Cookie` without the `HttpOnly` flag set. - public void addCookie8(String accessKey, HttpServletRequest request, HttpServletResponse response) { - NewCookie accessKeyCookie = new NewCookie("session-access-key", accessKey, "/", null, 0, null, 86400, true); - String keyStr = accessKeyCookie.toString(); - response.setHeader("Set-Cookie", keyStr); - } - - // BAD - Tests set a sensitive cookie header using a variable without the `HttpOnly` flag set. - public void addCookie9(String authId, HttpServletRequest request, HttpServletResponse response) { - String secString = "token=" +authId + ";Secure"; - response.addHeader("Set-Cookie", secString); - } - - // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set using `String.format(...)`. - public void addCookie10(HttpServletRequest request, HttpServletResponse response) { - response.addHeader("SET-COOKIE", String.format("%s=%s;HttpOnly", "sessionkey", request.getSession().getAttribute("sessionkey"))); - } - - public Cookie createHttpOnlyAuthenticationCookie(HttpServletRequest request, String jwt) { - String PRESTO_UI_COOKIE = "Presto-UI-Token"; - Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); - cookie.setHttpOnly(true); - cookie.setPath("/ui"); - return cookie; - } - - public Cookie createAuthenticationCookie(HttpServletRequest request, String jwt) { - String PRESTO_UI_COOKIE = "Presto-UI-Token"; - Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); - cookie.setPath("/ui"); - return cookie; - } - - public Cookie removeAuthenticationCookie(HttpServletRequest request, String jwt) { - String PRESTO_UI_COOKIE = "Presto-UI-Token"; - Cookie cookie = new Cookie(PRESTO_UI_COOKIE, jwt); - cookie.setPath("/ui"); - cookie.setMaxAge(0); - return cookie; - } - - // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set using a wrapper method. - public void addCookie11(HttpServletRequest request, HttpServletResponse response, String jwt) { - Cookie cookie = createHttpOnlyAuthenticationCookie(request, jwt); - response.addCookie(cookie); - } - - // BAD - Tests set a sensitive cookie header without the `HttpOnly` flag set using a wrapper method. - public void addCookie12(HttpServletRequest request, HttpServletResponse response, String jwt) { - Cookie cookie = createAuthenticationCookie(request, jwt); - response.addCookie(cookie); - } - - // GOOD - Tests remove a sensitive cookie header without the `HttpOnly` flag set using a wrapper method. - public void addCookie13(HttpServletRequest request, HttpServletResponse response, String jwt) { - Cookie cookie = removeAuthenticationCookie(request, jwt); - response.addCookie(cookie); - } - - private Cookie createCookie(String name, String value, Boolean httpOnly){ - Cookie cookie = null; - cookie = new Cookie(name, value); - cookie.setDomain("/"); - cookie.setHttpOnly(httpOnly); - - //for production https - cookie.setSecure(true); - - cookie.setMaxAge(60*60*24*30); - cookie.setPath("/"); - - return cookie; - } - - // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set through a boolean variable using a wrapper method. - public void addCookie14(HttpServletRequest request, HttpServletResponse response, String refreshToken) { - response.addCookie(createCookie("refresh_token", refreshToken, true)); - } - - // BAD (but not detected) - Tests set a sensitive cookie header with the `HttpOnly` flag not set through a boolean variable using a wrapper method. - // This example is missed because the `cookie.setHttpOnly` call in `createCookie` is thought to maybe set the HTTP-only flag, and the `cookie` - // object flows to this `addCookie` call. - public void addCookie15(HttpServletRequest request, HttpServletResponse response, String refreshToken) { - response.addCookie(createCookie("refresh_token", refreshToken, false)); - } - - // GOOD - CSRF token doesn't need to have the `HttpOnly` flag set. - public void addCsrfCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Spring put the CSRF token in session attribute "_csrf" - CsrfToken csrfToken = (CsrfToken) request.getAttribute("_csrf"); - - // Send the cookie only if the token has changed - String actualToken = request.getHeader("X-CSRF-TOKEN"); - if (actualToken == null || !actualToken.equals(csrfToken.getToken())) { - // Session cookie that can be used by AngularJS - String pCookieName = "CSRF-TOKEN"; - Cookie cookie = new Cookie(pCookieName, csrfToken.getToken()); - cookie.setMaxAge(-1); - cookie.setHttpOnly(false); - cookie.setPath("/"); - response.addCookie(cookie); - } - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref b/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref deleted file mode 100644 index 9c7ce3d6329..00000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref +++ /dev/null @@ -1,2 +0,0 @@ -query: experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql -postprocess: utils/test/PrettyPrintModels.ql diff --git a/java/ql/test/experimental/query-tests/security/CWE-1004/options b/java/ql/test/experimental/query-tests/security/CWE-1004/options deleted file mode 100644 index 00e92689af5..00000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-1004/options +++ /dev/null @@ -1 +0,0 @@ -// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/jsr311-api-1.1.1:${testdir}/../../../../stubs/springframework-5.8.x From 1c542965459e1860a612a08e7ccac935571cb1d5 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 2 Oct 2025 10:42:23 +0100 Subject: [PATCH 111/965] Add change note --- .../src/change-notes/2025-10-02-http-only-cookie-promote.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md new file mode 100644 index 00000000000..ee9fe7527bd --- /dev/null +++ b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file From 696ec29dae5170c00e8dc3dfc928223e475b9a55 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 2 Oct 2025 14:37:02 +0100 Subject: [PATCH 112/965] Upgrade integration tests --- .../java/query-suite/java-security-and-quality.qls.expected | 1 + .../java/query-suite/java-security-extended.qls.expected | 1 + 2 files changed, 2 insertions(+) diff --git a/java/ql/integration-tests/java/query-suite/java-security-and-quality.qls.expected b/java/ql/integration-tests/java/query-suite/java-security-and-quality.qls.expected index f5470c463c3..7e4401bcce9 100644 --- a/java/ql/integration-tests/java/query-suite/java-security-and-quality.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-security-and-quality.qls.expected @@ -127,6 +127,7 @@ ql/java/ql/src/Security/CWE/CWE-094/JexlInjection.ql ql/java/ql/src/Security/CWE/CWE-094/MvelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/SpelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/TemplateInjection.ql +ql/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/Security/CWE/CWE-1104/MavenPomDependsOnBintray.ql ql/java/ql/src/Security/CWE/CWE-113/NettyResponseSplitting.ql ql/java/ql/src/Security/CWE/CWE-113/ResponseSplitting.ql diff --git a/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected index a3ebc029d28..6ebf204a1a8 100644 --- a/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected @@ -113,6 +113,7 @@ ql/java/ql/src/Security/CWE/CWE-927/ImplicitPendingIntents.ql ql/java/ql/src/Security/CWE/CWE-927/SensitiveCommunication.ql ql/java/ql/src/Security/CWE/CWE-927/SensitiveResultReceiver.ql ql/java/ql/src/Security/CWE/CWE-940/AndroidIntentRedirection.ql +ql/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/Telemetry/DatabaseQualityDiagnostics.ql ql/java/ql/src/Telemetry/ExternalLibraryUsage.ql ql/java/ql/src/Telemetry/ExtractorInformation.ql From 093b04f79f342ec0ea0e2d16597d270296d455ad Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 2 Oct 2025 15:31:26 +0100 Subject: [PATCH 113/965] Update comments --- .../Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql index 4eae5f1ee4e..d301adbcb99 100644 --- a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql @@ -14,9 +14,9 @@ * Sketch of the structure of this query: we track cookie names that appear to be sensitive * (e.g. `session` or `token`) to a `ServletResponse.addHeader(...)` or `.addCookie(...)` * method that does not set the `httpOnly` flag. Subsidiary configurations - * `MatchesHttpOnlyToRawHeaderConfiguration` and `SetHttpOnlyInCookieConfiguration` are used to establish + * `MatchesHttpOnlyToRawHeaderConfig` and `SetHttpOnlyInCookieConfig` are used to establish * when the `httpOnly` flag is likely to have been set, before configuration - * `MissingHttpOnlyConfiguration` establishes that a non-`httpOnly` cookie has a sensitive-seeming name. + * `MissingHttpOnlyConfig` establishes that a non-`httpOnly` cookie has a sensitive-seeming name. */ import java @@ -158,8 +158,8 @@ predicate setsHttpOnlyInNewCookie(ClassInstanceExpr cie) { /** * A taint configuration tracking flow from a sensitive cookie without the `HttpOnly` flag * set to its HTTP response. - * Tracks string literals containing sensitive names (`SensitiveNameExpr`), to an `addCookie` call (as a `Cookie` object) - * or an `addHeader` call (as a string) (`CookieResponseWithoutHttpOnly`). + * Tracks string literals containing sensitive names (`SensitiveCookieNameExpr`), to an `addCookie` call (as a `Cookie` object) + * or an `addHeader` call (as a string) (`CookieResponseWithoutHttpOnlySink`). * Passes through `Cookie` constructors and `toString` calls. */ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { From 9cb593b020ef82b81f879b7bca2c1ca670cd5890 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 9 Oct 2025 16:01:20 +0100 Subject: [PATCH 114/965] Update tests --- .../java-security-extended.qls.expected | 2 +- .../query-suite/not_included_in_qls.expected | 1 - .../SensitiveCookieNotHttpOnly.expected | 35 +++++++++++-------- .../CWE-1004/SensitiveCookieNotHttpOnly.qlref | 4 ++- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected index 6ebf204a1a8..b2981db13c2 100644 --- a/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-security-extended.qls.expected @@ -30,6 +30,7 @@ ql/java/ql/src/Security/CWE/CWE-094/JexlInjection.ql ql/java/ql/src/Security/CWE/CWE-094/MvelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/SpelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/TemplateInjection.ql +ql/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/Security/CWE/CWE-1104/MavenPomDependsOnBintray.ql ql/java/ql/src/Security/CWE/CWE-113/NettyResponseSplitting.ql ql/java/ql/src/Security/CWE/CWE-113/ResponseSplitting.ql @@ -113,7 +114,6 @@ ql/java/ql/src/Security/CWE/CWE-927/ImplicitPendingIntents.ql ql/java/ql/src/Security/CWE/CWE-927/SensitiveCommunication.ql ql/java/ql/src/Security/CWE/CWE-927/SensitiveResultReceiver.ql ql/java/ql/src/Security/CWE/CWE-940/AndroidIntentRedirection.ql -ql/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/Telemetry/DatabaseQualityDiagnostics.ql ql/java/ql/src/Telemetry/ExternalLibraryUsage.ql ql/java/ql/src/Telemetry/ExtractorInformation.ql diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index d1b6428ae22..1aa63644947 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -190,7 +190,6 @@ ql/java/ql/src/experimental/Security/CWE/CWE-094/ScriptInjection.ql ql/java/ql/src/experimental/Security/CWE/CWE-094/SpringImplicitViewManipulation.ql ql/java/ql/src/experimental/Security/CWE/CWE-094/SpringViewManipulation.ql ql/java/ql/src/experimental/Security/CWE/CWE-1004/InsecureTomcatConfig.ql -ql/java/ql/src/experimental/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/experimental/Security/CWE/CWE-200/InsecureWebResourceResponse.ql ql/java/ql/src/experimental/Security/CWE/CWE-200/SensitiveAndroidFileLeak.ql ql/java/ql/src/experimental/Security/CWE/CWE-208/PossibleTimingAttackAgainstSignature.ql diff --git a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected index 71c73f3921e..f00a00c7258 100644 --- a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected @@ -11,26 +11,33 @@ | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | $@ doesn't have the HttpOnly flag set. | SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | This sensitive cookie | edges | 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 | Sink:MaD:46211 | +| SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | provenance | Sink:MaD:1 | | SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | Config | -| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | MaD:46217 | -| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:46212 | -| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:46212 | -| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | provenance | MaD:46260 Sink:MaD:46214 | -| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | provenance | MaD:46298 | +| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | MaD:4 | +| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:2 | +| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | Sink:MaD:2 | +| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | provenance | MaD:5 Sink:MaD:3 | +| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | provenance | MaD:6 | | 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 | MaD:46298 | -| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | provenance | MaD:46260 | -| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | provenance | Sink:MaD:46214 | -| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | -| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | -| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:46212 | +| SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | provenance | MaD:6 | +| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | provenance | MaD:5 | +| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | provenance | Sink:MaD:3 | +| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | +| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | +| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | Sink:MaD:2 | | 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 | Config | -| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | provenance | MaD:46217 | +| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | provenance | MaD:4 | | 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 | Sink:MaD:46211 | +| SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | provenance | Sink:MaD:1 | +models +| 1 | Sink: javax.servlet.http; HttpServletResponse; false; addCookie; ; ; Argument[0]; response-splitting; manual | +| 2 | Sink: javax.servlet.http; HttpServletResponse; false; addHeader; ; ; Argument[0..1]; response-splitting; manual | +| 3 | Sink: javax.servlet.http; HttpServletResponse; false; setHeader; ; ; Argument[0..1]; response-splitting; manual | +| 4 | Summary: javax.servlet.http; Cookie; false; Cookie; ; ; Argument[0]; Argument[this]; taint; manual | +| 5 | Summary: javax.ws.rs.core; Cookie; true; toString; ; ; Argument[this]; ReturnValue; taint; manual | +| 6 | Summary: javax.ws.rs.core; NewCookie; false; NewCookie; ; ; Argument[0..9]; Argument[this]; taint; manual | 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/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref index e3b99f6e685..fd347f0adf8 100644 --- a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.qlref @@ -1,2 +1,4 @@ query: Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file +postprocess: +- utils/test/InlineExpectationsTestQuery.ql +- utils/test/PrettyPrintModels.ql \ No newline at end of file From d9c76f258eae2e30afeb9144af3ea0c55336149e Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 13 Oct 2025 16:22:03 +0200 Subject: [PATCH 115/965] Rust: Add suggested model for `into_inner` for tuples --- .../rust/frameworks/actix-web.model.yml | 7 +- .../dataflow/sources/InlineFlow.expected | 424 +++++++++++------- .../dataflow/sources/web_frameworks.rs | 4 +- 3 files changed, 265 insertions(+), 170 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml index 8600336651a..4031b9bbe86 100644 --- a/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml @@ -10,4 +10,9 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: - - ["::into_inner", "Argument[self]", "ReturnValue", "taint", "manual"] \ No newline at end of file + - ["::into_inner", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[0]", "taint", "manual"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[1]", "taint", "manual"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[2]", "taint", "manual"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[3]", "taint", "manual"] + - ["::into_inner", "Argument[self]", "ReturnValue.Field[4]", "taint", "manual"] \ No newline at end of file diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 79645730a80..e4b59a657e8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -79,64 +79,67 @@ models | 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | | 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | | 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 81 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | -| 82 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 83 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 84 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 85 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 86 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 87 | Summary: ::new; Argument[0]; ReturnValue; value | -| 88 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 89 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 90 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 91 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 92 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 93 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 94 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 95 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 97 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 98 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 100 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 101 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 102 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 103 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 104 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 105 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 106 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 107 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 108 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 109 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 110 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 111 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 112 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 113 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 114 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 115 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 116 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 118 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 119 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 120 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 121 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 122 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 123 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 124 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 125 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 126 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 127 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 128 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 81 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | +| 82 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | +| 83 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | +| 84 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 85 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 86 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 87 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 88 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 89 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 90 | Summary: ::new; Argument[0]; ReturnValue; value | +| 91 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 92 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 93 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 94 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 95 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 96 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 97 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 98 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 99 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 100 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 101 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 102 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 103 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 104 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 106 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 107 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 108 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 109 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 110 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 111 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 112 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 113 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 114 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 115 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 116 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 117 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 118 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 119 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 120 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 121 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 122 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 123 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 124 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 125 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 126 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 127 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 128 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 129 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 130 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 131 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:28 | | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:29 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | | test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:28 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:88 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:91 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | | test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:29 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:85 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:88 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | @@ -154,19 +157,19 @@ edges | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | | test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:23 | | test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:85 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:88 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | | test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | | test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:85 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:88 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | | test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:23 | | test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:85 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:92 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:89 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:88 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:95 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:92 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | | test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:23 | @@ -176,45 +179,45 @@ edges | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | | test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:25 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:88 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:91 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | | test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:88 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:91 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | | test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:27 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:84 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:87 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | | test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:99 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:102 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | | test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:89 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:99 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:89 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:92 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:102 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:92 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | | test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:89 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:100 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:89 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:92 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:103 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:92 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | | test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:89 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:98 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:89 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:92 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:101 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:92 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | | test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:97 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:100 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | @@ -222,19 +225,19 @@ edges | test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:95 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:98 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:96 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:96 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | | test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:85 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:88 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -254,38 +257,38 @@ edges | test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | | test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:112 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:115 | | test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:111 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:114 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | | test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | | test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:115 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:118 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | | test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:117 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:120 | | test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:116 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:119 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | | test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:118 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:121 | | test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:119 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:122 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | | test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:114 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:117 | | test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:113 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:116 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | @@ -293,51 +296,51 @@ edges | test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | | test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:108 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:111 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | | test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:110 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:113 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:109 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:112 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | | test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:110 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:113 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | | test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:56 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | | test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:110 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:113 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | | test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:57 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | | test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:110 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:113 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:107 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:107 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:110 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:110 | | test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | | test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:110 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:85 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:89 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:113 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:88 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:92 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:89 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:92 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | | test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | | test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:110 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:113 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | | test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | @@ -394,43 +397,43 @@ edges | test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:67 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | | test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:123 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:126 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:122 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:125 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | | test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:123 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:126 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | | test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:69 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | | test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:123 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:126 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | | test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | | test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:123 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:126 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:125 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:125 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | | test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | | test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:123 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:126 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:85 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:88 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | @@ -439,13 +442,13 @@ edges | test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:68 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | | test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:123 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:124 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:124 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:126 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:85 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:88 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | @@ -478,7 +481,7 @@ edges | test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:11 MaD:11 | | test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | | test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:121 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:124 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | @@ -517,15 +520,15 @@ edges | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:105 | | test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:101 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:104 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:107 | | test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:103 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:106 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:109 | | test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:105 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:108 | | test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | | test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | | test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:12 | @@ -547,30 +550,30 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:105 | | test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:101 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:89 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:92 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | | test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:105 | | test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:101 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:89 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:92 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | | test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:105 | | test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:101 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:89 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:92 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | | test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | @@ -681,7 +684,7 @@ edges | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | | test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:120 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:123 | | test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:14 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | @@ -696,14 +699,14 @@ edges | test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:56 | | test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:66 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:110 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:113 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:126 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:129 | | test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:127 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:128 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:130 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:131 | | test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | @@ -741,14 +744,14 @@ edges | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:93 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:96 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:86 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:87 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:89 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:90 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | @@ -786,7 +789,7 @@ edges | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:54 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:94 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:97 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | @@ -794,8 +797,8 @@ edges | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:86 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:87 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:89 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:90 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -810,8 +813,8 @@ edges | test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:86 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:87 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:89 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:90 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -827,8 +830,8 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:86 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:87 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:89 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:90 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | @@ -849,8 +852,8 @@ edges | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:86 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:87 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:89 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:90 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -879,46 +882,103 @@ edges | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:91 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:91 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:90 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:90 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:91 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:91 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:90 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:90 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:81 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:84 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:91 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:90 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:83 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:91 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:82 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:90 | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | web_frameworks.rs:100:13:100:13 | a [tuple.1] | provenance | | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:81 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:82 | +| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | +| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | web_frameworks.rs:111:17:111:17 | b | provenance | | +| web_frameworks.rs:111:14:111:14 | a | web_frameworks.rs:113:14:113:14 | a | provenance | | +| web_frameworks.rs:111:17:111:17 | b | web_frameworks.rs:114:14:114:14 | b | provenance | | +| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | +| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:81 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:84 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | | web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | +| web_frameworks.rs:131:13:131:13 | a [tuple.0] | web_frameworks.rs:132:14:132:14 | a | provenance | | +| web_frameworks.rs:131:13:131:13 | a [tuple.1] | web_frameworks.rs:132:14:132:14 | a | provenance | | +| web_frameworks.rs:131:13:131:13 | a [tuple.2] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:17:131:33 | path.into_inner() | web_frameworks.rs:131:13:131:13 | a | provenance | | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | web_frameworks.rs:131:13:131:13 | a [tuple.0] | provenance | | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | web_frameworks.rs:131:13:131:13 | a [tuple.1] | provenance | | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | web_frameworks.rs:131:13:131:13 | a [tuple.2] | provenance | | | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | +| web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | | web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | @@ -1713,18 +1773,46 @@ nodes | web_frameworks.rs:70:14:70:14 | a | semmle.label | a | | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | web_frameworks.rs:100:13:100:13 | a | semmle.label | a | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] | | web_frameworks.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | | web_frameworks.rs:101:14:101:14 | a | semmle.label | a | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | semmle.label | a [tuple.0] | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | semmle.label | a [tuple.1] | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | semmle.label | a [tuple.2] | | web_frameworks.rs:101:14:101:23 | a.as_str() | semmle.label | a.as_str() | | web_frameworks.rs:102:14:102:14 | a | semmle.label | a | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | semmle.label | a [tuple.0] | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | semmle.label | a [tuple.1] | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | semmle.label | a [tuple.2] | | web_frameworks.rs:102:14:102:25 | a.as_bytes() | semmle.label | a.as_bytes() | | web_frameworks.rs:103:14:103:14 | a | semmle.label | a | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | +| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | +| web_frameworks.rs:111:14:111:14 | a | semmle.label | a | +| web_frameworks.rs:111:17:111:17 | b | semmle.label | b | +| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| web_frameworks.rs:113:14:113:14 | a | semmle.label | a | +| web_frameworks.rs:114:14:114:14 | b | semmle.label | b | | web_frameworks.rs:127:5:127:20 | to | semmle.label | to | | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | web_frameworks.rs:131:13:131:13 | a | semmle.label | a | +| web_frameworks.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] | +| web_frameworks.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] | +| web_frameworks.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] | | web_frameworks.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | | web_frameworks.rs:132:14:132:14 | a | semmle.label | a | | web_frameworks.rs:139:41:139:42 | to | semmle.label | to | +| web_frameworks.rs:140:45:140:46 | to | semmle.label | to | | web_frameworks.rs:242:33:242:35 | map | semmle.label | map | | web_frameworks.rs:242:33:242:35 | map | semmle.label | map | | web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | @@ -1891,6 +1979,8 @@ testFailures | web_frameworks.rs:101:14:101:23 | a.as_str() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:101:14:101:23 | a.as_str() | $@ | web_frameworks.rs:139:41:139:42 | to | to | | web_frameworks.rs:102:14:102:25 | a.as_bytes() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:102:14:102:25 | a.as_bytes() | $@ | web_frameworks.rs:139:41:139:42 | to | to | | web_frameworks.rs:103:14:103:14 | a | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:103:14:103:14 | a | $@ | web_frameworks.rs:139:41:139:42 | to | to | +| web_frameworks.rs:113:14:113:14 | a | web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:113:14:113:14 | a | $@ | web_frameworks.rs:140:45:140:46 | to | to | +| web_frameworks.rs:114:14:114:14 | b | web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:114:14:114:14 | b | $@ | web_frameworks.rs:140:45:140:46 | to | to | | web_frameworks.rs:132:14:132:14 | a | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:132:14:132:14 | a | $@ | web_frameworks.rs:127:5:127:20 | to | to | | web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | | web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs index e5ce0f313ae..3bcea0dee4e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -110,8 +110,8 @@ mod actix_test { ) -> String { let (a, b) = path.into_inner(); - sink(a); // $ MISSING: hasTaintFlow - sink(b); // $ MISSING: hasTaintFlow + sink(a); // $ hasTaintFlow=my_actix_handler_2 + sink(b); // $ hasTaintFlow=my_actix_handler_2 "".to_string() } From 1d7ccb6f2bc56ff97933cfff5de61e0bd9b5cb29 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:42:36 +0100 Subject: [PATCH 116/965] Update rust/ql/lib/codeql/rust/frameworks/mysql.model.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rust/ql/lib/codeql/rust/frameworks/mysql.model.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml index da3ee84a779..55a3cf7ee72 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -13,5 +13,4 @@ extensions: - ["::query_iter", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[0]", "sql-injection", "manual"] - - ["<_ as mysql::conn::queryable::Queryable>::query", "Argument[0]", "sql-injection", "manual"] - ["::prep", "Argument[0]", "sql-injection", "manual"] From 08abdb8c852e87389840e969ce32ee16643ab3c2 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 12:03:41 -0400 Subject: [PATCH 117/965] Crypto: Adding a "javaConstant" concept to handle config files. --- java/ql/lib/experimental/quantum/JCA.qll | 108 +++++++++--------- java/ql/lib/experimental/quantum/Language.qll | 61 +++++++++- 2 files changed, 113 insertions(+), 56 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index 76031c506ea..be91a015872 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -52,11 +52,7 @@ module JCAModel { } bindingset[hash] - predicate hash_names(string hash) { - hash.toUpperCase() - .matches(["SHA-%", "SHA3-%", "BLAKE2b%", "BLAKE2s%", "MD5", "RIPEMD160", "Whirlpool"] - .toUpperCase()) - } + predicate hash_names(string hash) { exists(hash_name_to_type_known(hash, _)) } bindingset[kdf] predicate kdf_names(string kdf) { @@ -132,41 +128,43 @@ module JCAModel { // TODO: add additional } - bindingset[name] - Crypto::HashType hash_name_to_type_known(string name, int digestLength) { - name in ["SHA-1", "SHA1"] and result instanceof Crypto::SHA1 and digestLength = 160 - or - name in ["SHA-256", "SHA-384", "SHA-512", "SHA256", "SHA384", "SHA512"] and - result instanceof Crypto::SHA2 and - digestLength = name.replaceAll("-", "").splitAt("SHA", 1).toInt() - or - name in ["SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", "SHA3256", "SHA3384", "SHA3512"] and - result instanceof Crypto::SHA3 and - digestLength = name.replaceAll("-", "").splitAt("SHA3", 1).toInt() - or - ( - name.matches("BLAKE2b%") and - result instanceof Crypto::BLAKE2B + bindingset[nameRaw] + Crypto::HashType hash_name_to_type_known(string nameRaw, int digestLength) { + exists(string name | name = nameRaw.toUpperCase() | + name in ["SHA-1", "SHA1"] and result instanceof Crypto::SHA1 and digestLength = 160 or - name = "BLAKE2s" and result instanceof Crypto::BLAKE2S - ) and - ( - if exists(name.indexOf("-")) - then name.splitAt("-", 1).toInt() = digestLength - else digestLength = 512 + name in ["SHA-256", "SHA-384", "SHA-512", "SHA256", "SHA384", "SHA512"] and + result instanceof Crypto::SHA2 and + digestLength = name.replaceAll("-", "").splitAt("SHA", 1).toInt() + or + name in ["SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", "SHA3256", "SHA3384", "SHA3512"] and + result instanceof Crypto::SHA3 and + digestLength = name.replaceAll("-", "").splitAt("SHA3", 1).toInt() + or + ( + name.toUpperCase().matches("BLAKE2B%") and + result instanceof Crypto::BLAKE2B + or + name.toUpperCase() = "BLAKE2S" and result instanceof Crypto::BLAKE2S + ) and + ( + if exists(name.indexOf("-")) + then name.splitAt("-", 1).toInt() = digestLength + else digestLength = 512 + ) + or + name = "MD5" and + result instanceof Crypto::MD5 and + digestLength = 128 + or + name = "RIPEMD160" and + result instanceof Crypto::RIPEMD160 and + digestLength = 160 + or + name = "WHIRLPOOL" and + result instanceof Crypto::WHIRLPOOL and + digestLength = 512 // TODO: verify ) - or - name = "MD5" and - result instanceof Crypto::MD5 and - digestLength = 128 - or - name = "RIPEMD160" and - result instanceof Crypto::RIPEMD160 and - digestLength = 160 - or - name = "Whirlpool" and - result instanceof Crypto::WHIRLPOOL and - digestLength = 512 // TODO: verify } bindingset[name] @@ -268,9 +266,9 @@ module JCAModel { } /** - * A `StringLiteral` in the `"ALG/MODE/PADDING"` or `"ALG"` format + * A `JavaConstant` in the `"ALG/MODE/PADDING"` or `"ALG"` format */ - class CipherStringLiteral extends StringLiteral { + class CipherStringLiteral extends JavaConstant { CipherStringLiteral() { cipher_names(this.getValue().splitAt("/")) } string getAlgorithmName() { result = this.getValue().splitAt("/", 0) } @@ -839,7 +837,7 @@ module JCAModel { * Flow from a known hash algorithm name to a `MessageDigest.getInstance(sink)` call. */ module KnownHashAlgorithmLiteralToMessageDigestConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { hash_names(src.asExpr().(StringLiteral).getValue()) } + predicate isSource(DataFlow::Node src) { hash_names(src.asExpr().(JavaConstant).getValue()) } predicate isSink(DataFlow::Node sink) { exists(HashAlgorithmValueConsumer consumer | sink = consumer.getInputNode()) @@ -849,7 +847,7 @@ module JCAModel { module KnownHashAlgorithmLiteralToMessageDigestFlow = DataFlow::Global; - class KnownHashAlgorithm extends Crypto::HashAlgorithmInstance instanceof StringLiteral { + class KnownHashAlgorithm extends Crypto::HashAlgorithmInstance instanceof JavaConstant { HashAlgorithmValueConsumer consumer; KnownHashAlgorithm() { @@ -1195,7 +1193,7 @@ module JCAModel { } module KDFAlgorithmStringToGetInstanceConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { kdf_names(src.asExpr().(StringLiteral).getValue()) } + predicate isSource(DataFlow::Node src) { kdf_names(src.asExpr().(JavaConstant).getValue()) } predicate isSink(DataFlow::Node sink) { exists(SecretKeyFactoryGetInstanceCall call | sink.asExpr() = call.getAlgorithmArg()) @@ -1236,7 +1234,7 @@ module JCAModel { predicate isIntermediate() { none() } } - class KdfAlgorithmStringLiteral extends Crypto::KeyDerivationAlgorithmInstance instanceof StringLiteral + class KdfAlgorithmStringLiteral extends Crypto::KeyDerivationAlgorithmInstance instanceof JavaConstant { SecretKeyFactoryKDFAlgorithmValueConsumer consumer; @@ -1257,7 +1255,7 @@ module JCAModel { class Pbkdf2WithHmac_KeyOperationAlgorithmStringLiteral extends Crypto::KeyOperationAlgorithmInstance instanceof KdfAlgorithmStringLiteral { Pbkdf2WithHmac_KeyOperationAlgorithmStringLiteral() { - this.(StringLiteral).getValue().toUpperCase().matches("PBKDF2WithHmac%".toUpperCase()) + this.(JavaConstant).getValue().toUpperCase().matches("PBKDF2WithHmac%".toUpperCase()) } override Crypto::KeyOpAlg::AlgorithmType getAlgorithmType() { @@ -1278,7 +1276,7 @@ module JCAModel { override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { none() } - override string getRawAlgorithmName() { result = this.(StringLiteral).getValue() } + override string getRawAlgorithmName() { result = this.(JavaConstant).getValue() } } class Pbkdf2WithHmac_HashAlgorithmStringLiteral extends Crypto::HashAlgorithmInstance instanceof Pbkdf2WithHmac_KeyOperationAlgorithmStringLiteral @@ -1286,10 +1284,10 @@ module JCAModel { string hashName; Pbkdf2WithHmac_HashAlgorithmStringLiteral() { - hashName = this.(StringLiteral).getValue().splitAt("WithHmac", 1) + hashName = this.(JavaConstant).getValue().splitAt("WithHmac", 1) } - override string getRawHashAlgorithmName() { result = this.(StringLiteral).getValue() } + override string getRawHashAlgorithmName() { result = this.(JavaConstant).getValue() } override Crypto::THashType getHashType() { result = hash_name_to_type_known(hashName, _) } @@ -1403,7 +1401,7 @@ module JCAModel { GetInstanceInitUseFlowAnalysis; - class KeyAgreementStringLiteral extends StringLiteral { + class KeyAgreementStringLiteral extends JavaConstant { KeyAgreementStringLiteral() { key_agreement_names(this.getValue()) } } @@ -1521,7 +1519,7 @@ module JCAModel { */ module MacKnownAlgorithmToConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { mac_names(src.asExpr().(StringLiteral).getValue()) } + predicate isSource(DataFlow::Node src) { mac_names(src.asExpr().(JavaConstant).getValue()) } predicate isSink(DataFlow::Node sink) { exists(MacGetInstanceCall call | sink.asExpr() = call.getAlgorithmArg()) @@ -1555,7 +1553,7 @@ module JCAModel { module MacInitCallToMacOperationFlow = DataFlow::Global; - class KnownMacAlgorithm extends Crypto::KeyOperationAlgorithmInstance instanceof StringLiteral { + class KnownMacAlgorithm extends Crypto::KeyOperationAlgorithmInstance instanceof JavaConstant { MacGetInstanceAlgorithmValueConsumer consumer; KnownMacAlgorithm() { @@ -1711,7 +1709,7 @@ module JCAModel { } } - class SignatureStringLiteral extends StringLiteral { + class SignatureStringLiteral extends JavaConstant { SignatureStringLiteral() { signature_names(this.getValue()) } } @@ -1754,10 +1752,10 @@ module JCAModel { int digestLength; SignatureHashAlgorithmInstance() { - hashType = signature_name_to_hash_type_known(this.(StringLiteral).getValue(), digestLength) + hashType = signature_name_to_hash_type_known(this.(JavaConstant).getValue(), digestLength) } - override string getRawHashAlgorithmName() { result = this.(StringLiteral).getValue() } + override string getRawHashAlgorithmName() { result = this.(JavaConstant).getValue() } override Crypto::THashType getHashType() { result = hashType } @@ -1880,7 +1878,7 @@ module JCAModel { module EllipticCurveStringToConsumerFlow = DataFlow::Global; - class EllipticCurveStringLiteral extends StringLiteral { + class EllipticCurveStringLiteral extends JavaConstant { EllipticCurveStringLiteral() { elliptic_curve_names(this.getValue()) } } diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 4b198dd69b5..b4464a87564 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -93,7 +93,66 @@ private class GenericRemoteDataSource extends Crypto::GenericRemoteDataSource { override string getAdditionalDescription() { result = this.toString() } } -private class ConstantDataSourceLiteral extends Crypto::GenericConstantSourceInstance instanceof Literal +// /** +// * A property access value (constant from a file) +// */ +// class PropertyConstant extends Crypto::GenericConstantSourceInstance instanceof Literal{ +// PropertyConstant() { +// value = this.getPropertyValue() and +// // Since properties pairs are not included in the java/weak-cryptographic-algorithm, +// // the check for values from properties files can be less strict than `InsecureAlgoLiteral`. +// not value.regexpMatch(getSecureAlgorithmRegex()) +// } +// override string getStringValue() { result = value } +// } +import semmle.code.java.dataflow.RangeUtils +// TODO: import all frameworks? +import semmle.code.java.frameworks.Properties +private import semmle.code.configfiles.ConfigFiles + +/** + * A class to represent constants in Java code, either literals or + * values retrieved from properties files. + * Java CodeQL does not consider the values of known properties to be literals, + * hence we need to model both literals and property calls. + */ +class JavaConstant extends Expr { + string value; + + JavaConstant() { + // If arg 0 in a getProperty call, consider it a literal only if + // we haven't resolved it to a known property value, otherwise + // use the resolved config value. + // If getProperty is used, always assume the default value is potentially used. + // CAVEAT/ASSUMPTION: this assumes the literal is immediately known at arg0 + // of a getProperty call. + // also if the properties file is reloaded in a way where the reloaded file + // wouldn't have the property but the original does, we would erroneously + // consider the literal to be mapped to that property value. + exists(ConfigPair p, PropertiesGetPropertyMethodCall c | + c.getArgument(0).(Literal).getValue() = p.getNameElement().getName() and + value = p.getValueElement().getValue() and + this = c + ) + or + // in this case, the property value is not known, use the literal property name as the value + exists(PropertiesGetPropertyMethodCall c | + value = c.getArgument(0).(Literal).getValue() and + not exists(ConfigPair p | + c.getArgument(0).(Literal).getValue() = p.getNameElement().getName() + ) and + this = c + ) + or + // in this case, there is not propery getter, we just have a literal + not exists(PropertiesGetPropertyMethodCall c | c.getArgument(0) = this) and + value = this.(Literal).getValue() + } + + string getValue() { result = value } +} + +private class ConstantDataSourceLiteral extends Crypto::GenericConstantSourceInstance instanceof JavaConstant { ConstantDataSourceLiteral() { // TODO: this is an API specific workaround for JCA, as 'EC' is a constant that may be used From 4b241d7065db23c1d320180e62e137adfe505b0d Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 12:04:51 -0400 Subject: [PATCH 118/965] Crypto: adding initial weak hash query overhaul and tests, but no expected file yet. --- .../experimental/quantum/Examples/WeakHash.ql | 17 ++++--- .../examples/WeakOrUnknownHash/WeakHash.qlref | 4 ++ .../WeakOrUnknownHash/WeakHashing.java | 44 +++++++++++++++++++ .../WeakOrUnknownHash/example.properties | 2 + 4 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/example.properties diff --git a/java/ql/src/experimental/quantum/Examples/WeakHash.ql b/java/ql/src/experimental/quantum/Examples/WeakHash.ql index 737643a8f9f..ecbe9318c3d 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakHash.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakHash.ql @@ -17,18 +17,21 @@ from Crypto::HashAlgorithmNode alg, Crypto::HashType htype, string msg where htype = alg.getHashType() and ( - (htype != Crypto::SHA2() and htype != Crypto::SHA2()) and - msg = "Use of unapproved hash algorithm or API " + htype.toString() + "." + (htype != Crypto::SHA2() and htype != Crypto::SHA3()) and + msg = "Use of unapproved hash algorithm or API: " + htype.toString() + "." or (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and not exists(alg.getDigestLength()) and msg = "Use of approved hash algorithm or API type " + htype.toString() + " but unknown digest size." or - (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and - alg.getDigestLength() < 256 and - msg = - "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" + - alg.getDigestLength() + ")." + exists(int digestLength | + digestLength = alg.getDigestLength() and + (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and + digestLength < 256 and + msg = + "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" + + digestLength + ")." + ) ) select alg, msg diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.qlref new file mode 100644 index 00000000000..c5faee88aba --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/WeakHash.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java new file mode 100644 index 00000000000..9fbe12e8b87 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java @@ -0,0 +1,44 @@ +package test.cwe327.semmle.tests; + +import java.util.Properties; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class WeakHashing { + void hashing() throws NoSuchAlgorithmException, IOException { + java.util.Properties props = new java.util.Properties(); + props.load(new FileInputStream("example.properties")); + + // BAD: Using a weak hashing algorithm even with a secure default + MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); + + // BAD: Using a weak hashing algorithm even with a secure default + MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); + + // BAD: Using a strong hashing algorithm but with a weak default + MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); + + // BAD: Property does not exist and default (used value) is unknown + MessageDigest bad4 = MessageDigest.getInstance(props.getProperty("non-existent_property", "non-existent_default")); + + // GOOD: Using a strong hashing algorithm + MessageDigest ok = MessageDigest.getInstance(props.getProperty("hashAlg2")); + + // BAD?: Property does not exist (considered unknown) and but default is secure + MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("non-existent-property", "SHA-256")); + + // GOOD: Using a strong hashing algorithm + MessageDigest ok3 = MessageDigest.getInstance("SHA3-512"); + + // GOOD: Using a strong hashing algorithm + MessageDigest ok4 = MessageDigest.getInstance("SHA384"); + + props.load(new FileInputStream("unobserved-file.properties")); + + // BAD: "hashalg1" is not visible since the file isn't known, this is an 'unknown' hash + // False positive/negative + MessageDigest bad5 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); + } +} diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/example.properties b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/example.properties new file mode 100644 index 00000000000..512e8090bee --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/example.properties @@ -0,0 +1,2 @@ +hashAlg1=MD5 +hashAlg2=SHA-256 \ No newline at end of file From bd068c2a69fef1c314bc7e5eabeffac56b9172d6 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 12:08:07 -0400 Subject: [PATCH 119/965] Crypto: Updating expected file for weak asymmetric key gen size. --- .../WeakOrUnknownAsymmetricKeyGenSize.expected | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected index 2e65efe2a14..23d1e17366b 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected @@ -1 +1,3 @@ -a \ No newline at end of file +| InsufficientAsymmetricKeySize.java:6:9:6:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:4:69:4:73 | KeyOperationAlgorithm | RSA | +| InsufficientAsymmetricKeySize.java:10:9:10:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:8:69:8:73 | KeyOperationAlgorithm | DSA | +| InsufficientAsymmetricKeySize.java:14:9:14:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:12:69:12:72 | KeyAgreementAlgorithm | DH | From 35f3fbf357dbee9729739a919f19c76ab30d8bec Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 13 Oct 2025 19:14:12 +0100 Subject: [PATCH 120/965] Rust: Accept consistency regressions. --- .../PathResolutionConsistency.expected | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index fe1822bb82c..bd49309c55a 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -1,4 +1,57 @@ multipleCallTargets +| mysql.rs:13:105:13:120 | ...::from(...) | +| mysql.rs:14:26:14:85 | ...::from(...) | +| mysql.rs:15:28:15:81 | ...::from(...) | +| mysql.rs:16:30:16:83 | ...::from(...) | +| mysql.rs:19:39:19:57 | safe_query.as_str() | +| mysql.rs:22:39:22:59 | unsafe_query.as_str() | +| mysql.rs:23:65:23:85 | unsafe_query.as_str() | +| mysql.rs:24:25:24:45 | unsafe_query.as_str() | +| mysql.rs:25:40:25:60 | unsafe_query.as_str() | +| mysql.rs:26:65:26:85 | unsafe_query.as_str() | +| mysql.rs:27:33:27:53 | unsafe_query.as_str() | +| mysql.rs:28:37:28:57 | unsafe_query.as_str() | +| mysql.rs:29:33:29:53 | unsafe_query.as_str() | +| mysql.rs:30:32:30:52 | unsafe_query.as_str() | +| mysql.rs:31:36:31:56 | unsafe_query.as_str() | +| mysql.rs:32:40:32:60 | unsafe_query.as_str() | +| mysql.rs:35:30:35:52 | prepared_query.as_str() | +| mysql.rs:36:46:36:67 | remote_string.as_str() | +| mysql.rs:37:72:37:93 | remote_string.as_str() | +| mysql.rs:38:46:38:67 | remote_string.as_str() | +| mysql.rs:39:33:39:54 | remote_string.as_str() | +| mysql.rs:40:47:40:68 | remote_string.as_str() | +| mysql.rs:41:73:41:94 | remote_string.as_str() | +| mysql.rs:42:40:42:61 | remote_string.as_str() | +| mysql.rs:43:44:43:65 | remote_string.as_str() | +| mysql.rs:44:40:44:61 | remote_string.as_str() | +| mysql.rs:45:39:45:60 | remote_string.as_str() | +| mysql.rs:46:43:46:64 | remote_string.as_str() | +| mysql.rs:49:31:49:51 | unsafe_query.as_str() | +| mysql.rs:54:26:54:46 | unsafe_query.as_str() | +| mysql.rs:72:105:72:120 | ...::from(...) | +| mysql.rs:73:26:73:85 | ...::from(...) | +| mysql.rs:74:28:74:81 | ...::from(...) | +| mysql.rs:75:30:75:83 | ...::from(...) | +| mysql.rs:78:39:78:57 | safe_query.as_str() | +| mysql.rs:81:39:81:59 | unsafe_query.as_str() | +| mysql.rs:82:25:82:45 | unsafe_query.as_str() | +| mysql.rs:83:48:83:68 | unsafe_query.as_str() | +| mysql.rs:84:33:84:53 | unsafe_query.as_str() | +| mysql.rs:85:33:85:53 | unsafe_query.as_str() | +| mysql.rs:86:48:86:68 | unsafe_query.as_str() | +| mysql.rs:87:32:87:52 | unsafe_query.as_str() | +| mysql.rs:90:30:90:52 | prepared_query.as_str() | +| mysql.rs:91:46:91:67 | remote_string.as_str() | +| mysql.rs:92:46:92:67 | remote_string.as_str() | +| mysql.rs:93:33:93:54 | remote_string.as_str() | +| mysql.rs:94:55:94:76 | remote_string.as_str() | +| mysql.rs:95:40:95:61 | remote_string.as_str() | +| mysql.rs:96:40:96:61 | remote_string.as_str() | +| mysql.rs:97:70:97:91 | remote_string.as_str() | +| mysql.rs:98:39:98:60 | remote_string.as_str() | +| mysql.rs:101:31:101:51 | unsafe_query.as_str() | +| mysql.rs:106:26:106:46 | unsafe_query.as_str() | | sqlx.rs:46:24:46:44 | ...::from(...) | | sqlx.rs:47:56:47:76 | ...::from(...) | | sqlx.rs:48:97:48:117 | ...::from(...) | @@ -65,3 +118,14 @@ multipleCallTargets | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | | sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | | sqlx.rs:202:57:202:85 | ...::from(...) | +multiplePathResolutions +| mysql.rs:6:37:6:74 | Result::<...> | +| mysql.rs:23:21:23:45 | Result::<...> | +| mysql.rs:26:17:26:41 | Result::<...> | +| mysql.rs:28:75:28:99 | Result::<...> | +| mysql.rs:31:63:31:87 | Result::<...> | +| mysql.rs:37:21:37:45 | Result::<...> | +| mysql.rs:41:17:41:41 | Result::<...> | +| mysql.rs:43:85:43:109 | Result::<...> | +| mysql.rs:46:73:46:97 | Result::<...> | +| mysql.rs:66:49:66:58 | Result::<...> | From 93eb7ce1af1808a1d6a92d06be51000e70e6cd8a Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 13 Oct 2025 19:28:40 +0100 Subject: [PATCH 121/965] Rust: Accept test changes following suggested edit. --- .../query-tests/security/CWE-089/SqlInjection.expected | 8 -------- 1 file changed, 8 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index cf5529c7a99..90dcc06d282 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,6 +1,5 @@ #select | mysql.rs:22:33:22:37 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:22:33:22:37 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:22:33:22:37 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:22:33:22:37 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:23:55:23:63 | query_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:23:55:23:63 | query_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:24:14:24:23 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:24:14:24:23 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:25:28:25:38 | query_first | mysql.rs:13:33:13:54 | ...::get | mysql.rs:25:28:25:38 | query_first | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | @@ -11,7 +10,6 @@ | mysql.rs:30:22:30:30 | query_map | mysql.rs:13:33:13:54 | ...::get | mysql.rs:30:22:30:30 | query_map | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:31:22:31:34 | query_map_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:31:22:31:34 | query_map_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:49:26:49:29 | prep | mysql.rs:13:33:13:54 | ...::get | mysql.rs:49:26:49:29 | prep | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:54:15:54:24 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:54:15:54:24 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | | mysql.rs:81:33:81:37 | query | mysql.rs:72:33:72:54 | ...::get | mysql.rs:81:33:81:37 | query | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | @@ -103,8 +101,6 @@ edges | mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | | mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | @@ -155,8 +151,6 @@ edges | mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | | mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | | mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | @@ -465,7 +459,6 @@ nodes | mysql.rs:15:85:15:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | | mysql.rs:15:86:15:98 | remote_string | semmle.label | remote_string | | mysql.rs:22:33:22:37 | query | semmle.label | query | -| mysql.rs:22:33:22:37 | query | semmle.label | query | | mysql.rs:22:39:22:50 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:22:39:22:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | @@ -506,7 +499,6 @@ nodes | mysql.rs:31:36:31:56 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:32:34:32:38 | query | semmle.label | query | -| mysql.rs:32:34:32:38 | query | semmle.label | query | | mysql.rs:32:40:32:51 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:32:40:32:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | From 76128ed8dc4a7c2bf93dcb9f117ee21d79d2b043 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 15:29:57 -0400 Subject: [PATCH 122/965] Crypto: Update InsecureIVorNonce to be a path problem. --- java/ql/lib/experimental/quantum/Language.qll | 14 -- .../Examples/InsecureIVorNonceSource.ql | 48 +++++- .../InsecureIVorNonceSource.expected | 137 +++++++++++++++++- .../InsecureIVorNonceSource.java | 12 +- 4 files changed, 179 insertions(+), 32 deletions(-) diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index b4464a87564..d30b30f8ef1 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -93,20 +93,6 @@ private class GenericRemoteDataSource extends Crypto::GenericRemoteDataSource { override string getAdditionalDescription() { result = this.toString() } } -// /** -// * A property access value (constant from a file) -// */ -// class PropertyConstant extends Crypto::GenericConstantSourceInstance instanceof Literal{ -// PropertyConstant() { -// value = this.getPropertyValue() and -// // Since properties pairs are not included in the java/weak-cryptographic-algorithm, -// // the check for values from properties files can be less strict than `InsecureAlgoLiteral`. -// not value.regexpMatch(getSecureAlgorithmRegex()) -// } -// override string getStringValue() { result = value } -// } -import semmle.code.java.dataflow.RangeUtils -// TODO: import all frameworks? import semmle.code.java.frameworks.Properties private import semmle.code.configfiles.ConfigFiles diff --git a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql index b1f04069218..773f5a3c448 100644 --- a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql @@ -6,7 +6,7 @@ * is any static nonce, or any known insecure source for a nonce/iv if * the value is used for an encryption operation (decryption operations are ignored * as the nonce/iv would be provided alongside the ciphertext). - * @kind problem + * @kind path-problem * @problem.severity error * @precision high * @tags quantum @@ -15,7 +15,42 @@ import experimental.quantum.Language -from Crypto::NonceArtifactNode nonce, Crypto::NodeBase src, Crypto::NodeBase op, string msg +module NonceSrcFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() or + source = any(Crypto::ArtifactInstance artifact).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::NonceArtifactNode nonce | sink.asExpr() = nonce.asElement()) + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module NonceSrcFlow = TaintTracking::Global; + +import NonceSrcFlow::PathGraph + +from + Crypto::NonceArtifactNode nonce, Crypto::NodeBase src, Crypto::NodeBase op, string msg, + NonceSrcFlow::PathNode srcNode, NonceSrcFlow::PathNode sinkNode where nonce.getSourceNode() = src and // NOTE: null nonces should be handled seaparately, often used for default values prior to initialization @@ -25,7 +60,7 @@ where ( // Case 1: Any constant nonce/iv is bad, regardless of how it is used src.asElement() instanceof Crypto::GenericConstantSourceInstance and - op = nonce and // binding op by not using it + op = nonce and // binding op but not using it msg = "Nonce or IV uses constant source $@" or // Case 2: The nonce has a non-random source and there is no known operation for the nonce @@ -47,5 +82,8 @@ where op.(Crypto::CipherOperationNode).getKeyOperationSubtype() instanceof Crypto::TWrapMode ) and msg = "Nonce or IV uses insecure source $@ at encryption operation $@" - ) -select nonce, msg, src, src.toString(), op, op.toString() + ) and + srcNode.getNode().asExpr() = src.asElement() and + sinkNode.getNode().asExpr() = nonce.asElement() and + NonceSrcFlow::flowPath(srcNode, sinkNode) +select sinkNode, srcNode, sinkNode, msg, src, src.toString(), op, op.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected index 5cb3fb117a6..3ad1b08e476 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected @@ -1,7 +1,130 @@ -| InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:14:21:14:81 | Constant | Constant | InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:42:21:42:21 | Constant | Constant | InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:57:13:57:62 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:58:13:58:63 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:73:13:73:73 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:74:13:74:74 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | -| InsecureIVorNonceSource.java:206:51:206:56 | Nonce | Nonce or IV uses insecure source $@ at encryption operation $@ | InsecureIVorNonceSource.java:194:26:194:30 | RandomNumberGeneration | RandomNumberGeneration | InsecureIVorNonceSource.java:208:16:208:31 | EncryptOperation | EncryptOperation | +#select +| InsecureIVorNonceSource.java:20:51:20:56 | ivSpec | InsecureIVorNonceSource.java:14:21:14:81 | {...} : byte[] | InsecureIVorNonceSource.java:20:51:20:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:14:21:14:81 | Constant | Constant | InsecureIVorNonceSource.java:20:51:20:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:49:51:49:56 | ivSpec | InsecureIVorNonceSource.java:42:21:42:21 | 1 : Number | InsecureIVorNonceSource.java:49:51:49:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:42:21:42:21 | Constant | Constant | InsecureIVorNonceSource.java:49:51:49:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | InsecureIVorNonceSource.java:57:13:57:62 | {...} : byte[] | InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:57:13:57:62 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | InsecureIVorNonceSource.java:58:13:58:63 | {...} : byte[] | InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:58:13:58:63 | Constant | Constant | InsecureIVorNonceSource.java:65:51:65:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | InsecureIVorNonceSource.java:73:13:73:73 | {...} : byte[] | InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:73:13:73:73 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | InsecureIVorNonceSource.java:74:13:74:74 | {...} : byte[] | InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | Nonce or IV uses constant source $@ | InsecureIVorNonceSource.java:74:13:74:74 | Constant | Constant | InsecureIVorNonceSource.java:81:51:81:56 | Nonce | Nonce | +| InsecureIVorNonceSource.java:206:51:206:56 | ivSpec | InsecureIVorNonceSource.java:194:26:194:30 | bytes : byte[] | InsecureIVorNonceSource.java:206:51:206:56 | ivSpec | Nonce or IV uses insecure source $@ at encryption operation $@ | InsecureIVorNonceSource.java:194:26:194:30 | RandomNumberGeneration | RandomNumberGeneration | InsecureIVorNonceSource.java:208:16:208:31 | EncryptOperation | EncryptOperation | +edges +| InsecureIVorNonceSource.java:14:21:14:81 | {...} : byte[] | InsecureIVorNonceSource.java:16:61:16:62 | iv : byte[] | provenance | | +| InsecureIVorNonceSource.java:16:35:16:63 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:20:51:20:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:16:61:16:62 | iv : byte[] | InsecureIVorNonceSource.java:16:35:16:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:16:61:16:62 | iv : byte[] | InsecureIVorNonceSource.java:16:35:16:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | MaD:4 | +| InsecureIVorNonceSource.java:42:13:42:14 | iv [post update] : byte[] [[]] : Number | InsecureIVorNonceSource.java:45:54:45:55 | iv : byte[] [[]] : Number | provenance | | +| InsecureIVorNonceSource.java:42:21:42:21 | 1 : Number | InsecureIVorNonceSource.java:42:13:42:14 | iv [post update] : byte[] [[]] : Number | provenance | | +| InsecureIVorNonceSource.java:45:34:45:56 | new IvParameterSpec(...) : IvParameterSpec | InsecureIVorNonceSource.java:49:51:49:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:45:54:45:55 | iv : byte[] [[]] : Number | InsecureIVorNonceSource.java:45:34:45:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:56:30:59:9 | {...} : byte[][] [[]] : byte[] | InsecureIVorNonceSource.java:61:61:61:69 | staticIvs : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:57:13:57:62 | {...} : byte[] | InsecureIVorNonceSource.java:56:30:59:9 | {...} : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:58:13:58:63 | {...} : byte[] | InsecureIVorNonceSource.java:56:30:59:9 | {...} : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:61:35:61:73 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:61:61:61:69 | staticIvs : byte[][] [[]] : byte[] | InsecureIVorNonceSource.java:61:61:61:72 | ...[...] : byte[] | provenance | | +| InsecureIVorNonceSource.java:61:61:61:72 | ...[...] : byte[] | InsecureIVorNonceSource.java:61:35:61:73 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:61:61:61:72 | ...[...] : byte[] | InsecureIVorNonceSource.java:61:35:61:73 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | MaD:4 | +| InsecureIVorNonceSource.java:72:30:75:9 | {...} : byte[][] [[]] : byte[] | InsecureIVorNonceSource.java:77:61:77:69 | staticIvs : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:73:13:73:73 | {...} : byte[] | InsecureIVorNonceSource.java:72:30:75:9 | {...} : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:74:13:74:74 | {...} : byte[] | InsecureIVorNonceSource.java:72:30:75:9 | {...} : byte[][] [[]] : byte[] | provenance | | +| InsecureIVorNonceSource.java:77:35:77:73 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:77:61:77:69 | staticIvs : byte[][] [[]] : byte[] | InsecureIVorNonceSource.java:77:61:77:72 | ...[...] : byte[] | provenance | | +| InsecureIVorNonceSource.java:77:61:77:72 | ...[...] : byte[] | InsecureIVorNonceSource.java:77:35:77:73 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:77:61:77:72 | ...[...] : byte[] | InsecureIVorNonceSource.java:77:35:77:73 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | MaD:4 | +| InsecureIVorNonceSource.java:107:26:107:27 | iv : byte[] | InsecureIVorNonceSource.java:109:61:109:62 | iv : byte[] | provenance | | +| InsecureIVorNonceSource.java:109:35:109:63 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:113:51:113:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:109:61:109:62 | iv : byte[] | InsecureIVorNonceSource.java:109:35:109:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:109:61:109:62 | iv : byte[] | InsecureIVorNonceSource.java:109:35:109:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | MaD:4 | +| InsecureIVorNonceSource.java:123:13:123:14 | iv [post update] : byte[] [[]] : Number | InsecureIVorNonceSource.java:126:61:126:62 | iv : byte[] [[]] : Number | provenance | | +| InsecureIVorNonceSource.java:123:21:123:43 | (...)... : Number | InsecureIVorNonceSource.java:123:13:123:14 | iv [post update] : byte[] [[]] : Number | provenance | | +| InsecureIVorNonceSource.java:123:28:123:43 | nextInt(...) : Number | InsecureIVorNonceSource.java:123:21:123:43 | (...)... : Number | provenance | | +| InsecureIVorNonceSource.java:126:35:126:63 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:130:51:130:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:126:61:126:62 | iv : byte[] [[]] : Number | InsecureIVorNonceSource.java:126:35:126:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:138:52:138:62 | randomBytes : byte[] | InsecureIVorNonceSource.java:141:26:141:36 | randomBytes : byte[] | provenance | | +| InsecureIVorNonceSource.java:141:26:141:36 | randomBytes : byte[] | InsecureIVorNonceSource.java:141:42:141:43 | iv [post update] : byte[] | provenance | MaD:2 | +| InsecureIVorNonceSource.java:141:42:141:43 | iv [post update] : byte[] | InsecureIVorNonceSource.java:143:61:143:62 | iv : byte[] | provenance | | +| InsecureIVorNonceSource.java:143:35:143:63 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:147:51:147:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:143:61:143:62 | iv : byte[] | InsecureIVorNonceSource.java:143:35:143:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:143:61:143:62 | iv : byte[] | InsecureIVorNonceSource.java:143:35:143:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | MaD:4 | +| InsecureIVorNonceSource.java:155:52:155:62 | randomBytes : byte[] | InsecureIVorNonceSource.java:158:28:158:38 | randomBytes : byte[] | provenance | | +| InsecureIVorNonceSource.java:158:14:158:43 | copyOf(...) : byte[] [[]] : Object | InsecureIVorNonceSource.java:160:61:160:62 | iv : byte[] [[]] : Object | provenance | | +| InsecureIVorNonceSource.java:158:28:158:38 | randomBytes : byte[] | InsecureIVorNonceSource.java:158:14:158:43 | copyOf(...) : byte[] [[]] : Object | provenance | MaD:3 | +| InsecureIVorNonceSource.java:160:35:160:63 | new GCMParameterSpec(...) : GCMParameterSpec | InsecureIVorNonceSource.java:164:51:164:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:160:61:160:62 | iv : byte[] [[]] : Object | InsecureIVorNonceSource.java:160:35:160:63 | new GCMParameterSpec(...) : GCMParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:174:52:174:62 | randomBytes : byte[] | InsecureIVorNonceSource.java:175:16:175:26 | randomBytes : byte[] | provenance | | +| InsecureIVorNonceSource.java:175:16:175:26 | randomBytes : byte[] | InsecureIVorNonceSource.java:180:21:180:32 | generate(...) : byte[] | provenance | | +| InsecureIVorNonceSource.java:180:21:180:32 | generate(...) : byte[] | InsecureIVorNonceSource.java:182:54:182:55 | iv : byte[] | provenance | | +| InsecureIVorNonceSource.java:182:34:182:56 | new IvParameterSpec(...) : IvParameterSpec | InsecureIVorNonceSource.java:186:51:186:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:182:54:182:55 | iv : byte[] | InsecureIVorNonceSource.java:182:34:182:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:182:54:182:55 | iv : byte[] | InsecureIVorNonceSource.java:182:34:182:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:5 | +| InsecureIVorNonceSource.java:194:26:194:30 | bytes : byte[] | InsecureIVorNonceSource.java:195:16:195:20 | bytes : byte[] | provenance | | +| InsecureIVorNonceSource.java:195:16:195:20 | bytes : byte[] | InsecureIVorNonceSource.java:200:21:200:51 | generateInsecureRandomBytes(...) : byte[] | provenance | | +| InsecureIVorNonceSource.java:200:21:200:51 | generateInsecureRandomBytes(...) : byte[] | InsecureIVorNonceSource.java:202:54:202:55 | iv : byte[] | provenance | | +| InsecureIVorNonceSource.java:202:34:202:56 | new IvParameterSpec(...) : IvParameterSpec | InsecureIVorNonceSource.java:206:51:206:56 | ivSpec | provenance | Sink:MaD:1 | +| InsecureIVorNonceSource.java:202:54:202:55 | iv : byte[] | InsecureIVorNonceSource.java:202:34:202:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| InsecureIVorNonceSource.java:202:54:202:55 | iv : byte[] | InsecureIVorNonceSource.java:202:34:202:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:5 | +models +| 1 | Sink: javax.crypto; Cipher; true; init; (int,Key,AlgorithmParameterSpec); ; Argument[2]; encryption-iv; manual | +| 2 | Summary: java.lang; System; false; arraycopy; ; ; Argument[0]; Argument[2]; taint; manual | +| 3 | Summary: java.util; Arrays; false; copyOf; ; ; Argument[0].ArrayElement; ReturnValue.ArrayElement; value; manual | +| 4 | Summary: javax.crypto.spec; GCMParameterSpec; true; GCMParameterSpec; ; ; Argument[1]; Argument[this]; taint; manual | +| 5 | Summary: javax.crypto.spec; IvParameterSpec; true; IvParameterSpec; ; ; Argument[0]; Argument[this]; taint; manual | +nodes +| InsecureIVorNonceSource.java:14:21:14:81 | {...} : byte[] | semmle.label | {...} : byte[] | +| InsecureIVorNonceSource.java:16:35:16:63 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:16:61:16:62 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:20:51:20:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:42:13:42:14 | iv [post update] : byte[] [[]] : Number | semmle.label | iv [post update] : byte[] [[]] : Number | +| InsecureIVorNonceSource.java:42:21:42:21 | 1 : Number | semmle.label | 1 : Number | +| InsecureIVorNonceSource.java:45:34:45:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| InsecureIVorNonceSource.java:45:54:45:55 | iv : byte[] [[]] : Number | semmle.label | iv : byte[] [[]] : Number | +| InsecureIVorNonceSource.java:49:51:49:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:56:30:59:9 | {...} : byte[][] [[]] : byte[] | semmle.label | {...} : byte[][] [[]] : byte[] | +| InsecureIVorNonceSource.java:57:13:57:62 | {...} : byte[] | semmle.label | {...} : byte[] | +| InsecureIVorNonceSource.java:58:13:58:63 | {...} : byte[] | semmle.label | {...} : byte[] | +| InsecureIVorNonceSource.java:61:35:61:73 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:61:61:61:69 | staticIvs : byte[][] [[]] : byte[] | semmle.label | staticIvs : byte[][] [[]] : byte[] | +| InsecureIVorNonceSource.java:61:61:61:72 | ...[...] : byte[] | semmle.label | ...[...] : byte[] | +| InsecureIVorNonceSource.java:65:51:65:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:72:30:75:9 | {...} : byte[][] [[]] : byte[] | semmle.label | {...} : byte[][] [[]] : byte[] | +| InsecureIVorNonceSource.java:73:13:73:73 | {...} : byte[] | semmle.label | {...} : byte[] | +| InsecureIVorNonceSource.java:74:13:74:74 | {...} : byte[] | semmle.label | {...} : byte[] | +| InsecureIVorNonceSource.java:77:35:77:73 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:77:61:77:69 | staticIvs : byte[][] [[]] : byte[] | semmle.label | staticIvs : byte[][] [[]] : byte[] | +| InsecureIVorNonceSource.java:77:61:77:72 | ...[...] : byte[] | semmle.label | ...[...] : byte[] | +| InsecureIVorNonceSource.java:81:51:81:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:107:26:107:27 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:109:35:109:63 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:109:61:109:62 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:113:51:113:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:123:13:123:14 | iv [post update] : byte[] [[]] : Number | semmle.label | iv [post update] : byte[] [[]] : Number | +| InsecureIVorNonceSource.java:123:21:123:43 | (...)... : Number | semmle.label | (...)... : Number | +| InsecureIVorNonceSource.java:123:28:123:43 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | +| InsecureIVorNonceSource.java:126:35:126:63 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:126:61:126:62 | iv : byte[] [[]] : Number | semmle.label | iv : byte[] [[]] : Number | +| InsecureIVorNonceSource.java:130:51:130:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:138:52:138:62 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:141:26:141:36 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:141:42:141:43 | iv [post update] : byte[] | semmle.label | iv [post update] : byte[] | +| InsecureIVorNonceSource.java:143:35:143:63 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:143:61:143:62 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:147:51:147:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:155:52:155:62 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:158:14:158:43 | copyOf(...) : byte[] [[]] : Object | semmle.label | copyOf(...) : byte[] [[]] : Object | +| InsecureIVorNonceSource.java:158:28:158:38 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:160:35:160:63 | new GCMParameterSpec(...) : GCMParameterSpec | semmle.label | new GCMParameterSpec(...) : GCMParameterSpec | +| InsecureIVorNonceSource.java:160:61:160:62 | iv : byte[] [[]] : Object | semmle.label | iv : byte[] [[]] : Object | +| InsecureIVorNonceSource.java:164:51:164:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:174:52:174:62 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:175:16:175:26 | randomBytes : byte[] | semmle.label | randomBytes : byte[] | +| InsecureIVorNonceSource.java:180:21:180:32 | generate(...) : byte[] | semmle.label | generate(...) : byte[] | +| InsecureIVorNonceSource.java:182:34:182:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| InsecureIVorNonceSource.java:182:54:182:55 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:186:51:186:56 | ivSpec | semmle.label | ivSpec | +| InsecureIVorNonceSource.java:194:26:194:30 | bytes : byte[] | semmle.label | bytes : byte[] | +| InsecureIVorNonceSource.java:195:16:195:20 | bytes : byte[] | semmle.label | bytes : byte[] | +| InsecureIVorNonceSource.java:200:21:200:51 | generateInsecureRandomBytes(...) : byte[] | semmle.label | generateInsecureRandomBytes(...) : byte[] | +| InsecureIVorNonceSource.java:202:34:202:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| InsecureIVorNonceSource.java:202:54:202:55 | iv : byte[] | semmle.label | iv : byte[] | +| InsecureIVorNonceSource.java:206:51:206:56 | ivSpec | semmle.label | ivSpec | +subpaths +testFailures +| InsecureIVorNonceSource.java:42:21:42:21 | 1 : Number | Unexpected result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java index a638909410a..f1b8878d63a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java @@ -11,7 +11,7 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from a byte array public byte[] encryptWithStaticIvByteArrayWithInitializer(byte[] key, byte[] plaintext) throws Exception { - byte[] iv = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; + byte[] iv = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; // $Source GCMParameterSpec ivSpec = new GCMParameterSpec(128, iv); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); @@ -54,8 +54,8 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from a multidimensional byte array public byte[] encryptWithOneOfStaticIvs01(byte[] key, byte[] plaintext) throws Exception { byte[][] staticIvs = new byte[][] { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, // $Source + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } // $Source }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); @@ -70,8 +70,8 @@ public class InsecureIVorNonceSource { // BAD: AES-GCM with static IV from a multidimensional byte array public byte[] encryptWithOneOfStaticIvs02(byte[] key, byte[] plaintext) throws Exception { byte[][] staticIvs = new byte[][] { - new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, - new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } + new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }, // $Source + new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 42 } // $Source }; GCMParameterSpec ivSpec = new GCMParameterSpec(128, staticIvs[1]); @@ -191,7 +191,7 @@ public class InsecureIVorNonceSource { public byte[] generateInsecureRandomBytes(int numBytes) { Random random = new Random(); byte[] bytes = new byte[numBytes]; - random.nextBytes(bytes); + random.nextBytes(bytes); // $Source return bytes; } From 7847e926705efc53ce830cce9405649df1832801 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 15:30:53 -0400 Subject: [PATCH 123/965] Crypto: Update KDF iteration and count to be path problems --- .../quantum/Examples/WeakKDFIterationCount.ql | 50 +++++++++++++++++-- .../quantum/Examples/WeakKDFKeySize.ql | 50 +++++++++++++++++-- .../codeql/quantum/experimental/Model.qll | 14 +++++- 3 files changed, 102 insertions(+), 12 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql index 2dd5b0b006b..fc07c30e677 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql @@ -2,7 +2,7 @@ * @name Weak known key derivation function iteration count * @description Detects key derivation operations with a known weak iteration count. * @id java/quantum/weak-kdf-iteration-count - * @kind problem + * @kind path-problem * @problem.severity error * @precision high * @tags quantum @@ -12,9 +12,49 @@ import java import experimental.quantum.Language -from Crypto::KeyDerivationOperationNode op, Literal l +module IterationCountConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() or + source = any(Crypto::ArtifactInstance artifact).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::KeyDerivationOperationInstance kdev | + sink = kdev.getIterationCountConsumer().getConsumer().getInputNode() + ) + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module IterationCountFlow = TaintTracking::Global; + +import IterationCountFlow::PathGraph + +from + Crypto::KeyDerivationOperationNode op, Literal l, IterationCountFlow::PathNode srcNode, + IterationCountFlow::PathNode sinkNode where op.getIterationCount().asElement() = l and - l.getValue().toInt() < 100000 -select op, "Key derivation operation configures iteration count below 100k: $@", l, - l.getValue().toString() + l.getValue().toInt() < 100000 and + srcNode.getNode().asExpr() = l and + sinkNode.getNode() = op.getIterationCountConsumer().getConsumer().getInputNode() and + IterationCountFlow::flowPath(srcNode, sinkNode) +select sinkNode, srcNode, sinkNode, + "Key derivation operation configures iteration count below 100k: $@", l, l.getValue().toString() diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql index 1bae9ebef4f..3bd93cf8e0d 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql @@ -2,7 +2,7 @@ * @name Weak known key derivation function output length * @description Detects key derivation operations with a known weak output length * @id java/quantum/weak-kdf-key-size - * @kind problem + * @kind path-problem * @problem.severity error * @precision high * @tags quantum @@ -12,9 +12,49 @@ import java import experimental.quantum.Language -from Crypto::KeyDerivationOperationNode op, Literal l +module KeySizeConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() or + source = any(Crypto::ArtifactInstance artifact).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::KeyDerivationOperationInstance kdev | + sink = kdev.getKeySizeConsumer().getConsumer().getInputNode() + ) + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module KeySizeFlow = TaintTracking::Global; + +import KeySizeFlow::PathGraph + +from + Crypto::KeyDerivationOperationNode op, Literal l, KeySizeFlow::PathNode srcNode, + KeySizeFlow::PathNode sinkNode where op.getOutputKeySize().asElement() = l and - l.getValue().toInt() < 256 -select op, "Key derivation operation configures output key length below 256: $@", l, - l.getValue().toString() + l.getValue().toInt() < 256 and + srcNode.getNode().asExpr() = l and + sinkNode.getNode() = op.getKeySizeConsumer().getConsumer().getInputNode() and + KeySizeFlow::flowPath(srcNode, sinkNode) +select sinkNode, srcNode, sinkNode, + "Key derivation operation configures output key length below 256: $@", l, l.getValue().toString() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 4de99ccb46a..b6bf30964f6 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1580,6 +1580,8 @@ module CryptographyBase Input> { result = instance.getKeySizeConsumer().getConsumer().getAKnownSourceNode() } + ConsumerInputDataFlowNode getKeySizeConsumer() { result = instance.getKeySizeConsumer() } + /** * Gets the key artifact produced by this operation. */ @@ -1753,11 +1755,19 @@ module CryptographyBase Input> { } GenericSourceNode getIterationCount() { - result.asElement() = kdfInstance.getIterationCountConsumer().getConsumer().getAGenericSource() + result.asElement() = this.getIterationCountConsumer().getConsumer().getAGenericSource() } GenericSourceNode getOutputKeySize() { - result.asElement() = kdfInstance.getOutputKeySizeConsumer().getConsumer().getAGenericSource() + result.asElement() = this.getOutputKeySizeConsumer().getConsumer().getAGenericSource() + } + + ConsumerInputDataFlowNode getIterationCountConsumer() { + result = kdfInstance.getIterationCountConsumer() + } + + ConsumerInputDataFlowNode getOutputKeySizeConsumer() { + result = kdfInstance.getOutputKeySizeConsumer() } override predicate isCandidateAlgorithmNode(AlgorithmNode node) { From 8b5a42328e29ec95902c62ae7861c6205a4ad566 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 15:34:41 -0400 Subject: [PATCH 124/965] Crypto: Convert ReusedNonce.ql into a path problem. --- .../quantum/Examples/ReusedNonce.ql | 52 ++++++++-- .../examples/NonceReuse/NonceReuse.expected | 95 ++++++++++++++++++- 2 files changed, 136 insertions(+), 11 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql index 2236df8ce33..736b28d2211 100644 --- a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql +++ b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql @@ -2,7 +2,7 @@ * @name Reuse of cryptographic nonce * @description Reuse of nonce in cryptographic operations can lead to vulnerabilities. * @id java/quantum/reused-nonce - * @kind problem + * @kind path-problem * @problem.severity error * @precision high * @tags quantum @@ -12,16 +12,51 @@ import java import ArtifactReuse -from Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2, Crypto::NodeBase sourceNode +module NonceSrcFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() or + source = any(Crypto::ArtifactInstance artifact).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::NonceArtifactNode nonce | sink.asExpr() = nonce.asElement()) + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module NonceSrcFlow = TaintTracking::Global; + +import NonceSrcFlow::PathGraph + +from + Crypto::NonceArtifactNode nonce1, Crypto::NonceArtifactNode nonce2, Crypto::NodeBase src, + NonceSrcFlow::PathNode srcNode, NonceSrcFlow::PathNode sinkNode where isArtifactReuse(nonce1, nonce2) and // NOTE: in general we may not know a source, but see possible reuse, // we are not detecting these cases here (only where the source is the same). - sourceNode = nonce1.getSourceNode() and - sourceNode = nonce2.getSourceNode() and + src = nonce1.getSourceNode() and + src = nonce2.getSourceNode() and // Null literals are typically used for initialization, and if two 'nulls' // are reused, it is likely an uninitialization path that would result in a NullPointerException. - not sourceNode.asElement() instanceof NullLiteral and + not src.asElement() instanceof NullLiteral and // if the nonce is used in an encryption and decryption, ignore that reuse not exists(Crypto::CipherOperationNode op1, Crypto::CipherOperationNode op2 | op1 != op2 and @@ -46,6 +81,9 @@ where op1.getKeyOperationSubtype() instanceof Crypto::TUnwrapMode ) ) - ) -select sourceNode, "Nonce source is reused, see $@ and $@", nonce1, nonce1.toString(), nonce2, + ) and + srcNode.getNode().asExpr() = src.asElement() and + sinkNode.getNode().asExpr() = nonce1.asElement() and + NonceSrcFlow::flowPath(srcNode, sinkNode) +select sinkNode, srcNode, sinkNode, "Nonce source is reused, see alternate sink $@", nonce2, nonce2.toString() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected index f5e9382a40c..cf03a9053eb 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected @@ -1,4 +1,91 @@ -| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:40:47:40:52 | Nonce | Nonce | Test.java:49:47:49:52 | Nonce | Nonce | -| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:49:47:49:52 | Nonce | Nonce | Test.java:40:47:40:52 | Nonce | Nonce | -| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:76:48:76:54 | Nonce | Nonce | Test.java:82:49:82:55 | Nonce | Nonce | -| Test.java:19:38:19:40 | RandomNumberGeneration | Nonce source is reused, see $@ and $@ | Test.java:82:49:82:55 | Nonce | Nonce | Test.java:76:48:76:54 | Nonce | Nonce | +edges +| Test.java:19:38:19:40 | val : byte[] | Test.java:20:16:20:18 | val : byte[] | provenance | | +| Test.java:20:16:20:18 | val : byte[] | Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | provenance | | +| Test.java:20:16:20:18 | val : byte[] | Test.java:32:15:32:33 | getRandomWrapper1(...) : byte[] | provenance | | +| Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | Test.java:26:16:26:18 | val : byte[] | provenance | | +| Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | Test.java:27:16:27:18 | val : byte[] | provenance | | +| Test.java:26:16:26:18 | val : byte[] | Test.java:36:32:36:40 | iv : byte[] | provenance | | +| Test.java:27:16:27:18 | val : byte[] | Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | provenance | | +| Test.java:32:15:32:33 | getRandomWrapper1(...) : byte[] | Test.java:33:16:33:18 | val : byte[] | provenance | | +| Test.java:33:16:33:18 | val : byte[] | Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | provenance | | +| Test.java:33:16:33:18 | val : byte[] | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | provenance | | +| Test.java:33:16:33:18 | val : byte[] | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | provenance | | +| Test.java:36:32:36:40 | iv : byte[] | Test.java:37:54:37:55 | iv : byte[] | provenance | | +| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | Test.java:46:54:46:55 | iv : byte[] | provenance | | +| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | Test.java:55:54:55:55 | iv : byte[] | provenance | | +| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | Test.java:64:54:64:55 | iv : byte[] | provenance | | +| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | Test.java:73:55:73:56 | iv : byte[] | provenance | | +| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:45890 | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:79:55:79:56 | iv : byte[] | provenance | | +| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:45890 | +| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:88:38:88:39 | iv : byte[] | Test.java:89:54:89:55 | iv : byte[] | provenance | | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:103:38:103:39 | iv : byte[] | Test.java:104:54:104:55 | iv : byte[] | provenance | | +| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +nodes +| Test.java:19:38:19:40 | val : byte[] | semmle.label | val : byte[] | +| Test.java:20:16:20:18 | val : byte[] | semmle.label | val : byte[] | +| Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | semmle.label | getRandomWrapper1(...) : byte[] | +| Test.java:26:16:26:18 | val : byte[] | semmle.label | val : byte[] | +| Test.java:27:16:27:18 | val : byte[] | semmle.label | val : byte[] | +| Test.java:32:15:32:33 | getRandomWrapper1(...) : byte[] | semmle.label | getRandomWrapper1(...) : byte[] | +| Test.java:33:16:33:18 | val : byte[] | semmle.label | val : byte[] | +| Test.java:36:32:36:40 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:37:54:37:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:40:47:40:52 | ivSpec | semmle.label | ivSpec | +| Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | semmle.label | getRandomWrapper2A(...) : byte[] | +| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:46:54:46:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:49:47:49:52 | ivSpec | semmle.label | ivSpec | +| Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | semmle.label | getRandomWrapper2b(...) : byte[] | +| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:55:54:55:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:58:47:58:52 | ivSpec | semmle.label | ivSpec | +| Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | semmle.label | getRandomWrapper2b(...) : byte[] | +| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:64:54:64:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:67:47:67:52 | ivSpec | semmle.label | ivSpec | +| Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | semmle.label | getRandomWrapper2b(...) : byte[] | +| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:73:55:73:56 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:76:48:76:54 | ivSpec1 | semmle.label | ivSpec1 | +| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:79:55:79:56 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:82:49:82:55 | ivSpec2 | semmle.label | ivSpec2 | +| Test.java:88:38:88:39 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:89:54:89:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:93:51:93:56 | ivSpec | semmle.label | ivSpec | +| Test.java:96:51:96:56 | ivSpec | semmle.label | ivSpec | +| Test.java:103:38:103:39 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| Test.java:104:54:104:55 | iv : byte[] | semmle.label | iv : byte[] | +| Test.java:107:47:107:52 | ivSpec | semmle.label | ivSpec | +subpaths +#select +| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | +| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | +| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | +| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | From 7e8acd76c3bc99e723bc4597bc63054fc3636c85 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 15:48:32 -0400 Subject: [PATCH 125/965] Crypto: Update WeakAsymmetricKeyGenSize to a path problem. --- .../Examples/WeakAsymmetricKeyGenSize.ql | 59 ++++++++++++++++--- ...WeakOrUnknownAsymmetricKeyGenSize.expected | 16 ++++- 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql index d478f2383a5..93fc58775d9 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -2,7 +2,7 @@ * @name Weak Asymmetric Key Size * @id java/quantum/weak-asymmetric-key-gen-size * @description An asymmetric key of known size is less than 2048 bits for any non-elliptic curve key operation. - * @kind problem + * @kind path-problem * @problem.severity error * @precision high * @tags quantum @@ -12,12 +12,57 @@ import java import experimental.quantum.Language -from Crypto::KeyArtifactNode key, int keySize, Crypto::AlgorithmNode alg +module KeySizeFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() or + source = any(Crypto::ArtifactInstance artifact).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::KeyCreationOperationNode kgen | + sink = kgen.getKeySizeConsumer().getConsumer().getInputNode() + ) + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module KeySizeFlow = TaintTracking::Global; + +import KeySizeFlow::PathGraph + +from + Crypto::KeyCreationOperationNode keygen, int keySize, Crypto::AlgorithmNode alg, + KeySizeFlow::PathNode srcNode, KeySizeFlow::PathNode sinkNode where - key.getCreatingOperation().getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and - alg = key.getAKnownAlgorithm() and // NOTE: if algorithm is not known (doesn't bind) we need a separate query + // ASSUMPTION/NOTE: if the key size is set on a key creation, but the key creation itself is not observed + // (i.e., the size is initialized but the operation not observed) currently we will not + // detect the size. A key creation operation currently must be observed. + keygen.getAKeySizeSource().asElement().(Literal).getValue().toInt() = keySize and + // NOTE: if algorithm is not known (doesn't bind) we need a separate query + // Also note the algorithm may also be re-specified at a use of the key + alg = keygen.getAKnownAlgorithm() and not alg instanceof Crypto::EllipticCurveNode and // Elliptic curve sizes are handled separately and are more tied directly to the algorithm alg instanceof Crypto::AsymmetricAlgorithmNode and - keySize < 2048 -select key, "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm $@", - alg, alg.getAlgorithmName() + keySize < 2048 and + srcNode.getNode().asExpr() = keygen.getAKeySizeSource().asElement() and + sinkNode.getNode() = keygen.getKeySizeConsumer().getConsumer().getInputNode() +select sinkNode, srcNode, sinkNode, + "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm $@", alg, + alg.getAlgorithmName() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected index 23d1e17366b..26dc1bfad24 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected @@ -1,3 +1,13 @@ -| InsufficientAsymmetricKeySize.java:6:9:6:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:4:69:4:73 | KeyOperationAlgorithm | RSA | -| InsufficientAsymmetricKeySize.java:10:9:10:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:8:69:8:73 | KeyOperationAlgorithm | DSA | -| InsufficientAsymmetricKeySize.java:14:9:14:37 | Key | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:12:69:12:72 | KeyAgreementAlgorithm | DH | +edges +nodes +| InsufficientAsymmetricKeySize.java:5:32:5:35 | 1024 | semmle.label | 1024 | +| InsufficientAsymmetricKeySize.java:9:32:9:35 | 1024 | semmle.label | 1024 | +| InsufficientAsymmetricKeySize.java:13:32:13:35 | 1024 | semmle.label | 1024 | +| InsufficientAsymmetricKeySize.java:17:32:17:35 | 2048 | semmle.label | 2048 | +| InsufficientAsymmetricKeySize.java:21:32:21:35 | 2048 | semmle.label | 2048 | +| InsufficientAsymmetricKeySize.java:25:32:25:35 | 2048 | semmle.label | 2048 | +subpaths +#select +| InsufficientAsymmetricKeySize.java:5:32:5:35 | 1024 | InsufficientAsymmetricKeySize.java:5:32:5:35 | 1024 | InsufficientAsymmetricKeySize.java:5:32:5:35 | 1024 | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:4:69:4:73 | KeyOperationAlgorithm | RSA | +| InsufficientAsymmetricKeySize.java:9:32:9:35 | 1024 | InsufficientAsymmetricKeySize.java:9:32:9:35 | 1024 | InsufficientAsymmetricKeySize.java:9:32:9:35 | 1024 | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:8:69:8:73 | KeyOperationAlgorithm | DSA | +| InsufficientAsymmetricKeySize.java:13:32:13:35 | 1024 | InsufficientAsymmetricKeySize.java:13:32:13:35 | 1024 | InsufficientAsymmetricKeySize.java:13:32:13:35 | 1024 | Use of weak asymmetric key size (1024 bits) for algorithm $@ | InsufficientAsymmetricKeySize.java:12:69:12:72 | KeyAgreementAlgorithm | DH | From 55bbcee3015efb6465fc39ee438583d423afab3a Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 13 Oct 2025 17:04:29 -0400 Subject: [PATCH 126/965] Crypto: Make WeakAsymmetricKeyGenSize a path problem. --- .../experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql | 4 +++- shared/quantum/codeql/quantum/experimental/Model.qll | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql index 93fc58775d9..c72e73b84ad 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -59,10 +59,12 @@ where // Also note the algorithm may also be re-specified at a use of the key alg = keygen.getAKnownAlgorithm() and not alg instanceof Crypto::EllipticCurveNode and // Elliptic curve sizes are handled separately and are more tied directly to the algorithm + not alg.(Crypto::KeyAgreementAlgorithmNode).getKeyAgreementType() = Crypto::ECDH() and // ECDH key sizes should be handled with elliptic curves alg instanceof Crypto::AsymmetricAlgorithmNode and keySize < 2048 and srcNode.getNode().asExpr() = keygen.getAKeySizeSource().asElement() and - sinkNode.getNode() = keygen.getKeySizeConsumer().getConsumer().getInputNode() + sinkNode.getNode() = keygen.getKeySizeConsumer().getConsumer().getInputNode() and + KeySizeFlow::flowPath(srcNode, sinkNode) select sinkNode, srcNode, sinkNode, "Use of weak asymmetric key size (" + keySize.toString() + " bits) for algorithm $@", alg, alg.getAlgorithmName() diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index b6bf30964f6..a2bbc0e59fb 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1712,6 +1712,8 @@ module CryptographyBase Input> { } override string getAlgorithmName() { result = this.getRawAlgorithmName() } // TODO: standardize? + + KeyAgreementType getKeyAgreementType() { result = instance.asAlg().getKeyAgreementType() } } class KeyGenerationOperationNode extends KeyCreationOperationNode { From 6dd07790acb3cdcdb20910c428bc53b9937017a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 14 Oct 2025 11:16:33 +0000 Subject: [PATCH 127/965] Post-release preparation for codeql-cli-2.23.3 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 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/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 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/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/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 06f67aa0be6..6423894239d 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.19 +version: 0.4.20-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index b758a0e68a1..553e579ceac 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.11 +version: 0.6.12-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index dadd68c23f5..8712e400897 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.0 +version: 6.0.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index f33aa8fc562..71aa95bed9e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.2 +version: 1.5.3-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 6ef84244308..a569cf6a5c4 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.50 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 16479e216b3..d91f21b0e90 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.50 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 8dd6bc6ec10..92a08088be7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.2.6 +version: 5.2.7-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 1ea66ed1c4e..a9776d058b9 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.2 +version: 1.4.3-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index d9d08c55e17..e44457e4570 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: 1.0.33 +version: 1.0.34-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 2cc2dbe2906..bf2586d9089 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.0 +version: 5.0.1-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 660386f898e..3133d392d89 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.7 +version: 1.4.8-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 2885944ca32..7f8860bc632 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.2 +version: 7.7.3-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 0d507c46586..faf088b7a4a 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.8.2 +version: 1.8.3-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ca5e521255a..1ee1c8c7815 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.13 +version: 2.6.14-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 2c79885b924..df854af7e2b 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.2 +version: 2.1.3-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 537cf29a9df..daf9a60662d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.33 +version: 1.0.34-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index a7a4c26b565..011afcb6844 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.17 +version: 4.0.18-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 2eb8d46c68c..d01829a9de2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.7 +version: 1.6.8-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 8791a8080ac..77d07910f48 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.1 +version: 5.1.2-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 87412b0fdd9..b35ffb5c411 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.7 +version: 1.4.8-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index 0c4fb2d1c44..b5dea62349a 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.18 +version: 0.1.19-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index ae14dfe6423..e72c44676d5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.18 +version: 0.1.19-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a22308185fe..c765cb33734 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.7 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 6f34e533354..c4f39f17484 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.17 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index d7cb0eefb90..afe273133cb 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.17 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 74599911e75..a132a76336b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index d3100a4df45..201689efa51 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.11 +version: 0.0.12-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index b1d244dd813..90efb8ebbf3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index bbf599db62f..2019d2dcb2e 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index ef8d64df57c..f1aa89319bd 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.9 +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index cc8146b434c..69963387a05 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.33 +version: 1.0.34-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index fab2fc6fbfd..efe3820754f 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: 1.0.33 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 9fc3902c6c0..70066fa9bd8 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 36e5b63799a..ae0880ec7ea 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.14 +version: 0.0.15-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 2dadf4b9085..9a68b0ae750 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.17 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index ef9f5adb454..71a4826016e 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index b90f801666d..69e188136fa 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.20 +version: 2.0.21-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index e1848171799..25135f830c6 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 203802df80a..4ba9cb06c57 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.33 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 19753127baa..18bddfe30bb 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.9 +version: 5.0.10-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 37771782a76..9e050de61b9 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.7 +version: 1.2.8-dev groups: - swift - queries From b6b376746097c81c9842afdab4ebbbbc7dfdac2d Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 14 Oct 2025 13:50:36 +0200 Subject: [PATCH 128/965] Swift: Make tracer config handle resource-dirs passed to clang --- swift/tools/tracing-config.lua | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index b52c5f03a45..85a4d561ddf 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -57,17 +57,27 @@ function RegisterExtractorPack(id) -- xcodebuild does not always specify the -resource-dir in which case the compiler falls back -- to a resource-dir based on its path. We want to know what is the original resource-dir in - -- all cases so that we can patch it with out own + -- all cases so that we can patch it with out own. When we see a -resource-dir preceded by + -- -Xcc this will be a resource-dir that is passed to clang. We can still obtain the swift + -- resource-dir in this case by skipping over the -Xcc that follows it and stripping off the + -- clang suffix from the path. function find_original_resource_dir(compilerPath, args) - local resource_dir_index = indexOf(args, '-resource-dir') - if resource_dir_index and args[resource_dir_index + 1] then - return args[resource_dir_index + 1] - end - -- derive -resource-dir based on the compilerPath - -- e.g.: /usr/bin/swift-frontend -> /usr/bin/../lib/swift - local second_last_slash_index = string.find(compilerPath, "/[^/]*/[^/]*$") - local usr_dir = string.sub(compilerPath, 1, second_last_slash_index) - return usr_dir .. '/lib/swift' + local resource_dir_index = indexOf(args, '-resource-dir') + if resource_dir_index then + if args[resource_dir_index + 1] and args[resource_dir_index + 1] ~= '-Xcc' then + return args[resource_dir_index + 1] + elseif args[resource_dir_index + 2] then + local clang_index = string.find(args[resource_dir_index + 2], "/clang$") + if clang_index and clang_index - 1 > 0 then + return string.sub(args[resource_dir_index + 2], 1, clang_index - 1) + end + end + end + -- derive -resource-dir based on the compilerPath + -- e.g.: /usr/bin/swift-frontend -> /usr/bin/../lib/swift + local second_last_slash_index = string.find(compilerPath, "/[^/]*/[^/]*$") + local usr_dir = string.sub(compilerPath, 1, second_last_slash_index) + return usr_dir .. 'lib/swift' end -- replace or add our own resource directory From 2e0915ebed828f7540d0f81efed56e09885b4787 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 14 Oct 2025 13:21:52 +0100 Subject: [PATCH 129/965] Add missing links to "Creating path queries" --- .../codeql/codeql-language-guides/analyzing-data-flow-in-go.rst | 2 ++ .../codeql-language-guides/analyzing-data-flow-in-java.rst | 2 ++ .../analyzing-data-flow-in-javascript-and-typescript.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst index 4b56b2093f3..ffb75e03e8e 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst @@ -406,6 +406,8 @@ Here is the answer to exercise 4 above, converted into a path query: where GetenvToURLFlow::flowPath(src, sink) select src.getNode(), src, sink, "This environment variable constructs a URL $@.", sink, "here" +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst index 3e3bf9cab03..c526a60cbeb 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst @@ -407,6 +407,8 @@ Here is the answer to exercise 4 above, converted into a path query: where GetenvToURLFlow::flowPath(src, sink) select src.getNode(), src, sink, "This environment variable constructs a URL $@.", sink, "here" +For more information, see "`Creating path queries `__". + Further reading --------------- diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst index 6e7284f0c44..be1a255433f 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst @@ -581,6 +581,8 @@ Here is the answer to exercise 4 above, converted into a path query: where HardCodedTagNameFlow::flowPath(source, sink) select sink.getNode(), source, sink, "Hard-coded tag name $@.", source, "here" +For more information, see "`Creating path queries `__". + Further reading --------------- From b6aee67b420c9f05f3649adf91c6059c0e6abfcd Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 14 Oct 2025 14:52:22 +0200 Subject: [PATCH 130/965] Pytest: fix the `build-as-test` mode on Windows This mode (enabled with `--codeql=build-as-test` or setting `PYTEST_CODEQL=build-as-test` in the environment) is an experimental mode that makes the pytest dist installation run as a test. This allows to avoid running the installation in case nothing changed in the dist, leveraging bazel's test caching mechanism, and accelrating the dev loop when working on integration test code. This mode might become the default for devs in the future. Up until now, this mode was only working on POSIX systems. This commit fixes it on Windows. The issue was `native_test` being unable to wrap a `py_binary` target because of an `.exe` suffix mismatch. Turning the `native_test` into a full-fledged `py_test` solves the issue. --- misc/bazel/pkg.bzl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/misc/bazel/pkg.bzl b/misc/bazel/pkg.bzl index d8f69c5f748..25f2bf3577d 100644 --- a/misc/bazel/pkg.bzl +++ b/misc/bazel/pkg.bzl @@ -3,12 +3,11 @@ Wrappers and helpers around `rules_pkg` to build codeql packs. """ load("@bazel_skylib//lib:paths.bzl", "paths") -load("@bazel_skylib//rules:native_binary.bzl", "native_test") load("@rules_pkg//pkg:install.bzl", "pkg_install") load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files", _strip_prefix = "strip_prefix") load("@rules_pkg//pkg:pkg.bzl", "pkg_zip") load("@rules_pkg//pkg:providers.bzl", "PackageFilegroupInfo", "PackageFilesInfo") -load("@rules_python//python:defs.bzl", "py_binary") +load("@rules_python//python:defs.bzl", "py_binary", "py_test") load("//misc/bazel:os.bzl", "OS_DETECTION_ATTRS", "os_select") def _make_internal(name): @@ -366,28 +365,29 @@ def _codeql_pack_install(name, srcs, install_dest = None, build_file_label = Non ] if build_file_label else []) + ( ["--destdir", "\"%s\"" % install_dest] if install_dest else [] ) - py_binary( - name = name, + installer_args = dict( srcs = [Label("//misc/bazel/internal:install.py")], main = Label("//misc/bazel/internal:install.py"), deps = ["@rules_python//python/runfiles"], data = data, args = args, ) + py_binary( + name = name, + **installer_args + ) # this hack is meant to be an optimization when using install for tests, where # the install step is skipped if nothing changed. If the installation directory # is somehow messed up, `bazel run` can be used to force install - native_test( + py_test( name = internal("as", "test"), - src = name, tags = [ "manual", # avoid having this picked up by `...`, `:all` or `:*` "local", # make sure installation does not run sandboxed ], - data = data, - args = args, size = "small", + **installer_args ) def codeql_pack_group(name, srcs, visibility = None, skip_installer = False, prefix = "", install_dest = None, build_file_label = None, compression_level = 6): From d8b37d0cde0ef12833b9641c929bbee1a81e92b5 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 14 Oct 2025 16:03:40 +0100 Subject: [PATCH 131/965] Review suggestions - update comments and description --- .../CWE-1004/SensitiveCookieNotHttpOnly.ql | 20 +++++++++++-------- .../CWE-1004/SensitiveCookieNotHttpOnly.java | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql index d301adbcb99..494e851a533 100644 --- a/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql +++ b/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql @@ -1,10 +1,11 @@ /** * @name Sensitive cookies without the HttpOnly response header set - * @description Sensitive cookies without the 'HttpOnly' flag set leaves session cookies vulnerable to + * @description A sensitive cookie without the 'HttpOnly' flag set may be vulnerable to * an XSS attack. * @kind path-problem * @problem.severity warning - * @precision medium + * @precision high + * @security-severity 5.0 * @id java/sensitive-cookie-not-httponly * @tags security * external/cwe/cwe-1004 @@ -101,8 +102,9 @@ predicate removesCookie(MethodCall ma) { } /** - * A taint configuration tracking flow of a method that sets the `HttpOnly` flag, - * or one that removes a cookie, to a `ServletResponse.addCookie` call. + * A taint configuration tracking the flow of a cookie that has had the + * `HttpOnly` flag set, or has been removed, to a `ServletResponse.addCookie` + * call. */ module SetHttpOnlyOrRemovesCookieToAddCookieConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { @@ -120,8 +122,8 @@ module SetHttpOnlyOrRemovesCookieToAddCookieFlow = TaintTracking::Global; /** - * A cookie that is added to an HTTP response and which doesn't have `httpOnly` set, used as a sink - * in `MissingHttpOnlyConfiguration`. + * A cookie that is added to an HTTP response and which doesn't have `HttpOnly` set, used as a sink + * in `MissingHttpOnlyConfig`. */ class CookieResponseWithoutHttpOnlySink extends DataFlow::ExprNode { CookieResponseWithoutHttpOnlySink() { @@ -157,9 +159,11 @@ predicate setsHttpOnlyInNewCookie(ClassInstanceExpr cie) { /** * A taint configuration tracking flow from a sensitive cookie without the `HttpOnly` flag - * set to its HTTP response. + * set to an HTTP response. + * * Tracks string literals containing sensitive names (`SensitiveCookieNameExpr`), to an `addCookie` call (as a `Cookie` object) * or an `addHeader` call (as a string) (`CookieResponseWithoutHttpOnlySink`). + * * Passes through `Cookie` constructors and `toString` calls. */ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { @@ -169,7 +173,7 @@ module MissingHttpOnlyConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { // JAX-RS's `new NewCookie("session-access-key", accessKey, "/", null, null, 0, true, true)` and similar - // Cookie constructors, but barriers to considering the flow of the sensitive name, as httponly flag is set. + // Cookie constructors that set the `HttpOnly` flag are considered barriers to the flow of sensitive names. setsHttpOnlyInNewCookie(node.asExpr()) } diff --git a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java index a57a502336f..91f8f3ad4ce 100644 --- a/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java +++ b/java/ql/test/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.java @@ -16,7 +16,7 @@ class SensitiveCookieNotHttpOnly { jwtCookie.setPath("/"); jwtCookie.setMaxAge(3600*24*7); jwtCookie.setHttpOnly(true); - response.addCookie(jwtCookie); + response.addCookie(jwtCookie); } // BAD - Tests adding a sensitive cookie without the `HttpOnly` flag set. @@ -29,7 +29,7 @@ class SensitiveCookieNotHttpOnly { jwtCookie.setMaxAge(3600*24*7); userIdCookie.setMaxAge(3600*24*7); response.addCookie(jwtCookie); // $Alert - response.addCookie(userIdCookie); + response.addCookie(userIdCookie); } // GOOD - Tests set a sensitive cookie header with the `HttpOnly` flag set. From e95e1a0386a85d7bb1d2777c147e1036c6766953 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 14 Oct 2025 16:27:28 +0100 Subject: [PATCH 132/965] Update integration test --- .../java/query-suite/java-code-scanning.qls.expected | 1 + 1 file changed, 1 insertion(+) diff --git a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected index afa6cebba31..dd67b7df413 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected @@ -21,6 +21,7 @@ ql/java/ql/src/Security/CWE/CWE-094/JexlInjection.ql ql/java/ql/src/Security/CWE/CWE-094/MvelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/SpelInjection.ql ql/java/ql/src/Security/CWE/CWE-094/TemplateInjection.ql +ql/java/ql/src/Security/CWE/CWE-1004/SensitiveCookieNotHttpOnly.ql ql/java/ql/src/Security/CWE/CWE-1104/MavenPomDependsOnBintray.ql ql/java/ql/src/Security/CWE/CWE-113/NettyResponseSplitting.ql ql/java/ql/src/Security/CWE/CWE-113/ResponseSplitting.ql From 45e8164f14fc04725b8e6dda185b73debaefc2a0 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 15 Oct 2025 09:07:11 +0200 Subject: [PATCH 133/965] JS: remove quality tag from SyntaxError query --- .../query-suite/javascript-code-quality-extended.qls.expected | 1 - .../query-suite/javascript-code-quality.qls.expected | 1 - javascript/ql/src/LanguageFeatures/SyntaxError.ql | 3 +-- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected index 1d2d3c1ff8c..c9407089189 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality-extended.qls.expected @@ -71,7 +71,6 @@ ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql -ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected index 6894a776b37..b550c2c8249 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected @@ -63,7 +63,6 @@ ql/javascript/ql/src/LanguageFeatures/SemicolonInsertion.ql ql/javascript/ql/src/LanguageFeatures/SetterReturn.ql ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql ql/javascript/ql/src/LanguageFeatures/StrictModeCallStackIntrospection.ql -ql/javascript/ql/src/LanguageFeatures/SyntaxError.ql ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql ql/javascript/ql/src/LanguageFeatures/ThisBeforeSuper.ql ql/javascript/ql/src/LanguageFeatures/UnusedIndexVariable.ql diff --git a/javascript/ql/src/LanguageFeatures/SyntaxError.ql b/javascript/ql/src/LanguageFeatures/SyntaxError.ql index 0c9a69490f7..d4428c75774 100644 --- a/javascript/ql/src/LanguageFeatures/SyntaxError.ql +++ b/javascript/ql/src/LanguageFeatures/SyntaxError.ql @@ -4,8 +4,7 @@ * @kind problem * @problem.severity recommendation * @id js/syntax-error - * @tags quality - * reliability + * @tags reliability * correctness * language-features * @precision very-high From 9fc8faa0486f74368e026fc299d1eda803b328cb Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 15 Oct 2025 10:09:13 +0200 Subject: [PATCH 134/965] Swift: Address review comments --- swift/tools/tracing-config.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index 85a4d561ddf..15effc0140b 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -62,14 +62,14 @@ function RegisterExtractorPack(id) -- resource-dir in this case by skipping over the -Xcc that follows it and stripping off the -- clang suffix from the path. function find_original_resource_dir(compilerPath, args) - local resource_dir_index = indexOf(args, '-resource-dir') - if resource_dir_index then - if args[resource_dir_index + 1] and args[resource_dir_index + 1] ~= '-Xcc' then - return args[resource_dir_index + 1] - elseif args[resource_dir_index + 2] then - local clang_index = string.find(args[resource_dir_index + 2], "/clang$") + local found = indexOf(args, '-resource-dir') + if found and args[found + 1] then + if args[found - 1] ~= '-Xcc' then + return args[found + 1] + elseif args[found + 1] == '-Xcc' and args[found + 2] then + local clang_index = string.find(args[found + 2], "/clang$") if clang_index and clang_index - 1 > 0 then - return string.sub(args[resource_dir_index + 2], 1, clang_index - 1) + return string.sub(args[found + 2], 1, clang_index - 1) end end end From b196714794a8518b4e5828e95aa7267a027c6e97 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 15 Oct 2025 10:54:24 +0200 Subject: [PATCH 135/965] SSA: Add a shared signature for SSA and a module to implement it. --- shared/ssa/codeql/ssa/Ssa.qll | 440 +++++++++++++++++++++++++++++++++- 1 file changed, 438 insertions(+), 2 deletions(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 20a447f91a9..562560c22f0 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -9,10 +9,10 @@ private import codeql.controlflow.BasicBlock as BB private import codeql.util.Location private import codeql.util.Unit -signature class BasicBlockSig; +private signature class TypSig; /** Provides the input specification of the SSA implementation. */ -signature module InputSig { +signature module InputSig { /** A variable that can be SSA converted. */ class SourceVariable { /** Gets a textual representation of this variable. */ @@ -42,6 +42,175 @@ signature module InputSig { predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain); } +/** + * Provides classes and predicates for the SSA representation of variables. + * + * Class hierarchy: + * ```text + * SsaDefinition + * |- SsaWriteDefinition + * | |- SsaExplicitWrite + * | | \- SsaParameterInit + * | |- SsaImplicitWrite + * | | \- SsaImplicitEntryDefinition + * | \- SsaUncertainWrite (overlaps SsaImplicitWrite and potentially SsaExplicitWrite) + * \- SsaPhiDefinition + * ``` + */ +signature module SsaSig< + LocationSig Location, TypSig ControlFlowNode, TypSig BasicBlock, TypSig Expr, TypSig Parameter, + TypSig VariableWrite> +{ + /** A variable that can be SSA converted. */ + class SourceVariable { + /** Gets a textual representation of this variable. */ + string toString(); + + /** Gets the location of this variable. */ + Location getLocation(); + } + + /** A static single assignment (SSA) definition. */ + class SsaDefinition { + /** Gets the source variable underlying this SSA definition. */ + SourceVariable getSourceVariable(); + + /** + * Holds if this SSA definition defines `v` at index `i` in basic block `bb`. + * Phi definitions are considered to be at index `-1`, while normal variable writes + * are at the index of the control flow node they wrap. + */ + predicate definesAt(SourceVariable v, BasicBlock bb, int i); + + /** Gets the basic block to which this SSA definition belongs. */ + BasicBlock getBasicBlock(); + + /** + * Gets the control flow node of this SSA definition. + * + * For SSA definitions occurring at the beginning of a basic block, such as + * phi definitions, this will get the first control flow node of the basic block. + */ + ControlFlowNode getControlFlowNode(); + + /** Gets a read of this SSA definition. */ + Expr getARead(); + + /** + * Holds if this SSA definition is live at the end of basic block `bb`. + * That is, this definition reaches the end of basic block `bb`, at which + * point it is still live, without crossing another SSA definition of the + * same source variable. + */ + predicate isLiveAtEndOfBlock(BasicBlock bb); + + /** + * Gets a definition that ultimately defines this SSA definition and is + * not itself a phi definition. + * + * Example: + * + * ```rb + * def m b + * i = 0 # defines i_0 + * if b + * i = 1 # defines i_1 + * else + * i = 2 # defines i_2 + * end + * # defines i_3 = phi(i_1, i_2); ultimate definitions are i_1 and i_2 + * puts i + * end + * ``` + */ + SsaDefinition getAnUltimateDefinition(); + + /** Gets a textual representation of this SSA definition. */ + string toString(); + + /** Gets the location of this SSA definition. */ + Location getLocation(); + } + + /** + * A write definition. This includes every definition that is not a phi + * definition. + */ + class SsaWriteDefinition extends SsaDefinition; + + /** + * An SSA definition that corresponds to an explicit variable update or + * declaration. + */ + class SsaExplicitWrite extends SsaWriteDefinition { + /** Gets the write underlying this SSA definition. */ + VariableWrite getDefinition(); + + /** + * Gets the expression representing this write, if any. This is equivalent + * to `getDefinition().asExpr()`. + */ + Expr getDefiningExpr(); + + /** + * Gets the expression with the value being written, if any. This is + * equivalent to `getDefinition().getValue()`. + */ + Expr getValue(); + } + + /** + * An SSA definition representing the initialization of a parameter at the + * beginning of a callable. + */ + class SsaParameterInit extends SsaExplicitWrite { + /** + * Gets the parameter that this definition represents. This is equivalent + * to `getDefinition().isParameterInit(result)` + */ + Parameter getParameter(); + } + + /** + * An SSA definition that does not correspond to an explicit variable + * update or declaration. + * + * This includes implicit entry definitions for fields and captured + * variables, as well as field updates through side-effects and implicit + * definitions for fields whenever the qualifier is updated. + */ + class SsaImplicitWrite extends SsaWriteDefinition; + + /** + * An SSA definition representing the implicit initialization of a variable + * at the beginning of a callable. This includes fields and captured + * variables, but excludes parameters as they have explicit declarations. + */ + class SsaImplicitEntryDefinition extends SsaImplicitWrite; + + /** An SSA definition that represents an uncertain variable update. */ + class SsaUncertainWrite extends SsaWriteDefinition { + /** + * Gets the immediately preceding definition. Since this update is uncertain, + * the value from the preceding definition might still be valid. + */ + SsaDefinition getPriorDefinition(); + } + + /** + * An SSA phi definition, that is, a pseudo definition for a variable at a + * point in the flow graph where otherwise two or more definitions for the + * variable would be visible. + */ + class SsaPhiDefinition extends SsaDefinition { + /** Holds if `inp` is an input to the phi definition along the edge originating in `bb`. */ + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb); + + /** Gets an input of this phi definition. */ + SsaDefinition getAnInput(); + } +} + /** * Provides an SSA implementation. * @@ -1319,6 +1488,273 @@ module Make< override Location getLocation() { result = this.getBasicBlock().getLocation() } } + signature module SsaInputSig { + class Expr { + ControlFlowNode getControlFlowNode(); + + /** Gets a textual representation of this expression. */ + string toString(); + + /** Gets the location of this expression. */ + Location getLocation(); + } + + class Parameter; + + class VariableWrite { + /** Gets the expression representing this write, if any. */ + Expr asExpr(); + + /** + * Gets the expression with the value being written, if any. + * + * This can be the same expression as returned by `asExpr()`, which is the + * case for, for example, `++x` and `x += e`. For simple assignments like + * `x = e`, `asExpr()` gets the whole assignment expression while + * `getValue()` gets the right-hand side `e`. Post-crement operations like + * `x++` do not have an expression with the value being written. + */ + Expr getValue(); + + /** Holds if this write is an initialization of a parameter. */ + predicate isParameterInit(Parameter p); + + /** Gets a textual representation of this write. */ + string toString(); + + /** Gets the location of this write. */ + Location getLocation(); + } + + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SourceVariable v); + + /** + * Holds if `closureVar` is a local variable inside a closure that captures + * `captured`, which is the same variable in its declaring scope. The + * capture occurs at index `i` in basic block `bb`, and + * `variableRead(bb, i, captured, false)` must hold in order to include a + * pseudo-read of the captured variable at the point of capture. + */ + predicate variableCapture( + SourceVariable captured, SourceVariable closureVar, BasicBlock bb, int i + ); + } + + module MakeSsa implements + SsaSig + { + class SourceVariable = Input::SourceVariable; + + private import SsaInput + private import Cached + + cached + private module Cached { + cached + predicate ssaDefReachesCertainRead(Definition def, Expr e) { + exists(SourceVariable v, BasicBlock bb, int i | + ssaDefReachesRead(v, def, bb, i) and + variableRead(bb, i, v, true) and + e.getControlFlowNode() = bb.getNode(i) + ) + } + + cached + predicate ssaDefReachesUncertainRead(SourceVariable v, Definition def, BasicBlock bb, int i) { + ssaDefReachesRead(v, def, bb, i) and + variableRead(bb, i, v, false) + } + + /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ + cached + predicate captures(SsaImplicitEntryDefinition init, Definition capturedvar) { + exists(BasicBlock bb, int i | + ssaDefReachesRead(_, capturedvar, bb, i) and + variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) + ) + } + + cached + predicate isLiveAtEndOfBlock(Definition def, BasicBlock bb) { + ssaDefReachesEndOfBlock(bb, def, _) + } + + cached + predicate phiHasInputFromBlockCached(PhiNode phi, Definition inp, BasicBlock bb) { + phiHasInputFromBlock(phi, inp, bb) + } + + cached + predicate uncertainWriteDefinitionInputCached(UncertainWriteDefinition def, Definition inp) { + uncertainWriteDefinitionInput(def, inp) + } + } + + additional predicate ssaDefReachesUncertainRead = Cached::ssaDefReachesUncertainRead/4; + + final private class FinalDefinition = Definition; + + /** A static single assignment (SSA) definition. */ + class SsaDefinition extends FinalDefinition { + /** + * Gets the control flow node of this SSA definition. + * + * For SSA definitions occurring at the beginning of a basic block, such as + * phi nodes, this will get the first control flow node of the basic block. + */ + ControlFlowNode getControlFlowNode() { + exists(BasicBlock bb, int i | this.definesAt(_, bb, i) | result = bb.getNode(0.maximum(i))) + } + + /** Gets a read of this SSA definition. */ + Expr getARead() { ssaDefReachesCertainRead(this, result) } + + /** + * Holds if this SSA definition is live at the end of basic block `bb`. + * That is, this definition reaches the end of basic block `bb`, at which + * point it is still live, without crossing another SSA definition of the + * same source variable. + */ + predicate isLiveAtEndOfBlock(BasicBlock bb) { isLiveAtEndOfBlock(this, bb) } + + /** + * Gets an SSA definition whose value can flow to this one in one step. This + * includes inputs to phi definitions, the prior definition of uncertain writes, + * and the captured ssa definition for a closure definition. + */ + private SsaDefinition getAPhiInputOrPriorDefinition() { + result = this.(SsaPhiDefinition).getAnInput() or + result = this.(SsaUncertainWrite).getPriorDefinition() or + this.(SsaImplicitEntryDefinition).captures(result) + } + + /** + * Gets a definition that ultimately defines this SSA definition and is + * not itself a phi definition. + * + * Example: + * + * ```rb + * def m b + * i = 0 # defines i_0 + * if b + * i = 1 # defines i_1 + * else + * i = 2 # defines i_2 + * end + * # defines i_3 = phi(i_1, i_2); ultimate definitions are i_1 and i_2 + * puts i + * end + * ``` + */ + SsaDefinition getAnUltimateDefinition() { + result = this.getAPhiInputOrPriorDefinition*() and not result instanceof SsaPhiDefinition + } + } + + /** + * A write definition. This includes every definition that is not a phi + * definition. + */ + class SsaWriteDefinition extends SsaDefinition instanceof WriteDefinition { } + + private predicate explicitWrite(WriteDefinition def, VariableWrite write) { + exists(BasicBlock bb, int i, SourceVariable v | + def.definesAt(v, bb, i) and + explicitWrite(write, bb, i, v) + ) + } + + /** + * An SSA definition that corresponds to an explicit variable update or + * declaration. + */ + class SsaExplicitWrite extends SsaWriteDefinition { + SsaExplicitWrite() { explicitWrite(this, _) } + + /** Gets the write underlying this SSA definition. */ + VariableWrite getDefinition() { explicitWrite(this, result) } + + /** + * Gets the expression representing this write, if any. This is equivalent + * to `getDefinition().asExpr()`. + */ + Expr getDefiningExpr() { result = this.getDefinition().asExpr() } + + /** + * Gets the expression with the value being written, if any. This is + * equivalent to `getDefinition().getValue()`. + */ + Expr getValue() { result = this.getDefinition().getValue() } + } + + private predicate parameterInit(WriteDefinition def, Parameter p) { + exists(VariableWrite write | explicitWrite(def, write) and write.isParameterInit(p)) + } + + /** + * An SSA definition representing the initialization of a parameter at the + * beginning of a callable. + */ + class SsaParameterInit extends SsaExplicitWrite { + SsaParameterInit() { parameterInit(this, _) } + + /** + * Gets the parameter that this definition represents. This is equivalent + * to `getDefinition().isParameterInit(result)` + */ + Parameter getParameter() { parameterInit(this, result) } + } + + /** + * An SSA definition that does not correspond to an explicit variable + * update or declaration. + * + * This includes implicit entry definitions for fields and captured + * variables, as well as field updates through side-effects and implicit + * definitions for fields whenever the qualifier is updated. + */ + class SsaImplicitWrite extends SsaWriteDefinition { + SsaImplicitWrite() { not explicitWrite(this, _) } + } + + /** + * An SSA definition representing the implicit initialization of a variable + * at the beginning of a callable. This includes fields and captured + * variables, but excludes parameters as they have explicit declarations. + */ + class SsaImplicitEntryDefinition extends SsaImplicitWrite { + SsaImplicitEntryDefinition() { this.definesAt(_, any(EntryBasicBlock bb), -1) } + + /** Holds if this is a closure definition that captures the value of `capturedvar`. */ + predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } + } + + /** An SSA definition that represents an uncertain variable update. */ + class SsaUncertainWrite extends SsaWriteDefinition instanceof UncertainWriteDefinition { + /** + * Gets the immediately preceding definition. Since this update is uncertain, + * the value from the preceding definition might still be valid. + */ + SsaDefinition getPriorDefinition() { uncertainWriteDefinitionInputCached(this, result) } + } + + /** + * An SSA phi definition, that is, a pseudo definition for a variable at a + * point in the flow graph where otherwise two or more definitions for the + * variable would be visible. + */ + class SsaPhiDefinition extends SsaDefinition { + /** Holds if `inp` is an input to the phi definition along the edge originating in `bb`. */ + predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { + phiHasInputFromBlockCached(this, inp, bb) + } + + /** Gets an input of this phi definition. */ + SsaDefinition getAnInput() { this.hasInputFromBlock(result, _) } + } + } + /** Provides a set of consistency queries. */ module Consistency { /** Holds if a read can be reached from multiple definitions. */ From 8aaf9f696a7d630f876459d37e76507c582d5f21 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 15 Oct 2025 11:10:25 +0200 Subject: [PATCH 136/965] C++: Factor out widening of bounds --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 42 +++++++------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 673d0c3c4ea..77cc773dc32 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -93,6 +93,18 @@ private float wideningUpperBounds(ArithmeticType t) { result = 1.0 / 0.0 // +Inf } +/** Gets the widened lower bound for a given type and lower bound. */ +bindingset[type, lb] +float widenLowerBound(Type type, float lb) { + result = max(float widenLB | widenLB = wideningLowerBounds(type) and widenLB <= lb | widenLB) +} + +/** Gets the widened upper bound for a given type and upper bound. */ +bindingset[type, ub] +float widenUpperBound(Type type, float ub) { + result = min(float widenUB | widenUB = wideningUpperBounds(type) and widenUB >= ub | widenUB) +} + /** * Gets the value of the expression `e`, if it is a constant. * This predicate also handles the case of constant variables initialized in different @@ -656,12 +668,7 @@ private float getTruncatedLowerBounds(Expr expr) { then // Apply widening where we might get a combinatorial explosion. if isRecursiveBinary(expr) - then - result = - max(float widenLB | - widenLB = wideningLowerBounds(expr.getUnspecifiedType()) and - not widenLB > newLB - ) + then result = widenLowerBound(expr.getUnspecifiedType(), newLB) else result = newLB else result = exprMinVal(expr) ) and @@ -715,12 +722,7 @@ private float getTruncatedUpperBounds(Expr expr) { then // Apply widening where we might get a combinatorial explosion. if isRecursiveBinary(expr) - then - result = - min(float widenUB | - widenUB = wideningUpperBounds(expr.getUnspecifiedType()) and - not widenUB < newUB - ) + then result = widenUpperBound(expr.getUnspecifiedType(), newUB) else result = newUB else result = exprMaxVal(expr) ) @@ -1815,13 +1817,7 @@ module SimpleRangeAnalysisInternal { // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the // recursion from exploding. - result = - max(float widenLB | - widenLB = wideningLowerBounds(getVariableRangeType(v)) and - not widenLB > truncatedLB - | - widenLB - ) + result = widenLowerBound(getVariableRangeType(v), truncatedLB) else result = truncatedLB ) or @@ -1845,13 +1841,7 @@ module SimpleRangeAnalysisInternal { // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion // from exploding. - result = - min(float widenUB | - widenUB = wideningUpperBounds(getVariableRangeType(v)) and - not widenUB < truncatedUB - | - widenUB - ) + result = widenUpperBound(getVariableRangeType(v), truncatedUB) else result = truncatedUB ) or From 70a8c4f37f8d62a860ce5bfe995a296cf50aecb2 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 15 Oct 2025 11:42:17 +0200 Subject: [PATCH 137/965] C++: Add range analysis examples that explode --- .../rangeanalysis/SimpleRangeAnalysis/test.c | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index db7c71e0050..d3d6fffcd2b 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,6 +413,208 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } +unsigned int conditional_nested_guards(unsigned int ip) { + // This tests a combinatorial explosion that can happen from a large number of + // nested linear guards. + unsigned int special_number = + (14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17) > + (2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17 + : 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14; + return special_number; +} + +int many_conditional_assignments(int c1, int c2, int c3, int c4, int c5) { + // This tests a combinatorial explosion that can happen from many conditional + // assignments, since each conditional assignment doubles the number of + // bounds. + int x = 0; + if (c1) { x += 748596; } + if (c2) { x += 84652395; } + if (c3) { x += 3675895; } + if (c4) { x += 98634; } + if (c5) { x += 7834985; } + if (c1 && c2) { x += 938457398; } + if (c1 && c3) { x += 73895648; } + if (c1 && c4) { x += 12345432; } + if (c1 && c5) { x += 38847; } + if (c2 && c3) { x += 234; } + // x now has 2^10 bounds, the 10 additions below give (2^10)^10 bounds + int y = x + x + x + x + x + x + x + x + x + x + x + x; + return y; +} + // Test the comma expression. unsigned int test_comma01(unsigned int x) { unsigned int y = x < 100 ? x : 100; From c6577c8590548aee13c9c2fce21d9bfe4aac251f Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 15 Oct 2025 11:54:28 +0200 Subject: [PATCH 138/965] JS: Avoid magic and improve a join in type resolution --- .../javascript/internal/NameResolution.qll | 8 ++++ .../javascript/internal/TypeResolution.qll | 43 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll index b25c98fd693..43ae4ffd43e 100644 --- a/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll +++ b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll @@ -73,6 +73,7 @@ module NameResolution { * * May also include some type-specific steps in cases where this is harmless when tracking values. */ + pragma[nomagic] private predicate commonStep(Node node1, Node node2) { // Import paths are part of the graph and has an incoming edge from the imported module, if found. // This ensures we can also use the PathExpr as a source when working with external (unresolved) modules. @@ -187,6 +188,7 @@ module NameResolution { /** * Holds if there is a read from `node1` to `node2` that accesses the member `name`. */ + pragma[nomagic] predicate readStep(Node node1, string name, Node node2) { exists(QualifiedTypeAccess access | node1 = access.getQualifier() and @@ -321,6 +323,7 @@ module NameResolution { /** * Gets the exported member of `mod` named `name`. */ + pragma[nomagic] Node getModuleExport(ModuleLike mod, string name) { exists(ExportDeclaration exprt | mod = exprt.getContainer() and @@ -362,6 +365,7 @@ module NameResolution { * Holds if `value` is stored in `target.prop`. Only needs to recognise assignments * that are also recognised by JSDoc tooling such as the Closure compiler. */ + pragma[nomagic] private predicate storeToVariable(Expr value, string prop, LocalVariableLike target) { exists(AssignExpr assign | // target.name = value @@ -374,6 +378,7 @@ module NameResolution { } /** Steps that only apply for this configuration. */ + pragma[nomagic] private predicate specificStep(Node node1, Node node2) { exists(LexicalName var | S::isRelevantVariable(var) | node1.(LexicalDecl).getALexicalName() = var and @@ -406,6 +411,7 @@ module NameResolution { /** Helps track flow from a particular set of source nodes. */ module Track { /** Gets the set of nodes reachable from `source`. */ + pragma[nomagic] Node track(Node source) { isSource(source) and result = source @@ -419,6 +425,7 @@ module NameResolution { /** Helps track flow from a particular set of source nodes. */ module TrackNode { /** Gets the set of nodes reachable from `source`. */ + pragma[nomagic] Node track(Source source) { result = source or @@ -482,6 +489,7 @@ module NameResolution { * * Unlike `trackModule`, this is intended to track uses of external packages. */ + pragma[nomagic] predicate nodeRefersToModule(Node node, string mod, string qualifiedName) { exists(Expr path | path = any(Import imprt).getImportedPathExpr() or diff --git a/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll index a158ed6421a..73885f83305 100644 --- a/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll +++ b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll @@ -12,6 +12,7 @@ module TypeResolution { * We track through underlying types as an approximate way to handle calls to a type * that is a union/intersection involving functions. */ + pragma[nomagic] Node trackUnderlyingFunctionType(Function fun) { result = fun or @@ -139,6 +140,28 @@ module TypeResolution { ) } + /** + * `ContentSet.getAReadContent` restricted to the content sets and contents relevant for type resolution. + */ + pragma[nomagic] + private DataFlow::Content getAReadContentRestricted(DataFlow::ContentSet cs) { + valueReadStep(_, cs, _) and + result = cs.getAReadContent() and + typeMember(_, result, _) + } + + /** + * `valueReadStep` where the `ContentSet` has been mapped to the set of relevant read-contents. + */ + pragma[nomagic] + private predicate valueReadStepOnContent(Node object, DataFlow::Content content, Node member) { + exists(DataFlow::ContentSet contents | + valueReadStep(object, contents, member) and + content = getAReadContentRestricted(contents) + ) + } + + pragma[nomagic] predicate callTarget(InvokeExpr call, Function target) { exists(ClassDefinition cls | valueHasType(call.(NewExpr).getCallee(), trackClassValue(cls)) and @@ -198,6 +221,7 @@ module TypeResolution { ) } + pragma[nomagic] predicate contextualType(Node value, Node type) { exists(LocalVariableLike v | type = v.getADeclaration().getTypeAnnotation() and @@ -239,6 +263,7 @@ module TypeResolution { /** * Holds if `value` has the given `type`. */ + cached predicate valueHasType(Node value, Node type) { value.(BindingPattern).getTypeAnnotation() = type or @@ -293,11 +318,18 @@ module TypeResolution { or exists(Node mid | valueHasType(mid, type) | ValueFlow::step(mid, value)) or - exists(Node mid, Node midType, DataFlow::ContentSet contents, Node host | - valueReadStep(mid, contents, value) and + exists(DataFlow::Content content, Node host | + typeMemberHostRead(host, content, value) and + typeMember(host, content, type) + ) + } + + pragma[nomagic] + private predicate typeMemberHostRead(Node host, DataFlow::Content content, Node target) { + exists(Node mid, Node midType | + valueReadStepOnContent(mid, content, target) and valueHasType(mid, midType) and - typeMemberHostReaches(host, midType) and - typeMember(host, contents.getAReadContent(), type) + typeMemberHostReaches(host, midType) ) } @@ -309,6 +341,7 @@ module TypeResolution { * - a union type has the property if all its members have the property */ module TrackMustProp { + pragma[nomagic] predicate hasProperty(Node node) { directlyHasProperty(node) or @@ -341,6 +374,7 @@ module TypeResolution { } module ValueHasProperty { + pragma[nomagic] predicate valueHasProperty(Node value) { exists(Node type | valueHasType(value, type) and @@ -405,6 +439,7 @@ module TypeResolution { /** * Holds if `type` contains `string` or `any`, possibly wrapped in a promise. */ + pragma[nomagic] predicate hasUnderlyingStringOrAnyType(Node type) { type.(TypeAnnotation).isStringy() or From ee08385e313627af75c3be1fa46ca9588256195f Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 08:06:19 -0400 Subject: [PATCH 139/965] Crytpo: Update JCA keyagreement to type conversion, XDH is a type of ECDH. --- java/ql/lib/experimental/quantum/JCA.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index be91a015872..e288467ae97 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -221,13 +221,13 @@ module JCAModel { bindingset[name] predicate key_agreement_name_to_type_known(Crypto::TKeyAgreementType type, string name) { type = Crypto::DH() and - name.toUpperCase() in ["DH", "XDH"] + name.toUpperCase() in ["DH"] or type = Crypto::EDH() and name.toUpperCase() = "EDH" or type = Crypto::ECDH() and - name.toUpperCase() in ["ECDH", "X25519", "X448"] + name.toUpperCase() in ["ECDH", "X25519", "X448", "XDH"] or type = Crypto::OtherKeyAgreementType() and name.toUpperCase().matches("ML-KEM%") From bf9a249624f019deff451ee51793e462ae52f516 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 08:06:50 -0400 Subject: [PATCH 140/965] Crypto: Experimental queries for mac ordering --- .../Examples/BadMacOrderDecryptToMac.ql | 27 +++++++++ .../BadMacOrderMacOnEncryptPlaintext.ql | 57 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql create mode 100644 java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql new file mode 100644 index 00000000000..b69dd3be2c9 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -0,0 +1,27 @@ +/** + * @name Bad MAC order: decrypt to mac + * @description MAC should be on a cipher, not a raw message + * @id java/quantum/bad-mac-order-decrypt-to-mac + * @kind path-problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language +import ArtifactFlow::PathGraph + +from ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink +where + ArtifactFlow::flowPath(src, sink) and + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and + cipherOp.getAnOutputArtifact().asElement() = src.getNode().asExpr() + ) and + exists(Crypto::MacOperationNode macOp | + macOp.getAnInputArtifact().asElement() = sink.getNode().asExpr() + ) +select sink, src, sink, + "MAC order potentially wrong: observed decrypt output to MAC implying the MAC is on plaintext, and not a cipher." diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql new file mode 100644 index 00000000000..b0cce310120 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -0,0 +1,57 @@ +/** + * @name Bad MAC order: MAC on an encrypt plaintext + * @description MAC should be on a cipher, not a raw message + * @id java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac + * @kind problem + * @problem.severity error + * @precision high + * @tags quantum + * experimental + */ + +import java +import experimental.quantum.Language + +// NOTE: I must look for a common data flow node rather than +// starting from a message source, since the message source +// might not be known. +// TODO: can we approximate a message source better? +module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(source.asParameter()) } + + predicate isSink(DataFlow::Node sink) { + sink = any(Crypto::FlowAwareElement other).getInputNode() + } + + predicate isBarrierOut(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module CommonDataFlowNodeFlow = DataFlow::Global; + +from DataFlow::Node src, DataFlow::Node sink1, DataFlow::Node sink2 +where + CommonDataFlowNodeFlow::flow(src, sink1) and + CommonDataFlowNodeFlow::flow(src, sink2) and + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and + cipherOp.getAnInputArtifact().asElement() = sink1.asExpr() + ) and + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = sink2.asExpr()) +select src, "Message used for encryption operation at $@, also used for MAC at $@.", sink1, + sink1.toString(), sink2, sink2.toString() From c7be23e1fe11329cb86c25e129981480f754ffc7 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 09:22:04 -0400 Subject: [PATCH 141/965] Crypto: Remove all precision tags from all experimental queries. Precision is largely in flux while the models are being developed. --- .../src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql | 1 - .../quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql | 1 - .../src/experimental/quantum/Examples/InsecureIVorNonceSource.ql | 1 - java/ql/src/experimental/quantum/Examples/ReusedNonce.ql | 1 - java/ql/src/experimental/quantum/Examples/UnknownHash.ql | 1 - .../src/experimental/quantum/Examples/UnknownIVorNonceSource.ql | 1 - .../experimental/quantum/Examples/UnknownKDFIterationCount.ql | 1 - .../experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql | 1 - java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql | 1 - java/ql/src/experimental/quantum/Examples/WeakHash.ql | 1 - java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql | 1 - java/ql/src/experimental/quantum/Examples/WeakRSA.ql | 1 - java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql | 1 - 13 files changed, 13 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index b69dd3be2c9..77f5e81b366 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -4,7 +4,6 @@ * @id java/quantum/bad-mac-order-decrypt-to-mac * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index b0cce310120..fdc41dcc1a6 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -4,7 +4,6 @@ * @id java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql index 773f5a3c448..3bf6a05a113 100644 --- a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql @@ -8,7 +8,6 @@ * as the nonce/iv would be provided alongside the ciphertext). * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql index 736b28d2211..9b419ac2d41 100644 --- a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql +++ b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql @@ -4,7 +4,6 @@ * @id java/quantum/reused-nonce * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql index d9dce7a7aba..b9bb1905c11 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql @@ -4,7 +4,6 @@ * @id java/quantum/unknown-hash * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql index fdd04f7f217..33601ef49c3 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql @@ -7,7 +7,6 @@ * These cases are ignored. * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql index b0c41298eb2..80c0b2195eb 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql @@ -3,7 +3,6 @@ * @description Detects key derivation operations with an unknown iteration count. * @id java/quantum/unknown-kdf-iteration-count * @kind problem - * @precision medium * @problem.severity error * @tags quantum * experimental diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql index c72e73b84ad..f0b2cb70553 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -4,7 +4,6 @@ * @description An asymmetric key of known size is less than 2048 bits for any non-elliptic curve key operation. * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql index 189f58eebad..53e4d38216a 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql @@ -4,7 +4,6 @@ * @description An AES cipher is in use with an insecure block mode * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/WeakHash.ql b/java/ql/src/experimental/quantum/Examples/WeakHash.ql index ecbe9318c3d..573265705ba 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakHash.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakHash.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-hash * @kind problem * @problem.severity error - * @precision high * @tags external/cwe/cwe-327 * quantum * experimental diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql index 3bd93cf8e0d..772f2e7a5a3 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-kdf-key-size * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/WeakRSA.ql b/java/ql/src/experimental/quantum/Examples/WeakRSA.ql index f365b4d7e75..ee78b4b8ed3 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakRSA.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakRSA.ql @@ -4,7 +4,6 @@ * @description RSA with a key length <2048 found * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql index a7e03c62a53..2f67a4c9767 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-ciphers * @kind problem * @problem.severity error - * @precision high * @tags external/cwe/cwe-327 * quantum * experimental From 5544dfff6d4810f41c6a5c6ab634c3af21d55023 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:31:10 +0100 Subject: [PATCH 142/965] Update rust/ql/test/query-tests/security/CWE-089/mysql.rs Co-authored-by: Simon Friis Vindum --- rust/ql/test/query-tests/security/CWE-089/mysql.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 142dfc3aa9f..ccd739eb1ba 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -112,7 +112,7 @@ mod async_test fn main() { println!("test_mysql..."); - match (sync_test::test_mysql("")) { + match sync_test::test_mysql("") { Ok(_) => println!(" successful!"), Err(e) => println!(" error: {}", e), } From 28c139abfb82a16ca6e71d9869710f6de7d57132 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:41:11 +0100 Subject: [PATCH 143/965] Rust: Format the test. --- .../query-tests/security/CWE-089/mysql.rs | 122 ++++++++++++------ 1 file changed, 85 insertions(+), 37 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index ccd739eb1ba..323b8a2ab50 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -1,7 +1,6 @@ -mod sync_test -{ - use mysql::*; +mod sync_test { use mysql::prelude::*; + use mysql::*; pub fn test_mysql(url: &str) -> Result<(), Box> { // connect through a MySQL connection pool @@ -10,40 +9,67 @@ mod sync_test let mut conn2: Conn = pool.get_conn()?.unwrap(); // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ Source=remote10 + let mut remote_string = reqwest::blocking::get("http://example.com/") + .unwrap() + .text() + .unwrap_or(String::from("")); // $ Source=remote10 let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); - let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; + let unsafe_query = + String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) // direct execution (safe) - let _ : Vec = conn.query(safe_query.as_str())?; // $ sql-sink + let _: Vec = conn.query(safe_query.as_str())?; // $ sql-sink // direct execution (unsafe) - let _ : Vec = conn.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec> = conn.query_opt(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _: Vec = conn.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _: Vec> = conn.query_opt(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 conn.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ : i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ : Result= conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 + let _: i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 + let _: Result = conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold_opt(unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_fold_opt( + unsafe_query.as_str(), + 0, + |_: i64, _: Result| -> i64 { 0 }, + )?; // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_iter(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map_opt(unsafe_query.as_str(), |_: Result| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ : Vec = conn2.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _ = conn.query_map_opt( + unsafe_query.as_str(), + |_: Result| -> () {}, + )?; // $ sql-sink Alert[rust/sql-injection]=remote10 + let _: Vec = conn2.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 // prepared queries (safe) let stmt = conn.prep(prepared_query.as_str())?; // $ sql-sink - let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),))?; - let _ : Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; + let _: Vec = conn.exec(&stmt, (remote_string.as_str(),))?; + let _: Vec> = conn.exec_opt(&stmt, (remote_string.as_str(),))?; let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)])?; conn.exec_drop(&stmt, (&remote_string.as_str(),)); - let _ : i64 = conn.exec_first(&stmt, (remote_string.as_str(),))?.unwrap(); - let _ : Result = conn.exec_first_opt(&stmt, (remote_string.as_str(),))?.unwrap(); - let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 })?; - let _ = conn.exec_fold_opt(&stmt, (remote_string.as_str(),), 0, |_: i64, _: Result| -> i64 { 0 })?; + let _: i64 = conn.exec_first(&stmt, (remote_string.as_str(),))?.unwrap(); + let _: Result = conn + .exec_first_opt(&stmt, (remote_string.as_str(),))? + .unwrap(); + let _ = conn.exec_fold( + &stmt, + (remote_string.as_str(),), + 0, + |_: i64, _: i64| -> i64 { 0 }, + )?; + let _ = conn.exec_fold_opt( + &stmt, + (remote_string.as_str(),), + 0, + |_: i64, _: Result| -> i64 { 0 }, + )?; let _ = conn.exec_iter(&stmt, (remote_string.as_str(),))?; let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {})?; - let _ = conn.exec_map_opt(&stmt, (remote_string.as_str(),), |_: Result| -> () {})?; + let _ = conn.exec_map_opt( + &stmt, + (remote_string.as_str(),), + |_: Result| -> () {}, + )?; // prepared queries (unsafe use) let stmt2 = conn.prep(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 @@ -58,10 +84,9 @@ mod sync_test } } -mod async_test -{ - use mysql_async::*; +mod async_test { use mysql_async::prelude::*; + use mysql_async::*; pub async fn test_mysql_async(url: &str) -> Result<()> { // connect through a MySQL connection pool @@ -69,33 +94,56 @@ mod async_test let mut conn = pool.get_conn().await?; // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/").unwrap().text().unwrap_or(String::from("")); // $ Source=remote11 + let mut remote_string = reqwest::blocking::get("http://example.com/") + .unwrap() + .text() + .unwrap_or(String::from("")); // $ Source=remote11 let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); - let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; + let unsafe_query = + String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; let prepared_query = String::from("SELECT * FROM people WHERE firstname=?"); // (prepared arguments are safe) // direct execution (safe) - let _ : Vec = conn.query(safe_query.as_str()).await?; // $ sql-sink + let _: Vec = conn.query(safe_query.as_str()).await?; // $ sql-sink // direct execution (unsafe) - let _ : Vec = conn.query(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _: Vec = conn.query(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 conn.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote11 - let _ : Option = conn.query_first(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _: Option = conn.query_first(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn + .query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }) + .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 let _ = conn.query_iter(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_stream::(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 - let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {}).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn + .query_stream::(unsafe_query.as_str()) + .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + let _ = conn + .query_map(unsafe_query.as_str(), |_: i64| -> () {}) + .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 // prepared queries (safe) let stmt = conn.prep(prepared_query.as_str()).await?; // $ sql-sink - let _ : Vec = conn.exec(&stmt, (remote_string.as_str(),)).await?; - let _ = conn.exec_batch(&stmt, vec![(remote_string.as_str(),)]).await?; + let _: Vec = conn.exec(&stmt, (remote_string.as_str(),)).await?; + let _ = conn + .exec_batch(&stmt, vec![(remote_string.as_str(),)]) + .await?; conn.exec_drop(&stmt, (&remote_string.as_str(),)); - let _ : Option = conn.exec_first(&stmt, (remote_string.as_str(),)).await?; - let _ = conn.exec_fold(&stmt, (remote_string.as_str(),), 0, |_: i64, _: i64| -> i64 { 0 }).await?; + let _: Option = conn.exec_first(&stmt, (remote_string.as_str(),)).await?; + let _ = conn + .exec_fold( + &stmt, + (remote_string.as_str(),), + 0, + |_: i64, _: i64| -> i64 { 0 }, + ) + .await?; let _ = conn.exec_iter(&stmt, (remote_string.as_str(),)).await?; - let _ = conn.exec_stream::(&stmt, (remote_string.as_str(),)).await?; - let _ = conn.exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {}).await?; + let _ = conn + .exec_stream::(&stmt, (remote_string.as_str(),)) + .await?; + let _ = conn + .exec_map(&stmt, (remote_string.as_str(),), |_: i64| -> () {}) + .await?; // prepared queries (unsafe use) let stmt2 = conn.prep(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 From 48ca04bc40b0a26d969e95472d54a7e96046fd46 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:46:43 +0100 Subject: [PATCH 144/965] Rust: Repair test annotations following format and accept .expected changes. --- .../security/CWE-089/SqlInjection.expected | 704 +++++++++--------- .../query-tests/security/CWE-089/mysql.rs | 28 +- 2 files changed, 366 insertions(+), 366 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 90dcc06d282..b5d0af9aa0a 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -1,26 +1,26 @@ #select -| mysql.rs:22:33:22:37 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:22:33:22:37 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:23:55:23:63 | query_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:23:55:23:63 | query_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:24:14:24:23 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:24:14:24:23 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:25:28:25:38 | query_first | mysql.rs:13:33:13:54 | ...::get | mysql.rs:25:28:25:38 | query_first | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:26:49:26:63 | query_first_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:26:49:26:63 | query_first_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:27:22:27:31 | query_fold | mysql.rs:13:33:13:54 | ...::get | mysql.rs:27:22:27:31 | query_fold | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:28:22:28:35 | query_fold_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:28:22:28:35 | query_fold_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:29:22:29:31 | query_iter | mysql.rs:13:33:13:54 | ...::get | mysql.rs:29:22:29:31 | query_iter | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:30:22:30:30 | query_map | mysql.rs:13:33:13:54 | ...::get | mysql.rs:30:22:30:30 | query_map | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:31:22:31:34 | query_map_opt | mysql.rs:13:33:13:54 | ...::get | mysql.rs:31:22:31:34 | query_map_opt | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:32:34:32:38 | query | mysql.rs:13:33:13:54 | ...::get | mysql.rs:32:34:32:38 | query | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:49:26:49:29 | prep | mysql.rs:13:33:13:54 | ...::get | mysql.rs:49:26:49:29 | prep | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:54:15:54:24 | query_drop | mysql.rs:13:33:13:54 | ...::get | mysql.rs:54:15:54:24 | query_drop | This query depends on a $@. | mysql.rs:13:33:13:54 | ...::get | user-provided value | -| mysql.rs:81:33:81:37 | query | mysql.rs:72:33:72:54 | ...::get | mysql.rs:81:33:81:37 | query | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:82:14:82:23 | query_drop | mysql.rs:72:33:72:54 | ...::get | mysql.rs:82:14:82:23 | query_drop | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:83:36:83:46 | query_first | mysql.rs:72:33:72:54 | ...::get | mysql.rs:83:36:83:46 | query_first | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:84:22:84:31 | query_fold | mysql.rs:72:33:72:54 | ...::get | mysql.rs:84:22:84:31 | query_fold | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:85:22:85:31 | query_iter | mysql.rs:72:33:72:54 | ...::get | mysql.rs:85:22:85:31 | query_iter | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:86:22:86:33 | query_stream | mysql.rs:72:33:72:54 | ...::get | mysql.rs:86:22:86:33 | query_stream | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:87:22:87:30 | query_map | mysql.rs:72:33:72:54 | ...::get | mysql.rs:87:22:87:30 | query_map | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:101:26:101:29 | prep | mysql.rs:72:33:72:54 | ...::get | mysql.rs:101:26:101:29 | prep | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | -| mysql.rs:106:15:106:24 | query_drop | mysql.rs:72:33:72:54 | ...::get | mysql.rs:106:15:106:24 | query_drop | This query depends on a $@. | mysql.rs:72:33:72:54 | ...::get | user-provided value | +| mysql.rs:25:32:25:36 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:25:32:25:36 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:26:54:26:62 | query_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:26:54:26:62 | query_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:27:14:27:23 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:27:14:27:23 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:28:27:28:37 | query_first | mysql.rs:12:33:12:54 | ...::get | mysql.rs:28:27:28:37 | query_first | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:29:49:29:63 | query_first_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:29:49:29:63 | query_first_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:30:22:30:31 | query_fold | mysql.rs:12:33:12:54 | ...::get | mysql.rs:30:22:30:31 | query_fold | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:31:22:31:35 | query_fold_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:31:22:31:35 | query_fold_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:36:22:36:31 | query_iter | mysql.rs:12:33:12:54 | ...::get | mysql.rs:36:22:36:31 | query_iter | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:37:22:37:30 | query_map | mysql.rs:12:33:12:54 | ...::get | mysql.rs:37:22:37:30 | query_map | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:38:22:38:34 | query_map_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:38:22:38:34 | query_map_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:42:33:42:37 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:42:33:42:37 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:75:26:75:29 | prep | mysql.rs:12:33:12:54 | ...::get | mysql.rs:75:26:75:29 | prep | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:80:15:80:24 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:80:15:80:24 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:110:32:110:36 | query | mysql.rs:97:33:97:54 | ...::get | mysql.rs:110:32:110:36 | query | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:111:14:111:23 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:111:14:111:23 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:112:35:112:45 | query_first | mysql.rs:97:33:97:54 | ...::get | mysql.rs:112:35:112:45 | query_first | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:114:14:114:23 | query_fold | mysql.rs:97:33:97:54 | ...::get | mysql.rs:114:14:114:23 | query_fold | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:116:22:116:31 | query_iter | mysql.rs:97:33:97:54 | ...::get | mysql.rs:116:22:116:31 | query_iter | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:118:14:118:25 | query_stream | mysql.rs:97:33:97:54 | ...::get | mysql.rs:118:14:118:25 | query_stream | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -34,226 +34,226 @@ | sqlx.rs:153:17:153:27 | ...::query | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:153:17:153:27 | ...::query | This query depends on a $@. | sqlx.rs:100:25:100:46 | ...::get | user-provided value | | sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | edges -| mysql.rs:13:13:13:29 | mut remote_string | mysql.rs:15:86:15:98 | remote_string | provenance | | -| mysql.rs:13:33:13:54 | ...::get | mysql.rs:13:33:13:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | mysql.rs:13:33:13:86 | ... .unwrap() | provenance | MaD:30 | -| mysql.rs:13:33:13:86 | ... .unwrap() | mysql.rs:13:33:13:93 | ... .text() [Ok] | provenance | MaD:34 | -| mysql.rs:13:33:13:93 | ... .text() [Ok] | mysql.rs:13:33:13:121 | ... .unwrap_or(...) | provenance | MaD:31 | -| mysql.rs:13:33:13:121 | ... .unwrap_or(...) | mysql.rs:13:13:13:29 | mut remote_string | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:50 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:76 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:36 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:51 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:76 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:44 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:48 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:44 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:43 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:47 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:51 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:42 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:37 | unsafe_query | provenance | | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:15:13:15:24 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | -| mysql.rs:15:28:15:98 | ... + ... | mysql.rs:15:28:15:104 | ... + ... | provenance | MaD:27 | -| mysql.rs:15:28:15:104 | ... + ... | mysql.rs:15:13:15:24 | unsafe_query | provenance | | -| mysql.rs:15:85:15:98 | &remote_string [&ref] | mysql.rs:15:28:15:98 | ... + ... | provenance | MaD:26 | -| mysql.rs:15:86:15:98 | remote_string | mysql.rs:15:85:15:98 | &remote_string [&ref] | provenance | | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:22:39:22:50 | unsafe_query | mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | mysql.rs:22:33:22:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:23:65:23:76 | unsafe_query | mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:23:65:23:85 | unsafe_query.as_str() | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | mysql.rs:23:55:23:63 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:24:25:24:36 | unsafe_query | mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:24:25:24:45 | unsafe_query.as_str() | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | mysql.rs:24:14:24:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:25:40:25:51 | unsafe_query | mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:25:40:25:60 | unsafe_query.as_str() | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | mysql.rs:25:28:25:38 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:26:65:26:76 | unsafe_query | mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:26:65:26:85 | unsafe_query.as_str() | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | mysql.rs:26:49:26:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:27:33:27:44 | unsafe_query | mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:27:33:27:53 | unsafe_query.as_str() | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | mysql.rs:27:22:27:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:28:37:28:48 | unsafe_query | mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:28:37:28:57 | unsafe_query.as_str() | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | mysql.rs:28:22:28:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:29:33:29:44 | unsafe_query | mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | mysql.rs:29:22:29:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:30:32:30:43 | unsafe_query | mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:30:32:30:52 | unsafe_query.as_str() | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:31:36:31:47 | unsafe_query | mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:31:36:31:56 | unsafe_query.as_str() | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:32:40:32:51 | unsafe_query | mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | mysql.rs:32:34:32:38 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:49:31:49:42 | unsafe_query | mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:49:31:49:51 | unsafe_query.as_str() | mysql.rs:49:26:49:29 | prep | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | mysql.rs:49:26:49:29 | prep | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:54:26:54:37 | unsafe_query | mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:54:26:54:46 | unsafe_query.as_str() | mysql.rs:54:15:54:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | mysql.rs:54:15:54:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:72:13:72:29 | mut remote_string | mysql.rs:74:86:74:98 | remote_string | provenance | | -| mysql.rs:72:33:72:54 | ...::get | mysql.rs:72:33:72:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| mysql.rs:72:33:72:77 | ...::get(...) [Ok] | mysql.rs:72:33:72:86 | ... .unwrap() | provenance | MaD:30 | -| mysql.rs:72:33:72:86 | ... .unwrap() | mysql.rs:72:33:72:93 | ... .text() [Ok] | provenance | MaD:34 | -| mysql.rs:72:33:72:93 | ... .text() [Ok] | mysql.rs:72:33:72:121 | ... .unwrap_or(...) | provenance | MaD:31 | -| mysql.rs:72:33:72:121 | ... .unwrap_or(...) | mysql.rs:72:13:72:29 | mut remote_string | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:50 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:36 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:59 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:44 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:44 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:59 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:43 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:42 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:37 | unsafe_query | provenance | | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:28 | -| mysql.rs:74:13:74:24 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() | provenance | MaD:32 | -| mysql.rs:74:28:74:98 | ... + ... | mysql.rs:74:13:74:24 | unsafe_query | provenance | | -| mysql.rs:74:28:74:98 | ... + ... | mysql.rs:74:28:74:104 | ... + ... | provenance | MaD:27 | -| mysql.rs:74:28:74:104 | ... + ... | mysql.rs:74:13:74:24 | unsafe_query | provenance | | -| mysql.rs:74:85:74:98 | &remote_string [&ref] | mysql.rs:74:28:74:98 | ... + ... | provenance | MaD:26 | -| mysql.rs:74:86:74:98 | remote_string | mysql.rs:74:85:74:98 | &remote_string [&ref] | provenance | | -| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:81:39:81:50 | unsafe_query | mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:81:39:81:59 | unsafe_query.as_str() | mysql.rs:81:33:81:37 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | mysql.rs:81:33:81:37 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:82:25:82:36 | unsafe_query | mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:82:25:82:45 | unsafe_query.as_str() | mysql.rs:82:14:82:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | mysql.rs:82:14:82:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:83:48:83:59 | unsafe_query | mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:83:48:83:68 | unsafe_query.as_str() | mysql.rs:83:36:83:46 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | mysql.rs:83:36:83:46 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:84:33:84:44 | unsafe_query | mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:84:33:84:53 | unsafe_query.as_str() | mysql.rs:84:22:84:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | mysql.rs:84:22:84:31 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:85:33:85:44 | unsafe_query | mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:85:33:85:53 | unsafe_query.as_str() | mysql.rs:85:22:85:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | -| mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | mysql.rs:85:22:85:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | -| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:86:48:86:59 | unsafe_query | mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:86:48:86:68 | unsafe_query.as_str() | mysql.rs:86:22:86:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | mysql.rs:86:22:86:33 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:87:32:87:43 | unsafe_query | mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:87:32:87:52 | unsafe_query.as_str() | mysql.rs:87:22:87:30 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | mysql.rs:87:22:87:30 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:101:31:101:42 | unsafe_query | mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:101:31:101:51 | unsafe_query.as_str() | mysql.rs:101:26:101:29 | prep | provenance | MaD:18 Sink:MaD:18 | -| mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | mysql.rs:101:26:101:29 | prep | provenance | MaD:18 Sink:MaD:18 | -| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | -| mysql.rs:106:26:106:37 | unsafe_query | mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | -| mysql.rs:106:26:106:46 | unsafe_query.as_str() | mysql.rs:106:15:106:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | mysql.rs:106:15:106:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | +| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:30 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:31 | +| mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:50 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:42 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:27 | +| mysql.rs:18:13:18:89 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | +| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | +| mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | +| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | +| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | +| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | +| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | +| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | +| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | +| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | +| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | +| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | +| mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | +| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:30 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:31 | +| mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:35 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:42 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:28 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:32 | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:27 | +| mysql.rs:103:13:103:89 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | +| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | +| mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | +| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | +| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | +| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | +| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | +| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | +| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:28 | +| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:32 | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | @@ -447,116 +447,116 @@ models | 35 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | | 36 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes -| mysql.rs:13:13:13:29 | mut remote_string | semmle.label | mut remote_string | -| mysql.rs:13:33:13:54 | ...::get | semmle.label | ...::get | -| mysql.rs:13:33:13:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| mysql.rs:13:33:13:86 | ... .unwrap() | semmle.label | ... .unwrap() | -| mysql.rs:13:33:13:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | -| mysql.rs:13:33:13:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| mysql.rs:15:13:15:24 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:15:28:15:98 | ... + ... | semmle.label | ... + ... | -| mysql.rs:15:28:15:104 | ... + ... | semmle.label | ... + ... | -| mysql.rs:15:85:15:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | -| mysql.rs:15:86:15:98 | remote_string | semmle.label | remote_string | -| mysql.rs:22:33:22:37 | query | semmle.label | query | -| mysql.rs:22:39:22:50 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:23:55:23:63 | query_opt | semmle.label | query_opt | -| mysql.rs:23:65:23:76 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:23:65:23:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:23:65:23:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:24:14:24:23 | query_drop | semmle.label | query_drop | -| mysql.rs:24:25:24:36 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:24:25:24:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:24:25:24:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:25:28:25:38 | query_first | semmle.label | query_first | -| mysql.rs:25:40:25:51 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:25:40:25:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:25:40:25:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:26:49:26:63 | query_first_opt | semmle.label | query_first_opt | -| mysql.rs:26:65:26:76 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:26:65:26:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:26:65:26:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:27:22:27:31 | query_fold | semmle.label | query_fold | -| mysql.rs:27:33:27:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:27:33:27:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:27:33:27:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:28:22:28:35 | query_fold_opt | semmle.label | query_fold_opt | -| mysql.rs:28:37:28:48 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:28:37:28:57 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:28:37:28:57 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:29:22:29:31 | query_iter | semmle.label | query_iter | -| mysql.rs:29:33:29:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:30:22:30:30 | query_map | semmle.label | query_map | -| mysql.rs:30:32:30:43 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:30:32:30:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:30:32:30:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:31:22:31:34 | query_map_opt | semmle.label | query_map_opt | -| mysql.rs:31:36:31:47 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:31:36:31:56 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:31:36:31:56 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:32:34:32:38 | query | semmle.label | query | -| mysql.rs:32:40:32:51 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:49:26:49:29 | prep | semmle.label | prep | -| mysql.rs:49:31:49:42 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:49:31:49:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:49:31:49:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:54:15:54:24 | query_drop | semmle.label | query_drop | -| mysql.rs:54:26:54:37 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:54:26:54:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:54:26:54:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:72:13:72:29 | mut remote_string | semmle.label | mut remote_string | -| mysql.rs:72:33:72:54 | ...::get | semmle.label | ...::get | -| mysql.rs:72:33:72:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| mysql.rs:72:33:72:86 | ... .unwrap() | semmle.label | ... .unwrap() | -| mysql.rs:72:33:72:93 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | -| mysql.rs:72:33:72:121 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| mysql.rs:74:13:74:24 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:74:28:74:98 | ... + ... | semmle.label | ... + ... | -| mysql.rs:74:28:74:104 | ... + ... | semmle.label | ... + ... | -| mysql.rs:74:85:74:98 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | -| mysql.rs:74:86:74:98 | remote_string | semmle.label | remote_string | -| mysql.rs:81:33:81:37 | query | semmle.label | query | -| mysql.rs:81:39:81:50 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:81:39:81:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:81:39:81:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:82:14:82:23 | query_drop | semmle.label | query_drop | -| mysql.rs:82:25:82:36 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:82:25:82:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:82:25:82:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:83:36:83:46 | query_first | semmle.label | query_first | -| mysql.rs:83:48:83:59 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:83:48:83:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:83:48:83:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:84:22:84:31 | query_fold | semmle.label | query_fold | -| mysql.rs:84:33:84:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:84:33:84:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:84:33:84:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:85:22:85:31 | query_iter | semmle.label | query_iter | -| mysql.rs:85:33:85:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:85:33:85:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:85:33:85:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:86:22:86:33 | query_stream | semmle.label | query_stream | -| mysql.rs:86:48:86:59 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:86:48:86:68 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:86:48:86:68 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:87:22:87:30 | query_map | semmle.label | query_map | -| mysql.rs:87:32:87:43 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:87:32:87:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:87:32:87:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:101:26:101:29 | prep | semmle.label | prep | -| mysql.rs:101:31:101:42 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:101:31:101:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:101:31:101:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:106:15:106:24 | query_drop | semmle.label | query_drop | -| mysql.rs:106:26:106:37 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:106:26:106:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:106:26:106:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | +| mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | +| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| mysql.rs:12:33:13:21 | ... .unwrap() | semmle.label | ... .unwrap() | +| mysql.rs:12:33:14:19 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| mysql.rs:12:33:15:40 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| mysql.rs:17:13:17:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:18:13:18:83 | ... + ... | semmle.label | ... + ... | +| mysql.rs:18:13:18:89 | ... + ... | semmle.label | ... + ... | +| mysql.rs:18:70:18:83 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | +| mysql.rs:18:71:18:83 | remote_string | semmle.label | remote_string | +| mysql.rs:25:32:25:36 | query | semmle.label | query | +| mysql.rs:25:38:25:49 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:26:54:26:62 | query_opt | semmle.label | query_opt | +| mysql.rs:26:64:26:75 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:27:14:27:23 | query_drop | semmle.label | query_drop | +| mysql.rs:27:25:27:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:28:27:28:37 | query_first | semmle.label | query_first | +| mysql.rs:28:39:28:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:29:49:29:63 | query_first_opt | semmle.label | query_first_opt | +| mysql.rs:29:65:29:76 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:30:22:30:31 | query_fold | semmle.label | query_fold | +| mysql.rs:30:33:30:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:31:22:31:35 | query_fold_opt | semmle.label | query_fold_opt | +| mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter | +| mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:37:22:37:30 | query_map | semmle.label | query_map | +| mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:38:22:38:34 | query_map_opt | semmle.label | query_map_opt | +| mysql.rs:39:13:39:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:42:33:42:37 | query | semmle.label | query | +| mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:75:26:75:29 | prep | semmle.label | prep | +| mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop | +| mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:97:13:97:29 | mut remote_string | semmle.label | mut remote_string | +| mysql.rs:97:33:97:54 | ...::get | semmle.label | ...::get | +| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| mysql.rs:97:33:98:21 | ... .unwrap() | semmle.label | ... .unwrap() | +| mysql.rs:97:33:99:19 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| mysql.rs:97:33:100:40 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| mysql.rs:102:13:102:24 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:103:13:103:83 | ... + ... | semmle.label | ... + ... | +| mysql.rs:103:13:103:89 | ... + ... | semmle.label | ... + ... | +| mysql.rs:103:70:103:83 | &remote_string [&ref] | semmle.label | &remote_string [&ref] | +| mysql.rs:103:71:103:83 | remote_string | semmle.label | remote_string | +| mysql.rs:110:32:110:36 | query | semmle.label | query | +| mysql.rs:110:38:110:49 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:111:14:111:23 | query_drop | semmle.label | query_drop | +| mysql.rs:111:25:111:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:112:35:112:45 | query_first | semmle.label | query_first | +| mysql.rs:112:47:112:58 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:114:14:114:23 | query_fold | semmle.label | query_fold | +| mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter | +| mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream | +| mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:121:14:121:22 | query_map | semmle.label | query_map | +| mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:149:26:149:29 | prep | semmle.label | prep | +| mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop | +| mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-089/mysql.rs b/rust/ql/test/query-tests/security/CWE-089/mysql.rs index 323b8a2ab50..71ee265e8ba 100644 --- a/rust/ql/test/query-tests/security/CWE-089/mysql.rs +++ b/rust/ql/test/query-tests/security/CWE-089/mysql.rs @@ -9,10 +9,10 @@ mod sync_test { let mut conn2: Conn = pool.get_conn()?.unwrap(); // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/") + let mut remote_string = reqwest::blocking::get("http://example.com/") // $ Source=remote10 .unwrap() .text() - .unwrap_or(String::from("")); // $ Source=remote10 + .unwrap_or(String::from("")); let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; @@ -28,17 +28,17 @@ mod sync_test { let _: i64 = conn.query_first(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 let _: Result = conn.query_first_opt(unsafe_query.as_str())?.unwrap(); // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 })?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_fold_opt( + let _ = conn.query_fold_opt( // $ sql-sink Alert[rust/sql-injection]=remote10 unsafe_query.as_str(), 0, |_: i64, _: Result| -> i64 { 0 }, - )?; // $ sql-sink Alert[rust/sql-injection]=remote10 + )?; let _ = conn.query_iter(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 let _ = conn.query_map(unsafe_query.as_str(), |_: i64| -> () {})?; // $ sql-sink Alert[rust/sql-injection]=remote10 - let _ = conn.query_map_opt( + let _ = conn.query_map_opt( // $ sql-sink Alert[rust/sql-injection]=remote10 unsafe_query.as_str(), |_: Result| -> () {}, - )?; // $ sql-sink Alert[rust/sql-injection]=remote10 + )?; let _: Vec = conn2.query(unsafe_query.as_str())?; // $ sql-sink Alert[rust/sql-injection]=remote10 // prepared queries (safe) @@ -94,10 +94,10 @@ mod async_test { let mut conn = pool.get_conn().await?; // construct queries - let mut remote_string = reqwest::blocking::get("http://example.com/") + let mut remote_string = reqwest::blocking::get("http://example.com/") // $ Source=remote11 .unwrap() .text() - .unwrap_or(String::from("")); // $ Source=remote11 + .unwrap_or(String::from("")); let safe_query = String::from("SELECT * FROM people WHERE firstname='Alice'"); let unsafe_query = String::from("SELECT * FROM people WHERE firstname='") + &remote_string + "'"; @@ -111,15 +111,15 @@ mod async_test { conn.query_drop(unsafe_query.as_str()); // $ sql-sink Alert[rust/sql-injection]=remote11 let _: Option = conn.query_first(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 let _ = conn - .query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }) - .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + .query_fold(unsafe_query.as_str(), 0, |_: i64, _: i64| -> i64 { 0 }) // $ sql-sink Alert[rust/sql-injection]=remote11 + .await?; let _ = conn.query_iter(unsafe_query.as_str()).await?; // $ sql-sink Alert[rust/sql-injection]=remote11 let _ = conn - .query_stream::(unsafe_query.as_str()) - .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + .query_stream::(unsafe_query.as_str()) // $ sql-sink Alert[rust/sql-injection]=remote11 + .await?; let _ = conn - .query_map(unsafe_query.as_str(), |_: i64| -> () {}) - .await?; // $ sql-sink Alert[rust/sql-injection]=remote11 + .query_map(unsafe_query.as_str(), |_: i64| -> () {}) // $ sql-sink Alert[rust/sql-injection]=remote11 + .await?; // prepared queries (safe) let stmt = conn.prep(prepared_query.as_str()).await?; // $ sql-sink From 9dcc0a0d815da0ae02088eec3c90a110713bc6cc Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:13:52 +0100 Subject: [PATCH 145/965] Rust: Move rust/weak-sensitive-data-hashing to CWE-327. --- .../{CWE-328 => CWE-327}/WeakSensitiveDataHashing.qhelp | 0 .../security/{CWE-328 => CWE-327}/WeakSensitiveDataHashing.ql | 0 .../{CWE-328 => CWE-327}/WeakSensitiveDataHashingBad.rs | 0 .../{CWE-328 => CWE-327}/WeakSensitiveDataHashingGood.rs | 0 .../query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) rename rust/ql/src/queries/security/{CWE-328 => CWE-327}/WeakSensitiveDataHashing.qhelp (100%) rename rust/ql/src/queries/security/{CWE-328 => CWE-327}/WeakSensitiveDataHashing.ql (100%) rename rust/ql/src/queries/security/{CWE-328 => CWE-327}/WeakSensitiveDataHashingBad.rs (100%) rename rust/ql/src/queries/security/{CWE-328 => CWE-327}/WeakSensitiveDataHashingGood.rs (100%) diff --git a/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.qhelp b/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.qhelp similarity index 100% rename from rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.qhelp rename to rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.qhelp diff --git a/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql b/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql similarity index 100% rename from rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql rename to rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql diff --git a/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashingBad.rs b/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashingBad.rs similarity index 100% rename from rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashingBad.rs rename to rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashingBad.rs diff --git a/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashingGood.rs b/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashingGood.rs similarity index 100% rename from rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashingGood.rs rename to rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashingGood.rs diff --git a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref index fad3080280b..bdfc62800df 100644 --- a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref +++ b/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref @@ -1,4 +1,4 @@ -query: queries/security/CWE-328/WeakSensitiveDataHashing.ql +query: queries/security/CWE-327/WeakSensitiveDataHashing.ql postprocess: - utils/test/PrettyPrintModels.ql - utils/test/InlineExpectationsTestQuery.ql From c7f0e41660b1257ae044425a80fafadae36cc986 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:21:01 +0100 Subject: [PATCH 146/965] Rust: Move the existing CWE-327 test. --- .../{ => BrokenCryptoAlgorithm}/BrokenCryptoAlgorithm.expected | 0 .../{ => BrokenCryptoAlgorithm}/BrokenCryptoAlgorithm.qlref | 0 .../CONSISTENCY/PathResolutionConsistency.expected | 0 .../security/CWE-327/{ => BrokenCryptoAlgorithm}/Cargo.lock | 0 .../security/CWE-327/{ => BrokenCryptoAlgorithm}/options.yml | 0 .../security/CWE-327/{ => BrokenCryptoAlgorithm}/test_cipher.rs | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/BrokenCryptoAlgorithm.expected (100%) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/BrokenCryptoAlgorithm.qlref (100%) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/CONSISTENCY/PathResolutionConsistency.expected (100%) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/Cargo.lock (100%) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/options.yml (100%) rename rust/ql/test/query-tests/security/CWE-327/{ => BrokenCryptoAlgorithm}/test_cipher.rs (100%) diff --git a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm.expected b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm.expected rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.expected diff --git a/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm.qlref b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.qlref similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm.qlref rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/BrokenCryptoAlgorithm.qlref diff --git a/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/CONSISTENCY/PathResolutionConsistency.expected similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/test/query-tests/security/CWE-327/Cargo.lock b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/Cargo.lock similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/Cargo.lock rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/Cargo.lock diff --git a/rust/ql/test/query-tests/security/CWE-327/options.yml b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/options.yml similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/options.yml rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/options.yml diff --git a/rust/ql/test/query-tests/security/CWE-327/test_cipher.rs b/rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs similarity index 100% rename from rust/ql/test/query-tests/security/CWE-327/test_cipher.rs rename to rust/ql/test/query-tests/security/CWE-327/BrokenCryptoAlgorithm/test_cipher.rs From c68112fb603f01508aeea2cd4eaa0964eb65a38e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:24:06 +0100 Subject: [PATCH 147/965] Rust: Move the CWE-328 test. --- .../{CWE-328 => CWE-327/WeakSensitiveDataHashing}/Cargo.lock | 0 .../WeakSensitiveDataHashing}/WeakSensitiveDataHashing.expected | 0 .../WeakSensitiveDataHashing}/WeakSensitiveDataHashing.qlref | 0 .../{CWE-328 => CWE-327/WeakSensitiveDataHashing}/options.yml | 0 .../{CWE-328 => CWE-327/WeakSensitiveDataHashing}/test.rs | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename rust/ql/test/query-tests/security/{CWE-328 => CWE-327/WeakSensitiveDataHashing}/Cargo.lock (100%) rename rust/ql/test/query-tests/security/{CWE-328 => CWE-327/WeakSensitiveDataHashing}/WeakSensitiveDataHashing.expected (100%) rename rust/ql/test/query-tests/security/{CWE-328 => CWE-327/WeakSensitiveDataHashing}/WeakSensitiveDataHashing.qlref (100%) rename rust/ql/test/query-tests/security/{CWE-328 => CWE-327/WeakSensitiveDataHashing}/options.yml (100%) rename rust/ql/test/query-tests/security/{CWE-328 => CWE-327/WeakSensitiveDataHashing}/test.rs (100%) diff --git a/rust/ql/test/query-tests/security/CWE-328/Cargo.lock b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/Cargo.lock similarity index 100% rename from rust/ql/test/query-tests/security/CWE-328/Cargo.lock rename to rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/Cargo.lock diff --git a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected similarity index 100% rename from rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.expected rename to rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected diff --git a/rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.qlref similarity index 100% rename from rust/ql/test/query-tests/security/CWE-328/WeakSensitiveDataHashing.qlref rename to rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/WeakSensitiveDataHashing.qlref diff --git a/rust/ql/test/query-tests/security/CWE-328/options.yml b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/options.yml similarity index 100% rename from rust/ql/test/query-tests/security/CWE-328/options.yml rename to rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/options.yml diff --git a/rust/ql/test/query-tests/security/CWE-328/test.rs b/rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/test.rs similarity index 100% rename from rust/ql/test/query-tests/security/CWE-328/test.rs rename to rust/ql/test/query-tests/security/CWE-327/WeakSensitiveDataHashing/test.rs From 631e482fd6cf1d887cf383e10605806247b95c3d Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 11:01:49 -0400 Subject: [PATCH 148/965] Crytpo: when key encapsulation or cipher operations have multiple modes at a node, the node name must reflect that it may be any mode. --- .../codeql/quantum/experimental/Model.qll | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index a2bbc0e59fb..70bcafa502e 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -1993,9 +1993,20 @@ module CryptographyBase Input> { string nodeName; CipherOperationNode() { - this.getKeyOperationSubtype() = TEncryptMode() and nodeName = "EncryptOperation" - or - this.getKeyOperationSubtype() = TDecryptMode() and nodeName = "DecryptOperation" + ( + if + this.getKeyOperationSubtype() = TEncryptMode() and + this.getKeyOperationSubtype() = TDecryptMode() + then nodeName = "CipherOperation" + else ( + if this.getKeyOperationSubtype() = TEncryptMode() + then nodeName = "EncryptOperation" + else ( + this.getKeyOperationSubtype() = TDecryptMode() and + nodeName = "DecryptOperation" + ) + ) + ) } override string getInternalType() { result = nodeName } @@ -2005,9 +2016,20 @@ module CryptographyBase Input> { string nodeName; KeyEncapsulationOperationNode() { - this.getKeyOperationSubtype() = TWrapMode() and nodeName = "WrapOperation" - or - this.getKeyOperationSubtype() = TUnwrapMode() and nodeName = "UnwrapOperation" + ( + if + this.getKeyOperationSubtype() = TWrapMode() and + this.getKeyOperationSubtype() = TUnwrapMode() + then nodeName = "KeyEncapsulationOperation" + else ( + if this.getKeyOperationSubtype() = TWrapMode() + then nodeName = "WrapOperation" + else ( + this.getKeyOperationSubtype() = TUnwrapMode() and + nodeName = "UnwrapOperation" + ) + ) + ) } override string getInternalType() { result = nodeName } From f4a6efa9e0f2b536eed844666b9ca9cfabecf3d3 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:02:42 +0100 Subject: [PATCH 149/965] Rust: Rename stdlib model files to be consistent with others. --- .../frameworks/stdlib/{lang-alloc.model.yml => alloc.model.yml} | 0 .../frameworks/stdlib/{lang-core.model.yml => core.model.yml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename rust/ql/lib/codeql/rust/frameworks/stdlib/{lang-alloc.model.yml => alloc.model.yml} (100%) rename rust/ql/lib/codeql/rust/frameworks/stdlib/{lang-core.model.yml => core.model.yml} (100%) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml rename to rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml rename to rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml From eb1555c45eddf93b75a88f85dd98d6ec2fda7bb8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:08:08 +0100 Subject: [PATCH 150/965] Rust: Update the suite list .expected files. --- .../query-suite/rust-code-scanning.qls.expected | 2 +- .../query-suite/rust-security-and-quality.qls.expected | 2 +- .../query-suite/rust-security-extended.qls.expected | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected index 429ba192224..70e1bcb1064 100644 --- a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected @@ -16,7 +16,7 @@ ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql -ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql +ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index 483cb52881d..596fdef3b20 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -17,7 +17,7 @@ ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql -ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql +ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index f09d9280ac9..102c63e7942 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -17,7 +17,7 @@ ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql ql/rust/ql/src/queries/security/CWE-319/UseOfHttp.ql ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql -ql/rust/ql/src/queries/security/CWE-328/WeakSensitiveDataHashing.ql +ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql From 072eca233d2d589e6721554ad21637e43eee8e28 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:50:47 +0100 Subject: [PATCH 151/965] Rust: Update consistency check .expected. --- .../PathResolutionConsistency.expected | 126 +++++++++--------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index bd49309c55a..b59acd0ca8e 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -1,57 +1,57 @@ multipleCallTargets -| mysql.rs:13:105:13:120 | ...::from(...) | -| mysql.rs:14:26:14:85 | ...::from(...) | -| mysql.rs:15:28:15:81 | ...::from(...) | -| mysql.rs:16:30:16:83 | ...::from(...) | -| mysql.rs:19:39:19:57 | safe_query.as_str() | -| mysql.rs:22:39:22:59 | unsafe_query.as_str() | -| mysql.rs:23:65:23:85 | unsafe_query.as_str() | -| mysql.rs:24:25:24:45 | unsafe_query.as_str() | -| mysql.rs:25:40:25:60 | unsafe_query.as_str() | -| mysql.rs:26:65:26:85 | unsafe_query.as_str() | -| mysql.rs:27:33:27:53 | unsafe_query.as_str() | -| mysql.rs:28:37:28:57 | unsafe_query.as_str() | -| mysql.rs:29:33:29:53 | unsafe_query.as_str() | -| mysql.rs:30:32:30:52 | unsafe_query.as_str() | -| mysql.rs:31:36:31:56 | unsafe_query.as_str() | -| mysql.rs:32:40:32:60 | unsafe_query.as_str() | -| mysql.rs:35:30:35:52 | prepared_query.as_str() | -| mysql.rs:36:46:36:67 | remote_string.as_str() | -| mysql.rs:37:72:37:93 | remote_string.as_str() | -| mysql.rs:38:46:38:67 | remote_string.as_str() | -| mysql.rs:39:33:39:54 | remote_string.as_str() | -| mysql.rs:40:47:40:68 | remote_string.as_str() | -| mysql.rs:41:73:41:94 | remote_string.as_str() | -| mysql.rs:42:40:42:61 | remote_string.as_str() | -| mysql.rs:43:44:43:65 | remote_string.as_str() | -| mysql.rs:44:40:44:61 | remote_string.as_str() | -| mysql.rs:45:39:45:60 | remote_string.as_str() | -| mysql.rs:46:43:46:64 | remote_string.as_str() | -| mysql.rs:49:31:49:51 | unsafe_query.as_str() | -| mysql.rs:54:26:54:46 | unsafe_query.as_str() | -| mysql.rs:72:105:72:120 | ...::from(...) | -| mysql.rs:73:26:73:85 | ...::from(...) | -| mysql.rs:74:28:74:81 | ...::from(...) | -| mysql.rs:75:30:75:83 | ...::from(...) | -| mysql.rs:78:39:78:57 | safe_query.as_str() | -| mysql.rs:81:39:81:59 | unsafe_query.as_str() | -| mysql.rs:82:25:82:45 | unsafe_query.as_str() | -| mysql.rs:83:48:83:68 | unsafe_query.as_str() | -| mysql.rs:84:33:84:53 | unsafe_query.as_str() | -| mysql.rs:85:33:85:53 | unsafe_query.as_str() | -| mysql.rs:86:48:86:68 | unsafe_query.as_str() | -| mysql.rs:87:32:87:52 | unsafe_query.as_str() | -| mysql.rs:90:30:90:52 | prepared_query.as_str() | -| mysql.rs:91:46:91:67 | remote_string.as_str() | -| mysql.rs:92:46:92:67 | remote_string.as_str() | -| mysql.rs:93:33:93:54 | remote_string.as_str() | -| mysql.rs:94:55:94:76 | remote_string.as_str() | -| mysql.rs:95:40:95:61 | remote_string.as_str() | -| mysql.rs:96:40:96:61 | remote_string.as_str() | -| mysql.rs:97:70:97:91 | remote_string.as_str() | -| mysql.rs:98:39:98:60 | remote_string.as_str() | -| mysql.rs:101:31:101:51 | unsafe_query.as_str() | -| mysql.rs:106:26:106:46 | unsafe_query.as_str() | +| mysql.rs:15:24:15:39 | ...::from(...) | +| mysql.rs:16:26:16:85 | ...::from(...) | +| mysql.rs:18:13:18:66 | ...::from(...) | +| mysql.rs:19:30:19:83 | ...::from(...) | +| mysql.rs:22:38:22:56 | safe_query.as_str() | +| mysql.rs:25:38:25:58 | unsafe_query.as_str() | +| mysql.rs:26:64:26:84 | unsafe_query.as_str() | +| mysql.rs:27:25:27:45 | unsafe_query.as_str() | +| mysql.rs:28:39:28:59 | unsafe_query.as_str() | +| mysql.rs:29:65:29:85 | unsafe_query.as_str() | +| mysql.rs:30:33:30:53 | unsafe_query.as_str() | +| mysql.rs:32:13:32:33 | unsafe_query.as_str() | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | +| mysql.rs:37:32:37:52 | unsafe_query.as_str() | +| mysql.rs:39:13:39:33 | unsafe_query.as_str() | +| mysql.rs:42:39:42:59 | unsafe_query.as_str() | +| mysql.rs:45:30:45:52 | prepared_query.as_str() | +| mysql.rs:46:45:46:66 | remote_string.as_str() | +| mysql.rs:47:71:47:92 | remote_string.as_str() | +| mysql.rs:48:46:48:67 | remote_string.as_str() | +| mysql.rs:49:33:49:54 | remote_string.as_str() | +| mysql.rs:50:46:50:67 | remote_string.as_str() | +| mysql.rs:52:37:52:58 | remote_string.as_str() | +| mysql.rs:56:14:56:35 | remote_string.as_str() | +| mysql.rs:62:14:62:35 | remote_string.as_str() | +| mysql.rs:66:40:66:61 | remote_string.as_str() | +| mysql.rs:67:39:67:60 | remote_string.as_str() | +| mysql.rs:70:14:70:35 | remote_string.as_str() | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | +| mysql.rs:80:26:80:46 | unsafe_query.as_str() | +| mysql.rs:100:24:100:39 | ...::from(...) | +| mysql.rs:101:26:101:85 | ...::from(...) | +| mysql.rs:103:13:103:66 | ...::from(...) | +| mysql.rs:104:30:104:83 | ...::from(...) | +| mysql.rs:107:38:107:56 | safe_query.as_str() | +| mysql.rs:110:38:110:58 | unsafe_query.as_str() | +| mysql.rs:111:25:111:45 | unsafe_query.as_str() | +| mysql.rs:112:47:112:67 | unsafe_query.as_str() | +| mysql.rs:114:25:114:45 | unsafe_query.as_str() | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | +| mysql.rs:118:40:118:60 | unsafe_query.as_str() | +| mysql.rs:121:24:121:44 | unsafe_query.as_str() | +| mysql.rs:125:30:125:52 | prepared_query.as_str() | +| mysql.rs:126:45:126:66 | remote_string.as_str() | +| mysql.rs:128:38:128:59 | remote_string.as_str() | +| mysql.rs:130:33:130:54 | remote_string.as_str() | +| mysql.rs:131:54:131:75 | remote_string.as_str() | +| mysql.rs:135:18:135:39 | remote_string.as_str() | +| mysql.rs:140:40:140:61 | remote_string.as_str() | +| mysql.rs:142:62:142:83 | remote_string.as_str() | +| mysql.rs:145:31:145:52 | remote_string.as_str() | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | +| mysql.rs:154:26:154:46 | unsafe_query.as_str() | | sqlx.rs:46:24:46:44 | ...::from(...) | | sqlx.rs:47:56:47:76 | ...::from(...) | | sqlx.rs:48:97:48:117 | ...::from(...) | @@ -119,13 +119,13 @@ multipleCallTargets | sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | | sqlx.rs:202:57:202:85 | ...::from(...) | multiplePathResolutions -| mysql.rs:6:37:6:74 | Result::<...> | -| mysql.rs:23:21:23:45 | Result::<...> | -| mysql.rs:26:17:26:41 | Result::<...> | -| mysql.rs:28:75:28:99 | Result::<...> | -| mysql.rs:31:63:31:87 | Result::<...> | -| mysql.rs:37:21:37:45 | Result::<...> | -| mysql.rs:41:17:41:41 | Result::<...> | -| mysql.rs:43:85:43:109 | Result::<...> | -| mysql.rs:46:73:46:97 | Result::<...> | -| mysql.rs:66:49:66:58 | Result::<...> | +| mysql.rs:5:37:5:74 | Result::<...> | +| mysql.rs:26:20:26:44 | Result::<...> | +| mysql.rs:29:16:29:40 | Result::<...> | +| mysql.rs:34:25:34:49 | Result::<...> | +| mysql.rs:40:17:40:41 | Result::<...> | +| mysql.rs:47:20:47:44 | Result::<...> | +| mysql.rs:51:16:51:40 | Result::<...> | +| mysql.rs:64:25:64:49 | Result::<...> | +| mysql.rs:71:17:71:41 | Result::<...> | +| mysql.rs:91:49:91:58 | Result::<...> | From ea6c7cfba0ff35799abb780634720df081f4d31e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:14:33 +0100 Subject: [PATCH 152/965] Rust: Generalize stdlib 'a as b' models. --- .../rust/frameworks/stdlib/io.model.yml | 14 +- .../frameworks/stdlib/lang-alloc.model.yml | 23 +- .../frameworks/stdlib/lang-core.model.yml | 12 +- .../dataflow/sources/InlineFlow.expected | 437 +++++++++--------- .../strings/inline-taint-flow.expected | 53 ++- .../library-tests/dataflow/strings/main.rs | 2 +- 6 files changed, 256 insertions(+), 285 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml index 41f1348879f..252014b9490 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -9,23 +9,11 @@ extensions: extensible: summaryModel data: - ["::new", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["<_ as std::io::BufRead>::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::buffer", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::Read>::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::BufRead>::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - ["<_ as std::io::BufRead>::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml index 1f14e222fd2..44397b156e4 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml @@ -14,19 +14,11 @@ extensions: - ["alloc::alloc::alloc_zeroed", "Argument[0]", "alloc-layout", "manual"] - ["alloc::alloc::realloc", "Argument[2]", "alloc-size", "manual"] - ["<_ as core::alloc::global::GlobalAlloc>::alloc", "Argument[0]", "alloc-layout", "manual"] - - ["::alloc", "Argument[0]", "alloc-layout", "manual"] - ["<_ as core::alloc::global::GlobalAlloc>::alloc_zeroed", "Argument[0]", "alloc-layout", "manual"] - - ["::alloc_zeroed", "Argument[0]", "alloc-layout", "manual"] - - ["::allocate", "Argument[0]", "alloc-layout", "manual"] - - ["::allocate_zeroed", "Argument[0]", "alloc-layout", "manual"] - - ["::grow", "Argument[2]", "alloc-layout", "manual"] - - ["::grow_zeroed", "Argument[2]", "alloc-layout", "manual"] - - ["::alloc", "Argument[0]", "alloc-layout", "manual"] - - ["::alloc_zeroed", "Argument[0]", "alloc-layout", "manual"] - - ["::allocate", "Argument[0]", "alloc-layout", "manual"] - - ["::allocate_zeroed", "Argument[0]", "alloc-layout", "manual"] - - ["::grow", "Argument[2]", "alloc-layout", "manual"] - - ["::grow_zeroed", "Argument[2]", "alloc-layout", "manual"] + - ["<_ as core::alloc::Allocator>::allocate", "Argument[0]", "alloc-layout", "manual"] + - ["<_ as core::alloc::Allocator>::allocate_zeroed", "Argument[0]", "alloc-layout", "manual"] + - ["<_ as core::alloc::Allocator>::grow", "Argument[2]", "alloc-layout", "manual"] + - ["<_ as core::alloc::Allocator>::grow_zeroed", "Argument[2]", "alloc-layout", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel @@ -42,11 +34,10 @@ extensions: - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["::add", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index b0b63fa0201..131d13e4e96 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -9,13 +9,11 @@ extensions: - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] - - ["::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - - ["::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] # From - ["<_ as core::convert::From>::from", "Argument[0]", "ReturnValue", "taint", "manual"] # Iterator - ["::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - - ["::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["<_ as value_trait::array::Array>::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] @@ -23,10 +21,10 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - - ["::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - - ["::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] # Layout - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 8edaf9527f8..769de6fa8c3 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -51,89 +51,81 @@ models | 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | | 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 53 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 54 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 55 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 56 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 57 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 58 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 59 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 60 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 61 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 62 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 63 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 65 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 66 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 70 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 79 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 80 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 81 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 82 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 83 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 84 | Summary: ::new; Argument[0]; ReturnValue; value | -| 85 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 86 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 87 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 88 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 89 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 90 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 91 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 92 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 93 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 94 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 95 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 98 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 53 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 54 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 55 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 56 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 57 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 58 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 59 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 60 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 61 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 62 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 64 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 66 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 80 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 81 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 82 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 83 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 84 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 85 | Summary: ::new; Argument[0]; ReturnValue; value | +| 86 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 87 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 88 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 89 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 90 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 91 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 92 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 93 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 94 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 95 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 96 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 97 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 98 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 99 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 100 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 101 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 102 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 103 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 104 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 105 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 106 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 107 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 108 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 109 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 110 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 111 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 112 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 113 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 114 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 115 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 116 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 118 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 119 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 120 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 121 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 122 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 123 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 124 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 125 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 100 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 101 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 102 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 103 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 104 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 106 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 107 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 108 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 109 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 110 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 111 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 112 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 113 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 114 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 115 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 116 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 117 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:26 | | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:27 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | | test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:85 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:86 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | | test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:27 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:82 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:83 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | @@ -151,19 +143,19 @@ edges | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | | test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:21 | | test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:82 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:83 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | | test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:22 | | test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:82 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:83 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | | test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:21 | | test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:82 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:89 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:86 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:83 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:90 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:87 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | | test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:21 | @@ -173,45 +165,45 @@ edges | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | | test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:85 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:86 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | | test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:24 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:85 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:86 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | | test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:25 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:81 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:82 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | | test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:96 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:97 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | | test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:86 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:96 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:86 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:97 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:87 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | | test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:86 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:97 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:86 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:98 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:87 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | | test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:86 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:95 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:86 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:87 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:96 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:87 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | | test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:94 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:95 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | @@ -219,19 +211,19 @@ edges | test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:92 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:93 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:93 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:93 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | | test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:82 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:83 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -251,119 +243,114 @@ edges | test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | | test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:109 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:108 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:105 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:61 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | | test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:112 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:63 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | | test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:114 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:113 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:107 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | | test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:115 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:116 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:108 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | | test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:111 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:110 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | | test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:57 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:58 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:105 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:53 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | | test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:107 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:104 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:106 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:103 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | | test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:107 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:104 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:54 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:55 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | | test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:107 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:104 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:56 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | | test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:107 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:104 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:104 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:104 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:56 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:102 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:102 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:57 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | | test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:107 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:82 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:86 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:104 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:83 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:87 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:86 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:87 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:53 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:54 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | | test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:107 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:104 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:71 | | test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:76 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:77 | | test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:78 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:74 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:73 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:75 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:79 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:75 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:74 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:76 | | test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | @@ -382,67 +369,67 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:65 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:66 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | | test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:120 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:112 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:119 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:111 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | | test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:120 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:112 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:67 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:68 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | | test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:120 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:112 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:68 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:69 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | | test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:120 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:112 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:122 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:122 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:69 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:70 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | | test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:120 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:112 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:82 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:83 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:66 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:67 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | | test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:120 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:121 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:121 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:112 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:113 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:113 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:82 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:83 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | @@ -475,7 +462,7 @@ edges | test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:9 MaD:9 | | test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:40 | | test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:40 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:118 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:110 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:40 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | @@ -515,16 +502,13 @@ edges | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | | test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:98 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:101 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:100 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:103 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:102 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:57 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:100 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:101 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:58 | | test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | @@ -545,9 +529,8 @@ edges | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | | test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:98 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:86 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:87 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | | test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | @@ -555,9 +538,8 @@ edges | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | | test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:98 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:86 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:87 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | | test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | @@ -565,16 +547,15 @@ edges | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | | test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:98 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:86 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:87 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | | test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:59 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | | test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | @@ -582,30 +563,30 @@ edges | test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:58 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:59 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:64 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:65 | | test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:76 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:77 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:78 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:74 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:73 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:75 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:79 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:75 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:74 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:76 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | @@ -641,7 +622,7 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:71 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | @@ -677,8 +658,8 @@ edges | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:60 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:117 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:109 | | test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:12 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | @@ -690,17 +671,17 @@ edges | test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:13 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:54 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:64 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:55 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:65 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:107 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:104 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:123 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:70 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:124 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:125 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:115 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:71 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:116 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:117 | | test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:18 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | @@ -738,14 +719,14 @@ edges | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:90 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:91 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:84 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:84 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:85 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | @@ -783,7 +764,7 @@ edges | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:92 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | @@ -791,8 +772,8 @@ edges | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:84 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:84 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:85 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -807,8 +788,8 @@ edges | test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:84 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:84 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:85 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -824,8 +805,8 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:84 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:84 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:85 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | @@ -846,8 +827,8 @@ edges | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:83 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:84 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:84 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:85 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -876,26 +857,26 @@ edges | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:80 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:79 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index c6ebb0403a9..2b1476dd0fc 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -1,12 +1,14 @@ models -| 1 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | -| 2 | Summary: ::from; Argument[0].Reference; ReturnValue; value | -| 3 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 4 | Summary: ::add; Argument[self]; ReturnValue; value | -| 5 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 6 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 7 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 8 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self]; ReturnValue; taint | +| 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | +| 3 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 4 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | +| 5 | Summary: ::from; Argument[0].Reference; ReturnValue; value | +| 6 | Summary: ::add; Argument[self]; ReturnValue; value | +| 7 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 8 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 9 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 10 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | edges | main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | s | provenance | | @@ -18,6 +20,7 @@ edges | main.rs:32:14:32:23 | source(...) | main.rs:32:9:32:10 | s1 | provenance | | | main.rs:35:9:35:10 | s4 | main.rs:38:10:38:11 | s4 | provenance | | | main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:4 | +| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:6 | | main.rs:35:14:35:20 | ... + ... | main.rs:35:9:35:10 | s4 | provenance | | | main.rs:43:9:43:10 | s1 | main.rs:46:34:46:35 | s1 | provenance | | | main.rs:43:14:43:23 | source(...) | main.rs:43:9:43:10 | s1 | provenance | | @@ -27,39 +30,43 @@ edges | main.rs:51:14:51:29 | source_slice(...) | main.rs:51:9:51:10 | s1 | provenance | | | main.rs:52:9:52:10 | s2 | main.rs:53:10:53:11 | s2 | provenance | | | main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | | -| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:1 | | main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:2 | +| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:5 | +| main.rs:57:9:57:10 | s1 | main.rs:58:14:58:27 | s1.to_string() | provenance | MaD:1 | +| main.rs:57:14:57:29 | source_slice(...) | main.rs:57:9:57:10 | s1 | provenance | | +| main.rs:58:9:58:10 | s2 | main.rs:59:10:59:11 | s2 | provenance | | +| main.rs:58:14:58:27 | s1.to_string() | main.rs:58:9:58:10 | s2 | provenance | | | main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | | -| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:5 | -| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:6 | +| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 | +| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:8 | | main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | | -| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:5 | -| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:6 | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:8 | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | | | main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | | | main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | | | main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | | -| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:7 | +| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:9 | | main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | | | main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | | -| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:7 | +| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:9 | | main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | | | main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | | | main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | | | main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | | -| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:7 | +| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:9 | | main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | | | main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | | | main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | | | main.rs:86:18:86:25 | ...::format(...) | main.rs:86:18:86:25 | { ... } | provenance | | | main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | | -| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:7 | -| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:8 | +| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:9 | +| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:10 | | main.rs:87:18:87:32 | ...::format(...) | main.rs:87:18:87:32 | { ... } | provenance | | | main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | | -| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:7 | -| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:8 | +| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:9 | +| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:10 | nodes | main.rs:26:9:26:9 | s | semmle.label | s | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | @@ -84,6 +91,11 @@ nodes | main.rs:52:14:52:29 | ...::from(...) | semmle.label | ...::from(...) | | main.rs:52:27:52:28 | s1 | semmle.label | s1 | | main.rs:53:10:53:11 | s2 | semmle.label | s2 | +| main.rs:57:9:57:10 | s1 | semmle.label | s1 | +| main.rs:57:14:57:29 | source_slice(...) | semmle.label | source_slice(...) | +| main.rs:58:9:58:10 | s2 | semmle.label | s2 | +| main.rs:58:14:58:27 | s1.to_string() | semmle.label | s1.to_string() | +| main.rs:59:10:59:11 | s2 | semmle.label | s2 | | main.rs:63:9:63:9 | s | semmle.label | s | | main.rs:63:13:63:22 | source(...) | semmle.label | source(...) | | main.rs:64:16:64:16 | s | semmle.label | s | @@ -123,6 +135,7 @@ testFailures | main.rs:38:10:38:11 | s4 | main.rs:32:14:32:23 | source(...) | main.rs:38:10:38:11 | s4 | $@ | main.rs:32:14:32:23 | source(...) | source(...) | | main.rs:46:10:46:35 | ... + ... | main.rs:43:14:43:23 | source(...) | main.rs:46:10:46:35 | ... + ... | $@ | main.rs:43:14:43:23 | source(...) | source(...) | | main.rs:53:10:53:11 | s2 | main.rs:51:14:51:29 | source_slice(...) | main.rs:53:10:53:11 | s2 | $@ | main.rs:51:14:51:29 | source_slice(...) | source_slice(...) | +| main.rs:59:10:59:11 | s2 | main.rs:57:14:57:29 | source_slice(...) | main.rs:59:10:59:11 | s2 | $@ | main.rs:57:14:57:29 | source_slice(...) | source_slice(...) | | main.rs:64:16:64:25 | s.as_str() | main.rs:63:13:63:22 | source(...) | main.rs:64:16:64:25 | s.as_str() | $@ | main.rs:63:13:63:22 | source(...) | source(...) | | main.rs:71:10:71:19 | formatted1 | main.rs:68:13:68:22 | source(...) | main.rs:71:10:71:19 | formatted1 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | | main.rs:74:10:74:19 | formatted2 | main.rs:68:13:68:22 | source(...) | main.rs:74:10:74:19 | formatted2 | $@ | main.rs:68:13:68:22 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/strings/main.rs b/rust/ql/test/library-tests/dataflow/strings/main.rs index 40f62946832..633d9f42f46 100644 --- a/rust/ql/test/library-tests/dataflow/strings/main.rs +++ b/rust/ql/test/library-tests/dataflow/strings/main.rs @@ -56,7 +56,7 @@ fn string_from() { fn string_to_string() { let s1 = source_slice(22); let s2 = s1.to_string(); - sink(s2); // $ MISSING: hasTaintFlow=22 + sink(s2); // $ hasTaintFlow=22 } fn as_str() { From c6174fbb936d4d14d4d242dc36b9e26fc011e2a3 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 14:10:16 -0400 Subject: [PATCH 153/965] Crypto: remove precision tag --- .../src/experimental/quantum/Examples/WeakKDFIterationCount.ql | 1 - 1 file changed, 1 deletion(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql index fc07c30e677..71dfb87b70c 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql @@ -4,7 +4,6 @@ * @id java/quantum/weak-kdf-iteration-count * @kind path-problem * @problem.severity error - * @precision high * @tags quantum * experimental */ From 9a6aac130036f291982918c11d4c7084e9605bb1 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 14:20:16 -0400 Subject: [PATCH 154/965] Crypto: To get unreferenced parameters as general sources for Java, I've included the caveat that if a function is called, all the calls appear to be in test files. --- java/ql/lib/experimental/quantum/Language.qll | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index d30b30f8ef1..8c57b525de8 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -55,7 +55,18 @@ final class DefaultRemoteFlowSource = RemoteFlowSource; private class GenericUnreferencedParameterSource extends Crypto::GenericUnreferencedParameterSource { GenericUnreferencedParameterSource() { - exists(Parameter p | this = p and not exists(p.getAnArgument())) + exists(Parameter p | + this = p and + ( + not exists(p.getAnArgument()) + or + // If all calls to a function occur in a test file, ignore those calls + // and consider the parameter to the function a potential source as well. + forall(Call testCall | testCall.getCallee() = p.getCallable() | + testCall.getFile().getBaseName().toUpperCase().matches("%TEST%") + ) + ) + ) } override predicate flowsTo(Crypto::FlowAwareElement other) { From 15e266db9427be24e650297d0071daf3243b7afe Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 14:20:40 -0400 Subject: [PATCH 155/965] Crypto: Tweaks to bad crypto ordering queries. --- .../quantum/Examples/BadMacOrderDecryptToMac.ql | 2 +- .../Examples/BadMacOrderMacOnEncryptPlaintext.ql | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index 77f5e81b366..2eea84cbec5 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -23,4 +23,4 @@ where macOp.getAnInputArtifact().asElement() = sink.getNode().asExpr() ) select sink, src, sink, - "MAC order potentially wrong: observed decrypt output to MAC implying the MAC is on plaintext, and not a cipher." + "MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher." diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index fdc41dcc1a6..3eef5daad59 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -16,7 +16,13 @@ import experimental.quantum.Language // might not be known. // TODO: can we approximate a message source better? module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { exists(source.asParameter()) } + predicate isSource(DataFlow::Node source) { + exists(source.asParameter()) + or + exists(Crypto::GenericSourceNode other | + other.asElement() = CryptoInput::dfn_to_element(source) + ) + } predicate isSink(DataFlow::Node sink) { sink = any(Crypto::FlowAwareElement other).getInputNode() @@ -41,7 +47,7 @@ module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { } } -module CommonDataFlowNodeFlow = DataFlow::Global; +module CommonDataFlowNodeFlow = TaintTracking::Global; from DataFlow::Node src, DataFlow::Node sink1, DataFlow::Node sink2 where From 483ab5929a67c5a518346c1b8a567c9b2f9d9835 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 18:34:07 +0100 Subject: [PATCH 156/965] Rust: Combine and expand some of the models. --- .../rust/frameworks/stdlib/io.model.yml | 1 - .../frameworks/stdlib/lang-alloc.model.yml | 1 + .../frameworks/stdlib/lang-core.model.yml | 1 + .../test/library-tests/dataflow/local/main.rs | 6 +- .../dataflow/sources/InlineFlow.expected | 418 +++++++++--------- 5 files changed, 214 insertions(+), 213 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml index 252014b9490..b09ba8f297a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -24,4 +24,3 @@ extensions: - ["<_ as std::io::Read>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::take", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::lock", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::next", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml index 44397b156e4..56131c70462 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml @@ -38,6 +38,7 @@ extensions: - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index 131d13e4e96..f6ed241358a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -23,6 +23,7 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/local/main.rs b/rust/ql/test/library-tests/dataflow/local/main.rs index 7cab42da52b..b3c40bd4513 100644 --- a/rust/ql/test/library-tests/dataflow/local/main.rs +++ b/rust/ql/test/library-tests/dataflow/local/main.rs @@ -508,9 +508,9 @@ fn parse() { let d: i64 = b.parse().unwrap(); sink(a); // $ hasValueFlow=90 - sink_string(b); // $ MISSING: we are not currently able to resolve the `to_string` call above, which comes from `impl ToString for T` - sink(c); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above - sink(d); // $ MISSING: hasTaintFlow=90 - we are not currently able to resolve the `parse` call above + sink_string(b); // $ hasTaintFlow=90 + sink(c); // $ hasTaintFlow=90 + sink(d); // $ hasTaintFlow=90 } fn iterators() { diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 769de6fa8c3..744a441d44c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -40,67 +40,67 @@ models | 39 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 40 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 41 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 43 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 44 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 49 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 53 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 54 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 55 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 56 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 57 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 58 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 59 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 60 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 61 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 62 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 63 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 65 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 66 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 71 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 80 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 81 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 82 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 83 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 84 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 85 | Summary: ::new; Argument[0]; ReturnValue; value | -| 86 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 87 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 88 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 89 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 90 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 91 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 92 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 93 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 94 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 95 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 98 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 100 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 101 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 102 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 44 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 54 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 55 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 56 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 57 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 58 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 59 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 60 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 61 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 62 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 64 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 66 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 71 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 81 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 82 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 83 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 84 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 85 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 86 | Summary: ::new; Argument[0]; ReturnValue; value | +| 87 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 88 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 89 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 90 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 91 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 92 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 93 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 94 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 95 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 96 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 97 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 98 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 99 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 100 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 101 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 102 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | | 103 | Summary: ::buffer; Argument[self]; ReturnValue; taint | | 104 | Summary: ::new; Argument[0]; ReturnValue; taint | | 105 | Summary: ::read; Argument[self]; Argument[0]; taint | @@ -121,11 +121,11 @@ edges | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:27 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | | test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:86 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:87 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | | test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:27 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:83 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:84 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | @@ -142,20 +142,20 @@ edges | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | | test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:83 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:43 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:84 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | | test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:22 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:83 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:43 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:84 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | | test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:42 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:83 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:90 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:87 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:43 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:84 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:91 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:88 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | | test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:21 | @@ -165,45 +165,45 @@ edges | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | | test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:86 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:87 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | | test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:24 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:86 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:87 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | | test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:25 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:82 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:83 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | | test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:97 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:98 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | | test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:97 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:87 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:88 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:98 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:88 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | | test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:98 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:87 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:88 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:99 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:88 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | | test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:87 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:96 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:87 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:88 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:97 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:88 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | | test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:95 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:96 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | @@ -211,19 +211,19 @@ edges | test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:93 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:94 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:94 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:95 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:95 | | test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:83 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:84 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -244,40 +244,40 @@ edges | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | | test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | | test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | | test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:107 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | | test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:108 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | | test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:106 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | | test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:58 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:53 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:54 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | | test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:104 | @@ -292,14 +292,14 @@ edges | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:55 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:56 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | | test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:104 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:57 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | | test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:104 | @@ -307,50 +307,50 @@ edges | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:102 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:102 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:57 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:42 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:42 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | | test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:104 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:83 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:87 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:84 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:88 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:87 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:88 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:54 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | | test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | | test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:104 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:79 | | test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:74 | | test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:79 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:75 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:74 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:76 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:80 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:76 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:75 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:77 | | test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | @@ -369,13 +369,13 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:66 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:67 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | | test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:112 | @@ -391,14 +391,14 @@ edges | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:68 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:69 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | | test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:112 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:69 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | | test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:112 | @@ -408,19 +408,19 @@ edges | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | | test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | | test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:70 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | | test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:112 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:83 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:84 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:67 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:68 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | | test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | | test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:112 | @@ -429,7 +429,7 @@ edges | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:83 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:84 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | @@ -501,14 +501,14 @@ edges | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:101 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:58 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:100 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:101 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:102 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | | test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | @@ -528,34 +528,34 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:87 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:100 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:88 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | | test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:87 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:100 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:88 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | | test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:99 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:87 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:100 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:88 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | | test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:11 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:61 | | test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | @@ -563,30 +563,30 @@ edges | test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:59 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:65 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:66 | | test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:71 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:77 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:79 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:75 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:74 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:76 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:79 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:80 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:76 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:75 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:77 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | @@ -622,7 +622,7 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | @@ -633,32 +633,32 @@ edges | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:4 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | | test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | | test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:5 | | test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:49 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:109 | | test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:12 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | @@ -671,15 +671,15 @@ edges | test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:13 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:55 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:65 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:56 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:66 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | | test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:104 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | | test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:115 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:71 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | | test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:116 | | test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:117 | | test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:18 | @@ -713,67 +713,67 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:91 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:92 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:84 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:86 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | | test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:44 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:45 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:44 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:45 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:47 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:45 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:92 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:93 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:84 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:86 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -785,11 +785,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:84 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:86 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -805,30 +805,30 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:84 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:86 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | | test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:49 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:43 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:84 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:85 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:85 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:86 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -843,40 +843,40 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:47 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:45 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:81 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:89 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:80 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:88 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | From 612e95b7a40696233ca15ccdf518511d5e122bbc Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 20:21:52 +0100 Subject: [PATCH 157/965] Rust: More deduplication. --- .../lib/codeql/rust/frameworks/stdlib/lang-core.model.yml | 8 ++------ .../library-tests/dataflow/sources/InlineFlow.expected | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml index f6ed241358a..9a29741bd37 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml @@ -16,14 +16,10 @@ extensions: - ["<_ as value_trait::array::Array>::iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::iter_mut", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 744a441d44c..ef8d952c943 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -40,7 +40,7 @@ models | 39 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 40 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 41 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | | 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 44 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | | 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | From 510597666a9ed31f18a906bbbdc85d9cc1475e61 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 15 Oct 2025 20:28:22 +0100 Subject: [PATCH 158/965] Rust: Change note. --- rust/ql/lib/change-notes/2025-10-15-models.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md new file mode 100644 index 00000000000..fab2cab639a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-15-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Generalized some existing models to improve data flow. From 25599e9b4b8108041fb4d6d0a2adea8c7a91eaec Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 15 Oct 2025 16:25:36 -0400 Subject: [PATCH 159/965] crypto: Update JCA model macs to take into consideration update calls (use prior pattern for signatures). Misc. bug fixes. --- java/ql/lib/experimental/quantum/JCA.qll | 56 +++++++++++++------ java/ql/lib/experimental/quantum/Language.qll | 18 +++--- .../library-tests/quantum/node_edges.expected | 37 +++++++++--- .../quantum/node_properties.expected | 29 +++++++--- .../library-tests/quantum/nodes.expected | 19 +++++-- 5 files changed, 115 insertions(+), 44 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index e288467ae97..db40b40e0e5 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -133,7 +133,7 @@ module JCAModel { exists(string name | name = nameRaw.toUpperCase() | name in ["SHA-1", "SHA1"] and result instanceof Crypto::SHA1 and digestLength = 160 or - name in ["SHA-256", "SHA-384", "SHA-512", "SHA256", "SHA384", "SHA512"] and + name in ["SHA-256", "SHA-224", "SHA-384", "SHA-512", "SHA224", "SHA256", "SHA384", "SHA512"] and result instanceof Crypto::SHA2 and digestLength = name.replaceAll("-", "").splitAt("SHA", 1).toInt() or @@ -1628,7 +1628,7 @@ module JCAModel { } } - class MacOperationCall extends Crypto::MacOperationInstance instanceof MethodCall { + class MacOperationCall extends MethodCall { Expr output; MacOperationCall() { @@ -1638,31 +1638,53 @@ module JCAModel { or super.getMethod().hasStringSignature("doFinal(byte[], int)") and this.getArgument(0) = output + or + super.getMethod().hasStringSignature("update(byte[])") and this = output ) } + predicate isIntermediate() { super.getMethod().getName() = "update" } + + Expr getOutput() { result = output } + + Expr getInput() { + super.getMethod().hasStringSignature(["doFinal(byte[])"]) and result = this.getArgument(0) + or + super.getMethod().hasStringSignature("update(byte[])") and result = this.getArgument(0) + } + } + + module MacFlowAnalysisImpl = + GetInstanceInitUseFlowAnalysis; + + class MacOperationInstance extends Crypto::MacOperationInstance instanceof MacOperationCall { + MacOperationInstance() { not super.isIntermediate() } + + MacGetInstanceCall getInstantiationCall() { + result = MacFlowAnalysisImpl::getInstantiationFromUse(this, _, _) + } + + MacInitCall getInitCall() { result = MacFlowAnalysisImpl::getInitFromUse(this, _, _) } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result.asExpr() = super.getInput() or + result.asExpr() = MacFlowAnalysisImpl::getAnIntermediateUseFromFinalUse(this, _, _).getInput() + } + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - exists(MacGetInstanceCall instantiation | - instantiation.getOperation() = this and result = instantiation.getAlgorithmArg() - ) + result = this.getInstantiationCall().getAlgorithmArg() } override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { - exists(MacGetInstanceCall instantiation, MacInitCall initCall | - instantiation.getOperation() = this and - initCall.getOperation() = this and - instantiation.getInitCall() = initCall and - result.asExpr() = initCall.getKeyArg() - ) + result.asExpr() = this.getInitCall().getKeyArg() } - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { - result.asExpr() = super.getArgument(0) and - super.getMethod().getParameterType(0).hasName("byte[]") + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result.asExpr() = super.getOutput() or + result.asExpr() = + MacFlowAnalysisImpl::getAnIntermediateUseFromFinalUse(this, _, _).getOutput() } - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result.asExpr() = output } - override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { none() } override predicate hasHashAlgorithmConsumer() { none() } @@ -1773,7 +1795,7 @@ module JCAModel { } } - private class SignatureOperationCall extends MethodCall { + class SignatureOperationCall extends MethodCall { SignatureOperationCall() { this.getMethod().hasQualifiedName("java.security", "Signature", ["update", "sign", "verify"]) } diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 8c57b525de8..7eff427569d 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -57,15 +57,15 @@ private class GenericUnreferencedParameterSource extends Crypto::GenericUnrefere GenericUnreferencedParameterSource() { exists(Parameter p | this = p and - ( - not exists(p.getAnArgument()) - or - // If all calls to a function occur in a test file, ignore those calls - // and consider the parameter to the function a potential source as well. - forall(Call testCall | testCall.getCallee() = p.getCallable() | - testCall.getFile().getBaseName().toUpperCase().matches("%TEST%") - ) - ) + not exists(p.getAnArgument()) + // TODO: this is test code which causes regression in unit tests, but will + // find sources where ordinarily a source might be missing + // or + // // If all calls to a function occur in a test file, ignore those calls + // // and consider the parameter to the function a potential source as well. + // forall(Call testCall | testCall.getCallee() = p.getCallable() | + // testCall.getFile().getBaseName().toUpperCase().matches("%TEST%") + // ) ) } diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 0be5a459da1..7407dcaff08 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -393,8 +393,10 @@ | jca/EllipticCurve1.java:106:16:106:36 | Key | Algorithm | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | Output | jca/EllipticCurve1.java:106:16:106:36 | Key | -| jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | Constant | -| jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | Constant | +| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:115:16:115:36 | Key | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | +| jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Algorithm | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | Output | jca/EllipticCurve1.java:115:16:115:36 | Key | | jca/EllipticCurve2.java:47:16:47:36 | Key | Algorithm | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | | jca/EllipticCurve2.java:47:16:47:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | @@ -408,8 +410,10 @@ | jca/EllipticCurve2.java:73:16:73:36 | Key | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | Output | jca/EllipticCurve2.java:73:16:73:36 | Key | -| jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | Constant | -| jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | Constant | +| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Mode | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | +| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Padding | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | +| jca/EllipticCurve2.java:81:16:81:36 | Key | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | +| jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Algorithm | jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | Output | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:106:17:106:36 | Key | Source | jca/EllipticCurve2.java:47:16:47:36 | Key | | jca/EllipticCurve2.java:107:20:107:36 | Key | Source | jca/EllipticCurve2.java:47:16:47:36 | Key | @@ -657,7 +661,6 @@ | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:85:191:94 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:191:97:191:106 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:192:13:192:25 | HashAlgorithm | -| jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:192:28:192:40 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Algorithm | jca/Hash.java:192:43:192:47 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | HashOperation | Digest | jca/Hash.java:195:27:195:57 | Digest | | jca/Hash.java:195:27:195:57 | HashOperation | Message | jca/Hash.java:195:41:195:56 | Message | @@ -698,6 +701,7 @@ | jca/Hash.java:237:23:237:50 | KeyDerivation | Output | jca/Hash.java:237:23:237:50 | Key | | jca/Hash.java:237:23:237:50 | KeyDerivation | Salt | jca/Hash.java:235:66:235:69 | Salt | | jca/Hash.java:252:23:252:70 | Digest | Source | jca/Hash.java:252:23:252:70 | Digest | +| jca/Hash.java:252:23:252:70 | HashOperation | Algorithm | jca/Hash.java:294:16:294:66 | Constant | | jca/Hash.java:252:23:252:70 | HashOperation | Algorithm | jca/Hash.java:294:16:294:66 | LocalData | | jca/Hash.java:252:23:252:70 | HashOperation | Algorithm | jca/Hash.java:294:57:294:65 | HashAlgorithm | | jca/Hash.java:252:23:252:70 | HashOperation | Digest | jca/Hash.java:252:23:252:70 | Digest | @@ -725,6 +729,7 @@ | jca/IVArtifact.java:38:42:38:44 | Key | Source | jca/IVArtifact.java:76:16:76:35 | Key | | jca/IVArtifact.java:38:47:38:52 | Nonce | Source | jca/IVArtifact.java:81:38:81:39 | RandomNumberGeneration | | jca/IVArtifact.java:38:47:38:52 | Nonce | Source | jca/IVArtifact.java:87:32:87:33 | RandomNumberGeneration | +| jca/IVArtifact.java:39:29:39:53 | EncryptOperation | Algorithm | jca/IVArtifact.java:70:16:70:81 | Constant | | jca/IVArtifact.java:39:29:39:53 | EncryptOperation | Algorithm | jca/IVArtifact.java:70:16:70:81 | LocalData | | jca/IVArtifact.java:39:29:39:53 | EncryptOperation | Algorithm | jca/IVArtifact.java:70:59:70:80 | KeyOperationAlgorithm | | jca/IVArtifact.java:39:29:39:53 | EncryptOperation | Input | jca/IVArtifact.java:39:44:39:52 | Message | @@ -910,14 +915,19 @@ | jca/KeyArtifact.java:42:26:42:53 | Key | Algorithm | jca/KeyArtifact.java:42:26:42:53 | Key | | jca/KeyArtifact.java:42:26:42:53 | KeyGeneration | Algorithm | jca/KeyArtifact.java:42:26:42:53 | KeyGeneration | | jca/KeyArtifact.java:42:26:42:53 | KeyGeneration | Output | jca/KeyArtifact.java:42:26:42:53 | Key | +| jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Algorithm | jca/KeyArtifact.java:62:28:62:73 | Constant | | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Algorithm | jca/KeyArtifact.java:62:28:62:73 | LocalData | | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Algorithm | jca/KeyArtifact.java:62:68:62:72 | KeyOperationAlgorithm | | jca/KeyArtifact.java:66:32:66:51 | KeyGeneration | Output | jca/KeyArtifact.java:66:32:66:51 | Key | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:73:16:73:43 | Key | Algorithm | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Algorithm | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | Output | jca/KeyArtifact.java:73:16:73:43 | Key | +| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Mode | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Padding | jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:80:42:80:63 | Message | Source | jca/KeyDerivation1.java:78:39:78:53 | Parameter | | jca/KeyDerivation1.java:80:66:80:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | | jca/KeyDerivation1.java:81:65:81:86 | HMACAlgorithm | H | jca/KeyDerivation1.java:81:65:81:86 | HashAlgorithm | @@ -988,6 +998,7 @@ | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | PRF | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | | jca/KeyDerivation1.java:314:42:314:63 | Message | Source | jca/KeyDerivation1.java:302:37:302:51 | Parameter | | jca/KeyDerivation1.java:314:66:314:69 | Salt | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | +| jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:309:25:309:76 | Constant | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:309:25:309:76 | LocalData | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Algorithm | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Input | jca/KeyDerivation1.java:314:42:314:63 | Message | @@ -1262,10 +1273,13 @@ | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Mode | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Padding | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | | jca/Nonce.java:25:18:25:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | +| jca/Nonce.java:26:20:26:24 | Message | Source | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | | jca/Nonce.java:27:28:27:69 | MACOperation | Algorithm | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | | jca/Nonce.java:27:28:27:69 | MACOperation | HashAlgorithm | jca/Nonce.java:27:28:27:69 | MACOperation | +| jca/Nonce.java:27:28:27:69 | MACOperation | Input | jca/Nonce.java:26:20:26:24 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Input | jca/Nonce.java:27:40:27:68 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Key | jca/Nonce.java:25:18:25:20 | Key | +| jca/Nonce.java:27:28:27:69 | MACOperation | Message | jca/Nonce.java:26:20:26:24 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Message | jca/Nonce.java:27:40:27:68 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Nonce | jca/Nonce.java:27:28:27:69 | MACOperation | | jca/Nonce.java:27:28:27:69 | MACOperation | Output | jca/Nonce.java:27:28:27:69 | KeyOperationOutput | @@ -1273,10 +1287,13 @@ | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Mode | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Padding | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | | jca/Nonce.java:38:18:38:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | +| jca/Nonce.java:39:20:39:24 | Message | Source | jca/Nonce.java:35:24:35:41 | Constant | | jca/Nonce.java:40:28:40:67 | MACOperation | Algorithm | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | | jca/Nonce.java:40:28:40:67 | MACOperation | HashAlgorithm | jca/Nonce.java:40:28:40:67 | MACOperation | +| jca/Nonce.java:40:28:40:67 | MACOperation | Input | jca/Nonce.java:39:20:39:24 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Input | jca/Nonce.java:40:40:40:66 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Key | jca/Nonce.java:38:18:38:20 | Key | +| jca/Nonce.java:40:28:40:67 | MACOperation | Message | jca/Nonce.java:39:20:39:24 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Message | jca/Nonce.java:40:40:40:66 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Nonce | jca/Nonce.java:40:28:40:67 | MACOperation | | jca/Nonce.java:40:28:40:67 | MACOperation | Output | jca/Nonce.java:40:28:40:67 | KeyOperationOutput | @@ -1304,10 +1321,14 @@ | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | Mode | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | Padding | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | | jca/Nonce.java:78:18:78:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | +| jca/Nonce.java:79:20:79:24 | Message | Source | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | +| jca/Nonce.java:79:20:79:24 | Message | Source | jca/Nonce.java:104:32:104:36 | RandomNumberGeneration | | jca/Nonce.java:80:28:80:67 | MACOperation | Algorithm | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | | jca/Nonce.java:80:28:80:67 | MACOperation | HashAlgorithm | jca/Nonce.java:80:28:80:67 | MACOperation | +| jca/Nonce.java:80:28:80:67 | MACOperation | Input | jca/Nonce.java:79:20:79:24 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Input | jca/Nonce.java:80:40:80:66 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Key | jca/Nonce.java:78:18:78:20 | Key | +| jca/Nonce.java:80:28:80:67 | MACOperation | Message | jca/Nonce.java:79:20:79:24 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Message | jca/Nonce.java:80:40:80:66 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Nonce | jca/Nonce.java:80:28:80:67 | MACOperation | | jca/Nonce.java:80:28:80:67 | MACOperation | Output | jca/Nonce.java:80:28:80:67 | KeyOperationOutput | @@ -1438,8 +1459,10 @@ | jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | Signature | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | Source | jca/SignatureOperation.java:106:16:106:31 | SignatureOutput | | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | Source | jca/SignatureOperation.java:236:27:236:30 | Constant | -| jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | Constant | -| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | Constant | +| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:133:16:133:36 | Key | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | +| jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Algorithm | jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | | jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | Output | jca/SignatureOperation.java:133:16:133:36 | Key | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Mode | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Padding | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index 506be879d63..9879b4cc515 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -387,7 +387,8 @@ | jca/EllipticCurve1.java:95:16:95:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:95:16:95:36 | jca/EllipticCurve1.java:95:16:95:36 | | jca/EllipticCurve1.java:105:66:105:76 | Constant | Description | "sm2p256v1" | jca/EllipticCurve1.java:105:66:105:76 | jca/EllipticCurve1.java:105:66:105:76 | | jca/EllipticCurve1.java:106:16:106:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:106:16:106:36 | jca/EllipticCurve1.java:106:16:106:36 | -| jca/EllipticCurve1.java:114:61:114:69 | Constant | Description | "Ed25519" | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | +| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:115:16:115:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:115:16:115:36 | jca/EllipticCurve1.java:115:16:115:36 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | KeySize | 256 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | Name | secp256r1 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | @@ -407,7 +408,8 @@ | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | Name | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | RawName | X25519 | jca/EllipticCurve2.java:72:61:72:68 | jca/EllipticCurve2.java:72:61:72:68 | | jca/EllipticCurve2.java:73:16:73:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:73:16:73:36 | jca/EllipticCurve2.java:73:16:73:36 | -| jca/EllipticCurve2.java:80:61:80:69 | Constant | Description | "Ed25519" | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | +| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/EllipticCurve2.java:80:61:80:69 | jca/EllipticCurve2.java:80:61:80:69 | | jca/EllipticCurve2.java:81:16:81:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:81:16:81:36 | jca/EllipticCurve2.java:81:16:81:36 | | jca/EllipticCurve2.java:105:52:105:57 | KeyAgreementAlgorithm | Name | ECDH | jca/EllipticCurve2.java:105:52:105:57 | jca/EllipticCurve2.java:105:52:105:57 | | jca/EllipticCurve2.java:105:52:105:57 | KeyAgreementAlgorithm | RawName | ECDH | jca/EllipticCurve2.java:105:52:105:57 | jca/EllipticCurve2.java:105:52:105:57 | @@ -641,7 +643,8 @@ | jca/Hash.java:191:32:191:38 | HashAlgorithm | DigestSize | 160 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | | jca/Hash.java:191:32:191:38 | HashAlgorithm | Name | SHA1 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | | jca/Hash.java:191:32:191:38 | HashAlgorithm | RawName | SHA-1 | jca/Hash.java:191:32:191:38 | jca/Hash.java:191:32:191:38 | -| jca/Hash.java:191:41:191:49 | HashAlgorithm | DigestSize | | file://:0:0:0:0 | file://:0:0:0:0 | +| jca/Hash.java:191:41:191:49 | HashAlgorithm | DigestSize | 224 | jca/Hash.java:191:41:191:49 | jca/Hash.java:191:41:191:49 | +| jca/Hash.java:191:41:191:49 | HashAlgorithm | Name | SHA2 | jca/Hash.java:191:41:191:49 | jca/Hash.java:191:41:191:49 | | jca/Hash.java:191:41:191:49 | HashAlgorithm | RawName | SHA-224 | jca/Hash.java:191:41:191:49 | jca/Hash.java:191:41:191:49 | | jca/Hash.java:191:52:191:60 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:191:52:191:60 | jca/Hash.java:191:52:191:60 | | jca/Hash.java:191:52:191:60 | HashAlgorithm | Name | SHA2 | jca/Hash.java:191:52:191:60 | jca/Hash.java:191:52:191:60 | @@ -658,10 +661,9 @@ | jca/Hash.java:191:97:191:106 | HashAlgorithm | DigestSize | 512 | jca/Hash.java:191:97:191:106 | jca/Hash.java:191:97:191:106 | | jca/Hash.java:191:97:191:106 | HashAlgorithm | Name | SHA3 | jca/Hash.java:191:97:191:106 | jca/Hash.java:191:97:191:106 | | jca/Hash.java:191:97:191:106 | HashAlgorithm | RawName | SHA3-512 | jca/Hash.java:191:97:191:106 | jca/Hash.java:191:97:191:106 | -| jca/Hash.java:192:13:192:25 | HashAlgorithm | DigestSize | | file://:0:0:0:0 | file://:0:0:0:0 | +| jca/Hash.java:192:13:192:25 | HashAlgorithm | DigestSize | 512 | jca/Hash.java:192:13:192:25 | jca/Hash.java:192:13:192:25 | +| jca/Hash.java:192:13:192:25 | HashAlgorithm | Name | BLAKE2B | jca/Hash.java:192:13:192:25 | jca/Hash.java:192:13:192:25 | | jca/Hash.java:192:13:192:25 | HashAlgorithm | RawName | BLAKE2B-512 | jca/Hash.java:192:13:192:25 | jca/Hash.java:192:13:192:25 | -| jca/Hash.java:192:28:192:40 | HashAlgorithm | DigestSize | | file://:0:0:0:0 | file://:0:0:0:0 | -| jca/Hash.java:192:28:192:40 | HashAlgorithm | RawName | BLAKE2S-256 | jca/Hash.java:192:28:192:40 | jca/Hash.java:192:28:192:40 | | jca/Hash.java:192:43:192:47 | HashAlgorithm | DigestSize | 128 | jca/Hash.java:192:43:192:47 | jca/Hash.java:192:43:192:47 | | jca/Hash.java:192:43:192:47 | HashAlgorithm | Name | MD5 | jca/Hash.java:192:43:192:47 | jca/Hash.java:192:43:192:47 | | jca/Hash.java:192:43:192:47 | HashAlgorithm | RawName | MD5 | jca/Hash.java:192:43:192:47 | jca/Hash.java:192:43:192:47 | @@ -710,6 +712,7 @@ | jca/Hash.java:266:66:266:75 | HashAlgorithm | Name | SHA3 | jca/Hash.java:266:66:266:75 | jca/Hash.java:266:66:266:75 | | jca/Hash.java:266:66:266:75 | HashAlgorithm | RawName | SHA3-512 | jca/Hash.java:266:66:266:75 | jca/Hash.java:266:66:266:75 | | jca/Hash.java:269:27:269:38 | Constant | Description | "fixed-seed" | jca/Hash.java:269:27:269:38 | jca/Hash.java:269:27:269:38 | +| jca/Hash.java:294:16:294:66 | Constant | Description | getProperty(...) | jca/Hash.java:294:16:294:66 | jca/Hash.java:294:16:294:66 | | jca/Hash.java:294:16:294:66 | LocalData | Description | getProperty(...) | jca/Hash.java:294:16:294:66 | jca/Hash.java:294:16:294:66 | | jca/Hash.java:294:57:294:65 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:294:57:294:65 | jca/Hash.java:294:57:294:65 | | jca/Hash.java:294:57:294:65 | HashAlgorithm | Name | SHA2 | jca/Hash.java:294:57:294:65 | jca/Hash.java:294:57:294:65 | @@ -728,6 +731,7 @@ | jca/IVArtifact.java:38:42:38:44 | Key | KeyType | Unknown | jca/IVArtifact.java:38:42:38:44 | jca/IVArtifact.java:38:42:38:44 | | jca/IVArtifact.java:39:29:39:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/IVArtifact.java:39:29:39:53 | jca/IVArtifact.java:39:29:39:53 | | jca/IVArtifact.java:49:27:49:42 | Constant | Description | "Sensitive Data" | jca/IVArtifact.java:49:27:49:42 | jca/IVArtifact.java:49:27:49:42 | +| jca/IVArtifact.java:70:16:70:81 | Constant | Description | getProperty(...) | jca/IVArtifact.java:70:16:70:81 | jca/IVArtifact.java:70:16:70:81 | | jca/IVArtifact.java:70:16:70:81 | LocalData | Description | getProperty(...) | jca/IVArtifact.java:70:16:70:81 | jca/IVArtifact.java:70:16:70:81 | | jca/IVArtifact.java:70:59:70:80 | KeyOperationAlgorithm | Name | AES | jca/IVArtifact.java:70:59:70:80 | jca/IVArtifact.java:70:59:70:80 | | jca/IVArtifact.java:70:59:70:80 | KeyOperationAlgorithm | RawName | AES/CBC/PKCS5Padding | jca/IVArtifact.java:70:59:70:80 | jca/IVArtifact.java:70:59:70:80 | @@ -923,6 +927,7 @@ | jca/KeyArtifact.java:37:29:37:56 | Key | KeyType | Asymmetric | jca/KeyArtifact.java:37:29:37:56 | jca/KeyArtifact.java:37:29:37:56 | | jca/KeyArtifact.java:41:31:41:33 | Constant | Description | 256 | jca/KeyArtifact.java:41:31:41:33 | jca/KeyArtifact.java:41:31:41:33 | | jca/KeyArtifact.java:42:26:42:53 | Key | KeyType | Asymmetric | jca/KeyArtifact.java:42:26:42:53 | jca/KeyArtifact.java:42:26:42:53 | +| jca/KeyArtifact.java:62:28:62:73 | Constant | Description | getProperty(...) | jca/KeyArtifact.java:62:28:62:73 | jca/KeyArtifact.java:62:28:62:73 | | jca/KeyArtifact.java:62:28:62:73 | LocalData | Description | getProperty(...) | jca/KeyArtifact.java:62:28:62:73 | jca/KeyArtifact.java:62:28:62:73 | | jca/KeyArtifact.java:62:68:62:72 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/KeyArtifact.java:65:21:65:23 | jca/KeyArtifact.java:65:21:65:23 | | jca/KeyArtifact.java:62:68:62:72 | KeyOperationAlgorithm | Name | AES | jca/KeyArtifact.java:62:68:62:72 | jca/KeyArtifact.java:62:68:62:72 | @@ -936,6 +941,8 @@ | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | KeySize | Constant:2048 | jca/KeyArtifact.java:72:31:72:34 | jca/KeyArtifact.java:72:31:72:34 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | Name | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | RawName | RSA | jca/KeyArtifact.java:78:32:78:36 | jca/KeyArtifact.java:78:32:78:36 | +| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | Name | EDSA | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | +| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | RawName | Ed25519 | jca/KeyArtifact.java:78:45:78:53 | jca/KeyArtifact.java:78:45:78:53 | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | Description | password | jca/KeyDerivation1.java:78:39:78:53 | jca/KeyDerivation1.java:78:39:78:53 | | jca/KeyDerivation1.java:80:72:80:76 | Constant | Description | 10000 | jca/KeyDerivation1.java:80:72:80:76 | jca/KeyDerivation1.java:80:72:80:76 | | jca/KeyDerivation1.java:80:79:80:81 | Constant | Description | 256 | jca/KeyDerivation1.java:80:79:80:81 | jca/KeyDerivation1.java:80:79:80:81 | @@ -1033,6 +1040,7 @@ | jca/KeyDerivation1.java:283:43:283:57 | Parameter | Description | password | jca/KeyDerivation1.java:283:43:283:57 | jca/KeyDerivation1.java:283:43:283:57 | | jca/KeyDerivation1.java:283:60:283:78 | Parameter | Description | sharedSecret | jca/KeyDerivation1.java:283:60:283:78 | jca/KeyDerivation1.java:283:60:283:78 | | jca/KeyDerivation1.java:302:37:302:51 | Parameter | Description | password | jca/KeyDerivation1.java:302:37:302:51 | jca/KeyDerivation1.java:302:37:302:51 | +| jca/KeyDerivation1.java:309:25:309:76 | Constant | Description | getProperty(...) | jca/KeyDerivation1.java:309:25:309:76 | jca/KeyDerivation1.java:309:25:309:76 | | jca/KeyDerivation1.java:309:25:309:76 | LocalData | Description | getProperty(...) | jca/KeyDerivation1.java:309:25:309:76 | jca/KeyDerivation1.java:309:25:309:76 | | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | Name | HMAC | jca/KeyDerivation1.java:309:54:309:75 | jca/KeyDerivation1.java:309:54:309:75 | | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | RawName | PBKDF2WithHmacSHA256 | jca/KeyDerivation1.java:309:54:309:75 | jca/KeyDerivation1.java:309:54:309:75 | @@ -1041,10 +1049,14 @@ | jca/KeyDerivation1.java:309:54:309:75 | HashAlgorithm | RawName | PBKDF2WithHmacSHA256 | jca/KeyDerivation1.java:309:54:309:75 | jca/KeyDerivation1.java:309:54:309:75 | | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | Name | PBKDF2WithHmacSHA256 | jca/KeyDerivation1.java:309:54:309:75 | jca/KeyDerivation1.java:309:54:309:75 | | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | RawName | PBKDF2WithHmacSHA256 | jca/KeyDerivation1.java:309:54:309:75 | jca/KeyDerivation1.java:309:54:309:75 | +| jca/KeyDerivation1.java:310:43:310:86 | Constant | Description | getProperty(...) | jca/KeyDerivation1.java:310:43:310:86 | jca/KeyDerivation1.java:310:43:310:86 | | jca/KeyDerivation1.java:310:43:310:86 | LocalData | Description | getProperty(...) | jca/KeyDerivation1.java:310:43:310:86 | jca/KeyDerivation1.java:310:43:310:86 | +| jca/KeyDerivation1.java:311:40:311:78 | Constant | Description | getProperty(...) | jca/KeyDerivation1.java:311:40:311:78 | jca/KeyDerivation1.java:311:40:311:78 | | jca/KeyDerivation1.java:311:40:311:78 | LocalData | Description | getProperty(...) | jca/KeyDerivation1.java:311:40:311:78 | jca/KeyDerivation1.java:311:40:311:78 | | jca/KeyDerivation1.java:316:26:316:53 | Key | KeyType | Symmetric | jca/KeyDerivation1.java:316:26:316:53 | jca/KeyDerivation1.java:316:26:316:53 | +| jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Iterations | Constant:getProperty(...) | jca/KeyDerivation1.java:310:43:310:86 | jca/KeyDerivation1.java:310:43:310:86 | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | Iterations | LocalData:getProperty(...) | jca/KeyDerivation1.java:310:43:310:86 | jca/KeyDerivation1.java:310:43:310:86 | +| jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | KeySize | Constant:getProperty(...) | jca/KeyDerivation1.java:311:40:311:78 | jca/KeyDerivation1.java:311:40:311:78 | | jca/KeyDerivation1.java:316:26:316:53 | KeyDerivation | KeySize | LocalData:getProperty(...) | jca/KeyDerivation1.java:311:40:311:78 | jca/KeyDerivation1.java:311:40:311:78 | | jca/KeyDerivation1.java:333:72:333:76 | Constant | Description | 10000 | jca/KeyDerivation1.java:333:72:333:76 | jca/KeyDerivation1.java:333:72:333:76 | | jca/KeyDerivation1.java:333:79:333:81 | Constant | Description | 256 | jca/KeyDerivation1.java:333:79:333:81 | jca/KeyDerivation1.java:333:79:333:81 | @@ -1283,6 +1295,7 @@ | jca/Nonce.java:25:18:25:20 | Key | KeyType | Unknown | jca/Nonce.java:25:18:25:20 | jca/Nonce.java:25:18:25:20 | | jca/Nonce.java:27:28:27:69 | MACOperation | KeyOperationSubtype | Mac | jca/Nonce.java:27:28:27:69 | jca/Nonce.java:27:28:27:69 | | jca/Nonce.java:27:40:27:57 | Constant | Description | "Simple Test Data" | jca/Nonce.java:27:40:27:57 | jca/Nonce.java:27:40:27:57 | +| jca/Nonce.java:35:24:35:41 | Constant | Description | "BADNONCEBADNONCE" | jca/Nonce.java:35:24:35:41 | jca/Nonce.java:35:24:35:41 | | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Name | HMAC | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | | jca/Nonce.java:38:18:38:20 | Key | KeyType | Unknown | jca/Nonce.java:38:18:38:20 | jca/Nonce.java:38:18:38:20 | @@ -1318,6 +1331,7 @@ | jca/Nonce.java:92:56:92:67 | Constant | Description | "HmacSHA256" | jca/Nonce.java:92:56:92:67 | jca/Nonce.java:92:56:92:67 | | jca/Nonce.java:93:16:93:35 | Key | KeyType | Symmetric | jca/Nonce.java:93:16:93:35 | jca/Nonce.java:93:16:93:35 | | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Nonce.java:98:38:98:42 | jca/Nonce.java:98:38:98:42 | +| jca/Nonce.java:104:32:104:36 | RandomNumberGeneration | Description | java.util.Random | jca/Nonce.java:104:32:104:36 | jca/Nonce.java:104:32:104:36 | | jca/Nonce.java:112:16:112:33 | Constant | Description | "BADNONCEBADNONCE" | jca/Nonce.java:112:16:112:33 | jca/Nonce.java:112:16:112:33 | | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/PrngTest.java:153:21:153:23 | jca/PrngTest.java:153:21:153:23 | | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | Name | AES | jca/PrngTest.java:152:56:152:60 | jca/PrngTest.java:152:56:152:60 | @@ -1412,7 +1426,8 @@ | jca/SignatureOperation.java:115:53:115:69 | KeyOperationAlgorithm | RawName | SHA256withECDSA | jca/SignatureOperation.java:115:53:115:69 | jca/SignatureOperation.java:115:53:115:69 | | jca/SignatureOperation.java:116:30:116:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:116:30:116:38 | jca/SignatureOperation.java:116:30:116:38 | | jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:118:16:118:41 | jca/SignatureOperation.java:118:16:118:41 | -| jca/SignatureOperation.java:132:61:132:69 | Constant | Description | "Ed25519" | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | +| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:132:61:132:69 | jca/SignatureOperation.java:132:61:132:69 | | jca/SignatureOperation.java:133:16:133:36 | Key | KeyType | Asymmetric | jca/SignatureOperation.java:133:16:133:36 | jca/SignatureOperation.java:133:16:133:36 | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | Name | EDSA | jca/SignatureOperation.java:142:53:142:61 | jca/SignatureOperation.java:142:53:142:61 | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | RawName | Ed25519 | jca/SignatureOperation.java:142:53:142:61 | jca/SignatureOperation.java:142:53:142:61 | diff --git a/java/ql/test/experimental/library-tests/quantum/nodes.expected b/java/ql/test/experimental/library-tests/quantum/nodes.expected index 5e4c033707a..80042576adf 100644 --- a/java/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/java/ql/test/experimental/library-tests/quantum/nodes.expected @@ -348,7 +348,7 @@ | jca/EllipticCurve1.java:105:66:105:76 | Constant | | jca/EllipticCurve1.java:106:16:106:36 | Key | | jca/EllipticCurve1.java:106:16:106:36 | KeyGeneration | -| jca/EllipticCurve1.java:114:61:114:69 | Constant | +| jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | | jca/EllipticCurve1.java:115:16:115:36 | Key | | jca/EllipticCurve1.java:115:16:115:36 | KeyGeneration | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | @@ -363,7 +363,7 @@ | jca/EllipticCurve2.java:72:61:72:68 | KeyAgreementAlgorithm | | jca/EllipticCurve2.java:73:16:73:36 | Key | | jca/EllipticCurve2.java:73:16:73:36 | KeyGeneration | -| jca/EllipticCurve2.java:80:61:80:69 | Constant | +| jca/EllipticCurve2.java:80:61:80:69 | KeyOperationAlgorithm | | jca/EllipticCurve2.java:81:16:81:36 | Key | | jca/EllipticCurve2.java:81:16:81:36 | KeyGeneration | | jca/EllipticCurve2.java:105:52:105:57 | KeyAgreementAlgorithm | @@ -582,7 +582,6 @@ | jca/Hash.java:191:85:191:94 | HashAlgorithm | | jca/Hash.java:191:97:191:106 | HashAlgorithm | | jca/Hash.java:192:13:192:25 | HashAlgorithm | -| jca/Hash.java:192:28:192:40 | HashAlgorithm | | jca/Hash.java:192:43:192:47 | HashAlgorithm | | jca/Hash.java:195:27:195:57 | Digest | | jca/Hash.java:195:27:195:57 | HashOperation | @@ -623,6 +622,7 @@ | jca/Hash.java:270:27:270:30 | Message | | jca/Hash.java:271:40:271:54 | Digest | | jca/Hash.java:271:40:271:54 | HashOperation | +| jca/Hash.java:294:16:294:66 | Constant | | jca/Hash.java:294:16:294:66 | LocalData | | jca/Hash.java:294:57:294:65 | HashAlgorithm | | jca/Hash.java:310:38:310:41 | RandomNumberGeneration | @@ -641,6 +641,7 @@ | jca/IVArtifact.java:39:29:39:53 | KeyOperationOutput | | jca/IVArtifact.java:39:44:39:52 | Message | | jca/IVArtifact.java:49:27:49:42 | Constant | +| jca/IVArtifact.java:70:16:70:81 | Constant | | jca/IVArtifact.java:70:16:70:81 | LocalData | | jca/IVArtifact.java:70:59:70:80 | KeyOperationAlgorithm | | jca/IVArtifact.java:70:59:70:80 | ModeOfOperation | @@ -814,6 +815,7 @@ | jca/KeyArtifact.java:41:31:41:33 | Constant | | jca/KeyArtifact.java:42:26:42:53 | Key | | jca/KeyArtifact.java:42:26:42:53 | KeyGeneration | +| jca/KeyArtifact.java:62:28:62:73 | Constant | | jca/KeyArtifact.java:62:28:62:73 | LocalData | | jca/KeyArtifact.java:62:68:62:72 | KeyOperationAlgorithm | | jca/KeyArtifact.java:65:21:65:23 | Constant | @@ -824,6 +826,7 @@ | jca/KeyArtifact.java:73:16:73:43 | KeyGeneration | | jca/KeyArtifact.java:78:31:78:54 | Constant | | jca/KeyArtifact.java:78:32:78:36 | KeyOperationAlgorithm | +| jca/KeyArtifact.java:78:45:78:53 | KeyOperationAlgorithm | | jca/KeyDerivation1.java:78:39:78:53 | Parameter | | jca/KeyDerivation1.java:80:42:80:63 | Message | | jca/KeyDerivation1.java:80:66:80:69 | Salt | @@ -907,11 +910,14 @@ | jca/KeyDerivation1.java:283:43:283:57 | Parameter | | jca/KeyDerivation1.java:283:60:283:78 | Parameter | | jca/KeyDerivation1.java:302:37:302:51 | Parameter | +| jca/KeyDerivation1.java:309:25:309:76 | Constant | | jca/KeyDerivation1.java:309:25:309:76 | LocalData | | jca/KeyDerivation1.java:309:54:309:75 | HMACAlgorithm | | jca/KeyDerivation1.java:309:54:309:75 | HashAlgorithm | | jca/KeyDerivation1.java:309:54:309:75 | KeyDerivationAlgorithm | +| jca/KeyDerivation1.java:310:43:310:86 | Constant | | jca/KeyDerivation1.java:310:43:310:86 | LocalData | +| jca/KeyDerivation1.java:311:40:311:78 | Constant | | jca/KeyDerivation1.java:311:40:311:78 | LocalData | | jca/KeyDerivation1.java:314:42:314:63 | Message | | jca/KeyDerivation1.java:314:66:314:69 | Salt | @@ -1136,12 +1142,15 @@ | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | | jca/Nonce.java:25:18:25:20 | Key | +| jca/Nonce.java:26:20:26:24 | Message | | jca/Nonce.java:27:28:27:69 | KeyOperationOutput | | jca/Nonce.java:27:28:27:69 | MACOperation | | jca/Nonce.java:27:40:27:57 | Constant | | jca/Nonce.java:27:40:27:68 | Message | +| jca/Nonce.java:35:24:35:41 | Constant | | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | | jca/Nonce.java:38:18:38:20 | Key | +| jca/Nonce.java:39:20:39:24 | Message | | jca/Nonce.java:40:28:40:67 | KeyOperationOutput | | jca/Nonce.java:40:28:40:67 | MACOperation | | jca/Nonce.java:40:40:40:55 | Constant | @@ -1168,6 +1177,7 @@ | jca/Nonce.java:63:44:63:52 | Message | | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | | jca/Nonce.java:78:18:78:20 | Key | +| jca/Nonce.java:79:20:79:24 | Message | | jca/Nonce.java:80:28:80:67 | KeyOperationOutput | | jca/Nonce.java:80:28:80:67 | MACOperation | | jca/Nonce.java:80:40:80:55 | Constant | @@ -1176,6 +1186,7 @@ | jca/Nonce.java:93:16:93:35 | Key | | jca/Nonce.java:93:16:93:35 | KeyGeneration | | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | +| jca/Nonce.java:104:32:104:36 | RandomNumberGeneration | | jca/Nonce.java:112:16:112:33 | Constant | | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | | jca/PrngTest.java:153:21:153:23 | Constant | @@ -1254,7 +1265,7 @@ | jca/SignatureOperation.java:117:26:117:29 | Message | | jca/SignatureOperation.java:118:16:118:41 | VerifyOperation | | jca/SignatureOperation.java:118:33:118:40 | SignatureInput | -| jca/SignatureOperation.java:132:61:132:69 | Constant | +| jca/SignatureOperation.java:132:61:132:69 | KeyOperationAlgorithm | | jca/SignatureOperation.java:133:16:133:36 | Key | | jca/SignatureOperation.java:133:16:133:36 | KeyGeneration | | jca/SignatureOperation.java:142:53:142:61 | KeyOperationAlgorithm | From c30e9a96d4595d2f4f9142bb8047ff672af98189 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:00:29 +0100 Subject: [PATCH 160/965] Rust: Accept changes to other test expectations. --- .../security/CWE-089/SqlInjection.expected | 192 +++++++++--------- .../CWE-312/CleartextLogging.expected | 92 +++++---- .../CWE-312/CleartextStorageDatabase.expected | 82 ++++---- 3 files changed, 190 insertions(+), 176 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 45ce48f2ef3..69b561d7f5d 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -15,156 +15,159 @@ edges | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:5 | | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:6 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:10 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:11 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:14 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:14 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:15 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:15 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:12 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:16 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:13 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:13 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:13 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:9 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:13 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:14 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:10 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:14 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:16 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:17 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:17 | +| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:18 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:13 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:9 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:13 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:14 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:10 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:14 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:9 | | sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | | sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:7 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:13 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:9 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:13 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:14 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:10 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:14 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:16 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:17 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:17 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:18 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:12 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:16 | +| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:13 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:9 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | | sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:7 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:3 Sink:MaD:3 | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:3 Sink:MaD:3 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:2 Sink:MaD:2 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:11 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:15 | -| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:12 | +| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:12 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:16 | +| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:13 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:13 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:9 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:13 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:14 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:10 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:14 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:8 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:9 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | | sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:7 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:9 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:13 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:10 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:14 | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:1 Sink:MaD:1 | models @@ -174,17 +177,18 @@ models | 4 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 5 | Source: std::env::args; ReturnValue.Element; commandargs | | 6 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 7 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 8 | Summary: ::add; Argument[self]; ReturnValue; value | -| 9 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 10 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 11 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 14 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 15 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 16 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 17 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 7 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 8 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | +| 9 | Summary: ::add; Argument[self]; ReturnValue; value | +| 10 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 11 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 13 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 14 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 15 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 16 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 17 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 18 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | sqlx.rs:47:9:47:18 | arg_string | semmle.label | arg_string | | sqlx.rs:47:22:47:35 | ...::args | semmle.label | ...::args | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 6e67ec737c2..bf19b1a25d5 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -138,6 +138,7 @@ edges | test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | | | test_logging.rs:96:14:96:49 | ... + ... | test_logging.rs:96:9:96:10 | m2 | provenance | | | test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | | +| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:18 | | test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 | | test_logging.rs:96:41:96:49 | &password [&ref] | test_logging.rs:96:14:96:49 | ... + ... | provenance | MaD:17 | | test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config | @@ -146,8 +147,8 @@ edges | test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | | test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:22:99:45 | { ... } | provenance | | | test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | -| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | | test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:9 | ...::log | provenance | MaD:12 Sink:MaD:12 | | test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:10 | ...::log | provenance | MaD:12 Sink:MaD:12 | @@ -168,8 +169,8 @@ edges | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | | test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:42:176:78 | { ... } | provenance | | | test_logging.rs:176:42:176:78 | ...::must_use(...) | test_logging.rs:176:34:176:79 | MacroExpr | provenance | | -| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | | | test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | @@ -177,8 +178,8 @@ edges | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | | test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:44:180:80 | { ... } | provenance | | | test_logging.rs:180:44:180:80 | ...::must_use(...) | test_logging.rs:180:36:180:81 | MacroExpr | provenance | | -| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | | | test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | | | test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | @@ -229,64 +230,64 @@ edges | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed [Some] | provenance | MaD:10 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | -| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:21 | -| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:19 | -| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:21 | +| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:22 | +| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:20 | +| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:22 | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:21 | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:19 | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:21 | -| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:22 | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:20 | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:22 | +| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | -| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:20 | -| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:18 | +| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:21 | +| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | -| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:20 | -| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:18 | -| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:21 | +| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:19 | +| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | -| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:20 | -| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:18 | +| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:21 | +| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | -| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:20 | -| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:18 | -| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:21 | +| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:19 | +| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | -| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:20 | -| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:18 | +| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:21 | +| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | -| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:20 | -| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:18 | -| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:21 | +| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:19 | +| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | -| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:20 | -| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:18 | +| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:21 | +| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | -| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:20 | -| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:18 | -| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:22 | -| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:23 | +| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:21 | +| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:19 | +| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:23 | +| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:24 | | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | models | 1 | Sink: ::log_expect; Argument[0]; log-injection | @@ -305,13 +306,14 @@ models | 14 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | | 15 | Sink: std::io::stdio::_print; Argument[0]; log-injection | | 16 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 17 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 18 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 19 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 20 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 21 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 22 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 23 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 17 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 18 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 19 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 20 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 21 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 22 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 23 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 24 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | test_logging.rs:42:5:42:10 | ...::log | semmle.label | ...::log | | test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected index 3f0171042a1..b8ab8dc3cf0 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected @@ -9,75 +9,81 @@ | test_storage.rs:204:31:204:37 | prepare | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:31:204:37 | prepare | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | edges | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:9 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:8 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:9 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:11 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:10 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:39 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:9 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:8 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:9 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:11 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:10 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:9 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:8 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:9 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:11 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:10 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:9 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:8 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:9 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:11 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:10 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:9 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:8 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:9 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:11 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:10 | +| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | | -| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:7 | +| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:8 | +| test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:9 | | test_storage.rs:71:25:71:121 | ... + ... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | | | test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | | | test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | | +| test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:7 | | test_storage.rs:71:96:71:114 | &... | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:6 | | test_storage.rs:71:96:71:114 | &... [&ref] | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:6 | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... | provenance | Config | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... [&ref] | provenance | | -| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | -| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | +| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | +| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | +| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:100:25:100:46 | insert_query2.as_str() | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:9 | -| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:9 | +| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:11 | +| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:10 | +| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:115:27:115:48 | insert_query2.as_str() | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | -| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | -| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | +| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | +| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | +| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:119:25:119:46 | insert_query2.as_str() | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | -| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | +| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | +| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | +| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:125:25:125:46 | insert_query2.as_str() | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | -| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:8 | -| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:9 | +| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | +| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | +| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:139:25:139:46 | insert_query2.as_str() | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:189:9:189:24 | insert_query_bad | test_storage.rs:194:25:194:40 | insert_query_bad | provenance | | | test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | | -| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:7 | +| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:8 | +| test_storage.rs:189:28:189:117 | ... + ... | test_storage.rs:189:28:189:124 | ... + ... | provenance | MaD:9 | | test_storage.rs:189:28:189:124 | ... + ... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | | | test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:9:189:24 | insert_query_bad | provenance | | | test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | | +| test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:7 | | test_storage.rs:189:99:189:117 | &... | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:6 | | test_storage.rs:189:99:189:117 | &... [&ref] | test_storage.rs:189:28:189:117 | ... + ... | provenance | MaD:6 | | test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:189:99:189:117 | &... | provenance | Config | | test_storage.rs:189:100:189:117 | get_phone_number(...) | test_storage.rs:189:99:189:117 | &... [&ref] | provenance | | | test_storage.rs:190:9:190:24 | select_query_bad | test_storage.rs:196:35:196:50 | select_query_bad | provenance | | | test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | | -| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:28:190:109 | ... + ... | provenance | MaD:7 | +| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:28:190:109 | ... + ... | provenance | MaD:8 | +| test_storage.rs:190:28:190:103 | ... + ... | test_storage.rs:190:28:190:109 | ... + ... | provenance | MaD:9 | | test_storage.rs:190:28:190:109 | ... + ... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | | | test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:9:190:24 | select_query_bad | provenance | | | test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | | +| test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:7 | | test_storage.rs:190:85:190:103 | &... | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:6 | | test_storage.rs:190:85:190:103 | &... [&ref] | test_storage.rs:190:28:190:103 | ... + ... | provenance | MaD:6 | | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:190:85:190:103 | &... | provenance | Config | @@ -101,10 +107,12 @@ models | 3 | Sink: ::query_row; Argument[0]; sql-injection | | 4 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | | 5 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | -| 6 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 7 | Summary: ::add; Argument[self]; ReturnValue; value | -| 8 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 9 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 6 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 7 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 8 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | +| 9 | Summary: ::add; Argument[self]; ReturnValue; value | +| 10 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | nodes | test_storage.rs:71:9:71:21 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:71:25:71:114 | ... + ... | semmle.label | ... + ... | From c56de30248251276bcf7c7cda48f8ac0e23ecd2f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:16:54 +0100 Subject: [PATCH 161/965] Rust: Fix merge conflict in .expected file. --- .../dataflow/sources/InlineFlow.expected | 1147 +++++------------ 1 file changed, 296 insertions(+), 851 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index f07a8ea78fb..34abf2b74e8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -2,59 +2,6 @@ models | 1 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | | 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | | 3 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | -<<<<<<< HEAD -| 4 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 5 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 7 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 8 | Source: ::file_name; ReturnValue; file | -| 9 | Source: ::path; ReturnValue; file | -| 10 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 11 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 12 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 13 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 14 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 15 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 16 | Source: ::file_name; ReturnValue; file | -| 17 | Source: ::path; ReturnValue; file | -| 18 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 19 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 20 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 21 | Source: std::env::args; ReturnValue.Element; commandargs | -| 22 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 23 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 24 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 25 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 26 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 27 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 28 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 29 | Source: std::fs::read; ReturnValue; file | -| 30 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 31 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 32 | Source: std::fs::read_to_string; ReturnValue; file | -| 33 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 34 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 35 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 36 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 37 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 38 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 39 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 40 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 41 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 42 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | -| 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 44 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 45 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 50 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 54 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -======= | 4 | Source: ::to; Argument[0].Parameter[0..7]; remote | | 5 | Source: ::to; Argument[0].Parameter[0..7]; remote | | 6 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | @@ -95,154 +42,96 @@ models | 41 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 42 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 44 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 45 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 50 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 54 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | ->>>>>>> main -| 55 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 56 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 57 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 58 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 59 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 60 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 61 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 62 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 63 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 65 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 66 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 71 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -<<<<<<< HEAD -| 81 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 82 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 83 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 84 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 85 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 86 | Summary: ::new; Argument[0]; ReturnValue; value | -| 87 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 88 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 89 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 90 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 91 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 92 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 93 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 94 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 95 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 96 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 98 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 100 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 101 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 102 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 103 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 104 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 106 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 107 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 108 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 109 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 110 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 111 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 112 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 113 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 114 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 115 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 116 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | -======= -| 81 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | -| 82 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | -| 83 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | -| 84 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | -| 85 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 86 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 87 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 88 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 89 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 90 | Summary: ::new; Argument[0]; ReturnValue; value | -| 91 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 92 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 93 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 94 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 95 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 98 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 100 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 101 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 102 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 103 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 104 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 106 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 44 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | +| 45 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 46 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 50 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 51 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 54 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 55 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 56 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 57 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 58 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 59 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 60 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 61 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 62 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 63 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 64 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 66 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 67 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 68 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 71 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 72 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 73 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 81 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 82 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 83 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | +| 84 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | +| 85 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | +| 86 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 87 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 88 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 89 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 90 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 91 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 92 | Summary: ::new; Argument[0]; ReturnValue; value | +| 93 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 94 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 95 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 96 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 97 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 98 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 99 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 100 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 101 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 102 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 103 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 104 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 105 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 106 | Summary: ::read; Argument[self]; Argument[0]; taint | | 107 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 108 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 109 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 110 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 111 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 112 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 113 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 114 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 115 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 116 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 118 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 119 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 120 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 121 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 122 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 123 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 124 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 125 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 126 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 127 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 128 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 129 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 130 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 131 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | ->>>>>>> main +| 108 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 109 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 110 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 111 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 112 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 113 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 114 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 115 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 116 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 117 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 118 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 119 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 120 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 121 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 122 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 123 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:28 | | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:29 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -<<<<<<< HEAD -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:87 | -| test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | -| test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:27 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:84 | -======= | test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:28 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:91 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:93 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | | test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:29 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:88 | ->>>>>>> main +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:90 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | @@ -258,39 +147,21 @@ edges | test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -<<<<<<< HEAD -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:43 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:84 | -| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | -| test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:22 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:43 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:84 | -| test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | -| test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:21 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:43 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:84 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:91 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:88 | -======= | test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:23 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:88 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:45 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:90 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | | test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:88 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:45 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:90 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | | test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:23 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:88 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:95 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:92 | ->>>>>>> main +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:45 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:90 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:97 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:94 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | | test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:23 | @@ -299,86 +170,46 @@ edges | test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -<<<<<<< HEAD -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:87 | -| test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | -| test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:24 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:87 | -| test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | -| test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:25 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:83 | -======= | test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:25 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:91 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:93 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | | test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:91 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:93 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | | test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:27 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:87 | ->>>>>>> main +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:89 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | | test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -<<<<<<< HEAD -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:98 | -| test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | -| test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | -| test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:88 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:98 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:88 | -| test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | -| test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:88 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:99 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:88 | -| test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | -| test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:88 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:97 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:88 | -======= -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:102 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:104 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | | test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:102 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:92 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:94 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:104 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:94 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | | test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:103 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:92 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:94 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:105 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:94 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | | test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:101 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:92 | ->>>>>>> main +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:94 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:103 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:94 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | | test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -<<<<<<< HEAD -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:96 | -======= -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:100 | ->>>>>>> main +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:102 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | @@ -386,33 +217,19 @@ edges | test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -<<<<<<< HEAD -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:94 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:100 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:95 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:95 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:20 | -======= -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:98 | -| test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | -| test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | -| test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:101 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:101 | | test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | ->>>>>>> main | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -<<<<<<< HEAD -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:84 | -======= -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:88 | ->>>>>>> main +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:90 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -431,214 +248,116 @@ edges | test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | | test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -<<<<<<< HEAD -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | -======= | test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:114 | ->>>>>>> main +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:111 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | -| test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | -| test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:107 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | -======= | test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:66 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | | test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:120 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:119 | ->>>>>>> main +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:113 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:67 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:108 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | -| test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | -| test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:106 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | -======= | test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:121 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:122 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:114 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:67 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | | test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:117 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:116 | ->>>>>>> main +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:112 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | -| test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:54 | -| test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:104 | -======= | test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:61 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:111 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:56 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | | test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:113 | ->>>>>>> main +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:110 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -<<<<<<< HEAD -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:103 | -| test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:104 | -======= -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:112 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:109 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | | test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:113 | ->>>>>>> main +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:110 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:58 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:104 | -======= | test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:113 | ->>>>>>> main +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:110 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:59 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:104 | -======= | test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:113 | ->>>>>>> main +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:110 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:42 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:42 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | -| test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:104 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:84 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:88 | -| test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:88 | -| test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | -| test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:33 MaD:33 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:104 | -| test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:110 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:110 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:44 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:44 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:60 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | | test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:113 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:88 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:92 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:110 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:90 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:94 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:92 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:94 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:57 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | | test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:113 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:110 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:74 | | test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:78 | -<<<<<<< HEAD -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:80 | | test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:79 | -<<<<<<< HEAD -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:81 | | test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:74 | -<<<<<<< HEAD -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:76 | | test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:80 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:76 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:75 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:77 | -<<<<<<< HEAD -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:82 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:78 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:77 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:79 | | test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | @@ -656,116 +375,67 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:73 | -<<<<<<< HEAD -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -======= +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:75 | | test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | ->>>>>>> main | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:67 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:69 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:112 | -======= | test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:126 | ->>>>>>> main +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:118 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -<<<<<<< HEAD -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:111 | -| test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:112 | -======= -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:125 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:117 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | | test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:126 | ->>>>>>> main +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:118 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:69 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:71 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:112 | -======= | test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:126 | ->>>>>>> main +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:118 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:112 | -======= | test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:126 | ->>>>>>> main +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:118 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:114 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | -| test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:112 | -| test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | -| test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:84 | -======= -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:120 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:120 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:73 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | | test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:126 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:118 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:88 | ->>>>>>> main +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:90 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:68 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:70 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -<<<<<<< HEAD -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:37 MaD:37 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:112 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:113 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:113 | -| test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | -| test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | -| test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:84 | -======= | test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:126 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:118 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:119 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:119 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:88 | ->>>>>>> main +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:90 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | @@ -795,17 +465,10 @@ edges | test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | | test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | | test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -<<<<<<< HEAD -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:9 MaD:9 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:40 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:40 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:110 | -======= | test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:11 MaD:11 | | test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | | test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:124 | ->>>>>>> main +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:116 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | @@ -844,30 +507,15 @@ edges | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -<<<<<<< HEAD -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:101 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:102 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:10 | -======= -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:104 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:107 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:106 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:109 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:108 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:66 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:108 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:67 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:61 | | test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:12 | ->>>>>>> main | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | | test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | @@ -886,99 +534,66 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -<<<<<<< HEAD -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:88 | -======= -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:92 | ->>>>>>> main +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:94 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | | test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:88 | -======= -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:92 | ->>>>>>> main +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:94 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | | test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -<<<<<<< HEAD -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:100 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:88 | -======= -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:92 | ->>>>>>> main +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:106 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:94 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | | test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:13 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:61 | -<<<<<<< HEAD -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | -======= +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:63 | | test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | ->>>>>>> main | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | | test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | | test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:12 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:67 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:62 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:66 | -<<<<<<< HEAD -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:10 | -======= +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:68 | | test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | ->>>>>>> main | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:67 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:79 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:74 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:80 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:76 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:75 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:77 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:73 | -<<<<<<< HEAD -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:14 | -======= +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:80 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:81 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:76 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:82 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:78 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:77 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:79 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:75 | | test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:16 | ->>>>>>> main | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | | test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | @@ -1013,7 +628,7 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:74 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | @@ -1022,67 +637,36 @@ edges | test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | | test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | -<<<<<<< HEAD -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:4 | -| test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | -| test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | -| test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -======= | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:41 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:6 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | | test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | ->>>>>>> main +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:52 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | -<<<<<<< HEAD -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | -| test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | -| test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | -| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:5 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | -======= | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:41 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | | test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | ->>>>>>> main +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:52 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:62 | -<<<<<<< HEAD -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:109 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:12 | -======= -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:123 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:115 | | test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:14 | ->>>>>>> main | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | @@ -1093,30 +677,18 @@ edges | test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:15 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:56 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:66 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:58 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:68 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -<<<<<<< HEAD -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:104 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:110 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:115 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:116 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:117 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:18 | -======= -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:113 | -| test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | -| test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | -| test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:129 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:130 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:131 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:121 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:74 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:122 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:123 | | test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:20 | ->>>>>>> main | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | | test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | @@ -1145,128 +717,69 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -======= | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | ->>>>>>> main +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:53 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:92 | -======= -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:96 | ->>>>>>> main +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:98 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:85 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:86 | -| test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | -| test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | -======= -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:92 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | ->>>>>>> main +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:52 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -======= | test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | ->>>>>>> main +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:45 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:39 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:45 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:93 | -| test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | -| test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | -| test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:85 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:86 | -======= -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:47 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:53 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:47 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:50 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:48 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:49 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:54 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:55 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:97 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:99 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:90 | ->>>>>>> main +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:92 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -1278,19 +791,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:85 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:86 | -======= -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | -| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:90 | ->>>>>>> main +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:92 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -1306,55 +811,30 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:85 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:86 | -| test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | -======= -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:92 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | ->>>>>>> main +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:52 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:38 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -======= | test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | ->>>>>>> main +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:44 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:46 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:85 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:86 | -======= -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | -| test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | -| test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:90 | ->>>>>>> main +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:91 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:92 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -1369,131 +849,96 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -<<<<<<< HEAD -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:48 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:50 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:46 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:48 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:52 | -======= -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | -| test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | -| test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | -| test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | -| test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | -| test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | -| test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | ->>>>>>> main +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:54 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -<<<<<<< HEAD -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:96 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:82 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:90 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:81 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:89 | -======= -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | ->>>>>>> main +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:84 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:86 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:83 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:84 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:85 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | web_frameworks.rs:100:13:100:13 | a [tuple.1] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:82 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:88 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:96 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:87 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:95 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:83 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:84 | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | web_frameworks.rs:111:17:111:17 | b | provenance | | | web_frameworks.rs:111:14:111:14 | a | web_frameworks.rs:113:14:113:14 | a | provenance | | @@ -1501,10 +946,10 @@ edges | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:84 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:86 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:83 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:84 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:85 | | web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.0] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.1] | web_frameworks.rs:132:14:132:14 | a | provenance | | From ee86655742a97fc0c7f1e1dd1e9c203ac553ef34 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:37:57 +0100 Subject: [PATCH 162/965] Rust: Update another affected test. --- .../CWE-825/AccessAfterLifetime.expected | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected index e1e2ba70026..f58c58bc896 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -164,7 +164,7 @@ edges | lifetime.rs:443:6:443:7 | p1 | lifetime.rs:446:13:446:14 | p1 | provenance | | | lifetime.rs:443:6:443:7 | p1 | lifetime.rs:450:2:450:10 | return p1 | provenance | | | lifetime.rs:443:23:443:44 | ...::from_ref(...) | lifetime.rs:443:6:443:7 | p1 | provenance | | -| lifetime.rs:443:42:443:43 | r1 | lifetime.rs:443:23:443:44 | ...::from_ref(...) | provenance | MaD:4 | +| lifetime.rs:443:42:443:43 | r1 | lifetime.rs:443:23:443:44 | ...::from_ref(...) | provenance | MaD:5 | | lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:454:11:454:29 | get_ptr_from_ref(...) | provenance | | | lifetime.rs:450:2:450:10 | return p1 | lifetime.rs:460:13:460:31 | get_ptr_from_ref(...) | provenance | | | lifetime.rs:454:6:454:7 | p1 | lifetime.rs:459:13:459:14 | p1 | provenance | | @@ -177,7 +177,8 @@ edges | lifetime.rs:654:4:654:7 | str2 | lifetime.rs:655:22:655:25 | str2 | provenance | | | lifetime.rs:654:11:654:35 | ... + ... | lifetime.rs:654:4:654:7 | str2 | provenance | | | lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:4:654:7 | str2 | provenance | | -| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:3 | +| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:2 | +| lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:654:11:654:35 | ... + ... | provenance | MaD:1 | | lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:659:15:659:18 | ref1 | provenance | | | lifetime.rs:655:4:655:7 | ref1 | lifetime.rs:667:14:667:17 | ref1 | provenance | | | lifetime.rs:655:4:655:7 | ref1 [&ref] | lifetime.rs:659:15:659:18 | ref1 | provenance | | @@ -218,19 +219,20 @@ edges | main.rs:18:9:18:10 | p1 [&ref] | main.rs:21:19:21:20 | p1 | provenance | | | main.rs:18:9:18:10 | p1 [&ref] | main.rs:29:19:29:20 | p1 | provenance | | | main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | main.rs:18:9:18:10 | p1 [&ref] | provenance | | -| main.rs:18:26:18:28 | &b1 | main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | provenance | MaD:2 | +| main.rs:18:26:18:28 | &b1 | main.rs:18:14:18:29 | ...::as_ptr(...) [&ref] | provenance | MaD:4 | | main.rs:44:9:44:10 | p2 [&ref] | main.rs:51:23:51:24 | p2 | provenance | | | main.rs:44:9:44:10 | p2 [&ref] | main.rs:64:23:64:24 | p2 | provenance | | | main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | main.rs:44:9:44:10 | p2 [&ref] | provenance | | -| main.rs:44:26:44:28 | &b2 | main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | provenance | MaD:2 | +| main.rs:44:26:44:28 | &b2 | main.rs:44:14:44:29 | ...::as_ptr(...) [&ref] | provenance | MaD:4 | | main.rs:47:9:47:10 | p3 [&ref] | main.rs:52:23:52:24 | p3 | provenance | | | main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | main.rs:47:9:47:10 | p3 [&ref] | provenance | | -| main.rs:47:30:47:36 | &mut b3 | main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | provenance | MaD:1 | +| main.rs:47:30:47:36 | &mut b3 | main.rs:47:14:47:37 | ...::as_mut_ptr(...) [&ref] | provenance | MaD:3 | models -| 1 | Summary: ::as_mut_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | -| 2 | Summary: ::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | -| 3 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 4 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | +| 1 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 2 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 3 | Summary: ::as_mut_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | +| 4 | Summary: ::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | +| 5 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | nodes | deallocation.rs:148:6:148:7 | p1 | semmle.label | p1 | | deallocation.rs:148:30:148:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | From 08ca643cd30d616e0d5a2839fb9929a7f17c8f91 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:47:59 +0100 Subject: [PATCH 163/965] Rust: Test sources for mysql and mysql_async. --- .../library-tests/dataflow/sources/Cargo.lock | 408 +++++++++++++++++- .../dataflow/sources/TaintSources.expected | 4 +- .../dataflow/sources/options.yml | 2 + .../library-tests/dataflow/sources/test.rs | 214 +++++++++ 4 files changed, 622 insertions(+), 6 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock index 887f9016bc7..a95c795df10 100644 --- a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock +++ b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock @@ -224,6 +224,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "async-channel" version = "1.9.0" @@ -520,12 +526,33 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "btoi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" +dependencies = [ + "num-traits", +] + +[[package]] +name = "bufstream" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" + [[package]] name = "bumpalo" version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.10.1" @@ -647,6 +674,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -663,6 +699,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "deranged" version = "0.4.0" @@ -693,6 +764,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "derive_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "digest" version = "0.10.7" @@ -791,6 +873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", + "libz-sys", "miniz_oxide", ] @@ -1049,6 +1132,11 @@ name = "hashbrown" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "headers" @@ -1074,6 +1162,12 @@ dependencies = [ "http 1.3.1", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.5.2" @@ -1311,6 +1405,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "1.0.3" @@ -1348,6 +1448,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "io-enum" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d197db2f7ebf90507296df3aebaf65d69f5dce8559d8dbd82776a6cadab61bbf" +dependencies = [ + "derive_utils", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -1399,6 +1508,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "keyed_priority_queue" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +dependencies = [ + "indexmap", +] + [[package]] name = "kv-log-macro" version = "1.0.7" @@ -1442,6 +1560,17 @@ dependencies = [ "windows-targets 0.53.2", ] +[[package]] +name = "libz-sys" +version = "1.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -1496,6 +1625,21 @@ dependencies = [ "value-bag", ] +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + +[[package]] +name = "lru" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" +dependencies = [ + "hashbrown", +] + [[package]] name = "matchit" version = "0.8.4" @@ -1551,6 +1695,111 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "mysql" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2510a735f601bab18202b07ea0a197bd1d130d3a5ce2edf4577d225f0c3ee4" +dependencies = [ + "bufstream", + "bytes", + "crossbeam-queue", + "crossbeam-utils", + "flate2", + "io-enum", + "libc", + "lru 0.12.5", + "mysql_common", + "named_pipe", + "pem", + "percent-encoding", + "socket2", + "twox-hash", + "url", +] + +[[package]] +name = "mysql-common-derive" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" +dependencies = [ + "darling", + "heck", + "num-bigint", + "proc-macro-crate", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", + "termcolor", + "thiserror", +] + +[[package]] +name = "mysql_async" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "277ce2f2459b2af4cc6d0a0b7892381f80800832f57c533f03e2845f4ea331ea" +dependencies = [ + "bytes", + "crossbeam-queue", + "flate2", + "futures-core", + "futures-sink", + "futures-util", + "keyed_priority_queue", + "lru 0.14.0", + "mysql_common", + "pem", + "percent-encoding", + "rand", + "serde", + "serde_json", + "socket2", + "thiserror", + "tokio", + "tokio-util", + "twox-hash", + "url", +] + +[[package]] +name = "mysql_common" +version = "0.35.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" +dependencies = [ + "base64", + "bitflags", + "btoi", + "byteorder", + "bytes", + "crc32fast", + "flate2", + "getrandom 0.3.3", + "mysql-common-derive", + "num-bigint", + "num-traits", + "regex", + "saturating", + "serde", + "serde_json", + "sha1", + "sha2", + "thiserror", + "uuid", +] + +[[package]] +name = "named_pipe" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" +dependencies = [ + "winapi", +] + [[package]] name = "native-tls" version = "0.2.14" @@ -1590,12 +1839,40 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "object" version = "0.36.7" @@ -1684,6 +1961,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64", + "serde_core", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1842,6 +2129,28 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.95" @@ -2090,6 +2399,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "saturating" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" + [[package]] name = "schannel" version = "0.1.27" @@ -2136,18 +2451,28 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -2199,6 +2524,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2242,6 +2578,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.6.1" @@ -2313,6 +2655,15 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "test" version = "0.0.1" @@ -2327,6 +2678,8 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", + "mysql", + "mysql_async", "poem", "reqwest", "rustls", @@ -2560,6 +2913,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + [[package]] name = "typenum" version = "1.18.0" @@ -2616,6 +2975,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "value-bag" version = "1.11.1" @@ -2786,6 +3155,37 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-link" version = "0.1.3" diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 95799e494ef..b4a20aabedd 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -87,8 +87,8 @@ | test.rs:759:28:759:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:841:22:841:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:867:22:867:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:894:16:894:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:894:16:894:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | | test_futures_io.rs:19:15:19:32 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index 1fc6475170a..a9ad7291126 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -17,3 +17,5 @@ qltest_dependencies: - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } - warp = { version = "0.4.2", features = ["server"] } + - mysql = { version = "26.0.1" } + - mysql_async = { version = "0.36.1" } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 895a789cfaf..699bb1d3b74 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -889,6 +889,208 @@ fn test_rustls() -> std::io::Result<()> { Ok(()) } +mod test_mysql { + use mysql::*; + use mysql::prelude::*; + use super::sink; + + pub fn test_mysql() -> Result<(), Box> { + // connect through a MySQL connection pool + let mut pool = mysql::Pool::new("")?; + let mut conn = pool.get_conn()?; + + let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; + let mut row = &mut rows[0]; + + let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v1); // $ MISSING: hasTaintFlow + + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v2); // $ MISSING: hasTaintFlow + + let v3 : i64 = row.take(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v3); // $ MISSING: hasTaintFlow + + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v4); // $ MISSING: hasTaintFlow + + let value5 = row.as_ref(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + if let mysql::Value::Int(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow + } else if let mysql::Value::Bytes(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow + } + + let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v6); // $ MISSING: hasTaintFlow + + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ MISSING: Alert[rust/summary/taint-sources] + sink(t1.nth(0).unwrap().unwrap().get::(0).unwrap()); // $ MISSING: hasTaintFlow + for row in t1 { + for v in row { + sink(v); // $ MISSING: hasTaintFlow + } + } + + let _ = conn.query_map( + "SELECT id FROM person", + |values: i64| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + sink(values); // $ MISSING: hasTaintFlow + } + )?; + + let _ = conn.query_map( + "SELECT id, name, age FROM person", + |values: (i64, String, i32)| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + sink(values.0); // $ MISSING: hasTaintFlow + sink(values.1); // $ MISSING: hasTaintFlow + sink(values.2); // $ MISSING: hasTaintFlow + } + )?; + + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ MISSING: Alert[rust/summary/taint-sources] + sink(row); // $ MISSING: hasTaintFlow + acc + row + })?; + sink(total); // $ MISSING: hasTaintFlow + + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ MISSING: Alert[rust/summary/taint-sources] + let id: i64 = row.0; + let name: String = row.1; + let age: i32 = row.2; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + acc + 1 + })?; + + Ok(()) + } +} + +mod test_mysql_async { + use mysql_async::*; + use mysql_async::prelude::*; + use async_std::stream::StreamExt; + use super::sink; + + #[derive(Debug, PartialEq, Eq, Clone)] + struct Person { + id: i64, + name: String, + age: i32, + } + + pub async fn test_mysql_async() -> Result<()> { + // connect through a MySQL connection pool + let mut pool = mysql_async::Pool::new(""); + let mut conn = pool.get_conn().await?; + + let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; + let mut row = &mut rows[0]; + + let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v1); // $ MISSING: hasTaintFlow + + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v2); // $ MISSING: hasTaintFlow + + let v3 : i64 = row.take(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v3); // $ MISSING: hasTaintFlow + + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v4); // $ MISSING: hasTaintFlow + + let value5 = row.as_ref(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + if let mysql::Value::Int(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow + } else if let mysql::Value::Bytes(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow + } + + let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + sink(v6); // $ MISSING: hasTaintFlow + + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3)).await?; // $ MISSING: Alert[rust/summary/taint-sources] + for mut row in t1.stream::<(i64, String, i32)>().await? { + while let v = row.next().await { + let v = v.unwrap(); + sink(v); // $ MISSING: hasTaintFlow + } + } + + let _ = conn.query_map( + "SELECT id FROM person", + |values: i64| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + sink(values); // $ MISSING: hasTaintFlow + } + ).await?; + + let _ = conn.query_map( + "SELECT id, name, age FROM person", + |values: (i64, String, i32)| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + sink(values.0); // $ MISSING: hasTaintFlow + sink(values.1); // $ MISSING: hasTaintFlow + sink(values.2); // $ MISSING: hasTaintFlow + } + ).await?; + + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ MISSING: Alert[rust/summary/taint-sources] + sink(row); // $ MISSING: hasTaintFlow + acc + row + }).await?; + sink(total); // $ MISSING: hasTaintFlow + + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ MISSING: Alert[rust/summary/taint-sources] + let id: i64 = row.0; + let name: String = row.1; + let age: i32 = row.2; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + acc + 1 + }).await?; + + let ids = "SELECT id FROM person".with(()).map(&mut conn, + |person: i64| -> i64 { + sink(person); // $ MISSING: hasTaintFlow + person + } + ).await?; + sink(ids[0]); // $ MISSING: hasTaintFlow + + let ages = "SELECT id, name, age FROM person".with(()).map(&mut conn, // $ MISSING: Alert[rust/summary/taint-sources] + |person: (i64, String, i32)| -> i32 { + sink(person.0); // $ MISSING: hasTaintFlow + sink(person.1); // $ MISSING: hasTaintFlow + sink(person.2); // $ MISSING: hasTaintFlow + person.2 + } + ).await?; + sink(ages[0]); // $ MISSING: hasTaintFlow + + { + let mut stream = "SELECT id FROM person".stream::(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] + while let Some(row) = stream.next().await { + let id = row?; + sink(id); // $ MISSING: hasTaintFlow + } + } + + { + let mut stream = "SELECT id, name, age FROM person".stream::<(i64, String, i32), _>(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] + while let Some(row) = stream.next().await { + let (id, name, age) = row?; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + } + } + + Ok(()) + } +} + #[tokio::main] async fn main() -> Result<(), Box> { let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::().unwrap(); // $ Alert[rust/summary/taint-sources] @@ -980,5 +1182,17 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_mysql..."); + match test_mysql::test_mysql() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_mysql_async..."); + match futures::executor::block_on(test_mysql_async::test_mysql_async()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + Ok(()) } From f310d535aebe01509ab63049fedd134a9f3cfaae Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:53:00 +0100 Subject: [PATCH 164/965] Rust: Add models. --- .../rust/frameworks/mysql-async.model.yml | 24 + .../codeql/rust/frameworks/mysql.model.yml | 38 + .../dataflow/sources/InlineFlow.expected | 1072 +++++++++-------- .../dataflow/sources/TaintSources.expected | 14 + .../library-tests/dataflow/sources/test.rs | 52 +- 5 files changed, 694 insertions(+), 506 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml index fc38ca2baed..c4b5becf358 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml @@ -11,3 +11,27 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - ["::query_iter", "Argument[0]", "sql-injection", "manual"] - ["::prep", "Argument[0]", "sql-injection", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["<_ as mysql_async::queryable::Queryable>::query", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_first", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_first", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[2].Parameter[1]", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] + - ["::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[1]", "Argument[2].Parameter[0]", "value", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[2].ReturnValue", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[2]", "Argument[3].Parameter[0]", "value", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[3].ReturnValue", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[1].ReturnValue", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "value", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[2].ReturnValue", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml index 55a3cf7ee72..13ae45e03b1 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -14,3 +14,41 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[0]", "sql-injection", "manual"] - ["::prep", "Argument[0]", "sql-injection", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["<_ as mysql::conn::queryable::Queryable>::query", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_opt", "ReturnValue.Field[core::result::Result::Ok(0)].Element.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_opt", "ReturnValue.Field[core::result::Result::Ok(0)].Element.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_first", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_first", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_first_opt", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_first_opt", "ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[2].Parameter[1]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[2].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[3].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[1].Parameter[0].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_map_opt", "Argument[2].Parameter[0].Field[core::result::Result::Ok(0)]", "database", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[1]", "Argument[2].Parameter[0]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[2].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[2]", "Argument[3].Parameter[0]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[3].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[1]", "Argument[2].Parameter[0]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[2].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[2]", "Argument[3].Parameter[0]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[3].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)]", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[1].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[1].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_map", "Argument[2].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "value", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_map_opt", "Argument[2].ReturnValue", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "value", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index e4b59a657e8..9fb46b84678 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -1,150 +1,160 @@ models -| 1 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | -| 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | -| 3 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | -| 4 | Source: ::to; Argument[0].Parameter[0..7]; remote | -| 5 | Source: ::to; Argument[0].Parameter[0..7]; remote | -| 6 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 7 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 8 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 9 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 10 | Source: ::file_name; ReturnValue; file | -| 11 | Source: ::path; ReturnValue; file | -| 12 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 13 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 14 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 15 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 16 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 17 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 18 | Source: ::file_name; ReturnValue; file | -| 19 | Source: ::path; ReturnValue; file | -| 20 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 21 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 22 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 23 | Source: std::env::args; ReturnValue.Element; commandargs | -| 24 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 25 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 26 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 27 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 28 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 29 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 30 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 31 | Source: std::fs::read; ReturnValue; file | -| 32 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 33 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 34 | Source: std::fs::read_to_string; ReturnValue; file | -| 35 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 36 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 37 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 38 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 39 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 40 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 41 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 42 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 43 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 44 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 45 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 46 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 47 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 48 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 49 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 50 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 51 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 52 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 53 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 54 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 55 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 56 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 57 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 58 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 59 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 60 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 61 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 62 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 63 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 64 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 65 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 66 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 67 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 68 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 69 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 70 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 71 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 72 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 74 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 75 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 77 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 78 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 79 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 81 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | -| 82 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | -| 83 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | -| 84 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | -| 85 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 86 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 87 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 88 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 89 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 90 | Summary: ::new; Argument[0]; ReturnValue; value | -| 91 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 92 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 93 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 94 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 95 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 96 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 98 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 99 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 100 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 101 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 102 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 103 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 104 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 105 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 106 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 107 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 108 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 109 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 110 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 111 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 112 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 113 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 114 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 115 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 116 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 118 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 119 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 120 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 121 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 122 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 123 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 124 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 125 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 126 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 127 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 128 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 129 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 130 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 131 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 1 | Source: <_ as mysql::conn::queryable::Queryable>::query_first; ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; database | +| 2 | Source: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | +| 3 | Source: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | +| 4 | Source: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | +| 5 | Source: <_ as mysql_async::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | +| 6 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | +| 7 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | +| 8 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | +| 9 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 10 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 11 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 12 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 13 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 14 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 15 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)]; database | +| 16 | Source: ::file_name; ReturnValue; file | +| 17 | Source: ::path; ReturnValue; file | +| 18 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 19 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 20 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 21 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 22 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 23 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 24 | Source: ::file_name; ReturnValue; file | +| 25 | Source: ::path; ReturnValue; file | +| 26 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 27 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 28 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 29 | Source: std::env::args; ReturnValue.Element; commandargs | +| 30 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 31 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 32 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 33 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 34 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 35 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 36 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 37 | Source: std::fs::read; ReturnValue; file | +| 38 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 39 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 40 | Source: std::fs::read_to_string; ReturnValue; file | +| 41 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 42 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 43 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 44 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 45 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 46 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 47 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 48 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 49 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 50 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 51 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 52 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 53 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 54 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 55 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 56 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 57 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 58 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 59 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 60 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 61 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | +| 62 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | +| 63 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 64 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 66 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 67 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 68 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 69 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 70 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 71 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 72 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 73 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 74 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 75 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 76 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 77 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 78 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 79 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 81 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 82 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 83 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 84 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 85 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 86 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 87 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 88 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 89 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | +| 90 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | +| 91 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | +| 92 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[3]; taint | +| 93 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 94 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 95 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 96 | Summary: ::add; Argument[0]; ReturnValue; taint | +| 97 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 98 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 99 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 100 | Summary: ::new; Argument[0]; ReturnValue; value | +| 101 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 102 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 103 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 104 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 105 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 106 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 107 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 108 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 109 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 110 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 111 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 112 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 113 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 114 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 115 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 116 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 117 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 118 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 119 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 120 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 121 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 122 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 123 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 124 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 125 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 126 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 127 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 128 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 129 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 130 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 131 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 132 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 133 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 134 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 135 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 136 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 137 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 138 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 139 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 140 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 141 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges -| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:28 | -| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:29 | +| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:34 | +| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:35 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:28 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:91 | +| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:34 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:101 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:29 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:88 | +| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:35 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:98 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | -| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:23 | -| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:43 | +| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:29 | +| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:49 | | test.rs:29:29:29:54 | ... .collect() [element] | test.rs:29:9:29:12 | args [element] | provenance | | | test.rs:30:9:30:15 | my_path [&ref] | test.rs:36:10:36:16 | my_path | provenance | | | test.rs:30:19:30:26 | &... [&ref] | test.rs:30:9:30:15 | my_path [&ref] | provenance | | @@ -155,89 +165,89 @@ edges | test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:23 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:88 | +| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:29 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:50 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:98 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:88 | +| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:30 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:50 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:98 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:23 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:44 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:88 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:95 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:92 | +| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:29 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:50 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:98 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:105 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:102 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | -| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:23 | +| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:29 | | test.rs:42:16:42:31 | ...::args(...) [element] | test.rs:42:9:42:11 | arg | provenance | | | test.rs:46:9:46:11 | arg | test.rs:47:14:47:16 | arg | provenance | | -| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:24 | +| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:30 | | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:25 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:91 | +| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:31 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:101 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:26 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:91 | +| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:32 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:101 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:27 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:87 | +| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:33 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:97 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | -| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:102 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:112 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:102 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:92 | +| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:102 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:112 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:102 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:103 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:92 | +| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:102 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:113 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:102 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:21 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:92 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:101 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:92 | +| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:102 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:111 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:102 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | -| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | +| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:100 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:110 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | | test.rs:77:9:77:22 | remote_string6 | test.rs:78:10:78:23 | remote_string6 | provenance | | -| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | +| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:98 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:108 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:99 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:22 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:109 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:109 | +| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:88 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:98 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -248,129 +258,129 @@ edges | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | test.rs:114:24:114:57 | await ... [Ok] | provenance | | | test.rs:114:24:114:57 | await ... [Ok] | test.rs:114:24:114:58 | TryExpr | provenance | | | test.rs:114:24:114:58 | TryExpr | test.rs:114:13:114:20 | response | provenance | | -| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | +| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:115:15:115:22 | response | test.rs:115:14:115:22 | &response | provenance | | | test.rs:121:9:121:20 | mut response | test.rs:122:11:122:18 | response | provenance | | | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | test.rs:121:24:121:57 | await ... [Ok] | provenance | | | test.rs:121:24:121:57 | await ... [Ok] | test.rs:121:24:121:58 | TryExpr | provenance | | | test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | -| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:9 | +| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:125 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:124 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:128 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:120 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:119 | +| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:130 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:129 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:121 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:122 | +| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:131 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:132 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:117 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:116 | +| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:127 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:126 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:59 | +| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:67 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:111 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:121 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:113 | +| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:123 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:112 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:122 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:113 | +| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:123 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:56 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:113 | +| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:123 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:113 | +| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:123 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:110 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:110 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:58 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:120 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:120 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:66 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:113 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:88 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:92 | +| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:123 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:98 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:102 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:92 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:102 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:55 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:63 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:35 MaD:35 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:113 | +| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:123 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:80 | +| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:86 | +| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:79 | -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:87 | +| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:74 | -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:82 | +| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:80 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:76 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:75 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:77 | -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:88 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:84 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:83 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:85 | +| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | @@ -388,150 +398,150 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:81 | +| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:67 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:75 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:126 | +| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:136 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:125 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:135 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:126 | +| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:136 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:69 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:77 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:126 | +| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:136 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:126 | +| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:136 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:128 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:71 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:138 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:138 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:79 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:126 | +| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:136 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:88 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:98 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:68 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:76 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:39 MaD:39 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:126 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:127 | +| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:136 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:137 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:137 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:88 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:98 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | | test.rs:396:32:396:54 | await ... [Ok, Some] | test.rs:396:32:396:55 | TryExpr [Some] | provenance | | | test.rs:396:32:396:55 | TryExpr [Some] | test.rs:396:19:396:28 | Some(...) [Some] | provenance | | | test.rs:408:13:408:18 | buffer | test.rs:409:14:409:19 | buffer | provenance | | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:30 | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:30 | -| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:31 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:36 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:36 | +| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:37 | | test.rs:408:31:408:55 | ...::read(...) [Ok] | test.rs:408:31:408:56 | TryExpr | provenance | | | test.rs:408:31:408:56 | TryExpr | test.rs:408:13:408:18 | buffer | provenance | | | test.rs:413:13:413:18 | buffer | test.rs:414:14:414:19 | buffer | provenance | | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:30 | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:30 | -| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:31 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:36 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:36 | +| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:37 | | test.rs:413:31:413:50 | ...::read(...) [Ok] | test.rs:413:31:413:51 | TryExpr | provenance | | | test.rs:413:31:413:51 | TryExpr | test.rs:413:13:413:18 | buffer | provenance | | | test.rs:418:13:418:18 | buffer | test.rs:419:14:419:19 | buffer | provenance | | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:33 | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:33 | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:34 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:39 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:39 | +| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:40 | | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | test.rs:418:22:418:52 | TryExpr | provenance | | | test.rs:418:22:418:52 | TryExpr | test.rs:418:13:418:18 | buffer | provenance | | | test.rs:425:13:425:16 | path | test.rs:426:14:426:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | +| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:48 | | test.rs:425:13:425:16 | path | test.rs:427:14:427:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | +| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:48 | | test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | | test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:11 MaD:11 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:42 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:42 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:124 | +| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:17 MaD:17 | +| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:48 | +| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:48 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:134 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | +| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:48 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | | test.rs:439:25:439:37 | e.file_name() | test.rs:439:13:439:21 | file_name | provenance | | -| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:10 MaD:10 | -| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:42 | +| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:16 MaD:16 | +| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:48 | | test.rs:461:13:461:18 | target | test.rs:462:14:462:19 | target | provenance | | -| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:32 | +| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:38 | | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | test.rs:461:22:461:50 | TryExpr | provenance | | | test.rs:461:22:461:50 | TryExpr | test.rs:461:13:461:18 | target | provenance | | | test.rs:470:13:470:18 | buffer | test.rs:471:14:471:19 | buffer | provenance | | -| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:36 | +| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:42 | | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | test.rs:470:31:470:63 | await ... [Ok] | provenance | | | test.rs:470:31:470:63 | await ... [Ok] | test.rs:470:31:470:64 | TryExpr | provenance | | | test.rs:470:31:470:64 | TryExpr | test.rs:470:13:470:18 | buffer | provenance | | | test.rs:475:13:475:18 | buffer | test.rs:476:14:476:19 | buffer | provenance | | -| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:36 | +| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:42 | | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | test.rs:475:31:475:63 | await ... [Ok] | provenance | | | test.rs:475:31:475:63 | await ... [Ok] | test.rs:475:31:475:64 | TryExpr | provenance | | | test.rs:475:31:475:64 | TryExpr | test.rs:475:13:475:18 | buffer | provenance | | | test.rs:480:13:480:18 | buffer | test.rs:481:14:481:19 | buffer | provenance | | -| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:38 | +| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:44 | | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | test.rs:480:22:480:64 | await ... [Ok] | provenance | | | test.rs:480:22:480:64 | await ... [Ok] | test.rs:480:22:480:65 | TryExpr | provenance | | | test.rs:480:22:480:65 | TryExpr | test.rs:480:13:480:18 | buffer | provenance | | | test.rs:486:13:486:16 | path | test.rs:488:14:488:17 | path | provenance | | | test.rs:486:20:486:31 | entry.path() | test.rs:486:13:486:16 | path | provenance | | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:19 MaD:19 | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:19 MaD:19 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:25 MaD:25 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:25 MaD:25 | | test.rs:487:13:487:21 | file_name | test.rs:489:14:489:22 | file_name | provenance | | | test.rs:487:25:487:41 | entry.file_name() | test.rs:487:13:487:21 | file_name | provenance | | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:18 MaD:18 | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:18 MaD:18 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:24 MaD:24 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:24 MaD:24 | | test.rs:493:13:493:18 | target | test.rs:494:14:494:19 | target | provenance | | -| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:37 | +| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:43 | | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:107 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:106 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:109 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:108 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:63 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:59 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:117 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:116 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:119 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:71 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:67 | +| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:18 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | | test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | @@ -550,69 +560,69 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:92 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:102 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | -| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:19 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:92 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:102 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | -| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:19 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:105 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:104 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:92 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:115 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:102 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | -| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:19 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:61 | -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:69 | +| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:18 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | | test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | -| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:18 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:60 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:68 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:66 | -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:74 | +| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:18 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:79 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:74 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:80 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:76 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:75 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:77 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:16 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:80 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:86 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:87 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:82 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:88 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:84 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:83 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:85 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:81 | +| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:22 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | | test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | @@ -647,45 +657,45 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:72 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:80 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | -| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:17 | +| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:23 | | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | test.rs:629:35:629:40 | [post] buffer | provenance | | | test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | | test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:41 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:52 | -| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:46 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:47 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:11 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:46 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:57 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:41 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:52 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:46 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:47 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:58 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | -| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:7 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:40 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:12 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:46 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:57 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:62 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:123 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:14 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:70 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:133 | +| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:20 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | @@ -693,21 +703,21 @@ edges | test.rs:695:34:695:39 | [post] buffer | test.rs:699:14:699:22 | buffer[0] | provenance | | | test.rs:698:15:698:20 | buffer | test.rs:698:14:698:20 | &buffer | provenance | | | test.rs:707:13:707:22 | mut stream | test.rs:715:58:715:63 | stream | provenance | | -| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:15 | +| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:21 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:56 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:66 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:64 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:74 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:113 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:123 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:129 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:72 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:130 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:131 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:20 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:139 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:80 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:140 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:141 | +| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:26 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | | test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | @@ -725,9 +735,43 @@ edges | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | test.rs:810:50:810:55 | [post] buffer | provenance | | | test.rs:810:50:810:55 | [post] buffer | test.rs:817:27:817:32 | buffer | provenance | | | test.rs:817:27:817:32 | buffer | test.rs:817:26:817:32 | &buffer | provenance | | +| test.rs:924:13:924:14 | v6 | test.rs:925:14:925:15 | v6 | provenance | | +| test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | test.rs:924:23:924:64 | TryExpr [Some] | provenance | | +| test.rs:924:23:924:64 | TryExpr [Some] | test.rs:924:23:924:73 | ... .unwrap() | provenance | MaD:98 | +| test.rs:924:23:924:73 | ... .unwrap() | test.rs:924:13:924:14 | v6 | provenance | | +| test.rs:924:28:924:38 | query_first | test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | +| test.rs:927:13:927:18 | mut t1 | test.rs:931:22:931:22 | v | provenance | | +| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | test.rs:927:22:927:72 | TryExpr | provenance | | +| test.rs:927:22:927:72 | TryExpr | test.rs:927:13:927:18 | mut t1 | provenance | | +| test.rs:927:27:927:35 | exec_iter | test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | provenance | Src:MaD:15 | +| test.rs:935:22:935:30 | query_map | test.rs:937:14:937:24 | ...: i64 | provenance | Src:MaD:3 | +| test.rs:937:14:937:24 | ...: i64 | test.rs:938:22:938:27 | values | provenance | | +| test.rs:951:13:951:17 | total | test.rs:955:14:955:18 | total | provenance | | +| test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | test.rs:951:21:954:11 | TryExpr | provenance | | +| test.rs:951:21:954:11 | TryExpr | test.rs:951:13:951:17 | total | provenance | | +| test.rs:951:26:951:35 | query_fold | test.rs:951:76:951:83 | ...: i64 | provenance | Src:MaD:2 | +| test.rs:951:76:951:83 | ...: i64 | test.rs:951:86:954:9 | { ... } | provenance | | +| test.rs:951:76:951:83 | ...: i64 | test.rs:952:18:952:20 | row | provenance | | +| test.rs:951:76:951:83 | ...: i64 | test.rs:953:19:953:21 | row | provenance | | +| test.rs:951:86:954:9 | { ... } | test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | provenance | MaD:61 | +| test.rs:953:13:953:21 | ... + ... | test.rs:951:86:954:9 | { ... } | provenance | | +| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:96 | +| test.rs:1022:22:1022:30 | query_map | test.rs:1024:14:1024:24 | ...: i64 | provenance | Src:MaD:5 | +| test.rs:1024:14:1024:24 | ...: i64 | test.rs:1025:22:1025:27 | values | provenance | | +| test.rs:1038:13:1038:17 | total | test.rs:1042:14:1042:18 | total | provenance | | +| test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | test.rs:1038:21:1041:16 | await ... [Ok] | provenance | | +| test.rs:1038:21:1041:16 | await ... [Ok] | test.rs:1038:21:1041:17 | TryExpr | provenance | | +| test.rs:1038:21:1041:17 | TryExpr | test.rs:1038:13:1038:17 | total | provenance | | +| test.rs:1038:26:1038:35 | query_fold | test.rs:1038:76:1038:83 | ...: i64 | provenance | Src:MaD:4 | +| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1038:86:1041:9 | { ... } | provenance | | +| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1039:18:1039:20 | row | provenance | | +| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1040:19:1040:21 | row | provenance | | +| test.rs:1038:86:1041:9 | { ... } | test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:62 | +| test.rs:1040:13:1040:21 | ... + ... | test.rs:1038:86:1041:9 | { ... } | provenance | | +| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:96 | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:20:11:20:13 | tcp | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:26:53:26:55 | tcp | provenance | | -| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:8 | +| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:13 | | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | test_futures_io.rs:19:15:19:43 | await ... [Ok] | provenance | | | test_futures_io.rs:19:15:19:43 | await ... [Ok] | test_futures_io.rs:19:15:19:44 | TryExpr | provenance | | | test_futures_io.rs:19:15:19:44 | TryExpr | test_futures_io.rs:19:9:19:11 | tcp | provenance | | @@ -736,69 +780,69 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:47 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:58 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:96 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:106 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:99 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:100 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:57 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:52 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:41 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:47 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:58 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:46 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:52 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:50 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:55 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:56 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:48 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:53 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:54 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:54 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:59 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:60 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:97 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:107 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:99 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:100 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -810,11 +854,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:99 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:100 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -830,30 +874,30 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:99 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:100 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:57 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:40 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:45 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:89 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:90 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:99 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:100 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -868,131 +912,147 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:49 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:55 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:47 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:53 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:53 | +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:59 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:84 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:93 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:89 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:90 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:91 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | provenance | MaD:92 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:14 | a [tuple.3] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:14 | a [tuple.3] | provenance | | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | web_frameworks.rs:100:13:100:13 | a [tuple.1] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:86 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:85 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:93 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:82 | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | web_frameworks.rs:100:13:100:13 | a [tuple.3] | provenance | | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | +| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | +| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:89 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:90 | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | web_frameworks.rs:111:17:111:17 | b | provenance | | | web_frameworks.rs:111:14:111:14 | a | web_frameworks.rs:113:14:113:14 | a | provenance | | | web_frameworks.rs:111:17:111:17 | b | web_frameworks.rs:114:14:114:14 | b | provenance | | | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | -| web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:84 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:81 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:82 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:83 | +| web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:9 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:93 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:89 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:90 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:91 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | provenance | MaD:92 | | web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.0] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.1] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.2] | web_frameworks.rs:132:14:132:14 | a | provenance | | +| web_frameworks.rs:131:13:131:13 | a [tuple.3] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:17:131:33 | path.into_inner() | web_frameworks.rs:131:13:131:13 | a | provenance | | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | web_frameworks.rs:131:13:131:13 | a [tuple.0] | provenance | | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | web_frameworks.rs:131:13:131:13 | a [tuple.1] | provenance | | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | web_frameworks.rs:131:13:131:13 | a [tuple.2] | provenance | | -| web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | -| web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | -| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | -| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | web_frameworks.rs:131:13:131:13 | a [tuple.3] | provenance | | +| web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:10 | +| web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:10 | +| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:7 | +| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:7 | | web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | | web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | -| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | -| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | +| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:8 | +| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:8 | | web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | | web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | -| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | -| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | +| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:6 | +| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:6 | | web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | | web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | -| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | +| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:7 | +| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:7 | | web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | a | provenance | | | web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | a | provenance | | nodes @@ -1624,6 +1684,44 @@ nodes | test.rs:810:50:810:55 | [post] buffer | semmle.label | [post] buffer | | test.rs:817:26:817:32 | &buffer | semmle.label | &buffer | | test.rs:817:27:817:32 | buffer | semmle.label | buffer | +| test.rs:924:13:924:14 | v6 | semmle.label | v6 | +| test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | semmle.label | conn.query_first(...) [Ok, Some] | +| test.rs:924:23:924:64 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:924:23:924:73 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:924:28:924:38 | query_first | semmle.label | query_first | +| test.rs:925:14:925:15 | v6 | semmle.label | v6 | +| test.rs:927:13:927:18 | mut t1 | semmle.label | mut t1 | +| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | semmle.label | conn.exec_iter(...) [Ok] | +| test.rs:927:22:927:72 | TryExpr | semmle.label | TryExpr | +| test.rs:927:27:927:35 | exec_iter | semmle.label | exec_iter | +| test.rs:931:22:931:22 | v | semmle.label | v | +| test.rs:935:22:935:30 | query_map | semmle.label | query_map | +| test.rs:937:14:937:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:938:22:938:27 | values | semmle.label | values | +| test.rs:951:13:951:17 | total | semmle.label | total | +| test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | semmle.label | conn.query_fold(...) [Ok] | +| test.rs:951:21:954:11 | TryExpr | semmle.label | TryExpr | +| test.rs:951:26:951:35 | query_fold | semmle.label | query_fold | +| test.rs:951:76:951:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:951:86:954:9 | { ... } | semmle.label | { ... } | +| test.rs:952:18:952:20 | row | semmle.label | row | +| test.rs:953:13:953:21 | ... + ... | semmle.label | ... + ... | +| test.rs:953:19:953:21 | row | semmle.label | row | +| test.rs:955:14:955:18 | total | semmle.label | total | +| test.rs:1022:22:1022:30 | query_map | semmle.label | query_map | +| test.rs:1024:14:1024:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:1025:22:1025:27 | values | semmle.label | values | +| test.rs:1038:13:1038:17 | total | semmle.label | total | +| test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | semmle.label | conn.query_fold(...) [future, Ok] | +| test.rs:1038:21:1041:16 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:1038:21:1041:17 | TryExpr | semmle.label | TryExpr | +| test.rs:1038:26:1038:35 | query_fold | semmle.label | query_fold | +| test.rs:1038:76:1038:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:1038:86:1041:9 | { ... } | semmle.label | { ... } | +| test.rs:1039:18:1039:20 | row | semmle.label | row | +| test.rs:1040:13:1040:21 | ... + ... | semmle.label | ... + ... | +| test.rs:1040:19:1040:21 | row | semmle.label | row | +| test.rs:1042:14:1042:18 | total | semmle.label | total | | test_futures_io.rs:19:9:19:11 | tcp | semmle.label | tcp | | test_futures_io.rs:19:15:19:32 | ...::connect | semmle.label | ...::connect | | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | @@ -1776,19 +1874,23 @@ nodes | web_frameworks.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | semmle.label | a [tuple.3] | | web_frameworks.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | +| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | semmle.label | path.into_inner() [tuple.3] | | web_frameworks.rs:101:14:101:14 | a | semmle.label | a | | web_frameworks.rs:101:14:101:14 | a [tuple.0] | semmle.label | a [tuple.0] | | web_frameworks.rs:101:14:101:14 | a [tuple.1] | semmle.label | a [tuple.1] | | web_frameworks.rs:101:14:101:14 | a [tuple.2] | semmle.label | a [tuple.2] | +| web_frameworks.rs:101:14:101:14 | a [tuple.3] | semmle.label | a [tuple.3] | | web_frameworks.rs:101:14:101:23 | a.as_str() | semmle.label | a.as_str() | | web_frameworks.rs:102:14:102:14 | a | semmle.label | a | | web_frameworks.rs:102:14:102:14 | a [tuple.0] | semmle.label | a [tuple.0] | | web_frameworks.rs:102:14:102:14 | a [tuple.1] | semmle.label | a [tuple.1] | | web_frameworks.rs:102:14:102:14 | a [tuple.2] | semmle.label | a [tuple.2] | +| web_frameworks.rs:102:14:102:14 | a [tuple.3] | semmle.label | a [tuple.3] | | web_frameworks.rs:102:14:102:25 | a.as_bytes() | semmle.label | a.as_bytes() | | web_frameworks.rs:103:14:103:14 | a | semmle.label | a | | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | @@ -1806,10 +1908,12 @@ nodes | web_frameworks.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] | | web_frameworks.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] | | web_frameworks.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] | +| web_frameworks.rs:131:13:131:13 | a [tuple.3] | semmle.label | a [tuple.3] | | web_frameworks.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | +| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | semmle.label | path.into_inner() [tuple.3] | | web_frameworks.rs:132:14:132:14 | a | semmle.label | a | | web_frameworks.rs:139:41:139:42 | to | semmle.label | to | | web_frameworks.rs:140:45:140:46 | to | semmle.label | to | @@ -1946,6 +2050,14 @@ testFailures | test.rs:779:14:779:23 | buffer2[0] | test.rs:759:28:759:57 | ...::connect | test.rs:779:14:779:23 | buffer2[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | | test.rs:794:26:794:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:794:26:794:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | | test.rs:817:26:817:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:817:26:817:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | +| test.rs:925:14:925:15 | v6 | test.rs:924:28:924:38 | query_first | test.rs:925:14:925:15 | v6 | $@ | test.rs:924:28:924:38 | query_first | query_first | +| test.rs:931:22:931:22 | v | test.rs:927:27:927:35 | exec_iter | test.rs:931:22:931:22 | v | $@ | test.rs:927:27:927:35 | exec_iter | exec_iter | +| test.rs:938:22:938:27 | values | test.rs:935:22:935:30 | query_map | test.rs:938:22:938:27 | values | $@ | test.rs:935:22:935:30 | query_map | query_map | +| test.rs:952:18:952:20 | row | test.rs:951:26:951:35 | query_fold | test.rs:952:18:952:20 | row | $@ | test.rs:951:26:951:35 | query_fold | query_fold | +| test.rs:955:14:955:18 | total | test.rs:951:26:951:35 | query_fold | test.rs:955:14:955:18 | total | $@ | test.rs:951:26:951:35 | query_fold | query_fold | +| test.rs:1025:22:1025:27 | values | test.rs:1022:22:1022:30 | query_map | test.rs:1025:22:1025:27 | values | $@ | test.rs:1022:22:1022:30 | query_map | query_map | +| test.rs:1039:18:1039:20 | row | test.rs:1038:26:1038:35 | query_fold | test.rs:1039:18:1039:20 | row | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | +| test.rs:1042:14:1042:18 | total | test.rs:1038:26:1038:35 | query_fold | test.rs:1042:14:1042:18 | total | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | | test_futures_io.rs:20:10:20:13 | &tcp | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:20:10:20:13 | &tcp | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:27:10:27:16 | &reader | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:27:10:27:16 | &reader | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:33:14:33:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:33:14:33:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index b4a20aabedd..16e2f3ecdd9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -87,6 +87,20 @@ | test.rs:759:28:759:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:841:22:841:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:867:22:867:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:902:47:902:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:924:28:924:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:927:27:927:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:935:22:935:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:942:22:942:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:951:26:951:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:957:22:957:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:989:47:989:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1011:28:1011:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1014:27:1014:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1022:22:1022:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1029:22:1029:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1038:26:1038:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1044:22:1044:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | | test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | | test_futures_io.rs:19:15:19:32 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 699bb1d3b74..6d53a62918c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -899,7 +899,7 @@ mod test_mysql { let mut pool = mysql::Pool::new("")?; let mut conn = pool.get_conn()?; - let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; + let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; // $ Alert[rust/summary/taint-sources] let mut row = &mut rows[0]; let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] @@ -921,40 +921,40 @@ mod test_mysql { sink(v); // $ MISSING: hasTaintFlow } - let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v6); // $ MISSING: hasTaintFlow + let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v6); // $ hasTaintFlow - let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ MISSING: Alert[rust/summary/taint-sources] + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ Alert[rust/summary/taint-sources] sink(t1.nth(0).unwrap().unwrap().get::(0).unwrap()); // $ MISSING: hasTaintFlow for row in t1 { for v in row { - sink(v); // $ MISSING: hasTaintFlow + sink(v); // $ hasTaintFlow } } - let _ = conn.query_map( + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] "SELECT id FROM person", - |values: i64| -> () { // $ MISSING: Alert[rust/summary/taint-sources] - sink(values); // $ MISSING: hasTaintFlow + |values: i64| -> () { + sink(values); // $ hasTaintFlow } )?; - let _ = conn.query_map( + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] "SELECT id, name, age FROM person", - |values: (i64, String, i32)| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + |values: (i64, String, i32)| -> () { sink(values.0); // $ MISSING: hasTaintFlow sink(values.1); // $ MISSING: hasTaintFlow sink(values.2); // $ MISSING: hasTaintFlow } )?; - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ MISSING: Alert[rust/summary/taint-sources] - sink(row); // $ MISSING: hasTaintFlow + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + sink(row); // $ hasTaintFlow acc + row })?; - sink(total); // $ MISSING: hasTaintFlow + sink(total); // $ hasTaintFlow - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ MISSING: Alert[rust/summary/taint-sources] + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] let id: i64 = row.0; let name: String = row.1; let age: i32 = row.2; @@ -986,7 +986,7 @@ mod test_mysql_async { let mut pool = mysql_async::Pool::new(""); let mut conn = pool.get_conn().await?; - let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; + let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] let mut row = &mut rows[0]; let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] @@ -1008,10 +1008,10 @@ mod test_mysql_async { sink(v); // $ MISSING: hasTaintFlow } - let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ Alert[rust/summary/taint-sources] sink(v6); // $ MISSING: hasTaintFlow - let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3)).await?; // $ MISSING: Alert[rust/summary/taint-sources] + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3)).await?; // $ Alert[rust/summary/taint-sources] for mut row in t1.stream::<(i64, String, i32)>().await? { while let v = row.next().await { let v = v.unwrap(); @@ -1019,29 +1019,29 @@ mod test_mysql_async { } } - let _ = conn.query_map( + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] "SELECT id FROM person", - |values: i64| -> () { // $ MISSING: Alert[rust/summary/taint-sources] - sink(values); // $ MISSING: hasTaintFlow + |values: i64| -> () { + sink(values); // $ hasTaintFlow } ).await?; - let _ = conn.query_map( + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] "SELECT id, name, age FROM person", - |values: (i64, String, i32)| -> () { // $ MISSING: Alert[rust/summary/taint-sources] + |values: (i64, String, i32)| -> () { sink(values.0); // $ MISSING: hasTaintFlow sink(values.1); // $ MISSING: hasTaintFlow sink(values.2); // $ MISSING: hasTaintFlow } ).await?; - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ MISSING: Alert[rust/summary/taint-sources] - sink(row); // $ MISSING: hasTaintFlow + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + sink(row); // $ hasTaintFlow acc + row }).await?; - sink(total); // $ MISSING: hasTaintFlow + sink(total); // $ hasTaintFlow - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ MISSING: Alert[rust/summary/taint-sources] + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] let id: i64 = row.0; let name: String = row.1; let age: i32 = row.2; From 8f7d3798adf270fe0e4f95caf8f08f82d9955a58 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:49:22 +0100 Subject: [PATCH 165/965] Rust: Allow rows to be direct sources of taint as well. --- .../rust/frameworks/mysql-async.model.yml | 10 +- .../codeql/rust/frameworks/mysql.model.yml | 4 +- .../dataflow/sources/InlineFlow.expected | 1066 +++++++++-------- .../dataflow/sources/TaintSources.expected | 11 + .../library-tests/dataflow/sources/test.rs | 46 +- 5 files changed, 628 insertions(+), 509 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml index c4b5becf358..4c8858457c1 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml @@ -21,10 +21,16 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::exec_first", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[2].Parameter[1]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - - ["::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "database", "manual"] - - ["::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] + - ["::get", "ReturnValue.Field[core::option::Option::Some(0)]", "database", "manual"] + - ["::get_opt", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::take", "ReturnValue.Field[core::option::Option::Some(0)]", "database", "manual"] + - ["::take_opt", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::as_ref", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "database", "manual"] + - ["::unwrap", "ReturnValue.Element", "database", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml index 13ae45e03b1..7d6fa520eb8 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -30,8 +30,8 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[2].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[3].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - - ["::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] - - ["::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"] + - ["::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[1].Parameter[0].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index 9fb46b84678..1e5db71b179 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -13,148 +13,152 @@ models | 12 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 13 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 14 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 15 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)]; database | -| 16 | Source: ::file_name; ReturnValue; file | -| 17 | Source: ::path; ReturnValue; file | -| 18 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 19 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 20 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 21 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 22 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 23 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 24 | Source: ::file_name; ReturnValue; file | -| 25 | Source: ::path; ReturnValue; file | -| 26 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 27 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 28 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 29 | Source: std::env::args; ReturnValue.Element; commandargs | -| 30 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 31 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 32 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 33 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 34 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 35 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 36 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 37 | Source: std::fs::read; ReturnValue; file | -| 38 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 39 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 40 | Source: std::fs::read_to_string; ReturnValue; file | -| 41 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 42 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 43 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 44 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 45 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 46 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 47 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 48 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 49 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 50 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 51 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 52 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 53 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 54 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 55 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 56 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 57 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 58 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 59 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 60 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 61 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | -| 62 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | -| 63 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 64 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 65 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 66 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 67 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 68 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 69 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 70 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 71 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 72 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 74 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 75 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 76 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 77 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 78 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 79 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 80 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 81 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 82 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 83 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 84 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 85 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 86 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 87 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 88 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 89 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | -| 90 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | -| 91 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | -| 92 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[3]; taint | -| 93 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | -| 94 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 95 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 96 | Summary: ::add; Argument[0]; ReturnValue; taint | -| 97 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 98 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 99 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 100 | Summary: ::new; Argument[0]; ReturnValue; value | -| 101 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 102 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 103 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 104 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 105 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 106 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 107 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 108 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 109 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 110 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 111 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 112 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 113 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 114 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 115 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 116 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 117 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 118 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 119 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 120 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | -| 121 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 122 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 123 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 124 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 125 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 126 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | -| 127 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 128 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 129 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 130 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 131 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 132 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 133 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 134 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 135 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 136 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 137 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 138 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 139 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 140 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 141 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 15 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)].Element; database | +| 16 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 17 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 18 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 19 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 20 | Source: ::file_name; ReturnValue; file | +| 21 | Source: ::path; ReturnValue; file | +| 22 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 23 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 24 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 25 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 26 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 27 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 28 | Source: ::file_name; ReturnValue; file | +| 29 | Source: ::path; ReturnValue; file | +| 30 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 31 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 32 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 33 | Source: std::env::args; ReturnValue.Element; commandargs | +| 34 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 35 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 36 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 37 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 38 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 39 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 40 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 41 | Source: std::fs::read; ReturnValue; file | +| 42 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 43 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 44 | Source: std::fs::read_to_string; ReturnValue; file | +| 45 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 46 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 47 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 48 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 49 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 50 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 51 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 52 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 53 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 54 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 55 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 56 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 57 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 58 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 59 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 60 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 61 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 62 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 63 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 64 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 65 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | +| 66 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | +| 67 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 68 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 69 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 70 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 71 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 72 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 73 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 74 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 75 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 76 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 77 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 78 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 79 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 80 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 81 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 82 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 83 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 84 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 85 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 86 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 87 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 88 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 89 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 90 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 91 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 92 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 93 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | +| 94 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | +| 95 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | +| 96 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[3]; taint | +| 97 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 98 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 99 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 100 | Summary: ::add; Argument[0]; ReturnValue; taint | +| 101 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 102 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 103 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 104 | Summary: ::new; Argument[0]; ReturnValue; value | +| 105 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 106 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 107 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 108 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 109 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 110 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 111 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 112 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 113 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 114 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 115 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 116 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 117 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 118 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 119 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 120 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 121 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 122 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 123 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 124 | Summary: ::next; Argument[self]; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; taint | +| 125 | Summary: ::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 126 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 127 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 128 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 129 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 130 | Summary: ::read_exact; Argument[self]; Argument[0].Reference; taint | +| 131 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 132 | Summary: ::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 133 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 134 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 135 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 136 | Summary: ::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 137 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 138 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 139 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 140 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 141 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 142 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 143 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 144 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 145 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges -| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:34 | -| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:35 | +| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:38 | +| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:39 | | test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:34 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:101 | +| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:38 | +| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:105 | | test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | | test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:35 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:98 | +| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:39 | +| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:102 | | test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | | test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | -| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:29 | -| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:49 | +| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:33 | +| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:53 | | test.rs:29:29:29:54 | ... .collect() [element] | test.rs:29:9:29:12 | args [element] | provenance | | | test.rs:30:9:30:15 | my_path [&ref] | test.rs:36:10:36:16 | my_path | provenance | | | test.rs:30:19:30:26 | &... [&ref] | test.rs:30:9:30:15 | my_path [&ref] | provenance | | @@ -165,89 +169,89 @@ edges | test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | | test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | | test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:29 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:50 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:98 | +| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:33 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:54 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:102 | | test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | | test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:30 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:50 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:98 | +| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:34 | +| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:54 | +| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:102 | | test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | | test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:29 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:50 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:98 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:105 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:102 | +| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:33 | +| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:54 | +| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:102 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:109 | +| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:106 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | -| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:29 | +| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:33 | | test.rs:42:16:42:31 | ...::args(...) [element] | test.rs:42:9:42:11 | arg | provenance | | | test.rs:46:9:46:11 | arg | test.rs:47:14:47:16 | arg | provenance | | -| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:30 | +| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:34 | | test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | | test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:101 | +| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:35 | +| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:105 | | test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | | test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:32 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:101 | +| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:36 | +| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:105 | | test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | | test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:33 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:97 | +| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:37 | +| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:101 | | test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | -| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | +| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:112 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:116 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:102 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:112 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:102 | +| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | +| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:106 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:116 | +| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:106 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:102 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:113 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:102 | +| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | +| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:106 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:117 | +| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:106 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:27 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:102 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:111 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:102 | +| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | +| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:106 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:115 | +| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:106 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | -| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | +| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:110 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:114 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | | test.rs:77:9:77:22 | remote_string6 | test.rs:78:10:78:23 | remote_string6 | provenance | | -| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | +| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:108 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:112 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:109 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:109 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:28 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:113 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:113 | +| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | | test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | | test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:98 | +| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:102 | | test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | | test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | @@ -266,121 +270,121 @@ edges | test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | | test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:125 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:124 | +| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:129 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:128 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | | test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:128 | +| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:76 | +| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:132 | | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:130 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:129 | +| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:134 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:133 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:131 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:132 | +| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:135 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:136 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:127 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:71 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:126 | +| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:131 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:75 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:130 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | | test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:67 | +| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:71 | | test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:121 | +| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:125 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:123 | +| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:127 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:122 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:126 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:123 | +| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:127 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:64 | +| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:68 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:123 | +| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:127 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:65 | +| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:69 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:123 | +| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:127 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | | test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:120 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:120 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:66 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:124 | +| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:124 | +| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:70 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:123 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:98 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:102 | +| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:127 | +| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:102 | +| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:106 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:102 | +| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:106 | | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:63 | +| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:67 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:41 MaD:41 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:123 | +| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:127 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:80 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:84 | +| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | | test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | | test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:86 | -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:90 | +| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | | test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | | test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:87 | -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:91 | +| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | | test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | | test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:82 | -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:86 | +| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | | test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | | test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:88 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:84 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:83 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:85 | -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:92 | +| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:88 | +| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:87 | +| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:89 | +| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | | test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | @@ -398,150 +402,150 @@ edges | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | | test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | | test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | +| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:85 | +| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | | test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | | test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | | test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:75 | +| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:79 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:136 | +| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:140 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:135 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:139 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:136 | +| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:140 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:81 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:136 | +| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:140 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:78 | +| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:82 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:136 | +| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:140 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:138 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:138 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:79 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:142 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:142 | +| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:83 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:136 | +| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:140 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:98 | +| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:102 | | test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | | test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | | test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | | test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:76 | +| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:80 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:136 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:137 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:137 | +| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:140 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:141 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:141 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:98 | +| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:102 | | test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | | test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | | test.rs:396:32:396:54 | await ... [Ok, Some] | test.rs:396:32:396:55 | TryExpr [Some] | provenance | | | test.rs:396:32:396:55 | TryExpr [Some] | test.rs:396:19:396:28 | Some(...) [Some] | provenance | | | test.rs:408:13:408:18 | buffer | test.rs:409:14:409:19 | buffer | provenance | | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:36 | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:36 | -| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:37 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:40 | +| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:40 | +| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:41 | | test.rs:408:31:408:55 | ...::read(...) [Ok] | test.rs:408:31:408:56 | TryExpr | provenance | | | test.rs:408:31:408:56 | TryExpr | test.rs:408:13:408:18 | buffer | provenance | | | test.rs:413:13:413:18 | buffer | test.rs:414:14:414:19 | buffer | provenance | | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:36 | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:36 | -| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:37 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:40 | +| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:40 | +| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:41 | | test.rs:413:31:413:50 | ...::read(...) [Ok] | test.rs:413:31:413:51 | TryExpr | provenance | | | test.rs:413:31:413:51 | TryExpr | test.rs:413:13:413:18 | buffer | provenance | | | test.rs:418:13:418:18 | buffer | test.rs:419:14:419:19 | buffer | provenance | | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:39 | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:39 | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:40 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:43 | +| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:43 | +| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:44 | | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | test.rs:418:22:418:52 | TryExpr | provenance | | | test.rs:418:22:418:52 | TryExpr | test.rs:418:13:418:18 | buffer | provenance | | | test.rs:425:13:425:16 | path | test.rs:426:14:426:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:48 | +| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:52 | | test.rs:425:13:425:16 | path | test.rs:427:14:427:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:48 | +| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:52 | | test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | | test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:17 MaD:17 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:48 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:48 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:134 | +| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:21 MaD:21 | +| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:52 | +| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:52 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:138 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:48 | +| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:52 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | | test.rs:439:25:439:37 | e.file_name() | test.rs:439:13:439:21 | file_name | provenance | | -| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:16 MaD:16 | -| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:48 | +| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:20 MaD:20 | +| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:52 | | test.rs:461:13:461:18 | target | test.rs:462:14:462:19 | target | provenance | | -| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:38 | +| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:42 | | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | test.rs:461:22:461:50 | TryExpr | provenance | | | test.rs:461:22:461:50 | TryExpr | test.rs:461:13:461:18 | target | provenance | | | test.rs:470:13:470:18 | buffer | test.rs:471:14:471:19 | buffer | provenance | | -| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:42 | +| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:46 | | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | test.rs:470:31:470:63 | await ... [Ok] | provenance | | | test.rs:470:31:470:63 | await ... [Ok] | test.rs:470:31:470:64 | TryExpr | provenance | | | test.rs:470:31:470:64 | TryExpr | test.rs:470:13:470:18 | buffer | provenance | | | test.rs:475:13:475:18 | buffer | test.rs:476:14:476:19 | buffer | provenance | | -| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:42 | +| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:46 | | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | test.rs:475:31:475:63 | await ... [Ok] | provenance | | | test.rs:475:31:475:63 | await ... [Ok] | test.rs:475:31:475:64 | TryExpr | provenance | | | test.rs:475:31:475:64 | TryExpr | test.rs:475:13:475:18 | buffer | provenance | | | test.rs:480:13:480:18 | buffer | test.rs:481:14:481:19 | buffer | provenance | | -| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:44 | +| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:48 | | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | test.rs:480:22:480:64 | await ... [Ok] | provenance | | | test.rs:480:22:480:64 | await ... [Ok] | test.rs:480:22:480:65 | TryExpr | provenance | | | test.rs:480:22:480:65 | TryExpr | test.rs:480:13:480:18 | buffer | provenance | | | test.rs:486:13:486:16 | path | test.rs:488:14:488:17 | path | provenance | | | test.rs:486:20:486:31 | entry.path() | test.rs:486:13:486:16 | path | provenance | | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:25 MaD:25 | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:25 MaD:25 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:29 MaD:29 | +| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:29 MaD:29 | | test.rs:487:13:487:21 | file_name | test.rs:489:14:489:22 | file_name | provenance | | | test.rs:487:25:487:41 | entry.file_name() | test.rs:487:13:487:21 | file_name | provenance | | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:24 MaD:24 | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:24 MaD:24 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:28 MaD:28 | +| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:28 MaD:28 | | test.rs:493:13:493:18 | target | test.rs:494:14:494:19 | target | provenance | | -| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:43 | +| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:47 | | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:114 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:117 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:116 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:119 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:118 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:71 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:67 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:18 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:119 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:121 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:76 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:120 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:123 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:77 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:122 | +| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:75 | +| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:71 | +| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:22 | | test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | | test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | | test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | @@ -560,69 +564,69 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:102 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:119 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:106 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | -| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:19 | +| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:23 | | test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:102 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:119 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:106 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | -| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:19 | +| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:23 | | test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:115 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:114 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:102 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:119 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:118 | +| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:106 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | -| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:19 | +| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:23 | | test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | | test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | | test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:69 | -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:18 | +| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:73 | +| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:22 | | test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | | test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | | test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | -| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:18 | +| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:22 | | test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | | test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:77 | | test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:68 | +| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:72 | | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | | test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | | test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:74 | -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:18 | +| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:78 | +| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:22 | | test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | | test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:73 | +| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:77 | | test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | | test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | | test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:80 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:86 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:87 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:82 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:88 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:84 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:83 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:85 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:22 | +| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:84 | +| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:90 | +| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:91 | +| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:86 | +| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:92 | +| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:88 | +| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:87 | +| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:89 | +| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:85 | +| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:26 | | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | | test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | | test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | @@ -657,45 +661,45 @@ edges | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | | test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | | test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:80 | +| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:84 | | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | | test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | | test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | -| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:23 | +| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:27 | | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | test.rs:629:35:629:40 | [post] buffer | provenance | | | test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | | test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:46 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:47 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:57 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:11 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:46 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:61 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:46 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:47 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:57 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:58 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | +| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:62 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | | test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:12 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:46 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:57 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | +| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:61 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:70 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:133 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:20 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:74 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:137 | +| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:24 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | @@ -703,21 +707,21 @@ edges | test.rs:695:34:695:39 | [post] buffer | test.rs:699:14:699:22 | buffer[0] | provenance | | | test.rs:698:15:698:20 | buffer | test.rs:698:14:698:20 | &buffer | provenance | | | test.rs:707:13:707:22 | mut stream | test.rs:715:58:715:63 | stream | provenance | | -| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:21 | +| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:25 | | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | | test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:64 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:74 | +| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:68 | +| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:78 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:123 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:127 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:139 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:80 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:140 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:141 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:26 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:143 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:84 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:144 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:145 | +| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:30 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | | test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | @@ -735,15 +739,37 @@ edges | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | test.rs:810:50:810:55 | [post] buffer | provenance | | | test.rs:810:50:810:55 | [post] buffer | test.rs:817:27:817:32 | buffer | provenance | | | test.rs:817:27:817:32 | buffer | test.rs:817:26:817:32 | &buffer | provenance | | +| test.rs:905:13:905:14 | v1 | test.rs:906:14:906:15 | v1 | provenance | | +| test.rs:905:24:905:33 | row.get(...) [Some] | test.rs:905:24:905:42 | ... .unwrap() | provenance | MaD:102 | +| test.rs:905:24:905:42 | ... .unwrap() | test.rs:905:13:905:14 | v1 | provenance | | +| test.rs:905:28:905:30 | get | test.rs:905:24:905:33 | row.get(...) [Some] | provenance | Src:MaD:16 | +| test.rs:908:13:908:14 | v2 | test.rs:909:14:909:15 | v2 | provenance | | +| test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | test.rs:908:24:908:46 | ... .unwrap() [Ok] | provenance | MaD:102 | +| test.rs:908:24:908:46 | ... .unwrap() [Ok] | test.rs:908:24:908:55 | ... .unwrap() | provenance | MaD:106 | +| test.rs:908:24:908:55 | ... .unwrap() | test.rs:908:13:908:14 | v2 | provenance | | +| test.rs:908:28:908:34 | get_opt | test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:17 | +| test.rs:911:13:911:14 | v3 | test.rs:912:14:912:15 | v3 | provenance | | +| test.rs:911:24:911:34 | row.take(...) [Some] | test.rs:911:24:911:43 | ... .unwrap() | provenance | MaD:102 | +| test.rs:911:24:911:43 | ... .unwrap() | test.rs:911:13:911:14 | v3 | provenance | | +| test.rs:911:28:911:31 | take | test.rs:911:24:911:34 | row.take(...) [Some] | provenance | Src:MaD:18 | +| test.rs:914:13:914:14 | v4 | test.rs:915:14:915:15 | v4 | provenance | | +| test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | test.rs:914:24:914:47 | ... .unwrap() [Ok] | provenance | MaD:102 | +| test.rs:914:24:914:47 | ... .unwrap() [Ok] | test.rs:914:24:914:56 | ... .unwrap() | provenance | MaD:106 | +| test.rs:914:24:914:56 | ... .unwrap() | test.rs:914:13:914:14 | v4 | provenance | | +| test.rs:914:28:914:35 | take_opt | test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:19 | | test.rs:924:13:924:14 | v6 | test.rs:925:14:925:15 | v6 | provenance | | | test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | test.rs:924:23:924:64 | TryExpr [Some] | provenance | | -| test.rs:924:23:924:64 | TryExpr [Some] | test.rs:924:23:924:73 | ... .unwrap() | provenance | MaD:98 | +| test.rs:924:23:924:64 | TryExpr [Some] | test.rs:924:23:924:73 | ... .unwrap() | provenance | MaD:102 | | test.rs:924:23:924:73 | ... .unwrap() | test.rs:924:13:924:14 | v6 | provenance | | | test.rs:924:28:924:38 | query_first | test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | -| test.rs:927:13:927:18 | mut t1 | test.rs:931:22:931:22 | v | provenance | | -| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | test.rs:927:22:927:72 | TryExpr | provenance | | -| test.rs:927:22:927:72 | TryExpr | test.rs:927:13:927:18 | mut t1 | provenance | | -| test.rs:927:27:927:35 | exec_iter | test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | provenance | Src:MaD:15 | +| test.rs:927:13:927:18 | mut t1 [element] | test.rs:929:20:929:21 | t1 [element] | provenance | | +| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | test.rs:927:22:927:72 | TryExpr [element] | provenance | | +| test.rs:927:22:927:72 | TryExpr [element] | test.rs:927:13:927:18 | mut t1 [element] | provenance | | +| test.rs:927:27:927:35 | exec_iter | test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:15 | +| test.rs:928:14:928:61 | ... .get(...) [Some] | test.rs:928:14:928:70 | ... .unwrap() | provenance | MaD:102 | +| test.rs:928:42:928:44 | get | test.rs:928:14:928:61 | ... .get(...) [Some] | provenance | Src:MaD:16 | +| test.rs:929:13:929:15 | row | test.rs:931:22:931:22 | v | provenance | | +| test.rs:929:20:929:21 | t1 [element] | test.rs:929:13:929:15 | row | provenance | | | test.rs:935:22:935:30 | query_map | test.rs:937:14:937:24 | ...: i64 | provenance | Src:MaD:3 | | test.rs:937:14:937:24 | ...: i64 | test.rs:938:22:938:27 | values | provenance | | | test.rs:951:13:951:17 | total | test.rs:955:14:955:18 | total | provenance | | @@ -753,9 +779,27 @@ edges | test.rs:951:76:951:83 | ...: i64 | test.rs:951:86:954:9 | { ... } | provenance | | | test.rs:951:76:951:83 | ...: i64 | test.rs:952:18:952:20 | row | provenance | | | test.rs:951:76:951:83 | ...: i64 | test.rs:953:19:953:21 | row | provenance | | -| test.rs:951:86:954:9 | { ... } | test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | provenance | MaD:61 | +| test.rs:951:86:954:9 | { ... } | test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | provenance | MaD:65 | | test.rs:953:13:953:21 | ... + ... | test.rs:951:86:954:9 | { ... } | provenance | | -| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:96 | +| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:100 | +| test.rs:992:13:992:14 | v1 | test.rs:993:14:993:15 | v1 | provenance | | +| test.rs:992:24:992:33 | row.get(...) [Some] | test.rs:992:24:992:42 | ... .unwrap() | provenance | MaD:102 | +| test.rs:992:24:992:42 | ... .unwrap() | test.rs:992:13:992:14 | v1 | provenance | | +| test.rs:992:28:992:30 | get | test.rs:992:24:992:33 | row.get(...) [Some] | provenance | Src:MaD:16 | +| test.rs:995:13:995:14 | v2 | test.rs:996:14:996:15 | v2 | provenance | | +| test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | test.rs:995:24:995:46 | ... .unwrap() [Ok] | provenance | MaD:102 | +| test.rs:995:24:995:46 | ... .unwrap() [Ok] | test.rs:995:24:995:55 | ... .unwrap() | provenance | MaD:106 | +| test.rs:995:24:995:55 | ... .unwrap() | test.rs:995:13:995:14 | v2 | provenance | | +| test.rs:995:28:995:34 | get_opt | test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:17 | +| test.rs:998:13:998:14 | v3 | test.rs:999:14:999:15 | v3 | provenance | | +| test.rs:998:24:998:34 | row.take(...) [Some] | test.rs:998:24:998:43 | ... .unwrap() | provenance | MaD:102 | +| test.rs:998:24:998:43 | ... .unwrap() | test.rs:998:13:998:14 | v3 | provenance | | +| test.rs:998:28:998:31 | take | test.rs:998:24:998:34 | row.take(...) [Some] | provenance | Src:MaD:18 | +| test.rs:1001:13:1001:14 | v4 | test.rs:1002:14:1002:15 | v4 | provenance | | +| test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | provenance | MaD:102 | +| test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | test.rs:1001:24:1001:56 | ... .unwrap() | provenance | MaD:106 | +| test.rs:1001:24:1001:56 | ... .unwrap() | test.rs:1001:13:1001:14 | v4 | provenance | | +| test.rs:1001:28:1001:35 | take_opt | test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:19 | | test.rs:1022:22:1022:30 | query_map | test.rs:1024:14:1024:24 | ...: i64 | provenance | Src:MaD:5 | | test.rs:1024:14:1024:24 | ...: i64 | test.rs:1025:22:1025:27 | values | provenance | | | test.rs:1038:13:1038:17 | total | test.rs:1042:14:1042:18 | total | provenance | | @@ -766,9 +810,9 @@ edges | test.rs:1038:76:1038:83 | ...: i64 | test.rs:1038:86:1041:9 | { ... } | provenance | | | test.rs:1038:76:1038:83 | ...: i64 | test.rs:1039:18:1039:20 | row | provenance | | | test.rs:1038:76:1038:83 | ...: i64 | test.rs:1040:19:1040:21 | row | provenance | | -| test.rs:1038:86:1041:9 | { ... } | test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:62 | +| test.rs:1038:86:1041:9 | { ... } | test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:66 | | test.rs:1040:13:1040:21 | ... + ... | test.rs:1038:86:1041:9 | { ... } | provenance | | -| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:96 | +| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:100 | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:20:11:20:13 | tcp | provenance | | | test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:26:53:26:55 | tcp | provenance | | | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:13 | @@ -780,69 +824,69 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:47 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:58 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:61 | +| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:62 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:106 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:110 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:99 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:100 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:103 | +| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:104 | | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:61 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:61 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | | test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:56 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:47 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:58 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:61 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:62 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:52 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:56 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:55 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:56 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:59 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:60 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:53 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:54 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:57 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:58 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:59 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:60 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:63 | +| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:107 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:111 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | | test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:99 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:100 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:103 | +| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:104 | | test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | | test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | @@ -854,11 +898,11 @@ edges | test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | +| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:99 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:100 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:103 | +| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:104 | | test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | @@ -874,30 +918,30 @@ edges | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:99 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:100 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:103 | +| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:104 | | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:61 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:46 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:57 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:61 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | | test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | | test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:51 | +| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:55 | | test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:99 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:100 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:103 | +| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:104 | | test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | | test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | @@ -912,109 +956,109 @@ edges | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | | test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | | test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:55 | +| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:59 | | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | | test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | | test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:53 | +| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:57 | | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | | test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | | test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:59 | +| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:63 | | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | | test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | | test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:93 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:89 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:90 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:91 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | provenance | MaD:92 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:97 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:93 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:94 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:95 | +| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | provenance | MaD:96 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:14 | a [tuple.3] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:14 | a [tuple.3] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | web_frameworks.rs:100:13:100:13 | a [tuple.1] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | web_frameworks.rs:100:13:100:13 | a [tuple.3] | provenance | | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:95 | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:104 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:94 | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:103 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:89 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:90 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:99 | +| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:108 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:98 | +| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:107 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:93 | +| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:94 | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | web_frameworks.rs:111:17:111:17 | b | provenance | | | web_frameworks.rs:111:14:111:14 | a | web_frameworks.rs:113:14:113:14 | a | provenance | | @@ -1022,11 +1066,11 @@ edges | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:9 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:93 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:89 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:90 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:91 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | provenance | MaD:92 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:97 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:93 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:94 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:95 | +| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | provenance | MaD:96 | | web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.0] | web_frameworks.rs:132:14:132:14 | a | provenance | | | web_frameworks.rs:131:13:131:13 | a [tuple.1] | web_frameworks.rs:132:14:132:14 | a | provenance | | @@ -1684,16 +1728,43 @@ nodes | test.rs:810:50:810:55 | [post] buffer | semmle.label | [post] buffer | | test.rs:817:26:817:32 | &buffer | semmle.label | &buffer | | test.rs:817:27:817:32 | buffer | semmle.label | buffer | +| test.rs:905:13:905:14 | v1 | semmle.label | v1 | +| test.rs:905:24:905:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | +| test.rs:905:24:905:42 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:905:28:905:30 | get | semmle.label | get | +| test.rs:906:14:906:15 | v1 | semmle.label | v1 | +| test.rs:908:13:908:14 | v2 | semmle.label | v2 | +| test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | +| test.rs:908:24:908:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:908:24:908:55 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:908:28:908:34 | get_opt | semmle.label | get_opt | +| test.rs:909:14:909:15 | v2 | semmle.label | v2 | +| test.rs:911:13:911:14 | v3 | semmle.label | v3 | +| test.rs:911:24:911:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | +| test.rs:911:24:911:43 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:911:28:911:31 | take | semmle.label | take | +| test.rs:912:14:912:15 | v3 | semmle.label | v3 | +| test.rs:914:13:914:14 | v4 | semmle.label | v4 | +| test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | +| test.rs:914:24:914:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:914:24:914:56 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:914:28:914:35 | take_opt | semmle.label | take_opt | +| test.rs:915:14:915:15 | v4 | semmle.label | v4 | | test.rs:924:13:924:14 | v6 | semmle.label | v6 | | test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | semmle.label | conn.query_first(...) [Ok, Some] | | test.rs:924:23:924:64 | TryExpr [Some] | semmle.label | TryExpr [Some] | | test.rs:924:23:924:73 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:924:28:924:38 | query_first | semmle.label | query_first | | test.rs:925:14:925:15 | v6 | semmle.label | v6 | -| test.rs:927:13:927:18 | mut t1 | semmle.label | mut t1 | -| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok] | semmle.label | conn.exec_iter(...) [Ok] | -| test.rs:927:22:927:72 | TryExpr | semmle.label | TryExpr | +| test.rs:927:13:927:18 | mut t1 [element] | semmle.label | mut t1 [element] | +| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | +| test.rs:927:22:927:72 | TryExpr [element] | semmle.label | TryExpr [element] | | test.rs:927:27:927:35 | exec_iter | semmle.label | exec_iter | +| test.rs:928:14:928:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | +| test.rs:928:14:928:70 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:928:42:928:44 | get | semmle.label | get | +| test.rs:929:13:929:15 | row | semmle.label | row | +| test.rs:929:20:929:21 | t1 [element] | semmle.label | t1 [element] | | test.rs:931:22:931:22 | v | semmle.label | v | | test.rs:935:22:935:30 | query_map | semmle.label | query_map | | test.rs:937:14:937:24 | ...: i64 | semmle.label | ...: i64 | @@ -1708,6 +1779,28 @@ nodes | test.rs:953:13:953:21 | ... + ... | semmle.label | ... + ... | | test.rs:953:19:953:21 | row | semmle.label | row | | test.rs:955:14:955:18 | total | semmle.label | total | +| test.rs:992:13:992:14 | v1 | semmle.label | v1 | +| test.rs:992:24:992:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | +| test.rs:992:24:992:42 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:992:28:992:30 | get | semmle.label | get | +| test.rs:993:14:993:15 | v1 | semmle.label | v1 | +| test.rs:995:13:995:14 | v2 | semmle.label | v2 | +| test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | +| test.rs:995:24:995:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:995:24:995:55 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:995:28:995:34 | get_opt | semmle.label | get_opt | +| test.rs:996:14:996:15 | v2 | semmle.label | v2 | +| test.rs:998:13:998:14 | v3 | semmle.label | v3 | +| test.rs:998:24:998:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | +| test.rs:998:24:998:43 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:998:28:998:31 | take | semmle.label | take | +| test.rs:999:14:999:15 | v3 | semmle.label | v3 | +| test.rs:1001:13:1001:14 | v4 | semmle.label | v4 | +| test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | +| test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:1001:24:1001:56 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:1001:28:1001:35 | take_opt | semmle.label | take_opt | +| test.rs:1002:14:1002:15 | v4 | semmle.label | v4 | | test.rs:1022:22:1022:30 | query_map | semmle.label | query_map | | test.rs:1024:14:1024:24 | ...: i64 | semmle.label | ...: i64 | | test.rs:1025:22:1025:27 | values | semmle.label | values | @@ -2050,11 +2143,20 @@ testFailures | test.rs:779:14:779:23 | buffer2[0] | test.rs:759:28:759:57 | ...::connect | test.rs:779:14:779:23 | buffer2[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | | test.rs:794:26:794:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:794:26:794:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | | test.rs:817:26:817:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:817:26:817:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | +| test.rs:906:14:906:15 | v1 | test.rs:905:28:905:30 | get | test.rs:906:14:906:15 | v1 | $@ | test.rs:905:28:905:30 | get | get | +| test.rs:909:14:909:15 | v2 | test.rs:908:28:908:34 | get_opt | test.rs:909:14:909:15 | v2 | $@ | test.rs:908:28:908:34 | get_opt | get_opt | +| test.rs:912:14:912:15 | v3 | test.rs:911:28:911:31 | take | test.rs:912:14:912:15 | v3 | $@ | test.rs:911:28:911:31 | take | take | +| test.rs:915:14:915:15 | v4 | test.rs:914:28:914:35 | take_opt | test.rs:915:14:915:15 | v4 | $@ | test.rs:914:28:914:35 | take_opt | take_opt | | test.rs:925:14:925:15 | v6 | test.rs:924:28:924:38 | query_first | test.rs:925:14:925:15 | v6 | $@ | test.rs:924:28:924:38 | query_first | query_first | +| test.rs:928:14:928:70 | ... .unwrap() | test.rs:928:42:928:44 | get | test.rs:928:14:928:70 | ... .unwrap() | $@ | test.rs:928:42:928:44 | get | get | | test.rs:931:22:931:22 | v | test.rs:927:27:927:35 | exec_iter | test.rs:931:22:931:22 | v | $@ | test.rs:927:27:927:35 | exec_iter | exec_iter | | test.rs:938:22:938:27 | values | test.rs:935:22:935:30 | query_map | test.rs:938:22:938:27 | values | $@ | test.rs:935:22:935:30 | query_map | query_map | | test.rs:952:18:952:20 | row | test.rs:951:26:951:35 | query_fold | test.rs:952:18:952:20 | row | $@ | test.rs:951:26:951:35 | query_fold | query_fold | | test.rs:955:14:955:18 | total | test.rs:951:26:951:35 | query_fold | test.rs:955:14:955:18 | total | $@ | test.rs:951:26:951:35 | query_fold | query_fold | +| test.rs:993:14:993:15 | v1 | test.rs:992:28:992:30 | get | test.rs:993:14:993:15 | v1 | $@ | test.rs:992:28:992:30 | get | get | +| test.rs:996:14:996:15 | v2 | test.rs:995:28:995:34 | get_opt | test.rs:996:14:996:15 | v2 | $@ | test.rs:995:28:995:34 | get_opt | get_opt | +| test.rs:999:14:999:15 | v3 | test.rs:998:28:998:31 | take | test.rs:999:14:999:15 | v3 | $@ | test.rs:998:28:998:31 | take | take | +| test.rs:1002:14:1002:15 | v4 | test.rs:1001:28:1001:35 | take_opt | test.rs:1002:14:1002:15 | v4 | $@ | test.rs:1001:28:1001:35 | take_opt | take_opt | | test.rs:1025:22:1025:27 | values | test.rs:1022:22:1022:30 | query_map | test.rs:1025:22:1025:27 | values | $@ | test.rs:1022:22:1022:30 | query_map | query_map | | test.rs:1039:18:1039:20 | row | test.rs:1038:26:1038:35 | query_fold | test.rs:1039:18:1039:20 | row | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | | test.rs:1042:14:1042:18 | total | test.rs:1038:26:1038:35 | query_fold | test.rs:1042:14:1042:18 | total | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 16e2f3ecdd9..10f71f0d166 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -88,13 +88,24 @@ | test.rs:841:22:841:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:867:22:867:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:902:47:902:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:905:28:905:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:908:28:908:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:911:28:911:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:914:28:914:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:917:26:917:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:924:28:924:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:927:27:927:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:928:42:928:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:935:22:935:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:942:22:942:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:951:26:951:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:957:22:957:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:989:47:989:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:992:28:992:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:995:28:995:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:998:28:998:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1001:28:1001:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:1004:26:1004:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:1011:28:1011:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:1014:27:1014:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:1022:22:1022:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 6d53a62918c..51f45ab6405 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -902,30 +902,30 @@ mod test_mysql { let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; // $ Alert[rust/summary/taint-sources] let mut row = &mut rows[0]; - let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v1); // $ MISSING: hasTaintFlow + let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v1); // $ hasTaintFlow=0 - let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v2); // $ MISSING: hasTaintFlow + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v2); // $ hasTaintFlow=0 - let v3 : i64 = row.take(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v3); // $ MISSING: hasTaintFlow + let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v3); // $ hasTaintFlow=0 - let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v4); // $ MISSING: hasTaintFlow + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v4); // $ hasTaintFlow=0 - let value5 = row.as_ref(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] if let mysql::Value::Int(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow + sink(v); // $ MISSING: hasTaintFlow=0 } else if let mysql::Value::Bytes(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow + sink(v); // $ MISSING: hasTaintFlow=0 } let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ Alert[rust/summary/taint-sources] sink(v6); // $ hasTaintFlow let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ Alert[rust/summary/taint-sources] - sink(t1.nth(0).unwrap().unwrap().get::(0).unwrap()); // $ MISSING: hasTaintFlow + sink(t1.nth(0).unwrap().unwrap().get::(1).unwrap()); // $ Alert[rust/summary/taint-sources] hasTaintFlow=1 for row in t1 { for v in row { sink(v); // $ hasTaintFlow @@ -989,23 +989,23 @@ mod test_mysql_async { let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] let mut row = &mut rows[0]; - let v1 : i64 = row.get(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v1); // $ MISSING: hasTaintFlow + let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v1); // $ hasTaintFlow=0 - let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v2); // $ MISSING: hasTaintFlow + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v2); // $ hasTaintFlow=0 - let v3 : i64 = row.take(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v3); // $ MISSING: hasTaintFlow + let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v3); // $ hasTaintFlow=0 - let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] - sink(v4); // $ MISSING: hasTaintFlow + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v4); // $ hasTaintFlow=0 - let value5 = row.as_ref(0).unwrap(); // $ MISSING: Alert[rust/summary/taint-sources] + let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] if let mysql::Value::Int(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow + sink(v); // $ MISSING: hasTaintFlow=0 } else if let mysql::Value::Bytes(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow + sink(v); // $ MISSING: hasTaintFlow=0 } let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ Alert[rust/summary/taint-sources] From d4a599c51de7dfa2cd601170826d673dfa8c751c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 12:41:49 +0100 Subject: [PATCH 166/965] Rust: Accept more minor test expectation changes. --- .../UncontrolledAllocationSize.expected | 313 ++++++++---------- 1 file changed, 144 insertions(+), 169 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 2a224f29a65..64875e0a8ac 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -32,23 +32,15 @@ | main.rs:169:17:169:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:169:17:169:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:177:13:177:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:177:13:177:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:193:32:193:36 | alloc | main.rs:317:13:317:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:193:32:193:36 | alloc | main.rs:317:13:317:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:195:32:195:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:195:32:195:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:196:32:196:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:196:32:196:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:202:32:202:38 | realloc | main.rs:317:13:317:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:202:32:202:38 | realloc | main.rs:317:13:317:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:208:40:208:43 | grow | main.rs:317:13:317:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:208:40:208:43 | grow | main.rs:317:13:317:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | -| main.rs:210:40:210:50 | grow_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:210:40:210:50 | grow_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:213:36:213:41 | shrink | main.rs:317:13:317:26 | ...::args | main.rs:213:36:213:41 | shrink | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:219:13:219:24 | ...::malloc | main.rs:317:13:317:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | @@ -61,7 +53,7 @@ | main.rs:284:22:284:38 | ...::alloc | main.rs:308:25:308:38 | ...::args | main.rs:284:22:284:38 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:308:25:308:38 | ...::args | user-provided value | edges | main.rs:12:36:12:43 | ...: usize | main.rs:18:41:18:41 | v | provenance | | -| main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:18 Sink:MaD:18 | +| main.rs:18:41:18:41 | v | main.rs:18:13:18:31 | ...::realloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:18:41:18:41 | v | main.rs:20:50:20:50 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:29:60:29:60 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | @@ -69,101 +61,101 @@ edges | main.rs:18:41:18:41 | v | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:41 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:40 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:31 | -| main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:25 | -| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:25 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:30 | +| main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:24 | +| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:24 | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:41 | -| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:41 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:34 | -| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:17 Sink:MaD:17 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:40 | +| main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:40 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:33 | +| main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:33 | -| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:32 | +| main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:44 | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:33 | -| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:43 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:32 | +| main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:35:15:35:49 | ... * ... | main.rs:35:9:35:10 | s6 | provenance | | -| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:43 | +| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:42 | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:9:36:10 | l6 [Layout.size] | main.rs:37:31:37:32 | l6 [Layout.size] | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | main.rs:36:9:36:10 | l6 [Layout.size] | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:33 | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:32 | -| main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:38 | -| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:37 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:32 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) [Layout.size] | provenance | MaD:31 | +| main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:37 | +| main.rs:37:31:37:32 | l6 [Layout.size] | main.rs:39:60:39:68 | l6.size() | provenance | MaD:36 | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:33 | -| main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:32 | +| main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:45 | ... + ... | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:53:48:53:48 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:53 | ... * ... | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:40 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | -| main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:35 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:34 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:40 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | -| main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:35 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:41 | -| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:36 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:41 | -| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:36 | +| main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:34 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:40 | +| main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:35 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:40 | +| main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:35 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:40 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:39 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:35 | -| main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:34 | +| main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:28 | +| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:27 | | main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:30 | +| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:29 | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:40 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:27 | -| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:26 | +| main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:41 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:40 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | -| main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:41 | -| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:29 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:41 | -| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:40 | +| main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:28 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:40 | +| main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:41 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:40 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:41 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:40 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:31 | -| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:30 | +| main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:105:33:105:33 | v | provenance | | @@ -173,115 +165,107 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:41 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:40 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:41 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:40 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | -| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:103:35:103:36 | l3 | main.rs:103:17:103:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:105:33:105:33 | v | main.rs:86:35:86:42 | ...: usize | provenance | | -| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:109:35:109:36 | l1 | main.rs:109:17:109:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:109:35:109:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | -| main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:41 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:40 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | -| main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:41 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:40 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:46 | -| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:45 | +| main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:41 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:40 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:45 | -| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:44 | +| main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:41 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:40 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:31 | -| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:30 | +| main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | -| main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | +| main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:41 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:40 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:26 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:25 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 | -| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:11 Sink:MaD:11 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:11 Sink:MaD:11 | | main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | | main.rs:194:45:194:46 | l2 | main.rs:195:41:195:42 | l2 | provenance | | | main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:5 Sink:MaD:5 | -| main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:5 Sink:MaD:5 | | main.rs:195:41:195:42 | l2 | main.rs:196:48:196:49 | l2 | provenance | | | main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:6 Sink:MaD:6 | -| main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:6 Sink:MaD:6 | | main.rs:196:48:196:49 | l2 | main.rs:197:41:197:42 | l2 | provenance | | | main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | -| main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | | main.rs:197:41:197:42 | l2 | main.rs:198:48:198:49 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | -| main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | | main.rs:198:48:198:49 | l2 | main.rs:208:53:208:54 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:210:60:210:61 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:213:51:213:52 | l2 | provenance | | +| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:13 Sink:MaD:13 | | main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:14 Sink:MaD:14 | -| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:7 Sink:MaD:7 | -| main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:7 Sink:MaD:7 | -| main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:8 Sink:MaD:8 | | main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:8 Sink:MaD:8 | | main.rs:213:51:213:52 | l2 | main.rs:213:36:213:41 | shrink | provenance | MaD:9 Sink:MaD:9 | | main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | -| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:21 Sink:MaD:21 | +| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:20 Sink:MaD:20 | | main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | -| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:19 Sink:MaD:19 | +| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:18 Sink:MaD:18 | | main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | -| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | | main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | -| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:20 Sink:MaD:20 | +| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:19 Sink:MaD:19 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | -| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:22 Sink:MaD:22 | +| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:21 Sink:MaD:21 | | main.rs:227:24:227:31 | ...: usize | main.rs:230:46:230:46 | v | provenance | | | main.rs:230:46:230:46 | v | main.rs:230:13:230:44 | ...::try_with_capacity_in | provenance | MaD:3 Sink:MaD:3 | | main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:42 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:42 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | -| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:44 | +| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:43 | | main.rs:280:21:280:77 | ... * ... | main.rs:280:9:280:17 | num_bytes | provenance | | | main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | | -| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:41 | +| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:40 | | main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | -| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:31 | -| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:16 Sink:MaD:16 | -| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:23 | -| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:24 | -| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:39 | +| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:30 | +| main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | +| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:23 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:38 | | main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | @@ -289,12 +273,12 @@ edges | main.rs:317:9:317:9 | v | main.rs:323:27:323:27 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:324:25:324:25 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:325:22:325:22 | v | provenance | | -| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:23 | -| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:24 | -| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:39 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:42 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:42 | -| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:41 | +| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:22 | +| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:38 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:40 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -312,43 +296,42 @@ models | 7 | Sink: ::grow; Argument[2]; alloc-layout | | 8 | Sink: ::grow_zeroed; Argument[2]; alloc-layout | | 9 | Sink: ::shrink; Argument[2]; alloc-layout | -| 10 | Sink: ::alloc; Argument[0]; alloc-layout | -| 11 | Sink: ::alloc; Argument[0]; alloc-size | -| 12 | Sink: ::alloc_zeroed; Argument[0]; alloc-layout | -| 13 | Sink: ::alloc_zeroed; Argument[0]; alloc-size | -| 14 | Sink: ::realloc; Argument[2]; alloc-layout | -| 15 | Sink: ::realloc; Argument[2]; alloc-size | -| 16 | Sink: alloc::alloc::alloc; Argument[0]; alloc-layout | -| 17 | Sink: alloc::alloc::alloc_zeroed; Argument[0]; alloc-layout | -| 18 | Sink: alloc::alloc::realloc; Argument[2]; alloc-size | -| 19 | Sink: libc::unix::aligned_alloc; Argument[1]; alloc-size | -| 20 | Sink: libc::unix::calloc; Argument[0,1]; alloc-size | -| 21 | Sink: libc::unix::malloc; Argument[0]; alloc-size | -| 22 | Sink: libc::unix::realloc; Argument[1]; alloc-size | -| 23 | Source: std::env::args; ReturnValue.Element; commandargs | -| 24 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 25 | Summary: ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 26 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 27 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 28 | Summary: ::extend; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 29 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 30 | Summary: ::extend_packed; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | -| 33 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 34 | Summary: ::pad_to_align; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 36 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | -| 38 | Summary: ::size; Argument[self]; ReturnValue; taint | -| 39 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 40 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 41 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 42 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 43 | Summary: ::mul; Argument[0]; ReturnValue; taint | -| 44 | Summary: ::mul; Argument[self]; ReturnValue; taint | -| 45 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | -| 46 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | +| 10 | Sink: ::alloc; Argument[0]; alloc-size | +| 11 | Sink: ::alloc_zeroed; Argument[0]; alloc-layout | +| 12 | Sink: ::alloc_zeroed; Argument[0]; alloc-size | +| 13 | Sink: ::realloc; Argument[2]; alloc-layout | +| 14 | Sink: ::realloc; Argument[2]; alloc-size | +| 15 | Sink: alloc::alloc::alloc; Argument[0]; alloc-layout | +| 16 | Sink: alloc::alloc::alloc_zeroed; Argument[0]; alloc-layout | +| 17 | Sink: alloc::alloc::realloc; Argument[2]; alloc-size | +| 18 | Sink: libc::unix::aligned_alloc; Argument[1]; alloc-size | +| 19 | Sink: libc::unix::calloc; Argument[0,1]; alloc-size | +| 20 | Sink: libc::unix::malloc; Argument[0]; alloc-size | +| 21 | Sink: libc::unix::realloc; Argument[1]; alloc-size | +| 22 | Source: std::env::args; ReturnValue.Element; commandargs | +| 23 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 24 | Summary: ::align_to; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 25 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 26 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 27 | Summary: ::extend; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 28 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: ::extend_packed; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 30 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue.Field[core::alloc::layout::Layout::size]; value | +| 32 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 33 | Summary: ::pad_to_align; Argument[self]; ReturnValue; taint | +| 34 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 35 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::size; Argument[self].Field[core::alloc::layout::Layout::size]; ReturnValue; value | +| 37 | Summary: ::size; Argument[self]; ReturnValue; taint | +| 38 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 39 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 40 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 41 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 42 | Summary: ::mul; Argument[0]; ReturnValue; taint | +| 43 | Summary: ::mul; Argument[self]; ReturnValue; taint | +| 44 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | +| 45 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -512,32 +495,24 @@ nodes | main.rs:192:14:192:56 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:192:46:192:46 | v | semmle.label | v | | main.rs:193:32:193:36 | alloc | semmle.label | alloc | -| main.rs:193:32:193:36 | alloc | semmle.label | alloc | | main.rs:193:38:193:39 | l2 | semmle.label | l2 | | main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | | main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | -| main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | | main.rs:194:45:194:46 | l2 | semmle.label | l2 | | main.rs:195:32:195:39 | allocate | semmle.label | allocate | -| main.rs:195:32:195:39 | allocate | semmle.label | allocate | | main.rs:195:41:195:42 | l2 | semmle.label | l2 | | main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | -| main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:196:48:196:49 | l2 | semmle.label | l2 | | main.rs:197:32:197:39 | allocate | semmle.label | allocate | -| main.rs:197:32:197:39 | allocate | semmle.label | allocate | | main.rs:197:41:197:42 | l2 | semmle.label | l2 | | main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | -| main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:198:48:198:49 | l2 | semmle.label | l2 | | main.rs:202:32:202:38 | realloc | semmle.label | realloc | | main.rs:202:32:202:38 | realloc | semmle.label | realloc | | main.rs:202:48:202:48 | v | semmle.label | v | | main.rs:208:40:208:43 | grow | semmle.label | grow | -| main.rs:208:40:208:43 | grow | semmle.label | grow | | main.rs:208:53:208:54 | l2 | semmle.label | l2 | | main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | -| main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | | main.rs:210:60:210:61 | l2 | semmle.label | l2 | | main.rs:213:36:213:41 | shrink | semmle.label | shrink | | main.rs:213:51:213:52 | l2 | semmle.label | l2 | From 397563dd0e89674da9653f6a026d1b2cd8fcafc1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 13:54:11 +0100 Subject: [PATCH 167/965] Rust: Accept consistency check .expected changes. --- .../sources/CONSISTENCY/PathResolutionConsistency.expected | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 76ed919e869..16eea4a6fe4 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -4,8 +4,8 @@ multipleCallTargets | test.rs:229:22:229:72 | ... .read_to_string(...) | | test.rs:664:22:664:43 | file.read(...) | | test.rs:673:22:673:41 | f1.read(...) | -| test.rs:894:50:894:66 | ...::from(...) | -| test.rs:894:50:894:66 | ...::from(...) | +| test.rs:1096:50:1096:66 | ...::from(...) | +| test.rs:1096:50:1096:66 | ...::from(...) | | test_futures_io.rs:45:27:45:84 | ...::read(...) | | test_futures_io.rs:49:27:49:51 | reader.read(...) | | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() | @@ -26,3 +26,6 @@ multipleCallTargets | web_frameworks.rs:102:14:102:25 | a.as_bytes() | | web_frameworks.rs:158:14:158:23 | a.as_str() | | web_frameworks.rs:159:14:159:25 | a.as_bytes() | +multiplePathResolutions +| test.rs:897:28:897:65 | Result::<...> | +| test.rs:984:40:984:49 | Result::<...> | From 7eacd873439b02e5fdd4e5498e30772f3b86839e Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 15 Oct 2025 13:17:53 +0200 Subject: [PATCH 168/965] C++: Apply widening based on number of bounds measure --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 299 +++++++- .../SimpleRangeAnalysis/lowerBound.expected | 693 +++++++++++++----- .../SimpleRangeAnalysis/ternaryLower.expected | 75 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 75 +- .../SimpleRangeAnalysis/upperBound.expected | 693 +++++++++++++----- 5 files changed, 1443 insertions(+), 392 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 77cc773dc32..2ae91a4bbf9 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -517,6 +517,297 @@ private predicate isRecursiveExpr(Expr e) { ) } +/** + * Provides predicates that estimate the number of bounds that the range + * analysis might produce. + */ +private module BoundsEstimate { + /** + * Gets the limit beyond which we enable widening. I.e., if the estimated + * number of bounds exceeds this limit, we enable widening such that the limit + * will not be reached. + */ + float getBoundsLimit() { + // This limit is arbitrary, but low enough that it prevents timeouts on + // specific observed customer databases (and the in the tests). + result = 2.0.pow(40) + } + + /** Gets the maximum number of bounds possible when widening is used. */ + private int getNrOfWideningBounds() { + result = + max(ArithmeticType t | | count(wideningLowerBounds(t)).maximum(count(wideningUpperBounds(t)))) + } + + /** + * Holds if `boundFromGuard(guard, v, _, branch)` holds, but without + * relying on range analysis (which would cause non-monotonic recursion + * elsewhere). + */ + private predicate hasBoundFromGuard(Expr guard, VariableAccess v, boolean branch) { + exists(Expr lhs | linearAccess(lhs, v, _, _) | + relOpWithSwapAndNegate(guard, lhs, _, _, _, branch) + or + eqOpWithSwapAndNegate(guard, lhs, _, true, branch) + or + eqZeroWithNegate(guard, lhs, true, branch) + ) + } + + /** Holds if `def` and `v` is a guard phi node with a bound from a guard. */ + predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { + exists(Expr guard, boolean branch | + def.isGuardPhi(v, access, guard, branch) and + hasBoundFromGuard(guard, access, branch) + ) + } + + /** Gets the number of bounds for `def` and `v` as guard phi node. */ + language[monotonicAggregates] + private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = + max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isGuardPhiWithBound(def, v, _) and + result = 0 + } + + /** Gets the number of bounds for `def` and `v` as normal phi node. */ + language[monotonicAggregates] + private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { + // The implementation + result = + strictsum(RangeSsaDefinition inputDef | + inputDef = def.getAPhiInput(v) + | + nrOfBoundsDef(inputDef, v) + ) + or + def.isPhiNode(v) and + not exists(def.getAPhiInput(v)) and + result = 0 + } + + /** Gets the number of bounds for `def` and `v` as an NE phi node. */ + private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { + exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isNEPhi(v, def, _, _) and + result = 0 + } + + /** Gets the number of bounds for `def` and `v` as an unsupported guard phi node. */ + private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { + exists(VariableAccess access | + isUnsupportedGuardPhi(v, def, access) and + result = nrOfBoundsExpr(access) + ) + or + def.isPhiNode(v) and + not isUnsupportedGuardPhi(v, def, _) and + result = 0 + } + + private float nrOfBoundsPhi(RangeSsaDefinition def, StackVariable v) { + // The cases for phi nodes are not mutually exclusive. For instance a phi + // node can be both a guard phi node and a normal phi node. To handle this + // we sum the contributions from the different cases. + result = + nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + + nrOfBoundsUnsupportedGuardPhi(def, v) and + result != 0 + } + + /** Gets the estimated number of bounds for `def` and `v`. */ + float nrOfBoundsDef(RangeSsaDefinition def, StackVariable v) { + // Recursive definitions are already widened, so we simply estimate them as + // having the number of widening bounds available. This is crucial as it + // ensures that we don't follow recursive cycles when calculating the + // estimate. Had that not been the case the estimate itself would be at risk + // of causing performance issues and being non-functional. + if isRecursiveDef(def, v) + then result = getNrOfWideningBounds() + else ( + // Definitions with a defining value + exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) + or + // Assignment operations with a defining value + exists(AssignOperation assignOp | + def = assignOp and + assignOp.getLValue() = v.getAnAccess() and + result = nrOfBoundsExpr(assignOp) + ) + or + // Phi nodes + result = nrOfBoundsPhi(def, v) + or + unanalyzableDefBounds(def, v, _, _) and result = 1 + ) + } + + /** + * Gets a naive estimate of the number of bounds for `e`. + * + * The estimate is like an abstract interpretation of the range analysis, + * where the abstract value is the number of bounds. For instance, + * `nrOfBoundsExpr(12) = 1` and `nrOfBoundsExpr(x + y) = nrOfBoundsExpr(x) * + * nrOfBoundsExpr(y)`. + * + * The estimated number of bounds will usually be greater than the actual + * number of bounds, as the estimate can not detect cases where bounds are cut + * down when tracked precisely. For instance, in + * ```c + * int x = 1; + * if (cond) { x = 1; } + * int y = x + x; + * ``` + * the actual number of bounds for `y` is 1. However, the estimate will be 4 + * as the conditional assignment to `x` gives two bounds for `x` on the last + * line and the addition gives 2 * 2 bounds. There are two sources of anncuracies: + * + * 1. Without tracking the lower bounds we can't see that `x` is assigned a + * value that is equal to its lower bound. + * 2. Had the conditional assignment been `x = 2` then the estimate of two + * bounds for `x` would have been correct. However, the estimate of 4 for `y` + * would still be incorrect. Summing the actual bounds `{1,2}` with itself + * gives `{2,3,4}` which is only three bounds. Again, we can't realise this + * without tracking the bounds. + * + * Since these inaccuracies compound the estimated number of bounds can often + * be _much_ greater than the actual number of bounds. Do note though that the + * estimate is not _guaranteed_ to be an upper bound. In some cases the + * approximations might underestimate the number of bounds. + * + * This predicate is functional. This is crucial as: + * + * - It ensures that the computing the estimate itself is fast. + * - Our use of monotonic aggregates assumes functionality. + * + * Any non-functional case should be considered a bug. + */ + float nrOfBoundsExpr(Expr e) { + // Similarly to what we do for definitions, we do not attempt to measure the + // number of bounds for recursive expressions. + if isRecursiveExpr(e) + then result = getNrOfWideningBounds() + else + if analyzableExpr(e) + then + // The cases here are an abstraction of and mirrors the cases inside + // `getLowerBoundsImpl`/`getUpperBoundsImpl`. + result = 1 and exists(getValue(e).toFloat()) + or + exists(Expr operand | result = nrOfBoundsExpr(operand) | + effectivelyMultipliesByPositive(e, operand, _) + or + effectivelyMultipliesByNegative(e, operand, _) + ) + or + exists(ConditionalExpr condExpr | + e = condExpr and + result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) + ) + or + exists(BinaryArithmeticOperation binop | + e = binop and + result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) + | + e instanceof MaxExpr or + e instanceof MinExpr or + e instanceof AddExpr or + e instanceof SubExpr or + e instanceof UnsignedMulExpr + ) + or + exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) + or + exists(AssignArithmeticOperation assignOp | + e = assignOp and + result = nrOfBoundsExpr(assignOp.getLValue()) * nrOfBoundsExpr(assignOp.getRValue()) + | + e instanceof AssignAddExpr or + e instanceof AssignSubExpr or + e instanceof UnsignedAssignMulExpr + ) + or + // Handles `AssignMulByPositiveConstantExpr` and `AssignMulByNegativeConstantExpr` + exists(AssignMulByConstantExpr mulExpr | + e = mulExpr and + result = nrOfBoundsExpr(mulExpr.getLValue()) + ) + or + // Handles the prefix and postfix increment and decrement operators. + exists(CrementOperation crementOp | + e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) + ) + or + exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getLeftOperand())) + or + exists(Conversion convExpr | + e = convExpr and + if convExpr.getUnspecifiedType() instanceof BoolType + then result = 1 + else result = nrOfBoundsExpr(convExpr.getExpr()) + ) + or + exists(RangeSsaDefinition def, StackVariable v | + e = def.getAUse(v) and + result = nrOfBoundsDef(def, v) and + // Avoid returning two numbers when `e` is a use with a constant value. + not exists(getValue(e).toFloat()) + ) + or + e instanceof UnsignedBitwiseAndExpr and + result = 1 + or + exists(RShiftExpr rsExpr | + e = rsExpr and + exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and + result = nrOfBoundsExpr(rsExpr.getLeftOperand()) + ) + else ( + exists(exprMinVal(e)) and result = 1 + ) + } +} + +/** + * Holds if `v` is a variable for which widening should be used, as otherwise a + * very large number of bounds might be generated during the range analysis for + * `v`. + */ +private predicate varHasTooManyBounds(StackVariable v) { + exists(RangeSsaDefinition def | + def.getAVariable() = v and + BoundsEstimate::nrOfBoundsDef(def, v) > BoundsEstimate::getBoundsLimit() + ) +} + +/** + * Holds if `e` is an expression for which widening should be used, as otherwise + * a very large number of bounds might be generated during the range analysis + * for `e`. + */ +private predicate exprHasTooManyBounds(Expr e) { + BoundsEstimate::nrOfBoundsExpr(e) > BoundsEstimate::getBoundsLimit() + or + // A subexpressions of an expression with too many bounds may itself not have + // to many bounds. For instance, `x + y` can have too many bounds without `x` + // having as well. But in these cases, still want to consider `e` as having + // too many bounds since: + // - The overall result is widened anyway, so widening `e` as well is unlikely + // to cause further precision loss. + // - The number of bounds could be very large but still below the arbitrary + // limit. Hence widening `e` can improve performance. + exists(Expr pe | exprHasTooManyBounds(pe) and e.getParent() = pe) +} + /** * Holds if `binop` is a binary operation that's likely to be assigned a * quadratic (or more) number of candidate bounds during the analysis. This can @@ -667,7 +958,7 @@ private float getTruncatedLowerBounds(Expr expr) { if exprMinVal(expr) <= newLB and newLB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) then result = widenLowerBound(expr.getUnspecifiedType(), newLB) else result = newLB else result = exprMinVal(expr) @@ -721,7 +1012,7 @@ private float getTruncatedUpperBounds(Expr expr) { if exprMinVal(expr) <= newUB and newUB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) then result = widenUpperBound(expr.getUnspecifiedType(), newUB) else result = newUB else result = exprMaxVal(expr) @@ -1812,7 +2103,7 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new lower bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the @@ -1836,7 +2127,7 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new upper bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index bc8f42dafc3..940f8301234 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,197 +485,508 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:418:20:418:20 | x | 0 | -| test.c:418:30:418:30 | x | 0 | -| test.c:421:3:421:4 | y1 | 0 | -| test.c:421:11:421:11 | y | 0 | -| test.c:421:14:421:14 | y | 1 | -| test.c:422:3:422:4 | y2 | 0 | -| test.c:422:9:422:9 | y | 1 | -| test.c:422:14:422:14 | y | 2 | -| test.c:422:22:422:22 | y | 5 | -| test.c:423:10:423:11 | y1 | 1 | -| test.c:423:15:423:16 | y2 | 5 | -| test.c:431:3:431:3 | i | -2147483648 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | -2147483648 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | -2147483648 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | -2147483648 | -| test.c:442:7:442:7 | j | -2147483648 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | -2147483648 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | -2147483648 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 0 | -| test.c:456:17:456:17 | a | 3 | -| test.c:456:33:456:33 | b | 0 | -| test.c:456:38:456:38 | b | 5 | -| test.c:457:13:457:13 | a | 3 | -| test.c:457:15:457:15 | b | 5 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 15 | -| test.c:460:12:460:12 | a | 0 | -| test.c:460:17:460:17 | a | 3 | -| test.c:460:33:460:33 | b | 0 | -| test.c:460:38:460:38 | b | 0 | -| test.c:461:13:461:13 | a | 3 | -| test.c:461:15:461:15 | b | 0 | -| test.c:462:5:462:9 | total | 0 | -| test.c:462:14:462:14 | r | 0 | -| test.c:464:12:464:12 | a | 0 | -| test.c:464:17:464:17 | a | 3 | -| test.c:464:34:464:34 | b | 0 | -| test.c:464:39:464:39 | b | 13 | -| test.c:465:13:465:13 | a | 3 | -| test.c:465:15:465:15 | b | 13 | -| test.c:466:5:466:9 | total | 0 | -| test.c:466:14:466:14 | r | 39 | -| test.c:469:10:469:14 | total | 0 | -| test.c:475:12:475:12 | b | 0 | -| test.c:475:17:475:17 | b | 5 | -| test.c:476:16:476:16 | b | 5 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 55 | -| test.c:479:12:479:12 | b | 0 | -| test.c:479:17:479:17 | b | 0 | -| test.c:480:16:480:16 | b | 0 | -| test.c:481:5:481:9 | total | 0 | -| test.c:481:14:481:14 | r | 0 | -| test.c:483:13:483:13 | b | 0 | -| test.c:483:18:483:18 | b | 13 | -| test.c:484:16:484:16 | b | 13 | -| test.c:485:5:485:9 | total | 0 | -| test.c:485:14:485:14 | r | 143 | -| test.c:488:10:488:14 | total | 0 | -| test.c:493:3:493:3 | x | 0 | -| test.c:493:7:493:7 | y | 0 | -| test.c:494:3:494:4 | xy | 0 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 0 | -| test.c:501:3:501:3 | y | 0 | -| test.c:502:3:502:4 | xy | 0 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 0 | -| test.c:508:43:508:44 | ui | 10 | -| test.c:508:48:508:49 | ui | 10 | -| test.c:509:12:509:17 | result | 100 | -| test.c:511:7:511:8 | ul | 0 | -| test.c:512:28:512:29 | ul | 10 | -| test.c:512:33:512:34 | ul | 10 | -| test.c:513:12:513:17 | result | 0 | -| test.c:519:7:519:8 | ui | 0 | -| test.c:519:19:519:20 | ui | 0 | -| test.c:520:5:520:6 | ui | 2 | -| test.c:520:11:520:12 | ui | 2 | -| test.c:521:12:521:13 | ui | 4 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | -2147483648 | -| test.c:533:18:533:18 | i | -1 | -| test.c:534:5:534:5 | i | -2147483648 | -| test.c:534:13:534:13 | i | -1 | -| test.c:535:9:535:9 | i | -5 | -| test.c:537:5:537:5 | i | -2147483648 | -| test.c:537:9:537:9 | i | -5 | -| test.c:538:9:538:9 | i | -30 | -| test.c:540:5:540:5 | i | -30 | -| test.c:541:9:541:9 | i | -210 | -| test.c:543:5:543:5 | i | -210 | -| test.c:544:9:544:9 | i | -1155 | -| test.c:546:7:546:7 | i | -2147483648 | -| test.c:547:5:547:5 | i | -2147483648 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | -2147483648 | -| test.c:550:7:550:7 | i | -2147483648 | -| test.c:551:10:551:10 | i | -2147483648 | -| test.c:554:3:554:3 | i | -2147483648 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | -128 | -| test.c:563:7:563:7 | n | 0 | -| test.c:565:7:565:7 | n | 0 | -| test.c:566:9:566:9 | n | 1 | -| test.c:569:7:569:7 | n | 0 | -| test.c:570:9:570:9 | n | 1 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 0 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 1 | -| test.c:581:10:581:10 | n | 0 | -| test.c:582:5:582:5 | n | 1 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | -32768 | -| test.c:592:7:592:7 | n | 0 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 1 | -| test.c:598:7:598:7 | n | 0 | -| test.c:599:9:599:9 | n | 1 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 0 | -| test.c:605:5:605:5 | n | 1 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | -32768 | -| test.c:613:9:613:9 | n | -32768 | -| test.c:614:11:614:11 | n | 0 | -| test.c:618:7:618:7 | n | -32768 | -| test.c:619:13:619:13 | n | 5 | -| test.c:622:9:622:9 | n | 6 | -| test.c:625:7:625:7 | n | -32768 | -| test.c:625:22:625:22 | n | -32767 | -| test.c:626:9:626:9 | n | -32766 | -| test.c:629:7:629:7 | n | -32768 | -| test.c:630:5:630:5 | n | 0 | -| test.c:630:10:630:10 | n | 1 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 0 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 1 | -| test.c:642:7:642:8 | ss | -32768 | -| test.c:643:9:643:10 | ss | 0 | -| test.c:646:7:646:8 | ss | -32768 | -| test.c:647:9:647:10 | ss | -32768 | -| test.c:650:14:650:15 | us | 0 | -| test.c:651:9:651:10 | us | 0 | -| test.c:654:14:654:15 | us | 0 | -| test.c:655:9:655:10 | us | 0 | -| test.c:658:7:658:8 | ss | -32768 | -| test.c:659:9:659:10 | ss | -32768 | -| test.c:662:7:662:8 | ss | -32768 | -| test.c:663:9:663:10 | ss | -1 | -| test.c:669:8:669:8 | s | -2147483648 | -| test.c:669:15:669:15 | s | 0 | -| test.c:669:23:669:23 | s | 0 | -| test.c:670:18:670:18 | s | 0 | -| test.c:670:22:670:22 | s | 0 | -| test.c:671:9:671:14 | result | 0 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | -2147483648 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 0 | -| test.c:688:12:688:12 | s | -2147483648 | -| test.c:689:7:689:8 | s2 | -4 | -| test.c:694:7:694:7 | x | -2147483648 | -| test.c:695:9:695:9 | y | -2147483648 | -| test.c:699:7:699:7 | y | -2147483648 | -| test.c:708:7:708:7 | x | -2147483648 | -| test.c:713:7:713:7 | x | -2147483648 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:10:420:11 | ip | 0 | +| test.c:420:20:420:21 | ip | 0 | +| test.c:420:40:420:41 | ip | 0 | +| test.c:421:14:421:15 | ip | 1 | +| test.c:422:14:422:15 | ip | 0 | +| test.c:422:34:422:35 | ip | 0 | +| test.c:423:11:423:12 | ip | 0 | +| test.c:424:13:424:14 | ip | 0 | +| test.c:425:14:425:15 | ip | 0 | +| test.c:426:14:426:15 | ip | 0 | +| test.c:427:15:427:16 | ip | 0 | +| test.c:427:41:427:42 | ip | 0 | +| test.c:427:52:427:53 | ip | 0 | +| test.c:427:67:427:68 | ip | 0 | +| test.c:427:78:427:79 | ip | 0 | +| test.c:428:18:428:19 | ip | 0 | +| test.c:429:23:429:24 | ip | 0 | +| test.c:429:34:429:35 | ip | 0 | +| test.c:430:25:430:26 | ip | 0 | +| test.c:431:20:431:21 | ip | 0 | +| test.c:432:11:432:12 | ip | 0 | +| test.c:432:26:432:27 | ip | 0 | +| test.c:433:16:433:17 | ip | 0 | +| test.c:434:16:434:17 | ip | 0 | +| test.c:435:16:435:17 | ip | 0 | +| test.c:436:17:436:18 | ip | 0 | +| test.c:437:22:437:23 | ip | 0 | +| test.c:437:33:437:34 | ip | 0 | +| test.c:437:48:437:49 | ip | 0 | +| test.c:437:59:437:60 | ip | 0 | +| test.c:438:20:438:21 | ip | 0 | +| test.c:439:25:439:26 | ip | 0 | +| test.c:439:36:439:37 | ip | 0 | +| test.c:440:27:440:28 | ip | 0 | +| test.c:441:22:441:23 | ip | 0 | +| test.c:442:15:442:16 | ip | 0 | +| test.c:442:30:442:31 | ip | 0 | +| test.c:443:11:443:12 | ip | 0 | +| test.c:444:12:444:13 | ip | 0 | +| test.c:445:12:445:13 | ip | 0 | +| test.c:446:13:446:14 | ip | 0 | +| test.c:446:39:446:40 | ip | 0 | +| test.c:446:50:446:51 | ip | 0 | +| test.c:446:65:446:66 | ip | 0 | +| test.c:446:76:446:77 | ip | 0 | +| test.c:447:16:447:17 | ip | 0 | +| test.c:448:21:448:22 | ip | 0 | +| test.c:448:32:448:33 | ip | 0 | +| test.c:449:23:449:24 | ip | 0 | +| test.c:450:18:450:19 | ip | 0 | +| test.c:451:11:451:12 | ip | 0 | +| test.c:451:17:451:18 | ip | 0 | +| test.c:451:37:451:38 | ip | 0 | +| test.c:451:43:451:44 | ip | 0 | +| test.c:452:14:452:15 | ip | 0 | +| test.c:453:14:453:15 | ip | 0 | +| test.c:454:14:454:15 | ip | 0 | +| test.c:455:15:455:16 | ip | 0 | +| test.c:455:41:455:42 | ip | 0 | +| test.c:455:52:455:53 | ip | 0 | +| test.c:455:67:455:68 | ip | 0 | +| test.c:455:78:455:79 | ip | 0 | +| test.c:456:18:456:19 | ip | 0 | +| test.c:457:23:457:24 | ip | 0 | +| test.c:457:34:457:35 | ip | 0 | +| test.c:458:25:458:26 | ip | 0 | +| test.c:459:20:459:21 | ip | 0 | +| test.c:460:14:460:15 | ip | 0 | +| test.c:460:20:460:21 | ip | 0 | +| test.c:461:16:461:17 | ip | 0 | +| test.c:462:12:462:13 | ip | 0 | +| test.c:463:14:463:15 | ip | 0 | +| test.c:464:15:464:16 | ip | 0 | +| test.c:465:16:465:17 | ip | 0 | +| test.c:466:16:466:17 | ip | 0 | +| test.c:467:17:467:18 | ip | 0 | +| test.c:468:22:468:23 | ip | 0 | +| test.c:468:33:468:34 | ip | 0 | +| test.c:468:48:468:49 | ip | 0 | +| test.c:468:59:468:60 | ip | 0 | +| test.c:469:20:469:21 | ip | 0 | +| test.c:470:25:470:26 | ip | 0 | +| test.c:470:36:470:37 | ip | 0 | +| test.c:471:27:471:28 | ip | 0 | +| test.c:472:22:472:23 | ip | 0 | +| test.c:473:13:473:14 | ip | 0 | +| test.c:473:28:473:29 | ip | 0 | +| test.c:474:18:474:19 | ip | 0 | +| test.c:475:18:475:19 | ip | 0 | +| test.c:476:18:476:19 | ip | 0 | +| test.c:477:19:477:20 | ip | 0 | +| test.c:478:24:478:25 | ip | 0 | +| test.c:478:35:478:36 | ip | 0 | +| test.c:478:50:478:51 | ip | 0 | +| test.c:478:61:478:62 | ip | 0 | +| test.c:479:22:479:23 | ip | 0 | +| test.c:480:27:480:28 | ip | 0 | +| test.c:480:38:480:39 | ip | 0 | +| test.c:481:29:481:30 | ip | 0 | +| test.c:482:24:482:25 | ip | 0 | +| test.c:483:17:483:18 | ip | 0 | +| test.c:483:32:483:33 | ip | 0 | +| test.c:484:14:484:15 | ip | 0 | +| test.c:485:18:485:19 | ip | 0 | +| test.c:486:18:486:19 | ip | 0 | +| test.c:487:19:487:20 | ip | 0 | +| test.c:488:24:488:25 | ip | 0 | +| test.c:488:35:488:36 | ip | 0 | +| test.c:488:50:488:51 | ip | 0 | +| test.c:488:61:488:62 | ip | 0 | +| test.c:489:22:489:23 | ip | 0 | +| test.c:490:27:490:28 | ip | 0 | +| test.c:490:38:490:39 | ip | 0 | +| test.c:491:29:491:30 | ip | 0 | +| test.c:492:24:492:25 | ip | 0 | +| test.c:493:17:493:18 | ip | 0 | +| test.c:493:23:493:24 | ip | 0 | +| test.c:493:43:493:44 | ip | 0 | +| test.c:493:49:493:50 | ip | 0 | +| test.c:494:16:494:17 | ip | 0 | +| test.c:495:16:495:17 | ip | 0 | +| test.c:496:16:496:17 | ip | 0 | +| test.c:497:17:497:18 | ip | 0 | +| test.c:498:22:498:23 | ip | 0 | +| test.c:498:33:498:34 | ip | 0 | +| test.c:498:48:498:49 | ip | 0 | +| test.c:498:59:498:60 | ip | 0 | +| test.c:499:20:499:21 | ip | 0 | +| test.c:500:25:500:26 | ip | 0 | +| test.c:500:36:500:37 | ip | 0 | +| test.c:501:27:501:28 | ip | 0 | +| test.c:502:22:502:23 | ip | 0 | +| test.c:503:16:503:17 | ip | 0 | +| test.c:503:22:503:23 | ip | 0 | +| test.c:504:18:504:19 | ip | 0 | +| test.c:505:14:505:15 | ip | 0 | +| test.c:506:14:506:15 | ip | 0 | +| test.c:506:24:506:25 | ip | 0 | +| test.c:506:44:506:45 | ip | 0 | +| test.c:507:16:507:17 | ip | 1 | +| test.c:508:16:508:17 | ip | 0 | +| test.c:508:36:508:37 | ip | 0 | +| test.c:509:14:509:15 | ip | 0 | +| test.c:510:19:510:20 | ip | 0 | +| test.c:511:20:511:21 | ip | 0 | +| test.c:512:20:512:21 | ip | 0 | +| test.c:513:21:513:22 | ip | 0 | +| test.c:514:26:514:27 | ip | 0 | +| test.c:514:37:514:38 | ip | 0 | +| test.c:514:52:514:53 | ip | 0 | +| test.c:514:63:514:64 | ip | 0 | +| test.c:515:24:515:25 | ip | 0 | +| test.c:516:29:516:30 | ip | 0 | +| test.c:516:40:516:41 | ip | 0 | +| test.c:517:31:517:32 | ip | 0 | +| test.c:518:26:518:27 | ip | 0 | +| test.c:519:17:519:18 | ip | 0 | +| test.c:519:32:519:33 | ip | 0 | +| test.c:520:22:520:23 | ip | 0 | +| test.c:521:22:521:23 | ip | 0 | +| test.c:522:22:522:23 | ip | 0 | +| test.c:523:23:523:24 | ip | 0 | +| test.c:524:28:524:29 | ip | 0 | +| test.c:524:39:524:40 | ip | 0 | +| test.c:524:54:524:55 | ip | 0 | +| test.c:524:65:524:66 | ip | 0 | +| test.c:525:26:525:27 | ip | 0 | +| test.c:526:31:526:32 | ip | 0 | +| test.c:526:42:526:43 | ip | 0 | +| test.c:527:33:527:34 | ip | 0 | +| test.c:528:28:528:29 | ip | 0 | +| test.c:529:21:529:22 | ip | 0 | +| test.c:529:36:529:37 | ip | 0 | +| test.c:530:17:530:18 | ip | 0 | +| test.c:531:18:531:19 | ip | 0 | +| test.c:532:18:532:19 | ip | 0 | +| test.c:533:19:533:20 | ip | 0 | +| test.c:534:24:534:25 | ip | 0 | +| test.c:534:35:534:36 | ip | 0 | +| test.c:534:50:534:51 | ip | 0 | +| test.c:534:61:534:62 | ip | 0 | +| test.c:535:22:535:23 | ip | 0 | +| test.c:536:27:536:28 | ip | 0 | +| test.c:536:38:536:39 | ip | 0 | +| test.c:537:29:537:30 | ip | 0 | +| test.c:538:24:538:25 | ip | 0 | +| test.c:539:17:539:18 | ip | 0 | +| test.c:539:23:539:24 | ip | 0 | +| test.c:539:43:539:44 | ip | 0 | +| test.c:539:49:539:50 | ip | 0 | +| test.c:540:20:540:21 | ip | 0 | +| test.c:541:20:541:21 | ip | 0 | +| test.c:542:20:542:21 | ip | 0 | +| test.c:543:21:543:22 | ip | 0 | +| test.c:544:26:544:27 | ip | 0 | +| test.c:544:37:544:38 | ip | 0 | +| test.c:544:52:544:53 | ip | 0 | +| test.c:544:63:544:64 | ip | 0 | +| test.c:545:24:545:25 | ip | 0 | +| test.c:546:29:546:30 | ip | 0 | +| test.c:546:40:546:41 | ip | 0 | +| test.c:547:31:547:32 | ip | 0 | +| test.c:548:26:548:27 | ip | 0 | +| test.c:549:20:549:21 | ip | 0 | +| test.c:549:26:549:27 | ip | 0 | +| test.c:550:22:550:23 | ip | 0 | +| test.c:551:18:551:19 | ip | 0 | +| test.c:552:16:552:17 | ip | 0 | +| test.c:553:17:553:18 | ip | 0 | +| test.c:554:18:554:19 | ip | 0 | +| test.c:555:18:555:19 | ip | 0 | +| test.c:556:19:556:20 | ip | 0 | +| test.c:557:24:557:25 | ip | 0 | +| test.c:557:35:557:36 | ip | 0 | +| test.c:557:50:557:51 | ip | 0 | +| test.c:557:61:557:62 | ip | 0 | +| test.c:558:22:558:23 | ip | 0 | +| test.c:559:27:559:28 | ip | 0 | +| test.c:559:38:559:39 | ip | 0 | +| test.c:560:29:560:30 | ip | 0 | +| test.c:561:24:561:25 | ip | 0 | +| test.c:562:15:562:16 | ip | 0 | +| test.c:562:30:562:31 | ip | 0 | +| test.c:563:20:563:21 | ip | 0 | +| test.c:564:20:564:21 | ip | 0 | +| test.c:565:20:565:21 | ip | 0 | +| test.c:566:21:566:22 | ip | 0 | +| test.c:567:26:567:27 | ip | 0 | +| test.c:567:37:567:38 | ip | 0 | +| test.c:567:52:567:53 | ip | 0 | +| test.c:567:63:567:64 | ip | 0 | +| test.c:568:24:568:25 | ip | 0 | +| test.c:569:29:569:30 | ip | 0 | +| test.c:569:40:569:41 | ip | 0 | +| test.c:570:31:570:32 | ip | 0 | +| test.c:571:26:571:27 | ip | 0 | +| test.c:572:19:572:20 | ip | 0 | +| test.c:572:34:572:35 | ip | 0 | +| test.c:573:16:573:17 | ip | 0 | +| test.c:574:20:574:21 | ip | 0 | +| test.c:575:20:575:21 | ip | 0 | +| test.c:576:21:576:22 | ip | 0 | +| test.c:577:26:577:27 | ip | 0 | +| test.c:577:37:577:38 | ip | 0 | +| test.c:577:52:577:53 | ip | 0 | +| test.c:577:63:577:64 | ip | 0 | +| test.c:578:24:578:25 | ip | 0 | +| test.c:579:29:579:30 | ip | 0 | +| test.c:579:40:579:41 | ip | 0 | +| test.c:580:31:580:32 | ip | 0 | +| test.c:581:26:581:27 | ip | 0 | +| test.c:582:19:582:20 | ip | 0 | +| test.c:582:25:582:26 | ip | 0 | +| test.c:582:45:582:46 | ip | 0 | +| test.c:582:51:582:52 | ip | 0 | +| test.c:583:18:583:19 | ip | 0 | +| test.c:584:18:584:19 | ip | 0 | +| test.c:585:18:585:19 | ip | 0 | +| test.c:586:19:586:20 | ip | 0 | +| test.c:587:24:587:25 | ip | 0 | +| test.c:587:35:587:36 | ip | 0 | +| test.c:587:50:587:51 | ip | 0 | +| test.c:587:61:587:62 | ip | 0 | +| test.c:588:22:588:23 | ip | 0 | +| test.c:589:27:589:28 | ip | 0 | +| test.c:589:38:589:39 | ip | 0 | +| test.c:590:29:590:30 | ip | 0 | +| test.c:591:24:591:25 | ip | 0 | +| test.c:592:18:592:19 | ip | 0 | +| test.c:592:24:592:25 | ip | 0 | +| test.c:593:20:593:21 | ip | 0 | +| test.c:594:16:594:17 | ip | 0 | +| test.c:595:10:595:23 | special_number | 0 | +| test.c:603:7:603:8 | c1 | -2147483648 | +| test.c:603:13:603:13 | x | 0 | +| test.c:604:7:604:8 | c2 | -2147483648 | +| test.c:604:13:604:13 | x | 0 | +| test.c:605:7:605:8 | c3 | -2147483648 | +| test.c:605:13:605:13 | x | 0 | +| test.c:606:7:606:8 | c4 | -2147483648 | +| test.c:606:13:606:13 | x | 0 | +| test.c:607:7:607:8 | c5 | -2147483648 | +| test.c:607:13:607:13 | x | 0 | +| test.c:608:7:608:8 | c1 | -2147483648 | +| test.c:608:13:608:14 | c2 | -2147483648 | +| test.c:608:19:608:19 | x | 0 | +| test.c:609:7:609:8 | c1 | -2147483648 | +| test.c:609:13:609:14 | c3 | -2147483648 | +| test.c:609:19:609:19 | x | 0 | +| test.c:610:7:610:8 | c1 | -2147483648 | +| test.c:610:13:610:14 | c4 | -2147483648 | +| test.c:610:19:610:19 | x | 0 | +| test.c:611:7:611:8 | c1 | -2147483648 | +| test.c:611:13:611:14 | c5 | -2147483648 | +| test.c:611:19:611:19 | x | 0 | +| test.c:612:7:612:8 | c2 | -2147483648 | +| test.c:612:13:612:14 | c3 | -2147483648 | +| test.c:612:19:612:19 | x | 0 | +| test.c:614:11:614:11 | x | 0 | +| test.c:614:15:614:15 | x | 0 | +| test.c:614:19:614:19 | x | 0 | +| test.c:614:23:614:23 | x | 0 | +| test.c:614:27:614:27 | x | 0 | +| test.c:614:31:614:31 | x | 0 | +| test.c:614:35:614:35 | x | 0 | +| test.c:614:39:614:39 | x | 0 | +| test.c:614:43:614:43 | x | 0 | +| test.c:614:47:614:47 | x | 0 | +| test.c:614:51:614:51 | x | 0 | +| test.c:614:55:614:55 | x | 0 | +| test.c:615:10:615:10 | y | -2147483648 | +| test.c:620:20:620:20 | x | 0 | +| test.c:620:30:620:30 | x | 0 | +| test.c:623:3:623:4 | y1 | 0 | +| test.c:623:11:623:11 | y | 0 | +| test.c:623:14:623:14 | y | 1 | +| test.c:624:3:624:4 | y2 | 0 | +| test.c:624:9:624:9 | y | 1 | +| test.c:624:14:624:14 | y | 2 | +| test.c:624:22:624:22 | y | 5 | +| test.c:625:10:625:11 | y1 | 1 | +| test.c:625:15:625:16 | y2 | 5 | +| test.c:633:3:633:3 | i | -2147483648 | +| test.c:634:7:634:7 | i | 10 | +| test.c:636:3:636:3 | i | -2147483648 | +| test.c:637:3:637:3 | i | 10 | +| test.c:638:7:638:7 | i | 20 | +| test.c:640:3:640:3 | i | -2147483648 | +| test.c:641:3:641:3 | i | 40 | +| test.c:642:7:642:7 | i | 30 | +| test.c:644:3:644:3 | i | -2147483648 | +| test.c:644:7:644:7 | j | -2147483648 | +| test.c:645:7:645:7 | i | 40 | +| test.c:647:3:647:3 | i | -2147483648 | +| test.c:647:8:647:8 | j | 40 | +| test.c:648:7:648:7 | i | 50 | +| test.c:650:3:650:3 | i | -2147483648 | +| test.c:650:13:650:13 | j | 50 | +| test.c:651:7:651:7 | i | 60 | +| test.c:658:12:658:12 | a | 0 | +| test.c:658:17:658:17 | a | 3 | +| test.c:658:33:658:33 | b | 0 | +| test.c:658:38:658:38 | b | 5 | +| test.c:659:13:659:13 | a | 3 | +| test.c:659:15:659:15 | b | 5 | +| test.c:660:5:660:9 | total | 0 | +| test.c:660:14:660:14 | r | 15 | +| test.c:662:12:662:12 | a | 0 | +| test.c:662:17:662:17 | a | 3 | +| test.c:662:33:662:33 | b | 0 | +| test.c:662:38:662:38 | b | 0 | +| test.c:663:13:663:13 | a | 3 | +| test.c:663:15:663:15 | b | 0 | +| test.c:664:5:664:9 | total | 0 | +| test.c:664:14:664:14 | r | 0 | +| test.c:666:12:666:12 | a | 0 | +| test.c:666:17:666:17 | a | 3 | +| test.c:666:34:666:34 | b | 0 | +| test.c:666:39:666:39 | b | 13 | +| test.c:667:13:667:13 | a | 3 | +| test.c:667:15:667:15 | b | 13 | +| test.c:668:5:668:9 | total | 0 | +| test.c:668:14:668:14 | r | 39 | +| test.c:671:10:671:14 | total | 0 | +| test.c:677:12:677:12 | b | 0 | +| test.c:677:17:677:17 | b | 5 | +| test.c:678:16:678:16 | b | 5 | +| test.c:679:5:679:9 | total | 0 | +| test.c:679:14:679:14 | r | 55 | +| test.c:681:12:681:12 | b | 0 | +| test.c:681:17:681:17 | b | 0 | +| test.c:682:16:682:16 | b | 0 | +| test.c:683:5:683:9 | total | 0 | +| test.c:683:14:683:14 | r | 0 | +| test.c:685:13:685:13 | b | 0 | +| test.c:685:18:685:18 | b | 13 | +| test.c:686:16:686:16 | b | 13 | +| test.c:687:5:687:9 | total | 0 | +| test.c:687:14:687:14 | r | 143 | +| test.c:690:10:690:14 | total | 0 | +| test.c:695:3:695:3 | x | 0 | +| test.c:695:7:695:7 | y | 0 | +| test.c:696:3:696:4 | xy | 0 | +| test.c:696:8:696:8 | x | 1000000003 | +| test.c:696:12:696:12 | y | 1000000003 | +| test.c:697:10:697:11 | xy | 1000000006000000000 | +| test.c:702:3:702:3 | x | 0 | +| test.c:703:3:703:3 | y | 0 | +| test.c:704:3:704:4 | xy | 0 | +| test.c:704:8:704:8 | x | 274177 | +| test.c:704:12:704:12 | y | 67280421310721 | +| test.c:705:10:705:11 | xy | 18446744073709551616 | +| test.c:709:7:709:8 | ui | 0 | +| test.c:710:43:710:44 | ui | 10 | +| test.c:710:48:710:49 | ui | 10 | +| test.c:711:12:711:17 | result | 100 | +| test.c:713:7:713:8 | ul | 0 | +| test.c:714:28:714:29 | ul | 10 | +| test.c:714:33:714:34 | ul | 10 | +| test.c:715:12:715:17 | result | 0 | +| test.c:721:7:721:8 | ui | 0 | +| test.c:721:19:721:20 | ui | 0 | +| test.c:722:5:722:6 | ui | 2 | +| test.c:722:11:722:12 | ui | 2 | +| test.c:723:12:723:13 | ui | 4 | +| test.c:727:3:727:9 | uiconst | 10 | +| test.c:730:3:730:9 | ulconst | 10 | +| test.c:731:10:731:16 | uiconst | 40 | +| test.c:731:20:731:26 | ulconst | 40 | +| test.c:735:7:735:7 | i | -2147483648 | +| test.c:735:18:735:18 | i | -1 | +| test.c:736:5:736:5 | i | -2147483648 | +| test.c:736:13:736:13 | i | -1 | +| test.c:737:9:737:9 | i | -5 | +| test.c:739:5:739:5 | i | -2147483648 | +| test.c:739:9:739:9 | i | -5 | +| test.c:740:9:740:9 | i | -30 | +| test.c:742:5:742:5 | i | -30 | +| test.c:743:9:743:9 | i | -210 | +| test.c:745:5:745:5 | i | -210 | +| test.c:746:9:746:9 | i | -1155 | +| test.c:748:7:748:7 | i | -2147483648 | +| test.c:749:5:749:5 | i | -2147483648 | +| test.c:749:9:749:9 | i | -1 | +| test.c:750:9:750:9 | i | 1 | +| test.c:752:3:752:3 | i | -2147483648 | +| test.c:752:7:752:7 | i | -2147483648 | +| test.c:753:10:753:10 | i | -2147483648 | +| test.c:756:3:756:3 | i | -2147483648 | +| test.c:756:10:756:11 | sc | 1 | +| test.c:758:7:758:7 | i | -128 | +| test.c:765:7:765:7 | n | 0 | +| test.c:767:7:767:7 | n | 0 | +| test.c:768:9:768:9 | n | 1 | +| test.c:771:7:771:7 | n | 0 | +| test.c:772:9:772:9 | n | 1 | +| test.c:774:9:774:9 | n | 0 | +| test.c:777:8:777:8 | n | 0 | +| test.c:778:9:778:9 | n | 0 | +| test.c:780:9:780:9 | n | 1 | +| test.c:783:10:783:10 | n | 0 | +| test.c:784:5:784:5 | n | 1 | +| test.c:787:7:787:7 | n | 0 | +| test.c:791:7:791:7 | n | -32768 | +| test.c:794:7:794:7 | n | 0 | +| test.c:795:9:795:9 | n | 0 | +| test.c:797:9:797:9 | n | 1 | +| test.c:800:7:800:7 | n | 0 | +| test.c:801:9:801:9 | n | 1 | +| test.c:803:9:803:9 | n | 0 | +| test.c:806:10:806:10 | n | 0 | +| test.c:807:5:807:5 | n | 1 | +| test.c:810:7:810:7 | n | 0 | +| test.c:814:7:814:7 | n | -32768 | +| test.c:815:9:815:9 | n | -32768 | +| test.c:816:11:816:11 | n | 0 | +| test.c:820:7:820:7 | n | -32768 | +| test.c:821:13:821:13 | n | 5 | +| test.c:824:9:824:9 | n | 6 | +| test.c:827:7:827:7 | n | -32768 | +| test.c:827:22:827:22 | n | -32767 | +| test.c:828:9:828:9 | n | -32766 | +| test.c:831:7:831:7 | n | -32768 | +| test.c:832:5:832:5 | n | 0 | +| test.c:832:10:832:10 | n | 1 | +| test.c:832:14:832:14 | n | 0 | +| test.c:833:6:833:6 | n | 0 | +| test.c:833:10:833:10 | n | 0 | +| test.c:833:14:833:14 | n | 1 | +| test.c:844:7:844:8 | ss | -32768 | +| test.c:845:9:845:10 | ss | 0 | +| test.c:848:7:848:8 | ss | -32768 | +| test.c:849:9:849:10 | ss | -32768 | +| test.c:852:14:852:15 | us | 0 | +| test.c:853:9:853:10 | us | 0 | +| test.c:856:14:856:15 | us | 0 | +| test.c:857:9:857:10 | us | 0 | +| test.c:860:7:860:8 | ss | -32768 | +| test.c:861:9:861:10 | ss | -32768 | +| test.c:864:7:864:8 | ss | -32768 | +| test.c:865:9:865:10 | ss | -1 | +| test.c:871:8:871:8 | s | -2147483648 | +| test.c:871:15:871:15 | s | 0 | +| test.c:871:23:871:23 | s | 0 | +| test.c:872:18:872:18 | s | 0 | +| test.c:872:22:872:22 | s | 0 | +| test.c:873:9:873:14 | result | 0 | +| test.c:879:7:879:7 | i | 0 | +| test.c:880:9:880:9 | i | -2147483648 | +| test.c:884:7:884:7 | u | 0 | +| test.c:885:9:885:9 | u | 0 | +| test.c:890:12:890:12 | s | -2147483648 | +| test.c:891:7:891:8 | s2 | -4 | +| test.c:896:7:896:7 | x | -2147483648 | +| test.c:897:9:897:9 | y | -2147483648 | +| test.c:901:7:901:7 | y | -2147483648 | +| test.c:910:7:910:7 | x | -2147483648 | +| test.c:915:7:915:7 | x | -2147483648 | +| test.c:922:8:922:8 | x | 2147483647 | +| test.c:922:12:922:12 | y | 256 | +| test.c:923:9:923:9 | x | 2147483647 | +| test.c:924:9:924:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 0cd2437e073..936ad1bfcec 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:420:4:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:420:5:422:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:423:6:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:424:8:442:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:427:10:431:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:427:31:427:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:429:13:431:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:436:12:441:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:437:12:437:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:439:15:441:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:443:6:462:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:446:8:450:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:446:29:446:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:448:11:450:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:451:6:451:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:455:10:459:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:455:31:455:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:457:13:459:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:460:9:462:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:464:10:483:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:467:12:472:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:468:12:468:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:470:15:472:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:477:14:482:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:478:14:478:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:480:17:482:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:484:9:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:487:14:492:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:488:14:488:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:490:17:492:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:493:12:493:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:497:12:502:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:498:12:498:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:500:15:502:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:503:11:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:506:9:508:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:509:9:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:510:14:529:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:513:16:518:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:514:16:514:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:516:19:518:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:523:18:528:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:524:18:524:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:526:21:528:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:530:12:551:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:533:14:538:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:534:14:534:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:17:538:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:539:12:539:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:543:16:548:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:544:16:544:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:546:19:548:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:549:15:551:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:553:12:572:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:556:14:561:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:557:14:557:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:559:17:561:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:566:16:571:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:567:16:567:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:569:19:571:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:573:11:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:576:16:581:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:577:16:577:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:579:19:581:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:582:14:582:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:586:14:591:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:587:14:587:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:589:17:591:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:592:13:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:620:20:620:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:832:5:832:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:833:5:833:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index b34beda10d4..5a137f2ec00 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:420:4:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:420:5:422:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:423:6:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:424:8:442:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:427:10:431:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:427:31:427:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:429:13:431:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:436:12:441:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:437:12:437:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:439:15:441:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:443:6:462:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:446:8:450:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:446:29:446:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:448:11:450:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:451:6:451:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:455:10:459:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:455:31:455:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:457:13:459:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:460:9:462:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:464:10:483:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:467:12:472:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:468:12:468:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:470:15:472:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:477:14:482:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:478:14:478:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:480:17:482:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:484:9:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:487:14:492:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:488:14:488:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:490:17:492:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:493:12:493:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:497:12:502:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:498:12:498:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:500:15:502:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:503:11:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:506:9:508:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:509:9:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:510:14:529:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:513:16:518:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:514:16:514:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:516:19:518:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:523:18:528:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:524:18:524:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:526:21:528:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:530:12:551:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:533:14:538:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:534:14:534:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:17:538:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:539:12:539:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:543:16:548:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:544:16:544:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:546:19:548:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:549:15:551:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:553:12:572:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:556:14:561:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:557:14:557:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:559:17:561:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:566:16:571:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:567:16:567:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:569:19:571:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:573:11:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:576:16:581:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:577:16:577:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:579:19:581:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:582:14:582:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:586:14:591:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:587:14:587:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:589:17:591:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:592:13:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:620:20:620:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:832:5:832:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:833:5:833:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 8696ecfe8d0..3e8d8d3baac 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,197 +485,508 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:418:20:418:20 | x | 4294967295 | -| test.c:418:30:418:30 | x | 99 | -| test.c:421:3:421:4 | y1 | 4294967295 | -| test.c:421:11:421:11 | y | 100 | -| test.c:421:14:421:14 | y | 101 | -| test.c:422:3:422:4 | y2 | 4294967295 | -| test.c:422:9:422:9 | y | 101 | -| test.c:422:14:422:14 | y | 102 | -| test.c:422:22:422:22 | y | 105 | -| test.c:423:10:423:11 | y1 | 101 | -| test.c:423:15:423:16 | y2 | 105 | -| test.c:431:3:431:3 | i | 2147483647 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | 2147483647 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | 2147483647 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | 2147483647 | -| test.c:442:7:442:7 | j | 2147483647 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | 2147483647 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | 2147483647 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 4294967295 | -| test.c:456:17:456:17 | a | 4294967295 | -| test.c:456:33:456:33 | b | 4294967295 | -| test.c:456:38:456:38 | b | 4294967295 | -| test.c:457:13:457:13 | a | 11 | -| test.c:457:15:457:15 | b | 23 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 253 | -| test.c:460:12:460:12 | a | 4294967295 | -| test.c:460:17:460:17 | a | 4294967295 | -| test.c:460:33:460:33 | b | 4294967295 | -| test.c:460:38:460:38 | b | 4294967295 | -| test.c:461:13:461:13 | a | 11 | -| test.c:461:15:461:15 | b | 23 | -| test.c:462:5:462:9 | total | 253 | -| test.c:462:14:462:14 | r | 253 | -| test.c:464:12:464:12 | a | 4294967295 | -| test.c:464:17:464:17 | a | 4294967295 | -| test.c:464:34:464:34 | b | 4294967295 | -| test.c:464:39:464:39 | b | 4294967295 | -| test.c:465:13:465:13 | a | 11 | -| test.c:465:15:465:15 | b | 23 | -| test.c:466:5:466:9 | total | 506 | -| test.c:466:14:466:14 | r | 253 | -| test.c:469:10:469:14 | total | 759 | -| test.c:475:12:475:12 | b | 4294967295 | -| test.c:475:17:475:17 | b | 4294967295 | -| test.c:476:16:476:16 | b | 23 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 253 | -| test.c:479:12:479:12 | b | 4294967295 | -| test.c:479:17:479:17 | b | 4294967295 | -| test.c:480:16:480:16 | b | 23 | -| test.c:481:5:481:9 | total | 253 | -| test.c:481:14:481:14 | r | 253 | -| test.c:483:13:483:13 | b | 4294967295 | -| test.c:483:18:483:18 | b | 4294967295 | -| test.c:484:16:484:16 | b | 23 | -| test.c:485:5:485:9 | total | 506 | -| test.c:485:14:485:14 | r | 253 | -| test.c:488:10:488:14 | total | 759 | -| test.c:493:3:493:3 | x | 18446744073709551616 | -| test.c:493:7:493:7 | y | 18446744073709551616 | -| test.c:494:3:494:4 | xy | 18446744073709551616 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 18446744073709551616 | -| test.c:501:3:501:3 | y | 18446744073709551616 | -| test.c:502:3:502:4 | xy | 18446744073709551616 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 4294967295 | -| test.c:508:43:508:44 | ui | 4294967295 | -| test.c:508:48:508:49 | ui | 4294967295 | -| test.c:509:12:509:17 | result | 18446744065119617024 | -| test.c:511:7:511:8 | ul | 18446744073709551616 | -| test.c:512:28:512:29 | ul | 18446744073709551616 | -| test.c:512:33:512:34 | ul | 18446744073709551616 | -| test.c:513:12:513:17 | result | 18446744073709551616 | -| test.c:519:7:519:8 | ui | 4294967295 | -| test.c:519:19:519:20 | ui | 10 | -| test.c:520:5:520:6 | ui | 10 | -| test.c:520:11:520:12 | ui | 10 | -| test.c:521:12:521:13 | ui | 100 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | 2147483647 | -| test.c:533:18:533:18 | i | 2147483647 | -| test.c:534:5:534:5 | i | 2147483647 | -| test.c:534:13:534:13 | i | 2 | -| test.c:535:9:535:9 | i | 10 | -| test.c:537:5:537:5 | i | 2147483647 | -| test.c:537:9:537:9 | i | 10 | -| test.c:538:9:538:9 | i | 15 | -| test.c:540:5:540:5 | i | 15 | -| test.c:541:9:541:9 | i | 105 | -| test.c:543:5:543:5 | i | 105 | -| test.c:544:9:544:9 | i | 2310 | -| test.c:546:7:546:7 | i | 2147483647 | -| test.c:547:5:547:5 | i | 2147483647 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | 2147483647 | -| test.c:550:7:550:7 | i | 2147483647 | -| test.c:551:10:551:10 | i | 2147483647 | -| test.c:554:3:554:3 | i | 2147483647 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | 127 | -| test.c:563:7:563:7 | n | 4294967295 | -| test.c:565:7:565:7 | n | 4294967295 | -| test.c:566:9:566:9 | n | 4294967295 | -| test.c:569:7:569:7 | n | 4294967295 | -| test.c:570:9:570:9 | n | 4294967295 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 4294967295 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 4294967295 | -| test.c:581:10:581:10 | n | 4294967295 | -| test.c:582:5:582:5 | n | 4294967295 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | 32767 | -| test.c:592:7:592:7 | n | 32767 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 32767 | -| test.c:598:7:598:7 | n | 32767 | -| test.c:599:9:599:9 | n | 32767 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 32767 | -| test.c:605:5:605:5 | n | 32767 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | 32767 | -| test.c:613:9:613:9 | n | 32767 | -| test.c:614:11:614:11 | n | 32767 | -| test.c:618:7:618:7 | n | 32767 | -| test.c:619:13:619:13 | n | 32767 | -| test.c:622:9:622:9 | n | 32767 | -| test.c:625:7:625:7 | n | 32767 | -| test.c:625:22:625:22 | n | 32767 | -| test.c:626:9:626:9 | n | 32767 | -| test.c:629:7:629:7 | n | 32767 | -| test.c:630:5:630:5 | n | 32767 | -| test.c:630:10:630:10 | n | 32767 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 32767 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 32767 | -| test.c:642:7:642:8 | ss | 32767 | -| test.c:643:9:643:10 | ss | 3 | -| test.c:646:7:646:8 | ss | 32767 | -| test.c:647:9:647:10 | ss | 32767 | -| test.c:650:14:650:15 | us | 65535 | -| test.c:651:9:651:10 | us | 32767 | -| test.c:654:14:654:15 | us | 65535 | -| test.c:655:9:655:10 | us | 65535 | -| test.c:658:7:658:8 | ss | 32767 | -| test.c:659:9:659:10 | ss | 32767 | -| test.c:662:7:662:8 | ss | 32767 | -| test.c:663:9:663:10 | ss | 2 | -| test.c:669:8:669:8 | s | 2147483647 | -| test.c:669:15:669:15 | s | 127 | -| test.c:669:23:669:23 | s | 9 | -| test.c:670:18:670:18 | s | 9 | -| test.c:670:22:670:22 | s | 9 | -| test.c:671:9:671:14 | result | 127 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | 2147483647 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 4294967295 | -| test.c:688:12:688:12 | s | 2147483647 | -| test.c:689:7:689:8 | s2 | 4 | -| test.c:694:7:694:7 | x | 2147483647 | -| test.c:695:9:695:9 | y | 2147483647 | -| test.c:699:7:699:7 | y | 2147483647 | -| test.c:708:7:708:7 | x | 2147483647 | -| test.c:713:7:713:7 | x | 15 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:10:420:11 | ip | 4294967295 | +| test.c:420:20:420:21 | ip | 4294967295 | +| test.c:420:40:420:41 | ip | 4294967295 | +| test.c:421:14:421:15 | ip | 4294967295 | +| test.c:422:14:422:15 | ip | 4294967295 | +| test.c:422:34:422:35 | ip | 4294967295 | +| test.c:423:11:423:12 | ip | 4294967295 | +| test.c:424:13:424:14 | ip | 4294967295 | +| test.c:425:14:425:15 | ip | 4294967295 | +| test.c:426:14:426:15 | ip | 4294967295 | +| test.c:427:15:427:16 | ip | 4294967295 | +| test.c:427:41:427:42 | ip | 4294967295 | +| test.c:427:52:427:53 | ip | 4294967295 | +| test.c:427:67:427:68 | ip | 4294967295 | +| test.c:427:78:427:79 | ip | 4294967295 | +| test.c:428:18:428:19 | ip | 4294967295 | +| test.c:429:23:429:24 | ip | 4294967295 | +| test.c:429:34:429:35 | ip | 4294967295 | +| test.c:430:25:430:26 | ip | 4294967295 | +| test.c:431:20:431:21 | ip | 4294967295 | +| test.c:432:11:432:12 | ip | 4294967295 | +| test.c:432:26:432:27 | ip | 4294967295 | +| test.c:433:16:433:17 | ip | 4294967295 | +| test.c:434:16:434:17 | ip | 4294967295 | +| test.c:435:16:435:17 | ip | 4294967295 | +| test.c:436:17:436:18 | ip | 4294967295 | +| test.c:437:22:437:23 | ip | 4294967295 | +| test.c:437:33:437:34 | ip | 4294967295 | +| test.c:437:48:437:49 | ip | 4294967295 | +| test.c:437:59:437:60 | ip | 4294967295 | +| test.c:438:20:438:21 | ip | 4294967295 | +| test.c:439:25:439:26 | ip | 4294967295 | +| test.c:439:36:439:37 | ip | 4294967295 | +| test.c:440:27:440:28 | ip | 4294967295 | +| test.c:441:22:441:23 | ip | 4294967295 | +| test.c:442:15:442:16 | ip | 4294967295 | +| test.c:442:30:442:31 | ip | 4294967295 | +| test.c:443:11:443:12 | ip | 4294967295 | +| test.c:444:12:444:13 | ip | 4294967295 | +| test.c:445:12:445:13 | ip | 4294967295 | +| test.c:446:13:446:14 | ip | 4294967295 | +| test.c:446:39:446:40 | ip | 4294967295 | +| test.c:446:50:446:51 | ip | 4294967295 | +| test.c:446:65:446:66 | ip | 4294967295 | +| test.c:446:76:446:77 | ip | 4294967295 | +| test.c:447:16:447:17 | ip | 4294967295 | +| test.c:448:21:448:22 | ip | 4294967295 | +| test.c:448:32:448:33 | ip | 4294967295 | +| test.c:449:23:449:24 | ip | 4294967295 | +| test.c:450:18:450:19 | ip | 4294967295 | +| test.c:451:11:451:12 | ip | 4294967295 | +| test.c:451:17:451:18 | ip | 4294967295 | +| test.c:451:37:451:38 | ip | 4294967295 | +| test.c:451:43:451:44 | ip | 4294967295 | +| test.c:452:14:452:15 | ip | 4294967295 | +| test.c:453:14:453:15 | ip | 4294967295 | +| test.c:454:14:454:15 | ip | 4294967295 | +| test.c:455:15:455:16 | ip | 4294967295 | +| test.c:455:41:455:42 | ip | 4294967295 | +| test.c:455:52:455:53 | ip | 4294967295 | +| test.c:455:67:455:68 | ip | 4294967295 | +| test.c:455:78:455:79 | ip | 4294967295 | +| test.c:456:18:456:19 | ip | 4294967295 | +| test.c:457:23:457:24 | ip | 4294967295 | +| test.c:457:34:457:35 | ip | 4294967295 | +| test.c:458:25:458:26 | ip | 4294967295 | +| test.c:459:20:459:21 | ip | 4294967295 | +| test.c:460:14:460:15 | ip | 4294967295 | +| test.c:460:20:460:21 | ip | 4294967295 | +| test.c:461:16:461:17 | ip | 4294967295 | +| test.c:462:12:462:13 | ip | 4294967295 | +| test.c:463:14:463:15 | ip | 4294967295 | +| test.c:464:15:464:16 | ip | 4294967295 | +| test.c:465:16:465:17 | ip | 4294967295 | +| test.c:466:16:466:17 | ip | 4294967295 | +| test.c:467:17:467:18 | ip | 4294967295 | +| test.c:468:22:468:23 | ip | 4294967295 | +| test.c:468:33:468:34 | ip | 4294967295 | +| test.c:468:48:468:49 | ip | 4294967295 | +| test.c:468:59:468:60 | ip | 4294967295 | +| test.c:469:20:469:21 | ip | 4294967295 | +| test.c:470:25:470:26 | ip | 4294967295 | +| test.c:470:36:470:37 | ip | 4294967295 | +| test.c:471:27:471:28 | ip | 4294967295 | +| test.c:472:22:472:23 | ip | 4294967295 | +| test.c:473:13:473:14 | ip | 4294967295 | +| test.c:473:28:473:29 | ip | 4294967295 | +| test.c:474:18:474:19 | ip | 4294967295 | +| test.c:475:18:475:19 | ip | 4294967295 | +| test.c:476:18:476:19 | ip | 4294967295 | +| test.c:477:19:477:20 | ip | 4294967295 | +| test.c:478:24:478:25 | ip | 4294967295 | +| test.c:478:35:478:36 | ip | 4294967295 | +| test.c:478:50:478:51 | ip | 4294967295 | +| test.c:478:61:478:62 | ip | 4294967295 | +| test.c:479:22:479:23 | ip | 4294967295 | +| test.c:480:27:480:28 | ip | 4294967295 | +| test.c:480:38:480:39 | ip | 4294967295 | +| test.c:481:29:481:30 | ip | 4294967295 | +| test.c:482:24:482:25 | ip | 4294967295 | +| test.c:483:17:483:18 | ip | 4294967295 | +| test.c:483:32:483:33 | ip | 4294967295 | +| test.c:484:14:484:15 | ip | 4294967295 | +| test.c:485:18:485:19 | ip | 4294967295 | +| test.c:486:18:486:19 | ip | 4294967295 | +| test.c:487:19:487:20 | ip | 4294967295 | +| test.c:488:24:488:25 | ip | 4294967295 | +| test.c:488:35:488:36 | ip | 4294967295 | +| test.c:488:50:488:51 | ip | 4294967295 | +| test.c:488:61:488:62 | ip | 4294967295 | +| test.c:489:22:489:23 | ip | 4294967295 | +| test.c:490:27:490:28 | ip | 4294967295 | +| test.c:490:38:490:39 | ip | 4294967295 | +| test.c:491:29:491:30 | ip | 4294967295 | +| test.c:492:24:492:25 | ip | 4294967295 | +| test.c:493:17:493:18 | ip | 4294967295 | +| test.c:493:23:493:24 | ip | 4294967295 | +| test.c:493:43:493:44 | ip | 4294967295 | +| test.c:493:49:493:50 | ip | 4294967295 | +| test.c:494:16:494:17 | ip | 4294967295 | +| test.c:495:16:495:17 | ip | 4294967295 | +| test.c:496:16:496:17 | ip | 4294967295 | +| test.c:497:17:497:18 | ip | 4294967295 | +| test.c:498:22:498:23 | ip | 4294967295 | +| test.c:498:33:498:34 | ip | 4294967295 | +| test.c:498:48:498:49 | ip | 4294967295 | +| test.c:498:59:498:60 | ip | 4294967295 | +| test.c:499:20:499:21 | ip | 4294967295 | +| test.c:500:25:500:26 | ip | 4294967295 | +| test.c:500:36:500:37 | ip | 4294967295 | +| test.c:501:27:501:28 | ip | 4294967295 | +| test.c:502:22:502:23 | ip | 4294967295 | +| test.c:503:16:503:17 | ip | 4294967295 | +| test.c:503:22:503:23 | ip | 4294967295 | +| test.c:504:18:504:19 | ip | 4294967295 | +| test.c:505:14:505:15 | ip | 4294967295 | +| test.c:506:14:506:15 | ip | 4294967295 | +| test.c:506:24:506:25 | ip | 4294967295 | +| test.c:506:44:506:45 | ip | 4294967295 | +| test.c:507:16:507:17 | ip | 4294967295 | +| test.c:508:16:508:17 | ip | 4294967295 | +| test.c:508:36:508:37 | ip | 4294967295 | +| test.c:509:14:509:15 | ip | 4294967295 | +| test.c:510:19:510:20 | ip | 4294967295 | +| test.c:511:20:511:21 | ip | 4294967295 | +| test.c:512:20:512:21 | ip | 4294967295 | +| test.c:513:21:513:22 | ip | 4294967295 | +| test.c:514:26:514:27 | ip | 4294967295 | +| test.c:514:37:514:38 | ip | 4294967295 | +| test.c:514:52:514:53 | ip | 4294967295 | +| test.c:514:63:514:64 | ip | 4294967295 | +| test.c:515:24:515:25 | ip | 4294967295 | +| test.c:516:29:516:30 | ip | 4294967295 | +| test.c:516:40:516:41 | ip | 4294967295 | +| test.c:517:31:517:32 | ip | 4294967295 | +| test.c:518:26:518:27 | ip | 4294967295 | +| test.c:519:17:519:18 | ip | 4294967295 | +| test.c:519:32:519:33 | ip | 4294967295 | +| test.c:520:22:520:23 | ip | 4294967295 | +| test.c:521:22:521:23 | ip | 4294967295 | +| test.c:522:22:522:23 | ip | 4294967295 | +| test.c:523:23:523:24 | ip | 4294967295 | +| test.c:524:28:524:29 | ip | 4294967295 | +| test.c:524:39:524:40 | ip | 4294967295 | +| test.c:524:54:524:55 | ip | 4294967295 | +| test.c:524:65:524:66 | ip | 4294967295 | +| test.c:525:26:525:27 | ip | 4294967295 | +| test.c:526:31:526:32 | ip | 4294967295 | +| test.c:526:42:526:43 | ip | 4294967295 | +| test.c:527:33:527:34 | ip | 4294967295 | +| test.c:528:28:528:29 | ip | 4294967295 | +| test.c:529:21:529:22 | ip | 4294967295 | +| test.c:529:36:529:37 | ip | 4294967295 | +| test.c:530:17:530:18 | ip | 4294967295 | +| test.c:531:18:531:19 | ip | 4294967295 | +| test.c:532:18:532:19 | ip | 4294967295 | +| test.c:533:19:533:20 | ip | 4294967295 | +| test.c:534:24:534:25 | ip | 4294967295 | +| test.c:534:35:534:36 | ip | 4294967295 | +| test.c:534:50:534:51 | ip | 4294967295 | +| test.c:534:61:534:62 | ip | 4294967295 | +| test.c:535:22:535:23 | ip | 4294967295 | +| test.c:536:27:536:28 | ip | 4294967295 | +| test.c:536:38:536:39 | ip | 4294967295 | +| test.c:537:29:537:30 | ip | 4294967295 | +| test.c:538:24:538:25 | ip | 4294967295 | +| test.c:539:17:539:18 | ip | 4294967295 | +| test.c:539:23:539:24 | ip | 4294967295 | +| test.c:539:43:539:44 | ip | 4294967295 | +| test.c:539:49:539:50 | ip | 4294967295 | +| test.c:540:20:540:21 | ip | 4294967295 | +| test.c:541:20:541:21 | ip | 4294967295 | +| test.c:542:20:542:21 | ip | 4294967295 | +| test.c:543:21:543:22 | ip | 4294967295 | +| test.c:544:26:544:27 | ip | 4294967295 | +| test.c:544:37:544:38 | ip | 4294967295 | +| test.c:544:52:544:53 | ip | 4294967295 | +| test.c:544:63:544:64 | ip | 4294967295 | +| test.c:545:24:545:25 | ip | 4294967295 | +| test.c:546:29:546:30 | ip | 4294967295 | +| test.c:546:40:546:41 | ip | 4294967295 | +| test.c:547:31:547:32 | ip | 4294967295 | +| test.c:548:26:548:27 | ip | 4294967295 | +| test.c:549:20:549:21 | ip | 4294967295 | +| test.c:549:26:549:27 | ip | 4294967295 | +| test.c:550:22:550:23 | ip | 4294967295 | +| test.c:551:18:551:19 | ip | 4294967295 | +| test.c:552:16:552:17 | ip | 4294967295 | +| test.c:553:17:553:18 | ip | 4294967295 | +| test.c:554:18:554:19 | ip | 4294967295 | +| test.c:555:18:555:19 | ip | 4294967295 | +| test.c:556:19:556:20 | ip | 4294967295 | +| test.c:557:24:557:25 | ip | 4294967295 | +| test.c:557:35:557:36 | ip | 4294967295 | +| test.c:557:50:557:51 | ip | 4294967295 | +| test.c:557:61:557:62 | ip | 4294967295 | +| test.c:558:22:558:23 | ip | 4294967295 | +| test.c:559:27:559:28 | ip | 4294967295 | +| test.c:559:38:559:39 | ip | 4294967295 | +| test.c:560:29:560:30 | ip | 4294967295 | +| test.c:561:24:561:25 | ip | 4294967295 | +| test.c:562:15:562:16 | ip | 4294967295 | +| test.c:562:30:562:31 | ip | 4294967295 | +| test.c:563:20:563:21 | ip | 4294967295 | +| test.c:564:20:564:21 | ip | 4294967295 | +| test.c:565:20:565:21 | ip | 4294967295 | +| test.c:566:21:566:22 | ip | 4294967295 | +| test.c:567:26:567:27 | ip | 4294967295 | +| test.c:567:37:567:38 | ip | 4294967295 | +| test.c:567:52:567:53 | ip | 4294967295 | +| test.c:567:63:567:64 | ip | 4294967295 | +| test.c:568:24:568:25 | ip | 4294967295 | +| test.c:569:29:569:30 | ip | 4294967295 | +| test.c:569:40:569:41 | ip | 4294967295 | +| test.c:570:31:570:32 | ip | 4294967295 | +| test.c:571:26:571:27 | ip | 4294967295 | +| test.c:572:19:572:20 | ip | 4294967295 | +| test.c:572:34:572:35 | ip | 4294967295 | +| test.c:573:16:573:17 | ip | 4294967295 | +| test.c:574:20:574:21 | ip | 4294967295 | +| test.c:575:20:575:21 | ip | 4294967295 | +| test.c:576:21:576:22 | ip | 4294967295 | +| test.c:577:26:577:27 | ip | 4294967295 | +| test.c:577:37:577:38 | ip | 4294967295 | +| test.c:577:52:577:53 | ip | 4294967295 | +| test.c:577:63:577:64 | ip | 4294967295 | +| test.c:578:24:578:25 | ip | 4294967295 | +| test.c:579:29:579:30 | ip | 4294967295 | +| test.c:579:40:579:41 | ip | 4294967295 | +| test.c:580:31:580:32 | ip | 4294967295 | +| test.c:581:26:581:27 | ip | 4294967295 | +| test.c:582:19:582:20 | ip | 4294967295 | +| test.c:582:25:582:26 | ip | 4294967295 | +| test.c:582:45:582:46 | ip | 4294967295 | +| test.c:582:51:582:52 | ip | 4294967295 | +| test.c:583:18:583:19 | ip | 4294967295 | +| test.c:584:18:584:19 | ip | 4294967295 | +| test.c:585:18:585:19 | ip | 4294967295 | +| test.c:586:19:586:20 | ip | 4294967295 | +| test.c:587:24:587:25 | ip | 4294967295 | +| test.c:587:35:587:36 | ip | 4294967295 | +| test.c:587:50:587:51 | ip | 4294967295 | +| test.c:587:61:587:62 | ip | 4294967295 | +| test.c:588:22:588:23 | ip | 4294967295 | +| test.c:589:27:589:28 | ip | 4294967295 | +| test.c:589:38:589:39 | ip | 4294967295 | +| test.c:590:29:590:30 | ip | 4294967295 | +| test.c:591:24:591:25 | ip | 4294967295 | +| test.c:592:18:592:19 | ip | 4294967295 | +| test.c:592:24:592:25 | ip | 4294967295 | +| test.c:593:20:593:21 | ip | 4294967295 | +| test.c:594:16:594:17 | ip | 4294967295 | +| test.c:595:10:595:23 | special_number | 4294967295 | +| test.c:603:7:603:8 | c1 | 2147483647 | +| test.c:603:13:603:13 | x | 0 | +| test.c:604:7:604:8 | c2 | 2147483647 | +| test.c:604:13:604:13 | x | 748596 | +| test.c:605:7:605:8 | c3 | 2147483647 | +| test.c:605:13:605:13 | x | 85400991 | +| test.c:606:7:606:8 | c4 | 2147483647 | +| test.c:606:13:606:13 | x | 89076886 | +| test.c:607:7:607:8 | c5 | 2147483647 | +| test.c:607:13:607:13 | x | 89175520 | +| test.c:608:7:608:8 | c1 | 2147483647 | +| test.c:608:13:608:14 | c2 | 2147483647 | +| test.c:608:19:608:19 | x | 97010505 | +| test.c:609:7:609:8 | c1 | 2147483647 | +| test.c:609:13:609:14 | c3 | 2147483647 | +| test.c:609:19:609:19 | x | 1035467903 | +| test.c:610:7:610:8 | c1 | 2147483647 | +| test.c:610:13:610:14 | c4 | 2147483647 | +| test.c:610:19:610:19 | x | 1109363551 | +| test.c:611:7:611:8 | c1 | 2147483647 | +| test.c:611:13:611:14 | c5 | 2147483647 | +| test.c:611:19:611:19 | x | 1121708983 | +| test.c:612:7:612:8 | c2 | 2147483647 | +| test.c:612:13:612:14 | c3 | 2147483647 | +| test.c:612:19:612:19 | x | 1121747830 | +| test.c:614:11:614:11 | x | 2147483647 | +| test.c:614:15:614:15 | x | 2147483647 | +| test.c:614:19:614:19 | x | 2147483647 | +| test.c:614:23:614:23 | x | 2147483647 | +| test.c:614:27:614:27 | x | 2147483647 | +| test.c:614:31:614:31 | x | 2147483647 | +| test.c:614:35:614:35 | x | 2147483647 | +| test.c:614:39:614:39 | x | 2147483647 | +| test.c:614:43:614:43 | x | 2147483647 | +| test.c:614:47:614:47 | x | 2147483647 | +| test.c:614:51:614:51 | x | 2147483647 | +| test.c:614:55:614:55 | x | 2147483647 | +| test.c:615:10:615:10 | y | 2147483647 | +| test.c:620:20:620:20 | x | 4294967295 | +| test.c:620:30:620:30 | x | 99 | +| test.c:623:3:623:4 | y1 | 4294967295 | +| test.c:623:11:623:11 | y | 100 | +| test.c:623:14:623:14 | y | 101 | +| test.c:624:3:624:4 | y2 | 4294967295 | +| test.c:624:9:624:9 | y | 101 | +| test.c:624:14:624:14 | y | 102 | +| test.c:624:22:624:22 | y | 105 | +| test.c:625:10:625:11 | y1 | 101 | +| test.c:625:15:625:16 | y2 | 105 | +| test.c:633:3:633:3 | i | 2147483647 | +| test.c:634:7:634:7 | i | 10 | +| test.c:636:3:636:3 | i | 2147483647 | +| test.c:637:3:637:3 | i | 10 | +| test.c:638:7:638:7 | i | 20 | +| test.c:640:3:640:3 | i | 2147483647 | +| test.c:641:3:641:3 | i | 40 | +| test.c:642:7:642:7 | i | 30 | +| test.c:644:3:644:3 | i | 2147483647 | +| test.c:644:7:644:7 | j | 2147483647 | +| test.c:645:7:645:7 | i | 40 | +| test.c:647:3:647:3 | i | 2147483647 | +| test.c:647:8:647:8 | j | 40 | +| test.c:648:7:648:7 | i | 50 | +| test.c:650:3:650:3 | i | 2147483647 | +| test.c:650:13:650:13 | j | 50 | +| test.c:651:7:651:7 | i | 60 | +| test.c:658:12:658:12 | a | 4294967295 | +| test.c:658:17:658:17 | a | 4294967295 | +| test.c:658:33:658:33 | b | 4294967295 | +| test.c:658:38:658:38 | b | 4294967295 | +| test.c:659:13:659:13 | a | 11 | +| test.c:659:15:659:15 | b | 23 | +| test.c:660:5:660:9 | total | 0 | +| test.c:660:14:660:14 | r | 253 | +| test.c:662:12:662:12 | a | 4294967295 | +| test.c:662:17:662:17 | a | 4294967295 | +| test.c:662:33:662:33 | b | 4294967295 | +| test.c:662:38:662:38 | b | 4294967295 | +| test.c:663:13:663:13 | a | 11 | +| test.c:663:15:663:15 | b | 23 | +| test.c:664:5:664:9 | total | 253 | +| test.c:664:14:664:14 | r | 253 | +| test.c:666:12:666:12 | a | 4294967295 | +| test.c:666:17:666:17 | a | 4294967295 | +| test.c:666:34:666:34 | b | 4294967295 | +| test.c:666:39:666:39 | b | 4294967295 | +| test.c:667:13:667:13 | a | 11 | +| test.c:667:15:667:15 | b | 23 | +| test.c:668:5:668:9 | total | 506 | +| test.c:668:14:668:14 | r | 253 | +| test.c:671:10:671:14 | total | 759 | +| test.c:677:12:677:12 | b | 4294967295 | +| test.c:677:17:677:17 | b | 4294967295 | +| test.c:678:16:678:16 | b | 23 | +| test.c:679:5:679:9 | total | 0 | +| test.c:679:14:679:14 | r | 253 | +| test.c:681:12:681:12 | b | 4294967295 | +| test.c:681:17:681:17 | b | 4294967295 | +| test.c:682:16:682:16 | b | 23 | +| test.c:683:5:683:9 | total | 253 | +| test.c:683:14:683:14 | r | 253 | +| test.c:685:13:685:13 | b | 4294967295 | +| test.c:685:18:685:18 | b | 4294967295 | +| test.c:686:16:686:16 | b | 23 | +| test.c:687:5:687:9 | total | 506 | +| test.c:687:14:687:14 | r | 253 | +| test.c:690:10:690:14 | total | 759 | +| test.c:695:3:695:3 | x | 18446744073709551616 | +| test.c:695:7:695:7 | y | 18446744073709551616 | +| test.c:696:3:696:4 | xy | 18446744073709551616 | +| test.c:696:8:696:8 | x | 1000000003 | +| test.c:696:12:696:12 | y | 1000000003 | +| test.c:697:10:697:11 | xy | 1000000006000000000 | +| test.c:702:3:702:3 | x | 18446744073709551616 | +| test.c:703:3:703:3 | y | 18446744073709551616 | +| test.c:704:3:704:4 | xy | 18446744073709551616 | +| test.c:704:8:704:8 | x | 274177 | +| test.c:704:12:704:12 | y | 67280421310721 | +| test.c:705:10:705:11 | xy | 18446744073709551616 | +| test.c:709:7:709:8 | ui | 4294967295 | +| test.c:710:43:710:44 | ui | 4294967295 | +| test.c:710:48:710:49 | ui | 4294967295 | +| test.c:711:12:711:17 | result | 18446744065119617024 | +| test.c:713:7:713:8 | ul | 18446744073709551616 | +| test.c:714:28:714:29 | ul | 18446744073709551616 | +| test.c:714:33:714:34 | ul | 18446744073709551616 | +| test.c:715:12:715:17 | result | 18446744073709551616 | +| test.c:721:7:721:8 | ui | 4294967295 | +| test.c:721:19:721:20 | ui | 10 | +| test.c:722:5:722:6 | ui | 10 | +| test.c:722:11:722:12 | ui | 10 | +| test.c:723:12:723:13 | ui | 100 | +| test.c:727:3:727:9 | uiconst | 10 | +| test.c:730:3:730:9 | ulconst | 10 | +| test.c:731:10:731:16 | uiconst | 40 | +| test.c:731:20:731:26 | ulconst | 40 | +| test.c:735:7:735:7 | i | 2147483647 | +| test.c:735:18:735:18 | i | 2147483647 | +| test.c:736:5:736:5 | i | 2147483647 | +| test.c:736:13:736:13 | i | 2 | +| test.c:737:9:737:9 | i | 10 | +| test.c:739:5:739:5 | i | 2147483647 | +| test.c:739:9:739:9 | i | 10 | +| test.c:740:9:740:9 | i | 15 | +| test.c:742:5:742:5 | i | 15 | +| test.c:743:9:743:9 | i | 105 | +| test.c:745:5:745:5 | i | 105 | +| test.c:746:9:746:9 | i | 2310 | +| test.c:748:7:748:7 | i | 2147483647 | +| test.c:749:5:749:5 | i | 2147483647 | +| test.c:749:9:749:9 | i | -1 | +| test.c:750:9:750:9 | i | 1 | +| test.c:752:3:752:3 | i | 2147483647 | +| test.c:752:7:752:7 | i | 2147483647 | +| test.c:753:10:753:10 | i | 2147483647 | +| test.c:756:3:756:3 | i | 2147483647 | +| test.c:756:10:756:11 | sc | 1 | +| test.c:758:7:758:7 | i | 127 | +| test.c:765:7:765:7 | n | 4294967295 | +| test.c:767:7:767:7 | n | 4294967295 | +| test.c:768:9:768:9 | n | 4294967295 | +| test.c:771:7:771:7 | n | 4294967295 | +| test.c:772:9:772:9 | n | 4294967295 | +| test.c:774:9:774:9 | n | 0 | +| test.c:777:8:777:8 | n | 4294967295 | +| test.c:778:9:778:9 | n | 0 | +| test.c:780:9:780:9 | n | 4294967295 | +| test.c:783:10:783:10 | n | 4294967295 | +| test.c:784:5:784:5 | n | 4294967295 | +| test.c:787:7:787:7 | n | 0 | +| test.c:791:7:791:7 | n | 32767 | +| test.c:794:7:794:7 | n | 32767 | +| test.c:795:9:795:9 | n | 0 | +| test.c:797:9:797:9 | n | 32767 | +| test.c:800:7:800:7 | n | 32767 | +| test.c:801:9:801:9 | n | 32767 | +| test.c:803:9:803:9 | n | 0 | +| test.c:806:10:806:10 | n | 32767 | +| test.c:807:5:807:5 | n | 32767 | +| test.c:810:7:810:7 | n | 0 | +| test.c:814:7:814:7 | n | 32767 | +| test.c:815:9:815:9 | n | 32767 | +| test.c:816:11:816:11 | n | 32767 | +| test.c:820:7:820:7 | n | 32767 | +| test.c:821:13:821:13 | n | 32767 | +| test.c:824:9:824:9 | n | 32767 | +| test.c:827:7:827:7 | n | 32767 | +| test.c:827:22:827:22 | n | 32767 | +| test.c:828:9:828:9 | n | 32767 | +| test.c:831:7:831:7 | n | 32767 | +| test.c:832:5:832:5 | n | 32767 | +| test.c:832:10:832:10 | n | 32767 | +| test.c:832:14:832:14 | n | 0 | +| test.c:833:6:833:6 | n | 32767 | +| test.c:833:10:833:10 | n | 0 | +| test.c:833:14:833:14 | n | 32767 | +| test.c:844:7:844:8 | ss | 32767 | +| test.c:845:9:845:10 | ss | 3 | +| test.c:848:7:848:8 | ss | 32767 | +| test.c:849:9:849:10 | ss | 32767 | +| test.c:852:14:852:15 | us | 65535 | +| test.c:853:9:853:10 | us | 32767 | +| test.c:856:14:856:15 | us | 65535 | +| test.c:857:9:857:10 | us | 65535 | +| test.c:860:7:860:8 | ss | 32767 | +| test.c:861:9:861:10 | ss | 32767 | +| test.c:864:7:864:8 | ss | 32767 | +| test.c:865:9:865:10 | ss | 2 | +| test.c:871:8:871:8 | s | 2147483647 | +| test.c:871:15:871:15 | s | 127 | +| test.c:871:23:871:23 | s | 9 | +| test.c:872:18:872:18 | s | 9 | +| test.c:872:22:872:22 | s | 9 | +| test.c:873:9:873:14 | result | 127 | +| test.c:879:7:879:7 | i | 0 | +| test.c:880:9:880:9 | i | 2147483647 | +| test.c:884:7:884:7 | u | 0 | +| test.c:885:9:885:9 | u | 4294967295 | +| test.c:890:12:890:12 | s | 2147483647 | +| test.c:891:7:891:8 | s2 | 4 | +| test.c:896:7:896:7 | x | 2147483647 | +| test.c:897:9:897:9 | y | 2147483647 | +| test.c:901:7:901:7 | y | 2147483647 | +| test.c:910:7:910:7 | x | 2147483647 | +| test.c:915:7:915:7 | x | 15 | +| test.c:922:8:922:8 | x | 2147483647 | +| test.c:922:12:922:12 | y | 256 | +| test.c:923:9:923:9 | x | 2147483647 | +| test.c:924:9:924:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From 8896a7210b54751eaed713fd9214580ebac4dcdf Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 15 Oct 2025 13:32:05 +0200 Subject: [PATCH 169/965] C++: Add number of bounds test to simple range analysis --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 3 + .../SimpleRangeAnalysis/nrOfBounds.expected | 4572 +++++++++++++++++ .../SimpleRangeAnalysis/nrOfBounds.ql | 5 + 3 files changed, 4580 insertions(+) create mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected create mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 2ae91a4bbf9..be42f890bea 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -2140,4 +2140,7 @@ module SimpleRangeAnalysisInternal { // bound is `typeUpperBound`. defMightOverflowNegatively(def, v) and result = varMaxVal(v) } + + /** Gets the estimate of the number of bounds for `e`. */ + float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } } diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected new file mode 100644 index 00000000000..4a252c34455 --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -0,0 +1,4572 @@ +| inline_assembly.c:9:20:9:20 | 0 | 1.0 | +| inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | +| inline_assembly.c:10:3:10:3 | y | 1.0 | +| inline_assembly.c:10:3:10:7 | ... = ... | 1.0 | +| inline_assembly.c:10:7:10:7 | 1 | 1.0 | +| inline_assembly.c:10:7:10:7 | (unsigned int)... | 1.0 | +| inline_assembly.c:12:3:12:8 | call to printf | 1.0 | +| inline_assembly.c:12:29:12:29 | x | 1.0 | +| inline_assembly.c:12:32:12:32 | y | 1.0 | +| inline_assembly.c:16:25:16:25 | x | 1.0 | +| inline_assembly.c:16:35:16:35 | y | 1.0 | +| inline_assembly.c:21:3:21:8 | call to printf | 1.0 | +| inline_assembly.c:21:29:21:29 | x | 1.0 | +| inline_assembly.c:21:32:21:32 | y | 1.0 | +| inline_assembly.c:23:10:23:10 | 0 | 1.0 | +| minmax.c:16:9:16:10 | 1 | 1.0 | +| minmax.c:16:16:16:17 | 2 | 1.0 | +| minmax.c:16:23:16:24 | 3 | 1.0 | +| minmax.c:18:2:18:7 | call to printf | 1.0 | +| minmax.c:18:37:18:37 | x | 1.0 | +| minmax.c:18:40:18:40 | y | 1.0 | +| minmax.c:18:43:18:43 | z | 1.0 | +| minmax.c:20:2:20:2 | z | 1.0 | +| minmax.c:20:2:24:3 | ... = ... | 2.0 | +| minmax.c:20:6:24:3 | (statement expression) | 2.0 | +| minmax.c:21:10:21:11 | 0 | 1.0 | +| minmax.c:22:7:22:14 | ... != ... | 1.0 | +| minmax.c:22:8:22:8 | x | 1.0 | +| minmax.c:22:14:22:14 | y | 1.0 | +| minmax.c:22:18:22:18 | t | 1.0 | +| minmax.c:22:18:22:22 | ... = ... | 1.0 | +| minmax.c:22:22:22:22 | x | 1.0 | +| minmax.c:23:3:23:3 | t | 2.0 | +| minmax.c:26:2:26:7 | call to printf | 1.0 | +| minmax.c:26:37:26:37 | x | 1.0 | +| minmax.c:26:40:26:40 | y | 1.0 | +| minmax.c:26:43:26:43 | z | 2.0 | +| test.c:6:14:6:15 | 0 | 1.0 | +| test.c:8:5:8:9 | count | 1.0 | +| test.c:8:5:8:19 | ... = ... | 13.0 | +| test.c:8:13:8:17 | count | 13.0 | +| test.c:8:13:8:19 | ... + ... | 13.0 | +| test.c:8:19:8:19 | 1 | 1.0 | +| test.c:10:10:10:14 | count | 13.0 | +| test.c:14:14:14:15 | 0 | 1.0 | +| test.c:16:5:16:9 | count | 1.0 | +| test.c:16:5:16:26 | ... = ... | 13.0 | +| test.c:16:13:16:21 | (...) | 13.0 | +| test.c:16:13:16:26 | ... % ... | 13.0 | +| test.c:16:14:16:18 | count | 13.0 | +| test.c:16:14:16:20 | ... + ... | 13.0 | +| test.c:16:20:16:20 | 1 | 1.0 | +| test.c:16:25:16:26 | 10 | 1.0 | +| test.c:18:10:18:14 | count | 13.0 | +| test.c:22:14:22:15 | 0 | 1.0 | +| test.c:24:5:24:9 | count | 13.0 | +| test.c:24:5:24:11 | ... ++ | 13.0 | +| test.c:25:5:25:9 | count | 1.0 | +| test.c:25:5:25:22 | ... = ... | 13.0 | +| test.c:25:13:25:17 | count | 13.0 | +| test.c:25:13:25:22 | ... % ... | 13.0 | +| test.c:25:21:25:22 | 10 | 1.0 | +| test.c:27:10:27:14 | count | 13.0 | +| test.c:31:10:31:11 | 0 | 1.0 | +| test.c:32:14:32:15 | 0 | 1.0 | +| test.c:33:8:33:8 | i | 1.0 | +| test.c:33:8:33:12 | ... = ... | 1.0 | +| test.c:33:12:33:12 | 0 | 1.0 | +| test.c:33:15:33:15 | i | 13.0 | +| test.c:33:15:33:19 | ... < ... | 1.0 | +| test.c:33:19:33:19 | 2 | 1.0 | +| test.c:33:22:33:22 | i | 1.0 | +| test.c:33:22:33:28 | ... = ... | 13.0 | +| test.c:33:26:33:26 | i | 13.0 | +| test.c:33:26:33:28 | ... + ... | 13.0 | +| test.c:33:28:33:28 | 1 | 1.0 | +| test.c:34:5:34:9 | total | 13.0 | +| test.c:34:5:34:14 | ... += ... | 13.0 | +| test.c:34:14:34:14 | i | 13.0 | +| test.c:36:10:36:14 | total | 13.0 | +| test.c:36:10:36:18 | ... + ... | 13.0 | +| test.c:36:18:36:18 | i | 13.0 | +| test.c:40:10:40:11 | 0 | 1.0 | +| test.c:41:14:41:15 | 0 | 1.0 | +| test.c:42:8:42:8 | i | 1.0 | +| test.c:42:8:42:12 | ... = ... | 1.0 | +| test.c:42:12:42:12 | 0 | 1.0 | +| test.c:42:15:42:15 | i | 13.0 | +| test.c:42:15:42:19 | ... < ... | 1.0 | +| test.c:42:19:42:19 | 2 | 1.0 | +| test.c:42:22:42:22 | i | 13.0 | +| test.c:42:22:42:24 | ... ++ | 13.0 | +| test.c:43:5:43:9 | total | 13.0 | +| test.c:43:5:43:14 | ... += ... | 13.0 | +| test.c:43:14:43:14 | i | 13.0 | +| test.c:45:10:45:14 | total | 13.0 | +| test.c:45:10:45:18 | ... + ... | 13.0 | +| test.c:45:18:45:18 | i | 13.0 | +| test.c:49:10:49:11 | 0 | 1.0 | +| test.c:50:14:50:15 | 0 | 1.0 | +| test.c:51:8:51:8 | i | 1.0 | +| test.c:51:8:51:12 | ... = ... | 1.0 | +| test.c:51:12:51:12 | 0 | 1.0 | +| test.c:51:15:51:15 | i | 13.0 | +| test.c:51:15:51:17 | ... + ... | 13.0 | +| test.c:51:15:51:21 | ... < ... | 1.0 | +| test.c:51:17:51:17 | 2 | 1.0 | +| test.c:51:21:51:21 | 4 | 1.0 | +| test.c:51:24:51:24 | i | 1.0 | +| test.c:51:24:51:30 | ... = ... | 13.0 | +| test.c:51:28:51:28 | i | 13.0 | +| test.c:51:28:51:30 | ... + ... | 13.0 | +| test.c:51:30:51:30 | 1 | 1.0 | +| test.c:52:5:52:9 | total | 13.0 | +| test.c:52:5:52:14 | ... += ... | 13.0 | +| test.c:52:14:52:14 | i | 13.0 | +| test.c:54:10:54:14 | total | 13.0 | +| test.c:54:10:54:18 | ... + ... | 13.0 | +| test.c:54:18:54:18 | i | 13.0 | +| test.c:58:7:58:7 | i | 1.0 | +| test.c:58:7:58:11 | ... < ... | 1.0 | +| test.c:58:11:58:11 | 4 | 1.0 | +| test.c:59:9:59:9 | i | 1.0 | +| test.c:59:9:59:13 | ... < ... | 1.0 | +| test.c:59:13:59:13 | 5 | 1.0 | +| test.c:60:14:60:14 | i | 1.0 | +| test.c:63:10:63:10 | 1 | 1.0 | +| test.c:67:7:67:11 | - ... | 1.0 | +| test.c:67:7:67:15 | ... < ... | 1.0 | +| test.c:67:7:67:25 | ... && ... | 1.0 | +| test.c:67:8:67:11 | 1000 | 1.0 | +| test.c:67:15:67:15 | y | 1.0 | +| test.c:67:20:67:20 | y | 1.0 | +| test.c:67:20:67:25 | ... < ... | 1.0 | +| test.c:67:24:67:25 | 10 | 1.0 | +| test.c:68:9:68:9 | x | 1.0 | +| test.c:68:9:68:15 | ... < ... | 1.0 | +| test.c:68:13:68:13 | y | 1.0 | +| test.c:68:13:68:15 | ... - ... | 1.0 | +| test.c:68:15:68:15 | 2 | 1.0 | +| test.c:69:14:69:14 | x | 1.0 | +| test.c:72:10:72:10 | y | 1.0 | +| test.c:76:7:76:7 | y | 1.0 | +| test.c:76:7:76:12 | ... == ... | 1.0 | +| test.c:76:12:76:12 | 0 | 1.0 | +| test.c:77:9:77:9 | x | 1.0 | +| test.c:77:9:77:13 | ... < ... | 1.0 | +| test.c:77:13:77:13 | 4 | 1.0 | +| test.c:78:14:78:14 | 0 | 1.0 | +| test.c:81:9:81:9 | x | 1.0 | +| test.c:81:9:81:13 | ... < ... | 1.0 | +| test.c:81:13:81:13 | 4 | 1.0 | +| test.c:82:14:82:14 | 1 | 1.0 | +| test.c:85:10:85:10 | x | 1.0 | +| test.c:89:7:89:7 | y | 1.0 | +| test.c:89:7:89:11 | ... > ... | 1.0 | +| test.c:89:11:89:11 | 7 | 1.0 | +| test.c:90:9:90:9 | x | 1.0 | +| test.c:90:9:90:13 | ... < ... | 1.0 | +| test.c:90:13:90:13 | y | 1.0 | +| test.c:91:14:91:14 | 0 | 1.0 | +| test.c:93:12:93:12 | x | 1.0 | +| test.c:95:10:95:10 | 1 | 1.0 | +| test.c:100:3:100:3 | c | 1.0 | +| test.c:100:3:100:8 | ... = ... | 1.0 | +| test.c:100:7:100:8 | * ... | 1.0 | +| test.c:101:7:101:7 | (int)... | 1.0 | +| test.c:101:7:101:7 | c | 1.0 | +| test.c:101:7:101:15 | ... != ... | 1.0 | +| test.c:101:12:101:15 | 0 | 1.0 | +| test.c:102:5:102:8 | * ... | 1.0 | +| test.c:102:5:102:15 | ... = ... | 1.0 | +| test.c:102:12:102:15 | 0 | 1.0 | +| test.c:102:12:102:15 | (char)... | 1.0 | +| test.c:104:7:104:7 | (int)... | 2.0 | +| test.c:104:7:104:7 | c | 2.0 | +| test.c:104:7:104:14 | ... == ... | 1.0 | +| test.c:104:12:104:14 | 58 | 1.0 | +| test.c:105:5:105:5 | c | 1.0 | +| test.c:105:5:105:10 | ... = ... | 1.0 | +| test.c:105:9:105:10 | * ... | 1.0 | +| test.c:106:9:106:9 | (int)... | 1.0 | +| test.c:106:9:106:9 | c | 1.0 | +| test.c:106:9:106:17 | ... != ... | 1.0 | +| test.c:106:14:106:17 | 0 | 1.0 | +| test.c:107:7:107:10 | * ... | 1.0 | +| test.c:107:7:107:17 | ... = ... | 1.0 | +| test.c:107:14:107:17 | 0 | 1.0 | +| test.c:107:14:107:17 | (char)... | 1.0 | +| test.c:109:9:109:9 | (int)... | 2.0 | +| test.c:109:9:109:9 | c | 2.0 | +| test.c:109:9:109:16 | ... != ... | 1.0 | +| test.c:109:14:109:16 | 44 | 1.0 | +| test.c:110:14:110:14 | 1 | 1.0 | +| test.c:112:10:112:10 | 0 | 1.0 | +| test.c:118:24:118:24 | 0 | 1.0 | +| test.c:118:24:118:24 | (size_type)... | 1.0 | +| test.c:119:10:119:10 | n | 1.0 | +| test.c:119:10:119:12 | ... ++ | 1.0 | +| test.c:123:22:123:22 | 0 | 1.0 | +| test.c:123:22:123:22 | (size_type)... | 1.0 | +| test.c:124:11:124:15 | Start | 13.0 | +| test.c:124:11:124:36 | ... <= ... | 1.0 | +| test.c:124:20:124:32 | call to test12_helper | 1.0 | +| test.c:124:20:124:36 | ... - ... | 1.0 | +| test.c:124:36:124:36 | 1 | 1.0 | +| test.c:124:36:124:36 | (unsigned long long)... | 1.0 | +| test.c:126:31:126:43 | call to test12_helper | 1.0 | +| test.c:127:6:127:10 | Start | 13.0 | +| test.c:127:6:127:24 | ... += ... | 13.0 | +| test.c:127:15:127:20 | Length | 1.0 | +| test.c:127:15:127:24 | ... + ... | 1.0 | +| test.c:127:24:127:24 | 1 | 1.0 | +| test.c:127:24:127:24 | (unsigned long long)... | 1.0 | +| test.c:130:11:130:11 | 1 | 1.0 | +| test.c:135:22:135:22 | (unsigned char)... | 1.0 | +| test.c:135:22:135:22 | c | 1.0 | +| test.c:136:20:136:20 | 0 | 1.0 | +| test.c:136:20:136:20 | (unsigned int)... | 1.0 | +| test.c:137:20:137:20 | x | 1.0 | +| test.c:137:20:137:22 | ... - ... | 1.0 | +| test.c:137:22:137:22 | 1 | 1.0 | +| test.c:137:22:137:22 | (unsigned int)... | 1.0 | +| test.c:138:11:138:11 | i | 1.0 | +| test.c:138:11:138:13 | ... + ... | 1.0 | +| test.c:138:13:138:13 | 1 | 1.0 | +| test.c:139:10:139:41 | (double)... | 1.0 | +| test.c:139:10:139:41 | (int)... | 1.0 | +| test.c:139:18:139:41 | (...) | 1.0 | +| test.c:139:19:139:19 | (int)... | 1.0 | +| test.c:139:19:139:19 | c | 1.0 | +| test.c:139:19:139:23 | ... + ... | 1.0 | +| test.c:139:19:139:28 | (unsigned int)... | 1.0 | +| test.c:139:19:139:28 | ... + ... | 1.0 | +| test.c:139:19:139:32 | ... + ... | 1.0 | +| test.c:139:19:139:36 | ... + ... | 1.0 | +| test.c:139:19:139:40 | ... + ... | 1.0 | +| test.c:139:23:139:23 | i | 1.0 | +| test.c:139:27:139:28 | (int)... | 1.0 | +| test.c:139:27:139:28 | uc | 1.0 | +| test.c:139:32:139:32 | x | 1.0 | +| test.c:139:36:139:36 | y | 1.0 | +| test.c:139:40:139:40 | (unsigned int)... | 1.0 | +| test.c:139:40:139:40 | z | 1.0 | +| test.c:144:12:144:23 | (int)... | 1.0 | +| test.c:144:17:144:23 | (char)... | 1.0 | +| test.c:144:23:144:23 | x | 1.0 | +| test.c:145:12:145:32 | (int)... | 1.0 | +| test.c:145:17:145:32 | (unsigned char)... | 1.0 | +| test.c:145:32:145:32 | x | 1.0 | +| test.c:146:12:146:33 | (int)... | 1.0 | +| test.c:146:17:146:33 | (unsigned short)... | 1.0 | +| test.c:146:33:146:33 | x | 1.0 | +| test.c:147:12:147:31 | (int)... | 1.0 | +| test.c:147:17:147:31 | (unsigned int)... | 1.0 | +| test.c:147:31:147:31 | x | 1.0 | +| test.c:148:13:148:13 | (char)... | 1.0 | +| test.c:148:13:148:13 | x | 1.0 | +| test.c:149:23:149:23 | (unsigned short)... | 1.0 | +| test.c:149:23:149:23 | x | 1.0 | +| test.c:150:10:150:11 | x0 | 1.0 | +| test.c:150:10:150:16 | ... + ... | 1.0 | +| test.c:150:10:150:21 | ... + ... | 1.0 | +| test.c:150:10:150:26 | ... + ... | 1.0 | +| test.c:150:10:150:31 | ... + ... | 1.0 | +| test.c:150:10:150:36 | ... + ... | 1.0 | +| test.c:150:15:150:16 | x1 | 1.0 | +| test.c:150:20:150:21 | x2 | 1.0 | +| test.c:150:25:150:26 | x3 | 1.0 | +| test.c:150:30:150:31 | (int)... | 1.0 | +| test.c:150:30:150:31 | c0 | 1.0 | +| test.c:150:35:150:36 | (int)... | 1.0 | +| test.c:150:35:150:36 | s0 | 1.0 | +| test.c:154:10:154:31 | (...) | 1.0 | +| test.c:154:10:154:40 | ... ? ... : ... | 1.0 | +| test.c:154:11:154:11 | x | 1.0 | +| test.c:154:11:154:15 | ... > ... | 1.0 | +| test.c:154:11:154:30 | ... && ... | 1.0 | +| test.c:154:15:154:15 | 0 | 1.0 | +| test.c:154:15:154:15 | (long long)... | 1.0 | +| test.c:154:20:154:20 | x | 1.0 | +| test.c:154:20:154:30 | ... == ... | 1.0 | +| test.c:154:25:154:30 | (int)... | 1.0 | +| test.c:154:25:154:30 | (long long)... | 1.0 | +| test.c:154:30:154:30 | x | 1.0 | +| test.c:154:35:154:35 | x | 1.0 | +| test.c:154:39:154:40 | (long long)... | 1.0 | +| test.c:154:39:154:40 | - ... | 1.0 | +| test.c:154:40:154:40 | 1 | 1.0 | +| test.c:159:14:159:15 | 0 | 1.0 | +| test.c:161:7:161:7 | 3 | 1.0 | +| test.c:161:7:161:12 | ... <= ... | 1.0 | +| test.c:161:7:161:23 | ... && ... | 1.0 | +| test.c:161:12:161:12 | a | 1.0 | +| test.c:161:17:161:17 | a | 1.0 | +| test.c:161:17:161:23 | ... <= ... | 1.0 | +| test.c:161:22:161:23 | 11 | 1.0 | +| test.c:162:13:162:14 | + ... | 1.0 | +| test.c:162:14:162:14 | a | 1.0 | +| test.c:163:13:163:14 | - ... | 1.0 | +| test.c:163:14:163:14 | a | 1.0 | +| test.c:164:5:164:9 | total | 1.0 | +| test.c:164:5:164:16 | ... += ... | 1.0 | +| test.c:164:14:164:14 | b | 1.0 | +| test.c:164:14:164:16 | ... + ... | 1.0 | +| test.c:164:16:164:16 | c | 1.0 | +| test.c:166:7:166:7 | 0 | 1.0 | +| test.c:166:7:166:12 | ... <= ... | 1.0 | +| test.c:166:7:166:23 | ... && ... | 1.0 | +| test.c:166:12:166:12 | a | 2.0 | +| test.c:166:17:166:17 | a | 2.0 | +| test.c:166:17:166:23 | ... <= ... | 1.0 | +| test.c:166:22:166:23 | 11 | 1.0 | +| test.c:167:13:167:14 | + ... | 2.0 | +| test.c:167:14:167:14 | a | 2.0 | +| test.c:168:13:168:14 | - ... | 2.0 | +| test.c:168:14:168:14 | a | 2.0 | +| test.c:169:5:169:9 | total | 2.0 | +| test.c:169:5:169:16 | ... += ... | 8.0 | +| test.c:169:14:169:14 | b | 2.0 | +| test.c:169:14:169:16 | ... + ... | 4.0 | +| test.c:169:16:169:16 | c | 2.0 | +| test.c:171:7:171:8 | - ... | 1.0 | +| test.c:171:7:171:13 | ... <= ... | 1.0 | +| test.c:171:7:171:24 | ... && ... | 1.0 | +| test.c:171:8:171:8 | 7 | 1.0 | +| test.c:171:13:171:13 | a | 4.0 | +| test.c:171:18:171:18 | a | 4.0 | +| test.c:171:18:171:24 | ... <= ... | 1.0 | +| test.c:171:23:171:24 | 11 | 1.0 | +| test.c:172:13:172:14 | + ... | 4.0 | +| test.c:172:14:172:14 | a | 4.0 | +| test.c:173:13:173:14 | - ... | 4.0 | +| test.c:173:14:173:14 | a | 4.0 | +| test.c:174:5:174:9 | total | 10.0 | +| test.c:174:5:174:16 | ... += ... | 160.0 | +| test.c:174:14:174:14 | b | 4.0 | +| test.c:174:14:174:16 | ... + ... | 16.0 | +| test.c:174:16:174:16 | c | 4.0 | +| test.c:176:7:176:8 | - ... | 1.0 | +| test.c:176:7:176:13 | ... <= ... | 1.0 | +| test.c:176:7:176:23 | ... && ... | 1.0 | +| test.c:176:8:176:8 | 7 | 1.0 | +| test.c:176:13:176:13 | a | 8.0 | +| test.c:176:18:176:18 | a | 8.0 | +| test.c:176:18:176:23 | ... <= ... | 1.0 | +| test.c:176:23:176:23 | 1 | 1.0 | +| test.c:177:13:177:14 | + ... | 8.0 | +| test.c:177:14:177:14 | a | 8.0 | +| test.c:178:13:178:14 | - ... | 8.0 | +| test.c:178:14:178:14 | a | 8.0 | +| test.c:179:5:179:9 | total | 170.0 | +| test.c:179:5:179:16 | ... += ... | 10880.0 | +| test.c:179:14:179:14 | b | 8.0 | +| test.c:179:14:179:16 | ... + ... | 64.0 | +| test.c:179:16:179:16 | c | 8.0 | +| test.c:181:7:181:8 | - ... | 1.0 | +| test.c:181:7:181:13 | ... <= ... | 1.0 | +| test.c:181:7:181:23 | ... && ... | 1.0 | +| test.c:181:8:181:8 | 7 | 1.0 | +| test.c:181:13:181:13 | a | 16.0 | +| test.c:181:18:181:18 | a | 16.0 | +| test.c:181:18:181:23 | ... <= ... | 1.0 | +| test.c:181:23:181:23 | 0 | 1.0 | +| test.c:182:13:182:14 | + ... | 16.0 | +| test.c:182:14:182:14 | a | 16.0 | +| test.c:183:13:183:14 | - ... | 16.0 | +| test.c:183:14:183:14 | a | 16.0 | +| test.c:184:5:184:9 | total | 11050.0 | +| test.c:184:5:184:16 | ... += ... | 2828800.0 | +| test.c:184:14:184:14 | b | 16.0 | +| test.c:184:14:184:16 | ... + ... | 256.0 | +| test.c:184:16:184:16 | c | 16.0 | +| test.c:186:7:186:8 | - ... | 1.0 | +| test.c:186:7:186:13 | ... <= ... | 1.0 | +| test.c:186:7:186:24 | ... && ... | 1.0 | +| test.c:186:8:186:8 | 7 | 1.0 | +| test.c:186:13:186:13 | a | 32.0 | +| test.c:186:18:186:18 | a | 32.0 | +| test.c:186:18:186:24 | ... <= ... | 1.0 | +| test.c:186:23:186:24 | - ... | 1.0 | +| test.c:186:24:186:24 | 2 | 1.0 | +| test.c:187:13:187:14 | + ... | 32.0 | +| test.c:187:14:187:14 | a | 32.0 | +| test.c:188:13:188:14 | - ... | 32.0 | +| test.c:188:14:188:14 | a | 32.0 | +| test.c:189:5:189:9 | total | 2839850.0 | +| test.c:189:5:189:16 | ... += ... | 2.9080064E9 | +| test.c:189:14:189:14 | b | 32.0 | +| test.c:189:14:189:16 | ... + ... | 1024.0 | +| test.c:189:16:189:16 | c | 32.0 | +| test.c:192:10:192:14 | total | 2.91084625E9 | +| test.c:198:14:198:15 | 0 | 1.0 | +| test.c:200:7:200:7 | 3 | 1.0 | +| test.c:200:7:200:12 | ... <= ... | 1.0 | +| test.c:200:7:200:23 | ... && ... | 1.0 | +| test.c:200:7:200:33 | ... && ... | 1.0 | +| test.c:200:7:200:44 | ... && ... | 1.0 | +| test.c:200:12:200:12 | a | 1.0 | +| test.c:200:17:200:17 | a | 1.0 | +| test.c:200:17:200:23 | ... <= ... | 1.0 | +| test.c:200:22:200:23 | 11 | 1.0 | +| test.c:200:28:200:28 | 5 | 1.0 | +| test.c:200:28:200:33 | ... <= ... | 1.0 | +| test.c:200:33:200:33 | b | 1.0 | +| test.c:200:38:200:38 | b | 1.0 | +| test.c:200:38:200:44 | ... <= ... | 1.0 | +| test.c:200:43:200:44 | 23 | 1.0 | +| test.c:201:13:201:13 | a | 1.0 | +| test.c:201:13:201:15 | ... * ... | 1.0 | +| test.c:201:15:201:15 | b | 1.0 | +| test.c:202:5:202:9 | total | 1.0 | +| test.c:202:5:202:14 | ... += ... | 1.0 | +| test.c:202:14:202:14 | r | 1.0 | +| test.c:204:7:204:7 | 3 | 1.0 | +| test.c:204:7:204:12 | ... <= ... | 1.0 | +| test.c:204:7:204:23 | ... && ... | 1.0 | +| test.c:204:7:204:33 | ... && ... | 1.0 | +| test.c:204:7:204:44 | ... && ... | 1.0 | +| test.c:204:12:204:12 | a | 2.0 | +| test.c:204:17:204:17 | a | 2.0 | +| test.c:204:17:204:23 | ... <= ... | 1.0 | +| test.c:204:22:204:23 | 11 | 1.0 | +| test.c:204:28:204:28 | 0 | 1.0 | +| test.c:204:28:204:33 | ... <= ... | 1.0 | +| test.c:204:33:204:33 | b | 3.0 | +| test.c:204:38:204:38 | b | 3.0 | +| test.c:204:38:204:44 | ... <= ... | 1.0 | +| test.c:204:43:204:44 | 23 | 1.0 | +| test.c:205:13:205:13 | a | 2.0 | +| test.c:205:13:205:15 | ... * ... | 1.0 | +| test.c:205:15:205:15 | b | 3.0 | +| test.c:206:5:206:9 | total | 2.0 | +| test.c:206:5:206:14 | ... += ... | 2.0 | +| test.c:206:14:206:14 | r | 1.0 | +| test.c:208:7:208:7 | 3 | 1.0 | +| test.c:208:7:208:12 | ... <= ... | 1.0 | +| test.c:208:7:208:23 | ... && ... | 1.0 | +| test.c:208:7:208:35 | ... && ... | 1.0 | +| test.c:208:7:208:46 | ... && ... | 1.0 | +| test.c:208:12:208:12 | a | 4.0 | +| test.c:208:17:208:17 | a | 4.0 | +| test.c:208:17:208:23 | ... <= ... | 1.0 | +| test.c:208:22:208:23 | 11 | 1.0 | +| test.c:208:28:208:30 | - ... | 1.0 | +| test.c:208:28:208:35 | ... <= ... | 1.0 | +| test.c:208:29:208:30 | 13 | 1.0 | +| test.c:208:35:208:35 | b | 9.0 | +| test.c:208:40:208:40 | b | 9.0 | +| test.c:208:40:208:46 | ... <= ... | 1.0 | +| test.c:208:45:208:46 | 23 | 1.0 | +| test.c:209:13:209:13 | a | 4.0 | +| test.c:209:13:209:15 | ... * ... | 1.0 | +| test.c:209:15:209:15 | b | 9.0 | +| test.c:210:5:210:9 | total | 4.0 | +| test.c:210:5:210:14 | ... += ... | 4.0 | +| test.c:210:14:210:14 | r | 1.0 | +| test.c:212:7:212:7 | 3 | 1.0 | +| test.c:212:7:212:12 | ... <= ... | 1.0 | +| test.c:212:7:212:23 | ... && ... | 1.0 | +| test.c:212:7:212:35 | ... && ... | 1.0 | +| test.c:212:7:212:45 | ... && ... | 1.0 | +| test.c:212:12:212:12 | a | 8.0 | +| test.c:212:17:212:17 | a | 8.0 | +| test.c:212:17:212:23 | ... <= ... | 1.0 | +| test.c:212:22:212:23 | 11 | 1.0 | +| test.c:212:28:212:30 | - ... | 1.0 | +| test.c:212:28:212:35 | ... <= ... | 1.0 | +| test.c:212:29:212:30 | 13 | 1.0 | +| test.c:212:35:212:35 | b | 27.0 | +| test.c:212:40:212:40 | b | 27.0 | +| test.c:212:40:212:45 | ... <= ... | 1.0 | +| test.c:212:45:212:45 | 0 | 1.0 | +| test.c:213:13:213:13 | a | 8.0 | +| test.c:213:13:213:15 | ... * ... | 1.0 | +| test.c:213:15:213:15 | b | 27.0 | +| test.c:214:5:214:9 | total | 8.0 | +| test.c:214:5:214:14 | ... += ... | 8.0 | +| test.c:214:14:214:14 | r | 1.0 | +| test.c:216:7:216:7 | 3 | 1.0 | +| test.c:216:7:216:12 | ... <= ... | 1.0 | +| test.c:216:7:216:23 | ... && ... | 1.0 | +| test.c:216:7:216:35 | ... && ... | 1.0 | +| test.c:216:7:216:46 | ... && ... | 1.0 | +| test.c:216:12:216:12 | a | 16.0 | +| test.c:216:17:216:17 | a | 16.0 | +| test.c:216:17:216:23 | ... <= ... | 1.0 | +| test.c:216:22:216:23 | 11 | 1.0 | +| test.c:216:28:216:30 | - ... | 1.0 | +| test.c:216:28:216:35 | ... <= ... | 1.0 | +| test.c:216:29:216:30 | 13 | 1.0 | +| test.c:216:35:216:35 | b | 81.0 | +| test.c:216:40:216:40 | b | 81.0 | +| test.c:216:40:216:46 | ... <= ... | 1.0 | +| test.c:216:45:216:46 | - ... | 1.0 | +| test.c:216:46:216:46 | 7 | 1.0 | +| test.c:217:13:217:13 | a | 16.0 | +| test.c:217:13:217:15 | ... * ... | 1.0 | +| test.c:217:15:217:15 | b | 81.0 | +| test.c:218:5:218:9 | total | 16.0 | +| test.c:218:5:218:14 | ... += ... | 16.0 | +| test.c:218:14:218:14 | r | 1.0 | +| test.c:221:10:221:14 | total | 32.0 | +| test.c:226:14:226:15 | 0 | 1.0 | +| test.c:228:7:228:7 | 0 | 1.0 | +| test.c:228:7:228:12 | ... <= ... | 1.0 | +| test.c:228:7:228:23 | ... && ... | 1.0 | +| test.c:228:7:228:33 | ... && ... | 1.0 | +| test.c:228:7:228:44 | ... && ... | 1.0 | +| test.c:228:12:228:12 | a | 1.0 | +| test.c:228:17:228:17 | a | 1.0 | +| test.c:228:17:228:23 | ... <= ... | 1.0 | +| test.c:228:22:228:23 | 11 | 1.0 | +| test.c:228:28:228:28 | 5 | 1.0 | +| test.c:228:28:228:33 | ... <= ... | 1.0 | +| test.c:228:33:228:33 | b | 1.0 | +| test.c:228:38:228:38 | b | 1.0 | +| test.c:228:38:228:44 | ... <= ... | 1.0 | +| test.c:228:43:228:44 | 23 | 1.0 | +| test.c:229:13:229:13 | a | 1.0 | +| test.c:229:13:229:15 | ... * ... | 1.0 | +| test.c:229:15:229:15 | b | 1.0 | +| test.c:230:5:230:9 | total | 1.0 | +| test.c:230:5:230:14 | ... += ... | 1.0 | +| test.c:230:14:230:14 | r | 1.0 | +| test.c:232:7:232:7 | 0 | 1.0 | +| test.c:232:7:232:12 | ... <= ... | 1.0 | +| test.c:232:7:232:23 | ... && ... | 1.0 | +| test.c:232:7:232:33 | ... && ... | 1.0 | +| test.c:232:7:232:44 | ... && ... | 1.0 | +| test.c:232:12:232:12 | a | 2.0 | +| test.c:232:17:232:17 | a | 2.0 | +| test.c:232:17:232:23 | ... <= ... | 1.0 | +| test.c:232:22:232:23 | 11 | 1.0 | +| test.c:232:28:232:28 | 0 | 1.0 | +| test.c:232:28:232:33 | ... <= ... | 1.0 | +| test.c:232:33:232:33 | b | 3.0 | +| test.c:232:38:232:38 | b | 3.0 | +| test.c:232:38:232:44 | ... <= ... | 1.0 | +| test.c:232:43:232:44 | 23 | 1.0 | +| test.c:233:13:233:13 | a | 2.0 | +| test.c:233:13:233:15 | ... * ... | 1.0 | +| test.c:233:15:233:15 | b | 3.0 | +| test.c:234:5:234:9 | total | 2.0 | +| test.c:234:5:234:14 | ... += ... | 2.0 | +| test.c:234:14:234:14 | r | 1.0 | +| test.c:236:7:236:7 | 0 | 1.0 | +| test.c:236:7:236:12 | ... <= ... | 1.0 | +| test.c:236:7:236:23 | ... && ... | 1.0 | +| test.c:236:7:236:35 | ... && ... | 1.0 | +| test.c:236:7:236:46 | ... && ... | 1.0 | +| test.c:236:12:236:12 | a | 4.0 | +| test.c:236:17:236:17 | a | 4.0 | +| test.c:236:17:236:23 | ... <= ... | 1.0 | +| test.c:236:22:236:23 | 11 | 1.0 | +| test.c:236:28:236:30 | - ... | 1.0 | +| test.c:236:28:236:35 | ... <= ... | 1.0 | +| test.c:236:29:236:30 | 13 | 1.0 | +| test.c:236:35:236:35 | b | 9.0 | +| test.c:236:40:236:40 | b | 9.0 | +| test.c:236:40:236:46 | ... <= ... | 1.0 | +| test.c:236:45:236:46 | 23 | 1.0 | +| test.c:237:13:237:13 | a | 4.0 | +| test.c:237:13:237:15 | ... * ... | 1.0 | +| test.c:237:15:237:15 | b | 9.0 | +| test.c:238:5:238:9 | total | 4.0 | +| test.c:238:5:238:14 | ... += ... | 4.0 | +| test.c:238:14:238:14 | r | 1.0 | +| test.c:240:7:240:7 | 0 | 1.0 | +| test.c:240:7:240:12 | ... <= ... | 1.0 | +| test.c:240:7:240:23 | ... && ... | 1.0 | +| test.c:240:7:240:35 | ... && ... | 1.0 | +| test.c:240:7:240:45 | ... && ... | 1.0 | +| test.c:240:12:240:12 | a | 8.0 | +| test.c:240:17:240:17 | a | 8.0 | +| test.c:240:17:240:23 | ... <= ... | 1.0 | +| test.c:240:22:240:23 | 11 | 1.0 | +| test.c:240:28:240:30 | - ... | 1.0 | +| test.c:240:28:240:35 | ... <= ... | 1.0 | +| test.c:240:29:240:30 | 13 | 1.0 | +| test.c:240:35:240:35 | b | 27.0 | +| test.c:240:40:240:40 | b | 27.0 | +| test.c:240:40:240:45 | ... <= ... | 1.0 | +| test.c:240:45:240:45 | 0 | 1.0 | +| test.c:241:13:241:13 | a | 8.0 | +| test.c:241:13:241:15 | ... * ... | 1.0 | +| test.c:241:15:241:15 | b | 27.0 | +| test.c:242:5:242:9 | total | 8.0 | +| test.c:242:5:242:14 | ... += ... | 8.0 | +| test.c:242:14:242:14 | r | 1.0 | +| test.c:244:7:244:7 | 0 | 1.0 | +| test.c:244:7:244:12 | ... <= ... | 1.0 | +| test.c:244:7:244:23 | ... && ... | 1.0 | +| test.c:244:7:244:35 | ... && ... | 1.0 | +| test.c:244:7:244:46 | ... && ... | 1.0 | +| test.c:244:12:244:12 | a | 16.0 | +| test.c:244:17:244:17 | a | 16.0 | +| test.c:244:17:244:23 | ... <= ... | 1.0 | +| test.c:244:22:244:23 | 11 | 1.0 | +| test.c:244:28:244:30 | - ... | 1.0 | +| test.c:244:28:244:35 | ... <= ... | 1.0 | +| test.c:244:29:244:30 | 13 | 1.0 | +| test.c:244:35:244:35 | b | 81.0 | +| test.c:244:40:244:40 | b | 81.0 | +| test.c:244:40:244:46 | ... <= ... | 1.0 | +| test.c:244:45:244:46 | - ... | 1.0 | +| test.c:244:46:244:46 | 7 | 1.0 | +| test.c:245:13:245:13 | a | 16.0 | +| test.c:245:13:245:15 | ... * ... | 1.0 | +| test.c:245:15:245:15 | b | 81.0 | +| test.c:246:5:246:9 | total | 16.0 | +| test.c:246:5:246:14 | ... += ... | 16.0 | +| test.c:246:14:246:14 | r | 1.0 | +| test.c:249:10:249:14 | total | 32.0 | +| test.c:254:14:254:15 | 0 | 1.0 | +| test.c:256:7:256:9 | - ... | 1.0 | +| test.c:256:7:256:14 | ... <= ... | 1.0 | +| test.c:256:7:256:25 | ... && ... | 1.0 | +| test.c:256:7:256:35 | ... && ... | 1.0 | +| test.c:256:7:256:46 | ... && ... | 1.0 | +| test.c:256:8:256:9 | 17 | 1.0 | +| test.c:256:14:256:14 | a | 1.0 | +| test.c:256:19:256:19 | a | 1.0 | +| test.c:256:19:256:25 | ... <= ... | 1.0 | +| test.c:256:24:256:25 | 11 | 1.0 | +| test.c:256:30:256:30 | 5 | 1.0 | +| test.c:256:30:256:35 | ... <= ... | 1.0 | +| test.c:256:35:256:35 | b | 1.0 | +| test.c:256:40:256:40 | b | 1.0 | +| test.c:256:40:256:46 | ... <= ... | 1.0 | +| test.c:256:45:256:46 | 23 | 1.0 | +| test.c:257:13:257:13 | a | 1.0 | +| test.c:257:13:257:15 | ... * ... | 1.0 | +| test.c:257:15:257:15 | b | 1.0 | +| test.c:258:5:258:9 | total | 1.0 | +| test.c:258:5:258:14 | ... += ... | 1.0 | +| test.c:258:14:258:14 | r | 1.0 | +| test.c:260:7:260:9 | - ... | 1.0 | +| test.c:260:7:260:14 | ... <= ... | 1.0 | +| test.c:260:7:260:25 | ... && ... | 1.0 | +| test.c:260:7:260:35 | ... && ... | 1.0 | +| test.c:260:7:260:46 | ... && ... | 1.0 | +| test.c:260:8:260:9 | 17 | 1.0 | +| test.c:260:14:260:14 | a | 2.0 | +| test.c:260:19:260:19 | a | 2.0 | +| test.c:260:19:260:25 | ... <= ... | 1.0 | +| test.c:260:24:260:25 | 11 | 1.0 | +| test.c:260:30:260:30 | 0 | 1.0 | +| test.c:260:30:260:35 | ... <= ... | 1.0 | +| test.c:260:35:260:35 | b | 3.0 | +| test.c:260:40:260:40 | b | 3.0 | +| test.c:260:40:260:46 | ... <= ... | 1.0 | +| test.c:260:45:260:46 | 23 | 1.0 | +| test.c:261:13:261:13 | a | 2.0 | +| test.c:261:13:261:15 | ... * ... | 1.0 | +| test.c:261:15:261:15 | b | 3.0 | +| test.c:262:5:262:9 | total | 2.0 | +| test.c:262:5:262:14 | ... += ... | 2.0 | +| test.c:262:14:262:14 | r | 1.0 | +| test.c:264:7:264:9 | - ... | 1.0 | +| test.c:264:7:264:14 | ... <= ... | 1.0 | +| test.c:264:7:264:25 | ... && ... | 1.0 | +| test.c:264:7:264:37 | ... && ... | 1.0 | +| test.c:264:7:264:48 | ... && ... | 1.0 | +| test.c:264:8:264:9 | 17 | 1.0 | +| test.c:264:14:264:14 | a | 4.0 | +| test.c:264:19:264:19 | a | 4.0 | +| test.c:264:19:264:25 | ... <= ... | 1.0 | +| test.c:264:24:264:25 | 11 | 1.0 | +| test.c:264:30:264:32 | - ... | 1.0 | +| test.c:264:30:264:37 | ... <= ... | 1.0 | +| test.c:264:31:264:32 | 13 | 1.0 | +| test.c:264:37:264:37 | b | 9.0 | +| test.c:264:42:264:42 | b | 9.0 | +| test.c:264:42:264:48 | ... <= ... | 1.0 | +| test.c:264:47:264:48 | 23 | 1.0 | +| test.c:265:13:265:13 | a | 4.0 | +| test.c:265:13:265:15 | ... * ... | 1.0 | +| test.c:265:15:265:15 | b | 9.0 | +| test.c:266:5:266:9 | total | 4.0 | +| test.c:266:5:266:14 | ... += ... | 4.0 | +| test.c:266:14:266:14 | r | 1.0 | +| test.c:268:7:268:9 | - ... | 1.0 | +| test.c:268:7:268:14 | ... <= ... | 1.0 | +| test.c:268:7:268:25 | ... && ... | 1.0 | +| test.c:268:7:268:37 | ... && ... | 1.0 | +| test.c:268:7:268:47 | ... && ... | 1.0 | +| test.c:268:8:268:9 | 17 | 1.0 | +| test.c:268:14:268:14 | a | 8.0 | +| test.c:268:19:268:19 | a | 8.0 | +| test.c:268:19:268:25 | ... <= ... | 1.0 | +| test.c:268:24:268:25 | 11 | 1.0 | +| test.c:268:30:268:32 | - ... | 1.0 | +| test.c:268:30:268:37 | ... <= ... | 1.0 | +| test.c:268:31:268:32 | 13 | 1.0 | +| test.c:268:37:268:37 | b | 27.0 | +| test.c:268:42:268:42 | b | 27.0 | +| test.c:268:42:268:47 | ... <= ... | 1.0 | +| test.c:268:47:268:47 | 0 | 1.0 | +| test.c:269:13:269:13 | a | 8.0 | +| test.c:269:13:269:15 | ... * ... | 1.0 | +| test.c:269:15:269:15 | b | 27.0 | +| test.c:270:5:270:9 | total | 8.0 | +| test.c:270:5:270:14 | ... += ... | 8.0 | +| test.c:270:14:270:14 | r | 1.0 | +| test.c:272:7:272:9 | - ... | 1.0 | +| test.c:272:7:272:14 | ... <= ... | 1.0 | +| test.c:272:7:272:25 | ... && ... | 1.0 | +| test.c:272:7:272:37 | ... && ... | 1.0 | +| test.c:272:7:272:48 | ... && ... | 1.0 | +| test.c:272:8:272:9 | 17 | 1.0 | +| test.c:272:14:272:14 | a | 16.0 | +| test.c:272:19:272:19 | a | 16.0 | +| test.c:272:19:272:25 | ... <= ... | 1.0 | +| test.c:272:24:272:25 | 11 | 1.0 | +| test.c:272:30:272:32 | - ... | 1.0 | +| test.c:272:30:272:37 | ... <= ... | 1.0 | +| test.c:272:31:272:32 | 13 | 1.0 | +| test.c:272:37:272:37 | b | 81.0 | +| test.c:272:42:272:42 | b | 81.0 | +| test.c:272:42:272:48 | ... <= ... | 1.0 | +| test.c:272:47:272:48 | - ... | 1.0 | +| test.c:272:48:272:48 | 7 | 1.0 | +| test.c:273:13:273:13 | a | 16.0 | +| test.c:273:13:273:15 | ... * ... | 1.0 | +| test.c:273:15:273:15 | b | 81.0 | +| test.c:274:5:274:9 | total | 16.0 | +| test.c:274:5:274:14 | ... += ... | 16.0 | +| test.c:274:14:274:14 | r | 1.0 | +| test.c:277:10:277:14 | total | 32.0 | +| test.c:282:14:282:15 | 0 | 1.0 | +| test.c:284:7:284:9 | - ... | 1.0 | +| test.c:284:7:284:14 | ... <= ... | 1.0 | +| test.c:284:7:284:24 | ... && ... | 1.0 | +| test.c:284:7:284:34 | ... && ... | 1.0 | +| test.c:284:7:284:45 | ... && ... | 1.0 | +| test.c:284:8:284:9 | 17 | 1.0 | +| test.c:284:14:284:14 | a | 1.0 | +| test.c:284:19:284:19 | a | 1.0 | +| test.c:284:19:284:24 | ... <= ... | 1.0 | +| test.c:284:24:284:24 | 0 | 1.0 | +| test.c:284:29:284:29 | 5 | 1.0 | +| test.c:284:29:284:34 | ... <= ... | 1.0 | +| test.c:284:34:284:34 | b | 1.0 | +| test.c:284:39:284:39 | b | 1.0 | +| test.c:284:39:284:45 | ... <= ... | 1.0 | +| test.c:284:44:284:45 | 23 | 1.0 | +| test.c:285:13:285:13 | a | 1.0 | +| test.c:285:13:285:15 | ... * ... | 1.0 | +| test.c:285:15:285:15 | b | 1.0 | +| test.c:286:5:286:9 | total | 1.0 | +| test.c:286:5:286:14 | ... += ... | 1.0 | +| test.c:286:14:286:14 | r | 1.0 | +| test.c:288:7:288:9 | - ... | 1.0 | +| test.c:288:7:288:14 | ... <= ... | 1.0 | +| test.c:288:7:288:24 | ... && ... | 1.0 | +| test.c:288:7:288:34 | ... && ... | 1.0 | +| test.c:288:7:288:45 | ... && ... | 1.0 | +| test.c:288:8:288:9 | 17 | 1.0 | +| test.c:288:14:288:14 | a | 2.0 | +| test.c:288:19:288:19 | a | 2.0 | +| test.c:288:19:288:24 | ... <= ... | 1.0 | +| test.c:288:24:288:24 | 0 | 1.0 | +| test.c:288:29:288:29 | 0 | 1.0 | +| test.c:288:29:288:34 | ... <= ... | 1.0 | +| test.c:288:34:288:34 | b | 3.0 | +| test.c:288:39:288:39 | b | 3.0 | +| test.c:288:39:288:45 | ... <= ... | 1.0 | +| test.c:288:44:288:45 | 23 | 1.0 | +| test.c:289:13:289:13 | a | 2.0 | +| test.c:289:13:289:15 | ... * ... | 1.0 | +| test.c:289:15:289:15 | b | 3.0 | +| test.c:290:5:290:9 | total | 2.0 | +| test.c:290:5:290:14 | ... += ... | 2.0 | +| test.c:290:14:290:14 | r | 1.0 | +| test.c:292:7:292:9 | - ... | 1.0 | +| test.c:292:7:292:14 | ... <= ... | 1.0 | +| test.c:292:7:292:24 | ... && ... | 1.0 | +| test.c:292:7:292:36 | ... && ... | 1.0 | +| test.c:292:7:292:47 | ... && ... | 1.0 | +| test.c:292:8:292:9 | 17 | 1.0 | +| test.c:292:14:292:14 | a | 4.0 | +| test.c:292:19:292:19 | a | 4.0 | +| test.c:292:19:292:24 | ... <= ... | 1.0 | +| test.c:292:24:292:24 | 0 | 1.0 | +| test.c:292:29:292:31 | - ... | 1.0 | +| test.c:292:29:292:36 | ... <= ... | 1.0 | +| test.c:292:30:292:31 | 13 | 1.0 | +| test.c:292:36:292:36 | b | 9.0 | +| test.c:292:41:292:41 | b | 9.0 | +| test.c:292:41:292:47 | ... <= ... | 1.0 | +| test.c:292:46:292:47 | 23 | 1.0 | +| test.c:293:13:293:13 | a | 4.0 | +| test.c:293:13:293:15 | ... * ... | 1.0 | +| test.c:293:15:293:15 | b | 9.0 | +| test.c:294:5:294:9 | total | 4.0 | +| test.c:294:5:294:14 | ... += ... | 4.0 | +| test.c:294:14:294:14 | r | 1.0 | +| test.c:296:7:296:9 | - ... | 1.0 | +| test.c:296:7:296:14 | ... <= ... | 1.0 | +| test.c:296:7:296:24 | ... && ... | 1.0 | +| test.c:296:7:296:36 | ... && ... | 1.0 | +| test.c:296:7:296:46 | ... && ... | 1.0 | +| test.c:296:8:296:9 | 17 | 1.0 | +| test.c:296:14:296:14 | a | 8.0 | +| test.c:296:19:296:19 | a | 8.0 | +| test.c:296:19:296:24 | ... <= ... | 1.0 | +| test.c:296:24:296:24 | 0 | 1.0 | +| test.c:296:29:296:31 | - ... | 1.0 | +| test.c:296:29:296:36 | ... <= ... | 1.0 | +| test.c:296:30:296:31 | 13 | 1.0 | +| test.c:296:36:296:36 | b | 27.0 | +| test.c:296:41:296:41 | b | 27.0 | +| test.c:296:41:296:46 | ... <= ... | 1.0 | +| test.c:296:46:296:46 | 0 | 1.0 | +| test.c:297:13:297:13 | a | 8.0 | +| test.c:297:13:297:15 | ... * ... | 1.0 | +| test.c:297:15:297:15 | b | 27.0 | +| test.c:298:5:298:9 | total | 8.0 | +| test.c:298:5:298:14 | ... += ... | 8.0 | +| test.c:298:14:298:14 | r | 1.0 | +| test.c:300:7:300:9 | - ... | 1.0 | +| test.c:300:7:300:14 | ... <= ... | 1.0 | +| test.c:300:7:300:24 | ... && ... | 1.0 | +| test.c:300:7:300:36 | ... && ... | 1.0 | +| test.c:300:7:300:47 | ... && ... | 1.0 | +| test.c:300:8:300:9 | 17 | 1.0 | +| test.c:300:14:300:14 | a | 16.0 | +| test.c:300:19:300:19 | a | 16.0 | +| test.c:300:19:300:24 | ... <= ... | 1.0 | +| test.c:300:24:300:24 | 0 | 1.0 | +| test.c:300:29:300:31 | - ... | 1.0 | +| test.c:300:29:300:36 | ... <= ... | 1.0 | +| test.c:300:30:300:31 | 13 | 1.0 | +| test.c:300:36:300:36 | b | 81.0 | +| test.c:300:41:300:41 | b | 81.0 | +| test.c:300:41:300:47 | ... <= ... | 1.0 | +| test.c:300:46:300:47 | - ... | 1.0 | +| test.c:300:47:300:47 | 7 | 1.0 | +| test.c:301:13:301:13 | a | 16.0 | +| test.c:301:13:301:15 | ... * ... | 1.0 | +| test.c:301:15:301:15 | b | 81.0 | +| test.c:302:5:302:9 | total | 16.0 | +| test.c:302:5:302:14 | ... += ... | 16.0 | +| test.c:302:14:302:14 | r | 1.0 | +| test.c:305:10:305:14 | total | 32.0 | +| test.c:310:14:310:15 | 0 | 1.0 | +| test.c:312:7:312:9 | - ... | 1.0 | +| test.c:312:7:312:14 | ... <= ... | 1.0 | +| test.c:312:7:312:25 | ... && ... | 1.0 | +| test.c:312:7:312:35 | ... && ... | 1.0 | +| test.c:312:7:312:46 | ... && ... | 1.0 | +| test.c:312:8:312:9 | 17 | 1.0 | +| test.c:312:14:312:14 | a | 1.0 | +| test.c:312:19:312:19 | a | 1.0 | +| test.c:312:19:312:25 | ... <= ... | 1.0 | +| test.c:312:24:312:25 | - ... | 1.0 | +| test.c:312:25:312:25 | 2 | 1.0 | +| test.c:312:30:312:30 | 5 | 1.0 | +| test.c:312:30:312:35 | ... <= ... | 1.0 | +| test.c:312:35:312:35 | b | 1.0 | +| test.c:312:40:312:40 | b | 1.0 | +| test.c:312:40:312:46 | ... <= ... | 1.0 | +| test.c:312:45:312:46 | 23 | 1.0 | +| test.c:313:13:313:13 | a | 1.0 | +| test.c:313:13:313:15 | ... * ... | 1.0 | +| test.c:313:15:313:15 | b | 1.0 | +| test.c:314:5:314:9 | total | 1.0 | +| test.c:314:5:314:14 | ... += ... | 1.0 | +| test.c:314:14:314:14 | r | 1.0 | +| test.c:316:7:316:9 | - ... | 1.0 | +| test.c:316:7:316:14 | ... <= ... | 1.0 | +| test.c:316:7:316:25 | ... && ... | 1.0 | +| test.c:316:7:316:35 | ... && ... | 1.0 | +| test.c:316:7:316:46 | ... && ... | 1.0 | +| test.c:316:8:316:9 | 17 | 1.0 | +| test.c:316:14:316:14 | a | 2.0 | +| test.c:316:19:316:19 | a | 2.0 | +| test.c:316:19:316:25 | ... <= ... | 1.0 | +| test.c:316:24:316:25 | - ... | 1.0 | +| test.c:316:25:316:25 | 2 | 1.0 | +| test.c:316:30:316:30 | 0 | 1.0 | +| test.c:316:30:316:35 | ... <= ... | 1.0 | +| test.c:316:35:316:35 | b | 3.0 | +| test.c:316:40:316:40 | b | 3.0 | +| test.c:316:40:316:46 | ... <= ... | 1.0 | +| test.c:316:45:316:46 | 23 | 1.0 | +| test.c:317:13:317:13 | a | 2.0 | +| test.c:317:13:317:15 | ... * ... | 1.0 | +| test.c:317:15:317:15 | b | 3.0 | +| test.c:318:5:318:9 | total | 2.0 | +| test.c:318:5:318:14 | ... += ... | 2.0 | +| test.c:318:14:318:14 | r | 1.0 | +| test.c:320:7:320:9 | - ... | 1.0 | +| test.c:320:7:320:14 | ... <= ... | 1.0 | +| test.c:320:7:320:25 | ... && ... | 1.0 | +| test.c:320:7:320:37 | ... && ... | 1.0 | +| test.c:320:7:320:48 | ... && ... | 1.0 | +| test.c:320:8:320:9 | 17 | 1.0 | +| test.c:320:14:320:14 | a | 4.0 | +| test.c:320:19:320:19 | a | 4.0 | +| test.c:320:19:320:25 | ... <= ... | 1.0 | +| test.c:320:24:320:25 | - ... | 1.0 | +| test.c:320:25:320:25 | 2 | 1.0 | +| test.c:320:30:320:32 | - ... | 1.0 | +| test.c:320:30:320:37 | ... <= ... | 1.0 | +| test.c:320:31:320:32 | 13 | 1.0 | +| test.c:320:37:320:37 | b | 9.0 | +| test.c:320:42:320:42 | b | 9.0 | +| test.c:320:42:320:48 | ... <= ... | 1.0 | +| test.c:320:47:320:48 | 23 | 1.0 | +| test.c:321:13:321:13 | a | 4.0 | +| test.c:321:13:321:15 | ... * ... | 1.0 | +| test.c:321:15:321:15 | b | 9.0 | +| test.c:322:5:322:9 | total | 4.0 | +| test.c:322:5:322:14 | ... += ... | 4.0 | +| test.c:322:14:322:14 | r | 1.0 | +| test.c:324:7:324:9 | - ... | 1.0 | +| test.c:324:7:324:14 | ... <= ... | 1.0 | +| test.c:324:7:324:25 | ... && ... | 1.0 | +| test.c:324:7:324:37 | ... && ... | 1.0 | +| test.c:324:7:324:47 | ... && ... | 1.0 | +| test.c:324:8:324:9 | 17 | 1.0 | +| test.c:324:14:324:14 | a | 8.0 | +| test.c:324:19:324:19 | a | 8.0 | +| test.c:324:19:324:25 | ... <= ... | 1.0 | +| test.c:324:24:324:25 | - ... | 1.0 | +| test.c:324:25:324:25 | 2 | 1.0 | +| test.c:324:30:324:32 | - ... | 1.0 | +| test.c:324:30:324:37 | ... <= ... | 1.0 | +| test.c:324:31:324:32 | 13 | 1.0 | +| test.c:324:37:324:37 | b | 27.0 | +| test.c:324:42:324:42 | b | 27.0 | +| test.c:324:42:324:47 | ... <= ... | 1.0 | +| test.c:324:47:324:47 | 0 | 1.0 | +| test.c:325:13:325:13 | a | 8.0 | +| test.c:325:13:325:15 | ... * ... | 1.0 | +| test.c:325:15:325:15 | b | 27.0 | +| test.c:326:5:326:9 | total | 8.0 | +| test.c:326:5:326:14 | ... += ... | 8.0 | +| test.c:326:14:326:14 | r | 1.0 | +| test.c:328:7:328:9 | - ... | 1.0 | +| test.c:328:7:328:14 | ... <= ... | 1.0 | +| test.c:328:7:328:25 | ... && ... | 1.0 | +| test.c:328:7:328:37 | ... && ... | 1.0 | +| test.c:328:7:328:48 | ... && ... | 1.0 | +| test.c:328:8:328:9 | 17 | 1.0 | +| test.c:328:14:328:14 | a | 16.0 | +| test.c:328:19:328:19 | a | 16.0 | +| test.c:328:19:328:25 | ... <= ... | 1.0 | +| test.c:328:24:328:25 | - ... | 1.0 | +| test.c:328:25:328:25 | 2 | 1.0 | +| test.c:328:30:328:32 | - ... | 1.0 | +| test.c:328:30:328:37 | ... <= ... | 1.0 | +| test.c:328:31:328:32 | 13 | 1.0 | +| test.c:328:37:328:37 | b | 81.0 | +| test.c:328:42:328:42 | b | 81.0 | +| test.c:328:42:328:48 | ... <= ... | 1.0 | +| test.c:328:47:328:48 | - ... | 1.0 | +| test.c:328:48:328:48 | 7 | 1.0 | +| test.c:329:13:329:13 | a | 16.0 | +| test.c:329:13:329:15 | ... * ... | 1.0 | +| test.c:329:15:329:15 | b | 81.0 | +| test.c:330:5:330:9 | total | 16.0 | +| test.c:330:5:330:14 | ... += ... | 16.0 | +| test.c:330:14:330:14 | r | 1.0 | +| test.c:333:10:333:14 | total | 32.0 | +| test.c:337:13:337:14 | 0 | 1.0 | +| test.c:338:7:338:7 | x | 1.0 | +| test.c:338:7:338:11 | ... < ... | 1.0 | +| test.c:338:11:338:11 | 0 | 1.0 | +| test.c:339:12:339:13 | - ... | 1.0 | +| test.c:339:13:339:13 | 1 | 1.0 | +| test.c:342:10:342:10 | i | 13.0 | +| test.c:342:10:342:14 | ... < ... | 1.0 | +| test.c:342:14:342:14 | 3 | 1.0 | +| test.c:343:5:343:5 | i | 13.0 | +| test.c:343:5:343:7 | ... ++ | 13.0 | +| test.c:345:3:345:3 | d | 1.0 | +| test.c:345:3:345:7 | ... = ... | 13.0 | +| test.c:345:7:345:7 | i | 13.0 | +| test.c:346:7:346:7 | x | 1.0 | +| test.c:346:7:346:11 | ... < ... | 1.0 | +| test.c:346:11:346:11 | 0 | 1.0 | +| test.c:347:9:347:9 | d | 13.0 | +| test.c:347:9:347:14 | ... > ... | 1.0 | +| test.c:347:13:347:14 | - ... | 1.0 | +| test.c:347:14:347:14 | x | 1.0 | +| test.c:348:14:348:14 | 1 | 1.0 | +| test.c:351:10:351:10 | 0 | 1.0 | +| test.c:357:3:357:4 | y1 | 1.0 | +| test.c:357:3:357:23 | ... = ... | 1.0 | +| test.c:357:8:357:8 | x | 1.0 | +| test.c:357:8:357:14 | ... < ... | 1.0 | +| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | +| test.c:357:12:357:14 | 100 | 1.0 | +| test.c:357:12:357:14 | (unsigned int)... | 1.0 | +| test.c:357:18:357:18 | x | 1.0 | +| test.c:357:22:357:23 | 10 | 1.0 | +| test.c:357:22:357:23 | (unsigned int)... | 1.0 | +| test.c:358:3:358:4 | y2 | 1.0 | +| test.c:358:3:358:24 | ... = ... | 2.0 | +| test.c:358:8:358:8 | x | 2.0 | +| test.c:358:8:358:15 | ... >= ... | 1.0 | +| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | +| test.c:358:13:358:15 | 100 | 1.0 | +| test.c:358:13:358:15 | (unsigned int)... | 1.0 | +| test.c:358:19:358:20 | 10 | 1.0 | +| test.c:358:19:358:20 | (unsigned int)... | 1.0 | +| test.c:358:24:358:24 | x | 2.0 | +| test.c:359:3:359:4 | y3 | 1.0 | +| test.c:359:3:359:8 | ... = ... | 1.0 | +| test.c:359:8:359:8 | 0 | 1.0 | +| test.c:359:8:359:8 | (unsigned int)... | 1.0 | +| test.c:360:3:360:4 | y4 | 1.0 | +| test.c:360:3:360:8 | ... = ... | 1.0 | +| test.c:360:8:360:8 | 0 | 1.0 | +| test.c:360:8:360:8 | (unsigned int)... | 1.0 | +| test.c:361:3:361:4 | y5 | 1.0 | +| test.c:361:3:361:8 | ... = ... | 1.0 | +| test.c:361:8:361:8 | 0 | 1.0 | +| test.c:361:8:361:8 | (unsigned int)... | 1.0 | +| test.c:362:3:362:4 | y6 | 1.0 | +| test.c:362:3:362:8 | ... = ... | 1.0 | +| test.c:362:8:362:8 | 0 | 1.0 | +| test.c:362:8:362:8 | (unsigned int)... | 1.0 | +| test.c:363:3:363:4 | y7 | 1.0 | +| test.c:363:3:363:8 | ... = ... | 1.0 | +| test.c:363:8:363:8 | 0 | 1.0 | +| test.c:363:8:363:8 | (unsigned int)... | 1.0 | +| test.c:364:3:364:4 | y8 | 1.0 | +| test.c:364:3:364:8 | ... = ... | 1.0 | +| test.c:364:8:364:8 | 0 | 1.0 | +| test.c:364:8:364:8 | (unsigned int)... | 1.0 | +| test.c:365:7:365:7 | x | 4.0 | +| test.c:365:7:365:13 | ... < ... | 1.0 | +| test.c:365:11:365:13 | 300 | 1.0 | +| test.c:365:11:365:13 | (unsigned int)... | 1.0 | +| test.c:366:5:366:6 | y3 | 1.0 | +| test.c:366:5:366:15 | ... = ... | 4.0 | +| test.c:366:10:366:10 | x | 4.0 | +| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | +| test.c:366:15:366:15 | 5 | 1.0 | +| test.c:366:15:366:15 | (unsigned int)... | 1.0 | +| test.c:367:5:367:6 | y4 | 1.0 | +| test.c:367:5:367:17 | ... = ... | 4.0 | +| test.c:367:10:367:10 | x | 4.0 | +| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | +| test.c:367:15:367:17 | 500 | 1.0 | +| test.c:367:15:367:17 | (unsigned int)... | 1.0 | +| test.c:368:5:368:6 | y5 | 1.0 | +| test.c:368:5:368:21 | ... = ... | 4.0 | +| test.c:368:10:368:14 | (...) | 4.0 | +| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | +| test.c:368:11:368:11 | x | 4.0 | +| test.c:368:11:368:13 | ... + ... | 4.0 | +| test.c:368:13:368:13 | 1 | 1.0 | +| test.c:368:13:368:13 | (unsigned int)... | 1.0 | +| test.c:368:19:368:21 | 500 | 1.0 | +| test.c:368:19:368:21 | (unsigned int)... | 1.0 | +| test.c:369:5:369:6 | y6 | 1.0 | +| test.c:369:5:369:36 | ... = ... | 4.0 | +| test.c:369:10:369:31 | (...) | 4.0 | +| test.c:369:10:369:36 | (unsigned int)... | 4.0 | +| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | +| test.c:369:11:369:30 | (unsigned char)... | 4.0 | +| test.c:369:26:369:30 | (...) | 4.0 | +| test.c:369:27:369:27 | x | 4.0 | +| test.c:369:27:369:29 | ... + ... | 4.0 | +| test.c:369:29:369:29 | 1 | 1.0 | +| test.c:369:29:369:29 | (unsigned int)... | 1.0 | +| test.c:369:36:369:36 | 5 | 1.0 | +| test.c:370:5:370:6 | y7 | 1.0 | +| test.c:370:5:370:38 | ... = ... | 4.0 | +| test.c:370:10:370:31 | (...) | 4.0 | +| test.c:370:10:370:38 | (unsigned int)... | 4.0 | +| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | +| test.c:370:11:370:30 | (unsigned char)... | 4.0 | +| test.c:370:26:370:30 | (...) | 4.0 | +| test.c:370:27:370:27 | x | 4.0 | +| test.c:370:27:370:29 | ... + ... | 4.0 | +| test.c:370:29:370:29 | 1 | 1.0 | +| test.c:370:29:370:29 | (unsigned int)... | 1.0 | +| test.c:370:36:370:38 | 500 | 1.0 | +| test.c:371:5:371:6 | y8 | 1.0 | +| test.c:371:5:371:39 | ... = ... | 4.0 | +| test.c:371:10:371:32 | (...) | 4.0 | +| test.c:371:10:371:39 | (unsigned int)... | 4.0 | +| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | +| test.c:371:11:371:31 | (unsigned short)... | 4.0 | +| test.c:371:27:371:31 | (...) | 4.0 | +| test.c:371:28:371:28 | x | 4.0 | +| test.c:371:28:371:30 | ... + ... | 4.0 | +| test.c:371:30:371:30 | 1 | 1.0 | +| test.c:371:30:371:30 | (unsigned int)... | 1.0 | +| test.c:371:37:371:39 | 500 | 1.0 | +| test.c:373:10:373:11 | y1 | 1.0 | +| test.c:373:10:373:16 | ... + ... | 2.0 | +| test.c:373:10:373:21 | ... + ... | 10.0 | +| test.c:373:10:373:26 | ... + ... | 50.0 | +| test.c:373:10:373:31 | ... + ... | 250.0 | +| test.c:373:10:373:36 | ... + ... | 1250.0 | +| test.c:373:10:373:41 | ... + ... | 6250.0 | +| test.c:373:10:373:46 | ... + ... | 31250.0 | +| test.c:373:15:373:16 | y2 | 2.0 | +| test.c:373:20:373:21 | y3 | 5.0 | +| test.c:373:25:373:26 | y4 | 5.0 | +| test.c:373:30:373:31 | y5 | 5.0 | +| test.c:373:35:373:36 | y6 | 5.0 | +| test.c:373:40:373:41 | y7 | 5.0 | +| test.c:373:45:373:46 | y8 | 5.0 | +| test.c:379:3:379:4 | y1 | 1.0 | +| test.c:379:3:379:24 | ... = ... | 1.0 | +| test.c:379:8:379:8 | x | 1.0 | +| test.c:379:8:379:14 | ... > ... | 1.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | +| test.c:379:12:379:14 | 100 | 1.0 | +| test.c:379:12:379:14 | (unsigned int)... | 1.0 | +| test.c:379:18:379:18 | x | 1.0 | +| test.c:379:22:379:24 | 110 | 1.0 | +| test.c:379:22:379:24 | (unsigned int)... | 1.0 | +| test.c:380:3:380:4 | y2 | 1.0 | +| test.c:380:3:380:25 | ... = ... | 2.0 | +| test.c:380:8:380:8 | x | 2.0 | +| test.c:380:8:380:15 | ... <= ... | 1.0 | +| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | +| test.c:380:13:380:15 | 100 | 1.0 | +| test.c:380:13:380:15 | (unsigned int)... | 1.0 | +| test.c:380:19:380:21 | 110 | 1.0 | +| test.c:380:19:380:21 | (unsigned int)... | 1.0 | +| test.c:380:25:380:25 | x | 2.0 | +| test.c:381:3:381:4 | y3 | 1.0 | +| test.c:381:3:381:11 | ... = ... | 1.0 | +| test.c:381:8:381:11 | 1000 | 1.0 | +| test.c:381:8:381:11 | (unsigned int)... | 1.0 | +| test.c:382:3:382:4 | y4 | 1.0 | +| test.c:382:3:382:11 | ... = ... | 1.0 | +| test.c:382:8:382:11 | 1000 | 1.0 | +| test.c:382:8:382:11 | (unsigned int)... | 1.0 | +| test.c:383:3:383:4 | y5 | 1.0 | +| test.c:383:3:383:11 | ... = ... | 1.0 | +| test.c:383:8:383:11 | 1000 | 1.0 | +| test.c:383:8:383:11 | (unsigned int)... | 1.0 | +| test.c:384:7:384:7 | x | 4.0 | +| test.c:384:7:384:14 | ... >= ... | 1.0 | +| test.c:384:12:384:14 | 300 | 1.0 | +| test.c:384:12:384:14 | (unsigned int)... | 1.0 | +| test.c:385:5:385:6 | y3 | 1.0 | +| test.c:385:5:385:21 | ... = ... | 4.0 | +| test.c:385:10:385:16 | (...) | 4.0 | +| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | +| test.c:385:11:385:11 | x | 4.0 | +| test.c:385:11:385:15 | ... - ... | 4.0 | +| test.c:385:13:385:15 | 300 | 1.0 | +| test.c:385:13:385:15 | (unsigned int)... | 1.0 | +| test.c:385:21:385:21 | 5 | 1.0 | +| test.c:385:21:385:21 | (unsigned int)... | 1.0 | +| test.c:386:5:386:6 | y4 | 1.0 | +| test.c:386:5:386:21 | ... = ... | 4.0 | +| test.c:386:10:386:16 | (...) | 4.0 | +| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | +| test.c:386:11:386:11 | x | 4.0 | +| test.c:386:11:386:15 | ... - ... | 4.0 | +| test.c:386:13:386:15 | 200 | 1.0 | +| test.c:386:13:386:15 | (unsigned int)... | 1.0 | +| test.c:386:21:386:21 | 5 | 1.0 | +| test.c:386:21:386:21 | (unsigned int)... | 1.0 | +| test.c:387:5:387:6 | y5 | 1.0 | +| test.c:387:5:387:38 | ... = ... | 4.0 | +| test.c:387:10:387:33 | (...) | 4.0 | +| test.c:387:10:387:38 | (unsigned int)... | 4.0 | +| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | +| test.c:387:11:387:32 | (unsigned char)... | 4.0 | +| test.c:387:26:387:32 | (...) | 4.0 | +| test.c:387:27:387:27 | x | 4.0 | +| test.c:387:27:387:31 | ... - ... | 4.0 | +| test.c:387:29:387:31 | 200 | 1.0 | +| test.c:387:29:387:31 | (unsigned int)... | 1.0 | +| test.c:387:38:387:38 | 5 | 1.0 | +| test.c:389:10:389:11 | y1 | 1.0 | +| test.c:389:10:389:16 | ... + ... | 2.0 | +| test.c:389:10:389:21 | ... + ... | 10.0 | +| test.c:389:10:389:26 | ... + ... | 50.0 | +| test.c:389:10:389:31 | ... + ... | 250.0 | +| test.c:389:15:389:16 | y2 | 2.0 | +| test.c:389:20:389:21 | y3 | 5.0 | +| test.c:389:25:389:26 | y4 | 5.0 | +| test.c:389:30:389:31 | y5 | 5.0 | +| test.c:394:14:394:14 | m | 1.0 | +| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | +| test.c:394:18:394:18 | n | 1.0 | +| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | +| test.c:394:22:394:22 | o | 1.0 | +| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | +| test.c:394:26:394:26 | p | 1.0 | +| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | +| test.c:394:30:394:30 | q | 1.0 | +| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | +| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | +| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | +| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | +| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | +| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | +| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | +| test.c:395:14:395:14 | m | 2.0 | +| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | +| test.c:395:18:395:18 | n | 3.0 | +| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | +| test.c:395:22:395:22 | o | 3.0 | +| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | +| test.c:395:26:395:26 | p | 3.0 | +| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | +| test.c:395:30:395:30 | q | 3.0 | +| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | +| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | +| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | +| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | +| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | +| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | +| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | +| test.c:396:14:396:14 | m | 4.0 | +| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | +| test.c:396:18:396:18 | n | 9.0 | +| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | +| test.c:396:22:396:22 | o | 9.0 | +| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | +| test.c:396:26:396:26 | p | 9.0 | +| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | +| test.c:396:30:396:30 | q | 9.0 | +| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | +| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | +| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | +| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | +| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | +| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | +| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | +| test.c:397:14:397:14 | m | 8.0 | +| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | +| test.c:397:18:397:18 | n | 27.0 | +| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | +| test.c:397:22:397:22 | o | 27.0 | +| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | +| test.c:397:26:397:26 | p | 27.0 | +| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | +| test.c:397:30:397:30 | q | 27.0 | +| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | +| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | +| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | +| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | +| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | +| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | +| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | +| test.c:398:14:398:14 | m | 16.0 | +| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | +| test.c:398:18:398:18 | n | 81.0 | +| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | +| test.c:398:22:398:22 | o | 81.0 | +| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | +| test.c:398:26:398:26 | p | 81.0 | +| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | +| test.c:398:30:398:30 | q | 81.0 | +| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | +| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | +| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | +| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | +| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | +| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | +| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | +| test.c:399:14:399:14 | m | 32.0 | +| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | +| test.c:399:18:399:18 | n | 243.0 | +| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | +| test.c:399:22:399:22 | o | 243.0 | +| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | +| test.c:399:26:399:26 | p | 243.0 | +| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | +| test.c:399:30:399:30 | q | 243.0 | +| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | +| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | +| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | +| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | +| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | +| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | +| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | +| test.c:400:14:400:14 | m | 64.0 | +| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | +| test.c:400:18:400:18 | n | 729.0 | +| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | +| test.c:400:22:400:22 | o | 729.0 | +| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | +| test.c:400:26:400:26 | p | 729.0 | +| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | +| test.c:400:30:400:30 | q | 729.0 | +| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | +| test.c:400:34:400:43 | 0.02524326 | 1.0 | +| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | +| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | +| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | +| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | +| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | +| test.c:401:14:401:14 | m | 128.0 | +| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | +| test.c:401:18:401:18 | n | 2187.0 | +| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | +| test.c:401:22:401:22 | o | 2187.0 | +| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | +| test.c:401:26:401:26 | p | 2187.0 | +| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | +| test.c:401:30:401:30 | q | 2187.0 | +| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | +| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | +| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | +| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | +| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | +| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | +| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | +| test.c:402:14:402:14 | m | 256.0 | +| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | +| test.c:402:18:402:18 | n | 6561.0 | +| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | +| test.c:402:22:402:22 | o | 6561.0 | +| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | +| test.c:402:26:402:26 | p | 6561.0 | +| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | +| test.c:402:30:402:30 | q | 6561.0 | +| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | +| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | +| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | +| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | +| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | +| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | +| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | +| test.c:403:14:403:14 | m | 512.0 | +| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | +| test.c:403:18:403:18 | n | 19683.0 | +| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | +| test.c:403:22:403:22 | o | 19683.0 | +| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | +| test.c:403:26:403:26 | p | 19683.0 | +| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | +| test.c:403:30:403:30 | q | 19683.0 | +| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | +| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | +| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | +| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | +| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | +| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | +| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | +| test.c:404:14:404:14 | m | 1024.0 | +| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | +| test.c:404:18:404:18 | n | 59049.0 | +| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | +| test.c:404:22:404:22 | o | 59049.0 | +| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | +| test.c:404:26:404:26 | p | 59049.0 | +| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | +| test.c:404:30:404:30 | q | 59049.0 | +| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | +| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | +| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | +| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | +| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | +| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | +| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | +| test.c:405:14:405:14 | m | 2048.0 | +| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | +| test.c:405:18:405:18 | n | 177147.0 | +| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | +| test.c:405:22:405:22 | o | 177147.0 | +| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | +| test.c:405:26:405:26 | p | 177147.0 | +| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | +| test.c:405:30:405:30 | q | 177147.0 | +| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | +| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | +| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | +| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | +| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | +| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | +| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | +| test.c:411:19:411:19 | a | 1.0 | +| test.c:411:19:411:23 | ... + ... | 1.0 | +| test.c:411:19:411:27 | ... + ... | 1.0 | +| test.c:411:19:411:31 | ... + ... | 1.0 | +| test.c:411:19:411:35 | ... + ... | 1.0 | +| test.c:411:19:411:39 | ... + ... | 1.0 | +| test.c:411:19:411:43 | ... + ... | 1.0 | +| test.c:411:19:411:47 | ... + ... | 1.0 | +| test.c:411:19:411:51 | ... + ... | 1.0 | +| test.c:411:19:411:55 | ... + ... | 1.0 | +| test.c:411:19:411:59 | ... + ... | 1.0 | +| test.c:411:19:411:63 | ... + ... | 1.0 | +| test.c:411:23:411:23 | b | 1.0 | +| test.c:411:27:411:27 | c | 1.0 | +| test.c:411:31:411:31 | d | 1.0 | +| test.c:411:35:411:35 | e | 1.0 | +| test.c:411:39:411:39 | f | 1.0 | +| test.c:411:43:411:43 | g | 1.0 | +| test.c:411:47:411:47 | h | 1.0 | +| test.c:411:51:411:51 | i | 1.0 | +| test.c:411:55:411:55 | j | 1.0 | +| test.c:411:59:411:59 | k | 1.0 | +| test.c:411:63:411:63 | l | 1.0 | +| test.c:413:10:413:15 | output | 1.0 | +| test.c:420:4:422:50 | (...) | 1.0 | +| test.c:420:4:505:26 | ... > ... | 1.0 | +| test.c:420:4:594:27 | ... ? ... : ... | 1.0736981431797959E233 | +| test.c:420:5:420:6 | 14 | 1.0 | +| test.c:420:5:420:6 | (unsigned int)... | 1.0 | +| test.c:420:5:420:11 | ... * ... | 1.0 | +| test.c:420:5:420:55 | ... > ... | 1.0 | +| test.c:420:5:422:49 | ... ? ... : ... | 1.0 | +| test.c:420:10:420:11 | ip | 1.0 | +| test.c:420:15:420:26 | (...) | 1.0 | +| test.c:420:15:420:31 | ... * ... | 1.0 | +| test.c:420:15:420:55 | ... + ... | 1.0 | +| test.c:420:16:420:16 | 2 | 1.0 | +| test.c:420:16:420:16 | (unsigned int)... | 1.0 | +| test.c:420:16:420:21 | ... * ... | 1.0 | +| test.c:420:16:420:25 | ... + ... | 1.0 | +| test.c:420:20:420:21 | ip | 1.0 | +| test.c:420:25:420:25 | 1 | 1.0 | +| test.c:420:25:420:25 | (unsigned int)... | 1.0 | +| test.c:420:30:420:31 | 17 | 1.0 | +| test.c:420:30:420:31 | (unsigned int)... | 1.0 | +| test.c:420:35:420:50 | (...) | 1.0 | +| test.c:420:35:420:55 | ... * ... | 1.0 | +| test.c:420:36:420:36 | 2 | 1.0 | +| test.c:420:36:420:36 | (unsigned int)... | 1.0 | +| test.c:420:36:420:41 | ... * ... | 1.0 | +| test.c:420:36:420:45 | ... + ... | 1.0 | +| test.c:420:36:420:49 | ... + ... | 1.0 | +| test.c:420:40:420:41 | ip | 1.0 | +| test.c:420:45:420:45 | 1 | 1.0 | +| test.c:420:45:420:45 | (unsigned int)... | 1.0 | +| test.c:420:49:420:49 | 1 | 1.0 | +| test.c:420:49:420:49 | (unsigned int)... | 1.0 | +| test.c:420:54:420:55 | 17 | 1.0 | +| test.c:420:54:420:55 | (unsigned int)... | 1.0 | +| test.c:421:9:421:10 | 14 | 1.0 | +| test.c:421:9:421:10 | (unsigned int)... | 1.0 | +| test.c:421:9:421:15 | ... * ... | 1.0 | +| test.c:421:14:421:15 | ip | 1.0 | +| test.c:422:9:422:20 | (...) | 1.0 | +| test.c:422:9:422:25 | ... * ... | 1.0 | +| test.c:422:9:422:49 | ... + ... | 1.0 | +| test.c:422:10:422:10 | 2 | 1.0 | +| test.c:422:10:422:10 | (unsigned int)... | 1.0 | +| test.c:422:10:422:15 | ... * ... | 1.0 | +| test.c:422:10:422:19 | ... + ... | 1.0 | +| test.c:422:14:422:15 | ip | 1.0 | +| test.c:422:19:422:19 | 1 | 1.0 | +| test.c:422:19:422:19 | (unsigned int)... | 1.0 | +| test.c:422:24:422:25 | 14 | 1.0 | +| test.c:422:24:422:25 | (unsigned int)... | 1.0 | +| test.c:422:29:422:44 | (...) | 1.0 | +| test.c:422:29:422:49 | ... * ... | 1.0 | +| test.c:422:30:422:30 | 2 | 1.0 | +| test.c:422:30:422:30 | (unsigned int)... | 1.0 | +| test.c:422:30:422:35 | ... * ... | 1.0 | +| test.c:422:30:422:39 | ... + ... | 1.0 | +| test.c:422:30:422:43 | ... + ... | 1.0 | +| test.c:422:34:422:35 | ip | 1.0 | +| test.c:422:39:422:39 | 1 | 1.0 | +| test.c:422:39:422:39 | (unsigned int)... | 1.0 | +| test.c:422:43:422:43 | 1 | 1.0 | +| test.c:422:43:422:43 | (unsigned int)... | 1.0 | +| test.c:422:48:422:49 | 17 | 1.0 | +| test.c:422:48:422:49 | (unsigned int)... | 1.0 | +| test.c:423:5:505:26 | (...) | 8.351961156990343E97 | +| test.c:423:6:423:6 | 2 | 1.0 | +| test.c:423:6:423:6 | (unsigned int)... | 1.0 | +| test.c:423:6:423:23 | ... * ... | 2.0 | +| test.c:423:6:442:42 | ... + ... | 5.95077871104E11 | +| test.c:423:6:462:24 | ... > ... | 1.0 | +| test.c:423:6:505:25 | ... ? ... : ... | 8.351961156990343E97 | +| test.c:423:10:423:23 | (...) | 2.0 | +| test.c:423:11:423:12 | ip | 2.0 | +| test.c:423:11:423:17 | ... * ... | 2.0 | +| test.c:423:11:423:22 | ... + ... | 2.0 | +| test.c:423:16:423:17 | 14 | 1.0 | +| test.c:423:16:423:17 | (unsigned int)... | 1.0 | +| test.c:423:21:423:22 | 32 | 1.0 | +| test.c:423:21:423:22 | (unsigned int)... | 1.0 | +| test.c:424:7:442:42 | (...) | 2.97538935552E11 | +| test.c:424:8:424:8 | 4 | 1.0 | +| test.c:424:8:424:8 | (unsigned int)... | 1.0 | +| test.c:424:8:424:25 | ... * ... | 2.0 | +| test.c:424:8:425:26 | ... + ... | 4.0 | +| test.c:424:8:426:26 | ... + ... | 8.0 | +| test.c:424:8:431:22 | ... + ... | 1728.0 | +| test.c:424:8:432:37 | ... > ... | 1.0 | +| test.c:424:8:442:41 | ... ? ... : ... | 2.97538935552E11 | +| test.c:424:12:424:25 | (...) | 2.0 | +| test.c:424:13:424:14 | ip | 2.0 | +| test.c:424:13:424:19 | ... * ... | 2.0 | +| test.c:424:13:424:24 | ... + ... | 2.0 | +| test.c:424:18:424:19 | 14 | 1.0 | +| test.c:424:18:424:19 | (unsigned int)... | 1.0 | +| test.c:424:23:424:24 | 32 | 1.0 | +| test.c:424:23:424:24 | (unsigned int)... | 1.0 | +| test.c:425:9:425:26 | (...) | 2.0 | +| test.c:425:10:425:10 | 2 | 1.0 | +| test.c:425:10:425:10 | (unsigned int)... | 1.0 | +| test.c:425:10:425:15 | ... * ... | 2.0 | +| test.c:425:10:425:20 | ... * ... | 2.0 | +| test.c:425:10:425:25 | ... + ... | 2.0 | +| test.c:425:14:425:15 | ip | 2.0 | +| test.c:425:19:425:20 | 14 | 1.0 | +| test.c:425:19:425:20 | (unsigned int)... | 1.0 | +| test.c:425:24:425:25 | 32 | 1.0 | +| test.c:425:24:425:25 | (unsigned int)... | 1.0 | +| test.c:426:9:426:9 | 2 | 1.0 | +| test.c:426:9:426:9 | (unsigned int)... | 1.0 | +| test.c:426:9:426:26 | ... * ... | 2.0 | +| test.c:426:13:426:26 | (...) | 2.0 | +| test.c:426:14:426:15 | ip | 2.0 | +| test.c:426:14:426:20 | ... * ... | 2.0 | +| test.c:426:14:426:25 | ... + ... | 2.0 | +| test.c:426:19:426:20 | 14 | 1.0 | +| test.c:426:19:426:20 | (unsigned int)... | 1.0 | +| test.c:426:24:426:25 | 64 | 1.0 | +| test.c:426:24:426:25 | (unsigned int)... | 1.0 | +| test.c:427:9:431:22 | (...) | 216.0 | +| test.c:427:10:427:21 | (...) | 2.0 | +| test.c:427:10:427:26 | ... * ... | 2.0 | +| test.c:427:10:427:80 | ... > ... | 1.0 | +| test.c:427:10:431:21 | ... ? ... : ... | 216.0 | +| test.c:427:11:427:11 | 2 | 1.0 | +| test.c:427:11:427:11 | (unsigned int)... | 1.0 | +| test.c:427:11:427:16 | ... * ... | 2.0 | +| test.c:427:11:427:20 | ... + ... | 2.0 | +| test.c:427:15:427:16 | ip | 2.0 | +| test.c:427:20:427:20 | 1 | 1.0 | +| test.c:427:20:427:20 | (unsigned int)... | 1.0 | +| test.c:427:25:427:26 | 14 | 1.0 | +| test.c:427:25:427:26 | (unsigned int)... | 1.0 | +| test.c:427:30:427:80 | (...) | 4.0 | +| test.c:427:31:427:32 | 17 | 1.0 | +| test.c:427:31:427:32 | (unsigned int)... | 1.0 | +| test.c:427:31:427:43 | ... * ... | 2.0 | +| test.c:427:31:427:53 | ... > ... | 1.0 | +| test.c:427:31:427:79 | ... ? ... : ... | 4.0 | +| test.c:427:36:427:43 | (...) | 2.0 | +| test.c:427:37:427:37 | 2 | 1.0 | +| test.c:427:37:427:37 | (unsigned int)... | 1.0 | +| test.c:427:37:427:42 | ... * ... | 2.0 | +| test.c:427:41:427:42 | ip | 2.0 | +| test.c:427:47:427:48 | 17 | 1.0 | +| test.c:427:47:427:48 | (unsigned int)... | 1.0 | +| test.c:427:47:427:53 | ... * ... | 2.0 | +| test.c:427:52:427:53 | ip | 2.0 | +| test.c:427:57:427:58 | 17 | 1.0 | +| test.c:427:57:427:58 | (unsigned int)... | 1.0 | +| test.c:427:57:427:69 | ... * ... | 2.0 | +| test.c:427:62:427:69 | (...) | 2.0 | +| test.c:427:63:427:63 | 2 | 1.0 | +| test.c:427:63:427:63 | (unsigned int)... | 1.0 | +| test.c:427:63:427:68 | ... * ... | 2.0 | +| test.c:427:67:427:68 | ip | 2.0 | +| test.c:427:73:427:74 | 17 | 1.0 | +| test.c:427:73:427:74 | (unsigned int)... | 1.0 | +| test.c:427:73:427:79 | ... * ... | 2.0 | +| test.c:427:78:427:79 | ip | 2.0 | +| test.c:428:13:428:24 | (...) | 6.0 | +| test.c:428:13:428:29 | ... * ... | 6.0 | +| test.c:428:14:428:14 | 2 | 1.0 | +| test.c:428:14:428:14 | (unsigned int)... | 1.0 | +| test.c:428:14:428:19 | ... * ... | 6.0 | +| test.c:428:14:428:23 | ... + ... | 6.0 | +| test.c:428:18:428:19 | ip | 6.0 | +| test.c:428:23:428:23 | 1 | 1.0 | +| test.c:428:23:428:23 | (unsigned int)... | 1.0 | +| test.c:428:28:428:29 | 14 | 1.0 | +| test.c:428:28:428:29 | (unsigned int)... | 1.0 | +| test.c:429:13:429:14 | 14 | 1.0 | +| test.c:429:13:429:14 | (unsigned int)... | 1.0 | +| test.c:429:13:429:25 | ... * ... | 6.0 | +| test.c:429:13:429:35 | ... > ... | 1.0 | +| test.c:429:13:431:21 | ... ? ... : ... | 36.0 | +| test.c:429:18:429:25 | (...) | 6.0 | +| test.c:429:19:429:19 | 2 | 1.0 | +| test.c:429:19:429:19 | (unsigned int)... | 1.0 | +| test.c:429:19:429:24 | ... * ... | 6.0 | +| test.c:429:23:429:24 | ip | 6.0 | +| test.c:429:29:429:30 | 17 | 1.0 | +| test.c:429:29:429:30 | (unsigned int)... | 1.0 | +| test.c:429:29:429:35 | ... * ... | 6.0 | +| test.c:429:34:429:35 | ip | 6.0 | +| test.c:430:15:430:16 | 14 | 1.0 | +| test.c:430:15:430:16 | (unsigned int)... | 1.0 | +| test.c:430:15:430:27 | ... * ... | 6.0 | +| test.c:430:20:430:27 | (...) | 6.0 | +| test.c:430:21:430:21 | 2 | 1.0 | +| test.c:430:21:430:21 | (unsigned int)... | 1.0 | +| test.c:430:21:430:26 | ... * ... | 6.0 | +| test.c:430:25:430:26 | ip | 6.0 | +| test.c:431:15:431:16 | 14 | 1.0 | +| test.c:431:15:431:16 | (unsigned int)... | 1.0 | +| test.c:431:15:431:21 | ... * ... | 6.0 | +| test.c:431:20:431:21 | ip | 6.0 | +| test.c:432:7:432:7 | 2 | 1.0 | +| test.c:432:7:432:7 | (unsigned int)... | 1.0 | +| test.c:432:7:432:12 | ... * ... | 18.0 | +| test.c:432:7:432:17 | ... * ... | 18.0 | +| test.c:432:7:432:37 | ... + ... | 324.0 | +| test.c:432:11:432:12 | ip | 18.0 | +| test.c:432:16:432:17 | 14 | 1.0 | +| test.c:432:16:432:17 | (unsigned int)... | 1.0 | +| test.c:432:21:432:32 | (...) | 18.0 | +| test.c:432:21:432:37 | ... * ... | 18.0 | +| test.c:432:22:432:22 | 2 | 1.0 | +| test.c:432:22:432:22 | (unsigned int)... | 1.0 | +| test.c:432:22:432:27 | ... * ... | 18.0 | +| test.c:432:22:432:31 | ... + ... | 18.0 | +| test.c:432:26:432:27 | ip | 18.0 | +| test.c:432:31:432:31 | 1 | 1.0 | +| test.c:432:31:432:31 | (unsigned int)... | 1.0 | +| test.c:432:36:432:37 | 17 | 1.0 | +| test.c:432:36:432:37 | (unsigned int)... | 1.0 | +| test.c:433:11:433:11 | 4 | 1.0 | +| test.c:433:11:433:11 | (unsigned int)... | 1.0 | +| test.c:433:11:433:28 | ... * ... | 18.0 | +| test.c:433:11:434:28 | ... + ... | 324.0 | +| test.c:433:11:435:28 | ... + ... | 5832.0 | +| test.c:433:11:441:24 | ... + ... | 9.18330048E8 | +| test.c:433:15:433:28 | (...) | 18.0 | +| test.c:433:16:433:17 | ip | 18.0 | +| test.c:433:16:433:22 | ... * ... | 18.0 | +| test.c:433:16:433:27 | ... + ... | 18.0 | +| test.c:433:21:433:22 | 14 | 1.0 | +| test.c:433:21:433:22 | (unsigned int)... | 1.0 | +| test.c:433:26:433:27 | 32 | 1.0 | +| test.c:433:26:433:27 | (unsigned int)... | 1.0 | +| test.c:434:11:434:28 | (...) | 18.0 | +| test.c:434:12:434:12 | 2 | 1.0 | +| test.c:434:12:434:12 | (unsigned int)... | 1.0 | +| test.c:434:12:434:17 | ... * ... | 18.0 | +| test.c:434:12:434:22 | ... * ... | 18.0 | +| test.c:434:12:434:27 | ... + ... | 18.0 | +| test.c:434:16:434:17 | ip | 18.0 | +| test.c:434:21:434:22 | 14 | 1.0 | +| test.c:434:21:434:22 | (unsigned int)... | 1.0 | +| test.c:434:26:434:27 | 32 | 1.0 | +| test.c:434:26:434:27 | (unsigned int)... | 1.0 | +| test.c:435:11:435:11 | 2 | 1.0 | +| test.c:435:11:435:11 | (unsigned int)... | 1.0 | +| test.c:435:11:435:28 | ... * ... | 18.0 | +| test.c:435:15:435:28 | (...) | 18.0 | +| test.c:435:16:435:17 | ip | 18.0 | +| test.c:435:16:435:22 | ... * ... | 18.0 | +| test.c:435:16:435:27 | ... + ... | 18.0 | +| test.c:435:21:435:22 | 14 | 1.0 | +| test.c:435:21:435:22 | (unsigned int)... | 1.0 | +| test.c:435:26:435:27 | 64 | 1.0 | +| test.c:435:26:435:27 | (unsigned int)... | 1.0 | +| test.c:436:11:441:24 | (...) | 157464.0 | +| test.c:436:12:436:23 | (...) | 18.0 | +| test.c:436:12:436:28 | ... * ... | 18.0 | +| test.c:436:12:437:61 | ... > ... | 1.0 | +| test.c:436:12:441:23 | ... ? ... : ... | 157464.0 | +| test.c:436:13:436:13 | 2 | 1.0 | +| test.c:436:13:436:13 | (unsigned int)... | 1.0 | +| test.c:436:13:436:18 | ... * ... | 18.0 | +| test.c:436:13:436:22 | ... + ... | 18.0 | +| test.c:436:17:436:18 | ip | 18.0 | +| test.c:436:22:436:22 | 1 | 1.0 | +| test.c:436:22:436:22 | (unsigned int)... | 1.0 | +| test.c:436:27:436:28 | 14 | 1.0 | +| test.c:436:27:436:28 | (unsigned int)... | 1.0 | +| test.c:437:11:437:61 | (...) | 324.0 | +| test.c:437:12:437:13 | 14 | 1.0 | +| test.c:437:12:437:13 | (unsigned int)... | 1.0 | +| test.c:437:12:437:24 | ... * ... | 18.0 | +| test.c:437:12:437:34 | ... > ... | 1.0 | +| test.c:437:12:437:60 | ... ? ... : ... | 324.0 | +| test.c:437:17:437:24 | (...) | 18.0 | +| test.c:437:18:437:18 | 2 | 1.0 | +| test.c:437:18:437:18 | (unsigned int)... | 1.0 | +| test.c:437:18:437:23 | ... * ... | 18.0 | +| test.c:437:22:437:23 | ip | 18.0 | +| test.c:437:28:437:29 | 17 | 1.0 | +| test.c:437:28:437:29 | (unsigned int)... | 1.0 | +| test.c:437:28:437:34 | ... * ... | 18.0 | +| test.c:437:33:437:34 | ip | 18.0 | +| test.c:437:38:437:39 | 17 | 1.0 | +| test.c:437:38:437:39 | (unsigned int)... | 1.0 | +| test.c:437:38:437:50 | ... * ... | 18.0 | +| test.c:437:43:437:50 | (...) | 18.0 | +| test.c:437:44:437:44 | 2 | 1.0 | +| test.c:437:44:437:44 | (unsigned int)... | 1.0 | +| test.c:437:44:437:49 | ... * ... | 18.0 | +| test.c:437:48:437:49 | ip | 18.0 | +| test.c:437:54:437:55 | 17 | 1.0 | +| test.c:437:54:437:55 | (unsigned int)... | 1.0 | +| test.c:437:54:437:60 | ... * ... | 18.0 | +| test.c:437:59:437:60 | ip | 18.0 | +| test.c:438:15:438:26 | (...) | 54.0 | +| test.c:438:15:438:31 | ... * ... | 54.0 | +| test.c:438:16:438:16 | 2 | 1.0 | +| test.c:438:16:438:16 | (unsigned int)... | 1.0 | +| test.c:438:16:438:21 | ... * ... | 54.0 | +| test.c:438:16:438:25 | ... + ... | 54.0 | +| test.c:438:20:438:21 | ip | 54.0 | +| test.c:438:25:438:25 | 1 | 1.0 | +| test.c:438:25:438:25 | (unsigned int)... | 1.0 | +| test.c:438:30:438:31 | 14 | 1.0 | +| test.c:438:30:438:31 | (unsigned int)... | 1.0 | +| test.c:439:15:439:16 | 14 | 1.0 | +| test.c:439:15:439:16 | (unsigned int)... | 1.0 | +| test.c:439:15:439:27 | ... * ... | 54.0 | +| test.c:439:15:439:37 | ... > ... | 1.0 | +| test.c:439:15:441:23 | ... ? ... : ... | 2916.0 | +| test.c:439:20:439:27 | (...) | 54.0 | +| test.c:439:21:439:21 | 2 | 1.0 | +| test.c:439:21:439:21 | (unsigned int)... | 1.0 | +| test.c:439:21:439:26 | ... * ... | 54.0 | +| test.c:439:25:439:26 | ip | 54.0 | +| test.c:439:31:439:32 | 17 | 1.0 | +| test.c:439:31:439:32 | (unsigned int)... | 1.0 | +| test.c:439:31:439:37 | ... * ... | 54.0 | +| test.c:439:36:439:37 | ip | 54.0 | +| test.c:440:17:440:18 | 14 | 1.0 | +| test.c:440:17:440:18 | (unsigned int)... | 1.0 | +| test.c:440:17:440:29 | ... * ... | 54.0 | +| test.c:440:22:440:29 | (...) | 54.0 | +| test.c:440:23:440:23 | 2 | 1.0 | +| test.c:440:23:440:23 | (unsigned int)... | 1.0 | +| test.c:440:23:440:28 | ... * ... | 54.0 | +| test.c:440:27:440:28 | ip | 54.0 | +| test.c:441:17:441:18 | 14 | 1.0 | +| test.c:441:17:441:18 | (unsigned int)... | 1.0 | +| test.c:441:17:441:23 | ... * ... | 54.0 | +| test.c:441:22:441:23 | ip | 54.0 | +| test.c:442:11:442:11 | 2 | 1.0 | +| test.c:442:11:442:11 | (unsigned int)... | 1.0 | +| test.c:442:11:442:16 | ... * ... | 18.0 | +| test.c:442:11:442:21 | ... * ... | 18.0 | +| test.c:442:11:442:41 | ... + ... | 324.0 | +| test.c:442:15:442:16 | ip | 18.0 | +| test.c:442:20:442:21 | 14 | 1.0 | +| test.c:442:20:442:21 | (unsigned int)... | 1.0 | +| test.c:442:25:442:36 | (...) | 18.0 | +| test.c:442:25:442:41 | ... * ... | 18.0 | +| test.c:442:26:442:26 | 2 | 1.0 | +| test.c:442:26:442:26 | (unsigned int)... | 1.0 | +| test.c:442:26:442:31 | ... * ... | 18.0 | +| test.c:442:26:442:35 | ... + ... | 18.0 | +| test.c:442:30:442:31 | ip | 18.0 | +| test.c:442:35:442:35 | 1 | 1.0 | +| test.c:442:35:442:35 | (unsigned int)... | 1.0 | +| test.c:442:40:442:41 | 17 | 1.0 | +| test.c:442:40:442:41 | (unsigned int)... | 1.0 | +| test.c:443:5:462:24 | (...) | 3.2788673396080446E29 | +| test.c:443:6:443:6 | 4 | 1.0 | +| test.c:443:6:443:6 | (unsigned int)... | 1.0 | +| test.c:443:6:443:23 | ... * ... | 180.0 | +| test.c:443:6:444:24 | ... + ... | 32400.0 | +| test.c:443:6:445:24 | ... + ... | 5832000.0 | +| test.c:443:6:450:20 | ... + ... | 9.18330048E14 | +| test.c:443:6:451:55 | ... > ... | 1.0 | +| test.c:443:6:462:23 | ... ? ... : ... | 3.2788673396080446E29 | +| test.c:443:10:443:23 | (...) | 180.0 | +| test.c:443:11:443:12 | ip | 180.0 | +| test.c:443:11:443:17 | ... * ... | 180.0 | +| test.c:443:11:443:22 | ... + ... | 180.0 | +| test.c:443:16:443:17 | 14 | 1.0 | +| test.c:443:16:443:17 | (unsigned int)... | 1.0 | +| test.c:443:21:443:22 | 32 | 1.0 | +| test.c:443:21:443:22 | (unsigned int)... | 1.0 | +| test.c:444:7:444:24 | (...) | 180.0 | +| test.c:444:8:444:8 | 2 | 1.0 | +| test.c:444:8:444:8 | (unsigned int)... | 1.0 | +| test.c:444:8:444:13 | ... * ... | 180.0 | +| test.c:444:8:444:18 | ... * ... | 180.0 | +| test.c:444:8:444:23 | ... + ... | 180.0 | +| test.c:444:12:444:13 | ip | 180.0 | +| test.c:444:17:444:18 | 14 | 1.0 | +| test.c:444:17:444:18 | (unsigned int)... | 1.0 | +| test.c:444:22:444:23 | 32 | 1.0 | +| test.c:444:22:444:23 | (unsigned int)... | 1.0 | +| test.c:445:7:445:7 | 2 | 1.0 | +| test.c:445:7:445:7 | (unsigned int)... | 1.0 | +| test.c:445:7:445:24 | ... * ... | 180.0 | +| test.c:445:11:445:24 | (...) | 180.0 | +| test.c:445:12:445:13 | ip | 180.0 | +| test.c:445:12:445:18 | ... * ... | 180.0 | +| test.c:445:12:445:23 | ... + ... | 180.0 | +| test.c:445:17:445:18 | 14 | 1.0 | +| test.c:445:17:445:18 | (unsigned int)... | 1.0 | +| test.c:445:22:445:23 | 64 | 1.0 | +| test.c:445:22:445:23 | (unsigned int)... | 1.0 | +| test.c:446:7:450:20 | (...) | 1.57464E8 | +| test.c:446:8:446:19 | (...) | 180.0 | +| test.c:446:8:446:24 | ... * ... | 180.0 | +| test.c:446:8:446:78 | ... > ... | 1.0 | +| test.c:446:8:450:19 | ... ? ... : ... | 1.57464E8 | +| test.c:446:9:446:9 | 2 | 1.0 | +| test.c:446:9:446:9 | (unsigned int)... | 1.0 | +| test.c:446:9:446:14 | ... * ... | 180.0 | +| test.c:446:9:446:18 | ... + ... | 180.0 | +| test.c:446:13:446:14 | ip | 180.0 | +| test.c:446:18:446:18 | 1 | 1.0 | +| test.c:446:18:446:18 | (unsigned int)... | 1.0 | +| test.c:446:23:446:24 | 14 | 1.0 | +| test.c:446:23:446:24 | (unsigned int)... | 1.0 | +| test.c:446:28:446:78 | (...) | 32400.0 | +| test.c:446:29:446:30 | 17 | 1.0 | +| test.c:446:29:446:30 | (unsigned int)... | 1.0 | +| test.c:446:29:446:41 | ... * ... | 180.0 | +| test.c:446:29:446:51 | ... > ... | 1.0 | +| test.c:446:29:446:77 | ... ? ... : ... | 32400.0 | +| test.c:446:34:446:41 | (...) | 180.0 | +| test.c:446:35:446:35 | 2 | 1.0 | +| test.c:446:35:446:35 | (unsigned int)... | 1.0 | +| test.c:446:35:446:40 | ... * ... | 180.0 | +| test.c:446:39:446:40 | ip | 180.0 | +| test.c:446:45:446:46 | 17 | 1.0 | +| test.c:446:45:446:46 | (unsigned int)... | 1.0 | +| test.c:446:45:446:51 | ... * ... | 180.0 | +| test.c:446:50:446:51 | ip | 180.0 | +| test.c:446:55:446:56 | 17 | 1.0 | +| test.c:446:55:446:56 | (unsigned int)... | 1.0 | +| test.c:446:55:446:67 | ... * ... | 180.0 | +| test.c:446:60:446:67 | (...) | 180.0 | +| test.c:446:61:446:61 | 2 | 1.0 | +| test.c:446:61:446:61 | (unsigned int)... | 1.0 | +| test.c:446:61:446:66 | ... * ... | 180.0 | +| test.c:446:65:446:66 | ip | 180.0 | +| test.c:446:71:446:72 | 17 | 1.0 | +| test.c:446:71:446:72 | (unsigned int)... | 1.0 | +| test.c:446:71:446:77 | ... * ... | 180.0 | +| test.c:446:76:446:77 | ip | 180.0 | +| test.c:447:11:447:22 | (...) | 540.0 | +| test.c:447:11:447:27 | ... * ... | 540.0 | +| test.c:447:12:447:12 | 2 | 1.0 | +| test.c:447:12:447:12 | (unsigned int)... | 1.0 | +| test.c:447:12:447:17 | ... * ... | 540.0 | +| test.c:447:12:447:21 | ... + ... | 540.0 | +| test.c:447:16:447:17 | ip | 540.0 | +| test.c:447:21:447:21 | 1 | 1.0 | +| test.c:447:21:447:21 | (unsigned int)... | 1.0 | +| test.c:447:26:447:27 | 14 | 1.0 | +| test.c:447:26:447:27 | (unsigned int)... | 1.0 | +| test.c:448:11:448:12 | 14 | 1.0 | +| test.c:448:11:448:12 | (unsigned int)... | 1.0 | +| test.c:448:11:448:23 | ... * ... | 540.0 | +| test.c:448:11:448:33 | ... > ... | 1.0 | +| test.c:448:11:450:19 | ... ? ... : ... | 291600.0 | +| test.c:448:16:448:23 | (...) | 540.0 | +| test.c:448:17:448:17 | 2 | 1.0 | +| test.c:448:17:448:17 | (unsigned int)... | 1.0 | +| test.c:448:17:448:22 | ... * ... | 540.0 | +| test.c:448:21:448:22 | ip | 540.0 | +| test.c:448:27:448:28 | 17 | 1.0 | +| test.c:448:27:448:28 | (unsigned int)... | 1.0 | +| test.c:448:27:448:33 | ... * ... | 540.0 | +| test.c:448:32:448:33 | ip | 540.0 | +| test.c:449:13:449:14 | 14 | 1.0 | +| test.c:449:13:449:14 | (unsigned int)... | 1.0 | +| test.c:449:13:449:25 | ... * ... | 540.0 | +| test.c:449:18:449:25 | (...) | 540.0 | +| test.c:449:19:449:19 | 2 | 1.0 | +| test.c:449:19:449:19 | (unsigned int)... | 1.0 | +| test.c:449:19:449:24 | ... * ... | 540.0 | +| test.c:449:23:449:24 | ip | 540.0 | +| test.c:450:13:450:14 | 14 | 1.0 | +| test.c:450:13:450:14 | (unsigned int)... | 1.0 | +| test.c:450:13:450:19 | ... * ... | 540.0 | +| test.c:450:18:450:19 | ip | 540.0 | +| test.c:451:5:451:55 | (...) | 2624400.0 | +| test.c:451:6:451:7 | 14 | 1.0 | +| test.c:451:6:451:7 | (unsigned int)... | 1.0 | +| test.c:451:6:451:12 | ... * ... | 1620.0 | +| test.c:451:6:451:28 | ... > ... | 1.0 | +| test.c:451:6:451:54 | ... ? ... : ... | 2624400.0 | +| test.c:451:11:451:12 | ip | 1620.0 | +| test.c:451:16:451:23 | (...) | 1620.0 | +| test.c:451:16:451:28 | ... * ... | 1620.0 | +| test.c:451:17:451:18 | ip | 1620.0 | +| test.c:451:17:451:22 | ... + ... | 1620.0 | +| test.c:451:22:451:22 | 1 | 1.0 | +| test.c:451:22:451:22 | (unsigned int)... | 1.0 | +| test.c:451:27:451:28 | 17 | 1.0 | +| test.c:451:27:451:28 | (unsigned int)... | 1.0 | +| test.c:451:32:451:33 | 17 | 1.0 | +| test.c:451:32:451:33 | (unsigned int)... | 1.0 | +| test.c:451:32:451:38 | ... * ... | 1620.0 | +| test.c:451:37:451:38 | ip | 1620.0 | +| test.c:451:42:451:49 | (...) | 1620.0 | +| test.c:451:42:451:54 | ... * ... | 1620.0 | +| test.c:451:43:451:44 | ip | 1620.0 | +| test.c:451:43:451:48 | ... + ... | 1620.0 | +| test.c:451:48:451:48 | 1 | 1.0 | +| test.c:451:48:451:48 | (unsigned int)... | 1.0 | +| test.c:451:53:451:54 | 17 | 1.0 | +| test.c:451:53:451:54 | (unsigned int)... | 1.0 | +| test.c:452:9:452:9 | 4 | 1.0 | +| test.c:452:9:452:9 | (unsigned int)... | 1.0 | +| test.c:452:9:452:26 | ... * ... | 3240.0 | +| test.c:452:9:453:26 | ... + ... | 1.04976E7 | +| test.c:452:9:454:26 | ... + ... | 3.4012224E10 | +| test.c:452:9:459:22 | ... + ... | 3.123444729850675E22 | +| test.c:452:13:452:26 | (...) | 3240.0 | +| test.c:452:14:452:15 | ip | 3240.0 | +| test.c:452:14:452:20 | ... * ... | 3240.0 | +| test.c:452:14:452:25 | ... + ... | 3240.0 | +| test.c:452:19:452:20 | 14 | 1.0 | +| test.c:452:19:452:20 | (unsigned int)... | 1.0 | +| test.c:452:24:452:25 | 32 | 1.0 | +| test.c:452:24:452:25 | (unsigned int)... | 1.0 | +| test.c:453:9:453:26 | (...) | 3240.0 | +| test.c:453:10:453:10 | 2 | 1.0 | +| test.c:453:10:453:10 | (unsigned int)... | 1.0 | +| test.c:453:10:453:15 | ... * ... | 3240.0 | +| test.c:453:10:453:20 | ... * ... | 3240.0 | +| test.c:453:10:453:25 | ... + ... | 3240.0 | +| test.c:453:14:453:15 | ip | 3240.0 | +| test.c:453:19:453:20 | 14 | 1.0 | +| test.c:453:19:453:20 | (unsigned int)... | 1.0 | +| test.c:453:24:453:25 | 32 | 1.0 | +| test.c:453:24:453:25 | (unsigned int)... | 1.0 | +| test.c:454:9:454:9 | 2 | 1.0 | +| test.c:454:9:454:9 | (unsigned int)... | 1.0 | +| test.c:454:9:454:26 | ... * ... | 3240.0 | +| test.c:454:13:454:26 | (...) | 3240.0 | +| test.c:454:14:454:15 | ip | 3240.0 | +| test.c:454:14:454:20 | ... * ... | 3240.0 | +| test.c:454:14:454:25 | ... + ... | 3240.0 | +| test.c:454:19:454:20 | 14 | 1.0 | +| test.c:454:19:454:20 | (unsigned int)... | 1.0 | +| test.c:454:24:454:25 | 64 | 1.0 | +| test.c:454:24:454:25 | (unsigned int)... | 1.0 | +| test.c:455:9:459:22 | (...) | 9.18330048E11 | +| test.c:455:10:455:21 | (...) | 3240.0 | +| test.c:455:10:455:26 | ... * ... | 3240.0 | +| test.c:455:10:455:80 | ... > ... | 1.0 | +| test.c:455:10:459:21 | ... ? ... : ... | 9.18330048E11 | +| test.c:455:11:455:11 | 2 | 1.0 | +| test.c:455:11:455:11 | (unsigned int)... | 1.0 | +| test.c:455:11:455:16 | ... * ... | 3240.0 | +| test.c:455:11:455:20 | ... + ... | 3240.0 | +| test.c:455:15:455:16 | ip | 3240.0 | +| test.c:455:20:455:20 | 1 | 1.0 | +| test.c:455:20:455:20 | (unsigned int)... | 1.0 | +| test.c:455:25:455:26 | 14 | 1.0 | +| test.c:455:25:455:26 | (unsigned int)... | 1.0 | +| test.c:455:30:455:80 | (...) | 1.04976E7 | +| test.c:455:31:455:32 | 17 | 1.0 | +| test.c:455:31:455:32 | (unsigned int)... | 1.0 | +| test.c:455:31:455:43 | ... * ... | 3240.0 | +| test.c:455:31:455:53 | ... > ... | 1.0 | +| test.c:455:31:455:79 | ... ? ... : ... | 1.04976E7 | +| test.c:455:36:455:43 | (...) | 3240.0 | +| test.c:455:37:455:37 | 2 | 1.0 | +| test.c:455:37:455:37 | (unsigned int)... | 1.0 | +| test.c:455:37:455:42 | ... * ... | 3240.0 | +| test.c:455:41:455:42 | ip | 3240.0 | +| test.c:455:47:455:48 | 17 | 1.0 | +| test.c:455:47:455:48 | (unsigned int)... | 1.0 | +| test.c:455:47:455:53 | ... * ... | 3240.0 | +| test.c:455:52:455:53 | ip | 3240.0 | +| test.c:455:57:455:58 | 17 | 1.0 | +| test.c:455:57:455:58 | (unsigned int)... | 1.0 | +| test.c:455:57:455:69 | ... * ... | 3240.0 | +| test.c:455:62:455:69 | (...) | 3240.0 | +| test.c:455:63:455:63 | 2 | 1.0 | +| test.c:455:63:455:63 | (unsigned int)... | 1.0 | +| test.c:455:63:455:68 | ... * ... | 3240.0 | +| test.c:455:67:455:68 | ip | 3240.0 | +| test.c:455:73:455:74 | 17 | 1.0 | +| test.c:455:73:455:74 | (unsigned int)... | 1.0 | +| test.c:455:73:455:79 | ... * ... | 3240.0 | +| test.c:455:78:455:79 | ip | 3240.0 | +| test.c:456:13:456:24 | (...) | 9720.0 | +| test.c:456:13:456:29 | ... * ... | 9720.0 | +| test.c:456:14:456:14 | 2 | 1.0 | +| test.c:456:14:456:14 | (unsigned int)... | 1.0 | +| test.c:456:14:456:19 | ... * ... | 9720.0 | +| test.c:456:14:456:23 | ... + ... | 9720.0 | +| test.c:456:18:456:19 | ip | 9720.0 | +| test.c:456:23:456:23 | 1 | 1.0 | +| test.c:456:23:456:23 | (unsigned int)... | 1.0 | +| test.c:456:28:456:29 | 14 | 1.0 | +| test.c:456:28:456:29 | (unsigned int)... | 1.0 | +| test.c:457:13:457:14 | 14 | 1.0 | +| test.c:457:13:457:14 | (unsigned int)... | 1.0 | +| test.c:457:13:457:25 | ... * ... | 9720.0 | +| test.c:457:13:457:35 | ... > ... | 1.0 | +| test.c:457:13:459:21 | ... ? ... : ... | 9.44784E7 | +| test.c:457:18:457:25 | (...) | 9720.0 | +| test.c:457:19:457:19 | 2 | 1.0 | +| test.c:457:19:457:19 | (unsigned int)... | 1.0 | +| test.c:457:19:457:24 | ... * ... | 9720.0 | +| test.c:457:23:457:24 | ip | 9720.0 | +| test.c:457:29:457:30 | 17 | 1.0 | +| test.c:457:29:457:30 | (unsigned int)... | 1.0 | +| test.c:457:29:457:35 | ... * ... | 9720.0 | +| test.c:457:34:457:35 | ip | 9720.0 | +| test.c:458:15:458:16 | 14 | 1.0 | +| test.c:458:15:458:16 | (unsigned int)... | 1.0 | +| test.c:458:15:458:27 | ... * ... | 9720.0 | +| test.c:458:20:458:27 | (...) | 9720.0 | +| test.c:458:21:458:21 | 2 | 1.0 | +| test.c:458:21:458:21 | (unsigned int)... | 1.0 | +| test.c:458:21:458:26 | ... * ... | 9720.0 | +| test.c:458:25:458:26 | ip | 9720.0 | +| test.c:459:15:459:16 | 14 | 1.0 | +| test.c:459:15:459:16 | (unsigned int)... | 1.0 | +| test.c:459:15:459:21 | ... * ... | 9720.0 | +| test.c:459:20:459:21 | ip | 9720.0 | +| test.c:460:9:460:10 | 14 | 1.0 | +| test.c:460:9:460:10 | (unsigned int)... | 1.0 | +| test.c:460:9:460:15 | ... * ... | 3240.0 | +| test.c:460:9:460:31 | ... > ... | 1.0 | +| test.c:460:9:462:23 | ... ? ... : ... | 1.04976E7 | +| test.c:460:14:460:15 | ip | 3240.0 | +| test.c:460:19:460:26 | (...) | 3240.0 | +| test.c:460:19:460:31 | ... * ... | 3240.0 | +| test.c:460:20:460:21 | ip | 3240.0 | +| test.c:460:20:460:25 | ... + ... | 3240.0 | +| test.c:460:25:460:25 | 1 | 1.0 | +| test.c:460:25:460:25 | (unsigned int)... | 1.0 | +| test.c:460:30:460:31 | 17 | 1.0 | +| test.c:460:30:460:31 | (unsigned int)... | 1.0 | +| test.c:461:11:461:12 | 14 | 1.0 | +| test.c:461:11:461:12 | (unsigned int)... | 1.0 | +| test.c:461:11:461:17 | ... * ... | 3240.0 | +| test.c:461:16:461:17 | ip | 3240.0 | +| test.c:462:11:462:18 | (...) | 3240.0 | +| test.c:462:11:462:23 | ... * ... | 3240.0 | +| test.c:462:12:462:13 | ip | 3240.0 | +| test.c:462:12:462:17 | ... + ... | 3240.0 | +| test.c:462:17:462:17 | 1 | 1.0 | +| test.c:462:17:462:17 | (unsigned int)... | 1.0 | +| test.c:462:22:462:23 | 14 | 1.0 | +| test.c:462:22:462:23 | (unsigned int)... | 1.0 | +| test.c:463:9:463:9 | 2 | 1.0 | +| test.c:463:9:463:9 | (unsigned int)... | 1.0 | +| test.c:463:9:463:26 | ... * ... | 35640.0 | +| test.c:463:9:483:44 | ... + ... | 1.0783086720993898E50 | +| test.c:463:13:463:26 | (...) | 35640.0 | +| test.c:463:14:463:15 | ip | 35640.0 | +| test.c:463:14:463:20 | ... * ... | 35640.0 | +| test.c:463:14:463:25 | ... + ... | 35640.0 | +| test.c:463:19:463:20 | 14 | 1.0 | +| test.c:463:19:463:20 | (unsigned int)... | 1.0 | +| test.c:463:24:463:25 | 32 | 1.0 | +| test.c:463:24:463:25 | (unsigned int)... | 1.0 | +| test.c:464:9:483:44 | (...) | 3.0255574413563125E45 | +| test.c:464:10:464:10 | 4 | 1.0 | +| test.c:464:10:464:10 | (unsigned int)... | 1.0 | +| test.c:464:10:464:27 | ... * ... | 35640.0 | +| test.c:464:10:465:28 | ... + ... | 1.2702096E9 | +| test.c:464:10:466:28 | ... + ... | 4.5270270144E13 | +| test.c:464:10:472:24 | ... + ... | 5.533372869058992E28 | +| test.c:464:10:473:39 | ... > ... | 1.0 | +| test.c:464:10:483:43 | ... ? ... : ... | 3.0255574413563125E45 | +| test.c:464:14:464:27 | (...) | 35640.0 | +| test.c:464:15:464:16 | ip | 35640.0 | +| test.c:464:15:464:21 | ... * ... | 35640.0 | +| test.c:464:15:464:26 | ... + ... | 35640.0 | +| test.c:464:20:464:21 | 14 | 1.0 | +| test.c:464:20:464:21 | (unsigned int)... | 1.0 | +| test.c:464:25:464:26 | 32 | 1.0 | +| test.c:464:25:464:26 | (unsigned int)... | 1.0 | +| test.c:465:11:465:28 | (...) | 35640.0 | +| test.c:465:12:465:12 | 2 | 1.0 | +| test.c:465:12:465:12 | (unsigned int)... | 1.0 | +| test.c:465:12:465:17 | ... * ... | 35640.0 | +| test.c:465:12:465:22 | ... * ... | 35640.0 | +| test.c:465:12:465:27 | ... + ... | 35640.0 | +| test.c:465:16:465:17 | ip | 35640.0 | +| test.c:465:21:465:22 | 14 | 1.0 | +| test.c:465:21:465:22 | (unsigned int)... | 1.0 | +| test.c:465:26:465:27 | 32 | 1.0 | +| test.c:465:26:465:27 | (unsigned int)... | 1.0 | +| test.c:466:11:466:11 | 2 | 1.0 | +| test.c:466:11:466:11 | (unsigned int)... | 1.0 | +| test.c:466:11:466:28 | ... * ... | 35640.0 | +| test.c:466:15:466:28 | (...) | 35640.0 | +| test.c:466:16:466:17 | ip | 35640.0 | +| test.c:466:16:466:22 | ... * ... | 35640.0 | +| test.c:466:16:466:27 | ... + ... | 35640.0 | +| test.c:466:21:466:22 | 14 | 1.0 | +| test.c:466:21:466:22 | (unsigned int)... | 1.0 | +| test.c:466:26:466:27 | 64 | 1.0 | +| test.c:466:26:466:27 | (unsigned int)... | 1.0 | +| test.c:467:11:472:24 | (...) | 1.222297293888E15 | +| test.c:467:12:467:23 | (...) | 35640.0 | +| test.c:467:12:467:28 | ... * ... | 35640.0 | +| test.c:467:12:468:61 | ... > ... | 1.0 | +| test.c:467:12:472:23 | ... ? ... : ... | 1.222297293888E15 | +| test.c:467:13:467:13 | 2 | 1.0 | +| test.c:467:13:467:13 | (unsigned int)... | 1.0 | +| test.c:467:13:467:18 | ... * ... | 35640.0 | +| test.c:467:13:467:22 | ... + ... | 35640.0 | +| test.c:467:17:467:18 | ip | 35640.0 | +| test.c:467:22:467:22 | 1 | 1.0 | +| test.c:467:22:467:22 | (unsigned int)... | 1.0 | +| test.c:467:27:467:28 | 14 | 1.0 | +| test.c:467:27:467:28 | (unsigned int)... | 1.0 | +| test.c:468:11:468:61 | (...) | 1.2702096E9 | +| test.c:468:12:468:13 | 14 | 1.0 | +| test.c:468:12:468:13 | (unsigned int)... | 1.0 | +| test.c:468:12:468:24 | ... * ... | 35640.0 | +| test.c:468:12:468:34 | ... > ... | 1.0 | +| test.c:468:12:468:60 | ... ? ... : ... | 1.2702096E9 | +| test.c:468:17:468:24 | (...) | 35640.0 | +| test.c:468:18:468:18 | 2 | 1.0 | +| test.c:468:18:468:18 | (unsigned int)... | 1.0 | +| test.c:468:18:468:23 | ... * ... | 35640.0 | +| test.c:468:22:468:23 | ip | 35640.0 | +| test.c:468:28:468:29 | 17 | 1.0 | +| test.c:468:28:468:29 | (unsigned int)... | 1.0 | +| test.c:468:28:468:34 | ... * ... | 35640.0 | +| test.c:468:33:468:34 | ip | 35640.0 | +| test.c:468:38:468:39 | 17 | 1.0 | +| test.c:468:38:468:39 | (unsigned int)... | 1.0 | +| test.c:468:38:468:50 | ... * ... | 35640.0 | +| test.c:468:43:468:50 | (...) | 35640.0 | +| test.c:468:44:468:44 | 2 | 1.0 | +| test.c:468:44:468:44 | (unsigned int)... | 1.0 | +| test.c:468:44:468:49 | ... * ... | 35640.0 | +| test.c:468:48:468:49 | ip | 35640.0 | +| test.c:468:54:468:55 | 17 | 1.0 | +| test.c:468:54:468:55 | (unsigned int)... | 1.0 | +| test.c:468:54:468:60 | ... * ... | 35640.0 | +| test.c:468:59:468:60 | ip | 35640.0 | +| test.c:469:15:469:26 | (...) | 106920.0 | +| test.c:469:15:469:31 | ... * ... | 106920.0 | +| test.c:469:16:469:16 | 2 | 1.0 | +| test.c:469:16:469:16 | (unsigned int)... | 1.0 | +| test.c:469:16:469:21 | ... * ... | 106920.0 | +| test.c:469:16:469:25 | ... + ... | 106920.0 | +| test.c:469:20:469:21 | ip | 106920.0 | +| test.c:469:25:469:25 | 1 | 1.0 | +| test.c:469:25:469:25 | (unsigned int)... | 1.0 | +| test.c:469:30:469:31 | 14 | 1.0 | +| test.c:469:30:469:31 | (unsigned int)... | 1.0 | +| test.c:470:15:470:16 | 14 | 1.0 | +| test.c:470:15:470:16 | (unsigned int)... | 1.0 | +| test.c:470:15:470:27 | ... * ... | 106920.0 | +| test.c:470:15:470:37 | ... > ... | 1.0 | +| test.c:470:15:472:23 | ... ? ... : ... | 1.14318864E10 | +| test.c:470:20:470:27 | (...) | 106920.0 | +| test.c:470:21:470:21 | 2 | 1.0 | +| test.c:470:21:470:21 | (unsigned int)... | 1.0 | +| test.c:470:21:470:26 | ... * ... | 106920.0 | +| test.c:470:25:470:26 | ip | 106920.0 | +| test.c:470:31:470:32 | 17 | 1.0 | +| test.c:470:31:470:32 | (unsigned int)... | 1.0 | +| test.c:470:31:470:37 | ... * ... | 106920.0 | +| test.c:470:36:470:37 | ip | 106920.0 | +| test.c:471:17:471:18 | 14 | 1.0 | +| test.c:471:17:471:18 | (unsigned int)... | 1.0 | +| test.c:471:17:471:29 | ... * ... | 106920.0 | +| test.c:471:22:471:29 | (...) | 106920.0 | +| test.c:471:23:471:23 | 2 | 1.0 | +| test.c:471:23:471:23 | (unsigned int)... | 1.0 | +| test.c:471:23:471:28 | ... * ... | 106920.0 | +| test.c:471:27:471:28 | ip | 106920.0 | +| test.c:472:17:472:18 | 14 | 1.0 | +| test.c:472:17:472:18 | (unsigned int)... | 1.0 | +| test.c:472:17:472:23 | ... * ... | 106920.0 | +| test.c:472:22:472:23 | ip | 106920.0 | +| test.c:473:9:473:9 | 2 | 1.0 | +| test.c:473:9:473:9 | (unsigned int)... | 1.0 | +| test.c:473:9:473:14 | ... * ... | 320760.0 | +| test.c:473:9:473:19 | ... * ... | 320760.0 | +| test.c:473:9:473:39 | ... + ... | 1.028869776E11 | +| test.c:473:13:473:14 | ip | 320760.0 | +| test.c:473:18:473:19 | 14 | 1.0 | +| test.c:473:18:473:19 | (unsigned int)... | 1.0 | +| test.c:473:23:473:34 | (...) | 320760.0 | +| test.c:473:23:473:39 | ... * ... | 320760.0 | +| test.c:473:24:473:24 | 2 | 1.0 | +| test.c:473:24:473:24 | (unsigned int)... | 1.0 | +| test.c:473:24:473:29 | ... * ... | 320760.0 | +| test.c:473:24:473:33 | ... + ... | 320760.0 | +| test.c:473:28:473:29 | ip | 320760.0 | +| test.c:473:33:473:33 | 1 | 1.0 | +| test.c:473:33:473:33 | (unsigned int)... | 1.0 | +| test.c:473:38:473:39 | 17 | 1.0 | +| test.c:473:38:473:39 | (unsigned int)... | 1.0 | +| test.c:474:13:474:13 | 4 | 1.0 | +| test.c:474:13:474:13 | (unsigned int)... | 1.0 | +| test.c:474:13:474:30 | ... * ... | 320760.0 | +| test.c:474:13:475:30 | ... + ... | 1.028869776E11 | +| test.c:474:13:476:30 | ... + ... | 3.3002026934976E16 | +| test.c:474:13:482:26 | ... + ... | 2.9406612109055796E34 | +| test.c:474:17:474:30 | (...) | 320760.0 | +| test.c:474:18:474:19 | ip | 320760.0 | +| test.c:474:18:474:24 | ... * ... | 320760.0 | +| test.c:474:18:474:29 | ... + ... | 320760.0 | +| test.c:474:23:474:24 | 14 | 1.0 | +| test.c:474:23:474:24 | (unsigned int)... | 1.0 | +| test.c:474:28:474:29 | 32 | 1.0 | +| test.c:474:28:474:29 | (unsigned int)... | 1.0 | +| test.c:475:13:475:30 | (...) | 320760.0 | +| test.c:475:14:475:14 | 2 | 1.0 | +| test.c:475:14:475:14 | (unsigned int)... | 1.0 | +| test.c:475:14:475:19 | ... * ... | 320760.0 | +| test.c:475:14:475:24 | ... * ... | 320760.0 | +| test.c:475:14:475:29 | ... + ... | 320760.0 | +| test.c:475:18:475:19 | ip | 320760.0 | +| test.c:475:23:475:24 | 14 | 1.0 | +| test.c:475:23:475:24 | (unsigned int)... | 1.0 | +| test.c:475:28:475:29 | 32 | 1.0 | +| test.c:475:28:475:29 | (unsigned int)... | 1.0 | +| test.c:476:13:476:13 | 2 | 1.0 | +| test.c:476:13:476:13 | (unsigned int)... | 1.0 | +| test.c:476:13:476:30 | ... * ... | 320760.0 | +| test.c:476:17:476:30 | (...) | 320760.0 | +| test.c:476:18:476:19 | ip | 320760.0 | +| test.c:476:18:476:24 | ... * ... | 320760.0 | +| test.c:476:18:476:29 | ... + ... | 320760.0 | +| test.c:476:23:476:24 | 14 | 1.0 | +| test.c:476:23:476:24 | (unsigned int)... | 1.0 | +| test.c:476:28:476:29 | 64 | 1.0 | +| test.c:476:28:476:29 | (unsigned int)... | 1.0 | +| test.c:477:13:482:26 | (...) | 8.91054727244352E17 | +| test.c:477:14:477:25 | (...) | 320760.0 | +| test.c:477:14:477:30 | ... * ... | 320760.0 | +| test.c:477:14:478:63 | ... > ... | 1.0 | +| test.c:477:14:482:25 | ... ? ... : ... | 8.91054727244352E17 | +| test.c:477:15:477:15 | 2 | 1.0 | +| test.c:477:15:477:15 | (unsigned int)... | 1.0 | +| test.c:477:15:477:20 | ... * ... | 320760.0 | +| test.c:477:15:477:24 | ... + ... | 320760.0 | +| test.c:477:19:477:20 | ip | 320760.0 | +| test.c:477:24:477:24 | 1 | 1.0 | +| test.c:477:24:477:24 | (unsigned int)... | 1.0 | +| test.c:477:29:477:30 | 14 | 1.0 | +| test.c:477:29:477:30 | (unsigned int)... | 1.0 | +| test.c:478:13:478:63 | (...) | 1.028869776E11 | +| test.c:478:14:478:15 | 14 | 1.0 | +| test.c:478:14:478:15 | (unsigned int)... | 1.0 | +| test.c:478:14:478:26 | ... * ... | 320760.0 | +| test.c:478:14:478:36 | ... > ... | 1.0 | +| test.c:478:14:478:62 | ... ? ... : ... | 1.028869776E11 | +| test.c:478:19:478:26 | (...) | 320760.0 | +| test.c:478:20:478:20 | 2 | 1.0 | +| test.c:478:20:478:20 | (unsigned int)... | 1.0 | +| test.c:478:20:478:25 | ... * ... | 320760.0 | +| test.c:478:24:478:25 | ip | 320760.0 | +| test.c:478:30:478:31 | 17 | 1.0 | +| test.c:478:30:478:31 | (unsigned int)... | 1.0 | +| test.c:478:30:478:36 | ... * ... | 320760.0 | +| test.c:478:35:478:36 | ip | 320760.0 | +| test.c:478:40:478:41 | 17 | 1.0 | +| test.c:478:40:478:41 | (unsigned int)... | 1.0 | +| test.c:478:40:478:52 | ... * ... | 320760.0 | +| test.c:478:45:478:52 | (...) | 320760.0 | +| test.c:478:46:478:46 | 2 | 1.0 | +| test.c:478:46:478:46 | (unsigned int)... | 1.0 | +| test.c:478:46:478:51 | ... * ... | 320760.0 | +| test.c:478:50:478:51 | ip | 320760.0 | +| test.c:478:56:478:57 | 17 | 1.0 | +| test.c:478:56:478:57 | (unsigned int)... | 1.0 | +| test.c:478:56:478:62 | ... * ... | 320760.0 | +| test.c:478:61:478:62 | ip | 320760.0 | +| test.c:479:17:479:28 | (...) | 962280.0 | +| test.c:479:17:479:33 | ... * ... | 962280.0 | +| test.c:479:18:479:18 | 2 | 1.0 | +| test.c:479:18:479:18 | (unsigned int)... | 1.0 | +| test.c:479:18:479:23 | ... * ... | 962280.0 | +| test.c:479:18:479:27 | ... + ... | 962280.0 | +| test.c:479:22:479:23 | ip | 962280.0 | +| test.c:479:27:479:27 | 1 | 1.0 | +| test.c:479:27:479:27 | (unsigned int)... | 1.0 | +| test.c:479:32:479:33 | 14 | 1.0 | +| test.c:479:32:479:33 | (unsigned int)... | 1.0 | +| test.c:480:17:480:18 | 14 | 1.0 | +| test.c:480:17:480:18 | (unsigned int)... | 1.0 | +| test.c:480:17:480:29 | ... * ... | 962280.0 | +| test.c:480:17:480:39 | ... > ... | 1.0 | +| test.c:480:17:482:25 | ... ? ... : ... | 9.259827984E11 | +| test.c:480:22:480:29 | (...) | 962280.0 | +| test.c:480:23:480:23 | 2 | 1.0 | +| test.c:480:23:480:23 | (unsigned int)... | 1.0 | +| test.c:480:23:480:28 | ... * ... | 962280.0 | +| test.c:480:27:480:28 | ip | 962280.0 | +| test.c:480:33:480:34 | 17 | 1.0 | +| test.c:480:33:480:34 | (unsigned int)... | 1.0 | +| test.c:480:33:480:39 | ... * ... | 962280.0 | +| test.c:480:38:480:39 | ip | 962280.0 | +| test.c:481:19:481:20 | 14 | 1.0 | +| test.c:481:19:481:20 | (unsigned int)... | 1.0 | +| test.c:481:19:481:31 | ... * ... | 962280.0 | +| test.c:481:24:481:31 | (...) | 962280.0 | +| test.c:481:25:481:25 | 2 | 1.0 | +| test.c:481:25:481:25 | (unsigned int)... | 1.0 | +| test.c:481:25:481:30 | ... * ... | 962280.0 | +| test.c:481:29:481:30 | ip | 962280.0 | +| test.c:482:19:482:20 | 14 | 1.0 | +| test.c:482:19:482:20 | (unsigned int)... | 1.0 | +| test.c:482:19:482:25 | ... * ... | 962280.0 | +| test.c:482:24:482:25 | ip | 962280.0 | +| test.c:483:13:483:13 | 2 | 1.0 | +| test.c:483:13:483:13 | (unsigned int)... | 1.0 | +| test.c:483:13:483:18 | ... * ... | 320760.0 | +| test.c:483:13:483:23 | ... * ... | 320760.0 | +| test.c:483:13:483:43 | ... + ... | 1.028869776E11 | +| test.c:483:17:483:18 | ip | 320760.0 | +| test.c:483:22:483:23 | 14 | 1.0 | +| test.c:483:22:483:23 | (unsigned int)... | 1.0 | +| test.c:483:27:483:38 | (...) | 320760.0 | +| test.c:483:27:483:43 | ... * ... | 320760.0 | +| test.c:483:28:483:28 | 2 | 1.0 | +| test.c:483:28:483:28 | (unsigned int)... | 1.0 | +| test.c:483:28:483:33 | ... * ... | 320760.0 | +| test.c:483:28:483:37 | ... + ... | 320760.0 | +| test.c:483:32:483:33 | ip | 320760.0 | +| test.c:483:37:483:37 | 1 | 1.0 | +| test.c:483:37:483:37 | (unsigned int)... | 1.0 | +| test.c:483:42:483:43 | 17 | 1.0 | +| test.c:483:42:483:43 | (unsigned int)... | 1.0 | +| test.c:484:9:484:9 | 4 | 1.0 | +| test.c:484:9:484:9 | (unsigned int)... | 1.0 | +| test.c:484:9:484:26 | ... * ... | 35640.0 | +| test.c:484:9:485:30 | ... + ... | 1.2702096E9 | +| test.c:484:9:486:30 | ... + ... | 4.5270270144E13 | +| test.c:484:9:492:26 | ... + ... | 5.533372869058992E28 | +| test.c:484:9:493:61 | ... > ... | 1.0 | +| test.c:484:9:505:25 | ... ? ... : ... | 7.74542704987216E47 | +| test.c:484:13:484:26 | (...) | 35640.0 | +| test.c:484:14:484:15 | ip | 35640.0 | +| test.c:484:14:484:20 | ... * ... | 35640.0 | +| test.c:484:14:484:25 | ... + ... | 35640.0 | +| test.c:484:19:484:20 | 14 | 1.0 | +| test.c:484:19:484:20 | (unsigned int)... | 1.0 | +| test.c:484:24:484:25 | 32 | 1.0 | +| test.c:484:24:484:25 | (unsigned int)... | 1.0 | +| test.c:485:13:485:30 | (...) | 35640.0 | +| test.c:485:14:485:14 | 2 | 1.0 | +| test.c:485:14:485:14 | (unsigned int)... | 1.0 | +| test.c:485:14:485:19 | ... * ... | 35640.0 | +| test.c:485:14:485:24 | ... * ... | 35640.0 | +| test.c:485:14:485:29 | ... + ... | 35640.0 | +| test.c:485:18:485:19 | ip | 35640.0 | +| test.c:485:23:485:24 | 14 | 1.0 | +| test.c:485:23:485:24 | (unsigned int)... | 1.0 | +| test.c:485:28:485:29 | 32 | 1.0 | +| test.c:485:28:485:29 | (unsigned int)... | 1.0 | +| test.c:486:13:486:13 | 2 | 1.0 | +| test.c:486:13:486:13 | (unsigned int)... | 1.0 | +| test.c:486:13:486:30 | ... * ... | 35640.0 | +| test.c:486:17:486:30 | (...) | 35640.0 | +| test.c:486:18:486:19 | ip | 35640.0 | +| test.c:486:18:486:24 | ... * ... | 35640.0 | +| test.c:486:18:486:29 | ... + ... | 35640.0 | +| test.c:486:23:486:24 | 14 | 1.0 | +| test.c:486:23:486:24 | (unsigned int)... | 1.0 | +| test.c:486:28:486:29 | 64 | 1.0 | +| test.c:486:28:486:29 | (unsigned int)... | 1.0 | +| test.c:487:13:492:26 | (...) | 1.222297293888E15 | +| test.c:487:14:487:25 | (...) | 35640.0 | +| test.c:487:14:487:30 | ... * ... | 35640.0 | +| test.c:487:14:488:63 | ... > ... | 1.0 | +| test.c:487:14:492:25 | ... ? ... : ... | 1.222297293888E15 | +| test.c:487:15:487:15 | 2 | 1.0 | +| test.c:487:15:487:15 | (unsigned int)... | 1.0 | +| test.c:487:15:487:20 | ... * ... | 35640.0 | +| test.c:487:15:487:24 | ... + ... | 35640.0 | +| test.c:487:19:487:20 | ip | 35640.0 | +| test.c:487:24:487:24 | 1 | 1.0 | +| test.c:487:24:487:24 | (unsigned int)... | 1.0 | +| test.c:487:29:487:30 | 14 | 1.0 | +| test.c:487:29:487:30 | (unsigned int)... | 1.0 | +| test.c:488:13:488:63 | (...) | 1.2702096E9 | +| test.c:488:14:488:15 | 14 | 1.0 | +| test.c:488:14:488:15 | (unsigned int)... | 1.0 | +| test.c:488:14:488:26 | ... * ... | 35640.0 | +| test.c:488:14:488:36 | ... > ... | 1.0 | +| test.c:488:14:488:62 | ... ? ... : ... | 1.2702096E9 | +| test.c:488:19:488:26 | (...) | 35640.0 | +| test.c:488:20:488:20 | 2 | 1.0 | +| test.c:488:20:488:20 | (unsigned int)... | 1.0 | +| test.c:488:20:488:25 | ... * ... | 35640.0 | +| test.c:488:24:488:25 | ip | 35640.0 | +| test.c:488:30:488:31 | 17 | 1.0 | +| test.c:488:30:488:31 | (unsigned int)... | 1.0 | +| test.c:488:30:488:36 | ... * ... | 35640.0 | +| test.c:488:35:488:36 | ip | 35640.0 | +| test.c:488:40:488:41 | 17 | 1.0 | +| test.c:488:40:488:41 | (unsigned int)... | 1.0 | +| test.c:488:40:488:52 | ... * ... | 35640.0 | +| test.c:488:45:488:52 | (...) | 35640.0 | +| test.c:488:46:488:46 | 2 | 1.0 | +| test.c:488:46:488:46 | (unsigned int)... | 1.0 | +| test.c:488:46:488:51 | ... * ... | 35640.0 | +| test.c:488:50:488:51 | ip | 35640.0 | +| test.c:488:56:488:57 | 17 | 1.0 | +| test.c:488:56:488:57 | (unsigned int)... | 1.0 | +| test.c:488:56:488:62 | ... * ... | 35640.0 | +| test.c:488:61:488:62 | ip | 35640.0 | +| test.c:489:17:489:28 | (...) | 106920.0 | +| test.c:489:17:489:33 | ... * ... | 106920.0 | +| test.c:489:18:489:18 | 2 | 1.0 | +| test.c:489:18:489:18 | (unsigned int)... | 1.0 | +| test.c:489:18:489:23 | ... * ... | 106920.0 | +| test.c:489:18:489:27 | ... + ... | 106920.0 | +| test.c:489:22:489:23 | ip | 106920.0 | +| test.c:489:27:489:27 | 1 | 1.0 | +| test.c:489:27:489:27 | (unsigned int)... | 1.0 | +| test.c:489:32:489:33 | 14 | 1.0 | +| test.c:489:32:489:33 | (unsigned int)... | 1.0 | +| test.c:490:17:490:18 | 14 | 1.0 | +| test.c:490:17:490:18 | (unsigned int)... | 1.0 | +| test.c:490:17:490:29 | ... * ... | 106920.0 | +| test.c:490:17:490:39 | ... > ... | 1.0 | +| test.c:490:17:492:25 | ... ? ... : ... | 1.14318864E10 | +| test.c:490:22:490:29 | (...) | 106920.0 | +| test.c:490:23:490:23 | 2 | 1.0 | +| test.c:490:23:490:23 | (unsigned int)... | 1.0 | +| test.c:490:23:490:28 | ... * ... | 106920.0 | +| test.c:490:27:490:28 | ip | 106920.0 | +| test.c:490:33:490:34 | 17 | 1.0 | +| test.c:490:33:490:34 | (unsigned int)... | 1.0 | +| test.c:490:33:490:39 | ... * ... | 106920.0 | +| test.c:490:38:490:39 | ip | 106920.0 | +| test.c:491:19:491:20 | 14 | 1.0 | +| test.c:491:19:491:20 | (unsigned int)... | 1.0 | +| test.c:491:19:491:31 | ... * ... | 106920.0 | +| test.c:491:24:491:31 | (...) | 106920.0 | +| test.c:491:25:491:25 | 2 | 1.0 | +| test.c:491:25:491:25 | (unsigned int)... | 1.0 | +| test.c:491:25:491:30 | ... * ... | 106920.0 | +| test.c:491:29:491:30 | ip | 106920.0 | +| test.c:492:19:492:20 | 14 | 1.0 | +| test.c:492:19:492:20 | (unsigned int)... | 1.0 | +| test.c:492:19:492:25 | ... * ... | 106920.0 | +| test.c:492:24:492:25 | ip | 106920.0 | +| test.c:493:11:493:61 | (...) | 1.028869776E11 | +| test.c:493:12:493:13 | 14 | 1.0 | +| test.c:493:12:493:13 | (unsigned int)... | 1.0 | +| test.c:493:12:493:18 | ... * ... | 320760.0 | +| test.c:493:12:493:34 | ... > ... | 1.0 | +| test.c:493:12:493:60 | ... ? ... : ... | 1.028869776E11 | +| test.c:493:17:493:18 | ip | 320760.0 | +| test.c:493:22:493:29 | (...) | 320760.0 | +| test.c:493:22:493:34 | ... * ... | 320760.0 | +| test.c:493:23:493:24 | ip | 320760.0 | +| test.c:493:23:493:28 | ... + ... | 320760.0 | +| test.c:493:28:493:28 | 1 | 1.0 | +| test.c:493:28:493:28 | (unsigned int)... | 1.0 | +| test.c:493:33:493:34 | 17 | 1.0 | +| test.c:493:33:493:34 | (unsigned int)... | 1.0 | +| test.c:493:38:493:39 | 17 | 1.0 | +| test.c:493:38:493:39 | (unsigned int)... | 1.0 | +| test.c:493:38:493:44 | ... * ... | 320760.0 | +| test.c:493:43:493:44 | ip | 320760.0 | +| test.c:493:48:493:55 | (...) | 320760.0 | +| test.c:493:48:493:60 | ... * ... | 320760.0 | +| test.c:493:49:493:50 | ip | 320760.0 | +| test.c:493:49:493:54 | ... + ... | 320760.0 | +| test.c:493:54:493:54 | 1 | 1.0 | +| test.c:493:54:493:54 | (unsigned int)... | 1.0 | +| test.c:493:59:493:60 | 17 | 1.0 | +| test.c:493:59:493:60 | (unsigned int)... | 1.0 | +| test.c:494:11:494:11 | 4 | 1.0 | +| test.c:494:11:494:11 | (unsigned int)... | 1.0 | +| test.c:494:11:494:28 | ... * ... | 641520.0 | +| test.c:494:11:495:28 | ... + ... | 4.115479104E11 | +| test.c:494:11:496:28 | ... + ... | 2.64016215479808E17 | +| test.c:494:11:502:24 | ... + ... | 1.882023174979571E36 | +| test.c:494:15:494:28 | (...) | 641520.0 | +| test.c:494:16:494:17 | ip | 641520.0 | +| test.c:494:16:494:22 | ... * ... | 641520.0 | +| test.c:494:16:494:27 | ... + ... | 641520.0 | +| test.c:494:21:494:22 | 14 | 1.0 | +| test.c:494:21:494:22 | (unsigned int)... | 1.0 | +| test.c:494:26:494:27 | 32 | 1.0 | +| test.c:494:26:494:27 | (unsigned int)... | 1.0 | +| test.c:495:11:495:28 | (...) | 641520.0 | +| test.c:495:12:495:12 | 2 | 1.0 | +| test.c:495:12:495:12 | (unsigned int)... | 1.0 | +| test.c:495:12:495:17 | ... * ... | 641520.0 | +| test.c:495:12:495:22 | ... * ... | 641520.0 | +| test.c:495:12:495:27 | ... + ... | 641520.0 | +| test.c:495:16:495:17 | ip | 641520.0 | +| test.c:495:21:495:22 | 14 | 1.0 | +| test.c:495:21:495:22 | (unsigned int)... | 1.0 | +| test.c:495:26:495:27 | 32 | 1.0 | +| test.c:495:26:495:27 | (unsigned int)... | 1.0 | +| test.c:496:11:496:11 | 2 | 1.0 | +| test.c:496:11:496:11 | (unsigned int)... | 1.0 | +| test.c:496:11:496:28 | ... * ... | 641520.0 | +| test.c:496:15:496:28 | (...) | 641520.0 | +| test.c:496:16:496:17 | ip | 641520.0 | +| test.c:496:16:496:22 | ... * ... | 641520.0 | +| test.c:496:16:496:27 | ... + ... | 641520.0 | +| test.c:496:21:496:22 | 14 | 1.0 | +| test.c:496:21:496:22 | (unsigned int)... | 1.0 | +| test.c:496:26:496:27 | 64 | 1.0 | +| test.c:496:26:496:27 | (unsigned int)... | 1.0 | +| test.c:497:11:502:24 | (...) | 7.128437817954816E18 | +| test.c:497:12:497:23 | (...) | 641520.0 | +| test.c:497:12:497:28 | ... * ... | 641520.0 | +| test.c:497:12:498:61 | ... > ... | 1.0 | +| test.c:497:12:502:23 | ... ? ... : ... | 7.128437817954816E18 | +| test.c:497:13:497:13 | 2 | 1.0 | +| test.c:497:13:497:13 | (unsigned int)... | 1.0 | +| test.c:497:13:497:18 | ... * ... | 641520.0 | +| test.c:497:13:497:22 | ... + ... | 641520.0 | +| test.c:497:17:497:18 | ip | 641520.0 | +| test.c:497:22:497:22 | 1 | 1.0 | +| test.c:497:22:497:22 | (unsigned int)... | 1.0 | +| test.c:497:27:497:28 | 14 | 1.0 | +| test.c:497:27:497:28 | (unsigned int)... | 1.0 | +| test.c:498:11:498:61 | (...) | 4.115479104E11 | +| test.c:498:12:498:13 | 14 | 1.0 | +| test.c:498:12:498:13 | (unsigned int)... | 1.0 | +| test.c:498:12:498:24 | ... * ... | 641520.0 | +| test.c:498:12:498:34 | ... > ... | 1.0 | +| test.c:498:12:498:60 | ... ? ... : ... | 4.115479104E11 | +| test.c:498:17:498:24 | (...) | 641520.0 | +| test.c:498:18:498:18 | 2 | 1.0 | +| test.c:498:18:498:18 | (unsigned int)... | 1.0 | +| test.c:498:18:498:23 | ... * ... | 641520.0 | +| test.c:498:22:498:23 | ip | 641520.0 | +| test.c:498:28:498:29 | 17 | 1.0 | +| test.c:498:28:498:29 | (unsigned int)... | 1.0 | +| test.c:498:28:498:34 | ... * ... | 641520.0 | +| test.c:498:33:498:34 | ip | 641520.0 | +| test.c:498:38:498:39 | 17 | 1.0 | +| test.c:498:38:498:39 | (unsigned int)... | 1.0 | +| test.c:498:38:498:50 | ... * ... | 641520.0 | +| test.c:498:43:498:50 | (...) | 641520.0 | +| test.c:498:44:498:44 | 2 | 1.0 | +| test.c:498:44:498:44 | (unsigned int)... | 1.0 | +| test.c:498:44:498:49 | ... * ... | 641520.0 | +| test.c:498:48:498:49 | ip | 641520.0 | +| test.c:498:54:498:55 | 17 | 1.0 | +| test.c:498:54:498:55 | (unsigned int)... | 1.0 | +| test.c:498:54:498:60 | ... * ... | 641520.0 | +| test.c:498:59:498:60 | ip | 641520.0 | +| test.c:499:15:499:26 | (...) | 1924560.0 | +| test.c:499:15:499:31 | ... * ... | 1924560.0 | +| test.c:499:16:499:16 | 2 | 1.0 | +| test.c:499:16:499:16 | (unsigned int)... | 1.0 | +| test.c:499:16:499:21 | ... * ... | 1924560.0 | +| test.c:499:16:499:25 | ... + ... | 1924560.0 | +| test.c:499:20:499:21 | ip | 1924560.0 | +| test.c:499:25:499:25 | 1 | 1.0 | +| test.c:499:25:499:25 | (unsigned int)... | 1.0 | +| test.c:499:30:499:31 | 14 | 1.0 | +| test.c:499:30:499:31 | (unsigned int)... | 1.0 | +| test.c:500:15:500:16 | 14 | 1.0 | +| test.c:500:15:500:16 | (unsigned int)... | 1.0 | +| test.c:500:15:500:27 | ... * ... | 1924560.0 | +| test.c:500:15:500:37 | ... > ... | 1.0 | +| test.c:500:15:502:23 | ... ? ... : ... | 3.7039311936E12 | +| test.c:500:20:500:27 | (...) | 1924560.0 | +| test.c:500:21:500:21 | 2 | 1.0 | +| test.c:500:21:500:21 | (unsigned int)... | 1.0 | +| test.c:500:21:500:26 | ... * ... | 1924560.0 | +| test.c:500:25:500:26 | ip | 1924560.0 | +| test.c:500:31:500:32 | 17 | 1.0 | +| test.c:500:31:500:32 | (unsigned int)... | 1.0 | +| test.c:500:31:500:37 | ... * ... | 1924560.0 | +| test.c:500:36:500:37 | ip | 1924560.0 | +| test.c:501:17:501:18 | 14 | 1.0 | +| test.c:501:17:501:18 | (unsigned int)... | 1.0 | +| test.c:501:17:501:29 | ... * ... | 1924560.0 | +| test.c:501:22:501:29 | (...) | 1924560.0 | +| test.c:501:23:501:23 | 2 | 1.0 | +| test.c:501:23:501:23 | (unsigned int)... | 1.0 | +| test.c:501:23:501:28 | ... * ... | 1924560.0 | +| test.c:501:27:501:28 | ip | 1924560.0 | +| test.c:502:17:502:18 | 14 | 1.0 | +| test.c:502:17:502:18 | (unsigned int)... | 1.0 | +| test.c:502:17:502:23 | ... * ... | 1924560.0 | +| test.c:502:22:502:23 | ip | 1924560.0 | +| test.c:503:11:503:12 | 14 | 1.0 | +| test.c:503:11:503:12 | (unsigned int)... | 1.0 | +| test.c:503:11:503:17 | ... * ... | 641520.0 | +| test.c:503:11:503:33 | ... > ... | 1.0 | +| test.c:503:11:505:25 | ... ? ... : ... | 4.115479104E11 | +| test.c:503:16:503:17 | ip | 641520.0 | +| test.c:503:21:503:28 | (...) | 641520.0 | +| test.c:503:21:503:33 | ... * ... | 641520.0 | +| test.c:503:22:503:23 | ip | 641520.0 | +| test.c:503:22:503:27 | ... + ... | 641520.0 | +| test.c:503:27:503:27 | 1 | 1.0 | +| test.c:503:27:503:27 | (unsigned int)... | 1.0 | +| test.c:503:32:503:33 | 17 | 1.0 | +| test.c:503:32:503:33 | (unsigned int)... | 1.0 | +| test.c:504:13:504:14 | 14 | 1.0 | +| test.c:504:13:504:14 | (unsigned int)... | 1.0 | +| test.c:504:13:504:19 | ... * ... | 641520.0 | +| test.c:504:18:504:19 | ip | 641520.0 | +| test.c:505:13:505:20 | (...) | 641520.0 | +| test.c:505:13:505:25 | ... * ... | 641520.0 | +| test.c:505:14:505:15 | ip | 641520.0 | +| test.c:505:14:505:19 | ... + ... | 641520.0 | +| test.c:505:19:505:19 | 1 | 1.0 | +| test.c:505:19:505:19 | (unsigned int)... | 1.0 | +| test.c:505:24:505:25 | 14 | 1.0 | +| test.c:505:24:505:25 | (unsigned int)... | 1.0 | +| test.c:506:9:506:10 | 14 | 1.0 | +| test.c:506:9:506:10 | (unsigned int)... | 1.0 | +| test.c:506:9:506:15 | ... * ... | 1.026432E7 | +| test.c:506:9:506:59 | ... > ... | 1.0 | +| test.c:506:9:508:51 | ... ? ... : ... | 1.0814104186052936E21 | +| test.c:506:14:506:15 | ip | 1.026432E7 | +| test.c:506:19:506:30 | (...) | 1.026432E7 | +| test.c:506:19:506:35 | ... * ... | 1.026432E7 | +| test.c:506:19:506:59 | ... + ... | 1.053562650624E14 | +| test.c:506:20:506:20 | 2 | 1.0 | +| test.c:506:20:506:20 | (unsigned int)... | 1.0 | +| test.c:506:20:506:25 | ... * ... | 1.026432E7 | +| test.c:506:20:506:29 | ... + ... | 1.026432E7 | +| test.c:506:24:506:25 | ip | 1.026432E7 | +| test.c:506:29:506:29 | 1 | 1.0 | +| test.c:506:29:506:29 | (unsigned int)... | 1.0 | +| test.c:506:34:506:35 | 17 | 1.0 | +| test.c:506:34:506:35 | (unsigned int)... | 1.0 | +| test.c:506:39:506:54 | (...) | 1.026432E7 | +| test.c:506:39:506:59 | ... * ... | 1.026432E7 | +| test.c:506:40:506:40 | 2 | 1.0 | +| test.c:506:40:506:40 | (unsigned int)... | 1.0 | +| test.c:506:40:506:45 | ... * ... | 1.026432E7 | +| test.c:506:40:506:49 | ... + ... | 1.026432E7 | +| test.c:506:40:506:53 | ... + ... | 1.026432E7 | +| test.c:506:44:506:45 | ip | 1.026432E7 | +| test.c:506:49:506:49 | 1 | 1.0 | +| test.c:506:49:506:49 | (unsigned int)... | 1.0 | +| test.c:506:53:506:53 | 1 | 1.0 | +| test.c:506:53:506:53 | (unsigned int)... | 1.0 | +| test.c:506:58:506:59 | 17 | 1.0 | +| test.c:506:58:506:59 | (unsigned int)... | 1.0 | +| test.c:507:11:507:12 | 14 | 1.0 | +| test.c:507:11:507:12 | (unsigned int)... | 1.0 | +| test.c:507:11:507:17 | ... * ... | 1.026432E7 | +| test.c:507:16:507:17 | ip | 1.026432E7 | +| test.c:508:11:508:22 | (...) | 1.026432E7 | +| test.c:508:11:508:27 | ... * ... | 1.026432E7 | +| test.c:508:11:508:51 | ... + ... | 1.053562650624E14 | +| test.c:508:12:508:12 | 2 | 1.0 | +| test.c:508:12:508:12 | (unsigned int)... | 1.0 | +| test.c:508:12:508:17 | ... * ... | 1.026432E7 | +| test.c:508:12:508:21 | ... + ... | 1.026432E7 | +| test.c:508:16:508:17 | ip | 1.026432E7 | +| test.c:508:21:508:21 | 1 | 1.0 | +| test.c:508:21:508:21 | (unsigned int)... | 1.0 | +| test.c:508:26:508:27 | 14 | 1.0 | +| test.c:508:26:508:27 | (unsigned int)... | 1.0 | +| test.c:508:31:508:46 | (...) | 1.026432E7 | +| test.c:508:31:508:51 | ... * ... | 1.026432E7 | +| test.c:508:32:508:32 | 2 | 1.0 | +| test.c:508:32:508:32 | (unsigned int)... | 1.0 | +| test.c:508:32:508:37 | ... * ... | 1.026432E7 | +| test.c:508:32:508:41 | ... + ... | 1.026432E7 | +| test.c:508:32:508:45 | ... + ... | 1.026432E7 | +| test.c:508:36:508:37 | ip | 1.026432E7 | +| test.c:508:41:508:41 | 1 | 1.0 | +| test.c:508:41:508:41 | (unsigned int)... | 1.0 | +| test.c:508:45:508:45 | 1 | 1.0 | +| test.c:508:45:508:45 | (unsigned int)... | 1.0 | +| test.c:508:50:508:51 | 17 | 1.0 | +| test.c:508:50:508:51 | (unsigned int)... | 1.0 | +| test.c:509:9:509:9 | 2 | 1.0 | +| test.c:509:9:509:9 | (unsigned int)... | 1.0 | +| test.c:509:9:509:26 | ... * ... | 1.026432E7 | +| test.c:509:9:529:48 | ... + ... | 1.4698583632369078E72 | +| test.c:509:9:551:30 | ... > ... | 1.0 | +| test.c:509:9:594:27 | ... ? ... : ... | 9.928683178071796E211 | +| test.c:509:13:509:26 | (...) | 1.026432E7 | +| test.c:509:14:509:15 | ip | 1.026432E7 | +| test.c:509:14:509:20 | ... * ... | 1.026432E7 | +| test.c:509:14:509:25 | ... + ... | 1.026432E7 | +| test.c:509:19:509:20 | 14 | 1.0 | +| test.c:509:19:509:20 | (unsigned int)... | 1.0 | +| test.c:509:24:509:25 | 32 | 1.0 | +| test.c:509:24:509:25 | (unsigned int)... | 1.0 | +| test.c:510:13:529:48 | (...) | 1.4320075399411826E65 | +| test.c:510:14:510:14 | 4 | 1.0 | +| test.c:510:14:510:14 | (unsigned int)... | 1.0 | +| test.c:510:14:510:31 | ... * ... | 1.026432E7 | +| test.c:510:14:511:32 | ... + ... | 1.053562650624E14 | +| test.c:510:14:512:32 | ... + ... | 1.0814104186052936E21 | +| test.c:510:14:518:28 | ... + ... | 3.1575109323638057E43 | +| test.c:510:14:519:43 | ... > ... | 1.0 | +| test.c:510:14:529:47 | ... ? ... : ... | 1.4320075399411826E65 | +| test.c:510:18:510:31 | (...) | 1.026432E7 | +| test.c:510:19:510:20 | ip | 1.026432E7 | +| test.c:510:19:510:25 | ... * ... | 1.026432E7 | +| test.c:510:19:510:30 | ... + ... | 1.026432E7 | +| test.c:510:24:510:25 | 14 | 1.0 | +| test.c:510:24:510:25 | (unsigned int)... | 1.0 | +| test.c:510:29:510:30 | 32 | 1.0 | +| test.c:510:29:510:30 | (unsigned int)... | 1.0 | +| test.c:511:15:511:32 | (...) | 1.026432E7 | +| test.c:511:16:511:16 | 2 | 1.0 | +| test.c:511:16:511:16 | (unsigned int)... | 1.0 | +| test.c:511:16:511:21 | ... * ... | 1.026432E7 | +| test.c:511:16:511:26 | ... * ... | 1.026432E7 | +| test.c:511:16:511:31 | ... + ... | 1.026432E7 | +| test.c:511:20:511:21 | ip | 1.026432E7 | +| test.c:511:25:511:26 | 14 | 1.0 | +| test.c:511:25:511:26 | (unsigned int)... | 1.0 | +| test.c:511:30:511:31 | 32 | 1.0 | +| test.c:511:30:511:31 | (unsigned int)... | 1.0 | +| test.c:512:15:512:15 | 2 | 1.0 | +| test.c:512:15:512:15 | (unsigned int)... | 1.0 | +| test.c:512:15:512:32 | ... * ... | 1.026432E7 | +| test.c:512:19:512:32 | (...) | 1.026432E7 | +| test.c:512:20:512:21 | ip | 1.026432E7 | +| test.c:512:20:512:26 | ... * ... | 1.026432E7 | +| test.c:512:20:512:31 | ... + ... | 1.026432E7 | +| test.c:512:25:512:26 | 14 | 1.0 | +| test.c:512:25:512:26 | (unsigned int)... | 1.0 | +| test.c:512:30:512:31 | 64 | 1.0 | +| test.c:512:30:512:31 | (unsigned int)... | 1.0 | +| test.c:513:15:518:28 | (...) | 2.9198081302342926E22 | +| test.c:513:16:513:27 | (...) | 1.026432E7 | +| test.c:513:16:513:32 | ... * ... | 1.026432E7 | +| test.c:513:16:514:65 | ... > ... | 1.0 | +| test.c:513:16:518:27 | ... ? ... : ... | 2.9198081302342926E22 | +| test.c:513:17:513:17 | 2 | 1.0 | +| test.c:513:17:513:17 | (unsigned int)... | 1.0 | +| test.c:513:17:513:22 | ... * ... | 1.026432E7 | +| test.c:513:17:513:26 | ... + ... | 1.026432E7 | +| test.c:513:21:513:22 | ip | 1.026432E7 | +| test.c:513:26:513:26 | 1 | 1.0 | +| test.c:513:26:513:26 | (unsigned int)... | 1.0 | +| test.c:513:31:513:32 | 14 | 1.0 | +| test.c:513:31:513:32 | (unsigned int)... | 1.0 | +| test.c:514:15:514:65 | (...) | 1.053562650624E14 | +| test.c:514:16:514:17 | 14 | 1.0 | +| test.c:514:16:514:17 | (unsigned int)... | 1.0 | +| test.c:514:16:514:28 | ... * ... | 1.026432E7 | +| test.c:514:16:514:38 | ... > ... | 1.0 | +| test.c:514:16:514:64 | ... ? ... : ... | 1.053562650624E14 | +| test.c:514:21:514:28 | (...) | 1.026432E7 | +| test.c:514:22:514:22 | 2 | 1.0 | +| test.c:514:22:514:22 | (unsigned int)... | 1.0 | +| test.c:514:22:514:27 | ... * ... | 1.026432E7 | +| test.c:514:26:514:27 | ip | 1.026432E7 | +| test.c:514:32:514:33 | 17 | 1.0 | +| test.c:514:32:514:33 | (unsigned int)... | 1.0 | +| test.c:514:32:514:38 | ... * ... | 1.026432E7 | +| test.c:514:37:514:38 | ip | 1.026432E7 | +| test.c:514:42:514:43 | 17 | 1.0 | +| test.c:514:42:514:43 | (unsigned int)... | 1.0 | +| test.c:514:42:514:54 | ... * ... | 1.026432E7 | +| test.c:514:47:514:54 | (...) | 1.026432E7 | +| test.c:514:48:514:48 | 2 | 1.0 | +| test.c:514:48:514:48 | (unsigned int)... | 1.0 | +| test.c:514:48:514:53 | ... * ... | 1.026432E7 | +| test.c:514:52:514:53 | ip | 1.026432E7 | +| test.c:514:58:514:59 | 17 | 1.0 | +| test.c:514:58:514:59 | (unsigned int)... | 1.0 | +| test.c:514:58:514:64 | ... * ... | 1.026432E7 | +| test.c:514:63:514:64 | ip | 1.026432E7 | +| test.c:515:19:515:30 | (...) | 3.079296E7 | +| test.c:515:19:515:35 | ... * ... | 3.079296E7 | +| test.c:515:20:515:20 | 2 | 1.0 | +| test.c:515:20:515:20 | (unsigned int)... | 1.0 | +| test.c:515:20:515:25 | ... * ... | 3.079296E7 | +| test.c:515:20:515:29 | ... + ... | 3.079296E7 | +| test.c:515:24:515:25 | ip | 3.079296E7 | +| test.c:515:29:515:29 | 1 | 1.0 | +| test.c:515:29:515:29 | (unsigned int)... | 1.0 | +| test.c:515:34:515:35 | 14 | 1.0 | +| test.c:515:34:515:35 | (unsigned int)... | 1.0 | +| test.c:516:19:516:20 | 14 | 1.0 | +| test.c:516:19:516:20 | (unsigned int)... | 1.0 | +| test.c:516:19:516:31 | ... * ... | 3.079296E7 | +| test.c:516:19:516:41 | ... > ... | 1.0 | +| test.c:516:19:518:27 | ... ? ... : ... | 9.482063855616E14 | +| test.c:516:24:516:31 | (...) | 3.079296E7 | +| test.c:516:25:516:25 | 2 | 1.0 | +| test.c:516:25:516:25 | (unsigned int)... | 1.0 | +| test.c:516:25:516:30 | ... * ... | 3.079296E7 | +| test.c:516:29:516:30 | ip | 3.079296E7 | +| test.c:516:35:516:36 | 17 | 1.0 | +| test.c:516:35:516:36 | (unsigned int)... | 1.0 | +| test.c:516:35:516:41 | ... * ... | 3.079296E7 | +| test.c:516:40:516:41 | ip | 3.079296E7 | +| test.c:517:21:517:22 | 14 | 1.0 | +| test.c:517:21:517:22 | (unsigned int)... | 1.0 | +| test.c:517:21:517:33 | ... * ... | 3.079296E7 | +| test.c:517:26:517:33 | (...) | 3.079296E7 | +| test.c:517:27:517:27 | 2 | 1.0 | +| test.c:517:27:517:27 | (unsigned int)... | 1.0 | +| test.c:517:27:517:32 | ... * ... | 3.079296E7 | +| test.c:517:31:517:32 | ip | 3.079296E7 | +| test.c:518:21:518:22 | 14 | 1.0 | +| test.c:518:21:518:22 | (unsigned int)... | 1.0 | +| test.c:518:21:518:27 | ... * ... | 3.079296E7 | +| test.c:518:26:518:27 | ip | 3.079296E7 | +| test.c:519:13:519:13 | 2 | 1.0 | +| test.c:519:13:519:13 | (unsigned int)... | 1.0 | +| test.c:519:13:519:18 | ... * ... | 9.237888E7 | +| test.c:519:13:519:23 | ... * ... | 9.237888E7 | +| test.c:519:13:519:43 | ... + ... | 8.5338574700544E15 | +| test.c:519:17:519:18 | ip | 9.237888E7 | +| test.c:519:22:519:23 | 14 | 1.0 | +| test.c:519:22:519:23 | (unsigned int)... | 1.0 | +| test.c:519:27:519:38 | (...) | 9.237888E7 | +| test.c:519:27:519:43 | ... * ... | 9.237888E7 | +| test.c:519:28:519:28 | 2 | 1.0 | +| test.c:519:28:519:28 | (unsigned int)... | 1.0 | +| test.c:519:28:519:33 | ... * ... | 9.237888E7 | +| test.c:519:28:519:37 | ... + ... | 9.237888E7 | +| test.c:519:32:519:33 | ip | 9.237888E7 | +| test.c:519:37:519:37 | 1 | 1.0 | +| test.c:519:37:519:37 | (unsigned int)... | 1.0 | +| test.c:519:42:519:43 | 17 | 1.0 | +| test.c:519:42:519:43 | (unsigned int)... | 1.0 | +| test.c:520:17:520:17 | 4 | 1.0 | +| test.c:520:17:520:17 | (unsigned int)... | 1.0 | +| test.c:520:17:520:34 | ... * ... | 9.237888E7 | +| test.c:520:17:521:34 | ... + ... | 8.5338574700544E15 | +| test.c:520:17:522:34 | ... + ... | 7.88348195163259E23 | +| test.c:520:17:528:30 | ... + ... | 1.6780307674063534E49 | +| test.c:520:21:520:34 | (...) | 9.237888E7 | +| test.c:520:22:520:23 | ip | 9.237888E7 | +| test.c:520:22:520:28 | ... * ... | 9.237888E7 | +| test.c:520:22:520:33 | ... + ... | 9.237888E7 | +| test.c:520:27:520:28 | 14 | 1.0 | +| test.c:520:27:520:28 | (unsigned int)... | 1.0 | +| test.c:520:32:520:33 | 32 | 1.0 | +| test.c:520:32:520:33 | (unsigned int)... | 1.0 | +| test.c:521:17:521:34 | (...) | 9.237888E7 | +| test.c:521:18:521:18 | 2 | 1.0 | +| test.c:521:18:521:18 | (unsigned int)... | 1.0 | +| test.c:521:18:521:23 | ... * ... | 9.237888E7 | +| test.c:521:18:521:28 | ... * ... | 9.237888E7 | +| test.c:521:18:521:33 | ... + ... | 9.237888E7 | +| test.c:521:22:521:23 | ip | 9.237888E7 | +| test.c:521:27:521:28 | 14 | 1.0 | +| test.c:521:27:521:28 | (unsigned int)... | 1.0 | +| test.c:521:32:521:33 | 32 | 1.0 | +| test.c:521:32:521:33 | (unsigned int)... | 1.0 | +| test.c:522:17:522:17 | 2 | 1.0 | +| test.c:522:17:522:17 | (unsigned int)... | 1.0 | +| test.c:522:17:522:34 | ... * ... | 9.237888E7 | +| test.c:522:21:522:34 | (...) | 9.237888E7 | +| test.c:522:22:522:23 | ip | 9.237888E7 | +| test.c:522:22:522:28 | ... * ... | 9.237888E7 | +| test.c:522:22:522:33 | ... + ... | 9.237888E7 | +| test.c:522:27:522:28 | 14 | 1.0 | +| test.c:522:27:522:28 | (unsigned int)... | 1.0 | +| test.c:522:32:522:33 | 64 | 1.0 | +| test.c:522:32:522:33 | (unsigned int)... | 1.0 | +| test.c:523:17:528:30 | (...) | 2.1285401269407994E25 | +| test.c:523:18:523:29 | (...) | 9.237888E7 | +| test.c:523:18:523:34 | ... * ... | 9.237888E7 | +| test.c:523:18:524:67 | ... > ... | 1.0 | +| test.c:523:18:528:29 | ... ? ... : ... | 2.1285401269407994E25 | +| test.c:523:19:523:19 | 2 | 1.0 | +| test.c:523:19:523:19 | (unsigned int)... | 1.0 | +| test.c:523:19:523:24 | ... * ... | 9.237888E7 | +| test.c:523:19:523:28 | ... + ... | 9.237888E7 | +| test.c:523:23:523:24 | ip | 9.237888E7 | +| test.c:523:28:523:28 | 1 | 1.0 | +| test.c:523:28:523:28 | (unsigned int)... | 1.0 | +| test.c:523:33:523:34 | 14 | 1.0 | +| test.c:523:33:523:34 | (unsigned int)... | 1.0 | +| test.c:524:17:524:67 | (...) | 8.5338574700544E15 | +| test.c:524:18:524:19 | 14 | 1.0 | +| test.c:524:18:524:19 | (unsigned int)... | 1.0 | +| test.c:524:18:524:30 | ... * ... | 9.237888E7 | +| test.c:524:18:524:40 | ... > ... | 1.0 | +| test.c:524:18:524:66 | ... ? ... : ... | 8.5338574700544E15 | +| test.c:524:23:524:30 | (...) | 9.237888E7 | +| test.c:524:24:524:24 | 2 | 1.0 | +| test.c:524:24:524:24 | (unsigned int)... | 1.0 | +| test.c:524:24:524:29 | ... * ... | 9.237888E7 | +| test.c:524:28:524:29 | ip | 9.237888E7 | +| test.c:524:34:524:35 | 17 | 1.0 | +| test.c:524:34:524:35 | (unsigned int)... | 1.0 | +| test.c:524:34:524:40 | ... * ... | 9.237888E7 | +| test.c:524:39:524:40 | ip | 9.237888E7 | +| test.c:524:44:524:45 | 17 | 1.0 | +| test.c:524:44:524:45 | (unsigned int)... | 1.0 | +| test.c:524:44:524:56 | ... * ... | 9.237888E7 | +| test.c:524:49:524:56 | (...) | 9.237888E7 | +| test.c:524:50:524:50 | 2 | 1.0 | +| test.c:524:50:524:50 | (unsigned int)... | 1.0 | +| test.c:524:50:524:55 | ... * ... | 9.237888E7 | +| test.c:524:54:524:55 | ip | 9.237888E7 | +| test.c:524:60:524:61 | 17 | 1.0 | +| test.c:524:60:524:61 | (unsigned int)... | 1.0 | +| test.c:524:60:524:66 | ... * ... | 9.237888E7 | +| test.c:524:65:524:66 | ip | 9.237888E7 | +| test.c:525:21:525:32 | (...) | 2.7713664E8 | +| test.c:525:21:525:37 | ... * ... | 2.7713664E8 | +| test.c:525:22:525:22 | 2 | 1.0 | +| test.c:525:22:525:22 | (unsigned int)... | 1.0 | +| test.c:525:22:525:27 | ... * ... | 2.7713664E8 | +| test.c:525:22:525:31 | ... + ... | 2.7713664E8 | +| test.c:525:26:525:27 | ip | 2.7713664E8 | +| test.c:525:31:525:31 | 1 | 1.0 | +| test.c:525:31:525:31 | (unsigned int)... | 1.0 | +| test.c:525:36:525:37 | 14 | 1.0 | +| test.c:525:36:525:37 | (unsigned int)... | 1.0 | +| test.c:526:21:526:22 | 14 | 1.0 | +| test.c:526:21:526:22 | (unsigned int)... | 1.0 | +| test.c:526:21:526:33 | ... * ... | 2.7713664E8 | +| test.c:526:21:526:43 | ... > ... | 1.0 | +| test.c:526:21:528:29 | ... ? ... : ... | 7.68047172304896E16 | +| test.c:526:26:526:33 | (...) | 2.7713664E8 | +| test.c:526:27:526:27 | 2 | 1.0 | +| test.c:526:27:526:27 | (unsigned int)... | 1.0 | +| test.c:526:27:526:32 | ... * ... | 2.7713664E8 | +| test.c:526:31:526:32 | ip | 2.7713664E8 | +| test.c:526:37:526:38 | 17 | 1.0 | +| test.c:526:37:526:38 | (unsigned int)... | 1.0 | +| test.c:526:37:526:43 | ... * ... | 2.7713664E8 | +| test.c:526:42:526:43 | ip | 2.7713664E8 | +| test.c:527:23:527:24 | 14 | 1.0 | +| test.c:527:23:527:24 | (unsigned int)... | 1.0 | +| test.c:527:23:527:35 | ... * ... | 2.7713664E8 | +| test.c:527:28:527:35 | (...) | 2.7713664E8 | +| test.c:527:29:527:29 | 2 | 1.0 | +| test.c:527:29:527:29 | (unsigned int)... | 1.0 | +| test.c:527:29:527:34 | ... * ... | 2.7713664E8 | +| test.c:527:33:527:34 | ip | 2.7713664E8 | +| test.c:528:23:528:24 | 14 | 1.0 | +| test.c:528:23:528:24 | (unsigned int)... | 1.0 | +| test.c:528:23:528:29 | ... * ... | 2.7713664E8 | +| test.c:528:28:528:29 | ip | 2.7713664E8 | +| test.c:529:17:529:17 | 2 | 1.0 | +| test.c:529:17:529:17 | (unsigned int)... | 1.0 | +| test.c:529:17:529:22 | ... * ... | 9.237888E7 | +| test.c:529:17:529:27 | ... * ... | 9.237888E7 | +| test.c:529:17:529:47 | ... + ... | 8.5338574700544E15 | +| test.c:529:21:529:22 | ip | 9.237888E7 | +| test.c:529:26:529:27 | 14 | 1.0 | +| test.c:529:26:529:27 | (unsigned int)... | 1.0 | +| test.c:529:31:529:42 | (...) | 9.237888E7 | +| test.c:529:31:529:47 | ... * ... | 9.237888E7 | +| test.c:529:32:529:32 | 2 | 1.0 | +| test.c:529:32:529:32 | (unsigned int)... | 1.0 | +| test.c:529:32:529:37 | ... * ... | 9.237888E7 | +| test.c:529:32:529:41 | ... + ... | 9.237888E7 | +| test.c:529:36:529:37 | ip | 9.237888E7 | +| test.c:529:41:529:41 | 1 | 1.0 | +| test.c:529:41:529:41 | (unsigned int)... | 1.0 | +| test.c:529:46:529:47 | 17 | 1.0 | +| test.c:529:46:529:47 | (unsigned int)... | 1.0 | +| test.c:530:11:551:30 | (...) | 1.5780666634686576E83 | +| test.c:530:12:530:12 | 4 | 1.0 | +| test.c:530:12:530:12 | (unsigned int)... | 1.0 | +| test.c:530:12:530:29 | ... * ... | 9.237888E8 | +| test.c:530:12:531:30 | ... + ... | 8.5338574700544E17 | +| test.c:530:12:532:30 | ... + ... | 7.88348195163259E26 | +| test.c:530:12:538:26 | ... + ... | 1.6780307674063535E55 | +| test.c:530:12:539:61 | ... > ... | 1.0 | +| test.c:530:12:551:29 | ... ? ... : ... | 1.5780666634686576E83 | +| test.c:530:16:530:29 | (...) | 9.237888E8 | +| test.c:530:17:530:18 | ip | 9.237888E8 | +| test.c:530:17:530:23 | ... * ... | 9.237888E8 | +| test.c:530:17:530:28 | ... + ... | 9.237888E8 | +| test.c:530:22:530:23 | 14 | 1.0 | +| test.c:530:22:530:23 | (unsigned int)... | 1.0 | +| test.c:530:27:530:28 | 32 | 1.0 | +| test.c:530:27:530:28 | (unsigned int)... | 1.0 | +| test.c:531:13:531:30 | (...) | 9.237888E8 | +| test.c:531:14:531:14 | 2 | 1.0 | +| test.c:531:14:531:14 | (unsigned int)... | 1.0 | +| test.c:531:14:531:19 | ... * ... | 9.237888E8 | +| test.c:531:14:531:24 | ... * ... | 9.237888E8 | +| test.c:531:14:531:29 | ... + ... | 9.237888E8 | +| test.c:531:18:531:19 | ip | 9.237888E8 | +| test.c:531:23:531:24 | 14 | 1.0 | +| test.c:531:23:531:24 | (unsigned int)... | 1.0 | +| test.c:531:28:531:29 | 32 | 1.0 | +| test.c:531:28:531:29 | (unsigned int)... | 1.0 | +| test.c:532:13:532:13 | 2 | 1.0 | +| test.c:532:13:532:13 | (unsigned int)... | 1.0 | +| test.c:532:13:532:30 | ... * ... | 9.237888E8 | +| test.c:532:17:532:30 | (...) | 9.237888E8 | +| test.c:532:18:532:19 | ip | 9.237888E8 | +| test.c:532:18:532:24 | ... * ... | 9.237888E8 | +| test.c:532:18:532:29 | ... + ... | 9.237888E8 | +| test.c:532:23:532:24 | 14 | 1.0 | +| test.c:532:23:532:24 | (unsigned int)... | 1.0 | +| test.c:532:28:532:29 | 64 | 1.0 | +| test.c:532:28:532:29 | (unsigned int)... | 1.0 | +| test.c:533:13:538:26 | (...) | 2.1285401269407994E28 | +| test.c:533:14:533:25 | (...) | 9.237888E8 | +| test.c:533:14:533:30 | ... * ... | 9.237888E8 | +| test.c:533:14:534:63 | ... > ... | 1.0 | +| test.c:533:14:538:25 | ... ? ... : ... | 2.1285401269407994E28 | +| test.c:533:15:533:15 | 2 | 1.0 | +| test.c:533:15:533:15 | (unsigned int)... | 1.0 | +| test.c:533:15:533:20 | ... * ... | 9.237888E8 | +| test.c:533:15:533:24 | ... + ... | 9.237888E8 | +| test.c:533:19:533:20 | ip | 9.237888E8 | +| test.c:533:24:533:24 | 1 | 1.0 | +| test.c:533:24:533:24 | (unsigned int)... | 1.0 | +| test.c:533:29:533:30 | 14 | 1.0 | +| test.c:533:29:533:30 | (unsigned int)... | 1.0 | +| test.c:534:13:534:63 | (...) | 8.5338574700544E17 | +| test.c:534:14:534:15 | 14 | 1.0 | +| test.c:534:14:534:15 | (unsigned int)... | 1.0 | +| test.c:534:14:534:26 | ... * ... | 9.237888E8 | +| test.c:534:14:534:36 | ... > ... | 1.0 | +| test.c:534:14:534:62 | ... ? ... : ... | 8.5338574700544E17 | +| test.c:534:19:534:26 | (...) | 9.237888E8 | +| test.c:534:20:534:20 | 2 | 1.0 | +| test.c:534:20:534:20 | (unsigned int)... | 1.0 | +| test.c:534:20:534:25 | ... * ... | 9.237888E8 | +| test.c:534:24:534:25 | ip | 9.237888E8 | +| test.c:534:30:534:31 | 17 | 1.0 | +| test.c:534:30:534:31 | (unsigned int)... | 1.0 | +| test.c:534:30:534:36 | ... * ... | 9.237888E8 | +| test.c:534:35:534:36 | ip | 9.237888E8 | +| test.c:534:40:534:41 | 17 | 1.0 | +| test.c:534:40:534:41 | (unsigned int)... | 1.0 | +| test.c:534:40:534:52 | ... * ... | 9.237888E8 | +| test.c:534:45:534:52 | (...) | 9.237888E8 | +| test.c:534:46:534:46 | 2 | 1.0 | +| test.c:534:46:534:46 | (unsigned int)... | 1.0 | +| test.c:534:46:534:51 | ... * ... | 9.237888E8 | +| test.c:534:50:534:51 | ip | 9.237888E8 | +| test.c:534:56:534:57 | 17 | 1.0 | +| test.c:534:56:534:57 | (unsigned int)... | 1.0 | +| test.c:534:56:534:62 | ... * ... | 9.237888E8 | +| test.c:534:61:534:62 | ip | 9.237888E8 | +| test.c:535:17:535:28 | (...) | 2.7713664E9 | +| test.c:535:17:535:33 | ... * ... | 2.7713664E9 | +| test.c:535:18:535:18 | 2 | 1.0 | +| test.c:535:18:535:18 | (unsigned int)... | 1.0 | +| test.c:535:18:535:23 | ... * ... | 2.7713664E9 | +| test.c:535:18:535:27 | ... + ... | 2.7713664E9 | +| test.c:535:22:535:23 | ip | 2.7713664E9 | +| test.c:535:27:535:27 | 1 | 1.0 | +| test.c:535:27:535:27 | (unsigned int)... | 1.0 | +| test.c:535:32:535:33 | 14 | 1.0 | +| test.c:535:32:535:33 | (unsigned int)... | 1.0 | +| test.c:536:17:536:18 | 14 | 1.0 | +| test.c:536:17:536:18 | (unsigned int)... | 1.0 | +| test.c:536:17:536:29 | ... * ... | 2.7713664E9 | +| test.c:536:17:536:39 | ... > ... | 1.0 | +| test.c:536:17:538:25 | ... ? ... : ... | 7.68047172304896E18 | +| test.c:536:22:536:29 | (...) | 2.7713664E9 | +| test.c:536:23:536:23 | 2 | 1.0 | +| test.c:536:23:536:23 | (unsigned int)... | 1.0 | +| test.c:536:23:536:28 | ... * ... | 2.7713664E9 | +| test.c:536:27:536:28 | ip | 2.7713664E9 | +| test.c:536:33:536:34 | 17 | 1.0 | +| test.c:536:33:536:34 | (unsigned int)... | 1.0 | +| test.c:536:33:536:39 | ... * ... | 2.7713664E9 | +| test.c:536:38:536:39 | ip | 2.7713664E9 | +| test.c:537:19:537:20 | 14 | 1.0 | +| test.c:537:19:537:20 | (unsigned int)... | 1.0 | +| test.c:537:19:537:31 | ... * ... | 2.7713664E9 | +| test.c:537:24:537:31 | (...) | 2.7713664E9 | +| test.c:537:25:537:25 | 2 | 1.0 | +| test.c:537:25:537:25 | (unsigned int)... | 1.0 | +| test.c:537:25:537:30 | ... * ... | 2.7713664E9 | +| test.c:537:29:537:30 | ip | 2.7713664E9 | +| test.c:538:19:538:20 | 14 | 1.0 | +| test.c:538:19:538:20 | (unsigned int)... | 1.0 | +| test.c:538:19:538:25 | ... * ... | 2.7713664E9 | +| test.c:538:24:538:25 | ip | 2.7713664E9 | +| test.c:539:11:539:61 | (...) | 6.912424550744064E19 | +| test.c:539:12:539:13 | 14 | 1.0 | +| test.c:539:12:539:13 | (unsigned int)... | 1.0 | +| test.c:539:12:539:18 | ... * ... | 8.3140992E9 | +| test.c:539:12:539:34 | ... > ... | 1.0 | +| test.c:539:12:539:60 | ... ? ... : ... | 6.912424550744064E19 | +| test.c:539:17:539:18 | ip | 8.3140992E9 | +| test.c:539:22:539:29 | (...) | 8.3140992E9 | +| test.c:539:22:539:34 | ... * ... | 8.3140992E9 | +| test.c:539:23:539:24 | ip | 8.3140992E9 | +| test.c:539:23:539:28 | ... + ... | 8.3140992E9 | +| test.c:539:28:539:28 | 1 | 1.0 | +| test.c:539:28:539:28 | (unsigned int)... | 1.0 | +| test.c:539:33:539:34 | 17 | 1.0 | +| test.c:539:33:539:34 | (unsigned int)... | 1.0 | +| test.c:539:38:539:39 | 17 | 1.0 | +| test.c:539:38:539:39 | (unsigned int)... | 1.0 | +| test.c:539:38:539:44 | ... * ... | 8.3140992E9 | +| test.c:539:43:539:44 | ip | 8.3140992E9 | +| test.c:539:48:539:55 | (...) | 8.3140992E9 | +| test.c:539:48:539:60 | ... * ... | 8.3140992E9 | +| test.c:539:49:539:50 | ip | 8.3140992E9 | +| test.c:539:49:539:54 | ... + ... | 8.3140992E9 | +| test.c:539:54:539:54 | 1 | 1.0 | +| test.c:539:54:539:54 | (unsigned int)... | 1.0 | +| test.c:539:59:539:60 | 17 | 1.0 | +| test.c:539:59:539:60 | (unsigned int)... | 1.0 | +| test.c:540:15:540:15 | 4 | 1.0 | +| test.c:540:15:540:15 | (unsigned int)... | 1.0 | +| test.c:540:15:540:32 | ... * ... | 1.66281984E10 | +| test.c:540:15:541:32 | ... + ... | 2.7649698202976256E20 | +| test.c:540:15:542:32 | ... + ... | 4.5976466741921265E30 | +| test.c:540:15:548:28 | ... + ... | 5.7073558339916785E62 | +| test.c:540:19:540:32 | (...) | 1.66281984E10 | +| test.c:540:20:540:21 | ip | 1.66281984E10 | +| test.c:540:20:540:26 | ... * ... | 1.66281984E10 | +| test.c:540:20:540:31 | ... + ... | 1.66281984E10 | +| test.c:540:25:540:26 | 14 | 1.0 | +| test.c:540:25:540:26 | (unsigned int)... | 1.0 | +| test.c:540:30:540:31 | 32 | 1.0 | +| test.c:540:30:540:31 | (unsigned int)... | 1.0 | +| test.c:541:15:541:32 | (...) | 1.66281984E10 | +| test.c:541:16:541:16 | 2 | 1.0 | +| test.c:541:16:541:16 | (unsigned int)... | 1.0 | +| test.c:541:16:541:21 | ... * ... | 1.66281984E10 | +| test.c:541:16:541:26 | ... * ... | 1.66281984E10 | +| test.c:541:16:541:31 | ... + ... | 1.66281984E10 | +| test.c:541:20:541:21 | ip | 1.66281984E10 | +| test.c:541:25:541:26 | 14 | 1.0 | +| test.c:541:25:541:26 | (unsigned int)... | 1.0 | +| test.c:541:30:541:31 | 32 | 1.0 | +| test.c:541:30:541:31 | (unsigned int)... | 1.0 | +| test.c:542:15:542:15 | 2 | 1.0 | +| test.c:542:15:542:15 | (unsigned int)... | 1.0 | +| test.c:542:15:542:32 | ... * ... | 1.66281984E10 | +| test.c:542:19:542:32 | (...) | 1.66281984E10 | +| test.c:542:20:542:21 | ip | 1.66281984E10 | +| test.c:542:20:542:26 | ... * ... | 1.66281984E10 | +| test.c:542:20:542:31 | ... + ... | 1.66281984E10 | +| test.c:542:25:542:26 | 14 | 1.0 | +| test.c:542:25:542:26 | (unsigned int)... | 1.0 | +| test.c:542:30:542:31 | 64 | 1.0 | +| test.c:542:30:542:31 | (unsigned int)... | 1.0 | +| test.c:543:15:548:28 | (...) | 1.2413646020318741E32 | +| test.c:543:16:543:27 | (...) | 1.66281984E10 | +| test.c:543:16:543:32 | ... * ... | 1.66281984E10 | +| test.c:543:16:544:65 | ... > ... | 1.0 | +| test.c:543:16:548:27 | ... ? ... : ... | 1.2413646020318741E32 | +| test.c:543:17:543:17 | 2 | 1.0 | +| test.c:543:17:543:17 | (unsigned int)... | 1.0 | +| test.c:543:17:543:22 | ... * ... | 1.66281984E10 | +| test.c:543:17:543:26 | ... + ... | 1.66281984E10 | +| test.c:543:21:543:22 | ip | 1.66281984E10 | +| test.c:543:26:543:26 | 1 | 1.0 | +| test.c:543:26:543:26 | (unsigned int)... | 1.0 | +| test.c:543:31:543:32 | 14 | 1.0 | +| test.c:543:31:543:32 | (unsigned int)... | 1.0 | +| test.c:544:15:544:65 | (...) | 2.7649698202976256E20 | +| test.c:544:16:544:17 | 14 | 1.0 | +| test.c:544:16:544:17 | (unsigned int)... | 1.0 | +| test.c:544:16:544:28 | ... * ... | 1.66281984E10 | +| test.c:544:16:544:38 | ... > ... | 1.0 | +| test.c:544:16:544:64 | ... ? ... : ... | 2.7649698202976256E20 | +| test.c:544:21:544:28 | (...) | 1.66281984E10 | +| test.c:544:22:544:22 | 2 | 1.0 | +| test.c:544:22:544:22 | (unsigned int)... | 1.0 | +| test.c:544:22:544:27 | ... * ... | 1.66281984E10 | +| test.c:544:26:544:27 | ip | 1.66281984E10 | +| test.c:544:32:544:33 | 17 | 1.0 | +| test.c:544:32:544:33 | (unsigned int)... | 1.0 | +| test.c:544:32:544:38 | ... * ... | 1.66281984E10 | +| test.c:544:37:544:38 | ip | 1.66281984E10 | +| test.c:544:42:544:43 | 17 | 1.0 | +| test.c:544:42:544:43 | (unsigned int)... | 1.0 | +| test.c:544:42:544:54 | ... * ... | 1.66281984E10 | +| test.c:544:47:544:54 | (...) | 1.66281984E10 | +| test.c:544:48:544:48 | 2 | 1.0 | +| test.c:544:48:544:48 | (unsigned int)... | 1.0 | +| test.c:544:48:544:53 | ... * ... | 1.66281984E10 | +| test.c:544:52:544:53 | ip | 1.66281984E10 | +| test.c:544:58:544:59 | 17 | 1.0 | +| test.c:544:58:544:59 | (unsigned int)... | 1.0 | +| test.c:544:58:544:64 | ... * ... | 1.66281984E10 | +| test.c:544:63:544:64 | ip | 1.66281984E10 | +| test.c:545:19:545:30 | (...) | 4.98845952E10 | +| test.c:545:19:545:35 | ... * ... | 4.98845952E10 | +| test.c:545:20:545:20 | 2 | 1.0 | +| test.c:545:20:545:20 | (unsigned int)... | 1.0 | +| test.c:545:20:545:25 | ... * ... | 4.98845952E10 | +| test.c:545:20:545:29 | ... + ... | 4.98845952E10 | +| test.c:545:24:545:25 | ip | 4.98845952E10 | +| test.c:545:29:545:29 | 1 | 1.0 | +| test.c:545:29:545:29 | (unsigned int)... | 1.0 | +| test.c:545:34:545:35 | 14 | 1.0 | +| test.c:545:34:545:35 | (unsigned int)... | 1.0 | +| test.c:546:19:546:20 | 14 | 1.0 | +| test.c:546:19:546:20 | (unsigned int)... | 1.0 | +| test.c:546:19:546:31 | ... * ... | 4.98845952E10 | +| test.c:546:19:546:41 | ... > ... | 1.0 | +| test.c:546:19:548:27 | ... ? ... : ... | 2.488472838267863E21 | +| test.c:546:24:546:31 | (...) | 4.98845952E10 | +| test.c:546:25:546:25 | 2 | 1.0 | +| test.c:546:25:546:25 | (unsigned int)... | 1.0 | +| test.c:546:25:546:30 | ... * ... | 4.98845952E10 | +| test.c:546:29:546:30 | ip | 4.98845952E10 | +| test.c:546:35:546:36 | 17 | 1.0 | +| test.c:546:35:546:36 | (unsigned int)... | 1.0 | +| test.c:546:35:546:41 | ... * ... | 4.98845952E10 | +| test.c:546:40:546:41 | ip | 4.98845952E10 | +| test.c:547:21:547:22 | 14 | 1.0 | +| test.c:547:21:547:22 | (unsigned int)... | 1.0 | +| test.c:547:21:547:33 | ... * ... | 4.98845952E10 | +| test.c:547:26:547:33 | (...) | 4.98845952E10 | +| test.c:547:27:547:27 | 2 | 1.0 | +| test.c:547:27:547:27 | (unsigned int)... | 1.0 | +| test.c:547:27:547:32 | ... * ... | 4.98845952E10 | +| test.c:547:31:547:32 | ip | 4.98845952E10 | +| test.c:548:21:548:22 | 14 | 1.0 | +| test.c:548:21:548:22 | (unsigned int)... | 1.0 | +| test.c:548:21:548:27 | ... * ... | 4.98845952E10 | +| test.c:548:26:548:27 | ip | 4.98845952E10 | +| test.c:549:15:549:16 | 14 | 1.0 | +| test.c:549:15:549:16 | (unsigned int)... | 1.0 | +| test.c:549:15:549:21 | ... * ... | 1.66281984E10 | +| test.c:549:15:549:37 | ... > ... | 1.0 | +| test.c:549:15:551:29 | ... ? ... : ... | 2.7649698202976256E20 | +| test.c:549:20:549:21 | ip | 1.66281984E10 | +| test.c:549:25:549:32 | (...) | 1.66281984E10 | +| test.c:549:25:549:37 | ... * ... | 1.66281984E10 | +| test.c:549:26:549:27 | ip | 1.66281984E10 | +| test.c:549:26:549:31 | ... + ... | 1.66281984E10 | +| test.c:549:31:549:31 | 1 | 1.0 | +| test.c:549:31:549:31 | (unsigned int)... | 1.0 | +| test.c:549:36:549:37 | 17 | 1.0 | +| test.c:549:36:549:37 | (unsigned int)... | 1.0 | +| test.c:550:17:550:18 | 14 | 1.0 | +| test.c:550:17:550:18 | (unsigned int)... | 1.0 | +| test.c:550:17:550:23 | ... * ... | 1.66281984E10 | +| test.c:550:22:550:23 | ip | 1.66281984E10 | +| test.c:551:17:551:24 | (...) | 1.66281984E10 | +| test.c:551:17:551:29 | ... * ... | 1.66281984E10 | +| test.c:551:18:551:19 | ip | 1.66281984E10 | +| test.c:551:18:551:23 | ... + ... | 1.66281984E10 | +| test.c:551:23:551:23 | 1 | 1.0 | +| test.c:551:23:551:23 | (unsigned int)... | 1.0 | +| test.c:551:28:551:29 | 14 | 1.0 | +| test.c:551:28:551:29 | (unsigned int)... | 1.0 | +| test.c:552:11:552:11 | 2 | 1.0 | +| test.c:552:11:552:11 | (unsigned int)... | 1.0 | +| test.c:552:11:552:28 | ... * ... | 1.829101824E11 | +| test.c:552:11:572:46 | ... + ... | 2.663451451985137E110 | +| test.c:552:15:552:28 | (...) | 1.829101824E11 | +| test.c:552:16:552:17 | ip | 1.829101824E11 | +| test.c:552:16:552:22 | ... * ... | 1.829101824E11 | +| test.c:552:16:552:27 | ... + ... | 1.829101824E11 | +| test.c:552:21:552:22 | 14 | 1.0 | +| test.c:552:21:552:22 | (unsigned int)... | 1.0 | +| test.c:552:26:552:27 | 32 | 1.0 | +| test.c:552:26:552:27 | (unsigned int)... | 1.0 | +| test.c:553:11:572:46 | (...) | 1.4561526411692741E99 | +| test.c:553:12:553:12 | 4 | 1.0 | +| test.c:553:12:553:12 | (unsigned int)... | 1.0 | +| test.c:553:12:553:29 | ... * ... | 1.829101824E11 | +| test.c:553:12:554:30 | ... + ... | 3.345613482560127E22 | +| test.c:553:12:555:30 | ... + ... | 6.11946772334972E33 | +| test.c:553:12:561:26 | ... + ... | 1.0110929008622132E69 | +| test.c:553:12:562:41 | ... > ... | 1.0 | +| test.c:553:12:572:45 | ... ? ... : ... | 1.4561526411692741E99 | +| test.c:553:16:553:29 | (...) | 1.829101824E11 | +| test.c:553:17:553:18 | ip | 1.829101824E11 | +| test.c:553:17:553:23 | ... * ... | 1.829101824E11 | +| test.c:553:17:553:28 | ... + ... | 1.829101824E11 | +| test.c:553:22:553:23 | 14 | 1.0 | +| test.c:553:22:553:23 | (unsigned int)... | 1.0 | +| test.c:553:27:553:28 | 32 | 1.0 | +| test.c:553:27:553:28 | (unsigned int)... | 1.0 | +| test.c:554:13:554:30 | (...) | 1.829101824E11 | +| test.c:554:14:554:14 | 2 | 1.0 | +| test.c:554:14:554:14 | (unsigned int)... | 1.0 | +| test.c:554:14:554:19 | ... * ... | 1.829101824E11 | +| test.c:554:14:554:24 | ... * ... | 1.829101824E11 | +| test.c:554:14:554:29 | ... + ... | 1.829101824E11 | +| test.c:554:18:554:19 | ip | 1.829101824E11 | +| test.c:554:23:554:24 | 14 | 1.0 | +| test.c:554:23:554:24 | (unsigned int)... | 1.0 | +| test.c:554:28:554:29 | 32 | 1.0 | +| test.c:554:28:554:29 | (unsigned int)... | 1.0 | +| test.c:555:13:555:13 | 2 | 1.0 | +| test.c:555:13:555:13 | (unsigned int)... | 1.0 | +| test.c:555:13:555:30 | ... * ... | 1.829101824E11 | +| test.c:555:17:555:30 | (...) | 1.829101824E11 | +| test.c:555:18:555:19 | ip | 1.829101824E11 | +| test.c:555:18:555:24 | ... * ... | 1.829101824E11 | +| test.c:555:18:555:29 | ... + ... | 1.829101824E11 | +| test.c:555:23:555:24 | 14 | 1.0 | +| test.c:555:23:555:24 | (unsigned int)... | 1.0 | +| test.c:555:28:555:29 | 64 | 1.0 | +| test.c:555:28:555:29 | (unsigned int)... | 1.0 | +| test.c:556:13:561:26 | (...) | 1.6522562853044246E35 | +| test.c:556:14:556:25 | (...) | 1.829101824E11 | +| test.c:556:14:556:30 | ... * ... | 1.829101824E11 | +| test.c:556:14:557:63 | ... > ... | 1.0 | +| test.c:556:14:561:25 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:556:15:556:15 | 2 | 1.0 | +| test.c:556:15:556:15 | (unsigned int)... | 1.0 | +| test.c:556:15:556:20 | ... * ... | 1.829101824E11 | +| test.c:556:15:556:24 | ... + ... | 1.829101824E11 | +| test.c:556:19:556:20 | ip | 1.829101824E11 | +| test.c:556:24:556:24 | 1 | 1.0 | +| test.c:556:24:556:24 | (unsigned int)... | 1.0 | +| test.c:556:29:556:30 | 14 | 1.0 | +| test.c:556:29:556:30 | (unsigned int)... | 1.0 | +| test.c:557:13:557:63 | (...) | 3.345613482560127E22 | +| test.c:557:14:557:15 | 14 | 1.0 | +| test.c:557:14:557:15 | (unsigned int)... | 1.0 | +| test.c:557:14:557:26 | ... * ... | 1.829101824E11 | +| test.c:557:14:557:36 | ... > ... | 1.0 | +| test.c:557:14:557:62 | ... ? ... : ... | 3.345613482560127E22 | +| test.c:557:19:557:26 | (...) | 1.829101824E11 | +| test.c:557:20:557:20 | 2 | 1.0 | +| test.c:557:20:557:20 | (unsigned int)... | 1.0 | +| test.c:557:20:557:25 | ... * ... | 1.829101824E11 | +| test.c:557:24:557:25 | ip | 1.829101824E11 | +| test.c:557:30:557:31 | 17 | 1.0 | +| test.c:557:30:557:31 | (unsigned int)... | 1.0 | +| test.c:557:30:557:36 | ... * ... | 1.829101824E11 | +| test.c:557:35:557:36 | ip | 1.829101824E11 | +| test.c:557:40:557:41 | 17 | 1.0 | +| test.c:557:40:557:41 | (unsigned int)... | 1.0 | +| test.c:557:40:557:52 | ... * ... | 1.829101824E11 | +| test.c:557:45:557:52 | (...) | 1.829101824E11 | +| test.c:557:46:557:46 | 2 | 1.0 | +| test.c:557:46:557:46 | (unsigned int)... | 1.0 | +| test.c:557:46:557:51 | ... * ... | 1.829101824E11 | +| test.c:557:50:557:51 | ip | 1.829101824E11 | +| test.c:557:56:557:57 | 17 | 1.0 | +| test.c:557:56:557:57 | (unsigned int)... | 1.0 | +| test.c:557:56:557:62 | ... * ... | 1.829101824E11 | +| test.c:557:61:557:62 | ip | 1.829101824E11 | +| test.c:558:17:558:28 | (...) | 5.487305472E11 | +| test.c:558:17:558:33 | ... * ... | 5.487305472E11 | +| test.c:558:18:558:18 | 2 | 1.0 | +| test.c:558:18:558:18 | (unsigned int)... | 1.0 | +| test.c:558:18:558:23 | ... * ... | 5.487305472E11 | +| test.c:558:18:558:27 | ... + ... | 5.487305472E11 | +| test.c:558:22:558:23 | ip | 5.487305472E11 | +| test.c:558:27:558:27 | 1 | 1.0 | +| test.c:558:27:558:27 | (unsigned int)... | 1.0 | +| test.c:558:32:558:33 | 14 | 1.0 | +| test.c:558:32:558:33 | (unsigned int)... | 1.0 | +| test.c:559:17:559:18 | 14 | 1.0 | +| test.c:559:17:559:18 | (unsigned int)... | 1.0 | +| test.c:559:17:559:29 | ... * ... | 5.487305472E11 | +| test.c:559:17:559:39 | ... > ... | 1.0 | +| test.c:559:17:561:25 | ... ? ... : ... | 3.0110521343041144E23 | +| test.c:559:22:559:29 | (...) | 5.487305472E11 | +| test.c:559:23:559:23 | 2 | 1.0 | +| test.c:559:23:559:23 | (unsigned int)... | 1.0 | +| test.c:559:23:559:28 | ... * ... | 5.487305472E11 | +| test.c:559:27:559:28 | ip | 5.487305472E11 | +| test.c:559:33:559:34 | 17 | 1.0 | +| test.c:559:33:559:34 | (unsigned int)... | 1.0 | +| test.c:559:33:559:39 | ... * ... | 5.487305472E11 | +| test.c:559:38:559:39 | ip | 5.487305472E11 | +| test.c:560:19:560:20 | 14 | 1.0 | +| test.c:560:19:560:20 | (unsigned int)... | 1.0 | +| test.c:560:19:560:31 | ... * ... | 5.487305472E11 | +| test.c:560:24:560:31 | (...) | 5.487305472E11 | +| test.c:560:25:560:25 | 2 | 1.0 | +| test.c:560:25:560:25 | (unsigned int)... | 1.0 | +| test.c:560:25:560:30 | ... * ... | 5.487305472E11 | +| test.c:560:29:560:30 | ip | 5.487305472E11 | +| test.c:561:19:561:20 | 14 | 1.0 | +| test.c:561:19:561:20 | (unsigned int)... | 1.0 | +| test.c:561:19:561:25 | ... * ... | 5.487305472E11 | +| test.c:561:24:561:25 | ip | 5.487305472E11 | +| test.c:562:11:562:11 | 2 | 1.0 | +| test.c:562:11:562:11 | (unsigned int)... | 1.0 | +| test.c:562:11:562:16 | ... * ... | 1.6461916416E12 | +| test.c:562:11:562:21 | ... * ... | 1.6461916416E12 | +| test.c:562:11:562:41 | ... + ... | 2.709946920873703E24 | +| test.c:562:15:562:16 | ip | 1.6461916416E12 | +| test.c:562:20:562:21 | 14 | 1.0 | +| test.c:562:20:562:21 | (unsigned int)... | 1.0 | +| test.c:562:25:562:36 | (...) | 1.6461916416E12 | +| test.c:562:25:562:41 | ... * ... | 1.6461916416E12 | +| test.c:562:26:562:26 | 2 | 1.0 | +| test.c:562:26:562:26 | (unsigned int)... | 1.0 | +| test.c:562:26:562:31 | ... * ... | 1.6461916416E12 | +| test.c:562:26:562:35 | ... + ... | 1.6461916416E12 | +| test.c:562:30:562:31 | ip | 1.6461916416E12 | +| test.c:562:35:562:35 | 1 | 1.0 | +| test.c:562:35:562:35 | (unsigned int)... | 1.0 | +| test.c:562:40:562:41 | 17 | 1.0 | +| test.c:562:40:562:41 | (unsigned int)... | 1.0 | +| test.c:563:15:563:15 | 4 | 1.0 | +| test.c:563:15:563:15 | (unsigned int)... | 1.0 | +| test.c:563:15:563:32 | ... * ... | 1.6461916416E12 | +| test.c:563:15:564:32 | ... + ... | 2.709946920873703E24 | +| test.c:563:15:565:32 | ... + ... | 4.4610919703219464E36 | +| test.c:563:15:571:28 | ... + ... | 5.373362223271155E74 | +| test.c:563:19:563:32 | (...) | 1.6461916416E12 | +| test.c:563:20:563:21 | ip | 1.6461916416E12 | +| test.c:563:20:563:26 | ... * ... | 1.6461916416E12 | +| test.c:563:20:563:31 | ... + ... | 1.6461916416E12 | +| test.c:563:25:563:26 | 14 | 1.0 | +| test.c:563:25:563:26 | (unsigned int)... | 1.0 | +| test.c:563:30:563:31 | 32 | 1.0 | +| test.c:563:30:563:31 | (unsigned int)... | 1.0 | +| test.c:564:15:564:32 | (...) | 1.6461916416E12 | +| test.c:564:16:564:16 | 2 | 1.0 | +| test.c:564:16:564:16 | (unsigned int)... | 1.0 | +| test.c:564:16:564:21 | ... * ... | 1.6461916416E12 | +| test.c:564:16:564:26 | ... * ... | 1.6461916416E12 | +| test.c:564:16:564:31 | ... + ... | 1.6461916416E12 | +| test.c:564:20:564:21 | ip | 1.6461916416E12 | +| test.c:564:25:564:26 | 14 | 1.0 | +| test.c:564:25:564:26 | (unsigned int)... | 1.0 | +| test.c:564:30:564:31 | 32 | 1.0 | +| test.c:564:30:564:31 | (unsigned int)... | 1.0 | +| test.c:565:15:565:15 | 2 | 1.0 | +| test.c:565:15:565:15 | (unsigned int)... | 1.0 | +| test.c:565:15:565:32 | ... * ... | 1.6461916416E12 | +| test.c:565:19:565:32 | (...) | 1.6461916416E12 | +| test.c:565:20:565:21 | ip | 1.6461916416E12 | +| test.c:565:20:565:26 | ... * ... | 1.6461916416E12 | +| test.c:565:20:565:31 | ... + ... | 1.6461916416E12 | +| test.c:565:25:565:26 | 14 | 1.0 | +| test.c:565:25:565:26 | (unsigned int)... | 1.0 | +| test.c:565:30:565:31 | 64 | 1.0 | +| test.c:565:30:565:31 | (unsigned int)... | 1.0 | +| test.c:566:15:571:28 | (...) | 1.2044948319869254E38 | +| test.c:566:16:566:27 | (...) | 1.6461916416E12 | +| test.c:566:16:566:32 | ... * ... | 1.6461916416E12 | +| test.c:566:16:567:65 | ... > ... | 1.0 | +| test.c:566:16:571:27 | ... ? ... : ... | 1.2044948319869254E38 | +| test.c:566:17:566:17 | 2 | 1.0 | +| test.c:566:17:566:17 | (unsigned int)... | 1.0 | +| test.c:566:17:566:22 | ... * ... | 1.6461916416E12 | +| test.c:566:17:566:26 | ... + ... | 1.6461916416E12 | +| test.c:566:21:566:22 | ip | 1.6461916416E12 | +| test.c:566:26:566:26 | 1 | 1.0 | +| test.c:566:26:566:26 | (unsigned int)... | 1.0 | +| test.c:566:31:566:32 | 14 | 1.0 | +| test.c:566:31:566:32 | (unsigned int)... | 1.0 | +| test.c:567:15:567:65 | (...) | 2.709946920873703E24 | +| test.c:567:16:567:17 | 14 | 1.0 | +| test.c:567:16:567:17 | (unsigned int)... | 1.0 | +| test.c:567:16:567:28 | ... * ... | 1.6461916416E12 | +| test.c:567:16:567:38 | ... > ... | 1.0 | +| test.c:567:16:567:64 | ... ? ... : ... | 2.709946920873703E24 | +| test.c:567:21:567:28 | (...) | 1.6461916416E12 | +| test.c:567:22:567:22 | 2 | 1.0 | +| test.c:567:22:567:22 | (unsigned int)... | 1.0 | +| test.c:567:22:567:27 | ... * ... | 1.6461916416E12 | +| test.c:567:26:567:27 | ip | 1.6461916416E12 | +| test.c:567:32:567:33 | 17 | 1.0 | +| test.c:567:32:567:33 | (unsigned int)... | 1.0 | +| test.c:567:32:567:38 | ... * ... | 1.6461916416E12 | +| test.c:567:37:567:38 | ip | 1.6461916416E12 | +| test.c:567:42:567:43 | 17 | 1.0 | +| test.c:567:42:567:43 | (unsigned int)... | 1.0 | +| test.c:567:42:567:54 | ... * ... | 1.6461916416E12 | +| test.c:567:47:567:54 | (...) | 1.6461916416E12 | +| test.c:567:48:567:48 | 2 | 1.0 | +| test.c:567:48:567:48 | (unsigned int)... | 1.0 | +| test.c:567:48:567:53 | ... * ... | 1.6461916416E12 | +| test.c:567:52:567:53 | ip | 1.6461916416E12 | +| test.c:567:58:567:59 | 17 | 1.0 | +| test.c:567:58:567:59 | (unsigned int)... | 1.0 | +| test.c:567:58:567:64 | ... * ... | 1.6461916416E12 | +| test.c:567:63:567:64 | ip | 1.6461916416E12 | +| test.c:568:19:568:30 | (...) | 4.9385749248E12 | +| test.c:568:19:568:35 | ... * ... | 4.9385749248E12 | +| test.c:568:20:568:20 | 2 | 1.0 | +| test.c:568:20:568:20 | (unsigned int)... | 1.0 | +| test.c:568:20:568:25 | ... * ... | 4.9385749248E12 | +| test.c:568:20:568:29 | ... + ... | 4.9385749248E12 | +| test.c:568:24:568:25 | ip | 4.9385749248E12 | +| test.c:568:29:568:29 | 1 | 1.0 | +| test.c:568:29:568:29 | (unsigned int)... | 1.0 | +| test.c:568:34:568:35 | 14 | 1.0 | +| test.c:568:34:568:35 | (unsigned int)... | 1.0 | +| test.c:569:19:569:20 | 14 | 1.0 | +| test.c:569:19:569:20 | (unsigned int)... | 1.0 | +| test.c:569:19:569:31 | ... * ... | 4.9385749248E12 | +| test.c:569:19:569:41 | ... > ... | 1.0 | +| test.c:569:19:571:27 | ... ? ... : ... | 2.4389522287863325E25 | +| test.c:569:24:569:31 | (...) | 4.9385749248E12 | +| test.c:569:25:569:25 | 2 | 1.0 | +| test.c:569:25:569:25 | (unsigned int)... | 1.0 | +| test.c:569:25:569:30 | ... * ... | 4.9385749248E12 | +| test.c:569:29:569:30 | ip | 4.9385749248E12 | +| test.c:569:35:569:36 | 17 | 1.0 | +| test.c:569:35:569:36 | (unsigned int)... | 1.0 | +| test.c:569:35:569:41 | ... * ... | 4.9385749248E12 | +| test.c:569:40:569:41 | ip | 4.9385749248E12 | +| test.c:570:21:570:22 | 14 | 1.0 | +| test.c:570:21:570:22 | (unsigned int)... | 1.0 | +| test.c:570:21:570:33 | ... * ... | 4.9385749248E12 | +| test.c:570:26:570:33 | (...) | 4.9385749248E12 | +| test.c:570:27:570:27 | 2 | 1.0 | +| test.c:570:27:570:27 | (unsigned int)... | 1.0 | +| test.c:570:27:570:32 | ... * ... | 4.9385749248E12 | +| test.c:570:31:570:32 | ip | 4.9385749248E12 | +| test.c:571:21:571:22 | 14 | 1.0 | +| test.c:571:21:571:22 | (unsigned int)... | 1.0 | +| test.c:571:21:571:27 | ... * ... | 4.9385749248E12 | +| test.c:571:26:571:27 | ip | 4.9385749248E12 | +| test.c:572:15:572:15 | 2 | 1.0 | +| test.c:572:15:572:15 | (unsigned int)... | 1.0 | +| test.c:572:15:572:20 | ... * ... | 1.6461916416E12 | +| test.c:572:15:572:25 | ... * ... | 1.6461916416E12 | +| test.c:572:15:572:45 | ... + ... | 2.709946920873703E24 | +| test.c:572:19:572:20 | ip | 1.6461916416E12 | +| test.c:572:24:572:25 | 14 | 1.0 | +| test.c:572:24:572:25 | (unsigned int)... | 1.0 | +| test.c:572:29:572:40 | (...) | 1.6461916416E12 | +| test.c:572:29:572:45 | ... * ... | 1.6461916416E12 | +| test.c:572:30:572:30 | 2 | 1.0 | +| test.c:572:30:572:30 | (unsigned int)... | 1.0 | +| test.c:572:30:572:35 | ... * ... | 1.6461916416E12 | +| test.c:572:30:572:39 | ... + ... | 1.6461916416E12 | +| test.c:572:34:572:35 | ip | 1.6461916416E12 | +| test.c:572:39:572:39 | 1 | 1.0 | +| test.c:572:39:572:39 | (unsigned int)... | 1.0 | +| test.c:572:44:572:45 | 17 | 1.0 | +| test.c:572:44:572:45 | (unsigned int)... | 1.0 | +| test.c:573:11:573:11 | 4 | 1.0 | +| test.c:573:11:573:11 | (unsigned int)... | 1.0 | +| test.c:573:11:573:28 | ... * ... | 1.829101824E11 | +| test.c:573:11:574:32 | ... + ... | 3.345613482560127E22 | +| test.c:573:11:575:32 | ... + ... | 6.11946772334972E33 | +| test.c:573:11:581:28 | ... + ... | 1.0110929008622132E69 | +| test.c:573:11:582:63 | ... > ... | 1.0 | +| test.c:573:11:594:27 | ... ? ... : ... | 3.727750761393342E101 | +| test.c:573:15:573:28 | (...) | 1.829101824E11 | +| test.c:573:16:573:17 | ip | 1.829101824E11 | +| test.c:573:16:573:22 | ... * ... | 1.829101824E11 | +| test.c:573:16:573:27 | ... + ... | 1.829101824E11 | +| test.c:573:21:573:22 | 14 | 1.0 | +| test.c:573:21:573:22 | (unsigned int)... | 1.0 | +| test.c:573:26:573:27 | 32 | 1.0 | +| test.c:573:26:573:27 | (unsigned int)... | 1.0 | +| test.c:574:15:574:32 | (...) | 1.829101824E11 | +| test.c:574:16:574:16 | 2 | 1.0 | +| test.c:574:16:574:16 | (unsigned int)... | 1.0 | +| test.c:574:16:574:21 | ... * ... | 1.829101824E11 | +| test.c:574:16:574:26 | ... * ... | 1.829101824E11 | +| test.c:574:16:574:31 | ... + ... | 1.829101824E11 | +| test.c:574:20:574:21 | ip | 1.829101824E11 | +| test.c:574:25:574:26 | 14 | 1.0 | +| test.c:574:25:574:26 | (unsigned int)... | 1.0 | +| test.c:574:30:574:31 | 32 | 1.0 | +| test.c:574:30:574:31 | (unsigned int)... | 1.0 | +| test.c:575:15:575:15 | 2 | 1.0 | +| test.c:575:15:575:15 | (unsigned int)... | 1.0 | +| test.c:575:15:575:32 | ... * ... | 1.829101824E11 | +| test.c:575:19:575:32 | (...) | 1.829101824E11 | +| test.c:575:20:575:21 | ip | 1.829101824E11 | +| test.c:575:20:575:26 | ... * ... | 1.829101824E11 | +| test.c:575:20:575:31 | ... + ... | 1.829101824E11 | +| test.c:575:25:575:26 | 14 | 1.0 | +| test.c:575:25:575:26 | (unsigned int)... | 1.0 | +| test.c:575:30:575:31 | 64 | 1.0 | +| test.c:575:30:575:31 | (unsigned int)... | 1.0 | +| test.c:576:15:581:28 | (...) | 1.6522562853044246E35 | +| test.c:576:16:576:27 | (...) | 1.829101824E11 | +| test.c:576:16:576:32 | ... * ... | 1.829101824E11 | +| test.c:576:16:577:65 | ... > ... | 1.0 | +| test.c:576:16:581:27 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:576:17:576:17 | 2 | 1.0 | +| test.c:576:17:576:17 | (unsigned int)... | 1.0 | +| test.c:576:17:576:22 | ... * ... | 1.829101824E11 | +| test.c:576:17:576:26 | ... + ... | 1.829101824E11 | +| test.c:576:21:576:22 | ip | 1.829101824E11 | +| test.c:576:26:576:26 | 1 | 1.0 | +| test.c:576:26:576:26 | (unsigned int)... | 1.0 | +| test.c:576:31:576:32 | 14 | 1.0 | +| test.c:576:31:576:32 | (unsigned int)... | 1.0 | +| test.c:577:15:577:65 | (...) | 3.345613482560127E22 | +| test.c:577:16:577:17 | 14 | 1.0 | +| test.c:577:16:577:17 | (unsigned int)... | 1.0 | +| test.c:577:16:577:28 | ... * ... | 1.829101824E11 | +| test.c:577:16:577:38 | ... > ... | 1.0 | +| test.c:577:16:577:64 | ... ? ... : ... | 3.345613482560127E22 | +| test.c:577:21:577:28 | (...) | 1.829101824E11 | +| test.c:577:22:577:22 | 2 | 1.0 | +| test.c:577:22:577:22 | (unsigned int)... | 1.0 | +| test.c:577:22:577:27 | ... * ... | 1.829101824E11 | +| test.c:577:26:577:27 | ip | 1.829101824E11 | +| test.c:577:32:577:33 | 17 | 1.0 | +| test.c:577:32:577:33 | (unsigned int)... | 1.0 | +| test.c:577:32:577:38 | ... * ... | 1.829101824E11 | +| test.c:577:37:577:38 | ip | 1.829101824E11 | +| test.c:577:42:577:43 | 17 | 1.0 | +| test.c:577:42:577:43 | (unsigned int)... | 1.0 | +| test.c:577:42:577:54 | ... * ... | 1.829101824E11 | +| test.c:577:47:577:54 | (...) | 1.829101824E11 | +| test.c:577:48:577:48 | 2 | 1.0 | +| test.c:577:48:577:48 | (unsigned int)... | 1.0 | +| test.c:577:48:577:53 | ... * ... | 1.829101824E11 | +| test.c:577:52:577:53 | ip | 1.829101824E11 | +| test.c:577:58:577:59 | 17 | 1.0 | +| test.c:577:58:577:59 | (unsigned int)... | 1.0 | +| test.c:577:58:577:64 | ... * ... | 1.829101824E11 | +| test.c:577:63:577:64 | ip | 1.829101824E11 | +| test.c:578:19:578:30 | (...) | 5.487305472E11 | +| test.c:578:19:578:35 | ... * ... | 5.487305472E11 | +| test.c:578:20:578:20 | 2 | 1.0 | +| test.c:578:20:578:20 | (unsigned int)... | 1.0 | +| test.c:578:20:578:25 | ... * ... | 5.487305472E11 | +| test.c:578:20:578:29 | ... + ... | 5.487305472E11 | +| test.c:578:24:578:25 | ip | 5.487305472E11 | +| test.c:578:29:578:29 | 1 | 1.0 | +| test.c:578:29:578:29 | (unsigned int)... | 1.0 | +| test.c:578:34:578:35 | 14 | 1.0 | +| test.c:578:34:578:35 | (unsigned int)... | 1.0 | +| test.c:579:19:579:20 | 14 | 1.0 | +| test.c:579:19:579:20 | (unsigned int)... | 1.0 | +| test.c:579:19:579:31 | ... * ... | 5.487305472E11 | +| test.c:579:19:579:41 | ... > ... | 1.0 | +| test.c:579:19:581:27 | ... ? ... : ... | 3.0110521343041144E23 | +| test.c:579:24:579:31 | (...) | 5.487305472E11 | +| test.c:579:25:579:25 | 2 | 1.0 | +| test.c:579:25:579:25 | (unsigned int)... | 1.0 | +| test.c:579:25:579:30 | ... * ... | 5.487305472E11 | +| test.c:579:29:579:30 | ip | 5.487305472E11 | +| test.c:579:35:579:36 | 17 | 1.0 | +| test.c:579:35:579:36 | (unsigned int)... | 1.0 | +| test.c:579:35:579:41 | ... * ... | 5.487305472E11 | +| test.c:579:40:579:41 | ip | 5.487305472E11 | +| test.c:580:21:580:22 | 14 | 1.0 | +| test.c:580:21:580:22 | (unsigned int)... | 1.0 | +| test.c:580:21:580:33 | ... * ... | 5.487305472E11 | +| test.c:580:26:580:33 | (...) | 5.487305472E11 | +| test.c:580:27:580:27 | 2 | 1.0 | +| test.c:580:27:580:27 | (unsigned int)... | 1.0 | +| test.c:580:27:580:32 | ... * ... | 5.487305472E11 | +| test.c:580:31:580:32 | ip | 5.487305472E11 | +| test.c:581:21:581:22 | 14 | 1.0 | +| test.c:581:21:581:22 | (unsigned int)... | 1.0 | +| test.c:581:21:581:27 | ... * ... | 5.487305472E11 | +| test.c:581:26:581:27 | ip | 5.487305472E11 | +| test.c:582:13:582:63 | (...) | 2.709946920873703E24 | +| test.c:582:14:582:15 | 14 | 1.0 | +| test.c:582:14:582:15 | (unsigned int)... | 1.0 | +| test.c:582:14:582:20 | ... * ... | 1.6461916416E12 | +| test.c:582:14:582:36 | ... > ... | 1.0 | +| test.c:582:14:582:62 | ... ? ... : ... | 2.709946920873703E24 | +| test.c:582:19:582:20 | ip | 1.6461916416E12 | +| test.c:582:24:582:31 | (...) | 1.6461916416E12 | +| test.c:582:24:582:36 | ... * ... | 1.6461916416E12 | +| test.c:582:25:582:26 | ip | 1.6461916416E12 | +| test.c:582:25:582:30 | ... + ... | 1.6461916416E12 | +| test.c:582:30:582:30 | 1 | 1.0 | +| test.c:582:30:582:30 | (unsigned int)... | 1.0 | +| test.c:582:35:582:36 | 17 | 1.0 | +| test.c:582:35:582:36 | (unsigned int)... | 1.0 | +| test.c:582:40:582:41 | 17 | 1.0 | +| test.c:582:40:582:41 | (unsigned int)... | 1.0 | +| test.c:582:40:582:46 | ... * ... | 1.6461916416E12 | +| test.c:582:45:582:46 | ip | 1.6461916416E12 | +| test.c:582:50:582:57 | (...) | 1.6461916416E12 | +| test.c:582:50:582:62 | ... * ... | 1.6461916416E12 | +| test.c:582:51:582:52 | ip | 1.6461916416E12 | +| test.c:582:51:582:56 | ... + ... | 1.6461916416E12 | +| test.c:582:56:582:56 | 1 | 1.0 | +| test.c:582:56:582:56 | (unsigned int)... | 1.0 | +| test.c:582:61:582:62 | 17 | 1.0 | +| test.c:582:61:582:62 | (unsigned int)... | 1.0 | +| test.c:583:13:583:13 | 4 | 1.0 | +| test.c:583:13:583:13 | (unsigned int)... | 1.0 | +| test.c:583:13:583:30 | ... * ... | 3.2923832832E12 | +| test.c:583:13:584:30 | ... + ... | 1.0839787683494812E25 | +| test.c:583:13:585:30 | ... + ... | 3.568873576257557E37 | +| test.c:583:13:591:26 | ... + ... | 3.438951822893539E76 | +| test.c:583:17:583:30 | (...) | 3.2923832832E12 | +| test.c:583:18:583:19 | ip | 3.2923832832E12 | +| test.c:583:18:583:24 | ... * ... | 3.2923832832E12 | +| test.c:583:18:583:29 | ... + ... | 3.2923832832E12 | +| test.c:583:23:583:24 | 14 | 1.0 | +| test.c:583:23:583:24 | (unsigned int)... | 1.0 | +| test.c:583:28:583:29 | 32 | 1.0 | +| test.c:583:28:583:29 | (unsigned int)... | 1.0 | +| test.c:584:13:584:30 | (...) | 3.2923832832E12 | +| test.c:584:14:584:14 | 2 | 1.0 | +| test.c:584:14:584:14 | (unsigned int)... | 1.0 | +| test.c:584:14:584:19 | ... * ... | 3.2923832832E12 | +| test.c:584:14:584:24 | ... * ... | 3.2923832832E12 | +| test.c:584:14:584:29 | ... + ... | 3.2923832832E12 | +| test.c:584:18:584:19 | ip | 3.2923832832E12 | +| test.c:584:23:584:24 | 14 | 1.0 | +| test.c:584:23:584:24 | (unsigned int)... | 1.0 | +| test.c:584:28:584:29 | 32 | 1.0 | +| test.c:584:28:584:29 | (unsigned int)... | 1.0 | +| test.c:585:13:585:13 | 2 | 1.0 | +| test.c:585:13:585:13 | (unsigned int)... | 1.0 | +| test.c:585:13:585:30 | ... * ... | 3.2923832832E12 | +| test.c:585:17:585:30 | (...) | 3.2923832832E12 | +| test.c:585:18:585:19 | ip | 3.2923832832E12 | +| test.c:585:18:585:24 | ... * ... | 3.2923832832E12 | +| test.c:585:18:585:29 | ... + ... | 3.2923832832E12 | +| test.c:585:23:585:24 | 14 | 1.0 | +| test.c:585:23:585:24 | (unsigned int)... | 1.0 | +| test.c:585:28:585:29 | 64 | 1.0 | +| test.c:585:28:585:29 | (unsigned int)... | 1.0 | +| test.c:586:13:591:26 | (...) | 9.635958655895403E38 | +| test.c:586:14:586:25 | (...) | 3.2923832832E12 | +| test.c:586:14:586:30 | ... * ... | 3.2923832832E12 | +| test.c:586:14:587:63 | ... > ... | 1.0 | +| test.c:586:14:591:25 | ... ? ... : ... | 9.635958655895403E38 | +| test.c:586:15:586:15 | 2 | 1.0 | +| test.c:586:15:586:15 | (unsigned int)... | 1.0 | +| test.c:586:15:586:20 | ... * ... | 3.2923832832E12 | +| test.c:586:15:586:24 | ... + ... | 3.2923832832E12 | +| test.c:586:19:586:20 | ip | 3.2923832832E12 | +| test.c:586:24:586:24 | 1 | 1.0 | +| test.c:586:24:586:24 | (unsigned int)... | 1.0 | +| test.c:586:29:586:30 | 14 | 1.0 | +| test.c:586:29:586:30 | (unsigned int)... | 1.0 | +| test.c:587:13:587:63 | (...) | 1.0839787683494812E25 | +| test.c:587:14:587:15 | 14 | 1.0 | +| test.c:587:14:587:15 | (unsigned int)... | 1.0 | +| test.c:587:14:587:26 | ... * ... | 3.2923832832E12 | +| test.c:587:14:587:36 | ... > ... | 1.0 | +| test.c:587:14:587:62 | ... ? ... : ... | 1.0839787683494812E25 | +| test.c:587:19:587:26 | (...) | 3.2923832832E12 | +| test.c:587:20:587:20 | 2 | 1.0 | +| test.c:587:20:587:20 | (unsigned int)... | 1.0 | +| test.c:587:20:587:25 | ... * ... | 3.2923832832E12 | +| test.c:587:24:587:25 | ip | 3.2923832832E12 | +| test.c:587:30:587:31 | 17 | 1.0 | +| test.c:587:30:587:31 | (unsigned int)... | 1.0 | +| test.c:587:30:587:36 | ... * ... | 3.2923832832E12 | +| test.c:587:35:587:36 | ip | 3.2923832832E12 | +| test.c:587:40:587:41 | 17 | 1.0 | +| test.c:587:40:587:41 | (unsigned int)... | 1.0 | +| test.c:587:40:587:52 | ... * ... | 3.2923832832E12 | +| test.c:587:45:587:52 | (...) | 3.2923832832E12 | +| test.c:587:46:587:46 | 2 | 1.0 | +| test.c:587:46:587:46 | (unsigned int)... | 1.0 | +| test.c:587:46:587:51 | ... * ... | 3.2923832832E12 | +| test.c:587:50:587:51 | ip | 3.2923832832E12 | +| test.c:587:56:587:57 | 17 | 1.0 | +| test.c:587:56:587:57 | (unsigned int)... | 1.0 | +| test.c:587:56:587:62 | ... * ... | 3.2923832832E12 | +| test.c:587:61:587:62 | ip | 3.2923832832E12 | +| test.c:588:17:588:28 | (...) | 9.8771498496E12 | +| test.c:588:17:588:33 | ... * ... | 9.8771498496E12 | +| test.c:588:18:588:18 | 2 | 1.0 | +| test.c:588:18:588:18 | (unsigned int)... | 1.0 | +| test.c:588:18:588:23 | ... * ... | 9.8771498496E12 | +| test.c:588:18:588:27 | ... + ... | 9.8771498496E12 | +| test.c:588:22:588:23 | ip | 9.8771498496E12 | +| test.c:588:27:588:27 | 1 | 1.0 | +| test.c:588:27:588:27 | (unsigned int)... | 1.0 | +| test.c:588:32:588:33 | 14 | 1.0 | +| test.c:588:32:588:33 | (unsigned int)... | 1.0 | +| test.c:589:17:589:18 | 14 | 1.0 | +| test.c:589:17:589:18 | (unsigned int)... | 1.0 | +| test.c:589:17:589:29 | ... * ... | 9.8771498496E12 | +| test.c:589:17:589:39 | ... > ... | 1.0 | +| test.c:589:17:591:25 | ... ? ... : ... | 9.75580891514533E25 | +| test.c:589:22:589:29 | (...) | 9.8771498496E12 | +| test.c:589:23:589:23 | 2 | 1.0 | +| test.c:589:23:589:23 | (unsigned int)... | 1.0 | +| test.c:589:23:589:28 | ... * ... | 9.8771498496E12 | +| test.c:589:27:589:28 | ip | 9.8771498496E12 | +| test.c:589:33:589:34 | 17 | 1.0 | +| test.c:589:33:589:34 | (unsigned int)... | 1.0 | +| test.c:589:33:589:39 | ... * ... | 9.8771498496E12 | +| test.c:589:38:589:39 | ip | 9.8771498496E12 | +| test.c:590:19:590:20 | 14 | 1.0 | +| test.c:590:19:590:20 | (unsigned int)... | 1.0 | +| test.c:590:19:590:31 | ... * ... | 9.8771498496E12 | +| test.c:590:24:590:31 | (...) | 9.8771498496E12 | +| test.c:590:25:590:25 | 2 | 1.0 | +| test.c:590:25:590:25 | (unsigned int)... | 1.0 | +| test.c:590:25:590:30 | ... * ... | 9.8771498496E12 | +| test.c:590:29:590:30 | ip | 9.8771498496E12 | +| test.c:591:19:591:20 | 14 | 1.0 | +| test.c:591:19:591:20 | (unsigned int)... | 1.0 | +| test.c:591:19:591:25 | ... * ... | 9.8771498496E12 | +| test.c:591:24:591:25 | ip | 9.8771498496E12 | +| test.c:592:13:592:14 | 14 | 1.0 | +| test.c:592:13:592:14 | (unsigned int)... | 1.0 | +| test.c:592:13:592:19 | ... * ... | 3.2923832832E12 | +| test.c:592:13:592:35 | ... > ... | 1.0 | +| test.c:592:13:594:27 | ... ? ... : ... | 1.0839787683494812E25 | +| test.c:592:18:592:19 | ip | 3.2923832832E12 | +| test.c:592:23:592:30 | (...) | 3.2923832832E12 | +| test.c:592:23:592:35 | ... * ... | 3.2923832832E12 | +| test.c:592:24:592:25 | ip | 3.2923832832E12 | +| test.c:592:24:592:29 | ... + ... | 3.2923832832E12 | +| test.c:592:29:592:29 | 1 | 1.0 | +| test.c:592:29:592:29 | (unsigned int)... | 1.0 | +| test.c:592:34:592:35 | 17 | 1.0 | +| test.c:592:34:592:35 | (unsigned int)... | 1.0 | +| test.c:593:15:593:16 | 14 | 1.0 | +| test.c:593:15:593:16 | (unsigned int)... | 1.0 | +| test.c:593:15:593:21 | ... * ... | 3.2923832832E12 | +| test.c:593:20:593:21 | ip | 3.2923832832E12 | +| test.c:594:15:594:22 | (...) | 3.2923832832E12 | +| test.c:594:15:594:27 | ... * ... | 3.2923832832E12 | +| test.c:594:16:594:17 | ip | 3.2923832832E12 | +| test.c:594:16:594:21 | ... + ... | 3.2923832832E12 | +| test.c:594:21:594:21 | 1 | 1.0 | +| test.c:594:21:594:21 | (unsigned int)... | 1.0 | +| test.c:594:26:594:27 | 14 | 1.0 | +| test.c:594:26:594:27 | (unsigned int)... | 1.0 | +| test.c:595:10:595:23 | special_number | 1.0736981431797959E233 | +| test.c:602:10:602:11 | 0 | 1.0 | +| test.c:603:7:603:8 | c1 | 1.0 | +| test.c:603:13:603:13 | x | 1.0 | +| test.c:603:13:603:23 | ... += ... | 1.0 | +| test.c:603:18:603:23 | 748596 | 1.0 | +| test.c:604:7:604:8 | c2 | 1.0 | +| test.c:604:13:604:13 | x | 2.0 | +| test.c:604:13:604:25 | ... += ... | 2.0 | +| test.c:604:18:604:25 | 84652395 | 1.0 | +| test.c:605:7:605:8 | c3 | 1.0 | +| test.c:605:13:605:13 | x | 4.0 | +| test.c:605:13:605:24 | ... += ... | 4.0 | +| test.c:605:18:605:24 | 3675895 | 1.0 | +| test.c:606:7:606:8 | c4 | 1.0 | +| test.c:606:13:606:13 | x | 8.0 | +| test.c:606:13:606:22 | ... += ... | 8.0 | +| test.c:606:18:606:22 | 98634 | 1.0 | +| test.c:607:7:607:8 | c5 | 1.0 | +| test.c:607:13:607:13 | x | 16.0 | +| test.c:607:13:607:24 | ... += ... | 16.0 | +| test.c:607:18:607:24 | 7834985 | 1.0 | +| test.c:608:7:608:8 | c1 | 2.0 | +| test.c:608:7:608:14 | ... && ... | 1.0 | +| test.c:608:13:608:14 | c2 | 2.0 | +| test.c:608:19:608:19 | x | 32.0 | +| test.c:608:19:608:32 | ... += ... | 32.0 | +| test.c:608:24:608:32 | 938457398 | 1.0 | +| test.c:609:7:609:8 | c1 | 4.0 | +| test.c:609:7:609:14 | ... && ... | 1.0 | +| test.c:609:13:609:14 | c3 | 2.0 | +| test.c:609:19:609:19 | x | 64.0 | +| test.c:609:19:609:31 | ... += ... | 64.0 | +| test.c:609:24:609:31 | 73895648 | 1.0 | +| test.c:610:7:610:8 | c1 | 8.0 | +| test.c:610:7:610:14 | ... && ... | 1.0 | +| test.c:610:13:610:14 | c4 | 2.0 | +| test.c:610:19:610:19 | x | 128.0 | +| test.c:610:19:610:31 | ... += ... | 128.0 | +| test.c:610:24:610:31 | 12345432 | 1.0 | +| test.c:611:7:611:8 | c1 | 16.0 | +| test.c:611:7:611:14 | ... && ... | 1.0 | +| test.c:611:13:611:14 | c5 | 2.0 | +| test.c:611:19:611:19 | x | 256.0 | +| test.c:611:19:611:28 | ... += ... | 256.0 | +| test.c:611:24:611:28 | 38847 | 1.0 | +| test.c:612:7:612:8 | c2 | 6.0 | +| test.c:612:7:612:14 | ... && ... | 1.0 | +| test.c:612:13:612:14 | c3 | 6.0 | +| test.c:612:19:612:19 | x | 512.0 | +| test.c:612:19:612:26 | ... += ... | 512.0 | +| test.c:612:24:612:26 | 234 | 1.0 | +| test.c:614:11:614:11 | x | 1024.0 | +| test.c:614:11:614:15 | ... + ... | 1048576.0 | +| test.c:614:11:614:19 | ... + ... | 1.073741824E9 | +| test.c:614:11:614:23 | ... + ... | 1.099511627776E12 | +| test.c:614:11:614:27 | ... + ... | 1.125899906842624E15 | +| test.c:614:11:614:31 | ... + ... | 1.152921504606847E18 | +| test.c:614:11:614:35 | ... + ... | 1.1805916207174113E21 | +| test.c:614:11:614:39 | ... + ... | 1.2089258196146292E24 | +| test.c:614:11:614:43 | ... + ... | 1.2379400392853803E27 | +| test.c:614:11:614:47 | ... + ... | 1.2676506002282294E30 | +| test.c:614:11:614:51 | ... + ... | 1.298074214633707E33 | +| test.c:614:11:614:55 | ... + ... | 1.329227995784916E36 | +| test.c:614:15:614:15 | x | 1024.0 | +| test.c:614:19:614:19 | x | 1024.0 | +| test.c:614:23:614:23 | x | 1024.0 | +| test.c:614:27:614:27 | x | 1024.0 | +| test.c:614:31:614:31 | x | 1024.0 | +| test.c:614:35:614:35 | x | 1024.0 | +| test.c:614:39:614:39 | x | 1024.0 | +| test.c:614:43:614:43 | x | 1024.0 | +| test.c:614:47:614:47 | x | 1024.0 | +| test.c:614:51:614:51 | x | 1024.0 | +| test.c:614:55:614:55 | x | 1024.0 | +| test.c:615:10:615:10 | y | 1.329227995784916E36 | +| test.c:620:20:620:20 | x | 1.0 | +| test.c:620:20:620:26 | ... < ... | 1.0 | +| test.c:620:20:620:36 | ... ? ... : ... | 1.0 | +| test.c:620:24:620:26 | 100 | 1.0 | +| test.c:620:24:620:26 | (unsigned int)... | 1.0 | +| test.c:620:30:620:30 | x | 1.0 | +| test.c:620:34:620:36 | 100 | 1.0 | +| test.c:620:34:620:36 | (unsigned int)... | 1.0 | +| test.c:623:3:623:4 | y1 | 1.0 | +| test.c:623:9:623:11 | ++ ... | 1.0 | +| test.c:623:11:623:11 | y | 1.0 | +| test.c:624:3:624:4 | y2 | 1.0 | +| test.c:624:19:624:19 | 3 | 1.0 | +| test.c:624:19:624:19 | (unsigned int)... | 1.0 | +| test.c:633:3:633:3 | i | 1.0 | +| test.c:633:3:633:8 | ... = ... | 1.0 | +| test.c:633:7:633:8 | 10 | 1.0 | +| test.c:634:7:634:7 | i | 1.0 | +| test.c:636:3:636:3 | i | 1.0 | +| test.c:636:3:636:8 | ... = ... | 1.0 | +| test.c:636:7:636:8 | 10 | 1.0 | +| test.c:637:3:637:3 | i | 1.0 | +| test.c:637:3:637:9 | ... += ... | 1.0 | +| test.c:637:8:637:9 | 10 | 1.0 | +| test.c:638:7:638:7 | i | 1.0 | +| test.c:640:3:640:3 | i | 1.0 | +| test.c:640:3:640:8 | ... = ... | 1.0 | +| test.c:640:7:640:8 | 40 | 1.0 | +| test.c:641:3:641:3 | i | 1.0 | +| test.c:641:3:641:9 | ... -= ... | 1.0 | +| test.c:641:8:641:9 | 10 | 1.0 | +| test.c:642:7:642:7 | i | 1.0 | +| test.c:644:3:644:3 | i | 1.0 | +| test.c:644:3:644:12 | ... = ... | 1.0 | +| test.c:644:7:644:7 | j | 1.0 | +| test.c:644:7:644:12 | ... = ... | 1.0 | +| test.c:644:11:644:12 | 40 | 1.0 | +| test.c:645:7:645:7 | i | 1.0 | +| test.c:647:3:647:3 | i | 1.0 | +| test.c:647:3:647:15 | ... = ... | 1.0 | +| test.c:647:7:647:15 | (...) | 1.0 | +| test.c:647:8:647:8 | j | 1.0 | +| test.c:647:8:647:14 | ... += ... | 1.0 | +| test.c:647:13:647:14 | 10 | 1.0 | +| test.c:648:7:648:7 | i | 1.0 | +| test.c:650:3:650:3 | i | 1.0 | +| test.c:650:3:650:20 | ... = ... | 1.0 | +| test.c:650:7:650:8 | 20 | 1.0 | +| test.c:650:7:650:20 | ... + ... | 1.0 | +| test.c:650:12:650:20 | (...) | 1.0 | +| test.c:650:13:650:13 | j | 1.0 | +| test.c:650:13:650:19 | ... -= ... | 1.0 | +| test.c:650:18:650:19 | 10 | 1.0 | +| test.c:651:7:651:7 | i | 1.0 | +| test.c:656:14:656:15 | 0 | 1.0 | +| test.c:658:7:658:7 | 3 | 1.0 | +| test.c:658:7:658:7 | (unsigned int)... | 1.0 | +| test.c:658:7:658:12 | ... <= ... | 1.0 | +| test.c:658:7:658:23 | ... && ... | 1.0 | +| test.c:658:7:658:33 | ... && ... | 1.0 | +| test.c:658:7:658:44 | ... && ... | 1.0 | +| test.c:658:12:658:12 | a | 1.0 | +| test.c:658:17:658:17 | a | 1.0 | +| test.c:658:17:658:23 | ... <= ... | 1.0 | +| test.c:658:22:658:23 | 11 | 1.0 | +| test.c:658:22:658:23 | (unsigned int)... | 1.0 | +| test.c:658:28:658:28 | 5 | 1.0 | +| test.c:658:28:658:28 | (unsigned int)... | 1.0 | +| test.c:658:28:658:33 | ... <= ... | 1.0 | +| test.c:658:33:658:33 | b | 1.0 | +| test.c:658:38:658:38 | b | 1.0 | +| test.c:658:38:658:44 | ... <= ... | 1.0 | +| test.c:658:43:658:44 | 23 | 1.0 | +| test.c:658:43:658:44 | (unsigned int)... | 1.0 | +| test.c:659:13:659:13 | a | 1.0 | +| test.c:659:13:659:15 | (int)... | 1.0 | +| test.c:659:13:659:15 | ... * ... | 1.0 | +| test.c:659:15:659:15 | b | 1.0 | +| test.c:660:5:660:9 | total | 1.0 | +| test.c:660:5:660:14 | ... += ... | 1.0 | +| test.c:660:14:660:14 | r | 1.0 | +| test.c:662:7:662:7 | 3 | 1.0 | +| test.c:662:7:662:7 | (unsigned int)... | 1.0 | +| test.c:662:7:662:12 | ... <= ... | 1.0 | +| test.c:662:7:662:23 | ... && ... | 1.0 | +| test.c:662:7:662:33 | ... && ... | 1.0 | +| test.c:662:7:662:44 | ... && ... | 1.0 | +| test.c:662:12:662:12 | a | 2.0 | +| test.c:662:17:662:17 | a | 2.0 | +| test.c:662:17:662:23 | ... <= ... | 1.0 | +| test.c:662:22:662:23 | 11 | 1.0 | +| test.c:662:22:662:23 | (unsigned int)... | 1.0 | +| test.c:662:28:662:28 | 0 | 1.0 | +| test.c:662:28:662:28 | (unsigned int)... | 1.0 | +| test.c:662:28:662:33 | ... <= ... | 1.0 | +| test.c:662:33:662:33 | b | 3.0 | +| test.c:662:38:662:38 | b | 3.0 | +| test.c:662:38:662:44 | ... <= ... | 1.0 | +| test.c:662:43:662:44 | 23 | 1.0 | +| test.c:662:43:662:44 | (unsigned int)... | 1.0 | +| test.c:663:13:663:13 | a | 2.0 | +| test.c:663:13:663:15 | (int)... | 6.0 | +| test.c:663:13:663:15 | ... * ... | 6.0 | +| test.c:663:15:663:15 | b | 3.0 | +| test.c:664:5:664:9 | total | 2.0 | +| test.c:664:5:664:14 | ... += ... | 12.0 | +| test.c:664:14:664:14 | r | 6.0 | +| test.c:666:7:666:7 | 3 | 1.0 | +| test.c:666:7:666:7 | (unsigned int)... | 1.0 | +| test.c:666:7:666:12 | ... <= ... | 1.0 | +| test.c:666:7:666:23 | ... && ... | 1.0 | +| test.c:666:7:666:34 | ... && ... | 1.0 | +| test.c:666:7:666:45 | ... && ... | 1.0 | +| test.c:666:12:666:12 | a | 4.0 | +| test.c:666:17:666:17 | a | 4.0 | +| test.c:666:17:666:23 | ... <= ... | 1.0 | +| test.c:666:22:666:23 | 11 | 1.0 | +| test.c:666:22:666:23 | (unsigned int)... | 1.0 | +| test.c:666:28:666:29 | 13 | 1.0 | +| test.c:666:28:666:29 | (unsigned int)... | 1.0 | +| test.c:666:28:666:34 | ... <= ... | 1.0 | +| test.c:666:34:666:34 | b | 9.0 | +| test.c:666:39:666:39 | b | 9.0 | +| test.c:666:39:666:45 | ... <= ... | 1.0 | +| test.c:666:44:666:45 | 23 | 1.0 | +| test.c:666:44:666:45 | (unsigned int)... | 1.0 | +| test.c:667:13:667:13 | a | 4.0 | +| test.c:667:13:667:15 | (int)... | 36.0 | +| test.c:667:13:667:15 | ... * ... | 36.0 | +| test.c:667:15:667:15 | b | 9.0 | +| test.c:668:5:668:9 | total | 14.0 | +| test.c:668:5:668:14 | ... += ... | 504.0 | +| test.c:668:14:668:14 | r | 36.0 | +| test.c:671:10:671:14 | total | 518.0 | +| test.c:675:14:675:15 | 0 | 1.0 | +| test.c:677:7:677:7 | 5 | 1.0 | +| test.c:677:7:677:7 | (unsigned int)... | 1.0 | +| test.c:677:7:677:12 | ... <= ... | 1.0 | +| test.c:677:7:677:23 | ... && ... | 1.0 | +| test.c:677:12:677:12 | b | 1.0 | +| test.c:677:17:677:17 | b | 1.0 | +| test.c:677:17:677:23 | ... <= ... | 1.0 | +| test.c:677:22:677:23 | 23 | 1.0 | +| test.c:677:22:677:23 | (unsigned int)... | 1.0 | +| test.c:678:13:678:14 | 11 | 1.0 | +| test.c:678:13:678:14 | (unsigned int)... | 1.0 | +| test.c:678:13:678:16 | (int)... | 1.0 | +| test.c:678:13:678:16 | ... * ... | 1.0 | +| test.c:678:16:678:16 | b | 1.0 | +| test.c:679:5:679:9 | total | 1.0 | +| test.c:679:5:679:14 | ... += ... | 1.0 | +| test.c:679:14:679:14 | r | 1.0 | +| test.c:681:7:681:7 | 0 | 1.0 | +| test.c:681:7:681:7 | (unsigned int)... | 1.0 | +| test.c:681:7:681:12 | ... <= ... | 1.0 | +| test.c:681:7:681:23 | ... && ... | 1.0 | +| test.c:681:12:681:12 | b | 2.0 | +| test.c:681:17:681:17 | b | 2.0 | +| test.c:681:17:681:23 | ... <= ... | 1.0 | +| test.c:681:22:681:23 | 23 | 1.0 | +| test.c:681:22:681:23 | (unsigned int)... | 1.0 | +| test.c:682:13:682:14 | 11 | 1.0 | +| test.c:682:13:682:14 | (unsigned int)... | 1.0 | +| test.c:682:13:682:16 | (int)... | 2.0 | +| test.c:682:13:682:16 | ... * ... | 2.0 | +| test.c:682:16:682:16 | b | 2.0 | +| test.c:683:5:683:9 | total | 2.0 | +| test.c:683:5:683:14 | ... += ... | 4.0 | +| test.c:683:14:683:14 | r | 2.0 | +| test.c:685:7:685:8 | 13 | 1.0 | +| test.c:685:7:685:8 | (unsigned int)... | 1.0 | +| test.c:685:7:685:13 | ... <= ... | 1.0 | +| test.c:685:7:685:24 | ... && ... | 1.0 | +| test.c:685:13:685:13 | b | 4.0 | +| test.c:685:18:685:18 | b | 4.0 | +| test.c:685:18:685:24 | ... <= ... | 1.0 | +| test.c:685:23:685:24 | 23 | 1.0 | +| test.c:685:23:685:24 | (unsigned int)... | 1.0 | +| test.c:686:13:686:14 | 11 | 1.0 | +| test.c:686:13:686:14 | (unsigned int)... | 1.0 | +| test.c:686:13:686:16 | (int)... | 4.0 | +| test.c:686:13:686:16 | ... * ... | 4.0 | +| test.c:686:16:686:16 | b | 4.0 | +| test.c:687:5:687:9 | total | 6.0 | +| test.c:687:5:687:14 | ... += ... | 24.0 | +| test.c:687:14:687:14 | r | 4.0 | +| test.c:690:10:690:14 | total | 30.0 | +| test.c:695:3:695:3 | x | 1.0 | +| test.c:695:3:695:22 | ... = ... | 1.0 | +| test.c:695:7:695:7 | y | 1.0 | +| test.c:695:7:695:22 | ... = ... | 1.0 | +| test.c:695:11:695:22 | 1000000003 | 1.0 | +| test.c:696:3:696:4 | xy | 1.0 | +| test.c:696:3:696:12 | ... = ... | 1.0 | +| test.c:696:8:696:8 | x | 1.0 | +| test.c:696:8:696:12 | ... * ... | 1.0 | +| test.c:696:12:696:12 | y | 1.0 | +| test.c:697:10:697:11 | xy | 1.0 | +| test.c:702:3:702:3 | x | 1.0 | +| test.c:702:3:702:14 | ... = ... | 1.0 | +| test.c:702:7:702:14 | 274177 | 1.0 | +| test.c:703:3:703:3 | y | 1.0 | +| test.c:703:3:703:22 | ... = ... | 1.0 | +| test.c:703:7:703:22 | 67280421310721 | 1.0 | +| test.c:704:3:704:4 | xy | 1.0 | +| test.c:704:3:704:12 | ... = ... | 1.0 | +| test.c:704:8:704:8 | x | 1.0 | +| test.c:704:8:704:12 | ... * ... | 1.0 | +| test.c:704:12:704:12 | y | 1.0 | +| test.c:705:10:705:11 | xy | 1.0 | +| test.c:709:7:709:8 | ui | 1.0 | +| test.c:709:7:709:14 | ... >= ... | 1.0 | +| test.c:709:13:709:14 | 10 | 1.0 | +| test.c:709:13:709:14 | (unsigned int)... | 1.0 | +| test.c:710:28:710:44 | (unsigned long)... | 1.0 | +| test.c:710:28:710:49 | ... * ... | 1.0 | +| test.c:710:43:710:44 | ui | 1.0 | +| test.c:710:48:710:49 | (unsigned long)... | 1.0 | +| test.c:710:48:710:49 | ui | 1.0 | +| test.c:711:12:711:17 | result | 1.0 | +| test.c:713:7:713:8 | ul | 1.0 | +| test.c:713:7:713:14 | ... >= ... | 1.0 | +| test.c:713:13:713:14 | 10 | 1.0 | +| test.c:713:13:713:14 | (unsigned long)... | 1.0 | +| test.c:714:28:714:29 | ul | 1.0 | +| test.c:714:28:714:34 | ... * ... | 1.0 | +| test.c:714:33:714:34 | ul | 1.0 | +| test.c:715:12:715:17 | result | 1.0 | +| test.c:717:10:717:10 | 0 | 1.0 | +| test.c:717:10:717:10 | (unsigned long)... | 1.0 | +| test.c:721:7:721:8 | ui | 1.0 | +| test.c:721:7:721:14 | ... <= ... | 1.0 | +| test.c:721:7:721:25 | ... && ... | 1.0 | +| test.c:721:13:721:14 | 10 | 1.0 | +| test.c:721:13:721:14 | (unsigned int)... | 1.0 | +| test.c:721:19:721:20 | ui | 1.0 | +| test.c:721:19:721:25 | ... >= ... | 1.0 | +| test.c:721:25:721:25 | 2 | 1.0 | +| test.c:721:25:721:25 | (unsigned int)... | 1.0 | +| test.c:722:5:722:6 | ui | 1.0 | +| test.c:722:5:722:16 | ... *= ... | 1.0 | +| test.c:722:11:722:12 | ui | 1.0 | +| test.c:722:11:722:16 | ... + ... | 1.0 | +| test.c:722:16:722:16 | 0 | 1.0 | +| test.c:722:16:722:16 | (unsigned int)... | 1.0 | +| test.c:723:12:723:13 | (unsigned long)... | 1.0 | +| test.c:723:12:723:13 | ui | 1.0 | +| test.c:726:26:726:27 | 10 | 1.0 | +| test.c:726:26:726:27 | (unsigned int)... | 1.0 | +| test.c:727:3:727:9 | uiconst | 1.0 | +| test.c:727:3:727:14 | ... *= ... | 1.0 | +| test.c:727:14:727:14 | 4 | 1.0 | +| test.c:727:14:727:14 | (unsigned int)... | 1.0 | +| test.c:729:27:729:28 | 10 | 1.0 | +| test.c:729:27:729:28 | (unsigned long)... | 1.0 | +| test.c:730:3:730:9 | ulconst | 1.0 | +| test.c:730:3:730:14 | ... *= ... | 1.0 | +| test.c:730:14:730:14 | 4 | 1.0 | +| test.c:730:14:730:14 | (unsigned long)... | 1.0 | +| test.c:731:10:731:16 | (unsigned long)... | 1.0 | +| test.c:731:10:731:16 | uiconst | 1.0 | +| test.c:731:10:731:26 | ... + ... | 1.0 | +| test.c:731:20:731:26 | ulconst | 1.0 | +| test.c:735:7:735:7 | i | 1.0 | +| test.c:735:7:735:13 | ... >= ... | 1.0 | +| test.c:735:7:735:23 | ... && ... | 1.0 | +| test.c:735:12:735:13 | - ... | 1.0 | +| test.c:735:13:735:13 | 1 | 1.0 | +| test.c:735:18:735:18 | i | 1.0 | +| test.c:735:18:735:23 | ... <= ... | 1.0 | +| test.c:735:23:735:23 | 2 | 1.0 | +| test.c:736:5:736:5 | i | 1.0 | +| test.c:736:5:736:13 | ... = ... | 1.0 | +| test.c:736:9:736:9 | 5 | 1.0 | +| test.c:736:9:736:13 | ... * ... | 1.0 | +| test.c:736:13:736:13 | i | 1.0 | +| test.c:737:9:737:9 | i | 1.0 | +| test.c:739:5:739:5 | i | 1.0 | +| test.c:739:5:739:14 | ... = ... | 1.0 | +| test.c:739:9:739:9 | i | 1.0 | +| test.c:739:9:739:14 | ... * ... | 1.0 | +| test.c:739:13:739:14 | - ... | 1.0 | +| test.c:739:14:739:14 | 3 | 1.0 | +| test.c:740:9:740:9 | i | 1.0 | +| test.c:742:5:742:5 | i | 1.0 | +| test.c:742:5:742:10 | ... *= ... | 1.0 | +| test.c:742:10:742:10 | 7 | 1.0 | +| test.c:743:9:743:9 | i | 1.0 | +| test.c:745:5:745:5 | i | 1.0 | +| test.c:745:5:745:12 | ... *= ... | 1.0 | +| test.c:745:10:745:12 | - ... | 1.0 | +| test.c:745:11:745:12 | 11 | 1.0 | +| test.c:746:9:746:9 | i | 1.0 | +| test.c:748:7:748:7 | i | 2.0 | +| test.c:748:7:748:13 | ... == ... | 1.0 | +| test.c:748:12:748:13 | - ... | 1.0 | +| test.c:748:13:748:13 | 1 | 1.0 | +| test.c:749:5:749:5 | i | 1.0 | +| test.c:749:5:749:27 | ... = ... | 2.0 | +| test.c:749:9:749:9 | i | 2.0 | +| test.c:749:9:749:27 | ... * ... | 2.0 | +| test.c:749:13:749:27 | (int)... | 1.0 | +| test.c:749:18:749:27 | 4294967295 | 1.0 | +| test.c:750:9:750:9 | i | 2.0 | +| test.c:752:3:752:3 | i | 1.0 | +| test.c:752:3:752:12 | ... = ... | 4.0 | +| test.c:752:7:752:7 | i | 4.0 | +| test.c:752:7:752:12 | ... * ... | 4.0 | +| test.c:752:11:752:12 | - ... | 1.0 | +| test.c:752:12:752:12 | 1 | 1.0 | +| test.c:753:10:753:10 | i | 4.0 | +| test.c:755:20:755:20 | 1 | 1.0 | +| test.c:755:20:755:20 | (signed char)... | 1.0 | +| test.c:756:3:756:3 | i | 1.0 | +| test.c:756:3:756:17 | ... = ... | 1.0 | +| test.c:756:7:756:17 | (...) | 1.0 | +| test.c:756:7:756:17 | (int)... | 1.0 | +| test.c:756:8:756:11 | * ... | 1.0 | +| test.c:756:8:756:16 | ... *= ... | 1.0 | +| test.c:756:10:756:11 | sc | 1.0 | +| test.c:756:16:756:16 | 2 | 1.0 | +| test.c:758:7:758:7 | i | 1.0 | +| test.c:760:10:760:10 | 0 | 1.0 | +| test.c:765:7:765:7 | (int)... | 1.0 | +| test.c:765:7:765:7 | n | 1.0 | +| test.c:767:7:767:7 | n | 1.0 | +| test.c:767:7:767:11 | ... > ... | 1.0 | +| test.c:767:11:767:11 | 0 | 1.0 | +| test.c:767:11:767:11 | (unsigned int)... | 1.0 | +| test.c:768:9:768:9 | (int)... | 1.0 | +| test.c:768:9:768:9 | n | 1.0 | +| test.c:771:7:771:7 | n | 2.0 | +| test.c:771:7:771:12 | ... != ... | 1.0 | +| test.c:771:12:771:12 | 0 | 1.0 | +| test.c:771:12:771:12 | (unsigned int)... | 1.0 | +| test.c:772:9:772:9 | (int)... | 2.0 | +| test.c:772:9:772:9 | n | 2.0 | +| test.c:774:9:774:9 | (int)... | 2.0 | +| test.c:774:9:774:9 | n | 2.0 | +| test.c:777:7:777:8 | ! ... | 1.0 | +| test.c:777:8:777:8 | n | 4.0 | +| test.c:778:9:778:9 | (int)... | 4.0 | +| test.c:778:9:778:9 | n | 4.0 | +| test.c:780:9:780:9 | (int)... | 4.0 | +| test.c:780:9:780:9 | n | 4.0 | +| test.c:783:10:783:10 | n | 13.0 | +| test.c:783:10:783:15 | ... != ... | 1.0 | +| test.c:783:15:783:15 | 0 | 1.0 | +| test.c:783:15:783:15 | (unsigned int)... | 1.0 | +| test.c:784:5:784:5 | n | 13.0 | +| test.c:784:5:784:7 | ... -- | 13.0 | +| test.c:787:7:787:7 | (int)... | 13.0 | +| test.c:787:7:787:7 | n | 13.0 | +| test.c:791:7:791:7 | (int)... | 1.0 | +| test.c:791:7:791:7 | n | 1.0 | +| test.c:791:7:791:11 | ... < ... | 1.0 | +| test.c:791:11:791:11 | 0 | 1.0 | +| test.c:794:7:794:7 | (int)... | 1.0 | +| test.c:794:7:794:7 | n | 1.0 | +| test.c:794:7:794:12 | ... == ... | 1.0 | +| test.c:794:12:794:12 | 0 | 1.0 | +| test.c:795:9:795:9 | (int)... | 1.0 | +| test.c:795:9:795:9 | n | 1.0 | +| test.c:797:9:797:9 | (int)... | 1.0 | +| test.c:797:9:797:9 | n | 1.0 | +| test.c:800:7:800:7 | n | 2.0 | +| test.c:801:9:801:9 | (int)... | 2.0 | +| test.c:801:9:801:9 | n | 2.0 | +| test.c:803:9:803:9 | (int)... | 2.0 | +| test.c:803:9:803:9 | n | 2.0 | +| test.c:806:10:806:10 | (int)... | 13.0 | +| test.c:806:10:806:10 | n | 13.0 | +| test.c:806:10:806:15 | ... != ... | 1.0 | +| test.c:806:15:806:15 | 0 | 1.0 | +| test.c:807:5:807:5 | n | 13.0 | +| test.c:807:5:807:7 | ... -- | 13.0 | +| test.c:810:7:810:7 | (int)... | 13.0 | +| test.c:810:7:810:7 | n | 13.0 | +| test.c:814:7:814:7 | (int)... | 1.0 | +| test.c:814:7:814:7 | n | 1.0 | +| test.c:814:7:814:12 | ... != ... | 1.0 | +| test.c:814:12:814:12 | 0 | 1.0 | +| test.c:815:9:815:9 | (int)... | 1.0 | +| test.c:815:9:815:9 | n | 1.0 | +| test.c:815:9:815:14 | ... >= ... | 1.0 | +| test.c:815:14:815:14 | 0 | 1.0 | +| test.c:816:11:816:11 | (int)... | 1.0 | +| test.c:816:11:816:11 | n | 1.0 | +| test.c:820:7:820:7 | (int)... | 2.0 | +| test.c:820:7:820:7 | n | 2.0 | +| test.c:820:7:820:12 | ... >= ... | 1.0 | +| test.c:820:12:820:12 | 5 | 1.0 | +| test.c:821:9:821:9 | 2 | 1.0 | +| test.c:821:9:821:13 | ... * ... | 2.0 | +| test.c:821:9:821:18 | ... - ... | 2.0 | +| test.c:821:9:821:23 | ... == ... | 1.0 | +| test.c:821:13:821:13 | (int)... | 2.0 | +| test.c:821:13:821:13 | n | 2.0 | +| test.c:821:17:821:18 | 10 | 1.0 | +| test.c:821:23:821:23 | 0 | 1.0 | +| test.c:824:9:824:9 | (int)... | 2.0 | +| test.c:824:9:824:9 | n | 2.0 | +| test.c:827:7:827:7 | (int)... | 4.0 | +| test.c:827:7:827:7 | n | 4.0 | +| test.c:827:7:827:17 | ... != ... | 1.0 | +| test.c:827:7:827:32 | ... && ... | 1.0 | +| test.c:827:12:827:17 | - ... | 1.0 | +| test.c:827:13:827:17 | 32768 | 1.0 | +| test.c:827:22:827:22 | (int)... | 4.0 | +| test.c:827:22:827:22 | n | 4.0 | +| test.c:827:22:827:32 | ... != ... | 1.0 | +| test.c:827:27:827:32 | - ... | 1.0 | +| test.c:827:28:827:32 | 32767 | 1.0 | +| test.c:828:9:828:9 | (int)... | 4.0 | +| test.c:828:9:828:9 | n | 4.0 | +| test.c:831:7:831:7 | (int)... | 8.0 | +| test.c:831:7:831:7 | n | 8.0 | +| test.c:831:7:831:12 | ... >= ... | 1.0 | +| test.c:831:12:831:12 | 0 | 1.0 | +| test.c:832:5:832:5 | n | 8.0 | +| test.c:832:5:832:14 | ... ? ... : ... | 64.0 | +| test.c:832:10:832:10 | (int)... | 8.0 | +| test.c:832:10:832:10 | n | 8.0 | +| test.c:832:14:832:14 | (int)... | 8.0 | +| test.c:832:14:832:14 | n | 8.0 | +| test.c:833:5:833:6 | ! ... | 1.0 | +| test.c:833:5:833:14 | ... ? ... : ... | 256.0 | +| test.c:833:6:833:6 | n | 16.0 | +| test.c:833:10:833:10 | (int)... | 16.0 | +| test.c:833:10:833:10 | n | 16.0 | +| test.c:833:14:833:14 | (int)... | 16.0 | +| test.c:833:14:833:14 | n | 16.0 | +| test.c:844:7:844:8 | (unsigned long)... | 1.0 | +| test.c:844:7:844:8 | ss | 1.0 | +| test.c:844:7:844:22 | ... < ... | 1.0 | +| test.c:844:12:844:22 | sizeof(int) | 1.0 | +| test.c:845:9:845:10 | (int)... | 1.0 | +| test.c:845:9:845:10 | ss | 1.0 | +| test.c:848:7:848:8 | (int)... | 2.0 | +| test.c:848:7:848:8 | ss | 2.0 | +| test.c:848:7:848:17 | ... < ... | 1.0 | +| test.c:848:12:848:17 | 32769 | 1.0 | +| test.c:849:9:849:10 | (int)... | 2.0 | +| test.c:849:9:849:10 | ss | 2.0 | +| test.c:852:7:852:15 | (int)... | 1.0 | +| test.c:852:7:852:15 | (short)... | 1.0 | +| test.c:852:7:852:20 | ... >= ... | 1.0 | +| test.c:852:14:852:15 | us | 1.0 | +| test.c:852:20:852:20 | 0 | 1.0 | +| test.c:853:9:853:10 | (int)... | 1.0 | +| test.c:853:9:853:10 | us | 1.0 | +| test.c:856:7:856:15 | (int)... | 2.0 | +| test.c:856:7:856:15 | (short)... | 2.0 | +| test.c:856:7:856:21 | ... >= ... | 1.0 | +| test.c:856:14:856:15 | us | 2.0 | +| test.c:856:20:856:21 | - ... | 1.0 | +| test.c:856:21:856:21 | 1 | 1.0 | +| test.c:857:9:857:10 | (int)... | 2.0 | +| test.c:857:9:857:10 | us | 2.0 | +| test.c:860:7:860:8 | (unsigned long)... | 4.0 | +| test.c:860:7:860:8 | ss | 4.0 | +| test.c:860:7:860:23 | ... >= ... | 1.0 | +| test.c:860:13:860:23 | sizeof(int) | 1.0 | +| test.c:861:9:861:10 | (int)... | 4.0 | +| test.c:861:9:861:10 | ss | 4.0 | +| test.c:864:7:864:8 | (int)... | 8.0 | +| test.c:864:7:864:8 | ss | 8.0 | +| test.c:864:7:864:12 | (unsigned long)... | 8.0 | +| test.c:864:7:864:12 | ... + ... | 8.0 | +| test.c:864:7:864:26 | ... < ... | 1.0 | +| test.c:864:12:864:12 | 1 | 1.0 | +| test.c:864:16:864:26 | sizeof(int) | 1.0 | +| test.c:865:9:865:10 | (int)... | 8.0 | +| test.c:865:9:865:10 | ss | 8.0 | +| test.c:871:8:871:8 | s | 1.0 | +| test.c:871:8:871:12 | ... = ... | 1.0 | +| test.c:871:12:871:12 | 0 | 1.0 | +| test.c:871:15:871:15 | s | 13.0 | +| test.c:871:15:871:20 | ... < ... | 1.0 | +| test.c:871:19:871:20 | 10 | 1.0 | +| test.c:871:23:871:23 | s | 13.0 | +| test.c:871:23:871:25 | ... ++ | 13.0 | +| test.c:872:18:872:18 | s | 13.0 | +| test.c:872:18:872:22 | ... + ... | 13.0 | +| test.c:872:22:872:22 | s | 13.0 | +| test.c:873:9:873:14 | result | 13.0 | +| test.c:878:10:878:11 | 0 | 1.0 | +| test.c:879:7:879:7 | i | 1.0 | +| test.c:879:7:879:11 | ... < ... | 1.0 | +| test.c:879:11:879:11 | 0 | 1.0 | +| test.c:880:9:880:9 | i | 1.0 | +| test.c:883:20:883:20 | 0 | 1.0 | +| test.c:883:20:883:20 | (unsigned int)... | 1.0 | +| test.c:884:7:884:7 | u | 1.0 | +| test.c:884:7:884:11 | ... < ... | 1.0 | +| test.c:884:11:884:11 | 0 | 1.0 | +| test.c:884:11:884:11 | (unsigned int)... | 1.0 | +| test.c:885:9:885:9 | (int)... | 1.0 | +| test.c:885:9:885:9 | u | 1.0 | +| test.c:890:12:890:12 | s | 1.0 | +| test.c:890:12:890:16 | ... % ... | 1.0 | +| test.c:890:16:890:16 | 5 | 1.0 | +| test.c:891:7:891:8 | s2 | 1.0 | +| test.c:896:7:896:7 | x | 1.0 | +| test.c:897:9:897:9 | y | 1.0 | +| test.c:897:9:897:14 | ... != ... | 1.0 | +| test.c:897:14:897:14 | 0 | 1.0 | +| test.c:898:12:898:12 | 0 | 1.0 | +| test.c:901:7:901:7 | y | 2.0 | +| test.c:910:7:910:7 | x | 1.0 | +| test.c:910:7:910:13 | ... >= ... | 1.0 | +| test.c:910:12:910:13 | 10 | 1.0 | +| test.c:915:7:915:7 | x | 13.0 | +| test.c:920:16:920:26 | 2147483647 | 1.0 | +| test.c:921:16:921:19 | 256 | 1.0 | +| test.c:922:7:922:13 | (...) | 1.0 | +| test.c:922:7:922:20 | ... <= ... | 1.0 | +| test.c:922:8:922:8 | x | 1.0 | +| test.c:922:8:922:12 | ... + ... | 1.0 | +| test.c:922:12:922:12 | y | 1.0 | +| test.c:922:18:922:20 | 512 | 1.0 | +| test.c:923:9:923:9 | x | 1.0 | +| test.c:924:9:924:9 | y | 1.0 | +| test.cpp:9:11:9:12 | - ... | 1.0 | +| test.cpp:9:12:9:12 | 1 | 1.0 | +| test.cpp:10:7:10:7 | (bool)... | 1.0 | +| test.cpp:10:7:10:7 | b | 1.0 | +| test.cpp:11:5:11:5 | x | 1.0 | +| test.cpp:11:5:11:14 | ... = ... | 1.0 | +| test.cpp:11:12:11:12 | call to operator[] | 1.0 | +| test.cpp:11:12:11:14 | (reference dereference) | 1.0 | +| test.cpp:11:13:11:13 | 3 | 1.0 | +| test.cpp:13:10:13:10 | x | 2.0 | +| test.cpp:18:12:18:31 | (int)... | 1.0 | +| test.cpp:18:12:18:31 | static_cast... | 1.0 | +| test.cpp:18:30:18:30 | x | 1.0 | +| test.cpp:19:10:19:11 | x0 | 1.0 | +| test.cpp:27:7:27:7 | y | 1.0 | +| test.cpp:27:7:27:12 | ... == ... | 1.0 | +| test.cpp:27:12:27:12 | 0 | 1.0 | +| test.cpp:28:5:28:5 | x | 1.0 | +| test.cpp:28:5:28:9 | ... = ... | 1.0 | +| test.cpp:28:9:28:9 | 0 | 1.0 | +| test.cpp:30:7:30:7 | y | 2.0 | +| test.cpp:30:7:30:13 | ... == ... | 1.0 | +| test.cpp:30:12:30:13 | - ... | 1.0 | +| test.cpp:30:13:30:13 | 1 | 1.0 | +| test.cpp:31:5:31:5 | x | 1.0 | +| test.cpp:31:5:31:10 | ... = ... | 1.0 | +| test.cpp:31:9:31:10 | - ... | 1.0 | +| test.cpp:31:10:31:10 | 1 | 1.0 | +| test.cpp:33:7:33:7 | y | 4.0 | +| test.cpp:33:7:33:12 | ... == ... | 1.0 | +| test.cpp:33:12:33:12 | 1 | 1.0 | +| test.cpp:34:5:34:5 | x | 1.0 | +| test.cpp:34:5:34:9 | ... = ... | 1.0 | +| test.cpp:34:9:34:9 | 1 | 1.0 | +| test.cpp:36:7:36:7 | y | 8.0 | +| test.cpp:36:7:36:15 | ... == ... | 1.0 | +| test.cpp:36:12:36:15 | - ... | 1.0 | +| test.cpp:36:13:36:15 | 128 | 1.0 | +| test.cpp:37:5:37:5 | x | 1.0 | +| test.cpp:37:5:37:12 | ... = ... | 1.0 | +| test.cpp:37:9:37:12 | - ... | 1.0 | +| test.cpp:37:10:37:12 | 128 | 1.0 | +| test.cpp:39:7:39:7 | y | 16.0 | +| test.cpp:39:7:39:14 | ... == ... | 1.0 | +| test.cpp:39:12:39:14 | 128 | 1.0 | +| test.cpp:40:5:40:5 | x | 1.0 | +| test.cpp:40:5:40:11 | ... = ... | 1.0 | +| test.cpp:40:9:40:11 | 128 | 1.0 | +| test.cpp:42:7:42:7 | y | 32.0 | +| test.cpp:42:7:42:16 | ... == ... | 1.0 | +| test.cpp:42:12:42:16 | - ... | 1.0 | +| test.cpp:42:13:42:16 | 1024 | 1.0 | +| test.cpp:43:5:43:5 | x | 1.0 | +| test.cpp:43:5:43:13 | ... = ... | 1.0 | +| test.cpp:43:9:43:13 | - ... | 1.0 | +| test.cpp:43:10:43:13 | 1024 | 1.0 | +| test.cpp:45:7:45:7 | y | 64.0 | +| test.cpp:45:7:45:15 | ... == ... | 1.0 | +| test.cpp:45:12:45:15 | 1024 | 1.0 | +| test.cpp:46:5:46:5 | x | 1.0 | +| test.cpp:46:5:46:12 | ... = ... | 1.0 | +| test.cpp:46:9:46:12 | 1024 | 1.0 | +| test.cpp:49:10:49:11 | 0 | 1.0 | +| test.cpp:51:7:51:7 | x | 8.0 | +| test.cpp:51:7:51:12 | ... == ... | 1.0 | +| test.cpp:51:12:51:12 | 0 | 1.0 | +| test.cpp:52:15:52:21 | (bool)... | 1.0 | +| test.cpp:52:21:52:21 | x | 8.0 | +| test.cpp:53:5:53:5 | t | 1.0 | +| test.cpp:53:5:53:16 | ... += ... | 8.0 | +| test.cpp:53:10:53:16 | (int)... | 8.0 | +| test.cpp:53:15:53:16 | xb | 8.0 | +| test.cpp:56:7:56:7 | x | 16.0 | +| test.cpp:56:7:56:11 | ... > ... | 1.0 | +| test.cpp:56:11:56:11 | 0 | 1.0 | +| test.cpp:57:15:57:21 | (bool)... | 1.0 | +| test.cpp:57:21:57:21 | x | 16.0 | +| test.cpp:58:5:58:5 | t | 9.0 | +| test.cpp:58:5:58:16 | ... += ... | 144.0 | +| test.cpp:58:10:58:16 | (int)... | 16.0 | +| test.cpp:58:15:58:16 | xb | 16.0 | +| test.cpp:61:7:61:7 | x | 32.0 | +| test.cpp:61:7:61:11 | ... < ... | 1.0 | +| test.cpp:61:11:61:11 | 0 | 1.0 | +| test.cpp:62:15:62:21 | (bool)... | 1.0 | +| test.cpp:62:21:62:21 | x | 32.0 | +| test.cpp:63:5:63:5 | t | 153.0 | +| test.cpp:63:5:63:16 | ... += ... | 4896.0 | +| test.cpp:63:10:63:16 | (int)... | 32.0 | +| test.cpp:63:15:63:16 | xb | 32.0 | +| test.cpp:66:13:66:19 | (bool)... | 1.0 | +| test.cpp:66:19:66:19 | x | 64.0 | +| test.cpp:67:3:67:3 | t | 5049.0 | +| test.cpp:67:3:67:14 | ... += ... | 323136.0 | +| test.cpp:67:8:67:14 | (int)... | 64.0 | +| test.cpp:67:13:67:14 | xb | 64.0 | +| test.cpp:69:10:69:10 | b | 1.0 | +| test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | +| test.cpp:69:15:69:21 | (bool)... | 1.0 | +| test.cpp:69:21:69:21 | t | 323136.0 | +| test.cpp:74:30:74:30 | (int)... | 1.0 | +| test.cpp:74:30:74:30 | c | 1.0 | +| test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | +| test.cpp:74:30:74:34 | ... + ... | 1.0 | +| test.cpp:74:34:74:34 | (int)... | 1.0 | +| test.cpp:74:34:74:34 | c | 1.0 | +| test.cpp:75:7:75:30 | (int)... | 1.0 | +| test.cpp:75:7:75:30 | (unsigned char)... | 1.0 | +| test.cpp:75:7:75:35 | ... == ... | 1.0 | +| test.cpp:75:22:75:30 | c_times_2 | 1.0 | +| test.cpp:75:35:75:35 | 0 | 1.0 | +| test.cpp:77:5:77:13 | c_times_2 | 1.0 | +| test.cpp:79:3:79:11 | c_times_2 | 1.0 | +| test.cpp:83:16:83:22 | (reference dereference) | 1.0 | +| test.cpp:83:16:83:22 | (reference to) | 1.0 | +| test.cpp:83:16:83:22 | aliased | 1.0 | +| test.cpp:85:7:85:7 | (reference dereference) | 1.0 | +| test.cpp:85:7:85:7 | i | 1.0 | +| test.cpp:85:7:85:12 | ... >= ... | 1.0 | +| test.cpp:85:12:85:12 | 2 | 1.0 | +| test.cpp:86:12:86:12 | (reference dereference) | 1.0 | +| test.cpp:86:12:86:12 | i | 1.0 | +| test.cpp:88:7:88:8 | (reference dereference) | 1.0 | +| test.cpp:88:7:88:8 | ci | 1.0 | +| test.cpp:88:7:88:13 | ... >= ... | 1.0 | +| test.cpp:88:13:88:13 | 2 | 1.0 | +| test.cpp:89:12:89:13 | (reference dereference) | 1.0 | +| test.cpp:89:12:89:13 | ci | 1.0 | +| test.cpp:91:7:91:13 | (reference dereference) | 1.0 | +| test.cpp:91:7:91:13 | aliased | 1.0 | +| test.cpp:91:7:91:18 | ... >= ... | 1.0 | +| test.cpp:91:18:91:18 | 2 | 1.0 | +| test.cpp:92:12:92:18 | (reference dereference) | 1.0 | +| test.cpp:92:12:92:18 | aliased | 1.0 | +| test.cpp:94:7:94:11 | (reference dereference) | 1.0 | +| test.cpp:94:7:94:11 | alias | 1.0 | +| test.cpp:94:7:94:16 | ... >= ... | 1.0 | +| test.cpp:94:16:94:16 | 2 | 1.0 | +| test.cpp:95:12:95:16 | (reference dereference) | 1.0 | +| test.cpp:95:12:95:16 | alias | 1.0 | +| test.cpp:97:10:97:10 | (reference dereference) | 13.0 | +| test.cpp:97:10:97:10 | i | 13.0 | +| test.cpp:97:10:97:19 | ... <= ... | 1.0 | +| test.cpp:97:15:97:19 | 12345 | 1.0 | +| test.cpp:97:22:97:22 | (reference dereference) | 13.0 | +| test.cpp:97:22:97:22 | i | 13.0 | +| test.cpp:97:22:97:24 | ... ++ | 13.0 | +| test.cpp:98:5:98:5 | (reference dereference) | 1.0 | +| test.cpp:98:5:98:5 | i | 1.0 | +| test.cpp:98:5:98:9 | ... = ... | 13.0 | +| test.cpp:98:9:98:9 | (reference dereference) | 13.0 | +| test.cpp:98:9:98:9 | i | 13.0 | +| test.cpp:99:5:99:5 | (reference dereference) | 13.0 | +| test.cpp:99:5:99:5 | i | 13.0 | +| test.cpp:102:10:102:10 | 0 | 1.0 | +| test.cpp:106:7:106:7 | (int)... | 1.0 | +| test.cpp:106:7:106:7 | n | 1.0 | +| test.cpp:106:7:106:11 | ... < ... | 1.0 | +| test.cpp:106:11:106:11 | 0 | 1.0 | +| test.cpp:109:7:109:7 | (bool)... | 1.0 | +| test.cpp:109:7:109:7 | n | 1.0 | +| test.cpp:110:5:110:5 | n | 1.0 | +| test.cpp:112:5:112:5 | n | 1.0 | +| test.cpp:115:7:115:8 | ! ... | 1.0 | +| test.cpp:115:8:115:8 | (bool)... | 1.0 | +| test.cpp:115:8:115:8 | n | 2.0 | +| test.cpp:116:5:116:5 | n | 2.0 | +| test.cpp:118:5:118:5 | n | 2.0 | +| test.cpp:121:3:121:3 | (bool)... | 1.0 | +| test.cpp:121:3:121:3 | n | 4.0 | +| test.cpp:121:3:121:12 | ... ? ... : ... | 16.0 | +| test.cpp:121:8:121:8 | n | 4.0 | +| test.cpp:121:12:121:12 | n | 4.0 | +| test.cpp:122:3:122:4 | ! ... | 1.0 | +| test.cpp:122:3:122:12 | ... ? ... : ... | 64.0 | +| test.cpp:122:4:122:4 | (bool)... | 1.0 | +| test.cpp:122:4:122:4 | n | 8.0 | +| test.cpp:122:8:122:8 | n | 8.0 | +| test.cpp:122:12:122:12 | n | 8.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql new file mode 100644 index 00000000000..ec82c44ef82 --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql @@ -0,0 +1,5 @@ +import cpp +import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis + +from Expr e +select e, SimpleRangeAnalysisInternal::estimateNrOfBounds(e) From 99103a57418756c8c019a347c7c19615cf121e54 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 16 Oct 2025 11:41:56 +0200 Subject: [PATCH 170/965] C++: Add additional test for range analysis --- .../SimpleRangeAnalysis/lowerBound.expected | 993 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 5939 +++++++++-------- .../SimpleRangeAnalysis/ternaryLower.expected | 144 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 144 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 12 + .../SimpleRangeAnalysis/upperBound.expected | 991 +-- 6 files changed, 4147 insertions(+), 4076 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 940f8301234..10e31040b5a 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,508 +485,519 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:420:10:420:11 | ip | 0 | -| test.c:420:20:420:21 | ip | 0 | -| test.c:420:40:420:41 | ip | 0 | -| test.c:421:14:421:15 | ip | 1 | -| test.c:422:14:422:15 | ip | 0 | -| test.c:422:34:422:35 | ip | 0 | -| test.c:423:11:423:12 | ip | 0 | -| test.c:424:13:424:14 | ip | 0 | -| test.c:425:14:425:15 | ip | 0 | -| test.c:426:14:426:15 | ip | 0 | -| test.c:427:15:427:16 | ip | 0 | -| test.c:427:41:427:42 | ip | 0 | -| test.c:427:52:427:53 | ip | 0 | -| test.c:427:67:427:68 | ip | 0 | -| test.c:427:78:427:79 | ip | 0 | -| test.c:428:18:428:19 | ip | 0 | -| test.c:429:23:429:24 | ip | 0 | -| test.c:429:34:429:35 | ip | 0 | -| test.c:430:25:430:26 | ip | 0 | -| test.c:431:20:431:21 | ip | 0 | -| test.c:432:11:432:12 | ip | 0 | -| test.c:432:26:432:27 | ip | 0 | -| test.c:433:16:433:17 | ip | 0 | -| test.c:434:16:434:17 | ip | 0 | -| test.c:435:16:435:17 | ip | 0 | -| test.c:436:17:436:18 | ip | 0 | -| test.c:437:22:437:23 | ip | 0 | -| test.c:437:33:437:34 | ip | 0 | -| test.c:437:48:437:49 | ip | 0 | -| test.c:437:59:437:60 | ip | 0 | -| test.c:438:20:438:21 | ip | 0 | -| test.c:439:25:439:26 | ip | 0 | -| test.c:439:36:439:37 | ip | 0 | -| test.c:440:27:440:28 | ip | 0 | -| test.c:441:22:441:23 | ip | 0 | -| test.c:442:15:442:16 | ip | 0 | -| test.c:442:30:442:31 | ip | 0 | -| test.c:443:11:443:12 | ip | 0 | -| test.c:444:12:444:13 | ip | 0 | -| test.c:445:12:445:13 | ip | 0 | -| test.c:446:13:446:14 | ip | 0 | -| test.c:446:39:446:40 | ip | 0 | -| test.c:446:50:446:51 | ip | 0 | -| test.c:446:65:446:66 | ip | 0 | -| test.c:446:76:446:77 | ip | 0 | +| test.c:420:7:420:9 | rhs | 0 | +| test.c:420:19:420:21 | rhs | 0 | +| test.c:421:7:421:9 | rhs | 0 | +| test.c:421:19:421:21 | rhs | 0 | +| test.c:422:7:422:9 | rhs | 0 | +| test.c:422:19:422:21 | rhs | 0 | +| test.c:423:7:423:9 | rhs | 0 | +| test.c:423:19:423:21 | rhs | 0 | +| test.c:424:7:424:9 | rhs | 0 | +| test.c:424:19:424:21 | rhs | 0 | +| test.c:425:10:425:12 | rhs | 0 | +| test.c:432:10:432:11 | ip | 0 | +| test.c:432:20:432:21 | ip | 0 | +| test.c:432:40:432:41 | ip | 0 | +| test.c:433:14:433:15 | ip | 1 | +| test.c:434:14:434:15 | ip | 0 | +| test.c:434:34:434:35 | ip | 0 | +| test.c:435:11:435:12 | ip | 0 | +| test.c:436:13:436:14 | ip | 0 | +| test.c:437:14:437:15 | ip | 0 | +| test.c:438:14:438:15 | ip | 0 | +| test.c:439:15:439:16 | ip | 0 | +| test.c:439:41:439:42 | ip | 0 | +| test.c:439:52:439:53 | ip | 0 | +| test.c:439:67:439:68 | ip | 0 | +| test.c:439:78:439:79 | ip | 0 | +| test.c:440:18:440:19 | ip | 0 | +| test.c:441:23:441:24 | ip | 0 | +| test.c:441:34:441:35 | ip | 0 | +| test.c:442:25:442:26 | ip | 0 | +| test.c:443:20:443:21 | ip | 0 | +| test.c:444:11:444:12 | ip | 0 | +| test.c:444:26:444:27 | ip | 0 | +| test.c:445:16:445:17 | ip | 0 | +| test.c:446:16:446:17 | ip | 0 | | test.c:447:16:447:17 | ip | 0 | -| test.c:448:21:448:22 | ip | 0 | -| test.c:448:32:448:33 | ip | 0 | -| test.c:449:23:449:24 | ip | 0 | -| test.c:450:18:450:19 | ip | 0 | -| test.c:451:11:451:12 | ip | 0 | -| test.c:451:17:451:18 | ip | 0 | -| test.c:451:37:451:38 | ip | 0 | -| test.c:451:43:451:44 | ip | 0 | -| test.c:452:14:452:15 | ip | 0 | -| test.c:453:14:453:15 | ip | 0 | -| test.c:454:14:454:15 | ip | 0 | -| test.c:455:15:455:16 | ip | 0 | -| test.c:455:41:455:42 | ip | 0 | -| test.c:455:52:455:53 | ip | 0 | -| test.c:455:67:455:68 | ip | 0 | -| test.c:455:78:455:79 | ip | 0 | -| test.c:456:18:456:19 | ip | 0 | -| test.c:457:23:457:24 | ip | 0 | -| test.c:457:34:457:35 | ip | 0 | -| test.c:458:25:458:26 | ip | 0 | -| test.c:459:20:459:21 | ip | 0 | -| test.c:460:14:460:15 | ip | 0 | -| test.c:460:20:460:21 | ip | 0 | -| test.c:461:16:461:17 | ip | 0 | -| test.c:462:12:462:13 | ip | 0 | -| test.c:463:14:463:15 | ip | 0 | -| test.c:464:15:464:16 | ip | 0 | -| test.c:465:16:465:17 | ip | 0 | -| test.c:466:16:466:17 | ip | 0 | -| test.c:467:17:467:18 | ip | 0 | -| test.c:468:22:468:23 | ip | 0 | -| test.c:468:33:468:34 | ip | 0 | -| test.c:468:48:468:49 | ip | 0 | -| test.c:468:59:468:60 | ip | 0 | -| test.c:469:20:469:21 | ip | 0 | +| test.c:448:17:448:18 | ip | 0 | +| test.c:449:22:449:23 | ip | 0 | +| test.c:449:33:449:34 | ip | 0 | +| test.c:449:48:449:49 | ip | 0 | +| test.c:449:59:449:60 | ip | 0 | +| test.c:450:20:450:21 | ip | 0 | +| test.c:451:25:451:26 | ip | 0 | +| test.c:451:36:451:37 | ip | 0 | +| test.c:452:27:452:28 | ip | 0 | +| test.c:453:22:453:23 | ip | 0 | +| test.c:454:15:454:16 | ip | 0 | +| test.c:454:30:454:31 | ip | 0 | +| test.c:455:11:455:12 | ip | 0 | +| test.c:456:12:456:13 | ip | 0 | +| test.c:457:12:457:13 | ip | 0 | +| test.c:458:13:458:14 | ip | 0 | +| test.c:458:39:458:40 | ip | 0 | +| test.c:458:50:458:51 | ip | 0 | +| test.c:458:65:458:66 | ip | 0 | +| test.c:458:76:458:77 | ip | 0 | +| test.c:459:16:459:17 | ip | 0 | +| test.c:460:21:460:22 | ip | 0 | +| test.c:460:32:460:33 | ip | 0 | +| test.c:461:23:461:24 | ip | 0 | +| test.c:462:18:462:19 | ip | 0 | +| test.c:463:11:463:12 | ip | 0 | +| test.c:463:17:463:18 | ip | 0 | +| test.c:463:37:463:38 | ip | 0 | +| test.c:463:43:463:44 | ip | 0 | +| test.c:464:14:464:15 | ip | 0 | +| test.c:465:14:465:15 | ip | 0 | +| test.c:466:14:466:15 | ip | 0 | +| test.c:467:15:467:16 | ip | 0 | +| test.c:467:41:467:42 | ip | 0 | +| test.c:467:52:467:53 | ip | 0 | +| test.c:467:67:467:68 | ip | 0 | +| test.c:467:78:467:79 | ip | 0 | +| test.c:468:18:468:19 | ip | 0 | +| test.c:469:23:469:24 | ip | 0 | +| test.c:469:34:469:35 | ip | 0 | | test.c:470:25:470:26 | ip | 0 | -| test.c:470:36:470:37 | ip | 0 | -| test.c:471:27:471:28 | ip | 0 | -| test.c:472:22:472:23 | ip | 0 | -| test.c:473:13:473:14 | ip | 0 | -| test.c:473:28:473:29 | ip | 0 | -| test.c:474:18:474:19 | ip | 0 | -| test.c:475:18:475:19 | ip | 0 | -| test.c:476:18:476:19 | ip | 0 | -| test.c:477:19:477:20 | ip | 0 | -| test.c:478:24:478:25 | ip | 0 | -| test.c:478:35:478:36 | ip | 0 | -| test.c:478:50:478:51 | ip | 0 | -| test.c:478:61:478:62 | ip | 0 | -| test.c:479:22:479:23 | ip | 0 | -| test.c:480:27:480:28 | ip | 0 | -| test.c:480:38:480:39 | ip | 0 | -| test.c:481:29:481:30 | ip | 0 | -| test.c:482:24:482:25 | ip | 0 | -| test.c:483:17:483:18 | ip | 0 | -| test.c:483:32:483:33 | ip | 0 | -| test.c:484:14:484:15 | ip | 0 | -| test.c:485:18:485:19 | ip | 0 | +| test.c:471:20:471:21 | ip | 0 | +| test.c:472:14:472:15 | ip | 0 | +| test.c:472:20:472:21 | ip | 0 | +| test.c:473:16:473:17 | ip | 0 | +| test.c:474:12:474:13 | ip | 0 | +| test.c:475:14:475:15 | ip | 0 | +| test.c:476:15:476:16 | ip | 0 | +| test.c:477:16:477:17 | ip | 0 | +| test.c:478:16:478:17 | ip | 0 | +| test.c:479:17:479:18 | ip | 0 | +| test.c:480:22:480:23 | ip | 0 | +| test.c:480:33:480:34 | ip | 0 | +| test.c:480:48:480:49 | ip | 0 | +| test.c:480:59:480:60 | ip | 0 | +| test.c:481:20:481:21 | ip | 0 | +| test.c:482:25:482:26 | ip | 0 | +| test.c:482:36:482:37 | ip | 0 | +| test.c:483:27:483:28 | ip | 0 | +| test.c:484:22:484:23 | ip | 0 | +| test.c:485:13:485:14 | ip | 0 | +| test.c:485:28:485:29 | ip | 0 | | test.c:486:18:486:19 | ip | 0 | -| test.c:487:19:487:20 | ip | 0 | -| test.c:488:24:488:25 | ip | 0 | -| test.c:488:35:488:36 | ip | 0 | -| test.c:488:50:488:51 | ip | 0 | -| test.c:488:61:488:62 | ip | 0 | -| test.c:489:22:489:23 | ip | 0 | -| test.c:490:27:490:28 | ip | 0 | -| test.c:490:38:490:39 | ip | 0 | -| test.c:491:29:491:30 | ip | 0 | -| test.c:492:24:492:25 | ip | 0 | -| test.c:493:17:493:18 | ip | 0 | -| test.c:493:23:493:24 | ip | 0 | -| test.c:493:43:493:44 | ip | 0 | -| test.c:493:49:493:50 | ip | 0 | -| test.c:494:16:494:17 | ip | 0 | -| test.c:495:16:495:17 | ip | 0 | -| test.c:496:16:496:17 | ip | 0 | -| test.c:497:17:497:18 | ip | 0 | -| test.c:498:22:498:23 | ip | 0 | -| test.c:498:33:498:34 | ip | 0 | -| test.c:498:48:498:49 | ip | 0 | -| test.c:498:59:498:60 | ip | 0 | -| test.c:499:20:499:21 | ip | 0 | -| test.c:500:25:500:26 | ip | 0 | -| test.c:500:36:500:37 | ip | 0 | -| test.c:501:27:501:28 | ip | 0 | -| test.c:502:22:502:23 | ip | 0 | -| test.c:503:16:503:17 | ip | 0 | -| test.c:503:22:503:23 | ip | 0 | -| test.c:504:18:504:19 | ip | 0 | -| test.c:505:14:505:15 | ip | 0 | -| test.c:506:14:506:15 | ip | 0 | -| test.c:506:24:506:25 | ip | 0 | -| test.c:506:44:506:45 | ip | 0 | -| test.c:507:16:507:17 | ip | 1 | +| test.c:487:18:487:19 | ip | 0 | +| test.c:488:18:488:19 | ip | 0 | +| test.c:489:19:489:20 | ip | 0 | +| test.c:490:24:490:25 | ip | 0 | +| test.c:490:35:490:36 | ip | 0 | +| test.c:490:50:490:51 | ip | 0 | +| test.c:490:61:490:62 | ip | 0 | +| test.c:491:22:491:23 | ip | 0 | +| test.c:492:27:492:28 | ip | 0 | +| test.c:492:38:492:39 | ip | 0 | +| test.c:493:29:493:30 | ip | 0 | +| test.c:494:24:494:25 | ip | 0 | +| test.c:495:17:495:18 | ip | 0 | +| test.c:495:32:495:33 | ip | 0 | +| test.c:496:14:496:15 | ip | 0 | +| test.c:497:18:497:19 | ip | 0 | +| test.c:498:18:498:19 | ip | 0 | +| test.c:499:19:499:20 | ip | 0 | +| test.c:500:24:500:25 | ip | 0 | +| test.c:500:35:500:36 | ip | 0 | +| test.c:500:50:500:51 | ip | 0 | +| test.c:500:61:500:62 | ip | 0 | +| test.c:501:22:501:23 | ip | 0 | +| test.c:502:27:502:28 | ip | 0 | +| test.c:502:38:502:39 | ip | 0 | +| test.c:503:29:503:30 | ip | 0 | +| test.c:504:24:504:25 | ip | 0 | +| test.c:505:17:505:18 | ip | 0 | +| test.c:505:23:505:24 | ip | 0 | +| test.c:505:43:505:44 | ip | 0 | +| test.c:505:49:505:50 | ip | 0 | +| test.c:506:16:506:17 | ip | 0 | +| test.c:507:16:507:17 | ip | 0 | | test.c:508:16:508:17 | ip | 0 | -| test.c:508:36:508:37 | ip | 0 | -| test.c:509:14:509:15 | ip | 0 | -| test.c:510:19:510:20 | ip | 0 | +| test.c:509:17:509:18 | ip | 0 | +| test.c:510:22:510:23 | ip | 0 | +| test.c:510:33:510:34 | ip | 0 | +| test.c:510:48:510:49 | ip | 0 | +| test.c:510:59:510:60 | ip | 0 | | test.c:511:20:511:21 | ip | 0 | -| test.c:512:20:512:21 | ip | 0 | -| test.c:513:21:513:22 | ip | 0 | -| test.c:514:26:514:27 | ip | 0 | -| test.c:514:37:514:38 | ip | 0 | -| test.c:514:52:514:53 | ip | 0 | -| test.c:514:63:514:64 | ip | 0 | -| test.c:515:24:515:25 | ip | 0 | -| test.c:516:29:516:30 | ip | 0 | -| test.c:516:40:516:41 | ip | 0 | -| test.c:517:31:517:32 | ip | 0 | -| test.c:518:26:518:27 | ip | 0 | -| test.c:519:17:519:18 | ip | 0 | -| test.c:519:32:519:33 | ip | 0 | -| test.c:520:22:520:23 | ip | 0 | -| test.c:521:22:521:23 | ip | 0 | -| test.c:522:22:522:23 | ip | 0 | -| test.c:523:23:523:24 | ip | 0 | -| test.c:524:28:524:29 | ip | 0 | -| test.c:524:39:524:40 | ip | 0 | -| test.c:524:54:524:55 | ip | 0 | -| test.c:524:65:524:66 | ip | 0 | -| test.c:525:26:525:27 | ip | 0 | -| test.c:526:31:526:32 | ip | 0 | -| test.c:526:42:526:43 | ip | 0 | -| test.c:527:33:527:34 | ip | 0 | -| test.c:528:28:528:29 | ip | 0 | -| test.c:529:21:529:22 | ip | 0 | -| test.c:529:36:529:37 | ip | 0 | -| test.c:530:17:530:18 | ip | 0 | -| test.c:531:18:531:19 | ip | 0 | -| test.c:532:18:532:19 | ip | 0 | -| test.c:533:19:533:20 | ip | 0 | -| test.c:534:24:534:25 | ip | 0 | -| test.c:534:35:534:36 | ip | 0 | -| test.c:534:50:534:51 | ip | 0 | -| test.c:534:61:534:62 | ip | 0 | -| test.c:535:22:535:23 | ip | 0 | -| test.c:536:27:536:28 | ip | 0 | -| test.c:536:38:536:39 | ip | 0 | -| test.c:537:29:537:30 | ip | 0 | -| test.c:538:24:538:25 | ip | 0 | -| test.c:539:17:539:18 | ip | 0 | -| test.c:539:23:539:24 | ip | 0 | -| test.c:539:43:539:44 | ip | 0 | -| test.c:539:49:539:50 | ip | 0 | -| test.c:540:20:540:21 | ip | 0 | -| test.c:541:20:541:21 | ip | 0 | -| test.c:542:20:542:21 | ip | 0 | -| test.c:543:21:543:22 | ip | 0 | -| test.c:544:26:544:27 | ip | 0 | -| test.c:544:37:544:38 | ip | 0 | -| test.c:544:52:544:53 | ip | 0 | -| test.c:544:63:544:64 | ip | 0 | -| test.c:545:24:545:25 | ip | 0 | -| test.c:546:29:546:30 | ip | 0 | -| test.c:546:40:546:41 | ip | 0 | -| test.c:547:31:547:32 | ip | 0 | -| test.c:548:26:548:27 | ip | 0 | -| test.c:549:20:549:21 | ip | 0 | -| test.c:549:26:549:27 | ip | 0 | -| test.c:550:22:550:23 | ip | 0 | -| test.c:551:18:551:19 | ip | 0 | -| test.c:552:16:552:17 | ip | 0 | -| test.c:553:17:553:18 | ip | 0 | -| test.c:554:18:554:19 | ip | 0 | -| test.c:555:18:555:19 | ip | 0 | -| test.c:556:19:556:20 | ip | 0 | +| test.c:512:25:512:26 | ip | 0 | +| test.c:512:36:512:37 | ip | 0 | +| test.c:513:27:513:28 | ip | 0 | +| test.c:514:22:514:23 | ip | 0 | +| test.c:515:16:515:17 | ip | 0 | +| test.c:515:22:515:23 | ip | 0 | +| test.c:516:18:516:19 | ip | 0 | +| test.c:517:14:517:15 | ip | 0 | +| test.c:518:14:518:15 | ip | 0 | +| test.c:518:24:518:25 | ip | 0 | +| test.c:518:44:518:45 | ip | 0 | +| test.c:519:16:519:17 | ip | 1 | +| test.c:520:16:520:17 | ip | 0 | +| test.c:520:36:520:37 | ip | 0 | +| test.c:521:14:521:15 | ip | 0 | +| test.c:522:19:522:20 | ip | 0 | +| test.c:523:20:523:21 | ip | 0 | +| test.c:524:20:524:21 | ip | 0 | +| test.c:525:21:525:22 | ip | 0 | +| test.c:526:26:526:27 | ip | 0 | +| test.c:526:37:526:38 | ip | 0 | +| test.c:526:52:526:53 | ip | 0 | +| test.c:526:63:526:64 | ip | 0 | +| test.c:527:24:527:25 | ip | 0 | +| test.c:528:29:528:30 | ip | 0 | +| test.c:528:40:528:41 | ip | 0 | +| test.c:529:31:529:32 | ip | 0 | +| test.c:530:26:530:27 | ip | 0 | +| test.c:531:17:531:18 | ip | 0 | +| test.c:531:32:531:33 | ip | 0 | +| test.c:532:22:532:23 | ip | 0 | +| test.c:533:22:533:23 | ip | 0 | +| test.c:534:22:534:23 | ip | 0 | +| test.c:535:23:535:24 | ip | 0 | +| test.c:536:28:536:29 | ip | 0 | +| test.c:536:39:536:40 | ip | 0 | +| test.c:536:54:536:55 | ip | 0 | +| test.c:536:65:536:66 | ip | 0 | +| test.c:537:26:537:27 | ip | 0 | +| test.c:538:31:538:32 | ip | 0 | +| test.c:538:42:538:43 | ip | 0 | +| test.c:539:33:539:34 | ip | 0 | +| test.c:540:28:540:29 | ip | 0 | +| test.c:541:21:541:22 | ip | 0 | +| test.c:541:36:541:37 | ip | 0 | +| test.c:542:17:542:18 | ip | 0 | +| test.c:543:18:543:19 | ip | 0 | +| test.c:544:18:544:19 | ip | 0 | +| test.c:545:19:545:20 | ip | 0 | +| test.c:546:24:546:25 | ip | 0 | +| test.c:546:35:546:36 | ip | 0 | +| test.c:546:50:546:51 | ip | 0 | +| test.c:546:61:546:62 | ip | 0 | +| test.c:547:22:547:23 | ip | 0 | +| test.c:548:27:548:28 | ip | 0 | +| test.c:548:38:548:39 | ip | 0 | +| test.c:549:29:549:30 | ip | 0 | +| test.c:550:24:550:25 | ip | 0 | +| test.c:551:17:551:18 | ip | 0 | +| test.c:551:23:551:24 | ip | 0 | +| test.c:551:43:551:44 | ip | 0 | +| test.c:551:49:551:50 | ip | 0 | +| test.c:552:20:552:21 | ip | 0 | +| test.c:553:20:553:21 | ip | 0 | +| test.c:554:20:554:21 | ip | 0 | +| test.c:555:21:555:22 | ip | 0 | +| test.c:556:26:556:27 | ip | 0 | +| test.c:556:37:556:38 | ip | 0 | +| test.c:556:52:556:53 | ip | 0 | +| test.c:556:63:556:64 | ip | 0 | | test.c:557:24:557:25 | ip | 0 | -| test.c:557:35:557:36 | ip | 0 | -| test.c:557:50:557:51 | ip | 0 | -| test.c:557:61:557:62 | ip | 0 | -| test.c:558:22:558:23 | ip | 0 | -| test.c:559:27:559:28 | ip | 0 | -| test.c:559:38:559:39 | ip | 0 | -| test.c:560:29:560:30 | ip | 0 | -| test.c:561:24:561:25 | ip | 0 | -| test.c:562:15:562:16 | ip | 0 | -| test.c:562:30:562:31 | ip | 0 | -| test.c:563:20:563:21 | ip | 0 | -| test.c:564:20:564:21 | ip | 0 | -| test.c:565:20:565:21 | ip | 0 | -| test.c:566:21:566:22 | ip | 0 | -| test.c:567:26:567:27 | ip | 0 | -| test.c:567:37:567:38 | ip | 0 | -| test.c:567:52:567:53 | ip | 0 | -| test.c:567:63:567:64 | ip | 0 | -| test.c:568:24:568:25 | ip | 0 | -| test.c:569:29:569:30 | ip | 0 | -| test.c:569:40:569:41 | ip | 0 | -| test.c:570:31:570:32 | ip | 0 | -| test.c:571:26:571:27 | ip | 0 | -| test.c:572:19:572:20 | ip | 0 | -| test.c:572:34:572:35 | ip | 0 | -| test.c:573:16:573:17 | ip | 0 | -| test.c:574:20:574:21 | ip | 0 | +| test.c:558:29:558:30 | ip | 0 | +| test.c:558:40:558:41 | ip | 0 | +| test.c:559:31:559:32 | ip | 0 | +| test.c:560:26:560:27 | ip | 0 | +| test.c:561:20:561:21 | ip | 0 | +| test.c:561:26:561:27 | ip | 0 | +| test.c:562:22:562:23 | ip | 0 | +| test.c:563:18:563:19 | ip | 0 | +| test.c:564:16:564:17 | ip | 0 | +| test.c:565:17:565:18 | ip | 0 | +| test.c:566:18:566:19 | ip | 0 | +| test.c:567:18:567:19 | ip | 0 | +| test.c:568:19:568:20 | ip | 0 | +| test.c:569:24:569:25 | ip | 0 | +| test.c:569:35:569:36 | ip | 0 | +| test.c:569:50:569:51 | ip | 0 | +| test.c:569:61:569:62 | ip | 0 | +| test.c:570:22:570:23 | ip | 0 | +| test.c:571:27:571:28 | ip | 0 | +| test.c:571:38:571:39 | ip | 0 | +| test.c:572:29:572:30 | ip | 0 | +| test.c:573:24:573:25 | ip | 0 | +| test.c:574:15:574:16 | ip | 0 | +| test.c:574:30:574:31 | ip | 0 | | test.c:575:20:575:21 | ip | 0 | -| test.c:576:21:576:22 | ip | 0 | -| test.c:577:26:577:27 | ip | 0 | -| test.c:577:37:577:38 | ip | 0 | -| test.c:577:52:577:53 | ip | 0 | -| test.c:577:63:577:64 | ip | 0 | -| test.c:578:24:578:25 | ip | 0 | -| test.c:579:29:579:30 | ip | 0 | -| test.c:579:40:579:41 | ip | 0 | -| test.c:580:31:580:32 | ip | 0 | -| test.c:581:26:581:27 | ip | 0 | -| test.c:582:19:582:20 | ip | 0 | -| test.c:582:25:582:26 | ip | 0 | -| test.c:582:45:582:46 | ip | 0 | -| test.c:582:51:582:52 | ip | 0 | -| test.c:583:18:583:19 | ip | 0 | -| test.c:584:18:584:19 | ip | 0 | -| test.c:585:18:585:19 | ip | 0 | -| test.c:586:19:586:20 | ip | 0 | -| test.c:587:24:587:25 | ip | 0 | -| test.c:587:35:587:36 | ip | 0 | -| test.c:587:50:587:51 | ip | 0 | -| test.c:587:61:587:62 | ip | 0 | -| test.c:588:22:588:23 | ip | 0 | -| test.c:589:27:589:28 | ip | 0 | -| test.c:589:38:589:39 | ip | 0 | -| test.c:590:29:590:30 | ip | 0 | -| test.c:591:24:591:25 | ip | 0 | -| test.c:592:18:592:19 | ip | 0 | -| test.c:592:24:592:25 | ip | 0 | -| test.c:593:20:593:21 | ip | 0 | -| test.c:594:16:594:17 | ip | 0 | -| test.c:595:10:595:23 | special_number | 0 | -| test.c:603:7:603:8 | c1 | -2147483648 | -| test.c:603:13:603:13 | x | 0 | -| test.c:604:7:604:8 | c2 | -2147483648 | -| test.c:604:13:604:13 | x | 0 | -| test.c:605:7:605:8 | c3 | -2147483648 | -| test.c:605:13:605:13 | x | 0 | -| test.c:606:7:606:8 | c4 | -2147483648 | -| test.c:606:13:606:13 | x | 0 | -| test.c:607:7:607:8 | c5 | -2147483648 | -| test.c:607:13:607:13 | x | 0 | -| test.c:608:7:608:8 | c1 | -2147483648 | -| test.c:608:13:608:14 | c2 | -2147483648 | -| test.c:608:19:608:19 | x | 0 | -| test.c:609:7:609:8 | c1 | -2147483648 | -| test.c:609:13:609:14 | c3 | -2147483648 | -| test.c:609:19:609:19 | x | 0 | -| test.c:610:7:610:8 | c1 | -2147483648 | -| test.c:610:13:610:14 | c4 | -2147483648 | -| test.c:610:19:610:19 | x | 0 | -| test.c:611:7:611:8 | c1 | -2147483648 | -| test.c:611:13:611:14 | c5 | -2147483648 | -| test.c:611:19:611:19 | x | 0 | -| test.c:612:7:612:8 | c2 | -2147483648 | -| test.c:612:13:612:14 | c3 | -2147483648 | -| test.c:612:19:612:19 | x | 0 | -| test.c:614:11:614:11 | x | 0 | -| test.c:614:15:614:15 | x | 0 | -| test.c:614:19:614:19 | x | 0 | -| test.c:614:23:614:23 | x | 0 | -| test.c:614:27:614:27 | x | 0 | -| test.c:614:31:614:31 | x | 0 | -| test.c:614:35:614:35 | x | 0 | -| test.c:614:39:614:39 | x | 0 | -| test.c:614:43:614:43 | x | 0 | -| test.c:614:47:614:47 | x | 0 | -| test.c:614:51:614:51 | x | 0 | -| test.c:614:55:614:55 | x | 0 | -| test.c:615:10:615:10 | y | -2147483648 | -| test.c:620:20:620:20 | x | 0 | -| test.c:620:30:620:30 | x | 0 | -| test.c:623:3:623:4 | y1 | 0 | -| test.c:623:11:623:11 | y | 0 | -| test.c:623:14:623:14 | y | 1 | -| test.c:624:3:624:4 | y2 | 0 | -| test.c:624:9:624:9 | y | 1 | -| test.c:624:14:624:14 | y | 2 | -| test.c:624:22:624:22 | y | 5 | -| test.c:625:10:625:11 | y1 | 1 | -| test.c:625:15:625:16 | y2 | 5 | -| test.c:633:3:633:3 | i | -2147483648 | -| test.c:634:7:634:7 | i | 10 | -| test.c:636:3:636:3 | i | -2147483648 | -| test.c:637:3:637:3 | i | 10 | -| test.c:638:7:638:7 | i | 20 | -| test.c:640:3:640:3 | i | -2147483648 | -| test.c:641:3:641:3 | i | 40 | -| test.c:642:7:642:7 | i | 30 | -| test.c:644:3:644:3 | i | -2147483648 | -| test.c:644:7:644:7 | j | -2147483648 | -| test.c:645:7:645:7 | i | 40 | -| test.c:647:3:647:3 | i | -2147483648 | -| test.c:647:8:647:8 | j | 40 | -| test.c:648:7:648:7 | i | 50 | -| test.c:650:3:650:3 | i | -2147483648 | -| test.c:650:13:650:13 | j | 50 | -| test.c:651:7:651:7 | i | 60 | -| test.c:658:12:658:12 | a | 0 | -| test.c:658:17:658:17 | a | 3 | -| test.c:658:33:658:33 | b | 0 | -| test.c:658:38:658:38 | b | 5 | -| test.c:659:13:659:13 | a | 3 | -| test.c:659:15:659:15 | b | 5 | -| test.c:660:5:660:9 | total | 0 | -| test.c:660:14:660:14 | r | 15 | -| test.c:662:12:662:12 | a | 0 | -| test.c:662:17:662:17 | a | 3 | -| test.c:662:33:662:33 | b | 0 | -| test.c:662:38:662:38 | b | 0 | -| test.c:663:13:663:13 | a | 3 | -| test.c:663:15:663:15 | b | 0 | -| test.c:664:5:664:9 | total | 0 | -| test.c:664:14:664:14 | r | 0 | -| test.c:666:12:666:12 | a | 0 | -| test.c:666:17:666:17 | a | 3 | -| test.c:666:34:666:34 | b | 0 | -| test.c:666:39:666:39 | b | 13 | -| test.c:667:13:667:13 | a | 3 | -| test.c:667:15:667:15 | b | 13 | -| test.c:668:5:668:9 | total | 0 | -| test.c:668:14:668:14 | r | 39 | -| test.c:671:10:671:14 | total | 0 | -| test.c:677:12:677:12 | b | 0 | -| test.c:677:17:677:17 | b | 5 | -| test.c:678:16:678:16 | b | 5 | -| test.c:679:5:679:9 | total | 0 | -| test.c:679:14:679:14 | r | 55 | -| test.c:681:12:681:12 | b | 0 | -| test.c:681:17:681:17 | b | 0 | -| test.c:682:16:682:16 | b | 0 | -| test.c:683:5:683:9 | total | 0 | -| test.c:683:14:683:14 | r | 0 | -| test.c:685:13:685:13 | b | 0 | -| test.c:685:18:685:18 | b | 13 | -| test.c:686:16:686:16 | b | 13 | -| test.c:687:5:687:9 | total | 0 | -| test.c:687:14:687:14 | r | 143 | -| test.c:690:10:690:14 | total | 0 | -| test.c:695:3:695:3 | x | 0 | -| test.c:695:7:695:7 | y | 0 | -| test.c:696:3:696:4 | xy | 0 | -| test.c:696:8:696:8 | x | 1000000003 | -| test.c:696:12:696:12 | y | 1000000003 | -| test.c:697:10:697:11 | xy | 1000000006000000000 | -| test.c:702:3:702:3 | x | 0 | -| test.c:703:3:703:3 | y | 0 | -| test.c:704:3:704:4 | xy | 0 | -| test.c:704:8:704:8 | x | 274177 | -| test.c:704:12:704:12 | y | 67280421310721 | -| test.c:705:10:705:11 | xy | 18446744073709551616 | -| test.c:709:7:709:8 | ui | 0 | -| test.c:710:43:710:44 | ui | 10 | -| test.c:710:48:710:49 | ui | 10 | -| test.c:711:12:711:17 | result | 100 | -| test.c:713:7:713:8 | ul | 0 | -| test.c:714:28:714:29 | ul | 10 | -| test.c:714:33:714:34 | ul | 10 | -| test.c:715:12:715:17 | result | 0 | +| test.c:576:20:576:21 | ip | 0 | +| test.c:577:20:577:21 | ip | 0 | +| test.c:578:21:578:22 | ip | 0 | +| test.c:579:26:579:27 | ip | 0 | +| test.c:579:37:579:38 | ip | 0 | +| test.c:579:52:579:53 | ip | 0 | +| test.c:579:63:579:64 | ip | 0 | +| test.c:580:24:580:25 | ip | 0 | +| test.c:581:29:581:30 | ip | 0 | +| test.c:581:40:581:41 | ip | 0 | +| test.c:582:31:582:32 | ip | 0 | +| test.c:583:26:583:27 | ip | 0 | +| test.c:584:19:584:20 | ip | 0 | +| test.c:584:34:584:35 | ip | 0 | +| test.c:585:16:585:17 | ip | 0 | +| test.c:586:20:586:21 | ip | 0 | +| test.c:587:20:587:21 | ip | 0 | +| test.c:588:21:588:22 | ip | 0 | +| test.c:589:26:589:27 | ip | 0 | +| test.c:589:37:589:38 | ip | 0 | +| test.c:589:52:589:53 | ip | 0 | +| test.c:589:63:589:64 | ip | 0 | +| test.c:590:24:590:25 | ip | 0 | +| test.c:591:29:591:30 | ip | 0 | +| test.c:591:40:591:41 | ip | 0 | +| test.c:592:31:592:32 | ip | 0 | +| test.c:593:26:593:27 | ip | 0 | +| test.c:594:19:594:20 | ip | 0 | +| test.c:594:25:594:26 | ip | 0 | +| test.c:594:45:594:46 | ip | 0 | +| test.c:594:51:594:52 | ip | 0 | +| test.c:595:18:595:19 | ip | 0 | +| test.c:596:18:596:19 | ip | 0 | +| test.c:597:18:597:19 | ip | 0 | +| test.c:598:19:598:20 | ip | 0 | +| test.c:599:24:599:25 | ip | 0 | +| test.c:599:35:599:36 | ip | 0 | +| test.c:599:50:599:51 | ip | 0 | +| test.c:599:61:599:62 | ip | 0 | +| test.c:600:22:600:23 | ip | 0 | +| test.c:601:27:601:28 | ip | 0 | +| test.c:601:38:601:39 | ip | 0 | +| test.c:602:29:602:30 | ip | 0 | +| test.c:603:24:603:25 | ip | 0 | +| test.c:604:18:604:19 | ip | 0 | +| test.c:604:24:604:25 | ip | 0 | +| test.c:605:20:605:21 | ip | 0 | +| test.c:606:16:606:17 | ip | 0 | +| test.c:607:10:607:23 | special_number | 0 | +| test.c:615:7:615:8 | c1 | -2147483648 | +| test.c:615:13:615:13 | x | 0 | +| test.c:616:7:616:8 | c2 | -2147483648 | +| test.c:616:13:616:13 | x | 0 | +| test.c:617:7:617:8 | c3 | -2147483648 | +| test.c:617:13:617:13 | x | 0 | +| test.c:618:7:618:8 | c4 | -2147483648 | +| test.c:618:13:618:13 | x | 0 | +| test.c:619:7:619:8 | c5 | -2147483648 | +| test.c:619:13:619:13 | x | 0 | +| test.c:620:7:620:8 | c1 | -2147483648 | +| test.c:620:13:620:14 | c2 | -2147483648 | +| test.c:620:19:620:19 | x | 0 | +| test.c:621:7:621:8 | c1 | -2147483648 | +| test.c:621:13:621:14 | c3 | -2147483648 | +| test.c:621:19:621:19 | x | 0 | +| test.c:622:7:622:8 | c1 | -2147483648 | +| test.c:622:13:622:14 | c4 | -2147483648 | +| test.c:622:19:622:19 | x | 0 | +| test.c:623:7:623:8 | c1 | -2147483648 | +| test.c:623:13:623:14 | c5 | -2147483648 | +| test.c:623:19:623:19 | x | 0 | +| test.c:624:7:624:8 | c2 | -2147483648 | +| test.c:624:13:624:14 | c3 | -2147483648 | +| test.c:624:19:624:19 | x | 0 | +| test.c:626:11:626:11 | x | 0 | +| test.c:626:15:626:15 | x | 0 | +| test.c:626:19:626:19 | x | 0 | +| test.c:626:23:626:23 | x | 0 | +| test.c:626:27:626:27 | x | 0 | +| test.c:626:31:626:31 | x | 0 | +| test.c:626:35:626:35 | x | 0 | +| test.c:626:39:626:39 | x | 0 | +| test.c:626:43:626:43 | x | 0 | +| test.c:626:47:626:47 | x | 0 | +| test.c:626:51:626:51 | x | 0 | +| test.c:626:55:626:55 | x | 0 | +| test.c:627:10:627:10 | y | -2147483648 | +| test.c:632:20:632:20 | x | 0 | +| test.c:632:30:632:30 | x | 0 | +| test.c:635:3:635:4 | y1 | 0 | +| test.c:635:11:635:11 | y | 0 | +| test.c:635:14:635:14 | y | 1 | +| test.c:636:3:636:4 | y2 | 0 | +| test.c:636:9:636:9 | y | 1 | +| test.c:636:14:636:14 | y | 2 | +| test.c:636:22:636:22 | y | 5 | +| test.c:637:10:637:11 | y1 | 1 | +| test.c:637:15:637:16 | y2 | 5 | +| test.c:645:3:645:3 | i | -2147483648 | +| test.c:646:7:646:7 | i | 10 | +| test.c:648:3:648:3 | i | -2147483648 | +| test.c:649:3:649:3 | i | 10 | +| test.c:650:7:650:7 | i | 20 | +| test.c:652:3:652:3 | i | -2147483648 | +| test.c:653:3:653:3 | i | 40 | +| test.c:654:7:654:7 | i | 30 | +| test.c:656:3:656:3 | i | -2147483648 | +| test.c:656:7:656:7 | j | -2147483648 | +| test.c:657:7:657:7 | i | 40 | +| test.c:659:3:659:3 | i | -2147483648 | +| test.c:659:8:659:8 | j | 40 | +| test.c:660:7:660:7 | i | 50 | +| test.c:662:3:662:3 | i | -2147483648 | +| test.c:662:13:662:13 | j | 50 | +| test.c:663:7:663:7 | i | 60 | +| test.c:670:12:670:12 | a | 0 | +| test.c:670:17:670:17 | a | 3 | +| test.c:670:33:670:33 | b | 0 | +| test.c:670:38:670:38 | b | 5 | +| test.c:671:13:671:13 | a | 3 | +| test.c:671:15:671:15 | b | 5 | +| test.c:672:5:672:9 | total | 0 | +| test.c:672:14:672:14 | r | 15 | +| test.c:674:12:674:12 | a | 0 | +| test.c:674:17:674:17 | a | 3 | +| test.c:674:33:674:33 | b | 0 | +| test.c:674:38:674:38 | b | 0 | +| test.c:675:13:675:13 | a | 3 | +| test.c:675:15:675:15 | b | 0 | +| test.c:676:5:676:9 | total | 0 | +| test.c:676:14:676:14 | r | 0 | +| test.c:678:12:678:12 | a | 0 | +| test.c:678:17:678:17 | a | 3 | +| test.c:678:34:678:34 | b | 0 | +| test.c:678:39:678:39 | b | 13 | +| test.c:679:13:679:13 | a | 3 | +| test.c:679:15:679:15 | b | 13 | +| test.c:680:5:680:9 | total | 0 | +| test.c:680:14:680:14 | r | 39 | +| test.c:683:10:683:14 | total | 0 | +| test.c:689:12:689:12 | b | 0 | +| test.c:689:17:689:17 | b | 5 | +| test.c:690:16:690:16 | b | 5 | +| test.c:691:5:691:9 | total | 0 | +| test.c:691:14:691:14 | r | 55 | +| test.c:693:12:693:12 | b | 0 | +| test.c:693:17:693:17 | b | 0 | +| test.c:694:16:694:16 | b | 0 | +| test.c:695:5:695:9 | total | 0 | +| test.c:695:14:695:14 | r | 0 | +| test.c:697:13:697:13 | b | 0 | +| test.c:697:18:697:18 | b | 13 | +| test.c:698:16:698:16 | b | 13 | +| test.c:699:5:699:9 | total | 0 | +| test.c:699:14:699:14 | r | 143 | +| test.c:702:10:702:14 | total | 0 | +| test.c:707:3:707:3 | x | 0 | +| test.c:707:7:707:7 | y | 0 | +| test.c:708:3:708:4 | xy | 0 | +| test.c:708:8:708:8 | x | 1000000003 | +| test.c:708:12:708:12 | y | 1000000003 | +| test.c:709:10:709:11 | xy | 1000000006000000000 | +| test.c:714:3:714:3 | x | 0 | +| test.c:715:3:715:3 | y | 0 | +| test.c:716:3:716:4 | xy | 0 | +| test.c:716:8:716:8 | x | 274177 | +| test.c:716:12:716:12 | y | 67280421310721 | +| test.c:717:10:717:11 | xy | 18446744073709551616 | | test.c:721:7:721:8 | ui | 0 | -| test.c:721:19:721:20 | ui | 0 | -| test.c:722:5:722:6 | ui | 2 | -| test.c:722:11:722:12 | ui | 2 | -| test.c:723:12:723:13 | ui | 4 | -| test.c:727:3:727:9 | uiconst | 10 | -| test.c:730:3:730:9 | ulconst | 10 | -| test.c:731:10:731:16 | uiconst | 40 | -| test.c:731:20:731:26 | ulconst | 40 | -| test.c:735:7:735:7 | i | -2147483648 | -| test.c:735:18:735:18 | i | -1 | -| test.c:736:5:736:5 | i | -2147483648 | -| test.c:736:13:736:13 | i | -1 | -| test.c:737:9:737:9 | i | -5 | -| test.c:739:5:739:5 | i | -2147483648 | -| test.c:739:9:739:9 | i | -5 | -| test.c:740:9:740:9 | i | -30 | -| test.c:742:5:742:5 | i | -30 | -| test.c:743:9:743:9 | i | -210 | -| test.c:745:5:745:5 | i | -210 | -| test.c:746:9:746:9 | i | -1155 | -| test.c:748:7:748:7 | i | -2147483648 | -| test.c:749:5:749:5 | i | -2147483648 | -| test.c:749:9:749:9 | i | -1 | -| test.c:750:9:750:9 | i | 1 | -| test.c:752:3:752:3 | i | -2147483648 | -| test.c:752:7:752:7 | i | -2147483648 | -| test.c:753:10:753:10 | i | -2147483648 | -| test.c:756:3:756:3 | i | -2147483648 | -| test.c:756:10:756:11 | sc | 1 | -| test.c:758:7:758:7 | i | -128 | -| test.c:765:7:765:7 | n | 0 | -| test.c:767:7:767:7 | n | 0 | -| test.c:768:9:768:9 | n | 1 | -| test.c:771:7:771:7 | n | 0 | -| test.c:772:9:772:9 | n | 1 | -| test.c:774:9:774:9 | n | 0 | -| test.c:777:8:777:8 | n | 0 | -| test.c:778:9:778:9 | n | 0 | +| test.c:722:43:722:44 | ui | 10 | +| test.c:722:48:722:49 | ui | 10 | +| test.c:723:12:723:17 | result | 100 | +| test.c:725:7:725:8 | ul | 0 | +| test.c:726:28:726:29 | ul | 10 | +| test.c:726:33:726:34 | ul | 10 | +| test.c:727:12:727:17 | result | 0 | +| test.c:733:7:733:8 | ui | 0 | +| test.c:733:19:733:20 | ui | 0 | +| test.c:734:5:734:6 | ui | 2 | +| test.c:734:11:734:12 | ui | 2 | +| test.c:735:12:735:13 | ui | 4 | +| test.c:739:3:739:9 | uiconst | 10 | +| test.c:742:3:742:9 | ulconst | 10 | +| test.c:743:10:743:16 | uiconst | 40 | +| test.c:743:20:743:26 | ulconst | 40 | +| test.c:747:7:747:7 | i | -2147483648 | +| test.c:747:18:747:18 | i | -1 | +| test.c:748:5:748:5 | i | -2147483648 | +| test.c:748:13:748:13 | i | -1 | +| test.c:749:9:749:9 | i | -5 | +| test.c:751:5:751:5 | i | -2147483648 | +| test.c:751:9:751:9 | i | -5 | +| test.c:752:9:752:9 | i | -30 | +| test.c:754:5:754:5 | i | -30 | +| test.c:755:9:755:9 | i | -210 | +| test.c:757:5:757:5 | i | -210 | +| test.c:758:9:758:9 | i | -1155 | +| test.c:760:7:760:7 | i | -2147483648 | +| test.c:761:5:761:5 | i | -2147483648 | +| test.c:761:9:761:9 | i | -1 | +| test.c:762:9:762:9 | i | 1 | +| test.c:764:3:764:3 | i | -2147483648 | +| test.c:764:7:764:7 | i | -2147483648 | +| test.c:765:10:765:10 | i | -2147483648 | +| test.c:768:3:768:3 | i | -2147483648 | +| test.c:768:10:768:11 | sc | 1 | +| test.c:770:7:770:7 | i | -128 | +| test.c:777:7:777:7 | n | 0 | +| test.c:779:7:779:7 | n | 0 | | test.c:780:9:780:9 | n | 1 | -| test.c:783:10:783:10 | n | 0 | -| test.c:784:5:784:5 | n | 1 | -| test.c:787:7:787:7 | n | 0 | -| test.c:791:7:791:7 | n | -32768 | -| test.c:794:7:794:7 | n | 0 | -| test.c:795:9:795:9 | n | 0 | -| test.c:797:9:797:9 | n | 1 | -| test.c:800:7:800:7 | n | 0 | -| test.c:801:9:801:9 | n | 1 | -| test.c:803:9:803:9 | n | 0 | -| test.c:806:10:806:10 | n | 0 | -| test.c:807:5:807:5 | n | 1 | -| test.c:810:7:810:7 | n | 0 | -| test.c:814:7:814:7 | n | -32768 | -| test.c:815:9:815:9 | n | -32768 | -| test.c:816:11:816:11 | n | 0 | -| test.c:820:7:820:7 | n | -32768 | -| test.c:821:13:821:13 | n | 5 | -| test.c:824:9:824:9 | n | 6 | -| test.c:827:7:827:7 | n | -32768 | -| test.c:827:22:827:22 | n | -32767 | -| test.c:828:9:828:9 | n | -32766 | -| test.c:831:7:831:7 | n | -32768 | -| test.c:832:5:832:5 | n | 0 | -| test.c:832:10:832:10 | n | 1 | -| test.c:832:14:832:14 | n | 0 | -| test.c:833:6:833:6 | n | 0 | -| test.c:833:10:833:10 | n | 0 | -| test.c:833:14:833:14 | n | 1 | -| test.c:844:7:844:8 | ss | -32768 | -| test.c:845:9:845:10 | ss | 0 | -| test.c:848:7:848:8 | ss | -32768 | -| test.c:849:9:849:10 | ss | -32768 | -| test.c:852:14:852:15 | us | 0 | -| test.c:853:9:853:10 | us | 0 | -| test.c:856:14:856:15 | us | 0 | -| test.c:857:9:857:10 | us | 0 | +| test.c:783:7:783:7 | n | 0 | +| test.c:784:9:784:9 | n | 1 | +| test.c:786:9:786:9 | n | 0 | +| test.c:789:8:789:8 | n | 0 | +| test.c:790:9:790:9 | n | 0 | +| test.c:792:9:792:9 | n | 1 | +| test.c:795:10:795:10 | n | 0 | +| test.c:796:5:796:5 | n | 1 | +| test.c:799:7:799:7 | n | 0 | +| test.c:803:7:803:7 | n | -32768 | +| test.c:806:7:806:7 | n | 0 | +| test.c:807:9:807:9 | n | 0 | +| test.c:809:9:809:9 | n | 1 | +| test.c:812:7:812:7 | n | 0 | +| test.c:813:9:813:9 | n | 1 | +| test.c:815:9:815:9 | n | 0 | +| test.c:818:10:818:10 | n | 0 | +| test.c:819:5:819:5 | n | 1 | +| test.c:822:7:822:7 | n | 0 | +| test.c:826:7:826:7 | n | -32768 | +| test.c:827:9:827:9 | n | -32768 | +| test.c:828:11:828:11 | n | 0 | +| test.c:832:7:832:7 | n | -32768 | +| test.c:833:13:833:13 | n | 5 | +| test.c:836:9:836:9 | n | 6 | +| test.c:839:7:839:7 | n | -32768 | +| test.c:839:22:839:22 | n | -32767 | +| test.c:840:9:840:9 | n | -32766 | +| test.c:843:7:843:7 | n | -32768 | +| test.c:844:5:844:5 | n | 0 | +| test.c:844:10:844:10 | n | 1 | +| test.c:844:14:844:14 | n | 0 | +| test.c:845:6:845:6 | n | 0 | +| test.c:845:10:845:10 | n | 0 | +| test.c:845:14:845:14 | n | 1 | +| test.c:856:7:856:8 | ss | -32768 | +| test.c:857:9:857:10 | ss | 0 | | test.c:860:7:860:8 | ss | -32768 | | test.c:861:9:861:10 | ss | -32768 | -| test.c:864:7:864:8 | ss | -32768 | -| test.c:865:9:865:10 | ss | -1 | -| test.c:871:8:871:8 | s | -2147483648 | -| test.c:871:15:871:15 | s | 0 | -| test.c:871:23:871:23 | s | 0 | -| test.c:872:18:872:18 | s | 0 | -| test.c:872:22:872:22 | s | 0 | -| test.c:873:9:873:14 | result | 0 | -| test.c:879:7:879:7 | i | 0 | -| test.c:880:9:880:9 | i | -2147483648 | -| test.c:884:7:884:7 | u | 0 | -| test.c:885:9:885:9 | u | 0 | -| test.c:890:12:890:12 | s | -2147483648 | -| test.c:891:7:891:8 | s2 | -4 | -| test.c:896:7:896:7 | x | -2147483648 | -| test.c:897:9:897:9 | y | -2147483648 | -| test.c:901:7:901:7 | y | -2147483648 | -| test.c:910:7:910:7 | x | -2147483648 | -| test.c:915:7:915:7 | x | -2147483648 | -| test.c:922:8:922:8 | x | 2147483647 | -| test.c:922:12:922:12 | y | 256 | -| test.c:923:9:923:9 | x | 2147483647 | -| test.c:924:9:924:9 | y | 256 | +| test.c:864:14:864:15 | us | 0 | +| test.c:865:9:865:10 | us | 0 | +| test.c:868:14:868:15 | us | 0 | +| test.c:869:9:869:10 | us | 0 | +| test.c:872:7:872:8 | ss | -32768 | +| test.c:873:9:873:10 | ss | -32768 | +| test.c:876:7:876:8 | ss | -32768 | +| test.c:877:9:877:10 | ss | -1 | +| test.c:883:8:883:8 | s | -2147483648 | +| test.c:883:15:883:15 | s | 0 | +| test.c:883:23:883:23 | s | 0 | +| test.c:884:18:884:18 | s | 0 | +| test.c:884:22:884:22 | s | 0 | +| test.c:885:9:885:14 | result | 0 | +| test.c:891:7:891:7 | i | 0 | +| test.c:892:9:892:9 | i | -2147483648 | +| test.c:896:7:896:7 | u | 0 | +| test.c:897:9:897:9 | u | 0 | +| test.c:902:12:902:12 | s | -2147483648 | +| test.c:903:7:903:8 | s2 | -4 | +| test.c:908:7:908:7 | x | -2147483648 | +| test.c:909:9:909:9 | y | -2147483648 | +| test.c:913:7:913:7 | y | -2147483648 | +| test.c:922:7:922:7 | x | -2147483648 | +| test.c:927:7:927:7 | x | -2147483648 | +| test.c:934:8:934:8 | x | 2147483647 | +| test.c:934:12:934:12 | y | 256 | +| test.c:935:9:935:9 | x | 2147483647 | +| test.c:936:9:936:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index 4a252c34455..c3a711a4a0c 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -1402,2995 +1402,3032 @@ | test.c:411:59:411:59 | k | 1.0 | | test.c:411:63:411:63 | l | 1.0 | | test.c:413:10:413:15 | output | 1.0 | -| test.c:420:4:422:50 | (...) | 1.0 | -| test.c:420:4:505:26 | ... > ... | 1.0 | -| test.c:420:4:594:27 | ... ? ... : ... | 1.0736981431797959E233 | -| test.c:420:5:420:6 | 14 | 1.0 | -| test.c:420:5:420:6 | (unsigned int)... | 1.0 | -| test.c:420:5:420:11 | ... * ... | 1.0 | -| test.c:420:5:420:55 | ... > ... | 1.0 | -| test.c:420:5:422:49 | ... ? ... : ... | 1.0 | -| test.c:420:10:420:11 | ip | 1.0 | -| test.c:420:15:420:26 | (...) | 1.0 | -| test.c:420:15:420:31 | ... * ... | 1.0 | -| test.c:420:15:420:55 | ... + ... | 1.0 | -| test.c:420:16:420:16 | 2 | 1.0 | -| test.c:420:16:420:16 | (unsigned int)... | 1.0 | -| test.c:420:16:420:21 | ... * ... | 1.0 | -| test.c:420:16:420:25 | ... + ... | 1.0 | -| test.c:420:20:420:21 | ip | 1.0 | -| test.c:420:25:420:25 | 1 | 1.0 | -| test.c:420:25:420:25 | (unsigned int)... | 1.0 | -| test.c:420:30:420:31 | 17 | 1.0 | -| test.c:420:30:420:31 | (unsigned int)... | 1.0 | -| test.c:420:35:420:50 | (...) | 1.0 | -| test.c:420:35:420:55 | ... * ... | 1.0 | -| test.c:420:36:420:36 | 2 | 1.0 | -| test.c:420:36:420:36 | (unsigned int)... | 1.0 | -| test.c:420:36:420:41 | ... * ... | 1.0 | -| test.c:420:36:420:45 | ... + ... | 1.0 | -| test.c:420:36:420:49 | ... + ... | 1.0 | -| test.c:420:40:420:41 | ip | 1.0 | -| test.c:420:45:420:45 | 1 | 1.0 | -| test.c:420:45:420:45 | (unsigned int)... | 1.0 | -| test.c:420:49:420:49 | 1 | 1.0 | -| test.c:420:49:420:49 | (unsigned int)... | 1.0 | -| test.c:420:54:420:55 | 17 | 1.0 | -| test.c:420:54:420:55 | (unsigned int)... | 1.0 | -| test.c:421:9:421:10 | 14 | 1.0 | -| test.c:421:9:421:10 | (unsigned int)... | 1.0 | -| test.c:421:9:421:15 | ... * ... | 1.0 | -| test.c:421:14:421:15 | ip | 1.0 | -| test.c:422:9:422:20 | (...) | 1.0 | -| test.c:422:9:422:25 | ... * ... | 1.0 | -| test.c:422:9:422:49 | ... + ... | 1.0 | -| test.c:422:10:422:10 | 2 | 1.0 | -| test.c:422:10:422:10 | (unsigned int)... | 1.0 | -| test.c:422:10:422:15 | ... * ... | 1.0 | -| test.c:422:10:422:19 | ... + ... | 1.0 | -| test.c:422:14:422:15 | ip | 1.0 | -| test.c:422:19:422:19 | 1 | 1.0 | -| test.c:422:19:422:19 | (unsigned int)... | 1.0 | -| test.c:422:24:422:25 | 14 | 1.0 | -| test.c:422:24:422:25 | (unsigned int)... | 1.0 | -| test.c:422:29:422:44 | (...) | 1.0 | -| test.c:422:29:422:49 | ... * ... | 1.0 | -| test.c:422:30:422:30 | 2 | 1.0 | -| test.c:422:30:422:30 | (unsigned int)... | 1.0 | -| test.c:422:30:422:35 | ... * ... | 1.0 | -| test.c:422:30:422:39 | ... + ... | 1.0 | -| test.c:422:30:422:43 | ... + ... | 1.0 | -| test.c:422:34:422:35 | ip | 1.0 | -| test.c:422:39:422:39 | 1 | 1.0 | -| test.c:422:39:422:39 | (unsigned int)... | 1.0 | -| test.c:422:43:422:43 | 1 | 1.0 | -| test.c:422:43:422:43 | (unsigned int)... | 1.0 | -| test.c:422:48:422:49 | 17 | 1.0 | -| test.c:422:48:422:49 | (unsigned int)... | 1.0 | -| test.c:423:5:505:26 | (...) | 8.351961156990343E97 | -| test.c:423:6:423:6 | 2 | 1.0 | -| test.c:423:6:423:6 | (unsigned int)... | 1.0 | -| test.c:423:6:423:23 | ... * ... | 2.0 | -| test.c:423:6:442:42 | ... + ... | 5.95077871104E11 | -| test.c:423:6:462:24 | ... > ... | 1.0 | -| test.c:423:6:505:25 | ... ? ... : ... | 8.351961156990343E97 | -| test.c:423:10:423:23 | (...) | 2.0 | -| test.c:423:11:423:12 | ip | 2.0 | -| test.c:423:11:423:17 | ... * ... | 2.0 | -| test.c:423:11:423:22 | ... + ... | 2.0 | -| test.c:423:16:423:17 | 14 | 1.0 | -| test.c:423:16:423:17 | (unsigned int)... | 1.0 | -| test.c:423:21:423:22 | 32 | 1.0 | -| test.c:423:21:423:22 | (unsigned int)... | 1.0 | -| test.c:424:7:442:42 | (...) | 2.97538935552E11 | -| test.c:424:8:424:8 | 4 | 1.0 | -| test.c:424:8:424:8 | (unsigned int)... | 1.0 | -| test.c:424:8:424:25 | ... * ... | 2.0 | -| test.c:424:8:425:26 | ... + ... | 4.0 | -| test.c:424:8:426:26 | ... + ... | 8.0 | -| test.c:424:8:431:22 | ... + ... | 1728.0 | -| test.c:424:8:432:37 | ... > ... | 1.0 | -| test.c:424:8:442:41 | ... ? ... : ... | 2.97538935552E11 | -| test.c:424:12:424:25 | (...) | 2.0 | -| test.c:424:13:424:14 | ip | 2.0 | -| test.c:424:13:424:19 | ... * ... | 2.0 | -| test.c:424:13:424:24 | ... + ... | 2.0 | -| test.c:424:18:424:19 | 14 | 1.0 | -| test.c:424:18:424:19 | (unsigned int)... | 1.0 | -| test.c:424:23:424:24 | 32 | 1.0 | -| test.c:424:23:424:24 | (unsigned int)... | 1.0 | -| test.c:425:9:425:26 | (...) | 2.0 | -| test.c:425:10:425:10 | 2 | 1.0 | -| test.c:425:10:425:10 | (unsigned int)... | 1.0 | -| test.c:425:10:425:15 | ... * ... | 2.0 | -| test.c:425:10:425:20 | ... * ... | 2.0 | -| test.c:425:10:425:25 | ... + ... | 2.0 | -| test.c:425:14:425:15 | ip | 2.0 | -| test.c:425:19:425:20 | 14 | 1.0 | -| test.c:425:19:425:20 | (unsigned int)... | 1.0 | -| test.c:425:24:425:25 | 32 | 1.0 | -| test.c:425:24:425:25 | (unsigned int)... | 1.0 | -| test.c:426:9:426:9 | 2 | 1.0 | -| test.c:426:9:426:9 | (unsigned int)... | 1.0 | -| test.c:426:9:426:26 | ... * ... | 2.0 | -| test.c:426:13:426:26 | (...) | 2.0 | -| test.c:426:14:426:15 | ip | 2.0 | -| test.c:426:14:426:20 | ... * ... | 2.0 | -| test.c:426:14:426:25 | ... + ... | 2.0 | -| test.c:426:19:426:20 | 14 | 1.0 | -| test.c:426:19:426:20 | (unsigned int)... | 1.0 | -| test.c:426:24:426:25 | 64 | 1.0 | -| test.c:426:24:426:25 | (unsigned int)... | 1.0 | -| test.c:427:9:431:22 | (...) | 216.0 | -| test.c:427:10:427:21 | (...) | 2.0 | -| test.c:427:10:427:26 | ... * ... | 2.0 | -| test.c:427:10:427:80 | ... > ... | 1.0 | -| test.c:427:10:431:21 | ... ? ... : ... | 216.0 | -| test.c:427:11:427:11 | 2 | 1.0 | -| test.c:427:11:427:11 | (unsigned int)... | 1.0 | -| test.c:427:11:427:16 | ... * ... | 2.0 | -| test.c:427:11:427:20 | ... + ... | 2.0 | -| test.c:427:15:427:16 | ip | 2.0 | -| test.c:427:20:427:20 | 1 | 1.0 | -| test.c:427:20:427:20 | (unsigned int)... | 1.0 | -| test.c:427:25:427:26 | 14 | 1.0 | -| test.c:427:25:427:26 | (unsigned int)... | 1.0 | -| test.c:427:30:427:80 | (...) | 4.0 | -| test.c:427:31:427:32 | 17 | 1.0 | -| test.c:427:31:427:32 | (unsigned int)... | 1.0 | -| test.c:427:31:427:43 | ... * ... | 2.0 | -| test.c:427:31:427:53 | ... > ... | 1.0 | -| test.c:427:31:427:79 | ... ? ... : ... | 4.0 | -| test.c:427:36:427:43 | (...) | 2.0 | -| test.c:427:37:427:37 | 2 | 1.0 | -| test.c:427:37:427:37 | (unsigned int)... | 1.0 | -| test.c:427:37:427:42 | ... * ... | 2.0 | -| test.c:427:41:427:42 | ip | 2.0 | -| test.c:427:47:427:48 | 17 | 1.0 | -| test.c:427:47:427:48 | (unsigned int)... | 1.0 | -| test.c:427:47:427:53 | ... * ... | 2.0 | -| test.c:427:52:427:53 | ip | 2.0 | -| test.c:427:57:427:58 | 17 | 1.0 | -| test.c:427:57:427:58 | (unsigned int)... | 1.0 | -| test.c:427:57:427:69 | ... * ... | 2.0 | -| test.c:427:62:427:69 | (...) | 2.0 | -| test.c:427:63:427:63 | 2 | 1.0 | -| test.c:427:63:427:63 | (unsigned int)... | 1.0 | -| test.c:427:63:427:68 | ... * ... | 2.0 | -| test.c:427:67:427:68 | ip | 2.0 | -| test.c:427:73:427:74 | 17 | 1.0 | -| test.c:427:73:427:74 | (unsigned int)... | 1.0 | -| test.c:427:73:427:79 | ... * ... | 2.0 | -| test.c:427:78:427:79 | ip | 2.0 | -| test.c:428:13:428:24 | (...) | 6.0 | -| test.c:428:13:428:29 | ... * ... | 6.0 | -| test.c:428:14:428:14 | 2 | 1.0 | -| test.c:428:14:428:14 | (unsigned int)... | 1.0 | -| test.c:428:14:428:19 | ... * ... | 6.0 | -| test.c:428:14:428:23 | ... + ... | 6.0 | -| test.c:428:18:428:19 | ip | 6.0 | -| test.c:428:23:428:23 | 1 | 1.0 | -| test.c:428:23:428:23 | (unsigned int)... | 1.0 | -| test.c:428:28:428:29 | 14 | 1.0 | -| test.c:428:28:428:29 | (unsigned int)... | 1.0 | -| test.c:429:13:429:14 | 14 | 1.0 | -| test.c:429:13:429:14 | (unsigned int)... | 1.0 | -| test.c:429:13:429:25 | ... * ... | 6.0 | -| test.c:429:13:429:35 | ... > ... | 1.0 | -| test.c:429:13:431:21 | ... ? ... : ... | 36.0 | -| test.c:429:18:429:25 | (...) | 6.0 | -| test.c:429:19:429:19 | 2 | 1.0 | -| test.c:429:19:429:19 | (unsigned int)... | 1.0 | -| test.c:429:19:429:24 | ... * ... | 6.0 | -| test.c:429:23:429:24 | ip | 6.0 | -| test.c:429:29:429:30 | 17 | 1.0 | -| test.c:429:29:429:30 | (unsigned int)... | 1.0 | -| test.c:429:29:429:35 | ... * ... | 6.0 | -| test.c:429:34:429:35 | ip | 6.0 | -| test.c:430:15:430:16 | 14 | 1.0 | -| test.c:430:15:430:16 | (unsigned int)... | 1.0 | -| test.c:430:15:430:27 | ... * ... | 6.0 | -| test.c:430:20:430:27 | (...) | 6.0 | -| test.c:430:21:430:21 | 2 | 1.0 | -| test.c:430:21:430:21 | (unsigned int)... | 1.0 | -| test.c:430:21:430:26 | ... * ... | 6.0 | -| test.c:430:25:430:26 | ip | 6.0 | -| test.c:431:15:431:16 | 14 | 1.0 | -| test.c:431:15:431:16 | (unsigned int)... | 1.0 | -| test.c:431:15:431:21 | ... * ... | 6.0 | -| test.c:431:20:431:21 | ip | 6.0 | -| test.c:432:7:432:7 | 2 | 1.0 | -| test.c:432:7:432:7 | (unsigned int)... | 1.0 | -| test.c:432:7:432:12 | ... * ... | 18.0 | -| test.c:432:7:432:17 | ... * ... | 18.0 | -| test.c:432:7:432:37 | ... + ... | 324.0 | -| test.c:432:11:432:12 | ip | 18.0 | -| test.c:432:16:432:17 | 14 | 1.0 | -| test.c:432:16:432:17 | (unsigned int)... | 1.0 | -| test.c:432:21:432:32 | (...) | 18.0 | -| test.c:432:21:432:37 | ... * ... | 18.0 | -| test.c:432:22:432:22 | 2 | 1.0 | -| test.c:432:22:432:22 | (unsigned int)... | 1.0 | -| test.c:432:22:432:27 | ... * ... | 18.0 | -| test.c:432:22:432:31 | ... + ... | 18.0 | -| test.c:432:26:432:27 | ip | 18.0 | -| test.c:432:31:432:31 | 1 | 1.0 | -| test.c:432:31:432:31 | (unsigned int)... | 1.0 | -| test.c:432:36:432:37 | 17 | 1.0 | -| test.c:432:36:432:37 | (unsigned int)... | 1.0 | -| test.c:433:11:433:11 | 4 | 1.0 | -| test.c:433:11:433:11 | (unsigned int)... | 1.0 | -| test.c:433:11:433:28 | ... * ... | 18.0 | -| test.c:433:11:434:28 | ... + ... | 324.0 | -| test.c:433:11:435:28 | ... + ... | 5832.0 | -| test.c:433:11:441:24 | ... + ... | 9.18330048E8 | -| test.c:433:15:433:28 | (...) | 18.0 | -| test.c:433:16:433:17 | ip | 18.0 | -| test.c:433:16:433:22 | ... * ... | 18.0 | -| test.c:433:16:433:27 | ... + ... | 18.0 | -| test.c:433:21:433:22 | 14 | 1.0 | -| test.c:433:21:433:22 | (unsigned int)... | 1.0 | -| test.c:433:26:433:27 | 32 | 1.0 | -| test.c:433:26:433:27 | (unsigned int)... | 1.0 | -| test.c:434:11:434:28 | (...) | 18.0 | -| test.c:434:12:434:12 | 2 | 1.0 | -| test.c:434:12:434:12 | (unsigned int)... | 1.0 | -| test.c:434:12:434:17 | ... * ... | 18.0 | -| test.c:434:12:434:22 | ... * ... | 18.0 | -| test.c:434:12:434:27 | ... + ... | 18.0 | -| test.c:434:16:434:17 | ip | 18.0 | -| test.c:434:21:434:22 | 14 | 1.0 | -| test.c:434:21:434:22 | (unsigned int)... | 1.0 | -| test.c:434:26:434:27 | 32 | 1.0 | -| test.c:434:26:434:27 | (unsigned int)... | 1.0 | -| test.c:435:11:435:11 | 2 | 1.0 | -| test.c:435:11:435:11 | (unsigned int)... | 1.0 | -| test.c:435:11:435:28 | ... * ... | 18.0 | -| test.c:435:15:435:28 | (...) | 18.0 | -| test.c:435:16:435:17 | ip | 18.0 | -| test.c:435:16:435:22 | ... * ... | 18.0 | -| test.c:435:16:435:27 | ... + ... | 18.0 | -| test.c:435:21:435:22 | 14 | 1.0 | +| test.c:420:7:420:9 | rhs | 1.0 | +| test.c:420:7:420:14 | ... < ... | 1.0 | +| test.c:420:13:420:14 | 12 | 1.0 | +| test.c:420:13:420:14 | (unsigned int)... | 1.0 | +| test.c:420:19:420:21 | rhs | 1.0 | +| test.c:420:19:420:26 | ... << ... | 1.0 | +| test.c:420:26:420:26 | 1 | 1.0 | +| test.c:421:7:421:9 | rhs | 2.0 | +| test.c:421:7:421:14 | ... < ... | 1.0 | +| test.c:421:13:421:14 | 13 | 1.0 | +| test.c:421:13:421:14 | (unsigned int)... | 1.0 | +| test.c:421:19:421:21 | rhs | 2.0 | +| test.c:421:19:421:26 | ... << ... | 1.0 | +| test.c:421:26:421:26 | 1 | 1.0 | +| test.c:422:7:422:9 | rhs | 4.0 | +| test.c:422:7:422:14 | ... < ... | 1.0 | +| test.c:422:13:422:14 | 14 | 1.0 | +| test.c:422:13:422:14 | (unsigned int)... | 1.0 | +| test.c:422:19:422:21 | rhs | 4.0 | +| test.c:422:19:422:26 | ... << ... | 1.0 | +| test.c:422:26:422:26 | 1 | 1.0 | +| test.c:423:7:423:9 | rhs | 8.0 | +| test.c:423:7:423:14 | ... < ... | 1.0 | +| test.c:423:13:423:14 | 15 | 1.0 | +| test.c:423:13:423:14 | (unsigned int)... | 1.0 | +| test.c:423:19:423:21 | rhs | 8.0 | +| test.c:423:19:423:26 | ... << ... | 1.0 | +| test.c:423:26:423:26 | 1 | 1.0 | +| test.c:424:7:424:9 | rhs | 16.0 | +| test.c:424:7:424:14 | ... < ... | 1.0 | +| test.c:424:13:424:14 | 16 | 1.0 | +| test.c:424:13:424:14 | (unsigned int)... | 1.0 | +| test.c:424:19:424:21 | rhs | 16.0 | +| test.c:424:19:424:26 | ... << ... | 1.0 | +| test.c:424:26:424:26 | 1 | 1.0 | +| test.c:425:10:425:12 | (int)... | 32.0 | +| test.c:425:10:425:12 | rhs | 32.0 | +| test.c:432:4:434:50 | (...) | 1.0 | +| test.c:432:4:517:26 | ... > ... | 1.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 1.0736981431797959E233 | +| test.c:432:5:432:6 | 14 | 1.0 | +| test.c:432:5:432:6 | (unsigned int)... | 1.0 | +| test.c:432:5:432:11 | ... * ... | 1.0 | +| test.c:432:5:432:55 | ... > ... | 1.0 | +| test.c:432:5:434:49 | ... ? ... : ... | 1.0 | +| test.c:432:10:432:11 | ip | 1.0 | +| test.c:432:15:432:26 | (...) | 1.0 | +| test.c:432:15:432:31 | ... * ... | 1.0 | +| test.c:432:15:432:55 | ... + ... | 1.0 | +| test.c:432:16:432:16 | 2 | 1.0 | +| test.c:432:16:432:16 | (unsigned int)... | 1.0 | +| test.c:432:16:432:21 | ... * ... | 1.0 | +| test.c:432:16:432:25 | ... + ... | 1.0 | +| test.c:432:20:432:21 | ip | 1.0 | +| test.c:432:25:432:25 | 1 | 1.0 | +| test.c:432:25:432:25 | (unsigned int)... | 1.0 | +| test.c:432:30:432:31 | 17 | 1.0 | +| test.c:432:30:432:31 | (unsigned int)... | 1.0 | +| test.c:432:35:432:50 | (...) | 1.0 | +| test.c:432:35:432:55 | ... * ... | 1.0 | +| test.c:432:36:432:36 | 2 | 1.0 | +| test.c:432:36:432:36 | (unsigned int)... | 1.0 | +| test.c:432:36:432:41 | ... * ... | 1.0 | +| test.c:432:36:432:45 | ... + ... | 1.0 | +| test.c:432:36:432:49 | ... + ... | 1.0 | +| test.c:432:40:432:41 | ip | 1.0 | +| test.c:432:45:432:45 | 1 | 1.0 | +| test.c:432:45:432:45 | (unsigned int)... | 1.0 | +| test.c:432:49:432:49 | 1 | 1.0 | +| test.c:432:49:432:49 | (unsigned int)... | 1.0 | +| test.c:432:54:432:55 | 17 | 1.0 | +| test.c:432:54:432:55 | (unsigned int)... | 1.0 | +| test.c:433:9:433:10 | 14 | 1.0 | +| test.c:433:9:433:10 | (unsigned int)... | 1.0 | +| test.c:433:9:433:15 | ... * ... | 1.0 | +| test.c:433:14:433:15 | ip | 1.0 | +| test.c:434:9:434:20 | (...) | 1.0 | +| test.c:434:9:434:25 | ... * ... | 1.0 | +| test.c:434:9:434:49 | ... + ... | 1.0 | +| test.c:434:10:434:10 | 2 | 1.0 | +| test.c:434:10:434:10 | (unsigned int)... | 1.0 | +| test.c:434:10:434:15 | ... * ... | 1.0 | +| test.c:434:10:434:19 | ... + ... | 1.0 | +| test.c:434:14:434:15 | ip | 1.0 | +| test.c:434:19:434:19 | 1 | 1.0 | +| test.c:434:19:434:19 | (unsigned int)... | 1.0 | +| test.c:434:24:434:25 | 14 | 1.0 | +| test.c:434:24:434:25 | (unsigned int)... | 1.0 | +| test.c:434:29:434:44 | (...) | 1.0 | +| test.c:434:29:434:49 | ... * ... | 1.0 | +| test.c:434:30:434:30 | 2 | 1.0 | +| test.c:434:30:434:30 | (unsigned int)... | 1.0 | +| test.c:434:30:434:35 | ... * ... | 1.0 | +| test.c:434:30:434:39 | ... + ... | 1.0 | +| test.c:434:30:434:43 | ... + ... | 1.0 | +| test.c:434:34:434:35 | ip | 1.0 | +| test.c:434:39:434:39 | 1 | 1.0 | +| test.c:434:39:434:39 | (unsigned int)... | 1.0 | +| test.c:434:43:434:43 | 1 | 1.0 | +| test.c:434:43:434:43 | (unsigned int)... | 1.0 | +| test.c:434:48:434:49 | 17 | 1.0 | +| test.c:434:48:434:49 | (unsigned int)... | 1.0 | +| test.c:435:5:517:26 | (...) | 8.351961156990343E97 | +| test.c:435:6:435:6 | 2 | 1.0 | +| test.c:435:6:435:6 | (unsigned int)... | 1.0 | +| test.c:435:6:435:23 | ... * ... | 2.0 | +| test.c:435:6:454:42 | ... + ... | 5.95077871104E11 | +| test.c:435:6:474:24 | ... > ... | 1.0 | +| test.c:435:6:517:25 | ... ? ... : ... | 8.351961156990343E97 | +| test.c:435:10:435:23 | (...) | 2.0 | +| test.c:435:11:435:12 | ip | 2.0 | +| test.c:435:11:435:17 | ... * ... | 2.0 | +| test.c:435:11:435:22 | ... + ... | 2.0 | +| test.c:435:16:435:17 | 14 | 1.0 | +| test.c:435:16:435:17 | (unsigned int)... | 1.0 | +| test.c:435:21:435:22 | 32 | 1.0 | | test.c:435:21:435:22 | (unsigned int)... | 1.0 | -| test.c:435:26:435:27 | 64 | 1.0 | -| test.c:435:26:435:27 | (unsigned int)... | 1.0 | -| test.c:436:11:441:24 | (...) | 157464.0 | -| test.c:436:12:436:23 | (...) | 18.0 | -| test.c:436:12:436:28 | ... * ... | 18.0 | -| test.c:436:12:437:61 | ... > ... | 1.0 | -| test.c:436:12:441:23 | ... ? ... : ... | 157464.0 | -| test.c:436:13:436:13 | 2 | 1.0 | -| test.c:436:13:436:13 | (unsigned int)... | 1.0 | -| test.c:436:13:436:18 | ... * ... | 18.0 | -| test.c:436:13:436:22 | ... + ... | 18.0 | -| test.c:436:17:436:18 | ip | 18.0 | -| test.c:436:22:436:22 | 1 | 1.0 | -| test.c:436:22:436:22 | (unsigned int)... | 1.0 | -| test.c:436:27:436:28 | 14 | 1.0 | -| test.c:436:27:436:28 | (unsigned int)... | 1.0 | -| test.c:437:11:437:61 | (...) | 324.0 | -| test.c:437:12:437:13 | 14 | 1.0 | -| test.c:437:12:437:13 | (unsigned int)... | 1.0 | -| test.c:437:12:437:24 | ... * ... | 18.0 | -| test.c:437:12:437:34 | ... > ... | 1.0 | -| test.c:437:12:437:60 | ... ? ... : ... | 324.0 | -| test.c:437:17:437:24 | (...) | 18.0 | -| test.c:437:18:437:18 | 2 | 1.0 | -| test.c:437:18:437:18 | (unsigned int)... | 1.0 | -| test.c:437:18:437:23 | ... * ... | 18.0 | -| test.c:437:22:437:23 | ip | 18.0 | -| test.c:437:28:437:29 | 17 | 1.0 | -| test.c:437:28:437:29 | (unsigned int)... | 1.0 | -| test.c:437:28:437:34 | ... * ... | 18.0 | -| test.c:437:33:437:34 | ip | 18.0 | -| test.c:437:38:437:39 | 17 | 1.0 | -| test.c:437:38:437:39 | (unsigned int)... | 1.0 | -| test.c:437:38:437:50 | ... * ... | 18.0 | -| test.c:437:43:437:50 | (...) | 18.0 | -| test.c:437:44:437:44 | 2 | 1.0 | -| test.c:437:44:437:44 | (unsigned int)... | 1.0 | -| test.c:437:44:437:49 | ... * ... | 18.0 | -| test.c:437:48:437:49 | ip | 18.0 | -| test.c:437:54:437:55 | 17 | 1.0 | -| test.c:437:54:437:55 | (unsigned int)... | 1.0 | -| test.c:437:54:437:60 | ... * ... | 18.0 | -| test.c:437:59:437:60 | ip | 18.0 | -| test.c:438:15:438:26 | (...) | 54.0 | -| test.c:438:15:438:31 | ... * ... | 54.0 | -| test.c:438:16:438:16 | 2 | 1.0 | -| test.c:438:16:438:16 | (unsigned int)... | 1.0 | -| test.c:438:16:438:21 | ... * ... | 54.0 | -| test.c:438:16:438:25 | ... + ... | 54.0 | -| test.c:438:20:438:21 | ip | 54.0 | -| test.c:438:25:438:25 | 1 | 1.0 | -| test.c:438:25:438:25 | (unsigned int)... | 1.0 | -| test.c:438:30:438:31 | 14 | 1.0 | -| test.c:438:30:438:31 | (unsigned int)... | 1.0 | -| test.c:439:15:439:16 | 14 | 1.0 | -| test.c:439:15:439:16 | (unsigned int)... | 1.0 | -| test.c:439:15:439:27 | ... * ... | 54.0 | -| test.c:439:15:439:37 | ... > ... | 1.0 | -| test.c:439:15:441:23 | ... ? ... : ... | 2916.0 | -| test.c:439:20:439:27 | (...) | 54.0 | -| test.c:439:21:439:21 | 2 | 1.0 | -| test.c:439:21:439:21 | (unsigned int)... | 1.0 | -| test.c:439:21:439:26 | ... * ... | 54.0 | -| test.c:439:25:439:26 | ip | 54.0 | +| test.c:436:7:454:42 | (...) | 2.97538935552E11 | +| test.c:436:8:436:8 | 4 | 1.0 | +| test.c:436:8:436:8 | (unsigned int)... | 1.0 | +| test.c:436:8:436:25 | ... * ... | 2.0 | +| test.c:436:8:437:26 | ... + ... | 4.0 | +| test.c:436:8:438:26 | ... + ... | 8.0 | +| test.c:436:8:443:22 | ... + ... | 1728.0 | +| test.c:436:8:444:37 | ... > ... | 1.0 | +| test.c:436:8:454:41 | ... ? ... : ... | 2.97538935552E11 | +| test.c:436:12:436:25 | (...) | 2.0 | +| test.c:436:13:436:14 | ip | 2.0 | +| test.c:436:13:436:19 | ... * ... | 2.0 | +| test.c:436:13:436:24 | ... + ... | 2.0 | +| test.c:436:18:436:19 | 14 | 1.0 | +| test.c:436:18:436:19 | (unsigned int)... | 1.0 | +| test.c:436:23:436:24 | 32 | 1.0 | +| test.c:436:23:436:24 | (unsigned int)... | 1.0 | +| test.c:437:9:437:26 | (...) | 2.0 | +| test.c:437:10:437:10 | 2 | 1.0 | +| test.c:437:10:437:10 | (unsigned int)... | 1.0 | +| test.c:437:10:437:15 | ... * ... | 2.0 | +| test.c:437:10:437:20 | ... * ... | 2.0 | +| test.c:437:10:437:25 | ... + ... | 2.0 | +| test.c:437:14:437:15 | ip | 2.0 | +| test.c:437:19:437:20 | 14 | 1.0 | +| test.c:437:19:437:20 | (unsigned int)... | 1.0 | +| test.c:437:24:437:25 | 32 | 1.0 | +| test.c:437:24:437:25 | (unsigned int)... | 1.0 | +| test.c:438:9:438:9 | 2 | 1.0 | +| test.c:438:9:438:9 | (unsigned int)... | 1.0 | +| test.c:438:9:438:26 | ... * ... | 2.0 | +| test.c:438:13:438:26 | (...) | 2.0 | +| test.c:438:14:438:15 | ip | 2.0 | +| test.c:438:14:438:20 | ... * ... | 2.0 | +| test.c:438:14:438:25 | ... + ... | 2.0 | +| test.c:438:19:438:20 | 14 | 1.0 | +| test.c:438:19:438:20 | (unsigned int)... | 1.0 | +| test.c:438:24:438:25 | 64 | 1.0 | +| test.c:438:24:438:25 | (unsigned int)... | 1.0 | +| test.c:439:9:443:22 | (...) | 216.0 | +| test.c:439:10:439:21 | (...) | 2.0 | +| test.c:439:10:439:26 | ... * ... | 2.0 | +| test.c:439:10:439:80 | ... > ... | 1.0 | +| test.c:439:10:443:21 | ... ? ... : ... | 216.0 | +| test.c:439:11:439:11 | 2 | 1.0 | +| test.c:439:11:439:11 | (unsigned int)... | 1.0 | +| test.c:439:11:439:16 | ... * ... | 2.0 | +| test.c:439:11:439:20 | ... + ... | 2.0 | +| test.c:439:15:439:16 | ip | 2.0 | +| test.c:439:20:439:20 | 1 | 1.0 | +| test.c:439:20:439:20 | (unsigned int)... | 1.0 | +| test.c:439:25:439:26 | 14 | 1.0 | +| test.c:439:25:439:26 | (unsigned int)... | 1.0 | +| test.c:439:30:439:80 | (...) | 4.0 | | test.c:439:31:439:32 | 17 | 1.0 | | test.c:439:31:439:32 | (unsigned int)... | 1.0 | -| test.c:439:31:439:37 | ... * ... | 54.0 | -| test.c:439:36:439:37 | ip | 54.0 | -| test.c:440:17:440:18 | 14 | 1.0 | -| test.c:440:17:440:18 | (unsigned int)... | 1.0 | -| test.c:440:17:440:29 | ... * ... | 54.0 | -| test.c:440:22:440:29 | (...) | 54.0 | -| test.c:440:23:440:23 | 2 | 1.0 | +| test.c:439:31:439:43 | ... * ... | 2.0 | +| test.c:439:31:439:53 | ... > ... | 1.0 | +| test.c:439:31:439:79 | ... ? ... : ... | 4.0 | +| test.c:439:36:439:43 | (...) | 2.0 | +| test.c:439:37:439:37 | 2 | 1.0 | +| test.c:439:37:439:37 | (unsigned int)... | 1.0 | +| test.c:439:37:439:42 | ... * ... | 2.0 | +| test.c:439:41:439:42 | ip | 2.0 | +| test.c:439:47:439:48 | 17 | 1.0 | +| test.c:439:47:439:48 | (unsigned int)... | 1.0 | +| test.c:439:47:439:53 | ... * ... | 2.0 | +| test.c:439:52:439:53 | ip | 2.0 | +| test.c:439:57:439:58 | 17 | 1.0 | +| test.c:439:57:439:58 | (unsigned int)... | 1.0 | +| test.c:439:57:439:69 | ... * ... | 2.0 | +| test.c:439:62:439:69 | (...) | 2.0 | +| test.c:439:63:439:63 | 2 | 1.0 | +| test.c:439:63:439:63 | (unsigned int)... | 1.0 | +| test.c:439:63:439:68 | ... * ... | 2.0 | +| test.c:439:67:439:68 | ip | 2.0 | +| test.c:439:73:439:74 | 17 | 1.0 | +| test.c:439:73:439:74 | (unsigned int)... | 1.0 | +| test.c:439:73:439:79 | ... * ... | 2.0 | +| test.c:439:78:439:79 | ip | 2.0 | +| test.c:440:13:440:24 | (...) | 6.0 | +| test.c:440:13:440:29 | ... * ... | 6.0 | +| test.c:440:14:440:14 | 2 | 1.0 | +| test.c:440:14:440:14 | (unsigned int)... | 1.0 | +| test.c:440:14:440:19 | ... * ... | 6.0 | +| test.c:440:14:440:23 | ... + ... | 6.0 | +| test.c:440:18:440:19 | ip | 6.0 | +| test.c:440:23:440:23 | 1 | 1.0 | | test.c:440:23:440:23 | (unsigned int)... | 1.0 | -| test.c:440:23:440:28 | ... * ... | 54.0 | -| test.c:440:27:440:28 | ip | 54.0 | -| test.c:441:17:441:18 | 14 | 1.0 | -| test.c:441:17:441:18 | (unsigned int)... | 1.0 | -| test.c:441:17:441:23 | ... * ... | 54.0 | -| test.c:441:22:441:23 | ip | 54.0 | -| test.c:442:11:442:11 | 2 | 1.0 | -| test.c:442:11:442:11 | (unsigned int)... | 1.0 | -| test.c:442:11:442:16 | ... * ... | 18.0 | -| test.c:442:11:442:21 | ... * ... | 18.0 | -| test.c:442:11:442:41 | ... + ... | 324.0 | -| test.c:442:15:442:16 | ip | 18.0 | -| test.c:442:20:442:21 | 14 | 1.0 | -| test.c:442:20:442:21 | (unsigned int)... | 1.0 | -| test.c:442:25:442:36 | (...) | 18.0 | -| test.c:442:25:442:41 | ... * ... | 18.0 | -| test.c:442:26:442:26 | 2 | 1.0 | -| test.c:442:26:442:26 | (unsigned int)... | 1.0 | -| test.c:442:26:442:31 | ... * ... | 18.0 | -| test.c:442:26:442:35 | ... + ... | 18.0 | -| test.c:442:30:442:31 | ip | 18.0 | -| test.c:442:35:442:35 | 1 | 1.0 | -| test.c:442:35:442:35 | (unsigned int)... | 1.0 | -| test.c:442:40:442:41 | 17 | 1.0 | -| test.c:442:40:442:41 | (unsigned int)... | 1.0 | -| test.c:443:5:462:24 | (...) | 3.2788673396080446E29 | -| test.c:443:6:443:6 | 4 | 1.0 | -| test.c:443:6:443:6 | (unsigned int)... | 1.0 | -| test.c:443:6:443:23 | ... * ... | 180.0 | -| test.c:443:6:444:24 | ... + ... | 32400.0 | -| test.c:443:6:445:24 | ... + ... | 5832000.0 | -| test.c:443:6:450:20 | ... + ... | 9.18330048E14 | -| test.c:443:6:451:55 | ... > ... | 1.0 | -| test.c:443:6:462:23 | ... ? ... : ... | 3.2788673396080446E29 | -| test.c:443:10:443:23 | (...) | 180.0 | -| test.c:443:11:443:12 | ip | 180.0 | -| test.c:443:11:443:17 | ... * ... | 180.0 | -| test.c:443:11:443:22 | ... + ... | 180.0 | -| test.c:443:16:443:17 | 14 | 1.0 | -| test.c:443:16:443:17 | (unsigned int)... | 1.0 | -| test.c:443:21:443:22 | 32 | 1.0 | -| test.c:443:21:443:22 | (unsigned int)... | 1.0 | -| test.c:444:7:444:24 | (...) | 180.0 | -| test.c:444:8:444:8 | 2 | 1.0 | -| test.c:444:8:444:8 | (unsigned int)... | 1.0 | -| test.c:444:8:444:13 | ... * ... | 180.0 | -| test.c:444:8:444:18 | ... * ... | 180.0 | -| test.c:444:8:444:23 | ... + ... | 180.0 | -| test.c:444:12:444:13 | ip | 180.0 | -| test.c:444:17:444:18 | 14 | 1.0 | -| test.c:444:17:444:18 | (unsigned int)... | 1.0 | -| test.c:444:22:444:23 | 32 | 1.0 | -| test.c:444:22:444:23 | (unsigned int)... | 1.0 | -| test.c:445:7:445:7 | 2 | 1.0 | -| test.c:445:7:445:7 | (unsigned int)... | 1.0 | -| test.c:445:7:445:24 | ... * ... | 180.0 | -| test.c:445:11:445:24 | (...) | 180.0 | -| test.c:445:12:445:13 | ip | 180.0 | -| test.c:445:12:445:18 | ... * ... | 180.0 | -| test.c:445:12:445:23 | ... + ... | 180.0 | -| test.c:445:17:445:18 | 14 | 1.0 | -| test.c:445:17:445:18 | (unsigned int)... | 1.0 | -| test.c:445:22:445:23 | 64 | 1.0 | -| test.c:445:22:445:23 | (unsigned int)... | 1.0 | -| test.c:446:7:450:20 | (...) | 1.57464E8 | -| test.c:446:8:446:19 | (...) | 180.0 | -| test.c:446:8:446:24 | ... * ... | 180.0 | -| test.c:446:8:446:78 | ... > ... | 1.0 | -| test.c:446:8:450:19 | ... ? ... : ... | 1.57464E8 | -| test.c:446:9:446:9 | 2 | 1.0 | -| test.c:446:9:446:9 | (unsigned int)... | 1.0 | -| test.c:446:9:446:14 | ... * ... | 180.0 | -| test.c:446:9:446:18 | ... + ... | 180.0 | -| test.c:446:13:446:14 | ip | 180.0 | -| test.c:446:18:446:18 | 1 | 1.0 | -| test.c:446:18:446:18 | (unsigned int)... | 1.0 | -| test.c:446:23:446:24 | 14 | 1.0 | -| test.c:446:23:446:24 | (unsigned int)... | 1.0 | -| test.c:446:28:446:78 | (...) | 32400.0 | -| test.c:446:29:446:30 | 17 | 1.0 | -| test.c:446:29:446:30 | (unsigned int)... | 1.0 | -| test.c:446:29:446:41 | ... * ... | 180.0 | -| test.c:446:29:446:51 | ... > ... | 1.0 | -| test.c:446:29:446:77 | ... ? ... : ... | 32400.0 | -| test.c:446:34:446:41 | (...) | 180.0 | -| test.c:446:35:446:35 | 2 | 1.0 | -| test.c:446:35:446:35 | (unsigned int)... | 1.0 | -| test.c:446:35:446:40 | ... * ... | 180.0 | -| test.c:446:39:446:40 | ip | 180.0 | -| test.c:446:45:446:46 | 17 | 1.0 | -| test.c:446:45:446:46 | (unsigned int)... | 1.0 | -| test.c:446:45:446:51 | ... * ... | 180.0 | -| test.c:446:50:446:51 | ip | 180.0 | -| test.c:446:55:446:56 | 17 | 1.0 | -| test.c:446:55:446:56 | (unsigned int)... | 1.0 | -| test.c:446:55:446:67 | ... * ... | 180.0 | -| test.c:446:60:446:67 | (...) | 180.0 | -| test.c:446:61:446:61 | 2 | 1.0 | -| test.c:446:61:446:61 | (unsigned int)... | 1.0 | -| test.c:446:61:446:66 | ... * ... | 180.0 | -| test.c:446:65:446:66 | ip | 180.0 | -| test.c:446:71:446:72 | 17 | 1.0 | -| test.c:446:71:446:72 | (unsigned int)... | 1.0 | -| test.c:446:71:446:77 | ... * ... | 180.0 | -| test.c:446:76:446:77 | ip | 180.0 | -| test.c:447:11:447:22 | (...) | 540.0 | -| test.c:447:11:447:27 | ... * ... | 540.0 | -| test.c:447:12:447:12 | 2 | 1.0 | -| test.c:447:12:447:12 | (unsigned int)... | 1.0 | -| test.c:447:12:447:17 | ... * ... | 540.0 | -| test.c:447:12:447:21 | ... + ... | 540.0 | -| test.c:447:16:447:17 | ip | 540.0 | -| test.c:447:21:447:21 | 1 | 1.0 | -| test.c:447:21:447:21 | (unsigned int)... | 1.0 | -| test.c:447:26:447:27 | 14 | 1.0 | +| test.c:440:28:440:29 | 14 | 1.0 | +| test.c:440:28:440:29 | (unsigned int)... | 1.0 | +| test.c:441:13:441:14 | 14 | 1.0 | +| test.c:441:13:441:14 | (unsigned int)... | 1.0 | +| test.c:441:13:441:25 | ... * ... | 6.0 | +| test.c:441:13:441:35 | ... > ... | 1.0 | +| test.c:441:13:443:21 | ... ? ... : ... | 36.0 | +| test.c:441:18:441:25 | (...) | 6.0 | +| test.c:441:19:441:19 | 2 | 1.0 | +| test.c:441:19:441:19 | (unsigned int)... | 1.0 | +| test.c:441:19:441:24 | ... * ... | 6.0 | +| test.c:441:23:441:24 | ip | 6.0 | +| test.c:441:29:441:30 | 17 | 1.0 | +| test.c:441:29:441:30 | (unsigned int)... | 1.0 | +| test.c:441:29:441:35 | ... * ... | 6.0 | +| test.c:441:34:441:35 | ip | 6.0 | +| test.c:442:15:442:16 | 14 | 1.0 | +| test.c:442:15:442:16 | (unsigned int)... | 1.0 | +| test.c:442:15:442:27 | ... * ... | 6.0 | +| test.c:442:20:442:27 | (...) | 6.0 | +| test.c:442:21:442:21 | 2 | 1.0 | +| test.c:442:21:442:21 | (unsigned int)... | 1.0 | +| test.c:442:21:442:26 | ... * ... | 6.0 | +| test.c:442:25:442:26 | ip | 6.0 | +| test.c:443:15:443:16 | 14 | 1.0 | +| test.c:443:15:443:16 | (unsigned int)... | 1.0 | +| test.c:443:15:443:21 | ... * ... | 6.0 | +| test.c:443:20:443:21 | ip | 6.0 | +| test.c:444:7:444:7 | 2 | 1.0 | +| test.c:444:7:444:7 | (unsigned int)... | 1.0 | +| test.c:444:7:444:12 | ... * ... | 18.0 | +| test.c:444:7:444:17 | ... * ... | 18.0 | +| test.c:444:7:444:37 | ... + ... | 324.0 | +| test.c:444:11:444:12 | ip | 18.0 | +| test.c:444:16:444:17 | 14 | 1.0 | +| test.c:444:16:444:17 | (unsigned int)... | 1.0 | +| test.c:444:21:444:32 | (...) | 18.0 | +| test.c:444:21:444:37 | ... * ... | 18.0 | +| test.c:444:22:444:22 | 2 | 1.0 | +| test.c:444:22:444:22 | (unsigned int)... | 1.0 | +| test.c:444:22:444:27 | ... * ... | 18.0 | +| test.c:444:22:444:31 | ... + ... | 18.0 | +| test.c:444:26:444:27 | ip | 18.0 | +| test.c:444:31:444:31 | 1 | 1.0 | +| test.c:444:31:444:31 | (unsigned int)... | 1.0 | +| test.c:444:36:444:37 | 17 | 1.0 | +| test.c:444:36:444:37 | (unsigned int)... | 1.0 | +| test.c:445:11:445:11 | 4 | 1.0 | +| test.c:445:11:445:11 | (unsigned int)... | 1.0 | +| test.c:445:11:445:28 | ... * ... | 18.0 | +| test.c:445:11:446:28 | ... + ... | 324.0 | +| test.c:445:11:447:28 | ... + ... | 5832.0 | +| test.c:445:11:453:24 | ... + ... | 9.18330048E8 | +| test.c:445:15:445:28 | (...) | 18.0 | +| test.c:445:16:445:17 | ip | 18.0 | +| test.c:445:16:445:22 | ... * ... | 18.0 | +| test.c:445:16:445:27 | ... + ... | 18.0 | +| test.c:445:21:445:22 | 14 | 1.0 | +| test.c:445:21:445:22 | (unsigned int)... | 1.0 | +| test.c:445:26:445:27 | 32 | 1.0 | +| test.c:445:26:445:27 | (unsigned int)... | 1.0 | +| test.c:446:11:446:28 | (...) | 18.0 | +| test.c:446:12:446:12 | 2 | 1.0 | +| test.c:446:12:446:12 | (unsigned int)... | 1.0 | +| test.c:446:12:446:17 | ... * ... | 18.0 | +| test.c:446:12:446:22 | ... * ... | 18.0 | +| test.c:446:12:446:27 | ... + ... | 18.0 | +| test.c:446:16:446:17 | ip | 18.0 | +| test.c:446:21:446:22 | 14 | 1.0 | +| test.c:446:21:446:22 | (unsigned int)... | 1.0 | +| test.c:446:26:446:27 | 32 | 1.0 | +| test.c:446:26:446:27 | (unsigned int)... | 1.0 | +| test.c:447:11:447:11 | 2 | 1.0 | +| test.c:447:11:447:11 | (unsigned int)... | 1.0 | +| test.c:447:11:447:28 | ... * ... | 18.0 | +| test.c:447:15:447:28 | (...) | 18.0 | +| test.c:447:16:447:17 | ip | 18.0 | +| test.c:447:16:447:22 | ... * ... | 18.0 | +| test.c:447:16:447:27 | ... + ... | 18.0 | +| test.c:447:21:447:22 | 14 | 1.0 | +| test.c:447:21:447:22 | (unsigned int)... | 1.0 | +| test.c:447:26:447:27 | 64 | 1.0 | | test.c:447:26:447:27 | (unsigned int)... | 1.0 | -| test.c:448:11:448:12 | 14 | 1.0 | -| test.c:448:11:448:12 | (unsigned int)... | 1.0 | -| test.c:448:11:448:23 | ... * ... | 540.0 | -| test.c:448:11:448:33 | ... > ... | 1.0 | -| test.c:448:11:450:19 | ... ? ... : ... | 291600.0 | -| test.c:448:16:448:23 | (...) | 540.0 | -| test.c:448:17:448:17 | 2 | 1.0 | -| test.c:448:17:448:17 | (unsigned int)... | 1.0 | -| test.c:448:17:448:22 | ... * ... | 540.0 | -| test.c:448:21:448:22 | ip | 540.0 | -| test.c:448:27:448:28 | 17 | 1.0 | +| test.c:448:11:453:24 | (...) | 157464.0 | +| test.c:448:12:448:23 | (...) | 18.0 | +| test.c:448:12:448:28 | ... * ... | 18.0 | +| test.c:448:12:449:61 | ... > ... | 1.0 | +| test.c:448:12:453:23 | ... ? ... : ... | 157464.0 | +| test.c:448:13:448:13 | 2 | 1.0 | +| test.c:448:13:448:13 | (unsigned int)... | 1.0 | +| test.c:448:13:448:18 | ... * ... | 18.0 | +| test.c:448:13:448:22 | ... + ... | 18.0 | +| test.c:448:17:448:18 | ip | 18.0 | +| test.c:448:22:448:22 | 1 | 1.0 | +| test.c:448:22:448:22 | (unsigned int)... | 1.0 | +| test.c:448:27:448:28 | 14 | 1.0 | | test.c:448:27:448:28 | (unsigned int)... | 1.0 | -| test.c:448:27:448:33 | ... * ... | 540.0 | -| test.c:448:32:448:33 | ip | 540.0 | -| test.c:449:13:449:14 | 14 | 1.0 | -| test.c:449:13:449:14 | (unsigned int)... | 1.0 | -| test.c:449:13:449:25 | ... * ... | 540.0 | -| test.c:449:18:449:25 | (...) | 540.0 | -| test.c:449:19:449:19 | 2 | 1.0 | -| test.c:449:19:449:19 | (unsigned int)... | 1.0 | -| test.c:449:19:449:24 | ... * ... | 540.0 | -| test.c:449:23:449:24 | ip | 540.0 | -| test.c:450:13:450:14 | 14 | 1.0 | -| test.c:450:13:450:14 | (unsigned int)... | 1.0 | -| test.c:450:13:450:19 | ... * ... | 540.0 | -| test.c:450:18:450:19 | ip | 540.0 | -| test.c:451:5:451:55 | (...) | 2624400.0 | -| test.c:451:6:451:7 | 14 | 1.0 | -| test.c:451:6:451:7 | (unsigned int)... | 1.0 | -| test.c:451:6:451:12 | ... * ... | 1620.0 | -| test.c:451:6:451:28 | ... > ... | 1.0 | -| test.c:451:6:451:54 | ... ? ... : ... | 2624400.0 | -| test.c:451:11:451:12 | ip | 1620.0 | -| test.c:451:16:451:23 | (...) | 1620.0 | -| test.c:451:16:451:28 | ... * ... | 1620.0 | -| test.c:451:17:451:18 | ip | 1620.0 | -| test.c:451:17:451:22 | ... + ... | 1620.0 | -| test.c:451:22:451:22 | 1 | 1.0 | -| test.c:451:22:451:22 | (unsigned int)... | 1.0 | -| test.c:451:27:451:28 | 17 | 1.0 | -| test.c:451:27:451:28 | (unsigned int)... | 1.0 | -| test.c:451:32:451:33 | 17 | 1.0 | -| test.c:451:32:451:33 | (unsigned int)... | 1.0 | -| test.c:451:32:451:38 | ... * ... | 1620.0 | -| test.c:451:37:451:38 | ip | 1620.0 | -| test.c:451:42:451:49 | (...) | 1620.0 | -| test.c:451:42:451:54 | ... * ... | 1620.0 | -| test.c:451:43:451:44 | ip | 1620.0 | -| test.c:451:43:451:48 | ... + ... | 1620.0 | -| test.c:451:48:451:48 | 1 | 1.0 | -| test.c:451:48:451:48 | (unsigned int)... | 1.0 | -| test.c:451:53:451:54 | 17 | 1.0 | -| test.c:451:53:451:54 | (unsigned int)... | 1.0 | -| test.c:452:9:452:9 | 4 | 1.0 | -| test.c:452:9:452:9 | (unsigned int)... | 1.0 | -| test.c:452:9:452:26 | ... * ... | 3240.0 | -| test.c:452:9:453:26 | ... + ... | 1.04976E7 | -| test.c:452:9:454:26 | ... + ... | 3.4012224E10 | -| test.c:452:9:459:22 | ... + ... | 3.123444729850675E22 | -| test.c:452:13:452:26 | (...) | 3240.0 | -| test.c:452:14:452:15 | ip | 3240.0 | -| test.c:452:14:452:20 | ... * ... | 3240.0 | -| test.c:452:14:452:25 | ... + ... | 3240.0 | -| test.c:452:19:452:20 | 14 | 1.0 | -| test.c:452:19:452:20 | (unsigned int)... | 1.0 | -| test.c:452:24:452:25 | 32 | 1.0 | -| test.c:452:24:452:25 | (unsigned int)... | 1.0 | -| test.c:453:9:453:26 | (...) | 3240.0 | -| test.c:453:10:453:10 | 2 | 1.0 | -| test.c:453:10:453:10 | (unsigned int)... | 1.0 | -| test.c:453:10:453:15 | ... * ... | 3240.0 | -| test.c:453:10:453:20 | ... * ... | 3240.0 | -| test.c:453:10:453:25 | ... + ... | 3240.0 | -| test.c:453:14:453:15 | ip | 3240.0 | -| test.c:453:19:453:20 | 14 | 1.0 | -| test.c:453:19:453:20 | (unsigned int)... | 1.0 | -| test.c:453:24:453:25 | 32 | 1.0 | -| test.c:453:24:453:25 | (unsigned int)... | 1.0 | -| test.c:454:9:454:9 | 2 | 1.0 | -| test.c:454:9:454:9 | (unsigned int)... | 1.0 | -| test.c:454:9:454:26 | ... * ... | 3240.0 | -| test.c:454:13:454:26 | (...) | 3240.0 | -| test.c:454:14:454:15 | ip | 3240.0 | -| test.c:454:14:454:20 | ... * ... | 3240.0 | -| test.c:454:14:454:25 | ... + ... | 3240.0 | -| test.c:454:19:454:20 | 14 | 1.0 | -| test.c:454:19:454:20 | (unsigned int)... | 1.0 | -| test.c:454:24:454:25 | 64 | 1.0 | -| test.c:454:24:454:25 | (unsigned int)... | 1.0 | -| test.c:455:9:459:22 | (...) | 9.18330048E11 | -| test.c:455:10:455:21 | (...) | 3240.0 | -| test.c:455:10:455:26 | ... * ... | 3240.0 | -| test.c:455:10:455:80 | ... > ... | 1.0 | -| test.c:455:10:459:21 | ... ? ... : ... | 9.18330048E11 | -| test.c:455:11:455:11 | 2 | 1.0 | -| test.c:455:11:455:11 | (unsigned int)... | 1.0 | -| test.c:455:11:455:16 | ... * ... | 3240.0 | -| test.c:455:11:455:20 | ... + ... | 3240.0 | -| test.c:455:15:455:16 | ip | 3240.0 | -| test.c:455:20:455:20 | 1 | 1.0 | -| test.c:455:20:455:20 | (unsigned int)... | 1.0 | -| test.c:455:25:455:26 | 14 | 1.0 | -| test.c:455:25:455:26 | (unsigned int)... | 1.0 | -| test.c:455:30:455:80 | (...) | 1.04976E7 | -| test.c:455:31:455:32 | 17 | 1.0 | -| test.c:455:31:455:32 | (unsigned int)... | 1.0 | -| test.c:455:31:455:43 | ... * ... | 3240.0 | -| test.c:455:31:455:53 | ... > ... | 1.0 | -| test.c:455:31:455:79 | ... ? ... : ... | 1.04976E7 | -| test.c:455:36:455:43 | (...) | 3240.0 | -| test.c:455:37:455:37 | 2 | 1.0 | -| test.c:455:37:455:37 | (unsigned int)... | 1.0 | -| test.c:455:37:455:42 | ... * ... | 3240.0 | -| test.c:455:41:455:42 | ip | 3240.0 | -| test.c:455:47:455:48 | 17 | 1.0 | -| test.c:455:47:455:48 | (unsigned int)... | 1.0 | -| test.c:455:47:455:53 | ... * ... | 3240.0 | -| test.c:455:52:455:53 | ip | 3240.0 | -| test.c:455:57:455:58 | 17 | 1.0 | -| test.c:455:57:455:58 | (unsigned int)... | 1.0 | -| test.c:455:57:455:69 | ... * ... | 3240.0 | -| test.c:455:62:455:69 | (...) | 3240.0 | -| test.c:455:63:455:63 | 2 | 1.0 | -| test.c:455:63:455:63 | (unsigned int)... | 1.0 | -| test.c:455:63:455:68 | ... * ... | 3240.0 | -| test.c:455:67:455:68 | ip | 3240.0 | -| test.c:455:73:455:74 | 17 | 1.0 | -| test.c:455:73:455:74 | (unsigned int)... | 1.0 | -| test.c:455:73:455:79 | ... * ... | 3240.0 | -| test.c:455:78:455:79 | ip | 3240.0 | -| test.c:456:13:456:24 | (...) | 9720.0 | -| test.c:456:13:456:29 | ... * ... | 9720.0 | -| test.c:456:14:456:14 | 2 | 1.0 | -| test.c:456:14:456:14 | (unsigned int)... | 1.0 | -| test.c:456:14:456:19 | ... * ... | 9720.0 | -| test.c:456:14:456:23 | ... + ... | 9720.0 | -| test.c:456:18:456:19 | ip | 9720.0 | -| test.c:456:23:456:23 | 1 | 1.0 | -| test.c:456:23:456:23 | (unsigned int)... | 1.0 | -| test.c:456:28:456:29 | 14 | 1.0 | -| test.c:456:28:456:29 | (unsigned int)... | 1.0 | -| test.c:457:13:457:14 | 14 | 1.0 | -| test.c:457:13:457:14 | (unsigned int)... | 1.0 | -| test.c:457:13:457:25 | ... * ... | 9720.0 | -| test.c:457:13:457:35 | ... > ... | 1.0 | -| test.c:457:13:459:21 | ... ? ... : ... | 9.44784E7 | -| test.c:457:18:457:25 | (...) | 9720.0 | -| test.c:457:19:457:19 | 2 | 1.0 | -| test.c:457:19:457:19 | (unsigned int)... | 1.0 | -| test.c:457:19:457:24 | ... * ... | 9720.0 | -| test.c:457:23:457:24 | ip | 9720.0 | -| test.c:457:29:457:30 | 17 | 1.0 | -| test.c:457:29:457:30 | (unsigned int)... | 1.0 | -| test.c:457:29:457:35 | ... * ... | 9720.0 | -| test.c:457:34:457:35 | ip | 9720.0 | -| test.c:458:15:458:16 | 14 | 1.0 | -| test.c:458:15:458:16 | (unsigned int)... | 1.0 | -| test.c:458:15:458:27 | ... * ... | 9720.0 | -| test.c:458:20:458:27 | (...) | 9720.0 | -| test.c:458:21:458:21 | 2 | 1.0 | -| test.c:458:21:458:21 | (unsigned int)... | 1.0 | -| test.c:458:21:458:26 | ... * ... | 9720.0 | -| test.c:458:25:458:26 | ip | 9720.0 | -| test.c:459:15:459:16 | 14 | 1.0 | -| test.c:459:15:459:16 | (unsigned int)... | 1.0 | -| test.c:459:15:459:21 | ... * ... | 9720.0 | -| test.c:459:20:459:21 | ip | 9720.0 | -| test.c:460:9:460:10 | 14 | 1.0 | -| test.c:460:9:460:10 | (unsigned int)... | 1.0 | -| test.c:460:9:460:15 | ... * ... | 3240.0 | -| test.c:460:9:460:31 | ... > ... | 1.0 | -| test.c:460:9:462:23 | ... ? ... : ... | 1.04976E7 | -| test.c:460:14:460:15 | ip | 3240.0 | -| test.c:460:19:460:26 | (...) | 3240.0 | -| test.c:460:19:460:31 | ... * ... | 3240.0 | -| test.c:460:20:460:21 | ip | 3240.0 | -| test.c:460:20:460:25 | ... + ... | 3240.0 | -| test.c:460:25:460:25 | 1 | 1.0 | -| test.c:460:25:460:25 | (unsigned int)... | 1.0 | -| test.c:460:30:460:31 | 17 | 1.0 | -| test.c:460:30:460:31 | (unsigned int)... | 1.0 | -| test.c:461:11:461:12 | 14 | 1.0 | -| test.c:461:11:461:12 | (unsigned int)... | 1.0 | -| test.c:461:11:461:17 | ... * ... | 3240.0 | -| test.c:461:16:461:17 | ip | 3240.0 | -| test.c:462:11:462:18 | (...) | 3240.0 | -| test.c:462:11:462:23 | ... * ... | 3240.0 | -| test.c:462:12:462:13 | ip | 3240.0 | -| test.c:462:12:462:17 | ... + ... | 3240.0 | -| test.c:462:17:462:17 | 1 | 1.0 | -| test.c:462:17:462:17 | (unsigned int)... | 1.0 | -| test.c:462:22:462:23 | 14 | 1.0 | -| test.c:462:22:462:23 | (unsigned int)... | 1.0 | -| test.c:463:9:463:9 | 2 | 1.0 | -| test.c:463:9:463:9 | (unsigned int)... | 1.0 | -| test.c:463:9:463:26 | ... * ... | 35640.0 | -| test.c:463:9:483:44 | ... + ... | 1.0783086720993898E50 | -| test.c:463:13:463:26 | (...) | 35640.0 | -| test.c:463:14:463:15 | ip | 35640.0 | -| test.c:463:14:463:20 | ... * ... | 35640.0 | -| test.c:463:14:463:25 | ... + ... | 35640.0 | -| test.c:463:19:463:20 | 14 | 1.0 | -| test.c:463:19:463:20 | (unsigned int)... | 1.0 | -| test.c:463:24:463:25 | 32 | 1.0 | -| test.c:463:24:463:25 | (unsigned int)... | 1.0 | -| test.c:464:9:483:44 | (...) | 3.0255574413563125E45 | -| test.c:464:10:464:10 | 4 | 1.0 | -| test.c:464:10:464:10 | (unsigned int)... | 1.0 | -| test.c:464:10:464:27 | ... * ... | 35640.0 | -| test.c:464:10:465:28 | ... + ... | 1.2702096E9 | -| test.c:464:10:466:28 | ... + ... | 4.5270270144E13 | -| test.c:464:10:472:24 | ... + ... | 5.533372869058992E28 | -| test.c:464:10:473:39 | ... > ... | 1.0 | -| test.c:464:10:483:43 | ... ? ... : ... | 3.0255574413563125E45 | -| test.c:464:14:464:27 | (...) | 35640.0 | -| test.c:464:15:464:16 | ip | 35640.0 | -| test.c:464:15:464:21 | ... * ... | 35640.0 | -| test.c:464:15:464:26 | ... + ... | 35640.0 | -| test.c:464:20:464:21 | 14 | 1.0 | -| test.c:464:20:464:21 | (unsigned int)... | 1.0 | -| test.c:464:25:464:26 | 32 | 1.0 | -| test.c:464:25:464:26 | (unsigned int)... | 1.0 | -| test.c:465:11:465:28 | (...) | 35640.0 | -| test.c:465:12:465:12 | 2 | 1.0 | -| test.c:465:12:465:12 | (unsigned int)... | 1.0 | -| test.c:465:12:465:17 | ... * ... | 35640.0 | -| test.c:465:12:465:22 | ... * ... | 35640.0 | -| test.c:465:12:465:27 | ... + ... | 35640.0 | -| test.c:465:16:465:17 | ip | 35640.0 | -| test.c:465:21:465:22 | 14 | 1.0 | -| test.c:465:21:465:22 | (unsigned int)... | 1.0 | -| test.c:465:26:465:27 | 32 | 1.0 | -| test.c:465:26:465:27 | (unsigned int)... | 1.0 | -| test.c:466:11:466:11 | 2 | 1.0 | -| test.c:466:11:466:11 | (unsigned int)... | 1.0 | -| test.c:466:11:466:28 | ... * ... | 35640.0 | -| test.c:466:15:466:28 | (...) | 35640.0 | -| test.c:466:16:466:17 | ip | 35640.0 | -| test.c:466:16:466:22 | ... * ... | 35640.0 | -| test.c:466:16:466:27 | ... + ... | 35640.0 | -| test.c:466:21:466:22 | 14 | 1.0 | -| test.c:466:21:466:22 | (unsigned int)... | 1.0 | -| test.c:466:26:466:27 | 64 | 1.0 | -| test.c:466:26:466:27 | (unsigned int)... | 1.0 | -| test.c:467:11:472:24 | (...) | 1.222297293888E15 | -| test.c:467:12:467:23 | (...) | 35640.0 | -| test.c:467:12:467:28 | ... * ... | 35640.0 | -| test.c:467:12:468:61 | ... > ... | 1.0 | -| test.c:467:12:472:23 | ... ? ... : ... | 1.222297293888E15 | -| test.c:467:13:467:13 | 2 | 1.0 | -| test.c:467:13:467:13 | (unsigned int)... | 1.0 | -| test.c:467:13:467:18 | ... * ... | 35640.0 | -| test.c:467:13:467:22 | ... + ... | 35640.0 | -| test.c:467:17:467:18 | ip | 35640.0 | -| test.c:467:22:467:22 | 1 | 1.0 | -| test.c:467:22:467:22 | (unsigned int)... | 1.0 | -| test.c:467:27:467:28 | 14 | 1.0 | -| test.c:467:27:467:28 | (unsigned int)... | 1.0 | -| test.c:468:11:468:61 | (...) | 1.2702096E9 | -| test.c:468:12:468:13 | 14 | 1.0 | -| test.c:468:12:468:13 | (unsigned int)... | 1.0 | -| test.c:468:12:468:24 | ... * ... | 35640.0 | -| test.c:468:12:468:34 | ... > ... | 1.0 | -| test.c:468:12:468:60 | ... ? ... : ... | 1.2702096E9 | -| test.c:468:17:468:24 | (...) | 35640.0 | -| test.c:468:18:468:18 | 2 | 1.0 | -| test.c:468:18:468:18 | (unsigned int)... | 1.0 | -| test.c:468:18:468:23 | ... * ... | 35640.0 | -| test.c:468:22:468:23 | ip | 35640.0 | -| test.c:468:28:468:29 | 17 | 1.0 | +| test.c:449:11:449:61 | (...) | 324.0 | +| test.c:449:12:449:13 | 14 | 1.0 | +| test.c:449:12:449:13 | (unsigned int)... | 1.0 | +| test.c:449:12:449:24 | ... * ... | 18.0 | +| test.c:449:12:449:34 | ... > ... | 1.0 | +| test.c:449:12:449:60 | ... ? ... : ... | 324.0 | +| test.c:449:17:449:24 | (...) | 18.0 | +| test.c:449:18:449:18 | 2 | 1.0 | +| test.c:449:18:449:18 | (unsigned int)... | 1.0 | +| test.c:449:18:449:23 | ... * ... | 18.0 | +| test.c:449:22:449:23 | ip | 18.0 | +| test.c:449:28:449:29 | 17 | 1.0 | +| test.c:449:28:449:29 | (unsigned int)... | 1.0 | +| test.c:449:28:449:34 | ... * ... | 18.0 | +| test.c:449:33:449:34 | ip | 18.0 | +| test.c:449:38:449:39 | 17 | 1.0 | +| test.c:449:38:449:39 | (unsigned int)... | 1.0 | +| test.c:449:38:449:50 | ... * ... | 18.0 | +| test.c:449:43:449:50 | (...) | 18.0 | +| test.c:449:44:449:44 | 2 | 1.0 | +| test.c:449:44:449:44 | (unsigned int)... | 1.0 | +| test.c:449:44:449:49 | ... * ... | 18.0 | +| test.c:449:48:449:49 | ip | 18.0 | +| test.c:449:54:449:55 | 17 | 1.0 | +| test.c:449:54:449:55 | (unsigned int)... | 1.0 | +| test.c:449:54:449:60 | ... * ... | 18.0 | +| test.c:449:59:449:60 | ip | 18.0 | +| test.c:450:15:450:26 | (...) | 54.0 | +| test.c:450:15:450:31 | ... * ... | 54.0 | +| test.c:450:16:450:16 | 2 | 1.0 | +| test.c:450:16:450:16 | (unsigned int)... | 1.0 | +| test.c:450:16:450:21 | ... * ... | 54.0 | +| test.c:450:16:450:25 | ... + ... | 54.0 | +| test.c:450:20:450:21 | ip | 54.0 | +| test.c:450:25:450:25 | 1 | 1.0 | +| test.c:450:25:450:25 | (unsigned int)... | 1.0 | +| test.c:450:30:450:31 | 14 | 1.0 | +| test.c:450:30:450:31 | (unsigned int)... | 1.0 | +| test.c:451:15:451:16 | 14 | 1.0 | +| test.c:451:15:451:16 | (unsigned int)... | 1.0 | +| test.c:451:15:451:27 | ... * ... | 54.0 | +| test.c:451:15:451:37 | ... > ... | 1.0 | +| test.c:451:15:453:23 | ... ? ... : ... | 2916.0 | +| test.c:451:20:451:27 | (...) | 54.0 | +| test.c:451:21:451:21 | 2 | 1.0 | +| test.c:451:21:451:21 | (unsigned int)... | 1.0 | +| test.c:451:21:451:26 | ... * ... | 54.0 | +| test.c:451:25:451:26 | ip | 54.0 | +| test.c:451:31:451:32 | 17 | 1.0 | +| test.c:451:31:451:32 | (unsigned int)... | 1.0 | +| test.c:451:31:451:37 | ... * ... | 54.0 | +| test.c:451:36:451:37 | ip | 54.0 | +| test.c:452:17:452:18 | 14 | 1.0 | +| test.c:452:17:452:18 | (unsigned int)... | 1.0 | +| test.c:452:17:452:29 | ... * ... | 54.0 | +| test.c:452:22:452:29 | (...) | 54.0 | +| test.c:452:23:452:23 | 2 | 1.0 | +| test.c:452:23:452:23 | (unsigned int)... | 1.0 | +| test.c:452:23:452:28 | ... * ... | 54.0 | +| test.c:452:27:452:28 | ip | 54.0 | +| test.c:453:17:453:18 | 14 | 1.0 | +| test.c:453:17:453:18 | (unsigned int)... | 1.0 | +| test.c:453:17:453:23 | ... * ... | 54.0 | +| test.c:453:22:453:23 | ip | 54.0 | +| test.c:454:11:454:11 | 2 | 1.0 | +| test.c:454:11:454:11 | (unsigned int)... | 1.0 | +| test.c:454:11:454:16 | ... * ... | 18.0 | +| test.c:454:11:454:21 | ... * ... | 18.0 | +| test.c:454:11:454:41 | ... + ... | 324.0 | +| test.c:454:15:454:16 | ip | 18.0 | +| test.c:454:20:454:21 | 14 | 1.0 | +| test.c:454:20:454:21 | (unsigned int)... | 1.0 | +| test.c:454:25:454:36 | (...) | 18.0 | +| test.c:454:25:454:41 | ... * ... | 18.0 | +| test.c:454:26:454:26 | 2 | 1.0 | +| test.c:454:26:454:26 | (unsigned int)... | 1.0 | +| test.c:454:26:454:31 | ... * ... | 18.0 | +| test.c:454:26:454:35 | ... + ... | 18.0 | +| test.c:454:30:454:31 | ip | 18.0 | +| test.c:454:35:454:35 | 1 | 1.0 | +| test.c:454:35:454:35 | (unsigned int)... | 1.0 | +| test.c:454:40:454:41 | 17 | 1.0 | +| test.c:454:40:454:41 | (unsigned int)... | 1.0 | +| test.c:455:5:474:24 | (...) | 3.2788673396080446E29 | +| test.c:455:6:455:6 | 4 | 1.0 | +| test.c:455:6:455:6 | (unsigned int)... | 1.0 | +| test.c:455:6:455:23 | ... * ... | 180.0 | +| test.c:455:6:456:24 | ... + ... | 32400.0 | +| test.c:455:6:457:24 | ... + ... | 5832000.0 | +| test.c:455:6:462:20 | ... + ... | 9.18330048E14 | +| test.c:455:6:463:55 | ... > ... | 1.0 | +| test.c:455:6:474:23 | ... ? ... : ... | 3.2788673396080446E29 | +| test.c:455:10:455:23 | (...) | 180.0 | +| test.c:455:11:455:12 | ip | 180.0 | +| test.c:455:11:455:17 | ... * ... | 180.0 | +| test.c:455:11:455:22 | ... + ... | 180.0 | +| test.c:455:16:455:17 | 14 | 1.0 | +| test.c:455:16:455:17 | (unsigned int)... | 1.0 | +| test.c:455:21:455:22 | 32 | 1.0 | +| test.c:455:21:455:22 | (unsigned int)... | 1.0 | +| test.c:456:7:456:24 | (...) | 180.0 | +| test.c:456:8:456:8 | 2 | 1.0 | +| test.c:456:8:456:8 | (unsigned int)... | 1.0 | +| test.c:456:8:456:13 | ... * ... | 180.0 | +| test.c:456:8:456:18 | ... * ... | 180.0 | +| test.c:456:8:456:23 | ... + ... | 180.0 | +| test.c:456:12:456:13 | ip | 180.0 | +| test.c:456:17:456:18 | 14 | 1.0 | +| test.c:456:17:456:18 | (unsigned int)... | 1.0 | +| test.c:456:22:456:23 | 32 | 1.0 | +| test.c:456:22:456:23 | (unsigned int)... | 1.0 | +| test.c:457:7:457:7 | 2 | 1.0 | +| test.c:457:7:457:7 | (unsigned int)... | 1.0 | +| test.c:457:7:457:24 | ... * ... | 180.0 | +| test.c:457:11:457:24 | (...) | 180.0 | +| test.c:457:12:457:13 | ip | 180.0 | +| test.c:457:12:457:18 | ... * ... | 180.0 | +| test.c:457:12:457:23 | ... + ... | 180.0 | +| test.c:457:17:457:18 | 14 | 1.0 | +| test.c:457:17:457:18 | (unsigned int)... | 1.0 | +| test.c:457:22:457:23 | 64 | 1.0 | +| test.c:457:22:457:23 | (unsigned int)... | 1.0 | +| test.c:458:7:462:20 | (...) | 1.57464E8 | +| test.c:458:8:458:19 | (...) | 180.0 | +| test.c:458:8:458:24 | ... * ... | 180.0 | +| test.c:458:8:458:78 | ... > ... | 1.0 | +| test.c:458:8:462:19 | ... ? ... : ... | 1.57464E8 | +| test.c:458:9:458:9 | 2 | 1.0 | +| test.c:458:9:458:9 | (unsigned int)... | 1.0 | +| test.c:458:9:458:14 | ... * ... | 180.0 | +| test.c:458:9:458:18 | ... + ... | 180.0 | +| test.c:458:13:458:14 | ip | 180.0 | +| test.c:458:18:458:18 | 1 | 1.0 | +| test.c:458:18:458:18 | (unsigned int)... | 1.0 | +| test.c:458:23:458:24 | 14 | 1.0 | +| test.c:458:23:458:24 | (unsigned int)... | 1.0 | +| test.c:458:28:458:78 | (...) | 32400.0 | +| test.c:458:29:458:30 | 17 | 1.0 | +| test.c:458:29:458:30 | (unsigned int)... | 1.0 | +| test.c:458:29:458:41 | ... * ... | 180.0 | +| test.c:458:29:458:51 | ... > ... | 1.0 | +| test.c:458:29:458:77 | ... ? ... : ... | 32400.0 | +| test.c:458:34:458:41 | (...) | 180.0 | +| test.c:458:35:458:35 | 2 | 1.0 | +| test.c:458:35:458:35 | (unsigned int)... | 1.0 | +| test.c:458:35:458:40 | ... * ... | 180.0 | +| test.c:458:39:458:40 | ip | 180.0 | +| test.c:458:45:458:46 | 17 | 1.0 | +| test.c:458:45:458:46 | (unsigned int)... | 1.0 | +| test.c:458:45:458:51 | ... * ... | 180.0 | +| test.c:458:50:458:51 | ip | 180.0 | +| test.c:458:55:458:56 | 17 | 1.0 | +| test.c:458:55:458:56 | (unsigned int)... | 1.0 | +| test.c:458:55:458:67 | ... * ... | 180.0 | +| test.c:458:60:458:67 | (...) | 180.0 | +| test.c:458:61:458:61 | 2 | 1.0 | +| test.c:458:61:458:61 | (unsigned int)... | 1.0 | +| test.c:458:61:458:66 | ... * ... | 180.0 | +| test.c:458:65:458:66 | ip | 180.0 | +| test.c:458:71:458:72 | 17 | 1.0 | +| test.c:458:71:458:72 | (unsigned int)... | 1.0 | +| test.c:458:71:458:77 | ... * ... | 180.0 | +| test.c:458:76:458:77 | ip | 180.0 | +| test.c:459:11:459:22 | (...) | 540.0 | +| test.c:459:11:459:27 | ... * ... | 540.0 | +| test.c:459:12:459:12 | 2 | 1.0 | +| test.c:459:12:459:12 | (unsigned int)... | 1.0 | +| test.c:459:12:459:17 | ... * ... | 540.0 | +| test.c:459:12:459:21 | ... + ... | 540.0 | +| test.c:459:16:459:17 | ip | 540.0 | +| test.c:459:21:459:21 | 1 | 1.0 | +| test.c:459:21:459:21 | (unsigned int)... | 1.0 | +| test.c:459:26:459:27 | 14 | 1.0 | +| test.c:459:26:459:27 | (unsigned int)... | 1.0 | +| test.c:460:11:460:12 | 14 | 1.0 | +| test.c:460:11:460:12 | (unsigned int)... | 1.0 | +| test.c:460:11:460:23 | ... * ... | 540.0 | +| test.c:460:11:460:33 | ... > ... | 1.0 | +| test.c:460:11:462:19 | ... ? ... : ... | 291600.0 | +| test.c:460:16:460:23 | (...) | 540.0 | +| test.c:460:17:460:17 | 2 | 1.0 | +| test.c:460:17:460:17 | (unsigned int)... | 1.0 | +| test.c:460:17:460:22 | ... * ... | 540.0 | +| test.c:460:21:460:22 | ip | 540.0 | +| test.c:460:27:460:28 | 17 | 1.0 | +| test.c:460:27:460:28 | (unsigned int)... | 1.0 | +| test.c:460:27:460:33 | ... * ... | 540.0 | +| test.c:460:32:460:33 | ip | 540.0 | +| test.c:461:13:461:14 | 14 | 1.0 | +| test.c:461:13:461:14 | (unsigned int)... | 1.0 | +| test.c:461:13:461:25 | ... * ... | 540.0 | +| test.c:461:18:461:25 | (...) | 540.0 | +| test.c:461:19:461:19 | 2 | 1.0 | +| test.c:461:19:461:19 | (unsigned int)... | 1.0 | +| test.c:461:19:461:24 | ... * ... | 540.0 | +| test.c:461:23:461:24 | ip | 540.0 | +| test.c:462:13:462:14 | 14 | 1.0 | +| test.c:462:13:462:14 | (unsigned int)... | 1.0 | +| test.c:462:13:462:19 | ... * ... | 540.0 | +| test.c:462:18:462:19 | ip | 540.0 | +| test.c:463:5:463:55 | (...) | 2624400.0 | +| test.c:463:6:463:7 | 14 | 1.0 | +| test.c:463:6:463:7 | (unsigned int)... | 1.0 | +| test.c:463:6:463:12 | ... * ... | 1620.0 | +| test.c:463:6:463:28 | ... > ... | 1.0 | +| test.c:463:6:463:54 | ... ? ... : ... | 2624400.0 | +| test.c:463:11:463:12 | ip | 1620.0 | +| test.c:463:16:463:23 | (...) | 1620.0 | +| test.c:463:16:463:28 | ... * ... | 1620.0 | +| test.c:463:17:463:18 | ip | 1620.0 | +| test.c:463:17:463:22 | ... + ... | 1620.0 | +| test.c:463:22:463:22 | 1 | 1.0 | +| test.c:463:22:463:22 | (unsigned int)... | 1.0 | +| test.c:463:27:463:28 | 17 | 1.0 | +| test.c:463:27:463:28 | (unsigned int)... | 1.0 | +| test.c:463:32:463:33 | 17 | 1.0 | +| test.c:463:32:463:33 | (unsigned int)... | 1.0 | +| test.c:463:32:463:38 | ... * ... | 1620.0 | +| test.c:463:37:463:38 | ip | 1620.0 | +| test.c:463:42:463:49 | (...) | 1620.0 | +| test.c:463:42:463:54 | ... * ... | 1620.0 | +| test.c:463:43:463:44 | ip | 1620.0 | +| test.c:463:43:463:48 | ... + ... | 1620.0 | +| test.c:463:48:463:48 | 1 | 1.0 | +| test.c:463:48:463:48 | (unsigned int)... | 1.0 | +| test.c:463:53:463:54 | 17 | 1.0 | +| test.c:463:53:463:54 | (unsigned int)... | 1.0 | +| test.c:464:9:464:9 | 4 | 1.0 | +| test.c:464:9:464:9 | (unsigned int)... | 1.0 | +| test.c:464:9:464:26 | ... * ... | 3240.0 | +| test.c:464:9:465:26 | ... + ... | 1.04976E7 | +| test.c:464:9:466:26 | ... + ... | 3.4012224E10 | +| test.c:464:9:471:22 | ... + ... | 3.123444729850675E22 | +| test.c:464:13:464:26 | (...) | 3240.0 | +| test.c:464:14:464:15 | ip | 3240.0 | +| test.c:464:14:464:20 | ... * ... | 3240.0 | +| test.c:464:14:464:25 | ... + ... | 3240.0 | +| test.c:464:19:464:20 | 14 | 1.0 | +| test.c:464:19:464:20 | (unsigned int)... | 1.0 | +| test.c:464:24:464:25 | 32 | 1.0 | +| test.c:464:24:464:25 | (unsigned int)... | 1.0 | +| test.c:465:9:465:26 | (...) | 3240.0 | +| test.c:465:10:465:10 | 2 | 1.0 | +| test.c:465:10:465:10 | (unsigned int)... | 1.0 | +| test.c:465:10:465:15 | ... * ... | 3240.0 | +| test.c:465:10:465:20 | ... * ... | 3240.0 | +| test.c:465:10:465:25 | ... + ... | 3240.0 | +| test.c:465:14:465:15 | ip | 3240.0 | +| test.c:465:19:465:20 | 14 | 1.0 | +| test.c:465:19:465:20 | (unsigned int)... | 1.0 | +| test.c:465:24:465:25 | 32 | 1.0 | +| test.c:465:24:465:25 | (unsigned int)... | 1.0 | +| test.c:466:9:466:9 | 2 | 1.0 | +| test.c:466:9:466:9 | (unsigned int)... | 1.0 | +| test.c:466:9:466:26 | ... * ... | 3240.0 | +| test.c:466:13:466:26 | (...) | 3240.0 | +| test.c:466:14:466:15 | ip | 3240.0 | +| test.c:466:14:466:20 | ... * ... | 3240.0 | +| test.c:466:14:466:25 | ... + ... | 3240.0 | +| test.c:466:19:466:20 | 14 | 1.0 | +| test.c:466:19:466:20 | (unsigned int)... | 1.0 | +| test.c:466:24:466:25 | 64 | 1.0 | +| test.c:466:24:466:25 | (unsigned int)... | 1.0 | +| test.c:467:9:471:22 | (...) | 9.18330048E11 | +| test.c:467:10:467:21 | (...) | 3240.0 | +| test.c:467:10:467:26 | ... * ... | 3240.0 | +| test.c:467:10:467:80 | ... > ... | 1.0 | +| test.c:467:10:471:21 | ... ? ... : ... | 9.18330048E11 | +| test.c:467:11:467:11 | 2 | 1.0 | +| test.c:467:11:467:11 | (unsigned int)... | 1.0 | +| test.c:467:11:467:16 | ... * ... | 3240.0 | +| test.c:467:11:467:20 | ... + ... | 3240.0 | +| test.c:467:15:467:16 | ip | 3240.0 | +| test.c:467:20:467:20 | 1 | 1.0 | +| test.c:467:20:467:20 | (unsigned int)... | 1.0 | +| test.c:467:25:467:26 | 14 | 1.0 | +| test.c:467:25:467:26 | (unsigned int)... | 1.0 | +| test.c:467:30:467:80 | (...) | 1.04976E7 | +| test.c:467:31:467:32 | 17 | 1.0 | +| test.c:467:31:467:32 | (unsigned int)... | 1.0 | +| test.c:467:31:467:43 | ... * ... | 3240.0 | +| test.c:467:31:467:53 | ... > ... | 1.0 | +| test.c:467:31:467:79 | ... ? ... : ... | 1.04976E7 | +| test.c:467:36:467:43 | (...) | 3240.0 | +| test.c:467:37:467:37 | 2 | 1.0 | +| test.c:467:37:467:37 | (unsigned int)... | 1.0 | +| test.c:467:37:467:42 | ... * ... | 3240.0 | +| test.c:467:41:467:42 | ip | 3240.0 | +| test.c:467:47:467:48 | 17 | 1.0 | +| test.c:467:47:467:48 | (unsigned int)... | 1.0 | +| test.c:467:47:467:53 | ... * ... | 3240.0 | +| test.c:467:52:467:53 | ip | 3240.0 | +| test.c:467:57:467:58 | 17 | 1.0 | +| test.c:467:57:467:58 | (unsigned int)... | 1.0 | +| test.c:467:57:467:69 | ... * ... | 3240.0 | +| test.c:467:62:467:69 | (...) | 3240.0 | +| test.c:467:63:467:63 | 2 | 1.0 | +| test.c:467:63:467:63 | (unsigned int)... | 1.0 | +| test.c:467:63:467:68 | ... * ... | 3240.0 | +| test.c:467:67:467:68 | ip | 3240.0 | +| test.c:467:73:467:74 | 17 | 1.0 | +| test.c:467:73:467:74 | (unsigned int)... | 1.0 | +| test.c:467:73:467:79 | ... * ... | 3240.0 | +| test.c:467:78:467:79 | ip | 3240.0 | +| test.c:468:13:468:24 | (...) | 9720.0 | +| test.c:468:13:468:29 | ... * ... | 9720.0 | +| test.c:468:14:468:14 | 2 | 1.0 | +| test.c:468:14:468:14 | (unsigned int)... | 1.0 | +| test.c:468:14:468:19 | ... * ... | 9720.0 | +| test.c:468:14:468:23 | ... + ... | 9720.0 | +| test.c:468:18:468:19 | ip | 9720.0 | +| test.c:468:23:468:23 | 1 | 1.0 | +| test.c:468:23:468:23 | (unsigned int)... | 1.0 | +| test.c:468:28:468:29 | 14 | 1.0 | | test.c:468:28:468:29 | (unsigned int)... | 1.0 | -| test.c:468:28:468:34 | ... * ... | 35640.0 | -| test.c:468:33:468:34 | ip | 35640.0 | -| test.c:468:38:468:39 | 17 | 1.0 | -| test.c:468:38:468:39 | (unsigned int)... | 1.0 | -| test.c:468:38:468:50 | ... * ... | 35640.0 | -| test.c:468:43:468:50 | (...) | 35640.0 | -| test.c:468:44:468:44 | 2 | 1.0 | -| test.c:468:44:468:44 | (unsigned int)... | 1.0 | -| test.c:468:44:468:49 | ... * ... | 35640.0 | -| test.c:468:48:468:49 | ip | 35640.0 | -| test.c:468:54:468:55 | 17 | 1.0 | -| test.c:468:54:468:55 | (unsigned int)... | 1.0 | -| test.c:468:54:468:60 | ... * ... | 35640.0 | -| test.c:468:59:468:60 | ip | 35640.0 | -| test.c:469:15:469:26 | (...) | 106920.0 | -| test.c:469:15:469:31 | ... * ... | 106920.0 | -| test.c:469:16:469:16 | 2 | 1.0 | -| test.c:469:16:469:16 | (unsigned int)... | 1.0 | -| test.c:469:16:469:21 | ... * ... | 106920.0 | -| test.c:469:16:469:25 | ... + ... | 106920.0 | -| test.c:469:20:469:21 | ip | 106920.0 | -| test.c:469:25:469:25 | 1 | 1.0 | -| test.c:469:25:469:25 | (unsigned int)... | 1.0 | -| test.c:469:30:469:31 | 14 | 1.0 | -| test.c:469:30:469:31 | (unsigned int)... | 1.0 | +| test.c:469:13:469:14 | 14 | 1.0 | +| test.c:469:13:469:14 | (unsigned int)... | 1.0 | +| test.c:469:13:469:25 | ... * ... | 9720.0 | +| test.c:469:13:469:35 | ... > ... | 1.0 | +| test.c:469:13:471:21 | ... ? ... : ... | 9.44784E7 | +| test.c:469:18:469:25 | (...) | 9720.0 | +| test.c:469:19:469:19 | 2 | 1.0 | +| test.c:469:19:469:19 | (unsigned int)... | 1.0 | +| test.c:469:19:469:24 | ... * ... | 9720.0 | +| test.c:469:23:469:24 | ip | 9720.0 | +| test.c:469:29:469:30 | 17 | 1.0 | +| test.c:469:29:469:30 | (unsigned int)... | 1.0 | +| test.c:469:29:469:35 | ... * ... | 9720.0 | +| test.c:469:34:469:35 | ip | 9720.0 | | test.c:470:15:470:16 | 14 | 1.0 | | test.c:470:15:470:16 | (unsigned int)... | 1.0 | -| test.c:470:15:470:27 | ... * ... | 106920.0 | -| test.c:470:15:470:37 | ... > ... | 1.0 | -| test.c:470:15:472:23 | ... ? ... : ... | 1.14318864E10 | -| test.c:470:20:470:27 | (...) | 106920.0 | +| test.c:470:15:470:27 | ... * ... | 9720.0 | +| test.c:470:20:470:27 | (...) | 9720.0 | | test.c:470:21:470:21 | 2 | 1.0 | | test.c:470:21:470:21 | (unsigned int)... | 1.0 | -| test.c:470:21:470:26 | ... * ... | 106920.0 | -| test.c:470:25:470:26 | ip | 106920.0 | -| test.c:470:31:470:32 | 17 | 1.0 | -| test.c:470:31:470:32 | (unsigned int)... | 1.0 | -| test.c:470:31:470:37 | ... * ... | 106920.0 | -| test.c:470:36:470:37 | ip | 106920.0 | -| test.c:471:17:471:18 | 14 | 1.0 | -| test.c:471:17:471:18 | (unsigned int)... | 1.0 | -| test.c:471:17:471:29 | ... * ... | 106920.0 | -| test.c:471:22:471:29 | (...) | 106920.0 | -| test.c:471:23:471:23 | 2 | 1.0 | -| test.c:471:23:471:23 | (unsigned int)... | 1.0 | -| test.c:471:23:471:28 | ... * ... | 106920.0 | -| test.c:471:27:471:28 | ip | 106920.0 | -| test.c:472:17:472:18 | 14 | 1.0 | -| test.c:472:17:472:18 | (unsigned int)... | 1.0 | -| test.c:472:17:472:23 | ... * ... | 106920.0 | -| test.c:472:22:472:23 | ip | 106920.0 | -| test.c:473:9:473:9 | 2 | 1.0 | -| test.c:473:9:473:9 | (unsigned int)... | 1.0 | -| test.c:473:9:473:14 | ... * ... | 320760.0 | -| test.c:473:9:473:19 | ... * ... | 320760.0 | -| test.c:473:9:473:39 | ... + ... | 1.028869776E11 | -| test.c:473:13:473:14 | ip | 320760.0 | -| test.c:473:18:473:19 | 14 | 1.0 | -| test.c:473:18:473:19 | (unsigned int)... | 1.0 | -| test.c:473:23:473:34 | (...) | 320760.0 | -| test.c:473:23:473:39 | ... * ... | 320760.0 | -| test.c:473:24:473:24 | 2 | 1.0 | -| test.c:473:24:473:24 | (unsigned int)... | 1.0 | -| test.c:473:24:473:29 | ... * ... | 320760.0 | -| test.c:473:24:473:33 | ... + ... | 320760.0 | -| test.c:473:28:473:29 | ip | 320760.0 | -| test.c:473:33:473:33 | 1 | 1.0 | -| test.c:473:33:473:33 | (unsigned int)... | 1.0 | -| test.c:473:38:473:39 | 17 | 1.0 | -| test.c:473:38:473:39 | (unsigned int)... | 1.0 | -| test.c:474:13:474:13 | 4 | 1.0 | -| test.c:474:13:474:13 | (unsigned int)... | 1.0 | -| test.c:474:13:474:30 | ... * ... | 320760.0 | -| test.c:474:13:475:30 | ... + ... | 1.028869776E11 | -| test.c:474:13:476:30 | ... + ... | 3.3002026934976E16 | -| test.c:474:13:482:26 | ... + ... | 2.9406612109055796E34 | -| test.c:474:17:474:30 | (...) | 320760.0 | -| test.c:474:18:474:19 | ip | 320760.0 | -| test.c:474:18:474:24 | ... * ... | 320760.0 | -| test.c:474:18:474:29 | ... + ... | 320760.0 | -| test.c:474:23:474:24 | 14 | 1.0 | -| test.c:474:23:474:24 | (unsigned int)... | 1.0 | -| test.c:474:28:474:29 | 32 | 1.0 | -| test.c:474:28:474:29 | (unsigned int)... | 1.0 | -| test.c:475:13:475:30 | (...) | 320760.0 | -| test.c:475:14:475:14 | 2 | 1.0 | -| test.c:475:14:475:14 | (unsigned int)... | 1.0 | -| test.c:475:14:475:19 | ... * ... | 320760.0 | -| test.c:475:14:475:24 | ... * ... | 320760.0 | -| test.c:475:14:475:29 | ... + ... | 320760.0 | -| test.c:475:18:475:19 | ip | 320760.0 | -| test.c:475:23:475:24 | 14 | 1.0 | -| test.c:475:23:475:24 | (unsigned int)... | 1.0 | -| test.c:475:28:475:29 | 32 | 1.0 | -| test.c:475:28:475:29 | (unsigned int)... | 1.0 | -| test.c:476:13:476:13 | 2 | 1.0 | -| test.c:476:13:476:13 | (unsigned int)... | 1.0 | -| test.c:476:13:476:30 | ... * ... | 320760.0 | -| test.c:476:17:476:30 | (...) | 320760.0 | -| test.c:476:18:476:19 | ip | 320760.0 | -| test.c:476:18:476:24 | ... * ... | 320760.0 | -| test.c:476:18:476:29 | ... + ... | 320760.0 | -| test.c:476:23:476:24 | 14 | 1.0 | -| test.c:476:23:476:24 | (unsigned int)... | 1.0 | -| test.c:476:28:476:29 | 64 | 1.0 | -| test.c:476:28:476:29 | (unsigned int)... | 1.0 | -| test.c:477:13:482:26 | (...) | 8.91054727244352E17 | -| test.c:477:14:477:25 | (...) | 320760.0 | -| test.c:477:14:477:30 | ... * ... | 320760.0 | -| test.c:477:14:478:63 | ... > ... | 1.0 | -| test.c:477:14:482:25 | ... ? ... : ... | 8.91054727244352E17 | -| test.c:477:15:477:15 | 2 | 1.0 | -| test.c:477:15:477:15 | (unsigned int)... | 1.0 | -| test.c:477:15:477:20 | ... * ... | 320760.0 | -| test.c:477:15:477:24 | ... + ... | 320760.0 | -| test.c:477:19:477:20 | ip | 320760.0 | -| test.c:477:24:477:24 | 1 | 1.0 | -| test.c:477:24:477:24 | (unsigned int)... | 1.0 | -| test.c:477:29:477:30 | 14 | 1.0 | -| test.c:477:29:477:30 | (unsigned int)... | 1.0 | -| test.c:478:13:478:63 | (...) | 1.028869776E11 | -| test.c:478:14:478:15 | 14 | 1.0 | -| test.c:478:14:478:15 | (unsigned int)... | 1.0 | -| test.c:478:14:478:26 | ... * ... | 320760.0 | -| test.c:478:14:478:36 | ... > ... | 1.0 | -| test.c:478:14:478:62 | ... ? ... : ... | 1.028869776E11 | -| test.c:478:19:478:26 | (...) | 320760.0 | -| test.c:478:20:478:20 | 2 | 1.0 | -| test.c:478:20:478:20 | (unsigned int)... | 1.0 | -| test.c:478:20:478:25 | ... * ... | 320760.0 | -| test.c:478:24:478:25 | ip | 320760.0 | -| test.c:478:30:478:31 | 17 | 1.0 | -| test.c:478:30:478:31 | (unsigned int)... | 1.0 | -| test.c:478:30:478:36 | ... * ... | 320760.0 | -| test.c:478:35:478:36 | ip | 320760.0 | -| test.c:478:40:478:41 | 17 | 1.0 | -| test.c:478:40:478:41 | (unsigned int)... | 1.0 | -| test.c:478:40:478:52 | ... * ... | 320760.0 | -| test.c:478:45:478:52 | (...) | 320760.0 | -| test.c:478:46:478:46 | 2 | 1.0 | -| test.c:478:46:478:46 | (unsigned int)... | 1.0 | -| test.c:478:46:478:51 | ... * ... | 320760.0 | -| test.c:478:50:478:51 | ip | 320760.0 | -| test.c:478:56:478:57 | 17 | 1.0 | -| test.c:478:56:478:57 | (unsigned int)... | 1.0 | -| test.c:478:56:478:62 | ... * ... | 320760.0 | -| test.c:478:61:478:62 | ip | 320760.0 | -| test.c:479:17:479:28 | (...) | 962280.0 | -| test.c:479:17:479:33 | ... * ... | 962280.0 | -| test.c:479:18:479:18 | 2 | 1.0 | -| test.c:479:18:479:18 | (unsigned int)... | 1.0 | -| test.c:479:18:479:23 | ... * ... | 962280.0 | -| test.c:479:18:479:27 | ... + ... | 962280.0 | -| test.c:479:22:479:23 | ip | 962280.0 | -| test.c:479:27:479:27 | 1 | 1.0 | -| test.c:479:27:479:27 | (unsigned int)... | 1.0 | -| test.c:479:32:479:33 | 14 | 1.0 | -| test.c:479:32:479:33 | (unsigned int)... | 1.0 | -| test.c:480:17:480:18 | 14 | 1.0 | -| test.c:480:17:480:18 | (unsigned int)... | 1.0 | -| test.c:480:17:480:29 | ... * ... | 962280.0 | -| test.c:480:17:480:39 | ... > ... | 1.0 | -| test.c:480:17:482:25 | ... ? ... : ... | 9.259827984E11 | -| test.c:480:22:480:29 | (...) | 962280.0 | -| test.c:480:23:480:23 | 2 | 1.0 | -| test.c:480:23:480:23 | (unsigned int)... | 1.0 | -| test.c:480:23:480:28 | ... * ... | 962280.0 | -| test.c:480:27:480:28 | ip | 962280.0 | -| test.c:480:33:480:34 | 17 | 1.0 | -| test.c:480:33:480:34 | (unsigned int)... | 1.0 | -| test.c:480:33:480:39 | ... * ... | 962280.0 | -| test.c:480:38:480:39 | ip | 962280.0 | -| test.c:481:19:481:20 | 14 | 1.0 | -| test.c:481:19:481:20 | (unsigned int)... | 1.0 | -| test.c:481:19:481:31 | ... * ... | 962280.0 | -| test.c:481:24:481:31 | (...) | 962280.0 | -| test.c:481:25:481:25 | 2 | 1.0 | +| test.c:470:21:470:26 | ... * ... | 9720.0 | +| test.c:470:25:470:26 | ip | 9720.0 | +| test.c:471:15:471:16 | 14 | 1.0 | +| test.c:471:15:471:16 | (unsigned int)... | 1.0 | +| test.c:471:15:471:21 | ... * ... | 9720.0 | +| test.c:471:20:471:21 | ip | 9720.0 | +| test.c:472:9:472:10 | 14 | 1.0 | +| test.c:472:9:472:10 | (unsigned int)... | 1.0 | +| test.c:472:9:472:15 | ... * ... | 3240.0 | +| test.c:472:9:472:31 | ... > ... | 1.0 | +| test.c:472:9:474:23 | ... ? ... : ... | 1.04976E7 | +| test.c:472:14:472:15 | ip | 3240.0 | +| test.c:472:19:472:26 | (...) | 3240.0 | +| test.c:472:19:472:31 | ... * ... | 3240.0 | +| test.c:472:20:472:21 | ip | 3240.0 | +| test.c:472:20:472:25 | ... + ... | 3240.0 | +| test.c:472:25:472:25 | 1 | 1.0 | +| test.c:472:25:472:25 | (unsigned int)... | 1.0 | +| test.c:472:30:472:31 | 17 | 1.0 | +| test.c:472:30:472:31 | (unsigned int)... | 1.0 | +| test.c:473:11:473:12 | 14 | 1.0 | +| test.c:473:11:473:12 | (unsigned int)... | 1.0 | +| test.c:473:11:473:17 | ... * ... | 3240.0 | +| test.c:473:16:473:17 | ip | 3240.0 | +| test.c:474:11:474:18 | (...) | 3240.0 | +| test.c:474:11:474:23 | ... * ... | 3240.0 | +| test.c:474:12:474:13 | ip | 3240.0 | +| test.c:474:12:474:17 | ... + ... | 3240.0 | +| test.c:474:17:474:17 | 1 | 1.0 | +| test.c:474:17:474:17 | (unsigned int)... | 1.0 | +| test.c:474:22:474:23 | 14 | 1.0 | +| test.c:474:22:474:23 | (unsigned int)... | 1.0 | +| test.c:475:9:475:9 | 2 | 1.0 | +| test.c:475:9:475:9 | (unsigned int)... | 1.0 | +| test.c:475:9:475:26 | ... * ... | 35640.0 | +| test.c:475:9:495:44 | ... + ... | 1.0783086720993898E50 | +| test.c:475:13:475:26 | (...) | 35640.0 | +| test.c:475:14:475:15 | ip | 35640.0 | +| test.c:475:14:475:20 | ... * ... | 35640.0 | +| test.c:475:14:475:25 | ... + ... | 35640.0 | +| test.c:475:19:475:20 | 14 | 1.0 | +| test.c:475:19:475:20 | (unsigned int)... | 1.0 | +| test.c:475:24:475:25 | 32 | 1.0 | +| test.c:475:24:475:25 | (unsigned int)... | 1.0 | +| test.c:476:9:495:44 | (...) | 3.0255574413563125E45 | +| test.c:476:10:476:10 | 4 | 1.0 | +| test.c:476:10:476:10 | (unsigned int)... | 1.0 | +| test.c:476:10:476:27 | ... * ... | 35640.0 | +| test.c:476:10:477:28 | ... + ... | 1.2702096E9 | +| test.c:476:10:478:28 | ... + ... | 4.5270270144E13 | +| test.c:476:10:484:24 | ... + ... | 5.533372869058992E28 | +| test.c:476:10:485:39 | ... > ... | 1.0 | +| test.c:476:10:495:43 | ... ? ... : ... | 3.0255574413563125E45 | +| test.c:476:14:476:27 | (...) | 35640.0 | +| test.c:476:15:476:16 | ip | 35640.0 | +| test.c:476:15:476:21 | ... * ... | 35640.0 | +| test.c:476:15:476:26 | ... + ... | 35640.0 | +| test.c:476:20:476:21 | 14 | 1.0 | +| test.c:476:20:476:21 | (unsigned int)... | 1.0 | +| test.c:476:25:476:26 | 32 | 1.0 | +| test.c:476:25:476:26 | (unsigned int)... | 1.0 | +| test.c:477:11:477:28 | (...) | 35640.0 | +| test.c:477:12:477:12 | 2 | 1.0 | +| test.c:477:12:477:12 | (unsigned int)... | 1.0 | +| test.c:477:12:477:17 | ... * ... | 35640.0 | +| test.c:477:12:477:22 | ... * ... | 35640.0 | +| test.c:477:12:477:27 | ... + ... | 35640.0 | +| test.c:477:16:477:17 | ip | 35640.0 | +| test.c:477:21:477:22 | 14 | 1.0 | +| test.c:477:21:477:22 | (unsigned int)... | 1.0 | +| test.c:477:26:477:27 | 32 | 1.0 | +| test.c:477:26:477:27 | (unsigned int)... | 1.0 | +| test.c:478:11:478:11 | 2 | 1.0 | +| test.c:478:11:478:11 | (unsigned int)... | 1.0 | +| test.c:478:11:478:28 | ... * ... | 35640.0 | +| test.c:478:15:478:28 | (...) | 35640.0 | +| test.c:478:16:478:17 | ip | 35640.0 | +| test.c:478:16:478:22 | ... * ... | 35640.0 | +| test.c:478:16:478:27 | ... + ... | 35640.0 | +| test.c:478:21:478:22 | 14 | 1.0 | +| test.c:478:21:478:22 | (unsigned int)... | 1.0 | +| test.c:478:26:478:27 | 64 | 1.0 | +| test.c:478:26:478:27 | (unsigned int)... | 1.0 | +| test.c:479:11:484:24 | (...) | 1.222297293888E15 | +| test.c:479:12:479:23 | (...) | 35640.0 | +| test.c:479:12:479:28 | ... * ... | 35640.0 | +| test.c:479:12:480:61 | ... > ... | 1.0 | +| test.c:479:12:484:23 | ... ? ... : ... | 1.222297293888E15 | +| test.c:479:13:479:13 | 2 | 1.0 | +| test.c:479:13:479:13 | (unsigned int)... | 1.0 | +| test.c:479:13:479:18 | ... * ... | 35640.0 | +| test.c:479:13:479:22 | ... + ... | 35640.0 | +| test.c:479:17:479:18 | ip | 35640.0 | +| test.c:479:22:479:22 | 1 | 1.0 | +| test.c:479:22:479:22 | (unsigned int)... | 1.0 | +| test.c:479:27:479:28 | 14 | 1.0 | +| test.c:479:27:479:28 | (unsigned int)... | 1.0 | +| test.c:480:11:480:61 | (...) | 1.2702096E9 | +| test.c:480:12:480:13 | 14 | 1.0 | +| test.c:480:12:480:13 | (unsigned int)... | 1.0 | +| test.c:480:12:480:24 | ... * ... | 35640.0 | +| test.c:480:12:480:34 | ... > ... | 1.0 | +| test.c:480:12:480:60 | ... ? ... : ... | 1.2702096E9 | +| test.c:480:17:480:24 | (...) | 35640.0 | +| test.c:480:18:480:18 | 2 | 1.0 | +| test.c:480:18:480:18 | (unsigned int)... | 1.0 | +| test.c:480:18:480:23 | ... * ... | 35640.0 | +| test.c:480:22:480:23 | ip | 35640.0 | +| test.c:480:28:480:29 | 17 | 1.0 | +| test.c:480:28:480:29 | (unsigned int)... | 1.0 | +| test.c:480:28:480:34 | ... * ... | 35640.0 | +| test.c:480:33:480:34 | ip | 35640.0 | +| test.c:480:38:480:39 | 17 | 1.0 | +| test.c:480:38:480:39 | (unsigned int)... | 1.0 | +| test.c:480:38:480:50 | ... * ... | 35640.0 | +| test.c:480:43:480:50 | (...) | 35640.0 | +| test.c:480:44:480:44 | 2 | 1.0 | +| test.c:480:44:480:44 | (unsigned int)... | 1.0 | +| test.c:480:44:480:49 | ... * ... | 35640.0 | +| test.c:480:48:480:49 | ip | 35640.0 | +| test.c:480:54:480:55 | 17 | 1.0 | +| test.c:480:54:480:55 | (unsigned int)... | 1.0 | +| test.c:480:54:480:60 | ... * ... | 35640.0 | +| test.c:480:59:480:60 | ip | 35640.0 | +| test.c:481:15:481:26 | (...) | 106920.0 | +| test.c:481:15:481:31 | ... * ... | 106920.0 | +| test.c:481:16:481:16 | 2 | 1.0 | +| test.c:481:16:481:16 | (unsigned int)... | 1.0 | +| test.c:481:16:481:21 | ... * ... | 106920.0 | +| test.c:481:16:481:25 | ... + ... | 106920.0 | +| test.c:481:20:481:21 | ip | 106920.0 | +| test.c:481:25:481:25 | 1 | 1.0 | | test.c:481:25:481:25 | (unsigned int)... | 1.0 | -| test.c:481:25:481:30 | ... * ... | 962280.0 | -| test.c:481:29:481:30 | ip | 962280.0 | -| test.c:482:19:482:20 | 14 | 1.0 | -| test.c:482:19:482:20 | (unsigned int)... | 1.0 | -| test.c:482:19:482:25 | ... * ... | 962280.0 | -| test.c:482:24:482:25 | ip | 962280.0 | -| test.c:483:13:483:13 | 2 | 1.0 | -| test.c:483:13:483:13 | (unsigned int)... | 1.0 | -| test.c:483:13:483:18 | ... * ... | 320760.0 | -| test.c:483:13:483:23 | ... * ... | 320760.0 | -| test.c:483:13:483:43 | ... + ... | 1.028869776E11 | -| test.c:483:17:483:18 | ip | 320760.0 | -| test.c:483:22:483:23 | 14 | 1.0 | -| test.c:483:22:483:23 | (unsigned int)... | 1.0 | -| test.c:483:27:483:38 | (...) | 320760.0 | -| test.c:483:27:483:43 | ... * ... | 320760.0 | -| test.c:483:28:483:28 | 2 | 1.0 | -| test.c:483:28:483:28 | (unsigned int)... | 1.0 | -| test.c:483:28:483:33 | ... * ... | 320760.0 | -| test.c:483:28:483:37 | ... + ... | 320760.0 | -| test.c:483:32:483:33 | ip | 320760.0 | -| test.c:483:37:483:37 | 1 | 1.0 | -| test.c:483:37:483:37 | (unsigned int)... | 1.0 | -| test.c:483:42:483:43 | 17 | 1.0 | -| test.c:483:42:483:43 | (unsigned int)... | 1.0 | -| test.c:484:9:484:9 | 4 | 1.0 | -| test.c:484:9:484:9 | (unsigned int)... | 1.0 | -| test.c:484:9:484:26 | ... * ... | 35640.0 | -| test.c:484:9:485:30 | ... + ... | 1.2702096E9 | -| test.c:484:9:486:30 | ... + ... | 4.5270270144E13 | -| test.c:484:9:492:26 | ... + ... | 5.533372869058992E28 | -| test.c:484:9:493:61 | ... > ... | 1.0 | -| test.c:484:9:505:25 | ... ? ... : ... | 7.74542704987216E47 | -| test.c:484:13:484:26 | (...) | 35640.0 | -| test.c:484:14:484:15 | ip | 35640.0 | -| test.c:484:14:484:20 | ... * ... | 35640.0 | -| test.c:484:14:484:25 | ... + ... | 35640.0 | -| test.c:484:19:484:20 | 14 | 1.0 | -| test.c:484:19:484:20 | (unsigned int)... | 1.0 | -| test.c:484:24:484:25 | 32 | 1.0 | -| test.c:484:24:484:25 | (unsigned int)... | 1.0 | -| test.c:485:13:485:30 | (...) | 35640.0 | -| test.c:485:14:485:14 | 2 | 1.0 | -| test.c:485:14:485:14 | (unsigned int)... | 1.0 | -| test.c:485:14:485:19 | ... * ... | 35640.0 | -| test.c:485:14:485:24 | ... * ... | 35640.0 | -| test.c:485:14:485:29 | ... + ... | 35640.0 | -| test.c:485:18:485:19 | ip | 35640.0 | -| test.c:485:23:485:24 | 14 | 1.0 | -| test.c:485:23:485:24 | (unsigned int)... | 1.0 | -| test.c:485:28:485:29 | 32 | 1.0 | -| test.c:485:28:485:29 | (unsigned int)... | 1.0 | -| test.c:486:13:486:13 | 2 | 1.0 | +| test.c:481:30:481:31 | 14 | 1.0 | +| test.c:481:30:481:31 | (unsigned int)... | 1.0 | +| test.c:482:15:482:16 | 14 | 1.0 | +| test.c:482:15:482:16 | (unsigned int)... | 1.0 | +| test.c:482:15:482:27 | ... * ... | 106920.0 | +| test.c:482:15:482:37 | ... > ... | 1.0 | +| test.c:482:15:484:23 | ... ? ... : ... | 1.14318864E10 | +| test.c:482:20:482:27 | (...) | 106920.0 | +| test.c:482:21:482:21 | 2 | 1.0 | +| test.c:482:21:482:21 | (unsigned int)... | 1.0 | +| test.c:482:21:482:26 | ... * ... | 106920.0 | +| test.c:482:25:482:26 | ip | 106920.0 | +| test.c:482:31:482:32 | 17 | 1.0 | +| test.c:482:31:482:32 | (unsigned int)... | 1.0 | +| test.c:482:31:482:37 | ... * ... | 106920.0 | +| test.c:482:36:482:37 | ip | 106920.0 | +| test.c:483:17:483:18 | 14 | 1.0 | +| test.c:483:17:483:18 | (unsigned int)... | 1.0 | +| test.c:483:17:483:29 | ... * ... | 106920.0 | +| test.c:483:22:483:29 | (...) | 106920.0 | +| test.c:483:23:483:23 | 2 | 1.0 | +| test.c:483:23:483:23 | (unsigned int)... | 1.0 | +| test.c:483:23:483:28 | ... * ... | 106920.0 | +| test.c:483:27:483:28 | ip | 106920.0 | +| test.c:484:17:484:18 | 14 | 1.0 | +| test.c:484:17:484:18 | (unsigned int)... | 1.0 | +| test.c:484:17:484:23 | ... * ... | 106920.0 | +| test.c:484:22:484:23 | ip | 106920.0 | +| test.c:485:9:485:9 | 2 | 1.0 | +| test.c:485:9:485:9 | (unsigned int)... | 1.0 | +| test.c:485:9:485:14 | ... * ... | 320760.0 | +| test.c:485:9:485:19 | ... * ... | 320760.0 | +| test.c:485:9:485:39 | ... + ... | 1.028869776E11 | +| test.c:485:13:485:14 | ip | 320760.0 | +| test.c:485:18:485:19 | 14 | 1.0 | +| test.c:485:18:485:19 | (unsigned int)... | 1.0 | +| test.c:485:23:485:34 | (...) | 320760.0 | +| test.c:485:23:485:39 | ... * ... | 320760.0 | +| test.c:485:24:485:24 | 2 | 1.0 | +| test.c:485:24:485:24 | (unsigned int)... | 1.0 | +| test.c:485:24:485:29 | ... * ... | 320760.0 | +| test.c:485:24:485:33 | ... + ... | 320760.0 | +| test.c:485:28:485:29 | ip | 320760.0 | +| test.c:485:33:485:33 | 1 | 1.0 | +| test.c:485:33:485:33 | (unsigned int)... | 1.0 | +| test.c:485:38:485:39 | 17 | 1.0 | +| test.c:485:38:485:39 | (unsigned int)... | 1.0 | +| test.c:486:13:486:13 | 4 | 1.0 | | test.c:486:13:486:13 | (unsigned int)... | 1.0 | -| test.c:486:13:486:30 | ... * ... | 35640.0 | -| test.c:486:17:486:30 | (...) | 35640.0 | -| test.c:486:18:486:19 | ip | 35640.0 | -| test.c:486:18:486:24 | ... * ... | 35640.0 | -| test.c:486:18:486:29 | ... + ... | 35640.0 | +| test.c:486:13:486:30 | ... * ... | 320760.0 | +| test.c:486:13:487:30 | ... + ... | 1.028869776E11 | +| test.c:486:13:488:30 | ... + ... | 3.3002026934976E16 | +| test.c:486:13:494:26 | ... + ... | 2.9406612109055796E34 | +| test.c:486:17:486:30 | (...) | 320760.0 | +| test.c:486:18:486:19 | ip | 320760.0 | +| test.c:486:18:486:24 | ... * ... | 320760.0 | +| test.c:486:18:486:29 | ... + ... | 320760.0 | | test.c:486:23:486:24 | 14 | 1.0 | | test.c:486:23:486:24 | (unsigned int)... | 1.0 | -| test.c:486:28:486:29 | 64 | 1.0 | +| test.c:486:28:486:29 | 32 | 1.0 | | test.c:486:28:486:29 | (unsigned int)... | 1.0 | -| test.c:487:13:492:26 | (...) | 1.222297293888E15 | -| test.c:487:14:487:25 | (...) | 35640.0 | -| test.c:487:14:487:30 | ... * ... | 35640.0 | -| test.c:487:14:488:63 | ... > ... | 1.0 | -| test.c:487:14:492:25 | ... ? ... : ... | 1.222297293888E15 | -| test.c:487:15:487:15 | 2 | 1.0 | -| test.c:487:15:487:15 | (unsigned int)... | 1.0 | -| test.c:487:15:487:20 | ... * ... | 35640.0 | -| test.c:487:15:487:24 | ... + ... | 35640.0 | -| test.c:487:19:487:20 | ip | 35640.0 | -| test.c:487:24:487:24 | 1 | 1.0 | -| test.c:487:24:487:24 | (unsigned int)... | 1.0 | -| test.c:487:29:487:30 | 14 | 1.0 | -| test.c:487:29:487:30 | (unsigned int)... | 1.0 | -| test.c:488:13:488:63 | (...) | 1.2702096E9 | -| test.c:488:14:488:15 | 14 | 1.0 | -| test.c:488:14:488:15 | (unsigned int)... | 1.0 | -| test.c:488:14:488:26 | ... * ... | 35640.0 | -| test.c:488:14:488:36 | ... > ... | 1.0 | -| test.c:488:14:488:62 | ... ? ... : ... | 1.2702096E9 | -| test.c:488:19:488:26 | (...) | 35640.0 | -| test.c:488:20:488:20 | 2 | 1.0 | -| test.c:488:20:488:20 | (unsigned int)... | 1.0 | -| test.c:488:20:488:25 | ... * ... | 35640.0 | -| test.c:488:24:488:25 | ip | 35640.0 | -| test.c:488:30:488:31 | 17 | 1.0 | -| test.c:488:30:488:31 | (unsigned int)... | 1.0 | -| test.c:488:30:488:36 | ... * ... | 35640.0 | -| test.c:488:35:488:36 | ip | 35640.0 | -| test.c:488:40:488:41 | 17 | 1.0 | -| test.c:488:40:488:41 | (unsigned int)... | 1.0 | -| test.c:488:40:488:52 | ... * ... | 35640.0 | -| test.c:488:45:488:52 | (...) | 35640.0 | -| test.c:488:46:488:46 | 2 | 1.0 | -| test.c:488:46:488:46 | (unsigned int)... | 1.0 | -| test.c:488:46:488:51 | ... * ... | 35640.0 | -| test.c:488:50:488:51 | ip | 35640.0 | -| test.c:488:56:488:57 | 17 | 1.0 | -| test.c:488:56:488:57 | (unsigned int)... | 1.0 | -| test.c:488:56:488:62 | ... * ... | 35640.0 | -| test.c:488:61:488:62 | ip | 35640.0 | -| test.c:489:17:489:28 | (...) | 106920.0 | -| test.c:489:17:489:33 | ... * ... | 106920.0 | -| test.c:489:18:489:18 | 2 | 1.0 | -| test.c:489:18:489:18 | (unsigned int)... | 1.0 | -| test.c:489:18:489:23 | ... * ... | 106920.0 | -| test.c:489:18:489:27 | ... + ... | 106920.0 | -| test.c:489:22:489:23 | ip | 106920.0 | -| test.c:489:27:489:27 | 1 | 1.0 | -| test.c:489:27:489:27 | (unsigned int)... | 1.0 | -| test.c:489:32:489:33 | 14 | 1.0 | -| test.c:489:32:489:33 | (unsigned int)... | 1.0 | -| test.c:490:17:490:18 | 14 | 1.0 | -| test.c:490:17:490:18 | (unsigned int)... | 1.0 | -| test.c:490:17:490:29 | ... * ... | 106920.0 | -| test.c:490:17:490:39 | ... > ... | 1.0 | -| test.c:490:17:492:25 | ... ? ... : ... | 1.14318864E10 | -| test.c:490:22:490:29 | (...) | 106920.0 | -| test.c:490:23:490:23 | 2 | 1.0 | -| test.c:490:23:490:23 | (unsigned int)... | 1.0 | -| test.c:490:23:490:28 | ... * ... | 106920.0 | -| test.c:490:27:490:28 | ip | 106920.0 | -| test.c:490:33:490:34 | 17 | 1.0 | -| test.c:490:33:490:34 | (unsigned int)... | 1.0 | -| test.c:490:33:490:39 | ... * ... | 106920.0 | -| test.c:490:38:490:39 | ip | 106920.0 | -| test.c:491:19:491:20 | 14 | 1.0 | -| test.c:491:19:491:20 | (unsigned int)... | 1.0 | -| test.c:491:19:491:31 | ... * ... | 106920.0 | -| test.c:491:24:491:31 | (...) | 106920.0 | -| test.c:491:25:491:25 | 2 | 1.0 | -| test.c:491:25:491:25 | (unsigned int)... | 1.0 | -| test.c:491:25:491:30 | ... * ... | 106920.0 | -| test.c:491:29:491:30 | ip | 106920.0 | -| test.c:492:19:492:20 | 14 | 1.0 | -| test.c:492:19:492:20 | (unsigned int)... | 1.0 | -| test.c:492:19:492:25 | ... * ... | 106920.0 | -| test.c:492:24:492:25 | ip | 106920.0 | -| test.c:493:11:493:61 | (...) | 1.028869776E11 | -| test.c:493:12:493:13 | 14 | 1.0 | -| test.c:493:12:493:13 | (unsigned int)... | 1.0 | -| test.c:493:12:493:18 | ... * ... | 320760.0 | -| test.c:493:12:493:34 | ... > ... | 1.0 | -| test.c:493:12:493:60 | ... ? ... : ... | 1.028869776E11 | -| test.c:493:17:493:18 | ip | 320760.0 | -| test.c:493:22:493:29 | (...) | 320760.0 | -| test.c:493:22:493:34 | ... * ... | 320760.0 | -| test.c:493:23:493:24 | ip | 320760.0 | -| test.c:493:23:493:28 | ... + ... | 320760.0 | -| test.c:493:28:493:28 | 1 | 1.0 | -| test.c:493:28:493:28 | (unsigned int)... | 1.0 | -| test.c:493:33:493:34 | 17 | 1.0 | -| test.c:493:33:493:34 | (unsigned int)... | 1.0 | -| test.c:493:38:493:39 | 17 | 1.0 | -| test.c:493:38:493:39 | (unsigned int)... | 1.0 | -| test.c:493:38:493:44 | ... * ... | 320760.0 | -| test.c:493:43:493:44 | ip | 320760.0 | -| test.c:493:48:493:55 | (...) | 320760.0 | -| test.c:493:48:493:60 | ... * ... | 320760.0 | -| test.c:493:49:493:50 | ip | 320760.0 | -| test.c:493:49:493:54 | ... + ... | 320760.0 | -| test.c:493:54:493:54 | 1 | 1.0 | -| test.c:493:54:493:54 | (unsigned int)... | 1.0 | -| test.c:493:59:493:60 | 17 | 1.0 | -| test.c:493:59:493:60 | (unsigned int)... | 1.0 | -| test.c:494:11:494:11 | 4 | 1.0 | -| test.c:494:11:494:11 | (unsigned int)... | 1.0 | -| test.c:494:11:494:28 | ... * ... | 641520.0 | -| test.c:494:11:495:28 | ... + ... | 4.115479104E11 | -| test.c:494:11:496:28 | ... + ... | 2.64016215479808E17 | -| test.c:494:11:502:24 | ... + ... | 1.882023174979571E36 | -| test.c:494:15:494:28 | (...) | 641520.0 | -| test.c:494:16:494:17 | ip | 641520.0 | -| test.c:494:16:494:22 | ... * ... | 641520.0 | -| test.c:494:16:494:27 | ... + ... | 641520.0 | -| test.c:494:21:494:22 | 14 | 1.0 | -| test.c:494:21:494:22 | (unsigned int)... | 1.0 | -| test.c:494:26:494:27 | 32 | 1.0 | -| test.c:494:26:494:27 | (unsigned int)... | 1.0 | -| test.c:495:11:495:28 | (...) | 641520.0 | -| test.c:495:12:495:12 | 2 | 1.0 | -| test.c:495:12:495:12 | (unsigned int)... | 1.0 | -| test.c:495:12:495:17 | ... * ... | 641520.0 | -| test.c:495:12:495:22 | ... * ... | 641520.0 | -| test.c:495:12:495:27 | ... + ... | 641520.0 | -| test.c:495:16:495:17 | ip | 641520.0 | -| test.c:495:21:495:22 | 14 | 1.0 | -| test.c:495:21:495:22 | (unsigned int)... | 1.0 | -| test.c:495:26:495:27 | 32 | 1.0 | -| test.c:495:26:495:27 | (unsigned int)... | 1.0 | -| test.c:496:11:496:11 | 2 | 1.0 | -| test.c:496:11:496:11 | (unsigned int)... | 1.0 | -| test.c:496:11:496:28 | ... * ... | 641520.0 | -| test.c:496:15:496:28 | (...) | 641520.0 | -| test.c:496:16:496:17 | ip | 641520.0 | -| test.c:496:16:496:22 | ... * ... | 641520.0 | -| test.c:496:16:496:27 | ... + ... | 641520.0 | -| test.c:496:21:496:22 | 14 | 1.0 | -| test.c:496:21:496:22 | (unsigned int)... | 1.0 | -| test.c:496:26:496:27 | 64 | 1.0 | -| test.c:496:26:496:27 | (unsigned int)... | 1.0 | -| test.c:497:11:502:24 | (...) | 7.128437817954816E18 | -| test.c:497:12:497:23 | (...) | 641520.0 | -| test.c:497:12:497:28 | ... * ... | 641520.0 | -| test.c:497:12:498:61 | ... > ... | 1.0 | -| test.c:497:12:502:23 | ... ? ... : ... | 7.128437817954816E18 | -| test.c:497:13:497:13 | 2 | 1.0 | -| test.c:497:13:497:13 | (unsigned int)... | 1.0 | -| test.c:497:13:497:18 | ... * ... | 641520.0 | -| test.c:497:13:497:22 | ... + ... | 641520.0 | -| test.c:497:17:497:18 | ip | 641520.0 | -| test.c:497:22:497:22 | 1 | 1.0 | -| test.c:497:22:497:22 | (unsigned int)... | 1.0 | -| test.c:497:27:497:28 | 14 | 1.0 | -| test.c:497:27:497:28 | (unsigned int)... | 1.0 | -| test.c:498:11:498:61 | (...) | 4.115479104E11 | -| test.c:498:12:498:13 | 14 | 1.0 | -| test.c:498:12:498:13 | (unsigned int)... | 1.0 | -| test.c:498:12:498:24 | ... * ... | 641520.0 | -| test.c:498:12:498:34 | ... > ... | 1.0 | -| test.c:498:12:498:60 | ... ? ... : ... | 4.115479104E11 | -| test.c:498:17:498:24 | (...) | 641520.0 | -| test.c:498:18:498:18 | 2 | 1.0 | -| test.c:498:18:498:18 | (unsigned int)... | 1.0 | -| test.c:498:18:498:23 | ... * ... | 641520.0 | -| test.c:498:22:498:23 | ip | 641520.0 | -| test.c:498:28:498:29 | 17 | 1.0 | +| test.c:487:13:487:30 | (...) | 320760.0 | +| test.c:487:14:487:14 | 2 | 1.0 | +| test.c:487:14:487:14 | (unsigned int)... | 1.0 | +| test.c:487:14:487:19 | ... * ... | 320760.0 | +| test.c:487:14:487:24 | ... * ... | 320760.0 | +| test.c:487:14:487:29 | ... + ... | 320760.0 | +| test.c:487:18:487:19 | ip | 320760.0 | +| test.c:487:23:487:24 | 14 | 1.0 | +| test.c:487:23:487:24 | (unsigned int)... | 1.0 | +| test.c:487:28:487:29 | 32 | 1.0 | +| test.c:487:28:487:29 | (unsigned int)... | 1.0 | +| test.c:488:13:488:13 | 2 | 1.0 | +| test.c:488:13:488:13 | (unsigned int)... | 1.0 | +| test.c:488:13:488:30 | ... * ... | 320760.0 | +| test.c:488:17:488:30 | (...) | 320760.0 | +| test.c:488:18:488:19 | ip | 320760.0 | +| test.c:488:18:488:24 | ... * ... | 320760.0 | +| test.c:488:18:488:29 | ... + ... | 320760.0 | +| test.c:488:23:488:24 | 14 | 1.0 | +| test.c:488:23:488:24 | (unsigned int)... | 1.0 | +| test.c:488:28:488:29 | 64 | 1.0 | +| test.c:488:28:488:29 | (unsigned int)... | 1.0 | +| test.c:489:13:494:26 | (...) | 8.91054727244352E17 | +| test.c:489:14:489:25 | (...) | 320760.0 | +| test.c:489:14:489:30 | ... * ... | 320760.0 | +| test.c:489:14:490:63 | ... > ... | 1.0 | +| test.c:489:14:494:25 | ... ? ... : ... | 8.91054727244352E17 | +| test.c:489:15:489:15 | 2 | 1.0 | +| test.c:489:15:489:15 | (unsigned int)... | 1.0 | +| test.c:489:15:489:20 | ... * ... | 320760.0 | +| test.c:489:15:489:24 | ... + ... | 320760.0 | +| test.c:489:19:489:20 | ip | 320760.0 | +| test.c:489:24:489:24 | 1 | 1.0 | +| test.c:489:24:489:24 | (unsigned int)... | 1.0 | +| test.c:489:29:489:30 | 14 | 1.0 | +| test.c:489:29:489:30 | (unsigned int)... | 1.0 | +| test.c:490:13:490:63 | (...) | 1.028869776E11 | +| test.c:490:14:490:15 | 14 | 1.0 | +| test.c:490:14:490:15 | (unsigned int)... | 1.0 | +| test.c:490:14:490:26 | ... * ... | 320760.0 | +| test.c:490:14:490:36 | ... > ... | 1.0 | +| test.c:490:14:490:62 | ... ? ... : ... | 1.028869776E11 | +| test.c:490:19:490:26 | (...) | 320760.0 | +| test.c:490:20:490:20 | 2 | 1.0 | +| test.c:490:20:490:20 | (unsigned int)... | 1.0 | +| test.c:490:20:490:25 | ... * ... | 320760.0 | +| test.c:490:24:490:25 | ip | 320760.0 | +| test.c:490:30:490:31 | 17 | 1.0 | +| test.c:490:30:490:31 | (unsigned int)... | 1.0 | +| test.c:490:30:490:36 | ... * ... | 320760.0 | +| test.c:490:35:490:36 | ip | 320760.0 | +| test.c:490:40:490:41 | 17 | 1.0 | +| test.c:490:40:490:41 | (unsigned int)... | 1.0 | +| test.c:490:40:490:52 | ... * ... | 320760.0 | +| test.c:490:45:490:52 | (...) | 320760.0 | +| test.c:490:46:490:46 | 2 | 1.0 | +| test.c:490:46:490:46 | (unsigned int)... | 1.0 | +| test.c:490:46:490:51 | ... * ... | 320760.0 | +| test.c:490:50:490:51 | ip | 320760.0 | +| test.c:490:56:490:57 | 17 | 1.0 | +| test.c:490:56:490:57 | (unsigned int)... | 1.0 | +| test.c:490:56:490:62 | ... * ... | 320760.0 | +| test.c:490:61:490:62 | ip | 320760.0 | +| test.c:491:17:491:28 | (...) | 962280.0 | +| test.c:491:17:491:33 | ... * ... | 962280.0 | +| test.c:491:18:491:18 | 2 | 1.0 | +| test.c:491:18:491:18 | (unsigned int)... | 1.0 | +| test.c:491:18:491:23 | ... * ... | 962280.0 | +| test.c:491:18:491:27 | ... + ... | 962280.0 | +| test.c:491:22:491:23 | ip | 962280.0 | +| test.c:491:27:491:27 | 1 | 1.0 | +| test.c:491:27:491:27 | (unsigned int)... | 1.0 | +| test.c:491:32:491:33 | 14 | 1.0 | +| test.c:491:32:491:33 | (unsigned int)... | 1.0 | +| test.c:492:17:492:18 | 14 | 1.0 | +| test.c:492:17:492:18 | (unsigned int)... | 1.0 | +| test.c:492:17:492:29 | ... * ... | 962280.0 | +| test.c:492:17:492:39 | ... > ... | 1.0 | +| test.c:492:17:494:25 | ... ? ... : ... | 9.259827984E11 | +| test.c:492:22:492:29 | (...) | 962280.0 | +| test.c:492:23:492:23 | 2 | 1.0 | +| test.c:492:23:492:23 | (unsigned int)... | 1.0 | +| test.c:492:23:492:28 | ... * ... | 962280.0 | +| test.c:492:27:492:28 | ip | 962280.0 | +| test.c:492:33:492:34 | 17 | 1.0 | +| test.c:492:33:492:34 | (unsigned int)... | 1.0 | +| test.c:492:33:492:39 | ... * ... | 962280.0 | +| test.c:492:38:492:39 | ip | 962280.0 | +| test.c:493:19:493:20 | 14 | 1.0 | +| test.c:493:19:493:20 | (unsigned int)... | 1.0 | +| test.c:493:19:493:31 | ... * ... | 962280.0 | +| test.c:493:24:493:31 | (...) | 962280.0 | +| test.c:493:25:493:25 | 2 | 1.0 | +| test.c:493:25:493:25 | (unsigned int)... | 1.0 | +| test.c:493:25:493:30 | ... * ... | 962280.0 | +| test.c:493:29:493:30 | ip | 962280.0 | +| test.c:494:19:494:20 | 14 | 1.0 | +| test.c:494:19:494:20 | (unsigned int)... | 1.0 | +| test.c:494:19:494:25 | ... * ... | 962280.0 | +| test.c:494:24:494:25 | ip | 962280.0 | +| test.c:495:13:495:13 | 2 | 1.0 | +| test.c:495:13:495:13 | (unsigned int)... | 1.0 | +| test.c:495:13:495:18 | ... * ... | 320760.0 | +| test.c:495:13:495:23 | ... * ... | 320760.0 | +| test.c:495:13:495:43 | ... + ... | 1.028869776E11 | +| test.c:495:17:495:18 | ip | 320760.0 | +| test.c:495:22:495:23 | 14 | 1.0 | +| test.c:495:22:495:23 | (unsigned int)... | 1.0 | +| test.c:495:27:495:38 | (...) | 320760.0 | +| test.c:495:27:495:43 | ... * ... | 320760.0 | +| test.c:495:28:495:28 | 2 | 1.0 | +| test.c:495:28:495:28 | (unsigned int)... | 1.0 | +| test.c:495:28:495:33 | ... * ... | 320760.0 | +| test.c:495:28:495:37 | ... + ... | 320760.0 | +| test.c:495:32:495:33 | ip | 320760.0 | +| test.c:495:37:495:37 | 1 | 1.0 | +| test.c:495:37:495:37 | (unsigned int)... | 1.0 | +| test.c:495:42:495:43 | 17 | 1.0 | +| test.c:495:42:495:43 | (unsigned int)... | 1.0 | +| test.c:496:9:496:9 | 4 | 1.0 | +| test.c:496:9:496:9 | (unsigned int)... | 1.0 | +| test.c:496:9:496:26 | ... * ... | 35640.0 | +| test.c:496:9:497:30 | ... + ... | 1.2702096E9 | +| test.c:496:9:498:30 | ... + ... | 4.5270270144E13 | +| test.c:496:9:504:26 | ... + ... | 5.533372869058992E28 | +| test.c:496:9:505:61 | ... > ... | 1.0 | +| test.c:496:9:517:25 | ... ? ... : ... | 7.74542704987216E47 | +| test.c:496:13:496:26 | (...) | 35640.0 | +| test.c:496:14:496:15 | ip | 35640.0 | +| test.c:496:14:496:20 | ... * ... | 35640.0 | +| test.c:496:14:496:25 | ... + ... | 35640.0 | +| test.c:496:19:496:20 | 14 | 1.0 | +| test.c:496:19:496:20 | (unsigned int)... | 1.0 | +| test.c:496:24:496:25 | 32 | 1.0 | +| test.c:496:24:496:25 | (unsigned int)... | 1.0 | +| test.c:497:13:497:30 | (...) | 35640.0 | +| test.c:497:14:497:14 | 2 | 1.0 | +| test.c:497:14:497:14 | (unsigned int)... | 1.0 | +| test.c:497:14:497:19 | ... * ... | 35640.0 | +| test.c:497:14:497:24 | ... * ... | 35640.0 | +| test.c:497:14:497:29 | ... + ... | 35640.0 | +| test.c:497:18:497:19 | ip | 35640.0 | +| test.c:497:23:497:24 | 14 | 1.0 | +| test.c:497:23:497:24 | (unsigned int)... | 1.0 | +| test.c:497:28:497:29 | 32 | 1.0 | +| test.c:497:28:497:29 | (unsigned int)... | 1.0 | +| test.c:498:13:498:13 | 2 | 1.0 | +| test.c:498:13:498:13 | (unsigned int)... | 1.0 | +| test.c:498:13:498:30 | ... * ... | 35640.0 | +| test.c:498:17:498:30 | (...) | 35640.0 | +| test.c:498:18:498:19 | ip | 35640.0 | +| test.c:498:18:498:24 | ... * ... | 35640.0 | +| test.c:498:18:498:29 | ... + ... | 35640.0 | +| test.c:498:23:498:24 | 14 | 1.0 | +| test.c:498:23:498:24 | (unsigned int)... | 1.0 | +| test.c:498:28:498:29 | 64 | 1.0 | | test.c:498:28:498:29 | (unsigned int)... | 1.0 | -| test.c:498:28:498:34 | ... * ... | 641520.0 | -| test.c:498:33:498:34 | ip | 641520.0 | -| test.c:498:38:498:39 | 17 | 1.0 | -| test.c:498:38:498:39 | (unsigned int)... | 1.0 | -| test.c:498:38:498:50 | ... * ... | 641520.0 | -| test.c:498:43:498:50 | (...) | 641520.0 | -| test.c:498:44:498:44 | 2 | 1.0 | -| test.c:498:44:498:44 | (unsigned int)... | 1.0 | -| test.c:498:44:498:49 | ... * ... | 641520.0 | -| test.c:498:48:498:49 | ip | 641520.0 | -| test.c:498:54:498:55 | 17 | 1.0 | -| test.c:498:54:498:55 | (unsigned int)... | 1.0 | -| test.c:498:54:498:60 | ... * ... | 641520.0 | -| test.c:498:59:498:60 | ip | 641520.0 | -| test.c:499:15:499:26 | (...) | 1924560.0 | -| test.c:499:15:499:31 | ... * ... | 1924560.0 | -| test.c:499:16:499:16 | 2 | 1.0 | -| test.c:499:16:499:16 | (unsigned int)... | 1.0 | -| test.c:499:16:499:21 | ... * ... | 1924560.0 | -| test.c:499:16:499:25 | ... + ... | 1924560.0 | -| test.c:499:20:499:21 | ip | 1924560.0 | -| test.c:499:25:499:25 | 1 | 1.0 | -| test.c:499:25:499:25 | (unsigned int)... | 1.0 | -| test.c:499:30:499:31 | 14 | 1.0 | -| test.c:499:30:499:31 | (unsigned int)... | 1.0 | -| test.c:500:15:500:16 | 14 | 1.0 | -| test.c:500:15:500:16 | (unsigned int)... | 1.0 | -| test.c:500:15:500:27 | ... * ... | 1924560.0 | -| test.c:500:15:500:37 | ... > ... | 1.0 | -| test.c:500:15:502:23 | ... ? ... : ... | 3.7039311936E12 | -| test.c:500:20:500:27 | (...) | 1924560.0 | -| test.c:500:21:500:21 | 2 | 1.0 | -| test.c:500:21:500:21 | (unsigned int)... | 1.0 | -| test.c:500:21:500:26 | ... * ... | 1924560.0 | -| test.c:500:25:500:26 | ip | 1924560.0 | -| test.c:500:31:500:32 | 17 | 1.0 | -| test.c:500:31:500:32 | (unsigned int)... | 1.0 | -| test.c:500:31:500:37 | ... * ... | 1924560.0 | -| test.c:500:36:500:37 | ip | 1924560.0 | -| test.c:501:17:501:18 | 14 | 1.0 | -| test.c:501:17:501:18 | (unsigned int)... | 1.0 | -| test.c:501:17:501:29 | ... * ... | 1924560.0 | -| test.c:501:22:501:29 | (...) | 1924560.0 | -| test.c:501:23:501:23 | 2 | 1.0 | -| test.c:501:23:501:23 | (unsigned int)... | 1.0 | -| test.c:501:23:501:28 | ... * ... | 1924560.0 | -| test.c:501:27:501:28 | ip | 1924560.0 | +| test.c:499:13:504:26 | (...) | 1.222297293888E15 | +| test.c:499:14:499:25 | (...) | 35640.0 | +| test.c:499:14:499:30 | ... * ... | 35640.0 | +| test.c:499:14:500:63 | ... > ... | 1.0 | +| test.c:499:14:504:25 | ... ? ... : ... | 1.222297293888E15 | +| test.c:499:15:499:15 | 2 | 1.0 | +| test.c:499:15:499:15 | (unsigned int)... | 1.0 | +| test.c:499:15:499:20 | ... * ... | 35640.0 | +| test.c:499:15:499:24 | ... + ... | 35640.0 | +| test.c:499:19:499:20 | ip | 35640.0 | +| test.c:499:24:499:24 | 1 | 1.0 | +| test.c:499:24:499:24 | (unsigned int)... | 1.0 | +| test.c:499:29:499:30 | 14 | 1.0 | +| test.c:499:29:499:30 | (unsigned int)... | 1.0 | +| test.c:500:13:500:63 | (...) | 1.2702096E9 | +| test.c:500:14:500:15 | 14 | 1.0 | +| test.c:500:14:500:15 | (unsigned int)... | 1.0 | +| test.c:500:14:500:26 | ... * ... | 35640.0 | +| test.c:500:14:500:36 | ... > ... | 1.0 | +| test.c:500:14:500:62 | ... ? ... : ... | 1.2702096E9 | +| test.c:500:19:500:26 | (...) | 35640.0 | +| test.c:500:20:500:20 | 2 | 1.0 | +| test.c:500:20:500:20 | (unsigned int)... | 1.0 | +| test.c:500:20:500:25 | ... * ... | 35640.0 | +| test.c:500:24:500:25 | ip | 35640.0 | +| test.c:500:30:500:31 | 17 | 1.0 | +| test.c:500:30:500:31 | (unsigned int)... | 1.0 | +| test.c:500:30:500:36 | ... * ... | 35640.0 | +| test.c:500:35:500:36 | ip | 35640.0 | +| test.c:500:40:500:41 | 17 | 1.0 | +| test.c:500:40:500:41 | (unsigned int)... | 1.0 | +| test.c:500:40:500:52 | ... * ... | 35640.0 | +| test.c:500:45:500:52 | (...) | 35640.0 | +| test.c:500:46:500:46 | 2 | 1.0 | +| test.c:500:46:500:46 | (unsigned int)... | 1.0 | +| test.c:500:46:500:51 | ... * ... | 35640.0 | +| test.c:500:50:500:51 | ip | 35640.0 | +| test.c:500:56:500:57 | 17 | 1.0 | +| test.c:500:56:500:57 | (unsigned int)... | 1.0 | +| test.c:500:56:500:62 | ... * ... | 35640.0 | +| test.c:500:61:500:62 | ip | 35640.0 | +| test.c:501:17:501:28 | (...) | 106920.0 | +| test.c:501:17:501:33 | ... * ... | 106920.0 | +| test.c:501:18:501:18 | 2 | 1.0 | +| test.c:501:18:501:18 | (unsigned int)... | 1.0 | +| test.c:501:18:501:23 | ... * ... | 106920.0 | +| test.c:501:18:501:27 | ... + ... | 106920.0 | +| test.c:501:22:501:23 | ip | 106920.0 | +| test.c:501:27:501:27 | 1 | 1.0 | +| test.c:501:27:501:27 | (unsigned int)... | 1.0 | +| test.c:501:32:501:33 | 14 | 1.0 | +| test.c:501:32:501:33 | (unsigned int)... | 1.0 | | test.c:502:17:502:18 | 14 | 1.0 | | test.c:502:17:502:18 | (unsigned int)... | 1.0 | -| test.c:502:17:502:23 | ... * ... | 1924560.0 | -| test.c:502:22:502:23 | ip | 1924560.0 | -| test.c:503:11:503:12 | 14 | 1.0 | -| test.c:503:11:503:12 | (unsigned int)... | 1.0 | -| test.c:503:11:503:17 | ... * ... | 641520.0 | -| test.c:503:11:503:33 | ... > ... | 1.0 | -| test.c:503:11:505:25 | ... ? ... : ... | 4.115479104E11 | -| test.c:503:16:503:17 | ip | 641520.0 | -| test.c:503:21:503:28 | (...) | 641520.0 | -| test.c:503:21:503:33 | ... * ... | 641520.0 | -| test.c:503:22:503:23 | ip | 641520.0 | -| test.c:503:22:503:27 | ... + ... | 641520.0 | -| test.c:503:27:503:27 | 1 | 1.0 | -| test.c:503:27:503:27 | (unsigned int)... | 1.0 | -| test.c:503:32:503:33 | 17 | 1.0 | -| test.c:503:32:503:33 | (unsigned int)... | 1.0 | -| test.c:504:13:504:14 | 14 | 1.0 | -| test.c:504:13:504:14 | (unsigned int)... | 1.0 | -| test.c:504:13:504:19 | ... * ... | 641520.0 | -| test.c:504:18:504:19 | ip | 641520.0 | -| test.c:505:13:505:20 | (...) | 641520.0 | -| test.c:505:13:505:25 | ... * ... | 641520.0 | -| test.c:505:14:505:15 | ip | 641520.0 | -| test.c:505:14:505:19 | ... + ... | 641520.0 | -| test.c:505:19:505:19 | 1 | 1.0 | -| test.c:505:19:505:19 | (unsigned int)... | 1.0 | -| test.c:505:24:505:25 | 14 | 1.0 | -| test.c:505:24:505:25 | (unsigned int)... | 1.0 | -| test.c:506:9:506:10 | 14 | 1.0 | -| test.c:506:9:506:10 | (unsigned int)... | 1.0 | -| test.c:506:9:506:15 | ... * ... | 1.026432E7 | -| test.c:506:9:506:59 | ... > ... | 1.0 | -| test.c:506:9:508:51 | ... ? ... : ... | 1.0814104186052936E21 | -| test.c:506:14:506:15 | ip | 1.026432E7 | -| test.c:506:19:506:30 | (...) | 1.026432E7 | -| test.c:506:19:506:35 | ... * ... | 1.026432E7 | -| test.c:506:19:506:59 | ... + ... | 1.053562650624E14 | -| test.c:506:20:506:20 | 2 | 1.0 | -| test.c:506:20:506:20 | (unsigned int)... | 1.0 | -| test.c:506:20:506:25 | ... * ... | 1.026432E7 | -| test.c:506:20:506:29 | ... + ... | 1.026432E7 | -| test.c:506:24:506:25 | ip | 1.026432E7 | -| test.c:506:29:506:29 | 1 | 1.0 | -| test.c:506:29:506:29 | (unsigned int)... | 1.0 | -| test.c:506:34:506:35 | 17 | 1.0 | -| test.c:506:34:506:35 | (unsigned int)... | 1.0 | -| test.c:506:39:506:54 | (...) | 1.026432E7 | -| test.c:506:39:506:59 | ... * ... | 1.026432E7 | -| test.c:506:40:506:40 | 2 | 1.0 | -| test.c:506:40:506:40 | (unsigned int)... | 1.0 | -| test.c:506:40:506:45 | ... * ... | 1.026432E7 | -| test.c:506:40:506:49 | ... + ... | 1.026432E7 | -| test.c:506:40:506:53 | ... + ... | 1.026432E7 | -| test.c:506:44:506:45 | ip | 1.026432E7 | -| test.c:506:49:506:49 | 1 | 1.0 | -| test.c:506:49:506:49 | (unsigned int)... | 1.0 | -| test.c:506:53:506:53 | 1 | 1.0 | -| test.c:506:53:506:53 | (unsigned int)... | 1.0 | -| test.c:506:58:506:59 | 17 | 1.0 | -| test.c:506:58:506:59 | (unsigned int)... | 1.0 | -| test.c:507:11:507:12 | 14 | 1.0 | -| test.c:507:11:507:12 | (unsigned int)... | 1.0 | -| test.c:507:11:507:17 | ... * ... | 1.026432E7 | -| test.c:507:16:507:17 | ip | 1.026432E7 | -| test.c:508:11:508:22 | (...) | 1.026432E7 | -| test.c:508:11:508:27 | ... * ... | 1.026432E7 | -| test.c:508:11:508:51 | ... + ... | 1.053562650624E14 | -| test.c:508:12:508:12 | 2 | 1.0 | -| test.c:508:12:508:12 | (unsigned int)... | 1.0 | -| test.c:508:12:508:17 | ... * ... | 1.026432E7 | -| test.c:508:12:508:21 | ... + ... | 1.026432E7 | -| test.c:508:16:508:17 | ip | 1.026432E7 | -| test.c:508:21:508:21 | 1 | 1.0 | -| test.c:508:21:508:21 | (unsigned int)... | 1.0 | -| test.c:508:26:508:27 | 14 | 1.0 | +| test.c:502:17:502:29 | ... * ... | 106920.0 | +| test.c:502:17:502:39 | ... > ... | 1.0 | +| test.c:502:17:504:25 | ... ? ... : ... | 1.14318864E10 | +| test.c:502:22:502:29 | (...) | 106920.0 | +| test.c:502:23:502:23 | 2 | 1.0 | +| test.c:502:23:502:23 | (unsigned int)... | 1.0 | +| test.c:502:23:502:28 | ... * ... | 106920.0 | +| test.c:502:27:502:28 | ip | 106920.0 | +| test.c:502:33:502:34 | 17 | 1.0 | +| test.c:502:33:502:34 | (unsigned int)... | 1.0 | +| test.c:502:33:502:39 | ... * ... | 106920.0 | +| test.c:502:38:502:39 | ip | 106920.0 | +| test.c:503:19:503:20 | 14 | 1.0 | +| test.c:503:19:503:20 | (unsigned int)... | 1.0 | +| test.c:503:19:503:31 | ... * ... | 106920.0 | +| test.c:503:24:503:31 | (...) | 106920.0 | +| test.c:503:25:503:25 | 2 | 1.0 | +| test.c:503:25:503:25 | (unsigned int)... | 1.0 | +| test.c:503:25:503:30 | ... * ... | 106920.0 | +| test.c:503:29:503:30 | ip | 106920.0 | +| test.c:504:19:504:20 | 14 | 1.0 | +| test.c:504:19:504:20 | (unsigned int)... | 1.0 | +| test.c:504:19:504:25 | ... * ... | 106920.0 | +| test.c:504:24:504:25 | ip | 106920.0 | +| test.c:505:11:505:61 | (...) | 1.028869776E11 | +| test.c:505:12:505:13 | 14 | 1.0 | +| test.c:505:12:505:13 | (unsigned int)... | 1.0 | +| test.c:505:12:505:18 | ... * ... | 320760.0 | +| test.c:505:12:505:34 | ... > ... | 1.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 1.028869776E11 | +| test.c:505:17:505:18 | ip | 320760.0 | +| test.c:505:22:505:29 | (...) | 320760.0 | +| test.c:505:22:505:34 | ... * ... | 320760.0 | +| test.c:505:23:505:24 | ip | 320760.0 | +| test.c:505:23:505:28 | ... + ... | 320760.0 | +| test.c:505:28:505:28 | 1 | 1.0 | +| test.c:505:28:505:28 | (unsigned int)... | 1.0 | +| test.c:505:33:505:34 | 17 | 1.0 | +| test.c:505:33:505:34 | (unsigned int)... | 1.0 | +| test.c:505:38:505:39 | 17 | 1.0 | +| test.c:505:38:505:39 | (unsigned int)... | 1.0 | +| test.c:505:38:505:44 | ... * ... | 320760.0 | +| test.c:505:43:505:44 | ip | 320760.0 | +| test.c:505:48:505:55 | (...) | 320760.0 | +| test.c:505:48:505:60 | ... * ... | 320760.0 | +| test.c:505:49:505:50 | ip | 320760.0 | +| test.c:505:49:505:54 | ... + ... | 320760.0 | +| test.c:505:54:505:54 | 1 | 1.0 | +| test.c:505:54:505:54 | (unsigned int)... | 1.0 | +| test.c:505:59:505:60 | 17 | 1.0 | +| test.c:505:59:505:60 | (unsigned int)... | 1.0 | +| test.c:506:11:506:11 | 4 | 1.0 | +| test.c:506:11:506:11 | (unsigned int)... | 1.0 | +| test.c:506:11:506:28 | ... * ... | 641520.0 | +| test.c:506:11:507:28 | ... + ... | 4.115479104E11 | +| test.c:506:11:508:28 | ... + ... | 2.64016215479808E17 | +| test.c:506:11:514:24 | ... + ... | 1.882023174979571E36 | +| test.c:506:15:506:28 | (...) | 641520.0 | +| test.c:506:16:506:17 | ip | 641520.0 | +| test.c:506:16:506:22 | ... * ... | 641520.0 | +| test.c:506:16:506:27 | ... + ... | 641520.0 | +| test.c:506:21:506:22 | 14 | 1.0 | +| test.c:506:21:506:22 | (unsigned int)... | 1.0 | +| test.c:506:26:506:27 | 32 | 1.0 | +| test.c:506:26:506:27 | (unsigned int)... | 1.0 | +| test.c:507:11:507:28 | (...) | 641520.0 | +| test.c:507:12:507:12 | 2 | 1.0 | +| test.c:507:12:507:12 | (unsigned int)... | 1.0 | +| test.c:507:12:507:17 | ... * ... | 641520.0 | +| test.c:507:12:507:22 | ... * ... | 641520.0 | +| test.c:507:12:507:27 | ... + ... | 641520.0 | +| test.c:507:16:507:17 | ip | 641520.0 | +| test.c:507:21:507:22 | 14 | 1.0 | +| test.c:507:21:507:22 | (unsigned int)... | 1.0 | +| test.c:507:26:507:27 | 32 | 1.0 | +| test.c:507:26:507:27 | (unsigned int)... | 1.0 | +| test.c:508:11:508:11 | 2 | 1.0 | +| test.c:508:11:508:11 | (unsigned int)... | 1.0 | +| test.c:508:11:508:28 | ... * ... | 641520.0 | +| test.c:508:15:508:28 | (...) | 641520.0 | +| test.c:508:16:508:17 | ip | 641520.0 | +| test.c:508:16:508:22 | ... * ... | 641520.0 | +| test.c:508:16:508:27 | ... + ... | 641520.0 | +| test.c:508:21:508:22 | 14 | 1.0 | +| test.c:508:21:508:22 | (unsigned int)... | 1.0 | +| test.c:508:26:508:27 | 64 | 1.0 | | test.c:508:26:508:27 | (unsigned int)... | 1.0 | -| test.c:508:31:508:46 | (...) | 1.026432E7 | -| test.c:508:31:508:51 | ... * ... | 1.026432E7 | -| test.c:508:32:508:32 | 2 | 1.0 | -| test.c:508:32:508:32 | (unsigned int)... | 1.0 | -| test.c:508:32:508:37 | ... * ... | 1.026432E7 | -| test.c:508:32:508:41 | ... + ... | 1.026432E7 | -| test.c:508:32:508:45 | ... + ... | 1.026432E7 | -| test.c:508:36:508:37 | ip | 1.026432E7 | -| test.c:508:41:508:41 | 1 | 1.0 | -| test.c:508:41:508:41 | (unsigned int)... | 1.0 | -| test.c:508:45:508:45 | 1 | 1.0 | -| test.c:508:45:508:45 | (unsigned int)... | 1.0 | -| test.c:508:50:508:51 | 17 | 1.0 | -| test.c:508:50:508:51 | (unsigned int)... | 1.0 | -| test.c:509:9:509:9 | 2 | 1.0 | -| test.c:509:9:509:9 | (unsigned int)... | 1.0 | -| test.c:509:9:509:26 | ... * ... | 1.026432E7 | -| test.c:509:9:529:48 | ... + ... | 1.4698583632369078E72 | -| test.c:509:9:551:30 | ... > ... | 1.0 | -| test.c:509:9:594:27 | ... ? ... : ... | 9.928683178071796E211 | -| test.c:509:13:509:26 | (...) | 1.026432E7 | -| test.c:509:14:509:15 | ip | 1.026432E7 | -| test.c:509:14:509:20 | ... * ... | 1.026432E7 | -| test.c:509:14:509:25 | ... + ... | 1.026432E7 | -| test.c:509:19:509:20 | 14 | 1.0 | -| test.c:509:19:509:20 | (unsigned int)... | 1.0 | -| test.c:509:24:509:25 | 32 | 1.0 | -| test.c:509:24:509:25 | (unsigned int)... | 1.0 | -| test.c:510:13:529:48 | (...) | 1.4320075399411826E65 | -| test.c:510:14:510:14 | 4 | 1.0 | -| test.c:510:14:510:14 | (unsigned int)... | 1.0 | -| test.c:510:14:510:31 | ... * ... | 1.026432E7 | -| test.c:510:14:511:32 | ... + ... | 1.053562650624E14 | -| test.c:510:14:512:32 | ... + ... | 1.0814104186052936E21 | -| test.c:510:14:518:28 | ... + ... | 3.1575109323638057E43 | -| test.c:510:14:519:43 | ... > ... | 1.0 | -| test.c:510:14:529:47 | ... ? ... : ... | 1.4320075399411826E65 | -| test.c:510:18:510:31 | (...) | 1.026432E7 | -| test.c:510:19:510:20 | ip | 1.026432E7 | -| test.c:510:19:510:25 | ... * ... | 1.026432E7 | -| test.c:510:19:510:30 | ... + ... | 1.026432E7 | -| test.c:510:24:510:25 | 14 | 1.0 | -| test.c:510:24:510:25 | (unsigned int)... | 1.0 | -| test.c:510:29:510:30 | 32 | 1.0 | -| test.c:510:29:510:30 | (unsigned int)... | 1.0 | -| test.c:511:15:511:32 | (...) | 1.026432E7 | +| test.c:509:11:514:24 | (...) | 7.128437817954816E18 | +| test.c:509:12:509:23 | (...) | 641520.0 | +| test.c:509:12:509:28 | ... * ... | 641520.0 | +| test.c:509:12:510:61 | ... > ... | 1.0 | +| test.c:509:12:514:23 | ... ? ... : ... | 7.128437817954816E18 | +| test.c:509:13:509:13 | 2 | 1.0 | +| test.c:509:13:509:13 | (unsigned int)... | 1.0 | +| test.c:509:13:509:18 | ... * ... | 641520.0 | +| test.c:509:13:509:22 | ... + ... | 641520.0 | +| test.c:509:17:509:18 | ip | 641520.0 | +| test.c:509:22:509:22 | 1 | 1.0 | +| test.c:509:22:509:22 | (unsigned int)... | 1.0 | +| test.c:509:27:509:28 | 14 | 1.0 | +| test.c:509:27:509:28 | (unsigned int)... | 1.0 | +| test.c:510:11:510:61 | (...) | 4.115479104E11 | +| test.c:510:12:510:13 | 14 | 1.0 | +| test.c:510:12:510:13 | (unsigned int)... | 1.0 | +| test.c:510:12:510:24 | ... * ... | 641520.0 | +| test.c:510:12:510:34 | ... > ... | 1.0 | +| test.c:510:12:510:60 | ... ? ... : ... | 4.115479104E11 | +| test.c:510:17:510:24 | (...) | 641520.0 | +| test.c:510:18:510:18 | 2 | 1.0 | +| test.c:510:18:510:18 | (unsigned int)... | 1.0 | +| test.c:510:18:510:23 | ... * ... | 641520.0 | +| test.c:510:22:510:23 | ip | 641520.0 | +| test.c:510:28:510:29 | 17 | 1.0 | +| test.c:510:28:510:29 | (unsigned int)... | 1.0 | +| test.c:510:28:510:34 | ... * ... | 641520.0 | +| test.c:510:33:510:34 | ip | 641520.0 | +| test.c:510:38:510:39 | 17 | 1.0 | +| test.c:510:38:510:39 | (unsigned int)... | 1.0 | +| test.c:510:38:510:50 | ... * ... | 641520.0 | +| test.c:510:43:510:50 | (...) | 641520.0 | +| test.c:510:44:510:44 | 2 | 1.0 | +| test.c:510:44:510:44 | (unsigned int)... | 1.0 | +| test.c:510:44:510:49 | ... * ... | 641520.0 | +| test.c:510:48:510:49 | ip | 641520.0 | +| test.c:510:54:510:55 | 17 | 1.0 | +| test.c:510:54:510:55 | (unsigned int)... | 1.0 | +| test.c:510:54:510:60 | ... * ... | 641520.0 | +| test.c:510:59:510:60 | ip | 641520.0 | +| test.c:511:15:511:26 | (...) | 1924560.0 | +| test.c:511:15:511:31 | ... * ... | 1924560.0 | | test.c:511:16:511:16 | 2 | 1.0 | | test.c:511:16:511:16 | (unsigned int)... | 1.0 | -| test.c:511:16:511:21 | ... * ... | 1.026432E7 | -| test.c:511:16:511:26 | ... * ... | 1.026432E7 | -| test.c:511:16:511:31 | ... + ... | 1.026432E7 | -| test.c:511:20:511:21 | ip | 1.026432E7 | -| test.c:511:25:511:26 | 14 | 1.0 | -| test.c:511:25:511:26 | (unsigned int)... | 1.0 | -| test.c:511:30:511:31 | 32 | 1.0 | +| test.c:511:16:511:21 | ... * ... | 1924560.0 | +| test.c:511:16:511:25 | ... + ... | 1924560.0 | +| test.c:511:20:511:21 | ip | 1924560.0 | +| test.c:511:25:511:25 | 1 | 1.0 | +| test.c:511:25:511:25 | (unsigned int)... | 1.0 | +| test.c:511:30:511:31 | 14 | 1.0 | | test.c:511:30:511:31 | (unsigned int)... | 1.0 | -| test.c:512:15:512:15 | 2 | 1.0 | -| test.c:512:15:512:15 | (unsigned int)... | 1.0 | -| test.c:512:15:512:32 | ... * ... | 1.026432E7 | -| test.c:512:19:512:32 | (...) | 1.026432E7 | -| test.c:512:20:512:21 | ip | 1.026432E7 | -| test.c:512:20:512:26 | ... * ... | 1.026432E7 | -| test.c:512:20:512:31 | ... + ... | 1.026432E7 | -| test.c:512:25:512:26 | 14 | 1.0 | -| test.c:512:25:512:26 | (unsigned int)... | 1.0 | -| test.c:512:30:512:31 | 64 | 1.0 | -| test.c:512:30:512:31 | (unsigned int)... | 1.0 | -| test.c:513:15:518:28 | (...) | 2.9198081302342926E22 | -| test.c:513:16:513:27 | (...) | 1.026432E7 | -| test.c:513:16:513:32 | ... * ... | 1.026432E7 | -| test.c:513:16:514:65 | ... > ... | 1.0 | -| test.c:513:16:518:27 | ... ? ... : ... | 2.9198081302342926E22 | -| test.c:513:17:513:17 | 2 | 1.0 | -| test.c:513:17:513:17 | (unsigned int)... | 1.0 | -| test.c:513:17:513:22 | ... * ... | 1.026432E7 | -| test.c:513:17:513:26 | ... + ... | 1.026432E7 | -| test.c:513:21:513:22 | ip | 1.026432E7 | -| test.c:513:26:513:26 | 1 | 1.0 | -| test.c:513:26:513:26 | (unsigned int)... | 1.0 | -| test.c:513:31:513:32 | 14 | 1.0 | -| test.c:513:31:513:32 | (unsigned int)... | 1.0 | -| test.c:514:15:514:65 | (...) | 1.053562650624E14 | -| test.c:514:16:514:17 | 14 | 1.0 | -| test.c:514:16:514:17 | (unsigned int)... | 1.0 | -| test.c:514:16:514:28 | ... * ... | 1.026432E7 | -| test.c:514:16:514:38 | ... > ... | 1.0 | -| test.c:514:16:514:64 | ... ? ... : ... | 1.053562650624E14 | -| test.c:514:21:514:28 | (...) | 1.026432E7 | -| test.c:514:22:514:22 | 2 | 1.0 | -| test.c:514:22:514:22 | (unsigned int)... | 1.0 | -| test.c:514:22:514:27 | ... * ... | 1.026432E7 | -| test.c:514:26:514:27 | ip | 1.026432E7 | -| test.c:514:32:514:33 | 17 | 1.0 | -| test.c:514:32:514:33 | (unsigned int)... | 1.0 | -| test.c:514:32:514:38 | ... * ... | 1.026432E7 | -| test.c:514:37:514:38 | ip | 1.026432E7 | -| test.c:514:42:514:43 | 17 | 1.0 | -| test.c:514:42:514:43 | (unsigned int)... | 1.0 | -| test.c:514:42:514:54 | ... * ... | 1.026432E7 | -| test.c:514:47:514:54 | (...) | 1.026432E7 | -| test.c:514:48:514:48 | 2 | 1.0 | -| test.c:514:48:514:48 | (unsigned int)... | 1.0 | -| test.c:514:48:514:53 | ... * ... | 1.026432E7 | -| test.c:514:52:514:53 | ip | 1.026432E7 | -| test.c:514:58:514:59 | 17 | 1.0 | -| test.c:514:58:514:59 | (unsigned int)... | 1.0 | -| test.c:514:58:514:64 | ... * ... | 1.026432E7 | -| test.c:514:63:514:64 | ip | 1.026432E7 | -| test.c:515:19:515:30 | (...) | 3.079296E7 | -| test.c:515:19:515:35 | ... * ... | 3.079296E7 | -| test.c:515:20:515:20 | 2 | 1.0 | -| test.c:515:20:515:20 | (unsigned int)... | 1.0 | -| test.c:515:20:515:25 | ... * ... | 3.079296E7 | -| test.c:515:20:515:29 | ... + ... | 3.079296E7 | -| test.c:515:24:515:25 | ip | 3.079296E7 | -| test.c:515:29:515:29 | 1 | 1.0 | -| test.c:515:29:515:29 | (unsigned int)... | 1.0 | -| test.c:515:34:515:35 | 14 | 1.0 | -| test.c:515:34:515:35 | (unsigned int)... | 1.0 | -| test.c:516:19:516:20 | 14 | 1.0 | -| test.c:516:19:516:20 | (unsigned int)... | 1.0 | -| test.c:516:19:516:31 | ... * ... | 3.079296E7 | -| test.c:516:19:516:41 | ... > ... | 1.0 | -| test.c:516:19:518:27 | ... ? ... : ... | 9.482063855616E14 | -| test.c:516:24:516:31 | (...) | 3.079296E7 | -| test.c:516:25:516:25 | 2 | 1.0 | -| test.c:516:25:516:25 | (unsigned int)... | 1.0 | -| test.c:516:25:516:30 | ... * ... | 3.079296E7 | -| test.c:516:29:516:30 | ip | 3.079296E7 | -| test.c:516:35:516:36 | 17 | 1.0 | -| test.c:516:35:516:36 | (unsigned int)... | 1.0 | -| test.c:516:35:516:41 | ... * ... | 3.079296E7 | -| test.c:516:40:516:41 | ip | 3.079296E7 | -| test.c:517:21:517:22 | 14 | 1.0 | -| test.c:517:21:517:22 | (unsigned int)... | 1.0 | -| test.c:517:21:517:33 | ... * ... | 3.079296E7 | -| test.c:517:26:517:33 | (...) | 3.079296E7 | -| test.c:517:27:517:27 | 2 | 1.0 | -| test.c:517:27:517:27 | (unsigned int)... | 1.0 | -| test.c:517:27:517:32 | ... * ... | 3.079296E7 | -| test.c:517:31:517:32 | ip | 3.079296E7 | -| test.c:518:21:518:22 | 14 | 1.0 | -| test.c:518:21:518:22 | (unsigned int)... | 1.0 | -| test.c:518:21:518:27 | ... * ... | 3.079296E7 | -| test.c:518:26:518:27 | ip | 3.079296E7 | -| test.c:519:13:519:13 | 2 | 1.0 | -| test.c:519:13:519:13 | (unsigned int)... | 1.0 | -| test.c:519:13:519:18 | ... * ... | 9.237888E7 | -| test.c:519:13:519:23 | ... * ... | 9.237888E7 | -| test.c:519:13:519:43 | ... + ... | 8.5338574700544E15 | -| test.c:519:17:519:18 | ip | 9.237888E7 | -| test.c:519:22:519:23 | 14 | 1.0 | -| test.c:519:22:519:23 | (unsigned int)... | 1.0 | -| test.c:519:27:519:38 | (...) | 9.237888E7 | -| test.c:519:27:519:43 | ... * ... | 9.237888E7 | -| test.c:519:28:519:28 | 2 | 1.0 | -| test.c:519:28:519:28 | (unsigned int)... | 1.0 | -| test.c:519:28:519:33 | ... * ... | 9.237888E7 | -| test.c:519:28:519:37 | ... + ... | 9.237888E7 | -| test.c:519:32:519:33 | ip | 9.237888E7 | -| test.c:519:37:519:37 | 1 | 1.0 | -| test.c:519:37:519:37 | (unsigned int)... | 1.0 | -| test.c:519:42:519:43 | 17 | 1.0 | -| test.c:519:42:519:43 | (unsigned int)... | 1.0 | -| test.c:520:17:520:17 | 4 | 1.0 | -| test.c:520:17:520:17 | (unsigned int)... | 1.0 | -| test.c:520:17:520:34 | ... * ... | 9.237888E7 | -| test.c:520:17:521:34 | ... + ... | 8.5338574700544E15 | -| test.c:520:17:522:34 | ... + ... | 7.88348195163259E23 | -| test.c:520:17:528:30 | ... + ... | 1.6780307674063534E49 | -| test.c:520:21:520:34 | (...) | 9.237888E7 | -| test.c:520:22:520:23 | ip | 9.237888E7 | -| test.c:520:22:520:28 | ... * ... | 9.237888E7 | -| test.c:520:22:520:33 | ... + ... | 9.237888E7 | -| test.c:520:27:520:28 | 14 | 1.0 | -| test.c:520:27:520:28 | (unsigned int)... | 1.0 | -| test.c:520:32:520:33 | 32 | 1.0 | -| test.c:520:32:520:33 | (unsigned int)... | 1.0 | -| test.c:521:17:521:34 | (...) | 9.237888E7 | -| test.c:521:18:521:18 | 2 | 1.0 | -| test.c:521:18:521:18 | (unsigned int)... | 1.0 | -| test.c:521:18:521:23 | ... * ... | 9.237888E7 | -| test.c:521:18:521:28 | ... * ... | 9.237888E7 | -| test.c:521:18:521:33 | ... + ... | 9.237888E7 | -| test.c:521:22:521:23 | ip | 9.237888E7 | -| test.c:521:27:521:28 | 14 | 1.0 | -| test.c:521:27:521:28 | (unsigned int)... | 1.0 | -| test.c:521:32:521:33 | 32 | 1.0 | -| test.c:521:32:521:33 | (unsigned int)... | 1.0 | -| test.c:522:17:522:17 | 2 | 1.0 | -| test.c:522:17:522:17 | (unsigned int)... | 1.0 | -| test.c:522:17:522:34 | ... * ... | 9.237888E7 | -| test.c:522:21:522:34 | (...) | 9.237888E7 | -| test.c:522:22:522:23 | ip | 9.237888E7 | -| test.c:522:22:522:28 | ... * ... | 9.237888E7 | -| test.c:522:22:522:33 | ... + ... | 9.237888E7 | -| test.c:522:27:522:28 | 14 | 1.0 | -| test.c:522:27:522:28 | (unsigned int)... | 1.0 | -| test.c:522:32:522:33 | 64 | 1.0 | -| test.c:522:32:522:33 | (unsigned int)... | 1.0 | -| test.c:523:17:528:30 | (...) | 2.1285401269407994E25 | -| test.c:523:18:523:29 | (...) | 9.237888E7 | -| test.c:523:18:523:34 | ... * ... | 9.237888E7 | -| test.c:523:18:524:67 | ... > ... | 1.0 | -| test.c:523:18:528:29 | ... ? ... : ... | 2.1285401269407994E25 | -| test.c:523:19:523:19 | 2 | 1.0 | -| test.c:523:19:523:19 | (unsigned int)... | 1.0 | -| test.c:523:19:523:24 | ... * ... | 9.237888E7 | -| test.c:523:19:523:28 | ... + ... | 9.237888E7 | -| test.c:523:23:523:24 | ip | 9.237888E7 | -| test.c:523:28:523:28 | 1 | 1.0 | -| test.c:523:28:523:28 | (unsigned int)... | 1.0 | -| test.c:523:33:523:34 | 14 | 1.0 | -| test.c:523:33:523:34 | (unsigned int)... | 1.0 | -| test.c:524:17:524:67 | (...) | 8.5338574700544E15 | -| test.c:524:18:524:19 | 14 | 1.0 | -| test.c:524:18:524:19 | (unsigned int)... | 1.0 | -| test.c:524:18:524:30 | ... * ... | 9.237888E7 | -| test.c:524:18:524:40 | ... > ... | 1.0 | -| test.c:524:18:524:66 | ... ? ... : ... | 8.5338574700544E15 | -| test.c:524:23:524:30 | (...) | 9.237888E7 | -| test.c:524:24:524:24 | 2 | 1.0 | -| test.c:524:24:524:24 | (unsigned int)... | 1.0 | -| test.c:524:24:524:29 | ... * ... | 9.237888E7 | -| test.c:524:28:524:29 | ip | 9.237888E7 | -| test.c:524:34:524:35 | 17 | 1.0 | -| test.c:524:34:524:35 | (unsigned int)... | 1.0 | -| test.c:524:34:524:40 | ... * ... | 9.237888E7 | -| test.c:524:39:524:40 | ip | 9.237888E7 | -| test.c:524:44:524:45 | 17 | 1.0 | -| test.c:524:44:524:45 | (unsigned int)... | 1.0 | -| test.c:524:44:524:56 | ... * ... | 9.237888E7 | -| test.c:524:49:524:56 | (...) | 9.237888E7 | -| test.c:524:50:524:50 | 2 | 1.0 | -| test.c:524:50:524:50 | (unsigned int)... | 1.0 | -| test.c:524:50:524:55 | ... * ... | 9.237888E7 | -| test.c:524:54:524:55 | ip | 9.237888E7 | -| test.c:524:60:524:61 | 17 | 1.0 | -| test.c:524:60:524:61 | (unsigned int)... | 1.0 | -| test.c:524:60:524:66 | ... * ... | 9.237888E7 | -| test.c:524:65:524:66 | ip | 9.237888E7 | -| test.c:525:21:525:32 | (...) | 2.7713664E8 | -| test.c:525:21:525:37 | ... * ... | 2.7713664E8 | -| test.c:525:22:525:22 | 2 | 1.0 | -| test.c:525:22:525:22 | (unsigned int)... | 1.0 | -| test.c:525:22:525:27 | ... * ... | 2.7713664E8 | -| test.c:525:22:525:31 | ... + ... | 2.7713664E8 | -| test.c:525:26:525:27 | ip | 2.7713664E8 | -| test.c:525:31:525:31 | 1 | 1.0 | -| test.c:525:31:525:31 | (unsigned int)... | 1.0 | -| test.c:525:36:525:37 | 14 | 1.0 | -| test.c:525:36:525:37 | (unsigned int)... | 1.0 | -| test.c:526:21:526:22 | 14 | 1.0 | -| test.c:526:21:526:22 | (unsigned int)... | 1.0 | -| test.c:526:21:526:33 | ... * ... | 2.7713664E8 | -| test.c:526:21:526:43 | ... > ... | 1.0 | -| test.c:526:21:528:29 | ... ? ... : ... | 7.68047172304896E16 | -| test.c:526:26:526:33 | (...) | 2.7713664E8 | -| test.c:526:27:526:27 | 2 | 1.0 | -| test.c:526:27:526:27 | (unsigned int)... | 1.0 | -| test.c:526:27:526:32 | ... * ... | 2.7713664E8 | -| test.c:526:31:526:32 | ip | 2.7713664E8 | -| test.c:526:37:526:38 | 17 | 1.0 | -| test.c:526:37:526:38 | (unsigned int)... | 1.0 | -| test.c:526:37:526:43 | ... * ... | 2.7713664E8 | -| test.c:526:42:526:43 | ip | 2.7713664E8 | -| test.c:527:23:527:24 | 14 | 1.0 | -| test.c:527:23:527:24 | (unsigned int)... | 1.0 | -| test.c:527:23:527:35 | ... * ... | 2.7713664E8 | -| test.c:527:28:527:35 | (...) | 2.7713664E8 | -| test.c:527:29:527:29 | 2 | 1.0 | +| test.c:512:15:512:16 | 14 | 1.0 | +| test.c:512:15:512:16 | (unsigned int)... | 1.0 | +| test.c:512:15:512:27 | ... * ... | 1924560.0 | +| test.c:512:15:512:37 | ... > ... | 1.0 | +| test.c:512:15:514:23 | ... ? ... : ... | 3.7039311936E12 | +| test.c:512:20:512:27 | (...) | 1924560.0 | +| test.c:512:21:512:21 | 2 | 1.0 | +| test.c:512:21:512:21 | (unsigned int)... | 1.0 | +| test.c:512:21:512:26 | ... * ... | 1924560.0 | +| test.c:512:25:512:26 | ip | 1924560.0 | +| test.c:512:31:512:32 | 17 | 1.0 | +| test.c:512:31:512:32 | (unsigned int)... | 1.0 | +| test.c:512:31:512:37 | ... * ... | 1924560.0 | +| test.c:512:36:512:37 | ip | 1924560.0 | +| test.c:513:17:513:18 | 14 | 1.0 | +| test.c:513:17:513:18 | (unsigned int)... | 1.0 | +| test.c:513:17:513:29 | ... * ... | 1924560.0 | +| test.c:513:22:513:29 | (...) | 1924560.0 | +| test.c:513:23:513:23 | 2 | 1.0 | +| test.c:513:23:513:23 | (unsigned int)... | 1.0 | +| test.c:513:23:513:28 | ... * ... | 1924560.0 | +| test.c:513:27:513:28 | ip | 1924560.0 | +| test.c:514:17:514:18 | 14 | 1.0 | +| test.c:514:17:514:18 | (unsigned int)... | 1.0 | +| test.c:514:17:514:23 | ... * ... | 1924560.0 | +| test.c:514:22:514:23 | ip | 1924560.0 | +| test.c:515:11:515:12 | 14 | 1.0 | +| test.c:515:11:515:12 | (unsigned int)... | 1.0 | +| test.c:515:11:515:17 | ... * ... | 641520.0 | +| test.c:515:11:515:33 | ... > ... | 1.0 | +| test.c:515:11:517:25 | ... ? ... : ... | 4.115479104E11 | +| test.c:515:16:515:17 | ip | 641520.0 | +| test.c:515:21:515:28 | (...) | 641520.0 | +| test.c:515:21:515:33 | ... * ... | 641520.0 | +| test.c:515:22:515:23 | ip | 641520.0 | +| test.c:515:22:515:27 | ... + ... | 641520.0 | +| test.c:515:27:515:27 | 1 | 1.0 | +| test.c:515:27:515:27 | (unsigned int)... | 1.0 | +| test.c:515:32:515:33 | 17 | 1.0 | +| test.c:515:32:515:33 | (unsigned int)... | 1.0 | +| test.c:516:13:516:14 | 14 | 1.0 | +| test.c:516:13:516:14 | (unsigned int)... | 1.0 | +| test.c:516:13:516:19 | ... * ... | 641520.0 | +| test.c:516:18:516:19 | ip | 641520.0 | +| test.c:517:13:517:20 | (...) | 641520.0 | +| test.c:517:13:517:25 | ... * ... | 641520.0 | +| test.c:517:14:517:15 | ip | 641520.0 | +| test.c:517:14:517:19 | ... + ... | 641520.0 | +| test.c:517:19:517:19 | 1 | 1.0 | +| test.c:517:19:517:19 | (unsigned int)... | 1.0 | +| test.c:517:24:517:25 | 14 | 1.0 | +| test.c:517:24:517:25 | (unsigned int)... | 1.0 | +| test.c:518:9:518:10 | 14 | 1.0 | +| test.c:518:9:518:10 | (unsigned int)... | 1.0 | +| test.c:518:9:518:15 | ... * ... | 1.026432E7 | +| test.c:518:9:518:59 | ... > ... | 1.0 | +| test.c:518:9:520:51 | ... ? ... : ... | 1.0814104186052936E21 | +| test.c:518:14:518:15 | ip | 1.026432E7 | +| test.c:518:19:518:30 | (...) | 1.026432E7 | +| test.c:518:19:518:35 | ... * ... | 1.026432E7 | +| test.c:518:19:518:59 | ... + ... | 1.053562650624E14 | +| test.c:518:20:518:20 | 2 | 1.0 | +| test.c:518:20:518:20 | (unsigned int)... | 1.0 | +| test.c:518:20:518:25 | ... * ... | 1.026432E7 | +| test.c:518:20:518:29 | ... + ... | 1.026432E7 | +| test.c:518:24:518:25 | ip | 1.026432E7 | +| test.c:518:29:518:29 | 1 | 1.0 | +| test.c:518:29:518:29 | (unsigned int)... | 1.0 | +| test.c:518:34:518:35 | 17 | 1.0 | +| test.c:518:34:518:35 | (unsigned int)... | 1.0 | +| test.c:518:39:518:54 | (...) | 1.026432E7 | +| test.c:518:39:518:59 | ... * ... | 1.026432E7 | +| test.c:518:40:518:40 | 2 | 1.0 | +| test.c:518:40:518:40 | (unsigned int)... | 1.0 | +| test.c:518:40:518:45 | ... * ... | 1.026432E7 | +| test.c:518:40:518:49 | ... + ... | 1.026432E7 | +| test.c:518:40:518:53 | ... + ... | 1.026432E7 | +| test.c:518:44:518:45 | ip | 1.026432E7 | +| test.c:518:49:518:49 | 1 | 1.0 | +| test.c:518:49:518:49 | (unsigned int)... | 1.0 | +| test.c:518:53:518:53 | 1 | 1.0 | +| test.c:518:53:518:53 | (unsigned int)... | 1.0 | +| test.c:518:58:518:59 | 17 | 1.0 | +| test.c:518:58:518:59 | (unsigned int)... | 1.0 | +| test.c:519:11:519:12 | 14 | 1.0 | +| test.c:519:11:519:12 | (unsigned int)... | 1.0 | +| test.c:519:11:519:17 | ... * ... | 1.026432E7 | +| test.c:519:16:519:17 | ip | 1.026432E7 | +| test.c:520:11:520:22 | (...) | 1.026432E7 | +| test.c:520:11:520:27 | ... * ... | 1.026432E7 | +| test.c:520:11:520:51 | ... + ... | 1.053562650624E14 | +| test.c:520:12:520:12 | 2 | 1.0 | +| test.c:520:12:520:12 | (unsigned int)... | 1.0 | +| test.c:520:12:520:17 | ... * ... | 1.026432E7 | +| test.c:520:12:520:21 | ... + ... | 1.026432E7 | +| test.c:520:16:520:17 | ip | 1.026432E7 | +| test.c:520:21:520:21 | 1 | 1.0 | +| test.c:520:21:520:21 | (unsigned int)... | 1.0 | +| test.c:520:26:520:27 | 14 | 1.0 | +| test.c:520:26:520:27 | (unsigned int)... | 1.0 | +| test.c:520:31:520:46 | (...) | 1.026432E7 | +| test.c:520:31:520:51 | ... * ... | 1.026432E7 | +| test.c:520:32:520:32 | 2 | 1.0 | +| test.c:520:32:520:32 | (unsigned int)... | 1.0 | +| test.c:520:32:520:37 | ... * ... | 1.026432E7 | +| test.c:520:32:520:41 | ... + ... | 1.026432E7 | +| test.c:520:32:520:45 | ... + ... | 1.026432E7 | +| test.c:520:36:520:37 | ip | 1.026432E7 | +| test.c:520:41:520:41 | 1 | 1.0 | +| test.c:520:41:520:41 | (unsigned int)... | 1.0 | +| test.c:520:45:520:45 | 1 | 1.0 | +| test.c:520:45:520:45 | (unsigned int)... | 1.0 | +| test.c:520:50:520:51 | 17 | 1.0 | +| test.c:520:50:520:51 | (unsigned int)... | 1.0 | +| test.c:521:9:521:9 | 2 | 1.0 | +| test.c:521:9:521:9 | (unsigned int)... | 1.0 | +| test.c:521:9:521:26 | ... * ... | 1.026432E7 | +| test.c:521:9:541:48 | ... + ... | 1.4698583632369078E72 | +| test.c:521:9:563:30 | ... > ... | 1.0 | +| test.c:521:9:606:27 | ... ? ... : ... | 9.928683178071796E211 | +| test.c:521:13:521:26 | (...) | 1.026432E7 | +| test.c:521:14:521:15 | ip | 1.026432E7 | +| test.c:521:14:521:20 | ... * ... | 1.026432E7 | +| test.c:521:14:521:25 | ... + ... | 1.026432E7 | +| test.c:521:19:521:20 | 14 | 1.0 | +| test.c:521:19:521:20 | (unsigned int)... | 1.0 | +| test.c:521:24:521:25 | 32 | 1.0 | +| test.c:521:24:521:25 | (unsigned int)... | 1.0 | +| test.c:522:13:541:48 | (...) | 1.4320075399411826E65 | +| test.c:522:14:522:14 | 4 | 1.0 | +| test.c:522:14:522:14 | (unsigned int)... | 1.0 | +| test.c:522:14:522:31 | ... * ... | 1.026432E7 | +| test.c:522:14:523:32 | ... + ... | 1.053562650624E14 | +| test.c:522:14:524:32 | ... + ... | 1.0814104186052936E21 | +| test.c:522:14:530:28 | ... + ... | 3.1575109323638057E43 | +| test.c:522:14:531:43 | ... > ... | 1.0 | +| test.c:522:14:541:47 | ... ? ... : ... | 1.4320075399411826E65 | +| test.c:522:18:522:31 | (...) | 1.026432E7 | +| test.c:522:19:522:20 | ip | 1.026432E7 | +| test.c:522:19:522:25 | ... * ... | 1.026432E7 | +| test.c:522:19:522:30 | ... + ... | 1.026432E7 | +| test.c:522:24:522:25 | 14 | 1.0 | +| test.c:522:24:522:25 | (unsigned int)... | 1.0 | +| test.c:522:29:522:30 | 32 | 1.0 | +| test.c:522:29:522:30 | (unsigned int)... | 1.0 | +| test.c:523:15:523:32 | (...) | 1.026432E7 | +| test.c:523:16:523:16 | 2 | 1.0 | +| test.c:523:16:523:16 | (unsigned int)... | 1.0 | +| test.c:523:16:523:21 | ... * ... | 1.026432E7 | +| test.c:523:16:523:26 | ... * ... | 1.026432E7 | +| test.c:523:16:523:31 | ... + ... | 1.026432E7 | +| test.c:523:20:523:21 | ip | 1.026432E7 | +| test.c:523:25:523:26 | 14 | 1.0 | +| test.c:523:25:523:26 | (unsigned int)... | 1.0 | +| test.c:523:30:523:31 | 32 | 1.0 | +| test.c:523:30:523:31 | (unsigned int)... | 1.0 | +| test.c:524:15:524:15 | 2 | 1.0 | +| test.c:524:15:524:15 | (unsigned int)... | 1.0 | +| test.c:524:15:524:32 | ... * ... | 1.026432E7 | +| test.c:524:19:524:32 | (...) | 1.026432E7 | +| test.c:524:20:524:21 | ip | 1.026432E7 | +| test.c:524:20:524:26 | ... * ... | 1.026432E7 | +| test.c:524:20:524:31 | ... + ... | 1.026432E7 | +| test.c:524:25:524:26 | 14 | 1.0 | +| test.c:524:25:524:26 | (unsigned int)... | 1.0 | +| test.c:524:30:524:31 | 64 | 1.0 | +| test.c:524:30:524:31 | (unsigned int)... | 1.0 | +| test.c:525:15:530:28 | (...) | 2.9198081302342926E22 | +| test.c:525:16:525:27 | (...) | 1.026432E7 | +| test.c:525:16:525:32 | ... * ... | 1.026432E7 | +| test.c:525:16:526:65 | ... > ... | 1.0 | +| test.c:525:16:530:27 | ... ? ... : ... | 2.9198081302342926E22 | +| test.c:525:17:525:17 | 2 | 1.0 | +| test.c:525:17:525:17 | (unsigned int)... | 1.0 | +| test.c:525:17:525:22 | ... * ... | 1.026432E7 | +| test.c:525:17:525:26 | ... + ... | 1.026432E7 | +| test.c:525:21:525:22 | ip | 1.026432E7 | +| test.c:525:26:525:26 | 1 | 1.0 | +| test.c:525:26:525:26 | (unsigned int)... | 1.0 | +| test.c:525:31:525:32 | 14 | 1.0 | +| test.c:525:31:525:32 | (unsigned int)... | 1.0 | +| test.c:526:15:526:65 | (...) | 1.053562650624E14 | +| test.c:526:16:526:17 | 14 | 1.0 | +| test.c:526:16:526:17 | (unsigned int)... | 1.0 | +| test.c:526:16:526:28 | ... * ... | 1.026432E7 | +| test.c:526:16:526:38 | ... > ... | 1.0 | +| test.c:526:16:526:64 | ... ? ... : ... | 1.053562650624E14 | +| test.c:526:21:526:28 | (...) | 1.026432E7 | +| test.c:526:22:526:22 | 2 | 1.0 | +| test.c:526:22:526:22 | (unsigned int)... | 1.0 | +| test.c:526:22:526:27 | ... * ... | 1.026432E7 | +| test.c:526:26:526:27 | ip | 1.026432E7 | +| test.c:526:32:526:33 | 17 | 1.0 | +| test.c:526:32:526:33 | (unsigned int)... | 1.0 | +| test.c:526:32:526:38 | ... * ... | 1.026432E7 | +| test.c:526:37:526:38 | ip | 1.026432E7 | +| test.c:526:42:526:43 | 17 | 1.0 | +| test.c:526:42:526:43 | (unsigned int)... | 1.0 | +| test.c:526:42:526:54 | ... * ... | 1.026432E7 | +| test.c:526:47:526:54 | (...) | 1.026432E7 | +| test.c:526:48:526:48 | 2 | 1.0 | +| test.c:526:48:526:48 | (unsigned int)... | 1.0 | +| test.c:526:48:526:53 | ... * ... | 1.026432E7 | +| test.c:526:52:526:53 | ip | 1.026432E7 | +| test.c:526:58:526:59 | 17 | 1.0 | +| test.c:526:58:526:59 | (unsigned int)... | 1.0 | +| test.c:526:58:526:64 | ... * ... | 1.026432E7 | +| test.c:526:63:526:64 | ip | 1.026432E7 | +| test.c:527:19:527:30 | (...) | 3.079296E7 | +| test.c:527:19:527:35 | ... * ... | 3.079296E7 | +| test.c:527:20:527:20 | 2 | 1.0 | +| test.c:527:20:527:20 | (unsigned int)... | 1.0 | +| test.c:527:20:527:25 | ... * ... | 3.079296E7 | +| test.c:527:20:527:29 | ... + ... | 3.079296E7 | +| test.c:527:24:527:25 | ip | 3.079296E7 | +| test.c:527:29:527:29 | 1 | 1.0 | | test.c:527:29:527:29 | (unsigned int)... | 1.0 | -| test.c:527:29:527:34 | ... * ... | 2.7713664E8 | -| test.c:527:33:527:34 | ip | 2.7713664E8 | -| test.c:528:23:528:24 | 14 | 1.0 | -| test.c:528:23:528:24 | (unsigned int)... | 1.0 | -| test.c:528:23:528:29 | ... * ... | 2.7713664E8 | -| test.c:528:28:528:29 | ip | 2.7713664E8 | -| test.c:529:17:529:17 | 2 | 1.0 | -| test.c:529:17:529:17 | (unsigned int)... | 1.0 | -| test.c:529:17:529:22 | ... * ... | 9.237888E7 | -| test.c:529:17:529:27 | ... * ... | 9.237888E7 | -| test.c:529:17:529:47 | ... + ... | 8.5338574700544E15 | -| test.c:529:21:529:22 | ip | 9.237888E7 | -| test.c:529:26:529:27 | 14 | 1.0 | -| test.c:529:26:529:27 | (unsigned int)... | 1.0 | -| test.c:529:31:529:42 | (...) | 9.237888E7 | -| test.c:529:31:529:47 | ... * ... | 9.237888E7 | -| test.c:529:32:529:32 | 2 | 1.0 | -| test.c:529:32:529:32 | (unsigned int)... | 1.0 | -| test.c:529:32:529:37 | ... * ... | 9.237888E7 | -| test.c:529:32:529:41 | ... + ... | 9.237888E7 | -| test.c:529:36:529:37 | ip | 9.237888E7 | -| test.c:529:41:529:41 | 1 | 1.0 | -| test.c:529:41:529:41 | (unsigned int)... | 1.0 | -| test.c:529:46:529:47 | 17 | 1.0 | -| test.c:529:46:529:47 | (unsigned int)... | 1.0 | -| test.c:530:11:551:30 | (...) | 1.5780666634686576E83 | -| test.c:530:12:530:12 | 4 | 1.0 | -| test.c:530:12:530:12 | (unsigned int)... | 1.0 | -| test.c:530:12:530:29 | ... * ... | 9.237888E8 | -| test.c:530:12:531:30 | ... + ... | 8.5338574700544E17 | -| test.c:530:12:532:30 | ... + ... | 7.88348195163259E26 | -| test.c:530:12:538:26 | ... + ... | 1.6780307674063535E55 | -| test.c:530:12:539:61 | ... > ... | 1.0 | -| test.c:530:12:551:29 | ... ? ... : ... | 1.5780666634686576E83 | -| test.c:530:16:530:29 | (...) | 9.237888E8 | -| test.c:530:17:530:18 | ip | 9.237888E8 | -| test.c:530:17:530:23 | ... * ... | 9.237888E8 | -| test.c:530:17:530:28 | ... + ... | 9.237888E8 | -| test.c:530:22:530:23 | 14 | 1.0 | -| test.c:530:22:530:23 | (unsigned int)... | 1.0 | -| test.c:530:27:530:28 | 32 | 1.0 | -| test.c:530:27:530:28 | (unsigned int)... | 1.0 | -| test.c:531:13:531:30 | (...) | 9.237888E8 | -| test.c:531:14:531:14 | 2 | 1.0 | -| test.c:531:14:531:14 | (unsigned int)... | 1.0 | -| test.c:531:14:531:19 | ... * ... | 9.237888E8 | -| test.c:531:14:531:24 | ... * ... | 9.237888E8 | -| test.c:531:14:531:29 | ... + ... | 9.237888E8 | -| test.c:531:18:531:19 | ip | 9.237888E8 | -| test.c:531:23:531:24 | 14 | 1.0 | -| test.c:531:23:531:24 | (unsigned int)... | 1.0 | -| test.c:531:28:531:29 | 32 | 1.0 | -| test.c:531:28:531:29 | (unsigned int)... | 1.0 | -| test.c:532:13:532:13 | 2 | 1.0 | -| test.c:532:13:532:13 | (unsigned int)... | 1.0 | -| test.c:532:13:532:30 | ... * ... | 9.237888E8 | -| test.c:532:17:532:30 | (...) | 9.237888E8 | -| test.c:532:18:532:19 | ip | 9.237888E8 | -| test.c:532:18:532:24 | ... * ... | 9.237888E8 | -| test.c:532:18:532:29 | ... + ... | 9.237888E8 | -| test.c:532:23:532:24 | 14 | 1.0 | -| test.c:532:23:532:24 | (unsigned int)... | 1.0 | -| test.c:532:28:532:29 | 64 | 1.0 | -| test.c:532:28:532:29 | (unsigned int)... | 1.0 | -| test.c:533:13:538:26 | (...) | 2.1285401269407994E28 | -| test.c:533:14:533:25 | (...) | 9.237888E8 | -| test.c:533:14:533:30 | ... * ... | 9.237888E8 | -| test.c:533:14:534:63 | ... > ... | 1.0 | -| test.c:533:14:538:25 | ... ? ... : ... | 2.1285401269407994E28 | -| test.c:533:15:533:15 | 2 | 1.0 | -| test.c:533:15:533:15 | (unsigned int)... | 1.0 | -| test.c:533:15:533:20 | ... * ... | 9.237888E8 | -| test.c:533:15:533:24 | ... + ... | 9.237888E8 | -| test.c:533:19:533:20 | ip | 9.237888E8 | -| test.c:533:24:533:24 | 1 | 1.0 | -| test.c:533:24:533:24 | (unsigned int)... | 1.0 | -| test.c:533:29:533:30 | 14 | 1.0 | -| test.c:533:29:533:30 | (unsigned int)... | 1.0 | -| test.c:534:13:534:63 | (...) | 8.5338574700544E17 | -| test.c:534:14:534:15 | 14 | 1.0 | -| test.c:534:14:534:15 | (unsigned int)... | 1.0 | -| test.c:534:14:534:26 | ... * ... | 9.237888E8 | -| test.c:534:14:534:36 | ... > ... | 1.0 | -| test.c:534:14:534:62 | ... ? ... : ... | 8.5338574700544E17 | -| test.c:534:19:534:26 | (...) | 9.237888E8 | -| test.c:534:20:534:20 | 2 | 1.0 | -| test.c:534:20:534:20 | (unsigned int)... | 1.0 | -| test.c:534:20:534:25 | ... * ... | 9.237888E8 | -| test.c:534:24:534:25 | ip | 9.237888E8 | -| test.c:534:30:534:31 | 17 | 1.0 | -| test.c:534:30:534:31 | (unsigned int)... | 1.0 | -| test.c:534:30:534:36 | ... * ... | 9.237888E8 | -| test.c:534:35:534:36 | ip | 9.237888E8 | -| test.c:534:40:534:41 | 17 | 1.0 | -| test.c:534:40:534:41 | (unsigned int)... | 1.0 | -| test.c:534:40:534:52 | ... * ... | 9.237888E8 | -| test.c:534:45:534:52 | (...) | 9.237888E8 | -| test.c:534:46:534:46 | 2 | 1.0 | -| test.c:534:46:534:46 | (unsigned int)... | 1.0 | -| test.c:534:46:534:51 | ... * ... | 9.237888E8 | -| test.c:534:50:534:51 | ip | 9.237888E8 | -| test.c:534:56:534:57 | 17 | 1.0 | -| test.c:534:56:534:57 | (unsigned int)... | 1.0 | -| test.c:534:56:534:62 | ... * ... | 9.237888E8 | -| test.c:534:61:534:62 | ip | 9.237888E8 | -| test.c:535:17:535:28 | (...) | 2.7713664E9 | -| test.c:535:17:535:33 | ... * ... | 2.7713664E9 | -| test.c:535:18:535:18 | 2 | 1.0 | -| test.c:535:18:535:18 | (unsigned int)... | 1.0 | -| test.c:535:18:535:23 | ... * ... | 2.7713664E9 | -| test.c:535:18:535:27 | ... + ... | 2.7713664E9 | -| test.c:535:22:535:23 | ip | 2.7713664E9 | -| test.c:535:27:535:27 | 1 | 1.0 | -| test.c:535:27:535:27 | (unsigned int)... | 1.0 | -| test.c:535:32:535:33 | 14 | 1.0 | -| test.c:535:32:535:33 | (unsigned int)... | 1.0 | -| test.c:536:17:536:18 | 14 | 1.0 | -| test.c:536:17:536:18 | (unsigned int)... | 1.0 | -| test.c:536:17:536:29 | ... * ... | 2.7713664E9 | -| test.c:536:17:536:39 | ... > ... | 1.0 | -| test.c:536:17:538:25 | ... ? ... : ... | 7.68047172304896E18 | -| test.c:536:22:536:29 | (...) | 2.7713664E9 | -| test.c:536:23:536:23 | 2 | 1.0 | -| test.c:536:23:536:23 | (unsigned int)... | 1.0 | -| test.c:536:23:536:28 | ... * ... | 2.7713664E9 | -| test.c:536:27:536:28 | ip | 2.7713664E9 | -| test.c:536:33:536:34 | 17 | 1.0 | -| test.c:536:33:536:34 | (unsigned int)... | 1.0 | -| test.c:536:33:536:39 | ... * ... | 2.7713664E9 | -| test.c:536:38:536:39 | ip | 2.7713664E9 | -| test.c:537:19:537:20 | 14 | 1.0 | -| test.c:537:19:537:20 | (unsigned int)... | 1.0 | -| test.c:537:19:537:31 | ... * ... | 2.7713664E9 | -| test.c:537:24:537:31 | (...) | 2.7713664E9 | -| test.c:537:25:537:25 | 2 | 1.0 | -| test.c:537:25:537:25 | (unsigned int)... | 1.0 | -| test.c:537:25:537:30 | ... * ... | 2.7713664E9 | -| test.c:537:29:537:30 | ip | 2.7713664E9 | -| test.c:538:19:538:20 | 14 | 1.0 | -| test.c:538:19:538:20 | (unsigned int)... | 1.0 | -| test.c:538:19:538:25 | ... * ... | 2.7713664E9 | -| test.c:538:24:538:25 | ip | 2.7713664E9 | -| test.c:539:11:539:61 | (...) | 6.912424550744064E19 | -| test.c:539:12:539:13 | 14 | 1.0 | -| test.c:539:12:539:13 | (unsigned int)... | 1.0 | -| test.c:539:12:539:18 | ... * ... | 8.3140992E9 | -| test.c:539:12:539:34 | ... > ... | 1.0 | -| test.c:539:12:539:60 | ... ? ... : ... | 6.912424550744064E19 | -| test.c:539:17:539:18 | ip | 8.3140992E9 | -| test.c:539:22:539:29 | (...) | 8.3140992E9 | -| test.c:539:22:539:34 | ... * ... | 8.3140992E9 | -| test.c:539:23:539:24 | ip | 8.3140992E9 | -| test.c:539:23:539:28 | ... + ... | 8.3140992E9 | -| test.c:539:28:539:28 | 1 | 1.0 | -| test.c:539:28:539:28 | (unsigned int)... | 1.0 | -| test.c:539:33:539:34 | 17 | 1.0 | -| test.c:539:33:539:34 | (unsigned int)... | 1.0 | -| test.c:539:38:539:39 | 17 | 1.0 | -| test.c:539:38:539:39 | (unsigned int)... | 1.0 | -| test.c:539:38:539:44 | ... * ... | 8.3140992E9 | -| test.c:539:43:539:44 | ip | 8.3140992E9 | -| test.c:539:48:539:55 | (...) | 8.3140992E9 | -| test.c:539:48:539:60 | ... * ... | 8.3140992E9 | -| test.c:539:49:539:50 | ip | 8.3140992E9 | -| test.c:539:49:539:54 | ... + ... | 8.3140992E9 | -| test.c:539:54:539:54 | 1 | 1.0 | -| test.c:539:54:539:54 | (unsigned int)... | 1.0 | -| test.c:539:59:539:60 | 17 | 1.0 | -| test.c:539:59:539:60 | (unsigned int)... | 1.0 | -| test.c:540:15:540:15 | 4 | 1.0 | -| test.c:540:15:540:15 | (unsigned int)... | 1.0 | -| test.c:540:15:540:32 | ... * ... | 1.66281984E10 | -| test.c:540:15:541:32 | ... + ... | 2.7649698202976256E20 | -| test.c:540:15:542:32 | ... + ... | 4.5976466741921265E30 | -| test.c:540:15:548:28 | ... + ... | 5.7073558339916785E62 | -| test.c:540:19:540:32 | (...) | 1.66281984E10 | -| test.c:540:20:540:21 | ip | 1.66281984E10 | -| test.c:540:20:540:26 | ... * ... | 1.66281984E10 | -| test.c:540:20:540:31 | ... + ... | 1.66281984E10 | -| test.c:540:25:540:26 | 14 | 1.0 | -| test.c:540:25:540:26 | (unsigned int)... | 1.0 | -| test.c:540:30:540:31 | 32 | 1.0 | -| test.c:540:30:540:31 | (unsigned int)... | 1.0 | -| test.c:541:15:541:32 | (...) | 1.66281984E10 | -| test.c:541:16:541:16 | 2 | 1.0 | -| test.c:541:16:541:16 | (unsigned int)... | 1.0 | -| test.c:541:16:541:21 | ... * ... | 1.66281984E10 | -| test.c:541:16:541:26 | ... * ... | 1.66281984E10 | -| test.c:541:16:541:31 | ... + ... | 1.66281984E10 | -| test.c:541:20:541:21 | ip | 1.66281984E10 | -| test.c:541:25:541:26 | 14 | 1.0 | -| test.c:541:25:541:26 | (unsigned int)... | 1.0 | -| test.c:541:30:541:31 | 32 | 1.0 | -| test.c:541:30:541:31 | (unsigned int)... | 1.0 | -| test.c:542:15:542:15 | 2 | 1.0 | -| test.c:542:15:542:15 | (unsigned int)... | 1.0 | -| test.c:542:15:542:32 | ... * ... | 1.66281984E10 | -| test.c:542:19:542:32 | (...) | 1.66281984E10 | -| test.c:542:20:542:21 | ip | 1.66281984E10 | -| test.c:542:20:542:26 | ... * ... | 1.66281984E10 | -| test.c:542:20:542:31 | ... + ... | 1.66281984E10 | -| test.c:542:25:542:26 | 14 | 1.0 | -| test.c:542:25:542:26 | (unsigned int)... | 1.0 | -| test.c:542:30:542:31 | 64 | 1.0 | -| test.c:542:30:542:31 | (unsigned int)... | 1.0 | -| test.c:543:15:548:28 | (...) | 1.2413646020318741E32 | -| test.c:543:16:543:27 | (...) | 1.66281984E10 | -| test.c:543:16:543:32 | ... * ... | 1.66281984E10 | -| test.c:543:16:544:65 | ... > ... | 1.0 | -| test.c:543:16:548:27 | ... ? ... : ... | 1.2413646020318741E32 | -| test.c:543:17:543:17 | 2 | 1.0 | -| test.c:543:17:543:17 | (unsigned int)... | 1.0 | -| test.c:543:17:543:22 | ... * ... | 1.66281984E10 | -| test.c:543:17:543:26 | ... + ... | 1.66281984E10 | -| test.c:543:21:543:22 | ip | 1.66281984E10 | -| test.c:543:26:543:26 | 1 | 1.0 | -| test.c:543:26:543:26 | (unsigned int)... | 1.0 | -| test.c:543:31:543:32 | 14 | 1.0 | -| test.c:543:31:543:32 | (unsigned int)... | 1.0 | -| test.c:544:15:544:65 | (...) | 2.7649698202976256E20 | -| test.c:544:16:544:17 | 14 | 1.0 | -| test.c:544:16:544:17 | (unsigned int)... | 1.0 | -| test.c:544:16:544:28 | ... * ... | 1.66281984E10 | -| test.c:544:16:544:38 | ... > ... | 1.0 | -| test.c:544:16:544:64 | ... ? ... : ... | 2.7649698202976256E20 | -| test.c:544:21:544:28 | (...) | 1.66281984E10 | -| test.c:544:22:544:22 | 2 | 1.0 | -| test.c:544:22:544:22 | (unsigned int)... | 1.0 | -| test.c:544:22:544:27 | ... * ... | 1.66281984E10 | -| test.c:544:26:544:27 | ip | 1.66281984E10 | -| test.c:544:32:544:33 | 17 | 1.0 | -| test.c:544:32:544:33 | (unsigned int)... | 1.0 | -| test.c:544:32:544:38 | ... * ... | 1.66281984E10 | -| test.c:544:37:544:38 | ip | 1.66281984E10 | -| test.c:544:42:544:43 | 17 | 1.0 | -| test.c:544:42:544:43 | (unsigned int)... | 1.0 | -| test.c:544:42:544:54 | ... * ... | 1.66281984E10 | -| test.c:544:47:544:54 | (...) | 1.66281984E10 | -| test.c:544:48:544:48 | 2 | 1.0 | -| test.c:544:48:544:48 | (unsigned int)... | 1.0 | -| test.c:544:48:544:53 | ... * ... | 1.66281984E10 | -| test.c:544:52:544:53 | ip | 1.66281984E10 | -| test.c:544:58:544:59 | 17 | 1.0 | -| test.c:544:58:544:59 | (unsigned int)... | 1.0 | -| test.c:544:58:544:64 | ... * ... | 1.66281984E10 | -| test.c:544:63:544:64 | ip | 1.66281984E10 | -| test.c:545:19:545:30 | (...) | 4.98845952E10 | -| test.c:545:19:545:35 | ... * ... | 4.98845952E10 | -| test.c:545:20:545:20 | 2 | 1.0 | -| test.c:545:20:545:20 | (unsigned int)... | 1.0 | -| test.c:545:20:545:25 | ... * ... | 4.98845952E10 | -| test.c:545:20:545:29 | ... + ... | 4.98845952E10 | -| test.c:545:24:545:25 | ip | 4.98845952E10 | -| test.c:545:29:545:29 | 1 | 1.0 | -| test.c:545:29:545:29 | (unsigned int)... | 1.0 | -| test.c:545:34:545:35 | 14 | 1.0 | -| test.c:545:34:545:35 | (unsigned int)... | 1.0 | -| test.c:546:19:546:20 | 14 | 1.0 | -| test.c:546:19:546:20 | (unsigned int)... | 1.0 | -| test.c:546:19:546:31 | ... * ... | 4.98845952E10 | -| test.c:546:19:546:41 | ... > ... | 1.0 | -| test.c:546:19:548:27 | ... ? ... : ... | 2.488472838267863E21 | -| test.c:546:24:546:31 | (...) | 4.98845952E10 | -| test.c:546:25:546:25 | 2 | 1.0 | -| test.c:546:25:546:25 | (unsigned int)... | 1.0 | -| test.c:546:25:546:30 | ... * ... | 4.98845952E10 | -| test.c:546:29:546:30 | ip | 4.98845952E10 | -| test.c:546:35:546:36 | 17 | 1.0 | -| test.c:546:35:546:36 | (unsigned int)... | 1.0 | -| test.c:546:35:546:41 | ... * ... | 4.98845952E10 | -| test.c:546:40:546:41 | ip | 4.98845952E10 | -| test.c:547:21:547:22 | 14 | 1.0 | -| test.c:547:21:547:22 | (unsigned int)... | 1.0 | -| test.c:547:21:547:33 | ... * ... | 4.98845952E10 | -| test.c:547:26:547:33 | (...) | 4.98845952E10 | -| test.c:547:27:547:27 | 2 | 1.0 | +| test.c:527:34:527:35 | 14 | 1.0 | +| test.c:527:34:527:35 | (unsigned int)... | 1.0 | +| test.c:528:19:528:20 | 14 | 1.0 | +| test.c:528:19:528:20 | (unsigned int)... | 1.0 | +| test.c:528:19:528:31 | ... * ... | 3.079296E7 | +| test.c:528:19:528:41 | ... > ... | 1.0 | +| test.c:528:19:530:27 | ... ? ... : ... | 9.482063855616E14 | +| test.c:528:24:528:31 | (...) | 3.079296E7 | +| test.c:528:25:528:25 | 2 | 1.0 | +| test.c:528:25:528:25 | (unsigned int)... | 1.0 | +| test.c:528:25:528:30 | ... * ... | 3.079296E7 | +| test.c:528:29:528:30 | ip | 3.079296E7 | +| test.c:528:35:528:36 | 17 | 1.0 | +| test.c:528:35:528:36 | (unsigned int)... | 1.0 | +| test.c:528:35:528:41 | ... * ... | 3.079296E7 | +| test.c:528:40:528:41 | ip | 3.079296E7 | +| test.c:529:21:529:22 | 14 | 1.0 | +| test.c:529:21:529:22 | (unsigned int)... | 1.0 | +| test.c:529:21:529:33 | ... * ... | 3.079296E7 | +| test.c:529:26:529:33 | (...) | 3.079296E7 | +| test.c:529:27:529:27 | 2 | 1.0 | +| test.c:529:27:529:27 | (unsigned int)... | 1.0 | +| test.c:529:27:529:32 | ... * ... | 3.079296E7 | +| test.c:529:31:529:32 | ip | 3.079296E7 | +| test.c:530:21:530:22 | 14 | 1.0 | +| test.c:530:21:530:22 | (unsigned int)... | 1.0 | +| test.c:530:21:530:27 | ... * ... | 3.079296E7 | +| test.c:530:26:530:27 | ip | 3.079296E7 | +| test.c:531:13:531:13 | 2 | 1.0 | +| test.c:531:13:531:13 | (unsigned int)... | 1.0 | +| test.c:531:13:531:18 | ... * ... | 9.237888E7 | +| test.c:531:13:531:23 | ... * ... | 9.237888E7 | +| test.c:531:13:531:43 | ... + ... | 8.5338574700544E15 | +| test.c:531:17:531:18 | ip | 9.237888E7 | +| test.c:531:22:531:23 | 14 | 1.0 | +| test.c:531:22:531:23 | (unsigned int)... | 1.0 | +| test.c:531:27:531:38 | (...) | 9.237888E7 | +| test.c:531:27:531:43 | ... * ... | 9.237888E7 | +| test.c:531:28:531:28 | 2 | 1.0 | +| test.c:531:28:531:28 | (unsigned int)... | 1.0 | +| test.c:531:28:531:33 | ... * ... | 9.237888E7 | +| test.c:531:28:531:37 | ... + ... | 9.237888E7 | +| test.c:531:32:531:33 | ip | 9.237888E7 | +| test.c:531:37:531:37 | 1 | 1.0 | +| test.c:531:37:531:37 | (unsigned int)... | 1.0 | +| test.c:531:42:531:43 | 17 | 1.0 | +| test.c:531:42:531:43 | (unsigned int)... | 1.0 | +| test.c:532:17:532:17 | 4 | 1.0 | +| test.c:532:17:532:17 | (unsigned int)... | 1.0 | +| test.c:532:17:532:34 | ... * ... | 9.237888E7 | +| test.c:532:17:533:34 | ... + ... | 8.5338574700544E15 | +| test.c:532:17:534:34 | ... + ... | 7.88348195163259E23 | +| test.c:532:17:540:30 | ... + ... | 1.6780307674063534E49 | +| test.c:532:21:532:34 | (...) | 9.237888E7 | +| test.c:532:22:532:23 | ip | 9.237888E7 | +| test.c:532:22:532:28 | ... * ... | 9.237888E7 | +| test.c:532:22:532:33 | ... + ... | 9.237888E7 | +| test.c:532:27:532:28 | 14 | 1.0 | +| test.c:532:27:532:28 | (unsigned int)... | 1.0 | +| test.c:532:32:532:33 | 32 | 1.0 | +| test.c:532:32:532:33 | (unsigned int)... | 1.0 | +| test.c:533:17:533:34 | (...) | 9.237888E7 | +| test.c:533:18:533:18 | 2 | 1.0 | +| test.c:533:18:533:18 | (unsigned int)... | 1.0 | +| test.c:533:18:533:23 | ... * ... | 9.237888E7 | +| test.c:533:18:533:28 | ... * ... | 9.237888E7 | +| test.c:533:18:533:33 | ... + ... | 9.237888E7 | +| test.c:533:22:533:23 | ip | 9.237888E7 | +| test.c:533:27:533:28 | 14 | 1.0 | +| test.c:533:27:533:28 | (unsigned int)... | 1.0 | +| test.c:533:32:533:33 | 32 | 1.0 | +| test.c:533:32:533:33 | (unsigned int)... | 1.0 | +| test.c:534:17:534:17 | 2 | 1.0 | +| test.c:534:17:534:17 | (unsigned int)... | 1.0 | +| test.c:534:17:534:34 | ... * ... | 9.237888E7 | +| test.c:534:21:534:34 | (...) | 9.237888E7 | +| test.c:534:22:534:23 | ip | 9.237888E7 | +| test.c:534:22:534:28 | ... * ... | 9.237888E7 | +| test.c:534:22:534:33 | ... + ... | 9.237888E7 | +| test.c:534:27:534:28 | 14 | 1.0 | +| test.c:534:27:534:28 | (unsigned int)... | 1.0 | +| test.c:534:32:534:33 | 64 | 1.0 | +| test.c:534:32:534:33 | (unsigned int)... | 1.0 | +| test.c:535:17:540:30 | (...) | 2.1285401269407994E25 | +| test.c:535:18:535:29 | (...) | 9.237888E7 | +| test.c:535:18:535:34 | ... * ... | 9.237888E7 | +| test.c:535:18:536:67 | ... > ... | 1.0 | +| test.c:535:18:540:29 | ... ? ... : ... | 2.1285401269407994E25 | +| test.c:535:19:535:19 | 2 | 1.0 | +| test.c:535:19:535:19 | (unsigned int)... | 1.0 | +| test.c:535:19:535:24 | ... * ... | 9.237888E7 | +| test.c:535:19:535:28 | ... + ... | 9.237888E7 | +| test.c:535:23:535:24 | ip | 9.237888E7 | +| test.c:535:28:535:28 | 1 | 1.0 | +| test.c:535:28:535:28 | (unsigned int)... | 1.0 | +| test.c:535:33:535:34 | 14 | 1.0 | +| test.c:535:33:535:34 | (unsigned int)... | 1.0 | +| test.c:536:17:536:67 | (...) | 8.5338574700544E15 | +| test.c:536:18:536:19 | 14 | 1.0 | +| test.c:536:18:536:19 | (unsigned int)... | 1.0 | +| test.c:536:18:536:30 | ... * ... | 9.237888E7 | +| test.c:536:18:536:40 | ... > ... | 1.0 | +| test.c:536:18:536:66 | ... ? ... : ... | 8.5338574700544E15 | +| test.c:536:23:536:30 | (...) | 9.237888E7 | +| test.c:536:24:536:24 | 2 | 1.0 | +| test.c:536:24:536:24 | (unsigned int)... | 1.0 | +| test.c:536:24:536:29 | ... * ... | 9.237888E7 | +| test.c:536:28:536:29 | ip | 9.237888E7 | +| test.c:536:34:536:35 | 17 | 1.0 | +| test.c:536:34:536:35 | (unsigned int)... | 1.0 | +| test.c:536:34:536:40 | ... * ... | 9.237888E7 | +| test.c:536:39:536:40 | ip | 9.237888E7 | +| test.c:536:44:536:45 | 17 | 1.0 | +| test.c:536:44:536:45 | (unsigned int)... | 1.0 | +| test.c:536:44:536:56 | ... * ... | 9.237888E7 | +| test.c:536:49:536:56 | (...) | 9.237888E7 | +| test.c:536:50:536:50 | 2 | 1.0 | +| test.c:536:50:536:50 | (unsigned int)... | 1.0 | +| test.c:536:50:536:55 | ... * ... | 9.237888E7 | +| test.c:536:54:536:55 | ip | 9.237888E7 | +| test.c:536:60:536:61 | 17 | 1.0 | +| test.c:536:60:536:61 | (unsigned int)... | 1.0 | +| test.c:536:60:536:66 | ... * ... | 9.237888E7 | +| test.c:536:65:536:66 | ip | 9.237888E7 | +| test.c:537:21:537:32 | (...) | 2.7713664E8 | +| test.c:537:21:537:37 | ... * ... | 2.7713664E8 | +| test.c:537:22:537:22 | 2 | 1.0 | +| test.c:537:22:537:22 | (unsigned int)... | 1.0 | +| test.c:537:22:537:27 | ... * ... | 2.7713664E8 | +| test.c:537:22:537:31 | ... + ... | 2.7713664E8 | +| test.c:537:26:537:27 | ip | 2.7713664E8 | +| test.c:537:31:537:31 | 1 | 1.0 | +| test.c:537:31:537:31 | (unsigned int)... | 1.0 | +| test.c:537:36:537:37 | 14 | 1.0 | +| test.c:537:36:537:37 | (unsigned int)... | 1.0 | +| test.c:538:21:538:22 | 14 | 1.0 | +| test.c:538:21:538:22 | (unsigned int)... | 1.0 | +| test.c:538:21:538:33 | ... * ... | 2.7713664E8 | +| test.c:538:21:538:43 | ... > ... | 1.0 | +| test.c:538:21:540:29 | ... ? ... : ... | 7.68047172304896E16 | +| test.c:538:26:538:33 | (...) | 2.7713664E8 | +| test.c:538:27:538:27 | 2 | 1.0 | +| test.c:538:27:538:27 | (unsigned int)... | 1.0 | +| test.c:538:27:538:32 | ... * ... | 2.7713664E8 | +| test.c:538:31:538:32 | ip | 2.7713664E8 | +| test.c:538:37:538:38 | 17 | 1.0 | +| test.c:538:37:538:38 | (unsigned int)... | 1.0 | +| test.c:538:37:538:43 | ... * ... | 2.7713664E8 | +| test.c:538:42:538:43 | ip | 2.7713664E8 | +| test.c:539:23:539:24 | 14 | 1.0 | +| test.c:539:23:539:24 | (unsigned int)... | 1.0 | +| test.c:539:23:539:35 | ... * ... | 2.7713664E8 | +| test.c:539:28:539:35 | (...) | 2.7713664E8 | +| test.c:539:29:539:29 | 2 | 1.0 | +| test.c:539:29:539:29 | (unsigned int)... | 1.0 | +| test.c:539:29:539:34 | ... * ... | 2.7713664E8 | +| test.c:539:33:539:34 | ip | 2.7713664E8 | +| test.c:540:23:540:24 | 14 | 1.0 | +| test.c:540:23:540:24 | (unsigned int)... | 1.0 | +| test.c:540:23:540:29 | ... * ... | 2.7713664E8 | +| test.c:540:28:540:29 | ip | 2.7713664E8 | +| test.c:541:17:541:17 | 2 | 1.0 | +| test.c:541:17:541:17 | (unsigned int)... | 1.0 | +| test.c:541:17:541:22 | ... * ... | 9.237888E7 | +| test.c:541:17:541:27 | ... * ... | 9.237888E7 | +| test.c:541:17:541:47 | ... + ... | 8.5338574700544E15 | +| test.c:541:21:541:22 | ip | 9.237888E7 | +| test.c:541:26:541:27 | 14 | 1.0 | +| test.c:541:26:541:27 | (unsigned int)... | 1.0 | +| test.c:541:31:541:42 | (...) | 9.237888E7 | +| test.c:541:31:541:47 | ... * ... | 9.237888E7 | +| test.c:541:32:541:32 | 2 | 1.0 | +| test.c:541:32:541:32 | (unsigned int)... | 1.0 | +| test.c:541:32:541:37 | ... * ... | 9.237888E7 | +| test.c:541:32:541:41 | ... + ... | 9.237888E7 | +| test.c:541:36:541:37 | ip | 9.237888E7 | +| test.c:541:41:541:41 | 1 | 1.0 | +| test.c:541:41:541:41 | (unsigned int)... | 1.0 | +| test.c:541:46:541:47 | 17 | 1.0 | +| test.c:541:46:541:47 | (unsigned int)... | 1.0 | +| test.c:542:11:563:30 | (...) | 1.5780666634686576E83 | +| test.c:542:12:542:12 | 4 | 1.0 | +| test.c:542:12:542:12 | (unsigned int)... | 1.0 | +| test.c:542:12:542:29 | ... * ... | 9.237888E8 | +| test.c:542:12:543:30 | ... + ... | 8.5338574700544E17 | +| test.c:542:12:544:30 | ... + ... | 7.88348195163259E26 | +| test.c:542:12:550:26 | ... + ... | 1.6780307674063535E55 | +| test.c:542:12:551:61 | ... > ... | 1.0 | +| test.c:542:12:563:29 | ... ? ... : ... | 1.5780666634686576E83 | +| test.c:542:16:542:29 | (...) | 9.237888E8 | +| test.c:542:17:542:18 | ip | 9.237888E8 | +| test.c:542:17:542:23 | ... * ... | 9.237888E8 | +| test.c:542:17:542:28 | ... + ... | 9.237888E8 | +| test.c:542:22:542:23 | 14 | 1.0 | +| test.c:542:22:542:23 | (unsigned int)... | 1.0 | +| test.c:542:27:542:28 | 32 | 1.0 | +| test.c:542:27:542:28 | (unsigned int)... | 1.0 | +| test.c:543:13:543:30 | (...) | 9.237888E8 | +| test.c:543:14:543:14 | 2 | 1.0 | +| test.c:543:14:543:14 | (unsigned int)... | 1.0 | +| test.c:543:14:543:19 | ... * ... | 9.237888E8 | +| test.c:543:14:543:24 | ... * ... | 9.237888E8 | +| test.c:543:14:543:29 | ... + ... | 9.237888E8 | +| test.c:543:18:543:19 | ip | 9.237888E8 | +| test.c:543:23:543:24 | 14 | 1.0 | +| test.c:543:23:543:24 | (unsigned int)... | 1.0 | +| test.c:543:28:543:29 | 32 | 1.0 | +| test.c:543:28:543:29 | (unsigned int)... | 1.0 | +| test.c:544:13:544:13 | 2 | 1.0 | +| test.c:544:13:544:13 | (unsigned int)... | 1.0 | +| test.c:544:13:544:30 | ... * ... | 9.237888E8 | +| test.c:544:17:544:30 | (...) | 9.237888E8 | +| test.c:544:18:544:19 | ip | 9.237888E8 | +| test.c:544:18:544:24 | ... * ... | 9.237888E8 | +| test.c:544:18:544:29 | ... + ... | 9.237888E8 | +| test.c:544:23:544:24 | 14 | 1.0 | +| test.c:544:23:544:24 | (unsigned int)... | 1.0 | +| test.c:544:28:544:29 | 64 | 1.0 | +| test.c:544:28:544:29 | (unsigned int)... | 1.0 | +| test.c:545:13:550:26 | (...) | 2.1285401269407994E28 | +| test.c:545:14:545:25 | (...) | 9.237888E8 | +| test.c:545:14:545:30 | ... * ... | 9.237888E8 | +| test.c:545:14:546:63 | ... > ... | 1.0 | +| test.c:545:14:550:25 | ... ? ... : ... | 2.1285401269407994E28 | +| test.c:545:15:545:15 | 2 | 1.0 | +| test.c:545:15:545:15 | (unsigned int)... | 1.0 | +| test.c:545:15:545:20 | ... * ... | 9.237888E8 | +| test.c:545:15:545:24 | ... + ... | 9.237888E8 | +| test.c:545:19:545:20 | ip | 9.237888E8 | +| test.c:545:24:545:24 | 1 | 1.0 | +| test.c:545:24:545:24 | (unsigned int)... | 1.0 | +| test.c:545:29:545:30 | 14 | 1.0 | +| test.c:545:29:545:30 | (unsigned int)... | 1.0 | +| test.c:546:13:546:63 | (...) | 8.5338574700544E17 | +| test.c:546:14:546:15 | 14 | 1.0 | +| test.c:546:14:546:15 | (unsigned int)... | 1.0 | +| test.c:546:14:546:26 | ... * ... | 9.237888E8 | +| test.c:546:14:546:36 | ... > ... | 1.0 | +| test.c:546:14:546:62 | ... ? ... : ... | 8.5338574700544E17 | +| test.c:546:19:546:26 | (...) | 9.237888E8 | +| test.c:546:20:546:20 | 2 | 1.0 | +| test.c:546:20:546:20 | (unsigned int)... | 1.0 | +| test.c:546:20:546:25 | ... * ... | 9.237888E8 | +| test.c:546:24:546:25 | ip | 9.237888E8 | +| test.c:546:30:546:31 | 17 | 1.0 | +| test.c:546:30:546:31 | (unsigned int)... | 1.0 | +| test.c:546:30:546:36 | ... * ... | 9.237888E8 | +| test.c:546:35:546:36 | ip | 9.237888E8 | +| test.c:546:40:546:41 | 17 | 1.0 | +| test.c:546:40:546:41 | (unsigned int)... | 1.0 | +| test.c:546:40:546:52 | ... * ... | 9.237888E8 | +| test.c:546:45:546:52 | (...) | 9.237888E8 | +| test.c:546:46:546:46 | 2 | 1.0 | +| test.c:546:46:546:46 | (unsigned int)... | 1.0 | +| test.c:546:46:546:51 | ... * ... | 9.237888E8 | +| test.c:546:50:546:51 | ip | 9.237888E8 | +| test.c:546:56:546:57 | 17 | 1.0 | +| test.c:546:56:546:57 | (unsigned int)... | 1.0 | +| test.c:546:56:546:62 | ... * ... | 9.237888E8 | +| test.c:546:61:546:62 | ip | 9.237888E8 | +| test.c:547:17:547:28 | (...) | 2.7713664E9 | +| test.c:547:17:547:33 | ... * ... | 2.7713664E9 | +| test.c:547:18:547:18 | 2 | 1.0 | +| test.c:547:18:547:18 | (unsigned int)... | 1.0 | +| test.c:547:18:547:23 | ... * ... | 2.7713664E9 | +| test.c:547:18:547:27 | ... + ... | 2.7713664E9 | +| test.c:547:22:547:23 | ip | 2.7713664E9 | +| test.c:547:27:547:27 | 1 | 1.0 | | test.c:547:27:547:27 | (unsigned int)... | 1.0 | -| test.c:547:27:547:32 | ... * ... | 4.98845952E10 | -| test.c:547:31:547:32 | ip | 4.98845952E10 | -| test.c:548:21:548:22 | 14 | 1.0 | -| test.c:548:21:548:22 | (unsigned int)... | 1.0 | -| test.c:548:21:548:27 | ... * ... | 4.98845952E10 | -| test.c:548:26:548:27 | ip | 4.98845952E10 | -| test.c:549:15:549:16 | 14 | 1.0 | -| test.c:549:15:549:16 | (unsigned int)... | 1.0 | -| test.c:549:15:549:21 | ... * ... | 1.66281984E10 | -| test.c:549:15:549:37 | ... > ... | 1.0 | -| test.c:549:15:551:29 | ... ? ... : ... | 2.7649698202976256E20 | -| test.c:549:20:549:21 | ip | 1.66281984E10 | -| test.c:549:25:549:32 | (...) | 1.66281984E10 | -| test.c:549:25:549:37 | ... * ... | 1.66281984E10 | -| test.c:549:26:549:27 | ip | 1.66281984E10 | -| test.c:549:26:549:31 | ... + ... | 1.66281984E10 | -| test.c:549:31:549:31 | 1 | 1.0 | -| test.c:549:31:549:31 | (unsigned int)... | 1.0 | -| test.c:549:36:549:37 | 17 | 1.0 | -| test.c:549:36:549:37 | (unsigned int)... | 1.0 | -| test.c:550:17:550:18 | 14 | 1.0 | -| test.c:550:17:550:18 | (unsigned int)... | 1.0 | -| test.c:550:17:550:23 | ... * ... | 1.66281984E10 | -| test.c:550:22:550:23 | ip | 1.66281984E10 | -| test.c:551:17:551:24 | (...) | 1.66281984E10 | -| test.c:551:17:551:29 | ... * ... | 1.66281984E10 | -| test.c:551:18:551:19 | ip | 1.66281984E10 | -| test.c:551:18:551:23 | ... + ... | 1.66281984E10 | -| test.c:551:23:551:23 | 1 | 1.0 | -| test.c:551:23:551:23 | (unsigned int)... | 1.0 | -| test.c:551:28:551:29 | 14 | 1.0 | -| test.c:551:28:551:29 | (unsigned int)... | 1.0 | -| test.c:552:11:552:11 | 2 | 1.0 | -| test.c:552:11:552:11 | (unsigned int)... | 1.0 | -| test.c:552:11:552:28 | ... * ... | 1.829101824E11 | -| test.c:552:11:572:46 | ... + ... | 2.663451451985137E110 | -| test.c:552:15:552:28 | (...) | 1.829101824E11 | -| test.c:552:16:552:17 | ip | 1.829101824E11 | -| test.c:552:16:552:22 | ... * ... | 1.829101824E11 | -| test.c:552:16:552:27 | ... + ... | 1.829101824E11 | -| test.c:552:21:552:22 | 14 | 1.0 | -| test.c:552:21:552:22 | (unsigned int)... | 1.0 | -| test.c:552:26:552:27 | 32 | 1.0 | -| test.c:552:26:552:27 | (unsigned int)... | 1.0 | -| test.c:553:11:572:46 | (...) | 1.4561526411692741E99 | -| test.c:553:12:553:12 | 4 | 1.0 | -| test.c:553:12:553:12 | (unsigned int)... | 1.0 | -| test.c:553:12:553:29 | ... * ... | 1.829101824E11 | -| test.c:553:12:554:30 | ... + ... | 3.345613482560127E22 | -| test.c:553:12:555:30 | ... + ... | 6.11946772334972E33 | -| test.c:553:12:561:26 | ... + ... | 1.0110929008622132E69 | -| test.c:553:12:562:41 | ... > ... | 1.0 | -| test.c:553:12:572:45 | ... ? ... : ... | 1.4561526411692741E99 | -| test.c:553:16:553:29 | (...) | 1.829101824E11 | -| test.c:553:17:553:18 | ip | 1.829101824E11 | -| test.c:553:17:553:23 | ... * ... | 1.829101824E11 | -| test.c:553:17:553:28 | ... + ... | 1.829101824E11 | -| test.c:553:22:553:23 | 14 | 1.0 | -| test.c:553:22:553:23 | (unsigned int)... | 1.0 | -| test.c:553:27:553:28 | 32 | 1.0 | -| test.c:553:27:553:28 | (unsigned int)... | 1.0 | -| test.c:554:13:554:30 | (...) | 1.829101824E11 | -| test.c:554:14:554:14 | 2 | 1.0 | -| test.c:554:14:554:14 | (unsigned int)... | 1.0 | -| test.c:554:14:554:19 | ... * ... | 1.829101824E11 | -| test.c:554:14:554:24 | ... * ... | 1.829101824E11 | -| test.c:554:14:554:29 | ... + ... | 1.829101824E11 | -| test.c:554:18:554:19 | ip | 1.829101824E11 | -| test.c:554:23:554:24 | 14 | 1.0 | -| test.c:554:23:554:24 | (unsigned int)... | 1.0 | -| test.c:554:28:554:29 | 32 | 1.0 | -| test.c:554:28:554:29 | (unsigned int)... | 1.0 | -| test.c:555:13:555:13 | 2 | 1.0 | -| test.c:555:13:555:13 | (unsigned int)... | 1.0 | -| test.c:555:13:555:30 | ... * ... | 1.829101824E11 | -| test.c:555:17:555:30 | (...) | 1.829101824E11 | -| test.c:555:18:555:19 | ip | 1.829101824E11 | -| test.c:555:18:555:24 | ... * ... | 1.829101824E11 | -| test.c:555:18:555:29 | ... + ... | 1.829101824E11 | -| test.c:555:23:555:24 | 14 | 1.0 | -| test.c:555:23:555:24 | (unsigned int)... | 1.0 | -| test.c:555:28:555:29 | 64 | 1.0 | -| test.c:555:28:555:29 | (unsigned int)... | 1.0 | -| test.c:556:13:561:26 | (...) | 1.6522562853044246E35 | -| test.c:556:14:556:25 | (...) | 1.829101824E11 | -| test.c:556:14:556:30 | ... * ... | 1.829101824E11 | -| test.c:556:14:557:63 | ... > ... | 1.0 | -| test.c:556:14:561:25 | ... ? ... : ... | 1.6522562853044246E35 | -| test.c:556:15:556:15 | 2 | 1.0 | -| test.c:556:15:556:15 | (unsigned int)... | 1.0 | -| test.c:556:15:556:20 | ... * ... | 1.829101824E11 | -| test.c:556:15:556:24 | ... + ... | 1.829101824E11 | -| test.c:556:19:556:20 | ip | 1.829101824E11 | -| test.c:556:24:556:24 | 1 | 1.0 | -| test.c:556:24:556:24 | (unsigned int)... | 1.0 | -| test.c:556:29:556:30 | 14 | 1.0 | -| test.c:556:29:556:30 | (unsigned int)... | 1.0 | -| test.c:557:13:557:63 | (...) | 3.345613482560127E22 | -| test.c:557:14:557:15 | 14 | 1.0 | -| test.c:557:14:557:15 | (unsigned int)... | 1.0 | -| test.c:557:14:557:26 | ... * ... | 1.829101824E11 | -| test.c:557:14:557:36 | ... > ... | 1.0 | -| test.c:557:14:557:62 | ... ? ... : ... | 3.345613482560127E22 | -| test.c:557:19:557:26 | (...) | 1.829101824E11 | +| test.c:547:32:547:33 | 14 | 1.0 | +| test.c:547:32:547:33 | (unsigned int)... | 1.0 | +| test.c:548:17:548:18 | 14 | 1.0 | +| test.c:548:17:548:18 | (unsigned int)... | 1.0 | +| test.c:548:17:548:29 | ... * ... | 2.7713664E9 | +| test.c:548:17:548:39 | ... > ... | 1.0 | +| test.c:548:17:550:25 | ... ? ... : ... | 7.68047172304896E18 | +| test.c:548:22:548:29 | (...) | 2.7713664E9 | +| test.c:548:23:548:23 | 2 | 1.0 | +| test.c:548:23:548:23 | (unsigned int)... | 1.0 | +| test.c:548:23:548:28 | ... * ... | 2.7713664E9 | +| test.c:548:27:548:28 | ip | 2.7713664E9 | +| test.c:548:33:548:34 | 17 | 1.0 | +| test.c:548:33:548:34 | (unsigned int)... | 1.0 | +| test.c:548:33:548:39 | ... * ... | 2.7713664E9 | +| test.c:548:38:548:39 | ip | 2.7713664E9 | +| test.c:549:19:549:20 | 14 | 1.0 | +| test.c:549:19:549:20 | (unsigned int)... | 1.0 | +| test.c:549:19:549:31 | ... * ... | 2.7713664E9 | +| test.c:549:24:549:31 | (...) | 2.7713664E9 | +| test.c:549:25:549:25 | 2 | 1.0 | +| test.c:549:25:549:25 | (unsigned int)... | 1.0 | +| test.c:549:25:549:30 | ... * ... | 2.7713664E9 | +| test.c:549:29:549:30 | ip | 2.7713664E9 | +| test.c:550:19:550:20 | 14 | 1.0 | +| test.c:550:19:550:20 | (unsigned int)... | 1.0 | +| test.c:550:19:550:25 | ... * ... | 2.7713664E9 | +| test.c:550:24:550:25 | ip | 2.7713664E9 | +| test.c:551:11:551:61 | (...) | 6.912424550744064E19 | +| test.c:551:12:551:13 | 14 | 1.0 | +| test.c:551:12:551:13 | (unsigned int)... | 1.0 | +| test.c:551:12:551:18 | ... * ... | 8.3140992E9 | +| test.c:551:12:551:34 | ... > ... | 1.0 | +| test.c:551:12:551:60 | ... ? ... : ... | 6.912424550744064E19 | +| test.c:551:17:551:18 | ip | 8.3140992E9 | +| test.c:551:22:551:29 | (...) | 8.3140992E9 | +| test.c:551:22:551:34 | ... * ... | 8.3140992E9 | +| test.c:551:23:551:24 | ip | 8.3140992E9 | +| test.c:551:23:551:28 | ... + ... | 8.3140992E9 | +| test.c:551:28:551:28 | 1 | 1.0 | +| test.c:551:28:551:28 | (unsigned int)... | 1.0 | +| test.c:551:33:551:34 | 17 | 1.0 | +| test.c:551:33:551:34 | (unsigned int)... | 1.0 | +| test.c:551:38:551:39 | 17 | 1.0 | +| test.c:551:38:551:39 | (unsigned int)... | 1.0 | +| test.c:551:38:551:44 | ... * ... | 8.3140992E9 | +| test.c:551:43:551:44 | ip | 8.3140992E9 | +| test.c:551:48:551:55 | (...) | 8.3140992E9 | +| test.c:551:48:551:60 | ... * ... | 8.3140992E9 | +| test.c:551:49:551:50 | ip | 8.3140992E9 | +| test.c:551:49:551:54 | ... + ... | 8.3140992E9 | +| test.c:551:54:551:54 | 1 | 1.0 | +| test.c:551:54:551:54 | (unsigned int)... | 1.0 | +| test.c:551:59:551:60 | 17 | 1.0 | +| test.c:551:59:551:60 | (unsigned int)... | 1.0 | +| test.c:552:15:552:15 | 4 | 1.0 | +| test.c:552:15:552:15 | (unsigned int)... | 1.0 | +| test.c:552:15:552:32 | ... * ... | 1.66281984E10 | +| test.c:552:15:553:32 | ... + ... | 2.7649698202976256E20 | +| test.c:552:15:554:32 | ... + ... | 4.5976466741921265E30 | +| test.c:552:15:560:28 | ... + ... | 5.7073558339916785E62 | +| test.c:552:19:552:32 | (...) | 1.66281984E10 | +| test.c:552:20:552:21 | ip | 1.66281984E10 | +| test.c:552:20:552:26 | ... * ... | 1.66281984E10 | +| test.c:552:20:552:31 | ... + ... | 1.66281984E10 | +| test.c:552:25:552:26 | 14 | 1.0 | +| test.c:552:25:552:26 | (unsigned int)... | 1.0 | +| test.c:552:30:552:31 | 32 | 1.0 | +| test.c:552:30:552:31 | (unsigned int)... | 1.0 | +| test.c:553:15:553:32 | (...) | 1.66281984E10 | +| test.c:553:16:553:16 | 2 | 1.0 | +| test.c:553:16:553:16 | (unsigned int)... | 1.0 | +| test.c:553:16:553:21 | ... * ... | 1.66281984E10 | +| test.c:553:16:553:26 | ... * ... | 1.66281984E10 | +| test.c:553:16:553:31 | ... + ... | 1.66281984E10 | +| test.c:553:20:553:21 | ip | 1.66281984E10 | +| test.c:553:25:553:26 | 14 | 1.0 | +| test.c:553:25:553:26 | (unsigned int)... | 1.0 | +| test.c:553:30:553:31 | 32 | 1.0 | +| test.c:553:30:553:31 | (unsigned int)... | 1.0 | +| test.c:554:15:554:15 | 2 | 1.0 | +| test.c:554:15:554:15 | (unsigned int)... | 1.0 | +| test.c:554:15:554:32 | ... * ... | 1.66281984E10 | +| test.c:554:19:554:32 | (...) | 1.66281984E10 | +| test.c:554:20:554:21 | ip | 1.66281984E10 | +| test.c:554:20:554:26 | ... * ... | 1.66281984E10 | +| test.c:554:20:554:31 | ... + ... | 1.66281984E10 | +| test.c:554:25:554:26 | 14 | 1.0 | +| test.c:554:25:554:26 | (unsigned int)... | 1.0 | +| test.c:554:30:554:31 | 64 | 1.0 | +| test.c:554:30:554:31 | (unsigned int)... | 1.0 | +| test.c:555:15:560:28 | (...) | 1.2413646020318741E32 | +| test.c:555:16:555:27 | (...) | 1.66281984E10 | +| test.c:555:16:555:32 | ... * ... | 1.66281984E10 | +| test.c:555:16:556:65 | ... > ... | 1.0 | +| test.c:555:16:560:27 | ... ? ... : ... | 1.2413646020318741E32 | +| test.c:555:17:555:17 | 2 | 1.0 | +| test.c:555:17:555:17 | (unsigned int)... | 1.0 | +| test.c:555:17:555:22 | ... * ... | 1.66281984E10 | +| test.c:555:17:555:26 | ... + ... | 1.66281984E10 | +| test.c:555:21:555:22 | ip | 1.66281984E10 | +| test.c:555:26:555:26 | 1 | 1.0 | +| test.c:555:26:555:26 | (unsigned int)... | 1.0 | +| test.c:555:31:555:32 | 14 | 1.0 | +| test.c:555:31:555:32 | (unsigned int)... | 1.0 | +| test.c:556:15:556:65 | (...) | 2.7649698202976256E20 | +| test.c:556:16:556:17 | 14 | 1.0 | +| test.c:556:16:556:17 | (unsigned int)... | 1.0 | +| test.c:556:16:556:28 | ... * ... | 1.66281984E10 | +| test.c:556:16:556:38 | ... > ... | 1.0 | +| test.c:556:16:556:64 | ... ? ... : ... | 2.7649698202976256E20 | +| test.c:556:21:556:28 | (...) | 1.66281984E10 | +| test.c:556:22:556:22 | 2 | 1.0 | +| test.c:556:22:556:22 | (unsigned int)... | 1.0 | +| test.c:556:22:556:27 | ... * ... | 1.66281984E10 | +| test.c:556:26:556:27 | ip | 1.66281984E10 | +| test.c:556:32:556:33 | 17 | 1.0 | +| test.c:556:32:556:33 | (unsigned int)... | 1.0 | +| test.c:556:32:556:38 | ... * ... | 1.66281984E10 | +| test.c:556:37:556:38 | ip | 1.66281984E10 | +| test.c:556:42:556:43 | 17 | 1.0 | +| test.c:556:42:556:43 | (unsigned int)... | 1.0 | +| test.c:556:42:556:54 | ... * ... | 1.66281984E10 | +| test.c:556:47:556:54 | (...) | 1.66281984E10 | +| test.c:556:48:556:48 | 2 | 1.0 | +| test.c:556:48:556:48 | (unsigned int)... | 1.0 | +| test.c:556:48:556:53 | ... * ... | 1.66281984E10 | +| test.c:556:52:556:53 | ip | 1.66281984E10 | +| test.c:556:58:556:59 | 17 | 1.0 | +| test.c:556:58:556:59 | (unsigned int)... | 1.0 | +| test.c:556:58:556:64 | ... * ... | 1.66281984E10 | +| test.c:556:63:556:64 | ip | 1.66281984E10 | +| test.c:557:19:557:30 | (...) | 4.98845952E10 | +| test.c:557:19:557:35 | ... * ... | 4.98845952E10 | | test.c:557:20:557:20 | 2 | 1.0 | | test.c:557:20:557:20 | (unsigned int)... | 1.0 | -| test.c:557:20:557:25 | ... * ... | 1.829101824E11 | -| test.c:557:24:557:25 | ip | 1.829101824E11 | -| test.c:557:30:557:31 | 17 | 1.0 | -| test.c:557:30:557:31 | (unsigned int)... | 1.0 | -| test.c:557:30:557:36 | ... * ... | 1.829101824E11 | -| test.c:557:35:557:36 | ip | 1.829101824E11 | -| test.c:557:40:557:41 | 17 | 1.0 | -| test.c:557:40:557:41 | (unsigned int)... | 1.0 | -| test.c:557:40:557:52 | ... * ... | 1.829101824E11 | -| test.c:557:45:557:52 | (...) | 1.829101824E11 | -| test.c:557:46:557:46 | 2 | 1.0 | -| test.c:557:46:557:46 | (unsigned int)... | 1.0 | -| test.c:557:46:557:51 | ... * ... | 1.829101824E11 | -| test.c:557:50:557:51 | ip | 1.829101824E11 | -| test.c:557:56:557:57 | 17 | 1.0 | -| test.c:557:56:557:57 | (unsigned int)... | 1.0 | -| test.c:557:56:557:62 | ... * ... | 1.829101824E11 | -| test.c:557:61:557:62 | ip | 1.829101824E11 | -| test.c:558:17:558:28 | (...) | 5.487305472E11 | -| test.c:558:17:558:33 | ... * ... | 5.487305472E11 | -| test.c:558:18:558:18 | 2 | 1.0 | -| test.c:558:18:558:18 | (unsigned int)... | 1.0 | -| test.c:558:18:558:23 | ... * ... | 5.487305472E11 | -| test.c:558:18:558:27 | ... + ... | 5.487305472E11 | -| test.c:558:22:558:23 | ip | 5.487305472E11 | -| test.c:558:27:558:27 | 1 | 1.0 | -| test.c:558:27:558:27 | (unsigned int)... | 1.0 | -| test.c:558:32:558:33 | 14 | 1.0 | -| test.c:558:32:558:33 | (unsigned int)... | 1.0 | -| test.c:559:17:559:18 | 14 | 1.0 | -| test.c:559:17:559:18 | (unsigned int)... | 1.0 | -| test.c:559:17:559:29 | ... * ... | 5.487305472E11 | -| test.c:559:17:559:39 | ... > ... | 1.0 | -| test.c:559:17:561:25 | ... ? ... : ... | 3.0110521343041144E23 | -| test.c:559:22:559:29 | (...) | 5.487305472E11 | -| test.c:559:23:559:23 | 2 | 1.0 | -| test.c:559:23:559:23 | (unsigned int)... | 1.0 | -| test.c:559:23:559:28 | ... * ... | 5.487305472E11 | -| test.c:559:27:559:28 | ip | 5.487305472E11 | -| test.c:559:33:559:34 | 17 | 1.0 | -| test.c:559:33:559:34 | (unsigned int)... | 1.0 | -| test.c:559:33:559:39 | ... * ... | 5.487305472E11 | -| test.c:559:38:559:39 | ip | 5.487305472E11 | -| test.c:560:19:560:20 | 14 | 1.0 | -| test.c:560:19:560:20 | (unsigned int)... | 1.0 | -| test.c:560:19:560:31 | ... * ... | 5.487305472E11 | -| test.c:560:24:560:31 | (...) | 5.487305472E11 | -| test.c:560:25:560:25 | 2 | 1.0 | -| test.c:560:25:560:25 | (unsigned int)... | 1.0 | -| test.c:560:25:560:30 | ... * ... | 5.487305472E11 | -| test.c:560:29:560:30 | ip | 5.487305472E11 | -| test.c:561:19:561:20 | 14 | 1.0 | -| test.c:561:19:561:20 | (unsigned int)... | 1.0 | -| test.c:561:19:561:25 | ... * ... | 5.487305472E11 | -| test.c:561:24:561:25 | ip | 5.487305472E11 | -| test.c:562:11:562:11 | 2 | 1.0 | -| test.c:562:11:562:11 | (unsigned int)... | 1.0 | -| test.c:562:11:562:16 | ... * ... | 1.6461916416E12 | -| test.c:562:11:562:21 | ... * ... | 1.6461916416E12 | -| test.c:562:11:562:41 | ... + ... | 2.709946920873703E24 | -| test.c:562:15:562:16 | ip | 1.6461916416E12 | -| test.c:562:20:562:21 | 14 | 1.0 | -| test.c:562:20:562:21 | (unsigned int)... | 1.0 | -| test.c:562:25:562:36 | (...) | 1.6461916416E12 | -| test.c:562:25:562:41 | ... * ... | 1.6461916416E12 | -| test.c:562:26:562:26 | 2 | 1.0 | -| test.c:562:26:562:26 | (unsigned int)... | 1.0 | -| test.c:562:26:562:31 | ... * ... | 1.6461916416E12 | -| test.c:562:26:562:35 | ... + ... | 1.6461916416E12 | -| test.c:562:30:562:31 | ip | 1.6461916416E12 | -| test.c:562:35:562:35 | 1 | 1.0 | -| test.c:562:35:562:35 | (unsigned int)... | 1.0 | -| test.c:562:40:562:41 | 17 | 1.0 | -| test.c:562:40:562:41 | (unsigned int)... | 1.0 | -| test.c:563:15:563:15 | 4 | 1.0 | -| test.c:563:15:563:15 | (unsigned int)... | 1.0 | -| test.c:563:15:563:32 | ... * ... | 1.6461916416E12 | -| test.c:563:15:564:32 | ... + ... | 2.709946920873703E24 | -| test.c:563:15:565:32 | ... + ... | 4.4610919703219464E36 | -| test.c:563:15:571:28 | ... + ... | 5.373362223271155E74 | -| test.c:563:19:563:32 | (...) | 1.6461916416E12 | -| test.c:563:20:563:21 | ip | 1.6461916416E12 | -| test.c:563:20:563:26 | ... * ... | 1.6461916416E12 | -| test.c:563:20:563:31 | ... + ... | 1.6461916416E12 | -| test.c:563:25:563:26 | 14 | 1.0 | -| test.c:563:25:563:26 | (unsigned int)... | 1.0 | -| test.c:563:30:563:31 | 32 | 1.0 | -| test.c:563:30:563:31 | (unsigned int)... | 1.0 | -| test.c:564:15:564:32 | (...) | 1.6461916416E12 | -| test.c:564:16:564:16 | 2 | 1.0 | -| test.c:564:16:564:16 | (unsigned int)... | 1.0 | -| test.c:564:16:564:21 | ... * ... | 1.6461916416E12 | -| test.c:564:16:564:26 | ... * ... | 1.6461916416E12 | -| test.c:564:16:564:31 | ... + ... | 1.6461916416E12 | -| test.c:564:20:564:21 | ip | 1.6461916416E12 | -| test.c:564:25:564:26 | 14 | 1.0 | -| test.c:564:25:564:26 | (unsigned int)... | 1.0 | -| test.c:564:30:564:31 | 32 | 1.0 | -| test.c:564:30:564:31 | (unsigned int)... | 1.0 | -| test.c:565:15:565:15 | 2 | 1.0 | -| test.c:565:15:565:15 | (unsigned int)... | 1.0 | -| test.c:565:15:565:32 | ... * ... | 1.6461916416E12 | -| test.c:565:19:565:32 | (...) | 1.6461916416E12 | -| test.c:565:20:565:21 | ip | 1.6461916416E12 | -| test.c:565:20:565:26 | ... * ... | 1.6461916416E12 | -| test.c:565:20:565:31 | ... + ... | 1.6461916416E12 | -| test.c:565:25:565:26 | 14 | 1.0 | -| test.c:565:25:565:26 | (unsigned int)... | 1.0 | -| test.c:565:30:565:31 | 64 | 1.0 | -| test.c:565:30:565:31 | (unsigned int)... | 1.0 | -| test.c:566:15:571:28 | (...) | 1.2044948319869254E38 | -| test.c:566:16:566:27 | (...) | 1.6461916416E12 | -| test.c:566:16:566:32 | ... * ... | 1.6461916416E12 | -| test.c:566:16:567:65 | ... > ... | 1.0 | -| test.c:566:16:571:27 | ... ? ... : ... | 1.2044948319869254E38 | -| test.c:566:17:566:17 | 2 | 1.0 | -| test.c:566:17:566:17 | (unsigned int)... | 1.0 | -| test.c:566:17:566:22 | ... * ... | 1.6461916416E12 | -| test.c:566:17:566:26 | ... + ... | 1.6461916416E12 | -| test.c:566:21:566:22 | ip | 1.6461916416E12 | -| test.c:566:26:566:26 | 1 | 1.0 | -| test.c:566:26:566:26 | (unsigned int)... | 1.0 | -| test.c:566:31:566:32 | 14 | 1.0 | -| test.c:566:31:566:32 | (unsigned int)... | 1.0 | -| test.c:567:15:567:65 | (...) | 2.709946920873703E24 | -| test.c:567:16:567:17 | 14 | 1.0 | -| test.c:567:16:567:17 | (unsigned int)... | 1.0 | -| test.c:567:16:567:28 | ... * ... | 1.6461916416E12 | -| test.c:567:16:567:38 | ... > ... | 1.0 | -| test.c:567:16:567:64 | ... ? ... : ... | 2.709946920873703E24 | -| test.c:567:21:567:28 | (...) | 1.6461916416E12 | -| test.c:567:22:567:22 | 2 | 1.0 | -| test.c:567:22:567:22 | (unsigned int)... | 1.0 | -| test.c:567:22:567:27 | ... * ... | 1.6461916416E12 | -| test.c:567:26:567:27 | ip | 1.6461916416E12 | -| test.c:567:32:567:33 | 17 | 1.0 | -| test.c:567:32:567:33 | (unsigned int)... | 1.0 | -| test.c:567:32:567:38 | ... * ... | 1.6461916416E12 | -| test.c:567:37:567:38 | ip | 1.6461916416E12 | -| test.c:567:42:567:43 | 17 | 1.0 | -| test.c:567:42:567:43 | (unsigned int)... | 1.0 | -| test.c:567:42:567:54 | ... * ... | 1.6461916416E12 | -| test.c:567:47:567:54 | (...) | 1.6461916416E12 | -| test.c:567:48:567:48 | 2 | 1.0 | -| test.c:567:48:567:48 | (unsigned int)... | 1.0 | -| test.c:567:48:567:53 | ... * ... | 1.6461916416E12 | -| test.c:567:52:567:53 | ip | 1.6461916416E12 | -| test.c:567:58:567:59 | 17 | 1.0 | -| test.c:567:58:567:59 | (unsigned int)... | 1.0 | -| test.c:567:58:567:64 | ... * ... | 1.6461916416E12 | -| test.c:567:63:567:64 | ip | 1.6461916416E12 | -| test.c:568:19:568:30 | (...) | 4.9385749248E12 | -| test.c:568:19:568:35 | ... * ... | 4.9385749248E12 | -| test.c:568:20:568:20 | 2 | 1.0 | -| test.c:568:20:568:20 | (unsigned int)... | 1.0 | -| test.c:568:20:568:25 | ... * ... | 4.9385749248E12 | -| test.c:568:20:568:29 | ... + ... | 4.9385749248E12 | -| test.c:568:24:568:25 | ip | 4.9385749248E12 | -| test.c:568:29:568:29 | 1 | 1.0 | -| test.c:568:29:568:29 | (unsigned int)... | 1.0 | -| test.c:568:34:568:35 | 14 | 1.0 | -| test.c:568:34:568:35 | (unsigned int)... | 1.0 | -| test.c:569:19:569:20 | 14 | 1.0 | -| test.c:569:19:569:20 | (unsigned int)... | 1.0 | -| test.c:569:19:569:31 | ... * ... | 4.9385749248E12 | -| test.c:569:19:569:41 | ... > ... | 1.0 | -| test.c:569:19:571:27 | ... ? ... : ... | 2.4389522287863325E25 | -| test.c:569:24:569:31 | (...) | 4.9385749248E12 | -| test.c:569:25:569:25 | 2 | 1.0 | -| test.c:569:25:569:25 | (unsigned int)... | 1.0 | -| test.c:569:25:569:30 | ... * ... | 4.9385749248E12 | -| test.c:569:29:569:30 | ip | 4.9385749248E12 | -| test.c:569:35:569:36 | 17 | 1.0 | -| test.c:569:35:569:36 | (unsigned int)... | 1.0 | -| test.c:569:35:569:41 | ... * ... | 4.9385749248E12 | -| test.c:569:40:569:41 | ip | 4.9385749248E12 | -| test.c:570:21:570:22 | 14 | 1.0 | -| test.c:570:21:570:22 | (unsigned int)... | 1.0 | -| test.c:570:21:570:33 | ... * ... | 4.9385749248E12 | -| test.c:570:26:570:33 | (...) | 4.9385749248E12 | -| test.c:570:27:570:27 | 2 | 1.0 | +| test.c:557:20:557:25 | ... * ... | 4.98845952E10 | +| test.c:557:20:557:29 | ... + ... | 4.98845952E10 | +| test.c:557:24:557:25 | ip | 4.98845952E10 | +| test.c:557:29:557:29 | 1 | 1.0 | +| test.c:557:29:557:29 | (unsigned int)... | 1.0 | +| test.c:557:34:557:35 | 14 | 1.0 | +| test.c:557:34:557:35 | (unsigned int)... | 1.0 | +| test.c:558:19:558:20 | 14 | 1.0 | +| test.c:558:19:558:20 | (unsigned int)... | 1.0 | +| test.c:558:19:558:31 | ... * ... | 4.98845952E10 | +| test.c:558:19:558:41 | ... > ... | 1.0 | +| test.c:558:19:560:27 | ... ? ... : ... | 2.488472838267863E21 | +| test.c:558:24:558:31 | (...) | 4.98845952E10 | +| test.c:558:25:558:25 | 2 | 1.0 | +| test.c:558:25:558:25 | (unsigned int)... | 1.0 | +| test.c:558:25:558:30 | ... * ... | 4.98845952E10 | +| test.c:558:29:558:30 | ip | 4.98845952E10 | +| test.c:558:35:558:36 | 17 | 1.0 | +| test.c:558:35:558:36 | (unsigned int)... | 1.0 | +| test.c:558:35:558:41 | ... * ... | 4.98845952E10 | +| test.c:558:40:558:41 | ip | 4.98845952E10 | +| test.c:559:21:559:22 | 14 | 1.0 | +| test.c:559:21:559:22 | (unsigned int)... | 1.0 | +| test.c:559:21:559:33 | ... * ... | 4.98845952E10 | +| test.c:559:26:559:33 | (...) | 4.98845952E10 | +| test.c:559:27:559:27 | 2 | 1.0 | +| test.c:559:27:559:27 | (unsigned int)... | 1.0 | +| test.c:559:27:559:32 | ... * ... | 4.98845952E10 | +| test.c:559:31:559:32 | ip | 4.98845952E10 | +| test.c:560:21:560:22 | 14 | 1.0 | +| test.c:560:21:560:22 | (unsigned int)... | 1.0 | +| test.c:560:21:560:27 | ... * ... | 4.98845952E10 | +| test.c:560:26:560:27 | ip | 4.98845952E10 | +| test.c:561:15:561:16 | 14 | 1.0 | +| test.c:561:15:561:16 | (unsigned int)... | 1.0 | +| test.c:561:15:561:21 | ... * ... | 1.66281984E10 | +| test.c:561:15:561:37 | ... > ... | 1.0 | +| test.c:561:15:563:29 | ... ? ... : ... | 2.7649698202976256E20 | +| test.c:561:20:561:21 | ip | 1.66281984E10 | +| test.c:561:25:561:32 | (...) | 1.66281984E10 | +| test.c:561:25:561:37 | ... * ... | 1.66281984E10 | +| test.c:561:26:561:27 | ip | 1.66281984E10 | +| test.c:561:26:561:31 | ... + ... | 1.66281984E10 | +| test.c:561:31:561:31 | 1 | 1.0 | +| test.c:561:31:561:31 | (unsigned int)... | 1.0 | +| test.c:561:36:561:37 | 17 | 1.0 | +| test.c:561:36:561:37 | (unsigned int)... | 1.0 | +| test.c:562:17:562:18 | 14 | 1.0 | +| test.c:562:17:562:18 | (unsigned int)... | 1.0 | +| test.c:562:17:562:23 | ... * ... | 1.66281984E10 | +| test.c:562:22:562:23 | ip | 1.66281984E10 | +| test.c:563:17:563:24 | (...) | 1.66281984E10 | +| test.c:563:17:563:29 | ... * ... | 1.66281984E10 | +| test.c:563:18:563:19 | ip | 1.66281984E10 | +| test.c:563:18:563:23 | ... + ... | 1.66281984E10 | +| test.c:563:23:563:23 | 1 | 1.0 | +| test.c:563:23:563:23 | (unsigned int)... | 1.0 | +| test.c:563:28:563:29 | 14 | 1.0 | +| test.c:563:28:563:29 | (unsigned int)... | 1.0 | +| test.c:564:11:564:11 | 2 | 1.0 | +| test.c:564:11:564:11 | (unsigned int)... | 1.0 | +| test.c:564:11:564:28 | ... * ... | 1.829101824E11 | +| test.c:564:11:584:46 | ... + ... | 2.663451451985137E110 | +| test.c:564:15:564:28 | (...) | 1.829101824E11 | +| test.c:564:16:564:17 | ip | 1.829101824E11 | +| test.c:564:16:564:22 | ... * ... | 1.829101824E11 | +| test.c:564:16:564:27 | ... + ... | 1.829101824E11 | +| test.c:564:21:564:22 | 14 | 1.0 | +| test.c:564:21:564:22 | (unsigned int)... | 1.0 | +| test.c:564:26:564:27 | 32 | 1.0 | +| test.c:564:26:564:27 | (unsigned int)... | 1.0 | +| test.c:565:11:584:46 | (...) | 1.4561526411692741E99 | +| test.c:565:12:565:12 | 4 | 1.0 | +| test.c:565:12:565:12 | (unsigned int)... | 1.0 | +| test.c:565:12:565:29 | ... * ... | 1.829101824E11 | +| test.c:565:12:566:30 | ... + ... | 3.345613482560127E22 | +| test.c:565:12:567:30 | ... + ... | 6.11946772334972E33 | +| test.c:565:12:573:26 | ... + ... | 1.0110929008622132E69 | +| test.c:565:12:574:41 | ... > ... | 1.0 | +| test.c:565:12:584:45 | ... ? ... : ... | 1.4561526411692741E99 | +| test.c:565:16:565:29 | (...) | 1.829101824E11 | +| test.c:565:17:565:18 | ip | 1.829101824E11 | +| test.c:565:17:565:23 | ... * ... | 1.829101824E11 | +| test.c:565:17:565:28 | ... + ... | 1.829101824E11 | +| test.c:565:22:565:23 | 14 | 1.0 | +| test.c:565:22:565:23 | (unsigned int)... | 1.0 | +| test.c:565:27:565:28 | 32 | 1.0 | +| test.c:565:27:565:28 | (unsigned int)... | 1.0 | +| test.c:566:13:566:30 | (...) | 1.829101824E11 | +| test.c:566:14:566:14 | 2 | 1.0 | +| test.c:566:14:566:14 | (unsigned int)... | 1.0 | +| test.c:566:14:566:19 | ... * ... | 1.829101824E11 | +| test.c:566:14:566:24 | ... * ... | 1.829101824E11 | +| test.c:566:14:566:29 | ... + ... | 1.829101824E11 | +| test.c:566:18:566:19 | ip | 1.829101824E11 | +| test.c:566:23:566:24 | 14 | 1.0 | +| test.c:566:23:566:24 | (unsigned int)... | 1.0 | +| test.c:566:28:566:29 | 32 | 1.0 | +| test.c:566:28:566:29 | (unsigned int)... | 1.0 | +| test.c:567:13:567:13 | 2 | 1.0 | +| test.c:567:13:567:13 | (unsigned int)... | 1.0 | +| test.c:567:13:567:30 | ... * ... | 1.829101824E11 | +| test.c:567:17:567:30 | (...) | 1.829101824E11 | +| test.c:567:18:567:19 | ip | 1.829101824E11 | +| test.c:567:18:567:24 | ... * ... | 1.829101824E11 | +| test.c:567:18:567:29 | ... + ... | 1.829101824E11 | +| test.c:567:23:567:24 | 14 | 1.0 | +| test.c:567:23:567:24 | (unsigned int)... | 1.0 | +| test.c:567:28:567:29 | 64 | 1.0 | +| test.c:567:28:567:29 | (unsigned int)... | 1.0 | +| test.c:568:13:573:26 | (...) | 1.6522562853044246E35 | +| test.c:568:14:568:25 | (...) | 1.829101824E11 | +| test.c:568:14:568:30 | ... * ... | 1.829101824E11 | +| test.c:568:14:569:63 | ... > ... | 1.0 | +| test.c:568:14:573:25 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:568:15:568:15 | 2 | 1.0 | +| test.c:568:15:568:15 | (unsigned int)... | 1.0 | +| test.c:568:15:568:20 | ... * ... | 1.829101824E11 | +| test.c:568:15:568:24 | ... + ... | 1.829101824E11 | +| test.c:568:19:568:20 | ip | 1.829101824E11 | +| test.c:568:24:568:24 | 1 | 1.0 | +| test.c:568:24:568:24 | (unsigned int)... | 1.0 | +| test.c:568:29:568:30 | 14 | 1.0 | +| test.c:568:29:568:30 | (unsigned int)... | 1.0 | +| test.c:569:13:569:63 | (...) | 3.345613482560127E22 | +| test.c:569:14:569:15 | 14 | 1.0 | +| test.c:569:14:569:15 | (unsigned int)... | 1.0 | +| test.c:569:14:569:26 | ... * ... | 1.829101824E11 | +| test.c:569:14:569:36 | ... > ... | 1.0 | +| test.c:569:14:569:62 | ... ? ... : ... | 3.345613482560127E22 | +| test.c:569:19:569:26 | (...) | 1.829101824E11 | +| test.c:569:20:569:20 | 2 | 1.0 | +| test.c:569:20:569:20 | (unsigned int)... | 1.0 | +| test.c:569:20:569:25 | ... * ... | 1.829101824E11 | +| test.c:569:24:569:25 | ip | 1.829101824E11 | +| test.c:569:30:569:31 | 17 | 1.0 | +| test.c:569:30:569:31 | (unsigned int)... | 1.0 | +| test.c:569:30:569:36 | ... * ... | 1.829101824E11 | +| test.c:569:35:569:36 | ip | 1.829101824E11 | +| test.c:569:40:569:41 | 17 | 1.0 | +| test.c:569:40:569:41 | (unsigned int)... | 1.0 | +| test.c:569:40:569:52 | ... * ... | 1.829101824E11 | +| test.c:569:45:569:52 | (...) | 1.829101824E11 | +| test.c:569:46:569:46 | 2 | 1.0 | +| test.c:569:46:569:46 | (unsigned int)... | 1.0 | +| test.c:569:46:569:51 | ... * ... | 1.829101824E11 | +| test.c:569:50:569:51 | ip | 1.829101824E11 | +| test.c:569:56:569:57 | 17 | 1.0 | +| test.c:569:56:569:57 | (unsigned int)... | 1.0 | +| test.c:569:56:569:62 | ... * ... | 1.829101824E11 | +| test.c:569:61:569:62 | ip | 1.829101824E11 | +| test.c:570:17:570:28 | (...) | 5.487305472E11 | +| test.c:570:17:570:33 | ... * ... | 5.487305472E11 | +| test.c:570:18:570:18 | 2 | 1.0 | +| test.c:570:18:570:18 | (unsigned int)... | 1.0 | +| test.c:570:18:570:23 | ... * ... | 5.487305472E11 | +| test.c:570:18:570:27 | ... + ... | 5.487305472E11 | +| test.c:570:22:570:23 | ip | 5.487305472E11 | +| test.c:570:27:570:27 | 1 | 1.0 | | test.c:570:27:570:27 | (unsigned int)... | 1.0 | -| test.c:570:27:570:32 | ... * ... | 4.9385749248E12 | -| test.c:570:31:570:32 | ip | 4.9385749248E12 | -| test.c:571:21:571:22 | 14 | 1.0 | -| test.c:571:21:571:22 | (unsigned int)... | 1.0 | -| test.c:571:21:571:27 | ... * ... | 4.9385749248E12 | -| test.c:571:26:571:27 | ip | 4.9385749248E12 | -| test.c:572:15:572:15 | 2 | 1.0 | -| test.c:572:15:572:15 | (unsigned int)... | 1.0 | -| test.c:572:15:572:20 | ... * ... | 1.6461916416E12 | -| test.c:572:15:572:25 | ... * ... | 1.6461916416E12 | -| test.c:572:15:572:45 | ... + ... | 2.709946920873703E24 | -| test.c:572:19:572:20 | ip | 1.6461916416E12 | -| test.c:572:24:572:25 | 14 | 1.0 | -| test.c:572:24:572:25 | (unsigned int)... | 1.0 | -| test.c:572:29:572:40 | (...) | 1.6461916416E12 | -| test.c:572:29:572:45 | ... * ... | 1.6461916416E12 | -| test.c:572:30:572:30 | 2 | 1.0 | -| test.c:572:30:572:30 | (unsigned int)... | 1.0 | -| test.c:572:30:572:35 | ... * ... | 1.6461916416E12 | -| test.c:572:30:572:39 | ... + ... | 1.6461916416E12 | -| test.c:572:34:572:35 | ip | 1.6461916416E12 | -| test.c:572:39:572:39 | 1 | 1.0 | -| test.c:572:39:572:39 | (unsigned int)... | 1.0 | -| test.c:572:44:572:45 | 17 | 1.0 | -| test.c:572:44:572:45 | (unsigned int)... | 1.0 | -| test.c:573:11:573:11 | 4 | 1.0 | -| test.c:573:11:573:11 | (unsigned int)... | 1.0 | -| test.c:573:11:573:28 | ... * ... | 1.829101824E11 | -| test.c:573:11:574:32 | ... + ... | 3.345613482560127E22 | -| test.c:573:11:575:32 | ... + ... | 6.11946772334972E33 | -| test.c:573:11:581:28 | ... + ... | 1.0110929008622132E69 | -| test.c:573:11:582:63 | ... > ... | 1.0 | -| test.c:573:11:594:27 | ... ? ... : ... | 3.727750761393342E101 | -| test.c:573:15:573:28 | (...) | 1.829101824E11 | -| test.c:573:16:573:17 | ip | 1.829101824E11 | -| test.c:573:16:573:22 | ... * ... | 1.829101824E11 | -| test.c:573:16:573:27 | ... + ... | 1.829101824E11 | -| test.c:573:21:573:22 | 14 | 1.0 | -| test.c:573:21:573:22 | (unsigned int)... | 1.0 | -| test.c:573:26:573:27 | 32 | 1.0 | -| test.c:573:26:573:27 | (unsigned int)... | 1.0 | -| test.c:574:15:574:32 | (...) | 1.829101824E11 | -| test.c:574:16:574:16 | 2 | 1.0 | -| test.c:574:16:574:16 | (unsigned int)... | 1.0 | -| test.c:574:16:574:21 | ... * ... | 1.829101824E11 | -| test.c:574:16:574:26 | ... * ... | 1.829101824E11 | -| test.c:574:16:574:31 | ... + ... | 1.829101824E11 | -| test.c:574:20:574:21 | ip | 1.829101824E11 | -| test.c:574:25:574:26 | 14 | 1.0 | -| test.c:574:25:574:26 | (unsigned int)... | 1.0 | -| test.c:574:30:574:31 | 32 | 1.0 | -| test.c:574:30:574:31 | (unsigned int)... | 1.0 | -| test.c:575:15:575:15 | 2 | 1.0 | +| test.c:570:32:570:33 | 14 | 1.0 | +| test.c:570:32:570:33 | (unsigned int)... | 1.0 | +| test.c:571:17:571:18 | 14 | 1.0 | +| test.c:571:17:571:18 | (unsigned int)... | 1.0 | +| test.c:571:17:571:29 | ... * ... | 5.487305472E11 | +| test.c:571:17:571:39 | ... > ... | 1.0 | +| test.c:571:17:573:25 | ... ? ... : ... | 3.0110521343041144E23 | +| test.c:571:22:571:29 | (...) | 5.487305472E11 | +| test.c:571:23:571:23 | 2 | 1.0 | +| test.c:571:23:571:23 | (unsigned int)... | 1.0 | +| test.c:571:23:571:28 | ... * ... | 5.487305472E11 | +| test.c:571:27:571:28 | ip | 5.487305472E11 | +| test.c:571:33:571:34 | 17 | 1.0 | +| test.c:571:33:571:34 | (unsigned int)... | 1.0 | +| test.c:571:33:571:39 | ... * ... | 5.487305472E11 | +| test.c:571:38:571:39 | ip | 5.487305472E11 | +| test.c:572:19:572:20 | 14 | 1.0 | +| test.c:572:19:572:20 | (unsigned int)... | 1.0 | +| test.c:572:19:572:31 | ... * ... | 5.487305472E11 | +| test.c:572:24:572:31 | (...) | 5.487305472E11 | +| test.c:572:25:572:25 | 2 | 1.0 | +| test.c:572:25:572:25 | (unsigned int)... | 1.0 | +| test.c:572:25:572:30 | ... * ... | 5.487305472E11 | +| test.c:572:29:572:30 | ip | 5.487305472E11 | +| test.c:573:19:573:20 | 14 | 1.0 | +| test.c:573:19:573:20 | (unsigned int)... | 1.0 | +| test.c:573:19:573:25 | ... * ... | 5.487305472E11 | +| test.c:573:24:573:25 | ip | 5.487305472E11 | +| test.c:574:11:574:11 | 2 | 1.0 | +| test.c:574:11:574:11 | (unsigned int)... | 1.0 | +| test.c:574:11:574:16 | ... * ... | 1.6461916416E12 | +| test.c:574:11:574:21 | ... * ... | 1.6461916416E12 | +| test.c:574:11:574:41 | ... + ... | 2.709946920873703E24 | +| test.c:574:15:574:16 | ip | 1.6461916416E12 | +| test.c:574:20:574:21 | 14 | 1.0 | +| test.c:574:20:574:21 | (unsigned int)... | 1.0 | +| test.c:574:25:574:36 | (...) | 1.6461916416E12 | +| test.c:574:25:574:41 | ... * ... | 1.6461916416E12 | +| test.c:574:26:574:26 | 2 | 1.0 | +| test.c:574:26:574:26 | (unsigned int)... | 1.0 | +| test.c:574:26:574:31 | ... * ... | 1.6461916416E12 | +| test.c:574:26:574:35 | ... + ... | 1.6461916416E12 | +| test.c:574:30:574:31 | ip | 1.6461916416E12 | +| test.c:574:35:574:35 | 1 | 1.0 | +| test.c:574:35:574:35 | (unsigned int)... | 1.0 | +| test.c:574:40:574:41 | 17 | 1.0 | +| test.c:574:40:574:41 | (unsigned int)... | 1.0 | +| test.c:575:15:575:15 | 4 | 1.0 | | test.c:575:15:575:15 | (unsigned int)... | 1.0 | -| test.c:575:15:575:32 | ... * ... | 1.829101824E11 | -| test.c:575:19:575:32 | (...) | 1.829101824E11 | -| test.c:575:20:575:21 | ip | 1.829101824E11 | -| test.c:575:20:575:26 | ... * ... | 1.829101824E11 | -| test.c:575:20:575:31 | ... + ... | 1.829101824E11 | +| test.c:575:15:575:32 | ... * ... | 1.6461916416E12 | +| test.c:575:15:576:32 | ... + ... | 2.709946920873703E24 | +| test.c:575:15:577:32 | ... + ... | 4.4610919703219464E36 | +| test.c:575:15:583:28 | ... + ... | 5.373362223271155E74 | +| test.c:575:19:575:32 | (...) | 1.6461916416E12 | +| test.c:575:20:575:21 | ip | 1.6461916416E12 | +| test.c:575:20:575:26 | ... * ... | 1.6461916416E12 | +| test.c:575:20:575:31 | ... + ... | 1.6461916416E12 | | test.c:575:25:575:26 | 14 | 1.0 | | test.c:575:25:575:26 | (unsigned int)... | 1.0 | -| test.c:575:30:575:31 | 64 | 1.0 | +| test.c:575:30:575:31 | 32 | 1.0 | | test.c:575:30:575:31 | (unsigned int)... | 1.0 | -| test.c:576:15:581:28 | (...) | 1.6522562853044246E35 | -| test.c:576:16:576:27 | (...) | 1.829101824E11 | -| test.c:576:16:576:32 | ... * ... | 1.829101824E11 | -| test.c:576:16:577:65 | ... > ... | 1.0 | -| test.c:576:16:581:27 | ... ? ... : ... | 1.6522562853044246E35 | -| test.c:576:17:576:17 | 2 | 1.0 | -| test.c:576:17:576:17 | (unsigned int)... | 1.0 | -| test.c:576:17:576:22 | ... * ... | 1.829101824E11 | -| test.c:576:17:576:26 | ... + ... | 1.829101824E11 | -| test.c:576:21:576:22 | ip | 1.829101824E11 | -| test.c:576:26:576:26 | 1 | 1.0 | -| test.c:576:26:576:26 | (unsigned int)... | 1.0 | -| test.c:576:31:576:32 | 14 | 1.0 | -| test.c:576:31:576:32 | (unsigned int)... | 1.0 | -| test.c:577:15:577:65 | (...) | 3.345613482560127E22 | -| test.c:577:16:577:17 | 14 | 1.0 | -| test.c:577:16:577:17 | (unsigned int)... | 1.0 | -| test.c:577:16:577:28 | ... * ... | 1.829101824E11 | -| test.c:577:16:577:38 | ... > ... | 1.0 | -| test.c:577:16:577:64 | ... ? ... : ... | 3.345613482560127E22 | -| test.c:577:21:577:28 | (...) | 1.829101824E11 | -| test.c:577:22:577:22 | 2 | 1.0 | -| test.c:577:22:577:22 | (unsigned int)... | 1.0 | -| test.c:577:22:577:27 | ... * ... | 1.829101824E11 | -| test.c:577:26:577:27 | ip | 1.829101824E11 | -| test.c:577:32:577:33 | 17 | 1.0 | -| test.c:577:32:577:33 | (unsigned int)... | 1.0 | -| test.c:577:32:577:38 | ... * ... | 1.829101824E11 | -| test.c:577:37:577:38 | ip | 1.829101824E11 | -| test.c:577:42:577:43 | 17 | 1.0 | -| test.c:577:42:577:43 | (unsigned int)... | 1.0 | -| test.c:577:42:577:54 | ... * ... | 1.829101824E11 | -| test.c:577:47:577:54 | (...) | 1.829101824E11 | -| test.c:577:48:577:48 | 2 | 1.0 | -| test.c:577:48:577:48 | (unsigned int)... | 1.0 | -| test.c:577:48:577:53 | ... * ... | 1.829101824E11 | -| test.c:577:52:577:53 | ip | 1.829101824E11 | -| test.c:577:58:577:59 | 17 | 1.0 | -| test.c:577:58:577:59 | (unsigned int)... | 1.0 | -| test.c:577:58:577:64 | ... * ... | 1.829101824E11 | -| test.c:577:63:577:64 | ip | 1.829101824E11 | -| test.c:578:19:578:30 | (...) | 5.487305472E11 | -| test.c:578:19:578:35 | ... * ... | 5.487305472E11 | -| test.c:578:20:578:20 | 2 | 1.0 | -| test.c:578:20:578:20 | (unsigned int)... | 1.0 | -| test.c:578:20:578:25 | ... * ... | 5.487305472E11 | -| test.c:578:20:578:29 | ... + ... | 5.487305472E11 | -| test.c:578:24:578:25 | ip | 5.487305472E11 | -| test.c:578:29:578:29 | 1 | 1.0 | -| test.c:578:29:578:29 | (unsigned int)... | 1.0 | -| test.c:578:34:578:35 | 14 | 1.0 | -| test.c:578:34:578:35 | (unsigned int)... | 1.0 | -| test.c:579:19:579:20 | 14 | 1.0 | -| test.c:579:19:579:20 | (unsigned int)... | 1.0 | -| test.c:579:19:579:31 | ... * ... | 5.487305472E11 | -| test.c:579:19:579:41 | ... > ... | 1.0 | -| test.c:579:19:581:27 | ... ? ... : ... | 3.0110521343041144E23 | -| test.c:579:24:579:31 | (...) | 5.487305472E11 | -| test.c:579:25:579:25 | 2 | 1.0 | -| test.c:579:25:579:25 | (unsigned int)... | 1.0 | -| test.c:579:25:579:30 | ... * ... | 5.487305472E11 | -| test.c:579:29:579:30 | ip | 5.487305472E11 | -| test.c:579:35:579:36 | 17 | 1.0 | -| test.c:579:35:579:36 | (unsigned int)... | 1.0 | -| test.c:579:35:579:41 | ... * ... | 5.487305472E11 | -| test.c:579:40:579:41 | ip | 5.487305472E11 | -| test.c:580:21:580:22 | 14 | 1.0 | -| test.c:580:21:580:22 | (unsigned int)... | 1.0 | -| test.c:580:21:580:33 | ... * ... | 5.487305472E11 | -| test.c:580:26:580:33 | (...) | 5.487305472E11 | -| test.c:580:27:580:27 | 2 | 1.0 | -| test.c:580:27:580:27 | (unsigned int)... | 1.0 | -| test.c:580:27:580:32 | ... * ... | 5.487305472E11 | -| test.c:580:31:580:32 | ip | 5.487305472E11 | -| test.c:581:21:581:22 | 14 | 1.0 | -| test.c:581:21:581:22 | (unsigned int)... | 1.0 | -| test.c:581:21:581:27 | ... * ... | 5.487305472E11 | -| test.c:581:26:581:27 | ip | 5.487305472E11 | -| test.c:582:13:582:63 | (...) | 2.709946920873703E24 | -| test.c:582:14:582:15 | 14 | 1.0 | -| test.c:582:14:582:15 | (unsigned int)... | 1.0 | -| test.c:582:14:582:20 | ... * ... | 1.6461916416E12 | -| test.c:582:14:582:36 | ... > ... | 1.0 | -| test.c:582:14:582:62 | ... ? ... : ... | 2.709946920873703E24 | -| test.c:582:19:582:20 | ip | 1.6461916416E12 | -| test.c:582:24:582:31 | (...) | 1.6461916416E12 | -| test.c:582:24:582:36 | ... * ... | 1.6461916416E12 | -| test.c:582:25:582:26 | ip | 1.6461916416E12 | -| test.c:582:25:582:30 | ... + ... | 1.6461916416E12 | -| test.c:582:30:582:30 | 1 | 1.0 | -| test.c:582:30:582:30 | (unsigned int)... | 1.0 | -| test.c:582:35:582:36 | 17 | 1.0 | -| test.c:582:35:582:36 | (unsigned int)... | 1.0 | -| test.c:582:40:582:41 | 17 | 1.0 | -| test.c:582:40:582:41 | (unsigned int)... | 1.0 | -| test.c:582:40:582:46 | ... * ... | 1.6461916416E12 | -| test.c:582:45:582:46 | ip | 1.6461916416E12 | -| test.c:582:50:582:57 | (...) | 1.6461916416E12 | -| test.c:582:50:582:62 | ... * ... | 1.6461916416E12 | -| test.c:582:51:582:52 | ip | 1.6461916416E12 | -| test.c:582:51:582:56 | ... + ... | 1.6461916416E12 | -| test.c:582:56:582:56 | 1 | 1.0 | -| test.c:582:56:582:56 | (unsigned int)... | 1.0 | -| test.c:582:61:582:62 | 17 | 1.0 | -| test.c:582:61:582:62 | (unsigned int)... | 1.0 | -| test.c:583:13:583:13 | 4 | 1.0 | -| test.c:583:13:583:13 | (unsigned int)... | 1.0 | -| test.c:583:13:583:30 | ... * ... | 3.2923832832E12 | -| test.c:583:13:584:30 | ... + ... | 1.0839787683494812E25 | -| test.c:583:13:585:30 | ... + ... | 3.568873576257557E37 | -| test.c:583:13:591:26 | ... + ... | 3.438951822893539E76 | -| test.c:583:17:583:30 | (...) | 3.2923832832E12 | -| test.c:583:18:583:19 | ip | 3.2923832832E12 | -| test.c:583:18:583:24 | ... * ... | 3.2923832832E12 | -| test.c:583:18:583:29 | ... + ... | 3.2923832832E12 | -| test.c:583:23:583:24 | 14 | 1.0 | -| test.c:583:23:583:24 | (unsigned int)... | 1.0 | -| test.c:583:28:583:29 | 32 | 1.0 | -| test.c:583:28:583:29 | (unsigned int)... | 1.0 | -| test.c:584:13:584:30 | (...) | 3.2923832832E12 | -| test.c:584:14:584:14 | 2 | 1.0 | -| test.c:584:14:584:14 | (unsigned int)... | 1.0 | -| test.c:584:14:584:19 | ... * ... | 3.2923832832E12 | -| test.c:584:14:584:24 | ... * ... | 3.2923832832E12 | -| test.c:584:14:584:29 | ... + ... | 3.2923832832E12 | -| test.c:584:18:584:19 | ip | 3.2923832832E12 | -| test.c:584:23:584:24 | 14 | 1.0 | -| test.c:584:23:584:24 | (unsigned int)... | 1.0 | -| test.c:584:28:584:29 | 32 | 1.0 | -| test.c:584:28:584:29 | (unsigned int)... | 1.0 | -| test.c:585:13:585:13 | 2 | 1.0 | -| test.c:585:13:585:13 | (unsigned int)... | 1.0 | -| test.c:585:13:585:30 | ... * ... | 3.2923832832E12 | -| test.c:585:17:585:30 | (...) | 3.2923832832E12 | -| test.c:585:18:585:19 | ip | 3.2923832832E12 | -| test.c:585:18:585:24 | ... * ... | 3.2923832832E12 | -| test.c:585:18:585:29 | ... + ... | 3.2923832832E12 | -| test.c:585:23:585:24 | 14 | 1.0 | -| test.c:585:23:585:24 | (unsigned int)... | 1.0 | -| test.c:585:28:585:29 | 64 | 1.0 | -| test.c:585:28:585:29 | (unsigned int)... | 1.0 | -| test.c:586:13:591:26 | (...) | 9.635958655895403E38 | -| test.c:586:14:586:25 | (...) | 3.2923832832E12 | -| test.c:586:14:586:30 | ... * ... | 3.2923832832E12 | -| test.c:586:14:587:63 | ... > ... | 1.0 | -| test.c:586:14:591:25 | ... ? ... : ... | 9.635958655895403E38 | -| test.c:586:15:586:15 | 2 | 1.0 | -| test.c:586:15:586:15 | (unsigned int)... | 1.0 | -| test.c:586:15:586:20 | ... * ... | 3.2923832832E12 | -| test.c:586:15:586:24 | ... + ... | 3.2923832832E12 | -| test.c:586:19:586:20 | ip | 3.2923832832E12 | -| test.c:586:24:586:24 | 1 | 1.0 | -| test.c:586:24:586:24 | (unsigned int)... | 1.0 | -| test.c:586:29:586:30 | 14 | 1.0 | -| test.c:586:29:586:30 | (unsigned int)... | 1.0 | -| test.c:587:13:587:63 | (...) | 1.0839787683494812E25 | -| test.c:587:14:587:15 | 14 | 1.0 | -| test.c:587:14:587:15 | (unsigned int)... | 1.0 | -| test.c:587:14:587:26 | ... * ... | 3.2923832832E12 | -| test.c:587:14:587:36 | ... > ... | 1.0 | -| test.c:587:14:587:62 | ... ? ... : ... | 1.0839787683494812E25 | -| test.c:587:19:587:26 | (...) | 3.2923832832E12 | -| test.c:587:20:587:20 | 2 | 1.0 | -| test.c:587:20:587:20 | (unsigned int)... | 1.0 | -| test.c:587:20:587:25 | ... * ... | 3.2923832832E12 | -| test.c:587:24:587:25 | ip | 3.2923832832E12 | -| test.c:587:30:587:31 | 17 | 1.0 | +| test.c:576:15:576:32 | (...) | 1.6461916416E12 | +| test.c:576:16:576:16 | 2 | 1.0 | +| test.c:576:16:576:16 | (unsigned int)... | 1.0 | +| test.c:576:16:576:21 | ... * ... | 1.6461916416E12 | +| test.c:576:16:576:26 | ... * ... | 1.6461916416E12 | +| test.c:576:16:576:31 | ... + ... | 1.6461916416E12 | +| test.c:576:20:576:21 | ip | 1.6461916416E12 | +| test.c:576:25:576:26 | 14 | 1.0 | +| test.c:576:25:576:26 | (unsigned int)... | 1.0 | +| test.c:576:30:576:31 | 32 | 1.0 | +| test.c:576:30:576:31 | (unsigned int)... | 1.0 | +| test.c:577:15:577:15 | 2 | 1.0 | +| test.c:577:15:577:15 | (unsigned int)... | 1.0 | +| test.c:577:15:577:32 | ... * ... | 1.6461916416E12 | +| test.c:577:19:577:32 | (...) | 1.6461916416E12 | +| test.c:577:20:577:21 | ip | 1.6461916416E12 | +| test.c:577:20:577:26 | ... * ... | 1.6461916416E12 | +| test.c:577:20:577:31 | ... + ... | 1.6461916416E12 | +| test.c:577:25:577:26 | 14 | 1.0 | +| test.c:577:25:577:26 | (unsigned int)... | 1.0 | +| test.c:577:30:577:31 | 64 | 1.0 | +| test.c:577:30:577:31 | (unsigned int)... | 1.0 | +| test.c:578:15:583:28 | (...) | 1.2044948319869254E38 | +| test.c:578:16:578:27 | (...) | 1.6461916416E12 | +| test.c:578:16:578:32 | ... * ... | 1.6461916416E12 | +| test.c:578:16:579:65 | ... > ... | 1.0 | +| test.c:578:16:583:27 | ... ? ... : ... | 1.2044948319869254E38 | +| test.c:578:17:578:17 | 2 | 1.0 | +| test.c:578:17:578:17 | (unsigned int)... | 1.0 | +| test.c:578:17:578:22 | ... * ... | 1.6461916416E12 | +| test.c:578:17:578:26 | ... + ... | 1.6461916416E12 | +| test.c:578:21:578:22 | ip | 1.6461916416E12 | +| test.c:578:26:578:26 | 1 | 1.0 | +| test.c:578:26:578:26 | (unsigned int)... | 1.0 | +| test.c:578:31:578:32 | 14 | 1.0 | +| test.c:578:31:578:32 | (unsigned int)... | 1.0 | +| test.c:579:15:579:65 | (...) | 2.709946920873703E24 | +| test.c:579:16:579:17 | 14 | 1.0 | +| test.c:579:16:579:17 | (unsigned int)... | 1.0 | +| test.c:579:16:579:28 | ... * ... | 1.6461916416E12 | +| test.c:579:16:579:38 | ... > ... | 1.0 | +| test.c:579:16:579:64 | ... ? ... : ... | 2.709946920873703E24 | +| test.c:579:21:579:28 | (...) | 1.6461916416E12 | +| test.c:579:22:579:22 | 2 | 1.0 | +| test.c:579:22:579:22 | (unsigned int)... | 1.0 | +| test.c:579:22:579:27 | ... * ... | 1.6461916416E12 | +| test.c:579:26:579:27 | ip | 1.6461916416E12 | +| test.c:579:32:579:33 | 17 | 1.0 | +| test.c:579:32:579:33 | (unsigned int)... | 1.0 | +| test.c:579:32:579:38 | ... * ... | 1.6461916416E12 | +| test.c:579:37:579:38 | ip | 1.6461916416E12 | +| test.c:579:42:579:43 | 17 | 1.0 | +| test.c:579:42:579:43 | (unsigned int)... | 1.0 | +| test.c:579:42:579:54 | ... * ... | 1.6461916416E12 | +| test.c:579:47:579:54 | (...) | 1.6461916416E12 | +| test.c:579:48:579:48 | 2 | 1.0 | +| test.c:579:48:579:48 | (unsigned int)... | 1.0 | +| test.c:579:48:579:53 | ... * ... | 1.6461916416E12 | +| test.c:579:52:579:53 | ip | 1.6461916416E12 | +| test.c:579:58:579:59 | 17 | 1.0 | +| test.c:579:58:579:59 | (unsigned int)... | 1.0 | +| test.c:579:58:579:64 | ... * ... | 1.6461916416E12 | +| test.c:579:63:579:64 | ip | 1.6461916416E12 | +| test.c:580:19:580:30 | (...) | 4.9385749248E12 | +| test.c:580:19:580:35 | ... * ... | 4.9385749248E12 | +| test.c:580:20:580:20 | 2 | 1.0 | +| test.c:580:20:580:20 | (unsigned int)... | 1.0 | +| test.c:580:20:580:25 | ... * ... | 4.9385749248E12 | +| test.c:580:20:580:29 | ... + ... | 4.9385749248E12 | +| test.c:580:24:580:25 | ip | 4.9385749248E12 | +| test.c:580:29:580:29 | 1 | 1.0 | +| test.c:580:29:580:29 | (unsigned int)... | 1.0 | +| test.c:580:34:580:35 | 14 | 1.0 | +| test.c:580:34:580:35 | (unsigned int)... | 1.0 | +| test.c:581:19:581:20 | 14 | 1.0 | +| test.c:581:19:581:20 | (unsigned int)... | 1.0 | +| test.c:581:19:581:31 | ... * ... | 4.9385749248E12 | +| test.c:581:19:581:41 | ... > ... | 1.0 | +| test.c:581:19:583:27 | ... ? ... : ... | 2.4389522287863325E25 | +| test.c:581:24:581:31 | (...) | 4.9385749248E12 | +| test.c:581:25:581:25 | 2 | 1.0 | +| test.c:581:25:581:25 | (unsigned int)... | 1.0 | +| test.c:581:25:581:30 | ... * ... | 4.9385749248E12 | +| test.c:581:29:581:30 | ip | 4.9385749248E12 | +| test.c:581:35:581:36 | 17 | 1.0 | +| test.c:581:35:581:36 | (unsigned int)... | 1.0 | +| test.c:581:35:581:41 | ... * ... | 4.9385749248E12 | +| test.c:581:40:581:41 | ip | 4.9385749248E12 | +| test.c:582:21:582:22 | 14 | 1.0 | +| test.c:582:21:582:22 | (unsigned int)... | 1.0 | +| test.c:582:21:582:33 | ... * ... | 4.9385749248E12 | +| test.c:582:26:582:33 | (...) | 4.9385749248E12 | +| test.c:582:27:582:27 | 2 | 1.0 | +| test.c:582:27:582:27 | (unsigned int)... | 1.0 | +| test.c:582:27:582:32 | ... * ... | 4.9385749248E12 | +| test.c:582:31:582:32 | ip | 4.9385749248E12 | +| test.c:583:21:583:22 | 14 | 1.0 | +| test.c:583:21:583:22 | (unsigned int)... | 1.0 | +| test.c:583:21:583:27 | ... * ... | 4.9385749248E12 | +| test.c:583:26:583:27 | ip | 4.9385749248E12 | +| test.c:584:15:584:15 | 2 | 1.0 | +| test.c:584:15:584:15 | (unsigned int)... | 1.0 | +| test.c:584:15:584:20 | ... * ... | 1.6461916416E12 | +| test.c:584:15:584:25 | ... * ... | 1.6461916416E12 | +| test.c:584:15:584:45 | ... + ... | 2.709946920873703E24 | +| test.c:584:19:584:20 | ip | 1.6461916416E12 | +| test.c:584:24:584:25 | 14 | 1.0 | +| test.c:584:24:584:25 | (unsigned int)... | 1.0 | +| test.c:584:29:584:40 | (...) | 1.6461916416E12 | +| test.c:584:29:584:45 | ... * ... | 1.6461916416E12 | +| test.c:584:30:584:30 | 2 | 1.0 | +| test.c:584:30:584:30 | (unsigned int)... | 1.0 | +| test.c:584:30:584:35 | ... * ... | 1.6461916416E12 | +| test.c:584:30:584:39 | ... + ... | 1.6461916416E12 | +| test.c:584:34:584:35 | ip | 1.6461916416E12 | +| test.c:584:39:584:39 | 1 | 1.0 | +| test.c:584:39:584:39 | (unsigned int)... | 1.0 | +| test.c:584:44:584:45 | 17 | 1.0 | +| test.c:584:44:584:45 | (unsigned int)... | 1.0 | +| test.c:585:11:585:11 | 4 | 1.0 | +| test.c:585:11:585:11 | (unsigned int)... | 1.0 | +| test.c:585:11:585:28 | ... * ... | 1.829101824E11 | +| test.c:585:11:586:32 | ... + ... | 3.345613482560127E22 | +| test.c:585:11:587:32 | ... + ... | 6.11946772334972E33 | +| test.c:585:11:593:28 | ... + ... | 1.0110929008622132E69 | +| test.c:585:11:594:63 | ... > ... | 1.0 | +| test.c:585:11:606:27 | ... ? ... : ... | 3.727750761393342E101 | +| test.c:585:15:585:28 | (...) | 1.829101824E11 | +| test.c:585:16:585:17 | ip | 1.829101824E11 | +| test.c:585:16:585:22 | ... * ... | 1.829101824E11 | +| test.c:585:16:585:27 | ... + ... | 1.829101824E11 | +| test.c:585:21:585:22 | 14 | 1.0 | +| test.c:585:21:585:22 | (unsigned int)... | 1.0 | +| test.c:585:26:585:27 | 32 | 1.0 | +| test.c:585:26:585:27 | (unsigned int)... | 1.0 | +| test.c:586:15:586:32 | (...) | 1.829101824E11 | +| test.c:586:16:586:16 | 2 | 1.0 | +| test.c:586:16:586:16 | (unsigned int)... | 1.0 | +| test.c:586:16:586:21 | ... * ... | 1.829101824E11 | +| test.c:586:16:586:26 | ... * ... | 1.829101824E11 | +| test.c:586:16:586:31 | ... + ... | 1.829101824E11 | +| test.c:586:20:586:21 | ip | 1.829101824E11 | +| test.c:586:25:586:26 | 14 | 1.0 | +| test.c:586:25:586:26 | (unsigned int)... | 1.0 | +| test.c:586:30:586:31 | 32 | 1.0 | +| test.c:586:30:586:31 | (unsigned int)... | 1.0 | +| test.c:587:15:587:15 | 2 | 1.0 | +| test.c:587:15:587:15 | (unsigned int)... | 1.0 | +| test.c:587:15:587:32 | ... * ... | 1.829101824E11 | +| test.c:587:19:587:32 | (...) | 1.829101824E11 | +| test.c:587:20:587:21 | ip | 1.829101824E11 | +| test.c:587:20:587:26 | ... * ... | 1.829101824E11 | +| test.c:587:20:587:31 | ... + ... | 1.829101824E11 | +| test.c:587:25:587:26 | 14 | 1.0 | +| test.c:587:25:587:26 | (unsigned int)... | 1.0 | +| test.c:587:30:587:31 | 64 | 1.0 | | test.c:587:30:587:31 | (unsigned int)... | 1.0 | -| test.c:587:30:587:36 | ... * ... | 3.2923832832E12 | -| test.c:587:35:587:36 | ip | 3.2923832832E12 | -| test.c:587:40:587:41 | 17 | 1.0 | -| test.c:587:40:587:41 | (unsigned int)... | 1.0 | -| test.c:587:40:587:52 | ... * ... | 3.2923832832E12 | -| test.c:587:45:587:52 | (...) | 3.2923832832E12 | -| test.c:587:46:587:46 | 2 | 1.0 | -| test.c:587:46:587:46 | (unsigned int)... | 1.0 | -| test.c:587:46:587:51 | ... * ... | 3.2923832832E12 | -| test.c:587:50:587:51 | ip | 3.2923832832E12 | -| test.c:587:56:587:57 | 17 | 1.0 | -| test.c:587:56:587:57 | (unsigned int)... | 1.0 | -| test.c:587:56:587:62 | ... * ... | 3.2923832832E12 | -| test.c:587:61:587:62 | ip | 3.2923832832E12 | -| test.c:588:17:588:28 | (...) | 9.8771498496E12 | -| test.c:588:17:588:33 | ... * ... | 9.8771498496E12 | -| test.c:588:18:588:18 | 2 | 1.0 | -| test.c:588:18:588:18 | (unsigned int)... | 1.0 | -| test.c:588:18:588:23 | ... * ... | 9.8771498496E12 | -| test.c:588:18:588:27 | ... + ... | 9.8771498496E12 | -| test.c:588:22:588:23 | ip | 9.8771498496E12 | -| test.c:588:27:588:27 | 1 | 1.0 | -| test.c:588:27:588:27 | (unsigned int)... | 1.0 | -| test.c:588:32:588:33 | 14 | 1.0 | -| test.c:588:32:588:33 | (unsigned int)... | 1.0 | -| test.c:589:17:589:18 | 14 | 1.0 | -| test.c:589:17:589:18 | (unsigned int)... | 1.0 | -| test.c:589:17:589:29 | ... * ... | 9.8771498496E12 | -| test.c:589:17:589:39 | ... > ... | 1.0 | -| test.c:589:17:591:25 | ... ? ... : ... | 9.75580891514533E25 | -| test.c:589:22:589:29 | (...) | 9.8771498496E12 | -| test.c:589:23:589:23 | 2 | 1.0 | -| test.c:589:23:589:23 | (unsigned int)... | 1.0 | -| test.c:589:23:589:28 | ... * ... | 9.8771498496E12 | -| test.c:589:27:589:28 | ip | 9.8771498496E12 | -| test.c:589:33:589:34 | 17 | 1.0 | -| test.c:589:33:589:34 | (unsigned int)... | 1.0 | -| test.c:589:33:589:39 | ... * ... | 9.8771498496E12 | -| test.c:589:38:589:39 | ip | 9.8771498496E12 | -| test.c:590:19:590:20 | 14 | 1.0 | -| test.c:590:19:590:20 | (unsigned int)... | 1.0 | -| test.c:590:19:590:31 | ... * ... | 9.8771498496E12 | -| test.c:590:24:590:31 | (...) | 9.8771498496E12 | -| test.c:590:25:590:25 | 2 | 1.0 | -| test.c:590:25:590:25 | (unsigned int)... | 1.0 | -| test.c:590:25:590:30 | ... * ... | 9.8771498496E12 | -| test.c:590:29:590:30 | ip | 9.8771498496E12 | +| test.c:588:15:593:28 | (...) | 1.6522562853044246E35 | +| test.c:588:16:588:27 | (...) | 1.829101824E11 | +| test.c:588:16:588:32 | ... * ... | 1.829101824E11 | +| test.c:588:16:589:65 | ... > ... | 1.0 | +| test.c:588:16:593:27 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:588:17:588:17 | 2 | 1.0 | +| test.c:588:17:588:17 | (unsigned int)... | 1.0 | +| test.c:588:17:588:22 | ... * ... | 1.829101824E11 | +| test.c:588:17:588:26 | ... + ... | 1.829101824E11 | +| test.c:588:21:588:22 | ip | 1.829101824E11 | +| test.c:588:26:588:26 | 1 | 1.0 | +| test.c:588:26:588:26 | (unsigned int)... | 1.0 | +| test.c:588:31:588:32 | 14 | 1.0 | +| test.c:588:31:588:32 | (unsigned int)... | 1.0 | +| test.c:589:15:589:65 | (...) | 3.345613482560127E22 | +| test.c:589:16:589:17 | 14 | 1.0 | +| test.c:589:16:589:17 | (unsigned int)... | 1.0 | +| test.c:589:16:589:28 | ... * ... | 1.829101824E11 | +| test.c:589:16:589:38 | ... > ... | 1.0 | +| test.c:589:16:589:64 | ... ? ... : ... | 3.345613482560127E22 | +| test.c:589:21:589:28 | (...) | 1.829101824E11 | +| test.c:589:22:589:22 | 2 | 1.0 | +| test.c:589:22:589:22 | (unsigned int)... | 1.0 | +| test.c:589:22:589:27 | ... * ... | 1.829101824E11 | +| test.c:589:26:589:27 | ip | 1.829101824E11 | +| test.c:589:32:589:33 | 17 | 1.0 | +| test.c:589:32:589:33 | (unsigned int)... | 1.0 | +| test.c:589:32:589:38 | ... * ... | 1.829101824E11 | +| test.c:589:37:589:38 | ip | 1.829101824E11 | +| test.c:589:42:589:43 | 17 | 1.0 | +| test.c:589:42:589:43 | (unsigned int)... | 1.0 | +| test.c:589:42:589:54 | ... * ... | 1.829101824E11 | +| test.c:589:47:589:54 | (...) | 1.829101824E11 | +| test.c:589:48:589:48 | 2 | 1.0 | +| test.c:589:48:589:48 | (unsigned int)... | 1.0 | +| test.c:589:48:589:53 | ... * ... | 1.829101824E11 | +| test.c:589:52:589:53 | ip | 1.829101824E11 | +| test.c:589:58:589:59 | 17 | 1.0 | +| test.c:589:58:589:59 | (unsigned int)... | 1.0 | +| test.c:589:58:589:64 | ... * ... | 1.829101824E11 | +| test.c:589:63:589:64 | ip | 1.829101824E11 | +| test.c:590:19:590:30 | (...) | 5.487305472E11 | +| test.c:590:19:590:35 | ... * ... | 5.487305472E11 | +| test.c:590:20:590:20 | 2 | 1.0 | +| test.c:590:20:590:20 | (unsigned int)... | 1.0 | +| test.c:590:20:590:25 | ... * ... | 5.487305472E11 | +| test.c:590:20:590:29 | ... + ... | 5.487305472E11 | +| test.c:590:24:590:25 | ip | 5.487305472E11 | +| test.c:590:29:590:29 | 1 | 1.0 | +| test.c:590:29:590:29 | (unsigned int)... | 1.0 | +| test.c:590:34:590:35 | 14 | 1.0 | +| test.c:590:34:590:35 | (unsigned int)... | 1.0 | | test.c:591:19:591:20 | 14 | 1.0 | | test.c:591:19:591:20 | (unsigned int)... | 1.0 | -| test.c:591:19:591:25 | ... * ... | 9.8771498496E12 | -| test.c:591:24:591:25 | ip | 9.8771498496E12 | -| test.c:592:13:592:14 | 14 | 1.0 | -| test.c:592:13:592:14 | (unsigned int)... | 1.0 | -| test.c:592:13:592:19 | ... * ... | 3.2923832832E12 | -| test.c:592:13:592:35 | ... > ... | 1.0 | -| test.c:592:13:594:27 | ... ? ... : ... | 1.0839787683494812E25 | -| test.c:592:18:592:19 | ip | 3.2923832832E12 | -| test.c:592:23:592:30 | (...) | 3.2923832832E12 | -| test.c:592:23:592:35 | ... * ... | 3.2923832832E12 | -| test.c:592:24:592:25 | ip | 3.2923832832E12 | -| test.c:592:24:592:29 | ... + ... | 3.2923832832E12 | -| test.c:592:29:592:29 | 1 | 1.0 | -| test.c:592:29:592:29 | (unsigned int)... | 1.0 | -| test.c:592:34:592:35 | 17 | 1.0 | -| test.c:592:34:592:35 | (unsigned int)... | 1.0 | -| test.c:593:15:593:16 | 14 | 1.0 | -| test.c:593:15:593:16 | (unsigned int)... | 1.0 | -| test.c:593:15:593:21 | ... * ... | 3.2923832832E12 | -| test.c:593:20:593:21 | ip | 3.2923832832E12 | -| test.c:594:15:594:22 | (...) | 3.2923832832E12 | -| test.c:594:15:594:27 | ... * ... | 3.2923832832E12 | -| test.c:594:16:594:17 | ip | 3.2923832832E12 | -| test.c:594:16:594:21 | ... + ... | 3.2923832832E12 | -| test.c:594:21:594:21 | 1 | 1.0 | -| test.c:594:21:594:21 | (unsigned int)... | 1.0 | -| test.c:594:26:594:27 | 14 | 1.0 | -| test.c:594:26:594:27 | (unsigned int)... | 1.0 | -| test.c:595:10:595:23 | special_number | 1.0736981431797959E233 | -| test.c:602:10:602:11 | 0 | 1.0 | -| test.c:603:7:603:8 | c1 | 1.0 | -| test.c:603:13:603:13 | x | 1.0 | -| test.c:603:13:603:23 | ... += ... | 1.0 | -| test.c:603:18:603:23 | 748596 | 1.0 | -| test.c:604:7:604:8 | c2 | 1.0 | -| test.c:604:13:604:13 | x | 2.0 | -| test.c:604:13:604:25 | ... += ... | 2.0 | -| test.c:604:18:604:25 | 84652395 | 1.0 | -| test.c:605:7:605:8 | c3 | 1.0 | -| test.c:605:13:605:13 | x | 4.0 | -| test.c:605:13:605:24 | ... += ... | 4.0 | -| test.c:605:18:605:24 | 3675895 | 1.0 | -| test.c:606:7:606:8 | c4 | 1.0 | -| test.c:606:13:606:13 | x | 8.0 | -| test.c:606:13:606:22 | ... += ... | 8.0 | -| test.c:606:18:606:22 | 98634 | 1.0 | -| test.c:607:7:607:8 | c5 | 1.0 | -| test.c:607:13:607:13 | x | 16.0 | -| test.c:607:13:607:24 | ... += ... | 16.0 | -| test.c:607:18:607:24 | 7834985 | 1.0 | -| test.c:608:7:608:8 | c1 | 2.0 | -| test.c:608:7:608:14 | ... && ... | 1.0 | -| test.c:608:13:608:14 | c2 | 2.0 | -| test.c:608:19:608:19 | x | 32.0 | -| test.c:608:19:608:32 | ... += ... | 32.0 | -| test.c:608:24:608:32 | 938457398 | 1.0 | -| test.c:609:7:609:8 | c1 | 4.0 | -| test.c:609:7:609:14 | ... && ... | 1.0 | -| test.c:609:13:609:14 | c3 | 2.0 | -| test.c:609:19:609:19 | x | 64.0 | -| test.c:609:19:609:31 | ... += ... | 64.0 | -| test.c:609:24:609:31 | 73895648 | 1.0 | -| test.c:610:7:610:8 | c1 | 8.0 | -| test.c:610:7:610:14 | ... && ... | 1.0 | -| test.c:610:13:610:14 | c4 | 2.0 | -| test.c:610:19:610:19 | x | 128.0 | -| test.c:610:19:610:31 | ... += ... | 128.0 | -| test.c:610:24:610:31 | 12345432 | 1.0 | -| test.c:611:7:611:8 | c1 | 16.0 | -| test.c:611:7:611:14 | ... && ... | 1.0 | -| test.c:611:13:611:14 | c5 | 2.0 | -| test.c:611:19:611:19 | x | 256.0 | -| test.c:611:19:611:28 | ... += ... | 256.0 | -| test.c:611:24:611:28 | 38847 | 1.0 | -| test.c:612:7:612:8 | c2 | 6.0 | -| test.c:612:7:612:14 | ... && ... | 1.0 | -| test.c:612:13:612:14 | c3 | 6.0 | -| test.c:612:19:612:19 | x | 512.0 | -| test.c:612:19:612:26 | ... += ... | 512.0 | -| test.c:612:24:612:26 | 234 | 1.0 | -| test.c:614:11:614:11 | x | 1024.0 | -| test.c:614:11:614:15 | ... + ... | 1048576.0 | -| test.c:614:11:614:19 | ... + ... | 1.073741824E9 | -| test.c:614:11:614:23 | ... + ... | 1.099511627776E12 | -| test.c:614:11:614:27 | ... + ... | 1.125899906842624E15 | -| test.c:614:11:614:31 | ... + ... | 1.152921504606847E18 | -| test.c:614:11:614:35 | ... + ... | 1.1805916207174113E21 | -| test.c:614:11:614:39 | ... + ... | 1.2089258196146292E24 | -| test.c:614:11:614:43 | ... + ... | 1.2379400392853803E27 | -| test.c:614:11:614:47 | ... + ... | 1.2676506002282294E30 | -| test.c:614:11:614:51 | ... + ... | 1.298074214633707E33 | -| test.c:614:11:614:55 | ... + ... | 1.329227995784916E36 | -| test.c:614:15:614:15 | x | 1024.0 | -| test.c:614:19:614:19 | x | 1024.0 | -| test.c:614:23:614:23 | x | 1024.0 | -| test.c:614:27:614:27 | x | 1024.0 | -| test.c:614:31:614:31 | x | 1024.0 | -| test.c:614:35:614:35 | x | 1024.0 | -| test.c:614:39:614:39 | x | 1024.0 | -| test.c:614:43:614:43 | x | 1024.0 | -| test.c:614:47:614:47 | x | 1024.0 | -| test.c:614:51:614:51 | x | 1024.0 | -| test.c:614:55:614:55 | x | 1024.0 | -| test.c:615:10:615:10 | y | 1.329227995784916E36 | -| test.c:620:20:620:20 | x | 1.0 | -| test.c:620:20:620:26 | ... < ... | 1.0 | -| test.c:620:20:620:36 | ... ? ... : ... | 1.0 | -| test.c:620:24:620:26 | 100 | 1.0 | -| test.c:620:24:620:26 | (unsigned int)... | 1.0 | -| test.c:620:30:620:30 | x | 1.0 | -| test.c:620:34:620:36 | 100 | 1.0 | -| test.c:620:34:620:36 | (unsigned int)... | 1.0 | -| test.c:623:3:623:4 | y1 | 1.0 | -| test.c:623:9:623:11 | ++ ... | 1.0 | -| test.c:623:11:623:11 | y | 1.0 | -| test.c:624:3:624:4 | y2 | 1.0 | -| test.c:624:19:624:19 | 3 | 1.0 | -| test.c:624:19:624:19 | (unsigned int)... | 1.0 | -| test.c:633:3:633:3 | i | 1.0 | -| test.c:633:3:633:8 | ... = ... | 1.0 | -| test.c:633:7:633:8 | 10 | 1.0 | -| test.c:634:7:634:7 | i | 1.0 | -| test.c:636:3:636:3 | i | 1.0 | -| test.c:636:3:636:8 | ... = ... | 1.0 | -| test.c:636:7:636:8 | 10 | 1.0 | -| test.c:637:3:637:3 | i | 1.0 | -| test.c:637:3:637:9 | ... += ... | 1.0 | -| test.c:637:8:637:9 | 10 | 1.0 | -| test.c:638:7:638:7 | i | 1.0 | -| test.c:640:3:640:3 | i | 1.0 | -| test.c:640:3:640:8 | ... = ... | 1.0 | -| test.c:640:7:640:8 | 40 | 1.0 | -| test.c:641:3:641:3 | i | 1.0 | -| test.c:641:3:641:9 | ... -= ... | 1.0 | -| test.c:641:8:641:9 | 10 | 1.0 | -| test.c:642:7:642:7 | i | 1.0 | -| test.c:644:3:644:3 | i | 1.0 | -| test.c:644:3:644:12 | ... = ... | 1.0 | -| test.c:644:7:644:7 | j | 1.0 | -| test.c:644:7:644:12 | ... = ... | 1.0 | -| test.c:644:11:644:12 | 40 | 1.0 | -| test.c:645:7:645:7 | i | 1.0 | -| test.c:647:3:647:3 | i | 1.0 | -| test.c:647:3:647:15 | ... = ... | 1.0 | -| test.c:647:7:647:15 | (...) | 1.0 | -| test.c:647:8:647:8 | j | 1.0 | -| test.c:647:8:647:14 | ... += ... | 1.0 | -| test.c:647:13:647:14 | 10 | 1.0 | -| test.c:648:7:648:7 | i | 1.0 | -| test.c:650:3:650:3 | i | 1.0 | -| test.c:650:3:650:20 | ... = ... | 1.0 | -| test.c:650:7:650:8 | 20 | 1.0 | -| test.c:650:7:650:20 | ... + ... | 1.0 | -| test.c:650:12:650:20 | (...) | 1.0 | -| test.c:650:13:650:13 | j | 1.0 | -| test.c:650:13:650:19 | ... -= ... | 1.0 | -| test.c:650:18:650:19 | 10 | 1.0 | -| test.c:651:7:651:7 | i | 1.0 | -| test.c:656:14:656:15 | 0 | 1.0 | -| test.c:658:7:658:7 | 3 | 1.0 | -| test.c:658:7:658:7 | (unsigned int)... | 1.0 | -| test.c:658:7:658:12 | ... <= ... | 1.0 | -| test.c:658:7:658:23 | ... && ... | 1.0 | -| test.c:658:7:658:33 | ... && ... | 1.0 | -| test.c:658:7:658:44 | ... && ... | 1.0 | -| test.c:658:12:658:12 | a | 1.0 | -| test.c:658:17:658:17 | a | 1.0 | -| test.c:658:17:658:23 | ... <= ... | 1.0 | -| test.c:658:22:658:23 | 11 | 1.0 | -| test.c:658:22:658:23 | (unsigned int)... | 1.0 | -| test.c:658:28:658:28 | 5 | 1.0 | -| test.c:658:28:658:28 | (unsigned int)... | 1.0 | -| test.c:658:28:658:33 | ... <= ... | 1.0 | -| test.c:658:33:658:33 | b | 1.0 | -| test.c:658:38:658:38 | b | 1.0 | -| test.c:658:38:658:44 | ... <= ... | 1.0 | -| test.c:658:43:658:44 | 23 | 1.0 | -| test.c:658:43:658:44 | (unsigned int)... | 1.0 | -| test.c:659:13:659:13 | a | 1.0 | -| test.c:659:13:659:15 | (int)... | 1.0 | -| test.c:659:13:659:15 | ... * ... | 1.0 | -| test.c:659:15:659:15 | b | 1.0 | -| test.c:660:5:660:9 | total | 1.0 | -| test.c:660:5:660:14 | ... += ... | 1.0 | -| test.c:660:14:660:14 | r | 1.0 | -| test.c:662:7:662:7 | 3 | 1.0 | -| test.c:662:7:662:7 | (unsigned int)... | 1.0 | -| test.c:662:7:662:12 | ... <= ... | 1.0 | -| test.c:662:7:662:23 | ... && ... | 1.0 | -| test.c:662:7:662:33 | ... && ... | 1.0 | -| test.c:662:7:662:44 | ... && ... | 1.0 | -| test.c:662:12:662:12 | a | 2.0 | -| test.c:662:17:662:17 | a | 2.0 | -| test.c:662:17:662:23 | ... <= ... | 1.0 | -| test.c:662:22:662:23 | 11 | 1.0 | -| test.c:662:22:662:23 | (unsigned int)... | 1.0 | -| test.c:662:28:662:28 | 0 | 1.0 | -| test.c:662:28:662:28 | (unsigned int)... | 1.0 | -| test.c:662:28:662:33 | ... <= ... | 1.0 | -| test.c:662:33:662:33 | b | 3.0 | -| test.c:662:38:662:38 | b | 3.0 | -| test.c:662:38:662:44 | ... <= ... | 1.0 | -| test.c:662:43:662:44 | 23 | 1.0 | -| test.c:662:43:662:44 | (unsigned int)... | 1.0 | -| test.c:663:13:663:13 | a | 2.0 | -| test.c:663:13:663:15 | (int)... | 6.0 | -| test.c:663:13:663:15 | ... * ... | 6.0 | -| test.c:663:15:663:15 | b | 3.0 | -| test.c:664:5:664:9 | total | 2.0 | -| test.c:664:5:664:14 | ... += ... | 12.0 | -| test.c:664:14:664:14 | r | 6.0 | -| test.c:666:7:666:7 | 3 | 1.0 | -| test.c:666:7:666:7 | (unsigned int)... | 1.0 | -| test.c:666:7:666:12 | ... <= ... | 1.0 | -| test.c:666:7:666:23 | ... && ... | 1.0 | -| test.c:666:7:666:34 | ... && ... | 1.0 | -| test.c:666:7:666:45 | ... && ... | 1.0 | -| test.c:666:12:666:12 | a | 4.0 | -| test.c:666:17:666:17 | a | 4.0 | -| test.c:666:17:666:23 | ... <= ... | 1.0 | -| test.c:666:22:666:23 | 11 | 1.0 | -| test.c:666:22:666:23 | (unsigned int)... | 1.0 | -| test.c:666:28:666:29 | 13 | 1.0 | -| test.c:666:28:666:29 | (unsigned int)... | 1.0 | -| test.c:666:28:666:34 | ... <= ... | 1.0 | -| test.c:666:34:666:34 | b | 9.0 | -| test.c:666:39:666:39 | b | 9.0 | -| test.c:666:39:666:45 | ... <= ... | 1.0 | -| test.c:666:44:666:45 | 23 | 1.0 | -| test.c:666:44:666:45 | (unsigned int)... | 1.0 | -| test.c:667:13:667:13 | a | 4.0 | -| test.c:667:13:667:15 | (int)... | 36.0 | -| test.c:667:13:667:15 | ... * ... | 36.0 | -| test.c:667:15:667:15 | b | 9.0 | -| test.c:668:5:668:9 | total | 14.0 | -| test.c:668:5:668:14 | ... += ... | 504.0 | -| test.c:668:14:668:14 | r | 36.0 | -| test.c:671:10:671:14 | total | 518.0 | -| test.c:675:14:675:15 | 0 | 1.0 | -| test.c:677:7:677:7 | 5 | 1.0 | -| test.c:677:7:677:7 | (unsigned int)... | 1.0 | -| test.c:677:7:677:12 | ... <= ... | 1.0 | -| test.c:677:7:677:23 | ... && ... | 1.0 | -| test.c:677:12:677:12 | b | 1.0 | -| test.c:677:17:677:17 | b | 1.0 | -| test.c:677:17:677:23 | ... <= ... | 1.0 | -| test.c:677:22:677:23 | 23 | 1.0 | -| test.c:677:22:677:23 | (unsigned int)... | 1.0 | -| test.c:678:13:678:14 | 11 | 1.0 | -| test.c:678:13:678:14 | (unsigned int)... | 1.0 | -| test.c:678:13:678:16 | (int)... | 1.0 | -| test.c:678:13:678:16 | ... * ... | 1.0 | -| test.c:678:16:678:16 | b | 1.0 | -| test.c:679:5:679:9 | total | 1.0 | -| test.c:679:5:679:14 | ... += ... | 1.0 | -| test.c:679:14:679:14 | r | 1.0 | -| test.c:681:7:681:7 | 0 | 1.0 | -| test.c:681:7:681:7 | (unsigned int)... | 1.0 | -| test.c:681:7:681:12 | ... <= ... | 1.0 | -| test.c:681:7:681:23 | ... && ... | 1.0 | -| test.c:681:12:681:12 | b | 2.0 | -| test.c:681:17:681:17 | b | 2.0 | -| test.c:681:17:681:23 | ... <= ... | 1.0 | -| test.c:681:22:681:23 | 23 | 1.0 | -| test.c:681:22:681:23 | (unsigned int)... | 1.0 | -| test.c:682:13:682:14 | 11 | 1.0 | -| test.c:682:13:682:14 | (unsigned int)... | 1.0 | -| test.c:682:13:682:16 | (int)... | 2.0 | -| test.c:682:13:682:16 | ... * ... | 2.0 | -| test.c:682:16:682:16 | b | 2.0 | -| test.c:683:5:683:9 | total | 2.0 | -| test.c:683:5:683:14 | ... += ... | 4.0 | -| test.c:683:14:683:14 | r | 2.0 | -| test.c:685:7:685:8 | 13 | 1.0 | -| test.c:685:7:685:8 | (unsigned int)... | 1.0 | -| test.c:685:7:685:13 | ... <= ... | 1.0 | -| test.c:685:7:685:24 | ... && ... | 1.0 | -| test.c:685:13:685:13 | b | 4.0 | -| test.c:685:18:685:18 | b | 4.0 | -| test.c:685:18:685:24 | ... <= ... | 1.0 | -| test.c:685:23:685:24 | 23 | 1.0 | -| test.c:685:23:685:24 | (unsigned int)... | 1.0 | -| test.c:686:13:686:14 | 11 | 1.0 | -| test.c:686:13:686:14 | (unsigned int)... | 1.0 | -| test.c:686:13:686:16 | (int)... | 4.0 | -| test.c:686:13:686:16 | ... * ... | 4.0 | -| test.c:686:16:686:16 | b | 4.0 | -| test.c:687:5:687:9 | total | 6.0 | -| test.c:687:5:687:14 | ... += ... | 24.0 | -| test.c:687:14:687:14 | r | 4.0 | -| test.c:690:10:690:14 | total | 30.0 | -| test.c:695:3:695:3 | x | 1.0 | -| test.c:695:3:695:22 | ... = ... | 1.0 | -| test.c:695:7:695:7 | y | 1.0 | -| test.c:695:7:695:22 | ... = ... | 1.0 | -| test.c:695:11:695:22 | 1000000003 | 1.0 | -| test.c:696:3:696:4 | xy | 1.0 | -| test.c:696:3:696:12 | ... = ... | 1.0 | -| test.c:696:8:696:8 | x | 1.0 | -| test.c:696:8:696:12 | ... * ... | 1.0 | -| test.c:696:12:696:12 | y | 1.0 | -| test.c:697:10:697:11 | xy | 1.0 | -| test.c:702:3:702:3 | x | 1.0 | -| test.c:702:3:702:14 | ... = ... | 1.0 | -| test.c:702:7:702:14 | 274177 | 1.0 | -| test.c:703:3:703:3 | y | 1.0 | -| test.c:703:3:703:22 | ... = ... | 1.0 | -| test.c:703:7:703:22 | 67280421310721 | 1.0 | -| test.c:704:3:704:4 | xy | 1.0 | -| test.c:704:3:704:12 | ... = ... | 1.0 | -| test.c:704:8:704:8 | x | 1.0 | -| test.c:704:8:704:12 | ... * ... | 1.0 | -| test.c:704:12:704:12 | y | 1.0 | -| test.c:705:10:705:11 | xy | 1.0 | -| test.c:709:7:709:8 | ui | 1.0 | -| test.c:709:7:709:14 | ... >= ... | 1.0 | -| test.c:709:13:709:14 | 10 | 1.0 | -| test.c:709:13:709:14 | (unsigned int)... | 1.0 | -| test.c:710:28:710:44 | (unsigned long)... | 1.0 | -| test.c:710:28:710:49 | ... * ... | 1.0 | -| test.c:710:43:710:44 | ui | 1.0 | -| test.c:710:48:710:49 | (unsigned long)... | 1.0 | -| test.c:710:48:710:49 | ui | 1.0 | -| test.c:711:12:711:17 | result | 1.0 | -| test.c:713:7:713:8 | ul | 1.0 | -| test.c:713:7:713:14 | ... >= ... | 1.0 | -| test.c:713:13:713:14 | 10 | 1.0 | -| test.c:713:13:713:14 | (unsigned long)... | 1.0 | -| test.c:714:28:714:29 | ul | 1.0 | -| test.c:714:28:714:34 | ... * ... | 1.0 | -| test.c:714:33:714:34 | ul | 1.0 | -| test.c:715:12:715:17 | result | 1.0 | -| test.c:717:10:717:10 | 0 | 1.0 | -| test.c:717:10:717:10 | (unsigned long)... | 1.0 | +| test.c:591:19:591:31 | ... * ... | 5.487305472E11 | +| test.c:591:19:591:41 | ... > ... | 1.0 | +| test.c:591:19:593:27 | ... ? ... : ... | 3.0110521343041144E23 | +| test.c:591:24:591:31 | (...) | 5.487305472E11 | +| test.c:591:25:591:25 | 2 | 1.0 | +| test.c:591:25:591:25 | (unsigned int)... | 1.0 | +| test.c:591:25:591:30 | ... * ... | 5.487305472E11 | +| test.c:591:29:591:30 | ip | 5.487305472E11 | +| test.c:591:35:591:36 | 17 | 1.0 | +| test.c:591:35:591:36 | (unsigned int)... | 1.0 | +| test.c:591:35:591:41 | ... * ... | 5.487305472E11 | +| test.c:591:40:591:41 | ip | 5.487305472E11 | +| test.c:592:21:592:22 | 14 | 1.0 | +| test.c:592:21:592:22 | (unsigned int)... | 1.0 | +| test.c:592:21:592:33 | ... * ... | 5.487305472E11 | +| test.c:592:26:592:33 | (...) | 5.487305472E11 | +| test.c:592:27:592:27 | 2 | 1.0 | +| test.c:592:27:592:27 | (unsigned int)... | 1.0 | +| test.c:592:27:592:32 | ... * ... | 5.487305472E11 | +| test.c:592:31:592:32 | ip | 5.487305472E11 | +| test.c:593:21:593:22 | 14 | 1.0 | +| test.c:593:21:593:22 | (unsigned int)... | 1.0 | +| test.c:593:21:593:27 | ... * ... | 5.487305472E11 | +| test.c:593:26:593:27 | ip | 5.487305472E11 | +| test.c:594:13:594:63 | (...) | 2.709946920873703E24 | +| test.c:594:14:594:15 | 14 | 1.0 | +| test.c:594:14:594:15 | (unsigned int)... | 1.0 | +| test.c:594:14:594:20 | ... * ... | 1.6461916416E12 | +| test.c:594:14:594:36 | ... > ... | 1.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 2.709946920873703E24 | +| test.c:594:19:594:20 | ip | 1.6461916416E12 | +| test.c:594:24:594:31 | (...) | 1.6461916416E12 | +| test.c:594:24:594:36 | ... * ... | 1.6461916416E12 | +| test.c:594:25:594:26 | ip | 1.6461916416E12 | +| test.c:594:25:594:30 | ... + ... | 1.6461916416E12 | +| test.c:594:30:594:30 | 1 | 1.0 | +| test.c:594:30:594:30 | (unsigned int)... | 1.0 | +| test.c:594:35:594:36 | 17 | 1.0 | +| test.c:594:35:594:36 | (unsigned int)... | 1.0 | +| test.c:594:40:594:41 | 17 | 1.0 | +| test.c:594:40:594:41 | (unsigned int)... | 1.0 | +| test.c:594:40:594:46 | ... * ... | 1.6461916416E12 | +| test.c:594:45:594:46 | ip | 1.6461916416E12 | +| test.c:594:50:594:57 | (...) | 1.6461916416E12 | +| test.c:594:50:594:62 | ... * ... | 1.6461916416E12 | +| test.c:594:51:594:52 | ip | 1.6461916416E12 | +| test.c:594:51:594:56 | ... + ... | 1.6461916416E12 | +| test.c:594:56:594:56 | 1 | 1.0 | +| test.c:594:56:594:56 | (unsigned int)... | 1.0 | +| test.c:594:61:594:62 | 17 | 1.0 | +| test.c:594:61:594:62 | (unsigned int)... | 1.0 | +| test.c:595:13:595:13 | 4 | 1.0 | +| test.c:595:13:595:13 | (unsigned int)... | 1.0 | +| test.c:595:13:595:30 | ... * ... | 3.2923832832E12 | +| test.c:595:13:596:30 | ... + ... | 1.0839787683494812E25 | +| test.c:595:13:597:30 | ... + ... | 3.568873576257557E37 | +| test.c:595:13:603:26 | ... + ... | 3.438951822893539E76 | +| test.c:595:17:595:30 | (...) | 3.2923832832E12 | +| test.c:595:18:595:19 | ip | 3.2923832832E12 | +| test.c:595:18:595:24 | ... * ... | 3.2923832832E12 | +| test.c:595:18:595:29 | ... + ... | 3.2923832832E12 | +| test.c:595:23:595:24 | 14 | 1.0 | +| test.c:595:23:595:24 | (unsigned int)... | 1.0 | +| test.c:595:28:595:29 | 32 | 1.0 | +| test.c:595:28:595:29 | (unsigned int)... | 1.0 | +| test.c:596:13:596:30 | (...) | 3.2923832832E12 | +| test.c:596:14:596:14 | 2 | 1.0 | +| test.c:596:14:596:14 | (unsigned int)... | 1.0 | +| test.c:596:14:596:19 | ... * ... | 3.2923832832E12 | +| test.c:596:14:596:24 | ... * ... | 3.2923832832E12 | +| test.c:596:14:596:29 | ... + ... | 3.2923832832E12 | +| test.c:596:18:596:19 | ip | 3.2923832832E12 | +| test.c:596:23:596:24 | 14 | 1.0 | +| test.c:596:23:596:24 | (unsigned int)... | 1.0 | +| test.c:596:28:596:29 | 32 | 1.0 | +| test.c:596:28:596:29 | (unsigned int)... | 1.0 | +| test.c:597:13:597:13 | 2 | 1.0 | +| test.c:597:13:597:13 | (unsigned int)... | 1.0 | +| test.c:597:13:597:30 | ... * ... | 3.2923832832E12 | +| test.c:597:17:597:30 | (...) | 3.2923832832E12 | +| test.c:597:18:597:19 | ip | 3.2923832832E12 | +| test.c:597:18:597:24 | ... * ... | 3.2923832832E12 | +| test.c:597:18:597:29 | ... + ... | 3.2923832832E12 | +| test.c:597:23:597:24 | 14 | 1.0 | +| test.c:597:23:597:24 | (unsigned int)... | 1.0 | +| test.c:597:28:597:29 | 64 | 1.0 | +| test.c:597:28:597:29 | (unsigned int)... | 1.0 | +| test.c:598:13:603:26 | (...) | 9.635958655895403E38 | +| test.c:598:14:598:25 | (...) | 3.2923832832E12 | +| test.c:598:14:598:30 | ... * ... | 3.2923832832E12 | +| test.c:598:14:599:63 | ... > ... | 1.0 | +| test.c:598:14:603:25 | ... ? ... : ... | 9.635958655895403E38 | +| test.c:598:15:598:15 | 2 | 1.0 | +| test.c:598:15:598:15 | (unsigned int)... | 1.0 | +| test.c:598:15:598:20 | ... * ... | 3.2923832832E12 | +| test.c:598:15:598:24 | ... + ... | 3.2923832832E12 | +| test.c:598:19:598:20 | ip | 3.2923832832E12 | +| test.c:598:24:598:24 | 1 | 1.0 | +| test.c:598:24:598:24 | (unsigned int)... | 1.0 | +| test.c:598:29:598:30 | 14 | 1.0 | +| test.c:598:29:598:30 | (unsigned int)... | 1.0 | +| test.c:599:13:599:63 | (...) | 1.0839787683494812E25 | +| test.c:599:14:599:15 | 14 | 1.0 | +| test.c:599:14:599:15 | (unsigned int)... | 1.0 | +| test.c:599:14:599:26 | ... * ... | 3.2923832832E12 | +| test.c:599:14:599:36 | ... > ... | 1.0 | +| test.c:599:14:599:62 | ... ? ... : ... | 1.0839787683494812E25 | +| test.c:599:19:599:26 | (...) | 3.2923832832E12 | +| test.c:599:20:599:20 | 2 | 1.0 | +| test.c:599:20:599:20 | (unsigned int)... | 1.0 | +| test.c:599:20:599:25 | ... * ... | 3.2923832832E12 | +| test.c:599:24:599:25 | ip | 3.2923832832E12 | +| test.c:599:30:599:31 | 17 | 1.0 | +| test.c:599:30:599:31 | (unsigned int)... | 1.0 | +| test.c:599:30:599:36 | ... * ... | 3.2923832832E12 | +| test.c:599:35:599:36 | ip | 3.2923832832E12 | +| test.c:599:40:599:41 | 17 | 1.0 | +| test.c:599:40:599:41 | (unsigned int)... | 1.0 | +| test.c:599:40:599:52 | ... * ... | 3.2923832832E12 | +| test.c:599:45:599:52 | (...) | 3.2923832832E12 | +| test.c:599:46:599:46 | 2 | 1.0 | +| test.c:599:46:599:46 | (unsigned int)... | 1.0 | +| test.c:599:46:599:51 | ... * ... | 3.2923832832E12 | +| test.c:599:50:599:51 | ip | 3.2923832832E12 | +| test.c:599:56:599:57 | 17 | 1.0 | +| test.c:599:56:599:57 | (unsigned int)... | 1.0 | +| test.c:599:56:599:62 | ... * ... | 3.2923832832E12 | +| test.c:599:61:599:62 | ip | 3.2923832832E12 | +| test.c:600:17:600:28 | (...) | 9.8771498496E12 | +| test.c:600:17:600:33 | ... * ... | 9.8771498496E12 | +| test.c:600:18:600:18 | 2 | 1.0 | +| test.c:600:18:600:18 | (unsigned int)... | 1.0 | +| test.c:600:18:600:23 | ... * ... | 9.8771498496E12 | +| test.c:600:18:600:27 | ... + ... | 9.8771498496E12 | +| test.c:600:22:600:23 | ip | 9.8771498496E12 | +| test.c:600:27:600:27 | 1 | 1.0 | +| test.c:600:27:600:27 | (unsigned int)... | 1.0 | +| test.c:600:32:600:33 | 14 | 1.0 | +| test.c:600:32:600:33 | (unsigned int)... | 1.0 | +| test.c:601:17:601:18 | 14 | 1.0 | +| test.c:601:17:601:18 | (unsigned int)... | 1.0 | +| test.c:601:17:601:29 | ... * ... | 9.8771498496E12 | +| test.c:601:17:601:39 | ... > ... | 1.0 | +| test.c:601:17:603:25 | ... ? ... : ... | 9.75580891514533E25 | +| test.c:601:22:601:29 | (...) | 9.8771498496E12 | +| test.c:601:23:601:23 | 2 | 1.0 | +| test.c:601:23:601:23 | (unsigned int)... | 1.0 | +| test.c:601:23:601:28 | ... * ... | 9.8771498496E12 | +| test.c:601:27:601:28 | ip | 9.8771498496E12 | +| test.c:601:33:601:34 | 17 | 1.0 | +| test.c:601:33:601:34 | (unsigned int)... | 1.0 | +| test.c:601:33:601:39 | ... * ... | 9.8771498496E12 | +| test.c:601:38:601:39 | ip | 9.8771498496E12 | +| test.c:602:19:602:20 | 14 | 1.0 | +| test.c:602:19:602:20 | (unsigned int)... | 1.0 | +| test.c:602:19:602:31 | ... * ... | 9.8771498496E12 | +| test.c:602:24:602:31 | (...) | 9.8771498496E12 | +| test.c:602:25:602:25 | 2 | 1.0 | +| test.c:602:25:602:25 | (unsigned int)... | 1.0 | +| test.c:602:25:602:30 | ... * ... | 9.8771498496E12 | +| test.c:602:29:602:30 | ip | 9.8771498496E12 | +| test.c:603:19:603:20 | 14 | 1.0 | +| test.c:603:19:603:20 | (unsigned int)... | 1.0 | +| test.c:603:19:603:25 | ... * ... | 9.8771498496E12 | +| test.c:603:24:603:25 | ip | 9.8771498496E12 | +| test.c:604:13:604:14 | 14 | 1.0 | +| test.c:604:13:604:14 | (unsigned int)... | 1.0 | +| test.c:604:13:604:19 | ... * ... | 3.2923832832E12 | +| test.c:604:13:604:35 | ... > ... | 1.0 | +| test.c:604:13:606:27 | ... ? ... : ... | 1.0839787683494812E25 | +| test.c:604:18:604:19 | ip | 3.2923832832E12 | +| test.c:604:23:604:30 | (...) | 3.2923832832E12 | +| test.c:604:23:604:35 | ... * ... | 3.2923832832E12 | +| test.c:604:24:604:25 | ip | 3.2923832832E12 | +| test.c:604:24:604:29 | ... + ... | 3.2923832832E12 | +| test.c:604:29:604:29 | 1 | 1.0 | +| test.c:604:29:604:29 | (unsigned int)... | 1.0 | +| test.c:604:34:604:35 | 17 | 1.0 | +| test.c:604:34:604:35 | (unsigned int)... | 1.0 | +| test.c:605:15:605:16 | 14 | 1.0 | +| test.c:605:15:605:16 | (unsigned int)... | 1.0 | +| test.c:605:15:605:21 | ... * ... | 3.2923832832E12 | +| test.c:605:20:605:21 | ip | 3.2923832832E12 | +| test.c:606:15:606:22 | (...) | 3.2923832832E12 | +| test.c:606:15:606:27 | ... * ... | 3.2923832832E12 | +| test.c:606:16:606:17 | ip | 3.2923832832E12 | +| test.c:606:16:606:21 | ... + ... | 3.2923832832E12 | +| test.c:606:21:606:21 | 1 | 1.0 | +| test.c:606:21:606:21 | (unsigned int)... | 1.0 | +| test.c:606:26:606:27 | 14 | 1.0 | +| test.c:606:26:606:27 | (unsigned int)... | 1.0 | +| test.c:607:10:607:23 | special_number | 1.0736981431797959E233 | +| test.c:614:10:614:11 | 0 | 1.0 | +| test.c:615:7:615:8 | c1 | 1.0 | +| test.c:615:13:615:13 | x | 1.0 | +| test.c:615:13:615:23 | ... += ... | 1.0 | +| test.c:615:18:615:23 | 748596 | 1.0 | +| test.c:616:7:616:8 | c2 | 1.0 | +| test.c:616:13:616:13 | x | 2.0 | +| test.c:616:13:616:25 | ... += ... | 2.0 | +| test.c:616:18:616:25 | 84652395 | 1.0 | +| test.c:617:7:617:8 | c3 | 1.0 | +| test.c:617:13:617:13 | x | 4.0 | +| test.c:617:13:617:24 | ... += ... | 4.0 | +| test.c:617:18:617:24 | 3675895 | 1.0 | +| test.c:618:7:618:8 | c4 | 1.0 | +| test.c:618:13:618:13 | x | 8.0 | +| test.c:618:13:618:22 | ... += ... | 8.0 | +| test.c:618:18:618:22 | 98634 | 1.0 | +| test.c:619:7:619:8 | c5 | 1.0 | +| test.c:619:13:619:13 | x | 16.0 | +| test.c:619:13:619:24 | ... += ... | 16.0 | +| test.c:619:18:619:24 | 7834985 | 1.0 | +| test.c:620:7:620:8 | c1 | 2.0 | +| test.c:620:7:620:14 | ... && ... | 1.0 | +| test.c:620:13:620:14 | c2 | 2.0 | +| test.c:620:19:620:19 | x | 32.0 | +| test.c:620:19:620:32 | ... += ... | 32.0 | +| test.c:620:24:620:32 | 938457398 | 1.0 | +| test.c:621:7:621:8 | c1 | 4.0 | +| test.c:621:7:621:14 | ... && ... | 1.0 | +| test.c:621:13:621:14 | c3 | 2.0 | +| test.c:621:19:621:19 | x | 64.0 | +| test.c:621:19:621:31 | ... += ... | 64.0 | +| test.c:621:24:621:31 | 73895648 | 1.0 | +| test.c:622:7:622:8 | c1 | 8.0 | +| test.c:622:7:622:14 | ... && ... | 1.0 | +| test.c:622:13:622:14 | c4 | 2.0 | +| test.c:622:19:622:19 | x | 128.0 | +| test.c:622:19:622:31 | ... += ... | 128.0 | +| test.c:622:24:622:31 | 12345432 | 1.0 | +| test.c:623:7:623:8 | c1 | 16.0 | +| test.c:623:7:623:14 | ... && ... | 1.0 | +| test.c:623:13:623:14 | c5 | 2.0 | +| test.c:623:19:623:19 | x | 256.0 | +| test.c:623:19:623:28 | ... += ... | 256.0 | +| test.c:623:24:623:28 | 38847 | 1.0 | +| test.c:624:7:624:8 | c2 | 6.0 | +| test.c:624:7:624:14 | ... && ... | 1.0 | +| test.c:624:13:624:14 | c3 | 6.0 | +| test.c:624:19:624:19 | x | 512.0 | +| test.c:624:19:624:26 | ... += ... | 512.0 | +| test.c:624:24:624:26 | 234 | 1.0 | +| test.c:626:11:626:11 | x | 1024.0 | +| test.c:626:11:626:15 | ... + ... | 1048576.0 | +| test.c:626:11:626:19 | ... + ... | 1.073741824E9 | +| test.c:626:11:626:23 | ... + ... | 1.099511627776E12 | +| test.c:626:11:626:27 | ... + ... | 1.125899906842624E15 | +| test.c:626:11:626:31 | ... + ... | 1.152921504606847E18 | +| test.c:626:11:626:35 | ... + ... | 1.1805916207174113E21 | +| test.c:626:11:626:39 | ... + ... | 1.2089258196146292E24 | +| test.c:626:11:626:43 | ... + ... | 1.2379400392853803E27 | +| test.c:626:11:626:47 | ... + ... | 1.2676506002282294E30 | +| test.c:626:11:626:51 | ... + ... | 1.298074214633707E33 | +| test.c:626:11:626:55 | ... + ... | 1.329227995784916E36 | +| test.c:626:15:626:15 | x | 1024.0 | +| test.c:626:19:626:19 | x | 1024.0 | +| test.c:626:23:626:23 | x | 1024.0 | +| test.c:626:27:626:27 | x | 1024.0 | +| test.c:626:31:626:31 | x | 1024.0 | +| test.c:626:35:626:35 | x | 1024.0 | +| test.c:626:39:626:39 | x | 1024.0 | +| test.c:626:43:626:43 | x | 1024.0 | +| test.c:626:47:626:47 | x | 1024.0 | +| test.c:626:51:626:51 | x | 1024.0 | +| test.c:626:55:626:55 | x | 1024.0 | +| test.c:627:10:627:10 | y | 1.329227995784916E36 | +| test.c:632:20:632:20 | x | 1.0 | +| test.c:632:20:632:26 | ... < ... | 1.0 | +| test.c:632:20:632:36 | ... ? ... : ... | 1.0 | +| test.c:632:24:632:26 | 100 | 1.0 | +| test.c:632:24:632:26 | (unsigned int)... | 1.0 | +| test.c:632:30:632:30 | x | 1.0 | +| test.c:632:34:632:36 | 100 | 1.0 | +| test.c:632:34:632:36 | (unsigned int)... | 1.0 | +| test.c:635:3:635:4 | y1 | 1.0 | +| test.c:635:9:635:11 | ++ ... | 1.0 | +| test.c:635:11:635:11 | y | 1.0 | +| test.c:636:3:636:4 | y2 | 1.0 | +| test.c:636:19:636:19 | 3 | 1.0 | +| test.c:636:19:636:19 | (unsigned int)... | 1.0 | +| test.c:645:3:645:3 | i | 1.0 | +| test.c:645:3:645:8 | ... = ... | 1.0 | +| test.c:645:7:645:8 | 10 | 1.0 | +| test.c:646:7:646:7 | i | 1.0 | +| test.c:648:3:648:3 | i | 1.0 | +| test.c:648:3:648:8 | ... = ... | 1.0 | +| test.c:648:7:648:8 | 10 | 1.0 | +| test.c:649:3:649:3 | i | 1.0 | +| test.c:649:3:649:9 | ... += ... | 1.0 | +| test.c:649:8:649:9 | 10 | 1.0 | +| test.c:650:7:650:7 | i | 1.0 | +| test.c:652:3:652:3 | i | 1.0 | +| test.c:652:3:652:8 | ... = ... | 1.0 | +| test.c:652:7:652:8 | 40 | 1.0 | +| test.c:653:3:653:3 | i | 1.0 | +| test.c:653:3:653:9 | ... -= ... | 1.0 | +| test.c:653:8:653:9 | 10 | 1.0 | +| test.c:654:7:654:7 | i | 1.0 | +| test.c:656:3:656:3 | i | 1.0 | +| test.c:656:3:656:12 | ... = ... | 1.0 | +| test.c:656:7:656:7 | j | 1.0 | +| test.c:656:7:656:12 | ... = ... | 1.0 | +| test.c:656:11:656:12 | 40 | 1.0 | +| test.c:657:7:657:7 | i | 1.0 | +| test.c:659:3:659:3 | i | 1.0 | +| test.c:659:3:659:15 | ... = ... | 1.0 | +| test.c:659:7:659:15 | (...) | 1.0 | +| test.c:659:8:659:8 | j | 1.0 | +| test.c:659:8:659:14 | ... += ... | 1.0 | +| test.c:659:13:659:14 | 10 | 1.0 | +| test.c:660:7:660:7 | i | 1.0 | +| test.c:662:3:662:3 | i | 1.0 | +| test.c:662:3:662:20 | ... = ... | 1.0 | +| test.c:662:7:662:8 | 20 | 1.0 | +| test.c:662:7:662:20 | ... + ... | 1.0 | +| test.c:662:12:662:20 | (...) | 1.0 | +| test.c:662:13:662:13 | j | 1.0 | +| test.c:662:13:662:19 | ... -= ... | 1.0 | +| test.c:662:18:662:19 | 10 | 1.0 | +| test.c:663:7:663:7 | i | 1.0 | +| test.c:668:14:668:15 | 0 | 1.0 | +| test.c:670:7:670:7 | 3 | 1.0 | +| test.c:670:7:670:7 | (unsigned int)... | 1.0 | +| test.c:670:7:670:12 | ... <= ... | 1.0 | +| test.c:670:7:670:23 | ... && ... | 1.0 | +| test.c:670:7:670:33 | ... && ... | 1.0 | +| test.c:670:7:670:44 | ... && ... | 1.0 | +| test.c:670:12:670:12 | a | 1.0 | +| test.c:670:17:670:17 | a | 1.0 | +| test.c:670:17:670:23 | ... <= ... | 1.0 | +| test.c:670:22:670:23 | 11 | 1.0 | +| test.c:670:22:670:23 | (unsigned int)... | 1.0 | +| test.c:670:28:670:28 | 5 | 1.0 | +| test.c:670:28:670:28 | (unsigned int)... | 1.0 | +| test.c:670:28:670:33 | ... <= ... | 1.0 | +| test.c:670:33:670:33 | b | 1.0 | +| test.c:670:38:670:38 | b | 1.0 | +| test.c:670:38:670:44 | ... <= ... | 1.0 | +| test.c:670:43:670:44 | 23 | 1.0 | +| test.c:670:43:670:44 | (unsigned int)... | 1.0 | +| test.c:671:13:671:13 | a | 1.0 | +| test.c:671:13:671:15 | (int)... | 1.0 | +| test.c:671:13:671:15 | ... * ... | 1.0 | +| test.c:671:15:671:15 | b | 1.0 | +| test.c:672:5:672:9 | total | 1.0 | +| test.c:672:5:672:14 | ... += ... | 1.0 | +| test.c:672:14:672:14 | r | 1.0 | +| test.c:674:7:674:7 | 3 | 1.0 | +| test.c:674:7:674:7 | (unsigned int)... | 1.0 | +| test.c:674:7:674:12 | ... <= ... | 1.0 | +| test.c:674:7:674:23 | ... && ... | 1.0 | +| test.c:674:7:674:33 | ... && ... | 1.0 | +| test.c:674:7:674:44 | ... && ... | 1.0 | +| test.c:674:12:674:12 | a | 2.0 | +| test.c:674:17:674:17 | a | 2.0 | +| test.c:674:17:674:23 | ... <= ... | 1.0 | +| test.c:674:22:674:23 | 11 | 1.0 | +| test.c:674:22:674:23 | (unsigned int)... | 1.0 | +| test.c:674:28:674:28 | 0 | 1.0 | +| test.c:674:28:674:28 | (unsigned int)... | 1.0 | +| test.c:674:28:674:33 | ... <= ... | 1.0 | +| test.c:674:33:674:33 | b | 3.0 | +| test.c:674:38:674:38 | b | 3.0 | +| test.c:674:38:674:44 | ... <= ... | 1.0 | +| test.c:674:43:674:44 | 23 | 1.0 | +| test.c:674:43:674:44 | (unsigned int)... | 1.0 | +| test.c:675:13:675:13 | a | 2.0 | +| test.c:675:13:675:15 | (int)... | 6.0 | +| test.c:675:13:675:15 | ... * ... | 6.0 | +| test.c:675:15:675:15 | b | 3.0 | +| test.c:676:5:676:9 | total | 2.0 | +| test.c:676:5:676:14 | ... += ... | 12.0 | +| test.c:676:14:676:14 | r | 6.0 | +| test.c:678:7:678:7 | 3 | 1.0 | +| test.c:678:7:678:7 | (unsigned int)... | 1.0 | +| test.c:678:7:678:12 | ... <= ... | 1.0 | +| test.c:678:7:678:23 | ... && ... | 1.0 | +| test.c:678:7:678:34 | ... && ... | 1.0 | +| test.c:678:7:678:45 | ... && ... | 1.0 | +| test.c:678:12:678:12 | a | 4.0 | +| test.c:678:17:678:17 | a | 4.0 | +| test.c:678:17:678:23 | ... <= ... | 1.0 | +| test.c:678:22:678:23 | 11 | 1.0 | +| test.c:678:22:678:23 | (unsigned int)... | 1.0 | +| test.c:678:28:678:29 | 13 | 1.0 | +| test.c:678:28:678:29 | (unsigned int)... | 1.0 | +| test.c:678:28:678:34 | ... <= ... | 1.0 | +| test.c:678:34:678:34 | b | 9.0 | +| test.c:678:39:678:39 | b | 9.0 | +| test.c:678:39:678:45 | ... <= ... | 1.0 | +| test.c:678:44:678:45 | 23 | 1.0 | +| test.c:678:44:678:45 | (unsigned int)... | 1.0 | +| test.c:679:13:679:13 | a | 4.0 | +| test.c:679:13:679:15 | (int)... | 36.0 | +| test.c:679:13:679:15 | ... * ... | 36.0 | +| test.c:679:15:679:15 | b | 9.0 | +| test.c:680:5:680:9 | total | 14.0 | +| test.c:680:5:680:14 | ... += ... | 504.0 | +| test.c:680:14:680:14 | r | 36.0 | +| test.c:683:10:683:14 | total | 518.0 | +| test.c:687:14:687:15 | 0 | 1.0 | +| test.c:689:7:689:7 | 5 | 1.0 | +| test.c:689:7:689:7 | (unsigned int)... | 1.0 | +| test.c:689:7:689:12 | ... <= ... | 1.0 | +| test.c:689:7:689:23 | ... && ... | 1.0 | +| test.c:689:12:689:12 | b | 1.0 | +| test.c:689:17:689:17 | b | 1.0 | +| test.c:689:17:689:23 | ... <= ... | 1.0 | +| test.c:689:22:689:23 | 23 | 1.0 | +| test.c:689:22:689:23 | (unsigned int)... | 1.0 | +| test.c:690:13:690:14 | 11 | 1.0 | +| test.c:690:13:690:14 | (unsigned int)... | 1.0 | +| test.c:690:13:690:16 | (int)... | 1.0 | +| test.c:690:13:690:16 | ... * ... | 1.0 | +| test.c:690:16:690:16 | b | 1.0 | +| test.c:691:5:691:9 | total | 1.0 | +| test.c:691:5:691:14 | ... += ... | 1.0 | +| test.c:691:14:691:14 | r | 1.0 | +| test.c:693:7:693:7 | 0 | 1.0 | +| test.c:693:7:693:7 | (unsigned int)... | 1.0 | +| test.c:693:7:693:12 | ... <= ... | 1.0 | +| test.c:693:7:693:23 | ... && ... | 1.0 | +| test.c:693:12:693:12 | b | 2.0 | +| test.c:693:17:693:17 | b | 2.0 | +| test.c:693:17:693:23 | ... <= ... | 1.0 | +| test.c:693:22:693:23 | 23 | 1.0 | +| test.c:693:22:693:23 | (unsigned int)... | 1.0 | +| test.c:694:13:694:14 | 11 | 1.0 | +| test.c:694:13:694:14 | (unsigned int)... | 1.0 | +| test.c:694:13:694:16 | (int)... | 2.0 | +| test.c:694:13:694:16 | ... * ... | 2.0 | +| test.c:694:16:694:16 | b | 2.0 | +| test.c:695:5:695:9 | total | 2.0 | +| test.c:695:5:695:14 | ... += ... | 4.0 | +| test.c:695:14:695:14 | r | 2.0 | +| test.c:697:7:697:8 | 13 | 1.0 | +| test.c:697:7:697:8 | (unsigned int)... | 1.0 | +| test.c:697:7:697:13 | ... <= ... | 1.0 | +| test.c:697:7:697:24 | ... && ... | 1.0 | +| test.c:697:13:697:13 | b | 4.0 | +| test.c:697:18:697:18 | b | 4.0 | +| test.c:697:18:697:24 | ... <= ... | 1.0 | +| test.c:697:23:697:24 | 23 | 1.0 | +| test.c:697:23:697:24 | (unsigned int)... | 1.0 | +| test.c:698:13:698:14 | 11 | 1.0 | +| test.c:698:13:698:14 | (unsigned int)... | 1.0 | +| test.c:698:13:698:16 | (int)... | 4.0 | +| test.c:698:13:698:16 | ... * ... | 4.0 | +| test.c:698:16:698:16 | b | 4.0 | +| test.c:699:5:699:9 | total | 6.0 | +| test.c:699:5:699:14 | ... += ... | 24.0 | +| test.c:699:14:699:14 | r | 4.0 | +| test.c:702:10:702:14 | total | 30.0 | +| test.c:707:3:707:3 | x | 1.0 | +| test.c:707:3:707:22 | ... = ... | 1.0 | +| test.c:707:7:707:7 | y | 1.0 | +| test.c:707:7:707:22 | ... = ... | 1.0 | +| test.c:707:11:707:22 | 1000000003 | 1.0 | +| test.c:708:3:708:4 | xy | 1.0 | +| test.c:708:3:708:12 | ... = ... | 1.0 | +| test.c:708:8:708:8 | x | 1.0 | +| test.c:708:8:708:12 | ... * ... | 1.0 | +| test.c:708:12:708:12 | y | 1.0 | +| test.c:709:10:709:11 | xy | 1.0 | +| test.c:714:3:714:3 | x | 1.0 | +| test.c:714:3:714:14 | ... = ... | 1.0 | +| test.c:714:7:714:14 | 274177 | 1.0 | +| test.c:715:3:715:3 | y | 1.0 | +| test.c:715:3:715:22 | ... = ... | 1.0 | +| test.c:715:7:715:22 | 67280421310721 | 1.0 | +| test.c:716:3:716:4 | xy | 1.0 | +| test.c:716:3:716:12 | ... = ... | 1.0 | +| test.c:716:8:716:8 | x | 1.0 | +| test.c:716:8:716:12 | ... * ... | 1.0 | +| test.c:716:12:716:12 | y | 1.0 | +| test.c:717:10:717:11 | xy | 1.0 | | test.c:721:7:721:8 | ui | 1.0 | -| test.c:721:7:721:14 | ... <= ... | 1.0 | -| test.c:721:7:721:25 | ... && ... | 1.0 | +| test.c:721:7:721:14 | ... >= ... | 1.0 | | test.c:721:13:721:14 | 10 | 1.0 | | test.c:721:13:721:14 | (unsigned int)... | 1.0 | -| test.c:721:19:721:20 | ui | 1.0 | -| test.c:721:19:721:25 | ... >= ... | 1.0 | -| test.c:721:25:721:25 | 2 | 1.0 | -| test.c:721:25:721:25 | (unsigned int)... | 1.0 | -| test.c:722:5:722:6 | ui | 1.0 | -| test.c:722:5:722:16 | ... *= ... | 1.0 | -| test.c:722:11:722:12 | ui | 1.0 | -| test.c:722:11:722:16 | ... + ... | 1.0 | -| test.c:722:16:722:16 | 0 | 1.0 | -| test.c:722:16:722:16 | (unsigned int)... | 1.0 | -| test.c:723:12:723:13 | (unsigned long)... | 1.0 | -| test.c:723:12:723:13 | ui | 1.0 | -| test.c:726:26:726:27 | 10 | 1.0 | -| test.c:726:26:726:27 | (unsigned int)... | 1.0 | -| test.c:727:3:727:9 | uiconst | 1.0 | -| test.c:727:3:727:14 | ... *= ... | 1.0 | -| test.c:727:14:727:14 | 4 | 1.0 | -| test.c:727:14:727:14 | (unsigned int)... | 1.0 | -| test.c:729:27:729:28 | 10 | 1.0 | -| test.c:729:27:729:28 | (unsigned long)... | 1.0 | -| test.c:730:3:730:9 | ulconst | 1.0 | -| test.c:730:3:730:14 | ... *= ... | 1.0 | -| test.c:730:14:730:14 | 4 | 1.0 | -| test.c:730:14:730:14 | (unsigned long)... | 1.0 | -| test.c:731:10:731:16 | (unsigned long)... | 1.0 | -| test.c:731:10:731:16 | uiconst | 1.0 | -| test.c:731:10:731:26 | ... + ... | 1.0 | -| test.c:731:20:731:26 | ulconst | 1.0 | -| test.c:735:7:735:7 | i | 1.0 | -| test.c:735:7:735:13 | ... >= ... | 1.0 | -| test.c:735:7:735:23 | ... && ... | 1.0 | -| test.c:735:12:735:13 | - ... | 1.0 | -| test.c:735:13:735:13 | 1 | 1.0 | -| test.c:735:18:735:18 | i | 1.0 | -| test.c:735:18:735:23 | ... <= ... | 1.0 | -| test.c:735:23:735:23 | 2 | 1.0 | -| test.c:736:5:736:5 | i | 1.0 | -| test.c:736:5:736:13 | ... = ... | 1.0 | -| test.c:736:9:736:9 | 5 | 1.0 | -| test.c:736:9:736:13 | ... * ... | 1.0 | -| test.c:736:13:736:13 | i | 1.0 | -| test.c:737:9:737:9 | i | 1.0 | -| test.c:739:5:739:5 | i | 1.0 | -| test.c:739:5:739:14 | ... = ... | 1.0 | -| test.c:739:9:739:9 | i | 1.0 | -| test.c:739:9:739:14 | ... * ... | 1.0 | -| test.c:739:13:739:14 | - ... | 1.0 | -| test.c:739:14:739:14 | 3 | 1.0 | -| test.c:740:9:740:9 | i | 1.0 | -| test.c:742:5:742:5 | i | 1.0 | -| test.c:742:5:742:10 | ... *= ... | 1.0 | -| test.c:742:10:742:10 | 7 | 1.0 | -| test.c:743:9:743:9 | i | 1.0 | -| test.c:745:5:745:5 | i | 1.0 | -| test.c:745:5:745:12 | ... *= ... | 1.0 | -| test.c:745:10:745:12 | - ... | 1.0 | -| test.c:745:11:745:12 | 11 | 1.0 | -| test.c:746:9:746:9 | i | 1.0 | -| test.c:748:7:748:7 | i | 2.0 | -| test.c:748:7:748:13 | ... == ... | 1.0 | -| test.c:748:12:748:13 | - ... | 1.0 | -| test.c:748:13:748:13 | 1 | 1.0 | -| test.c:749:5:749:5 | i | 1.0 | -| test.c:749:5:749:27 | ... = ... | 2.0 | -| test.c:749:9:749:9 | i | 2.0 | -| test.c:749:9:749:27 | ... * ... | 2.0 | -| test.c:749:13:749:27 | (int)... | 1.0 | -| test.c:749:18:749:27 | 4294967295 | 1.0 | -| test.c:750:9:750:9 | i | 2.0 | -| test.c:752:3:752:3 | i | 1.0 | -| test.c:752:3:752:12 | ... = ... | 4.0 | -| test.c:752:7:752:7 | i | 4.0 | -| test.c:752:7:752:12 | ... * ... | 4.0 | -| test.c:752:11:752:12 | - ... | 1.0 | -| test.c:752:12:752:12 | 1 | 1.0 | -| test.c:753:10:753:10 | i | 4.0 | -| test.c:755:20:755:20 | 1 | 1.0 | -| test.c:755:20:755:20 | (signed char)... | 1.0 | -| test.c:756:3:756:3 | i | 1.0 | -| test.c:756:3:756:17 | ... = ... | 1.0 | -| test.c:756:7:756:17 | (...) | 1.0 | -| test.c:756:7:756:17 | (int)... | 1.0 | -| test.c:756:8:756:11 | * ... | 1.0 | -| test.c:756:8:756:16 | ... *= ... | 1.0 | -| test.c:756:10:756:11 | sc | 1.0 | -| test.c:756:16:756:16 | 2 | 1.0 | -| test.c:758:7:758:7 | i | 1.0 | -| test.c:760:10:760:10 | 0 | 1.0 | -| test.c:765:7:765:7 | (int)... | 1.0 | -| test.c:765:7:765:7 | n | 1.0 | -| test.c:767:7:767:7 | n | 1.0 | -| test.c:767:7:767:11 | ... > ... | 1.0 | -| test.c:767:11:767:11 | 0 | 1.0 | -| test.c:767:11:767:11 | (unsigned int)... | 1.0 | -| test.c:768:9:768:9 | (int)... | 1.0 | -| test.c:768:9:768:9 | n | 1.0 | -| test.c:771:7:771:7 | n | 2.0 | -| test.c:771:7:771:12 | ... != ... | 1.0 | -| test.c:771:12:771:12 | 0 | 1.0 | -| test.c:771:12:771:12 | (unsigned int)... | 1.0 | -| test.c:772:9:772:9 | (int)... | 2.0 | -| test.c:772:9:772:9 | n | 2.0 | -| test.c:774:9:774:9 | (int)... | 2.0 | -| test.c:774:9:774:9 | n | 2.0 | -| test.c:777:7:777:8 | ! ... | 1.0 | -| test.c:777:8:777:8 | n | 4.0 | -| test.c:778:9:778:9 | (int)... | 4.0 | -| test.c:778:9:778:9 | n | 4.0 | -| test.c:780:9:780:9 | (int)... | 4.0 | -| test.c:780:9:780:9 | n | 4.0 | -| test.c:783:10:783:10 | n | 13.0 | -| test.c:783:10:783:15 | ... != ... | 1.0 | -| test.c:783:15:783:15 | 0 | 1.0 | -| test.c:783:15:783:15 | (unsigned int)... | 1.0 | -| test.c:784:5:784:5 | n | 13.0 | -| test.c:784:5:784:7 | ... -- | 13.0 | -| test.c:787:7:787:7 | (int)... | 13.0 | -| test.c:787:7:787:7 | n | 13.0 | -| test.c:791:7:791:7 | (int)... | 1.0 | -| test.c:791:7:791:7 | n | 1.0 | -| test.c:791:7:791:11 | ... < ... | 1.0 | -| test.c:791:11:791:11 | 0 | 1.0 | -| test.c:794:7:794:7 | (int)... | 1.0 | -| test.c:794:7:794:7 | n | 1.0 | -| test.c:794:7:794:12 | ... == ... | 1.0 | -| test.c:794:12:794:12 | 0 | 1.0 | -| test.c:795:9:795:9 | (int)... | 1.0 | -| test.c:795:9:795:9 | n | 1.0 | -| test.c:797:9:797:9 | (int)... | 1.0 | -| test.c:797:9:797:9 | n | 1.0 | -| test.c:800:7:800:7 | n | 2.0 | -| test.c:801:9:801:9 | (int)... | 2.0 | -| test.c:801:9:801:9 | n | 2.0 | -| test.c:803:9:803:9 | (int)... | 2.0 | -| test.c:803:9:803:9 | n | 2.0 | -| test.c:806:10:806:10 | (int)... | 13.0 | -| test.c:806:10:806:10 | n | 13.0 | -| test.c:806:10:806:15 | ... != ... | 1.0 | -| test.c:806:15:806:15 | 0 | 1.0 | -| test.c:807:5:807:5 | n | 13.0 | -| test.c:807:5:807:7 | ... -- | 13.0 | -| test.c:810:7:810:7 | (int)... | 13.0 | -| test.c:810:7:810:7 | n | 13.0 | -| test.c:814:7:814:7 | (int)... | 1.0 | -| test.c:814:7:814:7 | n | 1.0 | -| test.c:814:7:814:12 | ... != ... | 1.0 | -| test.c:814:12:814:12 | 0 | 1.0 | -| test.c:815:9:815:9 | (int)... | 1.0 | -| test.c:815:9:815:9 | n | 1.0 | -| test.c:815:9:815:14 | ... >= ... | 1.0 | -| test.c:815:14:815:14 | 0 | 1.0 | -| test.c:816:11:816:11 | (int)... | 1.0 | -| test.c:816:11:816:11 | n | 1.0 | -| test.c:820:7:820:7 | (int)... | 2.0 | -| test.c:820:7:820:7 | n | 2.0 | -| test.c:820:7:820:12 | ... >= ... | 1.0 | -| test.c:820:12:820:12 | 5 | 1.0 | -| test.c:821:9:821:9 | 2 | 1.0 | -| test.c:821:9:821:13 | ... * ... | 2.0 | -| test.c:821:9:821:18 | ... - ... | 2.0 | -| test.c:821:9:821:23 | ... == ... | 1.0 | -| test.c:821:13:821:13 | (int)... | 2.0 | -| test.c:821:13:821:13 | n | 2.0 | -| test.c:821:17:821:18 | 10 | 1.0 | -| test.c:821:23:821:23 | 0 | 1.0 | -| test.c:824:9:824:9 | (int)... | 2.0 | -| test.c:824:9:824:9 | n | 2.0 | -| test.c:827:7:827:7 | (int)... | 4.0 | -| test.c:827:7:827:7 | n | 4.0 | -| test.c:827:7:827:17 | ... != ... | 1.0 | -| test.c:827:7:827:32 | ... && ... | 1.0 | -| test.c:827:12:827:17 | - ... | 1.0 | -| test.c:827:13:827:17 | 32768 | 1.0 | -| test.c:827:22:827:22 | (int)... | 4.0 | -| test.c:827:22:827:22 | n | 4.0 | -| test.c:827:22:827:32 | ... != ... | 1.0 | -| test.c:827:27:827:32 | - ... | 1.0 | -| test.c:827:28:827:32 | 32767 | 1.0 | -| test.c:828:9:828:9 | (int)... | 4.0 | -| test.c:828:9:828:9 | n | 4.0 | -| test.c:831:7:831:7 | (int)... | 8.0 | -| test.c:831:7:831:7 | n | 8.0 | -| test.c:831:7:831:12 | ... >= ... | 1.0 | -| test.c:831:12:831:12 | 0 | 1.0 | -| test.c:832:5:832:5 | n | 8.0 | -| test.c:832:5:832:14 | ... ? ... : ... | 64.0 | -| test.c:832:10:832:10 | (int)... | 8.0 | -| test.c:832:10:832:10 | n | 8.0 | -| test.c:832:14:832:14 | (int)... | 8.0 | -| test.c:832:14:832:14 | n | 8.0 | -| test.c:833:5:833:6 | ! ... | 1.0 | -| test.c:833:5:833:14 | ... ? ... : ... | 256.0 | -| test.c:833:6:833:6 | n | 16.0 | -| test.c:833:10:833:10 | (int)... | 16.0 | -| test.c:833:10:833:10 | n | 16.0 | -| test.c:833:14:833:14 | (int)... | 16.0 | -| test.c:833:14:833:14 | n | 16.0 | -| test.c:844:7:844:8 | (unsigned long)... | 1.0 | -| test.c:844:7:844:8 | ss | 1.0 | -| test.c:844:7:844:22 | ... < ... | 1.0 | -| test.c:844:12:844:22 | sizeof(int) | 1.0 | -| test.c:845:9:845:10 | (int)... | 1.0 | -| test.c:845:9:845:10 | ss | 1.0 | -| test.c:848:7:848:8 | (int)... | 2.0 | -| test.c:848:7:848:8 | ss | 2.0 | -| test.c:848:7:848:17 | ... < ... | 1.0 | -| test.c:848:12:848:17 | 32769 | 1.0 | -| test.c:849:9:849:10 | (int)... | 2.0 | -| test.c:849:9:849:10 | ss | 2.0 | -| test.c:852:7:852:15 | (int)... | 1.0 | -| test.c:852:7:852:15 | (short)... | 1.0 | -| test.c:852:7:852:20 | ... >= ... | 1.0 | -| test.c:852:14:852:15 | us | 1.0 | -| test.c:852:20:852:20 | 0 | 1.0 | -| test.c:853:9:853:10 | (int)... | 1.0 | -| test.c:853:9:853:10 | us | 1.0 | -| test.c:856:7:856:15 | (int)... | 2.0 | -| test.c:856:7:856:15 | (short)... | 2.0 | -| test.c:856:7:856:21 | ... >= ... | 1.0 | -| test.c:856:14:856:15 | us | 2.0 | -| test.c:856:20:856:21 | - ... | 1.0 | -| test.c:856:21:856:21 | 1 | 1.0 | -| test.c:857:9:857:10 | (int)... | 2.0 | -| test.c:857:9:857:10 | us | 2.0 | -| test.c:860:7:860:8 | (unsigned long)... | 4.0 | -| test.c:860:7:860:8 | ss | 4.0 | -| test.c:860:7:860:23 | ... >= ... | 1.0 | -| test.c:860:13:860:23 | sizeof(int) | 1.0 | -| test.c:861:9:861:10 | (int)... | 4.0 | -| test.c:861:9:861:10 | ss | 4.0 | -| test.c:864:7:864:8 | (int)... | 8.0 | -| test.c:864:7:864:8 | ss | 8.0 | -| test.c:864:7:864:12 | (unsigned long)... | 8.0 | -| test.c:864:7:864:12 | ... + ... | 8.0 | -| test.c:864:7:864:26 | ... < ... | 1.0 | -| test.c:864:12:864:12 | 1 | 1.0 | -| test.c:864:16:864:26 | sizeof(int) | 1.0 | -| test.c:865:9:865:10 | (int)... | 8.0 | -| test.c:865:9:865:10 | ss | 8.0 | -| test.c:871:8:871:8 | s | 1.0 | -| test.c:871:8:871:12 | ... = ... | 1.0 | -| test.c:871:12:871:12 | 0 | 1.0 | -| test.c:871:15:871:15 | s | 13.0 | -| test.c:871:15:871:20 | ... < ... | 1.0 | -| test.c:871:19:871:20 | 10 | 1.0 | -| test.c:871:23:871:23 | s | 13.0 | -| test.c:871:23:871:25 | ... ++ | 13.0 | -| test.c:872:18:872:18 | s | 13.0 | -| test.c:872:18:872:22 | ... + ... | 13.0 | -| test.c:872:22:872:22 | s | 13.0 | -| test.c:873:9:873:14 | result | 13.0 | -| test.c:878:10:878:11 | 0 | 1.0 | -| test.c:879:7:879:7 | i | 1.0 | -| test.c:879:7:879:11 | ... < ... | 1.0 | -| test.c:879:11:879:11 | 0 | 1.0 | -| test.c:880:9:880:9 | i | 1.0 | -| test.c:883:20:883:20 | 0 | 1.0 | -| test.c:883:20:883:20 | (unsigned int)... | 1.0 | -| test.c:884:7:884:7 | u | 1.0 | -| test.c:884:7:884:11 | ... < ... | 1.0 | -| test.c:884:11:884:11 | 0 | 1.0 | -| test.c:884:11:884:11 | (unsigned int)... | 1.0 | -| test.c:885:9:885:9 | (int)... | 1.0 | -| test.c:885:9:885:9 | u | 1.0 | -| test.c:890:12:890:12 | s | 1.0 | -| test.c:890:12:890:16 | ... % ... | 1.0 | -| test.c:890:16:890:16 | 5 | 1.0 | -| test.c:891:7:891:8 | s2 | 1.0 | -| test.c:896:7:896:7 | x | 1.0 | -| test.c:897:9:897:9 | y | 1.0 | -| test.c:897:9:897:14 | ... != ... | 1.0 | -| test.c:897:14:897:14 | 0 | 1.0 | -| test.c:898:12:898:12 | 0 | 1.0 | -| test.c:901:7:901:7 | y | 2.0 | -| test.c:910:7:910:7 | x | 1.0 | -| test.c:910:7:910:13 | ... >= ... | 1.0 | -| test.c:910:12:910:13 | 10 | 1.0 | -| test.c:915:7:915:7 | x | 13.0 | -| test.c:920:16:920:26 | 2147483647 | 1.0 | -| test.c:921:16:921:19 | 256 | 1.0 | -| test.c:922:7:922:13 | (...) | 1.0 | -| test.c:922:7:922:20 | ... <= ... | 1.0 | -| test.c:922:8:922:8 | x | 1.0 | -| test.c:922:8:922:12 | ... + ... | 1.0 | -| test.c:922:12:922:12 | y | 1.0 | -| test.c:922:18:922:20 | 512 | 1.0 | -| test.c:923:9:923:9 | x | 1.0 | -| test.c:924:9:924:9 | y | 1.0 | +| test.c:722:28:722:44 | (unsigned long)... | 1.0 | +| test.c:722:28:722:49 | ... * ... | 1.0 | +| test.c:722:43:722:44 | ui | 1.0 | +| test.c:722:48:722:49 | (unsigned long)... | 1.0 | +| test.c:722:48:722:49 | ui | 1.0 | +| test.c:723:12:723:17 | result | 1.0 | +| test.c:725:7:725:8 | ul | 1.0 | +| test.c:725:7:725:14 | ... >= ... | 1.0 | +| test.c:725:13:725:14 | 10 | 1.0 | +| test.c:725:13:725:14 | (unsigned long)... | 1.0 | +| test.c:726:28:726:29 | ul | 1.0 | +| test.c:726:28:726:34 | ... * ... | 1.0 | +| test.c:726:33:726:34 | ul | 1.0 | +| test.c:727:12:727:17 | result | 1.0 | +| test.c:729:10:729:10 | 0 | 1.0 | +| test.c:729:10:729:10 | (unsigned long)... | 1.0 | +| test.c:733:7:733:8 | ui | 1.0 | +| test.c:733:7:733:14 | ... <= ... | 1.0 | +| test.c:733:7:733:25 | ... && ... | 1.0 | +| test.c:733:13:733:14 | 10 | 1.0 | +| test.c:733:13:733:14 | (unsigned int)... | 1.0 | +| test.c:733:19:733:20 | ui | 1.0 | +| test.c:733:19:733:25 | ... >= ... | 1.0 | +| test.c:733:25:733:25 | 2 | 1.0 | +| test.c:733:25:733:25 | (unsigned int)... | 1.0 | +| test.c:734:5:734:6 | ui | 1.0 | +| test.c:734:5:734:16 | ... *= ... | 1.0 | +| test.c:734:11:734:12 | ui | 1.0 | +| test.c:734:11:734:16 | ... + ... | 1.0 | +| test.c:734:16:734:16 | 0 | 1.0 | +| test.c:734:16:734:16 | (unsigned int)... | 1.0 | +| test.c:735:12:735:13 | (unsigned long)... | 1.0 | +| test.c:735:12:735:13 | ui | 1.0 | +| test.c:738:26:738:27 | 10 | 1.0 | +| test.c:738:26:738:27 | (unsigned int)... | 1.0 | +| test.c:739:3:739:9 | uiconst | 1.0 | +| test.c:739:3:739:14 | ... *= ... | 1.0 | +| test.c:739:14:739:14 | 4 | 1.0 | +| test.c:739:14:739:14 | (unsigned int)... | 1.0 | +| test.c:741:27:741:28 | 10 | 1.0 | +| test.c:741:27:741:28 | (unsigned long)... | 1.0 | +| test.c:742:3:742:9 | ulconst | 1.0 | +| test.c:742:3:742:14 | ... *= ... | 1.0 | +| test.c:742:14:742:14 | 4 | 1.0 | +| test.c:742:14:742:14 | (unsigned long)... | 1.0 | +| test.c:743:10:743:16 | (unsigned long)... | 1.0 | +| test.c:743:10:743:16 | uiconst | 1.0 | +| test.c:743:10:743:26 | ... + ... | 1.0 | +| test.c:743:20:743:26 | ulconst | 1.0 | +| test.c:747:7:747:7 | i | 1.0 | +| test.c:747:7:747:13 | ... >= ... | 1.0 | +| test.c:747:7:747:23 | ... && ... | 1.0 | +| test.c:747:12:747:13 | - ... | 1.0 | +| test.c:747:13:747:13 | 1 | 1.0 | +| test.c:747:18:747:18 | i | 1.0 | +| test.c:747:18:747:23 | ... <= ... | 1.0 | +| test.c:747:23:747:23 | 2 | 1.0 | +| test.c:748:5:748:5 | i | 1.0 | +| test.c:748:5:748:13 | ... = ... | 1.0 | +| test.c:748:9:748:9 | 5 | 1.0 | +| test.c:748:9:748:13 | ... * ... | 1.0 | +| test.c:748:13:748:13 | i | 1.0 | +| test.c:749:9:749:9 | i | 1.0 | +| test.c:751:5:751:5 | i | 1.0 | +| test.c:751:5:751:14 | ... = ... | 1.0 | +| test.c:751:9:751:9 | i | 1.0 | +| test.c:751:9:751:14 | ... * ... | 1.0 | +| test.c:751:13:751:14 | - ... | 1.0 | +| test.c:751:14:751:14 | 3 | 1.0 | +| test.c:752:9:752:9 | i | 1.0 | +| test.c:754:5:754:5 | i | 1.0 | +| test.c:754:5:754:10 | ... *= ... | 1.0 | +| test.c:754:10:754:10 | 7 | 1.0 | +| test.c:755:9:755:9 | i | 1.0 | +| test.c:757:5:757:5 | i | 1.0 | +| test.c:757:5:757:12 | ... *= ... | 1.0 | +| test.c:757:10:757:12 | - ... | 1.0 | +| test.c:757:11:757:12 | 11 | 1.0 | +| test.c:758:9:758:9 | i | 1.0 | +| test.c:760:7:760:7 | i | 2.0 | +| test.c:760:7:760:13 | ... == ... | 1.0 | +| test.c:760:12:760:13 | - ... | 1.0 | +| test.c:760:13:760:13 | 1 | 1.0 | +| test.c:761:5:761:5 | i | 1.0 | +| test.c:761:5:761:27 | ... = ... | 2.0 | +| test.c:761:9:761:9 | i | 2.0 | +| test.c:761:9:761:27 | ... * ... | 2.0 | +| test.c:761:13:761:27 | (int)... | 1.0 | +| test.c:761:18:761:27 | 4294967295 | 1.0 | +| test.c:762:9:762:9 | i | 2.0 | +| test.c:764:3:764:3 | i | 1.0 | +| test.c:764:3:764:12 | ... = ... | 4.0 | +| test.c:764:7:764:7 | i | 4.0 | +| test.c:764:7:764:12 | ... * ... | 4.0 | +| test.c:764:11:764:12 | - ... | 1.0 | +| test.c:764:12:764:12 | 1 | 1.0 | +| test.c:765:10:765:10 | i | 4.0 | +| test.c:767:20:767:20 | 1 | 1.0 | +| test.c:767:20:767:20 | (signed char)... | 1.0 | +| test.c:768:3:768:3 | i | 1.0 | +| test.c:768:3:768:17 | ... = ... | 1.0 | +| test.c:768:7:768:17 | (...) | 1.0 | +| test.c:768:7:768:17 | (int)... | 1.0 | +| test.c:768:8:768:11 | * ... | 1.0 | +| test.c:768:8:768:16 | ... *= ... | 1.0 | +| test.c:768:10:768:11 | sc | 1.0 | +| test.c:768:16:768:16 | 2 | 1.0 | +| test.c:770:7:770:7 | i | 1.0 | +| test.c:772:10:772:10 | 0 | 1.0 | +| test.c:777:7:777:7 | (int)... | 1.0 | +| test.c:777:7:777:7 | n | 1.0 | +| test.c:779:7:779:7 | n | 1.0 | +| test.c:779:7:779:11 | ... > ... | 1.0 | +| test.c:779:11:779:11 | 0 | 1.0 | +| test.c:779:11:779:11 | (unsigned int)... | 1.0 | +| test.c:780:9:780:9 | (int)... | 1.0 | +| test.c:780:9:780:9 | n | 1.0 | +| test.c:783:7:783:7 | n | 2.0 | +| test.c:783:7:783:12 | ... != ... | 1.0 | +| test.c:783:12:783:12 | 0 | 1.0 | +| test.c:783:12:783:12 | (unsigned int)... | 1.0 | +| test.c:784:9:784:9 | (int)... | 2.0 | +| test.c:784:9:784:9 | n | 2.0 | +| test.c:786:9:786:9 | (int)... | 2.0 | +| test.c:786:9:786:9 | n | 2.0 | +| test.c:789:7:789:8 | ! ... | 1.0 | +| test.c:789:8:789:8 | n | 4.0 | +| test.c:790:9:790:9 | (int)... | 4.0 | +| test.c:790:9:790:9 | n | 4.0 | +| test.c:792:9:792:9 | (int)... | 4.0 | +| test.c:792:9:792:9 | n | 4.0 | +| test.c:795:10:795:10 | n | 13.0 | +| test.c:795:10:795:15 | ... != ... | 1.0 | +| test.c:795:15:795:15 | 0 | 1.0 | +| test.c:795:15:795:15 | (unsigned int)... | 1.0 | +| test.c:796:5:796:5 | n | 13.0 | +| test.c:796:5:796:7 | ... -- | 13.0 | +| test.c:799:7:799:7 | (int)... | 13.0 | +| test.c:799:7:799:7 | n | 13.0 | +| test.c:803:7:803:7 | (int)... | 1.0 | +| test.c:803:7:803:7 | n | 1.0 | +| test.c:803:7:803:11 | ... < ... | 1.0 | +| test.c:803:11:803:11 | 0 | 1.0 | +| test.c:806:7:806:7 | (int)... | 1.0 | +| test.c:806:7:806:7 | n | 1.0 | +| test.c:806:7:806:12 | ... == ... | 1.0 | +| test.c:806:12:806:12 | 0 | 1.0 | +| test.c:807:9:807:9 | (int)... | 1.0 | +| test.c:807:9:807:9 | n | 1.0 | +| test.c:809:9:809:9 | (int)... | 1.0 | +| test.c:809:9:809:9 | n | 1.0 | +| test.c:812:7:812:7 | n | 2.0 | +| test.c:813:9:813:9 | (int)... | 2.0 | +| test.c:813:9:813:9 | n | 2.0 | +| test.c:815:9:815:9 | (int)... | 2.0 | +| test.c:815:9:815:9 | n | 2.0 | +| test.c:818:10:818:10 | (int)... | 13.0 | +| test.c:818:10:818:10 | n | 13.0 | +| test.c:818:10:818:15 | ... != ... | 1.0 | +| test.c:818:15:818:15 | 0 | 1.0 | +| test.c:819:5:819:5 | n | 13.0 | +| test.c:819:5:819:7 | ... -- | 13.0 | +| test.c:822:7:822:7 | (int)... | 13.0 | +| test.c:822:7:822:7 | n | 13.0 | +| test.c:826:7:826:7 | (int)... | 1.0 | +| test.c:826:7:826:7 | n | 1.0 | +| test.c:826:7:826:12 | ... != ... | 1.0 | +| test.c:826:12:826:12 | 0 | 1.0 | +| test.c:827:9:827:9 | (int)... | 1.0 | +| test.c:827:9:827:9 | n | 1.0 | +| test.c:827:9:827:14 | ... >= ... | 1.0 | +| test.c:827:14:827:14 | 0 | 1.0 | +| test.c:828:11:828:11 | (int)... | 1.0 | +| test.c:828:11:828:11 | n | 1.0 | +| test.c:832:7:832:7 | (int)... | 2.0 | +| test.c:832:7:832:7 | n | 2.0 | +| test.c:832:7:832:12 | ... >= ... | 1.0 | +| test.c:832:12:832:12 | 5 | 1.0 | +| test.c:833:9:833:9 | 2 | 1.0 | +| test.c:833:9:833:13 | ... * ... | 2.0 | +| test.c:833:9:833:18 | ... - ... | 2.0 | +| test.c:833:9:833:23 | ... == ... | 1.0 | +| test.c:833:13:833:13 | (int)... | 2.0 | +| test.c:833:13:833:13 | n | 2.0 | +| test.c:833:17:833:18 | 10 | 1.0 | +| test.c:833:23:833:23 | 0 | 1.0 | +| test.c:836:9:836:9 | (int)... | 2.0 | +| test.c:836:9:836:9 | n | 2.0 | +| test.c:839:7:839:7 | (int)... | 4.0 | +| test.c:839:7:839:7 | n | 4.0 | +| test.c:839:7:839:17 | ... != ... | 1.0 | +| test.c:839:7:839:32 | ... && ... | 1.0 | +| test.c:839:12:839:17 | - ... | 1.0 | +| test.c:839:13:839:17 | 32768 | 1.0 | +| test.c:839:22:839:22 | (int)... | 4.0 | +| test.c:839:22:839:22 | n | 4.0 | +| test.c:839:22:839:32 | ... != ... | 1.0 | +| test.c:839:27:839:32 | - ... | 1.0 | +| test.c:839:28:839:32 | 32767 | 1.0 | +| test.c:840:9:840:9 | (int)... | 4.0 | +| test.c:840:9:840:9 | n | 4.0 | +| test.c:843:7:843:7 | (int)... | 8.0 | +| test.c:843:7:843:7 | n | 8.0 | +| test.c:843:7:843:12 | ... >= ... | 1.0 | +| test.c:843:12:843:12 | 0 | 1.0 | +| test.c:844:5:844:5 | n | 8.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 64.0 | +| test.c:844:10:844:10 | (int)... | 8.0 | +| test.c:844:10:844:10 | n | 8.0 | +| test.c:844:14:844:14 | (int)... | 8.0 | +| test.c:844:14:844:14 | n | 8.0 | +| test.c:845:5:845:6 | ! ... | 1.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 256.0 | +| test.c:845:6:845:6 | n | 16.0 | +| test.c:845:10:845:10 | (int)... | 16.0 | +| test.c:845:10:845:10 | n | 16.0 | +| test.c:845:14:845:14 | (int)... | 16.0 | +| test.c:845:14:845:14 | n | 16.0 | +| test.c:856:7:856:8 | (unsigned long)... | 1.0 | +| test.c:856:7:856:8 | ss | 1.0 | +| test.c:856:7:856:22 | ... < ... | 1.0 | +| test.c:856:12:856:22 | sizeof(int) | 1.0 | +| test.c:857:9:857:10 | (int)... | 1.0 | +| test.c:857:9:857:10 | ss | 1.0 | +| test.c:860:7:860:8 | (int)... | 2.0 | +| test.c:860:7:860:8 | ss | 2.0 | +| test.c:860:7:860:17 | ... < ... | 1.0 | +| test.c:860:12:860:17 | 32769 | 1.0 | +| test.c:861:9:861:10 | (int)... | 2.0 | +| test.c:861:9:861:10 | ss | 2.0 | +| test.c:864:7:864:15 | (int)... | 1.0 | +| test.c:864:7:864:15 | (short)... | 1.0 | +| test.c:864:7:864:20 | ... >= ... | 1.0 | +| test.c:864:14:864:15 | us | 1.0 | +| test.c:864:20:864:20 | 0 | 1.0 | +| test.c:865:9:865:10 | (int)... | 1.0 | +| test.c:865:9:865:10 | us | 1.0 | +| test.c:868:7:868:15 | (int)... | 2.0 | +| test.c:868:7:868:15 | (short)... | 2.0 | +| test.c:868:7:868:21 | ... >= ... | 1.0 | +| test.c:868:14:868:15 | us | 2.0 | +| test.c:868:20:868:21 | - ... | 1.0 | +| test.c:868:21:868:21 | 1 | 1.0 | +| test.c:869:9:869:10 | (int)... | 2.0 | +| test.c:869:9:869:10 | us | 2.0 | +| test.c:872:7:872:8 | (unsigned long)... | 4.0 | +| test.c:872:7:872:8 | ss | 4.0 | +| test.c:872:7:872:23 | ... >= ... | 1.0 | +| test.c:872:13:872:23 | sizeof(int) | 1.0 | +| test.c:873:9:873:10 | (int)... | 4.0 | +| test.c:873:9:873:10 | ss | 4.0 | +| test.c:876:7:876:8 | (int)... | 8.0 | +| test.c:876:7:876:8 | ss | 8.0 | +| test.c:876:7:876:12 | (unsigned long)... | 8.0 | +| test.c:876:7:876:12 | ... + ... | 8.0 | +| test.c:876:7:876:26 | ... < ... | 1.0 | +| test.c:876:12:876:12 | 1 | 1.0 | +| test.c:876:16:876:26 | sizeof(int) | 1.0 | +| test.c:877:9:877:10 | (int)... | 8.0 | +| test.c:877:9:877:10 | ss | 8.0 | +| test.c:883:8:883:8 | s | 1.0 | +| test.c:883:8:883:12 | ... = ... | 1.0 | +| test.c:883:12:883:12 | 0 | 1.0 | +| test.c:883:15:883:15 | s | 13.0 | +| test.c:883:15:883:20 | ... < ... | 1.0 | +| test.c:883:19:883:20 | 10 | 1.0 | +| test.c:883:23:883:23 | s | 13.0 | +| test.c:883:23:883:25 | ... ++ | 13.0 | +| test.c:884:18:884:18 | s | 13.0 | +| test.c:884:18:884:22 | ... + ... | 13.0 | +| test.c:884:22:884:22 | s | 13.0 | +| test.c:885:9:885:14 | result | 13.0 | +| test.c:890:10:890:11 | 0 | 1.0 | +| test.c:891:7:891:7 | i | 1.0 | +| test.c:891:7:891:11 | ... < ... | 1.0 | +| test.c:891:11:891:11 | 0 | 1.0 | +| test.c:892:9:892:9 | i | 1.0 | +| test.c:895:20:895:20 | 0 | 1.0 | +| test.c:895:20:895:20 | (unsigned int)... | 1.0 | +| test.c:896:7:896:7 | u | 1.0 | +| test.c:896:7:896:11 | ... < ... | 1.0 | +| test.c:896:11:896:11 | 0 | 1.0 | +| test.c:896:11:896:11 | (unsigned int)... | 1.0 | +| test.c:897:9:897:9 | (int)... | 1.0 | +| test.c:897:9:897:9 | u | 1.0 | +| test.c:902:12:902:12 | s | 1.0 | +| test.c:902:12:902:16 | ... % ... | 1.0 | +| test.c:902:16:902:16 | 5 | 1.0 | +| test.c:903:7:903:8 | s2 | 1.0 | +| test.c:908:7:908:7 | x | 1.0 | +| test.c:909:9:909:9 | y | 1.0 | +| test.c:909:9:909:14 | ... != ... | 1.0 | +| test.c:909:14:909:14 | 0 | 1.0 | +| test.c:910:12:910:12 | 0 | 1.0 | +| test.c:913:7:913:7 | y | 2.0 | +| test.c:922:7:922:7 | x | 1.0 | +| test.c:922:7:922:13 | ... >= ... | 1.0 | +| test.c:922:12:922:13 | 10 | 1.0 | +| test.c:927:7:927:7 | x | 13.0 | +| test.c:932:16:932:26 | 2147483647 | 1.0 | +| test.c:933:16:933:19 | 256 | 1.0 | +| test.c:934:7:934:13 | (...) | 1.0 | +| test.c:934:7:934:20 | ... <= ... | 1.0 | +| test.c:934:8:934:8 | x | 1.0 | +| test.c:934:8:934:12 | ... + ... | 1.0 | +| test.c:934:12:934:12 | y | 1.0 | +| test.c:934:18:934:20 | 512 | 1.0 | +| test.c:935:9:935:9 | x | 1.0 | +| test.c:936:9:936:9 | y | 1.0 | | test.cpp:9:11:9:12 | - ... | 1.0 | | test.cpp:9:12:9:12 | 1 | 1.0 | | test.cpp:10:7:10:7 | (bool)... | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 936ad1bfcec..1d0415e7a78 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,77 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:420:4:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:420:5:422:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:423:6:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:424:8:442:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:427:10:431:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:427:31:427:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:429:13:431:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:436:12:441:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:437:12:437:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:15:441:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:443:6:462:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:446:8:450:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:446:29:446:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:448:11:450:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:451:6:451:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:455:10:459:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:455:31:455:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:457:13:459:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:460:9:462:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:464:10:483:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:12:472:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:468:12:468:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:470:15:472:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:477:14:482:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:478:14:478:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:480:17:482:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:484:9:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:487:14:492:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:488:14:488:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:490:17:492:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:493:12:493:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:497:12:502:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:498:12:498:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:500:15:502:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:503:11:505:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:506:9:508:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:509:9:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:510:14:529:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:513:16:518:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:514:16:514:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:516:19:518:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:523:18:528:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:524:18:524:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:526:21:528:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:530:12:551:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:533:14:538:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:534:14:534:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:536:17:538:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:539:12:539:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:543:16:548:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:544:16:544:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:546:19:548:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:549:15:551:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:553:12:572:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:556:14:561:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:557:14:557:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:559:17:561:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:566:16:571:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:567:16:567:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:569:19:571:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:573:11:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:576:16:581:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:577:16:577:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:579:19:581:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:582:14:582:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:586:14:591:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:587:14:587:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:589:17:591:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:592:13:594:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:620:20:620:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:832:5:832:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:833:5:833:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:432:5:434:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:435:6:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:436:8:454:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:439:10:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:439:31:439:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:441:13:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:448:12:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:449:12:449:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:451:15:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:455:6:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:458:8:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:458:29:458:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:460:11:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:463:6:463:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:467:10:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:467:31:467:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:469:13:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:472:9:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:476:10:495:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:479:12:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:480:12:480:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:15:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:489:14:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:490:14:490:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:492:17:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:496:9:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:499:14:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:500:14:500:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:502:17:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:509:12:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:510:12:510:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:512:15:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:515:11:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:518:9:520:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:521:9:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:522:14:541:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:16:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:526:16:526:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:528:19:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:535:18:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:18:536:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:538:21:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:542:12:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:545:14:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:546:14:546:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:548:17:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:12:551:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:555:16:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:556:16:556:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:558:19:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:15:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:565:12:584:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:568:14:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:569:14:569:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:17:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:578:16:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:579:16:579:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:581:19:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:585:11:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:588:16:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:589:16:589:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:591:19:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:598:14:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:599:14:599:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:601:17:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:604:13:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:632:20:632:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 5a137f2ec00..4e7d05d9c08 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,77 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:420:4:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:420:5:422:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:423:6:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:424:8:442:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:427:10:431:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:427:31:427:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:429:13:431:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:436:12:441:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:437:12:437:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:15:441:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:443:6:462:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:446:8:450:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:446:29:446:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:448:11:450:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:451:6:451:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:455:10:459:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:455:31:455:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:457:13:459:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:460:9:462:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:464:10:483:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:12:472:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:468:12:468:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:470:15:472:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:477:14:482:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:478:14:478:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:480:17:482:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:484:9:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:487:14:492:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:488:14:488:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:490:17:492:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:493:12:493:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:497:12:502:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:498:12:498:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:500:15:502:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:503:11:505:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:506:9:508:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:509:9:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:510:14:529:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:513:16:518:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:514:16:514:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:516:19:518:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:523:18:528:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:524:18:524:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:526:21:528:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:530:12:551:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:533:14:538:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:534:14:534:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:536:17:538:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:539:12:539:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:543:16:548:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:544:16:544:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:546:19:548:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:549:15:551:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:553:12:572:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:556:14:561:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:557:14:557:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:559:17:561:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:566:16:571:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:567:16:567:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:569:19:571:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:573:11:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:576:16:581:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:577:16:577:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:579:19:581:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:582:14:582:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:586:14:591:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:587:14:587:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:589:17:591:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:592:13:594:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:620:20:620:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:832:5:832:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:833:5:833:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:432:5:434:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:435:6:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:436:8:454:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:439:10:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:439:31:439:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:441:13:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:448:12:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:449:12:449:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:451:15:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:455:6:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:458:8:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:458:29:458:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:460:11:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:463:6:463:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:467:10:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:467:31:467:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:469:13:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:472:9:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:476:10:495:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:479:12:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:480:12:480:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:15:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:489:14:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:490:14:490:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:492:17:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:496:9:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:499:14:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:500:14:500:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:502:17:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:509:12:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:510:12:510:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:512:15:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:515:11:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:518:9:520:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:521:9:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:522:14:541:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:16:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:526:16:526:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:528:19:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:535:18:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:18:536:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:538:21:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:542:12:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:545:14:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:546:14:546:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:548:17:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:12:551:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:555:16:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:556:16:556:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:558:19:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:15:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:565:12:584:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:568:14:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:569:14:569:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:17:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:578:16:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:579:16:579:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:581:19:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:585:11:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:588:16:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:589:16:589:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:591:19:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:598:14:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:599:14:599:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:601:17:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:604:13:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:632:20:632:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index d3d6fffcd2b..61996ffa840 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,6 +413,18 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } +int repeated_if_statements(unsigned int rhs) { + // Test how many bounds we estimate for `if` statements without `else` + // branches where the following node is both a normal phi node and a guard phi + // node. + if (rhs < 12) { rhs << 1; } + if (rhs < 13) { rhs << 1; } + if (rhs < 14) { rhs << 1; } + if (rhs < 15) { rhs << 1; } + if (rhs < 16) { rhs << 1; } + return rhs; // rhs has 6 bounds +} + unsigned int conditional_nested_guards(unsigned int ip) { // This tests a combinatorial explosion that can happen from a large number of // nested linear guards. diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 3e8d8d3baac..d4c776a065d 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,508 +485,519 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:420:10:420:11 | ip | 4294967295 | -| test.c:420:20:420:21 | ip | 4294967295 | -| test.c:420:40:420:41 | ip | 4294967295 | -| test.c:421:14:421:15 | ip | 4294967295 | -| test.c:422:14:422:15 | ip | 4294967295 | -| test.c:422:34:422:35 | ip | 4294967295 | -| test.c:423:11:423:12 | ip | 4294967295 | -| test.c:424:13:424:14 | ip | 4294967295 | -| test.c:425:14:425:15 | ip | 4294967295 | -| test.c:426:14:426:15 | ip | 4294967295 | -| test.c:427:15:427:16 | ip | 4294967295 | -| test.c:427:41:427:42 | ip | 4294967295 | -| test.c:427:52:427:53 | ip | 4294967295 | -| test.c:427:67:427:68 | ip | 4294967295 | -| test.c:427:78:427:79 | ip | 4294967295 | -| test.c:428:18:428:19 | ip | 4294967295 | -| test.c:429:23:429:24 | ip | 4294967295 | -| test.c:429:34:429:35 | ip | 4294967295 | -| test.c:430:25:430:26 | ip | 4294967295 | -| test.c:431:20:431:21 | ip | 4294967295 | -| test.c:432:11:432:12 | ip | 4294967295 | -| test.c:432:26:432:27 | ip | 4294967295 | -| test.c:433:16:433:17 | ip | 4294967295 | -| test.c:434:16:434:17 | ip | 4294967295 | -| test.c:435:16:435:17 | ip | 4294967295 | -| test.c:436:17:436:18 | ip | 4294967295 | -| test.c:437:22:437:23 | ip | 4294967295 | -| test.c:437:33:437:34 | ip | 4294967295 | -| test.c:437:48:437:49 | ip | 4294967295 | -| test.c:437:59:437:60 | ip | 4294967295 | -| test.c:438:20:438:21 | ip | 4294967295 | -| test.c:439:25:439:26 | ip | 4294967295 | -| test.c:439:36:439:37 | ip | 4294967295 | -| test.c:440:27:440:28 | ip | 4294967295 | -| test.c:441:22:441:23 | ip | 4294967295 | -| test.c:442:15:442:16 | ip | 4294967295 | -| test.c:442:30:442:31 | ip | 4294967295 | -| test.c:443:11:443:12 | ip | 4294967295 | -| test.c:444:12:444:13 | ip | 4294967295 | -| test.c:445:12:445:13 | ip | 4294967295 | -| test.c:446:13:446:14 | ip | 4294967295 | -| test.c:446:39:446:40 | ip | 4294967295 | -| test.c:446:50:446:51 | ip | 4294967295 | -| test.c:446:65:446:66 | ip | 4294967295 | -| test.c:446:76:446:77 | ip | 4294967295 | +| test.c:420:7:420:9 | rhs | 4294967295 | +| test.c:420:19:420:21 | rhs | 11 | +| test.c:421:7:421:9 | rhs | 4294967295 | +| test.c:421:19:421:21 | rhs | 12 | +| test.c:422:7:422:9 | rhs | 4294967295 | +| test.c:422:19:422:21 | rhs | 13 | +| test.c:423:7:423:9 | rhs | 4294967295 | +| test.c:423:19:423:21 | rhs | 14 | +| test.c:424:7:424:9 | rhs | 4294967295 | +| test.c:424:19:424:21 | rhs | 15 | +| test.c:425:10:425:12 | rhs | 4294967295 | +| test.c:432:10:432:11 | ip | 4294967295 | +| test.c:432:20:432:21 | ip | 4294967295 | +| test.c:432:40:432:41 | ip | 4294967295 | +| test.c:433:14:433:15 | ip | 4294967295 | +| test.c:434:14:434:15 | ip | 4294967295 | +| test.c:434:34:434:35 | ip | 4294967295 | +| test.c:435:11:435:12 | ip | 4294967295 | +| test.c:436:13:436:14 | ip | 4294967295 | +| test.c:437:14:437:15 | ip | 4294967295 | +| test.c:438:14:438:15 | ip | 4294967295 | +| test.c:439:15:439:16 | ip | 4294967295 | +| test.c:439:41:439:42 | ip | 4294967295 | +| test.c:439:52:439:53 | ip | 4294967295 | +| test.c:439:67:439:68 | ip | 4294967295 | +| test.c:439:78:439:79 | ip | 4294967295 | +| test.c:440:18:440:19 | ip | 4294967295 | +| test.c:441:23:441:24 | ip | 4294967295 | +| test.c:441:34:441:35 | ip | 4294967295 | +| test.c:442:25:442:26 | ip | 4294967295 | +| test.c:443:20:443:21 | ip | 4294967295 | +| test.c:444:11:444:12 | ip | 4294967295 | +| test.c:444:26:444:27 | ip | 4294967295 | +| test.c:445:16:445:17 | ip | 4294967295 | +| test.c:446:16:446:17 | ip | 4294967295 | | test.c:447:16:447:17 | ip | 4294967295 | -| test.c:448:21:448:22 | ip | 4294967295 | -| test.c:448:32:448:33 | ip | 4294967295 | -| test.c:449:23:449:24 | ip | 4294967295 | -| test.c:450:18:450:19 | ip | 4294967295 | -| test.c:451:11:451:12 | ip | 4294967295 | -| test.c:451:17:451:18 | ip | 4294967295 | -| test.c:451:37:451:38 | ip | 4294967295 | -| test.c:451:43:451:44 | ip | 4294967295 | -| test.c:452:14:452:15 | ip | 4294967295 | -| test.c:453:14:453:15 | ip | 4294967295 | -| test.c:454:14:454:15 | ip | 4294967295 | -| test.c:455:15:455:16 | ip | 4294967295 | -| test.c:455:41:455:42 | ip | 4294967295 | -| test.c:455:52:455:53 | ip | 4294967295 | -| test.c:455:67:455:68 | ip | 4294967295 | -| test.c:455:78:455:79 | ip | 4294967295 | -| test.c:456:18:456:19 | ip | 4294967295 | -| test.c:457:23:457:24 | ip | 4294967295 | -| test.c:457:34:457:35 | ip | 4294967295 | -| test.c:458:25:458:26 | ip | 4294967295 | -| test.c:459:20:459:21 | ip | 4294967295 | -| test.c:460:14:460:15 | ip | 4294967295 | -| test.c:460:20:460:21 | ip | 4294967295 | -| test.c:461:16:461:17 | ip | 4294967295 | -| test.c:462:12:462:13 | ip | 4294967295 | -| test.c:463:14:463:15 | ip | 4294967295 | -| test.c:464:15:464:16 | ip | 4294967295 | -| test.c:465:16:465:17 | ip | 4294967295 | -| test.c:466:16:466:17 | ip | 4294967295 | -| test.c:467:17:467:18 | ip | 4294967295 | -| test.c:468:22:468:23 | ip | 4294967295 | -| test.c:468:33:468:34 | ip | 4294967295 | -| test.c:468:48:468:49 | ip | 4294967295 | -| test.c:468:59:468:60 | ip | 4294967295 | -| test.c:469:20:469:21 | ip | 4294967295 | +| test.c:448:17:448:18 | ip | 4294967295 | +| test.c:449:22:449:23 | ip | 4294967295 | +| test.c:449:33:449:34 | ip | 4294967295 | +| test.c:449:48:449:49 | ip | 4294967295 | +| test.c:449:59:449:60 | ip | 4294967295 | +| test.c:450:20:450:21 | ip | 4294967295 | +| test.c:451:25:451:26 | ip | 4294967295 | +| test.c:451:36:451:37 | ip | 4294967295 | +| test.c:452:27:452:28 | ip | 4294967295 | +| test.c:453:22:453:23 | ip | 4294967295 | +| test.c:454:15:454:16 | ip | 4294967295 | +| test.c:454:30:454:31 | ip | 4294967295 | +| test.c:455:11:455:12 | ip | 4294967295 | +| test.c:456:12:456:13 | ip | 4294967295 | +| test.c:457:12:457:13 | ip | 4294967295 | +| test.c:458:13:458:14 | ip | 4294967295 | +| test.c:458:39:458:40 | ip | 4294967295 | +| test.c:458:50:458:51 | ip | 4294967295 | +| test.c:458:65:458:66 | ip | 4294967295 | +| test.c:458:76:458:77 | ip | 4294967295 | +| test.c:459:16:459:17 | ip | 4294967295 | +| test.c:460:21:460:22 | ip | 4294967295 | +| test.c:460:32:460:33 | ip | 4294967295 | +| test.c:461:23:461:24 | ip | 4294967295 | +| test.c:462:18:462:19 | ip | 4294967295 | +| test.c:463:11:463:12 | ip | 4294967295 | +| test.c:463:17:463:18 | ip | 4294967295 | +| test.c:463:37:463:38 | ip | 4294967295 | +| test.c:463:43:463:44 | ip | 4294967295 | +| test.c:464:14:464:15 | ip | 4294967295 | +| test.c:465:14:465:15 | ip | 4294967295 | +| test.c:466:14:466:15 | ip | 4294967295 | +| test.c:467:15:467:16 | ip | 4294967295 | +| test.c:467:41:467:42 | ip | 4294967295 | +| test.c:467:52:467:53 | ip | 4294967295 | +| test.c:467:67:467:68 | ip | 4294967295 | +| test.c:467:78:467:79 | ip | 4294967295 | +| test.c:468:18:468:19 | ip | 4294967295 | +| test.c:469:23:469:24 | ip | 4294967295 | +| test.c:469:34:469:35 | ip | 4294967295 | | test.c:470:25:470:26 | ip | 4294967295 | -| test.c:470:36:470:37 | ip | 4294967295 | -| test.c:471:27:471:28 | ip | 4294967295 | -| test.c:472:22:472:23 | ip | 4294967295 | -| test.c:473:13:473:14 | ip | 4294967295 | -| test.c:473:28:473:29 | ip | 4294967295 | -| test.c:474:18:474:19 | ip | 4294967295 | -| test.c:475:18:475:19 | ip | 4294967295 | -| test.c:476:18:476:19 | ip | 4294967295 | -| test.c:477:19:477:20 | ip | 4294967295 | -| test.c:478:24:478:25 | ip | 4294967295 | -| test.c:478:35:478:36 | ip | 4294967295 | -| test.c:478:50:478:51 | ip | 4294967295 | -| test.c:478:61:478:62 | ip | 4294967295 | -| test.c:479:22:479:23 | ip | 4294967295 | -| test.c:480:27:480:28 | ip | 4294967295 | -| test.c:480:38:480:39 | ip | 4294967295 | -| test.c:481:29:481:30 | ip | 4294967295 | -| test.c:482:24:482:25 | ip | 4294967295 | -| test.c:483:17:483:18 | ip | 4294967295 | -| test.c:483:32:483:33 | ip | 4294967295 | -| test.c:484:14:484:15 | ip | 4294967295 | -| test.c:485:18:485:19 | ip | 4294967295 | +| test.c:471:20:471:21 | ip | 4294967295 | +| test.c:472:14:472:15 | ip | 4294967295 | +| test.c:472:20:472:21 | ip | 4294967295 | +| test.c:473:16:473:17 | ip | 4294967295 | +| test.c:474:12:474:13 | ip | 4294967295 | +| test.c:475:14:475:15 | ip | 4294967295 | +| test.c:476:15:476:16 | ip | 4294967295 | +| test.c:477:16:477:17 | ip | 4294967295 | +| test.c:478:16:478:17 | ip | 4294967295 | +| test.c:479:17:479:18 | ip | 4294967295 | +| test.c:480:22:480:23 | ip | 4294967295 | +| test.c:480:33:480:34 | ip | 4294967295 | +| test.c:480:48:480:49 | ip | 4294967295 | +| test.c:480:59:480:60 | ip | 4294967295 | +| test.c:481:20:481:21 | ip | 4294967295 | +| test.c:482:25:482:26 | ip | 4294967295 | +| test.c:482:36:482:37 | ip | 4294967295 | +| test.c:483:27:483:28 | ip | 4294967295 | +| test.c:484:22:484:23 | ip | 4294967295 | +| test.c:485:13:485:14 | ip | 4294967295 | +| test.c:485:28:485:29 | ip | 4294967295 | | test.c:486:18:486:19 | ip | 4294967295 | -| test.c:487:19:487:20 | ip | 4294967295 | -| test.c:488:24:488:25 | ip | 4294967295 | -| test.c:488:35:488:36 | ip | 4294967295 | -| test.c:488:50:488:51 | ip | 4294967295 | -| test.c:488:61:488:62 | ip | 4294967295 | -| test.c:489:22:489:23 | ip | 4294967295 | -| test.c:490:27:490:28 | ip | 4294967295 | -| test.c:490:38:490:39 | ip | 4294967295 | -| test.c:491:29:491:30 | ip | 4294967295 | -| test.c:492:24:492:25 | ip | 4294967295 | -| test.c:493:17:493:18 | ip | 4294967295 | -| test.c:493:23:493:24 | ip | 4294967295 | -| test.c:493:43:493:44 | ip | 4294967295 | -| test.c:493:49:493:50 | ip | 4294967295 | -| test.c:494:16:494:17 | ip | 4294967295 | -| test.c:495:16:495:17 | ip | 4294967295 | -| test.c:496:16:496:17 | ip | 4294967295 | -| test.c:497:17:497:18 | ip | 4294967295 | -| test.c:498:22:498:23 | ip | 4294967295 | -| test.c:498:33:498:34 | ip | 4294967295 | -| test.c:498:48:498:49 | ip | 4294967295 | -| test.c:498:59:498:60 | ip | 4294967295 | -| test.c:499:20:499:21 | ip | 4294967295 | -| test.c:500:25:500:26 | ip | 4294967295 | -| test.c:500:36:500:37 | ip | 4294967295 | -| test.c:501:27:501:28 | ip | 4294967295 | -| test.c:502:22:502:23 | ip | 4294967295 | -| test.c:503:16:503:17 | ip | 4294967295 | -| test.c:503:22:503:23 | ip | 4294967295 | -| test.c:504:18:504:19 | ip | 4294967295 | -| test.c:505:14:505:15 | ip | 4294967295 | -| test.c:506:14:506:15 | ip | 4294967295 | -| test.c:506:24:506:25 | ip | 4294967295 | -| test.c:506:44:506:45 | ip | 4294967295 | +| test.c:487:18:487:19 | ip | 4294967295 | +| test.c:488:18:488:19 | ip | 4294967295 | +| test.c:489:19:489:20 | ip | 4294967295 | +| test.c:490:24:490:25 | ip | 4294967295 | +| test.c:490:35:490:36 | ip | 4294967295 | +| test.c:490:50:490:51 | ip | 4294967295 | +| test.c:490:61:490:62 | ip | 4294967295 | +| test.c:491:22:491:23 | ip | 4294967295 | +| test.c:492:27:492:28 | ip | 4294967295 | +| test.c:492:38:492:39 | ip | 4294967295 | +| test.c:493:29:493:30 | ip | 4294967295 | +| test.c:494:24:494:25 | ip | 4294967295 | +| test.c:495:17:495:18 | ip | 4294967295 | +| test.c:495:32:495:33 | ip | 4294967295 | +| test.c:496:14:496:15 | ip | 4294967295 | +| test.c:497:18:497:19 | ip | 4294967295 | +| test.c:498:18:498:19 | ip | 4294967295 | +| test.c:499:19:499:20 | ip | 4294967295 | +| test.c:500:24:500:25 | ip | 4294967295 | +| test.c:500:35:500:36 | ip | 4294967295 | +| test.c:500:50:500:51 | ip | 4294967295 | +| test.c:500:61:500:62 | ip | 4294967295 | +| test.c:501:22:501:23 | ip | 4294967295 | +| test.c:502:27:502:28 | ip | 4294967295 | +| test.c:502:38:502:39 | ip | 4294967295 | +| test.c:503:29:503:30 | ip | 4294967295 | +| test.c:504:24:504:25 | ip | 4294967295 | +| test.c:505:17:505:18 | ip | 4294967295 | +| test.c:505:23:505:24 | ip | 4294967295 | +| test.c:505:43:505:44 | ip | 4294967295 | +| test.c:505:49:505:50 | ip | 4294967295 | +| test.c:506:16:506:17 | ip | 4294967295 | | test.c:507:16:507:17 | ip | 4294967295 | | test.c:508:16:508:17 | ip | 4294967295 | -| test.c:508:36:508:37 | ip | 4294967295 | -| test.c:509:14:509:15 | ip | 4294967295 | -| test.c:510:19:510:20 | ip | 4294967295 | +| test.c:509:17:509:18 | ip | 4294967295 | +| test.c:510:22:510:23 | ip | 4294967295 | +| test.c:510:33:510:34 | ip | 4294967295 | +| test.c:510:48:510:49 | ip | 4294967295 | +| test.c:510:59:510:60 | ip | 4294967295 | | test.c:511:20:511:21 | ip | 4294967295 | -| test.c:512:20:512:21 | ip | 4294967295 | -| test.c:513:21:513:22 | ip | 4294967295 | -| test.c:514:26:514:27 | ip | 4294967295 | -| test.c:514:37:514:38 | ip | 4294967295 | -| test.c:514:52:514:53 | ip | 4294967295 | -| test.c:514:63:514:64 | ip | 4294967295 | -| test.c:515:24:515:25 | ip | 4294967295 | -| test.c:516:29:516:30 | ip | 4294967295 | -| test.c:516:40:516:41 | ip | 4294967295 | -| test.c:517:31:517:32 | ip | 4294967295 | -| test.c:518:26:518:27 | ip | 4294967295 | -| test.c:519:17:519:18 | ip | 4294967295 | -| test.c:519:32:519:33 | ip | 4294967295 | -| test.c:520:22:520:23 | ip | 4294967295 | -| test.c:521:22:521:23 | ip | 4294967295 | -| test.c:522:22:522:23 | ip | 4294967295 | -| test.c:523:23:523:24 | ip | 4294967295 | -| test.c:524:28:524:29 | ip | 4294967295 | -| test.c:524:39:524:40 | ip | 4294967295 | -| test.c:524:54:524:55 | ip | 4294967295 | -| test.c:524:65:524:66 | ip | 4294967295 | -| test.c:525:26:525:27 | ip | 4294967295 | -| test.c:526:31:526:32 | ip | 4294967295 | -| test.c:526:42:526:43 | ip | 4294967295 | -| test.c:527:33:527:34 | ip | 4294967295 | -| test.c:528:28:528:29 | ip | 4294967295 | -| test.c:529:21:529:22 | ip | 4294967295 | -| test.c:529:36:529:37 | ip | 4294967295 | -| test.c:530:17:530:18 | ip | 4294967295 | -| test.c:531:18:531:19 | ip | 4294967295 | -| test.c:532:18:532:19 | ip | 4294967295 | -| test.c:533:19:533:20 | ip | 4294967295 | -| test.c:534:24:534:25 | ip | 4294967295 | -| test.c:534:35:534:36 | ip | 4294967295 | -| test.c:534:50:534:51 | ip | 4294967295 | -| test.c:534:61:534:62 | ip | 4294967295 | -| test.c:535:22:535:23 | ip | 4294967295 | -| test.c:536:27:536:28 | ip | 4294967295 | -| test.c:536:38:536:39 | ip | 4294967295 | -| test.c:537:29:537:30 | ip | 4294967295 | -| test.c:538:24:538:25 | ip | 4294967295 | -| test.c:539:17:539:18 | ip | 4294967295 | -| test.c:539:23:539:24 | ip | 4294967295 | -| test.c:539:43:539:44 | ip | 4294967295 | -| test.c:539:49:539:50 | ip | 4294967295 | -| test.c:540:20:540:21 | ip | 4294967295 | -| test.c:541:20:541:21 | ip | 4294967295 | -| test.c:542:20:542:21 | ip | 4294967295 | -| test.c:543:21:543:22 | ip | 4294967295 | -| test.c:544:26:544:27 | ip | 4294967295 | -| test.c:544:37:544:38 | ip | 4294967295 | -| test.c:544:52:544:53 | ip | 4294967295 | -| test.c:544:63:544:64 | ip | 4294967295 | -| test.c:545:24:545:25 | ip | 4294967295 | -| test.c:546:29:546:30 | ip | 4294967295 | -| test.c:546:40:546:41 | ip | 4294967295 | -| test.c:547:31:547:32 | ip | 4294967295 | -| test.c:548:26:548:27 | ip | 4294967295 | -| test.c:549:20:549:21 | ip | 4294967295 | -| test.c:549:26:549:27 | ip | 4294967295 | -| test.c:550:22:550:23 | ip | 4294967295 | -| test.c:551:18:551:19 | ip | 4294967295 | -| test.c:552:16:552:17 | ip | 4294967295 | -| test.c:553:17:553:18 | ip | 4294967295 | -| test.c:554:18:554:19 | ip | 4294967295 | -| test.c:555:18:555:19 | ip | 4294967295 | -| test.c:556:19:556:20 | ip | 4294967295 | +| test.c:512:25:512:26 | ip | 4294967295 | +| test.c:512:36:512:37 | ip | 4294967295 | +| test.c:513:27:513:28 | ip | 4294967295 | +| test.c:514:22:514:23 | ip | 4294967295 | +| test.c:515:16:515:17 | ip | 4294967295 | +| test.c:515:22:515:23 | ip | 4294967295 | +| test.c:516:18:516:19 | ip | 4294967295 | +| test.c:517:14:517:15 | ip | 4294967295 | +| test.c:518:14:518:15 | ip | 4294967295 | +| test.c:518:24:518:25 | ip | 4294967295 | +| test.c:518:44:518:45 | ip | 4294967295 | +| test.c:519:16:519:17 | ip | 4294967295 | +| test.c:520:16:520:17 | ip | 4294967295 | +| test.c:520:36:520:37 | ip | 4294967295 | +| test.c:521:14:521:15 | ip | 4294967295 | +| test.c:522:19:522:20 | ip | 4294967295 | +| test.c:523:20:523:21 | ip | 4294967295 | +| test.c:524:20:524:21 | ip | 4294967295 | +| test.c:525:21:525:22 | ip | 4294967295 | +| test.c:526:26:526:27 | ip | 4294967295 | +| test.c:526:37:526:38 | ip | 4294967295 | +| test.c:526:52:526:53 | ip | 4294967295 | +| test.c:526:63:526:64 | ip | 4294967295 | +| test.c:527:24:527:25 | ip | 4294967295 | +| test.c:528:29:528:30 | ip | 4294967295 | +| test.c:528:40:528:41 | ip | 4294967295 | +| test.c:529:31:529:32 | ip | 4294967295 | +| test.c:530:26:530:27 | ip | 4294967295 | +| test.c:531:17:531:18 | ip | 4294967295 | +| test.c:531:32:531:33 | ip | 4294967295 | +| test.c:532:22:532:23 | ip | 4294967295 | +| test.c:533:22:533:23 | ip | 4294967295 | +| test.c:534:22:534:23 | ip | 4294967295 | +| test.c:535:23:535:24 | ip | 4294967295 | +| test.c:536:28:536:29 | ip | 4294967295 | +| test.c:536:39:536:40 | ip | 4294967295 | +| test.c:536:54:536:55 | ip | 4294967295 | +| test.c:536:65:536:66 | ip | 4294967295 | +| test.c:537:26:537:27 | ip | 4294967295 | +| test.c:538:31:538:32 | ip | 4294967295 | +| test.c:538:42:538:43 | ip | 4294967295 | +| test.c:539:33:539:34 | ip | 4294967295 | +| test.c:540:28:540:29 | ip | 4294967295 | +| test.c:541:21:541:22 | ip | 4294967295 | +| test.c:541:36:541:37 | ip | 4294967295 | +| test.c:542:17:542:18 | ip | 4294967295 | +| test.c:543:18:543:19 | ip | 4294967295 | +| test.c:544:18:544:19 | ip | 4294967295 | +| test.c:545:19:545:20 | ip | 4294967295 | +| test.c:546:24:546:25 | ip | 4294967295 | +| test.c:546:35:546:36 | ip | 4294967295 | +| test.c:546:50:546:51 | ip | 4294967295 | +| test.c:546:61:546:62 | ip | 4294967295 | +| test.c:547:22:547:23 | ip | 4294967295 | +| test.c:548:27:548:28 | ip | 4294967295 | +| test.c:548:38:548:39 | ip | 4294967295 | +| test.c:549:29:549:30 | ip | 4294967295 | +| test.c:550:24:550:25 | ip | 4294967295 | +| test.c:551:17:551:18 | ip | 4294967295 | +| test.c:551:23:551:24 | ip | 4294967295 | +| test.c:551:43:551:44 | ip | 4294967295 | +| test.c:551:49:551:50 | ip | 4294967295 | +| test.c:552:20:552:21 | ip | 4294967295 | +| test.c:553:20:553:21 | ip | 4294967295 | +| test.c:554:20:554:21 | ip | 4294967295 | +| test.c:555:21:555:22 | ip | 4294967295 | +| test.c:556:26:556:27 | ip | 4294967295 | +| test.c:556:37:556:38 | ip | 4294967295 | +| test.c:556:52:556:53 | ip | 4294967295 | +| test.c:556:63:556:64 | ip | 4294967295 | | test.c:557:24:557:25 | ip | 4294967295 | -| test.c:557:35:557:36 | ip | 4294967295 | -| test.c:557:50:557:51 | ip | 4294967295 | -| test.c:557:61:557:62 | ip | 4294967295 | -| test.c:558:22:558:23 | ip | 4294967295 | -| test.c:559:27:559:28 | ip | 4294967295 | -| test.c:559:38:559:39 | ip | 4294967295 | -| test.c:560:29:560:30 | ip | 4294967295 | -| test.c:561:24:561:25 | ip | 4294967295 | -| test.c:562:15:562:16 | ip | 4294967295 | -| test.c:562:30:562:31 | ip | 4294967295 | -| test.c:563:20:563:21 | ip | 4294967295 | -| test.c:564:20:564:21 | ip | 4294967295 | -| test.c:565:20:565:21 | ip | 4294967295 | -| test.c:566:21:566:22 | ip | 4294967295 | -| test.c:567:26:567:27 | ip | 4294967295 | -| test.c:567:37:567:38 | ip | 4294967295 | -| test.c:567:52:567:53 | ip | 4294967295 | -| test.c:567:63:567:64 | ip | 4294967295 | -| test.c:568:24:568:25 | ip | 4294967295 | -| test.c:569:29:569:30 | ip | 4294967295 | -| test.c:569:40:569:41 | ip | 4294967295 | -| test.c:570:31:570:32 | ip | 4294967295 | -| test.c:571:26:571:27 | ip | 4294967295 | -| test.c:572:19:572:20 | ip | 4294967295 | -| test.c:572:34:572:35 | ip | 4294967295 | -| test.c:573:16:573:17 | ip | 4294967295 | -| test.c:574:20:574:21 | ip | 4294967295 | +| test.c:558:29:558:30 | ip | 4294967295 | +| test.c:558:40:558:41 | ip | 4294967295 | +| test.c:559:31:559:32 | ip | 4294967295 | +| test.c:560:26:560:27 | ip | 4294967295 | +| test.c:561:20:561:21 | ip | 4294967295 | +| test.c:561:26:561:27 | ip | 4294967295 | +| test.c:562:22:562:23 | ip | 4294967295 | +| test.c:563:18:563:19 | ip | 4294967295 | +| test.c:564:16:564:17 | ip | 4294967295 | +| test.c:565:17:565:18 | ip | 4294967295 | +| test.c:566:18:566:19 | ip | 4294967295 | +| test.c:567:18:567:19 | ip | 4294967295 | +| test.c:568:19:568:20 | ip | 4294967295 | +| test.c:569:24:569:25 | ip | 4294967295 | +| test.c:569:35:569:36 | ip | 4294967295 | +| test.c:569:50:569:51 | ip | 4294967295 | +| test.c:569:61:569:62 | ip | 4294967295 | +| test.c:570:22:570:23 | ip | 4294967295 | +| test.c:571:27:571:28 | ip | 4294967295 | +| test.c:571:38:571:39 | ip | 4294967295 | +| test.c:572:29:572:30 | ip | 4294967295 | +| test.c:573:24:573:25 | ip | 4294967295 | +| test.c:574:15:574:16 | ip | 4294967295 | +| test.c:574:30:574:31 | ip | 4294967295 | | test.c:575:20:575:21 | ip | 4294967295 | -| test.c:576:21:576:22 | ip | 4294967295 | -| test.c:577:26:577:27 | ip | 4294967295 | -| test.c:577:37:577:38 | ip | 4294967295 | -| test.c:577:52:577:53 | ip | 4294967295 | -| test.c:577:63:577:64 | ip | 4294967295 | -| test.c:578:24:578:25 | ip | 4294967295 | -| test.c:579:29:579:30 | ip | 4294967295 | -| test.c:579:40:579:41 | ip | 4294967295 | -| test.c:580:31:580:32 | ip | 4294967295 | -| test.c:581:26:581:27 | ip | 4294967295 | -| test.c:582:19:582:20 | ip | 4294967295 | -| test.c:582:25:582:26 | ip | 4294967295 | -| test.c:582:45:582:46 | ip | 4294967295 | -| test.c:582:51:582:52 | ip | 4294967295 | -| test.c:583:18:583:19 | ip | 4294967295 | -| test.c:584:18:584:19 | ip | 4294967295 | -| test.c:585:18:585:19 | ip | 4294967295 | -| test.c:586:19:586:20 | ip | 4294967295 | -| test.c:587:24:587:25 | ip | 4294967295 | -| test.c:587:35:587:36 | ip | 4294967295 | -| test.c:587:50:587:51 | ip | 4294967295 | -| test.c:587:61:587:62 | ip | 4294967295 | -| test.c:588:22:588:23 | ip | 4294967295 | -| test.c:589:27:589:28 | ip | 4294967295 | -| test.c:589:38:589:39 | ip | 4294967295 | -| test.c:590:29:590:30 | ip | 4294967295 | -| test.c:591:24:591:25 | ip | 4294967295 | -| test.c:592:18:592:19 | ip | 4294967295 | -| test.c:592:24:592:25 | ip | 4294967295 | -| test.c:593:20:593:21 | ip | 4294967295 | -| test.c:594:16:594:17 | ip | 4294967295 | -| test.c:595:10:595:23 | special_number | 4294967295 | -| test.c:603:7:603:8 | c1 | 2147483647 | -| test.c:603:13:603:13 | x | 0 | -| test.c:604:7:604:8 | c2 | 2147483647 | -| test.c:604:13:604:13 | x | 748596 | -| test.c:605:7:605:8 | c3 | 2147483647 | -| test.c:605:13:605:13 | x | 85400991 | -| test.c:606:7:606:8 | c4 | 2147483647 | -| test.c:606:13:606:13 | x | 89076886 | -| test.c:607:7:607:8 | c5 | 2147483647 | -| test.c:607:13:607:13 | x | 89175520 | -| test.c:608:7:608:8 | c1 | 2147483647 | -| test.c:608:13:608:14 | c2 | 2147483647 | -| test.c:608:19:608:19 | x | 97010505 | -| test.c:609:7:609:8 | c1 | 2147483647 | -| test.c:609:13:609:14 | c3 | 2147483647 | -| test.c:609:19:609:19 | x | 1035467903 | -| test.c:610:7:610:8 | c1 | 2147483647 | -| test.c:610:13:610:14 | c4 | 2147483647 | -| test.c:610:19:610:19 | x | 1109363551 | -| test.c:611:7:611:8 | c1 | 2147483647 | -| test.c:611:13:611:14 | c5 | 2147483647 | -| test.c:611:19:611:19 | x | 1121708983 | -| test.c:612:7:612:8 | c2 | 2147483647 | -| test.c:612:13:612:14 | c3 | 2147483647 | -| test.c:612:19:612:19 | x | 1121747830 | -| test.c:614:11:614:11 | x | 2147483647 | -| test.c:614:15:614:15 | x | 2147483647 | -| test.c:614:19:614:19 | x | 2147483647 | -| test.c:614:23:614:23 | x | 2147483647 | -| test.c:614:27:614:27 | x | 2147483647 | -| test.c:614:31:614:31 | x | 2147483647 | -| test.c:614:35:614:35 | x | 2147483647 | -| test.c:614:39:614:39 | x | 2147483647 | -| test.c:614:43:614:43 | x | 2147483647 | -| test.c:614:47:614:47 | x | 2147483647 | -| test.c:614:51:614:51 | x | 2147483647 | -| test.c:614:55:614:55 | x | 2147483647 | -| test.c:615:10:615:10 | y | 2147483647 | -| test.c:620:20:620:20 | x | 4294967295 | -| test.c:620:30:620:30 | x | 99 | -| test.c:623:3:623:4 | y1 | 4294967295 | -| test.c:623:11:623:11 | y | 100 | -| test.c:623:14:623:14 | y | 101 | -| test.c:624:3:624:4 | y2 | 4294967295 | -| test.c:624:9:624:9 | y | 101 | -| test.c:624:14:624:14 | y | 102 | -| test.c:624:22:624:22 | y | 105 | -| test.c:625:10:625:11 | y1 | 101 | -| test.c:625:15:625:16 | y2 | 105 | -| test.c:633:3:633:3 | i | 2147483647 | -| test.c:634:7:634:7 | i | 10 | -| test.c:636:3:636:3 | i | 2147483647 | -| test.c:637:3:637:3 | i | 10 | -| test.c:638:7:638:7 | i | 20 | -| test.c:640:3:640:3 | i | 2147483647 | -| test.c:641:3:641:3 | i | 40 | -| test.c:642:7:642:7 | i | 30 | -| test.c:644:3:644:3 | i | 2147483647 | -| test.c:644:7:644:7 | j | 2147483647 | -| test.c:645:7:645:7 | i | 40 | -| test.c:647:3:647:3 | i | 2147483647 | -| test.c:647:8:647:8 | j | 40 | -| test.c:648:7:648:7 | i | 50 | -| test.c:650:3:650:3 | i | 2147483647 | -| test.c:650:13:650:13 | j | 50 | -| test.c:651:7:651:7 | i | 60 | -| test.c:658:12:658:12 | a | 4294967295 | -| test.c:658:17:658:17 | a | 4294967295 | -| test.c:658:33:658:33 | b | 4294967295 | -| test.c:658:38:658:38 | b | 4294967295 | -| test.c:659:13:659:13 | a | 11 | -| test.c:659:15:659:15 | b | 23 | -| test.c:660:5:660:9 | total | 0 | -| test.c:660:14:660:14 | r | 253 | -| test.c:662:12:662:12 | a | 4294967295 | -| test.c:662:17:662:17 | a | 4294967295 | -| test.c:662:33:662:33 | b | 4294967295 | -| test.c:662:38:662:38 | b | 4294967295 | -| test.c:663:13:663:13 | a | 11 | -| test.c:663:15:663:15 | b | 23 | -| test.c:664:5:664:9 | total | 253 | -| test.c:664:14:664:14 | r | 253 | -| test.c:666:12:666:12 | a | 4294967295 | -| test.c:666:17:666:17 | a | 4294967295 | -| test.c:666:34:666:34 | b | 4294967295 | -| test.c:666:39:666:39 | b | 4294967295 | -| test.c:667:13:667:13 | a | 11 | -| test.c:667:15:667:15 | b | 23 | -| test.c:668:5:668:9 | total | 506 | -| test.c:668:14:668:14 | r | 253 | -| test.c:671:10:671:14 | total | 759 | -| test.c:677:12:677:12 | b | 4294967295 | -| test.c:677:17:677:17 | b | 4294967295 | -| test.c:678:16:678:16 | b | 23 | -| test.c:679:5:679:9 | total | 0 | -| test.c:679:14:679:14 | r | 253 | -| test.c:681:12:681:12 | b | 4294967295 | -| test.c:681:17:681:17 | b | 4294967295 | -| test.c:682:16:682:16 | b | 23 | -| test.c:683:5:683:9 | total | 253 | -| test.c:683:14:683:14 | r | 253 | -| test.c:685:13:685:13 | b | 4294967295 | -| test.c:685:18:685:18 | b | 4294967295 | -| test.c:686:16:686:16 | b | 23 | -| test.c:687:5:687:9 | total | 506 | -| test.c:687:14:687:14 | r | 253 | -| test.c:690:10:690:14 | total | 759 | -| test.c:695:3:695:3 | x | 18446744073709551616 | -| test.c:695:7:695:7 | y | 18446744073709551616 | -| test.c:696:3:696:4 | xy | 18446744073709551616 | -| test.c:696:8:696:8 | x | 1000000003 | -| test.c:696:12:696:12 | y | 1000000003 | -| test.c:697:10:697:11 | xy | 1000000006000000000 | -| test.c:702:3:702:3 | x | 18446744073709551616 | -| test.c:703:3:703:3 | y | 18446744073709551616 | -| test.c:704:3:704:4 | xy | 18446744073709551616 | -| test.c:704:8:704:8 | x | 274177 | -| test.c:704:12:704:12 | y | 67280421310721 | -| test.c:705:10:705:11 | xy | 18446744073709551616 | -| test.c:709:7:709:8 | ui | 4294967295 | -| test.c:710:43:710:44 | ui | 4294967295 | -| test.c:710:48:710:49 | ui | 4294967295 | -| test.c:711:12:711:17 | result | 18446744065119617024 | -| test.c:713:7:713:8 | ul | 18446744073709551616 | -| test.c:714:28:714:29 | ul | 18446744073709551616 | -| test.c:714:33:714:34 | ul | 18446744073709551616 | -| test.c:715:12:715:17 | result | 18446744073709551616 | +| test.c:576:20:576:21 | ip | 4294967295 | +| test.c:577:20:577:21 | ip | 4294967295 | +| test.c:578:21:578:22 | ip | 4294967295 | +| test.c:579:26:579:27 | ip | 4294967295 | +| test.c:579:37:579:38 | ip | 4294967295 | +| test.c:579:52:579:53 | ip | 4294967295 | +| test.c:579:63:579:64 | ip | 4294967295 | +| test.c:580:24:580:25 | ip | 4294967295 | +| test.c:581:29:581:30 | ip | 4294967295 | +| test.c:581:40:581:41 | ip | 4294967295 | +| test.c:582:31:582:32 | ip | 4294967295 | +| test.c:583:26:583:27 | ip | 4294967295 | +| test.c:584:19:584:20 | ip | 4294967295 | +| test.c:584:34:584:35 | ip | 4294967295 | +| test.c:585:16:585:17 | ip | 4294967295 | +| test.c:586:20:586:21 | ip | 4294967295 | +| test.c:587:20:587:21 | ip | 4294967295 | +| test.c:588:21:588:22 | ip | 4294967295 | +| test.c:589:26:589:27 | ip | 4294967295 | +| test.c:589:37:589:38 | ip | 4294967295 | +| test.c:589:52:589:53 | ip | 4294967295 | +| test.c:589:63:589:64 | ip | 4294967295 | +| test.c:590:24:590:25 | ip | 4294967295 | +| test.c:591:29:591:30 | ip | 4294967295 | +| test.c:591:40:591:41 | ip | 4294967295 | +| test.c:592:31:592:32 | ip | 4294967295 | +| test.c:593:26:593:27 | ip | 4294967295 | +| test.c:594:19:594:20 | ip | 4294967295 | +| test.c:594:25:594:26 | ip | 4294967295 | +| test.c:594:45:594:46 | ip | 4294967295 | +| test.c:594:51:594:52 | ip | 4294967295 | +| test.c:595:18:595:19 | ip | 4294967295 | +| test.c:596:18:596:19 | ip | 4294967295 | +| test.c:597:18:597:19 | ip | 4294967295 | +| test.c:598:19:598:20 | ip | 4294967295 | +| test.c:599:24:599:25 | ip | 4294967295 | +| test.c:599:35:599:36 | ip | 4294967295 | +| test.c:599:50:599:51 | ip | 4294967295 | +| test.c:599:61:599:62 | ip | 4294967295 | +| test.c:600:22:600:23 | ip | 4294967295 | +| test.c:601:27:601:28 | ip | 4294967295 | +| test.c:601:38:601:39 | ip | 4294967295 | +| test.c:602:29:602:30 | ip | 4294967295 | +| test.c:603:24:603:25 | ip | 4294967295 | +| test.c:604:18:604:19 | ip | 4294967295 | +| test.c:604:24:604:25 | ip | 4294967295 | +| test.c:605:20:605:21 | ip | 4294967295 | +| test.c:606:16:606:17 | ip | 4294967295 | +| test.c:607:10:607:23 | special_number | 4294967295 | +| test.c:615:7:615:8 | c1 | 2147483647 | +| test.c:615:13:615:13 | x | 0 | +| test.c:616:7:616:8 | c2 | 2147483647 | +| test.c:616:13:616:13 | x | 748596 | +| test.c:617:7:617:8 | c3 | 2147483647 | +| test.c:617:13:617:13 | x | 85400991 | +| test.c:618:7:618:8 | c4 | 2147483647 | +| test.c:618:13:618:13 | x | 89076886 | +| test.c:619:7:619:8 | c5 | 2147483647 | +| test.c:619:13:619:13 | x | 89175520 | +| test.c:620:7:620:8 | c1 | 2147483647 | +| test.c:620:13:620:14 | c2 | 2147483647 | +| test.c:620:19:620:19 | x | 97010505 | +| test.c:621:7:621:8 | c1 | 2147483647 | +| test.c:621:13:621:14 | c3 | 2147483647 | +| test.c:621:19:621:19 | x | 1035467903 | +| test.c:622:7:622:8 | c1 | 2147483647 | +| test.c:622:13:622:14 | c4 | 2147483647 | +| test.c:622:19:622:19 | x | 1109363551 | +| test.c:623:7:623:8 | c1 | 2147483647 | +| test.c:623:13:623:14 | c5 | 2147483647 | +| test.c:623:19:623:19 | x | 1121708983 | +| test.c:624:7:624:8 | c2 | 2147483647 | +| test.c:624:13:624:14 | c3 | 2147483647 | +| test.c:624:19:624:19 | x | 1121747830 | +| test.c:626:11:626:11 | x | 2147483647 | +| test.c:626:15:626:15 | x | 2147483647 | +| test.c:626:19:626:19 | x | 2147483647 | +| test.c:626:23:626:23 | x | 2147483647 | +| test.c:626:27:626:27 | x | 2147483647 | +| test.c:626:31:626:31 | x | 2147483647 | +| test.c:626:35:626:35 | x | 2147483647 | +| test.c:626:39:626:39 | x | 2147483647 | +| test.c:626:43:626:43 | x | 2147483647 | +| test.c:626:47:626:47 | x | 2147483647 | +| test.c:626:51:626:51 | x | 2147483647 | +| test.c:626:55:626:55 | x | 2147483647 | +| test.c:627:10:627:10 | y | 2147483647 | +| test.c:632:20:632:20 | x | 4294967295 | +| test.c:632:30:632:30 | x | 99 | +| test.c:635:3:635:4 | y1 | 4294967295 | +| test.c:635:11:635:11 | y | 100 | +| test.c:635:14:635:14 | y | 101 | +| test.c:636:3:636:4 | y2 | 4294967295 | +| test.c:636:9:636:9 | y | 101 | +| test.c:636:14:636:14 | y | 102 | +| test.c:636:22:636:22 | y | 105 | +| test.c:637:10:637:11 | y1 | 101 | +| test.c:637:15:637:16 | y2 | 105 | +| test.c:645:3:645:3 | i | 2147483647 | +| test.c:646:7:646:7 | i | 10 | +| test.c:648:3:648:3 | i | 2147483647 | +| test.c:649:3:649:3 | i | 10 | +| test.c:650:7:650:7 | i | 20 | +| test.c:652:3:652:3 | i | 2147483647 | +| test.c:653:3:653:3 | i | 40 | +| test.c:654:7:654:7 | i | 30 | +| test.c:656:3:656:3 | i | 2147483647 | +| test.c:656:7:656:7 | j | 2147483647 | +| test.c:657:7:657:7 | i | 40 | +| test.c:659:3:659:3 | i | 2147483647 | +| test.c:659:8:659:8 | j | 40 | +| test.c:660:7:660:7 | i | 50 | +| test.c:662:3:662:3 | i | 2147483647 | +| test.c:662:13:662:13 | j | 50 | +| test.c:663:7:663:7 | i | 60 | +| test.c:670:12:670:12 | a | 4294967295 | +| test.c:670:17:670:17 | a | 4294967295 | +| test.c:670:33:670:33 | b | 4294967295 | +| test.c:670:38:670:38 | b | 4294967295 | +| test.c:671:13:671:13 | a | 11 | +| test.c:671:15:671:15 | b | 23 | +| test.c:672:5:672:9 | total | 0 | +| test.c:672:14:672:14 | r | 253 | +| test.c:674:12:674:12 | a | 4294967295 | +| test.c:674:17:674:17 | a | 4294967295 | +| test.c:674:33:674:33 | b | 4294967295 | +| test.c:674:38:674:38 | b | 4294967295 | +| test.c:675:13:675:13 | a | 11 | +| test.c:675:15:675:15 | b | 23 | +| test.c:676:5:676:9 | total | 253 | +| test.c:676:14:676:14 | r | 253 | +| test.c:678:12:678:12 | a | 4294967295 | +| test.c:678:17:678:17 | a | 4294967295 | +| test.c:678:34:678:34 | b | 4294967295 | +| test.c:678:39:678:39 | b | 4294967295 | +| test.c:679:13:679:13 | a | 11 | +| test.c:679:15:679:15 | b | 23 | +| test.c:680:5:680:9 | total | 506 | +| test.c:680:14:680:14 | r | 253 | +| test.c:683:10:683:14 | total | 759 | +| test.c:689:12:689:12 | b | 4294967295 | +| test.c:689:17:689:17 | b | 4294967295 | +| test.c:690:16:690:16 | b | 23 | +| test.c:691:5:691:9 | total | 0 | +| test.c:691:14:691:14 | r | 253 | +| test.c:693:12:693:12 | b | 4294967295 | +| test.c:693:17:693:17 | b | 4294967295 | +| test.c:694:16:694:16 | b | 23 | +| test.c:695:5:695:9 | total | 253 | +| test.c:695:14:695:14 | r | 253 | +| test.c:697:13:697:13 | b | 4294967295 | +| test.c:697:18:697:18 | b | 4294967295 | +| test.c:698:16:698:16 | b | 23 | +| test.c:699:5:699:9 | total | 506 | +| test.c:699:14:699:14 | r | 253 | +| test.c:702:10:702:14 | total | 759 | +| test.c:707:3:707:3 | x | 18446744073709551616 | +| test.c:707:7:707:7 | y | 18446744073709551616 | +| test.c:708:3:708:4 | xy | 18446744073709551616 | +| test.c:708:8:708:8 | x | 1000000003 | +| test.c:708:12:708:12 | y | 1000000003 | +| test.c:709:10:709:11 | xy | 1000000006000000000 | +| test.c:714:3:714:3 | x | 18446744073709551616 | +| test.c:715:3:715:3 | y | 18446744073709551616 | +| test.c:716:3:716:4 | xy | 18446744073709551616 | +| test.c:716:8:716:8 | x | 274177 | +| test.c:716:12:716:12 | y | 67280421310721 | +| test.c:717:10:717:11 | xy | 18446744073709551616 | | test.c:721:7:721:8 | ui | 4294967295 | -| test.c:721:19:721:20 | ui | 10 | -| test.c:722:5:722:6 | ui | 10 | -| test.c:722:11:722:12 | ui | 10 | -| test.c:723:12:723:13 | ui | 100 | -| test.c:727:3:727:9 | uiconst | 10 | -| test.c:730:3:730:9 | ulconst | 10 | -| test.c:731:10:731:16 | uiconst | 40 | -| test.c:731:20:731:26 | ulconst | 40 | -| test.c:735:7:735:7 | i | 2147483647 | -| test.c:735:18:735:18 | i | 2147483647 | -| test.c:736:5:736:5 | i | 2147483647 | -| test.c:736:13:736:13 | i | 2 | -| test.c:737:9:737:9 | i | 10 | -| test.c:739:5:739:5 | i | 2147483647 | -| test.c:739:9:739:9 | i | 10 | -| test.c:740:9:740:9 | i | 15 | -| test.c:742:5:742:5 | i | 15 | -| test.c:743:9:743:9 | i | 105 | -| test.c:745:5:745:5 | i | 105 | -| test.c:746:9:746:9 | i | 2310 | -| test.c:748:7:748:7 | i | 2147483647 | -| test.c:749:5:749:5 | i | 2147483647 | -| test.c:749:9:749:9 | i | -1 | -| test.c:750:9:750:9 | i | 1 | -| test.c:752:3:752:3 | i | 2147483647 | -| test.c:752:7:752:7 | i | 2147483647 | -| test.c:753:10:753:10 | i | 2147483647 | -| test.c:756:3:756:3 | i | 2147483647 | -| test.c:756:10:756:11 | sc | 1 | -| test.c:758:7:758:7 | i | 127 | -| test.c:765:7:765:7 | n | 4294967295 | -| test.c:767:7:767:7 | n | 4294967295 | -| test.c:768:9:768:9 | n | 4294967295 | -| test.c:771:7:771:7 | n | 4294967295 | -| test.c:772:9:772:9 | n | 4294967295 | -| test.c:774:9:774:9 | n | 0 | -| test.c:777:8:777:8 | n | 4294967295 | -| test.c:778:9:778:9 | n | 0 | +| test.c:722:43:722:44 | ui | 4294967295 | +| test.c:722:48:722:49 | ui | 4294967295 | +| test.c:723:12:723:17 | result | 18446744065119617024 | +| test.c:725:7:725:8 | ul | 18446744073709551616 | +| test.c:726:28:726:29 | ul | 18446744073709551616 | +| test.c:726:33:726:34 | ul | 18446744073709551616 | +| test.c:727:12:727:17 | result | 18446744073709551616 | +| test.c:733:7:733:8 | ui | 4294967295 | +| test.c:733:19:733:20 | ui | 10 | +| test.c:734:5:734:6 | ui | 10 | +| test.c:734:11:734:12 | ui | 10 | +| test.c:735:12:735:13 | ui | 100 | +| test.c:739:3:739:9 | uiconst | 10 | +| test.c:742:3:742:9 | ulconst | 10 | +| test.c:743:10:743:16 | uiconst | 40 | +| test.c:743:20:743:26 | ulconst | 40 | +| test.c:747:7:747:7 | i | 2147483647 | +| test.c:747:18:747:18 | i | 2147483647 | +| test.c:748:5:748:5 | i | 2147483647 | +| test.c:748:13:748:13 | i | 2 | +| test.c:749:9:749:9 | i | 10 | +| test.c:751:5:751:5 | i | 2147483647 | +| test.c:751:9:751:9 | i | 10 | +| test.c:752:9:752:9 | i | 15 | +| test.c:754:5:754:5 | i | 15 | +| test.c:755:9:755:9 | i | 105 | +| test.c:757:5:757:5 | i | 105 | +| test.c:758:9:758:9 | i | 2310 | +| test.c:760:7:760:7 | i | 2147483647 | +| test.c:761:5:761:5 | i | 2147483647 | +| test.c:761:9:761:9 | i | -1 | +| test.c:762:9:762:9 | i | 1 | +| test.c:764:3:764:3 | i | 2147483647 | +| test.c:764:7:764:7 | i | 2147483647 | +| test.c:765:10:765:10 | i | 2147483647 | +| test.c:768:3:768:3 | i | 2147483647 | +| test.c:768:10:768:11 | sc | 1 | +| test.c:770:7:770:7 | i | 127 | +| test.c:777:7:777:7 | n | 4294967295 | +| test.c:779:7:779:7 | n | 4294967295 | | test.c:780:9:780:9 | n | 4294967295 | -| test.c:783:10:783:10 | n | 4294967295 | -| test.c:784:5:784:5 | n | 4294967295 | -| test.c:787:7:787:7 | n | 0 | -| test.c:791:7:791:7 | n | 32767 | -| test.c:794:7:794:7 | n | 32767 | -| test.c:795:9:795:9 | n | 0 | -| test.c:797:9:797:9 | n | 32767 | -| test.c:800:7:800:7 | n | 32767 | -| test.c:801:9:801:9 | n | 32767 | -| test.c:803:9:803:9 | n | 0 | -| test.c:806:10:806:10 | n | 32767 | -| test.c:807:5:807:5 | n | 32767 | -| test.c:810:7:810:7 | n | 0 | -| test.c:814:7:814:7 | n | 32767 | -| test.c:815:9:815:9 | n | 32767 | -| test.c:816:11:816:11 | n | 32767 | -| test.c:820:7:820:7 | n | 32767 | -| test.c:821:13:821:13 | n | 32767 | -| test.c:824:9:824:9 | n | 32767 | -| test.c:827:7:827:7 | n | 32767 | -| test.c:827:22:827:22 | n | 32767 | -| test.c:828:9:828:9 | n | 32767 | -| test.c:831:7:831:7 | n | 32767 | -| test.c:832:5:832:5 | n | 32767 | -| test.c:832:10:832:10 | n | 32767 | -| test.c:832:14:832:14 | n | 0 | -| test.c:833:6:833:6 | n | 32767 | -| test.c:833:10:833:10 | n | 0 | -| test.c:833:14:833:14 | n | 32767 | -| test.c:844:7:844:8 | ss | 32767 | -| test.c:845:9:845:10 | ss | 3 | -| test.c:848:7:848:8 | ss | 32767 | -| test.c:849:9:849:10 | ss | 32767 | -| test.c:852:14:852:15 | us | 65535 | -| test.c:853:9:853:10 | us | 32767 | -| test.c:856:14:856:15 | us | 65535 | -| test.c:857:9:857:10 | us | 65535 | +| test.c:783:7:783:7 | n | 4294967295 | +| test.c:784:9:784:9 | n | 4294967295 | +| test.c:786:9:786:9 | n | 0 | +| test.c:789:8:789:8 | n | 4294967295 | +| test.c:790:9:790:9 | n | 0 | +| test.c:792:9:792:9 | n | 4294967295 | +| test.c:795:10:795:10 | n | 4294967295 | +| test.c:796:5:796:5 | n | 4294967295 | +| test.c:799:7:799:7 | n | 0 | +| test.c:803:7:803:7 | n | 32767 | +| test.c:806:7:806:7 | n | 32767 | +| test.c:807:9:807:9 | n | 0 | +| test.c:809:9:809:9 | n | 32767 | +| test.c:812:7:812:7 | n | 32767 | +| test.c:813:9:813:9 | n | 32767 | +| test.c:815:9:815:9 | n | 0 | +| test.c:818:10:818:10 | n | 32767 | +| test.c:819:5:819:5 | n | 32767 | +| test.c:822:7:822:7 | n | 0 | +| test.c:826:7:826:7 | n | 32767 | +| test.c:827:9:827:9 | n | 32767 | +| test.c:828:11:828:11 | n | 32767 | +| test.c:832:7:832:7 | n | 32767 | +| test.c:833:13:833:13 | n | 32767 | +| test.c:836:9:836:9 | n | 32767 | +| test.c:839:7:839:7 | n | 32767 | +| test.c:839:22:839:22 | n | 32767 | +| test.c:840:9:840:9 | n | 32767 | +| test.c:843:7:843:7 | n | 32767 | +| test.c:844:5:844:5 | n | 32767 | +| test.c:844:10:844:10 | n | 32767 | +| test.c:844:14:844:14 | n | 0 | +| test.c:845:6:845:6 | n | 32767 | +| test.c:845:10:845:10 | n | 0 | +| test.c:845:14:845:14 | n | 32767 | +| test.c:856:7:856:8 | ss | 32767 | +| test.c:857:9:857:10 | ss | 3 | | test.c:860:7:860:8 | ss | 32767 | | test.c:861:9:861:10 | ss | 32767 | -| test.c:864:7:864:8 | ss | 32767 | -| test.c:865:9:865:10 | ss | 2 | -| test.c:871:8:871:8 | s | 2147483647 | -| test.c:871:15:871:15 | s | 127 | -| test.c:871:23:871:23 | s | 9 | -| test.c:872:18:872:18 | s | 9 | -| test.c:872:22:872:22 | s | 9 | -| test.c:873:9:873:14 | result | 127 | -| test.c:879:7:879:7 | i | 0 | -| test.c:880:9:880:9 | i | 2147483647 | -| test.c:884:7:884:7 | u | 0 | -| test.c:885:9:885:9 | u | 4294967295 | -| test.c:890:12:890:12 | s | 2147483647 | -| test.c:891:7:891:8 | s2 | 4 | -| test.c:896:7:896:7 | x | 2147483647 | -| test.c:897:9:897:9 | y | 2147483647 | -| test.c:901:7:901:7 | y | 2147483647 | -| test.c:910:7:910:7 | x | 2147483647 | -| test.c:915:7:915:7 | x | 15 | -| test.c:922:8:922:8 | x | 2147483647 | -| test.c:922:12:922:12 | y | 256 | -| test.c:923:9:923:9 | x | 2147483647 | -| test.c:924:9:924:9 | y | 256 | +| test.c:864:14:864:15 | us | 65535 | +| test.c:865:9:865:10 | us | 32767 | +| test.c:868:14:868:15 | us | 65535 | +| test.c:869:9:869:10 | us | 65535 | +| test.c:872:7:872:8 | ss | 32767 | +| test.c:873:9:873:10 | ss | 32767 | +| test.c:876:7:876:8 | ss | 32767 | +| test.c:877:9:877:10 | ss | 2 | +| test.c:883:8:883:8 | s | 2147483647 | +| test.c:883:15:883:15 | s | 127 | +| test.c:883:23:883:23 | s | 9 | +| test.c:884:18:884:18 | s | 9 | +| test.c:884:22:884:22 | s | 9 | +| test.c:885:9:885:14 | result | 127 | +| test.c:891:7:891:7 | i | 0 | +| test.c:892:9:892:9 | i | 2147483647 | +| test.c:896:7:896:7 | u | 0 | +| test.c:897:9:897:9 | u | 4294967295 | +| test.c:902:12:902:12 | s | 2147483647 | +| test.c:903:7:903:8 | s2 | 4 | +| test.c:908:7:908:7 | x | 2147483647 | +| test.c:909:9:909:9 | y | 2147483647 | +| test.c:913:7:913:7 | y | 2147483647 | +| test.c:922:7:922:7 | x | 2147483647 | +| test.c:927:7:927:7 | x | 15 | +| test.c:934:8:934:8 | x | 2147483647 | +| test.c:934:12:934:12 | y | 256 | +| test.c:935:9:935:9 | x | 2147483647 | +| test.c:936:9:936:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From c1f0f3da96fab1ef256637d3f8f45c7db38cdc3c Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 16 Oct 2025 11:47:49 +0200 Subject: [PATCH 171/965] C++: Handle guard phi nodes differently --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 24 + .../SimpleRangeAnalysis/nrOfBounds.expected | 2660 ++++++++--------- 2 files changed, 1354 insertions(+), 1330 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index be42f890bea..b6f5553cf08 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -565,6 +565,30 @@ private module BoundsEstimate { /** Gets the number of bounds for `def` and `v` as guard phi node. */ language[monotonicAggregates] private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { + // If we have + // + // if (x < c) { e1 } + // e2 + // + // then `e2` is both a guard phi node (guarded by `x < c`) and a normal + // phi node (control is merged after the `if` statement). + // + // Assume `x` has `n` bounds. Then `n` bounds are propagated to the guard + // phi node `{ e1 }` and, since `{ e1 }` is input to `e2` as a normal phi + // node, `n` bounds are propagated to `e2`. If we also propagate the `n` + // bounds to `e2` as a guard phi node, then we square the number of + // bounds. + // + // However in practice `x < c` is going to cut down the number of bounds: + // The tracked bounds can't flow to both branches as that would require + // them to simultaneously be greater and smaller than `c`. To approximate + // this better, the contribution from a guard phi node that is also a + // normal phi node is 1. + exists(def.getAPhiInput(v)) and + isGuardPhiWithBound(def, v, _) and + result = 1 + or + not exists(def.getAPhiInput(v)) and // If there's different `access`es, then they refer to the same variable // with the same lower bounds. Hence adding these guards make no sense (the // implementation will take the union but they'll be removed by diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index c3a711a4a0c..d6d689848d5 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -324,72 +324,72 @@ | test.c:171:7:171:13 | ... <= ... | 1.0 | | test.c:171:7:171:24 | ... && ... | 1.0 | | test.c:171:8:171:8 | 7 | 1.0 | -| test.c:171:13:171:13 | a | 4.0 | -| test.c:171:18:171:18 | a | 4.0 | +| test.c:171:13:171:13 | a | 3.0 | +| test.c:171:18:171:18 | a | 3.0 | | test.c:171:18:171:24 | ... <= ... | 1.0 | | test.c:171:23:171:24 | 11 | 1.0 | -| test.c:172:13:172:14 | + ... | 4.0 | -| test.c:172:14:172:14 | a | 4.0 | -| test.c:173:13:173:14 | - ... | 4.0 | -| test.c:173:14:173:14 | a | 4.0 | +| test.c:172:13:172:14 | + ... | 3.0 | +| test.c:172:14:172:14 | a | 3.0 | +| test.c:173:13:173:14 | - ... | 3.0 | +| test.c:173:14:173:14 | a | 3.0 | | test.c:174:5:174:9 | total | 10.0 | -| test.c:174:5:174:16 | ... += ... | 160.0 | -| test.c:174:14:174:14 | b | 4.0 | -| test.c:174:14:174:16 | ... + ... | 16.0 | -| test.c:174:16:174:16 | c | 4.0 | +| test.c:174:5:174:16 | ... += ... | 90.0 | +| test.c:174:14:174:14 | b | 3.0 | +| test.c:174:14:174:16 | ... + ... | 9.0 | +| test.c:174:16:174:16 | c | 3.0 | | test.c:176:7:176:8 | - ... | 1.0 | | test.c:176:7:176:13 | ... <= ... | 1.0 | | test.c:176:7:176:23 | ... && ... | 1.0 | | test.c:176:8:176:8 | 7 | 1.0 | -| test.c:176:13:176:13 | a | 8.0 | -| test.c:176:18:176:18 | a | 8.0 | +| test.c:176:13:176:13 | a | 4.0 | +| test.c:176:18:176:18 | a | 4.0 | | test.c:176:18:176:23 | ... <= ... | 1.0 | | test.c:176:23:176:23 | 1 | 1.0 | -| test.c:177:13:177:14 | + ... | 8.0 | -| test.c:177:14:177:14 | a | 8.0 | -| test.c:178:13:178:14 | - ... | 8.0 | -| test.c:178:14:178:14 | a | 8.0 | -| test.c:179:5:179:9 | total | 170.0 | -| test.c:179:5:179:16 | ... += ... | 10880.0 | -| test.c:179:14:179:14 | b | 8.0 | -| test.c:179:14:179:16 | ... + ... | 64.0 | -| test.c:179:16:179:16 | c | 8.0 | +| test.c:177:13:177:14 | + ... | 4.0 | +| test.c:177:14:177:14 | a | 4.0 | +| test.c:178:13:178:14 | - ... | 4.0 | +| test.c:178:14:178:14 | a | 4.0 | +| test.c:179:5:179:9 | total | 100.0 | +| test.c:179:5:179:16 | ... += ... | 1600.0 | +| test.c:179:14:179:14 | b | 4.0 | +| test.c:179:14:179:16 | ... + ... | 16.0 | +| test.c:179:16:179:16 | c | 4.0 | | test.c:181:7:181:8 | - ... | 1.0 | | test.c:181:7:181:13 | ... <= ... | 1.0 | | test.c:181:7:181:23 | ... && ... | 1.0 | | test.c:181:8:181:8 | 7 | 1.0 | -| test.c:181:13:181:13 | a | 16.0 | -| test.c:181:18:181:18 | a | 16.0 | +| test.c:181:13:181:13 | a | 5.0 | +| test.c:181:18:181:18 | a | 5.0 | | test.c:181:18:181:23 | ... <= ... | 1.0 | | test.c:181:23:181:23 | 0 | 1.0 | -| test.c:182:13:182:14 | + ... | 16.0 | -| test.c:182:14:182:14 | a | 16.0 | -| test.c:183:13:183:14 | - ... | 16.0 | -| test.c:183:14:183:14 | a | 16.0 | -| test.c:184:5:184:9 | total | 11050.0 | -| test.c:184:5:184:16 | ... += ... | 2828800.0 | -| test.c:184:14:184:14 | b | 16.0 | -| test.c:184:14:184:16 | ... + ... | 256.0 | -| test.c:184:16:184:16 | c | 16.0 | +| test.c:182:13:182:14 | + ... | 5.0 | +| test.c:182:14:182:14 | a | 5.0 | +| test.c:183:13:183:14 | - ... | 5.0 | +| test.c:183:14:183:14 | a | 5.0 | +| test.c:184:5:184:9 | total | 1700.0 | +| test.c:184:5:184:16 | ... += ... | 42500.0 | +| test.c:184:14:184:14 | b | 5.0 | +| test.c:184:14:184:16 | ... + ... | 25.0 | +| test.c:184:16:184:16 | c | 5.0 | | test.c:186:7:186:8 | - ... | 1.0 | | test.c:186:7:186:13 | ... <= ... | 1.0 | | test.c:186:7:186:24 | ... && ... | 1.0 | | test.c:186:8:186:8 | 7 | 1.0 | -| test.c:186:13:186:13 | a | 32.0 | -| test.c:186:18:186:18 | a | 32.0 | +| test.c:186:13:186:13 | a | 6.0 | +| test.c:186:18:186:18 | a | 6.0 | | test.c:186:18:186:24 | ... <= ... | 1.0 | | test.c:186:23:186:24 | - ... | 1.0 | | test.c:186:24:186:24 | 2 | 1.0 | -| test.c:187:13:187:14 | + ... | 32.0 | -| test.c:187:14:187:14 | a | 32.0 | -| test.c:188:13:188:14 | - ... | 32.0 | -| test.c:188:14:188:14 | a | 32.0 | -| test.c:189:5:189:9 | total | 2839850.0 | -| test.c:189:5:189:16 | ... += ... | 2.9080064E9 | -| test.c:189:14:189:14 | b | 32.0 | -| test.c:189:14:189:16 | ... + ... | 1024.0 | -| test.c:189:16:189:16 | c | 32.0 | -| test.c:192:10:192:14 | total | 2.91084625E9 | +| test.c:187:13:187:14 | + ... | 6.0 | +| test.c:187:14:187:14 | a | 6.0 | +| test.c:188:13:188:14 | - ... | 6.0 | +| test.c:188:14:188:14 | a | 6.0 | +| test.c:189:5:189:9 | total | 44200.0 | +| test.c:189:5:189:16 | ... += ... | 1591200.0 | +| test.c:189:14:189:14 | b | 6.0 | +| test.c:189:14:189:16 | ... + ... | 36.0 | +| test.c:189:16:189:16 | c | 6.0 | +| test.c:192:10:192:14 | total | 1635400.0 | | test.c:198:14:198:15 | 0 | 1.0 | | test.c:200:7:200:7 | 3 | 1.0 | | test.c:200:7:200:12 | ... <= ... | 1.0 | @@ -438,20 +438,20 @@ | test.c:208:7:208:23 | ... && ... | 1.0 | | test.c:208:7:208:35 | ... && ... | 1.0 | | test.c:208:7:208:46 | ... && ... | 1.0 | -| test.c:208:12:208:12 | a | 4.0 | -| test.c:208:17:208:17 | a | 4.0 | +| test.c:208:12:208:12 | a | 3.0 | +| test.c:208:17:208:17 | a | 3.0 | | test.c:208:17:208:23 | ... <= ... | 1.0 | | test.c:208:22:208:23 | 11 | 1.0 | | test.c:208:28:208:30 | - ... | 1.0 | | test.c:208:28:208:35 | ... <= ... | 1.0 | | test.c:208:29:208:30 | 13 | 1.0 | -| test.c:208:35:208:35 | b | 9.0 | -| test.c:208:40:208:40 | b | 9.0 | +| test.c:208:35:208:35 | b | 7.0 | +| test.c:208:40:208:40 | b | 7.0 | | test.c:208:40:208:46 | ... <= ... | 1.0 | | test.c:208:45:208:46 | 23 | 1.0 | -| test.c:209:13:209:13 | a | 4.0 | +| test.c:209:13:209:13 | a | 3.0 | | test.c:209:13:209:15 | ... * ... | 1.0 | -| test.c:209:15:209:15 | b | 9.0 | +| test.c:209:15:209:15 | b | 7.0 | | test.c:210:5:210:9 | total | 4.0 | | test.c:210:5:210:14 | ... += ... | 4.0 | | test.c:210:14:210:14 | r | 1.0 | @@ -460,20 +460,20 @@ | test.c:212:7:212:23 | ... && ... | 1.0 | | test.c:212:7:212:35 | ... && ... | 1.0 | | test.c:212:7:212:45 | ... && ... | 1.0 | -| test.c:212:12:212:12 | a | 8.0 | -| test.c:212:17:212:17 | a | 8.0 | +| test.c:212:12:212:12 | a | 4.0 | +| test.c:212:17:212:17 | a | 4.0 | | test.c:212:17:212:23 | ... <= ... | 1.0 | | test.c:212:22:212:23 | 11 | 1.0 | | test.c:212:28:212:30 | - ... | 1.0 | | test.c:212:28:212:35 | ... <= ... | 1.0 | | test.c:212:29:212:30 | 13 | 1.0 | -| test.c:212:35:212:35 | b | 27.0 | -| test.c:212:40:212:40 | b | 27.0 | +| test.c:212:35:212:35 | b | 15.0 | +| test.c:212:40:212:40 | b | 15.0 | | test.c:212:40:212:45 | ... <= ... | 1.0 | | test.c:212:45:212:45 | 0 | 1.0 | -| test.c:213:13:213:13 | a | 8.0 | +| test.c:213:13:213:13 | a | 4.0 | | test.c:213:13:213:15 | ... * ... | 1.0 | -| test.c:213:15:213:15 | b | 27.0 | +| test.c:213:15:213:15 | b | 15.0 | | test.c:214:5:214:9 | total | 8.0 | | test.c:214:5:214:14 | ... += ... | 8.0 | | test.c:214:14:214:14 | r | 1.0 | @@ -482,21 +482,21 @@ | test.c:216:7:216:23 | ... && ... | 1.0 | | test.c:216:7:216:35 | ... && ... | 1.0 | | test.c:216:7:216:46 | ... && ... | 1.0 | -| test.c:216:12:216:12 | a | 16.0 | -| test.c:216:17:216:17 | a | 16.0 | +| test.c:216:12:216:12 | a | 5.0 | +| test.c:216:17:216:17 | a | 5.0 | | test.c:216:17:216:23 | ... <= ... | 1.0 | | test.c:216:22:216:23 | 11 | 1.0 | | test.c:216:28:216:30 | - ... | 1.0 | | test.c:216:28:216:35 | ... <= ... | 1.0 | | test.c:216:29:216:30 | 13 | 1.0 | -| test.c:216:35:216:35 | b | 81.0 | -| test.c:216:40:216:40 | b | 81.0 | +| test.c:216:35:216:35 | b | 31.0 | +| test.c:216:40:216:40 | b | 31.0 | | test.c:216:40:216:46 | ... <= ... | 1.0 | | test.c:216:45:216:46 | - ... | 1.0 | | test.c:216:46:216:46 | 7 | 1.0 | -| test.c:217:13:217:13 | a | 16.0 | +| test.c:217:13:217:13 | a | 5.0 | | test.c:217:13:217:15 | ... * ... | 1.0 | -| test.c:217:15:217:15 | b | 81.0 | +| test.c:217:15:217:15 | b | 31.0 | | test.c:218:5:218:9 | total | 16.0 | | test.c:218:5:218:14 | ... += ... | 16.0 | | test.c:218:14:218:14 | r | 1.0 | @@ -549,20 +549,20 @@ | test.c:236:7:236:23 | ... && ... | 1.0 | | test.c:236:7:236:35 | ... && ... | 1.0 | | test.c:236:7:236:46 | ... && ... | 1.0 | -| test.c:236:12:236:12 | a | 4.0 | -| test.c:236:17:236:17 | a | 4.0 | +| test.c:236:12:236:12 | a | 3.0 | +| test.c:236:17:236:17 | a | 3.0 | | test.c:236:17:236:23 | ... <= ... | 1.0 | | test.c:236:22:236:23 | 11 | 1.0 | | test.c:236:28:236:30 | - ... | 1.0 | | test.c:236:28:236:35 | ... <= ... | 1.0 | | test.c:236:29:236:30 | 13 | 1.0 | -| test.c:236:35:236:35 | b | 9.0 | -| test.c:236:40:236:40 | b | 9.0 | +| test.c:236:35:236:35 | b | 7.0 | +| test.c:236:40:236:40 | b | 7.0 | | test.c:236:40:236:46 | ... <= ... | 1.0 | | test.c:236:45:236:46 | 23 | 1.0 | -| test.c:237:13:237:13 | a | 4.0 | +| test.c:237:13:237:13 | a | 3.0 | | test.c:237:13:237:15 | ... * ... | 1.0 | -| test.c:237:15:237:15 | b | 9.0 | +| test.c:237:15:237:15 | b | 7.0 | | test.c:238:5:238:9 | total | 4.0 | | test.c:238:5:238:14 | ... += ... | 4.0 | | test.c:238:14:238:14 | r | 1.0 | @@ -571,20 +571,20 @@ | test.c:240:7:240:23 | ... && ... | 1.0 | | test.c:240:7:240:35 | ... && ... | 1.0 | | test.c:240:7:240:45 | ... && ... | 1.0 | -| test.c:240:12:240:12 | a | 8.0 | -| test.c:240:17:240:17 | a | 8.0 | +| test.c:240:12:240:12 | a | 4.0 | +| test.c:240:17:240:17 | a | 4.0 | | test.c:240:17:240:23 | ... <= ... | 1.0 | | test.c:240:22:240:23 | 11 | 1.0 | | test.c:240:28:240:30 | - ... | 1.0 | | test.c:240:28:240:35 | ... <= ... | 1.0 | | test.c:240:29:240:30 | 13 | 1.0 | -| test.c:240:35:240:35 | b | 27.0 | -| test.c:240:40:240:40 | b | 27.0 | +| test.c:240:35:240:35 | b | 15.0 | +| test.c:240:40:240:40 | b | 15.0 | | test.c:240:40:240:45 | ... <= ... | 1.0 | | test.c:240:45:240:45 | 0 | 1.0 | -| test.c:241:13:241:13 | a | 8.0 | +| test.c:241:13:241:13 | a | 4.0 | | test.c:241:13:241:15 | ... * ... | 1.0 | -| test.c:241:15:241:15 | b | 27.0 | +| test.c:241:15:241:15 | b | 15.0 | | test.c:242:5:242:9 | total | 8.0 | | test.c:242:5:242:14 | ... += ... | 8.0 | | test.c:242:14:242:14 | r | 1.0 | @@ -593,21 +593,21 @@ | test.c:244:7:244:23 | ... && ... | 1.0 | | test.c:244:7:244:35 | ... && ... | 1.0 | | test.c:244:7:244:46 | ... && ... | 1.0 | -| test.c:244:12:244:12 | a | 16.0 | -| test.c:244:17:244:17 | a | 16.0 | +| test.c:244:12:244:12 | a | 5.0 | +| test.c:244:17:244:17 | a | 5.0 | | test.c:244:17:244:23 | ... <= ... | 1.0 | | test.c:244:22:244:23 | 11 | 1.0 | | test.c:244:28:244:30 | - ... | 1.0 | | test.c:244:28:244:35 | ... <= ... | 1.0 | | test.c:244:29:244:30 | 13 | 1.0 | -| test.c:244:35:244:35 | b | 81.0 | -| test.c:244:40:244:40 | b | 81.0 | +| test.c:244:35:244:35 | b | 31.0 | +| test.c:244:40:244:40 | b | 31.0 | | test.c:244:40:244:46 | ... <= ... | 1.0 | | test.c:244:45:244:46 | - ... | 1.0 | | test.c:244:46:244:46 | 7 | 1.0 | -| test.c:245:13:245:13 | a | 16.0 | +| test.c:245:13:245:13 | a | 5.0 | | test.c:245:13:245:15 | ... * ... | 1.0 | -| test.c:245:15:245:15 | b | 81.0 | +| test.c:245:15:245:15 | b | 31.0 | | test.c:246:5:246:9 | total | 16.0 | | test.c:246:5:246:14 | ... += ... | 16.0 | | test.c:246:14:246:14 | r | 1.0 | @@ -663,20 +663,20 @@ | test.c:264:7:264:37 | ... && ... | 1.0 | | test.c:264:7:264:48 | ... && ... | 1.0 | | test.c:264:8:264:9 | 17 | 1.0 | -| test.c:264:14:264:14 | a | 4.0 | -| test.c:264:19:264:19 | a | 4.0 | +| test.c:264:14:264:14 | a | 3.0 | +| test.c:264:19:264:19 | a | 3.0 | | test.c:264:19:264:25 | ... <= ... | 1.0 | | test.c:264:24:264:25 | 11 | 1.0 | | test.c:264:30:264:32 | - ... | 1.0 | | test.c:264:30:264:37 | ... <= ... | 1.0 | | test.c:264:31:264:32 | 13 | 1.0 | -| test.c:264:37:264:37 | b | 9.0 | -| test.c:264:42:264:42 | b | 9.0 | +| test.c:264:37:264:37 | b | 7.0 | +| test.c:264:42:264:42 | b | 7.0 | | test.c:264:42:264:48 | ... <= ... | 1.0 | | test.c:264:47:264:48 | 23 | 1.0 | -| test.c:265:13:265:13 | a | 4.0 | +| test.c:265:13:265:13 | a | 3.0 | | test.c:265:13:265:15 | ... * ... | 1.0 | -| test.c:265:15:265:15 | b | 9.0 | +| test.c:265:15:265:15 | b | 7.0 | | test.c:266:5:266:9 | total | 4.0 | | test.c:266:5:266:14 | ... += ... | 4.0 | | test.c:266:14:266:14 | r | 1.0 | @@ -686,20 +686,20 @@ | test.c:268:7:268:37 | ... && ... | 1.0 | | test.c:268:7:268:47 | ... && ... | 1.0 | | test.c:268:8:268:9 | 17 | 1.0 | -| test.c:268:14:268:14 | a | 8.0 | -| test.c:268:19:268:19 | a | 8.0 | +| test.c:268:14:268:14 | a | 4.0 | +| test.c:268:19:268:19 | a | 4.0 | | test.c:268:19:268:25 | ... <= ... | 1.0 | | test.c:268:24:268:25 | 11 | 1.0 | | test.c:268:30:268:32 | - ... | 1.0 | | test.c:268:30:268:37 | ... <= ... | 1.0 | | test.c:268:31:268:32 | 13 | 1.0 | -| test.c:268:37:268:37 | b | 27.0 | -| test.c:268:42:268:42 | b | 27.0 | +| test.c:268:37:268:37 | b | 15.0 | +| test.c:268:42:268:42 | b | 15.0 | | test.c:268:42:268:47 | ... <= ... | 1.0 | | test.c:268:47:268:47 | 0 | 1.0 | -| test.c:269:13:269:13 | a | 8.0 | +| test.c:269:13:269:13 | a | 4.0 | | test.c:269:13:269:15 | ... * ... | 1.0 | -| test.c:269:15:269:15 | b | 27.0 | +| test.c:269:15:269:15 | b | 15.0 | | test.c:270:5:270:9 | total | 8.0 | | test.c:270:5:270:14 | ... += ... | 8.0 | | test.c:270:14:270:14 | r | 1.0 | @@ -709,21 +709,21 @@ | test.c:272:7:272:37 | ... && ... | 1.0 | | test.c:272:7:272:48 | ... && ... | 1.0 | | test.c:272:8:272:9 | 17 | 1.0 | -| test.c:272:14:272:14 | a | 16.0 | -| test.c:272:19:272:19 | a | 16.0 | +| test.c:272:14:272:14 | a | 5.0 | +| test.c:272:19:272:19 | a | 5.0 | | test.c:272:19:272:25 | ... <= ... | 1.0 | | test.c:272:24:272:25 | 11 | 1.0 | | test.c:272:30:272:32 | - ... | 1.0 | | test.c:272:30:272:37 | ... <= ... | 1.0 | | test.c:272:31:272:32 | 13 | 1.0 | -| test.c:272:37:272:37 | b | 81.0 | -| test.c:272:42:272:42 | b | 81.0 | +| test.c:272:37:272:37 | b | 31.0 | +| test.c:272:42:272:42 | b | 31.0 | | test.c:272:42:272:48 | ... <= ... | 1.0 | | test.c:272:47:272:48 | - ... | 1.0 | | test.c:272:48:272:48 | 7 | 1.0 | -| test.c:273:13:273:13 | a | 16.0 | +| test.c:273:13:273:13 | a | 5.0 | | test.c:273:13:273:15 | ... * ... | 1.0 | -| test.c:273:15:273:15 | b | 81.0 | +| test.c:273:15:273:15 | b | 31.0 | | test.c:274:5:274:9 | total | 16.0 | | test.c:274:5:274:14 | ... += ... | 16.0 | | test.c:274:14:274:14 | r | 1.0 | @@ -779,20 +779,20 @@ | test.c:292:7:292:36 | ... && ... | 1.0 | | test.c:292:7:292:47 | ... && ... | 1.0 | | test.c:292:8:292:9 | 17 | 1.0 | -| test.c:292:14:292:14 | a | 4.0 | -| test.c:292:19:292:19 | a | 4.0 | +| test.c:292:14:292:14 | a | 3.0 | +| test.c:292:19:292:19 | a | 3.0 | | test.c:292:19:292:24 | ... <= ... | 1.0 | | test.c:292:24:292:24 | 0 | 1.0 | | test.c:292:29:292:31 | - ... | 1.0 | | test.c:292:29:292:36 | ... <= ... | 1.0 | | test.c:292:30:292:31 | 13 | 1.0 | -| test.c:292:36:292:36 | b | 9.0 | -| test.c:292:41:292:41 | b | 9.0 | +| test.c:292:36:292:36 | b | 7.0 | +| test.c:292:41:292:41 | b | 7.0 | | test.c:292:41:292:47 | ... <= ... | 1.0 | | test.c:292:46:292:47 | 23 | 1.0 | -| test.c:293:13:293:13 | a | 4.0 | +| test.c:293:13:293:13 | a | 3.0 | | test.c:293:13:293:15 | ... * ... | 1.0 | -| test.c:293:15:293:15 | b | 9.0 | +| test.c:293:15:293:15 | b | 7.0 | | test.c:294:5:294:9 | total | 4.0 | | test.c:294:5:294:14 | ... += ... | 4.0 | | test.c:294:14:294:14 | r | 1.0 | @@ -802,20 +802,20 @@ | test.c:296:7:296:36 | ... && ... | 1.0 | | test.c:296:7:296:46 | ... && ... | 1.0 | | test.c:296:8:296:9 | 17 | 1.0 | -| test.c:296:14:296:14 | a | 8.0 | -| test.c:296:19:296:19 | a | 8.0 | +| test.c:296:14:296:14 | a | 4.0 | +| test.c:296:19:296:19 | a | 4.0 | | test.c:296:19:296:24 | ... <= ... | 1.0 | | test.c:296:24:296:24 | 0 | 1.0 | | test.c:296:29:296:31 | - ... | 1.0 | | test.c:296:29:296:36 | ... <= ... | 1.0 | | test.c:296:30:296:31 | 13 | 1.0 | -| test.c:296:36:296:36 | b | 27.0 | -| test.c:296:41:296:41 | b | 27.0 | +| test.c:296:36:296:36 | b | 15.0 | +| test.c:296:41:296:41 | b | 15.0 | | test.c:296:41:296:46 | ... <= ... | 1.0 | | test.c:296:46:296:46 | 0 | 1.0 | -| test.c:297:13:297:13 | a | 8.0 | +| test.c:297:13:297:13 | a | 4.0 | | test.c:297:13:297:15 | ... * ... | 1.0 | -| test.c:297:15:297:15 | b | 27.0 | +| test.c:297:15:297:15 | b | 15.0 | | test.c:298:5:298:9 | total | 8.0 | | test.c:298:5:298:14 | ... += ... | 8.0 | | test.c:298:14:298:14 | r | 1.0 | @@ -825,21 +825,21 @@ | test.c:300:7:300:36 | ... && ... | 1.0 | | test.c:300:7:300:47 | ... && ... | 1.0 | | test.c:300:8:300:9 | 17 | 1.0 | -| test.c:300:14:300:14 | a | 16.0 | -| test.c:300:19:300:19 | a | 16.0 | +| test.c:300:14:300:14 | a | 5.0 | +| test.c:300:19:300:19 | a | 5.0 | | test.c:300:19:300:24 | ... <= ... | 1.0 | | test.c:300:24:300:24 | 0 | 1.0 | | test.c:300:29:300:31 | - ... | 1.0 | | test.c:300:29:300:36 | ... <= ... | 1.0 | | test.c:300:30:300:31 | 13 | 1.0 | -| test.c:300:36:300:36 | b | 81.0 | -| test.c:300:41:300:41 | b | 81.0 | +| test.c:300:36:300:36 | b | 31.0 | +| test.c:300:41:300:41 | b | 31.0 | | test.c:300:41:300:47 | ... <= ... | 1.0 | | test.c:300:46:300:47 | - ... | 1.0 | | test.c:300:47:300:47 | 7 | 1.0 | -| test.c:301:13:301:13 | a | 16.0 | +| test.c:301:13:301:13 | a | 5.0 | | test.c:301:13:301:15 | ... * ... | 1.0 | -| test.c:301:15:301:15 | b | 81.0 | +| test.c:301:15:301:15 | b | 31.0 | | test.c:302:5:302:9 | total | 16.0 | | test.c:302:5:302:14 | ... += ... | 16.0 | | test.c:302:14:302:14 | r | 1.0 | @@ -897,21 +897,21 @@ | test.c:320:7:320:37 | ... && ... | 1.0 | | test.c:320:7:320:48 | ... && ... | 1.0 | | test.c:320:8:320:9 | 17 | 1.0 | -| test.c:320:14:320:14 | a | 4.0 | -| test.c:320:19:320:19 | a | 4.0 | +| test.c:320:14:320:14 | a | 3.0 | +| test.c:320:19:320:19 | a | 3.0 | | test.c:320:19:320:25 | ... <= ... | 1.0 | | test.c:320:24:320:25 | - ... | 1.0 | | test.c:320:25:320:25 | 2 | 1.0 | | test.c:320:30:320:32 | - ... | 1.0 | | test.c:320:30:320:37 | ... <= ... | 1.0 | | test.c:320:31:320:32 | 13 | 1.0 | -| test.c:320:37:320:37 | b | 9.0 | -| test.c:320:42:320:42 | b | 9.0 | +| test.c:320:37:320:37 | b | 7.0 | +| test.c:320:42:320:42 | b | 7.0 | | test.c:320:42:320:48 | ... <= ... | 1.0 | | test.c:320:47:320:48 | 23 | 1.0 | -| test.c:321:13:321:13 | a | 4.0 | +| test.c:321:13:321:13 | a | 3.0 | | test.c:321:13:321:15 | ... * ... | 1.0 | -| test.c:321:15:321:15 | b | 9.0 | +| test.c:321:15:321:15 | b | 7.0 | | test.c:322:5:322:9 | total | 4.0 | | test.c:322:5:322:14 | ... += ... | 4.0 | | test.c:322:14:322:14 | r | 1.0 | @@ -921,21 +921,21 @@ | test.c:324:7:324:37 | ... && ... | 1.0 | | test.c:324:7:324:47 | ... && ... | 1.0 | | test.c:324:8:324:9 | 17 | 1.0 | -| test.c:324:14:324:14 | a | 8.0 | -| test.c:324:19:324:19 | a | 8.0 | +| test.c:324:14:324:14 | a | 4.0 | +| test.c:324:19:324:19 | a | 4.0 | | test.c:324:19:324:25 | ... <= ... | 1.0 | | test.c:324:24:324:25 | - ... | 1.0 | | test.c:324:25:324:25 | 2 | 1.0 | | test.c:324:30:324:32 | - ... | 1.0 | | test.c:324:30:324:37 | ... <= ... | 1.0 | | test.c:324:31:324:32 | 13 | 1.0 | -| test.c:324:37:324:37 | b | 27.0 | -| test.c:324:42:324:42 | b | 27.0 | +| test.c:324:37:324:37 | b | 15.0 | +| test.c:324:42:324:42 | b | 15.0 | | test.c:324:42:324:47 | ... <= ... | 1.0 | | test.c:324:47:324:47 | 0 | 1.0 | -| test.c:325:13:325:13 | a | 8.0 | +| test.c:325:13:325:13 | a | 4.0 | | test.c:325:13:325:15 | ... * ... | 1.0 | -| test.c:325:15:325:15 | b | 27.0 | +| test.c:325:15:325:15 | b | 15.0 | | test.c:326:5:326:9 | total | 8.0 | | test.c:326:5:326:14 | ... += ... | 8.0 | | test.c:326:14:326:14 | r | 1.0 | @@ -945,22 +945,22 @@ | test.c:328:7:328:37 | ... && ... | 1.0 | | test.c:328:7:328:48 | ... && ... | 1.0 | | test.c:328:8:328:9 | 17 | 1.0 | -| test.c:328:14:328:14 | a | 16.0 | -| test.c:328:19:328:19 | a | 16.0 | +| test.c:328:14:328:14 | a | 5.0 | +| test.c:328:19:328:19 | a | 5.0 | | test.c:328:19:328:25 | ... <= ... | 1.0 | | test.c:328:24:328:25 | - ... | 1.0 | | test.c:328:25:328:25 | 2 | 1.0 | | test.c:328:30:328:32 | - ... | 1.0 | | test.c:328:30:328:37 | ... <= ... | 1.0 | | test.c:328:31:328:32 | 13 | 1.0 | -| test.c:328:37:328:37 | b | 81.0 | -| test.c:328:42:328:42 | b | 81.0 | +| test.c:328:37:328:37 | b | 31.0 | +| test.c:328:42:328:42 | b | 31.0 | | test.c:328:42:328:48 | ... <= ... | 1.0 | | test.c:328:47:328:48 | - ... | 1.0 | | test.c:328:48:328:48 | 7 | 1.0 | -| test.c:329:13:329:13 | a | 16.0 | +| test.c:329:13:329:13 | a | 5.0 | | test.c:329:13:329:15 | ... * ... | 1.0 | -| test.c:329:15:329:15 | b | 81.0 | +| test.c:329:15:329:15 | b | 31.0 | | test.c:330:5:330:9 | total | 16.0 | | test.c:330:5:330:14 | ... += ... | 16.0 | | test.c:330:14:330:14 | r | 1.0 | @@ -1416,32 +1416,32 @@ | test.c:421:19:421:21 | rhs | 2.0 | | test.c:421:19:421:26 | ... << ... | 1.0 | | test.c:421:26:421:26 | 1 | 1.0 | -| test.c:422:7:422:9 | rhs | 4.0 | +| test.c:422:7:422:9 | rhs | 3.0 | | test.c:422:7:422:14 | ... < ... | 1.0 | | test.c:422:13:422:14 | 14 | 1.0 | | test.c:422:13:422:14 | (unsigned int)... | 1.0 | -| test.c:422:19:422:21 | rhs | 4.0 | +| test.c:422:19:422:21 | rhs | 3.0 | | test.c:422:19:422:26 | ... << ... | 1.0 | | test.c:422:26:422:26 | 1 | 1.0 | -| test.c:423:7:423:9 | rhs | 8.0 | +| test.c:423:7:423:9 | rhs | 4.0 | | test.c:423:7:423:14 | ... < ... | 1.0 | | test.c:423:13:423:14 | 15 | 1.0 | | test.c:423:13:423:14 | (unsigned int)... | 1.0 | -| test.c:423:19:423:21 | rhs | 8.0 | +| test.c:423:19:423:21 | rhs | 4.0 | | test.c:423:19:423:26 | ... << ... | 1.0 | | test.c:423:26:423:26 | 1 | 1.0 | -| test.c:424:7:424:9 | rhs | 16.0 | +| test.c:424:7:424:9 | rhs | 5.0 | | test.c:424:7:424:14 | ... < ... | 1.0 | | test.c:424:13:424:14 | 16 | 1.0 | | test.c:424:13:424:14 | (unsigned int)... | 1.0 | -| test.c:424:19:424:21 | rhs | 16.0 | +| test.c:424:19:424:21 | rhs | 5.0 | | test.c:424:19:424:26 | ... << ... | 1.0 | | test.c:424:26:424:26 | 1 | 1.0 | -| test.c:425:10:425:12 | (int)... | 32.0 | -| test.c:425:10:425:12 | rhs | 32.0 | +| test.c:425:10:425:12 | (int)... | 6.0 | +| test.c:425:10:425:12 | rhs | 6.0 | | test.c:432:4:434:50 | (...) | 1.0 | | test.c:432:4:517:26 | ... > ... | 1.0 | -| test.c:432:4:606:27 | ... ? ... : ... | 1.0736981431797959E233 | +| test.c:432:4:606:27 | ... ? ... : ... | 1.297918419127476E201 | | test.c:432:5:432:6 | 14 | 1.0 | | test.c:432:5:432:6 | (unsigned int)... | 1.0 | | test.c:432:5:432:11 | ... * ... | 1.0 | @@ -1504,13 +1504,13 @@ | test.c:434:43:434:43 | (unsigned int)... | 1.0 | | test.c:434:48:434:49 | 17 | 1.0 | | test.c:434:48:434:49 | (unsigned int)... | 1.0 | -| test.c:435:5:517:26 | (...) | 8.351961156990343E97 | +| test.c:435:5:517:26 | (...) | 9.29462083211502E84 | | test.c:435:6:435:6 | 2 | 1.0 | | test.c:435:6:435:6 | (unsigned int)... | 1.0 | | test.c:435:6:435:23 | ... * ... | 2.0 | -| test.c:435:6:454:42 | ... + ... | 5.95077871104E11 | +| test.c:435:6:454:42 | ... + ... | 4.524508125E10 | | test.c:435:6:474:24 | ... > ... | 1.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 8.351961156990343E97 | +| test.c:435:6:517:25 | ... ? ... : ... | 9.29462083211502E84 | | test.c:435:10:435:23 | (...) | 2.0 | | test.c:435:11:435:12 | ip | 2.0 | | test.c:435:11:435:17 | ... * ... | 2.0 | @@ -1519,15 +1519,15 @@ | test.c:435:16:435:17 | (unsigned int)... | 1.0 | | test.c:435:21:435:22 | 32 | 1.0 | | test.c:435:21:435:22 | (unsigned int)... | 1.0 | -| test.c:436:7:454:42 | (...) | 2.97538935552E11 | +| test.c:436:7:454:42 | (...) | 2.2622540625E10 | | test.c:436:8:436:8 | 4 | 1.0 | | test.c:436:8:436:8 | (unsigned int)... | 1.0 | | test.c:436:8:436:25 | ... * ... | 2.0 | | test.c:436:8:437:26 | ... + ... | 4.0 | | test.c:436:8:438:26 | ... + ... | 8.0 | -| test.c:436:8:443:22 | ... + ... | 1728.0 | +| test.c:436:8:443:22 | ... + ... | 1000.0 | | test.c:436:8:444:37 | ... > ... | 1.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 2.97538935552E11 | +| test.c:436:8:454:41 | ... ? ... : ... | 2.2622540625E10 | | test.c:436:12:436:25 | (...) | 2.0 | | test.c:436:13:436:14 | ip | 2.0 | | test.c:436:13:436:19 | ... * ... | 2.0 | @@ -1558,11 +1558,11 @@ | test.c:438:19:438:20 | (unsigned int)... | 1.0 | | test.c:438:24:438:25 | 64 | 1.0 | | test.c:438:24:438:25 | (unsigned int)... | 1.0 | -| test.c:439:9:443:22 | (...) | 216.0 | +| test.c:439:9:443:22 | (...) | 125.0 | | test.c:439:10:439:21 | (...) | 2.0 | | test.c:439:10:439:26 | ... * ... | 2.0 | | test.c:439:10:439:80 | ... > ... | 1.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 216.0 | +| test.c:439:10:443:21 | ... ? ... : ... | 125.0 | | test.c:439:11:439:11 | 2 | 1.0 | | test.c:439:11:439:11 | (unsigned int)... | 1.0 | | test.c:439:11:439:16 | ... * ... | 2.0 | @@ -1599,1069 +1599,1069 @@ | test.c:439:73:439:74 | (unsigned int)... | 1.0 | | test.c:439:73:439:79 | ... * ... | 2.0 | | test.c:439:78:439:79 | ip | 2.0 | -| test.c:440:13:440:24 | (...) | 6.0 | -| test.c:440:13:440:29 | ... * ... | 6.0 | +| test.c:440:13:440:24 | (...) | 5.0 | +| test.c:440:13:440:29 | ... * ... | 5.0 | | test.c:440:14:440:14 | 2 | 1.0 | | test.c:440:14:440:14 | (unsigned int)... | 1.0 | -| test.c:440:14:440:19 | ... * ... | 6.0 | -| test.c:440:14:440:23 | ... + ... | 6.0 | -| test.c:440:18:440:19 | ip | 6.0 | +| test.c:440:14:440:19 | ... * ... | 5.0 | +| test.c:440:14:440:23 | ... + ... | 5.0 | +| test.c:440:18:440:19 | ip | 5.0 | | test.c:440:23:440:23 | 1 | 1.0 | | test.c:440:23:440:23 | (unsigned int)... | 1.0 | | test.c:440:28:440:29 | 14 | 1.0 | | test.c:440:28:440:29 | (unsigned int)... | 1.0 | | test.c:441:13:441:14 | 14 | 1.0 | | test.c:441:13:441:14 | (unsigned int)... | 1.0 | -| test.c:441:13:441:25 | ... * ... | 6.0 | +| test.c:441:13:441:25 | ... * ... | 5.0 | | test.c:441:13:441:35 | ... > ... | 1.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 36.0 | -| test.c:441:18:441:25 | (...) | 6.0 | +| test.c:441:13:443:21 | ... ? ... : ... | 25.0 | +| test.c:441:18:441:25 | (...) | 5.0 | | test.c:441:19:441:19 | 2 | 1.0 | | test.c:441:19:441:19 | (unsigned int)... | 1.0 | -| test.c:441:19:441:24 | ... * ... | 6.0 | -| test.c:441:23:441:24 | ip | 6.0 | +| test.c:441:19:441:24 | ... * ... | 5.0 | +| test.c:441:23:441:24 | ip | 5.0 | | test.c:441:29:441:30 | 17 | 1.0 | | test.c:441:29:441:30 | (unsigned int)... | 1.0 | -| test.c:441:29:441:35 | ... * ... | 6.0 | -| test.c:441:34:441:35 | ip | 6.0 | +| test.c:441:29:441:35 | ... * ... | 5.0 | +| test.c:441:34:441:35 | ip | 5.0 | | test.c:442:15:442:16 | 14 | 1.0 | | test.c:442:15:442:16 | (unsigned int)... | 1.0 | -| test.c:442:15:442:27 | ... * ... | 6.0 | -| test.c:442:20:442:27 | (...) | 6.0 | +| test.c:442:15:442:27 | ... * ... | 5.0 | +| test.c:442:20:442:27 | (...) | 5.0 | | test.c:442:21:442:21 | 2 | 1.0 | | test.c:442:21:442:21 | (unsigned int)... | 1.0 | -| test.c:442:21:442:26 | ... * ... | 6.0 | -| test.c:442:25:442:26 | ip | 6.0 | +| test.c:442:21:442:26 | ... * ... | 5.0 | +| test.c:442:25:442:26 | ip | 5.0 | | test.c:443:15:443:16 | 14 | 1.0 | | test.c:443:15:443:16 | (unsigned int)... | 1.0 | -| test.c:443:15:443:21 | ... * ... | 6.0 | -| test.c:443:20:443:21 | ip | 6.0 | +| test.c:443:15:443:21 | ... * ... | 5.0 | +| test.c:443:20:443:21 | ip | 5.0 | | test.c:444:7:444:7 | 2 | 1.0 | | test.c:444:7:444:7 | (unsigned int)... | 1.0 | -| test.c:444:7:444:12 | ... * ... | 18.0 | -| test.c:444:7:444:17 | ... * ... | 18.0 | -| test.c:444:7:444:37 | ... + ... | 324.0 | -| test.c:444:11:444:12 | ip | 18.0 | +| test.c:444:7:444:12 | ... * ... | 15.0 | +| test.c:444:7:444:17 | ... * ... | 15.0 | +| test.c:444:7:444:37 | ... + ... | 225.0 | +| test.c:444:11:444:12 | ip | 15.0 | | test.c:444:16:444:17 | 14 | 1.0 | | test.c:444:16:444:17 | (unsigned int)... | 1.0 | -| test.c:444:21:444:32 | (...) | 18.0 | -| test.c:444:21:444:37 | ... * ... | 18.0 | +| test.c:444:21:444:32 | (...) | 15.0 | +| test.c:444:21:444:37 | ... * ... | 15.0 | | test.c:444:22:444:22 | 2 | 1.0 | | test.c:444:22:444:22 | (unsigned int)... | 1.0 | -| test.c:444:22:444:27 | ... * ... | 18.0 | -| test.c:444:22:444:31 | ... + ... | 18.0 | -| test.c:444:26:444:27 | ip | 18.0 | +| test.c:444:22:444:27 | ... * ... | 15.0 | +| test.c:444:22:444:31 | ... + ... | 15.0 | +| test.c:444:26:444:27 | ip | 15.0 | | test.c:444:31:444:31 | 1 | 1.0 | | test.c:444:31:444:31 | (unsigned int)... | 1.0 | | test.c:444:36:444:37 | 17 | 1.0 | | test.c:444:36:444:37 | (unsigned int)... | 1.0 | | test.c:445:11:445:11 | 4 | 1.0 | | test.c:445:11:445:11 | (unsigned int)... | 1.0 | -| test.c:445:11:445:28 | ... * ... | 18.0 | -| test.c:445:11:446:28 | ... + ... | 324.0 | -| test.c:445:11:447:28 | ... + ... | 5832.0 | -| test.c:445:11:453:24 | ... + ... | 9.18330048E8 | -| test.c:445:15:445:28 | (...) | 18.0 | -| test.c:445:16:445:17 | ip | 18.0 | -| test.c:445:16:445:22 | ... * ... | 18.0 | -| test.c:445:16:445:27 | ... + ... | 18.0 | +| test.c:445:11:445:28 | ... * ... | 15.0 | +| test.c:445:11:446:28 | ... + ... | 225.0 | +| test.c:445:11:447:28 | ... + ... | 3375.0 | +| test.c:445:11:453:24 | ... + ... | 1.00544625E8 | +| test.c:445:15:445:28 | (...) | 15.0 | +| test.c:445:16:445:17 | ip | 15.0 | +| test.c:445:16:445:22 | ... * ... | 15.0 | +| test.c:445:16:445:27 | ... + ... | 15.0 | | test.c:445:21:445:22 | 14 | 1.0 | | test.c:445:21:445:22 | (unsigned int)... | 1.0 | | test.c:445:26:445:27 | 32 | 1.0 | | test.c:445:26:445:27 | (unsigned int)... | 1.0 | -| test.c:446:11:446:28 | (...) | 18.0 | +| test.c:446:11:446:28 | (...) | 15.0 | | test.c:446:12:446:12 | 2 | 1.0 | | test.c:446:12:446:12 | (unsigned int)... | 1.0 | -| test.c:446:12:446:17 | ... * ... | 18.0 | -| test.c:446:12:446:22 | ... * ... | 18.0 | -| test.c:446:12:446:27 | ... + ... | 18.0 | -| test.c:446:16:446:17 | ip | 18.0 | +| test.c:446:12:446:17 | ... * ... | 15.0 | +| test.c:446:12:446:22 | ... * ... | 15.0 | +| test.c:446:12:446:27 | ... + ... | 15.0 | +| test.c:446:16:446:17 | ip | 15.0 | | test.c:446:21:446:22 | 14 | 1.0 | | test.c:446:21:446:22 | (unsigned int)... | 1.0 | | test.c:446:26:446:27 | 32 | 1.0 | | test.c:446:26:446:27 | (unsigned int)... | 1.0 | | test.c:447:11:447:11 | 2 | 1.0 | | test.c:447:11:447:11 | (unsigned int)... | 1.0 | -| test.c:447:11:447:28 | ... * ... | 18.0 | -| test.c:447:15:447:28 | (...) | 18.0 | -| test.c:447:16:447:17 | ip | 18.0 | -| test.c:447:16:447:22 | ... * ... | 18.0 | -| test.c:447:16:447:27 | ... + ... | 18.0 | +| test.c:447:11:447:28 | ... * ... | 15.0 | +| test.c:447:15:447:28 | (...) | 15.0 | +| test.c:447:16:447:17 | ip | 15.0 | +| test.c:447:16:447:22 | ... * ... | 15.0 | +| test.c:447:16:447:27 | ... + ... | 15.0 | | test.c:447:21:447:22 | 14 | 1.0 | | test.c:447:21:447:22 | (unsigned int)... | 1.0 | | test.c:447:26:447:27 | 64 | 1.0 | | test.c:447:26:447:27 | (unsigned int)... | 1.0 | -| test.c:448:11:453:24 | (...) | 157464.0 | -| test.c:448:12:448:23 | (...) | 18.0 | -| test.c:448:12:448:28 | ... * ... | 18.0 | +| test.c:448:11:453:24 | (...) | 29791.0 | +| test.c:448:12:448:23 | (...) | 15.0 | +| test.c:448:12:448:28 | ... * ... | 15.0 | | test.c:448:12:449:61 | ... > ... | 1.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 157464.0 | +| test.c:448:12:453:23 | ... ? ... : ... | 29791.0 | | test.c:448:13:448:13 | 2 | 1.0 | | test.c:448:13:448:13 | (unsigned int)... | 1.0 | -| test.c:448:13:448:18 | ... * ... | 18.0 | -| test.c:448:13:448:22 | ... + ... | 18.0 | -| test.c:448:17:448:18 | ip | 18.0 | +| test.c:448:13:448:18 | ... * ... | 15.0 | +| test.c:448:13:448:22 | ... + ... | 15.0 | +| test.c:448:17:448:18 | ip | 15.0 | | test.c:448:22:448:22 | 1 | 1.0 | | test.c:448:22:448:22 | (unsigned int)... | 1.0 | | test.c:448:27:448:28 | 14 | 1.0 | | test.c:448:27:448:28 | (unsigned int)... | 1.0 | -| test.c:449:11:449:61 | (...) | 324.0 | +| test.c:449:11:449:61 | (...) | 225.0 | | test.c:449:12:449:13 | 14 | 1.0 | | test.c:449:12:449:13 | (unsigned int)... | 1.0 | -| test.c:449:12:449:24 | ... * ... | 18.0 | +| test.c:449:12:449:24 | ... * ... | 15.0 | | test.c:449:12:449:34 | ... > ... | 1.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 324.0 | -| test.c:449:17:449:24 | (...) | 18.0 | +| test.c:449:12:449:60 | ... ? ... : ... | 225.0 | +| test.c:449:17:449:24 | (...) | 15.0 | | test.c:449:18:449:18 | 2 | 1.0 | | test.c:449:18:449:18 | (unsigned int)... | 1.0 | -| test.c:449:18:449:23 | ... * ... | 18.0 | -| test.c:449:22:449:23 | ip | 18.0 | +| test.c:449:18:449:23 | ... * ... | 15.0 | +| test.c:449:22:449:23 | ip | 15.0 | | test.c:449:28:449:29 | 17 | 1.0 | | test.c:449:28:449:29 | (unsigned int)... | 1.0 | -| test.c:449:28:449:34 | ... * ... | 18.0 | -| test.c:449:33:449:34 | ip | 18.0 | +| test.c:449:28:449:34 | ... * ... | 15.0 | +| test.c:449:33:449:34 | ip | 15.0 | | test.c:449:38:449:39 | 17 | 1.0 | | test.c:449:38:449:39 | (unsigned int)... | 1.0 | -| test.c:449:38:449:50 | ... * ... | 18.0 | -| test.c:449:43:449:50 | (...) | 18.0 | +| test.c:449:38:449:50 | ... * ... | 15.0 | +| test.c:449:43:449:50 | (...) | 15.0 | | test.c:449:44:449:44 | 2 | 1.0 | | test.c:449:44:449:44 | (unsigned int)... | 1.0 | -| test.c:449:44:449:49 | ... * ... | 18.0 | -| test.c:449:48:449:49 | ip | 18.0 | +| test.c:449:44:449:49 | ... * ... | 15.0 | +| test.c:449:48:449:49 | ip | 15.0 | | test.c:449:54:449:55 | 17 | 1.0 | | test.c:449:54:449:55 | (unsigned int)... | 1.0 | -| test.c:449:54:449:60 | ... * ... | 18.0 | -| test.c:449:59:449:60 | ip | 18.0 | -| test.c:450:15:450:26 | (...) | 54.0 | -| test.c:450:15:450:31 | ... * ... | 54.0 | +| test.c:449:54:449:60 | ... * ... | 15.0 | +| test.c:449:59:449:60 | ip | 15.0 | +| test.c:450:15:450:26 | (...) | 31.0 | +| test.c:450:15:450:31 | ... * ... | 31.0 | | test.c:450:16:450:16 | 2 | 1.0 | | test.c:450:16:450:16 | (unsigned int)... | 1.0 | -| test.c:450:16:450:21 | ... * ... | 54.0 | -| test.c:450:16:450:25 | ... + ... | 54.0 | -| test.c:450:20:450:21 | ip | 54.0 | +| test.c:450:16:450:21 | ... * ... | 31.0 | +| test.c:450:16:450:25 | ... + ... | 31.0 | +| test.c:450:20:450:21 | ip | 31.0 | | test.c:450:25:450:25 | 1 | 1.0 | | test.c:450:25:450:25 | (unsigned int)... | 1.0 | | test.c:450:30:450:31 | 14 | 1.0 | | test.c:450:30:450:31 | (unsigned int)... | 1.0 | | test.c:451:15:451:16 | 14 | 1.0 | | test.c:451:15:451:16 | (unsigned int)... | 1.0 | -| test.c:451:15:451:27 | ... * ... | 54.0 | +| test.c:451:15:451:27 | ... * ... | 31.0 | | test.c:451:15:451:37 | ... > ... | 1.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 2916.0 | -| test.c:451:20:451:27 | (...) | 54.0 | +| test.c:451:15:453:23 | ... ? ... : ... | 961.0 | +| test.c:451:20:451:27 | (...) | 31.0 | | test.c:451:21:451:21 | 2 | 1.0 | | test.c:451:21:451:21 | (unsigned int)... | 1.0 | -| test.c:451:21:451:26 | ... * ... | 54.0 | -| test.c:451:25:451:26 | ip | 54.0 | +| test.c:451:21:451:26 | ... * ... | 31.0 | +| test.c:451:25:451:26 | ip | 31.0 | | test.c:451:31:451:32 | 17 | 1.0 | | test.c:451:31:451:32 | (unsigned int)... | 1.0 | -| test.c:451:31:451:37 | ... * ... | 54.0 | -| test.c:451:36:451:37 | ip | 54.0 | +| test.c:451:31:451:37 | ... * ... | 31.0 | +| test.c:451:36:451:37 | ip | 31.0 | | test.c:452:17:452:18 | 14 | 1.0 | | test.c:452:17:452:18 | (unsigned int)... | 1.0 | -| test.c:452:17:452:29 | ... * ... | 54.0 | -| test.c:452:22:452:29 | (...) | 54.0 | +| test.c:452:17:452:29 | ... * ... | 31.0 | +| test.c:452:22:452:29 | (...) | 31.0 | | test.c:452:23:452:23 | 2 | 1.0 | | test.c:452:23:452:23 | (unsigned int)... | 1.0 | -| test.c:452:23:452:28 | ... * ... | 54.0 | -| test.c:452:27:452:28 | ip | 54.0 | +| test.c:452:23:452:28 | ... * ... | 31.0 | +| test.c:452:27:452:28 | ip | 31.0 | | test.c:453:17:453:18 | 14 | 1.0 | | test.c:453:17:453:18 | (unsigned int)... | 1.0 | -| test.c:453:17:453:23 | ... * ... | 54.0 | -| test.c:453:22:453:23 | ip | 54.0 | +| test.c:453:17:453:23 | ... * ... | 31.0 | +| test.c:453:22:453:23 | ip | 31.0 | | test.c:454:11:454:11 | 2 | 1.0 | | test.c:454:11:454:11 | (unsigned int)... | 1.0 | -| test.c:454:11:454:16 | ... * ... | 18.0 | -| test.c:454:11:454:21 | ... * ... | 18.0 | -| test.c:454:11:454:41 | ... + ... | 324.0 | -| test.c:454:15:454:16 | ip | 18.0 | +| test.c:454:11:454:16 | ... * ... | 15.0 | +| test.c:454:11:454:21 | ... * ... | 15.0 | +| test.c:454:11:454:41 | ... + ... | 225.0 | +| test.c:454:15:454:16 | ip | 15.0 | | test.c:454:20:454:21 | 14 | 1.0 | | test.c:454:20:454:21 | (unsigned int)... | 1.0 | -| test.c:454:25:454:36 | (...) | 18.0 | -| test.c:454:25:454:41 | ... * ... | 18.0 | +| test.c:454:25:454:36 | (...) | 15.0 | +| test.c:454:25:454:41 | ... * ... | 15.0 | | test.c:454:26:454:26 | 2 | 1.0 | | test.c:454:26:454:26 | (unsigned int)... | 1.0 | -| test.c:454:26:454:31 | ... * ... | 18.0 | -| test.c:454:26:454:35 | ... + ... | 18.0 | -| test.c:454:30:454:31 | ip | 18.0 | +| test.c:454:26:454:31 | ... * ... | 15.0 | +| test.c:454:26:454:35 | ... + ... | 15.0 | +| test.c:454:30:454:31 | ip | 15.0 | | test.c:454:35:454:35 | 1 | 1.0 | | test.c:454:35:454:35 | (unsigned int)... | 1.0 | | test.c:454:40:454:41 | 17 | 1.0 | | test.c:454:40:454:41 | (unsigned int)... | 1.0 | -| test.c:455:5:474:24 | (...) | 3.2788673396080446E29 | +| test.c:455:5:474:24 | (...) | 6.6142118960740864E25 | | test.c:455:6:455:6 | 4 | 1.0 | | test.c:455:6:455:6 | (unsigned int)... | 1.0 | -| test.c:455:6:455:23 | ... * ... | 180.0 | -| test.c:455:6:456:24 | ... + ... | 32400.0 | -| test.c:455:6:457:24 | ... + ... | 5832000.0 | -| test.c:455:6:462:20 | ... + ... | 9.18330048E14 | +| test.c:455:6:455:23 | ... * ... | 108.0 | +| test.c:455:6:456:24 | ... + ... | 11664.0 | +| test.c:455:6:457:24 | ... + ... | 1259712.0 | +| test.c:455:6:462:20 | ... + ... | 1.2872131505856E13 | | test.c:455:6:463:55 | ... > ... | 1.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 3.2788673396080446E29 | -| test.c:455:10:455:23 | (...) | 180.0 | -| test.c:455:11:455:12 | ip | 180.0 | -| test.c:455:11:455:17 | ... * ... | 180.0 | -| test.c:455:11:455:22 | ... + ... | 180.0 | +| test.c:455:6:474:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:455:10:455:23 | (...) | 108.0 | +| test.c:455:11:455:12 | ip | 108.0 | +| test.c:455:11:455:17 | ... * ... | 108.0 | +| test.c:455:11:455:22 | ... + ... | 108.0 | | test.c:455:16:455:17 | 14 | 1.0 | | test.c:455:16:455:17 | (unsigned int)... | 1.0 | | test.c:455:21:455:22 | 32 | 1.0 | | test.c:455:21:455:22 | (unsigned int)... | 1.0 | -| test.c:456:7:456:24 | (...) | 180.0 | +| test.c:456:7:456:24 | (...) | 108.0 | | test.c:456:8:456:8 | 2 | 1.0 | | test.c:456:8:456:8 | (unsigned int)... | 1.0 | -| test.c:456:8:456:13 | ... * ... | 180.0 | -| test.c:456:8:456:18 | ... * ... | 180.0 | -| test.c:456:8:456:23 | ... + ... | 180.0 | -| test.c:456:12:456:13 | ip | 180.0 | +| test.c:456:8:456:13 | ... * ... | 108.0 | +| test.c:456:8:456:18 | ... * ... | 108.0 | +| test.c:456:8:456:23 | ... + ... | 108.0 | +| test.c:456:12:456:13 | ip | 108.0 | | test.c:456:17:456:18 | 14 | 1.0 | | test.c:456:17:456:18 | (unsigned int)... | 1.0 | | test.c:456:22:456:23 | 32 | 1.0 | | test.c:456:22:456:23 | (unsigned int)... | 1.0 | | test.c:457:7:457:7 | 2 | 1.0 | | test.c:457:7:457:7 | (unsigned int)... | 1.0 | -| test.c:457:7:457:24 | ... * ... | 180.0 | -| test.c:457:11:457:24 | (...) | 180.0 | -| test.c:457:12:457:13 | ip | 180.0 | -| test.c:457:12:457:18 | ... * ... | 180.0 | -| test.c:457:12:457:23 | ... + ... | 180.0 | +| test.c:457:7:457:24 | ... * ... | 108.0 | +| test.c:457:11:457:24 | (...) | 108.0 | +| test.c:457:12:457:13 | ip | 108.0 | +| test.c:457:12:457:18 | ... * ... | 108.0 | +| test.c:457:12:457:23 | ... + ... | 108.0 | | test.c:457:17:457:18 | 14 | 1.0 | | test.c:457:17:457:18 | (unsigned int)... | 1.0 | | test.c:457:22:457:23 | 64 | 1.0 | | test.c:457:22:457:23 | (unsigned int)... | 1.0 | -| test.c:458:7:462:20 | (...) | 1.57464E8 | -| test.c:458:8:458:19 | (...) | 180.0 | -| test.c:458:8:458:24 | ... * ... | 180.0 | +| test.c:458:7:462:20 | (...) | 1.0218313E7 | +| test.c:458:8:458:19 | (...) | 108.0 | +| test.c:458:8:458:24 | ... * ... | 108.0 | | test.c:458:8:458:78 | ... > ... | 1.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 1.57464E8 | +| test.c:458:8:462:19 | ... ? ... : ... | 1.0218313E7 | | test.c:458:9:458:9 | 2 | 1.0 | | test.c:458:9:458:9 | (unsigned int)... | 1.0 | -| test.c:458:9:458:14 | ... * ... | 180.0 | -| test.c:458:9:458:18 | ... + ... | 180.0 | -| test.c:458:13:458:14 | ip | 180.0 | +| test.c:458:9:458:14 | ... * ... | 108.0 | +| test.c:458:9:458:18 | ... + ... | 108.0 | +| test.c:458:13:458:14 | ip | 108.0 | | test.c:458:18:458:18 | 1 | 1.0 | | test.c:458:18:458:18 | (unsigned int)... | 1.0 | | test.c:458:23:458:24 | 14 | 1.0 | | test.c:458:23:458:24 | (unsigned int)... | 1.0 | -| test.c:458:28:458:78 | (...) | 32400.0 | +| test.c:458:28:458:78 | (...) | 11664.0 | | test.c:458:29:458:30 | 17 | 1.0 | | test.c:458:29:458:30 | (unsigned int)... | 1.0 | -| test.c:458:29:458:41 | ... * ... | 180.0 | +| test.c:458:29:458:41 | ... * ... | 108.0 | | test.c:458:29:458:51 | ... > ... | 1.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 32400.0 | -| test.c:458:34:458:41 | (...) | 180.0 | +| test.c:458:29:458:77 | ... ? ... : ... | 11664.0 | +| test.c:458:34:458:41 | (...) | 108.0 | | test.c:458:35:458:35 | 2 | 1.0 | | test.c:458:35:458:35 | (unsigned int)... | 1.0 | -| test.c:458:35:458:40 | ... * ... | 180.0 | -| test.c:458:39:458:40 | ip | 180.0 | +| test.c:458:35:458:40 | ... * ... | 108.0 | +| test.c:458:39:458:40 | ip | 108.0 | | test.c:458:45:458:46 | 17 | 1.0 | | test.c:458:45:458:46 | (unsigned int)... | 1.0 | -| test.c:458:45:458:51 | ... * ... | 180.0 | -| test.c:458:50:458:51 | ip | 180.0 | +| test.c:458:45:458:51 | ... * ... | 108.0 | +| test.c:458:50:458:51 | ip | 108.0 | | test.c:458:55:458:56 | 17 | 1.0 | | test.c:458:55:458:56 | (unsigned int)... | 1.0 | -| test.c:458:55:458:67 | ... * ... | 180.0 | -| test.c:458:60:458:67 | (...) | 180.0 | +| test.c:458:55:458:67 | ... * ... | 108.0 | +| test.c:458:60:458:67 | (...) | 108.0 | | test.c:458:61:458:61 | 2 | 1.0 | | test.c:458:61:458:61 | (unsigned int)... | 1.0 | -| test.c:458:61:458:66 | ... * ... | 180.0 | -| test.c:458:65:458:66 | ip | 180.0 | +| test.c:458:61:458:66 | ... * ... | 108.0 | +| test.c:458:65:458:66 | ip | 108.0 | | test.c:458:71:458:72 | 17 | 1.0 | | test.c:458:71:458:72 | (unsigned int)... | 1.0 | -| test.c:458:71:458:77 | ... * ... | 180.0 | -| test.c:458:76:458:77 | ip | 180.0 | -| test.c:459:11:459:22 | (...) | 540.0 | -| test.c:459:11:459:27 | ... * ... | 540.0 | +| test.c:458:71:458:77 | ... * ... | 108.0 | +| test.c:458:76:458:77 | ip | 108.0 | +| test.c:459:11:459:22 | (...) | 217.0 | +| test.c:459:11:459:27 | ... * ... | 217.0 | | test.c:459:12:459:12 | 2 | 1.0 | | test.c:459:12:459:12 | (unsigned int)... | 1.0 | -| test.c:459:12:459:17 | ... * ... | 540.0 | -| test.c:459:12:459:21 | ... + ... | 540.0 | -| test.c:459:16:459:17 | ip | 540.0 | +| test.c:459:12:459:17 | ... * ... | 217.0 | +| test.c:459:12:459:21 | ... + ... | 217.0 | +| test.c:459:16:459:17 | ip | 217.0 | | test.c:459:21:459:21 | 1 | 1.0 | | test.c:459:21:459:21 | (unsigned int)... | 1.0 | | test.c:459:26:459:27 | 14 | 1.0 | | test.c:459:26:459:27 | (unsigned int)... | 1.0 | | test.c:460:11:460:12 | 14 | 1.0 | | test.c:460:11:460:12 | (unsigned int)... | 1.0 | -| test.c:460:11:460:23 | ... * ... | 540.0 | +| test.c:460:11:460:23 | ... * ... | 217.0 | | test.c:460:11:460:33 | ... > ... | 1.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 291600.0 | -| test.c:460:16:460:23 | (...) | 540.0 | +| test.c:460:11:462:19 | ... ? ... : ... | 47089.0 | +| test.c:460:16:460:23 | (...) | 217.0 | | test.c:460:17:460:17 | 2 | 1.0 | | test.c:460:17:460:17 | (unsigned int)... | 1.0 | -| test.c:460:17:460:22 | ... * ... | 540.0 | -| test.c:460:21:460:22 | ip | 540.0 | +| test.c:460:17:460:22 | ... * ... | 217.0 | +| test.c:460:21:460:22 | ip | 217.0 | | test.c:460:27:460:28 | 17 | 1.0 | | test.c:460:27:460:28 | (unsigned int)... | 1.0 | -| test.c:460:27:460:33 | ... * ... | 540.0 | -| test.c:460:32:460:33 | ip | 540.0 | +| test.c:460:27:460:33 | ... * ... | 217.0 | +| test.c:460:32:460:33 | ip | 217.0 | | test.c:461:13:461:14 | 14 | 1.0 | | test.c:461:13:461:14 | (unsigned int)... | 1.0 | -| test.c:461:13:461:25 | ... * ... | 540.0 | -| test.c:461:18:461:25 | (...) | 540.0 | +| test.c:461:13:461:25 | ... * ... | 217.0 | +| test.c:461:18:461:25 | (...) | 217.0 | | test.c:461:19:461:19 | 2 | 1.0 | | test.c:461:19:461:19 | (unsigned int)... | 1.0 | -| test.c:461:19:461:24 | ... * ... | 540.0 | -| test.c:461:23:461:24 | ip | 540.0 | +| test.c:461:19:461:24 | ... * ... | 217.0 | +| test.c:461:23:461:24 | ip | 217.0 | | test.c:462:13:462:14 | 14 | 1.0 | | test.c:462:13:462:14 | (unsigned int)... | 1.0 | -| test.c:462:13:462:19 | ... * ... | 540.0 | -| test.c:462:18:462:19 | ip | 540.0 | -| test.c:463:5:463:55 | (...) | 2624400.0 | +| test.c:462:13:462:19 | ... * ... | 217.0 | +| test.c:462:18:462:19 | ip | 217.0 | +| test.c:463:5:463:55 | (...) | 423801.0 | | test.c:463:6:463:7 | 14 | 1.0 | | test.c:463:6:463:7 | (unsigned int)... | 1.0 | -| test.c:463:6:463:12 | ... * ... | 1620.0 | +| test.c:463:6:463:12 | ... * ... | 651.0 | | test.c:463:6:463:28 | ... > ... | 1.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 2624400.0 | -| test.c:463:11:463:12 | ip | 1620.0 | -| test.c:463:16:463:23 | (...) | 1620.0 | -| test.c:463:16:463:28 | ... * ... | 1620.0 | -| test.c:463:17:463:18 | ip | 1620.0 | -| test.c:463:17:463:22 | ... + ... | 1620.0 | +| test.c:463:6:463:54 | ... ? ... : ... | 423801.0 | +| test.c:463:11:463:12 | ip | 651.0 | +| test.c:463:16:463:23 | (...) | 651.0 | +| test.c:463:16:463:28 | ... * ... | 651.0 | +| test.c:463:17:463:18 | ip | 651.0 | +| test.c:463:17:463:22 | ... + ... | 651.0 | | test.c:463:22:463:22 | 1 | 1.0 | | test.c:463:22:463:22 | (unsigned int)... | 1.0 | | test.c:463:27:463:28 | 17 | 1.0 | | test.c:463:27:463:28 | (unsigned int)... | 1.0 | | test.c:463:32:463:33 | 17 | 1.0 | | test.c:463:32:463:33 | (unsigned int)... | 1.0 | -| test.c:463:32:463:38 | ... * ... | 1620.0 | -| test.c:463:37:463:38 | ip | 1620.0 | -| test.c:463:42:463:49 | (...) | 1620.0 | -| test.c:463:42:463:54 | ... * ... | 1620.0 | -| test.c:463:43:463:44 | ip | 1620.0 | -| test.c:463:43:463:48 | ... + ... | 1620.0 | +| test.c:463:32:463:38 | ... * ... | 651.0 | +| test.c:463:37:463:38 | ip | 651.0 | +| test.c:463:42:463:49 | (...) | 651.0 | +| test.c:463:42:463:54 | ... * ... | 651.0 | +| test.c:463:43:463:44 | ip | 651.0 | +| test.c:463:43:463:48 | ... + ... | 651.0 | | test.c:463:48:463:48 | 1 | 1.0 | | test.c:463:48:463:48 | (unsigned int)... | 1.0 | | test.c:463:53:463:54 | 17 | 1.0 | | test.c:463:53:463:54 | (unsigned int)... | 1.0 | | test.c:464:9:464:9 | 4 | 1.0 | | test.c:464:9:464:9 | (unsigned int)... | 1.0 | -| test.c:464:9:464:26 | ... * ... | 3240.0 | -| test.c:464:9:465:26 | ... + ... | 1.04976E7 | -| test.c:464:9:466:26 | ... + ... | 3.4012224E10 | -| test.c:464:9:471:22 | ... + ... | 3.123444729850675E22 | -| test.c:464:13:464:26 | (...) | 3240.0 | -| test.c:464:14:464:15 | ip | 3240.0 | -| test.c:464:14:464:20 | ... * ... | 3240.0 | -| test.c:464:14:464:25 | ... + ... | 3240.0 | +| test.c:464:9:464:26 | ... * ... | 1302.0 | +| test.c:464:9:465:26 | ... + ... | 1695204.0 | +| test.c:464:9:466:26 | ... + ... | 2.207155608E9 | +| test.c:464:9:471:22 | ... + ... | 3.9017203216097214E19 | +| test.c:464:13:464:26 | (...) | 1302.0 | +| test.c:464:14:464:15 | ip | 1302.0 | +| test.c:464:14:464:20 | ... * ... | 1302.0 | +| test.c:464:14:464:25 | ... + ... | 1302.0 | | test.c:464:19:464:20 | 14 | 1.0 | | test.c:464:19:464:20 | (unsigned int)... | 1.0 | | test.c:464:24:464:25 | 32 | 1.0 | | test.c:464:24:464:25 | (unsigned int)... | 1.0 | -| test.c:465:9:465:26 | (...) | 3240.0 | +| test.c:465:9:465:26 | (...) | 1302.0 | | test.c:465:10:465:10 | 2 | 1.0 | | test.c:465:10:465:10 | (unsigned int)... | 1.0 | -| test.c:465:10:465:15 | ... * ... | 3240.0 | -| test.c:465:10:465:20 | ... * ... | 3240.0 | -| test.c:465:10:465:25 | ... + ... | 3240.0 | -| test.c:465:14:465:15 | ip | 3240.0 | +| test.c:465:10:465:15 | ... * ... | 1302.0 | +| test.c:465:10:465:20 | ... * ... | 1302.0 | +| test.c:465:10:465:25 | ... + ... | 1302.0 | +| test.c:465:14:465:15 | ip | 1302.0 | | test.c:465:19:465:20 | 14 | 1.0 | | test.c:465:19:465:20 | (unsigned int)... | 1.0 | | test.c:465:24:465:25 | 32 | 1.0 | | test.c:465:24:465:25 | (unsigned int)... | 1.0 | | test.c:466:9:466:9 | 2 | 1.0 | | test.c:466:9:466:9 | (unsigned int)... | 1.0 | -| test.c:466:9:466:26 | ... * ... | 3240.0 | -| test.c:466:13:466:26 | (...) | 3240.0 | -| test.c:466:14:466:15 | ip | 3240.0 | -| test.c:466:14:466:20 | ... * ... | 3240.0 | -| test.c:466:14:466:25 | ... + ... | 3240.0 | +| test.c:466:9:466:26 | ... * ... | 1302.0 | +| test.c:466:13:466:26 | (...) | 1302.0 | +| test.c:466:14:466:15 | ip | 1302.0 | +| test.c:466:14:466:20 | ... * ... | 1302.0 | +| test.c:466:14:466:25 | ... + ... | 1302.0 | | test.c:466:19:466:20 | 14 | 1.0 | | test.c:466:19:466:20 | (unsigned int)... | 1.0 | | test.c:466:24:466:25 | 64 | 1.0 | | test.c:466:24:466:25 | (unsigned int)... | 1.0 | -| test.c:467:9:471:22 | (...) | 9.18330048E11 | -| test.c:467:10:467:21 | (...) | 3240.0 | -| test.c:467:10:467:26 | ... * ... | 3240.0 | +| test.c:467:9:471:22 | (...) | 1.7677595125E10 | +| test.c:467:10:467:21 | (...) | 1302.0 | +| test.c:467:10:467:26 | ... * ... | 1302.0 | | test.c:467:10:467:80 | ... > ... | 1.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 9.18330048E11 | +| test.c:467:10:471:21 | ... ? ... : ... | 1.7677595125E10 | | test.c:467:11:467:11 | 2 | 1.0 | | test.c:467:11:467:11 | (unsigned int)... | 1.0 | -| test.c:467:11:467:16 | ... * ... | 3240.0 | -| test.c:467:11:467:20 | ... + ... | 3240.0 | -| test.c:467:15:467:16 | ip | 3240.0 | +| test.c:467:11:467:16 | ... * ... | 1302.0 | +| test.c:467:11:467:20 | ... + ... | 1302.0 | +| test.c:467:15:467:16 | ip | 1302.0 | | test.c:467:20:467:20 | 1 | 1.0 | | test.c:467:20:467:20 | (unsigned int)... | 1.0 | | test.c:467:25:467:26 | 14 | 1.0 | | test.c:467:25:467:26 | (unsigned int)... | 1.0 | -| test.c:467:30:467:80 | (...) | 1.04976E7 | +| test.c:467:30:467:80 | (...) | 1695204.0 | | test.c:467:31:467:32 | 17 | 1.0 | | test.c:467:31:467:32 | (unsigned int)... | 1.0 | -| test.c:467:31:467:43 | ... * ... | 3240.0 | +| test.c:467:31:467:43 | ... * ... | 1302.0 | | test.c:467:31:467:53 | ... > ... | 1.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 1.04976E7 | -| test.c:467:36:467:43 | (...) | 3240.0 | +| test.c:467:31:467:79 | ... ? ... : ... | 1695204.0 | +| test.c:467:36:467:43 | (...) | 1302.0 | | test.c:467:37:467:37 | 2 | 1.0 | | test.c:467:37:467:37 | (unsigned int)... | 1.0 | -| test.c:467:37:467:42 | ... * ... | 3240.0 | -| test.c:467:41:467:42 | ip | 3240.0 | +| test.c:467:37:467:42 | ... * ... | 1302.0 | +| test.c:467:41:467:42 | ip | 1302.0 | | test.c:467:47:467:48 | 17 | 1.0 | | test.c:467:47:467:48 | (unsigned int)... | 1.0 | -| test.c:467:47:467:53 | ... * ... | 3240.0 | -| test.c:467:52:467:53 | ip | 3240.0 | +| test.c:467:47:467:53 | ... * ... | 1302.0 | +| test.c:467:52:467:53 | ip | 1302.0 | | test.c:467:57:467:58 | 17 | 1.0 | | test.c:467:57:467:58 | (unsigned int)... | 1.0 | -| test.c:467:57:467:69 | ... * ... | 3240.0 | -| test.c:467:62:467:69 | (...) | 3240.0 | +| test.c:467:57:467:69 | ... * ... | 1302.0 | +| test.c:467:62:467:69 | (...) | 1302.0 | | test.c:467:63:467:63 | 2 | 1.0 | | test.c:467:63:467:63 | (unsigned int)... | 1.0 | -| test.c:467:63:467:68 | ... * ... | 3240.0 | -| test.c:467:67:467:68 | ip | 3240.0 | +| test.c:467:63:467:68 | ... * ... | 1302.0 | +| test.c:467:67:467:68 | ip | 1302.0 | | test.c:467:73:467:74 | 17 | 1.0 | | test.c:467:73:467:74 | (unsigned int)... | 1.0 | -| test.c:467:73:467:79 | ... * ... | 3240.0 | -| test.c:467:78:467:79 | ip | 3240.0 | -| test.c:468:13:468:24 | (...) | 9720.0 | -| test.c:468:13:468:29 | ... * ... | 9720.0 | +| test.c:467:73:467:79 | ... * ... | 1302.0 | +| test.c:467:78:467:79 | ip | 1302.0 | +| test.c:468:13:468:24 | (...) | 2605.0 | +| test.c:468:13:468:29 | ... * ... | 2605.0 | | test.c:468:14:468:14 | 2 | 1.0 | | test.c:468:14:468:14 | (unsigned int)... | 1.0 | -| test.c:468:14:468:19 | ... * ... | 9720.0 | -| test.c:468:14:468:23 | ... + ... | 9720.0 | -| test.c:468:18:468:19 | ip | 9720.0 | +| test.c:468:14:468:19 | ... * ... | 2605.0 | +| test.c:468:14:468:23 | ... + ... | 2605.0 | +| test.c:468:18:468:19 | ip | 2605.0 | | test.c:468:23:468:23 | 1 | 1.0 | | test.c:468:23:468:23 | (unsigned int)... | 1.0 | | test.c:468:28:468:29 | 14 | 1.0 | | test.c:468:28:468:29 | (unsigned int)... | 1.0 | | test.c:469:13:469:14 | 14 | 1.0 | | test.c:469:13:469:14 | (unsigned int)... | 1.0 | -| test.c:469:13:469:25 | ... * ... | 9720.0 | +| test.c:469:13:469:25 | ... * ... | 2605.0 | | test.c:469:13:469:35 | ... > ... | 1.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 9.44784E7 | -| test.c:469:18:469:25 | (...) | 9720.0 | +| test.c:469:13:471:21 | ... ? ... : ... | 6786025.0 | +| test.c:469:18:469:25 | (...) | 2605.0 | | test.c:469:19:469:19 | 2 | 1.0 | | test.c:469:19:469:19 | (unsigned int)... | 1.0 | -| test.c:469:19:469:24 | ... * ... | 9720.0 | -| test.c:469:23:469:24 | ip | 9720.0 | +| test.c:469:19:469:24 | ... * ... | 2605.0 | +| test.c:469:23:469:24 | ip | 2605.0 | | test.c:469:29:469:30 | 17 | 1.0 | | test.c:469:29:469:30 | (unsigned int)... | 1.0 | -| test.c:469:29:469:35 | ... * ... | 9720.0 | -| test.c:469:34:469:35 | ip | 9720.0 | +| test.c:469:29:469:35 | ... * ... | 2605.0 | +| test.c:469:34:469:35 | ip | 2605.0 | | test.c:470:15:470:16 | 14 | 1.0 | | test.c:470:15:470:16 | (unsigned int)... | 1.0 | -| test.c:470:15:470:27 | ... * ... | 9720.0 | -| test.c:470:20:470:27 | (...) | 9720.0 | +| test.c:470:15:470:27 | ... * ... | 2605.0 | +| test.c:470:20:470:27 | (...) | 2605.0 | | test.c:470:21:470:21 | 2 | 1.0 | | test.c:470:21:470:21 | (unsigned int)... | 1.0 | -| test.c:470:21:470:26 | ... * ... | 9720.0 | -| test.c:470:25:470:26 | ip | 9720.0 | +| test.c:470:21:470:26 | ... * ... | 2605.0 | +| test.c:470:25:470:26 | ip | 2605.0 | | test.c:471:15:471:16 | 14 | 1.0 | | test.c:471:15:471:16 | (unsigned int)... | 1.0 | -| test.c:471:15:471:21 | ... * ... | 9720.0 | -| test.c:471:20:471:21 | ip | 9720.0 | +| test.c:471:15:471:21 | ... * ... | 2605.0 | +| test.c:471:20:471:21 | ip | 2605.0 | | test.c:472:9:472:10 | 14 | 1.0 | | test.c:472:9:472:10 | (unsigned int)... | 1.0 | -| test.c:472:9:472:15 | ... * ... | 3240.0 | +| test.c:472:9:472:15 | ... * ... | 1302.0 | | test.c:472:9:472:31 | ... > ... | 1.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 1.04976E7 | -| test.c:472:14:472:15 | ip | 3240.0 | -| test.c:472:19:472:26 | (...) | 3240.0 | -| test.c:472:19:472:31 | ... * ... | 3240.0 | -| test.c:472:20:472:21 | ip | 3240.0 | -| test.c:472:20:472:25 | ... + ... | 3240.0 | +| test.c:472:9:474:23 | ... ? ... : ... | 1695204.0 | +| test.c:472:14:472:15 | ip | 1302.0 | +| test.c:472:19:472:26 | (...) | 1302.0 | +| test.c:472:19:472:31 | ... * ... | 1302.0 | +| test.c:472:20:472:21 | ip | 1302.0 | +| test.c:472:20:472:25 | ... + ... | 1302.0 | | test.c:472:25:472:25 | 1 | 1.0 | | test.c:472:25:472:25 | (unsigned int)... | 1.0 | | test.c:472:30:472:31 | 17 | 1.0 | | test.c:472:30:472:31 | (unsigned int)... | 1.0 | | test.c:473:11:473:12 | 14 | 1.0 | | test.c:473:11:473:12 | (unsigned int)... | 1.0 | -| test.c:473:11:473:17 | ... * ... | 3240.0 | -| test.c:473:16:473:17 | ip | 3240.0 | -| test.c:474:11:474:18 | (...) | 3240.0 | -| test.c:474:11:474:23 | ... * ... | 3240.0 | -| test.c:474:12:474:13 | ip | 3240.0 | -| test.c:474:12:474:17 | ... + ... | 3240.0 | +| test.c:473:11:473:17 | ... * ... | 1302.0 | +| test.c:473:16:473:17 | ip | 1302.0 | +| test.c:474:11:474:18 | (...) | 1302.0 | +| test.c:474:11:474:23 | ... * ... | 1302.0 | +| test.c:474:12:474:13 | ip | 1302.0 | +| test.c:474:12:474:17 | ... + ... | 1302.0 | | test.c:474:17:474:17 | 1 | 1.0 | | test.c:474:17:474:17 | (unsigned int)... | 1.0 | | test.c:474:22:474:23 | 14 | 1.0 | | test.c:474:22:474:23 | (unsigned int)... | 1.0 | | test.c:475:9:475:9 | 2 | 1.0 | | test.c:475:9:475:9 | (unsigned int)... | 1.0 | -| test.c:475:9:475:26 | ... * ... | 35640.0 | -| test.c:475:9:495:44 | ... + ... | 1.0783086720993898E50 | -| test.c:475:13:475:26 | (...) | 35640.0 | -| test.c:475:14:475:15 | ip | 35640.0 | -| test.c:475:14:475:20 | ... * ... | 35640.0 | -| test.c:475:14:475:25 | ... + ... | 35640.0 | +| test.c:475:9:475:26 | ... * ... | 10419.0 | +| test.c:475:9:495:44 | ... + ... | 1.9449636104972528E43 | +| test.c:475:13:475:26 | (...) | 10419.0 | +| test.c:475:14:475:15 | ip | 10419.0 | +| test.c:475:14:475:20 | ... * ... | 10419.0 | +| test.c:475:14:475:25 | ... + ... | 10419.0 | | test.c:475:19:475:20 | 14 | 1.0 | | test.c:475:19:475:20 | (unsigned int)... | 1.0 | | test.c:475:24:475:25 | 32 | 1.0 | | test.c:475:24:475:25 | (unsigned int)... | 1.0 | -| test.c:476:9:495:44 | (...) | 3.0255574413563125E45 | +| test.c:476:9:495:44 | (...) | 1.8667469147684545E39 | | test.c:476:10:476:10 | 4 | 1.0 | | test.c:476:10:476:10 | (unsigned int)... | 1.0 | -| test.c:476:10:476:27 | ... * ... | 35640.0 | -| test.c:476:10:477:28 | ... + ... | 1.2702096E9 | -| test.c:476:10:478:28 | ... + ... | 4.5270270144E13 | -| test.c:476:10:484:24 | ... + ... | 5.533372869058992E28 | +| test.c:476:10:476:27 | ... * ... | 10419.0 | +| test.c:476:10:477:28 | ... + ... | 1.08555561E8 | +| test.c:476:10:478:28 | ... + ... | 1.131040390059E12 | +| test.c:476:10:484:24 | ... + ... | 1.0235492350954187E25 | | test.c:476:10:485:39 | ... > ... | 1.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 3.0255574413563125E45 | -| test.c:476:14:476:27 | (...) | 35640.0 | -| test.c:476:15:476:16 | ip | 35640.0 | -| test.c:476:15:476:21 | ... * ... | 35640.0 | -| test.c:476:15:476:26 | ... + ... | 35640.0 | +| test.c:476:10:495:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:476:14:476:27 | (...) | 10419.0 | +| test.c:476:15:476:16 | ip | 10419.0 | +| test.c:476:15:476:21 | ... * ... | 10419.0 | +| test.c:476:15:476:26 | ... + ... | 10419.0 | | test.c:476:20:476:21 | 14 | 1.0 | | test.c:476:20:476:21 | (unsigned int)... | 1.0 | | test.c:476:25:476:26 | 32 | 1.0 | | test.c:476:25:476:26 | (unsigned int)... | 1.0 | -| test.c:477:11:477:28 | (...) | 35640.0 | +| test.c:477:11:477:28 | (...) | 10419.0 | | test.c:477:12:477:12 | 2 | 1.0 | | test.c:477:12:477:12 | (unsigned int)... | 1.0 | -| test.c:477:12:477:17 | ... * ... | 35640.0 | -| test.c:477:12:477:22 | ... * ... | 35640.0 | -| test.c:477:12:477:27 | ... + ... | 35640.0 | -| test.c:477:16:477:17 | ip | 35640.0 | +| test.c:477:12:477:17 | ... * ... | 10419.0 | +| test.c:477:12:477:22 | ... * ... | 10419.0 | +| test.c:477:12:477:27 | ... + ... | 10419.0 | +| test.c:477:16:477:17 | ip | 10419.0 | | test.c:477:21:477:22 | 14 | 1.0 | | test.c:477:21:477:22 | (unsigned int)... | 1.0 | | test.c:477:26:477:27 | 32 | 1.0 | | test.c:477:26:477:27 | (unsigned int)... | 1.0 | | test.c:478:11:478:11 | 2 | 1.0 | | test.c:478:11:478:11 | (unsigned int)... | 1.0 | -| test.c:478:11:478:28 | ... * ... | 35640.0 | -| test.c:478:15:478:28 | (...) | 35640.0 | -| test.c:478:16:478:17 | ip | 35640.0 | -| test.c:478:16:478:22 | ... * ... | 35640.0 | -| test.c:478:16:478:27 | ... + ... | 35640.0 | +| test.c:478:11:478:28 | ... * ... | 10419.0 | +| test.c:478:15:478:28 | (...) | 10419.0 | +| test.c:478:16:478:17 | ip | 10419.0 | +| test.c:478:16:478:22 | ... * ... | 10419.0 | +| test.c:478:16:478:27 | ... + ... | 10419.0 | | test.c:478:21:478:22 | 14 | 1.0 | | test.c:478:21:478:22 | (unsigned int)... | 1.0 | | test.c:478:26:478:27 | 64 | 1.0 | | test.c:478:26:478:27 | (unsigned int)... | 1.0 | -| test.c:479:11:484:24 | (...) | 1.222297293888E15 | -| test.c:479:12:479:23 | (...) | 35640.0 | -| test.c:479:12:479:28 | ... * ... | 35640.0 | +| test.c:479:11:484:24 | (...) | 9.049625849719E12 | +| test.c:479:12:479:23 | (...) | 10419.0 | +| test.c:479:12:479:28 | ... * ... | 10419.0 | | test.c:479:12:480:61 | ... > ... | 1.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 1.222297293888E15 | +| test.c:479:12:484:23 | ... ? ... : ... | 9.049625849719E12 | | test.c:479:13:479:13 | 2 | 1.0 | | test.c:479:13:479:13 | (unsigned int)... | 1.0 | -| test.c:479:13:479:18 | ... * ... | 35640.0 | -| test.c:479:13:479:22 | ... + ... | 35640.0 | -| test.c:479:17:479:18 | ip | 35640.0 | +| test.c:479:13:479:18 | ... * ... | 10419.0 | +| test.c:479:13:479:22 | ... + ... | 10419.0 | +| test.c:479:17:479:18 | ip | 10419.0 | | test.c:479:22:479:22 | 1 | 1.0 | | test.c:479:22:479:22 | (unsigned int)... | 1.0 | | test.c:479:27:479:28 | 14 | 1.0 | | test.c:479:27:479:28 | (unsigned int)... | 1.0 | -| test.c:480:11:480:61 | (...) | 1.2702096E9 | +| test.c:480:11:480:61 | (...) | 1.08555561E8 | | test.c:480:12:480:13 | 14 | 1.0 | | test.c:480:12:480:13 | (unsigned int)... | 1.0 | -| test.c:480:12:480:24 | ... * ... | 35640.0 | +| test.c:480:12:480:24 | ... * ... | 10419.0 | | test.c:480:12:480:34 | ... > ... | 1.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 1.2702096E9 | -| test.c:480:17:480:24 | (...) | 35640.0 | +| test.c:480:12:480:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:480:17:480:24 | (...) | 10419.0 | | test.c:480:18:480:18 | 2 | 1.0 | | test.c:480:18:480:18 | (unsigned int)... | 1.0 | -| test.c:480:18:480:23 | ... * ... | 35640.0 | -| test.c:480:22:480:23 | ip | 35640.0 | +| test.c:480:18:480:23 | ... * ... | 10419.0 | +| test.c:480:22:480:23 | ip | 10419.0 | | test.c:480:28:480:29 | 17 | 1.0 | | test.c:480:28:480:29 | (unsigned int)... | 1.0 | -| test.c:480:28:480:34 | ... * ... | 35640.0 | -| test.c:480:33:480:34 | ip | 35640.0 | +| test.c:480:28:480:34 | ... * ... | 10419.0 | +| test.c:480:33:480:34 | ip | 10419.0 | | test.c:480:38:480:39 | 17 | 1.0 | | test.c:480:38:480:39 | (unsigned int)... | 1.0 | -| test.c:480:38:480:50 | ... * ... | 35640.0 | -| test.c:480:43:480:50 | (...) | 35640.0 | +| test.c:480:38:480:50 | ... * ... | 10419.0 | +| test.c:480:43:480:50 | (...) | 10419.0 | | test.c:480:44:480:44 | 2 | 1.0 | | test.c:480:44:480:44 | (unsigned int)... | 1.0 | -| test.c:480:44:480:49 | ... * ... | 35640.0 | -| test.c:480:48:480:49 | ip | 35640.0 | +| test.c:480:44:480:49 | ... * ... | 10419.0 | +| test.c:480:48:480:49 | ip | 10419.0 | | test.c:480:54:480:55 | 17 | 1.0 | | test.c:480:54:480:55 | (unsigned int)... | 1.0 | -| test.c:480:54:480:60 | ... * ... | 35640.0 | -| test.c:480:59:480:60 | ip | 35640.0 | -| test.c:481:15:481:26 | (...) | 106920.0 | -| test.c:481:15:481:31 | ... * ... | 106920.0 | +| test.c:480:54:480:60 | ... * ... | 10419.0 | +| test.c:480:59:480:60 | ip | 10419.0 | +| test.c:481:15:481:26 | (...) | 20839.0 | +| test.c:481:15:481:31 | ... * ... | 20839.0 | | test.c:481:16:481:16 | 2 | 1.0 | | test.c:481:16:481:16 | (unsigned int)... | 1.0 | -| test.c:481:16:481:21 | ... * ... | 106920.0 | -| test.c:481:16:481:25 | ... + ... | 106920.0 | -| test.c:481:20:481:21 | ip | 106920.0 | +| test.c:481:16:481:21 | ... * ... | 20839.0 | +| test.c:481:16:481:25 | ... + ... | 20839.0 | +| test.c:481:20:481:21 | ip | 20839.0 | | test.c:481:25:481:25 | 1 | 1.0 | | test.c:481:25:481:25 | (unsigned int)... | 1.0 | | test.c:481:30:481:31 | 14 | 1.0 | | test.c:481:30:481:31 | (unsigned int)... | 1.0 | | test.c:482:15:482:16 | 14 | 1.0 | | test.c:482:15:482:16 | (unsigned int)... | 1.0 | -| test.c:482:15:482:27 | ... * ... | 106920.0 | +| test.c:482:15:482:27 | ... * ... | 20839.0 | | test.c:482:15:482:37 | ... > ... | 1.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 1.14318864E10 | -| test.c:482:20:482:27 | (...) | 106920.0 | +| test.c:482:15:484:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:482:20:482:27 | (...) | 20839.0 | | test.c:482:21:482:21 | 2 | 1.0 | | test.c:482:21:482:21 | (unsigned int)... | 1.0 | -| test.c:482:21:482:26 | ... * ... | 106920.0 | -| test.c:482:25:482:26 | ip | 106920.0 | +| test.c:482:21:482:26 | ... * ... | 20839.0 | +| test.c:482:25:482:26 | ip | 20839.0 | | test.c:482:31:482:32 | 17 | 1.0 | | test.c:482:31:482:32 | (unsigned int)... | 1.0 | -| test.c:482:31:482:37 | ... * ... | 106920.0 | -| test.c:482:36:482:37 | ip | 106920.0 | +| test.c:482:31:482:37 | ... * ... | 20839.0 | +| test.c:482:36:482:37 | ip | 20839.0 | | test.c:483:17:483:18 | 14 | 1.0 | | test.c:483:17:483:18 | (unsigned int)... | 1.0 | -| test.c:483:17:483:29 | ... * ... | 106920.0 | -| test.c:483:22:483:29 | (...) | 106920.0 | +| test.c:483:17:483:29 | ... * ... | 20839.0 | +| test.c:483:22:483:29 | (...) | 20839.0 | | test.c:483:23:483:23 | 2 | 1.0 | | test.c:483:23:483:23 | (unsigned int)... | 1.0 | -| test.c:483:23:483:28 | ... * ... | 106920.0 | -| test.c:483:27:483:28 | ip | 106920.0 | +| test.c:483:23:483:28 | ... * ... | 20839.0 | +| test.c:483:27:483:28 | ip | 20839.0 | | test.c:484:17:484:18 | 14 | 1.0 | | test.c:484:17:484:18 | (unsigned int)... | 1.0 | -| test.c:484:17:484:23 | ... * ... | 106920.0 | -| test.c:484:22:484:23 | ip | 106920.0 | +| test.c:484:17:484:23 | ... * ... | 20839.0 | +| test.c:484:22:484:23 | ip | 20839.0 | | test.c:485:9:485:9 | 2 | 1.0 | | test.c:485:9:485:9 | (unsigned int)... | 1.0 | -| test.c:485:9:485:14 | ... * ... | 320760.0 | -| test.c:485:9:485:19 | ... * ... | 320760.0 | -| test.c:485:9:485:39 | ... + ... | 1.028869776E11 | -| test.c:485:13:485:14 | ip | 320760.0 | +| test.c:485:9:485:14 | ... * ... | 62517.0 | +| test.c:485:9:485:19 | ... * ... | 62517.0 | +| test.c:485:9:485:39 | ... + ... | 3.908375289E9 | +| test.c:485:13:485:14 | ip | 62517.0 | | test.c:485:18:485:19 | 14 | 1.0 | | test.c:485:18:485:19 | (unsigned int)... | 1.0 | -| test.c:485:23:485:34 | (...) | 320760.0 | -| test.c:485:23:485:39 | ... * ... | 320760.0 | +| test.c:485:23:485:34 | (...) | 62517.0 | +| test.c:485:23:485:39 | ... * ... | 62517.0 | | test.c:485:24:485:24 | 2 | 1.0 | | test.c:485:24:485:24 | (unsigned int)... | 1.0 | -| test.c:485:24:485:29 | ... * ... | 320760.0 | -| test.c:485:24:485:33 | ... + ... | 320760.0 | -| test.c:485:28:485:29 | ip | 320760.0 | +| test.c:485:24:485:29 | ... * ... | 62517.0 | +| test.c:485:24:485:33 | ... + ... | 62517.0 | +| test.c:485:28:485:29 | ip | 62517.0 | | test.c:485:33:485:33 | 1 | 1.0 | | test.c:485:33:485:33 | (unsigned int)... | 1.0 | | test.c:485:38:485:39 | 17 | 1.0 | | test.c:485:38:485:39 | (unsigned int)... | 1.0 | | test.c:486:13:486:13 | 4 | 1.0 | | test.c:486:13:486:13 | (unsigned int)... | 1.0 | -| test.c:486:13:486:30 | ... * ... | 320760.0 | -| test.c:486:13:487:30 | ... + ... | 1.028869776E11 | -| test.c:486:13:488:30 | ... + ... | 3.3002026934976E16 | -| test.c:486:13:494:26 | ... + ... | 2.9406612109055796E34 | -| test.c:486:17:486:30 | (...) | 320760.0 | -| test.c:486:18:486:19 | ip | 320760.0 | -| test.c:486:18:486:24 | ... * ... | 320760.0 | -| test.c:486:18:486:29 | ... + ... | 320760.0 | +| test.c:486:13:486:30 | ... * ... | 62517.0 | +| test.c:486:13:487:30 | ... + ... | 3.908375289E9 | +| test.c:486:13:488:30 | ... + ... | 2.44339897942413E14 | +| test.c:486:13:494:26 | ... + ... | 4.7762734556795386E29 | +| test.c:486:17:486:30 | (...) | 62517.0 | +| test.c:486:18:486:19 | ip | 62517.0 | +| test.c:486:18:486:24 | ... * ... | 62517.0 | +| test.c:486:18:486:29 | ... + ... | 62517.0 | | test.c:486:23:486:24 | 14 | 1.0 | | test.c:486:23:486:24 | (unsigned int)... | 1.0 | | test.c:486:28:486:29 | 32 | 1.0 | | test.c:486:28:486:29 | (unsigned int)... | 1.0 | -| test.c:487:13:487:30 | (...) | 320760.0 | +| test.c:487:13:487:30 | (...) | 62517.0 | | test.c:487:14:487:14 | 2 | 1.0 | | test.c:487:14:487:14 | (unsigned int)... | 1.0 | -| test.c:487:14:487:19 | ... * ... | 320760.0 | -| test.c:487:14:487:24 | ... * ... | 320760.0 | -| test.c:487:14:487:29 | ... + ... | 320760.0 | -| test.c:487:18:487:19 | ip | 320760.0 | +| test.c:487:14:487:19 | ... * ... | 62517.0 | +| test.c:487:14:487:24 | ... * ... | 62517.0 | +| test.c:487:14:487:29 | ... + ... | 62517.0 | +| test.c:487:18:487:19 | ip | 62517.0 | | test.c:487:23:487:24 | 14 | 1.0 | | test.c:487:23:487:24 | (unsigned int)... | 1.0 | | test.c:487:28:487:29 | 32 | 1.0 | | test.c:487:28:487:29 | (unsigned int)... | 1.0 | | test.c:488:13:488:13 | 2 | 1.0 | | test.c:488:13:488:13 | (unsigned int)... | 1.0 | -| test.c:488:13:488:30 | ... * ... | 320760.0 | -| test.c:488:17:488:30 | (...) | 320760.0 | -| test.c:488:18:488:19 | ip | 320760.0 | -| test.c:488:18:488:24 | ... * ... | 320760.0 | -| test.c:488:18:488:29 | ... + ... | 320760.0 | +| test.c:488:13:488:30 | ... * ... | 62517.0 | +| test.c:488:17:488:30 | (...) | 62517.0 | +| test.c:488:18:488:19 | ip | 62517.0 | +| test.c:488:18:488:24 | ... * ... | 62517.0 | +| test.c:488:18:488:29 | ... + ... | 62517.0 | | test.c:488:23:488:24 | 14 | 1.0 | | test.c:488:23:488:24 | (unsigned int)... | 1.0 | | test.c:488:28:488:29 | 64 | 1.0 | | test.c:488:28:488:29 | (unsigned int)... | 1.0 | -| test.c:489:13:494:26 | (...) | 8.91054727244352E17 | -| test.c:489:14:489:25 | (...) | 320760.0 | -| test.c:489:14:489:30 | ... * ... | 320760.0 | +| test.c:489:13:494:26 | (...) | 1.954766084417875E15 | +| test.c:489:14:489:25 | (...) | 62517.0 | +| test.c:489:14:489:30 | ... * ... | 62517.0 | | test.c:489:14:490:63 | ... > ... | 1.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 8.91054727244352E17 | +| test.c:489:14:494:25 | ... ? ... : ... | 1.954766084417875E15 | | test.c:489:15:489:15 | 2 | 1.0 | | test.c:489:15:489:15 | (unsigned int)... | 1.0 | -| test.c:489:15:489:20 | ... * ... | 320760.0 | -| test.c:489:15:489:24 | ... + ... | 320760.0 | -| test.c:489:19:489:20 | ip | 320760.0 | +| test.c:489:15:489:20 | ... * ... | 62517.0 | +| test.c:489:15:489:24 | ... + ... | 62517.0 | +| test.c:489:19:489:20 | ip | 62517.0 | | test.c:489:24:489:24 | 1 | 1.0 | | test.c:489:24:489:24 | (unsigned int)... | 1.0 | | test.c:489:29:489:30 | 14 | 1.0 | | test.c:489:29:489:30 | (unsigned int)... | 1.0 | -| test.c:490:13:490:63 | (...) | 1.028869776E11 | +| test.c:490:13:490:63 | (...) | 3.908375289E9 | | test.c:490:14:490:15 | 14 | 1.0 | | test.c:490:14:490:15 | (unsigned int)... | 1.0 | -| test.c:490:14:490:26 | ... * ... | 320760.0 | +| test.c:490:14:490:26 | ... * ... | 62517.0 | | test.c:490:14:490:36 | ... > ... | 1.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 1.028869776E11 | -| test.c:490:19:490:26 | (...) | 320760.0 | +| test.c:490:14:490:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:490:19:490:26 | (...) | 62517.0 | | test.c:490:20:490:20 | 2 | 1.0 | | test.c:490:20:490:20 | (unsigned int)... | 1.0 | -| test.c:490:20:490:25 | ... * ... | 320760.0 | -| test.c:490:24:490:25 | ip | 320760.0 | +| test.c:490:20:490:25 | ... * ... | 62517.0 | +| test.c:490:24:490:25 | ip | 62517.0 | | test.c:490:30:490:31 | 17 | 1.0 | | test.c:490:30:490:31 | (unsigned int)... | 1.0 | -| test.c:490:30:490:36 | ... * ... | 320760.0 | -| test.c:490:35:490:36 | ip | 320760.0 | +| test.c:490:30:490:36 | ... * ... | 62517.0 | +| test.c:490:35:490:36 | ip | 62517.0 | | test.c:490:40:490:41 | 17 | 1.0 | | test.c:490:40:490:41 | (unsigned int)... | 1.0 | -| test.c:490:40:490:52 | ... * ... | 320760.0 | -| test.c:490:45:490:52 | (...) | 320760.0 | +| test.c:490:40:490:52 | ... * ... | 62517.0 | +| test.c:490:45:490:52 | (...) | 62517.0 | | test.c:490:46:490:46 | 2 | 1.0 | | test.c:490:46:490:46 | (unsigned int)... | 1.0 | -| test.c:490:46:490:51 | ... * ... | 320760.0 | -| test.c:490:50:490:51 | ip | 320760.0 | +| test.c:490:46:490:51 | ... * ... | 62517.0 | +| test.c:490:50:490:51 | ip | 62517.0 | | test.c:490:56:490:57 | 17 | 1.0 | | test.c:490:56:490:57 | (unsigned int)... | 1.0 | -| test.c:490:56:490:62 | ... * ... | 320760.0 | -| test.c:490:61:490:62 | ip | 320760.0 | -| test.c:491:17:491:28 | (...) | 962280.0 | -| test.c:491:17:491:33 | ... * ... | 962280.0 | +| test.c:490:56:490:62 | ... * ... | 62517.0 | +| test.c:490:61:490:62 | ip | 62517.0 | +| test.c:491:17:491:28 | (...) | 125035.0 | +| test.c:491:17:491:33 | ... * ... | 125035.0 | | test.c:491:18:491:18 | 2 | 1.0 | | test.c:491:18:491:18 | (unsigned int)... | 1.0 | -| test.c:491:18:491:23 | ... * ... | 962280.0 | -| test.c:491:18:491:27 | ... + ... | 962280.0 | -| test.c:491:22:491:23 | ip | 962280.0 | +| test.c:491:18:491:23 | ... * ... | 125035.0 | +| test.c:491:18:491:27 | ... + ... | 125035.0 | +| test.c:491:22:491:23 | ip | 125035.0 | | test.c:491:27:491:27 | 1 | 1.0 | | test.c:491:27:491:27 | (unsigned int)... | 1.0 | | test.c:491:32:491:33 | 14 | 1.0 | | test.c:491:32:491:33 | (unsigned int)... | 1.0 | | test.c:492:17:492:18 | 14 | 1.0 | | test.c:492:17:492:18 | (unsigned int)... | 1.0 | -| test.c:492:17:492:29 | ... * ... | 962280.0 | +| test.c:492:17:492:29 | ... * ... | 125035.0 | | test.c:492:17:492:39 | ... > ... | 1.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 9.259827984E11 | -| test.c:492:22:492:29 | (...) | 962280.0 | +| test.c:492:17:494:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:492:22:492:29 | (...) | 125035.0 | | test.c:492:23:492:23 | 2 | 1.0 | | test.c:492:23:492:23 | (unsigned int)... | 1.0 | -| test.c:492:23:492:28 | ... * ... | 962280.0 | -| test.c:492:27:492:28 | ip | 962280.0 | +| test.c:492:23:492:28 | ... * ... | 125035.0 | +| test.c:492:27:492:28 | ip | 125035.0 | | test.c:492:33:492:34 | 17 | 1.0 | | test.c:492:33:492:34 | (unsigned int)... | 1.0 | -| test.c:492:33:492:39 | ... * ... | 962280.0 | -| test.c:492:38:492:39 | ip | 962280.0 | +| test.c:492:33:492:39 | ... * ... | 125035.0 | +| test.c:492:38:492:39 | ip | 125035.0 | | test.c:493:19:493:20 | 14 | 1.0 | | test.c:493:19:493:20 | (unsigned int)... | 1.0 | -| test.c:493:19:493:31 | ... * ... | 962280.0 | -| test.c:493:24:493:31 | (...) | 962280.0 | +| test.c:493:19:493:31 | ... * ... | 125035.0 | +| test.c:493:24:493:31 | (...) | 125035.0 | | test.c:493:25:493:25 | 2 | 1.0 | | test.c:493:25:493:25 | (unsigned int)... | 1.0 | -| test.c:493:25:493:30 | ... * ... | 962280.0 | -| test.c:493:29:493:30 | ip | 962280.0 | +| test.c:493:25:493:30 | ... * ... | 125035.0 | +| test.c:493:29:493:30 | ip | 125035.0 | | test.c:494:19:494:20 | 14 | 1.0 | | test.c:494:19:494:20 | (unsigned int)... | 1.0 | -| test.c:494:19:494:25 | ... * ... | 962280.0 | -| test.c:494:24:494:25 | ip | 962280.0 | +| test.c:494:19:494:25 | ... * ... | 125035.0 | +| test.c:494:24:494:25 | ip | 125035.0 | | test.c:495:13:495:13 | 2 | 1.0 | | test.c:495:13:495:13 | (unsigned int)... | 1.0 | -| test.c:495:13:495:18 | ... * ... | 320760.0 | -| test.c:495:13:495:23 | ... * ... | 320760.0 | -| test.c:495:13:495:43 | ... + ... | 1.028869776E11 | -| test.c:495:17:495:18 | ip | 320760.0 | +| test.c:495:13:495:18 | ... * ... | 62517.0 | +| test.c:495:13:495:23 | ... * ... | 62517.0 | +| test.c:495:13:495:43 | ... + ... | 3.908375289E9 | +| test.c:495:17:495:18 | ip | 62517.0 | | test.c:495:22:495:23 | 14 | 1.0 | | test.c:495:22:495:23 | (unsigned int)... | 1.0 | -| test.c:495:27:495:38 | (...) | 320760.0 | -| test.c:495:27:495:43 | ... * ... | 320760.0 | +| test.c:495:27:495:38 | (...) | 62517.0 | +| test.c:495:27:495:43 | ... * ... | 62517.0 | | test.c:495:28:495:28 | 2 | 1.0 | | test.c:495:28:495:28 | (unsigned int)... | 1.0 | -| test.c:495:28:495:33 | ... * ... | 320760.0 | -| test.c:495:28:495:37 | ... + ... | 320760.0 | -| test.c:495:32:495:33 | ip | 320760.0 | +| test.c:495:28:495:33 | ... * ... | 62517.0 | +| test.c:495:28:495:37 | ... + ... | 62517.0 | +| test.c:495:32:495:33 | ip | 62517.0 | | test.c:495:37:495:37 | 1 | 1.0 | | test.c:495:37:495:37 | (unsigned int)... | 1.0 | | test.c:495:42:495:43 | 17 | 1.0 | | test.c:495:42:495:43 | (unsigned int)... | 1.0 | | test.c:496:9:496:9 | 4 | 1.0 | | test.c:496:9:496:9 | (unsigned int)... | 1.0 | -| test.c:496:9:496:26 | ... * ... | 35640.0 | -| test.c:496:9:497:30 | ... + ... | 1.2702096E9 | -| test.c:496:9:498:30 | ... + ... | 4.5270270144E13 | -| test.c:496:9:504:26 | ... + ... | 5.533372869058992E28 | +| test.c:496:9:496:26 | ... * ... | 10419.0 | +| test.c:496:9:497:30 | ... + ... | 1.08555561E8 | +| test.c:496:9:498:30 | ... + ... | 1.131040390059E12 | +| test.c:496:9:504:26 | ... + ... | 1.0235492350954187E25 | | test.c:496:9:505:61 | ... > ... | 1.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 7.74542704987216E47 | -| test.c:496:13:496:26 | (...) | 35640.0 | -| test.c:496:14:496:15 | ip | 35640.0 | -| test.c:496:14:496:20 | ... * ... | 35640.0 | -| test.c:496:14:496:25 | ... + ... | 35640.0 | +| test.c:496:9:517:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:496:13:496:26 | (...) | 10419.0 | +| test.c:496:14:496:15 | ip | 10419.0 | +| test.c:496:14:496:20 | ... * ... | 10419.0 | +| test.c:496:14:496:25 | ... + ... | 10419.0 | | test.c:496:19:496:20 | 14 | 1.0 | | test.c:496:19:496:20 | (unsigned int)... | 1.0 | | test.c:496:24:496:25 | 32 | 1.0 | | test.c:496:24:496:25 | (unsigned int)... | 1.0 | -| test.c:497:13:497:30 | (...) | 35640.0 | +| test.c:497:13:497:30 | (...) | 10419.0 | | test.c:497:14:497:14 | 2 | 1.0 | | test.c:497:14:497:14 | (unsigned int)... | 1.0 | -| test.c:497:14:497:19 | ... * ... | 35640.0 | -| test.c:497:14:497:24 | ... * ... | 35640.0 | -| test.c:497:14:497:29 | ... + ... | 35640.0 | -| test.c:497:18:497:19 | ip | 35640.0 | +| test.c:497:14:497:19 | ... * ... | 10419.0 | +| test.c:497:14:497:24 | ... * ... | 10419.0 | +| test.c:497:14:497:29 | ... + ... | 10419.0 | +| test.c:497:18:497:19 | ip | 10419.0 | | test.c:497:23:497:24 | 14 | 1.0 | | test.c:497:23:497:24 | (unsigned int)... | 1.0 | | test.c:497:28:497:29 | 32 | 1.0 | | test.c:497:28:497:29 | (unsigned int)... | 1.0 | | test.c:498:13:498:13 | 2 | 1.0 | | test.c:498:13:498:13 | (unsigned int)... | 1.0 | -| test.c:498:13:498:30 | ... * ... | 35640.0 | -| test.c:498:17:498:30 | (...) | 35640.0 | -| test.c:498:18:498:19 | ip | 35640.0 | -| test.c:498:18:498:24 | ... * ... | 35640.0 | -| test.c:498:18:498:29 | ... + ... | 35640.0 | +| test.c:498:13:498:30 | ... * ... | 10419.0 | +| test.c:498:17:498:30 | (...) | 10419.0 | +| test.c:498:18:498:19 | ip | 10419.0 | +| test.c:498:18:498:24 | ... * ... | 10419.0 | +| test.c:498:18:498:29 | ... + ... | 10419.0 | | test.c:498:23:498:24 | 14 | 1.0 | | test.c:498:23:498:24 | (unsigned int)... | 1.0 | | test.c:498:28:498:29 | 64 | 1.0 | | test.c:498:28:498:29 | (unsigned int)... | 1.0 | -| test.c:499:13:504:26 | (...) | 1.222297293888E15 | -| test.c:499:14:499:25 | (...) | 35640.0 | -| test.c:499:14:499:30 | ... * ... | 35640.0 | +| test.c:499:13:504:26 | (...) | 9.049625849719E12 | +| test.c:499:14:499:25 | (...) | 10419.0 | +| test.c:499:14:499:30 | ... * ... | 10419.0 | | test.c:499:14:500:63 | ... > ... | 1.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 1.222297293888E15 | +| test.c:499:14:504:25 | ... ? ... : ... | 9.049625849719E12 | | test.c:499:15:499:15 | 2 | 1.0 | | test.c:499:15:499:15 | (unsigned int)... | 1.0 | -| test.c:499:15:499:20 | ... * ... | 35640.0 | -| test.c:499:15:499:24 | ... + ... | 35640.0 | -| test.c:499:19:499:20 | ip | 35640.0 | +| test.c:499:15:499:20 | ... * ... | 10419.0 | +| test.c:499:15:499:24 | ... + ... | 10419.0 | +| test.c:499:19:499:20 | ip | 10419.0 | | test.c:499:24:499:24 | 1 | 1.0 | | test.c:499:24:499:24 | (unsigned int)... | 1.0 | | test.c:499:29:499:30 | 14 | 1.0 | | test.c:499:29:499:30 | (unsigned int)... | 1.0 | -| test.c:500:13:500:63 | (...) | 1.2702096E9 | +| test.c:500:13:500:63 | (...) | 1.08555561E8 | | test.c:500:14:500:15 | 14 | 1.0 | | test.c:500:14:500:15 | (unsigned int)... | 1.0 | -| test.c:500:14:500:26 | ... * ... | 35640.0 | +| test.c:500:14:500:26 | ... * ... | 10419.0 | | test.c:500:14:500:36 | ... > ... | 1.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 1.2702096E9 | -| test.c:500:19:500:26 | (...) | 35640.0 | +| test.c:500:14:500:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:500:19:500:26 | (...) | 10419.0 | | test.c:500:20:500:20 | 2 | 1.0 | | test.c:500:20:500:20 | (unsigned int)... | 1.0 | -| test.c:500:20:500:25 | ... * ... | 35640.0 | -| test.c:500:24:500:25 | ip | 35640.0 | +| test.c:500:20:500:25 | ... * ... | 10419.0 | +| test.c:500:24:500:25 | ip | 10419.0 | | test.c:500:30:500:31 | 17 | 1.0 | | test.c:500:30:500:31 | (unsigned int)... | 1.0 | -| test.c:500:30:500:36 | ... * ... | 35640.0 | -| test.c:500:35:500:36 | ip | 35640.0 | +| test.c:500:30:500:36 | ... * ... | 10419.0 | +| test.c:500:35:500:36 | ip | 10419.0 | | test.c:500:40:500:41 | 17 | 1.0 | | test.c:500:40:500:41 | (unsigned int)... | 1.0 | -| test.c:500:40:500:52 | ... * ... | 35640.0 | -| test.c:500:45:500:52 | (...) | 35640.0 | +| test.c:500:40:500:52 | ... * ... | 10419.0 | +| test.c:500:45:500:52 | (...) | 10419.0 | | test.c:500:46:500:46 | 2 | 1.0 | | test.c:500:46:500:46 | (unsigned int)... | 1.0 | -| test.c:500:46:500:51 | ... * ... | 35640.0 | -| test.c:500:50:500:51 | ip | 35640.0 | +| test.c:500:46:500:51 | ... * ... | 10419.0 | +| test.c:500:50:500:51 | ip | 10419.0 | | test.c:500:56:500:57 | 17 | 1.0 | | test.c:500:56:500:57 | (unsigned int)... | 1.0 | -| test.c:500:56:500:62 | ... * ... | 35640.0 | -| test.c:500:61:500:62 | ip | 35640.0 | -| test.c:501:17:501:28 | (...) | 106920.0 | -| test.c:501:17:501:33 | ... * ... | 106920.0 | +| test.c:500:56:500:62 | ... * ... | 10419.0 | +| test.c:500:61:500:62 | ip | 10419.0 | +| test.c:501:17:501:28 | (...) | 20839.0 | +| test.c:501:17:501:33 | ... * ... | 20839.0 | | test.c:501:18:501:18 | 2 | 1.0 | | test.c:501:18:501:18 | (unsigned int)... | 1.0 | -| test.c:501:18:501:23 | ... * ... | 106920.0 | -| test.c:501:18:501:27 | ... + ... | 106920.0 | -| test.c:501:22:501:23 | ip | 106920.0 | +| test.c:501:18:501:23 | ... * ... | 20839.0 | +| test.c:501:18:501:27 | ... + ... | 20839.0 | +| test.c:501:22:501:23 | ip | 20839.0 | | test.c:501:27:501:27 | 1 | 1.0 | | test.c:501:27:501:27 | (unsigned int)... | 1.0 | | test.c:501:32:501:33 | 14 | 1.0 | | test.c:501:32:501:33 | (unsigned int)... | 1.0 | | test.c:502:17:502:18 | 14 | 1.0 | | test.c:502:17:502:18 | (unsigned int)... | 1.0 | -| test.c:502:17:502:29 | ... * ... | 106920.0 | +| test.c:502:17:502:29 | ... * ... | 20839.0 | | test.c:502:17:502:39 | ... > ... | 1.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 1.14318864E10 | -| test.c:502:22:502:29 | (...) | 106920.0 | +| test.c:502:17:504:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:502:22:502:29 | (...) | 20839.0 | | test.c:502:23:502:23 | 2 | 1.0 | | test.c:502:23:502:23 | (unsigned int)... | 1.0 | -| test.c:502:23:502:28 | ... * ... | 106920.0 | -| test.c:502:27:502:28 | ip | 106920.0 | +| test.c:502:23:502:28 | ... * ... | 20839.0 | +| test.c:502:27:502:28 | ip | 20839.0 | | test.c:502:33:502:34 | 17 | 1.0 | | test.c:502:33:502:34 | (unsigned int)... | 1.0 | -| test.c:502:33:502:39 | ... * ... | 106920.0 | -| test.c:502:38:502:39 | ip | 106920.0 | +| test.c:502:33:502:39 | ... * ... | 20839.0 | +| test.c:502:38:502:39 | ip | 20839.0 | | test.c:503:19:503:20 | 14 | 1.0 | | test.c:503:19:503:20 | (unsigned int)... | 1.0 | -| test.c:503:19:503:31 | ... * ... | 106920.0 | -| test.c:503:24:503:31 | (...) | 106920.0 | +| test.c:503:19:503:31 | ... * ... | 20839.0 | +| test.c:503:24:503:31 | (...) | 20839.0 | | test.c:503:25:503:25 | 2 | 1.0 | | test.c:503:25:503:25 | (unsigned int)... | 1.0 | -| test.c:503:25:503:30 | ... * ... | 106920.0 | -| test.c:503:29:503:30 | ip | 106920.0 | +| test.c:503:25:503:30 | ... * ... | 20839.0 | +| test.c:503:29:503:30 | ip | 20839.0 | | test.c:504:19:504:20 | 14 | 1.0 | | test.c:504:19:504:20 | (unsigned int)... | 1.0 | -| test.c:504:19:504:25 | ... * ... | 106920.0 | -| test.c:504:24:504:25 | ip | 106920.0 | -| test.c:505:11:505:61 | (...) | 1.028869776E11 | +| test.c:504:19:504:25 | ... * ... | 20839.0 | +| test.c:504:24:504:25 | ip | 20839.0 | +| test.c:505:11:505:61 | (...) | 3.908375289E9 | | test.c:505:12:505:13 | 14 | 1.0 | | test.c:505:12:505:13 | (unsigned int)... | 1.0 | -| test.c:505:12:505:18 | ... * ... | 320760.0 | +| test.c:505:12:505:18 | ... * ... | 62517.0 | | test.c:505:12:505:34 | ... > ... | 1.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 1.028869776E11 | -| test.c:505:17:505:18 | ip | 320760.0 | -| test.c:505:22:505:29 | (...) | 320760.0 | -| test.c:505:22:505:34 | ... * ... | 320760.0 | -| test.c:505:23:505:24 | ip | 320760.0 | -| test.c:505:23:505:28 | ... + ... | 320760.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:505:17:505:18 | ip | 62517.0 | +| test.c:505:22:505:29 | (...) | 62517.0 | +| test.c:505:22:505:34 | ... * ... | 62517.0 | +| test.c:505:23:505:24 | ip | 62517.0 | +| test.c:505:23:505:28 | ... + ... | 62517.0 | | test.c:505:28:505:28 | 1 | 1.0 | | test.c:505:28:505:28 | (unsigned int)... | 1.0 | | test.c:505:33:505:34 | 17 | 1.0 | | test.c:505:33:505:34 | (unsigned int)... | 1.0 | | test.c:505:38:505:39 | 17 | 1.0 | | test.c:505:38:505:39 | (unsigned int)... | 1.0 | -| test.c:505:38:505:44 | ... * ... | 320760.0 | -| test.c:505:43:505:44 | ip | 320760.0 | -| test.c:505:48:505:55 | (...) | 320760.0 | -| test.c:505:48:505:60 | ... * ... | 320760.0 | -| test.c:505:49:505:50 | ip | 320760.0 | -| test.c:505:49:505:54 | ... + ... | 320760.0 | +| test.c:505:38:505:44 | ... * ... | 62517.0 | +| test.c:505:43:505:44 | ip | 62517.0 | +| test.c:505:48:505:55 | (...) | 62517.0 | +| test.c:505:48:505:60 | ... * ... | 62517.0 | +| test.c:505:49:505:50 | ip | 62517.0 | +| test.c:505:49:505:54 | ... + ... | 62517.0 | | test.c:505:54:505:54 | 1 | 1.0 | | test.c:505:54:505:54 | (unsigned int)... | 1.0 | | test.c:505:59:505:60 | 17 | 1.0 | | test.c:505:59:505:60 | (unsigned int)... | 1.0 | | test.c:506:11:506:11 | 4 | 1.0 | | test.c:506:11:506:11 | (unsigned int)... | 1.0 | -| test.c:506:11:506:28 | ... * ... | 641520.0 | -| test.c:506:11:507:28 | ... + ... | 4.115479104E11 | -| test.c:506:11:508:28 | ... + ... | 2.64016215479808E17 | -| test.c:506:11:514:24 | ... + ... | 1.882023174979571E36 | -| test.c:506:15:506:28 | (...) | 641520.0 | -| test.c:506:16:506:17 | ip | 641520.0 | -| test.c:506:16:506:22 | ... * ... | 641520.0 | -| test.c:506:16:506:27 | ... + ... | 641520.0 | +| test.c:506:11:506:28 | ... * ... | 125034.0 | +| test.c:506:11:507:28 | ... + ... | 1.5633501156E10 | +| test.c:506:11:508:28 | ... + ... | 1.954719183539304E15 | +| test.c:506:11:514:24 | ... + ... | 3.056778340269433E31 | +| test.c:506:15:506:28 | (...) | 125034.0 | +| test.c:506:16:506:17 | ip | 125034.0 | +| test.c:506:16:506:22 | ... * ... | 125034.0 | +| test.c:506:16:506:27 | ... + ... | 125034.0 | | test.c:506:21:506:22 | 14 | 1.0 | | test.c:506:21:506:22 | (unsigned int)... | 1.0 | | test.c:506:26:506:27 | 32 | 1.0 | | test.c:506:26:506:27 | (unsigned int)... | 1.0 | -| test.c:507:11:507:28 | (...) | 641520.0 | +| test.c:507:11:507:28 | (...) | 125034.0 | | test.c:507:12:507:12 | 2 | 1.0 | | test.c:507:12:507:12 | (unsigned int)... | 1.0 | -| test.c:507:12:507:17 | ... * ... | 641520.0 | -| test.c:507:12:507:22 | ... * ... | 641520.0 | -| test.c:507:12:507:27 | ... + ... | 641520.0 | -| test.c:507:16:507:17 | ip | 641520.0 | +| test.c:507:12:507:17 | ... * ... | 125034.0 | +| test.c:507:12:507:22 | ... * ... | 125034.0 | +| test.c:507:12:507:27 | ... + ... | 125034.0 | +| test.c:507:16:507:17 | ip | 125034.0 | | test.c:507:21:507:22 | 14 | 1.0 | | test.c:507:21:507:22 | (unsigned int)... | 1.0 | | test.c:507:26:507:27 | 32 | 1.0 | | test.c:507:26:507:27 | (unsigned int)... | 1.0 | | test.c:508:11:508:11 | 2 | 1.0 | | test.c:508:11:508:11 | (unsigned int)... | 1.0 | -| test.c:508:11:508:28 | ... * ... | 641520.0 | -| test.c:508:15:508:28 | (...) | 641520.0 | -| test.c:508:16:508:17 | ip | 641520.0 | -| test.c:508:16:508:22 | ... * ... | 641520.0 | -| test.c:508:16:508:27 | ... + ... | 641520.0 | +| test.c:508:11:508:28 | ... * ... | 125034.0 | +| test.c:508:15:508:28 | (...) | 125034.0 | +| test.c:508:16:508:17 | ip | 125034.0 | +| test.c:508:16:508:22 | ... * ... | 125034.0 | +| test.c:508:16:508:27 | ... + ... | 125034.0 | | test.c:508:21:508:22 | 14 | 1.0 | | test.c:508:21:508:22 | (unsigned int)... | 1.0 | | test.c:508:26:508:27 | 64 | 1.0 | | test.c:508:26:508:27 | (unsigned int)... | 1.0 | -| test.c:509:11:514:24 | (...) | 7.128437817954816E18 | -| test.c:509:12:509:23 | (...) | 641520.0 | -| test.c:509:12:509:28 | ... * ... | 641520.0 | +| test.c:509:11:514:24 | (...) | 1.5637941071078508E16 | +| test.c:509:12:509:23 | (...) | 125034.0 | +| test.c:509:12:509:28 | ... * ... | 125034.0 | | test.c:509:12:510:61 | ... > ... | 1.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 7.128437817954816E18 | +| test.c:509:12:514:23 | ... ? ... : ... | 1.5637941071078508E16 | | test.c:509:13:509:13 | 2 | 1.0 | | test.c:509:13:509:13 | (unsigned int)... | 1.0 | -| test.c:509:13:509:18 | ... * ... | 641520.0 | -| test.c:509:13:509:22 | ... + ... | 641520.0 | -| test.c:509:17:509:18 | ip | 641520.0 | +| test.c:509:13:509:18 | ... * ... | 125034.0 | +| test.c:509:13:509:22 | ... + ... | 125034.0 | +| test.c:509:17:509:18 | ip | 125034.0 | | test.c:509:22:509:22 | 1 | 1.0 | | test.c:509:22:509:22 | (unsigned int)... | 1.0 | | test.c:509:27:509:28 | 14 | 1.0 | | test.c:509:27:509:28 | (unsigned int)... | 1.0 | -| test.c:510:11:510:61 | (...) | 4.115479104E11 | +| test.c:510:11:510:61 | (...) | 1.5633501156E10 | | test.c:510:12:510:13 | 14 | 1.0 | | test.c:510:12:510:13 | (unsigned int)... | 1.0 | -| test.c:510:12:510:24 | ... * ... | 641520.0 | +| test.c:510:12:510:24 | ... * ... | 125034.0 | | test.c:510:12:510:34 | ... > ... | 1.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 4.115479104E11 | -| test.c:510:17:510:24 | (...) | 641520.0 | +| test.c:510:12:510:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:510:17:510:24 | (...) | 125034.0 | | test.c:510:18:510:18 | 2 | 1.0 | | test.c:510:18:510:18 | (unsigned int)... | 1.0 | -| test.c:510:18:510:23 | ... * ... | 641520.0 | -| test.c:510:22:510:23 | ip | 641520.0 | +| test.c:510:18:510:23 | ... * ... | 125034.0 | +| test.c:510:22:510:23 | ip | 125034.0 | | test.c:510:28:510:29 | 17 | 1.0 | | test.c:510:28:510:29 | (unsigned int)... | 1.0 | -| test.c:510:28:510:34 | ... * ... | 641520.0 | -| test.c:510:33:510:34 | ip | 641520.0 | +| test.c:510:28:510:34 | ... * ... | 125034.0 | +| test.c:510:33:510:34 | ip | 125034.0 | | test.c:510:38:510:39 | 17 | 1.0 | | test.c:510:38:510:39 | (unsigned int)... | 1.0 | -| test.c:510:38:510:50 | ... * ... | 641520.0 | -| test.c:510:43:510:50 | (...) | 641520.0 | +| test.c:510:38:510:50 | ... * ... | 125034.0 | +| test.c:510:43:510:50 | (...) | 125034.0 | | test.c:510:44:510:44 | 2 | 1.0 | | test.c:510:44:510:44 | (unsigned int)... | 1.0 | -| test.c:510:44:510:49 | ... * ... | 641520.0 | -| test.c:510:48:510:49 | ip | 641520.0 | +| test.c:510:44:510:49 | ... * ... | 125034.0 | +| test.c:510:48:510:49 | ip | 125034.0 | | test.c:510:54:510:55 | 17 | 1.0 | | test.c:510:54:510:55 | (unsigned int)... | 1.0 | -| test.c:510:54:510:60 | ... * ... | 641520.0 | -| test.c:510:59:510:60 | ip | 641520.0 | -| test.c:511:15:511:26 | (...) | 1924560.0 | -| test.c:511:15:511:31 | ... * ... | 1924560.0 | +| test.c:510:54:510:60 | ... * ... | 125034.0 | +| test.c:510:59:510:60 | ip | 125034.0 | +| test.c:511:15:511:26 | (...) | 250069.0 | +| test.c:511:15:511:31 | ... * ... | 250069.0 | | test.c:511:16:511:16 | 2 | 1.0 | | test.c:511:16:511:16 | (unsigned int)... | 1.0 | -| test.c:511:16:511:21 | ... * ... | 1924560.0 | -| test.c:511:16:511:25 | ... + ... | 1924560.0 | -| test.c:511:20:511:21 | ip | 1924560.0 | +| test.c:511:16:511:21 | ... * ... | 250069.0 | +| test.c:511:16:511:25 | ... + ... | 250069.0 | +| test.c:511:20:511:21 | ip | 250069.0 | | test.c:511:25:511:25 | 1 | 1.0 | | test.c:511:25:511:25 | (unsigned int)... | 1.0 | | test.c:511:30:511:31 | 14 | 1.0 | | test.c:511:30:511:31 | (unsigned int)... | 1.0 | | test.c:512:15:512:16 | 14 | 1.0 | | test.c:512:15:512:16 | (unsigned int)... | 1.0 | -| test.c:512:15:512:27 | ... * ... | 1924560.0 | +| test.c:512:15:512:27 | ... * ... | 250069.0 | | test.c:512:15:512:37 | ... > ... | 1.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 3.7039311936E12 | -| test.c:512:20:512:27 | (...) | 1924560.0 | +| test.c:512:15:514:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:512:20:512:27 | (...) | 250069.0 | | test.c:512:21:512:21 | 2 | 1.0 | | test.c:512:21:512:21 | (unsigned int)... | 1.0 | -| test.c:512:21:512:26 | ... * ... | 1924560.0 | -| test.c:512:25:512:26 | ip | 1924560.0 | +| test.c:512:21:512:26 | ... * ... | 250069.0 | +| test.c:512:25:512:26 | ip | 250069.0 | | test.c:512:31:512:32 | 17 | 1.0 | | test.c:512:31:512:32 | (unsigned int)... | 1.0 | -| test.c:512:31:512:37 | ... * ... | 1924560.0 | -| test.c:512:36:512:37 | ip | 1924560.0 | +| test.c:512:31:512:37 | ... * ... | 250069.0 | +| test.c:512:36:512:37 | ip | 250069.0 | | test.c:513:17:513:18 | 14 | 1.0 | | test.c:513:17:513:18 | (unsigned int)... | 1.0 | -| test.c:513:17:513:29 | ... * ... | 1924560.0 | -| test.c:513:22:513:29 | (...) | 1924560.0 | +| test.c:513:17:513:29 | ... * ... | 250069.0 | +| test.c:513:22:513:29 | (...) | 250069.0 | | test.c:513:23:513:23 | 2 | 1.0 | | test.c:513:23:513:23 | (unsigned int)... | 1.0 | -| test.c:513:23:513:28 | ... * ... | 1924560.0 | -| test.c:513:27:513:28 | ip | 1924560.0 | +| test.c:513:23:513:28 | ... * ... | 250069.0 | +| test.c:513:27:513:28 | ip | 250069.0 | | test.c:514:17:514:18 | 14 | 1.0 | | test.c:514:17:514:18 | (unsigned int)... | 1.0 | -| test.c:514:17:514:23 | ... * ... | 1924560.0 | -| test.c:514:22:514:23 | ip | 1924560.0 | +| test.c:514:17:514:23 | ... * ... | 250069.0 | +| test.c:514:22:514:23 | ip | 250069.0 | | test.c:515:11:515:12 | 14 | 1.0 | | test.c:515:11:515:12 | (unsigned int)... | 1.0 | -| test.c:515:11:515:17 | ... * ... | 641520.0 | +| test.c:515:11:515:17 | ... * ... | 125034.0 | | test.c:515:11:515:33 | ... > ... | 1.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 4.115479104E11 | -| test.c:515:16:515:17 | ip | 641520.0 | -| test.c:515:21:515:28 | (...) | 641520.0 | -| test.c:515:21:515:33 | ... * ... | 641520.0 | -| test.c:515:22:515:23 | ip | 641520.0 | -| test.c:515:22:515:27 | ... + ... | 641520.0 | +| test.c:515:11:517:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:515:16:515:17 | ip | 125034.0 | +| test.c:515:21:515:28 | (...) | 125034.0 | +| test.c:515:21:515:33 | ... * ... | 125034.0 | +| test.c:515:22:515:23 | ip | 125034.0 | +| test.c:515:22:515:27 | ... + ... | 125034.0 | | test.c:515:27:515:27 | 1 | 1.0 | | test.c:515:27:515:27 | (unsigned int)... | 1.0 | | test.c:515:32:515:33 | 17 | 1.0 | | test.c:515:32:515:33 | (unsigned int)... | 1.0 | | test.c:516:13:516:14 | 14 | 1.0 | | test.c:516:13:516:14 | (unsigned int)... | 1.0 | -| test.c:516:13:516:19 | ... * ... | 641520.0 | -| test.c:516:18:516:19 | ip | 641520.0 | -| test.c:517:13:517:20 | (...) | 641520.0 | -| test.c:517:13:517:25 | ... * ... | 641520.0 | -| test.c:517:14:517:15 | ip | 641520.0 | -| test.c:517:14:517:19 | ... + ... | 641520.0 | +| test.c:516:13:516:19 | ... * ... | 125034.0 | +| test.c:516:18:516:19 | ip | 125034.0 | +| test.c:517:13:517:20 | (...) | 125034.0 | +| test.c:517:13:517:25 | ... * ... | 125034.0 | +| test.c:517:14:517:15 | ip | 125034.0 | +| test.c:517:14:517:19 | ... + ... | 125034.0 | | test.c:517:19:517:19 | 1 | 1.0 | | test.c:517:19:517:19 | (unsigned int)... | 1.0 | | test.c:517:24:517:25 | 14 | 1.0 | | test.c:517:24:517:25 | (unsigned int)... | 1.0 | | test.c:518:9:518:10 | 14 | 1.0 | | test.c:518:9:518:10 | (unsigned int)... | 1.0 | -| test.c:518:9:518:15 | ... * ... | 1.026432E7 | +| test.c:518:9:518:15 | ... * ... | 1437897.0 | | test.c:518:9:518:59 | ... > ... | 1.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 1.0814104186052936E21 | -| test.c:518:14:518:15 | ip | 1.026432E7 | -| test.c:518:19:518:30 | (...) | 1.026432E7 | -| test.c:518:19:518:35 | ... * ... | 1.026432E7 | -| test.c:518:19:518:59 | ... + ... | 1.053562650624E14 | +| test.c:518:9:520:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:518:14:518:15 | ip | 1437897.0 | +| test.c:518:19:518:30 | (...) | 1437897.0 | +| test.c:518:19:518:35 | ... * ... | 1437897.0 | +| test.c:518:19:518:59 | ... + ... | 2.067547782609E12 | | test.c:518:20:518:20 | 2 | 1.0 | | test.c:518:20:518:20 | (unsigned int)... | 1.0 | -| test.c:518:20:518:25 | ... * ... | 1.026432E7 | -| test.c:518:20:518:29 | ... + ... | 1.026432E7 | -| test.c:518:24:518:25 | ip | 1.026432E7 | +| test.c:518:20:518:25 | ... * ... | 1437897.0 | +| test.c:518:20:518:29 | ... + ... | 1437897.0 | +| test.c:518:24:518:25 | ip | 1437897.0 | | test.c:518:29:518:29 | 1 | 1.0 | | test.c:518:29:518:29 | (unsigned int)... | 1.0 | | test.c:518:34:518:35 | 17 | 1.0 | | test.c:518:34:518:35 | (unsigned int)... | 1.0 | -| test.c:518:39:518:54 | (...) | 1.026432E7 | -| test.c:518:39:518:59 | ... * ... | 1.026432E7 | +| test.c:518:39:518:54 | (...) | 1437897.0 | +| test.c:518:39:518:59 | ... * ... | 1437897.0 | | test.c:518:40:518:40 | 2 | 1.0 | | test.c:518:40:518:40 | (unsigned int)... | 1.0 | -| test.c:518:40:518:45 | ... * ... | 1.026432E7 | -| test.c:518:40:518:49 | ... + ... | 1.026432E7 | -| test.c:518:40:518:53 | ... + ... | 1.026432E7 | -| test.c:518:44:518:45 | ip | 1.026432E7 | +| test.c:518:40:518:45 | ... * ... | 1437897.0 | +| test.c:518:40:518:49 | ... + ... | 1437897.0 | +| test.c:518:40:518:53 | ... + ... | 1437897.0 | +| test.c:518:44:518:45 | ip | 1437897.0 | | test.c:518:49:518:49 | 1 | 1.0 | | test.c:518:49:518:49 | (unsigned int)... | 1.0 | | test.c:518:53:518:53 | 1 | 1.0 | @@ -2670,28 +2670,28 @@ | test.c:518:58:518:59 | (unsigned int)... | 1.0 | | test.c:519:11:519:12 | 14 | 1.0 | | test.c:519:11:519:12 | (unsigned int)... | 1.0 | -| test.c:519:11:519:17 | ... * ... | 1.026432E7 | -| test.c:519:16:519:17 | ip | 1.026432E7 | -| test.c:520:11:520:22 | (...) | 1.026432E7 | -| test.c:520:11:520:27 | ... * ... | 1.026432E7 | -| test.c:520:11:520:51 | ... + ... | 1.053562650624E14 | +| test.c:519:11:519:17 | ... * ... | 1437897.0 | +| test.c:519:16:519:17 | ip | 1437897.0 | +| test.c:520:11:520:22 | (...) | 1437897.0 | +| test.c:520:11:520:27 | ... * ... | 1437897.0 | +| test.c:520:11:520:51 | ... + ... | 2.067547782609E12 | | test.c:520:12:520:12 | 2 | 1.0 | | test.c:520:12:520:12 | (unsigned int)... | 1.0 | -| test.c:520:12:520:17 | ... * ... | 1.026432E7 | -| test.c:520:12:520:21 | ... + ... | 1.026432E7 | -| test.c:520:16:520:17 | ip | 1.026432E7 | +| test.c:520:12:520:17 | ... * ... | 1437897.0 | +| test.c:520:12:520:21 | ... + ... | 1437897.0 | +| test.c:520:16:520:17 | ip | 1437897.0 | | test.c:520:21:520:21 | 1 | 1.0 | | test.c:520:21:520:21 | (unsigned int)... | 1.0 | | test.c:520:26:520:27 | 14 | 1.0 | | test.c:520:26:520:27 | (unsigned int)... | 1.0 | -| test.c:520:31:520:46 | (...) | 1.026432E7 | -| test.c:520:31:520:51 | ... * ... | 1.026432E7 | +| test.c:520:31:520:46 | (...) | 1437897.0 | +| test.c:520:31:520:51 | ... * ... | 1437897.0 | | test.c:520:32:520:32 | 2 | 1.0 | | test.c:520:32:520:32 | (unsigned int)... | 1.0 | -| test.c:520:32:520:37 | ... * ... | 1.026432E7 | -| test.c:520:32:520:41 | ... + ... | 1.026432E7 | -| test.c:520:32:520:45 | ... + ... | 1.026432E7 | -| test.c:520:36:520:37 | ip | 1.026432E7 | +| test.c:520:32:520:37 | ... * ... | 1437897.0 | +| test.c:520:32:520:41 | ... + ... | 1437897.0 | +| test.c:520:32:520:45 | ... + ... | 1437897.0 | +| test.c:520:36:520:37 | ip | 1437897.0 | | test.c:520:41:520:41 | 1 | 1.0 | | test.c:520:41:520:41 | (unsigned int)... | 1.0 | | test.c:520:45:520:45 | 1 | 1.0 | @@ -2700,1136 +2700,1136 @@ | test.c:520:50:520:51 | (unsigned int)... | 1.0 | | test.c:521:9:521:9 | 2 | 1.0 | | test.c:521:9:521:9 | (unsigned int)... | 1.0 | -| test.c:521:9:521:26 | ... * ... | 1.026432E7 | -| test.c:521:9:541:48 | ... + ... | 1.4698583632369078E72 | +| test.c:521:9:521:26 | ... * ... | 1437897.0 | +| test.c:521:9:541:48 | ... + ... | 3.5306223994138077E62 | | test.c:521:9:563:30 | ... > ... | 1.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 9.928683178071796E211 | -| test.c:521:13:521:26 | (...) | 1.026432E7 | -| test.c:521:14:521:15 | ip | 1.026432E7 | -| test.c:521:14:521:20 | ... * ... | 1.026432E7 | -| test.c:521:14:521:25 | ... + ... | 1.026432E7 | +| test.c:521:9:606:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:521:13:521:26 | (...) | 1437897.0 | +| test.c:521:14:521:15 | ip | 1437897.0 | +| test.c:521:14:521:20 | ... * ... | 1437897.0 | +| test.c:521:14:521:25 | ... + ... | 1437897.0 | | test.c:521:19:521:20 | 14 | 1.0 | | test.c:521:19:521:20 | (unsigned int)... | 1.0 | | test.c:521:24:521:25 | 32 | 1.0 | | test.c:521:24:521:25 | (unsigned int)... | 1.0 | -| test.c:522:13:541:48 | (...) | 1.4320075399411826E65 | +| test.c:522:13:541:48 | (...) | 2.4554070280512497E56 | | test.c:522:14:522:14 | 4 | 1.0 | | test.c:522:14:522:14 | (unsigned int)... | 1.0 | -| test.c:522:14:522:31 | ... * ... | 1.026432E7 | -| test.c:522:14:523:32 | ... + ... | 1.053562650624E14 | -| test.c:522:14:524:32 | ... + ... | 1.0814104186052936E21 | -| test.c:522:14:530:28 | ... + ... | 3.1575109323638057E43 | +| test.c:522:14:522:31 | ... * ... | 1437897.0 | +| test.c:522:14:523:32 | ... + ... | 2.067547782609E12 | +| test.c:522:14:524:32 | ... + ... | 2.9729207539701335E18 | +| test.c:522:14:530:28 | ... + ... | 7.070613623498497E37 | | test.c:522:14:531:43 | ... > ... | 1.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 1.4320075399411826E65 | -| test.c:522:18:522:31 | (...) | 1.026432E7 | -| test.c:522:19:522:20 | ip | 1.026432E7 | -| test.c:522:19:522:25 | ... * ... | 1.026432E7 | -| test.c:522:19:522:30 | ... + ... | 1.026432E7 | +| test.c:522:14:541:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:522:18:522:31 | (...) | 1437897.0 | +| test.c:522:19:522:20 | ip | 1437897.0 | +| test.c:522:19:522:25 | ... * ... | 1437897.0 | +| test.c:522:19:522:30 | ... + ... | 1437897.0 | | test.c:522:24:522:25 | 14 | 1.0 | | test.c:522:24:522:25 | (unsigned int)... | 1.0 | | test.c:522:29:522:30 | 32 | 1.0 | | test.c:522:29:522:30 | (unsigned int)... | 1.0 | -| test.c:523:15:523:32 | (...) | 1.026432E7 | +| test.c:523:15:523:32 | (...) | 1437897.0 | | test.c:523:16:523:16 | 2 | 1.0 | | test.c:523:16:523:16 | (unsigned int)... | 1.0 | -| test.c:523:16:523:21 | ... * ... | 1.026432E7 | -| test.c:523:16:523:26 | ... * ... | 1.026432E7 | -| test.c:523:16:523:31 | ... + ... | 1.026432E7 | -| test.c:523:20:523:21 | ip | 1.026432E7 | +| test.c:523:16:523:21 | ... * ... | 1437897.0 | +| test.c:523:16:523:26 | ... * ... | 1437897.0 | +| test.c:523:16:523:31 | ... + ... | 1437897.0 | +| test.c:523:20:523:21 | ip | 1437897.0 | | test.c:523:25:523:26 | 14 | 1.0 | | test.c:523:25:523:26 | (unsigned int)... | 1.0 | | test.c:523:30:523:31 | 32 | 1.0 | | test.c:523:30:523:31 | (unsigned int)... | 1.0 | | test.c:524:15:524:15 | 2 | 1.0 | | test.c:524:15:524:15 | (unsigned int)... | 1.0 | -| test.c:524:15:524:32 | ... * ... | 1.026432E7 | -| test.c:524:19:524:32 | (...) | 1.026432E7 | -| test.c:524:20:524:21 | ip | 1.026432E7 | -| test.c:524:20:524:26 | ... * ... | 1.026432E7 | -| test.c:524:20:524:31 | ... + ... | 1.026432E7 | +| test.c:524:15:524:32 | ... * ... | 1437897.0 | +| test.c:524:19:524:32 | (...) | 1437897.0 | +| test.c:524:20:524:21 | ip | 1437897.0 | +| test.c:524:20:524:26 | ... * ... | 1437897.0 | +| test.c:524:20:524:31 | ... + ... | 1437897.0 | | test.c:524:25:524:26 | 14 | 1.0 | | test.c:524:25:524:26 | (unsigned int)... | 1.0 | | test.c:524:30:524:31 | 64 | 1.0 | | test.c:524:30:524:31 | (unsigned int)... | 1.0 | -| test.c:525:15:530:28 | (...) | 2.9198081302342926E22 | -| test.c:525:16:525:27 | (...) | 1.026432E7 | -| test.c:525:16:525:32 | ... * ... | 1.026432E7 | +| test.c:525:15:530:28 | (...) | 2.3783390842343084E19 | +| test.c:525:16:525:27 | (...) | 1437897.0 | +| test.c:525:16:525:32 | ... * ... | 1437897.0 | | test.c:525:16:526:65 | ... > ... | 1.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 2.9198081302342926E22 | +| test.c:525:16:530:27 | ... ? ... : ... | 2.3783390842343084E19 | | test.c:525:17:525:17 | 2 | 1.0 | | test.c:525:17:525:17 | (unsigned int)... | 1.0 | -| test.c:525:17:525:22 | ... * ... | 1.026432E7 | -| test.c:525:17:525:26 | ... + ... | 1.026432E7 | -| test.c:525:21:525:22 | ip | 1.026432E7 | +| test.c:525:17:525:22 | ... * ... | 1437897.0 | +| test.c:525:17:525:26 | ... + ... | 1437897.0 | +| test.c:525:21:525:22 | ip | 1437897.0 | | test.c:525:26:525:26 | 1 | 1.0 | | test.c:525:26:525:26 | (unsigned int)... | 1.0 | | test.c:525:31:525:32 | 14 | 1.0 | | test.c:525:31:525:32 | (unsigned int)... | 1.0 | -| test.c:526:15:526:65 | (...) | 1.053562650624E14 | +| test.c:526:15:526:65 | (...) | 2.067547782609E12 | | test.c:526:16:526:17 | 14 | 1.0 | | test.c:526:16:526:17 | (unsigned int)... | 1.0 | -| test.c:526:16:526:28 | ... * ... | 1.026432E7 | +| test.c:526:16:526:28 | ... * ... | 1437897.0 | | test.c:526:16:526:38 | ... > ... | 1.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 1.053562650624E14 | -| test.c:526:21:526:28 | (...) | 1.026432E7 | +| test.c:526:16:526:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:526:21:526:28 | (...) | 1437897.0 | | test.c:526:22:526:22 | 2 | 1.0 | | test.c:526:22:526:22 | (unsigned int)... | 1.0 | -| test.c:526:22:526:27 | ... * ... | 1.026432E7 | -| test.c:526:26:526:27 | ip | 1.026432E7 | +| test.c:526:22:526:27 | ... * ... | 1437897.0 | +| test.c:526:26:526:27 | ip | 1437897.0 | | test.c:526:32:526:33 | 17 | 1.0 | | test.c:526:32:526:33 | (unsigned int)... | 1.0 | -| test.c:526:32:526:38 | ... * ... | 1.026432E7 | -| test.c:526:37:526:38 | ip | 1.026432E7 | +| test.c:526:32:526:38 | ... * ... | 1437897.0 | +| test.c:526:37:526:38 | ip | 1437897.0 | | test.c:526:42:526:43 | 17 | 1.0 | | test.c:526:42:526:43 | (unsigned int)... | 1.0 | -| test.c:526:42:526:54 | ... * ... | 1.026432E7 | -| test.c:526:47:526:54 | (...) | 1.026432E7 | +| test.c:526:42:526:54 | ... * ... | 1437897.0 | +| test.c:526:47:526:54 | (...) | 1437897.0 | | test.c:526:48:526:48 | 2 | 1.0 | | test.c:526:48:526:48 | (unsigned int)... | 1.0 | -| test.c:526:48:526:53 | ... * ... | 1.026432E7 | -| test.c:526:52:526:53 | ip | 1.026432E7 | +| test.c:526:48:526:53 | ... * ... | 1437897.0 | +| test.c:526:52:526:53 | ip | 1437897.0 | | test.c:526:58:526:59 | 17 | 1.0 | | test.c:526:58:526:59 | (unsigned int)... | 1.0 | -| test.c:526:58:526:64 | ... * ... | 1.026432E7 | -| test.c:526:63:526:64 | ip | 1.026432E7 | -| test.c:527:19:527:30 | (...) | 3.079296E7 | -| test.c:527:19:527:35 | ... * ... | 3.079296E7 | +| test.c:526:58:526:64 | ... * ... | 1437897.0 | +| test.c:526:63:526:64 | ip | 1437897.0 | +| test.c:527:19:527:30 | (...) | 2875795.0 | +| test.c:527:19:527:35 | ... * ... | 2875795.0 | | test.c:527:20:527:20 | 2 | 1.0 | | test.c:527:20:527:20 | (unsigned int)... | 1.0 | -| test.c:527:20:527:25 | ... * ... | 3.079296E7 | -| test.c:527:20:527:29 | ... + ... | 3.079296E7 | -| test.c:527:24:527:25 | ip | 3.079296E7 | +| test.c:527:20:527:25 | ... * ... | 2875795.0 | +| test.c:527:20:527:29 | ... + ... | 2875795.0 | +| test.c:527:24:527:25 | ip | 2875795.0 | | test.c:527:29:527:29 | 1 | 1.0 | | test.c:527:29:527:29 | (unsigned int)... | 1.0 | | test.c:527:34:527:35 | 14 | 1.0 | | test.c:527:34:527:35 | (unsigned int)... | 1.0 | | test.c:528:19:528:20 | 14 | 1.0 | | test.c:528:19:528:20 | (unsigned int)... | 1.0 | -| test.c:528:19:528:31 | ... * ... | 3.079296E7 | +| test.c:528:19:528:31 | ... * ... | 2875795.0 | | test.c:528:19:528:41 | ... > ... | 1.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 9.482063855616E14 | -| test.c:528:24:528:31 | (...) | 3.079296E7 | +| test.c:528:19:530:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:528:24:528:31 | (...) | 2875795.0 | | test.c:528:25:528:25 | 2 | 1.0 | | test.c:528:25:528:25 | (unsigned int)... | 1.0 | -| test.c:528:25:528:30 | ... * ... | 3.079296E7 | -| test.c:528:29:528:30 | ip | 3.079296E7 | +| test.c:528:25:528:30 | ... * ... | 2875795.0 | +| test.c:528:29:528:30 | ip | 2875795.0 | | test.c:528:35:528:36 | 17 | 1.0 | | test.c:528:35:528:36 | (unsigned int)... | 1.0 | -| test.c:528:35:528:41 | ... * ... | 3.079296E7 | -| test.c:528:40:528:41 | ip | 3.079296E7 | +| test.c:528:35:528:41 | ... * ... | 2875795.0 | +| test.c:528:40:528:41 | ip | 2875795.0 | | test.c:529:21:529:22 | 14 | 1.0 | | test.c:529:21:529:22 | (unsigned int)... | 1.0 | -| test.c:529:21:529:33 | ... * ... | 3.079296E7 | -| test.c:529:26:529:33 | (...) | 3.079296E7 | +| test.c:529:21:529:33 | ... * ... | 2875795.0 | +| test.c:529:26:529:33 | (...) | 2875795.0 | | test.c:529:27:529:27 | 2 | 1.0 | | test.c:529:27:529:27 | (unsigned int)... | 1.0 | -| test.c:529:27:529:32 | ... * ... | 3.079296E7 | -| test.c:529:31:529:32 | ip | 3.079296E7 | +| test.c:529:27:529:32 | ... * ... | 2875795.0 | +| test.c:529:31:529:32 | ip | 2875795.0 | | test.c:530:21:530:22 | 14 | 1.0 | | test.c:530:21:530:22 | (unsigned int)... | 1.0 | -| test.c:530:21:530:27 | ... * ... | 3.079296E7 | -| test.c:530:26:530:27 | ip | 3.079296E7 | +| test.c:530:21:530:27 | ... * ... | 2875795.0 | +| test.c:530:26:530:27 | ip | 2875795.0 | | test.c:531:13:531:13 | 2 | 1.0 | | test.c:531:13:531:13 | (unsigned int)... | 1.0 | -| test.c:531:13:531:18 | ... * ... | 9.237888E7 | -| test.c:531:13:531:23 | ... * ... | 9.237888E7 | -| test.c:531:13:531:43 | ... + ... | 8.5338574700544E15 | -| test.c:531:17:531:18 | ip | 9.237888E7 | +| test.c:531:13:531:18 | ... * ... | 8627385.0 | +| test.c:531:13:531:23 | ... * ... | 8627385.0 | +| test.c:531:13:531:43 | ... + ... | 7.4431771938225E13 | +| test.c:531:17:531:18 | ip | 8627385.0 | | test.c:531:22:531:23 | 14 | 1.0 | | test.c:531:22:531:23 | (unsigned int)... | 1.0 | -| test.c:531:27:531:38 | (...) | 9.237888E7 | -| test.c:531:27:531:43 | ... * ... | 9.237888E7 | +| test.c:531:27:531:38 | (...) | 8627385.0 | +| test.c:531:27:531:43 | ... * ... | 8627385.0 | | test.c:531:28:531:28 | 2 | 1.0 | | test.c:531:28:531:28 | (unsigned int)... | 1.0 | -| test.c:531:28:531:33 | ... * ... | 9.237888E7 | -| test.c:531:28:531:37 | ... + ... | 9.237888E7 | -| test.c:531:32:531:33 | ip | 9.237888E7 | +| test.c:531:28:531:33 | ... * ... | 8627385.0 | +| test.c:531:28:531:37 | ... + ... | 8627385.0 | +| test.c:531:32:531:33 | ip | 8627385.0 | | test.c:531:37:531:37 | 1 | 1.0 | | test.c:531:37:531:37 | (unsigned int)... | 1.0 | | test.c:531:42:531:43 | 17 | 1.0 | | test.c:531:42:531:43 | (unsigned int)... | 1.0 | | test.c:532:17:532:17 | 4 | 1.0 | | test.c:532:17:532:17 | (unsigned int)... | 1.0 | -| test.c:532:17:532:34 | ... * ... | 9.237888E7 | -| test.c:532:17:533:34 | ... + ... | 8.5338574700544E15 | -| test.c:532:17:534:34 | ... + ... | 7.88348195163259E23 | -| test.c:532:17:540:30 | ... + ... | 1.6780307674063534E49 | -| test.c:532:21:532:34 | (...) | 9.237888E7 | -| test.c:532:22:532:23 | ip | 9.237888E7 | -| test.c:532:22:532:28 | ... * ... | 9.237888E7 | -| test.c:532:22:532:33 | ... + ... | 9.237888E7 | +| test.c:532:17:532:34 | ... * ... | 8627385.0 | +| test.c:532:17:533:34 | ... + ... | 7.4431771938225E13 | +| test.c:532:17:534:34 | ... + ... | 6.421515527432633E20 | +| test.c:532:17:540:30 | ... + ... | 3.298869507082441E42 | +| test.c:532:21:532:34 | (...) | 8627385.0 | +| test.c:532:22:532:23 | ip | 8627385.0 | +| test.c:532:22:532:28 | ... * ... | 8627385.0 | +| test.c:532:22:532:33 | ... + ... | 8627385.0 | | test.c:532:27:532:28 | 14 | 1.0 | | test.c:532:27:532:28 | (unsigned int)... | 1.0 | | test.c:532:32:532:33 | 32 | 1.0 | | test.c:532:32:532:33 | (unsigned int)... | 1.0 | -| test.c:533:17:533:34 | (...) | 9.237888E7 | +| test.c:533:17:533:34 | (...) | 8627385.0 | | test.c:533:18:533:18 | 2 | 1.0 | | test.c:533:18:533:18 | (unsigned int)... | 1.0 | -| test.c:533:18:533:23 | ... * ... | 9.237888E7 | -| test.c:533:18:533:28 | ... * ... | 9.237888E7 | -| test.c:533:18:533:33 | ... + ... | 9.237888E7 | -| test.c:533:22:533:23 | ip | 9.237888E7 | +| test.c:533:18:533:23 | ... * ... | 8627385.0 | +| test.c:533:18:533:28 | ... * ... | 8627385.0 | +| test.c:533:18:533:33 | ... + ... | 8627385.0 | +| test.c:533:22:533:23 | ip | 8627385.0 | | test.c:533:27:533:28 | 14 | 1.0 | | test.c:533:27:533:28 | (unsigned int)... | 1.0 | | test.c:533:32:533:33 | 32 | 1.0 | | test.c:533:32:533:33 | (unsigned int)... | 1.0 | | test.c:534:17:534:17 | 2 | 1.0 | | test.c:534:17:534:17 | (unsigned int)... | 1.0 | -| test.c:534:17:534:34 | ... * ... | 9.237888E7 | -| test.c:534:21:534:34 | (...) | 9.237888E7 | -| test.c:534:22:534:23 | ip | 9.237888E7 | -| test.c:534:22:534:28 | ... * ... | 9.237888E7 | -| test.c:534:22:534:33 | ... + ... | 9.237888E7 | +| test.c:534:17:534:34 | ... * ... | 8627385.0 | +| test.c:534:21:534:34 | (...) | 8627385.0 | +| test.c:534:22:534:23 | ip | 8627385.0 | +| test.c:534:22:534:28 | ... * ... | 8627385.0 | +| test.c:534:22:534:33 | ... + ... | 8627385.0 | | test.c:534:27:534:28 | 14 | 1.0 | | test.c:534:27:534:28 | (unsigned int)... | 1.0 | | test.c:534:32:534:33 | 64 | 1.0 | | test.c:534:32:534:33 | (unsigned int)... | 1.0 | -| test.c:535:17:540:30 | (...) | 2.1285401269407994E25 | -| test.c:535:18:535:29 | (...) | 9.237888E7 | -| test.c:535:18:535:34 | ... * ... | 9.237888E7 | +| test.c:535:17:540:30 | (...) | 5.137213315127421E21 | +| test.c:535:18:535:29 | (...) | 8627385.0 | +| test.c:535:18:535:34 | ... * ... | 8627385.0 | | test.c:535:18:536:67 | ... > ... | 1.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 2.1285401269407994E25 | +| test.c:535:18:540:29 | ... ? ... : ... | 5.137213315127421E21 | | test.c:535:19:535:19 | 2 | 1.0 | | test.c:535:19:535:19 | (unsigned int)... | 1.0 | -| test.c:535:19:535:24 | ... * ... | 9.237888E7 | -| test.c:535:19:535:28 | ... + ... | 9.237888E7 | -| test.c:535:23:535:24 | ip | 9.237888E7 | +| test.c:535:19:535:24 | ... * ... | 8627385.0 | +| test.c:535:19:535:28 | ... + ... | 8627385.0 | +| test.c:535:23:535:24 | ip | 8627385.0 | | test.c:535:28:535:28 | 1 | 1.0 | | test.c:535:28:535:28 | (unsigned int)... | 1.0 | | test.c:535:33:535:34 | 14 | 1.0 | | test.c:535:33:535:34 | (unsigned int)... | 1.0 | -| test.c:536:17:536:67 | (...) | 8.5338574700544E15 | +| test.c:536:17:536:67 | (...) | 7.4431771938225E13 | | test.c:536:18:536:19 | 14 | 1.0 | | test.c:536:18:536:19 | (unsigned int)... | 1.0 | -| test.c:536:18:536:30 | ... * ... | 9.237888E7 | +| test.c:536:18:536:30 | ... * ... | 8627385.0 | | test.c:536:18:536:40 | ... > ... | 1.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 8.5338574700544E15 | -| test.c:536:23:536:30 | (...) | 9.237888E7 | +| test.c:536:18:536:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:536:23:536:30 | (...) | 8627385.0 | | test.c:536:24:536:24 | 2 | 1.0 | | test.c:536:24:536:24 | (unsigned int)... | 1.0 | -| test.c:536:24:536:29 | ... * ... | 9.237888E7 | -| test.c:536:28:536:29 | ip | 9.237888E7 | +| test.c:536:24:536:29 | ... * ... | 8627385.0 | +| test.c:536:28:536:29 | ip | 8627385.0 | | test.c:536:34:536:35 | 17 | 1.0 | | test.c:536:34:536:35 | (unsigned int)... | 1.0 | -| test.c:536:34:536:40 | ... * ... | 9.237888E7 | -| test.c:536:39:536:40 | ip | 9.237888E7 | +| test.c:536:34:536:40 | ... * ... | 8627385.0 | +| test.c:536:39:536:40 | ip | 8627385.0 | | test.c:536:44:536:45 | 17 | 1.0 | | test.c:536:44:536:45 | (unsigned int)... | 1.0 | -| test.c:536:44:536:56 | ... * ... | 9.237888E7 | -| test.c:536:49:536:56 | (...) | 9.237888E7 | +| test.c:536:44:536:56 | ... * ... | 8627385.0 | +| test.c:536:49:536:56 | (...) | 8627385.0 | | test.c:536:50:536:50 | 2 | 1.0 | | test.c:536:50:536:50 | (unsigned int)... | 1.0 | -| test.c:536:50:536:55 | ... * ... | 9.237888E7 | -| test.c:536:54:536:55 | ip | 9.237888E7 | +| test.c:536:50:536:55 | ... * ... | 8627385.0 | +| test.c:536:54:536:55 | ip | 8627385.0 | | test.c:536:60:536:61 | 17 | 1.0 | | test.c:536:60:536:61 | (unsigned int)... | 1.0 | -| test.c:536:60:536:66 | ... * ... | 9.237888E7 | -| test.c:536:65:536:66 | ip | 9.237888E7 | -| test.c:537:21:537:32 | (...) | 2.7713664E8 | -| test.c:537:21:537:37 | ... * ... | 2.7713664E8 | +| test.c:536:60:536:66 | ... * ... | 8627385.0 | +| test.c:536:65:536:66 | ip | 8627385.0 | +| test.c:537:21:537:32 | (...) | 1.7254771E7 | +| test.c:537:21:537:37 | ... * ... | 1.7254771E7 | | test.c:537:22:537:22 | 2 | 1.0 | | test.c:537:22:537:22 | (unsigned int)... | 1.0 | -| test.c:537:22:537:27 | ... * ... | 2.7713664E8 | -| test.c:537:22:537:31 | ... + ... | 2.7713664E8 | -| test.c:537:26:537:27 | ip | 2.7713664E8 | +| test.c:537:22:537:27 | ... * ... | 1.7254771E7 | +| test.c:537:22:537:31 | ... + ... | 1.7254771E7 | +| test.c:537:26:537:27 | ip | 1.7254771E7 | | test.c:537:31:537:31 | 1 | 1.0 | | test.c:537:31:537:31 | (unsigned int)... | 1.0 | | test.c:537:36:537:37 | 14 | 1.0 | | test.c:537:36:537:37 | (unsigned int)... | 1.0 | | test.c:538:21:538:22 | 14 | 1.0 | | test.c:538:21:538:22 | (unsigned int)... | 1.0 | -| test.c:538:21:538:33 | ... * ... | 2.7713664E8 | +| test.c:538:21:538:33 | ... * ... | 1.7254771E7 | | test.c:538:21:538:43 | ... > ... | 1.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 7.68047172304896E16 | -| test.c:538:26:538:33 | (...) | 2.7713664E8 | +| test.c:538:21:540:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:538:26:538:33 | (...) | 1.7254771E7 | | test.c:538:27:538:27 | 2 | 1.0 | | test.c:538:27:538:27 | (unsigned int)... | 1.0 | -| test.c:538:27:538:32 | ... * ... | 2.7713664E8 | -| test.c:538:31:538:32 | ip | 2.7713664E8 | +| test.c:538:27:538:32 | ... * ... | 1.7254771E7 | +| test.c:538:31:538:32 | ip | 1.7254771E7 | | test.c:538:37:538:38 | 17 | 1.0 | | test.c:538:37:538:38 | (unsigned int)... | 1.0 | -| test.c:538:37:538:43 | ... * ... | 2.7713664E8 | -| test.c:538:42:538:43 | ip | 2.7713664E8 | +| test.c:538:37:538:43 | ... * ... | 1.7254771E7 | +| test.c:538:42:538:43 | ip | 1.7254771E7 | | test.c:539:23:539:24 | 14 | 1.0 | | test.c:539:23:539:24 | (unsigned int)... | 1.0 | -| test.c:539:23:539:35 | ... * ... | 2.7713664E8 | -| test.c:539:28:539:35 | (...) | 2.7713664E8 | +| test.c:539:23:539:35 | ... * ... | 1.7254771E7 | +| test.c:539:28:539:35 | (...) | 1.7254771E7 | | test.c:539:29:539:29 | 2 | 1.0 | | test.c:539:29:539:29 | (unsigned int)... | 1.0 | -| test.c:539:29:539:34 | ... * ... | 2.7713664E8 | -| test.c:539:33:539:34 | ip | 2.7713664E8 | +| test.c:539:29:539:34 | ... * ... | 1.7254771E7 | +| test.c:539:33:539:34 | ip | 1.7254771E7 | | test.c:540:23:540:24 | 14 | 1.0 | | test.c:540:23:540:24 | (unsigned int)... | 1.0 | -| test.c:540:23:540:29 | ... * ... | 2.7713664E8 | -| test.c:540:28:540:29 | ip | 2.7713664E8 | +| test.c:540:23:540:29 | ... * ... | 1.7254771E7 | +| test.c:540:28:540:29 | ip | 1.7254771E7 | | test.c:541:17:541:17 | 2 | 1.0 | | test.c:541:17:541:17 | (unsigned int)... | 1.0 | -| test.c:541:17:541:22 | ... * ... | 9.237888E7 | -| test.c:541:17:541:27 | ... * ... | 9.237888E7 | -| test.c:541:17:541:47 | ... + ... | 8.5338574700544E15 | -| test.c:541:21:541:22 | ip | 9.237888E7 | +| test.c:541:17:541:22 | ... * ... | 8627385.0 | +| test.c:541:17:541:27 | ... * ... | 8627385.0 | +| test.c:541:17:541:47 | ... + ... | 7.4431771938225E13 | +| test.c:541:21:541:22 | ip | 8627385.0 | | test.c:541:26:541:27 | 14 | 1.0 | | test.c:541:26:541:27 | (unsigned int)... | 1.0 | -| test.c:541:31:541:42 | (...) | 9.237888E7 | -| test.c:541:31:541:47 | ... * ... | 9.237888E7 | +| test.c:541:31:541:42 | (...) | 8627385.0 | +| test.c:541:31:541:47 | ... * ... | 8627385.0 | | test.c:541:32:541:32 | 2 | 1.0 | | test.c:541:32:541:32 | (unsigned int)... | 1.0 | -| test.c:541:32:541:37 | ... * ... | 9.237888E7 | -| test.c:541:32:541:41 | ... + ... | 9.237888E7 | -| test.c:541:36:541:37 | ip | 9.237888E7 | +| test.c:541:32:541:37 | ... * ... | 8627385.0 | +| test.c:541:32:541:41 | ... + ... | 8627385.0 | +| test.c:541:36:541:37 | ip | 8627385.0 | | test.c:541:41:541:41 | 1 | 1.0 | | test.c:541:41:541:41 | (unsigned int)... | 1.0 | | test.c:541:46:541:47 | 17 | 1.0 | | test.c:541:46:541:47 | (unsigned int)... | 1.0 | -| test.c:542:11:563:30 | (...) | 1.5780666634686576E83 | +| test.c:542:11:563:30 | (...) | 6.08636382738973E71 | | test.c:542:12:542:12 | 4 | 1.0 | | test.c:542:12:542:12 | (unsigned int)... | 1.0 | -| test.c:542:12:542:29 | ... * ... | 9.237888E8 | -| test.c:542:12:543:30 | ... + ... | 8.5338574700544E17 | -| test.c:542:12:544:30 | ... + ... | 7.88348195163259E26 | -| test.c:542:12:550:26 | ... + ... | 1.6780307674063535E55 | +| test.c:542:12:542:29 | ... * ... | 6.0391698E7 | +| test.c:542:12:543:30 | ... + ... | 3.647157187323204E15 | +| test.c:542:12:544:30 | ... + ... | 2.2025801541535236E23 | +| test.c:542:12:550:26 | ... + ... | 3.881087564774641E47 | | test.c:542:12:551:61 | ... > ... | 1.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 1.5780666634686576E83 | -| test.c:542:16:542:29 | (...) | 9.237888E8 | -| test.c:542:17:542:18 | ip | 9.237888E8 | -| test.c:542:17:542:23 | ... * ... | 9.237888E8 | -| test.c:542:17:542:28 | ... + ... | 9.237888E8 | +| test.c:542:12:563:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:542:16:542:29 | (...) | 6.0391698E7 | +| test.c:542:17:542:18 | ip | 6.0391698E7 | +| test.c:542:17:542:23 | ... * ... | 6.0391698E7 | +| test.c:542:17:542:28 | ... + ... | 6.0391698E7 | | test.c:542:22:542:23 | 14 | 1.0 | | test.c:542:22:542:23 | (unsigned int)... | 1.0 | | test.c:542:27:542:28 | 32 | 1.0 | | test.c:542:27:542:28 | (unsigned int)... | 1.0 | -| test.c:543:13:543:30 | (...) | 9.237888E8 | +| test.c:543:13:543:30 | (...) | 6.0391698E7 | | test.c:543:14:543:14 | 2 | 1.0 | | test.c:543:14:543:14 | (unsigned int)... | 1.0 | -| test.c:543:14:543:19 | ... * ... | 9.237888E8 | -| test.c:543:14:543:24 | ... * ... | 9.237888E8 | -| test.c:543:14:543:29 | ... + ... | 9.237888E8 | -| test.c:543:18:543:19 | ip | 9.237888E8 | +| test.c:543:14:543:19 | ... * ... | 6.0391698E7 | +| test.c:543:14:543:24 | ... * ... | 6.0391698E7 | +| test.c:543:14:543:29 | ... + ... | 6.0391698E7 | +| test.c:543:18:543:19 | ip | 6.0391698E7 | | test.c:543:23:543:24 | 14 | 1.0 | | test.c:543:23:543:24 | (unsigned int)... | 1.0 | | test.c:543:28:543:29 | 32 | 1.0 | | test.c:543:28:543:29 | (unsigned int)... | 1.0 | | test.c:544:13:544:13 | 2 | 1.0 | | test.c:544:13:544:13 | (unsigned int)... | 1.0 | -| test.c:544:13:544:30 | ... * ... | 9.237888E8 | -| test.c:544:17:544:30 | (...) | 9.237888E8 | -| test.c:544:18:544:19 | ip | 9.237888E8 | -| test.c:544:18:544:24 | ... * ... | 9.237888E8 | -| test.c:544:18:544:29 | ... + ... | 9.237888E8 | +| test.c:544:13:544:30 | ... * ... | 6.0391698E7 | +| test.c:544:17:544:30 | (...) | 6.0391698E7 | +| test.c:544:18:544:19 | ip | 6.0391698E7 | +| test.c:544:18:544:24 | ... * ... | 6.0391698E7 | +| test.c:544:18:544:29 | ... + ... | 6.0391698E7 | | test.c:544:23:544:24 | 14 | 1.0 | | test.c:544:23:544:24 | (unsigned int)... | 1.0 | | test.c:544:28:544:29 | 64 | 1.0 | | test.c:544:28:544:29 | (unsigned int)... | 1.0 | -| test.c:545:13:550:26 | (...) | 2.1285401269407994E28 | -| test.c:545:14:545:25 | (...) | 9.237888E8 | -| test.c:545:14:545:30 | ... * ... | 9.237888E8 | +| test.c:545:13:550:26 | (...) | 1.7620641670887053E24 | +| test.c:545:14:545:25 | (...) | 6.0391698E7 | +| test.c:545:14:545:30 | ... * ... | 6.0391698E7 | | test.c:545:14:546:63 | ... > ... | 1.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 2.1285401269407994E28 | +| test.c:545:14:550:25 | ... ? ... : ... | 1.7620641670887053E24 | | test.c:545:15:545:15 | 2 | 1.0 | | test.c:545:15:545:15 | (unsigned int)... | 1.0 | -| test.c:545:15:545:20 | ... * ... | 9.237888E8 | -| test.c:545:15:545:24 | ... + ... | 9.237888E8 | -| test.c:545:19:545:20 | ip | 9.237888E8 | +| test.c:545:15:545:20 | ... * ... | 6.0391698E7 | +| test.c:545:15:545:24 | ... + ... | 6.0391698E7 | +| test.c:545:19:545:20 | ip | 6.0391698E7 | | test.c:545:24:545:24 | 1 | 1.0 | | test.c:545:24:545:24 | (unsigned int)... | 1.0 | | test.c:545:29:545:30 | 14 | 1.0 | | test.c:545:29:545:30 | (unsigned int)... | 1.0 | -| test.c:546:13:546:63 | (...) | 8.5338574700544E17 | +| test.c:546:13:546:63 | (...) | 3.647157187323204E15 | | test.c:546:14:546:15 | 14 | 1.0 | | test.c:546:14:546:15 | (unsigned int)... | 1.0 | -| test.c:546:14:546:26 | ... * ... | 9.237888E8 | +| test.c:546:14:546:26 | ... * ... | 6.0391698E7 | | test.c:546:14:546:36 | ... > ... | 1.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 8.5338574700544E17 | -| test.c:546:19:546:26 | (...) | 9.237888E8 | +| test.c:546:14:546:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:546:19:546:26 | (...) | 6.0391698E7 | | test.c:546:20:546:20 | 2 | 1.0 | | test.c:546:20:546:20 | (unsigned int)... | 1.0 | -| test.c:546:20:546:25 | ... * ... | 9.237888E8 | -| test.c:546:24:546:25 | ip | 9.237888E8 | +| test.c:546:20:546:25 | ... * ... | 6.0391698E7 | +| test.c:546:24:546:25 | ip | 6.0391698E7 | | test.c:546:30:546:31 | 17 | 1.0 | | test.c:546:30:546:31 | (unsigned int)... | 1.0 | -| test.c:546:30:546:36 | ... * ... | 9.237888E8 | -| test.c:546:35:546:36 | ip | 9.237888E8 | +| test.c:546:30:546:36 | ... * ... | 6.0391698E7 | +| test.c:546:35:546:36 | ip | 6.0391698E7 | | test.c:546:40:546:41 | 17 | 1.0 | | test.c:546:40:546:41 | (unsigned int)... | 1.0 | -| test.c:546:40:546:52 | ... * ... | 9.237888E8 | -| test.c:546:45:546:52 | (...) | 9.237888E8 | +| test.c:546:40:546:52 | ... * ... | 6.0391698E7 | +| test.c:546:45:546:52 | (...) | 6.0391698E7 | | test.c:546:46:546:46 | 2 | 1.0 | | test.c:546:46:546:46 | (unsigned int)... | 1.0 | -| test.c:546:46:546:51 | ... * ... | 9.237888E8 | -| test.c:546:50:546:51 | ip | 9.237888E8 | +| test.c:546:46:546:51 | ... * ... | 6.0391698E7 | +| test.c:546:50:546:51 | ip | 6.0391698E7 | | test.c:546:56:546:57 | 17 | 1.0 | | test.c:546:56:546:57 | (unsigned int)... | 1.0 | -| test.c:546:56:546:62 | ... * ... | 9.237888E8 | -| test.c:546:61:546:62 | ip | 9.237888E8 | -| test.c:547:17:547:28 | (...) | 2.7713664E9 | -| test.c:547:17:547:33 | ... * ... | 2.7713664E9 | +| test.c:546:56:546:62 | ... * ... | 6.0391698E7 | +| test.c:546:61:546:62 | ip | 6.0391698E7 | +| test.c:547:17:547:28 | (...) | 1.20783397E8 | +| test.c:547:17:547:33 | ... * ... | 1.20783397E8 | | test.c:547:18:547:18 | 2 | 1.0 | | test.c:547:18:547:18 | (unsigned int)... | 1.0 | -| test.c:547:18:547:23 | ... * ... | 2.7713664E9 | -| test.c:547:18:547:27 | ... + ... | 2.7713664E9 | -| test.c:547:22:547:23 | ip | 2.7713664E9 | +| test.c:547:18:547:23 | ... * ... | 1.20783397E8 | +| test.c:547:18:547:27 | ... + ... | 1.20783397E8 | +| test.c:547:22:547:23 | ip | 1.20783397E8 | | test.c:547:27:547:27 | 1 | 1.0 | | test.c:547:27:547:27 | (unsigned int)... | 1.0 | | test.c:547:32:547:33 | 14 | 1.0 | | test.c:547:32:547:33 | (unsigned int)... | 1.0 | | test.c:548:17:548:18 | 14 | 1.0 | | test.c:548:17:548:18 | (unsigned int)... | 1.0 | -| test.c:548:17:548:29 | ... * ... | 2.7713664E9 | +| test.c:548:17:548:29 | ... * ... | 1.20783397E8 | | test.c:548:17:548:39 | ... > ... | 1.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 7.68047172304896E18 | -| test.c:548:22:548:29 | (...) | 2.7713664E9 | +| test.c:548:17:550:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:548:22:548:29 | (...) | 1.20783397E8 | | test.c:548:23:548:23 | 2 | 1.0 | | test.c:548:23:548:23 | (unsigned int)... | 1.0 | -| test.c:548:23:548:28 | ... * ... | 2.7713664E9 | -| test.c:548:27:548:28 | ip | 2.7713664E9 | +| test.c:548:23:548:28 | ... * ... | 1.20783397E8 | +| test.c:548:27:548:28 | ip | 1.20783397E8 | | test.c:548:33:548:34 | 17 | 1.0 | | test.c:548:33:548:34 | (unsigned int)... | 1.0 | -| test.c:548:33:548:39 | ... * ... | 2.7713664E9 | -| test.c:548:38:548:39 | ip | 2.7713664E9 | +| test.c:548:33:548:39 | ... * ... | 1.20783397E8 | +| test.c:548:38:548:39 | ip | 1.20783397E8 | | test.c:549:19:549:20 | 14 | 1.0 | | test.c:549:19:549:20 | (unsigned int)... | 1.0 | -| test.c:549:19:549:31 | ... * ... | 2.7713664E9 | -| test.c:549:24:549:31 | (...) | 2.7713664E9 | +| test.c:549:19:549:31 | ... * ... | 1.20783397E8 | +| test.c:549:24:549:31 | (...) | 1.20783397E8 | | test.c:549:25:549:25 | 2 | 1.0 | | test.c:549:25:549:25 | (unsigned int)... | 1.0 | -| test.c:549:25:549:30 | ... * ... | 2.7713664E9 | -| test.c:549:29:549:30 | ip | 2.7713664E9 | +| test.c:549:25:549:30 | ... * ... | 1.20783397E8 | +| test.c:549:29:549:30 | ip | 1.20783397E8 | | test.c:550:19:550:20 | 14 | 1.0 | | test.c:550:19:550:20 | (unsigned int)... | 1.0 | -| test.c:550:19:550:25 | ... * ... | 2.7713664E9 | -| test.c:550:24:550:25 | ip | 2.7713664E9 | -| test.c:551:11:551:61 | (...) | 6.912424550744064E19 | +| test.c:550:19:550:25 | ... * ... | 1.20783397E8 | +| test.c:550:24:550:25 | ip | 1.20783397E8 | +| test.c:551:11:551:61 | (...) | 1.3129766091773648E17 | | test.c:551:12:551:13 | 14 | 1.0 | | test.c:551:12:551:13 | (unsigned int)... | 1.0 | -| test.c:551:12:551:18 | ... * ... | 8.3140992E9 | +| test.c:551:12:551:18 | ... * ... | 3.62350191E8 | | test.c:551:12:551:34 | ... > ... | 1.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 6.912424550744064E19 | -| test.c:551:17:551:18 | ip | 8.3140992E9 | -| test.c:551:22:551:29 | (...) | 8.3140992E9 | -| test.c:551:22:551:34 | ... * ... | 8.3140992E9 | -| test.c:551:23:551:24 | ip | 8.3140992E9 | -| test.c:551:23:551:28 | ... + ... | 8.3140992E9 | +| test.c:551:12:551:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:551:17:551:18 | ip | 3.62350191E8 | +| test.c:551:22:551:29 | (...) | 3.62350191E8 | +| test.c:551:22:551:34 | ... * ... | 3.62350191E8 | +| test.c:551:23:551:24 | ip | 3.62350191E8 | +| test.c:551:23:551:28 | ... + ... | 3.62350191E8 | | test.c:551:28:551:28 | 1 | 1.0 | | test.c:551:28:551:28 | (unsigned int)... | 1.0 | | test.c:551:33:551:34 | 17 | 1.0 | | test.c:551:33:551:34 | (unsigned int)... | 1.0 | | test.c:551:38:551:39 | 17 | 1.0 | | test.c:551:38:551:39 | (unsigned int)... | 1.0 | -| test.c:551:38:551:44 | ... * ... | 8.3140992E9 | -| test.c:551:43:551:44 | ip | 8.3140992E9 | -| test.c:551:48:551:55 | (...) | 8.3140992E9 | -| test.c:551:48:551:60 | ... * ... | 8.3140992E9 | -| test.c:551:49:551:50 | ip | 8.3140992E9 | -| test.c:551:49:551:54 | ... + ... | 8.3140992E9 | +| test.c:551:38:551:44 | ... * ... | 3.62350191E8 | +| test.c:551:43:551:44 | ip | 3.62350191E8 | +| test.c:551:48:551:55 | (...) | 3.62350191E8 | +| test.c:551:48:551:60 | ... * ... | 3.62350191E8 | +| test.c:551:49:551:50 | ip | 3.62350191E8 | +| test.c:551:49:551:54 | ... + ... | 3.62350191E8 | | test.c:551:54:551:54 | 1 | 1.0 | | test.c:551:54:551:54 | (unsigned int)... | 1.0 | | test.c:551:59:551:60 | 17 | 1.0 | | test.c:551:59:551:60 | (unsigned int)... | 1.0 | | test.c:552:15:552:15 | 4 | 1.0 | | test.c:552:15:552:15 | (unsigned int)... | 1.0 | -| test.c:552:15:552:32 | ... * ... | 1.66281984E10 | -| test.c:552:15:553:32 | ... + ... | 2.7649698202976256E20 | -| test.c:552:15:554:32 | ... + ... | 4.5976466741921265E30 | -| test.c:552:15:560:28 | ... + ... | 5.7073558339916785E62 | -| test.c:552:19:552:32 | (...) | 1.66281984E10 | -| test.c:552:20:552:21 | ip | 1.66281984E10 | -| test.c:552:20:552:26 | ... * ... | 1.66281984E10 | -| test.c:552:20:552:31 | ... + ... | 1.66281984E10 | +| test.c:552:15:552:32 | ... * ... | 7.24700382E8 | +| test.c:552:15:553:32 | ... + ... | 5.251906436709459E17 | +| test.c:552:15:554:32 | ... + ... | 3.806058600911604E26 | +| test.c:552:15:560:28 | ... + ... | 1.1588865682845433E54 | +| test.c:552:19:552:32 | (...) | 7.24700382E8 | +| test.c:552:20:552:21 | ip | 7.24700382E8 | +| test.c:552:20:552:26 | ... * ... | 7.24700382E8 | +| test.c:552:20:552:31 | ... + ... | 7.24700382E8 | | test.c:552:25:552:26 | 14 | 1.0 | | test.c:552:25:552:26 | (unsigned int)... | 1.0 | | test.c:552:30:552:31 | 32 | 1.0 | | test.c:552:30:552:31 | (unsigned int)... | 1.0 | -| test.c:553:15:553:32 | (...) | 1.66281984E10 | +| test.c:553:15:553:32 | (...) | 7.24700382E8 | | test.c:553:16:553:16 | 2 | 1.0 | | test.c:553:16:553:16 | (unsigned int)... | 1.0 | -| test.c:553:16:553:21 | ... * ... | 1.66281984E10 | -| test.c:553:16:553:26 | ... * ... | 1.66281984E10 | -| test.c:553:16:553:31 | ... + ... | 1.66281984E10 | -| test.c:553:20:553:21 | ip | 1.66281984E10 | +| test.c:553:16:553:21 | ... * ... | 7.24700382E8 | +| test.c:553:16:553:26 | ... * ... | 7.24700382E8 | +| test.c:553:16:553:31 | ... + ... | 7.24700382E8 | +| test.c:553:20:553:21 | ip | 7.24700382E8 | | test.c:553:25:553:26 | 14 | 1.0 | | test.c:553:25:553:26 | (unsigned int)... | 1.0 | | test.c:553:30:553:31 | 32 | 1.0 | | test.c:553:30:553:31 | (unsigned int)... | 1.0 | | test.c:554:15:554:15 | 2 | 1.0 | | test.c:554:15:554:15 | (unsigned int)... | 1.0 | -| test.c:554:15:554:32 | ... * ... | 1.66281984E10 | -| test.c:554:19:554:32 | (...) | 1.66281984E10 | -| test.c:554:20:554:21 | ip | 1.66281984E10 | -| test.c:554:20:554:26 | ... * ... | 1.66281984E10 | -| test.c:554:20:554:31 | ... + ... | 1.66281984E10 | +| test.c:554:15:554:32 | ... * ... | 7.24700382E8 | +| test.c:554:19:554:32 | (...) | 7.24700382E8 | +| test.c:554:20:554:21 | ip | 7.24700382E8 | +| test.c:554:20:554:26 | ... * ... | 7.24700382E8 | +| test.c:554:20:554:31 | ... + ... | 7.24700382E8 | | test.c:554:25:554:26 | 14 | 1.0 | | test.c:554:25:554:26 | (unsigned int)... | 1.0 | | test.c:554:30:554:31 | 64 | 1.0 | | test.c:554:30:554:31 | (unsigned int)... | 1.0 | -| test.c:555:15:560:28 | (...) | 1.2413646020318741E32 | -| test.c:555:16:555:27 | (...) | 1.66281984E10 | -| test.c:555:16:555:32 | ... * ... | 1.66281984E10 | +| test.c:555:15:560:28 | (...) | 3.044846887031571E27 | +| test.c:555:16:555:27 | (...) | 7.24700382E8 | +| test.c:555:16:555:32 | ... * ... | 7.24700382E8 | | test.c:555:16:556:65 | ... > ... | 1.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 1.2413646020318741E32 | +| test.c:555:16:560:27 | ... ? ... : ... | 3.044846887031571E27 | | test.c:555:17:555:17 | 2 | 1.0 | | test.c:555:17:555:17 | (unsigned int)... | 1.0 | -| test.c:555:17:555:22 | ... * ... | 1.66281984E10 | -| test.c:555:17:555:26 | ... + ... | 1.66281984E10 | -| test.c:555:21:555:22 | ip | 1.66281984E10 | +| test.c:555:17:555:22 | ... * ... | 7.24700382E8 | +| test.c:555:17:555:26 | ... + ... | 7.24700382E8 | +| test.c:555:21:555:22 | ip | 7.24700382E8 | | test.c:555:26:555:26 | 1 | 1.0 | | test.c:555:26:555:26 | (unsigned int)... | 1.0 | | test.c:555:31:555:32 | 14 | 1.0 | | test.c:555:31:555:32 | (unsigned int)... | 1.0 | -| test.c:556:15:556:65 | (...) | 2.7649698202976256E20 | +| test.c:556:15:556:65 | (...) | 5.251906436709459E17 | | test.c:556:16:556:17 | 14 | 1.0 | | test.c:556:16:556:17 | (unsigned int)... | 1.0 | -| test.c:556:16:556:28 | ... * ... | 1.66281984E10 | +| test.c:556:16:556:28 | ... * ... | 7.24700382E8 | | test.c:556:16:556:38 | ... > ... | 1.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 2.7649698202976256E20 | -| test.c:556:21:556:28 | (...) | 1.66281984E10 | +| test.c:556:16:556:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:556:21:556:28 | (...) | 7.24700382E8 | | test.c:556:22:556:22 | 2 | 1.0 | | test.c:556:22:556:22 | (unsigned int)... | 1.0 | -| test.c:556:22:556:27 | ... * ... | 1.66281984E10 | -| test.c:556:26:556:27 | ip | 1.66281984E10 | +| test.c:556:22:556:27 | ... * ... | 7.24700382E8 | +| test.c:556:26:556:27 | ip | 7.24700382E8 | | test.c:556:32:556:33 | 17 | 1.0 | | test.c:556:32:556:33 | (unsigned int)... | 1.0 | -| test.c:556:32:556:38 | ... * ... | 1.66281984E10 | -| test.c:556:37:556:38 | ip | 1.66281984E10 | +| test.c:556:32:556:38 | ... * ... | 7.24700382E8 | +| test.c:556:37:556:38 | ip | 7.24700382E8 | | test.c:556:42:556:43 | 17 | 1.0 | | test.c:556:42:556:43 | (unsigned int)... | 1.0 | -| test.c:556:42:556:54 | ... * ... | 1.66281984E10 | -| test.c:556:47:556:54 | (...) | 1.66281984E10 | +| test.c:556:42:556:54 | ... * ... | 7.24700382E8 | +| test.c:556:47:556:54 | (...) | 7.24700382E8 | | test.c:556:48:556:48 | 2 | 1.0 | | test.c:556:48:556:48 | (unsigned int)... | 1.0 | -| test.c:556:48:556:53 | ... * ... | 1.66281984E10 | -| test.c:556:52:556:53 | ip | 1.66281984E10 | +| test.c:556:48:556:53 | ... * ... | 7.24700382E8 | +| test.c:556:52:556:53 | ip | 7.24700382E8 | | test.c:556:58:556:59 | 17 | 1.0 | | test.c:556:58:556:59 | (unsigned int)... | 1.0 | -| test.c:556:58:556:64 | ... * ... | 1.66281984E10 | -| test.c:556:63:556:64 | ip | 1.66281984E10 | -| test.c:557:19:557:30 | (...) | 4.98845952E10 | -| test.c:557:19:557:35 | ... * ... | 4.98845952E10 | +| test.c:556:58:556:64 | ... * ... | 7.24700382E8 | +| test.c:556:63:556:64 | ip | 7.24700382E8 | +| test.c:557:19:557:30 | (...) | 1.449400765E9 | +| test.c:557:19:557:35 | ... * ... | 1.449400765E9 | | test.c:557:20:557:20 | 2 | 1.0 | | test.c:557:20:557:20 | (unsigned int)... | 1.0 | -| test.c:557:20:557:25 | ... * ... | 4.98845952E10 | -| test.c:557:20:557:29 | ... + ... | 4.98845952E10 | -| test.c:557:24:557:25 | ip | 4.98845952E10 | +| test.c:557:20:557:25 | ... * ... | 1.449400765E9 | +| test.c:557:20:557:29 | ... + ... | 1.449400765E9 | +| test.c:557:24:557:25 | ip | 1.449400765E9 | | test.c:557:29:557:29 | 1 | 1.0 | | test.c:557:29:557:29 | (unsigned int)... | 1.0 | | test.c:557:34:557:35 | 14 | 1.0 | | test.c:557:34:557:35 | (unsigned int)... | 1.0 | | test.c:558:19:558:20 | 14 | 1.0 | | test.c:558:19:558:20 | (unsigned int)... | 1.0 | -| test.c:558:19:558:31 | ... * ... | 4.98845952E10 | +| test.c:558:19:558:31 | ... * ... | 1.449400765E9 | | test.c:558:19:558:41 | ... > ... | 1.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 2.488472838267863E21 | -| test.c:558:24:558:31 | (...) | 4.98845952E10 | +| test.c:558:19:560:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:558:24:558:31 | (...) | 1.449400765E9 | | test.c:558:25:558:25 | 2 | 1.0 | | test.c:558:25:558:25 | (unsigned int)... | 1.0 | -| test.c:558:25:558:30 | ... * ... | 4.98845952E10 | -| test.c:558:29:558:30 | ip | 4.98845952E10 | +| test.c:558:25:558:30 | ... * ... | 1.449400765E9 | +| test.c:558:29:558:30 | ip | 1.449400765E9 | | test.c:558:35:558:36 | 17 | 1.0 | | test.c:558:35:558:36 | (unsigned int)... | 1.0 | -| test.c:558:35:558:41 | ... * ... | 4.98845952E10 | -| test.c:558:40:558:41 | ip | 4.98845952E10 | +| test.c:558:35:558:41 | ... * ... | 1.449400765E9 | +| test.c:558:40:558:41 | ip | 1.449400765E9 | | test.c:559:21:559:22 | 14 | 1.0 | | test.c:559:21:559:22 | (unsigned int)... | 1.0 | -| test.c:559:21:559:33 | ... * ... | 4.98845952E10 | -| test.c:559:26:559:33 | (...) | 4.98845952E10 | +| test.c:559:21:559:33 | ... * ... | 1.449400765E9 | +| test.c:559:26:559:33 | (...) | 1.449400765E9 | | test.c:559:27:559:27 | 2 | 1.0 | | test.c:559:27:559:27 | (unsigned int)... | 1.0 | -| test.c:559:27:559:32 | ... * ... | 4.98845952E10 | -| test.c:559:31:559:32 | ip | 4.98845952E10 | +| test.c:559:27:559:32 | ... * ... | 1.449400765E9 | +| test.c:559:31:559:32 | ip | 1.449400765E9 | | test.c:560:21:560:22 | 14 | 1.0 | | test.c:560:21:560:22 | (unsigned int)... | 1.0 | -| test.c:560:21:560:27 | ... * ... | 4.98845952E10 | -| test.c:560:26:560:27 | ip | 4.98845952E10 | +| test.c:560:21:560:27 | ... * ... | 1.449400765E9 | +| test.c:560:26:560:27 | ip | 1.449400765E9 | | test.c:561:15:561:16 | 14 | 1.0 | | test.c:561:15:561:16 | (unsigned int)... | 1.0 | -| test.c:561:15:561:21 | ... * ... | 1.66281984E10 | +| test.c:561:15:561:21 | ... * ... | 7.24700382E8 | | test.c:561:15:561:37 | ... > ... | 1.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 2.7649698202976256E20 | -| test.c:561:20:561:21 | ip | 1.66281984E10 | -| test.c:561:25:561:32 | (...) | 1.66281984E10 | -| test.c:561:25:561:37 | ... * ... | 1.66281984E10 | -| test.c:561:26:561:27 | ip | 1.66281984E10 | -| test.c:561:26:561:31 | ... + ... | 1.66281984E10 | +| test.c:561:15:563:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:561:20:561:21 | ip | 7.24700382E8 | +| test.c:561:25:561:32 | (...) | 7.24700382E8 | +| test.c:561:25:561:37 | ... * ... | 7.24700382E8 | +| test.c:561:26:561:27 | ip | 7.24700382E8 | +| test.c:561:26:561:31 | ... + ... | 7.24700382E8 | | test.c:561:31:561:31 | 1 | 1.0 | | test.c:561:31:561:31 | (unsigned int)... | 1.0 | | test.c:561:36:561:37 | 17 | 1.0 | | test.c:561:36:561:37 | (unsigned int)... | 1.0 | | test.c:562:17:562:18 | 14 | 1.0 | | test.c:562:17:562:18 | (unsigned int)... | 1.0 | -| test.c:562:17:562:23 | ... * ... | 1.66281984E10 | -| test.c:562:22:562:23 | ip | 1.66281984E10 | -| test.c:563:17:563:24 | (...) | 1.66281984E10 | -| test.c:563:17:563:29 | ... * ... | 1.66281984E10 | -| test.c:563:18:563:19 | ip | 1.66281984E10 | -| test.c:563:18:563:23 | ... + ... | 1.66281984E10 | +| test.c:562:17:562:23 | ... * ... | 7.24700382E8 | +| test.c:562:22:562:23 | ip | 7.24700382E8 | +| test.c:563:17:563:24 | (...) | 7.24700382E8 | +| test.c:563:17:563:29 | ... * ... | 7.24700382E8 | +| test.c:563:18:563:19 | ip | 7.24700382E8 | +| test.c:563:18:563:23 | ... + ... | 7.24700382E8 | | test.c:563:23:563:23 | 1 | 1.0 | | test.c:563:23:563:23 | (unsigned int)... | 1.0 | | test.c:563:28:563:29 | 14 | 1.0 | | test.c:563:28:563:29 | (unsigned int)... | 1.0 | | test.c:564:11:564:11 | 2 | 1.0 | | test.c:564:11:564:11 | (unsigned int)... | 1.0 | -| test.c:564:11:564:28 | ... * ... | 1.829101824E11 | -| test.c:564:11:584:46 | ... + ... | 2.663451451985137E110 | -| test.c:564:15:564:28 | (...) | 1.829101824E11 | -| test.c:564:16:564:17 | ip | 1.829101824E11 | -| test.c:564:16:564:22 | ... * ... | 1.829101824E11 | -| test.c:564:16:564:27 | ... + ... | 1.829101824E11 | +| test.c:564:11:564:28 | ... * ... | 5.797603059E9 | +| test.c:564:11:584:46 | ... + ... | 9.943431528813442E94 | +| test.c:564:15:564:28 | (...) | 5.797603059E9 | +| test.c:564:16:564:17 | ip | 5.797603059E9 | +| test.c:564:16:564:22 | ... * ... | 5.797603059E9 | +| test.c:564:16:564:27 | ... + ... | 5.797603059E9 | | test.c:564:21:564:22 | 14 | 1.0 | | test.c:564:21:564:22 | (unsigned int)... | 1.0 | | test.c:564:26:564:27 | 32 | 1.0 | | test.c:564:26:564:27 | (unsigned int)... | 1.0 | -| test.c:565:11:584:46 | (...) | 1.4561526411692741E99 | +| test.c:565:11:584:46 | (...) | 1.715093535659983E85 | | test.c:565:12:565:12 | 4 | 1.0 | | test.c:565:12:565:12 | (unsigned int)... | 1.0 | -| test.c:565:12:565:29 | ... * ... | 1.829101824E11 | -| test.c:565:12:566:30 | ... + ... | 3.345613482560127E22 | -| test.c:565:12:567:30 | ... + ... | 6.11946772334972E33 | -| test.c:565:12:573:26 | ... + ... | 1.0110929008622132E69 | +| test.c:565:12:565:29 | ... * ... | 5.797603059E9 | +| test.c:565:12:566:30 | ... + ... | 3.361220122972616E19 | +| test.c:565:12:567:30 | ... + ... | 1.9487020066918396E29 | +| test.c:565:12:573:26 | ... + ... | 3.0379516094938436E59 | | test.c:565:12:574:41 | ... > ... | 1.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 1.4561526411692741E99 | -| test.c:565:16:565:29 | (...) | 1.829101824E11 | -| test.c:565:17:565:18 | ip | 1.829101824E11 | -| test.c:565:17:565:23 | ... * ... | 1.829101824E11 | -| test.c:565:17:565:28 | ... + ... | 1.829101824E11 | +| test.c:565:12:584:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:565:16:565:29 | (...) | 5.797603059E9 | +| test.c:565:17:565:18 | ip | 5.797603059E9 | +| test.c:565:17:565:23 | ... * ... | 5.797603059E9 | +| test.c:565:17:565:28 | ... + ... | 5.797603059E9 | | test.c:565:22:565:23 | 14 | 1.0 | | test.c:565:22:565:23 | (unsigned int)... | 1.0 | | test.c:565:27:565:28 | 32 | 1.0 | | test.c:565:27:565:28 | (unsigned int)... | 1.0 | -| test.c:566:13:566:30 | (...) | 1.829101824E11 | +| test.c:566:13:566:30 | (...) | 5.797603059E9 | | test.c:566:14:566:14 | 2 | 1.0 | | test.c:566:14:566:14 | (unsigned int)... | 1.0 | -| test.c:566:14:566:19 | ... * ... | 1.829101824E11 | -| test.c:566:14:566:24 | ... * ... | 1.829101824E11 | -| test.c:566:14:566:29 | ... + ... | 1.829101824E11 | -| test.c:566:18:566:19 | ip | 1.829101824E11 | +| test.c:566:14:566:19 | ... * ... | 5.797603059E9 | +| test.c:566:14:566:24 | ... * ... | 5.797603059E9 | +| test.c:566:14:566:29 | ... + ... | 5.797603059E9 | +| test.c:566:18:566:19 | ip | 5.797603059E9 | | test.c:566:23:566:24 | 14 | 1.0 | | test.c:566:23:566:24 | (unsigned int)... | 1.0 | | test.c:566:28:566:29 | 32 | 1.0 | | test.c:566:28:566:29 | (unsigned int)... | 1.0 | | test.c:567:13:567:13 | 2 | 1.0 | | test.c:567:13:567:13 | (unsigned int)... | 1.0 | -| test.c:567:13:567:30 | ... * ... | 1.829101824E11 | -| test.c:567:17:567:30 | (...) | 1.829101824E11 | -| test.c:567:18:567:19 | ip | 1.829101824E11 | -| test.c:567:18:567:24 | ... * ... | 1.829101824E11 | -| test.c:567:18:567:29 | ... + ... | 1.829101824E11 | +| test.c:567:13:567:30 | ... * ... | 5.797603059E9 | +| test.c:567:17:567:30 | (...) | 5.797603059E9 | +| test.c:567:18:567:19 | ip | 5.797603059E9 | +| test.c:567:18:567:24 | ... * ... | 5.797603059E9 | +| test.c:567:18:567:29 | ... + ... | 5.797603059E9 | | test.c:567:23:567:24 | 14 | 1.0 | | test.c:567:23:567:24 | (unsigned int)... | 1.0 | | test.c:567:28:567:29 | 64 | 1.0 | | test.c:567:28:567:29 | (unsigned int)... | 1.0 | -| test.c:568:13:573:26 | (...) | 1.6522562853044246E35 | -| test.c:568:14:568:25 | (...) | 1.829101824E11 | -| test.c:568:14:568:30 | ... * ... | 1.829101824E11 | +| test.c:568:13:573:26 | (...) | 1.558961605756818E30 | +| test.c:568:14:568:25 | (...) | 5.797603059E9 | +| test.c:568:14:568:30 | ... * ... | 5.797603059E9 | | test.c:568:14:569:63 | ... > ... | 1.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:568:14:573:25 | ... ? ... : ... | 1.558961605756818E30 | | test.c:568:15:568:15 | 2 | 1.0 | | test.c:568:15:568:15 | (unsigned int)... | 1.0 | -| test.c:568:15:568:20 | ... * ... | 1.829101824E11 | -| test.c:568:15:568:24 | ... + ... | 1.829101824E11 | -| test.c:568:19:568:20 | ip | 1.829101824E11 | +| test.c:568:15:568:20 | ... * ... | 5.797603059E9 | +| test.c:568:15:568:24 | ... + ... | 5.797603059E9 | +| test.c:568:19:568:20 | ip | 5.797603059E9 | | test.c:568:24:568:24 | 1 | 1.0 | | test.c:568:24:568:24 | (unsigned int)... | 1.0 | | test.c:568:29:568:30 | 14 | 1.0 | | test.c:568:29:568:30 | (unsigned int)... | 1.0 | -| test.c:569:13:569:63 | (...) | 3.345613482560127E22 | +| test.c:569:13:569:63 | (...) | 3.361220122972616E19 | | test.c:569:14:569:15 | 14 | 1.0 | | test.c:569:14:569:15 | (unsigned int)... | 1.0 | -| test.c:569:14:569:26 | ... * ... | 1.829101824E11 | +| test.c:569:14:569:26 | ... * ... | 5.797603059E9 | | test.c:569:14:569:36 | ... > ... | 1.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 3.345613482560127E22 | -| test.c:569:19:569:26 | (...) | 1.829101824E11 | +| test.c:569:14:569:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:569:19:569:26 | (...) | 5.797603059E9 | | test.c:569:20:569:20 | 2 | 1.0 | | test.c:569:20:569:20 | (unsigned int)... | 1.0 | -| test.c:569:20:569:25 | ... * ... | 1.829101824E11 | -| test.c:569:24:569:25 | ip | 1.829101824E11 | +| test.c:569:20:569:25 | ... * ... | 5.797603059E9 | +| test.c:569:24:569:25 | ip | 5.797603059E9 | | test.c:569:30:569:31 | 17 | 1.0 | | test.c:569:30:569:31 | (unsigned int)... | 1.0 | -| test.c:569:30:569:36 | ... * ... | 1.829101824E11 | -| test.c:569:35:569:36 | ip | 1.829101824E11 | +| test.c:569:30:569:36 | ... * ... | 5.797603059E9 | +| test.c:569:35:569:36 | ip | 5.797603059E9 | | test.c:569:40:569:41 | 17 | 1.0 | | test.c:569:40:569:41 | (unsigned int)... | 1.0 | -| test.c:569:40:569:52 | ... * ... | 1.829101824E11 | -| test.c:569:45:569:52 | (...) | 1.829101824E11 | +| test.c:569:40:569:52 | ... * ... | 5.797603059E9 | +| test.c:569:45:569:52 | (...) | 5.797603059E9 | | test.c:569:46:569:46 | 2 | 1.0 | | test.c:569:46:569:46 | (unsigned int)... | 1.0 | -| test.c:569:46:569:51 | ... * ... | 1.829101824E11 | -| test.c:569:50:569:51 | ip | 1.829101824E11 | +| test.c:569:46:569:51 | ... * ... | 5.797603059E9 | +| test.c:569:50:569:51 | ip | 5.797603059E9 | | test.c:569:56:569:57 | 17 | 1.0 | | test.c:569:56:569:57 | (unsigned int)... | 1.0 | -| test.c:569:56:569:62 | ... * ... | 1.829101824E11 | -| test.c:569:61:569:62 | ip | 1.829101824E11 | -| test.c:570:17:570:28 | (...) | 5.487305472E11 | -| test.c:570:17:570:33 | ... * ... | 5.487305472E11 | +| test.c:569:56:569:62 | ... * ... | 5.797603059E9 | +| test.c:569:61:569:62 | ip | 5.797603059E9 | +| test.c:570:17:570:28 | (...) | 1.1595206119E10 | +| test.c:570:17:570:33 | ... * ... | 1.1595206119E10 | | test.c:570:18:570:18 | 2 | 1.0 | | test.c:570:18:570:18 | (unsigned int)... | 1.0 | -| test.c:570:18:570:23 | ... * ... | 5.487305472E11 | -| test.c:570:18:570:27 | ... + ... | 5.487305472E11 | -| test.c:570:22:570:23 | ip | 5.487305472E11 | +| test.c:570:18:570:23 | ... * ... | 1.1595206119E10 | +| test.c:570:18:570:27 | ... + ... | 1.1595206119E10 | +| test.c:570:22:570:23 | ip | 1.1595206119E10 | | test.c:570:27:570:27 | 1 | 1.0 | | test.c:570:27:570:27 | (unsigned int)... | 1.0 | | test.c:570:32:570:33 | 14 | 1.0 | | test.c:570:32:570:33 | (unsigned int)... | 1.0 | | test.c:571:17:571:18 | 14 | 1.0 | | test.c:571:17:571:18 | (unsigned int)... | 1.0 | -| test.c:571:17:571:29 | ... * ... | 5.487305472E11 | +| test.c:571:17:571:29 | ... * ... | 1.1595206119E10 | | test.c:571:17:571:39 | ... > ... | 1.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 3.0110521343041144E23 | -| test.c:571:22:571:29 | (...) | 5.487305472E11 | +| test.c:571:17:573:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:571:22:571:29 | (...) | 1.1595206119E10 | | test.c:571:23:571:23 | 2 | 1.0 | | test.c:571:23:571:23 | (unsigned int)... | 1.0 | -| test.c:571:23:571:28 | ... * ... | 5.487305472E11 | -| test.c:571:27:571:28 | ip | 5.487305472E11 | +| test.c:571:23:571:28 | ... * ... | 1.1595206119E10 | +| test.c:571:27:571:28 | ip | 1.1595206119E10 | | test.c:571:33:571:34 | 17 | 1.0 | | test.c:571:33:571:34 | (unsigned int)... | 1.0 | -| test.c:571:33:571:39 | ... * ... | 5.487305472E11 | -| test.c:571:38:571:39 | ip | 5.487305472E11 | +| test.c:571:33:571:39 | ... * ... | 1.1595206119E10 | +| test.c:571:38:571:39 | ip | 1.1595206119E10 | | test.c:572:19:572:20 | 14 | 1.0 | | test.c:572:19:572:20 | (unsigned int)... | 1.0 | -| test.c:572:19:572:31 | ... * ... | 5.487305472E11 | -| test.c:572:24:572:31 | (...) | 5.487305472E11 | +| test.c:572:19:572:31 | ... * ... | 1.1595206119E10 | +| test.c:572:24:572:31 | (...) | 1.1595206119E10 | | test.c:572:25:572:25 | 2 | 1.0 | | test.c:572:25:572:25 | (unsigned int)... | 1.0 | -| test.c:572:25:572:30 | ... * ... | 5.487305472E11 | -| test.c:572:29:572:30 | ip | 5.487305472E11 | +| test.c:572:25:572:30 | ... * ... | 1.1595206119E10 | +| test.c:572:29:572:30 | ip | 1.1595206119E10 | | test.c:573:19:573:20 | 14 | 1.0 | | test.c:573:19:573:20 | (unsigned int)... | 1.0 | -| test.c:573:19:573:25 | ... * ... | 5.487305472E11 | -| test.c:573:24:573:25 | ip | 5.487305472E11 | +| test.c:573:19:573:25 | ... * ... | 1.1595206119E10 | +| test.c:573:24:573:25 | ip | 1.1595206119E10 | | test.c:574:11:574:11 | 2 | 1.0 | | test.c:574:11:574:11 | (unsigned int)... | 1.0 | -| test.c:574:11:574:16 | ... * ... | 1.6461916416E12 | -| test.c:574:11:574:21 | ... * ... | 1.6461916416E12 | -| test.c:574:11:574:41 | ... + ... | 2.709946920873703E24 | -| test.c:574:15:574:16 | ip | 1.6461916416E12 | +| test.c:574:11:574:16 | ... * ... | 3.4785618357E10 | +| test.c:574:11:574:21 | ... * ... | 3.4785618357E10 | +| test.c:574:11:574:41 | ... + ... | 1.2100392444788552E21 | +| test.c:574:15:574:16 | ip | 3.4785618357E10 | | test.c:574:20:574:21 | 14 | 1.0 | | test.c:574:20:574:21 | (unsigned int)... | 1.0 | -| test.c:574:25:574:36 | (...) | 1.6461916416E12 | -| test.c:574:25:574:41 | ... * ... | 1.6461916416E12 | +| test.c:574:25:574:36 | (...) | 3.4785618357E10 | +| test.c:574:25:574:41 | ... * ... | 3.4785618357E10 | | test.c:574:26:574:26 | 2 | 1.0 | | test.c:574:26:574:26 | (unsigned int)... | 1.0 | -| test.c:574:26:574:31 | ... * ... | 1.6461916416E12 | -| test.c:574:26:574:35 | ... + ... | 1.6461916416E12 | -| test.c:574:30:574:31 | ip | 1.6461916416E12 | +| test.c:574:26:574:31 | ... * ... | 3.4785618357E10 | +| test.c:574:26:574:35 | ... + ... | 3.4785618357E10 | +| test.c:574:30:574:31 | ip | 3.4785618357E10 | | test.c:574:35:574:35 | 1 | 1.0 | | test.c:574:35:574:35 | (unsigned int)... | 1.0 | | test.c:574:40:574:41 | 17 | 1.0 | | test.c:574:40:574:41 | (unsigned int)... | 1.0 | | test.c:575:15:575:15 | 4 | 1.0 | | test.c:575:15:575:15 | (unsigned int)... | 1.0 | -| test.c:575:15:575:32 | ... * ... | 1.6461916416E12 | -| test.c:575:15:576:32 | ... + ... | 2.709946920873703E24 | -| test.c:575:15:577:32 | ... + ... | 4.4610919703219464E36 | -| test.c:575:15:583:28 | ... + ... | 5.373362223271155E74 | -| test.c:575:19:575:32 | (...) | 1.6461916416E12 | -| test.c:575:20:575:21 | ip | 1.6461916416E12 | -| test.c:575:20:575:26 | ... * ... | 1.6461916416E12 | -| test.c:575:20:575:31 | ... + ... | 1.6461916416E12 | +| test.c:575:15:575:32 | ... * ... | 3.4785618357E10 | +| test.c:575:15:576:32 | ... + ... | 1.2100392444788552E21 | +| test.c:575:15:577:32 | ... + ... | 4.209196335543408E31 | +| test.c:575:15:583:28 | ... + ... | 1.417386703353284E64 | +| test.c:575:19:575:32 | (...) | 3.4785618357E10 | +| test.c:575:20:575:21 | ip | 3.4785618357E10 | +| test.c:575:20:575:26 | ... * ... | 3.4785618357E10 | +| test.c:575:20:575:31 | ... + ... | 3.4785618357E10 | | test.c:575:25:575:26 | 14 | 1.0 | | test.c:575:25:575:26 | (unsigned int)... | 1.0 | | test.c:575:30:575:31 | 32 | 1.0 | | test.c:575:30:575:31 | (unsigned int)... | 1.0 | -| test.c:576:15:576:32 | (...) | 1.6461916416E12 | +| test.c:576:15:576:32 | (...) | 3.4785618357E10 | | test.c:576:16:576:16 | 2 | 1.0 | | test.c:576:16:576:16 | (unsigned int)... | 1.0 | -| test.c:576:16:576:21 | ... * ... | 1.6461916416E12 | -| test.c:576:16:576:26 | ... * ... | 1.6461916416E12 | -| test.c:576:16:576:31 | ... + ... | 1.6461916416E12 | -| test.c:576:20:576:21 | ip | 1.6461916416E12 | +| test.c:576:16:576:21 | ... * ... | 3.4785618357E10 | +| test.c:576:16:576:26 | ... * ... | 3.4785618357E10 | +| test.c:576:16:576:31 | ... + ... | 3.4785618357E10 | +| test.c:576:20:576:21 | ip | 3.4785618357E10 | | test.c:576:25:576:26 | 14 | 1.0 | | test.c:576:25:576:26 | (unsigned int)... | 1.0 | | test.c:576:30:576:31 | 32 | 1.0 | | test.c:576:30:576:31 | (unsigned int)... | 1.0 | | test.c:577:15:577:15 | 2 | 1.0 | | test.c:577:15:577:15 | (unsigned int)... | 1.0 | -| test.c:577:15:577:32 | ... * ... | 1.6461916416E12 | -| test.c:577:19:577:32 | (...) | 1.6461916416E12 | -| test.c:577:20:577:21 | ip | 1.6461916416E12 | -| test.c:577:20:577:26 | ... * ... | 1.6461916416E12 | -| test.c:577:20:577:31 | ... + ... | 1.6461916416E12 | +| test.c:577:15:577:32 | ... * ... | 3.4785618357E10 | +| test.c:577:19:577:32 | (...) | 3.4785618357E10 | +| test.c:577:20:577:21 | ip | 3.4785618357E10 | +| test.c:577:20:577:26 | ... * ... | 3.4785618357E10 | +| test.c:577:20:577:31 | ... + ... | 3.4785618357E10 | | test.c:577:25:577:26 | 14 | 1.0 | | test.c:577:25:577:26 | (unsigned int)... | 1.0 | | test.c:577:30:577:31 | 64 | 1.0 | | test.c:577:30:577:31 | (unsigned int)... | 1.0 | -| test.c:578:15:583:28 | (...) | 1.2044948319869254E38 | -| test.c:578:16:578:27 | (...) | 1.6461916416E12 | -| test.c:578:16:578:32 | ... * ... | 1.6461916416E12 | +| test.c:578:15:583:28 | (...) | 3.367357068579931E32 | +| test.c:578:16:578:27 | (...) | 3.4785618357E10 | +| test.c:578:16:578:32 | ... * ... | 3.4785618357E10 | | test.c:578:16:579:65 | ... > ... | 1.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 1.2044948319869254E38 | +| test.c:578:16:583:27 | ... ? ... : ... | 3.367357068579931E32 | | test.c:578:17:578:17 | 2 | 1.0 | | test.c:578:17:578:17 | (unsigned int)... | 1.0 | -| test.c:578:17:578:22 | ... * ... | 1.6461916416E12 | -| test.c:578:17:578:26 | ... + ... | 1.6461916416E12 | -| test.c:578:21:578:22 | ip | 1.6461916416E12 | +| test.c:578:17:578:22 | ... * ... | 3.4785618357E10 | +| test.c:578:17:578:26 | ... + ... | 3.4785618357E10 | +| test.c:578:21:578:22 | ip | 3.4785618357E10 | | test.c:578:26:578:26 | 1 | 1.0 | | test.c:578:26:578:26 | (unsigned int)... | 1.0 | | test.c:578:31:578:32 | 14 | 1.0 | | test.c:578:31:578:32 | (unsigned int)... | 1.0 | -| test.c:579:15:579:65 | (...) | 2.709946920873703E24 | +| test.c:579:15:579:65 | (...) | 1.2100392444788552E21 | | test.c:579:16:579:17 | 14 | 1.0 | | test.c:579:16:579:17 | (unsigned int)... | 1.0 | -| test.c:579:16:579:28 | ... * ... | 1.6461916416E12 | +| test.c:579:16:579:28 | ... * ... | 3.4785618357E10 | | test.c:579:16:579:38 | ... > ... | 1.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 2.709946920873703E24 | -| test.c:579:21:579:28 | (...) | 1.6461916416E12 | +| test.c:579:16:579:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:579:21:579:28 | (...) | 3.4785618357E10 | | test.c:579:22:579:22 | 2 | 1.0 | | test.c:579:22:579:22 | (unsigned int)... | 1.0 | -| test.c:579:22:579:27 | ... * ... | 1.6461916416E12 | -| test.c:579:26:579:27 | ip | 1.6461916416E12 | +| test.c:579:22:579:27 | ... * ... | 3.4785618357E10 | +| test.c:579:26:579:27 | ip | 3.4785618357E10 | | test.c:579:32:579:33 | 17 | 1.0 | | test.c:579:32:579:33 | (unsigned int)... | 1.0 | -| test.c:579:32:579:38 | ... * ... | 1.6461916416E12 | -| test.c:579:37:579:38 | ip | 1.6461916416E12 | +| test.c:579:32:579:38 | ... * ... | 3.4785618357E10 | +| test.c:579:37:579:38 | ip | 3.4785618357E10 | | test.c:579:42:579:43 | 17 | 1.0 | | test.c:579:42:579:43 | (unsigned int)... | 1.0 | -| test.c:579:42:579:54 | ... * ... | 1.6461916416E12 | -| test.c:579:47:579:54 | (...) | 1.6461916416E12 | +| test.c:579:42:579:54 | ... * ... | 3.4785618357E10 | +| test.c:579:47:579:54 | (...) | 3.4785618357E10 | | test.c:579:48:579:48 | 2 | 1.0 | | test.c:579:48:579:48 | (unsigned int)... | 1.0 | -| test.c:579:48:579:53 | ... * ... | 1.6461916416E12 | -| test.c:579:52:579:53 | ip | 1.6461916416E12 | +| test.c:579:48:579:53 | ... * ... | 3.4785618357E10 | +| test.c:579:52:579:53 | ip | 3.4785618357E10 | | test.c:579:58:579:59 | 17 | 1.0 | | test.c:579:58:579:59 | (unsigned int)... | 1.0 | -| test.c:579:58:579:64 | ... * ... | 1.6461916416E12 | -| test.c:579:63:579:64 | ip | 1.6461916416E12 | -| test.c:580:19:580:30 | (...) | 4.9385749248E12 | -| test.c:580:19:580:35 | ... * ... | 4.9385749248E12 | +| test.c:579:58:579:64 | ... * ... | 3.4785618357E10 | +| test.c:579:63:579:64 | ip | 3.4785618357E10 | +| test.c:580:19:580:30 | (...) | 6.9571236715E10 | +| test.c:580:19:580:35 | ... * ... | 6.9571236715E10 | | test.c:580:20:580:20 | 2 | 1.0 | | test.c:580:20:580:20 | (unsigned int)... | 1.0 | -| test.c:580:20:580:25 | ... * ... | 4.9385749248E12 | -| test.c:580:20:580:29 | ... + ... | 4.9385749248E12 | -| test.c:580:24:580:25 | ip | 4.9385749248E12 | +| test.c:580:20:580:25 | ... * ... | 6.9571236715E10 | +| test.c:580:20:580:29 | ... + ... | 6.9571236715E10 | +| test.c:580:24:580:25 | ip | 6.9571236715E10 | | test.c:580:29:580:29 | 1 | 1.0 | | test.c:580:29:580:29 | (unsigned int)... | 1.0 | | test.c:580:34:580:35 | 14 | 1.0 | | test.c:580:34:580:35 | (unsigned int)... | 1.0 | | test.c:581:19:581:20 | 14 | 1.0 | | test.c:581:19:581:20 | (unsigned int)... | 1.0 | -| test.c:581:19:581:31 | ... * ... | 4.9385749248E12 | +| test.c:581:19:581:31 | ... * ... | 6.9571236715E10 | | test.c:581:19:581:41 | ... > ... | 1.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 2.4389522287863325E25 | -| test.c:581:24:581:31 | (...) | 4.9385749248E12 | +| test.c:581:19:583:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:581:24:581:31 | (...) | 6.9571236715E10 | | test.c:581:25:581:25 | 2 | 1.0 | | test.c:581:25:581:25 | (unsigned int)... | 1.0 | -| test.c:581:25:581:30 | ... * ... | 4.9385749248E12 | -| test.c:581:29:581:30 | ip | 4.9385749248E12 | +| test.c:581:25:581:30 | ... * ... | 6.9571236715E10 | +| test.c:581:29:581:30 | ip | 6.9571236715E10 | | test.c:581:35:581:36 | 17 | 1.0 | | test.c:581:35:581:36 | (unsigned int)... | 1.0 | -| test.c:581:35:581:41 | ... * ... | 4.9385749248E12 | -| test.c:581:40:581:41 | ip | 4.9385749248E12 | +| test.c:581:35:581:41 | ... * ... | 6.9571236715E10 | +| test.c:581:40:581:41 | ip | 6.9571236715E10 | | test.c:582:21:582:22 | 14 | 1.0 | | test.c:582:21:582:22 | (unsigned int)... | 1.0 | -| test.c:582:21:582:33 | ... * ... | 4.9385749248E12 | -| test.c:582:26:582:33 | (...) | 4.9385749248E12 | +| test.c:582:21:582:33 | ... * ... | 6.9571236715E10 | +| test.c:582:26:582:33 | (...) | 6.9571236715E10 | | test.c:582:27:582:27 | 2 | 1.0 | | test.c:582:27:582:27 | (unsigned int)... | 1.0 | -| test.c:582:27:582:32 | ... * ... | 4.9385749248E12 | -| test.c:582:31:582:32 | ip | 4.9385749248E12 | +| test.c:582:27:582:32 | ... * ... | 6.9571236715E10 | +| test.c:582:31:582:32 | ip | 6.9571236715E10 | | test.c:583:21:583:22 | 14 | 1.0 | | test.c:583:21:583:22 | (unsigned int)... | 1.0 | -| test.c:583:21:583:27 | ... * ... | 4.9385749248E12 | -| test.c:583:26:583:27 | ip | 4.9385749248E12 | +| test.c:583:21:583:27 | ... * ... | 6.9571236715E10 | +| test.c:583:26:583:27 | ip | 6.9571236715E10 | | test.c:584:15:584:15 | 2 | 1.0 | | test.c:584:15:584:15 | (unsigned int)... | 1.0 | -| test.c:584:15:584:20 | ... * ... | 1.6461916416E12 | -| test.c:584:15:584:25 | ... * ... | 1.6461916416E12 | -| test.c:584:15:584:45 | ... + ... | 2.709946920873703E24 | -| test.c:584:19:584:20 | ip | 1.6461916416E12 | +| test.c:584:15:584:20 | ... * ... | 3.4785618357E10 | +| test.c:584:15:584:25 | ... * ... | 3.4785618357E10 | +| test.c:584:15:584:45 | ... + ... | 1.2100392444788552E21 | +| test.c:584:19:584:20 | ip | 3.4785618357E10 | | test.c:584:24:584:25 | 14 | 1.0 | | test.c:584:24:584:25 | (unsigned int)... | 1.0 | -| test.c:584:29:584:40 | (...) | 1.6461916416E12 | -| test.c:584:29:584:45 | ... * ... | 1.6461916416E12 | +| test.c:584:29:584:40 | (...) | 3.4785618357E10 | +| test.c:584:29:584:45 | ... * ... | 3.4785618357E10 | | test.c:584:30:584:30 | 2 | 1.0 | | test.c:584:30:584:30 | (unsigned int)... | 1.0 | -| test.c:584:30:584:35 | ... * ... | 1.6461916416E12 | -| test.c:584:30:584:39 | ... + ... | 1.6461916416E12 | -| test.c:584:34:584:35 | ip | 1.6461916416E12 | +| test.c:584:30:584:35 | ... * ... | 3.4785618357E10 | +| test.c:584:30:584:39 | ... + ... | 3.4785618357E10 | +| test.c:584:34:584:35 | ip | 3.4785618357E10 | | test.c:584:39:584:39 | 1 | 1.0 | | test.c:584:39:584:39 | (unsigned int)... | 1.0 | | test.c:584:44:584:45 | 17 | 1.0 | | test.c:584:44:584:45 | (unsigned int)... | 1.0 | | test.c:585:11:585:11 | 4 | 1.0 | | test.c:585:11:585:11 | (unsigned int)... | 1.0 | -| test.c:585:11:585:28 | ... * ... | 1.829101824E11 | -| test.c:585:11:586:32 | ... + ... | 3.345613482560127E22 | -| test.c:585:11:587:32 | ... + ... | 6.11946772334972E33 | -| test.c:585:11:593:28 | ... + ... | 1.0110929008622132E69 | +| test.c:585:11:585:28 | ... * ... | 5.797603059E9 | +| test.c:585:11:586:32 | ... + ... | 3.361220122972616E19 | +| test.c:585:11:587:32 | ... + ... | 1.9487020066918396E29 | +| test.c:585:11:593:28 | ... + ... | 3.0379516094938436E59 | | test.c:585:11:594:63 | ... > ... | 1.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 3.727750761393342E101 | -| test.c:585:15:585:28 | (...) | 1.829101824E11 | -| test.c:585:16:585:17 | ip | 1.829101824E11 | -| test.c:585:16:585:22 | ... * ... | 1.829101824E11 | -| test.c:585:16:585:27 | ... + ... | 1.829101824E11 | +| test.c:585:11:606:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:585:15:585:28 | (...) | 5.797603059E9 | +| test.c:585:16:585:17 | ip | 5.797603059E9 | +| test.c:585:16:585:22 | ... * ... | 5.797603059E9 | +| test.c:585:16:585:27 | ... + ... | 5.797603059E9 | | test.c:585:21:585:22 | 14 | 1.0 | | test.c:585:21:585:22 | (unsigned int)... | 1.0 | | test.c:585:26:585:27 | 32 | 1.0 | | test.c:585:26:585:27 | (unsigned int)... | 1.0 | -| test.c:586:15:586:32 | (...) | 1.829101824E11 | +| test.c:586:15:586:32 | (...) | 5.797603059E9 | | test.c:586:16:586:16 | 2 | 1.0 | | test.c:586:16:586:16 | (unsigned int)... | 1.0 | -| test.c:586:16:586:21 | ... * ... | 1.829101824E11 | -| test.c:586:16:586:26 | ... * ... | 1.829101824E11 | -| test.c:586:16:586:31 | ... + ... | 1.829101824E11 | -| test.c:586:20:586:21 | ip | 1.829101824E11 | +| test.c:586:16:586:21 | ... * ... | 5.797603059E9 | +| test.c:586:16:586:26 | ... * ... | 5.797603059E9 | +| test.c:586:16:586:31 | ... + ... | 5.797603059E9 | +| test.c:586:20:586:21 | ip | 5.797603059E9 | | test.c:586:25:586:26 | 14 | 1.0 | | test.c:586:25:586:26 | (unsigned int)... | 1.0 | | test.c:586:30:586:31 | 32 | 1.0 | | test.c:586:30:586:31 | (unsigned int)... | 1.0 | | test.c:587:15:587:15 | 2 | 1.0 | | test.c:587:15:587:15 | (unsigned int)... | 1.0 | -| test.c:587:15:587:32 | ... * ... | 1.829101824E11 | -| test.c:587:19:587:32 | (...) | 1.829101824E11 | -| test.c:587:20:587:21 | ip | 1.829101824E11 | -| test.c:587:20:587:26 | ... * ... | 1.829101824E11 | -| test.c:587:20:587:31 | ... + ... | 1.829101824E11 | +| test.c:587:15:587:32 | ... * ... | 5.797603059E9 | +| test.c:587:19:587:32 | (...) | 5.797603059E9 | +| test.c:587:20:587:21 | ip | 5.797603059E9 | +| test.c:587:20:587:26 | ... * ... | 5.797603059E9 | +| test.c:587:20:587:31 | ... + ... | 5.797603059E9 | | test.c:587:25:587:26 | 14 | 1.0 | | test.c:587:25:587:26 | (unsigned int)... | 1.0 | | test.c:587:30:587:31 | 64 | 1.0 | | test.c:587:30:587:31 | (unsigned int)... | 1.0 | -| test.c:588:15:593:28 | (...) | 1.6522562853044246E35 | -| test.c:588:16:588:27 | (...) | 1.829101824E11 | -| test.c:588:16:588:32 | ... * ... | 1.829101824E11 | +| test.c:588:15:593:28 | (...) | 1.558961605756818E30 | +| test.c:588:16:588:27 | (...) | 5.797603059E9 | +| test.c:588:16:588:32 | ... * ... | 5.797603059E9 | | test.c:588:16:589:65 | ... > ... | 1.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 1.6522562853044246E35 | +| test.c:588:16:593:27 | ... ? ... : ... | 1.558961605756818E30 | | test.c:588:17:588:17 | 2 | 1.0 | | test.c:588:17:588:17 | (unsigned int)... | 1.0 | -| test.c:588:17:588:22 | ... * ... | 1.829101824E11 | -| test.c:588:17:588:26 | ... + ... | 1.829101824E11 | -| test.c:588:21:588:22 | ip | 1.829101824E11 | +| test.c:588:17:588:22 | ... * ... | 5.797603059E9 | +| test.c:588:17:588:26 | ... + ... | 5.797603059E9 | +| test.c:588:21:588:22 | ip | 5.797603059E9 | | test.c:588:26:588:26 | 1 | 1.0 | | test.c:588:26:588:26 | (unsigned int)... | 1.0 | | test.c:588:31:588:32 | 14 | 1.0 | | test.c:588:31:588:32 | (unsigned int)... | 1.0 | -| test.c:589:15:589:65 | (...) | 3.345613482560127E22 | +| test.c:589:15:589:65 | (...) | 3.361220122972616E19 | | test.c:589:16:589:17 | 14 | 1.0 | | test.c:589:16:589:17 | (unsigned int)... | 1.0 | -| test.c:589:16:589:28 | ... * ... | 1.829101824E11 | +| test.c:589:16:589:28 | ... * ... | 5.797603059E9 | | test.c:589:16:589:38 | ... > ... | 1.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 3.345613482560127E22 | -| test.c:589:21:589:28 | (...) | 1.829101824E11 | +| test.c:589:16:589:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:589:21:589:28 | (...) | 5.797603059E9 | | test.c:589:22:589:22 | 2 | 1.0 | | test.c:589:22:589:22 | (unsigned int)... | 1.0 | -| test.c:589:22:589:27 | ... * ... | 1.829101824E11 | -| test.c:589:26:589:27 | ip | 1.829101824E11 | +| test.c:589:22:589:27 | ... * ... | 5.797603059E9 | +| test.c:589:26:589:27 | ip | 5.797603059E9 | | test.c:589:32:589:33 | 17 | 1.0 | | test.c:589:32:589:33 | (unsigned int)... | 1.0 | -| test.c:589:32:589:38 | ... * ... | 1.829101824E11 | -| test.c:589:37:589:38 | ip | 1.829101824E11 | +| test.c:589:32:589:38 | ... * ... | 5.797603059E9 | +| test.c:589:37:589:38 | ip | 5.797603059E9 | | test.c:589:42:589:43 | 17 | 1.0 | | test.c:589:42:589:43 | (unsigned int)... | 1.0 | -| test.c:589:42:589:54 | ... * ... | 1.829101824E11 | -| test.c:589:47:589:54 | (...) | 1.829101824E11 | +| test.c:589:42:589:54 | ... * ... | 5.797603059E9 | +| test.c:589:47:589:54 | (...) | 5.797603059E9 | | test.c:589:48:589:48 | 2 | 1.0 | | test.c:589:48:589:48 | (unsigned int)... | 1.0 | -| test.c:589:48:589:53 | ... * ... | 1.829101824E11 | -| test.c:589:52:589:53 | ip | 1.829101824E11 | +| test.c:589:48:589:53 | ... * ... | 5.797603059E9 | +| test.c:589:52:589:53 | ip | 5.797603059E9 | | test.c:589:58:589:59 | 17 | 1.0 | | test.c:589:58:589:59 | (unsigned int)... | 1.0 | -| test.c:589:58:589:64 | ... * ... | 1.829101824E11 | -| test.c:589:63:589:64 | ip | 1.829101824E11 | -| test.c:590:19:590:30 | (...) | 5.487305472E11 | -| test.c:590:19:590:35 | ... * ... | 5.487305472E11 | +| test.c:589:58:589:64 | ... * ... | 5.797603059E9 | +| test.c:589:63:589:64 | ip | 5.797603059E9 | +| test.c:590:19:590:30 | (...) | 1.1595206119E10 | +| test.c:590:19:590:35 | ... * ... | 1.1595206119E10 | | test.c:590:20:590:20 | 2 | 1.0 | | test.c:590:20:590:20 | (unsigned int)... | 1.0 | -| test.c:590:20:590:25 | ... * ... | 5.487305472E11 | -| test.c:590:20:590:29 | ... + ... | 5.487305472E11 | -| test.c:590:24:590:25 | ip | 5.487305472E11 | +| test.c:590:20:590:25 | ... * ... | 1.1595206119E10 | +| test.c:590:20:590:29 | ... + ... | 1.1595206119E10 | +| test.c:590:24:590:25 | ip | 1.1595206119E10 | | test.c:590:29:590:29 | 1 | 1.0 | | test.c:590:29:590:29 | (unsigned int)... | 1.0 | | test.c:590:34:590:35 | 14 | 1.0 | | test.c:590:34:590:35 | (unsigned int)... | 1.0 | | test.c:591:19:591:20 | 14 | 1.0 | | test.c:591:19:591:20 | (unsigned int)... | 1.0 | -| test.c:591:19:591:31 | ... * ... | 5.487305472E11 | +| test.c:591:19:591:31 | ... * ... | 1.1595206119E10 | | test.c:591:19:591:41 | ... > ... | 1.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 3.0110521343041144E23 | -| test.c:591:24:591:31 | (...) | 5.487305472E11 | +| test.c:591:19:593:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:591:24:591:31 | (...) | 1.1595206119E10 | | test.c:591:25:591:25 | 2 | 1.0 | | test.c:591:25:591:25 | (unsigned int)... | 1.0 | -| test.c:591:25:591:30 | ... * ... | 5.487305472E11 | -| test.c:591:29:591:30 | ip | 5.487305472E11 | +| test.c:591:25:591:30 | ... * ... | 1.1595206119E10 | +| test.c:591:29:591:30 | ip | 1.1595206119E10 | | test.c:591:35:591:36 | 17 | 1.0 | | test.c:591:35:591:36 | (unsigned int)... | 1.0 | -| test.c:591:35:591:41 | ... * ... | 5.487305472E11 | -| test.c:591:40:591:41 | ip | 5.487305472E11 | +| test.c:591:35:591:41 | ... * ... | 1.1595206119E10 | +| test.c:591:40:591:41 | ip | 1.1595206119E10 | | test.c:592:21:592:22 | 14 | 1.0 | | test.c:592:21:592:22 | (unsigned int)... | 1.0 | -| test.c:592:21:592:33 | ... * ... | 5.487305472E11 | -| test.c:592:26:592:33 | (...) | 5.487305472E11 | +| test.c:592:21:592:33 | ... * ... | 1.1595206119E10 | +| test.c:592:26:592:33 | (...) | 1.1595206119E10 | | test.c:592:27:592:27 | 2 | 1.0 | | test.c:592:27:592:27 | (unsigned int)... | 1.0 | -| test.c:592:27:592:32 | ... * ... | 5.487305472E11 | -| test.c:592:31:592:32 | ip | 5.487305472E11 | +| test.c:592:27:592:32 | ... * ... | 1.1595206119E10 | +| test.c:592:31:592:32 | ip | 1.1595206119E10 | | test.c:593:21:593:22 | 14 | 1.0 | | test.c:593:21:593:22 | (unsigned int)... | 1.0 | -| test.c:593:21:593:27 | ... * ... | 5.487305472E11 | -| test.c:593:26:593:27 | ip | 5.487305472E11 | -| test.c:594:13:594:63 | (...) | 2.709946920873703E24 | +| test.c:593:21:593:27 | ... * ... | 1.1595206119E10 | +| test.c:593:26:593:27 | ip | 1.1595206119E10 | +| test.c:594:13:594:63 | (...) | 1.2100392444788552E21 | | test.c:594:14:594:15 | 14 | 1.0 | | test.c:594:14:594:15 | (unsigned int)... | 1.0 | -| test.c:594:14:594:20 | ... * ... | 1.6461916416E12 | +| test.c:594:14:594:20 | ... * ... | 3.4785618357E10 | | test.c:594:14:594:36 | ... > ... | 1.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 2.709946920873703E24 | -| test.c:594:19:594:20 | ip | 1.6461916416E12 | -| test.c:594:24:594:31 | (...) | 1.6461916416E12 | -| test.c:594:24:594:36 | ... * ... | 1.6461916416E12 | -| test.c:594:25:594:26 | ip | 1.6461916416E12 | -| test.c:594:25:594:30 | ... + ... | 1.6461916416E12 | +| test.c:594:14:594:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:594:19:594:20 | ip | 3.4785618357E10 | +| test.c:594:24:594:31 | (...) | 3.4785618357E10 | +| test.c:594:24:594:36 | ... * ... | 3.4785618357E10 | +| test.c:594:25:594:26 | ip | 3.4785618357E10 | +| test.c:594:25:594:30 | ... + ... | 3.4785618357E10 | | test.c:594:30:594:30 | 1 | 1.0 | | test.c:594:30:594:30 | (unsigned int)... | 1.0 | | test.c:594:35:594:36 | 17 | 1.0 | | test.c:594:35:594:36 | (unsigned int)... | 1.0 | | test.c:594:40:594:41 | 17 | 1.0 | | test.c:594:40:594:41 | (unsigned int)... | 1.0 | -| test.c:594:40:594:46 | ... * ... | 1.6461916416E12 | -| test.c:594:45:594:46 | ip | 1.6461916416E12 | -| test.c:594:50:594:57 | (...) | 1.6461916416E12 | -| test.c:594:50:594:62 | ... * ... | 1.6461916416E12 | -| test.c:594:51:594:52 | ip | 1.6461916416E12 | -| test.c:594:51:594:56 | ... + ... | 1.6461916416E12 | +| test.c:594:40:594:46 | ... * ... | 3.4785618357E10 | +| test.c:594:45:594:46 | ip | 3.4785618357E10 | +| test.c:594:50:594:57 | (...) | 3.4785618357E10 | +| test.c:594:50:594:62 | ... * ... | 3.4785618357E10 | +| test.c:594:51:594:52 | ip | 3.4785618357E10 | +| test.c:594:51:594:56 | ... + ... | 3.4785618357E10 | | test.c:594:56:594:56 | 1 | 1.0 | | test.c:594:56:594:56 | (unsigned int)... | 1.0 | | test.c:594:61:594:62 | 17 | 1.0 | | test.c:594:61:594:62 | (unsigned int)... | 1.0 | | test.c:595:13:595:13 | 4 | 1.0 | | test.c:595:13:595:13 | (unsigned int)... | 1.0 | -| test.c:595:13:595:30 | ... * ... | 3.2923832832E12 | -| test.c:595:13:596:30 | ... + ... | 1.0839787683494812E25 | -| test.c:595:13:597:30 | ... + ... | 3.568873576257557E37 | -| test.c:595:13:603:26 | ... + ... | 3.438951822893539E76 | -| test.c:595:17:595:30 | (...) | 3.2923832832E12 | -| test.c:595:18:595:19 | ip | 3.2923832832E12 | -| test.c:595:18:595:24 | ... * ... | 3.2923832832E12 | -| test.c:595:18:595:29 | ... + ... | 3.2923832832E12 | +| test.c:595:13:595:30 | ... * ... | 6.9571236714E10 | +| test.c:595:13:596:30 | ... + ... | 4.840156977915421E21 | +| test.c:595:13:597:30 | ... + ... | 3.3673570684347266E32 | +| test.c:595:13:603:26 | ... + ... | 9.071274901265435E65 | +| test.c:595:17:595:30 | (...) | 6.9571236714E10 | +| test.c:595:18:595:19 | ip | 6.9571236714E10 | +| test.c:595:18:595:24 | ... * ... | 6.9571236714E10 | +| test.c:595:18:595:29 | ... + ... | 6.9571236714E10 | | test.c:595:23:595:24 | 14 | 1.0 | | test.c:595:23:595:24 | (unsigned int)... | 1.0 | | test.c:595:28:595:29 | 32 | 1.0 | | test.c:595:28:595:29 | (unsigned int)... | 1.0 | -| test.c:596:13:596:30 | (...) | 3.2923832832E12 | +| test.c:596:13:596:30 | (...) | 6.9571236714E10 | | test.c:596:14:596:14 | 2 | 1.0 | | test.c:596:14:596:14 | (unsigned int)... | 1.0 | -| test.c:596:14:596:19 | ... * ... | 3.2923832832E12 | -| test.c:596:14:596:24 | ... * ... | 3.2923832832E12 | -| test.c:596:14:596:29 | ... + ... | 3.2923832832E12 | -| test.c:596:18:596:19 | ip | 3.2923832832E12 | +| test.c:596:14:596:19 | ... * ... | 6.9571236714E10 | +| test.c:596:14:596:24 | ... * ... | 6.9571236714E10 | +| test.c:596:14:596:29 | ... + ... | 6.9571236714E10 | +| test.c:596:18:596:19 | ip | 6.9571236714E10 | | test.c:596:23:596:24 | 14 | 1.0 | | test.c:596:23:596:24 | (unsigned int)... | 1.0 | | test.c:596:28:596:29 | 32 | 1.0 | | test.c:596:28:596:29 | (unsigned int)... | 1.0 | | test.c:597:13:597:13 | 2 | 1.0 | | test.c:597:13:597:13 | (unsigned int)... | 1.0 | -| test.c:597:13:597:30 | ... * ... | 3.2923832832E12 | -| test.c:597:17:597:30 | (...) | 3.2923832832E12 | -| test.c:597:18:597:19 | ip | 3.2923832832E12 | -| test.c:597:18:597:24 | ... * ... | 3.2923832832E12 | -| test.c:597:18:597:29 | ... + ... | 3.2923832832E12 | +| test.c:597:13:597:30 | ... * ... | 6.9571236714E10 | +| test.c:597:17:597:30 | (...) | 6.9571236714E10 | +| test.c:597:18:597:19 | ip | 6.9571236714E10 | +| test.c:597:18:597:24 | ... * ... | 6.9571236714E10 | +| test.c:597:18:597:29 | ... + ... | 6.9571236714E10 | | test.c:597:23:597:24 | 14 | 1.0 | | test.c:597:23:597:24 | (unsigned int)... | 1.0 | | test.c:597:28:597:29 | 64 | 1.0 | | test.c:597:28:597:29 | (unsigned int)... | 1.0 | -| test.c:598:13:603:26 | (...) | 9.635958655895403E38 | -| test.c:598:14:598:25 | (...) | 3.2923832832E12 | -| test.c:598:14:598:30 | ... * ... | 3.2923832832E12 | +| test.c:598:13:603:26 | (...) | 2.693885654805863E33 | +| test.c:598:14:598:25 | (...) | 6.9571236714E10 | +| test.c:598:14:598:30 | ... * ... | 6.9571236714E10 | | test.c:598:14:599:63 | ... > ... | 1.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 9.635958655895403E38 | +| test.c:598:14:603:25 | ... ? ... : ... | 2.693885654805863E33 | | test.c:598:15:598:15 | 2 | 1.0 | | test.c:598:15:598:15 | (unsigned int)... | 1.0 | -| test.c:598:15:598:20 | ... * ... | 3.2923832832E12 | -| test.c:598:15:598:24 | ... + ... | 3.2923832832E12 | -| test.c:598:19:598:20 | ip | 3.2923832832E12 | +| test.c:598:15:598:20 | ... * ... | 6.9571236714E10 | +| test.c:598:15:598:24 | ... + ... | 6.9571236714E10 | +| test.c:598:19:598:20 | ip | 6.9571236714E10 | | test.c:598:24:598:24 | 1 | 1.0 | | test.c:598:24:598:24 | (unsigned int)... | 1.0 | | test.c:598:29:598:30 | 14 | 1.0 | | test.c:598:29:598:30 | (unsigned int)... | 1.0 | -| test.c:599:13:599:63 | (...) | 1.0839787683494812E25 | +| test.c:599:13:599:63 | (...) | 4.840156977915421E21 | | test.c:599:14:599:15 | 14 | 1.0 | | test.c:599:14:599:15 | (unsigned int)... | 1.0 | -| test.c:599:14:599:26 | ... * ... | 3.2923832832E12 | +| test.c:599:14:599:26 | ... * ... | 6.9571236714E10 | | test.c:599:14:599:36 | ... > ... | 1.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 1.0839787683494812E25 | -| test.c:599:19:599:26 | (...) | 3.2923832832E12 | +| test.c:599:14:599:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:599:19:599:26 | (...) | 6.9571236714E10 | | test.c:599:20:599:20 | 2 | 1.0 | | test.c:599:20:599:20 | (unsigned int)... | 1.0 | -| test.c:599:20:599:25 | ... * ... | 3.2923832832E12 | -| test.c:599:24:599:25 | ip | 3.2923832832E12 | +| test.c:599:20:599:25 | ... * ... | 6.9571236714E10 | +| test.c:599:24:599:25 | ip | 6.9571236714E10 | | test.c:599:30:599:31 | 17 | 1.0 | | test.c:599:30:599:31 | (unsigned int)... | 1.0 | -| test.c:599:30:599:36 | ... * ... | 3.2923832832E12 | -| test.c:599:35:599:36 | ip | 3.2923832832E12 | +| test.c:599:30:599:36 | ... * ... | 6.9571236714E10 | +| test.c:599:35:599:36 | ip | 6.9571236714E10 | | test.c:599:40:599:41 | 17 | 1.0 | | test.c:599:40:599:41 | (unsigned int)... | 1.0 | -| test.c:599:40:599:52 | ... * ... | 3.2923832832E12 | -| test.c:599:45:599:52 | (...) | 3.2923832832E12 | +| test.c:599:40:599:52 | ... * ... | 6.9571236714E10 | +| test.c:599:45:599:52 | (...) | 6.9571236714E10 | | test.c:599:46:599:46 | 2 | 1.0 | | test.c:599:46:599:46 | (unsigned int)... | 1.0 | -| test.c:599:46:599:51 | ... * ... | 3.2923832832E12 | -| test.c:599:50:599:51 | ip | 3.2923832832E12 | +| test.c:599:46:599:51 | ... * ... | 6.9571236714E10 | +| test.c:599:50:599:51 | ip | 6.9571236714E10 | | test.c:599:56:599:57 | 17 | 1.0 | | test.c:599:56:599:57 | (unsigned int)... | 1.0 | -| test.c:599:56:599:62 | ... * ... | 3.2923832832E12 | -| test.c:599:61:599:62 | ip | 3.2923832832E12 | -| test.c:600:17:600:28 | (...) | 9.8771498496E12 | -| test.c:600:17:600:33 | ... * ... | 9.8771498496E12 | +| test.c:599:56:599:62 | ... * ... | 6.9571236714E10 | +| test.c:599:61:599:62 | ip | 6.9571236714E10 | +| test.c:600:17:600:28 | (...) | 1.39142473429E11 | +| test.c:600:17:600:33 | ... * ... | 1.39142473429E11 | | test.c:600:18:600:18 | 2 | 1.0 | | test.c:600:18:600:18 | (unsigned int)... | 1.0 | -| test.c:600:18:600:23 | ... * ... | 9.8771498496E12 | -| test.c:600:18:600:27 | ... + ... | 9.8771498496E12 | -| test.c:600:22:600:23 | ip | 9.8771498496E12 | +| test.c:600:18:600:23 | ... * ... | 1.39142473429E11 | +| test.c:600:18:600:27 | ... + ... | 1.39142473429E11 | +| test.c:600:22:600:23 | ip | 1.39142473429E11 | | test.c:600:27:600:27 | 1 | 1.0 | | test.c:600:27:600:27 | (unsigned int)... | 1.0 | | test.c:600:32:600:33 | 14 | 1.0 | | test.c:600:32:600:33 | (unsigned int)... | 1.0 | | test.c:601:17:601:18 | 14 | 1.0 | | test.c:601:17:601:18 | (unsigned int)... | 1.0 | -| test.c:601:17:601:29 | ... * ... | 9.8771498496E12 | +| test.c:601:17:601:29 | ... * ... | 1.39142473429E11 | | test.c:601:17:601:39 | ... > ... | 1.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 9.75580891514533E25 | -| test.c:601:22:601:29 | (...) | 9.8771498496E12 | +| test.c:601:17:603:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:601:22:601:29 | (...) | 1.39142473429E11 | | test.c:601:23:601:23 | 2 | 1.0 | | test.c:601:23:601:23 | (unsigned int)... | 1.0 | -| test.c:601:23:601:28 | ... * ... | 9.8771498496E12 | -| test.c:601:27:601:28 | ip | 9.8771498496E12 | +| test.c:601:23:601:28 | ... * ... | 1.39142473429E11 | +| test.c:601:27:601:28 | ip | 1.39142473429E11 | | test.c:601:33:601:34 | 17 | 1.0 | | test.c:601:33:601:34 | (unsigned int)... | 1.0 | -| test.c:601:33:601:39 | ... * ... | 9.8771498496E12 | -| test.c:601:38:601:39 | ip | 9.8771498496E12 | +| test.c:601:33:601:39 | ... * ... | 1.39142473429E11 | +| test.c:601:38:601:39 | ip | 1.39142473429E11 | | test.c:602:19:602:20 | 14 | 1.0 | | test.c:602:19:602:20 | (unsigned int)... | 1.0 | -| test.c:602:19:602:31 | ... * ... | 9.8771498496E12 | -| test.c:602:24:602:31 | (...) | 9.8771498496E12 | +| test.c:602:19:602:31 | ... * ... | 1.39142473429E11 | +| test.c:602:24:602:31 | (...) | 1.39142473429E11 | | test.c:602:25:602:25 | 2 | 1.0 | | test.c:602:25:602:25 | (unsigned int)... | 1.0 | -| test.c:602:25:602:30 | ... * ... | 9.8771498496E12 | -| test.c:602:29:602:30 | ip | 9.8771498496E12 | +| test.c:602:25:602:30 | ... * ... | 1.39142473429E11 | +| test.c:602:29:602:30 | ip | 1.39142473429E11 | | test.c:603:19:603:20 | 14 | 1.0 | | test.c:603:19:603:20 | (unsigned int)... | 1.0 | -| test.c:603:19:603:25 | ... * ... | 9.8771498496E12 | -| test.c:603:24:603:25 | ip | 9.8771498496E12 | +| test.c:603:19:603:25 | ... * ... | 1.39142473429E11 | +| test.c:603:24:603:25 | ip | 1.39142473429E11 | | test.c:604:13:604:14 | 14 | 1.0 | | test.c:604:13:604:14 | (unsigned int)... | 1.0 | -| test.c:604:13:604:19 | ... * ... | 3.2923832832E12 | +| test.c:604:13:604:19 | ... * ... | 6.9571236714E10 | | test.c:604:13:604:35 | ... > ... | 1.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 1.0839787683494812E25 | -| test.c:604:18:604:19 | ip | 3.2923832832E12 | -| test.c:604:23:604:30 | (...) | 3.2923832832E12 | -| test.c:604:23:604:35 | ... * ... | 3.2923832832E12 | -| test.c:604:24:604:25 | ip | 3.2923832832E12 | -| test.c:604:24:604:29 | ... + ... | 3.2923832832E12 | +| test.c:604:13:606:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:604:18:604:19 | ip | 6.9571236714E10 | +| test.c:604:23:604:30 | (...) | 6.9571236714E10 | +| test.c:604:23:604:35 | ... * ... | 6.9571236714E10 | +| test.c:604:24:604:25 | ip | 6.9571236714E10 | +| test.c:604:24:604:29 | ... + ... | 6.9571236714E10 | | test.c:604:29:604:29 | 1 | 1.0 | | test.c:604:29:604:29 | (unsigned int)... | 1.0 | | test.c:604:34:604:35 | 17 | 1.0 | | test.c:604:34:604:35 | (unsigned int)... | 1.0 | | test.c:605:15:605:16 | 14 | 1.0 | | test.c:605:15:605:16 | (unsigned int)... | 1.0 | -| test.c:605:15:605:21 | ... * ... | 3.2923832832E12 | -| test.c:605:20:605:21 | ip | 3.2923832832E12 | -| test.c:606:15:606:22 | (...) | 3.2923832832E12 | -| test.c:606:15:606:27 | ... * ... | 3.2923832832E12 | -| test.c:606:16:606:17 | ip | 3.2923832832E12 | -| test.c:606:16:606:21 | ... + ... | 3.2923832832E12 | +| test.c:605:15:605:21 | ... * ... | 6.9571236714E10 | +| test.c:605:20:605:21 | ip | 6.9571236714E10 | +| test.c:606:15:606:22 | (...) | 6.9571236714E10 | +| test.c:606:15:606:27 | ... * ... | 6.9571236714E10 | +| test.c:606:16:606:17 | ip | 6.9571236714E10 | +| test.c:606:16:606:21 | ... + ... | 6.9571236714E10 | | test.c:606:21:606:21 | 1 | 1.0 | | test.c:606:21:606:21 | (unsigned int)... | 1.0 | | test.c:606:26:606:27 | 14 | 1.0 | | test.c:606:26:606:27 | (unsigned int)... | 1.0 | -| test.c:607:10:607:23 | special_number | 1.0736981431797959E233 | +| test.c:607:10:607:23 | special_number | 1.297918419127476E201 | | test.c:614:10:614:11 | 0 | 1.0 | | test.c:615:7:615:8 | c1 | 1.0 | | test.c:615:13:615:13 | x | 1.0 | @@ -3857,27 +3857,27 @@ | test.c:620:19:620:19 | x | 32.0 | | test.c:620:19:620:32 | ... += ... | 32.0 | | test.c:620:24:620:32 | 938457398 | 1.0 | -| test.c:621:7:621:8 | c1 | 4.0 | +| test.c:621:7:621:8 | c1 | 3.0 | | test.c:621:7:621:14 | ... && ... | 1.0 | | test.c:621:13:621:14 | c3 | 2.0 | | test.c:621:19:621:19 | x | 64.0 | | test.c:621:19:621:31 | ... += ... | 64.0 | | test.c:621:24:621:31 | 73895648 | 1.0 | -| test.c:622:7:622:8 | c1 | 8.0 | +| test.c:622:7:622:8 | c1 | 4.0 | | test.c:622:7:622:14 | ... && ... | 1.0 | | test.c:622:13:622:14 | c4 | 2.0 | | test.c:622:19:622:19 | x | 128.0 | | test.c:622:19:622:31 | ... += ... | 128.0 | | test.c:622:24:622:31 | 12345432 | 1.0 | -| test.c:623:7:623:8 | c1 | 16.0 | +| test.c:623:7:623:8 | c1 | 5.0 | | test.c:623:7:623:14 | ... && ... | 1.0 | | test.c:623:13:623:14 | c5 | 2.0 | | test.c:623:19:623:19 | x | 256.0 | | test.c:623:19:623:28 | ... += ... | 256.0 | | test.c:623:24:623:28 | 38847 | 1.0 | -| test.c:624:7:624:8 | c2 | 6.0 | +| test.c:624:7:624:8 | c2 | 5.0 | | test.c:624:7:624:14 | ... && ... | 1.0 | -| test.c:624:13:624:14 | c3 | 6.0 | +| test.c:624:13:624:14 | c3 | 5.0 | | test.c:624:19:624:19 | x | 512.0 | | test.c:624:19:624:26 | ... += ... | 512.0 | | test.c:624:24:624:26 | 234 | 1.0 | @@ -4018,27 +4018,27 @@ | test.c:678:7:678:23 | ... && ... | 1.0 | | test.c:678:7:678:34 | ... && ... | 1.0 | | test.c:678:7:678:45 | ... && ... | 1.0 | -| test.c:678:12:678:12 | a | 4.0 | -| test.c:678:17:678:17 | a | 4.0 | +| test.c:678:12:678:12 | a | 3.0 | +| test.c:678:17:678:17 | a | 3.0 | | test.c:678:17:678:23 | ... <= ... | 1.0 | | test.c:678:22:678:23 | 11 | 1.0 | | test.c:678:22:678:23 | (unsigned int)... | 1.0 | | test.c:678:28:678:29 | 13 | 1.0 | | test.c:678:28:678:29 | (unsigned int)... | 1.0 | | test.c:678:28:678:34 | ... <= ... | 1.0 | -| test.c:678:34:678:34 | b | 9.0 | -| test.c:678:39:678:39 | b | 9.0 | +| test.c:678:34:678:34 | b | 7.0 | +| test.c:678:39:678:39 | b | 7.0 | | test.c:678:39:678:45 | ... <= ... | 1.0 | | test.c:678:44:678:45 | 23 | 1.0 | | test.c:678:44:678:45 | (unsigned int)... | 1.0 | -| test.c:679:13:679:13 | a | 4.0 | -| test.c:679:13:679:15 | (int)... | 36.0 | -| test.c:679:13:679:15 | ... * ... | 36.0 | -| test.c:679:15:679:15 | b | 9.0 | +| test.c:679:13:679:13 | a | 3.0 | +| test.c:679:13:679:15 | (int)... | 21.0 | +| test.c:679:13:679:15 | ... * ... | 21.0 | +| test.c:679:15:679:15 | b | 7.0 | | test.c:680:5:680:9 | total | 14.0 | -| test.c:680:5:680:14 | ... += ... | 504.0 | -| test.c:680:14:680:14 | r | 36.0 | -| test.c:683:10:683:14 | total | 518.0 | +| test.c:680:5:680:14 | ... += ... | 294.0 | +| test.c:680:14:680:14 | r | 21.0 | +| test.c:683:10:683:14 | total | 308.0 | | test.c:687:14:687:15 | 0 | 1.0 | | test.c:689:7:689:7 | 5 | 1.0 | | test.c:689:7:689:7 | (unsigned int)... | 1.0 | @@ -4078,20 +4078,20 @@ | test.c:697:7:697:8 | (unsigned int)... | 1.0 | | test.c:697:7:697:13 | ... <= ... | 1.0 | | test.c:697:7:697:24 | ... && ... | 1.0 | -| test.c:697:13:697:13 | b | 4.0 | -| test.c:697:18:697:18 | b | 4.0 | +| test.c:697:13:697:13 | b | 3.0 | +| test.c:697:18:697:18 | b | 3.0 | | test.c:697:18:697:24 | ... <= ... | 1.0 | | test.c:697:23:697:24 | 23 | 1.0 | | test.c:697:23:697:24 | (unsigned int)... | 1.0 | | test.c:698:13:698:14 | 11 | 1.0 | | test.c:698:13:698:14 | (unsigned int)... | 1.0 | -| test.c:698:13:698:16 | (int)... | 4.0 | -| test.c:698:13:698:16 | ... * ... | 4.0 | -| test.c:698:16:698:16 | b | 4.0 | +| test.c:698:13:698:16 | (int)... | 3.0 | +| test.c:698:13:698:16 | ... * ... | 3.0 | +| test.c:698:16:698:16 | b | 3.0 | | test.c:699:5:699:9 | total | 6.0 | -| test.c:699:5:699:14 | ... += ... | 24.0 | -| test.c:699:14:699:14 | r | 4.0 | -| test.c:702:10:702:14 | total | 30.0 | +| test.c:699:5:699:14 | ... += ... | 18.0 | +| test.c:699:14:699:14 | r | 3.0 | +| test.c:702:10:702:14 | total | 24.0 | | test.c:707:3:707:3 | x | 1.0 | | test.c:707:3:707:22 | ... = ... | 1.0 | | test.c:707:7:707:7 | y | 1.0 | @@ -4307,36 +4307,36 @@ | test.c:833:23:833:23 | 0 | 1.0 | | test.c:836:9:836:9 | (int)... | 2.0 | | test.c:836:9:836:9 | n | 2.0 | -| test.c:839:7:839:7 | (int)... | 4.0 | -| test.c:839:7:839:7 | n | 4.0 | +| test.c:839:7:839:7 | (int)... | 3.0 | +| test.c:839:7:839:7 | n | 3.0 | | test.c:839:7:839:17 | ... != ... | 1.0 | | test.c:839:7:839:32 | ... && ... | 1.0 | | test.c:839:12:839:17 | - ... | 1.0 | | test.c:839:13:839:17 | 32768 | 1.0 | -| test.c:839:22:839:22 | (int)... | 4.0 | -| test.c:839:22:839:22 | n | 4.0 | +| test.c:839:22:839:22 | (int)... | 3.0 | +| test.c:839:22:839:22 | n | 3.0 | | test.c:839:22:839:32 | ... != ... | 1.0 | | test.c:839:27:839:32 | - ... | 1.0 | | test.c:839:28:839:32 | 32767 | 1.0 | -| test.c:840:9:840:9 | (int)... | 4.0 | -| test.c:840:9:840:9 | n | 4.0 | -| test.c:843:7:843:7 | (int)... | 8.0 | -| test.c:843:7:843:7 | n | 8.0 | +| test.c:840:9:840:9 | (int)... | 3.0 | +| test.c:840:9:840:9 | n | 3.0 | +| test.c:843:7:843:7 | (int)... | 4.0 | +| test.c:843:7:843:7 | n | 4.0 | | test.c:843:7:843:12 | ... >= ... | 1.0 | | test.c:843:12:843:12 | 0 | 1.0 | -| test.c:844:5:844:5 | n | 8.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 64.0 | -| test.c:844:10:844:10 | (int)... | 8.0 | -| test.c:844:10:844:10 | n | 8.0 | -| test.c:844:14:844:14 | (int)... | 8.0 | -| test.c:844:14:844:14 | n | 8.0 | +| test.c:844:5:844:5 | n | 4.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 16.0 | +| test.c:844:10:844:10 | (int)... | 4.0 | +| test.c:844:10:844:10 | n | 4.0 | +| test.c:844:14:844:14 | (int)... | 4.0 | +| test.c:844:14:844:14 | n | 4.0 | | test.c:845:5:845:6 | ! ... | 1.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 256.0 | -| test.c:845:6:845:6 | n | 16.0 | -| test.c:845:10:845:10 | (int)... | 16.0 | -| test.c:845:10:845:10 | n | 16.0 | -| test.c:845:14:845:14 | (int)... | 16.0 | -| test.c:845:14:845:14 | n | 16.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 64.0 | +| test.c:845:6:845:6 | n | 8.0 | +| test.c:845:10:845:10 | (int)... | 8.0 | +| test.c:845:10:845:10 | n | 8.0 | +| test.c:845:14:845:14 | (int)... | 8.0 | +| test.c:845:14:845:14 | n | 8.0 | | test.c:856:7:856:8 | (unsigned long)... | 1.0 | | test.c:856:7:856:8 | ss | 1.0 | | test.c:856:7:856:22 | ... < ... | 1.0 | @@ -4364,21 +4364,21 @@ | test.c:868:21:868:21 | 1 | 1.0 | | test.c:869:9:869:10 | (int)... | 2.0 | | test.c:869:9:869:10 | us | 2.0 | -| test.c:872:7:872:8 | (unsigned long)... | 4.0 | -| test.c:872:7:872:8 | ss | 4.0 | +| test.c:872:7:872:8 | (unsigned long)... | 3.0 | +| test.c:872:7:872:8 | ss | 3.0 | | test.c:872:7:872:23 | ... >= ... | 1.0 | | test.c:872:13:872:23 | sizeof(int) | 1.0 | -| test.c:873:9:873:10 | (int)... | 4.0 | -| test.c:873:9:873:10 | ss | 4.0 | -| test.c:876:7:876:8 | (int)... | 8.0 | -| test.c:876:7:876:8 | ss | 8.0 | -| test.c:876:7:876:12 | (unsigned long)... | 8.0 | -| test.c:876:7:876:12 | ... + ... | 8.0 | +| test.c:873:9:873:10 | (int)... | 3.0 | +| test.c:873:9:873:10 | ss | 3.0 | +| test.c:876:7:876:8 | (int)... | 4.0 | +| test.c:876:7:876:8 | ss | 4.0 | +| test.c:876:7:876:12 | (unsigned long)... | 4.0 | +| test.c:876:7:876:12 | ... + ... | 4.0 | | test.c:876:7:876:26 | ... < ... | 1.0 | | test.c:876:12:876:12 | 1 | 1.0 | | test.c:876:16:876:26 | sizeof(int) | 1.0 | -| test.c:877:9:877:10 | (int)... | 8.0 | -| test.c:877:9:877:10 | ss | 8.0 | +| test.c:877:9:877:10 | (int)... | 4.0 | +| test.c:877:9:877:10 | ss | 4.0 | | test.c:883:8:883:8 | s | 1.0 | | test.c:883:8:883:12 | ... = ... | 1.0 | | test.c:883:12:883:12 | 0 | 1.0 | @@ -4509,25 +4509,25 @@ | test.cpp:58:5:58:16 | ... += ... | 144.0 | | test.cpp:58:10:58:16 | (int)... | 16.0 | | test.cpp:58:15:58:16 | xb | 16.0 | -| test.cpp:61:7:61:7 | x | 32.0 | +| test.cpp:61:7:61:7 | x | 17.0 | | test.cpp:61:7:61:11 | ... < ... | 1.0 | | test.cpp:61:11:61:11 | 0 | 1.0 | | test.cpp:62:15:62:21 | (bool)... | 1.0 | -| test.cpp:62:21:62:21 | x | 32.0 | +| test.cpp:62:21:62:21 | x | 17.0 | | test.cpp:63:5:63:5 | t | 153.0 | -| test.cpp:63:5:63:16 | ... += ... | 4896.0 | -| test.cpp:63:10:63:16 | (int)... | 32.0 | -| test.cpp:63:15:63:16 | xb | 32.0 | +| test.cpp:63:5:63:16 | ... += ... | 2601.0 | +| test.cpp:63:10:63:16 | (int)... | 17.0 | +| test.cpp:63:15:63:16 | xb | 17.0 | | test.cpp:66:13:66:19 | (bool)... | 1.0 | -| test.cpp:66:19:66:19 | x | 64.0 | -| test.cpp:67:3:67:3 | t | 5049.0 | -| test.cpp:67:3:67:14 | ... += ... | 323136.0 | -| test.cpp:67:8:67:14 | (int)... | 64.0 | -| test.cpp:67:13:67:14 | xb | 64.0 | +| test.cpp:66:19:66:19 | x | 18.0 | +| test.cpp:67:3:67:3 | t | 2754.0 | +| test.cpp:67:3:67:14 | ... += ... | 49572.0 | +| test.cpp:67:8:67:14 | (int)... | 18.0 | +| test.cpp:67:13:67:14 | xb | 18.0 | | test.cpp:69:10:69:10 | b | 1.0 | | test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | | test.cpp:69:15:69:21 | (bool)... | 1.0 | -| test.cpp:69:21:69:21 | t | 323136.0 | +| test.cpp:69:21:69:21 | t | 49572.0 | | test.cpp:74:30:74:30 | (int)... | 1.0 | | test.cpp:74:30:74:30 | c | 1.0 | | test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | From 9502d83f2c2bc5d9491d3e13b731c74da7f3e7b7 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 16 Oct 2025 12:59:10 +0200 Subject: [PATCH 172/965] C++: Add debug predicates --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index b6f5553cf08..5f9fb5b5a0c 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -2168,3 +2168,56 @@ module SimpleRangeAnalysisInternal { /** Gets the estimate of the number of bounds for `e`. */ float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } } + +/** Provides predicates for debugging the simple range analysis library. */ +private module Debug { + Locatable getRelevantLocatable() { + exists(string filepath, int startline | + result.getLocation().hasLocationInfo(filepath, startline, _, _, _) and + filepath.matches("%/test.c") and + startline = [621 .. 639] + ) + } + + float debugGetLowerBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getLowerBoundsImpl(e) + } + + float debugGetUpperBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getUpperBoundsImpl(e) + } + + /** + * Counts the number of lower bounds for a given expression. This predicate is + * useful for identifying performance issues in the range analysis. + */ + predicate countGetLowerBoundsImpl(Expr e, int n) { + e = getRelevantLocatable() and + n = strictcount(float lb | lb = getLowerBoundsImpl(e) | lb) + } + + float debugNrOfBounds(Expr e) { + e = getRelevantLocatable() and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Finds any expressions for which `nrOfBounds` is not functional. The result + * should be empty, so this predicate is useful to debug non-functional cases. + */ + int nonFunctionalNrOfBounds(Expr e) { + strictcount(BoundsEstimate::nrOfBoundsExpr(e)) > 1 and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Holds if `e` is an expression that has a lower bound, but where + * `nrOfBounds` does not compute an estimate. + */ + predicate missingNrOfBounds(Expr e, float n) { + n = lowerBound(e) and + not exists(BoundsEstimate::nrOfBoundsExpr(e)) + } +} From 68d4240c26de626115efea1b0353f5d0f19a1d60 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 16 Oct 2025 15:56:11 +0200 Subject: [PATCH 173/965] C++: Add change note --- .../lib/change-notes/2025-10-16-range-analysis-performance.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md new file mode 100644 index 00000000000..f24ab4b87fe --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file From 5d95fad467727cb9d3d9c40b6e182d44f1a18b1a Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:24:17 +0100 Subject: [PATCH 174/965] Rust: Changes suggested by Copilot (with effect on tests). --- .../library-tests/dataflow/sources/TaintSources.expected | 2 +- rust/ql/test/library-tests/dataflow/sources/test.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index 10f71f0d166..dae82040c93 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -100,7 +100,7 @@ | test.rs:942:22:942:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:951:26:951:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:957:22:957:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:989:47:989:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:989:53:989:57 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:992:28:992:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:995:28:995:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:998:28:998:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 51f45ab6405..43a54ce6d1e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -986,7 +986,7 @@ mod test_mysql_async { let mut pool = mysql_async::Pool::new(""); let mut conn = pool.get_conn().await?; - let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] + let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] let mut row = &mut rows[0]; let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] @@ -1002,9 +1002,9 @@ mod test_mysql_async { sink(v4); // $ hasTaintFlow=0 let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] - if let mysql::Value::Int(v) = value5 { + if let mysql_async::Value::Int(v) = value5 { sink(v); // $ MISSING: hasTaintFlow=0 - } else if let mysql::Value::Bytes(v) = value5 { + } else if let mysql_async::Value::Bytes(v) = value5 { sink(v); // $ MISSING: hasTaintFlow=0 } From 4860034d4122a6efc09b8dfd0aa2f3e43e4bdf1d Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 10:40:53 -0400 Subject: [PATCH 175/965] Crypto: Weak Hash test cases update and expected file. --- .../WeakOrUnknownHash/WeakHash.expected | 9 +++++++ .../WeakOrUnknownHash/WeakHashing.java | 25 +++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected new file mode 100644 index 00000000000..612cc1f6285 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected @@ -0,0 +1,9 @@ +#select +| WeakHashing.java:15:55:15:83 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | +| WeakHashing.java:18:56:18:95 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | +| WeakHashing.java:21:86:21:90 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | +| WeakHashing.java:24:56:24:62 | HashAlgorithm | Use of unapproved hash algorithm or API: SHA1. | +| WeakHashing.java:34:56:34:96 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | +testFailures +| WeakHashing.java:27:125:27:133 | // $Alert | Missing result: Alert | +| WeakHashing.java:40:111:40:119 | // $Alert | Missing result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java index 9fbe12e8b87..9f207274c52 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java @@ -12,22 +12,32 @@ public class WeakHashing { props.load(new FileInputStream("example.properties")); // BAD: Using a weak hashing algorithm even with a secure default - MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); + MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); // $Alert[java/quantum/weak-hash] // BAD: Using a weak hashing algorithm even with a secure default - MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); + MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); // $Alert[java/quantum/weak-hash] // BAD: Using a strong hashing algorithm but with a weak default - MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); + MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); // $Alert[java/quantum/weak-hash] + + // BAD: Using a weak hash + MessageDigest bad4 = MessageDigest.getInstance("SHA-1"); // $Alert[java/quantum/weak-hash] // BAD: Property does not exist and default (used value) is unknown - MessageDigest bad4 = MessageDigest.getInstance(props.getProperty("non-existent_property", "non-existent_default")); + MessageDigest bad5 = MessageDigest.getInstance(props.getProperty("non-existent_property", "non-existent_default")); // $Alert[java/quantum/unknown-hash] + + java.util.Properties props2 = new java.util.Properties(); + + props2.load(new FileInputStream("unobserved-file.properties")); + + // BAD: "hashalg1" is not visible in the file loaded for props2 + MessageDigest bad6 = MessageDigest.getInstance(props2.getProperty("hashAlg1", "SHA-256")); // $Alert[java/quantum/weak-hash] // GOOD: Using a strong hashing algorithm MessageDigest ok = MessageDigest.getInstance(props.getProperty("hashAlg2")); // BAD?: Property does not exist (considered unknown) and but default is secure - MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("non-existent-property", "SHA-256")); + MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("non-existent-property", "SHA-256")); // $Alert[java/quantum/unknown-hash] // GOOD: Using a strong hashing algorithm MessageDigest ok3 = MessageDigest.getInstance("SHA3-512"); @@ -35,10 +45,5 @@ public class WeakHashing { // GOOD: Using a strong hashing algorithm MessageDigest ok4 = MessageDigest.getInstance("SHA384"); - props.load(new FileInputStream("unobserved-file.properties")); - - // BAD: "hashalg1" is not visible since the file isn't known, this is an 'unknown' hash - // False positive/negative - MessageDigest bad5 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); } } From d2598d4f5d221506c6d99d4db20dd0e8d576d1ab Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 10:56:08 -0400 Subject: [PATCH 176/965] Crypto: Updating weak hash tests --- .../quantum/examples/WeakOrUnknownHash/WeakHash.expected | 5 ----- .../quantum/examples/WeakOrUnknownHash/WeakHashing.java | 5 +++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected index 612cc1f6285..77eadf06cd3 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHash.expected @@ -1,9 +1,4 @@ -#select | WeakHashing.java:15:55:15:83 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | | WeakHashing.java:18:56:18:95 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | | WeakHashing.java:21:86:21:90 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | | WeakHashing.java:24:56:24:62 | HashAlgorithm | Use of unapproved hash algorithm or API: SHA1. | -| WeakHashing.java:34:56:34:96 | HashAlgorithm | Use of unapproved hash algorithm or API: MD5. | -testFailures -| WeakHashing.java:27:125:27:133 | // $Alert | Missing result: Alert | -| WeakHashing.java:40:111:40:119 | // $Alert | Missing result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java index 9f207274c52..6435004931a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java @@ -30,8 +30,9 @@ public class WeakHashing { props2.load(new FileInputStream("unobserved-file.properties")); - // BAD: "hashalg1" is not visible in the file loaded for props2 - MessageDigest bad6 = MessageDigest.getInstance(props2.getProperty("hashAlg1", "SHA-256")); // $Alert[java/quantum/weak-hash] + // BAD: "hashAlg2" is not visible in the file loaded for props2, should be an unknown + // FALSE NEGATIVE for unknown hash + MessageDigest bad6 = MessageDigest.getInstance(props2.getProperty("hashAlg2", "SHA-256")); // $Alert[java/quantum/unknown-hash] // GOOD: Using a strong hashing algorithm MessageDigest ok = MessageDigest.getInstance(props.getProperty("hashAlg2")); From 3c2635767e2211f7d8efbf9723605006d49dde36 Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 16 Oct 2025 15:00:43 +0000 Subject: [PATCH 177/965] Misc: Add script for patching the query history Adds `patch_query_history.py` in the `misc/scripts` directory. Its function is to extend the existing VSCode query history with a new entry whose JSON evaluator log summary points at a log that was created outside of VSCode. This enables the use of e.g. the Performance Comparison View on runs that were not initiated from within VSCode. --- misc/scripts/patch_query_history.py | 148 ++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 misc/scripts/patch_query_history.py diff --git a/misc/scripts/patch_query_history.py b/misc/scripts/patch_query_history.py new file mode 100644 index 00000000000..e30d3b003d0 --- /dev/null +++ b/misc/scripts/patch_query_history.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 +"""Duplicate the last CodeQL query history entry, pointing it at a given evaluator log. + +Behavior: +1. Locate the most relevant ``workspace-query-history.json`` (supports local & remote VS Code). +2. Duplicate the final object in ``queries``. +3. Generate a fresh random ID and a new timestamp. +4. Set ``jsonEvalLogSummaryLocation`` to the provided summary file path. +5. Set ``initialInfo.userSpecifiedLabel`` to ``Evaluator log at /`` (last 2 path parts). +6. Write back atomically. + +Usage: python3 misc/scripts/patch_query_history.py /path/to/evaluator-log.summary.jsonl +""" +from __future__ import annotations +import argparse +import json, os, random, string, tempfile, sys +from pathlib import Path +from typing import List +from datetime import datetime, timezone +import copy + + +# Extension folder segment for CodeQL extension query history +EXT_SEGMENT = "GitHub.vscode-codeql" +HISTORY_FILENAME = "workspace-query-history.json" +WORKSPACE_JSON = "workspace.json" + +def candidate_user_data_dirs() -> List[Path]: + """Return plausible VS Code user data dirs (ordered, deduped).""" + home = Path.home() + env = os.environ + override = env.get("VSCODE_USER_DATA_DIR") + bases: List[Path] = [] + if override: + bases.append(Path(override).expanduser()) + if os.name == "nt": + appdata = env.get("APPDATA") + if appdata: + bases.append(Path(appdata) / "Code" / "User") + elif sys.platform == "darwin": # macOS inline check + bases.append(home / "Library" / "Application Support" / "Code" / "User") + else: + bases.append(home / ".config" / "Code" / "User") + # Remote / server variants + bases.extend([ + home / ".vscode-remote" / "data" / "User", + home / ".vscode-server" / "data" / "User", + home / ".vscode" / "data" / "User", + ]) + seen: set[Path] = set() + ordered: List[Path] = [] + for b in bases: + if b not in seen: + seen.add(b) + ordered.append(b) + return ordered + + +def find_history_files() -> List[Path]: + """Return all candidate history files sorted by descending modification time. + """ + candidates: List[Path] = [] + for base in candidate_user_data_dirs(): + storage_root = base / "workspaceStorage" + if not storage_root.is_dir(): + continue + for ws_entry in storage_root.iterdir(): + if not ws_entry.is_dir(): + continue + history_file = ws_entry / EXT_SEGMENT / HISTORY_FILENAME + if history_file.is_file(): + candidates.append(history_file) + candidates.sort(key=lambda p: p.stat().st_mtime, reverse=True) + return candidates + +def _generate_new_id() -> str: + """Return a new random id (24 chars from allowed set, prefixed with 'evaluator-log-' for stability).""" + alphabet = string.ascii_letters + string.digits + "_-" + return "evaluator-log-" + "".join(random.choice(alphabet) for _ in range(23)) + +def atomic_write_json(target: Path, obj) -> None: + fd, tmp = tempfile.mkstemp(dir=str(target.parent), prefix="history.", suffix=".json") + try: + with os.fdopen(fd, "w", encoding="utf-8") as out: + json.dump(obj, out, ensure_ascii=False, indent=2) + out.write("\n") + os.replace(tmp, target) + finally: + if os.path.exists(tmp): + try: + os.remove(tmp) + except OSError: + pass + +def _duplicate_last_entry(path: Path, summary_path: Path) -> dict: + try: + data = json.loads(path.read_text(encoding="utf-8")) + except json.JSONDecodeError as e: + raise SystemExit(f"History file JSON is corrupt: {e}") + if not isinstance(data, dict) or not isinstance(data.get("queries"), list): + raise SystemExit("Unexpected history file structure: missing 'queries' list") + queries = data["queries"] + if not queries: + raise SystemExit("History file contains no queries to duplicate. Please run a query in VSCode and try again.") + last = queries[-1] + if not isinstance(last, dict): + raise SystemExit("Last query entry malformed") + payload = copy.deepcopy(last) + initial = payload.setdefault("initialInfo", {}) + if not isinstance(initial, dict): + initial = {} + payload["initialInfo"] = initial + new_id = _generate_new_id() + initial["id"] = new_id + initial["start"] = datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z") + payload["jsonEvalLogSummaryLocation"] = str(summary_path) + parts = list(summary_path.parts) + last_two = "/".join(parts[-2:]) if len(parts) >= 2 else parts[-1] + new_label = f"Evaluator log at {last_two}" + initial["userSpecifiedLabel"] = new_label + queries.append(payload) + atomic_write_json(path, data) + return {"new_id": new_id, "new_label": new_label, "count": len(queries)} + +def main() -> int: + parser = argparse.ArgumentParser(description="Duplicate last CodeQL query history entry, patching summary location and label.") + parser.add_argument("summary_path", type=Path, help="Path to evaluator-log.summary.jsonl file (required).") + args = parser.parse_args() + + summary_path: Path = args.summary_path + if not summary_path.is_file(): + raise SystemExit(f"Summary file does not exist: {summary_path}") + + candidates = find_history_files() + if not candidates: + raise SystemExit("No workspace-query-history.json files found.") + best = candidates[0] + + result = _duplicate_last_entry(best, summary_path) + + print(f"Patched history: {best}") + print(f"Evaluator log summary: {summary_path}") + print(f"New ID: {result['new_id']}") + print(f"Label: {result['new_label']}") + print(f"Total entries: {result['count']}") + +if __name__ == "__main__": + raise SystemExit(main()) From 79ccef3a5850528ea9c3348807b32547a6ded480 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 11:03:16 -0400 Subject: [PATCH 178/965] Crypto: Initial sketch for unknown hash, the model needs to recognize unknowns but where the algorithm category (e.g., hashing) is known. --- java/ql/src/experimental/quantum/Examples/UnknownHash.ql | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql index b9bb1905c11..5fd8e6fd506 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql @@ -12,5 +12,8 @@ import java import experimental.quantum.Language from Crypto::HashAlgorithmNode alg -where not exists(alg.getHashType()) -select alg, "Use of unknown hash algorithm or API." +where + not exists(alg.getHashType()) + or + alg.getHashType() = Crypto::OtherHashType() +select alg, "Use of unknown hash algorithm." From a64a24d25d0a00a6db8dc57a4ab636562ed8b354 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 11:03:49 -0400 Subject: [PATCH 179/965] Crypto: Comment in Language.qll --- java/ql/lib/experimental/quantum/Language.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 7eff427569d..3a33b763a6f 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -58,9 +58,9 @@ private class GenericUnreferencedParameterSource extends Crypto::GenericUnrefere exists(Parameter p | this = p and not exists(p.getAnArgument()) - // TODO: this is test code which causes regression in unit tests, but will - // find sources where ordinarily a source might be missing // or + // // TODO: this is test code which causes regression in unit tests, but will + // // find sources where ordinarily a source might be missing // // If all calls to a function occur in a test file, ignore those calls // // and consider the parameter to the function a potential source as well. // forall(Call testCall | testCall.getCallee() = p.getCallable() | From a9ae583e14c119c8e762b5e4380783f8b953c032 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 16 Oct 2025 16:50:13 +0200 Subject: [PATCH 180/965] Rust: introduce `File::hasSemantics` and `File::isSkippedByCompilation` --- .../2025-10-16-new-extracted-file-methods.md | 4 ++++ rust/ql/lib/codeql/files/FileSystem.qll | 19 +++++++++++++++++++ .../test/extractor-tests/File/File.expected | 15 +++++++++------ rust/ql/test/extractor-tests/File/File.ql | 14 +++++++++++--- .../extractor-tests/File/bad_cargo/.gitignore | 1 + .../extractor-tests/File/bad_cargo/Cargo.toml | 1 + .../File/bad_cargo/src/no_semantics.rs | 0 .../File/nested/not_compiled.rs | 0 8 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md create mode 100644 rust/ql/test/extractor-tests/File/bad_cargo/.gitignore create mode 100644 rust/ql/test/extractor-tests/File/bad_cargo/Cargo.toml create mode 100644 rust/ql/test/extractor-tests/File/bad_cargo/src/no_semantics.rs create mode 100644 rust/ql/test/extractor-tests/File/nested/not_compiled.rs diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md new file mode 100644 index 00000000000..63fbbe38899 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/codeql/files/FileSystem.qll b/rust/ql/lib/codeql/files/FileSystem.qll index 5a60d28418e..9ad78cb465b 100644 --- a/rust/ql/lib/codeql/files/FileSystem.qll +++ b/rust/ql/lib/codeql/files/FileSystem.qll @@ -71,6 +71,25 @@ class File extends Container, Impl::File { */ class ExtractedFile extends File { ExtractedFile() { this.fromSource() } + + private Diagnostic getNoSemanticsDiagnostic() { + result.getTag() = "semantics" and result.getLocation().getFile() = this + } + + /** + * Holds if we have semantical information about this file, which means + * we should be able to + * * expand any macros + * * skip any blocks that are conditionally compiled out + */ + predicate hasSemantics() { not exists(Diagnostic d | d = this.getNoSemanticsDiagnostic()) } + + /** + * Holds if we know this file was skipped by conditional compilation. + * This is not the same as `not this.hasSemantics()`, as a file + * might not have semantics because of some error. + */ + predicate isSkippedByCompilation() { this.getNoSemanticsDiagnostic().getSeverityText() = "Info" } } /** diff --git a/rust/ql/test/extractor-tests/File/File.expected b/rust/ql/test/extractor-tests/File/File.expected index ad701669ab2..ebfcdae1967 100644 --- a/rust/ql/test/extractor-tests/File/File.expected +++ b/rust/ql/test/extractor-tests/File/File.expected @@ -1,6 +1,9 @@ -| Cargo.toml:0:0:0:0 | Cargo.toml | fromSource: no | -| a_file.rs:0:0:0:0 | a_file.rs | fromSource: yes | -| another_file.rs:0:0:0:0 | another_file.rs | fromSource: yes | -| lib.rs:0:0:0:0 | lib.rs | fromSource: yes | -| nested.rs:0:0:0:0 | nested.rs | fromSource: yes | -| nested/file.rs:0:0:0:0 | nested/file.rs | fromSource: yes | +| Cargo.toml:0:0:0:0 | Cargo.toml | fromSource: no | hasSemantics: no | isSkippedByCompilation: no | +| a_file.rs:0:0:0:0 | a_file.rs | fromSource: yes | hasSemantics: yes | isSkippedByCompilation: no | +| another_file.rs:0:0:0:0 | another_file.rs | fromSource: yes | hasSemantics: yes | isSkippedByCompilation: no | +| bad_cargo/Cargo.toml:0:0:0:0 | bad_cargo/Cargo.toml | fromSource: no | hasSemantics: no | isSkippedByCompilation: no | +| bad_cargo/src/no_semantics.rs:0:0:0:0 | bad_cargo/src/no_semantics.rs | fromSource: yes | hasSemantics: no | isSkippedByCompilation: no | +| lib.rs:0:0:0:0 | lib.rs | fromSource: yes | hasSemantics: yes | isSkippedByCompilation: no | +| nested.rs:0:0:0:0 | nested.rs | fromSource: yes | hasSemantics: yes | isSkippedByCompilation: no | +| nested/file.rs:0:0:0:0 | nested/file.rs | fromSource: yes | hasSemantics: yes | isSkippedByCompilation: no | +| nested/not_compiled.rs:0:0:0:0 | nested/not_compiled.rs | fromSource: yes | hasSemantics: no | isSkippedByCompilation: yes | diff --git a/rust/ql/test/extractor-tests/File/File.ql b/rust/ql/test/extractor-tests/File/File.ql index 316099193d1..2d21f12bc29 100644 --- a/rust/ql/test/extractor-tests/File/File.ql +++ b/rust/ql/test/extractor-tests/File/File.ql @@ -1,7 +1,15 @@ import rust -from File f, string fromSource +from File f, string fromSource, string hasSemantics, string isSkippedByCompilation where exists(f.getRelativePath()) and - if f.fromSource() then fromSource = "fromSource: yes" else fromSource = "fromSource: no" -select f, fromSource + (if f.fromSource() then fromSource = "fromSource: yes" else fromSource = "fromSource: no") and + ( + if f.(ExtractedFile).hasSemantics() + then hasSemantics = "hasSemantics: yes" + else hasSemantics = "hasSemantics: no" + ) and + if f.(ExtractedFile).isSkippedByCompilation() + then isSkippedByCompilation = "isSkippedByCompilation: yes" + else isSkippedByCompilation = "isSkippedByCompilation: no" +select f, fromSource, hasSemantics, isSkippedByCompilation diff --git a/rust/ql/test/extractor-tests/File/bad_cargo/.gitignore b/rust/ql/test/extractor-tests/File/bad_cargo/.gitignore new file mode 100644 index 00000000000..eac412e1a6d --- /dev/null +++ b/rust/ql/test/extractor-tests/File/bad_cargo/.gitignore @@ -0,0 +1 @@ +!/Cargo.toml diff --git a/rust/ql/test/extractor-tests/File/bad_cargo/Cargo.toml b/rust/ql/test/extractor-tests/File/bad_cargo/Cargo.toml new file mode 100644 index 00000000000..688dd9e29ac --- /dev/null +++ b/rust/ql/test/extractor-tests/File/bad_cargo/Cargo.toml @@ -0,0 +1 @@ +wrong \ No newline at end of file diff --git a/rust/ql/test/extractor-tests/File/bad_cargo/src/no_semantics.rs b/rust/ql/test/extractor-tests/File/bad_cargo/src/no_semantics.rs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/rust/ql/test/extractor-tests/File/nested/not_compiled.rs b/rust/ql/test/extractor-tests/File/nested/not_compiled.rs new file mode 100644 index 00000000000..e69de29bb2d From 3f36b09b3c706587223fef88c3e420f064f47759 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 11:18:36 -0400 Subject: [PATCH 181/965] Crypto: Rename tests for weak asymmetric key gen size. --- ...etricKeyGenSize.expected => WeakAsymmetricKeyGenSize.expected} | 0 ...nAsymmetricKeyGenSize.qlref => WeakAsymmetricKeyGenSize.qlref} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/{WeakOrUnknownAsymmetricKeyGenSize.expected => WeakAsymmetricKeyGenSize.expected} (100%) rename java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/{WeakOrUnknownAsymmetricKeyGenSize.qlref => WeakAsymmetricKeyGenSize.qlref} (100%) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.expected similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.expected rename to java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.expected diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref similarity index 100% rename from java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakOrUnknownAsymmetricKeyGenSize.qlref rename to java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref From 4aef1ba9d15a892ecf83c862d6731aba03311634 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 16 Oct 2025 17:20:41 +0200 Subject: [PATCH 182/965] Rust: clean up --- rust/ql/lib/codeql/files/FileSystem.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/files/FileSystem.qll b/rust/ql/lib/codeql/files/FileSystem.qll index 9ad78cb465b..854de53652f 100644 --- a/rust/ql/lib/codeql/files/FileSystem.qll +++ b/rust/ql/lib/codeql/files/FileSystem.qll @@ -82,7 +82,7 @@ class ExtractedFile extends File { * * expand any macros * * skip any blocks that are conditionally compiled out */ - predicate hasSemantics() { not exists(Diagnostic d | d = this.getNoSemanticsDiagnostic()) } + predicate hasSemantics() { not exists(this.getNoSemanticsDiagnostic()) } /** * Holds if we know this file was skipped by conditional compilation. From b9b0037e077f320666218fdf0fc7059ca2c228e4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 14:07:45 -0400 Subject: [PATCH 183/965] Crypto: Comment todo for observed missing modeled case. Tests for weak and unknown KDF iteration count. --- java/ql/lib/experimental/quantum/JCA.qll | 2 + .../WeakOrUnknownKDFIterationCount/Test.java | 63 +++++++++++++++++++ .../UnknownKDFIterationCount.expected | 5 ++ .../UnknownKDFIterationCount.qlref | 4 ++ .../WeakKDFIterationCount.expected | 16 +++++ .../WeakKDFIterationCount.qlref | 4 ++ 6 files changed, 94 insertions(+) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.qlref diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index db40b40e0e5..b74b20d9836 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -697,6 +697,8 @@ module JCAModel { abstract DataFlow::Node getInputNode(); } + // TODO: for all parametert specs, I think they can be set through the constructor + // and through setter methods class IvParameterSpecInstance extends NonceParameterInstantiation { IvParameterSpecInstance() { super.getConstructedType().hasQualifiedName("javax.crypto.spec", "IvParameterSpec") diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java new file mode 100644 index 00000000000..c5d55a941d2 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java @@ -0,0 +1,63 @@ +import java.io.FileInputStream; +import java.io.IOException; +import java.security.MessageDigest; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.Base64; +import java.util.Properties; +import javax.crypto.Mac; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; + +public class Test { + + public static byte[] generateSalt(int length) { + SecureRandom random = new SecureRandom(); + byte[] salt = new byte[length]; + random.nextBytes(salt); + return salt; + } + + /** + * PBKDF2 derivation with a very low iteration count. + * + * SAST/CBOM: - Parent: PBKDF2. - Iteration count is only 10, which is far + * below acceptable security standards. - Flagged as insecure. + */ + public void pbkdf2LowIteration(String password) throws Exception { + byte[] salt = generateSalt(16); + int iterationCount = 10; // $Source + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/weak-kdf-iteration-count] + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + byte[] key = factory.generateSecret(spec).getEncoded(); + } + + /** + * PBKDF2 derivation with a very low iteration count. + * + * SAST/CBOM: - Parent: PBKDF2. - Iteration count is only 10, which is far + * below acceptable security standards. - Flagged as insecure. + */ + public void pbkdf2LowIteration(String password, int iterationCount) throws Exception { // $Source + byte[] salt = generateSalt(16); + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/unknown-kdf-iteration-count] + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + byte[] key = factory.generateSecret(spec).getEncoded(); + } + + /** + * PBKDF2 derivation with a high iteration count. + * + * SAST/CBOM: - Parent: PBKDF2. - Uses 1,000,000 iterations; this is secure + * but may impact performance. + */ + public void pbkdf2HighIteration(String password) throws Exception { + byte[] salt = generateSalt(16); + int iterationCount = 1_000_000; + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + byte[] key = factory.generateSecret(spec).getEncoded(); + } +} \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected new file mode 100644 index 00000000000..5792287fae6 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected @@ -0,0 +1,5 @@ +#select +| Test.java:47:22:47:49 | KeyDerivation | Key derivation operation with unknown iteration: $@ | Test.java:43:53:43:70 | iterationCount | iterationCount | +testFailures +| Test.java:45:94:45:145 | // $Alert[java/quantum/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/unknown-kdf-iteration-count] | +| Test.java:47:22:47:49 | Key derivation operation with unknown iteration: $@ | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.qlref new file mode 100644 index 00000000000..a285aac54ad --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/UnknownKDFIterationCount.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected new file mode 100644 index 00000000000..5b93bccd0b2 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected @@ -0,0 +1,16 @@ +#select +| Test.java:32:72:32:85 | iterationCount | Test.java:31:30:31:31 | 10 : Number | Test.java:32:72:32:85 | iterationCount | Key derivation operation configures iteration count below 100k: $@ | Test.java:31:30:31:31 | 10 | 10 | +edges +| Test.java:31:30:31:31 | 10 : Number | Test.java:32:72:32:85 | iterationCount | provenance | | +| Test.java:43:53:43:70 | iterationCount : Number | Test.java:45:72:45:85 | iterationCount | provenance | | +| Test.java:58:30:58:38 | 1_000_000 : Number | Test.java:59:72:59:85 | iterationCount | provenance | | +nodes +| Test.java:31:30:31:31 | 10 : Number | semmle.label | 10 : Number | +| Test.java:32:72:32:85 | iterationCount | semmle.label | iterationCount | +| Test.java:43:53:43:70 | iterationCount : Number | semmle.label | iterationCount : Number | +| Test.java:45:72:45:85 | iterationCount | semmle.label | iterationCount | +| Test.java:58:30:58:38 | 1_000_000 : Number | semmle.label | 1_000_000 : Number | +| Test.java:59:72:59:85 | iterationCount | semmle.label | iterationCount | +subpaths +testFailures +| Test.java:43:92:43:102 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.qlref new file mode 100644 index 00000000000..1145083bf0d --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/WeakKDFIterationCount.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file From 700f34e53a3cec06821a63f2745f0dd23b8d0c5f Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 15:44:57 -0400 Subject: [PATCH 184/965] Crypto: Bad Mac use tests, and fix for BadMacOrderMacOnEncryptPlaintext (barriers were blocking flow through an encrypt to a subsequent mac on the same plaintext) --- .../BadMacOrderMacOnEncryptPlaintext.ql | 8 -- .../BadMacOrderDecryptToMac.expected | 0 .../BadMacUse/BadMacOrderDecryptToMac.qlref | 4 + .../BadMacOrderMacOnEncryptPlaintext.expected | 0 .../BadMacOrderMacOnEncryptPlaintext.qlref | 4 + .../quantum/examples/BadMacUse/BadMacUse.java | 87 +++++++++++++++++++ 6 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.qlref create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 3eef5daad59..50b8b1caeb2 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -28,14 +28,6 @@ module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { sink = any(Crypto::FlowAwareElement other).getInputNode() } - predicate isBarrierOut(DataFlow::Node node) { - node = any(Crypto::FlowAwareElement element).getInputNode() - } - - predicate isBarrierIn(DataFlow::Node node) { - node = any(Crypto::FlowAwareElement element).getOutputNode() - } - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { node1.(AdditionalFlowInputStep).getOutput() = node2 or diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.qlref b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.qlref new file mode 100644 index 00000000000..6ee58d93681 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.qlref b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.qlref new file mode 100644 index 00000000000..f094aa14a46 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java new file mode 100644 index 00000000000..86a080b6924 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -0,0 +1,87 @@ +import java.security.*; +import java.util.Arrays; +import java.util.Base64; +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.Mac; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; + + +class BadMacUse { + + private byte[] generateSalt(int length) { + byte[] salt = new byte[length]; + new SecureRandom().nextBytes(salt); + return salt; + } + + public void CipherThenMac(byte[] encryptionKeyBytes, byte[] macKeyBytes) throws Exception { + // Create keys directly from provided byte arrays + SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); + SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); + + // Encrypt some sample data using the encryption key + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, new SecureRandom()); + byte[] plaintext = "Further Use Test Data".getBytes(); + byte[] ciphertext = cipher.doFinal(plaintext); + + // Compute HMAC over the ciphertext using the MAC key + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(macKey); + byte[] computedMac = mac.doFinal(ciphertext); + + // Concatenate ciphertext and MAC + byte[] output = new byte[ciphertext.length + computedMac.length]; + System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); + System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); + } + + + public void BadDecryptThenMacOnPlaintextVerify(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] input) throws Exception { + // Split input into ciphertext and MAC + int macLength = 32; // HMAC-SHA256 output length + byte[] ciphertext = Arrays.copyOfRange(input, 0, input.length - macLength); + byte[] receivedMac = Arrays.copyOfRange(input, input.length - macLength, input.length); + + // Decrypt first (unsafe) + SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(Cipher.DECRYPT_MODE, encryptionKey, new SecureRandom()); + byte[] plaintext = cipher.doFinal(ciphertext); // $Source + + // Now verify MAC (too late) + SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(macKey); + byte[] computedMac = mac.doFinal(plaintext); // $Alert[java/quantum/bad-mac-order-decrypt-to-mac] + + if (!MessageDigest.isEqual(receivedMac, computedMac)) { + throw new SecurityException("MAC verification failed"); + } + } + + public void BadMacOnPlaintext(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception {// $Alert[java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac] + // Create keys directly from provided byte arrays + SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); + SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); + + // BAD Compute MAC over plaintext (not ciphertext) + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(macKey); + byte[] computedMac = mac.doFinal(plaintext); // Integrity not tied to encrypted data + + // Encrypt the plaintext + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, new SecureRandom()); + byte[] ciphertext = cipher.doFinal(plaintext); + + // Concatenate ciphertext and MAC + byte[] output = new byte[ciphertext.length + computedMac.length]; + System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); + System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); + } +} \ No newline at end of file From 5923e5cbb0bc15401a0923ced5489a5e71411fb4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 15:45:27 -0400 Subject: [PATCH 185/965] Crypto: Bad expected files in last push. --- .../BadMacUse/BadMacOrderDecryptToMac.expected | 11 +++++++++++ .../BadMacOrderMacOnEncryptPlaintext.expected | 1 + 2 files changed, 12 insertions(+) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index e69de29bb2d..78617fd7377 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -0,0 +1,11 @@ +#select +| BadMacUse.java:60:42:60:50 | plaintext | BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | BadMacUse.java:60:42:60:50 | plaintext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | +edges +| BadMacUse.java:30:29:30:53 | doFinal(...) : byte[] | BadMacUse.java:35:42:35:51 | ciphertext | provenance | | +| BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | BadMacUse.java:60:42:60:50 | plaintext | provenance | | +nodes +| BadMacUse.java:30:29:30:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | +| BadMacUse.java:35:42:35:51 | ciphertext | semmle.label | ciphertext | +| BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | +| BadMacUse.java:60:42:60:50 | plaintext | semmle.label | plaintext | +subpaths diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index e69de29bb2d..a46eeaf11f0 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -0,0 +1 @@ +| BadMacUse.java:67:82:67:97 | plaintext | Message used for encryption operation at $@, also used for MAC at $@. | BadMacUse.java:80:44:80:52 | plaintext | plaintext | BadMacUse.java:75:42:75:50 | plaintext | plaintext | From ef6f0222f29aefbd23541777804c2a989a546b3f Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Thu, 16 Oct 2025 16:11:42 -0400 Subject: [PATCH 186/965] Crypto: Addressing FPs in BadMacOrderMacOnEncryptPlaintext --- .../Examples/BadMacOrderMacOnEncryptPlaintext.ql | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 50b8b1caeb2..8128e29fc65 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -28,6 +28,15 @@ module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { sink = any(Crypto::FlowAwareElement other).getInputNode() } + // Don't go in to a known out node, this will prevent the plaintext + // from tracing out of cipher operations for example, we just want to trace + // the plaintext to uses. + // NOTE: we are not using a barrier out on input nodes, because + // that would remove 'use-use' flows, which we need + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { node1.(AdditionalFlowInputStep).getOutput() = node2 or @@ -43,6 +52,7 @@ module CommonDataFlowNodeFlow = TaintTracking::Global; from DataFlow::Node src, DataFlow::Node sink1, DataFlow::Node sink2 where + not src.asExpr() instanceof NullLiteral and CommonDataFlowNodeFlow::flow(src, sink1) and CommonDataFlowNodeFlow::flow(src, sink2) and exists(Crypto::CipherOperationNode cipherOp | From 61a3e9630f9e7579491894a99948632cb1e57404 Mon Sep 17 00:00:00 2001 From: yoff Date: Fri, 17 Oct 2025 01:39:29 +0200 Subject: [PATCH 187/965] java: rewrite conflict detection - favour unary predicates over binary ones (the natural "conflicting access" is binary) - switch to a dual solution to trade recursion through forall for simple existentials. Co-authored-by: Anders Schack-Mulligen --- .../semmle/code/java/ConflictingAccess.qll | 366 ++++++++---------- .../src/Likely Bugs/Concurrency/ThreadSafe.ql | 46 ++- .../ThreadSafe/ThreadSafe.expected | 115 ++---- .../query-tests/ThreadSafe/examples/C.java | 16 +- .../examples/FaultyTurnstileExample.java | 8 +- .../ThreadSafe/examples/FlawedSemaphore.java | 2 +- .../ThreadSafe/examples/LockExample.java | 46 +-- .../ThreadSafe/examples/SyncLstExample.java | 4 +- .../ThreadSafe/examples/SyncStackExample.java | 4 +- .../examples/SynchronizedAndLock.java | 4 +- .../query-tests/ThreadSafe/examples/Test.java | 8 +- 11 files changed, 296 insertions(+), 323 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index c98fb3bdf3b..9373845d6bc 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -44,7 +44,11 @@ predicate isThreadSafeType(Type t) { /** Holds if the expression `e` is a thread-safe initializer. */ predicate isThreadSafeInitializer(Expr e) { - e.(Call).getCallee().getQualifiedName().matches("java.util.Collections.synchronized%") + e.(Call) + .getCallee() + .getSourceDeclaration() + .getQualifiedName() + .matches("java.util.Collections.synchronized%") } /** @@ -84,17 +88,6 @@ class ExposedFieldAccess extends FieldAccess { } } -/** Holds if the location of `a` is strictly before the location of `b`. */ -bindingset[a, b] -overlay[caller?] -pragma[inline_late] -predicate orderedLocations(Location a, Location b) { - a.getStartLine() < b.getStartLine() - or - a.getStartLine() = b.getStartLine() and - a.getStartColumn() < b.getStartColumn() -} - /** * A class annotated as `@ThreadSafe`. * Provides predicates to check for concurrency issues. @@ -102,213 +95,192 @@ predicate orderedLocations(Location a, Location b) { class ClassAnnotatedAsThreadSafe extends Class { ClassAnnotatedAsThreadSafe() { this.getAnAnnotation().getType().getName() = "ThreadSafe" } - /** Holds if `a` and `b` are conflicting accesses to the same field and not monitored by the same monitor. */ - predicate unsynchronised(ExposedFieldAccess a, ExposedFieldAccess b) { - this.conflicting(a, b) and - this.publicAccess(_, a) and - this.publicAccess(_, b) and - not exists(Monitors::Monitor m | - this.monitors(a, m) and - this.monitors(b, m) - ) - } - - /** Holds if `a` is the earliest write to its field that is unsynchronized with `b`. */ - predicate unsynchronised_normalized(ExposedFieldAccess a, ExposedFieldAccess b) { - this.unsynchronised(a, b) and - // Eliminate double reporting by making `a` the earliest write to this field - // that is unsynchronized with `b`. - not exists(ExposedFieldAccess earlier_a | - earlier_a.getField() = a.getField() and - orderedLocations(earlier_a.getLocation(), a.getLocation()) - | - this.unsynchronised(earlier_a, b) - ) - } - + // We wish to find conflicting accesses that are reachable from public methods + // and to know which monitors protect them. + // + // It is very easy and natural to write a predicate for conflicting accesses, + // but that would be binary, and hence not suited for reachability analysis. + // + // It is also easy to state that all accesses to a field are protected by a single monitor, + // but that would require a forall, which is not suited for recursion. + // (The recursion occurs for example as you traverse the access path and keep requiring that all tails are protected.) + // + // We therefore use a dual solution: + // - We write a unary recursive predicate for accesses that are not protected by any monitor. + // Any such write access, reachable from a public method, is conflicting with itself. + // And any such read will be conflicting with any publicly reachable write access (locked or not). + // + // - We project the above predicate down to fields, so we can find fields with unprotected accesses. + // - From this we can derive a unary recursive predicate for fields whose accesses are protected by exactly one monitor. + // The predicate tracks the monitor. + // If such a field has two accesses protected by different monitors, we have a concurrency issue. + // This can be determined by simple counting at the end of the recursion. + // Technically, we only have a concurrency issue if there is a write access, + // but if you are locking your reads with different locks, you likely made a typo. + // + // - From the above, we can derive a unary recursive predicate for fields whose accesses are protected by at least one monitor. + // This predicate tracks all the monitors that protect accesses to the field. + // This is combined with a predicate that checks if any access escapes a given monitor. + // If all the monitors that protect accesses to a field are escaped by at least one access, + // we have a concurrency issue. + // This can be determined by a single forall at the end of the recursion. + // + // With this formulation we avoid binary predicates and foralls in recursion. + // + // Cases where a field access is not protected by any monitor /** - * Holds if `a` and `b` are unsynchronized and both publicly accessible - * as witnessed by `witness_a` and `witness_b`. + * Holds if the field access `a` to the field `f` is not protected by any monitor, and it can be reached via the expression `e` in the method `m`. + * We maintain the invariant that `m = e.getEnclosingCallable()`. */ - predicate witness(ExposedFieldAccess a, Expr witness_a, ExposedFieldAccess b, Expr witness_b) { - this.unsynchronised_normalized(a, b) and - this.publicAccess(witness_a, a) and - this.publicAccess(witness_b, b) and - // avoid double reporting - not exists(Expr better_witness_a | this.publicAccess(better_witness_a, a) | - orderedLocations(better_witness_a.getLocation(), witness_a.getLocation()) - ) and - not exists(Expr better_witness_b | this.publicAccess(better_witness_b, b) | - orderedLocations(better_witness_b.getLocation(), witness_b.getLocation()) - ) - } - - /** - * Actions `a` and `b` are conflicting iff - * they are field access operations on the same field and - * at least one of them is a write. - */ - predicate conflicting(ExposedFieldAccess a, ExposedFieldAccess b) { - // We allow a = b, since they could be executed on different threads - // We are looking for two operations: - // - on the same non-volatile field - a.getField() = b.getField() and - // - on this class - a.getField() = this.getAField() and - // - where at least one is a write - // wlog we assume that is `a` - // We use a slightly more inclusive definition than simply `a.isVarWrite()` - Modification::isModifying(a) and - // Avoid reporting both `(a, b)` and `(b, a)` by choosing the tuple - // where `a` appears before `b` in the source code. + predicate unlocked_access(ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write) { + m.getDeclaringType() = this and ( - ( - Modification::isModifying(b) and - a != b - ) - implies - orderedLocations(a.getLocation(), b.getLocation()) - ) - } - - /** Holds if `a` can be reached by a path from a public method, and all such paths are monitored by `monitor`. */ - predicate monitors(ExposedFieldAccess a, Monitors::Monitor monitor) { - forex(Method m | this.providesAccess(m, _, a) and m.isPublic() | - this.monitorsVia(m, a, monitor) - ) - } - - /** Holds if `a` can be reached by a path from a public method and `e` is the expression in that method that starts the path. */ - predicate publicAccess(Expr e, ExposedFieldAccess a) { - exists(Method m | m.isPublic() | this.providesAccess(m, e, a)) - } - - /** - * Holds if a call to method `m` can cause an access of `a` and `e` is the expression inside `m` that leads to that access. - * `e` will either be `a` itself or a method call that leads to `a`. - */ - predicate providesAccess(Method m, Expr e, ExposedFieldAccess a) { - m = this.getAMethod() and - ( - a.getEnclosingCallable() = m and - e = a + // base case + f.getDeclaringType() = this and + m = e.getEnclosingCallable() and + a.getField() = f and + a = e and + (if Modification::isModifying(a) then write = true else write = false) or - exists(MethodCall c | c.getEnclosingCallable() = m | - this.providesAccess(c.getCallee(), _, a) and - e = c + // recursive case + exists(MethodCall c, Expr e0, Method m0 | this.unlocked_access(f, e0, m0, a, write) | + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + not Monitors::locallyMonitors(e0, _) ) ) } - // NOTE: - // In order to deal with loops in the call graph, we compute the strongly connected components (SCCs). - // We only wish to do this for the methods that can lead to exposed field accesses. - // Given a field access `a`, we can consider a "call graph of interest", a sub graph of the call graph - // that only contains methods that lead to an access of `a`. We call this "the call graph induced by `a`". - // We can then compute the SCCs of this graph, yielding the SCC graph induced by `a`. + /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the method `m`. */ + predicate has_unlocked_access(ExposedField f, Expr e, Method m, boolean write) { + this.unlocked_access(f, e, m, _, write) + } + + /** Holds if the field access `a` to the field `f` is not protected by any monitor, and it can be reached via the expression `e` in the public method `m`. */ + predicate unlocked_public_access( + ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write + ) { + this.unlocked_access(f, e, m, a, write) and + m.isPublic() and + not Monitors::locallyMonitors(e, _) + } + + /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the public method `m`. */ + predicate has_unlocked_public_access(ExposedField f, Expr e, Method m, boolean write) { + this.unlocked_public_access(f, e, m, _, write) + } + + // Cases where all accesses to a field are protected by exactly one monitor // /** - * Holds if a call to method `m` can cause an access of `a` by `m` calling `callee`. - * This is an edge in the call graph induced by `a`. + * Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the method `m`. */ - predicate accessVia(Method m, ExposedFieldAccess a, Method callee) { - exists(MethodCall c | this.providesAccess(m, c, a) | callee = c.getCallee()) - } - - /** Holds if `m` can reach `reached` by a path in the call graph induced by `a`. */ - predicate accessReach(Method m, ExposedFieldAccess a, Method reached) { - m = this.getAMethod() and - reached = this.getAMethod() and - this.providesAccess(m, _, a) and - this.providesAccess(reached, _, a) and - ( - this.accessVia(m, a, reached) - or - exists(Method mid | this.accessReach(m, a, mid) | this.accessVia(mid, a, reached)) - ) - } - - /** - * Holds if `rep` is a representative of the SCC containing `m` in the call graph induced by `a`. - * This only assigns representatives to methods involved in loops. - * To get a representative of any method, use `repScc`. - */ - predicate repInLoopScc(Method rep, ExposedFieldAccess a, Method m) { - // `rep` and `m` are in the same SCC - this.accessReach(rep, a, m) and - this.accessReach(m, a, rep) and - // `rep` is the representative of the SCC - // that is, the earliest in the source code - forall(Method alt_rep | - rep != alt_rep and - this.accessReach(alt_rep, a, m) and - this.accessReach(m, a, alt_rep) - | - rep.getLocation().getStartLine() < alt_rep.getLocation().getStartLine() - ) - } - - /** Holds if `rep` is a representative of the SCC containing `m` in the call graph induced by `a`. */ - predicate repScc(Method rep, ExposedFieldAccess a, Method m) { - this.repInLoopScc(rep, a, m) + predicate has_onelocked_access( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + this.has_unlocked_access(f, e, m, write) and + Monitors::locallyMonitors(e, monitor) or - // If `m` is in the call graph induced by `a` and did not get a representative from `repInLoopScc`, - // it is represented by itself. - m = this.getAMethod() and - this.providesAccess(m, _, a) and - not this.repInLoopScc(_, a, m) and - rep = m + // recursive case + exists(MethodCall c, Expr e0, Method m0 | this.has_onelocked_access(f, e0, m0, write, monitor) | + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + // consider allowing idempotent monitors + not Monitors::locallyMonitors(e, _) and + m.getDeclaringType() = this + ) } - /** - * Holds if `c` is a call from the SCC represented by `callerRep` to the (different) SCC represented by `calleeRep`. - * This is an edge in the SCC graph induced by `a`. - */ - predicate callEdgeScc(Method callerRep, ExposedFieldAccess a, MethodCall c, Method calleeRep) { - callerRep != calleeRep and - exists(Method caller, Method callee | - this.repScc(callerRep, a, caller) and - this.repScc(calleeRep, a, callee) + /** Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the public method `m`. */ + predicate has_onelocked_public_access( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + this.has_onelocked_access(f, e, m, write, monitor) and + m.isPublic() and + not this.has_unlocked_public_access(f, e, m, write) + } + + /** Holds if the field `f` has more than one access, all locked by a single monitor, but different monitors are used. */ + predicate single_monitor_mismatch(ExposedField f) { + 2 <= + strictcount(Monitors::Monitor monitor | this.has_onelocked_public_access(f, _, _, _, monitor)) + } + + // Cases where all accesses to a field are protected by at least one monitor + // + /** Holds if the class has an access, locked by at least one monitor, to the field `f` via the expression `e` in the method `m`. */ + predicate has_onepluslocked_access( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + this.has_onelocked_access(f, e, m, write, monitor) and + not this.single_monitor_mismatch(f) and + not this.has_unlocked_public_access(f, _, _, _) + or + // recursive case + exists(MethodCall c, Expr e0, Method m0, Monitors::Monitor monitor0 | + this.has_onepluslocked_access(f, e0, m0, write, monitor0) and + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + m.getDeclaringType() = this | - this.accessVia(caller, a, callee) and - c.getEnclosingCallable() = caller and - c.getCallee() = callee - ) - } - - /** - * Holds if the SCC represented by `rep` can cause an access to `a` and `e` is the expression that leads to that access. - * `e` will either be `a` itself or a method call that leads to `a` via a different SCC. - */ - predicate providesAccessScc(Method rep, Expr e, ExposedFieldAccess a) { - rep = this.getAMethod() and - exists(Method m | this.repScc(rep, a, m) | - a.getEnclosingCallable() = m and - e = a + monitor = monitor0 or - exists(MethodCall c | this.callEdgeScc(rep, a, c, _) | e = c) + Monitors::locallyMonitors(e, monitor) ) } - /** Holds if all paths from `rep` to `a` are monitored by `monitor`. */ - predicate monitorsViaScc(Method rep, ExposedFieldAccess a, Monitors::Monitor monitor) { - rep = this.getAMethod() and - this.providesAccessScc(rep, _, a) and - // If we are in an SCC that can access `a`, the access must be monitored locally - (this.repScc(rep, a, a.getEnclosingCallable()) implies Monitors::locallyMonitors(a, monitor)) and - // Any call towards `a` must either be monitored or guarantee that the access is monitored - forall(MethodCall c, Method calleeRep | this.callEdgeScc(rep, a, c, calleeRep) | - Monitors::locallyMonitors(c, monitor) - or - this.monitorsViaScc(calleeRep, a, monitor) + /** Holds if the class has a write access to the field `f` that can be reached via a public method. */ + predicate has_public_write_access(ExposedField f) { + this.has_unlocked_public_access(f, _, _, true) + or + this.has_onelocked_public_access(f, _, _, true, _) + or + exists(Method m | m.getDeclaringType() = this and m.isPublic() | + this.has_onepluslocked_access(f, _, m, true, _) ) } - /** Holds if all paths from `m` to `a` are monitored by `monitor`. */ - predicate monitorsVia(Method m, ExposedFieldAccess a, Monitors::Monitor monitor) { - exists(Method rep | - this.repScc(rep, a, m) and - this.monitorsViaScc(rep, a, monitor) + /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the method `m`. */ + predicate escapes_monitor( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + this.has_onepluslocked_access(f, _, _, _, monitor) and + this.has_unlocked_access(f, e, m, write) and + not Monitors::locallyMonitors(e, monitor) + or + // recursive case + exists(MethodCall c, Expr e0, Method m0 | this.escapes_monitor(f, e0, m0, write, monitor) | + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + // consider allowing idempotent monitors + not Monitors::locallyMonitors(e, monitor) and + m.getDeclaringType() = this + ) + } + + /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the public method `m`. */ + predicate escapes_monitor_public( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + this.escapes_monitor(f, e, m, write, monitor) and + m.isPublic() + } + + /** Holds if no monitor protects all accesses to the field `f`. */ + predicate not_fully_monitored(ExposedField f) { + forex(Monitors::Monitor monitor | this.has_onepluslocked_access(f, _, _, _, monitor) | + this.escapes_monitor_public(f, _, _, _, monitor) ) } } diff --git a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql index 1498274131e..89e9cbdb169 100644 --- a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql @@ -14,13 +14,43 @@ import java import semmle.code.java.ConflictingAccess +predicate unmonitored_access( + ClassAnnotatedAsThreadSafe cls, ExposedFieldAccess a, Expr entry, string msg, string entry_desc +) { + exists(ExposedField f | + cls.unlocked_public_access(f, entry, _, a, true) + or + cls.unlocked_public_access(f, entry, _, a, false) and + cls.has_public_write_access(f) + ) and + msg = + "This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe." and + entry_desc = "this expression" +} + +predicate not_fully_monitored_field( + ClassAnnotatedAsThreadSafe cls, ExposedField f, string msg, string cls_name +) { + ( + // Technically there has to be a write access for a conflict to exist. + // But if you are locking your reads with different locks, you likely made a typo, + // so in this case we alert without requiring `cls.has_public_write_access(f)` + cls.single_monitor_mismatch(f) + or + cls.not_fully_monitored(f) and + cls.has_public_write_access(f) + ) and + msg = + "The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe." and + cls_name = cls.getName() +} + from - ClassAnnotatedAsThreadSafe cls, FieldAccess modifyingAccess, Expr witness_modifyingAccess, - FieldAccess conflictingAccess, Expr witness_conflictingAccess + ClassAnnotatedAsThreadSafe cls, Top alert_element, Top alert_context, string alert_msg, + string context_desc where - cls.witness(modifyingAccess, witness_modifyingAccess, conflictingAccess, witness_conflictingAccess) -select modifyingAccess, - "This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor.", - witness_modifyingAccess, "this expression", conflictingAccess, "this field access", - witness_conflictingAccess, "this expression" -// select c, a.getField() + unmonitored_access(cls, alert_element, alert_context, alert_msg, context_desc) + or + not_fully_monitored_field(cls, alert_element, alert_msg, context_desc) and + alert_context = cls +select alert_element, alert_msg, alert_context, context_desc diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index d25b09260ee..ae2bd4ea5c8 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -1,72 +1,43 @@ -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:14:9:14:14 | this.y | this field access | examples/C.java:14:9:14:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:15:9:15:14 | this.y | this field access | examples/C.java:15:9:15:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:16:9:16:14 | this.y | this field access | examples/C.java:16:9:16:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:16:18:16:23 | this.y | this field access | examples/C.java:16:18:16:23 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:20:9:20:14 | this.y | this field access | examples/C.java:20:9:20:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:21:9:21:14 | this.y | this field access | examples/C.java:21:9:21:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:22:9:22:14 | this.y | this field access | examples/C.java:22:9:22:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:22:18:22:23 | this.y | this field access | examples/C.java:22:18:22:23 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:26:9:26:14 | this.y | this field access | examples/C.java:26:9:26:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:30:13:30:13 | y | this field access | examples/C.java:30:13:30:13 | y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:33:9:33:9 | y | this field access | examples/C.java:33:9:33:9 | y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:39:9:39:14 | this.y | this field access | examples/C.java:39:9:39:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:40:9:40:14 | this.y | this field access | examples/C.java:40:9:40:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:41:9:41:14 | this.y | this field access | examples/C.java:41:9:41:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:41:18:41:23 | this.y | this field access | examples/C.java:41:18:41:23 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:53:9:53:14 | this.y | this field access | examples/C.java:53:9:53:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:54:9:54:14 | this.y | this field access | examples/C.java:54:9:54:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:55:9:55:14 | this.y | this field access | examples/C.java:55:9:55:14 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:55:18:55:23 | this.y | this field access | examples/C.java:55:18:55:23 | this.y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:61:9:61:9 | y | this field access | examples/C.java:61:9:61:9 | y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:62:9:62:9 | y | this field access | examples/C.java:62:9:62:9 | y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:63:9:63:9 | y | this field access | examples/C.java:63:9:63:9 | y | this expression | -| examples/C.java:14:9:14:14 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/C.java:14:9:14:14 | this.y | this expression | examples/C.java:63:13:63:13 | y | this field access | examples/C.java:63:13:63:13 | y | this expression | -| examples/FaultyTurnstileExample.java:13:5:13:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FaultyTurnstileExample.java:13:5:13:9 | count | this expression | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this field access | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this expression | -| examples/FaultyTurnstileExample.java:30:5:30:9 | count | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FaultyTurnstileExample.java:30:5:30:9 | count | this expression | examples/FaultyTurnstileExample.java:36:5:36:9 | count | this field access | examples/FaultyTurnstileExample.java:36:5:36:9 | count | this expression | -| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:15:14:15:18 | state | this field access | examples/FlawedSemaphore.java:15:14:15:18 | state | this expression | -| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:18:7:18:11 | state | this field access | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | -| examples/FlawedSemaphore.java:18:7:18:11 | state | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | examples/FlawedSemaphore.java:26:7:26:11 | state | this field access | examples/FlawedSemaphore.java:26:7:26:11 | state | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:38:5:38:10 | length | this field access | examples/LockExample.java:38:5:38:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:39:13:39:18 | length | this field access | examples/LockExample.java:39:13:39:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:44:5:44:10 | length | this field access | examples/LockExample.java:44:5:44:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:45:13:45:18 | length | this field access | examples/LockExample.java:45:13:45:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:49:5:49:10 | length | this field access | examples/LockExample.java:49:5:49:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:57:5:57:10 | length | this field access | examples/LockExample.java:57:5:57:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:58:13:58:18 | length | this field access | examples/LockExample.java:58:13:58:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:62:5:62:10 | length | this field access | examples/LockExample.java:62:5:62:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:65:13:65:18 | length | this field access | examples/LockExample.java:65:13:65:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:69:5:69:10 | length | this field access | examples/LockExample.java:69:5:69:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:71:13:71:18 | length | this field access | examples/LockExample.java:71:13:71:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:76:5:76:10 | length | this field access | examples/LockExample.java:76:5:76:10 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:79:13:79:18 | length | this field access | examples/LockExample.java:79:13:79:18 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:127:7:127:12 | length | this field access | examples/LockExample.java:127:7:127:12 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:136:7:136:12 | length | this field access | examples/LockExample.java:136:7:136:12 | length | this expression | -| examples/LockExample.java:24:5:24:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:24:5:24:10 | length | this expression | examples/LockExample.java:142:7:142:12 | length | this field access | examples/LockExample.java:142:7:142:12 | length | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:39:5:39:11 | content | this field access | examples/LockExample.java:39:5:39:11 | content | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:45:5:45:11 | content | this field access | examples/LockExample.java:45:5:45:11 | content | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:58:5:58:11 | content | this field access | examples/LockExample.java:58:5:58:11 | content | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:65:5:65:11 | content | this field access | examples/LockExample.java:65:5:65:11 | content | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:71:5:71:11 | content | this field access | examples/LockExample.java:71:5:71:11 | content | this expression | -| examples/LockExample.java:25:5:25:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:25:5:25:11 | content | this expression | examples/LockExample.java:79:5:79:11 | content | this field access | examples/LockExample.java:79:5:79:11 | content | this expression | -| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:25:13:25:18 | length | this field access | examples/LockExample.java:25:13:25:18 | length | this expression | -| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:32:13:32:18 | length | this field access | examples/LockExample.java:32:13:32:18 | length | this expression | -| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:52:13:52:18 | length | this field access | examples/LockExample.java:52:13:52:18 | length | this expression | -| examples/LockExample.java:38:5:38:10 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:38:5:38:10 | length | this expression | examples/LockExample.java:150:7:150:12 | length | this field access | examples/LockExample.java:150:7:150:12 | length | this expression | -| examples/LockExample.java:39:5:39:11 | content | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:39:5:39:11 | content | this expression | examples/LockExample.java:52:5:52:11 | content | this field access | examples/LockExample.java:52:5:52:11 | content | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this field access | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:112:5:112:21 | notRelatedToOther | this field access | examples/LockExample.java:112:5:112:21 | notRelatedToOther | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:119:5:119:21 | notRelatedToOther | this field access | examples/LockExample.java:119:5:119:21 | notRelatedToOther | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this field access | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this field access | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this expression | -| examples/LockExample.java:85:5:85:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:85:5:85:21 | notRelatedToOther | this expression | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this field access | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | -| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:100:5:100:21 | notRelatedToOther | this field access | examples/LockExample.java:100:5:100:21 | notRelatedToOther | this expression | -| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this field access | examples/LockExample.java:103:5:103:21 | notRelatedToOther | this expression | -| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this field access | examples/LockExample.java:109:5:109:21 | notRelatedToOther | this expression | -| examples/LockExample.java:94:5:94:21 | notRelatedToOther | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/LockExample.java:94:5:94:21 | notRelatedToOther | this expression | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this field access | examples/LockExample.java:117:5:117:21 | notRelatedToOther | this expression | -| examples/SyncLstExample.java:40:5:40:7 | lst | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncLstExample.java:40:5:40:7 | lst | this expression | examples/SyncLstExample.java:45:5:45:7 | lst | this field access | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | -| examples/SyncStackExample.java:32:5:32:7 | stc | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SyncStackExample.java:32:5:32:7 | stc | this expression | examples/SyncStackExample.java:37:5:37:7 | stc | this field access | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | -| examples/SynchronizedAndLock.java:14:9:14:14 | length | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/SynchronizedAndLock.java:14:9:14:14 | length | this expression | examples/SynchronizedAndLock.java:19:9:19:14 | length | this field access | examples/SynchronizedAndLock.java:19:9:19:14 | length | this expression | -| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:52:5:52:10 | this.y | this field access | examples/Test.java:24:5:24:18 | setYPrivate(...) | this expression | -| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:60:5:60:10 | this.y | this field access | examples/Test.java:60:5:60:10 | this.y | this expression | -| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:74:5:74:10 | this.y | this field access | examples/Test.java:74:5:74:10 | this.y | this expression | -| examples/Test.java:43:5:43:10 | this.y | This modifying field access (publicly accessible via $@) is conflicting with $@ (publicly accessible via $@) because they are not synchronized with the same monitor. | examples/Test.java:43:5:43:10 | this.y | this expression | examples/Test.java:74:14:74:14 | y | this field access | examples/Test.java:74:14:74:14 | y | this expression | +| examples/C.java:14:9:14:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:14:9:14:14 | this.y | this expression | +| examples/C.java:15:9:15:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:15:9:15:14 | this.y | this expression | +| examples/C.java:16:9:16:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:16:9:16:14 | this.y | this expression | +| examples/C.java:16:18:16:23 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:16:18:16:23 | this.y | this expression | +| examples/C.java:20:9:20:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:20:9:20:14 | this.y | this expression | +| examples/C.java:21:9:21:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:21:9:21:14 | this.y | this expression | +| examples/C.java:22:9:22:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:22:9:22:14 | this.y | this expression | +| examples/C.java:22:18:22:23 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:22:18:22:23 | this.y | this expression | +| examples/C.java:26:9:26:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:26:9:26:14 | this.y | this expression | +| examples/C.java:30:13:30:13 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:30:13:30:13 | y | this expression | +| examples/C.java:33:9:33:9 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:33:9:33:9 | y | this expression | +| examples/FaultyTurnstileExample.java:18:5:18:9 | count | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this expression | +| examples/FaultyTurnstileExample.java:26:15:26:19 | count | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:23:7:23:29 | FaultyTurnstileExample2 | FaultyTurnstileExample2 | +| examples/FlawedSemaphore.java:15:14:15:18 | state | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FlawedSemaphore.java:15:14:15:18 | state | this expression | +| examples/FlawedSemaphore.java:18:7:18:11 | state | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | +| examples/LockExample.java:18:15:18:20 | length | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:19:15:19:31 | notRelatedToOther | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:20:17:20:23 | content | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:44:5:44:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:44:5:44:10 | length | this expression | +| examples/LockExample.java:45:5:45:11 | content | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:45:5:45:11 | content | this expression | +| examples/LockExample.java:45:13:45:18 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:45:13:45:18 | length | this expression | +| examples/LockExample.java:49:5:49:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:49:5:49:10 | length | this expression | +| examples/LockExample.java:62:5:62:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:62:5:62:10 | length | this expression | +| examples/LockExample.java:65:5:65:11 | content | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:65:5:65:11 | content | this expression | +| examples/LockExample.java:65:13:65:18 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:65:13:65:18 | length | this expression | +| examples/LockExample.java:69:5:69:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:69:5:69:10 | length | this expression | +| examples/LockExample.java:71:5:71:11 | content | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:71:5:71:11 | content | this expression | +| examples/LockExample.java:71:13:71:18 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:71:13:71:18 | length | this expression | +| examples/LockExample.java:76:5:76:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:76:5:76:10 | length | this expression | +| examples/LockExample.java:79:5:79:11 | content | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:79:5:79:11 | content | this expression | +| examples/LockExample.java:79:13:79:18 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:79:13:79:18 | length | this expression | +| examples/LockExample.java:112:5:112:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:112:5:112:21 | notRelatedToOther | this expression | +| examples/LockExample.java:119:5:119:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:119:5:119:21 | notRelatedToOther | this expression | +| examples/LockExample.java:124:5:124:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this expression | +| examples/LockExample.java:145:5:145:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this expression | +| examples/LockExample.java:153:5:153:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | +| examples/SyncLstExample.java:45:5:45:7 | lst | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | +| examples/SyncStackExample.java:37:5:37:7 | stc | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | +| examples/SynchronizedAndLock.java:10:17:10:22 | length | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/SynchronizedAndLock.java:7:14:7:32 | SynchronizedAndLock | SynchronizedAndLock | +| examples/Test.java:52:5:52:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:24:5:24:18 | setYPrivate(...) | this expression | +| examples/Test.java:60:5:60:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:60:5:60:10 | this.y | this expression | +| examples/Test.java:74:5:74:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:5:74:10 | this.y | this expression | +| examples/Test.java:74:14:74:14 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:14:74:14 | y | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/C.java b/java/ql/test/query-tests/ThreadSafe/examples/C.java index 51201d4f6be..92c6b82800c 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/C.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/C.java @@ -12,25 +12,25 @@ public class C { public void m() { this.y = 0; // $ Alert - this.y += 1; - this.y = this.y - 1; + this.y += 1; // $ Alert + this.y = this.y - 1; // $ Alert } public void n4() { - this.y = 0; - this.y += 1; - this.y = this.y - 1; + this.y = 0; // $ Alert + this.y += 1; // $ Alert + this.y = this.y - 1; // $ Alert } public void setY(int y) { - this.y = y; + this.y = y; // $ Alert } public void test() { - if (y == 0) { + if (y == 0) { // $ Alert lock.lock(); } - y = 0; + y = 0; // $ Alert lock.unlock(); } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java b/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java index adbd74473e4..20b258135f6 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java @@ -10,12 +10,12 @@ class FaultyTurnstileExample { public void inc() { lock.lock(); - count++; // $ Alert + count++; // $ MISSING: Alert lock.unlock(); } public void dec() { - count--; + count--; // $ Alert } } @@ -23,11 +23,11 @@ class FaultyTurnstileExample { class FaultyTurnstileExample2 { private Lock lock1 = new ReentrantLock(); private Lock lock2 = new ReentrantLock(); - private int count = 0; + private int count = 0; // $ Alert public void inc() { lock1.lock(); - count++; // $ Alert + count++; lock1.unlock(); } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java b/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java index 405edbe7058..a73b45e60ed 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/FlawedSemaphore.java @@ -12,7 +12,7 @@ public class FlawedSemaphore { public void acquire() { try { - while (state == capacity) { + while (state == capacity) { // $ Alert this.wait(); } state++; // $ Alert diff --git a/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java index 8ce34922c5b..1e1792d0d2e 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/LockExample.java @@ -15,14 +15,14 @@ public class LockExample { private Lock lock1 = new ReentrantLock(); private Lock lock2 = new ReentrantLock(); - private int length = 0; - private int notRelatedToOther = 10; - private int[] content = new int[10]; + private int length = 0; // $ Alert + private int notRelatedToOther = 10; // $ Alert + private int[] content = new int[10]; // $ Alert public void add(int value) { lock1.lock(); - length++; // $ Alert - content[length] = value; // $ Alert + length++; + content[length] = value; lock1.unlock(); } @@ -35,18 +35,18 @@ public class LockExample { public void notTheSameLockAsAdd() { // use locks, but different ones lock2.lock(); - length--; // $ Alert - content[length] = 0; // $ Alert + length--; + content[length] = 0; lock2.unlock(); } public void noLock() { // no locks - length--; - content[length] = 0; + length--; // $ Alert + content[length] = 0; // $ Alert } public void fieldUpdatedOutsideOfLock() { // adjusts length without lock - length--; + length--; // $ Alert lock1.lock(); content[length] = 0; @@ -59,30 +59,30 @@ public class LockExample { } public void onlyLocked() { // never unlocked, only locked - length--; + length--; // $ Alert lock1.lock(); - content[length] = 0; + content[length] = 0; // $ Alert } public void onlyUnlocked() { // never locked, only unlocked - length--; + length--; // $ Alert - content[length] = 0; + content[length] = 0; // $ Alert lock1.unlock(); } public void notSameLock() { - length--; + length--; // $ Alert lock2.lock();// Not the same lock - content[length] = 0; + content[length] = 0; // $ Alert lock1.unlock(); } public void updateCount() { lock2.lock(); - notRelatedToOther++; // $ Alert + notRelatedToOther++; lock2.unlock(); } @@ -91,7 +91,7 @@ public class LockExample { notRelatedToOther++; lock2.unlock(); lock1.lock(); - notRelatedToOther++; // $ Alert + notRelatedToOther++; lock1.unlock(); } @@ -109,19 +109,19 @@ public class LockExample { notRelatedToOther++; lock2.unlock(); lock1.lock(); - notRelatedToOther++; + notRelatedToOther++; // $ Alert } public void updateCountTwiceUnLock() { lock2.lock(); notRelatedToOther++; lock2.unlock(); - notRelatedToOther++; + notRelatedToOther++; // $ Alert lock1.unlock(); } public void synchronizedNonRelatedOutside() { - notRelatedToOther++; + notRelatedToOther++; // $ Alert synchronized(this) { length++; @@ -142,7 +142,7 @@ public class LockExample { length++; } - notRelatedToOther = 1; + notRelatedToOther = 1; // $ Alert } public void synchronizedNonRelatedOutside4() { @@ -150,7 +150,7 @@ public class LockExample { length++; } - notRelatedToOther = 1; + notRelatedToOther = 1; // $ Alert } } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java b/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java index 63f6985840c..04bc1c3c454 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/SyncLstExample.java @@ -37,11 +37,11 @@ class FaultySyncLstExample { public void add(T item) { lock.lock(); - lst.add(item); // $ Alert + lst.add(item); lock.unlock(); } public void remove(int i) { - lst.remove(i); + lst.remove(i); // $ Alert } } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java b/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java index 62eabde4b7d..31e8cebee3e 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/SyncStackExample.java @@ -29,11 +29,11 @@ class FaultySyncStackExample { public void push(T item) { lock.lock(); - stc.push(item); // $ Alert + stc.push(item); lock.unlock(); } public void pop() { - stc.pop(); + stc.pop(); // $ Alert } } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java b/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java index fc0aa038b0e..52b35a84bb7 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/SynchronizedAndLock.java @@ -7,11 +7,11 @@ import java.util.concurrent.locks.ReentrantLock; public class SynchronizedAndLock { private Lock lock = new ReentrantLock(); - private int length = 0; + private int length = 0; // $ Alert public void add(int value) { lock.lock(); - length++; // $ Alert + length++; lock.unlock(); } diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Test.java b/java/ql/test/query-tests/ThreadSafe/examples/Test.java index b2e7ac46c0b..e6b0567ef89 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/Test.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/Test.java @@ -40,7 +40,7 @@ public class Test { */ public void setYCorrect(int y) { lock.lock(); - this.y = y; // $ Alert + this.y = y; lock.unlock(); } @@ -49,7 +49,7 @@ public class Test { * @param y */ private void setYPrivate(int y) { - this.y = y; + this.y = y; // $ Alert } /** @@ -57,7 +57,7 @@ public class Test { * @param y */ public void setYWrongLock(int y) { - this.y = y; + this.y = y; // $ Alert lock.lock(); lock.unlock(); } @@ -71,6 +71,6 @@ public class Test { } public void testMethod() { - this.y = y + 2; + this.y = y + 2; // $ Alert } } From 3a0a8999d5a7c1c76dfdbd2e2503cf7cd064a048 Mon Sep 17 00:00:00 2001 From: yoff Date: Fri, 17 Oct 2025 01:52:23 +0200 Subject: [PATCH 188/965] java: fix ql alerts --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 9373845d6bc..f075bb3d198 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -185,7 +185,7 @@ class ClassAnnotatedAsThreadSafe extends Class { Monitors::locallyMonitors(e, monitor) or // recursive case - exists(MethodCall c, Expr e0, Method m0 | this.has_onelocked_access(f, e0, m0, write, monitor) | + exists(MethodCall c, Method m0 | this.has_onelocked_access(f, _, m0, write, monitor) | m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -223,8 +223,8 @@ class ClassAnnotatedAsThreadSafe extends Class { not this.has_unlocked_public_access(f, _, _, _) or // recursive case - exists(MethodCall c, Expr e0, Method m0, Monitors::Monitor monitor0 | - this.has_onepluslocked_access(f, e0, m0, write, monitor0) and + exists(MethodCall c, Method m0, Monitors::Monitor monitor0 | + this.has_onepluslocked_access(f, _, m0, write, monitor0) and m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -258,7 +258,7 @@ class ClassAnnotatedAsThreadSafe extends Class { not Monitors::locallyMonitors(e, monitor) or // recursive case - exists(MethodCall c, Expr e0, Method m0 | this.escapes_monitor(f, e0, m0, write, monitor) | + exists(MethodCall c, Method m0 | this.escapes_monitor(f, _, m0, write, monitor) | m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and From 979b05cc1a908bd2d981b79a05b49737e8b2f8e3 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 17 Oct 2025 09:50:36 +0200 Subject: [PATCH 189/965] C++: Apply suggested fixes from review --- .../code/cpp/rangeanalysis/SimpleRangeAnalysis.qll | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 5f9fb5b5a0c..1692a83694f 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -523,7 +523,7 @@ private predicate isRecursiveExpr(Expr e) { */ private module BoundsEstimate { /** - * Gets the limit beyond which we enable widening. I.e., if the estimated + * Gets the limit beyond which we enable widening. That is, if the estimated * number of bounds exceeds this limit, we enable widening such that the limit * will not be reached. */ @@ -738,7 +738,7 @@ private module BoundsEstimate { result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) ) or - exists(BinaryArithmeticOperation binop | + exists(BinaryOperation binop | e = binop and result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) | @@ -746,7 +746,8 @@ private module BoundsEstimate { e instanceof MinExpr or e instanceof AddExpr or e instanceof SubExpr or - e instanceof UnsignedMulExpr + e instanceof UnsignedMulExpr or + e instanceof UnsignedBitwiseAndExpr ) or exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) @@ -771,7 +772,7 @@ private module BoundsEstimate { e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) ) or - exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getLeftOperand())) + exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getRightOperand())) or exists(Conversion convExpr | e = convExpr and @@ -787,9 +788,6 @@ private module BoundsEstimate { not exists(getValue(e).toFloat()) ) or - e instanceof UnsignedBitwiseAndExpr and - result = 1 - or exists(RShiftExpr rsExpr | e = rsExpr and exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and From c3fd06c8a4ac582c53296dab82f53e3058d9f22a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 17 Oct 2025 11:27:31 +0200 Subject: [PATCH 190/965] Csharp: fix `cs/web/missing-x-frame-options` to also consider `location` elements As explained in https://learn.microsoft.com/en-us/previous-versions/aspnet/ms178692(v=vs.100), it is possible to add `system.webServer` elements nested inside `location` elements in `Web.config`. --- .../CWE-451/MissingXFrameOptions.ql | 17 ++++++++++------- .../MissingXFrameOptions.cs | 18 ++++++++++++++++++ .../MissingXFrameOptions.expected | 0 .../MissingXFrameOptions.qlref | 1 + .../WebConfigAddedHeaderInLocation/Web.config | 12 ++++++++++++ .../WebConfigAddedHeaderInLocation/options | 3 +++ 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/Web.config create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/options diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql index 9e51b663038..13569996d50 100644 --- a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql @@ -30,13 +30,16 @@ predicate hasWebConfigXFrameOptions(WebConfigXml webConfig) { // // // ``` - webConfig - .getARootElement() - .getAChild("system.webServer") - .getAChild("httpProtocol") - .getAChild("customHeaders") - .getAChild("add") - .getAttributeValue("name") = "X-Frame-Options" + // This can also be in a `location` + exists(XmlElement root | + root = webConfig.getARootElement() and + [root, root.getAChild("location")] + .getAChild("system.webServer") + .getAChild("httpProtocol") + .getAChild("customHeaders") + .getAChild("add") + .getAttributeValue("name") = "X-Frame-Options" + ) } /** diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.cs b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.cs new file mode 100644 index 00000000000..48073a309fd --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.cs @@ -0,0 +1,18 @@ +using System; +using System.Web; + +public class AddXFrameOptions : IHttpHandler +{ + + public void ProcessRequest(HttpContext ctx) + { + } + + public bool IsReusable + { + get + { + return true; + } + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.expected b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref new file mode 100644 index 00000000000..b8a963200e5 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/MissingXFrameOptions.qlref @@ -0,0 +1 @@ +Security Features/CWE-451/MissingXFrameOptions.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/Web.config new file mode 100644 index 00000000000..ce837c2b981 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/Web.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/options new file mode 100644 index 00000000000..9d05f9bf06d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeaderInLocation/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs From 0c719af33cef7c762c13bb43d57792722a261447 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 17 Oct 2025 12:05:52 +0200 Subject: [PATCH 191/965] Csharp: add change note --- .../ql/src/change-notes/2025-10-17-location-in-web-config.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md new file mode 100644 index 00000000000..71c888d255e --- /dev/null +++ b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in `` elements. From 6a6015e0eb4d6bbee468b28a26f00eda81d44e56 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Fri, 17 Oct 2025 15:10:49 +0200 Subject: [PATCH 192/965] Rust: accept test changes --- .../File/CONSISTENCY/ExtractionConsistency.expected | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 rust/ql/test/extractor-tests/File/CONSISTENCY/ExtractionConsistency.expected diff --git a/rust/ql/test/extractor-tests/File/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/extractor-tests/File/CONSISTENCY/ExtractionConsistency.expected new file mode 100644 index 00000000000..c642b9fc2dd --- /dev/null +++ b/rust/ql/test/extractor-tests/File/CONSISTENCY/ExtractionConsistency.expected @@ -0,0 +1,2 @@ +extractionWarning +| bad_cargo/src/no_semantics.rs:1:1:1:1 | semantic analyzer unavailable (unable to load manifest) | From ff7840dc9f6c1da7f665d53a6e0deb47b1e76242 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 10:52:32 -0400 Subject: [PATCH 193/965] Crypto: removing precision tags on experimental queries. --- java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql | 1 - java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql | 1 - 2 files changed, 2 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql b/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql index 1aee9515232..b449f118bc3 100644 --- a/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql +++ b/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql @@ -4,7 +4,6 @@ * @kind problem * @problem.severity warning * @security-severity 7.5 - * @precision high * @id java/weak-cryptographic-algorithm-new-model * @tags security * external/cwe/cwe-327 diff --git a/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql index aa05f7695c6..4dc3130adf9 100644 --- a/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql @@ -4,7 +4,6 @@ * @description An AES cipher is in use without GCM * @kind problem * @problem.severity error - * @precision high * @tags quantum * experimental */ From 628bab92fc6025a255849e9331712131611dd76b Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 12:06:34 -0400 Subject: [PATCH 194/965] Crypto: Modify BadMacOrderMacOnEncryptPlaintext to be a path query that traces through any intermediate encrypt or mac to the final encrypt or mac. --- .../BadMacOrderMacOnEncryptPlaintext.ql | 157 ++++++++++++++---- .../BadMacOrderMacOnEncryptPlaintext.expected | 15 +- .../quantum/examples/BadMacUse/BadMacUse.java | 4 +- 3 files changed, 145 insertions(+), 31 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 8128e29fc65..1f9c9f11e34 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -1,8 +1,8 @@ /** - * @name Bad MAC order: MAC on an encrypt plaintext + * @name Bad MAC order: Mac and Encryption share the same plaintext * @description MAC should be on a cipher, not a raw message * @id java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac - * @kind problem + * @kind path-problem * @problem.severity error * @tags quantum * experimental @@ -10,23 +10,12 @@ import java import experimental.quantum.Language +import codeql.util.Option -// NOTE: I must look for a common data flow node rather than -// starting from a message source, since the message source -// might not be known. -// TODO: can we approximate a message source better? -module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(source.asParameter()) - or - exists(Crypto::GenericSourceNode other | - other.asElement() = CryptoInput::dfn_to_element(source) - ) - } +module ArgToSinkConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(Call c | c.getAnArgument() = source.asExpr()) } - predicate isSink(DataFlow::Node sink) { - sink = any(Crypto::FlowAwareElement other).getInputNode() - } + predicate isSink(DataFlow::Node sink) { targetSinks(sink) } // Don't go in to a known out node, this will prevent the plaintext // from tracing out of cipher operations for example, we just want to trace @@ -48,17 +37,129 @@ module CommonDataFlowNodeConfig implements DataFlow::ConfigSig { } } -module CommonDataFlowNodeFlow = TaintTracking::Global; +module ArgToSinkFlow = TaintTracking::Global; -from DataFlow::Node src, DataFlow::Node sink1, DataFlow::Node sink2 -where - not src.asExpr() instanceof NullLiteral and - CommonDataFlowNodeFlow::flow(src, sink1) and - CommonDataFlowNodeFlow::flow(src, sink2) and +/** + * Target sinks for this query are either encryption operations or mac operation message inputs + */ +predicate targetSinks(DataFlow::Node n) { exists(Crypto::CipherOperationNode cipherOp | cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and - cipherOp.getAnInputArtifact().asElement() = sink1.asExpr() - ) and - exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = sink2.asExpr()) -select src, "Message used for encryption operation at $@, also used for MAC at $@.", sink1, - sink1.toString(), sink2, sink2.toString() + cipherOp.getAnInputArtifact().asElement() = n.asExpr() + ) + or + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = n.asExpr()) +} + +/** + * An argument of a target sink or a parent call whose parameter flows to a target sink + */ +class InterimArg extends DataFlow::Node { + DataFlow::Node targetSink; + + InterimArg() { + targetSinks(targetSink) and + ( + this = targetSink + or + ArgToSinkFlow::flow(this, targetSink) and + this.getEnclosingCallable().calls+(targetSink.getEnclosingCallable()) + ) + } + + DataFlow::Node getTargetSink() { result = targetSink } +} + +/** + * A wrapper class to represent a target argument dataflow node. + */ +class TargetArg extends DataFlow::Node { + TargetArg() { targetSinks(this) } + + predicate isCipher() { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and + cipherOp.getAnInputArtifact().asElement() = this.asExpr() + ) + } + + predicate isMac() { + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = this.asExpr()) + } +} + +module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig { + class FlowState = Option::Option; + + // TODO: can we approximate a message source better? + predicate isSource(DataFlow::Node source, FlowState state) { + // TODO: can we find the 'closest' parameter to the sinks? + // i.e., use a generic source if we have it, but also isolate the + // lowest level in the flow to the closest parameter node in the call graph? + exists(Crypto::GenericSourceNode other | + other.asElement() = CryptoInput::dfn_to_element(source) + ) and + state.isNone() + } + + predicate isSink(DataFlow::Node sink, FlowState state) { + sink instanceof TargetArg and + ( + sink.(TargetArg).isMac() and state.asSome().isCipher() + or + sink.(TargetArg).isCipher() and state.asSome().isMac() + ) + } + + predicate isBarrierOut(DataFlow::Node node, FlowState state) { + // Stop at the first sink for now + isSink(node, state) + } + + // Don't go in to a known out node, this will prevent the plaintext + // from tracing out of cipher operations for example, we just want to trace + // the plaintext to uses. + // NOTE: we are not using a barrier out on input nodes, because + // that would remove 'use-use' flows, which we need + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } + + predicate isAdditionalFlowStep( + DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 + ) { + (exists(state1.asSome()) or state1.isNone()) and + targetSinks(node1) and + node1 instanceof TargetArg and + //use-use flow, either flow directly from the node1 use + //or find a parent call in the call in the call stack + //and continue flow from that parameter + node2.(InterimArg).getTargetSink() = node1 and + state2.asSome() = node1 + } +} + +module PlaintextUseAsMacAndCipherInputFlow = + TaintTracking::GlobalWithState; + +import PlaintextUseAsMacAndCipherInputFlow::PathGraph + +from + PlaintextUseAsMacAndCipherInputFlow::PathNode src, + PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg +where + PlaintextUseAsMacAndCipherInputFlow::flowPath(src, sink) and + arg = sink.getState().asSome() +select sink, src, sink, + "Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@", + arg.asExpr(), arg.asExpr().toString() diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index a46eeaf11f0..993811a16c9 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -1 +1,14 @@ -| BadMacUse.java:67:82:67:97 | plaintext | Message used for encryption operation at $@, also used for MAC at $@. | BadMacUse.java:80:44:80:52 | plaintext | plaintext | BadMacUse.java:75:42:75:50 | plaintext | plaintext | +#select +| BadMacUse.java:80:44:80:52 | plaintext | BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:75:42:75:50 | plaintext | plaintext | +edges +| BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | | +| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | provenance | | +nodes +| BadMacUse.java:67:82:67:97 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:80:44:80:52 | plaintext | semmle.label | plaintext | +subpaths +testFailures +| BadMacUse.java:54:56:54:66 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 86a080b6924..2a65a8baa75 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -64,7 +64,7 @@ class BadMacUse { } } - public void BadMacOnPlaintext(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception {// $Alert[java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac] + public void BadMacOnPlaintext(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception {// $Source // Create keys directly from provided byte arrays SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); @@ -77,7 +77,7 @@ class BadMacUse { // Encrypt the plaintext Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, new SecureRandom()); - byte[] ciphertext = cipher.doFinal(plaintext); + byte[] ciphertext = cipher.doFinal(plaintext); // $Alert[java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac] // Concatenate ciphertext and MAC byte[] output = new byte[ciphertext.length + computedMac.length]; From e12734162fef9fff3bca242aa41f95dae569aa67 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 12:32:24 -0400 Subject: [PATCH 195/965] Crypto: WeakKDFKeySize tests. --- .../WeakOrUnknownKDFKeySize/Test.java | 42 +++++++++++++++++++ .../WeakKDFKeySize.expected | 11 +++++ .../WeakKDFKeySize.qlref | 4 ++ 3 files changed, 57 insertions(+) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.qlref diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java new file mode 100644 index 00000000000..9e2487ff32d --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java @@ -0,0 +1,42 @@ +import java.security.SecureRandom; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; + +public class Test { + + public static byte[] generateSalt(int length) { + SecureRandom random = new SecureRandom(); + byte[] salt = new byte[length]; + random.nextBytes(salt); + return salt; + } + + /** + * PBKDF2 derivation with a weak key size. + * + * SAST/CBOM: - Parent: PBKDF2. - Key size is only 64 bits, which is far below acceptable security standards. + * - Flagged as insecure. + */ + public void pbkdf2WeakKeySize(String password) throws Exception { + byte[] salt = generateSalt(16); + int iterationCount = 100_000; + int keySize = 64; // $Source + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, keySize); // $Alert[java/quantum/weak-kdf-key-size] + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + byte[] key = factory.generateSecret(spec).getEncoded(); + } + + /** + * PBKDF2 derivation with a secure key size. + * + * SAST/CBOM: - Parent: PBKDF2. - Key size is 256 bits, which meets modern security standards. + */ + public void pbkdf2SecureKeySize(String password) throws Exception { + byte[] salt = generateSalt(16); + int iterationCount = 100_000; + int keySize = 256; + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, keySize); + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + byte[] key = factory.generateSecret(spec).getEncoded(); + } +} \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.expected new file mode 100644 index 00000000000..63df79a9f9b --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.expected @@ -0,0 +1,11 @@ +#select +| Test.java:24:88:24:94 | keySize | Test.java:23:23:23:24 | 64 : Number | Test.java:24:88:24:94 | keySize | Key derivation operation configures output key length below 256: $@ | Test.java:23:23:23:24 | 64 | 64 | +edges +| Test.java:23:23:23:24 | 64 : Number | Test.java:24:88:24:94 | keySize | provenance | | +| Test.java:37:23:37:25 | 256 : Number | Test.java:38:88:38:94 | keySize | provenance | | +nodes +| Test.java:23:23:23:24 | 64 : Number | semmle.label | 64 : Number | +| Test.java:24:88:24:94 | keySize | semmle.label | keySize | +| Test.java:37:23:37:25 | 256 : Number | semmle.label | 256 : Number | +| Test.java:38:88:38:94 | keySize | semmle.label | keySize | +subpaths diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.qlref new file mode 100644 index 00000000000..2b2b1228de2 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/WeakKDFKeySize.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/WeakKDFKeySize.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file From f480d90a68e8d179bef46871ad70e63ad13fe515 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 13:13:14 -0400 Subject: [PATCH 196/965] Crypto: Add missing block mode JCA Models, add block mode unit tests --- java/ql/lib/experimental/quantum/JCA.qll | 18 +++--- .../examples/WeakOrUnknownBlockMode/Test.java | 57 +++++++++++++++++++ .../WeakBlockMode.expected | 4 ++ .../WeakBlockMode.qlref | 4 ++ .../quantum/experimental/Standardization.qll | 2 + 5 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/Test.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.qlref diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index b74b20d9836..d0b32b51f35 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -30,16 +30,6 @@ module JCAModel { ].toUpperCase()) } - // TODO: Verify that the CFB% case works correctly - bindingset[mode] - predicate cipher_modes(string mode) { - mode.toUpperCase() - .matches([ - "NONE", "CBC", "CCM", "CFB", "CFB%", "CTR", "CTS", "ECB", "GCM", "KW", "KWP", "OFB", - "OFB%", "PCBC" - ].toUpperCase()) - } - // TODO: Verify that the OAEPWith% case works correctly bindingset[padding] predicate cipher_padding(string padding) { @@ -184,6 +174,14 @@ module JCAModel { type = KeyOpAlg::SIV() and name = "SIV" or type = KeyOpAlg::OCB() and name = "OCB" + or + type = KeyOpAlg::CFB() and name = "CFB" + or + type = KeyOpAlg::OFB() and name = "OFB" + or + type = KeyOpAlg::PCBC() and name = "PCBC" + or + type = KeyOpAlg::KWP() and name = "KWP" } bindingset[name] diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/Test.java new file mode 100644 index 00000000000..0c8b3b6691d --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/Test.java @@ -0,0 +1,57 @@ +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; + +public class Test { + public static void main(String[] args) throws Exception { + SecretKey key = KeyGenerator.getInstance("AES").generateKey(); + IvParameterSpec iv = new IvParameterSpec(new byte[16]); + byte[] data = "SensitiveData".getBytes(); + + // Insecure block mode: ECB + Cipher cipherECB = Cipher.getInstance("AES/ECB/PKCS5Padding"); // $Alert + cipherECB.init(Cipher.ENCRYPT_MODE, key); + byte[] ecbEncrypted = cipherECB.doFinal(data); + System.out.println("ECB encrypted: " + bytesToHex(ecbEncrypted)); + + // Insecure block mode: CFB + Cipher cipherCFB = Cipher.getInstance("AES/CFB/PKCS5Padding"); // $Alert + cipherCFB.init(Cipher.ENCRYPT_MODE, key, iv); + byte[] cfbEncrypted = cipherCFB.doFinal(data); + System.out.println("CFB encrypted: " + bytesToHex(cfbEncrypted)); + + // Insecure block mode: OFB + Cipher cipherOFB = Cipher.getInstance("AES/OFB/PKCS5Padding"); // $Alert + cipherOFB.init(Cipher.ENCRYPT_MODE, key, iv); + byte[] ofbEncrypted = cipherOFB.doFinal(data); + System.out.println("OFB encrypted: " + bytesToHex(ofbEncrypted)); + + // Insecure block mode: CTR + Cipher cipherCTR = Cipher.getInstance("AES/CTR/NoPadding"); // $Alert + cipherCTR.init(Cipher.ENCRYPT_MODE, key, iv); + byte[] ctrEncrypted = cipherCTR.doFinal(data); + System.out.println("CTR encrypted: " + bytesToHex(ctrEncrypted)); + + // Secure block mode: CBC with random IV + IvParameterSpec randomIv = new IvParameterSpec(KeyGenerator.getInstance("AES").generateKey().getEncoded()); + Cipher cipherCBCRandomIV = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipherCBCRandomIV.init(Cipher.ENCRYPT_MODE, key, randomIv); + byte[] cbcRandomIVEncrypted = cipherCBCRandomIV.doFinal(data); + System.out.println("CBC (random IV) encrypted: " + bytesToHex(cbcRandomIVEncrypted)); + + // Secure block mode: GCM (authenticated encryption) + IvParameterSpec gcmIv = new IvParameterSpec(new byte[12]); + Cipher cipherGCM = Cipher.getInstance("AES/GCM/NoPadding"); + cipherGCM.init(Cipher.ENCRYPT_MODE, key, gcmIv); + byte[] gcmEncrypted = cipherGCM.doFinal(data); + System.out.println("GCM encrypted: " + bytesToHex(gcmEncrypted)); + } + + private static String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (byte b : bytes) + sb.append(String.format("%02x", b)); + return sb.toString(); + } +} \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.expected new file mode 100644 index 00000000000..859a138d3eb --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.expected @@ -0,0 +1,4 @@ +| Test.java:13:47:13:68 | KeyOperationAlgorithm | Weak AES block mode instance $@. | Test.java:13:47:13:68 | ModeOfOperation | ModeOfOperation | +| Test.java:19:47:19:68 | KeyOperationAlgorithm | Weak AES block mode instance $@. | Test.java:19:47:19:68 | ModeOfOperation | ModeOfOperation | +| Test.java:25:47:25:68 | KeyOperationAlgorithm | Weak AES block mode instance $@. | Test.java:25:47:25:68 | ModeOfOperation | ModeOfOperation | +| Test.java:31:47:31:65 | KeyOperationAlgorithm | Weak AES block mode instance $@. | Test.java:31:47:31:65 | ModeOfOperation | ModeOfOperation | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.qlref new file mode 100644 index 00000000000..ec8500ddda7 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownBlockMode/WeakBlockMode.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/WeakBlockModes.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll index aac9e30c3b6..be281e2fbfd 100644 --- a/shared/quantum/codeql/quantum/experimental/Standardization.qll +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -214,7 +214,9 @@ module Types { CCM() or // Used in lightweight cryptography (IoT, WPA2) SIV() or // Misuse-resistant encryption, used in secure storage OCB() or // Efficient AEAD mode + KWP() or OFB() or + PCBC() or OtherMode() class ModeOfOperationType extends TModeOfOperationType { From b4ecb91c8384f584f022672c2013dd6fd1f32d90 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 13:38:47 -0400 Subject: [PATCH 197/965] Crypto: Add missing cipher algorithms to JCA. Update node tests to account for missing cipher algorithms. --- java/ql/lib/experimental/quantum/JCA.qll | 15 +++++++++++++-- .../quantum/node_properties.expected | 4 +++- .../quantum/experimental/Standardization.qll | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index d0b32b51f35..fac7165134d 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -26,7 +26,8 @@ module JCAModel { algo.toUpperCase() .matches([ "AES", "AESWrap", "AESWrapPad", "ARCFOUR", "Blowfish", "ChaCha20", "ChaCha20-Poly1305", - "DES", "DESede", "DESedeWrap", "ECIES", "PBEWith%", "RC2", "RC4", "RC5", "RSA" + "DES", "DESede", "DESedeWrap", "ECIES", "PBEWith%", "RC2", "RC4", "RC5", "RSA", + "Skipjack", "Idea" ].toUpperCase()) } @@ -190,7 +191,8 @@ module JCAModel { upper.matches("AES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) or - upper = "DES" and + // NOTE: there is DES and DESede + upper.matches("DES%") and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or upper = "TRIPLEDES" and @@ -205,6 +207,9 @@ module JCAModel { upper = "CHACHA20" and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::CHACHA20()) or + upper = "RC2" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC2()) + or upper = "RC4" and type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or @@ -213,6 +218,12 @@ module JCAModel { or upper = "RSA" and type = KeyOpAlg::TAsymmetricCipher(KeyOpAlg::RSA()) + or + upper = "SKIPJACK" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SKIPJACK()) + or + upper = "BLOWFISH" and + type = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) ) } diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index 9879b4cc515..77ef8a820b0 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -1546,8 +1546,10 @@ | jca/SymmetricAlgorithm.java:151:29:151:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:151:29:151:53 | jca/SymmetricAlgorithm.java:151:29:151:53 | | jca/SymmetricAlgorithm.java:167:42:167:54 | Parameter | Description | key | jca/SymmetricAlgorithm.java:167:42:167:54 | jca/SymmetricAlgorithm.java:167:42:167:54 | | jca/SymmetricAlgorithm.java:167:57:167:72 | Parameter | Description | plaintext | jca/SymmetricAlgorithm.java:167:57:167:72 | jca/SymmetricAlgorithm.java:167:57:167:72 | -| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Name | Unknown | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | +| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | KeySize | 56 | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | +| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Name | DES | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | RawName | DESede/CBC/PKCS5Padding | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | +| jca/SymmetricAlgorithm.java:168:44:168:68 | KeyOperationAlgorithm | Structure | Block | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | Name | CBC | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | ModeOfOperation | RawName | CBC | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | | jca/SymmetricAlgorithm.java:168:44:168:68 | PaddingAlgorithm | Name | PKCS7 | jca/SymmetricAlgorithm.java:168:44:168:68 | jca/SymmetricAlgorithm.java:168:44:168:68 | diff --git a/shared/quantum/codeql/quantum/experimental/Standardization.qll b/shared/quantum/codeql/quantum/experimental/Standardization.qll index be281e2fbfd..cc43fcec6e2 100644 --- a/shared/quantum/codeql/quantum/experimental/Standardization.qll +++ b/shared/quantum/codeql/quantum/experimental/Standardization.qll @@ -39,6 +39,7 @@ module Types { RC5() or SEED() or SM4() or + SKIPJACK() or OtherSymmetricCipherType() newtype TAsymmetricCipherType = @@ -118,6 +119,8 @@ module Types { or type = SM4() and name = "SM4" and s = Block() or + type = SKIPJACK() and name = "Skipjack" and s = Block() + or type = OtherSymmetricCipherType() and name = "UnknownSymmetricCipher" and s = OtherCipherStructureType() From 1b205d867380612d4f1c22f4938ad0b5e5521103 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 13:39:05 -0400 Subject: [PATCH 198/965] Removing WeakRSA, this is redundant with weak asymmetric key size. --- .../experimental/quantum/Examples/WeakRSA.ql | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 java/ql/src/experimental/quantum/Examples/WeakRSA.ql diff --git a/java/ql/src/experimental/quantum/Examples/WeakRSA.ql b/java/ql/src/experimental/quantum/Examples/WeakRSA.ql deleted file mode 100644 index ee78b4b8ed3..00000000000 --- a/java/ql/src/experimental/quantum/Examples/WeakRSA.ql +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @name Cipher is Weak RSA Implementation - * @id java/quantum/weak-rsa - * @description RSA with a key length <2048 found - * @kind problem - * @problem.severity error - * @tags quantum - * experimental - */ - -import experimental.quantum.Language - -class WeakRsaAlgorithmNode extends Crypto::KeyOperationAlgorithmNode { - WeakRsaAlgorithmNode() { - this.getAlgorithmType() = Crypto::KeyOpAlg::TAsymmetricCipher(Crypto::KeyOpAlg::RSA()) and - this.getKeySizeFixed() < 2048 - } -} - -from Crypto::KeyOperationNode op, string message -where - op.getAKnownAlgorithm() instanceof WeakRsaAlgorithmNode and - message = "Weak RSA instance found with key length <2048" -select op, message From b06e05362bf95e97ebf81233a2c06ffec28a63bb Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 13:39:50 -0400 Subject: [PATCH 199/965] Crypto: altering all query IDs in examples to have "examples" in the ID, to make clear the query is not intended for production. --- .../quantum/Examples/WeakBlockModes.ql | 2 +- .../src/experimental/quantum/Examples/WeakHash.ql | 2 +- .../quantum/Examples/WeakKDFIterationCount.ql | 2 +- .../quantum/Examples/WeakKDFKeySize.ql | 2 +- .../quantum/Examples/WeakSymmetricCipher.ql | 5 ++++- .../InventorySlices/UnknownOperationAlgorithm.ql | 2 +- .../quantum/examples/BadMacUse/BadMacUse.java | 4 ++-- .../InsecureIVorNonceSource.java | 14 +++++++------- .../InsufficientAsymmetricKeySize.java | 6 +++--- .../examples/WeakOrUnknownHash/WeakHashing.java | 14 +++++++------- .../WeakOrUnknownKDFIterationCount/Test.java | 4 ++-- .../UnknownKDFIterationCount.expected | 2 +- .../examples/WeakOrUnknownKDFKeySize/Test.java | 2 +- 13 files changed, 32 insertions(+), 29 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql b/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql index 53e4d38216a..c5fb224ea1f 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql @@ -1,6 +1,6 @@ /** * @name Weak AES Block mode - * @id java/quantum/weak-block-modes + * @id java/quantum/examples/weak-block-modes * @description An AES cipher is in use with an insecure block mode * @kind problem * @problem.severity error diff --git a/java/ql/src/experimental/quantum/Examples/WeakHash.ql b/java/ql/src/experimental/quantum/Examples/WeakHash.ql index 573265705ba..e7b9c95a9c0 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakHash.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakHash.ql @@ -1,7 +1,7 @@ /** * @name Weak hashes * @description Finds uses of cryptographic hashing algorithms that are unapproved or otherwise weak. - * @id java/quantum/weak-hash + * @id java/quantum/examples/weak-hash * @kind problem * @problem.severity error * @tags external/cwe/cwe-327 diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql index 71dfb87b70c..98f97335eae 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql @@ -1,7 +1,7 @@ /** * @name Weak known key derivation function iteration count * @description Detects key derivation operations with a known weak iteration count. - * @id java/quantum/weak-kdf-iteration-count + * @id java/quantum/examples/weak-kdf-iteration-count * @kind path-problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql index 772f2e7a5a3..3d0be43392f 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql @@ -1,7 +1,7 @@ /** * @name Weak known key derivation function output length * @description Detects key derivation operations with a known weak output length - * @id java/quantum/weak-kdf-key-size + * @id java/quantum/examples/weak-kdf-key-size * @kind path-problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql index 2f67a4c9767..6b5ca79de0f 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql @@ -1,7 +1,7 @@ /** * @name Weak symmetric ciphers * @description Finds uses of cryptographic symmetric cipher algorithms that are unapproved or otherwise weak. - * @id java/quantum/weak-ciphers + * @id java/quantum/examples/weak-ciphers * @kind problem * @problem.severity error * @tags external/cwe/cwe-327 @@ -16,6 +16,9 @@ import Crypto::KeyOpAlg as KeyOpAlg from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::AlgorithmType algType where algType = alg.getAlgorithmType() and + // NOTE: an org may disallow all but AES we could similarly look for + // algType != KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) + // This is a more comprehensive check than looking for all weak ciphers ( algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or diff --git a/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql b/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql index 8469924a850..08f6cae731f 100644 --- a/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql +++ b/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql @@ -1,7 +1,7 @@ /** * @name Operations with unknown algorithm * @description Outputs operations where the algorithm applied is unknown - * @id java/quantum/slices/operation-with-unknown-algorithm + * @id java/quantum/examples/slices/operation-with-unknown-algorithm * @kind problem * @severity info * @tags quantum diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 2a65a8baa75..03fd21386cf 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -57,7 +57,7 @@ class BadMacUse { SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); - byte[] computedMac = mac.doFinal(plaintext); // $Alert[java/quantum/bad-mac-order-decrypt-to-mac] + byte[] computedMac = mac.doFinal(plaintext); // $Alert[java/quantum/examples/bad-mac-order-decrypt-to-mac] if (!MessageDigest.isEqual(receivedMac, computedMac)) { throw new SecurityException("MAC verification failed"); @@ -77,7 +77,7 @@ class BadMacUse { // Encrypt the plaintext Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, new SecureRandom()); - byte[] ciphertext = cipher.doFinal(plaintext); // $Alert[java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac] + byte[] ciphertext = cipher.doFinal(plaintext); // $Alert[java/quantum/examples/bad-mac-order-encrypt-plaintext-also-in-mac] // Concatenate ciphertext and MAC byte[] output = new byte[ciphertext.length + computedMac.length]; diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java index f1b8878d63a..549c56dbd98 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java @@ -17,7 +17,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/insecure-iv-or-nonce] cipher.update(plaintext); return cipher.doFinal(); } @@ -30,7 +30,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-source] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/unknown-iv-or-nonce-source] cipher.update(plaintext); return cipher.doFinal(); } @@ -46,7 +46,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/insecure-iv-or-nonce] cipher.update(plaintext); return cipher.doFinal(); } @@ -62,7 +62,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/insecure-iv-or-nonce] cipher.update(plaintext); return cipher.doFinal(); } @@ -78,7 +78,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/insecure-iv-or-nonce] cipher.update(plaintext); return cipher.doFinal(); } @@ -94,7 +94,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/unknown-iv-or-nonce-source] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/unknown-iv-or-nonce-source] cipher.update(plaintext); return cipher.doFinal(); } @@ -203,7 +203,7 @@ public class InsecureIVorNonceSource { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/insecure-iv-or-nonce]] + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); // $Alert[java/quantum/examples/insecure-iv-or-nonce]] cipher.update(plaintext); return cipher.doFinal(); } diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java index 35b9dd40748..c330bf82a05 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/InsufficientAsymmetricKeySize.java @@ -2,15 +2,15 @@ import java.security.*; public class InsufficientAsymmetricKeySize{ public static void test() throws Exception{ KeyPairGenerator keyPairGen1 = KeyPairGenerator.getInstance("RSA"); - keyPairGen1.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen1.initialize(1024); // $Alert[java/quantum/examples/weak-asymmetric-key-gen-size] keyPairGen1.generateKeyPair(); KeyPairGenerator keyPairGen2 = KeyPairGenerator.getInstance("DSA"); - keyPairGen2.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen2.initialize(1024); // $Alert[java/quantum/examples/weak-asymmetric-key-gen-size] keyPairGen2.generateKeyPair(); KeyPairGenerator keyPairGen3 = KeyPairGenerator.getInstance("DH"); - keyPairGen3.initialize(1024); // $Alert[java/quantum/weak-asymmetric-key-gen-size] + keyPairGen3.initialize(1024); // $Alert[java/quantum/examples/weak-asymmetric-key-gen-size] keyPairGen3.generateKeyPair(); KeyPairGenerator keyPairGen4 = KeyPairGenerator.getInstance("RSA"); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java index 6435004931a..cc3b9a859d1 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownHash/WeakHashing.java @@ -12,19 +12,19 @@ public class WeakHashing { props.load(new FileInputStream("example.properties")); // BAD: Using a weak hashing algorithm even with a secure default - MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); // $Alert[java/quantum/weak-hash] + MessageDigest bad = MessageDigest.getInstance(props.getProperty("hashAlg1")); // $Alert[java/quantum/examples/weak-hash] // BAD: Using a weak hashing algorithm even with a secure default - MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); // $Alert[java/quantum/weak-hash] + MessageDigest bad2 = MessageDigest.getInstance(props.getProperty("hashAlg1", "SHA-256")); // $Alert[java/quantum/examples/weak-hash] // BAD: Using a strong hashing algorithm but with a weak default - MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); // $Alert[java/quantum/weak-hash] + MessageDigest bad3 = MessageDigest.getInstance(props.getProperty("hashAlg2", "MD5")); // $Alert[java/quantum/examples/weak-hash] // BAD: Using a weak hash - MessageDigest bad4 = MessageDigest.getInstance("SHA-1"); // $Alert[java/quantum/weak-hash] + MessageDigest bad4 = MessageDigest.getInstance("SHA-1"); // $Alert[java/quantum/examples/weak-hash] // BAD: Property does not exist and default (used value) is unknown - MessageDigest bad5 = MessageDigest.getInstance(props.getProperty("non-existent_property", "non-existent_default")); // $Alert[java/quantum/unknown-hash] + MessageDigest bad5 = MessageDigest.getInstance(props.getProperty("non-existent_property", "non-existent_default")); // $Alert[java/quantum/examples/unknown-hash] java.util.Properties props2 = new java.util.Properties(); @@ -32,13 +32,13 @@ public class WeakHashing { // BAD: "hashAlg2" is not visible in the file loaded for props2, should be an unknown // FALSE NEGATIVE for unknown hash - MessageDigest bad6 = MessageDigest.getInstance(props2.getProperty("hashAlg2", "SHA-256")); // $Alert[java/quantum/unknown-hash] + MessageDigest bad6 = MessageDigest.getInstance(props2.getProperty("hashAlg2", "SHA-256")); // $Alert[java/quantum/examples/unknown-hash] // GOOD: Using a strong hashing algorithm MessageDigest ok = MessageDigest.getInstance(props.getProperty("hashAlg2")); // BAD?: Property does not exist (considered unknown) and but default is secure - MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("non-existent-property", "SHA-256")); // $Alert[java/quantum/unknown-hash] + MessageDigest ok2 = MessageDigest.getInstance(props.getProperty("non-existent-property", "SHA-256")); // $Alert[java/quantum/examples/unknown-hash] // GOOD: Using a strong hashing algorithm MessageDigest ok3 = MessageDigest.getInstance("SHA3-512"); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java index c5d55a941d2..13f6d03ec72 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java @@ -29,7 +29,7 @@ public class Test { public void pbkdf2LowIteration(String password) throws Exception { byte[] salt = generateSalt(16); int iterationCount = 10; // $Source - PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/weak-kdf-iteration-count] + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/examples/weak-kdf-iteration-count] SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] key = factory.generateSecret(spec).getEncoded(); } @@ -42,7 +42,7 @@ public class Test { */ public void pbkdf2LowIteration(String password, int iterationCount) throws Exception { // $Source byte[] salt = generateSalt(16); - PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/unknown-kdf-iteration-count] + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $Alert[java/quantum/examples/unknown-kdf-iteration-count] SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] key = factory.generateSecret(spec).getEncoded(); } diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected index 5792287fae6..c9e5a5b8a81 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected @@ -1,5 +1,5 @@ #select | Test.java:47:22:47:49 | KeyDerivation | Key derivation operation with unknown iteration: $@ | Test.java:43:53:43:70 | iterationCount | iterationCount | testFailures -| Test.java:45:94:45:145 | // $Alert[java/quantum/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/unknown-kdf-iteration-count] | +| Test.java:45:94:45:145 | // $Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | | Test.java:47:22:47:49 | Key derivation operation with unknown iteration: $@ | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java index 9e2487ff32d..21619c8c574 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFKeySize/Test.java @@ -21,7 +21,7 @@ public class Test { byte[] salt = generateSalt(16); int iterationCount = 100_000; int keySize = 64; // $Source - PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, keySize); // $Alert[java/quantum/weak-kdf-key-size] + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, keySize); // $Alert[java/quantum/examples/weak-kdf-key-size] SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] key = factory.generateSecret(spec).getEncoded(); } From 540daa6df20d1d0e98360e15924c3f7dfa0ed0c2 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 13:40:15 -0400 Subject: [PATCH 200/965] Crypto: weak symmetric cipher tests. --- .../WeakOrUnknownSymmetricCipher/Test.java | 77 +++++++++++++++++++ .../WeakSymmetricCipher.expected | 15 ++++ .../WeakSymmetricCipher.qlref | 4 + 3 files changed, 96 insertions(+) create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.qlref diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java new file mode 100644 index 00000000000..f20582085dd --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java @@ -0,0 +1,77 @@ +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import java.security.Key; +import java.security.NoSuchAlgorithmException; + +public class Test { + public static void main(String[] args) throws Exception { + byte[] data = "Sensitive Data".getBytes(); + + // BAD: DES (unsafe) + KeyGenerator desKeyGen = KeyGenerator.getInstance("DES"); // $Alert + SecretKey desKey = desKeyGen.generateKey(); + Cipher desCipher = Cipher.getInstance("DES"); // $Alert + desCipher.init(Cipher.ENCRYPT_MODE, desKey); + byte[] desEncrypted = desCipher.doFinal(data); + + // BAD: DESede (Triple DES, considered weak) + KeyGenerator desedeKeyGen = KeyGenerator.getInstance("DESede"); // $Alert + SecretKey desedeKey = desedeKeyGen.generateKey(); + Cipher desedeCipher = Cipher.getInstance("DESede"); // $Alert + desedeCipher.init(Cipher.ENCRYPT_MODE, desedeKey); + byte[] desedeEncrypted = desedeCipher.doFinal(data); + + // BAD: Blowfish (considered weak) + KeyGenerator blowfishKeyGen = KeyGenerator.getInstance("Blowfish"); // $Alert + SecretKey blowfishKey = blowfishKeyGen.generateKey(); + Cipher blowfishCipher = Cipher.getInstance("Blowfish"); // $Alert + blowfishCipher.init(Cipher.ENCRYPT_MODE, blowfishKey); + byte[] blowfishEncrypted = blowfishCipher.doFinal(data); + + // BAD: RC2 (unsafe) + KeyGenerator rc2KeyGen = KeyGenerator.getInstance("RC2"); + SecretKey rc2Key = rc2KeyGen.generateKey(); + Cipher rc2Cipher = Cipher.getInstance("RC2"); // $Alert + rc2Cipher.init(Cipher.ENCRYPT_MODE, rc2Key); + byte[] rc2Encrypted = rc2Cipher.doFinal(data); + + // BAD: RC4 (stream cipher, unsafe) + KeyGenerator rc4KeyGen = KeyGenerator.getInstance("RC4"); // $Alert + SecretKey rc4Key = rc4KeyGen.generateKey(); + Cipher rc4Cipher = Cipher.getInstance("RC4"); // $Alert + rc4Cipher.init(Cipher.ENCRYPT_MODE, rc4Key); + byte[] rc4Encrypted = rc4Cipher.doFinal(data); + + // BAD: IDEA (considered weak) + KeyGenerator ideaKeyGen = KeyGenerator.getInstance("IDEA"); // $Alert + SecretKey ideaKey = ideaKeyGen.generateKey(); + Cipher ideaCipher = Cipher.getInstance("IDEA"); // $Alert + ideaCipher.init(Cipher.ENCRYPT_MODE, ideaKey); + byte[] ideaEncrypted = ideaCipher.doFinal(data); + + // BAD: Skipjack (unsafe) + KeyGenerator skipjackKeyGen = KeyGenerator.getInstance("Skipjack"); // $Alert + SecretKey skipjackKey = skipjackKeyGen.generateKey(); + Cipher skipjackCipher = Cipher.getInstance("Skipjack"); // $Alert + skipjackCipher.init(Cipher.ENCRYPT_MODE, skipjackKey); + byte[] skipjackEncrypted = skipjackCipher.doFinal(data); + + // GOOD: AES (safe) + KeyGenerator aesKeyGen = KeyGenerator.getInstance("AES"); + SecretKey aesKey = aesKeyGen.generateKey(); + Cipher aesCipher = Cipher.getInstance("AES"); + aesCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] aesEncrypted = aesCipher.doFinal(data); + + // GOOD: AES with CBC mode and PKCS5Padding + Cipher aesCbcCipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + aesCbcCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] aesCbcEncrypted = aesCbcCipher.doFinal(data); + + // GOOD: AES with GCM mode (authenticated encryption) + Cipher aesGcmCipher = Cipher.getInstance("AES/GCM/NoPadding"); + aesGcmCipher.init(Cipher.ENCRYPT_MODE, aesKey); + byte[] aesGcmEncrypted = aesGcmCipher.doFinal(data); + } +} \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected new file mode 100644 index 00000000000..899de12643f --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected @@ -0,0 +1,15 @@ +#select +| Test.java:12:59:12:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:14:47:14:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:40:59:40:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | +| Test.java:42:47:42:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | +testFailures +| Test.java:19:73:19:82 | // $Alert | Missing result: Alert | +| Test.java:21:61:21:70 | // $Alert | Missing result: Alert | +| Test.java:26:77:26:86 | // $Alert | Missing result: Alert | +| Test.java:28:65:28:74 | // $Alert | Missing result: Alert | +| Test.java:35:55:35:64 | // $Alert | Missing result: Alert | +| Test.java:47:69:47:78 | // $Alert | Missing result: Alert | +| Test.java:49:57:49:66 | // $Alert | Missing result: Alert | +| Test.java:54:77:54:86 | // $Alert | Missing result: Alert | +| Test.java:56:65:56:74 | // $Alert | Missing result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.qlref new file mode 100644 index 00000000000..d27fed11bfc --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/WeakSymmetricCipher.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file From c01c0604760443c0c25359fd96f432c6688024c6 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 17 Oct 2025 14:13:53 -0400 Subject: [PATCH 201/965] Crypto: more ID renaming to include "examples", fix singleton issues with ql-for-ql, use formatted test for WeakAsymmetricKeyGenSize (add post processing in the qlref), misc expected files updated (test passed locally but on rerun vscode reports failures, known bug with vscode unit tests). --- java/ql/lib/experimental/quantum/JCA.qll | 4 ++-- .../Examples/BadMacOrderDecryptToMac.ql | 2 +- .../BadMacOrderMacOnEncryptPlaintext.ql | 2 +- .../Examples/InsecureIVorNonceSource.ql | 2 +- .../quantum/Examples/NonAESGCMCipher.ql | 2 +- .../quantum/Examples/ReusedNonce.ql | 2 +- .../quantum/Examples/UnknownHash.ql | 2 +- .../Examples/UnknownIVorNonceSource.ql | 2 +- .../Examples/UnknownKDFIterationCount.ql | 2 +- .../Examples/WeakAsymmetricKeyGenSize.ql | 2 +- .../quantum/Examples/WeakSymmetricCipher.ql | 3 ++- .../BadMacOrderDecryptToMac.expected | 2 ++ .../WeakAsymmetricKeyGenSize.qlref | 5 ++++- .../UnknownKDFIterationCount.expected | 2 +- .../WeakOrUnknownSymmetricCipher/Test.java | 2 +- .../WeakSymmetricCipher.expected | 21 +++++++++---------- 16 files changed, 31 insertions(+), 26 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index fac7165134d..29820aa95cd 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -230,7 +230,7 @@ module JCAModel { bindingset[name] predicate key_agreement_name_to_type_known(Crypto::TKeyAgreementType type, string name) { type = Crypto::DH() and - name.toUpperCase() in ["DH"] + name.toUpperCase() = "DH" or type = Crypto::EDH() and name.toUpperCase() = "EDH" @@ -1659,7 +1659,7 @@ module JCAModel { Expr getOutput() { result = output } Expr getInput() { - super.getMethod().hasStringSignature(["doFinal(byte[])"]) and result = this.getArgument(0) + super.getMethod().hasStringSignature("doFinal(byte[])") and result = this.getArgument(0) or super.getMethod().hasStringSignature("update(byte[])") and result = this.getArgument(0) } diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index 2eea84cbec5..fea29f9fc14 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -1,7 +1,7 @@ /** * @name Bad MAC order: decrypt to mac * @description MAC should be on a cipher, not a raw message - * @id java/quantum/bad-mac-order-decrypt-to-mac + * @id java/quantum/examples/bad-mac-order-decrypt-to-mac * @kind path-problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 1f9c9f11e34..8d8fb5ee480 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -1,7 +1,7 @@ /** * @name Bad MAC order: Mac and Encryption share the same plaintext * @description MAC should be on a cipher, not a raw message - * @id java/quantum/bad-mac-order-encrypt-plaintext-also-in-mac + * @id java/quantum/examples/bad-mac-order-encrypt-plaintext-also-in-mac * @kind path-problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql index 3bf6a05a113..1c35d50a2d9 100644 --- a/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql @@ -1,6 +1,6 @@ /** * @name Insecure nonce/iv (static value or weak random source) - * @id java/quantum/insecure-iv-or-nonce + * @id java/quantum/examples/insecure-iv-or-nonce * @description A nonce/iv is generated from a source that is not secure. This can lead to * vulnerabilities such as replay attacks or key recovery. Insecure generation * is any static nonce, or any known insecure source for a nonce/iv if diff --git a/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql b/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql index 4dc3130adf9..affe7917cf2 100644 --- a/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql @@ -1,6 +1,6 @@ /** * @name Cipher not AES-GCM mode - * @id java/quantum/non-aes-gcm + * @id java/quantum/examples/non-aes-gcm * @description An AES cipher is in use without GCM * @kind problem * @problem.severity error diff --git a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql index 9b419ac2d41..54eddd8fc06 100644 --- a/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql +++ b/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql @@ -1,7 +1,7 @@ /** * @name Reuse of cryptographic nonce * @description Reuse of nonce in cryptographic operations can lead to vulnerabilities. - * @id java/quantum/reused-nonce + * @id java/quantum/examples/reused-nonce * @kind path-problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql index 5fd8e6fd506..32d8fa3b753 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownHash.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownHash.ql @@ -1,7 +1,7 @@ /** * @name Unknown hashes * @description Finds uses of cryptographic hashing algorithms of unknown type. - * @id java/quantum/unknown-hash + * @id java/quantum/examples/unknown-hash * @kind problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql b/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql index 33601ef49c3..3537fca594a 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql @@ -1,6 +1,6 @@ /** * @name Unknown nonce/iv source - * @id java/quantum/unknown-iv-or-nonce-source + * @id java/quantum/examples/unknown-iv-or-nonce-source * @description A nonce/iv is generated from a source that is not secure. Failure to initialize * an IV or nonce properly can lead to vulnerabilities such as replay attacks or key recovery. * IV may be unknown at a decryption operation (IV would be provided alongside the ciphertext). diff --git a/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql index 80c0b2195eb..3f8f1306a1d 100644 --- a/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql +++ b/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql @@ -1,7 +1,7 @@ /** * @name Unknown key derivation function iteration count * @description Detects key derivation operations with an unknown iteration count. - * @id java/quantum/unknown-kdf-iteration-count + * @id java/quantum/examples/unknown-kdf-iteration-count * @kind problem * @problem.severity error * @tags quantum diff --git a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql index f0b2cb70553..ee81e7bd6d0 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql @@ -1,6 +1,6 @@ /** * @name Weak Asymmetric Key Size - * @id java/quantum/weak-asymmetric-key-gen-size + * @id java/quantum/examples/weak-asymmetric-key-gen-size * @description An asymmetric key of known size is less than 2048 bits for any non-elliptic curve key operation. * @kind path-problem * @problem.severity error diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql index 6b5ca79de0f..59cd22ac592 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql @@ -26,6 +26,7 @@ where algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC2()) or algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) or + algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SKIPJACK()) ) select alg, "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index 78617fd7377..ac7b1b9c3c0 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -9,3 +9,5 @@ nodes | BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | | BadMacUse.java:60:42:60:50 | plaintext | semmle.label | plaintext | subpaths +testFailures +| BadMacUse.java:67:118:67:128 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref index 1229e635fd8..085cf3e0b2a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownAsymmetricKeySize/WeakAsymmetricKeyGenSize.qlref @@ -1 +1,4 @@ -experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql \ No newline at end of file +query: experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected index c9e5a5b8a81..33d8a155551 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected @@ -1,5 +1,5 @@ #select | Test.java:47:22:47:49 | KeyDerivation | Key derivation operation with unknown iteration: $@ | Test.java:43:53:43:70 | iterationCount | iterationCount | testFailures -| Test.java:45:94:45:145 | // $Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | +| Test.java:45:94:45:154 | // $Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | | Test.java:47:22:47:49 | Key derivation operation with unknown iteration: $@ | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java index f20582085dd..5f48f75eeb0 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java @@ -30,7 +30,7 @@ public class Test { byte[] blowfishEncrypted = blowfishCipher.doFinal(data); // BAD: RC2 (unsafe) - KeyGenerator rc2KeyGen = KeyGenerator.getInstance("RC2"); + KeyGenerator rc2KeyGen = KeyGenerator.getInstance("RC2"); // $Alert SecretKey rc2Key = rc2KeyGen.generateKey(); Cipher rc2Cipher = Cipher.getInstance("RC2"); // $Alert rc2Cipher.init(Cipher.ENCRYPT_MODE, rc2Key); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected index 899de12643f..13a316ee9b5 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected @@ -1,15 +1,14 @@ -#select | Test.java:12:59:12:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | | Test.java:14:47:14:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:19:62:19:69 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:21:50:21:57 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:26:64:26:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | +| Test.java:28:52:28:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | +| Test.java:33:59:33:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | +| Test.java:35:47:35:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | | Test.java:40:59:40:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | | Test.java:42:47:42:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | -testFailures -| Test.java:19:73:19:82 | // $Alert | Missing result: Alert | -| Test.java:21:61:21:70 | // $Alert | Missing result: Alert | -| Test.java:26:77:26:86 | // $Alert | Missing result: Alert | -| Test.java:28:65:28:74 | // $Alert | Missing result: Alert | -| Test.java:35:55:35:64 | // $Alert | Missing result: Alert | -| Test.java:47:69:47:78 | // $Alert | Missing result: Alert | -| Test.java:49:57:49:66 | // $Alert | Missing result: Alert | -| Test.java:54:77:54:86 | // $Alert | Missing result: Alert | -| Test.java:56:65:56:74 | // $Alert | Missing result: Alert | +| Test.java:47:60:47:65 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | +| Test.java:49:48:49:53 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | +| Test.java:54:64:54:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | +| Test.java:56:52:56:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | From f71cfac40a34653827ad49246a9c09587fc36455 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Oct 2025 14:02:14 +0200 Subject: [PATCH 202/965] Data flow: Add various debug predicates --- .../codeql/dataflow/internal/DataFlowImpl.qll | 175 +++++++++++++----- 1 file changed, 129 insertions(+), 46 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 099866ab6bd..e7b692cbec9 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -1715,7 +1715,7 @@ module MakeImpl Lang> { * Provides a graph representation of the data flow in this stage suitable for use in a `path-problem` query. */ additional module Graph { - private newtype TPathNode = + newtype TPathNode = TPathNodeMid(Nd node, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored) { fwdFlow(node, cc, summaryCtx, t, ap, stored) and revFlow(node, _, _, ap) @@ -2473,41 +2473,84 @@ module MakeImpl Lang> { } } - additional predicate stats( - boolean fwd, int nodes, int fields, int conscand, int states, int tuples, int calledges, - int tfnodes, int tftuples - ) { - fwd = true and - nodes = count(NodeEx node | fwdFlow(any(Nd n | n.getNodeEx() = node), _, _, _, _, _)) and - fields = count(Content f0 | fwdConsCand(f0, _)) and - conscand = count(Content f0, Ap ap | fwdConsCand(f0, ap)) and - states = count(FlowState state | fwdFlow(any(Nd n | n.getState() = state), _, _, _, _, _)) and - tuples = - count(Nd n, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored | - fwdFlow(n, cc, summaryCtx, t, ap, stored) - ) and - calledges = - count(Call call, Callable c | - FwdTypeFlowInput::dataFlowTakenCallEdgeIn(call, c, _) or - FwdTypeFlowInput::dataFlowTakenCallEdgeOut(call, c) - ) and - FwdTypeFlow::typeFlowStats(tfnodes, tftuples) - or - fwd = false and - nodes = count(NodeEx node | revFlow(any(Nd n | n.getNodeEx() = node), _, _, _)) and - fields = count(Content f0 | consCand(f0, _)) and - conscand = count(Content f0, Ap ap | consCand(f0, ap)) and - states = count(FlowState state | revFlow(any(Nd n | n.getState() = state), _, _, _)) and - tuples = - count(Nd n, ReturnCtx returnCtx, ApOption retAp, Ap ap | - revFlow(n, returnCtx, retAp, ap) - ) and - calledges = - count(Call call, Callable c | - RevTypeFlowInput::dataFlowTakenCallEdgeIn(call, c, _) or - RevTypeFlowInput::dataFlowTakenCallEdgeOut(call, c) - ) and - RevTypeFlow::typeFlowStats(tfnodes, tftuples) + /** Provides predicates for debugging. */ + additional module Debug { + private import Graph + + predicate stats( + boolean fwd, int nodes, int fields, int conscand, int states, int tuples, int calledges, + int tfnodes, int tftuples + ) { + fwd = true and + nodes = count(NodeEx node | fwdFlow(any(Nd n | n.getNodeEx() = node), _, _, _, _, _)) and + fields = count(Content f0 | fwdConsCand(f0, _)) and + conscand = count(Content f0, Ap ap | fwdConsCand(f0, ap)) and + states = + count(FlowState state | fwdFlow(any(Nd n | n.getState() = state), _, _, _, _, _)) and + tuples = + count(Nd n, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored | + fwdFlow(n, cc, summaryCtx, t, ap, stored) + ) and + calledges = + count(Call call, Callable c | + FwdTypeFlowInput::dataFlowTakenCallEdgeIn(call, c, _) or + FwdTypeFlowInput::dataFlowTakenCallEdgeOut(call, c) + ) and + FwdTypeFlow::typeFlowStats(tfnodes, tftuples) + or + fwd = false and + nodes = count(NodeEx node | revFlow(any(Nd n | n.getNodeEx() = node), _, _, _)) and + fields = count(Content f0 | consCand(f0, _)) and + conscand = count(Content f0, Ap ap | consCand(f0, ap)) and + states = count(FlowState state | revFlow(any(Nd n | n.getState() = state), _, _, _)) and + tuples = + count(Nd n, ReturnCtx returnCtx, ApOption retAp, Ap ap | + revFlow(n, returnCtx, retAp, ap) + ) and + calledges = + count(Call call, Callable c | + RevTypeFlowInput::dataFlowTakenCallEdgeIn(call, c, _) or + RevTypeFlowInput::dataFlowTakenCallEdgeOut(call, c) + ) and + RevTypeFlow::typeFlowStats(tfnodes, tftuples) + } + + private int fanOut(PathNodeImpl n) { + result = strictcount(n.getASuccessorImpl(_)) and + not n.isArbitrarySource() + } + + private int fanIn(PathNodeImpl n) { + result = strictcount(PathNodeImpl pred | n = pred.getASuccessorImpl(_)) and + not n.isArbitrarySink() + } + + predicate maxFanOut(PathNodeImpl pred, PathNodeImpl succ, int c) { + c = fanOut(pred) and + c = max(fanOut(_)) and + succ = pred.getASuccessorImpl(_) + } + + predicate maxFanIn(PathNodeImpl pred, PathNodeImpl succ, int c) { + c = fanIn(succ) and + c = max(fanIn(_)) and + succ = pred.getASuccessorImpl(_) + } + + private int pathNodes(Nd node) { + result = + strictcount(Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored | + exists(TPathNodeMid(node, cc, summaryCtx, t, ap, stored)) + ) + } + + predicate maxPathNodes( + Nd node, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored, int c + ) { + exists(TPathNodeMid(node, cc, summaryCtx, t, ap, stored)) and + c = pathNodes(node) and + c = max(pathNodes(_)) + } } /* End: Stage logic. */ } @@ -3520,13 +3563,21 @@ module MakeImpl Lang> { or stage = "2 Fwd" and n = 20 and - Stage2::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage2::Debug::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) or stage = "2 Rev" and n = 25 and - Stage2::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage2::Debug::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) } + predicate stage2maxFanOut = Stage2::Debug::maxFanOut/3; + + predicate stage2maxFanIn = Stage2::Debug::maxFanIn/3; + + predicate stage2maxPathNodes = Stage2::Debug::maxPathNodes/7; + predicate stageStats3( int n, string stage, int nodes, int fields, int conscand, int states, int tuples, int calledges, int tfnodes, int tftuples @@ -3535,13 +3586,21 @@ module MakeImpl Lang> { or stage = "3 Fwd" and n = 30 and - Stage3::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage3::Debug::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) or stage = "3 Rev" and n = 35 and - Stage3::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage3::Debug::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) } + predicate stage3maxFanOut = Stage3::Debug::maxFanOut/3; + + predicate stage3maxFanIn = Stage3::Debug::maxFanIn/3; + + predicate stage3maxPathNodes = Stage3::Debug::maxPathNodes/7; + predicate stageStats4( int n, string stage, int nodes, int fields, int conscand, int states, int tuples, int calledges, int tfnodes, int tftuples @@ -3550,13 +3609,21 @@ module MakeImpl Lang> { or stage = "4 Fwd" and n = 40 and - Stage4::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage4::Debug::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) or stage = "4 Rev" and n = 45 and - Stage4::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage4::Debug::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) } + predicate stage4maxFanOut = Stage4::Debug::maxFanOut/3; + + predicate stage4maxFanIn = Stage4::Debug::maxFanIn/3; + + predicate stage4maxPathNodes = Stage4::Debug::maxPathNodes/7; + predicate stageStats5( int n, string stage, int nodes, int fields, int conscand, int states, int tuples, int calledges, int tfnodes, int tftuples @@ -3565,13 +3632,21 @@ module MakeImpl Lang> { or stage = "5 Fwd" and n = 50 and - Stage5::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage5::Debug::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) or stage = "5 Rev" and n = 55 and - Stage5::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage5::Debug::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) } + predicate stage5maxFanOut = Stage5::Debug::maxFanOut/3; + + predicate stage5maxFanIn = Stage5::Debug::maxFanIn/3; + + predicate stage5maxPathNodes = Stage5::Debug::maxPathNodes/7; + predicate stageStats( int n, string stage, int nodes, int fields, int conscand, int states, int tuples, int calledges, int tfnodes, int tftuples @@ -3580,12 +3655,20 @@ module MakeImpl Lang> { or stage = "6 Fwd" and n = 60 and - Stage6::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage6::Debug::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) or stage = "6 Rev" and n = 65 and - Stage6::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) + Stage6::Debug::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, + tftuples) } + + predicate stage6maxFanOut = Stage6::Debug::maxFanOut/3; + + predicate stage6maxFanIn = Stage6::Debug::maxFanIn/3; + + predicate stage6maxPathNodes = Stage6::Debug::maxPathNodes/7; } } } From be626bf0ce484635e51cc9e456662c8b7d61f9bd Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 20 Oct 2025 14:02:43 +0200 Subject: [PATCH 203/965] SSA: Address some review comments. --- shared/ssa/codeql/ssa/Ssa.qll | 90 ++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 16 deletions(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 562560c22f0..6321e1b8d75 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -201,12 +201,40 @@ signature module SsaSig< * An SSA phi definition, that is, a pseudo definition for a variable at a * point in the flow graph where otherwise two or more definitions for the * variable would be visible. + * + * For example, in + * ```rb + * if b + * x = 0 + * else + * x = 1 + * end + * puts x + * ``` + * a phi definition for `x` is inserted just before the call `puts x`. */ class SsaPhiDefinition extends SsaDefinition { - /** Holds if `inp` is an input to the phi definition along the edge originating in `bb`. */ + /** Holds if `inp` is an input to this phi definition along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb); - /** Gets an input of this phi definition. */ + /** + * Gets an input of this phi definition. + * + * Example: + * + * ```rb + * def m b + * i = 0 # defines i_0 + * if b + * i = 1 # defines i_1 + * else + * i = 2 # defines i_2 + * end + * # defines i_3 = phi(i_1, i_2); inputs are i_1 and i_2 + * puts i + * end + * ``` + */ SsaDefinition getAnInput(); } } @@ -1516,7 +1544,7 @@ module Make< */ Expr getValue(); - /** Holds if this write is an initialization of a parameter. */ + /** Holds if this write is an initialization of parameter `p`. */ predicate isParameterInit(Parameter p); /** Gets a textual representation of this write. */ @@ -1588,6 +1616,19 @@ module Make< predicate uncertainWriteDefinitionInputCached(UncertainWriteDefinition def, Definition inp) { uncertainWriteDefinitionInput(def, inp) } + + cached + predicate explicitWrite(WriteDefinition def, VariableWrite write) { + exists(BasicBlock bb, int i, SourceVariable v | + def.definesAt(v, bb, i) and + explicitWrite(write, bb, i, v) + ) + } + + cached + predicate parameterInit(WriteDefinition def, Parameter p) { + exists(VariableWrite write | explicitWrite(def, write) and write.isParameterInit(p)) + } } additional predicate ssaDefReachesUncertainRead = Cached::ssaDefReachesUncertainRead/4; @@ -1658,13 +1699,6 @@ module Make< */ class SsaWriteDefinition extends SsaDefinition instanceof WriteDefinition { } - private predicate explicitWrite(WriteDefinition def, VariableWrite write) { - exists(BasicBlock bb, int i, SourceVariable v | - def.definesAt(v, bb, i) and - explicitWrite(write, bb, i, v) - ) - } - /** * An SSA definition that corresponds to an explicit variable update or * declaration. @@ -1688,10 +1722,6 @@ module Make< Expr getValue() { result = this.getDefinition().getValue() } } - private predicate parameterInit(WriteDefinition def, Parameter p) { - exists(VariableWrite write | explicitWrite(def, write) and write.isParameterInit(p)) - } - /** * An SSA definition representing the initialization of a parameter at the * beginning of a callable. @@ -1743,14 +1773,42 @@ module Make< * An SSA phi definition, that is, a pseudo definition for a variable at a * point in the flow graph where otherwise two or more definitions for the * variable would be visible. + * + * For example, in + * ```rb + * if b + * x = 0 + * else + * x = 1 + * end + * puts x + * ``` + * a phi definition for `x` is inserted just before the call `puts x`. */ class SsaPhiDefinition extends SsaDefinition { - /** Holds if `inp` is an input to the phi definition along the edge originating in `bb`. */ + /** Holds if `inp` is an input to this phi definition along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { phiHasInputFromBlockCached(this, inp, bb) } - /** Gets an input of this phi definition. */ + /** + * Gets an input of this phi definition. + * + * Example: + * + * ```rb + * def m b + * i = 0 # defines i_0 + * if b + * i = 1 # defines i_1 + * else + * i = 2 # defines i_2 + * end + * # defines i_3 = phi(i_1, i_2); inputs are i_1 and i_2 + * puts i + * end + * ``` + */ SsaDefinition getAnInput() { this.hasInputFromBlock(result, _) } } } From aeee30b0c6b67a8a60e42a7310ab3d12a054c9f6 Mon Sep 17 00:00:00 2001 From: Florin Coada Date: Mon, 20 Oct 2025 14:17:40 +0100 Subject: [PATCH 204/965] Add changelog entry for CodeQL CLI version 2.23.3 --- .../codeql-changelog/codeql-cli-2.23.3.rst | 136 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 2 files changed, 137 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst new file mode 100644 index 00000000000..96578f816f8 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst @@ -0,0 +1,136 @@ +.. _codeql-cli-2.23.3: + +========================== +CodeQL 2.23.3 (2025-10-17) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.3 runs a total of 480 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 1 security query has been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* The :code:`--permissive` command line option has been removed from the C/C++ extractor, + and passing the option will make the extractor fail. The option was introduced to make the extractor accept the following invalid code, which is accepted by gcc with the :code:`-fpermissive` flag: + + .. code-block:: cpp + + void f(char*); + void g() { + const char* str = "string"; + f(str); + } + + The :code:`--permissive` option was removed, as under some circumstances it would break the extractor's ability to parse valid C++ code. When calling the extractor directly, + :code:`--permissive` should no longer be passed. The above code will fail to parse, and we recommend the code being made :code:`const`\ -correct. + +Bug Fixes +~~~~~~~~~ + +* Fixed a bug that made many :code:`codeql` subcommands fail with the message :code:`not in while, until, select, or repeat loop` on Linux or macOS systems where :code:`/bin/sh` is :code:`zsh`. + +Query Packs +----------- + +New Queries +~~~~~~~~~~~ + +Rust +"""" + +* Added a new query, :code:`rust/insecure-cookie`, to detect cookies created without the 'Secure' attribute. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Python +"""""" + +* The Python extractor no longer crashes with an :code:`ImportError` when run using Python 3.14. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The "Guards" libraries (:code:`semmle.code.cpp.controlflow.Guards` and :code:`semmle.code.cpp.controlflow.IRGuards`) have been totally rewritten to recognize many more guards. The API remains unchanged, but the :code:`GuardCondition` class now extends :code:`Element` instead of :code:`Expr`. + +Golang +"""""" + +* The member predicate :code:`writesField` on :code:`DataFlow::Write` now uses the post-update node for :code:`base` when that is the node being updated, which is in all cases except initializing a struct literal. A new member predicate :code:`writesFieldPreUpdate` has been added for cases where this behaviour is not desired. +* The member predicate :code:`writesElement` on :code:`DataFlow::Write` now uses the post-update node for :code:`base` when that is the node being updated, which is in all cases except initializing an array/slice/map literal. A new member predicate :code:`writesElementPreUpdate` has been added for cases where this behaviour is not desired. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Golang +"""""" + +* The shape of the Go data-flow graph has changed. Previously for code like :code:`x := def(); use1(x); use2(x)`, there would be edges from the definition of :code:`x` to each use. Now there is an edge from the definition to the first use, then another from the first use to the second, and so on. This means that data-flow barriers work differently - flow will not reach any uses after the barrier node. Where this is not desired it may be necessary to add an additional flow step to propagate the flow forward. Additionally, when a variable may be subject to a side-effect, such as updating an array, passing a pointer to a function that might write through it or writing to a field of a struct, there is now a dedicated post-update node representing the variable after this side-effect has taken place. Previously post-update nodes were aliases for either a variable's definition, or were equal to the pre-update node. This led to backwards steps in the data-flow graph, which could cause false positives. For example, in the previous code there would be an edge from :code:`x` in :code:`use2(x)` back to the definition of :code:`x`. If we define our sources as any argument of :code:`use2` and our sinks as any argument of :code:`use1` then this would lead to a false positive path. Now there are distinct post-update nodes and no backwards edge to the definition, so we will not find this false positive path. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The extraction of location information for parameters, fields, constructors, destructors and user operators has been optimized. Previously, location information was extracted multiple times for each bound generic. Now, only the location of the unbound generic declaration is extracted during the extraction phase, and the QL library explicitly reuses this location for all bound instances of the same generic. +* The extraction of location information for type parameters and tuples types has been optimized. Previously, location information was extracted multiple times for each type when it was declared across multiple files. Now, the extraction context is respected during the extraction phase, ensuring locations are only extracted within the appropriate context. This change should be transparent to end-users but may improve extraction performance in some cases. +* The extraction of location information for named types (classes, structs, etc.) has been optimized. Previously, location information was extracted multiple times for each type when it was declared across multiple files. Now, the extraction context is respected during the extraction phase, ensuring locations are only extracted within the appropriate context. This change should be transparent to end-users but may improve extraction performance in some cases. +* The extraction of the location for bound generic entities (methods, accessors, indexers, properties, and events) has been optimized. Previously, location information was extracted multiple times for each bound generic. Now, only the location of the unbound generic declaration is extracted during the extraction phase, and the QL library explicitly reuses this location for all bound instances of the same generic. + +Golang +"""""" + +* The query :code:`go/request-forgery` will no longer report alerts when the user input is of a simple type, like a number or a boolean. +* For the query :code:`go/unvalidated-url-redirection`, when untrusted data is assigned to the :code:`Host` field of a :code:`url.URL` struct, we consider the whole struct untrusted. We now also include the case when this happens during struct initialization, for example :code:`&url.URL{Host: untrustedData}`. +* :code:`go/unvalidated-url-redirection` and :code:`go/request-forgery` have a shared notion of a safe URL, which is known to not be malicious. Some URLs which were incorrectly considered safe are now correctly considered unsafe. This may lead to more alerts for those two queries. + +Java/Kotlin +""""""""""" + +* Fields of certain objects are considered tainted if the object is tainted. This holds, for example, for objects that occur directly as sources in the active threat model (for instance, a remote flow source). This has now been amended to also include array types, such that if an array like :code:`MyPojo[]` is a source, then fields of a tainted :code:`MyPojo` are now also considered tainted. + +Rust +"""" + +* Improve data flow through functions being passed as function pointers. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +Golang +"""""" + +* The class :code:`SqlInjection::NumericOrBooleanSanitizer` has been deprecated. Use :code:`SimpleTypeSanitizer` from :code:`semmle.go.security.Sanitizers` instead. +* The member predicate :code:`writesComponent` on :code:`DataFlow::Write` has been deprecated. Instead, use :code:`writesFieldPreUpdate` and :code:`writesElementPreUpdate`, or their new versions :code:`writesField` and :code:`writesElement`. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* C/C++ :code:`build-mode: none` support is now generally available. + +Rust +"""" + +* Rust analysis is now Generally Available (GA). diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 48d9badc765..4b3e1f5bb98 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here Date: Mon, 20 Oct 2025 14:20:17 +0100 Subject: [PATCH 205/965] Update codeql-cli-2.23.3.rst --- .../codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst index 96578f816f8..8abbc879c3e 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.3.rst @@ -9,7 +9,7 @@ CodeQL 2.23.3 (2025-10-17) :local: :backlinks: none -This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. Security Coverage ----------------- From 354effe82944d5d8362d7d7691430f69c3e46c75 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 20 Oct 2025 15:24:18 -0400 Subject: [PATCH 206/965] Crypto: Missing hash algorithms for HMAC operations in jca. --- java/ql/lib/experimental/quantum/JCA.qll | 75 ++++++- .../library-tests/quantum/node_edges.expected | 183 ++++++++++-------- .../quantum/node_properties.expected | 154 ++++++++++----- .../library-tests/quantum/nodes.expected | 66 ++++--- 4 files changed, 322 insertions(+), 156 deletions(-) diff --git a/java/ql/lib/experimental/quantum/JCA.qll b/java/ql/lib/experimental/quantum/JCA.qll index 29820aa95cd..c0ddd1ae7fa 100644 --- a/java/ql/lib/experimental/quantum/JCA.qll +++ b/java/ql/lib/experimental/quantum/JCA.qll @@ -20,6 +20,8 @@ module JCAModel { abstract class SignatureAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { } + abstract class MacAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { } + // TODO: Verify that the PBEWith% case works correctly bindingset[algo] predicate cipher_names(string algo) { @@ -85,7 +87,7 @@ module JCAModel { name.toUpperCase() .matches([ "HMAC%", "AESCMAC", "DESCMAC", "GMAC", "Poly1305", "SipHash", "BLAKE2BMAC", - "HMACRIPEMD160" + "HMACRIPEMD160", "%CMAC" ].toUpperCase()) } @@ -128,6 +130,10 @@ module JCAModel { result instanceof Crypto::SHA2 and digestLength = name.replaceAll("-", "").splitAt("SHA", 1).toInt() or + name in ["SHA-512/224", "SHA-512/256", "SHA512/224", "SHA512/256"] and + result instanceof Crypto::SHA2 and + digestLength = name.replaceAll("-", "").splitAt("SHA-512/", 1).toInt() + or name in ["SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", "SHA3256", "SHA3384", "SHA3512"] and result instanceof Crypto::SHA3 and digestLength = name.replaceAll("-", "").splitAt("SHA3", 1).toInt() @@ -1580,7 +1586,7 @@ module JCAModel { if super.getValue().toUpperCase().matches("HMAC%") then result = KeyOpAlg::TMac(KeyOpAlg::HMAC()) else - if super.getValue().toUpperCase().matches("CMAC%") + if super.getValue().toUpperCase().matches("%CMAC%") then result = KeyOpAlg::TMac(KeyOpAlg::CMAC()) else result = KeyOpAlg::TMac(KeyOpAlg::OtherMacAlgorithmType()) } @@ -1600,6 +1606,54 @@ module JCAModel { override Crypto::PaddingAlgorithmInstance getPaddingAlgorithm() { none() } } + class KnownHmacAlgorithmInstance extends Crypto::HmacAlgorithmInstance instanceof KnownMacAlgorithm + { + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + result = this.(KnownMacAlgorithm).getConsumer() + } + + override int getKeySizeFixed() { + // already defined by parent key operation algorithm, but extending an instance + // still requires we override this method + result = super.getKeySizeFixed() + } + + override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { + // already defined by parent key operation algorithm, but extending an instance + // still requires we override this method + result = super.getKeySizeConsumer() + } + + override string getRawAlgorithmName() { + // already defined by parent key operation algorithm, but extending an instance + // still requires we override this method + result = super.getRawAlgorithmName() + } + + override Crypto::KeyOpAlg::AlgorithmType getAlgorithmType() { + result = KeyOpAlg::TMac(KeyOpAlg::HMAC()) + } + } + + class KnownMacHashAlgorithm extends Crypto::HashAlgorithmInstance instanceof KnownMacAlgorithm, + JavaConstant + { + Crypto::THashType hashType; + int digestLength; + + KnownMacHashAlgorithm() { + super.getValue().toUpperCase().matches("HMAC%") and + hashType = + hash_name_to_type_known(super.getValue().toUpperCase().splitAt("HMAC", 1), digestLength) + } + + override string getRawHashAlgorithmName() { result = super.getValue() } + + override Crypto::THashType getHashType() { result = hashType } + + override int getFixedDigestLength() { result = digestLength } + } + class MacGetInstanceCall extends MethodCall { MacGetInstanceCall() { this.getCallee().hasQualifiedName("javax.crypto", "Mac", "getInstance") } @@ -1629,7 +1683,9 @@ module JCAModel { } } - class MacGetInstanceAlgorithmValueConsumer extends Crypto::AlgorithmValueConsumer { + class MacGetInstanceAlgorithmValueConsumer extends MacAlgorithmValueConsumer, + HashAlgorithmValueConsumer + { MacGetInstanceAlgorithmValueConsumer() { this = any(MacGetInstanceCall c).getAlgorithmArg() } override Crypto::ConsumerInputDataFlowNode getInputNode() { result.asExpr() = this } @@ -1696,9 +1752,18 @@ module JCAModel { MacFlowAnalysisImpl::getAnIntermediateUseFromFinalUse(this, _, _).getOutput() } - override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { none() } + override Crypto::AlgorithmValueConsumer getHashAlgorithmValueConsumer() { + result = this.getInstantiationCall().getAlgorithmArg() + } - override predicate hasHashAlgorithmConsumer() { none() } + override predicate hasHashAlgorithmConsumer() { + // TODO: do we consider that these operations have no hash and that it is only associated to the mac algorithm node? + // in JCA that seems to be correct, but would removing the hash consumer here break things generally? + this.getHashAlgorithmValueConsumer() + .getAKnownAlgorithmSource() + .(Crypto::KeyOperationAlgorithmInstance) + .getAlgorithmType() = KeyOpAlg::TMac(KeyOpAlg::HMAC()) + } override Crypto::KeyOperationSubtype getKeyOperationSubtype() { result instanceof Crypto::TMacMode diff --git a/java/ql/test/experimental/library-tests/quantum/node_edges.expected b/java/ql/test/experimental/library-tests/quantum/node_edges.expected index 7407dcaff08..905304ac771 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_edges.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_edges.expected @@ -153,11 +153,10 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | EncryptOperation | Nonce | jca/AsymmetricEncryptionMacHybridCryptosystem.java:245:50:245:83 | Nonce | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | EncryptOperation | Output | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:44:246:52 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | Parameter | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HMACAlgorithm | H | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | Key | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HMACAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Key | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | Message | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | @@ -167,11 +166,10 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:174:29:174:56 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:220:38:220:39 | RandomNumberGeneration | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:223:29:223:53 | KeyOperationOutput | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | Mode | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | Padding | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HMACAlgorithm | H | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | Source | jca/AsymmetricEncryptionMacHybridCryptosystem.java:322:16:322:31 | Key | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Algorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HMACAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | HashAlgorithm | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Input | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Key | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | Message | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:28:309:45 | Message | @@ -307,11 +305,10 @@ | jca/Digest.java:109:23:109:57 | HashOperation | Digest | jca/Digest.java:109:23:109:57 | Digest | | jca/Digest.java:109:23:109:57 | HashOperation | Message | jca/Digest.java:109:41:109:56 | Message | | jca/Digest.java:109:41:109:56 | Message | Source | jca/Digest.java:107:40:107:51 | Parameter | -| jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | Mode | jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | -| jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | Padding | jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | +| jca/Digest.java:118:36:118:47 | HMACAlgorithm | H | jca/Digest.java:118:36:118:47 | HashAlgorithm | | jca/Digest.java:120:19:120:27 | Key | Source | jca/Digest.java:117:49:117:58 | Parameter | -| jca/Digest.java:121:23:121:52 | MACOperation | Algorithm | jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | -| jca/Digest.java:121:23:121:52 | MACOperation | HashAlgorithm | jca/Digest.java:121:23:121:52 | MACOperation | +| jca/Digest.java:121:23:121:52 | MACOperation | Algorithm | jca/Digest.java:118:36:118:47 | HMACAlgorithm | +| jca/Digest.java:121:23:121:52 | MACOperation | HashAlgorithm | jca/Digest.java:118:36:118:47 | HashAlgorithm | | jca/Digest.java:121:23:121:52 | MACOperation | Input | jca/Digest.java:121:36:121:51 | Message | | jca/Digest.java:121:23:121:52 | MACOperation | Key | jca/Digest.java:120:19:120:27 | Key | | jca/Digest.java:121:23:121:52 | MACOperation | Message | jca/Digest.java:121:36:121:51 | Message | @@ -350,11 +347,10 @@ | jca/Digest.java:188:29:188:78 | EncryptOperation | Nonce | jca/Digest.java:188:29:188:78 | EncryptOperation | | jca/Digest.java:188:29:188:78 | EncryptOperation | Output | jca/Digest.java:188:29:188:78 | KeyOperationOutput | | jca/Digest.java:188:44:188:77 | Message | Source | jca/Digest.java:188:44:188:66 | Constant | -| jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | Mode | jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | -| jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | Padding | jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | +| jca/Digest.java:191:35:191:46 | HMACAlgorithm | H | jca/Digest.java:191:35:191:46 | HashAlgorithm | | jca/Digest.java:192:18:192:23 | Key | Source | jca/Digest.java:192:18:192:23 | Key | -| jca/Digest.java:193:30:193:52 | MACOperation | Algorithm | jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | -| jca/Digest.java:193:30:193:52 | MACOperation | HashAlgorithm | jca/Digest.java:193:30:193:52 | MACOperation | +| jca/Digest.java:193:30:193:52 | MACOperation | Algorithm | jca/Digest.java:191:35:191:46 | HMACAlgorithm | +| jca/Digest.java:193:30:193:52 | MACOperation | HashAlgorithm | jca/Digest.java:191:35:191:46 | HashAlgorithm | | jca/Digest.java:193:30:193:52 | MACOperation | Input | jca/Digest.java:193:42:193:51 | Message | | jca/Digest.java:193:30:193:52 | MACOperation | Key | jca/Digest.java:192:18:192:23 | Key | | jca/Digest.java:193:30:193:52 | MACOperation | Message | jca/Digest.java:193:42:193:51 | Message | @@ -606,11 +602,10 @@ | jca/Encryption2.java:150:32:150:98 | EncryptOperation | Nonce | jca/Encryption2.java:149:53:149:59 | Nonce | | jca/Encryption2.java:150:32:150:98 | EncryptOperation | Output | jca/Encryption2.java:150:32:150:98 | KeyOperationOutput | | jca/Encryption2.java:150:50:150:97 | Message | Source | jca/Encryption2.java:150:50:150:86 | Constant | -| jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | Mode | jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | -| jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | Padding | jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | +| jca/Encryption2.java:173:36:173:47 | HMACAlgorithm | H | jca/Encryption2.java:173:36:173:47 | HashAlgorithm | | jca/Encryption2.java:175:19:175:27 | Key | Source | jca/Encryption2.java:132:68:132:88 | Parameter | -| jca/Encryption2.java:176:31:176:52 | MACOperation | Algorithm | jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | -| jca/Encryption2.java:176:31:176:52 | MACOperation | HashAlgorithm | jca/Encryption2.java:176:31:176:52 | MACOperation | +| jca/Encryption2.java:176:31:176:52 | MACOperation | Algorithm | jca/Encryption2.java:173:36:173:47 | HMACAlgorithm | +| jca/Encryption2.java:176:31:176:52 | MACOperation | HashAlgorithm | jca/Encryption2.java:173:36:173:47 | HashAlgorithm | | jca/Encryption2.java:176:31:176:52 | MACOperation | Input | jca/Encryption2.java:176:44:176:51 | Message | | jca/Encryption2.java:176:31:176:52 | MACOperation | Key | jca/Encryption2.java:175:19:175:27 | Key | | jca/Encryption2.java:176:31:176:52 | MACOperation | Message | jca/Encryption2.java:176:44:176:51 | Message | @@ -665,27 +660,56 @@ | jca/Hash.java:195:27:195:57 | HashOperation | Digest | jca/Hash.java:195:27:195:57 | Digest | | jca/Hash.java:195:27:195:57 | HashOperation | Message | jca/Hash.java:195:41:195:56 | Message | | jca/Hash.java:195:41:195:56 | Message | Source | jca/Hash.java:190:43:190:54 | Parameter | -| jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | -| jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | -| jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | -| jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | -| jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | -| jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | -| jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | -| jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | -| jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | -| jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | -| jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | Mode | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | -| jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | Padding | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | H | jca/Hash.java:212:102:212:115 | HashAlgorithm | | jca/Hash.java:216:22:216:30 | Key | Source | jca/Hash.java:211:57:211:66 | Parameter | | jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:31:212:116 | Constant | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | -| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:217:27:217:55 | MACOperation | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:32:212:41 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:44:212:55 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:58:212:69 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:72:212:83 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:86:212:99 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | Algorithm | jca/Hash.java:212:102:212:115 | HMACAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:217:27:217:55 | MACOperation | HashAlgorithm | jca/Hash.java:212:102:212:115 | HashAlgorithm | | jca/Hash.java:217:27:217:55 | MACOperation | Input | jca/Hash.java:217:39:217:54 | Message | | jca/Hash.java:217:27:217:55 | MACOperation | Key | jca/Hash.java:216:22:216:30 | Key | | jca/Hash.java:217:27:217:55 | MACOperation | Message | jca/Hash.java:217:39:217:54 | Message | @@ -889,11 +913,10 @@ | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | Nonce | jca/KeyAgreementHybridCryptosystem.java:227:57:227:63 | Nonce | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | Output | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | KeyOperationOutput | | jca/KeyAgreementHybridCryptosystem.java:228:44:228:52 | Message | Source | jca/KeyAgreementHybridCryptosystem.java:212:73:212:88 | Parameter | -| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | Mode | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | Padding | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HMACAlgorithm | H | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | Key | Source | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | Key | -| jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | -| jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | HashAlgorithm | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | +| jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | Algorithm | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HMACAlgorithm | +| jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | HashAlgorithm | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | Input | jca/KeyAgreementHybridCryptosystem.java:232:42:232:51 | Message | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | Key | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | Key | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | Message | jca/KeyAgreementHybridCryptosystem.java:232:42:232:51 | Message | @@ -1012,12 +1035,11 @@ | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | Input | jca/KeyDerivation1.java:333:42:333:63 | Message | | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | Output | jca/KeyDerivation1.java:335:16:335:43 | Key | | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | Salt | jca/KeyDerivation1.java:333:66:333:69 | Salt | -| jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | Mode | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | -| jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | Padding | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | +| jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | H | jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | | jca/KeyDerivation1.java:347:19:347:27 | Key | Source | jca/KeyDerivation1.java:335:16:335:43 | Key | | jca/KeyDerivation1.java:347:19:347:27 | Key | Source | jca/KeyDerivation1.java:365:38:365:41 | RandomNumberGeneration | -| jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | -| jca/KeyDerivation1.java:348:22:348:38 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | +| jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | +| jca/KeyDerivation1.java:348:22:348:38 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Input | jca/KeyDerivation1.java:348:35:348:37 | Message | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Key | jca/KeyDerivation1.java:347:19:347:27 | Key | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | Message | jca/KeyDerivation1.java:348:35:348:37 | Message | @@ -1026,8 +1048,8 @@ | jca/KeyDerivation1.java:348:35:348:37 | Message | Source | jca/KeyDerivation1.java:269:32:269:41 | Parameter | | jca/KeyDerivation1.java:348:35:348:37 | Message | Source | jca/KeyDerivation1.java:283:60:283:78 | Parameter | | jca/KeyDerivation1.java:352:19:352:54 | Key | Source | jca/KeyDerivation1.java:348:22:348:38 | KeyOperationOutput | -| jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | -| jca/KeyDerivation1.java:353:22:353:62 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | +| jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Algorithm | jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | +| jca/KeyDerivation1.java:353:22:353:62 | MACOperation | HashAlgorithm | jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Input | jca/KeyDerivation1.java:353:35:353:61 | Message | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Key | jca/KeyDerivation1.java:347:19:347:27 | Key | | jca/KeyDerivation1.java:353:22:353:62 | MACOperation | Key | jca/KeyDerivation1.java:352:19:352:54 | Key | @@ -1158,22 +1180,20 @@ | jca/KeyExchange.java:213:16:213:34 | KeyAgreementOperation | PeerKey | jca/KeyExchange.java:212:20:212:28 | Key | | jca/KeyExchange.java:213:16:213:34 | KeyAgreementOperation | ServerKey | jca/KeyExchange.java:211:17:211:26 | Key | | jca/KeyExchange.java:213:16:213:34 | SharedSecret | Source | jca/KeyExchange.java:213:16:213:34 | SharedSecret | -| jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | Mode | jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | -| jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | Padding | jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | +| jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | H | jca/MACOperation.java:60:35:60:46 | HashAlgorithm | | jca/MACOperation.java:62:18:62:26 | Key | Source | jca/MACOperation.java:59:52:59:61 | Parameter | -| jca/MACOperation.java:63:16:63:46 | MACOperation | Algorithm | jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | -| jca/MACOperation.java:63:16:63:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:63:16:63:46 | MACOperation | +| jca/MACOperation.java:63:16:63:46 | MACOperation | Algorithm | jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | +| jca/MACOperation.java:63:16:63:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:60:35:60:46 | HashAlgorithm | | jca/MACOperation.java:63:16:63:46 | MACOperation | Input | jca/MACOperation.java:63:28:63:45 | Message | | jca/MACOperation.java:63:16:63:46 | MACOperation | Key | jca/MACOperation.java:62:18:62:26 | Key | | jca/MACOperation.java:63:16:63:46 | MACOperation | Message | jca/MACOperation.java:63:28:63:45 | Message | | jca/MACOperation.java:63:16:63:46 | MACOperation | Nonce | jca/MACOperation.java:63:16:63:46 | MACOperation | | jca/MACOperation.java:63:16:63:46 | MACOperation | Output | jca/MACOperation.java:63:16:63:46 | KeyOperationOutput | | jca/MACOperation.java:63:28:63:45 | Message | Source | jca/MACOperation.java:59:36:59:49 | Parameter | -| jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | Mode | jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | -| jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | Padding | jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | +| jca/MACOperation.java:71:35:71:48 | HMACAlgorithm | H | jca/MACOperation.java:71:35:71:48 | HashAlgorithm | | jca/MACOperation.java:73:18:73:26 | Key | Source | jca/MACOperation.java:70:50:70:59 | Parameter | -| jca/MACOperation.java:74:16:74:46 | MACOperation | Algorithm | jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | -| jca/MACOperation.java:74:16:74:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:74:16:74:46 | MACOperation | +| jca/MACOperation.java:74:16:74:46 | MACOperation | Algorithm | jca/MACOperation.java:71:35:71:48 | HMACAlgorithm | +| jca/MACOperation.java:74:16:74:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:71:35:71:48 | HashAlgorithm | | jca/MACOperation.java:74:16:74:46 | MACOperation | Input | jca/MACOperation.java:74:28:74:45 | Message | | jca/MACOperation.java:74:16:74:46 | MACOperation | Key | jca/MACOperation.java:73:18:73:26 | Key | | jca/MACOperation.java:74:16:74:46 | MACOperation | Message | jca/MACOperation.java:74:28:74:45 | Message | @@ -1211,11 +1231,10 @@ | jca/MACOperation.java:110:16:110:46 | MACOperation | Nonce | jca/MACOperation.java:110:16:110:46 | MACOperation | | jca/MACOperation.java:110:16:110:46 | MACOperation | Output | jca/MACOperation.java:110:16:110:46 | KeyOperationOutput | | jca/MACOperation.java:110:28:110:45 | Message | Source | jca/MACOperation.java:106:30:106:43 | Parameter | -| jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | Mode | jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | -| jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | Padding | jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | +| jca/MACOperation.java:118:35:118:44 | HMACAlgorithm | H | jca/MACOperation.java:118:35:118:44 | HashAlgorithm | | jca/MACOperation.java:120:18:120:26 | Key | Source | jca/MACOperation.java:117:52:117:61 | Parameter | -| jca/MACOperation.java:121:16:121:46 | MACOperation | Algorithm | jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | -| jca/MACOperation.java:121:16:121:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:121:16:121:46 | MACOperation | +| jca/MACOperation.java:121:16:121:46 | MACOperation | Algorithm | jca/MACOperation.java:118:35:118:44 | HMACAlgorithm | +| jca/MACOperation.java:121:16:121:46 | MACOperation | HashAlgorithm | jca/MACOperation.java:118:35:118:44 | HashAlgorithm | | jca/MACOperation.java:121:16:121:46 | MACOperation | Input | jca/MACOperation.java:121:28:121:45 | Message | | jca/MACOperation.java:121:16:121:46 | MACOperation | Key | jca/MACOperation.java:120:18:120:26 | Key | | jca/MACOperation.java:121:16:121:46 | MACOperation | Message | jca/MACOperation.java:121:28:121:45 | Message | @@ -1248,11 +1267,10 @@ | jca/MACOperation.java:182:29:182:78 | EncryptOperation | Nonce | jca/MACOperation.java:182:29:182:78 | EncryptOperation | | jca/MACOperation.java:182:29:182:78 | EncryptOperation | Output | jca/MACOperation.java:182:29:182:78 | KeyOperationOutput | | jca/MACOperation.java:182:44:182:77 | Message | Source | jca/MACOperation.java:182:44:182:66 | Constant | -| jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | Mode | jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | -| jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | Padding | jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | +| jca/MACOperation.java:185:35:185:46 | HMACAlgorithm | H | jca/MACOperation.java:185:35:185:46 | HashAlgorithm | | jca/MACOperation.java:186:18:186:30 | Key | Source | jca/MACOperation.java:186:18:186:30 | Key | -| jca/MACOperation.java:187:30:187:52 | MACOperation | Algorithm | jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | -| jca/MACOperation.java:187:30:187:52 | MACOperation | HashAlgorithm | jca/MACOperation.java:187:30:187:52 | MACOperation | +| jca/MACOperation.java:187:30:187:52 | MACOperation | Algorithm | jca/MACOperation.java:185:35:185:46 | HMACAlgorithm | +| jca/MACOperation.java:187:30:187:52 | MACOperation | HashAlgorithm | jca/MACOperation.java:185:35:185:46 | HashAlgorithm | | jca/MACOperation.java:187:30:187:52 | MACOperation | Input | jca/MACOperation.java:187:42:187:51 | Message | | jca/MACOperation.java:187:30:187:52 | MACOperation | Key | jca/MACOperation.java:186:18:186:30 | Key | | jca/MACOperation.java:187:30:187:52 | MACOperation | Message | jca/MACOperation.java:187:42:187:51 | Message | @@ -1270,12 +1288,11 @@ | jca/MACOperation.java:219:47:219:50 | Message | Source | jca/MACOperation.java:150:36:150:51 | Parameter | | jca/MACOperation.java:234:16:234:35 | KeyGeneration | Algorithm | jca/MACOperation.java:232:56:232:60 | KeyOperationAlgorithm | | jca/MACOperation.java:234:16:234:35 | KeyGeneration | Output | jca/MACOperation.java:234:16:234:35 | Key | -| jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Mode | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | -| jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Padding | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | +| jca/Nonce.java:24:35:24:46 | HMACAlgorithm | H | jca/Nonce.java:24:35:24:46 | HashAlgorithm | | jca/Nonce.java:25:18:25:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | | jca/Nonce.java:26:20:26:24 | Message | Source | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | -| jca/Nonce.java:27:28:27:69 | MACOperation | Algorithm | jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | -| jca/Nonce.java:27:28:27:69 | MACOperation | HashAlgorithm | jca/Nonce.java:27:28:27:69 | MACOperation | +| jca/Nonce.java:27:28:27:69 | MACOperation | Algorithm | jca/Nonce.java:24:35:24:46 | HMACAlgorithm | +| jca/Nonce.java:27:28:27:69 | MACOperation | HashAlgorithm | jca/Nonce.java:24:35:24:46 | HashAlgorithm | | jca/Nonce.java:27:28:27:69 | MACOperation | Input | jca/Nonce.java:26:20:26:24 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Input | jca/Nonce.java:27:40:27:68 | Message | | jca/Nonce.java:27:28:27:69 | MACOperation | Key | jca/Nonce.java:25:18:25:20 | Key | @@ -1284,12 +1301,11 @@ | jca/Nonce.java:27:28:27:69 | MACOperation | Nonce | jca/Nonce.java:27:28:27:69 | MACOperation | | jca/Nonce.java:27:28:27:69 | MACOperation | Output | jca/Nonce.java:27:28:27:69 | KeyOperationOutput | | jca/Nonce.java:27:40:27:68 | Message | Source | jca/Nonce.java:27:40:27:57 | Constant | -| jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Mode | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | -| jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Padding | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | +| jca/Nonce.java:37:35:37:46 | HMACAlgorithm | H | jca/Nonce.java:37:35:37:46 | HashAlgorithm | | jca/Nonce.java:38:18:38:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | | jca/Nonce.java:39:20:39:24 | Message | Source | jca/Nonce.java:35:24:35:41 | Constant | -| jca/Nonce.java:40:28:40:67 | MACOperation | Algorithm | jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | -| jca/Nonce.java:40:28:40:67 | MACOperation | HashAlgorithm | jca/Nonce.java:40:28:40:67 | MACOperation | +| jca/Nonce.java:40:28:40:67 | MACOperation | Algorithm | jca/Nonce.java:37:35:37:46 | HMACAlgorithm | +| jca/Nonce.java:40:28:40:67 | MACOperation | HashAlgorithm | jca/Nonce.java:37:35:37:46 | HashAlgorithm | | jca/Nonce.java:40:28:40:67 | MACOperation | Input | jca/Nonce.java:39:20:39:24 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Input | jca/Nonce.java:40:40:40:66 | Message | | jca/Nonce.java:40:28:40:67 | MACOperation | Key | jca/Nonce.java:38:18:38:20 | Key | @@ -1318,13 +1334,12 @@ | jca/Nonce.java:63:29:63:53 | EncryptOperation | Nonce | jca/Nonce.java:62:47:62:53 | Nonce | | jca/Nonce.java:63:29:63:53 | EncryptOperation | Output | jca/Nonce.java:63:29:63:53 | KeyOperationOutput | | jca/Nonce.java:63:44:63:52 | Message | Source | jca/Nonce.java:58:52:58:67 | Parameter | -| jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | Mode | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | -| jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | Padding | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | +| jca/Nonce.java:70:53:70:64 | HMACAlgorithm | H | jca/Nonce.java:70:53:70:64 | HashAlgorithm | | jca/Nonce.java:78:18:78:20 | Key | Source | jca/Nonce.java:93:16:93:35 | Key | | jca/Nonce.java:79:20:79:24 | Message | Source | jca/Nonce.java:98:38:98:42 | RandomNumberGeneration | | jca/Nonce.java:79:20:79:24 | Message | Source | jca/Nonce.java:104:32:104:36 | RandomNumberGeneration | -| jca/Nonce.java:80:28:80:67 | MACOperation | Algorithm | jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | -| jca/Nonce.java:80:28:80:67 | MACOperation | HashAlgorithm | jca/Nonce.java:80:28:80:67 | MACOperation | +| jca/Nonce.java:80:28:80:67 | MACOperation | Algorithm | jca/Nonce.java:70:53:70:64 | HMACAlgorithm | +| jca/Nonce.java:80:28:80:67 | MACOperation | HashAlgorithm | jca/Nonce.java:70:53:70:64 | HashAlgorithm | | jca/Nonce.java:80:28:80:67 | MACOperation | Input | jca/Nonce.java:79:20:79:24 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Input | jca/Nonce.java:80:40:80:66 | Message | | jca/Nonce.java:80:28:80:67 | MACOperation | Key | jca/Nonce.java:78:18:78:20 | Key | @@ -1397,11 +1412,10 @@ | jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:94:26:94:27 | RandomNumberGeneration | | jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:97:29:97:53 | KeyOperationOutput | | jca/SignEncryptCombinations.java:113:31:113:40 | Message | Source | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | -| jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | Mode | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | -| jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | Padding | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | +| jca/SignEncryptCombinations.java:121:35:121:46 | HMACAlgorithm | H | jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | | jca/SignEncryptCombinations.java:122:18:122:20 | Key | Source | jca/SignEncryptCombinations.java:84:16:84:31 | Key | -| jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Algorithm | jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | -| jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | HashAlgorithm | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | +| jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Algorithm | jca/SignEncryptCombinations.java:121:35:121:46 | HMACAlgorithm | +| jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | HashAlgorithm | jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Input | jca/SignEncryptCombinations.java:123:28:123:31 | Message | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Key | jca/SignEncryptCombinations.java:122:18:122:20 | Key | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | Message | jca/SignEncryptCombinations.java:123:28:123:31 | Message | @@ -1667,11 +1681,10 @@ | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | Nonce | jca/SymmetricAlgorithm.java:298:50:298:78 | Nonce | | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | Output | jca/SymmetricAlgorithm.java:299:29:299:53 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:299:44:299:52 | Message | Source | jca/SymmetricAlgorithm.java:284:73:284:88 | Parameter | -| jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | Mode | jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | -| jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | Padding | jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HMACAlgorithm | H | jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | | jca/SymmetricAlgorithm.java:302:18:302:30 | Key | Source | jca/SymmetricAlgorithm.java:302:18:302:30 | Key | -| jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | Algorithm | jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | -| jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | HashAlgorithm | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | +| jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | Algorithm | jca/SymmetricAlgorithm.java:301:35:301:46 | HMACAlgorithm | +| jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | HashAlgorithm | jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | Input | jca/SymmetricAlgorithm.java:303:42:303:51 | Message | | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | Key | jca/SymmetricAlgorithm.java:302:18:302:30 | Key | | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | Message | jca/SymmetricAlgorithm.java:303:42:303:51 | Message | diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index 77ef8a820b0..3fa66c61629 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -168,12 +168,18 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:245:42:245:47 | Key | KeyType | Unknown | jca/AsymmetricEncryptionMacHybridCryptosystem.java:245:42:245:47 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:245:42:245:47 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | Parameter | Description | plaintext | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | Name | HMAC | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HMACAlgorithm | Name | HMAC | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | DigestSize | 256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | Name | SHA2 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | RawName | HmacSHA256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | KeyType | Unknown | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | KeyOperationSubtype | Mac | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | Name | HMAC | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | RawName | HmacSHA1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HMACAlgorithm | Name | HMAC | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HMACAlgorithm | RawName | HmacSHA1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | DigestSize | 160 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | Name | SHA1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | RawName | HmacSHA1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | KeyType | Unknown | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | KeyOperationSubtype | Mac | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:320:52:320:56 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:321:17:321:19 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:321:17:321:19 | @@ -301,8 +307,11 @@ | jca/Digest.java:108:62:108:68 | HashAlgorithm | RawName | SHA-1 | jca/Digest.java:108:62:108:68 | jca/Digest.java:108:62:108:68 | | jca/Digest.java:117:35:117:46 | Parameter | Description | input | jca/Digest.java:117:35:117:46 | jca/Digest.java:117:35:117:46 | | jca/Digest.java:117:49:117:58 | Parameter | Description | key | jca/Digest.java:117:49:117:58 | jca/Digest.java:117:49:117:58 | -| jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | Name | HMAC | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | -| jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | +| jca/Digest.java:118:36:118:47 | HMACAlgorithm | Name | HMAC | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | +| jca/Digest.java:118:36:118:47 | HMACAlgorithm | RawName | HmacSHA256 | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | +| jca/Digest.java:118:36:118:47 | HashAlgorithm | DigestSize | 256 | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | +| jca/Digest.java:118:36:118:47 | HashAlgorithm | Name | SHA2 | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | +| jca/Digest.java:118:36:118:47 | HashAlgorithm | RawName | HmacSHA256 | jca/Digest.java:118:36:118:47 | jca/Digest.java:118:36:118:47 | | jca/Digest.java:120:19:120:27 | Key | KeyType | Unknown | jca/Digest.java:120:19:120:27 | jca/Digest.java:120:19:120:27 | | jca/Digest.java:121:23:121:52 | MACOperation | KeyOperationSubtype | Mac | jca/Digest.java:121:23:121:52 | jca/Digest.java:121:23:121:52 | | jca/Digest.java:140:44:140:62 | KeyOperationAlgorithm | Name | AES | jca/Digest.java:140:44:140:62 | jca/Digest.java:140:44:140:62 | @@ -339,8 +348,11 @@ | jca/Digest.java:187:42:187:54 | Key | KeyType | Unknown | jca/Digest.java:187:42:187:54 | jca/Digest.java:187:42:187:54 | | jca/Digest.java:188:29:188:78 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Digest.java:188:29:188:78 | jca/Digest.java:188:29:188:78 | | jca/Digest.java:188:44:188:66 | Constant | Description | "Further Use Test Data" | jca/Digest.java:188:44:188:66 | jca/Digest.java:188:44:188:66 | -| jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | Name | HMAC | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | -| jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | +| jca/Digest.java:191:35:191:46 | HMACAlgorithm | Name | HMAC | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | +| jca/Digest.java:191:35:191:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | +| jca/Digest.java:191:35:191:46 | HashAlgorithm | DigestSize | 256 | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | +| jca/Digest.java:191:35:191:46 | HashAlgorithm | Name | SHA2 | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | +| jca/Digest.java:191:35:191:46 | HashAlgorithm | RawName | HmacSHA256 | jca/Digest.java:191:35:191:46 | jca/Digest.java:191:35:191:46 | | jca/Digest.java:192:18:192:23 | Key | KeyType | Unknown | jca/Digest.java:192:18:192:23 | jca/Digest.java:192:18:192:23 | | jca/Digest.java:193:30:193:52 | MACOperation | KeyOperationSubtype | Mac | jca/Digest.java:193:30:193:52 | jca/Digest.java:193:30:193:52 | | jca/Digest.java:210:44:210:62 | KeyOperationAlgorithm | Name | AES | jca/Digest.java:210:44:210:62 | jca/Digest.java:210:44:210:62 | @@ -603,8 +615,11 @@ | jca/Encryption2.java:149:45:149:50 | Key | KeyType | Unknown | jca/Encryption2.java:149:45:149:50 | jca/Encryption2.java:149:45:149:50 | | jca/Encryption2.java:150:32:150:98 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption2.java:150:32:150:98 | jca/Encryption2.java:150:32:150:98 | | jca/Encryption2.java:150:50:150:86 | Constant | Description | "Post-Quantum Hybrid Encryption Data" | jca/Encryption2.java:150:50:150:86 | jca/Encryption2.java:150:50:150:86 | -| jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | Name | HMAC | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | -| jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | +| jca/Encryption2.java:173:36:173:47 | HMACAlgorithm | Name | HMAC | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | +| jca/Encryption2.java:173:36:173:47 | HMACAlgorithm | RawName | HmacSHA256 | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | +| jca/Encryption2.java:173:36:173:47 | HashAlgorithm | DigestSize | 256 | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | +| jca/Encryption2.java:173:36:173:47 | HashAlgorithm | Name | SHA2 | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | +| jca/Encryption2.java:173:36:173:47 | HashAlgorithm | RawName | HmacSHA256 | jca/Encryption2.java:173:36:173:47 | jca/Encryption2.java:173:36:173:47 | | jca/Encryption2.java:175:19:175:27 | Key | KeyType | Unknown | jca/Encryption2.java:175:19:175:27 | jca/Encryption2.java:175:19:175:27 | | jca/Encryption2.java:176:31:176:52 | MACOperation | KeyOperationSubtype | Mac | jca/Encryption2.java:176:31:176:52 | jca/Encryption2.java:176:31:176:52 | | jca/Hash.java:75:58:75:66 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:75:58:75:66 | jca/Hash.java:75:58:75:66 | @@ -670,18 +685,36 @@ | jca/Hash.java:211:43:211:54 | Parameter | Description | input | jca/Hash.java:211:43:211:54 | jca/Hash.java:211:43:211:54 | | jca/Hash.java:211:57:211:66 | Parameter | Description | key | jca/Hash.java:211:57:211:66 | jca/Hash.java:211:57:211:66 | | jca/Hash.java:212:31:212:116 | Constant | Description | {...} | jca/Hash.java:212:31:212:116 | jca/Hash.java:212:31:212:116 | -| jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | -| jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | RawName | HmacSHA1 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | -| jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | -| jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | -| jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | -| jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | RawName | HmacSHA384 | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | -| jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | -| jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | RawName | HmacSHA512 | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | -| jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | -| jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | RawName | HmacSHA3-256 | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | -| jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | Name | HMAC | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | -| jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | RawName | HmacSHA3-512 | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | RawName | HmacSHA1 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | +| jca/Hash.java:212:32:212:41 | HashAlgorithm | DigestSize | 160 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | +| jca/Hash.java:212:32:212:41 | HashAlgorithm | Name | SHA1 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | +| jca/Hash.java:212:32:212:41 | HashAlgorithm | RawName | HmacSHA1 | jca/Hash.java:212:32:212:41 | jca/Hash.java:212:32:212:41 | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | RawName | HmacSHA256 | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | +| jca/Hash.java:212:44:212:55 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | +| jca/Hash.java:212:44:212:55 | HashAlgorithm | Name | SHA2 | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | +| jca/Hash.java:212:44:212:55 | HashAlgorithm | RawName | HmacSHA256 | jca/Hash.java:212:44:212:55 | jca/Hash.java:212:44:212:55 | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | RawName | HmacSHA384 | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | +| jca/Hash.java:212:58:212:69 | HashAlgorithm | DigestSize | 384 | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | +| jca/Hash.java:212:58:212:69 | HashAlgorithm | Name | SHA2 | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | +| jca/Hash.java:212:58:212:69 | HashAlgorithm | RawName | HmacSHA384 | jca/Hash.java:212:58:212:69 | jca/Hash.java:212:58:212:69 | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | RawName | HmacSHA512 | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | +| jca/Hash.java:212:72:212:83 | HashAlgorithm | DigestSize | 512 | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | +| jca/Hash.java:212:72:212:83 | HashAlgorithm | Name | SHA2 | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | +| jca/Hash.java:212:72:212:83 | HashAlgorithm | RawName | HmacSHA512 | jca/Hash.java:212:72:212:83 | jca/Hash.java:212:72:212:83 | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | RawName | HmacSHA3-256 | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | +| jca/Hash.java:212:86:212:99 | HashAlgorithm | DigestSize | 256 | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | +| jca/Hash.java:212:86:212:99 | HashAlgorithm | Name | SHA3 | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | +| jca/Hash.java:212:86:212:99 | HashAlgorithm | RawName | HmacSHA3-256 | jca/Hash.java:212:86:212:99 | jca/Hash.java:212:86:212:99 | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | Name | HMAC | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | RawName | HmacSHA3-512 | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | +| jca/Hash.java:212:102:212:115 | HashAlgorithm | DigestSize | 512 | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | +| jca/Hash.java:212:102:212:115 | HashAlgorithm | Name | SHA3 | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | +| jca/Hash.java:212:102:212:115 | HashAlgorithm | RawName | HmacSHA3-512 | jca/Hash.java:212:102:212:115 | jca/Hash.java:212:102:212:115 | | jca/Hash.java:216:22:216:30 | Key | KeyType | Unknown | jca/Hash.java:216:22:216:30 | jca/Hash.java:216:22:216:30 | | jca/Hash.java:217:27:217:55 | MACOperation | KeyOperationSubtype | Mac | jca/Hash.java:217:27:217:55 | jca/Hash.java:217:27:217:55 | | jca/Hash.java:232:40:232:54 | Parameter | Description | password | jca/Hash.java:232:40:232:54 | jca/Hash.java:232:40:232:54 | @@ -892,8 +925,11 @@ | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | jca/KeyAgreementHybridCryptosystem.java:225:38:225:39 | | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | Key | KeyType | Unknown | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | jca/KeyAgreementHybridCryptosystem.java:227:42:227:54 | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | -| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | Name | HMAC | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | -| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HMACAlgorithm | Name | HMAC | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | DigestSize | 256 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | Name | SHA2 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | RawName | HmacSHA256 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | Key | KeyType | Unknown | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | KeyOperationSubtype | Mac | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | | jca/KeyAgreementHybridCryptosystem.java:259:52:259:56 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | jca/KeyAgreementHybridCryptosystem.java:260:17:260:19 | @@ -1070,8 +1106,11 @@ | jca/KeyDerivation1.java:335:16:335:43 | Key | KeyType | Symmetric | jca/KeyDerivation1.java:335:16:335:43 | jca/KeyDerivation1.java:335:16:335:43 | | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | Iterations | Constant:10000 | jca/KeyDerivation1.java:333:72:333:76 | jca/KeyDerivation1.java:333:72:333:76 | | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | KeySize | Constant:256 | jca/KeyDerivation1.java:333:79:333:81 | jca/KeyDerivation1.java:333:79:333:81 | -| jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | Name | HMAC | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | -| jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | +| jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | Name | HMAC | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | +| jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | RawName | HmacSHA256 | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | +| jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | DigestSize | 256 | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | +| jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | Name | SHA2 | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | +| jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | RawName | HmacSHA256 | jca/KeyDerivation1.java:345:36:345:47 | jca/KeyDerivation1.java:345:36:345:47 | | jca/KeyDerivation1.java:347:19:347:27 | Key | KeyType | Unknown | jca/KeyDerivation1.java:347:19:347:27 | jca/KeyDerivation1.java:347:19:347:27 | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | KeyOperationSubtype | Mac | jca/KeyDerivation1.java:348:22:348:38 | jca/KeyDerivation1.java:348:22:348:38 | | jca/KeyDerivation1.java:352:19:352:54 | Key | KeyType | Unknown | jca/KeyDerivation1.java:352:19:352:54 | jca/KeyDerivation1.java:352:19:352:54 | @@ -1202,14 +1241,20 @@ | jca/KeyExchange.java:212:20:212:28 | Key | KeyType | Unknown | jca/KeyExchange.java:212:20:212:28 | jca/KeyExchange.java:212:20:212:28 | | jca/MACOperation.java:59:36:59:49 | Parameter | Description | message | jca/MACOperation.java:59:36:59:49 | jca/MACOperation.java:59:36:59:49 | | jca/MACOperation.java:59:52:59:61 | Parameter | Description | key | jca/MACOperation.java:59:52:59:61 | jca/MACOperation.java:59:52:59:61 | -| jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | Name | HMAC | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | -| jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | +| jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | Name | HMAC | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | +| jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | +| jca/MACOperation.java:60:35:60:46 | HashAlgorithm | DigestSize | 256 | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | +| jca/MACOperation.java:60:35:60:46 | HashAlgorithm | Name | SHA2 | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | +| jca/MACOperation.java:60:35:60:46 | HashAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:60:35:60:46 | jca/MACOperation.java:60:35:60:46 | | jca/MACOperation.java:62:18:62:26 | Key | KeyType | Unknown | jca/MACOperation.java:62:18:62:26 | jca/MACOperation.java:62:18:62:26 | | jca/MACOperation.java:63:16:63:46 | MACOperation | KeyOperationSubtype | Mac | jca/MACOperation.java:63:16:63:46 | jca/MACOperation.java:63:16:63:46 | | jca/MACOperation.java:70:34:70:47 | Parameter | Description | message | jca/MACOperation.java:70:34:70:47 | jca/MACOperation.java:70:34:70:47 | | jca/MACOperation.java:70:50:70:59 | Parameter | Description | key | jca/MACOperation.java:70:50:70:59 | jca/MACOperation.java:70:50:70:59 | -| jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | Name | HMAC | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | -| jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | RawName | HmacSHA3-256 | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | +| jca/MACOperation.java:71:35:71:48 | HMACAlgorithm | Name | HMAC | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | +| jca/MACOperation.java:71:35:71:48 | HMACAlgorithm | RawName | HmacSHA3-256 | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | +| jca/MACOperation.java:71:35:71:48 | HashAlgorithm | DigestSize | 256 | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | +| jca/MACOperation.java:71:35:71:48 | HashAlgorithm | Name | SHA3 | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | +| jca/MACOperation.java:71:35:71:48 | HashAlgorithm | RawName | HmacSHA3-256 | jca/MACOperation.java:71:35:71:48 | jca/MACOperation.java:71:35:71:48 | | jca/MACOperation.java:73:18:73:26 | Key | KeyType | Unknown | jca/MACOperation.java:73:18:73:26 | jca/MACOperation.java:73:18:73:26 | | jca/MACOperation.java:74:16:74:46 | MACOperation | KeyOperationSubtype | Mac | jca/MACOperation.java:74:16:74:46 | jca/MACOperation.java:74:16:74:46 | | jca/MACOperation.java:81:34:81:47 | Parameter | Description | message | jca/MACOperation.java:81:34:81:47 | jca/MACOperation.java:81:34:81:47 | @@ -1231,8 +1276,11 @@ | jca/MACOperation.java:110:16:110:46 | MACOperation | KeyOperationSubtype | Mac | jca/MACOperation.java:110:16:110:46 | jca/MACOperation.java:110:16:110:46 | | jca/MACOperation.java:117:36:117:49 | Parameter | Description | message | jca/MACOperation.java:117:36:117:49 | jca/MACOperation.java:117:36:117:49 | | jca/MACOperation.java:117:52:117:61 | Parameter | Description | key | jca/MACOperation.java:117:52:117:61 | jca/MACOperation.java:117:52:117:61 | -| jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | Name | HMAC | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | -| jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | RawName | HmacSHA1 | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | +| jca/MACOperation.java:118:35:118:44 | HMACAlgorithm | Name | HMAC | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | +| jca/MACOperation.java:118:35:118:44 | HMACAlgorithm | RawName | HmacSHA1 | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | +| jca/MACOperation.java:118:35:118:44 | HashAlgorithm | DigestSize | 160 | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | +| jca/MACOperation.java:118:35:118:44 | HashAlgorithm | Name | SHA1 | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | +| jca/MACOperation.java:118:35:118:44 | HashAlgorithm | RawName | HmacSHA1 | jca/MACOperation.java:118:35:118:44 | jca/MACOperation.java:118:35:118:44 | | jca/MACOperation.java:120:18:120:26 | Key | KeyType | Unknown | jca/MACOperation.java:120:18:120:26 | jca/MACOperation.java:120:18:120:26 | | jca/MACOperation.java:121:16:121:46 | MACOperation | KeyOperationSubtype | Mac | jca/MACOperation.java:121:16:121:46 | jca/MACOperation.java:121:16:121:46 | | jca/MACOperation.java:133:34:133:49 | Parameter | Description | macOutput | jca/MACOperation.java:133:34:133:49 | jca/MACOperation.java:133:34:133:49 | @@ -1270,8 +1318,11 @@ | jca/MACOperation.java:181:42:181:54 | Key | KeyType | Unknown | jca/MACOperation.java:181:42:181:54 | jca/MACOperation.java:181:42:181:54 | | jca/MACOperation.java:182:29:182:78 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/MACOperation.java:182:29:182:78 | jca/MACOperation.java:182:29:182:78 | | jca/MACOperation.java:182:44:182:66 | Constant | Description | "Further Use Test Data" | jca/MACOperation.java:182:44:182:66 | jca/MACOperation.java:182:44:182:66 | -| jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | Name | HMAC | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | -| jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | +| jca/MACOperation.java:185:35:185:46 | HMACAlgorithm | Name | HMAC | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | +| jca/MACOperation.java:185:35:185:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | +| jca/MACOperation.java:185:35:185:46 | HashAlgorithm | DigestSize | 256 | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | +| jca/MACOperation.java:185:35:185:46 | HashAlgorithm | Name | SHA2 | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | +| jca/MACOperation.java:185:35:185:46 | HashAlgorithm | RawName | HmacSHA256 | jca/MACOperation.java:185:35:185:46 | jca/MACOperation.java:185:35:185:46 | | jca/MACOperation.java:186:18:186:30 | Key | KeyType | Unknown | jca/MACOperation.java:186:18:186:30 | jca/MACOperation.java:186:18:186:30 | | jca/MACOperation.java:187:30:187:52 | MACOperation | KeyOperationSubtype | Mac | jca/MACOperation.java:187:30:187:52 | jca/MACOperation.java:187:30:187:52 | | jca/MACOperation.java:216:44:216:62 | KeyOperationAlgorithm | Name | AES | jca/MACOperation.java:216:44:216:62 | jca/MACOperation.java:216:44:216:62 | @@ -1290,14 +1341,20 @@ | jca/MACOperation.java:233:21:233:23 | Constant | Description | 256 | jca/MACOperation.java:233:21:233:23 | jca/MACOperation.java:233:21:233:23 | | jca/MACOperation.java:234:16:234:35 | Key | KeyType | Symmetric | jca/MACOperation.java:234:16:234:35 | jca/MACOperation.java:234:16:234:35 | | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/MACOperation.java:246:38:246:41 | jca/MACOperation.java:246:38:246:41 | -| jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | Name | HMAC | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | -| jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | +| jca/Nonce.java:24:35:24:46 | HMACAlgorithm | Name | HMAC | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | +| jca/Nonce.java:24:35:24:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | +| jca/Nonce.java:24:35:24:46 | HashAlgorithm | DigestSize | 256 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | +| jca/Nonce.java:24:35:24:46 | HashAlgorithm | Name | SHA2 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | +| jca/Nonce.java:24:35:24:46 | HashAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:24:35:24:46 | jca/Nonce.java:24:35:24:46 | | jca/Nonce.java:25:18:25:20 | Key | KeyType | Unknown | jca/Nonce.java:25:18:25:20 | jca/Nonce.java:25:18:25:20 | | jca/Nonce.java:27:28:27:69 | MACOperation | KeyOperationSubtype | Mac | jca/Nonce.java:27:28:27:69 | jca/Nonce.java:27:28:27:69 | | jca/Nonce.java:27:40:27:57 | Constant | Description | "Simple Test Data" | jca/Nonce.java:27:40:27:57 | jca/Nonce.java:27:40:27:57 | | jca/Nonce.java:35:24:35:41 | Constant | Description | "BADNONCEBADNONCE" | jca/Nonce.java:35:24:35:41 | jca/Nonce.java:35:24:35:41 | -| jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | Name | HMAC | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | -| jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | +| jca/Nonce.java:37:35:37:46 | HMACAlgorithm | Name | HMAC | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | +| jca/Nonce.java:37:35:37:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | +| jca/Nonce.java:37:35:37:46 | HashAlgorithm | DigestSize | 256 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | +| jca/Nonce.java:37:35:37:46 | HashAlgorithm | Name | SHA2 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | +| jca/Nonce.java:37:35:37:46 | HashAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:37:35:37:46 | jca/Nonce.java:37:35:37:46 | | jca/Nonce.java:38:18:38:20 | Key | KeyType | Unknown | jca/Nonce.java:38:18:38:20 | jca/Nonce.java:38:18:38:20 | | jca/Nonce.java:40:28:40:67 | MACOperation | KeyOperationSubtype | Mac | jca/Nonce.java:40:28:40:67 | jca/Nonce.java:40:28:40:67 | | jca/Nonce.java:40:40:40:55 | Constant | Description | "Sensitive Data" | jca/Nonce.java:40:40:40:55 | jca/Nonce.java:40:40:40:55 | @@ -1323,8 +1380,11 @@ | jca/Nonce.java:61:44:61:62 | PaddingAlgorithm | RawName | NoPadding | jca/Nonce.java:61:44:61:62 | jca/Nonce.java:61:44:61:62 | | jca/Nonce.java:62:42:62:44 | Key | KeyType | Unknown | jca/Nonce.java:62:42:62:44 | jca/Nonce.java:62:42:62:44 | | jca/Nonce.java:63:29:63:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Nonce.java:63:29:63:53 | jca/Nonce.java:63:29:63:53 | -| jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | Name | HMAC | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | -| jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | +| jca/Nonce.java:70:53:70:64 | HMACAlgorithm | Name | HMAC | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | +| jca/Nonce.java:70:53:70:64 | HMACAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | +| jca/Nonce.java:70:53:70:64 | HashAlgorithm | DigestSize | 256 | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | +| jca/Nonce.java:70:53:70:64 | HashAlgorithm | Name | SHA2 | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | +| jca/Nonce.java:70:53:70:64 | HashAlgorithm | RawName | HmacSHA256 | jca/Nonce.java:70:53:70:64 | jca/Nonce.java:70:53:70:64 | | jca/Nonce.java:78:18:78:20 | Key | KeyType | Unknown | jca/Nonce.java:78:18:78:20 | jca/Nonce.java:78:18:78:20 | | jca/Nonce.java:80:28:80:67 | MACOperation | KeyOperationSubtype | Mac | jca/Nonce.java:80:28:80:67 | jca/Nonce.java:80:28:80:67 | | jca/Nonce.java:80:40:80:55 | Constant | Description | "Sensitive Data" | jca/Nonce.java:80:40:80:55 | jca/Nonce.java:80:40:80:55 | @@ -1383,8 +1443,11 @@ | jca/SignEncryptCombinations.java:111:44:111:62 | PaddingAlgorithm | RawName | NoPadding | jca/SignEncryptCombinations.java:111:44:111:62 | jca/SignEncryptCombinations.java:111:44:111:62 | | jca/SignEncryptCombinations.java:112:42:112:44 | Key | KeyType | Unknown | jca/SignEncryptCombinations.java:112:42:112:44 | jca/SignEncryptCombinations.java:112:42:112:44 | | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | KeyOperationSubtype | Decrypt | jca/SignEncryptCombinations.java:113:16:113:41 | jca/SignEncryptCombinations.java:113:16:113:41 | -| jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | Name | HMAC | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | -| jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | +| jca/SignEncryptCombinations.java:121:35:121:46 | HMACAlgorithm | Name | HMAC | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | +| jca/SignEncryptCombinations.java:121:35:121:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | +| jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | DigestSize | 256 | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | +| jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | Name | SHA2 | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | +| jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | RawName | HmacSHA256 | jca/SignEncryptCombinations.java:121:35:121:46 | jca/SignEncryptCombinations.java:121:35:121:46 | | jca/SignEncryptCombinations.java:122:18:122:20 | Key | KeyType | Unknown | jca/SignEncryptCombinations.java:122:18:122:20 | jca/SignEncryptCombinations.java:122:18:122:20 | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | KeyOperationSubtype | Mac | jca/SignEncryptCombinations.java:123:16:123:32 | jca/SignEncryptCombinations.java:123:16:123:32 | | jca/SignEncryptCombinations.java:335:26:335:47 | Constant | Description | "Hello, combinations!" | jca/SignEncryptCombinations.java:335:26:335:47 | jca/SignEncryptCombinations.java:335:26:335:47 | @@ -1605,8 +1668,11 @@ | jca/SymmetricAlgorithm.java:297:38:297:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/SymmetricAlgorithm.java:297:38:297:39 | jca/SymmetricAlgorithm.java:297:38:297:39 | | jca/SymmetricAlgorithm.java:298:42:298:47 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:298:42:298:47 | jca/SymmetricAlgorithm.java:298:42:298:47 | | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/SymmetricAlgorithm.java:299:29:299:53 | jca/SymmetricAlgorithm.java:299:29:299:53 | -| jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | Name | HMAC | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | -| jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | RawName | HmacSHA256 | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HMACAlgorithm | Name | HMAC | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HMACAlgorithm | RawName | HmacSHA256 | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | DigestSize | 256 | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | Name | SHA2 | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | RawName | HmacSHA256 | jca/SymmetricAlgorithm.java:301:35:301:46 | jca/SymmetricAlgorithm.java:301:35:301:46 | | jca/SymmetricAlgorithm.java:302:18:302:30 | Key | KeyType | Unknown | jca/SymmetricAlgorithm.java:302:18:302:30 | jca/SymmetricAlgorithm.java:302:18:302:30 | | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | KeyOperationSubtype | Mac | jca/SymmetricAlgorithm.java:303:30:303:52 | jca/SymmetricAlgorithm.java:303:30:303:52 | | jca/SymmetricAlgorithm.java:331:52:331:56 | KeyOperationAlgorithm | KeySize | Constant:256 | jca/SymmetricAlgorithm.java:332:17:332:19 | jca/SymmetricAlgorithm.java:332:17:332:19 | diff --git a/java/ql/test/experimental/library-tests/quantum/nodes.expected b/java/ql/test/experimental/library-tests/quantum/nodes.expected index 80042576adf..b9661aaf64f 100644 --- a/java/ql/test/experimental/library-tests/quantum/nodes.expected +++ b/java/ql/test/experimental/library-tests/quantum/nodes.expected @@ -148,12 +148,14 @@ | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:29:246:53 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:246:44:246:52 | Message | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:271:58:271:73 | Parameter | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | KeyOperationAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HMACAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:295:35:295:46 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:297:18:297:26 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:16:298:46 | MACOperation | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:298:28:298:45 | Message | -| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | KeyOperationAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HMACAlgorithm | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:306:35:306:44 | HashAlgorithm | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:308:18:308:26 | Key | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | KeyOperationOutput | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:309:16:309:46 | MACOperation | @@ -278,7 +280,8 @@ | jca/Digest.java:109:41:109:56 | Message | | jca/Digest.java:117:35:117:46 | Parameter | | jca/Digest.java:117:49:117:58 | Parameter | -| jca/Digest.java:118:36:118:47 | KeyOperationAlgorithm | +| jca/Digest.java:118:36:118:47 | HMACAlgorithm | +| jca/Digest.java:118:36:118:47 | HashAlgorithm | | jca/Digest.java:120:19:120:27 | Key | | jca/Digest.java:121:23:121:52 | KeyOperationOutput | | jca/Digest.java:121:23:121:52 | MACOperation | @@ -310,7 +313,8 @@ | jca/Digest.java:188:29:188:78 | KeyOperationOutput | | jca/Digest.java:188:44:188:66 | Constant | | jca/Digest.java:188:44:188:77 | Message | -| jca/Digest.java:191:35:191:46 | KeyOperationAlgorithm | +| jca/Digest.java:191:35:191:46 | HMACAlgorithm | +| jca/Digest.java:191:35:191:46 | HashAlgorithm | | jca/Digest.java:192:18:192:23 | Key | | jca/Digest.java:193:30:193:52 | KeyOperationOutput | | jca/Digest.java:193:30:193:52 | MACOperation | @@ -535,7 +539,8 @@ | jca/Encryption2.java:150:32:150:98 | KeyOperationOutput | | jca/Encryption2.java:150:50:150:86 | Constant | | jca/Encryption2.java:150:50:150:97 | Message | -| jca/Encryption2.java:173:36:173:47 | KeyOperationAlgorithm | +| jca/Encryption2.java:173:36:173:47 | HMACAlgorithm | +| jca/Encryption2.java:173:36:173:47 | HashAlgorithm | | jca/Encryption2.java:175:19:175:27 | Key | | jca/Encryption2.java:176:31:176:52 | KeyOperationOutput | | jca/Encryption2.java:176:31:176:52 | MACOperation | @@ -589,12 +594,18 @@ | jca/Hash.java:211:43:211:54 | Parameter | | jca/Hash.java:211:57:211:66 | Parameter | | jca/Hash.java:212:31:212:116 | Constant | -| jca/Hash.java:212:32:212:41 | KeyOperationAlgorithm | -| jca/Hash.java:212:44:212:55 | KeyOperationAlgorithm | -| jca/Hash.java:212:58:212:69 | KeyOperationAlgorithm | -| jca/Hash.java:212:72:212:83 | KeyOperationAlgorithm | -| jca/Hash.java:212:86:212:99 | KeyOperationAlgorithm | -| jca/Hash.java:212:102:212:115 | KeyOperationAlgorithm | +| jca/Hash.java:212:32:212:41 | HMACAlgorithm | +| jca/Hash.java:212:32:212:41 | HashAlgorithm | +| jca/Hash.java:212:44:212:55 | HMACAlgorithm | +| jca/Hash.java:212:44:212:55 | HashAlgorithm | +| jca/Hash.java:212:58:212:69 | HMACAlgorithm | +| jca/Hash.java:212:58:212:69 | HashAlgorithm | +| jca/Hash.java:212:72:212:83 | HMACAlgorithm | +| jca/Hash.java:212:72:212:83 | HashAlgorithm | +| jca/Hash.java:212:86:212:99 | HMACAlgorithm | +| jca/Hash.java:212:86:212:99 | HashAlgorithm | +| jca/Hash.java:212:102:212:115 | HMACAlgorithm | +| jca/Hash.java:212:102:212:115 | HashAlgorithm | | jca/Hash.java:216:22:216:30 | Key | | jca/Hash.java:217:27:217:55 | KeyOperationOutput | | jca/Hash.java:217:27:217:55 | MACOperation | @@ -786,7 +797,8 @@ | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | EncryptOperation | | jca/KeyAgreementHybridCryptosystem.java:228:29:228:53 | KeyOperationOutput | | jca/KeyAgreementHybridCryptosystem.java:228:44:228:52 | Message | -| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | KeyOperationAlgorithm | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HMACAlgorithm | +| jca/KeyAgreementHybridCryptosystem.java:230:35:230:46 | HashAlgorithm | | jca/KeyAgreementHybridCryptosystem.java:231:18:231:30 | Key | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | KeyOperationOutput | | jca/KeyAgreementHybridCryptosystem.java:232:30:232:52 | MACOperation | @@ -932,7 +944,8 @@ | jca/KeyDerivation1.java:334:65:334:86 | KeyDerivationAlgorithm | | jca/KeyDerivation1.java:335:16:335:43 | Key | | jca/KeyDerivation1.java:335:16:335:43 | KeyDerivation | -| jca/KeyDerivation1.java:345:36:345:47 | KeyOperationAlgorithm | +| jca/KeyDerivation1.java:345:36:345:47 | HMACAlgorithm | +| jca/KeyDerivation1.java:345:36:345:47 | HashAlgorithm | | jca/KeyDerivation1.java:347:19:347:27 | Key | | jca/KeyDerivation1.java:348:22:348:38 | KeyOperationOutput | | jca/KeyDerivation1.java:348:22:348:38 | MACOperation | @@ -1055,14 +1068,16 @@ | jca/KeyExchange.java:213:16:213:34 | SharedSecret | | jca/MACOperation.java:59:36:59:49 | Parameter | | jca/MACOperation.java:59:52:59:61 | Parameter | -| jca/MACOperation.java:60:35:60:46 | KeyOperationAlgorithm | +| jca/MACOperation.java:60:35:60:46 | HMACAlgorithm | +| jca/MACOperation.java:60:35:60:46 | HashAlgorithm | | jca/MACOperation.java:62:18:62:26 | Key | | jca/MACOperation.java:63:16:63:46 | KeyOperationOutput | | jca/MACOperation.java:63:16:63:46 | MACOperation | | jca/MACOperation.java:63:28:63:45 | Message | | jca/MACOperation.java:70:34:70:47 | Parameter | | jca/MACOperation.java:70:50:70:59 | Parameter | -| jca/MACOperation.java:71:35:71:48 | KeyOperationAlgorithm | +| jca/MACOperation.java:71:35:71:48 | HMACAlgorithm | +| jca/MACOperation.java:71:35:71:48 | HashAlgorithm | | jca/MACOperation.java:73:18:73:26 | Key | | jca/MACOperation.java:74:16:74:46 | KeyOperationOutput | | jca/MACOperation.java:74:16:74:46 | MACOperation | @@ -1090,7 +1105,8 @@ | jca/MACOperation.java:110:28:110:45 | Message | | jca/MACOperation.java:117:36:117:49 | Parameter | | jca/MACOperation.java:117:52:117:61 | Parameter | -| jca/MACOperation.java:118:35:118:44 | KeyOperationAlgorithm | +| jca/MACOperation.java:118:35:118:44 | HMACAlgorithm | +| jca/MACOperation.java:118:35:118:44 | HashAlgorithm | | jca/MACOperation.java:120:18:120:26 | Key | | jca/MACOperation.java:121:16:121:46 | KeyOperationOutput | | jca/MACOperation.java:121:16:121:46 | MACOperation | @@ -1123,7 +1139,8 @@ | jca/MACOperation.java:182:29:182:78 | KeyOperationOutput | | jca/MACOperation.java:182:44:182:66 | Constant | | jca/MACOperation.java:182:44:182:77 | Message | -| jca/MACOperation.java:185:35:185:46 | KeyOperationAlgorithm | +| jca/MACOperation.java:185:35:185:46 | HMACAlgorithm | +| jca/MACOperation.java:185:35:185:46 | HashAlgorithm | | jca/MACOperation.java:186:18:186:30 | Key | | jca/MACOperation.java:187:30:187:52 | KeyOperationOutput | | jca/MACOperation.java:187:30:187:52 | MACOperation | @@ -1140,7 +1157,8 @@ | jca/MACOperation.java:234:16:234:35 | Key | | jca/MACOperation.java:234:16:234:35 | KeyGeneration | | jca/MACOperation.java:246:38:246:41 | RandomNumberGeneration | -| jca/Nonce.java:24:35:24:46 | KeyOperationAlgorithm | +| jca/Nonce.java:24:35:24:46 | HMACAlgorithm | +| jca/Nonce.java:24:35:24:46 | HashAlgorithm | | jca/Nonce.java:25:18:25:20 | Key | | jca/Nonce.java:26:20:26:24 | Message | | jca/Nonce.java:27:28:27:69 | KeyOperationOutput | @@ -1148,7 +1166,8 @@ | jca/Nonce.java:27:40:27:57 | Constant | | jca/Nonce.java:27:40:27:68 | Message | | jca/Nonce.java:35:24:35:41 | Constant | -| jca/Nonce.java:37:35:37:46 | KeyOperationAlgorithm | +| jca/Nonce.java:37:35:37:46 | HMACAlgorithm | +| jca/Nonce.java:37:35:37:46 | HashAlgorithm | | jca/Nonce.java:38:18:38:20 | Key | | jca/Nonce.java:39:20:39:24 | Message | | jca/Nonce.java:40:28:40:67 | KeyOperationOutput | @@ -1175,7 +1194,8 @@ | jca/Nonce.java:63:29:63:53 | EncryptOperation | | jca/Nonce.java:63:29:63:53 | KeyOperationOutput | | jca/Nonce.java:63:44:63:52 | Message | -| jca/Nonce.java:70:53:70:64 | KeyOperationAlgorithm | +| jca/Nonce.java:70:53:70:64 | HMACAlgorithm | +| jca/Nonce.java:70:53:70:64 | HashAlgorithm | | jca/Nonce.java:78:18:78:20 | Key | | jca/Nonce.java:79:20:79:24 | Message | | jca/Nonce.java:80:28:80:67 | KeyOperationOutput | @@ -1228,7 +1248,8 @@ | jca/SignEncryptCombinations.java:113:16:113:41 | DecryptOperation | | jca/SignEncryptCombinations.java:113:16:113:41 | KeyOperationOutput | | jca/SignEncryptCombinations.java:113:31:113:40 | Message | -| jca/SignEncryptCombinations.java:121:35:121:46 | KeyOperationAlgorithm | +| jca/SignEncryptCombinations.java:121:35:121:46 | HMACAlgorithm | +| jca/SignEncryptCombinations.java:121:35:121:46 | HashAlgorithm | | jca/SignEncryptCombinations.java:122:18:122:20 | Key | | jca/SignEncryptCombinations.java:123:16:123:32 | KeyOperationOutput | | jca/SignEncryptCombinations.java:123:16:123:32 | MACOperation | @@ -1422,7 +1443,8 @@ | jca/SymmetricAlgorithm.java:299:29:299:53 | EncryptOperation | | jca/SymmetricAlgorithm.java:299:29:299:53 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:299:44:299:52 | Message | -| jca/SymmetricAlgorithm.java:301:35:301:46 | KeyOperationAlgorithm | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HMACAlgorithm | +| jca/SymmetricAlgorithm.java:301:35:301:46 | HashAlgorithm | | jca/SymmetricAlgorithm.java:302:18:302:30 | Key | | jca/SymmetricAlgorithm.java:303:30:303:52 | KeyOperationOutput | | jca/SymmetricAlgorithm.java:303:30:303:52 | MACOperation | From eff94ef91f86587b46dc4ecbf9dbdfb1b4805a8f Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 20 Oct 2025 15:51:07 -0400 Subject: [PATCH 207/965] Crypto: To allow for graph generation to have properties informed by assessments, altering a few queries weak/vuln/bad crypto to have qll files that can be accessed for other purposes, like graph generation. Also altering weak symmetric cipher to look for non-aes algorithms to be more comprehensive. --- .../quantum/Examples/BadMacOrder.qll | 171 ++++++++++++++++++ .../Examples/BadMacOrderDecryptToMac.ql | 11 +- .../BadMacOrderMacOnEncryptPlaintext.ql | 147 +-------------- .../experimental/quantum/Examples/WeakHash.ql | 24 +-- .../quantum/Examples/WeakHash.qll | 23 +++ .../quantum/Examples/WeakSymmetricCipher.ql | 24 +-- .../quantum/Examples/WeakSymmetricCipher.qll | 24 +++ 7 files changed, 228 insertions(+), 196 deletions(-) create mode 100644 java/ql/src/experimental/quantum/Examples/BadMacOrder.qll create mode 100644 java/ql/src/experimental/quantum/Examples/WeakHash.qll create mode 100644 java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll new file mode 100644 index 00000000000..13adba0e436 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -0,0 +1,171 @@ +import java +import experimental.quantum.Language +import codeql.util.Option + +/** + * Holds when the src node is the output artifact of a decrypt operation + * that flows to the input artifact of a mac operation. + */ +predicate isDecryptToMacFlow(ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink) { + ArtifactFlow::flowPath(src, sink) and + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and + cipherOp.getAnOutputArtifact().asElement() = src.getNode().asExpr() + ) and + exists(Crypto::MacOperationNode macOp | + macOp.getAnInputArtifact().asElement() = sink.getNode().asExpr() + ) +} + +/** + * Holds when the src node is used as plaintext input to both + * an encryption operation and a mac operation, via the + * argument represented by InterimArg. + */ +predicate isPlaintextInEncryptionAndMac( + PlaintextUseAsMacAndCipherInputFlow::PathNode src, + PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg +) { + PlaintextUseAsMacAndCipherInputFlow::flowPath(src, sink) and + arg = sink.getState().asSome() +} + +module ArgToSinkConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(Call c | c.getAnArgument() = source.asExpr()) } + + predicate isSink(DataFlow::Node sink) { targetSinks(sink) } + + // Don't go in to a known out node, this will prevent the plaintext + // from tracing out of cipher operations for example, we just want to trace + // the plaintext to uses. + // NOTE: we are not using a barrier out on input nodes, because + // that would remove 'use-use' flows, which we need + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module ArgToSinkFlow = TaintTracking::Global; + +/** + * Target sinks for this query are either encryption operations or mac operation message inputs + */ +predicate targetSinks(DataFlow::Node n) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and + cipherOp.getAnInputArtifact().asElement() = n.asExpr() + ) + or + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = n.asExpr()) +} + +/** + * An argument of a target sink or a parent call whose parameter flows to a target sink + */ +class InterimArg extends DataFlow::Node { + DataFlow::Node targetSink; + + InterimArg() { + targetSinks(targetSink) and + ( + this = targetSink + or + ArgToSinkFlow::flow(this, targetSink) and + this.getEnclosingCallable().calls+(targetSink.getEnclosingCallable()) + ) + } + + DataFlow::Node getTargetSink() { result = targetSink } +} + +/** + * A wrapper class to represent a target argument dataflow node. + */ +class TargetArg extends DataFlow::Node { + TargetArg() { targetSinks(this) } + + predicate isCipher() { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and + cipherOp.getAnInputArtifact().asElement() = this.asExpr() + ) + } + + predicate isMac() { + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = this.asExpr()) + } +} + +module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig { + class FlowState = Option::Option; + + // TODO: can we approximate a message source better? + predicate isSource(DataFlow::Node source, FlowState state) { + // TODO: can we find the 'closest' parameter to the sinks? + // i.e., use a generic source if we have it, but also isolate the + // lowest level in the flow to the closest parameter node in the call graph? + exists(Crypto::GenericSourceNode other | + other.asElement() = CryptoInput::dfn_to_element(source) + ) and + state.isNone() + } + + predicate isSink(DataFlow::Node sink, FlowState state) { + sink instanceof TargetArg and + ( + sink.(TargetArg).isMac() and state.asSome().isCipher() + or + sink.(TargetArg).isCipher() and state.asSome().isMac() + ) + } + + predicate isBarrierOut(DataFlow::Node node, FlowState state) { + // Stop at the first sink for now + isSink(node, state) + } + + // Don't go in to a known out node, this will prevent the plaintext + // from tracing out of cipher operations for example, we just want to trace + // the plaintext to uses. + // NOTE: we are not using a barrier out on input nodes, because + // that would remove 'use-use' flows, which we need + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } + + predicate isAdditionalFlowStep( + DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 + ) { + (exists(state1.asSome()) or state1.isNone()) and + targetSinks(node1) and + node1 instanceof TargetArg and + //use-use flow, either flow directly from the node1 use + //or find a parent call in the call in the call stack + //and continue flow from that parameter + node2.(InterimArg).getTargetSink() = node1 and + state2.asSome() = node1 + } +} + +module PlaintextUseAsMacAndCipherInputFlow = + TaintTracking::GlobalWithState; diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index fea29f9fc14..8d887159282 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -11,16 +11,9 @@ import java import experimental.quantum.Language import ArtifactFlow::PathGraph +import BadMacOrder from ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink -where - ArtifactFlow::flowPath(src, sink) and - exists(Crypto::CipherOperationNode cipherOp | - cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and - cipherOp.getAnOutputArtifact().asElement() = src.getNode().asExpr() - ) and - exists(Crypto::MacOperationNode macOp | - macOp.getAnInputArtifact().asElement() = sink.getNode().asExpr() - ) +where isDecryptToMacFlow(src, sink) select sink, src, sink, "MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher." diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 8d8fb5ee480..fde5fa6baa0 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -10,156 +10,13 @@ import java import experimental.quantum.Language -import codeql.util.Option - -module ArgToSinkConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { exists(Call c | c.getAnArgument() = source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { targetSinks(sink) } - - // Don't go in to a known out node, this will prevent the plaintext - // from tracing out of cipher operations for example, we just want to trace - // the plaintext to uses. - // NOTE: we are not using a barrier out on input nodes, because - // that would remove 'use-use' flows, which we need - predicate isBarrierIn(DataFlow::Node node) { - node = any(Crypto::FlowAwareElement element).getOutputNode() - } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - node1.(AdditionalFlowInputStep).getOutput() = node2 - or - exists(MethodCall m | - m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and - node1.asExpr() = m.getQualifier() and - node2.asExpr() = m - ) - } -} - -module ArgToSinkFlow = TaintTracking::Global; - -/** - * Target sinks for this query are either encryption operations or mac operation message inputs - */ -predicate targetSinks(DataFlow::Node n) { - exists(Crypto::CipherOperationNode cipherOp | - cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and - cipherOp.getAnInputArtifact().asElement() = n.asExpr() - ) - or - exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = n.asExpr()) -} - -/** - * An argument of a target sink or a parent call whose parameter flows to a target sink - */ -class InterimArg extends DataFlow::Node { - DataFlow::Node targetSink; - - InterimArg() { - targetSinks(targetSink) and - ( - this = targetSink - or - ArgToSinkFlow::flow(this, targetSink) and - this.getEnclosingCallable().calls+(targetSink.getEnclosingCallable()) - ) - } - - DataFlow::Node getTargetSink() { result = targetSink } -} - -/** - * A wrapper class to represent a target argument dataflow node. - */ -class TargetArg extends DataFlow::Node { - TargetArg() { targetSinks(this) } - - predicate isCipher() { - exists(Crypto::CipherOperationNode cipherOp | - cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and - cipherOp.getAnInputArtifact().asElement() = this.asExpr() - ) - } - - predicate isMac() { - exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = this.asExpr()) - } -} - -module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig { - class FlowState = Option::Option; - - // TODO: can we approximate a message source better? - predicate isSource(DataFlow::Node source, FlowState state) { - // TODO: can we find the 'closest' parameter to the sinks? - // i.e., use a generic source if we have it, but also isolate the - // lowest level in the flow to the closest parameter node in the call graph? - exists(Crypto::GenericSourceNode other | - other.asElement() = CryptoInput::dfn_to_element(source) - ) and - state.isNone() - } - - predicate isSink(DataFlow::Node sink, FlowState state) { - sink instanceof TargetArg and - ( - sink.(TargetArg).isMac() and state.asSome().isCipher() - or - sink.(TargetArg).isCipher() and state.asSome().isMac() - ) - } - - predicate isBarrierOut(DataFlow::Node node, FlowState state) { - // Stop at the first sink for now - isSink(node, state) - } - - // Don't go in to a known out node, this will prevent the plaintext - // from tracing out of cipher operations for example, we just want to trace - // the plaintext to uses. - // NOTE: we are not using a barrier out on input nodes, because - // that would remove 'use-use' flows, which we need - predicate isBarrierIn(DataFlow::Node node) { - node = any(Crypto::FlowAwareElement element).getOutputNode() - } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - node1.(AdditionalFlowInputStep).getOutput() = node2 - or - exists(MethodCall m | - m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and - node1.asExpr() = m.getQualifier() and - node2.asExpr() = m - ) - } - - predicate isAdditionalFlowStep( - DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 - ) { - (exists(state1.asSome()) or state1.isNone()) and - targetSinks(node1) and - node1 instanceof TargetArg and - //use-use flow, either flow directly from the node1 use - //or find a parent call in the call in the call stack - //and continue flow from that parameter - node2.(InterimArg).getTargetSink() = node1 and - state2.asSome() = node1 - } -} - -module PlaintextUseAsMacAndCipherInputFlow = - TaintTracking::GlobalWithState; - +import BadMacOrder import PlaintextUseAsMacAndCipherInputFlow::PathGraph from PlaintextUseAsMacAndCipherInputFlow::PathNode src, PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg -where - PlaintextUseAsMacAndCipherInputFlow::flowPath(src, sink) and - arg = sink.getState().asSome() +where isPlaintextInEncryptionAndMac(src, sink, arg) select sink, src, sink, "Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@", arg.asExpr(), arg.asExpr().toString() diff --git a/java/ql/src/experimental/quantum/Examples/WeakHash.ql b/java/ql/src/experimental/quantum/Examples/WeakHash.ql index e7b9c95a9c0..cb61c2f860a 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakHash.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakHash.ql @@ -9,28 +9,8 @@ * experimental */ -import java -import experimental.quantum.Language +import WeakHash from Crypto::HashAlgorithmNode alg, Crypto::HashType htype, string msg -where - htype = alg.getHashType() and - ( - (htype != Crypto::SHA2() and htype != Crypto::SHA3()) and - msg = "Use of unapproved hash algorithm or API: " + htype.toString() + "." - or - (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and - not exists(alg.getDigestLength()) and - msg = - "Use of approved hash algorithm or API type " + htype.toString() + " but unknown digest size." - or - exists(int digestLength | - digestLength = alg.getDigestLength() and - (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and - digestLength < 256 and - msg = - "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" - + digestLength + ")." - ) - ) +where isUnapprovedHash(alg, htype, msg) select alg, msg diff --git a/java/ql/src/experimental/quantum/Examples/WeakHash.qll b/java/ql/src/experimental/quantum/Examples/WeakHash.qll new file mode 100644 index 00000000000..add6cc870ae --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/WeakHash.qll @@ -0,0 +1,23 @@ +import experimental.quantum.Language + +predicate isUnapprovedHash(Crypto::HashAlgorithmNode alg, Crypto::HashType htype, string msg) { + htype = alg.getHashType() and + ( + (htype != Crypto::SHA2() and htype != Crypto::SHA3()) and + msg = "Use of unapproved hash algorithm or API: " + htype.toString() + "." + or + (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and + not exists(alg.getDigestLength()) and + msg = + "Use of approved hash algorithm or API type " + htype.toString() + " but unknown digest size." + or + exists(int digestLength | + digestLength = alg.getDigestLength() and + (htype = Crypto::SHA2() or htype = Crypto::SHA3()) and + digestLength < 256 and + msg = + "Use of approved hash algorithm or API type " + htype.toString() + " but weak digest size (" + + digestLength + ")." + ) + ) +} diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql index 59cd22ac592..fe08599b660 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql @@ -9,24 +9,8 @@ * experimental */ -import java -import experimental.quantum.Language -import Crypto::KeyOpAlg as KeyOpAlg +import WeakSymmetricCipher -from Crypto::KeyOperationAlgorithmNode alg, KeyOpAlg::AlgorithmType algType -where - algType = alg.getAlgorithmType() and - // NOTE: an org may disallow all but AES we could similarly look for - // algType != KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) - // This is a more comprehensive check than looking for all weak ciphers - ( - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DOUBLE_DES()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC2()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) or - algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SKIPJACK()) - ) -select alg, "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." +from Crypto::KeyOperationAlgorithmNode alg, string msg +where isUnapprovedSymmetricCipher(alg, msg) +select alg, msg diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll new file mode 100644 index 00000000000..457d2b6cd18 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll @@ -0,0 +1,24 @@ +import experimental.quantum.Language +import Crypto::KeyOpAlg as KeyOpAlg + +/** + * Holds when the given symmetric cipher algorithm is unapproved or weak. + */ +predicate isUnapprovedSymmetricCipher(Crypto::KeyOperationAlgorithmNode alg, string msg) { + exists(KeyOpAlg::AlgorithmType algType | + algType = alg.getAlgorithmType() and + msg = "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." and + algType != KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) + ) + // NOTE: an org could decide to disallow very specific algorithms as well, shown below + // ( + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DES()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::TRIPLE_DES()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::DOUBLE_DES()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC2()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::RC4()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::IDEA()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::BLOWFISH()) or + // algType = KeyOpAlg::TSymmetricCipher(KeyOpAlg::SKIPJACK()) + // ) +} From 22c0f9fa91447e47b3958f8af4028addeaf8bb14 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Mon, 20 Oct 2025 16:24:31 -0400 Subject: [PATCH 208/965] Crypto: Adding a proof of concept bad mac ordering predicate that takes in an ArtifactNode to be used for graph generation to intercept nodes with known mac ordering issues, in order to format the node and output error messages in the graph. --- java/ql/src/experimental/quantum/Examples/BadMacOrder.qll | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll index 13adba0e436..09eb2c31ff1 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -17,6 +17,13 @@ predicate isDecryptToMacFlow(ArtifactFlow::PathNode src, ArtifactFlow::PathNode ) } +predicate isDecryptToMacNode(Crypto::ArtifactNode node) { + exists(ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink | + isDecryptToMacFlow(src, sink) and + node.asElement() = src.getNode().asExpr() + ) +} + /** * Holds when the src node is used as plaintext input to both * an encryption operation and a mac operation, via the From 0badcfd663b2e4f7a53f94ece4911bc8d15f673c Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 21 Oct 2025 09:47:58 +0200 Subject: [PATCH 209/965] C++: Address review comments --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 1692a83694f..a2e41fcf693 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -533,10 +533,9 @@ private module BoundsEstimate { result = 2.0.pow(40) } - /** Gets the maximum number of bounds possible when widening is used. */ - private int getNrOfWideningBounds() { - result = - max(ArithmeticType t | | count(wideningLowerBounds(t)).maximum(count(wideningUpperBounds(t)))) + /** Gets the maximum number of bounds possible for `t` when widening is used. */ + private int getNrOfWideningBounds(ArithmeticType t) { + result = strictcount(wideningLowerBounds(t)).maximum(strictcount(wideningUpperBounds(t))) } /** @@ -554,7 +553,7 @@ private module BoundsEstimate { ) } - /** Holds if `def` and `v` is a guard phi node with a bound from a guard. */ + /** Holds if `def` is a guard phi node for `v` with a bound from a guard. */ predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { exists(Expr guard, boolean branch | def.isGuardPhi(v, access, guard, branch) and @@ -562,7 +561,10 @@ private module BoundsEstimate { ) } - /** Gets the number of bounds for `def` and `v` as guard phi node. */ + /** + * Gets the number of bounds for `def` when `def` is a guard phi node for the + * variable `v`. + */ language[monotonicAggregates] private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { // If we have @@ -601,10 +603,12 @@ private module BoundsEstimate { result = 0 } - /** Gets the number of bounds for `def` and `v` as normal phi node. */ + /** + * Gets the number of bounds for `def` when `def` is a normal phi node for the + * variable `v`. + */ language[monotonicAggregates] private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { - // The implementation result = strictsum(RangeSsaDefinition inputDef | inputDef = def.getAPhiInput(v) @@ -617,7 +621,10 @@ private module BoundsEstimate { result = 0 } - /** Gets the number of bounds for `def` and `v` as an NE phi node. */ + /** + * Gets the number of bounds for `def` when `def` is an NE phi node for the + * variable `v`. + */ private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) or @@ -626,7 +633,10 @@ private module BoundsEstimate { result = 0 } - /** Gets the number of bounds for `def` and `v` as an unsupported guard phi node. */ + /** + * Gets the number of bounds for `def` when `def` is an unsupported guard phi + * node for the variable `v`. + */ private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { exists(VariableAccess access | isUnsupportedGuardPhi(v, def, access) and @@ -644,8 +654,7 @@ private module BoundsEstimate { // we sum the contributions from the different cases. result = nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + - nrOfBoundsUnsupportedGuardPhi(def, v) and - result != 0 + nrOfBoundsUnsupportedGuardPhi(def, v) } /** Gets the estimated number of bounds for `def` and `v`. */ @@ -656,7 +665,7 @@ private module BoundsEstimate { // estimate. Had that not been the case the estimate itself would be at risk // of causing performance issues and being non-functional. if isRecursiveDef(def, v) - then result = getNrOfWideningBounds() + then result = getNrOfWideningBounds(getVariableRangeType(v)) else ( // Definitions with a defining value exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) @@ -719,7 +728,7 @@ private module BoundsEstimate { // Similarly to what we do for definitions, we do not attempt to measure the // number of bounds for recursive expressions. if isRecursiveExpr(e) - then result = getNrOfWideningBounds() + then result = getNrOfWideningBounds(e.getUnspecifiedType()) else if analyzableExpr(e) then From 242f12d4befd7b1048d35d930f2a87a8ff2ddcf4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 10:52:49 +0200 Subject: [PATCH 210/965] SSA: Remove variable capture reference from shared class. --- shared/ssa/codeql/ssa/Ssa.qll | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 6321e1b8d75..5edf51127b8 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1555,17 +1555,6 @@ module Make< } predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SourceVariable v); - - /** - * Holds if `closureVar` is a local variable inside a closure that captures - * `captured`, which is the same variable in its declaring scope. The - * capture occurs at index `i` in basic block `bb`, and - * `variableRead(bb, i, captured, false)` must hold in order to include a - * pseudo-read of the captured variable at the point of capture. - */ - predicate variableCapture( - SourceVariable captured, SourceVariable closureVar, BasicBlock bb, int i - ); } module MakeSsa implements @@ -1593,15 +1582,6 @@ module Make< variableRead(bb, i, v, false) } - /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ - cached - predicate captures(SsaImplicitEntryDefinition init, Definition capturedvar) { - exists(BasicBlock bb, int i | - ssaDefReachesRead(_, capturedvar, bb, i) and - variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) - ) - } - cached predicate isLiveAtEndOfBlock(Definition def, BasicBlock bb) { ssaDefReachesEndOfBlock(bb, def, _) @@ -1665,8 +1645,7 @@ module Make< */ private SsaDefinition getAPhiInputOrPriorDefinition() { result = this.(SsaPhiDefinition).getAnInput() or - result = this.(SsaUncertainWrite).getPriorDefinition() or - this.(SsaImplicitEntryDefinition).captures(result) + result = this.(SsaUncertainWrite).getPriorDefinition() } /** @@ -1755,9 +1734,6 @@ module Make< */ class SsaImplicitEntryDefinition extends SsaImplicitWrite { SsaImplicitEntryDefinition() { this.definesAt(_, any(EntryBasicBlock bb), -1) } - - /** Holds if this is a closure definition that captures the value of `capturedvar`. */ - predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } } /** An SSA definition that represents an uncertain variable update. */ From e560ac197fed84bcaeb48455e9a7423e5574e3b9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 11:16:55 +0200 Subject: [PATCH 211/965] C#: Tracer support for invoking csc directly. --- .../Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs | 4 +++- csharp/tools/tracing-config.lua | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs index e52c79a17e1..6691ce51ab8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs @@ -74,7 +74,9 @@ namespace Semmle.Extraction.CSharp specifiedFramework = compilerDir; } - var versionInfo = FileVersionInfo.GetVersionInfo(SpecifiedCompiler); + // If csc is specified as compiler name, then attempt to read the version information from csc.dll + var compilerBinaryName = SpecifiedCompiler.EndsWith("csc") ? $"{SpecifiedCompiler}.dll" : SpecifiedCompiler; + var versionInfo = FileVersionInfo.GetVersionInfo(compilerBinaryName); if (!knownCompilerNames.TryGetValue(versionInfo.OriginalFilename ?? string.Empty, out var vendor)) { SkipExtractionBecause("the compiler name is not recognised"); diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index a48a93c073c..1bfa26ec20d 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -226,6 +226,11 @@ function RegisterExtractorPack(id) prepend = { '--compiler', '"${compiler}"' }, order = ORDER_BEFORE }), + CreatePatternMatcher({ '^csc$' }, MatchCompilerName, + extractor, { + prepend = { '--compiler', '${compiler}' }, + order = ORDER_BEFORE + }), MsBuildMatcher, function(compilerName, compilerPath, compilerArguments, _languageId) -- handle cases like `dotnet exec csc.dll ` and `mono(-sgen64) csc.exe ` From 6bc15bcedc446d6c48613d6db7abcde0c772632d Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 11:42:19 +0200 Subject: [PATCH 212/965] C#: Add change-note. --- csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md new file mode 100644 index 00000000000..b54f1e7d1b5 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. From 6f8b1f6f4c1066c3104aabb65a602e885701bd85 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 21 Oct 2025 11:43:58 +0200 Subject: [PATCH 213/965] Csharp: address review --- .../CWE-451/MissingXFrameOptions.ql | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql index 13569996d50..929f4f71987 100644 --- a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql @@ -16,6 +16,17 @@ import csharp import semmle.code.asp.WebConfig import semmle.code.csharp.frameworks.system.Web +XmlElement getAWebServerConfig(WebConfigXml webConfig) { + result = webConfig.getARootElement() + or + result = webConfig.getARootElement().getAChild("location") and + ( + not exists(result.getAttributeValue("path")) // equivalent to path="." + or + result.getAttributeValue("path") = ["", "."] + ) +} + /** * Holds if the `Web.config` file `webConfig` adds an `X-Frame-Options` header. */ @@ -31,15 +42,12 @@ predicate hasWebConfigXFrameOptions(WebConfigXml webConfig) { // // ``` // This can also be in a `location` - exists(XmlElement root | - root = webConfig.getARootElement() and - [root, root.getAChild("location")] - .getAChild("system.webServer") - .getAChild("httpProtocol") - .getAChild("customHeaders") - .getAChild("add") - .getAttributeValue("name") = "X-Frame-Options" - ) + getAWebServerConfig(webConfig) + .getAChild("system.webServer") + .getAChild("httpProtocol") + .getAChild("customHeaders") + .getAChild("add") + .getAttributeValue("name") = "X-Frame-Options" } /** From 316225bb882792e7c2488e38164424713f49e640 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 21 Oct 2025 11:47:21 +0200 Subject: [PATCH 214/965] Csharp: rename predicate --- .../src/Security Features/CWE-451/MissingXFrameOptions.ql | 6 +++--- .../src/change-notes/2025-10-17-location-in-web-config.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql index 929f4f71987..1b647457e7c 100644 --- a/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql +++ b/csharp/ql/src/Security Features/CWE-451/MissingXFrameOptions.ql @@ -16,12 +16,12 @@ import csharp import semmle.code.asp.WebConfig import semmle.code.csharp.frameworks.system.Web -XmlElement getAWebServerConfig(WebConfigXml webConfig) { +XmlElement getAWebConfigRoot(WebConfigXml webConfig) { result = webConfig.getARootElement() or result = webConfig.getARootElement().getAChild("location") and ( - not exists(result.getAttributeValue("path")) // equivalent to path="." + not result.hasAttribute("path") // equivalent to path="." or result.getAttributeValue("path") = ["", "."] ) @@ -42,7 +42,7 @@ predicate hasWebConfigXFrameOptions(WebConfigXml webConfig) { // // ``` // This can also be in a `location` - getAWebServerConfig(webConfig) + getAWebConfigRoot(webConfig) .getAChild("system.webServer") .getAChild("httpProtocol") .getAChild("customHeaders") diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md index 71c888d255e..441d944f5fe 100644 --- a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md +++ b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in `` elements. +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in a `` elements. From 715acefaccaf0711fbb9c85500cd46b76253d5de Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Oct 2025 12:52:59 +0200 Subject: [PATCH 215/965] Apply suggestions from code review Co-authored-by: Anders Schack-Mulligen --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 1 - java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index f075bb3d198..eb4f7c0f0b7 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -263,7 +263,6 @@ class ClassAnnotatedAsThreadSafe extends Class { not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and c = e and - // consider allowing idempotent monitors not Monitors::locallyMonitors(e, monitor) and m.getDeclaringType() = this ) diff --git a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql index 89e9cbdb169..bdb081ec4a6 100644 --- a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql @@ -41,7 +41,7 @@ predicate not_fully_monitored_field( cls.has_public_write_access(f) ) and msg = - "The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe." and + "This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe." and cls_name = cls.getName() } From d691c3215f7ec607d7c098213f0dfb79544054bd Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 11:59:56 +0100 Subject: [PATCH 216/965] Rust: Add expressions with unknown type metric (expected by DCA). --- rust/ql/src/queries/telemetry/DatabaseQuality.qll | 15 +++++++++++++++ .../src/queries/telemetry/ExtractorInformation.ql | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/rust/ql/src/queries/telemetry/DatabaseQuality.qll b/rust/ql/src/queries/telemetry/DatabaseQuality.qll index 15826fec4c4..0b874a9b9ce 100644 --- a/rust/ql/src/queries/telemetry/DatabaseQuality.qll +++ b/rust/ql/src/queries/telemetry/DatabaseQuality.qll @@ -6,6 +6,7 @@ import rust import codeql.util.ReportStats +import codeql.rust.internal.TypeInference as TypeInference module CallTargetStats implements StatsSig { int getNumberOfOk() { result = count(CallExprBase c | exists(c.getStaticTarget())) } @@ -41,6 +42,20 @@ module MacroCallTargetStats implements StatsSig { string getNotOkText() { result = "macro calls with missing call target" } } +private predicate hasGoodType(Expr e) { exists(TypeInference::inferType(e, _)) } + +module ExprTypeStats implements StatsSig { + int getNumberOfOk() { result = count(Expr e | e.fromSource() and hasGoodType(e)) } + + int getNumberOfNotOk() { result = count(Expr e | e.fromSource() and not hasGoodType(e)) } + + string getOkText() { result = "expressions with known type" } + + string getNotOkText() { result = "expressions with unknown type" } +} + module CallTargetStatsReport = ReportStats; module MacroCallTargetStatsReport = ReportStats; + +module ExprTypeStatsReport = ReportStats; diff --git a/rust/ql/src/queries/telemetry/ExtractorInformation.ql b/rust/ql/src/queries/telemetry/ExtractorInformation.ql index f61dfe515a9..ab18ecf489f 100644 --- a/rust/ql/src/queries/telemetry/ExtractorInformation.ql +++ b/rust/ql/src/queries/telemetry/ExtractorInformation.ql @@ -54,7 +54,10 @@ where CallTargetStatsReport::percentageOfOk(key, value) or MacroCallTargetStatsReport::numberOfOk(key, value) or MacroCallTargetStatsReport::numberOfNotOk(key, value) or - MacroCallTargetStatsReport::percentageOfOk(key, value) + MacroCallTargetStatsReport::percentageOfOk(key, value) or + ExprTypeStatsReport::numberOfOk(key, value) or + ExprTypeStatsReport::numberOfNotOk(key, value) or + ExprTypeStatsReport::percentageOfOk(key, value) ) and /* Infinity */ value != 1.0 / 0.0 and From af5622a60e8ff940f14c1e43856b9b21ece913a1 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 13:03:53 +0200 Subject: [PATCH 217/965] C#: Address review comments. --- .../Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs index 6691ce51ab8..209f96e1bca 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs @@ -75,7 +75,7 @@ namespace Semmle.Extraction.CSharp } // If csc is specified as compiler name, then attempt to read the version information from csc.dll - var compilerBinaryName = SpecifiedCompiler.EndsWith("csc") ? $"{SpecifiedCompiler}.dll" : SpecifiedCompiler; + var compilerBinaryName = Path.GetFileName(SpecifiedCompiler) == "csc" ? $"{SpecifiedCompiler}.dll" : SpecifiedCompiler; var versionInfo = FileVersionInfo.GetVersionInfo(compilerBinaryName); if (!knownCompilerNames.TryGetValue(versionInfo.OriginalFilename ?? string.Empty, out var vendor)) { From def522d122827323c768a88b0ef36099945df141 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 13:12:21 +0200 Subject: [PATCH 218/965] C#: Make sure that the file exists before attempting to get version info. --- .../Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs index 209f96e1bca..5429f2bba07 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/CompilerVersion.cs @@ -76,7 +76,7 @@ namespace Semmle.Extraction.CSharp // If csc is specified as compiler name, then attempt to read the version information from csc.dll var compilerBinaryName = Path.GetFileName(SpecifiedCompiler) == "csc" ? $"{SpecifiedCompiler}.dll" : SpecifiedCompiler; - var versionInfo = FileVersionInfo.GetVersionInfo(compilerBinaryName); + var versionInfo = FileVersionInfo.GetVersionInfo(File.Exists(compilerBinaryName) ? compilerBinaryName : SpecifiedCompiler); if (!knownCompilerNames.TryGetValue(versionInfo.OriginalFilename ?? string.Empty, out var vendor)) { SkipExtractionBecause("the compiler name is not recognised"); From de05bfbce3c703a6e5ef1e391819ee1c3125556f Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Oct 2025 12:49:07 +0200 Subject: [PATCH 219/965] java: address review comments - do not use `getQualifiedName` - use camelCase - rework alert predicates --- .../semmle/code/java/ConflictingAccess.qll | 79 +++++++++---------- .../src/Likely Bugs/Concurrency/ThreadSafe.ql | 31 +++----- .../ThreadSafe/ThreadSafe.expected | 10 +-- 3 files changed, 57 insertions(+), 63 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index eb4f7c0f0b7..39f8a5e1e9e 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -44,11 +44,11 @@ predicate isThreadSafeType(Type t) { /** Holds if the expression `e` is a thread-safe initializer. */ predicate isThreadSafeInitializer(Expr e) { - e.(Call) - .getCallee() - .getSourceDeclaration() - .getQualifiedName() - .matches("java.util.Collections.synchronized%") + exists(string name | + e.(Call).getCallee().getSourceDeclaration().hasQualifiedName("java.util", "Collections", name) + | + name.matches("synchronized%") + ) } /** @@ -132,7 +132,7 @@ class ClassAnnotatedAsThreadSafe extends Class { * Holds if the field access `a` to the field `f` is not protected by any monitor, and it can be reached via the expression `e` in the method `m`. * We maintain the invariant that `m = e.getEnclosingCallable()`. */ - predicate unlocked_access(ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write) { + predicate unlockedAccess(ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write) { m.getDeclaringType() = this and ( // base case @@ -143,7 +143,7 @@ class ClassAnnotatedAsThreadSafe extends Class { (if Modification::isModifying(a) then write = true else write = false) or // recursive case - exists(MethodCall c, Expr e0, Method m0 | this.unlocked_access(f, e0, m0, a, write) | + exists(MethodCall c, Expr e0, Method m0 | this.unlockedAccess(f, e0, m0, a, write) | m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -154,22 +154,22 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the method `m`. */ - predicate has_unlocked_access(ExposedField f, Expr e, Method m, boolean write) { - this.unlocked_access(f, e, m, _, write) + predicate hasUnlockedAccess(ExposedField f, Expr e, Method m, boolean write) { + this.unlockedAccess(f, e, m, _, write) } /** Holds if the field access `a` to the field `f` is not protected by any monitor, and it can be reached via the expression `e` in the public method `m`. */ - predicate unlocked_public_access( + predicate unlockedPublicAccess( ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write ) { - this.unlocked_access(f, e, m, a, write) and + this.unlockedAccess(f, e, m, a, write) and m.isPublic() and not Monitors::locallyMonitors(e, _) } /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the public method `m`. */ - predicate has_unlocked_public_access(ExposedField f, Expr e, Method m, boolean write) { - this.unlocked_public_access(f, e, m, _, write) + predicate hasUnlockedPublicAccess(ExposedField f, Expr e, Method m, boolean write) { + this.unlockedPublicAccess(f, e, m, _, write) } // Cases where all accesses to a field are protected by exactly one monitor @@ -177,15 +177,15 @@ class ClassAnnotatedAsThreadSafe extends Class { /** * Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the method `m`. */ - predicate has_onelocked_access( + predicate hasOnelockedAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base - this.has_unlocked_access(f, e, m, write) and + this.hasUnlockedAccess(f, e, m, write) and Monitors::locallyMonitors(e, monitor) or // recursive case - exists(MethodCall c, Method m0 | this.has_onelocked_access(f, _, m0, write, monitor) | + exists(MethodCall c, Method m0 | this.hasOnelockedAccess(f, _, m0, write, monitor) | m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -197,34 +197,33 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the public method `m`. */ - predicate has_onelocked_public_access( + predicate hasOnelockedPublicAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { - this.has_onelocked_access(f, e, m, write, monitor) and + this.hasOnelockedAccess(f, e, m, write, monitor) and m.isPublic() and - not this.has_unlocked_public_access(f, e, m, write) + not this.hasUnlockedPublicAccess(f, e, m, write) } /** Holds if the field `f` has more than one access, all locked by a single monitor, but different monitors are used. */ - predicate single_monitor_mismatch(ExposedField f) { - 2 <= - strictcount(Monitors::Monitor monitor | this.has_onelocked_public_access(f, _, _, _, monitor)) + predicate singleMonitorMismatch(ExposedField f) { + 2 <= strictcount(Monitors::Monitor monitor | this.hasOnelockedPublicAccess(f, _, _, _, monitor)) } // Cases where all accesses to a field are protected by at least one monitor // /** Holds if the class has an access, locked by at least one monitor, to the field `f` via the expression `e` in the method `m`. */ - predicate has_onepluslocked_access( + predicate hasOnepluslockedAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base - this.has_onelocked_access(f, e, m, write, monitor) and - not this.single_monitor_mismatch(f) and - not this.has_unlocked_public_access(f, _, _, _) + this.hasOnelockedAccess(f, e, m, write, monitor) and + not this.singleMonitorMismatch(f) and + not this.hasUnlockedPublicAccess(f, _, _, _) or // recursive case exists(MethodCall c, Method m0, Monitors::Monitor monitor0 | - this.has_onepluslocked_access(f, _, m0, write, monitor0) and + this.hasOnepluslockedAccess(f, _, m0, write, monitor0) and m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -238,27 +237,27 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has a write access to the field `f` that can be reached via a public method. */ - predicate has_public_write_access(ExposedField f) { - this.has_unlocked_public_access(f, _, _, true) + predicate hasPublicWriteAccess(ExposedField f) { + this.hasUnlockedPublicAccess(f, _, _, true) or - this.has_onelocked_public_access(f, _, _, true, _) + this.hasOnelockedPublicAccess(f, _, _, true, _) or exists(Method m | m.getDeclaringType() = this and m.isPublic() | - this.has_onepluslocked_access(f, _, m, true, _) + this.hasOnepluslockedAccess(f, _, m, true, _) ) } /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the method `m`. */ - predicate escapes_monitor( + predicate escapesMonitor( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base - this.has_onepluslocked_access(f, _, _, _, monitor) and - this.has_unlocked_access(f, e, m, write) and + this.hasOnepluslockedAccess(f, _, _, _, monitor) and + this.hasUnlockedAccess(f, e, m, write) and not Monitors::locallyMonitors(e, monitor) or // recursive case - exists(MethodCall c, Method m0 | this.escapes_monitor(f, _, m0, write, monitor) | + exists(MethodCall c, Method m0 | this.escapesMonitor(f, _, m0, write, monitor) | m = c.getEnclosingCallable() and not m0.isPublic() and c.getCallee().getSourceDeclaration() = m0 and @@ -269,17 +268,17 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the public method `m`. */ - predicate escapes_monitor_public( + predicate escapesMonitorPublic( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { - this.escapes_monitor(f, e, m, write, monitor) and + this.escapesMonitor(f, e, m, write, monitor) and m.isPublic() } /** Holds if no monitor protects all accesses to the field `f`. */ - predicate not_fully_monitored(ExposedField f) { - forex(Monitors::Monitor monitor | this.has_onepluslocked_access(f, _, _, _, monitor) | - this.escapes_monitor_public(f, _, _, _, monitor) + predicate notFullyMonitored(ExposedField f) { + forex(Monitors::Monitor monitor | this.hasOnepluslockedAccess(f, _, _, _, monitor) | + this.escapesMonitorPublic(f, _, _, _, monitor) ) } } diff --git a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql index bdb081ec4a6..fafa4701ed2 100644 --- a/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql @@ -14,43 +14,38 @@ import java import semmle.code.java.ConflictingAccess -predicate unmonitored_access( - ClassAnnotatedAsThreadSafe cls, ExposedFieldAccess a, Expr entry, string msg, string entry_desc -) { - exists(ExposedField f | - cls.unlocked_public_access(f, entry, _, a, true) +predicate unmonitoredAccess(ExposedFieldAccess a, string msg, Expr entry, string entry_desc) { + exists(ClassAnnotatedAsThreadSafe cls, ExposedField f | + cls.unlockedPublicAccess(f, entry, _, a, true) or - cls.unlocked_public_access(f, entry, _, a, false) and - cls.has_public_write_access(f) + cls.unlockedPublicAccess(f, entry, _, a, false) and + cls.hasPublicWriteAccess(f) ) and msg = "This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe." and entry_desc = "this expression" } -predicate not_fully_monitored_field( - ClassAnnotatedAsThreadSafe cls, ExposedField f, string msg, string cls_name +predicate notFullyMonitoredField( + ExposedField f, string msg, ClassAnnotatedAsThreadSafe cls, string cls_name ) { ( // Technically there has to be a write access for a conflict to exist. // But if you are locking your reads with different locks, you likely made a typo, // so in this case we alert without requiring `cls.has_public_write_access(f)` - cls.single_monitor_mismatch(f) + cls.singleMonitorMismatch(f) or - cls.not_fully_monitored(f) and - cls.has_public_write_access(f) + cls.notFullyMonitored(f) and + cls.hasPublicWriteAccess(f) ) and msg = "This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe." and cls_name = cls.getName() } -from - ClassAnnotatedAsThreadSafe cls, Top alert_element, Top alert_context, string alert_msg, - string context_desc +from Top alert_element, Top alert_context, string alert_msg, string context_desc where - unmonitored_access(cls, alert_element, alert_context, alert_msg, context_desc) + unmonitoredAccess(alert_element, alert_msg, alert_context, context_desc) or - not_fully_monitored_field(cls, alert_element, alert_msg, context_desc) and - alert_context = cls + notFullyMonitoredField(alert_element, alert_msg, alert_context, context_desc) select alert_element, alert_msg, alert_context, context_desc diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index ae2bd4ea5c8..d6005400129 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -10,12 +10,12 @@ | examples/C.java:30:13:30:13 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:30:13:30:13 | y | this expression | | examples/C.java:33:9:33:9 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:33:9:33:9 | y | this expression | | examples/FaultyTurnstileExample.java:18:5:18:9 | count | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this expression | -| examples/FaultyTurnstileExample.java:26:15:26:19 | count | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:23:7:23:29 | FaultyTurnstileExample2 | FaultyTurnstileExample2 | +| examples/FaultyTurnstileExample.java:26:15:26:19 | count | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:23:7:23:29 | FaultyTurnstileExample2 | FaultyTurnstileExample2 | | examples/FlawedSemaphore.java:15:14:15:18 | state | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FlawedSemaphore.java:15:14:15:18 | state | this expression | | examples/FlawedSemaphore.java:18:7:18:11 | state | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FlawedSemaphore.java:18:7:18:11 | state | this expression | -| examples/LockExample.java:18:15:18:20 | length | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | -| examples/LockExample.java:19:15:19:31 | notRelatedToOther | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | -| examples/LockExample.java:20:17:20:23 | content | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:18:15:18:20 | length | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:19:15:19:31 | notRelatedToOther | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | +| examples/LockExample.java:20:17:20:23 | content | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/LockExample.java:14:14:14:24 | LockExample | LockExample | | examples/LockExample.java:44:5:44:10 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:44:5:44:10 | length | this expression | | examples/LockExample.java:45:5:45:11 | content | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:45:5:45:11 | content | this expression | | examples/LockExample.java:45:13:45:18 | length | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:45:13:45:18 | length | this expression | @@ -36,7 +36,7 @@ | examples/LockExample.java:153:5:153:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | | examples/SyncLstExample.java:45:5:45:7 | lst | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | | examples/SyncStackExample.java:37:5:37:7 | stc | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | -| examples/SynchronizedAndLock.java:10:17:10:22 | length | The field $@ is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/SynchronizedAndLock.java:7:14:7:32 | SynchronizedAndLock | SynchronizedAndLock | +| examples/SynchronizedAndLock.java:10:17:10:22 | length | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/SynchronizedAndLock.java:7:14:7:32 | SynchronizedAndLock | SynchronizedAndLock | | examples/Test.java:52:5:52:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:24:5:24:18 | setYPrivate(...) | this expression | | examples/Test.java:60:5:60:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:60:5:60:10 | this.y | this expression | | examples/Test.java:74:5:74:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:5:74:10 | this.y | this expression | From f4878b38069642b59389ee42c10fe72bfeb1c139 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Oct 2025 13:24:23 +0200 Subject: [PATCH 220/965] java: make as many predicates private as possible --- java/ql/lib/semmle/code/java/Concurrency.qll | 6 +++--- .../semmle/code/java/ConflictingAccess.qll | 20 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index 7fbf0647b27..b16aa850c39 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -15,19 +15,19 @@ class LockType extends RefType { } /** Gets a method that is locking this lock type. */ - Method getLockMethod() { + private Method getLockMethod() { result.getDeclaringType() = this and result.hasName(["lock", "lockInterruptibly", "tryLock"]) } /** Gets a method that is unlocking this lock type. */ - Method getUnlockMethod() { + private Method getUnlockMethod() { result.getDeclaringType() = this and result.hasName("unlock") } /** Gets an `isHeldByCurrentThread` method of this lock type. */ - Method getIsHeldByCurrentThreadMethod() { + private Method getIsHeldByCurrentThreadMethod() { result.getDeclaringType() = this and result.hasName("isHeldByCurrentThread") } diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 39f8a5e1e9e..ceff3e4ffa3 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -43,7 +43,7 @@ predicate isThreadSafeType(Type t) { } /** Holds if the expression `e` is a thread-safe initializer. */ -predicate isThreadSafeInitializer(Expr e) { +private predicate isThreadSafeInitializer(Expr e) { exists(string name | e.(Call).getCallee().getSourceDeclaration().hasQualifiedName("java.util", "Collections", name) | @@ -132,7 +132,9 @@ class ClassAnnotatedAsThreadSafe extends Class { * Holds if the field access `a` to the field `f` is not protected by any monitor, and it can be reached via the expression `e` in the method `m`. * We maintain the invariant that `m = e.getEnclosingCallable()`. */ - predicate unlockedAccess(ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write) { + private predicate unlockedAccess( + ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write + ) { m.getDeclaringType() = this and ( // base case @@ -154,7 +156,7 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the method `m`. */ - predicate hasUnlockedAccess(ExposedField f, Expr e, Method m, boolean write) { + private predicate hasUnlockedAccess(ExposedField f, Expr e, Method m, boolean write) { this.unlockedAccess(f, e, m, _, write) } @@ -168,7 +170,7 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the public method `m`. */ - predicate hasUnlockedPublicAccess(ExposedField f, Expr e, Method m, boolean write) { + private predicate hasUnlockedPublicAccess(ExposedField f, Expr e, Method m, boolean write) { this.unlockedPublicAccess(f, e, m, _, write) } @@ -177,7 +179,7 @@ class ClassAnnotatedAsThreadSafe extends Class { /** * Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the method `m`. */ - predicate hasOnelockedAccess( + private predicate hasOnelockedAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base @@ -197,7 +199,7 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the public method `m`. */ - predicate hasOnelockedPublicAccess( + private predicate hasOnelockedPublicAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { this.hasOnelockedAccess(f, e, m, write, monitor) and @@ -213,7 +215,7 @@ class ClassAnnotatedAsThreadSafe extends Class { // Cases where all accesses to a field are protected by at least one monitor // /** Holds if the class has an access, locked by at least one monitor, to the field `f` via the expression `e` in the method `m`. */ - predicate hasOnepluslockedAccess( + private predicate hasOnepluslockedAccess( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base @@ -248,7 +250,7 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the method `m`. */ - predicate escapesMonitor( + private predicate escapesMonitor( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { //base @@ -268,7 +270,7 @@ class ClassAnnotatedAsThreadSafe extends Class { } /** Holds if the class has an access, not protected by the monitor `m`, to the field `f` via the expression `e` in the public method `m`. */ - predicate escapesMonitorPublic( + private predicate escapesMonitorPublic( ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor ) { this.escapesMonitor(f, e, m, write, monitor) and From f183a7223fd4d2676975e6e4089e8b369e7ab611 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Oct 2025 13:40:29 +0200 Subject: [PATCH 221/965] java: add test for `notFullyMonitored` --- .../ThreadSafe/ThreadSafe.expected | 1 + .../ThreadSafe/examples/ManyLocks.java | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index d6005400129..a4da07d7ac6 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -34,6 +34,7 @@ | examples/LockExample.java:124:5:124:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this expression | | examples/LockExample.java:145:5:145:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this expression | | examples/LockExample.java:153:5:153:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | +| examples/ManyLocks.java:8:15:8:15 | y | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/ManyLocks.java:7:14:7:22 | ManyLocks | ManyLocks | | examples/SyncLstExample.java:45:5:45:7 | lst | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | | examples/SyncStackExample.java:37:5:37:7 | stc | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | | examples/SynchronizedAndLock.java:10:17:10:22 | length | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/SynchronizedAndLock.java:7:14:7:32 | SynchronizedAndLock | SynchronizedAndLock | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java b/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java new file mode 100644 index 00000000000..93557ecdafe --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java @@ -0,0 +1,37 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class ManyLocks { + private int y; // $ Alert + + private final Lock lock1 = new ReentrantLock(); + private final Lock lock2 = new ReentrantLock(); + private final Lock lock3 = new ReentrantLock(); + + public void inc() { + lock1.lock(); + lock2.lock(); + y++; + lock2.unlock(); + lock1.unlock(); + } + + public void dec() { + lock2.lock(); + lock3.lock(); + y--; + lock3.unlock(); + lock2.unlock(); + } + + public void reset() { + lock1.lock(); + lock3.lock(); + y = 0; + lock3.unlock(); + lock1.unlock(); + } +} \ No newline at end of file From 9e77e5b0468055aca55417569d3ab8831a1c103d Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 21 Oct 2025 14:02:36 +0200 Subject: [PATCH 222/965] java: add test with deeper paths also format test files --- .../ThreadSafe/ThreadSafe.expected | 3 +- .../ThreadSafe/examples/DeepPaths.java | 61 +++++++++++++++++++ .../ThreadSafe/examples/ManyLocks.java | 50 +++++++-------- 3 files changed, 88 insertions(+), 26 deletions(-) create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/DeepPaths.java diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index a4da07d7ac6..3d73caaffe5 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -9,6 +9,7 @@ | examples/C.java:26:9:26:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:26:9:26:14 | this.y | this expression | | examples/C.java:30:13:30:13 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:30:13:30:13 | y | this expression | | examples/C.java:33:9:33:9 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:33:9:33:9 | y | this expression | +| examples/DeepPaths.java:8:17:8:17 | y | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/DeepPaths.java:7:14:7:22 | DeepPaths | DeepPaths | | examples/FaultyTurnstileExample.java:18:5:18:9 | count | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:18:5:18:9 | count | this expression | | examples/FaultyTurnstileExample.java:26:15:26:19 | count | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/FaultyTurnstileExample.java:23:7:23:29 | FaultyTurnstileExample2 | FaultyTurnstileExample2 | | examples/FlawedSemaphore.java:15:14:15:18 | state | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/FlawedSemaphore.java:15:14:15:18 | state | this expression | @@ -34,7 +35,7 @@ | examples/LockExample.java:124:5:124:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:124:5:124:21 | notRelatedToOther | this expression | | examples/LockExample.java:145:5:145:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:145:5:145:21 | notRelatedToOther | this expression | | examples/LockExample.java:153:5:153:21 | notRelatedToOther | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/LockExample.java:153:5:153:21 | notRelatedToOther | this expression | -| examples/ManyLocks.java:8:15:8:15 | y | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/ManyLocks.java:7:14:7:22 | ManyLocks | ManyLocks | +| examples/ManyLocks.java:8:17:8:17 | y | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/ManyLocks.java:7:14:7:22 | ManyLocks | ManyLocks | | examples/SyncLstExample.java:45:5:45:7 | lst | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncLstExample.java:45:5:45:7 | lst | this expression | | examples/SyncStackExample.java:37:5:37:7 | stc | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/SyncStackExample.java:37:5:37:7 | stc | this expression | | examples/SynchronizedAndLock.java:10:17:10:22 | length | This field is not properly synchronized in that no single monitor covers all accesses, but the class $@ is annotated as @ThreadSafe. | examples/SynchronizedAndLock.java:7:14:7:32 | SynchronizedAndLock | SynchronizedAndLock | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/DeepPaths.java b/java/ql/test/query-tests/ThreadSafe/examples/DeepPaths.java new file mode 100644 index 00000000000..095087a5018 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/DeepPaths.java @@ -0,0 +1,61 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class DeepPaths { + private int y; // $ Alert + + private final Lock lock1 = new ReentrantLock(); + private final Lock lock2 = new ReentrantLock(); + private final Lock lock3 = new ReentrantLock(); + + public void layer1Locked() { + lock1.lock(); + this.layer2Locked(); + lock1.unlock(); + } + + private void layer2Locked() { + lock2.lock(); + this.layer3Unlocked(); + lock2.unlock(); + } + + private void layer3Locked() { + lock3.lock(); + y++; + lock3.unlock(); + } + + public void layer1Skip() { + lock2.lock(); + this.layer3Locked(); + lock2.unlock(); + } + + public void layer1Indirect() { + this.layer2(); + } + + private void layer2() { + this.layer2Locked(); + } + + public void layer1Unlocked() { + this.layer2Unlocked(); + } + + private void layer2Unlocked() { + this.layer3(); + } + + private void layer3() { + this.layer3Locked(); + } + + private void layer3Unlocked() { + y++; + } +} diff --git a/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java b/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java index 93557ecdafe..a7e19b3424b 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java @@ -5,33 +5,33 @@ import java.util.concurrent.locks.ReentrantLock; @ThreadSafe public class ManyLocks { - private int y; // $ Alert + private int y; // $ Alert - private final Lock lock1 = new ReentrantLock(); - private final Lock lock2 = new ReentrantLock(); - private final Lock lock3 = new ReentrantLock(); + private final Lock lock1 = new ReentrantLock(); + private final Lock lock2 = new ReentrantLock(); + private final Lock lock3 = new ReentrantLock(); - public void inc() { - lock1.lock(); - lock2.lock(); - y++; - lock2.unlock(); - lock1.unlock(); - } + public void inc() { + lock1.lock(); + lock2.lock(); + y++; + lock2.unlock(); + lock1.unlock(); + } - public void dec() { - lock2.lock(); - lock3.lock(); - y--; - lock3.unlock(); - lock2.unlock(); - } + public void dec() { + lock2.lock(); + lock3.lock(); + y--; + lock3.unlock(); + lock2.unlock(); + } - public void reset() { - lock1.lock(); - lock3.lock(); - y = 0; - lock3.unlock(); - lock1.unlock(); - } + public void reset() { + lock1.lock(); + lock3.lock(); + y = 0; + lock3.unlock(); + lock1.unlock(); + } } \ No newline at end of file From 751d62aefbc9a70f0ca8cb0d1c17222f1d46f2e1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:29:14 +0100 Subject: [PATCH 223/965] Rust: Add the metric to rust/diagnostic/database-quality (with a very low threshold for the time being). --- rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql b/rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql index 63fb1e4c6cc..02933b3bd5f 100644 --- a/rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql +++ b/rust/ql/src/queries/telemetry/DatabaseQualityDiagnostics.ql @@ -13,6 +13,8 @@ private predicate diagnostic(string msg, float value, float threshold) { CallTargetStatsReport::percentageOfOk(msg, value) and threshold = 50 or MacroCallTargetStatsReport::percentageOfOk(msg, value) and threshold = 50 + or + ExprTypeStatsReport::percentageOfOk(msg, value) and threshold = 20 } private string getDbHealth() { From 7da00b3e9d032bc37e05aeabd2c2ab0da1871e8b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:33:17 +0100 Subject: [PATCH 224/965] Rust: Change note. --- .../change-notes/2025-10-21-database-quality-diagnostic.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md diff --git a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md new file mode 100644 index 00000000000..322bdb7c5ab --- /dev/null +++ b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. From f207404b0da8a7cfaca316bf032291d856648327 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 21 Oct 2025 16:03:12 +0200 Subject: [PATCH 225/965] C++: Accept test changes --- .../SimpleRangeAnalysis/nrOfBounds.expected | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index d6d689848d5..c5905117615 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -4276,13 +4276,13 @@ | test.c:815:9:815:9 | (int)... | 2.0 | | test.c:815:9:815:9 | n | 2.0 | | test.c:818:10:818:10 | (int)... | 13.0 | -| test.c:818:10:818:10 | n | 13.0 | +| test.c:818:10:818:10 | n | 12.0 | | test.c:818:10:818:15 | ... != ... | 1.0 | | test.c:818:15:818:15 | 0 | 1.0 | -| test.c:819:5:819:5 | n | 13.0 | -| test.c:819:5:819:7 | ... -- | 13.0 | -| test.c:822:7:822:7 | (int)... | 13.0 | -| test.c:822:7:822:7 | n | 13.0 | +| test.c:819:5:819:5 | n | 12.0 | +| test.c:819:5:819:7 | ... -- | 12.0 | +| test.c:822:7:822:7 | (int)... | 12.0 | +| test.c:822:7:822:7 | n | 12.0 | | test.c:826:7:826:7 | (int)... | 1.0 | | test.c:826:7:826:7 | n | 1.0 | | test.c:826:7:826:12 | ... != ... | 1.0 | @@ -4569,19 +4569,15 @@ | test.cpp:95:12:95:16 | (reference dereference) | 1.0 | | test.cpp:95:12:95:16 | alias | 1.0 | | test.cpp:97:10:97:10 | (reference dereference) | 13.0 | -| test.cpp:97:10:97:10 | i | 13.0 | | test.cpp:97:10:97:19 | ... <= ... | 1.0 | | test.cpp:97:15:97:19 | 12345 | 1.0 | | test.cpp:97:22:97:22 | (reference dereference) | 13.0 | -| test.cpp:97:22:97:22 | i | 13.0 | | test.cpp:97:22:97:24 | ... ++ | 13.0 | | test.cpp:98:5:98:5 | (reference dereference) | 1.0 | | test.cpp:98:5:98:5 | i | 1.0 | | test.cpp:98:5:98:9 | ... = ... | 13.0 | | test.cpp:98:9:98:9 | (reference dereference) | 13.0 | -| test.cpp:98:9:98:9 | i | 13.0 | | test.cpp:99:5:99:5 | (reference dereference) | 13.0 | -| test.cpp:99:5:99:5 | i | 13.0 | | test.cpp:102:10:102:10 | 0 | 1.0 | | test.cpp:106:7:106:7 | (int)... | 1.0 | | test.cpp:106:7:106:7 | n | 1.0 | From edabfa73bf5c292c085ab454febb5b2c730aa6f3 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:30:32 +0100 Subject: [PATCH 226/965] Rust: Delete a no-longer-used test file. --- .../library-tests/dataflow/sources/reqwest.rs | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/sources/reqwest.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/reqwest.rs b/rust/ql/test/library-tests/dataflow/sources/reqwest.rs deleted file mode 100644 index 3e8f5ef8510..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/reqwest.rs +++ /dev/null @@ -1,36 +0,0 @@ - -// --- stubs for the "reqwest" library --- - -/* - --- we don't seem to have a way to use this, hence we currently test against the real reqwest library -#[derive(Debug)] -pub struct Error { } - -pub mod blocking { - pub struct Response { } - impl Response { - pub fn text(self) -> Result { - Ok("".to_string()) - } - } - - pub fn get(url: T) -> Result { - let _url = url; - - Ok(Response {}) - } -} - -pub struct Response { } -impl Response { - pub async fn text(self) -> Result { - Ok("".to_string()) - } -} - -pub async fn get(url: T) -> Result { - let _url = url; - - Ok(Response {}) -} -*/ From c50175bc9b8c42fddb4a32b81a1cbc446be73502 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 21 Oct 2025 10:32:00 -0400 Subject: [PATCH 227/965] Crypto: ql-for-ql alert fixes. --- java/ql/src/experimental/quantum/Examples/BadMacOrder.qll | 4 ++-- .../experimental/quantum/Examples/BadMacOrderDecryptToMac.ql | 1 - .../quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll index 09eb2c31ff1..645a092d57c 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -18,8 +18,8 @@ predicate isDecryptToMacFlow(ArtifactFlow::PathNode src, ArtifactFlow::PathNode } predicate isDecryptToMacNode(Crypto::ArtifactNode node) { - exists(ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink | - isDecryptToMacFlow(src, sink) and + exists(ArtifactFlow::PathNode src | + isDecryptToMacFlow(src, _) and node.asElement() = src.getNode().asExpr() ) } diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index 8d887159282..85b34a926a6 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -9,7 +9,6 @@ */ import java -import experimental.quantum.Language import ArtifactFlow::PathGraph import BadMacOrder diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index fde5fa6baa0..741a969605e 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -9,7 +9,6 @@ */ import java -import experimental.quantum.Language import BadMacOrder import PlaintextUseAsMacAndCipherInputFlow::PathGraph From ddeb42cddb4cd9c3b624c20eb88af720b7eb485c Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 21 Oct 2025 11:04:57 -0400 Subject: [PATCH 228/965] Crypto: Adding false positive to BadMacUse.java, we have no way to avoid this FP currently but should note it exists in the test case. --- .../BadMacOrderDecryptToMac.expected | 39 +++++++++--- .../quantum/examples/BadMacUse/BadMacUse.java | 61 ++++++++++++++++--- 2 files changed, 84 insertions(+), 16 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index ac7b1b9c3c0..ac338cbfa7a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -1,13 +1,36 @@ #select -| BadMacUse.java:60:42:60:50 | plaintext | BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | BadMacUse.java:60:42:60:50 | plaintext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | +| BadMacUse.java:56:42:56:50 | plaintext | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | +| BadMacUse.java:124:42:124:51 | ciphertext | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | edges -| BadMacUse.java:30:29:30:53 | doFinal(...) : byte[] | BadMacUse.java:35:42:35:51 | ciphertext | provenance | | -| BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | BadMacUse.java:60:42:60:50 | plaintext | provenance | | +| BadMacUse.java:27:29:27:53 | doFinal(...) : byte[] | BadMacUse.java:32:42:32:51 | ciphertext | provenance | | +| BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | provenance | | +| BadMacUse.java:84:83:84:91 | iv : byte[] | BadMacUse.java:90:63:90:64 | iv : byte[] | provenance | | +| BadMacUse.java:90:43:90:65 | new IvParameterSpec(...) : IvParameterSpec | BadMacUse.java:91:42:91:56 | ivParameterSpec | provenance | Sink:MaD:1 | +| BadMacUse.java:90:63:90:64 | iv : byte[] | BadMacUse.java:90:43:90:65 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | +| BadMacUse.java:90:63:90:64 | iv : byte[] | BadMacUse.java:90:43:90:65 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | +| BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:118:29:118:106 | cipherOperationWrapper(...) : byte[] | provenance | | +| BadMacUse.java:117:38:117:39 | iv : byte[] | BadMacUse.java:118:83:118:84 | iv : byte[] | provenance | | +| BadMacUse.java:118:29:118:106 | cipherOperationWrapper(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | provenance | | +| BadMacUse.java:118:83:118:84 | iv : byte[] | BadMacUse.java:84:83:84:91 | iv : byte[] | provenance | | +models +| 1 | Sink: javax.crypto; Cipher; true; init; (int,Key,AlgorithmParameterSpec); ; Argument[2]; encryption-iv; manual | +| 2 | Summary: javax.crypto.spec; IvParameterSpec; true; IvParameterSpec; ; ; Argument[0]; Argument[this]; taint; manual | nodes -| BadMacUse.java:30:29:30:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | -| BadMacUse.java:35:42:35:51 | ciphertext | semmle.label | ciphertext | -| BadMacUse.java:54:28:54:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | -| BadMacUse.java:60:42:60:50 | plaintext | semmle.label | plaintext | +| BadMacUse.java:27:29:27:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | +| BadMacUse.java:32:42:32:51 | ciphertext | semmle.label | ciphertext | +| BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | +| BadMacUse.java:56:42:56:50 | plaintext | semmle.label | plaintext | +| BadMacUse.java:84:83:84:91 | iv : byte[] | semmle.label | iv : byte[] | +| BadMacUse.java:90:43:90:65 | new IvParameterSpec(...) : IvParameterSpec | semmle.label | new IvParameterSpec(...) : IvParameterSpec | +| BadMacUse.java:90:63:90:64 | iv : byte[] | semmle.label | iv : byte[] | +| BadMacUse.java:91:42:91:56 | ivParameterSpec | semmle.label | ivParameterSpec | +| BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | +| BadMacUse.java:117:38:117:39 | iv : byte[] | semmle.label | iv : byte[] | +| BadMacUse.java:118:29:118:106 | cipherOperationWrapper(...) : byte[] | semmle.label | cipherOperationWrapper(...) : byte[] | +| BadMacUse.java:118:83:118:84 | iv : byte[] | semmle.label | iv : byte[] | +| BadMacUse.java:124:42:124:51 | ciphertext | semmle.label | ciphertext | subpaths testFailures -| BadMacUse.java:67:118:67:128 | // $Source | Missing result: Source | +| BadMacUse.java:63:118:63:128 | // $Source | Missing result: Source | +| BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | Unexpected result: Source | +| BadMacUse.java:124:42:124:51 | ciphertext | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 03fd21386cf..597c2a106d8 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -1,15 +1,12 @@ + import java.security.*; import java.util.Arrays; -import java.util.Base64; import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; - class BadMacUse { private byte[] generateSalt(int length) { @@ -17,7 +14,7 @@ class BadMacUse { new SecureRandom().nextBytes(salt); return salt; } - + public void CipherThenMac(byte[] encryptionKeyBytes, byte[] macKeyBytes) throws Exception { // Create keys directly from provided byte arrays SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); @@ -40,7 +37,6 @@ class BadMacUse { System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); } - public void BadDecryptThenMacOnPlaintextVerify(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] input) throws Exception { // Split input into ciphertext and MAC int macLength = 32; // HMAC-SHA256 output length @@ -84,4 +80,53 @@ class BadMacUse { System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); } -} \ No newline at end of file + + public byte[] cipherOperationWrapper(byte[] bytes, byte[] encryptionKeyBytes, byte[] iv, int mode) + throws Exception { + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + SecretKeySpec secretKeySpec = new SecretKeySpec(encryptionKeyBytes, "AES"); + + IvParameterSpec ivParameterSpec = new IvParameterSpec(iv); + cipher.init(mode, secretKeySpec, ivParameterSpec); + return cipher.doFinal(bytes); + } + + /** + * A use of the cipher operation wrapper for decryption to throw off the + * analysis + */ + public byte[] decryptUsingWrapper(byte[] ciphertext, byte[] encryptionKeyBytes, byte[] iv) throws Exception { + return cipherOperationWrapper(ciphertext, encryptionKeyBytes, iv, Cipher.DECRYPT_MODE); + } + + /** + * A use of the cipher operation wrapper for encryption to throw off the + * analysis + */ + public byte[] encryptUsingWrapper(byte[] plaintext, byte[] encryptionKeyBytes, byte[] iv) throws Exception { + return cipherOperationWrapper(plaintext, encryptionKeyBytes, iv, Cipher.ENCRYPT_MODE); + } + + /** + * Encrypt then mac using the wrapper function + */ + public byte[] falsePositiveDecryptToMac(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception { + // Encrypt the plaintext + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + byte[] ciphertext = cipherOperationWrapper(plaintext, encryptionKeyBytes, iv, Cipher.ENCRYPT_MODE); + + // Compute HMAC over the ciphertext using the MAC key + SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(macKey); + byte[] computedMac = mac.doFinal(ciphertext); // False Positive + + // Concatenate ciphertext and MAC + byte[] output = new byte[ciphertext.length + computedMac.length]; + System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); + System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); + return output; + } +} From b374ba3d0c8ffbcc0613ae41e39cf6ea29ef1653 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Tue, 21 Oct 2025 11:48:37 -0400 Subject: [PATCH 229/965] Crypto: Updating java 'location' information to be just a location's toString to be more verbose/precise. --- java/ql/lib/experimental/quantum/Language.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/experimental/quantum/Language.qll b/java/ql/lib/experimental/quantum/Language.qll index 3a33b763a6f..bcc8b62ca87 100644 --- a/java/ql/lib/experimental/quantum/Language.qll +++ b/java/ql/lib/experimental/quantum/Language.qll @@ -30,7 +30,7 @@ module CryptoInput implements InputSig { class UnknownLocation = UnknownDefaultLocation; string locationToFileBaseNameAndLineNumberString(Location location) { - result = location.getFile().getBaseName() + ":" + location.getStartLine() + result = location.toString() } LocatableElement dfn_to_element(DataFlow::Node node) { From c8c1c6e5920fc93194d74758f79ec8d2f44c0da4 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 21 Oct 2025 16:54:28 +0100 Subject: [PATCH 230/965] Address review comments --- .../codeql-language-guides/analyzing-data-flow-in-cpp.rst | 4 ++-- .../analyzing-data-flow-in-csharp.rst | 4 ++-- .../codeql-language-guides/analyzing-data-flow-in-go.rst | 4 ++-- .../codeql-language-guides/analyzing-data-flow-in-java.rst | 4 ++-- .../analyzing-data-flow-in-javascript-and-typescript.rst | 4 ++-- .../analyzing-data-flow-in-python.rst | 6 +++--- .../codeql-language-guides/analyzing-data-flow-in-ruby.rst | 4 ++-- .../codeql-language-guides/analyzing-data-flow-in-rust.rst | 4 ++-- .../codeql-language-guides/analyzing-data-flow-in-swift.rst | 4 ++-- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst index 4216c1b379c..2f2381f32ad 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-cpp.rst @@ -314,7 +314,7 @@ Exercise 2: Write a query that finds all hard-coded strings used to create a ``h Exercise 3: Write a class that represents flow sources from ``getenv``. (`Answer <#exercise-3>`__) -Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``getenv`` to ``gethostbyname``. (`Answer <#exercise-4>`__) +Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``getenv`` to ``gethostbyname``. (`Answer <#exercise-4>`__ `Answer as a path query <#path-query-example>`__) Answers ------- @@ -411,7 +411,7 @@ Exercise 4 GetenvToGethostbynameFlow::flow(source, sink) select getenv, fc -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ Here is the answer to exercise 4 above, converted into a path query: diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst index 08905fa4d15..af196d314ed 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-csharp.rst @@ -287,7 +287,7 @@ Exercise 2: Find all hard-coded strings passed to ``System.Uri``, using global d Exercise 3: Define a class that represents flow sources from ``System.Environment.GetEnvironmentVariable``. (`Answer <#exercise-3>`__) -Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``System.Environment.GetEnvironmentVariable`` to ``System.Uri``. (`Answer <#exercise-4>`__) +Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``System.Environment.GetEnvironmentVariable`` to ``System.Uri``. (`Answer <#exercise-4>`__ `Answer as a path query <#path-query-example>`__) Extending library data flow --------------------------- @@ -537,7 +537,7 @@ This can be adapted from the ``SystemUriFlow`` class: } } -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ Here is the answer to exercise 4 above, converted into a path query: diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst index ffb75e03e8e..3b71f28c0ce 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-go.rst @@ -252,7 +252,7 @@ Exercise 2: Write a query that finds all hard-coded strings used to create a ``u Exercise 3: Write a class that represents flow sources from ``os.Getenv(..)``. (`Answer <#exercise-3>`__) -Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``os.Getenv`` to ``url.URL``. (`Answer <#exercise-4>`__) +Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``os.Getenv`` to ``url.URL``. (`Answer <#exercise-4>`__ `Answer as a path query <#path-query-example>`__) Answers ------- @@ -358,7 +358,7 @@ Exercise 4 where GetenvToURLFlow::flow(src, sink) select src, "This environment variable constructs a URL $@.", sink, "here" -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ Here is the answer to exercise 4 above, converted into a path query: diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst index c526a60cbeb..6273c03e5d9 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-java.rst @@ -262,7 +262,7 @@ Exercise 2: Write a query that finds all hard-coded strings used to create a ``j Exercise 3: Write a class that represents flow sources from ``java.lang.System.getenv(..)``. (`Answer <#exercise-3>`__) -Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``getenv`` to ``java.net.URL``. (`Answer <#exercise-4>`__) +Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from ``getenv`` to ``java.net.URL``. (`Answer <#exercise-4>`__ `Answer as a path query <#path-query-example>`__) Answers ------- @@ -361,7 +361,7 @@ Exercise 4 where GetenvToURLFlow::flow(src, sink) select src, "This environment variable constructs a URL $@.", sink, "here" -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ Here is the answer to exercise 4 above, converted into a path query: diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst index be1a255433f..a0e62706041 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst @@ -456,7 +456,7 @@ Exercise 3: Write a class which represents flow sources from the array elements Hint: array indices are properties with numeric names; you can use regular expression matching to check this. (`Answer <#exercise-3>`__) Exercise 4: Using the answers from 2 and 3, write a query which finds all global data flow paths from array elements of the result of a call to the ``tagName`` argument to the -``createElement`` function. (`Answer <#exercise-4>`__) +``createElement`` function. (`Answer <#exercise-4>`__ `Answer as a path query <#path-query-example>`__) Answers ------- @@ -541,7 +541,7 @@ Exercise 4 where HardCodedTagNameFlow::flow(source, sink) select source, sink -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ Here is the answer to exercise 4 above, converted into a path query: diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst index 5befd235f81..143c54e6fbd 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-python.rst @@ -354,10 +354,10 @@ This data flow configuration tracks data flow from environment variables to open select fileOpen, "This call to 'os.open' uses data from $@.", environment, "call to 'os.getenv'" -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ -Here is the first example above, converted into a path query: +Here is the network input example above, converted into a path query: .. code-block:: ql @@ -397,7 +397,7 @@ For more information, see "`Creating path queries `__ in the GitHub documentation. +- `Creating path queries `__. .. include:: ../reusables/python-further-reading.rst diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst index c472e0a7b1e..c0dd373f39b 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-ruby.rst @@ -372,10 +372,10 @@ The following global data-flow query finds calls to ``File.open`` where the file select fileOpen, "This call to 'File.open' uses data from $@.", environment, "an environment variable" -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ -Here is the first example above, converted into a path query: +Here is the taint-tracking example above, converted into a path query: .. code-block:: ql diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst index f8f05a11674..7623e1f4465 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-rust.rst @@ -231,10 +231,10 @@ The following global taint-tracking query finds places where a string literal is where ConstantPasswordFlow::flow(sourceNode, sinkNode) select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ -Here is the first example above, converted into a path query: +Here is the taint-tracking example above, converted into a path query: .. code-block:: ql diff --git a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst index bf60fa9b884..8bded333654 100644 --- a/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst +++ b/docs/codeql/codeql-language-guides/analyzing-data-flow-in-swift.rst @@ -278,10 +278,10 @@ The following global taint-tracking query finds places where a value from a remo where SqlInjectionFlow::flow(sourceNode, sinkNode) select sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" -Path Query Example +Path query example ~~~~~~~~~~~~~~~~~~ -Here is the first example above, converted into a path query: +Here is the string literal example above, converted into a path query: .. code-block:: ql From e12e9045a3875dd8cbe4671b6dcb4fc6d80e4ba8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 18 Aug 2025 11:37:38 +0200 Subject: [PATCH 231/965] Rust: Add more type inference tests --- .../PathResolutionConsistency.expected | 17 +- .../type-inference/blanket_impl.rs | 71 +- .../type-inference/dereference.rs | 90 + .../type-inference/invalid/main.rs | 93 + .../{loop => invalid}/options.yml | 0 .../library-tests/type-inference/loop/main.rs | 14 - .../test/library-tests/type-inference/main.rs | 133 +- .../type-inference/type-inference.expected | 8428 +++++++++-------- 8 files changed, 4827 insertions(+), 4019 deletions(-) create mode 100644 rust/ql/test/library-tests/type-inference/invalid/main.rs rename rust/ql/test/library-tests/type-inference/{loop => invalid}/options.yml (100%) delete mode 100644 rust/ql/test/library-tests/type-inference/loop/main.rs diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index d2aa2f396c7..6e687e06e42 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,8 +1,11 @@ multipleCallTargets -| dereference.rs:61:15:61:24 | e1.deref() | -| main.rs:2357:13:2357:31 | ...::from(...) | -| main.rs:2358:13:2358:31 | ...::from(...) | -| main.rs:2359:13:2359:31 | ...::from(...) | -| main.rs:2365:13:2365:31 | ...::from(...) | -| main.rs:2366:13:2366:31 | ...::from(...) | -| main.rs:2367:13:2367:31 | ...::from(...) | +| dereference.rs:69:15:69:24 | e1.deref() | +| dereference.rs:186:17:186:25 | S.bar(...) | +| dereference.rs:187:17:187:29 | S.bar(...) | +| invalid/main.rs:91:17:91:30 | S1.duplicate() | +| main.rs:2437:13:2437:31 | ...::from(...) | +| main.rs:2438:13:2438:31 | ...::from(...) | +| main.rs:2439:13:2439:31 | ...::from(...) | +| main.rs:2445:13:2445:31 | ...::from(...) | +| main.rs:2446:13:2446:31 | ...::from(...) | +| main.rs:2447:13:2447:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index aa642854268..f4e91152d5e 100644 --- a/rust/ql/test/library-tests/type-inference/blanket_impl.rs +++ b/rust/ql/test/library-tests/type-inference/blanket_impl.rs @@ -1,9 +1,22 @@ // Tests for method resolution targeting blanket trait implementations mod basic_blanket_impl { + use std::ops::Deref; + #[derive(Debug, Copy, Clone)] struct S1; + #[derive(Debug, Copy, Clone)] + struct S2; + + impl Deref for S2 { + type Target = S1; + + fn deref(&self) -> &Self::Target { + &S1 + } + } + trait Clone1 { fn clone1(&self) -> Self; } @@ -21,7 +34,7 @@ mod basic_blanket_impl { } } - // Blanket implementation for all types that implement Display and Clone + // Blanket implementation for all types that implement Clone1 impl Duplicatable for T { // Clone1duplicate fn duplicate(&self) -> Self { @@ -30,10 +43,58 @@ mod basic_blanket_impl { } pub fn test_basic_blanket() { - let x = S1.clone1(); // $ target=S1::clone1 - println!("{x:?}"); - let y = S1.duplicate(); // $ target=Clone1duplicate - println!("{y:?}"); + let x1 = S1.clone1(); // $ target=S1::clone1 + println!("{x1:?}"); + let x2 = (&S1).clone1(); // $ target=S1::clone1 + println!("{x2:?}"); + let x3 = S1.duplicate(); // $ target=Clone1duplicate + println!("{x3:?}"); + let x4 = (&S1).duplicate(); // $ target=Clone1duplicate + println!("{x4:?}"); + let x5 = S1::duplicate(&S1); // $ MISSING: target=Clone1duplicate + println!("{x5:?}"); + let x6 = S2.duplicate(); // $ MISSING: target=Clone1duplicate + println!("{x6:?}"); + let x7 = (&S2).duplicate(); // $ MISSING: target=Clone1duplicate + println!("{x7:?}"); + } +} + +mod assoc_blanket_impl { + #[derive(Debug, Copy, Clone)] + struct S1; + + trait Trait1 { + fn assoc_func1(x: i64, y: Self) -> Self; + } + + trait Trait2 { + fn assoc_func2(x: i64, y: Self) -> Self; + } + + impl Trait1 for S1 { + // S1::assoc_func1 + fn assoc_func1(x: i64, y: Self) -> Self { + y + } + } + + impl Trait2 for T { + // Blanket_assoc_func2 + fn assoc_func2(x: i64, y: Self) -> Self { + T::assoc_func1(x, y) // $ target=assoc_func1 + } + } + + pub fn test_assoc_blanket() { + let x1 = S1::assoc_func1(1, S1); // $ target=S1::assoc_func1 + println!("{x1:?}"); + let x2 = Trait1::assoc_func1(1, S1); // $ target=S1::assoc_func1 + println!("{x2:?}"); + let x3 = S1::assoc_func2(1, S1); // $ MISSING: target=Blanket_assoc_func2 + println!("{x3:?}"); + let x4 = Trait2::assoc_func2(1, S1); // $ target=Blanket_assoc_func2 + println!("{x4:?}"); } } diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index f4d9d68a099..6e57fc20c19 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -27,6 +27,14 @@ impl Deref for MySmartPointer { } } +struct S(T); + +impl S { + fn foo(&self) -> &T { + &self.0 // $ fieldof=S + } +} + fn explicit_monomorphic_dereference() { // Dereference with method call let a1 = MyIntPointer { value: 34i64 }; @@ -91,6 +99,9 @@ fn implicit_dereference() { // Call method on implicitly dereferenced value let x = MySmartPointer { value: 34i64 }; let _y = x.is_positive(); // $ MISSING: target=is_positive type=_y:bool + + let z = MySmartPointer { value: S(0i64) }; + let z_ = z.foo(); // $ MISSING: target=foo type=z_:&T.i64 } mod implicit_deref_coercion_cycle { @@ -128,6 +139,83 @@ mod implicit_deref_coercion_cycle { } } +mod ref_vs_mut_ref { + trait MyTrait1 { + fn foo(self) -> T; + } + + struct S; + + impl MyTrait1 for &S { + // MyTrait1::foo1 + fn foo(self) -> S { + S + } + } + + impl MyTrait1 for &mut S { + // MyTrait1::foo2 + fn foo(self) -> i64 { + 42 + } + } + + trait MyTrait2 { + fn bar(self, arg: T1) -> T2; + } + + impl MyTrait2<&S, S> for S { + // MyTrait2::bar1 + fn bar(self, arg: &S) -> S { + S + } + } + + impl MyTrait2<&mut S, i64> for S { + // MyTrait2::bar2 + fn bar(self, arg: &mut S) -> i64 { + 42 + } + } + + pub fn test() { + let x = (&S).foo(); // $ MISSING: target=MyTrait1::foo1 type=x:S + let y = S.foo(); // $ MISSING: target=MyTrait1::foo1 type=y:S + let z = (&mut S).foo(); // $ MISSING: target=MyTrait1::foo2 type=z:i64 + + let x = S.bar(&S); // $ target=MyTrait2::bar1 type=x:S $ SPURIOUS: target=MyTrait2::bar2 + let y = S.bar(&mut S); // $ target=MyTrait2::bar2 type=y:i64 $ SPURIOUS: target=MyTrait2::bar1 + } +} + +// from https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-search +mod rust_reference_example { + struct Foo {} + + trait Bar { + fn bar(&self); + } + + impl Foo { + // bar1 + fn bar(&mut self) { + println!("In struct impl!") + } + } + + impl Bar for Foo { + // bar2 + fn bar(&self) { + println!("In trait impl!") + } + } + + pub fn main() { + let mut f = Foo {}; + f.bar(); // $ SPURIOUS: target=bar1 $ MISSING: target=bar2 + } +} + pub fn test() { explicit_monomorphic_dereference(); // $ target=explicit_monomorphic_dereference explicit_polymorphic_dereference(); // $ target=explicit_polymorphic_dereference @@ -135,4 +223,6 @@ pub fn test() { explicit_box_dereference(); // $ target=explicit_box_dereference implicit_dereference(); // $ target=implicit_dereference implicit_deref_coercion_cycle::test(); // $ target=test + ref_vs_mut_ref::test(); // $ target=test + rust_reference_example::main(); // $ target=main } diff --git a/rust/ql/test/library-tests/type-inference/invalid/main.rs b/rust/ql/test/library-tests/type-inference/invalid/main.rs new file mode 100644 index 00000000000..83bd031d171 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/invalid/main.rs @@ -0,0 +1,93 @@ +// The code in this file is not valid Rust code + +// test that our type inference implementation does not run into an infinite loop. +mod type_loop { + struct S(T); + + trait T1: T2> { + fn foo(self) {} + } + + trait T2: T1> { + fn bar(self) { + self.foo() // $ target=foo + } + } +} + +mod op_blanket_impl { + use std::ops::Add; + + #[derive(Debug, Copy, Clone)] + struct Num(i32); + + trait AddAlias { + fn add_alias(self, other: Self) -> Self; + } + + impl AddAlias for Num { + fn add_alias(self, other: Self) -> Self { + Num(self.0 + other.0) // $ fieldof=Num $ target=add + } + } + + // this is not valid in Rust, because of coherence + impl Add for T { + type Output = Self; + + // BlanketAdd + fn add(self, other: Self) -> Self { + self.add_alias(other) // $ target=add_alias + } + } + + pub fn test_op_blanket() { + let a = Num(5); + let b = Num(10); + let c = a + b; // $ target=BlanketAdd + println!("{c:?}"); + } +} + +mod impl_specialization { + #[derive(Debug, Copy, Clone)] + struct S1; + + trait Clone1 { + fn clone1(&self) -> Self; + } + + trait Duplicatable { + fn duplicate(&self) -> Self + where + Self: Sized; + } + + impl Clone1 for S1 { + // S1::clone1 + fn clone1(&self) -> Self { + *self // $ target=deref + } + } + + impl Duplicatable for S1 { + // S1::duplicate + fn duplicate(&self) -> Self { + *self // $ target=deref + } + } + + // Blanket implementation for all types that implement Clone1 + impl Duplicatable for T { + // Clone1duplicate + fn duplicate(&self) -> Self { + self.clone1() // $ target=clone1 + } + } + + pub fn test_basic_blanket() { + // this call should target the specialized implementation of Duplicatable for S1, + // not the blanket implementation + let x = S1.duplicate(); // $ target=S1::duplicate $ SPURIOUS: target=Clone1duplicate + } +} diff --git a/rust/ql/test/library-tests/type-inference/loop/options.yml b/rust/ql/test/library-tests/type-inference/invalid/options.yml similarity index 100% rename from rust/ql/test/library-tests/type-inference/loop/options.yml rename to rust/ql/test/library-tests/type-inference/invalid/options.yml diff --git a/rust/ql/test/library-tests/type-inference/loop/main.rs b/rust/ql/test/library-tests/type-inference/loop/main.rs deleted file mode 100644 index 103b1a5cab0..00000000000 --- a/rust/ql/test/library-tests/type-inference/loop/main.rs +++ /dev/null @@ -1,14 +0,0 @@ -// The code in this file is not valid Rust code, but it is used to test that -// our type inference implementation does not run into an infinite loop. - -struct S(T); - -trait T1: T2> { - fn foo(self) {} -} - -trait T2: T1> { - fn bar(self) { - self.foo() // $ target=foo - } -} diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 107a133fa22..20b8a2d1b34 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -538,16 +538,22 @@ mod impl_overlap { pub fn f() { let x = S1; println!("{:?}", x.common_method()); // $ target=S1::common_method + println!("{:?}", S1::common_method(x)); // $ target=S1::common_method println!("{:?}", x.common_method_2()); // $ target=S1::common_method_2 + println!("{:?}", S1::common_method_2(x)); // $ target=S1::common_method_2 let y = S2(S1); println!("{:?}", y.common_method()); // $ target=_as_OverlappingTrait>::common_method + println!("{:?}", S2::::common_method(S2(S1))); // $ target=_as_OverlappingTrait>::common_method let z = S2(0); println!("{:?}", z.common_method()); // $ target=S2::common_method + println!("{:?}", S2::common_method(S2(0))); // $ target=S2::common_method + println!("{:?}", S2::::common_method(S2(0))); // $ target=S2::common_method let w = S3(S1); println!("{:?}", w.m(x)); // $ target=S3::m + println!("{:?}", S3::m(&w, x)); // $ target=S3::m } } @@ -647,14 +653,14 @@ mod type_parameter_bounds { } mod function_trait_bounds { - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct MyThing { a: T, } - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct S1; - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct S2; trait MyTrait { @@ -666,12 +672,35 @@ mod function_trait_bounds { { self.m1() // $ target=m1 } + + fn assoc(x: Self) -> A; } // Type parameter with bound occurs in the root of a parameter type. - fn call_trait_m1>(x: T2) -> T1 { - x.m1() // $ target=m1 type=x.m1():T1 + fn call_trait_m1 + Copy>(x: T2) -> T1 { + x.m1(); // $ target=m1 type=x.m1():T1 + x.m1() // $ target=m1 + } + fn call_trait_m1_2 + Copy>(x: T2) -> T1 { + let y = T2::m1(x); // $ target=m1 + y; // $ type=y:T1 + T2::m1(x) // $ target=m1 + } + fn call_trait_m1_3 + Copy>(x: T2) -> T1 { + let y = MyTrait::m1(x); // $ target=m1 + y; // $ type=y:T1 + MyTrait::m1(x) // $ target=m1 + } + fn call_trait_assoc_1 + Copy>(x: T2) -> T1 { + let y = T2::assoc(x); // $ target=assoc + y; // $ type=y:T1 + T2::assoc(x) // $ target=assoc + } + fn call_trait_assoc_2 + Copy>(x: T2) -> T1 { + let y = MyTrait::assoc(x); // $ MISSING: target=assoc + y; // $ MISSING: type=y:T1 + MyTrait::assoc(x) // $ MISSING: target=assoc } // Type parameter with bound occurs nested within another type. @@ -679,11 +708,21 @@ mod function_trait_bounds { fn call_trait_thing_m1>(x: MyThing) -> T1 { x.a.m1() // $ fieldof=MyThing target=m1 } + fn call_trait_thing_m1_2>(x: MyThing) -> T1 { + T2::m1(x.a) // $ fieldof=MyThing target=m1 + } + fn call_trait_thing_m1_3>(x: MyThing) -> T1 { + MyTrait::m1(x.a) // $ fieldof=MyThing target=m1 + } impl MyTrait for MyThing { fn m1(self) -> T { self.a // $ fieldof=MyThing } + + fn assoc(x: Self) -> T { + x.a // $ fieldof=MyThing + } } pub fn f() { @@ -702,8 +741,26 @@ mod function_trait_bounds { let x2 = MyThing { a: S1 }; let y2 = MyThing { a: S2 }; - println!("{:?}", call_trait_m1(x2)); // $ target=call_trait_m1 - println!("{:?}", call_trait_m1(y2)); // $ target=call_trait_m1 + let a = call_trait_m1(x2); // $ type=a:S1 target=call_trait_m1 + println!("{:?}", a); + let a = call_trait_m1_2(x2); // $ type=a:S1 target=call_trait_m1_2 + println!("{:?}", a); + let a = call_trait_m1_3(x2); // $ type=a:S1 target=call_trait_m1_3 + println!("{:?}", a); + let a = call_trait_m1(y2); // $ type=a:S2 target=call_trait_m1 + println!("{:?}", a); + let a = call_trait_m1_2(y2); // $ type=a:S2 target=call_trait_m1_2 + println!("{:?}", a); + let a = call_trait_m1_3(y2); // $ type=a:S2 target=call_trait_m1_3 + println!("{:?}", a); + let a = call_trait_assoc_1(x2); // $ type=a:S1 target=call_trait_assoc_1 + println!("{:?}", a); + let a = call_trait_assoc_2(x2); // $ type=a:S1 target=call_trait_assoc_2 + println!("{:?}", a); + let a = call_trait_assoc_1(y2); // $ type=a:S2 target=call_trait_assoc_1 + println!("{:?}", a); + let a = call_trait_assoc_2(y2); // $ type=a:S2 target=call_trait_assoc_2 + println!("{:?}", a); let x3 = MyThing { a: MyThing { a: S1 }, @@ -714,8 +771,16 @@ mod function_trait_bounds { let a = call_trait_thing_m1(x3); // $ type=a:S1 target=call_trait_thing_m1 println!("{:?}", a); + let a = call_trait_thing_m1_2(x3); // $ type=a:S1 target=call_trait_thing_m1_2 + println!("{:?}", a); + let a = call_trait_thing_m1_3(x3); // $ type=a:S1 target=call_trait_thing_m1_3 + println!("{:?}", a); let b = call_trait_thing_m1(y3); // $ type=b:S2 target=call_trait_thing_m1 println!("{:?}", b); + let b = call_trait_thing_m1_2(y3); // $ type=b:S2 target=call_trait_thing_m1_2 + println!("{:?}", b); + let b = call_trait_thing_m1_3(y3); // $ type=b:S2 target=call_trait_thing_m1_3 + println!("{:?}", b); } } @@ -958,19 +1023,19 @@ mod generic_enum { } mod method_supertraits { - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct MyThing { a: A, } - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct MyThing2 { a: A, } - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct S1; - #[derive(Debug)] + #[derive(Debug, Clone, Copy)] struct S2; trait MyTrait1 { @@ -978,16 +1043,16 @@ mod method_supertraits { fn m1(self) -> Tr1; } - trait MyTrait2: MyTrait1 { + trait MyTrait2: MyTrait1 + Copy { #[rustfmt::skip] - fn m2(self) -> Tr2 + fn m2(&self) -> Tr2 where Self: Sized, { if 3 > 2 { // $ target=gt self.m1() // $ target=MyTrait1::m1 } else { - Self::m1(self) // $ target=MyTrait1::m1 + Self::m1(*self) // $ target=deref target=MyTrait1::m1 } } } @@ -1001,7 +1066,7 @@ mod method_supertraits { if 3 > 2 { // $ target=gt self.m2().a // $ target=m2 $ fieldof=MyThing } else { - Self::m2(self).a // $ target=m2 fieldof=MyThing + Self::m2(&self).a // $ target=m2 fieldof=MyThing } } } @@ -1013,7 +1078,7 @@ mod method_supertraits { } } - impl MyTrait2 for MyThing {} + impl MyTrait2 for MyThing {} impl MyTrait1> for MyThing2 { // MyThing2::m1 @@ -1022,9 +1087,9 @@ mod method_supertraits { } } - impl MyTrait2> for MyThing2 {} + impl MyTrait2> for MyThing2 {} - impl MyTrait3 for MyThing2 {} + impl MyTrait3 for MyThing2 {} fn call_trait_m1>(x: T2) -> T1 { x.m1() // $ target=MyTrait1::m1 @@ -1819,6 +1884,11 @@ mod overloadable_operators { self.x >= other.x && self.y >= other.y // $ fieldof=Vec2 target=ge } } + + fn param_add(a: T, b: T) -> T::Output { + a + b // $ target=add + } + pub fn f() { // Test for all overloadable operators on `i64` @@ -1836,6 +1906,7 @@ mod overloadable_operators { let i64_mul = 17i64 * 18i64; // $ type=i64_mul:i64 target=mul let i64_div = 19i64 / 20i64; // $ type=i64_div:i64 target=div let i64_rem = 21i64 % 22i64; // $ type=i64_rem:i64 target=rem + let i64_param_add = param_add(1i64, 2i64); // $ target=param_add $ MISSING: type=i64_param_add:i64 // Arithmetic assignment operators let mut i64_add_assign = 23i64; @@ -2083,7 +2154,7 @@ mod impl_trait { mod indexers { use std::ops::Index; - #[derive(Debug)] + #[derive(Debug, Copy, Clone)] struct S; impl S { @@ -2120,6 +2191,13 @@ mod indexers { let x = slice[0].foo(); // $ target=foo type=x:S target=index } + fn param_index>(a: T, b: usize) -> T::Output + where + >::Output: Sized + Copy, + { + a[b] // $ target=index + } + pub fn f() { let mut vec = MyVec::new(); // $ type=vec:T.S target=new vec.push(S); // $ target=push @@ -2128,6 +2206,8 @@ mod indexers { let xs: [S; 1] = [S]; let x = xs[0].foo(); // $ target=foo type=x:S target=index + let y = param_index(vec, 0); // $ target=param_index $ MISSING: type=y:S + analyze_slice(&xs); // $ target=analyze_slice } } @@ -2366,9 +2446,9 @@ mod loops { String::from("bar"), // $ target=from String::from("baz"), // $ target=from ]; - for s in strings3 {} // $ MISSING: type=s:String + for s in strings3 {} // $ type=s:&T.String - let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ MISSING: type=callables:[T;...].MyCallable; 3 + let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ type=callables:[T;...].MyCallable for c // $ type=c:MyCallable in callables { @@ -2422,10 +2502,10 @@ mod loops { let mut map1 = std::collections::HashMap::new(); // $ target=new type=map1:K.i32 type=map1:V.Box $ MISSING: type=map1:Hashmap type1=map1:V.T.&T.str map1.insert(1, Box::new("one")); // $ target=insert target=new map1.insert(2, Box::new("two")); // $ target=insert target=new - for key in map1.keys() {} // $ target=keys MISSING: type=key:i32 - for value in map1.values() {} // $ target=values MISSING: type=value:Box type=value:T.&T.str - for (key, value) in map1.iter() {} // $ target=iter MISSING: type=key:i32 type=value:Box type=value:T.&T.str - for (key, value) in &map1 {} // $ MISSING: type=key:i32 type=value:Box type=value:T.&T.str + for key in map1.keys() {} // $ target=keys type=key:&T.i32 + for value in map1.values() {} // $ target=values type=value:&T.Box type=value:&T.T.&T.str + for (key, value) in map1.iter() {} // $ target=iter type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str + for (key, value) in &map1 {} // $ type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str // while loops @@ -2491,6 +2571,7 @@ mod explicit_type_args { field: S2::default(), // $ target=default }; let x14 = foo::(Default::default()); // $ certainType=x14:i32 target=default target=foo + let x15 = S1::::default(); // $ certainType=x15:T.S2 target=default } } @@ -2615,10 +2696,10 @@ pub mod path_buf { } } +mod blanket_impl; mod closure; mod dereference; mod dyn_type; -mod blanket_impl; fn main() { field_access::f(); // $ target=f diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 09fbdf17a8b..11e3f76c4a8 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,143 +1,249 @@ inferType -| blanket_impl.rs:8:19:8:23 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:8:19:8:23 | SelfParam | &T | blanket_impl.rs:7:5:9:5 | Self [trait Clone1] | -| blanket_impl.rs:12:22:12:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:12:22:12:26 | SelfParam | &T | blanket_impl.rs:11:5:15:5 | Self [trait Duplicatable] | -| blanket_impl.rs:19:19:19:23 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:19:19:19:23 | SelfParam | &T | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:19:34:21:9 | { ... } | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:20:13:20:17 | * ... | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:20:14:20:17 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:20:14:20:17 | self | &T | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:27:22:27:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:27:22:27:26 | SelfParam | &T | blanket_impl.rs:25:10:25:18 | T | -| blanket_impl.rs:27:37:29:9 | { ... } | | blanket_impl.rs:25:10:25:18 | T | -| blanket_impl.rs:28:13:28:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:28:13:28:16 | self | &T | blanket_impl.rs:25:10:25:18 | T | -| blanket_impl.rs:28:13:28:25 | self.clone1() | | blanket_impl.rs:25:10:25:18 | T | -| blanket_impl.rs:33:13:33:13 | x | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:33:17:33:18 | S1 | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:33:17:33:27 | S1.clone1() | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:34:18:34:24 | "{x:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:34:18:34:24 | "{x:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:34:18:34:24 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:34:18:34:24 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:34:20:34:20 | x | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:35:13:35:13 | y | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:35:17:35:18 | S1 | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:35:17:35:30 | S1.duplicate() | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:36:18:36:24 | "{y:?}\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:36:18:36:24 | "{y:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:36:18:36:24 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:36:18:36:24 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:36:20:36:20 | y | | blanket_impl.rs:4:5:5:14 | S1 | -| blanket_impl.rs:47:22:47:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:47:22:47:26 | SelfParam | &T | blanket_impl.rs:46:5:48:5 | Self [trait Flag] | -| blanket_impl.rs:51:26:51:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:51:26:51:30 | SelfParam | &T | blanket_impl.rs:50:5:52:5 | Self [trait TryFlag] | -| blanket_impl.rs:58:26:58:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:58:26:58:30 | SelfParam | &T | blanket_impl.rs:54:10:54:11 | Fl | -| blanket_impl.rs:58:49:60:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:58:49:60:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:59:13:59:34 | Some(...) | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:59:13:59:34 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:59:18:59:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:59:18:59:21 | self | &T | blanket_impl.rs:54:10:54:11 | Fl | -| blanket_impl.rs:59:18:59:33 | self.read_flag() | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:65:32:65:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:65:32:65:36 | SelfParam | &T | blanket_impl.rs:63:5:68:5 | Self [trait TryFlagExt] | -| blanket_impl.rs:65:55:67:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:65:55:67:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:66:13:66:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:66:13:66:16 | self | &T | blanket_impl.rs:63:5:68:5 | Self [trait TryFlagExt] | -| blanket_impl.rs:66:13:66:32 | self.try_read_flag() | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:66:13:66:32 | self.try_read_flag() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:74:32:74:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:74:32:74:36 | SelfParam | &T | blanket_impl.rs:72:5:75:5 | Self [trait AnotherTryFlag] | -| blanket_impl.rs:83:26:83:30 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:83:26:83:30 | SelfParam | &T | blanket_impl.rs:77:5:79:5 | MyTryFlag | -| blanket_impl.rs:83:49:85:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:83:49:85:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:84:13:84:27 | Some(...) | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:84:13:84:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:84:18:84:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:84:18:84:21 | self | &T | blanket_impl.rs:77:5:79:5 | MyTryFlag | -| blanket_impl.rs:84:18:84:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:94:22:94:26 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:94:22:94:26 | SelfParam | &T | blanket_impl.rs:88:5:90:5 | MyFlag | -| blanket_impl.rs:94:37:96:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:95:13:95:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:95:13:95:16 | self | &T | blanket_impl.rs:88:5:90:5 | MyFlag | -| blanket_impl.rs:95:13:95:21 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:105:32:105:36 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:105:32:105:36 | SelfParam | &T | blanket_impl.rs:99:5:101:5 | MyOtherFlag | -| blanket_impl.rs:105:55:107:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:105:55:107:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:106:13:106:27 | Some(...) | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:106:13:106:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:106:18:106:21 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:106:18:106:21 | self | &T | blanket_impl.rs:99:5:101:5 | MyOtherFlag | -| blanket_impl.rs:106:18:106:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:111:13:111:23 | my_try_flag | | blanket_impl.rs:77:5:79:5 | MyTryFlag | -| blanket_impl.rs:111:27:111:50 | MyTryFlag {...} | | blanket_impl.rs:77:5:79:5 | MyTryFlag | -| blanket_impl.rs:111:45:111:48 | true | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:112:13:112:18 | result | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:112:13:112:18 | result | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:112:22:112:32 | my_try_flag | | blanket_impl.rs:77:5:79:5 | MyTryFlag | -| blanket_impl.rs:112:22:112:54 | my_try_flag.try_read_flag_twice() | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:112:22:112:54 | my_try_flag.try_read_flag_twice() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:114:13:114:19 | my_flag | | blanket_impl.rs:88:5:90:5 | MyFlag | -| blanket_impl.rs:114:23:114:43 | MyFlag {...} | | blanket_impl.rs:88:5:90:5 | MyFlag | -| blanket_impl.rs:114:38:114:41 | true | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:117:22:117:28 | my_flag | | blanket_impl.rs:88:5:90:5 | MyFlag | -| blanket_impl.rs:119:13:119:25 | my_other_flag | | blanket_impl.rs:99:5:101:5 | MyOtherFlag | -| blanket_impl.rs:119:29:119:54 | MyOtherFlag {...} | | blanket_impl.rs:99:5:101:5 | MyOtherFlag | -| blanket_impl.rs:119:49:119:52 | true | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:122:13:122:18 | result | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:122:13:122:18 | result | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:122:22:122:34 | my_other_flag | | blanket_impl.rs:99:5:101:5 | MyOtherFlag | -| blanket_impl.rs:122:22:122:56 | my_other_flag.try_read_flag_twice() | | {EXTERNAL LOCATION} | Option | -| blanket_impl.rs:122:22:122:56 | my_other_flag.try_read_flag_twice() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:132:21:132:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:132:21:132:25 | SelfParam | &T | blanket_impl.rs:131:5:134:5 | Self [trait Executor] | -| blanket_impl.rs:133:24:133:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:133:24:133:28 | SelfParam | &T | blanket_impl.rs:131:5:134:5 | Self [trait Executor] | -| blanket_impl.rs:133:31:133:35 | query | | blanket_impl.rs:133:21:133:21 | E | -| blanket_impl.rs:137:21:137:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:137:21:137:25 | SelfParam | &T | blanket_impl.rs:136:10:136:22 | T | -| blanket_impl.rs:138:22:138:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:138:22:138:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:138:22:138:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:138:22:138:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:141:24:141:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:141:24:141:28 | SelfParam | &T | blanket_impl.rs:136:10:136:22 | T | -| blanket_impl.rs:141:31:141:36 | _query | | blanket_impl.rs:141:21:141:21 | E | -| blanket_impl.rs:142:22:142:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:142:22:142:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:142:22:142:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:142:22:142:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:151:13:151:13 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:151:17:151:34 | MySqlConnection {...} | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:153:9:153:9 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:154:35:154:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:154:35:154:36 | &c | &T | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:154:36:154:36 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:156:9:156:9 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:156:20:156:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:156:20:156:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:157:9:157:9 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:157:28:157:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:157:28:157:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:158:35:158:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:158:35:158:36 | &c | &T | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:158:36:158:36 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:158:39:158:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:158:39:158:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:159:43:159:44 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:159:43:159:44 | &c | &T | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:159:44:159:44 | c | | blanket_impl.rs:146:5:146:29 | MySqlConnection | -| blanket_impl.rs:159:47:159:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:159:47:159:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:15:18:15:22 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:15:18:15:22 | SelfParam | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:15:42:17:9 | { ... } | | file://:0:0:0:0 | & | +| blanket_impl.rs:15:42:17:9 | { ... } | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:16:13:16:15 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:16:13:16:15 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:16:14:16:15 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:21:19:21:23 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:21:19:21:23 | SelfParam | &T | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | +| blanket_impl.rs:25:22:25:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:25:22:25:26 | SelfParam | &T | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | +| blanket_impl.rs:32:19:32:23 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:32:19:32:23 | SelfParam | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:32:34:34:9 | { ... } | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:33:13:33:17 | * ... | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:33:14:33:17 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:33:14:33:17 | self | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:40:22:40:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:40:22:40:26 | SelfParam | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:40:37:42:9 | { ... } | | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:41:13:41:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:41:13:41:16 | self | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:41:13:41:25 | self.clone1() | | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:46:13:46:14 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:46:18:46:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:46:18:46:28 | S1.clone1() | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:18:48:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:48:18:48:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:18:48:31 | ... .clone1() | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:19:48:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:48:19:48:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:20:48:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:49:18:49:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:49:18:49:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:50:13:50:14 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:50:18:50:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:50:18:50:31 | S1.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:51:18:51:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:51:18:51:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:18:52:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:52:18:52:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:18:52:34 | ... .duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:19:52:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:52:19:52:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:20:52:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:53:18:53:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:53:18:53:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:32:54:34 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:54:32:54:34 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:55:18:55:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:55:18:55:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:57:18:57:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:57:18:57:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:58:18:58:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:19:58:21 | &S2 | | file://:0:0:0:0 | & | +| blanket_impl.rs:58:19:58:21 | &S2 | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:59:18:59:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:59:18:59:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | +| blanket_impl.rs:72:24:72:24 | x | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:72:32:72:32 | y | | blanket_impl.rs:71:5:73:5 | Self [trait Trait2] | +| blanket_impl.rs:77:24:77:24 | x | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:77:32:77:32 | y | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:77:49:79:9 | { ... } | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:78:13:78:13 | y | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:84:24:84:24 | x | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:84:32:84:32 | y | | blanket_impl.rs:82:10:82:18 | T | +| blanket_impl.rs:84:49:86:9 | { ... } | | blanket_impl.rs:82:10:82:18 | T | +| blanket_impl.rs:85:13:85:32 | ...::assoc_func1(...) | | blanket_impl.rs:82:10:82:18 | T | +| blanket_impl.rs:85:28:85:28 | x | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:85:31:85:31 | y | | blanket_impl.rs:82:10:82:18 | T | +| blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | +| blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:91:18:91:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:91:18:91:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:92:13:92:14 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:92:18:92:43 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i32 | +| blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:93:18:93:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:93:18:93:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | +| blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:95:18:95:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:95:18:95:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | +| blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:71:5:73:5 | trait Trait2 | +| blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | +| blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i64 | +| blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:97:18:97:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:97:18:97:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | +| blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | +| blanket_impl.rs:112:26:112:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:112:26:112:30 | SelfParam | &T | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | +| blanket_impl.rs:119:26:119:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:119:26:119:30 | SelfParam | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:119:49:121:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:119:49:121:9 | { ... } | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:120:13:120:34 | Some(...) | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:120:13:120:34 | Some(...) | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:120:18:120:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:120:18:120:21 | self | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:120:18:120:33 | self.read_flag() | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:126:32:126:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:126:32:126:36 | SelfParam | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:126:55:128:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:126:55:128:9 | { ... } | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:127:13:127:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:127:13:127:16 | self | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:127:13:127:32 | self.try_read_flag() | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:127:13:127:32 | self.try_read_flag() | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:135:32:135:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:135:32:135:36 | SelfParam | &T | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | +| blanket_impl.rs:144:26:144:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:144:26:144:30 | SelfParam | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:144:49:146:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:144:49:146:9 | { ... } | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:145:13:145:27 | Some(...) | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:145:13:145:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:145:18:145:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:145:18:145:21 | self | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:145:18:145:26 | self.flag | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:155:22:155:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:155:22:155:26 | SelfParam | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:155:37:157:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:156:13:156:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:156:13:156:16 | self | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:156:13:156:21 | self.flag | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:166:32:166:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:166:32:166:36 | SelfParam | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:166:55:168:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:166:55:168:9 | { ... } | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:167:13:167:27 | Some(...) | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:167:13:167:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:167:18:167:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:167:18:167:21 | self | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:167:18:167:26 | self.flag | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:172:13:172:23 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:172:27:172:50 | MyTryFlag {...} | | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:172:45:172:48 | true | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:173:13:173:18 | result | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:173:13:173:18 | result | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:173:22:173:32 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:173:22:173:54 | my_try_flag.try_read_flag_twice() | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:173:22:173:54 | my_try_flag.try_read_flag_twice() | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:175:13:175:19 | my_flag | | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:175:23:175:43 | MyFlag {...} | | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:175:38:175:41 | true | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:178:22:178:28 | my_flag | | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:180:13:180:25 | my_other_flag | | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:180:29:180:54 | MyOtherFlag {...} | | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:180:49:180:52 | true | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:183:13:183:18 | result | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:183:13:183:18 | result | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:183:22:183:34 | my_other_flag | | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:183:22:183:56 | my_other_flag.try_read_flag_twice() | | {EXTERNAL LOCATION} | Option | +| blanket_impl.rs:183:22:183:56 | my_other_flag.try_read_flag_twice() | T | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:193:21:193:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:193:21:193:25 | SelfParam | &T | blanket_impl.rs:192:5:195:5 | Self [trait Executor] | +| blanket_impl.rs:194:24:194:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:194:24:194:28 | SelfParam | &T | blanket_impl.rs:192:5:195:5 | Self [trait Executor] | +| blanket_impl.rs:194:31:194:35 | query | | blanket_impl.rs:194:21:194:21 | E | +| blanket_impl.rs:198:21:198:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:198:21:198:25 | SelfParam | &T | blanket_impl.rs:197:10:197:22 | T | +| blanket_impl.rs:199:22:199:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:199:22:199:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:199:22:199:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:199:22:199:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:202:24:202:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:202:24:202:28 | SelfParam | &T | blanket_impl.rs:197:10:197:22 | T | +| blanket_impl.rs:202:31:202:36 | _query | | blanket_impl.rs:202:21:202:21 | E | +| blanket_impl.rs:203:22:203:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:203:22:203:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:203:22:203:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:203:22:203:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:212:13:212:13 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:212:17:212:34 | MySqlConnection {...} | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:214:9:214:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:215:35:215:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:215:35:215:36 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:215:36:215:36 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:217:9:217:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:217:20:217:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:217:20:217:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:218:9:218:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:218:28:218:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:218:28:218:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:219:35:219:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:219:35:219:36 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:219:36:219:36 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:219:39:219:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:219:39:219:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:220:43:220:44 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:220:43:220:44 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:220:44:220:44 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | +| blanket_impl.rs:220:47:220:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:220:47:220:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | file://:0:0:0:0 | (T_2) | | closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | @@ -367,215 +473,305 @@ inferType | dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | | dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | -| dereference.rs:32:9:32:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:32:14:32:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:32:36:32:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:33:9:33:11 | _b1 | | file://:0:0:0:0 | & | -| dereference.rs:33:9:33:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:33:15:33:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:33:15:33:24 | a1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:33:15:33:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:36:9:36:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:14:36:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:36:36:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:37:9:37:11 | _b2 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:37:15:37:17 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:37:16:37:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:9:40:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:33:12:33:16 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:33:12:33:16 | SelfParam | &T | dereference.rs:30:1:30:15 | S | +| dereference.rs:33:12:33:16 | SelfParam | &T.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:33:25:35:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:33:25:35:5 | { ... } | &T | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:9:34:15 | &... | | file://:0:0:0:0 | & | +| dereference.rs:34:9:34:15 | &... | &T | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:10:34:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:34:10:34:13 | self | &T | dereference.rs:30:1:30:15 | S | +| dereference.rs:34:10:34:13 | self | &T.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | +| dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:9:41:11 | _b3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:41:15:41:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:15:41:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:41:16:41:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:17:41:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:46:9:46:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:46:9:46:10 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:46:14:46:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:46:14:46:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | -| dereference.rs:46:38:46:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:47:9:47:11 | _d1 | | file://:0:0:0:0 | & | -| dereference.rs:47:9:47:11 | _d1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:47:15:47:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:47:15:47:16 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:47:15:47:24 | c1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:47:15:47:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:50:9:50:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:9:50:10 | c2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:50:14:50:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:14:50:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | -| dereference.rs:50:38:50:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:51:9:51:11 | _d2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:51:15:51:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:51:16:51:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:51:16:51:17 | c2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:54:9:54:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:9:54:10 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:54:14:54:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:14:54:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:54:38:54:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:55:9:55:11 | _d3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:55:15:55:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:55:15:55:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:55:16:55:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:55:17:55:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:60:9:60:10 | e1 | | file://:0:0:0:0 | & | -| dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:60:9:60:10 | e1 | &T | file://:0:0:0:0 | & | -| dereference.rs:60:14:60:17 | &'a' | | file://:0:0:0:0 | & | -| dereference.rs:60:14:60:17 | &'a' | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:60:14:60:17 | &'a' | &T | file://:0:0:0:0 | & | -| dereference.rs:60:15:60:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:61:9:61:11 | _f1 | | file://:0:0:0:0 | & | -| dereference.rs:61:15:61:16 | e1 | | file://:0:0:0:0 | & | -| dereference.rs:61:15:61:16 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:61:15:61:16 | e1 | &T | file://:0:0:0:0 | & | -| dereference.rs:61:15:61:24 | e1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:64:9:64:10 | e2 | | file://:0:0:0:0 | & | -| dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:64:14:64:17 | &'a' | | file://:0:0:0:0 | & | -| dereference.rs:64:14:64:17 | &'a' | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:64:15:64:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:65:9:65:11 | _f2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:65:15:65:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:65:16:65:17 | e2 | | file://:0:0:0:0 | & | -| dereference.rs:65:16:65:17 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:68:9:68:10 | e3 | | file://:0:0:0:0 | & | -| dereference.rs:68:9:68:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:68:14:68:19 | &34i64 | | file://:0:0:0:0 | & | -| dereference.rs:68:14:68:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:68:15:68:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:69:9:69:11 | _f3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:69:15:69:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:69:15:69:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:69:16:69:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:69:17:69:18 | e3 | | file://:0:0:0:0 | & | -| dereference.rs:69:17:69:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:74:9:74:10 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:74:9:74:10 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:74:9:74:10 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:74:25:74:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:74:25:74:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:74:25:74:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | -| dereference.rs:74:34:74:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:75:9:75:11 | _h1 | | file://:0:0:0:0 | & | -| dereference.rs:75:9:75:11 | _h1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:75:15:75:16 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:75:15:75:16 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:75:15:75:16 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:75:15:75:24 | g1.deref() | | file://:0:0:0:0 | & | -| dereference.rs:75:15:75:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:78:9:78:10 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:9:78:10 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:78:9:78:10 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:78:25:78:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:25:78:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:78:25:78:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | -| dereference.rs:78:34:78:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:79:9:79:11 | _h2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:79:15:79:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:79:16:79:17 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:79:16:79:17 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:79:16:79:17 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:82:9:82:10 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:9:82:10 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:9:82:10 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:82:24:82:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:24:82:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:24:82:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:82:33:82:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:83:9:83:11 | _h3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:83:15:83:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:83:15:83:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:83:16:83:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:83:17:83:18 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:83:17:83:18 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:83:17:83:18 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:88:9:88:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:88:13:88:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:88:35:88:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:89:14:89:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:92:9:92:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:92:9:92:9 | x | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:92:13:92:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:92:13:92:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:92:37:92:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:93:14:93:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:93:14:93:14 | x | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:121:17:121:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:121:17:121:26 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:121:17:121:26 | key_to_key | K.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:121:17:121:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:121:17:121:26 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:121:17:121:26 | key_to_key | V.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:121:30:121:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:121:30:121:57 | ...::new(...) | K | file://:0:0:0:0 | & | -| dereference.rs:121:30:121:57 | ...::new(...) | K.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:121:30:121:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:121:30:121:57 | ...::new(...) | V | file://:0:0:0:0 | & | -| dereference.rs:121:30:121:57 | ...::new(...) | V.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:122:17:122:19 | key | | file://:0:0:0:0 | & | -| dereference.rs:122:17:122:19 | key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:122:17:122:19 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:122:17:122:19 | key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:122:23:122:29 | &... | | file://:0:0:0:0 | & | -| dereference.rs:122:23:122:29 | &... | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:122:23:122:29 | &... | &T | file://:0:0:0:0 | & | -| dereference.rs:122:23:122:29 | &... | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:122:24:122:29 | Key {...} | | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:16:123:28 | Some(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:123:16:123:28 | Some(...) | T | file://:0:0:0:0 | & | -| dereference.rs:123:16:123:28 | Some(...) | T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:16:123:28 | Some(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:123:16:123:28 | Some(...) | T.&T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:21:123:27 | ref_key | | file://:0:0:0:0 | & | -| dereference.rs:123:21:123:27 | ref_key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:21:123:27 | ref_key | &T | file://:0:0:0:0 | & | -| dereference.rs:123:21:123:27 | ref_key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:32:123:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:123:32:123:41 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:123:32:123:41 | key_to_key | K.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:32:123:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:123:32:123:41 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:123:32:123:41 | key_to_key | V.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:32:123:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:123:32:123:50 | key_to_key.get(...) | T | file://:0:0:0:0 | & | -| dereference.rs:123:32:123:50 | key_to_key.get(...) | T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:32:123:50 | key_to_key.get(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:123:32:123:50 | key_to_key.get(...) | T.&T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:47:123:49 | key | | file://:0:0:0:0 | & | -| dereference.rs:123:47:123:49 | key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:123:47:123:49 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:123:47:123:49 | key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:125:13:125:15 | key | | file://:0:0:0:0 | & | -| dereference.rs:125:13:125:15 | key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:125:13:125:15 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:125:13:125:15 | key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:125:13:125:25 | ... = ... | | file://:0:0:0:0 | () | -| dereference.rs:125:19:125:25 | ref_key | | file://:0:0:0:0 | & | -| dereference.rs:125:19:125:25 | ref_key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:125:19:125:25 | ref_key | &T | file://:0:0:0:0 | & | -| dereference.rs:125:19:125:25 | ref_key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:9:127:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:127:9:127:18 | key_to_key | K | file://:0:0:0:0 | & | -| dereference.rs:127:9:127:18 | key_to_key | K.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:9:127:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:127:9:127:18 | key_to_key | V | file://:0:0:0:0 | & | -| dereference.rs:127:9:127:18 | key_to_key | V.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:9:127:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:127:9:127:35 | key_to_key.insert(...) | T | file://:0:0:0:0 | & | -| dereference.rs:127:9:127:35 | key_to_key.insert(...) | T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:9:127:35 | key_to_key.insert(...) | T.&T | file://:0:0:0:0 | & | -| dereference.rs:127:9:127:35 | key_to_key.insert(...) | T.&T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:27:127:29 | key | | file://:0:0:0:0 | & | -| dereference.rs:127:27:127:29 | key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:27:127:29 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:127:27:127:29 | key | &T.&T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:32:127:34 | key | | file://:0:0:0:0 | & | -| dereference.rs:127:32:127:34 | key | &T | dereference.rs:99:5:100:21 | Key | -| dereference.rs:127:32:127:34 | key | &T | file://:0:0:0:0 | & | -| dereference.rs:127:32:127:34 | key | &T.&T | dereference.rs:99:5:100:21 | Key | +| dereference.rs:41:9:41:11 | _b1 | | file://:0:0:0:0 | & | +| dereference.rs:41:9:41:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:15:41:24 | a1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:41:15:41:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:44:36:44:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:45:9:45:11 | _b2 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:45:15:45:17 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:45:16:45:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:48:9:48:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:48:14:48:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:48:36:48:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:49:9:49:11 | _b3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:49:15:49:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:49:15:49:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:49:16:49:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:9:54:10 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:14:54:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:55:9:55:11 | _d1 | | file://:0:0:0:0 | & | +| dereference.rs:55:9:55:11 | _d1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:15:55:16 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:15:55:24 | c1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:55:15:55:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:58:9:58:10 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:58:14:58:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:58:14:58:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:58:38:58:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:59:9:59:11 | _d2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:59:15:59:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:59:16:59:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:59:16:59:17 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:62:9:62:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:62:9:62:10 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:62:14:62:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:62:14:62:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:62:38:62:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:63:9:63:11 | _d3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:63:15:63:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:63:15:63:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:63:16:63:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:9:68:10 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:68:9:68:10 | e1 | &T | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:68:14:68:17 | &'a' | &T | file://:0:0:0:0 | & | +| dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:69:9:69:11 | _f1 | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:16 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:16 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:69:15:69:16 | e1 | &T | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:24 | e1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:72:9:72:10 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:72:9:72:10 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:72:14:72:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:72:14:72:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:73:9:73:11 | _f2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:73:15:73:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:73:16:73:17 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:73:16:73:17 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:76:9:76:10 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:76:9:76:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:76:14:76:19 | &34i64 | | file://:0:0:0:0 | & | +| dereference.rs:76:14:76:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:77:9:77:11 | _f3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:77:15:77:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:77:15:77:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:77:17:77:18 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:77:17:77:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:82:25:82:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:25:82:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:25:82:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:83:9:83:11 | _h1 | | file://:0:0:0:0 | & | +| dereference.rs:83:9:83:11 | _h1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:15:83:24 | g1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:83:15:83:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:86:9:86:10 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:86:25:86:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:86:25:86:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:86:25:86:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:86:34:86:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:87:9:87:11 | _h2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:87:15:87:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:87:16:87:17 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:87:16:87:17 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:87:16:87:17 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:90:9:90:10 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:9:90:10 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:9:90:10 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:90:24:90:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:24:90:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:24:90:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:90:33:90:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:91:9:91:11 | _h3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:91:15:91:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:91:15:91:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:91:16:91:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:97:14:97:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:100:9:100:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:100:9:100:9 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:100:13:100:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:100:13:100:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:100:37:100:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:101:14:101:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:101:14:101:14 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:103:9:103:9 | z | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:103:9:103:9 | z | T | dereference.rs:30:1:30:15 | S | +| dereference.rs:103:9:103:9 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:103:13:103:45 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:103:13:103:45 | MySmartPointer {...} | T | dereference.rs:30:1:30:15 | S | +| dereference.rs:103:13:103:45 | MySmartPointer {...} | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:103:37:103:43 | S(...) | | dereference.rs:30:1:30:15 | S | +| dereference.rs:103:37:103:43 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:103:39:103:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:104:14:104:14 | z | T | dereference.rs:30:1:30:15 | S | +| dereference.rs:104:14:104:14 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:132:17:132:26 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:132:17:132:26 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:132:17:132:26 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:132:17:132:26 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:132:30:132:57 | ...::new(...) | K | file://:0:0:0:0 | & | +| dereference.rs:132:30:132:57 | ...::new(...) | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:132:30:132:57 | ...::new(...) | V | file://:0:0:0:0 | & | +| dereference.rs:132:30:132:57 | ...::new(...) | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | | file://:0:0:0:0 | & | +| dereference.rs:133:17:133:19 | key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:133:17:133:19 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | | file://:0:0:0:0 | & | +| dereference.rs:133:23:133:29 | &... | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | &T | file://:0:0:0:0 | & | +| dereference.rs:133:23:133:29 | &... | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:134:16:134:28 | Some(...) | T | file://:0:0:0:0 | & | +| dereference.rs:134:16:134:28 | Some(...) | T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:134:16:134:28 | Some(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | | file://:0:0:0:0 | & | +| dereference.rs:134:21:134:27 | ref_key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | &T | file://:0:0:0:0 | & | +| dereference.rs:134:21:134:27 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:134:32:134:41 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:41 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:134:32:134:41 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:41 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | | file://:0:0:0:0 | & | +| dereference.rs:134:47:134:49 | key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:134:47:134:49 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:15 | key | | file://:0:0:0:0 | & | +| dereference.rs:136:13:136:15 | key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:15 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:136:13:136:15 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:25 | ... = ... | | file://:0:0:0:0 | () | +| dereference.rs:136:19:136:25 | ref_key | | file://:0:0:0:0 | & | +| dereference.rs:136:19:136:25 | ref_key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:19:136:25 | ref_key | &T | file://:0:0:0:0 | & | +| dereference.rs:136:19:136:25 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:138:9:138:18 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:18 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:138:9:138:18 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:18 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | | file://:0:0:0:0 | & | +| dereference.rs:138:27:138:29 | key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:138:27:138:29 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | | file://:0:0:0:0 | & | +| dereference.rs:138:32:138:34 | key | &T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:138:32:138:34 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | +| dereference.rs:151:16:151:19 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:151:16:151:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | +| dereference.rs:152:13:152:13 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:158:16:158:19 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:158:16:158:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i32 | +| dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:164:16:164:19 | SelfParam | | dereference.rs:163:5:165:5 | Self [trait MyTrait2] | +| dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | +| dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | +| dereference.rs:169:22:169:24 | arg | | file://:0:0:0:0 | & | +| dereference.rs:169:22:169:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | +| dereference.rs:170:13:170:13 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | +| dereference.rs:176:22:176:24 | arg | | file://:0:0:0:0 | & | +| dereference.rs:176:22:176:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | +| dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:182:17:182:20 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:182:17:182:20 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:18:182:19 | &S | | file://:0:0:0:0 | & | +| dereference.rs:182:18:182:19 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:183:17:183:17 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:17:184:24 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:184:17:184:24 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:18:184:23 | &mut S | | file://:0:0:0:0 | & | +| dereference.rs:184:18:184:23 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:13:186:13 | x | | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:13:186:13 | x | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:186:17:186:17 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:17:186:25 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:186:23:186:24 | &S | | file://:0:0:0:0 | & | +| dereference.rs:186:23:186:24 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:24:186:24 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:13:187:13 | y | | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:13:187:13 | y | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:187:17:187:17 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:17:187:29 | S.bar(...) | | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:17:187:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:187:23:187:28 | &mut S | | file://:0:0:0:0 | & | +| dereference.rs:187:23:187:28 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:28:187:28 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:196:16:196:20 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:196:16:196:20 | SelfParam | &T | dereference.rs:195:5:197:5 | Self [trait Bar] | +| dereference.rs:201:16:201:24 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:201:16:201:24 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | file://:0:0:0:0 | & | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:202:22:202:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:202:22:202:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:208:16:208:20 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | file://:0:0:0:0 | & | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:209:22:209:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:209:22:209:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | | dyn_type.rs:7:10:7:14 | SelfParam | | file://:0:0:0:0 | & | | dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | file://:0:0:0:0 | & | @@ -779,9 +975,61 @@ inferType | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | -| loop/main.rs:7:12:7:15 | SelfParam | | loop/main.rs:6:1:8:1 | Self [trait T1] | -| loop/main.rs:11:12:11:15 | SelfParam | | loop/main.rs:10:1:14:1 | Self [trait T2] | -| loop/main.rs:12:9:12:12 | self | | loop/main.rs:10:1:14:1 | Self [trait T2] | +| invalid/main.rs:8:16:8:19 | SelfParam | | invalid/main.rs:7:5:9:5 | Self [trait T1] | +| invalid/main.rs:12:16:12:19 | SelfParam | | invalid/main.rs:11:5:15:5 | Self [trait T2] | +| invalid/main.rs:13:13:13:16 | self | | invalid/main.rs:11:5:15:5 | Self [trait T2] | +| invalid/main.rs:25:22:25:25 | SelfParam | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | +| invalid/main.rs:25:28:25:32 | other | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | +| invalid/main.rs:29:22:29:25 | SelfParam | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:29:28:29:32 | other | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:29:49:31:9 | { ... } | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:30:13:30:33 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:30:17:30:20 | self | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:30:17:30:22 | self.0 | | {EXTERNAL LOCATION} | i32 | +| invalid/main.rs:30:17:30:32 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| invalid/main.rs:30:26:30:30 | other | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:30:26:30:32 | other.0 | | {EXTERNAL LOCATION} | i32 | +| invalid/main.rs:39:16:39:19 | SelfParam | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:39:22:39:26 | other | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:39:43:41:9 | { ... } | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:40:13:40:16 | self | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:40:13:40:33 | self.add_alias(...) | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:40:28:40:32 | other | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:45:13:45:13 | a | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:45:17:45:22 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:45:21:45:21 | 5 | | {EXTERNAL LOCATION} | i32 | +| invalid/main.rs:46:13:46:13 | b | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:46:17:46:23 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:46:21:46:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| invalid/main.rs:47:13:47:13 | c | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:47:17:47:17 | a | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:47:17:47:21 | ... + ... | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:47:21:47:21 | b | | invalid/main.rs:21:5:22:20 | Num | +| invalid/main.rs:57:19:57:23 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:57:19:57:23 | SelfParam | &T | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | +| invalid/main.rs:61:22:61:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:61:22:61:26 | SelfParam | &T | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | +| invalid/main.rs:68:19:68:23 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:68:19:68:23 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:68:34:70:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:69:13:69:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:69:14:69:17 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:69:14:69:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:75:22:75:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:75:22:75:26 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:75:37:77:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:76:13:76:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:76:14:76:17 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:76:14:76:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:83:22:83:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:83:22:83:26 | SelfParam | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:83:37:85:9 | { ... } | | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:84:13:84:16 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:84:13:84:16 | self | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:84:13:84:25 | self.clone1() | | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:91:13:91:13 | x | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:91:17:91:18 | S1 | | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:91:17:91:30 | S1.duplicate() | | invalid/main.rs:53:5:54:14 | S1 | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | @@ -1487,3642 +1735,3888 @@ inferType | main.rs:540:26:540:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:541:18:541:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:541:18:541:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:541:18:541:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:541:18:541:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:541:26:541:26 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:541:26:541:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | -| main.rs:543:13:543:13 | y | | main.rs:479:5:479:22 | S2 | -| main.rs:543:13:543:13 | y | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:543:17:543:22 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:543:17:543:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:543:20:543:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:544:18:544:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:544:18:544:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:544:18:544:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:544:18:544:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:544:26:544:26 | y | | main.rs:479:5:479:22 | S2 | -| main.rs:544:26:544:26 | y | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:544:26:544:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:546:13:546:13 | z | | main.rs:479:5:479:22 | S2 | -| main.rs:546:13:546:13 | z | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:546:17:546:21 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:546:17:546:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:546:20:546:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:541:18:541:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:541:18:541:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:541:26:541:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:541:44:541:44 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:542:18:542:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:542:18:542:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:542:18:542:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:542:18:542:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:542:26:542:26 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:542:26:542:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | +| main.rs:543:18:543:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:543:18:543:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:543:18:543:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:543:18:543:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:543:26:543:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:543:46:543:46 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:545:13:545:13 | y | | main.rs:479:5:479:22 | S2 | +| main.rs:545:13:545:13 | y | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:545:17:545:22 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:545:17:545:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:545:20:545:21 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:546:18:546:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:546:18:546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:546:18:546:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:546:18:546:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:546:26:546:26 | y | | main.rs:479:5:479:22 | S2 | +| main.rs:546:26:546:26 | y | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:546:26:546:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:547:18:547:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:547:18:547:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:547:18:547:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:547:18:547:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:547:26:547:26 | z | | main.rs:479:5:479:22 | S2 | -| main.rs:547:26:547:26 | z | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:547:26:547:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:549:13:549:13 | w | | main.rs:517:5:518:22 | S3 | -| main.rs:549:13:549:13 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:549:17:549:22 | S3(...) | | main.rs:517:5:518:22 | S3 | -| main.rs:549:17:549:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:549:20:549:21 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:547:18:547:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:547:18:547:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:547:26:547:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:547:50:547:55 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:547:50:547:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:547:53:547:54 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:549:13:549:13 | z | | main.rs:479:5:479:22 | S2 | +| main.rs:549:13:549:13 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:549:17:549:21 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:549:17:549:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:549:20:549:20 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:550:18:550:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:550:18:550:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:550:18:550:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:550:18:550:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:550:26:550:26 | w | | main.rs:517:5:518:22 | S3 | -| main.rs:550:26:550:26 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:550:26:550:31 | w.m(...) | | file://:0:0:0:0 | & | -| main.rs:550:26:550:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:550:26:550:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:550:30:550:30 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:567:19:567:22 | SelfParam | | main.rs:565:5:568:5 | Self [trait FirstTrait] | -| main.rs:572:19:572:22 | SelfParam | | main.rs:570:5:573:5 | Self [trait SecondTrait] | -| main.rs:575:64:575:64 | x | | main.rs:575:45:575:61 | T | -| main.rs:577:13:577:14 | s1 | | main.rs:575:35:575:42 | I | -| main.rs:577:18:577:18 | x | | main.rs:575:45:575:61 | T | -| main.rs:577:18:577:27 | x.method() | | main.rs:575:35:575:42 | I | -| main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:578:18:578:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:578:18:578:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:578:26:578:27 | s1 | | main.rs:575:35:575:42 | I | -| main.rs:581:65:581:65 | x | | main.rs:581:46:581:62 | T | -| main.rs:583:13:583:14 | s2 | | main.rs:581:36:581:43 | I | -| main.rs:583:18:583:18 | x | | main.rs:581:46:581:62 | T | -| main.rs:583:18:583:27 | x.method() | | main.rs:581:36:581:43 | I | +| main.rs:550:18:550:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:550:18:550:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:550:26:550:26 | z | | main.rs:479:5:479:22 | S2 | +| main.rs:550:26:550:26 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:550:26:550:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | +| main.rs:551:18:551:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:551:18:551:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:551:18:551:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:551:18:551:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:551:26:551:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:551:44:551:48 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:551:44:551:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:551:47:551:47 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:552:18:552:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:552:18:552:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:552:18:552:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:552:18:552:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:552:26:552:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:552:51:552:55 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:552:51:552:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:552:54:552:54 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:554:13:554:13 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:554:13:554:13 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:554:17:554:22 | S3(...) | | main.rs:517:5:518:22 | S3 | +| main.rs:554:17:554:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:554:20:554:21 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:555:18:555:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:555:18:555:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:555:18:555:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:555:18:555:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:555:26:555:26 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:555:26:555:26 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:555:26:555:31 | w.m(...) | | file://:0:0:0:0 | & | +| main.rs:555:26:555:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | +| main.rs:555:26:555:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:555:30:555:30 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:556:18:556:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:556:18:556:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:556:18:556:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:556:18:556:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:556:26:556:37 | ...::m(...) | | file://:0:0:0:0 | & | +| main.rs:556:26:556:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | +| main.rs:556:26:556:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:556:32:556:33 | &w | | file://:0:0:0:0 | & | +| main.rs:556:32:556:33 | &w | &T | main.rs:517:5:518:22 | S3 | +| main.rs:556:32:556:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:556:33:556:33 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:556:33:556:33 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:556:36:556:36 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:573:19:573:22 | SelfParam | | main.rs:571:5:574:5 | Self [trait FirstTrait] | +| main.rs:578:19:578:22 | SelfParam | | main.rs:576:5:579:5 | Self [trait SecondTrait] | +| main.rs:581:64:581:64 | x | | main.rs:581:45:581:61 | T | +| main.rs:583:13:583:14 | s1 | | main.rs:581:35:581:42 | I | +| main.rs:583:18:583:18 | x | | main.rs:581:45:581:61 | T | +| main.rs:583:18:583:27 | x.method() | | main.rs:581:35:581:42 | I | | main.rs:584:18:584:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:584:18:584:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:584:18:584:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:584:18:584:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:584:26:584:27 | s2 | | main.rs:581:36:581:43 | I | -| main.rs:587:49:587:49 | x | | main.rs:587:30:587:46 | T | -| main.rs:588:13:588:13 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:588:17:588:17 | x | | main.rs:587:30:587:46 | T | -| main.rs:588:17:588:26 | x.method() | | main.rs:557:5:558:14 | S1 | -| main.rs:589:18:589:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:589:18:589:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:589:18:589:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:589:18:589:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:589:26:589:26 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:592:53:592:53 | x | | main.rs:592:34:592:50 | T | -| main.rs:593:13:593:13 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:593:17:593:17 | x | | main.rs:592:34:592:50 | T | -| main.rs:593:17:593:26 | x.method() | | main.rs:557:5:558:14 | S1 | -| main.rs:594:18:594:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:594:18:594:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:594:18:594:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:594:18:594:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:594:26:594:26 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:597:43:597:43 | x | | main.rs:597:40:597:40 | T | -| main.rs:601:13:601:13 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:601:17:601:17 | x | | main.rs:597:40:597:40 | T | -| main.rs:601:17:601:26 | x.method() | | main.rs:557:5:558:14 | S1 | -| main.rs:602:18:602:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:602:18:602:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:602:18:602:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:602:18:602:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:602:26:602:26 | s | | main.rs:557:5:558:14 | S1 | -| main.rs:606:16:606:19 | SelfParam | | main.rs:605:5:609:5 | Self [trait Pair] | -| main.rs:608:16:608:19 | SelfParam | | main.rs:605:5:609:5 | Self [trait Pair] | -| main.rs:611:53:611:53 | x | | main.rs:611:50:611:50 | T | -| main.rs:611:59:611:59 | y | | main.rs:611:50:611:50 | T | -| main.rs:616:13:616:13 | _ | | main.rs:557:5:558:14 | S1 | -| main.rs:616:17:616:17 | x | | main.rs:611:50:611:50 | T | -| main.rs:616:17:616:23 | x.fst() | | main.rs:557:5:558:14 | S1 | -| main.rs:617:13:617:13 | _ | | main.rs:557:5:558:14 | S1 | -| main.rs:617:17:617:17 | y | | main.rs:611:50:611:50 | T | -| main.rs:617:17:617:26 | y.method() | | main.rs:557:5:558:14 | S1 | -| main.rs:620:58:620:58 | x | | main.rs:620:41:620:55 | T | -| main.rs:620:64:620:64 | y | | main.rs:620:41:620:55 | T | -| main.rs:622:13:622:14 | s1 | | main.rs:557:5:558:14 | S1 | -| main.rs:622:18:622:18 | x | | main.rs:620:41:620:55 | T | -| main.rs:622:18:622:24 | x.fst() | | main.rs:557:5:558:14 | S1 | -| main.rs:623:13:623:14 | s2 | | main.rs:560:5:561:14 | S2 | -| main.rs:623:18:623:18 | y | | main.rs:620:41:620:55 | T | -| main.rs:623:18:623:24 | y.snd() | | main.rs:560:5:561:14 | S2 | -| main.rs:624:18:624:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:624:18:624:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:624:18:624:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:624:18:624:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:624:32:624:33 | s1 | | main.rs:557:5:558:14 | S1 | -| main.rs:624:36:624:37 | s2 | | main.rs:560:5:561:14 | S2 | -| main.rs:627:69:627:69 | x | | main.rs:627:52:627:66 | T | -| main.rs:627:75:627:75 | y | | main.rs:627:52:627:66 | T | -| main.rs:629:13:629:14 | s1 | | main.rs:557:5:558:14 | S1 | -| main.rs:629:18:629:18 | x | | main.rs:627:52:627:66 | T | -| main.rs:629:18:629:24 | x.fst() | | main.rs:557:5:558:14 | S1 | -| main.rs:630:13:630:14 | s2 | | main.rs:627:41:627:49 | T2 | -| main.rs:630:18:630:18 | y | | main.rs:627:52:627:66 | T | -| main.rs:630:18:630:24 | y.snd() | | main.rs:627:41:627:49 | T2 | -| main.rs:631:18:631:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:631:18:631:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:631:18:631:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:631:18:631:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:631:32:631:33 | s1 | | main.rs:557:5:558:14 | S1 | -| main.rs:631:36:631:37 | s2 | | main.rs:627:41:627:49 | T2 | -| main.rs:634:50:634:50 | x | | main.rs:634:41:634:47 | T | -| main.rs:634:56:634:56 | y | | main.rs:634:41:634:47 | T | -| main.rs:636:13:636:14 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:636:18:636:18 | x | | main.rs:634:41:634:47 | T | -| main.rs:636:18:636:24 | x.fst() | | {EXTERNAL LOCATION} | bool | -| main.rs:637:13:637:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:637:18:637:18 | y | | main.rs:634:41:634:47 | T | -| main.rs:637:18:637:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:638:18:638:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:638:18:638:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:638:18:638:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:638:18:638:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:638:32:638:33 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:638:36:638:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:641:54:641:54 | x | | main.rs:641:41:641:51 | T | -| main.rs:641:60:641:60 | y | | main.rs:641:41:641:51 | T | -| main.rs:643:13:643:14 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:643:18:643:18 | x | | main.rs:641:41:641:51 | T | -| main.rs:643:18:643:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | -| main.rs:644:13:644:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:644:18:644:18 | y | | main.rs:641:41:641:51 | T | -| main.rs:644:18:644:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:645:18:645:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:645:18:645:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:645:18:645:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:645:18:645:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:645:32:645:33 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:645:36:645:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:661:15:661:18 | SelfParam | | main.rs:660:5:669:5 | Self [trait MyTrait] | -| main.rs:663:15:663:18 | SelfParam | | main.rs:660:5:669:5 | Self [trait MyTrait] | -| main.rs:666:9:668:9 | { ... } | | main.rs:660:19:660:19 | A | -| main.rs:667:13:667:16 | self | | main.rs:660:5:669:5 | Self [trait MyTrait] | -| main.rs:667:13:667:21 | self.m1() | | main.rs:660:19:660:19 | A | -| main.rs:673:43:673:43 | x | | main.rs:673:26:673:40 | T2 | -| main.rs:673:56:675:5 | { ... } | | main.rs:673:22:673:23 | T1 | -| main.rs:674:9:674:9 | x | | main.rs:673:26:673:40 | T2 | -| main.rs:674:9:674:14 | x.m1() | | main.rs:673:22:673:23 | T1 | -| main.rs:679:49:679:49 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:679:49:679:49 | x | T | main.rs:679:32:679:46 | T2 | -| main.rs:679:71:681:5 | { ... } | | main.rs:679:28:679:29 | T1 | -| main.rs:680:9:680:9 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:680:9:680:9 | x | T | main.rs:679:32:679:46 | T2 | -| main.rs:680:9:680:11 | x.a | | main.rs:679:32:679:46 | T2 | -| main.rs:680:9:680:16 | ... .m1() | | main.rs:679:28:679:29 | T1 | -| main.rs:684:15:684:18 | SelfParam | | main.rs:650:5:653:5 | MyThing | -| main.rs:684:15:684:18 | SelfParam | T | main.rs:683:10:683:10 | T | -| main.rs:684:26:686:9 | { ... } | | main.rs:683:10:683:10 | T | -| main.rs:685:13:685:16 | self | | main.rs:650:5:653:5 | MyThing | -| main.rs:685:13:685:16 | self | T | main.rs:683:10:683:10 | T | -| main.rs:685:13:685:18 | self.a | | main.rs:683:10:683:10 | T | -| main.rs:690:13:690:13 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:690:13:690:13 | x | T | main.rs:655:5:656:14 | S1 | -| main.rs:690:17:690:33 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:690:17:690:33 | MyThing {...} | T | main.rs:655:5:656:14 | S1 | -| main.rs:690:30:690:31 | S1 | | main.rs:655:5:656:14 | S1 | -| main.rs:691:13:691:13 | y | | main.rs:650:5:653:5 | MyThing | -| main.rs:691:13:691:13 | y | T | main.rs:657:5:658:14 | S2 | -| main.rs:691:17:691:33 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:691:17:691:33 | MyThing {...} | T | main.rs:657:5:658:14 | S2 | -| main.rs:691:30:691:31 | S2 | | main.rs:657:5:658:14 | S2 | -| main.rs:693:18:693:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:693:18:693:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:693:18:693:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:693:18:693:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:693:26:693:26 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:693:26:693:26 | x | T | main.rs:655:5:656:14 | S1 | -| main.rs:693:26:693:31 | x.m1() | | main.rs:655:5:656:14 | S1 | -| main.rs:694:18:694:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:694:18:694:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:694:18:694:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:694:18:694:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:694:26:694:26 | y | | main.rs:650:5:653:5 | MyThing | -| main.rs:694:26:694:26 | y | T | main.rs:657:5:658:14 | S2 | -| main.rs:694:26:694:31 | y.m1() | | main.rs:657:5:658:14 | S2 | -| main.rs:696:13:696:13 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:696:13:696:13 | x | T | main.rs:655:5:656:14 | S1 | -| main.rs:696:17:696:33 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:696:17:696:33 | MyThing {...} | T | main.rs:655:5:656:14 | S1 | -| main.rs:696:30:696:31 | S1 | | main.rs:655:5:656:14 | S1 | -| main.rs:697:13:697:13 | y | | main.rs:650:5:653:5 | MyThing | -| main.rs:697:13:697:13 | y | T | main.rs:657:5:658:14 | S2 | -| main.rs:697:17:697:33 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:697:17:697:33 | MyThing {...} | T | main.rs:657:5:658:14 | S2 | -| main.rs:697:30:697:31 | S2 | | main.rs:657:5:658:14 | S2 | -| main.rs:699:18:699:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:699:18:699:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:699:18:699:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:699:18:699:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:699:26:699:26 | x | | main.rs:650:5:653:5 | MyThing | -| main.rs:699:26:699:26 | x | T | main.rs:655:5:656:14 | S1 | -| main.rs:699:26:699:31 | x.m2() | | main.rs:655:5:656:14 | S1 | -| main.rs:700:18:700:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:700:18:700:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:700:18:700:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:700:18:700:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:700:26:700:26 | y | | main.rs:650:5:653:5 | MyThing | -| main.rs:700:26:700:26 | y | T | main.rs:657:5:658:14 | S2 | -| main.rs:700:26:700:31 | y.m2() | | main.rs:657:5:658:14 | S2 | -| main.rs:702:13:702:14 | x2 | | main.rs:650:5:653:5 | MyThing | -| main.rs:702:13:702:14 | x2 | T | main.rs:655:5:656:14 | S1 | -| main.rs:702:18:702:34 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:702:18:702:34 | MyThing {...} | T | main.rs:655:5:656:14 | S1 | -| main.rs:702:31:702:32 | S1 | | main.rs:655:5:656:14 | S1 | -| main.rs:703:13:703:14 | y2 | | main.rs:650:5:653:5 | MyThing | -| main.rs:703:13:703:14 | y2 | T | main.rs:657:5:658:14 | S2 | -| main.rs:703:18:703:34 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:703:18:703:34 | MyThing {...} | T | main.rs:657:5:658:14 | S2 | -| main.rs:703:31:703:32 | S2 | | main.rs:657:5:658:14 | S2 | -| main.rs:705:18:705:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:705:18:705:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:705:18:705:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:705:18:705:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:705:26:705:42 | call_trait_m1(...) | | main.rs:655:5:656:14 | S1 | -| main.rs:705:40:705:41 | x2 | | main.rs:650:5:653:5 | MyThing | -| main.rs:705:40:705:41 | x2 | T | main.rs:655:5:656:14 | S1 | -| main.rs:706:18:706:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:706:18:706:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:706:18:706:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:706:18:706:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:706:26:706:42 | call_trait_m1(...) | | main.rs:657:5:658:14 | S2 | -| main.rs:706:40:706:41 | y2 | | main.rs:650:5:653:5 | MyThing | -| main.rs:706:40:706:41 | y2 | T | main.rs:657:5:658:14 | S2 | -| main.rs:708:13:708:14 | x3 | | main.rs:650:5:653:5 | MyThing | -| main.rs:708:13:708:14 | x3 | T | main.rs:650:5:653:5 | MyThing | -| main.rs:708:13:708:14 | x3 | T.T | main.rs:655:5:656:14 | S1 | -| main.rs:708:18:710:9 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:708:18:710:9 | MyThing {...} | T | main.rs:650:5:653:5 | MyThing | -| main.rs:708:18:710:9 | MyThing {...} | T.T | main.rs:655:5:656:14 | S1 | -| main.rs:709:16:709:32 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:709:16:709:32 | MyThing {...} | T | main.rs:655:5:656:14 | S1 | -| main.rs:709:29:709:30 | S1 | | main.rs:655:5:656:14 | S1 | -| main.rs:711:13:711:14 | y3 | | main.rs:650:5:653:5 | MyThing | -| main.rs:711:13:711:14 | y3 | T | main.rs:650:5:653:5 | MyThing | -| main.rs:711:13:711:14 | y3 | T.T | main.rs:657:5:658:14 | S2 | -| main.rs:711:18:713:9 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:711:18:713:9 | MyThing {...} | T | main.rs:650:5:653:5 | MyThing | -| main.rs:711:18:713:9 | MyThing {...} | T.T | main.rs:657:5:658:14 | S2 | -| main.rs:712:16:712:32 | MyThing {...} | | main.rs:650:5:653:5 | MyThing | -| main.rs:712:16:712:32 | MyThing {...} | T | main.rs:657:5:658:14 | S2 | -| main.rs:712:29:712:30 | S2 | | main.rs:657:5:658:14 | S2 | -| main.rs:715:13:715:13 | a | | main.rs:655:5:656:14 | S1 | -| main.rs:715:17:715:39 | call_trait_thing_m1(...) | | main.rs:655:5:656:14 | S1 | -| main.rs:715:37:715:38 | x3 | | main.rs:650:5:653:5 | MyThing | -| main.rs:715:37:715:38 | x3 | T | main.rs:650:5:653:5 | MyThing | -| main.rs:715:37:715:38 | x3 | T.T | main.rs:655:5:656:14 | S1 | -| main.rs:716:18:716:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:716:18:716:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:716:18:716:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:716:18:716:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:716:26:716:26 | a | | main.rs:655:5:656:14 | S1 | -| main.rs:717:13:717:13 | b | | main.rs:657:5:658:14 | S2 | -| main.rs:717:17:717:39 | call_trait_thing_m1(...) | | main.rs:657:5:658:14 | S2 | -| main.rs:717:37:717:38 | y3 | | main.rs:650:5:653:5 | MyThing | -| main.rs:717:37:717:38 | y3 | T | main.rs:650:5:653:5 | MyThing | -| main.rs:717:37:717:38 | y3 | T.T | main.rs:657:5:658:14 | S2 | -| main.rs:718:18:718:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:718:18:718:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:718:18:718:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:718:18:718:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:718:26:718:26 | b | | main.rs:657:5:658:14 | S2 | -| main.rs:729:19:729:22 | SelfParam | | main.rs:723:5:726:5 | Wrapper | -| main.rs:729:19:729:22 | SelfParam | A | main.rs:728:10:728:10 | A | -| main.rs:729:30:731:9 | { ... } | | main.rs:728:10:728:10 | A | -| main.rs:730:13:730:16 | self | | main.rs:723:5:726:5 | Wrapper | -| main.rs:730:13:730:16 | self | A | main.rs:728:10:728:10 | A | -| main.rs:730:13:730:22 | self.field | | main.rs:728:10:728:10 | A | -| main.rs:738:15:738:18 | SelfParam | | main.rs:734:5:748:5 | Self [trait MyTrait] | -| main.rs:740:15:740:18 | SelfParam | | main.rs:734:5:748:5 | Self [trait MyTrait] | -| main.rs:744:9:747:9 | { ... } | | main.rs:735:9:735:28 | AssociatedType | -| main.rs:745:13:745:16 | self | | main.rs:734:5:748:5 | Self [trait MyTrait] | -| main.rs:745:13:745:21 | self.m1() | | main.rs:735:9:735:28 | AssociatedType | -| main.rs:746:13:746:43 | ...::default(...) | | main.rs:735:9:735:28 | AssociatedType | -| main.rs:754:19:754:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:754:19:754:23 | SelfParam | &T | main.rs:750:5:760:5 | Self [trait MyTraitAssoc2] | -| main.rs:754:26:754:26 | a | | main.rs:754:16:754:16 | A | -| main.rs:756:22:756:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:756:22:756:26 | SelfParam | &T | main.rs:750:5:760:5 | Self [trait MyTraitAssoc2] | -| main.rs:756:29:756:29 | a | | main.rs:756:19:756:19 | A | -| main.rs:756:35:756:35 | b | | main.rs:756:19:756:19 | A | -| main.rs:756:75:759:9 | { ... } | | main.rs:751:9:751:52 | GenericAssociatedType | -| main.rs:757:13:757:16 | self | | file://:0:0:0:0 | & | -| main.rs:757:13:757:16 | self | &T | main.rs:750:5:760:5 | Self [trait MyTraitAssoc2] | -| main.rs:757:13:757:23 | self.put(...) | | main.rs:751:9:751:52 | GenericAssociatedType | -| main.rs:757:22:757:22 | a | | main.rs:756:19:756:19 | A | -| main.rs:758:13:758:16 | self | | file://:0:0:0:0 | & | -| main.rs:758:13:758:16 | self | &T | main.rs:750:5:760:5 | Self [trait MyTraitAssoc2] | -| main.rs:758:13:758:23 | self.put(...) | | main.rs:751:9:751:52 | GenericAssociatedType | -| main.rs:758:22:758:22 | b | | main.rs:756:19:756:19 | A | -| main.rs:767:21:767:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:767:21:767:25 | SelfParam | &T | main.rs:762:5:772:5 | Self [trait TraitMultipleAssoc] | -| main.rs:769:20:769:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:769:20:769:24 | SelfParam | &T | main.rs:762:5:772:5 | Self [trait TraitMultipleAssoc] | -| main.rs:771:20:771:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:771:20:771:24 | SelfParam | &T | main.rs:762:5:772:5 | Self [trait TraitMultipleAssoc] | -| main.rs:787:15:787:18 | SelfParam | | main.rs:774:5:775:13 | S | -| main.rs:787:45:789:9 | { ... } | | main.rs:780:5:781:14 | AT | -| main.rs:788:13:788:14 | AT | | main.rs:780:5:781:14 | AT | -| main.rs:797:19:797:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:797:19:797:23 | SelfParam | &T | main.rs:774:5:775:13 | S | -| main.rs:797:26:797:26 | a | | main.rs:797:16:797:16 | A | -| main.rs:797:46:799:9 | { ... } | | main.rs:723:5:726:5 | Wrapper | -| main.rs:797:46:799:9 | { ... } | A | main.rs:797:16:797:16 | A | -| main.rs:798:13:798:32 | Wrapper {...} | | main.rs:723:5:726:5 | Wrapper | -| main.rs:798:13:798:32 | Wrapper {...} | A | main.rs:797:16:797:16 | A | -| main.rs:798:30:798:30 | a | | main.rs:797:16:797:16 | A | -| main.rs:806:15:806:18 | SelfParam | | main.rs:777:5:778:14 | S2 | -| main.rs:806:45:808:9 | { ... } | | main.rs:723:5:726:5 | Wrapper | -| main.rs:806:45:808:9 | { ... } | A | main.rs:777:5:778:14 | S2 | -| main.rs:807:13:807:35 | Wrapper {...} | | main.rs:723:5:726:5 | Wrapper | -| main.rs:807:13:807:35 | Wrapper {...} | A | main.rs:777:5:778:14 | S2 | -| main.rs:807:30:807:33 | self | | main.rs:777:5:778:14 | S2 | -| main.rs:813:30:815:9 | { ... } | | main.rs:723:5:726:5 | Wrapper | -| main.rs:813:30:815:9 | { ... } | A | main.rs:777:5:778:14 | S2 | -| main.rs:814:13:814:33 | Wrapper {...} | | main.rs:723:5:726:5 | Wrapper | -| main.rs:814:13:814:33 | Wrapper {...} | A | main.rs:777:5:778:14 | S2 | -| main.rs:814:30:814:31 | S2 | | main.rs:777:5:778:14 | S2 | -| main.rs:820:22:820:26 | thing | | main.rs:820:10:820:19 | T | -| main.rs:821:9:821:13 | thing | | main.rs:820:10:820:19 | T | -| main.rs:828:21:828:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:828:21:828:25 | SelfParam | &T | main.rs:780:5:781:14 | AT | -| main.rs:828:34:830:9 | { ... } | | main.rs:780:5:781:14 | AT | -| main.rs:829:13:829:14 | AT | | main.rs:780:5:781:14 | AT | -| main.rs:832:20:832:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:832:20:832:24 | SelfParam | &T | main.rs:780:5:781:14 | AT | -| main.rs:832:43:834:9 | { ... } | | main.rs:774:5:775:13 | S | -| main.rs:833:13:833:13 | S | | main.rs:774:5:775:13 | S | +| main.rs:584:26:584:27 | s1 | | main.rs:581:35:581:42 | I | +| main.rs:587:65:587:65 | x | | main.rs:587:46:587:62 | T | +| main.rs:589:13:589:14 | s2 | | main.rs:587:36:587:43 | I | +| main.rs:589:18:589:18 | x | | main.rs:587:46:587:62 | T | +| main.rs:589:18:589:27 | x.method() | | main.rs:587:36:587:43 | I | +| main.rs:590:18:590:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:590:18:590:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:590:18:590:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:590:18:590:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:590:26:590:27 | s2 | | main.rs:587:36:587:43 | I | +| main.rs:593:49:593:49 | x | | main.rs:593:30:593:46 | T | +| main.rs:594:13:594:13 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:594:17:594:17 | x | | main.rs:593:30:593:46 | T | +| main.rs:594:17:594:26 | x.method() | | main.rs:563:5:564:14 | S1 | +| main.rs:595:18:595:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:595:18:595:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:595:18:595:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:595:18:595:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:595:26:595:26 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:598:53:598:53 | x | | main.rs:598:34:598:50 | T | +| main.rs:599:13:599:13 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:599:17:599:17 | x | | main.rs:598:34:598:50 | T | +| main.rs:599:17:599:26 | x.method() | | main.rs:563:5:564:14 | S1 | +| main.rs:600:18:600:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:600:18:600:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:600:18:600:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:600:18:600:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:600:26:600:26 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:603:43:603:43 | x | | main.rs:603:40:603:40 | T | +| main.rs:607:13:607:13 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:607:17:607:17 | x | | main.rs:603:40:603:40 | T | +| main.rs:607:17:607:26 | x.method() | | main.rs:563:5:564:14 | S1 | +| main.rs:608:18:608:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:608:18:608:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:608:18:608:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:608:18:608:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:608:26:608:26 | s | | main.rs:563:5:564:14 | S1 | +| main.rs:612:16:612:19 | SelfParam | | main.rs:611:5:615:5 | Self [trait Pair] | +| main.rs:614:16:614:19 | SelfParam | | main.rs:611:5:615:5 | Self [trait Pair] | +| main.rs:617:53:617:53 | x | | main.rs:617:50:617:50 | T | +| main.rs:617:59:617:59 | y | | main.rs:617:50:617:50 | T | +| main.rs:622:13:622:13 | _ | | main.rs:563:5:564:14 | S1 | +| main.rs:622:17:622:17 | x | | main.rs:617:50:617:50 | T | +| main.rs:622:17:622:23 | x.fst() | | main.rs:563:5:564:14 | S1 | +| main.rs:623:13:623:13 | _ | | main.rs:563:5:564:14 | S1 | +| main.rs:623:17:623:17 | y | | main.rs:617:50:617:50 | T | +| main.rs:623:17:623:26 | y.method() | | main.rs:563:5:564:14 | S1 | +| main.rs:626:58:626:58 | x | | main.rs:626:41:626:55 | T | +| main.rs:626:64:626:64 | y | | main.rs:626:41:626:55 | T | +| main.rs:628:13:628:14 | s1 | | main.rs:563:5:564:14 | S1 | +| main.rs:628:18:628:18 | x | | main.rs:626:41:626:55 | T | +| main.rs:628:18:628:24 | x.fst() | | main.rs:563:5:564:14 | S1 | +| main.rs:629:13:629:14 | s2 | | main.rs:566:5:567:14 | S2 | +| main.rs:629:18:629:18 | y | | main.rs:626:41:626:55 | T | +| main.rs:629:18:629:24 | y.snd() | | main.rs:566:5:567:14 | S2 | +| main.rs:630:18:630:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:630:18:630:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:630:18:630:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:630:18:630:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:630:32:630:33 | s1 | | main.rs:563:5:564:14 | S1 | +| main.rs:630:36:630:37 | s2 | | main.rs:566:5:567:14 | S2 | +| main.rs:633:69:633:69 | x | | main.rs:633:52:633:66 | T | +| main.rs:633:75:633:75 | y | | main.rs:633:52:633:66 | T | +| main.rs:635:13:635:14 | s1 | | main.rs:563:5:564:14 | S1 | +| main.rs:635:18:635:18 | x | | main.rs:633:52:633:66 | T | +| main.rs:635:18:635:24 | x.fst() | | main.rs:563:5:564:14 | S1 | +| main.rs:636:13:636:14 | s2 | | main.rs:633:41:633:49 | T2 | +| main.rs:636:18:636:18 | y | | main.rs:633:52:633:66 | T | +| main.rs:636:18:636:24 | y.snd() | | main.rs:633:41:633:49 | T2 | +| main.rs:637:18:637:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:637:18:637:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:637:18:637:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:637:18:637:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:637:32:637:33 | s1 | | main.rs:563:5:564:14 | S1 | +| main.rs:637:36:637:37 | s2 | | main.rs:633:41:633:49 | T2 | +| main.rs:640:50:640:50 | x | | main.rs:640:41:640:47 | T | +| main.rs:640:56:640:56 | y | | main.rs:640:41:640:47 | T | +| main.rs:642:13:642:14 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:642:18:642:18 | x | | main.rs:640:41:640:47 | T | +| main.rs:642:18:642:24 | x.fst() | | {EXTERNAL LOCATION} | bool | +| main.rs:643:13:643:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:643:18:643:18 | y | | main.rs:640:41:640:47 | T | +| main.rs:643:18:643:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:644:18:644:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:644:18:644:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:644:18:644:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:644:18:644:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:644:32:644:33 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:644:36:644:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:647:54:647:54 | x | | main.rs:647:41:647:51 | T | +| main.rs:647:60:647:60 | y | | main.rs:647:41:647:51 | T | +| main.rs:649:13:649:14 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:649:18:649:18 | x | | main.rs:647:41:647:51 | T | +| main.rs:649:18:649:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:650:13:650:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:650:18:650:18 | y | | main.rs:647:41:647:51 | T | +| main.rs:650:18:650:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:651:18:651:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:651:18:651:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:651:18:651:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:651:18:651:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:651:32:651:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:651:36:651:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:667:15:667:18 | SelfParam | | main.rs:666:5:677:5 | Self [trait MyTrait] | +| main.rs:669:15:669:18 | SelfParam | | main.rs:666:5:677:5 | Self [trait MyTrait] | +| main.rs:672:9:674:9 | { ... } | | main.rs:666:19:666:19 | A | +| main.rs:673:13:673:16 | self | | main.rs:666:5:677:5 | Self [trait MyTrait] | +| main.rs:673:13:673:21 | self.m1() | | main.rs:666:19:666:19 | A | +| main.rs:676:18:676:18 | x | | main.rs:666:5:677:5 | Self [trait MyTrait] | +| main.rs:681:50:681:50 | x | | main.rs:681:26:681:47 | T2 | +| main.rs:681:63:684:5 | { ... } | | main.rs:681:22:681:23 | T1 | +| main.rs:682:9:682:9 | x | | main.rs:681:26:681:47 | T2 | +| main.rs:682:9:682:14 | x.m1() | | main.rs:681:22:681:23 | T1 | +| main.rs:683:9:683:9 | x | | main.rs:681:26:681:47 | T2 | +| main.rs:683:9:683:14 | x.m1() | | main.rs:681:22:681:23 | T1 | +| main.rs:685:52:685:52 | x | | main.rs:685:28:685:49 | T2 | +| main.rs:685:65:689:5 | { ... } | | main.rs:685:24:685:25 | T1 | +| main.rs:686:13:686:13 | y | | main.rs:685:24:685:25 | T1 | +| main.rs:686:17:686:25 | ...::m1(...) | | main.rs:685:24:685:25 | T1 | +| main.rs:686:24:686:24 | x | | main.rs:685:28:685:49 | T2 | +| main.rs:687:9:687:9 | y | | main.rs:685:24:685:25 | T1 | +| main.rs:688:9:688:17 | ...::m1(...) | | main.rs:685:24:685:25 | T1 | +| main.rs:688:16:688:16 | x | | main.rs:685:28:685:49 | T2 | +| main.rs:690:52:690:52 | x | | main.rs:690:28:690:49 | T2 | +| main.rs:690:65:694:5 | { ... } | | main.rs:690:24:690:25 | T1 | +| main.rs:691:13:691:13 | y | | main.rs:690:24:690:25 | T1 | +| main.rs:691:17:691:30 | ...::m1(...) | | main.rs:690:24:690:25 | T1 | +| main.rs:691:29:691:29 | x | | main.rs:690:28:690:49 | T2 | +| main.rs:692:9:692:9 | y | | main.rs:690:24:690:25 | T1 | +| main.rs:693:9:693:22 | ...::m1(...) | | main.rs:690:24:690:25 | T1 | +| main.rs:693:21:693:21 | x | | main.rs:690:28:690:49 | T2 | +| main.rs:695:55:695:55 | x | | main.rs:695:31:695:52 | T2 | +| main.rs:695:68:699:5 | { ... } | | main.rs:695:27:695:28 | T1 | +| main.rs:696:13:696:13 | y | | main.rs:695:27:695:28 | T1 | +| main.rs:696:17:696:28 | ...::assoc(...) | | main.rs:695:27:695:28 | T1 | +| main.rs:696:27:696:27 | x | | main.rs:695:31:695:52 | T2 | +| main.rs:697:9:697:9 | y | | main.rs:695:27:695:28 | T1 | +| main.rs:698:9:698:20 | ...::assoc(...) | | main.rs:695:27:695:28 | T1 | +| main.rs:698:19:698:19 | x | | main.rs:695:31:695:52 | T2 | +| main.rs:700:55:700:55 | x | | main.rs:700:31:700:52 | T2 | +| main.rs:700:68:704:5 | { ... } | | main.rs:700:27:700:28 | T1 | +| main.rs:701:32:701:32 | x | | main.rs:700:31:700:52 | T2 | +| main.rs:703:9:703:25 | ...::assoc(...) | | main.rs:700:27:700:28 | T1 | +| main.rs:703:24:703:24 | x | | main.rs:700:31:700:52 | T2 | +| main.rs:708:49:708:49 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:708:49:708:49 | x | T | main.rs:708:32:708:46 | T2 | +| main.rs:708:71:710:5 | { ... } | | main.rs:708:28:708:29 | T1 | +| main.rs:709:9:709:9 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:709:9:709:9 | x | T | main.rs:708:32:708:46 | T2 | +| main.rs:709:9:709:11 | x.a | | main.rs:708:32:708:46 | T2 | +| main.rs:709:9:709:16 | ... .m1() | | main.rs:708:28:708:29 | T1 | +| main.rs:711:51:711:51 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:711:51:711:51 | x | T | main.rs:711:34:711:48 | T2 | +| main.rs:711:73:713:5 | { ... } | | main.rs:711:30:711:31 | T1 | +| main.rs:712:9:712:19 | ...::m1(...) | | main.rs:711:30:711:31 | T1 | +| main.rs:712:16:712:16 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:712:16:712:16 | x | T | main.rs:711:34:711:48 | T2 | +| main.rs:712:16:712:18 | x.a | | main.rs:711:34:711:48 | T2 | +| main.rs:714:51:714:51 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:714:51:714:51 | x | T | main.rs:714:34:714:48 | T2 | +| main.rs:714:73:716:5 | { ... } | | main.rs:714:30:714:31 | T1 | +| main.rs:715:9:715:24 | ...::m1(...) | | main.rs:714:30:714:31 | T1 | +| main.rs:715:21:715:21 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:715:21:715:21 | x | T | main.rs:714:34:714:48 | T2 | +| main.rs:715:21:715:23 | x.a | | main.rs:666:5:677:5 | trait MyTrait | +| main.rs:715:21:715:23 | x.a | | main.rs:714:34:714:48 | T2 | +| main.rs:719:15:719:18 | SelfParam | | main.rs:656:5:659:5 | MyThing | +| main.rs:719:15:719:18 | SelfParam | T | main.rs:718:10:718:10 | T | +| main.rs:719:26:721:9 | { ... } | | main.rs:718:10:718:10 | T | +| main.rs:720:13:720:16 | self | | main.rs:656:5:659:5 | MyThing | +| main.rs:720:13:720:16 | self | T | main.rs:718:10:718:10 | T | +| main.rs:720:13:720:18 | self.a | | main.rs:718:10:718:10 | T | +| main.rs:723:18:723:18 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:723:18:723:18 | x | T | main.rs:718:10:718:10 | T | +| main.rs:723:32:725:9 | { ... } | | main.rs:718:10:718:10 | T | +| main.rs:724:13:724:13 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:724:13:724:13 | x | T | main.rs:718:10:718:10 | T | +| main.rs:724:13:724:15 | x.a | | main.rs:718:10:718:10 | T | +| main.rs:729:13:729:13 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:729:13:729:13 | x | T | main.rs:661:5:662:14 | S1 | +| main.rs:729:17:729:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:729:17:729:33 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | +| main.rs:729:30:729:31 | S1 | | main.rs:661:5:662:14 | S1 | +| main.rs:730:13:730:13 | y | | main.rs:656:5:659:5 | MyThing | +| main.rs:730:13:730:13 | y | T | main.rs:663:5:664:14 | S2 | +| main.rs:730:17:730:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:730:17:730:33 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | +| main.rs:730:30:730:31 | S2 | | main.rs:663:5:664:14 | S2 | +| main.rs:732:18:732:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:732:18:732:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:732:18:732:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:732:18:732:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:732:26:732:26 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:732:26:732:26 | x | T | main.rs:661:5:662:14 | S1 | +| main.rs:732:26:732:31 | x.m1() | | main.rs:661:5:662:14 | S1 | +| main.rs:733:18:733:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:733:18:733:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:733:18:733:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:733:18:733:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:733:26:733:26 | y | | main.rs:656:5:659:5 | MyThing | +| main.rs:733:26:733:26 | y | T | main.rs:663:5:664:14 | S2 | +| main.rs:733:26:733:31 | y.m1() | | main.rs:663:5:664:14 | S2 | +| main.rs:735:13:735:13 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:735:13:735:13 | x | T | main.rs:661:5:662:14 | S1 | +| main.rs:735:17:735:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:735:17:735:33 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | +| main.rs:735:30:735:31 | S1 | | main.rs:661:5:662:14 | S1 | +| main.rs:736:13:736:13 | y | | main.rs:656:5:659:5 | MyThing | +| main.rs:736:13:736:13 | y | T | main.rs:663:5:664:14 | S2 | +| main.rs:736:17:736:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:736:17:736:33 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | +| main.rs:736:30:736:31 | S2 | | main.rs:663:5:664:14 | S2 | +| main.rs:738:18:738:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:738:18:738:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:738:18:738:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:738:18:738:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:738:26:738:26 | x | | main.rs:656:5:659:5 | MyThing | +| main.rs:738:26:738:26 | x | T | main.rs:661:5:662:14 | S1 | +| main.rs:738:26:738:31 | x.m2() | | main.rs:661:5:662:14 | S1 | +| main.rs:739:18:739:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:739:18:739:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:739:18:739:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:739:18:739:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:739:26:739:26 | y | | main.rs:656:5:659:5 | MyThing | +| main.rs:739:26:739:26 | y | T | main.rs:663:5:664:14 | S2 | +| main.rs:739:26:739:31 | y.m2() | | main.rs:663:5:664:14 | S2 | +| main.rs:741:13:741:14 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:741:13:741:14 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:741:18:741:34 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:741:18:741:34 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | +| main.rs:741:31:741:32 | S1 | | main.rs:661:5:662:14 | S1 | +| main.rs:742:13:742:14 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:742:13:742:14 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:742:18:742:34 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:742:18:742:34 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | +| main.rs:742:31:742:32 | S2 | | main.rs:663:5:664:14 | S2 | +| main.rs:744:13:744:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:744:17:744:33 | call_trait_m1(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:744:31:744:32 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:744:31:744:32 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:745:18:745:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:745:18:745:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:745:18:745:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:745:18:745:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:745:26:745:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:746:13:746:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:746:17:746:35 | call_trait_m1_2(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:746:33:746:34 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:746:33:746:34 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:747:18:747:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:747:18:747:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:747:18:747:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:747:18:747:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:747:26:747:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:748:13:748:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:748:17:748:35 | call_trait_m1_3(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:748:33:748:34 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:748:33:748:34 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:749:18:749:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:749:18:749:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:749:18:749:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:749:18:749:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:749:26:749:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:750:13:750:13 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:750:17:750:33 | call_trait_m1(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:750:31:750:32 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:750:31:750:32 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:751:18:751:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:751:18:751:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:751:18:751:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:751:18:751:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:751:26:751:26 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:752:13:752:13 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:752:17:752:35 | call_trait_m1_2(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:752:33:752:34 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:752:33:752:34 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:753:18:753:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:753:18:753:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:753:18:753:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:753:18:753:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:753:26:753:26 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:754:13:754:13 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:754:17:754:35 | call_trait_m1_3(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:754:33:754:34 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:754:33:754:34 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:755:18:755:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:755:18:755:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:755:18:755:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:755:18:755:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:755:26:755:26 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:756:13:756:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:756:17:756:38 | call_trait_assoc_1(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:756:36:756:37 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:756:36:756:37 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:757:18:757:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:757:18:757:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:757:18:757:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:757:18:757:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:757:26:757:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:758:13:758:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:758:17:758:38 | call_trait_assoc_2(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:758:36:758:37 | x2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:758:36:758:37 | x2 | T | main.rs:661:5:662:14 | S1 | +| main.rs:759:18:759:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:759:18:759:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:759:18:759:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:759:18:759:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:759:26:759:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:760:13:760:13 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:760:17:760:38 | call_trait_assoc_1(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:760:36:760:37 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:760:36:760:37 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:761:18:761:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:761:18:761:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:761:18:761:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:761:18:761:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:761:26:761:26 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:762:13:762:13 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:762:17:762:38 | call_trait_assoc_2(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:762:36:762:37 | y2 | | main.rs:656:5:659:5 | MyThing | +| main.rs:762:36:762:37 | y2 | T | main.rs:663:5:664:14 | S2 | +| main.rs:763:18:763:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:763:18:763:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:763:18:763:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:763:18:763:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:763:26:763:26 | a | | main.rs:663:5:664:14 | S2 | +| main.rs:765:13:765:14 | x3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:765:13:765:14 | x3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:765:13:765:14 | x3 | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:765:18:767:9 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:765:18:767:9 | MyThing {...} | T | main.rs:656:5:659:5 | MyThing | +| main.rs:765:18:767:9 | MyThing {...} | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:766:16:766:32 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:766:16:766:32 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | +| main.rs:766:29:766:30 | S1 | | main.rs:661:5:662:14 | S1 | +| main.rs:768:13:768:14 | y3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:768:13:768:14 | y3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:768:13:768:14 | y3 | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:768:18:770:9 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:768:18:770:9 | MyThing {...} | T | main.rs:656:5:659:5 | MyThing | +| main.rs:768:18:770:9 | MyThing {...} | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:769:16:769:32 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | +| main.rs:769:16:769:32 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | +| main.rs:769:29:769:30 | S2 | | main.rs:663:5:664:14 | S2 | +| main.rs:772:13:772:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:772:17:772:39 | call_trait_thing_m1(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:772:37:772:38 | x3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:772:37:772:38 | x3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:772:37:772:38 | x3 | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:773:18:773:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:773:18:773:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:773:18:773:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:773:18:773:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:773:26:773:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:774:13:774:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:774:17:774:41 | call_trait_thing_m1_2(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:774:39:774:40 | x3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:774:39:774:40 | x3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:774:39:774:40 | x3 | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:775:18:775:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:775:18:775:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:775:18:775:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:775:18:775:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:775:26:775:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:776:13:776:13 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:776:17:776:41 | call_trait_thing_m1_3(...) | | main.rs:661:5:662:14 | S1 | +| main.rs:776:39:776:40 | x3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:776:39:776:40 | x3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:776:39:776:40 | x3 | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:777:18:777:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:777:18:777:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:777:18:777:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:777:18:777:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:777:26:777:26 | a | | main.rs:661:5:662:14 | S1 | +| main.rs:778:13:778:13 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:778:17:778:39 | call_trait_thing_m1(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:778:37:778:38 | y3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:778:37:778:38 | y3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:778:37:778:38 | y3 | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:779:18:779:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:779:18:779:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:779:18:779:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:779:18:779:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:779:26:779:26 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:780:13:780:13 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:780:17:780:41 | call_trait_thing_m1_2(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:780:39:780:40 | y3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:780:39:780:40 | y3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:780:39:780:40 | y3 | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:781:18:781:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:781:18:781:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:781:18:781:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:781:18:781:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:781:26:781:26 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:782:13:782:13 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:782:17:782:41 | call_trait_thing_m1_3(...) | | main.rs:663:5:664:14 | S2 | +| main.rs:782:39:782:40 | y3 | | main.rs:656:5:659:5 | MyThing | +| main.rs:782:39:782:40 | y3 | T | main.rs:656:5:659:5 | MyThing | +| main.rs:782:39:782:40 | y3 | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:783:18:783:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:783:18:783:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:783:18:783:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:783:18:783:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:783:26:783:26 | b | | main.rs:663:5:664:14 | S2 | +| main.rs:794:19:794:22 | SelfParam | | main.rs:788:5:791:5 | Wrapper | +| main.rs:794:19:794:22 | SelfParam | A | main.rs:793:10:793:10 | A | +| main.rs:794:30:796:9 | { ... } | | main.rs:793:10:793:10 | A | +| main.rs:795:13:795:16 | self | | main.rs:788:5:791:5 | Wrapper | +| main.rs:795:13:795:16 | self | A | main.rs:793:10:793:10 | A | +| main.rs:795:13:795:22 | self.field | | main.rs:793:10:793:10 | A | +| main.rs:803:15:803:18 | SelfParam | | main.rs:799:5:813:5 | Self [trait MyTrait] | +| main.rs:805:15:805:18 | SelfParam | | main.rs:799:5:813:5 | Self [trait MyTrait] | +| main.rs:809:9:812:9 | { ... } | | main.rs:800:9:800:28 | AssociatedType | +| main.rs:810:13:810:16 | self | | main.rs:799:5:813:5 | Self [trait MyTrait] | +| main.rs:810:13:810:21 | self.m1() | | main.rs:800:9:800:28 | AssociatedType | +| main.rs:811:13:811:43 | ...::default(...) | | main.rs:800:9:800:28 | AssociatedType | +| main.rs:819:19:819:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:819:19:819:23 | SelfParam | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | +| main.rs:819:26:819:26 | a | | main.rs:819:16:819:16 | A | +| main.rs:821:22:821:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:821:22:821:26 | SelfParam | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | +| main.rs:821:29:821:29 | a | | main.rs:821:19:821:19 | A | +| main.rs:821:35:821:35 | b | | main.rs:821:19:821:19 | A | +| main.rs:821:75:824:9 | { ... } | | main.rs:816:9:816:52 | GenericAssociatedType | +| main.rs:822:13:822:16 | self | | file://:0:0:0:0 | & | +| main.rs:822:13:822:16 | self | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | +| main.rs:822:13:822:23 | self.put(...) | | main.rs:816:9:816:52 | GenericAssociatedType | +| main.rs:822:22:822:22 | a | | main.rs:821:19:821:19 | A | +| main.rs:823:13:823:16 | self | | file://:0:0:0:0 | & | +| main.rs:823:13:823:16 | self | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | +| main.rs:823:13:823:23 | self.put(...) | | main.rs:816:9:816:52 | GenericAssociatedType | +| main.rs:823:22:823:22 | b | | main.rs:821:19:821:19 | A | +| main.rs:832:21:832:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:832:21:832:25 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | +| main.rs:834:20:834:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:834:20:834:24 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | | main.rs:836:20:836:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:836:20:836:24 | SelfParam | &T | main.rs:780:5:781:14 | AT | -| main.rs:836:43:838:9 | { ... } | | main.rs:777:5:778:14 | S2 | -| main.rs:837:13:837:14 | S2 | | main.rs:777:5:778:14 | S2 | -| main.rs:842:13:842:14 | x1 | | main.rs:774:5:775:13 | S | -| main.rs:842:18:842:18 | S | | main.rs:774:5:775:13 | S | -| main.rs:844:18:844:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:844:18:844:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:844:18:844:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:844:18:844:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:844:26:844:27 | x1 | | main.rs:774:5:775:13 | S | -| main.rs:844:26:844:32 | x1.m1() | | main.rs:780:5:781:14 | AT | -| main.rs:846:13:846:14 | x2 | | main.rs:774:5:775:13 | S | -| main.rs:846:18:846:18 | S | | main.rs:774:5:775:13 | S | -| main.rs:848:13:848:13 | y | | main.rs:780:5:781:14 | AT | -| main.rs:848:17:848:18 | x2 | | main.rs:774:5:775:13 | S | -| main.rs:848:17:848:23 | x2.m2() | | main.rs:780:5:781:14 | AT | -| main.rs:849:18:849:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:849:18:849:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:849:18:849:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:849:18:849:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:849:26:849:26 | y | | main.rs:780:5:781:14 | AT | -| main.rs:851:13:851:14 | x3 | | main.rs:774:5:775:13 | S | -| main.rs:851:18:851:18 | S | | main.rs:774:5:775:13 | S | -| main.rs:853:18:853:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:853:18:853:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:853:18:853:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:853:18:853:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:853:26:853:27 | x3 | | main.rs:774:5:775:13 | S | -| main.rs:853:26:853:34 | x3.put(...) | | main.rs:723:5:726:5 | Wrapper | -| main.rs:853:26:853:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:853:26:853:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:853:33:853:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:856:18:856:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:856:18:856:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:856:18:856:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:856:18:856:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:856:26:856:27 | x3 | | main.rs:774:5:775:13 | S | -| main.rs:856:26:856:40 | x3.putTwo(...) | | main.rs:723:5:726:5 | Wrapper | -| main.rs:856:26:856:40 | x3.putTwo(...) | A | main.rs:794:36:794:50 | AssociatedParam | -| main.rs:856:26:856:49 | ... .unwrap() | | main.rs:794:36:794:50 | AssociatedParam | -| main.rs:856:36:856:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:856:39:856:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:858:20:858:20 | S | | main.rs:774:5:775:13 | S | -| main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:859:18:859:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:859:18:859:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:861:13:861:14 | x5 | | main.rs:777:5:778:14 | S2 | -| main.rs:861:18:861:19 | S2 | | main.rs:777:5:778:14 | S2 | -| main.rs:862:18:862:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:862:18:862:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:862:18:862:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:862:18:862:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:862:26:862:27 | x5 | | main.rs:777:5:778:14 | S2 | -| main.rs:862:26:862:32 | x5.m1() | | main.rs:723:5:726:5 | Wrapper | -| main.rs:862:26:862:32 | x5.m1() | A | main.rs:777:5:778:14 | S2 | -| main.rs:863:13:863:14 | x6 | | main.rs:777:5:778:14 | S2 | -| main.rs:863:18:863:19 | S2 | | main.rs:777:5:778:14 | S2 | -| main.rs:864:18:864:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:864:18:864:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:864:18:864:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:864:18:864:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:864:26:864:27 | x6 | | main.rs:777:5:778:14 | S2 | -| main.rs:864:26:864:32 | x6.m2() | | main.rs:723:5:726:5 | Wrapper | -| main.rs:864:26:864:32 | x6.m2() | A | main.rs:777:5:778:14 | S2 | -| main.rs:866:13:866:22 | assoc_zero | | main.rs:780:5:781:14 | AT | -| main.rs:866:26:866:27 | AT | | main.rs:780:5:781:14 | AT | -| main.rs:866:26:866:38 | AT.get_zero() | | main.rs:780:5:781:14 | AT | -| main.rs:867:13:867:21 | assoc_one | | main.rs:774:5:775:13 | S | -| main.rs:867:25:867:26 | AT | | main.rs:780:5:781:14 | AT | -| main.rs:867:25:867:36 | AT.get_one() | | main.rs:774:5:775:13 | S | -| main.rs:868:13:868:21 | assoc_two | | main.rs:777:5:778:14 | S2 | -| main.rs:868:25:868:26 | AT | | main.rs:780:5:781:14 | AT | -| main.rs:868:25:868:36 | AT.get_two() | | main.rs:777:5:778:14 | S2 | -| main.rs:876:19:876:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:876:19:876:23 | SelfParam | &T | main.rs:873:5:877:5 | Self [trait Supertrait] | -| main.rs:876:26:876:32 | content | | main.rs:874:9:874:21 | Content | -| main.rs:881:24:881:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:881:24:881:28 | SelfParam | &T | main.rs:879:5:882:5 | Self [trait Subtrait] | -| main.rs:890:23:890:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:890:23:890:27 | SelfParam | &T | main.rs:884:5:894:5 | Self [trait Subtrait2] | -| main.rs:890:30:890:31 | c1 | | main.rs:874:9:874:21 | Content | -| main.rs:890:49:890:50 | c2 | | main.rs:874:9:874:21 | Content | -| main.rs:891:13:891:16 | self | | file://:0:0:0:0 | & | -| main.rs:891:13:891:16 | self | &T | main.rs:884:5:894:5 | Self [trait Subtrait2] | -| main.rs:891:25:891:26 | c1 | | main.rs:874:9:874:21 | Content | -| main.rs:892:13:892:16 | self | | file://:0:0:0:0 | & | -| main.rs:892:13:892:16 | self | &T | main.rs:884:5:894:5 | Self [trait Subtrait2] | -| main.rs:892:25:892:26 | c2 | | main.rs:874:9:874:21 | Content | -| main.rs:900:19:900:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:900:19:900:23 | SelfParam | &T | main.rs:896:5:896:24 | MyType | -| main.rs:900:19:900:23 | SelfParam | &T.T | main.rs:898:10:898:10 | T | -| main.rs:900:26:900:33 | _content | | main.rs:898:10:898:10 | T | -| main.rs:901:22:901:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:901:22:901:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:901:22:901:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:901:22:901:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:907:24:907:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:907:24:907:28 | SelfParam | &T | main.rs:896:5:896:24 | MyType | -| main.rs:907:24:907:28 | SelfParam | &T.T | main.rs:905:10:905:17 | T | -| main.rs:907:48:909:9 | { ... } | | main.rs:905:10:905:17 | T | -| main.rs:908:13:908:19 | (...) | | main.rs:896:5:896:24 | MyType | -| main.rs:908:13:908:19 | (...) | T | main.rs:905:10:905:17 | T | -| main.rs:908:13:908:21 | ... .0 | | main.rs:905:10:905:17 | T | -| main.rs:908:13:908:29 | ... .clone() | | main.rs:905:10:905:17 | T | -| main.rs:908:14:908:18 | * ... | | main.rs:896:5:896:24 | MyType | -| main.rs:908:14:908:18 | * ... | T | main.rs:905:10:905:17 | T | -| main.rs:908:15:908:18 | self | | file://:0:0:0:0 | & | -| main.rs:908:15:908:18 | self | &T | main.rs:896:5:896:24 | MyType | -| main.rs:908:15:908:18 | self | &T.T | main.rs:905:10:905:17 | T | -| main.rs:912:33:912:36 | item | | file://:0:0:0:0 | & | -| main.rs:912:33:912:36 | item | &T | main.rs:912:20:912:30 | T | -| main.rs:912:57:914:5 | { ... } | | main.rs:874:9:874:21 | Content | -| main.rs:913:9:913:12 | item | | file://:0:0:0:0 | & | -| main.rs:913:9:913:12 | item | &T | main.rs:912:20:912:30 | T | -| main.rs:913:9:913:26 | item.get_content() | | main.rs:874:9:874:21 | Content | -| main.rs:916:35:916:38 | item | | file://:0:0:0:0 | & | -| main.rs:916:35:916:38 | item | &T | main.rs:916:21:916:32 | T | -| main.rs:916:45:916:46 | c1 | | main.rs:874:9:874:21 | Content | -| main.rs:916:61:916:62 | c2 | | main.rs:874:9:874:21 | Content | -| main.rs:916:77:916:78 | c3 | | main.rs:874:9:874:21 | Content | -| main.rs:917:9:917:12 | item | | file://:0:0:0:0 | & | -| main.rs:917:9:917:12 | item | &T | main.rs:916:21:916:32 | T | -| main.rs:917:21:917:22 | c1 | | main.rs:874:9:874:21 | Content | -| main.rs:918:9:918:12 | item | | file://:0:0:0:0 | & | -| main.rs:918:9:918:12 | item | &T | main.rs:916:21:916:32 | T | -| main.rs:918:25:918:26 | c2 | | main.rs:874:9:874:21 | Content | -| main.rs:918:29:918:30 | c3 | | main.rs:874:9:874:21 | Content | -| main.rs:922:13:922:17 | item1 | | main.rs:896:5:896:24 | MyType | -| main.rs:922:13:922:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:922:21:922:33 | MyType(...) | | main.rs:896:5:896:24 | MyType | -| main.rs:922:21:922:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:922:28:922:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:923:25:923:29 | item1 | | main.rs:896:5:896:24 | MyType | -| main.rs:923:25:923:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:925:13:925:17 | item2 | | main.rs:896:5:896:24 | MyType | -| main.rs:925:13:925:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:925:21:925:32 | MyType(...) | | main.rs:896:5:896:24 | MyType | -| main.rs:925:21:925:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:925:28:925:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:926:37:926:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:926:37:926:42 | &item2 | &T | main.rs:896:5:896:24 | MyType | -| main.rs:926:37:926:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:926:38:926:42 | item2 | | main.rs:896:5:896:24 | MyType | -| main.rs:926:38:926:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:943:15:943:18 | SelfParam | | main.rs:931:5:935:5 | MyEnum | -| main.rs:943:15:943:18 | SelfParam | A | main.rs:942:10:942:10 | T | -| main.rs:943:26:948:9 | { ... } | | main.rs:942:10:942:10 | T | -| main.rs:944:13:947:13 | match self { ... } | | main.rs:942:10:942:10 | T | -| main.rs:944:19:944:22 | self | | main.rs:931:5:935:5 | MyEnum | -| main.rs:944:19:944:22 | self | A | main.rs:942:10:942:10 | T | -| main.rs:945:17:945:29 | ...::C1(...) | | main.rs:931:5:935:5 | MyEnum | -| main.rs:945:17:945:29 | ...::C1(...) | A | main.rs:942:10:942:10 | T | -| main.rs:945:28:945:28 | a | | main.rs:942:10:942:10 | T | -| main.rs:945:34:945:34 | a | | main.rs:942:10:942:10 | T | -| main.rs:946:17:946:32 | ...::C2 {...} | | main.rs:931:5:935:5 | MyEnum | -| main.rs:946:17:946:32 | ...::C2 {...} | A | main.rs:942:10:942:10 | T | -| main.rs:946:30:946:30 | a | | main.rs:942:10:942:10 | T | -| main.rs:946:37:946:37 | a | | main.rs:942:10:942:10 | T | -| main.rs:952:13:952:13 | x | | main.rs:931:5:935:5 | MyEnum | -| main.rs:952:13:952:13 | x | A | main.rs:937:5:938:14 | S1 | -| main.rs:952:17:952:30 | ...::C1(...) | | main.rs:931:5:935:5 | MyEnum | -| main.rs:952:17:952:30 | ...::C1(...) | A | main.rs:937:5:938:14 | S1 | -| main.rs:952:28:952:29 | S1 | | main.rs:937:5:938:14 | S1 | -| main.rs:953:13:953:13 | y | | main.rs:931:5:935:5 | MyEnum | -| main.rs:953:13:953:13 | y | A | main.rs:939:5:940:14 | S2 | -| main.rs:953:17:953:36 | ...::C2 {...} | | main.rs:931:5:935:5 | MyEnum | -| main.rs:953:17:953:36 | ...::C2 {...} | A | main.rs:939:5:940:14 | S2 | -| main.rs:953:33:953:34 | S2 | | main.rs:939:5:940:14 | S2 | -| main.rs:955:18:955:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:955:18:955:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:955:18:955:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:955:18:955:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:955:26:955:26 | x | | main.rs:931:5:935:5 | MyEnum | -| main.rs:955:26:955:26 | x | A | main.rs:937:5:938:14 | S1 | -| main.rs:955:26:955:31 | x.m1() | | main.rs:937:5:938:14 | S1 | -| main.rs:956:18:956:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:956:18:956:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:956:18:956:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:956:18:956:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:956:26:956:26 | y | | main.rs:931:5:935:5 | MyEnum | -| main.rs:956:26:956:26 | y | A | main.rs:939:5:940:14 | S2 | -| main.rs:956:26:956:31 | y.m1() | | main.rs:939:5:940:14 | S2 | -| main.rs:978:15:978:18 | SelfParam | | main.rs:976:5:979:5 | Self [trait MyTrait1] | -| main.rs:983:15:983:18 | SelfParam | | main.rs:981:5:993:5 | Self [trait MyTrait2] | -| main.rs:986:9:992:9 | { ... } | | main.rs:981:20:981:22 | Tr2 | -| main.rs:987:13:991:13 | if ... {...} else {...} | | main.rs:981:20:981:22 | Tr2 | -| main.rs:987:16:987:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:987:16:987:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:987:20:987:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:987:22:989:13 | { ... } | | main.rs:981:20:981:22 | Tr2 | -| main.rs:988:17:988:20 | self | | main.rs:981:5:993:5 | Self [trait MyTrait2] | -| main.rs:988:17:988:25 | self.m1() | | main.rs:981:20:981:22 | Tr2 | -| main.rs:989:20:991:13 | { ... } | | main.rs:981:20:981:22 | Tr2 | -| main.rs:990:17:990:30 | ...::m1(...) | | main.rs:981:20:981:22 | Tr2 | -| main.rs:990:26:990:29 | self | | main.rs:981:5:993:5 | Self [trait MyTrait2] | -| main.rs:997:15:997:18 | SelfParam | | main.rs:995:5:1007:5 | Self [trait MyTrait3] | -| main.rs:1000:9:1006:9 | { ... } | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1001:13:1005:13 | if ... {...} else {...} | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1001:16:1001:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1001:16:1001:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1001:20:1001:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1001:22:1003:13 | { ... } | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1002:17:1002:20 | self | | main.rs:995:5:1007:5 | Self [trait MyTrait3] | -| main.rs:1002:17:1002:25 | self.m2() | | main.rs:961:5:964:5 | MyThing | -| main.rs:1002:17:1002:25 | self.m2() | A | main.rs:995:20:995:22 | Tr3 | -| main.rs:1002:17:1002:27 | ... .a | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1003:20:1005:13 | { ... } | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1004:17:1004:30 | ...::m2(...) | | main.rs:961:5:964:5 | MyThing | -| main.rs:1004:17:1004:30 | ...::m2(...) | A | main.rs:995:20:995:22 | Tr3 | -| main.rs:1004:17:1004:32 | ... .a | | main.rs:995:20:995:22 | Tr3 | -| main.rs:1004:26:1004:29 | self | | main.rs:995:5:1007:5 | Self [trait MyTrait3] | -| main.rs:1011:15:1011:18 | SelfParam | | main.rs:961:5:964:5 | MyThing | -| main.rs:1011:15:1011:18 | SelfParam | A | main.rs:1009:10:1009:10 | T | -| main.rs:1011:26:1013:9 | { ... } | | main.rs:1009:10:1009:10 | T | -| main.rs:1012:13:1012:16 | self | | main.rs:961:5:964:5 | MyThing | -| main.rs:1012:13:1012:16 | self | A | main.rs:1009:10:1009:10 | T | -| main.rs:1012:13:1012:18 | self.a | | main.rs:1009:10:1009:10 | T | -| main.rs:1020:15:1020:18 | SelfParam | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1020:15:1020:18 | SelfParam | A | main.rs:1018:10:1018:10 | T | -| main.rs:1020:35:1022:9 | { ... } | | main.rs:961:5:964:5 | MyThing | -| main.rs:1020:35:1022:9 | { ... } | A | main.rs:1018:10:1018:10 | T | -| main.rs:1021:13:1021:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1021:13:1021:33 | MyThing {...} | A | main.rs:1018:10:1018:10 | T | -| main.rs:1021:26:1021:29 | self | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1021:26:1021:29 | self | A | main.rs:1018:10:1018:10 | T | -| main.rs:1021:26:1021:31 | self.a | | main.rs:1018:10:1018:10 | T | -| main.rs:1029:44:1029:44 | x | | main.rs:1029:26:1029:41 | T2 | -| main.rs:1029:57:1031:5 | { ... } | | main.rs:1029:22:1029:23 | T1 | -| main.rs:1030:9:1030:9 | x | | main.rs:1029:26:1029:41 | T2 | -| main.rs:1030:9:1030:14 | x.m1() | | main.rs:1029:22:1029:23 | T1 | -| main.rs:1033:56:1033:56 | x | | main.rs:1033:39:1033:53 | T | -| main.rs:1035:13:1035:13 | a | | main.rs:961:5:964:5 | MyThing | -| main.rs:1035:13:1035:13 | a | A | main.rs:971:5:972:14 | S1 | -| main.rs:1035:17:1035:17 | x | | main.rs:1033:39:1033:53 | T | -| main.rs:1035:17:1035:22 | x.m1() | | main.rs:961:5:964:5 | MyThing | -| main.rs:1035:17:1035:22 | x.m1() | A | main.rs:971:5:972:14 | S1 | -| main.rs:1036:18:1036:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1036:18:1036:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1036:18:1036:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1036:18:1036:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1036:26:1036:26 | a | | main.rs:961:5:964:5 | MyThing | -| main.rs:1036:26:1036:26 | a | A | main.rs:971:5:972:14 | S1 | -| main.rs:1040:13:1040:13 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1040:13:1040:13 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1040:17:1040:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1040:17:1040:33 | MyThing {...} | A | main.rs:971:5:972:14 | S1 | -| main.rs:1040:30:1040:31 | S1 | | main.rs:971:5:972:14 | S1 | -| main.rs:1041:13:1041:13 | y | | main.rs:961:5:964:5 | MyThing | -| main.rs:1041:13:1041:13 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1041:17:1041:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1041:17:1041:33 | MyThing {...} | A | main.rs:973:5:974:14 | S2 | -| main.rs:1041:30:1041:31 | S2 | | main.rs:973:5:974:14 | S2 | -| main.rs:1043:18:1043:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1043:18:1043:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1043:18:1043:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1043:18:1043:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1043:26:1043:26 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1043:26:1043:26 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1043:26:1043:31 | x.m1() | | main.rs:971:5:972:14 | S1 | -| main.rs:1044:18:1044:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1044:18:1044:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1044:18:1044:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1044:18:1044:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1044:26:1044:26 | y | | main.rs:961:5:964:5 | MyThing | -| main.rs:1044:26:1044:26 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1044:26:1044:31 | y.m1() | | main.rs:973:5:974:14 | S2 | -| main.rs:1046:13:1046:13 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1046:13:1046:13 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1046:17:1046:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1046:17:1046:33 | MyThing {...} | A | main.rs:971:5:972:14 | S1 | -| main.rs:1046:30:1046:31 | S1 | | main.rs:971:5:972:14 | S1 | -| main.rs:1047:13:1047:13 | y | | main.rs:961:5:964:5 | MyThing | -| main.rs:1047:13:1047:13 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1047:17:1047:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1047:17:1047:33 | MyThing {...} | A | main.rs:973:5:974:14 | S2 | -| main.rs:1047:30:1047:31 | S2 | | main.rs:973:5:974:14 | S2 | -| main.rs:1049:18:1049:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1049:18:1049:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1049:18:1049:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1049:18:1049:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1049:26:1049:26 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1049:26:1049:26 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1049:26:1049:31 | x.m2() | | main.rs:971:5:972:14 | S1 | -| main.rs:1050:18:1050:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1050:18:1050:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1050:18:1050:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1050:18:1050:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1050:26:1050:26 | y | | main.rs:961:5:964:5 | MyThing | -| main.rs:1050:26:1050:26 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1050:26:1050:31 | y.m2() | | main.rs:973:5:974:14 | S2 | -| main.rs:1052:13:1052:13 | x | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1052:13:1052:13 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1052:17:1052:34 | MyThing2 {...} | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1052:17:1052:34 | MyThing2 {...} | A | main.rs:971:5:972:14 | S1 | -| main.rs:1052:31:1052:32 | S1 | | main.rs:971:5:972:14 | S1 | -| main.rs:1053:13:1053:13 | y | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1053:13:1053:13 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1053:17:1053:34 | MyThing2 {...} | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1053:17:1053:34 | MyThing2 {...} | A | main.rs:973:5:974:14 | S2 | -| main.rs:1053:31:1053:32 | S2 | | main.rs:973:5:974:14 | S2 | -| main.rs:1055:18:1055:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1055:18:1055:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1055:18:1055:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1055:18:1055:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1055:26:1055:26 | x | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1055:26:1055:26 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1055:26:1055:31 | x.m3() | | main.rs:971:5:972:14 | S1 | -| main.rs:1056:18:1056:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1056:18:1056:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1056:18:1056:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1056:18:1056:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1056:26:1056:26 | y | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1056:26:1056:26 | y | A | main.rs:973:5:974:14 | S2 | -| main.rs:1056:26:1056:31 | y.m3() | | main.rs:973:5:974:14 | S2 | -| main.rs:1058:13:1058:13 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1058:13:1058:13 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1058:17:1058:33 | MyThing {...} | | main.rs:961:5:964:5 | MyThing | -| main.rs:1058:17:1058:33 | MyThing {...} | A | main.rs:971:5:972:14 | S1 | -| main.rs:1058:30:1058:31 | S1 | | main.rs:971:5:972:14 | S1 | -| main.rs:1059:13:1059:13 | s | | main.rs:971:5:972:14 | S1 | -| main.rs:1059:17:1059:32 | call_trait_m1(...) | | main.rs:971:5:972:14 | S1 | -| main.rs:1059:31:1059:31 | x | | main.rs:961:5:964:5 | MyThing | -| main.rs:1059:31:1059:31 | x | A | main.rs:971:5:972:14 | S1 | -| main.rs:1061:13:1061:13 | x | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1061:13:1061:13 | x | A | main.rs:973:5:974:14 | S2 | -| main.rs:1061:17:1061:34 | MyThing2 {...} | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1061:17:1061:34 | MyThing2 {...} | A | main.rs:973:5:974:14 | S2 | -| main.rs:1061:31:1061:32 | S2 | | main.rs:973:5:974:14 | S2 | -| main.rs:1062:13:1062:13 | s | | main.rs:961:5:964:5 | MyThing | -| main.rs:1062:13:1062:13 | s | A | main.rs:973:5:974:14 | S2 | -| main.rs:1062:17:1062:32 | call_trait_m1(...) | | main.rs:961:5:964:5 | MyThing | -| main.rs:1062:17:1062:32 | call_trait_m1(...) | A | main.rs:973:5:974:14 | S2 | -| main.rs:1062:31:1062:31 | x | | main.rs:966:5:969:5 | MyThing2 | -| main.rs:1062:31:1062:31 | x | A | main.rs:973:5:974:14 | S2 | -| main.rs:1079:22:1079:22 | x | | file://:0:0:0:0 | & | -| main.rs:1079:22:1079:22 | x | &T | main.rs:1079:11:1079:19 | T | -| main.rs:1079:35:1081:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1079:35:1081:5 | { ... } | &T | main.rs:1079:11:1079:19 | T | -| main.rs:1080:9:1080:9 | x | | file://:0:0:0:0 | & | -| main.rs:1080:9:1080:9 | x | &T | main.rs:1079:11:1079:19 | T | -| main.rs:1084:17:1084:20 | SelfParam | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1084:29:1086:9 | { ... } | | main.rs:1072:5:1073:14 | S2 | -| main.rs:1085:13:1085:14 | S2 | | main.rs:1072:5:1073:14 | S2 | -| main.rs:1089:21:1089:21 | x | | main.rs:1089:13:1089:14 | T1 | -| main.rs:1092:5:1094:5 | { ... } | | main.rs:1089:17:1089:18 | T2 | -| main.rs:1093:9:1093:9 | x | | main.rs:1089:13:1089:14 | T1 | -| main.rs:1093:9:1093:16 | x.into() | | main.rs:1089:17:1089:18 | T2 | -| main.rs:1097:13:1097:13 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1097:17:1097:18 | S1 | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1098:18:1098:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1098:18:1098:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1098:18:1098:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1098:18:1098:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1098:26:1098:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1098:26:1098:31 | id(...) | &T | main.rs:1069:5:1070:14 | S1 | -| main.rs:1098:29:1098:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1098:29:1098:30 | &x | &T | main.rs:1069:5:1070:14 | S1 | -| main.rs:1098:30:1098:30 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1100:13:1100:13 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1100:17:1100:18 | S1 | | main.rs:1069:5:1070:14 | S1 | +| main.rs:836:20:836:24 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | +| main.rs:852:15:852:18 | SelfParam | | main.rs:839:5:840:13 | S | +| main.rs:852:45:854:9 | { ... } | | main.rs:845:5:846:14 | AT | +| main.rs:853:13:853:14 | AT | | main.rs:845:5:846:14 | AT | +| main.rs:862:19:862:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:862:19:862:23 | SelfParam | &T | main.rs:839:5:840:13 | S | +| main.rs:862:26:862:26 | a | | main.rs:862:16:862:16 | A | +| main.rs:862:46:864:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | +| main.rs:862:46:864:9 | { ... } | A | main.rs:862:16:862:16 | A | +| main.rs:863:13:863:32 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | +| main.rs:863:13:863:32 | Wrapper {...} | A | main.rs:862:16:862:16 | A | +| main.rs:863:30:863:30 | a | | main.rs:862:16:862:16 | A | +| main.rs:871:15:871:18 | SelfParam | | main.rs:842:5:843:14 | S2 | +| main.rs:871:45:873:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | +| main.rs:871:45:873:9 | { ... } | A | main.rs:842:5:843:14 | S2 | +| main.rs:872:13:872:35 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | +| main.rs:872:13:872:35 | Wrapper {...} | A | main.rs:842:5:843:14 | S2 | +| main.rs:872:30:872:33 | self | | main.rs:842:5:843:14 | S2 | +| main.rs:878:30:880:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | +| main.rs:878:30:880:9 | { ... } | A | main.rs:842:5:843:14 | S2 | +| main.rs:879:13:879:33 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | +| main.rs:879:13:879:33 | Wrapper {...} | A | main.rs:842:5:843:14 | S2 | +| main.rs:879:30:879:31 | S2 | | main.rs:842:5:843:14 | S2 | +| main.rs:885:22:885:26 | thing | | main.rs:885:10:885:19 | T | +| main.rs:886:9:886:13 | thing | | main.rs:885:10:885:19 | T | +| main.rs:893:21:893:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:893:21:893:25 | SelfParam | &T | main.rs:845:5:846:14 | AT | +| main.rs:893:34:895:9 | { ... } | | main.rs:845:5:846:14 | AT | +| main.rs:894:13:894:14 | AT | | main.rs:845:5:846:14 | AT | +| main.rs:897:20:897:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:897:20:897:24 | SelfParam | &T | main.rs:845:5:846:14 | AT | +| main.rs:897:43:899:9 | { ... } | | main.rs:839:5:840:13 | S | +| main.rs:898:13:898:13 | S | | main.rs:839:5:840:13 | S | +| main.rs:901:20:901:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:901:20:901:24 | SelfParam | &T | main.rs:845:5:846:14 | AT | +| main.rs:901:43:903:9 | { ... } | | main.rs:842:5:843:14 | S2 | +| main.rs:902:13:902:14 | S2 | | main.rs:842:5:843:14 | S2 | +| main.rs:907:13:907:14 | x1 | | main.rs:839:5:840:13 | S | +| main.rs:907:18:907:18 | S | | main.rs:839:5:840:13 | S | +| main.rs:909:18:909:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:909:18:909:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:909:18:909:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:909:18:909:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:909:26:909:27 | x1 | | main.rs:839:5:840:13 | S | +| main.rs:909:26:909:32 | x1.m1() | | main.rs:845:5:846:14 | AT | +| main.rs:911:13:911:14 | x2 | | main.rs:839:5:840:13 | S | +| main.rs:911:18:911:18 | S | | main.rs:839:5:840:13 | S | +| main.rs:913:13:913:13 | y | | main.rs:845:5:846:14 | AT | +| main.rs:913:17:913:18 | x2 | | main.rs:839:5:840:13 | S | +| main.rs:913:17:913:23 | x2.m2() | | main.rs:845:5:846:14 | AT | +| main.rs:914:18:914:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:914:18:914:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:914:18:914:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:914:18:914:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:914:26:914:26 | y | | main.rs:845:5:846:14 | AT | +| main.rs:916:13:916:14 | x3 | | main.rs:839:5:840:13 | S | +| main.rs:916:18:916:18 | S | | main.rs:839:5:840:13 | S | +| main.rs:918:18:918:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:918:18:918:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:918:18:918:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:918:18:918:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:918:26:918:27 | x3 | | main.rs:839:5:840:13 | S | +| main.rs:918:26:918:34 | x3.put(...) | | main.rs:788:5:791:5 | Wrapper | +| main.rs:918:26:918:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:918:26:918:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:918:33:918:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:921:18:921:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:921:18:921:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:921:18:921:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:921:18:921:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:921:26:921:27 | x3 | | main.rs:839:5:840:13 | S | +| main.rs:921:26:921:40 | x3.putTwo(...) | | main.rs:788:5:791:5 | Wrapper | +| main.rs:921:26:921:40 | x3.putTwo(...) | A | main.rs:859:36:859:50 | AssociatedParam | +| main.rs:921:26:921:49 | ... .unwrap() | | main.rs:859:36:859:50 | AssociatedParam | +| main.rs:921:36:921:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:921:39:921:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:923:20:923:20 | S | | main.rs:839:5:840:13 | S | +| main.rs:924:18:924:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:924:18:924:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:924:18:924:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:924:18:924:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:926:13:926:14 | x5 | | main.rs:842:5:843:14 | S2 | +| main.rs:926:18:926:19 | S2 | | main.rs:842:5:843:14 | S2 | +| main.rs:927:18:927:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:927:18:927:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:927:18:927:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:927:18:927:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:927:26:927:27 | x5 | | main.rs:842:5:843:14 | S2 | +| main.rs:927:26:927:32 | x5.m1() | | main.rs:788:5:791:5 | Wrapper | +| main.rs:927:26:927:32 | x5.m1() | A | main.rs:842:5:843:14 | S2 | +| main.rs:928:13:928:14 | x6 | | main.rs:842:5:843:14 | S2 | +| main.rs:928:18:928:19 | S2 | | main.rs:842:5:843:14 | S2 | +| main.rs:929:18:929:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:929:18:929:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:929:18:929:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:929:18:929:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:929:26:929:27 | x6 | | main.rs:842:5:843:14 | S2 | +| main.rs:929:26:929:32 | x6.m2() | | main.rs:788:5:791:5 | Wrapper | +| main.rs:929:26:929:32 | x6.m2() | A | main.rs:842:5:843:14 | S2 | +| main.rs:931:13:931:22 | assoc_zero | | main.rs:845:5:846:14 | AT | +| main.rs:931:26:931:27 | AT | | main.rs:845:5:846:14 | AT | +| main.rs:931:26:931:38 | AT.get_zero() | | main.rs:845:5:846:14 | AT | +| main.rs:932:13:932:21 | assoc_one | | main.rs:839:5:840:13 | S | +| main.rs:932:25:932:26 | AT | | main.rs:845:5:846:14 | AT | +| main.rs:932:25:932:36 | AT.get_one() | | main.rs:839:5:840:13 | S | +| main.rs:933:13:933:21 | assoc_two | | main.rs:842:5:843:14 | S2 | +| main.rs:933:25:933:26 | AT | | main.rs:845:5:846:14 | AT | +| main.rs:933:25:933:36 | AT.get_two() | | main.rs:842:5:843:14 | S2 | +| main.rs:941:19:941:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:941:19:941:23 | SelfParam | &T | main.rs:938:5:942:5 | Self [trait Supertrait] | +| main.rs:941:26:941:32 | content | | main.rs:939:9:939:21 | Content | +| main.rs:946:24:946:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:946:24:946:28 | SelfParam | &T | main.rs:944:5:947:5 | Self [trait Subtrait] | +| main.rs:955:23:955:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:955:23:955:27 | SelfParam | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | +| main.rs:955:30:955:31 | c1 | | main.rs:939:9:939:21 | Content | +| main.rs:955:49:955:50 | c2 | | main.rs:939:9:939:21 | Content | +| main.rs:956:13:956:16 | self | | file://:0:0:0:0 | & | +| main.rs:956:13:956:16 | self | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | +| main.rs:956:25:956:26 | c1 | | main.rs:939:9:939:21 | Content | +| main.rs:957:13:957:16 | self | | file://:0:0:0:0 | & | +| main.rs:957:13:957:16 | self | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | +| main.rs:957:25:957:26 | c2 | | main.rs:939:9:939:21 | Content | +| main.rs:965:19:965:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:965:19:965:23 | SelfParam | &T | main.rs:961:5:961:24 | MyType | +| main.rs:965:19:965:23 | SelfParam | &T.T | main.rs:963:10:963:10 | T | +| main.rs:965:26:965:33 | _content | | main.rs:963:10:963:10 | T | +| main.rs:966:22:966:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:966:22:966:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:966:22:966:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:966:22:966:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:972:24:972:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:972:24:972:28 | SelfParam | &T | main.rs:961:5:961:24 | MyType | +| main.rs:972:24:972:28 | SelfParam | &T.T | main.rs:970:10:970:17 | T | +| main.rs:972:48:974:9 | { ... } | | main.rs:970:10:970:17 | T | +| main.rs:973:13:973:19 | (...) | | main.rs:961:5:961:24 | MyType | +| main.rs:973:13:973:19 | (...) | T | main.rs:970:10:970:17 | T | +| main.rs:973:13:973:21 | ... .0 | | main.rs:970:10:970:17 | T | +| main.rs:973:13:973:29 | ... .clone() | | main.rs:970:10:970:17 | T | +| main.rs:973:14:973:18 | * ... | | main.rs:961:5:961:24 | MyType | +| main.rs:973:14:973:18 | * ... | T | main.rs:970:10:970:17 | T | +| main.rs:973:15:973:18 | self | | file://:0:0:0:0 | & | +| main.rs:973:15:973:18 | self | &T | main.rs:961:5:961:24 | MyType | +| main.rs:973:15:973:18 | self | &T.T | main.rs:970:10:970:17 | T | +| main.rs:977:33:977:36 | item | | file://:0:0:0:0 | & | +| main.rs:977:33:977:36 | item | &T | main.rs:977:20:977:30 | T | +| main.rs:977:57:979:5 | { ... } | | main.rs:939:9:939:21 | Content | +| main.rs:978:9:978:12 | item | | file://:0:0:0:0 | & | +| main.rs:978:9:978:12 | item | &T | main.rs:977:20:977:30 | T | +| main.rs:978:9:978:26 | item.get_content() | | main.rs:939:9:939:21 | Content | +| main.rs:981:35:981:38 | item | | file://:0:0:0:0 | & | +| main.rs:981:35:981:38 | item | &T | main.rs:981:21:981:32 | T | +| main.rs:981:45:981:46 | c1 | | main.rs:939:9:939:21 | Content | +| main.rs:981:61:981:62 | c2 | | main.rs:939:9:939:21 | Content | +| main.rs:981:77:981:78 | c3 | | main.rs:939:9:939:21 | Content | +| main.rs:982:9:982:12 | item | | file://:0:0:0:0 | & | +| main.rs:982:9:982:12 | item | &T | main.rs:981:21:981:32 | T | +| main.rs:982:21:982:22 | c1 | | main.rs:939:9:939:21 | Content | +| main.rs:983:9:983:12 | item | | file://:0:0:0:0 | & | +| main.rs:983:9:983:12 | item | &T | main.rs:981:21:981:32 | T | +| main.rs:983:25:983:26 | c2 | | main.rs:939:9:939:21 | Content | +| main.rs:983:29:983:30 | c3 | | main.rs:939:9:939:21 | Content | +| main.rs:987:13:987:17 | item1 | | main.rs:961:5:961:24 | MyType | +| main.rs:987:13:987:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:987:21:987:33 | MyType(...) | | main.rs:961:5:961:24 | MyType | +| main.rs:987:21:987:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:987:28:987:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:988:25:988:29 | item1 | | main.rs:961:5:961:24 | MyType | +| main.rs:988:25:988:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:990:13:990:17 | item2 | | main.rs:961:5:961:24 | MyType | +| main.rs:990:13:990:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:990:21:990:32 | MyType(...) | | main.rs:961:5:961:24 | MyType | +| main.rs:990:21:990:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:990:28:990:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:991:37:991:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:991:37:991:42 | &item2 | &T | main.rs:961:5:961:24 | MyType | +| main.rs:991:37:991:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:991:38:991:42 | item2 | | main.rs:961:5:961:24 | MyType | +| main.rs:991:38:991:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1008:15:1008:18 | SelfParam | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1008:15:1008:18 | SelfParam | A | main.rs:1007:10:1007:10 | T | +| main.rs:1008:26:1013:9 | { ... } | | main.rs:1007:10:1007:10 | T | +| main.rs:1009:13:1012:13 | match self { ... } | | main.rs:1007:10:1007:10 | T | +| main.rs:1009:19:1009:22 | self | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1009:19:1009:22 | self | A | main.rs:1007:10:1007:10 | T | +| main.rs:1010:17:1010:29 | ...::C1(...) | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1010:17:1010:29 | ...::C1(...) | A | main.rs:1007:10:1007:10 | T | +| main.rs:1010:28:1010:28 | a | | main.rs:1007:10:1007:10 | T | +| main.rs:1010:34:1010:34 | a | | main.rs:1007:10:1007:10 | T | +| main.rs:1011:17:1011:32 | ...::C2 {...} | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1011:17:1011:32 | ...::C2 {...} | A | main.rs:1007:10:1007:10 | T | +| main.rs:1011:30:1011:30 | a | | main.rs:1007:10:1007:10 | T | +| main.rs:1011:37:1011:37 | a | | main.rs:1007:10:1007:10 | T | +| main.rs:1017:13:1017:13 | x | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1017:13:1017:13 | x | A | main.rs:1002:5:1003:14 | S1 | +| main.rs:1017:17:1017:30 | ...::C1(...) | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1017:17:1017:30 | ...::C1(...) | A | main.rs:1002:5:1003:14 | S1 | +| main.rs:1017:28:1017:29 | S1 | | main.rs:1002:5:1003:14 | S1 | +| main.rs:1018:13:1018:13 | y | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1018:13:1018:13 | y | A | main.rs:1004:5:1005:14 | S2 | +| main.rs:1018:17:1018:36 | ...::C2 {...} | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1018:17:1018:36 | ...::C2 {...} | A | main.rs:1004:5:1005:14 | S2 | +| main.rs:1018:33:1018:34 | S2 | | main.rs:1004:5:1005:14 | S2 | +| main.rs:1020:18:1020:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1020:18:1020:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1020:18:1020:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1020:18:1020:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1020:26:1020:26 | x | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1020:26:1020:26 | x | A | main.rs:1002:5:1003:14 | S1 | +| main.rs:1020:26:1020:31 | x.m1() | | main.rs:1002:5:1003:14 | S1 | +| main.rs:1021:18:1021:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1021:18:1021:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1021:18:1021:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1021:18:1021:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1021:26:1021:26 | y | | main.rs:996:5:1000:5 | MyEnum | +| main.rs:1021:26:1021:26 | y | A | main.rs:1004:5:1005:14 | S2 | +| main.rs:1021:26:1021:31 | y.m1() | | main.rs:1004:5:1005:14 | S2 | +| main.rs:1043:15:1043:18 | SelfParam | | main.rs:1041:5:1044:5 | Self [trait MyTrait1] | +| main.rs:1048:15:1048:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1048:15:1048:19 | SelfParam | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | +| main.rs:1051:9:1057:9 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1052:13:1056:13 | if ... {...} else {...} | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1052:16:1052:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1052:16:1052:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1052:20:1052:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1052:22:1054:13 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1053:17:1053:20 | self | | file://:0:0:0:0 | & | +| main.rs:1053:17:1053:20 | self | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | +| main.rs:1053:17:1053:25 | self.m1() | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1054:20:1056:13 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1055:17:1055:31 | ...::m1(...) | | main.rs:1046:20:1046:22 | Tr2 | +| main.rs:1055:26:1055:30 | * ... | | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | +| main.rs:1055:27:1055:30 | self | | file://:0:0:0:0 | & | +| main.rs:1055:27:1055:30 | self | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | +| main.rs:1062:15:1062:18 | SelfParam | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | +| main.rs:1065:9:1071:9 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1066:13:1070:13 | if ... {...} else {...} | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1066:16:1066:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1066:16:1066:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1066:20:1066:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1066:22:1068:13 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1067:17:1067:20 | self | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | +| main.rs:1067:17:1067:25 | self.m2() | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1067:17:1067:25 | self.m2() | A | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1067:17:1067:27 | ... .a | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1068:20:1070:13 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1069:17:1069:31 | ...::m2(...) | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1069:17:1069:31 | ...::m2(...) | A | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1069:17:1069:33 | ... .a | | main.rs:1060:20:1060:22 | Tr3 | +| main.rs:1069:26:1069:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1069:26:1069:30 | &self | &T | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | +| main.rs:1069:27:1069:30 | self | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | +| main.rs:1076:15:1076:18 | SelfParam | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1076:15:1076:18 | SelfParam | A | main.rs:1074:10:1074:10 | T | +| main.rs:1076:26:1078:9 | { ... } | | main.rs:1074:10:1074:10 | T | +| main.rs:1077:13:1077:16 | self | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1077:13:1077:16 | self | A | main.rs:1074:10:1074:10 | T | +| main.rs:1077:13:1077:18 | self.a | | main.rs:1074:10:1074:10 | T | +| main.rs:1085:15:1085:18 | SelfParam | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1085:15:1085:18 | SelfParam | A | main.rs:1083:10:1083:10 | T | +| main.rs:1085:35:1087:9 | { ... } | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1085:35:1087:9 | { ... } | A | main.rs:1083:10:1083:10 | T | +| main.rs:1086:13:1086:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1086:13:1086:33 | MyThing {...} | A | main.rs:1083:10:1083:10 | T | +| main.rs:1086:26:1086:29 | self | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1086:26:1086:29 | self | A | main.rs:1083:10:1083:10 | T | +| main.rs:1086:26:1086:31 | self.a | | main.rs:1083:10:1083:10 | T | +| main.rs:1094:44:1094:44 | x | | main.rs:1094:26:1094:41 | T2 | +| main.rs:1094:57:1096:5 | { ... } | | main.rs:1094:22:1094:23 | T1 | +| main.rs:1095:9:1095:9 | x | | main.rs:1094:26:1094:41 | T2 | +| main.rs:1095:9:1095:14 | x.m1() | | main.rs:1094:22:1094:23 | T1 | +| main.rs:1098:56:1098:56 | x | | main.rs:1098:39:1098:53 | T | +| main.rs:1100:13:1100:13 | a | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1100:13:1100:13 | a | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1100:17:1100:17 | x | | main.rs:1098:39:1098:53 | T | +| main.rs:1100:17:1100:22 | x.m1() | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1100:17:1100:22 | x.m1() | A | main.rs:1036:5:1037:14 | S1 | | main.rs:1101:18:1101:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1101:18:1101:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1101:18:1101:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1101:18:1101:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1101:26:1101:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1101:26:1101:37 | id::<...>(...) | &T | main.rs:1069:5:1070:14 | S1 | -| main.rs:1101:35:1101:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1101:35:1101:36 | &x | &T | main.rs:1069:5:1070:14 | S1 | -| main.rs:1101:36:1101:36 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1103:13:1103:13 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1103:13:1103:13 | x | | main.rs:1075:5:1075:25 | dyn Trait | -| main.rs:1103:17:1103:18 | S1 | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1103:17:1103:18 | S1 | | main.rs:1075:5:1075:25 | dyn Trait | -| main.rs:1105:18:1105:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1105:18:1105:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1105:18:1105:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1105:18:1105:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1105:26:1105:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1105:26:1105:44 | id::<...>(...) | &T | main.rs:1075:5:1075:25 | dyn Trait | -| main.rs:1105:42:1105:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1105:42:1105:43 | &x | &T | main.rs:1069:5:1070:14 | S1 | -| main.rs:1105:42:1105:43 | &x | &T | main.rs:1075:5:1075:25 | dyn Trait | -| main.rs:1105:43:1105:43 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1105:43:1105:43 | x | | main.rs:1075:5:1075:25 | dyn Trait | -| main.rs:1107:13:1107:13 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1107:17:1107:18 | S1 | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1108:9:1108:25 | into::<...>(...) | | main.rs:1072:5:1073:14 | S2 | -| main.rs:1108:24:1108:24 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1110:13:1110:13 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1110:17:1110:18 | S1 | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1111:13:1111:13 | y | | main.rs:1072:5:1073:14 | S2 | -| main.rs:1111:21:1111:27 | into(...) | | main.rs:1072:5:1073:14 | S2 | -| main.rs:1111:26:1111:26 | x | | main.rs:1069:5:1070:14 | S1 | -| main.rs:1125:22:1125:25 | SelfParam | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1125:22:1125:25 | SelfParam | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1125:22:1125:25 | SelfParam | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1125:35:1132:9 | { ... } | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1126:13:1131:13 | match self { ... } | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1126:19:1126:22 | self | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1126:19:1126:22 | self | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1126:19:1126:22 | self | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1127:17:1127:38 | ...::PairNone(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1127:17:1127:38 | ...::PairNone(...) | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1127:17:1127:38 | ...::PairNone(...) | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1127:43:1127:82 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1127:50:1127:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1127:50:1127:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1127:50:1127:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1127:50:1127:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1127:50:1127:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1127:50:1127:81 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1127:50:1127:81 | { ... } | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1128:17:1128:38 | ...::PairFst(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1128:17:1128:38 | ...::PairFst(...) | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1128:17:1128:38 | ...::PairFst(...) | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1128:37:1128:37 | _ | | main.rs:1124:10:1124:12 | Fst | -| main.rs:1128:43:1128:81 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1128:50:1128:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1128:50:1128:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1128:50:1128:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1128:50:1128:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1128:50:1128:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1128:50:1128:80 | MacroExpr | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1128:50:1128:80 | { ... } | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1129:17:1129:40 | ...::PairSnd(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1129:17:1129:40 | ...::PairSnd(...) | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1129:17:1129:40 | ...::PairSnd(...) | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1129:37:1129:39 | snd | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1129:45:1129:47 | snd | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1130:17:1130:44 | ...::PairBoth(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1130:17:1130:44 | ...::PairBoth(...) | Fst | main.rs:1124:10:1124:12 | Fst | -| main.rs:1130:17:1130:44 | ...::PairBoth(...) | Snd | main.rs:1124:15:1124:17 | Snd | -| main.rs:1130:38:1130:38 | _ | | main.rs:1124:10:1124:12 | Fst | -| main.rs:1130:41:1130:43 | snd | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1130:49:1130:51 | snd | | main.rs:1124:15:1124:17 | Snd | -| main.rs:1156:10:1156:10 | t | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1156:10:1156:10 | t | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1156:10:1156:10 | t | Snd | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1156:10:1156:10 | t | Snd.Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1156:10:1156:10 | t | Snd.Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1157:13:1157:13 | x | | main.rs:1141:5:1142:14 | S3 | -| main.rs:1157:17:1157:17 | t | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1157:17:1157:17 | t | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1157:17:1157:17 | t | Snd | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1157:17:1157:17 | t | Snd.Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1157:17:1157:17 | t | Snd.Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1157:17:1157:29 | t.unwrapSnd() | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1157:17:1157:29 | t.unwrapSnd() | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1157:17:1157:29 | t.unwrapSnd() | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1157:17:1157:41 | ... .unwrapSnd() | | main.rs:1141:5:1142:14 | S3 | -| main.rs:1158:18:1158:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1158:18:1158:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1158:18:1158:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1158:18:1158:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1158:26:1158:26 | x | | main.rs:1141:5:1142:14 | S3 | -| main.rs:1173:22:1173:25 | SelfParam | | main.rs:1171:5:1174:5 | Self [trait TraitWithAssocType] | -| main.rs:1181:22:1181:25 | SelfParam | | main.rs:1169:5:1169:28 | GenS | -| main.rs:1181:22:1181:25 | SelfParam | GenT | main.rs:1176:10:1176:15 | Output | -| main.rs:1181:44:1183:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1181:44:1183:9 | { ... } | E | main.rs:1176:10:1176:15 | Output | -| main.rs:1181:44:1183:9 | { ... } | T | main.rs:1176:10:1176:15 | Output | -| main.rs:1182:13:1182:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1182:13:1182:22 | Ok(...) | E | main.rs:1176:10:1176:15 | Output | -| main.rs:1182:13:1182:22 | Ok(...) | T | main.rs:1176:10:1176:15 | Output | -| main.rs:1182:16:1182:19 | self | | main.rs:1169:5:1169:28 | GenS | -| main.rs:1182:16:1182:19 | self | GenT | main.rs:1176:10:1176:15 | Output | -| main.rs:1182:16:1182:21 | self.0 | | main.rs:1176:10:1176:15 | Output | -| main.rs:1188:13:1188:14 | p1 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1188:13:1188:14 | p1 | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1188:13:1188:14 | p1 | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1188:26:1188:53 | ...::PairBoth(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1188:26:1188:53 | ...::PairBoth(...) | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1188:26:1188:53 | ...::PairBoth(...) | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1188:47:1188:48 | S1 | | main.rs:1135:5:1136:14 | S1 | -| main.rs:1188:51:1188:52 | S2 | | main.rs:1138:5:1139:14 | S2 | -| main.rs:1189:18:1189:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1189:18:1189:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1189:18:1189:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1189:18:1189:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1189:26:1189:27 | p1 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1189:26:1189:27 | p1 | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1189:26:1189:27 | p1 | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1192:13:1192:14 | p2 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1192:13:1192:14 | p2 | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1192:13:1192:14 | p2 | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1192:26:1192:47 | ...::PairNone(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1192:26:1192:47 | ...::PairNone(...) | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1192:26:1192:47 | ...::PairNone(...) | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1193:18:1193:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1193:18:1193:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1193:18:1193:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1193:18:1193:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1193:26:1193:27 | p2 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1193:26:1193:27 | p2 | Fst | main.rs:1135:5:1136:14 | S1 | -| main.rs:1193:26:1193:27 | p2 | Snd | main.rs:1138:5:1139:14 | S2 | -| main.rs:1196:13:1196:14 | p3 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1196:13:1196:14 | p3 | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1196:13:1196:14 | p3 | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1196:34:1196:56 | ...::PairSnd(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1196:34:1196:56 | ...::PairSnd(...) | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1196:34:1196:56 | ...::PairSnd(...) | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1196:54:1196:55 | S3 | | main.rs:1141:5:1142:14 | S3 | -| main.rs:1197:18:1197:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1197:18:1197:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1197:18:1197:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:18:1197:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:26:1197:27 | p3 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1197:26:1197:27 | p3 | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1197:26:1197:27 | p3 | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1200:13:1200:14 | p3 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1200:13:1200:14 | p3 | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1200:13:1200:14 | p3 | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1200:35:1200:56 | ...::PairNone(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1200:35:1200:56 | ...::PairNone(...) | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1200:35:1200:56 | ...::PairNone(...) | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1201:18:1201:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1201:18:1201:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1201:18:1201:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1201:18:1201:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1201:26:1201:27 | p3 | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1201:26:1201:27 | p3 | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1201:26:1201:27 | p3 | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1203:11:1203:54 | ...::PairSnd(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1203:11:1203:54 | ...::PairSnd(...) | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1203:11:1203:54 | ...::PairSnd(...) | Snd | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1203:11:1203:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1203:11:1203:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1203:31:1203:53 | ...::PairSnd(...) | | main.rs:1116:5:1122:5 | PairOption | -| main.rs:1203:31:1203:53 | ...::PairSnd(...) | Fst | main.rs:1138:5:1139:14 | S2 | -| main.rs:1203:31:1203:53 | ...::PairSnd(...) | Snd | main.rs:1141:5:1142:14 | S3 | -| main.rs:1203:51:1203:52 | S3 | | main.rs:1141:5:1142:14 | S3 | -| main.rs:1205:13:1205:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1205:13:1205:13 | x | E | main.rs:1135:5:1136:14 | S1 | -| main.rs:1205:13:1205:13 | x | T | main.rs:1161:5:1161:34 | S4 | -| main.rs:1205:13:1205:13 | x | T.T41 | main.rs:1138:5:1139:14 | S2 | -| main.rs:1205:13:1205:13 | x | T.T42 | main.rs:1163:5:1163:22 | S5 | -| main.rs:1205:13:1205:13 | x | T.T42.T5 | main.rs:1138:5:1139:14 | S2 | -| main.rs:1207:13:1207:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1207:13:1207:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1207:13:1207:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1207:17:1207:26 | GenS(...) | | main.rs:1169:5:1169:28 | GenS | -| main.rs:1207:17:1207:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1207:17:1207:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1207:17:1207:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1207:17:1207:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1207:22:1207:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1220:16:1220:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1220:16:1220:24 | SelfParam | &T | main.rs:1218:5:1225:5 | Self [trait MyTrait] | -| main.rs:1220:27:1220:31 | value | | main.rs:1218:19:1218:19 | S | -| main.rs:1222:21:1222:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1222:21:1222:29 | SelfParam | &T | main.rs:1218:5:1225:5 | Self [trait MyTrait] | -| main.rs:1222:32:1222:36 | value | | main.rs:1218:19:1218:19 | S | -| main.rs:1223:13:1223:16 | self | | file://:0:0:0:0 | & | -| main.rs:1223:13:1223:16 | self | &T | main.rs:1218:5:1225:5 | Self [trait MyTrait] | -| main.rs:1223:22:1223:26 | value | | main.rs:1218:19:1218:19 | S | -| main.rs:1229:16:1229:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1229:16:1229:24 | SelfParam | &T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1229:16:1229:24 | SelfParam | &T.T | main.rs:1227:10:1227:10 | T | -| main.rs:1229:27:1229:31 | value | | main.rs:1227:10:1227:10 | T | -| main.rs:1233:26:1235:9 | { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1233:26:1235:9 | { ... } | T | main.rs:1232:10:1232:10 | T | -| main.rs:1234:13:1234:30 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1234:13:1234:30 | ...::MyNone(...) | T | main.rs:1232:10:1232:10 | T | -| main.rs:1239:20:1239:23 | SelfParam | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1239:20:1239:23 | SelfParam | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1239:20:1239:23 | SelfParam | T.T | main.rs:1238:10:1238:10 | T | -| main.rs:1239:41:1244:9 | { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1239:41:1244:9 | { ... } | T | main.rs:1238:10:1238:10 | T | -| main.rs:1240:13:1243:13 | match self { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1240:13:1243:13 | match self { ... } | T | main.rs:1238:10:1238:10 | T | -| main.rs:1240:19:1240:22 | self | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1240:19:1240:22 | self | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1240:19:1240:22 | self | T.T | main.rs:1238:10:1238:10 | T | -| main.rs:1241:17:1241:34 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1241:17:1241:34 | ...::MyNone(...) | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1241:17:1241:34 | ...::MyNone(...) | T.T | main.rs:1238:10:1238:10 | T | -| main.rs:1241:39:1241:56 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1241:39:1241:56 | ...::MyNone(...) | T | main.rs:1238:10:1238:10 | T | -| main.rs:1242:17:1242:35 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1242:17:1242:35 | ...::MySome(...) | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1242:17:1242:35 | ...::MySome(...) | T.T | main.rs:1238:10:1238:10 | T | -| main.rs:1242:34:1242:34 | x | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1242:34:1242:34 | x | T | main.rs:1238:10:1238:10 | T | -| main.rs:1242:40:1242:40 | x | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1242:40:1242:40 | x | T | main.rs:1238:10:1238:10 | T | -| main.rs:1251:13:1251:14 | x1 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1251:13:1251:14 | x1 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1251:18:1251:37 | ...::new(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1251:18:1251:37 | ...::new(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1252:18:1252:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1252:18:1252:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1252:18:1252:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:18:1252:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:26:1252:27 | x1 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1252:26:1252:27 | x1 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1254:17:1254:18 | x2 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1254:17:1254:18 | x2 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1254:22:1254:36 | ...::new(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1254:22:1254:36 | ...::new(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1255:9:1255:10 | x2 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1255:9:1255:10 | x2 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1255:16:1255:16 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1256:18:1256:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1256:18:1256:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1256:18:1256:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1256:18:1256:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1256:26:1256:27 | x2 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1256:26:1256:27 | x2 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1259:17:1259:18 | x3 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1259:22:1259:36 | ...::new(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1260:9:1260:10 | x3 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1260:21:1260:21 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1261:18:1261:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1261:18:1261:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1261:18:1261:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1261:18:1261:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1261:26:1261:27 | x3 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1263:17:1263:18 | x4 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1263:17:1263:18 | x4 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1263:22:1263:36 | ...::new(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1263:22:1263:36 | ...::new(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1264:23:1264:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1264:23:1264:29 | &mut x4 | &T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1264:23:1264:29 | &mut x4 | &T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1264:28:1264:29 | x4 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1264:28:1264:29 | x4 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1264:32:1264:32 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1265:18:1265:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1265:18:1265:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1265:18:1265:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1265:18:1265:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1265:26:1265:27 | x4 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1265:26:1265:27 | x4 | T | main.rs:1247:5:1248:13 | S | -| main.rs:1267:13:1267:14 | x5 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1267:13:1267:14 | x5 | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1267:13:1267:14 | x5 | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1267:18:1267:58 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1267:18:1267:58 | ...::MySome(...) | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1267:18:1267:58 | ...::MySome(...) | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1267:35:1267:57 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1267:35:1267:57 | ...::MyNone(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1268:18:1268:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1268:18:1268:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1268:18:1268:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1268:18:1268:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1268:26:1268:27 | x5 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1268:26:1268:27 | x5 | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1268:26:1268:27 | x5 | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1268:26:1268:37 | x5.flatten() | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1268:26:1268:37 | x5.flatten() | T | main.rs:1247:5:1248:13 | S | -| main.rs:1270:13:1270:14 | x6 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1270:13:1270:14 | x6 | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1270:13:1270:14 | x6 | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1270:18:1270:58 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1270:18:1270:58 | ...::MySome(...) | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1270:18:1270:58 | ...::MySome(...) | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1270:35:1270:57 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1270:35:1270:57 | ...::MyNone(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1271:18:1271:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1271:18:1271:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1271:18:1271:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1271:18:1271:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1271:26:1271:61 | ...::flatten(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1271:26:1271:61 | ...::flatten(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1271:59:1271:60 | x6 | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1271:59:1271:60 | x6 | T | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1271:59:1271:60 | x6 | T.T | main.rs:1247:5:1248:13 | S | -| main.rs:1274:13:1274:19 | from_if | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1274:13:1274:19 | from_if | T | main.rs:1247:5:1248:13 | S | -| main.rs:1274:23:1278:9 | if ... {...} else {...} | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1274:23:1278:9 | if ... {...} else {...} | T | main.rs:1247:5:1248:13 | S | -| main.rs:1274:26:1274:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:26:1274:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1274:30:1274:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1274:32:1276:9 | { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1274:32:1276:9 | { ... } | T | main.rs:1247:5:1248:13 | S | -| main.rs:1275:13:1275:30 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1275:13:1275:30 | ...::MyNone(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1276:16:1278:9 | { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1276:16:1278:9 | { ... } | T | main.rs:1247:5:1248:13 | S | -| main.rs:1277:13:1277:31 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1277:13:1277:31 | ...::MySome(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1277:30:1277:30 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1279:18:1279:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1279:18:1279:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1279:18:1279:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1279:18:1279:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1279:26:1279:32 | from_if | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1279:26:1279:32 | from_if | T | main.rs:1247:5:1248:13 | S | -| main.rs:1282:13:1282:22 | from_match | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1282:13:1282:22 | from_match | T | main.rs:1247:5:1248:13 | S | -| main.rs:1282:26:1285:9 | match ... { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1282:26:1285:9 | match ... { ... } | T | main.rs:1247:5:1248:13 | S | -| main.rs:1282:32:1282:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1282:32:1282:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1282:36:1282:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1283:13:1283:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1283:21:1283:38 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1283:21:1283:38 | ...::MyNone(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1284:13:1284:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1284:22:1284:40 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1284:22:1284:40 | ...::MySome(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1284:39:1284:39 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1286:18:1286:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1286:18:1286:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1286:18:1286:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1286:18:1286:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1286:26:1286:35 | from_match | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1286:26:1286:35 | from_match | T | main.rs:1247:5:1248:13 | S | -| main.rs:1289:13:1289:21 | from_loop | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1289:13:1289:21 | from_loop | T | main.rs:1247:5:1248:13 | S | -| main.rs:1289:25:1294:9 | loop { ... } | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1289:25:1294:9 | loop { ... } | T | main.rs:1247:5:1248:13 | S | -| main.rs:1290:16:1290:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:16:1290:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1290:20:1290:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1291:23:1291:40 | ...::MyNone(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1291:23:1291:40 | ...::MyNone(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1293:19:1293:37 | ...::MySome(...) | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1293:19:1293:37 | ...::MySome(...) | T | main.rs:1247:5:1248:13 | S | -| main.rs:1293:36:1293:36 | S | | main.rs:1247:5:1248:13 | S | -| main.rs:1295:18:1295:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1295:18:1295:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1295:18:1295:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1295:18:1295:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1295:26:1295:34 | from_loop | | main.rs:1212:5:1216:5 | MyOption | -| main.rs:1295:26:1295:34 | from_loop | T | main.rs:1247:5:1248:13 | S | -| main.rs:1313:15:1313:18 | SelfParam | | main.rs:1301:5:1302:19 | S | -| main.rs:1313:15:1313:18 | SelfParam | T | main.rs:1312:10:1312:10 | T | -| main.rs:1313:26:1315:9 | { ... } | | main.rs:1312:10:1312:10 | T | -| main.rs:1314:13:1314:16 | self | | main.rs:1301:5:1302:19 | S | -| main.rs:1314:13:1314:16 | self | T | main.rs:1312:10:1312:10 | T | -| main.rs:1314:13:1314:18 | self.0 | | main.rs:1312:10:1312:10 | T | -| main.rs:1317:15:1317:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1317:15:1317:19 | SelfParam | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1317:15:1317:19 | SelfParam | &T.T | main.rs:1312:10:1312:10 | T | -| main.rs:1317:28:1319:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1317:28:1319:9 | { ... } | &T | main.rs:1312:10:1312:10 | T | -| main.rs:1318:13:1318:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1318:13:1318:19 | &... | &T | main.rs:1312:10:1312:10 | T | -| main.rs:1318:14:1318:17 | self | | file://:0:0:0:0 | & | -| main.rs:1318:14:1318:17 | self | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1318:14:1318:17 | self | &T.T | main.rs:1312:10:1312:10 | T | -| main.rs:1318:14:1318:19 | self.0 | | main.rs:1312:10:1312:10 | T | -| main.rs:1321:15:1321:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1321:15:1321:25 | SelfParam | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1321:15:1321:25 | SelfParam | &T.T | main.rs:1312:10:1312:10 | T | -| main.rs:1321:34:1323:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1321:34:1323:9 | { ... } | &T | main.rs:1312:10:1312:10 | T | -| main.rs:1322:13:1322:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1322:13:1322:19 | &... | &T | main.rs:1312:10:1312:10 | T | -| main.rs:1322:14:1322:17 | self | | file://:0:0:0:0 | & | -| main.rs:1322:14:1322:17 | self | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1322:14:1322:17 | self | &T.T | main.rs:1312:10:1312:10 | T | -| main.rs:1322:14:1322:19 | self.0 | | main.rs:1312:10:1312:10 | T | -| main.rs:1327:29:1327:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1327:29:1327:33 | SelfParam | &T | main.rs:1326:5:1329:5 | Self [trait ATrait] | -| main.rs:1328:33:1328:36 | SelfParam | | main.rs:1326:5:1329:5 | Self [trait ATrait] | -| main.rs:1334:29:1334:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1334:29:1334:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1334:29:1334:33 | SelfParam | &T.&T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1334:43:1336:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1335:13:1335:22 | (...) | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:13:1335:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1335:14:1335:21 | * ... | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:15:1335:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1335:15:1335:21 | (...) | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:15:1335:21 | (...) | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:16:1335:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1335:16:1335:20 | * ... | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:16:1335:20 | * ... | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1335:17:1335:20 | self | | file://:0:0:0:0 | & | -| main.rs:1335:17:1335:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1335:17:1335:20 | self | &T.&T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1339:33:1339:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1339:33:1339:36 | SelfParam | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1339:46:1341:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:13:1340:19 | (...) | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1340:13:1340:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:14:1340:18 | * ... | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1340:15:1340:18 | self | | file://:0:0:0:0 | & | -| main.rs:1340:15:1340:18 | self | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1345:13:1345:14 | x1 | | main.rs:1301:5:1302:19 | S | -| main.rs:1345:13:1345:14 | x1 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1345:18:1345:22 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1345:18:1345:22 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1345:20:1345:21 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1346:18:1346:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1346:18:1346:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1346:18:1346:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1346:18:1346:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1346:26:1346:27 | x1 | | main.rs:1301:5:1302:19 | S | -| main.rs:1346:26:1346:27 | x1 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1346:26:1346:32 | x1.m1() | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1348:13:1348:14 | x2 | | main.rs:1301:5:1302:19 | S | -| main.rs:1348:13:1348:14 | x2 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1348:18:1348:22 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1348:18:1348:22 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1348:20:1348:21 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1350:18:1350:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1350:18:1350:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1350:18:1350:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1350:18:1350:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1350:26:1350:27 | x2 | | main.rs:1301:5:1302:19 | S | -| main.rs:1350:26:1350:27 | x2 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1350:26:1350:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1350:26:1350:32 | x2.m2() | &T | main.rs:1304:5:1305:14 | S2 | +| main.rs:1101:18:1101:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1101:18:1101:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1101:26:1101:26 | a | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1101:26:1101:26 | a | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1105:13:1105:13 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1105:13:1105:13 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1105:17:1105:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1105:17:1105:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1105:30:1105:31 | S1 | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1106:13:1106:13 | y | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1106:13:1106:13 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1106:17:1106:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1106:17:1106:33 | MyThing {...} | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1106:30:1106:31 | S2 | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1108:18:1108:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1108:18:1108:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1108:18:1108:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1108:18:1108:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1108:26:1108:26 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1108:26:1108:26 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1108:26:1108:31 | x.m1() | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1109:18:1109:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1109:18:1109:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1109:18:1109:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1109:18:1109:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1109:26:1109:26 | y | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1109:26:1109:26 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1109:26:1109:31 | y.m1() | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1111:13:1111:13 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1111:13:1111:13 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1111:17:1111:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1111:17:1111:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1111:30:1111:31 | S1 | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1112:13:1112:13 | y | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1112:13:1112:13 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1112:17:1112:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1112:17:1112:33 | MyThing {...} | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1112:30:1112:31 | S2 | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1114:18:1114:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1114:18:1114:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1114:18:1114:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1114:18:1114:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1114:26:1114:26 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1114:26:1114:26 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1114:26:1114:31 | x.m2() | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1115:18:1115:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1115:18:1115:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1115:18:1115:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1115:18:1115:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1115:26:1115:26 | y | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1115:26:1115:26 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1115:26:1115:31 | y.m2() | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1117:13:1117:13 | x | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1117:13:1117:13 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1117:17:1117:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1117:17:1117:34 | MyThing2 {...} | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1117:31:1117:32 | S1 | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1118:13:1118:13 | y | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1118:13:1118:13 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1118:17:1118:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1118:17:1118:34 | MyThing2 {...} | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1118:31:1118:32 | S2 | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1120:18:1120:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1120:18:1120:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1120:18:1120:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1120:18:1120:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1120:26:1120:26 | x | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1120:26:1120:26 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1120:26:1120:31 | x.m3() | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1121:18:1121:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1121:18:1121:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1121:18:1121:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1121:18:1121:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1121:26:1121:26 | y | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1121:26:1121:26 | y | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1121:26:1121:31 | y.m3() | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1123:13:1123:13 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1123:13:1123:13 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1123:17:1123:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1123:17:1123:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1123:30:1123:31 | S1 | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1124:13:1124:13 | s | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1124:17:1124:32 | call_trait_m1(...) | | main.rs:1036:5:1037:14 | S1 | +| main.rs:1124:31:1124:31 | x | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1124:31:1124:31 | x | A | main.rs:1036:5:1037:14 | S1 | +| main.rs:1126:13:1126:13 | x | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1126:13:1126:13 | x | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1126:17:1126:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1126:17:1126:34 | MyThing2 {...} | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1126:31:1126:32 | S2 | | main.rs:1038:5:1039:14 | S2 | +| main.rs:1127:13:1127:13 | s | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1127:13:1127:13 | s | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1127:17:1127:32 | call_trait_m1(...) | | main.rs:1026:5:1029:5 | MyThing | +| main.rs:1127:17:1127:32 | call_trait_m1(...) | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1127:31:1127:31 | x | | main.rs:1031:5:1034:5 | MyThing2 | +| main.rs:1127:31:1127:31 | x | A | main.rs:1038:5:1039:14 | S2 | +| main.rs:1144:22:1144:22 | x | | file://:0:0:0:0 | & | +| main.rs:1144:22:1144:22 | x | &T | main.rs:1144:11:1144:19 | T | +| main.rs:1144:35:1146:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1144:35:1146:5 | { ... } | &T | main.rs:1144:11:1144:19 | T | +| main.rs:1145:9:1145:9 | x | | file://:0:0:0:0 | & | +| main.rs:1145:9:1145:9 | x | &T | main.rs:1144:11:1144:19 | T | +| main.rs:1149:17:1149:20 | SelfParam | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1149:29:1151:9 | { ... } | | main.rs:1137:5:1138:14 | S2 | +| main.rs:1150:13:1150:14 | S2 | | main.rs:1137:5:1138:14 | S2 | +| main.rs:1154:21:1154:21 | x | | main.rs:1154:13:1154:14 | T1 | +| main.rs:1157:5:1159:5 | { ... } | | main.rs:1154:17:1154:18 | T2 | +| main.rs:1158:9:1158:9 | x | | main.rs:1154:13:1154:14 | T1 | +| main.rs:1158:9:1158:16 | x.into() | | main.rs:1154:17:1154:18 | T2 | +| main.rs:1162:13:1162:13 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1162:17:1162:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1163:18:1163:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1163:18:1163:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1163:18:1163:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1163:18:1163:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1163:26:1163:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1163:26:1163:31 | id(...) | &T | main.rs:1134:5:1135:14 | S1 | +| main.rs:1163:29:1163:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1163:29:1163:30 | &x | &T | main.rs:1134:5:1135:14 | S1 | +| main.rs:1163:30:1163:30 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1165:13:1165:13 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1165:17:1165:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1166:18:1166:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1166:18:1166:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1166:18:1166:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1166:18:1166:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1166:26:1166:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1166:26:1166:37 | id::<...>(...) | &T | main.rs:1134:5:1135:14 | S1 | +| main.rs:1166:35:1166:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1166:35:1166:36 | &x | &T | main.rs:1134:5:1135:14 | S1 | +| main.rs:1166:36:1166:36 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1168:13:1168:13 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1168:13:1168:13 | x | | main.rs:1140:5:1140:25 | dyn Trait | +| main.rs:1168:17:1168:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1168:17:1168:18 | S1 | | main.rs:1140:5:1140:25 | dyn Trait | +| main.rs:1170:18:1170:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1170:18:1170:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1170:18:1170:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1170:18:1170:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1170:26:1170:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1170:26:1170:44 | id::<...>(...) | &T | main.rs:1140:5:1140:25 | dyn Trait | +| main.rs:1170:42:1170:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1170:42:1170:43 | &x | &T | main.rs:1134:5:1135:14 | S1 | +| main.rs:1170:42:1170:43 | &x | &T | main.rs:1140:5:1140:25 | dyn Trait | +| main.rs:1170:43:1170:43 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1170:43:1170:43 | x | | main.rs:1140:5:1140:25 | dyn Trait | +| main.rs:1172:13:1172:13 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1172:17:1172:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1173:9:1173:25 | into::<...>(...) | | main.rs:1137:5:1138:14 | S2 | +| main.rs:1173:24:1173:24 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1175:13:1175:13 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1175:17:1175:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1176:13:1176:13 | y | | main.rs:1137:5:1138:14 | S2 | +| main.rs:1176:21:1176:27 | into(...) | | main.rs:1137:5:1138:14 | S2 | +| main.rs:1176:26:1176:26 | x | | main.rs:1134:5:1135:14 | S1 | +| main.rs:1190:22:1190:25 | SelfParam | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1190:22:1190:25 | SelfParam | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1190:22:1190:25 | SelfParam | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1190:35:1197:9 | { ... } | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1191:13:1196:13 | match self { ... } | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1191:19:1191:22 | self | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1191:19:1191:22 | self | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1191:19:1191:22 | self | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1192:17:1192:38 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1192:17:1192:38 | ...::PairNone(...) | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1192:17:1192:38 | ...::PairNone(...) | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1192:43:1192:82 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1192:50:1192:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1192:50:1192:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1192:50:1192:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1192:50:1192:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1192:50:1192:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1192:50:1192:81 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1192:50:1192:81 | { ... } | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1193:17:1193:38 | ...::PairFst(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1193:17:1193:38 | ...::PairFst(...) | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1193:17:1193:38 | ...::PairFst(...) | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1193:37:1193:37 | _ | | main.rs:1189:10:1189:12 | Fst | +| main.rs:1193:43:1193:81 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1193:50:1193:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1193:50:1193:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1193:50:1193:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1193:50:1193:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1193:50:1193:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1193:50:1193:80 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1193:50:1193:80 | { ... } | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1194:17:1194:40 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1194:17:1194:40 | ...::PairSnd(...) | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1194:17:1194:40 | ...::PairSnd(...) | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1194:37:1194:39 | snd | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1194:45:1194:47 | snd | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1195:17:1195:44 | ...::PairBoth(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1195:17:1195:44 | ...::PairBoth(...) | Fst | main.rs:1189:10:1189:12 | Fst | +| main.rs:1195:17:1195:44 | ...::PairBoth(...) | Snd | main.rs:1189:15:1189:17 | Snd | +| main.rs:1195:38:1195:38 | _ | | main.rs:1189:10:1189:12 | Fst | +| main.rs:1195:41:1195:43 | snd | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1195:49:1195:51 | snd | | main.rs:1189:15:1189:17 | Snd | +| main.rs:1221:10:1221:10 | t | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1221:10:1221:10 | t | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1221:10:1221:10 | t | Snd | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1221:10:1221:10 | t | Snd.Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1221:10:1221:10 | t | Snd.Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1222:13:1222:13 | x | | main.rs:1206:5:1207:14 | S3 | +| main.rs:1222:17:1222:17 | t | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1222:17:1222:17 | t | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1222:17:1222:17 | t | Snd | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1222:17:1222:17 | t | Snd.Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1222:17:1222:17 | t | Snd.Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1222:17:1222:29 | t.unwrapSnd() | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1222:17:1222:29 | t.unwrapSnd() | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1222:17:1222:29 | t.unwrapSnd() | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1222:17:1222:41 | ... .unwrapSnd() | | main.rs:1206:5:1207:14 | S3 | +| main.rs:1223:18:1223:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1223:18:1223:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1223:18:1223:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1223:18:1223:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1223:26:1223:26 | x | | main.rs:1206:5:1207:14 | S3 | +| main.rs:1238:22:1238:25 | SelfParam | | main.rs:1236:5:1239:5 | Self [trait TraitWithAssocType] | +| main.rs:1246:22:1246:25 | SelfParam | | main.rs:1234:5:1234:28 | GenS | +| main.rs:1246:22:1246:25 | SelfParam | GenT | main.rs:1241:10:1241:15 | Output | +| main.rs:1246:44:1248:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1246:44:1248:9 | { ... } | E | main.rs:1241:10:1241:15 | Output | +| main.rs:1246:44:1248:9 | { ... } | T | main.rs:1241:10:1241:15 | Output | +| main.rs:1247:13:1247:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1247:13:1247:22 | Ok(...) | E | main.rs:1241:10:1241:15 | Output | +| main.rs:1247:13:1247:22 | Ok(...) | T | main.rs:1241:10:1241:15 | Output | +| main.rs:1247:16:1247:19 | self | | main.rs:1234:5:1234:28 | GenS | +| main.rs:1247:16:1247:19 | self | GenT | main.rs:1241:10:1241:15 | Output | +| main.rs:1247:16:1247:21 | self.0 | | main.rs:1241:10:1241:15 | Output | +| main.rs:1253:13:1253:14 | p1 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1253:13:1253:14 | p1 | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1253:13:1253:14 | p1 | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1253:26:1253:53 | ...::PairBoth(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1253:26:1253:53 | ...::PairBoth(...) | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1253:26:1253:53 | ...::PairBoth(...) | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1253:47:1253:48 | S1 | | main.rs:1200:5:1201:14 | S1 | +| main.rs:1253:51:1253:52 | S2 | | main.rs:1203:5:1204:14 | S2 | +| main.rs:1254:18:1254:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1254:18:1254:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1254:18:1254:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1254:18:1254:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1254:26:1254:27 | p1 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1254:26:1254:27 | p1 | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1254:26:1254:27 | p1 | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1257:13:1257:14 | p2 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1257:13:1257:14 | p2 | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1257:13:1257:14 | p2 | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1257:26:1257:47 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1257:26:1257:47 | ...::PairNone(...) | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1257:26:1257:47 | ...::PairNone(...) | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1258:18:1258:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1258:18:1258:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1258:18:1258:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1258:18:1258:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1258:26:1258:27 | p2 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1258:26:1258:27 | p2 | Fst | main.rs:1200:5:1201:14 | S1 | +| main.rs:1258:26:1258:27 | p2 | Snd | main.rs:1203:5:1204:14 | S2 | +| main.rs:1261:13:1261:14 | p3 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1261:13:1261:14 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1261:13:1261:14 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1261:34:1261:56 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1261:34:1261:56 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1261:34:1261:56 | ...::PairSnd(...) | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1261:54:1261:55 | S3 | | main.rs:1206:5:1207:14 | S3 | +| main.rs:1262:18:1262:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1262:18:1262:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1262:18:1262:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1262:18:1262:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1262:26:1262:27 | p3 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1262:26:1262:27 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1262:26:1262:27 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1265:13:1265:14 | p3 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1265:13:1265:14 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1265:13:1265:14 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1265:35:1265:56 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1265:35:1265:56 | ...::PairNone(...) | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1265:35:1265:56 | ...::PairNone(...) | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1266:18:1266:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1266:18:1266:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1266:18:1266:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1266:18:1266:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1266:26:1266:27 | p3 | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1266:26:1266:27 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1266:26:1266:27 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1268:11:1268:54 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1268:31:1268:53 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | +| main.rs:1268:31:1268:53 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | +| main.rs:1268:31:1268:53 | ...::PairSnd(...) | Snd | main.rs:1206:5:1207:14 | S3 | +| main.rs:1268:51:1268:52 | S3 | | main.rs:1206:5:1207:14 | S3 | +| main.rs:1270:13:1270:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1270:13:1270:13 | x | E | main.rs:1200:5:1201:14 | S1 | +| main.rs:1270:13:1270:13 | x | T | main.rs:1226:5:1226:34 | S4 | +| main.rs:1270:13:1270:13 | x | T.T41 | main.rs:1203:5:1204:14 | S2 | +| main.rs:1270:13:1270:13 | x | T.T42 | main.rs:1228:5:1228:22 | S5 | +| main.rs:1270:13:1270:13 | x | T.T42.T5 | main.rs:1203:5:1204:14 | S2 | +| main.rs:1272:13:1272:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1272:13:1272:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1272:13:1272:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1272:17:1272:26 | GenS(...) | | main.rs:1234:5:1234:28 | GenS | +| main.rs:1272:17:1272:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1272:17:1272:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1272:17:1272:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1272:17:1272:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1272:22:1272:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1285:16:1285:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1285:16:1285:24 | SelfParam | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | +| main.rs:1285:27:1285:31 | value | | main.rs:1283:19:1283:19 | S | +| main.rs:1287:21:1287:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1287:21:1287:29 | SelfParam | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | +| main.rs:1287:32:1287:36 | value | | main.rs:1283:19:1283:19 | S | +| main.rs:1288:13:1288:16 | self | | file://:0:0:0:0 | & | +| main.rs:1288:13:1288:16 | self | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | +| main.rs:1288:22:1288:26 | value | | main.rs:1283:19:1283:19 | S | +| main.rs:1294:16:1294:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1294:16:1294:24 | SelfParam | &T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1294:16:1294:24 | SelfParam | &T.T | main.rs:1292:10:1292:10 | T | +| main.rs:1294:27:1294:31 | value | | main.rs:1292:10:1292:10 | T | +| main.rs:1298:26:1300:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1298:26:1300:9 | { ... } | T | main.rs:1297:10:1297:10 | T | +| main.rs:1299:13:1299:30 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1299:13:1299:30 | ...::MyNone(...) | T | main.rs:1297:10:1297:10 | T | +| main.rs:1304:20:1304:23 | SelfParam | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1304:20:1304:23 | SelfParam | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1304:20:1304:23 | SelfParam | T.T | main.rs:1303:10:1303:10 | T | +| main.rs:1304:41:1309:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1304:41:1309:9 | { ... } | T | main.rs:1303:10:1303:10 | T | +| main.rs:1305:13:1308:13 | match self { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1305:13:1308:13 | match self { ... } | T | main.rs:1303:10:1303:10 | T | +| main.rs:1305:19:1305:22 | self | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1305:19:1305:22 | self | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1305:19:1305:22 | self | T.T | main.rs:1303:10:1303:10 | T | +| main.rs:1306:17:1306:34 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1306:17:1306:34 | ...::MyNone(...) | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1306:17:1306:34 | ...::MyNone(...) | T.T | main.rs:1303:10:1303:10 | T | +| main.rs:1306:39:1306:56 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1306:39:1306:56 | ...::MyNone(...) | T | main.rs:1303:10:1303:10 | T | +| main.rs:1307:17:1307:35 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1307:17:1307:35 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1307:17:1307:35 | ...::MySome(...) | T.T | main.rs:1303:10:1303:10 | T | +| main.rs:1307:34:1307:34 | x | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1307:34:1307:34 | x | T | main.rs:1303:10:1303:10 | T | +| main.rs:1307:40:1307:40 | x | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1307:40:1307:40 | x | T | main.rs:1303:10:1303:10 | T | +| main.rs:1316:13:1316:14 | x1 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1316:13:1316:14 | x1 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1316:18:1316:37 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1316:18:1316:37 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1317:18:1317:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1317:18:1317:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1317:18:1317:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1317:18:1317:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1317:26:1317:27 | x1 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1317:26:1317:27 | x1 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1319:17:1319:18 | x2 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1319:17:1319:18 | x2 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1319:22:1319:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1319:22:1319:36 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1320:9:1320:10 | x2 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1320:9:1320:10 | x2 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1320:16:1320:16 | S | | main.rs:1312:5:1313:13 | S | +| main.rs:1321:18:1321:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1321:18:1321:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1321:18:1321:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1321:18:1321:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1321:26:1321:27 | x2 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1321:26:1321:27 | x2 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1324:17:1324:18 | x3 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1324:22:1324:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1325:9:1325:10 | x3 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1325:21:1325:21 | S | | main.rs:1312:5:1313:13 | S | +| main.rs:1326:18:1326:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1326:18:1326:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1326:18:1326:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1326:18:1326:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1326:26:1326:27 | x3 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1328:17:1328:18 | x4 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1328:17:1328:18 | x4 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1328:22:1328:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1328:22:1328:36 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1329:23:1329:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1329:23:1329:29 | &mut x4 | &T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1329:23:1329:29 | &mut x4 | &T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1329:28:1329:29 | x4 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1329:28:1329:29 | x4 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1329:32:1329:32 | S | | main.rs:1312:5:1313:13 | S | +| main.rs:1330:18:1330:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1330:18:1330:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1330:18:1330:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1330:18:1330:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1330:26:1330:27 | x4 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1330:26:1330:27 | x4 | T | main.rs:1312:5:1313:13 | S | +| main.rs:1332:13:1332:14 | x5 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1332:13:1332:14 | x5 | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1332:13:1332:14 | x5 | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1332:18:1332:58 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1332:18:1332:58 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1332:18:1332:58 | ...::MySome(...) | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1332:35:1332:57 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1332:35:1332:57 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1333:18:1333:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1333:18:1333:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1333:18:1333:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1333:18:1333:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1333:26:1333:27 | x5 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1333:26:1333:27 | x5 | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1333:26:1333:27 | x5 | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1333:26:1333:37 | x5.flatten() | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1333:26:1333:37 | x5.flatten() | T | main.rs:1312:5:1313:13 | S | +| main.rs:1335:13:1335:14 | x6 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1335:13:1335:14 | x6 | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1335:13:1335:14 | x6 | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1335:18:1335:58 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1335:18:1335:58 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1335:18:1335:58 | ...::MySome(...) | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1335:35:1335:57 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1335:35:1335:57 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1336:18:1336:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1336:18:1336:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1336:26:1336:61 | ...::flatten(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1336:26:1336:61 | ...::flatten(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1336:59:1336:60 | x6 | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1336:59:1336:60 | x6 | T | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1336:59:1336:60 | x6 | T.T | main.rs:1312:5:1313:13 | S | +| main.rs:1339:13:1339:19 | from_if | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1339:13:1339:19 | from_if | T | main.rs:1312:5:1313:13 | S | +| main.rs:1339:23:1343:9 | if ... {...} else {...} | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1339:23:1343:9 | if ... {...} else {...} | T | main.rs:1312:5:1313:13 | S | +| main.rs:1339:26:1339:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1339:26:1339:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1339:30:1339:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1339:32:1341:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1339:32:1341:9 | { ... } | T | main.rs:1312:5:1313:13 | S | +| main.rs:1340:13:1340:30 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1340:13:1340:30 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1341:16:1343:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1341:16:1343:9 | { ... } | T | main.rs:1312:5:1313:13 | S | +| main.rs:1342:13:1342:31 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1342:13:1342:31 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1342:30:1342:30 | S | | main.rs:1312:5:1313:13 | S | +| main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1344:18:1344:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1344:18:1344:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1344:26:1344:32 | from_if | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1344:26:1344:32 | from_if | T | main.rs:1312:5:1313:13 | S | +| main.rs:1347:13:1347:22 | from_match | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1347:13:1347:22 | from_match | T | main.rs:1312:5:1313:13 | S | +| main.rs:1347:26:1350:9 | match ... { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1347:26:1350:9 | match ... { ... } | T | main.rs:1312:5:1313:13 | S | +| main.rs:1347:32:1347:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1347:32:1347:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1347:36:1347:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1348:13:1348:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1348:21:1348:38 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1348:21:1348:38 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1349:13:1349:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1349:22:1349:40 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1349:22:1349:40 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1349:39:1349:39 | S | | main.rs:1312:5:1313:13 | S | | main.rs:1351:18:1351:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1351:18:1351:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1351:18:1351:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1351:18:1351:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1351:26:1351:27 | x2 | | main.rs:1301:5:1302:19 | S | -| main.rs:1351:26:1351:27 | x2 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1351:26:1351:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1351:26:1351:32 | x2.m3() | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1353:13:1353:14 | x3 | | main.rs:1301:5:1302:19 | S | -| main.rs:1353:13:1353:14 | x3 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1353:18:1353:22 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1353:18:1353:22 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1353:20:1353:21 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1355:18:1355:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1355:18:1355:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1355:18:1355:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1355:18:1355:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1355:26:1355:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1355:26:1355:41 | ...::m2(...) | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1355:38:1355:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1355:38:1355:40 | &x3 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1355:38:1355:40 | &x3 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1355:39:1355:40 | x3 | | main.rs:1301:5:1302:19 | S | -| main.rs:1355:39:1355:40 | x3 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1356:18:1356:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1356:18:1356:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1356:18:1356:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1356:18:1356:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1356:26:1356:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1356:26:1356:41 | ...::m3(...) | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1356:38:1356:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1356:38:1356:40 | &x3 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1356:38:1356:40 | &x3 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1356:39:1356:40 | x3 | | main.rs:1301:5:1302:19 | S | -| main.rs:1356:39:1356:40 | x3 | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1358:13:1358:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1358:13:1358:14 | x4 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1358:13:1358:14 | x4 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1358:18:1358:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1358:18:1358:23 | &... | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1358:18:1358:23 | &... | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1358:19:1358:23 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1358:19:1358:23 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1358:21:1358:22 | S2 | | main.rs:1304:5:1305:14 | S2 | +| main.rs:1351:18:1351:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1351:18:1351:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1351:26:1351:35 | from_match | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1351:26:1351:35 | from_match | T | main.rs:1312:5:1313:13 | S | +| main.rs:1354:13:1354:21 | from_loop | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1354:13:1354:21 | from_loop | T | main.rs:1312:5:1313:13 | S | +| main.rs:1354:25:1359:9 | loop { ... } | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1354:25:1359:9 | loop { ... } | T | main.rs:1312:5:1313:13 | S | +| main.rs:1355:16:1355:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1355:16:1355:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1355:20:1355:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1356:23:1356:40 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1356:23:1356:40 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1358:19:1358:37 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1358:19:1358:37 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | +| main.rs:1358:36:1358:36 | S | | main.rs:1312:5:1313:13 | S | | main.rs:1360:18:1360:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1360:18:1360:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1360:18:1360:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1360:18:1360:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1360:26:1360:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1360:26:1360:27 | x4 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1360:26:1360:27 | x4 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1360:26:1360:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1360:26:1360:32 | x4.m2() | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1361:18:1361:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1361:18:1361:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1361:18:1361:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1361:18:1361:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1361:26:1361:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1361:26:1361:27 | x4 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1361:26:1361:27 | x4 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1361:26:1361:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1361:26:1361:32 | x4.m3() | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1363:13:1363:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1363:13:1363:14 | x5 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1363:13:1363:14 | x5 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1363:18:1363:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1363:18:1363:23 | &... | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1363:18:1363:23 | &... | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1363:19:1363:23 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1363:19:1363:23 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1363:21:1363:22 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1365:18:1365:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1365:18:1365:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1365:18:1365:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1365:18:1365:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1365:26:1365:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1365:26:1365:27 | x5 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1365:26:1365:27 | x5 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1365:26:1365:32 | x5.m1() | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1366:18:1366:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1366:18:1366:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1366:26:1366:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1366:26:1366:27 | x5 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1366:26:1366:27 | x5 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1366:26:1366:29 | x5.0 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1368:13:1368:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1368:13:1368:14 | x6 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1368:13:1368:14 | x6 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1368:18:1368:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1368:18:1368:23 | &... | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1368:18:1368:23 | &... | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1368:19:1368:23 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1368:19:1368:23 | S(...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1368:21:1368:22 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1371:18:1371:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1371:18:1371:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1371:18:1371:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1371:18:1371:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1371:26:1371:30 | (...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1371:26:1371:30 | (...) | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1371:26:1371:35 | ... .m1() | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1371:27:1371:29 | * ... | | main.rs:1301:5:1302:19 | S | -| main.rs:1371:27:1371:29 | * ... | T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1371:28:1371:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1371:28:1371:29 | x6 | &T | main.rs:1301:5:1302:19 | S | -| main.rs:1371:28:1371:29 | x6 | &T.T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1373:13:1373:14 | x7 | | main.rs:1301:5:1302:19 | S | -| main.rs:1373:13:1373:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1373:13:1373:14 | x7 | T.&T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1373:18:1373:23 | S(...) | | main.rs:1301:5:1302:19 | S | -| main.rs:1373:18:1373:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1373:18:1373:23 | S(...) | T.&T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1373:20:1373:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1373:20:1373:22 | &S2 | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1373:21:1373:22 | S2 | | main.rs:1304:5:1305:14 | S2 | -| main.rs:1376:13:1376:13 | t | | file://:0:0:0:0 | & | -| main.rs:1376:13:1376:13 | t | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1376:17:1376:18 | x7 | | main.rs:1301:5:1302:19 | S | -| main.rs:1376:17:1376:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1376:17:1376:18 | x7 | T.&T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1376:17:1376:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1376:17:1376:23 | x7.m1() | &T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1377:18:1377:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1377:18:1377:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1377:18:1377:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1377:18:1377:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1377:26:1377:27 | x7 | | main.rs:1301:5:1302:19 | S | -| main.rs:1377:26:1377:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1377:26:1377:27 | x7 | T.&T | main.rs:1304:5:1305:14 | S2 | -| main.rs:1379:13:1379:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1379:26:1379:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1379:26:1379:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1379:26:1379:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1383:13:1383:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1383:13:1383:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1383:17:1383:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1383:17:1383:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1383:17:1383:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1385:13:1385:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1385:13:1385:20 | my_thing | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1385:24:1385:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1385:24:1385:39 | &... | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1385:25:1385:39 | MyInt {...} | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1385:36:1385:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1385:36:1385:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1387:17:1387:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1387:17:1387:24 | my_thing | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1388:18:1388:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1388:18:1388:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1388:18:1388:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1388:18:1388:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1391:13:1391:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1391:13:1391:20 | my_thing | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1391:24:1391:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1391:24:1391:39 | &... | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1391:25:1391:39 | MyInt {...} | | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1391:36:1391:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1391:36:1391:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1392:17:1392:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1392:17:1392:24 | my_thing | &T | main.rs:1307:5:1310:5 | MyInt | -| main.rs:1393:18:1393:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1393:18:1393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1393:18:1393:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1393:18:1393:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1400:16:1400:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1400:16:1400:20 | SelfParam | &T | main.rs:1398:5:1406:5 | Self [trait MyTrait] | -| main.rs:1403:16:1403:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1403:16:1403:20 | SelfParam | &T | main.rs:1398:5:1406:5 | Self [trait MyTrait] | -| main.rs:1403:32:1405:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1403:32:1405:9 | { ... } | &T | main.rs:1398:5:1406:5 | Self [trait MyTrait] | -| main.rs:1404:13:1404:16 | self | | file://:0:0:0:0 | & | -| main.rs:1404:13:1404:16 | self | &T | main.rs:1398:5:1406:5 | Self [trait MyTrait] | -| main.rs:1404:13:1404:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1404:13:1404:22 | self.foo() | &T | main.rs:1398:5:1406:5 | Self [trait MyTrait] | -| main.rs:1412:16:1412:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1412:16:1412:20 | SelfParam | &T | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1412:36:1414:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1412:36:1414:9 | { ... } | &T | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1413:13:1413:16 | self | | file://:0:0:0:0 | & | -| main.rs:1413:13:1413:16 | self | &T | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1418:13:1418:13 | x | | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1418:17:1418:24 | MyStruct | | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1419:9:1419:9 | x | | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1419:9:1419:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1419:9:1419:15 | x.bar() | &T | main.rs:1408:5:1408:20 | MyStruct | -| main.rs:1429:16:1429:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1429:16:1429:20 | SelfParam | &T | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1429:16:1429:20 | SelfParam | &T.T | main.rs:1428:10:1428:10 | T | -| main.rs:1429:32:1431:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1429:32:1431:9 | { ... } | &T | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1429:32:1431:9 | { ... } | &T.T | main.rs:1428:10:1428:10 | T | -| main.rs:1430:13:1430:16 | self | | file://:0:0:0:0 | & | -| main.rs:1430:13:1430:16 | self | &T | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1430:13:1430:16 | self | &T.T | main.rs:1428:10:1428:10 | T | -| main.rs:1435:13:1435:13 | x | | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1435:13:1435:13 | x | T | main.rs:1424:5:1424:13 | S | -| main.rs:1435:17:1435:27 | MyStruct(...) | | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1435:17:1435:27 | MyStruct(...) | T | main.rs:1424:5:1424:13 | S | -| main.rs:1435:26:1435:26 | S | | main.rs:1424:5:1424:13 | S | -| main.rs:1436:9:1436:9 | x | | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1436:9:1436:9 | x | T | main.rs:1424:5:1424:13 | S | -| main.rs:1436:9:1436:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1436:9:1436:15 | x.foo() | &T | main.rs:1426:5:1426:26 | MyStruct | -| main.rs:1436:9:1436:15 | x.foo() | &T.T | main.rs:1424:5:1424:13 | S | -| main.rs:1447:17:1447:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1447:17:1447:25 | SelfParam | &T | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1448:13:1448:16 | self | | file://:0:0:0:0 | & | -| main.rs:1448:13:1448:16 | self | &T | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1448:13:1448:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1448:13:1448:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1448:25:1448:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1448:26:1448:29 | self | | file://:0:0:0:0 | & | -| main.rs:1448:26:1448:29 | self | &T | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1448:26:1448:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1455:15:1455:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1455:15:1455:19 | SelfParam | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1455:31:1457:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1455:31:1457:9 | { ... } | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1456:13:1456:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:19 | &... | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1456:13:1456:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:19 | &... | &T.&T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1456:14:1456:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1456:14:1456:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1456:14:1456:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1456:14:1456:19 | &... | &T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1456:15:1456:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1456:15:1456:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1456:15:1456:19 | &self | &T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1456:16:1456:19 | self | | file://:0:0:0:0 | & | -| main.rs:1456:16:1456:19 | self | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1459:15:1459:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1459:15:1459:25 | SelfParam | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1459:37:1461:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1459:37:1461:9 | { ... } | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1460:13:1460:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1460:13:1460:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1460:13:1460:19 | &... | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1460:13:1460:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1460:13:1460:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1460:13:1460:19 | &... | &T.&T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1460:14:1460:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1460:14:1460:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1460:14:1460:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1460:14:1460:19 | &... | &T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1460:15:1460:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1460:15:1460:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1460:15:1460:19 | &self | &T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1460:16:1460:19 | self | | file://:0:0:0:0 | & | -| main.rs:1460:16:1460:19 | self | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1463:15:1463:15 | x | | file://:0:0:0:0 | & | -| main.rs:1463:15:1463:15 | x | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1463:34:1465:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1463:34:1465:9 | { ... } | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1464:13:1464:13 | x | | file://:0:0:0:0 | & | -| main.rs:1464:13:1464:13 | x | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1467:15:1467:15 | x | | file://:0:0:0:0 | & | -| main.rs:1467:15:1467:15 | x | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1467:34:1469:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1467:34:1469:9 | { ... } | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1468:13:1468:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:16 | &... | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1468:13:1468:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:16 | &... | &T.&T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1468:14:1468:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1468:14:1468:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1468:14:1468:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1468:14:1468:16 | &... | &T.&T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1468:15:1468:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1468:15:1468:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1468:15:1468:16 | &x | &T.&T | main.rs:1452:5:1452:13 | S | -| main.rs:1468:16:1468:16 | x | | file://:0:0:0:0 | & | -| main.rs:1468:16:1468:16 | x | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1473:13:1473:13 | x | | main.rs:1452:5:1452:13 | S | -| main.rs:1473:17:1473:20 | S {...} | | main.rs:1452:5:1452:13 | S | -| main.rs:1474:9:1474:9 | x | | main.rs:1452:5:1452:13 | S | -| main.rs:1474:9:1474:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1474:9:1474:14 | x.f1() | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1475:9:1475:9 | x | | main.rs:1452:5:1452:13 | S | -| main.rs:1475:9:1475:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1475:9:1475:14 | x.f2() | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1476:9:1476:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1476:9:1476:17 | ...::f3(...) | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1476:15:1476:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1476:15:1476:16 | &x | &T | main.rs:1452:5:1452:13 | S | -| main.rs:1476:16:1476:16 | x | | main.rs:1452:5:1452:13 | S | -| main.rs:1478:13:1478:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1478:17:1478:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1478:18:1478:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1478:18:1478:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1478:18:1478:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1478:19:1478:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1478:19:1478:24 | &... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1478:19:1478:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1478:19:1478:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1478:20:1478:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1478:20:1478:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1478:21:1478:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1482:17:1482:20 | flag | | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1482:24:1482:41 | ...::default(...) | | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1483:22:1483:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1483:22:1483:30 | &mut flag | &T | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1483:27:1483:30 | flag | | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1484:18:1484:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1484:18:1484:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1484:18:1484:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1484:18:1484:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1484:26:1484:29 | flag | | main.rs:1441:5:1444:5 | MyFlag | -| main.rs:1499:43:1502:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1499:43:1502:5 | { ... } | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1499:43:1502:5 | { ... } | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1500:13:1500:13 | x | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1500:17:1500:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1500:17:1500:30 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1500:17:1500:31 | TryExpr | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1500:28:1500:29 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1501:9:1501:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1501:9:1501:22 | ...::Ok(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1501:9:1501:22 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1501:20:1501:21 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1506:46:1510:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1506:46:1510:5 | { ... } | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1506:46:1510:5 | { ... } | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1507:13:1507:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1507:13:1507:13 | x | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1507:17:1507:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1507:17:1507:30 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1507:28:1507:29 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1508:13:1508:13 | y | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1508:17:1508:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1508:17:1508:17 | x | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1508:17:1508:18 | TryExpr | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1509:9:1509:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1509:9:1509:22 | ...::Ok(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1509:9:1509:22 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1509:20:1509:21 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1514:40:1519:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1514:40:1519:5 | { ... } | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1514:40:1519:5 | { ... } | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1515:13:1515:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1515:13:1515:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1515:13:1515:13 | x | T.T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1515:17:1515:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1515:17:1515:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1515:17:1515:42 | ...::Ok(...) | T.T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1515:28:1515:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1515:28:1515:41 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1515:39:1515:40 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1517:17:1517:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1517:17:1517:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1517:17:1517:17 | x | T.T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1517:17:1517:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1517:17:1517:18 | TryExpr | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1517:17:1517:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1517:24:1517:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1517:24:1517:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1518:9:1518:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1518:9:1518:22 | ...::Ok(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1518:9:1518:22 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1518:20:1518:21 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1523:30:1523:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1523:30:1523:34 | input | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1523:30:1523:34 | input | T | main.rs:1523:20:1523:27 | T | -| main.rs:1523:69:1530:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1523:69:1530:5 | { ... } | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1523:69:1530:5 | { ... } | T | main.rs:1523:20:1523:27 | T | -| main.rs:1524:13:1524:17 | value | | main.rs:1523:20:1523:27 | T | -| main.rs:1524:21:1524:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1524:21:1524:25 | input | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1524:21:1524:25 | input | T | main.rs:1523:20:1523:27 | T | -| main.rs:1524:21:1524:26 | TryExpr | | main.rs:1523:20:1523:27 | T | -| main.rs:1525:22:1525:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1525:22:1525:38 | ...::Ok(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1525:22:1525:38 | ...::Ok(...) | T | main.rs:1523:20:1523:27 | T | -| main.rs:1525:22:1528:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1525:22:1528:10 | ... .and_then(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1525:33:1525:37 | value | | main.rs:1523:20:1523:27 | T | -| main.rs:1525:49:1528:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1525:49:1528:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1525:49:1528:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1525:49:1528:9 | \|...\| ... | dyn(Output).E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1525:53:1528:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1525:53:1528:9 | { ... } | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1526:22:1526:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1526:22:1526:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1526:22:1526:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1526:22:1526:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1527:13:1527:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1527:13:1527:34 | ...::Ok::<...>(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1529:9:1529:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1529:9:1529:23 | ...::Err(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1529:9:1529:23 | ...::Err(...) | T | main.rs:1523:20:1523:27 | T | -| main.rs:1529:21:1529:22 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1534:16:1534:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1534:16:1534:33 | ...::Ok(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1534:16:1534:33 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1534:27:1534:32 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1534:37:1534:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1534:37:1534:52 | try_same_error(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1534:37:1534:52 | try_same_error(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1535:22:1535:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1535:22:1535:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1535:22:1535:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:22:1535:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:30:1535:35 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1538:16:1538:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1538:16:1538:33 | ...::Ok(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1538:16:1538:33 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1538:27:1538:32 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1538:37:1538:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1538:37:1538:55 | try_convert_error(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1538:37:1538:55 | try_convert_error(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1539:22:1539:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1539:22:1539:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1539:22:1539:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1539:22:1539:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1539:30:1539:35 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1542:16:1542:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1542:16:1542:33 | ...::Ok(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1542:16:1542:33 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1542:27:1542:32 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1542:37:1542:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1542:37:1542:49 | try_chained(...) | E | main.rs:1494:5:1495:14 | S2 | -| main.rs:1542:37:1542:49 | try_chained(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1543:22:1543:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1543:22:1543:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1543:22:1543:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1543:22:1543:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1543:30:1543:35 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:16:1546:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1546:16:1546:33 | ...::Ok(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:16:1546:33 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:27:1546:32 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:37:1546:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1546:37:1546:63 | try_complex(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:37:1546:63 | try_complex(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:49:1546:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1546:49:1546:62 | ...::Ok(...) | E | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:49:1546:62 | ...::Ok(...) | T | main.rs:1491:5:1492:14 | S1 | -| main.rs:1546:60:1546:61 | S1 | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1547:22:1547:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1547:22:1547:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1547:22:1547:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1547:22:1547:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1547:30:1547:35 | result | | main.rs:1491:5:1492:14 | S1 | -| main.rs:1554:13:1554:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1554:22:1554:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1555:13:1555:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1555:17:1555:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1556:13:1556:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1556:17:1556:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1556:17:1556:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1556:21:1556:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1557:13:1557:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1557:17:1557:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1557:17:1557:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1558:13:1558:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1558:17:1558:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1559:13:1559:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1559:13:1559:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1559:21:1559:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1559:21:1559:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1560:13:1560:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1560:17:1560:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1561:13:1561:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1561:17:1561:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1562:13:1562:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1562:17:1562:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1569:13:1569:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1569:17:1569:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1569:17:1569:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1569:25:1569:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1570:13:1570:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1570:17:1570:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1570:17:1570:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1570:25:1570:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1572:17:1572:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1573:13:1573:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1573:20:1573:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1573:20:1573:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1573:26:1573:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1574:12:1574:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1575:17:1575:17 | z | | file://:0:0:0:0 | () | -| main.rs:1575:21:1575:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1575:22:1575:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1575:22:1575:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1575:26:1575:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1577:13:1577:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1577:13:1577:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1577:17:1577:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1579:9:1579:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1593:30:1595:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1594:13:1594:31 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1594:23:1594:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1594:23:1594:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:29:1594:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1594:29:1594:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1601:16:1601:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1601:22:1601:24 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1601:41:1606:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1602:13:1605:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1603:20:1603:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1603:20:1603:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1603:20:1603:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1603:29:1603:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1603:29:1603:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:20:1604:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1604:20:1604:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:20:1604:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:29:1604:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1604:29:1604:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1611:23:1611:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1611:23:1611:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1611:34:1611:36 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1612:13:1612:16 | self | | file://:0:0:0:0 | & | -| main.rs:1612:13:1612:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1612:13:1612:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1612:13:1612:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1612:23:1612:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1612:23:1612:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1613:13:1613:16 | self | | file://:0:0:0:0 | & | -| main.rs:1613:13:1613:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1613:13:1613:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1613:13:1613:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1613:23:1613:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1613:23:1613:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1619:16:1619:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1619:22:1619:24 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1619:41:1624:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1620:13:1623:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1621:20:1621:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1621:20:1621:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1621:20:1621:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1621:29:1621:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1621:29:1621:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1622:20:1622:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1622:20:1622:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1622:20:1622:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1622:29:1622:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1622:29:1622:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1629:23:1629:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1629:23:1629:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1629:34:1629:36 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1630:13:1630:16 | self | | file://:0:0:0:0 | & | -| main.rs:1630:13:1630:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1630:13:1630:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1630:13:1630:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1630:23:1630:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1630:23:1630:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1631:13:1631:16 | self | | file://:0:0:0:0 | & | -| main.rs:1631:13:1631:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1631:13:1631:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1631:13:1631:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1631:23:1631:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1631:23:1631:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1637:16:1637:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1637:22:1637:24 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1637:41:1642:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1638:13:1641:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1639:20:1639:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1639:20:1639:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1639:20:1639:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1639:29:1639:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1639:29:1639:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1640:20:1640:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1640:20:1640:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1640:20:1640:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1640:29:1640:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1640:29:1640:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1646:23:1646:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1646:23:1646:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1646:34:1646:36 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1647:13:1647:16 | self | | file://:0:0:0:0 | & | -| main.rs:1647:13:1647:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1647:13:1647:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1647:13:1647:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1647:23:1647:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1647:23:1647:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1648:13:1648:16 | self | | file://:0:0:0:0 | & | -| main.rs:1648:13:1648:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1648:13:1648:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1648:13:1648:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1648:23:1648:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1648:23:1648:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1654:16:1654:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1654:22:1654:24 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1654:41:1659:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1655:13:1658:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1656:20:1656:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1656:20:1656:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1656:20:1656:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1656:29:1656:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1656:29:1656:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1657:20:1657:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1657:20:1657:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1657:20:1657:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1657:29:1657:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1657:29:1657:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1663:23:1663:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1663:23:1663:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1663:34:1663:36 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1664:13:1664:16 | self | | file://:0:0:0:0 | & | -| main.rs:1664:13:1664:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1664:13:1664:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1664:13:1664:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1664:23:1664:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1664:23:1664:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1665:13:1665:16 | self | | file://:0:0:0:0 | & | -| main.rs:1665:13:1665:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1665:13:1665:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1665:13:1665:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1665:23:1665:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1665:23:1665:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1671:16:1671:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1671:22:1671:24 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1671:41:1676:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1672:13:1675:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1673:20:1673:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1673:20:1673:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1673:20:1673:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1673:29:1673:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1673:29:1673:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1674:20:1674:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1674:20:1674:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1674:20:1674:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1674:29:1674:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1674:29:1674:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1680:23:1680:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1680:23:1680:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1680:34:1680:36 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1681:13:1681:16 | self | | file://:0:0:0:0 | & | -| main.rs:1681:13:1681:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1681:13:1681:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1681:13:1681:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1681:23:1681:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1681:23:1681:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1682:13:1682:16 | self | | file://:0:0:0:0 | & | -| main.rs:1682:13:1682:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1682:13:1682:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1682:13:1682:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1682:23:1682:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1682:23:1682:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1688:19:1688:22 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1688:25:1688:27 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1688:44:1693:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1689:13:1692:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1690:20:1690:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1690:20:1690:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1690:20:1690:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1690:29:1690:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1690:29:1690:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1691:20:1691:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1691:20:1691:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1691:20:1691:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1691:29:1691:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1691:29:1691:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1697:26:1697:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1697:26:1697:34 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1697:37:1697:39 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1698:13:1698:16 | self | | file://:0:0:0:0 | & | -| main.rs:1698:13:1698:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1698:13:1698:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1698:13:1698:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1698:23:1698:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1698:23:1698:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1699:13:1699:16 | self | | file://:0:0:0:0 | & | -| main.rs:1699:13:1699:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1699:13:1699:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1699:13:1699:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1699:23:1699:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1699:23:1699:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1705:18:1705:21 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1705:24:1705:26 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1705:43:1710:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1706:13:1709:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1707:20:1707:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1707:20:1707:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1707:20:1707:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1707:20:1707:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1707:20:1707:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1707:29:1707:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1707:29:1707:33 | rhs.x | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1707:29:1707:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1707:29:1707:33 | rhs.x | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1708:20:1708:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1708:20:1708:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1708:20:1708:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1708:20:1708:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1708:20:1708:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1708:29:1708:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1708:29:1708:33 | rhs.y | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1708:29:1708:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1708:29:1708:33 | rhs.y | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:25:1714:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1714:25:1714:33 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1714:36:1714:38 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1715:13:1715:16 | self | | file://:0:0:0:0 | & | -| main.rs:1715:13:1715:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1715:13:1715:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1715:13:1715:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1715:23:1715:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1715:23:1715:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1716:13:1716:16 | self | | file://:0:0:0:0 | & | -| main.rs:1716:13:1716:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1716:13:1716:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1716:13:1716:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1716:23:1716:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1716:23:1716:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:19:1722:22 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1722:25:1722:27 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1722:44:1727:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1723:13:1726:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1724:20:1724:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1724:20:1724:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1724:20:1724:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1724:29:1724:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1724:29:1724:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1725:20:1725:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1725:20:1725:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1725:20:1725:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1725:29:1725:31 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1725:29:1725:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1731:26:1731:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1731:26:1731:34 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1731:37:1731:39 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1732:13:1732:16 | self | | file://:0:0:0:0 | & | -| main.rs:1732:13:1732:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1732:13:1732:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1732:13:1732:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1732:23:1732:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1732:23:1732:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1733:13:1733:16 | self | | file://:0:0:0:0 | & | -| main.rs:1733:13:1733:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1733:13:1733:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1733:13:1733:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1733:23:1733:25 | rhs | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1733:23:1733:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:16:1739:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1739:22:1739:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1739:40:1744:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1740:13:1743:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1741:20:1741:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1741:20:1741:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:20:1741:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:30:1741:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1742:20:1742:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1742:20:1742:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:20:1742:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:30:1742:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1748:23:1748:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1748:23:1748:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1748:34:1748:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1749:13:1749:16 | self | | file://:0:0:0:0 | & | -| main.rs:1749:13:1749:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1749:13:1749:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:13:1749:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1749:24:1749:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1750:13:1750:16 | self | | file://:0:0:0:0 | & | -| main.rs:1750:13:1750:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1750:13:1750:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:13:1750:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1750:24:1750:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1756:16:1756:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1756:22:1756:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1756:40:1761:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1757:13:1760:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1758:20:1758:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1758:20:1758:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:20:1758:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:30:1758:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1759:20:1759:23 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1759:20:1759:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1759:20:1759:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1759:30:1759:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1765:23:1765:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1765:23:1765:31 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1765:34:1765:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1766:13:1766:16 | self | | file://:0:0:0:0 | & | -| main.rs:1766:13:1766:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1766:13:1766:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:13:1766:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1766:24:1766:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1767:13:1767:16 | self | | file://:0:0:0:0 | & | -| main.rs:1767:13:1767:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1767:13:1767:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:13:1767:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1767:24:1767:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1773:16:1773:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1773:30:1778:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1774:13:1777:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1775:20:1775:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1775:21:1775:24 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1775:21:1775:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1776:20:1776:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1776:21:1776:24 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1776:21:1776:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:16:1783:19 | SelfParam | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1783:30:1788:9 | { ... } | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1784:13:1787:13 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1785:20:1785:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1785:21:1785:24 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1785:21:1785:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:20:1786:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:21:1786:24 | self | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1786:21:1786:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:15:1792:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1792:15:1792:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1792:22:1792:26 | other | | file://:0:0:0:0 | & | -| main.rs:1792:22:1792:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1792:44:1794:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1793:13:1793:16 | self | | file://:0:0:0:0 | & | -| main.rs:1793:13:1793:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1793:13:1793:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:13:1793:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1793:13:1793:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1793:23:1793:27 | other | | file://:0:0:0:0 | & | -| main.rs:1793:23:1793:27 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1793:23:1793:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:34:1793:37 | self | | file://:0:0:0:0 | & | -| main.rs:1793:34:1793:37 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1793:34:1793:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:34:1793:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1793:44:1793:48 | other | | file://:0:0:0:0 | & | -| main.rs:1793:44:1793:48 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1793:44:1793:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1796:15:1796:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1796:15:1796:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1796:22:1796:26 | other | | file://:0:0:0:0 | & | -| main.rs:1796:22:1796:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1796:44:1798:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1360:18:1360:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1360:18:1360:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1360:26:1360:34 | from_loop | | main.rs:1277:5:1281:5 | MyOption | +| main.rs:1360:26:1360:34 | from_loop | T | main.rs:1312:5:1313:13 | S | +| main.rs:1378:15:1378:18 | SelfParam | | main.rs:1366:5:1367:19 | S | +| main.rs:1378:15:1378:18 | SelfParam | T | main.rs:1377:10:1377:10 | T | +| main.rs:1378:26:1380:9 | { ... } | | main.rs:1377:10:1377:10 | T | +| main.rs:1379:13:1379:16 | self | | main.rs:1366:5:1367:19 | S | +| main.rs:1379:13:1379:16 | self | T | main.rs:1377:10:1377:10 | T | +| main.rs:1379:13:1379:18 | self.0 | | main.rs:1377:10:1377:10 | T | +| main.rs:1382:15:1382:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1382:15:1382:19 | SelfParam | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1382:15:1382:19 | SelfParam | &T.T | main.rs:1377:10:1377:10 | T | +| main.rs:1382:28:1384:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1382:28:1384:9 | { ... } | &T | main.rs:1377:10:1377:10 | T | +| main.rs:1383:13:1383:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1383:13:1383:19 | &... | &T | main.rs:1377:10:1377:10 | T | +| main.rs:1383:14:1383:17 | self | | file://:0:0:0:0 | & | +| main.rs:1383:14:1383:17 | self | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1383:14:1383:17 | self | &T.T | main.rs:1377:10:1377:10 | T | +| main.rs:1383:14:1383:19 | self.0 | | main.rs:1377:10:1377:10 | T | +| main.rs:1386:15:1386:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1386:15:1386:25 | SelfParam | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1386:15:1386:25 | SelfParam | &T.T | main.rs:1377:10:1377:10 | T | +| main.rs:1386:34:1388:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1386:34:1388:9 | { ... } | &T | main.rs:1377:10:1377:10 | T | +| main.rs:1387:13:1387:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1387:13:1387:19 | &... | &T | main.rs:1377:10:1377:10 | T | +| main.rs:1387:14:1387:17 | self | | file://:0:0:0:0 | & | +| main.rs:1387:14:1387:17 | self | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1387:14:1387:17 | self | &T.T | main.rs:1377:10:1377:10 | T | +| main.rs:1387:14:1387:19 | self.0 | | main.rs:1377:10:1377:10 | T | +| main.rs:1392:29:1392:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1392:29:1392:33 | SelfParam | &T | main.rs:1391:5:1394:5 | Self [trait ATrait] | +| main.rs:1393:33:1393:36 | SelfParam | | main.rs:1391:5:1394:5 | Self [trait ATrait] | +| main.rs:1399:29:1399:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1399:29:1399:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1399:29:1399:33 | SelfParam | &T.&T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1399:43:1401:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1400:13:1400:22 | (...) | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:13:1400:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1400:14:1400:21 | * ... | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:15:1400:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1400:15:1400:21 | (...) | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:15:1400:21 | (...) | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:16:1400:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1400:16:1400:20 | * ... | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:16:1400:20 | * ... | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1400:17:1400:20 | self | | file://:0:0:0:0 | & | +| main.rs:1400:17:1400:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1400:17:1400:20 | self | &T.&T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1404:33:1404:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1404:33:1404:36 | SelfParam | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1404:46:1406:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:13:1405:19 | (...) | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1405:13:1405:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:14:1405:18 | * ... | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1405:15:1405:18 | self | | file://:0:0:0:0 | & | +| main.rs:1405:15:1405:18 | self | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1410:13:1410:14 | x1 | | main.rs:1366:5:1367:19 | S | +| main.rs:1410:13:1410:14 | x1 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1410:18:1410:22 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1410:18:1410:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1410:20:1410:21 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1411:18:1411:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1411:18:1411:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1411:18:1411:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1411:18:1411:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1411:26:1411:27 | x1 | | main.rs:1366:5:1367:19 | S | +| main.rs:1411:26:1411:27 | x1 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1411:26:1411:32 | x1.m1() | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1413:13:1413:14 | x2 | | main.rs:1366:5:1367:19 | S | +| main.rs:1413:13:1413:14 | x2 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1413:18:1413:22 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1413:18:1413:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1413:20:1413:21 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1415:18:1415:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1415:18:1415:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1415:26:1415:27 | x2 | | main.rs:1366:5:1367:19 | S | +| main.rs:1415:26:1415:27 | x2 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1415:26:1415:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1415:26:1415:32 | x2.m2() | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1416:18:1416:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1416:18:1416:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1416:18:1416:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1416:18:1416:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1416:26:1416:27 | x2 | | main.rs:1366:5:1367:19 | S | +| main.rs:1416:26:1416:27 | x2 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1416:26:1416:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1416:26:1416:32 | x2.m3() | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1418:13:1418:14 | x3 | | main.rs:1366:5:1367:19 | S | +| main.rs:1418:13:1418:14 | x3 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1418:18:1418:22 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1418:18:1418:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1418:20:1418:21 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1420:18:1420:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1420:18:1420:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1420:18:1420:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1420:18:1420:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1420:26:1420:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1420:26:1420:41 | ...::m2(...) | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1420:38:1420:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1420:38:1420:40 | &x3 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1420:38:1420:40 | &x3 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1420:39:1420:40 | x3 | | main.rs:1366:5:1367:19 | S | +| main.rs:1420:39:1420:40 | x3 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1421:18:1421:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1421:18:1421:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1421:18:1421:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1421:26:1421:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1421:26:1421:41 | ...::m3(...) | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1421:38:1421:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1421:38:1421:40 | &x3 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1421:38:1421:40 | &x3 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1421:39:1421:40 | x3 | | main.rs:1366:5:1367:19 | S | +| main.rs:1421:39:1421:40 | x3 | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1423:13:1423:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1423:13:1423:14 | x4 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1423:13:1423:14 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1423:18:1423:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1423:18:1423:23 | &... | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1423:18:1423:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1423:19:1423:23 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1423:19:1423:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1423:21:1423:22 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1425:18:1425:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1425:18:1425:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1425:18:1425:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1425:26:1425:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1425:26:1425:27 | x4 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1425:26:1425:27 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1425:26:1425:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1425:26:1425:32 | x4.m2() | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1426:26:1426:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1426:26:1426:27 | x4 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1426:26:1426:27 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1426:26:1426:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1426:26:1426:32 | x4.m3() | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1428:13:1428:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1428:13:1428:14 | x5 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1428:13:1428:14 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1428:18:1428:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1428:18:1428:23 | &... | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1428:18:1428:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1428:19:1428:23 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1428:19:1428:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1428:21:1428:22 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1430:18:1430:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1430:18:1430:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1430:18:1430:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1430:26:1430:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1430:26:1430:27 | x5 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1430:26:1430:27 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1430:26:1430:32 | x5.m1() | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1431:18:1431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1431:18:1431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1431:18:1431:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1431:18:1431:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1431:26:1431:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1431:26:1431:27 | x5 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1431:26:1431:27 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1431:26:1431:29 | x5.0 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1433:13:1433:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1433:13:1433:14 | x6 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1433:13:1433:14 | x6 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1433:18:1433:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1433:18:1433:23 | &... | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1433:18:1433:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1433:19:1433:23 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1433:19:1433:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1433:21:1433:22 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1436:18:1436:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1436:18:1436:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1436:18:1436:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1436:18:1436:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1436:26:1436:30 | (...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1436:26:1436:30 | (...) | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1436:26:1436:35 | ... .m1() | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1436:27:1436:29 | * ... | | main.rs:1366:5:1367:19 | S | +| main.rs:1436:27:1436:29 | * ... | T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1436:28:1436:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1436:28:1436:29 | x6 | &T | main.rs:1366:5:1367:19 | S | +| main.rs:1436:28:1436:29 | x6 | &T.T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1438:13:1438:14 | x7 | | main.rs:1366:5:1367:19 | S | +| main.rs:1438:13:1438:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1438:13:1438:14 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1438:18:1438:23 | S(...) | | main.rs:1366:5:1367:19 | S | +| main.rs:1438:18:1438:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1438:18:1438:23 | S(...) | T.&T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1438:20:1438:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1438:20:1438:22 | &S2 | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1438:21:1438:22 | S2 | | main.rs:1369:5:1370:14 | S2 | +| main.rs:1441:13:1441:13 | t | | file://:0:0:0:0 | & | +| main.rs:1441:13:1441:13 | t | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1441:17:1441:18 | x7 | | main.rs:1366:5:1367:19 | S | +| main.rs:1441:17:1441:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1441:17:1441:18 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1441:17:1441:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1441:17:1441:23 | x7.m1() | &T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1442:18:1442:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1442:18:1442:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1442:26:1442:27 | x7 | | main.rs:1366:5:1367:19 | S | +| main.rs:1442:26:1442:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1442:26:1442:27 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | +| main.rs:1444:13:1444:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1444:26:1444:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1444:26:1444:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1444:26:1444:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1448:13:1448:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1448:13:1448:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1448:17:1448:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1448:17:1448:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1448:17:1448:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1450:13:1450:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1450:13:1450:20 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1450:24:1450:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1450:24:1450:39 | &... | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1450:25:1450:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1452:17:1452:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1452:17:1452:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1453:18:1453:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1453:18:1453:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1453:18:1453:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1453:18:1453:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1456:13:1456:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1456:13:1456:20 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1456:24:1456:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1456:24:1456:39 | &... | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1456:25:1456:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1457:17:1457:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1457:17:1457:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1458:18:1458:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1458:18:1458:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1458:18:1458:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1458:18:1458:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1465:16:1465:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1465:16:1465:20 | SelfParam | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | +| main.rs:1468:16:1468:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1468:16:1468:20 | SelfParam | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | +| main.rs:1468:32:1470:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1468:32:1470:9 | { ... } | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | +| main.rs:1469:13:1469:16 | self | | file://:0:0:0:0 | & | +| main.rs:1469:13:1469:16 | self | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | +| main.rs:1469:13:1469:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1469:13:1469:22 | self.foo() | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | +| main.rs:1477:16:1477:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1477:16:1477:20 | SelfParam | &T | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1477:36:1479:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1477:36:1479:9 | { ... } | &T | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1478:13:1478:16 | self | | file://:0:0:0:0 | & | +| main.rs:1478:13:1478:16 | self | &T | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1483:13:1483:13 | x | | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1483:17:1483:24 | MyStruct | | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1484:9:1484:9 | x | | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1484:9:1484:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1484:9:1484:15 | x.bar() | &T | main.rs:1473:5:1473:20 | MyStruct | +| main.rs:1494:16:1494:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1494:16:1494:20 | SelfParam | &T | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1494:16:1494:20 | SelfParam | &T.T | main.rs:1493:10:1493:10 | T | +| main.rs:1494:32:1496:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1494:32:1496:9 | { ... } | &T | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1494:32:1496:9 | { ... } | &T.T | main.rs:1493:10:1493:10 | T | +| main.rs:1495:13:1495:16 | self | | file://:0:0:0:0 | & | +| main.rs:1495:13:1495:16 | self | &T | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1495:13:1495:16 | self | &T.T | main.rs:1493:10:1493:10 | T | +| main.rs:1500:13:1500:13 | x | | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1500:13:1500:13 | x | T | main.rs:1489:5:1489:13 | S | +| main.rs:1500:17:1500:27 | MyStruct(...) | | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1500:17:1500:27 | MyStruct(...) | T | main.rs:1489:5:1489:13 | S | +| main.rs:1500:26:1500:26 | S | | main.rs:1489:5:1489:13 | S | +| main.rs:1501:9:1501:9 | x | | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1501:9:1501:9 | x | T | main.rs:1489:5:1489:13 | S | +| main.rs:1501:9:1501:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1501:9:1501:15 | x.foo() | &T | main.rs:1491:5:1491:26 | MyStruct | +| main.rs:1501:9:1501:15 | x.foo() | &T.T | main.rs:1489:5:1489:13 | S | +| main.rs:1512:17:1512:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1512:17:1512:25 | SelfParam | &T | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | +| main.rs:1513:13:1513:16 | self | &T | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1513:13:1513:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:13:1513:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1513:25:1513:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:26:1513:29 | self | | file://:0:0:0:0 | & | +| main.rs:1513:26:1513:29 | self | &T | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1513:26:1513:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1520:15:1520:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1520:15:1520:19 | SelfParam | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1520:31:1522:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1520:31:1522:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1521:13:1521:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1521:13:1521:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1521:13:1521:19 | &... | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1521:13:1521:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1521:13:1521:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1521:13:1521:19 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1521:14:1521:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1521:14:1521:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1521:14:1521:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1521:14:1521:19 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1521:15:1521:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1521:15:1521:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1521:15:1521:19 | &self | &T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1521:16:1521:19 | self | | file://:0:0:0:0 | & | +| main.rs:1521:16:1521:19 | self | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1524:15:1524:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1524:15:1524:25 | SelfParam | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1524:37:1526:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1524:37:1526:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1525:13:1525:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1525:13:1525:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1525:13:1525:19 | &... | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1525:13:1525:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1525:13:1525:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1525:13:1525:19 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1525:14:1525:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1525:14:1525:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1525:14:1525:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1525:14:1525:19 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1525:15:1525:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1525:15:1525:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1525:15:1525:19 | &self | &T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1525:16:1525:19 | self | | file://:0:0:0:0 | & | +| main.rs:1525:16:1525:19 | self | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1528:15:1528:15 | x | | file://:0:0:0:0 | & | +| main.rs:1528:15:1528:15 | x | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1528:34:1530:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1528:34:1530:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1529:13:1529:13 | x | | file://:0:0:0:0 | & | +| main.rs:1529:13:1529:13 | x | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1532:15:1532:15 | x | | file://:0:0:0:0 | & | +| main.rs:1532:15:1532:15 | x | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1532:34:1534:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1532:34:1534:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1533:13:1533:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1533:13:1533:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1533:13:1533:16 | &... | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1533:13:1533:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1533:13:1533:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1533:13:1533:16 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1533:14:1533:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1533:14:1533:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1533:14:1533:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1533:14:1533:16 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1533:15:1533:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1533:15:1533:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1533:15:1533:16 | &x | &T.&T | main.rs:1517:5:1517:13 | S | +| main.rs:1533:16:1533:16 | x | | file://:0:0:0:0 | & | +| main.rs:1533:16:1533:16 | x | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1538:13:1538:13 | x | | main.rs:1517:5:1517:13 | S | +| main.rs:1538:17:1538:20 | S {...} | | main.rs:1517:5:1517:13 | S | +| main.rs:1539:9:1539:9 | x | | main.rs:1517:5:1517:13 | S | +| main.rs:1539:9:1539:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1539:9:1539:14 | x.f1() | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1540:9:1540:9 | x | | main.rs:1517:5:1517:13 | S | +| main.rs:1540:9:1540:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1540:9:1540:14 | x.f2() | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1541:9:1541:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1541:9:1541:17 | ...::f3(...) | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1541:15:1541:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1541:15:1541:16 | &x | &T | main.rs:1517:5:1517:13 | S | +| main.rs:1541:16:1541:16 | x | | main.rs:1517:5:1517:13 | S | +| main.rs:1543:13:1543:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:17:1543:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:18:1543:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1543:18:1543:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1543:18:1543:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1543:19:1543:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1543:19:1543:24 | &... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1543:19:1543:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1543:19:1543:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1543:20:1543:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1543:20:1543:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1543:21:1543:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1547:17:1547:20 | flag | | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1547:24:1547:41 | ...::default(...) | | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1548:22:1548:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1548:22:1548:30 | &mut flag | &T | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1548:27:1548:30 | flag | | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1549:18:1549:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1549:18:1549:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1549:18:1549:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1549:18:1549:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1549:26:1549:29 | flag | | main.rs:1506:5:1509:5 | MyFlag | +| main.rs:1564:43:1567:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1564:43:1567:5 | { ... } | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1564:43:1567:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1565:13:1565:13 | x | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1565:17:1565:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1565:17:1565:30 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1565:17:1565:31 | TryExpr | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1565:28:1565:29 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1566:9:1566:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1566:9:1566:22 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1566:9:1566:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1566:20:1566:21 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1571:46:1575:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1571:46:1575:5 | { ... } | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1571:46:1575:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1572:13:1572:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1572:13:1572:13 | x | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1572:17:1572:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1572:17:1572:30 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1572:28:1572:29 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1573:13:1573:13 | y | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1573:17:1573:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1573:17:1573:17 | x | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1573:17:1573:18 | TryExpr | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1574:9:1574:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1574:9:1574:22 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1574:9:1574:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1574:20:1574:21 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1579:40:1584:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1579:40:1584:5 | { ... } | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1579:40:1584:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1580:13:1580:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1580:13:1580:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1580:13:1580:13 | x | T.T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1580:17:1580:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1580:17:1580:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1580:17:1580:42 | ...::Ok(...) | T.T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1580:28:1580:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1580:28:1580:41 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1580:39:1580:40 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1582:17:1582:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1582:17:1582:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1582:17:1582:17 | x | T.T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1582:17:1582:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1582:17:1582:18 | TryExpr | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1582:17:1582:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1582:24:1582:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1582:24:1582:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1583:9:1583:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1583:9:1583:22 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1583:9:1583:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1583:20:1583:21 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1588:30:1588:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1588:30:1588:34 | input | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1588:30:1588:34 | input | T | main.rs:1588:20:1588:27 | T | +| main.rs:1588:69:1595:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1588:69:1595:5 | { ... } | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1588:69:1595:5 | { ... } | T | main.rs:1588:20:1588:27 | T | +| main.rs:1589:13:1589:17 | value | | main.rs:1588:20:1588:27 | T | +| main.rs:1589:21:1589:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1589:21:1589:25 | input | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1589:21:1589:25 | input | T | main.rs:1588:20:1588:27 | T | +| main.rs:1589:21:1589:26 | TryExpr | | main.rs:1588:20:1588:27 | T | +| main.rs:1590:22:1590:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1590:22:1590:38 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1590:22:1590:38 | ...::Ok(...) | T | main.rs:1588:20:1588:27 | T | +| main.rs:1590:22:1593:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1590:22:1593:10 | ... .and_then(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1590:33:1590:37 | value | | main.rs:1588:20:1588:27 | T | +| main.rs:1590:49:1593:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Output).E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1590:53:1593:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1590:53:1593:9 | { ... } | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1591:22:1591:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1591:22:1591:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1591:22:1591:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1591:22:1591:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1592:13:1592:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1592:13:1592:34 | ...::Ok::<...>(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1594:9:1594:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1594:9:1594:23 | ...::Err(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1594:9:1594:23 | ...::Err(...) | T | main.rs:1588:20:1588:27 | T | +| main.rs:1594:21:1594:22 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1599:16:1599:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1599:16:1599:33 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1599:16:1599:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1599:27:1599:32 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1599:37:1599:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1599:37:1599:52 | try_same_error(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1599:37:1599:52 | try_same_error(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1600:22:1600:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1600:22:1600:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1600:22:1600:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1600:22:1600:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1600:30:1600:35 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1603:16:1603:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1603:16:1603:33 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1603:16:1603:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1603:27:1603:32 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1603:37:1603:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1603:37:1603:55 | try_convert_error(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1603:37:1603:55 | try_convert_error(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1604:22:1604:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1604:22:1604:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1604:22:1604:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1604:22:1604:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1604:30:1604:35 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1607:16:1607:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1607:16:1607:33 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1607:16:1607:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1607:27:1607:32 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1607:37:1607:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1607:37:1607:49 | try_chained(...) | E | main.rs:1559:5:1560:14 | S2 | +| main.rs:1607:37:1607:49 | try_chained(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1608:22:1608:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1608:22:1608:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1608:22:1608:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1608:22:1608:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1608:30:1608:35 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:16:1611:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1611:16:1611:33 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:16:1611:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:27:1611:32 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:37:1611:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1611:37:1611:63 | try_complex(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:37:1611:63 | try_complex(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:49:1611:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1611:49:1611:62 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:49:1611:62 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | +| main.rs:1611:60:1611:61 | S1 | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1612:22:1612:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1612:22:1612:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1612:22:1612:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1612:22:1612:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1612:30:1612:35 | result | | main.rs:1556:5:1557:14 | S1 | +| main.rs:1619:13:1619:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1619:22:1619:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1620:13:1620:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1620:17:1620:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1621:13:1621:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1621:17:1621:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1621:17:1621:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1621:21:1621:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1622:13:1622:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1622:17:1622:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1622:17:1622:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1623:13:1623:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1623:17:1623:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1624:13:1624:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1624:13:1624:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1624:21:1624:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1624:21:1624:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1625:13:1625:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1625:17:1625:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1626:13:1626:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1626:17:1626:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1627:13:1627:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1627:17:1627:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1634:13:1634:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1634:17:1634:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1634:17:1634:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1634:25:1634:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:13:1635:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:17:1635:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:17:1635:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1635:25:1635:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1637:17:1637:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1638:13:1638:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1638:20:1638:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1638:20:1638:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1638:26:1638:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1639:12:1639:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1640:17:1640:17 | z | | file://:0:0:0:0 | () | +| main.rs:1640:21:1640:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1640:22:1640:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1640:22:1640:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1640:26:1640:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1642:13:1642:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1642:13:1642:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1642:17:1642:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1644:9:1644:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1658:30:1660:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1659:13:1659:31 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1659:23:1659:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1659:23:1659:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1659:29:1659:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1659:29:1659:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1666:16:1666:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1666:22:1666:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1666:41:1671:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1667:13:1670:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1668:20:1668:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1668:20:1668:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1668:20:1668:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1668:29:1668:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1668:29:1668:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1669:20:1669:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1669:20:1669:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1669:20:1669:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1669:29:1669:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1669:29:1669:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1676:23:1676:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1676:23:1676:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1676:34:1676:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1677:13:1677:16 | self | | file://:0:0:0:0 | & | +| main.rs:1677:13:1677:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1677:13:1677:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1677:13:1677:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1677:23:1677:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1677:23:1677:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1678:13:1678:16 | self | | file://:0:0:0:0 | & | +| main.rs:1678:13:1678:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1678:13:1678:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1678:13:1678:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1678:23:1678:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1678:23:1678:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1684:16:1684:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1684:22:1684:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1684:41:1689:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1685:13:1688:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1686:20:1686:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1686:20:1686:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1686:20:1686:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1686:29:1686:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1686:29:1686:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1687:20:1687:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1687:20:1687:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1687:20:1687:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1687:29:1687:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1687:29:1687:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1694:23:1694:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1694:23:1694:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1694:34:1694:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1695:13:1695:16 | self | | file://:0:0:0:0 | & | +| main.rs:1695:13:1695:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1695:13:1695:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1695:13:1695:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1695:23:1695:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1695:23:1695:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:13:1696:16 | self | | file://:0:0:0:0 | & | +| main.rs:1696:13:1696:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1696:13:1696:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1696:13:1696:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1696:23:1696:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1696:23:1696:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1702:16:1702:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1702:22:1702:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1702:41:1707:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1703:13:1706:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1704:20:1704:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1704:20:1704:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1704:20:1704:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1704:29:1704:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1704:29:1704:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1705:20:1705:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1705:20:1705:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1705:20:1705:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1705:29:1705:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1705:29:1705:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1711:23:1711:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1711:23:1711:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1711:34:1711:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1712:13:1712:16 | self | | file://:0:0:0:0 | & | +| main.rs:1712:13:1712:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1712:13:1712:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1712:13:1712:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1712:23:1712:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1712:23:1712:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1713:13:1713:16 | self | | file://:0:0:0:0 | & | +| main.rs:1713:13:1713:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1713:13:1713:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1713:13:1713:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1713:23:1713:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1713:23:1713:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1719:16:1719:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1719:22:1719:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1719:41:1724:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1720:13:1723:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1721:20:1721:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1721:20:1721:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:20:1721:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:29:1721:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1721:29:1721:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:20:1722:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1722:20:1722:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:20:1722:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:29:1722:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1722:29:1722:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1728:23:1728:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1728:23:1728:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1728:34:1728:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1729:13:1729:16 | self | | file://:0:0:0:0 | & | +| main.rs:1729:13:1729:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1729:13:1729:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1729:13:1729:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1729:23:1729:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1729:23:1729:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1730:13:1730:16 | self | | file://:0:0:0:0 | & | +| main.rs:1730:13:1730:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1730:13:1730:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1730:13:1730:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1730:23:1730:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1730:23:1730:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1736:16:1736:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1736:22:1736:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1736:41:1741:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1737:13:1740:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1738:20:1738:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1738:20:1738:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1738:20:1738:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1738:29:1738:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1738:29:1738:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:20:1739:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1739:20:1739:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:20:1739:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:29:1739:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1739:29:1739:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1745:23:1745:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1745:23:1745:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1745:34:1745:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1746:13:1746:16 | self | | file://:0:0:0:0 | & | +| main.rs:1746:13:1746:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1746:13:1746:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1746:13:1746:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1746:23:1746:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1746:23:1746:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1747:13:1747:16 | self | | file://:0:0:0:0 | & | +| main.rs:1747:13:1747:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1747:13:1747:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1747:13:1747:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1747:23:1747:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1747:23:1747:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1753:19:1753:22 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1753:25:1753:27 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1753:44:1758:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1754:13:1757:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1755:20:1755:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1755:20:1755:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1755:20:1755:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1755:29:1755:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1755:29:1755:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:20:1756:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1756:20:1756:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:20:1756:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:29:1756:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1756:29:1756:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1762:26:1762:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1762:26:1762:34 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1762:37:1762:39 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1763:13:1763:16 | self | | file://:0:0:0:0 | & | +| main.rs:1763:13:1763:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1763:13:1763:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:13:1763:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1763:23:1763:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1763:23:1763:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:13:1764:16 | self | | file://:0:0:0:0 | & | +| main.rs:1764:13:1764:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1764:13:1764:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:13:1764:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1764:23:1764:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1764:23:1764:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1770:18:1770:21 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1770:24:1770:26 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1770:43:1775:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1771:13:1774:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1772:20:1772:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1772:20:1772:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:20:1772:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1772:20:1772:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:20:1772:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:29:1772:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1772:29:1772:33 | rhs.x | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1772:29:1772:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:29:1772:33 | rhs.x | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:20:1773:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1773:20:1773:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:20:1773:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1773:20:1773:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:20:1773:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:29:1773:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1773:29:1773:33 | rhs.y | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1773:29:1773:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:29:1773:33 | rhs.y | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1779:25:1779:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1779:25:1779:33 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1779:36:1779:38 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1780:13:1780:16 | self | | file://:0:0:0:0 | & | +| main.rs:1780:13:1780:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1780:13:1780:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:13:1780:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1780:23:1780:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1780:23:1780:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:13:1781:16 | self | | file://:0:0:0:0 | & | +| main.rs:1781:13:1781:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1781:13:1781:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:13:1781:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1781:23:1781:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1781:23:1781:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:19:1787:22 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1787:25:1787:27 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1787:44:1792:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1788:13:1791:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1789:20:1789:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1789:20:1789:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:20:1789:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:29:1789:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1789:29:1789:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:20:1790:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1790:20:1790:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:20:1790:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:29:1790:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1790:29:1790:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1796:26:1796:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1796:26:1796:34 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1796:37:1796:39 | rhs | | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1797:13:1797:16 | self | | file://:0:0:0:0 | & | -| main.rs:1797:13:1797:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | +| main.rs:1797:13:1797:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1797:13:1797:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:13:1797:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1797:13:1797:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1797:23:1797:27 | other | | file://:0:0:0:0 | & | -| main.rs:1797:23:1797:27 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1797:23:1797:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:34:1797:37 | self | | file://:0:0:0:0 | & | -| main.rs:1797:34:1797:37 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1797:34:1797:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:34:1797:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1797:44:1797:48 | other | | file://:0:0:0:0 | & | -| main.rs:1797:44:1797:48 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1797:44:1797:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1802:24:1802:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1802:24:1802:28 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1802:31:1802:35 | other | | file://:0:0:0:0 | & | -| main.rs:1802:31:1802:35 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1802:75:1804:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1802:75:1804:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1803:13:1803:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:13:1803:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1803:13:1803:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1803:14:1803:17 | self | | file://:0:0:0:0 | & | -| main.rs:1803:14:1803:17 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1803:14:1803:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:14:1803:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:23:1803:26 | self | | file://:0:0:0:0 | & | -| main.rs:1803:23:1803:26 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1803:23:1803:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:43:1803:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1803:43:1803:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:44:1803:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:45:1803:49 | other | | file://:0:0:0:0 | & | -| main.rs:1803:45:1803:49 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1803:45:1803:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:45:1803:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:55:1803:59 | other | | file://:0:0:0:0 | & | -| main.rs:1803:55:1803:59 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1803:55:1803:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1806:15:1806:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1806:15:1806:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1806:22:1806:26 | other | | file://:0:0:0:0 | & | -| main.rs:1806:22:1806:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1806:44:1808:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1807:13:1807:16 | self | | file://:0:0:0:0 | & | -| main.rs:1807:13:1807:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1807:13:1807:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:13:1807:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1807:13:1807:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1807:22:1807:26 | other | | file://:0:0:0:0 | & | -| main.rs:1807:22:1807:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1807:22:1807:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:33:1807:36 | self | | file://:0:0:0:0 | & | -| main.rs:1807:33:1807:36 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1807:33:1807:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:33:1807:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1807:42:1807:46 | other | | file://:0:0:0:0 | & | -| main.rs:1807:42:1807:46 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1807:42:1807:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1810:15:1810:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1810:15:1810:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1810:22:1810:26 | other | | file://:0:0:0:0 | & | -| main.rs:1810:22:1810:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1810:44:1812:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | -| main.rs:1811:13:1811:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1811:13:1811:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1811:13:1811:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1811:13:1811:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1811:23:1811:27 | other | | file://:0:0:0:0 | & | -| main.rs:1811:23:1811:27 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1811:23:1811:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1811:34:1811:37 | self | | file://:0:0:0:0 | & | -| main.rs:1811:34:1811:37 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1811:34:1811:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1811:34:1811:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1811:44:1811:48 | other | | file://:0:0:0:0 | & | -| main.rs:1811:44:1811:48 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1811:44:1811:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1814:15:1814:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1814:15:1814:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1814:22:1814:26 | other | | file://:0:0:0:0 | & | -| main.rs:1814:22:1814:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1814:44:1816:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1797:13:1797:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1797:23:1797:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1797:23:1797:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:13:1798:16 | self | | file://:0:0:0:0 | & | +| main.rs:1798:13:1798:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1798:13:1798:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:13:1798:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1798:23:1798:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1798:23:1798:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:16:1804:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1804:22:1804:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1804:40:1809:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1805:13:1808:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1806:20:1806:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1806:20:1806:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:20:1806:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:30:1806:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1807:20:1807:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1807:20:1807:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:20:1807:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:30:1807:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1813:23:1813:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1813:23:1813:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1813:34:1813:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1814:13:1814:16 | self | | file://:0:0:0:0 | & | +| main.rs:1814:13:1814:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1814:13:1814:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1814:13:1814:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1814:24:1814:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1815:13:1815:16 | self | | file://:0:0:0:0 | & | -| main.rs:1815:13:1815:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1815:13:1815:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:13:1815:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1815:13:1815:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1815:22:1815:26 | other | | file://:0:0:0:0 | & | -| main.rs:1815:22:1815:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1815:22:1815:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:33:1815:36 | self | | file://:0:0:0:0 | & | -| main.rs:1815:33:1815:36 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1815:33:1815:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:33:1815:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1815:42:1815:46 | other | | file://:0:0:0:0 | & | -| main.rs:1815:42:1815:46 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1815:42:1815:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:15:1818:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1818:15:1818:19 | SelfParam | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1818:22:1818:26 | other | | file://:0:0:0:0 | & | -| main.rs:1818:22:1818:26 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1818:44:1820:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1819:13:1819:16 | self | | file://:0:0:0:0 | & | -| main.rs:1819:13:1819:16 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1819:13:1819:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1819:13:1819:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1819:13:1819:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1819:23:1819:27 | other | | file://:0:0:0:0 | & | -| main.rs:1819:23:1819:27 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1819:23:1819:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1819:34:1819:37 | self | | file://:0:0:0:0 | & | -| main.rs:1819:34:1819:37 | self | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1819:34:1819:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1819:34:1819:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1819:44:1819:48 | other | | file://:0:0:0:0 | & | -| main.rs:1819:44:1819:48 | other | &T | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1819:44:1819:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1826:13:1826:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1826:22:1826:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1826:23:1826:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1826:23:1826:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1826:31:1826:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1827:13:1827:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1827:22:1827:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1827:23:1827:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1827:23:1827:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1827:31:1827:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1828:13:1828:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1828:22:1828:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1828:23:1828:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1828:23:1828:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1828:30:1828:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:13:1829:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1829:22:1829:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1829:23:1829:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:23:1829:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1829:31:1829:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1830:13:1830:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1830:22:1830:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1830:23:1830:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1830:23:1830:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1830:30:1830:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1831:13:1831:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1831:22:1831:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1831:23:1831:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1831:23:1831:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1831:32:1831:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:13:1834:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:23:1834:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:23:1834:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:31:1834:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:13:1835:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:23:1835:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:23:1835:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:31:1835:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1836:13:1836:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1836:23:1836:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1836:23:1836:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1836:31:1836:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:13:1837:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:23:1837:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:23:1837:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:31:1837:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:13:1838:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:23:1838:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:23:1838:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:31:1838:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:17:1841:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:34:1841:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1842:9:1842:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1842:9:1842:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1842:27:1842:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1844:17:1844:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1844:34:1844:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1845:9:1845:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1845:9:1845:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1845:27:1845:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1847:17:1847:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1847:34:1847:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1848:9:1848:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1848:9:1848:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1848:27:1848:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:17:1850:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:34:1850:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:9:1851:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:9:1851:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1851:27:1851:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1853:17:1853:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1853:34:1853:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:9:1854:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:9:1854:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1854:27:1854:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:13:1857:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:26:1857:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:26:1857:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:34:1857:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:21 | i64_bitor | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1858:13:1858:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:21 | i64_bitor | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:25:1858:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:25:1858:37 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | -| main.rs:1858:25:1858:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:25:1858:37 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:33:1858:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1859:13:1859:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1859:26:1859:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1859:26:1859:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1859:34:1859:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:13:1860:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:23:1860:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:23:1860:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:32:1860:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:13:1861:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:23:1861:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:23:1861:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:32:1861:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1864:17:1864:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1864:37:1864:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1865:9:1865:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1865:9:1865:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1865:30:1865:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:17:1867:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:36:1867:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:9:1868:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:9:1868:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1868:29:1868:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1870:17:1870:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1870:37:1870:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:9:1871:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:9:1871:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1871:30:1871:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1873:17:1873:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1873:34:1873:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1874:9:1874:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1874:9:1874:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1874:28:1874:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:17:1876:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:34:1876:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1877:9:1877:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1877:9:1877:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1877:28:1877:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:13:1879:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:23:1879:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:24:1879:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:23:1880:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:24:1880:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1883:13:1883:14 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1883:18:1883:36 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1883:28:1883:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1883:28:1883:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1883:34:1883:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1883:34:1883:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:13:1884:14 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1884:18:1884:36 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1884:28:1884:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1884:28:1884:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:34:1884:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1884:34:1884:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1887:13:1887:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1887:23:1887:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1887:23:1887:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1887:29:1887:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1888:13:1888:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1888:23:1888:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1888:23:1888:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1888:29:1888:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1889:13:1889:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1889:23:1889:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1889:23:1889:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1889:28:1889:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1890:13:1890:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1890:23:1890:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1890:23:1890:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1890:29:1890:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1891:13:1891:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1891:23:1891:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1891:23:1891:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1891:28:1891:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1892:13:1892:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1892:23:1892:24 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1892:23:1892:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1892:29:1892:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1895:13:1895:20 | vec2_add | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1895:24:1895:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1895:24:1895:30 | ... + ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1895:29:1895:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1896:13:1896:20 | vec2_sub | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1896:24:1896:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1896:24:1896:30 | ... - ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1896:29:1896:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1897:13:1897:20 | vec2_mul | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1897:24:1897:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1897:24:1897:30 | ... * ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1897:29:1897:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1898:13:1898:20 | vec2_div | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1898:24:1898:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1898:24:1898:30 | ... / ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1898:29:1898:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1899:13:1899:20 | vec2_rem | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1899:24:1899:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1899:24:1899:30 | ... % ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1899:29:1899:30 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1902:17:1902:31 | vec2_add_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1902:35:1902:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1903:9:1903:23 | vec2_add_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1903:9:1903:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1903:28:1903:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1905:17:1905:31 | vec2_sub_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1905:35:1905:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1906:9:1906:23 | vec2_sub_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1906:9:1906:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1906:28:1906:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1908:17:1908:31 | vec2_mul_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1908:35:1908:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1909:9:1909:23 | vec2_mul_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1909:9:1909:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1909:28:1909:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1911:17:1911:31 | vec2_div_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1911:35:1911:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1912:9:1912:23 | vec2_div_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1912:9:1912:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1912:28:1912:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1914:17:1914:31 | vec2_rem_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1914:35:1914:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1915:9:1915:23 | vec2_rem_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1915:9:1915:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1915:28:1915:29 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1918:13:1918:23 | vec2_bitand | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1918:27:1918:28 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1918:27:1918:33 | ... & ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1918:32:1918:33 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1919:13:1919:22 | vec2_bitor | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1919:26:1919:27 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1919:26:1919:32 | ... \| ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1919:31:1919:32 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1920:13:1920:23 | vec2_bitxor | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1920:27:1920:28 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1920:27:1920:33 | ... ^ ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1920:32:1920:33 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1921:13:1921:20 | vec2_shl | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1921:24:1921:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1921:24:1921:33 | ... << ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1921:30:1921:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1922:13:1922:20 | vec2_shr | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1922:24:1922:25 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1922:24:1922:33 | ... >> ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1922:30:1922:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1925:17:1925:34 | vec2_bitand_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1925:38:1925:39 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1926:9:1926:26 | vec2_bitand_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1926:9:1926:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1926:31:1926:32 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1928:17:1928:33 | vec2_bitor_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1928:37:1928:38 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1929:9:1929:25 | vec2_bitor_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1929:9:1929:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1929:30:1929:31 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1931:17:1931:34 | vec2_bitxor_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1931:38:1931:39 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1932:9:1932:26 | vec2_bitxor_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1932:9:1932:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1932:31:1932:32 | v2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1934:17:1934:31 | vec2_shl_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1934:35:1934:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1935:9:1935:23 | vec2_shl_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1935:9:1935:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1935:29:1935:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1937:17:1937:31 | vec2_shr_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1937:35:1937:36 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1938:9:1938:23 | vec2_shr_assign | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1938:9:1938:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1938:29:1938:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1941:13:1941:20 | vec2_neg | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1941:24:1941:26 | - ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1941:25:1941:26 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1942:13:1942:20 | vec2_not | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1942:24:1942:26 | ! ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1942:25:1942:26 | v1 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1945:13:1945:24 | default_vec2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1945:28:1945:45 | ...::default(...) | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1946:13:1946:26 | vec2_zero_plus | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1946:30:1946:48 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1946:30:1946:63 | ... + ... | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1946:40:1946:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1946:40:1946:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1946:46:1946:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1946:46:1946:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1946:52:1946:63 | default_vec2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1950:13:1950:24 | default_vec2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1950:28:1950:45 | ...::default(...) | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1951:13:1951:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:1951:30:1951:48 | Vec2 {...} | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1951:30:1951:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1951:40:1951:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1951:40:1951:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:46:1951:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1951:46:1951:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:53:1951:64 | default_vec2 | | main.rs:1586:5:1591:5 | Vec2 | -| main.rs:1961:18:1961:21 | SelfParam | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1964:25:1966:5 | { ... } | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1965:9:1965:10 | S1 | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1968:41:1970:5 | { ... } | | main.rs:1968:16:1968:39 | impl ... | -| main.rs:1969:9:1969:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1969:9:1969:20 | { ... } | Output | main.rs:1958:5:1958:14 | S1 | -| main.rs:1969:17:1969:18 | S1 | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1978:13:1978:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1978:13:1978:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1978:13:1978:42 | SelfParam | Ptr.&T | main.rs:1972:5:1972:14 | S2 | -| main.rs:1979:13:1979:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:1979:13:1979:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1980:44:1982:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1980:44:1982:9 | { ... } | T | main.rs:1958:5:1958:14 | S1 | -| main.rs:1981:13:1981:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1981:13:1981:38 | ...::Ready(...) | T | main.rs:1958:5:1958:14 | S1 | -| main.rs:1981:36:1981:37 | S1 | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1985:41:1987:5 | { ... } | | main.rs:1985:16:1985:39 | impl ... | -| main.rs:1986:9:1986:10 | S2 | | main.rs:1972:5:1972:14 | S2 | -| main.rs:1986:9:1986:10 | S2 | | main.rs:1985:16:1985:39 | impl ... | -| main.rs:1990:9:1990:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1990:9:1990:12 | f1(...) | Output | main.rs:1958:5:1958:14 | S1 | -| main.rs:1990:9:1990:18 | await ... | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1991:9:1991:12 | f2(...) | | main.rs:1968:16:1968:39 | impl ... | -| main.rs:1991:9:1991:18 | await ... | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1992:9:1992:12 | f3(...) | | main.rs:1985:16:1985:39 | impl ... | -| main.rs:1992:9:1992:18 | await ... | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1993:9:1993:10 | S2 | | main.rs:1972:5:1972:14 | S2 | -| main.rs:1993:9:1993:16 | await S2 | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1994:13:1994:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1994:13:1994:13 | b | Output | main.rs:1958:5:1958:14 | S1 | -| main.rs:1994:17:1994:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1994:17:1994:28 | { ... } | Output | main.rs:1958:5:1958:14 | S1 | -| main.rs:1994:25:1994:26 | S1 | | main.rs:1958:5:1958:14 | S1 | -| main.rs:1995:9:1995:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1995:9:1995:9 | b | Output | main.rs:1958:5:1958:14 | S1 | -| main.rs:1995:9:1995:15 | await b | | main.rs:1958:5:1958:14 | S1 | -| main.rs:2006:15:2006:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2006:15:2006:19 | SelfParam | &T | main.rs:2005:5:2007:5 | Self [trait Trait1] | -| main.rs:2010:15:2010:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2010:15:2010:19 | SelfParam | &T | main.rs:2009:5:2011:5 | Self [trait Trait2] | -| main.rs:2014:15:2014:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2014:15:2014:19 | SelfParam | &T | main.rs:2000:5:2001:14 | S1 | -| main.rs:2018:15:2018:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2018:15:2018:19 | SelfParam | &T | main.rs:2000:5:2001:14 | S1 | -| main.rs:2021:37:2023:5 | { ... } | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2022:9:2022:10 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2022:9:2022:10 | S1 | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2026:18:2026:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2026:18:2026:22 | SelfParam | &T | main.rs:2025:5:2027:5 | Self [trait MyTrait] | -| main.rs:2030:18:2030:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2030:18:2030:22 | SelfParam | &T | main.rs:2000:5:2001:14 | S1 | -| main.rs:2030:31:2032:9 | { ... } | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2031:13:2031:14 | S2 | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2036:18:2036:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2036:18:2036:22 | SelfParam | &T | main.rs:2003:5:2003:22 | S3 | -| main.rs:2036:18:2036:22 | SelfParam | &T.T3 | main.rs:2035:10:2035:17 | T | -| main.rs:2036:30:2039:9 | { ... } | | main.rs:2035:10:2035:17 | T | -| main.rs:2037:17:2037:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2037:17:2037:21 | S3(...) | | main.rs:2003:5:2003:22 | S3 | -| main.rs:2037:17:2037:21 | S3(...) | &T | main.rs:2003:5:2003:22 | S3 | -| main.rs:2037:17:2037:21 | S3(...) | &T.T3 | main.rs:2035:10:2035:17 | T | -| main.rs:2037:25:2037:28 | self | | file://:0:0:0:0 | & | -| main.rs:2037:25:2037:28 | self | &T | main.rs:2003:5:2003:22 | S3 | -| main.rs:2037:25:2037:28 | self | &T.T3 | main.rs:2035:10:2035:17 | T | -| main.rs:2038:13:2038:21 | t.clone() | | main.rs:2035:10:2035:17 | T | -| main.rs:2042:45:2044:5 | { ... } | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2043:9:2043:10 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2043:9:2043:10 | S1 | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2046:41:2046:41 | t | | main.rs:2046:26:2046:38 | B | -| main.rs:2046:52:2048:5 | { ... } | | main.rs:2046:23:2046:23 | A | -| main.rs:2047:9:2047:9 | t | | main.rs:2046:26:2046:38 | B | -| main.rs:2047:9:2047:17 | t.get_a() | | main.rs:2046:23:2046:23 | A | -| main.rs:2050:34:2050:34 | x | | main.rs:2050:24:2050:31 | T | -| main.rs:2050:59:2052:5 | { ... } | | main.rs:2050:43:2050:57 | impl ... | -| main.rs:2050:59:2052:5 | { ... } | impl(T) | main.rs:2050:24:2050:31 | T | -| main.rs:2051:9:2051:13 | S3(...) | | main.rs:2003:5:2003:22 | S3 | -| main.rs:2051:9:2051:13 | S3(...) | | main.rs:2050:43:2050:57 | impl ... | -| main.rs:2051:9:2051:13 | S3(...) | T3 | main.rs:2050:24:2050:31 | T | -| main.rs:2051:9:2051:13 | S3(...) | impl(T) | main.rs:2050:24:2050:31 | T | -| main.rs:2051:12:2051:12 | x | | main.rs:2050:24:2050:31 | T | -| main.rs:2054:34:2054:34 | x | | main.rs:2054:24:2054:31 | T | -| main.rs:2054:67:2056:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2054:67:2056:5 | { ... } | T | main.rs:2054:50:2054:64 | impl ... | -| main.rs:2054:67:2056:5 | { ... } | T.impl(T) | main.rs:2054:24:2054:31 | T | -| main.rs:2055:9:2055:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2055:9:2055:19 | Some(...) | T | main.rs:2003:5:2003:22 | S3 | -| main.rs:2055:9:2055:19 | Some(...) | T | main.rs:2054:50:2054:64 | impl ... | -| main.rs:2055:9:2055:19 | Some(...) | T.T3 | main.rs:2054:24:2054:31 | T | -| main.rs:2055:9:2055:19 | Some(...) | T.impl(T) | main.rs:2054:24:2054:31 | T | -| main.rs:2055:14:2055:18 | S3(...) | | main.rs:2003:5:2003:22 | S3 | -| main.rs:2055:14:2055:18 | S3(...) | | main.rs:2054:50:2054:64 | impl ... | -| main.rs:2055:14:2055:18 | S3(...) | T3 | main.rs:2054:24:2054:31 | T | -| main.rs:2055:14:2055:18 | S3(...) | impl(T) | main.rs:2054:24:2054:31 | T | -| main.rs:2055:17:2055:17 | x | | main.rs:2054:24:2054:31 | T | -| main.rs:2058:34:2058:34 | x | | main.rs:2058:24:2058:31 | T | -| main.rs:2058:78:2060:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2058:78:2060:5 | { ... } | 0(2) | main.rs:2058:44:2058:58 | impl ... | -| main.rs:2058:78:2060:5 | { ... } | 0(2).impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2058:78:2060:5 | { ... } | 1(2) | main.rs:2058:61:2058:75 | impl ... | -| main.rs:2058:78:2060:5 | { ... } | 1(2).impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2059:9:2059:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2059:9:2059:30 | TupleExpr | 0(2) | main.rs:2003:5:2003:22 | S3 | -| main.rs:2059:9:2059:30 | TupleExpr | 0(2) | main.rs:2058:44:2058:58 | impl ... | -| main.rs:2059:9:2059:30 | TupleExpr | 0(2).T3 | main.rs:2058:24:2058:31 | T | -| main.rs:2059:9:2059:30 | TupleExpr | 0(2).impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2059:9:2059:30 | TupleExpr | 1(2) | main.rs:2003:5:2003:22 | S3 | -| main.rs:2059:9:2059:30 | TupleExpr | 1(2) | main.rs:2058:61:2058:75 | impl ... | -| main.rs:2059:9:2059:30 | TupleExpr | 1(2).T3 | main.rs:2058:24:2058:31 | T | -| main.rs:2059:9:2059:30 | TupleExpr | 1(2).impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2059:10:2059:22 | S3(...) | | main.rs:2003:5:2003:22 | S3 | -| main.rs:2059:10:2059:22 | S3(...) | | main.rs:2058:44:2058:58 | impl ... | -| main.rs:2059:10:2059:22 | S3(...) | T3 | main.rs:2058:24:2058:31 | T | -| main.rs:2059:10:2059:22 | S3(...) | impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2059:13:2059:13 | x | | main.rs:2058:24:2058:31 | T | -| main.rs:2059:13:2059:21 | x.clone() | | main.rs:2058:24:2058:31 | T | -| main.rs:2059:25:2059:29 | S3(...) | | main.rs:2003:5:2003:22 | S3 | -| main.rs:2059:25:2059:29 | S3(...) | | main.rs:2058:61:2058:75 | impl ... | -| main.rs:2059:25:2059:29 | S3(...) | T3 | main.rs:2058:24:2058:31 | T | -| main.rs:2059:25:2059:29 | S3(...) | impl(T) | main.rs:2058:24:2058:31 | T | -| main.rs:2059:28:2059:28 | x | | main.rs:2058:24:2058:31 | T | -| main.rs:2062:26:2062:26 | t | | main.rs:2062:29:2062:43 | impl ... | -| main.rs:2062:51:2064:5 | { ... } | | main.rs:2062:23:2062:23 | A | -| main.rs:2063:9:2063:9 | t | | main.rs:2062:29:2062:43 | impl ... | -| main.rs:2063:9:2063:17 | t.get_a() | | main.rs:2062:23:2062:23 | A | -| main.rs:2067:13:2067:13 | x | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2067:17:2067:20 | f1(...) | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2068:9:2068:9 | x | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2069:9:2069:9 | x | | main.rs:2021:16:2021:35 | impl ... + ... | -| main.rs:2070:13:2070:13 | a | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2070:17:2070:32 | get_a_my_trait(...) | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2071:13:2071:13 | b | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2071:17:2071:33 | uses_my_trait1(...) | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2071:32:2071:32 | a | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2072:13:2072:13 | a | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2072:17:2072:32 | get_a_my_trait(...) | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2073:13:2073:13 | c | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2073:17:2073:33 | uses_my_trait2(...) | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2073:32:2073:32 | a | | main.rs:2042:28:2042:43 | impl ... | -| main.rs:2074:13:2074:13 | d | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2074:17:2074:34 | uses_my_trait2(...) | | main.rs:2002:5:2002:14 | S2 | -| main.rs:2074:32:2074:33 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2075:13:2075:13 | e | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2075:17:2075:35 | get_a_my_trait2(...) | | main.rs:2050:43:2050:57 | impl ... | -| main.rs:2075:17:2075:35 | get_a_my_trait2(...) | impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2075:17:2075:43 | ... .get_a() | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2075:33:2075:34 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2078:13:2078:13 | f | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2078:17:2078:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2078:17:2078:35 | get_a_my_trait3(...) | T | main.rs:2054:50:2054:64 | impl ... | -| main.rs:2078:17:2078:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2078:17:2078:44 | ... .unwrap() | | main.rs:2054:50:2054:64 | impl ... | -| main.rs:2078:17:2078:44 | ... .unwrap() | impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2078:17:2078:52 | ... .get_a() | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2078:33:2078:34 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:13:2079:13 | g | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:17:2079:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2079:17:2079:35 | get_a_my_trait4(...) | 0(2) | main.rs:2058:44:2058:58 | impl ... | -| main.rs:2079:17:2079:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:17:2079:35 | get_a_my_trait4(...) | 1(2) | main.rs:2058:61:2058:75 | impl ... | -| main.rs:2079:17:2079:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:17:2079:37 | ... .0 | | main.rs:2058:44:2058:58 | impl ... | -| main.rs:2079:17:2079:37 | ... .0 | impl(T) | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:17:2079:45 | ... .get_a() | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2079:33:2079:34 | S1 | | main.rs:2000:5:2001:14 | S1 | -| main.rs:2090:16:2090:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2090:16:2090:20 | SelfParam | &T | main.rs:2086:5:2087:13 | S | -| main.rs:2090:31:2092:9 | { ... } | | main.rs:2086:5:2087:13 | S | -| main.rs:2091:13:2091:13 | S | | main.rs:2086:5:2087:13 | S | -| main.rs:2101:26:2103:9 | { ... } | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2101:26:2103:9 | { ... } | T | main.rs:2100:10:2100:10 | T | -| main.rs:2102:13:2102:38 | MyVec {...} | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2102:13:2102:38 | MyVec {...} | T | main.rs:2100:10:2100:10 | T | -| main.rs:2102:27:2102:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2102:27:2102:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2102:27:2102:36 | ...::new(...) | T | main.rs:2100:10:2100:10 | T | -| main.rs:2105:17:2105:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2105:17:2105:25 | SelfParam | &T | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2105:17:2105:25 | SelfParam | &T.T | main.rs:2100:10:2100:10 | T | -| main.rs:2105:28:2105:32 | value | | main.rs:2100:10:2100:10 | T | -| main.rs:2106:13:2106:16 | self | | file://:0:0:0:0 | & | -| main.rs:2106:13:2106:16 | self | &T | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2106:13:2106:16 | self | &T.T | main.rs:2100:10:2100:10 | T | -| main.rs:2106:13:2106:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2106:13:2106:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2106:13:2106:21 | self.data | T | main.rs:2100:10:2100:10 | T | -| main.rs:2106:28:2106:32 | value | | main.rs:2100:10:2100:10 | T | -| main.rs:2114:18:2114:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2114:18:2114:22 | SelfParam | &T | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2114:18:2114:22 | SelfParam | &T.T | main.rs:2110:10:2110:10 | T | -| main.rs:2114:25:2114:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2114:56:2116:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2114:56:2116:9 | { ... } | &T | main.rs:2110:10:2110:10 | T | -| main.rs:2115:13:2115:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2115:13:2115:29 | &... | &T | main.rs:2110:10:2110:10 | T | -| main.rs:2115:14:2115:17 | self | | file://:0:0:0:0 | & | -| main.rs:2115:14:2115:17 | self | &T | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2115:14:2115:17 | self | &T.T | main.rs:2110:10:2110:10 | T | -| main.rs:2115:14:2115:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2115:14:2115:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2115:14:2115:22 | self.data | T | main.rs:2110:10:2110:10 | T | -| main.rs:2115:14:2115:29 | ...[index] | | main.rs:2110:10:2110:10 | T | -| main.rs:2115:24:2115:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2119:22:2119:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2119:22:2119:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2119:22:2119:26 | slice | &T.[T] | main.rs:2086:5:2087:13 | S | -| main.rs:2120:13:2120:13 | x | | main.rs:2086:5:2087:13 | S | -| main.rs:2120:17:2120:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2120:17:2120:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2120:17:2120:21 | slice | &T.[T] | main.rs:2086:5:2087:13 | S | -| main.rs:2120:17:2120:24 | slice[0] | | main.rs:2086:5:2087:13 | S | -| main.rs:2120:17:2120:30 | ... .foo() | | main.rs:2086:5:2087:13 | S | -| main.rs:2120:23:2120:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2124:17:2124:19 | vec | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2124:17:2124:19 | vec | T | main.rs:2086:5:2087:13 | S | -| main.rs:2124:23:2124:34 | ...::new(...) | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2124:23:2124:34 | ...::new(...) | T | main.rs:2086:5:2087:13 | S | -| main.rs:2125:9:2125:11 | vec | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2125:9:2125:11 | vec | T | main.rs:2086:5:2087:13 | S | -| main.rs:2125:18:2125:18 | S | | main.rs:2086:5:2087:13 | S | -| main.rs:2126:9:2126:11 | vec | | main.rs:2095:5:2098:5 | MyVec | -| main.rs:2126:9:2126:11 | vec | T | main.rs:2086:5:2087:13 | S | -| main.rs:2126:9:2126:14 | vec[0] | | main.rs:2086:5:2087:13 | S | -| main.rs:2126:9:2126:20 | ... .foo() | | main.rs:2086:5:2087:13 | S | -| main.rs:2126:13:2126:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2126:13:2126:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2128:13:2128:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2128:13:2128:14 | xs | [T;...] | main.rs:2086:5:2087:13 | S | -| main.rs:2128:21:2128:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2128:26:2128:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2128:26:2128:28 | [...] | [T;...] | main.rs:2086:5:2087:13 | S | -| main.rs:2128:27:2128:27 | S | | main.rs:2086:5:2087:13 | S | -| main.rs:2129:13:2129:13 | x | | main.rs:2086:5:2087:13 | S | -| main.rs:2129:17:2129:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2129:17:2129:18 | xs | [T;...] | main.rs:2086:5:2087:13 | S | -| main.rs:2129:17:2129:21 | xs[0] | | main.rs:2086:5:2087:13 | S | -| main.rs:2129:17:2129:27 | ... .foo() | | main.rs:2086:5:2087:13 | S | -| main.rs:2129:20:2129:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2131:23:2131:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2131:23:2131:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2131:23:2131:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2131:23:2131:25 | &xs | &T.[T;...] | main.rs:2086:5:2087:13 | S | -| main.rs:2131:23:2131:25 | &xs | &T.[T] | main.rs:2086:5:2087:13 | S | -| main.rs:2131:24:2131:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2131:24:2131:25 | xs | [T;...] | main.rs:2086:5:2087:13 | S | -| main.rs:2137:13:2137:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2137:17:2137:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2137:25:2137:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2137:25:2137:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2137:25:2137:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2137:25:2137:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2137:25:2137:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2137:25:2137:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2137:25:2137:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2137:38:2137:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2137:38:2137:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2146:19:2146:22 | SelfParam | | main.rs:2142:5:2147:5 | Self [trait MyAdd] | -| main.rs:2146:25:2146:27 | rhs | | main.rs:2142:17:2142:26 | Rhs | -| main.rs:2153:19:2153:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2153:25:2153:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2153:45:2155:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2154:13:2154:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2162:19:2162:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2162:25:2162:29 | value | | file://:0:0:0:0 | & | -| main.rs:2162:25:2162:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2162:46:2164:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2163:13:2163:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2163:14:2163:18 | value | | file://:0:0:0:0 | & | -| main.rs:2163:14:2163:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2171:19:2171:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2171:25:2171:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2171:46:2177:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2172:13:2176:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2172:13:2176:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2172:16:2172:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2172:22:2174:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2172:22:2174:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2173:17:2173:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2173:17:2173:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2174:20:2176:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2174:20:2176:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2175:17:2175:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2175:17:2175:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2186:19:2186:22 | SelfParam | | main.rs:2180:5:2180:19 | S | -| main.rs:2186:19:2186:22 | SelfParam | T | main.rs:2182:10:2182:17 | T | -| main.rs:2186:25:2186:29 | other | | main.rs:2180:5:2180:19 | S | -| main.rs:2186:25:2186:29 | other | T | main.rs:2182:10:2182:17 | T | -| main.rs:2186:54:2188:9 | { ... } | | main.rs:2180:5:2180:19 | S | -| main.rs:2186:54:2188:9 | { ... } | T | main.rs:2143:9:2143:20 | Output | -| main.rs:2187:13:2187:39 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2187:13:2187:39 | S(...) | T | main.rs:2143:9:2143:20 | Output | -| main.rs:2187:15:2187:22 | (...) | | main.rs:2182:10:2182:17 | T | -| main.rs:2187:15:2187:38 | ... .my_add(...) | | main.rs:2143:9:2143:20 | Output | -| main.rs:2187:16:2187:19 | self | | main.rs:2180:5:2180:19 | S | -| main.rs:2187:16:2187:19 | self | T | main.rs:2182:10:2182:17 | T | -| main.rs:2187:16:2187:21 | self.0 | | main.rs:2182:10:2182:17 | T | -| main.rs:2187:31:2187:35 | other | | main.rs:2180:5:2180:19 | S | -| main.rs:2187:31:2187:35 | other | T | main.rs:2182:10:2182:17 | T | -| main.rs:2187:31:2187:37 | other.0 | | main.rs:2142:5:2147:5 | Self [trait MyAdd] | -| main.rs:2187:31:2187:37 | other.0 | | main.rs:2182:10:2182:17 | T | -| main.rs:2195:19:2195:22 | SelfParam | | main.rs:2180:5:2180:19 | S | -| main.rs:2195:19:2195:22 | SelfParam | T | main.rs:2191:10:2191:17 | T | -| main.rs:2195:25:2195:29 | other | | main.rs:2191:10:2191:17 | T | -| main.rs:2195:51:2197:9 | { ... } | | main.rs:2180:5:2180:19 | S | -| main.rs:2195:51:2197:9 | { ... } | T | main.rs:2143:9:2143:20 | Output | -| main.rs:2196:13:2196:37 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2196:13:2196:37 | S(...) | T | main.rs:2143:9:2143:20 | Output | -| main.rs:2196:15:2196:22 | (...) | | main.rs:2191:10:2191:17 | T | -| main.rs:2196:15:2196:36 | ... .my_add(...) | | main.rs:2143:9:2143:20 | Output | -| main.rs:2196:16:2196:19 | self | | main.rs:2180:5:2180:19 | S | -| main.rs:2196:16:2196:19 | self | T | main.rs:2191:10:2191:17 | T | -| main.rs:2196:16:2196:21 | self.0 | | main.rs:2191:10:2191:17 | T | -| main.rs:2196:31:2196:35 | other | | main.rs:2191:10:2191:17 | T | -| main.rs:2207:19:2207:22 | SelfParam | | main.rs:2180:5:2180:19 | S | -| main.rs:2207:19:2207:22 | SelfParam | T | main.rs:2200:14:2200:14 | T | -| main.rs:2207:25:2207:29 | other | | file://:0:0:0:0 | & | -| main.rs:2207:25:2207:29 | other | &T | main.rs:2200:14:2200:14 | T | -| main.rs:2207:55:2209:9 | { ... } | | main.rs:2180:5:2180:19 | S | -| main.rs:2208:13:2208:37 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2208:15:2208:22 | (...) | | main.rs:2200:14:2200:14 | T | -| main.rs:2208:16:2208:19 | self | | main.rs:2180:5:2180:19 | S | -| main.rs:2208:16:2208:19 | self | T | main.rs:2200:14:2200:14 | T | -| main.rs:2208:16:2208:21 | self.0 | | main.rs:2200:14:2200:14 | T | -| main.rs:2208:31:2208:35 | other | | file://:0:0:0:0 | & | -| main.rs:2208:31:2208:35 | other | &T | main.rs:2200:14:2200:14 | T | -| main.rs:2214:20:2214:24 | value | | main.rs:2212:18:2212:18 | T | -| main.rs:2219:20:2219:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:40:2221:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:13:2220:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2226:20:2226:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2226:41:2232:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:13:2231:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2227:13:2231:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:16:2227:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2227:22:2229:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2227:22:2229:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:17:2228:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2228:17:2228:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2229:20:2231:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2229:20:2231:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2230:17:2230:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2230:17:2230:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2237:21:2237:25 | value | | main.rs:2235:19:2235:19 | T | -| main.rs:2237:31:2237:31 | x | | main.rs:2235:5:2238:5 | Self [trait MyFrom2] | -| main.rs:2242:21:2242:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2242:33:2242:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2242:48:2244:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2243:13:2243:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2249:21:2249:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2249:34:2249:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2249:49:2255:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2250:13:2254:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2250:16:2250:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2250:22:2252:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2251:17:2251:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2252:20:2254:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2253:17:2253:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2260:15:2260:15 | x | | main.rs:2258:5:2264:5 | Self [trait MySelfTrait] | -| main.rs:2263:15:2263:15 | x | | main.rs:2258:5:2264:5 | Self [trait MySelfTrait] | -| main.rs:2268:15:2268:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2268:31:2270:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2269:13:2269:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2269:13:2269:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2269:17:2269:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2273:15:2273:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2273:32:2275:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2274:13:2274:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2274:13:2274:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2274:17:2274:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2280:15:2280:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2280:31:2282:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2281:13:2281:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2281:13:2281:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2285:15:2285:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2285:32:2287:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2286:13:2286:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2291:13:2291:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2291:22:2291:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:22:2291:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2292:9:2292:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2292:9:2292:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2292:18:2292:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2293:9:2293:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2293:9:2293:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2293:18:2293:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2293:18:2293:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2293:19:2293:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2294:9:2294:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2294:9:2294:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2294:18:2294:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2296:9:2296:15 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2296:9:2296:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:9:2296:31 | ... .my_add(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2296:11:2296:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:24:2296:30 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2296:24:2296:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:26:2296:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:9:2297:15 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2297:9:2297:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:11:2297:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:24:2297:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:9:2298:15 | S(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2298:9:2298:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:9:2298:29 | ... .my_add(...) | | main.rs:2180:5:2180:19 | S | -| main.rs:2298:11:2298:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:24:2298:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2298:24:2298:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:25:2298:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2300:13:2300:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2300:17:2300:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2300:30:2300:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2301:13:2301:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2301:17:2301:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2301:30:2301:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2302:13:2302:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2302:22:2302:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2302:38:2302:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2303:9:2303:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2303:23:2303:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2303:30:2303:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2304:9:2304:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2304:23:2304:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2304:29:2304:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2305:9:2305:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2305:27:2305:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2305:34:2305:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2307:9:2307:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2307:17:2307:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2308:9:2308:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2308:17:2308:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2309:9:2309:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2309:18:2309:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2310:9:2310:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2310:18:2310:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2311:9:2311:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2311:25:2311:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:9:2312:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:25:2312:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2313:9:2313:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2313:25:2313:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2314:9:2314:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2314:25:2314:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2322:26:2324:9 | { ... } | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2323:13:2323:25 | MyCallable {...} | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2326:17:2326:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2326:17:2326:21 | SelfParam | &T | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2326:31:2328:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2327:13:2327:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2327:13:2327:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2334:13:2334:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:18:2334:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2334:18:2334:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:19:2334:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:22:2334:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:25:2334:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:18:2335:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2335:18:2335:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:18:2335:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2335:19:2335:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:22:2335:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:25:2335:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:32:2335:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2335:32:2335:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2335:40:2335:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:13:2336:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2336:13:2336:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:18:2336:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2336:18:2336:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:18:2336:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2336:18:2336:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:19:2336:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:22:2336:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:25:2336:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:13:2338:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2338:13:2338:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:13:2338:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2338:21:2338:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2338:21:2338:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:21:2338:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2338:22:2338:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2338:27:2338:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:27:2338:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2338:30:2338:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:30:2338:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2339:13:2339:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:13:2339:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2339:18:2339:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2339:18:2339:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:18:2339:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2341:13:2341:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2341:13:2341:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2341:21:2341:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2341:21:2341:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2341:22:2341:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2341:28:2341:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:13:2342:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2342:18:2342:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2342:18:2342:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2344:13:2344:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2344:13:2344:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2344:26:2344:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:31:2344:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2344:31:2344:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:31:2344:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2344:32:2344:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:32:2344:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2344:35:2344:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:35:2344:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2344:38:2344:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:38:2344:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2345:13:2345:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2345:18:2345:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2345:18:2345:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2347:13:2347:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2347:13:2347:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2347:26:2347:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2347:31:2347:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2347:31:2347:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2347:31:2347:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2347:32:2347:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2347:32:2347:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2347:35:2347:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2348:13:2348:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2348:18:2348:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2348:18:2348:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2350:17:2350:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2350:17:2350:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2350:17:2350:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2350:28:2350:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2350:28:2350:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2350:28:2350:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2350:29:2350:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2350:29:2350:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2350:36:2350:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2350:36:2350:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2350:43:2350:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2350:43:2350:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2351:13:2351:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2351:13:2351:13 | s | | file://:0:0:0:0 | & | -| main.rs:2351:13:2351:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2351:13:2351:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2351:18:2351:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2351:18:2351:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2351:18:2351:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2351:18:2351:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2351:19:2351:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2351:19:2351:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2351:19:2351:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2352:13:2352:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2352:13:2352:13 | s | | file://:0:0:0:0 | & | -| main.rs:2352:13:2352:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2352:13:2352:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2352:18:2352:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2352:18:2352:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2352:18:2352:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2352:18:2352:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2352:23:2352:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2352:23:2352:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2352:23:2352:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2353:13:2353:13 | s | | file://:0:0:0:0 | & | -| main.rs:2353:13:2353:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2353:18:2353:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2353:18:2353:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2353:18:2353:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2355:13:2355:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2355:13:2355:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2356:9:2360:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2356:9:2360:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2357:13:2357:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2357:26:2357:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2357:26:2357:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2358:13:2358:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2358:26:2358:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2358:26:2358:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2359:13:2359:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2359:26:2359:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2359:26:2359:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2361:13:2361:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2361:18:2361:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2361:18:2361:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2363:13:2363:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2363:13:2363:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2363:13:2363:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2364:9:2368:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2364:9:2368:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2364:9:2368:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2364:10:2368:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2364:10:2368:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2365:13:2365:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2365:26:2365:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2365:26:2365:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2366:13:2366:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2366:26:2366:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2366:26:2366:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2367:13:2367:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2367:26:2367:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2367:26:2367:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2369:13:2369:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2369:13:2369:13 | s | | file://:0:0:0:0 | & | -| main.rs:2369:13:2369:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2369:18:2369:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2369:18:2369:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2369:18:2369:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2371:13:2371:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2371:13:2371:21 | callables | [T;...] | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2371:25:2371:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2371:25:2371:81 | [...] | [T;...] | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2371:26:2371:42 | ...::new(...) | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2371:45:2371:61 | ...::new(...) | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2371:64:2371:80 | ...::new(...) | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2372:13:2372:13 | c | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2373:12:2373:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2373:12:2373:20 | callables | [T;...] | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2375:17:2375:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2375:26:2375:26 | c | | main.rs:2319:5:2319:24 | MyCallable | -| main.rs:2375:26:2375:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2380:13:2380:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2380:13:2380:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:18:2380:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:18:2380:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2380:18:2380:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:21:2380:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:13:2381:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2381:13:2381:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:13:2381:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2381:18:2381:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2381:18:2381:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2381:18:2381:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:18:2381:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2381:19:2381:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2381:19:2381:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2381:19:2381:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:19:2381:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2381:24:2381:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:24:2381:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2382:13:2382:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2382:13:2382:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2382:21:2382:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2382:21:2382:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2382:21:2382:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2382:24:2382:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2383:13:2383:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2383:13:2383:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2383:18:2383:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2383:18:2383:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2384:13:2384:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2384:26:2384:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2385:13:2385:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2385:18:2385:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2385:19:2385:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2385:19:2385:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:20:2385:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:26:2385:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:32:2385:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:38:2385:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2387:13:2387:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2387:13:2387:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2388:9:2391:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2388:9:2391:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2389:20:2389:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2390:18:2390:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2392:13:2392:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2392:13:2392:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2392:18:2392:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2392:18:2392:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2396:26:2396:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2396:29:2396:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2396:32:2396:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:13:2399:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2399:13:2399:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2399:13:2399:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2399:32:2399:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2399:32:2399:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:32:2399:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2399:32:2399:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2399:32:2399:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2399:32:2399:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2399:33:2399:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2399:39:2399:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:39:2399:39 | 2 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2399:42:2399:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:42:2399:42 | 3 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2400:13:2400:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2400:13:2400:13 | u | | file://:0:0:0:0 | & | -| main.rs:2400:18:2400:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2400:18:2400:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2400:18:2400:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2402:22:2402:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2402:22:2402:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2402:22:2402:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2402:23:2402:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2402:29:2402:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2402:29:2402:29 | 2 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2402:32:2402:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2402:32:2402:32 | 3 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2405:13:2405:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2405:13:2405:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2405:13:2405:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:13:2405:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2405:21:2405:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2405:21:2405:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2405:21:2405:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:21:2405:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2405:31:2405:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2405:31:2405:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:31:2405:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2405:32:2405:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2405:38:2405:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:38:2405:38 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2405:41:2405:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:41:2405:41 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2406:13:2406:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2406:13:2406:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2406:13:2406:13 | u | | file://:0:0:0:0 | & | -| main.rs:2406:18:2406:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2406:18:2406:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2406:18:2406:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2406:18:2406:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2408:13:2408:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2408:13:2408:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2408:13:2408:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2408:13:2408:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2408:32:2408:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2408:32:2408:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:32:2408:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2408:32:2408:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2408:32:2408:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2408:32:2408:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2408:32:2408:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2408:33:2408:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2408:39:2408:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:39:2408:39 | 2 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2408:42:2408:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:42:2408:42 | 3 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2409:13:2409:13 | u | | file://:0:0:0:0 | & | -| main.rs:2409:13:2409:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2409:18:2409:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2409:18:2409:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2409:18:2409:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2409:18:2409:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2411:17:2411:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2411:17:2411:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2411:17:2411:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2411:25:2411:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2411:25:2411:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2411:25:2411:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2412:9:2412:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2412:9:2412:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2412:9:2412:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2412:20:2412:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2413:13:2413:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2413:13:2413:13 | u | | file://:0:0:0:0 | & | -| main.rs:2413:18:2413:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2413:18:2413:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2413:18:2413:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2415:33:2415:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:36:2415:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:45:2415:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:48:2415:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2422:17:2422:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2422:17:2422:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2422:17:2422:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2422:17:2422:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2422:17:2422:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2422:17:2422:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2422:17:2422:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2422:24:2422:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2422:24:2422:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2422:24:2422:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2422:24:2422:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2422:24:2422:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2422:24:2422:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2422:24:2422:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2423:9:2423:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2423:9:2423:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2423:9:2423:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2423:9:2423:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2423:9:2423:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2423:9:2423:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2423:9:2423:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2423:9:2423:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2423:9:2423:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2423:9:2423:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2423:9:2423:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2423:9:2423:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2423:21:2423:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2423:24:2423:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2423:24:2423:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2423:24:2423:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2423:24:2423:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2423:33:2423:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2423:33:2423:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2424:9:2424:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2424:9:2424:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:9:2424:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2424:9:2424:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2424:9:2424:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2424:9:2424:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2424:9:2424:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2424:9:2424:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2424:9:2424:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2424:9:2424:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2424:9:2424:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2424:9:2424:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2424:21:2424:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:24:2424:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2424:24:2424:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2424:24:2424:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2424:24:2424:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2424:33:2424:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2424:33:2424:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2425:13:2425:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2425:13:2425:15 | key | | file://:0:0:0:0 | & | -| main.rs:2425:13:2425:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2425:20:2425:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2425:20:2425:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2425:20:2425:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2425:20:2425:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2425:20:2425:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2425:20:2425:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2425:20:2425:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2425:20:2425:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2425:20:2425:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2425:20:2425:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2425:20:2425:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2425:20:2425:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2425:20:2425:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2426:13:2426:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2426:13:2426:17 | value | | file://:0:0:0:0 | & | -| main.rs:2426:13:2426:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2426:13:2426:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2426:13:2426:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2426:13:2426:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2426:22:2426:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2426:22:2426:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2426:22:2426:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2426:22:2426:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2426:22:2426:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2426:22:2426:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2426:22:2426:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2426:22:2426:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2426:22:2426:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2426:22:2426:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2426:22:2426:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2426:22:2426:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2426:22:2426:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2427:13:2427:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2427:13:2427:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2427:13:2427:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:13:2427:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2427:13:2427:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2427:13:2427:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2427:13:2427:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2427:13:2427:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2427:14:2427:16 | key | | file://:0:0:0:0 | & | -| main.rs:2427:14:2427:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:19:2427:23 | value | | file://:0:0:0:0 | & | -| main.rs:2427:19:2427:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2427:19:2427:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2427:19:2427:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2427:19:2427:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2427:29:2427:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2427:29:2427:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:29:2427:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2427:29:2427:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2427:29:2427:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2427:29:2427:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2427:29:2427:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2427:29:2427:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2427:29:2427:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:29:2427:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2427:29:2427:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2427:29:2427:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2427:29:2427:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2428:13:2428:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2428:13:2428:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2428:13:2428:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:13:2428:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2428:13:2428:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2428:13:2428:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2428:13:2428:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2428:13:2428:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2428:14:2428:16 | key | | file://:0:0:0:0 | & | -| main.rs:2428:14:2428:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:19:2428:23 | value | | file://:0:0:0:0 | & | -| main.rs:2428:19:2428:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2428:19:2428:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2428:19:2428:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2428:19:2428:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2428:29:2428:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2428:29:2428:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2428:29:2428:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:29:2428:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2428:29:2428:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2428:29:2428:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2428:29:2428:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2428:29:2428:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2428:30:2428:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2428:30:2428:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:30:2428:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2428:30:2428:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2428:30:2428:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2428:30:2428:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2428:30:2428:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2432:17:2432:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2432:26:2432:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2432:26:2432:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2434:23:2434:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2434:23:2434:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2434:27:2434:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2434:27:2434:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2436:18:2436:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2448:40:2450:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2448:40:2450:9 | { ... } | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2448:40:2450:9 | { ... } | T.T | main.rs:2447:10:2447:19 | T | -| main.rs:2449:13:2449:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2449:13:2449:16 | None | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2449:13:2449:16 | None | T.T | main.rs:2447:10:2447:19 | T | -| main.rs:2452:30:2454:9 | { ... } | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2452:30:2454:9 | { ... } | T | main.rs:2447:10:2447:19 | T | -| main.rs:2453:13:2453:28 | S1(...) | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2453:13:2453:28 | S1(...) | T | main.rs:2447:10:2447:19 | T | -| main.rs:2453:16:2453:27 | ...::default(...) | | main.rs:2447:10:2447:19 | T | -| main.rs:2456:19:2456:22 | SelfParam | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2456:19:2456:22 | SelfParam | T | main.rs:2447:10:2447:19 | T | -| main.rs:2456:33:2458:9 | { ... } | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2456:33:2458:9 | { ... } | T | main.rs:2447:10:2447:19 | T | -| main.rs:2457:13:2457:16 | self | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2457:13:2457:16 | self | T | main.rs:2447:10:2447:19 | T | -| main.rs:2469:15:2469:15 | x | | main.rs:2469:12:2469:12 | T | -| main.rs:2469:26:2471:5 | { ... } | | main.rs:2469:12:2469:12 | T | -| main.rs:2470:9:2470:9 | x | | main.rs:2469:12:2469:12 | T | -| main.rs:2474:13:2474:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2474:13:2474:14 | x1 | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2474:13:2474:14 | x1 | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2474:34:2474:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2474:34:2474:48 | ...::assoc_fun(...) | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2474:34:2474:48 | ...::assoc_fun(...) | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2475:13:2475:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2475:13:2475:14 | x2 | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2475:13:2475:14 | x2 | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2475:18:2475:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2475:18:2475:38 | ...::assoc_fun(...) | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2475:18:2475:38 | ...::assoc_fun(...) | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2476:13:2476:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2476:13:2476:14 | x3 | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2476:13:2476:14 | x3 | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2476:18:2476:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2476:18:2476:32 | ...::assoc_fun(...) | T | main.rs:2442:5:2442:20 | S1 | -| main.rs:2476:18:2476:32 | ...::assoc_fun(...) | T.T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2477:13:2477:14 | x4 | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2477:13:2477:14 | x4 | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2477:18:2477:48 | ...::method(...) | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2477:18:2477:48 | ...::method(...) | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2477:35:2477:47 | ...::default(...) | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2477:35:2477:47 | ...::default(...) | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2478:13:2478:14 | x5 | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2478:13:2478:14 | x5 | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2478:18:2478:42 | ...::method(...) | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2478:18:2478:42 | ...::method(...) | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2478:29:2478:41 | ...::default(...) | | main.rs:2442:5:2442:20 | S1 | -| main.rs:2478:29:2478:41 | ...::default(...) | T | main.rs:2444:5:2445:14 | S2 | -| main.rs:2479:13:2479:14 | x6 | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2479:13:2479:14 | x6 | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2479:18:2479:45 | S4::<...>(...) | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2479:18:2479:45 | S4::<...>(...) | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2479:27:2479:44 | ...::default(...) | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2480:13:2480:14 | x7 | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2480:13:2480:14 | x7 | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2480:18:2480:23 | S4(...) | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2480:18:2480:23 | S4(...) | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2480:21:2480:22 | S2 | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2481:13:2481:14 | x8 | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2481:13:2481:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2481:18:2481:22 | S4(...) | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2481:18:2481:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2481:21:2481:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2482:13:2482:14 | x9 | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2482:13:2482:14 | x9 | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2482:18:2482:34 | S4(...) | | main.rs:2463:5:2463:27 | S4 | -| main.rs:2482:18:2482:34 | S4(...) | T4 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2482:21:2482:33 | ...::default(...) | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2483:13:2483:15 | x10 | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2483:13:2483:15 | x10 | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2483:19:2486:9 | S5::<...> {...} | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2483:19:2486:9 | S5::<...> {...} | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2485:20:2485:37 | ...::default(...) | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2487:13:2487:15 | x11 | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2487:13:2487:15 | x11 | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2487:19:2487:34 | S5 {...} | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2487:19:2487:34 | S5 {...} | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2487:31:2487:32 | S2 | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2488:13:2488:15 | x12 | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2488:13:2488:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:19:2488:33 | S5 {...} | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2488:19:2488:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:31:2488:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2489:13:2489:15 | x13 | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2489:13:2489:15 | x13 | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2489:19:2492:9 | S5 {...} | | main.rs:2465:5:2467:5 | S5 | -| main.rs:2489:19:2492:9 | S5 {...} | T5 | main.rs:2444:5:2445:14 | S2 | -| main.rs:2491:20:2491:32 | ...::default(...) | | main.rs:2444:5:2445:14 | S2 | -| main.rs:2493:13:2493:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2493:19:2493:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2493:30:2493:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:35:2504:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2502:35:2504:9 | { ... } | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2502:35:2504:9 | { ... } | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2503:13:2503:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2503:13:2503:26 | TupleExpr | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2503:13:2503:26 | TupleExpr | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2503:14:2503:18 | S1 {...} | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2503:21:2503:25 | S1 {...} | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2505:16:2505:19 | SelfParam | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2509:13:2509:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2509:13:2509:13 | a | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2509:13:2509:13 | a | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2509:17:2509:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2509:17:2509:30 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2509:17:2509:30 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2510:17:2510:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2510:17:2510:17 | b | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2510:17:2510:17 | b | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2510:21:2510:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2510:21:2510:34 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2510:21:2510:34 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:13:2511:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2511:13:2511:18 | TuplePat | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:13:2511:18 | TuplePat | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:14:2511:14 | c | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:17:2511:17 | d | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:22:2511:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2511:22:2511:35 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2511:22:2511:35 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:13:2512:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2512:13:2512:22 | TuplePat | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:13:2512:22 | TuplePat | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:18:2512:18 | e | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:21:2512:21 | f | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:26:2512:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2512:26:2512:39 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2512:26:2512:39 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:13:2513:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2513:13:2513:26 | TuplePat | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:13:2513:26 | TuplePat | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:18:2513:18 | g | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:25:2513:25 | h | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:30:2513:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2513:30:2513:43 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2513:30:2513:43 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2515:9:2515:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2515:9:2515:9 | a | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2515:9:2515:9 | a | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2515:9:2515:11 | a.0 | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2516:9:2516:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2516:9:2516:9 | b | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2516:9:2516:9 | b | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2516:9:2516:11 | b.1 | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2517:9:2517:9 | c | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2518:9:2518:9 | d | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2519:9:2519:9 | e | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2520:9:2520:9 | f | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2521:9:2521:9 | g | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2522:9:2522:9 | h | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2527:13:2527:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2527:17:2527:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2528:13:2528:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2528:17:2528:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2529:13:2529:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2529:13:2529:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2529:13:2529:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2529:20:2529:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2529:20:2529:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2529:20:2529:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2529:21:2529:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2529:24:2529:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2530:13:2530:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2530:22:2530:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2530:22:2530:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2530:22:2530:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2530:22:2530:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2531:13:2531:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2531:23:2531:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2531:23:2531:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2531:23:2531:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2531:23:2531:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2533:13:2533:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2533:13:2533:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:13:2533:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:20:2533:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2533:20:2533:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:20:2533:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2533:20:2533:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:20:2533:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:21:2533:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:24:2533:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:15:2534:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2534:15:2534:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:15:2534:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:13:2535:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2535:13:2535:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:13:2535:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:14:2535:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:17:2535:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:30:2535:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2535:30:2535:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2535:30:2535:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2535:30:2535:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2536:13:2536:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2536:13:2536:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2536:13:2536:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2536:25:2536:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2536:25:2536:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2536:25:2536:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2536:25:2536:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2538:13:2538:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2538:17:2538:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2538:17:2538:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2538:17:2538:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2538:17:2538:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:13:2540:13 | y | | file://:0:0:0:0 | & | -| main.rs:2540:13:2540:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2540:13:2540:13 | y | &T.0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2540:13:2540:13 | y | &T.1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2540:17:2540:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2540:17:2540:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2540:17:2540:31 | &... | &T.0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2540:17:2540:31 | &... | &T.1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2540:18:2540:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2540:18:2540:31 | ...::get_pair(...) | 0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2540:18:2540:31 | ...::get_pair(...) | 1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2541:9:2541:9 | y | | file://:0:0:0:0 | & | -| main.rs:2541:9:2541:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2541:9:2541:9 | y | &T.0(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2541:9:2541:9 | y | &T.1(2) | main.rs:2498:5:2499:16 | S1 | -| main.rs:2541:9:2541:11 | y.0 | | main.rs:2498:5:2499:16 | S1 | -| main.rs:2548:13:2548:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2548:13:2548:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2548:13:2548:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:27:2548:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2548:27:2548:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2548:27:2548:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:36:2548:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:15:2551:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2551:15:2551:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:15:2551:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:13:2552:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2552:13:2552:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:13:2552:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:17:2552:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2553:26:2553:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2553:26:2553:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2553:26:2553:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2553:26:2553:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2555:13:2555:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2555:13:2555:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2555:13:2555:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2557:26:2557:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2557:26:2557:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2557:26:2557:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2557:26:2557:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2562:13:2562:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2562:13:2562:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:13:2562:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2562:13:2562:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:13:2562:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:26:2562:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2562:26:2562:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:26:2562:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2562:26:2562:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:26:2562:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:35:2562:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2562:35:2562:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:35:2562:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:44:2562:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2563:15:2563:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2563:15:2563:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2563:15:2563:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2563:15:2563:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2563:15:2563:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2564:13:2564:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2564:13:2564:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2564:13:2564:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2564:13:2564:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2564:13:2564:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2566:26:2566:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2566:26:2566:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2566:26:2566:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2566:26:2566:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2578:36:2580:9 | { ... } | | main.rs:2575:5:2575:22 | Path | -| main.rs:2579:13:2579:19 | Path {...} | | main.rs:2575:5:2575:22 | Path | -| main.rs:2582:29:2582:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2582:29:2582:33 | SelfParam | &T | main.rs:2575:5:2575:22 | Path | -| main.rs:2582:59:2584:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2582:59:2584:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2582:59:2584:9 | { ... } | T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2583:13:2583:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2583:13:2583:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2583:13:2583:30 | Ok(...) | T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2583:16:2583:29 | ...::new(...) | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2590:39:2592:9 | { ... } | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2591:13:2591:22 | PathBuf {...} | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2600:18:2600:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2600:18:2600:22 | SelfParam | &T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2600:34:2604:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2600:34:2604:9 | { ... } | &T | main.rs:2575:5:2575:22 | Path | -| main.rs:2602:33:2602:43 | ...::new(...) | | main.rs:2575:5:2575:22 | Path | -| main.rs:2603:13:2603:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2603:13:2603:17 | &path | &T | main.rs:2575:5:2575:22 | Path | -| main.rs:2603:14:2603:17 | path | | main.rs:2575:5:2575:22 | Path | -| main.rs:2608:13:2608:17 | path1 | | main.rs:2575:5:2575:22 | Path | -| main.rs:2608:21:2608:31 | ...::new(...) | | main.rs:2575:5:2575:22 | Path | -| main.rs:2609:13:2609:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2609:13:2609:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2609:13:2609:17 | path2 | T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2609:21:2609:25 | path1 | | main.rs:2575:5:2575:22 | Path | -| main.rs:2609:21:2609:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2609:21:2609:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2609:21:2609:40 | path1.canonicalize() | T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2610:13:2610:17 | path3 | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2610:21:2610:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2610:21:2610:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2610:21:2610:25 | path2 | T | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2610:21:2610:34 | path2.unwrap() | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2612:13:2612:20 | pathbuf1 | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2612:24:2612:37 | ...::new(...) | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2613:24:2613:31 | pathbuf1 | | main.rs:2587:5:2587:25 | PathBuf | -| main.rs:2625:5:2625:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2626:5:2626:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2626:20:2626:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2626:41:2626:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2642:5:2642:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1815:13:1815:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1815:13:1815:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1815:13:1815:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1815:24:1815:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1821:16:1821:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1821:22:1821:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1821:40:1826:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1822:13:1825:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1823:20:1823:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1823:20:1823:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1823:20:1823:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1823:30:1823:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1824:20:1824:23 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1824:20:1824:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:20:1824:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:30:1824:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1830:23:1830:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1830:23:1830:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1830:34:1830:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1831:13:1831:16 | self | | file://:0:0:0:0 | & | +| main.rs:1831:13:1831:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1831:13:1831:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1831:13:1831:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1831:24:1831:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1832:13:1832:16 | self | | file://:0:0:0:0 | & | +| main.rs:1832:13:1832:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1832:13:1832:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:13:1832:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1832:24:1832:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1838:16:1838:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1838:30:1843:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1839:13:1842:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1840:20:1840:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1840:21:1840:24 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1840:21:1840:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:20:1841:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:21:1841:24 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1841:21:1841:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1848:16:1848:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1848:30:1853:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1849:13:1852:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1850:20:1850:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:21:1850:24 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1850:21:1850:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:20:1851:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:21:1851:24 | self | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1851:21:1851:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1857:15:1857:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1857:15:1857:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1857:22:1857:26 | other | | file://:0:0:0:0 | & | +| main.rs:1857:22:1857:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1857:44:1859:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | +| main.rs:1858:13:1858:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1858:13:1858:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:13:1858:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1858:13:1858:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1858:23:1858:27 | other | | file://:0:0:0:0 | & | +| main.rs:1858:23:1858:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1858:23:1858:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:34:1858:37 | self | | file://:0:0:0:0 | & | +| main.rs:1858:34:1858:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1858:34:1858:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:34:1858:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1858:44:1858:48 | other | | file://:0:0:0:0 | & | +| main.rs:1858:44:1858:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1858:44:1858:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:15:1861:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1861:15:1861:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1861:22:1861:26 | other | | file://:0:0:0:0 | & | +| main.rs:1861:22:1861:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1861:44:1863:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | +| main.rs:1862:13:1862:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1862:13:1862:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1862:13:1862:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1862:23:1862:27 | other | | file://:0:0:0:0 | & | +| main.rs:1862:23:1862:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1862:23:1862:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1862:34:1862:37 | self | | file://:0:0:0:0 | & | +| main.rs:1862:34:1862:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1862:34:1862:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1862:34:1862:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1862:44:1862:48 | other | | file://:0:0:0:0 | & | +| main.rs:1862:44:1862:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1862:44:1862:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:24:1867:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1867:24:1867:28 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1867:31:1867:35 | other | | file://:0:0:0:0 | & | +| main.rs:1867:31:1867:35 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1867:75:1869:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1867:75:1869:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1868:13:1868:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:13:1868:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1868:13:1868:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1868:14:1868:17 | self | | file://:0:0:0:0 | & | +| main.rs:1868:14:1868:17 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1868:14:1868:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:14:1868:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:23:1868:26 | self | | file://:0:0:0:0 | & | +| main.rs:1868:23:1868:26 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1868:23:1868:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:43:1868:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1868:43:1868:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:44:1868:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:45:1868:49 | other | | file://:0:0:0:0 | & | +| main.rs:1868:45:1868:49 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1868:45:1868:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:45:1868:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:55:1868:59 | other | | file://:0:0:0:0 | & | +| main.rs:1868:55:1868:59 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1868:55:1868:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:15:1871:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1871:15:1871:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1871:22:1871:26 | other | | file://:0:0:0:0 | & | +| main.rs:1871:22:1871:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1871:44:1873:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1872:13:1872:16 | self | | file://:0:0:0:0 | & | +| main.rs:1872:13:1872:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1872:13:1872:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:13:1872:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1872:13:1872:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1872:22:1872:26 | other | | file://:0:0:0:0 | & | +| main.rs:1872:22:1872:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1872:22:1872:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:33:1872:36 | self | | file://:0:0:0:0 | & | +| main.rs:1872:33:1872:36 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1872:33:1872:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:33:1872:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1872:42:1872:46 | other | | file://:0:0:0:0 | & | +| main.rs:1872:42:1872:46 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1872:42:1872:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1875:15:1875:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1875:15:1875:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1875:22:1875:26 | other | | file://:0:0:0:0 | & | +| main.rs:1875:22:1875:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1875:44:1877:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1876:13:1876:16 | self | | file://:0:0:0:0 | & | +| main.rs:1876:13:1876:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1876:13:1876:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:13:1876:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1876:13:1876:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1876:23:1876:27 | other | | file://:0:0:0:0 | & | +| main.rs:1876:23:1876:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1876:23:1876:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:34:1876:37 | self | | file://:0:0:0:0 | & | +| main.rs:1876:34:1876:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1876:34:1876:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:34:1876:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1876:44:1876:48 | other | | file://:0:0:0:0 | & | +| main.rs:1876:44:1876:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1876:44:1876:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:15:1879:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1879:15:1879:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1879:22:1879:26 | other | | file://:0:0:0:0 | & | +| main.rs:1879:22:1879:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1879:44:1881:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1880:13:1880:16 | self | | file://:0:0:0:0 | & | +| main.rs:1880:13:1880:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1880:13:1880:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1880:13:1880:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1880:13:1880:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1880:22:1880:26 | other | | file://:0:0:0:0 | & | +| main.rs:1880:22:1880:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1880:22:1880:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1880:33:1880:36 | self | | file://:0:0:0:0 | & | +| main.rs:1880:33:1880:36 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1880:33:1880:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1880:33:1880:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1880:42:1880:46 | other | | file://:0:0:0:0 | & | +| main.rs:1880:42:1880:46 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1880:42:1880:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1883:15:1883:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1883:15:1883:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1883:22:1883:26 | other | | file://:0:0:0:0 | & | +| main.rs:1883:22:1883:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1883:44:1885:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1884:13:1884:16 | self | | file://:0:0:0:0 | & | +| main.rs:1884:13:1884:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1884:13:1884:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:13:1884:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1884:13:1884:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1884:23:1884:27 | other | | file://:0:0:0:0 | & | +| main.rs:1884:23:1884:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1884:23:1884:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:34:1884:37 | self | | file://:0:0:0:0 | & | +| main.rs:1884:34:1884:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1884:34:1884:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:34:1884:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1884:44:1884:48 | other | | file://:0:0:0:0 | & | +| main.rs:1884:44:1884:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1884:44:1884:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:26:1888:26 | a | | main.rs:1888:18:1888:23 | T | +| main.rs:1888:32:1888:32 | b | | main.rs:1888:18:1888:23 | T | +| main.rs:1888:51:1890:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:1889:9:1889:9 | a | | main.rs:1888:18:1888:23 | T | +| main.rs:1889:9:1889:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:1889:13:1889:13 | b | | main.rs:1888:18:1888:23 | T | +| main.rs:1896:13:1896:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1896:22:1896:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1896:23:1896:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:23:1896:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1896:31:1896:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:13:1897:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1897:22:1897:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1897:23:1897:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:23:1897:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1897:31:1897:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1898:13:1898:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1898:22:1898:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1898:23:1898:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1898:23:1898:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1898:30:1898:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:13:1899:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1899:22:1899:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1899:23:1899:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:23:1899:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1899:31:1899:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:13:1900:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1900:22:1900:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1900:23:1900:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:23:1900:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1900:30:1900:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:13:1901:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1901:22:1901:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1901:23:1901:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:23:1901:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1901:32:1901:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:13:1904:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:23:1904:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:23:1904:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:31:1904:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:13:1905:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:23:1905:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:23:1905:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:31:1905:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:13:1906:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:23:1906:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:23:1906:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:31:1906:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:13:1907:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:23:1907:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:23:1907:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:31:1907:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:13:1908:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:23:1908:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:23:1908:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:31:1908:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1909:39:1909:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1909:45:1909:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:17:1912:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:34:1912:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:9:1913:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:9:1913:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1913:27:1913:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1915:17:1915:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1915:34:1915:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:9:1916:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:9:1916:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1916:27:1916:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:17:1918:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:34:1918:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:9:1919:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:9:1919:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1919:27:1919:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:17:1921:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:34:1921:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:9:1922:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:9:1922:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1922:27:1922:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:17:1924:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:34:1924:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:9:1925:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:9:1925:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1925:27:1925:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:13:1928:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:26:1928:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:26:1928:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:34:1928:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:13:1929:21 | i64_bitor | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1929:13:1929:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:13:1929:21 | i64_bitor | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:25:1929:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:25:1929:37 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | +| main.rs:1929:25:1929:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:25:1929:37 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:33:1929:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:13:1930:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:26:1930:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:26:1930:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:34:1930:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:13:1931:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:23:1931:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:23:1931:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:32:1931:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:13:1932:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:23:1932:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:23:1932:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:32:1932:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1935:17:1935:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1935:37:1935:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1936:9:1936:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1936:9:1936:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1936:30:1936:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1938:17:1938:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1938:36:1938:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:9:1939:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:9:1939:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1939:29:1939:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1941:17:1941:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1941:37:1941:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:9:1942:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:9:1942:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1942:30:1942:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:17:1944:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:34:1944:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:9:1945:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:9:1945:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1945:28:1945:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:17:1947:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:34:1947:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:9:1948:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:9:1948:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1948:28:1948:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:13:1950:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:24:1950:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:13:1951:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:23:1951:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:24:1951:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:13:1954:14 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1954:18:1954:36 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1954:28:1954:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1954:28:1954:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:34:1954:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1954:34:1954:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1955:13:1955:14 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1955:18:1955:36 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1955:28:1955:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1955:28:1955:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1955:34:1955:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1955:34:1955:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:13:1958:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:23:1958:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1958:23:1958:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:29:1958:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1959:13:1959:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1959:23:1959:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1959:23:1959:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1959:29:1959:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1960:13:1960:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1960:23:1960:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1960:23:1960:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1960:28:1960:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1961:13:1961:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1961:23:1961:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1961:23:1961:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1961:29:1961:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1962:13:1962:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:23:1962:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1962:23:1962:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:28:1962:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1963:13:1963:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1963:23:1963:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1963:23:1963:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1963:29:1963:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1966:13:1966:20 | vec2_add | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1966:24:1966:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1966:24:1966:30 | ... + ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1966:29:1966:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1967:13:1967:20 | vec2_sub | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1967:24:1967:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1967:24:1967:30 | ... - ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1967:29:1967:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1968:13:1968:20 | vec2_mul | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1968:24:1968:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1968:24:1968:30 | ... * ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1968:29:1968:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1969:13:1969:20 | vec2_div | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1969:24:1969:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1969:24:1969:30 | ... / ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1969:29:1969:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1970:13:1970:20 | vec2_rem | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1970:24:1970:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1970:24:1970:30 | ... % ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1970:29:1970:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1973:17:1973:31 | vec2_add_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1973:35:1973:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1974:9:1974:23 | vec2_add_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1974:9:1974:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1974:28:1974:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1976:17:1976:31 | vec2_sub_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1976:35:1976:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1977:9:1977:23 | vec2_sub_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1977:9:1977:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1977:28:1977:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1979:17:1979:31 | vec2_mul_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1979:35:1979:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1980:9:1980:23 | vec2_mul_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1980:9:1980:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1980:28:1980:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1982:17:1982:31 | vec2_div_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1982:35:1982:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1983:9:1983:23 | vec2_div_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1983:9:1983:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1983:28:1983:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1985:17:1985:31 | vec2_rem_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1985:35:1985:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1986:9:1986:23 | vec2_rem_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1986:9:1986:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1986:28:1986:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1989:13:1989:23 | vec2_bitand | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1989:27:1989:28 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1989:27:1989:33 | ... & ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1989:32:1989:33 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1990:13:1990:22 | vec2_bitor | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1990:26:1990:27 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1990:26:1990:32 | ... \| ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1990:31:1990:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1991:13:1991:23 | vec2_bitxor | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1991:27:1991:28 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1991:27:1991:33 | ... ^ ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1991:32:1991:33 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1992:13:1992:20 | vec2_shl | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1992:24:1992:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1992:24:1992:33 | ... << ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1992:30:1992:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1993:13:1993:20 | vec2_shr | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1993:24:1993:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1993:24:1993:33 | ... >> ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1993:30:1993:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1996:17:1996:34 | vec2_bitand_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1996:38:1996:39 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1997:9:1997:26 | vec2_bitand_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1997:9:1997:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1997:31:1997:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1999:17:1999:33 | vec2_bitor_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1999:37:1999:38 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2000:9:2000:25 | vec2_bitor_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2000:9:2000:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2000:30:2000:31 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2002:17:2002:34 | vec2_bitxor_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2002:38:2002:39 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2003:9:2003:26 | vec2_bitxor_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2003:9:2003:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2003:31:2003:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2005:17:2005:31 | vec2_shl_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2005:35:2005:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2006:9:2006:23 | vec2_shl_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2006:9:2006:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2006:29:2006:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2008:17:2008:31 | vec2_shr_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2008:35:2008:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2009:9:2009:23 | vec2_shr_assign | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2009:9:2009:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2009:29:2009:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2012:13:2012:20 | vec2_neg | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2012:24:2012:26 | - ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2012:25:2012:26 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2013:13:2013:20 | vec2_not | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2013:24:2013:26 | ! ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2013:25:2013:26 | v1 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2016:13:2016:24 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2016:28:2016:45 | ...::default(...) | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2017:13:2017:26 | vec2_zero_plus | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2017:30:2017:48 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2017:30:2017:63 | ... + ... | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2017:40:2017:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2017:40:2017:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:46:2017:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2017:46:2017:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:52:2017:63 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2021:13:2021:24 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2021:28:2021:45 | ...::default(...) | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2022:13:2022:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2022:30:2022:48 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2022:30:2022:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2022:40:2022:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:40:2022:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2022:46:2022:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2022:46:2022:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2022:53:2022:64 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:2032:18:2032:21 | SelfParam | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2035:25:2037:5 | { ... } | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2036:9:2036:10 | S1 | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2039:41:2041:5 | { ... } | | main.rs:2039:16:2039:39 | impl ... | +| main.rs:2040:9:2040:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2040:9:2040:20 | { ... } | Output | main.rs:2029:5:2029:14 | S1 | +| main.rs:2040:17:2040:18 | S1 | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2049:13:2049:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2049:13:2049:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2049:13:2049:42 | SelfParam | Ptr.&T | main.rs:2043:5:2043:14 | S2 | +| main.rs:2050:13:2050:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2050:13:2050:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2051:44:2053:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2051:44:2053:9 | { ... } | T | main.rs:2029:5:2029:14 | S1 | +| main.rs:2052:13:2052:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2052:13:2052:38 | ...::Ready(...) | T | main.rs:2029:5:2029:14 | S1 | +| main.rs:2052:36:2052:37 | S1 | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2056:41:2058:5 | { ... } | | main.rs:2056:16:2056:39 | impl ... | +| main.rs:2057:9:2057:10 | S2 | | main.rs:2043:5:2043:14 | S2 | +| main.rs:2057:9:2057:10 | S2 | | main.rs:2056:16:2056:39 | impl ... | +| main.rs:2061:9:2061:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2061:9:2061:12 | f1(...) | Output | main.rs:2029:5:2029:14 | S1 | +| main.rs:2061:9:2061:18 | await ... | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2062:9:2062:12 | f2(...) | | main.rs:2039:16:2039:39 | impl ... | +| main.rs:2062:9:2062:18 | await ... | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2063:9:2063:12 | f3(...) | | main.rs:2056:16:2056:39 | impl ... | +| main.rs:2063:9:2063:18 | await ... | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2064:9:2064:10 | S2 | | main.rs:2043:5:2043:14 | S2 | +| main.rs:2064:9:2064:16 | await S2 | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2065:13:2065:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2065:13:2065:13 | b | Output | main.rs:2029:5:2029:14 | S1 | +| main.rs:2065:17:2065:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2065:17:2065:28 | { ... } | Output | main.rs:2029:5:2029:14 | S1 | +| main.rs:2065:25:2065:26 | S1 | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2066:9:2066:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2066:9:2066:9 | b | Output | main.rs:2029:5:2029:14 | S1 | +| main.rs:2066:9:2066:15 | await b | | main.rs:2029:5:2029:14 | S1 | +| main.rs:2077:15:2077:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2077:15:2077:19 | SelfParam | &T | main.rs:2076:5:2078:5 | Self [trait Trait1] | +| main.rs:2081:15:2081:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2081:15:2081:19 | SelfParam | &T | main.rs:2080:5:2082:5 | Self [trait Trait2] | +| main.rs:2085:15:2085:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2085:15:2085:19 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | +| main.rs:2089:15:2089:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2089:15:2089:19 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | +| main.rs:2092:37:2094:5 | { ... } | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2093:9:2093:10 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2093:9:2093:10 | S1 | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2097:18:2097:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2097:18:2097:22 | SelfParam | &T | main.rs:2096:5:2098:5 | Self [trait MyTrait] | +| main.rs:2101:18:2101:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2101:18:2101:22 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | +| main.rs:2101:31:2103:9 | { ... } | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2102:13:2102:14 | S2 | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2107:18:2107:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2107:18:2107:22 | SelfParam | &T | main.rs:2074:5:2074:22 | S3 | +| main.rs:2107:18:2107:22 | SelfParam | &T.T3 | main.rs:2106:10:2106:17 | T | +| main.rs:2107:30:2110:9 | { ... } | | main.rs:2106:10:2106:17 | T | +| main.rs:2108:17:2108:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2108:17:2108:21 | S3(...) | | main.rs:2074:5:2074:22 | S3 | +| main.rs:2108:17:2108:21 | S3(...) | &T | main.rs:2074:5:2074:22 | S3 | +| main.rs:2108:17:2108:21 | S3(...) | &T.T3 | main.rs:2106:10:2106:17 | T | +| main.rs:2108:25:2108:28 | self | | file://:0:0:0:0 | & | +| main.rs:2108:25:2108:28 | self | &T | main.rs:2074:5:2074:22 | S3 | +| main.rs:2108:25:2108:28 | self | &T.T3 | main.rs:2106:10:2106:17 | T | +| main.rs:2109:13:2109:21 | t.clone() | | main.rs:2106:10:2106:17 | T | +| main.rs:2113:45:2115:5 | { ... } | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2114:9:2114:10 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2114:9:2114:10 | S1 | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2117:41:2117:41 | t | | main.rs:2117:26:2117:38 | B | +| main.rs:2117:52:2119:5 | { ... } | | main.rs:2117:23:2117:23 | A | +| main.rs:2118:9:2118:9 | t | | main.rs:2117:26:2117:38 | B | +| main.rs:2118:9:2118:17 | t.get_a() | | main.rs:2117:23:2117:23 | A | +| main.rs:2121:34:2121:34 | x | | main.rs:2121:24:2121:31 | T | +| main.rs:2121:59:2123:5 | { ... } | | main.rs:2121:43:2121:57 | impl ... | +| main.rs:2121:59:2123:5 | { ... } | impl(T) | main.rs:2121:24:2121:31 | T | +| main.rs:2122:9:2122:13 | S3(...) | | main.rs:2074:5:2074:22 | S3 | +| main.rs:2122:9:2122:13 | S3(...) | | main.rs:2121:43:2121:57 | impl ... | +| main.rs:2122:9:2122:13 | S3(...) | T3 | main.rs:2121:24:2121:31 | T | +| main.rs:2122:9:2122:13 | S3(...) | impl(T) | main.rs:2121:24:2121:31 | T | +| main.rs:2122:12:2122:12 | x | | main.rs:2121:24:2121:31 | T | +| main.rs:2125:34:2125:34 | x | | main.rs:2125:24:2125:31 | T | +| main.rs:2125:67:2127:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2125:67:2127:5 | { ... } | T | main.rs:2125:50:2125:64 | impl ... | +| main.rs:2125:67:2127:5 | { ... } | T.impl(T) | main.rs:2125:24:2125:31 | T | +| main.rs:2126:9:2126:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2126:9:2126:19 | Some(...) | T | main.rs:2074:5:2074:22 | S3 | +| main.rs:2126:9:2126:19 | Some(...) | T | main.rs:2125:50:2125:64 | impl ... | +| main.rs:2126:9:2126:19 | Some(...) | T.T3 | main.rs:2125:24:2125:31 | T | +| main.rs:2126:9:2126:19 | Some(...) | T.impl(T) | main.rs:2125:24:2125:31 | T | +| main.rs:2126:14:2126:18 | S3(...) | | main.rs:2074:5:2074:22 | S3 | +| main.rs:2126:14:2126:18 | S3(...) | | main.rs:2125:50:2125:64 | impl ... | +| main.rs:2126:14:2126:18 | S3(...) | T3 | main.rs:2125:24:2125:31 | T | +| main.rs:2126:14:2126:18 | S3(...) | impl(T) | main.rs:2125:24:2125:31 | T | +| main.rs:2126:17:2126:17 | x | | main.rs:2125:24:2125:31 | T | +| main.rs:2129:34:2129:34 | x | | main.rs:2129:24:2129:31 | T | +| main.rs:2129:78:2131:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2129:78:2131:5 | { ... } | 0(2) | main.rs:2129:44:2129:58 | impl ... | +| main.rs:2129:78:2131:5 | { ... } | 0(2).impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2129:78:2131:5 | { ... } | 1(2) | main.rs:2129:61:2129:75 | impl ... | +| main.rs:2129:78:2131:5 | { ... } | 1(2).impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2130:9:2130:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2130:9:2130:30 | TupleExpr | 0(2) | main.rs:2074:5:2074:22 | S3 | +| main.rs:2130:9:2130:30 | TupleExpr | 0(2) | main.rs:2129:44:2129:58 | impl ... | +| main.rs:2130:9:2130:30 | TupleExpr | 0(2).T3 | main.rs:2129:24:2129:31 | T | +| main.rs:2130:9:2130:30 | TupleExpr | 0(2).impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2130:9:2130:30 | TupleExpr | 1(2) | main.rs:2074:5:2074:22 | S3 | +| main.rs:2130:9:2130:30 | TupleExpr | 1(2) | main.rs:2129:61:2129:75 | impl ... | +| main.rs:2130:9:2130:30 | TupleExpr | 1(2).T3 | main.rs:2129:24:2129:31 | T | +| main.rs:2130:9:2130:30 | TupleExpr | 1(2).impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2130:10:2130:22 | S3(...) | | main.rs:2074:5:2074:22 | S3 | +| main.rs:2130:10:2130:22 | S3(...) | | main.rs:2129:44:2129:58 | impl ... | +| main.rs:2130:10:2130:22 | S3(...) | T3 | main.rs:2129:24:2129:31 | T | +| main.rs:2130:10:2130:22 | S3(...) | impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2130:13:2130:13 | x | | main.rs:2129:24:2129:31 | T | +| main.rs:2130:13:2130:21 | x.clone() | | main.rs:2129:24:2129:31 | T | +| main.rs:2130:25:2130:29 | S3(...) | | main.rs:2074:5:2074:22 | S3 | +| main.rs:2130:25:2130:29 | S3(...) | | main.rs:2129:61:2129:75 | impl ... | +| main.rs:2130:25:2130:29 | S3(...) | T3 | main.rs:2129:24:2129:31 | T | +| main.rs:2130:25:2130:29 | S3(...) | impl(T) | main.rs:2129:24:2129:31 | T | +| main.rs:2130:28:2130:28 | x | | main.rs:2129:24:2129:31 | T | +| main.rs:2133:26:2133:26 | t | | main.rs:2133:29:2133:43 | impl ... | +| main.rs:2133:51:2135:5 | { ... } | | main.rs:2133:23:2133:23 | A | +| main.rs:2134:9:2134:9 | t | | main.rs:2133:29:2133:43 | impl ... | +| main.rs:2134:9:2134:17 | t.get_a() | | main.rs:2133:23:2133:23 | A | +| main.rs:2138:13:2138:13 | x | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2138:17:2138:20 | f1(...) | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2139:9:2139:9 | x | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2140:9:2140:9 | x | | main.rs:2092:16:2092:35 | impl ... + ... | +| main.rs:2141:13:2141:13 | a | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2141:17:2141:32 | get_a_my_trait(...) | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2142:13:2142:13 | b | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2142:17:2142:33 | uses_my_trait1(...) | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2142:32:2142:32 | a | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2143:13:2143:13 | a | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2143:17:2143:32 | get_a_my_trait(...) | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2144:13:2144:13 | c | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2144:17:2144:33 | uses_my_trait2(...) | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2144:32:2144:32 | a | | main.rs:2113:28:2113:43 | impl ... | +| main.rs:2145:13:2145:13 | d | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2145:17:2145:34 | uses_my_trait2(...) | | main.rs:2073:5:2073:14 | S2 | +| main.rs:2145:32:2145:33 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2146:13:2146:13 | e | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2146:17:2146:35 | get_a_my_trait2(...) | | main.rs:2121:43:2121:57 | impl ... | +| main.rs:2146:17:2146:35 | get_a_my_trait2(...) | impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2146:17:2146:43 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2146:33:2146:34 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2149:13:2149:13 | f | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | T | main.rs:2125:50:2125:64 | impl ... | +| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2149:17:2149:44 | ... .unwrap() | | main.rs:2125:50:2125:64 | impl ... | +| main.rs:2149:17:2149:44 | ... .unwrap() | impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2149:17:2149:52 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2149:33:2149:34 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:13:2150:13 | g | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 0(2) | main.rs:2129:44:2129:58 | impl ... | +| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 1(2) | main.rs:2129:61:2129:75 | impl ... | +| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:17:2150:37 | ... .0 | | main.rs:2129:44:2129:58 | impl ... | +| main.rs:2150:17:2150:37 | ... .0 | impl(T) | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:17:2150:45 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2150:33:2150:34 | S1 | | main.rs:2071:5:2072:14 | S1 | +| main.rs:2161:16:2161:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2161:16:2161:20 | SelfParam | &T | main.rs:2157:5:2158:13 | S | +| main.rs:2161:31:2163:9 | { ... } | | main.rs:2157:5:2158:13 | S | +| main.rs:2162:13:2162:13 | S | | main.rs:2157:5:2158:13 | S | +| main.rs:2172:26:2174:9 | { ... } | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2172:26:2174:9 | { ... } | T | main.rs:2171:10:2171:10 | T | +| main.rs:2173:13:2173:38 | MyVec {...} | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2173:13:2173:38 | MyVec {...} | T | main.rs:2171:10:2171:10 | T | +| main.rs:2173:27:2173:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2173:27:2173:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2173:27:2173:36 | ...::new(...) | T | main.rs:2171:10:2171:10 | T | +| main.rs:2176:17:2176:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2176:17:2176:25 | SelfParam | &T | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2176:17:2176:25 | SelfParam | &T.T | main.rs:2171:10:2171:10 | T | +| main.rs:2176:28:2176:32 | value | | main.rs:2171:10:2171:10 | T | +| main.rs:2177:13:2177:16 | self | | file://:0:0:0:0 | & | +| main.rs:2177:13:2177:16 | self | &T | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2177:13:2177:16 | self | &T.T | main.rs:2171:10:2171:10 | T | +| main.rs:2177:13:2177:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2177:13:2177:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2177:13:2177:21 | self.data | T | main.rs:2171:10:2171:10 | T | +| main.rs:2177:28:2177:32 | value | | main.rs:2171:10:2171:10 | T | +| main.rs:2185:18:2185:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2185:18:2185:22 | SelfParam | &T | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2185:18:2185:22 | SelfParam | &T.T | main.rs:2181:10:2181:10 | T | +| main.rs:2185:25:2185:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2185:56:2187:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2185:56:2187:9 | { ... } | &T | main.rs:2181:10:2181:10 | T | +| main.rs:2186:13:2186:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2186:13:2186:29 | &... | &T | main.rs:2181:10:2181:10 | T | +| main.rs:2186:14:2186:17 | self | | file://:0:0:0:0 | & | +| main.rs:2186:14:2186:17 | self | &T | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2186:14:2186:17 | self | &T.T | main.rs:2181:10:2181:10 | T | +| main.rs:2186:14:2186:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2186:14:2186:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2186:14:2186:22 | self.data | T | main.rs:2181:10:2181:10 | T | +| main.rs:2186:14:2186:29 | ...[index] | | main.rs:2181:10:2181:10 | T | +| main.rs:2186:24:2186:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2190:22:2190:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2190:22:2190:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2190:22:2190:26 | slice | &T.[T] | main.rs:2157:5:2158:13 | S | +| main.rs:2191:13:2191:13 | x | | main.rs:2157:5:2158:13 | S | +| main.rs:2191:17:2191:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2191:17:2191:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2191:17:2191:21 | slice | &T.[T] | main.rs:2157:5:2158:13 | S | +| main.rs:2191:17:2191:24 | slice[0] | | main.rs:2157:5:2158:13 | S | +| main.rs:2191:17:2191:30 | ... .foo() | | main.rs:2157:5:2158:13 | S | +| main.rs:2191:23:2191:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2194:37:2194:37 | a | | main.rs:2194:20:2194:34 | T | +| main.rs:2194:43:2194:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2197:5:2199:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2198:9:2198:9 | a | | main.rs:2194:20:2194:34 | T | +| main.rs:2198:9:2198:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2198:11:2198:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2202:17:2202:19 | vec | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2202:17:2202:19 | vec | T | main.rs:2157:5:2158:13 | S | +| main.rs:2202:23:2202:34 | ...::new(...) | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2202:23:2202:34 | ...::new(...) | T | main.rs:2157:5:2158:13 | S | +| main.rs:2203:9:2203:11 | vec | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2203:9:2203:11 | vec | T | main.rs:2157:5:2158:13 | S | +| main.rs:2203:18:2203:18 | S | | main.rs:2157:5:2158:13 | S | +| main.rs:2204:9:2204:11 | vec | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2204:9:2204:11 | vec | T | main.rs:2157:5:2158:13 | S | +| main.rs:2204:9:2204:14 | vec[0] | | main.rs:2157:5:2158:13 | S | +| main.rs:2204:9:2204:20 | ... .foo() | | main.rs:2157:5:2158:13 | S | +| main.rs:2204:13:2204:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2204:13:2204:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2206:13:2206:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2206:13:2206:14 | xs | [T;...] | main.rs:2157:5:2158:13 | S | +| main.rs:2206:21:2206:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2206:26:2206:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2206:26:2206:28 | [...] | [T;...] | main.rs:2157:5:2158:13 | S | +| main.rs:2206:27:2206:27 | S | | main.rs:2157:5:2158:13 | S | +| main.rs:2207:13:2207:13 | x | | main.rs:2157:5:2158:13 | S | +| main.rs:2207:17:2207:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2207:17:2207:18 | xs | [T;...] | main.rs:2157:5:2158:13 | S | +| main.rs:2207:17:2207:21 | xs[0] | | main.rs:2157:5:2158:13 | S | +| main.rs:2207:17:2207:27 | ... .foo() | | main.rs:2157:5:2158:13 | S | +| main.rs:2207:20:2207:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:29:2209:31 | vec | | main.rs:2166:5:2169:5 | MyVec | +| main.rs:2209:29:2209:31 | vec | T | main.rs:2157:5:2158:13 | S | +| main.rs:2209:34:2209:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:34:2209:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2211:23:2211:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2211:23:2211:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2211:23:2211:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2211:23:2211:25 | &xs | &T.[T;...] | main.rs:2157:5:2158:13 | S | +| main.rs:2211:23:2211:25 | &xs | &T.[T] | main.rs:2157:5:2158:13 | S | +| main.rs:2211:24:2211:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2211:24:2211:25 | xs | [T;...] | main.rs:2157:5:2158:13 | S | +| main.rs:2217:13:2217:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2217:17:2217:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2217:25:2217:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2217:25:2217:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2217:25:2217:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2217:25:2217:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2217:25:2217:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2217:25:2217:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2217:25:2217:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2217:38:2217:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2217:38:2217:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2226:19:2226:22 | SelfParam | | main.rs:2222:5:2227:5 | Self [trait MyAdd] | +| main.rs:2226:25:2226:27 | rhs | | main.rs:2222:17:2222:26 | Rhs | +| main.rs:2233:19:2233:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2233:25:2233:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2233:45:2235:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2234:13:2234:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:19:2242:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:25:2242:29 | value | | file://:0:0:0:0 | & | +| main.rs:2242:25:2242:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:46:2244:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2243:13:2243:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2243:14:2243:18 | value | | file://:0:0:0:0 | & | +| main.rs:2243:14:2243:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:19:2251:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:25:2251:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2251:46:2257:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:13:2256:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2252:13:2256:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:16:2252:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2252:22:2254:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2252:22:2254:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2253:17:2253:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2253:17:2253:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2254:20:2256:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2254:20:2256:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2255:17:2255:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2255:17:2255:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2266:19:2266:22 | SelfParam | | main.rs:2260:5:2260:19 | S | +| main.rs:2266:19:2266:22 | SelfParam | T | main.rs:2262:10:2262:17 | T | +| main.rs:2266:25:2266:29 | other | | main.rs:2260:5:2260:19 | S | +| main.rs:2266:25:2266:29 | other | T | main.rs:2262:10:2262:17 | T | +| main.rs:2266:54:2268:9 | { ... } | | main.rs:2260:5:2260:19 | S | +| main.rs:2266:54:2268:9 | { ... } | T | main.rs:2223:9:2223:20 | Output | +| main.rs:2267:13:2267:39 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2267:13:2267:39 | S(...) | T | main.rs:2223:9:2223:20 | Output | +| main.rs:2267:15:2267:22 | (...) | | main.rs:2262:10:2262:17 | T | +| main.rs:2267:15:2267:38 | ... .my_add(...) | | main.rs:2223:9:2223:20 | Output | +| main.rs:2267:16:2267:19 | self | | main.rs:2260:5:2260:19 | S | +| main.rs:2267:16:2267:19 | self | T | main.rs:2262:10:2262:17 | T | +| main.rs:2267:16:2267:21 | self.0 | | main.rs:2262:10:2262:17 | T | +| main.rs:2267:31:2267:35 | other | | main.rs:2260:5:2260:19 | S | +| main.rs:2267:31:2267:35 | other | T | main.rs:2262:10:2262:17 | T | +| main.rs:2267:31:2267:37 | other.0 | | main.rs:2222:5:2227:5 | Self [trait MyAdd] | +| main.rs:2267:31:2267:37 | other.0 | | main.rs:2262:10:2262:17 | T | +| main.rs:2275:19:2275:22 | SelfParam | | main.rs:2260:5:2260:19 | S | +| main.rs:2275:19:2275:22 | SelfParam | T | main.rs:2271:10:2271:17 | T | +| main.rs:2275:25:2275:29 | other | | main.rs:2271:10:2271:17 | T | +| main.rs:2275:51:2277:9 | { ... } | | main.rs:2260:5:2260:19 | S | +| main.rs:2275:51:2277:9 | { ... } | T | main.rs:2223:9:2223:20 | Output | +| main.rs:2276:13:2276:37 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2276:13:2276:37 | S(...) | T | main.rs:2223:9:2223:20 | Output | +| main.rs:2276:15:2276:22 | (...) | | main.rs:2271:10:2271:17 | T | +| main.rs:2276:15:2276:36 | ... .my_add(...) | | main.rs:2223:9:2223:20 | Output | +| main.rs:2276:16:2276:19 | self | | main.rs:2260:5:2260:19 | S | +| main.rs:2276:16:2276:19 | self | T | main.rs:2271:10:2271:17 | T | +| main.rs:2276:16:2276:21 | self.0 | | main.rs:2271:10:2271:17 | T | +| main.rs:2276:31:2276:35 | other | | main.rs:2271:10:2271:17 | T | +| main.rs:2287:19:2287:22 | SelfParam | | main.rs:2260:5:2260:19 | S | +| main.rs:2287:19:2287:22 | SelfParam | T | main.rs:2280:14:2280:14 | T | +| main.rs:2287:25:2287:29 | other | | file://:0:0:0:0 | & | +| main.rs:2287:25:2287:29 | other | &T | main.rs:2280:14:2280:14 | T | +| main.rs:2287:55:2289:9 | { ... } | | main.rs:2260:5:2260:19 | S | +| main.rs:2288:13:2288:37 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2288:15:2288:22 | (...) | | main.rs:2280:14:2280:14 | T | +| main.rs:2288:16:2288:19 | self | | main.rs:2260:5:2260:19 | S | +| main.rs:2288:16:2288:19 | self | T | main.rs:2280:14:2280:14 | T | +| main.rs:2288:16:2288:21 | self.0 | | main.rs:2280:14:2280:14 | T | +| main.rs:2288:31:2288:35 | other | | file://:0:0:0:0 | & | +| main.rs:2288:31:2288:35 | other | &T | main.rs:2280:14:2280:14 | T | +| main.rs:2294:20:2294:24 | value | | main.rs:2292:18:2292:18 | T | +| main.rs:2299:20:2299:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2299:40:2301:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2300:13:2300:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2306:20:2306:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2306:41:2312:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2307:13:2311:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2307:13:2311:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2307:16:2307:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2307:22:2309:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2307:22:2309:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2308:17:2308:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2308:17:2308:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2309:20:2311:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2309:20:2311:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2310:17:2310:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2310:17:2310:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2317:21:2317:25 | value | | main.rs:2315:19:2315:19 | T | +| main.rs:2317:31:2317:31 | x | | main.rs:2315:5:2318:5 | Self [trait MyFrom2] | +| main.rs:2322:21:2322:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2322:33:2322:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2322:48:2324:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2323:13:2323:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:21:2329:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2329:34:2329:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:49:2335:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2330:13:2334:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2330:16:2330:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2330:22:2332:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2331:17:2331:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2332:20:2334:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2333:17:2333:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2340:15:2340:15 | x | | main.rs:2338:5:2344:5 | Self [trait MySelfTrait] | +| main.rs:2343:15:2343:15 | x | | main.rs:2338:5:2344:5 | Self [trait MySelfTrait] | +| main.rs:2348:15:2348:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2348:31:2350:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2349:13:2349:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2349:13:2349:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2349:17:2349:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2353:15:2353:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2353:32:2355:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2354:13:2354:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2354:13:2354:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2354:17:2354:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2360:15:2360:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2360:31:2362:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2361:13:2361:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2361:13:2361:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2365:15:2365:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2365:32:2367:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2366:13:2366:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2371:13:2371:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2371:22:2371:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:22:2371:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2372:9:2372:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2372:9:2372:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2372:18:2372:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:9:2373:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:9:2373:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:18:2373:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2373:18:2373:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:19:2373:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2374:9:2374:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2374:9:2374:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2374:18:2374:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2376:9:2376:15 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2376:9:2376:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2376:9:2376:31 | ... .my_add(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2376:11:2376:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2376:24:2376:30 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2376:24:2376:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2376:26:2376:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2377:9:2377:15 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2377:9:2377:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2377:11:2377:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2377:24:2377:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:9:2378:15 | S(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2378:9:2378:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:9:2378:29 | ... .my_add(...) | | main.rs:2260:5:2260:19 | S | +| main.rs:2378:11:2378:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:24:2378:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2378:24:2378:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:25:2378:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2380:13:2380:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2380:17:2380:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2380:30:2380:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2381:13:2381:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2381:17:2381:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2381:30:2381:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2382:13:2382:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:22:2382:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:38:2382:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2383:9:2383:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2383:23:2383:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2383:30:2383:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2384:9:2384:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2384:23:2384:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2384:29:2384:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2385:9:2385:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2385:27:2385:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2385:34:2385:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2387:9:2387:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2387:17:2387:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2388:9:2388:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2388:17:2388:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2389:9:2389:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2389:18:2389:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2390:9:2390:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2390:18:2390:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2391:9:2391:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2391:25:2391:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2392:9:2392:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2392:25:2392:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:9:2393:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:25:2393:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2394:9:2394:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2394:25:2394:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2402:26:2404:9 | { ... } | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2403:13:2403:25 | MyCallable {...} | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2406:17:2406:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2406:17:2406:21 | SelfParam | &T | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2406:31:2408:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2407:13:2407:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2407:13:2407:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2414:13:2414:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:18:2414:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2414:18:2414:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:19:2414:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:22:2414:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:25:2414:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:18:2415:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2415:18:2415:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:18:2415:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2415:19:2415:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:22:2415:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:25:2415:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:32:2415:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2415:32:2415:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2415:40:2415:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:13:2416:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2416:13:2416:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:18:2416:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2416:18:2416:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:18:2416:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2416:18:2416:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:19:2416:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:22:2416:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:25:2416:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:13:2418:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2418:13:2418:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:13:2418:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2418:21:2418:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2418:21:2418:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:21:2418:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2418:22:2418:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2418:27:2418:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:27:2418:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2418:30:2418:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:30:2418:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2419:13:2419:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2419:13:2419:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2419:18:2419:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2419:18:2419:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2419:18:2419:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2421:13:2421:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2421:13:2421:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2421:21:2421:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2421:21:2421:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2421:22:2421:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2421:28:2421:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2422:13:2422:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2422:18:2422:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2422:18:2422:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2424:13:2424:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2424:13:2424:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2424:26:2424:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:31:2424:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2424:31:2424:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:31:2424:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2424:32:2424:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:32:2424:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2424:35:2424:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:35:2424:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2424:38:2424:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:38:2424:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2425:13:2425:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2425:18:2425:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2425:18:2425:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2427:13:2427:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2427:13:2427:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2427:26:2427:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2427:31:2427:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2427:31:2427:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2427:31:2427:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2427:32:2427:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2427:32:2427:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2427:35:2427:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2428:13:2428:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2428:18:2428:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2428:18:2428:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2430:17:2430:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2430:17:2430:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2430:17:2430:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2430:28:2430:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2430:28:2430:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2430:28:2430:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2430:29:2430:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2430:29:2430:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2430:36:2430:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2430:36:2430:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2430:43:2430:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2430:43:2430:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2431:13:2431:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2431:13:2431:13 | s | | file://:0:0:0:0 | & | +| main.rs:2431:13:2431:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2431:13:2431:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2431:18:2431:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2431:18:2431:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2431:18:2431:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2431:18:2431:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2431:19:2431:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2431:19:2431:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2431:19:2431:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2432:13:2432:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2432:13:2432:13 | s | | file://:0:0:0:0 | & | +| main.rs:2432:13:2432:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2432:13:2432:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2432:18:2432:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2432:18:2432:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2432:18:2432:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2432:18:2432:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2432:23:2432:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2432:23:2432:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2432:23:2432:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2433:13:2433:13 | s | | file://:0:0:0:0 | & | +| main.rs:2433:13:2433:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2433:18:2433:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2433:18:2433:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2433:18:2433:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2435:13:2435:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2435:13:2435:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2436:9:2440:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2436:9:2440:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2437:13:2437:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2437:26:2437:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2437:26:2437:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2438:13:2438:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2438:26:2438:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2438:26:2438:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2439:13:2439:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2439:26:2439:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2439:26:2439:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2441:13:2441:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2441:18:2441:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2441:18:2441:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2443:13:2443:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2443:13:2443:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2443:13:2443:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2444:9:2448:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2444:9:2448:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2444:9:2448:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2444:10:2448:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2444:10:2448:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2445:13:2445:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2445:26:2445:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2445:26:2445:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2446:13:2446:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2446:26:2446:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2446:26:2446:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2447:13:2447:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2447:26:2447:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2447:26:2447:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2449:13:2449:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2449:13:2449:13 | s | | file://:0:0:0:0 | & | +| main.rs:2449:13:2449:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2449:18:2449:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2449:18:2449:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2449:18:2449:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2451:13:2451:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2451:13:2451:21 | callables | [T;...] | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2451:25:2451:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2451:25:2451:81 | [...] | [T;...] | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2451:26:2451:42 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2451:45:2451:61 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2451:64:2451:80 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2452:13:2452:13 | c | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2453:12:2453:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2453:12:2453:20 | callables | [T;...] | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2455:17:2455:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2455:26:2455:26 | c | | main.rs:2399:5:2399:24 | MyCallable | +| main.rs:2455:26:2455:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:18:2460:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:18:2460:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2460:18:2460:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:21:2460:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:13:2461:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2461:13:2461:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:13:2461:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2461:18:2461:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2461:18:2461:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2461:18:2461:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:18:2461:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2461:19:2461:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2461:19:2461:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2461:19:2461:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:19:2461:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2461:24:2461:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:24:2461:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2462:13:2462:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2462:13:2462:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:21:2462:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:21:2462:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2462:21:2462:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:24:2462:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:13:2463:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2463:13:2463:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:18:2463:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2463:18:2463:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2464:13:2464:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2464:26:2464:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2465:13:2465:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2465:18:2465:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2465:19:2465:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2465:19:2465:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:20:2465:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:26:2465:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:32:2465:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:38:2465:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2467:13:2467:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2467:13:2467:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2468:9:2471:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2468:9:2471:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2469:20:2469:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2470:18:2470:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2472:18:2472:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2472:18:2472:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2476:26:2476:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2476:29:2476:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2476:32:2476:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:13:2479:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2479:13:2479:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2479:13:2479:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2479:32:2479:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2479:32:2479:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:32:2479:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2479:32:2479:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2479:32:2479:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2479:32:2479:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2479:33:2479:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2479:39:2479:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:39:2479:39 | 2 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2479:42:2479:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:42:2479:42 | 3 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2480:13:2480:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2480:13:2480:13 | u | | file://:0:0:0:0 | & | +| main.rs:2480:18:2480:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2480:18:2480:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2480:18:2480:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2482:22:2482:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2482:22:2482:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2482:22:2482:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2482:23:2482:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2482:29:2482:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2482:29:2482:29 | 2 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2482:32:2482:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2482:32:2482:32 | 3 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2485:13:2485:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2485:13:2485:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2485:13:2485:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:13:2485:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2485:21:2485:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2485:21:2485:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2485:21:2485:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:21:2485:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2485:31:2485:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2485:31:2485:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:31:2485:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2485:32:2485:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2485:38:2485:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:38:2485:38 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2485:41:2485:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:41:2485:41 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2486:13:2486:13 | u | | file://:0:0:0:0 | & | +| main.rs:2486:18:2486:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2486:18:2486:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2486:18:2486:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2486:18:2486:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2488:13:2488:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2488:13:2488:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2488:13:2488:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2488:13:2488:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2488:32:2488:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2488:32:2488:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2488:32:2488:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2488:32:2488:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2488:32:2488:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2488:32:2488:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2488:32:2488:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2488:33:2488:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2488:39:2488:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2488:39:2488:39 | 2 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2488:42:2488:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2488:42:2488:42 | 3 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2489:13:2489:13 | u | | file://:0:0:0:0 | & | +| main.rs:2489:13:2489:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2489:18:2489:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2489:18:2489:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2489:18:2489:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2489:18:2489:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2491:17:2491:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2491:17:2491:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2491:17:2491:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2491:25:2491:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2491:25:2491:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2491:25:2491:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2492:9:2492:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2492:9:2492:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2492:9:2492:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2492:20:2492:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2493:13:2493:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2493:13:2493:13 | u | | file://:0:0:0:0 | & | +| main.rs:2493:18:2493:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2493:18:2493:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2493:18:2493:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2495:33:2495:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2495:36:2495:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2495:45:2495:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2495:48:2495:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:17:2502:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2502:17:2502:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:17:2502:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2502:17:2502:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2502:17:2502:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2502:17:2502:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2502:17:2502:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2502:24:2502:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2502:24:2502:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:24:2502:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2502:24:2502:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2502:24:2502:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2502:24:2502:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2502:24:2502:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2503:9:2503:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2503:9:2503:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:9:2503:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2503:9:2503:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2503:9:2503:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2503:9:2503:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2503:9:2503:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2503:9:2503:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2503:9:2503:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2503:9:2503:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2503:9:2503:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2503:9:2503:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2503:21:2503:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:24:2503:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2503:24:2503:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2503:24:2503:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2503:24:2503:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2503:33:2503:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2503:33:2503:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2504:9:2504:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2504:9:2504:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:9:2504:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2504:9:2504:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2504:9:2504:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2504:9:2504:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2504:9:2504:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2504:9:2504:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2504:9:2504:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2504:9:2504:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2504:9:2504:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2504:9:2504:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2504:21:2504:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:24:2504:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2504:24:2504:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2504:24:2504:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2504:24:2504:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2504:33:2504:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2504:33:2504:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2505:13:2505:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2505:13:2505:15 | key | | file://:0:0:0:0 | & | +| main.rs:2505:13:2505:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:20:2505:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2505:20:2505:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:20:2505:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2505:20:2505:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2505:20:2505:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2505:20:2505:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2505:20:2505:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2505:20:2505:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2505:20:2505:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:20:2505:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2505:20:2505:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2505:20:2505:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2505:20:2505:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2506:13:2506:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2506:13:2506:17 | value | | file://:0:0:0:0 | & | +| main.rs:2506:13:2506:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2506:13:2506:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2506:13:2506:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2506:13:2506:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2506:22:2506:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2506:22:2506:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:22:2506:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2506:22:2506:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2506:22:2506:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2506:22:2506:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2506:22:2506:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2506:22:2506:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2506:22:2506:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:22:2506:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2506:22:2506:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2506:22:2506:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2506:22:2506:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2507:13:2507:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2507:13:2507:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2507:13:2507:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:13:2507:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2507:14:2507:16 | key | | file://:0:0:0:0 | & | +| main.rs:2507:14:2507:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:19:2507:23 | value | | file://:0:0:0:0 | & | +| main.rs:2507:19:2507:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2507:19:2507:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:19:2507:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2507:19:2507:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2507:29:2507:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2507:29:2507:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:29:2507:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2507:29:2507:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2507:29:2507:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:29:2507:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2507:29:2507:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2507:29:2507:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2507:29:2507:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:29:2507:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2507:29:2507:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:29:2507:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2507:29:2507:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2508:13:2508:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2508:13:2508:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2508:13:2508:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:13:2508:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2508:14:2508:16 | key | | file://:0:0:0:0 | & | +| main.rs:2508:14:2508:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:19:2508:23 | value | | file://:0:0:0:0 | & | +| main.rs:2508:19:2508:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2508:19:2508:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:19:2508:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2508:19:2508:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2508:29:2508:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2508:29:2508:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2508:29:2508:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:29:2508:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2508:29:2508:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2508:29:2508:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:29:2508:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2508:29:2508:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2508:30:2508:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2508:30:2508:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:30:2508:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2508:30:2508:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2508:30:2508:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:30:2508:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2508:30:2508:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2512:17:2512:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2512:26:2512:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2512:26:2512:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2514:23:2514:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2514:23:2514:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2514:27:2514:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2514:27:2514:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2516:13:2516:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2516:13:2516:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2516:18:2516:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2528:40:2530:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2528:40:2530:9 | { ... } | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2528:40:2530:9 | { ... } | T.T | main.rs:2527:10:2527:19 | T | +| main.rs:2529:13:2529:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2529:13:2529:16 | None | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2529:13:2529:16 | None | T.T | main.rs:2527:10:2527:19 | T | +| main.rs:2532:30:2534:9 | { ... } | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2532:30:2534:9 | { ... } | T | main.rs:2527:10:2527:19 | T | +| main.rs:2533:13:2533:28 | S1(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2533:13:2533:28 | S1(...) | T | main.rs:2527:10:2527:19 | T | +| main.rs:2533:16:2533:27 | ...::default(...) | | main.rs:2527:10:2527:19 | T | +| main.rs:2536:19:2536:22 | SelfParam | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2536:19:2536:22 | SelfParam | T | main.rs:2527:10:2527:19 | T | +| main.rs:2536:33:2538:9 | { ... } | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2536:33:2538:9 | { ... } | T | main.rs:2527:10:2527:19 | T | +| main.rs:2537:13:2537:16 | self | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2537:13:2537:16 | self | T | main.rs:2527:10:2527:19 | T | +| main.rs:2549:15:2549:15 | x | | main.rs:2549:12:2549:12 | T | +| main.rs:2549:26:2551:5 | { ... } | | main.rs:2549:12:2549:12 | T | +| main.rs:2550:9:2550:9 | x | | main.rs:2549:12:2549:12 | T | +| main.rs:2554:13:2554:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2554:13:2554:14 | x1 | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2554:13:2554:14 | x1 | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2555:13:2555:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2555:13:2555:14 | x2 | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2555:13:2555:14 | x2 | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2556:13:2556:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2556:13:2556:14 | x3 | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2556:13:2556:14 | x3 | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | +| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2557:13:2557:14 | x4 | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2557:13:2557:14 | x4 | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2557:18:2557:48 | ...::method(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2557:18:2557:48 | ...::method(...) | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2557:35:2557:47 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2557:35:2557:47 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2558:13:2558:14 | x5 | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2558:13:2558:14 | x5 | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2558:18:2558:42 | ...::method(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2558:18:2558:42 | ...::method(...) | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2558:29:2558:41 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2558:29:2558:41 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2559:13:2559:14 | x6 | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2559:13:2559:14 | x6 | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2559:18:2559:45 | S4::<...>(...) | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2559:18:2559:45 | S4::<...>(...) | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2559:27:2559:44 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2560:13:2560:14 | x7 | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2560:13:2560:14 | x7 | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2560:18:2560:23 | S4(...) | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2560:18:2560:23 | S4(...) | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2560:21:2560:22 | S2 | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2561:13:2561:14 | x8 | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2561:13:2561:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2561:18:2561:22 | S4(...) | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2561:18:2561:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2561:21:2561:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2562:13:2562:14 | x9 | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2562:13:2562:14 | x9 | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2562:18:2562:34 | S4(...) | | main.rs:2543:5:2543:27 | S4 | +| main.rs:2562:18:2562:34 | S4(...) | T4 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2562:21:2562:33 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2563:13:2563:15 | x10 | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2563:13:2563:15 | x10 | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2563:19:2566:9 | S5::<...> {...} | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2563:19:2566:9 | S5::<...> {...} | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2565:20:2565:37 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2567:13:2567:15 | x11 | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2567:13:2567:15 | x11 | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2567:19:2567:34 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2567:19:2567:34 | S5 {...} | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2567:31:2567:32 | S2 | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2568:13:2568:15 | x12 | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2568:13:2568:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:19:2568:33 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2568:19:2568:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:31:2568:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2569:13:2569:15 | x13 | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2569:13:2569:15 | x13 | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2569:19:2572:9 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | +| main.rs:2569:19:2572:9 | S5 {...} | T5 | main.rs:2524:5:2525:14 | S2 | +| main.rs:2571:20:2571:32 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | +| main.rs:2573:13:2573:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:19:2573:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:30:2573:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2574:13:2574:15 | x15 | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2574:13:2574:15 | x15 | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2574:19:2574:37 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | +| main.rs:2574:19:2574:37 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | +| main.rs:2583:35:2585:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2583:35:2585:9 | { ... } | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2583:35:2585:9 | { ... } | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2584:13:2584:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2584:13:2584:26 | TupleExpr | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2584:13:2584:26 | TupleExpr | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2584:14:2584:18 | S1 {...} | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2584:21:2584:25 | S1 {...} | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2586:16:2586:19 | SelfParam | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2590:13:2590:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2590:13:2590:13 | a | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2590:13:2590:13 | a | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2590:17:2590:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2590:17:2590:30 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2590:17:2590:30 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2591:17:2591:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2591:17:2591:17 | b | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2591:17:2591:17 | b | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2591:21:2591:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2591:21:2591:34 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2591:21:2591:34 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:13:2592:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2592:13:2592:18 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:13:2592:18 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:14:2592:14 | c | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:17:2592:17 | d | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:22:2592:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2592:22:2592:35 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2592:22:2592:35 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:13:2593:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2593:13:2593:22 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:13:2593:22 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:18:2593:18 | e | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:21:2593:21 | f | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:26:2593:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2593:26:2593:39 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2593:26:2593:39 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:13:2594:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2594:13:2594:26 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:13:2594:26 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:18:2594:18 | g | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:25:2594:25 | h | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:30:2594:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2594:30:2594:43 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2594:30:2594:43 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2596:9:2596:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2596:9:2596:9 | a | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2596:9:2596:9 | a | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2596:9:2596:11 | a.0 | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2597:9:2597:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2597:9:2597:9 | b | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2597:9:2597:9 | b | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2597:9:2597:11 | b.1 | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2598:9:2598:9 | c | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2599:9:2599:9 | d | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2600:9:2600:9 | e | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2601:9:2601:9 | f | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2602:9:2602:9 | g | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2603:9:2603:9 | h | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2608:13:2608:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2608:17:2608:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2609:13:2609:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2609:17:2609:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2610:13:2610:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2610:13:2610:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2610:13:2610:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2610:20:2610:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2610:20:2610:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2610:20:2610:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2610:21:2610:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2610:24:2610:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2611:22:2611:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2611:22:2611:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2611:22:2611:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2611:22:2611:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2612:13:2612:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2612:23:2612:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2612:23:2612:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2612:23:2612:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2612:23:2612:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2614:13:2614:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2614:13:2614:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:13:2614:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:20:2614:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2614:20:2614:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:20:2614:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2614:20:2614:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:20:2614:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:21:2614:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:24:2614:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:15:2615:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2615:15:2615:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:15:2615:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:13:2616:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2616:13:2616:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:13:2616:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:14:2616:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:17:2616:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:30:2616:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2616:30:2616:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2616:30:2616:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2616:30:2616:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2617:13:2617:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2617:13:2617:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2617:13:2617:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2617:25:2617:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2617:25:2617:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2617:25:2617:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2617:25:2617:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2619:13:2619:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:17:2619:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2619:17:2619:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:17:2619:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:17:2619:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:13:2621:13 | y | | file://:0:0:0:0 | & | +| main.rs:2621:13:2621:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2621:13:2621:13 | y | &T.0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2621:13:2621:13 | y | &T.1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2621:17:2621:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2621:17:2621:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2621:17:2621:31 | &... | &T.0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2621:17:2621:31 | &... | &T.1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2621:18:2621:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2621:18:2621:31 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2621:18:2621:31 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2622:9:2622:9 | y | | file://:0:0:0:0 | & | +| main.rs:2622:9:2622:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2622:9:2622:9 | y | &T.0(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2622:9:2622:9 | y | &T.1(2) | main.rs:2579:5:2580:16 | S1 | +| main.rs:2622:9:2622:11 | y.0 | | main.rs:2579:5:2580:16 | S1 | +| main.rs:2629:13:2629:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2629:13:2629:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2629:13:2629:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2629:27:2629:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2629:27:2629:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2629:27:2629:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2629:36:2629:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2632:15:2632:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2632:15:2632:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2632:15:2632:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2633:13:2633:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2633:13:2633:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2633:13:2633:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2633:17:2633:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2634:26:2634:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2634:26:2634:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2634:26:2634:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2634:26:2634:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2636:13:2636:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2636:13:2636:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2636:13:2636:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2638:26:2638:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2638:26:2638:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2638:26:2638:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2638:26:2638:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2643:13:2643:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2643:13:2643:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2643:13:2643:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2643:13:2643:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2643:13:2643:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2643:26:2643:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2643:26:2643:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2643:26:2643:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2643:26:2643:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2643:26:2643:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2643:35:2643:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2643:35:2643:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2643:35:2643:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2643:44:2643:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2644:15:2644:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2644:15:2644:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2644:15:2644:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2644:15:2644:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2644:15:2644:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2645:13:2645:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2645:13:2645:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2645:13:2645:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2645:13:2645:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2645:13:2645:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2647:26:2647:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2647:26:2647:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2647:26:2647:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2647:26:2647:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2659:36:2661:9 | { ... } | | main.rs:2656:5:2656:22 | Path | +| main.rs:2660:13:2660:19 | Path {...} | | main.rs:2656:5:2656:22 | Path | +| main.rs:2663:29:2663:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2663:29:2663:33 | SelfParam | &T | main.rs:2656:5:2656:22 | Path | +| main.rs:2663:59:2665:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2663:59:2665:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2663:59:2665:9 | { ... } | T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2664:13:2664:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2664:13:2664:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2664:13:2664:30 | Ok(...) | T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2664:16:2664:29 | ...::new(...) | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2671:39:2673:9 | { ... } | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2672:13:2672:22 | PathBuf {...} | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2681:18:2681:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2681:18:2681:22 | SelfParam | &T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2681:34:2685:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2681:34:2685:9 | { ... } | &T | main.rs:2656:5:2656:22 | Path | +| main.rs:2683:33:2683:43 | ...::new(...) | | main.rs:2656:5:2656:22 | Path | +| main.rs:2684:13:2684:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2684:13:2684:17 | &path | &T | main.rs:2656:5:2656:22 | Path | +| main.rs:2684:14:2684:17 | path | | main.rs:2656:5:2656:22 | Path | +| main.rs:2689:13:2689:17 | path1 | | main.rs:2656:5:2656:22 | Path | +| main.rs:2689:21:2689:31 | ...::new(...) | | main.rs:2656:5:2656:22 | Path | +| main.rs:2690:13:2690:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2690:13:2690:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2690:13:2690:17 | path2 | T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2690:21:2690:25 | path1 | | main.rs:2656:5:2656:22 | Path | +| main.rs:2690:21:2690:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2690:21:2690:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2690:21:2690:40 | path1.canonicalize() | T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2691:13:2691:17 | path3 | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2691:21:2691:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2691:21:2691:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2691:21:2691:25 | path2 | T | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2691:21:2691:34 | path2.unwrap() | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2693:13:2693:20 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2693:24:2693:37 | ...::new(...) | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2694:24:2694:31 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | +| main.rs:2706:5:2706:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2707:5:2707:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2707:20:2707:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2707:41:2707:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2723:5:2723:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 4b70d20cd67d5b608faade3826914088e2dd338b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 23 Sep 2025 09:40:08 +0200 Subject: [PATCH 232/965] Rust: Rework call resolution and type inference for calls --- .../rust/elements/internal/OperationImpl.qll | 2 +- .../rust/elements/internal/TypeParamImpl.qll | 3 + .../codeql/rust/frameworks/stdlib/Stdlib.qll | 93 + .../codeql/rust/internal/PathResolution.qll | 8 +- rust/ql/lib/codeql/rust/internal/Type.qll | 25 + .../codeql/rust/internal/TypeInference.qll | 2513 ++++++++++------- .../lib/codeql/rust/internal/TypeMention.qll | 104 +- .../typeinference/BlanketImplementation.qll | 135 + .../typeinference/FunctionOverloading.qll | 127 + .../internal/typeinference/FunctionType.qll | 434 +++ .../typeinference/internal/TypeInference.qll | 231 +- 11 files changed, 2507 insertions(+), 1168 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll create mode 100644 rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll create mode 100644 rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll diff --git a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll index ea76293a1bd..f22c95759d6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll @@ -12,7 +12,7 @@ private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl * the canonical path `path` and the method name `method`, and if it borrows its * first `borrows` arguments. */ -private predicate isOverloaded(string op, int arity, string path, string method, int borrows) { +predicate isOverloaded(string op, int arity, string path, string method, int borrows) { arity = 1 and ( // Negation diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll index cf057831a4f..755c5399a20 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll @@ -47,6 +47,9 @@ module Impl { */ TypeBound getATypeBound() { result = this.getTypeBound(_) } + /** Holds if this type parameter has at least one type bound. */ + predicate hasTypeBound() { exists(this.getATypeBound()) } + override string toAbbreviatedString() { result = this.getName().getText() } override string toStringImpl() { result = this.getName().getText() } diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index 728c632759c..773aa77f80f 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -213,3 +213,96 @@ class StringStruct extends Struct { pragma[nomagic] StringStruct() { this.getCanonicalPath() = "alloc::string::String" } } + +/** + * The [`Deref` trait][1]. + * + * [1]: https://doc.rust-lang.org/core/ops/trait.Deref.html + */ +class DerefTrait extends Trait { + pragma[nomagic] + DerefTrait() { this.getCanonicalPath() = "core::ops::deref::Deref" } + + /** Gets the `deref` function. */ + Function getDerefFunction() { result = this.(TraitItemNode).getAssocItem("deref") } + + /** Gets the `Target` associated type. */ + pragma[nomagic] + TypeAlias getTargetType() { + result = this.getAssocItemList().getAnAssocItem() and + result.getName().getText() = "Target" + } +} + +/** + * The [`Index` trait][1]. + * + * [1]: https://doc.rust-lang.org/std/ops/trait.Index.html + */ +class IndexTrait extends Trait { + pragma[nomagic] + IndexTrait() { this.getCanonicalPath() = "core::ops::index::Index" } + + /** Gets the `index` function. */ + Function getIndexFunction() { result = this.(TraitItemNode).getAssocItem("index") } + + /** Gets the `Output` associated type. */ + pragma[nomagic] + TypeAlias getOutputType() { + result = this.getAssocItemList().getAnAssocItem() and + result.getName().getText() = "Output" + } +} + +/** + * The [`Box` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/boxed/struct.Box.html + */ +class BoxStruct extends Struct { + pragma[nomagic] + BoxStruct() { this.getCanonicalPath() = "alloc::boxed::Box" } +} + +/** + * The [`Rc` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/rc/struct.Rc.html + */ +class RcStruct extends Struct { + pragma[nomagic] + RcStruct() { this.getCanonicalPath() = "alloc::rc::Rc" } +} + +/** + * The [`Arc` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/sync/struct.Arc.html + */ +class ArcStruct extends Struct { + pragma[nomagic] + ArcStruct() { this.getCanonicalPath() = "alloc::sync::Arc" } +} + +/** + * The [`Pin` struct][1]. + * + * [1]: https://doc.rust-lang.org/std/pin/struct.Pin.html + */ +class PinStruct extends Struct { + pragma[nomagic] + PinStruct() { this.getCanonicalPath() = "core::pin::Pin" } +} + +/** + * The [`Vec` struct][1]. + * + * [1]: https://doc.rust-lang.org/alloc/vec/struct.Vec.html + */ +class Vec extends Struct { + pragma[nomagic] + Vec() { this.getCanonicalPath() = "alloc::vec::Vec" } + + /** Gets the type parameter representing the element type. */ + TypeParam getElementTypeParam() { result = this.getGenericParamList().getTypeParam(0) } +} diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 8f55a421538..9694aa47bcb 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -840,7 +840,7 @@ final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { } } -final private class ImplTraitTypeReprItemNode extends TypeItemNode instanceof ImplTraitTypeRepr { +final class ImplTraitTypeReprItemNode extends TypeItemNode instanceof ImplTraitTypeRepr { pragma[nomagic] Path getABoundPath() { result = super.getTypeBoundList().getABound().getTypeRepr().(PathTypeRepr).getPath() @@ -963,7 +963,9 @@ final class TraitItemNode extends ImplOrTraitItemNode, TypeItemNode instanceof T Path getABoundPath() { result = super.getATypeBound().getTypeRepr().(PathTypeRepr).getPath() } pragma[nomagic] - ItemNode resolveABound() { result = resolvePath(this.getABoundPath()) } + ItemNode resolveBound(Path path) { path = this.getABoundPath() and result = resolvePath(path) } + + ItemNode resolveABound() { result = this.resolveBound(_) } override AssocItemNode getAnAssocItem() { result = this.getADescendant() } @@ -2101,7 +2103,7 @@ private predicate builtin(string name, ItemNode i) { /** Provides predicates for debugging the path resolution implementation. */ private module Debug { - private Locatable getRelevantLocatable() { + Locatable getRelevantLocatable() { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and filepath.matches("%/main.rs") and diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 9dc15e31d99..15c3d13f9d8 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -6,6 +6,7 @@ private import TypeMention private import codeql.rust.internal.CachedStages private import codeql.rust.elements.internal.generated.Raw private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.frameworks.stdlib.Stdlib /** * Holds if a dyn trait type should have a type parameter associated with `n`. A @@ -624,3 +625,27 @@ final class ImplTraitTypeReprAbstraction extends TypeAbstraction, ImplTraitTypeR implTraitTypeParam(this, _, result.(TypeParamTypeParameter).getTypeParam()) } } + +/** + * Holds if `root` is a valid complex [`self` root type][1], with type + * parameter `tp`. + * + * [1]: https://doc.rust-lang.org/stable/reference/items/associated-items.html#r-items.associated.fn.method.self-ty + */ +pragma[nomagic] +predicate complexSelfRoot(Type root, TypeParameter tp) { + tp = root.(RefType).getPositionalTypeParameter(_) + or + exists(Struct s | + root = TStruct(s) and + tp = root.getPositionalTypeParameter(0) + | + s instanceof BoxStruct + or + s instanceof RcStruct + or + s instanceof ArcStruct + or + s instanceof PinStruct + ) +} diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index c450670a1fc..de7b4447236 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -6,6 +6,9 @@ private import PathResolution private import Type private import Type as T private import TypeMention +private import typeinference.FunctionType +private import typeinference.FunctionOverloading as FunctionOverloading +private import typeinference.BlanketImplementation as BlanketImplementation private import codeql.typeinference.internal.TypeInference private import codeql.rust.frameworks.stdlib.Stdlib private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -140,7 +143,7 @@ private import Input1 private module M1 = Make1; -private import M1 +import M1 predicate getTypePathLimit = Input1::getTypePathLimit/0; @@ -224,7 +227,7 @@ private module Input2 implements InputSig2 { private module M2 = Make2; -private import M2 +import M2 module Consistency { import M2::Consistency @@ -241,6 +244,25 @@ module Consistency { } } +/** A method, that is, a function with a `self` parameter. */ +private class Method extends Function { + Method() { this.hasSelfParam() } +} + +/** A function without a `self` parameter. */ +private class NonMethodFunction extends Function { + NonMethodFunction() { not this.hasSelfParam() } +} + +pragma[nomagic] +private TypeMention getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos) { + exists(Path p, int i | + p = CallExprImpl::getFunctionPath(ce) and + result = p.getSegment().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and + apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) + ) +} + /** Gets the type annotation that applies to `n`, if any. */ private TypeMention getTypeAnnotation(AstNode n) { exists(LetStmt let | @@ -261,62 +283,12 @@ private TypeMention getTypeAnnotation(AstNode n) { ) } -/** - * Gets the type of the implicitly typed `self` parameter, taking into account - * whether the parameter is passed by value or by reference. - */ -bindingset[self, suffix, t] -pragma[inline_late] -private Type getRefAdjustShorthandSelfType(SelfParam self, TypePath suffix, Type t, TypePath path) { - not self.hasTypeRepr() and - ( - if self.isRef() - then - // `fn f(&self, ...)` - path.isEmpty() and - result = TRefType() - or - path = TypePath::cons(TRefTypeParameter(), suffix) and - result = t - else ( - // `fn f(self, ...)` - path = suffix and - result = t - ) - ) -} - -pragma[nomagic] -private Type resolveImplSelfType(Impl i, TypePath path) { - result = i.getSelfTy().(TypeMention).resolveTypeAt(path) -} - -/** - * Gets the type at `path` of the parameter `self` which uses the [shorthand - * syntax][1] which is sugar for an explicit annotation. - * - * [1]: https://doc.rust-lang.org/stable/reference/items/associated-items.html#r-associated.fn.method.self-pat-shorthands - */ -pragma[nomagic] -private Type inferShorthandSelfType(SelfParam self, TypePath path) { - exists(ImplOrTraitItemNode i, TypePath suffix, Type t | - self = i.getAnAssocItem().(Function).getParamList().getSelfParam() and - result = getRefAdjustShorthandSelfType(self, suffix, t, path) - | - t = resolveImplSelfType(i, suffix) - or - t = TSelfTypeParameter(i) and suffix.isEmpty() - ) -} - /** Gets the type of `n`, which has an explicit type annotation. */ pragma[nomagic] private Type inferAnnotatedType(AstNode n, TypePath path) { result = getTypeAnnotation(n).resolveTypeAt(path) or - // The shorthand self syntax (i.e., a self parameter without a type - // annotation) is sugar for a self parameter with an annotation. - result = inferShorthandSelfType(n, path) + result = n.(ShorthandSelfParameterMention).resolveTypeAt(path) } /** Module for inferring certain type information. */ @@ -328,11 +300,13 @@ module CertainTypeInference { } pragma[nomagic] - private Type getCallExprType( - CallExpr ce, Path p, CallExprBaseMatchingInput::FunctionDecl f, TypePath tp - ) { + private Type getCallExprType(CallExpr ce, Path p, Function f, TypePath tp) { callResolvesTo(ce, p, f) and - result = f.getReturnType(tp) + result = + [ + f.(MethodCallMatchingInput::Declaration).getReturnType(tp), + f.(NonMethodCallMatchingInput::Declaration).getReturnType(tp) + ] } pragma[nomagic] @@ -367,8 +341,7 @@ module CertainTypeInference { // instantiation from the path. For instance, for `fn bar(a: A) -> A` // and the path `bar`, we must resolve `A` to `i64`. result = - ce.(CallExprBaseMatchingInput::Access) - .getTypeArgument(TTypeParamTypeArgumentPosition(tp), suffix) + getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp)).resolveTypeAt(suffix) ) or not ty instanceof TypeParameter and @@ -818,43 +791,1334 @@ private Type inferPathExprType(PathExpr pe, TypePath path) { ) } -/** Gets the explicit type qualifier of the call `ce`, if any. */ -private Type getTypeQualifier(CallExpr ce, TypePath path) { - exists(PathExpr pe, TypeMention tm | - pe = ce.getFunction() and - tm = pe.getPath().getQualifier() and - result = tm.resolveTypeAt(path) +pragma[nomagic] +private Path getCallExprPathQualifier(CallExpr ce) { + result = CallExprImpl::getFunctionPath(ce).getQualifier() +} + +/** + * Gets the type qualifier of function call `ce`, if any. + * + * For example, the type qualifier of `Foo::::default()` is `Foo::`, + * but only when `Foo` is not a trait. + */ +pragma[nomagic] +private Type getCallExprTypeQualifier(CallExpr ce, TypePath path) { + exists(TypeMention tm | + tm = getCallExprPathQualifier(ce) and + result = tm.resolveTypeAt(path) and + not resolvePath(tm) instanceof Trait ) } /** - * A matching configuration for resolving types of call expressions - * like `foo::bar(baz)` and `foo.bar(baz)`. + * Holds if function `f` with the name `name` and the arity `arity` exists in + * `i`, and the type at position `pos` is `t`. */ -private module CallExprBaseMatchingInput implements MatchingInputSig { - private predicate paramPos(ParamList pl, Param p, int pos) { p = pl.getParam(pos) } +pragma[nomagic] +private predicate assocFunctionInfo( + Function f, string name, int arity, ImplOrTraitItemNode i, FunctionTypePosition pos, + AssocFunctionType t +) { + f = i.getASuccessor(name) and + arity = f.getParamList().getNumberOfParams() and + t.appliesTo(f, pos, i) +} - private newtype TDeclarationPosition = - TArgumentDeclarationPosition(ArgumentPosition pos) or - TReturnDeclarationPosition() +/** + * Holds if function `f` with the name `name` and the arity `arity` exists in + * blanket implementation `impl` of `trait`, and the type at position + * `pos` is `t`. + * + * `blanketPath` points to the type `blanketTypeParam` inside `t`, which + * is the type parameter used in the blanket implementation. + */ +pragma[nomagic] +private predicate functionInfoBlanket( + Function f, string name, int arity, ImplItemNode impl, Trait trait, FunctionTypePosition pos, + AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam +) { + exists(TypePath blanketSelfPath | + assocFunctionInfo(f, name, arity, impl, pos, t) and + TTypeParamTypeParameter(blanketTypeParam) = t.getTypeAt(blanketPath) and + blanketPath = any(string s) + blanketSelfPath and + BlanketImplementation::isBlanketLike(impl, blanketSelfPath, blanketTypeParam) and + trait = impl.resolveTraitTy() + ) +} - class DeclarationPosition extends TDeclarationPosition { - predicate isSelf() { this.asArgumentPosition().isSelf() } +/** + * Holds if the type path `path` pointing to `type` is stripped of any leading + * complex root type allowed for `self` parameters, such as `&`, `Box`, `Rc`, + * `Arc`, and `Pin`. + * + * We strip away the complex root type for performance reasons only, which will + * allow us to construct a much smaller set of candidate call targets (otherwise, + * for example _a lot_ of methods have a `self` parameter with a `&` root type). + */ +bindingset[path, type] +private predicate isComplexRootStripped(TypePath path, Type type) { + path.isEmpty() and + not complexSelfRoot(type, _) + or + exists(TypeParameter tp | + complexSelfRoot(_, tp) and + path = TypePath::singleton(tp) and + exists(type) + ) +} - int asPosition() { result = this.asArgumentPosition().asPosition() } +/** + * Provides logic for resolving calls to methods. + * + * When resolving a method call, a list of [candidate receiver types][1] is constructed + * + * > by repeatedly dereferencing the receiver expression's type, adding each type + * > encountered to the list, then finally attempting an unsized coercion at the end, + * > and adding the result type if that is successful. + * > + * > Then, for each candidate `T`, add `&T` and `&mut T` to the list immediately after `T`. + * + * We do not currently model unsized coercions, and we do not yet model the `Deref` trait, + * instead we limit dereferencing to standard dereferencing and the fact that `String` + * dereferences to `str`. + * + * Instead of constructing the full list of candidate receiver types + * + * ``` + * T1, &T1, &mut T1, ..., Tn, &Tn, &mut Tn + * ``` + * + * we recursively compute a set of candidates, only adding a new candidate receiver type + * to the set when we can rule out that the method cannot be found for the current + * candidate: + * + * ```text + * forall method: + * not current_candidate matches method + * ``` + * + * Care must be taken to ensure that the `not current_candidate matches method` check is + * monotonic, which we achieve using the monotonic `isNotInstantiationOf` predicate. + * + * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers + */ +private module MethodResolution { + /** + * Holds if method `m` with the name `name` and the arity `arity` exists in + * `i`, and the type of the `self` parameter is `selfType`. + * + * `strippedTypePath` points to the type `strippedType` inside `selfType`, + * which is the (possibly complex-stripped) root type of `selfType`. For example, + * if `m` has a `&self` parameter, then `strippedTypePath` is `TRefTypeParameter()` + * and `strippedType` is the type inside the reference. + */ + pragma[nomagic] + private predicate methodInfo( + Method m, string name, int arity, ImplOrTraitItemNode i, AssocFunctionType selfType, + TypePath strippedTypePath, Type strippedType + ) { + exists(FunctionTypePosition pos | + assocFunctionInfo(m, name, arity, i, pos, selfType) and + strippedType = selfType.getTypeAt(strippedTypePath) and + isComplexRootStripped(strippedTypePath, strippedType) and + pos.isSelf() + ) + } - ArgumentPosition asArgumentPosition() { this = TArgumentDeclarationPosition(result) } + pragma[nomagic] + private predicate methodInfoTypeParam( + Method m, string name, int arity, ImplOrTraitItemNode i, AssocFunctionType selfType, + TypePath strippedTypePath, TypeParam tp + ) { + methodInfo(m, name, arity, i, selfType, strippedTypePath, TTypeParamTypeParameter(tp)) + } - predicate isReturn() { this = TReturnDeclarationPosition() } + /** + * Same as `methodInfo`, but restricted to non-blanket implementations, and + * allowing for any `strippedType` when the corresponding type inside `m` is + * a type parameter. + */ + pragma[inline] + private predicate methodInfoNonBlanket( + Method m, string name, int arity, ImplOrTraitItemNode i, AssocFunctionType selfType, + TypePath strippedTypePath, Type strippedType + ) { + ( + methodInfo(m, name, arity, i, selfType, strippedTypePath, strippedType) or + methodInfoTypeParam(m, name, arity, i, selfType, strippedTypePath, _) + ) and + not BlanketImplementation::isBlanketLike(i, _, _) + } - string toString() { - result = this.asArgumentPosition().toString() + /** + * Holds if method `m` with the name `name` and the arity `arity` exists in + * blanket implementation `impl` of `trait`, and the type of the `self` + * parameter is `selfType`. + * + * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which + * is the type parameter used in the blanket implementation. + */ + pragma[nomagic] + private predicate methodInfoBlanket( + Method m, string name, int arity, ImplItemNode impl, Trait trait, AssocFunctionType selfType, + TypePath blanketPath, TypeParam blanketTypeParam + ) { + exists(FunctionTypePosition pos | + functionInfoBlanket(m, name, arity, impl, trait, pos, selfType, blanketPath, blanketTypeParam) and + pos.isSelf() + ) + } + + pragma[nomagic] + private predicate methodTraitInfo(string name, int arity, Trait trait) { + exists(ImplItemNode i | + methodInfo(_, name, arity, i, _, _, _) and + trait = i.resolveTraitTy() + ) + or + methodInfo(_, name, arity, trait, _, _, _) + } + + pragma[nomagic] + private predicate methodCallTraitCandidate(Element mc, Trait trait) { + exists(string name, int arity | + mc.(MethodCall).hasNameAndArity(name, arity) and + methodTraitInfo(name, arity, trait) + | + not mc.(Call).hasTrait() or - this.isReturn() and - result = "(return)" + trait = mc.(Call).getTrait() + ) + } + + private module MethodTraitIsVisible = TraitIsVisible; + + private predicate methodCallVisibleTraitCandidate(MethodCall mc, Trait trait) { + MethodTraitIsVisible::traitIsVisible(mc, trait) + } + + bindingset[mc, impl] + pragma[inline_late] + private predicate methodCallVisibleImplTraitCandidate(MethodCall mc, ImplItemNode impl) { + methodCallVisibleTraitCandidate(mc, impl.resolveTraitTy()) + } + + /** + * Holds if method call `mc` may target a method in `i` with `self` parameter having + * type `selfType`. + * + * `strippedTypePath` points to the type `strippedType` inside `selfType`, + * which is the (possibly complex-stripped) root type of `selfType`. + * + * This predicate only checks for matching method names and arities, and whether + * the trait being implemented by `i` (when `i` is not a trait itself) is visible + * at `mc`. + */ + bindingset[mc, strippedTypePath, strippedType] + pragma[inline_late] + private predicate methodCallNonBlanketCandidate( + MethodCall mc, Method m, ImplOrTraitItemNode i, AssocFunctionType self, + TypePath strippedTypePath, Type strippedType + ) { + exists(string name, int arity | + mc.hasNameAndArity(name, arity) and + methodInfoNonBlanket(m, name, arity, i, self, strippedTypePath, strippedType) + | + i = + any(Impl impl | + not impl.hasTrait() + or + methodCallVisibleImplTraitCandidate(mc, impl) + ) + or + methodCallVisibleTraitCandidate(mc, i) + or + i.(ImplItemNode).resolveTraitTy() = mc.(Call).getTrait() + ) + } + + /** + * Holds if method call `mc` may target a method in blanket implementation `i` + * with `self` parameter having type `selfType`. + * + * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which + * is the type parameter used in the blanket implementation. + * + * This predicate only checks for matching method names and arities, and whether + * the trait being implemented by `i` (when `i` is not a trait itself) is visible + * at `mc`. + */ + bindingset[mc] + pragma[inline_late] + private predicate methodCallBlanketCandidate( + MethodCall mc, Method m, ImplItemNode impl, AssocFunctionType self, TypePath blanketPath, + TypeParam blanketTypeParam + ) { + exists(string name, int arity | + mc.hasNameAndArity(name, arity) and + methodInfoBlanket(m, name, arity, impl, _, self, blanketPath, blanketTypeParam) + | + methodCallVisibleImplTraitCandidate(mc, impl) + or + impl.resolveTraitTy() = mc.(Call).getTrait() + ) + } + + /** + * A method call. + * + * This is either: + * + * 1. `MethodCallMethodCallExpr`: an actual method call, `x.m()`; + * 2. `MethodCallIndexExpr`: an index expression, `x[i]`, which is [syntactic sugar][1] + * for `*x.index(i)`; + * 3. `MethodCallCallExpr`: a qualified function call, `Q::m(x)`, where `m` is a method; + * or + * 4. `MethodCallOperation`: an operation expression, `x + y`, which is syntactic sugar + * for `Add::add(x, y)`. + * + * Note that only in case 1 and 2 is auto-dereferencing and borrowing allowed. + * + * [1]: https://doc.rust-lang.org/std/ops/trait.Index.html + */ + abstract class MethodCall extends Expr { + abstract predicate hasNameAndArity(string name, int arity); + + abstract Expr getArgument(ArgumentPosition pos); + + abstract predicate supportsAutoDerefAndBorrow(); + + AstNode getNodeAt(FunctionTypePosition apos) { + result = this.getArgument(apos.asArgumentPosition()) + or + result = this and apos.isReturn() + } + + Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { + result = inferType(this.getArgument(pos), path) + } + + private Type getReceiverTypeAt(TypePath path) { + result = this.getArgumentTypeAt(any(ArgumentPosition pos | pos.isSelf()), path) + } + + /** + * Same as `getACandidateReceiverTypeAt`, but without borrows. + */ + pragma[nomagic] + private Type getACandidateReceiverTypeAtNoBorrow(TypePath path, string derefChain) { + result = this.getReceiverTypeAt(path) and + derefChain = "" + or + this.supportsAutoDerefAndBorrow() and + exists(TypePath path0, Type t0, string derefChain0 | + this.hasNoCompatibleTarget(derefChain0, _) and + t0 = this.getACandidateReceiverTypeAtNoBorrow(path0, derefChain0) + | + path0.isCons(TRefTypeParameter(), path) and + result = t0 and + derefChain = derefChain0 + ".ref" + or + path0.isEmpty() and + path = path0 and + t0 = getStringStruct() and + result = getStrStruct() and + derefChain = derefChain0 + ".str" + ) + } + + /** + * Holds if the method inside `i` with matching name and arity can be ruled + * out as a target of this call, because the candidate receiver type represented + * by `derefChainBorrow` is incompatible with the `self` parameter type. + */ + pragma[nomagic] + private predicate hasIncompatibleTarget(ImplOrTraitItemNode i, string derefChainBorrow) { + ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, + derefChainBorrow), i, _) + or + TypeQualifierIsInstantiationOfImplSelf::isNotInstantiationOf(this, i, _) and + derefChainBorrow = ";" + } + + /** + * Same as `getACandidateReceiverTypeAt`, but with traits substituted in for types + * with trait bounds. + */ + pragma[nomagic] + Type getACandidateReceiverTypeAtSubstituteLookupTraits(TypePath path, string derefChainBorrow) { + result = substituteLookupTraits(this.getACandidateReceiverTypeAt(path, derefChainBorrow)) + } + + pragma[nomagic] + private Type getComplexStrippedType(TypePath strippedTypePath, string derefChainBorrow) { + result = + this.getACandidateReceiverTypeAtSubstituteLookupTraits(strippedTypePath, derefChainBorrow) and + isComplexRootStripped(strippedTypePath, result) + } + + bindingset[strippedTypePath, strippedType, derefChainBorrow] + private predicate hasNoCompatibleTargetCheck( + TypePath strippedTypePath, Type strippedType, string derefChainBorrow + ) { + // todo: also check that all blanket implementation candidates are incompatible + forall(ImplOrTraitItemNode i | + methodCallNonBlanketCandidate(this, _, i, _, strippedTypePath, strippedType) + or + this.(MethodCallCallExpr).hasTypeQualifiedCandidate(i) + | + this.hasIncompatibleTarget(i, derefChainBorrow) + ) + } + + /** + * Holds if the candidate receiver type represented by + * `derefChainBorrow = derefChain;` does not have a matching method target. + */ + pragma[nomagic] + predicate hasNoCompatibleTargetNoBorrow(string derefChain, string derefChainBorrow) { + ( + this.supportsAutoDerefAndBorrow() + or + // needed for the `hasNoCompatibleTarget` check in + // `SatisfiesBlanketConstraintInput::hasBlanketCandidate` + derefChain = "" + ) and + exists(TypePath strippedTypePath, Type strippedType | + derefChainBorrow = derefChain + ";" and + not derefChain.matches("%.ref") and // no need to try a borrow if the last thing we did was a deref + strippedType = this.getComplexStrippedType(strippedTypePath, derefChainBorrow) and + this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChainBorrow) + ) + } + + /** + * Holds if the candidate receiver type represented by + * `derefChainBorrow = derefChain;borrow` does not have a matching method + * target. + */ + pragma[nomagic] + predicate hasNoCompatibleTarget(string derefChain, string derefChainBorrow) { + exists(TypePath strippedTypePath, Type strippedType | + derefChainBorrow = derefChain + ";borrow" and + this.hasNoCompatibleTargetNoBorrow(derefChain, _) and + strippedType = this.getComplexStrippedType(strippedTypePath, derefChainBorrow) and + this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChainBorrow) + ) + } + + /** + * Gets a [candidate receiver type][1] of this method call at `path`. + * + * The type is obtained by repeatedly dereferencing the receiver expression's type, + * as long as the method cannot be resolved in an earlier candidate type, and possibly + * applying a borrow at the end. + * + * The string `derefChainBorrow` encodes the sequence of dereferences and whether a + * borrow has been applied. + * + * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers + */ + pragma[nomagic] + Type getACandidateReceiverTypeAt(TypePath path, string derefChainBorrow) { + exists(string derefChain | + result = this.getACandidateReceiverTypeAtNoBorrow(path, derefChain) and + derefChainBorrow = derefChain + ";" + or + this.supportsAutoDerefAndBorrow() and + this.hasNoCompatibleTargetNoBorrow(derefChain, _) and + derefChainBorrow = derefChain + ";borrow" and + ( + path.isEmpty() and + result = TRefType() + or + exists(TypePath suffix | + result = this.getACandidateReceiverTypeAtNoBorrow(suffix, derefChain) and + path = TypePath::cons(TRefTypeParameter(), suffix) + ) + ) + ) + } + + /** + * Gets a method that this call resolves to after having applied a sequence of + * dereferences and possibly a borrow on the receiver type, encoded in the string + * `derefChainBorrow`. + */ + pragma[nomagic] + Method resolveCallTarget(string derefChainBorrow) { + exists(MethodCallCand mcc | + mcc = MkMethodCallCand(this, derefChainBorrow) and + result = mcc.resolveCallTarget() + ) + } + + predicate receiverHasImplicitDeref(AstNode receiver) { + exists(this.resolveCallTarget(".ref;")) and + receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) + } + + predicate receiverHasImplicitBorrow(AstNode receiver) { + exists(this.resolveCallTarget(";borrow")) and + receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } } + private class MethodCallMethodCallExpr extends MethodCall instanceof MethodCallExpr { + pragma[nomagic] + override predicate hasNameAndArity(string name, int arity) { + name = super.getIdentifier().getText() and + arity = super.getArgList().getNumberOfArgs() + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and + result = MethodCallExpr.super.getReceiver() + or + result = super.getArgList().getArg(pos.asPosition()) + } + + override predicate supportsAutoDerefAndBorrow() { any() } + } + + private class MethodCallIndexExpr extends MethodCall, IndexExpr { + pragma[nomagic] + override predicate hasNameAndArity(string name, int arity) { + name = "index" and + arity = 1 + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and + result = this.getBase() + or + pos.asPosition() = 0 and + result = this.getIndex() + } + + override predicate supportsAutoDerefAndBorrow() { any() } + } + + private class MethodCallCallExpr extends MethodCall, CallExpr { + MethodCallCallExpr() { + exists(getCallExprPathQualifier(this)) and + // even if a method cannot be resolved by path resolution, it may still + // be possible to resolve a blanket implementation (so not `forex`) + forall(ItemNode i | i = CallExprImpl::getResolvedFunction(this) | i instanceof Method) + } + + /** + * Holds if this call has a type qualifier, and we are able to resolve, + * using path resolution, the method to a member of `impl`. + * + * When this is the case, we still want to check that the type qualifier + * is an instance of the type being implemented, which is done in + * `MethodCallCallExprIsInstantiationOfInput`. + */ + pragma[nomagic] + predicate hasTypeQualifiedCandidate(ImplItemNode impl) { + exists(getCallExprTypeQualifier(this, _)) and + CallExprImpl::getResolvedFunction(this) = impl.getASuccessor(_) + } + + pragma[nomagic] + override predicate hasNameAndArity(string name, int arity) { + name = CallExprImpl::getFunctionPath(this).getText() and + arity = this.getArgList().getNumberOfArgs() - 1 + } + + override Expr getArgument(ArgumentPosition pos) { + pos.isSelf() and + result = this.getArg(0) + or + result = this.getArgList().getArg(pos.asPosition() + 1) + } + + // needed for `MethodCallCallExprIsInstantiationOfInput` + Type getTypeAt(TypePath path) { + result = substituteLookupTraits(getCallExprTypeQualifier(this, path)) + } + + override predicate supportsAutoDerefAndBorrow() { none() } + } + + final class MethodCallOperation extends MethodCall, Operation { + pragma[nomagic] + override predicate hasNameAndArity(string name, int arity) { + name = this.(Call).getMethodName() and + arity = this.getNumberOfOperands() - 1 + } + + override Expr getArgument(ArgumentPosition pos) { result = this.(Call).getArgument(pos) } + + override Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { + if this.(Call).implicitBorrowAt(pos, true) + then + result = TRefType() and + path.isEmpty() + or + exists(TypePath path0 | + result = inferType(this.getArgument(pos), path0) and + path = TypePath::cons(TRefTypeParameter(), path0) + ) + else result = inferType(this.getArgument(pos), path) + } + + override predicate receiverHasImplicitBorrow(AstNode receiver) { + exists(ArgumentPosition pos | + this.(Call).implicitBorrowAt(pos, true) and + receiver = this.getArgument(pos) + ) + } + + override predicate supportsAutoDerefAndBorrow() { none() } + } + + pragma[nomagic] + private Method getMethodSuccessor(ImplOrTraitItemNode i, string name, int arity) { + result = i.getASuccessor(name) and + arity = result.getParamList().getNumberOfParams() + } + + private newtype TMethodCallCand = + MkMethodCallCand(MethodCall mc, string derefChainBorrow) { + exists(mc.getACandidateReceiverTypeAt(_, derefChainBorrow)) + } + + /** A method call tagged with a candidate receiver type. */ + private class MethodCallCand extends MkMethodCallCand { + MethodCall mc_; + string derefChainBorrow; + + MethodCallCand() { this = MkMethodCallCand(mc_, derefChainBorrow) } + + MethodCall getMethodCall() { result = mc_ } + + Type getTypeAt(TypePath path) { + result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(path, derefChainBorrow) + } + + pragma[nomagic] + predicate hasNoCompatibleTarget() { + mc_.hasNoCompatibleTarget(_, derefChainBorrow) + or + mc_.hasNoCompatibleTargetNoBorrow(_, derefChainBorrow) + } + + pragma[nomagic] + predicate hasSignature( + MethodCall mc, TypePath strippedTypePath, Type strippedType, string name, int arity + ) { + strippedType = this.getTypeAt(strippedTypePath) and + isComplexRootStripped(strippedTypePath, strippedType) and + mc = mc_ and + mc.hasNameAndArity(name, arity) + } + + /** + * Holds if the inherent method inside `i` with matching name and arity can be + * ruled out as a candidate for this call. + */ + pragma[nomagic] + private predicate hasIncompatibleInherentTarget(Impl impl) { + ReceiverIsNotInstantiationOfInherentSelfParam::argIsNotInstantiationOf(this, impl, _) + } + + /** + * Holds if this method call has no inherent target, i.e., it does not + * resolve to a method in an `impl` block for the type of the receiver. + */ + pragma[nomagic] + predicate hasNoInherentTarget() { + exists(TypePath strippedTypePath, Type strippedType, string name, int arity | + this.hasSignature(_, strippedTypePath, strippedType, name, arity) and + forall(Impl i | + methodInfoNonBlanket(_, name, arity, i, _, strippedTypePath, strippedType) and + not i.hasTrait() + | + this.hasIncompatibleInherentTarget(i) + ) + ) + } + + pragma[nomagic] + private predicate typeQualifierIsInstantiationOf(ImplOrTraitItemNode i) { + TypeQualifierIsInstantiationOfImplSelf::isInstantiationOf(mc_, i, _) + } + + pragma[nomagic] + private predicate argIsInstantiationOf(ImplOrTraitItemNode i, string name, int arity) { + ( + ReceiverIsInstantiationOfSelfParam::argIsInstantiationOf(this, i, _) + or + this.typeQualifierIsInstantiationOf(i) + ) and + mc_.hasNameAndArity(name, arity) + } + + pragma[nomagic] + Method resolveCallTargetCand(ImplOrTraitItemNode i) { + exists(string name, int arity | + this.argIsInstantiationOf(i, name, arity) and + result = getMethodSuccessor(i, name, arity) + ) + } + + /** Gets a method that matches this method call. */ + pragma[nomagic] + Method resolveCallTarget() { + exists(ImplOrTraitItemNode i | + result = this.resolveCallTargetCand(i) and + not exists(FunctionTypePosition pos | + FunctionOverloading::functionResolutionDependsOnArgument(i, _, pos, _, _) and + pos.isPositional() + ) + ) + or + MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) + } + + predicate hasNoBorrow() { not derefChainBorrow = any(string s) + ";borrow" } + + string toString() { result = mc_.toString() + " [" + derefChainBorrow + "]" } + + Location getLocation() { result = mc_.getLocation() } + } + + private module ReceiverSatisfiesBlanketConstraintInput implements + BlanketImplementation::SatisfiesBlanketConstraintInputSig + { + pragma[nomagic] + predicate hasBlanketCandidate( + MethodCallCand mcc, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam + ) { + exists(MethodCall mc, string name, int arity | + mcc.hasSignature(mc, _, _, name, arity) and + methodCallBlanketCandidate(mc, _, impl, _, blanketPath, blanketTypeParam) and + // Only apply blanket implementations when no other implementations are possible; + // this is to account for codebases that use the (unstable) specialization feature + // (https://rust-lang.github.io/rfcs/1210-impl-specialization.html) + mcc.hasNoCompatibleTarget() + | + mcc.hasNoBorrow() + or + blanketPath.getHead() = TRefTypeParameter() + ) + } + } + + private module ReceiverSatisfiesBlanketConstraint = + BlanketImplementation::SatisfiesBlanketConstraint; + + /** + * A configuration for matching the type of a receiver against the type of + * a `self` parameter. + */ + private module ReceiverIsInstantiationOfSelfParamInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + additional predicate potentialInstantiationOf0( + MethodCallCand mcc, ImplOrTraitItemNode i, AssocFunctionType selfType + ) { + exists( + MethodCall mc, Method m, string name, int arity, TypePath strippedTypePath, + Type strippedType + | + mcc.hasSignature(mc, strippedTypePath, strippedType, name, arity) + | + methodCallNonBlanketCandidate(mc, m, i, selfType, strippedTypePath, strippedType) + or + methodCallBlanketCandidate(mc, m, i, selfType, _, _) and + ReceiverSatisfiesBlanketConstraint::satisfiesBlanketConstraint(mcc, i) + ) + } + + pragma[nomagic] + predicate potentialInstantiationOf( + MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + ) { + potentialInstantiationOf0(mcc, abs, constraint) and + if abs.(Impl).hasTrait() + then + // inherent methods take precedence over trait methods, so only allow + // trait methods when there are no matching inherent methods + mcc.hasNoInherentTarget() + else any() + } + + predicate relevantConstraint(AssocFunctionType constraint) { + methodInfo(_, _, _, _, constraint, _, _) + } + } + + private module ReceiverIsInstantiationOfSelfParam = + ArgIsInstantiationOf; + + /** + * A configuration for matching the type qualifier of a method call + * against the type being implemented in an `impl` block. For example, + * in `Q::m(x)`, we check that the type of `Q` is an instance of the + * type being implemented. + */ + private module TypeQualifierIsInstantiationOfImplSelfInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + private predicate potentialInstantiationOf0( + MethodCallCallExpr ce, ImplItemNode impl, TypeMentionTypeTree constraint + ) { + ce.hasTypeQualifiedCandidate(impl) and + constraint = impl.getSelfPath() + } + + pragma[nomagic] + predicate potentialInstantiationOf( + MethodCallCallExpr ce, TypeAbstraction abs, TypeMentionTypeTree constraint + ) { + potentialInstantiationOf0(ce, abs, constraint) and + if abs.(Impl).hasTrait() + then + // inherent methods take precedence over trait methods, so only allow + // trait methods when there are no matching inherent methods + MkMethodCallCand(ce, _).(MethodCallCand).hasNoInherentTarget() + else any() + } + + predicate relevantConstraint(TypeMentionTypeTree constraint) { + potentialInstantiationOf0(_, _, constraint) + } + } + + private module TypeQualifierIsInstantiationOfImplSelf = + IsInstantiationOf; + + /** + * A configuration for anti-matching the type of a receiver against the type of + * a `self` parameter in an inherent method. + */ + private module ReceiverIsNotInstantiationOfInherentSelfParamInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + predicate potentialInstantiationOf( + MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + ) { + ReceiverIsInstantiationOfSelfParamInput::potentialInstantiationOf0(mcc, abs, constraint) and + abs = any(Impl i | not i.hasTrait()) + } + + predicate relevantConstraint(AssocFunctionType constraint) { + methodInfo(_, _, _, _, constraint, _, _) + } + } + + private module ReceiverIsNotInstantiationOfInherentSelfParam = + ArgIsInstantiationOf; + + /** + * A configuration for matching the types of positional arguments against the + * types of parameters, when needed to disambiguate the call. + */ + private module MethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { + predicate toCheck( + ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t + ) { + exists(TypePath path, Type t0 | + pos.isPositional() and + FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, path, t0) and + t.appliesTo(f, pos, i) and + // for now, we do not handle ambiguous targets when one of the types it iself + // a type parameter; we should be checking the constraints on that type parameter + // in this case + not t0 instanceof TypeParameter + ) + } + + class Call extends MethodCallCand { + Type getArgType(FunctionTypePosition pos, TypePath path) { + result = inferType(mc_.getNodeAt(pos), path) + } + + predicate hasTargetCand(ImplOrTraitItemNode i, Function f) { + f = this.resolveCallTargetCand(i) + } + } + } + + private module MethodArgsAreInstantiationsOf = + ArgsAreInstantiationsOf; +} + +/** + * A matching configuration for resolving types of method call expressions + * like `foo.bar(baz)`. + */ +private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSig { + import FunctionTypePositionMatchingInput + + final class Declaration extends Function { + TypeParameter getTypeParameter(TypeParameterPosition ppos) { + typeParamMatchPosition(this.getGenericParamList().getATypeParam(), result, ppos) + or + exists(ImplOrTraitItemNode i | this = i.getAnAssocItem() | + typeParamMatchPosition(i.getTypeParam(_), result, ppos) + or + ppos.isImplicit() and result = TSelfTypeParameter(i) + or + ppos.isImplicit() and + result.(AssociatedTypeTypeParameter).getTrait() = i + ) + or + ppos.isImplicit() and + this = result.(ImplTraitTypeTypeParameter).getFunction() + } + + pragma[nomagic] + Type getParameterType(DeclarationPosition dpos, TypePath path) { + exists(Param p, int i | + p = this.getParam(i) and + i = dpos.asPositional() and + result = p.getTypeRepr().(TypeMention).resolveTypeAt(path) + ) + or + dpos.isSelf() and + exists(SelfParam self | + self = pragma[only_bind_into](this.getSelfParam()) and + result = getSelfParamTypeMention(self).resolveTypeAt(path) + ) + } + + private Type resolveRetType(TypePath path) { + result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) + } + + pragma[nomagic] + Type getReturnType(TypePath path) { + if this.isAsync() + then + path.isEmpty() and + result = getFutureTraitType() + or + exists(TypePath suffix | + result = this.resolveRetType(suffix) and + path = TypePath::cons(getFutureOutputTypeParameter(), suffix) + ) + else result = this.resolveRetType(path) + } + + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + result = this.getParameterType(dpos, path) + or + dpos.isReturn() and + result = this.getReturnType(path) + } + } + + class AccessEnvironment = string; + + final private class MethodCallFinal = MethodResolution::MethodCall; + + class Access extends MethodCallFinal { + Access() { + // handled in the `OperationMatchingInput` module + not this instanceof Operation + } + + pragma[nomagic] + Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + exists(TypeMention arg | result = arg.resolveTypeAt(path) | + arg = + this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) + or + arg = getCallExprTypeArgument(this, apos) + ) + } + + pragma[nomagic] + private Type getInferredSelfType(string derefChainBorrow, TypePath path) { + result = this.getACandidateReceiverTypeAt(path, derefChainBorrow) + } + + pragma[nomagic] + Type getInferredNonSelfType(AccessPosition apos, TypePath path) { + if + // index expression `x[i]` desugars to `*x.index(i)`, so we must account for + // the implicit deref + apos.isReturn() and + this instanceof IndexExpr + then + path.isEmpty() and + result = TRefType() + or + exists(TypePath suffix | + result = inferType(this.getNodeAt(apos), suffix) and + path = TypePath::cons(TRefTypeParameter(), suffix) + ) + else ( + not apos.isSelf() and + result = inferType(this.getNodeAt(apos), path) + ) + } + + pragma[nomagic] + Type getInferredType(string derefChainBorrow, AccessPosition apos, TypePath path) { + apos.isSelf() and + result = this.getInferredSelfType(derefChainBorrow, path) + or + result = this.getInferredNonSelfType(apos, path) and + exists(this.getTarget(derefChainBorrow)) + } + + Declaration getTarget(string derefChainBorrow) { + result = this.resolveCallTarget(derefChainBorrow) // mutual recursion; resolving method calls requires resolving types and vice versa + } + } +} + +private module MethodCallMatching = MatchingWithEnvironment; + +pragma[nomagic] +private Type inferMethodCallType0( + MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, AstNode n, + string derefChainBorrow, TypePath path +) { + exists(TypePath path0 | + n = a.getNodeAt(apos) and + result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + | + if + // index expression `x[i]` desugars to `*x.index(i)`, so we must account for + // the implicit deref + apos.isReturn() and + a instanceof IndexExpr + then path0.isCons(TRefTypeParameter(), path) + else path = path0 + ) +} + +/** + * Gets the type of `n` at `path`, where `n` is either a method call or an + * argument/receiver of a method call. + */ +pragma[nomagic] +private Type inferMethodCallType(AstNode n, TypePath path) { + exists( + MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, + string derefChainBorrow, TypePath path0 + | + result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) + | + ( + not apos.isSelf() + or + derefChainBorrow = ";" + ) and + path = path0 + or + // adjust for implicit deref + apos.isSelf() and + derefChainBorrow = ".ref;" and + path = TypePath::cons(TRefTypeParameter(), path0) + or + // adjust for implicit borrow + apos.isSelf() and + derefChainBorrow = ";borrow" and + path0.isCons(TRefTypeParameter(), path) + ) +} + +/** + * Provides logic for resolving calls to non-method items. This includes + * "calls" to tuple variants and tuple structs. + */ +private module NonMethodResolution { + /** + * Holds if the associated function `implFunction` at `impl` implements + * `traitFunction`, which belongs to `trait`, and resolving the function + * `implFunction` requires inspecting the type of applied _arguments_ at + * position `pos` in order to determine whether it is the correct resolution. + * + * `type` is the type at `pos` of `implFunction` which mathces a type parameter of + * `traitFunction` at `pos`. + */ + pragma[nomagic] + private predicate traitFunctionDependsOnArgument( + TraitItemNode trait, NonMethodFunction traitFunction, FunctionTypePosition pos, Type type, + ImplItemNode impl, NonMethodFunction implFunction + ) { + exists(TypePath path | + assocFunctionTypeAtPath(implFunction, impl, pos, path, type) and + implFunction.implements(traitFunction) and + FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, _) + | + not pos.isReturn() + or + // We only check that the context of the call provides relevant type information + // when no argument can + not exists(FunctionTypePosition pos0 | + FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos0, _, _) or + FunctionOverloading::functionResolutionDependsOnArgument(impl, implFunction, pos0, _, _) + | + not pos0.isReturn() + ) + ) + } + + pragma[nomagic] + private predicate functionInfoBlanketRelevantPos( + NonMethodFunction f, string name, int arity, ImplItemNode impl, Trait trait, + FunctionTypePosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam + ) { + functionInfoBlanket(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and + ( + not pos.isReturn() + or + // We only check that the context of the call provides relevant type information + // when no argument can + not exists(FunctionTypePosition pos0 | + functionInfoBlanket(f, name, arity, impl, trait, pos0, _, _, _) and + not pos0.isReturn() + ) + ) + } + + pragma[nomagic] + private predicate blanketCallTraitCandidate(Element fc, Trait trait) { + exists(string name, int arity | + fc.(NonMethodCall).hasNameAndArity(name, arity) and + functionInfoBlanketRelevantPos(_, name, arity, _, trait, _, _, _, _) + | + not fc.(Call).hasTrait() + or + trait = fc.(Call).getTrait() + ) + } + + private module BlanketTraitIsVisible = TraitIsVisible; + + /** A non-method call, `f(x)`. */ + final class NonMethodCall extends CallExpr { + NonMethodCall() { + // even if a function cannot be resolved by path resolution, it may still + // be possible to resolve a blanket implementation (so not `forex`) + forall(Function f | f = CallExprImpl::getResolvedFunction(this) | + f instanceof NonMethodFunction + ) + } + + pragma[nomagic] + predicate hasNameAndArity(string name, int arity) { + name = CallExprImpl::getFunctionPath(this).getText() and + arity = this.getArgList().getNumberOfArgs() + } + + /** + * Gets the item that this function call resolves to using path resolution, + * if any. + */ + private ItemNode getPathResolutionResolved() { + result = CallExprImpl::getResolvedFunction(this) and + not result.(Function).hasSelfParam() + } + + /** + * Gets the blanket function that this call may resolve to, if any. + */ + pragma[nomagic] + private NonMethodFunction resolveCallTargetBlanketCand(ImplItemNode impl) { + exists(string name | + this.hasNameAndArity(pragma[only_bind_into](name), _) and + ArgIsInstantiationOfBlanketParam::argIsInstantiationOf(MkCallAndBlanketPos(this, _), impl, _) and + result = impl.getASuccessor(pragma[only_bind_into](name)) + ) + } + + pragma[nomagic] + NonMethodFunction resolveAssocCallTargetCand(ImplItemNode i) { + not this.(Call).hasTrait() and + result = this.getPathResolutionResolved() and + result = i.getASuccessor(_) + or + result = this.resolveCallTargetBlanketCand(i) + } + + AstNode getNodeAt(FunctionTypePosition pos) { + result = this.getArg(pos.asPositional()) + or + result = this and pos.isReturn() + } + + Type getTypeAt(FunctionTypePosition pos, TypePath path) { + result = inferType(this.getNodeAt(pos), path) + } + + pragma[nomagic] + predicate resolveCallTargetBlanketCandidate( + ImplItemNode impl, FunctionTypePosition pos, TypePath blanketPath, TypeParam blanketTypeParam + ) { + exists(string name, int arity, Trait trait, AssocFunctionType t | + this.hasNameAndArity(name, arity) and + exists(this.getTypeAt(pos, blanketPath)) and + functionInfoBlanketRelevantPos(_, name, arity, impl, trait, pos, t, blanketPath, + blanketTypeParam) and + BlanketTraitIsVisible::traitIsVisible(this, trait) + ) + } + + pragma[nomagic] + predicate hasTraitResolved(TraitItemNode trait, NonMethodFunction resolved) { + resolved = this.getPathResolutionResolved() and + trait = this.(Call).getTrait() + } + + pragma[nomagic] + private NonMethodFunction resolveCallTargetRec() { + result = this.resolveCallTargetBlanketCand(_) and + not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) + or + NonMethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) + } + + pragma[nomagic] + ItemNode resolveCallTargetNonRec() { + not this.(Call).hasTrait() and + result = this.getPathResolutionResolved() and + not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) + } + + pragma[inline] + ItemNode resolveCallTarget() { + result = this.resolveCallTargetNonRec() + or + result = this.resolveCallTargetRec() + } + } + + private newtype TCallAndBlanketPos = + MkCallAndBlanketPos(NonMethodCall fc, FunctionTypePosition pos) { + fc.resolveCallTargetBlanketCandidate(_, pos, _, _) + } + + /** A call tagged with a position. */ + private class CallAndBlanketPos extends MkCallAndBlanketPos { + NonMethodCall fc; + FunctionTypePosition pos; + + CallAndBlanketPos() { this = MkCallAndBlanketPos(fc, pos) } + + Location getLocation() { result = fc.getLocation() } + + Type getTypeAt(TypePath path) { result = fc.getTypeAt(pos, path) } + + string toString() { result = fc.toString() + " [arg " + pos + "]" } + } + + private module ArgSatisfiesBlanketConstraintInput implements + BlanketImplementation::SatisfiesBlanketConstraintInputSig + { + pragma[nomagic] + predicate hasBlanketCandidate( + CallAndBlanketPos fcp, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam + ) { + exists(NonMethodCall fc, FunctionTypePosition pos | + fcp = MkCallAndBlanketPos(fc, pos) and + fc.resolveCallTargetBlanketCandidate(impl, pos, blanketPath, blanketTypeParam) + ) + } + } + + private module ArgSatisfiesBlanketConstraint = + BlanketImplementation::SatisfiesBlanketConstraint; + + /** + * A configuration for matching the type of an argument against the type of + * a parameter that mentions a satisfied blanket type parameter. + */ + private module ArgIsInstantiationOfBlanketParamInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + predicate potentialInstantiationOf( + CallAndBlanketPos fcp, TypeAbstraction abs, AssocFunctionType constraint + ) { + exists(FunctionTypePosition pos | + ArgSatisfiesBlanketConstraint::satisfiesBlanketConstraint(fcp, abs) and + fcp = MkCallAndBlanketPos(_, pos) and + functionInfoBlanketRelevantPos(_, _, _, abs, _, pos, constraint, _, _) + ) + } + + predicate relevantConstraint(AssocFunctionType constraint) { + functionInfoBlanketRelevantPos(_, _, _, _, _, _, constraint, _, _) + } + } + + private module ArgIsInstantiationOfBlanketParam = + ArgIsInstantiationOf; + + private module NonMethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { + predicate toCheck( + ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t + ) { + t.appliesTo(f, pos, i) and + ( + exists(Type t0 | + // for now, we do not handle ambiguous targets when one of the types it iself + // a type parameter; we should be checking the constraints on that type parameter + // in this case + not t0 instanceof TypeParameter + | + FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, _, t0) + or + traitFunctionDependsOnArgument(_, _, pos, t0, i, f) + ) + or + // match against the trait function itself + exists(Trait trait | + FunctionOverloading::traitTypeParameterOccurrence(trait, f, _, pos, _, + TSelfTypeParameter(trait)) + ) + ) + } + + class Call extends NonMethodCall { + Type getArgType(FunctionTypePosition pos, TypePath path) { + result = inferType(this.getNodeAt(pos), path) + } + + predicate hasTargetCand(ImplOrTraitItemNode i, Function f) { + f = this.resolveAssocCallTargetCand(i) + or + exists(TraitItemNode trait, NonMethodFunction resolved, ImplItemNode i1, Function f1 | + this.hasTraitResolved(trait, resolved) and + traitFunctionDependsOnArgument(trait, resolved, _, _, i1, f1) + | + f = f1 and + i = i1 + or + f = resolved and + i = trait + ) + } + } + } + + private module NonMethodArgsAreInstantiationsOf = + ArgsAreInstantiationsOf; +} + +/** + * A matching configuration for resolving types of calls like + * `foo::bar(baz)` where the target is not a method. + */ +private module NonMethodCallMatchingInput implements MatchingInputSig { + import FunctionTypePositionMatchingInput + abstract class Declaration extends AstNode { abstract TypeParameter getTypeParameter(TypeParameterPosition ppos); @@ -890,7 +2154,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { override Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(int pos | result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and - pos = dpos.asPosition() + pos = dpos.asPositional() ) } @@ -913,7 +2177,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { override Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(int pos | result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and - pos = dpos.asPosition() + pos = dpos.asPositional() ) } @@ -928,36 +2192,13 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { } } - additional class FunctionDecl extends Declaration, Function { + private class NonMethodFunctionDecl extends Declaration, NonMethodFunction instanceof MethodCallMatchingInput::Declaration + { override TypeParameter getTypeParameter(TypeParameterPosition ppos) { - typeParamMatchPosition(this.getGenericParamList().getATypeParam(), result, ppos) - or - exists(ImplOrTraitItemNode i | this = i.getAnAssocItem() | - typeParamMatchPosition(i.getTypeParam(_), result, ppos) - or - ppos.isImplicit() and result = TSelfTypeParameter(i) - or - ppos.isImplicit() and - result.(AssociatedTypeTypeParameter).getTrait() = i - ) - or - ppos.isImplicit() and - this = result.(ImplTraitTypeTypeParameter).getFunction() + result = MethodCallMatchingInput::Declaration.super.getTypeParameter(ppos) } override Type getParameterType(DeclarationPosition dpos, TypePath path) { - exists(Param p, int i | - paramPos(this.getParamList(), p, i) and - i = dpos.asPosition() and - result = p.getTypeRepr().(TypeMention).resolveTypeAt(path) - ) - or - exists(SelfParam self | - self = pragma[only_bind_into](this.getSelfParam()) and - dpos.isSelf() and - result = inferAnnotatedType(self, path) // `self` parameter with type annotation - ) - or // For associated functions, we may also need to match type arguments against // the `Self` type. For example, in // @@ -974,237 +2215,139 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { // ``` // // we need to match `i32` against the type parameter `T` of the `impl` block. + dpos.isSelf() and exists(ImplOrTraitItemNode i | this = i.getAnAssocItem() and - dpos.isSelf() and - not this.hasSelfParam() - | - result = TSelfTypeParameter(i) and - path.isEmpty() - or - result = resolveImplSelfType(i, path) + result = resolveImplOrTraitType(i, path) + ) + or + exists(FunctionTypePosition fpos | + result = MethodCallMatchingInput::Declaration.super.getParameterType(fpos, path) and + dpos = fpos.getFunctionCallAdjusted(this) ) - } - - private Type resolveRetType(TypePath path) { - result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) } override Type getReturnType(TypePath path) { - if this.isAsync() - then - path.isEmpty() and - result = getFutureTraitType() - or - exists(TypePath suffix | - result = this.resolveRetType(suffix) and - path = TypePath::cons(getFutureOutputTypeParameter(), suffix) - ) - else result = this.resolveRetType(path) + result = MethodCallMatchingInput::Declaration.super.getReturnType(path) } } - private newtype TAccessPosition = - TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed, Boolean certain) or - TReturnAccessPosition() - - class AccessPosition extends TAccessPosition { - ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _, _) } - - predicate isBorrowed(boolean certain) { this = TArgumentAccessPosition(_, true, certain) } - - predicate isReturn() { this = TReturnAccessPosition() } - - string toString() { - exists(ArgumentPosition pos, boolean borrowed, boolean certain | - this = TArgumentAccessPosition(pos, borrowed, certain) and - result = pos + ":" + borrowed + ":" + certain - ) - or - this.isReturn() and - result = "(return)" - } - } - - final class Access extends Call { + class Access extends NonMethodResolution::NonMethodCall { pragma[nomagic] Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - exists(TypeMention arg | result = arg.resolveTypeAt(path) | - exists(Path p, int i | - p = CallExprImpl::getFunctionPath(this) and - arg = p.getSegment().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and - apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) - ) - or - arg = - this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) - ) - } - - AstNode getNodeAt(AccessPosition apos) { - exists(ArgumentPosition pos, boolean borrowed, boolean certain | - apos = TArgumentAccessPosition(pos, borrowed, certain) and - result = this.getArgument(pos) - | - if this.implicitBorrowAt(pos, _) - then borrowed = true and this.implicitBorrowAt(pos, certain) - else ( - borrowed = false and certain = true - ) - ) - or - result = this and apos.isReturn() + result = getCallExprTypeArgument(this, apos).resolveTypeAt(path) } + pragma[nomagic] Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + apos.isSelf() and + result = getCallExprTypeQualifier(this, path) or - // The `Self` type is supplied explicitly as a type qualifier, e.g. `Foo::::baz()` - apos = TArgumentAccessPosition(CallImpl::TSelfArgumentPosition(), false, false) and - result = getTypeQualifier(this, path) + result = inferType(this.getNodeAt(apos), path) } Declaration getTarget() { - result = resolveMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa - or - result = resolveFunctionCallTarget(this) // potential mutual recursion; resolving some associated function calls requires resolving types + result = this.resolveCallTarget() // potential mutual recursion; resolving some associated function calls requires resolving types } } - - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos.getArgumentPosition() = dpos.asArgumentPosition() - or - apos.isReturn() and dpos.isReturn() - } - - bindingset[apos, target, path, t] - pragma[inline_late] - predicate adjustAccessType( - AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj - ) { - apos.isBorrowed(true) and - pathAdj = TypePath::cons(TRefTypeParameter(), path) and - tAdj = t - or - apos.isBorrowed(false) and - exists(Type selfParamType | - selfParamType = - target - .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()), - TypePath::nil()) - | - if selfParamType = TRefType() - then - if t != TRefType() and path.isEmpty() - then - // adjust for implicit borrow - pathAdj.isEmpty() and - tAdj = TRefType() - or - // adjust for implicit borrow - pathAdj = TypePath::singleton(TRefTypeParameter()) and - tAdj = t - else - if path.isCons(TRefTypeParameter(), _) - then - pathAdj = path and - tAdj = t - else ( - // adjust for implicit borrow - not (t = TRefType() and path.isEmpty()) and - pathAdj = TypePath::cons(TRefTypeParameter(), path) and - tAdj = t - ) - else ( - // adjust for implicit deref - path.isCons(TRefTypeParameter(), pathAdj) and - tAdj = t - or - not path.isCons(TRefTypeParameter(), _) and - not (t = TRefType() and path.isEmpty()) and - pathAdj = path and - tAdj = t - ) - ) - or - not apos.isBorrowed(_) and - pathAdj = path and - tAdj = t - } } -private module CallExprBaseMatching = Matching; +private module NonMethodCallMatching = Matching; -/** - * Gets the type of `n` at `path`, where `n` is either a call or an - * argument/receiver of a call. - */ pragma[nomagic] -private Type inferCallExprBaseType(AstNode n, TypePath path) { - exists( - CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos, - TypePath path0 - | +private Type inferNonMethodCallType(AstNode n, TypePath path) { + exists(NonMethodCallMatchingInput::Access a, NonMethodCallMatchingInput::AccessPosition apos | n = a.getNodeAt(apos) and - result = CallExprBaseMatching::inferAccessType(a, apos, path0) - | - if - apos.isBorrowed(true) - or - // The desugaring of the unary `*e` is `*Deref::deref(&e)` and the - // desugaring of `a[b]` is `*Index::index(&a, b)`. To handle the deref - // expression after the call we must strip a `&` from the type at the - // return position. - apos.isReturn() and - (a instanceof DerefExpr or a instanceof IndexExpr) - then path0.isCons(TRefTypeParameter(), path) - else - if apos.isBorrowed(false) - then - exists(Type argType | argType = inferType(n) | - if argType = TRefType() - then - path = path0 and - path0.isCons(TRefTypeParameter(), _) - or - // adjust for implicit deref - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = TypePath::cons(TRefTypeParameter(), path0) - else ( - not ( - argType.(StructType).getStruct() instanceof StringStruct and - result.(StructType).getStruct() instanceof Builtins::Str - ) and - ( - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 - or - // adjust for implicit borrow - path0.isCons(TRefTypeParameter(), path) - ) - ) - ) - else ( - not apos.isBorrowed(_) and - path = path0 - ) + result = NonMethodCallMatching::inferAccessType(a, apos, path) ) } -pragma[inline] -private Type inferRootTypeDeref(AstNode n) { - result = inferType(n) and - result != TRefType() - or - // for reference types, lookup members in the type being referenced - result = inferType(n, TypePath::singleton(TRefTypeParameter())) +/** + * A matching configuration for resolving types of operations like `a + b`. + */ +private module OperationMatchingInput implements MatchingInputSig { + private import codeql.rust.elements.internal.OperationImpl as OperationImpl + import FunctionTypePositionMatchingInput + + class Declaration extends MethodCallMatchingInput::Declaration { + private Method getSelfOrImpl() { + result = this + or + this.implements(result) + } + + pragma[nomagic] + private predicate borrowsAt(DeclarationPosition pos) { + exists(TraitItemNode t, string path, string method | + this.getSelfOrImpl() = t.getAssocItem(method) and + path = t.getCanonicalPath(_) and + exists(int borrows | OperationImpl::isOverloaded(_, _, path, method, borrows) | + pos.isSelf() and borrows >= 1 + or + pos.asPositional() = 0 and + borrows >= 2 + ) + ) + } + + pragma[nomagic] + private Type getParameterType(DeclarationPosition dpos, TypePath path) { + exists(TypePath path0 | + result = super.getParameterType(dpos, path0) and + if this.borrowsAt(dpos) then path0.isCons(TRefTypeParameter(), path) else path0 = path + ) + } + + pragma[nomagic] + private predicate derefsReturn() { this.getSelfOrImpl() = any(DerefTrait t).getDerefFunction() } + + pragma[nomagic] + private Type getReturnType(TypePath path) { + exists(TypePath path0 | + result = super.getReturnType(path0) and + if this.derefsReturn() then path0.isCons(TRefTypeParameter(), path) else path0 = path + ) + } + + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + result = this.getParameterType(dpos, path) + or + dpos.isReturn() and + result = this.getReturnType(path) + } + } + + class Access extends MethodResolution::MethodCallOperation { + Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } + + pragma[nomagic] + Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) + } + + Declaration getTarget() { + result = this.resolveCallTarget(_) // mutual recursion + } + } +} + +private module OperationMatching = Matching; + +pragma[nomagic] +private Type inferOperationType(AstNode n, TypePath path) { + exists(OperationMatchingInput::Access a, OperationMatchingInput::AccessPosition apos | + n = a.getNodeAt(apos) and + result = OperationMatching::inferAccessType(a, apos, path) + ) } pragma[nomagic] private Type getFieldExprLookupType(FieldExpr fe, string name) { - result = inferRootTypeDeref(fe.getContainer()) and name = fe.getIdentifier().getText() + exists(TypePath path | + result = inferType(fe.getContainer(), path) and + name = fe.getIdentifier().getText() and + isComplexRootStripped(path, result) + ) } pragma[nomagic] @@ -1224,8 +2367,7 @@ private TupleTypeParameter resolveTupleTypeFieldExpr(FieldExpr fe) { } /** - * A matching configuration for resolving types of field expressions - * like `x.field`. + * A matching configuration for resolving types of field expressions like `x.field`. */ private module FieldExprMatchingInput implements MatchingInputSig { private newtype TDeclarationPosition = @@ -1345,7 +2487,17 @@ private module FieldExprMatchingInput implements MatchingInputSig { } Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + exists(TypePath path0 | result = inferType(this.getNodeAt(apos), path0) | + if apos.isSelf() + then + // adjust for implicit deref + path0.isCons(TRefTypeParameter(), path) + or + not path0.isCons(TRefTypeParameter(), _) and + not (result = TRefType() and path0.isEmpty()) and + path = path0 + else path = path0 + ) } Declaration getTarget() { @@ -1362,28 +2514,6 @@ private module FieldExprMatchingInput implements MatchingInputSig { predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { apos = dpos } - - bindingset[apos, target, path, t] - pragma[inline_late] - predicate adjustAccessType( - AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj - ) { - exists(target) and - if apos.isSelf() - then - // adjust for implicit deref - path.isCons(TRefTypeParameter(), pathAdj) and - tAdj = t - or - not path.isCons(TRefTypeParameter(), _) and - not (t = TRefType() and path.isEmpty()) and - pathAdj = path and - tAdj = t - else ( - pathAdj = path and - tAdj = t - ) - } } private module FieldExprMatching = Matching; @@ -1443,6 +2573,9 @@ private Type inferTryExprType(TryExpr te, TypePath path) { pragma[nomagic] private StructType getStrStruct() { result = TStruct(any(Builtins::Str s)) } +pragma[nomagic] +private StructType getStringStruct() { result = TStruct(any(StringStruct s)) } + pragma[nomagic] private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { path.isEmpty() and @@ -1521,14 +2654,6 @@ private Type inferAwaitExprType(AstNode n, TypePath path) { ) } -private class Vec extends Struct { - Vec() { this.getCanonicalPath() = "alloc::vec::Vec" } - - TypeParamTypeParameter getElementTypeParameter() { - result.getTypeParam() = this.getGenericParamList().getTypeParam(0) - } -} - /** * Gets the root type of the array expression `ae`. */ @@ -1566,7 +2691,8 @@ private Type inferIndexExprType(IndexExpr ie, TypePath path) { ) and result = inferType(ie.getBase(), exprPath) | - exprPath.isCons(any(Vec v).getElementTypeParameter(), path) + // todo: remove? + exprPath.isCons(TTypeParamTypeParameter(any(Vec v).getElementTypeParam()), path) or exprPath.isCons(any(ArrayTypeParameter tp), path) or @@ -1634,17 +2760,15 @@ private Type inferStructPatType(AstNode n, TypePath path) { * like `let Some(x) = ...`. */ private module TupleStructPatMatchingInput implements MatchingInputSig { - class DeclarationPosition = CallExprBaseMatchingInput::DeclarationPosition; + import FunctionTypePositionMatchingInput - class Declaration = CallExprBaseMatchingInput::TupleDeclaration; - - class AccessPosition = DeclarationPosition; + class Declaration = NonMethodCallMatchingInput::TupleDeclaration; class Access extends TupleStructPat { Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } AstNode getNodeAt(AccessPosition apos) { - result = this.getField(apos.asPosition()) + result = this.getField(apos.asPositional()) or result = this and apos.isSelf() @@ -1661,10 +2785,6 @@ private module TupleStructPatMatchingInput implements MatchingInputSig { Declaration getTarget() { result = resolvePath(this.getPath()) } } - - predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { - apos = dpos - } } private module TupleStructPatMatching = Matching; @@ -1848,635 +2968,6 @@ private Type inferCastExprType(CastExpr ce, TypePath path) { result = ce.getTypeRepr().(TypeMention).resolveTypeAt(path) } -final class MethodCall extends Call { - MethodCall() { exists(this.getReceiver()) } - - private Type getReceiverTypeAt(TypePath path) { - result = inferType(super.getReceiver(), path) - or - result = getTypeQualifier(this, path) - } - - /** Gets the type of the receiver of the method call at `path`. */ - Type getTypeAt(TypePath path) { - if - this.receiverImplicitlyBorrowed() or - this.(CallImpl::CallExprMethodCall).hasExplicitSelfBorrow() - then - exists(TypePath path0, Type t0 | - t0 = this.getReceiverTypeAt(path0) and - ( - path0.isCons(TRefTypeParameter(), path) - or - ( - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) - or - // Ideally we should find all methods on reference types, but as - // that currently causes a blowup we limit this to the `deref` - // method in order to make dereferencing work. - this.getMethodName() = "deref" - ) and - path = path0 - ) - | - result = t0 - or - // We do not yet model the `Deref` trait, so we hard-code the fact that - // `String` dereferences to `str` here. This allows us e.g. to resolve - // `x.parse::()` to the function `::parse` when `x` has - // type `String`. - // - // See also https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.autoref-deref - path.isEmpty() and - t0.(StructType).getStruct() instanceof StringStruct and - result.(StructType).getStruct() instanceof Builtins::Str - ) - else result = this.getReceiverTypeAt(path) - } -} - -/** - * Holds if a method for `type` with the name `name` and the arity `arity` - * exists in `impl`. - */ -pragma[nomagic] -private predicate methodCandidate(Type type, string name, int arity, Impl impl) { - type = impl.getSelfTy().(TypeMention).resolveType() and - exists(Function f | - f = impl.(ImplItemNode).getASuccessor(name) and - f.hasSelfParam() and - arity = f.getParamList().getNumberOfParams() - ) -} - -/** - * Holds if a method for `type` for `trait` with the name `name` and the arity - * `arity` exists in `impl`. - */ -pragma[nomagic] -private predicate methodCandidateTrait(Type type, Trait trait, string name, int arity, Impl impl) { - trait = impl.(ImplItemNode).resolveTraitTy() and - methodCandidate(type, name, arity, impl) -} - -/** - * Holds if `mc` has `rootType` as the root type of the receiver and the target - * method is named `name` and has arity `arity` - */ -pragma[nomagic] -private predicate isMethodCall(MethodCall mc, Type rootType, string name, int arity) { - rootType = mc.getTypeAt(TypePath::nil()) and - name = mc.getMethodName() and - arity = mc.getNumberOfArguments() -} - -private module IsInstantiationOfInput implements - IsInstantiationOfInputSig -{ - /** Holds if `mc` specifies a trait and might target a method in `impl`. */ - pragma[nomagic] - private predicate methodCallTraitCandidate(MethodCall mc, Impl impl) { - exists(Type rootType, string name, int arity | - isMethodCall(mc, rootType, name, arity) and - methodCandidateTrait(rootType, mc.getTrait(), name, arity, impl) - ) - } - - /** Holds if `mc` does not specify a trait and might target a method in `impl`. */ - pragma[nomagic] - private predicate methodCallCandidate(MethodCall mc, Impl impl) { - exists(Type rootType, string name, int arity | - not exists(mc.getTrait()) and - isMethodCall(mc, rootType, name, arity) and - methodCandidate(rootType, name, arity, impl) - ) - } - - private predicate relevantTraitVisible(Element mc, Trait trait) { - trait = any(ImplItemNode impl | methodCallCandidate(mc, impl)).resolveTraitTy() - } - - bindingset[impl] - pragma[inline_late] - private TypeRepr getImplSelfTy(Impl impl) { result = impl.getSelfTy() } - - pragma[nomagic] - predicate potentialInstantiationOf( - MethodCall mc, TypeAbstraction impl, TypeMentionTypeTree constraint - ) { - constraint = getImplSelfTy(impl) and - ( - methodCallTraitCandidate(mc, impl) - or - methodCallCandidate(mc, impl) and - ( - not exists(impl.(ImplItemNode).resolveTraitTy()) - or - // If the `impl` block implements a trait, that trait must be visible in - // order for the `impl` to be valid. - exists(Trait trait | - pragma[only_bind_into](trait) = impl.(ImplItemNode).resolveTraitTy() and - TraitIsVisible::traitIsVisible(mc, pragma[only_bind_into](trait)) - ) - ) - ) - } - - predicate relevantTypeMention(TypeMentionTypeTree constraint) { - exists(Impl impl | methodCandidate(_, _, _, impl) and constraint = impl.getSelfTy()) - } -} - -bindingset[item, name] -pragma[inline_late] -private Function getMethodSuccessor(ItemNode item, string name) { - result = item.getASuccessor(name) -} - -bindingset[tp, name] -pragma[inline_late] -private Function getTypeParameterMethod(TypeParameter tp, string name) { - result = getMethodSuccessor(tp.(TypeParamTypeParameter).getTypeParam(), name) - or - result = getMethodSuccessor(tp.(SelfTypeParameter).getTrait(), name) - or - result = getMethodSuccessor(tp.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr(), name) -} - -pragma[nomagic] -private Type resolveNonTypeParameterTypeAt(TypeMention tm, TypePath path) { - result = tm.resolveTypeAt(path) and - not result instanceof TypeParameter -} - -bindingset[t1, t2] -private predicate typeMentionEqual(TypeMention t1, TypeMention t2) { - forex(TypePath path, Type type | resolveNonTypeParameterTypeAt(t1, path) = type | - resolveNonTypeParameterTypeAt(t2, path) = type - ) -} - -pragma[nomagic] -private predicate implSiblingCandidate( - Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy -) { - trait = impl.(ImplItemNode).resolveTraitTy() and - // If `impl` has an expansion from a macro attribute, then it's been - // superseded by the output of the expansion (and usually the expansion - // contains the same `impl` block so considering both would give spurious - // siblings). - not exists(impl.getAttributeMacroExpansion()) and - selfTy = impl.getSelfTy() and - rootType = selfTy.resolveType() -} - -/** - * Holds if `impl1` and `impl2` are a sibling implementations of `trait`. We - * consider implementations to be siblings if they implement the same trait for - * the same type. In that case `Self` is the same type in both implementations, - * and method calls to the implementations cannot be resolved unambiguously - * based only on the receiver type. - */ -pragma[inline] -private predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { - exists(Type rootType, TypeMention selfTy1, TypeMention selfTy2 | - impl1 != impl2 and - implSiblingCandidate(impl1, trait, rootType, selfTy1) and - implSiblingCandidate(impl2, trait, rootType, selfTy2) and - // In principle the second conjunct below should be superflous, but we still - // have ill-formed type mentions for types that we don't understand. For - // those checking both directions restricts further. Note also that we check - // syntactic equality, whereas equality up to renaming would be more - // correct. - typeMentionEqual(selfTy1, selfTy2) and - typeMentionEqual(selfTy2, selfTy1) - ) -} - -/** - * Holds if `impl` is an implementation of `trait` and if another implementation - * exists for the same type. - */ -pragma[nomagic] -private predicate implHasSibling(Impl impl, Trait trait) { implSiblings(trait, impl, _) } - -pragma[nomagic] -private predicate functionTypeAtPath(Function f, int pos, TypePath path, Type type) { - exists(TypeMention tm | type = tm.resolveTypeAt(path) | - tm = f.getParam(pos).getTypeRepr() - or - pos = -1 and - tm = f.getRetType().getTypeRepr() - ) -} - -/** - * Holds if type parameter `tp` of `trait` occurs in the function with the name - * `functionName` at the `pos`th parameter at `path`. - * - * The special position `-1` refers to the return type of the function, which - * is sometimes needed to disambiguate associated function calls like - * `Default::default()` (in this case, `tp` is the special `Self` type parameter). - */ -bindingset[trait] -pragma[inline_late] -private predicate traitTypeParameterOccurrence( - TraitItemNode trait, Function f, string functionName, int pos, TypePath path, TypeParameter tp -) { - f = trait.getAssocItem(functionName) and - functionTypeAtPath(f, pos, path, tp) and - tp = trait.(TraitTypeAbstraction).getATypeParameter() -} - -/** - * Holds if resolving the function `f` in `impl` with the name `functionName` - * requires inspecting the types of applied _arguments_ in order to determine - * whether it is the correct resolution. - */ -pragma[nomagic] -private predicate functionResolutionDependsOnArgument( - ImplItemNode impl, string functionName, Function f, int pos, TypePath path, Type type -) { - /* - * As seen in the example below, when an implementation has a sibling for a - * trait we find occurrences of a type parameter of the trait in a function - * signature in the trait. We then find the type given in the implementation - * at the same position, which is a position that might disambiguate the - * function from its siblings. - * - * ```rust - * trait MyTrait { - * fn method(&self, value: Foo) -> Self; - * // ^^^^^^^^^^^^^ `pos` = 0 - * // ^ `path` = "T" - * } - * impl MyAdd for i64 { - * fn method(&self, value: Foo) -> Self { ... } - * // ^^^ `type` = i64 - * } - * ``` - * - * Note that we only check the root type symbol at the position. If the type - * at that position is a type constructor (for instance `Vec<..>`) then - * inspecting the entire type tree could be necessary to disambiguate the - * method. In that case we will still resolve several methods. - */ - - exists(TraitItemNode trait | - implHasSibling(impl, trait) and - traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and - functionTypeAtPath(f, pos, path, type) and - f = impl.getAssocItem(functionName) and - pos >= 0 - ) -} - -/** - * Holds if the method call `mc` has no inherent target, i.e., it does not - * resolve to a method in an `impl` block for the type of the receiver. - */ -pragma[nomagic] -private predicate methodCallHasNoInherentTarget(MethodCall mc) { - exists(Type rootType, string name, int arity | - isMethodCall(mc, rootType, name, arity) and - forall(Impl impl | - methodCandidate(rootType, name, arity, impl) and - not impl.hasTrait() - | - IsInstantiationOf::isNotInstantiationOf(mc, - impl, _) - ) - ) -} - -pragma[nomagic] -private predicate methodCallHasImplCandidate(MethodCall mc, Impl impl) { - IsInstantiationOf::isInstantiationOf(mc, - impl, _) and - if impl.hasTrait() and not exists(mc.getTrait()) - then - // inherent methods take precedence over trait methods, so only allow - // trait methods when there are no matching inherent methods - methodCallHasNoInherentTarget(mc) - else any() -} - -private module BlanketImplementation { - private ImplItemNode getPotentialDuplicated( - string fileName, string traitName, int arity, string tpName - ) { - tpName = result.getBlanketImplementationTypeParam().getName() and - fileName = result.getLocation().getFile().getBaseName() and - traitName = result.resolveTraitTy().getName() and - arity = result.resolveTraitTy().(Trait).getNumberOfGenericParams() - } - - private predicate duplicatedImpl(Impl impl1, Impl impl2) { - exists(string fileName, string traitName, int arity, string tpName | - impl1 = getPotentialDuplicated(fileName, traitName, arity, tpName) and - impl2 = getPotentialDuplicated(fileName, traitName, arity, tpName) and - impl1.getLocation().getFile().getAbsolutePath() < - impl2.getLocation().getFile().getAbsolutePath() - ) - } - - /** - * Holds if `impl` is a canonical blanket implementation. - * - * Libraries can often occur several times in the database for different - * library versions. This causes the same blanket implementations to exist - * multiple times, and these add no useful information. - * - * We detect these duplicates based on some simple heuristics (same trait - * name, file name, etc.). For these duplicates we select the one with the - * greatest file name (which usually is also the one with the greatest library - * version in the path) as the "canonical" implementation. - */ - private predicate isCanonicalImpl(Impl impl) { - not duplicatedImpl(impl, _) and impl.(ImplItemNode).isBlanketImplementation() - } - - /** - * Holds if `impl` is a blanket implementation for a type parameter and - * `traitBound` is the first non-trivial trait bound of that type parameter. - */ - private predicate blanketImplementationTraitBound(ImplItemNode impl, Trait traitBound) { - traitBound = - min(Trait trait, int i | - trait = impl.getBlanketImplementationTypeParam().resolveBound(i) and - // Exclude traits that are known to not narrow things down very much. - not trait.getName().getText() = - [ - "Sized", "Clone", - // The auto traits - "Send", "Sync", "Unpin", "UnwindSafe", "RefUnwindSafe" - ] - | - trait order by i - ) - } - - /** - * Holds if `impl` is a relevant blanket implementation that requires the - * trait `traitBound` and provides `f`, a method with name `name` and arity - * `arity`. - */ - private predicate blanketImplementationMethod( - ImplItemNode impl, Trait traitBound, string name, int arity, Function f - ) { - isCanonicalImpl(impl) and - blanketImplementationTraitBound(impl, traitBound) and - f.hasSelfParam() and - arity = f.getParamList().getNumberOfParams() and - ( - f = impl.getAssocItem(name) - or - // If the trait has a method with a default implementation, then that - // target is interesting as well. - not exists(impl.getAssocItem(name)) and - f = impl.resolveTraitTy().getAssocItem(name) - ) and - // If the method is already available through one of the trait bounds on the - // type parameter (because they implement the trait targeted by the impl - // block) then ignore it. - not impl.getBlanketImplementationTypeParam().resolveABound().(TraitItemNode).getASuccessor(name) = - f - } - - pragma[nomagic] - predicate methodCallMatchesBlanketImpl( - MethodCall mc, Type t, ImplItemNode impl, Trait traitBound, Trait traitImpl, Function f - ) { - // Only check method calls where we have ruled out inherent method targets. - // Ideally we would also check if non-blanket method targets have been ruled - // out. - methodCallHasNoInherentTarget(mc) and - exists(string name, int arity | - isMethodCall(mc, t, name, arity) and - blanketImplementationMethod(impl, traitBound, name, arity, f) - ) and - traitImpl = impl.resolveTraitTy() - } - - private predicate relevantTraitVisible(Element mc, Trait trait) { - methodCallMatchesBlanketImpl(mc, _, _, _, trait, _) - } - - module SatisfiesConstraintInput implements SatisfiesConstraintInputSig { - pragma[nomagic] - predicate relevantConstraint(MethodCall mc, Type constraint) { - exists(Trait traitBound, Trait traitImpl | - methodCallMatchesBlanketImpl(mc, _, _, traitBound, traitImpl, _) and - TraitIsVisible::traitIsVisible(mc, traitImpl) and - traitBound = constraint.(TraitType).getTrait() - ) - } - - predicate useUniversalConditions() { none() } - } - - predicate hasBlanketImpl(MethodCall mc, Type t, Impl impl, Trait traitBound, Function f) { - SatisfiesConstraint::satisfiesConstraintType(mc, - TTrait(traitBound), _, _) and - methodCallMatchesBlanketImpl(mc, t, impl, traitBound, _, f) - } - - pragma[nomagic] - Function getMethodFromBlanketImpl(MethodCall mc) { hasBlanketImpl(mc, _, _, _, result) } -} - -/** Gets a method from an `impl` block that matches the method call `mc`. */ -pragma[nomagic] -private Function getMethodFromImpl(MethodCall mc) { - exists(Impl impl, string name | - methodCallHasImplCandidate(mc, impl) and - name = mc.getMethodName() and - result = getMethodSuccessor(impl, name) - | - not functionResolutionDependsOnArgument(impl, name, _, _, _, _) - or - exists(int pos, TypePath path, Type type | - functionResolutionDependsOnArgument(impl, name, result, pos, pragma[only_bind_into](path), - type) and - inferType(mc.getPositionalArgument(pos), pragma[only_bind_into](path)) = type - ) - ) -} - -bindingset[trait, name] -pragma[inline_late] -private Function getImplTraitMethod(ImplTraitReturnType trait, string name) { - result = getMethodSuccessor(trait.getImplTraitTypeRepr(), name) -} - -bindingset[traitObject, name] -pragma[inline_late] -private Function getDynTraitMethod(DynTraitType traitObject, string name) { - result = getMethodSuccessor(traitObject.getTrait(), name) -} - -pragma[nomagic] -private Function resolveMethodCallTarget(MethodCall mc) { - // The method comes from an `impl` block targeting the type of the receiver. - result = getMethodFromImpl(mc) - or - result = BlanketImplementation::getMethodFromBlanketImpl(mc) - or - // The type of the receiver is a type parameter and the method comes from a - // trait bound on the type parameter. - result = getTypeParameterMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) - or - // The type of the receiver is an `impl Trait` type. - result = getImplTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) - or - // The type of the receiver is a trait object `dyn Trait` type. - result = getDynTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) -} - -pragma[nomagic] -private predicate assocFuncResolutionDependsOnArgument(Function f, Impl impl, int pos) { - functionResolutionDependsOnArgument(impl, _, f, pos, _, _) and - not f.hasSelfParam() -} - -private class FunctionCallExpr extends CallImpl::CallExprCall { - ItemNode getResolvedFunction() { result = CallExprImpl::getResolvedFunction(this) } - - /** - * Holds if the target of this call is ambigous, and type information is required - * to disambiguate. - */ - predicate isAmbigous() { - this.hasTrait() - or - assocFuncResolutionDependsOnArgument(this.getResolvedFunction(), _, _) - } - - /** - * Gets a target candidate of this ambigous call, which belongs to `impl`. - * - * In order for the candidate to be a match, the argument type at `pos` must be - * checked against the type of the function at the same position. - * - * `resolved` is the corresponding function resolved through path resolution. - */ - pragma[nomagic] - Function getAnAmbigousCandidate(ImplItemNode impl, int pos, Function resolved) { - resolved = this.getResolvedFunction() and - ( - exists(TraitItemNode trait | - trait = this.getTrait() and - result.implements(resolved) and - result = impl.getAnAssocItem() - | - assocFuncResolutionDependsOnArgument(result, impl, pos) - or - exists(TypeParameter tp | traitTypeParameterOccurrence(trait, resolved, _, pos, _, tp) | - pos >= 0 - or - // We only check that the context of the call provides relevant type information - // when no argument can - not traitTypeParameterOccurrence(trait, resolved, _, any(int pos0 | pos0 >= 0), _, tp) - ) - ) - or - result = resolved and - assocFuncResolutionDependsOnArgument(result, impl, pos) - ) - } - - /** - * Same as `getAnAmbigousCandidate`, ranks the positions to be checked. - */ - Function getAnAmbigousCandidateRanked(ImplItemNode impl, int pos, Function f, int rnk) { - pos = rank[rnk + 1](int pos0 | result = this.getAnAmbigousCandidate(impl, pos0, f) | pos0) - } -} - -private newtype TAmbigousAssocFunctionCallExpr = - MkAmbigousAssocFunctionCallExpr(FunctionCallExpr call, Function resolved, int pos) { - exists(call.getAnAmbigousCandidate(_, pos, resolved)) - } - -private class AmbigousAssocFunctionCallExpr extends MkAmbigousAssocFunctionCallExpr { - FunctionCallExpr call; - Function resolved; - int pos; - - AmbigousAssocFunctionCallExpr() { this = MkAmbigousAssocFunctionCallExpr(call, resolved, pos) } - - pragma[nomagic] - Type getTypeAt(TypePath path) { - result = inferType(call.(CallExpr).getArg(pos), path) - or - pos = -1 and - result = inferType(call, path) - } - - string toString() { result = call.toString() } - - Location getLocation() { result = call.getLocation() } -} - -private module AmbigousAssocFuncIsInstantiationOfInput implements - IsInstantiationOfInputSig -{ - pragma[nomagic] - predicate potentialInstantiationOf( - AmbigousAssocFunctionCallExpr ce, TypeAbstraction impl, TypeMentionTypeTree constraint - ) { - exists(FunctionCallExpr call, Function resolved, Function cand, int pos | - ce = MkAmbigousAssocFunctionCallExpr(call, resolved, pos) and - cand = call.getAnAmbigousCandidate(impl, pos, resolved) - | - constraint = cand.getParam(pos).getTypeRepr() - or - pos = -1 and - constraint = cand.getRetType().getTypeRepr() - ) - } -} - -/** - * Gets the target of `call`, where resolution does not rely on type inference. - */ -pragma[nomagic] -private ItemNode resolveUnambigousFunctionCallTarget(FunctionCallExpr call) { - result = call.getResolvedFunction() and - not call.isAmbigous() -} - -pragma[nomagic] -private Function resolveAmbigousFunctionCallTargetFromIndex(FunctionCallExpr call, int index) { - exists(Impl impl, int pos, Function resolved | - IsInstantiationOf::isInstantiationOf(MkAmbigousAssocFunctionCallExpr(call, - resolved, pos), impl, _) and - result = call.getAnAmbigousCandidateRanked(impl, pos, resolved, index) - | - index = 0 - or - result = resolveAmbigousFunctionCallTargetFromIndex(call, index - 1) - ) -} - -/** - * Gets the target of `call`, where resolution relies on type inference. - */ -pragma[nomagic] -private Function resolveAmbigousFunctionCallTarget(FunctionCallExpr call) { - result = - resolveAmbigousFunctionCallTargetFromIndex(call, - max(int index | result = call.getAnAmbigousCandidateRanked(_, _, _, index))) -} - -pragma[inline] -private ItemNode resolveFunctionCallTarget(FunctionCallExpr call) { - result = resolveUnambigousFunctionCallTarget(call) - or - result = resolveAmbigousFunctionCallTarget(call) -} - cached private module Cached { private import codeql.rust.internal.CachedStages @@ -2484,33 +2975,21 @@ private module Cached { /** Holds if `receiver` is the receiver of a method call with an implicit dereference. */ cached predicate receiverHasImplicitDeref(AstNode receiver) { - exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | - apos.getArgumentPosition().isSelf() and - apos.isBorrowed(_) and - receiver = a.getNodeAt(apos) and - inferType(receiver) = TRefType() and - CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) != TRefType() - ) + any(MethodResolution::MethodCall mc).receiverHasImplicitDeref(receiver) } /** Holds if `receiver` is the receiver of a method call with an implicit borrow. */ cached predicate receiverHasImplicitBorrow(AstNode receiver) { - exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | - apos.getArgumentPosition().isSelf() and - apos.isBorrowed(_) and - receiver = a.getNodeAt(apos) and - CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) = TRefType() and - inferType(receiver) != TRefType() - ) + any(MethodResolution::MethodCall mc).receiverHasImplicitBorrow(receiver) } /** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */ cached Addressable resolveCallTarget(Call call) { - result = resolveMethodCallTarget(call) + result = call.(MethodResolution::MethodCall).resolveCallTarget(_) or - result = resolveFunctionCallTarget(call) + result = call.(NonMethodResolution::NonMethodCall).resolveCallTarget() } /** @@ -2518,9 +2997,9 @@ private module Cached { */ cached StructField resolveStructFieldExpr(FieldExpr fe) { - exists(string name, Type ty | ty = getFieldExprLookupType(fe, name) | - result = ty.(StructType).getStruct().getStructField(name) or - result = ty.(UnionType).getUnion().getStructField(name) + exists(string name, Type ty | ty = getFieldExprLookupType(fe, pragma[only_bind_into](name)) | + result = ty.(StructType).getStruct().getStructField(pragma[only_bind_into](name)) or + result = ty.(UnionType).getUnion().getStructField(pragma[only_bind_into](name)) ) } @@ -2530,7 +3009,11 @@ private module Cached { cached TupleField resolveTupleFieldExpr(FieldExpr fe) { exists(int i | - result = getTupleFieldExprLookupType(fe, i).(StructType).getStruct().getTupleField(i) + result = + getTupleFieldExprLookupType(fe, pragma[only_bind_into](i)) + .(StructType) + .getStruct() + .getTupleField(pragma[only_bind_into](i)) ) } @@ -2594,7 +3077,11 @@ private module Cached { or result = inferPathExprType(n, path) or - result = inferCallExprBaseType(n, path) + result = inferMethodCallType(n, path) + or + result = inferNonMethodCallType(n, path) + or + result = inferOperationType(n, path) or result = inferFieldExprType(n, path) or @@ -2628,7 +3115,7 @@ Type inferType(AstNode n) { result = inferType(n, TypePath::nil()) } /** Provides predicates for debugging the type inference implementation. */ private module Debug { - private Locatable getRelevantLocatable() { + Locatable getRelevantLocatable() { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and filepath.matches("%/sqlx.rs") and @@ -2641,7 +3128,7 @@ private module Debug { result = inferType(n, path) } - Function debugResolveCallTarget(Call c) { + Addressable debugResolveCallTarget(Call c) { c = getRelevantLocatable() and result = resolveCallTarget(c) } @@ -2653,14 +3140,19 @@ private module Debug { Input2::conditionSatisfiesConstraint(abs, condition, constraint) } - predicate debugInferShorthandSelfType(SelfParam self, TypePath path, Type t) { + predicate debugInferShorthandSelfType(ShorthandSelfParameterMention self, TypePath path, Type t) { self = getRelevantLocatable() and - t = inferShorthandSelfType(self, path) + t = self.resolveTypeAt(path) } - predicate debugInferCallExprBaseType(AstNode n, TypePath path, Type t) { + predicate debugInferMethodCallType(AstNode n, TypePath path, Type t) { n = getRelevantLocatable() and - t = inferCallExprBaseType(n, path) + t = inferMethodCallType(n, path) + } + + predicate debugInferNonMethodCallType(AstNode n, TypePath path, Type t) { + n = getRelevantLocatable() and + t = inferNonMethodCallType(n, path) } predicate debugTypeMention(TypeMention tm, TypePath path, Type type) { @@ -2679,9 +3171,14 @@ private module Debug { result = strictcount(Type t0 | t0 = inferType(n, path)) } + pragma[nomagic] + private predicate atLimit(AstNode n) { + exists(TypePath path0 | exists(inferType(n, path0)) and path0.length() >= getTypePathLimit()) + } + Type debugInferTypeForNodeAtLimit(AstNode n, TypePath path) { result = inferType(n, path) and - exists(TypePath path0 | exists(inferType(n, path0)) and path0.length() >= getTypePathLimit()) + atLimit(n) } predicate countTypesForNodeAtLimit(AstNode n, int c) { diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index ba7f4b4659d..0b669ad4015 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -12,6 +12,7 @@ abstract class TypeMention extends AstNode { abstract Type resolveTypeAt(TypePath path); /** Gets the type that this node resolves to, if any. */ + pragma[nomagic] final Type resolveType() { result = this.resolveTypeAt(TypePath::nil()) } } @@ -112,7 +113,8 @@ class NonAliasPathTypeMention extends PathTypeMention { NonAliasPathTypeMention() { resolved = [resolvePath(this), resolvePath(this).(Variant).getEnum().(TypeItemNode)] and - not exists(resolved.(TypeAlias).getTypeRepr()) + not exists(resolved.(TypeAlias).getTypeRepr()) and + not this = any(ImplItemNode i).getASelfPath() // handled by `ImplSelfMention` } TypeItemNode getResolved() { result = resolved } @@ -144,23 +146,6 @@ class NonAliasPathTypeMention extends PathTypeMention { private TypeMention getPositionalTypeArgument0(int i) { result = this.getSegment().getGenericArgList().getTypeArg(i) or - // `Self` paths inside `impl` blocks have implicit type arguments that are - // the type parameters of the `impl` block. For example, in - // - // ```rust - // impl Foo { - // fn m(self) -> Self { - // self - // } - // } - // ``` - // - // the `Self` return type is shorthand for `Foo`. - exists(ImplItemNode node | - this = node.getASelfPath() and - result = node.(ImplItemNode).getSelfPath().getSegment().getGenericArgList().getTypeArg(i) - ) - or // `Option::::Some` is valid in addition to `Option::Some::` resolvePath(this) instanceof Variant and result = this.getQualifier().getSegment().getGenericArgList().getTypeArg(i) @@ -259,6 +244,19 @@ class NonAliasPathTypeMention extends PathTypeMention { } } +pragma[nomagic] +private Type resolveImplSelfType(Impl i, TypePath path) { + result = i.getSelfTy().(TypeMention).resolveTypeAt(path) +} + +class ImplSelfMention extends PathTypeMention { + private ImplItemNode impl; + + ImplSelfMention() { this = impl.getASelfPath() } + + override Type resolveTypeAt(TypePath typePath) { result = resolveImplSelfType(impl, typePath) } +} + class PathTypeReprMention extends TypeMention, PathTypeRepr { private PathTypeMention path; @@ -329,6 +327,76 @@ class SelfTypeParameterMention extends TypeMention instanceof Name { } } +/** + * Gets the type at `path` of the type being implemented in `i`, when + * `i` is an `impl` block, or the synthetic `Self` type parameter when + * `i` is a trait. + */ +pragma[nomagic] +Type resolveImplOrTraitType(ImplOrTraitItemNode i, TypePath path) { + result = resolveImplSelfType(i, path) + or + result = TSelfTypeParameter(i) and path.isEmpty() +} + +pragma[nomagic] +private ImplOrTraitItemNode getSelfParamEnclosingImplOrTrait(SelfParam self) { + exists(Function f | + f = result.getAnAssocItem() and + self = f.getSelfParam() + ) +} + +/** + * An element used to represent the type of a `self` parameter that uses [shorthand + * syntax][1], which is sugar for an explicit annotation. + * + * [1]: https://doc.rust-lang.org/stable/reference/items/associated-items.html#r-associated.fn.method.self-pat-shorthands + */ +class ShorthandSelfParameterMention extends TypeMention instanceof SelfParam { + private ImplOrTraitItemNode encl; + + ShorthandSelfParameterMention() { + not super.hasTypeRepr() and + encl = getSelfParamEnclosingImplOrTrait(this) and + ( + encl instanceof Trait + or + // avoid generating a type mention if the type being implemented cannot be resolved + encl.(Impl).getSelfTy() instanceof TypeMention + ) + } + + pragma[nomagic] + private Type resolveSelfType(TypePath path) { result = resolveImplOrTraitType(encl, path) } + + pragma[nomagic] + private Type inferImplicitSelfType(TypePath path) { + if super.isRef() + then + // `fn f(&self, ...)` + path.isEmpty() and + result = TRefType() + or + exists(TypePath suffix | + result = this.resolveSelfType(suffix) and + path = TypePath::cons(TRefTypeParameter(), suffix) + ) + else + // `fn f(self, ...)` + result = this.resolveSelfType(path) + } + + override Type resolveTypeAt(TypePath typePath) { result = this.inferImplicitSelfType(typePath) } +} + +pragma[nomagic] +TypeMention getSelfParamTypeMention(SelfParam self) { + result = self.(ShorthandSelfParameterMention) + or + result = self.getTypeRepr() +} + class DynTraitTypeReprMention extends TypeMention instanceof DynTraitTypeRepr { private DynTraitType dynType; diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll new file mode 100644 index 00000000000..8f2483c3f68 --- /dev/null +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -0,0 +1,135 @@ +/** + * Provides logic for checking argument types against constraints of + * [blanket implementations][1]. + * + * [1]: https://doc.rust-lang.org/book/ch10-02-traits.html#using-trait-bounds-to-conditionally-implement-methods + */ + +private import rust +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.Type +private import codeql.rust.internal.TypeMention +private import codeql.rust.internal.TypeInference + +/** + * Holds if `traitBound` is the first non-trivial trait bound of `tp`. + */ +pragma[nomagic] +private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Trait traitBound) { + traitBound = + min(Trait trait, int i | + trait = tp.resolveBound(i) and + // Exclude traits that are known to not narrow things down very much. + not trait.getName().getText() = + [ + "Sized", "Clone", + // The auto traits + "Send", "Sync", "Unpin", "UnwindSafe", "RefUnwindSafe" + ] + | + trait order by i + ) +} + +/** + * Holds if `i` is a blanket-like implementation, meaning either an actual + * blanket implementation, or an implementation for a type like `&` where + * we want to check against the trait bounds of the blanket type parameter. + * + * `blanketSelfPath` points to the type parameter `blanketTypeParam` inside the + * self type of `i` (`blanketSelfPath` is empty for actual blanket implementations). + */ +pragma[nomagic] +predicate isBlanketLike(ImplItemNode i, TypePath blanketSelfPath, TypeParam blanketTypeParam) { + blanketTypeParam = i.getBlanketImplementationTypeParam() and + blanketSelfPath.isEmpty() + or + exists(TypeMention tm, Type root, TypeParameter tp | + tm = i.(Impl).getSelfTy() and + complexSelfRoot(root, tp) and + tm.resolveType() = root and + tm.resolveTypeAt(blanketSelfPath) = TTypeParamTypeParameter(blanketTypeParam) and + blanketSelfPath = TypePath::singleton(tp) and + hasFirstNonTrivialTraitBound(blanketTypeParam, _) + ) +} + +signature module SatisfiesBlanketConstraintInputSig { + /** + * Holds if a call with argument type `at` may potentially target a function belonging + * to blanket implementation `impl` with type parameter `blanketTypeParam`. + * + * `blanketPath` points to the type `blanketTypeParam` inside the type of the parameter + * at the matching position. + */ + predicate hasBlanketCandidate( + ArgumentType at, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam + ); +} + +module SatisfiesBlanketConstraint< + HasTypeTreeSig ArgumentType, SatisfiesBlanketConstraintInputSig Input> +{ + private predicate hasBlanketCandidate( + ArgumentType at, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam + ) { + Input::hasBlanketCandidate(at, impl, blanketPath, blanketTypeParam) and + exists(at.getTypeAt(blanketPath)) + } + + private newtype TArgumentTypeAndBlanketOffset = + MkArgumentTypeAndBlanketOffset(ArgumentType at, TypePath blanketPath) { + hasBlanketCandidate(at, _, blanketPath, _) + } + + private class ArgumentTypeAndBlanketOffset extends MkArgumentTypeAndBlanketOffset { + ArgumentType at; + TypePath blanketPath; + + ArgumentTypeAndBlanketOffset() { this = MkArgumentTypeAndBlanketOffset(at, blanketPath) } + + Location getLocation() { result = at.getLocation() } + + Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) } + + string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } + } + + private module SatisfiesBlanketConstraintInput implements + SatisfiesConstraintInputSig + { + pragma[nomagic] + additional predicate relevantConstraint( + ArgumentTypeAndBlanketOffset ato, ImplItemNode impl, Trait traitBound + ) { + exists(ArgumentType at, TypePath blanketPath, TypeParam blanketTypeParam | + ato = MkArgumentTypeAndBlanketOffset(at, blanketPath) and + hasBlanketCandidate(at, impl, blanketPath, blanketTypeParam) and + hasFirstNonTrivialTraitBound(blanketTypeParam, traitBound) + ) + } + + pragma[nomagic] + predicate relevantConstraint(ArgumentTypeAndBlanketOffset ato, Type constraint) { + relevantConstraint(ato, _, constraint.(TraitType).getTrait()) + } + + predicate useUniversalConditions() { none() } + } + + private module SatisfiesBlanketConstraint = + SatisfiesConstraint; + + /** + * Holds if the argument type `at` satisfies the first non-trivial blanket + * constraint of `impl`. + */ + pragma[nomagic] + predicate satisfiesBlanketConstraint(ArgumentType at, ImplItemNode impl) { + exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | + ato = MkArgumentTypeAndBlanketOffset(at, _) and + SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and + SatisfiesBlanketConstraint::satisfiesConstraintType(ato, TTrait(traitBound), _, _) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll new file mode 100644 index 00000000000..416f2a1b2d0 --- /dev/null +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -0,0 +1,127 @@ +/** + * Provides logic for identifying functions that are overloaded based on their + * argument types. While Rust does not allow for overloading inside a single + * `impl` block, it is still possible for a trait to have multiple implementations + * that differ only in the types of non-`self` arguments. + */ + +private import rust +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.Type +private import codeql.rust.internal.TypeMention +private import codeql.rust.internal.TypeInference +private import FunctionType + +pragma[nomagic] +private Type resolveNonTypeParameterTypeAt(TypeMention tm, TypePath path) { + result = tm.resolveTypeAt(path) and + not result instanceof TypeParameter +} + +bindingset[t1, t2] +private predicate typeMentionEqual(TypeMention t1, TypeMention t2) { + forex(TypePath path, Type type | resolveNonTypeParameterTypeAt(t1, path) = type | + resolveNonTypeParameterTypeAt(t2, path) = type + ) +} + +pragma[nomagic] +private predicate implSiblingCandidate( + Impl impl, TraitItemNode trait, Type rootType, TypeMention selfTy +) { + trait = impl.(ImplItemNode).resolveTraitTy() and + selfTy = impl.getSelfTy() and + rootType = selfTy.resolveType() +} + +/** + * Holds if `impl1` and `impl2` are a sibling implementations of `trait`. We + * consider implementations to be siblings if they implement the same trait for + * the same type. In that case `Self` is the same type in both implementations, + * and method calls to the implementations cannot be resolved unambiguously + * based only on the receiver type. + */ +pragma[inline] +private predicate implSiblings(TraitItemNode trait, Impl impl1, Impl impl2) { + exists(Type rootType, TypeMention selfTy1, TypeMention selfTy2 | + impl1 != impl2 and + implSiblingCandidate(impl1, trait, rootType, selfTy1) and + implSiblingCandidate(impl2, trait, rootType, selfTy2) and + // In principle the second conjunct below should be superflous, but we still + // have ill-formed type mentions for types that we don't understand. For + // those checking both directions restricts further. Note also that we check + // syntactic equality, whereas equality up to renaming would be more + // correct. + typeMentionEqual(selfTy1, selfTy2) and + typeMentionEqual(selfTy2, selfTy1) + ) +} + +/** + * Holds if `impl` is an implementation of `trait` and if another implementation + * exists for the same type. + */ +pragma[nomagic] +private predicate implHasSibling(Impl impl, Trait trait) { implSiblings(trait, impl, _) } + +/** + * Holds if type parameter `tp` of `trait` occurs in the function `f` with the name + * `functionName` at position `pos` and path `path`. + * + * Note that `pos` can also be the special `return` position, which is sometimes + * needed to disambiguate associated function calls like `Default::default()` + * (in this case, `tp` is the special `Self` type parameter). + */ +bindingset[trait] +pragma[inline_late] +predicate traitTypeParameterOccurrence( + TraitItemNode trait, Function f, string functionName, FunctionTypePosition pos, TypePath path, + TypeParameter tp +) { + f = trait.getASuccessor(functionName) and + assocFunctionTypeAtPath(f, trait, pos, path, tp) and + tp = trait.(TraitTypeAbstraction).getATypeParameter() +} + +/** + * Holds if resolving the function `f` in `impl` with the name `functionName` + * requires inspecting the type of applied _arguments_ at position `pos` in + * order to determine whether it is the correct resolution. + */ +pragma[nomagic] +predicate functionResolutionDependsOnArgument( + ImplItemNode impl, Function f, FunctionTypePosition pos, TypePath path, Type type +) { + /* + * As seen in the example below, when an implementation has a sibling for a + * trait we find occurrences of a type parameter of the trait in a function + * signature in the trait. We then find the type given in the implementation + * at the same position, which is a position that might disambiguate the + * function from its siblings. + * + * ```rust + * trait MyTrait { + * fn method(&self, value: Foo) -> Self; + * // ^^^^^^^^^^^^^ `pos` = 0 + * // ^ `path` = "T" + * } + * impl MyAdd for i64 { + * fn method(&self, value: Foo) -> Self { ... } + * // ^^^ `type` = i64 + * } + * ``` + * + * Note that we only check the root type symbol at the position. If the type + * at that position is a type constructor (for instance `Vec<..>`) then + * inspecting the entire type tree could be necessary to disambiguate the + * method. In that case we will still resolve several methods. + */ + + exists(TraitItemNode trait, string functionName | + implHasSibling(impl, trait) and + traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and + assocFunctionTypeAtPath(f, impl, pos, path, type) and + f = impl.getASuccessor(functionName) and + not pos.isReturn() + ) +} diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll new file mode 100644 index 00000000000..b203cafbd94 --- /dev/null +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -0,0 +1,434 @@ +private import rust +private import codeql.rust.internal.TypeInference +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.Type +private import codeql.rust.internal.TypeMention +private import codeql.rust.elements.Call + +private newtype TFunctionTypePosition = + TArgumentFunctionTypePosition(ArgumentPosition pos) or + TReturnFunctionTypePosition() + +/** + * A position of a type related to a function. + * + * Either `self`, `return`, or a positional parameter index. + */ +class FunctionTypePosition extends TFunctionTypePosition { + predicate isSelf() { this.asArgumentPosition().isSelf() } + + int asPositional() { result = this.asArgumentPosition().asPosition() } + + predicate isPositional() { exists(this.asPositional()) } + + ArgumentPosition asArgumentPosition() { this = TArgumentFunctionTypePosition(result) } + + predicate isReturn() { this = TReturnFunctionTypePosition() } + + /** Gets the corresponding position when `f` is invoked via a function call. */ + bindingset[f] + FunctionTypePosition getFunctionCallAdjusted(Function f) { + this.isReturn() and + result = this + or + if f.hasSelfParam() + then + this.isSelf() and result.asPositional() = 0 + or + result.asPositional() = this.asPositional() + 1 + else result = this + } + + TypeMention getTypeMention(Function f) { + this.isSelf() and + result = getSelfParamTypeMention(f.getSelfParam()) + or + result = f.getParam(this.asPositional()).getTypeRepr() + or + this.isReturn() and + result = f.getRetType().getTypeRepr() + } + + string toString() { + result = this.asArgumentPosition().toString() + or + this.isReturn() and + result = "(return)" + } +} + +/** + * A helper module for implementing `Matching(WithEnvironment)InputSig` with + * `DeclarationPosition = AccessPosition = FunctionTypePosition`. + */ +module FunctionTypePositionMatchingInput { + class DeclarationPosition = FunctionTypePosition; + + class AccessPosition = DeclarationPosition; + + predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + apos = dpos + } +} + +private newtype TAssocFunctionType = + MkAssocFunctionType(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + f = i.getAnAssocItem() and + exists(pos.getTypeMention(f)) + } or + MkInheritedAssocFunctionType( + Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + ImplOrTraitItemNode i + ) { + exists(AssocFunctionType inherited | + inherited.appliesTo(f, pos, parent) and + f = i.getASuccessor(_) + | + parent = i.(ImplItemNode).resolveTraitTy() and + parentMention = i.(ImplItemNode).getTraitPath() + or + parent = i.(TraitItemNode).resolveBound(parentMention) + ) + } + +/** + * The type of an associated function at a given position, when viewed as a member + * of a given trait or `impl` block. + * + * Example: + * + * ```rust + * trait T1 { + * fn m1(self); // self1 + * + * fn m2(self) { ... } // self2 + * } + * + * trait T2 : T1 { + * fn m3(self); // self3 + * } + * + * impl T2 for X { + * fn m1(self) { ... } // self4 + * + * fn m3(self) { ... } // self5 + * } + * ``` + * + * param | `impl` or trait | type + * ------- | --------------- | ---- + * `self1` | `trait T1` | `T1` + * `self1` | `trait T2` | `T2` + * `self2` | `trait T1` | `T1` + * `self2` | `trait T2` | `T2` + * `self2` | `impl T2 for X` | `X` + * `self3` | `trait T2` | `T2` + * `self4` | `impl T2 for X` | `X` + * `self5` | `impl T2 for X` | `X` + */ +class AssocFunctionType extends TAssocFunctionType { + private predicate isFunctionType(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + this = MkAssocFunctionType(f, pos, i) + } + + private predicate isInheritedFunctionType( + Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + ImplOrTraitItemNode i + ) { + this = MkInheritedAssocFunctionType(f, pos, parentMention, parent, i) + } + + /** + * Holds if this function type applies to the function `f` at position `pos`, + * when viewed as a member of the `impl` or trait item `i`. + */ + predicate appliesTo(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + this.isFunctionType(f, pos, i) + or + this.isInheritedFunctionType(f, pos, _, _, i) + } + + /** Gets the type at the given path. */ + pragma[nomagic] + Type getDeclaredTypeAt(TypePath path) { + exists(Function f, FunctionTypePosition pos | + this.isFunctionType(f, pos, _) and + result = pos.getTypeMention(f).resolveTypeAt(path) + ) + or + exists( + Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + AssocFunctionType parentType, ImplOrTraitItemNode i + | + this.isInheritedFunctionType(f, pos, parentMention, parent, i) and + parentType.appliesTo(f, pos, parent) + | + result = parentType.getDeclaredTypeAt(path) and + not result instanceof TypeParameter + or + exists(TypePath prefix, TypePath suffix | path = prefix.append(suffix) | + parentType.hasSelfTypeParameterAt(prefix) and + result = resolveImplOrTraitType(i, suffix) + or + exists(TypeParameter tp | + parentType.hasTypeParameterAt(prefix, tp) and + result = parentMention.resolveTypeAt(TypePath::singleton(tp).appendInverse(suffix)) + ) + ) + ) + } + + pragma[nomagic] + private predicate hasTypeParameterAt(TypePath path, TypeParameter tp) { + this.getDeclaredTypeAt(path) = tp + } + + pragma[nomagic] + private predicate hasSelfTypeParameterAt(TypePath path) { + this.hasTypeParameterAt(path, TSelfTypeParameter(_)) + } + + /** + * Gets the type at the given path. + * + * For functions belonging to a `trait`, we use the type of the trait itself instead + * of the implicit `Self` type parameter, as otherwise any type will match. + * + * Calls should use `substituteLookupTraits` to map receiver types to the relevant + * traits when matching. + */ + Type getTypeAt(TypePath path) { + exists(Type t | t = this.getDeclaredTypeAt(path) | + not t instanceof SelfTypeParameter and + result = t + or + result = TTrait(t.(SelfTypeParameter).getTrait()) + ) + } + + private AstNode getReportingNode() { + exists(Function f, FunctionTypePosition pos | this.appliesTo(f, pos, _) | + pos.isSelf() and + exists(SelfParam self | self = f.getSelfParam() | + result = self.getTypeRepr() + or + not self.hasTypeRepr() and + result = self + ) + or + result = f.getParam(pos.asPositional()).getTypeRepr() + or + pos.isReturn() and + result = f.getRetType().getTypeRepr() + ) + } + + string toString() { result = this.getReportingNode().toString() } + + Location getLocation() { result = this.getReportingNode().getLocation() } +} + +/** + * Holds if the type of the function `f` at position `pos` and path `path` inside + * `i` is `type`. + */ +pragma[nomagic] +predicate assocFunctionTypeAtPath( + Function f, ImplOrTraitItemNode i, FunctionTypePosition pos, TypePath path, Type type +) { + exists(AssocFunctionType aft | + aft.appliesTo(f, pos, i) and + type = aft.getDeclaredTypeAt(path) + ) +} + +private Trait getALookupTrait(Type t) { + result = t.(TypeParamTypeParameter).getTypeParam().(TypeParamItemNode).resolveABound() + or + result = t.(SelfTypeParameter).getTrait() + or + result = t.(ImplTraitType).getImplTraitTypeRepr().(ImplTraitTypeReprItemNode).resolveABound() + or + result = t.(DynTraitType).getTrait() +} + +/** + * Gets the type obtained by substituting in relevant traits in which to do function + * lookup, or `t` itself when no such trait exist. + */ +bindingset[t] +Type substituteLookupTraits(Type t) { + not exists(getALookupTrait(t)) and + result = t + or + result = TTrait(getALookupTrait(t)) +} + +/** + * A wrapper around `IsInstantiationOf` which ensures to substitute in lookup + * traits when checking whether argument types are instantiations of function + * types. + */ +module ArgIsInstantiationOf< + HasTypeTreeSig Arg, IsInstantiationOfInputSig Input> +{ + final private class ArgFinal = Arg; + + private class ArgSubst extends ArgFinal { + Type getTypeAt(TypePath path) { result = substituteLookupTraits(super.getTypeAt(path)) } + } + + private module IsInstantiationOfInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + predicate potentialInstantiationOf( + ArgSubst arg, TypeAbstraction abs, AssocFunctionType constraint + ) { + Input::potentialInstantiationOf(arg, abs, constraint) + } + + predicate relevantConstraint(AssocFunctionType constraint) { + Input::relevantConstraint(constraint) + } + } + + private module ArgSubstIsInstantiationOf = + IsInstantiationOf; + + predicate argIsInstantiationOf(Arg arg, ImplOrTraitItemNode i, AssocFunctionType constraint) { + ArgSubstIsInstantiationOf::isInstantiationOf(arg, i, constraint) + } + + predicate argIsNotInstantiationOf(Arg arg, ImplOrTraitItemNode i, AssocFunctionType constraint) { + ArgSubstIsInstantiationOf::isNotInstantiationOf(arg, i, constraint) + } +} + +/** + * Provides the input for `ArgsAreInstantiationsOf`. + */ +signature module ArgsAreInstantiationsOfInputSig { + /** + * Holds if types need to be matched against the type `t` at position `pos` of + * `f` inside `i`. + */ + predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t); + + /** A call whose argument types are to be checked. */ + class Call { + string toString(); + + Location getLocation(); + + Type getArgType(FunctionTypePosition pos, TypePath path); + + predicate hasTargetCand(ImplOrTraitItemNode i, Function f); + } +} + +/** + * Provides logic for checking that a set of arguments have types that are + * instantiations of the types at the corresponding positions in a function + * type. + */ +module ArgsAreInstantiationsOf { + pragma[nomagic] + private predicate toCheckRanked( + ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, int rnk + ) { + Input::toCheck(i, f, pos, _) and + pos = + rank[rnk + 1](FunctionTypePosition pos0, int j | + Input::toCheck(i, f, pos0, _) and + ( + j = pos0.asPositional() + or + pos0.isSelf() and j = -1 + or + pos0.isReturn() and j = -2 + ) + | + pos0 order by j + ) + } + + private newtype TCallAndPos = + MkCallAndPos(Input::Call call, FunctionTypePosition pos) { exists(call.getArgType(pos, _)) } + + /** A call tagged with a position. */ + private class CallAndPos extends MkCallAndPos { + Input::Call call; + FunctionTypePosition pos; + + CallAndPos() { this = MkCallAndPos(call, pos) } + + Input::Call getCall() { result = call } + + FunctionTypePosition getPos() { result = pos } + + Location getLocation() { result = call.getLocation() } + + Type getTypeAt(TypePath path) { result = call.getArgType(pos, path) } + + string toString() { result = call.toString() + " [arg " + pos + "]" } + } + + private module ArgIsInstantiationOfInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + private predicate potentialInstantiationOf0( + CallAndPos cp, Input::Call call, FunctionTypePosition pos, int rnk, Function f, + TypeAbstraction abs, AssocFunctionType constraint + ) { + cp = MkCallAndPos(call, pos) and + call.hasTargetCand(abs, f) and + toCheckRanked(abs, f, pos, rnk) and + Input::toCheck(abs, f, pos, constraint) + } + + pragma[nomagic] + predicate potentialInstantiationOf( + CallAndPos cp, TypeAbstraction abs, AssocFunctionType constraint + ) { + exists(Input::Call call, int rnk, Function f | + potentialInstantiationOf0(cp, call, _, rnk, f, abs, constraint) + | + rnk = 0 + or + argsAreInstantiationsOfFromIndex(call, abs, f, rnk - 1) + ) + } + + predicate relevantConstraint(AssocFunctionType constraint) { + Input::toCheck(_, _, _, constraint) + } + } + + private module ArgIsInstantiationOfFromIndex = + ArgIsInstantiationOf; + + pragma[nomagic] + private predicate argsAreInstantiationsOfFromIndex( + Input::Call call, ImplOrTraitItemNode i, Function f, int rnk + ) { + exists(FunctionTypePosition pos | + ArgIsInstantiationOfFromIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and + call.hasTargetCand(i, f) and + toCheckRanked(i, f, pos, rnk) + ) + } + + /** + * Holds if all arguments of `call` have types that are instantiations of the + * types of the corresponding parameters of `f` inside `i`. + */ + pragma[nomagic] + predicate argsAreInstantiationsOf(Input::Call call, ImplOrTraitItemNode i, Function f) { + exists(int rnk | + argsAreInstantiationsOfFromIndex(call, i, f, rnk) and + rnk = max(int r | toCheckRanked(i, f, _, r)) + ) + } +} diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 2cc557ff307..855912de1f5 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -511,33 +511,35 @@ module Make1 Input1> { /** Provides the input to `IsInstantiationOf`. */ signature module IsInstantiationOfInputSig { /** - * Holds if `abs` is a type abstraction, `tm` occurs in the scope of + * Holds if `abs` is a type abstraction, `constraint` occurs in the scope of * `abs`, and `app` is potentially an application/instantiation of `abs`. * * For example: * ```rust * impl Foo { * // ^^^ `abs` - * // ^^^^^^^^^ `tm` + * // ^^^^^^^^^ `constraint` * fn bar(self) { ... } * } * // ... * foo.bar(); * // ^^^ `app` * ``` - * Here `abs` introduces the type parameter `A` and `tm` occurs in the - * scope of `abs` (i.e., `A` is bound in `tm` by `abs`). On the last line, + * Here `abs` introduces the type parameter `A` and `constraint` occurs in the + * scope of `abs` (i.e., `A` is bound in `constraint` by `abs`). On the last line, * accessing the `bar` method of `foo` potentially instantiates the `impl` * block with a type argument for `A`. */ - predicate potentialInstantiationOf(App app, TypeAbstraction abs, Constraint tm); + predicate potentialInstantiationOf(App app, TypeAbstraction abs, Constraint constraint); /** * Holds if `constraint` might occur as the third argument of * `potentialInstantiationOf`. Defaults to simply projecting the third * argument of `potentialInstantiationOf`. */ - default predicate relevantTypeMention(Constraint tm) { potentialInstantiationOf(_, _, tm) } + default predicate relevantConstraint(Constraint constraint) { + potentialInstantiationOf(_, _, constraint) + } } /** @@ -550,38 +552,48 @@ module Make1 Input1> { { private import Input - /** Gets the `i`th path in `tm` per some arbitrary order. */ + /** Gets the `i`th path in `constraint` per some arbitrary order. */ pragma[nomagic] - private TypePath getNthPath(Constraint tm, int i) { + private TypePath getNthPath(Constraint constraint, int i) { result = - rank[i + 1](TypePath path | exists(tm.getTypeAt(path)) and relevantTypeMention(tm) | path) + rank[i + 1](TypePath path | + exists(constraint.getTypeAt(path)) and relevantConstraint(constraint) + | + path + ) + } + + pragma[nomagic] + private Type resolveTypeAt(App app, TypeAbstraction abs, Constraint constraint, TypePath path) { + potentialInstantiationOf(app, abs, constraint) and + result = constraint.getTypeAt(path) } pragma[nomagic] private Type resolveNthTypeAt( - App app, TypeAbstraction abs, Constraint tm, int i, TypePath path + App app, TypeAbstraction abs, Constraint constraint, int i, TypePath path ) { - potentialInstantiationOf(app, abs, tm) and - path = getNthPath(tm, i) and - result = tm.getTypeAt(path) + path = getNthPath(constraint, i) and + result = resolveTypeAt(app, abs, constraint, path) } pragma[nomagic] private predicate satisfiesConcreteTypesFromIndex( - App app, TypeAbstraction abs, Constraint tm, int i + App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(Type t, TypePath path | - t = resolveNthTypeAt(app, abs, tm, i, path) and + t = resolveNthTypeAt(app, abs, constraint, i, path) and if t = abs.getATypeParameter() then any() else app.getTypeAt(path) = t ) and // Recurse unless we are at the first path - if i = 0 then any() else satisfiesConcreteTypesFromIndex(app, abs, tm, i - 1) + if i = 0 then any() else satisfiesConcreteTypesFromIndex(app, abs, constraint, i - 1) } - /** Holds if all the concrete types in `tm` also occur in `app`. */ + /** Holds if all the concrete types in `constraint` also occur in `app`. */ pragma[nomagic] - private predicate satisfiesConcreteTypes(App app, TypeAbstraction abs, Constraint tm) { - satisfiesConcreteTypesFromIndex(app, abs, tm, max(int i | exists(getNthPath(tm, i)))) + private predicate satisfiesConcreteTypes(App app, TypeAbstraction abs, Constraint constraint) { + satisfiesConcreteTypesFromIndex(app, abs, constraint, + max(int i | exists(getNthPath(constraint, i)))) } private TypeParameter getNthTypeParameter(TypeAbstraction abs, int i) { @@ -594,70 +606,74 @@ module Make1 Input1> { } /** - * Gets the path to the `i`th occurrence of `tp` within `tm` per some + * Gets the path to the `i`th occurrence of `tp` within `constraint` per some * arbitrary order, if any. */ pragma[nomagic] - private TypePath getNthTypeParameterPath(Constraint tm, TypeParameter tp, int i) { + private TypePath getNthTypeParameterPath(Constraint constraint, TypeParameter tp, int i) { result = - rank[i + 1](TypePath path | tp = tm.getTypeAt(path) and relevantTypeMention(tm) | path) + rank[i + 1](TypePath path | + tp = constraint.getTypeAt(path) and relevantConstraint(constraint) + | + path + ) } pragma[nomagic] private predicate typeParametersEqualFromIndexBase( - App app, TypeAbstraction abs, Constraint tm, TypeParameter tp, TypePath path + App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, TypePath path ) { - path = getNthTypeParameterPath(tm, tp, 0) and - satisfiesConcreteTypes(app, abs, tm) and + path = getNthTypeParameterPath(constraint, tp, 0) and + satisfiesConcreteTypes(app, abs, constraint) and // no need to compute this predicate if there is only one path - exists(getNthTypeParameterPath(tm, tp, 1)) + exists(getNthTypeParameterPath(constraint, tp, 1)) } pragma[nomagic] private predicate typeParametersEqualFromIndex( - App app, TypeAbstraction abs, Constraint tm, TypeParameter tp, Type t, int i + App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, Type t, int i ) { exists(TypePath path | t = app.getTypeAt(path) and if i = 0 - then typeParametersEqualFromIndexBase(app, abs, tm, tp, path) + then typeParametersEqualFromIndexBase(app, abs, constraint, tp, path) else ( - typeParametersEqualFromIndex(app, abs, tm, tp, t, i - 1) and - path = getNthTypeParameterPath(tm, tp, i) + typeParametersEqualFromIndex(app, abs, constraint, tp, t, i - 1) and + path = getNthTypeParameterPath(constraint, tp, i) ) ) } private predicate typeParametersEqual( - App app, TypeAbstraction abs, Constraint tm, TypeParameter tp + App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp ) { - satisfiesConcreteTypes(app, abs, tm) and + satisfiesConcreteTypes(app, abs, constraint) and tp = getNthTypeParameter(abs, _) and ( - not exists(getNthTypeParameterPath(tm, tp, _)) + not exists(getNthTypeParameterPath(constraint, tp, _)) or - exists(int n | n = max(int i | exists(getNthTypeParameterPath(tm, tp, i))) | + exists(int n | n = max(int i | exists(getNthTypeParameterPath(constraint, tp, i))) | // If the largest index is 0, then there are no equalities to check as // the type parameter only occurs once. - if n = 0 then any() else typeParametersEqualFromIndex(app, abs, tm, tp, _, n) + if n = 0 then any() else typeParametersEqualFromIndex(app, abs, constraint, tp, _, n) ) ) } private predicate typeParametersHaveEqualInstantiationFromIndex( - App app, TypeAbstraction abs, Constraint tm, int i + App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(TypeParameter tp | tp = getNthTypeParameter(abs, i) | - typeParametersEqual(app, abs, tm, tp) and + typeParametersEqual(app, abs, constraint, tp) and if i = 0 then any() - else typeParametersHaveEqualInstantiationFromIndex(app, abs, tm, i - 1) + else typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, i - 1) ) } /** - * Holds if `app` is a possible instantiation of `tm`. That is, by making - * appropriate substitutions for the free type parameters in `tm` given by + * Holds if `app` is a possible instantiation of `constraint`. That is, by making + * appropriate substitutions for the free type parameters in `constraint` given by * `abs`, it is possible to obtain `app`. * * For instance, if `A` and `B` are free type parameters we have: @@ -668,10 +684,10 @@ module Make1 Input1> { * - `Pair` is _not_ an instantiation of `Pair` */ pragma[nomagic] - predicate isInstantiationOf(App app, TypeAbstraction abs, Constraint tm) { + predicate isInstantiationOf(App app, TypeAbstraction abs, Constraint constraint) { // We only need to check equality if the concrete types are satisfied. - satisfiesConcreteTypes(app, abs, tm) and - // Check if all the places where the same type parameter occurs in `tm` + satisfiesConcreteTypes(app, abs, constraint) and + // Check if all the places where the same type parameter occurs in `constraint` // are equal in `app`. // // TODO: As of now this only checks equality at the root of the types @@ -681,30 +697,22 @@ module Make1 Input1> { not exists(getNthTypeParameter(abs, _)) or exists(int n | n = max(int i | exists(getNthTypeParameter(abs, i))) | - typeParametersHaveEqualInstantiationFromIndex(app, abs, tm, n) + typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, n) ) ) } /** - * Holds if `app` is _not_ a possible instantiation of `tm`. + * Holds if `app` is _not_ a possible instantiation of `constraint`. */ pragma[nomagic] - predicate isNotInstantiationOf(App app, TypeAbstraction abs, Constraint tm) { - // `app` and `tm` differ on a concrete type + predicate isNotInstantiationOf(App app, TypeAbstraction abs, Constraint constraint) { + // `app` and `constraint` differ on a concrete type exists(Type t, TypePath path | - t = resolveNthTypeAt(app, abs, tm, _, path) and + t = resolveTypeAt(app, abs, constraint, path) and not t = abs.getATypeParameter() and - not path.isEmpty() and app.getTypeAt(path) != t ) - or - // `app` uses inconsistent type parameter instantiations - exists(TypeParameter tp | - potentialInstantiationOf(app, abs, tm) and - app.getTypeAt(getNthTypeParameterPath(tm, tp, _)) != - app.getTypeAt(getNthTypeParameterPath(tm, tp, _)) - ) } } @@ -956,7 +964,7 @@ module Make1 Input1> { ) } - predicate relevantTypeMention(TypeMentionTypeTree constraint) { + predicate relevantConstraint(TypeMentionTypeTree constraint) { rootTypesSatisfaction(_, _, _, constraint, _) } } @@ -1110,7 +1118,6 @@ module Make1 Input1> { * For example, if this access is the method call `M(42)`, then the inferred * type at argument position `0` is `int`. */ - bindingset[e] Type getInferredType(AccessEnvironment e, AccessPosition apos, TypePath path); /** Gets the declaration that this access targets in environment `e`. */ @@ -1121,29 +1128,6 @@ module Make1 Input1> { bindingset[apos] bindingset[dpos] predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos); - - /** - * Holds if matching an inferred type `t` at `path` inside an access at `apos` - * against the declaration `target` means that the type should be adjusted to - * `tAdj` at `pathAdj`. - * - * For example, in - * - * ```csharp - * void M(int? i) {} - * M(42); - * ``` - * - * the inferred type of `42` is `int`, but it should be adjusted to `int?` - * when matching against `M`. - */ - bindingset[apos, target, path, t] - default predicate adjustAccessType( - AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj - ) { - pathAdj = path and - tAdj = t - } } /** @@ -1155,22 +1139,6 @@ module Make1 Input1> { module MatchingWithEnvironment { private import Input - /** - * Holds if `a` targets `target` in environment `e` and the type for `apos` at `path` - * in `a` is `t` after adjustment by `target`. - */ - pragma[nomagic] - private predicate adjustedAccessType( - Access a, AccessEnvironment e, AccessPosition apos, Declaration target, TypePath path, - Type t - ) { - target = a.getTarget(e) and - exists(TypePath path0, Type t0 | - t0 = a.getInferredType(e, apos, path0) and - adjustAccessType(apos, target, path0, t0, path, t) - ) - } - /** * Gets the type of the type argument at `path` in `a` that corresponds to * the type parameter `tp` in `target`, if any. @@ -1189,6 +1157,16 @@ module Make1 Input1> { ) } + pragma[nomagic] + private predicate directTypeMatch0( + Access a, AccessEnvironment e, Declaration target, DeclarationPosition dpos, + TypePath pathToTypeParam, TypeParameter tp + ) { + not exists(getTypeArgument(a, target, tp, _)) and + tp = target.getDeclaredType(dpos, pathToTypeParam) and + target = a.getTarget(e) + } + /** * Holds if the type `t` at `path` of `a` in environment `e` matches the type * parameter `tp` of `target`. @@ -1197,11 +1175,10 @@ module Make1 Input1> { private predicate directTypeMatch( Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { - not exists(getTypeArgument(a, target, tp, _)) and exists(AccessPosition apos, DeclarationPosition dpos, TypePath pathToTypeParam | - tp = target.getDeclaredType(dpos, pathToTypeParam) and + directTypeMatch0(a, e, target, dpos, pathToTypeParam, tp) and accessDeclarationPositionMatch(apos, dpos) and - adjustedAccessType(a, e, apos, target, pathToTypeParam.appendInverse(path), t) + t = a.getInferredType(e, apos, pathToTypeParam.appendInverse(path)) ) } @@ -1214,7 +1191,7 @@ module Make1 Input1> { Access a, AccessEnvironment e, AccessPosition apos, Type base ) { exists(Declaration target, DeclarationPosition dpos | - adjustedAccessType(a, e, apos, target, _, _) and + target = a.getTarget(e) and accessDeclarationPositionMatch(apos, dpos) and declarationBaseType(target, dpos, base, _, _) ) @@ -1291,10 +1268,8 @@ module Make1 Input1> { } private newtype TRelevantAccess = - MkRelevantAccess( - Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath path - ) { - relevantAccessConstraint(a, e, target, apos, path, _) + MkRelevantAccess(Access a, AccessEnvironment e, AccessPosition apos, TypePath path) { + relevantAccessConstraint(a, e, _, apos, path, _) } /** @@ -1304,18 +1279,19 @@ module Make1 Input1> { private class RelevantAccess extends MkRelevantAccess { Access a; AccessEnvironment e; - Declaration target; AccessPosition apos; TypePath path; - RelevantAccess() { this = MkRelevantAccess(a, e, target, apos, path) } + RelevantAccess() { this = MkRelevantAccess(a, e, apos, path) } Type getTypeAt(TypePath suffix) { - adjustedAccessType(a, e, apos, target, path.appendInverse(suffix), result) + result = a.getInferredType(e, apos, path.appendInverse(suffix)) } - /** Holds if this relevant access should satisfy `constraint`. */ - Type getConstraint() { relevantAccessConstraint(a, e, target, apos, path, result) } + /** Gets the constraint that this relevant access should satisfy. */ + Type getConstraint(Declaration target) { + relevantAccessConstraint(a, e, target, apos, path, result) + } string toString() { result = a.toString() + ", " + apos.toString() + ", " + path.toString() @@ -1328,7 +1304,7 @@ module Make1 Input1> { SatisfiesConstraintInputSig { predicate relevantConstraint(RelevantAccess at, Type constraint) { - constraint = at.getConstraint() + constraint = at.getConstraint(_) } } @@ -1336,8 +1312,12 @@ module Make1 Input1> { Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, Type constraint, TypePath path, Type t ) { - SatisfiesConstraint::satisfiesConstraintType(MkRelevantAccess(a, - e, target, apos, prefix), constraint, path, t) + exists(RelevantAccess ra | + ra = MkRelevantAccess(a, e, apos, prefix) and + SatisfiesConstraint::satisfiesConstraintType(ra, + constraint, path, t) and + constraint = ra.getConstraint(target) + ) } } @@ -1628,29 +1608,6 @@ module Make1 Input1> { bindingset[apos] bindingset[dpos] predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos); - - /** - * Holds if matching an inferred type `t` at `path` inside an access at `apos` - * against the declaration `target` means that the type should be adjusted to - * `tAdj` at `pathAdj`. - * - * For example, in - * - * ```csharp - * void M(int? i) {} - * M(42); - * ``` - * - * the inferred type of `42` is `int`, but it should be adjusted to `int?` - * when matching against `M`. - */ - bindingset[apos, target, path, t] - default predicate adjustAccessType( - AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj - ) { - pathAdj = path and - tAdj = t - } } /** @@ -1664,8 +1621,6 @@ module Make1 Input1> { private import codeql.util.Unit import Input - predicate adjustAccessType = Input::adjustAccessType/6; - class AccessEnvironment = Unit; final private class AccessFinal = Input::Access; From 2f2c6866c49aa07743a4c008097f311fc04ab7f8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 23 Sep 2025 09:40:34 +0200 Subject: [PATCH 233/965] Rust: Use `doublyBoundedFastTC` in `TraitIsVisible` --- .../codeql/rust/internal/PathResolution.qll | 54 ++++++++++++++----- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 9694aa47bcb..fc49b7ca5e8 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1645,25 +1645,55 @@ signature predicate relevantTraitVisibleSig(Element element, Trait trait); * at a given element. */ module TraitIsVisible { - /** Holds if the trait might be looked up in `encl`. */ - private predicate traitLookup(ItemNode encl, Element element, Trait trait) { - // lookup in immediately enclosing item - relevantTraitVisible(element, trait) and - encl.getADescendant() = element + private newtype TNode = + TTrait(Trait t) { relevantTraitVisible(_, t) } or + TItemNode(ItemNode i) or + TElement(Element e) { relevantTraitVisible(e, _) } + + private predicate isTrait(TNode n) { n instanceof TTrait } + + private predicate step(TNode n1, TNode n2) { + exists(Trait t1, ItemNode i2 | + n1 = TTrait(t1) and + n2 = TItemNode(i2) and + t1 = i2.getASuccessor(_, _, _) + ) or - // lookup in an outer scope, but only if the trait is not declared in inner scope - exists(ItemNode mid | - traitLookup(mid, element, trait) and - not trait = mid.getASuccessor(_, _, _) and - encl = getOuterScope(mid) + exists(ItemNode i1, ItemNode i2 | + n1 = TItemNode(i1) and + n2 = TItemNode(i2) and + i1 = getOuterScope(i2) + ) + or + exists(ItemNode i1, Element e2 | + n1 = TItemNode(i1) and + n2 = TElement(e2) and + i1.getADescendant() = e2 + ) + } + + private predicate isElement(TNode n) { n instanceof TElement } + + private predicate traitIsVisibleTC(TNode trait, TNode element) = + doublyBoundedFastTC(step/2, isTrait/1, isElement/1)(trait, element) + + pragma[nomagic] + private predicate relevantTraitVisibleLift(TNode trait, TElement element) { + exists(Trait t, Element e | + trait = TTrait(t) and + element = TElement(e) and + relevantTraitVisible(e, t) ) } /** Holds if the trait `trait` is visible at `element`. */ pragma[nomagic] predicate traitIsVisible(Element element, Trait trait) { - exists(ItemNode encl | - traitLookup(encl, element, trait) and trait = encl.getASuccessor(_, _, _) + exists(TNode t, TNode e | + traitIsVisibleTC(t, e) and + relevantTraitVisibleLift(t, e) and + t = TTrait(trait) and + e = TElement(element) ) } } From ee0467d74c10f174d63a1c52b69f3b6d3e73be7d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 22 Sep 2025 20:13:30 +0200 Subject: [PATCH 234/965] Rust: Update expected output --- .../PathResolutionConsistency.expected | 2 - .../dataflow/global/viableCallable.expected | 2 - .../PathResolutionConsistency.expected | 2 - .../dataflow/local/DataFlowStep.expected | 18 +- .../PathResolutionConsistency.expected | 27 +-- .../dataflow/sources/InlineFlow.expected | 204 ++++++++---------- .../library-tests/dataflow/sources/test.rs | 4 +- .../dataflow/sources/test_futures_io.rs | 26 +-- .../PathResolutionConsistency.expected | 1 - .../strings/inline-taint-flow.expected | 21 +- .../PathResolutionConsistency.expected | 9 - .../PathResolutionConsistency.expected | 4 + .../PathResolutionConsistency.expected | 29 --- .../PathResolutionConsistency.expected | 4 +- .../type-inference/blanket_impl.rs | 10 +- .../type-inference/dereference.rs | 8 +- .../type-inference/invalid/main.rs | 2 +- .../test/library-tests/type-inference/main.rs | 10 +- .../type-inference/type-inference.expected | 59 ++--- .../PathResolutionConsistency.expected | 72 ------- .../security/CWE-089/SqlInjection.expected | 130 ----------- .../PathResolutionConsistency.expected | 44 ---- .../CWE-312/CleartextLogging.expected | 50 ++--- .../CWE-312/CleartextStorageDatabase.expected | 21 -- .../PathResolutionConsistency.expected | 3 - 25 files changed, 201 insertions(+), 561 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 85ca3c35e7c..00000000000 --- a/rust/ql/test/library-tests/dataflow/global/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| main.rs:272:14:272:29 | ...::deref(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 11f670aabff..e26d70d80d6 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -59,8 +59,6 @@ | main.rs:212:13:212:34 | ...::new(...) | main.rs:205:5:208:5 | fn new | | main.rs:212:24:212:33 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:214:5:214:11 | sink(...) | main.rs:5:1:7:1 | fn sink | -| main.rs:228:10:228:14 | * ... | main.rs:235:5:237:5 | fn deref | -| main.rs:236:11:236:15 | * ... | main.rs:235:5:237:5 | fn deref | | main.rs:242:28:242:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:244:13:244:17 | ... + ... | main.rs:220:5:223:5 | fn add | | main.rs:245:5:245:17 | sink(...) | main.rs:5:1:7:1 | fn sink | diff --git a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index cbf6523d21c..00000000000 --- a/rust/ql/test/library-tests/dataflow/local/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| main.rs:483:18:483:24 | n.len() | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index b2fc845081c..a7df3fdf7b3 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1034,24 +1034,29 @@ readStep | main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name | | main.rs:483:18:483:18 | [post] receiver for n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n | | main.rs:506:13:506:13 | [post] receiver for a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | -| main.rs:507:13:507:13 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | [post] b | -| main.rs:508:18:508:18 | [post] receiver for b | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | [post] b | | main.rs:519:10:519:11 | vs | file://:0:0:0:0 | element | main.rs:519:10:519:14 | vs[0] | | main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... | +| main.rs:520:11:520:35 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() | | main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... | +| main.rs:521:11:521:35 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() | | main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v | | main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v | | main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... | | main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v | | main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... | +| main.rs:535:29:535:29 | [post] receiver for x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x | | main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... | +| main.rs:536:34:536:34 | [post] receiver for x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x | | main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... | | main.rs:538:14:538:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:538:9:538:9 | v | | main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | element | main.rs:544:10:544:18 | vs_mut[0] | | main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... | +| main.rs:545:11:545:39 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() | | main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... | +| main.rs:546:11:546:39 | [post] receiver for ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() | | main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v | | main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... | +| main.rs:562:11:562:15 | [post] receiver for c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref | | main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... | storeStep | main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | receiver for i | @@ -1138,16 +1143,21 @@ storeStep | main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | receiver for default_name | | main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | receiver for n | | main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | receiver for a | -| main.rs:507:13:507:13 | b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | receiver for b | -| main.rs:508:18:508:18 | b | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | receiver for b | | main.rs:517:15:517:24 | source(...) | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:27:517:27 | 2 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | +| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | receiver for ... .unwrap() | +| main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | receiver for ... .unwrap() | +| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | receiver for x | +| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | receiver for x | | main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | +| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | receiver for ... .unwrap() | +| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | receiver for ... .unwrap() | | main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c | | main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b | +| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | receiver for c_ref | | main.rs:583:27:583:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:583:22:583:28 | Some(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 16eea4a6fe4..1f20950b11a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -2,30 +2,13 @@ multipleCallTargets | test.rs:113:62:113:77 | ...::from(...) | | test.rs:120:58:120:73 | ...::from(...) | | test.rs:229:22:229:72 | ... .read_to_string(...) | -| test.rs:664:22:664:43 | file.read(...) | -| test.rs:673:22:673:41 | f1.read(...) | | test.rs:1096:50:1096:66 | ...::from(...) | | test.rs:1096:50:1096:66 | ...::from(...) | -| test_futures_io.rs:45:27:45:84 | ...::read(...) | -| test_futures_io.rs:49:27:49:51 | reader.read(...) | -| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() | -| test_futures_io.rs:103:27:103:85 | ...::read(...) | -| test_futures_io.rs:107:27:107:52 | reader2.read(...) | -| test_futures_io.rs:125:22:125:39 | reader2.fill_buf() | -| test_futures_io.rs:132:27:132:62 | reader2.read_until(...) | -| test_futures_io.rs:139:27:139:54 | reader2.read_line(...) | -| test_futures_io.rs:146:27:146:58 | reader2.read_to_end(...) | -| test_futures_io.rs:152:32:152:46 | reader2.lines() | -| test_futures_io.rs:153:14:153:32 | lines_stream.next() | -| test_futures_io.rs:154:32:154:50 | lines_stream.next() | -| web_frameworks.rs:13:14:13:23 | a.as_str() | -| web_frameworks.rs:13:14:13:23 | a.as_str() | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | -| web_frameworks.rs:101:14:101:23 | a.as_str() | -| web_frameworks.rs:102:14:102:25 | a.as_bytes() | -| web_frameworks.rs:158:14:158:23 | a.as_str() | -| web_frameworks.rs:159:14:159:25 | a.as_bytes() | +| test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | +| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) | +| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) | +| test_futures_io.rs:93:26:93:63 | pinned.poll_read(...) | +| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) | multiplePathResolutions | test.rs:897:28:897:65 | Result::<...> | | test.rs:984:40:984:49 | Result::<...> | diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected index d814183e9b9..5371bd834f1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected @@ -109,35 +109,34 @@ models | 108 | Summary: ::new; Argument[0]; ReturnValue; value | | 109 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 110 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 111 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 112 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 113 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 114 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 115 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 116 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 117 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 118 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 119 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 120 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 121 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 122 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 123 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 124 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 125 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 126 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 127 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 128 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 129 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 130 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 131 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 132 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 133 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 134 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 135 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 136 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 137 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 138 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 139 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 111 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 112 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 113 | Summary: ::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 114 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 115 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 116 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 117 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 118 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 119 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 120 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 121 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 122 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 123 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 124 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 125 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 126 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 127 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 128 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 129 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 130 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 131 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 132 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 133 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 134 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 135 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 136 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 137 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 138 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:38 | | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:39 | @@ -176,7 +175,7 @@ edges | test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:33 | | test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:55 | | test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:106 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:113 | +| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:111 | | test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:110 | | test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | | test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | @@ -200,32 +199,32 @@ edges | test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | | test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | | test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:120 | +| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:119 | | test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | | test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | | test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | | test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | | test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:120 | +| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:119 | | test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:110 | | test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | | test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | | test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | | test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:121 | +| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:120 | | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:110 | | test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | | test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | | test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | | test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:119 | +| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:118 | | test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:110 | | test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | | test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | | test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | | test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:118 | +| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:117 | | test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | | test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | | test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | @@ -233,12 +232,12 @@ edges | test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | | test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:116 | +| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:115 | | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | | test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | | test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:117 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:117 | +| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:116 | +| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:116 | | test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | | test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | @@ -265,7 +264,7 @@ edges | test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | | test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | | test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:127 | +| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:126 | | test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | @@ -277,20 +276,20 @@ edges | test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | | test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | | test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:129 | +| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:128 | | test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:81 | | test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | | test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | | test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | | test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:130 | +| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:129 | | test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:81 | | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | | test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | | test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | | test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:128 | +| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:127 | | test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:79 | | test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | @@ -302,29 +301,29 @@ edges | test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:70 | | test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | | test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:126 | +| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:125 | | test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | | test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | | test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:125 | +| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:124 | | test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | | test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:126 | +| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:125 | | test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | | test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | | test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | | test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:72 | | test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | | test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:126 | +| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:125 | | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | | test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | | test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | | test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:73 | | test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | | test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:126 | +| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:125 | | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | | test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | @@ -334,7 +333,7 @@ edges | test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:74 | | test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | | test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:126 | +| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:125 | | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:106 | | test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:110 | | test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | @@ -343,7 +342,7 @@ edges | test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:71 | | test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | | test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:126 | +| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:125 | | test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | | test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:88 | | test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | @@ -400,40 +399,40 @@ edges | test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:83 | | test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | | test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:134 | +| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:133 | | test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | | test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | | test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | | test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:133 | +| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:132 | | test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | | test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:134 | +| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:133 | | test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | | test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | | test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | | test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:85 | | test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | | test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:134 | +| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:133 | | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | | test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | | test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | | test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:86 | | test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | | test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:134 | +| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:133 | | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | | test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | | test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:136 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:136 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:135 | +| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:135 | | test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:87 | | test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | | test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:134 | +| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:133 | | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | | test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | | test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:106 | @@ -445,9 +444,9 @@ edges | test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:84 | | test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | | test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:134 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:135 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:135 | +| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:133 | +| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:134 | +| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:134 | | test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | | test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | @@ -484,7 +483,7 @@ edges | test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:21 MaD:21 | | test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:52 | | test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:52 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:132 | +| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:131 | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | | test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:52 | | test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | @@ -523,11 +522,11 @@ edges | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | | test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | | test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:122 | +| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:121 | | test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:123 | +| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:122 | | test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:80 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:124 | +| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:123 | | test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:81 | | test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:79 | | test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:75 | @@ -550,7 +549,7 @@ edges | test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | | test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | | test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:122 | +| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:121 | | test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:110 | | test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | @@ -559,7 +558,7 @@ edges | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | | test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | | test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:122 | +| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:121 | | test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:110 | | test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | @@ -568,7 +567,7 @@ edges | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | | test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | | test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:122 | +| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:121 | | test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | | test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:110 | | test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | @@ -655,33 +654,27 @@ edges | test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | | test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:11 | | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | | test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | | test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | | test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | | test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | | test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | | test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:65 | | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | | test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | | test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | | test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:12 | | test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | | test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | | test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | | test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:131 | +| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:130 | | test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:24 | | test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | | test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | @@ -696,14 +689,14 @@ edges | test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:72 | | test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:82 | | test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:126 | +| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:125 | | test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | | test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | | test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:137 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:136 | | test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:88 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:138 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:139 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:137 | +| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:138 | | test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:30 | | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | | test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | @@ -811,18 +804,18 @@ edges | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:65 | | test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | | test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | | test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:114 | +| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:112 | | test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | | test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | +| test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:35:52:35:62 | [post] &mut buffer [&ref] | provenance | MaD:113 | | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | +| test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:35:52:35:62 | [post] &mut buffer [&ref] | provenance | MaD:113 | | test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:107 | @@ -830,13 +823,16 @@ edges | test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | | test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | +| test_futures_io.rs:35:52:35:62 | [post] &mut buffer [&ref] | test_futures_io.rs:35:57:35:62 | [post] buffer | provenance | | +| test_futures_io.rs:35:57:35:62 | [post] buffer | test_futures_io.rs:37:19:37:24 | buffer | provenance | | +| test_futures_io.rs:35:57:35:62 | [post] buffer | test_futures_io.rs:38:19:38:29 | buffer[...] | provenance | | +| test_futures_io.rs:37:19:37:24 | buffer | test_futures_io.rs:37:18:37:24 | &buffer | provenance | | +| test_futures_io.rs:38:19:38:29 | buffer[...] | test_futures_io.rs:38:18:38:29 | &... | provenance | | | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:64 | | test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | | test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | | test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | | test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | | test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | @@ -848,8 +844,6 @@ edges | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:65 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | @@ -864,7 +858,7 @@ edges | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:66 | | test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:67 | | test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:115 | +| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:114 | | test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | | test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | @@ -910,13 +904,11 @@ edges | test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | | test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:64 | | test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | | test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | | test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | | test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | | test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | @@ -959,24 +951,16 @@ edges | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | | web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | | web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | | web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:101 | @@ -986,38 +970,28 @@ edges | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | provenance | MaD:100 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:14 | a [tuple.3] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:14 | a [tuple.3] | provenance | | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:103:14:103:14 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | @@ -1025,25 +999,15 @@ edges | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | web_frameworks.rs:100:13:100:13 | a [tuple.3] | provenance | | | web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | | web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:97 | | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:98 | | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | @@ -1825,6 +1789,12 @@ nodes | test_futures_io.rs:33:14:33:20 | &pinned | semmle.label | &pinned | | test_futures_io.rs:33:15:33:20 | pinned | semmle.label | pinned | | test_futures_io.rs:33:15:33:20 | pinned [&ref] | semmle.label | pinned [&ref] | +| test_futures_io.rs:35:52:35:62 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test_futures_io.rs:35:57:35:62 | [post] buffer | semmle.label | [post] buffer | +| test_futures_io.rs:37:18:37:24 | &buffer | semmle.label | &buffer | +| test_futures_io.rs:37:19:37:24 | buffer | semmle.label | buffer | +| test_futures_io.rs:38:18:38:29 | &... | semmle.label | &... | +| test_futures_io.rs:38:19:38:29 | buffer[...] | semmle.label | buffer[...] | | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | | test_futures_io.rs:45:64:45:69 | reader | semmle.label | reader | | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | @@ -2150,6 +2120,8 @@ testFailures | test_futures_io.rs:20:10:20:13 | &tcp | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:20:10:20:13 | &tcp | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:27:10:27:16 | &reader | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:27:10:27:16 | &reader | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:33:14:33:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:33:14:33:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | +| test_futures_io.rs:37:18:37:24 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:37:18:37:24 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | +| test_futures_io.rs:38:18:38:29 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:38:18:38:29 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:46:14:46:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:46:14:46:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:51:14:51:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:51:14:51:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | | test_futures_io.rs:55:10:55:17 | &reader2 | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:55:10:55:17 | &reader2 | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 43a54ce6d1e..18911880fce 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -638,7 +638,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.chain(file2); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" } { @@ -646,7 +646,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.take(100); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" } Ok(()) diff --git a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs index b93f0353525..c4ee15dfe4c 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs @@ -32,21 +32,21 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { let mut pinned = Pin::new(&mut reader); sink(&pinned); // $ hasTaintFlow=url let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let bytes_read = pinned.poll_read(&mut cx, &mut buffer); // we cannot correctly resolve this call, since it relies on `Deref` + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer); // $ MISSING: hasTaintFlow=url - sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + sink(&buffer); // $ hasTaintFlow=url + sink(&buffer[..n]); // $ hasTaintFlow=url } } { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read2 = reader.read(&mut buffer2).await?; sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url } @@ -80,7 +80,7 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let buffer = reader2.fill_buf().await?; sink(buffer); // $ hasTaintFlow=url } @@ -100,11 +100,11 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader2.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read2 = reader2.read(&mut buffer2).await?; sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url } @@ -122,34 +122,34 @@ async fn test_futures_rustls_futures_io() -> io::Result<()> { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let buffer = reader2.fill_buf().await?; sink(buffer); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_until` extension method let mut line = Vec::new(); - let _bytes_read = reader2.read_until(b'\n', &mut line).await?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let _bytes_read = reader2.read_until(b'\n', &mut line).await?; sink(&line); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_line` extension method let mut line = String::new(); - let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let _bytes_read = reader2.read_line(&mut line).await?; sink(&line); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_to_end` extension method let mut buffer = Vec::with_capacity(1024); - let _bytes_read = reader2.read_to_end(&mut buffer).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let _bytes_read = reader2.read_to_end(&mut buffer).await?; sink(&buffer); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::lines` extension method - let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let mut lines_stream = reader2.lines(); sink(lines_stream.next().await.unwrap()); // $ MISSING: hasTaintFlow=url while let Some(line) = lines_stream.next().await { sink(line.unwrap()); // $ MISSING: hasTaintFlow diff --git a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected index b6acd6b81a7..ccda75006f9 100644 --- a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | main.rs:52:14:52:29 | ...::from(...) | -| main.rs:64:16:64:25 | s.as_str() | diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index 2b1476dd0fc..6cb680fa6ca 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -6,9 +6,8 @@ models | 5 | Summary: ::from; Argument[0].Reference; ReturnValue; value | | 6 | Summary: ::add; Argument[self]; ReturnValue; value | | 7 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 8 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 9 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 10 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 8 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 9 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | edges | main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | s | provenance | | @@ -38,35 +37,33 @@ edges | main.rs:58:14:58:27 | s1.to_string() | main.rs:58:9:58:10 | s2 | provenance | | | main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | | | main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 | -| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:8 | | main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | | | main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 | -| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:8 | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | | | main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | | | main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | | | main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | | -| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:9 | +| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:8 | | main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | | | main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | | -| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:9 | +| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:8 | | main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | | | main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | | | main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | | | main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | | -| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:9 | +| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:8 | | main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | | | main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | | | main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | | | main.rs:86:18:86:25 | ...::format(...) | main.rs:86:18:86:25 | { ... } | provenance | | | main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | | -| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:9 | -| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:10 | +| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:8 | +| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:9 | | main.rs:87:18:87:32 | ...::format(...) | main.rs:87:18:87:32 | { ... } | provenance | | | main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | | -| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:9 | -| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:10 | +| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:8 | +| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:9 | nodes | main.rs:26:9:26:9 | s | semmle.label | s | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | diff --git a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 52ccf4c06dc..00000000000 --- a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,9 +0,0 @@ -multipleCallTargets -| main.rs:22:18:22:31 | query.as_str() | -| main.rs:23:24:23:37 | query.as_str() | -| main.rs:25:18:25:31 | query.as_str() | -| main.rs:28:16:28:29 | query.as_str() | -| main.rs:29:20:29:33 | query.as_str() | -| main.rs:30:20:30:33 | query.as_str() | -| main.rs:32:20:32:33 | query.as_str() | -| main.rs:33:22:33:35 | query.as_str() | diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 68c19fa671d..0b5d376b4d2 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,2 +1,6 @@ multipleCallTargets | main.rs:125:9:125:11 | f(...) | +| main.rs:365:9:367:16 | ...::f(...) | +| main.rs:368:9:370:16 | ...::f(...) | +| main.rs:447:9:451:16 | ...::f(...) | +| main.rs:452:9:456:16 | ...::f(...) | diff --git a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 23125236495..00000000000 --- a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,29 +0,0 @@ -multipleCallTargets -| test.rs:56:7:56:26 | ... .as_str() | -| test.rs:57:7:57:21 | ... .as_str() | -| test.rs:73:7:73:26 | ... .as_str() | -| test.rs:74:7:74:36 | ... .as_str() | -| test.rs:75:7:75:34 | ... .as_str() | -| test.rs:76:7:76:27 | ... .as_str() | -| test.rs:262:7:262:36 | ... .as_str() | -| test.rs:264:7:264:33 | ... .as_str() | -| test.rs:265:7:265:36 | ... .as_str() | -| test.rs:266:7:266:26 | ... .as_str() | -| test.rs:270:7:270:28 | ... .as_str() | -| test.rs:271:7:271:37 | ... .as_str() | -| test.rs:272:7:272:36 | ... .as_str() | -| test.rs:275:7:275:32 | ... .as_str() | -| test.rs:285:7:285:34 | ... .as_str() | -| test.rs:288:7:288:36 | ... .as_str() | -| test.rs:292:7:292:39 | ... .as_str() | -| test.rs:299:7:299:53 | ... .as_str() | -| test.rs:300:7:300:45 | ... .as_str() | -| test.rs:302:7:302:39 | ... .as_str() | -| test.rs:303:7:303:34 | ... .as_str() | -| test.rs:304:7:304:42 | ... .as_str() | -| test.rs:306:7:306:48 | ... .as_str() | -| test.rs:307:7:307:35 | ... .as_str() | -| test.rs:308:7:308:35 | ... .as_str() | -| test.rs:317:8:317:19 | num.as_str() | -| test.rs:328:8:328:19 | num.as_str() | -| test.rs:347:7:347:39 | ... .as_str() | diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 6e687e06e42..2a12ae35276 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,8 +1,10 @@ multipleCallTargets | dereference.rs:69:15:69:24 | e1.deref() | +| dereference.rs:182:17:182:26 | ... .foo() | +| dereference.rs:183:17:183:23 | S.foo() | +| dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | -| invalid/main.rs:91:17:91:30 | S1.duplicate() | | main.rs:2437:13:2437:31 | ...::from(...) | | main.rs:2438:13:2438:31 | ...::from(...) | | main.rs:2439:13:2439:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index f4e91152d5e..12449efe7d2 100644 --- a/rust/ql/test/library-tests/type-inference/blanket_impl.rs +++ b/rust/ql/test/library-tests/type-inference/blanket_impl.rs @@ -51,7 +51,7 @@ mod basic_blanket_impl { println!("{x3:?}"); let x4 = (&S1).duplicate(); // $ target=Clone1duplicate println!("{x4:?}"); - let x5 = S1::duplicate(&S1); // $ MISSING: target=Clone1duplicate + let x5 = S1::duplicate(&S1); // $ target=Clone1duplicate println!("{x5:?}"); let x6 = S2.duplicate(); // $ MISSING: target=Clone1duplicate println!("{x6:?}"); @@ -91,7 +91,7 @@ mod assoc_blanket_impl { println!("{x1:?}"); let x2 = Trait1::assoc_func1(1, S1); // $ target=S1::assoc_func1 println!("{x2:?}"); - let x3 = S1::assoc_func2(1, S1); // $ MISSING: target=Blanket_assoc_func2 + let x3 = S1::assoc_func2(1, S1); // $ target=Blanket_assoc_func2 println!("{x3:?}"); let x4 = Trait2::assoc_func2(1, S1); // $ target=Blanket_assoc_func2 println!("{x4:?}"); @@ -212,11 +212,11 @@ pub mod sql_exec { let c = MySqlConnection {}; // $ certainType=c:MySqlConnection c.execute1(); // $ target=execute1 - MySqlConnection::execute1(&c); // $ MISSING: target=execute1 + MySqlConnection::execute1(&c); // $ target=execute1 c.execute2("SELECT * FROM users"); // $ target=execute2 c.execute2::<&str>("SELECT * FROM users"); // $ target=execute2 - MySqlConnection::execute2(&c, "SELECT * FROM users"); // $ MISSING: target=execute2 - MySqlConnection::execute2::<&str>(&c, "SELECT * FROM users"); // $ MISSING: target=execute2 + MySqlConnection::execute2(&c, "SELECT * FROM users"); // $ target=execute2 + MySqlConnection::execute2::<&str>(&c, "SELECT * FROM users"); // $ target=execute2 } } diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index 6e57fc20c19..bdc42180a63 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -66,7 +66,7 @@ fn explicit_polymorphic_dereference() { fn explicit_ref_dereference() { // Explicit dereference with type parameter let e1 = &'a'; - let _f1 = e1.deref(); // $ target=deref MISSING: type=_f1:&T.char + let _f1 = e1.deref(); // $ target=deref type=_f1:&T.char // Explicit dereference with type parameter let e2 = &'a'; @@ -179,9 +179,9 @@ mod ref_vs_mut_ref { } pub fn test() { - let x = (&S).foo(); // $ MISSING: target=MyTrait1::foo1 type=x:S - let y = S.foo(); // $ MISSING: target=MyTrait1::foo1 type=y:S - let z = (&mut S).foo(); // $ MISSING: target=MyTrait1::foo2 type=z:i64 + let x = (&S).foo(); // $ target=MyTrait1::foo1 type=x:S $ SPURIOUS: target=MyTrait1::foo2 + let y = S.foo(); // $ target=MyTrait1::foo1 type=y:S $ SPURIOUS: target=MyTrait1::foo2 + let z = (&mut S).foo(); // $ target=MyTrait1::foo2 type=z:i64 $ SPURIOUS: target=MyTrait1::foo1 let x = S.bar(&S); // $ target=MyTrait2::bar1 type=x:S $ SPURIOUS: target=MyTrait2::bar2 let y = S.bar(&mut S); // $ target=MyTrait2::bar2 type=y:i64 $ SPURIOUS: target=MyTrait2::bar1 diff --git a/rust/ql/test/library-tests/type-inference/invalid/main.rs b/rust/ql/test/library-tests/type-inference/invalid/main.rs index 83bd031d171..6af9b8747a9 100644 --- a/rust/ql/test/library-tests/type-inference/invalid/main.rs +++ b/rust/ql/test/library-tests/type-inference/invalid/main.rs @@ -88,6 +88,6 @@ mod impl_specialization { pub fn test_basic_blanket() { // this call should target the specialized implementation of Duplicatable for S1, // not the blanket implementation - let x = S1.duplicate(); // $ target=S1::duplicate $ SPURIOUS: target=Clone1duplicate + let x = S1.duplicate(); // $ target=S1::duplicate } } diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 20b8a2d1b34..4f567b5abbf 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -698,9 +698,9 @@ mod function_trait_bounds { T2::assoc(x) // $ target=assoc } fn call_trait_assoc_2 + Copy>(x: T2) -> T1 { - let y = MyTrait::assoc(x); // $ MISSING: target=assoc - y; // $ MISSING: type=y:T1 - MyTrait::assoc(x) // $ MISSING: target=assoc + let y = MyTrait::assoc(x); // $ target=assoc + y; // $ type=y:T1 + MyTrait::assoc(x) // $ target=assoc } // Type parameter with bound occurs nested within another type. @@ -1449,12 +1449,12 @@ mod method_call_type_conversion { let my_thing = &MyInt { a: 37 }; // implicit borrow of a `&` - let a = my_thing.method_on_borrow(); // $ MISSING: target=MyInt::method_on_borrow + let a = my_thing.method_on_borrow(); // $ target=MyInt::method_on_borrow println!("{:?}", a); // no implicit borrow let my_thing = &MyInt { a: 38 }; - let a = my_thing.method_not_on_borrow(); // $ MISSING: target=MyInt::method_not_on_borrow + let a = my_thing.method_not_on_borrow(); // $ target=MyInt::method_not_on_borrow println!("{:?}", a); } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 11e3f76c4a8..09263cd25e9 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -62,6 +62,8 @@ inferType | blanket_impl.rs:53:18:53:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:53:18:53:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:18:54:35 | ...::duplicate(...) | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:32:54:34 | &S1 | | file://:0:0:0:0 | & | | blanket_impl.rs:54:32:54:34 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -69,6 +71,7 @@ inferType | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:55:18:55:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:55:18:55:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | @@ -117,26 +120,26 @@ inferType | blanket_impl.rs:93:18:93:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:93:18:93:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:94:13:94:14 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | +| blanket_impl.rs:94:18:94:39 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | +| blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:95:18:95:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:95:18:95:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | | blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:71:5:73:5 | trait Trait2 | | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:97:18:97:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:97:18:97:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:71:5:73:5 | trait Trait2 | | blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | | blanket_impl.rs:112:26:112:30 | SelfParam | | file://:0:0:0:0 | & | @@ -539,16 +542,15 @@ inferType | dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:68:9:68:10 | e1 | | file://:0:0:0:0 | & | | dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:68:9:68:10 | e1 | &T | file://:0:0:0:0 | & | | dereference.rs:68:14:68:17 | &'a' | | file://:0:0:0:0 | & | | dereference.rs:68:14:68:17 | &'a' | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:68:14:68:17 | &'a' | &T | file://:0:0:0:0 | & | | dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:69:9:69:11 | _f1 | | file://:0:0:0:0 | & | +| dereference.rs:69:9:69:11 | _f1 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:69:15:69:16 | e1 | | file://:0:0:0:0 | & | | dereference.rs:69:15:69:16 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:16 | e1 | &T | file://:0:0:0:0 | & | | dereference.rs:69:15:69:24 | e1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:24 | e1.deref() | &T | {EXTERNAL LOCATION} | char | | dereference.rs:72:9:72:10 | e2 | | file://:0:0:0:0 | & | | dereference.rs:72:9:72:10 | e2 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:72:14:72:17 | &'a' | | file://:0:0:0:0 | & | @@ -728,14 +730,26 @@ inferType | dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:13:182:13 | x | | {EXTERNAL LOCATION} | i64 | | dereference.rs:182:17:182:20 | (...) | | file://:0:0:0:0 | & | | dereference.rs:182:17:182:20 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:17:182:26 | ... .foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:182:18:182:19 | &S | | file://:0:0:0:0 | & | | dereference.rs:182:18:182:19 | &S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:183:13:183:13 | y | | dereference.rs:147:5:147:13 | S | +| dereference.rs:183:13:183:13 | y | | {EXTERNAL LOCATION} | i64 | | dereference.rs:183:17:183:17 | S | | dereference.rs:147:5:147:13 | S | +| dereference.rs:183:17:183:23 | S.foo() | | dereference.rs:147:5:147:13 | S | +| dereference.rs:183:17:183:23 | S.foo() | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:184:13:184:13 | z | | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:13:184:13 | z | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:17:184:24 | (...) | | file://:0:0:0:0 | & | | dereference.rs:184:17:184:24 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:17:184:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:18:184:23 | &mut S | | file://:0:0:0:0 | & | | dereference.rs:184:18:184:23 | &mut S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | @@ -1978,7 +1992,10 @@ inferType | main.rs:698:19:698:19 | x | | main.rs:695:31:695:52 | T2 | | main.rs:700:55:700:55 | x | | main.rs:700:31:700:52 | T2 | | main.rs:700:68:704:5 | { ... } | | main.rs:700:27:700:28 | T1 | +| main.rs:701:13:701:13 | y | | main.rs:700:27:700:28 | T1 | +| main.rs:701:17:701:33 | ...::assoc(...) | | main.rs:700:27:700:28 | T1 | | main.rs:701:32:701:32 | x | | main.rs:700:31:700:52 | T2 | +| main.rs:702:9:702:9 | y | | main.rs:700:27:700:28 | T1 | | main.rs:703:9:703:25 | ...::assoc(...) | | main.rs:700:27:700:28 | T1 | | main.rs:703:24:703:24 | x | | main.rs:700:31:700:52 | T2 | | main.rs:708:49:708:49 | x | | main.rs:656:5:659:5 | MyThing | @@ -2001,7 +2018,6 @@ inferType | main.rs:715:9:715:24 | ...::m1(...) | | main.rs:714:30:714:31 | T1 | | main.rs:715:21:715:21 | x | | main.rs:656:5:659:5 | MyThing | | main.rs:715:21:715:21 | x | T | main.rs:714:34:714:48 | T2 | -| main.rs:715:21:715:23 | x.a | | main.rs:666:5:677:5 | trait MyTrait | | main.rs:715:21:715:23 | x.a | | main.rs:714:34:714:48 | T2 | | main.rs:719:15:719:18 | SelfParam | | main.rs:656:5:659:5 | MyThing | | main.rs:719:15:719:18 | SelfParam | T | main.rs:718:10:718:10 | T | @@ -3081,10 +3097,8 @@ inferType | main.rs:1400:13:1400:24 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1400:14:1400:21 | * ... | | main.rs:1372:5:1375:5 | MyInt | | main.rs:1400:15:1400:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1400:15:1400:21 | (...) | | main.rs:1372:5:1375:5 | MyInt | | main.rs:1400:15:1400:21 | (...) | &T | main.rs:1372:5:1375:5 | MyInt | | main.rs:1400:16:1400:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1400:16:1400:20 | * ... | | main.rs:1372:5:1375:5 | MyInt | | main.rs:1400:16:1400:20 | * ... | &T | main.rs:1372:5:1375:5 | MyInt | | main.rs:1400:17:1400:20 | self | | file://:0:0:0:0 | & | | main.rs:1400:17:1400:20 | self | &T | file://:0:0:0:0 | & | @@ -3269,12 +3283,15 @@ inferType | main.rs:1450:25:1450:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | | main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i32 | | main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1452:13:1452:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1452:17:1452:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1452:17:1452:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1452:17:1452:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1453:18:1453:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1453:18:1453:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1453:18:1453:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1453:18:1453:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1453:26:1453:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1456:13:1456:20 | my_thing | | file://:0:0:0:0 | & | | main.rs:1456:13:1456:20 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | | main.rs:1456:24:1456:39 | &... | | file://:0:0:0:0 | & | @@ -3282,12 +3299,15 @@ inferType | main.rs:1456:25:1456:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | | main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i32 | | main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1457:13:1457:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1457:17:1457:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1457:17:1457:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | +| main.rs:1457:17:1457:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1458:18:1458:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1458:18:1458:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1458:18:1458:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1458:18:1458:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1458:26:1458:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1465:16:1465:20 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1465:16:1465:20 | SelfParam | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | | main.rs:1468:16:1468:20 | SelfParam | | file://:0:0:0:0 | & | @@ -3416,11 +3436,9 @@ inferType | main.rs:1541:16:1541:16 | x | | main.rs:1517:5:1517:13 | S | | main.rs:1543:13:1543:13 | n | | {EXTERNAL LOCATION} | bool | | main.rs:1543:17:1543:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:18:1543:24 | * ... | | {EXTERNAL LOCATION} | bool | | main.rs:1543:18:1543:24 | * ... | | file://:0:0:0:0 | & | | main.rs:1543:18:1543:24 | * ... | &T | {EXTERNAL LOCATION} | bool | | main.rs:1543:19:1543:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1543:19:1543:24 | &... | &T | {EXTERNAL LOCATION} | bool | | main.rs:1543:19:1543:24 | &... | &T | file://:0:0:0:0 | & | | main.rs:1543:19:1543:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | | main.rs:1543:20:1543:24 | &true | | file://:0:0:0:0 | & | @@ -3805,22 +3823,14 @@ inferType | main.rs:1771:13:1774:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1772:20:1772:23 | self | | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1772:20:1772:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:20:1772:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | | main.rs:1772:20:1772:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:20:1772:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | | main.rs:1772:29:1772:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1772:29:1772:33 | rhs.x | | {EXTERNAL LOCATION} | NonZero | | main.rs:1772:29:1772:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:29:1772:33 | rhs.x | T | {EXTERNAL LOCATION} | i64 | | main.rs:1773:20:1773:23 | self | | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1773:20:1773:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:20:1773:33 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | | main.rs:1773:20:1773:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:20:1773:33 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | | main.rs:1773:29:1773:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1773:29:1773:33 | rhs.y | | {EXTERNAL LOCATION} | NonZero | | main.rs:1773:29:1773:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:29:1773:33 | rhs.y | T | {EXTERNAL LOCATION} | i64 | | main.rs:1779:25:1779:33 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1779:25:1779:33 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | | main.rs:1779:36:1779:38 | rhs | | main.rs:1651:5:1656:5 | Vec2 | @@ -4166,13 +4176,9 @@ inferType | main.rs:1928:26:1928:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1928:26:1928:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1928:34:1928:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:13:1929:21 | i64_bitor | | {EXTERNAL LOCATION} | NonZero | | main.rs:1929:13:1929:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:13:1929:21 | i64_bitor | T | {EXTERNAL LOCATION} | i64 | | main.rs:1929:25:1929:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:25:1929:37 | ... \| ... | | {EXTERNAL LOCATION} | NonZero | | main.rs:1929:25:1929:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:25:1929:37 | ... \| ... | T | {EXTERNAL LOCATION} | i64 | | main.rs:1929:33:1929:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:1930:13:1930:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | | main.rs:1930:26:1930:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | @@ -6082,24 +6088,19 @@ inferType | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:17:271:17 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:271:17:271:17 | x | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:17:271:17 | x | &T | file://:0:0:0:0 | & | | pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | file://:0:0:0:0 | & | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:272:33:272:33 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:33:272:33 | x | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:272:33:272:33 | x | &T | file://:0:0:0:0 | & | | pattern_matching.rs:272:33:272:33 | x | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:32 | ... += ... | | file://:0:0:0:0 | () | -| pattern_matching.rs:273:14:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:14:273:27 | * ... | | file://:0:0:0:0 | & | | pattern_matching.rs:273:14:273:27 | * ... | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | file://:0:0:0:0 | & | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index b59acd0ca8e..e86f261a249 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -3,19 +3,6 @@ multipleCallTargets | mysql.rs:16:26:16:85 | ...::from(...) | | mysql.rs:18:13:18:66 | ...::from(...) | | mysql.rs:19:30:19:83 | ...::from(...) | -| mysql.rs:22:38:22:56 | safe_query.as_str() | -| mysql.rs:25:38:25:58 | unsafe_query.as_str() | -| mysql.rs:26:64:26:84 | unsafe_query.as_str() | -| mysql.rs:27:25:27:45 | unsafe_query.as_str() | -| mysql.rs:28:39:28:59 | unsafe_query.as_str() | -| mysql.rs:29:65:29:85 | unsafe_query.as_str() | -| mysql.rs:30:33:30:53 | unsafe_query.as_str() | -| mysql.rs:32:13:32:33 | unsafe_query.as_str() | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() | -| mysql.rs:37:32:37:52 | unsafe_query.as_str() | -| mysql.rs:39:13:39:33 | unsafe_query.as_str() | -| mysql.rs:42:39:42:59 | unsafe_query.as_str() | -| mysql.rs:45:30:45:52 | prepared_query.as_str() | | mysql.rs:46:45:46:66 | remote_string.as_str() | | mysql.rs:47:71:47:92 | remote_string.as_str() | | mysql.rs:48:46:48:67 | remote_string.as_str() | @@ -27,21 +14,10 @@ multipleCallTargets | mysql.rs:66:40:66:61 | remote_string.as_str() | | mysql.rs:67:39:67:60 | remote_string.as_str() | | mysql.rs:70:14:70:35 | remote_string.as_str() | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() | -| mysql.rs:80:26:80:46 | unsafe_query.as_str() | | mysql.rs:100:24:100:39 | ...::from(...) | | mysql.rs:101:26:101:85 | ...::from(...) | | mysql.rs:103:13:103:66 | ...::from(...) | | mysql.rs:104:30:104:83 | ...::from(...) | -| mysql.rs:107:38:107:56 | safe_query.as_str() | -| mysql.rs:110:38:110:58 | unsafe_query.as_str() | -| mysql.rs:111:25:111:45 | unsafe_query.as_str() | -| mysql.rs:112:47:112:67 | unsafe_query.as_str() | -| mysql.rs:114:25:114:45 | unsafe_query.as_str() | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() | -| mysql.rs:118:40:118:60 | unsafe_query.as_str() | -| mysql.rs:121:24:121:44 | unsafe_query.as_str() | -| mysql.rs:125:30:125:52 | prepared_query.as_str() | | mysql.rs:126:45:126:66 | remote_string.as_str() | | mysql.rs:128:38:128:59 | remote_string.as_str() | | mysql.rs:130:33:130:54 | remote_string.as_str() | @@ -50,8 +26,6 @@ multipleCallTargets | mysql.rs:140:40:140:61 | remote_string.as_str() | | mysql.rs:142:62:142:83 | remote_string.as_str() | | mysql.rs:145:31:145:52 | remote_string.as_str() | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() | -| mysql.rs:154:26:154:46 | unsafe_query.as_str() | | sqlx.rs:46:24:46:44 | ...::from(...) | | sqlx.rs:47:56:47:76 | ...::from(...) | | sqlx.rs:48:97:48:117 | ...::from(...) | @@ -59,64 +33,18 @@ multipleCallTargets | sqlx.rs:51:24:51:77 | ...::from(...) | | sqlx.rs:55:26:55:79 | ...::from(...) | | sqlx.rs:61:28:61:81 | ...::from(...) | -| sqlx.rs:64:57:64:77 | safe_query_1.as_str() | -| sqlx.rs:65:26:65:46 | safe_query_2.as_str() | -| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | -| sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | -| sqlx.rs:70:30:70:52 | unsafe_query_3.as_str() | -| sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | -| sqlx.rs:75:25:75:45 | safe_query_1.as_str() | -| sqlx.rs:76:25:76:45 | safe_query_2.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | -| sqlx.rs:84:25:84:49 | prepared_query_1.as_str() | -| sqlx.rs:85:25:85:49 | prepared_query_1.as_str() | -| sqlx.rs:87:29:87:53 | prepared_query_1.as_str() | -| sqlx.rs:88:29:88:53 | prepared_query_1.as_str() | | sqlx.rs:99:24:99:44 | ...::from(...) | | sqlx.rs:100:97:100:117 | ...::from(...) | | sqlx.rs:101:24:101:77 | ...::from(...) | | sqlx.rs:102:26:102:79 | ...::from(...) | | sqlx.rs:103:28:103:81 | ...::from(...) | -| sqlx.rs:106:26:106:46 | safe_query_1.as_str() | -| sqlx.rs:108:30:108:52 | unsafe_query_1.as_str() | -| sqlx.rs:111:27:111:47 | safe_query_1.as_str() | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | -| sqlx.rs:117:25:117:45 | safe_query_1.as_str() | -| sqlx.rs:118:25:118:49 | prepared_query_1.as_str() | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | -| sqlx.rs:121:29:121:53 | prepared_query_1.as_str() | -| sqlx.rs:124:25:124:45 | safe_query_1.as_str() | -| sqlx.rs:125:25:125:49 | prepared_query_1.as_str() | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | -| sqlx.rs:128:29:128:53 | prepared_query_1.as_str() | -| sqlx.rs:131:54:131:74 | safe_query_1.as_str() | -| sqlx.rs:133:54:133:78 | prepared_query_1.as_str() | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | -| sqlx.rs:137:55:137:79 | prepared_query_1.as_str() | -| sqlx.rs:140:54:140:74 | safe_query_1.as_str() | -| sqlx.rs:142:54:142:78 | prepared_query_1.as_str() | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | -| sqlx.rs:146:55:146:79 | prepared_query_1.as_str() | -| sqlx.rs:149:25:149:45 | safe_query_1.as_str() | -| sqlx.rs:150:25:150:49 | prepared_query_1.as_str() | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | -| sqlx.rs:154:29:154:53 | prepared_query_1.as_str() | | sqlx.rs:172:24:172:44 | ...::from(...) | | sqlx.rs:173:97:173:117 | ...::from(...) | | sqlx.rs:174:24:174:77 | ...::from(...) | | sqlx.rs:175:26:175:79 | ...::from(...) | | sqlx.rs:176:28:176:82 | ...::from(...) | -| sqlx.rs:179:26:179:46 | safe_query_1.as_str() | -| sqlx.rs:181:30:181:52 | unsafe_query_1.as_str() | -| sqlx.rs:185:25:185:45 | safe_query_1.as_str() | -| sqlx.rs:186:25:186:49 | prepared_query_1.as_str() | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | -| sqlx.rs:189:29:189:53 | prepared_query_1.as_str() | | sqlx.rs:202:57:202:85 | ...::from(...) | multiplePathResolutions | mysql.rs:5:37:5:74 | Result::<...> | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index d717145b64e..ecd8cfa7937 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -41,126 +41,74 @@ edges | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:42 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:27 | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 | | mysql.rs:18:13:18:89 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | | mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | | mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | -| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | @@ -170,90 +118,54 @@ edges | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:35 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:42 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:33 | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:27 | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 | | mysql.rs:103:13:103:89 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | | mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | | mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | -| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | -| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | -| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:33 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | @@ -275,16 +187,12 @@ edges | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:33 | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:33 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | | sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | | sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | @@ -293,9 +201,7 @@ edges | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:33 | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:29 | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:33 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 | @@ -303,28 +209,20 @@ edges | sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:33 | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:33 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | | sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | | sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | @@ -334,63 +232,39 @@ edges | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | | sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | @@ -400,18 +274,14 @@ edges | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:29 | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:33 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:27 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | | sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | models diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected index f4514168e3f..c84f3becf1f 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -1,12 +1,4 @@ multipleCallTargets -| test_logging.rs:77:20:77:36 | password.as_str() | -| test_logging.rs:78:22:78:38 | password.as_str() | -| test_logging.rs:88:18:88:34 | password.as_str() | -| test_logging.rs:229:30:229:71 | ... .as_str() | -| test_logging.rs:242:16:242:61 | ... .as_bytes() | -| test_logging.rs:245:20:245:65 | ... .as_bytes() | -| test_logging.rs:248:15:248:60 | ... .as_bytes() | -| test_logging.rs:251:15:251:60 | ... .as_bytes() | | test_storage.rs:13:10:13:33 | ...::from(...) | | test_storage.rs:17:10:17:35 | ...::from(...) | | test_storage.rs:21:10:21:35 | ...::from(...) | @@ -27,42 +19,6 @@ multipleCallTargets | test_storage.rs:80:25:80:70 | ...::from(...) | | test_storage.rs:81:25:81:72 | ...::from(...) | | test_storage.rs:82:26:82:77 | ...::from(...) | -| test_storage.rs:85:27:85:48 | select_query1.as_str() | -| test_storage.rs:86:27:86:48 | select_query2.as_str() | -| test_storage.rs:87:27:87:48 | insert_query1.as_str() | -| test_storage.rs:88:27:88:48 | insert_query2.as_str() | -| test_storage.rs:89:27:89:48 | update_query1.as_str() | -| test_storage.rs:90:27:90:48 | update_query2.as_str() | -| test_storage.rs:91:27:91:48 | update_query3.as_str() | -| test_storage.rs:92:27:92:48 | update_query4.as_str() | -| test_storage.rs:93:27:93:48 | update_query5.as_str() | -| test_storage.rs:94:27:94:48 | update_query6.as_str() | -| test_storage.rs:95:27:95:48 | delete_query1.as_str() | -| test_storage.rs:96:27:96:48 | delete_query2.as_str() | -| test_storage.rs:99:25:99:46 | insert_query1.as_str() | -| test_storage.rs:100:25:100:46 | insert_query2.as_str() | -| test_storage.rs:101:25:101:47 | prepared_query.as_str() | -| test_storage.rs:102:25:102:47 | prepared_query.as_str() | -| test_storage.rs:103:25:103:47 | prepared_query.as_str() | -| test_storage.rs:104:25:104:47 | prepared_query.as_str() | -| test_storage.rs:110:27:110:48 | insert_query1.as_str() | -| test_storage.rs:111:27:111:48 | insert_query2.as_str() | -| test_storage.rs:114:27:114:48 | insert_query1.as_str() | -| test_storage.rs:115:27:115:48 | insert_query2.as_str() | -| test_storage.rs:118:25:118:46 | insert_query1.as_str() | -| test_storage.rs:119:25:119:46 | insert_query2.as_str() | -| test_storage.rs:120:25:120:47 | prepared_query.as_str() | -| test_storage.rs:121:25:121:47 | prepared_query.as_str() | -| test_storage.rs:124:25:124:46 | insert_query1.as_str() | -| test_storage.rs:125:25:125:46 | insert_query2.as_str() | -| test_storage.rs:126:25:126:47 | prepared_query.as_str() | -| test_storage.rs:127:25:127:47 | prepared_query.as_str() | -| test_storage.rs:134:27:134:48 | insert_query1.as_str() | -| test_storage.rs:135:27:135:48 | insert_query2.as_str() | -| test_storage.rs:138:25:138:46 | insert_query1.as_str() | -| test_storage.rs:139:25:139:46 | insert_query2.as_str() | -| test_storage.rs:140:25:140:47 | prepared_query.as_str() | -| test_storage.rs:141:25:141:47 | prepared_query.as_str() | | test_storage.rs:188:29:188:86 | ...::from(...) | | test_storage.rs:189:28:189:82 | ...::from(...) | | test_storage.rs:190:28:190:81 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index bf19b1a25d5..5b1e89fb7aa 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -147,8 +147,8 @@ edges | test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | | test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:22:99:45 | { ... } | provenance | | | test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | -| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | | test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:9 | ...::log | provenance | MaD:12 Sink:MaD:12 | | test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:10 | ...::log | provenance | MaD:12 Sink:MaD:12 | @@ -169,8 +169,8 @@ edges | test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | | test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:42:176:78 | { ... } | provenance | | | test_logging.rs:176:42:176:78 | ...::must_use(...) | test_logging.rs:176:34:176:79 | MacroExpr | provenance | | -| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | | | test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | | test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:3 Sink:MaD:3 | @@ -178,8 +178,8 @@ edges | test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | | test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:44:180:80 | { ... } | provenance | | | test_logging.rs:180:44:180:80 | ...::must_use(...) | test_logging.rs:180:36:180:81 | MacroExpr | provenance | | -| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | | | test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | | | test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | @@ -230,64 +230,52 @@ edges | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:28 | ...::assert_failed [Some] | provenance | MaD:10 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | -| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:22 | | test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:20 | -| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:22 | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:2 Sink:MaD:2 | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:22 | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:20 | -| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:22 | -| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | -| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:21 | | test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | -| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:21 | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:19 | -| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | -| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:21 | | test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | -| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:21 | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:19 | -| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | -| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:21 | | test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | -| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:21 | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:19 | -| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | -| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:21 | | test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:19 | | test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | -| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:21 | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:19 | -| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:23 | -| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:24 | +| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:21 | +| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:22 | | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | models | 1 | Sink: ::log_expect; Argument[0]; log-injection | @@ -310,10 +298,8 @@ models | 18 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | | 19 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | | 20 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 21 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 22 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 23 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 24 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 21 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 22 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | test_logging.rs:42:5:42:10 | ...::log | semmle.label | ...::log | | test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected index b8ab8dc3cf0..d5f5cbca002 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextStorageDatabase.expected @@ -9,25 +9,15 @@ | test_storage.rs:204:31:204:37 | prepare | test_storage.rs:190:86:190:103 | get_phone_number(...) | test_storage.rs:204:31:204:37 | prepare | This database operation may read or write unencrypted sensitive data from $@. | test_storage.rs:190:86:190:103 | get_phone_number(...) | get_phone_number(...) | edges | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:10 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:39 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:10 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:10 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:10 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:37 | insert_query2 | provenance | | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:10 | -| test_storage.rs:71:9:71:21 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() | provenance | MaD:11 | | test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:9:71:21 | insert_query2 | provenance | | | test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:8 | | test_storage.rs:71:25:71:114 | ... + ... | test_storage.rs:71:25:71:121 | ... + ... | provenance | MaD:9 | @@ -39,29 +29,19 @@ edges | test_storage.rs:71:96:71:114 | &... [&ref] | test_storage.rs:71:25:71:114 | ... + ... | provenance | MaD:6 | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... | provenance | Config | | test_storage.rs:71:97:71:114 | get_phone_number(...) | test_storage.rs:71:96:71:114 | &... [&ref] | provenance | | -| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | -| test_storage.rs:100:25:100:37 | insert_query2 | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:100:25:100:46 | insert_query2.as_str() | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:100:25:100:46 | insert_query2.as_str() [&ref] | test_storage.rs:100:13:100:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:10 | -| test_storage.rs:115:27:115:39 | insert_query2 | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:115:27:115:48 | insert_query2.as_str() | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | | test_storage.rs:115:27:115:48 | insert_query2.as_str() [&ref] | test_storage.rs:115:13:115:25 | ...::raw_sql | provenance | MaD:5 Sink:MaD:5 | -| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | -| test_storage.rs:119:25:119:37 | insert_query2 | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:119:25:119:46 | insert_query2.as_str() | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:119:25:119:46 | insert_query2.as_str() [&ref] | test_storage.rs:119:13:119:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | -| test_storage.rs:125:25:125:37 | insert_query2 | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:125:25:125:46 | insert_query2.as_str() | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:125:25:125:46 | insert_query2.as_str() [&ref] | test_storage.rs:125:13:125:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | -| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:10 | -| test_storage.rs:139:25:139:37 | insert_query2 | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | provenance | MaD:11 | | test_storage.rs:139:25:139:46 | insert_query2.as_str() | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:139:25:139:46 | insert_query2.as_str() [&ref] | test_storage.rs:139:13:139:23 | ...::query | provenance | MaD:4 Sink:MaD:4 | | test_storage.rs:189:9:189:24 | insert_query_bad | test_storage.rs:194:25:194:40 | insert_query_bad | provenance | | @@ -112,7 +92,6 @@ models | 8 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | | 9 | Summary: ::add; Argument[self]; ReturnValue; value | | 10 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | nodes | test_storage.rs:71:9:71:21 | insert_query2 | semmle.label | insert_query2 | | test_storage.rs:71:25:71:114 | ... + ... | semmle.label | ... + ... | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index d13271f5fe6..81f06adcde3 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -3,7 +3,4 @@ multipleCallTargets | deallocation.rs:261:11:261:29 | ...::from(...) | | lifetime.rs:610:13:610:31 | ...::from(...) | | lifetime.rs:611:13:611:31 | ...::from(...) | -| lifetime.rs:612:27:612:38 | foo.as_str() | -| lifetime.rs:612:41:612:52 | bar.as_str() | | lifetime.rs:628:13:628:31 | ...::from(...) | -| lifetime.rs:629:32:629:43 | baz.as_str() | From c2ba4ba3fcd80156d803c2af9e69b8bf4cd8313e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 6 Oct 2025 09:31:03 +0200 Subject: [PATCH 235/965] Rust: Add change note --- rust/ql/lib/change-notes/2025-10-06-call-resolution.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md new file mode 100644 index 00000000000..ffaf449bb8a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file From 41602d3efaab4ed1de8072db00d19473c1836a08 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 20 Oct 2025 21:42:18 +0200 Subject: [PATCH 236/965] Address review comments --- rust/ql/lib/codeql/rust/internal/Type.qll | 33 +-- .../codeql/rust/internal/TypeInference.qll | 227 +++++++++--------- .../lib/codeql/rust/internal/TypeMention.qll | 29 +-- .../typeinference/FunctionOverloading.qll | 12 +- .../internal/typeinference/FunctionType.qll | 102 ++++---- .../typeinference/internal/TypeInference.qll | 1 + 6 files changed, 199 insertions(+), 205 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 15c3d13f9d8..4ce224ec610 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -626,6 +626,23 @@ final class ImplTraitTypeReprAbstraction extends TypeAbstraction, ImplTraitTypeR } } +/** + * Holds if `t` is a valid complex [`self` root type][1]. + * + * [1]: https://doc.rust-lang.org/stable/reference/items/associated-items.html#r-items.associated.fn.method.self-ty + */ +pragma[nomagic] +predicate validSelfType(Type t) { + t instanceof RefType + or + exists(Struct s | t = TStruct(s) | + s instanceof BoxStruct or + s instanceof RcStruct or + s instanceof ArcStruct or + s instanceof PinStruct + ) +} + /** * Holds if `root` is a valid complex [`self` root type][1], with type * parameter `tp`. @@ -634,18 +651,6 @@ final class ImplTraitTypeReprAbstraction extends TypeAbstraction, ImplTraitTypeR */ pragma[nomagic] predicate complexSelfRoot(Type root, TypeParameter tp) { - tp = root.(RefType).getPositionalTypeParameter(_) - or - exists(Struct s | - root = TStruct(s) and - tp = root.getPositionalTypeParameter(0) - | - s instanceof BoxStruct - or - s instanceof RcStruct - or - s instanceof ArcStruct - or - s instanceof PinStruct - ) + validSelfType(root) and + tp = root.getPositionalTypeParameter(0) } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index de7b4447236..b5e0dbe7df4 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -817,7 +817,7 @@ private Type getCallExprTypeQualifier(CallExpr ce, TypePath path) { */ pragma[nomagic] private predicate assocFunctionInfo( - Function f, string name, int arity, ImplOrTraitItemNode i, FunctionTypePosition pos, + Function f, string name, int arity, ImplOrTraitItemNode i, FunctionPosition pos, AssocFunctionType t ) { f = i.getASuccessor(name) and @@ -835,7 +835,7 @@ private predicate assocFunctionInfo( */ pragma[nomagic] private predicate functionInfoBlanket( - Function f, string name, int arity, ImplItemNode impl, Trait trait, FunctionTypePosition pos, + Function f, string name, int arity, ImplItemNode impl, Trait trait, FunctionPosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam ) { exists(TypePath blanketSelfPath | @@ -859,7 +859,7 @@ private predicate functionInfoBlanket( bindingset[path, type] private predicate isComplexRootStripped(TypePath path, Type type) { path.isEmpty() and - not complexSelfRoot(type, _) + not validSelfType(type) or exists(TypeParameter tp | complexSelfRoot(_, tp) and @@ -918,7 +918,7 @@ private module MethodResolution { Method m, string name, int arity, ImplOrTraitItemNode i, AssocFunctionType selfType, TypePath strippedTypePath, Type strippedType ) { - exists(FunctionTypePosition pos | + exists(FunctionPosition pos | assocFunctionInfo(m, name, arity, i, pos, selfType) and strippedType = selfType.getTypeAt(strippedTypePath) and isComplexRootStripped(strippedTypePath, strippedType) and @@ -964,7 +964,7 @@ private module MethodResolution { Method m, string name, int arity, ImplItemNode impl, Trait trait, AssocFunctionType selfType, TypePath blanketPath, TypeParam blanketTypeParam ) { - exists(FunctionTypePosition pos | + exists(FunctionPosition pos | functionInfoBlanket(m, name, arity, impl, trait, pos, selfType, blanketPath, blanketTypeParam) and pos.isSelf() ) @@ -1089,7 +1089,7 @@ private module MethodResolution { abstract predicate supportsAutoDerefAndBorrow(); - AstNode getNodeAt(FunctionTypePosition apos) { + AstNode getNodeAt(FunctionPosition apos) { result = this.getArgument(apos.asArgumentPosition()) or result = this and apos.isReturn() @@ -1113,7 +1113,7 @@ private module MethodResolution { or this.supportsAutoDerefAndBorrow() and exists(TypePath path0, Type t0, string derefChain0 | - this.hasNoCompatibleTarget(derefChain0, _) and + this.hasNoCompatibleTargetBorrow(derefChain0) and t0 = this.getACandidateReceiverTypeAtNoBorrow(path0, derefChain0) | path0.isCons(TRefTypeParameter(), path) and @@ -1131,15 +1131,16 @@ private module MethodResolution { /** * Holds if the method inside `i` with matching name and arity can be ruled * out as a target of this call, because the candidate receiver type represented - * by `derefChainBorrow` is incompatible with the `self` parameter type. + * by `derefChain` and `borrow` is incompatible with the `self` parameter type. */ pragma[nomagic] - private predicate hasIncompatibleTarget(ImplOrTraitItemNode i, string derefChainBorrow) { - ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, - derefChainBorrow), i, _) + private predicate hasIncompatibleTarget(ImplOrTraitItemNode i, string derefChain, boolean borrow) { + ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, derefChain, + borrow), i, _) or TypeQualifierIsInstantiationOfImplSelf::isNotInstantiationOf(this, i, _) and - derefChainBorrow = ";" + derefChain = "" and + borrow = false } /** @@ -1147,20 +1148,22 @@ private module MethodResolution { * with trait bounds. */ pragma[nomagic] - Type getACandidateReceiverTypeAtSubstituteLookupTraits(TypePath path, string derefChainBorrow) { - result = substituteLookupTraits(this.getACandidateReceiverTypeAt(path, derefChainBorrow)) + Type getACandidateReceiverTypeAtSubstituteLookupTraits( + TypePath path, string derefChain, boolean borrow + ) { + result = substituteLookupTraits(this.getACandidateReceiverTypeAt(path, derefChain, borrow)) } pragma[nomagic] - private Type getComplexStrippedType(TypePath strippedTypePath, string derefChainBorrow) { + private Type getComplexStrippedType(TypePath strippedTypePath, string derefChain, boolean borrow) { result = - this.getACandidateReceiverTypeAtSubstituteLookupTraits(strippedTypePath, derefChainBorrow) and + this.getACandidateReceiverTypeAtSubstituteLookupTraits(strippedTypePath, derefChain, borrow) and isComplexRootStripped(strippedTypePath, result) } - bindingset[strippedTypePath, strippedType, derefChainBorrow] + bindingset[strippedTypePath, strippedType, derefChain, borrow] private predicate hasNoCompatibleTargetCheck( - TypePath strippedTypePath, Type strippedType, string derefChainBorrow + TypePath strippedTypePath, Type strippedType, string derefChain, boolean borrow ) { // todo: also check that all blanket implementation candidates are incompatible forall(ImplOrTraitItemNode i | @@ -1168,16 +1171,16 @@ private module MethodResolution { or this.(MethodCallCallExpr).hasTypeQualifiedCandidate(i) | - this.hasIncompatibleTarget(i, derefChainBorrow) + this.hasIncompatibleTarget(i, derefChain, borrow) ) } /** - * Holds if the candidate receiver type represented by - * `derefChainBorrow = derefChain;` does not have a matching method target. + * Holds if the candidate receiver type represented by `derefChain` does not + * have a matching method target. */ pragma[nomagic] - predicate hasNoCompatibleTargetNoBorrow(string derefChain, string derefChainBorrow) { + predicate hasNoCompatibleTargetNoBorrow(string derefChain) { ( this.supportsAutoDerefAndBorrow() or @@ -1186,25 +1189,22 @@ private module MethodResolution { derefChain = "" ) and exists(TypePath strippedTypePath, Type strippedType | - derefChainBorrow = derefChain + ";" and not derefChain.matches("%.ref") and // no need to try a borrow if the last thing we did was a deref - strippedType = this.getComplexStrippedType(strippedTypePath, derefChainBorrow) and - this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChainBorrow) + strippedType = this.getComplexStrippedType(strippedTypePath, derefChain, false) and + this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChain, false) ) } /** - * Holds if the candidate receiver type represented by - * `derefChainBorrow = derefChain;borrow` does not have a matching method - * target. + * Holds if the candidate receiver type represented by `derefChain`, followed + * by a borrow, does not have a matching method target. */ pragma[nomagic] - predicate hasNoCompatibleTarget(string derefChain, string derefChainBorrow) { + predicate hasNoCompatibleTargetBorrow(string derefChain) { exists(TypePath strippedTypePath, Type strippedType | - derefChainBorrow = derefChain + ";borrow" and - this.hasNoCompatibleTargetNoBorrow(derefChain, _) and - strippedType = this.getComplexStrippedType(strippedTypePath, derefChainBorrow) and - this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChainBorrow) + this.hasNoCompatibleTargetNoBorrow(derefChain) and + strippedType = this.getComplexStrippedType(strippedTypePath, derefChain, true) and + this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChain, true) ) } @@ -1215,28 +1215,26 @@ private module MethodResolution { * as long as the method cannot be resolved in an earlier candidate type, and possibly * applying a borrow at the end. * - * The string `derefChainBorrow` encodes the sequence of dereferences and whether a - * borrow has been applied. + * The string `derefChain` encodes the sequence of dereferences, and `borrows` indicates + * whether a borrow has been applied. * * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers */ pragma[nomagic] - Type getACandidateReceiverTypeAt(TypePath path, string derefChainBorrow) { - exists(string derefChain | - result = this.getACandidateReceiverTypeAtNoBorrow(path, derefChain) and - derefChainBorrow = derefChain + ";" + Type getACandidateReceiverTypeAt(TypePath path, string derefChain, boolean borrow) { + result = this.getACandidateReceiverTypeAtNoBorrow(path, derefChain) and + borrow = false + or + this.supportsAutoDerefAndBorrow() and + this.hasNoCompatibleTargetNoBorrow(derefChain) and + borrow = true and + ( + path.isEmpty() and + result = TRefType() or - this.supportsAutoDerefAndBorrow() and - this.hasNoCompatibleTargetNoBorrow(derefChain, _) and - derefChainBorrow = derefChain + ";borrow" and - ( - path.isEmpty() and - result = TRefType() - or - exists(TypePath suffix | - result = this.getACandidateReceiverTypeAtNoBorrow(suffix, derefChain) and - path = TypePath::cons(TRefTypeParameter(), suffix) - ) + exists(TypePath suffix | + result = this.getACandidateReceiverTypeAtNoBorrow(suffix, derefChain) and + path = TypePath::cons(TRefTypeParameter(), suffix) ) ) } @@ -1244,23 +1242,23 @@ private module MethodResolution { /** * Gets a method that this call resolves to after having applied a sequence of * dereferences and possibly a borrow on the receiver type, encoded in the string - * `derefChainBorrow`. + * `derefChain` and the Boolean `borrow`. */ pragma[nomagic] - Method resolveCallTarget(string derefChainBorrow) { + Method resolveCallTarget(string derefChain, boolean borrow) { exists(MethodCallCand mcc | - mcc = MkMethodCallCand(this, derefChainBorrow) and + mcc = MkMethodCallCand(this, derefChain, borrow) and result = mcc.resolveCallTarget() ) } predicate receiverHasImplicitDeref(AstNode receiver) { - exists(this.resolveCallTarget(".ref;")) and + exists(this.resolveCallTarget(".ref", false)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } predicate receiverHasImplicitBorrow(AstNode receiver) { - exists(this.resolveCallTarget(";borrow")) and + exists(this.resolveCallTarget("", true)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } } @@ -1382,28 +1380,31 @@ private module MethodResolution { } private newtype TMethodCallCand = - MkMethodCallCand(MethodCall mc, string derefChainBorrow) { - exists(mc.getACandidateReceiverTypeAt(_, derefChainBorrow)) + MkMethodCallCand(MethodCall mc, string derefChain, boolean borrow) { + exists(mc.getACandidateReceiverTypeAt(_, derefChain, borrow)) } /** A method call tagged with a candidate receiver type. */ private class MethodCallCand extends MkMethodCallCand { MethodCall mc_; - string derefChainBorrow; + string derefChain; + boolean borrow; - MethodCallCand() { this = MkMethodCallCand(mc_, derefChainBorrow) } + MethodCallCand() { this = MkMethodCallCand(mc_, derefChain, borrow) } MethodCall getMethodCall() { result = mc_ } Type getTypeAt(TypePath path) { - result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(path, derefChainBorrow) + result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(path, derefChain, borrow) } pragma[nomagic] predicate hasNoCompatibleTarget() { - mc_.hasNoCompatibleTarget(_, derefChainBorrow) + mc_.hasNoCompatibleTargetBorrow(derefChain) and + borrow = true or - mc_.hasNoCompatibleTargetNoBorrow(_, derefChainBorrow) + mc_.hasNoCompatibleTargetNoBorrow(derefChain) and + borrow = false } pragma[nomagic] @@ -1470,18 +1471,18 @@ private module MethodResolution { Method resolveCallTarget() { exists(ImplOrTraitItemNode i | result = this.resolveCallTargetCand(i) and - not exists(FunctionTypePosition pos | + not exists(FunctionPosition pos | FunctionOverloading::functionResolutionDependsOnArgument(i, _, pos, _, _) and - pos.isPositional() + pos.isPosition() ) ) or MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) } - predicate hasNoBorrow() { not derefChainBorrow = any(string s) + ";borrow" } + predicate hasNoBorrow() { borrow = false } - string toString() { result = mc_.toString() + " [" + derefChainBorrow + "]" } + string toString() { result = mc_.toString() + " [" + derefChain + "; " + borrow + "]" } Location getLocation() { result = mc_.getLocation() } } @@ -1583,7 +1584,7 @@ private module MethodResolution { then // inherent methods take precedence over trait methods, so only allow // trait methods when there are no matching inherent methods - MkMethodCallCand(ce, _).(MethodCallCand).hasNoInherentTarget() + MkMethodCallCand(ce, _, _).(MethodCallCand).hasNoInherentTarget() else any() } @@ -1624,11 +1625,9 @@ private module MethodResolution { * types of parameters, when needed to disambiguate the call. */ private module MethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { - predicate toCheck( - ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t - ) { + predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t) { exists(TypePath path, Type t0 | - pos.isPositional() and + pos.isPosition() and FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, path, t0) and t.appliesTo(f, pos, i) and // for now, we do not handle ambiguous targets when one of the types it iself @@ -1639,7 +1638,7 @@ private module MethodResolution { } class Call extends MethodCallCand { - Type getArgType(FunctionTypePosition pos, TypePath path) { + Type getArgType(FunctionPosition pos, TypePath path) { result = inferType(mc_.getNodeAt(pos), path) } @@ -1658,7 +1657,7 @@ private module MethodResolution { * like `foo.bar(baz)`. */ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSig { - import FunctionTypePositionMatchingInput + import FunctionPositionMatchingInput final class Declaration extends Function { TypeParameter getTypeParameter(TypeParameterPosition ppos) { @@ -1681,7 +1680,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(Param p, int i | p = this.getParam(i) and - i = dpos.asPositional() and + i = dpos.asPosition() and result = p.getTypeRepr().(TypeMention).resolveTypeAt(path) ) or @@ -1720,6 +1719,13 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi class AccessEnvironment = string; + bindingset[derefChain, borrow] + private AccessEnvironment encodeDerefChainBorrow(string derefChain, boolean borrow) { + exists(string suffix | if borrow = true then suffix = "borrow" else suffix = "" | + result = derefChain + ";" + suffix + ) + } + final private class MethodCallFinal = MethodResolution::MethodCall; class Access extends MethodCallFinal { @@ -1739,8 +1745,8 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi } pragma[nomagic] - private Type getInferredSelfType(string derefChainBorrow, TypePath path) { - result = this.getACandidateReceiverTypeAt(path, derefChainBorrow) + private Type getInferredSelfType(string derefChain, boolean borrow, TypePath path) { + result = this.getACandidateReceiverTypeAt(path, derefChain, borrow) } pragma[nomagic] @@ -1764,17 +1770,22 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi ) } - pragma[nomagic] + bindingset[derefChainBorrow] Type getInferredType(string derefChainBorrow, AccessPosition apos, TypePath path) { - apos.isSelf() and - result = this.getInferredSelfType(derefChainBorrow, path) + exists(string derefChain, boolean borrow | + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + apos.isSelf() and + result = this.getInferredSelfType(derefChain, borrow, path) + ) or - result = this.getInferredNonSelfType(apos, path) and - exists(this.getTarget(derefChainBorrow)) + result = this.getInferredNonSelfType(apos, path) } Declaration getTarget(string derefChainBorrow) { - result = this.resolveCallTarget(derefChainBorrow) // mutual recursion; resolving method calls requires resolving types and vice versa + exists(string derefChain, boolean borrow | + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + result = this.resolveCallTarget(derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + ) } } } @@ -1847,11 +1858,11 @@ private module NonMethodResolution { */ pragma[nomagic] private predicate traitFunctionDependsOnArgument( - TraitItemNode trait, NonMethodFunction traitFunction, FunctionTypePosition pos, Type type, + TraitItemNode trait, NonMethodFunction traitFunction, FunctionPosition pos, Type type, ImplItemNode impl, NonMethodFunction implFunction ) { exists(TypePath path | - assocFunctionTypeAtPath(implFunction, impl, pos, path, type) and + assocFunctionTypeAt(implFunction, impl, pos, path, type) and implFunction.implements(traitFunction) and FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, _) | @@ -1859,7 +1870,7 @@ private module NonMethodResolution { or // We only check that the context of the call provides relevant type information // when no argument can - not exists(FunctionTypePosition pos0 | + not exists(FunctionPosition pos0 | FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos0, _, _) or FunctionOverloading::functionResolutionDependsOnArgument(impl, implFunction, pos0, _, _) | @@ -1871,7 +1882,7 @@ private module NonMethodResolution { pragma[nomagic] private predicate functionInfoBlanketRelevantPos( NonMethodFunction f, string name, int arity, ImplItemNode impl, Trait trait, - FunctionTypePosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam + FunctionPosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam ) { functionInfoBlanket(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and ( @@ -1879,7 +1890,7 @@ private module NonMethodResolution { or // We only check that the context of the call provides relevant type information // when no argument can - not exists(FunctionTypePosition pos0 | + not exists(FunctionPosition pos0 | functionInfoBlanket(f, name, arity, impl, trait, pos0, _, _, _) and not pos0.isReturn() ) @@ -1946,19 +1957,19 @@ private module NonMethodResolution { result = this.resolveCallTargetBlanketCand(i) } - AstNode getNodeAt(FunctionTypePosition pos) { - result = this.getArg(pos.asPositional()) + AstNode getNodeAt(FunctionPosition pos) { + result = this.getArg(pos.asPosition()) or result = this and pos.isReturn() } - Type getTypeAt(FunctionTypePosition pos, TypePath path) { + Type getTypeAt(FunctionPosition pos, TypePath path) { result = inferType(this.getNodeAt(pos), path) } pragma[nomagic] predicate resolveCallTargetBlanketCandidate( - ImplItemNode impl, FunctionTypePosition pos, TypePath blanketPath, TypeParam blanketTypeParam + ImplItemNode impl, FunctionPosition pos, TypePath blanketPath, TypeParam blanketTypeParam ) { exists(string name, int arity, Trait trait, AssocFunctionType t | this.hasNameAndArity(name, arity) and @@ -1999,14 +2010,14 @@ private module NonMethodResolution { } private newtype TCallAndBlanketPos = - MkCallAndBlanketPos(NonMethodCall fc, FunctionTypePosition pos) { + MkCallAndBlanketPos(NonMethodCall fc, FunctionPosition pos) { fc.resolveCallTargetBlanketCandidate(_, pos, _, _) } /** A call tagged with a position. */ private class CallAndBlanketPos extends MkCallAndBlanketPos { NonMethodCall fc; - FunctionTypePosition pos; + FunctionPosition pos; CallAndBlanketPos() { this = MkCallAndBlanketPos(fc, pos) } @@ -2024,7 +2035,7 @@ private module NonMethodResolution { predicate hasBlanketCandidate( CallAndBlanketPos fcp, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam ) { - exists(NonMethodCall fc, FunctionTypePosition pos | + exists(NonMethodCall fc, FunctionPosition pos | fcp = MkCallAndBlanketPos(fc, pos) and fc.resolveCallTargetBlanketCandidate(impl, pos, blanketPath, blanketTypeParam) ) @@ -2046,7 +2057,7 @@ private module NonMethodResolution { predicate potentialInstantiationOf( CallAndBlanketPos fcp, TypeAbstraction abs, AssocFunctionType constraint ) { - exists(FunctionTypePosition pos | + exists(FunctionPosition pos | ArgSatisfiesBlanketConstraint::satisfiesBlanketConstraint(fcp, abs) and fcp = MkCallAndBlanketPos(_, pos) and functionInfoBlanketRelevantPos(_, _, _, abs, _, pos, constraint, _, _) @@ -2062,9 +2073,7 @@ private module NonMethodResolution { ArgIsInstantiationOf; private module NonMethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { - predicate toCheck( - ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t - ) { + predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t) { t.appliesTo(f, pos, i) and ( exists(Type t0 | @@ -2087,7 +2096,7 @@ private module NonMethodResolution { } class Call extends NonMethodCall { - Type getArgType(FunctionTypePosition pos, TypePath path) { + Type getArgType(FunctionPosition pos, TypePath path) { result = inferType(this.getNodeAt(pos), path) } @@ -2117,7 +2126,7 @@ private module NonMethodResolution { * `foo::bar(baz)` where the target is not a method. */ private module NonMethodCallMatchingInput implements MatchingInputSig { - import FunctionTypePositionMatchingInput + import FunctionPositionMatchingInput abstract class Declaration extends AstNode { abstract TypeParameter getTypeParameter(TypeParameterPosition ppos); @@ -2154,7 +2163,7 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { override Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(int pos | result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and - pos = dpos.asPositional() + pos = dpos.asPosition() ) } @@ -2177,7 +2186,7 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { override Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(int pos | result = this.getTupleField(pos).getTypeRepr().(TypeMention).resolveTypeAt(path) and - pos = dpos.asPositional() + pos = dpos.asPosition() ) } @@ -2221,7 +2230,7 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { result = resolveImplOrTraitType(i, path) ) or - exists(FunctionTypePosition fpos | + exists(FunctionPosition fpos | result = MethodCallMatchingInput::Declaration.super.getParameterType(fpos, path) and dpos = fpos.getFunctionCallAdjusted(this) ) @@ -2267,7 +2276,7 @@ private Type inferNonMethodCallType(AstNode n, TypePath path) { */ private module OperationMatchingInput implements MatchingInputSig { private import codeql.rust.elements.internal.OperationImpl as OperationImpl - import FunctionTypePositionMatchingInput + import FunctionPositionMatchingInput class Declaration extends MethodCallMatchingInput::Declaration { private Method getSelfOrImpl() { @@ -2284,7 +2293,7 @@ private module OperationMatchingInput implements MatchingInputSig { exists(int borrows | OperationImpl::isOverloaded(_, _, path, method, borrows) | pos.isSelf() and borrows >= 1 or - pos.asPositional() = 0 and + pos.asPosition() = 0 and borrows >= 2 ) ) @@ -2326,7 +2335,7 @@ private module OperationMatchingInput implements MatchingInputSig { } Declaration getTarget() { - result = this.resolveCallTarget(_) // mutual recursion + result = this.resolveCallTarget(_, _) // mutual recursion } } } @@ -2760,7 +2769,7 @@ private Type inferStructPatType(AstNode n, TypePath path) { * like `let Some(x) = ...`. */ private module TupleStructPatMatchingInput implements MatchingInputSig { - import FunctionTypePositionMatchingInput + import FunctionPositionMatchingInput class Declaration = NonMethodCallMatchingInput::TupleDeclaration; @@ -2768,7 +2777,7 @@ private module TupleStructPatMatchingInput implements MatchingInputSig { Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } AstNode getNodeAt(AccessPosition apos) { - result = this.getField(apos.asPositional()) + result = this.getField(apos.asPosition()) or result = this and apos.isSelf() @@ -2987,7 +2996,7 @@ private module Cached { /** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */ cached Addressable resolveCallTarget(Call call) { - result = call.(MethodResolution::MethodCall).resolveCallTarget(_) + result = call.(MethodResolution::MethodCall).resolveCallTarget(_, _) or result = call.(NonMethodResolution::NonMethodCall).resolveCallTarget() } diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 0b669ad4015..d015a0bf656 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -9,6 +9,7 @@ private import TypeInference /** An AST node that may mention a type. */ abstract class TypeMention extends AstNode { /** Gets the type at `path` that this mention resolves to, if any. */ + pragma[nomagic] abstract Type resolveTypeAt(TypePath path); /** Gets the type that this node resolves to, if any. */ @@ -93,7 +94,6 @@ class AliasPathTypeMention extends PathTypeMention { * Holds if this path resolved to a type alias with a rhs. that has the * resulting type at `typePath`. */ - pragma[nomagic] override Type resolveTypeAt(TypePath typePath) { result = rhs.resolveTypeAt(typePath) and not result = pathGetTypeParameter(resolved, _) @@ -245,7 +245,7 @@ class NonAliasPathTypeMention extends PathTypeMention { } pragma[nomagic] -private Type resolveImplSelfType(Impl i, TypePath path) { +private Type resolveImplSelfTypeAt(Impl i, TypePath path) { result = i.getSelfTy().(TypeMention).resolveTypeAt(path) } @@ -254,7 +254,7 @@ class ImplSelfMention extends PathTypeMention { ImplSelfMention() { this = impl.getASelfPath() } - override Type resolveTypeAt(TypePath typePath) { result = resolveImplSelfType(impl, typePath) } + override Type resolveTypeAt(TypePath typePath) { result = resolveImplSelfTypeAt(impl, typePath) } } class PathTypeReprMention extends TypeMention, PathTypeRepr { @@ -334,17 +334,14 @@ class SelfTypeParameterMention extends TypeMention instanceof Name { */ pragma[nomagic] Type resolveImplOrTraitType(ImplOrTraitItemNode i, TypePath path) { - result = resolveImplSelfType(i, path) + result = resolveImplSelfTypeAt(i, path) or result = TSelfTypeParameter(i) and path.isEmpty() } pragma[nomagic] private ImplOrTraitItemNode getSelfParamEnclosingImplOrTrait(SelfParam self) { - exists(Function f | - f = result.getAnAssocItem() and - self = f.getSelfParam() - ) + self = result.getAnAssocItem().(Function).getSelfParam() } /** @@ -360,34 +357,30 @@ class ShorthandSelfParameterMention extends TypeMention instanceof SelfParam { not super.hasTypeRepr() and encl = getSelfParamEnclosingImplOrTrait(this) and ( - encl instanceof Trait + not encl instanceof Impl or - // avoid generating a type mention if the type being implemented cannot be resolved + // avoid generating a type mention if the type being implemented does not have a type mention encl.(Impl).getSelfTy() instanceof TypeMention ) } - pragma[nomagic] private Type resolveSelfType(TypePath path) { result = resolveImplOrTraitType(encl, path) } - pragma[nomagic] - private Type inferImplicitSelfType(TypePath path) { + override Type resolveTypeAt(TypePath typePath) { if super.isRef() then // `fn f(&self, ...)` - path.isEmpty() and + typePath.isEmpty() and result = TRefType() or exists(TypePath suffix | result = this.resolveSelfType(suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + typePath = TypePath::cons(TRefTypeParameter(), suffix) ) else // `fn f(self, ...)` - result = this.resolveSelfType(path) + result = this.resolveSelfType(typePath) } - - override Type resolveTypeAt(TypePath typePath) { result = this.inferImplicitSelfType(typePath) } } pragma[nomagic] diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index 416f2a1b2d0..6548ed9e065 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -1,8 +1,8 @@ /** * Provides logic for identifying functions that are overloaded based on their - * argument types. While Rust does not allow for overloading inside a single + * non-`self` parameter types. While Rust does not allow for overloading inside a single * `impl` block, it is still possible for a trait to have multiple implementations - * that differ only in the types of non-`self` arguments. + * that differ only in the types of non-`self` parameters. */ private import rust @@ -75,11 +75,11 @@ private predicate implHasSibling(Impl impl, Trait trait) { implSiblings(trait, i bindingset[trait] pragma[inline_late] predicate traitTypeParameterOccurrence( - TraitItemNode trait, Function f, string functionName, FunctionTypePosition pos, TypePath path, + TraitItemNode trait, Function f, string functionName, FunctionPosition pos, TypePath path, TypeParameter tp ) { f = trait.getASuccessor(functionName) and - assocFunctionTypeAtPath(f, trait, pos, path, tp) and + assocFunctionTypeAt(f, trait, pos, path, tp) and tp = trait.(TraitTypeAbstraction).getATypeParameter() } @@ -90,7 +90,7 @@ predicate traitTypeParameterOccurrence( */ pragma[nomagic] predicate functionResolutionDependsOnArgument( - ImplItemNode impl, Function f, FunctionTypePosition pos, TypePath path, Type type + ImplItemNode impl, Function f, FunctionPosition pos, TypePath path, Type type ) { /* * As seen in the example below, when an implementation has a sibling for a @@ -120,7 +120,7 @@ predicate functionResolutionDependsOnArgument( exists(TraitItemNode trait, string functionName | implHasSibling(impl, trait) and traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and - assocFunctionTypeAtPath(f, impl, pos, path, type) and + assocFunctionTypeAt(f, impl, pos, path, type) and f = impl.getASuccessor(functionName) and not pos.isReturn() ) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index b203cafbd94..ceac4cbc590 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -5,37 +5,37 @@ private import codeql.rust.internal.Type private import codeql.rust.internal.TypeMention private import codeql.rust.elements.Call -private newtype TFunctionTypePosition = - TArgumentFunctionTypePosition(ArgumentPosition pos) or - TReturnFunctionTypePosition() +private newtype TFunctionPosition = + TArgumentFunctionPosition(ArgumentPosition pos) or + TReturnFunctionPosition() /** * A position of a type related to a function. * * Either `self`, `return`, or a positional parameter index. */ -class FunctionTypePosition extends TFunctionTypePosition { +class FunctionPosition extends TFunctionPosition { predicate isSelf() { this.asArgumentPosition().isSelf() } - int asPositional() { result = this.asArgumentPosition().asPosition() } + int asPosition() { result = this.asArgumentPosition().asPosition() } - predicate isPositional() { exists(this.asPositional()) } + predicate isPosition() { exists(this.asPosition()) } - ArgumentPosition asArgumentPosition() { this = TArgumentFunctionTypePosition(result) } + ArgumentPosition asArgumentPosition() { this = TArgumentFunctionPosition(result) } - predicate isReturn() { this = TReturnFunctionTypePosition() } + predicate isReturn() { this = TReturnFunctionPosition() } /** Gets the corresponding position when `f` is invoked via a function call. */ bindingset[f] - FunctionTypePosition getFunctionCallAdjusted(Function f) { + FunctionPosition getFunctionCallAdjusted(Function f) { this.isReturn() and result = this or if f.hasSelfParam() then - this.isSelf() and result.asPositional() = 0 + this.isSelf() and result.asPosition() = 0 or - result.asPositional() = this.asPositional() + 1 + result.asPosition() = this.asPosition() + 1 else result = this } @@ -43,7 +43,7 @@ class FunctionTypePosition extends TFunctionTypePosition { this.isSelf() and result = getSelfParamTypeMention(f.getSelfParam()) or - result = f.getParam(this.asPositional()).getTypeRepr() + result = f.getParam(this.asPosition()).getTypeRepr() or this.isReturn() and result = f.getRetType().getTypeRepr() @@ -59,10 +59,10 @@ class FunctionTypePosition extends TFunctionTypePosition { /** * A helper module for implementing `Matching(WithEnvironment)InputSig` with - * `DeclarationPosition = AccessPosition = FunctionTypePosition`. + * `DeclarationPosition = AccessPosition = FunctionPosition`. */ -module FunctionTypePositionMatchingInput { - class DeclarationPosition = FunctionTypePosition; +module FunctionPositionMatchingInput { + class DeclarationPosition = FunctionPosition; class AccessPosition = DeclarationPosition; @@ -72,12 +72,12 @@ module FunctionTypePositionMatchingInput { } private newtype TAssocFunctionType = - MkAssocFunctionType(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + MkAssocFunctionType(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { f = i.getAnAssocItem() and exists(pos.getTypeMention(f)) } or MkInheritedAssocFunctionType( - Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, ImplOrTraitItemNode i ) { exists(AssocFunctionType inherited | @@ -127,12 +127,12 @@ private newtype TAssocFunctionType = * `self5` | `impl T2 for X` | `X` */ class AssocFunctionType extends TAssocFunctionType { - private predicate isFunctionType(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + private predicate isFunctionType(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { this = MkAssocFunctionType(f, pos, i) } private predicate isInheritedFunctionType( - Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, ImplOrTraitItemNode i ) { this = MkInheritedAssocFunctionType(f, pos, parentMention, parent, i) @@ -142,7 +142,7 @@ class AssocFunctionType extends TAssocFunctionType { * Holds if this function type applies to the function `f` at position `pos`, * when viewed as a member of the `impl` or trait item `i`. */ - predicate appliesTo(Function f, FunctionTypePosition pos, ImplOrTraitItemNode i) { + predicate appliesTo(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { this.isFunctionType(f, pos, i) or this.isInheritedFunctionType(f, pos, _, _, i) @@ -151,13 +151,13 @@ class AssocFunctionType extends TAssocFunctionType { /** Gets the type at the given path. */ pragma[nomagic] Type getDeclaredTypeAt(TypePath path) { - exists(Function f, FunctionTypePosition pos | + exists(Function f, FunctionPosition pos | this.isFunctionType(f, pos, _) and result = pos.getTypeMention(f).resolveTypeAt(path) ) or exists( - Function f, FunctionTypePosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, AssocFunctionType parentType, ImplOrTraitItemNode i | this.isInheritedFunctionType(f, pos, parentMention, parent, i) and @@ -171,7 +171,7 @@ class AssocFunctionType extends TAssocFunctionType { result = resolveImplOrTraitType(i, suffix) or exists(TypeParameter tp | - parentType.hasTypeParameterAt(prefix, tp) and + tp = parentType.getTypeParameterAt(prefix) and result = parentMention.resolveTypeAt(TypePath::singleton(tp).appendInverse(suffix)) ) ) @@ -179,19 +179,17 @@ class AssocFunctionType extends TAssocFunctionType { } pragma[nomagic] - private predicate hasTypeParameterAt(TypePath path, TypeParameter tp) { - this.getDeclaredTypeAt(path) = tp - } + private TypeParameter getTypeParameterAt(TypePath path) { result = this.getDeclaredTypeAt(path) } pragma[nomagic] private predicate hasSelfTypeParameterAt(TypePath path) { - this.hasTypeParameterAt(path, TSelfTypeParameter(_)) + this.getTypeParameterAt(path) = TSelfTypeParameter(_) } /** * Gets the type at the given path. * - * For functions belonging to a `trait`, we use the type of the trait itself instead + * For functions belonging to a trait, we use the type of the trait itself instead * of the implicit `Self` type parameter, as otherwise any type will match. * * Calls should use `substituteLookupTraits` to map receiver types to the relevant @@ -206,26 +204,16 @@ class AssocFunctionType extends TAssocFunctionType { ) } - private AstNode getReportingNode() { - exists(Function f, FunctionTypePosition pos | this.appliesTo(f, pos, _) | - pos.isSelf() and - exists(SelfParam self | self = f.getSelfParam() | - result = self.getTypeRepr() - or - not self.hasTypeRepr() and - result = self - ) - or - result = f.getParam(pos.asPositional()).getTypeRepr() - or - pos.isReturn() and - result = f.getRetType().getTypeRepr() + private TypeMention getTypeMention() { + exists(Function f, FunctionPosition pos | + this.appliesTo(f, pos, _) and + result = pos.getTypeMention(f) ) } - string toString() { result = this.getReportingNode().toString() } + string toString() { result = this.getTypeMention().toString() } - Location getLocation() { result = this.getReportingNode().getLocation() } + Location getLocation() { result = this.getTypeMention().getLocation() } } /** @@ -233,8 +221,8 @@ class AssocFunctionType extends TAssocFunctionType { * `i` is `type`. */ pragma[nomagic] -predicate assocFunctionTypeAtPath( - Function f, ImplOrTraitItemNode i, FunctionTypePosition pos, TypePath path, Type type +predicate assocFunctionTypeAt( + Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path, Type type ) { exists(AssocFunctionType aft | aft.appliesTo(f, pos, i) and @@ -313,7 +301,7 @@ signature module ArgsAreInstantiationsOfInputSig { * Holds if types need to be matched against the type `t` at position `pos` of * `f` inside `i`. */ - predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, AssocFunctionType t); + predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t); /** A call whose argument types are to be checked. */ class Call { @@ -321,7 +309,7 @@ signature module ArgsAreInstantiationsOfInputSig { Location getLocation(); - Type getArgType(FunctionTypePosition pos, TypePath path); + Type getArgType(FunctionPosition pos, TypePath path); predicate hasTargetCand(ImplOrTraitItemNode i, Function f); } @@ -334,15 +322,13 @@ signature module ArgsAreInstantiationsOfInputSig { */ module ArgsAreInstantiationsOf { pragma[nomagic] - private predicate toCheckRanked( - ImplOrTraitItemNode i, Function f, FunctionTypePosition pos, int rnk - ) { + private predicate toCheckRanked(ImplOrTraitItemNode i, Function f, FunctionPosition pos, int rnk) { Input::toCheck(i, f, pos, _) and pos = - rank[rnk + 1](FunctionTypePosition pos0, int j | + rank[rnk + 1](FunctionPosition pos0, int j | Input::toCheck(i, f, pos0, _) and ( - j = pos0.asPositional() + j = pos0.asPosition() or pos0.isSelf() and j = -1 or @@ -354,18 +340,18 @@ module ArgsAreInstantiationsOf { } private newtype TCallAndPos = - MkCallAndPos(Input::Call call, FunctionTypePosition pos) { exists(call.getArgType(pos, _)) } + MkCallAndPos(Input::Call call, FunctionPosition pos) { exists(call.getArgType(pos, _)) } /** A call tagged with a position. */ private class CallAndPos extends MkCallAndPos { Input::Call call; - FunctionTypePosition pos; + FunctionPosition pos; CallAndPos() { this = MkCallAndPos(call, pos) } Input::Call getCall() { result = call } - FunctionTypePosition getPos() { result = pos } + FunctionPosition getPos() { result = pos } Location getLocation() { result = call.getLocation() } @@ -379,7 +365,7 @@ module ArgsAreInstantiationsOf { { pragma[nomagic] private predicate potentialInstantiationOf0( - CallAndPos cp, Input::Call call, FunctionTypePosition pos, int rnk, Function f, + CallAndPos cp, Input::Call call, FunctionPosition pos, int rnk, Function f, TypeAbstraction abs, AssocFunctionType constraint ) { cp = MkCallAndPos(call, pos) and @@ -413,7 +399,7 @@ module ArgsAreInstantiationsOf { private predicate argsAreInstantiationsOfFromIndex( Input::Call call, ImplOrTraitItemNode i, Function f, int rnk ) { - exists(FunctionTypePosition pos | + exists(FunctionPosition pos | ArgIsInstantiationOfFromIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and call.hasTargetCand(i, f) and toCheckRanked(i, f, pos, rnk) diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 855912de1f5..ff9ccf3c192 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1118,6 +1118,7 @@ module Make1 Input1> { * For example, if this access is the method call `M(42)`, then the inferred * type at argument position `0` is `int`. */ + bindingset[e] Type getInferredType(AccessEnvironment e, AccessPosition apos, TypePath path); /** Gets the declaration that this access targets in environment `e`. */ From 5550da4870a116c69a1fcb0d9b3322fbb12c35bc Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 21 Oct 2025 20:53:39 +0200 Subject: [PATCH 237/965] Address review comments (ii) --- .../codeql/rust/internal/TypeInference.qll | 90 +++++++++---------- .../typeinference/FunctionOverloading.qll | 2 +- 2 files changed, 45 insertions(+), 47 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index b5e0dbe7df4..c85a670e521 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1107,14 +1107,14 @@ private module MethodResolution { * Same as `getACandidateReceiverTypeAt`, but without borrows. */ pragma[nomagic] - private Type getACandidateReceiverTypeAtNoBorrow(TypePath path, string derefChain) { + private Type getACandidateReceiverTypeAtNoBorrow(string derefChain, TypePath path) { result = this.getReceiverTypeAt(path) and derefChain = "" or this.supportsAutoDerefAndBorrow() and exists(TypePath path0, Type t0, string derefChain0 | this.hasNoCompatibleTargetBorrow(derefChain0) and - t0 = this.getACandidateReceiverTypeAtNoBorrow(path0, derefChain0) + t0 = this.getACandidateReceiverTypeAtNoBorrow(derefChain0, path0) | path0.isCons(TRefTypeParameter(), path) and result = t0 and @@ -1149,21 +1149,21 @@ private module MethodResolution { */ pragma[nomagic] Type getACandidateReceiverTypeAtSubstituteLookupTraits( - TypePath path, string derefChain, boolean borrow + string derefChain, boolean borrow, TypePath path ) { - result = substituteLookupTraits(this.getACandidateReceiverTypeAt(path, derefChain, borrow)) + result = substituteLookupTraits(this.getACandidateReceiverTypeAt(derefChain, borrow, path)) } pragma[nomagic] - private Type getComplexStrippedType(TypePath strippedTypePath, string derefChain, boolean borrow) { + private Type getComplexStrippedType(string derefChain, boolean borrow, TypePath strippedTypePath) { result = - this.getACandidateReceiverTypeAtSubstituteLookupTraits(strippedTypePath, derefChain, borrow) and + this.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, strippedTypePath) and isComplexRootStripped(strippedTypePath, result) } bindingset[strippedTypePath, strippedType, derefChain, borrow] private predicate hasNoCompatibleTargetCheck( - TypePath strippedTypePath, Type strippedType, string derefChain, boolean borrow + string derefChain, boolean borrow, TypePath strippedTypePath, Type strippedType ) { // todo: also check that all blanket implementation candidates are incompatible forall(ImplOrTraitItemNode i | @@ -1190,8 +1190,8 @@ private module MethodResolution { ) and exists(TypePath strippedTypePath, Type strippedType | not derefChain.matches("%.ref") and // no need to try a borrow if the last thing we did was a deref - strippedType = this.getComplexStrippedType(strippedTypePath, derefChain, false) and - this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChain, false) + strippedType = this.getComplexStrippedType(derefChain, false, strippedTypePath) and + this.hasNoCompatibleTargetCheck(derefChain, false, strippedTypePath, strippedType) ) } @@ -1203,8 +1203,8 @@ private module MethodResolution { predicate hasNoCompatibleTargetBorrow(string derefChain) { exists(TypePath strippedTypePath, Type strippedType | this.hasNoCompatibleTargetNoBorrow(derefChain) and - strippedType = this.getComplexStrippedType(strippedTypePath, derefChain, true) and - this.hasNoCompatibleTargetCheck(strippedTypePath, strippedType, derefChain, true) + strippedType = this.getComplexStrippedType(derefChain, true, strippedTypePath) and + this.hasNoCompatibleTargetCheck(derefChain, true, strippedTypePath, strippedType) ) } @@ -1221,8 +1221,8 @@ private module MethodResolution { * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers */ pragma[nomagic] - Type getACandidateReceiverTypeAt(TypePath path, string derefChain, boolean borrow) { - result = this.getACandidateReceiverTypeAtNoBorrow(path, derefChain) and + Type getACandidateReceiverTypeAt(string derefChain, boolean borrow, TypePath path) { + result = this.getACandidateReceiverTypeAtNoBorrow(derefChain, path) and borrow = false or this.supportsAutoDerefAndBorrow() and @@ -1233,7 +1233,7 @@ private module MethodResolution { result = TRefType() or exists(TypePath suffix | - result = this.getACandidateReceiverTypeAtNoBorrow(suffix, derefChain) and + result = this.getACandidateReceiverTypeAtNoBorrow(derefChain, suffix) and path = TypePath::cons(TRefTypeParameter(), suffix) ) ) @@ -1381,7 +1381,7 @@ private module MethodResolution { private newtype TMethodCallCand = MkMethodCallCand(MethodCall mc, string derefChain, boolean borrow) { - exists(mc.getACandidateReceiverTypeAt(_, derefChain, borrow)) + exists(mc.getACandidateReceiverTypeAt(derefChain, borrow, _)) } /** A method call tagged with a candidate receiver type. */ @@ -1395,7 +1395,7 @@ private module MethodResolution { MethodCall getMethodCall() { result = mc_ } Type getTypeAt(TypePath path) { - result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(path, derefChain, borrow) + result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) } pragma[nomagic] @@ -1418,7 +1418,7 @@ private module MethodResolution { } /** - * Holds if the inherent method inside `i` with matching name and arity can be + * Holds if the inherent method inside `impl` with matching name and arity can be * ruled out as a candidate for this call. */ pragma[nomagic] @@ -1471,10 +1471,7 @@ private module MethodResolution { Method resolveCallTarget() { exists(ImplOrTraitItemNode i | result = this.resolveCallTargetCand(i) and - not exists(FunctionPosition pos | - FunctionOverloading::functionResolutionDependsOnArgument(i, _, pos, _, _) and - pos.isPosition() - ) + not FunctionOverloading::functionResolutionDependsOnArgument(i, _, _, _, _) ) or MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) @@ -1627,7 +1624,6 @@ private module MethodResolution { private module MethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t) { exists(TypePath path, Type t0 | - pos.isPosition() and FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, path, t0) and t.appliesTo(f, pos, i) and // for now, we do not handle ambiguous targets when one of the types it iself @@ -1746,7 +1742,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi pragma[nomagic] private Type getInferredSelfType(string derefChain, boolean borrow, TypePath path) { - result = this.getACandidateReceiverTypeAt(path, derefChain, borrow) + result = this.getACandidateReceiverTypeAt(derefChain, borrow, path) } pragma[nomagic] @@ -1850,14 +1846,14 @@ private module NonMethodResolution { /** * Holds if the associated function `implFunction` at `impl` implements * `traitFunction`, which belongs to `trait`, and resolving the function - * `implFunction` requires inspecting the type of applied _arguments_ at - * position `pos` in order to determine whether it is the correct resolution. + * `implFunction` requires inspecting the type at position `pos` in order + * to determine whether it is the correct resolution. * * `type` is the type at `pos` of `implFunction` which mathces a type parameter of * `traitFunction` at `pos`. */ pragma[nomagic] - private predicate traitFunctionDependsOnArgument( + private predicate traitFunctionDependsOnPos( TraitItemNode trait, NonMethodFunction traitFunction, FunctionPosition pos, Type type, ImplItemNode impl, NonMethodFunction implFunction ) { @@ -1866,16 +1862,17 @@ private module NonMethodResolution { implFunction.implements(traitFunction) and FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, _) | - not pos.isReturn() - or - // We only check that the context of the call provides relevant type information - // when no argument can - not exists(FunctionPosition pos0 | - FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos0, _, _) or - FunctionOverloading::functionResolutionDependsOnArgument(impl, implFunction, pos0, _, _) - | - not pos0.isReturn() - ) + if pos.isReturn() + then + // We only check that the context of the call provides relevant type information + // when no argument can + not exists(FunctionPosition pos0 | + FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos0, _, _) and + not pos0.isReturn() + or + FunctionOverloading::functionResolutionDependsOnArgument(impl, implFunction, pos0, _, _) + ) + else any() ) } @@ -1886,14 +1883,15 @@ private module NonMethodResolution { ) { functionInfoBlanket(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and ( - not pos.isReturn() - or - // We only check that the context of the call provides relevant type information - // when no argument can - not exists(FunctionPosition pos0 | - functionInfoBlanket(f, name, arity, impl, trait, pos0, _, _, _) and - not pos0.isReturn() - ) + if pos.isReturn() + then + // We only check that the context of the call provides relevant type information + // when no argument can + not exists(FunctionPosition pos0 | + functionInfoBlanket(f, name, arity, impl, trait, pos0, _, _, _) and + not pos0.isReturn() + ) + else any() ) } @@ -2084,7 +2082,7 @@ private module NonMethodResolution { | FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, _, t0) or - traitFunctionDependsOnArgument(_, _, pos, t0, i, f) + traitFunctionDependsOnPos(_, _, pos, t0, i, f) ) or // match against the trait function itself @@ -2105,7 +2103,7 @@ private module NonMethodResolution { or exists(TraitItemNode trait, NonMethodFunction resolved, ImplItemNode i1, Function f1 | this.hasTraitResolved(trait, resolved) and - traitFunctionDependsOnArgument(trait, resolved, _, _, i1, f1) + traitFunctionDependsOnPos(trait, resolved, _, _, i1, f1) | f = f1 and i = i1 diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index 6548ed9e065..d8ca50962a1 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -122,6 +122,6 @@ predicate functionResolutionDependsOnArgument( traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and assocFunctionTypeAt(f, impl, pos, path, type) and f = impl.getASuccessor(functionName) and - not pos.isReturn() + pos.isPosition() ) } From a6311300309d31baa5d602043f0f39975e340213 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:31:55 +0100 Subject: [PATCH 238/965] Rust: Split off sources/env test. --- .../dataflow/sources/env/Cargo.lock | 7 + .../dataflow/sources/env/InlineFlow.expected | 163 ++++++++++++++++++ .../dataflow/sources/env/InlineFlow.ql | 36 ++++ .../sources/env/TaintSources.expected | 15 ++ .../dataflow/sources/env/TaintSources.qlref | 2 + .../dataflow/sources/env/options.yml | 1 + .../dataflow/sources/env/test.rs | 68 ++++++++ .../library-tests/dataflow/sources/test.rs | 63 ------- 8 files changed, 292 insertions(+), 63 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/TaintSources.qlref create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/options.yml create mode 100644 rust/ql/test/library-tests/dataflow/sources/env/test.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/env/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/env/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected new file mode 100644 index 00000000000..00821decfdf --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected @@ -0,0 +1,163 @@ +models +| 1 | Source: std::env::args; ReturnValue.Element; commandargs | +| 2 | Source: std::env::args_os; ReturnValue.Element; commandargs | +| 3 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 4 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | +| 5 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | +| 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | +| 7 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | +| 8 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 9 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 10 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 12 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 13 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 14 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +edges +| test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | provenance | Src:MaD:6 | +| test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | provenance | Src:MaD:7 | +| test.rs:9:9:9:12 | var1 | test.rs:12:10:12:13 | var1 | provenance | | +| test.rs:9:16:9:28 | ...::var | test.rs:9:16:9:36 | ...::var(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:12 | +| test.rs:9:16:9:59 | ... .expect(...) | test.rs:9:9:9:12 | var1 | provenance | | +| test.rs:10:9:10:12 | var2 | test.rs:13:10:13:13 | var2 | provenance | | +| test.rs:10:16:10:31 | ...::var_os | test.rs:10:16:10:39 | ...::var_os(...) [Some] | provenance | Src:MaD:7 | +| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:11 | +| test.rs:10:16:10:48 | ... .unwrap() | test.rs:10:9:10:12 | var2 | provenance | | +| test.rs:27:9:27:12 | args [element] | test.rs:28:20:28:23 | args [element] | provenance | | +| test.rs:27:9:27:12 | args [element] | test.rs:29:17:29:20 | args [element] | provenance | | +| test.rs:27:29:27:42 | ...::args | test.rs:27:29:27:44 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:27:29:27:44 | ...::args(...) [element] | test.rs:27:29:27:54 | ... .collect() [element] | provenance | MaD:8 | +| test.rs:27:29:27:54 | ... .collect() [element] | test.rs:27:9:27:12 | args [element] | provenance | | +| test.rs:28:9:28:15 | my_path [&ref] | test.rs:34:10:34:16 | my_path | provenance | | +| test.rs:28:19:28:26 | &... [&ref] | test.rs:28:9:28:15 | my_path [&ref] | provenance | | +| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | | +| test.rs:28:20:28:26 | args[0] | test.rs:28:19:28:26 | &... [&ref] | provenance | | +| test.rs:29:9:29:12 | arg1 [&ref] | test.rs:35:10:35:13 | arg1 | provenance | | +| test.rs:29:16:29:23 | &... [&ref] | test.rs:29:9:29:12 | arg1 [&ref] | provenance | | +| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | | +| test.rs:29:17:29:23 | args[1] | test.rs:29:16:29:23 | &... [&ref] | provenance | | +| test.rs:30:9:30:12 | arg2 | test.rs:36:10:36:13 | arg2 | provenance | | +| test.rs:30:16:30:29 | ...::args | test.rs:30:16:30:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:30:16:30:31 | ...::args(...) [element] | test.rs:30:16:30:38 | ... .nth(...) [Some] | provenance | MaD:9 | +| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:11 | +| test.rs:30:16:30:47 | ... .unwrap() | test.rs:30:9:30:12 | arg2 | provenance | | +| test.rs:31:9:31:12 | arg3 | test.rs:37:10:37:13 | arg3 | provenance | | +| test.rs:31:16:31:32 | ...::args_os | test.rs:31:16:31:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | +| test.rs:31:16:31:34 | ...::args_os(...) [element] | test.rs:31:16:31:41 | ... .nth(...) [Some] | provenance | MaD:9 | +| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:11 | +| test.rs:31:16:31:50 | ... .unwrap() | test.rs:31:9:31:12 | arg3 | provenance | | +| test.rs:32:9:32:12 | arg4 | test.rs:38:10:38:13 | arg4 | provenance | | +| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:9 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:11 | +| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:14 | +| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:13 | +| test.rs:32:16:32:73 | ... .unwrap() | test.rs:32:9:32:12 | arg4 | provenance | | +| test.rs:40:9:40:11 | arg | test.rs:41:14:41:16 | arg | provenance | | +| test.rs:40:16:40:29 | ...::args | test.rs:40:16:40:31 | ...::args(...) [element] | provenance | Src:MaD:1 | +| test.rs:40:16:40:31 | ...::args(...) [element] | test.rs:40:9:40:11 | arg | provenance | | +| test.rs:44:9:44:11 | arg | test.rs:45:14:45:16 | arg | provenance | | +| test.rs:44:16:44:32 | ...::args_os | test.rs:44:16:44:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | +| test.rs:44:16:44:34 | ...::args_os(...) [element] | test.rs:44:9:44:11 | arg | provenance | | +| test.rs:50:9:50:11 | dir | test.rs:54:10:54:12 | dir | provenance | | +| test.rs:50:15:50:35 | ...::current_dir | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:12 | +| test.rs:50:15:50:54 | ... .expect(...) | test.rs:50:9:50:11 | dir | provenance | | +| test.rs:51:9:51:11 | exe | test.rs:55:10:55:12 | exe | provenance | | +| test.rs:51:15:51:35 | ...::current_exe | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:12 | +| test.rs:51:15:51:54 | ... .expect(...) | test.rs:51:9:51:11 | exe | provenance | | +| test.rs:52:9:52:12 | home | test.rs:56:10:56:13 | home | provenance | | +| test.rs:52:16:52:33 | ...::home_dir | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:5 | +| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:10 | +| test.rs:52:16:52:52 | ... .expect(...) | test.rs:52:9:52:12 | home | provenance | | +nodes +| test.rs:6:10:6:22 | ...::var | semmle.label | ...::var | +| test.rs:6:10:6:30 | ...::var(...) | semmle.label | ...::var(...) | +| test.rs:7:10:7:25 | ...::var_os | semmle.label | ...::var_os | +| test.rs:7:10:7:33 | ...::var_os(...) | semmle.label | ...::var_os(...) | +| test.rs:9:9:9:12 | var1 | semmle.label | var1 | +| test.rs:9:16:9:28 | ...::var | semmle.label | ...::var | +| test.rs:9:16:9:36 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| test.rs:9:16:9:59 | ... .expect(...) | semmle.label | ... .expect(...) | +| test.rs:10:9:10:12 | var2 | semmle.label | var2 | +| test.rs:10:16:10:31 | ...::var_os | semmle.label | ...::var_os | +| test.rs:10:16:10:39 | ...::var_os(...) [Some] | semmle.label | ...::var_os(...) [Some] | +| test.rs:10:16:10:48 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:12:10:12:13 | var1 | semmle.label | var1 | +| test.rs:13:10:13:13 | var2 | semmle.label | var2 | +| test.rs:27:9:27:12 | args [element] | semmle.label | args [element] | +| test.rs:27:29:27:42 | ...::args | semmle.label | ...::args | +| test.rs:27:29:27:44 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| test.rs:27:29:27:54 | ... .collect() [element] | semmle.label | ... .collect() [element] | +| test.rs:28:9:28:15 | my_path [&ref] | semmle.label | my_path [&ref] | +| test.rs:28:19:28:26 | &... [&ref] | semmle.label | &... [&ref] | +| test.rs:28:20:28:23 | args [element] | semmle.label | args [element] | +| test.rs:28:20:28:26 | args[0] | semmle.label | args[0] | +| test.rs:29:9:29:12 | arg1 [&ref] | semmle.label | arg1 [&ref] | +| test.rs:29:16:29:23 | &... [&ref] | semmle.label | &... [&ref] | +| test.rs:29:17:29:20 | args [element] | semmle.label | args [element] | +| test.rs:29:17:29:23 | args[1] | semmle.label | args[1] | +| test.rs:30:9:30:12 | arg2 | semmle.label | arg2 | +| test.rs:30:16:30:29 | ...::args | semmle.label | ...::args | +| test.rs:30:16:30:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| test.rs:30:16:30:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| test.rs:30:16:30:47 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:31:9:31:12 | arg3 | semmle.label | arg3 | +| test.rs:31:16:31:32 | ...::args_os | semmle.label | ...::args_os | +| test.rs:31:16:31:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | +| test.rs:31:16:31:41 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| test.rs:31:16:31:50 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:32:9:32:12 | arg4 | semmle.label | arg4 | +| test.rs:32:16:32:29 | ...::args | semmle.label | ...::args | +| test.rs:32:16:32:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| test.rs:32:16:32:47 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:32:16:32:64 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | +| test.rs:32:16:32:73 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:34:10:34:16 | my_path | semmle.label | my_path | +| test.rs:35:10:35:13 | arg1 | semmle.label | arg1 | +| test.rs:36:10:36:13 | arg2 | semmle.label | arg2 | +| test.rs:37:10:37:13 | arg3 | semmle.label | arg3 | +| test.rs:38:10:38:13 | arg4 | semmle.label | arg4 | +| test.rs:40:9:40:11 | arg | semmle.label | arg | +| test.rs:40:16:40:29 | ...::args | semmle.label | ...::args | +| test.rs:40:16:40:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| test.rs:41:14:41:16 | arg | semmle.label | arg | +| test.rs:44:9:44:11 | arg | semmle.label | arg | +| test.rs:44:16:44:32 | ...::args_os | semmle.label | ...::args_os | +| test.rs:44:16:44:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | +| test.rs:45:14:45:16 | arg | semmle.label | arg | +| test.rs:50:9:50:11 | dir | semmle.label | dir | +| test.rs:50:15:50:35 | ...::current_dir | semmle.label | ...::current_dir | +| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | semmle.label | ...::current_dir(...) [Ok] | +| test.rs:50:15:50:54 | ... .expect(...) | semmle.label | ... .expect(...) | +| test.rs:51:9:51:11 | exe | semmle.label | exe | +| test.rs:51:15:51:35 | ...::current_exe | semmle.label | ...::current_exe | +| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | semmle.label | ...::current_exe(...) [Ok] | +| test.rs:51:15:51:54 | ... .expect(...) | semmle.label | ... .expect(...) | +| test.rs:52:9:52:12 | home | semmle.label | home | +| test.rs:52:16:52:33 | ...::home_dir | semmle.label | ...::home_dir | +| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | semmle.label | ...::home_dir(...) [Some] | +| test.rs:52:16:52:52 | ... .expect(...) | semmle.label | ... .expect(...) | +| test.rs:54:10:54:12 | dir | semmle.label | dir | +| test.rs:55:10:55:12 | exe | semmle.label | exe | +| test.rs:56:10:56:13 | home | semmle.label | home | +subpaths +testFailures +#select +| test.rs:6:10:6:30 | ...::var(...) | test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | $@ | test.rs:6:10:6:22 | ...::var | ...::var | +| test.rs:7:10:7:33 | ...::var_os(...) | test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | $@ | test.rs:7:10:7:25 | ...::var_os | ...::var_os | +| test.rs:12:10:12:13 | var1 | test.rs:9:16:9:28 | ...::var | test.rs:12:10:12:13 | var1 | $@ | test.rs:9:16:9:28 | ...::var | ...::var | +| test.rs:13:10:13:13 | var2 | test.rs:10:16:10:31 | ...::var_os | test.rs:13:10:13:13 | var2 | $@ | test.rs:10:16:10:31 | ...::var_os | ...::var_os | +| test.rs:34:10:34:16 | my_path | test.rs:27:29:27:42 | ...::args | test.rs:34:10:34:16 | my_path | $@ | test.rs:27:29:27:42 | ...::args | ...::args | +| test.rs:35:10:35:13 | arg1 | test.rs:27:29:27:42 | ...::args | test.rs:35:10:35:13 | arg1 | $@ | test.rs:27:29:27:42 | ...::args | ...::args | +| test.rs:36:10:36:13 | arg2 | test.rs:30:16:30:29 | ...::args | test.rs:36:10:36:13 | arg2 | $@ | test.rs:30:16:30:29 | ...::args | ...::args | +| test.rs:37:10:37:13 | arg3 | test.rs:31:16:31:32 | ...::args_os | test.rs:37:10:37:13 | arg3 | $@ | test.rs:31:16:31:32 | ...::args_os | ...::args_os | +| test.rs:38:10:38:13 | arg4 | test.rs:32:16:32:29 | ...::args | test.rs:38:10:38:13 | arg4 | $@ | test.rs:32:16:32:29 | ...::args | ...::args | +| test.rs:41:14:41:16 | arg | test.rs:40:16:40:29 | ...::args | test.rs:41:14:41:16 | arg | $@ | test.rs:40:16:40:29 | ...::args | ...::args | +| test.rs:45:14:45:16 | arg | test.rs:44:16:44:32 | ...::args_os | test.rs:45:14:45:16 | arg | $@ | test.rs:44:16:44:32 | ...::args_os | ...::args_os | +| test.rs:54:10:54:12 | dir | test.rs:50:15:50:35 | ...::current_dir | test.rs:54:10:54:12 | dir | $@ | test.rs:50:15:50:35 | ...::current_dir | ...::current_dir | +| test.rs:55:10:55:12 | exe | test.rs:51:15:51:35 | ...::current_exe | test.rs:55:10:55:12 | exe | $@ | test.rs:51:15:51:35 | ...::current_exe | ...::current_exe | +| test.rs:56:10:56:13 | home | test.rs:52:16:52:33 | ...::home_dir | test.rs:56:10:56:13 | home | $@ | test.rs:52:16:52:33 | ...::home_dir | ...::home_dir | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected new file mode 100644 index 00000000000..16f43eff914 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.expected @@ -0,0 +1,15 @@ +| test.rs:6:10:6:22 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:7:10:7:25 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:9:16:9:28 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:10:16:10:31 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:15:25:15:38 | ...::vars | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:20:25:20:41 | ...::vars_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | +| test.rs:27:29:27:42 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:30:16:30:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:31:16:31:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:32:16:32:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:40:16:40:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:44:16:44:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:50:15:50:35 | ...::current_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:51:15:51:35 | ...::current_exe | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:52:16:52:33 | ...::home_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/env/options.yml b/rust/ql/test/library-tests/dataflow/sources/env/options.yml new file mode 100644 index 00000000000..c7a0beabb53 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/options.yml @@ -0,0 +1 @@ +qltest_cargo_check: true diff --git a/rust/ql/test/library-tests/dataflow/sources/env/test.rs b/rust/ql/test/library-tests/dataflow/sources/env/test.rs new file mode 100644 index 00000000000..e02aa7c8f1b --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/env/test.rs @@ -0,0 +1,68 @@ +fn sink(_: T) { } + +// --- tests --- + +fn test_env_vars() { + sink(std::env::var("HOME")); // $ Alert[rust/summary/taint-sources] hasTaintFlow="HOME" + sink(std::env::var_os("PATH")); // $ Alert[rust/summary/taint-sources] hasTaintFlow="PATH" + + let var1 = std::env::var("HOME").expect("HOME not set"); // $ Alert[rust/summary/taint-sources] + let var2 = std::env::var_os("PATH").unwrap(); // $ Alert[rust/summary/taint-sources] + + sink(var1); // $ hasTaintFlow="HOME" + sink(var2); // $ hasTaintFlow="PATH" + + for (key, value) in std::env::vars() { // $ Alert[rust/summary/taint-sources] + sink(key); // $ MISSING: hasTaintFlow + sink(value); // $ MISSING: hasTaintFlow + } + + for (key, value) in std::env::vars_os() { // $ Alert[rust/summary/taint-sources] + sink(key); // $ MISSING: hasTaintFlow + sink(value); // $ MISSING: hasTaintFlow + } +} + +fn test_env_args() { + let args: Vec = std::env::args().collect(); // $ Alert[rust/summary/taint-sources] + let my_path = &args[0]; + let arg1 = &args[1]; + let arg2 = std::env::args().nth(2).unwrap(); // $ Alert[rust/summary/taint-sources] + let arg3 = std::env::args_os().nth(3).unwrap(); // $ Alert[rust/summary/taint-sources] + let arg4 = std::env::args().nth(4).unwrap().parse::().unwrap(); // $ Alert[rust/summary/taint-sources] + + sink(my_path); // $ hasTaintFlow + sink(arg1); // $ hasTaintFlow + sink(arg2); // $ hasTaintFlow + sink(arg3); // $ hasTaintFlow + sink(arg4); // $ hasTaintFlow + + for arg in std::env::args() { // $ Alert[rust/summary/taint-sources] + sink(arg); // $ hasTaintFlow + } + + for arg in std::env::args_os() { // $ Alert[rust/summary/taint-sources] + sink(arg); // $ hasTaintFlow + } +} + +fn test_env_dirs() { + let dir = std::env::current_dir().expect("FAILED"); // $ Alert[rust/summary/taint-sources] + let exe = std::env::current_exe().expect("FAILED"); // $ Alert[rust/summary/taint-sources] + let home = std::env::home_dir().expect("FAILED"); // $ Alert[rust/summary/taint-sources] + + sink(dir); // $ hasTaintFlow + sink(exe); // $ hasTaintFlow + sink(home); // $ hasTaintFlow +} + +async fn main() -> () { + println!("test_env_vars..."); + test_env_vars(); + + println!("test_env_args..."); + test_env_args(); + + println!("test_env_dirs..."); + test_env_dirs(); +} diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 43a54ce6d1e..8413f4e144b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -4,60 +4,6 @@ fn sink(_: T) { } // --- tests --- -fn test_env_vars() { - sink(std::env::var("HOME")); // $ Alert[rust/summary/taint-sources] hasTaintFlow="HOME" - sink(std::env::var_os("PATH")); // $ Alert[rust/summary/taint-sources] hasTaintFlow="PATH" - - let var1 = std::env::var("HOME").expect("HOME not set"); // $ Alert[rust/summary/taint-sources] - let var2 = std::env::var_os("PATH").unwrap(); // $ Alert[rust/summary/taint-sources] - - sink(var1); // $ hasTaintFlow="HOME" - sink(var2); // $ hasTaintFlow="PATH" - - for (key, value) in std::env::vars() { // $ Alert[rust/summary/taint-sources] - sink(key); // $ MISSING: hasTaintFlow - sink(value); // $ MISSING: hasTaintFlow - } - - for (key, value) in std::env::vars_os() { // $ Alert[rust/summary/taint-sources] - sink(key); // $ MISSING: hasTaintFlow - sink(value); // $ MISSING: hasTaintFlow - } -} - -fn test_env_args() { - let args: Vec = std::env::args().collect(); // $ Alert[rust/summary/taint-sources] - let my_path = &args[0]; - let arg1 = &args[1]; - let arg2 = std::env::args().nth(2).unwrap(); // $ Alert[rust/summary/taint-sources] - let arg3 = std::env::args_os().nth(3).unwrap(); // $ Alert[rust/summary/taint-sources] - let arg4 = std::env::args().nth(4).unwrap().parse::().unwrap(); // $ Alert[rust/summary/taint-sources] - - sink(my_path); // $ hasTaintFlow - sink(arg1); // $ hasTaintFlow - sink(arg2); // $ hasTaintFlow - sink(arg3); // $ hasTaintFlow - sink(arg4); // $ hasTaintFlow - - for arg in std::env::args() { // $ Alert[rust/summary/taint-sources] - sink(arg); // $ hasTaintFlow - } - - for arg in std::env::args_os() { // $ Alert[rust/summary/taint-sources] - sink(arg); // $ hasTaintFlow - } -} - -fn test_env_dirs() { - let dir = std::env::current_dir().expect("FAILED"); // $ Alert[rust/summary/taint-sources] - let exe = std::env::current_exe().expect("FAILED"); // $ Alert[rust/summary/taint-sources] - let home = std::env::home_dir().expect("FAILED"); // $ Alert[rust/summary/taint-sources] - - sink(dir); // $ hasTaintFlow - sink(exe); // $ hasTaintFlow - sink(home); // $ hasTaintFlow -} - async fn test_reqwest() -> Result<(), reqwest::Error> { let remote_string1 = reqwest::blocking::get("example.com")?.text()?; // $ Alert[rust/summary/taint-sources] sink(remote_string1); // $ hasTaintFlow="example.com" @@ -1095,15 +1041,6 @@ mod test_mysql_async { async fn main() -> Result<(), Box> { let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::().unwrap(); // $ Alert[rust/summary/taint-sources] - println!("test_env_vars..."); - test_env_vars(); - - println!("test_env_args..."); - test_env_args(); - - println!("test_env_dirs..."); - test_env_dirs(); - println!("test_reqwest..."); match futures::executor::block_on(test_reqwest()) { Ok(_) => println!("complete"), From 0cc9331abf04b18c5452a2b238203b303b5f7086 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:49:37 +0100 Subject: [PATCH 239/965] Rust: Split off sources/file test. --- .../dataflow/sources/file/Cargo.lock | 802 ++++++++++++++++++ .../dataflow/sources/file/InlineFlow.expected | 537 ++++++++++++ .../dataflow/sources/file/InlineFlow.ql | 36 + .../sources/file/TaintSources.expected | 33 + .../dataflow/sources/file/TaintSources.qlref | 2 + .../dataflow/sources/file/options.yml | 6 + .../dataflow/sources/file/test.rs | 315 +++++++ .../dataflow/sources/options.yml | 1 - .../library-tests/dataflow/sources/test.rs | 306 ------- 9 files changed, 1731 insertions(+), 307 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/TaintSources.qlref create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/options.yml create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/test.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/file/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/file/Cargo.lock new file mode 100644 index 00000000000..55ccd96372e --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/Cargo.lock @@ -0,0 +1,802 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "syn" +version = "2.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "async-std", + "bytes", + "futures", + "tokio", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected new file mode 100644 index 00000000000..f3a906bc2c6 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -0,0 +1,537 @@ +models +| 1 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 2 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 3 | Source: ::file_name; ReturnValue; file | +| 4 | Source: ::path; ReturnValue; file | +| 5 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 6 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 7 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 8 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 9 | Source: ::file_name; ReturnValue; file | +| 10 | Source: ::path; ReturnValue; file | +| 11 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 12 | Source: std::fs::read; ReturnValue; file | +| 13 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 14 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 15 | Source: std::fs::read_to_string; ReturnValue; file | +| 16 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 17 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 18 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | +| 19 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 20 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 21 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 22 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 23 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 24 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 25 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 26 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 27 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 28 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 29 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 30 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 31 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 39 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 40 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 42 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 43 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 44 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 45 | Summary: ::as_path; Argument[self]; ReturnValue; value | +edges +| test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | +| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:43 | ...::read [Ok] | provenance | Src:MaD:11 | +| test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:12:31:12:43 | ...::read [Ok] | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | MaD:12 | +| test.rs:12:31:12:55 | ...::read(...) [Ok] | test.rs:12:31:12:56 | TryExpr | provenance | | +| test.rs:12:31:12:56 | TryExpr | test.rs:12:13:12:18 | buffer | provenance | | +| test.rs:17:13:17:18 | buffer | test.rs:18:14:18:19 | buffer | provenance | | +| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:38 | ...::read [Ok] | provenance | Src:MaD:11 | +| test.rs:17:31:17:38 | ...::read | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | Src:MaD:11 | +| test.rs:17:31:17:38 | ...::read [Ok] | test.rs:17:31:17:50 | ...::read(...) [Ok] | provenance | MaD:12 | +| test.rs:17:31:17:50 | ...::read(...) [Ok] | test.rs:17:31:17:51 | TryExpr | provenance | | +| test.rs:17:31:17:51 | TryExpr | test.rs:17:13:17:18 | buffer | provenance | | +| test.rs:22:13:22:18 | buffer | test.rs:23:14:23:19 | buffer | provenance | | +| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:39 | ...::read_to_string [Ok] | provenance | Src:MaD:14 | +| test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:14 | +| test.rs:22:22:22:39 | ...::read_to_string [Ok] | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | MaD:15 | +| test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | | +| test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | | +| test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | | +| test.rs:29:13:29:16 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:21 | +| test.rs:29:13:29:16 | path | test.rs:31:14:31:17 | path | provenance | | +| test.rs:29:13:29:16 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:21 | +| test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | | +| test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | | +| test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | +| test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:21 | +| test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:21 | +| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:45 | +| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | +| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:21 | +| test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | +| test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | +| test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | +| test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:21 | +| test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | | +| test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:13 | +| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | | +| test.rs:65:22:65:50 | TryExpr | test.rs:65:13:65:18 | target | provenance | | +| test.rs:74:13:74:18 | buffer | test.rs:75:14:75:19 | buffer | provenance | | +| test.rs:74:31:74:45 | ...::read | test.rs:74:31:74:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:16 | +| test.rs:74:31:74:57 | ...::read(...) [future, Ok] | test.rs:74:31:74:63 | await ... [Ok] | provenance | | +| test.rs:74:31:74:63 | await ... [Ok] | test.rs:74:31:74:64 | TryExpr | provenance | | +| test.rs:74:31:74:64 | TryExpr | test.rs:74:13:74:18 | buffer | provenance | | +| test.rs:79:13:79:18 | buffer | test.rs:80:14:80:19 | buffer | provenance | | +| test.rs:79:31:79:45 | ...::read | test.rs:79:31:79:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:16 | +| test.rs:79:31:79:57 | ...::read(...) [future, Ok] | test.rs:79:31:79:63 | await ... [Ok] | provenance | | +| test.rs:79:31:79:63 | await ... [Ok] | test.rs:79:31:79:64 | TryExpr | provenance | | +| test.rs:79:31:79:64 | TryExpr | test.rs:79:13:79:18 | buffer | provenance | | +| test.rs:84:13:84:18 | buffer | test.rs:85:14:85:19 | buffer | provenance | | +| test.rs:84:22:84:46 | ...::read_to_string | test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:18 | +| test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | test.rs:84:22:84:64 | await ... [Ok] | provenance | | +| test.rs:84:22:84:64 | await ... [Ok] | test.rs:84:22:84:65 | TryExpr | provenance | | +| test.rs:84:22:84:65 | TryExpr | test.rs:84:13:84:18 | buffer | provenance | | +| test.rs:90:13:90:16 | path | test.rs:92:14:92:17 | path | provenance | | +| test.rs:90:20:90:31 | entry.path() | test.rs:90:13:90:16 | path | provenance | | +| test.rs:90:26:90:29 | path | test.rs:90:20:90:31 | entry.path() | provenance | Src:MaD:10 MaD:10 | +| test.rs:90:26:90:29 | path | test.rs:90:20:90:31 | entry.path() | provenance | Src:MaD:10 MaD:10 | +| test.rs:91:13:91:21 | file_name | test.rs:93:14:93:22 | file_name | provenance | | +| test.rs:91:25:91:41 | entry.file_name() | test.rs:91:13:91:21 | file_name | provenance | | +| test.rs:91:31:91:39 | file_name | test.rs:91:25:91:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 | +| test.rs:91:31:91:39 | file_name | test.rs:91:25:91:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 | +| test.rs:97:13:97:18 | target | test.rs:98:14:98:19 | target | provenance | | +| test.rs:97:22:97:41 | ...::read_link | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:17 | +| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | | +| test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | | +| test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | | +| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer | provenance | MaD:42 | +| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer | provenance | MaD:43 | +| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer | provenance | MaD:44 | +| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:107:9:107:16 | mut file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:107:9:107:16 | mut file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:24 | +| test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | | +| test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | | +| test.rs:111:32:111:42 | [post] &mut buffer | test.rs:112:15:112:20 | buffer | provenance | | +| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | | +| test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | +| test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | +| test.rs:117:39:117:49 | [post] &mut buffer | test.rs:118:15:118:20 | buffer | provenance | | +| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | | +| test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | | +| test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | | +| test.rs:123:42:123:52 | [post] &mut buffer | test.rs:124:15:124:20 | buffer | provenance | | +| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | | +| test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | | +| test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | | +| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | | +| test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | | +| test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | | +| test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | | +| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer | provenance | MaD:42 | +| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:41 | +| test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | | +| test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:142:30:142:40 | [post] &mut buffer | test.rs:143:15:143:20 | buffer | provenance | | +| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | | +| test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | | +| test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | | +| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer | provenance | MaD:42 | +| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:41 | +| test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | | +| test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:149:30:149:40 | [post] &mut buffer | test.rs:150:15:150:20 | buffer | provenance | | +| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | | +| test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | | +| test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | | +| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer | provenance | MaD:42 | +| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:41 | +| test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | | +| test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:156:30:156:40 | [post] &mut buffer | test.rs:157:15:157:20 | buffer | provenance | | +| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | | +| test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | | +| test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | | +| test.rs:164:13:164:17 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:26 | +| test.rs:164:21:164:39 | ...::open | test.rs:164:21:164:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:164:21:164:51 | ...::open(...) [Ok] | test.rs:164:21:164:52 | TryExpr | provenance | | +| test.rs:164:21:164:52 | TryExpr | test.rs:164:13:164:17 | file1 | provenance | | +| test.rs:165:13:165:17 | file2 | test.rs:166:38:166:42 | file2 | provenance | | +| test.rs:165:21:165:39 | ...::open | test.rs:165:21:165:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | | +| test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | | +| test.rs:166:13:166:22 | mut reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | | +| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:25 | +| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | | +| test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | | +| test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | | +| test.rs:173:13:173:17 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:31 | +| test.rs:173:21:173:39 | ...::open | test.rs:173:21:173:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | | +| test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | | +| test.rs:174:13:174:22 | mut reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | | +| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | | +| test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | | +| test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | | +| test.rs:185:9:185:16 | mut file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:32 | +| test.rs:185:9:185:16 | mut file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:38 | +| test.rs:185:9:185:16 | mut file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:185:9:185:16 | mut file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:34 | +| test.rs:185:9:185:16 | mut file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:40 | +| test.rs:185:9:185:16 | mut file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:36 | +| test.rs:185:9:185:16 | mut file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:35 | +| test.rs:185:9:185:16 | mut file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:37 | +| test.rs:185:9:185:16 | mut file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:33 | +| test.rs:185:20:185:40 | ...::open | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | | +| test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | | +| test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | | +| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | | +| test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | | +| test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | | +| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | | +| test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | | +| test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | | +| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | | +| test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | | +| test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | | +| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | | +| test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | | +| test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | | +| test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | | +| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | | +| test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | | +| test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | | +| test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | | +| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | | +| test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | | +| test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | | +| test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | | +| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | | +| test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | | +| test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | | +| test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | | +| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | | +| test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | | +| test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | | +| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | | +| test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | | +| test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | | +| test.rs:231:13:231:18 | mut f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:32 | +| test.rs:231:22:231:65 | ... .open(...) [future, Ok] | test.rs:231:22:231:71 | await ... [Ok] | provenance | | +| test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | | +| test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | | +| test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | +| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | | +| test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | | +| test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | | +| test.rs:262:9:262:16 | mut file | test.rs:266:22:266:25 | file | provenance | | +| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:262:20:262:44 | ...::open | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | | +| test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | | +| test.rs:262:20:262:63 | TryExpr | test.rs:262:9:262:16 | mut file | provenance | | +| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:266:32:266:42 | [post] &mut buffer [&ref] | test.rs:266:37:266:42 | [post] buffer | provenance | | +| test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | | +| test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | | +| test.rs:273:13:273:18 | mut f1 | test.rs:275:22:275:23 | f1 | provenance | | +| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:273:22:273:69 | ... .open(...) [future, Ok] | test.rs:273:22:273:75 | await ... [Ok] | provenance | | +| test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | | +| test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | | +| test.rs:273:56:273:59 | open | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | +| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:275:30:275:40 | [post] &mut buffer [&ref] | test.rs:275:35:275:40 | [post] buffer | provenance | | +| test.rs:275:35:275:40 | [post] buffer | test.rs:276:15:276:20 | buffer | provenance | | +| test.rs:276:15:276:20 | buffer | test.rs:276:14:276:20 | &buffer | provenance | | +nodes +| test.rs:12:13:12:18 | buffer | semmle.label | buffer | +| test.rs:12:31:12:43 | ...::read | semmle.label | ...::read | +| test.rs:12:31:12:43 | ...::read [Ok] | semmle.label | ...::read [Ok] | +| test.rs:12:31:12:55 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | +| test.rs:12:31:12:56 | TryExpr | semmle.label | TryExpr | +| test.rs:13:14:13:19 | buffer | semmle.label | buffer | +| test.rs:17:13:17:18 | buffer | semmle.label | buffer | +| test.rs:17:31:17:38 | ...::read | semmle.label | ...::read | +| test.rs:17:31:17:38 | ...::read [Ok] | semmle.label | ...::read [Ok] | +| test.rs:17:31:17:50 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | +| test.rs:17:31:17:51 | TryExpr | semmle.label | TryExpr | +| test.rs:18:14:18:19 | buffer | semmle.label | buffer | +| test.rs:22:13:22:18 | buffer | semmle.label | buffer | +| test.rs:22:22:22:39 | ...::read_to_string | semmle.label | ...::read_to_string | +| test.rs:22:22:22:39 | ...::read_to_string [Ok] | semmle.label | ...::read_to_string [Ok] | +| test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] | +| test.rs:22:22:22:52 | TryExpr | semmle.label | TryExpr | +| test.rs:23:14:23:19 | buffer | semmle.label | buffer | +| test.rs:29:13:29:16 | path | semmle.label | path | +| test.rs:29:20:29:27 | e.path() | semmle.label | e.path() | +| test.rs:29:22:29:25 | path | semmle.label | path | +| test.rs:30:14:30:17 | path | semmle.label | path | +| test.rs:30:14:30:25 | path.clone() | semmle.label | path.clone() | +| test.rs:31:14:31:17 | path | semmle.label | path | +| test.rs:31:14:31:25 | path.clone() | semmle.label | path.clone() | +| test.rs:31:14:31:35 | ... .as_path() | semmle.label | ... .as_path() | +| test.rs:41:14:41:17 | path | semmle.label | path | +| test.rs:43:13:43:21 | file_name | semmle.label | file_name | +| test.rs:43:25:43:37 | e.file_name() | semmle.label | e.file_name() | +| test.rs:43:27:43:35 | file_name | semmle.label | file_name | +| test.rs:44:14:44:22 | file_name | semmle.label | file_name | +| test.rs:44:14:44:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:49:14:49:22 | file_name | semmle.label | file_name | +| test.rs:65:13:65:18 | target | semmle.label | target | +| test.rs:65:22:65:34 | ...::read_link | semmle.label | ...::read_link | +| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] | +| test.rs:65:22:65:50 | TryExpr | semmle.label | TryExpr | +| test.rs:66:14:66:19 | target | semmle.label | target | +| test.rs:74:13:74:18 | buffer | semmle.label | buffer | +| test.rs:74:31:74:45 | ...::read | semmle.label | ...::read | +| test.rs:74:31:74:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | +| test.rs:74:31:74:63 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:74:31:74:64 | TryExpr | semmle.label | TryExpr | +| test.rs:75:14:75:19 | buffer | semmle.label | buffer | +| test.rs:79:13:79:18 | buffer | semmle.label | buffer | +| test.rs:79:31:79:45 | ...::read | semmle.label | ...::read | +| test.rs:79:31:79:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | +| test.rs:79:31:79:63 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:79:31:79:64 | TryExpr | semmle.label | TryExpr | +| test.rs:80:14:80:19 | buffer | semmle.label | buffer | +| test.rs:84:13:84:18 | buffer | semmle.label | buffer | +| test.rs:84:22:84:46 | ...::read_to_string | semmle.label | ...::read_to_string | +| test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] | +| test.rs:84:22:84:64 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:84:22:84:65 | TryExpr | semmle.label | TryExpr | +| test.rs:85:14:85:19 | buffer | semmle.label | buffer | +| test.rs:90:13:90:16 | path | semmle.label | path | +| test.rs:90:20:90:31 | entry.path() | semmle.label | entry.path() | +| test.rs:90:26:90:29 | path | semmle.label | path | +| test.rs:90:26:90:29 | path | semmle.label | path | +| test.rs:91:13:91:21 | file_name | semmle.label | file_name | +| test.rs:91:25:91:41 | entry.file_name() | semmle.label | entry.file_name() | +| test.rs:91:31:91:39 | file_name | semmle.label | file_name | +| test.rs:91:31:91:39 | file_name | semmle.label | file_name | +| test.rs:92:14:92:17 | path | semmle.label | path | +| test.rs:93:14:93:22 | file_name | semmle.label | file_name | +| test.rs:97:13:97:18 | target | semmle.label | target | +| test.rs:97:22:97:41 | ...::read_link | semmle.label | ...::read_link | +| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] | +| test.rs:97:22:97:62 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:97:22:97:63 | TryExpr | semmle.label | TryExpr | +| test.rs:98:14:98:19 | target | semmle.label | target | +| test.rs:107:9:107:16 | mut file | semmle.label | mut file | +| test.rs:107:20:107:38 | ...::open | semmle.label | ...::open | +| test.rs:107:20:107:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:107:20:107:51 | TryExpr | semmle.label | TryExpr | +| test.rs:111:32:111:42 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:111:37:111:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | +| test.rs:112:15:112:20 | buffer | semmle.label | buffer | +| test.rs:117:39:117:49 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:117:44:117:49 | [post] buffer | semmle.label | [post] buffer | +| test.rs:118:14:118:20 | &buffer | semmle.label | &buffer | +| test.rs:118:15:118:20 | buffer | semmle.label | buffer | +| test.rs:123:42:123:52 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:123:47:123:52 | [post] buffer | semmle.label | [post] buffer | +| test.rs:124:14:124:20 | &buffer | semmle.label | &buffer | +| test.rs:124:15:124:20 | buffer | semmle.label | buffer | +| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:129:30:129:35 | [post] buffer | semmle.label | [post] buffer | +| test.rs:130:14:130:20 | &buffer | semmle.label | &buffer | +| test.rs:130:15:130:20 | buffer | semmle.label | buffer | +| test.rs:133:17:133:28 | file.bytes() | semmle.label | file.bytes() | +| test.rs:134:14:134:17 | byte | semmle.label | byte | +| test.rs:140:13:140:18 | mut f1 | semmle.label | mut f1 | +| test.rs:140:22:140:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:140:22:140:72 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:140:50:140:53 | open | semmle.label | open | +| test.rs:142:30:142:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:142:35:142:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:143:14:143:20 | &buffer | semmle.label | &buffer | +| test.rs:143:15:143:20 | buffer | semmle.label | buffer | +| test.rs:147:13:147:18 | mut f2 | semmle.label | mut f2 | +| test.rs:147:22:147:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:147:22:147:89 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:147:67:147:70 | open | semmle.label | open | +| test.rs:149:30:149:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:149:35:149:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:150:14:150:20 | &buffer | semmle.label | &buffer | +| test.rs:150:15:150:20 | buffer | semmle.label | buffer | +| test.rs:154:13:154:18 | mut f3 | semmle.label | mut f3 | +| test.rs:154:22:154:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:154:22:154:123 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:154:101:154:104 | open | semmle.label | open | +| test.rs:156:30:156:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:156:35:156:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:157:14:157:20 | &buffer | semmle.label | &buffer | +| test.rs:157:15:157:20 | buffer | semmle.label | buffer | +| test.rs:164:13:164:17 | file1 | semmle.label | file1 | +| test.rs:164:21:164:39 | ...::open | semmle.label | ...::open | +| test.rs:164:21:164:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:164:21:164:52 | TryExpr | semmle.label | TryExpr | +| test.rs:165:13:165:17 | file2 | semmle.label | file2 | +| test.rs:165:21:165:39 | ...::open | semmle.label | ...::open | +| test.rs:165:21:165:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:165:21:165:60 | TryExpr | semmle.label | TryExpr | +| test.rs:166:13:166:22 | mut reader | semmle.label | mut reader | +| test.rs:166:26:166:43 | file1.chain(...) | semmle.label | file1.chain(...) | +| test.rs:166:38:166:42 | file2 | semmle.label | file2 | +| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:167:36:167:41 | [post] buffer | semmle.label | [post] buffer | +| test.rs:168:14:168:20 | &buffer | semmle.label | &buffer | +| test.rs:168:15:168:20 | buffer | semmle.label | buffer | +| test.rs:173:13:173:17 | file1 | semmle.label | file1 | +| test.rs:173:21:173:39 | ...::open | semmle.label | ...::open | +| test.rs:173:21:173:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:173:21:173:52 | TryExpr | semmle.label | TryExpr | +| test.rs:174:13:174:22 | mut reader | semmle.label | mut reader | +| test.rs:174:26:174:40 | file1.take(...) | semmle.label | file1.take(...) | +| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:175:36:175:41 | [post] buffer | semmle.label | [post] buffer | +| test.rs:176:14:176:20 | &buffer | semmle.label | &buffer | +| test.rs:176:15:176:20 | buffer | semmle.label | buffer | +| test.rs:185:9:185:16 | mut file | semmle.label | mut file | +| test.rs:185:20:185:40 | ...::open | semmle.label | ...::open | +| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | +| test.rs:185:20:185:58 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:185:20:185:59 | TryExpr | semmle.label | TryExpr | +| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:189:37:189:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:190:14:190:20 | &buffer | semmle.label | &buffer | +| test.rs:190:15:190:20 | buffer | semmle.label | buffer | +| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:195:44:195:49 | [post] buffer | semmle.label | [post] buffer | +| test.rs:196:14:196:20 | &buffer | semmle.label | &buffer | +| test.rs:196:15:196:20 | buffer | semmle.label | buffer | +| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:201:47:201:52 | [post] buffer | semmle.label | [post] buffer | +| test.rs:202:14:202:20 | &buffer | semmle.label | &buffer | +| test.rs:202:15:202:20 | buffer | semmle.label | buffer | +| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:207:30:207:35 | [post] buffer | semmle.label | [post] buffer | +| test.rs:208:14:208:20 | &buffer | semmle.label | &buffer | +| test.rs:208:15:208:20 | buffer | semmle.label | buffer | +| test.rs:212:13:212:14 | v1 | semmle.label | v1 | +| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] | +| test.rs:212:18:212:37 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:212:18:212:38 | TryExpr | semmle.label | TryExpr | +| test.rs:213:13:213:14 | v2 | semmle.label | v2 | +| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] | +| test.rs:213:18:213:38 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:213:18:213:39 | TryExpr | semmle.label | TryExpr | +| test.rs:214:13:214:14 | v3 | semmle.label | v3 | +| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] | +| test.rs:214:18:214:38 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:214:18:214:39 | TryExpr | semmle.label | TryExpr | +| test.rs:215:13:215:14 | v4 | semmle.label | v4 | +| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] | +| test.rs:215:18:215:41 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:215:18:215:42 | TryExpr | semmle.label | TryExpr | +| test.rs:216:14:216:15 | v1 | semmle.label | v1 | +| test.rs:217:14:217:15 | v2 | semmle.label | v2 | +| test.rs:218:14:218:15 | v3 | semmle.label | v3 | +| test.rs:219:14:219:15 | v4 | semmle.label | v4 | +| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:224:28:224:33 | [post] buffer | semmle.label | [post] buffer | +| test.rs:225:14:225:20 | &buffer | semmle.label | &buffer | +| test.rs:225:15:225:20 | buffer | semmle.label | buffer | +| test.rs:231:13:231:18 | mut f1 | semmle.label | mut f1 | +| test.rs:231:22:231:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | +| test.rs:231:22:231:71 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:231:22:231:72 | TryExpr | semmle.label | TryExpr | +| test.rs:231:52:231:55 | open | semmle.label | open | +| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:233:35:233:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:234:14:234:20 | &buffer | semmle.label | &buffer | +| test.rs:234:15:234:20 | buffer | semmle.label | buffer | +| test.rs:262:9:262:16 | mut file | semmle.label | mut file | +| test.rs:262:20:262:44 | ...::open | semmle.label | ...::open | +| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | +| test.rs:262:20:262:62 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:262:20:262:63 | TryExpr | semmle.label | TryExpr | +| test.rs:266:22:266:25 | file | semmle.label | file | +| test.rs:266:32:266:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:266:37:266:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:267:14:267:20 | &buffer | semmle.label | &buffer | +| test.rs:267:15:267:20 | buffer | semmle.label | buffer | +| test.rs:273:13:273:18 | mut f1 | semmle.label | mut f1 | +| test.rs:273:22:273:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | +| test.rs:273:22:273:75 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:273:22:273:76 | TryExpr | semmle.label | TryExpr | +| test.rs:273:56:273:59 | open | semmle.label | open | +| test.rs:275:22:275:23 | f1 | semmle.label | f1 | +| test.rs:275:30:275:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:275:35:275:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:276:14:276:20 | &buffer | semmle.label | &buffer | +| test.rs:276:15:276:20 | buffer | semmle.label | buffer | +subpaths +testFailures +#select +| test.rs:13:14:13:19 | buffer | test.rs:12:31:12:43 | ...::read | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:43 | ...::read | ...::read | +| test.rs:18:14:18:19 | buffer | test.rs:17:31:17:38 | ...::read | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:38 | ...::read | ...::read | +| test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string | +| test.rs:30:14:30:25 | path.clone() | test.rs:29:22:29:25 | path | test.rs:30:14:30:25 | path.clone() | $@ | test.rs:29:22:29:25 | path | path | +| test.rs:31:14:31:35 | ... .as_path() | test.rs:29:22:29:25 | path | test.rs:31:14:31:35 | ... .as_path() | $@ | test.rs:29:22:29:25 | path | path | +| test.rs:41:14:41:17 | path | test.rs:29:22:29:25 | path | test.rs:41:14:41:17 | path | $@ | test.rs:29:22:29:25 | path | path | +| test.rs:44:14:44:30 | file_name.clone() | test.rs:43:27:43:35 | file_name | test.rs:44:14:44:30 | file_name.clone() | $@ | test.rs:43:27:43:35 | file_name | file_name | +| test.rs:49:14:49:22 | file_name | test.rs:43:27:43:35 | file_name | test.rs:49:14:49:22 | file_name | $@ | test.rs:43:27:43:35 | file_name | file_name | +| test.rs:66:14:66:19 | target | test.rs:65:22:65:34 | ...::read_link | test.rs:66:14:66:19 | target | $@ | test.rs:65:22:65:34 | ...::read_link | ...::read_link | +| test.rs:75:14:75:19 | buffer | test.rs:74:31:74:45 | ...::read | test.rs:75:14:75:19 | buffer | $@ | test.rs:74:31:74:45 | ...::read | ...::read | +| test.rs:80:14:80:19 | buffer | test.rs:79:31:79:45 | ...::read | test.rs:80:14:80:19 | buffer | $@ | test.rs:79:31:79:45 | ...::read | ...::read | +| test.rs:85:14:85:19 | buffer | test.rs:84:22:84:46 | ...::read_to_string | test.rs:85:14:85:19 | buffer | $@ | test.rs:84:22:84:46 | ...::read_to_string | ...::read_to_string | +| test.rs:92:14:92:17 | path | test.rs:90:26:90:29 | path | test.rs:92:14:92:17 | path | $@ | test.rs:90:26:90:29 | path | path | +| test.rs:92:14:92:17 | path | test.rs:90:26:90:29 | path | test.rs:92:14:92:17 | path | $@ | test.rs:90:26:90:29 | path | path | +| test.rs:93:14:93:22 | file_name | test.rs:91:31:91:39 | file_name | test.rs:93:14:93:22 | file_name | $@ | test.rs:91:31:91:39 | file_name | file_name | +| test.rs:93:14:93:22 | file_name | test.rs:91:31:91:39 | file_name | test.rs:93:14:93:22 | file_name | $@ | test.rs:91:31:91:39 | file_name | file_name | +| test.rs:98:14:98:19 | target | test.rs:97:22:97:41 | ...::read_link | test.rs:98:14:98:19 | target | $@ | test.rs:97:22:97:41 | ...::read_link | ...::read_link | +| test.rs:112:14:112:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:112:14:112:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | +| test.rs:118:14:118:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:118:14:118:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | +| test.rs:124:14:124:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:124:14:124:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | +| test.rs:130:14:130:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:130:14:130:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | +| test.rs:134:14:134:17 | byte | test.rs:107:20:107:38 | ...::open | test.rs:134:14:134:17 | byte | $@ | test.rs:107:20:107:38 | ...::open | ...::open | +| test.rs:143:14:143:20 | &buffer | test.rs:140:50:140:53 | open | test.rs:143:14:143:20 | &buffer | $@ | test.rs:140:50:140:53 | open | open | +| test.rs:150:14:150:20 | &buffer | test.rs:147:67:147:70 | open | test.rs:150:14:150:20 | &buffer | $@ | test.rs:147:67:147:70 | open | open | +| test.rs:157:14:157:20 | &buffer | test.rs:154:101:154:104 | open | test.rs:157:14:157:20 | &buffer | $@ | test.rs:154:101:154:104 | open | open | +| test.rs:168:14:168:20 | &buffer | test.rs:164:21:164:39 | ...::open | test.rs:168:14:168:20 | &buffer | $@ | test.rs:164:21:164:39 | ...::open | ...::open | +| test.rs:168:14:168:20 | &buffer | test.rs:165:21:165:39 | ...::open | test.rs:168:14:168:20 | &buffer | $@ | test.rs:165:21:165:39 | ...::open | ...::open | +| test.rs:176:14:176:20 | &buffer | test.rs:173:21:173:39 | ...::open | test.rs:176:14:176:20 | &buffer | $@ | test.rs:173:21:173:39 | ...::open | ...::open | +| test.rs:190:14:190:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:190:14:190:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:196:14:196:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:196:14:196:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:202:14:202:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:202:14:202:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:208:14:208:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:208:14:208:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:216:14:216:15 | v1 | test.rs:185:20:185:40 | ...::open | test.rs:216:14:216:15 | v1 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:217:14:217:15 | v2 | test.rs:185:20:185:40 | ...::open | test.rs:217:14:217:15 | v2 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:218:14:218:15 | v3 | test.rs:185:20:185:40 | ...::open | test.rs:218:14:218:15 | v3 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:219:14:219:15 | v4 | test.rs:185:20:185:40 | ...::open | test.rs:219:14:219:15 | v4 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:225:14:225:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:225:14:225:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | +| test.rs:234:14:234:20 | &buffer | test.rs:231:52:231:55 | open | test.rs:234:14:234:20 | &buffer | $@ | test.rs:231:52:231:55 | open | open | +| test.rs:267:14:267:20 | &buffer | test.rs:262:20:262:44 | ...::open | test.rs:267:14:267:20 | &buffer | $@ | test.rs:262:20:262:44 | ...::open | ...::open | +| test.rs:276:14:276:20 | &buffer | test.rs:273:56:273:59 | open | test.rs:276:14:276:20 | &buffer | $@ | test.rs:273:56:273:59 | open | open | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected new file mode 100644 index 00000000000..d73106fb1cf --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -0,0 +1,33 @@ +| test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:29:22:29:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:43:27:43:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:54:22:54:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:55:27:55:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:65:22:65:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:74:31:74:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:79:31:79:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:84:22:84:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:90:26:90:29 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:90:26:90:29 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:91:31:91:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:91:31:91:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:97:22:97:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:107:20:107:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:140:50:140:53 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:147:67:147:70 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:154:101:154:104 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:164:21:164:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:165:21:165:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:173:21:173:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:185:20:185:40 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:231:52:231:55 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:241:21:241:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:242:21:242:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:250:21:250:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:262:20:262:44 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:273:56:273:59 | open | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/file/options.yml b/rust/ql/test/library-tests/dataflow/sources/file/options.yml new file mode 100644 index 00000000000..673d322a0a1 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/options.yml @@ -0,0 +1,6 @@ +qltest_cargo_check: true +qltest_dependencies: + - async-std = { version = "1.13.1" } + - bytes = { version = "1.10.1" } + - futures = { version = "0.3" } + - tokio = { version = "1.43.0", features = ["full"] } diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs new file mode 100644 index 00000000000..5bbdf4db3f6 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -0,0 +1,315 @@ +fn sink(_: T) { } + +// --- tests --- + +use std::fs; +use std::io::Read; +use tokio::io::AsyncReadExt; +use async_std::io::ReadExt; + +fn test_fs() -> Result<(), Box> { + { + let buffer: Vec = std::fs::read("file.bin")?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.bin" + } + + { + let buffer: Vec = fs::read("file.bin")?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.bin" + } + + { + let buffer = fs::read_to_string("file.txt")?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.txt" + } + + for entry in fs::read_dir("directory")? { + let e = entry?; + + let path = e.path(); // $ Alert[rust/summary/taint-sources] + sink(path.clone()); // $ hasTaintFlow + sink(path.clone().as_path()); // $ hasTaintFlow + sink(path.clone().into_os_string()); // $ MISSING: hasTaintFlow + sink(std::path::PathBuf::from(path.clone().into_boxed_path())); // $ MISSING: hasTaintFlow + sink(path.clone().as_os_str()); // $ MISSING: hasTaintFlow + sink(path.clone().as_mut_os_str()); // $ MISSING: hasTaintFlow + sink(path.to_str()); // $ MISSING: hasTaintFlow + sink(path.to_path_buf()); // $ MISSING: hasTaintFlow + sink(path.file_name().unwrap()); // $ MISSING: hasTaintFlow + sink(path.extension().unwrap()); // $ MISSING: hasTaintFlow + sink(path.canonicalize().unwrap()); // $ MISSING: hasTaintFlow + sink(path); // $ hasTaintFlow + + let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] + sink(file_name.clone()); // $ hasTaintFlow + sink(file_name.clone().into_string().unwrap()); // $ MISSING: hasTaintFlow + sink(file_name.to_str().unwrap()); // $ MISSING: hasTaintFlow + sink(file_name.to_string_lossy().to_mut()); // $ MISSING: hasTaintFlow + sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow + sink(file_name); // $ hasTaintFlow + } + for entry in std::path::Path::new("directory").read_dir()? { + let e = entry?; + + let path = e.path(); // $ Alert[rust/summary/taint-sources] + let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] + } + for entry in std::path::PathBuf::from("directory").read_dir()? { + let e = entry?; + + let path = e.path(); // $ MISSING: Alert[rust/summary/taint-sources] + let file_name = e.file_name(); // $ MISSING: Alert[rust/summary/taint-sources] + } + + { + let target = fs::read_link("symlink.txt")?; // $ Alert[rust/summary/taint-sources] + sink(target); // $ hasTaintFlow="symlink.txt" + } + + Ok(()) +} + +async fn test_tokio_fs() -> Result<(), Box> { + { + let buffer: Vec = tokio::fs::read("file.bin").await?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.bin" + } + + { + let buffer: Vec = tokio::fs::read("file.bin").await?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.bin" + } + + { + let buffer = tokio::fs::read_to_string("file.txt").await?; // $ Alert[rust/summary/taint-sources] + sink(buffer); // $ hasTaintFlow="file.txt" + } + + let mut read_dir = tokio::fs::read_dir("directory").await?; + for entry in read_dir.next_entry().await? { + let path = entry.path(); // $ Alert[rust/summary/taint-sources] + let file_name = entry.file_name(); // $ Alert[rust/summary/taint-sources] + sink(path); // $ hasTaintFlow + sink(file_name); // $ hasTaintFlow + } + + { + let target = tokio::fs::read_link("symlink.txt").await?; // $ Alert[rust/summary/taint-sources] + sink(target); // $ hasTaintFlow="symlink.txt" + } + + Ok(()) +} + +fn test_io_file() -> std::io::Result<()> { + // --- file --- + + let mut file = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] + + { + let mut buffer = [0u8; 100]; + let _bytes = file.read(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = Vec::::new(); + let _bytes = file.read_to_end(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = String::new(); + let _bytes = file.read_to_string(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = [0; 100]; + file.read_exact(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + for byte in file.bytes() { + sink(byte); // $ hasTaintFlow="file.txt" + } + + // --- OpenOptions --- + + { + let mut f1 = std::fs::OpenOptions::new().open("f1.txt").unwrap(); // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 1024]; + let _bytes = f1.read(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="f1.txt" + } + + { + let mut f2 = std::fs::OpenOptions::new().create_new(true).open("f2.txt").unwrap(); // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 1024]; + let _bytes = f2.read(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="f2.txt" + } + + { + let mut f3 = std::fs::OpenOptions::new().read(true).write(true).truncate(true).create(true).open("f3.txt").unwrap(); // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 1024]; + let _bytes = f3.read(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="f3.txt" + } + + // --- misc operations --- + + { + let mut buffer = String::new(); + let file1 = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] + let file2 = std::fs::File::open("another_file.txt")?; // $ Alert[rust/summary/taint-sources] + let mut reader = file1.chain(file2); + reader.read_to_string(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" + } + + { + let mut buffer = String::new(); + let file1 = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] + let mut reader = file1.take(100); + reader.read_to_string(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + Ok(()) +} + +async fn test_tokio_file() -> std::io::Result<()> { + // --- file --- + + let mut file = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] + + { + let mut buffer = [0u8; 100]; + let _bytes = file.read(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = Vec::::new(); + let _bytes = file.read_to_end(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = String::new(); + let _bytes = file.read_to_string(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = [0; 100]; + file.read_exact(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + { + let v1 = file.read_u8().await?; + let v2 = file.read_i16().await?; + let v3 = file.read_f32().await?; + let v4 = file.read_i64_le().await?; + sink(v1); // $ hasTaintFlow="file.txt" + sink(v2); // $ hasTaintFlow="file.txt" + sink(v3); // $ hasTaintFlow="file.txt" + sink(v4); // $ hasTaintFlow="file.txt" + } + + { + let mut buffer = bytes::BytesMut::new(); + file.read_buf(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + // --- OpenOptions --- + + { + let mut f1 = tokio::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 1024]; + let _bytes = f1.read(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="f1.txt" + } + + // --- misc operations --- + + { + let mut buffer = String::new(); + let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] + let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] + let mut reader = file1.chain(file2); + reader.read_to_string(&mut buffer).await?; + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + } + + { + let mut buffer = String::new(); + let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] + let mut reader = file1.take(100); + reader.read_to_string(&mut buffer).await?; + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + } + + Ok(()) +} + +async fn test_async_std_file() -> std::io::Result<()> { + // --- file --- + + let mut file = async_std::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] + + { + let mut buffer = [0u8; 100]; + let _bytes = file.read(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="file.txt" + } + + // --- OpenOptions --- + + { + let mut f1 = async_std::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 1024]; + let _bytes = f1.read(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow="f1.txt" + } + + Ok(()) +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + println!("test_fs..."); + match test_fs() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_tokio_fs..."); + match futures::executor::block_on(test_tokio_fs()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_io_file..."); + match test_io_file() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_tokio_file..."); + match futures::executor::block_on(test_tokio_file()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_async_std_file..."); + match futures::executor::block_on(test_async_std_file()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + Ok(()) +} diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index a9ad7291126..b2f77795e81 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -7,7 +7,6 @@ qltest_dependencies: - http = { version = "1.2.0" } - tokio = { version = "1.43.0", features = ["full"] } - futures = { version = "0.3" } - - bytes = { version = "1.10.1" } - poem = { version = "3.1.10" } - serde = { version = "1.0.219" } - actix-web = { version = "4.10.2" } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 8413f4e144b..5f45459aa72 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -347,282 +347,6 @@ async fn test_tokio_stdin() -> Result<(), Box> { Ok(()) } -use std::fs; - -fn test_fs() -> Result<(), Box> { - { - let buffer: Vec = std::fs::read("file.bin")?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.bin" - } - - { - let buffer: Vec = fs::read("file.bin")?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.bin" - } - - { - let buffer = fs::read_to_string("file.txt")?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.txt" - } - - for entry in fs::read_dir("directory")? { - let e = entry?; - - let path = e.path(); // $ Alert[rust/summary/taint-sources] - sink(path.clone()); // $ hasTaintFlow - sink(path.clone().as_path()); // $ hasTaintFlow - sink(path.clone().into_os_string()); // $ MISSING: hasTaintFlow - sink(std::path::PathBuf::from(path.clone().into_boxed_path())); // $ MISSING: hasTaintFlow - sink(path.clone().as_os_str()); // $ MISSING: hasTaintFlow - sink(path.clone().as_mut_os_str()); // $ MISSING: hasTaintFlow - sink(path.to_str()); // $ MISSING: hasTaintFlow - sink(path.to_path_buf()); // $ MISSING: hasTaintFlow - sink(path.file_name().unwrap()); // $ MISSING: hasTaintFlow - sink(path.extension().unwrap()); // $ MISSING: hasTaintFlow - sink(path.canonicalize().unwrap()); // $ MISSING: hasTaintFlow - sink(path); // $ hasTaintFlow - - let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] - sink(file_name.clone()); // $ hasTaintFlow - sink(file_name.clone().into_string().unwrap()); // $ MISSING: hasTaintFlow - sink(file_name.to_str().unwrap()); // $ MISSING: hasTaintFlow - sink(file_name.to_string_lossy().to_mut()); // $ MISSING: hasTaintFlow - sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow - sink(file_name); // $ hasTaintFlow - } - for entry in std::path::Path::new("directory").read_dir()? { - let e = entry?; - - let path = e.path(); // $ Alert[rust/summary/taint-sources] - let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] - } - for entry in std::path::PathBuf::from("directory").read_dir()? { - let e = entry?; - - let path = e.path(); // $ MISSING: Alert[rust/summary/taint-sources] - let file_name = e.file_name(); // $ MISSING: Alert[rust/summary/taint-sources] - } - - { - let target = fs::read_link("symlink.txt")?; // $ Alert[rust/summary/taint-sources] - sink(target); // $ hasTaintFlow="symlink.txt" - } - - Ok(()) -} - -async fn test_tokio_fs() -> Result<(), Box> { - { - let buffer: Vec = tokio::fs::read("file.bin").await?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.bin" - } - - { - let buffer: Vec = tokio::fs::read("file.bin").await?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.bin" - } - - { - let buffer = tokio::fs::read_to_string("file.txt").await?; // $ Alert[rust/summary/taint-sources] - sink(buffer); // $ hasTaintFlow="file.txt" - } - - let mut read_dir = tokio::fs::read_dir("directory").await?; - for entry in read_dir.next_entry().await? { - let path = entry.path(); // $ Alert[rust/summary/taint-sources] - let file_name = entry.file_name(); // $ Alert[rust/summary/taint-sources] - sink(path); // $ hasTaintFlow - sink(file_name); // $ hasTaintFlow - } - - { - let target = tokio::fs::read_link("symlink.txt").await?; // $ Alert[rust/summary/taint-sources] - sink(target); // $ hasTaintFlow="symlink.txt" - } - - Ok(()) -} - -fn test_io_file() -> std::io::Result<()> { - // --- file --- - - let mut file = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] - - { - let mut buffer = [0u8; 100]; - let _bytes = file.read(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = Vec::::new(); - let _bytes = file.read_to_end(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = String::new(); - let _bytes = file.read_to_string(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = [0; 100]; - file.read_exact(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - for byte in file.bytes() { - sink(byte); // $ hasTaintFlow="file.txt" - } - - // --- OpenOptions --- - - { - let mut f1 = std::fs::OpenOptions::new().open("f1.txt").unwrap(); // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 1024]; - let _bytes = f1.read(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="f1.txt" - } - - { - let mut f2 = std::fs::OpenOptions::new().create_new(true).open("f2.txt").unwrap(); // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 1024]; - let _bytes = f2.read(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="f2.txt" - } - - { - let mut f3 = std::fs::OpenOptions::new().read(true).write(true).truncate(true).create(true).open("f3.txt").unwrap(); // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 1024]; - let _bytes = f3.read(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="f3.txt" - } - - // --- misc operations --- - - { - let mut buffer = String::new(); - let file1 = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] - let file2 = std::fs::File::open("another_file.txt")?; // $ Alert[rust/summary/taint-sources] - let mut reader = file1.chain(file2); - reader.read_to_string(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" - } - - { - let mut buffer = String::new(); - let file1 = std::fs::File::open("file.txt")?; // $ Alert[rust/summary/taint-sources] - let mut reader = file1.take(100); - reader.read_to_string(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - Ok(()) -} - -async fn test_tokio_file() -> std::io::Result<()> { - // --- file --- - - let mut file = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] - - { - let mut buffer = [0u8; 100]; - let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = Vec::::new(); - let _bytes = file.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = String::new(); - let _bytes = file.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = [0; 100]; - file.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - { - let v1 = file.read_u8().await?; - let v2 = file.read_i16().await?; - let v3 = file.read_f32().await?; - let v4 = file.read_i64_le().await?; - sink(v1); // $ hasTaintFlow="file.txt" - sink(v2); // $ hasTaintFlow="file.txt" - sink(v3); // $ hasTaintFlow="file.txt" - sink(v4); // $ hasTaintFlow="file.txt" - } - - { - let mut buffer = bytes::BytesMut::new(); - file.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - // --- OpenOptions --- - - { - let mut f1 = tokio::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 1024]; - let _bytes = f1.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="f1.txt" - } - - // --- misc operations --- - - { - let mut buffer = String::new(); - let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] - let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] - let mut reader = file1.chain(file2); - reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - } - - { - let mut buffer = String::new(); - let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] - let mut reader = file1.take(100); - reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - } - - Ok(()) -} - -use async_std::io::ReadExt; - -async fn test_async_std_file() -> std::io::Result<()> { - // --- file --- - - let mut file = async_std::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] - - { - let mut buffer = [0u8; 100]; - let _bytes = file.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="file.txt" - } - - // --- OpenOptions --- - - { - let mut f1 = async_std::fs::OpenOptions::new().open("f1.txt").await?; // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 1024]; - let _bytes = f1.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow="f1.txt" - } - - Ok(()) -} - use std::net::ToSocketAddrs; async fn test_std_tcpstream(case: i64) -> std::io::Result<()> { @@ -1065,36 +789,6 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } - println!("test_fs..."); - match test_fs() { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_tokio_fs..."); - match futures::executor::block_on(test_tokio_fs()) { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_io_file..."); - match test_io_file() { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_tokio_file..."); - match futures::executor::block_on(test_tokio_file()) { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_async_std_file..."); - match futures::executor::block_on(test_async_std_file()) { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - println!("test_std_tcpstream..."); match futures::executor::block_on(test_std_tcpstream(case)) { Ok(_) => println!("complete"), From 81132beec078d4b1703607f642b1b72a3b04a2aa Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:12:33 +0100 Subject: [PATCH 240/965] Rust: Split off sources/stdin test. --- .../dataflow/sources/stdin/Cargo.lock | 390 ++++++++++++++ .../sources/stdin/InlineFlow.expected | 484 ++++++++++++++++++ .../dataflow/sources/stdin/InlineFlow.ql | 36 ++ .../sources/stdin/TaintSources.expected | 26 + .../dataflow/sources/stdin/TaintSources.qlref | 2 + .../dataflow/sources/stdin/options.yml | 5 + .../dataflow/sources/stdin/test.rs | 219 ++++++++ .../library-tests/dataflow/sources/test.rs | 213 -------- 8 files changed, 1162 insertions(+), 213 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.qlref create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/options.yml create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/test.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/stdin/Cargo.lock new file mode 100644 index 00000000000..e65fc751707 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/Cargo.lock @@ -0,0 +1,390 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "syn" +version = "2.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "bytes", + "futures", + "tokio", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected new file mode 100644 index 00000000000..5e0e79e5e5d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected @@ -0,0 +1,484 @@ +models +| 1 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | +| 3 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | +| 4 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 5 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 6 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 7 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | +| 8 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 9 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 10 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 11 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 12 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 13 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 14 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 15 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 18 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 20 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 28 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 29 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 30 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 31 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 32 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 33 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | +| 34 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 35 | Summary: ::lock; Argument[self]; ReturnValue; taint | +| 36 | Summary: ::buffer; Argument[self]; ReturnValue; taint | +| 37 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 38 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 39 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +edges +| test.rs:13:22:13:35 | ...::stdin | test.rs:13:22:13:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer | provenance | MaD:32 | +| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:10 | +| test.rs:13:44:13:54 | [post] &mut buffer | test.rs:14:15:14:20 | buffer | provenance | | +| test.rs:13:44:13:54 | [post] &mut buffer [&ref] | test.rs:13:49:13:54 | [post] buffer | provenance | | +| test.rs:13:49:13:54 | [post] buffer | test.rs:14:15:14:20 | buffer | provenance | | +| test.rs:14:15:14:20 | buffer | test.rs:14:14:14:20 | &buffer | provenance | | +| test.rs:19:22:19:35 | ...::stdin | test.rs:19:22:19:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:12 | +| test.rs:19:51:19:61 | [post] &mut buffer [&ref] | test.rs:19:56:19:61 | [post] buffer | provenance | | +| test.rs:19:56:19:61 | [post] buffer | test.rs:20:15:20:20 | buffer | provenance | | +| test.rs:20:15:20:20 | buffer | test.rs:20:14:20:20 | &buffer | provenance | | +| test.rs:25:22:25:35 | ...::stdin | test.rs:25:22:25:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer | provenance | MaD:34 | +| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:13 | +| test.rs:25:54:25:64 | [post] &mut buffer | test.rs:26:15:26:20 | buffer | provenance | | +| test.rs:25:54:25:64 | [post] &mut buffer [&ref] | test.rs:25:59:25:64 | [post] buffer | provenance | | +| test.rs:25:59:25:64 | [post] buffer | test.rs:26:15:26:20 | buffer | provenance | | +| test.rs:26:15:26:20 | buffer | test.rs:26:14:26:20 | &buffer | provenance | | +| test.rs:31:22:31:35 | ...::stdin | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:35 | +| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:13 | +| test.rs:31:61:31:71 | [post] &mut buffer [&ref] | test.rs:31:66:31:71 | [post] buffer | provenance | | +| test.rs:31:66:31:71 | [post] buffer | test.rs:32:15:32:20 | buffer | provenance | | +| test.rs:32:15:32:20 | buffer | test.rs:32:14:32:20 | &buffer | provenance | | +| test.rs:37:9:37:22 | ...::stdin | test.rs:37:9:37:24 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer | provenance | MaD:33 | +| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:11 | +| test.rs:37:37:37:47 | [post] &mut buffer | test.rs:38:15:38:20 | buffer | provenance | | +| test.rs:37:37:37:47 | [post] &mut buffer [&ref] | test.rs:37:42:37:47 | [post] buffer | provenance | | +| test.rs:37:42:37:47 | [post] buffer | test.rs:38:15:38:20 | buffer | provenance | | +| test.rs:38:15:38:20 | buffer | test.rs:38:14:38:20 | &buffer | provenance | | +| test.rs:41:17:41:30 | ...::stdin | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:9 | +| test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | | +| test.rs:48:13:48:22 | mut reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:4 | +| test.rs:48:26:48:66 | ...::new(...) | test.rs:48:13:48:22 | mut reader | provenance | | +| test.rs:48:50:48:63 | ...::stdin | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:31 | +| test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | | +| test.rs:49:20:49:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | | +| test.rs:49:20:49:37 | TryExpr | test.rs:49:13:49:16 | data | provenance | | +| test.rs:50:15:50:18 | data | test.rs:50:14:50:18 | &data | provenance | | +| test.rs:54:13:54:18 | reader | test.rs:55:20:55:34 | reader.buffer() | provenance | MaD:30 | +| test.rs:54:22:54:62 | ...::new(...) | test.rs:54:13:54:18 | reader | provenance | | +| test.rs:54:46:54:59 | ...::stdin | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:31 | +| test.rs:55:13:55:16 | data | test.rs:56:15:56:18 | data | provenance | | +| test.rs:55:20:55:34 | reader.buffer() | test.rs:55:13:55:16 | data | provenance | | +| test.rs:56:15:56:18 | data | test.rs:56:14:56:18 | &data | provenance | | +| test.rs:61:13:61:22 | mut reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:6 | +| test.rs:61:26:61:66 | ...::new(...) | test.rs:61:13:61:22 | mut reader | provenance | | +| test.rs:61:50:61:63 | ...::stdin | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:31 | +| test.rs:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | | +| test.rs:62:31:62:36 | [post] buffer | test.rs:63:15:63:20 | buffer | provenance | | +| test.rs:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | | +| test.rs:68:13:68:22 | mut reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:7 | +| test.rs:68:26:68:66 | ...::new(...) | test.rs:68:13:68:22 | mut reader | provenance | | +| test.rs:68:50:68:63 | ...::stdin | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:31 | +| test.rs:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | | +| test.rs:69:38:69:43 | [post] buffer | test.rs:70:15:70:20 | buffer | provenance | | +| test.rs:69:38:69:43 | [post] buffer | test.rs:71:14:71:22 | buffer[0] | provenance | | +| test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | | +| test.rs:75:13:75:28 | mut reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:3 | +| test.rs:75:13:75:28 | mut reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:3 | +| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:8 | +| test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | | +| test.rs:75:56:75:69 | ...::stdin | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:31 | +| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:28 | +| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:29 | +| test.rs:77:19:77:29 | Some(...) [Some, Ok] | test.rs:77:24:77:28 | chunk [Ok] | provenance | | +| test.rs:77:24:77:28 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:29 | +| test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | | +| test.rs:83:13:83:18 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:5 | +| test.rs:83:22:83:62 | ...::new(...) | test.rs:83:13:83:18 | reader | provenance | | +| test.rs:83:46:83:59 | ...::stdin | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:31 | +| test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | | +| test.rs:109:13:109:21 | mut stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:109:25:109:40 | ...::stdin | test.rs:109:25:109:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | | +| test.rs:111:33:111:43 | [post] &mut buffer [&ref] | test.rs:111:38:111:43 | [post] buffer | provenance | | +| test.rs:111:38:111:43 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | +| test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | +| test.rs:116:13:116:21 | mut stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:116:25:116:40 | ...::stdin | test.rs:116:25:116:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:116:25:116:42 | ...::stdin(...) | test.rs:116:13:116:21 | mut stdin | provenance | | +| test.rs:118:40:118:50 | [post] &mut buffer [&ref] | test.rs:118:45:118:50 | [post] buffer | provenance | | +| test.rs:118:45:118:50 | [post] buffer | test.rs:119:15:119:20 | buffer | provenance | | +| test.rs:119:15:119:20 | buffer | test.rs:119:14:119:20 | &buffer | provenance | | +| test.rs:123:13:123:21 | mut stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:123:25:123:40 | ...::stdin | test.rs:123:25:123:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:123:25:123:42 | ...::stdin(...) | test.rs:123:13:123:21 | mut stdin | provenance | | +| test.rs:125:43:125:53 | [post] &mut buffer [&ref] | test.rs:125:48:125:53 | [post] buffer | provenance | | +| test.rs:125:48:125:53 | [post] buffer | test.rs:126:15:126:20 | buffer | provenance | | +| test.rs:126:15:126:20 | buffer | test.rs:126:14:126:20 | &buffer | provenance | | +| test.rs:130:13:130:21 | mut stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:21 | +| test.rs:130:25:130:40 | ...::stdin | test.rs:130:25:130:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:130:25:130:42 | ...::stdin(...) | test.rs:130:13:130:21 | mut stdin | provenance | | +| test.rs:132:26:132:36 | [post] &mut buffer [&ref] | test.rs:132:31:132:36 | [post] buffer | provenance | | +| test.rs:132:31:132:36 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | | +| test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | | +| test.rs:137:13:137:21 | mut stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:27 | +| test.rs:137:13:137:21 | mut stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:23 | +| test.rs:137:13:137:21 | mut stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:22 | +| test.rs:137:13:137:21 | mut stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:24 | +| test.rs:137:25:137:40 | ...::stdin | test.rs:137:25:137:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:137:25:137:42 | ...::stdin(...) | test.rs:137:13:137:21 | mut stdin | provenance | | +| test.rs:138:13:138:14 | v1 | test.rs:142:14:142:15 | v1 | provenance | | +| test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | test.rs:138:18:138:38 | await ... [Ok] | provenance | | +| test.rs:138:18:138:38 | await ... [Ok] | test.rs:138:18:138:39 | TryExpr | provenance | | +| test.rs:138:18:138:39 | TryExpr | test.rs:138:13:138:14 | v1 | provenance | | +| test.rs:139:13:139:14 | v2 | test.rs:143:14:143:15 | v2 | provenance | | +| test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | test.rs:139:18:139:39 | await ... [Ok] | provenance | | +| test.rs:139:18:139:39 | await ... [Ok] | test.rs:139:18:139:40 | TryExpr | provenance | | +| test.rs:139:18:139:40 | TryExpr | test.rs:139:13:139:14 | v2 | provenance | | +| test.rs:140:13:140:14 | v3 | test.rs:144:14:144:15 | v3 | provenance | | +| test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | test.rs:140:18:140:39 | await ... [Ok] | provenance | | +| test.rs:140:18:140:39 | await ... [Ok] | test.rs:140:18:140:40 | TryExpr | provenance | | +| test.rs:140:18:140:40 | TryExpr | test.rs:140:13:140:14 | v3 | provenance | | +| test.rs:141:13:141:14 | v4 | test.rs:145:14:145:15 | v4 | provenance | | +| test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | test.rs:141:18:141:42 | await ... [Ok] | provenance | | +| test.rs:141:18:141:42 | await ... [Ok] | test.rs:141:18:141:43 | TryExpr | provenance | | +| test.rs:141:18:141:43 | TryExpr | test.rs:141:13:141:14 | v4 | provenance | | +| test.rs:149:13:149:21 | mut stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:149:25:149:40 | ...::stdin | test.rs:149:25:149:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:149:25:149:42 | ...::stdin(...) | test.rs:149:13:149:21 | mut stdin | provenance | | +| test.rs:151:24:151:34 | [post] &mut buffer [&ref] | test.rs:151:29:151:34 | [post] buffer | provenance | | +| test.rs:151:29:151:34 | [post] buffer | test.rs:152:15:152:20 | buffer | provenance | | +| test.rs:152:15:152:20 | buffer | test.rs:152:14:152:20 | &buffer | provenance | | +| test.rs:158:13:158:22 | mut reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:14 | +| test.rs:158:26:158:70 | ...::new(...) | test.rs:158:13:158:22 | mut reader | provenance | | +| test.rs:158:52:158:67 | ...::stdin | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:37 | +| test.rs:159:13:159:16 | data | test.rs:160:15:160:18 | data | provenance | | +| test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | test.rs:159:20:159:42 | await ... [Ok] | provenance | | +| test.rs:159:20:159:42 | await ... [Ok] | test.rs:159:20:159:43 | TryExpr | provenance | | +| test.rs:159:20:159:43 | TryExpr | test.rs:159:13:159:16 | data | provenance | | +| test.rs:160:15:160:18 | data | test.rs:160:14:160:18 | &data | provenance | | +| test.rs:164:13:164:18 | reader | test.rs:165:20:165:34 | reader.buffer() | provenance | MaD:36 | +| test.rs:164:22:164:66 | ...::new(...) | test.rs:164:13:164:18 | reader | provenance | | +| test.rs:164:48:164:63 | ...::stdin | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:37 | +| test.rs:165:13:165:16 | data | test.rs:166:15:166:18 | data | provenance | | +| test.rs:165:20:165:34 | reader.buffer() | test.rs:165:13:165:16 | data | provenance | | +| test.rs:166:15:166:18 | data | test.rs:166:14:166:18 | &data | provenance | | +| test.rs:171:13:171:22 | mut reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:171:26:171:70 | ...::new(...) | test.rs:171:13:171:22 | mut reader | provenance | | +| test.rs:171:52:171:67 | ...::stdin | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:37 | +| test.rs:172:26:172:36 | [post] &mut buffer [&ref] | test.rs:172:31:172:36 | [post] buffer | provenance | | +| test.rs:172:31:172:36 | [post] buffer | test.rs:173:15:173:20 | buffer | provenance | | +| test.rs:173:15:173:20 | buffer | test.rs:173:14:173:20 | &buffer | provenance | | +| test.rs:178:13:178:22 | mut reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:178:26:178:70 | ...::new(...) | test.rs:178:13:178:22 | mut reader | provenance | | +| test.rs:178:52:178:67 | ...::stdin | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:37 | +| test.rs:179:33:179:43 | [post] &mut buffer [&ref] | test.rs:179:38:179:43 | [post] buffer | provenance | | +| test.rs:179:38:179:43 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | +| test.rs:179:38:179:43 | [post] buffer | test.rs:181:14:181:22 | buffer[0] | provenance | | +| test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | +| test.rs:185:13:185:28 | mut reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | +| test.rs:185:13:185:28 | mut reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | +| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:18 | +| test.rs:185:32:185:88 | ... .split(...) | test.rs:185:13:185:28 | mut reader_split | provenance | | +| test.rs:185:58:185:73 | ...::stdin | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:37 | +| test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:186:14:186:46 | await ... [Ok, Some] | provenance | | +| test.rs:186:14:186:46 | await ... [Ok, Some] | test.rs:186:14:186:47 | TryExpr [Some] | provenance | | +| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:28 | +| test.rs:187:19:187:29 | Some(...) [Some] | test.rs:187:24:187:28 | chunk | provenance | | +| test.rs:187:24:187:28 | chunk | test.rs:188:18:188:22 | chunk | provenance | | +| test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:187:33:187:65 | await ... [Ok, Some] | provenance | | +| test.rs:187:33:187:65 | await ... [Ok, Some] | test.rs:187:33:187:66 | TryExpr [Some] | provenance | | +| test.rs:187:33:187:66 | TryExpr [Some] | test.rs:187:19:187:29 | Some(...) [Some] | provenance | | +| test.rs:193:13:193:18 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:15 | +| test.rs:193:22:193:66 | ...::new(...) | test.rs:193:13:193:18 | reader | provenance | | +| test.rs:193:48:193:63 | ...::stdin | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | +| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:37 | +| test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | +| test.rs:194:13:194:21 | mut lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | +| test.rs:194:25:194:38 | reader.lines() | test.rs:194:13:194:21 | mut lines | provenance | | +| test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | test.rs:195:14:195:36 | await ... [Ok, Some] | provenance | | +| test.rs:195:14:195:36 | await ... [Ok, Some] | test.rs:195:14:195:37 | TryExpr [Some] | provenance | | +| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:28 | +| test.rs:196:19:196:28 | Some(...) [Some] | test.rs:196:24:196:27 | line | provenance | | +| test.rs:196:24:196:27 | line | test.rs:197:18:197:21 | line | provenance | | +| test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | test.rs:196:32:196:54 | await ... [Ok, Some] | provenance | | +| test.rs:196:32:196:54 | await ... [Ok, Some] | test.rs:196:32:196:55 | TryExpr [Some] | provenance | | +| test.rs:196:32:196:55 | TryExpr [Some] | test.rs:196:19:196:28 | Some(...) [Some] | provenance | | +nodes +| test.rs:13:22:13:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:13:22:13:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:13:44:13:54 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:13:44:13:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:13:49:13:54 | [post] buffer | semmle.label | [post] buffer | +| test.rs:14:14:14:20 | &buffer | semmle.label | &buffer | +| test.rs:14:15:14:20 | buffer | semmle.label | buffer | +| test.rs:19:22:19:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:19:22:19:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:19:51:19:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:19:56:19:61 | [post] buffer | semmle.label | [post] buffer | +| test.rs:20:14:20:20 | &buffer | semmle.label | &buffer | +| test.rs:20:15:20:20 | buffer | semmle.label | buffer | +| test.rs:25:22:25:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:25:22:25:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:25:54:25:64 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:25:54:25:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:25:59:25:64 | [post] buffer | semmle.label | [post] buffer | +| test.rs:26:14:26:20 | &buffer | semmle.label | &buffer | +| test.rs:26:15:26:20 | buffer | semmle.label | buffer | +| test.rs:31:22:31:35 | ...::stdin | semmle.label | ...::stdin | +| test.rs:31:22:31:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:31:22:31:44 | ... .lock() | semmle.label | ... .lock() | +| test.rs:31:61:31:71 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:31:66:31:71 | [post] buffer | semmle.label | [post] buffer | +| test.rs:32:14:32:20 | &buffer | semmle.label | &buffer | +| test.rs:32:15:32:20 | buffer | semmle.label | buffer | +| test.rs:37:9:37:22 | ...::stdin | semmle.label | ...::stdin | +| test.rs:37:9:37:24 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:37:37:37:47 | [post] &mut buffer | semmle.label | [post] &mut buffer | +| test.rs:37:37:37:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:37:42:37:47 | [post] buffer | semmle.label | [post] buffer | +| test.rs:38:14:38:20 | &buffer | semmle.label | &buffer | +| test.rs:38:15:38:20 | buffer | semmle.label | buffer | +| test.rs:41:17:41:30 | ...::stdin | semmle.label | ...::stdin | +| test.rs:41:17:41:32 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:41:17:41:40 | ... .bytes() | semmle.label | ... .bytes() | +| test.rs:42:14:42:17 | byte | semmle.label | byte | +| test.rs:48:13:48:22 | mut reader | semmle.label | mut reader | +| test.rs:48:26:48:66 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:48:50:48:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:48:50:48:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:49:13:49:16 | data | semmle.label | data | +| test.rs:49:20:49:36 | reader.fill_buf() [Ok] | semmle.label | reader.fill_buf() [Ok] | +| test.rs:49:20:49:37 | TryExpr | semmle.label | TryExpr | +| test.rs:50:14:50:18 | &data | semmle.label | &data | +| test.rs:50:15:50:18 | data | semmle.label | data | +| test.rs:54:13:54:18 | reader | semmle.label | reader | +| test.rs:54:22:54:62 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:54:46:54:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:54:46:54:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:55:13:55:16 | data | semmle.label | data | +| test.rs:55:20:55:34 | reader.buffer() | semmle.label | reader.buffer() | +| test.rs:56:14:56:18 | &data | semmle.label | &data | +| test.rs:56:15:56:18 | data | semmle.label | data | +| test.rs:61:13:61:22 | mut reader | semmle.label | mut reader | +| test.rs:61:26:61:66 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:61:50:61:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:61:50:61:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:62:26:62:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:62:31:62:36 | [post] buffer | semmle.label | [post] buffer | +| test.rs:63:14:63:20 | &buffer | semmle.label | &buffer | +| test.rs:63:15:63:20 | buffer | semmle.label | buffer | +| test.rs:68:13:68:22 | mut reader | semmle.label | mut reader | +| test.rs:68:26:68:66 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:68:50:68:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:68:50:68:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:69:33:69:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:69:38:69:43 | [post] buffer | semmle.label | [post] buffer | +| test.rs:70:14:70:20 | &buffer | semmle.label | &buffer | +| test.rs:70:15:70:20 | buffer | semmle.label | buffer | +| test.rs:71:14:71:22 | buffer[0] | semmle.label | buffer[0] | +| test.rs:75:13:75:28 | mut reader_split | semmle.label | mut reader_split | +| test.rs:75:32:75:72 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:75:32:75:84 | ... .split(...) | semmle.label | ... .split(...) | +| test.rs:75:56:75:69 | ...::stdin | semmle.label | ...::stdin | +| test.rs:75:56:75:71 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | +| test.rs:76:14:76:41 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:76:14:76:50 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:77:19:77:29 | Some(...) [Some, Ok] | semmle.label | Some(...) [Some, Ok] | +| test.rs:77:24:77:28 | chunk [Ok] | semmle.label | chunk [Ok] | +| test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | +| test.rs:78:18:78:31 | chunk.unwrap() | semmle.label | chunk.unwrap() | +| test.rs:83:13:83:18 | reader | semmle.label | reader | +| test.rs:83:22:83:62 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:83:46:83:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:83:46:83:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:84:21:84:34 | reader.lines() | semmle.label | reader.lines() | +| test.rs:85:18:85:21 | line | semmle.label | line | +| test.rs:109:13:109:21 | mut stdin | semmle.label | mut stdin | +| test.rs:109:25:109:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:109:25:109:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:111:33:111:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:111:38:111:43 | [post] buffer | semmle.label | [post] buffer | +| test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | +| test.rs:112:15:112:20 | buffer | semmle.label | buffer | +| test.rs:116:13:116:21 | mut stdin | semmle.label | mut stdin | +| test.rs:116:25:116:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:116:25:116:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:118:40:118:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:118:45:118:50 | [post] buffer | semmle.label | [post] buffer | +| test.rs:119:14:119:20 | &buffer | semmle.label | &buffer | +| test.rs:119:15:119:20 | buffer | semmle.label | buffer | +| test.rs:123:13:123:21 | mut stdin | semmle.label | mut stdin | +| test.rs:123:25:123:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:123:25:123:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:125:43:125:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:125:48:125:53 | [post] buffer | semmle.label | [post] buffer | +| test.rs:126:14:126:20 | &buffer | semmle.label | &buffer | +| test.rs:126:15:126:20 | buffer | semmle.label | buffer | +| test.rs:130:13:130:21 | mut stdin | semmle.label | mut stdin | +| test.rs:130:25:130:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:130:25:130:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:132:26:132:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:132:31:132:36 | [post] buffer | semmle.label | [post] buffer | +| test.rs:133:14:133:20 | &buffer | semmle.label | &buffer | +| test.rs:133:15:133:20 | buffer | semmle.label | buffer | +| test.rs:137:13:137:21 | mut stdin | semmle.label | mut stdin | +| test.rs:137:25:137:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:137:25:137:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:138:13:138:14 | v1 | semmle.label | v1 | +| test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | semmle.label | stdin.read_u8() [future, Ok] | +| test.rs:138:18:138:38 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:138:18:138:39 | TryExpr | semmle.label | TryExpr | +| test.rs:139:13:139:14 | v2 | semmle.label | v2 | +| test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | semmle.label | stdin.read_i16() [future, Ok] | +| test.rs:139:18:139:39 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:139:18:139:40 | TryExpr | semmle.label | TryExpr | +| test.rs:140:13:140:14 | v3 | semmle.label | v3 | +| test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | semmle.label | stdin.read_f32() [future, Ok] | +| test.rs:140:18:140:39 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:140:18:140:40 | TryExpr | semmle.label | TryExpr | +| test.rs:141:13:141:14 | v4 | semmle.label | v4 | +| test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | semmle.label | stdin.read_i64_le() [future, Ok] | +| test.rs:141:18:141:42 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:141:18:141:43 | TryExpr | semmle.label | TryExpr | +| test.rs:142:14:142:15 | v1 | semmle.label | v1 | +| test.rs:143:14:143:15 | v2 | semmle.label | v2 | +| test.rs:144:14:144:15 | v3 | semmle.label | v3 | +| test.rs:145:14:145:15 | v4 | semmle.label | v4 | +| test.rs:149:13:149:21 | mut stdin | semmle.label | mut stdin | +| test.rs:149:25:149:40 | ...::stdin | semmle.label | ...::stdin | +| test.rs:149:25:149:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:151:24:151:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:151:29:151:34 | [post] buffer | semmle.label | [post] buffer | +| test.rs:152:14:152:20 | &buffer | semmle.label | &buffer | +| test.rs:152:15:152:20 | buffer | semmle.label | buffer | +| test.rs:158:13:158:22 | mut reader | semmle.label | mut reader | +| test.rs:158:26:158:70 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:158:52:158:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:158:52:158:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:159:13:159:16 | data | semmle.label | data | +| test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | semmle.label | reader.fill_buf() [future, Ok] | +| test.rs:159:20:159:42 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:159:20:159:43 | TryExpr | semmle.label | TryExpr | +| test.rs:160:14:160:18 | &data | semmle.label | &data | +| test.rs:160:15:160:18 | data | semmle.label | data | +| test.rs:164:13:164:18 | reader | semmle.label | reader | +| test.rs:164:22:164:66 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:164:48:164:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:164:48:164:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:165:13:165:16 | data | semmle.label | data | +| test.rs:165:20:165:34 | reader.buffer() | semmle.label | reader.buffer() | +| test.rs:166:14:166:18 | &data | semmle.label | &data | +| test.rs:166:15:166:18 | data | semmle.label | data | +| test.rs:171:13:171:22 | mut reader | semmle.label | mut reader | +| test.rs:171:26:171:70 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:171:52:171:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:171:52:171:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:172:26:172:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:172:31:172:36 | [post] buffer | semmle.label | [post] buffer | +| test.rs:173:14:173:20 | &buffer | semmle.label | &buffer | +| test.rs:173:15:173:20 | buffer | semmle.label | buffer | +| test.rs:178:13:178:22 | mut reader | semmle.label | mut reader | +| test.rs:178:26:178:70 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:178:52:178:67 | ...::stdin | semmle.label | ...::stdin | +| test.rs:178:52:178:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:179:33:179:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:179:38:179:43 | [post] buffer | semmle.label | [post] buffer | +| test.rs:180:14:180:20 | &buffer | semmle.label | &buffer | +| test.rs:180:15:180:20 | buffer | semmle.label | buffer | +| test.rs:181:14:181:22 | buffer[0] | semmle.label | buffer[0] | +| test.rs:185:13:185:28 | mut reader_split | semmle.label | mut reader_split | +| test.rs:185:32:185:76 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:185:32:185:88 | ... .split(...) | semmle.label | ... .split(...) | +| test.rs:185:58:185:73 | ...::stdin | semmle.label | ...::stdin | +| test.rs:185:58:185:75 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | +| test.rs:186:14:186:46 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:186:14:186:47 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:186:14:186:56 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:187:19:187:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| test.rs:187:24:187:28 | chunk | semmle.label | chunk | +| test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | +| test.rs:187:33:187:65 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:187:33:187:66 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:188:18:188:22 | chunk | semmle.label | chunk | +| test.rs:193:13:193:18 | reader | semmle.label | reader | +| test.rs:193:22:193:66 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:193:48:193:63 | ...::stdin | semmle.label | ...::stdin | +| test.rs:193:48:193:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:194:13:194:21 | mut lines | semmle.label | mut lines | +| test.rs:194:25:194:38 | reader.lines() | semmle.label | reader.lines() | +| test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | +| test.rs:195:14:195:36 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:195:14:195:37 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:195:14:195:46 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:196:19:196:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| test.rs:196:24:196:27 | line | semmle.label | line | +| test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | +| test.rs:196:32:196:54 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:196:32:196:55 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:197:18:197:21 | line | semmle.label | line | +subpaths +testFailures +#select +| test.rs:14:14:14:20 | &buffer | test.rs:13:22:13:35 | ...::stdin | test.rs:14:14:14:20 | &buffer | $@ | test.rs:13:22:13:35 | ...::stdin | ...::stdin | +| test.rs:20:14:20:20 | &buffer | test.rs:19:22:19:35 | ...::stdin | test.rs:20:14:20:20 | &buffer | $@ | test.rs:19:22:19:35 | ...::stdin | ...::stdin | +| test.rs:26:14:26:20 | &buffer | test.rs:25:22:25:35 | ...::stdin | test.rs:26:14:26:20 | &buffer | $@ | test.rs:25:22:25:35 | ...::stdin | ...::stdin | +| test.rs:32:14:32:20 | &buffer | test.rs:31:22:31:35 | ...::stdin | test.rs:32:14:32:20 | &buffer | $@ | test.rs:31:22:31:35 | ...::stdin | ...::stdin | +| test.rs:38:14:38:20 | &buffer | test.rs:37:9:37:22 | ...::stdin | test.rs:38:14:38:20 | &buffer | $@ | test.rs:37:9:37:22 | ...::stdin | ...::stdin | +| test.rs:42:14:42:17 | byte | test.rs:41:17:41:30 | ...::stdin | test.rs:42:14:42:17 | byte | $@ | test.rs:41:17:41:30 | ...::stdin | ...::stdin | +| test.rs:50:14:50:18 | &data | test.rs:48:50:48:63 | ...::stdin | test.rs:50:14:50:18 | &data | $@ | test.rs:48:50:48:63 | ...::stdin | ...::stdin | +| test.rs:56:14:56:18 | &data | test.rs:54:46:54:59 | ...::stdin | test.rs:56:14:56:18 | &data | $@ | test.rs:54:46:54:59 | ...::stdin | ...::stdin | +| test.rs:63:14:63:20 | &buffer | test.rs:61:50:61:63 | ...::stdin | test.rs:63:14:63:20 | &buffer | $@ | test.rs:61:50:61:63 | ...::stdin | ...::stdin | +| test.rs:70:14:70:20 | &buffer | test.rs:68:50:68:63 | ...::stdin | test.rs:70:14:70:20 | &buffer | $@ | test.rs:68:50:68:63 | ...::stdin | ...::stdin | +| test.rs:71:14:71:22 | buffer[0] | test.rs:68:50:68:63 | ...::stdin | test.rs:71:14:71:22 | buffer[0] | $@ | test.rs:68:50:68:63 | ...::stdin | ...::stdin | +| test.rs:76:14:76:50 | ... .unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:76:14:76:50 | ... .unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | +| test.rs:78:18:78:31 | chunk.unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:78:18:78:31 | chunk.unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | +| test.rs:85:18:85:21 | line | test.rs:83:46:83:59 | ...::stdin | test.rs:85:18:85:21 | line | $@ | test.rs:83:46:83:59 | ...::stdin | ...::stdin | +| test.rs:112:14:112:20 | &buffer | test.rs:109:25:109:40 | ...::stdin | test.rs:112:14:112:20 | &buffer | $@ | test.rs:109:25:109:40 | ...::stdin | ...::stdin | +| test.rs:119:14:119:20 | &buffer | test.rs:116:25:116:40 | ...::stdin | test.rs:119:14:119:20 | &buffer | $@ | test.rs:116:25:116:40 | ...::stdin | ...::stdin | +| test.rs:126:14:126:20 | &buffer | test.rs:123:25:123:40 | ...::stdin | test.rs:126:14:126:20 | &buffer | $@ | test.rs:123:25:123:40 | ...::stdin | ...::stdin | +| test.rs:133:14:133:20 | &buffer | test.rs:130:25:130:40 | ...::stdin | test.rs:133:14:133:20 | &buffer | $@ | test.rs:130:25:130:40 | ...::stdin | ...::stdin | +| test.rs:142:14:142:15 | v1 | test.rs:137:25:137:40 | ...::stdin | test.rs:142:14:142:15 | v1 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | +| test.rs:143:14:143:15 | v2 | test.rs:137:25:137:40 | ...::stdin | test.rs:143:14:143:15 | v2 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | +| test.rs:144:14:144:15 | v3 | test.rs:137:25:137:40 | ...::stdin | test.rs:144:14:144:15 | v3 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | +| test.rs:145:14:145:15 | v4 | test.rs:137:25:137:40 | ...::stdin | test.rs:145:14:145:15 | v4 | $@ | test.rs:137:25:137:40 | ...::stdin | ...::stdin | +| test.rs:152:14:152:20 | &buffer | test.rs:149:25:149:40 | ...::stdin | test.rs:152:14:152:20 | &buffer | $@ | test.rs:149:25:149:40 | ...::stdin | ...::stdin | +| test.rs:160:14:160:18 | &data | test.rs:158:52:158:67 | ...::stdin | test.rs:160:14:160:18 | &data | $@ | test.rs:158:52:158:67 | ...::stdin | ...::stdin | +| test.rs:166:14:166:18 | &data | test.rs:164:48:164:63 | ...::stdin | test.rs:166:14:166:18 | &data | $@ | test.rs:164:48:164:63 | ...::stdin | ...::stdin | +| test.rs:173:14:173:20 | &buffer | test.rs:171:52:171:67 | ...::stdin | test.rs:173:14:173:20 | &buffer | $@ | test.rs:171:52:171:67 | ...::stdin | ...::stdin | +| test.rs:180:14:180:20 | &buffer | test.rs:178:52:178:67 | ...::stdin | test.rs:180:14:180:20 | &buffer | $@ | test.rs:178:52:178:67 | ...::stdin | ...::stdin | +| test.rs:181:14:181:22 | buffer[0] | test.rs:178:52:178:67 | ...::stdin | test.rs:181:14:181:22 | buffer[0] | $@ | test.rs:178:52:178:67 | ...::stdin | ...::stdin | +| test.rs:186:14:186:56 | ... .unwrap() | test.rs:185:58:185:73 | ...::stdin | test.rs:186:14:186:56 | ... .unwrap() | $@ | test.rs:185:58:185:73 | ...::stdin | ...::stdin | +| test.rs:188:18:188:22 | chunk | test.rs:185:58:185:73 | ...::stdin | test.rs:188:18:188:22 | chunk | $@ | test.rs:185:58:185:73 | ...::stdin | ...::stdin | +| test.rs:195:14:195:46 | ... .unwrap() | test.rs:193:48:193:63 | ...::stdin | test.rs:195:14:195:46 | ... .unwrap() | $@ | test.rs:193:48:193:63 | ...::stdin | ...::stdin | +| test.rs:197:18:197:21 | line | test.rs:193:48:193:63 | ...::stdin | test.rs:197:18:197:21 | line | $@ | test.rs:193:48:193:63 | ...::stdin | ...::stdin | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected new file mode 100644 index 00000000000..08523773314 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.expected @@ -0,0 +1,26 @@ +| test.rs:13:22:13:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:19:22:19:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:25:22:25:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:31:22:31:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:37:9:37:22 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:41:17:41:30 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:48:50:48:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:54:46:54:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:61:50:61:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:68:50:68:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:75:56:75:69 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:83:46:83:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:90:46:90:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:96:46:96:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:109:25:109:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:116:25:116:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:123:25:123:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:130:25:130:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:137:25:137:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:149:25:149:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:158:52:158:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:164:48:164:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:171:52:171:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:178:52:178:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:185:58:185:73 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | +| test.rs:193:48:193:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/options.yml b/rust/ql/test/library-tests/dataflow/sources/stdin/options.yml new file mode 100644 index 00000000000..0b1ee7f1f33 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/options.yml @@ -0,0 +1,5 @@ +qltest_cargo_check: true +qltest_dependencies: + - bytes = { version = "1.10.1" } + - futures = { version = "0.3" } + - tokio = { version = "1.43.0", features = ["full"] } diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs b/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs new file mode 100644 index 00000000000..230303fa1ea --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs @@ -0,0 +1,219 @@ +fn sink(_: T) { } + +// --- tests --- + +use std::io::{Read, BufRead}; +use tokio::io::{AsyncReadExt, AsyncBufReadExt}; + +fn test_io_stdin() -> std::io::Result<()> { + // --- stdin --- + + { + let mut buffer = [0u8; 100]; + let _bytes = std::io::stdin().read(&mut buffer)?; // $ Alert[rust/summary/taint-sources] + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = Vec::::new(); + let _bytes = std::io::stdin().read_to_end(&mut buffer)?; // $ Alert[rust/summary/taint-sources] + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = String::new(); + let _bytes = std::io::stdin().read_to_string(&mut buffer)?; // $ Alert[rust/summary/taint-sources] + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = String::new(); + let _bytes = std::io::stdin().lock().read_to_string(&mut buffer)?; // $ Alert[rust/summary/taint-sources] + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = [0; 100]; + std::io::stdin().read_exact(&mut buffer)?; // $ Alert[rust/summary/taint-sources] + sink(&buffer); // $ hasTaintFlow + } + + for byte in std::io::stdin().bytes() { // $ Alert[rust/summary/taint-sources] + sink(byte); // $ hasTaintFlow + } + + // --- BufReader --- + + { + let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + let data = reader.fill_buf()?; + sink(&data); // $ hasTaintFlow + } + + { + let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + let data = reader.buffer(); + sink(&data); // $ hasTaintFlow + } + + { + let mut buffer = String::new(); + let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + reader.read_line(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = Vec::::new(); + let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + reader.read_until(b',', &mut buffer)?; + sink(&buffer); // $ hasTaintFlow + sink(buffer[0]); // $ hasTaintFlow + } + + { + let mut reader_split = std::io::BufReader::new(std::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] + sink(reader_split.next().unwrap().unwrap()); // $ hasTaintFlow + while let Some(chunk) = reader_split.next() { + sink(chunk.unwrap()); // $ hasTaintFlow + } + } + + { + let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + for line in reader.lines() { + sink(line); // $ hasTaintFlow + } + } + + { + let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + let line = reader.lines().nth(1).unwrap(); + sink(line.unwrap().clone()); // $ MISSING: hasTaintFlow + } + + { + let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] + let lines: Vec<_> = reader.lines().collect(); + sink(lines[1].as_ref().unwrap().clone()); // $ MISSING: hasTaintFlow + } + + Ok(()) +} + +async fn test_tokio_stdin() -> Result<(), Box> { + + // --- async reading from stdin --- + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let mut buffer = [0u8; 100]; + let _bytes = stdin.read(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let mut buffer = Vec::::new(); + let _bytes = stdin.read_to_end(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let mut buffer = String::new(); + let _bytes = stdin.read_to_string(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let mut buffer = [0; 100]; + stdin.read_exact(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let v1 = stdin.read_u8().await?; + let v2 = stdin.read_i16().await?; + let v3 = stdin.read_f32().await?; + let v4 = stdin.read_i64_le().await?; + sink(v1); // $ hasTaintFlow + sink(v2); // $ hasTaintFlow + sink(v3); // $ hasTaintFlow + sink(v4); // $ hasTaintFlow + } + + { + let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] + let mut buffer = bytes::BytesMut::new(); + stdin.read_buf(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + // --- async reading from stdin (BufReader) --- + + { + let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] + let data = reader.fill_buf().await?; + sink(&data); // $ hasTaintFlow + } + + { + let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] + let data = reader.buffer(); + sink(&data); // $ hasTaintFlow + } + + { + let mut buffer = String::new(); + let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] + reader.read_line(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + } + + { + let mut buffer = Vec::::new(); + let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] + reader.read_until(b',', &mut buffer).await?; + sink(&buffer); // $ hasTaintFlow + sink(buffer[0]); // $ hasTaintFlow + } + + { + let mut reader_split = tokio::io::BufReader::new(tokio::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] + sink(reader_split.next_segment().await?.unwrap()); // $ hasTaintFlow + while let Some(chunk) = reader_split.next_segment().await? { + sink(chunk); // $ hasTaintFlow + } + } + + { + let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] + let mut lines = reader.lines(); + sink(lines.next_line().await?.unwrap()); // $ hasTaintFlow + while let Some(line) = lines.next_line().await? { + sink(line); // $ hasTaintFlow + } + } + + Ok(()) +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + println!("test_io_stdin..."); + match test_io_stdin() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_tokio_stdin..."); + match futures::executor::block_on(test_tokio_stdin()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + Ok(()) +} diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 5f45459aa72..957eafa6d24 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -146,207 +146,6 @@ async fn test_hyper_http(case: i64) -> Result<(), Box> { Ok(()) } -use std::io::Read; -use std::io::BufRead; - -fn test_io_stdin() -> std::io::Result<()> { - // --- stdin --- - - { - let mut buffer = [0u8; 100]; - let _bytes = std::io::stdin().read(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = Vec::::new(); - let _bytes = std::io::stdin().read_to_end(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = String::new(); - let _bytes = std::io::stdin().read_to_string(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = String::new(); - let _bytes = std::io::stdin().lock().read_to_string(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = [0; 100]; - std::io::stdin().read_exact(&mut buffer)?; // $ Alert[rust/summary/taint-sources] - sink(&buffer); // $ hasTaintFlow - } - - for byte in std::io::stdin().bytes() { // $ Alert[rust/summary/taint-sources] - sink(byte); // $ hasTaintFlow - } - - // --- BufReader --- - - { - let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - let data = reader.fill_buf()?; - sink(&data); // $ hasTaintFlow - } - - { - let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - let data = reader.buffer(); - sink(&data); // $ hasTaintFlow - } - - { - let mut buffer = String::new(); - let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - reader.read_line(&mut buffer)?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = Vec::::new(); - let mut reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - reader.read_until(b',', &mut buffer)?; - sink(&buffer); // $ hasTaintFlow - sink(buffer[0]); // $ hasTaintFlow - } - - { - let mut reader_split = std::io::BufReader::new(std::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] - sink(reader_split.next().unwrap().unwrap()); // $ hasTaintFlow - while let Some(chunk) = reader_split.next() { - sink(chunk.unwrap()); // $ hasTaintFlow - } - } - - { - let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - for line in reader.lines() { - sink(line); // $ hasTaintFlow - } - } - - { - let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - let line = reader.lines().nth(1).unwrap(); - sink(line.unwrap().clone()); // $ MISSING: hasTaintFlow - } - - { - let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] - let lines: Vec<_> = reader.lines().collect(); - sink(lines[1].as_ref().unwrap().clone()); // $ MISSING: hasTaintFlow - } - - Ok(()) -} - -use tokio::io::{AsyncReadExt, AsyncBufReadExt}; - -async fn test_tokio_stdin() -> Result<(), Box> { - - // --- async reading from stdin --- - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let mut buffer = [0u8; 100]; - let _bytes = stdin.read(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let mut buffer = Vec::::new(); - let _bytes = stdin.read_to_end(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let mut buffer = String::new(); - let _bytes = stdin.read_to_string(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let mut buffer = [0; 100]; - stdin.read_exact(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let v1 = stdin.read_u8().await?; - let v2 = stdin.read_i16().await?; - let v3 = stdin.read_f32().await?; - let v4 = stdin.read_i64_le().await?; - sink(v1); // $ hasTaintFlow - sink(v2); // $ hasTaintFlow - sink(v3); // $ hasTaintFlow - sink(v4); // $ hasTaintFlow - } - - { - let mut stdin = tokio::io::stdin(); // $ Alert[rust/summary/taint-sources] - let mut buffer = bytes::BytesMut::new(); - stdin.read_buf(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - // --- async reading from stdin (BufReader) --- - - { - let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] - let data = reader.fill_buf().await?; - sink(&data); // $ hasTaintFlow - } - - { - let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] - let data = reader.buffer(); - sink(&data); // $ hasTaintFlow - } - - { - let mut buffer = String::new(); - let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] - reader.read_line(&mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - } - - { - let mut buffer = Vec::::new(); - let mut reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] - reader.read_until(b',', &mut buffer).await?; - sink(&buffer); // $ hasTaintFlow - sink(buffer[0]); // $ hasTaintFlow - } - - { - let mut reader_split = tokio::io::BufReader::new(tokio::io::stdin()).split(b','); // $ Alert[rust/summary/taint-sources] - sink(reader_split.next_segment().await?.unwrap()); // $ hasTaintFlow - while let Some(chunk) = reader_split.next_segment().await? { - sink(chunk); // $ hasTaintFlow - } - } - - { - let reader = tokio::io::BufReader::new(tokio::io::stdin()); // $ Alert[rust/summary/taint-sources] - let mut lines = reader.lines(); - sink(lines.next_line().await?.unwrap()); // $ hasTaintFlow - while let Some(line) = lines.next_line().await? { - sink(line); // $ hasTaintFlow - } - } - - Ok(()) -} - use std::net::ToSocketAddrs; async fn test_std_tcpstream(case: i64) -> std::io::Result<()> { @@ -777,18 +576,6 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } - println!("test_io_stdin..."); - match test_io_stdin() { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_tokio_stdin..."); - match futures::executor::block_on(test_tokio_stdin()) { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - println!("test_std_tcpstream..."); match futures::executor::block_on(test_std_tcpstream(case)) { Ok(_) => println!("complete"), From 7ddd441e5f3e49ab310a331380f3ad6492c2c753 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:25:11 +0100 Subject: [PATCH 241/965] Rust: Split off sources/database test. --- .../dataflow/sources/database/Cargo.lock | 2008 +++++++++++++++++ .../sources/database/InlineFlow.expected | 205 ++ .../dataflow/sources/database/InlineFlow.ql | 36 + .../sources/database/TaintSources.expected | 25 + .../sources/database/TaintSources.qlref | 2 + .../dataflow/sources/database/options.yml | 7 + .../dataflow/sources/database/test.rs | 222 ++ .../dataflow/sources/options.yml | 2 - .../library-tests/dataflow/sources/test.rs | 214 -- 9 files changed, 2505 insertions(+), 216 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/TaintSources.qlref create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/options.yml create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/test.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/database/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/database/Cargo.lock new file mode 100644 index 00000000000..5edf980e52e --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/Cargo.lock @@ -0,0 +1,2008 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "btoi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" +dependencies = [ + "num-traits", +] + +[[package]] +name = "bufstream" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derive_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +dependencies = [ + "crc32fast", + "libz-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", +] + +[[package]] +name = "io-enum" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d197db2f7ebf90507296df3aebaf65d69f5dce8559d8dbd82776a6cadab61bbf" +dependencies = [ + "derive_utils", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keyed_priority_queue" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +dependencies = [ + "indexmap", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libz-sys" +version = "1.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + +[[package]] +name = "lru" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "mysql" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2510a735f601bab18202b07ea0a197bd1d130d3a5ce2edf4577d225f0c3ee4" +dependencies = [ + "bufstream", + "bytes", + "crossbeam-queue", + "crossbeam-utils", + "flate2", + "io-enum", + "libc", + "lru 0.12.5", + "mysql_common", + "named_pipe", + "pem", + "percent-encoding", + "socket2 0.5.10", + "twox-hash", + "url", +] + +[[package]] +name = "mysql-common-derive" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" +dependencies = [ + "darling", + "heck", + "num-bigint", + "proc-macro-crate", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", + "termcolor", + "thiserror", +] + +[[package]] +name = "mysql_async" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "277ce2f2459b2af4cc6d0a0b7892381f80800832f57c533f03e2845f4ea331ea" +dependencies = [ + "bytes", + "crossbeam-queue", + "flate2", + "futures-core", + "futures-sink", + "futures-util", + "keyed_priority_queue", + "lru 0.14.0", + "mysql_common", + "pem", + "percent-encoding", + "rand", + "serde", + "serde_json", + "socket2 0.5.10", + "thiserror", + "tokio", + "tokio-util", + "twox-hash", + "url", +] + +[[package]] +name = "mysql_common" +version = "0.35.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" +dependencies = [ + "base64", + "bitflags", + "btoi", + "byteorder", + "bytes", + "crc32fast", + "flate2", + "getrandom", + "mysql-common-derive", + "num-bigint", + "num-traits", + "regex", + "saturating", + "serde", + "serde_json", + "sha1", + "sha2", + "thiserror", + "uuid", +] + +[[package]] +name = "named_pipe" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64", + "serde_core", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "saturating" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "syn" +version = "2.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "async-std", + "futures", + "mysql", + "mysql_async", + "tokio", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected new file mode 100644 index 00000000000..db1e69c43fb --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected @@ -0,0 +1,205 @@ +models +| 1 | Source: <_ as mysql::conn::queryable::Queryable>::query_first; ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; database | +| 2 | Source: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | +| 3 | Source: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | +| 4 | Source: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | +| 5 | Source: <_ as mysql_async::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | +| 6 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)].Element; database | +| 7 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 8 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 9 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 10 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 11 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 12 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 13 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | +| 14 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | +| 15 | Summary: ::add; Argument[0]; ReturnValue; taint | +| 16 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 17 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +edges +| test.rs:18:13:18:14 | v1 | test.rs:19:14:19:15 | v1 | provenance | | +| test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:16 | +| test.rs:18:24:18:42 | ... .unwrap() | test.rs:18:13:18:14 | v1 | provenance | | +| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:21:13:21:14 | v2 | test.rs:22:14:22:15 | v2 | provenance | | +| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:17 | +| test.rs:21:24:21:55 | ... .unwrap() | test.rs:21:13:21:14 | v2 | provenance | | +| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | +| test.rs:24:13:24:14 | v3 | test.rs:25:14:25:15 | v3 | provenance | | +| test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:16 | +| test.rs:24:24:24:43 | ... .unwrap() | test.rs:24:13:24:14 | v3 | provenance | | +| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:9 | +| test.rs:27:13:27:14 | v4 | test.rs:28:14:28:15 | v4 | provenance | | +| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:17 | +| test.rs:27:24:27:56 | ... .unwrap() | test.rs:27:13:27:14 | v4 | provenance | | +| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | +| test.rs:37:13:37:14 | v6 | test.rs:38:14:38:15 | v6 | provenance | | +| test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | test.rs:37:23:37:64 | TryExpr [Some] | provenance | | +| test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:16 | +| test.rs:37:23:37:73 | ... .unwrap() | test.rs:37:13:37:14 | v6 | provenance | | +| test.rs:37:28:37:38 | query_first | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | +| test.rs:40:13:40:18 | mut t1 [element] | test.rs:42:20:42:21 | t1 [element] | provenance | | +| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | test.rs:40:22:40:72 | TryExpr [element] | provenance | | +| test.rs:40:22:40:72 | TryExpr [element] | test.rs:40:13:40:18 | mut t1 [element] | provenance | | +| test.rs:40:27:40:35 | exec_iter | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:6 | +| test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:16 | +| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:42:13:42:15 | row | test.rs:44:22:44:22 | v | provenance | | +| test.rs:42:20:42:21 | t1 [element] | test.rs:42:13:42:15 | row | provenance | | +| test.rs:48:22:48:30 | query_map | test.rs:50:14:50:24 | ...: i64 | provenance | Src:MaD:3 | +| test.rs:50:14:50:24 | ...: i64 | test.rs:51:22:51:27 | values | provenance | | +| test.rs:64:13:64:17 | total | test.rs:68:14:68:18 | total | provenance | | +| test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | test.rs:64:21:67:11 | TryExpr | provenance | | +| test.rs:64:21:67:11 | TryExpr | test.rs:64:13:64:17 | total | provenance | | +| test.rs:64:26:64:35 | query_fold | test.rs:64:76:64:83 | ...: i64 | provenance | Src:MaD:2 | +| test.rs:64:76:64:83 | ...: i64 | test.rs:64:86:67:9 | { ... } | provenance | | +| test.rs:64:76:64:83 | ...: i64 | test.rs:65:18:65:20 | row | provenance | | +| test.rs:64:76:64:83 | ...: i64 | test.rs:66:19:66:21 | row | provenance | | +| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:13 | +| test.rs:66:13:66:21 | ... + ... | test.rs:64:86:67:9 | { ... } | provenance | | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:11 | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:12 | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:15 | +| test.rs:105:13:105:14 | v1 | test.rs:106:14:106:15 | v1 | provenance | | +| test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:16 | +| test.rs:105:24:105:42 | ... .unwrap() | test.rs:105:13:105:14 | v1 | provenance | | +| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:108:13:108:14 | v2 | test.rs:109:14:109:15 | v2 | provenance | | +| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:17 | +| test.rs:108:24:108:55 | ... .unwrap() | test.rs:108:13:108:14 | v2 | provenance | | +| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | +| test.rs:111:13:111:14 | v3 | test.rs:112:14:112:15 | v3 | provenance | | +| test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:16 | +| test.rs:111:24:111:43 | ... .unwrap() | test.rs:111:13:111:14 | v3 | provenance | | +| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:9 | +| test.rs:114:13:114:14 | v4 | test.rs:115:14:115:15 | v4 | provenance | | +| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:17 | +| test.rs:114:24:114:56 | ... .unwrap() | test.rs:114:13:114:14 | v4 | provenance | | +| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | +| test.rs:135:22:135:30 | query_map | test.rs:137:14:137:24 | ...: i64 | provenance | Src:MaD:5 | +| test.rs:137:14:137:24 | ...: i64 | test.rs:138:22:138:27 | values | provenance | | +| test.rs:151:13:151:17 | total | test.rs:155:14:155:18 | total | provenance | | +| test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | test.rs:151:21:154:16 | await ... [Ok] | provenance | | +| test.rs:151:21:154:16 | await ... [Ok] | test.rs:151:21:154:17 | TryExpr | provenance | | +| test.rs:151:21:154:17 | TryExpr | test.rs:151:13:151:17 | total | provenance | | +| test.rs:151:26:151:35 | query_fold | test.rs:151:76:151:83 | ...: i64 | provenance | Src:MaD:4 | +| test.rs:151:76:151:83 | ...: i64 | test.rs:151:86:154:9 | { ... } | provenance | | +| test.rs:151:76:151:83 | ...: i64 | test.rs:152:18:152:20 | row | provenance | | +| test.rs:151:76:151:83 | ...: i64 | test.rs:153:19:153:21 | row | provenance | | +| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:14 | +| test.rs:153:13:153:21 | ... + ... | test.rs:151:86:154:9 | { ... } | provenance | | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:11 | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:12 | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:15 | +nodes +| test.rs:18:13:18:14 | v1 | semmle.label | v1 | +| test.rs:18:24:18:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | +| test.rs:18:24:18:42 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:18:28:18:30 | get | semmle.label | get | +| test.rs:19:14:19:15 | v1 | semmle.label | v1 | +| test.rs:21:13:21:14 | v2 | semmle.label | v2 | +| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | +| test.rs:21:24:21:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:21:24:21:55 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:21:28:21:34 | get_opt | semmle.label | get_opt | +| test.rs:22:14:22:15 | v2 | semmle.label | v2 | +| test.rs:24:13:24:14 | v3 | semmle.label | v3 | +| test.rs:24:24:24:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | +| test.rs:24:24:24:43 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:24:28:24:31 | take | semmle.label | take | +| test.rs:25:14:25:15 | v3 | semmle.label | v3 | +| test.rs:27:13:27:14 | v4 | semmle.label | v4 | +| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | +| test.rs:27:24:27:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:27:24:27:56 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:27:28:27:35 | take_opt | semmle.label | take_opt | +| test.rs:28:14:28:15 | v4 | semmle.label | v4 | +| test.rs:37:13:37:14 | v6 | semmle.label | v6 | +| test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | semmle.label | conn.query_first(...) [Ok, Some] | +| test.rs:37:23:37:64 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:37:23:37:73 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:37:28:37:38 | query_first | semmle.label | query_first | +| test.rs:38:14:38:15 | v6 | semmle.label | v6 | +| test.rs:40:13:40:18 | mut t1 [element] | semmle.label | mut t1 [element] | +| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | +| test.rs:40:22:40:72 | TryExpr [element] | semmle.label | TryExpr [element] | +| test.rs:40:27:40:35 | exec_iter | semmle.label | exec_iter | +| test.rs:41:14:41:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | +| test.rs:41:14:41:70 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:41:42:41:44 | get | semmle.label | get | +| test.rs:42:13:42:15 | row | semmle.label | row | +| test.rs:42:20:42:21 | t1 [element] | semmle.label | t1 [element] | +| test.rs:44:22:44:22 | v | semmle.label | v | +| test.rs:48:22:48:30 | query_map | semmle.label | query_map | +| test.rs:50:14:50:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:51:22:51:27 | values | semmle.label | values | +| test.rs:64:13:64:17 | total | semmle.label | total | +| test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | semmle.label | conn.query_fold(...) [Ok] | +| test.rs:64:21:67:11 | TryExpr | semmle.label | TryExpr | +| test.rs:64:26:64:35 | query_fold | semmle.label | query_fold | +| test.rs:64:76:64:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:64:86:67:9 | { ... } | semmle.label | { ... } | +| test.rs:65:18:65:20 | row | semmle.label | row | +| test.rs:66:13:66:21 | ... + ... | semmle.label | ... + ... | +| test.rs:66:19:66:21 | row | semmle.label | row | +| test.rs:68:14:68:18 | total | semmle.label | total | +| test.rs:105:13:105:14 | v1 | semmle.label | v1 | +| test.rs:105:24:105:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | +| test.rs:105:24:105:42 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:105:28:105:30 | get | semmle.label | get | +| test.rs:106:14:106:15 | v1 | semmle.label | v1 | +| test.rs:108:13:108:14 | v2 | semmle.label | v2 | +| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | +| test.rs:108:24:108:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:108:24:108:55 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:108:28:108:34 | get_opt | semmle.label | get_opt | +| test.rs:109:14:109:15 | v2 | semmle.label | v2 | +| test.rs:111:13:111:14 | v3 | semmle.label | v3 | +| test.rs:111:24:111:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | +| test.rs:111:24:111:43 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:111:28:111:31 | take | semmle.label | take | +| test.rs:112:14:112:15 | v3 | semmle.label | v3 | +| test.rs:114:13:114:14 | v4 | semmle.label | v4 | +| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | +| test.rs:114:24:114:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | +| test.rs:114:24:114:56 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:114:28:114:35 | take_opt | semmle.label | take_opt | +| test.rs:115:14:115:15 | v4 | semmle.label | v4 | +| test.rs:135:22:135:30 | query_map | semmle.label | query_map | +| test.rs:137:14:137:24 | ...: i64 | semmle.label | ...: i64 | +| test.rs:138:22:138:27 | values | semmle.label | values | +| test.rs:151:13:151:17 | total | semmle.label | total | +| test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | semmle.label | conn.query_fold(...) [future, Ok] | +| test.rs:151:21:154:16 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:151:21:154:17 | TryExpr | semmle.label | TryExpr | +| test.rs:151:26:151:35 | query_fold | semmle.label | query_fold | +| test.rs:151:76:151:83 | ...: i64 | semmle.label | ...: i64 | +| test.rs:151:86:154:9 | { ... } | semmle.label | { ... } | +| test.rs:152:18:152:20 | row | semmle.label | row | +| test.rs:153:13:153:21 | ... + ... | semmle.label | ... + ... | +| test.rs:153:19:153:21 | row | semmle.label | row | +| test.rs:155:14:155:18 | total | semmle.label | total | +subpaths +testFailures +#select +| test.rs:19:14:19:15 | v1 | test.rs:18:28:18:30 | get | test.rs:19:14:19:15 | v1 | $@ | test.rs:18:28:18:30 | get | get | +| test.rs:22:14:22:15 | v2 | test.rs:21:28:21:34 | get_opt | test.rs:22:14:22:15 | v2 | $@ | test.rs:21:28:21:34 | get_opt | get_opt | +| test.rs:25:14:25:15 | v3 | test.rs:24:28:24:31 | take | test.rs:25:14:25:15 | v3 | $@ | test.rs:24:28:24:31 | take | take | +| test.rs:28:14:28:15 | v4 | test.rs:27:28:27:35 | take_opt | test.rs:28:14:28:15 | v4 | $@ | test.rs:27:28:27:35 | take_opt | take_opt | +| test.rs:38:14:38:15 | v6 | test.rs:37:28:37:38 | query_first | test.rs:38:14:38:15 | v6 | $@ | test.rs:37:28:37:38 | query_first | query_first | +| test.rs:41:14:41:70 | ... .unwrap() | test.rs:41:42:41:44 | get | test.rs:41:14:41:70 | ... .unwrap() | $@ | test.rs:41:42:41:44 | get | get | +| test.rs:44:22:44:22 | v | test.rs:40:27:40:35 | exec_iter | test.rs:44:22:44:22 | v | $@ | test.rs:40:27:40:35 | exec_iter | exec_iter | +| test.rs:51:22:51:27 | values | test.rs:48:22:48:30 | query_map | test.rs:51:22:51:27 | values | $@ | test.rs:48:22:48:30 | query_map | query_map | +| test.rs:65:18:65:20 | row | test.rs:64:26:64:35 | query_fold | test.rs:65:18:65:20 | row | $@ | test.rs:64:26:64:35 | query_fold | query_fold | +| test.rs:68:14:68:18 | total | test.rs:64:26:64:35 | query_fold | test.rs:68:14:68:18 | total | $@ | test.rs:64:26:64:35 | query_fold | query_fold | +| test.rs:106:14:106:15 | v1 | test.rs:105:28:105:30 | get | test.rs:106:14:106:15 | v1 | $@ | test.rs:105:28:105:30 | get | get | +| test.rs:109:14:109:15 | v2 | test.rs:108:28:108:34 | get_opt | test.rs:109:14:109:15 | v2 | $@ | test.rs:108:28:108:34 | get_opt | get_opt | +| test.rs:112:14:112:15 | v3 | test.rs:111:28:111:31 | take | test.rs:112:14:112:15 | v3 | $@ | test.rs:111:28:111:31 | take | take | +| test.rs:115:14:115:15 | v4 | test.rs:114:28:114:35 | take_opt | test.rs:115:14:115:15 | v4 | $@ | test.rs:114:28:114:35 | take_opt | take_opt | +| test.rs:138:22:138:27 | values | test.rs:135:22:135:30 | query_map | test.rs:138:22:138:27 | values | $@ | test.rs:135:22:135:30 | query_map | query_map | +| test.rs:152:18:152:20 | row | test.rs:151:26:151:35 | query_fold | test.rs:152:18:152:20 | row | $@ | test.rs:151:26:151:35 | query_fold | query_fold | +| test.rs:155:14:155:18 | total | test.rs:151:26:151:35 | query_fold | test.rs:155:14:155:18 | total | $@ | test.rs:151:26:151:35 | query_fold | query_fold | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected new file mode 100644 index 00000000000..9132dfaa2b0 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected @@ -0,0 +1,25 @@ +| test.rs:15:47:15:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:18:28:18:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:21:28:21:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:24:28:24:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:27:28:27:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:30:26:30:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:37:28:37:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:40:27:40:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:41:42:41:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:48:22:48:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:55:22:55:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:64:26:64:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:70:22:70:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:102:53:102:57 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:105:28:105:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:108:28:108:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:111:28:111:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:114:28:114:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:117:26:117:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:124:28:124:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:127:27:127:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:135:22:135:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:142:22:142:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:151:26:151:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:157:22:157:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/database/options.yml b/rust/ql/test/library-tests/dataflow/sources/database/options.yml new file mode 100644 index 00000000000..af2d6ba2344 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/options.yml @@ -0,0 +1,7 @@ +qltest_cargo_check: true +qltest_dependencies: + - async-std = { version = "1.13.1" } + - futures = { version = "0.3" } + - mysql = { version = "26.0.1" } + - mysql_async = { version = "0.36.1" } + - tokio = { version = "1.43.0", features = ["full"] } diff --git a/rust/ql/test/library-tests/dataflow/sources/database/test.rs b/rust/ql/test/library-tests/dataflow/sources/database/test.rs new file mode 100644 index 00000000000..5fbaef71144 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/test.rs @@ -0,0 +1,222 @@ +fn sink(_: T) { } + +// --- tests --- + +mod test_mysql { + use mysql::*; + use mysql::prelude::*; + use super::sink; + + pub fn test_mysql() -> Result<(), Box> { + // connect through a MySQL connection pool + let mut pool = mysql::Pool::new("")?; + let mut conn = pool.get_conn()?; + + let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; // $ Alert[rust/summary/taint-sources] + let mut row = &mut rows[0]; + + let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v1); // $ hasTaintFlow=0 + + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v2); // $ hasTaintFlow=0 + + let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v3); // $ hasTaintFlow=0 + + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v4); // $ hasTaintFlow=0 + + let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] + if let mysql::Value::Int(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow=0 + } else if let mysql::Value::Bytes(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow=0 + } + + let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v6); // $ hasTaintFlow + + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ Alert[rust/summary/taint-sources] + sink(t1.nth(0).unwrap().unwrap().get::(1).unwrap()); // $ Alert[rust/summary/taint-sources] hasTaintFlow=1 + for row in t1 { + for v in row { + sink(v); // $ hasTaintFlow + } + } + + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + "SELECT id FROM person", + |values: i64| -> () { + sink(values); // $ hasTaintFlow + } + )?; + + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + "SELECT id, name, age FROM person", + |values: (i64, String, i32)| -> () { + sink(values.0); // $ MISSING: hasTaintFlow + sink(values.1); // $ MISSING: hasTaintFlow + sink(values.2); // $ MISSING: hasTaintFlow + } + )?; + + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + sink(row); // $ hasTaintFlow + acc + row + })?; + sink(total); // $ hasTaintFlow + + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] + let id: i64 = row.0; + let name: String = row.1; + let age: i32 = row.2; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + acc + 1 + })?; + + Ok(()) + } +} + +mod test_mysql_async { + use mysql_async::*; + use mysql_async::prelude::*; + use async_std::stream::StreamExt; + use super::sink; + + #[derive(Debug, PartialEq, Eq, Clone)] + struct Person { + id: i64, + name: String, + age: i32, + } + + pub async fn test_mysql_async() -> Result<()> { + // connect through a MySQL connection pool + let mut pool = mysql_async::Pool::new(""); + let mut conn = pool.get_conn().await?; + + let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] + let mut row = &mut rows[0]; + + let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v1); // $ hasTaintFlow=0 + + let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v2); // $ hasTaintFlow=0 + + let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v3); // $ hasTaintFlow=0 + + let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v4); // $ hasTaintFlow=0 + + let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] + if let mysql_async::Value::Int(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow=0 + } else if let mysql_async::Value::Bytes(v) = value5 { + sink(v); // $ MISSING: hasTaintFlow=0 + } + + let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ Alert[rust/summary/taint-sources] + sink(v6); // $ MISSING: hasTaintFlow + + let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3)).await?; // $ Alert[rust/summary/taint-sources] + for mut row in t1.stream::<(i64, String, i32)>().await? { + while let v = row.next().await { + let v = v.unwrap(); + sink(v); // $ MISSING: hasTaintFlow + } + } + + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + "SELECT id FROM person", + |values: i64| -> () { + sink(values); // $ hasTaintFlow + } + ).await?; + + let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] + "SELECT id, name, age FROM person", + |values: (i64, String, i32)| -> () { + sink(values.0); // $ MISSING: hasTaintFlow + sink(values.1); // $ MISSING: hasTaintFlow + sink(values.2); // $ MISSING: hasTaintFlow + } + ).await?; + + let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] + sink(row); // $ hasTaintFlow + acc + row + }).await?; + sink(total); // $ hasTaintFlow + + let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] + let id: i64 = row.0; + let name: String = row.1; + let age: i32 = row.2; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + acc + 1 + }).await?; + + let ids = "SELECT id FROM person".with(()).map(&mut conn, + |person: i64| -> i64 { + sink(person); // $ MISSING: hasTaintFlow + person + } + ).await?; + sink(ids[0]); // $ MISSING: hasTaintFlow + + let ages = "SELECT id, name, age FROM person".with(()).map(&mut conn, // $ MISSING: Alert[rust/summary/taint-sources] + |person: (i64, String, i32)| -> i32 { + sink(person.0); // $ MISSING: hasTaintFlow + sink(person.1); // $ MISSING: hasTaintFlow + sink(person.2); // $ MISSING: hasTaintFlow + person.2 + } + ).await?; + sink(ages[0]); // $ MISSING: hasTaintFlow + + { + let mut stream = "SELECT id FROM person".stream::(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] + while let Some(row) = stream.next().await { + let id = row?; + sink(id); // $ MISSING: hasTaintFlow + } + } + + { + let mut stream = "SELECT id, name, age FROM person".stream::<(i64, String, i32), _>(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] + while let Some(row) = stream.next().await { + let (id, name, age) = row?; + sink(id); // $ MISSING: hasTaintFlow + sink(name); // $ MISSING: hasTaintFlow + sink(age); // $ MISSING: hasTaintFlow + } + } + + Ok(()) + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + println!("test_mysql..."); + match test_mysql::test_mysql() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + println!("test_mysql_async..."); + match futures::executor::block_on(test_mysql_async::test_mysql_async()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + + Ok(()) +} diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index b2f77795e81..ec914d7f0ca 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -16,5 +16,3 @@ qltest_dependencies: - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } - warp = { version = "0.4.2", features = ["server"] } - - mysql = { version = "26.0.1" } - - mysql_async = { version = "0.36.1" } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 957eafa6d24..dac090ad30d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -358,208 +358,6 @@ fn test_rustls() -> std::io::Result<()> { Ok(()) } -mod test_mysql { - use mysql::*; - use mysql::prelude::*; - use super::sink; - - pub fn test_mysql() -> Result<(), Box> { - // connect through a MySQL connection pool - let mut pool = mysql::Pool::new("")?; - let mut conn = pool.get_conn()?; - - let mut rows : Vec = conn.query("SELECT id, name, age FROM person")?; // $ Alert[rust/summary/taint-sources] - let mut row = &mut rows[0]; - - let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v1); // $ hasTaintFlow=0 - - let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v2); // $ hasTaintFlow=0 - - let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v3); // $ hasTaintFlow=0 - - let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v4); // $ hasTaintFlow=0 - - let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] - if let mysql::Value::Int(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow=0 - } else if let mysql::Value::Bytes(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow=0 - } - - let v6: i64 = conn.query_first("SELECT id FROM person")?.unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v6); // $ hasTaintFlow - - let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3))?; // $ Alert[rust/summary/taint-sources] - sink(t1.nth(0).unwrap().unwrap().get::(1).unwrap()); // $ Alert[rust/summary/taint-sources] hasTaintFlow=1 - for row in t1 { - for v in row { - sink(v); // $ hasTaintFlow - } - } - - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] - "SELECT id FROM person", - |values: i64| -> () { - sink(values); // $ hasTaintFlow - } - )?; - - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] - "SELECT id, name, age FROM person", - |values: (i64, String, i32)| -> () { - sink(values.0); // $ MISSING: hasTaintFlow - sink(values.1); // $ MISSING: hasTaintFlow - sink(values.2); // $ MISSING: hasTaintFlow - } - )?; - - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] - sink(row); // $ hasTaintFlow - acc + row - })?; - sink(total); // $ hasTaintFlow - - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] - let id: i64 = row.0; - let name: String = row.1; - let age: i32 = row.2; - sink(id); // $ MISSING: hasTaintFlow - sink(name); // $ MISSING: hasTaintFlow - sink(age); // $ MISSING: hasTaintFlow - acc + 1 - })?; - - Ok(()) - } -} - -mod test_mysql_async { - use mysql_async::*; - use mysql_async::prelude::*; - use async_std::stream::StreamExt; - use super::sink; - - #[derive(Debug, PartialEq, Eq, Clone)] - struct Person { - id: i64, - name: String, - age: i32, - } - - pub async fn test_mysql_async() -> Result<()> { - // connect through a MySQL connection pool - let mut pool = mysql_async::Pool::new(""); - let mut conn = pool.get_conn().await?; - - let mut rows : Vec = conn.query("SELECT id, name, age FROM person").await?; // $ Alert[rust/summary/taint-sources] - let mut row = &mut rows[0]; - - let v1 : i64 = row.get(0).unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v1); // $ hasTaintFlow=0 - - let v2 : i64 = row.get_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v2); // $ hasTaintFlow=0 - - let v3 : i64 = row.take(0).unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v3); // $ hasTaintFlow=0 - - let v4 : i64 = row.take_opt(0).unwrap().unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v4); // $ hasTaintFlow=0 - - let value5 = row.as_ref(0).unwrap(); // $ Alert[rust/summary/taint-sources] - if let mysql_async::Value::Int(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow=0 - } else if let mysql_async::Value::Bytes(v) = value5 { - sink(v); // $ MISSING: hasTaintFlow=0 - } - - let v6: i64 = conn.query_first("SELECT id FROM person").await?.unwrap(); // $ Alert[rust/summary/taint-sources] - sink(v6); // $ MISSING: hasTaintFlow - - let mut t1 = conn.exec_iter("SELECT id FROM person", (1, 2, 3)).await?; // $ Alert[rust/summary/taint-sources] - for mut row in t1.stream::<(i64, String, i32)>().await? { - while let v = row.next().await { - let v = v.unwrap(); - sink(v); // $ MISSING: hasTaintFlow - } - } - - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] - "SELECT id FROM person", - |values: i64| -> () { - sink(values); // $ hasTaintFlow - } - ).await?; - - let _ = conn.query_map( // $ Alert[rust/summary/taint-sources] - "SELECT id, name, age FROM person", - |values: (i64, String, i32)| -> () { - sink(values.0); // $ MISSING: hasTaintFlow - sink(values.1); // $ MISSING: hasTaintFlow - sink(values.2); // $ MISSING: hasTaintFlow - } - ).await?; - - let total = conn.query_fold("SELECT id FROM person", 0, |acc: i64, row: i64| { // $ Alert[rust/summary/taint-sources] - sink(row); // $ hasTaintFlow - acc + row - }).await?; - sink(total); // $ hasTaintFlow - - let _ = conn.query_fold("SELECT id, name, age FROM person", 0, |acc: i64, row: (i64, String, i32)| { // $ Alert[rust/summary/taint-sources] - let id: i64 = row.0; - let name: String = row.1; - let age: i32 = row.2; - sink(id); // $ MISSING: hasTaintFlow - sink(name); // $ MISSING: hasTaintFlow - sink(age); // $ MISSING: hasTaintFlow - acc + 1 - }).await?; - - let ids = "SELECT id FROM person".with(()).map(&mut conn, - |person: i64| -> i64 { - sink(person); // $ MISSING: hasTaintFlow - person - } - ).await?; - sink(ids[0]); // $ MISSING: hasTaintFlow - - let ages = "SELECT id, name, age FROM person".with(()).map(&mut conn, // $ MISSING: Alert[rust/summary/taint-sources] - |person: (i64, String, i32)| -> i32 { - sink(person.0); // $ MISSING: hasTaintFlow - sink(person.1); // $ MISSING: hasTaintFlow - sink(person.2); // $ MISSING: hasTaintFlow - person.2 - } - ).await?; - sink(ages[0]); // $ MISSING: hasTaintFlow - - { - let mut stream = "SELECT id FROM person".stream::(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] - while let Some(row) = stream.next().await { - let id = row?; - sink(id); // $ MISSING: hasTaintFlow - } - } - - { - let mut stream = "SELECT id, name, age FROM person".stream::<(i64, String, i32), _>(&mut conn).await?; // $ MISSING: Alert[rust/summary/taint-sources] - while let Some(row) = stream.next().await { - let (id, name, age) = row?; - sink(id); // $ MISSING: hasTaintFlow - sink(name); // $ MISSING: hasTaintFlow - sink(age); // $ MISSING: hasTaintFlow - } - } - - Ok(()) - } -} - #[tokio::main] async fn main() -> Result<(), Box> { let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::().unwrap(); // $ Alert[rust/summary/taint-sources] @@ -600,17 +398,5 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } - println!("test_mysql..."); - match test_mysql::test_mysql() { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - - println!("test_mysql_async..."); - match futures::executor::block_on(test_mysql_async::test_mysql_async()) { - Ok(_) => println!("complete"), - Err(e) => println!("error: {}", e), - } - Ok(()) } From 5ba331e9861efe0a95706ba92569b0ea80ff071e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:36:32 +0100 Subject: [PATCH 242/965] Rust: Splits off sources/net. --- .../dataflow/sources/net/Cargo.lock | 2146 +++++++++++++++++ .../dataflow/sources/net/InlineFlow.expected | 278 +++ .../dataflow/sources/net/InlineFlow.ql | 36 + .../sources/net/TaintSources.expected | 17 + .../dataflow/sources/net/TaintSources.qlref | 2 + .../dataflow/sources/net/options.yml | 12 + .../dataflow/sources/{ => net}/test.rs | 14 +- .../dataflow/sources/options.yml | 6 - 8 files changed, 2496 insertions(+), 15 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/TaintSources.qlref create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/options.yml rename rust/ql/test/library-tests/dataflow/sources/{ => net}/test.rs (99%) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock new file mode 100644 index 00000000000..27790b8b768 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/Cargo.lock @@ -0,0 +1,2146 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "aws-lc-rs" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", +] + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "reqwest" +version = "0.12.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "async-std", + "futures", + "futures-rustls", + "http", + "http-body-util", + "hyper", + "hyper-util", + "reqwest", + "rustls", + "tokio", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected new file mode 100644 index 00000000000..5f8a0a77a2d --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -0,0 +1,278 @@ +models +| 1 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 2 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 3 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 4 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 5 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 6 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 7 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 8 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 9 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 10 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 13 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 14 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 15 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 16 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 17 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 18 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 19 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 20 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 21 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 22 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 23 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +edges +| test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | +| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:17 | +| test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | +| test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | +| test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | +| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:12 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:17 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:12 | +| test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | +| test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | +| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:12 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:18 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:12 | +| test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | +| test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | +| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:12 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:16 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:12 | +| test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | +| test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | +| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | +| test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:15 | +| test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | +| test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | +| test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | +| test.rs:26:9:26:22 | remote_string6 | test.rs:27:10:27:23 | remote_string6 | provenance | | +| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | +| test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:13 | +| test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | +| test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | +| test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | +| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:14 | +| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:14 | +| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | +| test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | +| test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | +| test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | +| test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:11 | +| test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | +| test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | +| test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | +| test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | +| test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | +| test.rs:60:13:60:20 | response | test.rs:61:15:61:22 | response | provenance | | +| test.rs:60:13:60:20 | response | test.rs:62:14:62:21 | response | provenance | | +| test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | test.rs:60:24:60:57 | await ... [Ok] | provenance | | +| test.rs:60:24:60:57 | await ... [Ok] | test.rs:60:24:60:58 | TryExpr | provenance | | +| test.rs:60:24:60:58 | TryExpr | test.rs:60:13:60:20 | response | provenance | | +| test.rs:60:31:60:42 | send_request | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:61:15:61:22 | response | test.rs:61:14:61:22 | &response | provenance | | +| test.rs:67:9:67:20 | mut response | test.rs:68:11:68:18 | response | provenance | | +| test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | test.rs:67:24:67:57 | await ... [Ok] | provenance | | +| test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | +| test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | +| test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:8 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:2 | +| test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | +| test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | +| test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | +| test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | | +| test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:22 | buffer[0] | provenance | | +| test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | | +| test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | +| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | +| test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | +| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:7 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:9 | +| test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:19 | +| test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | +| test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | +| test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:10 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:4 | +| test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | +| test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | +| test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | +| test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | +| test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | +| test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | | +| test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | +| test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | | +| test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | | +| test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | | +| test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | +| test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | +| test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | +| test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | +| test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | +| test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | +| test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | +nodes +| test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | +| test.rs:11:26:11:47 | ...::get | semmle.label | ...::get | +| test.rs:11:26:11:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| test.rs:11:26:11:63 | TryExpr | semmle.label | TryExpr | +| test.rs:11:26:11:70 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| test.rs:11:26:11:71 | TryExpr | semmle.label | TryExpr | +| test.rs:12:10:12:23 | remote_string1 | semmle.label | remote_string1 | +| test.rs:14:9:14:22 | remote_string2 | semmle.label | remote_string2 | +| test.rs:14:26:14:47 | ...::get | semmle.label | ...::get | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| test.rs:14:26:14:71 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:14:26:14:78 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | +| test.rs:14:26:14:87 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:15:10:15:23 | remote_string2 | semmle.label | remote_string2 | +| test.rs:17:9:17:22 | remote_string3 | semmle.label | remote_string3 | +| test.rs:17:26:17:47 | ...::get | semmle.label | ...::get | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| test.rs:17:26:17:71 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | semmle.label | ... .text_with_charset(...) [Ok] | +| test.rs:17:26:17:107 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:18:10:18:23 | remote_string3 | semmle.label | remote_string3 | +| test.rs:20:9:20:22 | remote_string4 | semmle.label | remote_string4 | +| test.rs:20:26:20:47 | ...::get | semmle.label | ...::get | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | +| test.rs:20:26:20:71 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | semmle.label | ... .bytes() [Ok] | +| test.rs:20:26:20:88 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:21:10:21:23 | remote_string4 | semmle.label | remote_string4 | +| test.rs:23:9:23:22 | remote_string5 | semmle.label | remote_string5 | +| test.rs:23:26:23:37 | ...::get | semmle.label | ...::get | +| test.rs:23:26:23:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | +| test.rs:23:26:23:58 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:23:26:23:59 | TryExpr | semmle.label | TryExpr | +| test.rs:23:26:23:66 | ... .text() [future, Ok] | semmle.label | ... .text() [future, Ok] | +| test.rs:23:26:23:72 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:23:26:23:73 | TryExpr | semmle.label | TryExpr | +| test.rs:24:10:24:23 | remote_string5 | semmle.label | remote_string5 | +| test.rs:26:9:26:22 | remote_string6 | semmle.label | remote_string6 | +| test.rs:26:26:26:37 | ...::get | semmle.label | ...::get | +| test.rs:26:26:26:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | +| test.rs:26:26:26:58 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:26:26:26:59 | TryExpr | semmle.label | TryExpr | +| test.rs:26:26:26:67 | ... .bytes() [future, Ok] | semmle.label | ... .bytes() [future, Ok] | +| test.rs:26:26:26:73 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:26:26:26:74 | TryExpr | semmle.label | TryExpr | +| test.rs:27:10:27:23 | remote_string6 | semmle.label | remote_string6 | +| test.rs:29:9:29:20 | mut request1 | semmle.label | mut request1 | +| test.rs:29:24:29:35 | ...::get | semmle.label | ...::get | +| test.rs:29:24:29:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | +| test.rs:29:24:29:56 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:29:24:29:57 | TryExpr | semmle.label | TryExpr | +| test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | +| test.rs:30:10:30:31 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:30:10:30:32 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:30:10:30:41 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:31:15:31:25 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| test.rs:31:20:31:24 | chunk | semmle.label | chunk | +| test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | +| test.rs:31:29:31:50 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | +| test.rs:31:29:31:51 | TryExpr [Some] | semmle.label | TryExpr [Some] | +| test.rs:32:14:32:18 | chunk | semmle.label | chunk | +| test.rs:60:13:60:20 | response | semmle.label | response | +| test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | +| test.rs:60:24:60:57 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:60:24:60:58 | TryExpr | semmle.label | TryExpr | +| test.rs:60:31:60:42 | send_request | semmle.label | send_request | +| test.rs:61:14:61:22 | &response | semmle.label | &response | +| test.rs:61:15:61:22 | response | semmle.label | response | +| test.rs:62:14:62:21 | response | semmle.label | response | +| test.rs:67:9:67:20 | mut response | semmle.label | mut response | +| test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | +| test.rs:67:24:67:57 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:67:24:67:58 | TryExpr | semmle.label | TryExpr | +| test.rs:67:31:67:42 | send_request | semmle.label | send_request | +| test.rs:68:10:68:18 | &response | semmle.label | &response | +| test.rs:68:11:68:18 | response | semmle.label | response | +| test.rs:155:13:155:22 | mut stream | semmle.label | mut stream | +| test.rs:155:26:155:53 | ...::connect | semmle.label | ...::connect | +| test.rs:155:26:155:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | +| test.rs:155:26:155:63 | TryExpr | semmle.label | TryExpr | +| test.rs:162:29:162:39 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:162:34:162:39 | [post] buffer | semmle.label | [post] buffer | +| test.rs:165:14:165:20 | &buffer | semmle.label | &buffer | +| test.rs:165:15:165:20 | buffer | semmle.label | buffer | +| test.rs:166:14:166:22 | buffer[0] | semmle.label | buffer[0] | +| test.rs:174:13:174:22 | mut stream | semmle.label | mut stream | +| test.rs:174:26:174:61 | ...::connect_timeout | semmle.label | ...::connect_timeout | +| test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | semmle.label | ...::connect_timeout(...) [Ok] | +| test.rs:174:26:174:106 | TryExpr | semmle.label | TryExpr | +| test.rs:182:21:182:30 | mut reader | semmle.label | mut reader | +| test.rs:182:34:182:64 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:182:34:182:74 | ... .take(...) | semmle.label | ... .take(...) | +| test.rs:182:58:182:63 | stream | semmle.label | stream | +| test.rs:185:44:185:52 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:185:49:185:52 | [post] line | semmle.label | [post] line | +| test.rs:192:34:192:38 | &line | semmle.label | &line | +| test.rs:192:35:192:38 | line | semmle.label | line | +| test.rs:224:9:224:24 | mut tokio_stream | semmle.label | mut tokio_stream | +| test.rs:224:28:224:57 | ...::connect | semmle.label | ...::connect | +| test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:224:28:224:72 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:224:28:224:73 | TryExpr | semmle.label | TryExpr | +| test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:232:40:232:46 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:236:41:236:47 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:239:14:239:21 | &buffer1 | semmle.label | &buffer1 | +| test.rs:239:15:239:21 | buffer1 | semmle.label | buffer1 | +| test.rs:240:14:240:23 | buffer1[0] | semmle.label | buffer1[0] | +| test.rs:243:14:243:21 | &buffer2 | semmle.label | &buffer2 | +| test.rs:243:15:243:21 | buffer2 | semmle.label | buffer2 | +| test.rs:244:14:244:23 | buffer2[0] | semmle.label | buffer2[0] | +| test.rs:252:41:252:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:252:46:252:51 | [post] buffer | semmle.label | [post] buffer | +| test.rs:259:26:259:32 | &buffer | semmle.label | &buffer | +| test.rs:259:27:259:32 | buffer | semmle.label | buffer | +| test.rs:275:45:275:55 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:275:50:275:55 | [post] buffer | semmle.label | [post] buffer | +| test.rs:282:26:282:32 | &buffer | semmle.label | &buffer | +| test.rs:282:27:282:32 | buffer | semmle.label | buffer | +subpaths +testFailures +#select +| test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | +| test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | +| test.rs:18:10:18:23 | remote_string3 | test.rs:17:26:17:47 | ...::get | test.rs:18:10:18:23 | remote_string3 | $@ | test.rs:17:26:17:47 | ...::get | ...::get | +| test.rs:21:10:21:23 | remote_string4 | test.rs:20:26:20:47 | ...::get | test.rs:21:10:21:23 | remote_string4 | $@ | test.rs:20:26:20:47 | ...::get | ...::get | +| test.rs:24:10:24:23 | remote_string5 | test.rs:23:26:23:37 | ...::get | test.rs:24:10:24:23 | remote_string5 | $@ | test.rs:23:26:23:37 | ...::get | ...::get | +| test.rs:27:10:27:23 | remote_string6 | test.rs:26:26:26:37 | ...::get | test.rs:27:10:27:23 | remote_string6 | $@ | test.rs:26:26:26:37 | ...::get | ...::get | +| test.rs:30:10:30:41 | ... .unwrap() | test.rs:29:24:29:35 | ...::get | test.rs:30:10:30:41 | ... .unwrap() | $@ | test.rs:29:24:29:35 | ...::get | ...::get | +| test.rs:32:14:32:18 | chunk | test.rs:29:24:29:35 | ...::get | test.rs:32:14:32:18 | chunk | $@ | test.rs:29:24:29:35 | ...::get | ...::get | +| test.rs:61:14:61:22 | &response | test.rs:60:31:60:42 | send_request | test.rs:61:14:61:22 | &response | $@ | test.rs:60:31:60:42 | send_request | send_request | +| test.rs:62:14:62:21 | response | test.rs:60:31:60:42 | send_request | test.rs:62:14:62:21 | response | $@ | test.rs:60:31:60:42 | send_request | send_request | +| test.rs:68:10:68:18 | &response | test.rs:67:31:67:42 | send_request | test.rs:68:10:68:18 | &response | $@ | test.rs:67:31:67:42 | send_request | send_request | +| test.rs:165:14:165:20 | &buffer | test.rs:155:26:155:53 | ...::connect | test.rs:165:14:165:20 | &buffer | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | +| test.rs:166:14:166:22 | buffer[0] | test.rs:155:26:155:53 | ...::connect | test.rs:166:14:166:22 | buffer[0] | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | +| test.rs:192:34:192:38 | &line | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:192:34:192:38 | &line | $@ | test.rs:174:26:174:61 | ...::connect_timeout | ...::connect_timeout | +| test.rs:239:14:239:21 | &buffer1 | test.rs:224:28:224:57 | ...::connect | test.rs:239:14:239:21 | &buffer1 | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:240:14:240:23 | buffer1[0] | test.rs:224:28:224:57 | ...::connect | test.rs:240:14:240:23 | buffer1[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:243:14:243:21 | &buffer2 | test.rs:224:28:224:57 | ...::connect | test.rs:243:14:243:21 | &buffer2 | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:244:14:244:23 | buffer2[0] | test.rs:224:28:224:57 | ...::connect | test.rs:244:14:244:23 | buffer2[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:259:26:259:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:259:26:259:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:282:26:282:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:282:26:282:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected new file mode 100644 index 00000000000..68defa30d87 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -0,0 +1,17 @@ +| test.rs:11:26:11:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:14:26:14:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:17:26:17:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:20:26:20:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:23:26:23:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:26:26:26:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:29:24:29:35 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:45:18:45:47 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:60:31:60:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:67:31:67:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:155:26:155:53 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:174:26:174:61 | ...::connect_timeout | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:224:28:224:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:306:22:306:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:359:16:359:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:359:16:359:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/net/options.yml b/rust/ql/test/library-tests/dataflow/sources/net/options.yml new file mode 100644 index 00000000000..24cda1561c0 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/options.yml @@ -0,0 +1,12 @@ +qltest_cargo_check: true +qltest_dependencies: + - reqwest = { version = "0.12.9", features = ["blocking"] } + - hyper = { version = "1.5.2", features = ["full"] } + - hyper-util = { version = "0.1.10", features = ["full"] } + - http-body-util = { version = "0.1.2" } + - http = { version = "1.2.0" } + - tokio = { version = "1.43.0", features = ["full"] } + - futures = { version = "0.3" } + - rustls = { version = "0.23.27" } + - futures-rustls = { version = "0.26.0" } + - async-std = { version = "1.13.1" } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs similarity index 99% rename from rust/ql/test/library-tests/dataflow/sources/test.rs rename to rust/ql/test/library-tests/dataflow/sources/net/test.rs index dac090ad30d..759bae8d86d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -1,9 +1,12 @@ -#![allow(deprecated)] - fn sink(_: T) { } // --- tests --- +use std::io::{Read, Write, BufRead}; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use http_body_util::BodyExt; +use std::net::ToSocketAddrs; + async fn test_reqwest() -> Result<(), reqwest::Error> { let remote_string1 = reqwest::blocking::get("example.com")?.text()?; // $ Alert[rust/summary/taint-sources] sink(remote_string1); // $ hasTaintFlow="example.com" @@ -32,9 +35,6 @@ async fn test_reqwest() -> Result<(), reqwest::Error> { Ok(()) } -use std::io::Write; -use http_body_util::BodyExt; - async fn test_hyper_http(case: i64) -> Result<(), Box> { // using http + hyper libs to fetch a web page let address = "example.com:80"; @@ -146,8 +146,6 @@ async fn test_hyper_http(case: i64) -> Result<(), Box> { Ok(()) } -use std::net::ToSocketAddrs; - async fn test_std_tcpstream(case: i64) -> std::io::Result<()> { // using std::net to fetch a web page let address = "example.com:80"; @@ -217,8 +215,6 @@ async fn test_std_tcpstream(case: i64) -> std::io::Result<()> { Ok(()) } -use tokio::io::AsyncWriteExt; - async fn test_tokio_tcpstream(case: i64) -> std::io::Result<()> { // using tokio::io to fetch a web page let address = "example.com:80"; diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index ec914d7f0ca..86890c73679 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -1,9 +1,5 @@ qltest_cargo_check: true qltest_dependencies: - - reqwest = { version = "0.12.9", features = ["blocking"] } - - hyper = { version = "1.5.2", features = ["full"] } - - hyper-util = { version = "0.1.10", features = ["full"] } - - http-body-util = { version = "0.1.2" } - http = { version = "1.2.0" } - tokio = { version = "1.43.0", features = ["full"] } - futures = { version = "0.3" } @@ -12,7 +8,5 @@ qltest_dependencies: - actix-web = { version = "4.10.2" } - axum = { version = "0.8.4" } - serde_json = { version = "1.0.140" } - - rustls = { version = "0.23.27" } - - futures-rustls = { version = "0.26.0" } - async-std = { version = "1.13.1" } - warp = { version = "0.4.2", features = ["server"] } From 8c02cb2ed19e026bc603757cf75b7923c166f593 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 17:46:59 +0100 Subject: [PATCH 243/965] Rust: Split off sources/web_frameworks. --- .../dataflow/sources/options.yml | 6 - .../sources/web_frameworks/Cargo.lock | 2055 +++++++++++++++++ .../web_frameworks/InlineFlow.expected | 238 ++ .../sources/web_frameworks/InlineFlow.ql | 36 + .../web_frameworks/TaintSources.expected | 106 + .../sources/web_frameworks/TaintSources.qlref | 2 + .../test.rs} | 0 7 files changed, 2437 insertions(+), 6 deletions(-) create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/Cargo.lock create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.qlref rename rust/ql/test/library-tests/dataflow/sources/{web_frameworks.rs => web_frameworks/test.rs} (100%) diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index 86890c73679..0572c34a19a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -3,10 +3,4 @@ qltest_dependencies: - http = { version = "1.2.0" } - tokio = { version = "1.43.0", features = ["full"] } - futures = { version = "0.3" } - - poem = { version = "3.1.10" } - - serde = { version = "1.0.219" } - - actix-web = { version = "4.10.2" } - - axum = { version = "0.8.4" } - - serde_json = { version = "1.0.140" } - async-std = { version = "1.13.1" } - - warp = { version = "0.4.2", features = ["server"] } diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/Cargo.lock new file mode 100644 index 00000000000..38298d50a71 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/Cargo.lock @@ -0,0 +1,2055 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.27", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.5.10", + "time", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "axum" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom", + "libc", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "poem" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f977080932c87287147dca052951c3e2696f8759863f6b4e4c0c9ffe7a4cc8b" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056e2fea6de1cb240ffe23cfc4fc370b629f8be83b5f27e16b7acd5231a72de4" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "syn" +version = "2.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "actix-web", + "axum", + "poem", + "serde", + "serde_json", + "tokio", + "warp", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "warp" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" +dependencies = [ + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wildmatch" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39b7d07a236abaef6607536ccfaf19b396dbe3f5110ddb73d39f4562902ed382" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected new file mode 100644 index 00000000000..1bfac39c605 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -0,0 +1,238 @@ +models +| 1 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | +| 2 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | +| 3 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | +| 4 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 5 | Source: ::to; Argument[0].Parameter[0..7]; remote | +| 6 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | +| 7 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | +| 8 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | +| 9 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | +| 10 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 12 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | +| 13 | Summary: ::as_str; Argument[self]; ReturnValue; value | +edges +| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | +| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | +| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | +| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | +| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | +| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | +| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | +| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | +| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | +| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | +| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | +| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | +| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | +| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | +| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 | +| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:7 | +| test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:8 | +| test.rs:100:13:100:13 | a | test.rs:101:14:101:14 | a | provenance | | +| test.rs:100:13:100:13 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:100:13:100:13 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:100:13:100:13 | a | test.rs:102:14:102:14 | a | provenance | | +| test.rs:100:13:100:13 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:100:13:100:13 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:100:13:100:13 | a | test.rs:103:14:103:14 | a | provenance | | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:14 | a [tuple.0] | provenance | | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:14 | a [tuple.0] | provenance | | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:100:13:100:13 | a [tuple.0] | test.rs:103:14:103:14 | a | provenance | | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:14 | a [tuple.1] | provenance | | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:14 | a [tuple.1] | provenance | | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:100:13:100:13 | a [tuple.1] | test.rs:103:14:103:14 | a | provenance | | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:14 | a [tuple.2] | provenance | | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:14 | a [tuple.2] | provenance | | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:100:13:100:13 | a [tuple.2] | test.rs:103:14:103:14 | a | provenance | | +| test.rs:100:17:100:33 | path.into_inner() | test.rs:100:13:100:13 | a | provenance | | +| test.rs:100:17:100:33 | path.into_inner() [tuple.0] | test.rs:100:13:100:13 | a [tuple.0] | provenance | | +| test.rs:100:17:100:33 | path.into_inner() [tuple.1] | test.rs:100:13:100:13 | a [tuple.1] | provenance | | +| test.rs:100:17:100:33 | path.into_inner() [tuple.2] | test.rs:100:13:100:13 | a [tuple.2] | provenance | | +| test.rs:101:14:101:14 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:101:14:101:14 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:101:14:101:14 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:101:14:101:14 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:101:14:101:14 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:101:14:101:14 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:101:14:101:14 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | +| test.rs:101:14:101:14 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | +| test.rs:102:14:102:14 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:102:14:102:14 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | +| test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | +| test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:6 | +| test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:7 | +| test.rs:111:13:111:18 | TuplePat [tuple.0] | test.rs:111:14:111:14 | a | provenance | | +| test.rs:111:13:111:18 | TuplePat [tuple.1] | test.rs:111:17:111:17 | b | provenance | | +| test.rs:111:14:111:14 | a | test.rs:113:14:113:14 | a | provenance | | +| test.rs:111:17:111:17 | b | test.rs:114:14:114:14 | b | provenance | | +| test.rs:111:22:111:38 | path.into_inner() [tuple.0] | test.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | +| test.rs:111:22:111:38 | path.into_inner() [tuple.1] | test.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | +| test.rs:127:5:127:20 | to | test.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:4 | +| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() | provenance | MaD:9 | +| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:6 | +| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:7 | +| test.rs:129:9:129:31 | ...: ...::Path::<...> | test.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:8 | +| test.rs:131:13:131:13 | a | test.rs:132:14:132:14 | a | provenance | | +| test.rs:131:13:131:13 | a [tuple.0] | test.rs:132:14:132:14 | a | provenance | | +| test.rs:131:13:131:13 | a [tuple.1] | test.rs:132:14:132:14 | a | provenance | | +| test.rs:131:13:131:13 | a [tuple.2] | test.rs:132:14:132:14 | a | provenance | | +| test.rs:131:17:131:33 | path.into_inner() | test.rs:131:13:131:13 | a | provenance | | +| test.rs:131:17:131:33 | path.into_inner() [tuple.0] | test.rs:131:13:131:13 | a [tuple.0] | provenance | | +| test.rs:131:17:131:33 | path.into_inner() [tuple.1] | test.rs:131:13:131:13 | a [tuple.1] | provenance | | +| test.rs:131:17:131:33 | path.into_inner() [tuple.2] | test.rs:131:13:131:13 | a [tuple.2] | provenance | | +| test.rs:139:41:139:42 | to | test.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | +| test.rs:140:45:140:46 | to | test.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | +| test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | +| test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | +| test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | +| test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | +| test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | +| test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | +| test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | +| test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | +| test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | +| test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | +| test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | +| test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | +| test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | +| test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | +| test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | +| test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | +nodes +| test.rs:11:31:11:31 | a | semmle.label | a | +| test.rs:11:31:11:31 | a | semmle.label | a | +| test.rs:13:14:13:14 | a | semmle.label | a | +| test.rs:13:14:13:14 | a | semmle.label | a | +| test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | +| test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | +| test.rs:14:14:14:14 | a | semmle.label | a | +| test.rs:14:14:14:14 | a | semmle.label | a | +| test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| test.rs:15:14:15:14 | a | semmle.label | a | +| test.rs:15:14:15:14 | a | semmle.label | a | +| test.rs:68:15:68:15 | a | semmle.label | a | +| test.rs:68:15:68:15 | a | semmle.label | a | +| test.rs:70:14:70:14 | a | semmle.label | a | +| test.rs:70:14:70:14 | a | semmle.label | a | +| test.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| test.rs:100:13:100:13 | a | semmle.label | a | +| test.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] | +| test.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] | +| test.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] | +| test.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | +| test.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| test.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| test.rs:100:17:100:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | +| test.rs:101:14:101:14 | a | semmle.label | a | +| test.rs:101:14:101:14 | a [tuple.0] | semmle.label | a [tuple.0] | +| test.rs:101:14:101:14 | a [tuple.1] | semmle.label | a [tuple.1] | +| test.rs:101:14:101:14 | a [tuple.2] | semmle.label | a [tuple.2] | +| test.rs:101:14:101:23 | a.as_str() | semmle.label | a.as_str() | +| test.rs:102:14:102:14 | a | semmle.label | a | +| test.rs:102:14:102:14 | a [tuple.0] | semmle.label | a [tuple.0] | +| test.rs:102:14:102:14 | a [tuple.1] | semmle.label | a [tuple.1] | +| test.rs:102:14:102:14 | a [tuple.2] | semmle.label | a [tuple.2] | +| test.rs:102:14:102:25 | a.as_bytes() | semmle.label | a.as_bytes() | +| test.rs:103:14:103:14 | a | semmle.label | a | +| test.rs:109:9:109:41 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| test.rs:111:13:111:18 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | +| test.rs:111:13:111:18 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | +| test.rs:111:14:111:14 | a | semmle.label | a | +| test.rs:111:17:111:17 | b | semmle.label | b | +| test.rs:111:22:111:38 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| test.rs:111:22:111:38 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| test.rs:113:14:113:14 | a | semmle.label | a | +| test.rs:114:14:114:14 | b | semmle.label | b | +| test.rs:127:5:127:20 | to | semmle.label | to | +| test.rs:129:9:129:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | +| test.rs:131:13:131:13 | a | semmle.label | a | +| test.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] | +| test.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] | +| test.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] | +| test.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() | +| test.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | +| test.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | +| test.rs:131:17:131:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | +| test.rs:132:14:132:14 | a | semmle.label | a | +| test.rs:139:41:139:42 | to | semmle.label | to | +| test.rs:140:45:140:46 | to | semmle.label | to | +| test.rs:242:33:242:35 | map | semmle.label | map | +| test.rs:242:33:242:35 | map | semmle.label | map | +| test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | +| test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | +| test.rs:244:18:244:18 | a | semmle.label | a | +| test.rs:244:18:244:18 | a | semmle.label | a | +| test.rs:250:46:250:49 | then | semmle.label | then | +| test.rs:250:46:250:49 | then | semmle.label | then | +| test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | +| test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | +| test.rs:252:22:252:22 | a | semmle.label | a | +| test.rs:252:22:252:22 | a | semmle.label | a | +| test.rs:259:50:259:57 | and_then | semmle.label | and_then | +| test.rs:259:50:259:57 | and_then | semmle.label | and_then | +| test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | +| test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | +| test.rs:263:22:263:23 | id | semmle.label | id | +| test.rs:263:22:263:23 | id | semmle.label | id | +| test.rs:272:75:272:77 | map | semmle.label | map | +| test.rs:272:75:272:77 | map | semmle.label | map | +| test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | +| test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | +| test.rs:275:22:275:22 | a | semmle.label | a | +| test.rs:275:22:275:22 | a | semmle.label | a | +subpaths +testFailures +#select +| test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | +| test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | +| test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | +| test.rs:101:14:101:23 | a.as_str() | test.rs:139:41:139:42 | to | test.rs:101:14:101:23 | a.as_str() | $@ | test.rs:139:41:139:42 | to | to | +| test.rs:102:14:102:25 | a.as_bytes() | test.rs:139:41:139:42 | to | test.rs:102:14:102:25 | a.as_bytes() | $@ | test.rs:139:41:139:42 | to | to | +| test.rs:103:14:103:14 | a | test.rs:139:41:139:42 | to | test.rs:103:14:103:14 | a | $@ | test.rs:139:41:139:42 | to | to | +| test.rs:113:14:113:14 | a | test.rs:140:45:140:46 | to | test.rs:113:14:113:14 | a | $@ | test.rs:140:45:140:46 | to | to | +| test.rs:114:14:114:14 | b | test.rs:140:45:140:46 | to | test.rs:114:14:114:14 | b | $@ | test.rs:140:45:140:46 | to | to | +| test.rs:132:14:132:14 | a | test.rs:127:5:127:20 | to | test.rs:132:14:132:14 | a | $@ | test.rs:127:5:127:20 | to | to | +| test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | +| test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | +| test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | +| test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | +| test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | +| test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | +| test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | +| test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql new file mode 100644 index 00000000000..09b4ab5bf90 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql @@ -0,0 +1,36 @@ +/** + * @kind path-problem + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.Concepts +import utils.test.InlineFlowTest + +/** + * Configuration for flow from any threat model source to an argument of the function `sink`. + */ +module MyFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } + + predicate isSink(DataFlow::Node sink) { + any(CallExpr call | + call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" + ).getArgList().getAnArg() = sink.asExpr().getExpr() + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { + // flow out from any content at the sink. + isSink(node) and + exists(c) + } +} + +module MyFlowTest = TaintFlowTest; + +import MyFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected new file mode 100644 index 00000000000..549f9c4ab76 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -0,0 +1,106 @@ +| test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.qlref new file mode 100644 index 00000000000..7aa95121af3 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.qlref @@ -0,0 +1,2 @@ +query: queries/summary/TaintSources.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs similarity index 100% rename from rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs rename to rust/ql/test/library-tests/dataflow/sources/web_frameworks/test.rs From 8a7e206401353c36eede958a8660775842fc0a27 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 17:57:37 +0100 Subject: [PATCH 244/965] Rust: Move the remaining test_futures_io test into net. --- .../dataflow/sources/net/InlineFlow.expected | 415 +++++++++++++++--- .../sources/net/TaintSources.expected | 5 +- .../dataflow/sources/net/test.rs | 166 +++++++ .../dataflow/sources/test_futures_io.rs | 160 ------- 4 files changed, 525 insertions(+), 221 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 5f8a0a77a2d..2a8b357c043 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -1,77 +1,94 @@ models -| 1 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 2 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 3 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 4 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 5 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 6 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 7 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 8 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 9 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 10 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 14 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 15 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 16 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 17 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 18 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 19 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 20 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 21 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 22 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 23 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 1 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 2 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 3 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 4 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 5 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 6 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 7 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 8 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 9 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 10 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 15 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 18 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 19 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 20 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 21 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 22 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 24 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 25 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 26 | Summary: ::new; Argument[0]; ReturnValue; value | +| 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 28 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 30 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 32 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 37 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 38 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 39 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 40 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | -| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:17 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:34 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | -| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:12 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:17 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:12 | +| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:34 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:27 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | -| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:12 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:18 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:12 | +| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:35 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:27 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | -| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:12 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:16 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:12 | +| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:33 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:27 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | -| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:15 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:32 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | | test.rs:26:9:26:22 | remote_string6 | test.rs:27:10:27:23 | remote_string6 | provenance | | -| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:13 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:30 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | -| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:14 | -| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:14 | -| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:6 | +| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | +| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | +| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:11 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:24 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | @@ -82,17 +99,17 @@ edges | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | test.rs:60:24:60:57 | await ... [Ok] | provenance | | | test.rs:60:24:60:57 | await ... [Ok] | test.rs:60:24:60:58 | TryExpr | provenance | | | test.rs:60:24:60:58 | TryExpr | test.rs:60:13:60:20 | response | provenance | | -| test.rs:60:31:60:42 | send_request | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:60:31:60:42 | send_request | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:61:15:61:22 | response | test.rs:61:14:61:22 | &response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:68:11:68:18 | response | provenance | | | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | test.rs:67:24:67:57 | await ... [Ok] | provenance | | | test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | -| test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:8 | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:20 | -| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:2 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:21 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | @@ -100,21 +117,21 @@ edges | test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:22 | buffer[0] | provenance | | | test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | | | test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | -| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:4 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | -| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:7 | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:9 | +| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:20 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:22 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:19 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:36 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:21 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:10 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:22 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:23 | -| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:4 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:23 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | @@ -132,6 +149,144 @@ edges | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | +| test.rs:373:13:373:15 | tcp | test.rs:374:15:374:17 | tcp | provenance | | +| test.rs:373:13:373:15 | tcp | test.rs:380:57:380:59 | tcp | provenance | | +| test.rs:373:19:373:36 | ...::connect | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | test.rs:373:19:373:47 | await ... [Ok] | provenance | | +| test.rs:373:19:373:47 | await ... [Ok] | test.rs:373:19:373:48 | TryExpr | provenance | | +| test.rs:373:19:373:48 | TryExpr | test.rs:373:13:373:15 | tcp | provenance | | +| test.rs:374:15:374:17 | tcp | test.rs:374:14:374:17 | &tcp | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:381:15:381:20 | reader | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | +| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | +| test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | +| test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | +| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:28 | +| test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | +| test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | +| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:387:19:387:24 | pinned [&ref] | provenance | | +| test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | +| test.rs:386:30:386:50 | ...::new(...) [&ref] | test.rs:386:17:386:26 | mut pinned [&ref] | provenance | | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:25 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | +| test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | +| test.rs:387:19:387:24 | pinned [&ref] | test.rs:387:18:387:24 | &pinned | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:8 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:9 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:17 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:15 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:13 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | +| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:29 | +| test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | +| test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | +| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:414:19:414:24 | pinned [&ref] | provenance | | +| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | +| test.rs:413:30:413:51 | ...::new(...) [&ref] | test.rs:413:17:413:26 | mut pinned [&ref] | provenance | | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | +| test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | +| test.rs:414:19:414:24 | pinned [&ref] | test.rs:414:18:414:24 | &pinned | provenance | | +| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | | +| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | +| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | | +| test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | | +| test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | +| test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | +| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | +| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:423:27:423:48 | ...::new(...) [&ref] | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:25 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | +| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | +| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | test.rs:425:29:425:35 | Ok(...) [Ok] | provenance | | +| test.rs:425:29:425:35 | Ok(...) [Ok] | test.rs:425:32:425:34 | buf | provenance | | +| test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | +| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | | +| test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | | +| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | +| test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | +| test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | +| test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | | +| test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:445:19:445:24 | pinned [&ref] | provenance | | +| test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | +| test.rs:444:30:444:51 | ...::new(...) [&ref] | test.rs:444:17:444:26 | mut pinned [&ref] | provenance | | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | +| test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | +| test.rs:445:19:445:24 | pinned [&ref] | test.rs:445:18:445:24 | &pinned | provenance | | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:8 | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | +| test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | +| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | +| test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | +| test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:8 | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | +| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | +| test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | +| test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | +| test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | +| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:468:19:468:24 | pinned [&ref] | provenance | | +| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | +| test.rs:467:30:467:51 | ...::new(...) [&ref] | test.rs:467:17:467:26 | mut pinned [&ref] | provenance | | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | +| test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | +| test.rs:468:19:468:24 | pinned [&ref] | test.rs:468:18:468:24 | &pinned | provenance | | +| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | | +| test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | | +| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | +| test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | | +| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | | +| test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | | +| test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | | +| test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | | +| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | +| test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | +| test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | +| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | +| test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | +| test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | +| test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | +| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | +| test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | +| test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | +| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | +| test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | +| test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | nodes | test.rs:11:9:11:22 | remote_string1 | semmle.label | remote_string1 | | test.rs:11:26:11:47 | ...::get | semmle.label | ...::get | @@ -253,8 +408,130 @@ nodes | test.rs:275:50:275:55 | [post] buffer | semmle.label | [post] buffer | | test.rs:282:26:282:32 | &buffer | semmle.label | &buffer | | test.rs:282:27:282:32 | buffer | semmle.label | buffer | +| test.rs:373:13:373:15 | tcp | semmle.label | tcp | +| test.rs:373:19:373:36 | ...::connect | semmle.label | ...::connect | +| test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | +| test.rs:373:19:373:47 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:373:19:373:48 | TryExpr | semmle.label | TryExpr | +| test.rs:374:14:374:17 | &tcp | semmle.label | &tcp | +| test.rs:374:15:374:17 | tcp | semmle.label | tcp | +| test.rs:380:13:380:22 | mut reader | semmle.label | mut reader | +| test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | +| test.rs:380:26:380:66 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:380:26:380:67 | TryExpr | semmle.label | TryExpr | +| test.rs:380:57:380:59 | tcp | semmle.label | tcp | +| test.rs:381:14:381:20 | &reader | semmle.label | &reader | +| test.rs:381:15:381:20 | reader | semmle.label | reader | +| test.rs:386:17:386:26 | mut pinned | semmle.label | mut pinned | +| test.rs:386:17:386:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | +| test.rs:386:30:386:50 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:386:30:386:50 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| test.rs:386:39:386:49 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:386:44:386:49 | reader | semmle.label | reader | +| test.rs:387:18:387:24 | &pinned | semmle.label | &pinned | +| test.rs:387:19:387:24 | pinned | semmle.label | pinned | +| test.rs:387:19:387:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:408:13:408:23 | mut reader2 | semmle.label | mut reader2 | +| test.rs:408:27:408:61 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:408:55:408:60 | reader | semmle.label | reader | +| test.rs:409:14:409:21 | &reader2 | semmle.label | &reader2 | +| test.rs:409:15:409:21 | reader2 | semmle.label | reader2 | +| test.rs:413:17:413:26 | mut pinned | semmle.label | mut pinned | +| test.rs:413:17:413:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | +| test.rs:413:30:413:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:413:30:413:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:413:44:413:50 | reader2 | semmle.label | reader2 | +| test.rs:414:18:414:24 | &pinned | semmle.label | &pinned | +| test.rs:414:19:414:24 | pinned | semmle.label | pinned | +| test.rs:414:19:414:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:416:17:416:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:417:32:417:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:417:35:417:37 | buf | semmle.label | buf | +| test.rs:418:22:418:28 | &buffer | semmle.label | &buffer | +| test.rs:418:23:418:28 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:419:22:419:24 | buf | semmle.label | buf | +| test.rs:423:17:423:23 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:423:27:423:48 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:423:27:423:48 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:423:41:423:47 | reader2 | semmle.label | reader2 | +| test.rs:424:20:424:26 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:425:29:425:35 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:425:32:425:34 | buf | semmle.label | buf | +| test.rs:426:26:426:33 | &buffer2 | semmle.label | &buffer2 | +| test.rs:426:27:426:33 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | +| test.rs:427:26:427:28 | buf | semmle.label | buf | +| test.rs:437:17:437:22 | buffer | semmle.label | buffer | +| test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:437:26:437:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:437:26:437:50 | TryExpr | semmle.label | TryExpr | +| test.rs:438:18:438:23 | buffer | semmle.label | buffer | +| test.rs:444:17:444:26 | mut pinned | semmle.label | mut pinned | +| test.rs:444:17:444:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | +| test.rs:444:30:444:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:444:30:444:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:444:44:444:50 | reader2 | semmle.label | reader2 | +| test.rs:445:18:445:24 | &pinned | semmle.label | &pinned | +| test.rs:445:19:445:24 | pinned | semmle.label | pinned | +| test.rs:445:19:445:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:457:68:457:74 | reader2 | semmle.label | reader2 | +| test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:457:82:457:88 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:458:18:458:40 | &... | semmle.label | &... | +| test.rs:458:19:458:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:461:31:461:37 | reader2 | semmle.label | reader2 | +| test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:461:49:461:55 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:462:18:462:40 | &... | semmle.label | &... | +| test.rs:462:19:462:40 | buffer2[...] | semmle.label | buffer2[...] | +| test.rs:467:17:467:26 | mut pinned | semmle.label | mut pinned | +| test.rs:467:17:467:26 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | +| test.rs:467:30:467:51 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:467:30:467:51 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | +| test.rs:467:44:467:50 | reader2 | semmle.label | reader2 | +| test.rs:468:18:468:24 | &pinned | semmle.label | &pinned | +| test.rs:468:19:468:24 | pinned | semmle.label | pinned | +| test.rs:468:19:468:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:470:17:470:22 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | +| test.rs:471:18:471:24 | &buffer | semmle.label | &buffer | +| test.rs:471:19:471:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | +| test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | +| test.rs:472:32:472:38 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | +| test.rs:472:35:472:37 | buf | semmle.label | buf | +| test.rs:473:22:473:24 | buf | semmle.label | buf | +| test.rs:479:17:479:22 | buffer | semmle.label | buffer | +| test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | +| test.rs:479:26:479:49 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:479:26:479:50 | TryExpr | semmle.label | TryExpr | +| test.rs:480:18:480:23 | buffer | semmle.label | buffer | +| test.rs:486:31:486:37 | reader2 | semmle.label | reader2 | +| test.rs:486:57:486:65 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:486:62:486:65 | [post] line | semmle.label | [post] line | +| test.rs:487:18:487:22 | &line | semmle.label | &line | +| test.rs:487:19:487:22 | line | semmle.label | line | +| test.rs:493:31:493:37 | reader2 | semmle.label | reader2 | +| test.rs:493:49:493:57 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | +| test.rs:493:54:493:57 | [post] line | semmle.label | [post] line | +| test.rs:494:18:494:22 | &line | semmle.label | &line | +| test.rs:494:19:494:22 | line | semmle.label | line | +| test.rs:500:31:500:37 | reader2 | semmle.label | reader2 | +| test.rs:500:51:500:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:500:56:500:61 | [post] buffer | semmle.label | [post] buffer | +| test.rs:501:18:501:24 | &buffer | semmle.label | &buffer | +| test.rs:501:19:501:24 | buffer | semmle.label | buffer | subpaths testFailures +| test.rs:400:44:400:64 | //... | Missing result: hasTaintFlow=url | +| test.rs:405:44:405:64 | //... | Missing result: hasTaintFlow=url | #select | test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | | test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | @@ -276,3 +553,23 @@ testFailures | test.rs:244:14:244:23 | buffer2[0] | test.rs:224:28:224:57 | ...::connect | test.rs:244:14:244:23 | buffer2[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | | test.rs:259:26:259:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:259:26:259:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | | test.rs:282:26:282:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:282:26:282:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:36 | ...::connect | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:381:14:381:20 | &reader | test.rs:373:19:373:36 | ...::connect | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:36 | ...::connect | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:419:22:419:24 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:419:22:419:24 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:426:26:426:33 | &buffer2 | test.rs:373:19:373:36 | ...::connect | test.rs:426:26:426:33 | &buffer2 | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:427:26:427:28 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:438:18:438:23 | buffer | test.rs:373:19:373:36 | ...::connect | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:458:18:458:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:462:18:462:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:471:18:471:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:471:18:471:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:473:22:473:24 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:473:22:473:24 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:480:18:480:23 | buffer | test.rs:373:19:373:36 | ...::connect | test.rs:480:18:480:23 | buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:487:18:487:22 | &line | test.rs:373:19:373:36 | ...::connect | test.rs:487:18:487:22 | &line | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:494:18:494:22 | &line | test.rs:373:19:373:36 | ...::connect | test.rs:494:18:494:22 | &line | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:501:18:501:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:501:18:501:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index 68defa30d87..190628f93d7 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -13,5 +13,6 @@ | test.rs:224:28:224:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:306:22:306:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:359:16:359:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:359:16:359:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:373:19:373:36 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 759bae8d86d..6590674854d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -354,6 +354,166 @@ fn test_rustls() -> std::io::Result<()> { Ok(()) } +mod futures_rustls { + use async_std::net::TcpStream; + use async_std::sync::Arc; + use futures::io::AsyncBufRead; + use futures::io::AsyncBufReadExt; + use futures::io::AsyncRead; + use futures::io::AsyncReadExt; + use futures::StreamExt; + use futures_rustls::TlsConnector; + use std::io; + use std::pin::Pin; + use std::task::{Context, Poll}; + use super::sink; + + pub async fn test_futures_rustls_futures_io() -> io::Result<()> { + let url = "www.example.com:443"; + let tcp = TcpStream::connect(url).await?; // $ Alert[rust/summary/taint-sources] + sink(&tcp); // $ hasTaintFlow=url + let config = rustls::ClientConfig::builder() + .with_root_certificates(rustls::RootCertStore::empty()) + .with_no_client_auth(); + let connector = TlsConnector::from(Arc::new(config)); + let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); + let mut reader = connector.connect(server_name, tcp).await?; + sink(&reader); // $ hasTaintFlow=url + + { + // using the `AsyncRead` trait (low-level) + let mut buffer = [0u8; 64]; + let mut pinned = Pin::new(&mut reader); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); // we cannot correctly resolve this call, since it relies on `Deref` + if let Poll::Ready(Ok(n)) = bytes_read { + sink(&buffer); // $ MISSING: hasTaintFlow=url + sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + } + } + + { + // using the `AsyncReadExt::read` extension method (higher-level) + let mut buffer1 = [0u8; 64]; + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + + let mut buffer2 = [0u8; 64]; + let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + + sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + } + + let mut reader2 = futures::io::BufReader::new(reader); + sink(&reader2); // $ hasTaintFlow=url + + { + // using the `AsyncBufRead` trait (low-level) + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let buffer = pinned.poll_fill_buf(&mut cx); + if let Poll::Ready(Ok(buf)) = buffer { + sink(&buffer); // $ hasTaintFlow=url + sink(buf); // $ hasTaintFlow=url + } + + // using the `AsyncBufRead` trait (alternative syntax) + let buffer2 = Pin::new(&mut reader2).poll_fill_buf(&mut cx); + match (buffer2) { + Poll::Ready(Ok(buf)) => { + sink(&buffer2); // $ hasTaintFlow=url + sink(buf); // $ hasTaintFlow=url + } + _ => { + // ... + } + } + } + + { + // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) + let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncRead` trait (low-level) + let mut buffer = [0u8; 64]; + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); + sink(&buffer); // $ MISSING: hasTaintFlow=url + if let Poll::Ready(Ok(n)) = bytes_read { + sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + } + } + + { + // using the `AsyncReadExt::read` extension method (higher-level) + let mut buffer1 = [0u8; 64]; + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + + let mut buffer2 = [0u8; 64]; + let bytes_read2 = reader2.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufRead` trait (low-level) + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let buffer = pinned.poll_fill_buf(&mut cx); + sink(&buffer); // $ hasTaintFlow=url + if let Poll::Ready(Ok(buf)) = buffer { + sink(buf); // $ hasTaintFlow=url + } + } + + { + // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) + let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_until` extension method + let mut line = Vec::new(); + let _bytes_read = reader2.read_until(b'\n', &mut line).await?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_line` extension method + let mut line = String::new(); + let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(&line); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_to_end` extension method + let mut buffer = Vec::with_capacity(1024); + let _bytes_read = reader2.read_to_end(&mut buffer).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::lines` extension method + let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + sink(lines_stream.next().await.unwrap()); // $ MISSING: hasTaintFlow=url + while let Some(line) = lines_stream.next().await { + sink(line.unwrap()); // $ MISSING: hasTaintFlow + } + } + + Ok(()) + } +} + #[tokio::main] async fn main() -> Result<(), Box> { let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::().unwrap(); // $ Alert[rust/summary/taint-sources] @@ -394,5 +554,11 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_futures_rustls_futures_io..."); + match futures::executor::block_on(futures_rustls::test_futures_rustls_futures_io()) { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + Ok(()) } diff --git a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs deleted file mode 100644 index b93f0353525..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs +++ /dev/null @@ -1,160 +0,0 @@ -fn sink(_: T) {} - -// --- tests --- - -use async_std::net::TcpStream; -use async_std::sync::Arc; -use futures::io::AsyncBufRead; -use futures::io::AsyncBufReadExt; -use futures::io::AsyncRead; -use futures::io::AsyncReadExt; -use futures::StreamExt; -use futures_rustls::TlsConnector; -use std::io; -use std::pin::Pin; -use std::task::{Context, Poll}; - -async fn test_futures_rustls_futures_io() -> io::Result<()> { - let url = "www.example.com:443"; - let tcp = TcpStream::connect(url).await?; // $ Alert[rust/summary/taint-sources] - sink(&tcp); // $ hasTaintFlow=url - let config = rustls::ClientConfig::builder() - .with_root_certificates(rustls::RootCertStore::empty()) - .with_no_client_auth(); - let connector = TlsConnector::from(Arc::new(config)); - let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); - let mut reader = connector.connect(server_name, tcp).await?; - sink(&reader); // $ hasTaintFlow=url - - { - // using the `AsyncRead` trait (low-level) - let mut buffer = [0u8; 64]; - let mut pinned = Pin::new(&mut reader); - sink(&pinned); // $ hasTaintFlow=url - let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let bytes_read = pinned.poll_read(&mut cx, &mut buffer); // we cannot correctly resolve this call, since it relies on `Deref` - if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer); // $ MISSING: hasTaintFlow=url - sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url - } - } - - { - // using the `AsyncReadExt::read` extension method (higher-level) - let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url - - let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - - sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url - } - - let mut reader2 = futures::io::BufReader::new(reader); - sink(&reader2); // $ hasTaintFlow=url - - { - // using the `AsyncBufRead` trait (low-level) - let mut pinned = Pin::new(&mut reader2); - sink(&pinned); // $ hasTaintFlow=url - let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let buffer = pinned.poll_fill_buf(&mut cx); - if let Poll::Ready(Ok(buf)) = buffer { - sink(&buffer); // $ hasTaintFlow=url - sink(buf); // $ hasTaintFlow=url - } - - // using the `AsyncBufRead` trait (alternative syntax) - let buffer2 = Pin::new(&mut reader2).poll_fill_buf(&mut cx); - match (buffer2) { - Poll::Ready(Ok(buf)) => { - sink(&buffer2); // $ hasTaintFlow=url - sink(buf); // $ hasTaintFlow=url - } - _ => { - // ... - } - } - } - - { - // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` - sink(buffer); // $ hasTaintFlow=url - } - - { - // using the `AsyncRead` trait (low-level) - let mut buffer = [0u8; 64]; - let mut pinned = Pin::new(&mut reader2); - sink(&pinned); // $ hasTaintFlow=url - let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let bytes_read = pinned.poll_read(&mut cx, &mut buffer); - sink(&buffer); // $ MISSING: hasTaintFlow=url - if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url - } - } - - { - // using the `AsyncReadExt::read` extension method (higher-level) - let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url - - let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader2.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url - } - - { - // using the `AsyncBufRead` trait (low-level) - let mut pinned = Pin::new(&mut reader2); - sink(&pinned); // $ hasTaintFlow=url - let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let buffer = pinned.poll_fill_buf(&mut cx); - sink(&buffer); // $ hasTaintFlow=url - if let Poll::Ready(Ok(buf)) = buffer { - sink(buf); // $ hasTaintFlow=url - } - } - - { - // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` - sink(buffer); // $ hasTaintFlow=url - } - - { - // using the `AsyncBufReadExt::read_until` extension method - let mut line = Vec::new(); - let _bytes_read = reader2.read_until(b'\n', &mut line).await?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` - sink(&line); // $ hasTaintFlow=url - } - - { - // using the `AsyncBufReadExt::read_line` extension method - let mut line = String::new(); - let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` - sink(&line); // $ hasTaintFlow=url - } - - { - // using the `AsyncBufReadExt::read_to_end` extension method - let mut buffer = Vec::with_capacity(1024); - let _bytes_read = reader2.read_to_end(&mut buffer).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer); // $ hasTaintFlow=url - } - - { - // using the `AsyncBufReadExt::lines` extension method - let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` - sink(lines_stream.next().await.unwrap()); // $ MISSING: hasTaintFlow=url - while let Some(line) = lines_stream.next().await { - sink(line.unwrap()); // $ MISSING: hasTaintFlow - } - } - - Ok(()) -} From 7efd4d26a0d497c6e4df88bbd52216e822fbd120 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:05:29 +0100 Subject: [PATCH 245/965] Rust: Accept result regression. Presumably because of a change in context, e.g. the module wrapping this test now, or the different inputs. Either way we *should* be able to get the result, and what we *actually* get in our analysis doesn't change here either. We've just slightly changed the test and exposed a gap. --- .../library-tests/dataflow/sources/net/InlineFlow.expected | 2 -- rust/ql/test/library-tests/dataflow/sources/net/test.rs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 2a8b357c043..da25afb2abb 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -530,8 +530,6 @@ nodes | test.rs:501:19:501:24 | buffer | semmle.label | buffer | subpaths testFailures -| test.rs:400:44:400:64 | //... | Missing result: hasTaintFlow=url | -| test.rs:405:44:405:64 | //... | Missing result: hasTaintFlow=url | #select | test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | | test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 6590674854d..18188c375fc 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -397,12 +397,12 @@ mod futures_rustls { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + sink(&buffer1[..bytes_read1]); // $ MISSING: hasTaintFlow=url let mut buffer2 = [0u8; 64]; let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` - sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + sink(&buffer2[..bytes_read2]); // $ MISSING: hasTaintFlow=url } let mut reader2 = futures::io::BufReader::new(reader); From 42224fe642db3c4b46954836218c1eb5db820654 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:09:43 +0100 Subject: [PATCH 246/965] Rust: Clean up the sources test directory. --- .../PathResolutionConsistency.expected | 31 - .../TypeInferenceConsistency.expected | 4 - .../library-tests/dataflow/sources/Cargo.lock | 3524 ----------------- .../dataflow/sources/InlineFlow.expected | 2193 ---------- .../dataflow/sources/InlineFlow.ql | 36 - .../dataflow/sources/TaintSources.expected | 223 -- .../dataflow/sources/TaintSources.qlref | 2 - .../dataflow/sources/options.yml | 6 - 8 files changed, 6019 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/TypeInferenceConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/Cargo.lock delete mode 100644 rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql delete mode 100644 rust/ql/test/library-tests/dataflow/sources/TaintSources.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/TaintSources.qlref delete mode 100644 rust/ql/test/library-tests/dataflow/sources/options.yml diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 16eea4a6fe4..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,31 +0,0 @@ -multipleCallTargets -| test.rs:113:62:113:77 | ...::from(...) | -| test.rs:120:58:120:73 | ...::from(...) | -| test.rs:229:22:229:72 | ... .read_to_string(...) | -| test.rs:664:22:664:43 | file.read(...) | -| test.rs:673:22:673:41 | f1.read(...) | -| test.rs:1096:50:1096:66 | ...::from(...) | -| test.rs:1096:50:1096:66 | ...::from(...) | -| test_futures_io.rs:45:27:45:84 | ...::read(...) | -| test_futures_io.rs:49:27:49:51 | reader.read(...) | -| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() | -| test_futures_io.rs:103:27:103:85 | ...::read(...) | -| test_futures_io.rs:107:27:107:52 | reader2.read(...) | -| test_futures_io.rs:125:22:125:39 | reader2.fill_buf() | -| test_futures_io.rs:132:27:132:62 | reader2.read_until(...) | -| test_futures_io.rs:139:27:139:54 | reader2.read_line(...) | -| test_futures_io.rs:146:27:146:58 | reader2.read_to_end(...) | -| test_futures_io.rs:152:32:152:46 | reader2.lines() | -| test_futures_io.rs:153:14:153:32 | lines_stream.next() | -| test_futures_io.rs:154:32:154:50 | lines_stream.next() | -| web_frameworks.rs:13:14:13:23 | a.as_str() | -| web_frameworks.rs:13:14:13:23 | a.as_str() | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | -| web_frameworks.rs:101:14:101:23 | a.as_str() | -| web_frameworks.rs:102:14:102:25 | a.as_bytes() | -| web_frameworks.rs:158:14:158:23 | a.as_str() | -| web_frameworks.rs:159:14:159:25 | a.as_bytes() | -multiplePathResolutions -| test.rs:897:28:897:65 | Result::<...> | -| test.rs:984:40:984:49 | Result::<...> | diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index 6b051f73c7a..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,4 +0,0 @@ -nonUniqueCertainType -| web_frameworks.rs:139:30:139:39 | ...::get(...) | | -| web_frameworks.rs:140:34:140:43 | ...::get(...) | | -| web_frameworks.rs:141:30:141:39 | ...::get(...) | | diff --git a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock b/rust/ql/test/library-tests/dataflow/sources/Cargo.lock deleted file mode 100644 index a95c795df10..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/Cargo.lock +++ /dev/null @@ -1,3524 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "actix-codec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" -dependencies = [ - "bitflags", - "bytes", - "futures-core", - "futures-sink", - "memchr", - "pin-project-lite", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "actix-http" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" -dependencies = [ - "actix-codec", - "actix-rt", - "actix-service", - "actix-utils", - "base64", - "bitflags", - "brotli", - "bytes", - "bytestring", - "derive_more", - "encoding_rs", - "flate2", - "foldhash", - "futures-core", - "h2 0.3.26", - "http 0.2.12", - "httparse", - "httpdate", - "itoa", - "language-tags", - "local-channel", - "mime", - "percent-encoding", - "pin-project-lite", - "rand", - "sha1", - "smallvec", - "tokio", - "tokio-util", - "tracing", - "zstd", -] - -[[package]] -name = "actix-macros" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "actix-router" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" -dependencies = [ - "bytestring", - "cfg-if", - "http 0.2.12", - "regex", - "regex-lite", - "serde", - "tracing", -] - -[[package]] -name = "actix-rt" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" -dependencies = [ - "futures-core", - "tokio", -] - -[[package]] -name = "actix-server" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" -dependencies = [ - "actix-rt", - "actix-service", - "actix-utils", - "futures-core", - "futures-util", - "mio", - "socket2", - "tokio", - "tracing", -] - -[[package]] -name = "actix-service" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "actix-utils" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" -dependencies = [ - "local-waker", - "pin-project-lite", -] - -[[package]] -name = "actix-web" -version = "4.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" -dependencies = [ - "actix-codec", - "actix-http", - "actix-macros", - "actix-router", - "actix-rt", - "actix-server", - "actix-service", - "actix-utils", - "actix-web-codegen", - "bytes", - "bytestring", - "cfg-if", - "cookie", - "derive_more", - "encoding_rs", - "foldhash", - "futures-core", - "futures-util", - "impl-more", - "itoa", - "language-tags", - "log", - "mime", - "once_cell", - "pin-project-lite", - "regex", - "regex-lite", - "serde", - "serde_json", - "serde_urlencoded", - "smallvec", - "socket2", - "time", - "tracing", - "url", -] - -[[package]] -name = "actix-web-codegen" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" -dependencies = [ - "actix-router", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.3.1", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - -[[package]] -name = "async-io" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix 1.0.7", - "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener 5.4.0", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-std" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" -dependencies = [ - "async-channel 1.9.0", - "async-global-executor", - "async-io", - "async-lock", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "aws-lc-rs" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" -dependencies = [ - "bindgen", - "cc", - "cmake", - "dunce", - "fs_extra", -] - -[[package]] -name = "axum" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" -dependencies = [ - "axum-core", - "bytes", - "form_urlencoded", - "futures-util", - "http 1.3.1", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" -dependencies = [ - "bytes", - "futures-core", - "http 1.3.1", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn", - "which", -] - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel 2.3.1", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "brotli" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "btoi" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" -dependencies = [ - "num-traits", -] - -[[package]] -name = "bufstream" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" - -[[package]] -name = "bumpalo" -version = "3.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" - -[[package]] -name = "bytestring" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" -dependencies = [ - "bytes", -] - -[[package]] -name = "cc" -version = "1.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - -[[package]] -name = "cfg-if" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "cmake" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" -dependencies = [ - "cc", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "cookie" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" -dependencies = [ - "percent-encoding", - "time", - "version_check", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core", - "quote", - "syn", -] - -[[package]] -name = "deranged" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derive_more" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - -[[package]] -name = "derive_utils" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener 5.4.0", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "flate2" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" -dependencies = [ - "crc32fast", - "libz-sys", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" -dependencies = [ - "futures-io", - "rustls", - "rustls-pki-types", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.3.1", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "headers" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" -dependencies = [ - "base64", - "bytes", - "headers-core", - "http 1.3.1", - "httpdate", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" -dependencies = [ - "http 1.3.1", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.3.1", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http 1.3.1", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2 0.4.10", - "http 1.3.1", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http 1.3.1", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" -dependencies = [ - "base64", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 1.3.1", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "system-configuration", - "tokio", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "impl-more" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "io-enum" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d197db2f7ebf90507296df3aebaf65d69f5dce8559d8dbd82776a6cadab61bbf" -dependencies = [ - "derive_utils", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "jobserver" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" -dependencies = [ - "getrandom 0.3.3", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "keyed_priority_queue" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" -dependencies = [ - "indexmap", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "language-tags" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.173" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb" - -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.2", -] - -[[package]] -name = "libz-sys" -version = "1.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "local-channel" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" -dependencies = [ - "futures-core", - "futures-sink", - "local-waker", -] - -[[package]] -name = "local-waker" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" - -[[package]] -name = "lock_api" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -dependencies = [ - "value-bag", -] - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" - -[[package]] -name = "lru" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" -dependencies = [ - "hashbrown", -] - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - -[[package]] -name = "memchr" -version = "2.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" -dependencies = [ - "libc", - "log", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", -] - -[[package]] -name = "mysql" -version = "26.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2510a735f601bab18202b07ea0a197bd1d130d3a5ce2edf4577d225f0c3ee4" -dependencies = [ - "bufstream", - "bytes", - "crossbeam-queue", - "crossbeam-utils", - "flate2", - "io-enum", - "libc", - "lru 0.12.5", - "mysql_common", - "named_pipe", - "pem", - "percent-encoding", - "socket2", - "twox-hash", - "url", -] - -[[package]] -name = "mysql-common-derive" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" -dependencies = [ - "darling", - "heck", - "num-bigint", - "proc-macro-crate", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn", - "termcolor", - "thiserror", -] - -[[package]] -name = "mysql_async" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "277ce2f2459b2af4cc6d0a0b7892381f80800832f57c533f03e2845f4ea331ea" -dependencies = [ - "bytes", - "crossbeam-queue", - "flate2", - "futures-core", - "futures-sink", - "futures-util", - "keyed_priority_queue", - "lru 0.14.0", - "mysql_common", - "pem", - "percent-encoding", - "rand", - "serde", - "serde_json", - "socket2", - "thiserror", - "tokio", - "tokio-util", - "twox-hash", - "url", -] - -[[package]] -name = "mysql_common" -version = "0.35.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" -dependencies = [ - "base64", - "bitflags", - "btoi", - "byteorder", - "bytes", - "crc32fast", - "flate2", - "getrandom 0.3.3", - "mysql-common-derive", - "num-bigint", - "num-traits", - "regex", - "saturating", - "serde", - "serde_json", - "sha1", - "sha2", - "thiserror", - "uuid", -] - -[[package]] -name = "named_pipe" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" -dependencies = [ - "winapi", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags", - "cfg-if", - "cfg_aliases", - "libc", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "openssl" -version = "0.10.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-sys" -version = "0.9.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "pem" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" -dependencies = [ - "base64", - "serde_core", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "poem" -version = "3.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea63e9302279b1ca262d15342760f8d08f04fb974d4997e8baed7d034b94121" -dependencies = [ - "bytes", - "futures-util", - "headers", - "http 1.3.1", - "http-body-util", - "hyper", - "hyper-util", - "mime", - "nix", - "parking_lot", - "percent-encoding", - "pin-project-lite", - "poem-derive", - "regex", - "rfc7239", - "serde", - "serde_json", - "serde_urlencoded", - "smallvec", - "sync_wrapper", - "thiserror", - "tokio", - "tokio-util", - "tracing", - "wildmatch", -] - -[[package]] -name = "poem-derive" -version = "3.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824e7fe35343b7fe354e5d4ac444ddbe674676ebba4b4e48565835661033d338" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "polling" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "rand" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", -] - -[[package]] -name = "redox_syscall" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "reqwest" -version = "0.12.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.10", - "http 1.3.1", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-tls", - "hyper-util", - "js-sys", - "log", - "mime", - "native-tls", - "percent-encoding", - "pin-project-lite", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-native-tls", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "rfc7239" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" -dependencies = [ - "uncased", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.16", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.23.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" -dependencies = [ - "aws-lc-rs", - "log", - "once_cell", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pki-types" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" -dependencies = [ - "zeroize", -] - -[[package]] -name = "rustls-webpki" -version = "0.103.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" -dependencies = [ - "aws-lc-rs", - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "saturating" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" - -[[package]] -name = "schannel" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "test" -version = "0.0.1" -dependencies = [ - "actix-web", - "async-std", - "axum", - "bytes", - "futures", - "futures-rustls", - "http 1.3.1", - "http-body-util", - "hyper", - "hyper-util", - "mysql", - "mysql_async", - "poem", - "reqwest", - "rustls", - "serde", - "serde_json", - "tokio", - "warp", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "time" -version = "0.3.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" - -[[package]] -name = "time-macros" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tokio" -version = "1.45.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" -dependencies = [ - "bitflags", - "bytes", - "futures-util", - "http 1.3.1", - "http-body", - "iri-string", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "twox-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicase" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "value-bag" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "warp" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d06d9202adc1f15d709c4f4a2069be5428aa912cc025d6f268ac441ab066b0" -dependencies = [ - "bytes", - "futures-util", - "headers", - "http 1.3.1", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project", - "scoped-tls", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-util", - "tower-service", - "tracing", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - -[[package]] -name = "wildmatch" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-registry" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" -dependencies = [ - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - -[[package]] -name = "winnow" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags", -] - -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected deleted file mode 100644 index d814183e9b9..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.expected +++ /dev/null @@ -1,2193 +0,0 @@ -models -| 1 | Source: <_ as mysql::conn::queryable::Queryable>::query_first; ReturnValue.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; database | -| 2 | Source: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | -| 3 | Source: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | -| 4 | Source: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | -| 5 | Source: <_ as mysql_async::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | -| 6 | Source: <_ as warp::filter::Filter>::and_then; Argument[0].Parameter[0..7]; remote | -| 7 | Source: <_ as warp::filter::Filter>::map; Argument[0].Parameter[0..7]; remote | -| 8 | Source: <_ as warp::filter::Filter>::then; Argument[0].Parameter[0..7]; remote | -| 9 | Source: ::to; Argument[0].Parameter[0..7]; remote | -| 10 | Source: ::to; Argument[0].Parameter[0..7]; remote | -| 11 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 12 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 13 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 14 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 15 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)].Element; database | -| 16 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 17 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 18 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 19 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 20 | Source: ::file_name; ReturnValue; file | -| 21 | Source: ::path; ReturnValue; file | -| 22 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 23 | Source: ::open; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 24 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 25 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 26 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 27 | Source: ::open; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 28 | Source: ::file_name; ReturnValue; file | -| 29 | Source: ::path; ReturnValue; file | -| 30 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 31 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 32 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 33 | Source: std::env::args; ReturnValue.Element; commandargs | -| 34 | Source: std::env::args_os; ReturnValue.Element; commandargs | -| 35 | Source: std::env::current_dir; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 36 | Source: std::env::current_exe; ReturnValue.Field[core::result::Result::Ok(0)]; commandargs | -| 37 | Source: std::env::home_dir; ReturnValue.Field[core::option::Option::Some(0)]; commandargs | -| 38 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 39 | Source: std::env::var_os; ReturnValue.Field[core::option::Option::Some(0)]; environment | -| 40 | Source: std::fs::read; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 41 | Source: std::fs::read; ReturnValue; file | -| 42 | Source: std::fs::read_link; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 43 | Source: std::fs::read_to_string; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 44 | Source: std::fs::read_to_string; ReturnValue; file | -| 45 | Source: std::io::stdio::stdin; ReturnValue; stdin | -| 46 | Source: tokio::fs::read::read; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 47 | Source: tokio::fs::read_link::read_link; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 48 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | -| 49 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 50 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 51 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 52 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 53 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | -| 54 | Summary: <_ as core::iter::traits::iterator::Iterator>::next; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | -| 55 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 56 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | -| 57 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | -| 58 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 59 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 60 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 61 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 62 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 63 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 64 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 65 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 66 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 67 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 68 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | -| 69 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | -| 70 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 71 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 72 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 73 | Summary: <_ as std::io::BufRead>::read_until; Argument[self]; Argument[1].Reference; taint | -| 74 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 75 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 76 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 77 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 78 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 79 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 80 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 81 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 82 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 83 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 84 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 85 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 86 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 87 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 88 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 89 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 90 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 91 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 92 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 93 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 94 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 95 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 96 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 97 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[0]; taint | -| 98 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[1]; taint | -| 99 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[2]; taint | -| 100 | Summary: ::into_inner; Argument[self]; ReturnValue.Field[3]; taint | -| 101 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | -| 102 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 103 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 104 | Summary: ::add; Argument[0]; ReturnValue; taint | -| 105 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 106 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 107 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 108 | Summary: ::new; Argument[0]; ReturnValue; value | -| 109 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 110 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 111 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 112 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 113 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 114 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 115 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 116 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 117 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 118 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 119 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 120 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 121 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 122 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 123 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 124 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 125 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 126 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 127 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 128 | Summary: ::read_exact; Argument[self]; Argument[0]; taint | -| 129 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 130 | Summary: ::lock; Argument[self]; ReturnValue; taint | -| 131 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 132 | Summary: ::as_path; Argument[self]; ReturnValue; value | -| 133 | Summary: ::buffer; Argument[self]; ReturnValue; taint | -| 134 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 135 | Summary: ::next_line; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 136 | Summary: ::next_segment; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 137 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 138 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 139 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | -edges -| test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | provenance | Src:MaD:38 | -| test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | provenance | Src:MaD:39 | -| test.rs:11:9:11:12 | var1 | test.rs:14:10:14:13 | var1 | provenance | | -| test.rs:11:16:11:28 | ...::var | test.rs:11:16:11:36 | ...::var(...) [Ok] | provenance | Src:MaD:38 | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | test.rs:11:16:11:59 | ... .expect(...) | provenance | MaD:109 | -| test.rs:11:16:11:59 | ... .expect(...) | test.rs:11:9:11:12 | var1 | provenance | | -| test.rs:12:9:12:12 | var2 | test.rs:15:10:15:13 | var2 | provenance | | -| test.rs:12:16:12:31 | ...::var_os | test.rs:12:16:12:39 | ...::var_os(...) [Some] | provenance | Src:MaD:39 | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | test.rs:12:16:12:48 | ... .unwrap() | provenance | MaD:106 | -| test.rs:12:16:12:48 | ... .unwrap() | test.rs:12:9:12:12 | var2 | provenance | | -| test.rs:29:9:29:12 | args [element] | test.rs:30:20:30:23 | args [element] | provenance | | -| test.rs:29:9:29:12 | args [element] | test.rs:31:17:31:20 | args [element] | provenance | | -| test.rs:29:29:29:42 | ...::args | test.rs:29:29:29:44 | ...::args(...) [element] | provenance | Src:MaD:33 | -| test.rs:29:29:29:44 | ...::args(...) [element] | test.rs:29:29:29:54 | ... .collect() [element] | provenance | MaD:53 | -| test.rs:29:29:29:54 | ... .collect() [element] | test.rs:29:9:29:12 | args [element] | provenance | | -| test.rs:30:9:30:15 | my_path [&ref] | test.rs:36:10:36:16 | my_path | provenance | | -| test.rs:30:19:30:26 | &... [&ref] | test.rs:30:9:30:15 | my_path [&ref] | provenance | | -| test.rs:30:20:30:23 | args [element] | test.rs:30:20:30:26 | args[0] | provenance | | -| test.rs:30:20:30:26 | args[0] | test.rs:30:19:30:26 | &... [&ref] | provenance | | -| test.rs:31:9:31:12 | arg1 [&ref] | test.rs:37:10:37:13 | arg1 | provenance | | -| test.rs:31:16:31:23 | &... [&ref] | test.rs:31:9:31:12 | arg1 [&ref] | provenance | | -| test.rs:31:17:31:20 | args [element] | test.rs:31:17:31:23 | args[1] | provenance | | -| test.rs:31:17:31:23 | args[1] | test.rs:31:16:31:23 | &... [&ref] | provenance | | -| test.rs:32:9:32:12 | arg2 | test.rs:38:10:38:13 | arg2 | provenance | | -| test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:33 | -| test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:55 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:106 | -| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:9:32:12 | arg2 | provenance | | -| test.rs:33:9:33:12 | arg3 | test.rs:39:10:39:13 | arg3 | provenance | | -| test.rs:33:16:33:32 | ...::args_os | test.rs:33:16:33:34 | ...::args_os(...) [element] | provenance | Src:MaD:34 | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | test.rs:33:16:33:41 | ... .nth(...) [Some] | provenance | MaD:55 | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | test.rs:33:16:33:50 | ... .unwrap() | provenance | MaD:106 | -| test.rs:33:16:33:50 | ... .unwrap() | test.rs:33:9:33:12 | arg3 | provenance | | -| test.rs:34:9:34:12 | arg4 | test.rs:40:10:40:13 | arg4 | provenance | | -| test.rs:34:16:34:29 | ...::args | test.rs:34:16:34:31 | ...::args(...) [element] | provenance | Src:MaD:33 | -| test.rs:34:16:34:31 | ...::args(...) [element] | test.rs:34:16:34:38 | ... .nth(...) [Some] | provenance | MaD:55 | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | test.rs:34:16:34:47 | ... .unwrap() | provenance | MaD:106 | -| test.rs:34:16:34:47 | ... .unwrap() | test.rs:34:16:34:64 | ... .parse() [Ok] | provenance | MaD:113 | -| test.rs:34:16:34:64 | ... .parse() [Ok] | test.rs:34:16:34:73 | ... .unwrap() | provenance | MaD:110 | -| test.rs:34:16:34:73 | ... .unwrap() | test.rs:34:9:34:12 | arg4 | provenance | | -| test.rs:42:9:42:11 | arg | test.rs:43:14:43:16 | arg | provenance | | -| test.rs:42:16:42:29 | ...::args | test.rs:42:16:42:31 | ...::args(...) [element] | provenance | Src:MaD:33 | -| test.rs:42:16:42:31 | ...::args(...) [element] | test.rs:42:9:42:11 | arg | provenance | | -| test.rs:46:9:46:11 | arg | test.rs:47:14:47:16 | arg | provenance | | -| test.rs:46:16:46:32 | ...::args_os | test.rs:46:16:46:34 | ...::args_os(...) [element] | provenance | Src:MaD:34 | -| test.rs:46:16:46:34 | ...::args_os(...) [element] | test.rs:46:9:46:11 | arg | provenance | | -| test.rs:52:9:52:11 | dir | test.rs:56:10:56:12 | dir | provenance | | -| test.rs:52:15:52:35 | ...::current_dir | test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:35 | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | test.rs:52:15:52:54 | ... .expect(...) | provenance | MaD:109 | -| test.rs:52:15:52:54 | ... .expect(...) | test.rs:52:9:52:11 | dir | provenance | | -| test.rs:53:9:53:11 | exe | test.rs:57:10:57:12 | exe | provenance | | -| test.rs:53:15:53:35 | ...::current_exe | test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:36 | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | test.rs:53:15:53:54 | ... .expect(...) | provenance | MaD:109 | -| test.rs:53:15:53:54 | ... .expect(...) | test.rs:53:9:53:11 | exe | provenance | | -| test.rs:54:9:54:12 | home | test.rs:58:10:58:13 | home | provenance | | -| test.rs:54:16:54:33 | ...::home_dir | test.rs:54:16:54:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:37 | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | test.rs:54:16:54:52 | ... .expect(...) | provenance | MaD:105 | -| test.rs:54:16:54:52 | ... .expect(...) | test.rs:54:9:54:12 | home | provenance | | -| test.rs:62:9:62:22 | remote_string1 | test.rs:63:10:63:23 | remote_string1 | provenance | | -| test.rs:62:26:62:47 | ...::get | test.rs:62:26:62:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:62:26:62:62 | ...::get(...) [Ok] | test.rs:62:26:62:63 | TryExpr | provenance | | -| test.rs:62:26:62:63 | TryExpr | test.rs:62:26:62:70 | ... .text() [Ok] | provenance | MaD:120 | -| test.rs:62:26:62:70 | ... .text() [Ok] | test.rs:62:26:62:71 | TryExpr | provenance | | -| test.rs:62:26:62:71 | TryExpr | test.rs:62:9:62:22 | remote_string1 | provenance | | -| test.rs:65:9:65:22 | remote_string2 | test.rs:66:10:66:23 | remote_string2 | provenance | | -| test.rs:65:26:65:47 | ...::get | test.rs:65:26:65:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | test.rs:65:26:65:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:65:26:65:71 | ... .unwrap() | test.rs:65:26:65:78 | ... .text() [Ok] | provenance | MaD:120 | -| test.rs:65:26:65:78 | ... .text() [Ok] | test.rs:65:26:65:87 | ... .unwrap() | provenance | MaD:110 | -| test.rs:65:26:65:87 | ... .unwrap() | test.rs:65:9:65:22 | remote_string2 | provenance | | -| test.rs:68:9:68:22 | remote_string3 | test.rs:69:10:69:23 | remote_string3 | provenance | | -| test.rs:68:26:68:47 | ...::get | test.rs:68:26:68:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | test.rs:68:26:68:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:68:26:68:71 | ... .unwrap() | test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:121 | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | test.rs:68:26:68:107 | ... .unwrap() | provenance | MaD:110 | -| test.rs:68:26:68:107 | ... .unwrap() | test.rs:68:9:68:22 | remote_string3 | provenance | | -| test.rs:71:9:71:22 | remote_string4 | test.rs:72:10:72:23 | remote_string4 | provenance | | -| test.rs:71:26:71:47 | ...::get | test.rs:71:26:71:62 | ...::get(...) [Ok] | provenance | Src:MaD:31 | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | test.rs:71:26:71:71 | ... .unwrap() | provenance | MaD:110 | -| test.rs:71:26:71:71 | ... .unwrap() | test.rs:71:26:71:79 | ... .bytes() [Ok] | provenance | MaD:119 | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | test.rs:71:26:71:88 | ... .unwrap() | provenance | MaD:110 | -| test.rs:71:26:71:88 | ... .unwrap() | test.rs:71:9:71:22 | remote_string4 | provenance | | -| test.rs:74:9:74:22 | remote_string5 | test.rs:75:10:75:23 | remote_string5 | provenance | | -| test.rs:74:26:74:37 | ...::get | test.rs:74:26:74:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | -| test.rs:74:26:74:52 | ...::get(...) [future, Ok] | test.rs:74:26:74:58 | await ... [Ok] | provenance | | -| test.rs:74:26:74:58 | await ... [Ok] | test.rs:74:26:74:59 | TryExpr | provenance | | -| test.rs:74:26:74:59 | TryExpr | test.rs:74:26:74:66 | ... .text() [future, Ok] | provenance | MaD:118 | -| test.rs:74:26:74:66 | ... .text() [future, Ok] | test.rs:74:26:74:72 | await ... [Ok] | provenance | | -| test.rs:74:26:74:72 | await ... [Ok] | test.rs:74:26:74:73 | TryExpr | provenance | | -| test.rs:74:26:74:73 | TryExpr | test.rs:74:9:74:22 | remote_string5 | provenance | | -| test.rs:77:9:77:22 | remote_string6 | test.rs:78:10:78:23 | remote_string6 | provenance | | -| test.rs:77:26:77:37 | ...::get | test.rs:77:26:77:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | -| test.rs:77:26:77:52 | ...::get(...) [future, Ok] | test.rs:77:26:77:58 | await ... [Ok] | provenance | | -| test.rs:77:26:77:58 | await ... [Ok] | test.rs:77:26:77:59 | TryExpr | provenance | | -| test.rs:77:26:77:59 | TryExpr | test.rs:77:26:77:67 | ... .bytes() [future, Ok] | provenance | MaD:116 | -| test.rs:77:26:77:67 | ... .bytes() [future, Ok] | test.rs:77:26:77:73 | await ... [Ok] | provenance | | -| test.rs:77:26:77:73 | await ... [Ok] | test.rs:77:26:77:74 | TryExpr | provenance | | -| test.rs:77:26:77:74 | TryExpr | test.rs:77:9:77:22 | remote_string6 | provenance | | -| test.rs:80:9:80:20 | mut request1 | test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:117 | -| test.rs:80:9:80:20 | mut request1 | test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:117 | -| test.rs:80:24:80:35 | ...::get | test.rs:80:24:80:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:32 | -| test.rs:80:24:80:50 | ...::get(...) [future, Ok] | test.rs:80:24:80:56 | await ... [Ok] | provenance | | -| test.rs:80:24:80:56 | await ... [Ok] | test.rs:80:24:80:57 | TryExpr | provenance | | -| test.rs:80:24:80:57 | TryExpr | test.rs:80:9:80:20 | mut request1 | provenance | | -| test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | test.rs:81:10:81:31 | await ... [Ok, Some] | provenance | | -| test.rs:81:10:81:31 | await ... [Ok, Some] | test.rs:81:10:81:32 | TryExpr [Some] | provenance | | -| test.rs:81:10:81:32 | TryExpr [Some] | test.rs:81:10:81:41 | ... .unwrap() | provenance | MaD:106 | -| test.rs:82:15:82:25 | Some(...) [Some] | test.rs:82:20:82:24 | chunk | provenance | | -| test.rs:82:20:82:24 | chunk | test.rs:83:14:83:18 | chunk | provenance | | -| test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | test.rs:82:29:82:50 | await ... [Ok, Some] | provenance | | -| test.rs:82:29:82:50 | await ... [Ok, Some] | test.rs:82:29:82:51 | TryExpr [Some] | provenance | | -| test.rs:82:29:82:51 | TryExpr [Some] | test.rs:82:15:82:25 | Some(...) [Some] | provenance | | -| test.rs:114:13:114:20 | response | test.rs:115:15:115:22 | response | provenance | | -| test.rs:114:13:114:20 | response | test.rs:116:14:116:21 | response | provenance | | -| test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | test.rs:114:24:114:57 | await ... [Ok] | provenance | | -| test.rs:114:24:114:57 | await ... [Ok] | test.rs:114:24:114:58 | TryExpr | provenance | | -| test.rs:114:24:114:58 | TryExpr | test.rs:114:13:114:20 | response | provenance | | -| test.rs:114:31:114:42 | send_request | test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | -| test.rs:115:15:115:22 | response | test.rs:115:14:115:22 | &response | provenance | | -| test.rs:121:9:121:20 | mut response | test.rs:122:11:122:18 | response | provenance | | -| test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | test.rs:121:24:121:57 | await ... [Ok] | provenance | | -| test.rs:121:24:121:57 | await ... [Ok] | test.rs:121:24:121:58 | TryExpr | provenance | | -| test.rs:121:24:121:58 | TryExpr | test.rs:121:9:121:20 | mut response | provenance | | -| test.rs:121:31:121:42 | send_request | test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:14 | -| test.rs:122:11:122:18 | response | test.rs:122:10:122:18 | &response | provenance | | -| test.rs:211:22:211:35 | ...::stdin | test.rs:211:22:211:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer | provenance | MaD:127 | -| test.rs:211:22:211:37 | ...::stdin(...) | test.rs:211:44:211:54 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:211:44:211:54 | [post] &mut buffer | test.rs:212:15:212:20 | buffer | provenance | | -| test.rs:211:44:211:54 | [post] &mut buffer [&ref] | test.rs:211:49:211:54 | [post] buffer | provenance | | -| test.rs:211:49:211:54 | [post] buffer | test.rs:212:15:212:20 | buffer | provenance | | -| test.rs:212:15:212:20 | buffer | test.rs:212:14:212:20 | &buffer | provenance | | -| test.rs:217:22:217:35 | ...::stdin | test.rs:217:22:217:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:217:22:217:37 | ...::stdin(...) | test.rs:217:51:217:61 | [post] &mut buffer [&ref] | provenance | MaD:80 | -| test.rs:217:51:217:61 | [post] &mut buffer [&ref] | test.rs:217:56:217:61 | [post] buffer | provenance | | -| test.rs:217:56:217:61 | [post] buffer | test.rs:218:15:218:20 | buffer | provenance | | -| test.rs:218:15:218:20 | buffer | test.rs:218:14:218:20 | &buffer | provenance | | -| test.rs:223:22:223:35 | ...::stdin | test.rs:223:22:223:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer | provenance | MaD:129 | -| test.rs:223:22:223:37 | ...::stdin(...) | test.rs:223:54:223:64 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:223:54:223:64 | [post] &mut buffer | test.rs:224:15:224:20 | buffer | provenance | | -| test.rs:223:54:223:64 | [post] &mut buffer [&ref] | test.rs:223:59:223:64 | [post] buffer | provenance | | -| test.rs:223:59:223:64 | [post] buffer | test.rs:224:15:224:20 | buffer | provenance | | -| test.rs:224:15:224:20 | buffer | test.rs:224:14:224:20 | &buffer | provenance | | -| test.rs:229:22:229:35 | ...::stdin | test.rs:229:22:229:37 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:229:22:229:37 | ...::stdin(...) | test.rs:229:22:229:44 | ... .lock() | provenance | MaD:130 | -| test.rs:229:22:229:44 | ... .lock() | test.rs:229:61:229:71 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:229:61:229:71 | [post] &mut buffer [&ref] | test.rs:229:66:229:71 | [post] buffer | provenance | | -| test.rs:229:66:229:71 | [post] buffer | test.rs:230:15:230:20 | buffer | provenance | | -| test.rs:230:15:230:20 | buffer | test.rs:230:14:230:20 | &buffer | provenance | | -| test.rs:235:9:235:22 | ...::stdin | test.rs:235:9:235:24 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer | provenance | MaD:128 | -| test.rs:235:9:235:24 | ...::stdin(...) | test.rs:235:37:235:47 | [post] &mut buffer [&ref] | provenance | MaD:79 | -| test.rs:235:37:235:47 | [post] &mut buffer | test.rs:236:15:236:20 | buffer | provenance | | -| test.rs:235:37:235:47 | [post] &mut buffer [&ref] | test.rs:235:42:235:47 | [post] buffer | provenance | | -| test.rs:235:42:235:47 | [post] buffer | test.rs:236:15:236:20 | buffer | provenance | | -| test.rs:236:15:236:20 | buffer | test.rs:236:14:236:20 | &buffer | provenance | | -| test.rs:239:17:239:30 | ...::stdin | test.rs:239:17:239:32 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:239:17:239:32 | ...::stdin(...) | test.rs:239:17:239:40 | ... .bytes() | provenance | MaD:75 | -| test.rs:239:17:239:40 | ... .bytes() | test.rs:240:14:240:17 | byte | provenance | | -| test.rs:246:13:246:22 | mut reader | test.rs:247:20:247:36 | reader.fill_buf() [Ok] | provenance | MaD:70 | -| test.rs:246:26:246:66 | ...::new(...) | test.rs:246:13:246:22 | mut reader | provenance | | -| test.rs:246:50:246:63 | ...::stdin | test.rs:246:50:246:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:246:50:246:65 | ...::stdin(...) | test.rs:246:26:246:66 | ...::new(...) | provenance | MaD:126 | -| test.rs:247:13:247:16 | data | test.rs:248:15:248:18 | data | provenance | | -| test.rs:247:20:247:36 | reader.fill_buf() [Ok] | test.rs:247:20:247:37 | TryExpr | provenance | | -| test.rs:247:20:247:37 | TryExpr | test.rs:247:13:247:16 | data | provenance | | -| test.rs:248:15:248:18 | data | test.rs:248:14:248:18 | &data | provenance | | -| test.rs:252:13:252:18 | reader | test.rs:253:20:253:34 | reader.buffer() | provenance | MaD:125 | -| test.rs:252:22:252:62 | ...::new(...) | test.rs:252:13:252:18 | reader | provenance | | -| test.rs:252:46:252:59 | ...::stdin | test.rs:252:46:252:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:252:46:252:61 | ...::stdin(...) | test.rs:252:22:252:62 | ...::new(...) | provenance | MaD:126 | -| test.rs:253:13:253:16 | data | test.rs:254:15:254:18 | data | provenance | | -| test.rs:253:20:253:34 | reader.buffer() | test.rs:253:13:253:16 | data | provenance | | -| test.rs:254:15:254:18 | data | test.rs:254:14:254:18 | &data | provenance | | -| test.rs:259:13:259:22 | mut reader | test.rs:260:26:260:36 | [post] &mut buffer [&ref] | provenance | MaD:72 | -| test.rs:259:26:259:66 | ...::new(...) | test.rs:259:13:259:22 | mut reader | provenance | | -| test.rs:259:50:259:63 | ...::stdin | test.rs:259:50:259:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:259:50:259:65 | ...::stdin(...) | test.rs:259:26:259:66 | ...::new(...) | provenance | MaD:126 | -| test.rs:260:26:260:36 | [post] &mut buffer [&ref] | test.rs:260:31:260:36 | [post] buffer | provenance | | -| test.rs:260:31:260:36 | [post] buffer | test.rs:261:15:261:20 | buffer | provenance | | -| test.rs:261:15:261:20 | buffer | test.rs:261:14:261:20 | &buffer | provenance | | -| test.rs:266:13:266:22 | mut reader | test.rs:267:33:267:43 | [post] &mut buffer [&ref] | provenance | MaD:73 | -| test.rs:266:26:266:66 | ...::new(...) | test.rs:266:13:266:22 | mut reader | provenance | | -| test.rs:266:50:266:63 | ...::stdin | test.rs:266:50:266:65 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:266:50:266:65 | ...::stdin(...) | test.rs:266:26:266:66 | ...::new(...) | provenance | MaD:126 | -| test.rs:267:33:267:43 | [post] &mut buffer [&ref] | test.rs:267:38:267:43 | [post] buffer | provenance | | -| test.rs:267:38:267:43 | [post] buffer | test.rs:268:15:268:20 | buffer | provenance | | -| test.rs:267:38:267:43 | [post] buffer | test.rs:269:14:269:22 | buffer[0] | provenance | | -| test.rs:268:15:268:20 | buffer | test.rs:268:14:268:20 | &buffer | provenance | | -| test.rs:273:13:273:28 | mut reader_split | test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | provenance | MaD:54 | -| test.rs:273:13:273:28 | mut reader_split | test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | provenance | MaD:54 | -| test.rs:273:32:273:72 | ...::new(...) | test.rs:273:32:273:84 | ... .split(...) | provenance | MaD:74 | -| test.rs:273:32:273:84 | ... .split(...) | test.rs:273:13:273:28 | mut reader_split | provenance | | -| test.rs:273:56:273:69 | ...::stdin | test.rs:273:56:273:71 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:273:56:273:71 | ...::stdin(...) | test.rs:273:32:273:72 | ...::new(...) | provenance | MaD:126 | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | test.rs:274:14:274:41 | ... .unwrap() [Ok] | provenance | MaD:106 | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | test.rs:274:14:274:50 | ... .unwrap() | provenance | MaD:110 | -| test.rs:275:19:275:29 | Some(...) [Some, Ok] | test.rs:275:24:275:28 | chunk [Ok] | provenance | | -| test.rs:275:24:275:28 | chunk [Ok] | test.rs:276:18:276:31 | chunk.unwrap() | provenance | MaD:110 | -| test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | test.rs:275:19:275:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:281:13:281:18 | reader | test.rs:282:21:282:34 | reader.lines() | provenance | MaD:71 | -| test.rs:281:22:281:62 | ...::new(...) | test.rs:281:13:281:18 | reader | provenance | | -| test.rs:281:46:281:59 | ...::stdin | test.rs:281:46:281:61 | ...::stdin(...) | provenance | Src:MaD:45 MaD:45 | -| test.rs:281:46:281:61 | ...::stdin(...) | test.rs:281:22:281:62 | ...::new(...) | provenance | MaD:126 | -| test.rs:282:21:282:34 | reader.lines() | test.rs:283:18:283:21 | line | provenance | | -| test.rs:309:13:309:21 | mut stdin | test.rs:311:33:311:43 | [post] &mut buffer [&ref] | provenance | MaD:88 | -| test.rs:309:25:309:40 | ...::stdin | test.rs:309:25:309:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:309:25:309:42 | ...::stdin(...) | test.rs:309:13:309:21 | mut stdin | provenance | | -| test.rs:311:33:311:43 | [post] &mut buffer [&ref] | test.rs:311:38:311:43 | [post] buffer | provenance | | -| test.rs:311:38:311:43 | [post] buffer | test.rs:312:15:312:20 | buffer | provenance | | -| test.rs:312:15:312:20 | buffer | test.rs:312:14:312:20 | &buffer | provenance | | -| test.rs:316:13:316:21 | mut stdin | test.rs:318:40:318:50 | [post] &mut buffer [&ref] | provenance | MaD:94 | -| test.rs:316:25:316:40 | ...::stdin | test.rs:316:25:316:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:316:25:316:42 | ...::stdin(...) | test.rs:316:13:316:21 | mut stdin | provenance | | -| test.rs:318:40:318:50 | [post] &mut buffer [&ref] | test.rs:318:45:318:50 | [post] buffer | provenance | | -| test.rs:318:45:318:50 | [post] buffer | test.rs:319:15:319:20 | buffer | provenance | | -| test.rs:319:15:319:20 | buffer | test.rs:319:14:319:20 | &buffer | provenance | | -| test.rs:323:13:323:21 | mut stdin | test.rs:325:43:325:53 | [post] &mut buffer [&ref] | provenance | MaD:95 | -| test.rs:323:25:323:40 | ...::stdin | test.rs:323:25:323:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:323:25:323:42 | ...::stdin(...) | test.rs:323:13:323:21 | mut stdin | provenance | | -| test.rs:325:43:325:53 | [post] &mut buffer [&ref] | test.rs:325:48:325:53 | [post] buffer | provenance | | -| test.rs:325:48:325:53 | [post] buffer | test.rs:326:15:326:20 | buffer | provenance | | -| test.rs:326:15:326:20 | buffer | test.rs:326:14:326:20 | &buffer | provenance | | -| test.rs:330:13:330:21 | mut stdin | test.rs:332:26:332:36 | [post] &mut buffer [&ref] | provenance | MaD:90 | -| test.rs:330:25:330:40 | ...::stdin | test.rs:330:25:330:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:330:25:330:42 | ...::stdin(...) | test.rs:330:13:330:21 | mut stdin | provenance | | -| test.rs:332:26:332:36 | [post] &mut buffer [&ref] | test.rs:332:31:332:36 | [post] buffer | provenance | | -| test.rs:332:31:332:36 | [post] buffer | test.rs:333:15:333:20 | buffer | provenance | | -| test.rs:333:15:333:20 | buffer | test.rs:333:14:333:20 | &buffer | provenance | | -| test.rs:337:13:337:21 | mut stdin | test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | provenance | MaD:96 | -| test.rs:337:13:337:21 | mut stdin | test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | provenance | MaD:92 | -| test.rs:337:13:337:21 | mut stdin | test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | provenance | MaD:91 | -| test.rs:337:13:337:21 | mut stdin | test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:93 | -| test.rs:337:25:337:40 | ...::stdin | test.rs:337:25:337:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:337:25:337:42 | ...::stdin(...) | test.rs:337:13:337:21 | mut stdin | provenance | | -| test.rs:338:13:338:14 | v1 | test.rs:342:14:342:15 | v1 | provenance | | -| test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | test.rs:338:18:338:38 | await ... [Ok] | provenance | | -| test.rs:338:18:338:38 | await ... [Ok] | test.rs:338:18:338:39 | TryExpr | provenance | | -| test.rs:338:18:338:39 | TryExpr | test.rs:338:13:338:14 | v1 | provenance | | -| test.rs:339:13:339:14 | v2 | test.rs:343:14:343:15 | v2 | provenance | | -| test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | test.rs:339:18:339:39 | await ... [Ok] | provenance | | -| test.rs:339:18:339:39 | await ... [Ok] | test.rs:339:18:339:40 | TryExpr | provenance | | -| test.rs:339:18:339:40 | TryExpr | test.rs:339:13:339:14 | v2 | provenance | | -| test.rs:340:13:340:14 | v3 | test.rs:344:14:344:15 | v3 | provenance | | -| test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | test.rs:340:18:340:39 | await ... [Ok] | provenance | | -| test.rs:340:18:340:39 | await ... [Ok] | test.rs:340:18:340:40 | TryExpr | provenance | | -| test.rs:340:18:340:40 | TryExpr | test.rs:340:13:340:14 | v3 | provenance | | -| test.rs:341:13:341:14 | v4 | test.rs:345:14:345:15 | v4 | provenance | | -| test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | test.rs:341:18:341:42 | await ... [Ok] | provenance | | -| test.rs:341:18:341:42 | await ... [Ok] | test.rs:341:18:341:43 | TryExpr | provenance | | -| test.rs:341:18:341:43 | TryExpr | test.rs:341:13:341:14 | v4 | provenance | | -| test.rs:349:13:349:21 | mut stdin | test.rs:351:24:351:34 | [post] &mut buffer [&ref] | provenance | MaD:89 | -| test.rs:349:25:349:40 | ...::stdin | test.rs:349:25:349:42 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:349:25:349:42 | ...::stdin(...) | test.rs:349:13:349:21 | mut stdin | provenance | | -| test.rs:351:24:351:34 | [post] &mut buffer [&ref] | test.rs:351:29:351:34 | [post] buffer | provenance | | -| test.rs:351:29:351:34 | [post] buffer | test.rs:352:15:352:20 | buffer | provenance | | -| test.rs:352:15:352:20 | buffer | test.rs:352:14:352:20 | &buffer | provenance | | -| test.rs:358:13:358:22 | mut reader | test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | provenance | MaD:83 | -| test.rs:358:26:358:70 | ...::new(...) | test.rs:358:13:358:22 | mut reader | provenance | | -| test.rs:358:52:358:67 | ...::stdin | test.rs:358:52:358:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:358:52:358:69 | ...::stdin(...) | test.rs:358:26:358:70 | ...::new(...) | provenance | MaD:134 | -| test.rs:359:13:359:16 | data | test.rs:360:15:360:18 | data | provenance | | -| test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | test.rs:359:20:359:42 | await ... [Ok] | provenance | | -| test.rs:359:20:359:42 | await ... [Ok] | test.rs:359:20:359:43 | TryExpr | provenance | | -| test.rs:359:20:359:43 | TryExpr | test.rs:359:13:359:16 | data | provenance | | -| test.rs:360:15:360:18 | data | test.rs:360:14:360:18 | &data | provenance | | -| test.rs:364:13:364:18 | reader | test.rs:365:20:365:34 | reader.buffer() | provenance | MaD:133 | -| test.rs:364:22:364:66 | ...::new(...) | test.rs:364:13:364:18 | reader | provenance | | -| test.rs:364:48:364:63 | ...::stdin | test.rs:364:48:364:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:364:48:364:65 | ...::stdin(...) | test.rs:364:22:364:66 | ...::new(...) | provenance | MaD:134 | -| test.rs:365:13:365:16 | data | test.rs:366:15:366:18 | data | provenance | | -| test.rs:365:20:365:34 | reader.buffer() | test.rs:365:13:365:16 | data | provenance | | -| test.rs:366:15:366:18 | data | test.rs:366:14:366:18 | &data | provenance | | -| test.rs:371:13:371:22 | mut reader | test.rs:372:26:372:36 | [post] &mut buffer [&ref] | provenance | MaD:85 | -| test.rs:371:26:371:70 | ...::new(...) | test.rs:371:13:371:22 | mut reader | provenance | | -| test.rs:371:52:371:67 | ...::stdin | test.rs:371:52:371:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:371:52:371:69 | ...::stdin(...) | test.rs:371:26:371:70 | ...::new(...) | provenance | MaD:134 | -| test.rs:372:26:372:36 | [post] &mut buffer [&ref] | test.rs:372:31:372:36 | [post] buffer | provenance | | -| test.rs:372:31:372:36 | [post] buffer | test.rs:373:15:373:20 | buffer | provenance | | -| test.rs:373:15:373:20 | buffer | test.rs:373:14:373:20 | &buffer | provenance | | -| test.rs:378:13:378:22 | mut reader | test.rs:379:33:379:43 | [post] &mut buffer [&ref] | provenance | MaD:86 | -| test.rs:378:26:378:70 | ...::new(...) | test.rs:378:13:378:22 | mut reader | provenance | | -| test.rs:378:52:378:67 | ...::stdin | test.rs:378:52:378:69 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:378:52:378:69 | ...::stdin(...) | test.rs:378:26:378:70 | ...::new(...) | provenance | MaD:134 | -| test.rs:379:33:379:43 | [post] &mut buffer [&ref] | test.rs:379:38:379:43 | [post] buffer | provenance | | -| test.rs:379:38:379:43 | [post] buffer | test.rs:380:15:380:20 | buffer | provenance | | -| test.rs:379:38:379:43 | [post] buffer | test.rs:381:14:381:22 | buffer[0] | provenance | | -| test.rs:380:15:380:20 | buffer | test.rs:380:14:380:20 | &buffer | provenance | | -| test.rs:385:13:385:28 | mut reader_split | test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:136 | -| test.rs:385:13:385:28 | mut reader_split | test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:136 | -| test.rs:385:32:385:76 | ...::new(...) | test.rs:385:32:385:88 | ... .split(...) | provenance | MaD:87 | -| test.rs:385:32:385:88 | ... .split(...) | test.rs:385:13:385:28 | mut reader_split | provenance | | -| test.rs:385:58:385:73 | ...::stdin | test.rs:385:58:385:75 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:385:58:385:75 | ...::stdin(...) | test.rs:385:32:385:76 | ...::new(...) | provenance | MaD:134 | -| test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:386:14:386:46 | await ... [Ok, Some] | provenance | | -| test.rs:386:14:386:46 | await ... [Ok, Some] | test.rs:386:14:386:47 | TryExpr [Some] | provenance | | -| test.rs:386:14:386:47 | TryExpr [Some] | test.rs:386:14:386:56 | ... .unwrap() | provenance | MaD:106 | -| test.rs:387:19:387:29 | Some(...) [Some] | test.rs:387:24:387:28 | chunk | provenance | | -| test.rs:387:24:387:28 | chunk | test.rs:388:18:388:22 | chunk | provenance | | -| test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:387:33:387:65 | await ... [Ok, Some] | provenance | | -| test.rs:387:33:387:65 | await ... [Ok, Some] | test.rs:387:33:387:66 | TryExpr [Some] | provenance | | -| test.rs:387:33:387:66 | TryExpr [Some] | test.rs:387:19:387:29 | Some(...) [Some] | provenance | | -| test.rs:393:13:393:18 | reader | test.rs:394:25:394:38 | reader.lines() | provenance | MaD:84 | -| test.rs:393:22:393:66 | ...::new(...) | test.rs:393:13:393:18 | reader | provenance | | -| test.rs:393:48:393:63 | ...::stdin | test.rs:393:48:393:65 | ...::stdin(...) | provenance | Src:MaD:49 MaD:49 | -| test.rs:393:48:393:65 | ...::stdin(...) | test.rs:393:22:393:66 | ...::new(...) | provenance | MaD:134 | -| test.rs:394:13:394:21 | mut lines | test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:135 | -| test.rs:394:13:394:21 | mut lines | test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:135 | -| test.rs:394:25:394:38 | reader.lines() | test.rs:394:13:394:21 | mut lines | provenance | | -| test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | test.rs:395:14:395:36 | await ... [Ok, Some] | provenance | | -| test.rs:395:14:395:36 | await ... [Ok, Some] | test.rs:395:14:395:37 | TryExpr [Some] | provenance | | -| test.rs:395:14:395:37 | TryExpr [Some] | test.rs:395:14:395:46 | ... .unwrap() | provenance | MaD:106 | -| test.rs:396:19:396:28 | Some(...) [Some] | test.rs:396:24:396:27 | line | provenance | | -| test.rs:396:24:396:27 | line | test.rs:397:18:397:21 | line | provenance | | -| test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | test.rs:396:32:396:54 | await ... [Ok, Some] | provenance | | -| test.rs:396:32:396:54 | await ... [Ok, Some] | test.rs:396:32:396:55 | TryExpr [Some] | provenance | | -| test.rs:396:32:396:55 | TryExpr [Some] | test.rs:396:19:396:28 | Some(...) [Some] | provenance | | -| test.rs:408:13:408:18 | buffer | test.rs:409:14:409:19 | buffer | provenance | | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:43 | ...::read [Ok] | provenance | Src:MaD:40 | -| test.rs:408:31:408:43 | ...::read | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | Src:MaD:40 | -| test.rs:408:31:408:43 | ...::read [Ok] | test.rs:408:31:408:55 | ...::read(...) [Ok] | provenance | MaD:41 | -| test.rs:408:31:408:55 | ...::read(...) [Ok] | test.rs:408:31:408:56 | TryExpr | provenance | | -| test.rs:408:31:408:56 | TryExpr | test.rs:408:13:408:18 | buffer | provenance | | -| test.rs:413:13:413:18 | buffer | test.rs:414:14:414:19 | buffer | provenance | | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:38 | ...::read [Ok] | provenance | Src:MaD:40 | -| test.rs:413:31:413:38 | ...::read | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | Src:MaD:40 | -| test.rs:413:31:413:38 | ...::read [Ok] | test.rs:413:31:413:50 | ...::read(...) [Ok] | provenance | MaD:41 | -| test.rs:413:31:413:50 | ...::read(...) [Ok] | test.rs:413:31:413:51 | TryExpr | provenance | | -| test.rs:413:31:413:51 | TryExpr | test.rs:413:13:413:18 | buffer | provenance | | -| test.rs:418:13:418:18 | buffer | test.rs:419:14:419:19 | buffer | provenance | | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:39 | ...::read_to_string [Ok] | provenance | Src:MaD:43 | -| test.rs:418:22:418:39 | ...::read_to_string | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:43 | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | provenance | MaD:44 | -| test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | test.rs:418:22:418:52 | TryExpr | provenance | | -| test.rs:418:22:418:52 | TryExpr | test.rs:418:13:418:18 | buffer | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:52 | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:17 | path | provenance | | -| test.rs:425:13:425:16 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:52 | -| test.rs:425:13:425:16 | path | test.rs:437:14:437:17 | path | provenance | | -| test.rs:425:20:425:27 | e.path() | test.rs:425:13:425:16 | path | provenance | | -| test.rs:425:22:425:25 | path | test.rs:425:20:425:27 | e.path() | provenance | Src:MaD:21 MaD:21 | -| test.rs:426:14:426:17 | path | test.rs:426:14:426:25 | path.clone() | provenance | MaD:52 | -| test.rs:427:14:427:17 | path | test.rs:427:14:427:25 | path.clone() | provenance | MaD:52 | -| test.rs:427:14:427:25 | path.clone() | test.rs:427:14:427:35 | ... .as_path() | provenance | MaD:132 | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:22 | file_name | provenance | | -| test.rs:439:13:439:21 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:52 | -| test.rs:439:13:439:21 | file_name | test.rs:445:14:445:22 | file_name | provenance | | -| test.rs:439:25:439:37 | e.file_name() | test.rs:439:13:439:21 | file_name | provenance | | -| test.rs:439:27:439:35 | file_name | test.rs:439:25:439:37 | e.file_name() | provenance | Src:MaD:20 MaD:20 | -| test.rs:440:14:440:22 | file_name | test.rs:440:14:440:30 | file_name.clone() | provenance | MaD:52 | -| test.rs:461:13:461:18 | target | test.rs:462:14:462:19 | target | provenance | | -| test.rs:461:22:461:34 | ...::read_link | test.rs:461:22:461:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:42 | -| test.rs:461:22:461:49 | ...::read_link(...) [Ok] | test.rs:461:22:461:50 | TryExpr | provenance | | -| test.rs:461:22:461:50 | TryExpr | test.rs:461:13:461:18 | target | provenance | | -| test.rs:470:13:470:18 | buffer | test.rs:471:14:471:19 | buffer | provenance | | -| test.rs:470:31:470:45 | ...::read | test.rs:470:31:470:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:46 | -| test.rs:470:31:470:57 | ...::read(...) [future, Ok] | test.rs:470:31:470:63 | await ... [Ok] | provenance | | -| test.rs:470:31:470:63 | await ... [Ok] | test.rs:470:31:470:64 | TryExpr | provenance | | -| test.rs:470:31:470:64 | TryExpr | test.rs:470:13:470:18 | buffer | provenance | | -| test.rs:475:13:475:18 | buffer | test.rs:476:14:476:19 | buffer | provenance | | -| test.rs:475:31:475:45 | ...::read | test.rs:475:31:475:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:46 | -| test.rs:475:31:475:57 | ...::read(...) [future, Ok] | test.rs:475:31:475:63 | await ... [Ok] | provenance | | -| test.rs:475:31:475:63 | await ... [Ok] | test.rs:475:31:475:64 | TryExpr | provenance | | -| test.rs:475:31:475:64 | TryExpr | test.rs:475:13:475:18 | buffer | provenance | | -| test.rs:480:13:480:18 | buffer | test.rs:481:14:481:19 | buffer | provenance | | -| test.rs:480:22:480:46 | ...::read_to_string | test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:48 | -| test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | test.rs:480:22:480:64 | await ... [Ok] | provenance | | -| test.rs:480:22:480:64 | await ... [Ok] | test.rs:480:22:480:65 | TryExpr | provenance | | -| test.rs:480:22:480:65 | TryExpr | test.rs:480:13:480:18 | buffer | provenance | | -| test.rs:486:13:486:16 | path | test.rs:488:14:488:17 | path | provenance | | -| test.rs:486:20:486:31 | entry.path() | test.rs:486:13:486:16 | path | provenance | | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:29 MaD:29 | -| test.rs:486:26:486:29 | path | test.rs:486:20:486:31 | entry.path() | provenance | Src:MaD:29 MaD:29 | -| test.rs:487:13:487:21 | file_name | test.rs:489:14:489:22 | file_name | provenance | | -| test.rs:487:25:487:41 | entry.file_name() | test.rs:487:13:487:21 | file_name | provenance | | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:28 MaD:28 | -| test.rs:487:31:487:39 | file_name | test.rs:487:25:487:41 | entry.file_name() | provenance | Src:MaD:28 MaD:28 | -| test.rs:493:13:493:18 | target | test.rs:494:14:494:19 | target | provenance | | -| test.rs:493:22:493:41 | ...::read_link | test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:47 | -| test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | test.rs:493:22:493:62 | await ... [Ok] | provenance | | -| test.rs:493:22:493:62 | await ... [Ok] | test.rs:493:22:493:63 | TryExpr | provenance | | -| test.rs:493:22:493:63 | TryExpr | test.rs:493:13:493:18 | target | provenance | | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer | provenance | MaD:122 | -| test.rs:503:9:503:16 | mut file | test.rs:507:32:507:42 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer | provenance | MaD:123 | -| test.rs:503:9:503:16 | mut file | test.rs:513:39:513:49 | [post] &mut buffer [&ref] | provenance | MaD:80 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer | provenance | MaD:124 | -| test.rs:503:9:503:16 | mut file | test.rs:519:42:519:52 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:503:9:503:16 | mut file | test.rs:525:25:525:35 | [post] &mut buffer [&ref] | provenance | MaD:79 | -| test.rs:503:9:503:16 | mut file | test.rs:529:17:529:28 | file.bytes() | provenance | MaD:75 | -| test.rs:503:20:503:38 | ...::open | test.rs:503:20:503:50 | ...::open(...) [Ok] | provenance | Src:MaD:22 | -| test.rs:503:20:503:50 | ...::open(...) [Ok] | test.rs:503:20:503:51 | TryExpr | provenance | | -| test.rs:503:20:503:51 | TryExpr | test.rs:503:9:503:16 | mut file | provenance | | -| test.rs:507:32:507:42 | [post] &mut buffer | test.rs:508:15:508:20 | buffer | provenance | | -| test.rs:507:32:507:42 | [post] &mut buffer [&ref] | test.rs:507:37:507:42 | [post] buffer | provenance | | -| test.rs:507:37:507:42 | [post] buffer | test.rs:508:15:508:20 | buffer | provenance | | -| test.rs:508:15:508:20 | buffer | test.rs:508:14:508:20 | &buffer | provenance | | -| test.rs:513:39:513:49 | [post] &mut buffer | test.rs:514:15:514:20 | buffer | provenance | | -| test.rs:513:39:513:49 | [post] &mut buffer [&ref] | test.rs:513:44:513:49 | [post] buffer | provenance | | -| test.rs:513:44:513:49 | [post] buffer | test.rs:514:15:514:20 | buffer | provenance | | -| test.rs:514:15:514:20 | buffer | test.rs:514:14:514:20 | &buffer | provenance | | -| test.rs:519:42:519:52 | [post] &mut buffer | test.rs:520:15:520:20 | buffer | provenance | | -| test.rs:519:42:519:52 | [post] &mut buffer [&ref] | test.rs:519:47:519:52 | [post] buffer | provenance | | -| test.rs:519:47:519:52 | [post] buffer | test.rs:520:15:520:20 | buffer | provenance | | -| test.rs:520:15:520:20 | buffer | test.rs:520:14:520:20 | &buffer | provenance | | -| test.rs:525:25:525:35 | [post] &mut buffer [&ref] | test.rs:525:30:525:35 | [post] buffer | provenance | | -| test.rs:525:30:525:35 | [post] buffer | test.rs:526:15:526:20 | buffer | provenance | | -| test.rs:526:15:526:20 | buffer | test.rs:526:14:526:20 | &buffer | provenance | | -| test.rs:529:17:529:28 | file.bytes() | test.rs:530:14:530:17 | byte | provenance | | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer | provenance | MaD:122 | -| test.rs:536:13:536:18 | mut f1 | test.rs:538:30:538:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | test.rs:536:22:536:72 | ... .unwrap() | provenance | MaD:110 | -| test.rs:536:22:536:72 | ... .unwrap() | test.rs:536:13:536:18 | mut f1 | provenance | | -| test.rs:536:50:536:53 | open | test.rs:536:22:536:63 | ... .open(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:538:30:538:40 | [post] &mut buffer | test.rs:539:15:539:20 | buffer | provenance | | -| test.rs:538:30:538:40 | [post] &mut buffer [&ref] | test.rs:538:35:538:40 | [post] buffer | provenance | | -| test.rs:538:35:538:40 | [post] buffer | test.rs:539:15:539:20 | buffer | provenance | | -| test.rs:539:15:539:20 | buffer | test.rs:539:14:539:20 | &buffer | provenance | | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer | provenance | MaD:122 | -| test.rs:543:13:543:18 | mut f2 | test.rs:545:30:545:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | test.rs:543:22:543:89 | ... .unwrap() | provenance | MaD:110 | -| test.rs:543:22:543:89 | ... .unwrap() | test.rs:543:13:543:18 | mut f2 | provenance | | -| test.rs:543:67:543:70 | open | test.rs:543:22:543:80 | ... .open(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:545:30:545:40 | [post] &mut buffer | test.rs:546:15:546:20 | buffer | provenance | | -| test.rs:545:30:545:40 | [post] &mut buffer [&ref] | test.rs:545:35:545:40 | [post] buffer | provenance | | -| test.rs:545:35:545:40 | [post] buffer | test.rs:546:15:546:20 | buffer | provenance | | -| test.rs:546:15:546:20 | buffer | test.rs:546:14:546:20 | &buffer | provenance | | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer | provenance | MaD:122 | -| test.rs:550:13:550:18 | mut f3 | test.rs:552:30:552:40 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | test.rs:550:22:550:123 | ... .unwrap() | provenance | MaD:110 | -| test.rs:550:22:550:123 | ... .unwrap() | test.rs:550:13:550:18 | mut f3 | provenance | | -| test.rs:550:101:550:104 | open | test.rs:550:22:550:114 | ... .open(...) [Ok] | provenance | Src:MaD:23 | -| test.rs:552:30:552:40 | [post] &mut buffer | test.rs:553:15:553:20 | buffer | provenance | | -| test.rs:552:30:552:40 | [post] &mut buffer [&ref] | test.rs:552:35:552:40 | [post] buffer | provenance | | -| test.rs:552:35:552:40 | [post] buffer | test.rs:553:15:553:20 | buffer | provenance | | -| test.rs:553:15:553:20 | buffer | test.rs:553:14:553:20 | &buffer | provenance | | -| test.rs:560:13:560:17 | file1 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:77 | -| test.rs:560:21:560:39 | ...::open | test.rs:560:21:560:51 | ...::open(...) [Ok] | provenance | Src:MaD:22 | -| test.rs:560:21:560:51 | ...::open(...) [Ok] | test.rs:560:21:560:52 | TryExpr | provenance | | -| test.rs:560:21:560:52 | TryExpr | test.rs:560:13:560:17 | file1 | provenance | | -| test.rs:561:13:561:17 | file2 | test.rs:562:38:562:42 | file2 | provenance | | -| test.rs:561:21:561:39 | ...::open | test.rs:561:21:561:59 | ...::open(...) [Ok] | provenance | Src:MaD:22 | -| test.rs:561:21:561:59 | ...::open(...) [Ok] | test.rs:561:21:561:60 | TryExpr | provenance | | -| test.rs:561:21:561:60 | TryExpr | test.rs:561:13:561:17 | file2 | provenance | | -| test.rs:562:13:562:22 | mut reader | test.rs:563:31:563:41 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:562:26:562:43 | file1.chain(...) | test.rs:562:13:562:22 | mut reader | provenance | | -| test.rs:562:38:562:42 | file2 | test.rs:562:26:562:43 | file1.chain(...) | provenance | MaD:76 | -| test.rs:563:31:563:41 | [post] &mut buffer [&ref] | test.rs:563:36:563:41 | [post] buffer | provenance | | -| test.rs:563:36:563:41 | [post] buffer | test.rs:564:15:564:20 | buffer | provenance | | -| test.rs:564:15:564:20 | buffer | test.rs:564:14:564:20 | &buffer | provenance | | -| test.rs:569:13:569:17 | file1 | test.rs:570:26:570:40 | file1.take(...) | provenance | MaD:82 | -| test.rs:569:21:569:39 | ...::open | test.rs:569:21:569:51 | ...::open(...) [Ok] | provenance | Src:MaD:22 | -| test.rs:569:21:569:51 | ...::open(...) [Ok] | test.rs:569:21:569:52 | TryExpr | provenance | | -| test.rs:569:21:569:52 | TryExpr | test.rs:569:13:569:17 | file1 | provenance | | -| test.rs:570:13:570:22 | mut reader | test.rs:571:31:571:41 | [post] &mut buffer [&ref] | provenance | MaD:81 | -| test.rs:570:26:570:40 | file1.take(...) | test.rs:570:13:570:22 | mut reader | provenance | | -| test.rs:571:31:571:41 | [post] &mut buffer [&ref] | test.rs:571:36:571:41 | [post] buffer | provenance | | -| test.rs:571:36:571:41 | [post] buffer | test.rs:572:15:572:20 | buffer | provenance | | -| test.rs:572:15:572:20 | buffer | test.rs:572:14:572:20 | &buffer | provenance | | -| test.rs:581:9:581:16 | mut file | test.rs:585:32:585:42 | [post] &mut buffer [&ref] | provenance | MaD:88 | -| test.rs:581:9:581:16 | mut file | test.rs:591:39:591:49 | [post] &mut buffer [&ref] | provenance | MaD:94 | -| test.rs:581:9:581:16 | mut file | test.rs:597:42:597:52 | [post] &mut buffer [&ref] | provenance | MaD:95 | -| test.rs:581:9:581:16 | mut file | test.rs:603:25:603:35 | [post] &mut buffer [&ref] | provenance | MaD:90 | -| test.rs:581:9:581:16 | mut file | test.rs:608:18:608:31 | file.read_u8() [future, Ok] | provenance | MaD:96 | -| test.rs:581:9:581:16 | mut file | test.rs:609:18:609:32 | file.read_i16() [future, Ok] | provenance | MaD:92 | -| test.rs:581:9:581:16 | mut file | test.rs:610:18:610:32 | file.read_f32() [future, Ok] | provenance | MaD:91 | -| test.rs:581:9:581:16 | mut file | test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | provenance | MaD:93 | -| test.rs:581:9:581:16 | mut file | test.rs:620:23:620:33 | [post] &mut buffer [&ref] | provenance | MaD:89 | -| test.rs:581:20:581:40 | ...::open | test.rs:581:20:581:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:26 | -| test.rs:581:20:581:52 | ...::open(...) [future, Ok] | test.rs:581:20:581:58 | await ... [Ok] | provenance | | -| test.rs:581:20:581:58 | await ... [Ok] | test.rs:581:20:581:59 | TryExpr | provenance | | -| test.rs:581:20:581:59 | TryExpr | test.rs:581:9:581:16 | mut file | provenance | | -| test.rs:585:32:585:42 | [post] &mut buffer [&ref] | test.rs:585:37:585:42 | [post] buffer | provenance | | -| test.rs:585:37:585:42 | [post] buffer | test.rs:586:15:586:20 | buffer | provenance | | -| test.rs:586:15:586:20 | buffer | test.rs:586:14:586:20 | &buffer | provenance | | -| test.rs:591:39:591:49 | [post] &mut buffer [&ref] | test.rs:591:44:591:49 | [post] buffer | provenance | | -| test.rs:591:44:591:49 | [post] buffer | test.rs:592:15:592:20 | buffer | provenance | | -| test.rs:592:15:592:20 | buffer | test.rs:592:14:592:20 | &buffer | provenance | | -| test.rs:597:42:597:52 | [post] &mut buffer [&ref] | test.rs:597:47:597:52 | [post] buffer | provenance | | -| test.rs:597:47:597:52 | [post] buffer | test.rs:598:15:598:20 | buffer | provenance | | -| test.rs:598:15:598:20 | buffer | test.rs:598:14:598:20 | &buffer | provenance | | -| test.rs:603:25:603:35 | [post] &mut buffer [&ref] | test.rs:603:30:603:35 | [post] buffer | provenance | | -| test.rs:603:30:603:35 | [post] buffer | test.rs:604:15:604:20 | buffer | provenance | | -| test.rs:604:15:604:20 | buffer | test.rs:604:14:604:20 | &buffer | provenance | | -| test.rs:608:13:608:14 | v1 | test.rs:612:14:612:15 | v1 | provenance | | -| test.rs:608:18:608:31 | file.read_u8() [future, Ok] | test.rs:608:18:608:37 | await ... [Ok] | provenance | | -| test.rs:608:18:608:37 | await ... [Ok] | test.rs:608:18:608:38 | TryExpr | provenance | | -| test.rs:608:18:608:38 | TryExpr | test.rs:608:13:608:14 | v1 | provenance | | -| test.rs:609:13:609:14 | v2 | test.rs:613:14:613:15 | v2 | provenance | | -| test.rs:609:18:609:32 | file.read_i16() [future, Ok] | test.rs:609:18:609:38 | await ... [Ok] | provenance | | -| test.rs:609:18:609:38 | await ... [Ok] | test.rs:609:18:609:39 | TryExpr | provenance | | -| test.rs:609:18:609:39 | TryExpr | test.rs:609:13:609:14 | v2 | provenance | | -| test.rs:610:13:610:14 | v3 | test.rs:614:14:614:15 | v3 | provenance | | -| test.rs:610:18:610:32 | file.read_f32() [future, Ok] | test.rs:610:18:610:38 | await ... [Ok] | provenance | | -| test.rs:610:18:610:38 | await ... [Ok] | test.rs:610:18:610:39 | TryExpr | provenance | | -| test.rs:610:18:610:39 | TryExpr | test.rs:610:13:610:14 | v3 | provenance | | -| test.rs:611:13:611:14 | v4 | test.rs:615:14:615:15 | v4 | provenance | | -| test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | test.rs:611:18:611:41 | await ... [Ok] | provenance | | -| test.rs:611:18:611:41 | await ... [Ok] | test.rs:611:18:611:42 | TryExpr | provenance | | -| test.rs:611:18:611:42 | TryExpr | test.rs:611:13:611:14 | v4 | provenance | | -| test.rs:620:23:620:33 | [post] &mut buffer [&ref] | test.rs:620:28:620:33 | [post] buffer | provenance | | -| test.rs:620:28:620:33 | [post] buffer | test.rs:621:15:621:20 | buffer | provenance | | -| test.rs:621:15:621:20 | buffer | test.rs:621:14:621:20 | &buffer | provenance | | -| test.rs:627:13:627:18 | mut f1 | test.rs:629:30:629:40 | [post] &mut buffer [&ref] | provenance | MaD:88 | -| test.rs:627:22:627:65 | ... .open(...) [future, Ok] | test.rs:627:22:627:71 | await ... [Ok] | provenance | | -| test.rs:627:22:627:71 | await ... [Ok] | test.rs:627:22:627:72 | TryExpr | provenance | | -| test.rs:627:22:627:72 | TryExpr | test.rs:627:13:627:18 | mut f1 | provenance | | -| test.rs:627:52:627:55 | open | test.rs:627:22:627:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:27 | -| test.rs:629:30:629:40 | [post] &mut buffer [&ref] | test.rs:629:35:629:40 | [post] buffer | provenance | | -| test.rs:629:35:629:40 | [post] buffer | test.rs:630:15:630:20 | buffer | provenance | | -| test.rs:630:15:630:20 | buffer | test.rs:630:14:630:20 | &buffer | provenance | | -| test.rs:660:9:660:16 | mut file | test.rs:664:22:664:25 | file | provenance | | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:660:9:660:16 | mut file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:660:20:660:44 | ...::open | test.rs:660:20:660:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:11 | -| test.rs:660:20:660:56 | ...::open(...) [future, Ok] | test.rs:660:20:660:62 | await ... [Ok] | provenance | | -| test.rs:660:20:660:62 | await ... [Ok] | test.rs:660:20:660:63 | TryExpr | provenance | | -| test.rs:660:20:660:63 | TryExpr | test.rs:660:9:660:16 | mut file | provenance | | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:664:22:664:25 | file | test.rs:664:32:664:42 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:664:32:664:42 | [post] &mut buffer [&ref] | test.rs:664:37:664:42 | [post] buffer | provenance | | -| test.rs:664:37:664:42 | [post] buffer | test.rs:665:15:665:20 | buffer | provenance | | -| test.rs:665:15:665:20 | buffer | test.rs:665:14:665:20 | &buffer | provenance | | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:22:673:23 | f1 | provenance | | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:51 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:671:13:671:18 | mut f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:65 | -| test.rs:671:22:671:69 | ... .open(...) [future, Ok] | test.rs:671:22:671:75 | await ... [Ok] | provenance | | -| test.rs:671:22:671:75 | await ... [Ok] | test.rs:671:22:671:76 | TryExpr | provenance | | -| test.rs:671:22:671:76 | TryExpr | test.rs:671:13:671:18 | mut f1 | provenance | | -| test.rs:671:56:671:59 | open | test.rs:671:22:671:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:12 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:50 | -| test.rs:673:22:673:23 | f1 | test.rs:673:30:673:40 | [post] &mut buffer [&ref] | provenance | MaD:64 | -| test.rs:673:30:673:40 | [post] &mut buffer [&ref] | test.rs:673:35:673:40 | [post] buffer | provenance | | -| test.rs:673:35:673:40 | [post] buffer | test.rs:674:15:674:20 | buffer | provenance | | -| test.rs:674:15:674:20 | buffer | test.rs:674:14:674:20 | &buffer | provenance | | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:78 | -| test.rs:688:13:688:22 | mut stream | test.rs:695:29:695:39 | [post] &mut buffer [&ref] | provenance | MaD:131 | -| test.rs:688:26:688:53 | ...::connect | test.rs:688:26:688:62 | ...::connect(...) [Ok] | provenance | Src:MaD:24 | -| test.rs:688:26:688:62 | ...::connect(...) [Ok] | test.rs:688:26:688:63 | TryExpr | provenance | | -| test.rs:688:26:688:63 | TryExpr | test.rs:688:13:688:22 | mut stream | provenance | | -| test.rs:695:29:695:39 | [post] &mut buffer [&ref] | test.rs:695:34:695:39 | [post] buffer | provenance | | -| test.rs:695:34:695:39 | [post] buffer | test.rs:698:15:698:20 | buffer | provenance | | -| test.rs:695:34:695:39 | [post] buffer | test.rs:699:14:699:22 | buffer[0] | provenance | | -| test.rs:698:15:698:20 | buffer | test.rs:698:14:698:20 | &buffer | provenance | | -| test.rs:707:13:707:22 | mut stream | test.rs:715:58:715:63 | stream | provenance | | -| test.rs:707:26:707:61 | ...::connect_timeout | test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:25 | -| test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | test.rs:707:26:707:106 | TryExpr | provenance | | -| test.rs:707:26:707:106 | TryExpr | test.rs:707:13:707:22 | mut stream | provenance | | -| test.rs:715:21:715:30 | mut reader | test.rs:718:44:718:52 | [post] &mut line [&ref] | provenance | MaD:72 | -| test.rs:715:34:715:64 | ...::new(...) | test.rs:715:34:715:74 | ... .take(...) | provenance | MaD:82 | -| test.rs:715:34:715:74 | ... .take(...) | test.rs:715:21:715:30 | mut reader | provenance | | -| test.rs:715:58:715:63 | stream | test.rs:715:34:715:64 | ...::new(...) | provenance | MaD:126 | -| test.rs:718:44:718:52 | [post] &mut line [&ref] | test.rs:718:49:718:52 | [post] line | provenance | | -| test.rs:718:49:718:52 | [post] line | test.rs:725:35:725:38 | line | provenance | | -| test.rs:725:35:725:38 | line | test.rs:725:34:725:38 | &line | provenance | | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | provenance | MaD:137 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | provenance | MaD:88 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:787:41:787:51 | [post] &mut buffer [&ref] | provenance | MaD:138 | -| test.rs:759:9:759:24 | mut tokio_stream | test.rs:810:45:810:55 | [post] &mut buffer [&ref] | provenance | MaD:139 | -| test.rs:759:28:759:57 | ...::connect | test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:30 | -| test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | test.rs:759:28:759:72 | await ... [Ok] | provenance | | -| test.rs:759:28:759:72 | await ... [Ok] | test.rs:759:28:759:73 | TryExpr | provenance | | -| test.rs:759:28:759:73 | TryExpr | test.rs:759:9:759:24 | mut tokio_stream | provenance | | -| test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | test.rs:767:40:767:46 | [post] buffer1 | provenance | | -| test.rs:767:40:767:46 | [post] buffer1 | test.rs:774:15:774:21 | buffer1 | provenance | | -| test.rs:767:40:767:46 | [post] buffer1 | test.rs:775:14:775:23 | buffer1[0] | provenance | | -| test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | test.rs:771:41:771:47 | [post] buffer2 | provenance | | -| test.rs:771:41:771:47 | [post] buffer2 | test.rs:778:15:778:21 | buffer2 | provenance | | -| test.rs:771:41:771:47 | [post] buffer2 | test.rs:779:14:779:23 | buffer2[0] | provenance | | -| test.rs:774:15:774:21 | buffer1 | test.rs:774:14:774:21 | &buffer1 | provenance | | -| test.rs:778:15:778:21 | buffer2 | test.rs:778:14:778:21 | &buffer2 | provenance | | -| test.rs:787:41:787:51 | [post] &mut buffer [&ref] | test.rs:787:46:787:51 | [post] buffer | provenance | | -| test.rs:787:46:787:51 | [post] buffer | test.rs:794:27:794:32 | buffer | provenance | | -| test.rs:794:27:794:32 | buffer | test.rs:794:26:794:32 | &buffer | provenance | | -| test.rs:810:45:810:55 | [post] &mut buffer [&ref] | test.rs:810:50:810:55 | [post] buffer | provenance | | -| test.rs:810:50:810:55 | [post] buffer | test.rs:817:27:817:32 | buffer | provenance | | -| test.rs:817:27:817:32 | buffer | test.rs:817:26:817:32 | &buffer | provenance | | -| test.rs:905:13:905:14 | v1 | test.rs:906:14:906:15 | v1 | provenance | | -| test.rs:905:24:905:33 | row.get(...) [Some] | test.rs:905:24:905:42 | ... .unwrap() | provenance | MaD:106 | -| test.rs:905:24:905:42 | ... .unwrap() | test.rs:905:13:905:14 | v1 | provenance | | -| test.rs:905:28:905:30 | get | test.rs:905:24:905:33 | row.get(...) [Some] | provenance | Src:MaD:16 | -| test.rs:908:13:908:14 | v2 | test.rs:909:14:909:15 | v2 | provenance | | -| test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | test.rs:908:24:908:46 | ... .unwrap() [Ok] | provenance | MaD:106 | -| test.rs:908:24:908:46 | ... .unwrap() [Ok] | test.rs:908:24:908:55 | ... .unwrap() | provenance | MaD:110 | -| test.rs:908:24:908:55 | ... .unwrap() | test.rs:908:13:908:14 | v2 | provenance | | -| test.rs:908:28:908:34 | get_opt | test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:17 | -| test.rs:911:13:911:14 | v3 | test.rs:912:14:912:15 | v3 | provenance | | -| test.rs:911:24:911:34 | row.take(...) [Some] | test.rs:911:24:911:43 | ... .unwrap() | provenance | MaD:106 | -| test.rs:911:24:911:43 | ... .unwrap() | test.rs:911:13:911:14 | v3 | provenance | | -| test.rs:911:28:911:31 | take | test.rs:911:24:911:34 | row.take(...) [Some] | provenance | Src:MaD:18 | -| test.rs:914:13:914:14 | v4 | test.rs:915:14:915:15 | v4 | provenance | | -| test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | test.rs:914:24:914:47 | ... .unwrap() [Ok] | provenance | MaD:106 | -| test.rs:914:24:914:47 | ... .unwrap() [Ok] | test.rs:914:24:914:56 | ... .unwrap() | provenance | MaD:110 | -| test.rs:914:24:914:56 | ... .unwrap() | test.rs:914:13:914:14 | v4 | provenance | | -| test.rs:914:28:914:35 | take_opt | test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:19 | -| test.rs:924:13:924:14 | v6 | test.rs:925:14:925:15 | v6 | provenance | | -| test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | test.rs:924:23:924:64 | TryExpr [Some] | provenance | | -| test.rs:924:23:924:64 | TryExpr [Some] | test.rs:924:23:924:73 | ... .unwrap() | provenance | MaD:106 | -| test.rs:924:23:924:73 | ... .unwrap() | test.rs:924:13:924:14 | v6 | provenance | | -| test.rs:924:28:924:38 | query_first | test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | -| test.rs:927:13:927:18 | mut t1 [element] | test.rs:929:20:929:21 | t1 [element] | provenance | | -| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | test.rs:927:22:927:72 | TryExpr [element] | provenance | | -| test.rs:927:22:927:72 | TryExpr [element] | test.rs:927:13:927:18 | mut t1 [element] | provenance | | -| test.rs:927:27:927:35 | exec_iter | test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:15 | -| test.rs:928:14:928:61 | ... .get(...) [Some] | test.rs:928:14:928:70 | ... .unwrap() | provenance | MaD:106 | -| test.rs:928:42:928:44 | get | test.rs:928:14:928:61 | ... .get(...) [Some] | provenance | Src:MaD:16 | -| test.rs:929:13:929:15 | row | test.rs:931:22:931:22 | v | provenance | | -| test.rs:929:20:929:21 | t1 [element] | test.rs:929:13:929:15 | row | provenance | | -| test.rs:935:22:935:30 | query_map | test.rs:937:14:937:24 | ...: i64 | provenance | Src:MaD:3 | -| test.rs:937:14:937:24 | ...: i64 | test.rs:938:22:938:27 | values | provenance | | -| test.rs:951:13:951:17 | total | test.rs:955:14:955:18 | total | provenance | | -| test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | test.rs:951:21:954:11 | TryExpr | provenance | | -| test.rs:951:21:954:11 | TryExpr | test.rs:951:13:951:17 | total | provenance | | -| test.rs:951:26:951:35 | query_fold | test.rs:951:76:951:83 | ...: i64 | provenance | Src:MaD:2 | -| test.rs:951:76:951:83 | ...: i64 | test.rs:951:86:954:9 | { ... } | provenance | | -| test.rs:951:76:951:83 | ...: i64 | test.rs:952:18:952:20 | row | provenance | | -| test.rs:951:76:951:83 | ...: i64 | test.rs:953:19:953:21 | row | provenance | | -| test.rs:951:86:954:9 | { ... } | test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | provenance | MaD:68 | -| test.rs:953:13:953:21 | ... + ... | test.rs:951:86:954:9 | { ... } | provenance | | -| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:56 | -| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:57 | -| test.rs:953:19:953:21 | row | test.rs:953:13:953:21 | ... + ... | provenance | MaD:104 | -| test.rs:992:13:992:14 | v1 | test.rs:993:14:993:15 | v1 | provenance | | -| test.rs:992:24:992:33 | row.get(...) [Some] | test.rs:992:24:992:42 | ... .unwrap() | provenance | MaD:106 | -| test.rs:992:24:992:42 | ... .unwrap() | test.rs:992:13:992:14 | v1 | provenance | | -| test.rs:992:28:992:30 | get | test.rs:992:24:992:33 | row.get(...) [Some] | provenance | Src:MaD:16 | -| test.rs:995:13:995:14 | v2 | test.rs:996:14:996:15 | v2 | provenance | | -| test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | test.rs:995:24:995:46 | ... .unwrap() [Ok] | provenance | MaD:106 | -| test.rs:995:24:995:46 | ... .unwrap() [Ok] | test.rs:995:24:995:55 | ... .unwrap() | provenance | MaD:110 | -| test.rs:995:24:995:55 | ... .unwrap() | test.rs:995:13:995:14 | v2 | provenance | | -| test.rs:995:28:995:34 | get_opt | test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:17 | -| test.rs:998:13:998:14 | v3 | test.rs:999:14:999:15 | v3 | provenance | | -| test.rs:998:24:998:34 | row.take(...) [Some] | test.rs:998:24:998:43 | ... .unwrap() | provenance | MaD:106 | -| test.rs:998:24:998:43 | ... .unwrap() | test.rs:998:13:998:14 | v3 | provenance | | -| test.rs:998:28:998:31 | take | test.rs:998:24:998:34 | row.take(...) [Some] | provenance | Src:MaD:18 | -| test.rs:1001:13:1001:14 | v4 | test.rs:1002:14:1002:15 | v4 | provenance | | -| test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | provenance | MaD:106 | -| test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | test.rs:1001:24:1001:56 | ... .unwrap() | provenance | MaD:110 | -| test.rs:1001:24:1001:56 | ... .unwrap() | test.rs:1001:13:1001:14 | v4 | provenance | | -| test.rs:1001:28:1001:35 | take_opt | test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:19 | -| test.rs:1022:22:1022:30 | query_map | test.rs:1024:14:1024:24 | ...: i64 | provenance | Src:MaD:5 | -| test.rs:1024:14:1024:24 | ...: i64 | test.rs:1025:22:1025:27 | values | provenance | | -| test.rs:1038:13:1038:17 | total | test.rs:1042:14:1042:18 | total | provenance | | -| test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | test.rs:1038:21:1041:16 | await ... [Ok] | provenance | | -| test.rs:1038:21:1041:16 | await ... [Ok] | test.rs:1038:21:1041:17 | TryExpr | provenance | | -| test.rs:1038:21:1041:17 | TryExpr | test.rs:1038:13:1038:17 | total | provenance | | -| test.rs:1038:26:1038:35 | query_fold | test.rs:1038:76:1038:83 | ...: i64 | provenance | Src:MaD:4 | -| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1038:86:1041:9 | { ... } | provenance | | -| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1039:18:1039:20 | row | provenance | | -| test.rs:1038:76:1038:83 | ...: i64 | test.rs:1040:19:1040:21 | row | provenance | | -| test.rs:1038:86:1041:9 | { ... } | test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:69 | -| test.rs:1040:13:1040:21 | ... + ... | test.rs:1038:86:1041:9 | { ... } | provenance | | -| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:56 | -| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:57 | -| test.rs:1040:19:1040:21 | row | test.rs:1040:13:1040:21 | ... + ... | provenance | MaD:104 | -| test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:20:11:20:13 | tcp | provenance | | -| test_futures_io.rs:19:9:19:11 | tcp | test_futures_io.rs:26:53:26:55 | tcp | provenance | | -| test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | provenance | Src:MaD:13 | -| test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | test_futures_io.rs:19:15:19:43 | await ... [Ok] | provenance | | -| test_futures_io.rs:19:15:19:43 | await ... [Ok] | test_futures_io.rs:19:15:19:44 | TryExpr | provenance | | -| test_futures_io.rs:19:15:19:44 | TryExpr | test_futures_io.rs:19:9:19:11 | tcp | provenance | | -| test_futures_io.rs:20:11:20:13 | tcp | test_futures_io.rs:20:10:20:13 | &tcp | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:27:11:27:16 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:32:40:32:45 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:45:64:45:69 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:27:49:32 | reader | provenance | | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:65 | -| test_futures_io.rs:26:9:26:18 | mut reader | test_futures_io.rs:54:51:54:56 | reader | provenance | | -| test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | test_futures_io.rs:26:22:26:62 | await ... [Ok] | provenance | | -| test_futures_io.rs:26:22:26:62 | await ... [Ok] | test_futures_io.rs:26:22:26:63 | TryExpr | provenance | | -| test_futures_io.rs:26:22:26:63 | TryExpr | test_futures_io.rs:26:9:26:18 | mut reader | provenance | | -| test_futures_io.rs:26:53:26:55 | tcp | test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | provenance | MaD:114 | -| test_futures_io.rs:27:11:27:16 | reader | test_futures_io.rs:27:10:27:16 | &reader | provenance | | -| test_futures_io.rs:32:13:32:22 | mut pinned | test_futures_io.rs:33:15:33:20 | pinned | provenance | | -| test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | test_futures_io.rs:33:15:33:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:32:26:32:46 | ...::new(...) | test_futures_io.rs:32:13:32:22 | mut pinned | provenance | | -| test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) | provenance | MaD:107 | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | provenance | MaD:108 | -| test_futures_io.rs:32:40:32:45 | reader | test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | provenance | | -| test_futures_io.rs:33:15:33:20 | pinned | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:33:15:33:20 | pinned [&ref] | test_futures_io.rs:33:14:33:20 | &pinned | provenance | | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:45:64:45:69 | reader | test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | provenance | | -| test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | test_futures_io.rs:45:77:45:83 | [post] buffer1 | provenance | | -| test_futures_io.rs:45:77:45:83 | [post] buffer1 | test_futures_io.rs:46:15:46:36 | buffer1[...] | provenance | | -| test_futures_io.rs:46:15:46:36 | buffer1[...] | test_futures_io.rs:46:14:46:36 | &... | provenance | | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:49:27:49:32 | reader | test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | test_futures_io.rs:49:44:49:50 | [post] buffer2 | provenance | | -| test_futures_io.rs:49:44:49:50 | [post] buffer2 | test_futures_io.rs:51:15:51:36 | buffer2[...] | provenance | | -| test_futures_io.rs:51:15:51:36 | buffer2[...] | test_futures_io.rs:51:14:51:36 | &... | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:55:11:55:17 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:59:40:59:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:69:37:69:43 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:59 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:90:40:90:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:103:64:103:70 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:27:107:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:51 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:65 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:113:40:113:46 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | provenance | MaD:59 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:27:132:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:62 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:63 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:27:139:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:60 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:61 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:27:146:33 | reader2 | provenance | | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:66 | -| test_futures_io.rs:54:9:54:19 | mut reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:67 | -| test_futures_io.rs:54:23:54:57 | ...::new(...) | test_futures_io.rs:54:9:54:19 | mut reader2 | provenance | | -| test_futures_io.rs:54:51:54:56 | reader | test_futures_io.rs:54:23:54:57 | ...::new(...) | provenance | MaD:115 | -| test_futures_io.rs:55:11:55:17 | reader2 | test_futures_io.rs:55:10:55:17 | &reader2 | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:60:15:60:20 | pinned | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:60:15:60:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:59:26:59:47 | ...::new(...) | test_futures_io.rs:59:13:59:22 | mut pinned | provenance | | -| test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) | provenance | MaD:107 | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | provenance | MaD:108 | -| test_futures_io.rs:59:40:59:46 | reader2 | test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:60:15:60:20 | pinned | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | -| test_futures_io.rs:60:15:60:20 | pinned [&ref] | test_futures_io.rs:60:14:60:20 | &pinned | provenance | | -| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | provenance | | -| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | provenance | | -| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | provenance | | -| test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | provenance | | -| test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | test_futures_io.rs:63:31:63:33 | buf | provenance | | -| test_futures_io.rs:63:31:63:33 | buf | test_futures_io.rs:65:18:65:20 | buf | provenance | | -| test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | test_futures_io.rs:64:18:64:24 | &buffer | provenance | | -| test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) | provenance | MaD:107 | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | provenance | MaD:108 | -| test_futures_io.rs:69:37:69:43 | reader2 | test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | provenance | | -| test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | provenance | | -| test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | provenance | | -| test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | test_futures_io.rs:71:28:71:30 | buf | provenance | | -| test_futures_io.rs:71:28:71:30 | buf | test_futures_io.rs:73:22:73:24 | buf | provenance | | -| test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | test_futures_io.rs:72:22:72:29 | &buffer2 | provenance | | -| test_futures_io.rs:83:13:83:18 | buffer | test_futures_io.rs:84:14:84:19 | buffer | provenance | | -| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:83:22:83:45 | await ... [Ok] | provenance | | -| test_futures_io.rs:83:22:83:45 | await ... [Ok] | test_futures_io.rs:83:22:83:46 | TryExpr | provenance | | -| test_futures_io.rs:83:22:83:46 | TryExpr | test_futures_io.rs:83:13:83:18 | buffer | provenance | | -| test_futures_io.rs:90:13:90:22 | mut pinned | test_futures_io.rs:91:15:91:20 | pinned | provenance | | -| test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | test_futures_io.rs:91:15:91:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:90:26:90:47 | ...::new(...) | test_futures_io.rs:90:13:90:22 | mut pinned | provenance | | -| test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) | provenance | MaD:107 | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | provenance | MaD:108 | -| test_futures_io.rs:90:40:90:46 | reader2 | test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:91:15:91:20 | pinned | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:91:15:91:20 | pinned [&ref] | test_futures_io.rs:91:14:91:20 | &pinned | provenance | | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:103:64:103:70 | reader2 | test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | test_futures_io.rs:103:78:103:84 | [post] buffer1 | provenance | | -| test_futures_io.rs:103:78:103:84 | [post] buffer1 | test_futures_io.rs:104:15:104:36 | buffer1[...] | provenance | | -| test_futures_io.rs:104:15:104:36 | buffer1[...] | test_futures_io.rs:104:14:104:36 | &... | provenance | | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:50 | -| test_futures_io.rs:107:27:107:33 | reader2 | test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | provenance | MaD:64 | -| test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | test_futures_io.rs:107:45:107:51 | [post] buffer2 | provenance | | -| test_futures_io.rs:107:45:107:51 | [post] buffer2 | test_futures_io.rs:108:15:108:36 | buffer2[...] | provenance | | -| test_futures_io.rs:108:15:108:36 | buffer2[...] | test_futures_io.rs:108:14:108:36 | &... | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:114:15:114:20 | pinned | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:114:15:114:20 | pinned [&ref] | provenance | | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:58 | -| test_futures_io.rs:113:26:113:47 | ...::new(...) | test_futures_io.rs:113:13:113:22 | mut pinned | provenance | | -| test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | provenance | | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) | provenance | MaD:107 | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | provenance | MaD:108 | -| test_futures_io.rs:113:40:113:46 | reader2 | test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | provenance | | -| test_futures_io.rs:114:15:114:20 | pinned | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | -| test_futures_io.rs:114:15:114:20 | pinned [&ref] | test_futures_io.rs:114:14:114:20 | &pinned | provenance | | -| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | provenance | | -| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | provenance | | -| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | provenance | | -| test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | test_futures_io.rs:117:14:117:20 | &buffer | provenance | | -| test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | provenance | | -| test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | test_futures_io.rs:118:31:118:33 | buf | provenance | | -| test_futures_io.rs:118:31:118:33 | buf | test_futures_io.rs:119:18:119:20 | buf | provenance | | -| test_futures_io.rs:125:13:125:18 | buffer | test_futures_io.rs:126:14:126:19 | buffer | provenance | | -| test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | test_futures_io.rs:125:22:125:45 | await ... [Ok] | provenance | | -| test_futures_io.rs:125:22:125:45 | await ... [Ok] | test_futures_io.rs:125:22:125:46 | TryExpr | provenance | | -| test_futures_io.rs:125:22:125:46 | TryExpr | test_futures_io.rs:125:13:125:18 | buffer | provenance | | -| test_futures_io.rs:132:27:132:33 | reader2 | test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | provenance | MaD:62 | -| test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | test_futures_io.rs:132:58:132:61 | [post] line | provenance | | -| test_futures_io.rs:132:58:132:61 | [post] line | test_futures_io.rs:133:15:133:18 | line | provenance | | -| test_futures_io.rs:133:15:133:18 | line | test_futures_io.rs:133:14:133:18 | &line | provenance | | -| test_futures_io.rs:139:27:139:33 | reader2 | test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | provenance | MaD:60 | -| test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | test_futures_io.rs:139:50:139:53 | [post] line | provenance | | -| test_futures_io.rs:139:50:139:53 | [post] line | test_futures_io.rs:140:15:140:18 | line | provenance | | -| test_futures_io.rs:140:15:140:18 | line | test_futures_io.rs:140:14:140:18 | &line | provenance | | -| test_futures_io.rs:146:27:146:33 | reader2 | test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | provenance | MaD:66 | -| test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | test_futures_io.rs:146:52:146:57 | [post] buffer | provenance | | -| test_futures_io.rs:146:52:146:57 | [post] buffer | test_futures_io.rs:147:15:147:20 | buffer | provenance | | -| test_futures_io.rs:147:15:147:20 | buffer | test_futures_io.rs:147:14:147:20 | &buffer | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | provenance | | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:13:14:13:14 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:14:14:14:14 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | provenance | | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() | provenance | MaD:101 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:97 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | provenance | MaD:98 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:99 | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | provenance | MaD:100 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:100:13:100:13 | a | web_frameworks.rs:103:14:103:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:14 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | web_frameworks.rs:103:14:103:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:14 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | web_frameworks.rs:103:14:103:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:14 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | web_frameworks.rs:103:14:103:14 | a | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:14 | a [tuple.3] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:14 | a [tuple.3] | provenance | | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | web_frameworks.rs:103:14:103:14 | a | provenance | | -| web_frameworks.rs:100:17:100:33 | path.into_inner() | web_frameworks.rs:100:13:100:13 | a | provenance | | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | web_frameworks.rs:100:13:100:13 | a [tuple.0] | provenance | | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | web_frameworks.rs:100:13:100:13 | a [tuple.1] | provenance | | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | web_frameworks.rs:100:13:100:13 | a [tuple.2] | provenance | | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | web_frameworks.rs:100:13:100:13 | a [tuple.3] | provenance | | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:103 | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | web_frameworks.rs:101:14:101:23 | a.as_str() | provenance | MaD:112 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:102 | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | web_frameworks.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:111 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:97 | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:98 | -| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | web_frameworks.rs:111:14:111:14 | a | provenance | | -| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | web_frameworks.rs:111:17:111:17 | b | provenance | | -| web_frameworks.rs:111:14:111:14 | a | web_frameworks.rs:113:14:113:14 | a | provenance | | -| web_frameworks.rs:111:17:111:17 | b | web_frameworks.rs:114:14:114:14 | b | provenance | | -| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | provenance | | -| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | provenance | | -| web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | provenance | Src:MaD:9 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() | provenance | MaD:101 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | provenance | MaD:97 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | provenance | MaD:98 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | provenance | MaD:99 | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | provenance | MaD:100 | -| web_frameworks.rs:131:13:131:13 | a | web_frameworks.rs:132:14:132:14 | a | provenance | | -| web_frameworks.rs:131:13:131:13 | a [tuple.0] | web_frameworks.rs:132:14:132:14 | a | provenance | | -| web_frameworks.rs:131:13:131:13 | a [tuple.1] | web_frameworks.rs:132:14:132:14 | a | provenance | | -| web_frameworks.rs:131:13:131:13 | a [tuple.2] | web_frameworks.rs:132:14:132:14 | a | provenance | | -| web_frameworks.rs:131:13:131:13 | a [tuple.3] | web_frameworks.rs:132:14:132:14 | a | provenance | | -| web_frameworks.rs:131:17:131:33 | path.into_inner() | web_frameworks.rs:131:13:131:13 | a | provenance | | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | web_frameworks.rs:131:13:131:13 | a [tuple.0] | provenance | | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | web_frameworks.rs:131:13:131:13 | a [tuple.1] | provenance | | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | web_frameworks.rs:131:13:131:13 | a [tuple.2] | provenance | | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | web_frameworks.rs:131:13:131:13 | a [tuple.3] | provenance | | -| web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:10 | -| web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:10 | -| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:7 | -| web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:242:38:242:46 | ...: String | provenance | Src:MaD:7 | -| web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | -| web_frameworks.rs:242:38:242:46 | ...: String | web_frameworks.rs:244:18:244:18 | a | provenance | | -| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:8 | -| web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:251:25:251:33 | ...: String | provenance | Src:MaD:8 | -| web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | -| web_frameworks.rs:251:25:251:33 | ...: String | web_frameworks.rs:252:22:252:22 | a | provenance | | -| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:6 | -| web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:6 | -| web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | -| web_frameworks.rs:260:26:260:32 | ...: u64 | web_frameworks.rs:263:22:263:23 | id | provenance | | -| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:7 | -| web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:273:15:273:23 | ...: String | provenance | Src:MaD:7 | -| web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | a | provenance | | -| web_frameworks.rs:273:15:273:23 | ...: String | web_frameworks.rs:275:22:275:22 | a | provenance | | -nodes -| test.rs:8:10:8:22 | ...::var | semmle.label | ...::var | -| test.rs:8:10:8:30 | ...::var(...) | semmle.label | ...::var(...) | -| test.rs:9:10:9:25 | ...::var_os | semmle.label | ...::var_os | -| test.rs:9:10:9:33 | ...::var_os(...) | semmle.label | ...::var_os(...) | -| test.rs:11:9:11:12 | var1 | semmle.label | var1 | -| test.rs:11:16:11:28 | ...::var | semmle.label | ...::var | -| test.rs:11:16:11:36 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| test.rs:11:16:11:59 | ... .expect(...) | semmle.label | ... .expect(...) | -| test.rs:12:9:12:12 | var2 | semmle.label | var2 | -| test.rs:12:16:12:31 | ...::var_os | semmle.label | ...::var_os | -| test.rs:12:16:12:39 | ...::var_os(...) [Some] | semmle.label | ...::var_os(...) [Some] | -| test.rs:12:16:12:48 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:14:10:14:13 | var1 | semmle.label | var1 | -| test.rs:15:10:15:13 | var2 | semmle.label | var2 | -| test.rs:29:9:29:12 | args [element] | semmle.label | args [element] | -| test.rs:29:29:29:42 | ...::args | semmle.label | ...::args | -| test.rs:29:29:29:44 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| test.rs:29:29:29:54 | ... .collect() [element] | semmle.label | ... .collect() [element] | -| test.rs:30:9:30:15 | my_path [&ref] | semmle.label | my_path [&ref] | -| test.rs:30:19:30:26 | &... [&ref] | semmle.label | &... [&ref] | -| test.rs:30:20:30:23 | args [element] | semmle.label | args [element] | -| test.rs:30:20:30:26 | args[0] | semmle.label | args[0] | -| test.rs:31:9:31:12 | arg1 [&ref] | semmle.label | arg1 [&ref] | -| test.rs:31:16:31:23 | &... [&ref] | semmle.label | &... [&ref] | -| test.rs:31:17:31:20 | args [element] | semmle.label | args [element] | -| test.rs:31:17:31:23 | args[1] | semmle.label | args[1] | -| test.rs:32:9:32:12 | arg2 | semmle.label | arg2 | -| test.rs:32:16:32:29 | ...::args | semmle.label | ...::args | -| test.rs:32:16:32:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| test.rs:32:16:32:47 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:33:9:33:12 | arg3 | semmle.label | arg3 | -| test.rs:33:16:33:32 | ...::args_os | semmle.label | ...::args_os | -| test.rs:33:16:33:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | -| test.rs:33:16:33:41 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| test.rs:33:16:33:50 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:34:9:34:12 | arg4 | semmle.label | arg4 | -| test.rs:34:16:34:29 | ...::args | semmle.label | ...::args | -| test.rs:34:16:34:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| test.rs:34:16:34:38 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| test.rs:34:16:34:47 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:34:16:34:64 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | -| test.rs:34:16:34:73 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:36:10:36:16 | my_path | semmle.label | my_path | -| test.rs:37:10:37:13 | arg1 | semmle.label | arg1 | -| test.rs:38:10:38:13 | arg2 | semmle.label | arg2 | -| test.rs:39:10:39:13 | arg3 | semmle.label | arg3 | -| test.rs:40:10:40:13 | arg4 | semmle.label | arg4 | -| test.rs:42:9:42:11 | arg | semmle.label | arg | -| test.rs:42:16:42:29 | ...::args | semmle.label | ...::args | -| test.rs:42:16:42:31 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| test.rs:43:14:43:16 | arg | semmle.label | arg | -| test.rs:46:9:46:11 | arg | semmle.label | arg | -| test.rs:46:16:46:32 | ...::args_os | semmle.label | ...::args_os | -| test.rs:46:16:46:34 | ...::args_os(...) [element] | semmle.label | ...::args_os(...) [element] | -| test.rs:47:14:47:16 | arg | semmle.label | arg | -| test.rs:52:9:52:11 | dir | semmle.label | dir | -| test.rs:52:15:52:35 | ...::current_dir | semmle.label | ...::current_dir | -| test.rs:52:15:52:37 | ...::current_dir(...) [Ok] | semmle.label | ...::current_dir(...) [Ok] | -| test.rs:52:15:52:54 | ... .expect(...) | semmle.label | ... .expect(...) | -| test.rs:53:9:53:11 | exe | semmle.label | exe | -| test.rs:53:15:53:35 | ...::current_exe | semmle.label | ...::current_exe | -| test.rs:53:15:53:37 | ...::current_exe(...) [Ok] | semmle.label | ...::current_exe(...) [Ok] | -| test.rs:53:15:53:54 | ... .expect(...) | semmle.label | ... .expect(...) | -| test.rs:54:9:54:12 | home | semmle.label | home | -| test.rs:54:16:54:33 | ...::home_dir | semmle.label | ...::home_dir | -| test.rs:54:16:54:35 | ...::home_dir(...) [Some] | semmle.label | ...::home_dir(...) [Some] | -| test.rs:54:16:54:52 | ... .expect(...) | semmle.label | ... .expect(...) | -| test.rs:56:10:56:12 | dir | semmle.label | dir | -| test.rs:57:10:57:12 | exe | semmle.label | exe | -| test.rs:58:10:58:13 | home | semmle.label | home | -| test.rs:62:9:62:22 | remote_string1 | semmle.label | remote_string1 | -| test.rs:62:26:62:47 | ...::get | semmle.label | ...::get | -| test.rs:62:26:62:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| test.rs:62:26:62:63 | TryExpr | semmle.label | TryExpr | -| test.rs:62:26:62:70 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | -| test.rs:62:26:62:71 | TryExpr | semmle.label | TryExpr | -| test.rs:63:10:63:23 | remote_string1 | semmle.label | remote_string1 | -| test.rs:65:9:65:22 | remote_string2 | semmle.label | remote_string2 | -| test.rs:65:26:65:47 | ...::get | semmle.label | ...::get | -| test.rs:65:26:65:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| test.rs:65:26:65:71 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:65:26:65:78 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | -| test.rs:65:26:65:87 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:66:10:66:23 | remote_string2 | semmle.label | remote_string2 | -| test.rs:68:9:68:22 | remote_string3 | semmle.label | remote_string3 | -| test.rs:68:26:68:47 | ...::get | semmle.label | ...::get | -| test.rs:68:26:68:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| test.rs:68:26:68:71 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:68:26:68:98 | ... .text_with_charset(...) [Ok] | semmle.label | ... .text_with_charset(...) [Ok] | -| test.rs:68:26:68:107 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:69:10:69:23 | remote_string3 | semmle.label | remote_string3 | -| test.rs:71:9:71:22 | remote_string4 | semmle.label | remote_string4 | -| test.rs:71:26:71:47 | ...::get | semmle.label | ...::get | -| test.rs:71:26:71:62 | ...::get(...) [Ok] | semmle.label | ...::get(...) [Ok] | -| test.rs:71:26:71:71 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:71:26:71:79 | ... .bytes() [Ok] | semmle.label | ... .bytes() [Ok] | -| test.rs:71:26:71:88 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:72:10:72:23 | remote_string4 | semmle.label | remote_string4 | -| test.rs:74:9:74:22 | remote_string5 | semmle.label | remote_string5 | -| test.rs:74:26:74:37 | ...::get | semmle.label | ...::get | -| test.rs:74:26:74:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | -| test.rs:74:26:74:58 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:74:26:74:59 | TryExpr | semmle.label | TryExpr | -| test.rs:74:26:74:66 | ... .text() [future, Ok] | semmle.label | ... .text() [future, Ok] | -| test.rs:74:26:74:72 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:74:26:74:73 | TryExpr | semmle.label | TryExpr | -| test.rs:75:10:75:23 | remote_string5 | semmle.label | remote_string5 | -| test.rs:77:9:77:22 | remote_string6 | semmle.label | remote_string6 | -| test.rs:77:26:77:37 | ...::get | semmle.label | ...::get | -| test.rs:77:26:77:52 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | -| test.rs:77:26:77:58 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:77:26:77:59 | TryExpr | semmle.label | TryExpr | -| test.rs:77:26:77:67 | ... .bytes() [future, Ok] | semmle.label | ... .bytes() [future, Ok] | -| test.rs:77:26:77:73 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:77:26:77:74 | TryExpr | semmle.label | TryExpr | -| test.rs:78:10:78:23 | remote_string6 | semmle.label | remote_string6 | -| test.rs:80:9:80:20 | mut request1 | semmle.label | mut request1 | -| test.rs:80:24:80:35 | ...::get | semmle.label | ...::get | -| test.rs:80:24:80:50 | ...::get(...) [future, Ok] | semmle.label | ...::get(...) [future, Ok] | -| test.rs:80:24:80:56 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:80:24:80:57 | TryExpr | semmle.label | TryExpr | -| test.rs:81:10:81:25 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | -| test.rs:81:10:81:31 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:81:10:81:32 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:81:10:81:41 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:82:15:82:25 | Some(...) [Some] | semmle.label | Some(...) [Some] | -| test.rs:82:20:82:24 | chunk | semmle.label | chunk | -| test.rs:82:29:82:44 | request1.chunk() [future, Ok, Some] | semmle.label | request1.chunk() [future, Ok, Some] | -| test.rs:82:29:82:50 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:82:29:82:51 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:83:14:83:18 | chunk | semmle.label | chunk | -| test.rs:114:13:114:20 | response | semmle.label | response | -| test.rs:114:24:114:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | -| test.rs:114:24:114:57 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:114:24:114:58 | TryExpr | semmle.label | TryExpr | -| test.rs:114:31:114:42 | send_request | semmle.label | send_request | -| test.rs:115:14:115:22 | &response | semmle.label | &response | -| test.rs:115:15:115:22 | response | semmle.label | response | -| test.rs:116:14:116:21 | response | semmle.label | response | -| test.rs:121:9:121:20 | mut response | semmle.label | mut response | -| test.rs:121:24:121:51 | sender.send_request(...) [future, Ok] | semmle.label | sender.send_request(...) [future, Ok] | -| test.rs:121:24:121:57 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:121:24:121:58 | TryExpr | semmle.label | TryExpr | -| test.rs:121:31:121:42 | send_request | semmle.label | send_request | -| test.rs:122:10:122:18 | &response | semmle.label | &response | -| test.rs:122:11:122:18 | response | semmle.label | response | -| test.rs:211:22:211:35 | ...::stdin | semmle.label | ...::stdin | -| test.rs:211:22:211:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:211:44:211:54 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:211:44:211:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:211:49:211:54 | [post] buffer | semmle.label | [post] buffer | -| test.rs:212:14:212:20 | &buffer | semmle.label | &buffer | -| test.rs:212:15:212:20 | buffer | semmle.label | buffer | -| test.rs:217:22:217:35 | ...::stdin | semmle.label | ...::stdin | -| test.rs:217:22:217:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:217:51:217:61 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:217:56:217:61 | [post] buffer | semmle.label | [post] buffer | -| test.rs:218:14:218:20 | &buffer | semmle.label | &buffer | -| test.rs:218:15:218:20 | buffer | semmle.label | buffer | -| test.rs:223:22:223:35 | ...::stdin | semmle.label | ...::stdin | -| test.rs:223:22:223:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:223:54:223:64 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:223:54:223:64 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:223:59:223:64 | [post] buffer | semmle.label | [post] buffer | -| test.rs:224:14:224:20 | &buffer | semmle.label | &buffer | -| test.rs:224:15:224:20 | buffer | semmle.label | buffer | -| test.rs:229:22:229:35 | ...::stdin | semmle.label | ...::stdin | -| test.rs:229:22:229:37 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:229:22:229:44 | ... .lock() | semmle.label | ... .lock() | -| test.rs:229:61:229:71 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:229:66:229:71 | [post] buffer | semmle.label | [post] buffer | -| test.rs:230:14:230:20 | &buffer | semmle.label | &buffer | -| test.rs:230:15:230:20 | buffer | semmle.label | buffer | -| test.rs:235:9:235:22 | ...::stdin | semmle.label | ...::stdin | -| test.rs:235:9:235:24 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:235:37:235:47 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:235:37:235:47 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:235:42:235:47 | [post] buffer | semmle.label | [post] buffer | -| test.rs:236:14:236:20 | &buffer | semmle.label | &buffer | -| test.rs:236:15:236:20 | buffer | semmle.label | buffer | -| test.rs:239:17:239:30 | ...::stdin | semmle.label | ...::stdin | -| test.rs:239:17:239:32 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:239:17:239:40 | ... .bytes() | semmle.label | ... .bytes() | -| test.rs:240:14:240:17 | byte | semmle.label | byte | -| test.rs:246:13:246:22 | mut reader | semmle.label | mut reader | -| test.rs:246:26:246:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:246:50:246:63 | ...::stdin | semmle.label | ...::stdin | -| test.rs:246:50:246:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:247:13:247:16 | data | semmle.label | data | -| test.rs:247:20:247:36 | reader.fill_buf() [Ok] | semmle.label | reader.fill_buf() [Ok] | -| test.rs:247:20:247:37 | TryExpr | semmle.label | TryExpr | -| test.rs:248:14:248:18 | &data | semmle.label | &data | -| test.rs:248:15:248:18 | data | semmle.label | data | -| test.rs:252:13:252:18 | reader | semmle.label | reader | -| test.rs:252:22:252:62 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:252:46:252:59 | ...::stdin | semmle.label | ...::stdin | -| test.rs:252:46:252:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:253:13:253:16 | data | semmle.label | data | -| test.rs:253:20:253:34 | reader.buffer() | semmle.label | reader.buffer() | -| test.rs:254:14:254:18 | &data | semmle.label | &data | -| test.rs:254:15:254:18 | data | semmle.label | data | -| test.rs:259:13:259:22 | mut reader | semmle.label | mut reader | -| test.rs:259:26:259:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:259:50:259:63 | ...::stdin | semmle.label | ...::stdin | -| test.rs:259:50:259:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:260:26:260:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:260:31:260:36 | [post] buffer | semmle.label | [post] buffer | -| test.rs:261:14:261:20 | &buffer | semmle.label | &buffer | -| test.rs:261:15:261:20 | buffer | semmle.label | buffer | -| test.rs:266:13:266:22 | mut reader | semmle.label | mut reader | -| test.rs:266:26:266:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:266:50:266:63 | ...::stdin | semmle.label | ...::stdin | -| test.rs:266:50:266:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:267:33:267:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:267:38:267:43 | [post] buffer | semmle.label | [post] buffer | -| test.rs:268:14:268:20 | &buffer | semmle.label | &buffer | -| test.rs:268:15:268:20 | buffer | semmle.label | buffer | -| test.rs:269:14:269:22 | buffer[0] | semmle.label | buffer[0] | -| test.rs:273:13:273:28 | mut reader_split | semmle.label | mut reader_split | -| test.rs:273:32:273:72 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:273:32:273:84 | ... .split(...) | semmle.label | ... .split(...) | -| test.rs:273:56:273:69 | ...::stdin | semmle.label | ...::stdin | -| test.rs:273:56:273:71 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:274:14:274:32 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | -| test.rs:274:14:274:41 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | -| test.rs:274:14:274:50 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:275:19:275:29 | Some(...) [Some, Ok] | semmle.label | Some(...) [Some, Ok] | -| test.rs:275:24:275:28 | chunk [Ok] | semmle.label | chunk [Ok] | -| test.rs:275:33:275:51 | reader_split.next() [Some, Ok] | semmle.label | reader_split.next() [Some, Ok] | -| test.rs:276:18:276:31 | chunk.unwrap() | semmle.label | chunk.unwrap() | -| test.rs:281:13:281:18 | reader | semmle.label | reader | -| test.rs:281:22:281:62 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:281:46:281:59 | ...::stdin | semmle.label | ...::stdin | -| test.rs:281:46:281:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:282:21:282:34 | reader.lines() | semmle.label | reader.lines() | -| test.rs:283:18:283:21 | line | semmle.label | line | -| test.rs:309:13:309:21 | mut stdin | semmle.label | mut stdin | -| test.rs:309:25:309:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:309:25:309:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:311:33:311:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:311:38:311:43 | [post] buffer | semmle.label | [post] buffer | -| test.rs:312:14:312:20 | &buffer | semmle.label | &buffer | -| test.rs:312:15:312:20 | buffer | semmle.label | buffer | -| test.rs:316:13:316:21 | mut stdin | semmle.label | mut stdin | -| test.rs:316:25:316:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:316:25:316:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:318:40:318:50 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:318:45:318:50 | [post] buffer | semmle.label | [post] buffer | -| test.rs:319:14:319:20 | &buffer | semmle.label | &buffer | -| test.rs:319:15:319:20 | buffer | semmle.label | buffer | -| test.rs:323:13:323:21 | mut stdin | semmle.label | mut stdin | -| test.rs:323:25:323:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:323:25:323:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:325:43:325:53 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:325:48:325:53 | [post] buffer | semmle.label | [post] buffer | -| test.rs:326:14:326:20 | &buffer | semmle.label | &buffer | -| test.rs:326:15:326:20 | buffer | semmle.label | buffer | -| test.rs:330:13:330:21 | mut stdin | semmle.label | mut stdin | -| test.rs:330:25:330:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:330:25:330:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:332:26:332:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:332:31:332:36 | [post] buffer | semmle.label | [post] buffer | -| test.rs:333:14:333:20 | &buffer | semmle.label | &buffer | -| test.rs:333:15:333:20 | buffer | semmle.label | buffer | -| test.rs:337:13:337:21 | mut stdin | semmle.label | mut stdin | -| test.rs:337:25:337:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:337:25:337:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:338:13:338:14 | v1 | semmle.label | v1 | -| test.rs:338:18:338:32 | stdin.read_u8() [future, Ok] | semmle.label | stdin.read_u8() [future, Ok] | -| test.rs:338:18:338:38 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:338:18:338:39 | TryExpr | semmle.label | TryExpr | -| test.rs:339:13:339:14 | v2 | semmle.label | v2 | -| test.rs:339:18:339:33 | stdin.read_i16() [future, Ok] | semmle.label | stdin.read_i16() [future, Ok] | -| test.rs:339:18:339:39 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:339:18:339:40 | TryExpr | semmle.label | TryExpr | -| test.rs:340:13:340:14 | v3 | semmle.label | v3 | -| test.rs:340:18:340:33 | stdin.read_f32() [future, Ok] | semmle.label | stdin.read_f32() [future, Ok] | -| test.rs:340:18:340:39 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:340:18:340:40 | TryExpr | semmle.label | TryExpr | -| test.rs:341:13:341:14 | v4 | semmle.label | v4 | -| test.rs:341:18:341:36 | stdin.read_i64_le() [future, Ok] | semmle.label | stdin.read_i64_le() [future, Ok] | -| test.rs:341:18:341:42 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:341:18:341:43 | TryExpr | semmle.label | TryExpr | -| test.rs:342:14:342:15 | v1 | semmle.label | v1 | -| test.rs:343:14:343:15 | v2 | semmle.label | v2 | -| test.rs:344:14:344:15 | v3 | semmle.label | v3 | -| test.rs:345:14:345:15 | v4 | semmle.label | v4 | -| test.rs:349:13:349:21 | mut stdin | semmle.label | mut stdin | -| test.rs:349:25:349:40 | ...::stdin | semmle.label | ...::stdin | -| test.rs:349:25:349:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:351:24:351:34 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:351:29:351:34 | [post] buffer | semmle.label | [post] buffer | -| test.rs:352:14:352:20 | &buffer | semmle.label | &buffer | -| test.rs:352:15:352:20 | buffer | semmle.label | buffer | -| test.rs:358:13:358:22 | mut reader | semmle.label | mut reader | -| test.rs:358:26:358:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:358:52:358:67 | ...::stdin | semmle.label | ...::stdin | -| test.rs:358:52:358:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:359:13:359:16 | data | semmle.label | data | -| test.rs:359:20:359:36 | reader.fill_buf() [future, Ok] | semmle.label | reader.fill_buf() [future, Ok] | -| test.rs:359:20:359:42 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:359:20:359:43 | TryExpr | semmle.label | TryExpr | -| test.rs:360:14:360:18 | &data | semmle.label | &data | -| test.rs:360:15:360:18 | data | semmle.label | data | -| test.rs:364:13:364:18 | reader | semmle.label | reader | -| test.rs:364:22:364:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:364:48:364:63 | ...::stdin | semmle.label | ...::stdin | -| test.rs:364:48:364:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:365:13:365:16 | data | semmle.label | data | -| test.rs:365:20:365:34 | reader.buffer() | semmle.label | reader.buffer() | -| test.rs:366:14:366:18 | &data | semmle.label | &data | -| test.rs:366:15:366:18 | data | semmle.label | data | -| test.rs:371:13:371:22 | mut reader | semmle.label | mut reader | -| test.rs:371:26:371:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:371:52:371:67 | ...::stdin | semmle.label | ...::stdin | -| test.rs:371:52:371:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:372:26:372:36 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:372:31:372:36 | [post] buffer | semmle.label | [post] buffer | -| test.rs:373:14:373:20 | &buffer | semmle.label | &buffer | -| test.rs:373:15:373:20 | buffer | semmle.label | buffer | -| test.rs:378:13:378:22 | mut reader | semmle.label | mut reader | -| test.rs:378:26:378:70 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:378:52:378:67 | ...::stdin | semmle.label | ...::stdin | -| test.rs:378:52:378:69 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:379:33:379:43 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:379:38:379:43 | [post] buffer | semmle.label | [post] buffer | -| test.rs:380:14:380:20 | &buffer | semmle.label | &buffer | -| test.rs:380:15:380:20 | buffer | semmle.label | buffer | -| test.rs:381:14:381:22 | buffer[0] | semmle.label | buffer[0] | -| test.rs:385:13:385:28 | mut reader_split | semmle.label | mut reader_split | -| test.rs:385:32:385:76 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:385:32:385:88 | ... .split(...) | semmle.label | ... .split(...) | -| test.rs:385:58:385:73 | ...::stdin | semmle.label | ...::stdin | -| test.rs:385:58:385:75 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:386:14:386:40 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | -| test.rs:386:14:386:46 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:386:14:386:47 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:386:14:386:56 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:387:19:387:29 | Some(...) [Some] | semmle.label | Some(...) [Some] | -| test.rs:387:24:387:28 | chunk | semmle.label | chunk | -| test.rs:387:33:387:59 | reader_split.next_segment() [future, Ok, Some] | semmle.label | reader_split.next_segment() [future, Ok, Some] | -| test.rs:387:33:387:65 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:387:33:387:66 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:388:18:388:22 | chunk | semmle.label | chunk | -| test.rs:393:13:393:18 | reader | semmle.label | reader | -| test.rs:393:22:393:66 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:393:48:393:63 | ...::stdin | semmle.label | ...::stdin | -| test.rs:393:48:393:65 | ...::stdin(...) | semmle.label | ...::stdin(...) | -| test.rs:394:13:394:21 | mut lines | semmle.label | mut lines | -| test.rs:394:25:394:38 | reader.lines() | semmle.label | reader.lines() | -| test.rs:395:14:395:30 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | -| test.rs:395:14:395:36 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:395:14:395:37 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:395:14:395:46 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:396:19:396:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | -| test.rs:396:24:396:27 | line | semmle.label | line | -| test.rs:396:32:396:48 | lines.next_line() [future, Ok, Some] | semmle.label | lines.next_line() [future, Ok, Some] | -| test.rs:396:32:396:54 | await ... [Ok, Some] | semmle.label | await ... [Ok, Some] | -| test.rs:396:32:396:55 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:397:18:397:21 | line | semmle.label | line | -| test.rs:408:13:408:18 | buffer | semmle.label | buffer | -| test.rs:408:31:408:43 | ...::read | semmle.label | ...::read | -| test.rs:408:31:408:43 | ...::read [Ok] | semmle.label | ...::read [Ok] | -| test.rs:408:31:408:55 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | -| test.rs:408:31:408:56 | TryExpr | semmle.label | TryExpr | -| test.rs:409:14:409:19 | buffer | semmle.label | buffer | -| test.rs:413:13:413:18 | buffer | semmle.label | buffer | -| test.rs:413:31:413:38 | ...::read | semmle.label | ...::read | -| test.rs:413:31:413:38 | ...::read [Ok] | semmle.label | ...::read [Ok] | -| test.rs:413:31:413:50 | ...::read(...) [Ok] | semmle.label | ...::read(...) [Ok] | -| test.rs:413:31:413:51 | TryExpr | semmle.label | TryExpr | -| test.rs:414:14:414:19 | buffer | semmle.label | buffer | -| test.rs:418:13:418:18 | buffer | semmle.label | buffer | -| test.rs:418:22:418:39 | ...::read_to_string | semmle.label | ...::read_to_string | -| test.rs:418:22:418:39 | ...::read_to_string [Ok] | semmle.label | ...::read_to_string [Ok] | -| test.rs:418:22:418:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] | -| test.rs:418:22:418:52 | TryExpr | semmle.label | TryExpr | -| test.rs:419:14:419:19 | buffer | semmle.label | buffer | -| test.rs:425:13:425:16 | path | semmle.label | path | -| test.rs:425:20:425:27 | e.path() | semmle.label | e.path() | -| test.rs:425:22:425:25 | path | semmle.label | path | -| test.rs:426:14:426:17 | path | semmle.label | path | -| test.rs:426:14:426:25 | path.clone() | semmle.label | path.clone() | -| test.rs:427:14:427:17 | path | semmle.label | path | -| test.rs:427:14:427:25 | path.clone() | semmle.label | path.clone() | -| test.rs:427:14:427:35 | ... .as_path() | semmle.label | ... .as_path() | -| test.rs:437:14:437:17 | path | semmle.label | path | -| test.rs:439:13:439:21 | file_name | semmle.label | file_name | -| test.rs:439:25:439:37 | e.file_name() | semmle.label | e.file_name() | -| test.rs:439:27:439:35 | file_name | semmle.label | file_name | -| test.rs:440:14:440:22 | file_name | semmle.label | file_name | -| test.rs:440:14:440:30 | file_name.clone() | semmle.label | file_name.clone() | -| test.rs:445:14:445:22 | file_name | semmle.label | file_name | -| test.rs:461:13:461:18 | target | semmle.label | target | -| test.rs:461:22:461:34 | ...::read_link | semmle.label | ...::read_link | -| test.rs:461:22:461:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] | -| test.rs:461:22:461:50 | TryExpr | semmle.label | TryExpr | -| test.rs:462:14:462:19 | target | semmle.label | target | -| test.rs:470:13:470:18 | buffer | semmle.label | buffer | -| test.rs:470:31:470:45 | ...::read | semmle.label | ...::read | -| test.rs:470:31:470:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | -| test.rs:470:31:470:63 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:470:31:470:64 | TryExpr | semmle.label | TryExpr | -| test.rs:471:14:471:19 | buffer | semmle.label | buffer | -| test.rs:475:13:475:18 | buffer | semmle.label | buffer | -| test.rs:475:31:475:45 | ...::read | semmle.label | ...::read | -| test.rs:475:31:475:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | -| test.rs:475:31:475:63 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:475:31:475:64 | TryExpr | semmle.label | TryExpr | -| test.rs:476:14:476:19 | buffer | semmle.label | buffer | -| test.rs:480:13:480:18 | buffer | semmle.label | buffer | -| test.rs:480:22:480:46 | ...::read_to_string | semmle.label | ...::read_to_string | -| test.rs:480:22:480:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] | -| test.rs:480:22:480:64 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:480:22:480:65 | TryExpr | semmle.label | TryExpr | -| test.rs:481:14:481:19 | buffer | semmle.label | buffer | -| test.rs:486:13:486:16 | path | semmle.label | path | -| test.rs:486:20:486:31 | entry.path() | semmle.label | entry.path() | -| test.rs:486:26:486:29 | path | semmle.label | path | -| test.rs:486:26:486:29 | path | semmle.label | path | -| test.rs:487:13:487:21 | file_name | semmle.label | file_name | -| test.rs:487:25:487:41 | entry.file_name() | semmle.label | entry.file_name() | -| test.rs:487:31:487:39 | file_name | semmle.label | file_name | -| test.rs:487:31:487:39 | file_name | semmle.label | file_name | -| test.rs:488:14:488:17 | path | semmle.label | path | -| test.rs:489:14:489:22 | file_name | semmle.label | file_name | -| test.rs:493:13:493:18 | target | semmle.label | target | -| test.rs:493:22:493:41 | ...::read_link | semmle.label | ...::read_link | -| test.rs:493:22:493:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] | -| test.rs:493:22:493:62 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:493:22:493:63 | TryExpr | semmle.label | TryExpr | -| test.rs:494:14:494:19 | target | semmle.label | target | -| test.rs:503:9:503:16 | mut file | semmle.label | mut file | -| test.rs:503:20:503:38 | ...::open | semmle.label | ...::open | -| test.rs:503:20:503:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:503:20:503:51 | TryExpr | semmle.label | TryExpr | -| test.rs:507:32:507:42 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:507:32:507:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:507:37:507:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:508:14:508:20 | &buffer | semmle.label | &buffer | -| test.rs:508:15:508:20 | buffer | semmle.label | buffer | -| test.rs:513:39:513:49 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:513:39:513:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:513:44:513:49 | [post] buffer | semmle.label | [post] buffer | -| test.rs:514:14:514:20 | &buffer | semmle.label | &buffer | -| test.rs:514:15:514:20 | buffer | semmle.label | buffer | -| test.rs:519:42:519:52 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:519:42:519:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:519:47:519:52 | [post] buffer | semmle.label | [post] buffer | -| test.rs:520:14:520:20 | &buffer | semmle.label | &buffer | -| test.rs:520:15:520:20 | buffer | semmle.label | buffer | -| test.rs:525:25:525:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:525:30:525:35 | [post] buffer | semmle.label | [post] buffer | -| test.rs:526:14:526:20 | &buffer | semmle.label | &buffer | -| test.rs:526:15:526:20 | buffer | semmle.label | buffer | -| test.rs:529:17:529:28 | file.bytes() | semmle.label | file.bytes() | -| test.rs:530:14:530:17 | byte | semmle.label | byte | -| test.rs:536:13:536:18 | mut f1 | semmle.label | mut f1 | -| test.rs:536:22:536:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:536:22:536:72 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:536:50:536:53 | open | semmle.label | open | -| test.rs:538:30:538:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:538:30:538:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:538:35:538:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:539:14:539:20 | &buffer | semmle.label | &buffer | -| test.rs:539:15:539:20 | buffer | semmle.label | buffer | -| test.rs:543:13:543:18 | mut f2 | semmle.label | mut f2 | -| test.rs:543:22:543:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:543:22:543:89 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:543:67:543:70 | open | semmle.label | open | -| test.rs:545:30:545:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:545:30:545:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:545:35:545:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:546:14:546:20 | &buffer | semmle.label | &buffer | -| test.rs:546:15:546:20 | buffer | semmle.label | buffer | -| test.rs:550:13:550:18 | mut f3 | semmle.label | mut f3 | -| test.rs:550:22:550:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:550:22:550:123 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:550:101:550:104 | open | semmle.label | open | -| test.rs:552:30:552:40 | [post] &mut buffer | semmle.label | [post] &mut buffer | -| test.rs:552:30:552:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:552:35:552:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:553:14:553:20 | &buffer | semmle.label | &buffer | -| test.rs:553:15:553:20 | buffer | semmle.label | buffer | -| test.rs:560:13:560:17 | file1 | semmle.label | file1 | -| test.rs:560:21:560:39 | ...::open | semmle.label | ...::open | -| test.rs:560:21:560:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:560:21:560:52 | TryExpr | semmle.label | TryExpr | -| test.rs:561:13:561:17 | file2 | semmle.label | file2 | -| test.rs:561:21:561:39 | ...::open | semmle.label | ...::open | -| test.rs:561:21:561:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:561:21:561:60 | TryExpr | semmle.label | TryExpr | -| test.rs:562:13:562:22 | mut reader | semmle.label | mut reader | -| test.rs:562:26:562:43 | file1.chain(...) | semmle.label | file1.chain(...) | -| test.rs:562:38:562:42 | file2 | semmle.label | file2 | -| test.rs:563:31:563:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:563:36:563:41 | [post] buffer | semmle.label | [post] buffer | -| test.rs:564:14:564:20 | &buffer | semmle.label | &buffer | -| test.rs:564:15:564:20 | buffer | semmle.label | buffer | -| test.rs:569:13:569:17 | file1 | semmle.label | file1 | -| test.rs:569:21:569:39 | ...::open | semmle.label | ...::open | -| test.rs:569:21:569:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:569:21:569:52 | TryExpr | semmle.label | TryExpr | -| test.rs:570:13:570:22 | mut reader | semmle.label | mut reader | -| test.rs:570:26:570:40 | file1.take(...) | semmle.label | file1.take(...) | -| test.rs:571:31:571:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:571:36:571:41 | [post] buffer | semmle.label | [post] buffer | -| test.rs:572:14:572:20 | &buffer | semmle.label | &buffer | -| test.rs:572:15:572:20 | buffer | semmle.label | buffer | -| test.rs:581:9:581:16 | mut file | semmle.label | mut file | -| test.rs:581:20:581:40 | ...::open | semmle.label | ...::open | -| test.rs:581:20:581:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | -| test.rs:581:20:581:58 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:581:20:581:59 | TryExpr | semmle.label | TryExpr | -| test.rs:585:32:585:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:585:37:585:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:586:14:586:20 | &buffer | semmle.label | &buffer | -| test.rs:586:15:586:20 | buffer | semmle.label | buffer | -| test.rs:591:39:591:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:591:44:591:49 | [post] buffer | semmle.label | [post] buffer | -| test.rs:592:14:592:20 | &buffer | semmle.label | &buffer | -| test.rs:592:15:592:20 | buffer | semmle.label | buffer | -| test.rs:597:42:597:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:597:47:597:52 | [post] buffer | semmle.label | [post] buffer | -| test.rs:598:14:598:20 | &buffer | semmle.label | &buffer | -| test.rs:598:15:598:20 | buffer | semmle.label | buffer | -| test.rs:603:25:603:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:603:30:603:35 | [post] buffer | semmle.label | [post] buffer | -| test.rs:604:14:604:20 | &buffer | semmle.label | &buffer | -| test.rs:604:15:604:20 | buffer | semmle.label | buffer | -| test.rs:608:13:608:14 | v1 | semmle.label | v1 | -| test.rs:608:18:608:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] | -| test.rs:608:18:608:37 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:608:18:608:38 | TryExpr | semmle.label | TryExpr | -| test.rs:609:13:609:14 | v2 | semmle.label | v2 | -| test.rs:609:18:609:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] | -| test.rs:609:18:609:38 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:609:18:609:39 | TryExpr | semmle.label | TryExpr | -| test.rs:610:13:610:14 | v3 | semmle.label | v3 | -| test.rs:610:18:610:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] | -| test.rs:610:18:610:38 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:610:18:610:39 | TryExpr | semmle.label | TryExpr | -| test.rs:611:13:611:14 | v4 | semmle.label | v4 | -| test.rs:611:18:611:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] | -| test.rs:611:18:611:41 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:611:18:611:42 | TryExpr | semmle.label | TryExpr | -| test.rs:612:14:612:15 | v1 | semmle.label | v1 | -| test.rs:613:14:613:15 | v2 | semmle.label | v2 | -| test.rs:614:14:614:15 | v3 | semmle.label | v3 | -| test.rs:615:14:615:15 | v4 | semmle.label | v4 | -| test.rs:620:23:620:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:620:28:620:33 | [post] buffer | semmle.label | [post] buffer | -| test.rs:621:14:621:20 | &buffer | semmle.label | &buffer | -| test.rs:621:15:621:20 | buffer | semmle.label | buffer | -| test.rs:627:13:627:18 | mut f1 | semmle.label | mut f1 | -| test.rs:627:22:627:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | -| test.rs:627:22:627:71 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:627:22:627:72 | TryExpr | semmle.label | TryExpr | -| test.rs:627:52:627:55 | open | semmle.label | open | -| test.rs:629:30:629:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:629:35:629:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:630:14:630:20 | &buffer | semmle.label | &buffer | -| test.rs:630:15:630:20 | buffer | semmle.label | buffer | -| test.rs:660:9:660:16 | mut file | semmle.label | mut file | -| test.rs:660:20:660:44 | ...::open | semmle.label | ...::open | -| test.rs:660:20:660:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | -| test.rs:660:20:660:62 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:660:20:660:63 | TryExpr | semmle.label | TryExpr | -| test.rs:664:22:664:25 | file | semmle.label | file | -| test.rs:664:32:664:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:664:37:664:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:665:14:665:20 | &buffer | semmle.label | &buffer | -| test.rs:665:15:665:20 | buffer | semmle.label | buffer | -| test.rs:671:13:671:18 | mut f1 | semmle.label | mut f1 | -| test.rs:671:22:671:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | -| test.rs:671:22:671:75 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:671:22:671:76 | TryExpr | semmle.label | TryExpr | -| test.rs:671:56:671:59 | open | semmle.label | open | -| test.rs:673:22:673:23 | f1 | semmle.label | f1 | -| test.rs:673:30:673:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:673:35:673:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:674:14:674:20 | &buffer | semmle.label | &buffer | -| test.rs:674:15:674:20 | buffer | semmle.label | buffer | -| test.rs:688:13:688:22 | mut stream | semmle.label | mut stream | -| test.rs:688:26:688:53 | ...::connect | semmle.label | ...::connect | -| test.rs:688:26:688:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | -| test.rs:688:26:688:63 | TryExpr | semmle.label | TryExpr | -| test.rs:695:29:695:39 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:695:34:695:39 | [post] buffer | semmle.label | [post] buffer | -| test.rs:698:14:698:20 | &buffer | semmle.label | &buffer | -| test.rs:698:15:698:20 | buffer | semmle.label | buffer | -| test.rs:699:14:699:22 | buffer[0] | semmle.label | buffer[0] | -| test.rs:707:13:707:22 | mut stream | semmle.label | mut stream | -| test.rs:707:26:707:61 | ...::connect_timeout | semmle.label | ...::connect_timeout | -| test.rs:707:26:707:105 | ...::connect_timeout(...) [Ok] | semmle.label | ...::connect_timeout(...) [Ok] | -| test.rs:707:26:707:106 | TryExpr | semmle.label | TryExpr | -| test.rs:715:21:715:30 | mut reader | semmle.label | mut reader | -| test.rs:715:34:715:64 | ...::new(...) | semmle.label | ...::new(...) | -| test.rs:715:34:715:74 | ... .take(...) | semmle.label | ... .take(...) | -| test.rs:715:58:715:63 | stream | semmle.label | stream | -| test.rs:718:44:718:52 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test.rs:718:49:718:52 | [post] line | semmle.label | [post] line | -| test.rs:725:34:725:38 | &line | semmle.label | &line | -| test.rs:725:35:725:38 | line | semmle.label | line | -| test.rs:759:9:759:24 | mut tokio_stream | semmle.label | mut tokio_stream | -| test.rs:759:28:759:57 | ...::connect | semmle.label | ...::connect | -| test.rs:759:28:759:66 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | -| test.rs:759:28:759:72 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:759:28:759:73 | TryExpr | semmle.label | TryExpr | -| test.rs:767:35:767:46 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test.rs:767:40:767:46 | [post] buffer1 | semmle.label | [post] buffer1 | -| test.rs:771:36:771:47 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test.rs:771:41:771:47 | [post] buffer2 | semmle.label | [post] buffer2 | -| test.rs:774:14:774:21 | &buffer1 | semmle.label | &buffer1 | -| test.rs:774:15:774:21 | buffer1 | semmle.label | buffer1 | -| test.rs:775:14:775:23 | buffer1[0] | semmle.label | buffer1[0] | -| test.rs:778:14:778:21 | &buffer2 | semmle.label | &buffer2 | -| test.rs:778:15:778:21 | buffer2 | semmle.label | buffer2 | -| test.rs:779:14:779:23 | buffer2[0] | semmle.label | buffer2[0] | -| test.rs:787:41:787:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:787:46:787:51 | [post] buffer | semmle.label | [post] buffer | -| test.rs:794:26:794:32 | &buffer | semmle.label | &buffer | -| test.rs:794:27:794:32 | buffer | semmle.label | buffer | -| test.rs:810:45:810:55 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:810:50:810:55 | [post] buffer | semmle.label | [post] buffer | -| test.rs:817:26:817:32 | &buffer | semmle.label | &buffer | -| test.rs:817:27:817:32 | buffer | semmle.label | buffer | -| test.rs:905:13:905:14 | v1 | semmle.label | v1 | -| test.rs:905:24:905:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | -| test.rs:905:24:905:42 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:905:28:905:30 | get | semmle.label | get | -| test.rs:906:14:906:15 | v1 | semmle.label | v1 | -| test.rs:908:13:908:14 | v2 | semmle.label | v2 | -| test.rs:908:24:908:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | -| test.rs:908:24:908:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | -| test.rs:908:24:908:55 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:908:28:908:34 | get_opt | semmle.label | get_opt | -| test.rs:909:14:909:15 | v2 | semmle.label | v2 | -| test.rs:911:13:911:14 | v3 | semmle.label | v3 | -| test.rs:911:24:911:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | -| test.rs:911:24:911:43 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:911:28:911:31 | take | semmle.label | take | -| test.rs:912:14:912:15 | v3 | semmle.label | v3 | -| test.rs:914:13:914:14 | v4 | semmle.label | v4 | -| test.rs:914:24:914:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | -| test.rs:914:24:914:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | -| test.rs:914:24:914:56 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:914:28:914:35 | take_opt | semmle.label | take_opt | -| test.rs:915:14:915:15 | v4 | semmle.label | v4 | -| test.rs:924:13:924:14 | v6 | semmle.label | v6 | -| test.rs:924:23:924:63 | conn.query_first(...) [Ok, Some] | semmle.label | conn.query_first(...) [Ok, Some] | -| test.rs:924:23:924:64 | TryExpr [Some] | semmle.label | TryExpr [Some] | -| test.rs:924:23:924:73 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:924:28:924:38 | query_first | semmle.label | query_first | -| test.rs:925:14:925:15 | v6 | semmle.label | v6 | -| test.rs:927:13:927:18 | mut t1 [element] | semmle.label | mut t1 [element] | -| test.rs:927:22:927:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | -| test.rs:927:22:927:72 | TryExpr [element] | semmle.label | TryExpr [element] | -| test.rs:927:27:927:35 | exec_iter | semmle.label | exec_iter | -| test.rs:928:14:928:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | -| test.rs:928:14:928:70 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:928:42:928:44 | get | semmle.label | get | -| test.rs:929:13:929:15 | row | semmle.label | row | -| test.rs:929:20:929:21 | t1 [element] | semmle.label | t1 [element] | -| test.rs:931:22:931:22 | v | semmle.label | v | -| test.rs:935:22:935:30 | query_map | semmle.label | query_map | -| test.rs:937:14:937:24 | ...: i64 | semmle.label | ...: i64 | -| test.rs:938:22:938:27 | values | semmle.label | values | -| test.rs:951:13:951:17 | total | semmle.label | total | -| test.rs:951:21:954:10 | conn.query_fold(...) [Ok] | semmle.label | conn.query_fold(...) [Ok] | -| test.rs:951:21:954:11 | TryExpr | semmle.label | TryExpr | -| test.rs:951:26:951:35 | query_fold | semmle.label | query_fold | -| test.rs:951:76:951:83 | ...: i64 | semmle.label | ...: i64 | -| test.rs:951:86:954:9 | { ... } | semmle.label | { ... } | -| test.rs:952:18:952:20 | row | semmle.label | row | -| test.rs:953:13:953:21 | ... + ... | semmle.label | ... + ... | -| test.rs:953:19:953:21 | row | semmle.label | row | -| test.rs:955:14:955:18 | total | semmle.label | total | -| test.rs:992:13:992:14 | v1 | semmle.label | v1 | -| test.rs:992:24:992:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | -| test.rs:992:24:992:42 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:992:28:992:30 | get | semmle.label | get | -| test.rs:993:14:993:15 | v1 | semmle.label | v1 | -| test.rs:995:13:995:14 | v2 | semmle.label | v2 | -| test.rs:995:24:995:37 | row.get_opt(...) [Some, Ok] | semmle.label | row.get_opt(...) [Some, Ok] | -| test.rs:995:24:995:46 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | -| test.rs:995:24:995:55 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:995:28:995:34 | get_opt | semmle.label | get_opt | -| test.rs:996:14:996:15 | v2 | semmle.label | v2 | -| test.rs:998:13:998:14 | v3 | semmle.label | v3 | -| test.rs:998:24:998:34 | row.take(...) [Some] | semmle.label | row.take(...) [Some] | -| test.rs:998:24:998:43 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:998:28:998:31 | take | semmle.label | take | -| test.rs:999:14:999:15 | v3 | semmle.label | v3 | -| test.rs:1001:13:1001:14 | v4 | semmle.label | v4 | -| test.rs:1001:24:1001:38 | row.take_opt(...) [Some, Ok] | semmle.label | row.take_opt(...) [Some, Ok] | -| test.rs:1001:24:1001:47 | ... .unwrap() [Ok] | semmle.label | ... .unwrap() [Ok] | -| test.rs:1001:24:1001:56 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:1001:28:1001:35 | take_opt | semmle.label | take_opt | -| test.rs:1002:14:1002:15 | v4 | semmle.label | v4 | -| test.rs:1022:22:1022:30 | query_map | semmle.label | query_map | -| test.rs:1024:14:1024:24 | ...: i64 | semmle.label | ...: i64 | -| test.rs:1025:22:1025:27 | values | semmle.label | values | -| test.rs:1038:13:1038:17 | total | semmle.label | total | -| test.rs:1038:21:1041:10 | conn.query_fold(...) [future, Ok] | semmle.label | conn.query_fold(...) [future, Ok] | -| test.rs:1038:21:1041:16 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:1038:21:1041:17 | TryExpr | semmle.label | TryExpr | -| test.rs:1038:26:1038:35 | query_fold | semmle.label | query_fold | -| test.rs:1038:76:1038:83 | ...: i64 | semmle.label | ...: i64 | -| test.rs:1038:86:1041:9 | { ... } | semmle.label | { ... } | -| test.rs:1039:18:1039:20 | row | semmle.label | row | -| test.rs:1040:13:1040:21 | ... + ... | semmle.label | ... + ... | -| test.rs:1040:19:1040:21 | row | semmle.label | row | -| test.rs:1042:14:1042:18 | total | semmle.label | total | -| test_futures_io.rs:19:9:19:11 | tcp | semmle.label | tcp | -| test_futures_io.rs:19:15:19:32 | ...::connect | semmle.label | ...::connect | -| test_futures_io.rs:19:15:19:37 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | -| test_futures_io.rs:19:15:19:43 | await ... [Ok] | semmle.label | await ... [Ok] | -| test_futures_io.rs:19:15:19:44 | TryExpr | semmle.label | TryExpr | -| test_futures_io.rs:20:10:20:13 | &tcp | semmle.label | &tcp | -| test_futures_io.rs:20:11:20:13 | tcp | semmle.label | tcp | -| test_futures_io.rs:26:9:26:18 | mut reader | semmle.label | mut reader | -| test_futures_io.rs:26:22:26:56 | connector.connect(...) [future, Ok] | semmle.label | connector.connect(...) [future, Ok] | -| test_futures_io.rs:26:22:26:62 | await ... [Ok] | semmle.label | await ... [Ok] | -| test_futures_io.rs:26:22:26:63 | TryExpr | semmle.label | TryExpr | -| test_futures_io.rs:26:53:26:55 | tcp | semmle.label | tcp | -| test_futures_io.rs:27:10:27:16 | &reader | semmle.label | &reader | -| test_futures_io.rs:27:11:27:16 | reader | semmle.label | reader | -| test_futures_io.rs:32:13:32:22 | mut pinned | semmle.label | mut pinned | -| test_futures_io.rs:32:13:32:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | -| test_futures_io.rs:32:26:32:46 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:32:26:32:46 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| test_futures_io.rs:32:35:32:45 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test_futures_io.rs:32:40:32:45 | reader | semmle.label | reader | -| test_futures_io.rs:33:14:33:20 | &pinned | semmle.label | &pinned | -| test_futures_io.rs:33:15:33:20 | pinned | semmle.label | pinned | -| test_futures_io.rs:33:15:33:20 | pinned [&ref] | semmle.label | pinned [&ref] | -| test_futures_io.rs:45:59:45:69 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | -| test_futures_io.rs:45:64:45:69 | reader | semmle.label | reader | -| test_futures_io.rs:45:72:45:83 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test_futures_io.rs:45:77:45:83 | [post] buffer1 | semmle.label | [post] buffer1 | -| test_futures_io.rs:46:14:46:36 | &... | semmle.label | &... | -| test_futures_io.rs:46:15:46:36 | buffer1[...] | semmle.label | buffer1[...] | -| test_futures_io.rs:49:27:49:32 | reader | semmle.label | reader | -| test_futures_io.rs:49:39:49:50 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test_futures_io.rs:49:44:49:50 | [post] buffer2 | semmle.label | [post] buffer2 | -| test_futures_io.rs:51:14:51:36 | &... | semmle.label | &... | -| test_futures_io.rs:51:15:51:36 | buffer2[...] | semmle.label | buffer2[...] | -| test_futures_io.rs:54:9:54:19 | mut reader2 | semmle.label | mut reader2 | -| test_futures_io.rs:54:23:54:57 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:54:51:54:56 | reader | semmle.label | reader | -| test_futures_io.rs:55:10:55:17 | &reader2 | semmle.label | &reader2 | -| test_futures_io.rs:55:11:55:17 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:59:13:59:22 | mut pinned | semmle.label | mut pinned | -| test_futures_io.rs:59:13:59:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | -| test_futures_io.rs:59:26:59:47 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:59:26:59:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| test_futures_io.rs:59:35:59:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test_futures_io.rs:59:40:59:46 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:60:14:60:20 | &pinned | semmle.label | &pinned | -| test_futures_io.rs:60:15:60:20 | pinned | semmle.label | pinned | -| test_futures_io.rs:60:15:60:20 | pinned [&ref] | semmle.label | pinned [&ref] | -| test_futures_io.rs:62:13:62:18 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test_futures_io.rs:62:22:62:50 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test_futures_io.rs:63:16:63:35 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test_futures_io.rs:63:28:63:34 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test_futures_io.rs:63:31:63:33 | buf | semmle.label | buf | -| test_futures_io.rs:64:18:64:24 | &buffer | semmle.label | &buffer | -| test_futures_io.rs:64:19:64:24 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test_futures_io.rs:65:18:65:20 | buf | semmle.label | buf | -| test_futures_io.rs:69:13:69:19 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test_futures_io.rs:69:23:69:44 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:69:23:69:44 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| test_futures_io.rs:69:23:69:67 | ... .poll_fill_buf(...) [Ready, Ok] | semmle.label | ... .poll_fill_buf(...) [Ready, Ok] | -| test_futures_io.rs:69:32:69:43 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test_futures_io.rs:69:37:69:43 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:70:16:70:22 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test_futures_io.rs:71:13:71:32 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test_futures_io.rs:71:25:71:31 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test_futures_io.rs:71:28:71:30 | buf | semmle.label | buf | -| test_futures_io.rs:72:22:72:29 | &buffer2 | semmle.label | &buffer2 | -| test_futures_io.rs:72:23:72:29 | buffer2 [Ready, Ok] | semmle.label | buffer2 [Ready, Ok] | -| test_futures_io.rs:73:22:73:24 | buf | semmle.label | buf | -| test_futures_io.rs:83:13:83:18 | buffer | semmle.label | buffer | -| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test_futures_io.rs:83:22:83:45 | await ... [Ok] | semmle.label | await ... [Ok] | -| test_futures_io.rs:83:22:83:46 | TryExpr | semmle.label | TryExpr | -| test_futures_io.rs:84:14:84:19 | buffer | semmle.label | buffer | -| test_futures_io.rs:90:13:90:22 | mut pinned | semmle.label | mut pinned | -| test_futures_io.rs:90:13:90:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | -| test_futures_io.rs:90:26:90:47 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:90:26:90:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| test_futures_io.rs:90:35:90:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test_futures_io.rs:90:40:90:46 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:91:14:91:20 | &pinned | semmle.label | &pinned | -| test_futures_io.rs:91:15:91:20 | pinned | semmle.label | pinned | -| test_futures_io.rs:91:15:91:20 | pinned [&ref] | semmle.label | pinned [&ref] | -| test_futures_io.rs:103:59:103:70 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test_futures_io.rs:103:64:103:70 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:103:73:103:84 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | -| test_futures_io.rs:103:78:103:84 | [post] buffer1 | semmle.label | [post] buffer1 | -| test_futures_io.rs:104:14:104:36 | &... | semmle.label | &... | -| test_futures_io.rs:104:15:104:36 | buffer1[...] | semmle.label | buffer1[...] | -| test_futures_io.rs:107:27:107:33 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:107:40:107:51 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | -| test_futures_io.rs:107:45:107:51 | [post] buffer2 | semmle.label | [post] buffer2 | -| test_futures_io.rs:108:14:108:36 | &... | semmle.label | &... | -| test_futures_io.rs:108:15:108:36 | buffer2[...] | semmle.label | buffer2[...] | -| test_futures_io.rs:113:13:113:22 | mut pinned | semmle.label | mut pinned | -| test_futures_io.rs:113:13:113:22 | mut pinned [&ref] | semmle.label | mut pinned [&ref] | -| test_futures_io.rs:113:26:113:47 | ...::new(...) | semmle.label | ...::new(...) | -| test_futures_io.rs:113:26:113:47 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| test_futures_io.rs:113:35:113:46 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | -| test_futures_io.rs:113:40:113:46 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:114:14:114:20 | &pinned | semmle.label | &pinned | -| test_futures_io.rs:114:15:114:20 | pinned | semmle.label | pinned | -| test_futures_io.rs:114:15:114:20 | pinned [&ref] | semmle.label | pinned [&ref] | -| test_futures_io.rs:116:13:116:18 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test_futures_io.rs:116:22:116:50 | pinned.poll_fill_buf(...) [Ready, Ok] | semmle.label | pinned.poll_fill_buf(...) [Ready, Ok] | -| test_futures_io.rs:117:14:117:20 | &buffer | semmle.label | &buffer | -| test_futures_io.rs:117:15:117:20 | buffer [Ready, Ok] | semmle.label | buffer [Ready, Ok] | -| test_futures_io.rs:118:16:118:35 | ...::Ready(...) [Ready, Ok] | semmle.label | ...::Ready(...) [Ready, Ok] | -| test_futures_io.rs:118:28:118:34 | Ok(...) [Ok] | semmle.label | Ok(...) [Ok] | -| test_futures_io.rs:118:31:118:33 | buf | semmle.label | buf | -| test_futures_io.rs:119:18:119:20 | buf | semmle.label | buf | -| test_futures_io.rs:125:13:125:18 | buffer | semmle.label | buffer | -| test_futures_io.rs:125:22:125:39 | reader2.fill_buf() [future, Ok] | semmle.label | reader2.fill_buf() [future, Ok] | -| test_futures_io.rs:125:22:125:45 | await ... [Ok] | semmle.label | await ... [Ok] | -| test_futures_io.rs:125:22:125:46 | TryExpr | semmle.label | TryExpr | -| test_futures_io.rs:126:14:126:19 | buffer | semmle.label | buffer | -| test_futures_io.rs:132:27:132:33 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:132:53:132:61 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test_futures_io.rs:132:58:132:61 | [post] line | semmle.label | [post] line | -| test_futures_io.rs:133:14:133:18 | &line | semmle.label | &line | -| test_futures_io.rs:133:15:133:18 | line | semmle.label | line | -| test_futures_io.rs:139:27:139:33 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:139:45:139:53 | [post] &mut line [&ref] | semmle.label | [post] &mut line [&ref] | -| test_futures_io.rs:139:50:139:53 | [post] line | semmle.label | [post] line | -| test_futures_io.rs:140:14:140:18 | &line | semmle.label | &line | -| test_futures_io.rs:140:15:140:18 | line | semmle.label | line | -| test_futures_io.rs:146:27:146:33 | reader2 | semmle.label | reader2 | -| test_futures_io.rs:146:47:146:57 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test_futures_io.rs:146:52:146:57 | [post] buffer | semmle.label | [post] buffer | -| test_futures_io.rs:147:14:147:20 | &buffer | semmle.label | &buffer | -| test_futures_io.rs:147:15:147:20 | buffer | semmle.label | buffer | -| web_frameworks.rs:11:31:11:31 | a | semmle.label | a | -| web_frameworks.rs:11:31:11:31 | a | semmle.label | a | -| web_frameworks.rs:13:14:13:14 | a | semmle.label | a | -| web_frameworks.rs:13:14:13:14 | a | semmle.label | a | -| web_frameworks.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | -| web_frameworks.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | -| web_frameworks.rs:14:14:14:14 | a | semmle.label | a | -| web_frameworks.rs:14:14:14:14 | a | semmle.label | a | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| web_frameworks.rs:15:14:15:14 | a | semmle.label | a | -| web_frameworks.rs:15:14:15:14 | a | semmle.label | a | -| web_frameworks.rs:68:15:68:15 | a | semmle.label | a | -| web_frameworks.rs:68:15:68:15 | a | semmle.label | a | -| web_frameworks.rs:70:14:70:14 | a | semmle.label | a | -| web_frameworks.rs:70:14:70:14 | a | semmle.label | a | -| web_frameworks.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | -| web_frameworks.rs:100:13:100:13 | a | semmle.label | a | -| web_frameworks.rs:100:13:100:13 | a [tuple.0] | semmle.label | a [tuple.0] | -| web_frameworks.rs:100:13:100:13 | a [tuple.1] | semmle.label | a [tuple.1] | -| web_frameworks.rs:100:13:100:13 | a [tuple.2] | semmle.label | a [tuple.2] | -| web_frameworks.rs:100:13:100:13 | a [tuple.3] | semmle.label | a [tuple.3] | -| web_frameworks.rs:100:17:100:33 | path.into_inner() | semmle.label | path.into_inner() | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | -| web_frameworks.rs:100:17:100:33 | path.into_inner() [tuple.3] | semmle.label | path.into_inner() [tuple.3] | -| web_frameworks.rs:101:14:101:14 | a | semmle.label | a | -| web_frameworks.rs:101:14:101:14 | a [tuple.0] | semmle.label | a [tuple.0] | -| web_frameworks.rs:101:14:101:14 | a [tuple.1] | semmle.label | a [tuple.1] | -| web_frameworks.rs:101:14:101:14 | a [tuple.2] | semmle.label | a [tuple.2] | -| web_frameworks.rs:101:14:101:14 | a [tuple.3] | semmle.label | a [tuple.3] | -| web_frameworks.rs:101:14:101:23 | a.as_str() | semmle.label | a.as_str() | -| web_frameworks.rs:102:14:102:14 | a | semmle.label | a | -| web_frameworks.rs:102:14:102:14 | a [tuple.0] | semmle.label | a [tuple.0] | -| web_frameworks.rs:102:14:102:14 | a [tuple.1] | semmle.label | a [tuple.1] | -| web_frameworks.rs:102:14:102:14 | a [tuple.2] | semmle.label | a [tuple.2] | -| web_frameworks.rs:102:14:102:14 | a [tuple.3] | semmle.label | a [tuple.3] | -| web_frameworks.rs:102:14:102:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| web_frameworks.rs:103:14:103:14 | a | semmle.label | a | -| web_frameworks.rs:109:9:109:41 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | -| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | -| web_frameworks.rs:111:13:111:18 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | -| web_frameworks.rs:111:14:111:14 | a | semmle.label | a | -| web_frameworks.rs:111:17:111:17 | b | semmle.label | b | -| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | -| web_frameworks.rs:111:22:111:38 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | -| web_frameworks.rs:113:14:113:14 | a | semmle.label | a | -| web_frameworks.rs:114:14:114:14 | b | semmle.label | b | -| web_frameworks.rs:127:5:127:20 | to | semmle.label | to | -| web_frameworks.rs:129:9:129:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | -| web_frameworks.rs:131:13:131:13 | a | semmle.label | a | -| web_frameworks.rs:131:13:131:13 | a [tuple.0] | semmle.label | a [tuple.0] | -| web_frameworks.rs:131:13:131:13 | a [tuple.1] | semmle.label | a [tuple.1] | -| web_frameworks.rs:131:13:131:13 | a [tuple.2] | semmle.label | a [tuple.2] | -| web_frameworks.rs:131:13:131:13 | a [tuple.3] | semmle.label | a [tuple.3] | -| web_frameworks.rs:131:17:131:33 | path.into_inner() | semmle.label | path.into_inner() | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.0] | semmle.label | path.into_inner() [tuple.0] | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.1] | semmle.label | path.into_inner() [tuple.1] | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.2] | semmle.label | path.into_inner() [tuple.2] | -| web_frameworks.rs:131:17:131:33 | path.into_inner() [tuple.3] | semmle.label | path.into_inner() [tuple.3] | -| web_frameworks.rs:132:14:132:14 | a | semmle.label | a | -| web_frameworks.rs:139:41:139:42 | to | semmle.label | to | -| web_frameworks.rs:140:45:140:46 | to | semmle.label | to | -| web_frameworks.rs:242:33:242:35 | map | semmle.label | map | -| web_frameworks.rs:242:33:242:35 | map | semmle.label | map | -| web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:242:38:242:46 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:244:18:244:18 | a | semmle.label | a | -| web_frameworks.rs:244:18:244:18 | a | semmle.label | a | -| web_frameworks.rs:250:46:250:49 | then | semmle.label | then | -| web_frameworks.rs:250:46:250:49 | then | semmle.label | then | -| web_frameworks.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:252:22:252:22 | a | semmle.label | a | -| web_frameworks.rs:252:22:252:22 | a | semmle.label | a | -| web_frameworks.rs:259:50:259:57 | and_then | semmle.label | and_then | -| web_frameworks.rs:259:50:259:57 | and_then | semmle.label | and_then | -| web_frameworks.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| web_frameworks.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | -| web_frameworks.rs:263:22:263:23 | id | semmle.label | id | -| web_frameworks.rs:263:22:263:23 | id | semmle.label | id | -| web_frameworks.rs:272:75:272:77 | map | semmle.label | map | -| web_frameworks.rs:272:75:272:77 | map | semmle.label | map | -| web_frameworks.rs:273:15:273:23 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:273:15:273:23 | ...: String | semmle.label | ...: String | -| web_frameworks.rs:275:22:275:22 | a | semmle.label | a | -| web_frameworks.rs:275:22:275:22 | a | semmle.label | a | -subpaths -testFailures -#select -| test.rs:8:10:8:30 | ...::var(...) | test.rs:8:10:8:22 | ...::var | test.rs:8:10:8:30 | ...::var(...) | $@ | test.rs:8:10:8:22 | ...::var | ...::var | -| test.rs:9:10:9:33 | ...::var_os(...) | test.rs:9:10:9:25 | ...::var_os | test.rs:9:10:9:33 | ...::var_os(...) | $@ | test.rs:9:10:9:25 | ...::var_os | ...::var_os | -| test.rs:14:10:14:13 | var1 | test.rs:11:16:11:28 | ...::var | test.rs:14:10:14:13 | var1 | $@ | test.rs:11:16:11:28 | ...::var | ...::var | -| test.rs:15:10:15:13 | var2 | test.rs:12:16:12:31 | ...::var_os | test.rs:15:10:15:13 | var2 | $@ | test.rs:12:16:12:31 | ...::var_os | ...::var_os | -| test.rs:36:10:36:16 | my_path | test.rs:29:29:29:42 | ...::args | test.rs:36:10:36:16 | my_path | $@ | test.rs:29:29:29:42 | ...::args | ...::args | -| test.rs:37:10:37:13 | arg1 | test.rs:29:29:29:42 | ...::args | test.rs:37:10:37:13 | arg1 | $@ | test.rs:29:29:29:42 | ...::args | ...::args | -| test.rs:38:10:38:13 | arg2 | test.rs:32:16:32:29 | ...::args | test.rs:38:10:38:13 | arg2 | $@ | test.rs:32:16:32:29 | ...::args | ...::args | -| test.rs:39:10:39:13 | arg3 | test.rs:33:16:33:32 | ...::args_os | test.rs:39:10:39:13 | arg3 | $@ | test.rs:33:16:33:32 | ...::args_os | ...::args_os | -| test.rs:40:10:40:13 | arg4 | test.rs:34:16:34:29 | ...::args | test.rs:40:10:40:13 | arg4 | $@ | test.rs:34:16:34:29 | ...::args | ...::args | -| test.rs:43:14:43:16 | arg | test.rs:42:16:42:29 | ...::args | test.rs:43:14:43:16 | arg | $@ | test.rs:42:16:42:29 | ...::args | ...::args | -| test.rs:47:14:47:16 | arg | test.rs:46:16:46:32 | ...::args_os | test.rs:47:14:47:16 | arg | $@ | test.rs:46:16:46:32 | ...::args_os | ...::args_os | -| test.rs:56:10:56:12 | dir | test.rs:52:15:52:35 | ...::current_dir | test.rs:56:10:56:12 | dir | $@ | test.rs:52:15:52:35 | ...::current_dir | ...::current_dir | -| test.rs:57:10:57:12 | exe | test.rs:53:15:53:35 | ...::current_exe | test.rs:57:10:57:12 | exe | $@ | test.rs:53:15:53:35 | ...::current_exe | ...::current_exe | -| test.rs:58:10:58:13 | home | test.rs:54:16:54:33 | ...::home_dir | test.rs:58:10:58:13 | home | $@ | test.rs:54:16:54:33 | ...::home_dir | ...::home_dir | -| test.rs:63:10:63:23 | remote_string1 | test.rs:62:26:62:47 | ...::get | test.rs:63:10:63:23 | remote_string1 | $@ | test.rs:62:26:62:47 | ...::get | ...::get | -| test.rs:66:10:66:23 | remote_string2 | test.rs:65:26:65:47 | ...::get | test.rs:66:10:66:23 | remote_string2 | $@ | test.rs:65:26:65:47 | ...::get | ...::get | -| test.rs:69:10:69:23 | remote_string3 | test.rs:68:26:68:47 | ...::get | test.rs:69:10:69:23 | remote_string3 | $@ | test.rs:68:26:68:47 | ...::get | ...::get | -| test.rs:72:10:72:23 | remote_string4 | test.rs:71:26:71:47 | ...::get | test.rs:72:10:72:23 | remote_string4 | $@ | test.rs:71:26:71:47 | ...::get | ...::get | -| test.rs:75:10:75:23 | remote_string5 | test.rs:74:26:74:37 | ...::get | test.rs:75:10:75:23 | remote_string5 | $@ | test.rs:74:26:74:37 | ...::get | ...::get | -| test.rs:78:10:78:23 | remote_string6 | test.rs:77:26:77:37 | ...::get | test.rs:78:10:78:23 | remote_string6 | $@ | test.rs:77:26:77:37 | ...::get | ...::get | -| test.rs:81:10:81:41 | ... .unwrap() | test.rs:80:24:80:35 | ...::get | test.rs:81:10:81:41 | ... .unwrap() | $@ | test.rs:80:24:80:35 | ...::get | ...::get | -| test.rs:83:14:83:18 | chunk | test.rs:80:24:80:35 | ...::get | test.rs:83:14:83:18 | chunk | $@ | test.rs:80:24:80:35 | ...::get | ...::get | -| test.rs:115:14:115:22 | &response | test.rs:114:31:114:42 | send_request | test.rs:115:14:115:22 | &response | $@ | test.rs:114:31:114:42 | send_request | send_request | -| test.rs:116:14:116:21 | response | test.rs:114:31:114:42 | send_request | test.rs:116:14:116:21 | response | $@ | test.rs:114:31:114:42 | send_request | send_request | -| test.rs:122:10:122:18 | &response | test.rs:121:31:121:42 | send_request | test.rs:122:10:122:18 | &response | $@ | test.rs:121:31:121:42 | send_request | send_request | -| test.rs:212:14:212:20 | &buffer | test.rs:211:22:211:35 | ...::stdin | test.rs:212:14:212:20 | &buffer | $@ | test.rs:211:22:211:35 | ...::stdin | ...::stdin | -| test.rs:218:14:218:20 | &buffer | test.rs:217:22:217:35 | ...::stdin | test.rs:218:14:218:20 | &buffer | $@ | test.rs:217:22:217:35 | ...::stdin | ...::stdin | -| test.rs:224:14:224:20 | &buffer | test.rs:223:22:223:35 | ...::stdin | test.rs:224:14:224:20 | &buffer | $@ | test.rs:223:22:223:35 | ...::stdin | ...::stdin | -| test.rs:230:14:230:20 | &buffer | test.rs:229:22:229:35 | ...::stdin | test.rs:230:14:230:20 | &buffer | $@ | test.rs:229:22:229:35 | ...::stdin | ...::stdin | -| test.rs:236:14:236:20 | &buffer | test.rs:235:9:235:22 | ...::stdin | test.rs:236:14:236:20 | &buffer | $@ | test.rs:235:9:235:22 | ...::stdin | ...::stdin | -| test.rs:240:14:240:17 | byte | test.rs:239:17:239:30 | ...::stdin | test.rs:240:14:240:17 | byte | $@ | test.rs:239:17:239:30 | ...::stdin | ...::stdin | -| test.rs:248:14:248:18 | &data | test.rs:246:50:246:63 | ...::stdin | test.rs:248:14:248:18 | &data | $@ | test.rs:246:50:246:63 | ...::stdin | ...::stdin | -| test.rs:254:14:254:18 | &data | test.rs:252:46:252:59 | ...::stdin | test.rs:254:14:254:18 | &data | $@ | test.rs:252:46:252:59 | ...::stdin | ...::stdin | -| test.rs:261:14:261:20 | &buffer | test.rs:259:50:259:63 | ...::stdin | test.rs:261:14:261:20 | &buffer | $@ | test.rs:259:50:259:63 | ...::stdin | ...::stdin | -| test.rs:268:14:268:20 | &buffer | test.rs:266:50:266:63 | ...::stdin | test.rs:268:14:268:20 | &buffer | $@ | test.rs:266:50:266:63 | ...::stdin | ...::stdin | -| test.rs:269:14:269:22 | buffer[0] | test.rs:266:50:266:63 | ...::stdin | test.rs:269:14:269:22 | buffer[0] | $@ | test.rs:266:50:266:63 | ...::stdin | ...::stdin | -| test.rs:274:14:274:50 | ... .unwrap() | test.rs:273:56:273:69 | ...::stdin | test.rs:274:14:274:50 | ... .unwrap() | $@ | test.rs:273:56:273:69 | ...::stdin | ...::stdin | -| test.rs:276:18:276:31 | chunk.unwrap() | test.rs:273:56:273:69 | ...::stdin | test.rs:276:18:276:31 | chunk.unwrap() | $@ | test.rs:273:56:273:69 | ...::stdin | ...::stdin | -| test.rs:283:18:283:21 | line | test.rs:281:46:281:59 | ...::stdin | test.rs:283:18:283:21 | line | $@ | test.rs:281:46:281:59 | ...::stdin | ...::stdin | -| test.rs:312:14:312:20 | &buffer | test.rs:309:25:309:40 | ...::stdin | test.rs:312:14:312:20 | &buffer | $@ | test.rs:309:25:309:40 | ...::stdin | ...::stdin | -| test.rs:319:14:319:20 | &buffer | test.rs:316:25:316:40 | ...::stdin | test.rs:319:14:319:20 | &buffer | $@ | test.rs:316:25:316:40 | ...::stdin | ...::stdin | -| test.rs:326:14:326:20 | &buffer | test.rs:323:25:323:40 | ...::stdin | test.rs:326:14:326:20 | &buffer | $@ | test.rs:323:25:323:40 | ...::stdin | ...::stdin | -| test.rs:333:14:333:20 | &buffer | test.rs:330:25:330:40 | ...::stdin | test.rs:333:14:333:20 | &buffer | $@ | test.rs:330:25:330:40 | ...::stdin | ...::stdin | -| test.rs:342:14:342:15 | v1 | test.rs:337:25:337:40 | ...::stdin | test.rs:342:14:342:15 | v1 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin | -| test.rs:343:14:343:15 | v2 | test.rs:337:25:337:40 | ...::stdin | test.rs:343:14:343:15 | v2 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin | -| test.rs:344:14:344:15 | v3 | test.rs:337:25:337:40 | ...::stdin | test.rs:344:14:344:15 | v3 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin | -| test.rs:345:14:345:15 | v4 | test.rs:337:25:337:40 | ...::stdin | test.rs:345:14:345:15 | v4 | $@ | test.rs:337:25:337:40 | ...::stdin | ...::stdin | -| test.rs:352:14:352:20 | &buffer | test.rs:349:25:349:40 | ...::stdin | test.rs:352:14:352:20 | &buffer | $@ | test.rs:349:25:349:40 | ...::stdin | ...::stdin | -| test.rs:360:14:360:18 | &data | test.rs:358:52:358:67 | ...::stdin | test.rs:360:14:360:18 | &data | $@ | test.rs:358:52:358:67 | ...::stdin | ...::stdin | -| test.rs:366:14:366:18 | &data | test.rs:364:48:364:63 | ...::stdin | test.rs:366:14:366:18 | &data | $@ | test.rs:364:48:364:63 | ...::stdin | ...::stdin | -| test.rs:373:14:373:20 | &buffer | test.rs:371:52:371:67 | ...::stdin | test.rs:373:14:373:20 | &buffer | $@ | test.rs:371:52:371:67 | ...::stdin | ...::stdin | -| test.rs:380:14:380:20 | &buffer | test.rs:378:52:378:67 | ...::stdin | test.rs:380:14:380:20 | &buffer | $@ | test.rs:378:52:378:67 | ...::stdin | ...::stdin | -| test.rs:381:14:381:22 | buffer[0] | test.rs:378:52:378:67 | ...::stdin | test.rs:381:14:381:22 | buffer[0] | $@ | test.rs:378:52:378:67 | ...::stdin | ...::stdin | -| test.rs:386:14:386:56 | ... .unwrap() | test.rs:385:58:385:73 | ...::stdin | test.rs:386:14:386:56 | ... .unwrap() | $@ | test.rs:385:58:385:73 | ...::stdin | ...::stdin | -| test.rs:388:18:388:22 | chunk | test.rs:385:58:385:73 | ...::stdin | test.rs:388:18:388:22 | chunk | $@ | test.rs:385:58:385:73 | ...::stdin | ...::stdin | -| test.rs:395:14:395:46 | ... .unwrap() | test.rs:393:48:393:63 | ...::stdin | test.rs:395:14:395:46 | ... .unwrap() | $@ | test.rs:393:48:393:63 | ...::stdin | ...::stdin | -| test.rs:397:18:397:21 | line | test.rs:393:48:393:63 | ...::stdin | test.rs:397:18:397:21 | line | $@ | test.rs:393:48:393:63 | ...::stdin | ...::stdin | -| test.rs:409:14:409:19 | buffer | test.rs:408:31:408:43 | ...::read | test.rs:409:14:409:19 | buffer | $@ | test.rs:408:31:408:43 | ...::read | ...::read | -| test.rs:414:14:414:19 | buffer | test.rs:413:31:413:38 | ...::read | test.rs:414:14:414:19 | buffer | $@ | test.rs:413:31:413:38 | ...::read | ...::read | -| test.rs:419:14:419:19 | buffer | test.rs:418:22:418:39 | ...::read_to_string | test.rs:419:14:419:19 | buffer | $@ | test.rs:418:22:418:39 | ...::read_to_string | ...::read_to_string | -| test.rs:426:14:426:25 | path.clone() | test.rs:425:22:425:25 | path | test.rs:426:14:426:25 | path.clone() | $@ | test.rs:425:22:425:25 | path | path | -| test.rs:427:14:427:35 | ... .as_path() | test.rs:425:22:425:25 | path | test.rs:427:14:427:35 | ... .as_path() | $@ | test.rs:425:22:425:25 | path | path | -| test.rs:437:14:437:17 | path | test.rs:425:22:425:25 | path | test.rs:437:14:437:17 | path | $@ | test.rs:425:22:425:25 | path | path | -| test.rs:440:14:440:30 | file_name.clone() | test.rs:439:27:439:35 | file_name | test.rs:440:14:440:30 | file_name.clone() | $@ | test.rs:439:27:439:35 | file_name | file_name | -| test.rs:445:14:445:22 | file_name | test.rs:439:27:439:35 | file_name | test.rs:445:14:445:22 | file_name | $@ | test.rs:439:27:439:35 | file_name | file_name | -| test.rs:462:14:462:19 | target | test.rs:461:22:461:34 | ...::read_link | test.rs:462:14:462:19 | target | $@ | test.rs:461:22:461:34 | ...::read_link | ...::read_link | -| test.rs:471:14:471:19 | buffer | test.rs:470:31:470:45 | ...::read | test.rs:471:14:471:19 | buffer | $@ | test.rs:470:31:470:45 | ...::read | ...::read | -| test.rs:476:14:476:19 | buffer | test.rs:475:31:475:45 | ...::read | test.rs:476:14:476:19 | buffer | $@ | test.rs:475:31:475:45 | ...::read | ...::read | -| test.rs:481:14:481:19 | buffer | test.rs:480:22:480:46 | ...::read_to_string | test.rs:481:14:481:19 | buffer | $@ | test.rs:480:22:480:46 | ...::read_to_string | ...::read_to_string | -| test.rs:488:14:488:17 | path | test.rs:486:26:486:29 | path | test.rs:488:14:488:17 | path | $@ | test.rs:486:26:486:29 | path | path | -| test.rs:488:14:488:17 | path | test.rs:486:26:486:29 | path | test.rs:488:14:488:17 | path | $@ | test.rs:486:26:486:29 | path | path | -| test.rs:489:14:489:22 | file_name | test.rs:487:31:487:39 | file_name | test.rs:489:14:489:22 | file_name | $@ | test.rs:487:31:487:39 | file_name | file_name | -| test.rs:489:14:489:22 | file_name | test.rs:487:31:487:39 | file_name | test.rs:489:14:489:22 | file_name | $@ | test.rs:487:31:487:39 | file_name | file_name | -| test.rs:494:14:494:19 | target | test.rs:493:22:493:41 | ...::read_link | test.rs:494:14:494:19 | target | $@ | test.rs:493:22:493:41 | ...::read_link | ...::read_link | -| test.rs:508:14:508:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:508:14:508:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open | -| test.rs:514:14:514:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:514:14:514:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open | -| test.rs:520:14:520:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:520:14:520:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open | -| test.rs:526:14:526:20 | &buffer | test.rs:503:20:503:38 | ...::open | test.rs:526:14:526:20 | &buffer | $@ | test.rs:503:20:503:38 | ...::open | ...::open | -| test.rs:530:14:530:17 | byte | test.rs:503:20:503:38 | ...::open | test.rs:530:14:530:17 | byte | $@ | test.rs:503:20:503:38 | ...::open | ...::open | -| test.rs:539:14:539:20 | &buffer | test.rs:536:50:536:53 | open | test.rs:539:14:539:20 | &buffer | $@ | test.rs:536:50:536:53 | open | open | -| test.rs:546:14:546:20 | &buffer | test.rs:543:67:543:70 | open | test.rs:546:14:546:20 | &buffer | $@ | test.rs:543:67:543:70 | open | open | -| test.rs:553:14:553:20 | &buffer | test.rs:550:101:550:104 | open | test.rs:553:14:553:20 | &buffer | $@ | test.rs:550:101:550:104 | open | open | -| test.rs:564:14:564:20 | &buffer | test.rs:560:21:560:39 | ...::open | test.rs:564:14:564:20 | &buffer | $@ | test.rs:560:21:560:39 | ...::open | ...::open | -| test.rs:564:14:564:20 | &buffer | test.rs:561:21:561:39 | ...::open | test.rs:564:14:564:20 | &buffer | $@ | test.rs:561:21:561:39 | ...::open | ...::open | -| test.rs:572:14:572:20 | &buffer | test.rs:569:21:569:39 | ...::open | test.rs:572:14:572:20 | &buffer | $@ | test.rs:569:21:569:39 | ...::open | ...::open | -| test.rs:586:14:586:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:586:14:586:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:592:14:592:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:592:14:592:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:598:14:598:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:598:14:598:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:604:14:604:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:604:14:604:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:612:14:612:15 | v1 | test.rs:581:20:581:40 | ...::open | test.rs:612:14:612:15 | v1 | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:613:14:613:15 | v2 | test.rs:581:20:581:40 | ...::open | test.rs:613:14:613:15 | v2 | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:614:14:614:15 | v3 | test.rs:581:20:581:40 | ...::open | test.rs:614:14:614:15 | v3 | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:615:14:615:15 | v4 | test.rs:581:20:581:40 | ...::open | test.rs:615:14:615:15 | v4 | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:621:14:621:20 | &buffer | test.rs:581:20:581:40 | ...::open | test.rs:621:14:621:20 | &buffer | $@ | test.rs:581:20:581:40 | ...::open | ...::open | -| test.rs:630:14:630:20 | &buffer | test.rs:627:52:627:55 | open | test.rs:630:14:630:20 | &buffer | $@ | test.rs:627:52:627:55 | open | open | -| test.rs:665:14:665:20 | &buffer | test.rs:660:20:660:44 | ...::open | test.rs:665:14:665:20 | &buffer | $@ | test.rs:660:20:660:44 | ...::open | ...::open | -| test.rs:674:14:674:20 | &buffer | test.rs:671:56:671:59 | open | test.rs:674:14:674:20 | &buffer | $@ | test.rs:671:56:671:59 | open | open | -| test.rs:698:14:698:20 | &buffer | test.rs:688:26:688:53 | ...::connect | test.rs:698:14:698:20 | &buffer | $@ | test.rs:688:26:688:53 | ...::connect | ...::connect | -| test.rs:699:14:699:22 | buffer[0] | test.rs:688:26:688:53 | ...::connect | test.rs:699:14:699:22 | buffer[0] | $@ | test.rs:688:26:688:53 | ...::connect | ...::connect | -| test.rs:725:34:725:38 | &line | test.rs:707:26:707:61 | ...::connect_timeout | test.rs:725:34:725:38 | &line | $@ | test.rs:707:26:707:61 | ...::connect_timeout | ...::connect_timeout | -| test.rs:774:14:774:21 | &buffer1 | test.rs:759:28:759:57 | ...::connect | test.rs:774:14:774:21 | &buffer1 | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:775:14:775:23 | buffer1[0] | test.rs:759:28:759:57 | ...::connect | test.rs:775:14:775:23 | buffer1[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:778:14:778:21 | &buffer2 | test.rs:759:28:759:57 | ...::connect | test.rs:778:14:778:21 | &buffer2 | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:779:14:779:23 | buffer2[0] | test.rs:759:28:759:57 | ...::connect | test.rs:779:14:779:23 | buffer2[0] | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:794:26:794:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:794:26:794:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:817:26:817:32 | &buffer | test.rs:759:28:759:57 | ...::connect | test.rs:817:26:817:32 | &buffer | $@ | test.rs:759:28:759:57 | ...::connect | ...::connect | -| test.rs:906:14:906:15 | v1 | test.rs:905:28:905:30 | get | test.rs:906:14:906:15 | v1 | $@ | test.rs:905:28:905:30 | get | get | -| test.rs:909:14:909:15 | v2 | test.rs:908:28:908:34 | get_opt | test.rs:909:14:909:15 | v2 | $@ | test.rs:908:28:908:34 | get_opt | get_opt | -| test.rs:912:14:912:15 | v3 | test.rs:911:28:911:31 | take | test.rs:912:14:912:15 | v3 | $@ | test.rs:911:28:911:31 | take | take | -| test.rs:915:14:915:15 | v4 | test.rs:914:28:914:35 | take_opt | test.rs:915:14:915:15 | v4 | $@ | test.rs:914:28:914:35 | take_opt | take_opt | -| test.rs:925:14:925:15 | v6 | test.rs:924:28:924:38 | query_first | test.rs:925:14:925:15 | v6 | $@ | test.rs:924:28:924:38 | query_first | query_first | -| test.rs:928:14:928:70 | ... .unwrap() | test.rs:928:42:928:44 | get | test.rs:928:14:928:70 | ... .unwrap() | $@ | test.rs:928:42:928:44 | get | get | -| test.rs:931:22:931:22 | v | test.rs:927:27:927:35 | exec_iter | test.rs:931:22:931:22 | v | $@ | test.rs:927:27:927:35 | exec_iter | exec_iter | -| test.rs:938:22:938:27 | values | test.rs:935:22:935:30 | query_map | test.rs:938:22:938:27 | values | $@ | test.rs:935:22:935:30 | query_map | query_map | -| test.rs:952:18:952:20 | row | test.rs:951:26:951:35 | query_fold | test.rs:952:18:952:20 | row | $@ | test.rs:951:26:951:35 | query_fold | query_fold | -| test.rs:955:14:955:18 | total | test.rs:951:26:951:35 | query_fold | test.rs:955:14:955:18 | total | $@ | test.rs:951:26:951:35 | query_fold | query_fold | -| test.rs:993:14:993:15 | v1 | test.rs:992:28:992:30 | get | test.rs:993:14:993:15 | v1 | $@ | test.rs:992:28:992:30 | get | get | -| test.rs:996:14:996:15 | v2 | test.rs:995:28:995:34 | get_opt | test.rs:996:14:996:15 | v2 | $@ | test.rs:995:28:995:34 | get_opt | get_opt | -| test.rs:999:14:999:15 | v3 | test.rs:998:28:998:31 | take | test.rs:999:14:999:15 | v3 | $@ | test.rs:998:28:998:31 | take | take | -| test.rs:1002:14:1002:15 | v4 | test.rs:1001:28:1001:35 | take_opt | test.rs:1002:14:1002:15 | v4 | $@ | test.rs:1001:28:1001:35 | take_opt | take_opt | -| test.rs:1025:22:1025:27 | values | test.rs:1022:22:1022:30 | query_map | test.rs:1025:22:1025:27 | values | $@ | test.rs:1022:22:1022:30 | query_map | query_map | -| test.rs:1039:18:1039:20 | row | test.rs:1038:26:1038:35 | query_fold | test.rs:1039:18:1039:20 | row | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | -| test.rs:1042:14:1042:18 | total | test.rs:1038:26:1038:35 | query_fold | test.rs:1042:14:1042:18 | total | $@ | test.rs:1038:26:1038:35 | query_fold | query_fold | -| test_futures_io.rs:20:10:20:13 | &tcp | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:20:10:20:13 | &tcp | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:27:10:27:16 | &reader | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:27:10:27:16 | &reader | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:33:14:33:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:33:14:33:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:46:14:46:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:46:14:46:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:51:14:51:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:51:14:51:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:55:10:55:17 | &reader2 | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:55:10:55:17 | &reader2 | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:60:14:60:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:60:14:60:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:64:18:64:24 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:64:18:64:24 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:65:18:65:20 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:65:18:65:20 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:72:22:72:29 | &buffer2 | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:72:22:72:29 | &buffer2 | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:73:22:73:24 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:73:22:73:24 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:84:14:84:19 | buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:84:14:84:19 | buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:91:14:91:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:91:14:91:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:104:14:104:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:104:14:104:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:108:14:108:36 | &... | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:108:14:108:36 | &... | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:114:14:114:20 | &pinned | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:114:14:114:20 | &pinned | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:117:14:117:20 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:117:14:117:20 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:119:18:119:20 | buf | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:119:18:119:20 | buf | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:126:14:126:19 | buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:126:14:126:19 | buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:133:14:133:18 | &line | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:133:14:133:18 | &line | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:140:14:140:18 | &line | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:140:14:140:18 | &line | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| test_futures_io.rs:147:14:147:20 | &buffer | test_futures_io.rs:19:15:19:32 | ...::connect | test_futures_io.rs:147:14:147:20 | &buffer | $@ | test_futures_io.rs:19:15:19:32 | ...::connect | ...::connect | -| web_frameworks.rs:13:14:13:23 | a.as_str() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:13:14:13:23 | a.as_str() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:13:14:13:23 | a.as_str() | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:14:14:14:25 | a.as_bytes() | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:14:14:14:25 | a.as_bytes() | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:15:14:15:14 | a | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:15:14:15:14 | a | web_frameworks.rs:11:31:11:31 | a | web_frameworks.rs:15:14:15:14 | a | $@ | web_frameworks.rs:11:31:11:31 | a | a | -| web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a | -| web_frameworks.rs:70:14:70:14 | a | web_frameworks.rs:68:15:68:15 | a | web_frameworks.rs:70:14:70:14 | a | $@ | web_frameworks.rs:68:15:68:15 | a | a | -| web_frameworks.rs:101:14:101:23 | a.as_str() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:101:14:101:23 | a.as_str() | $@ | web_frameworks.rs:139:41:139:42 | to | to | -| web_frameworks.rs:102:14:102:25 | a.as_bytes() | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:102:14:102:25 | a.as_bytes() | $@ | web_frameworks.rs:139:41:139:42 | to | to | -| web_frameworks.rs:103:14:103:14 | a | web_frameworks.rs:139:41:139:42 | to | web_frameworks.rs:103:14:103:14 | a | $@ | web_frameworks.rs:139:41:139:42 | to | to | -| web_frameworks.rs:113:14:113:14 | a | web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:113:14:113:14 | a | $@ | web_frameworks.rs:140:45:140:46 | to | to | -| web_frameworks.rs:114:14:114:14 | b | web_frameworks.rs:140:45:140:46 | to | web_frameworks.rs:114:14:114:14 | b | $@ | web_frameworks.rs:140:45:140:46 | to | to | -| web_frameworks.rs:132:14:132:14 | a | web_frameworks.rs:127:5:127:20 | to | web_frameworks.rs:132:14:132:14 | a | $@ | web_frameworks.rs:127:5:127:20 | to | to | -| web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | -| web_frameworks.rs:244:18:244:18 | a | web_frameworks.rs:242:33:242:35 | map | web_frameworks.rs:244:18:244:18 | a | $@ | web_frameworks.rs:242:33:242:35 | map | map | -| web_frameworks.rs:252:22:252:22 | a | web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:252:22:252:22 | a | $@ | web_frameworks.rs:250:46:250:49 | then | then | -| web_frameworks.rs:252:22:252:22 | a | web_frameworks.rs:250:46:250:49 | then | web_frameworks.rs:252:22:252:22 | a | $@ | web_frameworks.rs:250:46:250:49 | then | then | -| web_frameworks.rs:263:22:263:23 | id | web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:263:22:263:23 | id | $@ | web_frameworks.rs:259:50:259:57 | and_then | and_then | -| web_frameworks.rs:263:22:263:23 | id | web_frameworks.rs:259:50:259:57 | and_then | web_frameworks.rs:263:22:263:23 | id | $@ | web_frameworks.rs:259:50:259:57 | and_then | and_then | -| web_frameworks.rs:275:22:275:22 | a | web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:275:22:275:22 | a | $@ | web_frameworks.rs:272:75:272:77 | map | map | -| web_frameworks.rs:275:22:275:22 | a | web_frameworks.rs:272:75:272:77 | map | web_frameworks.rs:275:22:275:22 | a | $@ | web_frameworks.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected deleted file mode 100644 index dae82040c93..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ /dev/null @@ -1,223 +0,0 @@ -| test.rs:8:10:8:22 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:9:10:9:25 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:11:16:11:28 | ...::var | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:12:16:12:31 | ...::var_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:17:25:17:38 | ...::vars | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:22:25:22:41 | ...::vars_os | Flow source 'EnvironmentSource' of type environment (DEFAULT). | -| test.rs:29:29:29:42 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:32:16:32:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:33:16:33:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:34:16:34:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:42:16:42:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:46:16:46:32 | ...::args_os | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:52:15:52:35 | ...::current_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:53:15:53:35 | ...::current_exe | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:54:16:54:33 | ...::home_dir | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:62:26:62:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:65:26:65:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:68:26:68:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:71:26:71:47 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:74:26:74:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:77:26:77:37 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:80:24:80:35 | ...::get | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:99:18:99:47 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:114:31:114:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:121:31:121:42 | send_request | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:211:22:211:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:217:22:217:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:223:22:223:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:229:22:229:35 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:235:9:235:22 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:239:17:239:30 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:246:50:246:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:252:46:252:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:259:50:259:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:266:50:266:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:273:56:273:69 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:281:46:281:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:288:46:288:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:294:46:294:59 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:309:25:309:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:316:25:316:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:323:25:323:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:330:25:330:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:337:25:337:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:349:25:349:40 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:358:52:358:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:364:48:364:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:371:52:371:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:378:52:378:67 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:385:58:385:73 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:393:48:393:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | -| test.rs:408:31:408:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:408:31:408:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:413:31:413:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:413:31:413:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:418:22:418:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:418:22:418:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:425:22:425:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:439:27:439:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:450:22:450:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:451:27:451:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:461:22:461:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:470:31:470:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:475:31:475:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:480:22:480:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:486:26:486:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:486:26:486:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:487:31:487:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:487:31:487:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:493:22:493:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:503:20:503:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:536:50:536:53 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:543:67:543:70 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:550:101:550:104 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:560:21:560:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:561:21:561:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:569:21:569:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:581:20:581:40 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:627:52:627:55 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:637:21:637:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:638:21:638:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:646:21:646:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:660:20:660:44 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:671:56:671:59 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:688:26:688:53 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:707:26:707:61 | ...::connect_timeout | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:759:28:759:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:841:22:841:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:867:22:867:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:902:47:902:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:905:28:905:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:908:28:908:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:911:28:911:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:914:28:914:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:917:26:917:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:924:28:924:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:927:27:927:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:928:42:928:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:935:22:935:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:942:22:942:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:951:26:951:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:957:22:957:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:989:53:989:57 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:992:28:992:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:995:28:995:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:998:28:998:31 | take | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1001:28:1001:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1004:26:1004:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1011:28:1011:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1014:27:1014:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1022:22:1022:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1029:22:1029:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1038:26:1038:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1044:22:1044:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:1096:16:1096:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test_futures_io.rs:19:15:19:32 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:139:41:139:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:140:45:140:46 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:141:41:141:42 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| web_frameworks.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.qlref b/rust/ql/test/library-tests/dataflow/sources/TaintSources.qlref deleted file mode 100644 index 7aa95121af3..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.qlref +++ /dev/null @@ -1,2 +0,0 @@ -query: queries/summary/TaintSources.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml deleted file mode 100644 index 0572c34a19a..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ /dev/null @@ -1,6 +0,0 @@ -qltest_cargo_check: true -qltest_dependencies: - - http = { version = "1.2.0" } - - tokio = { version = "1.43.0", features = ["full"] } - - futures = { version = "0.3" } - - async-std = { version = "1.13.1" } From 4893f536072ac9b54e87e156bcf4d99f9bda9a2b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 08:13:27 +0100 Subject: [PATCH 247/965] Rust: Fix a comment. --- rust/ql/test/library-tests/dataflow/sources/net/test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 18188c375fc..c67434e3e44 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -298,7 +298,7 @@ async fn test_tokio_tcpstream(case: i64) -> std::io::Result<()> { } async fn test_std_to_tokio_tcpstream() -> std::io::Result<()> { - // using tokio::io to fetch a web page + // using std::net and tokio::net together to fetch a web page let address = "example.com:80"; // create the connection From 9b11ec53d4763447453d085c2aa61867ab69edc1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 08:31:18 +0100 Subject: [PATCH 248/965] Rust: Merge InlineFlow.ql test queries using .qlrefs. --- .../dataflow/sources/database/InlineFlow.ql | 36 ------------------- .../sources/database/InlineFlow.qlref | 2 ++ .../dataflow/sources/file/InlineFlow.ql | 36 ------------------- .../dataflow/sources/file/InlineFlow.qlref | 2 ++ .../dataflow/sources/net/InlineFlow.ql | 36 ------------------- .../dataflow/sources/net/InlineFlow.qlref | 2 ++ .../dataflow/sources/stdin/InlineFlow.ql | 36 ------------------- .../dataflow/sources/stdin/InlineFlow.qlref | 2 ++ .../sources/web_frameworks/InlineFlow.ql | 36 ------------------- .../sources/web_frameworks/InlineFlow.qlref | 2 ++ 10 files changed, 10 insertions(+), 180 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.qlref delete mode 100644 rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.qlref delete mode 100644 rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.qlref delete mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.qlref delete mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.qlref diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.qlref b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.qlref new file mode 100644 index 00000000000..e0f7493db39 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.qlref @@ -0,0 +1,2 @@ +query: ../env/InlineFlow.ql + diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.qlref b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.qlref new file mode 100644 index 00000000000..e0f7493db39 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.qlref @@ -0,0 +1,2 @@ +query: ../env/InlineFlow.ql + diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.qlref b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.qlref new file mode 100644 index 00000000000..e0f7493db39 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.qlref @@ -0,0 +1,2 @@ +query: ../env/InlineFlow.ql + diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.qlref b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.qlref new file mode 100644 index 00000000000..e0f7493db39 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.qlref @@ -0,0 +1,2 @@ +query: ../env/InlineFlow.ql + diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql deleted file mode 100644 index 09b4ab5bf90..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.ql +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @kind path-problem - */ - -import rust -import codeql.rust.dataflow.DataFlow -import codeql.rust.Concepts -import utils.test.InlineFlowTest - -/** - * Configuration for flow from any threat model source to an argument of the function `sink`. - */ -module MyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } - - predicate isSink(DataFlow::Node sink) { - any(CallExpr call | - call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() - } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { - // flow out from any content at the sink. - isSink(node) and - exists(c) - } -} - -module MyFlowTest = TaintFlowTest; - -import MyFlowTest -import PathGraph - -from PathNode source, PathNode sink -where flowPath(source, sink) -select sink, source, sink, "$@", source, source.toString() diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.qlref b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.qlref new file mode 100644 index 00000000000..e0f7493db39 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.qlref @@ -0,0 +1,2 @@ +query: ../env/InlineFlow.ql + From c44e6fc3f086d4e0f4f43bdc79ceb140daea34e3 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 22 Oct 2025 10:22:26 +0200 Subject: [PATCH 249/965] C#: Qldoc tweaks. --- .../lib/semmle/code/csharp/controlflow/ControlFlowElement.qll | 1 + .../ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll | 1 + csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll | 2 +- shared/controlflow/codeql/controlflow/Cfg.qll | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index ebb6ab1db53..5c8dcf099f8 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -42,6 +42,7 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { ControlFlow::Node getControlFlowNode() { result.getAstNode() = this } + /** Gets the basic block in which this element occurs. */ BasicBlock getBasicBlock() { result = this.getAControlFlowNode().getBasicBlock() } /** diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll index 3f2ef54f644..3534e4d2920 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -251,6 +251,7 @@ module ControlFlow { } } + /** A control flow node indicating normal termination of a callable. */ class NormalExitNode extends AnnotatedExitNode instanceof Impl::NormalExitNode { } /** A node for a callable exit point. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 1b527623db5..097f156275d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -118,7 +118,7 @@ private predicate nonNullDef(Ssa::ExplicitDefinition def) { } /** - * Holds if the `node` is a dereference `d` of SSA definition `def`. + * Holds if `node` is a dereference `d` of SSA definition `def`. */ private predicate dereferenceAt(ControlFlow::Node node, Ssa::Definition def, Dereference d) { d = def.getAReadAtNode(node) diff --git a/shared/controlflow/codeql/controlflow/Cfg.qll b/shared/controlflow/codeql/controlflow/Cfg.qll index 1a279c61fcf..62eebe8e183 100644 --- a/shared/controlflow/codeql/controlflow/Cfg.qll +++ b/shared/controlflow/codeql/controlflow/Cfg.qll @@ -1185,6 +1185,7 @@ module MakeWithSplitting< final class AnnotatedExitNode = AnnotatedExitNodeImpl; + /** A control flow node indicating normal termination of a callable. */ final class NormalExitNode extends AnnotatedExitNodeImpl { NormalExitNode() { this = TAnnotatedExitNode(_, true) } } From 2cc8b7f6dd26f3590880876683591404a3fa6f4f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 22 Oct 2025 11:07:20 +0200 Subject: [PATCH 250/965] Address review comments (iii) --- .../codeql/rust/internal/TypeInference.qll | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index c85a670e521..39c7bb4a75e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1066,7 +1066,7 @@ private module MethodResolution { } /** - * A method call. + * A (potential) method call. * * This is either: * @@ -1080,6 +1080,9 @@ private module MethodResolution { * * Note that only in case 1 and 2 is auto-dereferencing and borrowing allowed. * + * Note also that only case 4 is a _potential_ method call; in all other cases, we are + * guaranteed that the target is a method. + * * [1]: https://doc.rust-lang.org/std/ops/trait.Index.html */ abstract class MethodCall extends Expr { @@ -1137,10 +1140,6 @@ private module MethodResolution { private predicate hasIncompatibleTarget(ImplOrTraitItemNode i, string derefChain, boolean borrow) { ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, derefChain, borrow), i, _) - or - TypeQualifierIsInstantiationOfImplSelf::isNotInstantiationOf(this, i, _) and - derefChain = "" and - borrow = false } /** @@ -1168,8 +1167,6 @@ private module MethodResolution { // todo: also check that all blanket implementation candidates are incompatible forall(ImplOrTraitItemNode i | methodCallNonBlanketCandidate(this, _, i, _, strippedTypePath, strippedType) - or - this.(MethodCallCallExpr).hasTypeQualifiedCandidate(i) | this.hasIncompatibleTarget(i, derefChain, borrow) ) @@ -1312,7 +1309,7 @@ private module MethodResolution { * * When this is the case, we still want to check that the type qualifier * is an instance of the type being implemented, which is done in - * `MethodCallCallExprIsInstantiationOfInput`. + * `TypeQualifierIsInstantiationOfImplSelfInput`. */ pragma[nomagic] predicate hasTypeQualifiedCandidate(ImplItemNode impl) { @@ -1333,7 +1330,7 @@ private module MethodResolution { result = this.getArgList().getArg(pos.asPosition() + 1) } - // needed for `MethodCallCallExprIsInstantiationOfInput` + // needed for `TypeQualifierIsInstantiationOfImplSelfInput` Type getTypeAt(TypePath path) { result = substituteLookupTraits(getCallExprTypeQualifier(this, path)) } @@ -1558,8 +1555,8 @@ private module MethodResolution { /** * A configuration for matching the type qualifier of a method call * against the type being implemented in an `impl` block. For example, - * in `Q::m(x)`, we check that the type of `Q` is an instance of the - * type being implemented. + * in `Foo::::m(x)`, we check that the type `Foo` is an + * instance of the type being implemented. */ private module TypeQualifierIsInstantiationOfImplSelfInput implements IsInstantiationOfInputSig @@ -1909,7 +1906,7 @@ private module NonMethodResolution { private module BlanketTraitIsVisible = TraitIsVisible; - /** A non-method call, `f(x)`. */ + /** A (potential) non-method call, `f(x)`. */ final class NonMethodCall extends CallExpr { NonMethodCall() { // even if a function cannot be resolved by path resolution, it may still From d5ff9bf5d04348bd8eeed305f5f6f040a50281f1 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 22 Oct 2025 11:58:02 +0200 Subject: [PATCH 251/965] C#: Collapse tracer cases for csc, csc.exe and mcs.exe and remote quoting. --- csharp/tools/tracing-config.lua | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index 1bfa26ec20d..13ede12a237 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -221,12 +221,7 @@ function RegisterExtractorPack(id) } local posixMatchers = { DotnetMatcherBuild, - CreatePatternMatcher({ '^mcs%.exe$', '^csc%.exe$' }, MatchCompilerName, - extractor, { - prepend = { '--compiler', '"${compiler}"' }, - order = ORDER_BEFORE - }), - CreatePatternMatcher({ '^csc$' }, MatchCompilerName, + CreatePatternMatcher({ '^mcs%.exe$', '^csc%.exe$', '^csc$' }, MatchCompilerName, extractor, { prepend = { '--compiler', '${compiler}' }, order = ORDER_BEFORE From e14879ba336601259067290d4809a22f3a9d4339 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 22 Oct 2025 12:59:40 +0200 Subject: [PATCH 252/965] C#: Add integration test for DB creation using .NET 10 RC 2. --- .../all-platforms/dotnet_10_rc2/Program.cs | 1 + .../all-platforms/dotnet_10_rc2/dotnet_build.csproj | 10 ++++++++++ .../all-platforms/dotnet_10_rc2/global.json | 5 +++++ .../all-platforms/dotnet_10_rc2/test.py | 4 ++++ 4 files changed, 20 insertions(+) create mode 100644 csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs create mode 100644 csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj create mode 100644 csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json create mode 100644 csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs new file mode 100644 index 00000000000..bd44629f7e2 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs @@ -0,0 +1 @@ +Console.WriteLine($"{string.Join(",", args)}"); diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj new file mode 100644 index 00000000000..dfb40caafcf --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json new file mode 100644 index 00000000000..e870e2cf7bd --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "10.0.100-rc.2.25502.107" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py new file mode 100644 index 00000000000..a60901ae50d --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py @@ -0,0 +1,4 @@ +import os + +def test(codeql, csharp): + codeql.database.create(command="dotnet build") From 7a414089e47ba9d5def518b3476d62dc600eebe3 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 22 Oct 2025 13:25:23 +0200 Subject: [PATCH 253/965] C#: Use autobuilder instead of supplying build command. --- csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py index a60901ae50d..1a68835d29c 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py @@ -1,4 +1,4 @@ import os def test(codeql, csharp): - codeql.database.create(command="dotnet build") + codeql.database.create() From 7b6720ce2c68e2637ffbfba6971cca46acd2c45d Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 22 Oct 2025 11:30:34 +0000 Subject: [PATCH 254/965] JS: Align DOM XSS query severity with other XSS queries --- javascript/ql/src/Security/CWE-079/XssThroughDom.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ql/src/Security/CWE-079/XssThroughDom.ql b/javascript/ql/src/Security/CWE-079/XssThroughDom.ql index e690e2bab28..fb8f32cbaca 100644 --- a/javascript/ql/src/Security/CWE-079/XssThroughDom.ql +++ b/javascript/ql/src/Security/CWE-079/XssThroughDom.ql @@ -4,7 +4,7 @@ * can lead to a cross-site scripting vulnerability. * @kind path-problem * @problem.severity warning - * @security-severity 6.1 + * @security-severity 7.8 * @precision high * @id js/xss-through-dom * @tags security From fa471740138190d4ea96b4bcba6690a6ec5c3ac5 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 22 Oct 2025 11:32:33 +0000 Subject: [PATCH 255/965] CWE-020: Lower security-severity for OverlyLargeRange queries to 4.0 --- java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql | 2 +- javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql | 2 +- python/ql/src/Security/CWE-020/OverlyLargeRange.ql | 2 +- ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql b/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql index b8ea3e52dbd..5762785949e 100644 --- a/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql +++ b/java/ql/src/Security/CWE/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id java/overly-large-range * @tags correctness diff --git a/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql b/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql index 582a8975c8f..c5435e34758 100644 --- a/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql +++ b/javascript/ql/src/Security/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id js/overly-large-range * @tags correctness diff --git a/python/ql/src/Security/CWE-020/OverlyLargeRange.ql b/python/ql/src/Security/CWE-020/OverlyLargeRange.ql index 25acc667430..94bc74238bc 100644 --- a/python/ql/src/Security/CWE-020/OverlyLargeRange.ql +++ b/python/ql/src/Security/CWE-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id py/overly-large-range * @tags correctness diff --git a/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql b/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql index 62b088355b5..6f0f529a31d 100644 --- a/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql +++ b/ruby/ql/src/queries/security/cwe-020/OverlyLargeRange.ql @@ -4,7 +4,7 @@ * This may allow an attacker to bypass a filter or sanitizer. * @kind problem * @problem.severity warning - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id rb/overly-large-range * @tags correctness From 91b0aaa631216f4f5a39b7dee7e53f20f3fc2539 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 22 Oct 2025 11:33:23 +0000 Subject: [PATCH 256/965] Java: Lower security-severity for Insecure Cookie query to 4.0 --- java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql b/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql index b8d64d22e29..44107281feb 100644 --- a/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql +++ b/java/ql/src/Security/CWE/CWE-614/InsecureCookie.ql @@ -4,7 +4,7 @@ * interception. * @kind problem * @problem.severity error - * @security-severity 5.0 + * @security-severity 4.0 * @precision high * @id java/insecure-cookie * @tags security From 9c70ae04fbb111b64a950c64778f73ec6d02ce80 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Wed, 22 Oct 2025 11:48:16 +0000 Subject: [PATCH 257/965] Add change note --- java/ql/src/change-notes/2025-10-22-adjust-query-severity.md | 5 +++++ .../ql/src/change-notes/2025-10-22-adjust-query-severity.md | 5 +++++ .../ql/src/change-notes/2025-10-22-adjust-query-severity.md | 4 ++++ ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md | 4 ++++ 4 files changed, 18 insertions(+) create mode 100644 java/ql/src/change-notes/2025-10-22-adjust-query-severity.md create mode 100644 javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md create mode 100644 python/ql/src/change-notes/2025-10-22-adjust-query-severity.md create mode 100644 ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md diff --git a/java/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/java/ql/src/change-notes/2025-10-22-adjust-query-severity.md new file mode 100644 index 00000000000..61cc9402a78 --- /dev/null +++ b/java/ql/src/change-notes/2025-10-22-adjust-query-severity.md @@ -0,0 +1,5 @@ +--- +category: queryMetadata +--- +* Reduced the `security-severity` score of the `java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. +* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file diff --git a/javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md new file mode 100644 index 00000000000..ca81037f44b --- /dev/null +++ b/javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md @@ -0,0 +1,5 @@ +--- +category: queryMetadata +--- +* Increased the `security-severity` score of the `js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. +* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file diff --git a/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md new file mode 100644 index 00000000000..bc314358a6f --- /dev/null +++ b/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md new file mode 100644 index 00000000000..4da73769e27 --- /dev/null +++ b/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file From 47c751be327fd467030a2846c231a9bbd7b221b7 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 22 Oct 2025 14:06:37 +0200 Subject: [PATCH 258/965] C#: Only run integration test on windows and linux. --- .../{all-platforms => linux}/dotnet_10_rc2/Program.cs | 0 .../dotnet_10_rc2/dotnet_build.csproj | 0 .../{all-platforms => linux}/dotnet_10_rc2/global.json | 0 .../{all-platforms => linux}/dotnet_10_rc2/test.py | 2 ++ .../integration-tests/windows/dotnet_10_rc2/Program.cs | 1 + .../windows/dotnet_10_rc2/dotnet_build.csproj | 10 ++++++++++ .../windows/dotnet_10_rc2/global.json | 5 +++++ .../ql/integration-tests/windows/dotnet_10_rc2/test.py | 6 ++++++ 8 files changed, 24 insertions(+) rename csharp/ql/integration-tests/{all-platforms => linux}/dotnet_10_rc2/Program.cs (100%) rename csharp/ql/integration-tests/{all-platforms => linux}/dotnet_10_rc2/dotnet_build.csproj (100%) rename csharp/ql/integration-tests/{all-platforms => linux}/dotnet_10_rc2/global.json (100%) rename csharp/ql/integration-tests/{all-platforms => linux}/dotnet_10_rc2/test.py (68%) create mode 100644 csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs create mode 100644 csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj create mode 100644 csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json create mode 100644 csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs similarity index 100% rename from csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/Program.cs rename to csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj similarity index 100% rename from csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/dotnet_build.csproj rename to csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json similarity index 100% rename from csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/global.json rename to csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py similarity index 68% rename from csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py rename to csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py index 1a68835d29c..148626b1cb8 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10_rc2/test.py +++ b/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py @@ -1,4 +1,6 @@ import os +import runs_on +@runs_on.linux def test(codeql, csharp): codeql.database.create() diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs new file mode 100644 index 00000000000..bd44629f7e2 --- /dev/null +++ b/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs @@ -0,0 +1 @@ +Console.WriteLine($"{string.Join(",", args)}"); diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj new file mode 100644 index 00000000000..dfb40caafcf --- /dev/null +++ b/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json new file mode 100644 index 00000000000..e870e2cf7bd --- /dev/null +++ b/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "10.0.100-rc.2.25502.107" + } +} diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py new file mode 100644 index 00000000000..00905b67cd4 --- /dev/null +++ b/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py @@ -0,0 +1,6 @@ +import os +import runs_on + +@runs_on.windows +def test(codeql, csharp): + codeql.database.create() From 8336a956c01e9dc8208c3a7f963501d9745471a9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:50:49 +0100 Subject: [PATCH 259/965] Rust: Add consistency check failures. --- .../PathResolutionConsistency.expected | 3 +++ .../PathResolutionConsistency.expected | 3 +++ .../PathResolutionConsistency.expected | 17 +++++++++++++++++ .../PathResolutionConsistency.expected | 2 ++ .../PathResolutionConsistency.expected | 9 +++++++++ .../TypeInferenceConsistency.expected | 4 ++++ 6 files changed, 38 insertions(+) create mode 100644 rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..b6a4a56f9f7 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/database/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multiplePathResolutions +| test.rs:10:28:10:65 | Result::<...> | +| test.rs:97:40:97:49 | Result::<...> | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..134c5e70e5c --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleCallTargets +| test.rs:266:22:266:43 | file.read(...) | +| test.rs:275:22:275:41 | f1.read(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..f117431f873 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,17 @@ +multipleCallTargets +| test.rs:59:62:59:77 | ...::from(...) | +| test.rs:66:58:66:73 | ...::from(...) | +| test.rs:399:31:399:88 | ...::read(...) | +| test.rs:403:31:403:55 | reader.read(...) | +| test.rs:437:26:437:43 | reader2.fill_buf() | +| test.rs:457:31:457:89 | ...::read(...) | +| test.rs:461:31:461:56 | reader2.read(...) | +| test.rs:479:26:479:43 | reader2.fill_buf() | +| test.rs:486:31:486:66 | reader2.read_until(...) | +| test.rs:493:31:493:58 | reader2.read_line(...) | +| test.rs:500:31:500:62 | reader2.read_to_end(...) | +| test.rs:506:36:506:50 | reader2.lines() | +| test.rs:507:18:507:36 | lines_stream.next() | +| test.rs:508:36:508:54 | lines_stream.next() | +| test.rs:519:50:519:66 | ...::from(...) | +| test.rs:519:50:519:66 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..535b3f339b4 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| test.rs:31:22:31:72 | ... .read_to_string(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..b0e1a6e6344 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,9 @@ +multipleCallTargets +| test.rs:13:14:13:23 | a.as_str() | +| test.rs:13:14:13:23 | a.as_str() | +| test.rs:14:14:14:25 | a.as_bytes() | +| test.rs:14:14:14:25 | a.as_bytes() | +| test.rs:101:14:101:23 | a.as_str() | +| test.rs:102:14:102:25 | a.as_bytes() | +| test.rs:158:14:158:23 | a.as_str() | +| test.rs:159:14:159:25 | a.as_bytes() | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected new file mode 100644 index 00000000000..08edbe8c612 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/TypeInferenceConsistency.expected @@ -0,0 +1,4 @@ +nonUniqueCertainType +| test.rs:139:30:139:39 | ...::get(...) | | +| test.rs:140:34:140:43 | ...::get(...) | | +| test.rs:141:30:141:39 | ...::get(...) | | From 31627b4eb98ef7da64538c68310b48a8d4bd866a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 22 Oct 2025 14:54:37 +0200 Subject: [PATCH 260/965] Copilot: move instructions to path-specific files This is now supported. See https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions for details. --- .github/copilot-instructions.md | 4 ---- .github/instructions/expected-files.instructions.md | 4 ++++ .github/instructions/ql-files.instructions.md | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 .github/copilot-instructions.md create mode 100644 .github/instructions/expected-files.instructions.md create mode 100644 .github/instructions/ql-files.instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md deleted file mode 100644 index 6621d59b7c2..00000000000 --- a/.github/copilot-instructions.md +++ /dev/null @@ -1,4 +0,0 @@ -When reviewing code: -* do not review changes in files with `.expected` extension (they are automatically ensured to be correct). -* in `.ql` and `.qll` files, do not try to review the code itself as you don't understand the programming language - well enough to make comments in these languages. You can still check for typos or comment improvements. diff --git a/.github/instructions/expected-files.instructions.md b/.github/instructions/expected-files.instructions.md new file mode 100644 index 00000000000..915abde678f --- /dev/null +++ b/.github/instructions/expected-files.instructions.md @@ -0,0 +1,4 @@ +--- +applyTo: "**/*.expected" +--- +Ignore these files. These are generated to be correct by running the tests, and should not be edited by an agent. diff --git a/.github/instructions/ql-files.instructions.md b/.github/instructions/ql-files.instructions.md new file mode 100644 index 00000000000..4d331807e06 --- /dev/null +++ b/.github/instructions/ql-files.instructions.md @@ -0,0 +1,6 @@ +--- +applyTo: "**/*.ql,**/*.qll" +--- +When reviewing these QL files, do not make any comment on the code itself. You don't understand the QL programming language well enough yet. You can only make comments about the following aspects: +* comments (lines starting with `//` or block comments enclosed in `/* ... */`): you can suggest improvements to the clarity of comments, or point out spelling mistakes +* typos in identifiers From f0c56edfc7c52090a912d0afb3794499db7130c4 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 22 Oct 2025 15:14:51 +0200 Subject: [PATCH 261/965] Update .github/instructions/expected-files.instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/instructions/expected-files.instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/instructions/expected-files.instructions.md b/.github/instructions/expected-files.instructions.md index 915abde678f..b76119d7028 100644 --- a/.github/instructions/expected-files.instructions.md +++ b/.github/instructions/expected-files.instructions.md @@ -1,4 +1,4 @@ --- applyTo: "**/*.expected" --- -Ignore these files. These are generated to be correct by running the tests, and should not be edited by an agent. +Ignore these files. These are generated to be correct by running the tests, and should not be edited manually. From 6878a43223efba816e5440dad0c6d718d69148c1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 14:18:16 +0100 Subject: [PATCH 262/965] Rust: Add missing file. --- .../dataflow/sources/web_frameworks/options.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/options.yml diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/options.yml b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/options.yml new file mode 100644 index 00000000000..f13960c5c30 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/options.yml @@ -0,0 +1,9 @@ +qltest_cargo_check: true +qltest_dependencies: + - actix-web = { version = "4.10.2" } + - axum = { version = "0.8.4" } + - poem = { version = "3.1.10" } + - serde = { version = "1.0.219" } + - serde_json = { version = "1.0.140" } + - tokio = { version = "1.43.0", features = ["full"] } + - warp = { version = "0.4.2", features = ["server"] } From cf05414a930684d7bc0fcebded7ad05e8030e007 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 22 Oct 2025 15:29:57 +0200 Subject: [PATCH 263/965] Address review comments (iv) --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 2 +- .../lib/codeql/rust/internal/typeinference/FunctionType.qll | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 39c7bb4a75e..9130b2d351e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1381,7 +1381,7 @@ private module MethodResolution { exists(mc.getACandidateReceiverTypeAt(derefChain, borrow, _)) } - /** A method call tagged with a candidate receiver type. */ + /** A method call with a dereference chain and a potential borrow. */ private class MethodCallCand extends MkMethodCallCand { MethodCall mc_; string derefChain; diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index ceac4cbc590..d6cefdb1edc 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -77,7 +77,7 @@ private newtype TAssocFunctionType = exists(pos.getTypeMention(f)) } or MkInheritedAssocFunctionType( - Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, ImplOrTraitItemNode i ) { exists(AssocFunctionType inherited | @@ -132,7 +132,7 @@ class AssocFunctionType extends TAssocFunctionType { } private predicate isInheritedFunctionType( - Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, ImplOrTraitItemNode i ) { this = MkInheritedAssocFunctionType(f, pos, parentMention, parent, i) @@ -157,7 +157,7 @@ class AssocFunctionType extends TAssocFunctionType { ) or exists( - Function f, FunctionPosition pos, TypeMention parentMention, ImplOrTraitItemNode parent, + Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, AssocFunctionType parentType, ImplOrTraitItemNode i | this.isInheritedFunctionType(f, pos, parentMention, parent, i) and From f172e36eee159c371e842c315a36e28043a3755b Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 22 Oct 2025 15:50:10 +0200 Subject: [PATCH 264/965] C#: Address more review comments. --- .../lib/semmle/code/csharp/controlflow/ControlFlowElement.qll | 1 + csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index 5c8dcf099f8..784dab415f3 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -40,6 +40,7 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { */ Nodes::ElementNode getAControlFlowNode() { result.getAstNode() = this } + /** Gets the control flow node for this element. */ ControlFlow::Node getControlFlowNode() { result.getAstNode() = this } /** Gets the basic block in which this element occurs. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 097f156275d..0ea274be204 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -34,7 +34,7 @@ private Expr maybeNullExpr(Expr reason) { or result.(AssignExpr).getRValue() = maybeNullExpr(reason) or - result.(Cast).getExpr() = maybeNullExpr(reason) + result.(CastExpr).getExpr() = maybeNullExpr(reason) or result = any(ConditionalExpr ce | From 7d0e4f58f34eab00de6edaeb5b133f6434ad3f52 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 22 Oct 2025 15:52:51 +0200 Subject: [PATCH 265/965] C#: Fix join-order issue in ConstantCondition. --- .../Control-Flow/ConstantCondition.ql | 4 +++ .../controlflow/codeql/controlflow/Guards.qll | 1 + .../controlflow/queries/ConstantCondition.qll | 36 ++++++++++++++----- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index c1590d002e8..386b238e049 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -31,6 +31,10 @@ module ConstCondInput implements ConstCond::InputSig { Guards::Guards::ssaControlsBranchEdge(def, bb1, bb2, v) } + predicate ssaControls(SsaDefinition def, BasicBlock bb, GuardValue v) { + Guards::Guards::ssaControls(def, bb, v) + } + import Guards::Guards::InternalUtil } diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 959d78748db..8c65496dce5 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -975,6 +975,7 @@ module Make< * Holds if `def` evaluating to `v` controls the basic block `bb`. * That is, execution of `bb` implies that `def` evaluated to `v`. */ + pragma[nomagic] predicate ssaControls(SsaDefinition def, BasicBlock bb, GuardValue v) { exists(BasicBlock guard, BasicBlock succ | ssaControlsBranchEdge(def, guard, succ, v) and diff --git a/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll b/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll index ea1c5a424f8..d05f2df6eff 100644 --- a/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll +++ b/shared/controlflow/codeql/controlflow/queries/ConstantCondition.qll @@ -55,6 +55,12 @@ signature module InputSig { */ predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v); + /** + * Holds if `def` evaluating to `v` controls the basic block `bb`. + * That is, execution of `bb` implies that `def` evaluated to `v`. + */ + predicate ssaControls(SsaDefinition def, BasicBlock bb, GuardValue v); + bindingset[gv1, gv2] predicate disjointValues(GuardValue gv1, GuardValue gv2); } @@ -70,23 +76,35 @@ module Make Cfg, InputSig Date: Wed, 22 Oct 2025 10:29:31 -0400 Subject: [PATCH 266/965] Crypto: Adjust output of bad mac order queries, update associated bad mac order expected results, fix erroneous change to ID for a slicing query, update model to specify elliptic curve type as a property, update associated graph test expected files, update the not_included_in_qls.expected to reflect all queries now under quantum. --- .../query-suite/not_included_in_qls.expected | 18 ++++++++++++++---- .../Examples/BadMacOrderDecryptToMac.ql | 2 +- .../BadMacOrderMacOnEncryptPlaintext.ql | 2 +- .../UnknownOperationAlgorithm.ql | 2 +- .../quantum/node_properties.expected | 16 ++++++++++++++++ .../BadMacUse/BadMacOrderDecryptToMac.expected | 4 ++-- .../BadMacOrderMacOnEncryptPlaintext.expected | 18 +++++++++--------- .../codeql/quantum/experimental/Model.qll | 4 ++++ 8 files changed, 48 insertions(+), 18 deletions(-) diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 1aa63644947..8670493799f 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -228,14 +228,24 @@ ql/java/ql/src/experimental/Security/CWE/CWE-665/InsecureRmiJmxEnvironmentConfig ql/java/ql/src/experimental/Security/CWE/CWE-755/NFEAndroidDoS.ql ql/java/ql/src/experimental/Security/CWE/CWE-759/HashWithoutSalt.ql ql/java/ql/src/experimental/Security/CWE/CWE-939/IncorrectURLVerification.ql -ql/java/ql/src/experimental/quantum/Analysis/InsecureNonceSource.ql -ql/java/ql/src/experimental/quantum/Analysis/KnownWeakKDFIterationCount.ql -ql/java/ql/src/experimental/quantum/Analysis/ReusedNonce.ql -ql/java/ql/src/experimental/quantum/Analysis/UnknownKDFIterationCount.ql +ql/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +ql/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql ql/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql +ql/java/ql/src/experimental/quantum/Examples/InsecInseInsecureIVorNonceSource.ql +ql/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql ql/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql ql/java/ql/src/experimental/quantum/Examples/TestCipher.ql ql/java/ql/src/experimental/quantum/Examples/TestHash.ql +ql/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql +ql/java/ql/src/experimental/quantum/Examples/UnknownHash.ql +ql/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql +ql/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql +ql/java/ql/src/experimental/quantum/Examples/WeakAsymmetricKeyGenSize.ql +ql/java/ql/src/experimental/quantum/Examples/WeakBlockModes.ql +ql/java/ql/src/experimental/quantum/Examples/WeakHash.ql +ql/java/ql/src/experimental/quantum/Examples/WeakKDFIterationCount.ql +ql/java/ql/src/experimental/quantum/Examples/WeakKDFKeySize.ql +ql/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.ql ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricAlgorithm.ql ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricCipherAlgorithm.ql ql/java/ql/src/experimental/quantum/InventorySlices/KnownAsymmetricOperationAlgorithm.ql diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql index 85b34a926a6..fb9d8795b4d 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql @@ -15,4 +15,4 @@ import BadMacOrder from ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink where isDecryptToMacFlow(src, sink) select sink, src, sink, - "MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher." + "Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input." diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index 741a969605e..b3ff84b091a 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -17,5 +17,5 @@ from PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg where isPlaintextInEncryptionAndMac(src, sink, arg) select sink, src, sink, - "Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@", + "Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@", arg.asExpr(), arg.asExpr().toString() diff --git a/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql b/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql index 08f6cae731f..8469924a850 100644 --- a/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql +++ b/java/ql/src/experimental/quantum/InventorySlices/UnknownOperationAlgorithm.ql @@ -1,7 +1,7 @@ /** * @name Operations with unknown algorithm * @description Outputs operations where the algorithm applied is unknown - * @id java/quantum/examples/slices/operation-with-unknown-algorithm + * @id java/quantum/slices/operation-with-unknown-algorithm * @kind problem * @severity info * @tags quantum diff --git a/java/ql/test/experimental/library-tests/quantum/node_properties.expected b/java/ql/test/experimental/library-tests/quantum/node_properties.expected index 3fa66c61629..20c7276cc4f 100644 --- a/java/ql/test/experimental/library-tests/quantum/node_properties.expected +++ b/java/ql/test/experimental/library-tests/quantum/node_properties.expected @@ -82,6 +82,7 @@ | jca/AesWrapAndPBEWith.java:178:29:178:64 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/AesWrapAndPBEWith.java:178:29:178:64 | jca/AesWrapAndPBEWith.java:178:29:178:64 | | jca/AesWrapAndPBEWith.java:200:55:200:69 | Parameter | Description | password | jca/AesWrapAndPBEWith.java:200:55:200:69 | jca/AesWrapAndPBEWith.java:200:55:200:69 | | jca/AesWrapAndPBEWith.java:200:72:200:87 | Parameter | Description | plaintext | jca/AesWrapAndPBEWith.java:200:72:200:87 | jca/AesWrapAndPBEWith.java:200:72:200:87 | +| jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | CurveType | SEC | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | KeySize | 256 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | Name | secp256r1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | EllipticCurve | ParsedName | secp256r1 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | jca/AsymmetricEncryptionMacHybridCryptosystem.java:86:47:86:57 | @@ -371,16 +372,19 @@ | jca/Digest.java:240:21:240:23 | Constant | Description | 256 | jca/Digest.java:240:21:240:23 | jca/Digest.java:240:21:240:23 | | jca/Digest.java:241:16:241:35 | Key | KeyType | Symmetric | jca/Digest.java:241:16:241:35 | jca/Digest.java:241:16:241:35 | | jca/Digest.java:253:38:253:41 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Digest.java:253:38:253:41 | jca/Digest.java:253:38:253:41 | +| jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | KeySize | 256 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | Name | secp256r1 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | ParsedName | secp256r1 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:46:66:46:76 | EllipticCurve | RawName | secp256r1 | jca/EllipticCurve1.java:46:66:46:76 | jca/EllipticCurve1.java:46:66:46:76 | | jca/EllipticCurve1.java:47:16:47:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:47:16:47:36 | jca/EllipticCurve1.java:47:16:47:36 | +| jca/EllipticCurve1.java:56:66:56:76 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:56:66:56:76 | jca/EllipticCurve1.java:56:66:56:76 | | jca/EllipticCurve1.java:56:66:56:76 | EllipticCurve | KeySize | 256 | jca/EllipticCurve1.java:56:66:56:76 | jca/EllipticCurve1.java:56:66:56:76 | | jca/EllipticCurve1.java:56:66:56:76 | EllipticCurve | Name | secp256k1 | jca/EllipticCurve1.java:56:66:56:76 | jca/EllipticCurve1.java:56:66:56:76 | | jca/EllipticCurve1.java:56:66:56:76 | EllipticCurve | ParsedName | secp256k1 | jca/EllipticCurve1.java:56:66:56:76 | jca/EllipticCurve1.java:56:66:56:76 | | jca/EllipticCurve1.java:56:66:56:76 | EllipticCurve | RawName | secp256k1 | jca/EllipticCurve1.java:56:66:56:76 | jca/EllipticCurve1.java:56:66:56:76 | | jca/EllipticCurve1.java:57:16:57:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:57:16:57:36 | jca/EllipticCurve1.java:57:16:57:36 | +| jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | CurveType | BRAINPOOL | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | KeySize | 256 | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | Name | brainpoolP256r1 | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | | jca/EllipticCurve1.java:66:66:66:82 | EllipticCurve | ParsedName | brainpoolP256r1 | jca/EllipticCurve1.java:66:66:66:82 | jca/EllipticCurve1.java:66:66:66:82 | @@ -392,6 +396,7 @@ | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | Name | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | | jca/EllipticCurve1.java:83:61:83:66 | KeyAgreementAlgorithm | RawName | X448 | jca/EllipticCurve1.java:83:61:83:66 | jca/EllipticCurve1.java:83:61:83:66 | | jca/EllipticCurve1.java:84:16:84:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:84:16:84:36 | jca/EllipticCurve1.java:84:16:84:36 | +| jca/EllipticCurve1.java:94:66:94:76 | EllipticCurve | CurveType | SEC | jca/EllipticCurve1.java:94:66:94:76 | jca/EllipticCurve1.java:94:66:94:76 | | jca/EllipticCurve1.java:94:66:94:76 | EllipticCurve | KeySize | 163 | jca/EllipticCurve1.java:94:66:94:76 | jca/EllipticCurve1.java:94:66:94:76 | | jca/EllipticCurve1.java:94:66:94:76 | EllipticCurve | Name | sect163r2 | jca/EllipticCurve1.java:94:66:94:76 | jca/EllipticCurve1.java:94:66:94:76 | | jca/EllipticCurve1.java:94:66:94:76 | EllipticCurve | ParsedName | sect163r2 | jca/EllipticCurve1.java:94:66:94:76 | jca/EllipticCurve1.java:94:66:94:76 | @@ -402,16 +407,19 @@ | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | Name | EDSA | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:114:61:114:69 | KeyOperationAlgorithm | RawName | Ed25519 | jca/EllipticCurve1.java:114:61:114:69 | jca/EllipticCurve1.java:114:61:114:69 | | jca/EllipticCurve1.java:115:16:115:36 | Key | KeyType | Asymmetric | jca/EllipticCurve1.java:115:16:115:36 | jca/EllipticCurve1.java:115:16:115:36 | +| jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | CurveType | SEC | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | KeySize | 256 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | Name | secp256r1 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | ParsedName | secp256r1 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:46:47:46:57 | EllipticCurve | RawName | secp256r1 | jca/EllipticCurve2.java:46:47:46:57 | jca/EllipticCurve2.java:46:47:46:57 | | jca/EllipticCurve2.java:47:16:47:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:47:16:47:36 | jca/EllipticCurve2.java:47:16:47:36 | +| jca/EllipticCurve2.java:55:47:55:57 | EllipticCurve | CurveType | SEC | jca/EllipticCurve2.java:55:47:55:57 | jca/EllipticCurve2.java:55:47:55:57 | | jca/EllipticCurve2.java:55:47:55:57 | EllipticCurve | KeySize | 256 | jca/EllipticCurve2.java:55:47:55:57 | jca/EllipticCurve2.java:55:47:55:57 | | jca/EllipticCurve2.java:55:47:55:57 | EllipticCurve | Name | secp256k1 | jca/EllipticCurve2.java:55:47:55:57 | jca/EllipticCurve2.java:55:47:55:57 | | jca/EllipticCurve2.java:55:47:55:57 | EllipticCurve | ParsedName | secp256k1 | jca/EllipticCurve2.java:55:47:55:57 | jca/EllipticCurve2.java:55:47:55:57 | | jca/EllipticCurve2.java:55:47:55:57 | EllipticCurve | RawName | secp256k1 | jca/EllipticCurve2.java:55:47:55:57 | jca/EllipticCurve2.java:55:47:55:57 | | jca/EllipticCurve2.java:56:16:56:36 | Key | KeyType | Asymmetric | jca/EllipticCurve2.java:56:16:56:36 | jca/EllipticCurve2.java:56:16:56:36 | +| jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | CurveType | BRAINPOOL | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | KeySize | 256 | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | Name | brainpoolP256r1 | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | | jca/EllipticCurve2.java:64:47:64:63 | EllipticCurve | ParsedName | brainpoolP256r1 | jca/EllipticCurve2.java:64:47:64:63 | jca/EllipticCurve2.java:64:47:64:63 | @@ -578,6 +586,7 @@ | jca/Encryption1.java:173:38:173:39 | RandomNumberGeneration | Description | java.security.SecureRandom | jca/Encryption1.java:173:38:173:39 | jca/Encryption1.java:173:38:173:39 | | jca/Encryption1.java:175:45:175:50 | Key | KeyType | Unknown | jca/Encryption1.java:175:45:175:50 | jca/Encryption1.java:175:45:175:50 | | jca/Encryption1.java:176:32:176:65 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/Encryption1.java:176:32:176:65 | jca/Encryption1.java:176:32:176:65 | +| jca/Encryption2.java:55:60:55:70 | EllipticCurve | CurveType | SEC | jca/Encryption2.java:55:60:55:70 | jca/Encryption2.java:55:60:55:70 | | jca/Encryption2.java:55:60:55:70 | EllipticCurve | KeySize | 256 | jca/Encryption2.java:55:60:55:70 | jca/Encryption2.java:55:60:55:70 | | jca/Encryption2.java:55:60:55:70 | EllipticCurve | Name | secp256r1 | jca/Encryption2.java:55:60:55:70 | jca/Encryption2.java:55:60:55:70 | | jca/Encryption2.java:55:60:55:70 | EllipticCurve | ParsedName | secp256r1 | jca/Encryption2.java:55:60:55:70 | jca/Encryption2.java:55:60:55:70 | @@ -847,6 +856,7 @@ | jca/IVArtifact.java:275:34:275:46 | Constant | Description | "Message One" | jca/IVArtifact.java:275:34:275:46 | jca/IVArtifact.java:275:34:275:46 | | jca/IVArtifact.java:275:60:275:72 | Constant | Description | "Message Two" | jca/IVArtifact.java:275:60:275:72 | jca/IVArtifact.java:275:60:275:72 | | jca/IVArtifact.java:275:86:275:100 | Constant | Description | "Message Three" | jca/IVArtifact.java:275:86:275:100 | jca/IVArtifact.java:275:86:275:100 | +| jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | CurveType | SEC | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | KeySize | 256 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | Name | secp256r1 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | EllipticCurve | ParsedName | secp256r1 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | jca/KeyAgreementHybridCryptosystem.java:50:47:50:57 | @@ -1158,6 +1168,7 @@ | jca/KeyEncapsulation.java:92:47:92:85 | PaddingAlgorithm | RawName | OAEPWithSHA-256AndMGF1Padding | jca/KeyEncapsulation.java:92:47:92:85 | jca/KeyEncapsulation.java:92:47:92:85 | | jca/KeyEncapsulation.java:93:45:93:51 | Key | KeyType | Unknown | jca/KeyEncapsulation.java:93:45:93:51 | jca/KeyEncapsulation.java:93:45:93:51 | | jca/KeyEncapsulation.java:94:30:94:58 | DecryptOperation | KeyOperationSubtype | Decrypt | jca/KeyEncapsulation.java:94:30:94:58 | jca/KeyEncapsulation.java:94:30:94:58 | +| jca/KeyEncapsulation.java:117:47:117:57 | EllipticCurve | CurveType | SEC | jca/KeyEncapsulation.java:117:47:117:57 | jca/KeyEncapsulation.java:117:47:117:57 | | jca/KeyEncapsulation.java:117:47:117:57 | EllipticCurve | KeySize | 256 | jca/KeyEncapsulation.java:117:47:117:57 | jca/KeyEncapsulation.java:117:47:117:57 | | jca/KeyEncapsulation.java:117:47:117:57 | EllipticCurve | Name | secp256r1 | jca/KeyEncapsulation.java:117:47:117:57 | jca/KeyEncapsulation.java:117:47:117:57 | | jca/KeyEncapsulation.java:117:47:117:57 | EllipticCurve | ParsedName | secp256r1 | jca/KeyEncapsulation.java:117:47:117:57 | jca/KeyEncapsulation.java:117:47:117:57 | @@ -1178,6 +1189,7 @@ | jca/KeyEncapsulation.java:136:45:136:50 | Key | KeyType | Unknown | jca/KeyEncapsulation.java:136:45:136:50 | jca/KeyEncapsulation.java:136:45:136:50 | | jca/KeyEncapsulation.java:137:29:137:73 | EncryptOperation | KeyOperationSubtype | Encrypt | jca/KeyEncapsulation.java:137:29:137:73 | jca/KeyEncapsulation.java:137:29:137:73 | | jca/KeyEncapsulation.java:137:47:137:61 | Constant | Description | "ECIES message" | jca/KeyEncapsulation.java:137:47:137:61 | jca/KeyEncapsulation.java:137:47:137:61 | +| jca/KeyEncapsulation.java:186:47:186:57 | EllipticCurve | CurveType | SEC | jca/KeyEncapsulation.java:186:47:186:57 | jca/KeyEncapsulation.java:186:47:186:57 | | jca/KeyEncapsulation.java:186:47:186:57 | EllipticCurve | KeySize | 256 | jca/KeyEncapsulation.java:186:47:186:57 | jca/KeyEncapsulation.java:186:47:186:57 | | jca/KeyEncapsulation.java:186:47:186:57 | EllipticCurve | Name | secp256r1 | jca/KeyEncapsulation.java:186:47:186:57 | jca/KeyEncapsulation.java:186:47:186:57 | | jca/KeyEncapsulation.java:186:47:186:57 | EllipticCurve | ParsedName | secp256r1 | jca/KeyEncapsulation.java:186:47:186:57 | jca/KeyEncapsulation.java:186:47:186:57 | @@ -1192,6 +1204,7 @@ | jca/KeyEncapsulation.java:207:64:207:68 | KeyOperationAlgorithm | RawName | RSA | jca/KeyEncapsulation.java:207:64:207:68 | jca/KeyEncapsulation.java:207:64:207:68 | | jca/KeyEncapsulation.java:208:27:208:30 | Constant | Description | 2048 | jca/KeyEncapsulation.java:208:27:208:30 | jca/KeyEncapsulation.java:208:27:208:30 | | jca/KeyEncapsulation.java:209:25:209:48 | Key | KeyType | Asymmetric | jca/KeyEncapsulation.java:209:25:209:48 | jca/KeyEncapsulation.java:209:25:209:48 | +| jca/KeyEncapsulation.java:214:49:214:59 | EllipticCurve | CurveType | SEC | jca/KeyEncapsulation.java:214:49:214:59 | jca/KeyEncapsulation.java:214:49:214:59 | | jca/KeyEncapsulation.java:214:49:214:59 | EllipticCurve | KeySize | 256 | jca/KeyEncapsulation.java:214:49:214:59 | jca/KeyEncapsulation.java:214:49:214:59 | | jca/KeyEncapsulation.java:214:49:214:59 | EllipticCurve | Name | secp256r1 | jca/KeyEncapsulation.java:214:49:214:59 | jca/KeyEncapsulation.java:214:49:214:59 | | jca/KeyEncapsulation.java:214:49:214:59 | EllipticCurve | ParsedName | secp256r1 | jca/KeyEncapsulation.java:214:49:214:59 | jca/KeyEncapsulation.java:214:49:214:59 | @@ -1214,6 +1227,7 @@ | jca/KeyExchange.java:99:52:99:55 | KeyAgreementAlgorithm | RawName | DH | jca/KeyExchange.java:99:52:99:55 | jca/KeyExchange.java:99:52:99:55 | | jca/KeyExchange.java:100:17:100:26 | Key | KeyType | Unknown | jca/KeyExchange.java:100:17:100:26 | jca/KeyExchange.java:100:17:100:26 | | jca/KeyExchange.java:101:20:101:28 | Key | KeyType | Unknown | jca/KeyExchange.java:101:20:101:28 | jca/KeyExchange.java:101:20:101:28 | +| jca/KeyExchange.java:121:49:121:59 | EllipticCurve | CurveType | SEC | jca/KeyExchange.java:121:49:121:59 | jca/KeyExchange.java:121:49:121:59 | | jca/KeyExchange.java:121:49:121:59 | EllipticCurve | KeySize | 256 | jca/KeyExchange.java:121:49:121:59 | jca/KeyExchange.java:121:49:121:59 | | jca/KeyExchange.java:121:49:121:59 | EllipticCurve | Name | secp256r1 | jca/KeyExchange.java:121:49:121:59 | jca/KeyExchange.java:121:49:121:59 | | jca/KeyExchange.java:121:49:121:59 | EllipticCurve | ParsedName | secp256r1 | jca/KeyExchange.java:121:49:121:59 | jca/KeyExchange.java:121:49:121:59 | @@ -1399,6 +1413,7 @@ | jca/PrngTest.java:152:56:152:60 | KeyOperationAlgorithm | Structure | Block | jca/PrngTest.java:152:56:152:60 | jca/PrngTest.java:152:56:152:60 | | jca/PrngTest.java:153:21:153:23 | Constant | Description | 256 | jca/PrngTest.java:153:21:153:23 | jca/PrngTest.java:153:21:153:23 | | jca/PrngTest.java:154:16:154:35 | Key | KeyType | Symmetric | jca/PrngTest.java:154:16:154:35 | jca/PrngTest.java:154:16:154:35 | +| jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | CurveType | SEC | jca/SignEncryptCombinations.java:52:49:52:59 | jca/SignEncryptCombinations.java:52:49:52:59 | | jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | KeySize | 256 | jca/SignEncryptCombinations.java:52:49:52:59 | jca/SignEncryptCombinations.java:52:49:52:59 | | jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | Name | secp256r1 | jca/SignEncryptCombinations.java:52:49:52:59 | jca/SignEncryptCombinations.java:52:49:52:59 | | jca/SignEncryptCombinations.java:52:49:52:59 | EllipticCurve | ParsedName | secp256r1 | jca/SignEncryptCombinations.java:52:49:52:59 | jca/SignEncryptCombinations.java:52:49:52:59 | @@ -1470,6 +1485,7 @@ | jca/SignatureOperation.java:75:53:75:74 | KeyOperationAlgorithm | RawName | SHA256withRSAandMGF1 | jca/SignatureOperation.java:75:53:75:74 | jca/SignatureOperation.java:75:53:75:74 | | jca/SignatureOperation.java:76:30:76:38 | Key | KeyType | Unknown | jca/SignatureOperation.java:76:30:76:38 | jca/SignatureOperation.java:76:30:76:38 | | jca/SignatureOperation.java:78:16:78:41 | VerifyOperation | KeyOperationSubtype | Verify | jca/SignatureOperation.java:78:16:78:41 | jca/SignatureOperation.java:78:16:78:41 | +| jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | CurveType | SEC | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | | jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | KeySize | 256 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | | jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | Name | secp256r1 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | | jca/SignatureOperation.java:93:49:93:59 | EllipticCurve | ParsedName | secp256r1 | jca/SignatureOperation.java:93:49:93:59 | jca/SignatureOperation.java:93:49:93:59 | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index ac338cbfa7a..b7a86c558cd 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -1,6 +1,6 @@ #select -| BadMacUse.java:56:42:56:50 | plaintext | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | -| BadMacUse.java:124:42:124:51 | ciphertext | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | MAC order potentially wrong: observed a potential decrypt operation output to MAC implying the MAC is on plaintext, and not a cipher. | +| BadMacUse.java:56:42:56:50 | plaintext | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input. | +| BadMacUse.java:124:42:124:51 | ciphertext | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | BadMacUse.java:124:42:124:51 | ciphertext | Incorrect decryption and MAC order: decryption output plaintext flows to MAC message input. | edges | BadMacUse.java:27:29:27:53 | doFinal(...) : byte[] | BadMacUse.java:32:42:32:51 | ciphertext | provenance | | | BadMacUse.java:50:28:50:53 | doFinal(...) : byte[] | BadMacUse.java:56:42:56:50 | plaintext | provenance | | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index 993811a16c9..da2c35d1d6d 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -1,14 +1,14 @@ #select -| BadMacUse.java:80:44:80:52 | plaintext | BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | Source is used as plaintext to MAC and encryption operation. Indicates possible misuse of MAC. Path shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:75:42:75:50 | plaintext | plaintext | +| BadMacUse.java:76:44:76:52 | plaintext | BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:71:42:71:50 | plaintext | plaintext | edges -| BadMacUse.java:67:82:67:97 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | | -| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:75:42:75:50 | plaintext : byte[] | provenance | Config | -| BadMacUse.java:75:42:75:50 | plaintext : byte[] | BadMacUse.java:80:44:80:52 | plaintext | provenance | | +| BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | | +| BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | provenance | | nodes -| BadMacUse.java:67:82:67:97 | plaintext : byte[] | semmle.label | plaintext : byte[] | -| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | -| BadMacUse.java:75:42:75:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | -| BadMacUse.java:80:44:80:52 | plaintext | semmle.label | plaintext | +| BadMacUse.java:63:82:63:97 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:76:44:76:52 | plaintext | semmle.label | plaintext | subpaths testFailures -| BadMacUse.java:54:56:54:66 | // $Source | Missing result: Source | +| BadMacUse.java:50:56:50:66 | // $Source | Missing result: Source | diff --git a/shared/quantum/codeql/quantum/experimental/Model.qll b/shared/quantum/codeql/quantum/experimental/Model.qll index 70bcafa502e..f5ab5190e1f 100644 --- a/shared/quantum/codeql/quantum/experimental/Model.qll +++ b/shared/quantum/codeql/quantum/experimental/Model.qll @@ -2393,6 +2393,10 @@ module CryptographyBase Input> { key = "ParsedName" and value = instance.asAlg().getParsedEllipticCurveName() and location = this.getLocation() + or + key = "CurveType" and + value = this.getEllipticCurveType().toString() and + location = this.getLocation() } } } From db6d3ad0545cde11f2df8abba9d7dcae4d1f4c17 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 22 Oct 2025 10:31:19 -0400 Subject: [PATCH 267/965] Crypto: Fix typo in not_included_in_qls.expected. --- .../java/query-suite/not_included_in_qls.expected | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 8670493799f..485c6711dc9 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -231,7 +231,7 @@ ql/java/ql/src/experimental/Security/CWE/CWE-939/IncorrectURLVerification.ql ql/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql ql/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql ql/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql -ql/java/ql/src/experimental/quantum/Examples/InsecInseInsecureIVorNonceSource.ql +ql/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql ql/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql ql/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql ql/java/ql/src/experimental/quantum/Examples/TestCipher.ql From 944ebc52678e4bc267a0c7a53be64a2e0368259c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 21 Oct 2025 11:41:53 +0200 Subject: [PATCH 268/965] Rust: Add `Callable.getBody()` --- rust/ast-generator/src/main.rs | 2 + rust/extractor/src/generated/.generated.list | 2 +- rust/extractor/src/generated/top.rs | 12 +-- rust/extractor/src/translate/generated.rs | 8 +- rust/ql/.generated.list | 16 ++-- .../controlflow/internal/CfgConsistency.qll | 3 +- .../rust/controlflow/internal/Scope.qll | 11 +-- rust/ql/lib/codeql/rust/elements/Callable.qll | 1 + .../elements/internal/ClosureExprImpl.qll | 2 + .../rust/elements/internal/FunctionImpl.qll | 2 + .../rust/elements/internal/VariableImpl.qll | 2 +- .../elements/internal/generated/Callable.qll | 11 +++ .../internal/generated/ClosureExpr.qll | 12 +-- .../elements/internal/generated/Function.qll | 12 +-- .../internal/generated/ParentChild.qll | 20 ++--- .../rust/elements/internal/generated/Raw.qll | 8 +- .../codeql/rust/internal/TypeInference.qll | 6 +- rust/ql/lib/rust.dbscheme | 8 +- .../ClosureExpr/ClosureExpr.expected | 7 ++ .../generated/ClosureExpr/ClosureExpr.ql | 4 + .../generated/Function/Function.expected | 4 +- .../generated/Function/Function.ql | 8 +- .../macro-expansion/PrintAst.expected | 74 +++++++++---------- rust/schema/ast.py | 4 +- rust/schema/prelude.py | 1 + 25 files changed, 135 insertions(+), 105 deletions(-) diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index 1fd2d143a15..4b68c1d42a6 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -44,6 +44,8 @@ fn property_name(type_name: &str, field_name: &str) -> String { ("StructField", "expr") => "default", ("UseTree", "is_star") => "is_glob", (_, "ty") => "type_repr", + ("Function", "body") => "function_body", + ("ClosureExpr", "body") => "closure_body", _ if field_name.contains("record") => &field_name.replacen("record", "struct", 1), _ => field_name, }; diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index 247613daec2..fa35ec65d4c 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs ef1e4ee1ec10669092c216f95bc34a1740e1fadfc4f3ad91ef14dccc5f2a7490 ef1e4ee1ec10669092c216f95bc34a1740e1fadfc4f3ad91ef14dccc5f2a7490 +top.rs 460e827738766301a137f1750be7cd3016e6b7e4e487c6c95972bd3e1d21b814 460e827738766301a137f1750be7cd3016e6b7e4e487c6c95972bd3e1d21b814 diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index ef25c5aecc1..3c4b51c78e6 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -4431,7 +4431,7 @@ pub struct ClosureExpr { pub id: trap::TrapId, pub param_list: Option>, pub attrs: Vec>, - pub body: Option>, + pub closure_body: Option>, pub for_binder: Option>, pub is_async: bool, pub is_const: bool, @@ -4454,8 +4454,8 @@ impl trap::TrapEntry for ClosureExpr { for (i, v) in self.attrs.into_iter().enumerate() { out.add_tuple("callable_attrs", vec![id.into(), i.into(), v.into()]); } - if let Some(v) = self.body { - out.add_tuple("closure_expr_bodies", vec![id.into(), v.into()]); + if let Some(v) = self.closure_body { + out.add_tuple("closure_expr_closure_bodies", vec![id.into(), v.into()]); } if let Some(v) = self.for_binder { out.add_tuple("closure_expr_for_binders", vec![id.into(), v.into()]); @@ -10783,7 +10783,7 @@ pub struct Function { pub param_list: Option>, pub attrs: Vec>, pub abi: Option>, - pub body: Option>, + pub function_body: Option>, pub generic_param_list: Option>, pub is_async: bool, pub is_const: bool, @@ -10812,8 +10812,8 @@ impl trap::TrapEntry for Function { if let Some(v) = self.abi { out.add_tuple("function_abis", vec![id.into(), v.into()]); } - if let Some(v) = self.body { - out.add_tuple("function_bodies", vec![id.into(), v.into()]); + if let Some(v) = self.function_body { + out.add_tuple("function_function_bodies", vec![id.into(), v.into()]); } if let Some(v) = self.generic_param_list { out.add_tuple("function_generic_param_lists", vec![id.into(), v.into()]); diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index 607d6e195fa..e6cc06419fc 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -696,7 +696,7 @@ impl Translator<'_> { return None; } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = node.body().and_then(|x| self.emit_expr(&x)); + let closure_body = node.body().and_then(|x| self.emit_expr(&x)); let for_binder = node.for_binder().and_then(|x| self.emit_for_binder(&x)); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); @@ -708,7 +708,7 @@ impl Translator<'_> { let label = self.trap.emit(generated::ClosureExpr { id: TrapId::Star, attrs, - body, + closure_body, for_binder, is_async, is_const, @@ -984,7 +984,7 @@ impl Translator<'_> { } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); - let body = if self.should_skip_bodies() { + let function_body = if self.should_skip_bodies() { None } else { node.body().and_then(|x| self.emit_block_expr(&x)) @@ -1006,7 +1006,7 @@ impl Translator<'_> { id: TrapId::Star, abi, attrs, - body, + function_body, generic_param_list, is_async, is_const, diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index e3ec533203d..cdd94fc0d68 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -34,7 +34,7 @@ lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea6 lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc lib/codeql/rust/elements/CallExpr.qll f336500ca7a611b164d48b90e80edb0c0d3816792b0ececce659ac1ff1ffeb3e f99a9c55466418ef53860c44d9f2d6161af4b492178ddd9e5870dff742b70ae5 lib/codeql/rust/elements/CallExprBase.qll 2846202b5208b541977500286951d96487bf555838c6c16cdd006a71e383745a c789d412bf099c624329379e0c7d94fa0d23ae2edea7a25a2ea0f3c0042ccf62 -lib/codeql/rust/elements/Callable.qll 0f7f78c3bfabbe24962f6232b0440d27e51f06d2b8d341fc623ffbfbff173f47 5fd13aaa0eaf76ea0b47fa0641bd23eea20a069f0b3cbc1ee4e290e88321008a +lib/codeql/rust/elements/Callable.qll 08a46e987b8fde29069795a536fcd1ad1a96f60341f72293e4d07e20334d554f cfc2be9287000718e5ff3c2a35bb45ffc93fd36d97f2e034888e9aa2ae9af555 lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a lib/codeql/rust/elements/ClosureExpr.qll 69e0b7a7c7a4c348fcada5ad4da22dd2f51747109f856be239cede315a56d695 93400650282e2d4e682b826e9f5f844aa893dda126548e41ea1c703d2bf209ca lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab @@ -484,9 +484,9 @@ lib/codeql/rust/elements/internal/generated/BoxPat.qll 597bed52f7489e0addce3266f lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ffc3e1c93c30bc6b0e9c9172f140cefa88c1f77d8690 957b39f38ff6befe9061f55bc0b403c2f1c366dd0cf63b874bae6f8216576d76 lib/codeql/rust/elements/internal/generated/CallExpr.qll f1b8dae487077cc9d1dccf8c3cd61fd17afe860585f17ce8b860be4859be7ca4 6034fc03778e38802cdf3a6e460364b74e92912622581b31e6179951022bbbd6 lib/codeql/rust/elements/internal/generated/CallExprBase.qll 2268e01d65015014c05166161bb28e5a1e78164d525ca16fc1e3106866cf231d b2f9b912153ba4d3e3612df4f74ac0e83077c31d5b31383bd277974081417a56 -lib/codeql/rust/elements/internal/generated/Callable.qll 9a8661aa018fd90a21529760c1dbc46c1ad3649e17b030e59ced0683fbf83f8a 8b573adfc23ec0ac91949da415e6a0c988fa02cbce9534d45ac98a5512d7b1ca +lib/codeql/rust/elements/internal/generated/Callable.qll 12368b998c771c6b80f54123cea4d3600af7432ab34c9e571bc0bf3894ceb17e 273a9fd9cdae56cf2edbdc9c49b15da49cd5ad04be70acbbe2475c9c50200183 lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3 -lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 1f77ea8ec01366f8027fa36793f7de5a74f562a1af1bf6954410e68670e6f68a bd61457093dcfc3985e6e526d4582299f29421bc7d3e9818e530152ac8ad8bed +lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 818aff75d86821c670d8ba0720c3270681b3e070140a9c41beab2a811b43eee6 9bf2d1d38f6c4a99d7c058f8ed096141f5ba6a75d2d26a464f0d65ed4e554222 lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201 lib/codeql/rust/elements/internal/generated/Const.qll 3e606f0198b6461a94964dba7a4d386408f01651d75378eeab251dfceccf49c8 20fe276cded4764bdb1cd50de956bea88d7cd731909c0b84b4abb972b3094959 lib/codeql/rust/elements/internal/generated/ConstArg.qll c52bf746f2dc89b8d71b8419736707bfcbb09cca424c3ba76e888e2add415bf6 89309a9df4fde23cfd3d8492908ccec4d90cc8457d35c507ef81371a369941b4 @@ -515,7 +515,7 @@ lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll c762a4af8609472e28 lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375 lib/codeql/rust/elements/internal/generated/FormatArgument.qll cd05153276e63e689c95d5537fbc7d892615f62e110323759ef02e23a7587407 be2a4531b498f01625effa4c631d51ee8857698b00cfb829074120a0f2696d57 lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll a6175214fad445df9234b3ee9bf5147da75baf82473fb8d384b455e3add0dac1 a928db0ff126b2e54a18f5c488232abd1bd6c5eda24591d3c3bb80c6ee71c770 -lib/codeql/rust/elements/internal/generated/Function.qll 695dbc61e1c4d67a75e438f30fffcaa4a251be629093428b6b7afba053342fb6 ddc34f1da6b4b2ac64d60028822c7cfc72da133dd08ad2490bd2dcae9d91e074 +lib/codeql/rust/elements/internal/generated/Function.qll 25aa44c816233b9259b4ca12a15b6aff5856f4147d6a72fd0ec2fdebb24a5131 62a8a9080bf555950a854f84444d79cbe72d69b1d3f73ac801bb11e732fc7e46 lib/codeql/rust/elements/internal/generated/GenericArg.qll 908dadf36a631bc9f4423ab473d1344ed882c7f3f85ac169d82e0099ff6337d4 c6ef5358db3a0318987962a51cbe6b77ae9c0e39c1312a059306e40e86db7eb8 lib/codeql/rust/elements/internal/generated/GenericArgList.qll b8cd936bba6f28344e28c98acf38acb8ef43af6ecf8367d79ed487e5b9da17cb 8b14331261e49d004807285b02fca190aafd62bfb9378b05c7d9c1e95525fe7b lib/codeql/rust/elements/internal/generated/GenericParam.qll 85ac027a42b3300febc9f7ede1098d3ffae7bac571cba6391bc00f9061780324 806cb9d1b0e93442bef180e362c4abc055ab31867ff34bac734b89d32bd82aa1 @@ -569,7 +569,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll 7d67059559590954faf55aab56885fedc7b7a63a37b7a871b19204c42d493a4d 04ad386fd2b4e5d0150887aad97cf3ed8406391c8bc95dd2de29eb29a2ac0b6e +lib/codeql/rust/elements/internal/generated/ParentChild.qll 6e86fd9b6d5ec1b4aeeb5472cc6d2ebf3328bbaa8605cf52c9add56652cc47dc 3cf2a8e12ffb6631221c7b94fa112e8e3be96efba697996862685a87b2c9aff7 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -584,7 +584,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 11d48da73543efe2d6c4c5a30ac8ecdd3c24dc64bbd10bf6976b53445e248ef1 72fddbec1e8e5029442c962599877459406010d81dece075147aa1cc37cf7a42 +lib/codeql/rust/elements/internal/generated/Raw.qll 3f86deef2f54093e3b4bd24237ba0d80fa94856fdcf2ba6a9812033bec6c0021 30cd773ce7a390afbdabd8a078f5f1408671eaca6fa7e213bed6196dfa872447 lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -674,7 +674,7 @@ test/extractor-tests/generated/BoxPat/BoxPat.ql 854c9ba4e045dbe7ea1666866c1c443a test/extractor-tests/generated/BreakExpr/BreakExpr.ql c2181211da3dfe983cfca93ead32d5d211e91181899b9477152c58124eaa846d 57e57b926e14db2efb2e88e04699608b2ba9797ee4f6c4f710135b6858982256 test/extractor-tests/generated/CallExpr/CallExpr.ql 2a1cd4485ccd8d4eb24a75889e832612adef9bb7feae414c90572796380bc6d7 95060b92aa04d7ad1fc6603c5ec14a275a5788ecb5a19932732e28105607a3b7 test/extractor-tests/generated/CastExpr/CastExpr.ql 3480ec51072399409b7553ab6139c832db6ed4ca991f3a7a2282a39afe07c6f2 614c8ea7a2fe30d57583dbf84ed7a12743c2aba49d8c6252d31af3ed10853a39 -test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql f9002cc327769edff05ae428d0c01ba80e18a217057d4d2c3a31eb24ab659ed6 8af2986890d0f3dd77c72023d992d5e587c9922b6f3ea378a6e268a51cfbbda5 +test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 675ae07193241fbd710ece4f74f86e9b00f47841299b1c5934f55dbf13a4b4af 21fb0664619c9c889e9491bfd651c2814dcf0f158dd6269937bd0acc18be6b0e test/extractor-tests/generated/Comment/Comment.ql 0e0454911d2cf2e7ef5c6d860b84c57b9d490090914ebcf4fa0e8a70f777f066 cbd1c195276ef163f8d3c122344738c884dc9fb70eb2f9b7067829d735d48c4c test/extractor-tests/generated/Const/Const.ql 97797a56743b519c1990682ccb22af6d997ed5eea1e280b52ad31b16a5836f9e e5289ebcb71a25b7ac0a7e1aa0111e4f3ec83d26b7f83e819509c9b9d756921d test/extractor-tests/generated/ConstArg/ConstArg.ql 21c7caf1939ff9fcc1bf0fe6dec5c6a6929f714cf1e17faf7a2f4a31c910194b 61eac00f4727f7269f926c53f53a62b5fae82ce7a02b42d23b9de6337b6f9d6e @@ -698,7 +698,7 @@ test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 5abcb565dcd2822e2 test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 0a345eb48dba8e535d12a00e88008e71b3ce692fbf8f9686c8885e158635dffe eab1f230fd572474a3f304f97d05bbf4a004c52773aaf2d34f999192244c0b80 test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 24108cdc54feb77c24bb7894744e36e374f0c03d46d6e6c3fcb2012b1ad117f6 05a6b6f51029ee1a15039aa9d738bb1fd7145148f1aad790198fba832572c719 -test/extractor-tests/generated/Function/Function.ql 061b34449c170b0fe50bbf8fe7b47f7ffc30d119c2479b906cb233f4dff9f006 5bc406906ea1537ee8ae299e29a1fbfa197c5920f97ff87f2c82b555c739de82 +test/extractor-tests/generated/Function/Function.ql a98895a935f82c61538a93ad981d55a049dfc44eb7f4a28b0b3d611247617518 ed9e9b3d3804e83a40fe3d39888efb308eb2eb9d99c7a1adc5ab821cff2a44c0 test/extractor-tests/generated/GenericArgList/GenericArgList.ql 9bd6873e56a381a693fed0f595d60d973d0073ba7afa303750d5c6a0b887a811 0b373079f65aa91cacabfc9729c91215082a915197eb657b66bcdb3b6d5e7e53 test/extractor-tests/generated/GenericParamList/GenericParamList.ql 206f270690f5c142777d43cf87b65d6dda5ec9f3953c17ee943fe3d0e7b7761c 38a6e0bbca916778f85b106609df6d5929baed006d55811ec0d71c75fe137e92 test/extractor-tests/generated/IdentPat/IdentPat.ql 23006eddf0ca1188e11ba5ee25ad62a83157b83e0b99119bf924c7f74fd8e70d 6e572f48f607f0ced309113304019ccc0a828f6ddd71e818369504dcf832a0b5 diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/CfgConsistency.qll b/rust/ql/lib/codeql/rust/controlflow/internal/CfgConsistency.qll index 4fc80ef19c5..02393cb98c2 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/CfgConsistency.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/CfgConsistency.qll @@ -36,8 +36,7 @@ query predicate scopeNoFirst(CfgScope scope) { Consistency::scopeNoFirst(scope) and not scope = [ - any(AstNode f | not f.(Function).hasBody()), - any(ClosureExpr c | not c.hasBody()), + any(AstNode f | not f.(Callable).hasBody()), any(AsyncBlockExpr b | not b.hasStmtList()) ] } diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/Scope.qll b/rust/ql/lib/codeql/rust/controlflow/internal/Scope.qll index 532530819c6..94c5300b062 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/Scope.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/Scope.qll @@ -35,16 +35,7 @@ final class CallableScope extends CfgScopeImpl, Callable { CallableScope() { // A function without a body corresponds to a trait method signature and // should not have a CFG scope. - this.(Function).hasBody() - or - this instanceof ClosureExpr - } - - /** Gets the body of this callable. */ - AstNode getBody() { - result = this.(Function).getBody() - or - result = this.(ClosureExpr).getBody() + this.hasBody() } override predicate scopeFirst(AstNode first) { diff --git a/rust/ql/lib/codeql/rust/elements/Callable.qll b/rust/ql/lib/codeql/rust/elements/Callable.qll index 11d029fff7d..b2088f08f66 100644 --- a/rust/ql/lib/codeql/rust/elements/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/Callable.qll @@ -6,6 +6,7 @@ private import internal.CallableImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Attr +import codeql.rust.elements.Expr import codeql.rust.elements.Param import codeql.rust.elements.ParamList diff --git a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll index 960a91e9ee5..cef396dea18 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll @@ -29,5 +29,7 @@ module Impl { */ class ClosureExpr extends Generated::ClosureExpr { override string toStringImpl() { result = "|...| " + this.getBody().toAbbreviatedString() } + + override Expr getBody() { result = this.getClosureBody() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll index 67bd0a4eee9..69b85bb1ee2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll @@ -69,5 +69,7 @@ module Impl { this.getLocation().getStartLine() <= result.getLocation().getStartLine() and result.getLocation().getStartLine() <= this.getName().getLocation().getStartLine() } + + override BlockExpr getBody() { result = this.getFunctionBody() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 80569281721..f03ca55b555 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -309,7 +309,7 @@ module Impl { private predicate parameterDeclInScope(Variable v, VariableScope scope) { exists(Callable f | v.getParameter() = f.getParamList().getAParamBase() and - scope = [f.(Function).getBody(), f.(ClosureExpr).getBody()] + scope = f.getBody() ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll index f42f711dcf8..b2eb4d96d91 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Attr +import codeql.rust.elements.Expr import codeql.rust.elements.Param import codeql.rust.elements.ParamList @@ -69,5 +70,15 @@ module Generated { * Gets the number of parameters of this callable. */ final int getNumberOfParams() { result = count(int i | exists(this.getParam(i))) } + + /** + * Gets the body of this callable, if it exists. + */ + Expr getBody() { none() } + + /** + * Holds if `getBody()` exists. + */ + final predicate hasBody() { exists(this.getBody()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureExpr.qll index 99e494a6000..86e1178589a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureExpr.qll @@ -38,17 +38,19 @@ module Generated { override string getAPrimaryQlClass() { result = "ClosureExpr" } /** - * Gets the body of this closure expression, if it exists. + * Gets the closure body of this closure expression, if it exists. */ - Expr getBody() { + Expr getClosureBody() { result = - Synth::convertExprFromRaw(Synth::convertClosureExprToRaw(this).(Raw::ClosureExpr).getBody()) + Synth::convertExprFromRaw(Synth::convertClosureExprToRaw(this) + .(Raw::ClosureExpr) + .getClosureBody()) } /** - * Holds if `getBody()` exists. + * Holds if `getClosureBody()` exists. */ - final predicate hasBody() { exists(this.getBody()) } + final predicate hasClosureBody() { exists(this.getClosureBody()) } /** * Gets the for binder of this closure expression, if it exists. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll index db0b4fd1509..1221917425d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll @@ -54,17 +54,19 @@ module Generated { final predicate hasAbi() { exists(this.getAbi()) } /** - * Gets the body of this function, if it exists. + * Gets the function body of this function, if it exists. */ - BlockExpr getBody() { + BlockExpr getFunctionBody() { result = - Synth::convertBlockExprFromRaw(Synth::convertFunctionToRaw(this).(Raw::Function).getBody()) + Synth::convertBlockExprFromRaw(Synth::convertFunctionToRaw(this) + .(Raw::Function) + .getFunctionBody()) } /** - * Holds if `getBody()` exists. + * Holds if `getFunctionBody()` exists. */ - final predicate hasBody() { exists(this.getBody()) } + final predicate hasFunctionBody() { exists(this.getFunctionBody()) } /** * Gets the generic parameter list of this function, if it exists. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index 6d2ab30fc68..7b8d4d4e462 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -1092,12 +1092,12 @@ private module Impl { private Element getImmediateChildOfClosureExpr( ClosureExpr e, int index, string partialPredicateCall ) { - exists(int n, int nParamList, int nAttr, int nBody, int nForBinder, int nRetType | + exists(int n, int nParamList, int nAttr, int nClosureBody, int nForBinder, int nRetType | n = 0 and nParamList = n + 1 and nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nBody = nAttr + 1 and - nForBinder = nBody + 1 and + nClosureBody = nAttr + 1 and + nForBinder = nClosureBody + 1 and nRetType = nForBinder + 1 and ( none() @@ -1107,9 +1107,9 @@ private module Impl { result = e.getAttr(index - nParamList) and partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" or - index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" + index = nAttr and result = e.getClosureBody() and partialPredicateCall = "ClosureBody()" or - index = nBody and result = e.getForBinder() and partialPredicateCall = "ForBinder()" + index = nClosureBody and result = e.getForBinder() and partialPredicateCall = "ForBinder()" or index = nForBinder and result = e.getRetType() and partialPredicateCall = "RetType()" ) @@ -2729,7 +2729,7 @@ private module Impl { private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { exists( - int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nBody, + int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nFunctionBody, int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause | n = 0 and @@ -2737,8 +2737,8 @@ private module Impl { nParamList = nAttributeMacroExpansion + 1 and nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nAbi = nAttr + 1 and - nBody = nAbi + 1 and - nGenericParamList = nBody + 1 and + nFunctionBody = nAbi + 1 and + nGenericParamList = nFunctionBody + 1 and nName = nGenericParamList + 1 and nRetType = nName + 1 and nVisibility = nRetType + 1 and @@ -2759,9 +2759,9 @@ private module Impl { or index = nAttr and result = e.getAbi() and partialPredicateCall = "Abi()" or - index = nAbi and result = e.getBody() and partialPredicateCall = "Body()" + index = nAbi and result = e.getFunctionBody() and partialPredicateCall = "FunctionBody()" or - index = nBody and + index = nFunctionBody and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" or diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index de56bdffb6c..41b8e451308 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -1906,9 +1906,9 @@ module Raw { override string toString() { result = "ClosureExpr" } /** - * Gets the body of this closure expression, if it exists. + * Gets the closure body of this closure expression, if it exists. */ - Expr getBody() { closure_expr_bodies(this, result) } + Expr getClosureBody() { closure_expr_closure_bodies(this, result) } /** * Gets the for binder of this closure expression, if it exists. @@ -4353,9 +4353,9 @@ module Raw { Abi getAbi() { function_abis(this, result) } /** - * Gets the body of this function, if it exists. + * Gets the function body of this function, if it exists. */ - BlockExpr getBody() { function_bodies(this, result) } + BlockExpr getFunctionBody() { function_function_bodies(this, result) } /** * Gets the generic parameter list of this function, if it exists. diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 9130b2d351e..36847cfd2cb 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -279,7 +279,7 @@ private TypeMention getTypeAnnotation(AstNode n) { or exists(Function f | result = f.getRetType().getTypeRepr() and - n = f.getBody() + n = f.getFunctionBody() ) } @@ -630,7 +630,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat prefix2.isEmpty() ) or - n1.(ClosureExpr).getBody() = n2 and + n1.(ClosureExpr).getClosureBody() = n2 and prefix1 = closureReturnPath() and prefix2.isEmpty() } @@ -2962,7 +2962,7 @@ private Type inferClosureExprType(AstNode n, TypePath path) { result = TTuple(ce.getNumberOfParams()) or // Propagate return type annotation to body - n = ce.getBody() and + n = ce.getClosureBody() and result = ce.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) ) } diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index dfade44a27b..30a0713e5bf 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -1526,9 +1526,9 @@ closure_exprs( ); #keyset[id] -closure_expr_bodies( +closure_expr_closure_bodies( int id: @closure_expr ref, - int body: @expr ref + int closure_body: @expr ref ); #keyset[id] @@ -3308,9 +3308,9 @@ function_abis( ); #keyset[id] -function_bodies( +function_function_bodies( int id: @function ref, - int body: @block_expr ref + int function_body: @block_expr ref ); #keyset[id] diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected index d7ae60022b1..214ec781800 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected @@ -30,6 +30,13 @@ getBody | gen_closure_expr.rs:8:5:9:15 | \|...\| ... | gen_closure_expr.rs:9:9:9:15 | YieldExpr | | gen_closure_expr.rs:10:5:11:22 | \|...\| ... | gen_closure_expr.rs:11:16:11:22 | YieldExpr | | gen_closure_expr.rs:12:5:14:5 | \|...\| ... | gen_closure_expr.rs:12:36:14:5 | { ... } | +getClosureBody +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:9:5:13 | ... + ... | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:26:6:34 | { ... } | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:23:7:27 | ... + ... | +| gen_closure_expr.rs:8:5:9:15 | \|...\| ... | gen_closure_expr.rs:9:9:9:15 | YieldExpr | +| gen_closure_expr.rs:10:5:11:22 | \|...\| ... | gen_closure_expr.rs:11:16:11:22 | YieldExpr | +| gen_closure_expr.rs:12:5:14:5 | \|...\| ... | gen_closure_expr.rs:12:36:14:5 | { ... } | getForBinder | gen_closure_expr.rs:12:5:14:5 | \|...\| ... | gen_closure_expr.rs:12:5:12:27 | for<...> | getRetType diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql index 296eae11485..1d7a9412b16 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql @@ -37,6 +37,10 @@ query predicate getBody(ClosureExpr x, Expr getBody) { toBeTested(x) and not x.isUnknown() and getBody = x.getBody() } +query predicate getClosureBody(ClosureExpr x, Expr getClosureBody) { + toBeTested(x) and not x.isUnknown() and getClosureBody = x.getClosureBody() +} + query predicate getForBinder(ClosureExpr x, ForBinder getForBinder) { toBeTested(x) and not x.isUnknown() and getForBinder = x.getForBinder() } diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.expected b/rust/ql/test/extractor-tests/generated/Function/Function.expected index 7a91b7aefe6..e01c7236ef3 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function.expected @@ -8,9 +8,11 @@ getParamList getAttr getParam | gen_function.rs:3:1:4:38 | fn foo | 0 | gen_function.rs:4:8:4:13 | ...: u32 | -getAbi getBody | gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | +getAbi +getFunctionBody +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | getGenericParamList getName | gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:4:4:6 | foo | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.ql b/rust/ql/test/extractor-tests/generated/Function/Function.ql index c4e480d4d13..ca2bf4d5f70 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.ql +++ b/rust/ql/test/extractor-tests/generated/Function/Function.ql @@ -41,12 +41,16 @@ query predicate getParam(Function x, int index, Param getParam) { toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) } +query predicate getBody(Function x, Expr getBody) { + toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +} + query predicate getAbi(Function x, Abi getAbi) { toBeTested(x) and not x.isUnknown() and getAbi = x.getAbi() } -query predicate getBody(Function x, BlockExpr getBody) { - toBeTested(x) and not x.isUnknown() and getBody = x.getBody() +query predicate getFunctionBody(Function x, BlockExpr getFunctionBody) { + toBeTested(x) and not x.isUnknown() and getFunctionBody = x.getFunctionBody() } query predicate getGenericParamList(Function x, GenericParamList getGenericParamList) { diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index f7a56a93abf..60e193113cc 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -10,7 +10,7 @@ call.rs: # 1| getIdentifier(): [NameRef] macro_expansion # 3| getItem(1): [Function] fn call_some_functions # 3| getParamList(): [ParamList] ParamList -# 3| getBody(): [BlockExpr] { ... } +# 3| getFunctionBody(): [BlockExpr] { ... } # 3| getStmtList(): [StmtList] StmtList # 4| getStatement(0): [ExprStmt] ExprStmt # 4| getExpr(): [CallExpr] ...::foo(...) @@ -129,7 +129,7 @@ included/included.rs: # 1| [SourceFile] SourceFile # 1| getItem(0): [Function] fn included # 1| getParamList(): [ParamList] ParamList -# 1| getBody(): [BlockExpr] { ... } +# 1| getFunctionBody(): [BlockExpr] { ... } # 1| getStmtList(): [StmtList] StmtList # 2| getStatement(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignmentExpr] ... = ... @@ -178,7 +178,7 @@ macro_expansion.rs: # 4| getAttributeMacroExpansion(): [MacroItems] MacroItems # 4| getItem(0): [Function] fn foo # 4| getParamList(): [ParamList] ParamList -# 4| getBody(): [BlockExpr] { ... } +# 4| getFunctionBody(): [BlockExpr] { ... } # 4| getStmtList(): [StmtList] StmtList # 5| getStatement(0): [ExprStmt] ExprStmt # 5| getExpr(): [AssignmentExpr] ... = ... @@ -194,12 +194,12 @@ macro_expansion.rs: # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_0 # 8| getItem(1): [Function] fn inner_1 # 8| getParamList(): [ParamList] ParamList -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 # 8| getParamList(): [ParamList] ParamList @@ -209,7 +209,7 @@ macro_expansion.rs: # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt @@ -230,7 +230,7 @@ macro_expansion.rs: # 4| getVisibility(): [Visibility] Visibility # 4| getItem(1): [Function] fn foo_new # 4| getParamList(): [ParamList] ParamList -# 4| getBody(): [BlockExpr] { ... } +# 4| getFunctionBody(): [BlockExpr] { ... } # 4| getStmtList(): [StmtList] StmtList # 5| getStatement(0): [ExprStmt] ExprStmt # 5| getExpr(): [AssignmentExpr] ... = ... @@ -246,12 +246,12 @@ macro_expansion.rs: # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_0 # 8| getItem(1): [Function] fn inner_1 # 8| getParamList(): [ParamList] ParamList -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 # 8| getParamList(): [ParamList] ParamList @@ -261,7 +261,7 @@ macro_expansion.rs: # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt @@ -286,7 +286,7 @@ macro_expansion.rs: # 3| getPath(): [Path] add_one # 3| getSegment(): [PathSegment] add_one # 3| getIdentifier(): [NameRef] add_one -# 4| getBody(): [BlockExpr] { ... } +# 4| getFunctionBody(): [BlockExpr] { ... } # 4| getStmtList(): [StmtList] StmtList # 5| getStatement(0): [ExprStmt] ExprStmt # 5| getExpr(): [AssignmentExpr] ... = ... @@ -305,7 +305,7 @@ macro_expansion.rs: # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getBody(): [BlockExpr] { ... } +# 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt @@ -330,13 +330,13 @@ macro_expansion.rs: # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_0 # 16| getParamList(): [ParamList] ParamList -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_0 # 16| getVisibility(): [Visibility] Visibility # 16| getItem(1): [Function] fn bar_0_new # 16| getParamList(): [ParamList] ParamList -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_0_new # 16| getVisibility(): [Visibility] Visibility @@ -346,7 +346,7 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_0 # 16| getVisibility(): [Visibility] Visibility @@ -354,13 +354,13 @@ macro_expansion.rs: # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_1 # 16| getParamList(): [ParamList] ParamList -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_1 # 16| getVisibility(): [Visibility] Visibility # 16| getItem(1): [Function] fn bar_1_new # 16| getParamList(): [ParamList] ParamList -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_1_new # 16| getVisibility(): [Visibility] Visibility @@ -370,7 +370,7 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_1 # 16| getVisibility(): [Visibility] Visibility @@ -386,7 +386,7 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getBody(): [BlockExpr] { ... } +# 16| getFunctionBody(): [BlockExpr] { ... } # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar # 16| getVisibility(): [Visibility] Visibility @@ -398,7 +398,7 @@ macro_expansion.rs: # 18| getPath(): [Path] erase # 18| getSegment(): [PathSegment] erase # 18| getIdentifier(): [NameRef] erase -# 19| getBody(): [BlockExpr] { ... } +# 19| getFunctionBody(): [BlockExpr] { ... } # 19| getStmtList(): [StmtList] StmtList # 19| getName(): [Name] baz # 19| getVisibility(): [Visibility] Visibility @@ -414,7 +414,7 @@ macro_expansion.rs: # 32| getAttributeMacroExpansion(): [MacroItems] MacroItems # 32| getItem(0): [Function] fn bzz_0 # 32| getParamList(): [ParamList] ParamList -# 32| getBody(): [BlockExpr] { ... } +# 32| getFunctionBody(): [BlockExpr] { ... } # 32| getStmtList(): [StmtList] StmtList # 33| getStatement(0): [ExprStmt] ExprStmt # 33| getExpr(): [MacroExpr] MacroExpr @@ -462,7 +462,7 @@ macro_expansion.rs: # 32| getVisibility(): [Visibility] Visibility # 32| getItem(1): [Function] fn bzz_1 # 32| getParamList(): [ParamList] ParamList -# 32| getBody(): [BlockExpr] { ... } +# 32| getFunctionBody(): [BlockExpr] { ... } # 32| getStmtList(): [StmtList] StmtList # 33| getStatement(0): [ExprStmt] ExprStmt # 33| getExpr(): [MacroExpr] MacroExpr @@ -510,7 +510,7 @@ macro_expansion.rs: # 32| getVisibility(): [Visibility] Visibility # 32| getItem(2): [Function] fn bzz_2 # 32| getParamList(): [ParamList] ParamList -# 32| getBody(): [BlockExpr] { ... } +# 32| getFunctionBody(): [BlockExpr] { ... } # 32| getStmtList(): [StmtList] StmtList # 33| getStatement(0): [ExprStmt] ExprStmt # 33| getExpr(): [MacroExpr] MacroExpr @@ -563,7 +563,7 @@ macro_expansion.rs: # 31| getSegment(): [PathSegment] repeat # 31| getIdentifier(): [NameRef] repeat # 31| getTokenTree(): [TokenTree] TokenTree -# 32| getBody(): [BlockExpr] { ... } +# 32| getFunctionBody(): [BlockExpr] { ... } # 32| getStmtList(): [StmtList] StmtList # 33| getStatement(0): [ExprStmt] ExprStmt # 33| getExpr(): [MacroExpr] MacroExpr @@ -591,7 +591,7 @@ macro_expansion.rs: # 44| getMacroCallExpansion(): [MacroItems] MacroItems # 44| getItem(0): [Function] fn x # 44| getParamList(): [ParamList] ParamList -# 44| getBody(): [BlockExpr] { ... } +# 44| getFunctionBody(): [BlockExpr] { ... } # 44| getStmtList(): [StmtList] StmtList # 44| getName(): [Name] x # 44| getVisibility(): [Visibility] Visibility @@ -604,7 +604,7 @@ macro_expansion.rs: # 47| getTokenTree(): [TokenTree] TokenTree # 52| getItem(10): [Function] fn test # 52| getParamList(): [ParamList] ParamList -# 52| getBody(): [BlockExpr] { ... } +# 52| getFunctionBody(): [BlockExpr] { ... } # 52| getStmtList(): [StmtList] StmtList # 53| getStatement(0): [ExprStmt] ExprStmt # 53| getExpr(): [AssignmentExpr] ... = ... @@ -688,7 +688,7 @@ macro_expansion.rs: # 61| getMacroCallExpansion(): [MacroItems] MacroItems # 61| getItem(0): [Function] fn included # 61| getParamList(): [ParamList] ParamList -# 61| getBody(): [BlockExpr] { ... } +# 61| getFunctionBody(): [BlockExpr] { ... } # 61| getStmtList(): [StmtList] StmtList # 61| getStatement(0): [ExprStmt] ExprStmt # 61| getExpr(): [AssignmentExpr] ... = ... @@ -714,7 +714,7 @@ macro_expansion.rs: # 63| getPath(): [Path] doc # 63| getSegment(): [PathSegment] doc # 63| getIdentifier(): [NameRef] doc -# 64| getBody(): [BlockExpr] { ... } +# 64| getFunctionBody(): [BlockExpr] { ... } # 64| getStmtList(): [StmtList] StmtList # 64| getName(): [Name] documented # 66| getItem(13): [MacroRules] MacroRules @@ -722,7 +722,7 @@ macro_expansion.rs: # 66| getTokenTree(): [TokenTree] TokenTree # 70| getItem(14): [Function] fn answer # 70| getParamList(): [ParamList] ParamList -# 70| getBody(): [BlockExpr] { ... } +# 70| getFunctionBody(): [BlockExpr] { ... } # 70| getStmtList(): [StmtList] StmtList # 71| getStatement(0): [LetStmt] let ... = 42 # 71| getInitializer(): [IntegerLiteralExpr] 42 @@ -814,7 +814,7 @@ macro_expansion.rs: # 83| getName(): [Name] f # 83| getSelfParam(): [SelfParam] SelfParam # 83| getName(): [Name] self -# 84| getBody(): [BlockExpr] { ... } +# 84| getFunctionBody(): [BlockExpr] { ... } # 84| getStmtList(): [StmtList] StmtList # 84| getTailExpr(): [MatchExpr] match self { ... } # 83| getScrutinee(): [PathExpr,VariableAccess] self @@ -911,7 +911,7 @@ macro_expansion.rs: # 88| getName(): [Name] other # 88| getSelfParam(): [SelfParam] SelfParam # 88| getName(): [Name] self -# 89| getBody(): [BlockExpr] { ... } +# 89| getFunctionBody(): [BlockExpr] { ... } # 89| getStmtList(): [StmtList] StmtList # 89| getTailExpr(): [MatchExpr] match ... { ... } # 88| getScrutinee(): [TupleExpr] TupleExpr @@ -1041,7 +1041,7 @@ macro_expansion.rs: # 99| getAssocItemList(): [AssocItemList] AssocItemList # 99| getAssocItem(0): [Function] fn my_method # 98| getParamList(): [ParamList] ParamList -# 99| getBody(): [BlockExpr] { ... } +# 99| getFunctionBody(): [BlockExpr] { ... } # 99| getStmtList(): [StmtList] StmtList # 99| getTailExpr(): [PathExpr] CONST_MyDeriveUnion # 99| getPath(): [Path] CONST_MyDeriveUnion @@ -1128,7 +1128,7 @@ proc_macro.rs: # 4| getPath(): [Path] proc_macro_attribute # 4| getSegment(): [PathSegment] proc_macro_attribute # 4| getIdentifier(): [NameRef] proc_macro_attribute -# 5| getBody(): [BlockExpr] { ... } +# 5| getFunctionBody(): [BlockExpr] { ... } # 5| getStmtList(): [StmtList] StmtList # 6| getStatement(0): [LetStmt] let ... = ... # 6| getInitializer(): [MethodCallExpr] ... .unwrap() @@ -1346,7 +1346,7 @@ proc_macro.rs: # 9| getParam(0): [Param] ... # 9| getPat(): [IdentPat] i # 9| getName(): [Name] i -# 9| getBody(): [BlockExpr] { ... } +# 9| getClosureBody(): [BlockExpr] { ... } # 9| getStmtList(): [StmtList] StmtList # 10| getStatement(0): [LetStmt] let ... = ... # 10| getInitializer(): [MethodCallExpr] ast.clone() @@ -2104,7 +2104,7 @@ proc_macro.rs: # 20| getPath(): [Path] proc_macro_attribute # 20| getSegment(): [PathSegment] proc_macro_attribute # 20| getIdentifier(): [NameRef] proc_macro_attribute -# 21| getBody(): [BlockExpr] { ... } +# 21| getFunctionBody(): [BlockExpr] { ... } # 21| getStmtList(): [StmtList] StmtList # 22| getStatement(0): [LetStmt] let ... = ... # 22| getInitializer(): [MacroExpr] MacroExpr @@ -2535,7 +2535,7 @@ proc_macro.rs: # 31| getPath(): [Path] proc_macro_attribute # 31| getSegment(): [PathSegment] proc_macro_attribute # 31| getIdentifier(): [NameRef] proc_macro_attribute -# 32| getBody(): [BlockExpr] { ... } +# 32| getFunctionBody(): [BlockExpr] { ... } # 32| getStmtList(): [StmtList] StmtList # 33| getTailExpr(): [CallExpr] ...::new(...) # 33| getArgList(): [ArgList] ArgList @@ -2568,7 +2568,7 @@ proc_macro.rs: # 36| getSegment(): [PathSegment] proc_macro_derive # 36| getIdentifier(): [NameRef] proc_macro_derive # 36| getTokenTree(): [TokenTree] TokenTree -# 37| getBody(): [BlockExpr] { ... } +# 37| getFunctionBody(): [BlockExpr] { ... } # 37| getStmtList(): [StmtList] StmtList # 38| getStatement(0): [LetStmt] let ... = ... # 38| getInitializer(): [MacroExpr] MacroExpr diff --git a/rust/schema/ast.py b/rust/schema/ast.py index c9c0d4e7ddb..d338c7a1636 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -164,7 +164,7 @@ class CastExpr(Expr, ): class ClosureExpr(Expr, ): attrs: list["Attr"] | child - body: optional["Expr"] | child + closure_body: optional["Expr"] | child for_binder: optional["ForBinder"] | child is_async: predicate is_const: predicate @@ -241,7 +241,7 @@ class FieldExpr(Expr, ): class Function(AssocItem, ExternItem, Item, ): abi: optional["Abi"] | child attrs: list["Attr"] | child - body: optional["BlockExpr"] | child + function_body: optional["BlockExpr"] | child generic_param_list: optional["GenericParamList"] | child is_async: predicate is_const: predicate diff --git a/rust/schema/prelude.py b/rust/schema/prelude.py index 0b1b57ea089..9ca62f33acc 100644 --- a/rust/schema/prelude.py +++ b/rust/schema/prelude.py @@ -74,6 +74,7 @@ class Callable(AstNode): param_list: optional["ParamList"] | child attrs: list["Attr"] | child params: list["Param"] | synth + body: optional["Expr"] | synth class Addressable(AstNode): From 8b10f68e28ac46df1356ef9293db979b5cd54344 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 21 Oct 2025 13:57:24 +0200 Subject: [PATCH 269/965] Rust: Add DB upgrade scripts --- .../old.dbscheme | 3615 +++++++++++++++++ .../rust.dbscheme | 3615 +++++++++++++++++ .../upgrade.properties | 8 + .../upgrade.ql | 15 + 4 files changed, 7253 insertions(+) create mode 100644 rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/old.dbscheme create mode 100644 rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/rust.dbscheme create mode 100644 rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.properties create mode 100644 rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.ql diff --git a/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/old.dbscheme b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/old.dbscheme new file mode 100644 index 00000000000..dfade44a27b --- /dev/null +++ b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/old.dbscheme @@ -0,0 +1,3615 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/rust.dbscheme b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/rust.dbscheme new file mode 100644 index 00000000000..30a0713e5bf --- /dev/null +++ b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/rust.dbscheme @@ -0,0 +1,3615 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.properties b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.properties new file mode 100644 index 00000000000..88ab69acdd9 --- /dev/null +++ b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.properties @@ -0,0 +1,8 @@ +description: Rename function/closure body relations +compatibility: backwards + +closure_expr_bodies.rel: delete +function_bodies.rel: delete + +closure_expr_closure_bodies.rel: run upgrade.ql new_closure_expr_closure_bodies +function_function_bodies.rel: run upgrade.ql new_function_function_bodies diff --git a/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.ql b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.ql new file mode 100644 index 00000000000..592947c289e --- /dev/null +++ b/rust/ql/lib/upgrades/dfade44a27bd44db996ae8c5095a11effc883aba/upgrade.ql @@ -0,0 +1,15 @@ +class Element extends @element { + string toString() { none() } +} + +class Expr extends Element, @expr { } + +class ClosureExpr extends Expr, @closure_expr { } + +class Function extends Element, @function { } + +query predicate new_closure_expr_closure_bodies(ClosureExpr ce, Expr e) { + closure_expr_bodies(ce, e) +} + +query predicate new_function_function_bodies(Function f, Expr e) { function_bodies(f, e) } From 4b6c39004fba1c4e3fef0a8349eb9e4c2ea3b725 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 22 Oct 2025 13:11:09 +0200 Subject: [PATCH 270/965] Rust: Add DB downgrade script --- .../downgrade.ql | 15 + .../old.dbscheme | 3615 +++++++++++++++++ .../rust.dbscheme | 3615 +++++++++++++++++ .../upgrade.properties | 8 + 4 files changed, 7253 insertions(+) create mode 100644 rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/downgrade.ql create mode 100644 rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/old.dbscheme create mode 100644 rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/rust.dbscheme create mode 100644 rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/upgrade.properties diff --git a/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/downgrade.ql b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/downgrade.ql new file mode 100644 index 00000000000..a109848463d --- /dev/null +++ b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/downgrade.ql @@ -0,0 +1,15 @@ +class Element extends @element { + string toString() { none() } +} + +class Expr extends Element, @expr { } + +class ClosureExpr extends Expr, @closure_expr { } + +class Function extends Element, @function { } + +query predicate new_closure_expr_bodies(ClosureExpr ce, Expr e) { + closure_expr_closure_bodies(ce, e) +} + +query predicate new_function_bodies(Function f, Expr e) { function_function_bodies(f, e) } diff --git a/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/old.dbscheme b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/old.dbscheme new file mode 100644 index 00000000000..30a0713e5bf --- /dev/null +++ b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/old.dbscheme @@ -0,0 +1,3615 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_closure_bodies( + int id: @closure_expr ref, + int closure_body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_function_bodies( + int id: @function ref, + int function_body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/rust.dbscheme b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/rust.dbscheme new file mode 100644 index 00000000000..dfade44a27b --- /dev/null +++ b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/rust.dbscheme @@ -0,0 +1,3615 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item_list +| @attr +| @callable +| @expr +| @extern_item_list +| @field_list +| @for_binder +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_ast_node +| @path_segment +| @rename +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +for_binders( + unique int id: @for_binder +); + +#keyset[id] +for_binder_generic_param_lists( + int id: @for_binder ref, + int generic_param_list: @generic_param_list ref +); + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_for_binders( + int id: @type_bound ref, + int for_binder: @for_binder ref +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_for_binders( + int id: @where_pred ref, + int for_binder: @for_binder ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_for_binders( + int id: @closure_expr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_for_binders( + int id: @for_type_repr ref, + int for_binder: @for_binder ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @adt +| @asm_expr +| @assoc_item +| @extern_block +| @extern_crate +| @extern_item +| @impl +| @macro_def +| @macro_rules +| @module +| @trait +| @trait_alias +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_expr_base = + @path_expr +; + +path_pats( + unique int id: @path_pat +); + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +@adt = + @enum +| @struct +| @union +; + +#keyset[id, index] +adt_derive_macro_expansions( + int id: @adt ref, + int index: int ref, + int derive_macro_expansion: @macro_items ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_generic_param_lists( + int id: @const ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +#keyset[id] +const_where_clauses( + int id: @const ref, + int where_clause: @where_clause ref +); + +#keyset[id] +const_has_implementation( + int id: @const ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +#keyset[id] +function_has_implementation( + int id: @function ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/upgrade.properties b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/upgrade.properties new file mode 100644 index 00000000000..d5176368078 --- /dev/null +++ b/rust/downgrades/30a0713e5bf69c60d003e4994e5abd1c78a36826/upgrade.properties @@ -0,0 +1,8 @@ +description: Rename function/closure body relations +compatibility: backwards + +closure_expr_closure_bodies.rel: delete +function_function_bodies.rel: delete + +closure_expr_bodies.rel: run downgrade.ql new_closure_expr_bodies +function_bodies.rel: run downgrade.ql new_function_bodies From 6b08297c2ad612fc345130dc77813f7b742b8540 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:46:25 +0100 Subject: [PATCH 271/965] Rust: Repair after merge. --- .../PathResolutionConsistency.expected | 3 - .../dataflow/sources/file/InlineFlow.expected | 118 +++++---- .../dataflow/sources/file/test.rs | 4 +- .../PathResolutionConsistency.expected | 17 +- .../dataflow/sources/net/InlineFlow.expected | 226 ++++++++++-------- .../dataflow/sources/net/test.rs | 26 +- 6 files changed, 207 insertions(+), 187 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected index 134c5e70e5c..e69de29bb2d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +0,0 @@ -multipleCallTargets -| test.rs:266:22:266:43 | file.read(...) | -| test.rs:275:22:275:41 | f1.read(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index f3a906bc2c6..90d01d250d0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -20,30 +20,28 @@ models | 19 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | | 20 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | | 21 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 22 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 23 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 24 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 25 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 26 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 27 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 28 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 29 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 30 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 31 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | -| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | -| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 38 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 39 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | -| 40 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 41 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 42 | Summary: ::read; Argument[self]; Argument[0]; taint | -| 43 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | -| 44 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | -| 45 | Summary: ::as_path; Argument[self]; ReturnValue; value | +| 22 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 23 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 24 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 25 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 26 | Summary: <_ as std::io::Read>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 27 | Summary: <_ as std::io::Read>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 28 | Summary: <_ as std::io::Read>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 29 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self]; Argument[0].Reference; taint | +| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self]; Argument[0].Reference; taint | +| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 37 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self]; Argument[0].Reference; taint | +| 38 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 39 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 40 | Summary: ::read; Argument[self]; Argument[0]; taint | +| 41 | Summary: ::read_to_end; Argument[self]; Argument[0]; taint | +| 42 | Summary: ::read_to_string; Argument[self]; Argument[0]; taint | +| 43 | Summary: ::as_path; Argument[self]; ReturnValue; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | | test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:43 | ...::read [Ok] | provenance | Src:MaD:11 | @@ -72,7 +70,7 @@ edges | test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | | test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:21 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:21 | -| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:45 | +| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:43 | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:21 | | test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | @@ -111,14 +109,14 @@ edges | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | | | test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | | | test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer | provenance | MaD:42 | -| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:27 | -| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer | provenance | MaD:43 | -| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:29 | -| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer | provenance | MaD:44 | -| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:30 | -| test.rs:107:9:107:16 | mut file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:28 | -| test.rs:107:9:107:16 | mut file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:24 | +| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer | provenance | MaD:40 | +| test.rs:107:9:107:16 | mut file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer | provenance | MaD:41 | +| test.rs:107:9:107:16 | mut file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer | provenance | MaD:42 | +| test.rs:107:9:107:16 | mut file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:107:9:107:16 | mut file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:107:9:107:16 | mut file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:22 | | test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | | | test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | | @@ -138,34 +136,34 @@ edges | test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | | | test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | | | test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | | -| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer | provenance | MaD:42 | -| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | -| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:41 | +| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer | provenance | MaD:40 | +| test.rs:140:13:140:18 | mut f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:39 | | test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | | | test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:142:30:142:40 | [post] &mut buffer | test.rs:143:15:143:20 | buffer | provenance | | | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | | | test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | | | test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | | -| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer | provenance | MaD:42 | -| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | -| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:41 | +| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer | provenance | MaD:40 | +| test.rs:147:13:147:18 | mut f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:39 | | test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | | | test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:149:30:149:40 | [post] &mut buffer | test.rs:150:15:150:20 | buffer | provenance | | | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | | | test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | | | test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | | -| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer | provenance | MaD:42 | -| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | -| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:41 | +| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer | provenance | MaD:40 | +| test.rs:154:13:154:18 | mut f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:39 | | test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | | | test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | | test.rs:156:30:156:40 | [post] &mut buffer | test.rs:157:15:157:20 | buffer | provenance | | | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | | | test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | | | test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | | -| test.rs:164:13:164:17 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:26 | +| test.rs:164:13:164:17 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:24 | | test.rs:164:21:164:39 | ...::open | test.rs:164:21:164:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:164:21:164:51 | ...::open(...) [Ok] | test.rs:164:21:164:52 | TryExpr | provenance | | | test.rs:164:21:164:52 | TryExpr | test.rs:164:13:164:17 | file1 | provenance | | @@ -173,30 +171,30 @@ edges | test.rs:165:21:165:39 | ...::open | test.rs:165:21:165:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | | | test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | | -| test.rs:166:13:166:22 | mut reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:166:13:166:22 | mut reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | | -| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:25 | +| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:23 | | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | | | test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | | | test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | | -| test.rs:173:13:173:17 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:31 | +| test.rs:173:13:173:17 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:29 | | test.rs:173:21:173:39 | ...::open | test.rs:173:21:173:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | | | test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | | -| test.rs:174:13:174:22 | mut reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:174:13:174:22 | mut reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | | | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | | | test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | | | test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:32 | -| test.rs:185:9:185:16 | mut file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:185:9:185:16 | mut file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:185:9:185:16 | mut file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:34 | -| test.rs:185:9:185:16 | mut file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:40 | -| test.rs:185:9:185:16 | mut file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:36 | -| test.rs:185:9:185:16 | mut file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:35 | -| test.rs:185:9:185:16 | mut file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:37 | -| test.rs:185:9:185:16 | mut file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:33 | +| test.rs:185:9:185:16 | mut file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:185:9:185:16 | mut file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:36 | +| test.rs:185:9:185:16 | mut file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:185:9:185:16 | mut file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:32 | +| test.rs:185:9:185:16 | mut file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:38 | +| test.rs:185:9:185:16 | mut file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:34 | +| test.rs:185:9:185:16 | mut file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:33 | +| test.rs:185:9:185:16 | mut file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:35 | +| test.rs:185:9:185:16 | mut file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:31 | | test.rs:185:20:185:40 | ...::open | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | | | test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | | @@ -232,7 +230,7 @@ edges | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | | | test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | | | test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | | -| test.rs:231:13:231:18 | mut f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:32 | +| test.rs:231:13:231:18 | mut f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:30 | | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | test.rs:231:22:231:71 | await ... [Ok] | provenance | | | test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | | | test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | | @@ -243,28 +241,22 @@ edges | test.rs:262:9:262:16 | mut file | test.rs:266:22:266:25 | file | provenance | | | test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 | | test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:20 | -| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | -| test.rs:262:9:262:16 | mut file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:262:20:262:44 | ...::open | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | | | test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | | | test.rs:262:20:262:63 | TryExpr | test.rs:262:9:262:16 | mut file | provenance | | | test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:19 | -| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | test.rs:266:37:266:42 | [post] buffer | provenance | | | test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | | | test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | | | test.rs:273:13:273:18 | mut f1 | test.rs:275:22:275:23 | f1 | provenance | | | test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 | | test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:20 | -| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | -| test.rs:273:13:273:18 | mut f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | test.rs:273:22:273:75 | await ... [Ok] | provenance | | | test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | | | test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | | | test.rs:273:56:273:59 | open | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:19 | -| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | test.rs:275:35:275:40 | [post] buffer | provenance | | | test.rs:275:35:275:40 | [post] buffer | test.rs:276:15:276:20 | buffer | provenance | | | test.rs:276:15:276:20 | buffer | test.rs:276:14:276:20 | &buffer | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 5bbdf4db3f6..35a7d2cc1b8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -242,7 +242,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file2 = tokio::fs::File::open("another_file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.chain(file2); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" -- we cannot resolve the `chain` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" hasTaintFlow="another_file.txt" } { @@ -250,7 +250,7 @@ async fn test_tokio_file() -> std::io::Result<()> { let file1 = tokio::fs::File::open("file.txt").await?; // $ Alert[rust/summary/taint-sources] let mut reader = file1.take(100); reader.read_to_string(&mut buffer).await?; - sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" -- we cannot resolve the `take` and `read_to_string` calls above, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + sink(&buffer); // $ MISSING: hasTaintFlow="file.txt" } Ok(()) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index f117431f873..352992bf4f2 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -1,17 +1,10 @@ multipleCallTargets | test.rs:59:62:59:77 | ...::from(...) | | test.rs:66:58:66:73 | ...::from(...) | -| test.rs:399:31:399:88 | ...::read(...) | -| test.rs:403:31:403:55 | reader.read(...) | -| test.rs:437:26:437:43 | reader2.fill_buf() | -| test.rs:457:31:457:89 | ...::read(...) | -| test.rs:461:31:461:56 | reader2.read(...) | -| test.rs:479:26:479:43 | reader2.fill_buf() | -| test.rs:486:31:486:66 | reader2.read_until(...) | -| test.rs:493:31:493:58 | reader2.read_line(...) | -| test.rs:500:31:500:62 | reader2.read_to_end(...) | -| test.rs:506:36:506:50 | reader2.lines() | -| test.rs:507:18:507:36 | lines_stream.next() | -| test.rs:508:36:508:54 | lines_stream.next() | +| test.rs:389:30:389:67 | pinned.poll_read(...) | +| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) | +| test.rs:423:27:423:71 | ... .poll_fill_buf(...) | +| test.rs:447:30:447:67 | pinned.poll_read(...) | +| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) | | test.rs:519:50:519:66 | ...::from(...) | | test.rs:519:50:519:66 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index da25afb2abb..3d15aae93bd 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -6,69 +6,68 @@ models | 5 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 6 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 7 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 8 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 9 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 10 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 15 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 18 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 19 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 20 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 21 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 22 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 24 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 25 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 26 | Summary: ::new; Argument[0]; ReturnValue; value | -| 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 28 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 30 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 32 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 37 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 38 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 39 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 40 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 8 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 9 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 10 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 18 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 19 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 20 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 22 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 23 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 24 | Summary: ::new; Argument[0]; ReturnValue; value | +| 25 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 26 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 27 | Summary: ::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 28 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 29 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 30 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 31 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 36 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | +| 37 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 38 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 39 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:34 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:33 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:34 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:27 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:33 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:25 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:35 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:27 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:34 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:25 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:33 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:27 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:32 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:25 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:32 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:31 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -76,19 +75,19 @@ edges | test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:30 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:29 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | -| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | -| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | +| test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | +| test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:24 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:22 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | @@ -107,8 +106,8 @@ edges | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:21 | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:36 | | test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | @@ -120,17 +119,17 @@ edges | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:4 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | -| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:20 | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:22 | +| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:18 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:20 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:36 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:35 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:38 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:23 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:39 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:40 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:37 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:39 | | test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | @@ -158,54 +157,72 @@ edges | test.rs:374:15:374:17 | tcp | test.rs:374:14:374:17 | &tcp | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:381:15:381:20 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | | +| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | | test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | | test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:28 | +| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:26 | | test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | +| test.rs:386:17:386:26 | mut pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:27 | | test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:387:19:387:24 | pinned [&ref] | provenance | | +| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:27 | | test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | | test.rs:386:30:386:50 | ...::new(...) [&ref] | test.rs:386:17:386:26 | mut pinned [&ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:25 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:23 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [&ref] | provenance | MaD:24 | | test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | | test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | | test.rs:387:19:387:24 | pinned [&ref] | test.rs:387:18:387:24 | &pinned | provenance | | +| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | +| test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | | +| test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | +| test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | +| test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | +| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | +| test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | +| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | +| test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | +| test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | +| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | +| test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | +| test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:9 | | test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:8 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:9 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:17 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:9 | | test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:15 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 | | test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:13 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:10 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:11 | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 | -| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | | test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | -| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:29 | +| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:28 | | test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | | test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | -| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:414:19:414:24 | pinned [&ref] | provenance | | -| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | | test.rs:413:30:413:51 | ...::new(...) [&ref] | test.rs:413:17:413:26 | mut pinned [&ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:25 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:23 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [&ref] | provenance | MaD:24 | | test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | | test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:414:19:414:24 | pinned [&ref] | test.rs:414:18:414:24 | &pinned | provenance | | @@ -217,11 +234,11 @@ edges | test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | | test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | -| test.rs:423:27:423:48 | ...::new(...) [&ref] | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | +| test.rs:423:27:423:48 | ...::new(...) [&ref] | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:25 | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:23 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) [&ref] | provenance | MaD:24 | | test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | @@ -237,30 +254,28 @@ edges | test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:445:19:445:24 | pinned [&ref] | provenance | | | test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | | test.rs:444:30:444:51 | ...::new(...) [&ref] | test.rs:444:17:444:26 | mut pinned [&ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:25 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:23 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [&ref] | provenance | MaD:24 | | test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | | test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | | test.rs:445:19:445:24 | pinned [&ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:8 | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | | test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | | test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:8 | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | | test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | -| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:468:19:468:24 | pinned [&ref] | provenance | | -| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) [&ref] | test.rs:467:17:467:26 | mut pinned [&ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:25 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [&ref] | provenance | MaD:26 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:23 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [&ref] | provenance | MaD:24 | | test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:468:19:468:24 | pinned [&ref] | test.rs:468:18:468:24 | &pinned | provenance | | @@ -275,15 +290,15 @@ edges | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | | test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | | test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | +| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 | | test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | | test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | | test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:10 | | test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | | test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | | test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | | test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | @@ -431,6 +446,23 @@ nodes | test.rs:387:18:387:24 | &pinned | semmle.label | &pinned | | test.rs:387:19:387:24 | pinned | semmle.label | pinned | | test.rs:387:19:387:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:389:56:389:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:389:61:389:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:391:22:391:28 | &buffer | semmle.label | &buffer | +| test.rs:391:23:391:28 | buffer | semmle.label | buffer | +| test.rs:392:22:392:33 | &... | semmle.label | &... | +| test.rs:392:23:392:33 | buffer[...] | semmle.label | buffer[...] | +| test.rs:399:63:399:73 | &mut reader [&ref] | semmle.label | &mut reader [&ref] | +| test.rs:399:68:399:73 | reader | semmle.label | reader | +| test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | +| test.rs:399:81:399:87 | [post] buffer1 | semmle.label | [post] buffer1 | +| test.rs:400:18:400:40 | &... | semmle.label | &... | +| test.rs:400:19:400:40 | buffer1[...] | semmle.label | buffer1[...] | +| test.rs:403:31:403:36 | reader | semmle.label | reader | +| test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | semmle.label | [post] &mut buffer2 [&ref] | +| test.rs:403:48:403:54 | [post] buffer2 | semmle.label | [post] buffer2 | +| test.rs:405:18:405:40 | &... | semmle.label | &... | +| test.rs:405:19:405:40 | buffer2[...] | semmle.label | buffer2[...] | | test.rs:408:13:408:23 | mut reader2 | semmle.label | mut reader2 | | test.rs:408:27:408:61 | ...::new(...) | semmle.label | ...::new(...) | | test.rs:408:55:408:60 | reader | semmle.label | reader | @@ -530,6 +562,8 @@ nodes | test.rs:501:19:501:24 | buffer | semmle.label | buffer | subpaths testFailures +| test.rs:400:18:400:40 | &... | Fixed missing result: hasTaintFlow=url | +| test.rs:405:18:405:40 | &... | Fixed missing result: hasTaintFlow=url | #select | test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | | test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | @@ -554,6 +588,10 @@ testFailures | test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:36 | ...::connect | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:381:14:381:20 | &reader | test.rs:373:19:373:36 | ...::connect | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:391:22:391:28 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:391:22:391:28 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:392:22:392:33 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:392:22:392:33 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:400:18:400:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:400:18:400:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:405:18:405:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:405:18:405:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:409:14:409:21 | &reader2 | test.rs:373:19:373:36 | ...::connect | test.rs:409:14:409:21 | &reader2 | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:414:18:414:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:414:18:414:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:418:22:418:28 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:418:22:418:28 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index c67434e3e44..cf4301bd2e4 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -386,21 +386,21 @@ mod futures_rustls { let mut pinned = Pin::new(&mut reader); sink(&pinned); // $ hasTaintFlow=url let mut cx = Context::from_waker(futures::task::noop_waker_ref()); - let bytes_read = pinned.poll_read(&mut cx, &mut buffer); // we cannot correctly resolve this call, since it relies on `Deref` + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer); // $ MISSING: hasTaintFlow=url - sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + sink(&buffer); // $ hasTaintFlow=url + sink(&buffer[..n]); // $ hasTaintFlow=url } } { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; sink(&buffer1[..bytes_read1]); // $ MISSING: hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read2 = reader.read(&mut buffer2).await?; sink(&buffer2[..bytes_read2]); // $ MISSING: hasTaintFlow=url } @@ -434,7 +434,7 @@ mod futures_rustls { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let buffer = reader2.fill_buf().await?; sink(buffer); // $ hasTaintFlow=url } @@ -454,11 +454,11 @@ mod futures_rustls { { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; - let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; - let bytes_read2 = reader2.read(&mut buffer2).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let bytes_read2 = reader2.read(&mut buffer2).await?; sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url } @@ -476,34 +476,34 @@ mod futures_rustls { { // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) - let buffer = reader2.fill_buf().await?; // we cannot resolve the `fill_buf` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let buffer = reader2.fill_buf().await?; sink(buffer); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_until` extension method let mut line = Vec::new(); - let _bytes_read = reader2.read_until(b'\n', &mut line).await?; // we cannot resolve the `read_until` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let _bytes_read = reader2.read_until(b'\n', &mut line).await?; sink(&line); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_line` extension method let mut line = String::new(); - let _bytes_read = reader2.read_line(&mut line).await?; // we cannot resolve the `read_line` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let _bytes_read = reader2.read_line(&mut line).await?; sink(&line); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::read_to_end` extension method let mut buffer = Vec::with_capacity(1024); - let _bytes_read = reader2.read_to_end(&mut buffer).await?; // we cannot resolve the `read` call, which comes from `impl AsyncReadExt for R {}` in `async_read_ext.rs` + let _bytes_read = reader2.read_to_end(&mut buffer).await?; sink(&buffer); // $ hasTaintFlow=url } { // using the `AsyncBufReadExt::lines` extension method - let mut lines_stream = reader2.lines(); // we cannot resolve the `lines` call, which comes from `impl AsyncBufReadExt for R {}` in `async_buf_read_ext.rs` + let mut lines_stream = reader2.lines(); sink(lines_stream.next().await.unwrap()); // $ MISSING: hasTaintFlow=url while let Some(line) = lines_stream.next().await { sink(line.unwrap()); // $ MISSING: hasTaintFlow From e18bf1661a747883cc60603d9c37c12d2149146b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:52:12 +0100 Subject: [PATCH 272/965] Rust: Accept result de-regression. --- .../library-tests/dataflow/sources/net/InlineFlow.expected | 2 -- rust/ql/test/library-tests/dataflow/sources/net/test.rs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 3d15aae93bd..adeaf8225fe 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -562,8 +562,6 @@ nodes | test.rs:501:19:501:24 | buffer | semmle.label | buffer | subpaths testFailures -| test.rs:400:18:400:40 | &... | Fixed missing result: hasTaintFlow=url | -| test.rs:405:18:405:40 | &... | Fixed missing result: hasTaintFlow=url | #select | test.rs:12:10:12:23 | remote_string1 | test.rs:11:26:11:47 | ...::get | test.rs:12:10:12:23 | remote_string1 | $@ | test.rs:11:26:11:47 | ...::get | ...::get | | test.rs:15:10:15:23 | remote_string2 | test.rs:14:26:14:47 | ...::get | test.rs:15:10:15:23 | remote_string2 | $@ | test.rs:14:26:14:47 | ...::get | ...::get | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index cf4301bd2e4..ce100e35f2b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -397,12 +397,12 @@ mod futures_rustls { // using the `AsyncReadExt::read` extension method (higher-level) let mut buffer1 = [0u8; 64]; let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; - sink(&buffer1[..bytes_read1]); // $ MISSING: hasTaintFlow=url + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url let mut buffer2 = [0u8; 64]; let bytes_read2 = reader.read(&mut buffer2).await?; - sink(&buffer2[..bytes_read2]); // $ MISSING: hasTaintFlow=url + sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url } let mut reader2 = futures::io::BufReader::new(reader); From 00bf049c85af639718e4c0bf59e29e3ae437c821 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 7 Oct 2025 14:49:53 +0200 Subject: [PATCH 273/965] Rust: Add more type inference tests --- .../test/library-tests/type-inference/main.rs | 47 +++ .../type-inference/type-inference.expected | 362 +++++++++++++++++- 2 files changed, 404 insertions(+), 5 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 4f567b5abbf..502fe0e5a87 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2696,6 +2696,52 @@ pub mod path_buf { } } +mod if_expr { + pub trait MyTrait { + fn m(&self) -> T; + } + + #[derive(Default)] + struct S(T); + + impl MyTrait for S { + fn m(&self) -> i32 { + self.0 // $ fieldof=S + } + } + + impl MyTrait for S> { + fn m(&self) -> i32 { + self.0 .0 // $ fieldof=S + } + } + + impl S { + fn m2(&self) -> S> { + S(S(self.0)) // $ fieldof=S + } + } + + pub fn f(b: bool) -> Box> { + let x = if b { + let y = Default::default(); // $ target=default + y // $ type=y:T.i32 + } else { + S(2) + }; + + // This code exhibits an explosion in type inference when type information is propagated + // from an `if` expression to its branches. + let x = S(1); + if b { + let x = x.m2(); // $ target=m2 + Box::new(x) // $ target=new + } else { + Box::new(x) // $ target=new + } + } +} + mod blanket_impl; mod closure; mod dereference; @@ -2733,4 +2779,5 @@ fn main() { pattern_matching::test_all_patterns(); // $ target=test_all_patterns pattern_matching_experimental::box_patterns(); // $ target=box_patterns dyn_type::test(); // $ target=test + if_expr::f(true); // $ target=f } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 09263cd25e9..7d836cef857 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -5618,11 +5618,363 @@ inferType | main.rs:2693:13:2693:20 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | | main.rs:2693:24:2693:37 | ...::new(...) | | main.rs:2668:5:2668:25 | PathBuf | | main.rs:2694:24:2694:31 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2706:5:2706:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2707:5:2707:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2707:20:2707:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2707:41:2707:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2723:5:2723:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2701:14:2701:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2701:14:2701:18 | SelfParam | &T | main.rs:2700:5:2702:5 | Self [trait MyTrait] | +| main.rs:2708:14:2708:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2708:14:2708:18 | SelfParam | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2708:14:2708:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2708:28:2710:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:13:2709:16 | self | | file://:0:0:0:0 | & | +| main.rs:2709:13:2709:16 | self | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2709:13:2709:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:13:2709:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2714:14:2714:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2714:14:2714:18 | SelfParam | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2714:14:2714:18 | SelfParam | &T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2714:14:2714:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2714:28:2716:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:13:2715:16 | self | | file://:0:0:0:0 | & | +| main.rs:2715:13:2715:16 | self | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2715:13:2715:16 | self | &T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2715:13:2715:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:13:2715:18 | self.0 | | main.rs:2704:5:2705:19 | S | +| main.rs:2715:13:2715:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:13:2715:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:15:2720:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2720:15:2720:19 | SelfParam | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2720:15:2720:19 | SelfParam | &T.T | main.rs:2719:10:2719:16 | T | +| main.rs:2720:33:2722:9 | { ... } | | main.rs:2704:5:2705:19 | S | +| main.rs:2720:33:2722:9 | { ... } | T | main.rs:2704:5:2705:19 | S | +| main.rs:2720:33:2722:9 | { ... } | T.T | main.rs:2719:10:2719:16 | T | +| main.rs:2721:13:2721:24 | S(...) | | main.rs:2704:5:2705:19 | S | +| main.rs:2721:13:2721:24 | S(...) | T | main.rs:2704:5:2705:19 | S | +| main.rs:2721:13:2721:24 | S(...) | T.T | main.rs:2719:10:2719:16 | T | +| main.rs:2721:15:2721:23 | S(...) | | main.rs:2704:5:2705:19 | S | +| main.rs:2721:15:2721:23 | S(...) | T | main.rs:2719:10:2719:16 | T | +| main.rs:2721:17:2721:20 | self | | file://:0:0:0:0 | & | +| main.rs:2721:17:2721:20 | self | &T | main.rs:2704:5:2705:19 | S | +| main.rs:2721:17:2721:20 | self | &T.T | main.rs:2719:10:2719:16 | T | +| main.rs:2721:17:2721:22 | self.0 | | main.rs:2719:10:2719:16 | T | +| main.rs:2725:14:2725:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2725:48:2742:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2725:48:2742:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:48:2742:5 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2725:48:2742:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:13:2726:13 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2726:13:2726:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:17:2731:9 | if b {...} else {...} | | main.rs:2704:5:2705:19 | S | +| main.rs:2726:17:2731:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:20:2726:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2726:22:2729:9 | { ... } | | main.rs:2704:5:2705:19 | S | +| main.rs:2726:22:2729:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2727:17:2727:17 | y | | main.rs:2704:5:2705:19 | S | +| main.rs:2727:17:2727:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2727:21:2727:38 | ...::default(...) | | main.rs:2704:5:2705:19 | S | +| main.rs:2727:21:2727:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2728:13:2728:13 | y | | main.rs:2704:5:2705:19 | S | +| main.rs:2728:13:2728:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2729:16:2731:9 | { ... } | | main.rs:2704:5:2705:19 | S | +| main.rs:2729:16:2731:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:13:2730:16 | S(...) | | main.rs:2704:5:2705:19 | S | +| main.rs:2730:13:2730:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:15:2730:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2735:13:2735:13 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:13:2735:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2735:17:2735:20 | S(...) | | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:17:2735:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2736:9:2741:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:9:2741:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:12:2736:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2736:14:2739:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2736:14:2739:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2736:14:2739:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2736:14:2739:9 | { ... } | T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2736:14:2739:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2737:17:2737:17 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:17:2737:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2737:21:2737:21 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2737:21:2737:26 | x.m2() | | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2737:21:2737:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2738:13:2738:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:13:2738:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2738:22:2738:22 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2738:22:2738:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2739:16:2741:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2739:16:2741:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2739:16:2741:9 | { ... } | T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2739:16:2741:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2740:13:2740:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:13:2740:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2740:22:2740:22 | x | | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | +| main.rs:2740:22:2740:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2752:5:2752:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2753:5:2753:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2753:20:2753:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2753:41:2753:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2769:5:2769:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2782:5:2782:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2782:5:2782:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2782:5:2782:20 | ...::f(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | +| main.rs:2782:5:2782:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:16:2782:19 | true | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 65b706ab8045215d2f4b6791d47b6e5891a67c01 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 7 Oct 2025 15:07:08 +0200 Subject: [PATCH 274/965] Rust: Non-symmetric type propagation for lub coercions --- .../codeql/rust/internal/TypeInference.qll | 84 ++++++- .../type-inference/type-inference.expected | 230 ------------------ 2 files changed, 79 insertions(+), 235 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 36847cfd2cb..a7e401d74ea 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -524,6 +524,14 @@ private Struct getRangeType(RangeExpr re) { result instanceof RangeToInclusiveStruct } +private predicate bodyReturns(Expr body, Expr e) { + exists(ReturnExpr re, Callable c | + e = re.getExpr() and + c = re.getEnclosingCallable() and + body = c.getBody() + ) +} + /** * Holds if the type tree of `n1` at `prefix1` should be equal to the type tree * of `n2` at `prefix2` and type information should propagate in both directions @@ -540,9 +548,11 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat let.getInitializer() = n2 ) or - n1 = n2.(IfExpr).getABranch() - or - n1 = n2.(MatchExpr).getAnArm().getExpr() + n2 = + any(MatchExpr me | + n1 = me.getAnArm().getExpr() and + me.getNumberOfArms() = 1 + ) or exists(LetExpr let | n1 = let.getScrutinee() and @@ -573,6 +583,9 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() or n1 = n2.(MacroPat).getMacroCall().getMacroCallExpansion() + or + bodyReturns(n1, n2) and + strictcount(Expr e | bodyReturns(n1, e)) = 1 ) or ( @@ -606,8 +619,12 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat ) ) or - // an array list expression (`[1, 2, 3]`) has the type of the first (any) element - n1.(ArrayListExpr).getExpr(_) = n2 and + // an array list expression (`[1, 2, 3]`) has the type of the element + n1 = + any(ArrayListExpr ale | + ale.getAnExpr() = n2 and + ale.getNumberOfExprs() = 1 + ) and prefix1 = TypePath::singleton(TArrayTypeParameter()) and prefix2.isEmpty() or @@ -635,6 +652,61 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat prefix2.isEmpty() } +/** + * Holds if `child` is a child of `parent`, and the Rust compiler applies [least + * upper bound (LUB) coercion](1) to infer the type of `parent` from the type of + * `child`. + * + * In this case, we want type information to only flow from `child` to `parent`, + * to avoid (a) either having to model LUB coercions, or (b) risk combinatorial + * explosion in inferred types. + * + * [1]: https://doc.rust-lang.org/reference/type-coercions.html#r-coerce.least-upper-bound + */ +private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { + child = parent.(IfExpr).getABranch() and + prefix.isEmpty() + or + parent = + any(MatchExpr me | + child = me.getAnArm().getExpr() and + me.getNumberOfArms() > 1 + ) and + prefix.isEmpty() + or + parent = + any(ArrayListExpr ale | + child = ale.getAnExpr() and + ale.getNumberOfExprs() > 1 + ) and + prefix = TypePath::singleton(TArrayTypeParameter()) + or + bodyReturns(parent, child) and + strictcount(Expr e | bodyReturns(parent, e)) > 1 and + prefix.isEmpty() +} + +/** + * Holds if the type tree of `n1` at `prefix1` should be equal to the type tree + * of `n2` at `prefix2`, but type information should only propagate from `n1` to + * `n2`. + */ +private predicate typeEqualityNonSymmetric( + AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2 +) { + lubCoercion(n2, n1, prefix2) and + prefix1.isEmpty() + or + exists(AstNode mid, TypePath prefixMid, TypePath suffix | + typeEquality(n1, prefixMid, mid, prefix2) or + typeEquality(mid, prefix2, n1, prefixMid) + | + lubCoercion(mid, n2, suffix) and + not lubCoercion(mid, n1, _) and + prefix1 = prefixMid.append(suffix) + ) +} + pragma[nomagic] private Type inferTypeEquality(AstNode n, TypePath path) { exists(TypePath prefix1, AstNode n2, TypePath prefix2, TypePath suffix | @@ -644,6 +716,8 @@ private Type inferTypeEquality(AstNode n, TypePath path) { typeEquality(n, prefix1, n2, prefix2) or typeEquality(n2, prefix2, n, prefix1) + or + typeEqualityNonSymmetric(n2, prefix2, n, prefix1) ) } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 7d836cef857..170651621c8 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -5064,9 +5064,7 @@ inferType | main.rs:2479:32:2479:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | | main.rs:2479:33:2479:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2479:39:2479:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:39:2479:39 | 2 | | {EXTERNAL LOCATION} | u16 | | main.rs:2479:42:2479:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:42:2479:42 | 3 | | {EXTERNAL LOCATION} | u16 | | main.rs:2480:13:2480:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2480:13:2480:13 | u | | file://:0:0:0:0 | & | | main.rs:2480:18:2480:23 | vals4a | | {EXTERNAL LOCATION} | Vec | @@ -5077,9 +5075,7 @@ inferType | main.rs:2482:22:2482:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2482:23:2482:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2482:29:2482:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2482:29:2482:29 | 2 | | {EXTERNAL LOCATION} | u16 | | main.rs:2482:32:2482:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2482:32:2482:32 | 3 | | {EXTERNAL LOCATION} | u16 | | main.rs:2485:13:2485:17 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2485:13:2485:17 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2485:13:2485:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | @@ -5093,9 +5089,7 @@ inferType | main.rs:2485:31:2485:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | | main.rs:2485:32:2485:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2485:38:2485:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:38:2485:38 | 2 | | {EXTERNAL LOCATION} | u32 | | main.rs:2485:41:2485:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:41:2485:41 | 3 | | {EXTERNAL LOCATION} | u32 | | main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2486:13:2486:13 | u | | file://:0:0:0:0 | & | @@ -5116,9 +5110,7 @@ inferType | main.rs:2488:32:2488:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | | main.rs:2488:33:2488:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2488:39:2488:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:39:2488:39 | 2 | | {EXTERNAL LOCATION} | u64 | | main.rs:2488:42:2488:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:42:2488:42 | 3 | | {EXTERNAL LOCATION} | u64 | | main.rs:2489:13:2489:13 | u | | file://:0:0:0:0 | & | | main.rs:2489:13:2489:13 | u | &T | {EXTERNAL LOCATION} | u64 | | main.rs:2489:18:2489:22 | vals6 | | {EXTERNAL LOCATION} | Vec | @@ -5681,63 +5673,12 @@ inferType | main.rs:2735:13:2735:13 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2735:13:2735:13 | x | | main.rs:2704:5:2705:19 | S | | main.rs:2735:13:2735:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2735:13:2735:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2735:17:2735:20 | S(...) | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2735:17:2735:20 | S(...) | | main.rs:2704:5:2705:19 | S | | main.rs:2735:17:2735:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2735:17:2735:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2735:19:2735:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2736:9:2741:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | | main.rs:2736:9:2741:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | | main.rs:2736:9:2741:9 | if b {...} else {...} | T | main.rs:2700:5:2702:5 | dyn MyTrait | @@ -5745,225 +5686,56 @@ inferType | main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | main.rs:2704:5:2705:19 | S | | main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2736:9:2741:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2736:12:2736:12 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2736:14:2739:9 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2736:14:2739:9 | { ... } | A | {EXTERNAL LOCATION} | Global | | main.rs:2736:14:2739:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2736:14:2739:9 | { ... } | T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2736:14:2739:9 | { ... } | T.T | main.rs:2704:5:2705:19 | S | | main.rs:2736:14:2739:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2736:14:2739:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2737:17:2737:17 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2737:17:2737:17 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2737:17:2737:17 | x | T | main.rs:2704:5:2705:19 | S | | main.rs:2737:17:2737:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2737:17:2737:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2737:21:2737:21 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2737:21:2737:21 | x | | main.rs:2704:5:2705:19 | S | | main.rs:2737:21:2737:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2737:21:2737:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2737:21:2737:26 | x.m2() | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2737:21:2737:26 | x.m2() | | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T | {EXTERNAL LOCATION} | i32 | | main.rs:2737:21:2737:26 | x.m2() | T | main.rs:2704:5:2705:19 | S | | main.rs:2737:21:2737:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2737:21:2737:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2738:13:2738:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2738:13:2738:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2738:13:2738:23 | ...::new(...) | T.T | main.rs:2704:5:2705:19 | S | | main.rs:2738:13:2738:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2738:13:2738:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2738:22:2738:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2738:22:2738:22 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2738:22:2738:22 | x | T | main.rs:2704:5:2705:19 | S | | main.rs:2738:22:2738:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2738:22:2738:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2739:16:2741:9 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2739:16:2741:9 | { ... } | A | {EXTERNAL LOCATION} | Global | | main.rs:2739:16:2741:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2739:16:2741:9 | { ... } | T | main.rs:2704:5:2705:19 | S | | main.rs:2739:16:2741:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2739:16:2741:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2740:13:2740:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2740:13:2740:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | | main.rs:2740:13:2740:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2740:13:2740:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2740:22:2740:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | | main.rs:2740:22:2740:22 | x | | main.rs:2704:5:2705:19 | S | | main.rs:2740:22:2740:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | T.T.T.T.T.T.T.T.T | main.rs:2704:5:2705:19 | S | | main.rs:2740:22:2740:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2752:5:2752:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | | main.rs:2753:5:2753:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | @@ -6000,7 +5772,6 @@ inferType | pattern_matching.rs:20:9:20:18 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:20:9:20:18 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:14:20:17 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:20:23:23:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | @@ -6213,7 +5984,6 @@ inferType | pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:100:25:100:25 | y | | file://:0:0:0:0 | & | | pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:102:14:107:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | From 3561d01144a169c9d9cd67d7563095d638317d13 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 22 Oct 2025 14:16:12 -0400 Subject: [PATCH 275/965] Crytpo: Trying to fix in pipeline test failure, experimentally altering a line to see if this forces the test to pass. The test is off by one column in the piepline --- .../query-tests/quantum/examples/BadMacUse/BadMacUse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 597c2a106d8..f985a64a8ba 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -122,7 +122,7 @@ class BadMacUse { Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); byte[] computedMac = mac.doFinal(ciphertext); // False Positive - + // Concatenate ciphertext and MAC byte[] output = new byte[ciphertext.length + computedMac.length]; System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); From 08379393b32b7d361d63a4f1f37c906cd5df9ecd Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 22 Oct 2025 15:50:33 -0400 Subject: [PATCH 276/965] Crypto: Fix off by one column issue in unit tests. --- .../quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected | 2 +- .../BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected | 2 +- .../query-tests/quantum/examples/BadMacUse/BadMacUse.java | 2 +- .../UnknownKDFIterationCount.expected | 2 +- .../WeakKDFIterationCount.expected | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index b7a86c558cd..2a3c1d533df 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -31,6 +31,6 @@ nodes | BadMacUse.java:124:42:124:51 | ciphertext | semmle.label | ciphertext | subpaths testFailures -| BadMacUse.java:63:118:63:128 | // $Source | Missing result: Source | +| BadMacUse.java:63:118:63:127 | // $Source | Missing result: Source | | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | Unexpected result: Source | | BadMacUse.java:124:42:124:51 | ciphertext | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index da2c35d1d6d..70733bbf8d3 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -11,4 +11,4 @@ nodes | BadMacUse.java:76:44:76:52 | plaintext | semmle.label | plaintext | subpaths testFailures -| BadMacUse.java:50:56:50:66 | // $Source | Missing result: Source | +| BadMacUse.java:50:56:50:65 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index f985a64a8ba..597c2a106d8 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -122,7 +122,7 @@ class BadMacUse { Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); byte[] computedMac = mac.doFinal(ciphertext); // False Positive - + // Concatenate ciphertext and MAC byte[] output = new byte[ciphertext.length + computedMac.length]; System.arraycopy(ciphertext, 0, output, 0, ciphertext.length); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected index 33d8a155551..472d7909049 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected @@ -1,5 +1,5 @@ #select | Test.java:47:22:47:49 | KeyDerivation | Key derivation operation with unknown iteration: $@ | Test.java:43:53:43:70 | iterationCount | iterationCount | testFailures -| Test.java:45:94:45:154 | // $Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | +| Test.java:45:94:45:153 | // $Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | | Test.java:47:22:47:49 | Key derivation operation with unknown iteration: $@ | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected index 5b93bccd0b2..3567afd0322 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected @@ -13,4 +13,4 @@ nodes | Test.java:59:72:59:85 | iterationCount | semmle.label | iterationCount | subpaths testFailures -| Test.java:43:92:43:102 | // $Source | Missing result: Source | +| Test.java:43:92:43:101 | // $Source | Missing result: Source | From bdad95d810ffe53de16ce8c89f62d6f28323f0ca Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Wed, 22 Oct 2025 15:56:14 -0400 Subject: [PATCH 277/965] Crypto: Fixed alphabetical ordering issue in not_included_in_qls.expected --- .../java/query-suite/not_included_in_qls.expected | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 485c6711dc9..58b6b5766f2 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -233,10 +233,10 @@ ql/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql ql/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql ql/java/ql/src/experimental/quantum/Examples/InsecureIVorNonceSource.ql ql/java/ql/src/experimental/quantum/Examples/NonAESGCMCipher.ql +ql/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql ql/java/ql/src/experimental/quantum/Examples/TestAESGCMNonce.ql ql/java/ql/src/experimental/quantum/Examples/TestCipher.ql ql/java/ql/src/experimental/quantum/Examples/TestHash.ql -ql/java/ql/src/experimental/quantum/Examples/ReusedNonce.ql ql/java/ql/src/experimental/quantum/Examples/UnknownHash.ql ql/java/ql/src/experimental/quantum/Examples/UnknownIVorNonceSource.ql ql/java/ql/src/experimental/quantum/Examples/UnknownKDFIterationCount.ql From dff327ea166b7b240f20d7db1bc1351065cb3ef8 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 23 Oct 2025 08:56:56 +0200 Subject: [PATCH 278/965] C#: Delete exception splitting. --- .../csharp/controlflow/ControlFlowGraph.qll | 2 - .../csharp/controlflow/internal/Splitting.qll | 182 +----------------- 2 files changed, 2 insertions(+), 182 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll index 3534e4d2920..438174fe297 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -294,8 +294,6 @@ module ControlFlow { } class Split = Splitting::Split; - - class ExceptionHandlerSplit = Splitting::ExceptionHandlerSplitting::ExceptionHandlerSplit; } class BasicBlock = BBs::BasicBlock; diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index e31b1a9f44c..210326b987c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -25,8 +25,7 @@ private module Cached { newtype TSplitKind = TInitializerSplitKind() or TConditionalCompletionSplitKind() or - TAssertionSplitKind() or - TExceptionHandlerSplitKind() + TAssertionSplitKind() cached newtype TSplit = @@ -35,8 +34,7 @@ private module Cached { TAssertionSplit(AssertionSplitting::Assertion a, int i, boolean success) { exists(a.getExpr(i)) and success in [false, true] - } or - TExceptionHandlerSplit(ExceptionClass ec) + } } import Cached @@ -449,179 +447,3 @@ module AssertionSplitting { } } } - -module ExceptionHandlerSplitting { - private newtype TMatch = - TAlways() or - TMaybe() or - TNever() - - /** - * A split for elements belonging to a `catch` clause, which determines the type of - * exception to handle. For example, in - * - * ```csharp - * try - * { - * if (M() > 0) - * throw new ArgumentException(); - * else if (M() < 0) - * throw new ArithmeticException("negative"); - * else - * return; - * } - * catch (ArgumentException e) - * { - * Log.Write("M() positive"); - * } - * catch (ArithmeticException e) when (e.Message != null) - * { - * Log.Write($"M() {e.Message}"); - * } - * ``` - * - * all control flow nodes in - * ```csharp - * catch (ArgumentException e) - * ``` - * and - * ```csharp - * catch (ArithmeticException e) when (e.Message != null) - * ``` - * have two splits: one representing the `try` block throwing an `ArgumentException`, - * and one representing the `try` block throwing an `ArithmeticException`. - */ - class ExceptionHandlerSplit extends Split, TExceptionHandlerSplit { - private ExceptionClass ec; - - ExceptionHandlerSplit() { this = TExceptionHandlerSplit(ec) } - - /** Gets the exception type that this split represents. */ - ExceptionClass getExceptionClass() { result = ec } - - override string toString() { result = "exception: " + ec.toString() } - } - - private class ExceptionHandlerSplitKind extends SplitKind, TExceptionHandlerSplitKind { - override int getListOrder() { result = AssertionSplitting::getNextListOrder() } - - override string toString() { result = "ExceptionHandler" } - } - - int getNextListOrder() { result = AssertionSplitting::getNextListOrder() + 1 } - - private class ExceptionHandlerSplitImpl extends SplitImpl instanceof ExceptionHandlerSplit { - override ExceptionHandlerSplitKind getKind() { any() } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - // Entry into first catch clause - exists(Statements::TryStmtTree ts | - super.getExceptionClass() = ts.getAThrownException(pred, c) - | - succ(pred, succ, c) and - succ = ts.(TryStmt).getCatchClause(0).(SpecificCatchClause) - ) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { none() } - - /** - * Holds if this split applies to catch clause `scc`. The parameter `match` - * indicates whether the catch clause `scc` may match the exception type of - * this split. - */ - private predicate appliesToCatchClause(SpecificCatchClause scc, TMatch match) { - exists(Statements::TryStmtTree ts, ExceptionClass ec | - ec = super.getExceptionClass() and - ec = ts.getAThrownException(_, _) and - scc = ts.(TryStmt).getACatchClause() - | - if scc.getCaughtExceptionType() = ec.getABaseType*() - then match = TAlways() - else - if scc.getCaughtExceptionType() = ec.getASubType+() - then match = TMaybe() - else match = TNever() - ) - } - - /** - * Holds if this split applies to control flow element `pred`, where `pred` - * is a valid predecessor with completion `c`. - */ - private predicate appliesToPredecessor(AstNode pred, Completion c) { - this.appliesTo(pred) and - (succ(pred, _, c) or scopeLast(_, pred, c)) and - ( - pred instanceof SpecificCatchClause - implies - pred = - any(SpecificCatchClause scc | - if c instanceof MatchingCompletion - then - exists(TMatch match | this.appliesToCatchClause(scc, match) | - c = - any(MatchingCompletion mc | - if mc.isMatch() then match != TNever() else match != TAlways() - ) - ) - else ( - (scc.isLast() and c instanceof ThrowCompletion) - implies - exists(TMatch match | this.appliesToCatchClause(scc, match) | match != TAlways()) - ) - ) - ) - } - - /** - * Holds if this split applies to `pred`, and `pred` may exit this split - * with throw completion `c`, because it belongs to the last `catch` clause - * in a `try` statement. - */ - private predicate hasLastExit(AstNode pred, ThrowCompletion c) { - this.appliesToPredecessor(pred, c) and - exists(TryStmt ts, SpecificCatchClause scc, int last | - last(ts.getCatchClause(last), pred, c) - | - ts.getCatchClause(last) = scc and - scc.isLast() and - c.getExceptionClass() = super.getExceptionClass() - ) - } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - this.appliesToPredecessor(pred, c) and - succ(pred, succ, c) and - ( - // Exit out to `catch` clause block - first(any(SpecificCatchClause scc).getBlock(), succ) - or - // Exit out to a general `catch` clause - succ instanceof GeneralCatchClause - or - // Exit out from last `catch` clause (no catch clauses match) - this.hasLastExit(pred, c) - ) - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - // Exit out from last `catch` clause (no catch clauses match) - this.hasLastExit(last, c) and - scopeLast(scope, last, c) - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - this.appliesToPredecessor(pred, c) and - this.appliesSucc(pred, succ, c) and - not first(any(SpecificCatchClause scc).getBlock(), succ) and - not succ instanceof GeneralCatchClause and - not exists(TryStmt ts, SpecificCatchClause scc, int last | - last(ts.getCatchClause(last), pred, c) - | - ts.getCatchClause(last) = scc and - scc.isLast() - ) - } - } -} From 20147cdd2b70f99a77dbbe540bec35c6a9b363d3 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 23 Oct 2025 09:07:34 +0200 Subject: [PATCH 279/965] Shared/Java: Rename ControlFlowReachability library. --- .../code/csharp/controlflow/ControlFlowReachability.qll | 2 +- csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll | 6 +++--- .../{ControlFlow.qll => ControlFlowReachability.qll} | 4 ++-- java/ql/lib/semmle/code/java/dataflow/Nullness.qll | 6 +++--- .../{ControlFlow.qll => ControlFlowReachability.qll} | 0 5 files changed, 9 insertions(+), 9 deletions(-) rename java/ql/lib/semmle/code/java/controlflow/{ControlFlow.qll => ControlFlowReachability.qll} (92%) rename shared/controlflow/codeql/controlflow/{ControlFlow.qll => ControlFlowReachability.qll} (100%) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll index 8885dd45fe8..9d9e3f8d458 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll @@ -3,7 +3,7 @@ */ import csharp -private import codeql.controlflow.ControlFlow +private import codeql.controlflow.ControlFlowReachability private import semmle.code.csharp.controlflow.BasicBlocks private import semmle.code.csharp.controlflow.Guards as Guards private import semmle.code.csharp.ExprOrStmtParent diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 0ea274be204..6e36008ab2e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -25,7 +25,7 @@ private import semmle.code.csharp.controlflow.Guards::AbstractValues private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.Test -private import semmle.code.csharp.controlflow.ControlFlowReachability as Cf +private import semmle.code.csharp.controlflow.ControlFlowReachability private Expr maybeNullExpr(Expr reason) { G::Internal::nullValue(result) and reason = result @@ -260,7 +260,7 @@ private predicate defReaches(Ssa::Definition def, ControlFlow::Node cfn) { ) } -private module NullnessConfig implements Cf::ControlFlowReachability::ConfigSig { +private module NullnessConfig implements ControlFlowReachability::ConfigSig { predicate source(ControlFlow::Node node, Ssa::Definition def) { defMaybeNull(def, node, _, _) } predicate sink(ControlFlow::Node node, Ssa::Definition def) { @@ -275,7 +275,7 @@ private module NullnessConfig implements Cf::ControlFlowReachability::ConfigSig predicate uncertainFlow() { none() } } -private module NullnessFlow = Cf::ControlFlowReachability::Flow; +private module NullnessFlow = ControlFlowReachability::Flow; predicate maybeNullDeref(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { exists( diff --git a/java/ql/lib/semmle/code/java/controlflow/ControlFlow.qll b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll similarity index 92% rename from java/ql/lib/semmle/code/java/controlflow/ControlFlow.qll rename to java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll index 3d2a8d7fdd1..fbb384e2b0e 100644 --- a/java/ql/lib/semmle/code/java/controlflow/ControlFlow.qll +++ b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll @@ -5,7 +5,7 @@ overlay[local?] module; import java -private import codeql.controlflow.ControlFlow +private import codeql.controlflow.ControlFlowReachability private import semmle.code.java.dataflow.SSA as SSA private import semmle.code.java.controlflow.Guards as Guards @@ -57,4 +57,4 @@ private module ControlFlowInput implements InputSig; +module ControlFlowReachability = Make; diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 8728af2c0db..c9f5ad4f781 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -16,7 +16,7 @@ private import IntegerGuards private import NullGuards private import semmle.code.java.Collections private import semmle.code.java.controlflow.internal.Preconditions -private import semmle.code.java.controlflow.ControlFlow as Cf +private import semmle.code.java.controlflow.ControlFlowReachability /** Gets an expression that may be `null`. */ Expr nullExpr() { result = nullExpr(_) } @@ -248,7 +248,7 @@ private predicate impossibleEdge(BasicBlock bb1, BasicBlock bb2) { ) } -private module NullnessConfig implements Cf::ControlFlow::ConfigSig { +private module NullnessConfig implements ControlFlowReachability::ConfigSig { predicate source(ControlFlowNode node, SsaVariable def) { varMaybeNull(def, node, _, _) } predicate sink(ControlFlowNode node, SsaVariable def) { varDereference(def, _) = node } @@ -260,7 +260,7 @@ private module NullnessConfig implements Cf::ControlFlow::ConfigSig { predicate uncertainFlow() { none() } } -private module NullnessFlow = Cf::ControlFlow::Flow; +private module NullnessFlow = ControlFlowReachability::Flow; /** * Holds if the dereference of `v` at `va` might be `null`. diff --git a/shared/controlflow/codeql/controlflow/ControlFlow.qll b/shared/controlflow/codeql/controlflow/ControlFlowReachability.qll similarity index 100% rename from shared/controlflow/codeql/controlflow/ControlFlow.qll rename to shared/controlflow/codeql/controlflow/ControlFlowReachability.qll From 47334fbab7ea51fdcb00e492947b529b4edad4d6 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:06:11 +0100 Subject: [PATCH 280/965] Rust: Accept changes to the web_frameworks results. --- .../PathResolutionConsistency.expected | 9 ------- .../web_frameworks/InlineFlow.expected | 26 ------------------- 2 files changed, 35 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected index b0e1a6e6344..e69de29bb2d 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected @@ -1,9 +0,0 @@ -multipleCallTargets -| test.rs:13:14:13:23 | a.as_str() | -| test.rs:13:14:13:23 | a.as_str() | -| test.rs:14:14:14:25 | a.as_bytes() | -| test.rs:14:14:14:25 | a.as_bytes() | -| test.rs:101:14:101:23 | a.as_str() | -| test.rs:102:14:102:25 | a.as_bytes() | -| test.rs:158:14:158:23 | a.as_str() | -| test.rs:159:14:159:25 | a.as_bytes() | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index 1bfac39c605..e128916f847 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -10,31 +10,21 @@ models | 9 | Summary: ::into_inner; Argument[self]; ReturnValue; taint | | 10 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | | 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 12 | Summary: ::as_bytes; Argument[self]; ReturnValue; value | -| 13 | Summary: ::as_str; Argument[self]; ReturnValue; value | edges | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | -| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | -| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:13 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | -| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | @@ -43,52 +33,36 @@ edges | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.2] | provenance | MaD:8 | | test.rs:100:13:100:13 | a | test.rs:101:14:101:14 | a | provenance | | | test.rs:100:13:100:13 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:100:13:100:13 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:100:13:100:13 | a | test.rs:102:14:102:14 | a | provenance | | | test.rs:100:13:100:13 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:100:13:100:13 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:100:13:100:13 | a | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:14 | a [tuple.0] | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:100:13:100:13 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:14 | a [tuple.0] | provenance | | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:100:13:100:13 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:100:13:100:13 | a [tuple.0] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:14 | a [tuple.1] | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:100:13:100:13 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:14 | a [tuple.1] | provenance | | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:100:13:100:13 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:100:13:100:13 | a [tuple.1] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:14 | a [tuple.2] | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:100:13:100:13 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:14 | a [tuple.2] | provenance | | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:100:13:100:13 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:100:13:100:13 | a [tuple.2] | test.rs:103:14:103:14 | a | provenance | | | test.rs:100:17:100:33 | path.into_inner() | test.rs:100:13:100:13 | a | provenance | | | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | test.rs:100:13:100:13 | a [tuple.0] | provenance | | | test.rs:100:17:100:33 | path.into_inner() [tuple.1] | test.rs:100:13:100:13 | a [tuple.1] | provenance | | | test.rs:100:17:100:33 | path.into_inner() [tuple.2] | test.rs:100:13:100:13 | a [tuple.2] | provenance | | | test.rs:101:14:101:14 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:101:14:101:14 | a | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:101:14:101:14 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:101:14:101:14 | a [tuple.0] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:101:14:101:14 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:101:14:101:14 | a [tuple.1] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:101:14:101:14 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:11 | -| test.rs:101:14:101:14 | a [tuple.2] | test.rs:101:14:101:23 | a.as_str() | provenance | MaD:13 | | test.rs:102:14:102:14 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:102:14:102:14 | a | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:102:14:102:14 | a [tuple.0] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:102:14:102:14 | a [tuple.1] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:102:14:102:14 | a [tuple.2] | test.rs:102:14:102:25 | a.as_bytes() | provenance | MaD:12 | | test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.0] | provenance | MaD:6 | | test.rs:109:9:109:41 | ...: ...::Path::<...> | test.rs:111:22:111:38 | path.into_inner() [tuple.1] | provenance | MaD:7 | | test.rs:111:13:111:18 | TuplePat [tuple.0] | test.rs:111:14:111:14 | a | provenance | | From f257c7a5701a2d25d04903040c3e2e34aa8f4e6d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 23 Oct 2025 10:16:38 +0200 Subject: [PATCH 281/965] Guards: Align the SSA signature with the one from shared SSA. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 12 ++-- .../semmle/code/csharp/controlflow/Guards.qll | 10 +-- .../semmle/code/java/controlflow/Guards.qll | 20 +++--- .../controlflow/codeql/controlflow/Guards.qll | 64 ++++++++++--------- 4 files changed, 56 insertions(+), 50 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index e9ff5dbf5e4..536e1750fd2 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -380,18 +380,20 @@ private module LogicInput_v1 implements GuardsImpl::LogicInputSig { GuardsInput::Expr getARead() { result = this.getAUse().getDef() } } - class SsaWriteDefinition extends SsaDefinition instanceof ExplicitDefinition { - GuardsInput::Expr getDefinition() { result = super.getAssignedInstruction() } + class SsaExplicitWrite extends SsaDefinition instanceof ExplicitDefinition { + GuardsInput::Expr getValue() { result = super.getAssignedInstruction() } } - class SsaPhiNode extends SsaDefinition instanceof PhiNode { + class SsaPhiDefinition extends SsaDefinition instanceof PhiNode { predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - predicate parameterDefinition(GuardsInput::Parameter p, SsaDefinition def) { - def.isParameterDefinition(p) + class SsaParameterInit extends SsaDefinition { + SsaParameterInit() { this.isParameterDefinition(_) } + + GuardsInput::Parameter getParameter() { this.isParameterDefinition(result) } } predicate additionalImpliesStep( diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index f12fa66dde8..3e33807991a 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -207,18 +207,18 @@ private module LogicInput implements GuardsImpl::LogicInputSig { Expr getARead() { super.getARead() = result } } - class SsaWriteDefinition extends SsaDefinition instanceof Ssa::ExplicitDefinition { - Expr getDefinition() { result = super.getADefinition().getSource() } + class SsaExplicitWrite extends SsaDefinition instanceof Ssa::ExplicitDefinition { + Expr getValue() { result = super.getADefinition().getSource() } } - class SsaPhiNode extends SsaDefinition instanceof Ssa::PhiNode { + class SsaPhiDefinition extends SsaDefinition instanceof Ssa::PhiNode { predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - predicate parameterDefinition(Parameter p, SsaDefinition def) { - def.(Ssa::ImplicitParameterDefinition).getParameter() = p + class SsaParameterInit extends SsaDefinition instanceof Ssa::ImplicitParameterDefinition { + Parameter getParameter() { result = super.getParameter() } } predicate additionalNullCheck(GuardsImpl::PreGuard guard, GuardValue val, Expr e, boolean isNull) { diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index ac46a2a25b7..7bc53226b81 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -415,21 +415,21 @@ private module LogicInput_v1 implements GuardsImpl::LogicInputSig { GuardsInput::Expr getARead() { result = this.getAUse() } } - class SsaWriteDefinition extends SsaDefinition instanceof BaseSsaUpdate { - GuardsInput::Expr getDefinition() { + class SsaExplicitWrite extends SsaDefinition instanceof BaseSsaUpdate { + GuardsInput::Expr getValue() { super.getDefiningExpr().(VariableAssign).getSource() = result or super.getDefiningExpr().(AssignOp) = result } } - class SsaPhiNode extends SsaDefinition instanceof BaseSsaPhiNode { + class SsaPhiDefinition extends SsaDefinition instanceof BaseSsaPhiNode { predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - predicate parameterDefinition(Parameter p, SsaDefinition def) { - def.(BaseSsaImplicitInit).isParameterDefinition(p) + class SsaParameterInit extends SsaDefinition instanceof BaseSsaImplicitInit { + Parameter getParameter() { super.isParameterDefinition(result) } } predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4; @@ -446,21 +446,21 @@ private module LogicInput_v2 implements GuardsImpl::LogicInputSig { GuardsInput::Expr getARead() { result = this.getAUse() } } - class SsaWriteDefinition extends SsaDefinition instanceof SSA::SsaExplicitUpdate { - GuardsInput::Expr getDefinition() { + class SsaExplicitWrite extends SsaDefinition instanceof SSA::SsaExplicitUpdate { + GuardsInput::Expr getValue() { super.getDefiningExpr().(VariableAssign).getSource() = result or super.getDefiningExpr().(AssignOp) = result } } - class SsaPhiNode extends SsaDefinition instanceof SSA::SsaPhiNode { + class SsaPhiDefinition extends SsaDefinition instanceof SSA::SsaPhiNode { predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - predicate parameterDefinition(Parameter p, SsaDefinition def) { - def.(SSA::SsaImplicitInit).isParameterDefinition(p) + class SsaParameterInit extends SsaDefinition instanceof SSA::SsaImplicitInit { + Parameter getParameter() { super.isParameterDefinition(result) } } predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4; diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 8c65496dce5..74fefbb4e39 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -536,16 +536,18 @@ module Make< Location getLocation(); } - class SsaWriteDefinition extends SsaDefinition { - Expr getDefinition(); + class SsaExplicitWrite extends SsaDefinition { + Expr getValue(); } - class SsaPhiNode extends SsaDefinition { + class SsaPhiDefinition extends SsaDefinition { /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb); } - predicate parameterDefinition(Parameter p, SsaDefinition def); + class SsaParameterInit extends SsaDefinition { + Parameter getParameter(); + } /** * Holds if `guard` evaluating to `val` ensures that: @@ -594,7 +596,7 @@ module Make< * logical inferences from `phi` to `guard` trivial and irrelevant. */ private predicate guardControlsPhiBranch( - Guard guard, GuardValue v, SsaPhiNode phi, SsaDefinition inp + Guard guard, GuardValue v, SsaPhiDefinition phi, SsaDefinition inp ) { exists(BasicBlock bbPhi | phi.hasInputFromBlock(inp, _) and @@ -615,10 +617,12 @@ module Make< * * This makes `phi` similar to the conditional `phi = guard==v ? input : ...`. */ - private predicate guardDeterminesPhiInput(Guard guard, GuardValue v, SsaPhiNode phi, Expr input) { - exists(GuardValue dv, SsaWriteDefinition inp | + private predicate guardDeterminesPhiInput( + Guard guard, GuardValue v, SsaPhiDefinition phi, Expr input + ) { + exists(GuardValue dv, SsaExplicitWrite inp | guardControlsPhiBranch(guard, v, phi, inp) and - inp.getDefinition() = input and + inp.getValue() = input and dv = v.getDualValue() and forall(SsaDefinition other | phi.hasInputFromBlock(other, _) and other != inp | guardControlsPhiBranch(guard, dv, phi, other) @@ -644,7 +648,7 @@ module Make< ) or // An expression `x = ...` can be considered as a read of `x`. - guard.(IdExpr).getEqualChildExpr() = def.(SsaWriteDefinition).getDefinition() + guard.(IdExpr).getEqualChildExpr() = def.(SsaExplicitWrite).getValue() } private predicate valueStep(Expr e1, Expr e2) { @@ -669,10 +673,10 @@ module Make< * through a back edge. */ private SsaDefinition getAnUltimateDefinition(SsaDefinition v, boolean fromBackEdge) { - result = v and not v instanceof SsaPhiNode and fromBackEdge = false + result = v and not v instanceof SsaPhiDefinition and fromBackEdge = false or exists(SsaDefinition inp, BasicBlock bb, boolean fbe | - v.(SsaPhiNode).hasInputFromBlock(inp, bb) and + v.(SsaPhiDefinition).hasInputFromBlock(inp, bb) and result = getAnUltimateDefinition(inp, fbe) and (if v.getBasicBlock().dominates(bb) then fromBackEdge = true else fromBackEdge = fbe) ) @@ -683,9 +687,9 @@ module Make< */ private predicate hasPossibleUnknownValue(SsaDefinition v) { exists(SsaDefinition def | def = getAnUltimateDefinition(v, _) | - not exists(def.(SsaWriteDefinition).getDefinition()) + not exists(def.(SsaExplicitWrite).getValue()) or - exists(Expr e | e = possibleValue(def.(SsaWriteDefinition).getDefinition()) | + exists(Expr e | e = possibleValue(def.(SsaExplicitWrite).getValue()) | not constantHasValue(e, _) ) ) @@ -701,9 +705,9 @@ module Make< */ private predicate possibleValue(SsaDefinition v, boolean fromBackEdge, Expr e, GuardValue k) { not hasPossibleUnknownValue(v) and - exists(SsaWriteDefinition def | + exists(SsaExplicitWrite def | def = getAnUltimateDefinition(v, fromBackEdge) and - e = possibleValue(def.getDefinition()) and + e = possibleValue(def.getValue()) and constantHasValue(e, k) ) } @@ -711,7 +715,7 @@ module Make< /** * Holds if `e` equals `k` and may be assigned to `v` without going through * back edges, and all other possible ultimate definitions of `v` are different - * from `k`. The trivial case where `v` is an `SsaWriteDefinition` with `e` as + * from `k`. The trivial case where `v` is an `SsaExplicitWrite` with `e` as * the only possible value is excluded. */ private predicate uniqueValue(SsaDefinition v, Expr e, GuardValue k) { @@ -727,14 +731,14 @@ module Make< * Holds if `phi` has exactly two inputs, `def1` and `e2`, and that `def1` * does not come from a back-edge into `phi`. */ - private predicate phiWithTwoInputs(SsaPhiNode phi, SsaDefinition def1, Expr e2) { - exists(SsaWriteDefinition def2, BasicBlock bb1 | + private predicate phiWithTwoInputs(SsaPhiDefinition phi, SsaDefinition def1, Expr e2) { + exists(SsaExplicitWrite def2, BasicBlock bb1 | 2 = strictcount(SsaDefinition inp, BasicBlock bb | phi.hasInputFromBlock(inp, bb)) and phi.hasInputFromBlock(def1, bb1) and phi.hasInputFromBlock(def2, _) and def1 != def2 and not phi.getBasicBlock().dominates(bb1) and - def2.getDefinition() = e2 + def2.getValue() = e2 ) } @@ -795,8 +799,8 @@ module Make< baseSsaValueCheck(def, v, g, gv) ) or - exists(SsaWriteDefinition def | - exprHasValue(def.getDefinition(), v) and + exists(SsaExplicitWrite def | + exprHasValue(def.getValue(), v) and e = def.getARead() ) } @@ -841,7 +845,7 @@ module Make< bindingset[def1, v1] pragma[inline_late] private predicate impliesStepSsaGuard(SsaDefinition def1, GuardValue v1, Guard g2, GuardValue v2) { - def1.(SsaWriteDefinition).getDefinition() = g2 and + def1.(SsaExplicitWrite).getValue() = g2 and v1 = v2 and not exprHasValue(g2, v2) // disregard trivial guard or @@ -1032,9 +1036,9 @@ module Make< private predicate validReturnInCustomGuard( ReturnExpr ret, ParameterPosition ppos, GuardValue retval, GuardValue val ) { - exists(NonOverridableMethod m, SsaDefinition param | + exists(NonOverridableMethod m, SsaParameterInit param | m.getAReturnExpr() = ret and - parameterDefinition(m.getParameter(ppos), param) + param.getParameter() = m.getParameter(ppos) | exists(Guard g0, GuardValue v0 | directlyControlsReturn(g0, v0, ret) and @@ -1071,8 +1075,8 @@ module Make< validReturnInCustomGuard(ret, ppos, retval, val) ) or - exists(SsaDefinition param, Guard g0, GuardValue v0 | - parameterDefinition(result.getParameter(ppos), param) and + exists(SsaParameterInit param, Guard g0, GuardValue v0 | + param.getParameter() = result.getParameter(ppos) and guardDirectlyControlsExit(g0, v0) and retval = TException(false) and BranchImplies::ssaControls(param, val, g0, v0) @@ -1141,9 +1145,9 @@ module Make< private predicate validReturnInValidationWrapper( ReturnExpr ret, ParameterPosition ppos, GuardValue retval, State state ) { - exists(NonOverridableMethod m, SsaDefinition param, Guard guard, GuardValue val | + exists(NonOverridableMethod m, SsaParameterInit param, Guard guard, GuardValue val | m.getAReturnExpr() = ret and - parameterDefinition(m.getParameter(ppos), param) and + param.getParameter() = m.getParameter(ppos) and guardChecksDef(guard, param, val, state) | guard.valueControls(ret.getBasicBlock(), val) and @@ -1171,8 +1175,8 @@ module Make< validReturnInValidationWrapper(ret, ppos, retval, state) ) or - exists(SsaDefinition param, BasicBlock bb, Guard guard, GuardValue val | - parameterDefinition(result.getParameter(ppos), param) and + exists(SsaParameterInit param, BasicBlock bb, Guard guard, GuardValue val | + param.getParameter() = result.getParameter(ppos) and guardChecksDef(guard, param, val, state) and guard.valueControls(bb, val) and normalExitBlock(bb) and From 8f5f65e5fac70d362ee0de966cdac0ac1efb0c4a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 23 Oct 2025 10:13:47 +0200 Subject: [PATCH 282/965] Bazel: upgrade `rules_rust` --- Cargo.toml | 1 - MODULE.bazel | 6 ++--- misc/bazel/3rdparty/BUILD.bazel | 15 ++---------- .../py_deps/BUILD.aho-corasick-1.1.3.bazel | 4 ++++ .../py_deps/BUILD.anstream-0.6.18.bazel | 4 ++++ .../py_deps/BUILD.anstyle-1.0.10.bazel | 4 ++++ .../py_deps/BUILD.anstyle-parse-0.2.6.bazel | 4 ++++ .../py_deps/BUILD.anstyle-query-1.1.2.bazel | 4 ++++ .../py_deps/BUILD.anstyle-wincon-3.0.7.bazel | 4 ++++ .../py_deps/BUILD.anyhow-1.0.95.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.cc-1.2.14.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.clap-4.5.30.bazel | 4 ++++ .../py_deps/BUILD.clap_builder-4.5.30.bazel | 4 ++++ .../py_deps/BUILD.clap_lex-0.7.4.bazel | 4 ++++ .../py_deps/BUILD.colorchoice-1.0.3.bazel | 4 ++++ .../BUILD.is_terminal_polyfill-1.70.1.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.itoa-1.0.14.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.log-0.4.25.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.memchr-2.7.4.bazel | 4 ++++ .../py_deps/BUILD.once_cell-1.20.3.bazel | 4 ++++ .../py_deps/BUILD.proc-macro2-1.0.93.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.quote-1.0.38.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.regex-1.11.1.bazel | 4 ++++ .../py_deps/BUILD.regex-automata-0.4.9.bazel | 4 ++++ .../py_deps/BUILD.regex-syntax-0.8.5.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.ryu-1.0.19.bazel | 4 ++++ .../py_deps/BUILD.serde-1.0.217.bazel | 4 ++++ .../py_deps/BUILD.serde_derive-1.0.217.bazel | 4 ++++ .../py_deps/BUILD.serde_json-1.0.138.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.shlex-1.3.0.bazel | 4 ++++ .../py_deps/BUILD.smallvec-1.14.0.bazel | 4 ++++ .../BUILD.streaming-iterator-0.1.9.bazel | 4 ++++ .../py_deps/BUILD.strsim-0.11.1.bazel | 4 ++++ .../3rdparty/py_deps/BUILD.syn-2.0.98.bazel | 4 ++++ .../py_deps/BUILD.thiserror-1.0.69.bazel | 4 ++++ .../py_deps/BUILD.thiserror-impl-1.0.69.bazel | 4 ++++ .../py_deps/BUILD.tree-sitter-0.24.7.bazel | 4 ++++ .../BUILD.tree-sitter-graph-0.12.0.bazel | 4 ++++ .../BUILD.tree-sitter-language-0.1.5.bazel | 4 ++++ .../py_deps/BUILD.unicode-ident-1.0.16.bazel | 4 ++++ .../py_deps/BUILD.utf8parse-0.2.2.bazel | 4 ++++ .../py_deps/BUILD.windows-sys-0.59.0.bazel | 4 ++++ .../BUILD.windows-targets-0.52.6.bazel | 4 ++++ ...BUILD.windows_aarch64_gnullvm-0.52.6.bazel | 4 ++++ .../BUILD.windows_aarch64_msvc-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_gnu-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_gnullvm-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_msvc-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_gnu-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_gnullvm-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_msvc-0.52.6.bazel | 4 ++++ misc/bazel/3rdparty/py_deps/defs.bzl | 4 ++++ .../BUILD.adler2-2.0.1.bazel | 4 ++++ .../BUILD.aho-corasick-1.1.3.bazel | 4 ++++ .../BUILD.allocator-api2-0.2.21.bazel | 4 ++++ ...UILD.android_system_properties-0.1.5.bazel | 4 ++++ .../BUILD.anstream-0.6.20.bazel | 4 ++++ .../BUILD.anstyle-1.0.11.bazel | 4 ++++ .../BUILD.anstyle-parse-0.2.7.bazel | 4 ++++ .../BUILD.anstyle-query-1.1.4.bazel | 4 ++++ .../BUILD.anstyle-wincon-3.0.10.bazel | 4 ++++ .../BUILD.anyhow-1.0.100.bazel | 4 ++++ .../BUILD.argfile-0.2.1.bazel | 4 ++++ .../BUILD.arrayvec-0.7.6.bazel | 4 ++++ .../BUILD.atomic-0.6.1.bazel | 4 ++++ .../BUILD.autocfg-1.5.0.bazel | 4 ++++ .../BUILD.base64-0.22.1.bazel | 4 ++++ .../BUILD.bitflags-1.3.2.bazel | 4 ++++ .../BUILD.bitflags-2.9.4.bazel | 4 ++++ .../BUILD.borsh-1.5.7.bazel | 4 ++++ .../BUILD.boxcar-0.2.14.bazel | 4 ++++ .../BUILD.bstr-1.12.0.bazel | 4 ++++ .../BUILD.bumpalo-3.19.0.bazel | 4 ++++ .../BUILD.bytemuck-1.23.2.bazel | 4 ++++ .../BUILD.camino-1.1.12.bazel | 4 ++++ .../BUILD.cargo-platform-0.2.0.bazel | 4 ++++ .../BUILD.cargo-util-schemas-0.8.2.bazel | 4 ++++ .../BUILD.cargo_metadata-0.21.0.bazel | 4 ++++ .../BUILD.cc-1.2.37.bazel | 7 ++++++ .../BUILD.cfg-if-1.0.3.bazel | 4 ++++ .../BUILD.cfg_aliases-0.2.1.bazel | 4 ++++ .../BUILD.chalk-derive-0.103.0.bazel | 4 ++++ .../BUILD.chalk-derive-0.104.0.bazel | 4 ++++ .../BUILD.chalk-ir-0.103.0.bazel | 4 ++++ .../BUILD.chalk-ir-0.104.0.bazel | 4 ++++ .../BUILD.chalk-recursive-0.103.0.bazel | 4 ++++ .../BUILD.chalk-solve-0.103.0.bazel | 4 ++++ .../BUILD.chrono-0.4.42.bazel | 10 ++++++++ .../BUILD.clap-4.5.48.bazel | 4 ++++ .../BUILD.clap_builder-4.5.48.bazel | 4 ++++ .../BUILD.clap_derive-4.5.47.bazel | 4 ++++ .../BUILD.clap_lex-0.7.5.bazel | 4 ++++ .../BUILD.colorchoice-1.0.4.bazel | 4 ++++ .../BUILD.core-foundation-sys-0.8.7.bazel | 4 ++++ .../BUILD.countme-3.0.1.bazel | 4 ++++ .../BUILD.cov-mark-2.1.0.bazel | 4 ++++ .../BUILD.crc32fast-1.5.0.bazel | 4 ++++ .../BUILD.crossbeam-channel-0.5.15.bazel | 4 ++++ .../BUILD.crossbeam-deque-0.8.6.bazel | 4 ++++ .../BUILD.crossbeam-epoch-0.9.18.bazel | 4 ++++ .../BUILD.crossbeam-queue-0.3.12.bazel | 4 ++++ .../BUILD.crossbeam-utils-0.8.21.bazel | 4 ++++ .../BUILD.darling-0.21.3.bazel | 4 ++++ .../BUILD.darling_core-0.21.3.bazel | 4 ++++ .../BUILD.darling_macro-0.21.3.bazel | 4 ++++ .../BUILD.dashmap-6.1.0.bazel | 4 ++++ .../BUILD.deranged-0.5.3.bazel | 4 ++++ .../BUILD.displaydoc-0.2.5.bazel | 4 ++++ .../BUILD.drop_bomb-0.1.5.bazel | 4 ++++ .../BUILD.dunce-1.0.5.bazel | 4 ++++ .../BUILD.dyn-clone-1.0.20.bazel | 4 ++++ .../BUILD.either-1.15.0.bazel | 4 ++++ .../BUILD.ena-0.14.3.bazel | 4 ++++ .../BUILD.encoding-0.2.33.bazel | 4 ++++ ...encoding-index-japanese-1.20141219.5.bazel | 4 ++++ ...D.encoding-index-korean-1.20141219.5.bazel | 4 ++++ ...oding-index-simpchinese-1.20141219.5.bazel | 4 ++++ ...coding-index-singlebyte-1.20141219.5.bazel | 4 ++++ ...oding-index-tradchinese-1.20141219.5.bazel | 4 ++++ .../BUILD.encoding_index_tests-0.1.4.bazel | 4 ++++ .../BUILD.equivalent-1.0.2.bazel | 4 ++++ .../BUILD.erased-serde-0.4.6.bazel | 4 ++++ .../BUILD.figment-0.10.19.bazel | 13 ++++++++++ .../BUILD.find-msvc-tools-0.1.1.bazel | 4 ++++ .../BUILD.fixedbitset-0.4.2.bazel | 4 ++++ .../BUILD.flate2-1.1.2.bazel | 4 ++++ .../BUILD.fnv-1.0.7.bazel | 4 ++++ .../BUILD.foldhash-0.1.5.bazel | 4 ++++ .../BUILD.form_urlencoded-1.2.2.bazel | 4 ++++ .../BUILD.fs-err-2.11.0.bazel | 4 ++++ .../BUILD.fsevent-sys-4.1.0.bazel | 4 ++++ .../BUILD.fst-0.4.7.bazel | 4 ++++ .../BUILD.getrandom-0.3.3.bazel | 13 ++++++++++ .../BUILD.glob-0.3.3.bazel | 4 ++++ .../BUILD.globset-0.4.16.bazel | 4 ++++ .../BUILD.hashbrown-0.12.3.bazel | 4 ++++ .../BUILD.hashbrown-0.14.5.bazel | 4 ++++ .../BUILD.hashbrown-0.15.5.bazel | 4 ++++ .../BUILD.hashlink-0.10.0.bazel | 4 ++++ .../BUILD.heck-0.5.0.bazel | 4 ++++ .../BUILD.hermit-abi-0.5.2.bazel | 4 ++++ .../BUILD.hex-0.4.3.bazel | 4 ++++ .../BUILD.home-0.5.11.bazel | 4 ++++ .../BUILD.iana-time-zone-0.1.63.bazel | 4 ++++ .../BUILD.iana-time-zone-haiku-0.1.2.bazel | 4 ++++ .../BUILD.icu_collections-2.0.0.bazel | 4 ++++ .../BUILD.icu_locale_core-2.0.0.bazel | 4 ++++ .../BUILD.icu_normalizer-2.0.0.bazel | 4 ++++ .../BUILD.icu_normalizer_data-2.0.0.bazel | 4 ++++ .../BUILD.icu_properties-2.0.1.bazel | 4 ++++ .../BUILD.icu_properties_data-2.0.1.bazel | 4 ++++ .../BUILD.icu_provider-2.0.0.bazel | 4 ++++ .../BUILD.ident_case-1.0.1.bazel | 4 ++++ .../BUILD.idna-1.1.0.bazel | 4 ++++ .../BUILD.idna_adapter-1.2.1.bazel | 4 ++++ .../BUILD.indexmap-1.9.3.bazel | 4 ++++ .../BUILD.indexmap-2.11.4.bazel | 4 ++++ .../BUILD.inlinable_string-0.1.15.bazel | 4 ++++ .../BUILD.inotify-0.11.0.bazel | 4 ++++ .../BUILD.inotify-sys-0.1.5.bazel | 4 ++++ .../BUILD.intrusive-collections-0.9.7.bazel | 4 ++++ .../BUILD.is_terminal_polyfill-1.70.1.bazel | 4 ++++ .../BUILD.itertools-0.12.1.bazel | 4 ++++ .../BUILD.itertools-0.14.0.bazel | 4 ++++ .../BUILD.itoa-1.0.15.bazel | 4 ++++ .../BUILD.jobserver-0.1.34.bazel | 10 ++++++++ .../BUILD.jod-thread-1.0.0.bazel | 4 ++++ .../BUILD.js-sys-0.3.78.bazel | 4 ++++ .../BUILD.kqueue-1.1.1.bazel | 4 ++++ .../BUILD.kqueue-sys-1.0.4.bazel | 4 ++++ .../BUILD.la-arena-0.3.1.bazel | 4 ++++ .../BUILD.lazy_static-1.5.0.bazel | 4 ++++ .../BUILD.libc-0.2.175.bazel | 4 ++++ .../BUILD.line-index-0.1.2.bazel | 4 ++++ .../BUILD.litemap-0.8.0.bazel | 4 ++++ .../BUILD.lock_api-0.4.13.bazel | 4 ++++ .../BUILD.log-0.3.9.bazel | 4 ++++ .../BUILD.log-0.4.28.bazel | 4 ++++ .../BUILD.matchers-0.2.0.bazel | 4 ++++ .../BUILD.memchr-2.7.5.bazel | 4 ++++ .../BUILD.memoffset-0.9.1.bazel | 4 ++++ .../BUILD.miniz_oxide-0.8.9.bazel | 4 ++++ .../BUILD.mio-1.0.4.bazel | 18 ++++++++++++++ .../BUILD.miow-0.6.1.bazel | 4 ++++ .../BUILD.mustache-0.9.0.bazel | 4 ++++ .../BUILD.nohash-hasher-0.2.0.bazel | 4 ++++ .../BUILD.notify-8.2.0.bazel | 8 +++++++ .../BUILD.notify-types-2.0.0.bazel | 4 ++++ .../BUILD.nu-ansi-term-0.50.1.bazel | 4 ++++ .../BUILD.num-conv-0.1.0.bazel | 4 ++++ .../BUILD.num-traits-0.2.19.bazel | 4 ++++ .../BUILD.num_cpus-1.17.0.bazel | 16 +++++++++++++ .../BUILD.once_cell-1.21.3.bazel | 4 ++++ .../BUILD.once_cell_polyfill-1.70.1.bazel | 4 ++++ .../BUILD.oorandom-11.1.5.bazel | 4 ++++ .../BUILD.ordered-float-2.10.1.bazel | 4 ++++ .../BUILD.os_str_bytes-7.1.1.bazel | 4 ++++ .../BUILD.papaya-0.2.3.bazel | 4 ++++ .../BUILD.parking_lot-0.12.4.bazel | 4 ++++ .../BUILD.parking_lot_core-0.9.11.bazel | 10 ++++++++ .../BUILD.pear-0.2.9.bazel | 4 ++++ .../BUILD.pear_codegen-0.2.9.bazel | 4 ++++ .../BUILD.percent-encoding-2.3.2.bazel | 4 ++++ .../BUILD.perf-event-0.4.7.bazel | 4 ++++ .../BUILD.perf-event-open-sys-1.0.1.bazel | 4 ++++ .../BUILD.petgraph-0.6.5.bazel | 4 ++++ .../BUILD.pin-project-lite-0.2.16.bazel | 4 ++++ .../BUILD.pkg-config-0.3.32.bazel | 4 ++++ .../BUILD.portable-atomic-1.11.1.bazel | 4 ++++ .../BUILD.potential_utf-0.1.3.bazel | 4 ++++ .../BUILD.powerfmt-0.2.0.bazel | 4 ++++ .../BUILD.ppv-lite86-0.2.21.bazel | 4 ++++ .../BUILD.proc-macro2-1.0.101.bazel | 4 ++++ ...BUILD.proc-macro2-diagnostics-0.10.1.bazel | 4 ++++ .../BUILD.quote-1.0.41.bazel | 4 ++++ .../BUILD.r-efi-5.3.0.bazel | 4 ++++ .../BUILD.ra-ap-rustc_abi-0.123.0.bazel | 4 ++++ .../BUILD.ra-ap-rustc_hashes-0.123.0.bazel | 4 ++++ .../BUILD.ra-ap-rustc_index-0.123.0.bazel | 4 ++++ ...ILD.ra-ap-rustc_index_macros-0.123.0.bazel | 4 ++++ .../BUILD.ra-ap-rustc_lexer-0.121.0.bazel | 4 ++++ .../BUILD.ra-ap-rustc_lexer-0.123.0.bazel | 4 ++++ ...ILD.ra-ap-rustc_parse_format-0.121.0.bazel | 4 ++++ ...ra-ap-rustc_pattern_analysis-0.123.0.bazel | 4 ++++ .../BUILD.ra_ap_base_db-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_cfg-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_edition-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_hir-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_hir_def-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_hir_expand-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_hir_ty-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_ide_db-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_intern-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_load-cargo-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_mbe-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_parser-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_paths-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_proc_macro_api-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_profile-0.0.301.bazel | 8 +++++++ .../BUILD.ra_ap_project_model-0.0.301.bazel | 4 ++++ ...UILD.ra_ap_query-group-macro-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_span-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_stdx-0.0.301.bazel | 10 ++++++++ .../BUILD.ra_ap_syntax-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_syntax-bridge-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_toolchain-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_tt-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_vfs-0.0.301.bazel | 4 ++++ .../BUILD.ra_ap_vfs-notify-0.0.301.bazel | 4 ++++ .../BUILD.rand-0.9.2.bazel | 4 ++++ .../BUILD.rand_chacha-0.9.0.bazel | 4 ++++ .../BUILD.rand_core-0.9.3.bazel | 4 ++++ .../BUILD.rayon-1.11.0.bazel | 4 ++++ .../BUILD.rayon-core-1.13.0.bazel | 4 ++++ .../BUILD.redox_syscall-0.5.17.bazel | 4 ++++ .../BUILD.ref-cast-1.0.24.bazel | 4 ++++ .../BUILD.ref-cast-impl-1.0.24.bazel | 4 ++++ .../BUILD.regex-1.11.3.bazel | 4 ++++ .../BUILD.regex-automata-0.4.11.bazel | 4 ++++ .../BUILD.regex-syntax-0.8.6.bazel | 4 ++++ .../BUILD.rowan-0.15.15.bazel | 4 ++++ .../BUILD.rustc-hash-1.1.0.bazel | 4 ++++ .../BUILD.rustc-hash-2.1.1.bazel | 4 ++++ .../BUILD.rustc-literal-escaper-0.0.4.bazel | 4 ++++ .../BUILD.rustc-stable-hash-0.1.2.bazel | 4 ++++ ...ustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel | 4 ++++ .../BUILD.rustversion-1.0.22.bazel | 4 ++++ .../BUILD.ryu-1.0.20.bazel | 4 ++++ .../BUILD.salsa-0.23.0.bazel | 4 ++++ .../BUILD.salsa-macro-rules-0.23.0.bazel | 4 ++++ .../BUILD.salsa-macros-0.23.0.bazel | 4 ++++ .../BUILD.same-file-1.0.6.bazel | 4 ++++ .../BUILD.schemars-0.9.0.bazel | 4 ++++ .../BUILD.schemars-1.0.4.bazel | 4 ++++ .../BUILD.scoped-tls-1.0.1.bazel | 4 ++++ .../BUILD.scopeguard-1.2.0.bazel | 4 ++++ .../BUILD.seize-0.5.0.bazel | 4 ++++ .../BUILD.semver-1.0.26.bazel | 4 ++++ .../BUILD.serde-1.0.228.bazel | 4 ++++ .../BUILD.serde-untagged-0.1.8.bazel | 4 ++++ .../BUILD.serde-value-0.7.0.bazel | 4 ++++ .../BUILD.serde_core-1.0.228.bazel | 4 ++++ .../BUILD.serde_derive-1.0.228.bazel | 4 ++++ .../BUILD.serde_json-1.0.145.bazel | 15 ++++++++++++ .../BUILD.serde_spanned-0.6.9.bazel | 4 ++++ .../BUILD.serde_spanned-1.0.2.bazel | 4 ++++ .../BUILD.serde_with-3.14.1.bazel | 4 ++++ .../BUILD.serde_with_macros-3.14.1.bazel | 4 ++++ .../BUILD.serde_yaml-0.9.34+deprecated.bazel | 4 ++++ .../BUILD.sharded-slab-0.1.7.bazel | 4 ++++ .../BUILD.shlex-1.3.0.bazel | 4 ++++ .../BUILD.smallvec-1.15.1.bazel | 4 ++++ .../BUILD.smol_str-0.3.2.bazel | 4 ++++ .../BUILD.stable_deref_trait-1.2.0.bazel | 4 ++++ .../BUILD.streaming-iterator-0.1.9.bazel | 4 ++++ .../BUILD.strsim-0.11.1.bazel | 4 ++++ .../BUILD.syn-2.0.106.bazel | 4 ++++ .../BUILD.synstructure-0.13.2.bazel | 4 ++++ .../BUILD.temp-dir-0.1.16.bazel | 4 ++++ .../BUILD.text-size-1.1.1.bazel | 4 ++++ .../BUILD.thin-vec-0.2.14.bazel | 4 ++++ .../BUILD.thiserror-2.0.16.bazel | 4 ++++ .../BUILD.thiserror-impl-2.0.16.bazel | 4 ++++ .../BUILD.thread_local-1.1.9.bazel | 4 ++++ .../BUILD.time-0.3.43.bazel | 4 ++++ .../BUILD.time-core-0.1.6.bazel | 4 ++++ .../BUILD.time-macros-0.2.24.bazel | 4 ++++ .../BUILD.tinystr-0.8.1.bazel | 4 ++++ .../BUILD.toml-0.8.23.bazel | 4 ++++ .../BUILD.toml-0.9.7.bazel | 4 ++++ .../BUILD.toml_datetime-0.6.11.bazel | 4 ++++ .../BUILD.toml_datetime-0.7.2.bazel | 4 ++++ .../BUILD.toml_edit-0.22.27.bazel | 4 ++++ .../BUILD.toml_parser-1.0.3.bazel | 4 ++++ .../BUILD.toml_write-0.1.2.bazel | 4 ++++ .../BUILD.toml_writer-1.0.3.bazel | 4 ++++ .../BUILD.tracing-0.1.41.bazel | 4 ++++ .../BUILD.tracing-attributes-0.1.30.bazel | 4 ++++ .../BUILD.tracing-core-0.1.34.bazel | 4 ++++ .../BUILD.tracing-flame-0.2.0.bazel | 4 ++++ .../BUILD.tracing-log-0.2.0.bazel | 4 ++++ .../BUILD.tracing-subscriber-0.3.20.bazel | 4 ++++ .../BUILD.tree-sitter-0.25.9.bazel | 4 ++++ ...tree-sitter-embedded-template-0.25.0.bazel | 4 ++++ .../BUILD.tree-sitter-json-0.24.8.bazel | 4 ++++ .../BUILD.tree-sitter-language-0.1.5.bazel | 4 ++++ .../BUILD.tree-sitter-ql-0.23.1.bazel | 4 ++++ .../BUILD.tree-sitter-ruby-0.23.1.bazel | 4 ++++ .../BUILD.triomphe-0.1.14.bazel | 4 ++++ .../BUILD.typed-arena-2.0.2.bazel | 4 ++++ .../BUILD.typeid-1.0.3.bazel | 4 ++++ .../BUILD.uncased-0.9.10.bazel | 4 ++++ .../BUILD.ungrammar-1.16.1.bazel | 4 ++++ .../BUILD.unicode-ident-1.0.19.bazel | 4 ++++ .../BUILD.unicode-properties-0.1.3.bazel | 4 ++++ .../BUILD.unicode-xid-0.2.6.bazel | 4 ++++ .../BUILD.unsafe-libyaml-0.2.11.bazel | 4 ++++ .../BUILD.url-2.5.7.bazel | 4 ++++ .../BUILD.utf8_iter-1.0.4.bazel | 4 ++++ .../BUILD.utf8parse-0.2.2.bazel | 4 ++++ .../BUILD.valuable-0.1.1.bazel | 4 ++++ .../BUILD.version_check-0.9.5.bazel | 4 ++++ .../BUILD.walkdir-2.5.0.bazel | 4 ++++ ...D.wasi-0.11.1+wasi-snapshot-preview1.bazel | 4 ++++ .../BUILD.wasi-0.14.5+wasi-0.2.4.bazel | 4 ++++ .../BUILD.wasip2-1.0.0+wasi-0.2.4.bazel | 4 ++++ .../BUILD.wasm-bindgen-0.2.101.bazel | 4 ++++ .../BUILD.wasm-bindgen-backend-0.2.101.bazel | 4 ++++ .../BUILD.wasm-bindgen-macro-0.2.101.bazel | 4 ++++ ...D.wasm-bindgen-macro-support-0.2.101.bazel | 4 ++++ .../BUILD.wasm-bindgen-shared-0.2.101.bazel | 4 ++++ .../BUILD.winapi-util-0.1.11.bazel | 4 ++++ .../BUILD.windows-core-0.61.2.bazel | 4 ++++ .../BUILD.windows-implement-0.60.0.bazel | 4 ++++ .../BUILD.windows-interface-0.59.1.bazel | 4 ++++ .../BUILD.windows-link-0.1.3.bazel | 4 ++++ .../BUILD.windows-link-0.2.0.bazel | 4 ++++ .../BUILD.windows-result-0.3.4.bazel | 4 ++++ .../BUILD.windows-strings-0.4.2.bazel | 4 ++++ .../BUILD.windows-sys-0.52.0.bazel | 4 ++++ .../BUILD.windows-sys-0.59.0.bazel | 4 ++++ .../BUILD.windows-sys-0.60.2.bazel | 4 ++++ .../BUILD.windows-sys-0.61.0.bazel | 4 ++++ .../BUILD.windows-targets-0.52.6.bazel | 4 ++++ .../BUILD.windows-targets-0.53.3.bazel | 4 ++++ ...BUILD.windows_aarch64_gnullvm-0.52.6.bazel | 4 ++++ ...BUILD.windows_aarch64_gnullvm-0.53.0.bazel | 4 ++++ .../BUILD.windows_aarch64_msvc-0.52.6.bazel | 4 ++++ .../BUILD.windows_aarch64_msvc-0.53.0.bazel | 4 ++++ .../BUILD.windows_i686_gnu-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_gnu-0.53.0.bazel | 4 ++++ .../BUILD.windows_i686_gnullvm-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_gnullvm-0.53.0.bazel | 4 ++++ .../BUILD.windows_i686_msvc-0.52.6.bazel | 4 ++++ .../BUILD.windows_i686_msvc-0.53.0.bazel | 4 ++++ .../BUILD.windows_x86_64_gnu-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_gnu-0.53.0.bazel | 4 ++++ .../BUILD.windows_x86_64_gnullvm-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_gnullvm-0.53.0.bazel | 4 ++++ .../BUILD.windows_x86_64_msvc-0.52.6.bazel | 4 ++++ .../BUILD.windows_x86_64_msvc-0.53.0.bazel | 4 ++++ .../BUILD.winnow-0.7.13.bazel | 4 ++++ .../BUILD.wit-bindgen-0.45.1.bazel | 4 ++++ .../BUILD.writeable-0.6.1.bazel | 4 ++++ .../BUILD.yansi-1.0.1.bazel | 4 ++++ .../BUILD.yoke-0.8.0.bazel | 4 ++++ .../BUILD.yoke-derive-0.8.0.bazel | 4 ++++ .../BUILD.zerocopy-0.8.27.bazel | 4 ++++ .../BUILD.zerocopy-derive-0.8.27.bazel | 4 ++++ .../BUILD.zerofrom-0.1.6.bazel | 4 ++++ .../BUILD.zerofrom-derive-0.1.6.bazel | 4 ++++ .../BUILD.zerotrie-0.2.2.bazel | 4 ++++ .../BUILD.zerovec-0.11.4.bazel | 4 ++++ .../BUILD.zerovec-derive-0.11.1.bazel | 4 ++++ .../BUILD.zstd-0.13.3.bazel | 4 ++++ .../BUILD.zstd-safe-7.2.4.bazel | 4 ++++ .../BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel | 4 ++++ .../tree_sitter_extractors_deps/defs.bzl | 24 +++++++++++-------- 398 files changed, 1685 insertions(+), 27 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7866a65d209..58a755340b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,4 +10,3 @@ members = [ "rust/ast-generator", "rust/autobuild", ] -exclude = ["mad-generation-build"] diff --git a/MODULE.bazel b/MODULE.bazel index 89fdbf86a4d..58ff750253b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -19,8 +19,8 @@ bazel_dep(name = "rules_go", version = "0.56.1") bazel_dep(name = "rules_pkg", version = "1.0.1") bazel_dep(name = "rules_nodejs", version = "6.2.0-codeql.1") bazel_dep(name = "rules_python", version = "0.40.0") -bazel_dep(name = "rules_shell", version = "0.3.0") -bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "rules_shell", version = "0.5.0") +bazel_dep(name = "bazel_skylib", version = "1.8.1") bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "absl") bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json") bazel_dep(name = "fmt", version = "10.0.0") @@ -28,7 +28,7 @@ bazel_dep(name = "rules_kotlin", version = "2.1.3-codeql.1") bazel_dep(name = "gazelle", version = "0.40.0") bazel_dep(name = "rules_dotnet", version = "0.19.2-codeql.1") bazel_dep(name = "googletest", version = "1.14.0.bcr.1") -bazel_dep(name = "rules_rust", version = "0.63.0") +bazel_dep(name = "rules_rust", version = "0.66.0") bazel_dep(name = "zstd", version = "1.5.5.bcr.1") bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True) diff --git a/misc/bazel/3rdparty/BUILD.bazel b/misc/bazel/3rdparty/BUILD.bazel index 4e12f92edee..6f5f1f77fef 100644 --- a/misc/bazel/3rdparty/BUILD.bazel +++ b/misc/bazel/3rdparty/BUILD.bazel @@ -5,15 +5,7 @@ crates_vendor( name = "vendor_tree_sitter_extractors", cargo_lockfile = "//:Cargo.lock", generate_build_scripts = True, - manifests = [ - "//:Cargo.toml", - "//ruby/extractor:Cargo.toml", - "//rust/extractor:Cargo.toml", - "//rust/extractor/macros:Cargo.toml", - "//rust/ast-generator:Cargo.toml", - "//rust/autobuild:Cargo.toml", - "//shared/tree-sitter-extractor:Cargo.toml", - ], + manifests = ["//:Cargo.toml"], mode = "remote", repository_name = "vendor_ts", tags = ["manual"], @@ -24,10 +16,7 @@ crates_vendor( name = "vendor_py_deps", cargo_lockfile = "//python/extractor/tsg-python:Cargo.lock", generate_build_scripts = True, - manifests = [ - "//python/extractor/tsg-python:Cargo.toml", - "//python/extractor/tsg-python/tsp:Cargo.toml", - ], + manifests = ["//python/extractor/tsg-python:Cargo.toml"], mode = "remote", repository_name = "vendor_py", tags = ["manual"], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel index 8c66fc77a56..e8bbd96a1c5 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.aho-corasick-1.1.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel index 19d6745d757..dba6f5a5313 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstream-0.6.18.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel index 200bb05804c..a6c3752b60f 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-1.0.10.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel index 1de0f16e9b9..5f8c366ff87 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-parse-0.2.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel index f785c8416a1..598ea5da3af 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-query-1.1.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel index 384ace979ac..ce4d5dc8abd 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anstyle-wincon-3.0.7.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel b/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel index 9a3ea416d14..34ea952cd26 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.anyhow-1.0.95.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel b/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel index 0fc47086bfb..e3f89bafb19 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.cc-1.2.14.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel index 70e833a34bc..7ddd490dffc 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap-4.5.30.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel index be920c5727a..c44b8554ad4 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap_builder-4.5.30.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel b/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel index fb906059fd1..231ff9c856e 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.clap_lex-0.7.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel index 43ca3c94eb1..94d46209718 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.colorchoice-1.0.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel index 495713baf56..6528f5edc54 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.is_terminal_polyfill-1.70.1.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel b/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel index aa5ba49e524..b9b1384da8d 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.itoa-1.0.14.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel b/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel index 130fcc98569..5d8cb464baf 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.log-0.4.25.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel b/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel index 371600a694b..290610f2234 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.memchr-2.7.4.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel b/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel index 87394011b30..ad2cdfd44f6 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.once_cell-1.20.3.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel b/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel index cd9e4a8f0d8..0dc7bb180d1 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.proc-macro2-1.0.93.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel b/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel index 0c966529bdf..f14687523f0 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.quote-1.0.38.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel index a4408253a92..a450cf23e5b 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-1.11.1.bazel @@ -89,12 +89,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel index b72ce8f99a2..95353401fa8 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-automata-0.4.9.bazel @@ -94,12 +94,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel b/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel index e5c758d7484..be5fade3f8b 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.regex-syntax-0.8.5.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel b/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel index 7d930f72d8a..7f8fb872113 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.ryu-1.0.19.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel index e3927c2e2cf..c2f3f0b2f1e 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde-1.0.217.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel index 134d08a022b..49ca3826b70 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde_derive-1.0.217.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel b/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel index 2e144608c02..6f981174de7 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.serde_json-1.0.138.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel index 1fd5763f4b2..3a7b5dd13f3 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.shlex-1.3.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel index 01002bf50e5..5ef3609e865 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.smallvec-1.14.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel index 2e3575479e8..c693289d0d5 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.streaming-iterator-0.1.9.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel b/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel index 70e01c3cd7a..89f35680ecd 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.strsim-0.11.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel b/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel index a136852520b..74c276c55b2 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.syn-2.0.98.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel index 5a9ef078472..c085df67e5c 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-1.0.69.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel index d2ed4ad02fe..f2dc22a0d19 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.thiserror-impl-1.0.69.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel index 312b70e2337..a37116c26fb 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-0.24.7.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel index ad8dd864b00..3917bb3d165 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-graph-0.12.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel index 409bc07da9f..de6215593a4 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel b/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel index 00509c7dfe1..cf6899aafa0 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.unicode-ident-1.0.16.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel b/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel index ce31b354d5c..caf972ae7c8 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.utf8parse-0.2.2.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel index 0e640044247..aba90d60cc2 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows-sys-0.59.0.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel index 2ceda06e690..469d31b2fec 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows-targets-0.52.6.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel index 43e3d458b61..f4b8a614e6f 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel index d2d560db7f6..82e1c57e2ab 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel index d16a88914f7..b0904b98ca8 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnu-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel index 14c2f9bff04..78e37e28693 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel index c6526b6edc4..6406d8c7c69 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_i686_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel index 2629a55f49b..e5e5950f643 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel index e71a9a4a2e8..9107aa2b364 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel index 443821cda2c..326deb21750 100644 --- a/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/py_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/py_deps/defs.bzl b/misc/bazel/3rdparty/py_deps/defs.bzl index ea04edbae03..90b5a7b640c 100644 --- a/misc/bazel/3rdparty/py_deps/defs.bzl +++ b/misc/bazel/3rdparty/py_deps/defs.bzl @@ -425,12 +425,16 @@ _CONDITIONS = { "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], + "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], + "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], + "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], + "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel index 61dd4b8015d..15d108fcbec 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.adler2-2.0.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel index 6d911d0cd9f..d47c7298b75 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.aho-corasick-1.1.3.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel index 043bb8717df..b1ca8b4a42d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel index d53f2d8803f..a133ae2799b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.android_system_properties-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel index 612f153cad1..ebd0e844157 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstream-0.6.20.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel index 0680166780b..bf8779d93c9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-1.0.11.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel index ac933291b6a..4a81b5ca7fa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-parse-0.2.7.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel index 56c6b1fe921..2004f465f53 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-query-1.1.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel index 6be501fabe1..cc610fb0aa9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anstyle-wincon-3.0.10.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel index 26ed6194b68..5d8502998aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.100.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel index 5b77349d60f..32b9ff0d9c7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.argfile-0.2.1.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel index 92ffe37c58b..b9e36249cf7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.arrayvec-0.7.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel index f81c241a363..b0be5564bb5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.atomic-0.6.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel index 66631184b2f..2be65fdc967 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.autocfg-1.5.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel index dc8e3b89124..17d891f3c2c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.base64-0.22.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel index 951fa2156eb..b9b25068599 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-1.3.2.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel index f4b462ce131..1bfb8cf8e15 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bitflags-2.9.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel index f1cef840bb8..cf4d5c3aaa1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.borsh-1.5.7.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel index 2286d8017db..cfc997b9101 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.14.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel index 0433f5fe907..04c40d43016 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bstr-1.12.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel index 8b8e7285990..bd48b980b9a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bumpalo-3.19.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel index ce1e2725e32..05edb30b608 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bytemuck-1.23.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel index 8f8a62dbdd8..b138a8c2f3d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.12.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel index 315a77ded82..e4ee9d80fbd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.2.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel index f74bdea2fe1..7564be022f1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-util-schemas-0.8.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel index 12ce8fc813d..95acbcc53aa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.21.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel index ab0df21161a..ef757a77cac 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cc-1.2.37.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -115,6 +119,9 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # powerpc-unknown-linux-gnu ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # riscv64gc-unknown-linux-gnu + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # s390x-unknown-linux-gnu ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel index ca5231827c8..6df1698a8b4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg-if-1.0.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel index 045b9c7d3e1..093182c2bdd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cfg_aliases-0.2.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel index 89aadd71e2e..09fe4a1d194 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.103.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel index c5bea0da844..6f83f8a3128 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.104.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel index efafd49d342..61c81e205d3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.103.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel index 60a6ae9176f..01017b869eb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.104.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel index a8959b395ef..4f15fef15d6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.103.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel index 834e4c9b205..3b35ec7bf2b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.103.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel index 806fa5bd5a5..0b5f1b3f916 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.42.bazel @@ -85,12 +85,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -162,9 +166,15 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # powerpc-unknown-linux-gnu ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # riscv64gc-unknown-linux-gnu + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # s390x-unknown-linux-gnu ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__iana-time-zone-0.1.63//:iana_time_zone", # wasm32-unknown-emscripten + ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ "@vendor_ts__js-sys-0.3.78//:js_sys", # wasm32-unknown-unknown "@vendor_ts__wasm-bindgen-0.2.101//:wasm_bindgen", # wasm32-unknown-unknown diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel index c689eac509f..07b70d3c00e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.48.bazel @@ -83,12 +83,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel index b1d6e28a676..d4778d3ba49 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.48.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel index f4d794c20eb..30ec5af6c1f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.47.bazel @@ -73,12 +73,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel index 1762f5e8514..54194c27503 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_lex-0.7.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel index 19f14814c6b..3fde0013d95 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.colorchoice-1.0.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel index 961ed6da5a7..d7c24a33e09 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.core-foundation-sys-0.8.7.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel index 3d52a6a65d2..6471b14ab04 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.countme-3.0.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel index a63921c3b4a..934e00d1c70 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cov-mark-2.1.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel index b3a40b976a8..f626b633f13 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crc32fast-1.5.0.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel index 8d06af4b20d..c179f7d4da0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-channel-0.5.15.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel index 275da3cb388..0208adb97be 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-deque-0.8.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel index ca30e79b83e..627145e84ee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-epoch-0.9.18.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel index 2de25a15e6c..52201cf8a8b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel index 5efee8b6bd1..18ae31e2eca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-utils-0.8.21.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel index b40385ef20f..4c292c1d710 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling-0.21.3.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel index 79e5b9b385f..85fc26280ae 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.21.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel index c150f931e32..84a6db16b68 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.21.3.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel index 6a7ea421553..9dfad53ceb5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel index 262c356a1ba..68432d606f8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.deranged-0.5.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel index 87651e8bda3..c021a09033e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.displaydoc-0.2.5.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel index e1753384d51..2d4581a50d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.drop_bomb-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel index 107c3ffebb5..df9735fb044 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dunce-1.0.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel index 0510a623902..c810715cbc8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dyn-clone-1.0.20.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel index f0e4ed753a9..7889b2bacd1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel index 50d4b33db9a..bc79eea8cb9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ena-0.14.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel index a244aae188c..c9577c65f88 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-0.2.33.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel index 364bb52518b..2479888abce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-japanese-1.20141219.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel index 20bed276c3d..4bfdf59c286 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-korean-1.20141219.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel index d351a58ac13..8b4274d602b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-simpchinese-1.20141219.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel index f5842e0a4ea..a53f1999f2c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-singlebyte-1.20141219.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel index bbee3fd0412..b6a7ad2993b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding-index-tradchinese-1.20141219.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel index 38f81f0a381..a68310e470d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.encoding_index_tests-0.1.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel index 0c774d24ada..c262f8362d7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.equivalent-1.0.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel index 8e03c63e500..3eebca66b45 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.erased-serde-0.4.6.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel index 641e4f01523..9f707fe589a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel @@ -81,12 +81,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -143,12 +147,21 @@ rust_library( "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], "@rules_rust//rust/platform:wasm32-wasip1": [ "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) ], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__atomic-0.6.1//:atomic", # cfg(any(target_pointer_width = "8", target_pointer_width = "16", target_pointer_width = "32")) + ], "//conditions:default": [], }), ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel index d956f008444..c04dd7706d6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.find-msvc-tools-0.1.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel index 75630f1b6ff..2e2ffe86c6a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fixedbitset-0.4.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel index b06683055f3..6b919bce0b8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.flate2-1.1.2.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel index 54f682b45eb..c3eab8bc83c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fnv-1.0.7.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel index 766dc7a15dc..7d6f47fa04f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel index e0bb0c5b348..e496ef247da 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.form_urlencoded-1.2.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel index ae8912b4340..263df3abe82 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fs-err-2.11.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel index ae27e0cf00e..ece66edee6c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fsevent-sys-4.1.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel index 4512e7e59c2..060ec5e07d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.fst-0.4.7.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel index 49103f0d303..47a353d3df9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.getrandom-0.3.3.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -145,9 +149,18 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(all(any(target_os = "linux", target_os = "android"), not(any(all(target_os = "linux", target_env = ""), getrandom_backend = "custom", getrandom_backend = "linux_raw", getrandom_backend = "rdrand", getrandom_backend = "rndr")))) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__wasi-0.14.5-wasi-0.2.4//:wasi", # cfg(all(target_arch = "wasm32", target_os = "wasi", target_env = "p2")) + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(any(target_os = "macos", target_os = "openbsd", target_os = "vita", target_os = "emscripten")) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel index da1a7679109..6ce6e3c9719 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.glob-0.3.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel index cdcb709b651..8a77be50b7f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.globset-0.4.16.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel index aa0a973bafe..57dc7dc0b07 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.12.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel index ba496ad4471..dadefeac311 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel index 4f57dca3c97..b7b644fb681 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.5.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel index 785d16ee293..c4549368f6c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel index 8332feb628b..78a22ad0140 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.5.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel index a8ce19b7407..a7fa4e0c9e1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hermit-abi-0.5.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel index c04fd290de8..2d7ca484cad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hex-0.4.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel index 8f5c82b71d0..3f5d6f3e711 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.home-0.5.11.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel index b3e809c2090..2363e88f60e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-0.1.63.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel index 7de07c3e66d..0a2ab447f06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.iana-time-zone-haiku-0.1.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel index c15de7a0de7..03ec6ed98b2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_collections-2.0.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel index fe541bdd5d9..78b39e2617e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_locale_core-2.0.0.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel index 0d7fa879c94..a99daf34fd7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer-2.0.0.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel index 1bc714152c0..a54e63d5cbc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_normalizer_data-2.0.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel index 0775afcb043..31ae1bf654d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties-2.0.1.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel index 4779fee40dd..f74ecbdc568 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_properties_data-2.0.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel index 42dc4eb7c34..cdb3b7c9449 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.icu_provider-2.0.0.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel index e4bc23dc1af..de24b64e74b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ident_case-1.0.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel index 1e4fe273978..c79d20f3a9e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna-1.1.0.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel index ca74505a064..538648fc1eb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.idna_adapter-1.2.1.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel index 9af800b92dc..f3c41fc7d20 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-1.9.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel index be7b81b49f1..339324bc897 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.11.4.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel index 6a2221969bf..838f8dfd6ce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inlinable_string-0.1.15.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel index 31a69e5e760..687f07ab93b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-0.11.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel index 757c2e30a5b..c9e73bfb91c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.inotify-sys-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel index 42a92804c85..4135430c0dd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.intrusive-collections-0.9.7.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel index 196b9d70b34..178eb9ea801 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.is_terminal_polyfill-1.70.1.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel index 4a7838edb6f..8c01d09ec29 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel index d0885a15d3d..ff6f7e18e76 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel index d0d13ab1a57..64e8b1bf5db 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itoa-1.0.15.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel index c92c87746bf..6f7696c7983 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jobserver-0.1.34.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -144,9 +148,15 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel index 46ed18db7c9..9659dec0e4b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.jod-thread-1.0.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel index e7d05a34f21..3a2d6e01b80 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.js-sys-0.3.78.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel index 81d5b18a81b..2163666cef7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-1.1.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel index 46c5f37608f..a162ce9265a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.kqueue-sys-1.0.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel index 63ae48cb758..078852cfe3c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.la-arena-0.3.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel index 8fdf1e161e9..204862e396e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lazy_static-1.5.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel index 4aad3afd224..b00d5c2476c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.libc-0.2.175.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel index 95a868e1ad3..6570e76db93 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.line-index-0.1.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel index 0e547980f69..47e14a2a214 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.litemap-0.8.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel index e0bfa81b31f..e369edeb455 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.lock_api-0.4.13.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel index 961aa4b6dab..a2b546f0520 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.3.9.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel index 8d88e063c67..b3bed18c81c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.log-0.4.28.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel index da67f321d99..cc8ef40941e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.matchers-0.2.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel index 9af3cd4c572..03b04580ea9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memchr-2.7.5.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel index 41234413ee7..3485ee47710 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.memoffset-0.9.1.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel index 80d0e6c3fc0..6f1ca1a97da 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miniz_oxide-0.8.9.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel index 28e096bc418..539da180bb7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mio-1.0.4.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -152,13 +156,27 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:wasm32-wasip1": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") ], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") + "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(target_os = "wasi") + "@vendor_ts__wasi-0.11.1-wasi-snapshot-preview1//:wasi", # cfg(target_os = "wasi") + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel index af5955087e3..8025e8f3b2c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.miow-0.6.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel index cfaa72fda83..aec7c2bd00b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel index ed88ea3eebb..6ed4e8027e7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nohash-hasher-0.2.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel index ffba7968026..6d024f0d1d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-8.2.0.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -162,6 +166,10 @@ rust_library( "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) + "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__inotify-0.11.0//:inotify", # cfg(any(target_os = "linux", target_os = "android")) "@vendor_ts__mio-1.0.4//:mio", # cfg(any(target_os = "linux", target_os = "android")) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel index 4ec350cba96..643378311dd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.notify-types-2.0.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel index 1e9f6c7d54a..a12b6b5e5d7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.nu-ansi-term-0.50.1.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel index ee85d2c2961..7f7685c0d5b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-conv-0.1.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel index 3b7620f1e5a..97a0e0a2f13 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num-traits-0.2.19.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel index 84ac7e536d7..0cd3c5c33dd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.num_cpus-1.17.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -144,6 +148,9 @@ rust_library( "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + ], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], @@ -156,12 +163,21 @@ rust_library( "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + ], "@rules_rust//rust/platform:wasm32-unknown-unknown": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], "@rules_rust//rust/platform:wasm32-wasip1": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + ], + "@rules_rust//rust/platform:wasm32-wasip2": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(not(windows)) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel index 1611f8ad4e8..686dd8f6a79 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell-1.21.3.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel index 08819b64aa4..dc02094678d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.once_cell_polyfill-1.70.1.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel index a712daf3904..826c14777f0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.oorandom-11.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel index be67bf877f4..e9e1714252b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ordered-float-2.10.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel index 96010fb2e46..b957f54c950 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.os_str_bytes-7.1.1.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel index 214b3d3caab..d10b3e75896 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.papaya-0.2.3.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel index 60ff4d9e26d..4bc7f4f9bb8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot-0.12.4.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel index ffcde4b57f2..e602d4cf358 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.parking_lot_core-0.9.11.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -152,9 +156,15 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel index 6a781ccec50..a806ba783a6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear-0.2.9.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel index a8e7ad4bf41..d37a7916d11 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel index 06f5a6f9f7e..925777f7837 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.percent-encoding-2.3.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel index bd473ae5a3f..3dcdb7841a8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-0.4.7.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel index 3f12c00274f..66c6d44fb9c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.perf-event-open-sys-1.0.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel index 7c88eb60903..96b02e10e07 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.petgraph-0.6.5.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel index 1c7ae29aa31..613c24f7cbc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pin-project-lite-0.2.16.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel index 10e8e40e1f1..e03ef295d21 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pkg-config-0.3.32.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel index c481da86e5d..c8afae58b26 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.1.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel index f4fc2d5dee0..343962c4585 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.potential_utf-0.1.3.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel index eee2906ed43..9d58835a336 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.powerfmt-0.2.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel index 68d235c3684..8043ecaee06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ppv-lite86-0.2.21.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel index e09b5045cc3..b979922bfcf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.101.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel index 84323b7da79..e97d61f229b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel index de02a99d0de..bf89a7251f3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.41.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel index 7a7f59d9f4c..778a94832fb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.r-efi-5.3.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel index 0d136750f61..de56de7393c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.123.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel index 65ca37ead02..5d4250c41bc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.123.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel index d3b5c92abd2..bf33fe6c892 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.123.0.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel index c0dff747844..b3dcedb0ec5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.123.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel index 8190270b487..88d4046a03a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.121.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel index fe2f610ab25..4971fc67e03 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.123.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel index 7fedf84a619..c5eaeddb683 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.121.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel index b21233957f3..bd2180aa2c5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.123.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel index 73ba2f1d47f..2c5fe2ea244 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.301.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel index f36d971d226..a3eb4397b88 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.301.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel index 900a9365794..648552243c8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.301.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel index 668aa255fbe..a138ff5c887 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.301.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel index 77782b1df3c..8811733c690 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.301.bazel @@ -86,12 +86,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel index f5ad3aa61e0..87e6fa6e904 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.301.bazel @@ -87,12 +87,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel index 74b8972eda0..c9b81576e38 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.301.bazel @@ -85,12 +85,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel index da23d55cdd2..6c023eedf9a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.301.bazel @@ -85,12 +85,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel index 556a788d138..4542092adf9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.301.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel index 51fdf30d0bb..137cdb42e44 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.301.bazel @@ -81,12 +81,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel index 58d0a9a3d87..2fbff68fc77 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.301.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel index f27215feb49..e31fb6afe34 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.301.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel index 68cfd57af75..d3627c8e09d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.301.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel index 37f3378bd62..62382cb6834 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.301.bazel @@ -80,12 +80,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel index 89463b1ab35..bda44ea0ec5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.301.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -122,6 +126,10 @@ rust_library( "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(all(target_os = "linux", target_env = "gnu")) "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel index 29b6d793366..e54b95b9252 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.301.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel index ae0f619a3ba..d1a49cd5f95 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.301.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel index e9e64e5fa08..fa784c663a8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.301.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel index 71c7a91ccf4..4d81268c7ba 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.301.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -152,9 +156,15 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [ + "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) + ], "@rules_rust//rust/platform:x86_64-apple-darwin": [ "@vendor_ts__libc-0.2.175//:libc", # cfg(unix) ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel index 277ab6b967c..2413110f255 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.301.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel index 9894d99260c..4f0ccf66d07 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.301.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel index dd6e2e7de24..8688fe6dde8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.301.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel index 3eb42ebd019..4e3842c4f09 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.301.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel index 868107cddc5..bca4bbf5f85 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.301.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel index 1e93e6aa96d..8f09f78c4b0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.301.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel index 76eee3e10fc..1e5b380c8e8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand-0.9.2.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel index 23a86fd3b81..d95c304574e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_chacha-0.9.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel index 7d2ea3945b8..02b349c691a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rand_core-0.9.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel index 25d4bda52c8..b022fcc5c8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.11.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel index 9925b0366bd..293c4247781 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-core-1.13.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel index f9aa145a63c..4f235ca509f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.redox_syscall-0.5.17.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel index 7db5ebf02c7..aa00cedf811 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-1.0.24.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel index 70bc6acb116..283e6bf5a8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ref-cast-impl-1.0.24.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel index 2e26723c478..67446df2cc3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-1.11.3.bazel @@ -89,12 +89,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel index 3f008ea863c..b921cf34fd2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-automata-0.4.11.bazel @@ -98,12 +98,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel index 678ff923f0b..8591bbb61ad 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.regex-syntax-0.8.6.bazel @@ -82,12 +82,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel index 730dcab37ba..8dd1734cb0b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rowan-0.15.15.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel index b1c27aea91a..2e1e394414b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-1.1.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel index 5af0f94dc4b..3510d2a1ecb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-hash-2.1.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel index 6636618777f..e28c0bc4178 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-literal-escaper-0.0.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel index b087a116ce2..adfeba65d21 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc-stable-hash-0.1.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel index 7947e6e3b80..0120f3ea41b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustc_apfloat-0.2.3+llvm-462a31f5a5ab.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel index 20ead5c4d95..03476d43a93 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.22.bazel @@ -74,12 +74,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel index 4a971256e83..5b099b034d2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ryu-1.0.20.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel index 5ba01a304a8..6a57925fb36 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.23.0.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel index d351f598b7b..2fa60dda2d7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.23.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel index 8d763b3ef95..622d2817781 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.23.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel index fd655a0ce78..01d9cc94d56 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.same-file-1.0.6.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel index 6f1dd98fa17..7229003a1d0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-0.9.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel index 81d7aa89ab5..757f0deab3c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.schemars-1.0.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel index b7ee6285790..6083076913d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scoped-tls-1.0.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel index 268fe36a09b..e9f53614a25 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.scopeguard-1.2.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel index b54e1b89da3..1a284015551 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.seize-0.5.0.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel index b0460d053ae..b50da61882e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.26.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel index e58b661dec8..c8b33b40bfe 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.228.bazel @@ -84,12 +84,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel index f04da9de1ad..61298a6ffb6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-untagged-0.1.8.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel index c897b79e5c7..4225c41bd21 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-value-0.7.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel index cfca5c545ab..2052a7e95a1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_core-1.0.228.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel index e3b6733407b..55489195f29 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.228.bazel @@ -73,12 +73,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel index 5d6298313e4..c1beaef5896 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.145.bazel @@ -75,6 +75,10 @@ rust_library( "indexmap", # powerpc-unknown-linux-gnu "preserve_order", # powerpc-unknown-linux-gnu ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "indexmap", # riscv64gc-unknown-linux-gnu + "preserve_order", # riscv64gc-unknown-linux-gnu + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "indexmap", # s390x-unknown-linux-gnu "preserve_order", # s390x-unknown-linux-gnu @@ -137,12 +141,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], @@ -187,6 +195,9 @@ rust_library( "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ "@vendor_ts__indexmap-2.11.4//:indexmap", # powerpc-unknown-linux-gnu ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "@vendor_ts__indexmap-2.11.4//:indexmap", # riscv64gc-unknown-linux-gnu + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "@vendor_ts__indexmap-2.11.4//:indexmap", # s390x-unknown-linux-gnu ], @@ -265,6 +276,10 @@ cargo_build_script( "indexmap", # powerpc-unknown-linux-gnu "preserve_order", # powerpc-unknown-linux-gnu ], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [ + "indexmap", # riscv64gc-unknown-linux-gnu + "preserve_order", # riscv64gc-unknown-linux-gnu + ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ "indexmap", # s390x-unknown-linux-gnu "preserve_order", # s390x-unknown-linux-gnu diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel index c596adf490c..cfd8057e492 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.9.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel index e51f544db4f..6e22434699e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-1.0.2.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel index 39a38f4f337..b34c3aebce9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.14.1.bazel @@ -80,12 +80,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel index e6c0864d9f0..adec2841a5f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.14.1.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel index 63410f30d1c..0baae2b420d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel index 848d1e2a4e5..d51e394269a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.sharded-slab-0.1.7.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel index b9f77c42ca3..9c85601923b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.shlex-1.3.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel index baeaf39f21e..ef1a58e47b6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smallvec-1.15.1.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel index 93dd67a02aa..ba66fdd7cff 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.smol_str-0.3.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel index 38f9881b0b7..d01e1329328 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.stable_deref_trait-1.2.0.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel index 595be8e1eaf..70243163889 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.streaming-iterator-0.1.9.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel index 69afe594ca7..3b807674bb6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.strsim-0.11.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel index 234b5299969..b771972149b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.106.bazel @@ -83,12 +83,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel index 1043ced1384..100a3963472 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel index 97833eecfaf..b8c9c3fa890 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.temp-dir-0.1.16.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel index eb5ded13f06..24c4e086a8e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.text-size-1.1.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel index 5cae0f03c35..20749982e65 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thin-vec-0.2.14.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel index e50ec05152d..d4da859d348 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-2.0.16.bazel @@ -81,12 +81,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel index c8a6f5c3aca..9bce5c77e1d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-2.0.16.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel index 649948406e7..5fdccb311d1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thread_local-1.1.9.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel index 9df78d1b4b6..095ed4f18ce 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-0.3.43.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel index 31940c3f306..c97b1837f2e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-core-0.1.6.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel index 3e3c5b921ab..74e05258e0c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.time-macros-0.2.24.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel index c499cc1b680..af42b4cbcb1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tinystr-0.8.1.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel index ba176cda49d..f772d5dcdc2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.23.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel index ca4f62b9c48..73249141b0f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.9.7.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel index 8a9d6b7342b..2d752cc867d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.11.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel index a94b3a87066..662a538d5b7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.7.2.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel index ab36adb8f30..4a3081f858a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.27.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel index 8b4c4668aa5..9920a989d97 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_parser-1.0.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel index d8562021086..b25d3e86f9f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_write-0.1.2.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel index e90c3a61d87..178d3e98f70 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_writer-1.0.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel index 1e49c47fd1e..48d06e879a6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-0.1.41.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel index ec9f805d2d3..16782034af3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.30.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel index a1fb8f6e776..e758ef8b8e9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-core-0.1.34.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel index 49318221b2f..310b8a8a6d2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-flame-0.2.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel index 884615bcabe..292b84993bc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-log-0.2.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel index cef88b5639b..a118ed152c5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-subscriber-0.3.20.bazel @@ -87,12 +87,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel index 46d6255099c..aec4b5a2fa4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-0.25.9.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel index 2b40d8a34d6..4d3af159e79 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-embedded-template-0.25.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel index ae6d02ae4eb..613b9ec6fd1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-json-0.24.8.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel index 8bc56f476d9..956e222a8f0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-language-0.1.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel index 4377d9f8cb9..f1b7c0f0118 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ql-0.23.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel index 86f87e70022..443ca47fa2c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tree-sitter-ruby-0.23.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel index 95d24ae522c..480f760f197 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel index 69e0c45ebd0..f0af1025ad3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typed-arena-2.0.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel index 10f66174bc2..07d0afb6bd7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.typeid-1.0.3.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel index bcd4e9b5123..3a95385b785 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.uncased-0.9.10.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel index 5472fc5dabb..473cc4ece53 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ungrammar-1.16.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel index f0f3da9a94c..0879a535547 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-ident-1.0.19.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel index fed0654f1c1..fc560bc6d41 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-properties-0.1.3.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel index 6776feb0210..0d91b8333d9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unicode-xid-0.2.6.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel index 9478c1cfe80..089e3d57c69 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.unsafe-libyaml-0.2.11.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel index 6b0e6fcb669..7f701fa2f9a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.url-2.5.7.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel index c4b2c4062c1..f933e15e86f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8_iter-1.0.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel index df14dcb7e1f..436b71c8e8b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.utf8parse-0.2.2.bazel @@ -73,12 +73,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel index 10a3cc3548a..020a37ab945 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.valuable-0.1.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel index ce51c79a218..43b406d0976 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.version_check-0.9.5.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel index 14ba229e7fc..5ac9c7ffbc7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.walkdir-2.5.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel index 6a0e8f023c4..5e8b84da975 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel index 81a3a287a54..0b482a2c9b2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasi-0.14.5+wasi-0.2.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel index ce61edb001d..113948d4094 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasip2-1.0.0+wasi-0.2.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel index 3debce4ea85..244a8c5b365 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-0.2.101.bazel @@ -84,12 +84,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel index f859ddcd68b..b56eaba879c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.101.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel index b6d6862a2bc..5ee795fafbf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.101.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel index cfee619986a..6930d6021e9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.101.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel index 2c087bf3c82..948ae73962f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-shared-0.2.101.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel index d31853499e8..9a98af20dc9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winapi-util-0.1.11.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel index 7a76ed1b4fa..24e0b959158 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.61.2.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel index 39e7c75ba65..d48b53ff142 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.60.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel index c91b2cb3347..49937afe581 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.59.1.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel index bce46b7307a..977e17dfc3b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel index dc214f6dacb..f50b21712e5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.2.0.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel index 1e0a303b959..e5cec242987 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.3.4.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel index cb5f79c5e8c..412effdf6db 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.4.2.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel index 8e8b30891c1..7e31f8f0880 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.52.0.bazel @@ -81,12 +81,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel index 429981ce040..f744a0937da 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.59.0.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel index 6904a389097..1d83a074bfd 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.60.2.bazel @@ -84,12 +84,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel index 0e9f1f723ed..ba1daef32f2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-sys-0.61.0.bazel @@ -86,12 +86,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel index ebc4d23015e..cd7e40af7c3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.52.6.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel index 74f5aa79ab0..d719429a8dc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-targets-0.53.3.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel index d9528c09f76..ef1741d80d4 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel index 6d4e29a973d..602461b5c35 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_gnullvm-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel index 81ac3184619..f9a5577d654 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel index 7f892eceb07..e69571a86c9 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_aarch64_msvc-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel index 8946e3dae8c..a1a0cbcda3a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel index 5421c3221b0..ae4bfaa33b3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnu-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel index 7c6704de130..0188a24e021 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel index ec895ba6728..27afbde319d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_gnullvm-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel index 714cbd2a786..06d2929a45f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel index 442a155b5ef..7772ad2658c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_i686_msvc-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel index 627d5812cfd..9520c81c38e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel index 5ed7b8685f4..8c35bce1d55 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnu-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel index a7d85c18b4e..b73914ecb7c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel index 01065e2d820..6d9af145384 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_gnullvm-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel index 6b5b8ea9385..6cfc3a6ef6f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.52.6.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel index 8dac1ae2733..6886d7c018a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows_x86_64_msvc-0.53.0.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel index 8ac650c5d96..3d741c7c121 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.winnow-0.7.13.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel index a34a3e6b17d..b1993606fb8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wit-bindgen-0.45.1.bazel @@ -74,12 +74,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel index 4fcd2d17feb..91386e84b83 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.writeable-0.6.1.bazel @@ -70,12 +70,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel index bd4b2f2df67..33212c84bf0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yansi-1.0.1.bazel @@ -75,12 +75,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel index 94aab2f51b5..5a2396ce8c2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-0.8.0.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel index 98706c66018..b1f81925305 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.yoke-derive-0.8.0.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel index a35e65a1f4d..9e99c8ff5ca 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-0.8.27.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel index 7342159d255..0b0f63f88cc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.27.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel index ff66227ba59..35d1978548b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-0.1.6.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel index b1ccbb6a85d..6e1f2b13254 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerofrom-derive-0.1.6.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel index 68bcc2fdf62..94342aec8e3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerotrie-0.2.2.bazel @@ -77,12 +77,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel index 5b82e659f32..931a800f5d0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-0.11.4.bazel @@ -78,12 +78,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel index 29b50b11ae3..820d85f680f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerovec-derive-0.11.1.bazel @@ -70,12 +70,16 @@ rust_proc_macro( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel index 587eab5d90b..2cb5eb09652 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-0.13.3.bazel @@ -76,12 +76,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel index 4ac45c9e1ba..f51a0c3a30e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-safe-7.2.4.bazel @@ -80,12 +80,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel index 8f03d8a3bf7..060e52d4a08 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zstd-sys-2.0.16+zstd.1.5.7.bazel @@ -79,12 +79,16 @@ rust_library( "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [], "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], "@rules_rust//rust/platform:thumbv7em-none-eabi": [], "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-emscripten": [], "@rules_rust//rust/platform:wasm32-unknown-unknown": [], "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:wasm32-wasip1-threads": [], + "@rules_rust//rust/platform:wasm32-wasip2": [], "@rules_rust//rust/platform:x86_64-apple-darwin": [], "@rules_rust//rust/platform:x86_64-apple-ios": [], "@rules_rust//rust/platform:x86_64-linux-android": [], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 4d7205ad951..a56d266ab74 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -588,25 +588,25 @@ _CONDITIONS = { "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"], "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"], "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], - "cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"], "cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], - "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p2\"))": [], + "cfg(all(target_arch = \"wasm32\", target_os = \"wasi\", target_env = \"p2\"))": ["@rules_rust//rust/platform:wasm32-wasip2"], "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_os = \"linux\", not(target_env = \"ohos\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_os = \"linux\", not(target_env = \"ohos\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(all(target_os = \"linux\", target_env = \"gnu\"))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_os = \"uefi\", getrandom_backend = \"efi_rng\"))": [], "cfg(any())": [], "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", target_os = \"cygwin\", all(target_os = \"horizon\", target_arch = \"arm\")))": ["@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], "cfg(any(target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonflybsd\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], "cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"], "cfg(any(target_os = \"ios\", target_os = \"visionos\", target_os = \"watchos\", target_os = \"tvos\"))": ["@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:x86_64-apple-ios"], - "cfg(any(target_os = \"linux\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], - "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], - "cfg(any(target_pointer_width = \"8\", target_pointer_width = \"16\", target_pointer_width = \"32\"))": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1"], - "cfg(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-none-elf", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu", "@rules_rust//rust/platform:x86_64-unknown-none", "@rules_rust//rust/platform:x86_64-unknown-uefi"], + "cfg(any(target_os = \"linux\", target_os = \"android\"))": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:x86_64-apple-darwin"], + "cfg(any(target_pointer_width = \"8\", target_pointer_width = \"16\", target_pointer_width = \"32\"))": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], + "cfg(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-none-elf", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu", "@rules_rust//rust/platform:x86_64-unknown-none", "@rules_rust//rust/platform:x86_64-unknown-uefi"], "cfg(target_os = \"android\")": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:x86_64-linux-android"], "cfg(target_os = \"haiku\")": [], "cfg(target_os = \"hermit\")": [], @@ -615,10 +615,10 @@ _CONDITIONS = { "cfg(target_os = \"redox\")": [], "cfg(target_os = \"solaris\")": [], "cfg(target_os = \"vxworks\")": [], - "cfg(target_os = \"wasi\")": ["@rules_rust//rust/platform:wasm32-wasip1"], + "cfg(target_os = \"wasi\")": ["@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:wasm32-wasip1-threads", "@rules_rust//rust/platform:wasm32-wasip2"], "cfg(target_os = \"windows\")": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "cfg(target_vendor = \"apple\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios"], - "cfg(unix)": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], + "cfg(unix)": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:wasm32-unknown-emscripten", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "cfg(windows_raw_dylib)": [], "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"], @@ -629,12 +629,16 @@ _CONDITIONS = { "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"], "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"], "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"], + "riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"], "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"], "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"], "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"], "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"], + "wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"], "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"], "wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"], + "wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"], + "wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"], "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"], "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"], "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"], From 72d83cc966694b81f6e97c7ba1d263e45209d9d6 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 23 Oct 2025 10:57:21 +0200 Subject: [PATCH 283/965] ControlFlowReachability: Align the SSA signature with the one from shared SSA. --- .../controlflow/ControlFlowReachability.qll | 8 +++--- .../controlflow/ControlFlowReachability.qll | 8 +++--- .../controlflow/ControlFlowReachability.qll | 26 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll index 9d9e3f8d458..aafe14402c7 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll @@ -33,13 +33,13 @@ private module ControlFlowInput implements class SsaDefinition = Ssa::Definition; - class SsaWriteDefinition extends SsaDefinition instanceof Ssa::ExplicitDefinition { - Expr getDefinition() { result = super.getADefinition().getSource() } + class SsaExplicitWrite extends SsaDefinition instanceof Ssa::ExplicitDefinition { + Expr getValue() { result = super.getADefinition().getSource() } } - class SsaPhiNode = Ssa::PhiNode; + class SsaPhiDefinition = Ssa::PhiNode; - class SsaUncertainDefinition = Ssa::UncertainDefinition; + class SsaUncertainWrite = Ssa::UncertainDefinition; class GuardValue = Guards::GuardValue; diff --git a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll index fbb384e2b0e..9fe6b9b0b1d 100644 --- a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll +++ b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll @@ -31,16 +31,16 @@ private module ControlFlowInput implements InputSig Date: Thu, 23 Oct 2025 12:48:44 +0200 Subject: [PATCH 284/965] C#: Accept qltest changes. --- .../AssignableDefinitionNode.expected | 2 +- .../controlflow/graph/BasicBlock.expected | 38 +- .../controlflow/graph/Condition.expected | 88 ++-- .../controlflow/graph/Dominance.expected | 403 ++++++++---------- .../graph/EnclosingCallable.expected | 96 ++--- .../controlflow/graph/NodeGraph.expected | 101 ++--- .../csharp8/switchexprcontrolflow.expected | 17 +- .../dataflow/ssa/SsaDef.expected | 2 +- .../dataflow/ssa/SsaDefElement.expected | 2 +- .../dataflow/ssa/SsaExplicitDef.expected | 2 +- .../dataflow/ssa/SsaRead.expected | 2 +- .../dataflow/ssa/SsaUltimateDef.expected | 2 +- .../exceptions/Exceptions1.expected | 41 ++ 13 files changed, 396 insertions(+), 400 deletions(-) diff --git a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected index cbac7059afd..a877dc5a99c 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected +++ b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected @@ -31,7 +31,7 @@ | Assignables.cs:69:13:69:17 | ... = ... | Assignables.cs:69:13:69:17 | ... = ... | | Assignables.cs:78:22:78:22 | String s | Assignables.cs:78:22:78:22 | String s | | Assignables.cs:82:21:82:33 | String temp = ... | Assignables.cs:82:21:82:33 | String temp = ... | -| Assignables.cs:84:30:84:30 | Exception e | Assignables.cs:84:30:84:30 | [exception: OutOfMemoryException] Exception e | +| Assignables.cs:84:30:84:30 | Exception e | Assignables.cs:84:30:84:30 | Exception e | | Assignables.cs:92:9:92:54 | ... = ... | Assignables.cs:92:9:92:54 | ... = ... | | Assignables.cs:92:9:92:54 | ... = ... | Assignables.cs:92:9:92:54 | ... = ... | | Assignables.cs:92:9:92:54 | ... = ... | Assignables.cs:92:9:92:54 | ... = ... | diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index b8ec85b3641..f95409f1bd6 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -367,12 +367,10 @@ | ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | exit M3 | 7 | | ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | exit M4 | 7 | | ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | exit M5 | 7 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | 7 | +| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:44:9:47:9 | catch (...) {...} | 8 | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 | 2 | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | 1 | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | 1 | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | 2 | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | 1 | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | 1 | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | 2 | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | exit M7 | 6 | | ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | exit M8 | 6 | @@ -424,25 +422,26 @@ | Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | 1 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | 1 | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | 1 | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | 2 | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | 1 | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | 2 | | Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | 2 | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:34:21:34:24 | true | 6 | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | 1 | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:21:34:24 | true | 6 | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:38:17:38:44 | throw ...; | 5 | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | 1 | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | 1 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | 1 | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:46:13:46:19 | return ...; | 3 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | 4 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:58:13:58:37 | call to method WriteLine | 7 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | 1 | | Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | 1 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | 1 | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | 1 | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | 2 | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | 1 | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | 2 | | Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | 2 | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | 5 | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | 1 | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:51 | ... != ... | 5 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | 1 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | 4 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:77:9:100:9 | while (...) ... | 6 | @@ -490,10 +489,8 @@ | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | 2 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | 1 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | 2 | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | 1 | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | 5 | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | 5 | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | 1 | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:54 | ... == ... | 5 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | 6 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:167:17:167:37 | call to method WriteLine | 5 | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA | 5 | @@ -506,11 +503,10 @@ | Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | 1 | | Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | 1 | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | 5 | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | 2 | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | 1 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | 1 | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | 1 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | 1 | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | 1 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | 1 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | 1 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | 3 | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | 2 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:17:199:18 | access to parameter b1 | 6 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected index 71bcf08de16..c705855ac64 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected @@ -815,9 +815,10 @@ conditionBlock | Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | "b" | false | | Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:147:13:147:49 | ...; | true | | Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:149:13:149:49 | ...; | false | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | false | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | false | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | true | +| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:45:9:47:9 | {...} | true | +| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:48:9:51:9 | catch (...) {...} | false | +| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:49:9:51:9 | {...} | false | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | true | | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | false | | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:69:19:69:33 | object creation of type Exception | true | | ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:75:19:75:33 | object creation of type Exception | true | @@ -832,29 +833,32 @@ conditionBlock | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | true | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:143:13:143:43 | ...; | true | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:145:13:145:53 | ...; | false | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | true | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | false | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | false | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | false | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | false | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | true | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | false | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | true | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | true | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | false | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | false | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:66:9:67:9 | {...} | false | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | true | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:66:9:67:9 | {...} | true | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | true | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:27:9:29:9 | {...} | true | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:27:9:29:9 | {...} | true | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | true | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | true | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | false | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | true | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | true | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | true | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:62:9:64:9 | {...} | true | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | false | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:62:9:64:9 | {...} | true | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | true | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | true | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:66:9:67:9 | {...} | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | exit M4 (abnormal) | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:78:9:100:9 | {...} | true | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:82:21:82:27 | return ...; | true | @@ -894,19 +898,22 @@ conditionBlock | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:21:159:45 | throw ...; | true | | Finally.cs:158:36:158:36 | 1 | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | true | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | true | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | true | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:162:13:164:13 | {...} | true | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:162:13:164:13 | {...} | true | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | throw ...; | true | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | true | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | true | | Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | true | | Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | true | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:21:199:43 | throw ...; | true | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | @@ -1907,10 +1914,10 @@ conditionFlow | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | true | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:143:13:143:43 | ...; | true | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:145:13:145:53 | ...; | false | -| Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:27:9:29:9 | {...} | true | +| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | true | | Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:66:9:67:9 | {...} | true | +| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | true | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | true | | Finally.cs:77:16:77:20 | ... > ... | Finally.cs:74:10:74:11 | exit M4 (normal) | false | | Finally.cs:77:16:77:20 | ... > ... | Finally.cs:78:9:100:9 | {...} | true | | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | true | @@ -1935,16 +1942,13 @@ conditionFlow | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | true | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | false | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index 89fc10e6019..8904dfb311b 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -1341,13 +1341,13 @@ dominance | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:40:9:51:9 | try {...} ... | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:41:9:43:9 | {...} | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:31 | ...; | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | catch (...) {...} | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:25:42:29 | false | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:55:5:58:5 | {...} | | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:54:10:54:11 | exit M7 | @@ -1520,17 +1520,17 @@ dominance | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:22:9:25:9 | {...} | | Finally.cs:22:9:25:9 | {...} | Finally.cs:23:13:23:38 | ...; | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | catch (...) {...} | | Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | -| Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | +| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | | Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:31:9:40:9 | {...} | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | Finally.cs:31:9:40:9 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:33:13:35:13 | {...} | | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | @@ -1540,7 +1540,10 @@ dominance | Finally.cs:37:13:39:13 | {...} | Finally.cs:38:37:38:42 | "Boo!" | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:45:9:47:9 | {...} | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | return ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | @@ -1551,20 +1554,20 @@ dominance | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:57:9:60:9 | {...} | | Finally.cs:57:9:60:9 | {...} | Finally.cs:58:13:58:38 | ...; | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | catch (...) {...} | | Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | -| Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | +| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | | Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | -| Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | -| Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:48:65:51 | [exception: Exception] null | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:35 | access to local variable e | +| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:43 | access to property Message | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:48:65:51 | null | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:51 | ... != ... | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | @@ -1690,22 +1693,18 @@ dominance | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | +| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | catch (...) {...} | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | -| Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | -| Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | -| Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [exception: Exception] "1" | -| Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | -| Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | -| Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:39 | access to local variable e | +| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:47 | access to property Message | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:52:161:54 | "1" | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | +| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:54 | ... == ... | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | | Finally.cs:163:17:163:43 | ...; | Finally.cs:163:35:163:38 | access to parameter args | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:40:163:40 | 0 | @@ -1742,11 +1741,10 @@ dominance | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | @@ -5136,9 +5134,9 @@ postDominance | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:42:25:42:29 | false | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:41:9:43:9 | {...} | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:31 | ...; | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | | ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:54:10:54:11 | exit M7 | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | @@ -5303,10 +5301,10 @@ postDominance | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:31:23:36 | "Try2" | | Finally.cs:23:13:23:38 | ...; | Finally.cs:22:9:25:9 | {...} | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:38 | ...; | -| Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:48:26:51 | [exception: Exception] true | +| Finally.cs:26:48:26:51 | true | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:48:26:51 | true | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:31:9:40:9 | {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:31:9:40:9 | {...} | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:31:9:40:9 | {...} | | Finally.cs:33:13:35:13 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:33:13:35:13 | {...} | @@ -5316,11 +5314,13 @@ postDominance | Finally.cs:38:17:38:44 | throw ...; | Finally.cs:38:23:38:43 | object creation of type Exception | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:37:38:42 | "Boo!" | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:37:13:39:13 | {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:46:13:46:19 | return ...; | Finally.cs:45:9:47:9 | {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:38:17:38:44 | throw ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:46:13:46:19 | return ...; | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:31:50:39 | "Finally" | | Finally.cs:50:13:50:41 | ...; | Finally.cs:49:9:51:9 | {...} | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:41 | ...; | @@ -5331,17 +5331,17 @@ postDominance | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:31:58:36 | "Try3" | | Finally.cs:58:13:58:38 | ...; | Finally.cs:57:9:60:9 | {...} | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:38 | ...; | -| Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:48:61:51 | [exception: Exception] true | +| Finally.cs:61:48:61:51 | true | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:48:61:51 | true | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:65:48:65:51 | [exception: Exception] null | -| Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | +| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:35:65:35 | access to local variable e | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:48:65:51 | null | +| Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:43 | access to property Message | | Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:69:9:71:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | ... != ... | | Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:31:70:39 | "Finally" | | Finally.cs:70:13:70:41 | ...; | Finally.cs:69:9:71:9 | {...} | @@ -5466,18 +5466,12 @@ postDominance | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:24 | access to parameter args | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:36:158:36 | 1 | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:27:159:44 | object creation of type Exception | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | -| Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:161:52:161:54 | [exception: Exception] "1" | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | -| Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | -| Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:27:159:44 | object creation of type Exception | +| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:39:161:39 | access to local variable e | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:52:161:54 | "1" | +| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:47 | access to property Message | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:35:163:41 | access to array element | | Finally.cs:163:17:163:43 | ...; | Finally.cs:162:13:164:13 | {...} | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:17:163:43 | ...; | @@ -5513,11 +5507,10 @@ postDominance | Finally.cs:185:13:187:13 | {...} | Finally.cs:184:13:191:13 | try {...} ... | | Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:185:13:187:13 | {...} | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:17:186:47 | if (...) ... | -| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:189:13:191:13 | {...} | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:17:190:47 | if (...) ... | | Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | object creation of type ExceptionC | @@ -9421,19 +9414,13 @@ blockDominance | ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | enter M5 | | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | enter M6 | | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | enter M7 | | ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | enter M8 | @@ -9508,41 +9495,46 @@ blockDominance | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:38:26:39 | IOException ex | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:41:9:43:9 | catch (...) {...} | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:19:10:19:11 | enter M2 | Finally.cs:49:9:51:9 | {...} | | Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | | Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:27:9:29:9 | {...} | | Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (abnormal) | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (normal) | @@ -9552,31 +9544,31 @@ blockDominance | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:38:61:39 | IOException ex | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:26:65:26 | Exception e | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:66:9:67:9 | {...} | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:69:9:71:9 | {...} | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | | Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:62:9:64:9 | {...} | | Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:66:9:67:9 | {...} | | Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 (abnormal) | @@ -9727,10 +9719,8 @@ blockDominance | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | 1 | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | +| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | Exception e | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | {...} | | Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | @@ -9746,10 +9736,8 @@ blockDominance | Finally.cs:155:9:169:9 | {...} | Finally.cs:158:36:158:36 | 1 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:155:9:169:9 | {...} | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:30:161:30 | Exception e | | Finally.cs:155:9:169:9 | {...} | Finally.cs:162:13:164:13 | {...} | | Finally.cs:155:9:169:9 | {...} | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | @@ -9758,12 +9746,12 @@ blockDominance | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:162:13:164:13 | {...} | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:162:13:164:13 | {...} | | Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | @@ -9778,9 +9766,8 @@ blockDominance | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | {...} | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | {...} | | Finally.cs:176:10:176:11 | enter M9 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | @@ -9795,24 +9782,24 @@ blockDominance | Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | | Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:189:13:191:13 | {...} | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | @@ -13511,17 +13498,12 @@ postBlockDominance | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | enter M6 | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | enter M6 | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | +| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:49:9:51:9 | {...} | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | enter M7 | | ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | enter M8 | @@ -13581,37 +13563,39 @@ postBlockDominance | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:38:26:39 | IOException ex | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:41:9:43:9 | catch (...) {...} | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:49:9:51:9 | {...} | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:38:26:39 | IOException ex | | Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | | Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | enter M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:38:26:39 | IOException ex | | Finally.cs:49:9:51:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:49:9:51:9 | {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | catch (...) {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:44:9:47:9 | catch {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | {...} | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | @@ -13619,29 +13603,28 @@ postBlockDominance | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:38:61:39 | IOException ex | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:26:65:26 | Exception e | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:66:9:67:9 | {...} | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:69:9:71:9 | {...} | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:38:61:39 | IOException ex | | Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:26:65:26 | Exception e | | Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | enter M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:38:61:39 | IOException ex | | Finally.cs:69:9:71:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:26:65:26 | Exception e | | Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | | Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | {...} | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | enter M4 | @@ -13756,10 +13739,8 @@ postBlockDominance | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:158:36:158:36 | 1 | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | +| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:30:161:30 | Exception e | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:162:13:164:13 | {...} | | Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | @@ -13771,16 +13752,10 @@ postBlockDominance | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:30:161:30 | Exception e | | Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | @@ -13796,9 +13771,8 @@ postBlockDominance | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:183:9:192:9 | {...} | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:189:13:191:13 | {...} | | Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | | Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | @@ -13808,16 +13782,17 @@ postBlockDominance | Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:189:13:191:13 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | enter M10 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index ea9f0d28e61..a3a6a3cddfc 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -1471,11 +1471,10 @@ nodeEnclosing | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | M7 | @@ -1684,13 +1683,13 @@ nodeEnclosing | Finally.cs:23:13:23:38 | ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:19:10:19:11 | M2 | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:48:26:51 | true | Finally.cs:19:10:19:11 | M2 | | Finally.cs:27:9:29:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:19:10:19:11 | M2 | | Finally.cs:31:9:40:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:19:10:19:11 | M2 | | Finally.cs:33:13:35:13 | {...} | Finally.cs:19:10:19:11 | M2 | @@ -1701,8 +1700,11 @@ nodeEnclosing | Finally.cs:38:17:38:44 | throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:19:10:19:11 | M2 | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:46:13:46:19 | return ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:41 | ...; | Finally.cs:19:10:19:11 | M2 | @@ -1718,17 +1720,17 @@ nodeEnclosing | Finally.cs:58:13:58:38 | ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:54:10:54:11 | M3 | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:48:61:51 | true | Finally.cs:54:10:54:11 | M3 | | Finally.cs:62:9:64:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:48:65:51 | null | Finally.cs:54:10:54:11 | M3 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | M3 | @@ -1870,18 +1872,12 @@ nodeEnclosing | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:52:161:54 | "1" | Finally.cs:147:10:147:11 | M8 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:43 | ...; | Finally.cs:147:10:147:11 | M8 | @@ -1926,10 +1922,8 @@ nodeEnclosing | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | M9 | @@ -4605,10 +4599,8 @@ blockEnclosing | ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | M5 | | ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | M7 | | ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | M8 | @@ -4660,25 +4652,26 @@ blockEnclosing | Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | M2 | | Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | M2 | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:19:10:19:11 | M2 | | Finally.cs:27:9:29:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | M3 | | Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | M3 | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:54:10:54:11 | M3 | | Finally.cs:62:9:64:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:54:10:54:11 | M3 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | M4 | @@ -4726,10 +4719,8 @@ blockEnclosing | Finally.cs:158:36:158:36 | 1 | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | @@ -4744,9 +4735,8 @@ blockEnclosing | Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | | Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | M10 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 8d7b69f0f6b..8f6f5e43d62 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -1505,16 +1505,14 @@ | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:40:9:51:9 | try {...} ... | | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:41:9:43:9 | {...} | | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:31 | ...; | | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | exception | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | exception | +| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | catch (...) {...} | exception | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:25:42:29 | false | | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | | -| ExitMethods.cs:44:9:47:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | match | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | match | -| ExitMethods.cs:44:9:47:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | no-match | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | match | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | no-match | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | | | ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | return | -| ExitMethods.cs:48:9:51:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | match | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | match | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | | | ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | return | | ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:55:5:58:5 | {...} | | @@ -1704,19 +1702,19 @@ | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:22:9:25:9 | {...} | | | Finally.cs:22:9:25:9 | {...} | Finally.cs:23:13:23:38 | ...; | | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:24:13:24:19 | return ...; | | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | exception | +| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | catch (...) {...} | exception | | Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:49:9:51:9 | {...} | return | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | match | -| Finally.cs:26:9:29:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | no-match | -| Finally.cs:26:38:26:39 | [exception: Exception] IOException ex | Finally.cs:26:48:26:51 | [exception: Exception] true | | -| Finally.cs:26:48:26:51 | [exception: Exception] true | Finally.cs:27:9:29:9 | {...} | true | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | match | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | no-match | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | | +| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | true | | Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | match | -| Finally.cs:30:9:40:9 | [exception: Exception] catch (...) {...} | Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | no-match | -| Finally.cs:30:41:30:42 | [exception: Exception] ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | match | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | no-match | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | | Finally.cs:31:9:40:9 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:33:13:35:13 | {...} | | | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | | @@ -1727,8 +1725,12 @@ | Finally.cs:38:17:38:44 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | | -| Finally.cs:41:9:43:9 | [exception: Exception] catch (...) {...} | Finally.cs:42:9:43:9 | {...} | match | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | match | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | no-match | | Finally.cs:42:9:43:9 | {...} | Finally.cs:49:9:51:9 | {...} | | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:45:9:47:9 | {...} | | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | return ...; | | +| Finally.cs:46:13:46:19 | return ...; | Finally.cs:49:9:51:9 | {...} | return | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | exception | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | , return | @@ -1741,23 +1743,24 @@ | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:57:9:60:9 | {...} | | | Finally.cs:57:9:60:9 | {...} | Finally.cs:58:13:58:38 | ...; | | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:59:13:59:19 | return ...; | | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | exception | +| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | catch (...) {...} | exception | | Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:69:9:71:9 | {...} | return | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | match | -| Finally.cs:61:9:64:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | no-match | -| Finally.cs:61:38:61:39 | [exception: Exception] IOException ex | Finally.cs:61:48:61:51 | [exception: Exception] true | | -| Finally.cs:61:48:61:51 | [exception: Exception] true | Finally.cs:62:9:64:9 | {...} | true | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | match | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | no-match | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | | +| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | true | | Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:69:9:71:9 | {...} | exception | -| Finally.cs:65:9:67:9 | [exception: Exception] catch (...) {...} | Finally.cs:65:26:65:26 | [exception: Exception] Exception e | match | -| Finally.cs:65:26:65:26 | [exception: Exception] Exception e | Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | | -| Finally.cs:65:35:65:35 | [exception: Exception] access to local variable e | Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | | -| Finally.cs:65:35:65:43 | [exception: Exception] access to property Message | Finally.cs:65:48:65:51 | [exception: Exception] null | | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | Finally.cs:69:9:71:9 | {...} | exception | -| Finally.cs:65:48:65:51 | [exception: Exception] null | Finally.cs:65:35:65:51 | [exception: Exception] ... != ... | | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | match | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:69:9:71:9 | {...} | exception | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:35 | access to local variable e | | +| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:43 | access to property Message | | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:48:65:51 | null | | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | true | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:69:9:71:9 | {...} | exception | +| Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:51 | ... != ... | | | Finally.cs:66:9:67:9 | {...} | Finally.cs:69:9:71:9 | {...} | | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | exception | @@ -1911,30 +1914,23 @@ | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | exception | +| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | catch (...) {...} | exception | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | +| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:161:13:164:13 | catch (...) {...} | exception | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | -| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | exception | +| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:161:13:164:13 | catch (...) {...} | exception | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | | -| Finally.cs:161:13:164:13 | [exception: Exception] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: Exception] Exception e | match | -| Finally.cs:161:13:164:13 | [exception: NullReferenceException] catch (...) {...} | Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | match | -| Finally.cs:161:30:161:30 | [exception: Exception] Exception e | Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | | -| Finally.cs:161:30:161:30 | [exception: NullReferenceException] Exception e | Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | | -| Finally.cs:161:39:161:39 | [exception: Exception] access to local variable e | Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | | -| Finally.cs:161:39:161:39 | [exception: NullReferenceException] access to local variable e | Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | | -| Finally.cs:161:39:161:47 | [exception: Exception] access to property Message | Finally.cs:161:52:161:54 | [exception: Exception] "1" | | -| Finally.cs:161:39:161:47 | [exception: NullReferenceException] access to property Message | Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:161:52:161:54 | [exception: Exception] "1" | Finally.cs:161:39:161:54 | [exception: Exception] ... == ... | | -| Finally.cs:161:52:161:54 | [exception: NullReferenceException] "1" | Finally.cs:161:39:161:54 | [exception: NullReferenceException] ... == ... | | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | match | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | no-match | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:39 | access to local variable e | | +| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:47 | access to property Message | | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:52:161:54 | "1" | | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | true | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | +| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:54 | ... == ... | | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (normal) | | @@ -1979,16 +1975,13 @@ | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | exception | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | catch (...) {...} | exception | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | exception | -| Finally.cs:188:13:191:13 | [exception: ExceptionB] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | match | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:13:191:13 | [exception: Exception] catch (...) {...} | Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | match | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:38:188:39 | [exception: ExceptionB] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:38:188:39 | [exception: Exception] access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | exception | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | match | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | diff --git a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected index 2c4b9de438e..83438c26f6e 100644 --- a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected +++ b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected @@ -162,9 +162,9 @@ | patterns.cs:136:17:143:13 | ... switch { ... } | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor | | patterns.cs:138:17:138:17 | 1 | patterns.cs:138:28:138:50 | object creation of type ArgumentException | semmle.label | match | | patterns.cs:138:17:138:17 | 1 | patterns.cs:139:17:139:17 | 2 | semmle.label | no-match | -| patterns.cs:138:22:138:50 | throw ... | patterns.cs:145:9:148:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception | +| patterns.cs:138:22:138:50 | throw ... | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | | patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:138:22:138:50 | throw ... | semmle.label | successor | -| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | semmle.label | exception | +| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | | patterns.cs:139:17:139:17 | 2 | patterns.cs:139:22:139:22 | 3 | semmle.label | match | | patterns.cs:139:17:139:17 | 2 | patterns.cs:140:17:140:24 | Object y | semmle.label | no-match | | patterns.cs:139:17:139:22 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | @@ -187,20 +187,17 @@ | patterns.cs:142:17:142:24 | access to type MyStruct | patterns.cs:142:17:142:36 | [no-match] { ... } | semmle.label | no-match | | patterns.cs:142:17:142:24 | access to type MyStruct | patterns.cs:142:31:142:32 | 10 | semmle.label | match | | patterns.cs:142:17:142:36 | [match] { ... } | patterns.cs:142:41:142:41 | 6 | semmle.label | match | -| patterns.cs:142:17:142:36 | [match] { ... } | patterns.cs:145:9:148:9 | [exception: InvalidOperationException] catch (...) {...} | semmle.label | exception | -| patterns.cs:142:17:142:36 | [no-match] { ... } | patterns.cs:145:9:148:9 | [exception: InvalidOperationException] catch (...) {...} | semmle.label | exception | +| patterns.cs:142:17:142:36 | [match] { ... } | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | +| patterns.cs:142:17:142:36 | [no-match] { ... } | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | | patterns.cs:142:17:142:41 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | | patterns.cs:142:26:142:34 | [match] { ... } | patterns.cs:142:17:142:36 | [match] { ... } | semmle.label | match | | patterns.cs:142:26:142:34 | [no-match] { ... } | patterns.cs:142:17:142:36 | [no-match] { ... } | semmle.label | no-match | | patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | [match] { ... } | semmle.label | match | | patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | [no-match] { ... } | semmle.label | no-match | | patterns.cs:142:41:142:41 | 6 | patterns.cs:142:17:142:41 | ... => ... | semmle.label | successor | -| patterns.cs:145:9:148:9 | [exception: ArgumentException] catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception | -| patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception | -| patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | patterns.cs:145:41:145:42 | [exception: Exception] InvalidOperationException ex | semmle.label | match | -| patterns.cs:145:9:148:9 | [exception: InvalidOperationException] catch (...) {...} | patterns.cs:145:41:145:42 | [exception: InvalidOperationException] InvalidOperationException ex | semmle.label | match | -| patterns.cs:145:41:145:42 | [exception: Exception] InvalidOperationException ex | patterns.cs:146:9:148:9 | {...} | semmle.label | successor | -| patterns.cs:145:41:145:42 | [exception: InvalidOperationException] InvalidOperationException ex | patterns.cs:146:9:148:9 | {...} | semmle.label | successor | +| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception | +| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:145:41:145:42 | InvalidOperationException ex | semmle.label | match | +| patterns.cs:145:41:145:42 | InvalidOperationException ex | patterns.cs:146:9:148:9 | {...} | semmle.label | successor | | patterns.cs:146:9:148:9 | {...} | patterns.cs:147:13:147:51 | ...; | semmle.label | successor | | patterns.cs:147:13:147:50 | call to method WriteLine | patterns.cs:123:10:123:21 | exit Expressions2 (normal) | semmle.label | successor | | patterns.cs:147:13:147:51 | ...; | patterns.cs:147:31:147:49 | "Invalid operation" | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected index b14622b13df..3f117d6412e 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected @@ -277,7 +277,7 @@ | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | | Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | -| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | +| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | SSA def(e) | | Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | | Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | | Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected index a22b4693052..4bbe88295ed 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected @@ -272,7 +272,7 @@ | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:56:9:56:19 | ...; | | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... | | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x | -| Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | +| Test.cs:68:45:68:45 | SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | b1 | | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | b2 | | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | b3 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index 900048fde8c..a8bcd3e4daf 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -136,7 +136,7 @@ | Test.cs:46:29:46:32 | out | Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | ... = ... | | Test.cs:46:29:46:32 | out | Test.cs:54:13:54:20 | SSA def(out) | Test.cs:54:13:54:20 | ... = ... | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... | -| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | +| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... | | Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... | | Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected index bc53d950d80..46aba07eb37 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected @@ -310,7 +310,7 @@ | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:56:13:56:17 | access to field field | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:58:13:58:17 | access to field field | | Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:66:28:66:28 | access to parameter x | -| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:70:17:70:17 | access to local variable e | +| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | SSA def(e) | Test.cs:70:17:70:17 | access to local variable e | | Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:80:13:80:14 | access to parameter b1 | | Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:84:18:84:19 | access to parameter b2 | | Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:90:13:90:14 | access to parameter b3 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected index 4225577d7d4..d6dfac1475a 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected @@ -378,7 +378,7 @@ | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:46:10:46:10 | SSA entry def(this.field) | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | SSA def(this.field) | | Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | SSA param(x) | -| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | Test.cs:68:45:68:45 | [exception: DivideByZeroException] SSA def(e) | +| Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | SSA def(e) | Test.cs:68:45:68:45 | SSA def(e) | | Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | SSA param(b1) | | Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | SSA param(b2) | | Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | SSA param(b3) | diff --git a/csharp/ql/test/library-tests/exceptions/Exceptions1.expected b/csharp/ql/test/library-tests/exceptions/Exceptions1.expected index f3e813a7395..c97468d6189 100644 --- a/csharp/ql/test/library-tests/exceptions/Exceptions1.expected +++ b/csharp/ql/test/library-tests/exceptions/Exceptions1.expected @@ -9,14 +9,55 @@ | exceptions.cs:76:13:76:13 | ; | exceptions.cs:89:13:89:13 | ; | | exceptions.cs:76:13:76:13 | ; | exceptions.cs:93:13:93:13 | ; | | exceptions.cs:76:13:76:13 | ; | exceptions.cs:97:13:97:13 | ; | +| exceptions.cs:105:13:105:13 | ; | exceptions.cs:110:13:110:13 | ; | | exceptions.cs:105:13:105:13 | ; | exceptions.cs:114:13:114:13 | ; | +| exceptions.cs:105:13:105:13 | ; | exceptions.cs:118:13:118:13 | ; | +| exceptions.cs:105:13:105:13 | ; | exceptions.cs:122:13:122:13 | ; | +| exceptions.cs:105:13:105:13 | ; | exceptions.cs:126:13:126:13 | ; | +| exceptions.cs:134:13:134:13 | ; | exceptions.cs:139:13:139:13 | ; | | exceptions.cs:134:13:134:13 | ; | exceptions.cs:143:13:143:13 | ; | +| exceptions.cs:134:13:134:13 | ; | exceptions.cs:147:13:147:13 | ; | +| exceptions.cs:134:13:134:13 | ; | exceptions.cs:151:13:151:13 | ; | +| exceptions.cs:134:13:134:13 | ; | exceptions.cs:155:13:155:13 | ; | +| exceptions.cs:163:13:163:13 | ; | exceptions.cs:168:13:168:13 | ; | | exceptions.cs:163:13:163:13 | ; | exceptions.cs:172:13:172:13 | ; | +| exceptions.cs:163:13:163:13 | ; | exceptions.cs:176:13:176:13 | ; | +| exceptions.cs:163:13:163:13 | ; | exceptions.cs:180:13:180:13 | ; | +| exceptions.cs:163:13:163:13 | ; | exceptions.cs:184:13:184:13 | ; | +| exceptions.cs:222:13:222:13 | ; | exceptions.cs:227:13:227:13 | ; | +| exceptions.cs:222:13:222:13 | ; | exceptions.cs:231:13:231:13 | ; | | exceptions.cs:222:13:222:13 | ; | exceptions.cs:235:13:235:13 | ; | +| exceptions.cs:222:13:222:13 | ; | exceptions.cs:239:13:239:13 | ; | +| exceptions.cs:222:13:222:13 | ; | exceptions.cs:243:13:243:13 | ; | +| exceptions.cs:280:13:280:13 | ; | exceptions.cs:285:13:285:13 | ; | +| exceptions.cs:280:13:280:13 | ; | exceptions.cs:289:13:289:13 | ; | +| exceptions.cs:280:13:280:13 | ; | exceptions.cs:293:13:293:13 | ; | | exceptions.cs:280:13:280:13 | ; | exceptions.cs:297:13:297:13 | ; | +| exceptions.cs:280:13:280:13 | ; | exceptions.cs:301:13:301:13 | ; | | exceptions.cs:309:13:309:13 | ; | exceptions.cs:314:13:314:13 | ; | +| exceptions.cs:309:13:309:13 | ; | exceptions.cs:318:13:318:13 | ; | +| exceptions.cs:309:13:309:13 | ; | exceptions.cs:322:13:322:13 | ; | +| exceptions.cs:309:13:309:13 | ; | exceptions.cs:326:13:326:13 | ; | +| exceptions.cs:309:13:309:13 | ; | exceptions.cs:330:13:330:13 | ; | +| exceptions.cs:338:13:338:13 | ; | exceptions.cs:343:13:343:13 | ; | | exceptions.cs:338:13:338:13 | ; | exceptions.cs:347:13:347:13 | ; | +| exceptions.cs:338:13:338:13 | ; | exceptions.cs:351:13:351:13 | ; | +| exceptions.cs:338:13:338:13 | ; | exceptions.cs:355:13:355:13 | ; | +| exceptions.cs:338:13:338:13 | ; | exceptions.cs:359:13:359:13 | ; | +| exceptions.cs:368:13:368:13 | ; | exceptions.cs:373:13:373:13 | ; | +| exceptions.cs:368:13:368:13 | ; | exceptions.cs:377:13:377:13 | ; | +| exceptions.cs:368:13:368:13 | ; | exceptions.cs:381:13:381:13 | ; | | exceptions.cs:368:13:368:13 | ; | exceptions.cs:385:13:385:13 | ; | +| exceptions.cs:368:13:368:13 | ; | exceptions.cs:389:13:389:13 | ; | +| exceptions.cs:398:13:398:13 | ; | exceptions.cs:403:13:403:13 | ; | | exceptions.cs:398:13:398:13 | ; | exceptions.cs:407:13:407:13 | ; | +| exceptions.cs:398:13:398:13 | ; | exceptions.cs:411:13:411:13 | ; | +| exceptions.cs:398:13:398:13 | ; | exceptions.cs:415:13:415:13 | ; | +| exceptions.cs:398:13:398:13 | ; | exceptions.cs:419:13:419:13 | ; | | exceptions.cs:451:13:451:13 | ; | exceptions.cs:456:13:456:13 | ; | +| exceptions.cs:451:13:451:13 | ; | exceptions.cs:460:13:460:13 | ; | +| exceptions.cs:468:13:468:13 | ; | exceptions.cs:473:13:473:13 | ; | +| exceptions.cs:468:13:468:13 | ; | exceptions.cs:477:13:477:13 | ; | +| exceptions.cs:468:13:468:13 | ; | exceptions.cs:481:13:481:13 | ; | | exceptions.cs:468:13:468:13 | ; | exceptions.cs:485:13:485:13 | ; | +| exceptions.cs:468:13:468:13 | ; | exceptions.cs:489:13:489:13 | ; | From ff31f0e3df9f1eff7f98b5d53804f2f347c860fb Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 23 Oct 2025 20:17:28 +0200 Subject: [PATCH 285/965] Address review comments --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 2 +- rust/ql/test/library-tests/type-inference/main.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index a7e401d74ea..bcc18342c00 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -619,7 +619,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat ) ) or - // an array list expression (`[1, 2, 3]`) has the type of the element + // an array list expression with only one element (such as `[1]`) has type from that element n1 = any(ArrayListExpr ale | ale.getAnExpr() = n2 and diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 502fe0e5a87..fd34676284a 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2730,8 +2730,8 @@ mod if_expr { S(2) }; - // This code exhibits an explosion in type inference when type information is propagated - // from an `if` expression to its branches. + // This code would result in an explosion in type inference, if type information was + // propagated between branches. let x = S(1); if b { let x = x.m2(); // $ target=m2 From eb9df008b0394d62904526cc9ddf6dc0a154985d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 24 Oct 2025 08:45:12 +0200 Subject: [PATCH 286/965] JS: Remove two invalid QHelp links --- javascript/ql/src/Expressions/ExprHasNoEffect.qhelp | 6 ------ javascript/ql/src/LanguageFeatures/DeleteVar.qhelp | 7 ------- 2 files changed, 13 deletions(-) diff --git a/javascript/ql/src/Expressions/ExprHasNoEffect.qhelp b/javascript/ql/src/Expressions/ExprHasNoEffect.qhelp index da9db7c2ac0..d9907689f8f 100644 --- a/javascript/ql/src/Expressions/ExprHasNoEffect.qhelp +++ b/javascript/ql/src/Expressions/ExprHasNoEffect.qhelp @@ -51,10 +51,4 @@ assign it an initial value, which also serves to document its expected type: - - -
  • JSLint Error Explanations: Expected an assignment or function call.
  • - - - diff --git a/javascript/ql/src/LanguageFeatures/DeleteVar.qhelp b/javascript/ql/src/LanguageFeatures/DeleteVar.qhelp index 79d7ec97035..69ccb83f083 100644 --- a/javascript/ql/src/LanguageFeatures/DeleteVar.qhelp +++ b/javascript/ql/src/LanguageFeatures/DeleteVar.qhelp @@ -35,11 +35,4 @@ function compute to the outside world): - - - -
  • JSLint Error Explanations: Only properties should be deleted.
  • - - -
    From 7a9cb64e2e898ccf0d94562cb3e40cc0dbcfeb4c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 24 Oct 2025 09:06:57 +0200 Subject: [PATCH 287/965] Java: Treat `x.matches(regexp)` as a sanitizer for request forgery --- .../code/java/security/RequestForgery.qll | 21 ++++++++++++++++++ .../security/CWE-918/SanitizationTests.java | 22 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 5eb35c05cd4..dc15ad943bc 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -164,3 +164,24 @@ private class HostComparisonSanitizer extends RequestForgerySanitizer { this = DataFlow::BarrierGuard::getABarrierNode() } } + +/** + * A qualifier in a call to a `.matches()` method that is a sanitizer for URL redirects. + * + * Matches any method call where the method is named `matches`. + */ +private predicate isMatchesSanitizer(Guard guard, Expr e, boolean branch) { + guard = + any(MethodCall method | + method.getMethod().getName() = "matches" and + e = method.getQualifier() and + branch = true + ) +} + +/** + * A qualifier in a call to `.matches()` that is a sanitizer for URL redirects. + */ +private class MatchesSanitizer extends RequestForgerySanitizer { + MatchesSanitizer() { this = DataFlow::BarrierGuard::getABarrierNode() } +} diff --git a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java index 03a61cfcf97..f7e46b62946 100644 --- a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java +++ b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java @@ -119,8 +119,30 @@ public class SanitizationTests extends HttpServlet { String unsafeUri10 = String.format("%s://%s:%s%s", "http", "myserver.com", "80", request.getParameter("baduri10")); // $ Source HttpRequest unsafer10 = HttpRequest.newBuilder(new URI(unsafeUri10)).build(); // $ Alert client.send(unsafer10, null); // $ Alert + + // GOOD: sanitisation by regexp validation + String safeUri10 = "https://example.com/"; + String param10 = request.getParameter("uri10"); + if (param10.matches("[a-zA-Z0-9/_-]+")) { + safeUri10 = safeUri10 + param10; + } + HttpRequest r10 = HttpRequest.newBuilder(new URI(safeUri10)).build(); + client.send(r10, null); + + + String param11 = request.getParameter("uri11"); + validate(param11); + String safeUri11 = "https://example.com/" + param11; + HttpRequest r11 = HttpRequest.newBuilder(new URI(safeUri11)).build(); + client.send(r11, null); } catch (Exception e) { // TODO: handle exception } } + + private void validate(String s) { + if (!s.matches("[a-zA-Z0-9/_-]+")) { + throw new IllegalArgumentException("Invalid ID"); + } + } } From ce379161fc4d8718842d45ab990905a7d2f7b8b9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 24 Oct 2025 09:34:11 +0200 Subject: [PATCH 288/965] Add change note --- .../2025-10-24-request-forgery-matches-sanitizer.md | 4 ++++ misc/scripts/create-change-note.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md new file mode 100644 index 00000000000..a38c43dd730 --- /dev/null +++ b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/misc/scripts/create-change-note.py b/misc/scripts/create-change-note.py index 1a13a0cf114..1de42126c90 100755 --- a/misc/scripts/create-change-note.py +++ b/misc/scripts/create-change-note.py @@ -7,7 +7,7 @@ # - What language the change note is for # - Whether it's a query or library change (the string `src` or `lib`) # - The name of the change note (in kebab-case) -# - The category of the change. +# - The category of the change (see https://github.com/github/codeql/blob/main/docs/change-notes.md#change-categories). # The change note will be created in the `{language}/ql/{subdir}/change-notes` directory, where `subdir` is either `src` or `lib`. From 2a43a95049cdfb53d1495c81c47e64edde91fee2 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 7 Oct 2025 20:14:56 +0200 Subject: [PATCH 289/965] Rust: More type inference tests --- .../PathResolutionConsistency.expected | 2 + .../type-inference/blanket_impl.rs | 79 +++++++++++ .../type-inference/type-inference.expected | 128 ++++++++++++------ 3 files changed, 169 insertions(+), 40 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 2a12ae35276..8d1db81d147 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,4 +1,6 @@ multipleCallTargets +| blanket_impl.rs:257:18:257:27 | ... .m2() | +| blanket_impl.rs:259:18:259:24 | S1.m4() | | dereference.rs:69:15:69:24 | e1.deref() | | dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:183:17:183:23 | S.foo() | diff --git a/rust/ql/test/library-tests/type-inference/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index 12449efe7d2..5f3a23ead89 100644 --- a/rust/ql/test/library-tests/type-inference/blanket_impl.rs +++ b/rust/ql/test/library-tests/type-inference/blanket_impl.rs @@ -184,6 +184,85 @@ mod extension_trait_blanket_impl { } } +mod blanket_like_impl { + #[derive(Debug, Copy, Clone)] + struct S1; + + #[derive(Debug, Copy, Clone)] + struct S2; + + trait MyTrait1 { + // MyTrait1::m1 + fn m1(self); + } + + trait MyTrait2 { + // MyTrait2::m2 + fn m2(self); + } + + trait MyTrait3 { + // MyTrait3::m3 + fn m3(self); + } + + trait MyTrait4a { + // MyTrait4a::m4 + fn m4(self); + } + + trait MyTrait4b { + // MyTrait4b::m4 + fn m4(self); + } + + impl MyTrait1 for S1 { + // S1::m1 + fn m1(self) {} + } + + impl MyTrait3 for S1 { + // S1::m3 + fn m3(self) {} + } + + impl MyTrait2 for &T { + // MyTrait2Ref::m2 + fn m2(self) { + self.m1() // $ target=MyTrait1::m1 + } + } + + impl MyTrait2 for &&S1 { + // MyTrait2RefRefS1::m2 + fn m2(self) { + self.m1() // $ MISSING: target=S1::m1 + } + } + + impl MyTrait4a for T { + // MyTrait4aBlanket::m4 + fn m4(self) { + self.m3() // $ target=MyTrait3::m3 + } + } + + impl MyTrait4b for &T { + // MyTrait4bRef::m4 + fn m4(self) {} + } + + pub fn test_basic_blanket() { + let x1 = S1.m1(); // $ target=S1::m1 + let x2 = (&S1).m2(); // $ target=MyTrait2Ref::m2 $ SPURIOUS: target=MyTrait2RefRefS1::m2 + let x3 = (&&S1).m2(); // $ target=MyTrait2RefRefS1::m2 + let x4 = S1.m4(); // $ target=MyTrait4aBlanket::m4 $ SPURIOUS: target=MyTrait4bRef::m4 + let x5 = (&S1).m4(); // $ target=MyTrait4bRef::m4 + let x6 = S2.m4(); // $ target=MyTrait4bRef::m4 + let x7 = (&S2).m4(); // $ target=MyTrait4bRef::m4 + } +} + pub mod sql_exec { // a highly simplified model of `MySqlConnection.execute` in SQLx diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 170651621c8..76b4afc482f 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -207,46 +207,94 @@ inferType | blanket_impl.rs:183:22:183:34 | my_other_flag | | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:183:22:183:56 | my_other_flag.try_read_flag_twice() | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:183:22:183:56 | my_other_flag.try_read_flag_twice() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:193:21:193:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:193:21:193:25 | SelfParam | &T | blanket_impl.rs:192:5:195:5 | Self [trait Executor] | -| blanket_impl.rs:194:24:194:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:194:24:194:28 | SelfParam | &T | blanket_impl.rs:192:5:195:5 | Self [trait Executor] | -| blanket_impl.rs:194:31:194:35 | query | | blanket_impl.rs:194:21:194:21 | E | -| blanket_impl.rs:198:21:198:25 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:198:21:198:25 | SelfParam | &T | blanket_impl.rs:197:10:197:22 | T | -| blanket_impl.rs:199:22:199:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:199:22:199:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:199:22:199:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:199:22:199:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:202:24:202:28 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:202:24:202:28 | SelfParam | &T | blanket_impl.rs:197:10:197:22 | T | -| blanket_impl.rs:202:31:202:36 | _query | | blanket_impl.rs:202:21:202:21 | E | -| blanket_impl.rs:203:22:203:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | -| blanket_impl.rs:203:22:203:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:203:22:203:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:203:22:203:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:212:13:212:13 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:212:17:212:34 | MySqlConnection {...} | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:214:9:214:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:215:35:215:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:215:35:215:36 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:215:36:215:36 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:217:9:217:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:217:20:217:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:217:20:217:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:218:9:218:9 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:218:28:218:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:218:28:218:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:219:35:219:36 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:219:35:219:36 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:219:36:219:36 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:219:39:219:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:219:39:219:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:220:43:220:44 | &c | | file://:0:0:0:0 | & | -| blanket_impl.rs:220:43:220:44 | &c | &T | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:220:44:220:44 | c | | blanket_impl.rs:207:5:207:29 | MySqlConnection | -| blanket_impl.rs:220:47:220:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | -| blanket_impl.rs:220:47:220:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:196:15:196:18 | SelfParam | | blanket_impl.rs:194:5:197:5 | Self [trait MyTrait1] | +| blanket_impl.rs:201:15:201:18 | SelfParam | | blanket_impl.rs:199:5:202:5 | Self [trait MyTrait2] | +| blanket_impl.rs:206:15:206:18 | SelfParam | | blanket_impl.rs:204:5:207:5 | Self [trait MyTrait3] | +| blanket_impl.rs:211:15:211:18 | SelfParam | | blanket_impl.rs:209:5:212:5 | Self [trait MyTrait4a] | +| blanket_impl.rs:216:15:216:18 | SelfParam | | blanket_impl.rs:214:5:217:5 | Self [trait MyTrait4b] | +| blanket_impl.rs:221:15:221:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:226:15:226:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:231:15:231:18 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:231:15:231:18 | SelfParam | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:232:13:232:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:232:13:232:16 | self | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:238:15:238:18 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:239:13:239:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:239:13:239:16 | self | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:239:13:239:16 | self | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | +| blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | +| blanket_impl.rs:252:15:252:18 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:252:15:252:18 | SelfParam | &T | blanket_impl.rs:250:10:250:10 | T | +| blanket_impl.rs:256:18:256:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:18:257:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:257:18:257:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:19:257:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:257:19:257:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:20:257:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:18:258:23 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:258:18:258:23 | (...) | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:258:18:258:23 | (...) | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:19:258:22 | &... | | file://:0:0:0:0 | & | +| blanket_impl.rs:258:19:258:22 | &... | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:258:19:258:22 | &... | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:20:258:22 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:258:20:258:22 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:21:258:22 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:259:18:259:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:18:260:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:260:18:260:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:19:260:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:260:19:260:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:20:260:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:261:18:261:19 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:18:262:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:262:18:262:22 | (...) | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:19:262:21 | &S2 | | file://:0:0:0:0 | & | +| blanket_impl.rs:262:19:262:21 | &S2 | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:20:262:21 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:272:21:272:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:272:21:272:25 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:273:24:273:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:273:24:273:28 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:273:31:273:35 | query | | blanket_impl.rs:273:21:273:21 | E | +| blanket_impl.rs:277:21:277:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:277:21:277:25 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:278:22:278:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:278:22:278:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:281:24:281:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:282:22:282:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:282:22:282:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:291:17:291:34 | MySqlConnection {...} | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:293:9:293:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:294:35:294:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:294:35:294:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:297:9:297:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:298:35:298:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:298:35:298:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:299:43:299:44 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:299:43:299:44 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | file://:0:0:0:0 | (T_2) | | closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | From 0e885e929795b5c146f2b96eb6f9e49a26db343b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 9 Oct 2025 12:50:29 +0200 Subject: [PATCH 290/965] Rust: Compute incompatible blanket implementations --- .../codeql/rust/internal/TypeInference.qll | 179 ++++++++++++++---- .../typeinference/BlanketImplementation.qll | 13 ++ .../PathResolutionConsistency.expected | 2 - .../type-inference/blanket_impl.rs | 4 +- .../typeinference/internal/TypeInference.qll | 69 ++++++- 5 files changed, 218 insertions(+), 49 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index bcc18342c00..b8c543ee95b 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -901,14 +901,14 @@ private predicate assocFunctionInfo( /** * Holds if function `f` with the name `name` and the arity `arity` exists in - * blanket implementation `impl` of `trait`, and the type at position + * blanket (like) implementation `impl` of `trait`, and the type at position * `pos` is `t`. * * `blanketPath` points to the type `blanketTypeParam` inside `t`, which * is the type parameter used in the blanket implementation. */ pragma[nomagic] -private predicate functionInfoBlanket( +private predicate functionInfoBlanketLike( Function f, string name, int arity, ImplItemNode impl, Trait trait, FunctionPosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam ) { @@ -1027,19 +1027,20 @@ private module MethodResolution { /** * Holds if method `m` with the name `name` and the arity `arity` exists in - * blanket implementation `impl` of `trait`, and the type of the `self` + * blanket (like) implementation `impl` of `trait`, and the type of the `self` * parameter is `selfType`. * * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which * is the type parameter used in the blanket implementation. */ pragma[nomagic] - private predicate methodInfoBlanket( + private predicate methodInfoBlanketLike( Method m, string name, int arity, ImplItemNode impl, Trait trait, AssocFunctionType selfType, TypePath blanketPath, TypeParam blanketTypeParam ) { exists(FunctionPosition pos | - functionInfoBlanket(m, name, arity, impl, trait, pos, selfType, blanketPath, blanketTypeParam) and + functionInfoBlanketLike(m, name, arity, impl, trait, pos, selfType, blanketPath, + blanketTypeParam) and pos.isSelf() ) } @@ -1113,8 +1114,8 @@ private module MethodResolution { } /** - * Holds if method call `mc` may target a method in blanket implementation `i` - * with `self` parameter having type `selfType`. + * Holds if method call `mc` may target a method in blanket (like) implementation + * `impl` with `self` parameter having type `selfType`. * * `blanketPath` points to the type `blanketTypeParam` inside `selfType`, which * is the type parameter used in the blanket implementation. @@ -1125,13 +1126,13 @@ private module MethodResolution { */ bindingset[mc] pragma[inline_late] - private predicate methodCallBlanketCandidate( + private predicate methodCallBlanketLikeCandidate( MethodCall mc, Method m, ImplItemNode impl, AssocFunctionType self, TypePath blanketPath, TypeParam blanketTypeParam ) { exists(string name, int arity | mc.hasNameAndArity(name, arity) and - methodInfoBlanket(m, name, arity, impl, _, self, blanketPath, blanketTypeParam) + methodInfoBlanketLike(m, name, arity, impl, _, self, blanketPath, blanketTypeParam) | methodCallVisibleImplTraitCandidate(mc, impl) or @@ -1216,6 +1217,23 @@ private module MethodResolution { borrow), i, _) } + /** + * Holds if the method inside blanket-like implementation `impl` with matching name + * and arity can be ruled out as a target of this call, either because the candidate + * receiver type represented by `derefChain` and `borrow` is incompatible with the `self` + * parameter type, or because the blanket constraint is not satisfied. + */ + pragma[nomagic] + private predicate hasIncompatibleBlanketLikeTarget( + ImplItemNode impl, string derefChain, boolean borrow + ) { + ReceiverIsNotInstantiationOfBlanketLikeSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, + derefChain, borrow), impl, _) + or + ReceiverSatisfiesBlanketLikeConstraint::satisfiesNotBlanketConstraint(MkMethodCallCand(this, + derefChain, borrow), impl) + } + /** * Same as `getACandidateReceiverTypeAt`, but with traits substituted in for types * with trait bounds. @@ -1234,11 +1252,10 @@ private module MethodResolution { isComplexRootStripped(strippedTypePath, result) } - bindingset[strippedTypePath, strippedType, derefChain, borrow] - private predicate hasNoCompatibleTargetCheck( + bindingset[derefChain, borrow, strippedTypePath, strippedType] + private predicate hasNoCompatibleNonBlanketLikeTargetCheck( string derefChain, boolean borrow, TypePath strippedTypePath, Type strippedType ) { - // todo: also check that all blanket implementation candidates are incompatible forall(ImplOrTraitItemNode i | methodCallNonBlanketCandidate(this, _, i, _, strippedTypePath, strippedType) | @@ -1246,6 +1263,30 @@ private module MethodResolution { ) } + bindingset[derefChain, borrow, strippedTypePath, strippedType] + private predicate hasNoCompatibleTargetCheck( + string derefChain, boolean borrow, TypePath strippedTypePath, Type strippedType + ) { + this.hasNoCompatibleNonBlanketLikeTargetCheck(derefChain, borrow, strippedTypePath, + strippedType) and + forall(ImplItemNode i | methodCallBlanketLikeCandidate(this, _, i, _, _, _) | + this.hasIncompatibleBlanketLikeTarget(i, derefChain, borrow) + ) + } + + bindingset[derefChain, borrow, strippedTypePath, strippedType] + private predicate hasNoCompatibleNonBlanketTargetCheck( + string derefChain, boolean borrow, TypePath strippedTypePath, Type strippedType + ) { + this.hasNoCompatibleNonBlanketLikeTargetCheck(derefChain, borrow, strippedTypePath, + strippedType) and + forall(ImplItemNode i | + methodCallBlanketLikeCandidate(this, _, i, _, _, _) and not i.isBlanketImplementation() + | + this.hasIncompatibleBlanketLikeTarget(i, derefChain, borrow) + ) + } + /** * Holds if the candidate receiver type represented by `derefChain` does not * have a matching method target. @@ -1256,7 +1297,7 @@ private module MethodResolution { this.supportsAutoDerefAndBorrow() or // needed for the `hasNoCompatibleTarget` check in - // `SatisfiesBlanketConstraintInput::hasBlanketCandidate` + // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` derefChain = "" ) and exists(TypePath strippedTypePath, Type strippedType | @@ -1266,6 +1307,26 @@ private module MethodResolution { ) } + /** + * Holds if the candidate receiver type represented by `derefChain` does not have + * a matching non-blanket method target. + */ + pragma[nomagic] + predicate hasNoCompatibleNonBlanketTargetNoBorrow(string derefChain) { + ( + this.supportsAutoDerefAndBorrow() + or + // needed for the `hasNoCompatibleTarget` check in + // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` + derefChain = "" + ) and + exists(TypePath strippedTypePath, Type strippedType | + not derefChain.matches("%.ref") and // no need to try a borrow if the last thing we did was a deref + strippedType = this.getComplexStrippedType(derefChain, false, strippedTypePath) and + this.hasNoCompatibleNonBlanketTargetCheck(derefChain, false, strippedTypePath, strippedType) + ) + } + /** * Holds if the candidate receiver type represented by `derefChain`, followed * by a borrow, does not have a matching method target. @@ -1275,7 +1336,21 @@ private module MethodResolution { exists(TypePath strippedTypePath, Type strippedType | this.hasNoCompatibleTargetNoBorrow(derefChain) and strippedType = this.getComplexStrippedType(derefChain, true, strippedTypePath) and - this.hasNoCompatibleTargetCheck(derefChain, true, strippedTypePath, strippedType) + this.hasNoCompatibleNonBlanketLikeTargetCheck(derefChain, true, strippedTypePath, + strippedType) + ) + } + + /** + * Holds if the candidate receiver type represented by `derefChain`, followed + * by a borrow, does not have a matching non-blanket method target. + */ + pragma[nomagic] + predicate hasNoCompatibleNonBlanketTargetBorrow(string derefChain) { + exists(TypePath strippedTypePath, Type strippedType | + this.hasNoCompatibleTargetNoBorrow(derefChain) and + strippedType = this.getComplexStrippedType(derefChain, true, strippedTypePath) and + this.hasNoCompatibleNonBlanketTargetCheck(derefChain, true, strippedTypePath, strippedType) ) } @@ -1470,11 +1545,11 @@ private module MethodResolution { } pragma[nomagic] - predicate hasNoCompatibleTarget() { - mc_.hasNoCompatibleTargetBorrow(derefChain) and + predicate hasNoCompatibleNonBlanketTarget() { + mc_.hasNoCompatibleNonBlanketTargetBorrow(derefChain) and borrow = true or - mc_.hasNoCompatibleTargetNoBorrow(derefChain) and + mc_.hasNoCompatibleNonBlanketTargetNoBorrow(derefChain) and borrow = false } @@ -1555,20 +1630,20 @@ private module MethodResolution { Location getLocation() { result = mc_.getLocation() } } - private module ReceiverSatisfiesBlanketConstraintInput implements + private module ReceiverSatisfiesBlanketLikeConstraintInput implements BlanketImplementation::SatisfiesBlanketConstraintInputSig { pragma[nomagic] predicate hasBlanketCandidate( MethodCallCand mcc, ImplItemNode impl, TypePath blanketPath, TypeParam blanketTypeParam ) { - exists(MethodCall mc, string name, int arity | - mcc.hasSignature(mc, _, _, name, arity) and - methodCallBlanketCandidate(mc, _, impl, _, blanketPath, blanketTypeParam) and + exists(MethodCall mc | + mc = mcc.getMethodCall() and + methodCallBlanketLikeCandidate(mc, _, impl, _, blanketPath, blanketTypeParam) and // Only apply blanket implementations when no other implementations are possible; // this is to account for codebases that use the (unstable) specialization feature // (https://rust-lang.github.io/rfcs/1210-impl-specialization.html) - mcc.hasNoCompatibleTarget() + (mcc.hasNoCompatibleNonBlanketTarget() or not impl.isBlanketImplementation()) | mcc.hasNoBorrow() or @@ -1577,9 +1652,9 @@ private module MethodResolution { } } - private module ReceiverSatisfiesBlanketConstraint = + private module ReceiverSatisfiesBlanketLikeConstraint = BlanketImplementation::SatisfiesBlanketConstraint; + ReceiverSatisfiesBlanketLikeConstraintInput>; /** * A configuration for matching the type of a receiver against the type of @@ -1600,8 +1675,8 @@ private module MethodResolution { | methodCallNonBlanketCandidate(mc, m, i, selfType, strippedTypePath, strippedType) or - methodCallBlanketCandidate(mc, m, i, selfType, _, _) and - ReceiverSatisfiesBlanketConstraint::satisfiesBlanketConstraint(mcc, i) + methodCallBlanketLikeCandidate(mc, m, i, selfType, _, _) and + ReceiverSatisfiesBlanketLikeConstraint::satisfiesBlanketConstraint(mcc, i) ) } @@ -1626,6 +1701,30 @@ private module MethodResolution { private module ReceiverIsInstantiationOfSelfParam = ArgIsInstantiationOf; + /** + * A configuration for anti-matching the type of a receiver against the type of + * a `self` parameter belonging to a blanket (like) implementation. + */ + private module ReceiverIsNotInstantiationOfBlanketLikeSelfParamInput implements + IsInstantiationOfInputSig + { + pragma[nomagic] + predicate potentialInstantiationOf( + MethodCallCand mcc, TypeAbstraction abs, AssocFunctionType constraint + ) { + methodCallBlanketLikeCandidate(mcc.getMethodCall(), _, abs, constraint, _, _) and + if abs.(Impl).hasTrait() + then + // inherent methods take precedence over trait methods, so only allow + // trait methods when there are no matching inherent methods + mcc.hasNoInherentTarget() + else any() + } + } + + private module ReceiverIsNotInstantiationOfBlanketLikeSelfParam = + ArgIsInstantiationOf; + /** * A configuration for matching the type qualifier of a method call * against the type being implemented in an `impl` block. For example, @@ -1679,10 +1778,6 @@ private module MethodResolution { ReceiverIsInstantiationOfSelfParamInput::potentialInstantiationOf0(mcc, abs, constraint) and abs = any(Impl i | not i.hasTrait()) } - - predicate relevantConstraint(AssocFunctionType constraint) { - methodInfo(_, _, _, _, constraint, _, _) - } } private module ReceiverIsNotInstantiationOfInherentSelfParam = @@ -1948,18 +2043,18 @@ private module NonMethodResolution { } pragma[nomagic] - private predicate functionInfoBlanketRelevantPos( + private predicate functionInfoBlanketLikeRelevantPos( NonMethodFunction f, string name, int arity, ImplItemNode impl, Trait trait, FunctionPosition pos, AssocFunctionType t, TypePath blanketPath, TypeParam blanketTypeParam ) { - functionInfoBlanket(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and + functionInfoBlanketLike(f, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and ( if pos.isReturn() then // We only check that the context of the call provides relevant type information // when no argument can not exists(FunctionPosition pos0 | - functionInfoBlanket(f, name, arity, impl, trait, pos0, _, _, _) and + functionInfoBlanketLike(f, name, arity, impl, trait, pos0, _, _, _) and not pos0.isReturn() ) else any() @@ -1967,10 +2062,10 @@ private module NonMethodResolution { } pragma[nomagic] - private predicate blanketCallTraitCandidate(Element fc, Trait trait) { + private predicate blanketLikeCallTraitCandidate(Element fc, Trait trait) { exists(string name, int arity | fc.(NonMethodCall).hasNameAndArity(name, arity) and - functionInfoBlanketRelevantPos(_, name, arity, _, trait, _, _, _, _) + functionInfoBlanketLikeRelevantPos(_, name, arity, _, trait, _, _, _, _) | not fc.(Call).hasTrait() or @@ -1978,7 +2073,7 @@ private module NonMethodResolution { ) } - private module BlanketTraitIsVisible = TraitIsVisible; + private module BlanketTraitIsVisible = TraitIsVisible; /** A (potential) non-method call, `f(x)`. */ final class NonMethodCall extends CallExpr { @@ -2037,13 +2132,13 @@ private module NonMethodResolution { } pragma[nomagic] - predicate resolveCallTargetBlanketCandidate( + predicate resolveCallTargetBlanketLikeCandidate( ImplItemNode impl, FunctionPosition pos, TypePath blanketPath, TypeParam blanketTypeParam ) { exists(string name, int arity, Trait trait, AssocFunctionType t | this.hasNameAndArity(name, arity) and exists(this.getTypeAt(pos, blanketPath)) and - functionInfoBlanketRelevantPos(_, name, arity, impl, trait, pos, t, blanketPath, + functionInfoBlanketLikeRelevantPos(_, name, arity, impl, trait, pos, t, blanketPath, blanketTypeParam) and BlanketTraitIsVisible::traitIsVisible(this, trait) ) @@ -2080,7 +2175,7 @@ private module NonMethodResolution { private newtype TCallAndBlanketPos = MkCallAndBlanketPos(NonMethodCall fc, FunctionPosition pos) { - fc.resolveCallTargetBlanketCandidate(_, pos, _, _) + fc.resolveCallTargetBlanketLikeCandidate(_, pos, _, _) } /** A call tagged with a position. */ @@ -2106,7 +2201,7 @@ private module NonMethodResolution { ) { exists(NonMethodCall fc, FunctionPosition pos | fcp = MkCallAndBlanketPos(fc, pos) and - fc.resolveCallTargetBlanketCandidate(impl, pos, blanketPath, blanketTypeParam) + fc.resolveCallTargetBlanketLikeCandidate(impl, pos, blanketPath, blanketTypeParam) ) } } @@ -2129,12 +2224,12 @@ private module NonMethodResolution { exists(FunctionPosition pos | ArgSatisfiesBlanketConstraint::satisfiesBlanketConstraint(fcp, abs) and fcp = MkCallAndBlanketPos(_, pos) and - functionInfoBlanketRelevantPos(_, _, _, abs, _, pos, constraint, _, _) + functionInfoBlanketLikeRelevantPos(_, _, _, abs, _, pos, constraint, _, _) ) } predicate relevantConstraint(AssocFunctionType constraint) { - functionInfoBlanketRelevantPos(_, _, _, _, _, _, constraint, _, _) + functionInfoBlanketLikeRelevantPos(_, _, _, _, _, _, constraint, _, _) } } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 8f2483c3f68..2a615418bc2 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -132,4 +132,17 @@ module SatisfiesBlanketConstraint< SatisfiesBlanketConstraint::satisfiesConstraintType(ato, TTrait(traitBound), _, _) ) } + + /** + * Holds if the argument type `at` does _not_ satisfy the first non-trivial blanket + * constraint of `impl`. + */ + pragma[nomagic] + predicate satisfiesNotBlanketConstraint(ArgumentType at, ImplItemNode impl) { + exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | + ato = MkArgumentTypeAndBlanketOffset(at, _) and + SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and + SatisfiesBlanketConstraint::satisfiesNotConstraint(ato, TTrait(traitBound)) + ) + } } diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 8d1db81d147..2a12ae35276 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,4 @@ multipleCallTargets -| blanket_impl.rs:257:18:257:27 | ... .m2() | -| blanket_impl.rs:259:18:259:24 | S1.m4() | | dereference.rs:69:15:69:24 | e1.deref() | | dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:183:17:183:23 | S.foo() | diff --git a/rust/ql/test/library-tests/type-inference/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index 5f3a23ead89..49fcd8af0a6 100644 --- a/rust/ql/test/library-tests/type-inference/blanket_impl.rs +++ b/rust/ql/test/library-tests/type-inference/blanket_impl.rs @@ -254,9 +254,9 @@ mod blanket_like_impl { pub fn test_basic_blanket() { let x1 = S1.m1(); // $ target=S1::m1 - let x2 = (&S1).m2(); // $ target=MyTrait2Ref::m2 $ SPURIOUS: target=MyTrait2RefRefS1::m2 + let x2 = (&S1).m2(); // $ target=MyTrait2Ref::m2 let x3 = (&&S1).m2(); // $ target=MyTrait2RefRefS1::m2 - let x4 = S1.m4(); // $ target=MyTrait4aBlanket::m4 $ SPURIOUS: target=MyTrait4bRef::m4 + let x4 = S1.m4(); // $ target=MyTrait4aBlanket::m4 let x5 = (&S1).m4(); // $ target=MyTrait4bRef::m4 let x6 = S2.m4(); // $ target=MyTrait4bRef::m4 let x7 = (&S2).m4(); // $ target=MyTrait4bRef::m4 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index ff9ccf3c192..78b140f91e5 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -704,14 +704,23 @@ module Make1 Input1> { /** * Holds if `app` is _not_ a possible instantiation of `constraint`. + * + * This is a monotonic approximation of `not isInstantiationOf(app, abs, constraint)`; + * if, for example, `app` has two different types `t1` and `t2` at the same type path, + * and `t1` satisfies `constraint` while `t2` does not, then both `isInstantiationOf` + * and `isNotInstantiationOf` will hold. + * + * Dually, if `app` does not have a type at a required type path, then neither + * `isInstantiationOf` nor `isNotInstantiationOf` will hold. */ pragma[nomagic] predicate isNotInstantiationOf(App app, TypeAbstraction abs, Constraint constraint) { // `app` and `constraint` differ on a concrete type - exists(Type t, TypePath path | + exists(Type t, Type t2, TypePath path | t = resolveTypeAt(app, abs, constraint, path) and not t = abs.getATypeParameter() and - app.getTypeAt(path) != t + app.getTypeAt(path) = t2 and + t2 != t ) } } @@ -793,7 +802,7 @@ module Make1 Input1> { } /** - * Holds if its possible for a type with `conditionRoot` at the root to + * Holds if it's possible for a type with `conditionRoot` at the root to * satisfy a constraint with `constraintRoot` at the root through `abs`, * `condition`, and `constraint`. */ @@ -997,6 +1006,40 @@ module Make1 Input1> { ) } + /** + * Holds if `tt` does not satisfy `constraint`. + */ + pragma[nomagic] + private predicate hasNotConstraintMention(HasTypeTree tt, Type constraint) { + exists(Type type | hasTypeConstraint(tt, type, constraint) | + ( + not useUniversalConditions() + or + exists(countConstraintImplementations(type, constraint)) + or + forall(TypeAbstraction abs, TypeMention condition, TypeMention constraintMention | + conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and + resolveTypeMentionRoot(condition) = abs.getATypeParameter() + | + not constraint = resolveTypeMentionRoot(constraintMention) + ) + ) and + ( + countConstraintImplementations(type, constraint) = 0 + or + not rootTypesSatisfaction(type, constraint, _, _, _) + or + multipleConstraintImplementations(type, constraint) and + forex(TypeAbstraction abs, TypeMention condition | + rootTypesSatisfaction(type, constraint, abs, condition, _) + | + IsInstantiationOf::isNotInstantiationOf(tt, + abs, condition) + ) + ) + ) + } + pragma[nomagic] private predicate satisfiesConstraintTypeMention0( HasTypeTree tt, Type constraint, TypeAbstraction abs, TypeMention sub, TypePath path, Type t @@ -1038,6 +1081,26 @@ module Make1 Input1> { hasTypeConstraint(tt, constraint, constraint) and t = tt.getTypeAt(path) } + + /** + * Holds if the type tree at `tt` does _not_ satisfy the constraint `constraint`. + * + * This is a monotonic approximation of `not satisfiesConstraintType(tt, constraint, _, _)`; + * if, for example, `tt` has two different types `t1` and `t2`, and `t1` satisfies + * `constraint` while `t2` does not, then both `satisfiesConstraintType` and + * `satisfiesNotConstraint` will hold. + * + * Dually, if `tt` does not have a type, then neither `satisfiesConstraintType` nor + * `satisfiesNotConstraint` will hold. + */ + pragma[nomagic] + predicate satisfiesNotConstraint(HasTypeTree tt, Type constraint) { + hasNotConstraintMention(tt, constraint) and + exists(Type t | + hasTypeConstraint(tt, t, constraint) and + t != constraint + ) + } } /** Provides the input to `MatchingWithEnvironment`. */ From a4eab484ceb06d5da14c8a84f173561d6f097c65 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 24 Oct 2025 13:32:39 +0200 Subject: [PATCH 291/965] Address review comments --- .../security/CWE-918/SanitizationTests.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java index f7e46b62946..f32de324a1d 100644 --- a/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java +++ b/java/ql/test/query-tests/security/CWE-918/SanitizationTests.java @@ -121,19 +121,15 @@ public class SanitizationTests extends HttpServlet { client.send(unsafer10, null); // $ Alert // GOOD: sanitisation by regexp validation - String safeUri10 = "https://example.com/"; String param10 = request.getParameter("uri10"); - if (param10.matches("[a-zA-Z0-9/_-]+")) { - safeUri10 = safeUri10 + param10; + if (param10.matches("[a-zA-Z0-9_-]+")) { + HttpRequest r10 = HttpRequest.newBuilder(new URI(param10)).build(); + client.send(r10, null); } - HttpRequest r10 = HttpRequest.newBuilder(new URI(safeUri10)).build(); - client.send(r10, null); - String param11 = request.getParameter("uri11"); validate(param11); - String safeUri11 = "https://example.com/" + param11; - HttpRequest r11 = HttpRequest.newBuilder(new URI(safeUri11)).build(); + HttpRequest r11 = HttpRequest.newBuilder(new URI(param11)).build(); client.send(r11, null); } catch (Exception e) { // TODO: handle exception @@ -141,7 +137,7 @@ public class SanitizationTests extends HttpServlet { } private void validate(String s) { - if (!s.matches("[a-zA-Z0-9/_-]+")) { + if (!s.matches("[a-zA-Z0-9_-]+")) { throw new IllegalArgumentException("Invalid ID"); } } From ed492c7d5a1837e75083c93d55d7f32005ee6caf Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 24 Oct 2025 08:16:22 -0400 Subject: [PATCH 292/965] Crypto: Fixed bug in WeakSymmetricCipher.qll, forgot to not only filter if !=AES but the algorithm must still be a SymmetriCipher algorithm. --- .../quantum/Examples/WeakSymmetricCipher.qll | 3 +- .../WeakOrUnknownSymmetricCipher/Test.java | 4 +++ .../WeakSymmetricCipher.expected | 28 +++++++++---------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll index 457d2b6cd18..29493b24071 100644 --- a/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll +++ b/java/ql/src/experimental/quantum/Examples/WeakSymmetricCipher.qll @@ -8,7 +8,8 @@ predicate isUnapprovedSymmetricCipher(Crypto::KeyOperationAlgorithmNode alg, str exists(KeyOpAlg::AlgorithmType algType | algType = alg.getAlgorithmType() and msg = "Use of unapproved symmetric cipher algorithm or API: " + algType.toString() + "." and - algType != KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) + algType != KeyOpAlg::TSymmetricCipher(KeyOpAlg::AES()) and + algType instanceof KeyOpAlg::TSymmetricCipher ) // NOTE: an org could decide to disallow very specific algorithms as well, shown below // ( diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java index 5f48f75eeb0..fde9f9a24d1 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/Test.java @@ -3,6 +3,7 @@ import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.Key; import java.security.NoSuchAlgorithmException; +import javax.crypto.SecretKeyFactory; public class Test { public static void main(String[] args) throws Exception { @@ -73,5 +74,8 @@ public class Test { Cipher aesGcmCipher = Cipher.getInstance("AES/GCM/NoPadding"); aesGcmCipher.init(Cipher.ENCRYPT_MODE, aesKey); byte[] aesGcmEncrypted = aesGcmCipher.doFinal(data); + + // GOOD: not a symmetric cipher (Sanity check) + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); } } \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected index 13a316ee9b5..3ba5071e026 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownSymmetricCipher/WeakSymmetricCipher.expected @@ -1,14 +1,14 @@ -| Test.java:12:59:12:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:14:47:14:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:19:62:19:69 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:21:50:21:57 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | -| Test.java:26:64:26:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | -| Test.java:28:52:28:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | -| Test.java:33:59:33:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | -| Test.java:35:47:35:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | -| Test.java:40:59:40:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | -| Test.java:42:47:42:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | -| Test.java:47:60:47:65 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | -| Test.java:49:48:49:53 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | -| Test.java:54:64:54:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | -| Test.java:56:52:56:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | +| Test.java:13:59:13:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:15:47:15:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:20:62:20:69 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:22:50:22:57 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: DES. | +| Test.java:27:64:27:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | +| Test.java:29:52:29:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Blowfish. | +| Test.java:34:59:34:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | +| Test.java:36:47:36:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC2. | +| Test.java:41:59:41:63 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | +| Test.java:43:47:43:51 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: RC4. | +| Test.java:48:60:48:65 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | +| Test.java:50:48:50:53 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: IDEA. | +| Test.java:55:64:55:73 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | +| Test.java:57:52:57:61 | KeyOperationAlgorithm | Use of unapproved symmetric cipher algorithm or API: Skipjack. | From 2ef8bb0c53a4b70f552865134a868ff013800a13 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 14:35:28 +0200 Subject: [PATCH 293/965] Swift: Make extractor compile with Swift 6.2 --- swift/extractor/SwiftExtractor.cpp | 4 +--- swift/extractor/infra/SwiftTagTraits.h | 12 +++++----- swift/extractor/mangler/SwiftMangler.cpp | 7 +++--- swift/extractor/mangler/SwiftMangler.h | 2 +- .../extractor/translators/DeclTranslator.cpp | 24 ++++++++++--------- swift/extractor/translators/DeclTranslator.h | 1 - .../extractor/translators/ExprTranslator.cpp | 12 +++------- swift/extractor/translators/ExprTranslator.h | 1 - .../extractor/translators/StmtTranslator.cpp | 20 +++------------- swift/extractor/translators/StmtTranslator.h | 2 -- .../extractor/translators/TypeTranslator.cpp | 4 ++-- swift/extractor/translators/TypeTranslator.h | 3 ++- swift/schema.py | 2 +- swift/third_party/load.bzl | 4 ++++ 14 files changed, 40 insertions(+), 58 deletions(-) diff --git a/swift/extractor/SwiftExtractor.cpp b/swift/extractor/SwiftExtractor.cpp index f3202bc7a2f..f7e7a98f2e7 100644 --- a/swift/extractor/SwiftExtractor.cpp +++ b/swift/extractor/SwiftExtractor.cpp @@ -170,9 +170,7 @@ static std::unordered_set extractDeclarations( bodyEmissionStrategy); auto topLevelDecls = getTopLevelDecls(module, primaryFile, lazyDeclaration); for (auto decl : topLevelDecls) { - if (swift::AvailableAttr::isUnavailable(decl)) { - continue; - } + // TODO: Swift 6.2 is unavailable visitor.extract(decl); } for (auto& comment : comments) { diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index b204c06ff0b..22587ee1800 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -102,8 +102,9 @@ MAP(swift::Expr, ExprTag) MAP(swift::IdentityExpr, IdentityExprTag) MAP(swift::ParenExpr, ParenExprTag) MAP(swift::DotSelfExpr, DotSelfExprTag) - MAP(swift::BorrowExpr, BorrowExprTag) MAP(swift::AwaitExpr, AwaitExprTag) + MAP(swift::UnsafeExpr, void) // TODO: Swift 6.2 + MAP(swift::BorrowExpr, BorrowExprTag) MAP(swift::UnresolvedMemberChainResultExpr, UnresolvedMemberChainResultExprTag) MAP(swift::AnyTryExpr, AnyTryExprTag) MAP(swift::TryExpr, TryExprTag) @@ -195,7 +196,6 @@ MAP(swift::Expr, ExprTag) MAP(swift::ObjCSelectorExpr, ObjCSelectorExprTag) MAP(swift::KeyPathExpr, KeyPathExprTag) MAP(swift::KeyPathDotExpr, KeyPathDotExprTag) - MAP(swift::OneWayExpr, OneWayExprTag) MAP(swift::TapExpr, TapExprTag) MAP(swift::TypeJoinExpr, void) // does not appear in a visible AST, skipping MAP(swift::MacroExpansionExpr, void) // unexpanded macro in an expr context, skipping @@ -237,11 +237,11 @@ MAP(swift::Decl, DeclTag) MAP(swift::ExtensionDecl, ExtensionDeclTag) MAP(swift::TopLevelCodeDecl, TopLevelCodeDeclTag) MAP(swift::ImportDecl, ImportDeclTag) - MAP(swift::PoundDiagnosticDecl, PoundDiagnosticDeclTag) MAP(swift::PrecedenceGroupDecl, PrecedenceGroupDeclTag) MAP(swift::MissingMemberDecl, MissingMemberDeclTag) MAP(swift::PatternBindingDecl, PatternBindingDeclTag) MAP(swift::EnumCaseDecl, EnumCaseDeclTag) + MAP(swift::UsingDecl, void) // TODO: Swift 6.2 MAP(swift::OperatorDecl, OperatorDeclTag) MAP(swift::InfixOperatorDecl, InfixOperatorDeclTag) MAP(swift::PrefixOperatorDecl, PrefixOperatorDeclTag) @@ -315,7 +315,7 @@ MAP(swift::TypeBase, TypeTag) MAP(swift::PrimaryArchetypeType, PrimaryArchetypeTypeTag) MAP(swift::OpaqueTypeArchetypeType, OpaqueTypeArchetypeTypeTag) MAP(swift::LocalArchetypeType, LocalArchetypeTypeTag) - MAP(swift::OpenedArchetypeType, OpenedArchetypeTypeTag) + MAP(swift::ExistentialArchetypeType, ExistentialArchetypeTypeTag) MAP(swift::ElementArchetypeType, ElementArchetypeTypeTag) MAP(swift::PackArchetypeType, PackArchetypeTypeTag) MAP(swift::GenericTypeParamType, GenericTypeParamTypeTag) @@ -342,16 +342,16 @@ MAP(swift::TypeBase, TypeTag) MAP(swift::IntegerType, IntegerTypeTag) MAP(swift::SugarType, SugarTypeTag) MAP(swift::TypeAliasType, TypeAliasTypeTag) + MAP(swift::LocatableType, void) // TODO: Swift 6.2 MAP(swift::SyntaxSugarType, SyntaxSugarTypeTag) MAP(swift::UnarySyntaxSugarType, UnarySyntaxSugarTypeTag) MAP(swift::ArraySliceType, ArraySliceTypeTag) MAP(swift::OptionalType, OptionalTypeTag) MAP(swift::VariadicSequenceType, VariadicSequenceTypeTag) + MAP(swift::InlineArrayType, void) // TODO: Swift 6.2 MAP(swift::DictionaryType, DictionaryTypeTag) MAP(swift::AvailabilitySpec, AvailabilitySpecTag) - MAP(swift::PlatformVersionConstraintAvailabilitySpec, PlatformVersionAvailabilitySpecTag) - MAP(swift::OtherPlatformAvailabilitySpec, OtherAvailabilitySpecTag) MAP(swift::PoundAvailableInfo, AvailabilityInfoTag) MAP(swift::MacroRoleAttr, MacroRoleTag) diff --git a/swift/extractor/mangler/SwiftMangler.cpp b/swift/extractor/mangler/SwiftMangler.cpp index 7e1f1f0bfe8..d36a39eb165 100644 --- a/swift/extractor/mangler/SwiftMangler.cpp +++ b/swift/extractor/mangler/SwiftMangler.cpp @@ -215,8 +215,8 @@ SwiftMangledName SwiftMangler::visitAnyFunctionType(const swift::AnyFunctionType if (flags.isSending()) { ret << "_sending"; } - if (flags.isCompileTimeConst()) { - ret << "_compiletimeconst"; + if (flags.isCompileTimeLiteral()) { + ret << "_compiletimeliteral"; } if (flags.isNoDerivative()) { ret << "_noderivative"; @@ -361,7 +361,8 @@ SwiftMangledName SwiftMangler::visitOpaqueTypeArchetypeType( return visitArchetypeType(type) << fetch(type->getDecl()); } -SwiftMangledName SwiftMangler::visitOpenedArchetypeType(const swift::OpenedArchetypeType* type) { +SwiftMangledName SwiftMangler::visitExistentialArchetypeType( + const swift::ExistentialArchetypeType* type) { auto* env = type->getGenericEnvironment(); llvm::SmallVector uuid; env->getOpenedExistentialUUID().toString(uuid); diff --git a/swift/extractor/mangler/SwiftMangler.h b/swift/extractor/mangler/SwiftMangler.h index 2e3acbb9103..7ed7b7c761b 100644 --- a/swift/extractor/mangler/SwiftMangler.h +++ b/swift/extractor/mangler/SwiftMangler.h @@ -93,7 +93,7 @@ class SwiftMangler : private swift::TypeVisitor, SwiftMangledName visitTypeAliasType(const swift::TypeAliasType* type); SwiftMangledName visitArchetypeType(const swift::ArchetypeType* type); SwiftMangledName visitOpaqueTypeArchetypeType(const swift::OpaqueTypeArchetypeType* type); - SwiftMangledName visitOpenedArchetypeType(const swift::OpenedArchetypeType* type); + SwiftMangledName visitExistentialArchetypeType(const swift::ExistentialArchetypeType* type); SwiftMangledName visitProtocolCompositionType(const swift::ProtocolCompositionType* type); SwiftMangledName visitLValueType(const swift::LValueType* type); SwiftMangledName visitDynamicSelfType(const swift::DynamicSelfType* type); diff --git a/swift/extractor/translators/DeclTranslator.cpp b/swift/extractor/translators/DeclTranslator.cpp index ab50777babb..82657759b23 100644 --- a/swift/extractor/translators/DeclTranslator.cpp +++ b/swift/extractor/translators/DeclTranslator.cpp @@ -197,6 +197,18 @@ codeql::Accessor DeclTranslator::translateAccessorDecl(const swift::AccessorDecl case swift::AccessorKind::MutableAddress: entry.is_unsafe_mutable_address = true; break; + case swift::AccessorKind::DistributedGet: + // TODO: Swift 6.2 + break; + case swift::AccessorKind::Read2: + // TODO: Swift 6.2 + break; + case swift::AccessorKind::Modify2: + // TODO: Swift 6.2 + break; + case swift::AccessorKind::Init: + // TODO: Swift 6.2 + break; } fillFunction(decl, entry); return entry; @@ -280,9 +292,7 @@ void DeclTranslator::fillTypeDecl(const swift::TypeDecl& decl, codeql::TypeDecl& void DeclTranslator::fillIterableDeclContext(const swift::IterableDeclContext& decl, codeql::Decl& entry) { for (auto member : decl.getMembers()) { - if (swift::AvailableAttr::isUnavailable(member)) { - continue; - } + // TODO: Swift 6.2 unavailable members entry.members.emplace_back(dispatcher.fetchLabel(member)); } } @@ -342,14 +352,6 @@ codeql::OpaqueTypeDecl DeclTranslator::translateOpaqueTypeDecl(const swift::Opaq return entry; } -codeql::PoundDiagnosticDecl DeclTranslator::translatePoundDiagnosticDecl( - const swift::PoundDiagnosticDecl& decl) { - auto entry = createEntry(decl); - entry.kind = translateDiagnosticsKind(decl.getKind()); - entry.message = dispatcher.fetchLabel(decl.getMessage()); - return entry; -} - codeql::MissingMemberDecl DeclTranslator::translateMissingMemberDecl( const swift::MissingMemberDecl& decl) { auto entry = createEntry(decl); diff --git a/swift/extractor/translators/DeclTranslator.h b/swift/extractor/translators/DeclTranslator.h index 57a6fdb9a2f..35372fb5f67 100644 --- a/swift/extractor/translators/DeclTranslator.h +++ b/swift/extractor/translators/DeclTranslator.h @@ -45,7 +45,6 @@ class DeclTranslator : public AstTranslatorBase { codeql::ImportDecl translateImportDecl(const swift::ImportDecl& decl); codeql::ModuleDecl translateModuleDecl(const swift::ModuleDecl& decl); codeql::OpaqueTypeDecl translateOpaqueTypeDecl(const swift::OpaqueTypeDecl& decl); - codeql::PoundDiagnosticDecl translatePoundDiagnosticDecl(const swift::PoundDiagnosticDecl& decl); codeql::MissingMemberDecl translateMissingMemberDecl(const swift::MissingMemberDecl& decl); codeql::CapturedDecl translateCapturedValue(const swift::CapturedValue& capture); codeql::MacroDecl translateMacroDecl(const swift::MacroDecl& decl); diff --git a/swift/extractor/translators/ExprTranslator.cpp b/swift/extractor/translators/ExprTranslator.cpp index 15a6765e5fc..936bf64940f 100644 --- a/swift/extractor/translators/ExprTranslator.cpp +++ b/swift/extractor/translators/ExprTranslator.cpp @@ -185,12 +185,6 @@ codeql::ObjCSelectorExpr ExprTranslator::translateObjCSelectorExpr( return entry; } -codeql::OneWayExpr ExprTranslator::translateOneWayExpr(const swift::OneWayExpr& expr) { - auto entry = createExprEntry(expr); - entry.sub_expr = dispatcher.fetchLabel(expr.getSubExpr()); - return entry; -} - codeql::OpenExistentialExpr ExprTranslator::translateOpenExistentialExpr( const swift::OpenExistentialExpr& expr) { auto entry = createExprEntry(expr); @@ -498,7 +492,7 @@ TrapLabel ExprTranslator::emitKeyPathComponent( const swift::KeyPathExpr::Component& component) { auto entry = dispatcher.createUncachedEntry(component); entry.kind = static_cast(component.getKind()); - if (auto subscript_args = component.getSubscriptArgs()) { + if (auto subscript_args = component.getArgs()) { for (const auto& arg : *subscript_args) { entry.subscript_arguments.push_back(emitArgument(arg)); } @@ -691,8 +685,8 @@ codeql::CurrentContextIsolationExpr ExprTranslator::translateCurrentContextIsola codeql::TypeValueExpr ExprTranslator::translateTypeValueExpr(const swift::TypeValueExpr& expr) { auto entry = createExprEntry(expr); - if (expr.getParamTypeRepr() && expr.getParamType()) { - entry.type_repr = dispatcher.fetchLabel(expr.getParamTypeRepr(), expr.getParamType()); + if (expr.getRepr() && expr.getParamType()) { + entry.type_repr = dispatcher.fetchLabel(expr.getRepr(), expr.getParamType()); } return entry; } diff --git a/swift/extractor/translators/ExprTranslator.h b/swift/extractor/translators/ExprTranslator.h index 525f1fda6c1..ff32e07a450 100644 --- a/swift/extractor/translators/ExprTranslator.h +++ b/swift/extractor/translators/ExprTranslator.h @@ -37,7 +37,6 @@ class ExprTranslator : public AstTranslatorBase { codeql::MakeTemporarilyEscapableExpr translateMakeTemporarilyEscapableExpr( const swift::MakeTemporarilyEscapableExpr& expr); codeql::ObjCSelectorExpr translateObjCSelectorExpr(const swift::ObjCSelectorExpr& expr); - codeql::OneWayExpr translateOneWayExpr(const swift::OneWayExpr& expr); codeql::OpenExistentialExpr translateOpenExistentialExpr(const swift::OpenExistentialExpr& expr); codeql::OptionalEvaluationExpr translateOptionalEvaluationExpr( const swift::OptionalEvaluationExpr& expr); diff --git a/swift/extractor/translators/StmtTranslator.cpp b/swift/extractor/translators/StmtTranslator.cpp index 00c4b94fa85..ba0a395ad48 100644 --- a/swift/extractor/translators/StmtTranslator.cpp +++ b/swift/extractor/translators/StmtTranslator.cpp @@ -36,23 +36,9 @@ void StmtTranslator::translateAndEmit(const swift::PoundAvailableInfo& availabil } void StmtTranslator::translateAndEmit(const swift::AvailabilitySpec& spec) { - if (llvm::isa(spec)) { - translateAndEmit(llvm::cast(spec)); - } else if (llvm::isa(spec)) { - translateAndEmit(llvm::cast(spec)); - } -} - -void StmtTranslator::translateAndEmit( - const swift::PlatformVersionConstraintAvailabilitySpec& spec) { - auto entry = dispatcher.createEntry(spec); - entry.platform = swift::platformString(spec.getPlatform()).str(); - entry.version = spec.getVersion().getAsString(); - dispatcher.emit(entry); -} - -void StmtTranslator::translateAndEmit(const swift::OtherPlatformAvailabilitySpec& spec) { - dispatcher.emit(dispatcher.createEntry(spec)); + // auto entry = dispatcher.createEntry(spec); + // TODO: Swift 6.2 platform version/wildcard + // dispatcher.emit(entry); } codeql::BraceStmt StmtTranslator::translateBraceStmt(const swift::BraceStmt& stmt) { diff --git a/swift/extractor/translators/StmtTranslator.h b/swift/extractor/translators/StmtTranslator.h index d593411af37..f4c56546708 100644 --- a/swift/extractor/translators/StmtTranslator.h +++ b/swift/extractor/translators/StmtTranslator.h @@ -17,8 +17,6 @@ class StmtTranslator : public AstTranslatorBase { void translateAndEmit(const swift::CaseLabelItem& labelItem); void translateAndEmit(const swift::PoundAvailableInfo& availability); void translateAndEmit(const swift::AvailabilitySpec& spec); - void translateAndEmit(const swift::PlatformVersionConstraintAvailabilitySpec& spec); - void translateAndEmit(const swift::OtherPlatformAvailabilitySpec& spec); codeql::BraceStmt translateBraceStmt(const swift::BraceStmt& stmt); codeql::ReturnStmt translateReturnStmt(const swift::ReturnStmt& stmt); diff --git a/swift/extractor/translators/TypeTranslator.cpp b/swift/extractor/translators/TypeTranslator.cpp index cd471449827..9872a5863d0 100644 --- a/swift/extractor/translators/TypeTranslator.cpp +++ b/swift/extractor/translators/TypeTranslator.cpp @@ -225,8 +225,8 @@ codeql::BuiltinIntegerType TypeTranslator::translateBuiltinIntegerType( return entry; } -codeql::OpenedArchetypeType TypeTranslator::translateOpenedArchetypeType( - const swift::OpenedArchetypeType& type) { +codeql::ExistentialArchetypeType TypeTranslator::translateExistentialArchetypeType( + const swift::ExistentialArchetypeType& type) { auto entry = createTypeEntry(type); fillArchetypeType(type, entry); return entry; diff --git a/swift/extractor/translators/TypeTranslator.h b/swift/extractor/translators/TypeTranslator.h index 404f7214bea..b82c0a57a9d 100644 --- a/swift/extractor/translators/TypeTranslator.h +++ b/swift/extractor/translators/TypeTranslator.h @@ -68,7 +68,8 @@ class TypeTranslator : public TypeTranslatorBase { codeql::BuiltinIntegerLiteralType translateBuiltinIntegerLiteralType( const swift::BuiltinIntegerLiteralType& type); codeql::BuiltinIntegerType translateBuiltinIntegerType(const swift::BuiltinIntegerType& type); - codeql::OpenedArchetypeType translateOpenedArchetypeType(const swift::OpenedArchetypeType& type); + codeql::ExistentialArchetypeType translateExistentialArchetypeType( + const swift::ExistentialArchetypeType& type); codeql::ModuleType translateModuleType(const swift::ModuleType& type); codeql::OpaqueTypeArchetypeType translateOpaqueTypeArchetypeType( const swift::OpaqueTypeArchetypeType& type); diff --git a/swift/schema.py b/swift/schema.py index fc923d0c6a3..36b758f4ab4 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -1211,7 +1211,7 @@ class PrimaryArchetypeType(ArchetypeType): class LocalArchetypeType(ArchetypeType): pass -class OpenedArchetypeType(LocalArchetypeType): +class ExistentialArchetypeType(LocalArchetypeType): pass @qltest.test_with("PackType") diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index d19345a1880..15877e2e6e9 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,6 +5,10 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main + "swift-prebuilt-macOS-swift-6.2-RELEASE-112.tar.zst": "0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e", + "swift-prebuilt-Linux-swift-6.2-RELEASE-112.tar.zst": "845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff", + "resource-dir-macOS-swift-6.2-RELEASE-118.zip": "258a766c51fcce31839c4f6ff823ef9909350e00c62c78de4c75d58ede3b45da", + "resource-dir-Linux-swift-6.2-RELEASE-118.zip": "d58eaae17536e26586df9aa8333637859d3b79daf2c3694cd75aad94d8fcce8e", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 22dddb02165ca5e801792be85dd94333280b0ef7 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 14:42:27 +0200 Subject: [PATCH 294/965] Swift: Fix unavailability checks after 6.2 upgrade --- swift/extractor/SwiftExtractor.cpp | 4 +++- swift/extractor/translators/DeclTranslator.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/swift/extractor/SwiftExtractor.cpp b/swift/extractor/SwiftExtractor.cpp index f7e7a98f2e7..5d920373fbb 100644 --- a/swift/extractor/SwiftExtractor.cpp +++ b/swift/extractor/SwiftExtractor.cpp @@ -170,7 +170,9 @@ static std::unordered_set extractDeclarations( bodyEmissionStrategy); auto topLevelDecls = getTopLevelDecls(module, primaryFile, lazyDeclaration); for (auto decl : topLevelDecls) { - // TODO: Swift 6.2 is unavailable + if (decl->isUnavailable()) { + continue; + } visitor.extract(decl); } for (auto& comment : comments) { diff --git a/swift/extractor/translators/DeclTranslator.cpp b/swift/extractor/translators/DeclTranslator.cpp index 82657759b23..b5370b65db1 100644 --- a/swift/extractor/translators/DeclTranslator.cpp +++ b/swift/extractor/translators/DeclTranslator.cpp @@ -292,7 +292,9 @@ void DeclTranslator::fillTypeDecl(const swift::TypeDecl& decl, codeql::TypeDecl& void DeclTranslator::fillIterableDeclContext(const swift::IterableDeclContext& decl, codeql::Decl& entry) { for (auto member : decl.getMembers()) { - // TODO: Swift 6.2 unavailable members + if (member->isUnavailable()) { + continue; + } entry.members.emplace_back(dispatcher.fetchLabel(member)); } } From e79c0b0405872c67b27ce1d370f6f659a5577050 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 14:58:03 +0200 Subject: [PATCH 295/965] Swift: Update generated files --- swift/ql/.generated.list | 20 ++++---- swift/ql/.gitattributes | 10 ++-- swift/ql/lib/codeql/swift/elements.qll | 2 +- .../type/ExistentialArchetypeType.qll | 9 ++++ .../elements/type/OpenedArchetypeType.qll | 9 ---- ...> ExistentialArchetypeTypeConstructor.qll} | 6 +-- ...l.qll => ExistentialArchetypeTypeImpl.qll} | 8 ++-- .../codeql/swift/generated/ParentChild.qll | 6 +-- swift/ql/lib/codeql/swift/generated/Raw.qll | 4 +- swift/ql/lib/codeql/swift/generated/Synth.qll | 48 ++++++++++--------- .../swift/generated/SynthConstructors.qll | 2 +- .../type/ExistentialArchetypeType.qll | 25 ++++++++++ .../generated/type/OpenedArchetypeType.qll | 25 ---------- swift/ql/lib/swift.dbscheme | 6 +-- .../ExistentialArchetypeType.expected} | 4 +- .../ExistentialArchetypeType.ql} | 6 +-- .../existential_archetypes.swift} | 0 17 files changed, 96 insertions(+), 94 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/type/ExistentialArchetypeType.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/type/OpenedArchetypeType.qll rename swift/ql/lib/codeql/swift/elements/type/internal/{OpenedArchetypeTypeConstructor.qll => ExistentialArchetypeTypeConstructor.qll} (55%) rename swift/ql/lib/codeql/swift/elements/type/internal/{OpenedArchetypeTypeImpl.qll => ExistentialArchetypeTypeImpl.qll} (56%) create mode 100644 swift/ql/lib/codeql/swift/generated/type/ExistentialArchetypeType.qll delete mode 100644 swift/ql/lib/codeql/swift/generated/type/OpenedArchetypeType.qll rename swift/ql/test/extractor-tests/generated/type/{OpenedArchetypeType/OpenedArchetypeType.expected => ExistentialArchetypeType/ExistentialArchetypeType.expected} (56%) rename swift/ql/test/extractor-tests/generated/type/{OpenedArchetypeType/OpenedArchetypeType.ql => ExistentialArchetypeType/ExistentialArchetypeType.ql} (70%) rename swift/ql/test/extractor-tests/generated/type/{OpenedArchetypeType/opened_archetypes.swift => ExistentialArchetypeType/existential_archetypes.swift} (100%) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 261705596d2..8a1eb8dc3fb 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -555,6 +555,7 @@ lib/codeql/swift/elements/type/DynamicSelfType.qll c7eecfd41722f2fadc7de0783a8e7 lib/codeql/swift/elements/type/ElementArchetypeType.qll aa920ff09b80d5a4ff5fae22a975ba5debceef3f8953e536e06aba486edbebba 390a084f6b08c232d93ea1a590d1ca73585faa44ba4eb90b7c51e3ecf24cb4c7 lib/codeql/swift/elements/type/EnumType.qll f6d0174ba79d36d7c1b9d5dc0ede4400a40e7f427e1198721c1774c768ad3927 07f3390dbd2c4040d9fff8df2bde8c3611cb1e72a9d8e663331a96dded353a0a lib/codeql/swift/elements/type/ErrorType.qll 4867f96662daa7e667e92fa939889e4ba54d6e139088a640a5472a9c2169e193 b41bebd9ef623d318e39610b5c193648c9b1d36d68770abce995492f0f507415 +lib/codeql/swift/elements/type/ExistentialArchetypeType.qll 79e9d421457aee301bdfeb289240419e11dd5c9e3b5656f742b57cedc2de0ae0 0df3e401c0ec4d8e5ffae7bf879a8006a7e538dd76cf3cbe3a8650d5facde5ec lib/codeql/swift/elements/type/ExistentialMetatypeType.qll 08c5cfc4deaf241861a800a0293a90beba953a5176dc9ec16e73aeb11ffeb6e0 6ecafdd2412b0060ad6b040587ae1e6e66597f2e20e452de4e66f3444376e527 lib/codeql/swift/elements/type/ExistentialType.qll a334e666928a0c50c9ae2f4b7cc891466254954a755c10a19b2b82b8544902ab 57c7ebf1263a8ec399fbdaa1b7eee2e81f633cd020032e2f575ab9d7fe7f4b97 lib/codeql/swift/elements/type/FunctionType.qll 1a64eb24e8baa74ef2a8e4451f97442aa6f86dd8160eb1f7c4fcd62342ef9ec5 3549451d8443215a5342e3c1b1e3910e71c217a382e42c8916c9435525c49940 @@ -569,7 +570,6 @@ lib/codeql/swift/elements/type/ModuleType.qll b37f2a919271463a1317e2933d078d3c72 lib/codeql/swift/elements/type/NominalOrBoundGenericNominalType.qll d41c27edffe38a8dd0e5fc17e0f9b355e7ecfdc80765fa36f4f00545af47d5c9 83a2f9ff32fec675f011683f64969ce42e2cf2301f48611ecc056242b0116bef lib/codeql/swift/elements/type/NominalType.qll 5071658ee2aad7f9008248bc632873695150d95ed6260eecbc5c7c0394823bb9 e7664bde6757e207191348d031c27dda9b614628ff7b85e897d9942907f24ea2 lib/codeql/swift/elements/type/OpaqueTypeArchetypeType.qll ba746e5ee3e9723cd279b94b4608f10670a26a80d1db5e721eaaacd049160772 7fecafbdf1b1a60200dad6bbcef099470e1f2d34638bb6be6580f11f47e63fa4 -lib/codeql/swift/elements/type/OpenedArchetypeType.qll e902fc1f2ca854a5601dbe6d3e1c1178729f3a38f739335c85355cd3823f79bb 2b16f97a51adad24dcd2c27b1bbedde9e6794920afaec38cd6bf6a769daee15b lib/codeql/swift/elements/type/OptionalType.qll 55fff926b9bbe5b2c3ca0963750f71809425578f3fe08de86fe7f25f5729eb53 5aa94f386dd3b251e7ea739c26d3c3fca8f98409627be24765b124d97e70bfa8 lib/codeql/swift/elements/type/PackArchetypeType.qll 74a688b176c41a2caed819dccda6f450d9b171f5ab65480073866a217d3c6b39 a5dda9d35b8024665765bc773d071b396837ca49b827ed3d8200cb8a1bdff87c lib/codeql/swift/elements/type/PackElementType.qll 696ce6efe66eae0554e9919e13cb8e5dcb6c8c218bcb6b8abbcb4bc3f9cbcff8 9fb68c75c11573fcd0fd1048ed1eeec8d5974fafa66e69d8515181c72d5d1230 @@ -650,6 +650,8 @@ lib/codeql/swift/elements/type/internal/EnumTypeConstructor.qll 42082a8131a1d23a lib/codeql/swift/elements/type/internal/EnumTypeImpl.qll e1882e9bf4a5758d931066d21af82b10de241593fc632844db4220dfa1b40051 7903e471170bad4ac51971c614c3d5aec81453630f9d74792a6a782f76aa6491 lib/codeql/swift/elements/type/internal/ErrorTypeConstructor.qll b9c8b309ccc948b5956355b3d3398c1e52317b3c0dfbef0683b2dc62fe2e5054 e30fd9785602b50081917e82b03776bd98774fe45ff35734497cc0816f284cd4 lib/codeql/swift/elements/type/internal/ErrorTypeImpl.qll c04c074586ee94c721c8ee4c75f2213098a004a69df08d5585d9b3c2a52ae44c 1fcd9cdadbddfd1f89d9cb0962fd767ccf920b26975a9557c4d758933ebd27b3 +lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeConstructor.qll 135a26bed100d6aae55925fbff1769cb61069488d8b7a19462429d0ebba9d0bb bcff385e197dbff3855f492b6c1d25bd5db2eb6a7cb66ccce80309e9c8f403bb +lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeImpl.qll 7c78ae15e6428b8ed103d2d28f719eff388a21615bf68b777a83e22c62aa70aa ab76d66eda10dc4af67eab6ba0757f2f452b75354f9f5d788fe3671d8dc7724f lib/codeql/swift/elements/type/internal/ExistentialMetatypeTypeConstructor.qll 4055299dc6cf43e7a12f325913fd84b58761dcbfc14aaa27dd494eae1c282a99 c28e1ef4c8da26eaca30726bf3a81547bf3996cdfdf4b35cfc062d574e791d86 lib/codeql/swift/elements/type/internal/ExistentialMetatypeTypeImpl.qll 5aeaabe063cd7d9950a46fa4821f8d950c7583a4652f7e2741d81e19281aa873 c5ad2564888f6c10ac2478d72c5a436cec111824781b992adb9bddc723f13faf lib/codeql/swift/elements/type/internal/ExistentialTypeConstructor.qll 65aeccb1d9b403e4efee678c7af1e8bb1359f6ffed7a2e75945330a19276b25e b2da77005c4cc9dc8dad8864b222de781863f93996b0128346a0464a7cacdd8b @@ -673,8 +675,6 @@ lib/codeql/swift/elements/type/internal/ModuleTypeImpl.qll d13df337e9b7873c3db9c lib/codeql/swift/elements/type/internal/NominalOrBoundGenericNominalTypeImpl.qll 6da77c694a1d7e3e3ab889b9fa5bbc0c5940b7ce3e2ea1170f78566589b8275d 5ba1224ee1a942e5d5453effe5434d5b3d7dd5e68979e7c1ea3bab7ff3030484 lib/codeql/swift/elements/type/internal/OpaqueTypeArchetypeTypeConstructor.qll f33bf566ae7881e6b4c5327602bfd4275bd5344d0f9fb764ebe02b9673ab29ed 88ad64e4c114f34a952701fff67386d43982dacd2845eead408230447d3c0506 lib/codeql/swift/elements/type/internal/OpaqueTypeArchetypeTypeImpl.qll 402568a45ebe986f2086c765649414b218a262e103ed19d73de3754cc84327d8 b7ef0cbfdd74083403ace6e0d8e6b0502fba1267d04a16c7465fa8b5dbce4138 -lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeConstructor.qll 729a7f0545d9aa3449e92f60f1ff780188135c861cdd119a678569d27684f4c0 e6f51320aec9202d97695228b684cd35ed5f26cdc8576621ad74ca0a5f707fc6 -lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeImpl.qll c8d7f2493f1fd23f2e5c1707ff5209e7345e939b8e9a499f8df28dd4fca77bd2 616ac345e28f858cd1f3571662cda187e2368cf19af6456675dcdac9eb30b714 lib/codeql/swift/elements/type/internal/OptionalTypeConstructor.qll 648493a385d8a95b665fff776f52e23ecdc2a4baa355328fbb218a1510ff807f 4249552ad87c3e474e32c89e6bf6302d7de5d15980c550f97ec8576a5801770b lib/codeql/swift/elements/type/internal/OptionalTypeImpl.qll ac452e2c2883cd9aa7e460032a6f920e10c34a7e04a306b0c6b7a9c637f5b9d1 2513c2da982ed0a11687b5d3938de9e029742ecc1b6942b28e443aafe951f7e6 lib/codeql/swift/elements/type/internal/PackArchetypeTypeConstructor.qll 11ceeb4d0d337cde182804dc1b56f24ae624b74b55f62979c166172b53497a11 b46528bc0673a80a3d5ce29c358105b876967b73ae4a5596e6d7cf82e2292144 @@ -716,7 +716,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll 2c093130866888903f5a97cc41072ad94c795d296fca6492d6db481b1ca39d94 2c093130866888903f5a97cc41072ad94c795d296fca6492d6db481b1ca39d94 +lib/codeql/swift/elements.qll a3ab2329ee38bd9afe1e790bd5803ee694505c8f4ad2393b0bf60123c0a22073 a3ab2329ee38bd9afe1e790bd5803ee694505c8f4ad2393b0bf60123c0a22073 lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de lib/codeql/swift/generated/AvailabilitySpec.qll bc64d5c690c4d18800f0a48cc76a6a9ee4f832041343666da2d8df2aae04ed7e d03bf874293ac0ab09c025f75c0f392473d47bebe3223143adcc13882a366119 @@ -733,12 +733,12 @@ lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fd lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f -lib/codeql/swift/generated/ParentChild.qll 86a6c9ba4c79d72bf7a0786274f6fba49e6f37cf82de0451a6dad0d319224ebd f7b99ceb052a23d7c25d1615d1453d421b5ddddcec60b7d8d6f956d0d3fd7a2d +lib/codeql/swift/generated/ParentChild.qll 6b458321a55aaca9f8ca7c88b036a84c0313db75d4e5d721b9f18e0f10852256 be30f676ae498b8240042ed62a9781a1bf8cc999040d4bcbe9098af0fa5b571e lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 96d5f8778f25cd396b5cc56c38dce597c5a9a5c2b1e9ed8b9a4d2eca89e49323 d65072b5c508dad1dd813e19f7431087d8bfc0e5d85aa3d19beffbcbbec585ec -lib/codeql/swift/generated/Synth.qll 2b0f1a8911c1981ff50b78331bdd1f3f6023ad87a4ae3a92088901f493bb62c0 bc94ca1d86033e04b0999da84b61955ea1d8f4ac2379be527802512a42a16964 -lib/codeql/swift/generated/SynthConstructors.qll d30b83f9d8d310414bb1261af386b70502df48159d06579bb2610e18ef546c3d d30b83f9d8d310414bb1261af386b70502df48159d06579bb2610e18ef546c3d +lib/codeql/swift/generated/Raw.qll c1efe67c8c2004d2f5bc036868dff166da77984663171f1a5a5a29e7747e8d71 c3d50dd2389d8b1117a6a8ddd4f59781b59b0f618352ff8877a784b03b3376ad +lib/codeql/swift/generated/Synth.qll a5bc201d9ed53a64ad2e29a20192cc22456d3096c3af1b71cb023152545c2efe 2cc9f90e58f23a70f44e9187a0c7d4eac743944ca78042fccd258d7d1c89d432 +lib/codeql/swift/generated/SynthConstructors.qll 09b5e8736a1aa900ff465868275e090516f4fd9ec50c64e24d4106566f5a52cd 09b5e8736a1aa900ff465868275e090516f4fd9ec50c64e24d4106566f5a52cd lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 @@ -991,6 +991,7 @@ lib/codeql/swift/generated/type/DynamicSelfType.qll 999b59b887b6d550645832bb12ab lib/codeql/swift/generated/type/ElementArchetypeType.qll a3cc0d5c0feb8bc446c19f97d311da3a964af6a1d4275496bb506c6094cb6f55 5f8f73bd2b524c3ffd0eaedba90c348d8743add15d1004b4da3a6ffbf6ec3919 lib/codeql/swift/generated/type/EnumType.qll 258be7d8b1a17ba0c7253b12603c607a2f241b274b329c9124a8158128e77a47 11ac74f5da5dbb5d80efd86c0ffd127f673233fe0e25da68cf691fa2839baab6 lib/codeql/swift/generated/type/ErrorType.qll d6d3b9457d40d762f9441daf434062a0b2133dc9ef3aa221a655269c5522dcc5 c0c06692f37132098f5306f8c061d71140692a23a5e2a376350aae99854119eb +lib/codeql/swift/generated/type/ExistentialArchetypeType.qll 54bc16dcf5da69fb444493738ffda37e0e7d85102a6fc5de39329b12e6d5aa70 d56e7bdd2853911dc38387be408dbc1b4430eb4b9284496545e2052f325315e4 lib/codeql/swift/generated/type/ExistentialMetatypeType.qll 7d497d364ba6d9416bd2fdb561332d7038a36cc3d887a08638b389c74de59159 29dde0610dc53b2c14fd1d6ec4014ffb9979195e8e8487b32a982317609f3476 lib/codeql/swift/generated/type/ExistentialType.qll dc6e1afb4134e6bb5c63fb86ace78b695224a7bee1fb813799bfb36521e2dabd ef33867f67867021739ae021c6ed763e397f1f299145ff3076980c9dfcbe7a12 lib/codeql/swift/generated/type/FunctionType.qll 739192b77787905a66d9c9970dc077c3fb458afc038b3b8d8f12f965b2cad1ad 4952c360a7277972bdadbdb9d8dc475153d0c6de50f7b8e7de4c7259abf2541b @@ -1005,7 +1006,6 @@ lib/codeql/swift/generated/type/ModuleType.qll e4d7d1e1b0854b56e86b2e6d73b06c5e4 lib/codeql/swift/generated/type/NominalOrBoundGenericNominalType.qll 992bc2e47d0659b8c92a8907614e3d940310befd35767d8a19c70c2db034e36b bba0cf99f299271c893e482881f586e298a35ad48c59ba1a07d216fd5f731a99 lib/codeql/swift/generated/type/NominalType.qll a1d4865e7c4cc8362c16ed728429851660c84c5d30622c43502f046aa5adf507 337d377662ba3a5232124c80ee008a0d1c56635c1bd59a35cbe82fbb54c0a6cc lib/codeql/swift/generated/type/OpaqueTypeArchetypeType.qll 64b1f4b6c76b89e3b11eb3f811f8f1664685980db605721b28a2d503a1c9e972 6acfc69f609e1a0873a2a4d5ad5665c1012a0e89eb3459be35d3a48ef5a304f4 -lib/codeql/swift/generated/type/OpenedArchetypeType.qll 74dcbbf286185787526552c624c740de59cb55b774640492797b58532bb1fb1d 298f136e82ab66af6894db33881fd8a2ddefaa99b3cb522b0f342b6fd3f6ec48 lib/codeql/swift/generated/type/OptionalType.qll f708e44e676d72274bcb823028aec6122875443de309e2c4e0ca04a18cb4a741 3c2a350fbd32b3297161ca14e050c7d75d3d5606be8adab59a4f53d514794e9d lib/codeql/swift/generated/type/PackArchetypeType.qll cc561152cbf2eae8482a82997fe1725dccd172ee93d091df47d620f5c7cca2fe 278bf4d686f9b977882f98de695ac41575ba589d7838ad077dcb04ba1f95598e lib/codeql/swift/generated/type/PackElementType.qll 997dae178f56757eb1e0c2ea6496dcaf9886e37d7b6b92bd849807beac630b9f 924e898526b3bf758f339e384025dc87fb64e0b0ce8526d63cbe7170d7e6ec73 @@ -1188,6 +1188,7 @@ test/extractor-tests/generated/type/DependentMemberType/MISSING_SOURCE.txt 35fb3 test/extractor-tests/generated/type/DictionaryType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql 62da270e23b080f8ceb9ec5c130f84ccd779c43cf30c88db526ef061269c5ce9 390cb48fd7873210f5f5b4e8f275347348336a1e8161c72d3fafa5f7fee90f93 test/extractor-tests/generated/type/EnumType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d +test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.ql b2f71d888599d3df876dd65dfb4e2e0314f6f1354945b8d467fbe04430d155f8 7e35aec4e133bb76d1fbd87a715014b81b39021ee3f66f49e25292c1388628a0 test/extractor-tests/generated/type/ExistentialMetatypeType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql 7e09bbea166a4f269ecef1113229e98dfd7ea68ea5d4025af492fcce48698420 a4d00ff4100138020af51e8264d1d243156e52ab417bb150d33e9e1cc8cb0a69 test/extractor-tests/generated/type/FunctionType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d @@ -1199,7 +1200,6 @@ test/extractor-tests/generated/type/LValueType/MISSING_SOURCE.txt 35fb32ea539315 test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/ModuleType/ModuleType.ql 7d78142dc82b06e454b9875a47890d5c2364e51f6e496640d6c4d20327f535b7 cecd45f6a4b0f137cdd7e694259044016ab01da6a42e73c3a361b4d00b594133 test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql 86bc4823c19da17cbcebe3a4634eccff0a96cbebd174d8d4b1610e3fda3f8bdb 82179cb6e188a3a271428de4631c2a6fa4cec2e65a628fb56c2cbcff8a6a13d3 -test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql fdbbc1cffb209097480596d3be405188d045758da03a7980511d56874690b9c4 9ba8ffc028988a21cd751d25f0c363c3c37dfc0a13629379c8ca94b6b066bb7d test/extractor-tests/generated/type/OptionalType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql d4d695dcd0e723cdc9f196d828e22a3650ac751f0488e257f3bc2e2afbc343ec ff20bf849e18621b6193699bf58b3d6d127c29113dc996100bc18938fdf4658c test/extractor-tests/generated/type/PackType/PackArchetypeType.ql 56e7f72a2d6f03e394a5e7103e337aee06b8e1fa9198d8f6123c44c4e33d5b57 e7259313ade883242bffb8e812da64c77108b55acbf39d7b8cda47251ee5f5d3 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 068b4274967..b6f5efe1926 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -557,6 +557,7 @@ /lib/codeql/swift/elements/type/ElementArchetypeType.qll linguist-generated /lib/codeql/swift/elements/type/EnumType.qll linguist-generated /lib/codeql/swift/elements/type/ErrorType.qll linguist-generated +/lib/codeql/swift/elements/type/ExistentialArchetypeType.qll linguist-generated /lib/codeql/swift/elements/type/ExistentialMetatypeType.qll linguist-generated /lib/codeql/swift/elements/type/ExistentialType.qll linguist-generated /lib/codeql/swift/elements/type/FunctionType.qll linguist-generated @@ -571,7 +572,6 @@ /lib/codeql/swift/elements/type/NominalOrBoundGenericNominalType.qll linguist-generated /lib/codeql/swift/elements/type/NominalType.qll linguist-generated /lib/codeql/swift/elements/type/OpaqueTypeArchetypeType.qll linguist-generated -/lib/codeql/swift/elements/type/OpenedArchetypeType.qll linguist-generated /lib/codeql/swift/elements/type/OptionalType.qll linguist-generated /lib/codeql/swift/elements/type/PackArchetypeType.qll linguist-generated /lib/codeql/swift/elements/type/PackElementType.qll linguist-generated @@ -652,6 +652,8 @@ /lib/codeql/swift/elements/type/internal/EnumTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/ErrorTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/ErrorTypeImpl.qll linguist-generated +/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeConstructor.qll linguist-generated +/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/ExistentialMetatypeTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/ExistentialMetatypeTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/ExistentialTypeConstructor.qll linguist-generated @@ -675,8 +677,6 @@ /lib/codeql/swift/elements/type/internal/NominalOrBoundGenericNominalTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/OpaqueTypeArchetypeTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/OpaqueTypeArchetypeTypeImpl.qll linguist-generated -/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeConstructor.qll linguist-generated -/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/OptionalTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/OptionalTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/PackArchetypeTypeConstructor.qll linguist-generated @@ -993,6 +993,7 @@ /lib/codeql/swift/generated/type/ElementArchetypeType.qll linguist-generated /lib/codeql/swift/generated/type/EnumType.qll linguist-generated /lib/codeql/swift/generated/type/ErrorType.qll linguist-generated +/lib/codeql/swift/generated/type/ExistentialArchetypeType.qll linguist-generated /lib/codeql/swift/generated/type/ExistentialMetatypeType.qll linguist-generated /lib/codeql/swift/generated/type/ExistentialType.qll linguist-generated /lib/codeql/swift/generated/type/FunctionType.qll linguist-generated @@ -1007,7 +1008,6 @@ /lib/codeql/swift/generated/type/NominalOrBoundGenericNominalType.qll linguist-generated /lib/codeql/swift/generated/type/NominalType.qll linguist-generated /lib/codeql/swift/generated/type/OpaqueTypeArchetypeType.qll linguist-generated -/lib/codeql/swift/generated/type/OpenedArchetypeType.qll linguist-generated /lib/codeql/swift/generated/type/OptionalType.qll linguist-generated /lib/codeql/swift/generated/type/PackArchetypeType.qll linguist-generated /lib/codeql/swift/generated/type/PackElementType.qll linguist-generated @@ -1190,6 +1190,7 @@ /test/extractor-tests/generated/type/DictionaryType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/DynamicSelfType/DynamicSelfType.ql linguist-generated /test/extractor-tests/generated/type/EnumType/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.ql linguist-generated /test/extractor-tests/generated/type/ExistentialMetatypeType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/ExistentialType/ExistentialType.ql linguist-generated /test/extractor-tests/generated/type/FunctionType/MISSING_SOURCE.txt linguist-generated @@ -1201,7 +1202,6 @@ /test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/ModuleType/ModuleType.ql linguist-generated /test/extractor-tests/generated/type/OpaqueTypeArchetypeType/OpaqueTypeArchetypeType.ql linguist-generated -/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql linguist-generated /test/extractor-tests/generated/type/OptionalType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/PackType/ElementArchetypeType.ql linguist-generated /test/extractor-tests/generated/type/PackType/PackArchetypeType.ql linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index 2551a7ece9b..be89a1da81b 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -268,6 +268,7 @@ import codeql.swift.elements.type.DynamicSelfType import codeql.swift.elements.type.ElementArchetypeType import codeql.swift.elements.type.EnumType import codeql.swift.elements.type.ErrorType +import codeql.swift.elements.type.ExistentialArchetypeType import codeql.swift.elements.type.ExistentialMetatypeType import codeql.swift.elements.type.ExistentialType import codeql.swift.elements.type.FunctionType @@ -282,7 +283,6 @@ import codeql.swift.elements.type.ModuleType import codeql.swift.elements.type.NominalOrBoundGenericNominalType import codeql.swift.elements.type.NominalType import codeql.swift.elements.type.OpaqueTypeArchetypeType -import codeql.swift.elements.type.OpenedArchetypeType import codeql.swift.elements.type.OptionalType import codeql.swift.elements.type.PackArchetypeType import codeql.swift.elements.type.PackElementType diff --git a/swift/ql/lib/codeql/swift/elements/type/ExistentialArchetypeType.qll b/swift/ql/lib/codeql/swift/elements/type/ExistentialArchetypeType.qll new file mode 100644 index 00000000000..3d756468af4 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/ExistentialArchetypeType.qll @@ -0,0 +1,9 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the public class `ExistentialArchetypeType`. + */ + +private import internal.ExistentialArchetypeTypeImpl +import codeql.swift.elements.type.LocalArchetypeType + +final class ExistentialArchetypeType = Impl::ExistentialArchetypeType; diff --git a/swift/ql/lib/codeql/swift/elements/type/OpenedArchetypeType.qll b/swift/ql/lib/codeql/swift/elements/type/OpenedArchetypeType.qll deleted file mode 100644 index 93dae4a6f66..00000000000 --- a/swift/ql/lib/codeql/swift/elements/type/OpenedArchetypeType.qll +++ /dev/null @@ -1,9 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the public class `OpenedArchetypeType`. - */ - -private import internal.OpenedArchetypeTypeImpl -import codeql.swift.elements.type.LocalArchetypeType - -final class OpenedArchetypeType = Impl::OpenedArchetypeType; diff --git a/swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeConstructor.qll b/swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeConstructor.qll similarity index 55% rename from swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeConstructor.qll rename to swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeConstructor.qll index a87b9245e79..fef2376d3e5 100644 --- a/swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeConstructor.qll +++ b/swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeConstructor.qll @@ -1,14 +1,14 @@ // generated by codegen/codegen.py, remove this comment if you wish to edit this file /** * This module defines the hook used internally to tweak the characteristic predicate of - * `OpenedArchetypeType` synthesized instances. + * `ExistentialArchetypeType` synthesized instances. * INTERNAL: Do not use. */ private import codeql.swift.generated.Raw /** - * The characteristic predicate of `OpenedArchetypeType` synthesized instances. + * The characteristic predicate of `ExistentialArchetypeType` synthesized instances. * INTERNAL: Do not use. */ -predicate constructOpenedArchetypeType(Raw::OpenedArchetypeType id) { any() } +predicate constructExistentialArchetypeType(Raw::ExistentialArchetypeType id) { any() } diff --git a/swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeImpl.qll b/swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeImpl.qll similarity index 56% rename from swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeImpl.qll rename to swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeImpl.qll index cb45d637c73..22672658d17 100644 --- a/swift/ql/lib/codeql/swift/elements/type/internal/OpenedArchetypeTypeImpl.qll +++ b/swift/ql/lib/codeql/swift/elements/type/internal/ExistentialArchetypeTypeImpl.qll @@ -1,16 +1,16 @@ // generated by codegen/codegen.py, remove this comment if you wish to edit this file /** - * This module provides a hand-modifiable wrapper around the generated class `OpenedArchetypeType`. + * This module provides a hand-modifiable wrapper around the generated class `ExistentialArchetypeType`. * * INTERNAL: Do not use. */ -private import codeql.swift.generated.type.OpenedArchetypeType +private import codeql.swift.generated.type.ExistentialArchetypeType /** - * INTERNAL: This module contains the customizable definition of `OpenedArchetypeType` and should not + * INTERNAL: This module contains the customizable definition of `ExistentialArchetypeType` and should not * be referenced directly. */ module Impl { - class OpenedArchetypeType extends Generated::OpenedArchetypeType { } + class ExistentialArchetypeType extends Generated::ExistentialArchetypeType { } } diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 4185644abe1..2517b161440 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -3140,8 +3140,8 @@ private module Impl { none() } - private Element getImmediateChildOfOpenedArchetypeType( - OpenedArchetypeType e, int index, string partialPredicateCall + private Element getImmediateChildOfExistentialArchetypeType( + ExistentialArchetypeType e, int index, string partialPredicateCall ) { none() } @@ -3674,7 +3674,7 @@ private module Impl { or result = getImmediateChildOfEnumType(e, index, partialAccessor) or - result = getImmediateChildOfOpenedArchetypeType(e, index, partialAccessor) + result = getImmediateChildOfExistentialArchetypeType(e, index, partialAccessor) or result = getImmediateChildOfOptionalType(e, index, partialAccessor) or diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index a2779b148e9..25221284597 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -3859,8 +3859,8 @@ module Raw { /** * INTERNAL: Do not use. */ - class OpenedArchetypeType extends @opened_archetype_type, LocalArchetypeType { - override string toString() { result = "OpenedArchetypeType" } + class ExistentialArchetypeType extends @existential_archetype_type, LocalArchetypeType { + override string toString() { result = "ExistentialArchetypeType" } } /** diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 09f52604bb9..c3b56553121 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -976,6 +976,12 @@ module Synth { * INTERNAL: Do not use. */ TErrorType(Raw::ErrorType id) { constructErrorType(id) } or + /** + * INTERNAL: Do not use. + */ + TExistentialArchetypeType(Raw::ExistentialArchetypeType id) { + constructExistentialArchetypeType(id) + } or /** * INTERNAL: Do not use. */ @@ -1024,10 +1030,6 @@ module Synth { TOpaqueTypeArchetypeType(Raw::OpaqueTypeArchetypeType id) { constructOpaqueTypeArchetypeType(id) } or - /** - * INTERNAL: Do not use. - */ - TOpenedArchetypeType(Raw::OpenedArchetypeType id) { constructOpenedArchetypeType(id) } or /** * INTERNAL: Do not use. */ @@ -1400,7 +1402,7 @@ module Synth { /** * INTERNAL: Do not use. */ - class TLocalArchetypeType = TElementArchetypeType or TOpenedArchetypeType; + class TLocalArchetypeType = TElementArchetypeType or TExistentialArchetypeType; /** * INTERNAL: Do not use. @@ -2987,6 +2989,14 @@ module Synth { */ TErrorType convertErrorTypeFromRaw(Raw::Element e) { result = TErrorType(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TExistentialArchetypeType`, if possible. + */ + TExistentialArchetypeType convertExistentialArchetypeTypeFromRaw(Raw::Element e) { + result = TExistentialArchetypeType(e) + } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TExistentialMetatypeType`, if possible. @@ -3061,14 +3071,6 @@ module Synth { result = TOpaqueTypeArchetypeType(e) } - /** - * INTERNAL: Do not use. - * Converts a raw element to a synthesized `TOpenedArchetypeType`, if possible. - */ - TOpenedArchetypeType convertOpenedArchetypeTypeFromRaw(Raw::Element e) { - result = TOpenedArchetypeType(e) - } - /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TOptionalType`, if possible. @@ -4058,7 +4060,7 @@ module Synth { TLocalArchetypeType convertLocalArchetypeTypeFromRaw(Raw::Element e) { result = convertElementArchetypeTypeFromRaw(e) or - result = convertOpenedArchetypeTypeFromRaw(e) + result = convertExistentialArchetypeTypeFromRaw(e) } /** @@ -5729,6 +5731,14 @@ module Synth { */ Raw::Element convertErrorTypeToRaw(TErrorType e) { e = TErrorType(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TExistentialArchetypeType` to a raw DB element, if possible. + */ + Raw::Element convertExistentialArchetypeTypeToRaw(TExistentialArchetypeType e) { + e = TExistentialArchetypeType(result) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TExistentialMetatypeType` to a raw DB element, if possible. @@ -5803,14 +5813,6 @@ module Synth { e = TOpaqueTypeArchetypeType(result) } - /** - * INTERNAL: Do not use. - * Converts a synthesized `TOpenedArchetypeType` to a raw DB element, if possible. - */ - Raw::Element convertOpenedArchetypeTypeToRaw(TOpenedArchetypeType e) { - e = TOpenedArchetypeType(result) - } - /** * INTERNAL: Do not use. * Converts a synthesized `TOptionalType` to a raw DB element, if possible. @@ -6800,7 +6802,7 @@ module Synth { Raw::Element convertLocalArchetypeTypeToRaw(TLocalArchetypeType e) { result = convertElementArchetypeTypeToRaw(e) or - result = convertOpenedArchetypeTypeToRaw(e) + result = convertExistentialArchetypeTypeToRaw(e) } /** diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 8ffefd96281..38e066a2a83 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -224,6 +224,7 @@ import codeql.swift.elements.type.internal.DynamicSelfTypeConstructor import codeql.swift.elements.type.internal.ElementArchetypeTypeConstructor import codeql.swift.elements.type.internal.EnumTypeConstructor import codeql.swift.elements.type.internal.ErrorTypeConstructor +import codeql.swift.elements.type.internal.ExistentialArchetypeTypeConstructor import codeql.swift.elements.type.internal.ExistentialMetatypeTypeConstructor import codeql.swift.elements.type.internal.ExistentialTypeConstructor import codeql.swift.elements.type.internal.FunctionTypeConstructor @@ -235,7 +236,6 @@ import codeql.swift.elements.type.internal.LValueTypeConstructor import codeql.swift.elements.type.internal.MetatypeTypeConstructor import codeql.swift.elements.type.internal.ModuleTypeConstructor import codeql.swift.elements.type.internal.OpaqueTypeArchetypeTypeConstructor -import codeql.swift.elements.type.internal.OpenedArchetypeTypeConstructor import codeql.swift.elements.type.internal.OptionalTypeConstructor import codeql.swift.elements.type.internal.PackArchetypeTypeConstructor import codeql.swift.elements.type.internal.PackElementTypeConstructor diff --git a/swift/ql/lib/codeql/swift/generated/type/ExistentialArchetypeType.qll b/swift/ql/lib/codeql/swift/generated/type/ExistentialArchetypeType.qll new file mode 100644 index 00000000000..42ee963e072 --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/type/ExistentialArchetypeType.qll @@ -0,0 +1,25 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the generated definition of `ExistentialArchetypeType`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.type.internal.LocalArchetypeTypeImpl::Impl as LocalArchetypeTypeImpl + +/** + * INTERNAL: This module contains the fully generated definition of `ExistentialArchetypeType` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::ExistentialArchetypeType` class directly. + * Use the subclass `ExistentialArchetypeType`, where the following predicates are available. + */ + class ExistentialArchetypeType extends Synth::TExistentialArchetypeType, + LocalArchetypeTypeImpl::LocalArchetypeType + { + override string getAPrimaryQlClass() { result = "ExistentialArchetypeType" } + } +} diff --git a/swift/ql/lib/codeql/swift/generated/type/OpenedArchetypeType.qll b/swift/ql/lib/codeql/swift/generated/type/OpenedArchetypeType.qll deleted file mode 100644 index 6dfb117b960..00000000000 --- a/swift/ql/lib/codeql/swift/generated/type/OpenedArchetypeType.qll +++ /dev/null @@ -1,25 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the generated definition of `OpenedArchetypeType`. - * INTERNAL: Do not import directly. - */ - -private import codeql.swift.generated.Synth -private import codeql.swift.generated.Raw -import codeql.swift.elements.type.internal.LocalArchetypeTypeImpl::Impl as LocalArchetypeTypeImpl - -/** - * INTERNAL: This module contains the fully generated definition of `OpenedArchetypeType` and should not - * be referenced directly. - */ -module Generated { - /** - * INTERNAL: Do not reference the `Generated::OpenedArchetypeType` class directly. - * Use the subclass `OpenedArchetypeType`, where the following predicates are available. - */ - class OpenedArchetypeType extends Synth::TOpenedArchetypeType, - LocalArchetypeTypeImpl::LocalArchetypeType - { - override string getAPrimaryQlClass() { result = "OpenedArchetypeType" } - } -} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 987ab0bc091..2f4195b1c99 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -2533,7 +2533,7 @@ dictionary_types( //dir=type @local_archetype_type = @element_archetype_type -| @opened_archetype_type +| @existential_archetype_type ; @nominal_type = @@ -2596,8 +2596,8 @@ enum_types( //dir=type unique int id: @enum_type ); -opened_archetype_types( //dir=type - unique int id: @opened_archetype_type +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type ); optional_types( //dir=type diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.expected similarity index 56% rename from swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected rename to swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.expected index 3400ffa5fdc..70a7ed1a95a 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.expected @@ -3,5 +3,5 @@ instances getSuperclass | any C & P1 & P2 | C | getProtocol -| any C & P1 & P2 | 0 | opened_archetypes.swift:3:1:3:14 | P1 | -| any C & P1 & P2 | 1 | opened_archetypes.swift:9:1:9:14 | P2 | +| any C & P1 & P2 | 0 | existential_archetypes.swift:3:1:3:14 | P1 | +| any C & P1 & P2 | 1 | existential_archetypes.swift:9:1:9:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql b/swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.ql similarity index 70% rename from swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql rename to swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.ql index 2d5f19580a7..e1b32704dea 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.ql +++ b/swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/ExistentialArchetypeType.ql @@ -3,7 +3,7 @@ import codeql.swift.elements import TestUtils query predicate instances( - OpenedArchetypeType x, string getName__label, string getName, string getCanonicalType__label, + ExistentialArchetypeType x, string getName__label, string getName, string getCanonicalType__label, Type getCanonicalType, string getInterfaceType__label, Type getInterfaceType ) { toBeTested(x) and @@ -16,10 +16,10 @@ query predicate instances( getInterfaceType = x.getInterfaceType() } -query predicate getSuperclass(OpenedArchetypeType x, Type getSuperclass) { +query predicate getSuperclass(ExistentialArchetypeType x, Type getSuperclass) { toBeTested(x) and not x.isUnknown() and getSuperclass = x.getSuperclass() } -query predicate getProtocol(OpenedArchetypeType x, int index, ProtocolDecl getProtocol) { +query predicate getProtocol(ExistentialArchetypeType x, int index, ProtocolDecl getProtocol) { toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) } diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/opened_archetypes.swift b/swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/existential_archetypes.swift similarity index 100% rename from swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/opened_archetypes.swift rename to swift/ql/test/extractor-tests/generated/type/ExistentialArchetypeType/existential_archetypes.swift From 300b5b15e7bb72d2429e23fa569d4993d4b9fae5 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 16:20:18 +0200 Subject: [PATCH 296/965] Swift: Mangle function type lifetimes --- swift/extractor/mangler/SwiftMangler.cpp | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/swift/extractor/mangler/SwiftMangler.cpp b/swift/extractor/mangler/SwiftMangler.cpp index d36a39eb165..38f0683bd04 100644 --- a/swift/extractor/mangler/SwiftMangler.cpp +++ b/swift/extractor/mangler/SwiftMangler.cpp @@ -225,6 +225,40 @@ SwiftMangledName SwiftMangler::visitAnyFunctionType(const swift::AnyFunctionType ret << "..."; } } + + if (type->hasLifetimeDependencies()) { + for (const auto& lifetime : type->getLifetimeDependencies()) { + auto addressable = lifetime.getAddressableIndices(); + auto condAddressable = lifetime.getConditionallyAddressableIndices(); + ret << "_lifetime"; + + auto addIndexes = [&](swift::IndexSubset* bitvector) { + for (unsigned i = 0; i < bitvector->getCapacity(); ++i) { + if (bitvector->contains(i)) { + if (addressable && addressable->contains(i)) { + ret << "_address"; + } else if (condAddressable && condAddressable->contains(i)) { + ret << "_address_for_deps"; + } + ret << "_" << i; + } + } + }; + + if (lifetime.hasInheritLifetimeParamIndices()) { + ret << "_copy"; + addIndexes(lifetime.getInheritIndices()); + } + if (lifetime.hasScopeLifetimeParamIndices()) { + ret << "_borrow"; + addIndexes(lifetime.getScopeIndices()); + } + if (lifetime.isImmortal()) { + ret << "_immortal"; + } + } + } + ret << "->" << fetch(type->getResult()); if (type->isAsync()) { ret << "_async"; From 626bc55cafdf3302d645f0780b6b6fd3d73aba1b Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 17:18:46 +0200 Subject: [PATCH 297/965] Swift: Fix `AvailabilitySpec` trap generation --- .../extractor/translators/StmtTranslator.cpp | 12 ++- swift/ql/.generated.list | 23 ++--- swift/ql/.gitattributes | 11 +-- swift/ql/lib/codeql/swift/elements.qll | 2 - .../swift/elements/OtherAvailabilitySpec.qll | 12 --- .../PlatformVersionAvailabilitySpec.qll | 12 --- ...or.qll => AvailabilitySpecConstructor.qll} | 6 +- .../internal/AvailabilitySpecImpl.qll | 16 ++-- .../internal/OtherAvailabilitySpecImpl.qll | 11 --- ...formVersionAvailabilitySpecConstructor.qll | 16 ---- .../PlatformVersionAvailabilitySpecImpl.qll | 11 --- .../swift/generated/AvailabilitySpec.qll | 35 +++++++- .../swift/generated/OtherAvailabilitySpec.qll | 26 ------ .../codeql/swift/generated/ParentChild.qll | 24 ++---- .../PlatformVersionAvailabilitySpec.qll | 46 ---------- swift/ql/lib/codeql/swift/generated/Raw.qll | 47 ++++------- swift/ql/lib/codeql/swift/generated/Synth.qll | 83 ++++--------------- .../swift/generated/SynthConstructors.qll | 3 +- swift/ql/lib/swift.dbscheme | 34 ++++---- .../MISSING_SOURCE.txt | 0 .../MISSING_SOURCE.txt | 4 - swift/schema.py | 17 +--- 22 files changed, 130 insertions(+), 321 deletions(-) delete mode 100644 swift/ql/lib/codeql/swift/elements/OtherAvailabilitySpec.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll rename swift/ql/lib/codeql/swift/elements/internal/{OtherAvailabilitySpecConstructor.qll => AvailabilitySpecConstructor.qll} (57%) delete mode 100644 swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecImpl.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll delete mode 100644 swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecImpl.qll delete mode 100644 swift/ql/lib/codeql/swift/generated/OtherAvailabilitySpec.qll delete mode 100644 swift/ql/lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll rename swift/ql/test/extractor-tests/generated/{OtherAvailabilitySpec => AvailabilitySpec}/MISSING_SOURCE.txt (100%) delete mode 100644 swift/ql/test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt diff --git a/swift/extractor/translators/StmtTranslator.cpp b/swift/extractor/translators/StmtTranslator.cpp index ba0a395ad48..1562c28f19c 100644 --- a/swift/extractor/translators/StmtTranslator.cpp +++ b/swift/extractor/translators/StmtTranslator.cpp @@ -36,9 +36,15 @@ void StmtTranslator::translateAndEmit(const swift::PoundAvailableInfo& availabil } void StmtTranslator::translateAndEmit(const swift::AvailabilitySpec& spec) { - // auto entry = dispatcher.createEntry(spec); - // TODO: Swift 6.2 platform version/wildcard - // dispatcher.emit(entry); + auto entry = dispatcher.createEntry(spec); + entry.is_wildcard = spec.isWildcard(); + if (!spec.isWildcard()) { + auto domain = spec.getDomainOrIdentifier().getAsDomain(); + entry.platform = + swift::platformString(domain ? domain->getPlatformKind() : swift::PlatformKind::none).str(); + entry.version = spec.getRawVersion().getAsString(); + } + dispatcher.emit(entry); } codeql::BraceStmt StmtTranslator::translateBraceStmt(const swift::BraceStmt& stmt) { diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 8a1eb8dc3fb..64f6cbfdf4c 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -13,8 +13,6 @@ lib/codeql/swift/elements/KeyPathComponent.qll cc64d5a3cc6e6aa12faee7dfc95e6b5e1 lib/codeql/swift/elements/Locatable.qll a4e01abd3f337a60e3741705cede50be974ccffcb707a53f2b378972838c5977 89ba4dbebcfa291797407c27087d91a18b1ec1bc97140a14ec08dbb12cef7395 lib/codeql/swift/elements/Location.qll db213e8e27f8d732ad472c16929f2c503634c622d4d7b6b6977ed8b7b3c71c5b 9b951af94891848ecea9a690741e4a401c4b7ad676fd1fcee703fce4dcee2da4 lib/codeql/swift/elements/MacroRole.qll d55500010c47fab14fb2110db0afadef5f1f01115d05c803c9fd114508aca6da 858a7fe124cb8874e1fe62b3b36153740b0bb1cd1e9ed0005b36d01040960ed8 -lib/codeql/swift/elements/OtherAvailabilitySpec.qll b3e3aafc7b1f7b1ff2efa2bc9ff64370cc6847760a46ff5594f5144caee858ab 6630e73998c9359b6cefd265222cb72274b4484d6904b4a9f949bdb7a2781c0f -lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll 1a94d317cbb1731844986b57bbdc4095d90957c671d5248bc581bc1fdbb18f8b 3888eb1afc641d365c30fa514962f1a31b9b9c04383836e0062445e566003d34 lib/codeql/swift/elements/UnknownFile.qll 29e9f59c24c3ee6c2b01ea19390dd6730192628e5e4a541c3c00a42d16daad78 0ec046d67ebdc1722915b0d952468d1d3c3dfdf2c61e7fa215c7ba2fb91de04c lib/codeql/swift/elements/UnknownLocation.qll a03b4ff4f3505a35fbf25e150944e217030d187b8ab314bf0657bcab67ea40cc 2e3a1271f0df925c1deae232b26ba031322611f87f0326fe747475445c0e2485 lib/codeql/swift/elements/UnspecifiedElement.qll b1f597cae6585531aec383b669bda76b710dc2b61caf352347786584faf63ff4 858a15ed565231c15d09aa2e15acd4842a23ef8b0f76de792297fa8062e2f287 @@ -433,7 +431,7 @@ lib/codeql/swift/elements/expr/internal/UnsafeCastExprConstructor.qll f8771eb8f6 lib/codeql/swift/elements/expr/internal/UnsafeCastExprImpl.qll 787104ce97d702c0c3efa81a0f8416584f35c454d3b2ffe7bd0917861589612b 50496a0f3f3a9e3d5a2e6cbcd5eb16b634cf3fd5e0878bdf017678243dbfd8a0 lib/codeql/swift/elements/expr/internal/VarargExpansionExprConstructor.qll 917701083da11fce895c53d5f3e0a52b8e3142e9aacdf1d8536a4216ef377b16 b72ca103ced9cbb45f2ef9387387b8aaf3134e358ae5a03fa3ea242896954c81 lib/codeql/swift/elements/internal/AvailabilityInfoConstructor.qll 89c731f266122a3434b88dfd573d68c50b5c4fa5e13c2443c54f78e682190d1e 86beb6f684e08b6f557b7d67bc164113e9f5270c09bbe95fbd81c558d77f7f84 -lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll 9ac9285e731938747c574c3f270aaead323656162bd34a6630c1babfaaf25a6a 900b2e638639f427506b2d0eb2806b6ee119ea63ea4ce44758e0c36f2ce915ac +lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll cca46cd2908923a08b7f6a8bea0c0c11071523bcc421bfe141d0e0bafd8dfcb4 cbb1494346379083c0f275111eca78617591568894258a6b73efda34f3fba1ba lib/codeql/swift/elements/internal/CommentConstructor.qll 46891994c032546e7323f343947fd57cabb6c0e2ad1ca78f113c5b04436be203 e05b3ba3e00437488fdf53361211c6e5c3ae14ad1fdaf32093b02bdea2076abe lib/codeql/swift/elements/internal/DbFileConstructor.qll b5b680f255180d0d38223d6ac4422f192271573dca62f2967dde874147e710df a9c8d1c7abb5516c1d22ee9e020266297e52a2cd84f892792c1e6476517a6737 lib/codeql/swift/elements/internal/DbFileImpl.qll 09cbe97ad1d1d464bd9a374111e4e6bee0781595e5474809c415aade04431d90 b204d164e7a10ec4a77e0052710339a2c96ba6d42da547cc03cd23c1bd898261 @@ -443,8 +441,6 @@ lib/codeql/swift/elements/internal/DiagnosticsConstructor.qll 5212997161b95b0b10 lib/codeql/swift/elements/internal/ErrorElementImpl.qll 4ddf6e99bec6125bc5b24bc65d83cca131dd05748f71a85c8f0284659c3a0c49 db606ce97fdf2d2f38a66c7a4ef1437c8a3f6a57b71e426ec2bb0329d9e8a193 lib/codeql/swift/elements/internal/KeyPathComponentConstructor.qll ff71795157639520f56ce99ed49bf25486c125a0f27a3bb3ba2c8492feca13b2 5875187267cf91e37426d817a6c0c5e7ba9ddb0bd840ad358338ba003e0a877c lib/codeql/swift/elements/internal/MacroRoleConstructor.qll c45c189fd441e2c23b1c94dec9f357192f5e392051e0becf52c020d830e38e54 e281ef4ba76a6e4b2b689e00f542ef585cec7a540911ccd7fbb59f3232f08a3d -lib/codeql/swift/elements/internal/OtherAvailabilitySpecConstructor.qll c5638ae4f3993c7a111fb2a516667190642c1948f18806cf29f78b7067021d10 cc93ac54741ba952b32385db0fe072576a9c8697cd793bcb8faed98f0fb6bda0 -lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll 015280737e71fe1084da6056410fd73dc4473a3b3296d0e46c0ca64f07dd5b7f c735c42e45ebdc308a1f02ff15d65d4d1154071e55645a9ae763d6c021d7f601 lib/codeql/swift/elements/internal/UnspecifiedElementConstructor.qll f7e232dae7362d0c3f9f33f952d9106da3d273f16b124008919fba6e40a944b6 eb30f05ae09f2c7bc93d758c0870b63f16bf61d0d2446ed827250f89772596ab lib/codeql/swift/elements/pattern/AnyPattern.qll b0ccc58de123e61705dde8bb655da0cb02ea981fcb4d4f8d0e205dfbd2a9bedc 55751b143f758968cd006cc70f1d90a9917d9ac7eb319364b2485282944d2835 lib/codeql/swift/elements/pattern/BindingPattern.qll eca835e58ecbb2096615c88b659c8782158c636501e7f21d38e303fff7a6a2fe 8cc4040c7c5357904389b61e98837d9da2c4aad65039b99ade3f4f9fac4d4479 @@ -716,10 +712,10 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll a3ab2329ee38bd9afe1e790bd5803ee694505c8f4ad2393b0bf60123c0a22073 a3ab2329ee38bd9afe1e790bd5803ee694505c8f4ad2393b0bf60123c0a22073 +lib/codeql/swift/elements.qll 84a5704b697f4a3f224ec2b99d49f4d2a6ee2655aa86c72ea1cbc901b8231879 84a5704b697f4a3f224ec2b99d49f4d2a6ee2655aa86c72ea1cbc901b8231879 lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de -lib/codeql/swift/generated/AvailabilitySpec.qll bc64d5c690c4d18800f0a48cc76a6a9ee4f832041343666da2d8df2aae04ed7e d03bf874293ac0ab09c025f75c0f392473d47bebe3223143adcc13882a366119 +lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e lib/codeql/swift/generated/Callable.qll 6213871affd0e1fb176a36b28ae5d0c1af9f9927428d07c23660cde9e3b0bf64 02eaaef87c919f9ceb92e59fa895f5133904bce6d23ea9381e1210377573ddf4 lib/codeql/swift/generated/Comment.qll 64625f47ebddb1ec7e1c81790dd8120087a76958cba5cebe31f8d1f221740cb9 4d87eed099c645b43272ae806106a8d787e84e5e55ea4f1bbc7b79bf0b127d15 lib/codeql/swift/generated/DbFile.qll cc0d2b9efbee36080bde2e26e424a40efb763eaee55874fb6c4a5db36938f3df 33e215d838cfa36e3dd0e62879e896d988430d1470a87ce1bb45aad70886212b @@ -732,13 +728,11 @@ lib/codeql/swift/generated/KeyPathComponent.qll 5276acdc9a4ff0ec0cc8af615c040433 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f -lib/codeql/swift/generated/ParentChild.qll 6b458321a55aaca9f8ca7c88b036a84c0313db75d4e5d721b9f18e0f10852256 be30f676ae498b8240042ed62a9781a1bf8cc999040d4bcbe9098af0fa5b571e -lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec +lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll c1efe67c8c2004d2f5bc036868dff166da77984663171f1a5a5a29e7747e8d71 c3d50dd2389d8b1117a6a8ddd4f59781b59b0f618352ff8877a784b03b3376ad -lib/codeql/swift/generated/Synth.qll a5bc201d9ed53a64ad2e29a20192cc22456d3096c3af1b71cb023152545c2efe 2cc9f90e58f23a70f44e9187a0c7d4eac743944ca78042fccd258d7d1c89d432 -lib/codeql/swift/generated/SynthConstructors.qll 09b5e8736a1aa900ff465868275e090516f4fd9ec50c64e24d4106566f5a52cd 09b5e8736a1aa900ff465868275e090516f4fd9ec50c64e24d4106566f5a52cd +lib/codeql/swift/generated/Raw.qll 5d41235611a54943ded38965a2e474a6bdc7b2479823b880ed4d6c5431744117 6548a2ac345502c89a210d91f398d8d3b9625af9d24ebc37e43b55ba6e4efdac +lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 +lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 @@ -1033,12 +1027,11 @@ lib/codeql/swift/generated/type/UnresolvedType.qll 3b99e19ca7177619fb79e6e8511df lib/codeql/swift/generated/type/VariadicSequenceType.qll 7ece2c953e24d1c51715610f2813bd97f6d9fc6e58e5df0aacadad31e1fd1d8f be0005d973fd7c4c937fc340711fafe7ceba592ac407b88731bc35a1c2800aeb lib/codeql/swift/generated/type/WeakStorageType.qll d46b67f2b7bcc8aa7599e38506e91c219f894df4668ff1f0b5b66c1858040f5b c8e34ec9df085d938e36492d172fbf84ca56fc9d805713b8ada92e1b4c7bef54 test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql 0bb0cfe3f8c38af3b870f8c404c16a5715e80d5ea8fd7939cc13032d7b824809 142ae1e76138b287aa66e091683aae545d139ef2971624e2dfdd3ea454bc2d05 +test/extractor-tests/generated/AvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/Comment/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/Diagnostics/Diagnostics.ql c1f8be2c283e13c1a4dadaa008e42f660ea09d9ee1de22b0e8493ef76384546e d84efa40eaecbce6b928a5b235e10bf1e4409a9d0778c365ec19d2fade7ab3ab test/extractor-tests/generated/File/File.ql a1385ef2080e04e8757f61b8e1d0129df9f955edf03fbb3b83cc9cb5498b4e95 0364d8c7f108d01b2641f996efedab7084956307e875e6bc078ea677d04267e0 test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql 3fa617f8ed1b308d0c56f429ee8abe6d33ef60bf57d87f6dc89fdc8fe969a102 c2fa3153077dbe9e0fc608524dc03c82ff4ed460364d341ee6a817b0d75291c3 -test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/Accessor/Accessor.ql 7e50dd3c4119162bbfa3e2461300d876c60321d4b6473ddd35e0cb992108570e eb81ed8db92bff46974079e0f1100cf94bd639191a36db45ee9e65467abb6e38 test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql 55a78a6b96a17532178a39bd39aa4df23295f98019bb00de041ba15dfd4f84d9 51dbcd86203d5d031d748f77943a81c2c50de4ff559af20a4a1a682a19978d4f test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql fd62be6c38d39f371c20e8c2f233e37a9da5aa234588920634f5db67e8beb3bd d51d35d4fd6a21cd596e064e0221d0c86e36312412a9bd4e64f431c123f3019a diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index b6f5efe1926..c9f34f4cbd1 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -15,8 +15,6 @@ /lib/codeql/swift/elements/Locatable.qll linguist-generated /lib/codeql/swift/elements/Location.qll linguist-generated /lib/codeql/swift/elements/MacroRole.qll linguist-generated -/lib/codeql/swift/elements/OtherAvailabilitySpec.qll linguist-generated -/lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll linguist-generated /lib/codeql/swift/elements/UnknownFile.qll linguist-generated /lib/codeql/swift/elements/UnknownLocation.qll linguist-generated /lib/codeql/swift/elements/UnspecifiedElement.qll linguist-generated @@ -435,7 +433,7 @@ /lib/codeql/swift/elements/expr/internal/UnsafeCastExprImpl.qll linguist-generated /lib/codeql/swift/elements/expr/internal/VarargExpansionExprConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/AvailabilityInfoConstructor.qll linguist-generated -/lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll linguist-generated +/lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/CommentConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/DbFileConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/DbFileImpl.qll linguist-generated @@ -445,8 +443,6 @@ /lib/codeql/swift/elements/internal/ErrorElementImpl.qll linguist-generated /lib/codeql/swift/elements/internal/KeyPathComponentConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/MacroRoleConstructor.qll linguist-generated -/lib/codeql/swift/elements/internal/OtherAvailabilitySpecConstructor.qll linguist-generated -/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/UnspecifiedElementConstructor.qll linguist-generated /lib/codeql/swift/elements/pattern/AnyPattern.qll linguist-generated /lib/codeql/swift/elements/pattern/BindingPattern.qll linguist-generated @@ -734,9 +730,7 @@ /lib/codeql/swift/generated/Locatable.qll linguist-generated /lib/codeql/swift/generated/Location.qll linguist-generated /lib/codeql/swift/generated/MacroRole.qll linguist-generated -/lib/codeql/swift/generated/OtherAvailabilitySpec.qll linguist-generated /lib/codeql/swift/generated/ParentChild.qll linguist-generated -/lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll linguist-generated /lib/codeql/swift/generated/PureSynthConstructors.qll linguist-generated /lib/codeql/swift/generated/Raw.qll linguist-generated /lib/codeql/swift/generated/Synth.qll linguist-generated @@ -1035,12 +1029,11 @@ /lib/codeql/swift/generated/type/VariadicSequenceType.qll linguist-generated /lib/codeql/swift/generated/type/WeakStorageType.qll linguist-generated /test/extractor-tests/generated/AvailabilityInfo/AvailabilityInfo.ql linguist-generated +/test/extractor-tests/generated/AvailabilitySpec/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Comment/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/Diagnostics/Diagnostics.ql linguist-generated /test/extractor-tests/generated/File/File.ql linguist-generated /test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql linguist-generated -/test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/Accessor/Accessor.ql linguist-generated /test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql linguist-generated /test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index be89a1da81b..bbe002a6761 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -18,8 +18,6 @@ import codeql.swift.elements.KeyPathComponent import codeql.swift.elements.Locatable import codeql.swift.elements.Location import codeql.swift.elements.MacroRole -import codeql.swift.elements.OtherAvailabilitySpec -import codeql.swift.elements.PlatformVersionAvailabilitySpec import codeql.swift.elements.UnknownFile import codeql.swift.elements.UnknownLocation import codeql.swift.elements.UnspecifiedElement diff --git a/swift/ql/lib/codeql/swift/elements/OtherAvailabilitySpec.qll b/swift/ql/lib/codeql/swift/elements/OtherAvailabilitySpec.qll deleted file mode 100644 index 78d0f8e5da5..00000000000 --- a/swift/ql/lib/codeql/swift/elements/OtherAvailabilitySpec.qll +++ /dev/null @@ -1,12 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the public class `OtherAvailabilitySpec`. - */ - -private import internal.OtherAvailabilitySpecImpl -import codeql.swift.elements.AvailabilitySpec - -/** - * A wildcard availability spec `*` - */ -final class OtherAvailabilitySpec = Impl::OtherAvailabilitySpec; diff --git a/swift/ql/lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll b/swift/ql/lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll deleted file mode 100644 index dd47fd14945..00000000000 --- a/swift/ql/lib/codeql/swift/elements/PlatformVersionAvailabilitySpec.qll +++ /dev/null @@ -1,12 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the public class `PlatformVersionAvailabilitySpec`. - */ - -private import internal.PlatformVersionAvailabilitySpecImpl -import codeql.swift.elements.AvailabilitySpec - -/** - * An availability spec based on platform and version, for example `macOS 12` or `watchOS 14` - */ -final class PlatformVersionAvailabilitySpec = Impl::PlatformVersionAvailabilitySpec; diff --git a/swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecConstructor.qll b/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll similarity index 57% rename from swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecConstructor.qll rename to swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll index 90bdb0cf903..24459c6cf68 100644 --- a/swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecConstructor.qll +++ b/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll @@ -1,14 +1,14 @@ // generated by codegen/codegen.py, remove this comment if you wish to edit this file /** * This module defines the hook used internally to tweak the characteristic predicate of - * `OtherAvailabilitySpec` synthesized instances. + * `AvailabilitySpec` synthesized instances. * INTERNAL: Do not use. */ private import codeql.swift.generated.Raw /** - * The characteristic predicate of `OtherAvailabilitySpec` synthesized instances. + * The characteristic predicate of `AvailabilitySpec` synthesized instances. * INTERNAL: Do not use. */ -predicate constructOtherAvailabilitySpec(Raw::OtherAvailabilitySpec id) { any() } +predicate constructAvailabilitySpec(Raw::AvailabilitySpec id) { any() } diff --git a/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll b/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll index 0df968b3e6f..bb7b0c0b706 100644 --- a/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll +++ b/swift/ql/lib/codeql/swift/elements/internal/AvailabilitySpecImpl.qll @@ -1,10 +1,3 @@ -// generated by codegen/codegen.py, remove this comment if you wish to edit this file -/** - * This module provides a hand-modifiable wrapper around the generated class `AvailabilitySpec`. - * - * INTERNAL: Do not use. - */ - private import codeql.swift.generated.AvailabilitySpec /** @@ -12,11 +5,18 @@ private import codeql.swift.generated.AvailabilitySpec * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An availability spec, that is, part of an `AvailabilityInfo` condition. For example `iOS 12` and `*` in: * ``` * if #available(iOS 12, *) * ``` */ - class AvailabilitySpec extends Generated::AvailabilitySpec { } + class AvailabilitySpec extends Generated::AvailabilitySpec { + override string toStringImpl() { + if this.isWildcard() + then result = "*" + else result = this.getPlatform() + " " + this.getVersion() + } + } } diff --git a/swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecImpl.qll b/swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecImpl.qll deleted file mode 100644 index 96729ac9092..00000000000 --- a/swift/ql/lib/codeql/swift/elements/internal/OtherAvailabilitySpecImpl.qll +++ /dev/null @@ -1,11 +0,0 @@ -private import codeql.swift.generated.OtherAvailabilitySpec - -module Impl { - // the following QLdoc is generated: if you need to edit it, do it in the schema file - /** - * A wildcard availability spec `*` - */ - class OtherAvailabilitySpec extends Generated::OtherAvailabilitySpec { - override string toStringImpl() { result = "*" } - } -} diff --git a/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll b/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll deleted file mode 100644 index 858e62b35a7..00000000000 --- a/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecConstructor.qll +++ /dev/null @@ -1,16 +0,0 @@ -// generated by codegen/codegen.py, remove this comment if you wish to edit this file -/** - * This module defines the hook used internally to tweak the characteristic predicate of - * `PlatformVersionAvailabilitySpec` synthesized instances. - * INTERNAL: Do not use. - */ - -private import codeql.swift.generated.Raw - -/** - * The characteristic predicate of `PlatformVersionAvailabilitySpec` synthesized instances. - * INTERNAL: Do not use. - */ -predicate constructPlatformVersionAvailabilitySpec(Raw::PlatformVersionAvailabilitySpec id) { - any() -} diff --git a/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecImpl.qll b/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecImpl.qll deleted file mode 100644 index e5d4814338d..00000000000 --- a/swift/ql/lib/codeql/swift/elements/internal/PlatformVersionAvailabilitySpecImpl.qll +++ /dev/null @@ -1,11 +0,0 @@ -private import codeql.swift.generated.PlatformVersionAvailabilitySpec - -module Impl { - // the following QLdoc is generated: if you need to edit it, do it in the schema file - /** - * An availability spec based on platform and version, for example `macOS 12` or `watchOS 14` - */ - class PlatformVersionAvailabilitySpec extends Generated::PlatformVersionAvailabilitySpec { - override string toStringImpl() { result = this.getPlatform() + " " + this.getVersion() } - } -} diff --git a/swift/ql/lib/codeql/swift/generated/AvailabilitySpec.qll b/swift/ql/lib/codeql/swift/generated/AvailabilitySpec.qll index d14de9b3bc2..c4d61070aba 100644 --- a/swift/ql/lib/codeql/swift/generated/AvailabilitySpec.qll +++ b/swift/ql/lib/codeql/swift/generated/AvailabilitySpec.qll @@ -21,5 +21,38 @@ module Generated { * INTERNAL: Do not reference the `Generated::AvailabilitySpec` class directly. * Use the subclass `AvailabilitySpec`, where the following predicates are available. */ - class AvailabilitySpec extends Synth::TAvailabilitySpec, AstNodeImpl::AstNode { } + class AvailabilitySpec extends Synth::TAvailabilitySpec, AstNodeImpl::AstNode { + override string getAPrimaryQlClass() { result = "AvailabilitySpec" } + + /** + * Gets the platform of this availability spec, if it exists. + */ + string getPlatform() { + result = Synth::convertAvailabilitySpecToRaw(this).(Raw::AvailabilitySpec).getPlatform() + } + + /** + * Holds if `getPlatform()` exists. + */ + final predicate hasPlatform() { exists(this.getPlatform()) } + + /** + * Gets the version of this availability spec, if it exists. + */ + string getVersion() { + result = Synth::convertAvailabilitySpecToRaw(this).(Raw::AvailabilitySpec).getVersion() + } + + /** + * Holds if `getVersion()` exists. + */ + final predicate hasVersion() { exists(this.getVersion()) } + + /** + * Holds if this availability spec is wildcard. + */ + predicate isWildcard() { + Synth::convertAvailabilitySpecToRaw(this).(Raw::AvailabilitySpec).isWildcard() + } + } } diff --git a/swift/ql/lib/codeql/swift/generated/OtherAvailabilitySpec.qll b/swift/ql/lib/codeql/swift/generated/OtherAvailabilitySpec.qll deleted file mode 100644 index 222a306e311..00000000000 --- a/swift/ql/lib/codeql/swift/generated/OtherAvailabilitySpec.qll +++ /dev/null @@ -1,26 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the generated definition of `OtherAvailabilitySpec`. - * INTERNAL: Do not import directly. - */ - -private import codeql.swift.generated.Synth -private import codeql.swift.generated.Raw -import codeql.swift.elements.internal.AvailabilitySpecImpl::Impl as AvailabilitySpecImpl - -/** - * INTERNAL: This module contains the fully generated definition of `OtherAvailabilitySpec` and should not - * be referenced directly. - */ -module Generated { - /** - * A wildcard availability spec `*` - * INTERNAL: Do not reference the `Generated::OtherAvailabilitySpec` class directly. - * Use the subclass `OtherAvailabilitySpec`, where the following predicates are available. - */ - class OtherAvailabilitySpec extends Synth::TOtherAvailabilitySpec, - AvailabilitySpecImpl::AvailabilitySpec - { - override string getAPrimaryQlClass() { result = "OtherAvailabilitySpec" } - } -} diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 2517b161440..c5bd9278356 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -55,6 +55,12 @@ private module Impl { ) } + private Element getImmediateChildOfAvailabilitySpec( + AvailabilitySpec e, int index, string partialPredicateCall + ) { + none() + } + private Element getImmediateChildOfKeyPathComponent( KeyPathComponent e, int index, string partialPredicateCall ) { @@ -89,18 +95,6 @@ private module Impl { ) } - private Element getImmediateChildOfOtherAvailabilitySpec( - OtherAvailabilitySpec e, int index, string partialPredicateCall - ) { - none() - } - - private Element getImmediateChildOfPlatformVersionAvailabilitySpec( - PlatformVersionAvailabilitySpec e, int index, string partialPredicateCall - ) { - none() - } - private Element getImmediateChildOfCapturedDecl( CapturedDecl e, int index, string partialPredicateCall ) { @@ -3188,16 +3182,14 @@ private module Impl { or result = getImmediateChildOfAvailabilityInfo(e, index, partialAccessor) or + result = getImmediateChildOfAvailabilitySpec(e, index, partialAccessor) + or result = getImmediateChildOfKeyPathComponent(e, index, partialAccessor) or result = getImmediateChildOfMacroRole(e, index, partialAccessor) or result = getImmediateChildOfUnspecifiedElement(e, index, partialAccessor) or - result = getImmediateChildOfOtherAvailabilitySpec(e, index, partialAccessor) - or - result = getImmediateChildOfPlatformVersionAvailabilitySpec(e, index, partialAccessor) - or result = getImmediateChildOfCapturedDecl(e, index, partialAccessor) or result = getImmediateChildOfEnumCaseDecl(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll b/swift/ql/lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll deleted file mode 100644 index 24781de1e07..00000000000 --- a/swift/ql/lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll +++ /dev/null @@ -1,46 +0,0 @@ -// generated by codegen/codegen.py, do not edit -/** - * This module provides the generated definition of `PlatformVersionAvailabilitySpec`. - * INTERNAL: Do not import directly. - */ - -private import codeql.swift.generated.Synth -private import codeql.swift.generated.Raw -import codeql.swift.elements.internal.AvailabilitySpecImpl::Impl as AvailabilitySpecImpl - -/** - * INTERNAL: This module contains the fully generated definition of `PlatformVersionAvailabilitySpec` and should not - * be referenced directly. - */ -module Generated { - /** - * An availability spec based on platform and version, for example `macOS 12` or `watchOS 14` - * INTERNAL: Do not reference the `Generated::PlatformVersionAvailabilitySpec` class directly. - * Use the subclass `PlatformVersionAvailabilitySpec`, where the following predicates are available. - */ - class PlatformVersionAvailabilitySpec extends Synth::TPlatformVersionAvailabilitySpec, - AvailabilitySpecImpl::AvailabilitySpec - { - override string getAPrimaryQlClass() { result = "PlatformVersionAvailabilitySpec" } - - /** - * Gets the platform of this platform version availability spec. - */ - string getPlatform() { - result = - Synth::convertPlatformVersionAvailabilitySpecToRaw(this) - .(Raw::PlatformVersionAvailabilitySpec) - .getPlatform() - } - - /** - * Gets the version of this platform version availability spec. - */ - string getVersion() { - result = - Synth::convertPlatformVersionAvailabilitySpecToRaw(this) - .(Raw::PlatformVersionAvailabilitySpec) - .getVersion() - } - } -} diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 25221284597..0f5f1539917 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -161,7 +161,24 @@ module Raw { * if #available(iOS 12, *) * ``` */ - class AvailabilitySpec extends @availability_spec, AstNode { } + class AvailabilitySpec extends @availability_spec, AstNode { + override string toString() { result = "AvailabilitySpec" } + + /** + * Gets the platform of this availability spec, if it exists. + */ + string getPlatform() { availability_spec_platforms(this, result) } + + /** + * Gets the version of this availability spec, if it exists. + */ + string getVersion() { availability_spec_versions(this, result) } + + /** + * Holds if this availability spec is wildcard. + */ + predicate isWildcard() { availability_spec_is_wildcard(this) } + } /** * INTERNAL: Do not use. @@ -308,34 +325,6 @@ module Raw { AstNode getChild(int index) { unspecified_element_children(this, index, result) } } - /** - * INTERNAL: Do not use. - * A wildcard availability spec `*` - */ - class OtherAvailabilitySpec extends @other_availability_spec, AvailabilitySpec { - override string toString() { result = "OtherAvailabilitySpec" } - } - - /** - * INTERNAL: Do not use. - * An availability spec based on platform and version, for example `macOS 12` or `watchOS 14` - */ - class PlatformVersionAvailabilitySpec extends @platform_version_availability_spec, - AvailabilitySpec - { - override string toString() { result = "PlatformVersionAvailabilitySpec" } - - /** - * Gets the platform of this platform version availability spec. - */ - string getPlatform() { platform_version_availability_specs(this, result, _) } - - /** - * Gets the version of this platform version availability spec. - */ - string getVersion() { platform_version_availability_specs(this, _, result) } - } - /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index c3b56553121..55ce9392000 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -18,6 +18,10 @@ module Synth { * INTERNAL: Do not use. */ TAvailabilityInfo(Raw::AvailabilityInfo id) { constructAvailabilityInfo(id) } or + /** + * INTERNAL: Do not use. + */ + TAvailabilitySpec(Raw::AvailabilitySpec id) { constructAvailabilitySpec(id) } or /** * INTERNAL: Do not use. */ @@ -42,16 +46,6 @@ module Synth { * INTERNAL: Do not use. */ TMacroRole(Raw::MacroRole id) { constructMacroRole(id) } or - /** - * INTERNAL: Do not use. - */ - TOtherAvailabilitySpec(Raw::OtherAvailabilitySpec id) { constructOtherAvailabilitySpec(id) } or - /** - * INTERNAL: Do not use. - */ - TPlatformVersionAvailabilitySpec(Raw::PlatformVersionAvailabilitySpec id) { - constructPlatformVersionAvailabilitySpec(id) - } or /** * INTERNAL: Do not use. */ @@ -1123,11 +1117,6 @@ module Synth { TDecl or TExpr or TKeyPathComponent or TMacroRole or TPattern or TStmt or TStmtCondition or TTypeRepr; - /** - * INTERNAL: Do not use. - */ - class TAvailabilitySpec = TOtherAvailabilitySpec or TPlatformVersionAvailabilitySpec; - /** * INTERNAL: Do not use. */ @@ -1455,6 +1444,12 @@ module Synth { */ TAvailabilityInfo convertAvailabilityInfoFromRaw(Raw::Element e) { result = TAvailabilityInfo(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TAvailabilitySpec`, if possible. + */ + TAvailabilitySpec convertAvailabilitySpecFromRaw(Raw::Element e) { result = TAvailabilitySpec(e) } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TComment`, if possible. @@ -1491,22 +1486,6 @@ module Synth { */ TMacroRole convertMacroRoleFromRaw(Raw::Element e) { result = TMacroRole(e) } - /** - * INTERNAL: Do not use. - * Converts a raw element to a synthesized `TOtherAvailabilitySpec`, if possible. - */ - TOtherAvailabilitySpec convertOtherAvailabilitySpecFromRaw(Raw::Element e) { - result = TOtherAvailabilitySpec(e) - } - - /** - * INTERNAL: Do not use. - * Converts a raw element to a synthesized `TPlatformVersionAvailabilitySpec`, if possible. - */ - TPlatformVersionAvailabilitySpec convertPlatformVersionAvailabilitySpecFromRaw(Raw::Element e) { - result = TPlatformVersionAvailabilitySpec(e) - } - /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TUnknownFile`, if possible. @@ -3241,16 +3220,6 @@ module Synth { result = convertTypeReprFromRaw(e) } - /** - * INTERNAL: Do not use. - * Converts a raw DB element to a synthesized `TAvailabilitySpec`, if possible. - */ - TAvailabilitySpec convertAvailabilitySpecFromRaw(Raw::Element e) { - result = convertOtherAvailabilitySpecFromRaw(e) - or - result = convertPlatformVersionAvailabilitySpecFromRaw(e) - } - /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TCallable`, if possible. @@ -4199,6 +4168,12 @@ module Synth { */ Raw::Element convertAvailabilityInfoToRaw(TAvailabilityInfo e) { e = TAvailabilityInfo(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TAvailabilitySpec` to a raw DB element, if possible. + */ + Raw::Element convertAvailabilitySpecToRaw(TAvailabilitySpec e) { e = TAvailabilitySpec(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TComment` to a raw DB element, if possible. @@ -4235,22 +4210,6 @@ module Synth { */ Raw::Element convertMacroRoleToRaw(TMacroRole e) { e = TMacroRole(result) } - /** - * INTERNAL: Do not use. - * Converts a synthesized `TOtherAvailabilitySpec` to a raw DB element, if possible. - */ - Raw::Element convertOtherAvailabilitySpecToRaw(TOtherAvailabilitySpec e) { - e = TOtherAvailabilitySpec(result) - } - - /** - * INTERNAL: Do not use. - * Converts a synthesized `TPlatformVersionAvailabilitySpec` to a raw DB element, if possible. - */ - Raw::Element convertPlatformVersionAvailabilitySpecToRaw(TPlatformVersionAvailabilitySpec e) { - e = TPlatformVersionAvailabilitySpec(result) - } - /** * INTERNAL: Do not use. * Converts a synthesized `TUnknownFile` to a raw DB element, if possible. @@ -5983,16 +5942,6 @@ module Synth { result = convertTypeReprToRaw(e) } - /** - * INTERNAL: Do not use. - * Converts a synthesized `TAvailabilitySpec` to a raw DB element, if possible. - */ - Raw::Element convertAvailabilitySpecToRaw(TAvailabilitySpec e) { - result = convertOtherAvailabilitySpecToRaw(e) - or - result = convertPlatformVersionAvailabilitySpecToRaw(e) - } - /** * INTERNAL: Do not use. * Converts a synthesized `TCallable` to a raw DB element, if possible. diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 38e066a2a83..21431e563b2 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -4,14 +4,13 @@ */ import codeql.swift.elements.internal.AvailabilityInfoConstructor +import codeql.swift.elements.internal.AvailabilitySpecConstructor import codeql.swift.elements.internal.CommentConstructor import codeql.swift.elements.internal.DbFileConstructor import codeql.swift.elements.internal.DbLocationConstructor import codeql.swift.elements.internal.DiagnosticsConstructor import codeql.swift.elements.internal.KeyPathComponentConstructor import codeql.swift.elements.internal.MacroRoleConstructor -import codeql.swift.elements.internal.OtherAvailabilitySpecConstructor -import codeql.swift.elements.internal.PlatformVersionAvailabilitySpecConstructor import codeql.swift.elements.internal.UnspecifiedElementConstructor import codeql.swift.elements.decl.internal.AccessorConstructor import codeql.swift.elements.decl.internal.AssociatedTypeDeclConstructor diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 2f4195b1c99..b7006eaacb0 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -133,10 +133,26 @@ availability_info_specs( int spec: @availability_spec_or_none ref ); -@availability_spec = - @other_availability_spec -| @platform_version_availability_spec -; +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); @callable = @closure_expr @@ -245,16 +261,6 @@ unspecified_element_children( int child: @ast_node_or_none ref ); -other_availability_specs( - unique int id: @other_availability_spec -); - -platform_version_availability_specs( - unique int id: @platform_version_availability_spec, - string platform: string ref, - string version: string ref -); - @decl = @captured_decl | @enum_case_decl diff --git a/swift/ql/test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt b/swift/ql/test/extractor-tests/generated/AvailabilitySpec/MISSING_SOURCE.txt similarity index 100% rename from swift/ql/test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt rename to swift/ql/test/extractor-tests/generated/AvailabilitySpec/MISSING_SOURCE.txt diff --git a/swift/ql/test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt b/swift/ql/test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt deleted file mode 100644 index bdba87873f2..00000000000 --- a/swift/ql/test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen/codegen.py, do not edit - -After a source file is added in this directory and codegen/codegen.py is run again, test queries -will appear and this file will be deleted diff --git a/swift/schema.py b/swift/schema.py index 36b758f4ab4..a8e51a09d52 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -905,20 +905,9 @@ class AvailabilitySpec(AstNode): if #available(iOS 12, *) ``` """ - pass - -class PlatformVersionAvailabilitySpec(AvailabilitySpec): - """ - An availability spec based on platform and version, for example `macOS 12` or `watchOS 14` - """ - platform: string - version: string - -class OtherAvailabilitySpec(AvailabilitySpec): - """ - A wildcard availability spec `*` - """ - pass + platform: optional[string] + version: optional[string] + is_wildcard: predicate class AvailabilityInfo(AstNode): """ From d890feedda2430034d3026459a0b5802d1c2b2d4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 17:59:28 +0200 Subject: [PATCH 298/965] Swift: Compensate for backwards going locations --- swift/extractor/infra/SwiftLocationExtractor.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/swift/extractor/infra/SwiftLocationExtractor.cpp b/swift/extractor/infra/SwiftLocationExtractor.cpp index 577b73aa983..cd751d157c8 100644 --- a/swift/extractor/infra/SwiftLocationExtractor.cpp +++ b/swift/extractor/infra/SwiftLocationExtractor.cpp @@ -29,7 +29,14 @@ void SwiftLocationExtractor::attachLocationImpl(const swift::SourceManager& sour entry.file = fetchFileLabel(file); std::tie(entry.start_line, entry.start_column) = sourceManager.getLineAndColumnInBuffer(range.Start); - std::tie(entry.end_line, entry.end_column) = sourceManager.getLineAndColumnInBuffer(range.End); + if (sourceManager.getLineAndColumnInBuffer(range.End) >= + sourceManager.getLineAndColumnInBuffer(range.Start)) { + std::tie(entry.end_line, entry.end_column) = sourceManager.getLineAndColumnInBuffer(range.End); + } else { + // the compiler may generate source ranges that go backwards + entry.end_line = entry.start_line; + entry.end_column = entry.start_column; + } SwiftMangledName locName{"loc", entry.file, ':', entry.start_line, ':', entry.start_column, ':', entry.end_line, ':', entry.end_column}; entry.id = trap.createTypedLabel(locName); From bc835a310a4bfdbaac693f9c84d53a266f7431ef Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 22:42:04 +0200 Subject: [PATCH 299/965] Swift: Update `KeyPathComponent` for new kind values --- swift/ql/.generated.list | 4 +-- .../internal/KeyPathComponentImpl.qll | 14 +++++----- .../swift/generated/KeyPathComponent.qll | 13 +++++---- swift/ql/lib/codeql/swift/generated/Raw.qll | 13 +++++---- .../KeyPathComponent.expected | 28 +++++++++---------- .../KeyPathComponent/KindAccessors.expected | 28 +++++++++---------- swift/schema.py | 13 +++++---- 7 files changed, 61 insertions(+), 52 deletions(-) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 64f6cbfdf4c..11845e2692d 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -724,13 +724,13 @@ lib/codeql/swift/generated/Diagnostics.qll 03ea201db80d33b18f7f6c71267044c695c25 lib/codeql/swift/generated/Element.qll bf8f688e05f44f18384067c3cab7f05796764e2b4cce7ff24da419c3dae26194 820390ffbb1012f73267668626f7d0ccd368500331c91bbc276fcb1c25037e41 lib/codeql/swift/generated/ErrorElement.qll b39bd7c8b4e2011f4a6889e073ebf5b628db32f36f50b067250ae730d9f26561 fd859ec969ba434049e7ba4e78271cc8cebc8b058d2e96e4d47a22064cbb5a21 lib/codeql/swift/generated/File.qll 476ac95566ef0080e0ad8c3da144b1be1d945d2f33a24f0864d85ff7c56a09b1 3134018bb50166cbf2690f64bba551cace350e4a7e6e25bcded18f997ad1835b -lib/codeql/swift/generated/KeyPathComponent.qll 5276acdc9a4ff0ec0cc8af615c04043391fb99613731ddcc86db4e47b37c8c5a ccc0931bbd6cc2cfae5037c2ee17bbdcbd87536f5fed90d07e73065c016c4382 +lib/codeql/swift/generated/KeyPathComponent.qll 713f514d23f252777d7a207bf894aec3d614691a05b2dc250b3e50fa41c97a96 46fa3f1666a48ab8a3998f409581be9869b7d74ece6ff65725dc25c86d5a4dff lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 5d41235611a54943ded38965a2e474a6bdc7b2479823b880ed4d6c5431744117 6548a2ac345502c89a210d91f398d8d3b9625af9d24ebc37e43b55ba6e4efdac +lib/codeql/swift/generated/Raw.qll 3491b6ec8362d409e5274fa7079d8910bdf6248b85d25986fce006fdd2927922 841eefe35c74ceda0ff24e7170137fd131d726f0c1f112c6b7e62ecb479e0aaf lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d diff --git a/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll b/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll index be837022a7c..36bd5312940 100644 --- a/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll +++ b/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll @@ -10,37 +10,37 @@ module Impl { /** * Property access like `.bar` in `\Foo.bar`. */ - predicate isProperty() { this.getKind() = 3 } + predicate isProperty() { this.getKind() = 5 } /** * Array or dictionary subscript like `[1]` or `["a", "b"]`. */ - predicate isSubscript() { this.getKind() = 4 } + predicate isSubscript() { this.getKind() = 6 } /** * Optional forcing `!`. */ - predicate isOptionalForcing() { this.getKind() = 5 } + predicate isOptionalForcing() { this.getKind() = 7 } /** * Optional chaining `?`. */ - predicate isOptionalChaining() { this.getKind() = 6 } + predicate isOptionalChaining() { this.getKind() = 8 } /** * Implicit optional wrapping component inserted by the compiler when an optional chain ends in a non-optional value. */ - predicate isOptionalWrapping() { this.getKind() = 7 } + predicate isOptionalWrapping() { this.getKind() = 9 } /** * Reference to the entire object; the `self` in `\Foo.self`. */ - predicate isSelf() { this.getKind() = 8 } + predicate isSelf() { this.getKind() = 10 } /** * Tuple indexing like `.1`. */ - predicate isTupleIndexing() { this.getKind() = 9 } + predicate isTupleIndexing() { this.getKind() = 11 } /** Gets the underlying key-path expression which this is a component of. */ KeyPathExpr getKeyPathExpr() { result.getAComponent() = this } diff --git a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll index 8dfe90eec40..deb3cba99f9 100644 --- a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll +++ b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll @@ -29,12 +29,15 @@ module Generated { * * INTERNAL: Do not use. * - * This is 3 for properties, 4 for array and dictionary subscripts, 5 for optional forcing - * (`!`), 6 for optional chaining (`?`), 7 for implicit optional wrapping, 8 for `self`, - * and 9 for tuple element indexing. + * TODO: Swift 6.2 update with UnresolvedApply and Apply + * TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade * - * The following values should not appear: 0 for invalid components, 1 for unresolved - * properties, 2 for unresolved subscripts, 10 for #keyPath dictionary keys, and 11 for + * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing + * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, + * and 11 for tuple element indexing. + * + * The following values should not appear: 0 for invalid components, 2 for unresolved + * properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for * implicit IDE code completion data. */ int getKind() { diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 0f5f1539917..7f09371bcf5 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -226,12 +226,15 @@ module Raw { * * INTERNAL: Do not use. * - * This is 3 for properties, 4 for array and dictionary subscripts, 5 for optional forcing - * (`!`), 6 for optional chaining (`?`), 7 for implicit optional wrapping, 8 for `self`, - * and 9 for tuple element indexing. + * TODO: Swift 6.2 update with UnresolvedApply and Apply + * TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade * - * The following values should not appear: 0 for invalid components, 1 for unresolved - * properties, 2 for unresolved subscripts, 10 for #keyPath dictionary keys, and 11 for + * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing + * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, + * and 11 for tuple element indexing. + * + * The following values should not appear: 0 for invalid components, 2 for unresolved + * properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for * implicit IDE code completion data. */ int getKind() { key_path_components(this, result, _) } diff --git a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected index 9d51a6ed8d5..0bf2f4698e2 100644 --- a/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected +++ b/swift/ql/test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.expected @@ -1,18 +1,18 @@ instances -| file://:0:0:0:0 | KeyPathComponent | getKind: | 7 | getComponentType: | Int? | -| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 3 | getComponentType: | Int | -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 4 | getComponentType: | Int | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 4 | getComponentType: | Int? | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 5 | getComponentType: | Int | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 8 | getComponentType: | Int? | -| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 3 | getComponentType: | Bar? | -| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 6 | getComponentType: | Bar | -| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 3 | getComponentType: | Int? | -| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 3 | getComponentType: | Bar? | -| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 6 | getComponentType: | Bar | -| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 3 | getComponentType: | Int | -| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 8 | getComponentType: | Int | -| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 9 | getComponentType: | Int | +| file://:0:0:0:0 | KeyPathComponent | getKind: | 9 | getComponentType: | Int? | +| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 5 | getComponentType: | Int | +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 6 | getComponentType: | Int | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 6 | getComponentType: | Int? | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 7 | getComponentType: | Int | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 10 | getComponentType: | Int? | +| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 5 | getComponentType: | Bar? | +| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 8 | getComponentType: | Bar | +| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 5 | getComponentType: | Int? | +| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 5 | getComponentType: | Bar? | +| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 8 | getComponentType: | Bar | +| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 5 | getComponentType: | Int | +| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 10 | getComponentType: | Int | +| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 11 | getComponentType: | Int | getSubscriptArgument | key_path_expr.swift:12:24:12:26 | KeyPathComponent | 0 | key_path_expr.swift:12:25:12:25 | : 0 | | key_path_expr.swift:13:34:13:38 | KeyPathComponent | 0 | key_path_expr.swift:13:35:13:35 | : a | diff --git a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected index 683702221c8..6c55385ae62 100644 --- a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected +++ b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected @@ -1,14 +1,14 @@ -| file://:0:0:0:0 | KeyPathComponent | getKind: | 7 | | | | | optional wrapping | | | -| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 3 | property | | | | | | | -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 4 | | subscript | | | | | | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 4 | | subscript | | | | | | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 5 | | | optional forcing | | | | | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 8 | | | | | | self | | -| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 3 | property | | | | | | | -| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 6 | | | | optional chaining | | | | -| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 3 | property | | | | | | | -| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 3 | property | | | | | | | -| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 6 | | | | optional chaining | | | | -| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 3 | property | | | | | | | -| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 8 | | | | | | self | | -| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 9 | | | | | | | tuple indexing | +| file://:0:0:0:0 | KeyPathComponent | getKind: | 9 | | | | | optional wrapping | | | +| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 5 | property | | | | | | | +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 6 | | subscript | | | | | | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 6 | | subscript | | | | | | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 7 | | | optional forcing | | | | | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 10 | | | | | | self | | +| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 5 | property | | | | | | | +| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 8 | | | | optional chaining | | | | +| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 5 | property | | | | | | | +| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 5 | property | | | | | | | +| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 8 | | | | optional chaining | | | | +| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 5 | property | | | | | | | +| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 10 | | | | | | self | | +| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 11 | | | | | | | tuple indexing | diff --git a/swift/schema.py b/swift/schema.py index a8e51a09d52..e3146d09845 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -486,12 +486,15 @@ class KeyPathComponent(AstNode): kind: int | doc("kind of key path component") | desc(""" INTERNAL: Do not use. - This is 3 for properties, 4 for array and dictionary subscripts, 5 for optional forcing - (`!`), 6 for optional chaining (`?`), 7 for implicit optional wrapping, 8 for `self`, - and 9 for tuple element indexing. + TODO: Swift 6.2 update with UnresolvedApply and Apply + TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade - The following values should not appear: 0 for invalid components, 1 for unresolved - properties, 2 for unresolved subscripts, 10 for #keyPath dictionary keys, and 11 for + This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing + (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, + and 11 for tuple element indexing. + + The following values should not appear: 0 for invalid components, 2 for unresolved + properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for implicit IDE code completion data. """) subscript_arguments : list[Argument] | child | doc( From 7890dc60300a9f5b66b5e67827e25ca3e773d531 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 16 Sep 2025 17:59:59 +0200 Subject: [PATCH 300/965] Swift: Update expected test results after 6.2 update --- .../extractor-tests/expressions/all.expected | 4 +- .../expressions/semantics.expected | 2 + .../decl/CapturedDecl/PrintAst.expected | 13 +-- .../ConcreteVarDecl/ConcreteVarDecl.expected | 2 +- .../decl/MacroDecl/MacroRole.expected | 2 + .../MethodLookupExpr.expected | 12 +-- .../test/library-tests/ast/PrintAst.expected | 83 ++++++++++--------- .../controlflow/graph/Cfg.expected | 35 ++++---- .../dataflow/dataflow/DataFlow.expected | 12 +-- .../dataflow/dataflow/LocalFlow.expected | 18 ++-- .../expr/methodlookup/PrintAst.expected | 26 +++--- .../methodlookup/getStaticTarget.expected | 4 +- .../type/nominaltype/nominaltype.expected | 2 +- .../type/nominaltype/nominaltypedecl.expected | 2 +- .../SuccessfullyExtractedLines.expected | 2 +- 15 files changed, 119 insertions(+), 100 deletions(-) diff --git a/swift/ql/test/extractor-tests/expressions/all.expected b/swift/ql/test/extractor-tests/expressions/all.expected index 0dd7091c1f9..c4909a02c37 100644 --- a/swift/ql/test/extractor-tests/expressions/all.expected +++ b/swift/ql/test/extractor-tests/expressions/all.expected @@ -6,12 +6,13 @@ | expressions.swift:6:9:6:9 | hello world | StringLiteralExpr | | expressions.swift:7:10:7:10 | "..." | InterpolatedStringLiteralExpr | | expressions.swift:7:10:7:10 | OpaqueValueExpr | OpaqueValueExpr | +| expressions.swift:7:10:7:10 | appendLiteral(_:) | DeclRefExpr | | expressions.swift:7:10:7:10 | hello | StringLiteralExpr | | expressions.swift:7:10:7:21 | TapExpr | TapExpr | -| expressions.swift:7:11:7:10 | call to appendLiteral(_:) | CallExpr | | expressions.swift:7:11:7:11 | $interpolation | DeclRefExpr | | expressions.swift:7:11:7:11 | &... | InOutExpr | | expressions.swift:7:11:7:11 | .appendLiteral(_:) | MethodLookupExpr | +| expressions.swift:7:11:7:11 | call to appendLiteral(_:) | CallExpr | | expressions.swift:7:18:7:18 | $interpolation | DeclRefExpr | | expressions.swift:7:18:7:18 | &... | InOutExpr | | expressions.swift:7:18:7:18 | .appendInterpolation(_:) | MethodLookupExpr | @@ -22,6 +23,7 @@ | expressions.swift:7:21:7:21 | $interpolation | DeclRefExpr | | expressions.swift:7:21:7:21 | &... | InOutExpr | | expressions.swift:7:21:7:21 | .appendLiteral(_:) | MethodLookupExpr | +| expressions.swift:7:21:7:21 | appendLiteral(_:) | DeclRefExpr | | expressions.swift:7:21:7:21 | call to appendLiteral(_:) | CallExpr | | expressions.swift:8:15:8:15 | nil | NilLiteralExpr | | expressions.swift:15:9:15:9 | x | DeclRefExpr | diff --git a/swift/ql/test/extractor-tests/expressions/semantics.expected b/swift/ql/test/extractor-tests/expressions/semantics.expected index 35bfe95093c..2b22fb5a12a 100644 --- a/swift/ql/test/extractor-tests/expressions/semantics.expected +++ b/swift/ql/test/extractor-tests/expressions/semantics.expected @@ -1,8 +1,10 @@ +| expressions.swift:7:10:7:10 | appendLiteral(_:) | OrdinarySemantics | | expressions.swift:7:11:7:11 | $interpolation | OrdinarySemantics | | expressions.swift:7:18:7:18 | $interpolation | OrdinarySemantics | | expressions.swift:7:18:7:18 | appendInterpolation(_:) | OrdinarySemantics | | expressions.swift:7:19:7:19 | a | OrdinarySemantics | | expressions.swift:7:21:7:21 | $interpolation | OrdinarySemantics | +| expressions.swift:7:21:7:21 | appendLiteral(_:) | OrdinarySemantics | | expressions.swift:15:9:15:9 | x | OrdinarySemantics | | expressions.swift:15:11:15:11 | !=(_:_:) | OrdinarySemantics | | expressions.swift:16:19:16:19 | failed | OrdinarySemantics | diff --git a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected index 3b815eb1842..ac61ba1dfc6 100644 --- a/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected +++ b/swift/ql/test/extractor-tests/generated/decl/CapturedDecl/PrintAst.expected @@ -222,14 +222,16 @@ closures.swift: # 39| getExpr(): [IntegerLiteralExpr] 1 # 39| getResult().getFullyConverted(): [AwaitExpr] await ... # 39| getCapture(0): [CapturedDecl] callback -# 41| getElement(1): [CallExpr] call to Task.init(priority:operation:) -# 41| getFunction(): [MethodLookupExpr] Task.init(priority:operation:) +# 41| getElement(1): [CallExpr] call to Task.init(name:priority:operation:) +# 41| getFunction(): [MethodLookupExpr] Task.init(name:priority:operation:) # 41| getBase(): [TypeExpr] Task<(), Never>.Type # 41| getTypeRepr(): [TypeRepr] Task<(), Never> -# 41| getMethodRef(): [DeclRefExpr] Task.init(priority:operation:) -# 41| getArgument(0): [Argument] priority: default priority +# 41| getMethodRef(): [DeclRefExpr] Task.init(name:priority:operation:) +# 41| getArgument(0): [Argument] name: default name +# 41| getExpr(): [DefaultArgumentExpr] default name +# 41| getArgument(1): [Argument] priority: default priority # 41| getExpr(): [DefaultArgumentExpr] default priority -# 41| getArgument(1): [Argument] operation: { ... } +# 41| getArgument(2): [Argument] operation: { ... } # 41| getExpr(): [ExplicitClosureExpr] { ... } # 41| getBody(): [BraceStmt] { ... } # 42| getElement(0): [ReturnStmt] return ... @@ -270,6 +272,7 @@ closures.swift: # 46| getArgument(1): [Argument] : 1 # 46| getExpr(): [IntegerLiteralExpr] 1 # 41| [NilLiteralExpr] nil +# 41| [NilLiteralExpr] nil # 50| [NamedFunction] foo() # 50| InterfaceType = () -> Int # 50| getBody(): [BraceStmt] { ... } diff --git a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected index 85fef3f52ca..09751f3c41d 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ConcreteVarDecl/ConcreteVarDecl.expected @@ -103,7 +103,7 @@ getParentPattern | var_decls.swift:65:19:65:19 | case_variable | var_decls.swift:65:8:65:35 | .value(...) | | var_decls.swift:67:22:67:22 | unused_case_variable | var_decls.swift:67:8:67:42 | .value(...) | getParentInitializer -| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:16 | call to makeIterator() | +| var_decls.swift:2:12:2:12 | $i$generator | var_decls.swift:2:12:2:12 | call to makeIterator() | | var_decls.swift:4:7:4:7 | i | var_decls.swift:4:11:4:11 | 0 | | var_decls.swift:7:5:7:5 | numbers | var_decls.swift:7:15:7:18 | [...] | | var_decls.swift:10:12:10:12 | numbers | var_decls.swift:10:22:10:35 | [...] | diff --git a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected index eca30375b24..05232a3cd04 100644 --- a/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected +++ b/swift/ql/test/extractor-tests/generated/decl/MacroDecl/MacroRole.expected @@ -15,6 +15,7 @@ instances | file://:0:0:0:0 | @attached(memberAttribute) | getKind: | 8 | getMacroSyntax: | 1 | | file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | | file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | +| file://:0:0:0:0 | @attached(peer) | getKind: | 32 | getMacroSyntax: | 1 | | test.swift:1:2:1:26 | #freestanding(declaration) | getKind: | 2 | getMacroSyntax: | 0 | | test.swift:3:2:3:25 | #freestanding(expression) | getKind: | 1 | getMacroSyntax: | 0 | | test.swift:5:2:5:17 | @attached(member) | getKind: | 16 | getMacroSyntax: | 1 | @@ -22,4 +23,5 @@ instances getConformance getName | file://:0:0:0:0 | @attached(peer) | 0 | $() | +| file://:0:0:0:0 | @attached(peer) | 0 | _() | | file://:0:0:0:0 | @attached(peer) | 0 | _lldb_summary() | diff --git a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected index 66837f972f2..712c740dc19 100644 --- a/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/MethodLookupExpr/MethodLookupExpr.expected @@ -14,12 +14,12 @@ instances | method_lookups.swift:37:11:37:11 | X.init() | getBase: | method_lookups.swift:37:11:37:11 | X.Type | getMethodRef: | method_lookups.swift:37:11:37:11 | X.init() | | method_lookups.swift:37:11:37:15 | (no string representation) | getBase: | method_lookups.swift:37:11:37:13 | call to X.init() | getMethodRef: | method_lookups.swift:37:15:37:15 | { ... } | | method_lookups.swift:37:15:37:15 | .baz(_:) | getBase: | file://:0:0:0:0 | self | getMethodRef: | method_lookups.swift:37:15:37:15 | baz(_:) | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | getBase: | method_lookups.swift:40:1:40:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | +| method_lookups.swift:40:1:40:1 | Task.init(name:priority:operation:) | getBase: | method_lookups.swift:40:1:40:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:40:1:40:1 | Task.init(name:priority:operation:) | | method_lookups.swift:41:3:41:5 | .foo(_:_:) | getBase: | method_lookups.swift:41:3:41:3 | Y.Type | getMethodRef: | method_lookups.swift:41:5:41:5 | foo(_:_:) | | method_lookups.swift:42:9:42:9 | Y.init() | getBase: | method_lookups.swift:42:9:42:9 | Y.Type | getMethodRef: | method_lookups.swift:42:9:42:9 | Y.init() | | method_lookups.swift:42:9:42:13 | .baz(_:) | getBase: | method_lookups.swift:42:9:42:11 | call to Y.init() | getMethodRef: | method_lookups.swift:42:13:42:13 | baz(_:) | | method_lookups.swift:44:11:44:13 | .foo(_:_:) | getBase: | method_lookups.swift:44:11:44:11 | Y.Type | getMethodRef: | method_lookups.swift:44:13:44:13 | foo(_:_:) | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | getBase: | method_lookups.swift:47:1:47:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | +| method_lookups.swift:47:1:47:1 | Task.init(name:priority:operation:) | getBase: | method_lookups.swift:47:1:47:1 | Task<(), Never>.Type | getMethodRef: | method_lookups.swift:47:1:47:1 | Task.init(name:priority:operation:) | | method_lookups.swift:48:9:48:11 | .foo(_:_:) | getBase: | method_lookups.swift:48:9:48:9 | Z.Type | getMethodRef: | method_lookups.swift:48:11:48:11 | foo(_:_:) | | method_lookups.swift:49:9:49:11 | .bar() | getBase: | method_lookups.swift:49:9:49:9 | Z.Type | getMethodRef: | method_lookups.swift:49:11:49:11 | bar() | | method_lookups.swift:50:9:50:9 | Z.init() | getBase: | method_lookups.swift:50:9:50:9 | Z.Type | getMethodRef: | method_lookups.swift:50:9:50:9 | Z.init() | @@ -44,12 +44,12 @@ getType | method_lookups.swift:37:11:37:11 | X.init() | () -> X | | method_lookups.swift:37:11:37:15 | (no string representation) | (Int) -> () | | method_lookups.swift:37:15:37:15 | .baz(_:) | (Int) -> () | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | +| method_lookups.swift:40:1:40:1 | Task.init(name:priority:operation:) | (String?, TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | | method_lookups.swift:41:3:41:5 | .foo(_:_:) | (Int, Int) -> () | | method_lookups.swift:42:9:42:9 | Y.init() | () -> Y | | method_lookups.swift:42:9:42:13 | .baz(_:) | (Int) -> () | | method_lookups.swift:44:11:44:13 | .foo(_:_:) | (Int, Int) -> () | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | (TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | +| method_lookups.swift:47:1:47:1 | Task.init(name:priority:operation:) | (String?, TaskPriority?, sending @escaping @isolated(any) () async -> ()) -> Task<(), Never> | | method_lookups.swift:48:9:48:11 | .foo(_:_:) | @MainActor (Int, Int) -> () | | method_lookups.swift:49:9:49:11 | .bar() | () -> () | | method_lookups.swift:50:9:50:9 | Z.init() | @MainActor () -> Z | @@ -70,12 +70,12 @@ getMember | method_lookups.swift:36:11:36:13 | .bar() | method_lookups.swift:3:3:3:21 | bar() | | method_lookups.swift:37:11:37:11 | X.init() | method_lookups.swift:6:3:8:3 | X.init() | | method_lookups.swift:37:15:37:15 | .baz(_:) | method_lookups.swift:4:3:4:21 | baz(_:) | -| method_lookups.swift:40:1:40:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | +| method_lookups.swift:40:1:40:1 | Task.init(name:priority:operation:) | file://:0:0:0:0 | Task.init(name:priority:operation:) | | method_lookups.swift:41:3:41:5 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | | method_lookups.swift:42:9:42:9 | Y.init() | method_lookups.swift:15:3:17:3 | Y.init() | | method_lookups.swift:42:9:42:13 | .baz(_:) | method_lookups.swift:13:3:13:21 | baz(_:) | | method_lookups.swift:44:11:44:13 | .foo(_:_:) | method_lookups.swift:12:3:12:35 | foo(_:_:) | -| method_lookups.swift:47:1:47:1 | Task.init(priority:operation:) | file://:0:0:0:0 | Task.init(priority:operation:) | +| method_lookups.swift:47:1:47:1 | Task.init(name:priority:operation:) | file://:0:0:0:0 | Task.init(name:priority:operation:) | | method_lookups.swift:48:9:48:11 | .foo(_:_:) | method_lookups.swift:22:3:22:35 | foo(_:_:) | | method_lookups.swift:49:9:49:11 | .bar() | method_lookups.swift:23:15:23:33 | bar() | | method_lookups.swift:50:9:50:9 | Z.init() | method_lookups.swift:26:3:28:3 | Z.init() | diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index f0383c005c3..6bc89c057e1 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -222,7 +222,7 @@ cfg.swift: # 40| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 40| getBase(): [DeclRefExpr] $interpolation # 40| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 40| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 40| getArgument(0): [Argument] : Unknown error # 40| getExpr(): [StringLiteralExpr] Unknown error # 40| getElement(1): [CallExpr] call to appendInterpolation(_:) @@ -236,7 +236,7 @@ cfg.swift: # 40| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 40| getBase(): [DeclRefExpr] $interpolation # 40| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 40| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 40| getArgument(0): [Argument] : # 40| getExpr(): [StringLiteralExpr] # 40| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ... @@ -717,13 +717,13 @@ cfg.swift: # 138| getExpr(): [IntegerLiteralExpr] 0 # 138| getArgument(1): [Argument] : 10 # 138| getExpr(): [IntegerLiteralExpr] 10 -#-----| getMethodRef(): [DeclRefExpr] makeIterator() +# 138| getMethodRef(): [DeclRefExpr] makeIterator() # 138| getPattern(0): [NamedPattern] $generator # 138| getNextCall(): [CallExpr] call to next() # 138| getFunction(): [MethodLookupExpr] .next() # 138| getBase(): [DeclRefExpr] $generator # 138| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next() +# 138| getMethodRef(): [DeclRefExpr] next() # 138| getBody(): [BraceStmt] { ... } # 140| getElement(1): [SwitchStmt] switch x { ... } # 140| getExpr(): [DeclRefExpr] x @@ -1462,7 +1462,7 @@ cfg.swift: # 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 263| getBase(): [DeclRefExpr] $interpolation # 263| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 263| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 263| getArgument(0): [Argument] : # 263| getExpr(): [StringLiteralExpr] # 263| getElement(1): [CallExpr] call to appendInterpolation(_:) @@ -1476,7 +1476,7 @@ cfg.swift: # 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 263| getBase(): [DeclRefExpr] $interpolation # 263| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 263| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 263| getArgument(0): [Argument] : + # 263| getExpr(): [StringLiteralExpr] + # 263| getElement(3): [CallExpr] call to appendInterpolation(_:) @@ -1490,7 +1490,7 @@ cfg.swift: # 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 263| getBase(): [DeclRefExpr] $interpolation # 263| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 263| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 263| getArgument(0): [Argument] : is equal to # 263| getExpr(): [StringLiteralExpr] is equal to # 263| getElement(5): [CallExpr] call to appendInterpolation(_:) @@ -1512,7 +1512,7 @@ cfg.swift: # 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 263| getBase(): [DeclRefExpr] $interpolation # 263| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 263| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 263| getArgument(0): [Argument] : and here is a zero: # 263| getExpr(): [StringLiteralExpr] and here is a zero: # 263| getElement(7): [CallExpr] call to appendInterpolation(_:) @@ -1527,7 +1527,7 @@ cfg.swift: # 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 263| getBase(): [DeclRefExpr] $interpolation # 263| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 263| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 263| getArgument(0): [Argument] : # 263| getExpr(): [StringLiteralExpr] # 266| [NamedFunction] testSubscriptExpr() @@ -3128,8 +3128,8 @@ cfg.swift: # 499| getCondition(): [StmtCondition] StmtCondition # 499| getElement(0): [ConditionElement] #available # 499| getAvailability(): [AvailabilityInfo] #available -# 499| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 10 -# 499| getSpec(1): [OtherAvailabilitySpec] * +# 499| getSpec(0): [AvailabilitySpec] macOS 10 +# 499| getSpec(1): [AvailabilitySpec] * # 499| getThen(): [BraceStmt] { ... } # 500| getElement(0): [BinaryExpr] ... .+=(_:_:) ... # 500| getFunction(): [MethodLookupExpr] .+=(_:_:) @@ -3145,8 +3145,8 @@ cfg.swift: # 503| getCondition(): [StmtCondition] StmtCondition # 503| getElement(0): [ConditionElement] #available # 503| getAvailability(): [AvailabilityInfo] #available -# 503| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 10.13 -# 503| getSpec(1): [OtherAvailabilitySpec] * +# 503| getSpec(0): [AvailabilitySpec] macOS 10.13 +# 503| getSpec(1): [AvailabilitySpec] * # 503| getThen(): [BraceStmt] { ... } # 504| getElement(0): [BinaryExpr] ... .+=(_:_:) ... # 504| getFunction(): [MethodLookupExpr] .+=(_:_:) @@ -3162,9 +3162,9 @@ cfg.swift: # 507| getCondition(): [StmtCondition] StmtCondition # 507| getElement(0): [ConditionElement] #unavailable # 507| getAvailability(): [AvailabilityInfo] #unavailable -# 507| getSpec(0): [PlatformVersionAvailabilitySpec] iOS 10 -# 507| getSpec(1): [PlatformVersionAvailabilitySpec] watchOS 10 -# 507| getSpec(2): [PlatformVersionAvailabilitySpec] macOS 10 +# 507| getSpec(0): [AvailabilitySpec] iOS 10 +# 507| getSpec(1): [AvailabilitySpec] watchOS 10 +# 507| getSpec(2): [AvailabilitySpec] macOS 10 # 507| getThen(): [BraceStmt] { ... } # 508| getElement(0): [BinaryExpr] ... .+=(_:_:) ... # 508| getFunction(): [MethodLookupExpr] .+=(_:_:) @@ -3180,8 +3180,8 @@ cfg.swift: # 511| getCondition(): [StmtCondition] StmtCondition # 511| getElement(0): [ConditionElement] #available # 511| getAvailability(): [AvailabilityInfo] #available -# 511| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 12 -# 511| getSpec(1): [OtherAvailabilitySpec] * +# 511| getSpec(0): [AvailabilitySpec] macOS 12 +# 511| getSpec(1): [AvailabilitySpec] * # 511| getBody(): [BraceStmt] { ... } # 512| getElement(0): [BinaryExpr] ... .+=(_:_:) ... # 512| getFunction(): [MethodLookupExpr] .+=(_:_:) @@ -3197,12 +3197,12 @@ cfg.swift: # 515| getCondition(): [StmtCondition] StmtCondition # 515| getElement(0): [ConditionElement] #available # 515| getAvailability(): [AvailabilityInfo] #available -# 515| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 12 -# 515| getSpec(1): [OtherAvailabilitySpec] * +# 515| getSpec(0): [AvailabilitySpec] macOS 12 +# 515| getSpec(1): [AvailabilitySpec] * # 515| getElement(1): [ConditionElement] #available # 515| getAvailability(): [AvailabilityInfo] #available -# 515| getSpec(0): [PlatformVersionAvailabilitySpec] iOS 12 -# 515| getSpec(1): [OtherAvailabilitySpec] * +# 515| getSpec(0): [AvailabilitySpec] iOS 12 +# 515| getSpec(1): [AvailabilitySpec] * # 515| getThen(): [BraceStmt] { ... } # 516| getElement(0): [BinaryExpr] ... .+=(_:_:) ... # 516| getFunction(): [MethodLookupExpr] .+=(_:_:) @@ -3245,14 +3245,16 @@ cfg.swift: # 524| getParam(0): [ParamDecl] continuation # 524| Type = AsyncStream.Continuation # 523| getBody(): [BraceStmt] { ... } -# 525| getElement(0): [CallExpr] call to detached(priority:operation:) -# 525| getFunction(): [MethodLookupExpr] .detached(priority:operation:) +# 525| getElement(0): [CallExpr] call to detached(name:priority:operation:) +# 525| getFunction(): [MethodLookupExpr] .detached(name:priority:operation:) # 525| getBase(): [TypeExpr] Task<(), Never>.Type # 525| getTypeRepr(): [TypeRepr] Task<(), Never> -# 525| getMethodRef(): [DeclRefExpr] detached(priority:operation:) -# 525| getArgument(0): [Argument] priority: default priority +# 525| getMethodRef(): [DeclRefExpr] detached(name:priority:operation:) +# 525| getArgument(0): [Argument] name: default name +# 525| getExpr(): [DefaultArgumentExpr] default name +# 525| getArgument(1): [Argument] priority: default priority # 525| getExpr(): [DefaultArgumentExpr] default priority -# 525| getArgument(1): [Argument] operation: { ... } +# 525| getArgument(2): [Argument] operation: { ... } # 525| getExpr(): [ExplicitClosureExpr] { ... } # 525| getBody(): [BraceStmt] { ... } # 526| getElement(0): [ForEachStmt] for ... in ... { ... } @@ -3273,13 +3275,13 @@ cfg.swift: # 526| getExpr(): [IntegerLiteralExpr] 1 # 526| getArgument(1): [Argument] : 100 # 526| getExpr(): [IntegerLiteralExpr] 100 -#-----| getMethodRef(): [DeclRefExpr] makeIterator() +# 526| getMethodRef(): [DeclRefExpr] makeIterator() # 526| getPattern(0): [NamedPattern] $i$generator # 526| getNextCall(): [CallExpr] call to next() # 526| getFunction(): [MethodLookupExpr] .next() # 526| getBase(): [DeclRefExpr] $i$generator # 526| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next() +# 526| getMethodRef(): [DeclRefExpr] next() # 526| getBody(): [BraceStmt] { ... } # 527| getElement(0): [CallExpr] call to yield(_:) # 527| getFunction(): [MethodLookupExpr] .yield(_:) @@ -3305,13 +3307,13 @@ cfg.swift: # 533| getFunction(): [MethodLookupExpr] .makeAsyncIterator() # 533| getBase(): [DeclRefExpr] stream # 533| getBase().getFullyConverted(): [LoadExpr] (AsyncStream) ... -#-----| getMethodRef(): [DeclRefExpr] makeAsyncIterator() +# 533| getMethodRef(): [DeclRefExpr] makeAsyncIterator() # 533| getPattern(0): [NamedPattern] $i$generator # 533| getNextCall(): [CallExpr] call to next(isolation:) # 533| getFunction(): [MethodLookupExpr] .next(isolation:) # 533| getBase(): [DeclRefExpr] $i$generator # 533| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next(isolation:) +# 533| getMethodRef(): [DeclRefExpr] next(isolation:) # 533| getArgument(0): [Argument] isolation: CurrentContextIsolationExpr # 533| getExpr(): [CurrentContextIsolationExpr] CurrentContextIsolationExpr # 533| getNextCall().getFullyConverted(): [AwaitExpr] await ... @@ -3328,6 +3330,7 @@ cfg.swift: # 534| getArgument(2): [Argument] terminator: default terminator # 534| getExpr(): [DefaultArgumentExpr] default terminator # 525| [NilLiteralExpr] nil +# 525| [NilLiteralExpr] nil # 533| [NilLiteralExpr] nil # 538| [NamedFunction] testNilCoalescing(x:) # 538| InterfaceType = (Int?) -> Int @@ -4819,7 +4822,7 @@ expressions.swift: # 7| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 7| getBase(): [DeclRefExpr] $interpolation # 7| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 7| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 7| getArgument(0): [Argument] : hello # 7| getExpr(): [StringLiteralExpr] hello # 7| getElement(1): [CallExpr] call to appendInterpolation(_:) @@ -4833,7 +4836,7 @@ expressions.swift: # 7| getFunction(): [MethodLookupExpr] .appendLiteral(_:) # 7| getBase(): [DeclRefExpr] $interpolation # 7| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:) +# 7| getMethodRef(): [DeclRefExpr] appendLiteral(_:) # 7| getArgument(0): [Argument] : # 7| getExpr(): [StringLiteralExpr] # 7| getPattern(0): [NamedPattern] s1 @@ -7027,13 +7030,13 @@ statements.swift: # 2| getExpr(): [IntegerLiteralExpr] 1 # 2| getArgument(1): [Argument] : 5 # 2| getExpr(): [IntegerLiteralExpr] 5 -#-----| getMethodRef(): [DeclRefExpr] makeIterator() +# 2| getMethodRef(): [DeclRefExpr] makeIterator() # 2| getPattern(0): [NamedPattern] $i$generator # 2| getNextCall(): [CallExpr] call to next() # 2| getFunction(): [MethodLookupExpr] .next() # 2| getBase(): [DeclRefExpr] $i$generator # 2| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next() +# 2| getMethodRef(): [DeclRefExpr] next() # 2| getBody(): [BraceStmt] { ... } # 3| getElement(0): [IfStmt] if ... then { ... } else { ... } # 3| getCondition(): [StmtCondition] StmtCondition @@ -7471,13 +7474,13 @@ statements.swift: # 71| getInit(0): [CallExpr] call to makeIterator() # 71| getFunction(): [MethodLookupExpr] .makeIterator() # 71| getBase(): [DeclRefExpr] numbers -#-----| getMethodRef(): [DeclRefExpr] makeIterator() +# 71| getMethodRef(): [DeclRefExpr] makeIterator() # 71| getPattern(0): [NamedPattern] $number$generator # 71| getNextCall(): [CallExpr] call to next() # 71| getFunction(): [MethodLookupExpr] .next() # 71| getBase(): [DeclRefExpr] $number$generator # 71| getBase().getFullyConverted(): [InOutExpr] &... -#-----| getMethodRef(): [DeclRefExpr] next() +# 71| getMethodRef(): [DeclRefExpr] next() # 71| getBody(): [BraceStmt] { ... } # 74| [StructDecl] HasModifyAccessorDecl # 75| getMember(0): [PatternBindingDecl] var ... = ... @@ -7559,8 +7562,8 @@ statements.swift: # 87| getCondition(): [StmtCondition] StmtCondition # 87| getElement(0): [ConditionElement] #available # 87| getAvailability(): [AvailabilityInfo] #available -# 87| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 155 -# 87| getSpec(1): [OtherAvailabilitySpec] * +# 87| getSpec(0): [AvailabilitySpec] macOS 155 +# 87| getSpec(1): [AvailabilitySpec] * # 87| getThen(): [BraceStmt] { ... } # 88| getElement(0): [CallExpr] call to print(_:separator:terminator:) # 88| getFunction(): [DeclRefExpr] print(_:separator:terminator:) @@ -7579,7 +7582,7 @@ statements.swift: # 91| getCondition(): [StmtCondition] StmtCondition # 91| getElement(0): [ConditionElement] #unavailable # 91| getAvailability(): [AvailabilityInfo] #unavailable -# 91| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 42 +# 91| getSpec(0): [AvailabilitySpec] macOS 42 # 91| getThen(): [BraceStmt] { ... } # 92| getElement(0): [CallExpr] call to print(_:separator:terminator:) # 92| getFunction(): [DeclRefExpr] print(_:separator:terminator:) diff --git a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected index 06d3ffbbc11..8fc8c7808b1 100644 --- a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -124,14 +124,14 @@ | cfg.swift:40:11:40:11 | "..." | cfg.swift:40:11:40:11 | (Any) ... | | | cfg.swift:40:11:40:11 | (Any) ... | cfg.swift:40:11:40:11 | [...] | | | cfg.swift:40:11:40:11 | OpaqueValueExpr | cfg.swift:40:12:40:12 | .appendLiteral(_:) | | -| cfg.swift:40:11:40:11 | Unknown error | cfg.swift:40:12:40:11 | call to appendLiteral(_:) | | +| cfg.swift:40:11:40:11 | Unknown error | cfg.swift:40:12:40:12 | call to appendLiteral(_:) | | | cfg.swift:40:11:40:11 | [...] | cfg.swift:40:10:40:10 | default separator | | | cfg.swift:40:11:40:11 | [...] | cfg.swift:40:11:40:11 | [...] | | | cfg.swift:40:11:40:34 | TapExpr | cfg.swift:40:11:40:11 | "..." | | -| cfg.swift:40:12:40:11 | call to appendLiteral(_:) | cfg.swift:40:27:40:27 | .appendInterpolation(_:) | | | cfg.swift:40:12:40:12 | $interpolation | cfg.swift:40:12:40:12 | &... | | | cfg.swift:40:12:40:12 | &... | cfg.swift:40:11:40:11 | Unknown error | | | cfg.swift:40:12:40:12 | .appendLiteral(_:) | cfg.swift:40:12:40:12 | $interpolation | | +| cfg.swift:40:12:40:12 | call to appendLiteral(_:) | cfg.swift:40:27:40:27 | .appendInterpolation(_:) | | | cfg.swift:40:27:40:27 | $interpolation | cfg.swift:40:27:40:27 | &... | | | cfg.swift:40:27:40:27 | &... | cfg.swift:40:28:40:28 | error | | | cfg.swift:40:27:40:27 | .appendInterpolation(_:) | cfg.swift:40:27:40:27 | $interpolation | | @@ -472,10 +472,10 @@ | cfg.swift:138:3:138:22 | for ... in ... { ... } | cfg.swift:140:3:148:3 | switch x { ... } | empty | | cfg.swift:138:7:138:7 | _ | cfg.swift:138:19:138:22 | { ... } | match | | cfg.swift:138:12:138:12 | 0 | cfg.swift:138:16:138:16 | 10 | | -| cfg.swift:138:12:138:12 | $generator | cfg.swift:138:12:138:16 | .makeIterator() | match | -| cfg.swift:138:12:138:16 | ... ....(_:_:) ... | cfg.swift:138:12:138:16 | call to makeIterator() | | -| cfg.swift:138:12:138:16 | .makeIterator() | cfg.swift:138:13:138:13 | ....(_:_:) | | -| cfg.swift:138:12:138:16 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:138:12:138:12 | $generator | cfg.swift:138:12:138:12 | .makeIterator() | match | +| cfg.swift:138:12:138:12 | .makeIterator() | cfg.swift:138:13:138:13 | ....(_:_:) | | +| cfg.swift:138:12:138:12 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:138:12:138:16 | ... ....(_:_:) ... | cfg.swift:138:12:138:12 | call to makeIterator() | | | cfg.swift:138:13:138:13 | ....(_:_:) | cfg.swift:138:13:138:13 | Int.Type | | | cfg.swift:138:13:138:13 | Int.Type | cfg.swift:138:12:138:12 | 0 | | | cfg.swift:138:16:138:16 | 10 | cfg.swift:138:12:138:16 | ... ....(_:_:) ... | | @@ -896,14 +896,14 @@ | cfg.swift:262:25:262:29 | x | cfg.swift:262:34:262:38 | y | | | cfg.swift:262:34:262:38 | y | cfg.swift:263:10:263:10 | OpaqueValueExpr | | | cfg.swift:263:3:263:10 | return ... | cfg.swift:262:1:264:1 | exit interpolatedString(x:y:) (normal) | return | -| cfg.swift:263:10:263:10 | | cfg.swift:263:11:263:10 | call to appendLiteral(_:) | | +| cfg.swift:263:10:263:10 | | cfg.swift:263:11:263:11 | call to appendLiteral(_:) | | | cfg.swift:263:10:263:10 | "..." | cfg.swift:263:3:263:10 | return ... | | | cfg.swift:263:10:263:10 | OpaqueValueExpr | cfg.swift:263:11:263:11 | .appendLiteral(_:) | | | cfg.swift:263:10:263:79 | TapExpr | cfg.swift:263:10:263:10 | "..." | | -| cfg.swift:263:11:263:10 | call to appendLiteral(_:) | cfg.swift:263:12:263:12 | .appendInterpolation(_:) | | | cfg.swift:263:11:263:11 | $interpolation | cfg.swift:263:11:263:11 | &... | | | cfg.swift:263:11:263:11 | &... | cfg.swift:263:10:263:10 | | | | cfg.swift:263:11:263:11 | .appendLiteral(_:) | cfg.swift:263:11:263:11 | $interpolation | | +| cfg.swift:263:11:263:11 | call to appendLiteral(_:) | cfg.swift:263:12:263:12 | .appendInterpolation(_:) | | | cfg.swift:263:12:263:12 | $interpolation | cfg.swift:263:12:263:12 | &... | | | cfg.swift:263:12:263:12 | &... | cfg.swift:263:13:263:13 | x | | | cfg.swift:263:12:263:12 | .appendInterpolation(_:) | cfg.swift:263:12:263:12 | $interpolation | | @@ -2002,12 +2002,13 @@ | cfg.swift:523:78:531:5 | exit { ... } (normal) | cfg.swift:523:78:531:5 | exit { ... } | | | cfg.swift:523:78:531:5 | { ... } | cfg.swift:523:18:531:6 | call to AsyncStream.init(_:bufferingPolicy:_:) | | | cfg.swift:523:78:531:5 | { ... } | cfg.swift:524:9:524:9 | continuation | | -| cfg.swift:524:9:524:9 | continuation | cfg.swift:525:13:525:18 | .detached(priority:operation:) | | -| cfg.swift:525:13:525:13 | Task<(), Never>.Type | cfg.swift:525:27:525:27 | default priority | | -| cfg.swift:525:13:525:18 | .detached(priority:operation:) | cfg.swift:525:13:525:13 | Task<(), Never>.Type | | -| cfg.swift:525:13:530:13 | call to detached(priority:operation:) | cfg.swift:523:78:531:5 | exit { ... } (normal) | | +| cfg.swift:524:9:524:9 | continuation | cfg.swift:525:13:525:18 | .detached(name:priority:operation:) | | +| cfg.swift:525:13:525:13 | Task<(), Never>.Type | cfg.swift:525:27:525:27 | default name | | +| cfg.swift:525:13:525:18 | .detached(name:priority:operation:) | cfg.swift:525:13:525:13 | Task<(), Never>.Type | | +| cfg.swift:525:13:530:13 | call to detached(name:priority:operation:) | cfg.swift:523:78:531:5 | exit { ... } (normal) | | +| cfg.swift:525:27:525:27 | default name | cfg.swift:525:27:525:27 | default priority | | | cfg.swift:525:27:525:27 | default priority | cfg.swift:525:27:530:13 | { ... } | | -| cfg.swift:525:27:530:13 | (@isolated(any) () async -> ()) ... | cfg.swift:525:13:530:13 | call to detached(priority:operation:) | | +| cfg.swift:525:27:530:13 | (@isolated(any) () async -> ()) ... | cfg.swift:525:13:530:13 | call to detached(name:priority:operation:) | | | cfg.swift:525:27:530:13 | enter { ... } | cfg.swift:525:27:530:13 | { ... } | | | cfg.swift:525:27:530:13 | exit { ... } (normal) | cfg.swift:525:27:530:13 | exit { ... } | | | cfg.swift:525:27:530:13 | { ... } | cfg.swift:525:27:530:13 | (@isolated(any) () async -> ()) ... | | @@ -2020,10 +2021,10 @@ | cfg.swift:526:17:528:17 | for ... in ... { ... } | cfg.swift:529:17:529:30 | .finish() | empty | | cfg.swift:526:21:526:21 | i | cfg.swift:527:21:527:34 | .yield(_:) | match | | cfg.swift:526:26:526:26 | 1 | cfg.swift:526:30:526:30 | 100 | | -| cfg.swift:526:26:526:26 | $i$generator | cfg.swift:526:26:526:30 | .makeIterator() | match | -| cfg.swift:526:26:526:30 | ... ....(_:_:) ... | cfg.swift:526:26:526:30 | call to makeIterator() | | -| cfg.swift:526:26:526:30 | .makeIterator() | cfg.swift:526:27:526:27 | ....(_:_:) | | -| cfg.swift:526:26:526:30 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:526:26:526:26 | $i$generator | cfg.swift:526:26:526:26 | .makeIterator() | match | +| cfg.swift:526:26:526:26 | .makeIterator() | cfg.swift:526:27:526:27 | ....(_:_:) | | +| cfg.swift:526:26:526:26 | call to makeIterator() | file://:0:0:0:0 | var ... = ... | | +| cfg.swift:526:26:526:30 | ... ....(_:_:) ... | cfg.swift:526:26:526:26 | call to makeIterator() | | | cfg.swift:526:27:526:27 | ....(_:_:) | cfg.swift:526:27:526:27 | Int.Type | | | cfg.swift:526:27:526:27 | Int.Type | cfg.swift:526:26:526:26 | 1 | | | cfg.swift:526:30:526:30 | 100 | cfg.swift:526:26:526:30 | ... ....(_:_:) ... | | diff --git a/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected b/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected index 7ab18dcf818..d3a762848c1 100644 --- a/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected +++ b/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected @@ -150,8 +150,8 @@ edges | test2.swift:84:9:84:15 | (...) [Tuple element at index 1] | test2.swift:84:14:84:14 | v | provenance | | | test2.swift:84:14:84:14 | v | test2.swift:86:19:86:19 | v | provenance | | | test2.swift:84:20:84:20 | a1 [Collection element] | test2.swift:84:20:84:34 | call to enumerated() [Collection element, Tuple element at index 1] | provenance | | -| test2.swift:84:20:84:34 | call to enumerated() [Collection element, Tuple element at index 1] | test2.swift:84:20:84:34 | call to makeIterator() [Collection element, Tuple element at index 1] | provenance | | -| test2.swift:84:20:84:34 | call to makeIterator() [Collection element, Tuple element at index 1] | test2.swift:84:5:84:5 | $generator [Collection element, Tuple element at index 1] | provenance | | +| test2.swift:84:20:84:20 | call to makeIterator() [Collection element, Tuple element at index 1] | test2.swift:84:5:84:5 | $generator [Collection element, Tuple element at index 1] | provenance | | +| test2.swift:84:20:84:34 | call to enumerated() [Collection element, Tuple element at index 1] | test2.swift:84:20:84:20 | call to makeIterator() [Collection element, Tuple element at index 1] | provenance | | | test2.swift:93:5:93:5 | [post] a2 [Collection element] | test2.swift:95:14:95:14 | a2 [Collection element] | provenance | | | test2.swift:93:5:93:5 | [post] a2 [Collection element] | test2.swift:99:19:99:19 | a2 [Collection element] | provenance | | | test2.swift:93:5:93:5 | [post] a2 [Collection element] | test2.swift:101:20:101:20 | a2 [Collection element] | provenance | | @@ -167,8 +167,8 @@ edges | test2.swift:101:9:101:15 | (...) [Tuple element at index 1] | test2.swift:101:14:101:14 | v | provenance | | | test2.swift:101:14:101:14 | v | test2.swift:103:19:103:19 | v | provenance | | | test2.swift:101:20:101:20 | a2 [Collection element] | test2.swift:101:20:101:34 | call to enumerated() [Collection element, Tuple element at index 1] | provenance | | -| test2.swift:101:20:101:34 | call to enumerated() [Collection element, Tuple element at index 1] | test2.swift:101:20:101:34 | call to makeIterator() [Collection element, Tuple element at index 1] | provenance | | -| test2.swift:101:20:101:34 | call to makeIterator() [Collection element, Tuple element at index 1] | test2.swift:101:5:101:5 | $generator [Collection element, Tuple element at index 1] | provenance | | +| test2.swift:101:20:101:20 | call to makeIterator() [Collection element, Tuple element at index 1] | test2.swift:101:5:101:5 | $generator [Collection element, Tuple element at index 1] | provenance | | +| test2.swift:101:20:101:34 | call to enumerated() [Collection element, Tuple element at index 1] | test2.swift:101:20:101:20 | call to makeIterator() [Collection element, Tuple element at index 1] | 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 | | @@ -940,8 +940,8 @@ nodes | test2.swift:84:9:84:15 | (...) [Tuple element at index 1] | semmle.label | (...) [Tuple element at index 1] | | test2.swift:84:14:84:14 | v | semmle.label | v | | test2.swift:84:20:84:20 | a1 [Collection element] | semmle.label | a1 [Collection element] | +| test2.swift:84:20:84:20 | call to makeIterator() [Collection element, Tuple element at index 1] | semmle.label | call to makeIterator() [Collection element, Tuple element at index 1] | | test2.swift:84:20:84:34 | call to enumerated() [Collection element, Tuple element at index 1] | semmle.label | call to enumerated() [Collection element, Tuple element at index 1] | -| test2.swift:84:20:84:34 | call to makeIterator() [Collection element, Tuple element at index 1] | semmle.label | call to makeIterator() [Collection element, Tuple element at index 1] | | test2.swift:86:19:86:19 | v | semmle.label | v | | test2.swift:93:5:93:5 | [post] a2 [Collection element] | semmle.label | [post] a2 [Collection element] | | test2.swift:93:13:93:29 | call to source(_:) | semmle.label | call to source(_:) | @@ -958,8 +958,8 @@ nodes | test2.swift:101:9:101:15 | (...) [Tuple element at index 1] | semmle.label | (...) [Tuple element at index 1] | | test2.swift:101:14:101:14 | v | semmle.label | v | | test2.swift:101:20:101:20 | a2 [Collection element] | semmle.label | a2 [Collection element] | +| test2.swift:101:20:101:20 | call to makeIterator() [Collection element, Tuple element at index 1] | semmle.label | call to makeIterator() [Collection element, Tuple element at index 1] | | test2.swift:101:20:101:34 | call to enumerated() [Collection element, Tuple element at index 1] | semmle.label | call to enumerated() [Collection element, Tuple element at index 1] | -| test2.swift:101:20:101:34 | call to makeIterator() [Collection element, Tuple element at index 1] | semmle.label | call to makeIterator() [Collection element, Tuple element at index 1] | | test2.swift:103:19:103:19 | v | semmle.label | v | | test.swift:6:19:6:26 | call to source() | semmle.label | call to source() | | test.swift:7:15:7:15 | t1 | semmle.label | t1 | diff --git a/swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected b/swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected index 2e1c6b04fd9..ca440ca10fe 100644 --- a/swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected +++ b/swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected @@ -37,9 +37,9 @@ | test2.swift:18:16:18:16 | SSA def($key$generator) | test2.swift:18:5:18:5 | $key$generator | | test2.swift:18:16:18:16 | [post] d1 | test2.swift:20:19:20:19 | d1 | | test2.swift:18:16:18:16 | [post] d1 | test2.swift:22:18:22:18 | d1 | +| test2.swift:18:16:18:16 | call to makeIterator() | test2.swift:18:16:18:16 | $key$generator | | test2.swift:18:16:18:16 | d1 | test2.swift:20:19:20:19 | d1 | | test2.swift:18:16:18:16 | d1 | test2.swift:22:18:22:18 | d1 | -| test2.swift:18:16:18:19 | call to makeIterator() | test2.swift:18:16:18:16 | $key$generator | | test2.swift:19:19:19:19 | [post] key | test2.swift:20:22:20:22 | key | | test2.swift:19:19:19:19 | key | test2.swift:20:22:20:22 | key | | test2.swift:20:19:20:19 | [post] d1 | test2.swift:20:19:20:19 | d1 | @@ -55,8 +55,8 @@ | test2.swift:22:18:22:18 | $value$generator | test2.swift:22:18:22:18 | SSA def($value$generator) | | test2.swift:22:18:22:18 | SSA def($value$generator) | test2.swift:22:5:22:5 | $value$generator | | test2.swift:22:18:22:18 | [post] d1 | test2.swift:25:25:25:25 | d1 | +| test2.swift:22:18:22:18 | call to makeIterator() | test2.swift:22:18:22:18 | $value$generator | | test2.swift:22:18:22:18 | d1 | test2.swift:25:25:25:25 | d1 | -| test2.swift:22:18:22:21 | call to makeIterator() | test2.swift:22:18:22:18 | $value$generator | | test2.swift:25:5:25:5 | $generator | test2.swift:25:5:25:5 | &... | | test2.swift:25:5:25:5 | &... | test2.swift:25:5:25:5 | $generator | | test2.swift:25:5:25:5 | [post] $generator | test2.swift:25:5:25:5 | &... | @@ -131,9 +131,9 @@ | test2.swift:62:16:62:16 | SSA def($key$generator) | test2.swift:62:5:62:5 | $key$generator | | test2.swift:62:16:62:16 | [post] d4 | test2.swift:64:19:64:19 | d4 | | test2.swift:62:16:62:16 | [post] d4 | test2.swift:66:18:66:18 | d4 | +| test2.swift:62:16:62:16 | call to makeIterator() | test2.swift:62:16:62:16 | $key$generator | | test2.swift:62:16:62:16 | d4 | test2.swift:64:19:64:19 | d4 | | test2.swift:62:16:62:16 | d4 | test2.swift:66:18:66:18 | d4 | -| test2.swift:62:16:62:19 | call to makeIterator() | test2.swift:62:16:62:16 | $key$generator | | test2.swift:63:19:63:19 | [post] key | test2.swift:64:22:64:22 | key | | test2.swift:63:19:63:19 | key | test2.swift:64:22:64:22 | key | | test2.swift:64:19:64:19 | &... | test2.swift:64:19:64:19 | d4 | @@ -149,8 +149,8 @@ | test2.swift:66:18:66:18 | $value$generator | test2.swift:66:18:66:18 | SSA def($value$generator) | | test2.swift:66:18:66:18 | SSA def($value$generator) | test2.swift:66:5:66:5 | $value$generator | | test2.swift:66:18:66:18 | [post] d4 | test2.swift:69:25:69:25 | d4 | +| test2.swift:66:18:66:18 | call to makeIterator() | test2.swift:66:18:66:18 | $value$generator | | test2.swift:66:18:66:18 | d4 | test2.swift:69:25:69:25 | d4 | -| test2.swift:66:18:66:21 | call to makeIterator() | test2.swift:66:18:66:18 | $value$generator | | test2.swift:69:5:69:5 | $generator | test2.swift:69:5:69:5 | &... | | test2.swift:69:5:69:5 | &... | test2.swift:69:5:69:5 | $generator | | test2.swift:69:5:69:5 | [post] $generator | test2.swift:69:5:69:5 | &... | @@ -181,7 +181,7 @@ | test2.swift:81:9:81:9 | ix | test2.swift:81:9:81:9 | SSA def(ix) | | test2.swift:81:15:81:15 | $ix$generator | test2.swift:81:15:81:15 | SSA def($ix$generator) | | test2.swift:81:15:81:15 | SSA def($ix$generator) | test2.swift:81:5:81:5 | $ix$generator | -| test2.swift:81:15:81:24 | call to makeIterator() | test2.swift:81:15:81:15 | $ix$generator | +| test2.swift:81:15:81:15 | call to makeIterator() | test2.swift:81:15:81:15 | $ix$generator | | test2.swift:81:21:81:21 | [post] a1 | test2.swift:82:19:82:19 | a1 | | test2.swift:81:21:81:21 | [post] a1 | test2.swift:84:20:84:20 | a1 | | test2.swift:81:21:81:21 | a1 | test2.swift:82:19:82:19 | a1 | @@ -199,7 +199,7 @@ | test2.swift:84:14:84:14 | v | test2.swift:84:14:84:14 | SSA def(v) | | test2.swift:84:20:84:20 | $generator | test2.swift:84:20:84:20 | SSA def($generator) | | test2.swift:84:20:84:20 | SSA def($generator) | test2.swift:84:5:84:5 | $generator | -| test2.swift:84:20:84:34 | call to makeIterator() | test2.swift:84:20:84:20 | $generator | +| test2.swift:84:20:84:20 | call to makeIterator() | test2.swift:84:20:84:20 | $generator | | test2.swift:91:9:91:9 | SSA def(a2) | test2.swift:93:5:93:5 | a2 | | test2.swift:91:9:91:9 | a2 | test2.swift:91:9:91:9 | SSA def(a2) | | test2.swift:91:14:91:33 | [...] | test2.swift:91:9:91:9 | a2 | @@ -223,7 +223,7 @@ | test2.swift:98:9:98:9 | ix | test2.swift:98:9:98:9 | SSA def(ix) | | test2.swift:98:15:98:15 | $ix$generator | test2.swift:98:15:98:15 | SSA def($ix$generator) | | test2.swift:98:15:98:15 | SSA def($ix$generator) | test2.swift:98:5:98:5 | $ix$generator | -| test2.swift:98:15:98:24 | call to makeIterator() | test2.swift:98:15:98:15 | $ix$generator | +| test2.swift:98:15:98:15 | call to makeIterator() | test2.swift:98:15:98:15 | $ix$generator | | test2.swift:98:21:98:21 | [post] a2 | test2.swift:99:19:99:19 | a2 | | test2.swift:98:21:98:21 | [post] a2 | test2.swift:101:20:101:20 | a2 | | test2.swift:98:21:98:21 | a2 | test2.swift:99:19:99:19 | a2 | @@ -241,7 +241,7 @@ | test2.swift:101:14:101:14 | v | test2.swift:101:14:101:14 | SSA def(v) | | test2.swift:101:20:101:20 | $generator | test2.swift:101:20:101:20 | SSA def($generator) | | test2.swift:101:20:101:20 | SSA def($generator) | test2.swift:101:5:101:5 | $generator | -| test2.swift:101:20:101:34 | call to makeIterator() | test2.swift:101:20:101:20 | $generator | +| test2.swift:101:20:101:20 | call to makeIterator() | test2.swift:101:20:101:20 | $generator | | test.swift:5:9:5:13 | ... as ... | test.swift:5:9:5:9 | t2 | | test.swift:6:9:6:9 | SSA def(t1) | test.swift:7:15:7:15 | t1 | | test.swift:6:9:6:9 | t1 | test.swift:6:9:6:9 | SSA def(t1) | @@ -1388,7 +1388,7 @@ | test.swift:891:17:891:17 | [post] $generator | test.swift:891:17:891:17 | &... | | test.swift:891:26:891:26 | $generator | test.swift:891:26:891:26 | SSA def($generator) | | test.swift:891:26:891:26 | SSA def($generator) | test.swift:891:17:891:17 | $generator | -| test.swift:891:26:891:30 | call to makeIterator() | test.swift:891:26:891:26 | $generator | +| test.swift:891:26:891:26 | call to makeIterator() | test.swift:891:26:891:26 | $generator | | test.swift:892:21:892:21 | this | test.swift:891:17:891:17 | SSA phi read(this) | | test.swift:892:21:892:21 | this | test.swift:891:17:891:17 | SSA phi read(this) | | test.swift:898:5:898:5 | $i$generator | test.swift:898:5:898:5 | &... | diff --git a/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected b/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected index f0d85be52b6..04aa84a80f6 100644 --- a/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected +++ b/swift/ql/test/library-tests/elements/expr/methodlookup/PrintAst.expected @@ -151,14 +151,16 @@ methodlookup.swift: # 30| getMethodRef(): [DeclRefExpr] staticMethod() # 33| [TopLevelCodeDecl] { ... } # 33| getBody(): [BraceStmt] { ... } -# 33| getElement(0): [CallExpr] call to Task.init(priority:operation:) -# 33| getFunction(): [MethodLookupExpr] Task.init(priority:operation:) +# 33| getElement(0): [CallExpr] call to Task.init(name:priority:operation:) +# 33| getFunction(): [MethodLookupExpr] Task.init(name:priority:operation:) # 33| getBase(): [TypeExpr] Task<(), Never>.Type # 33| getTypeRepr(): [TypeRepr] Task<(), Never> -# 33| getMethodRef(): [DeclRefExpr] Task.init(priority:operation:) -# 33| getArgument(0): [Argument] priority: default priority +# 33| getMethodRef(): [DeclRefExpr] Task.init(name:priority:operation:) +# 33| getArgument(0): [Argument] name: default name +# 33| getExpr(): [DefaultArgumentExpr] default name +# 33| getArgument(1): [Argument] priority: default priority # 33| getExpr(): [DefaultArgumentExpr] default priority -# 33| getArgument(1): [Argument] operation: { ... } +# 33| getArgument(2): [Argument] operation: { ... } # 33| getExpr(): [ExplicitClosureExpr] { ... } # 33| getBody(): [BraceStmt] { ... } # 34| getVariable(0): [ConcreteVarDecl] bar @@ -189,18 +191,21 @@ methodlookup.swift: # 40| getMethodRef(): [DeclRefExpr] staticMethod() # 33| getExpr().getFullyConverted(): [FunctionConversionExpr] (@isolated(any) () async -> ()) ... # 33| [NilLiteralExpr] nil +# 33| [NilLiteralExpr] nil # 38| [Comment] // Bar.instanceMethod(bar2)() // error: actor-isolated instance method 'instanceMethod()' can not be referenced from a non-isolated context # 38| # 43| [TopLevelCodeDecl] { ... } # 43| getBody(): [BraceStmt] { ... } -# 43| getElement(0): [CallExpr] call to Task.init(priority:operation:) -# 43| getFunction(): [MethodLookupExpr] Task.init(priority:operation:) +# 43| getElement(0): [CallExpr] call to Task.init(name:priority:operation:) +# 43| getFunction(): [MethodLookupExpr] Task.init(name:priority:operation:) # 43| getBase(): [TypeExpr] Task<(), Never>.Type # 43| getTypeRepr(): [TypeRepr] Task<(), Never> -# 43| getMethodRef(): [DeclRefExpr] Task.init(priority:operation:) -# 43| getArgument(0): [Argument] priority: default priority +# 43| getMethodRef(): [DeclRefExpr] Task.init(name:priority:operation:) +# 43| getArgument(0): [Argument] name: default name +# 43| getExpr(): [DefaultArgumentExpr] default name +# 43| getArgument(1): [Argument] priority: default priority # 43| getExpr(): [DefaultArgumentExpr] default priority -# 43| getArgument(1): [Argument] operation: { ... } +# 43| getArgument(2): [Argument] operation: { ... } # 43| getExpr(): [ExplicitClosureExpr] { ... } # 43| getBody(): [BraceStmt] { ... } # 44| getVariable(0): [ConcreteVarDecl] baz @@ -265,6 +270,7 @@ methodlookup.swift: # 51| getElement(5).getFullyConverted(): [AwaitExpr] await ... # 43| getExpr().getFullyConverted(): [FunctionConversionExpr] (@isolated(any) () async -> ()) ... # 43| [NilLiteralExpr] nil +# 43| [NilLiteralExpr] nil # 47| [Comment] // DotSyntaxCallExpr # 47| # 48| [Comment] // DotSyntaxBaseIgnoredExpr diff --git a/swift/ql/test/library-tests/elements/expr/methodlookup/getStaticTarget.expected b/swift/ql/test/library-tests/elements/expr/methodlookup/getStaticTarget.expected index bdab840b30a..2834b35799a 100644 --- a/swift/ql/test/library-tests/elements/expr/methodlookup/getStaticTarget.expected +++ b/swift/ql/test/library-tests/elements/expr/methodlookup/getStaticTarget.expected @@ -10,12 +10,12 @@ noStaticTarget | methodlookup.swift:27:9:27:9 | call to instanceMethod() | true | | methodlookup.swift:29:5:29:21 | call to classMethod() | true | | methodlookup.swift:30:5:30:22 | call to staticMethod() | true | -| methodlookup.swift:33:1:41:1 | call to Task.init(priority:operation:) | true | +| methodlookup.swift:33:1:41:1 | call to Task.init(name:priority:operation:) | true | | methodlookup.swift:34:15:34:19 | call to Bar.init() | true | | methodlookup.swift:35:9:35:18 | call to Bar.init() | true | | methodlookup.swift:37:11:37:30 | call to instanceMethod() | true | | methodlookup.swift:40:5:40:22 | call to staticMethod() | true | -| methodlookup.swift:43:1:52:1 | call to Task.init(priority:operation:) | true | +| methodlookup.swift:43:1:52:1 | call to Task.init(name:priority:operation:) | true | | methodlookup.swift:44:21:44:25 | call to Baz.init() | true | | methodlookup.swift:45:15:45:24 | call to Baz.init() | true | | methodlookup.swift:47:11:47:30 | call to instanceMethod() | true | diff --git a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected index a52075ab00e..5f985ac0bbc 100644 --- a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected +++ b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected @@ -1,4 +1,4 @@ -| nominaltype.swift:84:6:84:6 | i | Int | getABaseType:BitwiseCopyable, getABaseType:CVarArg, getABaseType:CodingKeyRepresentable, getABaseType:CustomReflectable, getABaseType:Decodable, getABaseType:Encodable, getABaseType:Equatable, getABaseType:FixedWidthInteger, getABaseType:Hashable, getABaseType:MirrorPath, getABaseType:SIMDScalar, getABaseType:Sendable, getABaseType:SignedInteger, getABaseType:_CustomPlaygroundQuickLookable, getABaseType:_ExpressibleByBuiltinIntegerLiteral, getABaseType:_HasCustomAnyHashableRepresentation, getCanonicalType:Int, getFullName:Int, getName:Int, getUnderlyingType:Int | +| nominaltype.swift:84:6:84:6 | i | Int | getABaseType:BitwiseCopyable, getABaseType:CVarArg, getABaseType:CodingKeyRepresentable, getABaseType:CustomReflectable, getABaseType:Decodable, getABaseType:Encodable, getABaseType:Equatable, getABaseType:FixedWidthInteger, getABaseType:Hashable, getABaseType:MirrorPath, getABaseType:SIMDScalar, getABaseType:Sendable, getABaseType:SendableMetatype, getABaseType:SignedInteger, getABaseType:_CustomPlaygroundQuickLookable, getABaseType:_ExpressibleByBuiltinIntegerLiteral, getABaseType:_HasCustomAnyHashableRepresentation, getCanonicalType:Int, getFullName:Int, getName:Int, getUnderlyingType:Int | | nominaltype.swift:85:6:85:6 | j | Any? | getCanonicalType:Optional, getFullName:Any?, getName:Any?, getUnderlyingType:Any? | | nominaltype.swift:86:6:86:6 | a | A | getCanonicalType:A, getFullName:A, getName:A, getUnderlyingType:A | | nominaltype.swift:87:6:87:6 | a_alias | A_alias | getAliasedType:A, getCanonicalType:A, getFullName:A_alias, getName:A_alias, getUnderlyingType:A | diff --git a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltypedecl.expected b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltypedecl.expected index d9c0b1a0994..23bcc3f302c 100644 --- a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltypedecl.expected +++ b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltypedecl.expected @@ -1,4 +1,4 @@ -| nominaltype.swift:84:6:84:6 | i | Int | getABaseType:BitwiseCopyable, getABaseType:CVarArg, getABaseType:CodingKeyRepresentable, getABaseType:CustomReflectable, getABaseType:Decodable, getABaseType:Encodable, getABaseType:Equatable, getABaseType:FixedWidthInteger, getABaseType:Hashable, getABaseType:MirrorPath, getABaseType:SIMDScalar, getABaseType:Sendable, getABaseType:SignedInteger, getABaseType:_CustomPlaygroundQuickLookable, getABaseType:_ExpressibleByBuiltinIntegerLiteral, getABaseType:_HasCustomAnyHashableRepresentation, getABaseTypeDecl:BitwiseCopyable, getABaseTypeDecl:CVarArg, getABaseTypeDecl:CodingKeyRepresentable, getABaseTypeDecl:CustomReflectable, getABaseTypeDecl:Decodable, getABaseTypeDecl:Encodable, getABaseTypeDecl:Equatable, getABaseTypeDecl:FixedWidthInteger, getABaseTypeDecl:Hashable, getABaseTypeDecl:MirrorPath, getABaseTypeDecl:SIMDScalar, getABaseTypeDecl:Sendable, getABaseTypeDecl:SignedInteger, getABaseTypeDecl:_CustomPlaygroundQuickLookable, getABaseTypeDecl:_ExpressibleByBuiltinIntegerLiteral, getABaseTypeDecl:_HasCustomAnyHashableRepresentation, getFullName:Int, getName:Int | +| nominaltype.swift:84:6:84:6 | i | Int | getABaseType:BitwiseCopyable, getABaseType:CVarArg, getABaseType:CodingKeyRepresentable, getABaseType:CustomReflectable, getABaseType:Decodable, getABaseType:Encodable, getABaseType:Equatable, getABaseType:FixedWidthInteger, getABaseType:Hashable, getABaseType:MirrorPath, getABaseType:SIMDScalar, getABaseType:Sendable, getABaseType:SendableMetatype, getABaseType:SignedInteger, getABaseType:_CustomPlaygroundQuickLookable, getABaseType:_ExpressibleByBuiltinIntegerLiteral, getABaseType:_HasCustomAnyHashableRepresentation, getABaseTypeDecl:BitwiseCopyable, getABaseTypeDecl:CVarArg, getABaseTypeDecl:CodingKeyRepresentable, getABaseTypeDecl:CustomReflectable, getABaseTypeDecl:Decodable, getABaseTypeDecl:Encodable, getABaseTypeDecl:Equatable, getABaseTypeDecl:FixedWidthInteger, getABaseTypeDecl:Hashable, getABaseTypeDecl:MirrorPath, getABaseTypeDecl:SIMDScalar, getABaseTypeDecl:Sendable, getABaseTypeDecl:SendableMetatype, getABaseTypeDecl:SignedInteger, getABaseTypeDecl:_CustomPlaygroundQuickLookable, getABaseTypeDecl:_ExpressibleByBuiltinIntegerLiteral, getABaseTypeDecl:_HasCustomAnyHashableRepresentation, getFullName:Int, getName:Int | | nominaltype.swift:86:6:86:6 | a | A | getFullName:A, getName:A | | nominaltype.swift:87:6:87:6 | a_alias | A_alias | getAliasedType:A, getFullName:A_alias, getName:A_alias | | nominaltype.swift:88:6:88:6 | a_optional_alias | A_optional_alias | getAliasedType:A?, getFullName:A_optional_alias, getName:A_optional_alias | diff --git a/swift/ql/test/query-tests/Diagnostics/SuccessfullyExtractedLines.expected b/swift/ql/test/query-tests/Diagnostics/SuccessfullyExtractedLines.expected index 3516ff5eb5d..beaf5bb6a1f 100644 --- a/swift/ql/test/query-tests/Diagnostics/SuccessfullyExtractedLines.expected +++ b/swift/ql/test/query-tests/Diagnostics/SuccessfullyExtractedLines.expected @@ -1 +1 @@ -| 287 | +| 299 | From b50ffe2e0cea2f0e02861a690fd4801ff93a4529 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 17 Sep 2025 11:28:36 +0200 Subject: [PATCH 301/965] Swift: Update `PoundDiagnosticDecl` test These elements are no longer present in the Swift 6.2 AST. --- .../decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected index aaa3b31e23e..060fc027d05 100644 --- a/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/PoundDiagnosticDecl/PoundDiagnosticDecl.expected @@ -1,4 +1,2 @@ instances -| diagnostics.swift:2:1:2:25 | #warning(...) | getModule: | file://:0:0:0:0 | diagnostics | getKind: | 2 | getMessage: | diagnostics.swift:2:10:2:10 | I'm a warning | -| diagnostics.swift:3:1:3:26 | #error(...) | getModule: | file://:0:0:0:0 | diagnostics | getKind: | 1 | getMessage: | diagnostics.swift:3:8:3:8 | And I'm an error | getMember From 192c9c38201c5215515fee14f0a4aa50f1580917 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 17 Sep 2025 11:33:35 +0200 Subject: [PATCH 302/965] Swift: Document that tests disabled with Swift 6.1 are still broken with 6.2 --- .../generated/decl/ParamDecl/param_decls.swift | 4 ++-- .../AppliedPropertyWrapperExpr/applied_property_wrapper.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/param_decls.swift b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/param_decls.swift index 42d2b4980fa..2fd7f23b64c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ParamDecl/param_decls.swift +++ b/swift/ql/test/extractor-tests/generated/decl/ParamDecl/param_decls.swift @@ -47,6 +47,6 @@ func closures() { func f2( @Wrapper p1: Int, @WrapperWithInit p2: Int, - // @WrapperWithProjected p3: Int, // Disabled causes crashes with Swift 6.1 - // @WrapperWithProjectedAndInit p4: Int // Disabled causes crashes with Swift 6.1 + // @WrapperWithProjected p3: Int, // Disabled causes crashes with Swift 6.1/6.2 + // @WrapperWithProjectedAndInit p4: Int // Disabled causes crashes with Swift 6.1/6.2 ) {} diff --git a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/applied_property_wrapper.swift b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/applied_property_wrapper.swift index a90ac69e1d4..e91e1c397c9 100644 --- a/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/applied_property_wrapper.swift +++ b/swift/ql/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/applied_property_wrapper.swift @@ -10,7 +10,7 @@ } func foo( - // @Wrapper x: Int // Disabled causes crashes with Swift 6.1 + // @Wrapper x: Int // Disabled causes crashes with Swift 6.1/6.2 ) {} // foo(x: 42) @@ -18,7 +18,7 @@ func foo( let closure = { ( - // @Wrapper y: Int // Disabled causes crashes with Swift 6.1 + // @Wrapper y: Int // Disabled causes crashes with Swift 6.1/6.2 ) in return } From 4d9827ff77592addf492d740083196a27ac619db Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 30 Sep 2025 14:26:35 +0200 Subject: [PATCH 303/965] Swift: Update expected integration test results --- .../integration-tests/posix/deduplication/BuiltinTypes.expected | 2 ++ 1 file changed, 2 insertions(+) diff --git a/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected index ab0d6f17ad5..0f0a0220445 100644 --- a/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected +++ b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected @@ -2,6 +2,8 @@ | Builtin.Executor | BuiltinExecutorType | | Builtin.FPIEEE32 | BuiltinFloatType | | Builtin.FPIEEE64 | BuiltinFloatType | +| Builtin.FixedArray<\u03c4_0_0, \u03c4_0_1> | BuiltinFixedArrayType | +| Builtin.FixedArray | BuiltinFixedArrayType | | Builtin.Int1 | BuiltinIntegerType | | Builtin.Int8 | BuiltinIntegerType | | Builtin.Int16 | BuiltinIntegerType | From 06d0d48416637f873fbcd39b82d1eb0436458712 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 25 Sep 2025 13:02:24 +0200 Subject: [PATCH 304/965] Swift: Work around assertion failures in mangler --- swift/extractor/SwiftExtractor.cpp | 2 +- .../infra/SwiftBodyEmissionStrategy.cpp | 3 +- .../infra/SwiftBodyEmissionStrategy.h | 8 +++- swift/extractor/mangler/SwiftMangler.cpp | 44 ++++++++++++++++--- swift/extractor/mangler/SwiftMangler.h | 4 +- 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/swift/extractor/SwiftExtractor.cpp b/swift/extractor/SwiftExtractor.cpp index 5d920373fbb..cdee01f446a 100644 --- a/swift/extractor/SwiftExtractor.cpp +++ b/swift/extractor/SwiftExtractor.cpp @@ -170,7 +170,7 @@ static std::unordered_set extractDeclarations( bodyEmissionStrategy); auto topLevelDecls = getTopLevelDecls(module, primaryFile, lazyDeclaration); for (auto decl : topLevelDecls) { - if (decl->isUnavailable()) { + if (decl->isUnavailable() && !llvm::isa(decl)) { continue; } visitor.extract(decl); diff --git a/swift/extractor/infra/SwiftBodyEmissionStrategy.cpp b/swift/extractor/infra/SwiftBodyEmissionStrategy.cpp index 7608379ac5f..71eebcbf6b0 100644 --- a/swift/extractor/infra/SwiftBodyEmissionStrategy.cpp +++ b/swift/extractor/infra/SwiftBodyEmissionStrategy.cpp @@ -12,8 +12,7 @@ using namespace codeql; // same module one by one. In this mode, we restrict emission only to the same file ignoring // all the other files. bool SwiftBodyEmissionStrategy::shouldEmitDeclBody(const swift::Decl& decl) { - auto module = decl.getModuleContext(); - if (module != ¤tModule) { + if (!currentTopLevelDecls.contains(&decl) && decl.getModuleContext() != ¤tModule) { return false; } if (currentLazyDeclaration && currentLazyDeclaration != &decl) { diff --git a/swift/extractor/infra/SwiftBodyEmissionStrategy.h b/swift/extractor/infra/SwiftBodyEmissionStrategy.h index 34eae944a55..b97600cc63c 100644 --- a/swift/extractor/infra/SwiftBodyEmissionStrategy.h +++ b/swift/extractor/infra/SwiftBodyEmissionStrategy.h @@ -12,13 +12,19 @@ class SwiftBodyEmissionStrategy { const swift::Decl* currentLazyDeclaration) : currentModule(currentModule), currentPrimarySourceFile(currentPrimarySourceFile), - currentLazyDeclaration(currentLazyDeclaration) {} + currentLazyDeclaration(currentLazyDeclaration) { + llvm::SmallVector decls; + currentModule.getTopLevelDecls(decls); + currentTopLevelDecls.insert(decls.begin(), decls.end()); + } + bool shouldEmitDeclBody(const swift::Decl& decl); private: swift::ModuleDecl& currentModule; swift::SourceFile* currentPrimarySourceFile; const swift::Decl* currentLazyDeclaration; + std::unordered_set currentTopLevelDecls; }; } // namespace codeql diff --git a/swift/extractor/mangler/SwiftMangler.cpp b/swift/extractor/mangler/SwiftMangler.cpp index 38f0683bd04..b44921853ba 100644 --- a/swift/extractor/mangler/SwiftMangler.cpp +++ b/swift/extractor/mangler/SwiftMangler.cpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include using namespace codeql; @@ -38,6 +40,8 @@ std::string_view getTypeKindStr(const swift::TypeBase* type) { } // namespace +std::unordered_map SwiftMangler::preloadedExtensionIndexes; + SwiftMangledName SwiftMangler::initMangled(const swift::TypeBase* type) { return {getTypeKindStr(type), '_'}; } @@ -109,32 +113,58 @@ unsigned SwiftMangler::getExtensionIndex(const swift::ExtensionDecl* decl, // indexes once for each encountered parent into the `preloadedExtensionIndexes` mapping. // Because we mangle declarations only once in a given trap/dispatcher context, we can safely // discard preloaded indexes on use - if (auto found = preloadedExtensionIndexes.extract(decl)) { - return found.mapped(); + if (auto found = SwiftMangler::preloadedExtensionIndexes.find(decl); + found != SwiftMangler::preloadedExtensionIndexes.end()) { + return found->second; } if (auto parentModule = llvm::dyn_cast(parent)) { llvm::SmallVector siblings; parentModule->getTopLevelDecls(siblings); indexExtensions(siblings); + if (auto clangModule = parentModule->findUnderlyingClangModule()) { + indexClangExtensions(clangModule, decl->getASTContext().getClangModuleLoader()); + } } else if (auto iterableParent = llvm::dyn_cast(parent)) { indexExtensions(iterableParent->getAllMembers()); } else { // TODO use a generic logging handle for Swift entities here, once it's available CODEQL_ASSERT(false, "non-local context must be module or iterable decl context"); } - auto found = preloadedExtensionIndexes.extract(decl); + auto found = SwiftMangler::preloadedExtensionIndexes.find(decl); // TODO use a generic logging handle for Swift entities here, once it's available - CODEQL_ASSERT(found, "extension not found within parent"); - return found.mapped(); + CODEQL_ASSERT(found != SwiftMangler::preloadedExtensionIndexes.end(), + "extension not found within parent"); + return found->second; } void SwiftMangler::indexExtensions(llvm::ArrayRef siblings) { auto index = 0u; for (auto sibling : siblings) { if (sibling->getKind() == swift::DeclKind::Extension) { - preloadedExtensionIndexes.emplace(sibling, index); + SwiftMangler::preloadedExtensionIndexes.emplace(sibling, index); + index += 2; + } + } +} + +void SwiftMangler::indexClangExtensions(const clang::Module* clangModule, + swift::ClangModuleLoader* moduleLoader) { + if (!moduleLoader) { + return; + } + + auto index = 1u; + for (const auto& submodule : clangModule->submodules()) { + if (auto* swiftSubmodule = moduleLoader->getWrapperForModule(submodule)) { + llvm::SmallVector children; + swiftSubmodule->getTopLevelDecls(children); + for (const auto child : children) { + if (child->getKind() == swift::DeclKind::Extension) { + SwiftMangler::preloadedExtensionIndexes.emplace(child, index); + index += 2; + } + } } - ++index; } } diff --git a/swift/extractor/mangler/SwiftMangler.h b/swift/extractor/mangler/SwiftMangler.h index 7ed7b7c761b..da93f3473f6 100644 --- a/swift/extractor/mangler/SwiftMangler.h +++ b/swift/extractor/mangler/SwiftMangler.h @@ -106,13 +106,15 @@ class SwiftMangler : private swift::TypeVisitor, SwiftMangledName visitPackExpansionType(const swift::PackExpansionType* type); private: - std::unordered_map preloadedExtensionIndexes; + static std::unordered_map preloadedExtensionIndexes; virtual SwiftMangledName fetch(const swift::Decl* decl) = 0; virtual SwiftMangledName fetch(const swift::TypeBase* type) = 0; SwiftMangledName fetch(swift::Type type) { return fetch(type.getPointer()); } void indexExtensions(llvm::ArrayRef siblings); + void indexClangExtensions(const clang::Module* clangModule, + swift::ClangModuleLoader* moduleLoader); unsigned int getExtensionIndex(const swift::ExtensionDecl* decl, const swift::Decl* parent); static SwiftMangledName initMangled(const swift::TypeBase* type); SwiftMangledName initMangled(const swift::Decl* decl); From 79fd35a4823a2e36f50fbc0b3ee8fc4b21688ed0 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 21 Oct 2025 13:02:41 +0200 Subject: [PATCH 305/965] Swift: Remove flags related to explict modules in the tracer config We have not found a good way to support these. --- swift/tools/tracing-config.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/swift/tools/tracing-config.lua b/swift/tools/tracing-config.lua index 15effc0140b..fdb0cfd16b6 100644 --- a/swift/tools/tracing-config.lua +++ b/swift/tools/tracing-config.lua @@ -53,6 +53,12 @@ function RegisterExtractorPack(id) strip_unsupported_arg(args, '-stack-check', 0) strip_unsupported_arg(args, '-experimental-skip-non-inlinable-function-bodies-without-types', 0) strip_unsupported_clang_arg(args, '-ivfsstatcache', 1) + -- The four args below are removed to workaround version mismatches due to recent versions + -- of Xcode defaulting to explicit modules: + strip_unsupported_arg(args, '-disable-implicit-swift-modules', 0) + strip_unsupported_clang_arg(args, '-fno-implicit-modules', 0) + strip_unsupported_clang_arg(args, '-fno-implicit-module-maps', 0) + strip_unsupported_arg(args, '-explicit-swift-module-map-file', 1) end -- xcodebuild does not always specify the -resource-dir in which case the compiler falls back From 284376147199f1a0aa1bf0644a9fb263a925b6f3 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 21 Oct 2025 16:29:57 +0200 Subject: [PATCH 306/965] Swift: Special case the `xcode-fails-spm-works` test results on macOS 26 macOS 26 comes with Xcode 26, which does not call the compiler on the file with the `#error` diagnostic directive. --- .../autobuilder/xcode-fails-spm-works/Files.macos_26.expected | 3 +++ .../autobuilder/xcode-fails-spm-works/test.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.macos_26.expected diff --git a/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.macos_26.expected b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.macos_26.expected new file mode 100644 index 00000000000..8a3be429106 --- /dev/null +++ b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.macos_26.expected @@ -0,0 +1,3 @@ +| Package.swift:0:0:0:0 | Package.swift | +| Sources/hello-world/hello_world.swift:0:0:0:0 | Sources/hello-world/hello_world.swift | +| file://:0:0:0:0 | | diff --git a/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py index 298fd2726d0..4beed91f233 100644 --- a/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py +++ b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py @@ -3,6 +3,7 @@ import pytest @runs_on.macos -@pytest.mark.ql_test("DB-CHECK", xfail=True) +@pytest.mark.ql_test("DB-CHECK", xfail=not runs_on.macos_26) +@pytest.mark.ql_test("*", expected=f"{'.macos_26' if runs_on.macos_26 else ''}.expected") def test(codeql, swift): codeql.database.create() From e415772688882750ffef3f113889f7cda189f930 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 22 Oct 2025 11:30:06 +0200 Subject: [PATCH 307/965] Swift: Add upgrade and downgrade scripts --- .../availability_specs.ql | 16 + .../key_path_components.ql | 57 + .../old.dbscheme | 2838 +++++++++++++++++ .../opened_archetype_types.ql | 7 + .../swift.dbscheme | 2832 ++++++++++++++++ .../upgrade.properties | 15 + swift/ql/.generated.list | 4 +- .../swift/generated/KeyPathComponent.qll | 1 - swift/ql/lib/codeql/swift/generated/Raw.qll | 1 - .../availability_specs.ql | 21 + .../existential_archetype_types.ql | 7 + .../key_path_components.ql | 13 + .../old.dbscheme | 2832 ++++++++++++++++ .../swift.dbscheme | 2838 +++++++++++++++++ .../upgrade.properties | 11 + swift/schema.py | 1 - 16 files changed, 11489 insertions(+), 5 deletions(-) create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/availability_specs.ql create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/opened_archetype_types.ql create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme create mode 100644 swift/downgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/availability_specs.ql create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/existential_archetype_types.ql create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/old.dbscheme create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/swift.dbscheme create mode 100644 swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/upgrade.properties diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/availability_specs.ql b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/availability_specs.ql new file mode 100644 index 00000000000..1d6c0296397 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/availability_specs.ql @@ -0,0 +1,16 @@ +class AvailabilitySpec extends @availability_spec { + string toString() { none() } +} + +query predicate new_other_availability_specs(AvailabilitySpec id) { + availability_specs(id) and + availability_spec_is_wildcard(id) +} + +query predicate new_platform_version_availability_specs( + AvailabilitySpec id, string platform, string version +) { + availability_specs(id) and + availability_spec_platforms(id, platform) and + availability_spec_versions(id, version) +} diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql new file mode 100644 index 00000000000..460825531d4 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql @@ -0,0 +1,57 @@ +class KeyPathComponent extends @key_path_component { + string toString() { none() } +} + +class Element extends @element { + string toString() { none() } +} + +class ArgumentOrNone extends @argument_or_none { + string toString() { none() } +} + +class TypeOrNone extends @type_or_none { + string toString() { none() } +} + +class ValueDeclOrNone extends @value_decl_or_none { + string toString() { none() } +} + +predicate isKeyPathComponentWithNewKind(KeyPathComponent id) { + key_path_components(id, 3, _) or key_path_components(id, 4, _) +} + +query predicate new_key_path_components(KeyPathComponent id, int kind, TypeOrNone component_type) { + exists(int old_kind | + key_path_components(id, old_kind, component_type) and + not isKeyPathComponentWithNewKind(id) and + if old_kind < 5 then kind = old_kind else kind = old_kind - 2 + ) +} + +query predicate new_key_path_component_subscript_arguments( + KeyPathComponent id, int index, ArgumentOrNone subscript_argument +) { + key_path_component_subscript_arguments(id, index, subscript_argument) and + not isKeyPathComponentWithNewKind(id) +} + +query predicate new_key_path_component_tuple_indices(KeyPathComponent id, int tuple_index) { + key_path_component_tuple_indices(id, tuple_index) and + not isKeyPathComponentWithNewKind(id) +} + +query predicate new_key_path_component_decl_refs(KeyPathComponent id, ValueDeclOrNone decl_ref) { + key_path_component_decl_refs(id, decl_ref) and + not isKeyPathComponentWithNewKind(id) +} + +query predicate new_unspecified_elements(Element id, string property, string error) { + unspecified_elements(id, property, error) + or + isKeyPathComponentWithNewKind(id) and + property = "" and + error = + "UnresolvedApply and Apply KeyPathComponents removed during database downgrade. Please update your CodeQL." +} diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme new file mode 100644 index 00000000000..b7006eaacb0 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme @@ -0,0 +1,2838 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/opened_archetype_types.ql b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/opened_archetype_types.ql new file mode 100644 index 00000000000..dd235725393 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/opened_archetype_types.ql @@ -0,0 +1,7 @@ +class ExistentialArchetypeType extends @existential_archetype_type { + string toString() { none() } +} + +from ExistentialArchetypeType id +where existential_archetype_types(id) +select id diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme new file mode 100644 index 00000000000..987ab0bc091 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme @@ -0,0 +1,2832 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties new file mode 100644 index 00000000000..a563f439398 --- /dev/null +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties @@ -0,0 +1,15 @@ +description: Upgrade to Swift 6.2 +compatibility: partial +availability_specs.rel: delete +availability_spec_platforms.rel: delete +availability_spec_versions.rel: delete +availability_spec_is_wildcard.rel: delete +other_availability_specs.rel: run availability_specs.qlo new_other_availability_specs +platform_version_availability_specs.rel: run availability_specs.qlo new_platform_version_availability_specs +existential_archetype_types.rel: delete +opened_archetype_types.rel: run opened_archetype_types.qlo +key_path_components.rel: run key_path_components.qlo new_key_path_components +key_path_component_subscript_arguments.rel: run key_path_components.qlo new_key_path_component_subscript_arguments +key_path_component_tuple_indices.rel: run key_path_components.qlo new_key_path_component_tuple_indices +key_path_component_decl_refs.rel: run key_path_components.qlo new_key_path_component_decl_refs +unspecified_elements.rel: run key_path_components.qlo new_unspecified_elements diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 11845e2692d..585b3e73889 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -724,13 +724,13 @@ lib/codeql/swift/generated/Diagnostics.qll 03ea201db80d33b18f7f6c71267044c695c25 lib/codeql/swift/generated/Element.qll bf8f688e05f44f18384067c3cab7f05796764e2b4cce7ff24da419c3dae26194 820390ffbb1012f73267668626f7d0ccd368500331c91bbc276fcb1c25037e41 lib/codeql/swift/generated/ErrorElement.qll b39bd7c8b4e2011f4a6889e073ebf5b628db32f36f50b067250ae730d9f26561 fd859ec969ba434049e7ba4e78271cc8cebc8b058d2e96e4d47a22064cbb5a21 lib/codeql/swift/generated/File.qll 476ac95566ef0080e0ad8c3da144b1be1d945d2f33a24f0864d85ff7c56a09b1 3134018bb50166cbf2690f64bba551cace350e4a7e6e25bcded18f997ad1835b -lib/codeql/swift/generated/KeyPathComponent.qll 713f514d23f252777d7a207bf894aec3d614691a05b2dc250b3e50fa41c97a96 46fa3f1666a48ab8a3998f409581be9869b7d74ece6ff65725dc25c86d5a4dff +lib/codeql/swift/generated/KeyPathComponent.qll 99d1699394bb7f9ff904e2d44149f20d3e08e35df171a6141f111c9ac9138b62 d8f62f60cc2c1e73146af79e5567c04cd273b73bfb5202bda964ec15032cb040 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 3491b6ec8362d409e5274fa7079d8910bdf6248b85d25986fce006fdd2927922 841eefe35c74ceda0ff24e7170137fd131d726f0c1f112c6b7e62ecb479e0aaf +lib/codeql/swift/generated/Raw.qll aa47e81ab3004a0049da3a85f25456bba15ed37329622153c154a296024077f3 46e9fb37fadc23d168fd43cbe77a792ba8e56aab7f4a3a984add1928efd4ac78 lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d diff --git a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll index deb3cba99f9..99134a458c9 100644 --- a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll +++ b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll @@ -30,7 +30,6 @@ module Generated { * INTERNAL: Do not use. * * TODO: Swift 6.2 update with UnresolvedApply and Apply - * TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade * * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 7f09371bcf5..6b1a267ecd9 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -227,7 +227,6 @@ module Raw { * INTERNAL: Do not use. * * TODO: Swift 6.2 update with UnresolvedApply and Apply - * TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade * * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/availability_specs.ql b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/availability_specs.ql new file mode 100644 index 00000000000..5408529da5c --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/availability_specs.ql @@ -0,0 +1,21 @@ +class AvailabilitySpec extends @availability_spec { + string toString() { none() } +} + +query predicate new_availability_specs(AvailabilitySpec id) { + platform_version_availability_specs(id, _, _) + or + other_availability_specs(id) +} + +query predicate new_availability_spec_platforms(AvailabilitySpec id, string platform) { + platform_version_availability_specs(id, platform, _) +} + +query predicate new_availability_spec_versions(AvailabilitySpec id, string version) { + platform_version_availability_specs(id, _, version) +} + +query predicate new_availability_spec_is_wildcard(AvailabilitySpec id) { + other_availability_specs(id) +} diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/existential_archetype_types.ql b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/existential_archetype_types.ql new file mode 100644 index 00000000000..d93f46fb2bc --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/existential_archetype_types.ql @@ -0,0 +1,7 @@ +class OpenedArchetypeType extends @opened_archetype_type { + string toString() { none() } +} + +from OpenedArchetypeType id +where opened_archetype_types(id) +select id diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql new file mode 100644 index 00000000000..6f63c5f3a5d --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql @@ -0,0 +1,13 @@ +class KeyPathComponent extends @key_path_component { + string toString() { none() } +} + +class TypeOrNone extends @type_or_none { + string toString() { none() } +} + +from KeyPathComponent id, int kind, int new_kind, TypeOrNone component_type +where + key_path_components(id, kind, component_type) and + if kind < 3 then new_kind = kind else new_kind = kind + 2 +select id, new_kind, component_type diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/old.dbscheme b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/old.dbscheme new file mode 100644 index 00000000000..987ab0bc091 --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/old.dbscheme @@ -0,0 +1,2832 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/swift.dbscheme b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/swift.dbscheme new file mode 100644 index 00000000000..b7006eaacb0 --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/swift.dbscheme @@ -0,0 +1,2838 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/upgrade.properties b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/upgrade.properties new file mode 100644 index 00000000000..b6118b34968 --- /dev/null +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/upgrade.properties @@ -0,0 +1,11 @@ +description: Upgrade to Swift 6.2 +compatibility: full +availability_specs.rel: run availability_specs.qlo new_availability_specs +availability_spec_platforms.rel: run availability_specs.qlo new_availability_spec_platforms +availability_spec_versions.rel: run availability_specs.qlo new_availability_spec_versions +availability_spec_is_wildcard.rel: run availability_specs.qlo new_availability_spec_is_wildcard +existential_archetype_types.rel: run existential_archetype_types.qlo +key_path_components.rel: run key_path_components.qlo +opened_archetype_types.rel: delete +other_availability_specs.rel: delete +platform_version_availability_specs.rel: delete diff --git a/swift/schema.py b/swift/schema.py index e3146d09845..6ef7b1bc21a 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -487,7 +487,6 @@ class KeyPathComponent(AstNode): INTERNAL: Do not use. TODO: Swift 6.2 update with UnresolvedApply and Apply - TODO: Swift 6.2 make sure to adjust in dbscheme upgrade/downgrade This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, From 74384bbeaed1941c4b5e0e80e69cefdeb67f30ee Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 22 Oct 2025 13:23:46 +0200 Subject: [PATCH 308/965] Swift: Add change notes --- .../lib/change-notes/2025-10-22-swift-6.2-class-changes.md | 6 ++++++ swift/ql/lib/change-notes/2025-10-22-swift-6.2.md | 4 ++++ 2 files changed, 10 insertions(+) create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md new file mode 100644 index 00000000000..bc8b2140c9f --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md @@ -0,0 +1,6 @@ +--- +category: breaking +--- +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class had been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md new file mode 100644 index 00000000000..145037125dd --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.2. From 17e0dec08a4a5bbf5d2225dbf1b03e7bf2313a08 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 16:01:38 +0200 Subject: [PATCH 309/965] C++: Add toString for RelationStrictness This helps for debugging. --- .../cpp/rangeanalysis/RangeAnalysisUtils.qll | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll index 07c6ee1cd2b..58c82445331 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll @@ -1,10 +1,10 @@ import cpp /** - * Describes whether a relation is 'strict' (that is, a `<` or `>` + * The strictness of a relation. Either 'strict' (that is, a `<` or `>` * relation) or 'non-strict' (a `<=` or `>=` relation). */ -newtype RelationStrictness = +newtype TRelationStrictness = /** * Represents that a relation is 'strict' (that is, a `<` or `>` relation). */ @@ -14,6 +14,19 @@ newtype RelationStrictness = */ Nonstrict() +/** + * The strictness of a relation. Either 'strict' (that is, a `<` or `>` + * relation) or 'non-strict' (a `<=` or `>=` relation). + */ +class RelationStrictness extends TRelationStrictness { + /** Gets the string representation of this relation strictness. */ + string toString() { + this = Strict() and result = "strict" + or + this = Nonstrict() and result = "non-strict" + } +} + /** * Describes whether a relation is 'greater' (that is, a `>` or `>=` * relation) or 'lesser' (a `<` or `<=` relation). From 3af9885489d0fefdcae83ffff5c58876fde6aa40 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 16:04:34 +0200 Subject: [PATCH 310/965] C++: Fix typos in tests --- .../library-tests/rangeanalysis/SimpleRangeAnalysis/test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index 61996ffa840..c161dcdbb05 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -914,7 +914,7 @@ void guard_with_exit(int x, int y) { // This test ensures that we correctly identify // that the upper bound for y is max_int when calling `out(y)`. - // The RangeSsa will place guardPhy on `out(y)`, and consequently there is no + // The RangeSsa will place guardPhi on `out(y)`, and consequently there is no // frontier phi node at out(y). } @@ -922,7 +922,7 @@ void test(int x) { if (x >= 10) { return; } - // The basic below has two predecessors. + // The basic block below has two predecessors. label: out(x); goto label; From 383e6a44aa20746baf23f2bc72c37f16932840e4 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 16:08:35 +0200 Subject: [PATCH 311/965] C++: Use `or` instead of `if` The proposition in the true branch implied the condition, so `or` is more appropriate. Also eliminated an existentially quantified variable. --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index a2e41fcf693..802d816945b 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -111,25 +111,24 @@ float widenUpperBound(Type type, float ub) { * compilation units, which doesn't necessarily have a getValue() result from the extractor. */ private string getValue(Expr e) { - if exists(e.getValue()) - then result = e.getValue() - else - /* - * It should be safe to propagate the initialization value to a variable if: - * The type of v is const, and - * The type of v is not volatile, and - * Either: - * v is a local/global variable, or - * v is a static member variable - */ + result = e.getValue() + or + not exists(e.getValue()) and + /* + * It should be safe to propagate the initialization value to a variable if: + * The type of v is const, and + * The type of v is not volatile, and + * Either: + * v is a local/global variable, or + * v is a static member variable + */ - exists(VariableAccess access, StaticStorageDurationVariable v | - not v.getUnderlyingType().isVolatile() and - v.getUnderlyingType().isConst() and - e = access and - v = access.getTarget() and - result = getValue(v.getAnAssignedValue()) - ) + exists(StaticStorageDurationVariable v | + not v.getUnderlyingType().isVolatile() and + v.getUnderlyingType().isConst() and + v = e.(VariableAccess).getTarget() and + result = getValue(v.getAnAssignedValue()) + ) } /** From 5709964fbf356ee642a755bec5f95799d7055a5c Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 16:12:05 +0200 Subject: [PATCH 312/965] C++: Simplify boundFromGuard The last disjunct in `boundFromGuard` is moved into `linearBoundFromGuard`. This avoids repeating the calculation for `boundValue`. `getBounds` and `getExprTypeBounds` are turned into predicates with result. Their middle argument was the "output" which was confusing. --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 95 +++++++++---------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 802d816945b..942b8155139 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -1770,22 +1770,10 @@ private predicate boundFromGuard( ) { exists(float p, float q, float r, boolean isLB | linearBoundFromGuard(guard, v, p, q, r, isLB, strictness, branch) and - boundValue = (r - q) / p - | + boundValue = (r - q) / p and // If the multiplier is negative then the direction of the comparison // needs to be flipped. - p > 0 and isLowerBound = isLB - or - p < 0 and isLowerBound = isLB.booleanNot() - ) - or - // When `!e` is true, we know that `0 <= e <= 0` - exists(float p, float q, Expr e | - linearAccess(e, v, p, q) and - eqZeroWithNegate(guard, e, true, branch) and - boundValue = (0.0 - q) / p and - isLowerBound = [false, true] and - strictness = Nonstrict() + if p < 0 then isLowerBound = isLB.booleanNot() else isLowerBound = isLB ) } @@ -1795,54 +1783,57 @@ private predicate boundFromGuard( * lower or upper bound for `v`. */ private predicate linearBoundFromGuard( - ComparisonOperation guard, VariableAccess v, float p, float q, float boundValue, + Expr guard, VariableAccess v, float p, float q, float r, boolean isLowerBound, // Is this a lower or an upper bound? RelationStrictness strictness, boolean branch // Which control-flow branch is this bound valid on? ) { - // For the comparison x < RHS, we create two bounds: - // - // 1. x < upperbound(RHS) - // 2. x >= typeLowerBound(RHS.getUnspecifiedType()) - // - exists(Expr lhs, Expr rhs, RelationDirection dir, RelationStrictness st | - linearAccess(lhs, v, p, q) and - relOpWithSwapAndNegate(guard, lhs, rhs, dir, st, branch) - | - isLowerBound = directionIsGreater(dir) and - strictness = st and - getBounds(rhs, boundValue, isLowerBound) + exists(Expr lhs | linearAccess(lhs, v, p, q) | + // For the comparison x < RHS, we create the following bounds: + // 1. x < upperbound(RHS) + // 2. x >= typeLowerBound(RHS.getUnspecifiedType()) + exists(Expr rhs, RelationDirection dir, RelationStrictness st | + relOpWithSwapAndNegate(guard, lhs, rhs, dir, st, branch) + | + isLowerBound = directionIsGreater(dir) and + strictness = st and + r = getBounds(rhs, isLowerBound) + or + isLowerBound = directionIsLesser(dir) and + strictness = Nonstrict() and + r = getExprTypeBounds(rhs, isLowerBound) + ) or - isLowerBound = directionIsLesser(dir) and - strictness = Nonstrict() and - exprTypeBounds(rhs, boundValue, isLowerBound) - ) - or - // For x == RHS, we create the following bounds: - // - // 1. x <= upperbound(RHS) - // 2. x >= lowerbound(RHS) - // - exists(Expr lhs, Expr rhs | - linearAccess(lhs, v, p, q) and - eqOpWithSwapAndNegate(guard, lhs, rhs, true, branch) and - getBounds(rhs, boundValue, isLowerBound) and + // For x == RHS, we create the following bounds: + // 1. x <= upperbound(RHS) + // 2. x >= lowerbound(RHS) + exists(Expr rhs | + eqOpWithSwapAndNegate(guard, lhs, rhs, true, branch) and + r = getBounds(rhs, isLowerBound) and + strictness = Nonstrict() + ) + or + // When `x` is equal to 0 we create the following bounds: + // 1. x <= 0 + // 2. x >= 0 + eqZeroWithNegate(guard, lhs, true, branch) and + r = 0.0 and + isLowerBound = [false, true] and strictness = Nonstrict() ) - // x != RHS and !x are handled elsewhere +} + +/** Get the fully converted lower or upper bounds of `expr` based on `isLowerBound`. */ +private float getBounds(Expr expr, boolean isLowerBound) { + isLowerBound = true and result = getFullyConvertedLowerBounds(expr) + or + isLowerBound = false and result = getFullyConvertedUpperBounds(expr) } /** Utility for `linearBoundFromGuard`. */ -private predicate getBounds(Expr expr, float boundValue, boolean isLowerBound) { - isLowerBound = true and boundValue = getFullyConvertedLowerBounds(expr) +private float getExprTypeBounds(Expr expr, boolean isLowerBound) { + isLowerBound = true and result = exprMinVal(expr.getFullyConverted()) or - isLowerBound = false and boundValue = getFullyConvertedUpperBounds(expr) -} - -/** Utility for `linearBoundFromGuard`. */ -private predicate exprTypeBounds(Expr expr, float boundValue, boolean isLowerBound) { - isLowerBound = true and boundValue = exprMinVal(expr.getFullyConverted()) - or - isLowerBound = false and boundValue = exprMaxVal(expr.getFullyConverted()) + isLowerBound = false and result = exprMaxVal(expr.getFullyConverted()) } /** From d1ea1af9452f29ec32ad2d48d0206de683ad7559 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 16:16:57 +0200 Subject: [PATCH 313/965] C++: Make small trivial tweaks --- .../code/cpp/rangeanalysis/RangeAnalysisUtils.qll | 8 ++++---- .../code/cpp/rangeanalysis/SimpleRangeAnalysis.qll | 14 +++++--------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll index 58c82445331..2423a3a71a0 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeAnalysisUtils.qll @@ -118,10 +118,10 @@ predicate relOpWithSwap( * * This allows for the relation to be either as written, or with its * arguments reversed; for example, if `rel` is `x < 5` then - * `relOpWithSwapAndNegate(rel, x, 5, Lesser(), Strict(), true)`, - * `relOpWithSwapAndNegate(rel, 5, x, Greater(), Strict(), true)`, - * `relOpWithSwapAndNegate(rel, x, 5, Greater(), Nonstrict(), false)` and - * `relOpWithSwapAndNegate(rel, 5, x, Lesser(), Nonstrict(), false)` hold. + * - `relOpWithSwapAndNegate(rel, x, 5, Lesser(), Strict(), true)`, + * - `relOpWithSwapAndNegate(rel, 5, x, Greater(), Strict(), true)`, + * - `relOpWithSwapAndNegate(rel, x, 5, Greater(), Nonstrict(), false)` and + * - `relOpWithSwapAndNegate(rel, 5, x, Lesser(), Nonstrict(), false)` hold. */ predicate relOpWithSwapAndNegate( RelationalOperation rel, Expr a, Expr b, RelationDirection dir, RelationStrictness strict, diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 942b8155139..fcb99487d2a 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -1213,7 +1213,7 @@ private float getLowerBoundsImpl(Expr expr) { // equal to `min(-y + 1,y - 1)`. exists(float childLB | childLB = getFullyConvertedLowerBounds(remExpr.getAnOperand()) and - not childLB >= 0 + childLB < 0 | result = getFullyConvertedLowerBounds(remExpr.getRightOperand()) - 1 or @@ -1425,8 +1425,7 @@ private float getUpperBoundsImpl(Expr expr) { // adding `-rhsLB` to the set of upper bounds. exists(float rhsLB | rhsLB = getFullyConvertedLowerBounds(remExpr.getRightOperand()) and - not rhsLB >= 0 - | + rhsLB < 0 and result = -rhsLB + 1 ) ) @@ -1571,8 +1570,7 @@ private float getPhiLowerBounds(StackVariable v, RangeSsaDefinition phi) { exists(VariableAccess access, Expr guard, boolean branch, float defLB, float guardLB | phi.isGuardPhi(v, access, guard, branch) and lowerBoundFromGuard(guard, access, guardLB, branch) and - defLB = getFullyConvertedLowerBounds(access) - | + defLB = getFullyConvertedLowerBounds(access) and // Compute the maximum of `guardLB` and `defLB`. if guardLB > defLB then result = guardLB else result = defLB ) @@ -1596,8 +1594,7 @@ private float getPhiUpperBounds(StackVariable v, RangeSsaDefinition phi) { exists(VariableAccess access, Expr guard, boolean branch, float defUB, float guardUB | phi.isGuardPhi(v, access, guard, branch) and upperBoundFromGuard(guard, access, guardUB, branch) and - defUB = getFullyConvertedUpperBounds(access) - | + defUB = getFullyConvertedUpperBounds(access) and // Compute the minimum of `guardUB` and `defUB`. if guardUB < defUB then result = guardUB else result = defUB ) @@ -1761,8 +1758,7 @@ private predicate upperBoundFromGuard(Expr guard, VariableAccess v, float ub, bo } /** - * This predicate simplifies the results returned by - * `linearBoundFromGuard`. + * This predicate simplifies the results returned by `linearBoundFromGuard`. */ private predicate boundFromGuard( Expr guard, VariableAccess v, float boundValue, boolean isLowerBound, From 0e624f51d5a464dcea5ad88662f76da8215b7256 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 24 Oct 2025 12:44:28 -0400 Subject: [PATCH 314/965] Crypto: Adding bad decrypt then mac order query. Fixes to BadMacOrderMacOnEncryptPlaintext as well. --- .../query-suite/not_included_in_qls.expected | 1 + .../quantum/Examples/BadMacOrder.qll | 260 +++++++++++++++--- .../Examples/BadMacOrderDecryptThenMac.ql | 19 ++ .../BadMacOrderMacOnEncryptPlaintext.ql | 2 +- .../BadMacOrderDecryptThenMac.expected | 36 +++ .../BadMacUse/BadMacOrderDecryptThenMac.qlref | 4 + .../BadMacOrderDecryptToMac.expected | 1 + .../BadMacOrderMacOnEncryptPlaintext.expected | 37 +++ .../quantum/examples/BadMacUse/BadMacUse.java | 28 +- 9 files changed, 341 insertions(+), 47 deletions(-) create mode 100644 java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected create mode 100644 java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.qlref diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 58b6b5766f2..9c967eb3d98 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -228,6 +228,7 @@ ql/java/ql/src/experimental/Security/CWE/CWE-665/InsecureRmiJmxEnvironmentConfig ql/java/ql/src/experimental/Security/CWE/CWE-755/NFEAndroidDoS.ql ql/java/ql/src/experimental/Security/CWE/CWE-759/HashWithoutSalt.ql ql/java/ql/src/experimental/Security/CWE/CWE-939/IncorrectURLVerification.ql +ql/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql ql/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptToMac.ql ql/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql ql/java/ql/src/experimental/quantum/Examples/BrokenCrypto.ql diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll index 645a092d57c..c9e5a1d0a03 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -7,6 +7,7 @@ import codeql.util.Option * that flows to the input artifact of a mac operation. */ predicate isDecryptToMacFlow(ArtifactFlow::PathNode src, ArtifactFlow::PathNode sink) { + // Simply flow from decrypt output to a mac input ArtifactFlow::flowPath(src, sink) and exists(Crypto::CipherOperationNode cipherOp | cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and @@ -17,6 +18,11 @@ predicate isDecryptToMacFlow(ArtifactFlow::PathNode src, ArtifactFlow::PathNode ) } +/** + * Experimental interface for graph generation, supply the + * node to determine if a issue exists, and if so + * the graph can add a property on the node. + */ predicate isDecryptToMacNode(Crypto::ArtifactNode node) { exists(ArtifactFlow::PathNode src | isDecryptToMacFlow(src, _) and @@ -24,6 +30,10 @@ predicate isDecryptToMacNode(Crypto::ArtifactNode node) { ) } +predicate isDecryptThenMacFlow(DecryptThenMacFlow::PathNode src, DecryptThenMacFlow::PathNode sink) { + DecryptThenMacFlow::flowPath(src, sink) +} + /** * Holds when the src node is used as plaintext input to both * an encryption operation and a mac operation, via the @@ -31,16 +41,140 @@ predicate isDecryptToMacNode(Crypto::ArtifactNode node) { */ predicate isPlaintextInEncryptionAndMac( PlaintextUseAsMacAndCipherInputFlow::PathNode src, - PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg + PlaintextUseAsMacAndCipherInputFlow::PathNode sink, EncryptOrMacCallArg arg ) { PlaintextUseAsMacAndCipherInputFlow::flowPath(src, sink) and - arg = sink.getState().asSome() + arg = sink.getState().asSome() and + // the above pathing adds flow steps that may not have consideration for the calling context + // TODO: this is something we want to look into to improving, but for now + // we can filter bad flows with one additional flow check, that the source goes to both + // src and sink through a generic flow + // note that the flow path above ensures src gets to the interim arg, so we just need to + // verify the source to sink. + // TODO: having to copy the generic data flow config into a use-use variant + // should we fix this at the language level to allow use use more intuitively? + // Seems to be a common issue. + GenericDataSourceFlowUseUseFlow::flow(src.getNode(), sink.getNode()) } -module ArgToSinkConfig implements DataFlow::ConfigSig { +/** + * A copy of GenericDataSourceFlow but with use-use flows enabled by removing the barrier out + */ +module GenericDataSourceFlowUseUseConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source = any(Crypto::GenericSourceInstance i).getOutputNode() + } + + predicate isSink(DataFlow::Node sink) { + sink = any(Crypto::FlowAwareElement other).getInputNode() + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module GenericDataSourceFlowUseUseFlow = TaintTracking::Global; + +module WrapperArgFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + // Start from a parameter and not a call to avoid flow going out of + // the call. We want to flow down a call, so start from a parameter + // and barrier flows through returns + exists(Method m | m.getParameter(_) = source.asParameter()) + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getAnInputArtifact().asElement() = sink.asExpr() + ) + or + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = sink.asExpr()) + } + + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isBarrierOut(DataFlow::Node node) { + // stop all flow out of a call return + // TODO: this might be too strict and remove taint flow, need to reassess + exists(Call c | c = node.asExpr()) or + node = any(Crypto::FlowAwareElement element).getInputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + } +} + +module WrapperArgFlow = TaintTracking::Global; + +predicate encryptWrapperArg(DataFlow::Node n, DataFlow::Node sink) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and + cipherOp.getAnInputArtifact().asElement() = sink.asExpr() + ) and + ( + exists(Parameter p, DataFlow::Node src | + p = src.asParameter() and + WrapperArgFlow::flow(src, sink) and + n.asExpr() = p.getAnArgument() + ) + or + n = sink // the call the target operation is considered a wrapper arg to itself + ) +} + +predicate decryptWrapperArg(DataFlow::Node n, DataFlow::Node sink) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and + cipherOp.getAnInputArtifact().asElement() = sink.asExpr() + ) and + ( + exists(Parameter p, DataFlow::Node src | + p = src.asParameter() and + WrapperArgFlow::flow(src, sink) and + n.asExpr() = p.getAnArgument() + ) + or + n = sink // the call the target operation is considered a wrapper arg to itself + ) +} + +predicate macWrapperArg(DataFlow::Node n, DataFlow::Node sink) { + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = sink.asExpr()) and + ( + exists(Parameter p, DataFlow::Node src | + p = src.asParameter() and + WrapperArgFlow::flow(src, sink) and + n.asExpr() = p.getAnArgument() + ) + or + n = sink // the call the target operation is considered a wrapper arg to itself + ) +} + +module ArgToEncryptOrMacConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { exists(Call c | c.getAnArgument() = source.asExpr()) } - predicate isSink(DataFlow::Node sink) { targetSinks(sink) } + predicate isSink(DataFlow::Node sink) { encryptOrMacSink(sink) } // Don't go in to a known out node, this will prevent the plaintext // from tracing out of cipher operations for example, we just want to trace @@ -62,12 +196,12 @@ module ArgToSinkConfig implements DataFlow::ConfigSig { } } -module ArgToSinkFlow = TaintTracking::Global; +module ArgToEncryptOrMacFlow = TaintTracking::Global; /** * Target sinks for this query are either encryption operations or mac operation message inputs */ -predicate targetSinks(DataFlow::Node n) { +predicate encryptOrMacSink(DataFlow::Node n) { exists(Crypto::CipherOperationNode cipherOp | cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and cipherOp.getAnInputArtifact().asElement() = n.asExpr() @@ -77,44 +211,48 @@ predicate targetSinks(DataFlow::Node n) { } /** - * An argument of a target sink or a parent call whose parameter flows to a target sink + * Target sinks for decryption operations */ -class InterimArg extends DataFlow::Node { - DataFlow::Node targetSink; - - InterimArg() { - targetSinks(targetSink) and - ( - this = targetSink - or - ArgToSinkFlow::flow(this, targetSink) and - this.getEnclosingCallable().calls+(targetSink.getEnclosingCallable()) - ) - } - - DataFlow::Node getTargetSink() { result = targetSink } +predicate decryptSink(DataFlow::Node n) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and + cipherOp.getAnInputArtifact().asElement() = n.asExpr() + ) } -/** - * A wrapper class to represent a target argument dataflow node. - */ -class TargetArg extends DataFlow::Node { - TargetArg() { targetSinks(this) } +// /** +// * An argument of a target sink or a parent call whose parameter flows to a target sink +// */ +// class EncryptOrMacPartialFlowArg extends DataFlow::Node { +// DataFlow::Node targetSink; +// EncryptOrMacPartialFlowArg() { +// encryptWrapperArg(this, targetSink) +// or +// macWrapperArg(this, targetSink) +// } +// DataFlow::Node getTargetSink() { result = targetSink } +// } +class EncryptOrMacCallArg extends DataFlow::Node { + boolean isEncryption; - predicate isCipher() { + EncryptOrMacCallArg() { exists(Crypto::CipherOperationNode cipherOp | cipherOp.getKeyOperationSubtype() = Crypto::TEncryptMode() and cipherOp.getAnInputArtifact().asElement() = this.asExpr() - ) + ) and + isEncryption = true + or + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = this.asExpr()) and + isEncryption = false } - predicate isMac() { - exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = this.asExpr()) - } + predicate isEncryption() { isEncryption = true } + + predicate isMac() { isEncryption = false } } module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig { - class FlowState = Option::Option; + class FlowState = Option::Option; // TODO: can we approximate a message source better? predicate isSource(DataFlow::Node source, FlowState state) { @@ -128,12 +266,9 @@ module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig } predicate isSink(DataFlow::Node sink, FlowState state) { - sink instanceof TargetArg and - ( - sink.(TargetArg).isMac() and state.asSome().isCipher() - or - sink.(TargetArg).isCipher() and state.asSome().isMac() - ) + sink.(EncryptOrMacCallArg).isMac() and state.asSome().isEncryption() + or + sink.(EncryptOrMacCallArg).isEncryption() and state.asSome().isMac() } predicate isBarrierOut(DataFlow::Node node, FlowState state) { @@ -163,16 +298,51 @@ module PlaintextUseAsMacAndCipherInputConfig implements DataFlow::StateConfigSig predicate isAdditionalFlowStep( DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 ) { - (exists(state1.asSome()) or state1.isNone()) and - targetSinks(node1) and - node1 instanceof TargetArg and - //use-use flow, either flow directly from the node1 use - //or find a parent call in the call in the call stack - //and continue flow from that parameter - node2.(InterimArg).getTargetSink() = node1 and + // TODO: should we consider isSome cases? + state1.isNone() and + ( + encryptWrapperArg(node2, node1) + or + macWrapperArg(node2, node1) + ) and state2.asSome() = node1 } } module PlaintextUseAsMacAndCipherInputFlow = TaintTracking::GlobalWithState; + +module DecryptThenMacConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(Crypto::CipherOperationNode cipherOp | + cipherOp.getKeyOperationSubtype() = Crypto::TDecryptMode() and + cipherOp.getAnInputArtifact().asElement() = source.asExpr() + ) + } + + predicate isSink(DataFlow::Node sink) { + exists(Crypto::MacOperationNode macOp | macOp.getAnInputArtifact().asElement() = sink.asExpr()) + } + + // Don't go in to a known out node, prevents + // from tracing out of an operation + // NOTE: we are not using a barrier out on input nodes, because + // that would remove 'use-use' flows, which we need + predicate isBarrierIn(DataFlow::Node node) { + node = any(Crypto::FlowAwareElement element).getOutputNode() + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node1.(AdditionalFlowInputStep).getOutput() = node2 + or + exists(MethodCall m | + m.getMethod().hasQualifiedName("java.lang", "String", "getBytes") and + node1.asExpr() = m.getQualifier() and + node2.asExpr() = m + ) + or + decryptWrapperArg(node2, node1) + } +} + +module DecryptThenMacFlow = TaintTracking::Global; diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql new file mode 100644 index 00000000000..0741fcae3e9 --- /dev/null +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql @@ -0,0 +1,19 @@ +/** + * @name Bad MAC order: decrypt then mac + * @description Decryption on cipher text, then MAC on ciopher text, is incorrect order + * @id java/quantum/examples/bad-mac-order-decrypt-then-mac + * @kind path-problem + * @problem.severity error + * @tags quantum + * experimental + */ + +import java +import BadMacOrder +import DecryptThenMacFlow::PathGraph + +from DecryptThenMacFlow::PathNode src, DecryptThenMacFlow::PathNode sink +where isDecryptThenMacFlow(src, sink) +select sink, src, sink, + "Incorrect decryption and MAC order: " + + "Decryption of cipher text occurs before validation of MAC on cipher text." diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql index b3ff84b091a..7644167c589 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderMacOnEncryptPlaintext.ql @@ -14,7 +14,7 @@ import PlaintextUseAsMacAndCipherInputFlow::PathGraph from PlaintextUseAsMacAndCipherInputFlow::PathNode src, - PlaintextUseAsMacAndCipherInputFlow::PathNode sink, InterimArg arg + PlaintextUseAsMacAndCipherInputFlow::PathNode sink, EncryptOrMacCallArg arg where isPlaintextInEncryptionAndMac(src, sink, arg) select sink, src, sink, "Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@", diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected new file mode 100644 index 00000000000..ba74f3dffce --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected @@ -0,0 +1,36 @@ +#select +| BadMacUse.java:152:42:152:51 | ciphertext | BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:152:42:152:51 | ciphertext | Incorrect decryption and MAC order: Decryption of cipher text occurs before validation of MAC on cipher text. | +edges +| BadMacUse.java:84:42:84:53 | bytes : byte[] | BadMacUse.java:92:31:92:35 | bytes : byte[] | provenance | | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:100:39:100:48 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:100:39:100:48 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:108:39:108:47 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:108:39:108:47 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:118:52:118:60 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:118:52:118:60 | plaintext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:146:48:146:57 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:146:48:146:57 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:99:39:99:55 | ciphertext : byte[] | BadMacUse.java:100:39:100:48 | ciphertext : byte[] | provenance | | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:108:39:108:47 | plaintext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:118:52:118:60 | plaintext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] | BadMacUse.java:99:39:99:55 | ciphertext : byte[] | provenance | | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] | BadMacUse.java:152:42:152:51 | ciphertext | provenance | | +nodes +| BadMacUse.java:84:42:84:53 | bytes : byte[] | semmle.label | bytes : byte[] | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| BadMacUse.java:99:39:99:55 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | +| BadMacUse.java:108:39:108:47 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:118:52:118:60 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | +| BadMacUse.java:152:42:152:51 | ciphertext | semmle.label | ciphertext | +subpaths +testFailures +| BadMacUse.java:50:56:50:65 | // $Source | Missing result: Source | +| BadMacUse.java:63:118:63:127 | // $Source | Missing result: Source | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | Unexpected result: Source | +| BadMacUse.java:146:95:146:104 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.qlref b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.qlref new file mode 100644 index 00000000000..811a6cbac13 --- /dev/null +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.qlref @@ -0,0 +1,4 @@ +query: experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index 2a3c1d533df..f73f0f25e0a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -34,3 +34,4 @@ testFailures | BadMacUse.java:63:118:63:127 | // $Source | Missing result: Source | | BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | Unexpected result: Source | | BadMacUse.java:124:42:124:51 | ciphertext | Unexpected result: Alert | +| BadMacUse.java:146:95:146:104 | // $Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index 70733bbf8d3..ea427361361 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -1,14 +1,51 @@ #select | BadMacUse.java:76:44:76:52 | plaintext | BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:71:42:71:50 | plaintext | plaintext | +| BadMacUse.java:152:42:152:51 | ciphertext | BadMacUse.java:139:79:139:90 | input : byte[] | BadMacUse.java:152:42:152:51 | ciphertext | Incorrect MAC usage: Encryption plaintext also used for MAC. Flow shows plaintext to final use through intermediate mac or encryption operation here $@ | BadMacUse.java:92:31:92:35 | bytes | bytes | edges | BadMacUse.java:63:82:63:97 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | | | BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:71:42:71:50 | plaintext : byte[] | provenance | Config | | BadMacUse.java:71:42:71:50 | plaintext : byte[] | BadMacUse.java:76:44:76:52 | plaintext | provenance | | +| BadMacUse.java:84:42:84:53 | bytes : byte[] | BadMacUse.java:92:31:92:35 | bytes : byte[] | provenance | | +| BadMacUse.java:84:42:84:53 | bytes : byte[] [[]] : Object | BadMacUse.java:92:31:92:35 | bytes : byte[] [[]] : Object | provenance | | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | BadMacUse.java:146:48:146:57 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:92:31:92:35 | bytes : byte[] [[]] : Object | BadMacUse.java:146:48:146:57 | ciphertext : byte[] | provenance | Config | +| BadMacUse.java:99:39:99:55 | ciphertext : byte[] [[]] : Object | BadMacUse.java:100:39:100:48 | ciphertext : byte[] [[]] : Object | provenance | | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] [[]] : Object | BadMacUse.java:84:42:84:53 | bytes : byte[] [[]] : Object | provenance | | +| BadMacUse.java:107:39:107:54 | plaintext : byte[] | BadMacUse.java:108:39:108:47 | plaintext : byte[] | provenance | | +| BadMacUse.java:108:39:108:47 | plaintext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:114:92:114:107 | plaintext : byte[] | BadMacUse.java:118:52:118:60 | plaintext : byte[] | provenance | | +| BadMacUse.java:118:52:118:60 | plaintext : byte[] | BadMacUse.java:84:42:84:53 | bytes : byte[] | provenance | | +| BadMacUse.java:139:79:139:90 | input : byte[] | BadMacUse.java:142:48:142:52 | input : byte[] | provenance | | +| BadMacUse.java:142:29:142:82 | copyOfRange(...) : byte[] [[]] : Object | BadMacUse.java:146:48:146:57 | ciphertext : byte[] [[]] : Object | provenance | | +| BadMacUse.java:142:48:142:52 | input : byte[] | BadMacUse.java:142:29:142:82 | copyOfRange(...) : byte[] [[]] : Object | provenance | MaD:1 | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] | BadMacUse.java:152:42:152:51 | ciphertext | provenance | | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] [[]] : Object | BadMacUse.java:99:39:99:55 | ciphertext : byte[] [[]] : Object | provenance | | +models +| 1 | Summary: java.util; Arrays; false; copyOfRange; ; ; Argument[0].ArrayElement; ReturnValue.ArrayElement; value; manual | nodes | BadMacUse.java:63:82:63:97 | plaintext : byte[] | semmle.label | plaintext : byte[] | | BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | | BadMacUse.java:71:42:71:50 | plaintext : byte[] | semmle.label | plaintext : byte[] | | BadMacUse.java:76:44:76:52 | plaintext | semmle.label | plaintext | +| BadMacUse.java:84:42:84:53 | bytes : byte[] | semmle.label | bytes : byte[] | +| BadMacUse.java:84:42:84:53 | bytes : byte[] [[]] : Object | semmle.label | bytes : byte[] [[]] : Object | +| BadMacUse.java:92:31:92:35 | bytes : byte[] | semmle.label | bytes : byte[] | +| BadMacUse.java:92:31:92:35 | bytes : byte[] [[]] : Object | semmle.label | bytes : byte[] [[]] : Object | +| BadMacUse.java:99:39:99:55 | ciphertext : byte[] [[]] : Object | semmle.label | ciphertext : byte[] [[]] : Object | +| BadMacUse.java:100:39:100:48 | ciphertext : byte[] [[]] : Object | semmle.label | ciphertext : byte[] [[]] : Object | +| BadMacUse.java:107:39:107:54 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:108:39:108:47 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:114:92:114:107 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:118:52:118:60 | plaintext : byte[] | semmle.label | plaintext : byte[] | +| BadMacUse.java:139:79:139:90 | input : byte[] | semmle.label | input : byte[] | +| BadMacUse.java:142:29:142:82 | copyOfRange(...) : byte[] [[]] : Object | semmle.label | copyOfRange(...) : byte[] [[]] : Object | +| BadMacUse.java:142:48:142:52 | input : byte[] | semmle.label | input : byte[] | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | +| BadMacUse.java:146:48:146:57 | ciphertext : byte[] [[]] : Object | semmle.label | ciphertext : byte[] [[]] : Object | +| BadMacUse.java:152:42:152:51 | ciphertext | semmle.label | ciphertext | subpaths testFailures | BadMacUse.java:50:56:50:65 | // $Source | Missing result: Source | +| BadMacUse.java:139:79:139:90 | input : byte[] | Unexpected result: Source | +| BadMacUse.java:146:95:146:104 | // $Source | Missing result: Source | +| BadMacUse.java:152:42:152:51 | ciphertext | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 597c2a106d8..5c442d4bca7 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -53,7 +53,7 @@ class BadMacUse { SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); - byte[] computedMac = mac.doFinal(plaintext); // $Alert[java/quantum/examples/bad-mac-order-decrypt-to-mac] + byte[] computedMac = mac.doFinal(plaintext); // $Alert[java/quantum/examples/bad-mac-order-decrypt-to-mac] if (!MessageDigest.isEqual(receivedMac, computedMac)) { throw new SecurityException("MAC verification failed"); @@ -129,4 +129,30 @@ class BadMacUse { System.arraycopy(computedMac, 0, output, ciphertext.length, computedMac.length); return output; } + + + /** + * Correct inputs to a decrypt and MAC operation, but the ordering is unsafe. + * The function decrypts THEN computes the MAC on the plaintext. + * It should have the MAC computed on the ciphertext first. + */ + public void decryptThenMac(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] input) throws Exception { + // Split input into ciphertext and MAC + int macLength = 32; // HMAC-SHA256 output length + byte[] ciphertext = Arrays.copyOfRange(input, 0, input.length - macLength); + byte[] receivedMac = Arrays.copyOfRange(input, input.length - macLength, input.length); + + // Decrypt first (unsafe) + byte[] plaintext = decryptUsingWrapper(ciphertext, encryptionKeyBytes, new byte[16]); // $Source + + // Now verify MAC (too late) + SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(macKey); + byte[] computedMac = mac.doFinal(ciphertext); // $Alert[java/quantum/examples/bad-mac-order-decrypt-then-mac], False positive for Plaintext reuse + + if (!MessageDigest.isEqual(receivedMac, computedMac)) { + throw new SecurityException("MAC verification failed"); + } + } } From b20689fa469a40df0fe85e69262cd103e3c4c663 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 24 Oct 2025 14:06:08 -0400 Subject: [PATCH 315/965] Crypto: removing comments --- .../experimental/quantum/Examples/BadMacOrder.qll | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll index c9e5a1d0a03..20e7b7225c2 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -220,18 +220,6 @@ predicate decryptSink(DataFlow::Node n) { ) } -// /** -// * An argument of a target sink or a parent call whose parameter flows to a target sink -// */ -// class EncryptOrMacPartialFlowArg extends DataFlow::Node { -// DataFlow::Node targetSink; -// EncryptOrMacPartialFlowArg() { -// encryptWrapperArg(this, targetSink) -// or -// macWrapperArg(this, targetSink) -// } -// DataFlow::Node getTargetSink() { result = targetSink } -// } class EncryptOrMacCallArg extends DataFlow::Node { boolean isEncryption; From 03948167563872bc7a957774777894cf23e82efd Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 24 Oct 2025 14:06:52 -0400 Subject: [PATCH 316/965] Crypto: typo fix --- .../experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql index 0741fcae3e9..21b0be29ed5 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrderDecryptThenMac.ql @@ -1,6 +1,6 @@ /** * @name Bad MAC order: decrypt then mac - * @description Decryption on cipher text, then MAC on ciopher text, is incorrect order + * @description Decryption on cipher text, then MAC on cipher text, is incorrect order * @id java/quantum/examples/bad-mac-order-decrypt-then-mac * @kind path-problem * @problem.severity error From 65d0ca9e53f531648d0d5d33e11013ba9c38fe90 Mon Sep 17 00:00:00 2001 From: "REDMOND\\brodes" Date: Fri, 24 Oct 2025 14:08:25 -0400 Subject: [PATCH 317/965] Crypto: Simplifying expression for ql-for-ql alert. --- java/ql/src/experimental/quantum/Examples/BadMacOrder.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll index 20e7b7225c2..6d944661621 100644 --- a/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll +++ b/java/ql/src/experimental/quantum/Examples/BadMacOrder.qll @@ -109,7 +109,7 @@ module WrapperArgFlowConfig implements DataFlow::ConfigSig { predicate isBarrierOut(DataFlow::Node node) { // stop all flow out of a call return // TODO: this might be too strict and remove taint flow, need to reassess - exists(Call c | c = node.asExpr()) or + node.asExpr() instanceof Call or node = any(Crypto::FlowAwareElement element).getInputNode() } From 3f98d32124aea22a42cd66a64ff0f9592d02a42b Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 27 Oct 2025 09:51:10 +0100 Subject: [PATCH 318/965] C#: Update change note for location handling in query --- csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md index 441d944f5fe..5df97b9d28a 100644 --- a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md +++ b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in a `` elements. +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. From 2022dd833e0ccc214eead5d59a0f46046e4c2999 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 27 Oct 2025 10:48:02 +0100 Subject: [PATCH 319/965] Swift: Address review comments --- swift/extractor/mangler/SwiftMangler.cpp | 23 ++++++++++++----------- swift/extractor/mangler/SwiftMangler.h | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/swift/extractor/mangler/SwiftMangler.cpp b/swift/extractor/mangler/SwiftMangler.cpp index b44921853ba..8d7d2a8a065 100644 --- a/swift/extractor/mangler/SwiftMangler.cpp +++ b/swift/extractor/mangler/SwiftMangler.cpp @@ -40,7 +40,8 @@ std::string_view getTypeKindStr(const swift::TypeBase* type) { } // namespace -std::unordered_map SwiftMangler::preloadedExtensionIndexes; +std::unordered_map + SwiftMangler::preloadedExtensionIndexes; SwiftMangledName SwiftMangler::initMangled(const swift::TypeBase* type) { return {getTypeKindStr(type), '_'}; @@ -104,15 +105,15 @@ SwiftMangledName SwiftMangler::visitExtensionDecl(const swift::ExtensionDecl* de auto parent = getParent(decl); auto target = decl->getExtendedType(); - return initMangled(decl) << fetch(target) << getExtensionIndex(decl, parent); + auto index = getExtensionIndex(decl, parent); + return initMangled(decl) << fetch(target) << index.index + << (index.kind == ExtensionKind::clang ? "_clang" : ""); } -unsigned SwiftMangler::getExtensionIndex(const swift::ExtensionDecl* decl, - const swift::Decl* parent) { +SwiftMangler::ExtensionIndex SwiftMangler::getExtensionIndex(const swift::ExtensionDecl* decl, + const swift::Decl* parent) { // to avoid iterating multiple times on the parent of multiple extensions, we preload extension // indexes once for each encountered parent into the `preloadedExtensionIndexes` mapping. - // Because we mangle declarations only once in a given trap/dispatcher context, we can safely - // discard preloaded indexes on use if (auto found = SwiftMangler::preloadedExtensionIndexes.find(decl); found != SwiftMangler::preloadedExtensionIndexes.end()) { return found->second; @@ -141,8 +142,8 @@ void SwiftMangler::indexExtensions(llvm::ArrayRef siblings) { auto index = 0u; for (auto sibling : siblings) { if (sibling->getKind() == swift::DeclKind::Extension) { - SwiftMangler::preloadedExtensionIndexes.emplace(sibling, index); - index += 2; + SwiftMangler::preloadedExtensionIndexes.try_emplace(sibling, ExtensionKind::swift, index); + index++; } } } @@ -153,15 +154,15 @@ void SwiftMangler::indexClangExtensions(const clang::Module* clangModule, return; } - auto index = 1u; + auto index = 0u; for (const auto& submodule : clangModule->submodules()) { if (auto* swiftSubmodule = moduleLoader->getWrapperForModule(submodule)) { llvm::SmallVector children; swiftSubmodule->getTopLevelDecls(children); for (const auto child : children) { if (child->getKind() == swift::DeclKind::Extension) { - SwiftMangler::preloadedExtensionIndexes.emplace(child, index); - index += 2; + SwiftMangler::preloadedExtensionIndexes.try_emplace(child, ExtensionKind::clang, index); + index++; } } } diff --git a/swift/extractor/mangler/SwiftMangler.h b/swift/extractor/mangler/SwiftMangler.h index da93f3473f6..caf70718633 100644 --- a/swift/extractor/mangler/SwiftMangler.h +++ b/swift/extractor/mangler/SwiftMangler.h @@ -106,7 +106,17 @@ class SwiftMangler : private swift::TypeVisitor, SwiftMangledName visitPackExpansionType(const swift::PackExpansionType* type); private: - static std::unordered_map preloadedExtensionIndexes; + enum class ExtensionKind : bool { + swift, + clang, + }; + + struct ExtensionIndex { + const ExtensionKind kind : 1; + const uint32_t index : 31; + }; + + static std::unordered_map preloadedExtensionIndexes; virtual SwiftMangledName fetch(const swift::Decl* decl) = 0; virtual SwiftMangledName fetch(const swift::TypeBase* type) = 0; @@ -115,7 +125,7 @@ class SwiftMangler : private swift::TypeVisitor, void indexExtensions(llvm::ArrayRef siblings); void indexClangExtensions(const clang::Module* clangModule, swift::ClangModuleLoader* moduleLoader); - unsigned int getExtensionIndex(const swift::ExtensionDecl* decl, const swift::Decl* parent); + ExtensionIndex getExtensionIndex(const swift::ExtensionDecl* decl, const swift::Decl* parent); static SwiftMangledName initMangled(const swift::TypeBase* type); SwiftMangledName initMangled(const swift::Decl* decl); SwiftMangledName visitTypeDiscriminatedValueDecl(const swift::ValueDecl* decl); From aabc8bc38befd749fd532a28b124176d00ac09fa Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 27 Oct 2025 10:54:39 +0100 Subject: [PATCH 320/965] Swift: Fix typo in change note --- swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md index bc8b2140c9f..114f91eed8c 100644 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md @@ -2,5 +2,5 @@ category: breaking --- * The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class had been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. * The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. From 83508ba661414c392c31916bf9f3a3dea4b70673 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 27 Oct 2025 11:25:51 +0100 Subject: [PATCH 321/965] java: adjust qhelp and examples for SafePublication --- .../src/Likely Bugs/Concurrency/SafePublication.java | 12 +++++++++--- .../Likely Bugs/Concurrency/SafePublication.qhelp | 9 ++------- .../Likely Bugs/Concurrency/UnsafePublication.java | 9 +++++++-- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.java b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java index 64341017890..76980412e8c 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SafePublication.java +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java @@ -1,11 +1,17 @@ public class SafePublication { - private Object value; + private volatile Object value; + private final int server_id; - public synchronized void produce() { - value = new Object(); // Safely published using synchronization + public SafePublication() { + value = new Object(); // Safely published as volatile + server_id = 1; // Safely published as final } public synchronized Object getValue() { return value; } + + public int getServerId() { + return server_id; + } } \ No newline at end of file diff --git a/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp b/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp index a24977e6730..4b422530411 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp @@ -31,16 +31,11 @@ Choose a safe publication technique that fits your use case. If the value only n -

    In the following example, the value of value is not safely published. The produce method - creates a new object and assigns it to the field value. However, the field is not - declared as volatile, and there are no synchronization mechanisms in place to ensure - that the value is fully constructed before it is published.

    +

    In the following example, the values of value and server_id are not safely published. The constructor creates a new object and assigns it to the field value. However, the field is not declared as volatile or final, and there are no synchronization mechanisms in place to ensure that the value is fully constructed before it is published. A different thread may see the default value null. Similarly, the field server_id may be observed to be 0.

    -

    To fix this example, declare the field value as volatile, or use - synchronized blocks or methods to ensure that the value is fully constructed before it is - published. We illustrate the latter with the following example:

    +

    To fix this example, we declare the field value as volatile. This will ensure that all changes to the field are visible to all threads. The field server_id is only meant to be written once, so we only need the write inside the constructor to be visible to other threads; declaring it final guarantees this:

    diff --git a/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java b/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java index ddf8c8b400f..0b7ea330981 100644 --- a/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java +++ b/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java @@ -1,12 +1,17 @@ -@ThreadSafe public class UnsafePublication { private Object value; + private int server_id; - public void produce() { + public UnsafePublication() { value = new Object(); // Not safely published, other threads may see the default value null + server_id = 1; // Not safely published, other threads may see the default value 0 } public Object getValue() { return value; } + + public int getServerId() { + return server_id; + } } \ No newline at end of file From be0d405f6d2ff68449d71644955d6bb656d69f36 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 27 Oct 2025 11:28:53 +0100 Subject: [PATCH 322/965] Swift: Update artifacts --- swift/third_party/load.bzl | 4 ---- swift/third_party/resources/resource-dir-linux.zip | 4 ++-- swift/third_party/resources/resource-dir-macos.zip | 4 ++-- swift/third_party/resources/swift-prebuilt-linux.tar.zst | 4 ++-- swift/third_party/resources/swift-prebuilt-macos.tar.zst | 4 ++-- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 15877e2e6e9..d19345a1880 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,10 +5,6 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main - "swift-prebuilt-macOS-swift-6.2-RELEASE-112.tar.zst": "0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e", - "swift-prebuilt-Linux-swift-6.2-RELEASE-112.tar.zst": "845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff", - "resource-dir-macOS-swift-6.2-RELEASE-118.zip": "258a766c51fcce31839c4f6ff823ef9909350e00c62c78de4c75d58ede3b45da", - "resource-dir-Linux-swift-6.2-RELEASE-118.zip": "d58eaae17536e26586df9aa8333637859d3b79daf2c3694cd75aad94d8fcce8e", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index 40658514443..b8e0393bee1 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57158fff2fa967f1fad327b2bfc7bb2490dcd063935104a04d1c7740a4a9a1bb -size 291553836 +oid sha256:d58eaae17536e26586df9aa8333637859d3b79daf2c3694cd75aad94d8fcce8e +size 385205623 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 5a2118566ad..b7f8f4df10c 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4518d5a4268766b1768bbf97b3124aa463f95e030f26014cea6fe00752c15a0e -size 593025623 +oid sha256:258a766c51fcce31839c4f6ff823ef9909350e00c62c78de4c75d58ede3b45da +size 815605040 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 3ffc85268bd..2a507b6291d 100644 --- a/swift/third_party/resources/swift-prebuilt-linux.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d6246cfc84ab2cd0fc065c3a27c18f4ee3460dccb4b2c54a7396b6f4f4d6e3 -size 124356033 +oid sha256:845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff +size 132754495 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index 4483ca68d27..3f4ac76f795 100644 --- a/swift/third_party/resources/swift-prebuilt-macos.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-macos.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af2bdbe79f75be0374c62ba3a0188d313a907c0c349bf454efcd015d5c6029ca -size 104925305 +oid sha256:0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e +size 115290456 From 02a942554d679a8859bd8a5f5f3fe1c639b35758 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 12:55:43 +0100 Subject: [PATCH 323/965] Java: Remove old SSA consistency queries. --- java/ql/src/meta/ssa/AmbiguousToString.ql | 27 ---------- java/ql/src/meta/ssa/TooFewPhiInputs.ql | 17 ------ .../src/meta/ssa/UncertainDefWithoutPrior.ql | 26 ---------- .../meta/ssa/UseWithoutUniqueSsaVariable.ql | 52 ------------------- 4 files changed, 122 deletions(-) delete mode 100644 java/ql/src/meta/ssa/AmbiguousToString.ql delete mode 100644 java/ql/src/meta/ssa/TooFewPhiInputs.ql delete mode 100644 java/ql/src/meta/ssa/UncertainDefWithoutPrior.ql delete mode 100644 java/ql/src/meta/ssa/UseWithoutUniqueSsaVariable.ql diff --git a/java/ql/src/meta/ssa/AmbiguousToString.ql b/java/ql/src/meta/ssa/AmbiguousToString.ql deleted file mode 100644 index 817685cf609..00000000000 --- a/java/ql/src/meta/ssa/AmbiguousToString.ql +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @name An SSA variable without a unique 'toString()' - * @description An ambiguous 'toString()' indicates overlap in the defining - * sub-classes of 'SsaVariable'. - * @kind problem - * @problem.severity error - * @id java/consistency/non-unique-ssa-tostring - * @tags consistency - */ - -import java -import semmle.code.java.dataflow.SSA - -predicate noToString(SsaVariable v) { not exists(v.toString()) } - -predicate multipleToString(SsaVariable v) { 1 < count(v.toString()) } - -from SsaVariable ssa, ControlFlowNode n, Variable v, string problem -where - ( - noToString(ssa) and problem = "SSA variable without 'toString()' for " - or - multipleToString(ssa) and problem = "SSA variable with multiple 'toString()' results for " - ) and - n = ssa.getCfgNode() and - v = ssa.getSourceVariable().getVariable() -select n, problem + v diff --git a/java/ql/src/meta/ssa/TooFewPhiInputs.ql b/java/ql/src/meta/ssa/TooFewPhiInputs.ql deleted file mode 100644 index 3bf75a91856..00000000000 --- a/java/ql/src/meta/ssa/TooFewPhiInputs.ql +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @name A phi node without two or more inputs - * @description A phi node should have at least two inputs. - * @kind problem - * @problem.severity error - * @id java/consistency/too-few-phi-inputs - * @tags consistency - */ - -import java -import semmle.code.java.dataflow.SSA - -from SsaPhiNode phi, int inputs -where - inputs = count(SsaVariable v | v = phi.getAPhiInput()) and - inputs < 2 -select phi, "Phi node for " + phi.getSourceVariable() + " has only " + inputs + " inputs." diff --git a/java/ql/src/meta/ssa/UncertainDefWithoutPrior.ql b/java/ql/src/meta/ssa/UncertainDefWithoutPrior.ql deleted file mode 100644 index 1979c218ac2..00000000000 --- a/java/ql/src/meta/ssa/UncertainDefWithoutPrior.ql +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @name An uncertain SSA update without a prior definition - * @description An uncertain SSA update may retain its previous value - * and should therefore have a prior definition. - * @kind problem - * @problem.severity error - * @id java/consistency/uncertain-ssa-update-without-prior-def - * @tags consistency - */ - -import java -import semmle.code.java.dataflow.SSA - -predicate live(SsaVariable v) { - exists(v.getAUse()) - or - exists(SsaPhiNode phi | live(phi) and phi.getAPhiInput() = v) - or - exists(SsaUncertainImplicitUpdate upd | live(upd) and upd.getPriorDef() = v) -} - -from SsaUncertainImplicitUpdate upd -where - live(upd) and - not exists(upd.getPriorDef()) -select upd, "No prior definition of " + upd diff --git a/java/ql/src/meta/ssa/UseWithoutUniqueSsaVariable.ql b/java/ql/src/meta/ssa/UseWithoutUniqueSsaVariable.ql deleted file mode 100644 index 76f6ee37fb1..00000000000 --- a/java/ql/src/meta/ssa/UseWithoutUniqueSsaVariable.ql +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @name A variable use without a unique SSA variable - * @description Every variable use that is sufficiently trackable - * should have a unique associated SSA variable. - * @kind problem - * @problem.severity error - * @id java/consistency/use-without-unique-ssa-variable - * @tags consistency - */ - -import java -import semmle.code.java.dataflow.SSA - -class SsaConvertibleReadAccess extends VarRead { - SsaConvertibleReadAccess() { - this.getEnclosingCallable().getBody().getBasicBlock().getASuccessor*() = this.getBasicBlock() and - ( - not exists(this.getQualifier()) - or - this.getVariable() instanceof LocalScopeVariable - or - this.getVariable().(Field).isStatic() - or - exists(Expr q | q = this.getQualifier() | - q instanceof ThisAccess or - q instanceof SuperAccess or - q instanceof SsaConvertibleReadAccess - ) - ) - } -} - -predicate accessWithoutSourceVariable(SsaConvertibleReadAccess va) { - not exists(SsaSourceVariable v | v.getAnAccess() = va) -} - -predicate readAccessWithoutSsaVariable(SsaConvertibleReadAccess va) { - not exists(SsaVariable v | v.getAUse() = va) -} - -predicate readAccessWithAmbiguousSsaVariable(SsaConvertibleReadAccess va) { - 1 < strictcount(SsaVariable v | v.getAUse() = va) -} - -from SsaConvertibleReadAccess va, string problem -where - accessWithoutSourceVariable(va) and problem = "No source variable" - or - readAccessWithoutSsaVariable(va) and problem = "No SSA variable" - or - readAccessWithAmbiguousSsaVariable(va) and problem = "Multiple SSA variables" -select va, problem From d650ccb74b38bf03db050f1ae61b41926206e0ef Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:10:28 +0000 Subject: [PATCH 324/965] Rust: Generalize some std::io::Read models. --- .../ql/lib/codeql/rust/frameworks/rustls.model.yml | 1 - .../codeql/rust/frameworks/stdlib/net.model.yml | 8 ++++---- .../dataflow/sources/net/InlineFlow.expected | 14 ++++++-------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml index 19f7ececcd2..e9b3cd32292 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -11,4 +11,3 @@ extensions: - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] - ["::reader", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml index bf158cbae2d..f7f4475c045 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml @@ -10,7 +10,7 @@ extensions: extensible: summaryModel data: - ["::try_clone", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as std::io::Read>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as std::io::Read>::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as std::io::Read>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as std::io::Read>::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index adeaf8225fe..876ac960f05 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -34,10 +34,9 @@ models | 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 34 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 35 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 36 | Summary: ::read; Argument[self]; Argument[0].Reference; taint | -| 37 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | -| 38 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | -| 39 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | +| 36 | Summary: ::peek; Argument[self]; Argument[0].Reference; taint | +| 37 | Summary: ::try_read; Argument[self]; Argument[0].Reference; taint | +| 38 | Summary: ::try_read_buf; Argument[self]; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | @@ -107,7 +106,6 @@ edges | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:19 | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:36 | | test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | @@ -126,10 +124,10 @@ edges | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:37 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:36 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:37 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | From c8b80463027011cd2f5eb4b5c610a36cd3525b00 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:30:41 +0000 Subject: [PATCH 325/965] Rust: Generalize a model of alloc::boxed::Box. --- rust/ql/lib/codeql/rust/frameworks/futures.model.yml | 1 - rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index dd81e23fad6..966dbd5f603 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -15,5 +15,4 @@ extensions: - ["<_ as futures_util::io::AsyncBufReadExt>::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::next", "Argument[self]", "ReturnValue.Future.Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 9a29741bd37..17019618601 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -18,6 +18,7 @@ extensions: - ["::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue.Future.Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] From 96fc1e889af083a618d606b51e066e5e276c4b3e Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 13:17:53 +0100 Subject: [PATCH 326/965] Java: Accept .expected file. --- .../java/query-suite/not_included_in_qls.expected | 4 ---- 1 file changed, 4 deletions(-) diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 9c967eb3d98..8045226ace4 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -271,10 +271,6 @@ ql/java/ql/src/external/MostlyDuplicateMethod.ql ql/java/ql/src/external/MostlySimilarFile.ql ql/java/ql/src/filters/ClassifyFiles.ql ql/java/ql/src/meta/frameworks/Coverage.ql -ql/java/ql/src/meta/ssa/AmbiguousToString.ql -ql/java/ql/src/meta/ssa/TooFewPhiInputs.ql -ql/java/ql/src/meta/ssa/UncertainDefWithoutPrior.ql -ql/java/ql/src/meta/ssa/UseWithoutUniqueSsaVariable.ql ql/java/ql/src/utils/modelconverter/ExtractNeutrals.ql ql/java/ql/src/utils/modelconverter/ExtractSinks.ql ql/java/ql/src/utils/modelconverter/ExtractSources.ql From bd11873e0d81b53da0deccfac8a8df774f12c62d Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:04:30 +0000 Subject: [PATCH 327/965] Rust: Generalize a model of futures_io...poll_read. --- .../codeql/rust/frameworks/futures.model.yml | 1 + .../codeql/rust/frameworks/rustls.model.yml | 1 - .../dataflow/sources/net/InlineFlow.expected | 129 ++++++++++-------- .../dataflow/sources/net/test.rs | 4 +- 4 files changed, 75 insertions(+), 60 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index 966dbd5f603..35e547076d9 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -16,3 +16,4 @@ extensions: - ["<_ as futures_util::io::AsyncBufReadExt>::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as futures_util::io::AsyncBufReadExt>::lines", "Argument[self]", "ReturnValue", "taint", "manual"] - ["<_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["<_ as futures_io::if_std::AsyncRead>::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml index e9b3cd32292..b1fea8ac538 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -9,5 +9,4 @@ extensions: extensible: summaryModel data: - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] - ["::reader", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 876ac960f05..d29b19fe58a 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -7,25 +7,25 @@ models | 6 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 7 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 8 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 9 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 10 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | -| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | -| 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | -| 18 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | -| 19 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | -| 20 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | -| 22 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 23 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 24 | Summary: ::new; Argument[0]; ReturnValue; value | -| 25 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 26 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 27 | Summary: ::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 9 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 10 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self]; Argument[0].Reference; taint | +| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self]; Argument[1].Reference; taint | +| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 18 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self]; Argument[0].Reference; taint | +| 19 | Summary: <_ as std::io::BufRead>::read_line; Argument[self]; Argument[0].Reference; taint | +| 20 | Summary: <_ as std::io::Read>::read; Argument[self]; Argument[0].Reference; taint | +| 21 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self]; Argument[0].Reference; taint | +| 23 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 24 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 25 | Summary: ::new; Argument[0]; ReturnValue; value | +| 26 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 27 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 28 | Summary: ::new; Argument[0]; ReturnValue; taint | | 29 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 30 | Summary: ::chunk; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | @@ -46,21 +46,21 @@ edges | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:26 | | test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:33 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:25 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:26 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:26 | | test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:34 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:25 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:26 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:25 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:26 | | test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:32 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:25 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:26 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | @@ -86,7 +86,7 @@ edges | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:22 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:23 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | @@ -105,7 +105,7 @@ edges | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | -| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:155:13:155:22 | mut stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:20 | | test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | @@ -117,15 +117,15 @@ edges | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:4 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | -| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:18 | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:20 | +| test.rs:182:21:182:30 | mut reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:19 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:21 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | | test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:35 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:36 | -| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:21 | +| test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:22 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:37 | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | @@ -157,22 +157,22 @@ edges | test.rs:380:13:380:22 | mut reader | test.rs:386:44:386:49 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:399:68:399:73 | reader | provenance | | | test.rs:380:13:380:22 | mut reader | test.rs:403:31:403:36 | reader | provenance | | -| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | | test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | +| test.rs:380:13:380:22 | mut reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | | test.rs:380:13:380:22 | mut reader | test.rs:408:55:408:60 | reader | provenance | | | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | | test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | | test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:26 | +| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:27 | | test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | -| test.rs:386:17:386:26 | mut pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:386:17:386:26 | mut pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:387:19:387:24 | pinned [&ref] | provenance | | -| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:386:17:386:26 | mut pinned [&ref] | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | | test.rs:386:30:386:50 | ...::new(...) [&ref] | test.rs:386:17:386:26 | mut pinned [&ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:23 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [&ref] | provenance | MaD:24 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:24 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [&ref] | provenance | MaD:25 | | test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | | test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | | test.rs:387:19:387:24 | pinned [&ref] | test.rs:387:18:387:24 | &pinned | provenance | | @@ -181,35 +181,35 @@ edges | test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | | test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | | test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | -| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | +| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | | test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | | test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | -| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | | test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:423:41:423:47 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:9 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 | | test.rs:408:13:408:23 | mut reader2 | test.rs:444:44:444:50 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:457:68:457:74 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:461:31:461:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | | test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | | test.rs:408:13:408:23 | mut reader2 | test.rs:467:44:467:50 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:9 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:10 | | test.rs:408:13:408:23 | mut reader2 | test.rs:486:31:486:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 | | test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | | test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:10 | | test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:11 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | -| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:408:13:408:23 | mut reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:18 | | test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | | test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:28 | | test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | @@ -219,8 +219,8 @@ edges | test.rs:413:17:413:26 | mut pinned [&ref] | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | | test.rs:413:30:413:51 | ...::new(...) [&ref] | test.rs:413:17:413:26 | mut pinned [&ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:23 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [&ref] | provenance | MaD:24 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [&ref] | provenance | MaD:25 | | test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | | test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:414:19:414:24 | pinned [&ref] | test.rs:414:18:414:24 | &pinned | provenance | | @@ -235,8 +235,8 @@ edges | test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:423:27:423:48 | ...::new(...) [&ref] | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:23 | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) [&ref] | provenance | MaD:24 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:24 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) [&ref] | provenance | MaD:25 | | test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | @@ -249,20 +249,27 @@ edges | test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | | test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | | test.rs:444:17:444:26 | mut pinned | test.rs:445:19:445:24 | pinned | provenance | | +| test.rs:444:17:444:26 | mut pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:445:19:445:24 | pinned [&ref] | provenance | | +| test.rs:444:17:444:26 | mut pinned [&ref] | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | | test.rs:444:30:444:51 | ...::new(...) [&ref] | test.rs:444:17:444:26 | mut pinned [&ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:23 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [&ref] | provenance | MaD:24 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [&ref] | provenance | MaD:25 | | test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | | test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | | test.rs:445:19:445:24 | pinned [&ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | +| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | +| test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | | +| test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | | +| test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | | +| test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | | test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | | test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | | test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | @@ -272,8 +279,8 @@ edges | test.rs:467:17:467:26 | mut pinned [&ref] | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:8 | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) [&ref] | test.rs:467:17:467:26 | mut pinned [&ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:23 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [&ref] | provenance | MaD:24 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [&ref] | provenance | MaD:25 | | test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:468:19:468:24 | pinned [&ref] | test.rs:468:18:468:24 | &pinned | provenance | | @@ -288,15 +295,15 @@ edges | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | | test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | | test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 | | test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | | test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | | test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:10 | +| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:11 | | test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | | test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | | test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | | test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | @@ -510,6 +517,12 @@ nodes | test.rs:445:18:445:24 | &pinned | semmle.label | &pinned | | test.rs:445:19:445:24 | pinned | semmle.label | pinned | | test.rs:445:19:445:24 | pinned [&ref] | semmle.label | pinned [&ref] | +| test.rs:447:56:447:66 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:447:61:447:66 | [post] buffer | semmle.label | [post] buffer | +| test.rs:448:18:448:24 | &buffer | semmle.label | &buffer | +| test.rs:448:19:448:24 | buffer | semmle.label | buffer | +| test.rs:450:22:450:33 | &... | semmle.label | &... | +| test.rs:450:23:450:33 | buffer[...] | semmle.label | buffer[...] | | test.rs:457:63:457:74 | &mut reader2 [&ref] | semmle.label | &mut reader2 [&ref] | | test.rs:457:68:457:74 | reader2 | semmle.label | reader2 | | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | semmle.label | [post] &mut buffer1 [&ref] | @@ -596,6 +609,8 @@ testFailures | test.rs:427:26:427:28 | buf | test.rs:373:19:373:36 | ...::connect | test.rs:427:26:427:28 | buf | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:438:18:438:23 | buffer | test.rs:373:19:373:36 | ...::connect | test.rs:438:18:438:23 | buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:445:18:445:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:445:18:445:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:448:18:448:24 | &buffer | test.rs:373:19:373:36 | ...::connect | test.rs:448:18:448:24 | &buffer | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | +| test.rs:450:22:450:33 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:450:22:450:33 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:458:18:458:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:458:18:458:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:462:18:462:40 | &... | test.rs:373:19:373:36 | ...::connect | test.rs:462:18:462:40 | &... | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:468:18:468:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:468:18:468:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index ce100e35f2b..254a27349d9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -445,9 +445,9 @@ mod futures_rustls { sink(&pinned); // $ hasTaintFlow=url let mut cx = Context::from_waker(futures::task::noop_waker_ref()); let bytes_read = pinned.poll_read(&mut cx, &mut buffer); - sink(&buffer); // $ MISSING: hasTaintFlow=url + sink(&buffer); // $ hasTaintFlow=url if let Poll::Ready(Ok(n)) = bytes_read { - sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + sink(&buffer[..n]); // $ hasTaintFlow=url } } From 714b2ad56572b22c5b37c2d702d9510319e538cf Mon Sep 17 00:00:00 2001 From: idrissrio Date: Fri, 17 Oct 2025 10:33:38 +0200 Subject: [PATCH 328/965] Java: Add integration test for maven --- .../maven-wrapper-missing-properties/mvnw | 287 ++++++++++++++++++ .../maven-wrapper-missing-properties/mvnw.cmd | 187 ++++++++++++ .../maven-wrapper-missing-properties/pom.xml | 27 ++ .../source_archive.expected | 2 + .../src/main/java/com/example/Hello.java | 7 + .../maven-wrapper-missing-properties/test.py | 2 + 6 files changed, 512 insertions(+) create mode 100755 java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw create mode 100644 java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw.cmd create mode 100644 java/ql/integration-tests/java/maven-wrapper-missing-properties/pom.xml create mode 100644 java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-wrapper-missing-properties/src/main/java/com/example/Hello.java create mode 100644 java/ql/integration-tests/java/maven-wrapper-missing-properties/test.py diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw b/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw new file mode 100755 index 00000000000..b7f064624f8 --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw @@ -0,0 +1,287 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.1.1 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="`/usr/libexec/java_home`"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + printf '%s' "$(cd "$basedir"; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname $0)") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) wrapperUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $wrapperUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + QUIET="--quiet" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + QUIET="" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" + fi + [ $? -eq 0 ] || rm -f "$wrapperJarPath" + elif command -v curl > /dev/null; then + QUIET="--silent" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + QUIET="" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L + fi + [ $? -eq 0 ] || rm -f "$wrapperJarPath" + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaSource="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=`cygpath --path --windows "$javaSource"` + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw.cmd b/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw.cmd new file mode 100644 index 00000000000..474c9d6b74c --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/mvnw.cmd @@ -0,0 +1,187 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.1.1 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/pom.xml b/java/ql/integration-tests/java/maven-wrapper-missing-properties/pom.xml new file mode 100644 index 00000000000..17dfd04484f --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.example + maven-wrapper-missing-properties-test + 1.0-SNAPSHOT + jar + + + 11 + 11 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + + + diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected b/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected new file mode 100644 index 00000000000..db20d035b40 --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected @@ -0,0 +1,2 @@ +src/main/java/com/example +src/main/java/com/example/Hello.java diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/src/main/java/com/example/Hello.java b/java/ql/integration-tests/java/maven-wrapper-missing-properties/src/main/java/com/example/Hello.java new file mode 100644 index 00000000000..0d2931004a0 --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/src/main/java/com/example/Hello.java @@ -0,0 +1,7 @@ +package com.example; + +public class Hello { + public static void main(String[] args) { + System.out.println("Hello, World!"); + } +} diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/test.py b/java/ql/integration-tests/java/maven-wrapper-missing-properties/test.py new file mode 100644 index 00000000000..ef93712d879 --- /dev/null +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create(build_mode="autobuild") From d473b369189f745f844215f35aa77c533c4a09b2 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Fri, 17 Oct 2025 10:44:46 +0200 Subject: [PATCH 329/965] Java: Accept new test results after extractor changes --- .../maven-wrapper-missing-properties/source_archive.expected | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected b/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected index db20d035b40..6ea990c4d1b 100644 --- a/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected +++ b/java/ql/integration-tests/java/maven-wrapper-missing-properties/source_archive.expected @@ -1,2 +1,4 @@ -src/main/java/com/example +.mvn/wrapper/maven-wrapper.properties +pom.xml src/main/java/com/example/Hello.java +target/maven-archiver/pom.properties From 531b9948191504fa0004c34260794df06e6bd0e6 Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 27 Oct 2025 14:27:32 +0100 Subject: [PATCH 330/965] java: add test for aliasing found by triage --- .../ThreadSafe/ThreadSafe.expected | 1 + .../ThreadSafe/examples/Alias.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/Alias.java diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index 3d73caaffe5..d09771f97c1 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -1,3 +1,4 @@ +| examples/Alias.java:16:13:16:13 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Alias.java:16:13:16:13 | y | this expression | | examples/C.java:14:9:14:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:14:9:14:14 | this.y | this expression | | examples/C.java:15:9:15:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:15:9:15:14 | this.y | this expression | | examples/C.java:16:9:16:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:16:9:16:14 | this.y | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Alias.java b/java/ql/test/query-tests/ThreadSafe/examples/Alias.java new file mode 100644 index 00000000000..679e2c3366a --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/Alias.java @@ -0,0 +1,21 @@ +package examples; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +@ThreadSafe +public class Alias { + private int y; + + private final ReentrantLock lock = new ReentrantLock(); + + public void notMismatch() { + final ReentrantLock lock = this.lock; + lock.lock(); + try { + y = 42; // $ SPURIOUS: Alert + } finally { + this.lock.unlock(); + } + } +} \ No newline at end of file From 406e48b3bb348c6e414355ab8e01a1cd8a774bfd Mon Sep 17 00:00:00 2001 From: yoff Date: Mon, 27 Oct 2025 14:30:25 +0100 Subject: [PATCH 331/965] java: fix aliasing FP reorganise code, adding `LockField` --- java/ql/lib/semmle/code/java/Concurrency.qll | 49 ++++++++++++------- .../ThreadSafe/ThreadSafe.expected | 1 - .../ThreadSafe/examples/Alias.java | 2 +- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index b16aa850c39..da2783bc308 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -184,16 +184,6 @@ module Monitors { locallySynchronizedOnClass(e, m.(ClassMonitor).getClassType()) } - /** Holds if `localLock` refers to `lock`. */ - predicate represents(Field lock, Variable localLock) { - lock.getType() instanceof LockType and - ( - localLock = lock - or - localLock.getInitializer() = lock.getAnAccess() - ) - } - /** Gets the control flow node that must dominate `e` when `e` is synchronized on a lock. */ ControlFlowNode getNodeToBeDominated(Expr e) { // If `e` is the LHS of an assignment, use the control flow node for the assignment @@ -204,15 +194,38 @@ module Monitors { result = e.getControlFlowNode() } + /** A field storing a lock. */ + class LockField extends Field { + LockField() { this.getType() instanceof LockType } + + /** Gets a call to a method locking the lock stored in this field. */ + MethodCall getLockCall() { + result.getQualifier() = this.getRepresentative().getAnAccess() and + result = this.getType().(LockType).getLockAccess() + } + + /** Gets a call to a method unlocking the lock stored in this field. */ + MethodCall getUnlockCall() { + result.getQualifier() = this.getRepresentative().getAnAccess() and + result = this.getType().(LockType).getUnlockAccess() + } + + /** + * Gets a variable representing this field. + * It can be the field itself or a local variable initialized to the field. + */ + private Variable getRepresentative() { + result = this + or + result.getInitializer() = this.getAnAccess() + } + } + /** Holds if `e` is synchronized on the `Lock` `lock` by a locking call. */ - predicate locallyLockedOn(Expr e, Field lock) { - lock.getType() instanceof LockType and - exists(Variable localLock, MethodCall lockCall, MethodCall unlockCall | - represents(lock, localLock) and - lockCall.getQualifier() = localLock.getAnAccess() and - lockCall = lock.getType().(LockType).getLockAccess() and - unlockCall.getQualifier() = localLock.getAnAccess() and - unlockCall = lock.getType().(LockType).getUnlockAccess() + predicate locallyLockedOn(Expr e, LockField lock) { + exists(MethodCall lockCall, MethodCall unlockCall | + lockCall = lock.getLockCall() and + unlockCall = lock.getUnlockCall() | dominates(lockCall.getControlFlowNode(), unlockCall.getControlFlowNode()) and dominates(lockCall.getControlFlowNode(), getNodeToBeDominated(e)) and diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index d09771f97c1..3d73caaffe5 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -1,4 +1,3 @@ -| examples/Alias.java:16:13:16:13 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Alias.java:16:13:16:13 | y | this expression | | examples/C.java:14:9:14:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:14:9:14:14 | this.y | this expression | | examples/C.java:15:9:15:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:15:9:15:14 | this.y | this expression | | examples/C.java:16:9:16:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/C.java:16:9:16:14 | this.y | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/Alias.java b/java/ql/test/query-tests/ThreadSafe/examples/Alias.java index 679e2c3366a..802bae2fbb3 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/Alias.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/Alias.java @@ -13,7 +13,7 @@ public class Alias { final ReentrantLock lock = this.lock; lock.lock(); try { - y = 42; // $ SPURIOUS: Alert + y = 42; } finally { this.lock.unlock(); } From 56811d02acaade17ce96335130776b4061e9b422 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:59:40 +0000 Subject: [PATCH 332/965] Rust: Generalize more models. --- rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml | 8 ++++---- rust/ql/lib/codeql/rust/frameworks/mysql.model.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml index 4c8858457c1..ef3b01db0eb 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml @@ -9,8 +9,8 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_stream", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - - ["::query_iter", "Argument[0]", "sql-injection", "manual"] - - ["::prep", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::prep", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel @@ -21,8 +21,8 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::exec_first", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[2].Parameter[1]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - - ["::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - - ["::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql_async::queryable::Queryable>::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] - ["::get", "ReturnValue.Field[core::option::Option::Some(0)]", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml index 7d6fa520eb8..2b9a644733e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -10,10 +10,10 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::query_first_opt", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[0]", "sql-injection", "manual"] - - ["::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_iter", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[0]", "sql-injection", "manual"] - - ["::prep", "Argument[0]", "sql-injection", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::prep", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel @@ -30,8 +30,8 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[2].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[3].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - - ["::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - - ["::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["<_ as mysql::conn::queryable::Queryable>::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[1].Parameter[0].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] From a468b1d647df074c46a1a5e8a74312f9669ebcbe Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:46:01 +0000 Subject: [PATCH 333/965] Rust: Accept regressions spotted by CI. --- .../sources/database/InlineFlow.expected | 96 +++-- .../sources/database/TaintSources.expected | 6 +- .../security/CWE-089/SqlInjection.expected | 337 ++++++++---------- .../security/CWE-089/SqlSinks.expected | 6 + 4 files changed, 200 insertions(+), 245 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected index db1e69c43fb..2b00c00ea47 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected @@ -4,50 +4,43 @@ models | 3 | Source: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | | 4 | Source: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | | 5 | Source: <_ as mysql_async::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | -| 6 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)].Element; database | -| 7 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 8 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 9 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 10 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 11 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | -| 12 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | -| 13 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | -| 14 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | -| 15 | Summary: ::add; Argument[0]; ReturnValue; taint | -| 16 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 17 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 6 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 7 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 8 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 9 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 10 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 11 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 12 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | +| 13 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | +| 14 | Summary: ::add; Argument[0]; ReturnValue; taint | +| 15 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 16 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | test.rs:18:13:18:14 | v1 | test.rs:19:14:19:15 | v1 | provenance | | -| test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:16 | +| test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:15 | | test.rs:18:24:18:42 | ... .unwrap() | test.rs:18:13:18:14 | v1 | provenance | | -| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:6 | | test.rs:21:13:21:14 | v2 | test.rs:22:14:22:15 | v2 | provenance | | -| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:16 | -| test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:17 | +| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:15 | +| test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:16 | | test.rs:21:24:21:55 | ... .unwrap() | test.rs:21:13:21:14 | v2 | provenance | | -| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | +| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:7 | | test.rs:24:13:24:14 | v3 | test.rs:25:14:25:15 | v3 | provenance | | -| test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:16 | +| test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:15 | | test.rs:24:24:24:43 | ... .unwrap() | test.rs:24:13:24:14 | v3 | provenance | | -| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:9 | +| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:8 | | test.rs:27:13:27:14 | v4 | test.rs:28:14:28:15 | v4 | provenance | | -| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:16 | -| test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:17 | +| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:15 | +| test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:16 | | test.rs:27:24:27:56 | ... .unwrap() | test.rs:27:13:27:14 | v4 | provenance | | -| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | +| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:9 | | test.rs:37:13:37:14 | v6 | test.rs:38:14:38:15 | v6 | provenance | | | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | test.rs:37:23:37:64 | TryExpr [Some] | provenance | | -| test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:16 | +| test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:15 | | test.rs:37:23:37:73 | ... .unwrap() | test.rs:37:13:37:14 | v6 | provenance | | | test.rs:37:28:37:38 | query_first | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | -| test.rs:40:13:40:18 | mut t1 [element] | test.rs:42:20:42:21 | t1 [element] | provenance | | -| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | test.rs:40:22:40:72 | TryExpr [element] | provenance | | -| test.rs:40:22:40:72 | TryExpr [element] | test.rs:40:13:40:18 | mut t1 [element] | provenance | | -| test.rs:40:27:40:35 | exec_iter | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:6 | -| test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:16 | -| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:7 | -| test.rs:42:13:42:15 | row | test.rs:44:22:44:22 | v | provenance | | -| test.rs:42:20:42:21 | t1 [element] | test.rs:42:13:42:15 | row | provenance | | +| test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:15 | +| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:6 | | test.rs:48:22:48:30 | query_map | test.rs:50:14:50:24 | ...: i64 | provenance | Src:MaD:3 | | test.rs:50:14:50:24 | ...: i64 | test.rs:51:22:51:27 | values | provenance | | | test.rs:64:13:64:17 | total | test.rs:68:14:68:18 | total | provenance | | @@ -57,29 +50,29 @@ edges | test.rs:64:76:64:83 | ...: i64 | test.rs:64:86:67:9 | { ... } | provenance | | | test.rs:64:76:64:83 | ...: i64 | test.rs:65:18:65:20 | row | provenance | | | test.rs:64:76:64:83 | ...: i64 | test.rs:66:19:66:21 | row | provenance | | -| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:13 | +| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:12 | | test.rs:66:13:66:21 | ... + ... | test.rs:64:86:67:9 | { ... } | provenance | | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:10 | | test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:11 | -| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:12 | -| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:15 | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:14 | | test.rs:105:13:105:14 | v1 | test.rs:106:14:106:15 | v1 | provenance | | -| test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:16 | +| test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:15 | | test.rs:105:24:105:42 | ... .unwrap() | test.rs:105:13:105:14 | v1 | provenance | | -| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:6 | | test.rs:108:13:108:14 | v2 | test.rs:109:14:109:15 | v2 | provenance | | -| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:16 | -| test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:17 | +| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:15 | +| test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:16 | | test.rs:108:24:108:55 | ... .unwrap() | test.rs:108:13:108:14 | v2 | provenance | | -| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | +| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:7 | | test.rs:111:13:111:14 | v3 | test.rs:112:14:112:15 | v3 | provenance | | -| test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:16 | +| test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:15 | | test.rs:111:24:111:43 | ... .unwrap() | test.rs:111:13:111:14 | v3 | provenance | | -| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:9 | +| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:8 | | test.rs:114:13:114:14 | v4 | test.rs:115:14:115:15 | v4 | provenance | | -| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:16 | -| test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:17 | +| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:15 | +| test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:16 | | test.rs:114:24:114:56 | ... .unwrap() | test.rs:114:13:114:14 | v4 | provenance | | -| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | +| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:9 | | test.rs:135:22:135:30 | query_map | test.rs:137:14:137:24 | ...: i64 | provenance | Src:MaD:5 | | test.rs:137:14:137:24 | ...: i64 | test.rs:138:22:138:27 | values | provenance | | | test.rs:151:13:151:17 | total | test.rs:155:14:155:18 | total | provenance | | @@ -90,11 +83,11 @@ edges | test.rs:151:76:151:83 | ...: i64 | test.rs:151:86:154:9 | { ... } | provenance | | | test.rs:151:76:151:83 | ...: i64 | test.rs:152:18:152:20 | row | provenance | | | test.rs:151:76:151:83 | ...: i64 | test.rs:153:19:153:21 | row | provenance | | -| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:14 | +| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:13 | | test.rs:153:13:153:21 | ... + ... | test.rs:151:86:154:9 | { ... } | provenance | | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:10 | | test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:11 | -| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:12 | -| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:15 | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:14 | nodes | test.rs:18:13:18:14 | v1 | semmle.label | v1 | | test.rs:18:24:18:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | @@ -124,16 +117,9 @@ nodes | test.rs:37:23:37:73 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:37:28:37:38 | query_first | semmle.label | query_first | | test.rs:38:14:38:15 | v6 | semmle.label | v6 | -| test.rs:40:13:40:18 | mut t1 [element] | semmle.label | mut t1 [element] | -| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | -| test.rs:40:22:40:72 | TryExpr [element] | semmle.label | TryExpr [element] | -| test.rs:40:27:40:35 | exec_iter | semmle.label | exec_iter | | test.rs:41:14:41:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | | test.rs:41:14:41:70 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:41:42:41:44 | get | semmle.label | get | -| test.rs:42:13:42:15 | row | semmle.label | row | -| test.rs:42:20:42:21 | t1 [element] | semmle.label | t1 [element] | -| test.rs:44:22:44:22 | v | semmle.label | v | | test.rs:48:22:48:30 | query_map | semmle.label | query_map | | test.rs:50:14:50:24 | ...: i64 | semmle.label | ...: i64 | | test.rs:51:22:51:27 | values | semmle.label | values | @@ -185,6 +171,7 @@ nodes | test.rs:155:14:155:18 | total | semmle.label | total | subpaths testFailures +| test.rs:44:26:44:42 | //... | Missing result: hasTaintFlow | #select | test.rs:19:14:19:15 | v1 | test.rs:18:28:18:30 | get | test.rs:19:14:19:15 | v1 | $@ | test.rs:18:28:18:30 | get | get | | test.rs:22:14:22:15 | v2 | test.rs:21:28:21:34 | get_opt | test.rs:22:14:22:15 | v2 | $@ | test.rs:21:28:21:34 | get_opt | get_opt | @@ -192,7 +179,6 @@ testFailures | test.rs:28:14:28:15 | v4 | test.rs:27:28:27:35 | take_opt | test.rs:28:14:28:15 | v4 | $@ | test.rs:27:28:27:35 | take_opt | take_opt | | test.rs:38:14:38:15 | v6 | test.rs:37:28:37:38 | query_first | test.rs:38:14:38:15 | v6 | $@ | test.rs:37:28:37:38 | query_first | query_first | | test.rs:41:14:41:70 | ... .unwrap() | test.rs:41:42:41:44 | get | test.rs:41:14:41:70 | ... .unwrap() | $@ | test.rs:41:42:41:44 | get | get | -| test.rs:44:22:44:22 | v | test.rs:40:27:40:35 | exec_iter | test.rs:44:22:44:22 | v | $@ | test.rs:40:27:40:35 | exec_iter | exec_iter | | test.rs:51:22:51:27 | values | test.rs:48:22:48:30 | query_map | test.rs:51:22:51:27 | values | $@ | test.rs:48:22:48:30 | query_map | query_map | | test.rs:65:18:65:20 | row | test.rs:64:26:64:35 | query_fold | test.rs:65:18:65:20 | row | $@ | test.rs:64:26:64:35 | query_fold | query_fold | | test.rs:68:14:68:18 | total | test.rs:64:26:64:35 | query_fold | test.rs:68:14:68:18 | total | $@ | test.rs:64:26:64:35 | query_fold | query_fold | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected index 9132dfaa2b0..96c4a62f569 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected @@ -1,3 +1,4 @@ +#select | test.rs:15:47:15:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:18:28:18:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:21:28:21:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | @@ -5,7 +6,6 @@ | test.rs:27:28:27:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:30:26:30:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:37:28:37:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:40:27:40:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:41:42:41:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:48:22:48:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:55:22:55:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | @@ -18,8 +18,10 @@ | test.rs:114:28:114:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:117:26:117:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:124:28:124:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | -| test.rs:127:27:127:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:135:22:135:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:142:22:142:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:151:26:151:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:157:22:157:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | +testFailures +| test.rs:40:75:40:112 | //... | Missing result: Alert[rust/summary/taint-sources] | +| test.rs:127:81:127:118 | //... | Missing result: Alert[rust/summary/taint-sources] | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa7937..5c9992256e9 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -6,20 +6,16 @@ | mysql.rs:29:49:29:63 | query_first_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:29:49:29:63 | query_first_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:30:22:30:31 | query_fold | mysql.rs:12:33:12:54 | ...::get | mysql.rs:30:22:30:31 | query_fold | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:31:22:31:35 | query_fold_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:31:22:31:35 | query_fold_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:36:22:36:31 | query_iter | mysql.rs:12:33:12:54 | ...::get | mysql.rs:36:22:36:31 | query_iter | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:37:22:37:30 | query_map | mysql.rs:12:33:12:54 | ...::get | mysql.rs:37:22:37:30 | query_map | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:38:22:38:34 | query_map_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:38:22:38:34 | query_map_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:42:33:42:37 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:42:33:42:37 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | -| mysql.rs:75:26:75:29 | prep | mysql.rs:12:33:12:54 | ...::get | mysql.rs:75:26:75:29 | prep | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:80:15:80:24 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:80:15:80:24 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:110:32:110:36 | query | mysql.rs:97:33:97:54 | ...::get | mysql.rs:110:32:110:36 | query | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:111:14:111:23 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:111:14:111:23 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:112:35:112:45 | query_first | mysql.rs:97:33:97:54 | ...::get | mysql.rs:112:35:112:45 | query_first | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:114:14:114:23 | query_fold | mysql.rs:97:33:97:54 | ...::get | mysql.rs:114:14:114:23 | query_fold | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:116:22:116:31 | query_iter | mysql.rs:97:33:97:54 | ...::get | mysql.rs:116:22:116:31 | query_iter | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:118:14:118:25 | query_stream | mysql.rs:97:33:97:54 | ...::get | mysql.rs:118:14:118:25 | query_stream | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | @@ -35,255 +31,235 @@ | sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | -| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:35 | -| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | +| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:27 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:31 | +| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:28 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:42 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | -| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:27 | -| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:23 | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:24 | | mysql.rs:18:13:18:89 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | -| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | +| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:22 | | mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | -| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | -| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | -| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | -| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:35 | -| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | +| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:27 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:31 | +| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:28 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:35 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:29 | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:42 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:25 | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | -| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:27 | -| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:23 | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:24 | | mysql.rs:103:13:103:89 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | -| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | +| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:22 | | mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | -| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | -| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | -| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | -| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | +| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:20 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:21 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:26 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:30 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:30 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | -| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:35 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | +| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:27 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:31 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:28 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | +| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:28 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:25 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:32 | +| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:33 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:29 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:25 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:27 | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:23 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:24 | | sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 | +| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:22 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:25 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:32 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:33 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | -| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:35 | -| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | +| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:27 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:31 | +| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:28 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:27 | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:23 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:24 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | +| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:22 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:18 Sink:MaD:18 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | -| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | -| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:35 | -| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | +| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | +| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:27 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:31 | +| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:28 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:29 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:25 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:27 | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:23 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:24 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | +| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:22 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | models | 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | | 2 | Sink: <_ as mysql::conn::queryable::Queryable>::query_drop; Argument[0]; sql-injection | @@ -300,28 +276,24 @@ models | 13 | Sink: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[0]; sql-injection | | 14 | Sink: <_ as mysql_async::queryable::Queryable>::query_map; Argument[0]; sql-injection | | 15 | Sink: <_ as mysql_async::queryable::Queryable>::query_stream; Argument[0]; sql-injection | -| 16 | Sink: ::prep; Argument[0]; sql-injection | -| 17 | Sink: ::query_iter; Argument[0]; sql-injection | -| 18 | Sink: ::prep; Argument[0]; sql-injection | -| 19 | Sink: ::query_iter; Argument[0]; sql-injection | -| 20 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | -| 21 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | -| 22 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | -| 23 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 24 | Source: std::env::args; ReturnValue.Element; commandargs | -| 25 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 26 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | -| 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | -| 28 | Summary: ::add; Argument[self]; ReturnValue; value | -| 29 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 30 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 34 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 37 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 16 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | +| 17 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | +| 18 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | +| 19 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 20 | Source: std::env::args; ReturnValue.Element; commandargs | +| 21 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 22 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 23 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | +| 24 | Summary: ::add; Argument[self]; ReturnValue; value | +| 25 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 26 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 28 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 29 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 30 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 33 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | @@ -362,10 +334,6 @@ nodes | mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:32:13:32:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter | -| mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:37:22:37:30 | query_map | semmle.label | query_map | | mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:37:32:37:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -378,10 +346,6 @@ nodes | mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:42:39:42:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:75:26:75:29 | prep | semmle.label | prep | -| mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop | | mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:80:26:80:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -413,10 +377,6 @@ nodes | mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:114:25:114:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter | -| mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream | | mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:118:40:118:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -425,10 +385,6 @@ nodes | mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:121:24:121:44 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | -| mysql.rs:149:26:149:29 | prep | semmle.label | prep | -| mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | -| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop | | mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:154:26:154:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -535,3 +491,8 @@ nodes | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | subpaths +testFailures +| mysql.rs:36:58:36:105 | //... | Missing result: Alert[rust/sql-injection]=remote10 | +| mysql.rs:75:56:75:103 | //... | Missing result: Alert[rust/sql-injection]=remote10 | +| mysql.rs:116:64:116:111 | //... | Missing result: Alert[rust/sql-injection]=remote11 | +| mysql.rs:149:62:149:109 | //... | Missing result: Alert[rust/sql-injection]=remote11 | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected b/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected index e69de29bb2d..dcc291ea4eb 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected @@ -0,0 +1,6 @@ +| mysql.rs:36:58:36:105 | //... | Missing result: sql-sink | +| mysql.rs:45:57:45:69 | //... | Missing result: sql-sink | +| mysql.rs:75:56:75:103 | //... | Missing result: sql-sink | +| mysql.rs:116:64:116:111 | //... | Missing result: sql-sink | +| mysql.rs:125:63:125:75 | //... | Missing result: sql-sink | +| mysql.rs:149:62:149:109 | //... | Missing result: sql-sink | From 0c92b33b8ff1dd6873d40a4500b5423977da2d49 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:47:00 +0000 Subject: [PATCH 334/965] Revert "Rust: Generalize more models." This reverts commit 56811d02acaade17ce96335130776b4061e9b422. --- rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml | 8 ++++---- rust/ql/lib/codeql/rust/frameworks/mysql.model.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml index ef3b01db0eb..4c8858457c1 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql-async.model.yml @@ -9,8 +9,8 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_stream", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - - ["<_ as mysql_async::queryable::Queryable>::query_iter", "Argument[0]", "sql-injection", "manual"] - - ["<_ as mysql_async::queryable::Queryable>::prep", "Argument[0]", "sql-injection", "manual"] + - ["::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["::prep", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel @@ -21,8 +21,8 @@ extensions: - ["<_ as mysql_async::queryable::Queryable>::exec_first", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_fold", "Argument[2].Parameter[1]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - - ["<_ as mysql_async::queryable::Queryable>::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - - ["<_ as mysql_async::queryable::Queryable>::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::query_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::exec_iter", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql_async::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] - ["::get", "ReturnValue.Field[core::option::Option::Some(0)]", "database", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml index 2b9a644733e..7d6fa520eb8 100644 --- a/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/mysql.model.yml @@ -10,10 +10,10 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::query_first_opt", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[0]", "sql-injection", "manual"] - - ["<_ as mysql::conn::queryable::Queryable>::query_iter", "Argument[0]", "sql-injection", "manual"] + - ["::query_iter", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[0]", "sql-injection", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[0]", "sql-injection", "manual"] - - ["<_ as mysql::conn::queryable::Queryable>::prep", "Argument[0]", "sql-injection", "manual"] + - ["::prep", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel @@ -30,8 +30,8 @@ extensions: - ["<_ as mysql::conn::queryable::Queryable>::exec_fold", "Argument[3].Parameter[1]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_fold_opt", "Argument[2].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_fold_opt", "Argument[3].Parameter[1].Field[core::result::Result::Ok(0)]", "database", "manual"] - - ["<_ as mysql::conn::queryable::Queryable>::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - - ["<_ as mysql::conn::queryable::Queryable>::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::query_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] + - ["::exec_iter", "ReturnValue.Field[core::result::Result::Ok(0)].Element", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map", "Argument[1].Parameter[0]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::query_map_opt", "Argument[1].Parameter[0].Field[core::result::Result::Ok(0)]", "database", "manual"] - ["<_ as mysql::conn::queryable::Queryable>::exec_map", "Argument[2].Parameter[0]", "database", "manual"] From 03204b78813c68acda6d4c00cef5f743bffe4a1b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:53:40 +0000 Subject: [PATCH 335/965] Rust: Accept tests repaired. --- .../sources/database/InlineFlow.expected | 96 ++--- .../sources/database/TaintSources.expected | 6 +- .../security/CWE-089/SqlInjection.expected | 337 ++++++++++-------- .../security/CWE-089/SqlSinks.expected | 6 - 4 files changed, 245 insertions(+), 200 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected index 2b00c00ea47..db1e69c43fb 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/InlineFlow.expected @@ -4,43 +4,50 @@ models | 3 | Source: <_ as mysql::conn::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | | 4 | Source: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].Parameter[1]; database | | 5 | Source: <_ as mysql_async::queryable::Queryable>::query_map; Argument[1].Parameter[0]; database | -| 6 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 7 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 8 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | -| 9 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | -| 10 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | -| 11 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | -| 12 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | -| 13 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | -| 14 | Summary: ::add; Argument[0]; ReturnValue; taint | -| 15 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 16 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 6 | Source: ::exec_iter; ReturnValue.Field[core::result::Result::Ok(0)].Element; database | +| 7 | Source: ::get; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 8 | Source: ::get_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 9 | Source: ::take; ReturnValue.Field[core::option::Option::Some(0)]; database | +| 10 | Source: ::take_opt; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; database | +| 11 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 12 | Summary: <_ as core::ops::arith::Add>::add; Argument[0]; ReturnValue; taint | +| 13 | Summary: <_ as mysql::conn::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Field[core::result::Result::Ok(0)]; value | +| 14 | Summary: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[2].ReturnValue; ReturnValue.Future.Field[core::result::Result::Ok(0)]; value | +| 15 | Summary: ::add; Argument[0]; ReturnValue; taint | +| 16 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 17 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | test.rs:18:13:18:14 | v1 | test.rs:19:14:19:15 | v1 | provenance | | -| test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:15 | +| test.rs:18:24:18:33 | row.get(...) [Some] | test.rs:18:24:18:42 | ... .unwrap() | provenance | MaD:16 | | test.rs:18:24:18:42 | ... .unwrap() | test.rs:18:13:18:14 | v1 | provenance | | -| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:6 | +| test.rs:18:28:18:30 | get | test.rs:18:24:18:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:21:13:21:14 | v2 | test.rs:22:14:22:15 | v2 | provenance | | -| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:15 | -| test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:16 | +| test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | test.rs:21:24:21:46 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:21:24:21:46 | ... .unwrap() [Ok] | test.rs:21:24:21:55 | ... .unwrap() | provenance | MaD:17 | | test.rs:21:24:21:55 | ... .unwrap() | test.rs:21:13:21:14 | v2 | provenance | | -| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:7 | +| test.rs:21:28:21:34 | get_opt | test.rs:21:24:21:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:24:13:24:14 | v3 | test.rs:25:14:25:15 | v3 | provenance | | -| test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:15 | +| test.rs:24:24:24:34 | row.take(...) [Some] | test.rs:24:24:24:43 | ... .unwrap() | provenance | MaD:16 | | test.rs:24:24:24:43 | ... .unwrap() | test.rs:24:13:24:14 | v3 | provenance | | -| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:8 | +| test.rs:24:28:24:31 | take | test.rs:24:24:24:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:27:13:27:14 | v4 | test.rs:28:14:28:15 | v4 | provenance | | -| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:15 | -| test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:16 | +| test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | test.rs:27:24:27:47 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:27:24:27:47 | ... .unwrap() [Ok] | test.rs:27:24:27:56 | ... .unwrap() | provenance | MaD:17 | | test.rs:27:24:27:56 | ... .unwrap() | test.rs:27:13:27:14 | v4 | provenance | | -| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:9 | +| test.rs:27:28:27:35 | take_opt | test.rs:27:24:27:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | | test.rs:37:13:37:14 | v6 | test.rs:38:14:38:15 | v6 | provenance | | | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | test.rs:37:23:37:64 | TryExpr [Some] | provenance | | -| test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:15 | +| test.rs:37:23:37:64 | TryExpr [Some] | test.rs:37:23:37:73 | ... .unwrap() | provenance | MaD:16 | | test.rs:37:23:37:73 | ... .unwrap() | test.rs:37:13:37:14 | v6 | provenance | | | test.rs:37:28:37:38 | query_first | test.rs:37:23:37:63 | conn.query_first(...) [Ok, Some] | provenance | Src:MaD:1 | -| test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:15 | -| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:6 | +| test.rs:40:13:40:18 | mut t1 [element] | test.rs:42:20:42:21 | t1 [element] | provenance | | +| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | test.rs:40:22:40:72 | TryExpr [element] | provenance | | +| test.rs:40:22:40:72 | TryExpr [element] | test.rs:40:13:40:18 | mut t1 [element] | provenance | | +| test.rs:40:27:40:35 | exec_iter | test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | provenance | Src:MaD:6 | +| test.rs:41:14:41:61 | ... .get(...) [Some] | test.rs:41:14:41:70 | ... .unwrap() | provenance | MaD:16 | +| test.rs:41:42:41:44 | get | test.rs:41:14:41:61 | ... .get(...) [Some] | provenance | Src:MaD:7 | +| test.rs:42:13:42:15 | row | test.rs:44:22:44:22 | v | provenance | | +| test.rs:42:20:42:21 | t1 [element] | test.rs:42:13:42:15 | row | provenance | | | test.rs:48:22:48:30 | query_map | test.rs:50:14:50:24 | ...: i64 | provenance | Src:MaD:3 | | test.rs:50:14:50:24 | ...: i64 | test.rs:51:22:51:27 | values | provenance | | | test.rs:64:13:64:17 | total | test.rs:68:14:68:18 | total | provenance | | @@ -50,29 +57,29 @@ edges | test.rs:64:76:64:83 | ...: i64 | test.rs:64:86:67:9 | { ... } | provenance | | | test.rs:64:76:64:83 | ...: i64 | test.rs:65:18:65:20 | row | provenance | | | test.rs:64:76:64:83 | ...: i64 | test.rs:66:19:66:21 | row | provenance | | -| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:12 | +| test.rs:64:86:67:9 | { ... } | test.rs:64:21:67:10 | conn.query_fold(...) [Ok] | provenance | MaD:13 | | test.rs:66:13:66:21 | ... + ... | test.rs:64:86:67:9 | { ... } | provenance | | -| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:10 | | test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:11 | -| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:14 | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:12 | +| test.rs:66:19:66:21 | row | test.rs:66:13:66:21 | ... + ... | provenance | MaD:15 | | test.rs:105:13:105:14 | v1 | test.rs:106:14:106:15 | v1 | provenance | | -| test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:15 | +| test.rs:105:24:105:33 | row.get(...) [Some] | test.rs:105:24:105:42 | ... .unwrap() | provenance | MaD:16 | | test.rs:105:24:105:42 | ... .unwrap() | test.rs:105:13:105:14 | v1 | provenance | | -| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:6 | +| test.rs:105:28:105:30 | get | test.rs:105:24:105:33 | row.get(...) [Some] | provenance | Src:MaD:7 | | test.rs:108:13:108:14 | v2 | test.rs:109:14:109:15 | v2 | provenance | | -| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:15 | -| test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:16 | +| test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | test.rs:108:24:108:46 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:108:24:108:46 | ... .unwrap() [Ok] | test.rs:108:24:108:55 | ... .unwrap() | provenance | MaD:17 | | test.rs:108:24:108:55 | ... .unwrap() | test.rs:108:13:108:14 | v2 | provenance | | -| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:7 | +| test.rs:108:28:108:34 | get_opt | test.rs:108:24:108:37 | row.get_opt(...) [Some, Ok] | provenance | Src:MaD:8 | | test.rs:111:13:111:14 | v3 | test.rs:112:14:112:15 | v3 | provenance | | -| test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:15 | +| test.rs:111:24:111:34 | row.take(...) [Some] | test.rs:111:24:111:43 | ... .unwrap() | provenance | MaD:16 | | test.rs:111:24:111:43 | ... .unwrap() | test.rs:111:13:111:14 | v3 | provenance | | -| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:8 | +| test.rs:111:28:111:31 | take | test.rs:111:24:111:34 | row.take(...) [Some] | provenance | Src:MaD:9 | | test.rs:114:13:114:14 | v4 | test.rs:115:14:115:15 | v4 | provenance | | -| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:15 | -| test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:16 | +| test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | test.rs:114:24:114:47 | ... .unwrap() [Ok] | provenance | MaD:16 | +| test.rs:114:24:114:47 | ... .unwrap() [Ok] | test.rs:114:24:114:56 | ... .unwrap() | provenance | MaD:17 | | test.rs:114:24:114:56 | ... .unwrap() | test.rs:114:13:114:14 | v4 | provenance | | -| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:9 | +| test.rs:114:28:114:35 | take_opt | test.rs:114:24:114:38 | row.take_opt(...) [Some, Ok] | provenance | Src:MaD:10 | | test.rs:135:22:135:30 | query_map | test.rs:137:14:137:24 | ...: i64 | provenance | Src:MaD:5 | | test.rs:137:14:137:24 | ...: i64 | test.rs:138:22:138:27 | values | provenance | | | test.rs:151:13:151:17 | total | test.rs:155:14:155:18 | total | provenance | | @@ -83,11 +90,11 @@ edges | test.rs:151:76:151:83 | ...: i64 | test.rs:151:86:154:9 | { ... } | provenance | | | test.rs:151:76:151:83 | ...: i64 | test.rs:152:18:152:20 | row | provenance | | | test.rs:151:76:151:83 | ...: i64 | test.rs:153:19:153:21 | row | provenance | | -| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:13 | +| test.rs:151:86:154:9 | { ... } | test.rs:151:21:154:10 | conn.query_fold(...) [future, Ok] | provenance | MaD:14 | | test.rs:153:13:153:21 | ... + ... | test.rs:151:86:154:9 | { ... } | provenance | | -| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:10 | | test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:11 | -| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:14 | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:12 | +| test.rs:153:19:153:21 | row | test.rs:153:13:153:21 | ... + ... | provenance | MaD:15 | nodes | test.rs:18:13:18:14 | v1 | semmle.label | v1 | | test.rs:18:24:18:33 | row.get(...) [Some] | semmle.label | row.get(...) [Some] | @@ -117,9 +124,16 @@ nodes | test.rs:37:23:37:73 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:37:28:37:38 | query_first | semmle.label | query_first | | test.rs:38:14:38:15 | v6 | semmle.label | v6 | +| test.rs:40:13:40:18 | mut t1 [element] | semmle.label | mut t1 [element] | +| test.rs:40:22:40:71 | conn.exec_iter(...) [Ok, element] | semmle.label | conn.exec_iter(...) [Ok, element] | +| test.rs:40:22:40:72 | TryExpr [element] | semmle.label | TryExpr [element] | +| test.rs:40:27:40:35 | exec_iter | semmle.label | exec_iter | | test.rs:41:14:41:61 | ... .get(...) [Some] | semmle.label | ... .get(...) [Some] | | test.rs:41:14:41:70 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:41:42:41:44 | get | semmle.label | get | +| test.rs:42:13:42:15 | row | semmle.label | row | +| test.rs:42:20:42:21 | t1 [element] | semmle.label | t1 [element] | +| test.rs:44:22:44:22 | v | semmle.label | v | | test.rs:48:22:48:30 | query_map | semmle.label | query_map | | test.rs:50:14:50:24 | ...: i64 | semmle.label | ...: i64 | | test.rs:51:22:51:27 | values | semmle.label | values | @@ -171,7 +185,6 @@ nodes | test.rs:155:14:155:18 | total | semmle.label | total | subpaths testFailures -| test.rs:44:26:44:42 | //... | Missing result: hasTaintFlow | #select | test.rs:19:14:19:15 | v1 | test.rs:18:28:18:30 | get | test.rs:19:14:19:15 | v1 | $@ | test.rs:18:28:18:30 | get | get | | test.rs:22:14:22:15 | v2 | test.rs:21:28:21:34 | get_opt | test.rs:22:14:22:15 | v2 | $@ | test.rs:21:28:21:34 | get_opt | get_opt | @@ -179,6 +192,7 @@ testFailures | test.rs:28:14:28:15 | v4 | test.rs:27:28:27:35 | take_opt | test.rs:28:14:28:15 | v4 | $@ | test.rs:27:28:27:35 | take_opt | take_opt | | test.rs:38:14:38:15 | v6 | test.rs:37:28:37:38 | query_first | test.rs:38:14:38:15 | v6 | $@ | test.rs:37:28:37:38 | query_first | query_first | | test.rs:41:14:41:70 | ... .unwrap() | test.rs:41:42:41:44 | get | test.rs:41:14:41:70 | ... .unwrap() | $@ | test.rs:41:42:41:44 | get | get | +| test.rs:44:22:44:22 | v | test.rs:40:27:40:35 | exec_iter | test.rs:44:22:44:22 | v | $@ | test.rs:40:27:40:35 | exec_iter | exec_iter | | test.rs:51:22:51:27 | values | test.rs:48:22:48:30 | query_map | test.rs:51:22:51:27 | values | $@ | test.rs:48:22:48:30 | query_map | query_map | | test.rs:65:18:65:20 | row | test.rs:64:26:64:35 | query_fold | test.rs:65:18:65:20 | row | $@ | test.rs:64:26:64:35 | query_fold | query_fold | | test.rs:68:14:68:18 | total | test.rs:64:26:64:35 | query_fold | test.rs:68:14:68:18 | total | $@ | test.rs:64:26:64:35 | query_fold | query_fold | diff --git a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected index 96c4a62f569..9132dfaa2b0 100644 --- a/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/database/TaintSources.expected @@ -1,4 +1,3 @@ -#select | test.rs:15:47:15:51 | query | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:18:28:18:30 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:21:28:21:34 | get_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | @@ -6,6 +5,7 @@ | test.rs:27:28:27:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:30:26:30:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:37:28:37:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:40:27:40:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:41:42:41:44 | get | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:48:22:48:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:55:22:55:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | @@ -18,10 +18,8 @@ | test.rs:114:28:114:35 | take_opt | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:117:26:117:31 | as_ref | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:124:28:124:38 | query_first | Flow source 'DatabaseSource' of type database (DEFAULT). | +| test.rs:127:27:127:35 | exec_iter | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:135:22:135:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:142:22:142:30 | query_map | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:151:26:151:35 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | | test.rs:157:22:157:31 | query_fold | Flow source 'DatabaseSource' of type database (DEFAULT). | -testFailures -| test.rs:40:75:40:112 | //... | Missing result: Alert[rust/summary/taint-sources] | -| test.rs:127:81:127:118 | //... | Missing result: Alert[rust/summary/taint-sources] | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index 5c9992256e9..ecd8cfa7937 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -6,16 +6,20 @@ | mysql.rs:29:49:29:63 | query_first_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:29:49:29:63 | query_first_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:30:22:30:31 | query_fold | mysql.rs:12:33:12:54 | ...::get | mysql.rs:30:22:30:31 | query_fold | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:31:22:31:35 | query_fold_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:31:22:31:35 | query_fold_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:36:22:36:31 | query_iter | mysql.rs:12:33:12:54 | ...::get | mysql.rs:36:22:36:31 | query_iter | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:37:22:37:30 | query_map | mysql.rs:12:33:12:54 | ...::get | mysql.rs:37:22:37:30 | query_map | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:38:22:38:34 | query_map_opt | mysql.rs:12:33:12:54 | ...::get | mysql.rs:38:22:38:34 | query_map_opt | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:42:33:42:37 | query | mysql.rs:12:33:12:54 | ...::get | mysql.rs:42:33:42:37 | query | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | +| mysql.rs:75:26:75:29 | prep | mysql.rs:12:33:12:54 | ...::get | mysql.rs:75:26:75:29 | prep | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:80:15:80:24 | query_drop | mysql.rs:12:33:12:54 | ...::get | mysql.rs:80:15:80:24 | query_drop | This query depends on a $@. | mysql.rs:12:33:12:54 | ...::get | user-provided value | | mysql.rs:110:32:110:36 | query | mysql.rs:97:33:97:54 | ...::get | mysql.rs:110:32:110:36 | query | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:111:14:111:23 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:111:14:111:23 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:112:35:112:45 | query_first | mysql.rs:97:33:97:54 | ...::get | mysql.rs:112:35:112:45 | query_first | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:114:14:114:23 | query_fold | mysql.rs:97:33:97:54 | ...::get | mysql.rs:114:14:114:23 | query_fold | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:116:22:116:31 | query_iter | mysql.rs:97:33:97:54 | ...::get | mysql.rs:116:22:116:31 | query_iter | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:118:14:118:25 | query_stream | mysql.rs:97:33:97:54 | ...::get | mysql.rs:118:14:118:25 | query_stream | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | +| mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | @@ -31,235 +35,255 @@ | sqlx.rs:188:17:188:27 | ...::query | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:188:17:188:27 | ...::query | This query depends on a $@. | sqlx.rs:173:25:173:46 | ...::get | user-provided value | edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | -| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:27 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:31 | -| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:28 | +| mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:75 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:36 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:76 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:44 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:44 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:43 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:24 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:50 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:42 | unsafe_query | provenance | | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:37 | unsafe_query | provenance | | -| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:18:13:18:83 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | -| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:23 | -| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:24 | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:27 | +| mysql.rs:18:13:18:83 | ... + ... | mysql.rs:18:13:18:89 | ... + ... | provenance | MaD:28 | | mysql.rs:18:13:18:89 | ... + ... | mysql.rs:17:13:17:24 | unsafe_query | provenance | | -| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:22 | +| mysql.rs:18:70:18:83 | &remote_string [&ref] | mysql.rs:18:13:18:83 | ... + ... | provenance | MaD:26 | | mysql.rs:18:71:18:83 | remote_string | mysql.rs:18:70:18:83 | &remote_string [&ref] | provenance | | -| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:25:38:25:49 | unsafe_query | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:25:38:25:58 | unsafe_query.as_str() [&ref] | mysql.rs:25:32:25:36 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:26:64:26:75 | unsafe_query | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | | mysql.rs:26:64:26:84 | unsafe_query.as_str() [&ref] | mysql.rs:26:54:26:62 | query_opt | provenance | MaD:9 Sink:MaD:9 | -| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:27:25:27:36 | unsafe_query | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:27:25:27:45 | unsafe_query.as_str() [&ref] | mysql.rs:27:14:27:23 | query_drop | provenance | MaD:2 Sink:MaD:2 | -| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:28:39:28:50 | unsafe_query | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | | mysql.rs:28:39:28:59 | unsafe_query.as_str() [&ref] | mysql.rs:28:27:28:37 | query_first | provenance | MaD:3 Sink:MaD:3 | -| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:29:65:29:76 | unsafe_query | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | | mysql.rs:29:65:29:85 | unsafe_query.as_str() [&ref] | mysql.rs:29:49:29:63 | query_first_opt | provenance | MaD:4 Sink:MaD:4 | -| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:30:33:30:44 | unsafe_query | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | | mysql.rs:30:33:30:53 | unsafe_query.as_str() [&ref] | mysql.rs:30:22:30:31 | query_fold | provenance | MaD:5 Sink:MaD:5 | -| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:32:13:32:24 | unsafe_query | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | mysql.rs:31:22:31:35 | query_fold_opt | provenance | MaD:6 Sink:MaD:6 | -| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:36:33:36:44 | unsafe_query | mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | mysql.rs:36:22:36:31 | query_iter | provenance | MaD:17 Sink:MaD:17 | +| mysql.rs:37:32:37:43 | unsafe_query | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | | mysql.rs:37:32:37:52 | unsafe_query.as_str() [&ref] | mysql.rs:37:22:37:30 | query_map | provenance | MaD:7 Sink:MaD:7 | -| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:39:13:39:24 | unsafe_query | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | | mysql.rs:39:13:39:33 | unsafe_query.as_str() [&ref] | mysql.rs:38:22:38:34 | query_map_opt | provenance | MaD:8 Sink:MaD:8 | -| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:42:39:42:50 | unsafe_query | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | mysql.rs:42:33:42:37 | query | provenance | MaD:1 Sink:MaD:1 | -| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:75:31:75:42 | unsafe_query | mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | mysql.rs:75:26:75:29 | prep | provenance | MaD:16 Sink:MaD:16 | +| mysql.rs:80:26:80:37 | unsafe_query | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:80:26:80:46 | unsafe_query.as_str() [&ref] | mysql.rs:80:15:80:24 | query_drop | provenance | MaD:2 Sink:MaD:2 | | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | -| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:27 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:31 | -| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:28 | +| mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:58 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:36 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:44 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:51 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:35 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() | provenance | MaD:29 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:42 | unsafe_query | provenance | | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:37 | unsafe_query | provenance | | -| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:25 | +| mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() | provenance | MaD:29 | | mysql.rs:103:13:103:83 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | -| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:23 | -| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:24 | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:27 | +| mysql.rs:103:13:103:83 | ... + ... | mysql.rs:103:13:103:89 | ... + ... | provenance | MaD:28 | | mysql.rs:103:13:103:89 | ... + ... | mysql.rs:102:13:102:24 | unsafe_query | provenance | | -| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:22 | +| mysql.rs:103:70:103:83 | &remote_string [&ref] | mysql.rs:103:13:103:83 | ... + ... | provenance | MaD:26 | | mysql.rs:103:71:103:83 | remote_string | mysql.rs:103:70:103:83 | &remote_string [&ref] | provenance | | -| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:110:38:110:49 | unsafe_query | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | | mysql.rs:110:38:110:58 | unsafe_query.as_str() [&ref] | mysql.rs:110:32:110:36 | query | provenance | MaD:10 Sink:MaD:10 | -| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:111:25:111:36 | unsafe_query | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:111:25:111:45 | unsafe_query.as_str() [&ref] | mysql.rs:111:14:111:23 | query_drop | provenance | MaD:11 Sink:MaD:11 | -| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:112:47:112:58 | unsafe_query | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | | mysql.rs:112:47:112:67 | unsafe_query.as_str() [&ref] | mysql.rs:112:35:112:45 | query_first | provenance | MaD:12 Sink:MaD:12 | -| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:114:25:114:36 | unsafe_query | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | mysql.rs:114:14:114:23 | query_fold | provenance | MaD:13 Sink:MaD:13 | -| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:116:33:116:44 | unsafe_query | mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | mysql.rs:116:22:116:31 | query_iter | provenance | MaD:19 Sink:MaD:19 | +| mysql.rs:118:40:118:51 | unsafe_query | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | | mysql.rs:118:40:118:60 | unsafe_query.as_str() [&ref] | mysql.rs:118:14:118:25 | query_stream | provenance | MaD:15 Sink:MaD:15 | -| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:121:24:121:35 | unsafe_query | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | mysql.rs:121:14:121:22 | query_map | provenance | MaD:14 Sink:MaD:14 | -| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:25 | +| mysql.rs:149:31:149:42 | unsafe_query | mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | mysql.rs:149:26:149:29 | prep | provenance | MaD:18 Sink:MaD:18 | +| mysql.rs:154:26:154:37 | unsafe_query | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | provenance | MaD:29 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | mysql.rs:154:26:154:46 | unsafe_query.as_str() [&ref] | mysql.rs:154:15:154:24 | query_drop | provenance | MaD:11 Sink:MaD:11 | | sqlx.rs:47:9:47:18 | arg_string | sqlx.rs:53:27:53:36 | arg_string | provenance | | -| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:20 | -| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:21 | -| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:26 | +| sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:47:22:47:37 | ...::args(...) [element] | provenance | Src:MaD:24 | +| sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | +| sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:30 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:30 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | +| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | -| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:27 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:31 | -| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:28 | +| sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:28 | +| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:25 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:32 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:33 | -| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | +| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | +| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | +| sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | -| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:25 | +| sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | provenance | MaD:29 | | sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:23 | -| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:24 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:27 | +| sqlx.rs:55:26:55:96 | ... + ... | sqlx.rs:55:26:55:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:55:26:55:102 | ... + ... | sqlx.rs:55:9:55:22 | unsafe_query_3 | provenance | | -| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:22 | +| sqlx.rs:55:83:55:96 | &remote_string [&ref] | sqlx.rs:55:26:55:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:55:84:55:96 | remote_string | sqlx.rs:55:83:55:96 | &remote_string [&ref] | provenance | | | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:42 | unsafe_query_4 | provenance | | -| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:25 | +| sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:32 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:33 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | sqlx.rs:81:17:81:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:82:29:82:42 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() [&ref] | sqlx.rs:82:17:82:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | -| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:27 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:31 | -| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:28 | +| sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:68 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:42 | unsafe_query_1 | provenance | | -| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:23 | -| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:24 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:27 | +| sqlx.rs:102:26:102:96 | ... + ... | sqlx.rs:102:26:102:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:102:26:102:102 | ... + ... | sqlx.rs:102:9:102:22 | unsafe_query_1 | provenance | | -| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:22 | +| sqlx.rs:102:83:102:96 | &remote_string [&ref] | sqlx.rs:102:26:102:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:102:84:102:96 | remote_string | sqlx.rs:102:83:102:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:18 Sink:MaD:18 | -| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | -| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | -| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | -| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:17 Sink:MaD:17 | -| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:113:31:113:44 | unsafe_query_1 | sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | +| sqlx.rs:113:31:113:53 | unsafe_query_1.as_str() [&ref] | sqlx.rs:113:17:113:29 | ...::raw_sql | provenance | MaD:22 Sink:MaD:22 | +| sqlx.rs:120:29:120:42 | unsafe_query_1 | sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:120:29:120:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:120:17:120:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:127:29:127:42 | unsafe_query_1 | sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:127:17:127:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:136:55:136:68 | unsafe_query_1 | sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:136:40:136:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:145:55:145:68 | unsafe_query_1 | sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() [&ref] | sqlx.rs:145:40:145:53 | ...::query_as | provenance | MaD:21 Sink:MaD:21 | +| sqlx.rs:153:29:153:42 | unsafe_query_1 | sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:153:29:153:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:153:17:153:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | -| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:19 | -| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:27 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:31 | -| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:28 | +| sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | +| sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | -| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:25 | +| sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | provenance | MaD:29 | | sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:23 | -| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:24 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:27 | +| sqlx.rs:175:26:175:96 | ... + ... | sqlx.rs:175:26:175:102 | ... + ... | provenance | MaD:28 | | sqlx.rs:175:26:175:102 | ... + ... | sqlx.rs:175:9:175:22 | unsafe_query_1 | provenance | | -| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:22 | +| sqlx.rs:175:83:175:96 | &remote_string [&ref] | sqlx.rs:175:26:175:96 | ... + ... | provenance | MaD:26 | | sqlx.rs:175:84:175:96 | remote_string | sqlx.rs:175:83:175:96 | &remote_string [&ref] | provenance | | -| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:25 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | -| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:16 Sink:MaD:16 | +| sqlx.rs:188:29:188:42 | unsafe_query_1 | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | sqlx.rs:188:17:188:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | models | 1 | Sink: <_ as mysql::conn::queryable::Queryable>::query; Argument[0]; sql-injection | | 2 | Sink: <_ as mysql::conn::queryable::Queryable>::query_drop; Argument[0]; sql-injection | @@ -276,24 +300,28 @@ models | 13 | Sink: <_ as mysql_async::queryable::Queryable>::query_fold; Argument[0]; sql-injection | | 14 | Sink: <_ as mysql_async::queryable::Queryable>::query_map; Argument[0]; sql-injection | | 15 | Sink: <_ as mysql_async::queryable::Queryable>::query_stream; Argument[0]; sql-injection | -| 16 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | -| 17 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | -| 18 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | -| 19 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 20 | Source: std::env::args; ReturnValue.Element; commandargs | -| 21 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 22 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | -| 23 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | -| 24 | Summary: ::add; Argument[self]; ReturnValue; value | -| 25 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 26 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 28 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 29 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 30 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 33 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 16 | Sink: ::prep; Argument[0]; sql-injection | +| 17 | Sink: ::query_iter; Argument[0]; sql-injection | +| 18 | Sink: ::prep; Argument[0]; sql-injection | +| 19 | Sink: ::query_iter; Argument[0]; sql-injection | +| 20 | Sink: sqlx_core::query::query; Argument[0]; sql-injection | +| 21 | Sink: sqlx_core::query_as::query_as; Argument[0]; sql-injection | +| 22 | Sink: sqlx_core::raw_sql::raw_sql; Argument[0]; sql-injection | +| 23 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 24 | Source: std::env::args; ReturnValue.Element; commandargs | +| 25 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 26 | Summary: <_ as core::ops::arith::Add>::add; Argument[0].Reference; ReturnValue; taint | +| 27 | Summary: <_ as core::ops::arith::Add>::add; Argument[self]; ReturnValue; taint | +| 28 | Summary: ::add; Argument[self]; ReturnValue; value | +| 29 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 30 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 34 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 37 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | @@ -334,6 +362,10 @@ nodes | mysql.rs:32:13:32:24 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:32:13:32:33 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:32:13:32:33 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:36:22:36:31 | query_iter | semmle.label | query_iter | +| mysql.rs:36:33:36:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:36:33:36:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:37:22:37:30 | query_map | semmle.label | query_map | | mysql.rs:37:32:37:43 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:37:32:37:52 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -346,6 +378,10 @@ nodes | mysql.rs:42:39:42:50 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:42:39:42:59 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:42:39:42:59 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:75:26:75:29 | prep | semmle.label | prep | +| mysql.rs:75:31:75:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:75:31:75:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:80:15:80:24 | query_drop | semmle.label | query_drop | | mysql.rs:80:26:80:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:80:26:80:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -377,6 +413,10 @@ nodes | mysql.rs:114:25:114:36 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:114:25:114:45 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:114:25:114:45 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:116:22:116:31 | query_iter | semmle.label | query_iter | +| mysql.rs:116:33:116:44 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:116:33:116:53 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:118:14:118:25 | query_stream | semmle.label | query_stream | | mysql.rs:118:40:118:51 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:118:40:118:60 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -385,6 +425,10 @@ nodes | mysql.rs:121:24:121:35 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:121:24:121:44 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | | mysql.rs:121:24:121:44 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | +| mysql.rs:149:26:149:29 | prep | semmle.label | prep | +| mysql.rs:149:31:149:42 | unsafe_query | semmle.label | unsafe_query | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | +| mysql.rs:149:31:149:51 | unsafe_query.as_str() [&ref] | semmle.label | unsafe_query.as_str() [&ref] | | mysql.rs:154:15:154:24 | query_drop | semmle.label | query_drop | | mysql.rs:154:26:154:37 | unsafe_query | semmle.label | unsafe_query | | mysql.rs:154:26:154:46 | unsafe_query.as_str() | semmle.label | unsafe_query.as_str() | @@ -491,8 +535,3 @@ nodes | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | subpaths -testFailures -| mysql.rs:36:58:36:105 | //... | Missing result: Alert[rust/sql-injection]=remote10 | -| mysql.rs:75:56:75:103 | //... | Missing result: Alert[rust/sql-injection]=remote10 | -| mysql.rs:116:64:116:111 | //... | Missing result: Alert[rust/sql-injection]=remote11 | -| mysql.rs:149:62:149:109 | //... | Missing result: Alert[rust/sql-injection]=remote11 | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected b/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected index dcc291ea4eb..e69de29bb2d 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlSinks.expected @@ -1,6 +0,0 @@ -| mysql.rs:36:58:36:105 | //... | Missing result: sql-sink | -| mysql.rs:45:57:45:69 | //... | Missing result: sql-sink | -| mysql.rs:75:56:75:103 | //... | Missing result: sql-sink | -| mysql.rs:116:64:116:111 | //... | Missing result: sql-sink | -| mysql.rs:125:63:125:75 | //... | Missing result: sql-sink | -| mysql.rs:149:62:149:109 | //... | Missing result: sql-sink | From b76f27d10bdae488f670e78b724515e07e77ec74 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 27 Oct 2025 18:47:17 +0000 Subject: [PATCH 336/965] Rust: Remove redundant model. --- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 17019618601..9a29741bd37 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -18,7 +18,6 @@ extensions: - ["::into_iter", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue.Future.Field[core::option::Option::Some(0)]", "taint", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] From 3fa825904299473ad952208c604ce31c0ba4a562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:21:04 +0200 Subject: [PATCH 337/965] Actions/OutputClobberingQuery actions/ql/src/experimental/Security/CWE-074/OutputClobberingHigh.ql uses source as endpoint --- .../ql/lib/codeql/actions/security/OutputClobberingQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll b/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll index 4454a5496a2..22b4879df12 100644 --- a/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll +++ b/actions/ql/lib/codeql/actions/security/OutputClobberingQuery.qll @@ -212,8 +212,6 @@ private module OutputClobberingConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Tracks flow of unsafe user input that is used to construct and evaluate an environment variable. */ From 890ca8e7d128fda92f88826fa8bb045bd749aadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:22:57 +0200 Subject: [PATCH 338/965] Actions/RequestForgeryQuery actions/ql/src/experimental/Security/CWE-918/RequestForgery.ql uses source as endpoint --- actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll b/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll index d96a12e2608..fb89ebdc8ba 100644 --- a/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll +++ b/actions/ql/lib/codeql/actions/security/RequestForgeryQuery.qll @@ -18,8 +18,6 @@ private module RequestForgeryConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof RequestForgerySink } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Tracks flow of unsafe user input that is used to construct and evaluate a system command. */ From bb103073031e165936fe9d289b70091d425ffdad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:24:12 +0200 Subject: [PATCH 339/965] Actions/SecretExfiltrationQuery actions/ql/src/experimental/Security/CWE-200/SecretExfiltration.ql uses source as endpoint --- .../ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll b/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll index 15cd726c4bb..b3d59210053 100644 --- a/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll +++ b/actions/ql/lib/codeql/actions/security/SecretExfiltrationQuery.qll @@ -17,8 +17,6 @@ private module SecretExfiltrationConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof SecretExfiltrationSink } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Tracks flow of unsafe user input that is used in a context where it may lead to a secret exfiltration. */ From d36b721513998333872792fe3a251af06ea2f0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:26:05 +0200 Subject: [PATCH 340/965] Actions/CompositeActionsSinks Same file uses source as endpoint --- actions/ql/src/Models/CompositeActionsSinks.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/CompositeActionsSinks.ql b/actions/ql/src/Models/CompositeActionsSinks.ql index 65d3fdce9dc..82f0754f03e 100644 --- a/actions/ql/src/Models/CompositeActionsSinks.ql +++ b/actions/ql/src/Models/CompositeActionsSinks.ql @@ -26,8 +26,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From 78f2cee51c218641ec6be3d3983a9b5f5e06d07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:27:01 +0200 Subject: [PATCH 341/965] Actions/CompositeActionsSources Same file uses source as endpoint --- actions/ql/src/Models/CompositeActionsSources.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/CompositeActionsSources.ql b/actions/ql/src/Models/CompositeActionsSources.ql index 2f3e98b3401..c9974cd7361 100644 --- a/actions/ql/src/Models/CompositeActionsSources.ql +++ b/actions/ql/src/Models/CompositeActionsSources.ql @@ -36,8 +36,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From 9c24ce065003c70a19c6d27d0d4a60564c560002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:27:58 +0200 Subject: [PATCH 342/965] Actions/CompositeActionsSummaries Same file uses source as endpoint --- actions/ql/src/Models/CompositeActionsSummaries.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/CompositeActionsSummaries.ql b/actions/ql/src/Models/CompositeActionsSummaries.ql index 1979c381f5d..814498f639e 100644 --- a/actions/ql/src/Models/CompositeActionsSummaries.ql +++ b/actions/ql/src/Models/CompositeActionsSummaries.ql @@ -27,8 +27,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From a972ef7e314f9f8607d9afa2c17bdb16b4b4e6f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:29:46 +0200 Subject: [PATCH 343/965] Actions/ReusableWorkflowsSinks Same file uses source as endpoint --- actions/ql/src/Models/ReusableWorkflowsSinks.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/ReusableWorkflowsSinks.ql b/actions/ql/src/Models/ReusableWorkflowsSinks.ql index 2b08f2445d9..8d02debbdb4 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSinks.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSinks.ql @@ -26,8 +26,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From 1243c6362d23e9add3a892688d0f03844f5977a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:34:43 +0200 Subject: [PATCH 344/965] Actions/ReusableWorkflowsSources --- actions/ql/src/Models/ReusableWorkflowsSources.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/ReusableWorkflowsSources.ql b/actions/ql/src/Models/ReusableWorkflowsSources.ql index 831191e4bfb..a7112bf3758 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSources.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSources.ql @@ -36,8 +36,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From 5a1a887fd2d9e962fb03e5bbaea6b9b1be5fa71d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:35:15 +0200 Subject: [PATCH 345/965] Actions/ReusableWorkflowsSummaries --- actions/ql/src/Models/ReusableWorkflowsSummaries.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql index fd2d4b396a0..a05bec744f8 100644 --- a/actions/ql/src/Models/ReusableWorkflowsSummaries.ql +++ b/actions/ql/src/Models/ReusableWorkflowsSummaries.ql @@ -27,8 +27,6 @@ private module MyConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module MyFlow = TaintTracking::Global; From ad31f1ab6de248613ba1f734241594f8bd386067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:36:15 +0200 Subject: [PATCH 346/965] C++/WordexpTainted Same file usees source and sink as endpoints --- cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql index 1d032a63ba3..cfe04ba23bf 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-078/WordexpTainted.ql @@ -50,8 +50,6 @@ module WordexpTaintConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } } module WordexpTaint = TaintTracking::Global; From ba22f0d7d2865db5738efa19c65f03a792f50c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:36:52 +0200 Subject: [PATCH 347/965] C#/DontInstallRootCert --- csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql index d2d22671677..b48ddbf0f35 100644 --- a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql +++ b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql @@ -39,8 +39,6 @@ module AddCertToRootStoreConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module AddCertToRootStore = DataFlow::Global; From 7722f31cb8b3862d72467247caf694362f53ca36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 13:43:24 +0200 Subject: [PATCH 348/965] Go/DivideByZero --- go/ql/src/experimental/CWE-369/DivideByZero.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/go/ql/src/experimental/CWE-369/DivideByZero.ql b/go/ql/src/experimental/CWE-369/DivideByZero.ql index 8afd165832b..99cd120dbf8 100644 --- a/go/ql/src/experimental/CWE-369/DivideByZero.ql +++ b/go/ql/src/experimental/CWE-369/DivideByZero.ql @@ -47,8 +47,6 @@ module Config implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** From 59a8e9b78ccc1422b7204abff99620885e29c0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 14:04:17 +0200 Subject: [PATCH 349/965] Go/InsufficientKeySize --- go/ql/src/Security/CWE-326/InsufficientKeySize.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql index 5d0ee7ac6ab..6fa421baaeb 100644 --- a/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +++ b/go/ql/src/Security/CWE-326/InsufficientKeySize.ql @@ -27,8 +27,6 @@ module Config implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** From 913550f4084389b8eec315c358c63c0cf4b2e9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 14:27:49 +0200 Subject: [PATCH 350/965] Java/ArbitraryApkInstallationQuery java/ql/src/Security/CWE/CWE-094/ArbitraryApkInstallation.ql --- .../semmle/code/java/security/ArbitraryApkInstallationQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll index 8c833bb79d6..e907a9ffeaa 100644 --- a/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArbitraryApkInstallationQuery.qll @@ -25,8 +25,6 @@ module ApkInstallationConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module ApkInstallationFlow = DataFlow::Global; From a228936c6386ab5544aeec2b410c649f2590117e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 14:56:11 +0200 Subject: [PATCH 351/965] Java/ArithmeticTainted java/ql/src/Security/CWE/CWE-190/ArithmeticTainted.ql --- .../lib/semmle/code/java/security/ArithmeticTaintedQuery.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll index fbb8509f48f..c3d4e7876d5 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll @@ -19,6 +19,8 @@ module ArithmeticOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) } } @@ -43,6 +45,8 @@ module ArithmeticUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArithExpr exp | result = exp.getLocation() | underflowSink(exp, sink.asExpr())) } } From 1129230e1021724a79c919b23af08933abf6e34a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 14:57:34 +0200 Subject: [PATCH 352/965] Java/ArithmeticUncontrolledQuery java/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql --- .../semmle/code/java/security/ArithmeticUncontrolledQuery.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll index 6b7b337ad65..ac79aef3f37 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll @@ -25,6 +25,8 @@ module ArithmeticUncontrolledOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) } } @@ -46,6 +48,8 @@ module ArithmeticUncontrolledUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArithExpr exp | result = exp.getLocation() | underflowSink(exp, sink.asExpr())) } } From b023880a0a1d12f40551c4cd4e73318b9b001364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 8 Oct 2025 14:59:49 +0200 Subject: [PATCH 353/965] Java/BrokenCryptoAlgorithmQuery java/ql/src/Security/CWE/CWE-327/BrokenCryptoAlgorithm.ql --- .../semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll index 0c1f14c902b..9bcf9dc2eaf 100644 --- a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll @@ -36,6 +36,8 @@ module InsecureCryptoConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(CryptoAlgoSpec c | sink.asExpr() = c.getAlgoSpec() | result = c.getLocation()) } } From 4482e831d71233d769678752203854d534bcebad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 09:56:44 +0200 Subject: [PATCH 354/965] Java/CommandLineQuery https://github.com/github/codeql/blob/85a4dd0325104ecd613c9e3e7c25190d41906605/java/ql/src/Security/CWE/CWE-078/ExecTainted.ql https://github.com/github/codeql/blob/857b51be5895bf437ea25b5ce2581527d5af69fb/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql https://github.com/github/codeql/blob/b6e56f26c7509a041ce92bdda13db0a09da886e3/java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.ql --- java/ql/lib/semmle/code/java/security/CommandLineQuery.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll index a1c75f93802..82d24eb718e 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -63,9 +63,11 @@ module InputToArgumentToExecFlowConfig implements DataFlow::ConfigSig { // only to prevent overlapping results between two queries. predicate observeDiffInformedIncrementalMode() { any() } - // All queries use the argument as the primary location and do not use the - // sink as an associated location. + // ExecTainted.ql queries use the argument as the primary location; + // ExecUnescaped.ql does not (used to prevent overlapping results). Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(Expr argument | argumentToExec(argument, sink) | result = argument.getLocation()) } } From dc1dff98b0f2cefd93b53240575a42ab81bd71d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 10:15:54 +0200 Subject: [PATCH 355/965] Java/ConditionalBypass java/ql/src/Security/CWE/CWE-807/ConditionalBypass.ql --- .../ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll index 31457036937..087ca674cda 100644 --- a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll @@ -51,6 +51,8 @@ module ConditionalBypassFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(MethodCall m, Expr e | result = [m, e].getLocation() | conditionControlsMethod(m, e) and sink.asExpr() = e From 9eeeec336e445c9ef08a470ded1c6bd7da6af6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 10:42:45 +0200 Subject: [PATCH 356/965] Java/ImproperValidationOfArrayConstructionCodeSpecifiedQuery java/ql/src/Security/CWE/CWE-129/ImproperValidationOfArrayConstructionCodeSpecified.ql --- .../ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll index e952971c389..487d9e3924e 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll @@ -21,6 +21,8 @@ module BoundedFlowSourceConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArrayCreationExpr arrayCreation, CheckableArrayAccess arrayAccess | result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() and arrayAccess.canThrowOutOfBoundsDueToEmptyArray(sink.asExpr(), arrayCreation) From eebff9c282be8d3a39fb84a19605cc5ec15d6696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 10:44:22 +0200 Subject: [PATCH 357/965] Java/ImproperValidationOfArrayConstructionFlow java/ql/src/Security/CWE/CWE-129/ImproperValidationOfArrayConstruction.ql --- .../security/ImproperValidationOfArrayConstructionQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll index 913d50b3159..d37a8d882b3 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll @@ -18,6 +18,8 @@ module ImproperValidationOfArrayConstructionConfig implements DataFlow::ConfigSi predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(ArrayCreationExpr arrayCreation, CheckableArrayAccess arrayAccess | result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() and arrayAccess.canThrowOutOfBoundsDueToEmptyArray(sink.asExpr(), arrayCreation) From 247ae1d23c07147576b0d792741a8bc1c375cfd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:00:05 +0200 Subject: [PATCH 358/965] Java/MaybeBrokenCryptoAlgorithmQuery java/ql/src/Security/CWE/CWE-327/MaybeBrokenCryptoAlgorithm.ql --- .../code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll b/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll index 57622b367f3..22c7320a55a 100644 --- a/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/MaybeBrokenCryptoAlgorithmQuery.qll @@ -81,7 +81,9 @@ module InsecureCryptoConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(CryptoAlgoSpec c | result = c.getLocation() | sink.asExpr() = c.getAlgoSpec()) + exists(CryptoAlgoSpec c | result = sink.getLocation() or result = c.getLocation() | + sink.asExpr() = c.getAlgoSpec() + ) } } From 72a97773b1904757a7ae46ffa8090df7b926dd1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:01:26 +0200 Subject: [PATCH 359/965] Java/NumericCastTaintedQuery java/ql/src/Security/CWE/CWE-681/NumericCastTainted.ql --- .../semmle/code/java/security/NumericCastTaintedQuery.qll | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll index bfe22c69e64..841ff4f8515 100644 --- a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll @@ -106,8 +106,9 @@ module NumericCastFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(NumericNarrowingCastExpr cast | - cast.getExpr() = sink.asExpr() and + exists(NumericNarrowingCastExpr cast | cast.getExpr() = sink.asExpr() | + result = sink.getLocation() + or result = cast.getLocation() ) } From 697f428eae3fd331084b173567e0f10c2be87892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:05:43 +0200 Subject: [PATCH 360/965] Java/TaintedEnvironmentVariableQuery java/ql/src/Security/CWE/CWE-078/ExecTaintedEnvironment.ql --- .../code/java/security/TaintedEnvironmentVariableQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/TaintedEnvironmentVariableQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedEnvironmentVariableQuery.qll index d972b59986a..2bc9dba92f0 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedEnvironmentVariableQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedEnvironmentVariableQuery.qll @@ -40,8 +40,6 @@ module ExecTaintedEnvironmentConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } } /** From 2a889f4f98f19374bf5b12d525d5730da3b1564a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:14:10 +0200 Subject: [PATCH 361/965] Java/TaintedPermissionsCheckQuery java/ql/src/Security/CWE/CWE-807/TaintedPermissionsCheck.ql --- .../code/java/security/TaintedPermissionsCheckQuery.qll | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/TaintedPermissionsCheckQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedPermissionsCheckQuery.qll index bbec7d4f4e6..7113c7036e4 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedPermissionsCheckQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedPermissionsCheckQuery.qll @@ -63,8 +63,9 @@ module TaintedPermissionsCheckFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(PermissionsConstruction p | - sink.asExpr() = p.getInput() and + exists(PermissionsConstruction p | sink.asExpr() = p.getInput() | + result = sink.getLocation() + or result = p.getLocation() ) } From 4439322e8881a7602c8a94d8ca144a3102d0f704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:15:17 +0200 Subject: [PATCH 362/965] Java/TempDirLocalInformationDisclosureQuery java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql --- .../java/security/TempDirLocalInformationDisclosureQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/TempDirLocalInformationDisclosureQuery.qll b/java/ql/lib/semmle/code/java/security/TempDirLocalInformationDisclosureQuery.qll index 098362f2bd5..0ae1d7e4df0 100644 --- a/java/ql/lib/semmle/code/java/security/TempDirLocalInformationDisclosureQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TempDirLocalInformationDisclosureQuery.qll @@ -147,8 +147,6 @@ module TempDirSystemGetPropertyToCreateConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } /** From 518c0818a4a98d5b19a8e453b995c7f0a3e9ee4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:38:37 +0200 Subject: [PATCH 363/965] Java/UnsafeDeserializationQuery java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.ql --- .../semmle/code/java/security/UnsafeDeserializationQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index f5968898adc..e0a66626be4 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -313,6 +313,8 @@ private module UnsafeDeserializationConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or result = sink.(UnsafeDeserializationSink).getMethodCall().getLocation() } } From f24a6f64ab6245d173f8b21aad81d5cba039ea4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 9 Oct 2025 14:41:30 +0200 Subject: [PATCH 364/965] Java/WebviewDebugEnabledQuery java/ql/src/Security/CWE/CWE-489/WebviewDebuggingEnabled.ql --- .../code/java/security/WebviewDebuggingEnabledQuery.qll | 6 ------ 1 file changed, 6 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll b/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll index 080a7bb482f..90e47521bf0 100644 --- a/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll +++ b/java/ql/lib/semmle/code/java/security/WebviewDebuggingEnabledQuery.qll @@ -46,12 +46,6 @@ module WebviewDebugEnabledConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node source) { - // This module is only used in `WebviewDebuggingEnabled.ql`, which doesn't - // select the source in any "$@" column. - none() - } } /** From 2a30ea923abfd4e6fd2856cf7eb09d3358af6a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Fri, 10 Oct 2025 17:30:59 +0200 Subject: [PATCH 365/965] JS/CommandInjectionQuery javascript/ql/src/experimental/heuristics/ql/src/Security/CWE-078/CommandInjection.ql javascript/ql/src/Security/CWE-078/CommandInjection.ql --- .../javascript/security/dataflow/CommandInjectionQuery.qll | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/CommandInjectionQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/CommandInjectionQuery.qll index 7c013e1f4ac..228f2b8c72c 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/CommandInjectionQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/CommandInjectionQuery.qll @@ -34,8 +34,9 @@ module CommandInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(DataFlow::Node node | - isSinkWithHighlight(sink, node) and + exists(DataFlow::Node node | isSinkWithHighlight(sink, node) | + result = sink.getLocation() + or result = node.getLocation() ) } From 71cf0426072d8520d17b50dd549460d79d846b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 13:14:50 +0200 Subject: [PATCH 366/965] JS/IndirectCommandInjectionQuery javascript/ql/src/Security/CWE-078/IndirectCommandInjection.ql --- .../security/dataflow/IndirectCommandInjectionQuery.qll | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/IndirectCommandInjectionQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/IndirectCommandInjectionQuery.qll index 87d85911a1b..6dbba8261fb 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/IndirectCommandInjectionQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/IndirectCommandInjectionQuery.qll @@ -30,8 +30,9 @@ module IndirectCommandInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(DataFlow::Node node | - isSinkWithHighlight(sink, node) and + exists(DataFlow::Node node | isSinkWithHighlight(sink, node) | + result = sink.getLocation() + or result = node.getLocation() ) } From 94343254e345b3966df6744641fc93a6efae1f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 13:28:30 +0200 Subject: [PATCH 367/965] JS/ShellCommandInjectionFromEnvironmentQuery javascript/ql/src/Security/CWE-078/ShellCommandInjectionFromEnvironment.ql --- .../dataflow/ShellCommandInjectionFromEnvironmentQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll index 1d396da5b20..34cee84aaae 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll @@ -31,6 +31,8 @@ module ShellCommandInjectionFromEnvironmentConfig implements DataFlow::ConfigSig predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.getLocation() + or exists(DataFlow::Node node | isSinkWithHighlight(sink, node) and result = node.getLocation() From bcdbe0b50ad5c65f44c1146d7917444616839538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 13:51:58 +0200 Subject: [PATCH 368/965] JS/PolynomialReDoSQuery javascript/ql/src/Performance/PolynomialReDoS.ql --- .../semmle/javascript/security/regexp/PolynomialReDoSQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/security/regexp/PolynomialReDoSQuery.qll b/javascript/ql/lib/semmle/javascript/security/regexp/PolynomialReDoSQuery.qll index e68fd5af415..d1baf9c4523 100644 --- a/javascript/ql/lib/semmle/javascript/security/regexp/PolynomialReDoSQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/regexp/PolynomialReDoSQuery.qll @@ -29,6 +29,8 @@ module PolynomialReDoSConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(Sink).getLocation() + or result = sink.(Sink).getHighlight().getLocation() or result = sink.(Sink).getRegExp().getLocation() From bb80d832767a1b6c85489a8aa4b9eb38e6871086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 13:53:11 +0200 Subject: [PATCH 369/965] JS/SSRF javascript/ql/src/experimental/Security/CWE-918/SSRF.ql --- javascript/ql/src/experimental/Security/CWE-918/SSRF.qll | 4 ---- 1 file changed, 4 deletions(-) diff --git a/javascript/ql/src/experimental/Security/CWE-918/SSRF.qll b/javascript/ql/src/experimental/Security/CWE-918/SSRF.qll index 03bc9f99038..380f594c21e 100644 --- a/javascript/ql/src/experimental/Security/CWE-918/SSRF.qll +++ b/javascript/ql/src/experimental/Security/CWE-918/SSRF.qll @@ -29,10 +29,6 @@ module SsrfConfig implements DataFlow::ConfigSig { predicate isBarrierOut(DataFlow::Node node) { strictSanitizingPrefixEdge(node, _) } - Location getASelectedSourceLocation(DataFlow::Node source) { - none() // Does not select the source - } - predicate observeDiffInformedIncrementalMode() { any() } } From baccdcc07f890fe140c693ab28c55d9f4a633fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:00:02 +0200 Subject: [PATCH 370/965] Python/PolynomialReDoSQuery python/ql/src/Security/CWE-730/PolynomialReDoS.ql --- .../semmle/python/security/dataflow/PolynomialReDoSQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSQuery.qll b/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSQuery.qll index 89aa4961e6e..11ccf27d7eb 100644 --- a/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSQuery.qll +++ b/python/ql/lib/semmle/python/security/dataflow/PolynomialReDoSQuery.qll @@ -21,6 +21,8 @@ private module PolynomialReDoSConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(Sink).getLocation() + or result = sink.(Sink).getHighlight().getLocation() or result = sink.(Sink).getABacktrackingTerm().getLocation() From 37fff48dcd3b18cf475a7ca78e74099011d982ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:02:17 +0200 Subject: [PATCH 371/965] Python/ServerSideRequestForgeryQuery python/ql/src/Security/CWE-918/PartialServerSideRequestForgery.ql --- .../python/security/dataflow/ServerSideRequestForgeryQuery.qll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryQuery.qll b/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryQuery.qll index b466d34b227..e60afa470ec 100644 --- a/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryQuery.qll +++ b/python/ql/lib/semmle/python/security/dataflow/ServerSideRequestForgeryQuery.qll @@ -68,7 +68,8 @@ private module PartialServerSideRequestForgeryConfig implements DataFlow::Config predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - // Note: this query does not select the sink itself + result = sink.(Sink).getLocation() + or result = sink.(Sink).getRequest().getLocation() } } From 6d5731686236d4cf070ed2f7821d01714654c0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:04:05 +0200 Subject: [PATCH 372/965] Python/UnsafeUnpackQuery python/ql/src/experimental/Security/CWE-022bis/UnsafeUnpack.ql --- python/ql/src/experimental/Security/UnsafeUnpackQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll index 79e50fbd36e..64da6b8d799 100644 --- a/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll +++ b/python/ql/src/experimental/Security/UnsafeUnpackQuery.qll @@ -210,8 +210,6 @@ module UnsafeUnpackConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Global taint-tracking for detecting "UnsafeUnpacking" vulnerabilities. */ From 4bc9ede2e8e03c3a5557093a45de5e13f2853b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:05:02 +0200 Subject: [PATCH 373/965] Python/UnsafeUsageOfClientSideEncryptionVersion --- .../CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a93787c9d79..a0fadbff3f3 100644 --- a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -147,8 +147,6 @@ private module AzureBlobClientConfig implements DataFlow::StateConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module AzureBlobClientFlow = DataFlow::GlobalWithState; From 998de144ea691d0a393cb71f6f277a7fad8eaa12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:08:35 +0200 Subject: [PATCH 374/965] Python/CorsBypass --- python/ql/src/experimental/Security/CWE-346/CorsBypass.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql index 4bb8440c02c..01e661cb0bb 100644 --- a/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql +++ b/python/ql/src/experimental/Security/CWE-346/CorsBypass.ql @@ -81,8 +81,6 @@ module CorsBypassConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module CorsFlow = TaintTracking::Global; From 1ff24cbee85fd268476d9967d31c7f2bdb0b3014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:09:52 +0200 Subject: [PATCH 375/965] Python/LdapInsecureAuth python/ql/src/experimental/Security/CWE-522/LdapInsecureAuth.ql --- .../experimental/semmle/python/security/LdapInsecureAuth.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll index 431f9f9ab73..630543e6f79 100644 --- a/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll +++ b/python/ql/src/experimental/semmle/python/security/LdapInsecureAuth.qll @@ -103,8 +103,6 @@ private module LdapInsecureAuthConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** Global taint-tracking for detecting "LDAP insecure authentications" vulnerabilities. */ From 6519bd990911f4b2af64bb78b1c2d22b698f5061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:15:08 +0200 Subject: [PATCH 376/965] Ruby/PolynomialReDoSQuery ruby/ql/src/queries/security/cwe-1333/PolynomialReDoS.ql --- .../ql/lib/codeql/ruby/security/regexp/PolynomialReDoSQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/security/regexp/PolynomialReDoSQuery.qll b/ruby/ql/lib/codeql/ruby/security/regexp/PolynomialReDoSQuery.qll index 81179717e01..7ff62771462 100644 --- a/ruby/ql/lib/codeql/ruby/security/regexp/PolynomialReDoSQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/regexp/PolynomialReDoSQuery.qll @@ -24,6 +24,8 @@ private module PolynomialReDoSConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { none() } Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(Sink).getLocation() + or result = sink.(Sink).getHighlight().getLocation() or result = sink.(Sink).getRegExp().getRootTerm().getLocation() From 50f2540db191a3853b8573d20737c8cefbe577d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:19:21 +0200 Subject: [PATCH 377/965] Ruby/ManuallyCheckHttpVerb --- .../manually-check-http-verb/ManuallyCheckHttpVerb.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql b/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql index 80113ee7823..4af2425b1a8 100644 --- a/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql +++ b/ruby/ql/src/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.ql @@ -88,8 +88,6 @@ private module HttpVerbConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } } private module HttpVerbFlow = TaintTracking::Global; From 495be51ae755274ab86e6330f0b48a4303ec9f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:19:55 +0200 Subject: [PATCH 378/965] Ruby/WeakParams --- ruby/ql/src/experimental/weak-params/WeakParams.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/ruby/ql/src/experimental/weak-params/WeakParams.ql b/ruby/ql/src/experimental/weak-params/WeakParams.ql index 2abc151a920..faec728a2dd 100644 --- a/ruby/ql/src/experimental/weak-params/WeakParams.ql +++ b/ruby/ql/src/experimental/weak-params/WeakParams.ql @@ -48,8 +48,6 @@ private module WeakParamsConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node node) { node = any(PersistentWriteAccess a).getValue() } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } } private module WeakParamsFlow = TaintTracking::Global; From 6ede0a795040aafbceba817505fc1c4e7279e56b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:24:40 +0200 Subject: [PATCH 379/965] Ruby/WeakFilePermissions --- ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql b/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql index dbc5db91d99..eef9f9e8f8d 100644 --- a/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql +++ b/ruby/ql/src/queries/security/cwe-732/WeakFilePermissions.ql @@ -60,8 +60,9 @@ private module PermissivePermissionsConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(FileSystemPermissionModification mod | - sinkDef(sink, mod) and + exists(FileSystemPermissionModification mod | sinkDef(sink, mod) | + result = sink.getLocation() + or result = mod.getLocation() ) } From 462d8c5dc464f531797a487da066e6855e108b26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:47:36 +0200 Subject: [PATCH 380/965] Shared: update qldoc --- shared/dataflow/codeql/dataflow/DataFlow.qll | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 49f84d45b2a..7f9c0194374 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -466,8 +466,10 @@ module Configs Lang> { * `observeDiffInformedIncrementalMode`). By default, this is the location * of the source itself, but this predicate should include any locations * that are reported as the primary-location of the query or as an - * additional location ("$@" interpolation). For a query that doesn't - * report the source at all, this predicate can be `none()`. + * additional location ("$@" interpolation). Queries with `@kind path-problem` + * that override this predicate should also return the location of the source + * itself. For a query that doesn't report the source at all, this predicate + * should be `none()`. */ default Location getASelectedSourceLocation(Node source) { result = source.getLocation() } @@ -477,8 +479,10 @@ module Configs Lang> { * `observeDiffInformedIncrementalMode`). By default, this is the location * of the sink itself, but this predicate should include any locations * that are reported as the primary-location of the query or as an - * additional location ("$@" interpolation). For a query that doesn't - * report the sink at all, this predicate can be `none()`. + * additional location ("$@" interpolation). Queries with `@kind path-problem` + * that override this predicate should also return the location of the sink + * itself. For a query that doesn't report the sink at all, this predicate + * should be `none()`. */ default Location getASelectedSinkLocation(Node sink) { result = sink.getLocation() } } @@ -615,8 +619,10 @@ module Configs Lang> { * `observeDiffInformedIncrementalMode`). By default, this is the location * of the source itself, but this predicate should include any locations * that are reported as the primary-location of the query or as an - * additional location ("$@" interpolation). For a query that doesn't - * report the source at all, this predicate can be `none()`. + * additional location ("$@" interpolation). Queries with `@kind path-problem` + * that override this predicate should also return the location of the source + * itself. For a query that doesn't report the source at all, this predicate + * should be `none()`. */ default Location getASelectedSourceLocation(Node source) { result = source.getLocation() } @@ -626,8 +632,10 @@ module Configs Lang> { * `observeDiffInformedIncrementalMode`). By default, this is the location * of the sink itself, but this predicate should include any locations * that are reported as the primary-location of the query or as an - * additional location ("$@" interpolation). For a query that doesn't - * report the sink at all, this predicate can be `none()`. + * additional location ("$@" interpolation). Queries with `@kind path-problem` + * that override this predicate should also return the location of the sink + * itself. For a query that doesn't report the sink at all, this predicate + * should be `none()`. */ default Location getASelectedSinkLocation(Node sink) { result = sink.getLocation() } } From 2332cea330ce40e49a2128527ebee06ded4e9bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:51:42 +0200 Subject: [PATCH 381/965] Swift/CleartextStorageDatabaseQuery swift/ql/src/queries/Security/CWE-311/CleartextStorageDatabase.ql --- .../swift/security/CleartextStorageDatabaseQuery.qll | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll index 989d928a8c7..21bcb89efe4 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll @@ -52,12 +52,9 @@ module CleartextStorageDatabaseConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(DataFlow::Node cleanSink | result = cleanSink.getLocation() | - cleanSink = sink.(DataFlow::PostUpdateNode).getPreUpdateNode() - or - not sink instanceof DataFlow::PostUpdateNode and - cleanSink = sink - ) + result = sink.(CleartextStorageDatabaseSink).getLocation() + or + result = sink.(DataFlow::PostUpdateNode).getPreUpdateNode().getLocation() } } From c190fae737e6f0c8501dd41ad43fe72d5f102cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:55:28 +0200 Subject: [PATCH 382/965] Swift/CleartextStoragePreferencesQuery swift/ql/src/queries/Security/CWE-312/CleartextStoragePreferences.ql --- .../swift/security/CleartextStoragePreferencesQuery.qll | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll index c3665589482..a0d3414f249 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll @@ -34,12 +34,9 @@ module CleartextStoragePreferencesConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(DataFlow::Node cleanSink | result = cleanSink.getLocation() | - cleanSink = sink.(DataFlow::PostUpdateNode).getPreUpdateNode() - or - not sink instanceof DataFlow::PostUpdateNode and - cleanSink = sink - ) + result = sink.(CleartextStoragePreferencesSink).getLocation() + or + result = sink.(DataFlow::PostUpdateNode).getPreUpdateNode().getLocation() } } From 6c52d4ba914854022afb27ed7ed282e3b113cbba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:56:45 +0200 Subject: [PATCH 383/965] Swift/ConstantPasswordQuery swift/ql/src/queries/Security/CWE-259/ConstantPassword.ql --- swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll index c0d4d7cd896..91d46b764df 100644 --- a/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll +++ b/swift/ql/lib/codeql/swift/security/ConstantPasswordQuery.qll @@ -40,8 +40,6 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module ConstantPasswordFlow = TaintTracking::Global; From 7ba7c435f2a2ea2bebbc3ed7e25362e64a081b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:58:37 +0200 Subject: [PATCH 384/965] Swift/InsufficientHashIterationsQuery swift/ql/src/queries/Security/CWE-916/InsufficientHashIterations.ql --- .../codeql/swift/security/InsufficientHashIterationsQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll index f1f21dabe03..0a7fea3d3c5 100644 --- a/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll +++ b/swift/ql/lib/codeql/swift/security/InsufficientHashIterationsQuery.qll @@ -36,8 +36,6 @@ module InsufficientHashIterationsConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module InsufficientHashIterationsFlow = TaintTracking::Global; From 5a6f731ab7f3ebd9b64e9b8bb9ec7827ec20747b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 14:59:10 +0200 Subject: [PATCH 385/965] Swift/StaticInitializationVectorQuery swift/ql/src/queries/Security/CWE-1204/StaticInitializationVector.ql --- .../codeql/swift/security/StaticInitializationVectorQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll index fb6e21cac52..3c4359e02db 100644 --- a/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StaticInitializationVectorQuery.qll @@ -42,8 +42,6 @@ module StaticInitializationVectorConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } module StaticInitializationVectorFlow = TaintTracking::Global; From cd86e7d6f5b44240f514101884140cd1e55e95c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 15:04:00 +0200 Subject: [PATCH 386/965] Swift/StringLengthConflationQuery swift/ql/src/queries/Security/CWE-135/StringLengthConflation.ql --- .../lib/codeql/swift/security/StringLengthConflationQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll index 5ddcd2333e2..eb17306f22f 100644 --- a/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll +++ b/swift/ql/lib/codeql/swift/security/StringLengthConflationQuery.qll @@ -41,8 +41,6 @@ module StringLengthConflationConfig implements DataFlow::StateConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** From 895bd93062e95614da38a75ed773773e205e03bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 15:04:58 +0200 Subject: [PATCH 387/965] Swift/UnsafeJsEvalQuery swift/ql/src/queries/Security/CWE-094/UnsafeJsEval.ql --- swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll index e82db8f4e7b..92b061b2af4 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeJsEvalQuery.qll @@ -24,8 +24,6 @@ module UnsafeJsEvalConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** From 8a750b3125de037323663c32cb0c3651cc06f04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Tue, 14 Oct 2025 15:06:21 +0200 Subject: [PATCH 388/965] Swift/UnsafeUnpackQuery swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.ql --- swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll index a8485ff9947..e79bce5ba14 100644 --- a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll +++ b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll @@ -26,8 +26,6 @@ module UnsafeUnpackConfig implements DataFlow::ConfigSig { } predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSourceLocation(DataFlow::Node sink) { none() } } /** From 1f53ffbdd7b12042931983c7be08a1eda580c33c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 12:42:24 +0200 Subject: [PATCH 389/965] Actions/ArtifactPoisoningQuery actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.ql actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.ql --- .../ql/lib/codeql/actions/security/ArtifactPoisoningQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/ArtifactPoisoningQuery.qll b/actions/ql/lib/codeql/actions/security/ArtifactPoisoningQuery.qll index 9f3ed33db96..af3b9d62367 100644 --- a/actions/ql/lib/codeql/actions/security/ArtifactPoisoningQuery.qll +++ b/actions/ql/lib/codeql/actions/security/ArtifactPoisoningQuery.qll @@ -333,8 +333,6 @@ private module ArtifactPoisoningConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.getLocation() or From edc72d29d772c1fcbd7a821254a3b6995f899af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 12:50:11 +0200 Subject: [PATCH 390/965] Actions/EnvPathInjectionQuery actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.ql actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.ql --- .../ql/lib/codeql/actions/security/EnvPathInjectionQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/EnvPathInjectionQuery.qll b/actions/ql/lib/codeql/actions/security/EnvPathInjectionQuery.qll index 46c1c4d3200..e97bbbb2b80 100644 --- a/actions/ql/lib/codeql/actions/security/EnvPathInjectionQuery.qll +++ b/actions/ql/lib/codeql/actions/security/EnvPathInjectionQuery.qll @@ -130,8 +130,6 @@ private module EnvPathInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.getLocation() or From c40223319cdc197bc3fe2ed3a4156052de5b6f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 12:52:07 +0200 Subject: [PATCH 391/965] Actions/EnvVarInjectionQuery actions/ql/src/Security/CWE-077/EnvVarInjectionMedium.ql actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.ql --- actions/ql/lib/codeql/actions/security/EnvVarInjectionQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/EnvVarInjectionQuery.qll b/actions/ql/lib/codeql/actions/security/EnvVarInjectionQuery.qll index ea8a800ef3f..40810477d92 100644 --- a/actions/ql/lib/codeql/actions/security/EnvVarInjectionQuery.qll +++ b/actions/ql/lib/codeql/actions/security/EnvVarInjectionQuery.qll @@ -184,8 +184,6 @@ private module EnvVarInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.getLocation() or From 62fde8f6e773f801a38f27398eb3f0a8c0784820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:02:36 +0200 Subject: [PATCH 392/965] Actions/ArgumentInjectionQuery actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionCritical.ql actions/ql/src/experimental/Security/CWE-088/ArgumentInjectionMedium.ql --- .../ql/lib/codeql/actions/security/ArgumentInjectionQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/ArgumentInjectionQuery.qll b/actions/ql/lib/codeql/actions/security/ArgumentInjectionQuery.qll index 1795e9493cb..7d3334adcf3 100644 --- a/actions/ql/lib/codeql/actions/security/ArgumentInjectionQuery.qll +++ b/actions/ql/lib/codeql/actions/security/ArgumentInjectionQuery.qll @@ -100,8 +100,6 @@ private module ArgumentInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.getLocation() or From 974d174757808eaaa7a2784b6c12f70d03019907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:05:51 +0200 Subject: [PATCH 393/965] Actions/CodeInjectionQuery actions/ql/src/Security/CWE-094/CodeInjectionMedium.ql actions/ql/src/Security/CWE-094/CodeInjectionCritical.ql --- actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll b/actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll index c58e3949a02..0f77acc2444 100644 --- a/actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll +++ b/actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qll @@ -80,8 +80,6 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.getLocation() or From 464f6cb096dbcbaf44ad6811fd941d40249cb48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:17:29 +0200 Subject: [PATCH 394/965] C++/ConstantSizeArrayOffByOne --- .../Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql b/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql index b7b2de6000a..58f5dc2ade4 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql @@ -187,12 +187,14 @@ module ArrayAddressToDerefConfig implements DataFlow::StateConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(Variable v | result = v.getLocation() | isSourceImpl(source, v)) + exists(Variable v | result = v.getLocation() or result = source.getLocation() | + isSourceImpl(source, v) + ) } Location getASelectedSinkLocation(DataFlow::Node sink) { exists(PointerArithmeticInstruction pai, Instruction deref | - result = [pai, deref].getLocation() and + result = [[pai, deref].getLocation(), sink.getLocation()] and isInvalidPointerDerefSink2(sink, deref, _) and isSink(sink, ArrayAddressToDerefConfig::TOverflowArithmetic(pai)) ) From 65d79ff6fc624b0653d8797eb0a5ec6a04a5a272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:20:18 +0200 Subject: [PATCH 395/965] C++/ExecTainted --- cpp/ql/src/Security/CWE/CWE-078/ExecTainted.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-078/ExecTainted.ql b/cpp/ql/src/Security/CWE/CWE-078/ExecTainted.ql index 9119f5271fe..0e5f0f36f10 100644 --- a/cpp/ql/src/Security/CWE/CWE-078/ExecTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-078/ExecTainted.ql @@ -155,7 +155,7 @@ module ExecTaintConfig implements DataFlow::StateConfigSig { Location getASelectedSinkLocation(DataFlow::Node sink) { exists(DataFlow::Node concatResult, Expr command, ExecState state | - result = [concatResult.getLocation(), command.getLocation()] and + result = [concatResult.getLocation(), command.getLocation(), sink.getLocation()] and isSink(sink, state) and isSinkImpl(sink, command, _) and concatResult = state.getOutgoingNode() From a4ac0392a6bc9cb77754b42e70e577723ec74e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:30:09 +0200 Subject: [PATCH 396/965] C++/OverflowDestination --- cpp/ql/src/Critical/OverflowDestination.ql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cpp/ql/src/Critical/OverflowDestination.ql b/cpp/ql/src/Critical/OverflowDestination.ql index df14cafd152..f3f25dfa822 100644 --- a/cpp/ql/src/Critical/OverflowDestination.ql +++ b/cpp/ql/src/Critical/OverflowDestination.ql @@ -85,10 +85,8 @@ module OverflowDestinationConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(FunctionCall fc | result = fc.getLocation() | + exists(FunctionCall fc | result = [fc.getLocation(), sink.getLocation()] | sourceSized(fc, sink.asIndirectConvertedExpr()) ) } From 2756e8255fe246ec4939fdaac3cd6ab56b80cec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:30:40 +0200 Subject: [PATCH 397/965] C++/UnboundedWrite --- cpp/ql/src/Security/CWE/CWE-120/UnboundedWrite.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-120/UnboundedWrite.ql b/cpp/ql/src/Security/CWE/CWE-120/UnboundedWrite.ql index ff9bc59b716..4d33ede9315 100644 --- a/cpp/ql/src/Security/CWE/CWE-120/UnboundedWrite.ql +++ b/cpp/ql/src/Security/CWE/CWE-120/UnboundedWrite.ql @@ -128,7 +128,7 @@ module Config implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(BufferWrite bw | result = bw.getLocation() | isSink(sink, bw, _)) + exists(BufferWrite bw | result = [bw.getLocation(), sink.getLocation()] | isSink(sink, bw, _)) } } From f7a1a4cf755a0213e9b423ad3d1ce0baefd14056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:37:06 +0200 Subject: [PATCH 398/965] C++/NonConstantFormat --- cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 34817ff9229..ed39b8da5cd 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -171,12 +171,10 @@ module NonConstFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(FormattingFunctionCall call, Expr formatString | result = call.getLocation() | + exists(FormattingFunctionCall call, Expr formatString | + result = [call.getLocation(), sink.getLocation()] + | isSinkImpl(sink, formatString) and call.getArgument(call.getFormatParameterIndex()) = formatString ) From 0ed27f4e81ebc8d1d3d57eae32f3cee33712715b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:39:20 +0200 Subject: [PATCH 399/965] C++/CleartextSqliteDatabase --- cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.ql b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.ql index a6f567600f9..7cd146e2cac 100644 --- a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.ql +++ b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.ql @@ -127,13 +127,13 @@ module FromSensitiveConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(SensitiveExpr sensitive | result = sensitive.getLocation() | + exists(SensitiveExpr sensitive | result = [sensitive.getLocation(), source.getLocation()] | isSourceImpl(source, sensitive) ) } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(SqliteFunctionCall sqliteCall | result = sqliteCall.getLocation() | + exists(SqliteFunctionCall sqliteCall | result = [sqliteCall.getLocation(), sink.getLocation()] | isSinkImpl(sink, sqliteCall, _) ) } From 17b261a506e1b58bee23c1fc2e3cdebf8507b94b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 13:52:37 +0200 Subject: [PATCH 400/965] C++/AuthenticationBypass --- cpp/ql/src/Security/CWE/CWE-290/AuthenticationBypass.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-290/AuthenticationBypass.ql b/cpp/ql/src/Security/CWE/CWE-290/AuthenticationBypass.ql index 74386b30bba..8ee429b8c52 100644 --- a/cpp/ql/src/Security/CWE/CWE-290/AuthenticationBypass.ql +++ b/cpp/ql/src/Security/CWE/CWE-290/AuthenticationBypass.ql @@ -76,7 +76,9 @@ module Config implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(Expr condition | result = condition.getLocation() | isSink(sink, condition)) + exists(Expr condition | result = [condition.getLocation(), sink.getLocation()] | + isSink(sink, condition) + ) } } From d89aa0f19daf60e06a8c44c8ba7243c900831e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:03:40 +0200 Subject: [PATCH 401/965] C++/CleartextBufferWrite --- cpp/ql/src/Security/CWE/CWE-311/CleartextBufferWrite.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-311/CleartextBufferWrite.ql b/cpp/ql/src/Security/CWE/CWE-311/CleartextBufferWrite.ql index c671ad5af7f..c03c433a532 100644 --- a/cpp/ql/src/Security/CWE/CWE-311/CleartextBufferWrite.ql +++ b/cpp/ql/src/Security/CWE/CWE-311/CleartextBufferWrite.ql @@ -51,7 +51,9 @@ module ToBufferConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(SensitiveBufferWrite w | result = w.getLocation() | isSinkImpl(sink, w)) + exists(SensitiveBufferWrite w | result = [w.getLocation(), sink.getLocation()] | + isSinkImpl(sink, w) + ) } } From b0180409f41f58e0a528ff4046b82987a7f1e0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:04:32 +0200 Subject: [PATCH 402/965] C++/CleartextFileWrite --- cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql b/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql index 6aff19ceb4a..17f4b7ae0fd 100644 --- a/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql +++ b/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql @@ -35,11 +35,13 @@ module FromSensitiveConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node sourceNode) { - exists(SensitiveExpr source | result = source.getLocation() | isSourceImpl(sourceNode, source)) + exists(SensitiveExpr source | result = [source.getLocation(), sourceNode.getLocation()] | + isSourceImpl(sourceNode, source) + ) } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(FileWrite w | result = w.getLocation() | isSinkImpl(sink, w, _)) + exists(FileWrite w | result = [w.getLocation(), sink.getLocation()] | isSinkImpl(sink, w, _)) } } From bbe2bf2b7fa0a1a7133f6b2174a530a00a487b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:05:15 +0200 Subject: [PATCH 403/965] C++/CleartextTransmission --- cpp/ql/src/Security/CWE/CWE-311/CleartextTransmission.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-311/CleartextTransmission.ql b/cpp/ql/src/Security/CWE/CWE-311/CleartextTransmission.ql index 10bb10d6a2b..01d078cf545 100644 --- a/cpp/ql/src/Security/CWE/CWE-311/CleartextTransmission.ql +++ b/cpp/ql/src/Security/CWE/CWE-311/CleartextTransmission.ql @@ -249,7 +249,9 @@ module FromSensitiveConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(NetworkSendRecv networkSendRecv | result = networkSendRecv.getLocation() | + exists(NetworkSendRecv networkSendRecv | + result = [networkSendRecv.getLocation(), sink.getLocation()] + | isSinkSendRecv(sink, networkSendRecv) ) } From 1321cbb021627fe4b71d7eb1c48cd8eaf94dd971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:10:12 +0200 Subject: [PATCH 404/965] C++/DecompressionBombs --- .../src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql index fbeb4cde5fd..ec4ba042cb7 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-409/DecompressionBombs.ql @@ -31,8 +31,6 @@ module DecompressionTaintConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { exists(FunctionCall fc | result = [sink.getLocation(), fc.getLocation()] | isSink(fc, sink)) } From f3d51e01513c643cefa4e5e9c6c8e291dfd8d98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:15:43 +0200 Subject: [PATCH 405/965] C++/ArithmeticUncontrolled --- cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql index 64705f078c6..55158ccbf72 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql @@ -124,7 +124,7 @@ module UncontrolledArithConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - result = getExpr(source).getLocation() + result = [getExpr(source).getLocation(), source.getLocation()] } } From a65d4d59975bd653adcd004d4ae108ef54d44dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:20:24 +0200 Subject: [PATCH 406/965] C++/TaintedAllocationSize --- cpp/ql/src/Security/CWE/CWE-190/TaintedAllocationSize.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-190/TaintedAllocationSize.ql b/cpp/ql/src/Security/CWE/CWE-190/TaintedAllocationSize.ql index 0149f483cc1..cf3542ebae5 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/TaintedAllocationSize.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/TaintedAllocationSize.ql @@ -95,7 +95,7 @@ module TaintedAllocationSizeConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(Expr alloc | result = alloc.getLocation() | allocSink(alloc, sink)) + exists(Expr alloc | result = [alloc.getLocation(), sink.getLocation()] | allocSink(alloc, sink)) } } From ec63547925ea5173ca55df7c891317ea8faa7db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:35:13 +0200 Subject: [PATCH 407/965] C++/UseOfHttp --- cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql index d12340035bd..f6db506f47c 100644 --- a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql +++ b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql @@ -91,10 +91,8 @@ module HttpStringToUrlOpenConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - result = source.asIndirectExpr().getLocation() + result = [source.asIndirectExpr().getLocation(), source.getLocation()] } - - Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } module HttpStringToUrlOpen = TaintTracking::Global; From d41268fc843732e5469dd3af2897796d11f73f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:37:52 +0200 Subject: [PATCH 408/965] Go/UnhandledCloseWritableHandle --- go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql b/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql index 48e4f98fdb2..25b1c8ae8fc 100644 --- a/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql +++ b/go/ql/src/InconsistentCode/UnhandledCloseWritableHandle.ql @@ -132,7 +132,7 @@ module UnhandledFileCloseConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(DataFlow::CallNode openCall | result = openCall.getLocation() | + exists(DataFlow::CallNode openCall | result = [openCall.getLocation(), source.getLocation()] | isWritableFileHandle(source, openCall) ) } From 0f0bd0f455cf6ea8361b026c5a05e5c3a1010fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:41:36 +0200 Subject: [PATCH 409/965] Go/SSRF go/ql/src/experimental/CWE-918/SSRF.ql --- go/ql/src/experimental/CWE-918/SSRF.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/ql/src/experimental/CWE-918/SSRF.qll b/go/ql/src/experimental/CWE-918/SSRF.qll index f0d3cc935a1..998ce83ba74 100644 --- a/go/ql/src/experimental/CWE-918/SSRF.qll +++ b/go/ql/src/experimental/CWE-918/SSRF.qll @@ -33,9 +33,9 @@ module ServerSideRequestForgery { predicate observeDiffInformedIncrementalMode() { any() } - Location getASelectedSourceLocation(DataFlow::Node source) { none() } - Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(Sink).getLocation() + or result = sink.(Sink).getARequest().getLocation() } } From 4952cb27fbb7a5818baf6e6976023f5e0176851c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 14:54:05 +0200 Subject: [PATCH 410/965] Rust/AccessAfterLifetime --- rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql index fce64dcf0ff..65c6d861638 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql @@ -32,7 +32,9 @@ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(Variable target, DataFlow::Node sink | result = target.getLocation() | + exists(Variable target, DataFlow::Node sink | + result = [target.getLocation(), source.getLocation()] + | isSink(sink) and narrowDereferenceAfterLifetime(source, sink, target) ) From 8e0c453c37262447878f407121d4f0d1c01b5fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 15:07:34 +0200 Subject: [PATCH 411/965] Rust/InsecureCookie --- rust/ql/src/queries/security/CWE-614/InsecureCookie.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql index e2d7288db45..3fb4924470f 100644 --- a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql +++ b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql @@ -74,7 +74,9 @@ module PartitionedCookieConfig implements DataFlow::ConfigSig { node instanceof Barrier } - predicate observeDiffInformedIncrementalMode() { any() } + predicate observeDiffInformedIncrementalMode() { + none() // only used negatively + } } module InsecureCookieFlow = TaintTracking::Global; From 96e153676919539aa42ab7477309600506f31965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Wed, 15 Oct 2025 16:29:39 +0200 Subject: [PATCH 412/965] C++/SqlTainted --- cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql b/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql index 5a823b8672c..5d08afbe304 100644 --- a/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-089/SqlTainted.ql @@ -58,7 +58,9 @@ module SqlTaintedConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(Expr taintedArg | result = taintedArg.getLocation() | taintedArg = asSinkExpr(sink)) + exists(Expr taintedArg | result = [taintedArg.getLocation(), sink.getLocation()] | + taintedArg = asSinkExpr(sink) + ) } } From a0975e7e196691c313b268371dd9989d9474bee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nora=20Dimitrijevi=C4=87?= Date: Thu, 16 Oct 2025 14:19:05 +0200 Subject: [PATCH 413/965] Constrain location overrides to actual sources/sinks --- .../Security/CWE/CWE-190/ArithmeticUncontrolled.ql | 1 + cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql | 1 + .../code/java/security/ArithmeticTaintedQuery.qll | 12 ++++++------ .../java/security/ArithmeticUncontrolledQuery.qll | 12 ++++++------ .../java/security/BrokenCryptoAlgorithmQuery.qll | 8 +++++--- .../semmle/code/java/security/CommandLineQuery.qll | 8 +++++--- .../code/java/security/ConditionalBypassQuery.qll | 4 +--- ...lidationOfArrayConstructionCodeSpecifiedQuery.qll | 7 ++++--- .../ImproperValidationOfArrayConstructionQuery.qll | 7 ++++--- .../java/security/UnsafeDeserializationQuery.qll | 2 +- .../ShellCommandInjectionFromEnvironmentQuery.qll | 4 +--- .../swift/security/CleartextStorageDatabaseQuery.qll | 6 +++++- .../security/CleartextStoragePreferencesQuery.qll | 6 +++++- 13 files changed, 45 insertions(+), 33 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql index 55158ccbf72..3126573ac5a 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql @@ -124,6 +124,7 @@ module UncontrolledArithConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { + isSource(source) and result = [getExpr(source).getLocation(), source.getLocation()] } } diff --git a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql index f6db506f47c..682d8387433 100644 --- a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql +++ b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql @@ -91,6 +91,7 @@ module HttpStringToUrlOpenConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { + isSource(source) and result = [source.asIndirectExpr().getLocation(), source.getLocation()] } } diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll index c3d4e7876d5..65e73f84149 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll @@ -19,9 +19,9 @@ module ArithmeticOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + overflowSink(exp, sink.asExpr()) + ) } } @@ -45,9 +45,9 @@ module ArithmeticUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(ArithExpr exp | result = exp.getLocation() | underflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + underflowSink(exp, sink.asExpr()) + ) } } diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll index ac79aef3f37..3c1ceaddc2f 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll @@ -25,9 +25,9 @@ module ArithmeticUncontrolledOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + overflowSink(exp, sink.asExpr()) + ) } } @@ -48,9 +48,9 @@ module ArithmeticUncontrolledUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(ArithExpr exp | result = exp.getLocation() | underflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + underflowSink(exp, sink.asExpr()) + ) } } diff --git a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll index 9bcf9dc2eaf..60f1e179397 100644 --- a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll @@ -36,9 +36,11 @@ module InsecureCryptoConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(CryptoAlgoSpec c | sink.asExpr() = c.getAlgoSpec() | result = c.getLocation()) + exists(CryptoAlgoSpec c | sink.asExpr() = c.getAlgoSpec() | + result = c.getLocation() + or + result = sink.getLocation() + ) } } diff --git a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll index 82d24eb718e..b6b9d02e289 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -66,9 +66,11 @@ module InputToArgumentToExecFlowConfig implements DataFlow::ConfigSig { // ExecTainted.ql queries use the argument as the primary location; // ExecUnescaped.ql does not (used to prevent overlapping results). Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(Expr argument | argumentToExec(argument, sink) | result = argument.getLocation()) + exists(Expr argument | argumentToExec(argument, sink) | + result = argument.getLocation() + or + result = sink.getLocation() + ) } } diff --git a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll index 087ca674cda..babf129f19e 100644 --- a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll @@ -51,9 +51,7 @@ module ConditionalBypassFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or - exists(MethodCall m, Expr e | result = [m, e].getLocation() | + exists(MethodCall m, Expr e | result = [[m, e].getLocation(), sink.getLocation()] | conditionControlsMethod(m, e) and sink.asExpr() = e ) diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll index 487d9e3924e..97a6d159bc9 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll @@ -21,10 +21,11 @@ module BoundedFlowSourceConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or exists(ArrayCreationExpr arrayCreation, CheckableArrayAccess arrayAccess | - result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() and + result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() + or + result = sink.getLocation() + | arrayAccess.canThrowOutOfBoundsDueToEmptyArray(sink.asExpr(), arrayCreation) ) } diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll index d37a8d882b3..74b8af7e588 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll @@ -18,10 +18,11 @@ module ImproperValidationOfArrayConstructionConfig implements DataFlow::ConfigSi predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or exists(ArrayCreationExpr arrayCreation, CheckableArrayAccess arrayAccess | - result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() and + result = [arrayCreation, arrayAccess.getIndexExpr()].getLocation() + or + result = sink.getLocation() + | arrayAccess.canThrowOutOfBoundsDueToEmptyArray(sink.asExpr(), arrayCreation) ) } diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index e0a66626be4..dc771a46606 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -313,7 +313,7 @@ private module UnsafeDeserializationConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() + result = sink.(UnsafeDeserializationSink).getLocation() or result = sink.(UnsafeDeserializationSink).getMethodCall().getLocation() } diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll index 34cee84aaae..e1dcdd339d9 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll @@ -31,11 +31,9 @@ module ShellCommandInjectionFromEnvironmentConfig implements DataFlow::ConfigSig predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.getLocation() - or exists(DataFlow::Node node | isSinkWithHighlight(sink, node) and - result = node.getLocation() + result = [node.getLocation(), sink.getLocation()] ) } } diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll index 21bcb89efe4..50a421a05dc 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll @@ -54,7 +54,11 @@ module CleartextStorageDatabaseConfig implements DataFlow::ConfigSig { Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.(CleartextStorageDatabaseSink).getLocation() or - result = sink.(DataFlow::PostUpdateNode).getPreUpdateNode().getLocation() + result = + sink.(CleartextStorageDatabaseSink) + .(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .getLocation() } } diff --git a/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll index a0d3414f249..578fe0b36e0 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll @@ -36,7 +36,11 @@ module CleartextStoragePreferencesConfig implements DataFlow::ConfigSig { Location getASelectedSinkLocation(DataFlow::Node sink) { result = sink.(CleartextStoragePreferencesSink).getLocation() or - result = sink.(DataFlow::PostUpdateNode).getPreUpdateNode().getLocation() + result = + sink.(CleartextStoragePreferencesSink) + .(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .getLocation() } } From abcc1712d599aebe204b8628ad0cca6315c02694 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 28 Oct 2025 09:26:11 +0000 Subject: [PATCH 414/965] Rust: Remove more redundant models. --- rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml index f7f4475c045..8aa03133354 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/net.model.yml @@ -10,7 +10,3 @@ extensions: extensible: summaryModel data: - ["::try_clone", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["<_ as std::io::Read>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as std::io::Read>::read_to_string", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as std::io::Read>::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as std::io::Read>::read_exact", "Argument[self]", "Argument[0].Reference", "taint", "manual"] From 409f7fb7437adee4610250cca56da19043ab5cb7 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 28 Oct 2025 11:48:45 +0100 Subject: [PATCH 415/965] Address review comments --- .../codeql/rust/internal/TypeInference.qll | 2 +- .../typeinference/BlanketImplementation.qll | 4 +-- .../typeinference/internal/TypeInference.qll | 28 ++++++++++++------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index b8c543ee95b..338135a63c8 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1230,7 +1230,7 @@ private module MethodResolution { ReceiverIsNotInstantiationOfBlanketLikeSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, derefChain, borrow), impl, _) or - ReceiverSatisfiesBlanketLikeConstraint::satisfiesNotBlanketConstraint(MkMethodCallCand(this, + ReceiverSatisfiesBlanketLikeConstraint::dissatisfiesBlanketConstraint(MkMethodCallCand(this, derefChain, borrow), impl) } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 2a615418bc2..b88424caa34 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -138,11 +138,11 @@ module SatisfiesBlanketConstraint< * constraint of `impl`. */ pragma[nomagic] - predicate satisfiesNotBlanketConstraint(ArgumentType at, ImplItemNode impl) { + predicate dissatisfiesBlanketConstraint(ArgumentType at, ImplItemNode impl) { exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | ato = MkArgumentTypeAndBlanketOffset(at, _) and SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and - SatisfiesBlanketConstraint::satisfiesNotConstraint(ato, TTrait(traitBound)) + SatisfiesBlanketConstraint::dissatisfiesConstraint(ato, TTrait(traitBound)) ) } } diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 78b140f91e5..94f227c3a9a 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -705,10 +705,13 @@ module Make1 Input1> { /** * Holds if `app` is _not_ a possible instantiation of `constraint`. * - * This is a monotonic approximation of `not isInstantiationOf(app, abs, constraint)`; - * if, for example, `app` has two different types `t1` and `t2` at the same type path, - * and `t1` satisfies `constraint` while `t2` does not, then both `isInstantiationOf` - * and `isNotInstantiationOf` will hold. + * This is an approximation of `not isInstantiationOf(app, abs, constraint)`, but + * defined without a negative occurrence of `isInstantiationOf`. + * + * Due to the approximation, both `isInstantiationOf` and `isNotInstantiationOf` + * can hold for the same values. For example, if `app` has two different types `t1` + * and `t2` at the same type path, and `t1` satisfies `constraint` while `t2` does + * not, then both `isInstantiationOf` and `isNotInstantiationOf` will hold. * * Dually, if `app` does not have a type at a required type path, then neither * `isInstantiationOf` nor `isNotInstantiationOf` will hold. @@ -1008,6 +1011,8 @@ module Make1 Input1> { /** * Holds if `tt` does not satisfy `constraint`. + * + * This predicate is an approximation of `not hasConstraintMention(tt, constraint)`. */ pragma[nomagic] private predicate hasNotConstraintMention(HasTypeTree tt, Type constraint) { @@ -1085,16 +1090,19 @@ module Make1 Input1> { /** * Holds if the type tree at `tt` does _not_ satisfy the constraint `constraint`. * - * This is a monotonic approximation of `not satisfiesConstraintType(tt, constraint, _, _)`; - * if, for example, `tt` has two different types `t1` and `t2`, and `t1` satisfies - * `constraint` while `t2` does not, then both `satisfiesConstraintType` and - * `satisfiesNotConstraint` will hold. + * This is an approximation of `not satisfiesConstraintType(tt, constraint, _, _)`, + * but defined without a negative occurrence of `satisfiesConstraintType`. + * + * Due to the approximation, both `satisfiesConstraintType` and `dissatisfiesConstraint` + * can hold for the same values. For example, if `tt` has two different types `t1` + * and `t2`, and `t1` satisfies `constraint` while `t2` does not, then both + * `satisfiesConstraintType` and `dissatisfiesConstraint` will hold. * * Dually, if `tt` does not have a type, then neither `satisfiesConstraintType` nor - * `satisfiesNotConstraint` will hold. + * `dissatisfiesConstraint` will hold. */ pragma[nomagic] - predicate satisfiesNotConstraint(HasTypeTree tt, Type constraint) { + predicate dissatisfiesConstraint(HasTypeTree tt, Type constraint) { hasNotConstraintMention(tt, constraint) and exists(Type t | hasTypeConstraint(tt, t, constraint) and From 104ba0e2910c9571706747e5ababc1bfc4a4b8ba Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 27 Oct 2025 13:18:09 +0100 Subject: [PATCH 416/965] Rust: Fix bad join Before ``` Pipeline standard for TypeInference::MethodCallMatching::AccessConstraint::RelevantAccess.getTypeAt/1#dispred#e8abf748@ada3a07w was evaluated in 801 iterations totaling 31ms (delta sizes total: 182871). 50151 ~1% {4} r1 = SCAN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev_delta OUTPUT In.0, In.2, In.3, In.4 39574 ~0% {5} | JOIN WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev` ON FIRST 2 OUTPUT Lhs.3, Rhs.3, _, Lhs.2, Rhs.2 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 36996 ~0% {3} | SCAN OUTPUT In.0, In.2, In.1 36102333 ~0% {4} r2 = SCAN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev OUTPUT In.0, In.2, In.3, In.4 90175 ~1% {5} | JOIN WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev_delta` ON FIRST 2 OUTPUT Lhs.3, Rhs.3, _, Lhs.2, Rhs.2 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 65014 ~1% {3} | SCAN OUTPUT In.0, In.2, In.1 50151 ~1% {5} r3 = SCAN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev_delta OUTPUT In.2, In.0, In.1, In.3, In.4 24208 ~1% {4} | JOIN WITH `FunctionType::FunctionPosition.isSelf/0#dispred#9e84d302` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4 95022 ~0% {9} | JOIN WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev` ON FIRST 1 OUTPUT Lhs.2, Lhs.3, Rhs.2, Rhs.3, Rhs.4, _, Rhs.1, Lhs.1, _ {6} | REWRITE WITH Tmp.5 := ";", Tmp.5 := (In.6 ++ Tmp.5), Tmp.8 := "", Out.5 := InverseAppend(Tmp.5,Tmp.8,In.7) KEEPING 6 93919 ~1% {7} | SCAN OUTPUT In.0, In.1, In.2, In.3, In.4, In.5, _ {6} | REWRITE WITH NOT [NOT [Tmp.6 := "borrow", TEST InOut.5 = Tmp.6, Tmp.6 := true, TEST InOut.2 = Tmp.6], NOT [Tmp.6 := "", TEST InOut.5 = Tmp.6, Tmp.6 := true, TEST InOut.2 != Tmp.6]] KEEPING 6 81298 ~1% {5} | SCAN OUTPUT In.1, In.4, _, In.0, In.3 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 64110 ~1% {3} | SCAN OUTPUT In.0, In.2, In.1 36102333 ~0% {5} r4 = SCAN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev OUTPUT In.2, In.0, In.1, In.3, In.4 17473531 ~0% {4} | JOIN WITH `FunctionType::FunctionPosition.isSelf/0#dispred#9e84d302` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4 47409 ~1% {9} | JOIN WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev_delta` ON FIRST 1 OUTPUT Lhs.2, Lhs.3, Rhs.2, Rhs.3, Rhs.4, _, Rhs.1, Lhs.1, _ {6} | REWRITE WITH Tmp.5 := ";", Tmp.5 := (In.6 ++ Tmp.5), Tmp.8 := "", Out.5 := InverseAppend(Tmp.5,Tmp.8,In.7) KEEPING 6 29885 ~0% {7} | SCAN OUTPUT In.0, In.1, In.2, In.3, In.4, In.5, _ {6} | REWRITE WITH NOT [NOT [Tmp.6 := "borrow", TEST InOut.5 = Tmp.6, Tmp.6 := true, TEST InOut.2 = Tmp.6], NOT [Tmp.6 := "", TEST InOut.5 = Tmp.6, Tmp.6 := true, TEST InOut.2 != Tmp.6]] KEEPING 6 16952 ~1% {5} | SCAN OUTPUT In.1, In.4, _, In.0, In.3 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 16829 ~0% {3} | SCAN OUTPUT In.0, In.2, In.1 182949 ~1% {3} r5 = r1 UNION r2 UNION r3 UNION r4 182949 ~1% {3} | AND NOT `TypeInference::MethodCallMatching::AccessConstraint::RelevantAccess.getTypeAt/1#dispred#e8abf748#prev`(FIRST 3) return r5 ``` After ``` Pipeline standard for TypeInference::MethodCallMatching::AccessConstraint::RelevantAccess.getTypeAt/1#dispred#e8abf748@31ee547w was evaluated in 801 iterations totaling 19ms (delta sizes total: 182946). 81298 ~0% {5} r1 = JOIN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev_delta WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev` ON FIRST 3 OUTPUT Lhs.4, Rhs.4, _, Lhs.3, Rhs.3 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 64110 ~1% {3} | SCAN OUTPUT In.0, In.2, In.1 39574 ~0% {5} r2 = JOIN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev_delta WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev` ON FIRST 2 OUTPUT Lhs.4, Rhs.3, _, Lhs.3, Rhs.2 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 36996 ~0% {3} | SCAN OUTPUT In.0, In.2, In.1 16952 ~0% {5} r3 = JOIN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev_delta` ON FIRST 3 OUTPUT Lhs.4, Rhs.4, _, Lhs.3, Rhs.3 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 16829 ~0% {3} | SCAN OUTPUT In.0, In.2, In.1 90175 ~0% {5} r4 = JOIN TypeInference::MethodCallMatching::AccessConstraint::MkRelevantAccess#7a01048b#prev WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev_delta` ON FIRST 2 OUTPUT Lhs.4, Rhs.3, _, Lhs.3, Rhs.2 {3} | REWRITE WITH Tmp.2 := "", Out.2 := InverseAppend(In.3,Tmp.2,In.4) KEEPING 3 65014 ~0% {3} | SCAN OUTPUT In.0, In.2, In.1 182949 ~1% {3} r5 = r1 UNION r2 UNION r3 UNION r4 182949 ~1% {3} | AND NOT `TypeInference::MethodCallMatching::AccessConstraint::RelevantAccess.getTypeAt/1#dispred#e8abf748#prev`(FIRST 3) return r5 ``` --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 14 +++++++------- .../typeinference/internal/TypeInference.qll | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index bcc18342c00..15daf6d2f17 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1812,8 +1812,12 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi } pragma[nomagic] - private Type getInferredSelfType(string derefChain, boolean borrow, TypePath path) { - result = this.getACandidateReceiverTypeAt(derefChain, borrow, path) + private Type getInferredSelfType(AccessPosition apos, string derefChainBorrow, TypePath path) { + exists(string derefChain, boolean borrow | + result = this.getACandidateReceiverTypeAt(derefChain, borrow, path) and + derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and + apos.isSelf() + ) } pragma[nomagic] @@ -1839,11 +1843,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi bindingset[derefChainBorrow] Type getInferredType(string derefChainBorrow, AccessPosition apos, TypePath path) { - exists(string derefChain, boolean borrow | - derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - apos.isSelf() and - result = this.getInferredSelfType(derefChain, borrow, path) - ) + result = this.getInferredSelfType(apos, derefChainBorrow, path) or result = this.getInferredNonSelfType(apos, path) } diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index ff9ccf3c192..7df7f26d9fa 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1269,7 +1269,7 @@ module Make1 Input1> { } private newtype TRelevantAccess = - MkRelevantAccess(Access a, AccessEnvironment e, AccessPosition apos, TypePath path) { + MkRelevantAccess(Access a, AccessPosition apos, AccessEnvironment e, TypePath path) { relevantAccessConstraint(a, e, _, apos, path, _) } @@ -1279,11 +1279,11 @@ module Make1 Input1> { */ private class RelevantAccess extends MkRelevantAccess { Access a; - AccessEnvironment e; AccessPosition apos; + AccessEnvironment e; TypePath path; - RelevantAccess() { this = MkRelevantAccess(a, e, apos, path) } + RelevantAccess() { this = MkRelevantAccess(a, apos, e, path) } Type getTypeAt(TypePath suffix) { result = a.getInferredType(e, apos, path.appendInverse(suffix)) @@ -1314,7 +1314,7 @@ module Make1 Input1> { Type constraint, TypePath path, Type t ) { exists(RelevantAccess ra | - ra = MkRelevantAccess(a, e, apos, prefix) and + ra = MkRelevantAccess(a, apos, e, prefix) and SatisfiesConstraint::satisfiesConstraintType(ra, constraint, path, t) and constraint = ra.getConstraint(target) From b3bbe78974a9a61a6fc3c2f12b4fea25c01c28da Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 27 Oct 2025 13:21:41 +0100 Subject: [PATCH 417/965] Rust: Fix bad join Before ``` Pipeline standard for TypeInference::MethodCallMatching::directTypeMatch/6#f0fb0b61@31ee5u2w was evaluated in 821 iterations totaling 1057ms (delta sizes total: 689971). 416937 ~1% {6} r1 = SCAN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev_delta` OUTPUT In.0, In.3, In.1, In.2, In.4, In.5 222757 ~2% {8} r2 = JOIN r1 WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev` ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.3, _, Lhs.4, Rhs.2 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 164360 ~3% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 315350783 ~1% {6} r3 = SCAN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev` OUTPUT In.0, In.3, In.1, In.2, In.4, In.5 593815 ~1% {8} r4 = JOIN r3 WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev_delta` ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.3, _, Lhs.4, Rhs.2 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 342226 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 826517 ~0% {8} r5 = JOIN r1 WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev` ON FIRST 3 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.4, _, Lhs.4, Rhs.3 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 345294 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 73715 ~0% {8} r6 = JOIN r3 WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev_delta` ON FIRST 3 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.4, _, Lhs.4, Rhs.3 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 47802 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 899682 ~5% {6} r7 = r2 UNION r4 UNION r5 UNION r6 711040 ~6% {6} | AND NOT `TypeInference::MethodCallMatching::directTypeMatch/6#f0fb0b61#prev`(FIRST 6) return r7 ``` After ``` Pipeline standard for TypeInference::MethodCallMatching::directTypeMatch/6#f0fb0b61@ad458u2w was evaluated in 821 iterations totaling 374ms (delta sizes total: 691168). 222757 ~2% {8} r1 = JOIN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev_delta` WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev` ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.3, _, Lhs.4, Rhs.2 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 164360 ~3% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 593815 ~1% {8} r2 = JOIN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev` WITH `TypeInference::MethodCallMatchingInput::Access.getInferredNonSelfType/2#dispred#b181cb0a#prev_delta` ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.3, _, Lhs.4, Rhs.2 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 342226 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 826517 ~0% {8} r3 = JOIN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev_delta` WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev` ON FIRST 3 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.4, _, Lhs.4, Rhs.3 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 345294 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 73715 ~0% {8} r4 = JOIN `TypeInference::MethodCallMatching::directTypeMatch0/6#dfcc7717#prev` WITH `TypeInference::MethodCallMatchingInput::Access.getInferredSelfType/3#dispred#45b2f893#prev_delta` ON FIRST 3 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.5, Rhs.4, _, Lhs.4, Rhs.3 {6} | REWRITE WITH Tmp.5 := "", Out.5 := InverseAppend(In.6,Tmp.5,In.7) KEEPING 6 47802 ~1% {6} | SCAN OUTPUT In.0, In.1, In.2, In.5, In.4, In.3 899682 ~5% {6} r5 = r1 UNION r2 UNION r3 UNION r4 711095 ~6% {6} | AND NOT `TypeInference::MethodCallMatching::directTypeMatch/6#f0fb0b61#prev`(FIRST 6) return r5 ``` --- .../codeql/typeinference/internal/TypeInference.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 7df7f26d9fa..0b259df9211 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1160,7 +1160,7 @@ module Make1 Input1> { pragma[nomagic] private predicate directTypeMatch0( - Access a, AccessEnvironment e, Declaration target, DeclarationPosition dpos, + Access a, DeclarationPosition dpos, AccessEnvironment e, Declaration target, TypePath pathToTypeParam, TypeParameter tp ) { not exists(getTypeArgument(a, target, tp, _)) and @@ -1177,7 +1177,7 @@ module Make1 Input1> { Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { exists(AccessPosition apos, DeclarationPosition dpos, TypePath pathToTypeParam | - directTypeMatch0(a, e, target, dpos, pathToTypeParam, tp) and + directTypeMatch0(a, dpos, e, target, pathToTypeParam, tp) and accessDeclarationPositionMatch(apos, dpos) and t = a.getInferredType(e, apos, pathToTypeParam.appendInverse(path)) ) From 6f1eca8be1851dc9fd11d6560994d87cfa3785d8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:18:11 +0100 Subject: [PATCH 418/965] Rust: Make the QLDoc for fromSource a bit more precise. --- rust/ql/lib/codeql/files/FileSystem.qll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/files/FileSystem.qll b/rust/ql/lib/codeql/files/FileSystem.qll index 854de53652f..ebc4085fbbb 100644 --- a/rust/ql/lib/codeql/files/FileSystem.qll +++ b/rust/ql/lib/codeql/files/FileSystem.qll @@ -38,7 +38,10 @@ module Folder = Impl::Folder; /** A file. */ class File extends Container, Impl::File { - /** Holds if this file was extracted from ordinary source code. */ + /** + * Holds if this file was extracted from the source code of the target project + * (rather than another location such as inside a dependency). + */ predicate fromSource() { exists(ExtractorStep s | s.getAction() = "Extract" and s.getFile() = this) } From 9ff3c61c6ef61e1fd1672623df39e3ec4c69a6be Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 29 Oct 2025 10:03:52 +0100 Subject: [PATCH 419/965] Rust: Add type inference tests involving `Self` --- .../PathResolutionConsistency.expected | 12 +- .../test/library-tests/type-inference/main.rs | 46 + .../type-inference/type-inference.expected | 7613 +++++++++-------- 3 files changed, 3881 insertions(+), 3790 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 2a12ae35276..28098e14514 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -5,9 +5,9 @@ multipleCallTargets | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | -| main.rs:2437:13:2437:31 | ...::from(...) | -| main.rs:2438:13:2438:31 | ...::from(...) | -| main.rs:2439:13:2439:31 | ...::from(...) | -| main.rs:2445:13:2445:31 | ...::from(...) | -| main.rs:2446:13:2446:31 | ...::from(...) | -| main.rs:2447:13:2447:31 | ...::from(...) | +| main.rs:2482:13:2482:31 | ...::from(...) | +| main.rs:2483:13:2483:31 | ...::from(...) | +| main.rs:2484:13:2484:31 | ...::from(...) | +| main.rs:2490:13:2490:31 | ...::from(...) | +| main.rs:2491:13:2491:31 | ...::from(...) | +| main.rs:2492:13:2492:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index fd34676284a..7dec2061a32 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -652,6 +652,51 @@ mod type_parameter_bounds { } } +mod trait_default_self_type_parameter { + // A trait with a type parameter that defaults to `Self`. + // trait TraitWithSelfTp { + trait TraitWithSelfTp> { + // TraitWithSelfTp::get_a + fn get_a(&self) -> A; + } + + fn get_a>(thing: &T) -> A { + thing.get_a() // $ target=TraitWithSelfTp::get_a + } + + // The trait bound on `T` uses the default for `A` which contains `Self` + fn tp_uses_default(thing: S) -> i64 { + let _ms = thing.get_a(); // $ target=TraitWithSelfTp::get_a MISSING: type=_ms:T.S + 0 + } + + // The supertrait uses the default for `A` which contains `Self` + trait SubTraitOfTraitWithSelfTp: TraitWithSelfTp + Sized {} + + fn get_a_through_tp(thing: &S) { + // `thing` is a `TraitWithSelfTp` through the trait hierarchy + let _ms = get_a(thing); // $ target=get_a MISSING: type=_ms:T.S + } + + struct MyStruct { + value: i32, + } + + // The implementing trait uses the default for `A` which contains `Self` + impl TraitWithSelfTp for MyStruct { + fn get_a(&self) -> Option { + Some(MyStruct { value: self.value }) // $ fieldof=MyStruct + } + } + + impl SubTraitOfTraitWithSelfTp for MyStruct {} + + pub fn test() { + let s = MyStruct { value: 0 }; + let _ms = get_a(&s); // $ target=get_a MISSING: type=_ms:T.MyStruct + } +} + mod function_trait_bounds { #[derive(Debug, Clone, Copy)] struct MyThing { @@ -2753,6 +2798,7 @@ fn main() { method_impl::g(method_impl::Foo {}, method_impl::Foo {}); // $ target=g method_non_parametric_impl::f(); // $ target=f method_non_parametric_trait_impl::f(); // $ target=f + trait_default_self_type_parameter::test(); // $ target=test function_trait_bounds::f(); // $ target=f associated_type_in_trait::f(); // $ target=f generic_enum::f(); // $ target=f diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 76b4afc482f..8e8e76ebde4 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2002,3799 +2002,3844 @@ inferType | main.rs:651:18:651:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:651:32:651:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:651:36:651:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:667:15:667:18 | SelfParam | | main.rs:666:5:677:5 | Self [trait MyTrait] | -| main.rs:669:15:669:18 | SelfParam | | main.rs:666:5:677:5 | Self [trait MyTrait] | -| main.rs:672:9:674:9 | { ... } | | main.rs:666:19:666:19 | A | -| main.rs:673:13:673:16 | self | | main.rs:666:5:677:5 | Self [trait MyTrait] | -| main.rs:673:13:673:21 | self.m1() | | main.rs:666:19:666:19 | A | -| main.rs:676:18:676:18 | x | | main.rs:666:5:677:5 | Self [trait MyTrait] | -| main.rs:681:50:681:50 | x | | main.rs:681:26:681:47 | T2 | -| main.rs:681:63:684:5 | { ... } | | main.rs:681:22:681:23 | T1 | -| main.rs:682:9:682:9 | x | | main.rs:681:26:681:47 | T2 | -| main.rs:682:9:682:14 | x.m1() | | main.rs:681:22:681:23 | T1 | -| main.rs:683:9:683:9 | x | | main.rs:681:26:681:47 | T2 | -| main.rs:683:9:683:14 | x.m1() | | main.rs:681:22:681:23 | T1 | -| main.rs:685:52:685:52 | x | | main.rs:685:28:685:49 | T2 | -| main.rs:685:65:689:5 | { ... } | | main.rs:685:24:685:25 | T1 | -| main.rs:686:13:686:13 | y | | main.rs:685:24:685:25 | T1 | -| main.rs:686:17:686:25 | ...::m1(...) | | main.rs:685:24:685:25 | T1 | -| main.rs:686:24:686:24 | x | | main.rs:685:28:685:49 | T2 | -| main.rs:687:9:687:9 | y | | main.rs:685:24:685:25 | T1 | -| main.rs:688:9:688:17 | ...::m1(...) | | main.rs:685:24:685:25 | T1 | -| main.rs:688:16:688:16 | x | | main.rs:685:28:685:49 | T2 | -| main.rs:690:52:690:52 | x | | main.rs:690:28:690:49 | T2 | -| main.rs:690:65:694:5 | { ... } | | main.rs:690:24:690:25 | T1 | -| main.rs:691:13:691:13 | y | | main.rs:690:24:690:25 | T1 | -| main.rs:691:17:691:30 | ...::m1(...) | | main.rs:690:24:690:25 | T1 | -| main.rs:691:29:691:29 | x | | main.rs:690:28:690:49 | T2 | -| main.rs:692:9:692:9 | y | | main.rs:690:24:690:25 | T1 | -| main.rs:693:9:693:22 | ...::m1(...) | | main.rs:690:24:690:25 | T1 | -| main.rs:693:21:693:21 | x | | main.rs:690:28:690:49 | T2 | -| main.rs:695:55:695:55 | x | | main.rs:695:31:695:52 | T2 | -| main.rs:695:68:699:5 | { ... } | | main.rs:695:27:695:28 | T1 | -| main.rs:696:13:696:13 | y | | main.rs:695:27:695:28 | T1 | -| main.rs:696:17:696:28 | ...::assoc(...) | | main.rs:695:27:695:28 | T1 | -| main.rs:696:27:696:27 | x | | main.rs:695:31:695:52 | T2 | -| main.rs:697:9:697:9 | y | | main.rs:695:27:695:28 | T1 | -| main.rs:698:9:698:20 | ...::assoc(...) | | main.rs:695:27:695:28 | T1 | -| main.rs:698:19:698:19 | x | | main.rs:695:31:695:52 | T2 | -| main.rs:700:55:700:55 | x | | main.rs:700:31:700:52 | T2 | -| main.rs:700:68:704:5 | { ... } | | main.rs:700:27:700:28 | T1 | -| main.rs:701:13:701:13 | y | | main.rs:700:27:700:28 | T1 | -| main.rs:701:17:701:33 | ...::assoc(...) | | main.rs:700:27:700:28 | T1 | -| main.rs:701:32:701:32 | x | | main.rs:700:31:700:52 | T2 | -| main.rs:702:9:702:9 | y | | main.rs:700:27:700:28 | T1 | -| main.rs:703:9:703:25 | ...::assoc(...) | | main.rs:700:27:700:28 | T1 | -| main.rs:703:24:703:24 | x | | main.rs:700:31:700:52 | T2 | -| main.rs:708:49:708:49 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:708:49:708:49 | x | T | main.rs:708:32:708:46 | T2 | -| main.rs:708:71:710:5 | { ... } | | main.rs:708:28:708:29 | T1 | -| main.rs:709:9:709:9 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:709:9:709:9 | x | T | main.rs:708:32:708:46 | T2 | -| main.rs:709:9:709:11 | x.a | | main.rs:708:32:708:46 | T2 | -| main.rs:709:9:709:16 | ... .m1() | | main.rs:708:28:708:29 | T1 | -| main.rs:711:51:711:51 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:711:51:711:51 | x | T | main.rs:711:34:711:48 | T2 | -| main.rs:711:73:713:5 | { ... } | | main.rs:711:30:711:31 | T1 | -| main.rs:712:9:712:19 | ...::m1(...) | | main.rs:711:30:711:31 | T1 | -| main.rs:712:16:712:16 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:712:16:712:16 | x | T | main.rs:711:34:711:48 | T2 | -| main.rs:712:16:712:18 | x.a | | main.rs:711:34:711:48 | T2 | -| main.rs:714:51:714:51 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:714:51:714:51 | x | T | main.rs:714:34:714:48 | T2 | -| main.rs:714:73:716:5 | { ... } | | main.rs:714:30:714:31 | T1 | -| main.rs:715:9:715:24 | ...::m1(...) | | main.rs:714:30:714:31 | T1 | -| main.rs:715:21:715:21 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:715:21:715:21 | x | T | main.rs:714:34:714:48 | T2 | -| main.rs:715:21:715:23 | x.a | | main.rs:714:34:714:48 | T2 | -| main.rs:719:15:719:18 | SelfParam | | main.rs:656:5:659:5 | MyThing | -| main.rs:719:15:719:18 | SelfParam | T | main.rs:718:10:718:10 | T | -| main.rs:719:26:721:9 | { ... } | | main.rs:718:10:718:10 | T | -| main.rs:720:13:720:16 | self | | main.rs:656:5:659:5 | MyThing | -| main.rs:720:13:720:16 | self | T | main.rs:718:10:718:10 | T | -| main.rs:720:13:720:18 | self.a | | main.rs:718:10:718:10 | T | -| main.rs:723:18:723:18 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:723:18:723:18 | x | T | main.rs:718:10:718:10 | T | -| main.rs:723:32:725:9 | { ... } | | main.rs:718:10:718:10 | T | -| main.rs:724:13:724:13 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:724:13:724:13 | x | T | main.rs:718:10:718:10 | T | -| main.rs:724:13:724:15 | x.a | | main.rs:718:10:718:10 | T | -| main.rs:729:13:729:13 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:729:13:729:13 | x | T | main.rs:661:5:662:14 | S1 | -| main.rs:729:17:729:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:729:17:729:33 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | -| main.rs:729:30:729:31 | S1 | | main.rs:661:5:662:14 | S1 | -| main.rs:730:13:730:13 | y | | main.rs:656:5:659:5 | MyThing | -| main.rs:730:13:730:13 | y | T | main.rs:663:5:664:14 | S2 | -| main.rs:730:17:730:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:730:17:730:33 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | -| main.rs:730:30:730:31 | S2 | | main.rs:663:5:664:14 | S2 | -| main.rs:732:18:732:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:732:18:732:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:732:18:732:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:732:18:732:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:732:26:732:26 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:732:26:732:26 | x | T | main.rs:661:5:662:14 | S1 | -| main.rs:732:26:732:31 | x.m1() | | main.rs:661:5:662:14 | S1 | -| main.rs:733:18:733:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:733:18:733:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:733:18:733:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:733:18:733:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:733:26:733:26 | y | | main.rs:656:5:659:5 | MyThing | -| main.rs:733:26:733:26 | y | T | main.rs:663:5:664:14 | S2 | -| main.rs:733:26:733:31 | y.m1() | | main.rs:663:5:664:14 | S2 | -| main.rs:735:13:735:13 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:735:13:735:13 | x | T | main.rs:661:5:662:14 | S1 | -| main.rs:735:17:735:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:735:17:735:33 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | -| main.rs:735:30:735:31 | S1 | | main.rs:661:5:662:14 | S1 | -| main.rs:736:13:736:13 | y | | main.rs:656:5:659:5 | MyThing | -| main.rs:736:13:736:13 | y | T | main.rs:663:5:664:14 | S2 | -| main.rs:736:17:736:33 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:736:17:736:33 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | -| main.rs:736:30:736:31 | S2 | | main.rs:663:5:664:14 | S2 | -| main.rs:738:18:738:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:738:18:738:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:738:18:738:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:738:18:738:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:738:26:738:26 | x | | main.rs:656:5:659:5 | MyThing | -| main.rs:738:26:738:26 | x | T | main.rs:661:5:662:14 | S1 | -| main.rs:738:26:738:31 | x.m2() | | main.rs:661:5:662:14 | S1 | -| main.rs:739:18:739:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:739:18:739:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:739:18:739:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:739:18:739:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:739:26:739:26 | y | | main.rs:656:5:659:5 | MyThing | -| main.rs:739:26:739:26 | y | T | main.rs:663:5:664:14 | S2 | -| main.rs:739:26:739:31 | y.m2() | | main.rs:663:5:664:14 | S2 | -| main.rs:741:13:741:14 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:741:13:741:14 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:741:18:741:34 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:741:18:741:34 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | -| main.rs:741:31:741:32 | S1 | | main.rs:661:5:662:14 | S1 | -| main.rs:742:13:742:14 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:742:13:742:14 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:742:18:742:34 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:742:18:742:34 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | -| main.rs:742:31:742:32 | S2 | | main.rs:663:5:664:14 | S2 | -| main.rs:744:13:744:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:744:17:744:33 | call_trait_m1(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:744:31:744:32 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:744:31:744:32 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:745:18:745:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:745:18:745:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:745:18:745:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:745:18:745:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:745:26:745:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:746:13:746:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:746:17:746:35 | call_trait_m1_2(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:746:33:746:34 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:746:33:746:34 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:747:18:747:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:747:18:747:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:747:18:747:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:747:18:747:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:747:26:747:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:748:13:748:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:748:17:748:35 | call_trait_m1_3(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:748:33:748:34 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:748:33:748:34 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:749:18:749:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:749:18:749:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:749:18:749:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:749:18:749:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:749:26:749:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:750:13:750:13 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:750:17:750:33 | call_trait_m1(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:750:31:750:32 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:750:31:750:32 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:751:18:751:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:751:18:751:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:751:18:751:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:751:18:751:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:751:26:751:26 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:752:13:752:13 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:752:17:752:35 | call_trait_m1_2(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:752:33:752:34 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:752:33:752:34 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:753:18:753:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:753:18:753:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:753:18:753:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:753:18:753:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:753:26:753:26 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:754:13:754:13 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:754:17:754:35 | call_trait_m1_3(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:754:33:754:34 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:754:33:754:34 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:755:18:755:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:755:18:755:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:755:18:755:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:755:18:755:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:755:26:755:26 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:756:13:756:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:756:17:756:38 | call_trait_assoc_1(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:756:36:756:37 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:756:36:756:37 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:757:18:757:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:757:18:757:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:757:18:757:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:757:18:757:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:757:26:757:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:758:13:758:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:758:17:758:38 | call_trait_assoc_2(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:758:36:758:37 | x2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:758:36:758:37 | x2 | T | main.rs:661:5:662:14 | S1 | -| main.rs:759:18:759:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:759:18:759:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:759:18:759:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:759:18:759:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:759:26:759:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:760:13:760:13 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:760:17:760:38 | call_trait_assoc_1(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:760:36:760:37 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:760:36:760:37 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:761:18:761:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:761:18:761:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:761:18:761:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:761:18:761:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:761:26:761:26 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:762:13:762:13 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:762:17:762:38 | call_trait_assoc_2(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:762:36:762:37 | y2 | | main.rs:656:5:659:5 | MyThing | -| main.rs:762:36:762:37 | y2 | T | main.rs:663:5:664:14 | S2 | -| main.rs:763:18:763:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:763:18:763:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:763:18:763:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:763:18:763:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:763:26:763:26 | a | | main.rs:663:5:664:14 | S2 | -| main.rs:765:13:765:14 | x3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:765:13:765:14 | x3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:765:13:765:14 | x3 | T.T | main.rs:661:5:662:14 | S1 | -| main.rs:765:18:767:9 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:765:18:767:9 | MyThing {...} | T | main.rs:656:5:659:5 | MyThing | -| main.rs:765:18:767:9 | MyThing {...} | T.T | main.rs:661:5:662:14 | S1 | -| main.rs:766:16:766:32 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:766:16:766:32 | MyThing {...} | T | main.rs:661:5:662:14 | S1 | -| main.rs:766:29:766:30 | S1 | | main.rs:661:5:662:14 | S1 | -| main.rs:768:13:768:14 | y3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:768:13:768:14 | y3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:768:13:768:14 | y3 | T.T | main.rs:663:5:664:14 | S2 | -| main.rs:768:18:770:9 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:768:18:770:9 | MyThing {...} | T | main.rs:656:5:659:5 | MyThing | -| main.rs:768:18:770:9 | MyThing {...} | T.T | main.rs:663:5:664:14 | S2 | -| main.rs:769:16:769:32 | MyThing {...} | | main.rs:656:5:659:5 | MyThing | -| main.rs:769:16:769:32 | MyThing {...} | T | main.rs:663:5:664:14 | S2 | -| main.rs:769:29:769:30 | S2 | | main.rs:663:5:664:14 | S2 | -| main.rs:772:13:772:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:772:17:772:39 | call_trait_thing_m1(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:772:37:772:38 | x3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:772:37:772:38 | x3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:772:37:772:38 | x3 | T.T | main.rs:661:5:662:14 | S1 | -| main.rs:773:18:773:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:773:18:773:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:773:18:773:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:773:18:773:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:773:26:773:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:774:13:774:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:774:17:774:41 | call_trait_thing_m1_2(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:774:39:774:40 | x3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:774:39:774:40 | x3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:774:39:774:40 | x3 | T.T | main.rs:661:5:662:14 | S1 | -| main.rs:775:18:775:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:775:18:775:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:775:18:775:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:775:18:775:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:775:26:775:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:776:13:776:13 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:776:17:776:41 | call_trait_thing_m1_3(...) | | main.rs:661:5:662:14 | S1 | -| main.rs:776:39:776:40 | x3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:776:39:776:40 | x3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:776:39:776:40 | x3 | T.T | main.rs:661:5:662:14 | S1 | +| main.rs:660:18:660:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:660:18:660:22 | SelfParam | &T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:663:40:663:44 | thing | | file://:0:0:0:0 | & | +| main.rs:663:40:663:44 | thing | &T | main.rs:663:17:663:37 | T | +| main.rs:663:56:665:5 | { ... } | | main.rs:663:14:663:14 | A | +| main.rs:664:9:664:13 | thing | | file://:0:0:0:0 | & | +| main.rs:664:9:664:13 | thing | &T | main.rs:663:17:663:37 | T | +| main.rs:664:9:664:21 | thing.get_a() | | main.rs:663:14:663:14 | A | +| main.rs:668:44:668:48 | thing | | main.rs:668:24:668:41 | S | +| main.rs:668:61:671:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:669:13:669:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:669:13:669:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:669:19:669:23 | thing | | main.rs:668:24:668:41 | S | +| main.rs:669:19:669:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | +| main.rs:669:19:669:31 | thing.get_a() | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:676:55:676:59 | thing | | file://:0:0:0:0 | & | +| main.rs:676:55:676:59 | thing | &T | main.rs:676:25:676:52 | S | +| main.rs:678:13:678:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:678:13:678:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:678:19:678:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:678:19:678:30 | get_a(...) | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:678:25:678:29 | thing | | file://:0:0:0:0 | & | +| main.rs:678:25:678:29 | thing | &T | main.rs:676:25:676:52 | S | +| main.rs:687:18:687:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:687:18:687:22 | SelfParam | &T | main.rs:681:5:683:5 | MyStruct | +| main.rs:687:41:689:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:687:41:689:9 | { ... } | T | main.rs:681:5:683:5 | MyStruct | +| main.rs:688:13:688:48 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:688:13:688:48 | Some(...) | T | main.rs:681:5:683:5 | MyStruct | +| main.rs:688:18:688:47 | MyStruct {...} | | main.rs:681:5:683:5 | MyStruct | +| main.rs:688:36:688:39 | self | | file://:0:0:0:0 | & | +| main.rs:688:36:688:39 | self | &T | main.rs:681:5:683:5 | MyStruct | +| main.rs:688:36:688:45 | self.value | | {EXTERNAL LOCATION} | i32 | +| main.rs:695:13:695:13 | s | | main.rs:681:5:683:5 | MyStruct | +| main.rs:695:17:695:37 | MyStruct {...} | | main.rs:681:5:683:5 | MyStruct | +| main.rs:695:35:695:35 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:696:13:696:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:696:13:696:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:696:19:696:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:696:19:696:27 | get_a(...) | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:696:25:696:26 | &s | | file://:0:0:0:0 | & | +| main.rs:696:25:696:26 | &s | &T | main.rs:681:5:683:5 | MyStruct | +| main.rs:696:26:696:26 | s | | main.rs:681:5:683:5 | MyStruct | +| main.rs:712:15:712:18 | SelfParam | | main.rs:711:5:722:5 | Self [trait MyTrait] | +| main.rs:714:15:714:18 | SelfParam | | main.rs:711:5:722:5 | Self [trait MyTrait] | +| main.rs:717:9:719:9 | { ... } | | main.rs:711:19:711:19 | A | +| main.rs:718:13:718:16 | self | | main.rs:711:5:722:5 | Self [trait MyTrait] | +| main.rs:718:13:718:21 | self.m1() | | main.rs:711:19:711:19 | A | +| main.rs:721:18:721:18 | x | | main.rs:711:5:722:5 | Self [trait MyTrait] | +| main.rs:726:50:726:50 | x | | main.rs:726:26:726:47 | T2 | +| main.rs:726:63:729:5 | { ... } | | main.rs:726:22:726:23 | T1 | +| main.rs:727:9:727:9 | x | | main.rs:726:26:726:47 | T2 | +| main.rs:727:9:727:14 | x.m1() | | main.rs:726:22:726:23 | T1 | +| main.rs:728:9:728:9 | x | | main.rs:726:26:726:47 | T2 | +| main.rs:728:9:728:14 | x.m1() | | main.rs:726:22:726:23 | T1 | +| main.rs:730:52:730:52 | x | | main.rs:730:28:730:49 | T2 | +| main.rs:730:65:734:5 | { ... } | | main.rs:730:24:730:25 | T1 | +| main.rs:731:13:731:13 | y | | main.rs:730:24:730:25 | T1 | +| main.rs:731:17:731:25 | ...::m1(...) | | main.rs:730:24:730:25 | T1 | +| main.rs:731:24:731:24 | x | | main.rs:730:28:730:49 | T2 | +| main.rs:732:9:732:9 | y | | main.rs:730:24:730:25 | T1 | +| main.rs:733:9:733:17 | ...::m1(...) | | main.rs:730:24:730:25 | T1 | +| main.rs:733:16:733:16 | x | | main.rs:730:28:730:49 | T2 | +| main.rs:735:52:735:52 | x | | main.rs:735:28:735:49 | T2 | +| main.rs:735:65:739:5 | { ... } | | main.rs:735:24:735:25 | T1 | +| main.rs:736:13:736:13 | y | | main.rs:735:24:735:25 | T1 | +| main.rs:736:17:736:30 | ...::m1(...) | | main.rs:735:24:735:25 | T1 | +| main.rs:736:29:736:29 | x | | main.rs:735:28:735:49 | T2 | +| main.rs:737:9:737:9 | y | | main.rs:735:24:735:25 | T1 | +| main.rs:738:9:738:22 | ...::m1(...) | | main.rs:735:24:735:25 | T1 | +| main.rs:738:21:738:21 | x | | main.rs:735:28:735:49 | T2 | +| main.rs:740:55:740:55 | x | | main.rs:740:31:740:52 | T2 | +| main.rs:740:68:744:5 | { ... } | | main.rs:740:27:740:28 | T1 | +| main.rs:741:13:741:13 | y | | main.rs:740:27:740:28 | T1 | +| main.rs:741:17:741:28 | ...::assoc(...) | | main.rs:740:27:740:28 | T1 | +| main.rs:741:27:741:27 | x | | main.rs:740:31:740:52 | T2 | +| main.rs:742:9:742:9 | y | | main.rs:740:27:740:28 | T1 | +| main.rs:743:9:743:20 | ...::assoc(...) | | main.rs:740:27:740:28 | T1 | +| main.rs:743:19:743:19 | x | | main.rs:740:31:740:52 | T2 | +| main.rs:745:55:745:55 | x | | main.rs:745:31:745:52 | T2 | +| main.rs:745:68:749:5 | { ... } | | main.rs:745:27:745:28 | T1 | +| main.rs:746:13:746:13 | y | | main.rs:745:27:745:28 | T1 | +| main.rs:746:17:746:33 | ...::assoc(...) | | main.rs:745:27:745:28 | T1 | +| main.rs:746:32:746:32 | x | | main.rs:745:31:745:52 | T2 | +| main.rs:747:9:747:9 | y | | main.rs:745:27:745:28 | T1 | +| main.rs:748:9:748:25 | ...::assoc(...) | | main.rs:745:27:745:28 | T1 | +| main.rs:748:24:748:24 | x | | main.rs:745:31:745:52 | T2 | +| main.rs:753:49:753:49 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:753:49:753:49 | x | T | main.rs:753:32:753:46 | T2 | +| main.rs:753:71:755:5 | { ... } | | main.rs:753:28:753:29 | T1 | +| main.rs:754:9:754:9 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:754:9:754:9 | x | T | main.rs:753:32:753:46 | T2 | +| main.rs:754:9:754:11 | x.a | | main.rs:753:32:753:46 | T2 | +| main.rs:754:9:754:16 | ... .m1() | | main.rs:753:28:753:29 | T1 | +| main.rs:756:51:756:51 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:756:51:756:51 | x | T | main.rs:756:34:756:48 | T2 | +| main.rs:756:73:758:5 | { ... } | | main.rs:756:30:756:31 | T1 | +| main.rs:757:9:757:19 | ...::m1(...) | | main.rs:756:30:756:31 | T1 | +| main.rs:757:16:757:16 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:757:16:757:16 | x | T | main.rs:756:34:756:48 | T2 | +| main.rs:757:16:757:18 | x.a | | main.rs:756:34:756:48 | T2 | +| main.rs:759:51:759:51 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:759:51:759:51 | x | T | main.rs:759:34:759:48 | T2 | +| main.rs:759:73:761:5 | { ... } | | main.rs:759:30:759:31 | T1 | +| main.rs:760:9:760:24 | ...::m1(...) | | main.rs:759:30:759:31 | T1 | +| main.rs:760:21:760:21 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:760:21:760:21 | x | T | main.rs:759:34:759:48 | T2 | +| main.rs:760:21:760:23 | x.a | | main.rs:759:34:759:48 | T2 | +| main.rs:764:15:764:18 | SelfParam | | main.rs:701:5:704:5 | MyThing | +| main.rs:764:15:764:18 | SelfParam | T | main.rs:763:10:763:10 | T | +| main.rs:764:26:766:9 | { ... } | | main.rs:763:10:763:10 | T | +| main.rs:765:13:765:16 | self | | main.rs:701:5:704:5 | MyThing | +| main.rs:765:13:765:16 | self | T | main.rs:763:10:763:10 | T | +| main.rs:765:13:765:18 | self.a | | main.rs:763:10:763:10 | T | +| main.rs:768:18:768:18 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:768:18:768:18 | x | T | main.rs:763:10:763:10 | T | +| main.rs:768:32:770:9 | { ... } | | main.rs:763:10:763:10 | T | +| main.rs:769:13:769:13 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:769:13:769:13 | x | T | main.rs:763:10:763:10 | T | +| main.rs:769:13:769:15 | x.a | | main.rs:763:10:763:10 | T | +| main.rs:774:13:774:13 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:774:13:774:13 | x | T | main.rs:706:5:707:14 | S1 | +| main.rs:774:17:774:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:774:17:774:33 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | +| main.rs:774:30:774:31 | S1 | | main.rs:706:5:707:14 | S1 | +| main.rs:775:13:775:13 | y | | main.rs:701:5:704:5 | MyThing | +| main.rs:775:13:775:13 | y | T | main.rs:708:5:709:14 | S2 | +| main.rs:775:17:775:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:775:17:775:33 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | +| main.rs:775:30:775:31 | S2 | | main.rs:708:5:709:14 | S2 | | main.rs:777:18:777:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:777:18:777:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:777:18:777:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:777:18:777:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:777:26:777:26 | a | | main.rs:661:5:662:14 | S1 | -| main.rs:778:13:778:13 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:778:17:778:39 | call_trait_thing_m1(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:778:37:778:38 | y3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:778:37:778:38 | y3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:778:37:778:38 | y3 | T.T | main.rs:663:5:664:14 | S2 | -| main.rs:779:18:779:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:779:18:779:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:779:18:779:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:779:18:779:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:779:26:779:26 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:780:13:780:13 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:780:17:780:41 | call_trait_thing_m1_2(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:780:39:780:40 | y3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:780:39:780:40 | y3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:780:39:780:40 | y3 | T.T | main.rs:663:5:664:14 | S2 | -| main.rs:781:18:781:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:781:18:781:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:781:18:781:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:781:18:781:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:781:26:781:26 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:782:13:782:13 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:782:17:782:41 | call_trait_thing_m1_3(...) | | main.rs:663:5:664:14 | S2 | -| main.rs:782:39:782:40 | y3 | | main.rs:656:5:659:5 | MyThing | -| main.rs:782:39:782:40 | y3 | T | main.rs:656:5:659:5 | MyThing | -| main.rs:782:39:782:40 | y3 | T.T | main.rs:663:5:664:14 | S2 | +| main.rs:777:18:777:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:777:18:777:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:777:26:777:26 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:777:26:777:26 | x | T | main.rs:706:5:707:14 | S1 | +| main.rs:777:26:777:31 | x.m1() | | main.rs:706:5:707:14 | S1 | +| main.rs:778:18:778:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:778:18:778:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:778:18:778:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:778:18:778:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:778:26:778:26 | y | | main.rs:701:5:704:5 | MyThing | +| main.rs:778:26:778:26 | y | T | main.rs:708:5:709:14 | S2 | +| main.rs:778:26:778:31 | y.m1() | | main.rs:708:5:709:14 | S2 | +| main.rs:780:13:780:13 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:780:13:780:13 | x | T | main.rs:706:5:707:14 | S1 | +| main.rs:780:17:780:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:780:17:780:33 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | +| main.rs:780:30:780:31 | S1 | | main.rs:706:5:707:14 | S1 | +| main.rs:781:13:781:13 | y | | main.rs:701:5:704:5 | MyThing | +| main.rs:781:13:781:13 | y | T | main.rs:708:5:709:14 | S2 | +| main.rs:781:17:781:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:781:17:781:33 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | +| main.rs:781:30:781:31 | S2 | | main.rs:708:5:709:14 | S2 | | main.rs:783:18:783:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:783:18:783:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:783:18:783:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:783:18:783:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:783:26:783:26 | b | | main.rs:663:5:664:14 | S2 | -| main.rs:794:19:794:22 | SelfParam | | main.rs:788:5:791:5 | Wrapper | -| main.rs:794:19:794:22 | SelfParam | A | main.rs:793:10:793:10 | A | -| main.rs:794:30:796:9 | { ... } | | main.rs:793:10:793:10 | A | -| main.rs:795:13:795:16 | self | | main.rs:788:5:791:5 | Wrapper | -| main.rs:795:13:795:16 | self | A | main.rs:793:10:793:10 | A | -| main.rs:795:13:795:22 | self.field | | main.rs:793:10:793:10 | A | -| main.rs:803:15:803:18 | SelfParam | | main.rs:799:5:813:5 | Self [trait MyTrait] | -| main.rs:805:15:805:18 | SelfParam | | main.rs:799:5:813:5 | Self [trait MyTrait] | -| main.rs:809:9:812:9 | { ... } | | main.rs:800:9:800:28 | AssociatedType | -| main.rs:810:13:810:16 | self | | main.rs:799:5:813:5 | Self [trait MyTrait] | -| main.rs:810:13:810:21 | self.m1() | | main.rs:800:9:800:28 | AssociatedType | -| main.rs:811:13:811:43 | ...::default(...) | | main.rs:800:9:800:28 | AssociatedType | -| main.rs:819:19:819:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:819:19:819:23 | SelfParam | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | -| main.rs:819:26:819:26 | a | | main.rs:819:16:819:16 | A | -| main.rs:821:22:821:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:821:22:821:26 | SelfParam | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | -| main.rs:821:29:821:29 | a | | main.rs:821:19:821:19 | A | -| main.rs:821:35:821:35 | b | | main.rs:821:19:821:19 | A | -| main.rs:821:75:824:9 | { ... } | | main.rs:816:9:816:52 | GenericAssociatedType | -| main.rs:822:13:822:16 | self | | file://:0:0:0:0 | & | -| main.rs:822:13:822:16 | self | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | -| main.rs:822:13:822:23 | self.put(...) | | main.rs:816:9:816:52 | GenericAssociatedType | -| main.rs:822:22:822:22 | a | | main.rs:821:19:821:19 | A | -| main.rs:823:13:823:16 | self | | file://:0:0:0:0 | & | -| main.rs:823:13:823:16 | self | &T | main.rs:815:5:825:5 | Self [trait MyTraitAssoc2] | -| main.rs:823:13:823:23 | self.put(...) | | main.rs:816:9:816:52 | GenericAssociatedType | -| main.rs:823:22:823:22 | b | | main.rs:821:19:821:19 | A | -| main.rs:832:21:832:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:832:21:832:25 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | -| main.rs:834:20:834:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:834:20:834:24 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | -| main.rs:836:20:836:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:836:20:836:24 | SelfParam | &T | main.rs:827:5:837:5 | Self [trait TraitMultipleAssoc] | -| main.rs:852:15:852:18 | SelfParam | | main.rs:839:5:840:13 | S | -| main.rs:852:45:854:9 | { ... } | | main.rs:845:5:846:14 | AT | -| main.rs:853:13:853:14 | AT | | main.rs:845:5:846:14 | AT | -| main.rs:862:19:862:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:862:19:862:23 | SelfParam | &T | main.rs:839:5:840:13 | S | -| main.rs:862:26:862:26 | a | | main.rs:862:16:862:16 | A | -| main.rs:862:46:864:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | -| main.rs:862:46:864:9 | { ... } | A | main.rs:862:16:862:16 | A | -| main.rs:863:13:863:32 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | -| main.rs:863:13:863:32 | Wrapper {...} | A | main.rs:862:16:862:16 | A | -| main.rs:863:30:863:30 | a | | main.rs:862:16:862:16 | A | -| main.rs:871:15:871:18 | SelfParam | | main.rs:842:5:843:14 | S2 | -| main.rs:871:45:873:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | -| main.rs:871:45:873:9 | { ... } | A | main.rs:842:5:843:14 | S2 | -| main.rs:872:13:872:35 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | -| main.rs:872:13:872:35 | Wrapper {...} | A | main.rs:842:5:843:14 | S2 | -| main.rs:872:30:872:33 | self | | main.rs:842:5:843:14 | S2 | -| main.rs:878:30:880:9 | { ... } | | main.rs:788:5:791:5 | Wrapper | -| main.rs:878:30:880:9 | { ... } | A | main.rs:842:5:843:14 | S2 | -| main.rs:879:13:879:33 | Wrapper {...} | | main.rs:788:5:791:5 | Wrapper | -| main.rs:879:13:879:33 | Wrapper {...} | A | main.rs:842:5:843:14 | S2 | -| main.rs:879:30:879:31 | S2 | | main.rs:842:5:843:14 | S2 | -| main.rs:885:22:885:26 | thing | | main.rs:885:10:885:19 | T | -| main.rs:886:9:886:13 | thing | | main.rs:885:10:885:19 | T | -| main.rs:893:21:893:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:893:21:893:25 | SelfParam | &T | main.rs:845:5:846:14 | AT | -| main.rs:893:34:895:9 | { ... } | | main.rs:845:5:846:14 | AT | -| main.rs:894:13:894:14 | AT | | main.rs:845:5:846:14 | AT | -| main.rs:897:20:897:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:897:20:897:24 | SelfParam | &T | main.rs:845:5:846:14 | AT | -| main.rs:897:43:899:9 | { ... } | | main.rs:839:5:840:13 | S | -| main.rs:898:13:898:13 | S | | main.rs:839:5:840:13 | S | -| main.rs:901:20:901:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:901:20:901:24 | SelfParam | &T | main.rs:845:5:846:14 | AT | -| main.rs:901:43:903:9 | { ... } | | main.rs:842:5:843:14 | S2 | -| main.rs:902:13:902:14 | S2 | | main.rs:842:5:843:14 | S2 | -| main.rs:907:13:907:14 | x1 | | main.rs:839:5:840:13 | S | -| main.rs:907:18:907:18 | S | | main.rs:839:5:840:13 | S | -| main.rs:909:18:909:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:909:18:909:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:909:18:909:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:909:18:909:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:909:26:909:27 | x1 | | main.rs:839:5:840:13 | S | -| main.rs:909:26:909:32 | x1.m1() | | main.rs:845:5:846:14 | AT | -| main.rs:911:13:911:14 | x2 | | main.rs:839:5:840:13 | S | -| main.rs:911:18:911:18 | S | | main.rs:839:5:840:13 | S | -| main.rs:913:13:913:13 | y | | main.rs:845:5:846:14 | AT | -| main.rs:913:17:913:18 | x2 | | main.rs:839:5:840:13 | S | -| main.rs:913:17:913:23 | x2.m2() | | main.rs:845:5:846:14 | AT | -| main.rs:914:18:914:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:914:18:914:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:914:18:914:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:914:18:914:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:914:26:914:26 | y | | main.rs:845:5:846:14 | AT | -| main.rs:916:13:916:14 | x3 | | main.rs:839:5:840:13 | S | -| main.rs:916:18:916:18 | S | | main.rs:839:5:840:13 | S | -| main.rs:918:18:918:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:918:18:918:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:918:18:918:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:918:18:918:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:918:26:918:27 | x3 | | main.rs:839:5:840:13 | S | -| main.rs:918:26:918:34 | x3.put(...) | | main.rs:788:5:791:5 | Wrapper | -| main.rs:918:26:918:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:918:26:918:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:918:33:918:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:921:18:921:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:921:18:921:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:921:18:921:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:921:18:921:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:921:26:921:27 | x3 | | main.rs:839:5:840:13 | S | -| main.rs:921:26:921:40 | x3.putTwo(...) | | main.rs:788:5:791:5 | Wrapper | -| main.rs:921:26:921:40 | x3.putTwo(...) | A | main.rs:859:36:859:50 | AssociatedParam | -| main.rs:921:26:921:49 | ... .unwrap() | | main.rs:859:36:859:50 | AssociatedParam | -| main.rs:921:36:921:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:921:39:921:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:923:20:923:20 | S | | main.rs:839:5:840:13 | S | -| main.rs:924:18:924:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:924:18:924:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:924:18:924:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:924:18:924:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:926:13:926:14 | x5 | | main.rs:842:5:843:14 | S2 | -| main.rs:926:18:926:19 | S2 | | main.rs:842:5:843:14 | S2 | -| main.rs:927:18:927:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:927:18:927:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:927:18:927:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:927:18:927:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:927:26:927:27 | x5 | | main.rs:842:5:843:14 | S2 | -| main.rs:927:26:927:32 | x5.m1() | | main.rs:788:5:791:5 | Wrapper | -| main.rs:927:26:927:32 | x5.m1() | A | main.rs:842:5:843:14 | S2 | -| main.rs:928:13:928:14 | x6 | | main.rs:842:5:843:14 | S2 | -| main.rs:928:18:928:19 | S2 | | main.rs:842:5:843:14 | S2 | -| main.rs:929:18:929:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:929:18:929:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:929:18:929:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:929:18:929:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:929:26:929:27 | x6 | | main.rs:842:5:843:14 | S2 | -| main.rs:929:26:929:32 | x6.m2() | | main.rs:788:5:791:5 | Wrapper | -| main.rs:929:26:929:32 | x6.m2() | A | main.rs:842:5:843:14 | S2 | -| main.rs:931:13:931:22 | assoc_zero | | main.rs:845:5:846:14 | AT | -| main.rs:931:26:931:27 | AT | | main.rs:845:5:846:14 | AT | -| main.rs:931:26:931:38 | AT.get_zero() | | main.rs:845:5:846:14 | AT | -| main.rs:932:13:932:21 | assoc_one | | main.rs:839:5:840:13 | S | -| main.rs:932:25:932:26 | AT | | main.rs:845:5:846:14 | AT | -| main.rs:932:25:932:36 | AT.get_one() | | main.rs:839:5:840:13 | S | -| main.rs:933:13:933:21 | assoc_two | | main.rs:842:5:843:14 | S2 | -| main.rs:933:25:933:26 | AT | | main.rs:845:5:846:14 | AT | -| main.rs:933:25:933:36 | AT.get_two() | | main.rs:842:5:843:14 | S2 | -| main.rs:941:19:941:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:941:19:941:23 | SelfParam | &T | main.rs:938:5:942:5 | Self [trait Supertrait] | -| main.rs:941:26:941:32 | content | | main.rs:939:9:939:21 | Content | -| main.rs:946:24:946:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:946:24:946:28 | SelfParam | &T | main.rs:944:5:947:5 | Self [trait Subtrait] | -| main.rs:955:23:955:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:955:23:955:27 | SelfParam | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | -| main.rs:955:30:955:31 | c1 | | main.rs:939:9:939:21 | Content | -| main.rs:955:49:955:50 | c2 | | main.rs:939:9:939:21 | Content | -| main.rs:956:13:956:16 | self | | file://:0:0:0:0 | & | -| main.rs:956:13:956:16 | self | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | -| main.rs:956:25:956:26 | c1 | | main.rs:939:9:939:21 | Content | -| main.rs:957:13:957:16 | self | | file://:0:0:0:0 | & | -| main.rs:957:13:957:16 | self | &T | main.rs:949:5:959:5 | Self [trait Subtrait2] | -| main.rs:957:25:957:26 | c2 | | main.rs:939:9:939:21 | Content | -| main.rs:965:19:965:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:965:19:965:23 | SelfParam | &T | main.rs:961:5:961:24 | MyType | -| main.rs:965:19:965:23 | SelfParam | &T.T | main.rs:963:10:963:10 | T | -| main.rs:965:26:965:33 | _content | | main.rs:963:10:963:10 | T | -| main.rs:966:22:966:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:966:22:966:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:966:22:966:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:966:22:966:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:972:24:972:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:972:24:972:28 | SelfParam | &T | main.rs:961:5:961:24 | MyType | -| main.rs:972:24:972:28 | SelfParam | &T.T | main.rs:970:10:970:17 | T | -| main.rs:972:48:974:9 | { ... } | | main.rs:970:10:970:17 | T | -| main.rs:973:13:973:19 | (...) | | main.rs:961:5:961:24 | MyType | -| main.rs:973:13:973:19 | (...) | T | main.rs:970:10:970:17 | T | -| main.rs:973:13:973:21 | ... .0 | | main.rs:970:10:970:17 | T | -| main.rs:973:13:973:29 | ... .clone() | | main.rs:970:10:970:17 | T | -| main.rs:973:14:973:18 | * ... | | main.rs:961:5:961:24 | MyType | -| main.rs:973:14:973:18 | * ... | T | main.rs:970:10:970:17 | T | -| main.rs:973:15:973:18 | self | | file://:0:0:0:0 | & | -| main.rs:973:15:973:18 | self | &T | main.rs:961:5:961:24 | MyType | -| main.rs:973:15:973:18 | self | &T.T | main.rs:970:10:970:17 | T | -| main.rs:977:33:977:36 | item | | file://:0:0:0:0 | & | -| main.rs:977:33:977:36 | item | &T | main.rs:977:20:977:30 | T | -| main.rs:977:57:979:5 | { ... } | | main.rs:939:9:939:21 | Content | -| main.rs:978:9:978:12 | item | | file://:0:0:0:0 | & | -| main.rs:978:9:978:12 | item | &T | main.rs:977:20:977:30 | T | -| main.rs:978:9:978:26 | item.get_content() | | main.rs:939:9:939:21 | Content | -| main.rs:981:35:981:38 | item | | file://:0:0:0:0 | & | -| main.rs:981:35:981:38 | item | &T | main.rs:981:21:981:32 | T | -| main.rs:981:45:981:46 | c1 | | main.rs:939:9:939:21 | Content | -| main.rs:981:61:981:62 | c2 | | main.rs:939:9:939:21 | Content | -| main.rs:981:77:981:78 | c3 | | main.rs:939:9:939:21 | Content | -| main.rs:982:9:982:12 | item | | file://:0:0:0:0 | & | -| main.rs:982:9:982:12 | item | &T | main.rs:981:21:981:32 | T | -| main.rs:982:21:982:22 | c1 | | main.rs:939:9:939:21 | Content | -| main.rs:983:9:983:12 | item | | file://:0:0:0:0 | & | -| main.rs:983:9:983:12 | item | &T | main.rs:981:21:981:32 | T | -| main.rs:983:25:983:26 | c2 | | main.rs:939:9:939:21 | Content | -| main.rs:983:29:983:30 | c3 | | main.rs:939:9:939:21 | Content | -| main.rs:987:13:987:17 | item1 | | main.rs:961:5:961:24 | MyType | -| main.rs:987:13:987:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:987:21:987:33 | MyType(...) | | main.rs:961:5:961:24 | MyType | -| main.rs:987:21:987:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:987:28:987:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:988:25:988:29 | item1 | | main.rs:961:5:961:24 | MyType | -| main.rs:988:25:988:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:990:13:990:17 | item2 | | main.rs:961:5:961:24 | MyType | -| main.rs:990:13:990:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:990:21:990:32 | MyType(...) | | main.rs:961:5:961:24 | MyType | -| main.rs:990:21:990:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:990:28:990:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:991:37:991:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:991:37:991:42 | &item2 | &T | main.rs:961:5:961:24 | MyType | -| main.rs:991:37:991:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:991:38:991:42 | item2 | | main.rs:961:5:961:24 | MyType | -| main.rs:991:38:991:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1008:15:1008:18 | SelfParam | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1008:15:1008:18 | SelfParam | A | main.rs:1007:10:1007:10 | T | -| main.rs:1008:26:1013:9 | { ... } | | main.rs:1007:10:1007:10 | T | -| main.rs:1009:13:1012:13 | match self { ... } | | main.rs:1007:10:1007:10 | T | -| main.rs:1009:19:1009:22 | self | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1009:19:1009:22 | self | A | main.rs:1007:10:1007:10 | T | -| main.rs:1010:17:1010:29 | ...::C1(...) | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1010:17:1010:29 | ...::C1(...) | A | main.rs:1007:10:1007:10 | T | -| main.rs:1010:28:1010:28 | a | | main.rs:1007:10:1007:10 | T | -| main.rs:1010:34:1010:34 | a | | main.rs:1007:10:1007:10 | T | -| main.rs:1011:17:1011:32 | ...::C2 {...} | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1011:17:1011:32 | ...::C2 {...} | A | main.rs:1007:10:1007:10 | T | -| main.rs:1011:30:1011:30 | a | | main.rs:1007:10:1007:10 | T | -| main.rs:1011:37:1011:37 | a | | main.rs:1007:10:1007:10 | T | -| main.rs:1017:13:1017:13 | x | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1017:13:1017:13 | x | A | main.rs:1002:5:1003:14 | S1 | -| main.rs:1017:17:1017:30 | ...::C1(...) | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1017:17:1017:30 | ...::C1(...) | A | main.rs:1002:5:1003:14 | S1 | -| main.rs:1017:28:1017:29 | S1 | | main.rs:1002:5:1003:14 | S1 | -| main.rs:1018:13:1018:13 | y | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1018:13:1018:13 | y | A | main.rs:1004:5:1005:14 | S2 | -| main.rs:1018:17:1018:36 | ...::C2 {...} | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1018:17:1018:36 | ...::C2 {...} | A | main.rs:1004:5:1005:14 | S2 | -| main.rs:1018:33:1018:34 | S2 | | main.rs:1004:5:1005:14 | S2 | -| main.rs:1020:18:1020:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1020:18:1020:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1020:18:1020:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1020:18:1020:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1020:26:1020:26 | x | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1020:26:1020:26 | x | A | main.rs:1002:5:1003:14 | S1 | -| main.rs:1020:26:1020:31 | x.m1() | | main.rs:1002:5:1003:14 | S1 | -| main.rs:1021:18:1021:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1021:18:1021:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1021:18:1021:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1021:18:1021:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1021:26:1021:26 | y | | main.rs:996:5:1000:5 | MyEnum | -| main.rs:1021:26:1021:26 | y | A | main.rs:1004:5:1005:14 | S2 | -| main.rs:1021:26:1021:31 | y.m1() | | main.rs:1004:5:1005:14 | S2 | -| main.rs:1043:15:1043:18 | SelfParam | | main.rs:1041:5:1044:5 | Self [trait MyTrait1] | -| main.rs:1048:15:1048:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1048:15:1048:19 | SelfParam | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | -| main.rs:1051:9:1057:9 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1052:13:1056:13 | if ... {...} else {...} | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1052:16:1052:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1052:16:1052:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1052:20:1052:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1052:22:1054:13 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1053:17:1053:20 | self | | file://:0:0:0:0 | & | -| main.rs:1053:17:1053:20 | self | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | -| main.rs:1053:17:1053:25 | self.m1() | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1054:20:1056:13 | { ... } | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1055:17:1055:31 | ...::m1(...) | | main.rs:1046:20:1046:22 | Tr2 | -| main.rs:1055:26:1055:30 | * ... | | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | -| main.rs:1055:27:1055:30 | self | | file://:0:0:0:0 | & | -| main.rs:1055:27:1055:30 | self | &T | main.rs:1046:5:1058:5 | Self [trait MyTrait2] | -| main.rs:1062:15:1062:18 | SelfParam | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | -| main.rs:1065:9:1071:9 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1066:13:1070:13 | if ... {...} else {...} | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1066:16:1066:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1066:16:1066:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1066:20:1066:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1066:22:1068:13 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1067:17:1067:20 | self | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | -| main.rs:1067:17:1067:25 | self.m2() | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1067:17:1067:25 | self.m2() | A | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1067:17:1067:27 | ... .a | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1068:20:1070:13 | { ... } | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1069:17:1069:31 | ...::m2(...) | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1069:17:1069:31 | ...::m2(...) | A | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1069:17:1069:33 | ... .a | | main.rs:1060:20:1060:22 | Tr3 | -| main.rs:1069:26:1069:30 | &self | | file://:0:0:0:0 | & | -| main.rs:1069:26:1069:30 | &self | &T | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | -| main.rs:1069:27:1069:30 | self | | main.rs:1060:5:1072:5 | Self [trait MyTrait3] | -| main.rs:1076:15:1076:18 | SelfParam | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1076:15:1076:18 | SelfParam | A | main.rs:1074:10:1074:10 | T | -| main.rs:1076:26:1078:9 | { ... } | | main.rs:1074:10:1074:10 | T | -| main.rs:1077:13:1077:16 | self | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1077:13:1077:16 | self | A | main.rs:1074:10:1074:10 | T | -| main.rs:1077:13:1077:18 | self.a | | main.rs:1074:10:1074:10 | T | -| main.rs:1085:15:1085:18 | SelfParam | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1085:15:1085:18 | SelfParam | A | main.rs:1083:10:1083:10 | T | -| main.rs:1085:35:1087:9 | { ... } | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1085:35:1087:9 | { ... } | A | main.rs:1083:10:1083:10 | T | -| main.rs:1086:13:1086:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1086:13:1086:33 | MyThing {...} | A | main.rs:1083:10:1083:10 | T | -| main.rs:1086:26:1086:29 | self | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1086:26:1086:29 | self | A | main.rs:1083:10:1083:10 | T | -| main.rs:1086:26:1086:31 | self.a | | main.rs:1083:10:1083:10 | T | -| main.rs:1094:44:1094:44 | x | | main.rs:1094:26:1094:41 | T2 | -| main.rs:1094:57:1096:5 | { ... } | | main.rs:1094:22:1094:23 | T1 | -| main.rs:1095:9:1095:9 | x | | main.rs:1094:26:1094:41 | T2 | -| main.rs:1095:9:1095:14 | x.m1() | | main.rs:1094:22:1094:23 | T1 | -| main.rs:1098:56:1098:56 | x | | main.rs:1098:39:1098:53 | T | -| main.rs:1100:13:1100:13 | a | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1100:13:1100:13 | a | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1100:17:1100:17 | x | | main.rs:1098:39:1098:53 | T | -| main.rs:1100:17:1100:22 | x.m1() | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1100:17:1100:22 | x.m1() | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1101:18:1101:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1101:18:1101:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1101:18:1101:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1101:18:1101:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1101:26:1101:26 | a | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1101:26:1101:26 | a | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1105:13:1105:13 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1105:13:1105:13 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1105:17:1105:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1105:17:1105:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1105:30:1105:31 | S1 | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1106:13:1106:13 | y | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1106:13:1106:13 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1106:17:1106:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1106:17:1106:33 | MyThing {...} | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1106:30:1106:31 | S2 | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1108:18:1108:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1108:18:1108:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1108:18:1108:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1108:18:1108:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1108:26:1108:26 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1108:26:1108:26 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1108:26:1108:31 | x.m1() | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1109:18:1109:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1109:18:1109:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1109:18:1109:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1109:18:1109:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1109:26:1109:26 | y | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1109:26:1109:26 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1109:26:1109:31 | y.m1() | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1111:13:1111:13 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1111:13:1111:13 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1111:17:1111:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1111:17:1111:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1111:30:1111:31 | S1 | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1112:13:1112:13 | y | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1112:13:1112:13 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1112:17:1112:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1112:17:1112:33 | MyThing {...} | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1112:30:1112:31 | S2 | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1114:18:1114:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1114:18:1114:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1114:18:1114:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1114:18:1114:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1114:26:1114:26 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1114:26:1114:26 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1114:26:1114:31 | x.m2() | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1115:18:1115:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1115:18:1115:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1115:18:1115:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1115:18:1115:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1115:26:1115:26 | y | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1115:26:1115:26 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1115:26:1115:31 | y.m2() | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1117:13:1117:13 | x | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1117:13:1117:13 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1117:17:1117:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1117:17:1117:34 | MyThing2 {...} | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1117:31:1117:32 | S1 | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1118:13:1118:13 | y | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1118:13:1118:13 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1118:17:1118:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1118:17:1118:34 | MyThing2 {...} | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1118:31:1118:32 | S2 | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1120:18:1120:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1120:18:1120:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1120:18:1120:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1120:18:1120:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1120:26:1120:26 | x | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1120:26:1120:26 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1120:26:1120:31 | x.m3() | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1121:18:1121:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1121:18:1121:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1121:18:1121:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1121:18:1121:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1121:26:1121:26 | y | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1121:26:1121:26 | y | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1121:26:1121:31 | y.m3() | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1123:13:1123:13 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1123:13:1123:13 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1123:17:1123:33 | MyThing {...} | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1123:17:1123:33 | MyThing {...} | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1123:30:1123:31 | S1 | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1124:13:1124:13 | s | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1124:17:1124:32 | call_trait_m1(...) | | main.rs:1036:5:1037:14 | S1 | -| main.rs:1124:31:1124:31 | x | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1124:31:1124:31 | x | A | main.rs:1036:5:1037:14 | S1 | -| main.rs:1126:13:1126:13 | x | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1126:13:1126:13 | x | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1126:17:1126:34 | MyThing2 {...} | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1126:17:1126:34 | MyThing2 {...} | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1126:31:1126:32 | S2 | | main.rs:1038:5:1039:14 | S2 | -| main.rs:1127:13:1127:13 | s | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1127:13:1127:13 | s | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1127:17:1127:32 | call_trait_m1(...) | | main.rs:1026:5:1029:5 | MyThing | -| main.rs:1127:17:1127:32 | call_trait_m1(...) | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1127:31:1127:31 | x | | main.rs:1031:5:1034:5 | MyThing2 | -| main.rs:1127:31:1127:31 | x | A | main.rs:1038:5:1039:14 | S2 | -| main.rs:1144:22:1144:22 | x | | file://:0:0:0:0 | & | -| main.rs:1144:22:1144:22 | x | &T | main.rs:1144:11:1144:19 | T | -| main.rs:1144:35:1146:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1144:35:1146:5 | { ... } | &T | main.rs:1144:11:1144:19 | T | -| main.rs:1145:9:1145:9 | x | | file://:0:0:0:0 | & | -| main.rs:1145:9:1145:9 | x | &T | main.rs:1144:11:1144:19 | T | -| main.rs:1149:17:1149:20 | SelfParam | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1149:29:1151:9 | { ... } | | main.rs:1137:5:1138:14 | S2 | -| main.rs:1150:13:1150:14 | S2 | | main.rs:1137:5:1138:14 | S2 | -| main.rs:1154:21:1154:21 | x | | main.rs:1154:13:1154:14 | T1 | -| main.rs:1157:5:1159:5 | { ... } | | main.rs:1154:17:1154:18 | T2 | -| main.rs:1158:9:1158:9 | x | | main.rs:1154:13:1154:14 | T1 | -| main.rs:1158:9:1158:16 | x.into() | | main.rs:1154:17:1154:18 | T2 | -| main.rs:1162:13:1162:13 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1162:17:1162:18 | S1 | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1163:18:1163:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1163:18:1163:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1163:18:1163:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1163:18:1163:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1163:26:1163:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1163:26:1163:31 | id(...) | &T | main.rs:1134:5:1135:14 | S1 | -| main.rs:1163:29:1163:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1163:29:1163:30 | &x | &T | main.rs:1134:5:1135:14 | S1 | -| main.rs:1163:30:1163:30 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1165:13:1165:13 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1165:17:1165:18 | S1 | | main.rs:1134:5:1135:14 | S1 | +| main.rs:783:18:783:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:783:18:783:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:783:26:783:26 | x | | main.rs:701:5:704:5 | MyThing | +| main.rs:783:26:783:26 | x | T | main.rs:706:5:707:14 | S1 | +| main.rs:783:26:783:31 | x.m2() | | main.rs:706:5:707:14 | S1 | +| main.rs:784:18:784:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:784:18:784:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:784:18:784:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:784:18:784:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:784:26:784:26 | y | | main.rs:701:5:704:5 | MyThing | +| main.rs:784:26:784:26 | y | T | main.rs:708:5:709:14 | S2 | +| main.rs:784:26:784:31 | y.m2() | | main.rs:708:5:709:14 | S2 | +| main.rs:786:13:786:14 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:786:13:786:14 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:786:18:786:34 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:786:18:786:34 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | +| main.rs:786:31:786:32 | S1 | | main.rs:706:5:707:14 | S1 | +| main.rs:787:13:787:14 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:787:13:787:14 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:787:18:787:34 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:787:18:787:34 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | +| main.rs:787:31:787:32 | S2 | | main.rs:708:5:709:14 | S2 | +| main.rs:789:13:789:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:789:17:789:33 | call_trait_m1(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:789:31:789:32 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:789:31:789:32 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:790:18:790:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:790:18:790:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:790:18:790:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:790:18:790:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:790:26:790:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:791:13:791:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:791:17:791:35 | call_trait_m1_2(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:791:33:791:34 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:791:33:791:34 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:792:18:792:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:792:18:792:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:792:18:792:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:792:18:792:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:792:26:792:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:793:13:793:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:793:17:793:35 | call_trait_m1_3(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:793:33:793:34 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:793:33:793:34 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:794:18:794:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:794:18:794:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:794:18:794:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:794:18:794:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:794:26:794:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:795:13:795:13 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:795:17:795:33 | call_trait_m1(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:795:31:795:32 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:795:31:795:32 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:796:18:796:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:796:18:796:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:796:18:796:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:796:18:796:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:796:26:796:26 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:797:13:797:13 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:797:17:797:35 | call_trait_m1_2(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:797:33:797:34 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:797:33:797:34 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:798:18:798:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:798:18:798:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:798:18:798:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:798:18:798:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:798:26:798:26 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:799:13:799:13 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:799:17:799:35 | call_trait_m1_3(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:799:33:799:34 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:799:33:799:34 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:800:18:800:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:800:18:800:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:800:18:800:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:800:18:800:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:800:26:800:26 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:801:13:801:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:801:17:801:38 | call_trait_assoc_1(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:801:36:801:37 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:801:36:801:37 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:802:18:802:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:802:18:802:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:802:18:802:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:802:18:802:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:802:26:802:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:803:13:803:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:803:17:803:38 | call_trait_assoc_2(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:803:36:803:37 | x2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:803:36:803:37 | x2 | T | main.rs:706:5:707:14 | S1 | +| main.rs:804:18:804:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:804:18:804:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:804:18:804:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:804:18:804:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:804:26:804:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:805:13:805:13 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:805:17:805:38 | call_trait_assoc_1(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:805:36:805:37 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:805:36:805:37 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:806:18:806:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:806:18:806:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:806:18:806:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:806:18:806:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:806:26:806:26 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:807:13:807:13 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:807:17:807:38 | call_trait_assoc_2(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:807:36:807:37 | y2 | | main.rs:701:5:704:5 | MyThing | +| main.rs:807:36:807:37 | y2 | T | main.rs:708:5:709:14 | S2 | +| main.rs:808:18:808:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:808:18:808:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:808:18:808:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:808:18:808:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:808:26:808:26 | a | | main.rs:708:5:709:14 | S2 | +| main.rs:810:13:810:14 | x3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:810:13:810:14 | x3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:810:13:810:14 | x3 | T.T | main.rs:706:5:707:14 | S1 | +| main.rs:810:18:812:9 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:810:18:812:9 | MyThing {...} | T | main.rs:701:5:704:5 | MyThing | +| main.rs:810:18:812:9 | MyThing {...} | T.T | main.rs:706:5:707:14 | S1 | +| main.rs:811:16:811:32 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:811:16:811:32 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | +| main.rs:811:29:811:30 | S1 | | main.rs:706:5:707:14 | S1 | +| main.rs:813:13:813:14 | y3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:813:13:813:14 | y3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:813:13:813:14 | y3 | T.T | main.rs:708:5:709:14 | S2 | +| main.rs:813:18:815:9 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:813:18:815:9 | MyThing {...} | T | main.rs:701:5:704:5 | MyThing | +| main.rs:813:18:815:9 | MyThing {...} | T.T | main.rs:708:5:709:14 | S2 | +| main.rs:814:16:814:32 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | +| main.rs:814:16:814:32 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | +| main.rs:814:29:814:30 | S2 | | main.rs:708:5:709:14 | S2 | +| main.rs:817:13:817:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:817:17:817:39 | call_trait_thing_m1(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:817:37:817:38 | x3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:817:37:817:38 | x3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:817:37:817:38 | x3 | T.T | main.rs:706:5:707:14 | S1 | +| main.rs:818:18:818:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:818:18:818:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:818:18:818:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:818:18:818:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:818:26:818:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:819:13:819:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:819:17:819:41 | call_trait_thing_m1_2(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:819:39:819:40 | x3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:819:39:819:40 | x3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:819:39:819:40 | x3 | T.T | main.rs:706:5:707:14 | S1 | +| main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:820:18:820:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:820:18:820:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:820:26:820:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:821:13:821:13 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:821:17:821:41 | call_trait_thing_m1_3(...) | | main.rs:706:5:707:14 | S1 | +| main.rs:821:39:821:40 | x3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:821:39:821:40 | x3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:821:39:821:40 | x3 | T.T | main.rs:706:5:707:14 | S1 | +| main.rs:822:18:822:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:822:18:822:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:822:18:822:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:822:18:822:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:822:26:822:26 | a | | main.rs:706:5:707:14 | S1 | +| main.rs:823:13:823:13 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:823:17:823:39 | call_trait_thing_m1(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:823:37:823:38 | y3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:823:37:823:38 | y3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:823:37:823:38 | y3 | T.T | main.rs:708:5:709:14 | S2 | +| main.rs:824:18:824:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:824:18:824:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:824:18:824:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:824:18:824:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:824:26:824:26 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:825:13:825:13 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:825:17:825:41 | call_trait_thing_m1_2(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:825:39:825:40 | y3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:825:39:825:40 | y3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:825:39:825:40 | y3 | T.T | main.rs:708:5:709:14 | S2 | +| main.rs:826:18:826:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:826:18:826:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:826:18:826:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:826:18:826:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:826:26:826:26 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:827:13:827:13 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:827:17:827:41 | call_trait_thing_m1_3(...) | | main.rs:708:5:709:14 | S2 | +| main.rs:827:39:827:40 | y3 | | main.rs:701:5:704:5 | MyThing | +| main.rs:827:39:827:40 | y3 | T | main.rs:701:5:704:5 | MyThing | +| main.rs:827:39:827:40 | y3 | T.T | main.rs:708:5:709:14 | S2 | +| main.rs:828:18:828:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:828:18:828:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:828:18:828:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:828:18:828:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:828:26:828:26 | b | | main.rs:708:5:709:14 | S2 | +| main.rs:839:19:839:22 | SelfParam | | main.rs:833:5:836:5 | Wrapper | +| main.rs:839:19:839:22 | SelfParam | A | main.rs:838:10:838:10 | A | +| main.rs:839:30:841:9 | { ... } | | main.rs:838:10:838:10 | A | +| main.rs:840:13:840:16 | self | | main.rs:833:5:836:5 | Wrapper | +| main.rs:840:13:840:16 | self | A | main.rs:838:10:838:10 | A | +| main.rs:840:13:840:22 | self.field | | main.rs:838:10:838:10 | A | +| main.rs:848:15:848:18 | SelfParam | | main.rs:844:5:858:5 | Self [trait MyTrait] | +| main.rs:850:15:850:18 | SelfParam | | main.rs:844:5:858:5 | Self [trait MyTrait] | +| main.rs:854:9:857:9 | { ... } | | main.rs:845:9:845:28 | AssociatedType | +| main.rs:855:13:855:16 | self | | main.rs:844:5:858:5 | Self [trait MyTrait] | +| main.rs:855:13:855:21 | self.m1() | | main.rs:845:9:845:28 | AssociatedType | +| main.rs:856:13:856:43 | ...::default(...) | | main.rs:845:9:845:28 | AssociatedType | +| main.rs:864:19:864:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:864:19:864:23 | SelfParam | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | +| main.rs:864:26:864:26 | a | | main.rs:864:16:864:16 | A | +| main.rs:866:22:866:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:866:22:866:26 | SelfParam | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | +| main.rs:866:29:866:29 | a | | main.rs:866:19:866:19 | A | +| main.rs:866:35:866:35 | b | | main.rs:866:19:866:19 | A | +| main.rs:866:75:869:9 | { ... } | | main.rs:861:9:861:52 | GenericAssociatedType | +| main.rs:867:13:867:16 | self | | file://:0:0:0:0 | & | +| main.rs:867:13:867:16 | self | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | +| main.rs:867:13:867:23 | self.put(...) | | main.rs:861:9:861:52 | GenericAssociatedType | +| main.rs:867:22:867:22 | a | | main.rs:866:19:866:19 | A | +| main.rs:868:13:868:16 | self | | file://:0:0:0:0 | & | +| main.rs:868:13:868:16 | self | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | +| main.rs:868:13:868:23 | self.put(...) | | main.rs:861:9:861:52 | GenericAssociatedType | +| main.rs:868:22:868:22 | b | | main.rs:866:19:866:19 | A | +| main.rs:877:21:877:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:877:21:877:25 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | +| main.rs:879:20:879:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:879:20:879:24 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | +| main.rs:881:20:881:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:881:20:881:24 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | +| main.rs:897:15:897:18 | SelfParam | | main.rs:884:5:885:13 | S | +| main.rs:897:45:899:9 | { ... } | | main.rs:890:5:891:14 | AT | +| main.rs:898:13:898:14 | AT | | main.rs:890:5:891:14 | AT | +| main.rs:907:19:907:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:907:19:907:23 | SelfParam | &T | main.rs:884:5:885:13 | S | +| main.rs:907:26:907:26 | a | | main.rs:907:16:907:16 | A | +| main.rs:907:46:909:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | +| main.rs:907:46:909:9 | { ... } | A | main.rs:907:16:907:16 | A | +| main.rs:908:13:908:32 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | +| main.rs:908:13:908:32 | Wrapper {...} | A | main.rs:907:16:907:16 | A | +| main.rs:908:30:908:30 | a | | main.rs:907:16:907:16 | A | +| main.rs:916:15:916:18 | SelfParam | | main.rs:887:5:888:14 | S2 | +| main.rs:916:45:918:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | +| main.rs:916:45:918:9 | { ... } | A | main.rs:887:5:888:14 | S2 | +| main.rs:917:13:917:35 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | +| main.rs:917:13:917:35 | Wrapper {...} | A | main.rs:887:5:888:14 | S2 | +| main.rs:917:30:917:33 | self | | main.rs:887:5:888:14 | S2 | +| main.rs:923:30:925:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | +| main.rs:923:30:925:9 | { ... } | A | main.rs:887:5:888:14 | S2 | +| main.rs:924:13:924:33 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | +| main.rs:924:13:924:33 | Wrapper {...} | A | main.rs:887:5:888:14 | S2 | +| main.rs:924:30:924:31 | S2 | | main.rs:887:5:888:14 | S2 | +| main.rs:930:22:930:26 | thing | | main.rs:930:10:930:19 | T | +| main.rs:931:9:931:13 | thing | | main.rs:930:10:930:19 | T | +| main.rs:938:21:938:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:938:21:938:25 | SelfParam | &T | main.rs:890:5:891:14 | AT | +| main.rs:938:34:940:9 | { ... } | | main.rs:890:5:891:14 | AT | +| main.rs:939:13:939:14 | AT | | main.rs:890:5:891:14 | AT | +| main.rs:942:20:942:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:942:20:942:24 | SelfParam | &T | main.rs:890:5:891:14 | AT | +| main.rs:942:43:944:9 | { ... } | | main.rs:884:5:885:13 | S | +| main.rs:943:13:943:13 | S | | main.rs:884:5:885:13 | S | +| main.rs:946:20:946:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:946:20:946:24 | SelfParam | &T | main.rs:890:5:891:14 | AT | +| main.rs:946:43:948:9 | { ... } | | main.rs:887:5:888:14 | S2 | +| main.rs:947:13:947:14 | S2 | | main.rs:887:5:888:14 | S2 | +| main.rs:952:13:952:14 | x1 | | main.rs:884:5:885:13 | S | +| main.rs:952:18:952:18 | S | | main.rs:884:5:885:13 | S | +| main.rs:954:18:954:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:954:18:954:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:954:18:954:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:954:18:954:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:954:26:954:27 | x1 | | main.rs:884:5:885:13 | S | +| main.rs:954:26:954:32 | x1.m1() | | main.rs:890:5:891:14 | AT | +| main.rs:956:13:956:14 | x2 | | main.rs:884:5:885:13 | S | +| main.rs:956:18:956:18 | S | | main.rs:884:5:885:13 | S | +| main.rs:958:13:958:13 | y | | main.rs:890:5:891:14 | AT | +| main.rs:958:17:958:18 | x2 | | main.rs:884:5:885:13 | S | +| main.rs:958:17:958:23 | x2.m2() | | main.rs:890:5:891:14 | AT | +| main.rs:959:18:959:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:959:18:959:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:959:18:959:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:959:18:959:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:959:26:959:26 | y | | main.rs:890:5:891:14 | AT | +| main.rs:961:13:961:14 | x3 | | main.rs:884:5:885:13 | S | +| main.rs:961:18:961:18 | S | | main.rs:884:5:885:13 | S | +| main.rs:963:18:963:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:963:18:963:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:963:18:963:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:963:18:963:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:963:26:963:27 | x3 | | main.rs:884:5:885:13 | S | +| main.rs:963:26:963:34 | x3.put(...) | | main.rs:833:5:836:5 | Wrapper | +| main.rs:963:26:963:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:963:26:963:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:963:33:963:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:966:18:966:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:966:18:966:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:966:18:966:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:966:18:966:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:966:26:966:27 | x3 | | main.rs:884:5:885:13 | S | +| main.rs:966:26:966:40 | x3.putTwo(...) | | main.rs:833:5:836:5 | Wrapper | +| main.rs:966:26:966:40 | x3.putTwo(...) | A | main.rs:904:36:904:50 | AssociatedParam | +| main.rs:966:26:966:49 | ... .unwrap() | | main.rs:904:36:904:50 | AssociatedParam | +| main.rs:966:36:966:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:966:39:966:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:968:20:968:20 | S | | main.rs:884:5:885:13 | S | +| main.rs:969:18:969:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:969:18:969:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:969:18:969:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:969:18:969:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:971:13:971:14 | x5 | | main.rs:887:5:888:14 | S2 | +| main.rs:971:18:971:19 | S2 | | main.rs:887:5:888:14 | S2 | +| main.rs:972:18:972:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:972:18:972:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:972:18:972:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:972:18:972:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:972:26:972:27 | x5 | | main.rs:887:5:888:14 | S2 | +| main.rs:972:26:972:32 | x5.m1() | | main.rs:833:5:836:5 | Wrapper | +| main.rs:972:26:972:32 | x5.m1() | A | main.rs:887:5:888:14 | S2 | +| main.rs:973:13:973:14 | x6 | | main.rs:887:5:888:14 | S2 | +| main.rs:973:18:973:19 | S2 | | main.rs:887:5:888:14 | S2 | +| main.rs:974:18:974:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:974:18:974:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:974:18:974:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:974:18:974:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:974:26:974:27 | x6 | | main.rs:887:5:888:14 | S2 | +| main.rs:974:26:974:32 | x6.m2() | | main.rs:833:5:836:5 | Wrapper | +| main.rs:974:26:974:32 | x6.m2() | A | main.rs:887:5:888:14 | S2 | +| main.rs:976:13:976:22 | assoc_zero | | main.rs:890:5:891:14 | AT | +| main.rs:976:26:976:27 | AT | | main.rs:890:5:891:14 | AT | +| main.rs:976:26:976:38 | AT.get_zero() | | main.rs:890:5:891:14 | AT | +| main.rs:977:13:977:21 | assoc_one | | main.rs:884:5:885:13 | S | +| main.rs:977:25:977:26 | AT | | main.rs:890:5:891:14 | AT | +| main.rs:977:25:977:36 | AT.get_one() | | main.rs:884:5:885:13 | S | +| main.rs:978:13:978:21 | assoc_two | | main.rs:887:5:888:14 | S2 | +| main.rs:978:25:978:26 | AT | | main.rs:890:5:891:14 | AT | +| main.rs:978:25:978:36 | AT.get_two() | | main.rs:887:5:888:14 | S2 | +| main.rs:986:19:986:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:986:19:986:23 | SelfParam | &T | main.rs:983:5:987:5 | Self [trait Supertrait] | +| main.rs:986:26:986:32 | content | | main.rs:984:9:984:21 | Content | +| main.rs:991:24:991:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:991:24:991:28 | SelfParam | &T | main.rs:989:5:992:5 | Self [trait Subtrait] | +| main.rs:1000:23:1000:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1000:23:1000:27 | SelfParam | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | +| main.rs:1000:30:1000:31 | c1 | | main.rs:984:9:984:21 | Content | +| main.rs:1000:49:1000:50 | c2 | | main.rs:984:9:984:21 | Content | +| main.rs:1001:13:1001:16 | self | | file://:0:0:0:0 | & | +| main.rs:1001:13:1001:16 | self | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | +| main.rs:1001:25:1001:26 | c1 | | main.rs:984:9:984:21 | Content | +| main.rs:1002:13:1002:16 | self | | file://:0:0:0:0 | & | +| main.rs:1002:13:1002:16 | self | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | +| main.rs:1002:25:1002:26 | c2 | | main.rs:984:9:984:21 | Content | +| main.rs:1010:19:1010:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1010:19:1010:23 | SelfParam | &T | main.rs:1006:5:1006:24 | MyType | +| main.rs:1010:19:1010:23 | SelfParam | &T.T | main.rs:1008:10:1008:10 | T | +| main.rs:1010:26:1010:33 | _content | | main.rs:1008:10:1008:10 | T | +| main.rs:1011:22:1011:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:1011:22:1011:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1011:22:1011:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1011:22:1011:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1017:24:1017:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1017:24:1017:28 | SelfParam | &T | main.rs:1006:5:1006:24 | MyType | +| main.rs:1017:24:1017:28 | SelfParam | &T.T | main.rs:1015:10:1015:17 | T | +| main.rs:1017:48:1019:9 | { ... } | | main.rs:1015:10:1015:17 | T | +| main.rs:1018:13:1018:19 | (...) | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1018:13:1018:19 | (...) | T | main.rs:1015:10:1015:17 | T | +| main.rs:1018:13:1018:21 | ... .0 | | main.rs:1015:10:1015:17 | T | +| main.rs:1018:13:1018:29 | ... .clone() | | main.rs:1015:10:1015:17 | T | +| main.rs:1018:14:1018:18 | * ... | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1018:14:1018:18 | * ... | T | main.rs:1015:10:1015:17 | T | +| main.rs:1018:15:1018:18 | self | | file://:0:0:0:0 | & | +| main.rs:1018:15:1018:18 | self | &T | main.rs:1006:5:1006:24 | MyType | +| main.rs:1018:15:1018:18 | self | &T.T | main.rs:1015:10:1015:17 | T | +| main.rs:1022:33:1022:36 | item | | file://:0:0:0:0 | & | +| main.rs:1022:33:1022:36 | item | &T | main.rs:1022:20:1022:30 | T | +| main.rs:1022:57:1024:5 | { ... } | | main.rs:984:9:984:21 | Content | +| main.rs:1023:9:1023:12 | item | | file://:0:0:0:0 | & | +| main.rs:1023:9:1023:12 | item | &T | main.rs:1022:20:1022:30 | T | +| main.rs:1023:9:1023:26 | item.get_content() | | main.rs:984:9:984:21 | Content | +| main.rs:1026:35:1026:38 | item | | file://:0:0:0:0 | & | +| main.rs:1026:35:1026:38 | item | &T | main.rs:1026:21:1026:32 | T | +| main.rs:1026:45:1026:46 | c1 | | main.rs:984:9:984:21 | Content | +| main.rs:1026:61:1026:62 | c2 | | main.rs:984:9:984:21 | Content | +| main.rs:1026:77:1026:78 | c3 | | main.rs:984:9:984:21 | Content | +| main.rs:1027:9:1027:12 | item | | file://:0:0:0:0 | & | +| main.rs:1027:9:1027:12 | item | &T | main.rs:1026:21:1026:32 | T | +| main.rs:1027:21:1027:22 | c1 | | main.rs:984:9:984:21 | Content | +| main.rs:1028:9:1028:12 | item | | file://:0:0:0:0 | & | +| main.rs:1028:9:1028:12 | item | &T | main.rs:1026:21:1026:32 | T | +| main.rs:1028:25:1028:26 | c2 | | main.rs:984:9:984:21 | Content | +| main.rs:1028:29:1028:30 | c3 | | main.rs:984:9:984:21 | Content | +| main.rs:1032:13:1032:17 | item1 | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1032:13:1032:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1032:21:1032:33 | MyType(...) | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1032:21:1032:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1032:28:1032:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1033:25:1033:29 | item1 | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1033:25:1033:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1035:13:1035:17 | item2 | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1035:13:1035:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1035:21:1035:32 | MyType(...) | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1035:21:1035:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:1035:28:1035:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1036:37:1036:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:1036:37:1036:42 | &item2 | &T | main.rs:1006:5:1006:24 | MyType | +| main.rs:1036:37:1036:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:1036:38:1036:42 | item2 | | main.rs:1006:5:1006:24 | MyType | +| main.rs:1036:38:1036:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1053:15:1053:18 | SelfParam | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1053:15:1053:18 | SelfParam | A | main.rs:1052:10:1052:10 | T | +| main.rs:1053:26:1058:9 | { ... } | | main.rs:1052:10:1052:10 | T | +| main.rs:1054:13:1057:13 | match self { ... } | | main.rs:1052:10:1052:10 | T | +| main.rs:1054:19:1054:22 | self | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1054:19:1054:22 | self | A | main.rs:1052:10:1052:10 | T | +| main.rs:1055:17:1055:29 | ...::C1(...) | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1055:17:1055:29 | ...::C1(...) | A | main.rs:1052:10:1052:10 | T | +| main.rs:1055:28:1055:28 | a | | main.rs:1052:10:1052:10 | T | +| main.rs:1055:34:1055:34 | a | | main.rs:1052:10:1052:10 | T | +| main.rs:1056:17:1056:32 | ...::C2 {...} | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1056:17:1056:32 | ...::C2 {...} | A | main.rs:1052:10:1052:10 | T | +| main.rs:1056:30:1056:30 | a | | main.rs:1052:10:1052:10 | T | +| main.rs:1056:37:1056:37 | a | | main.rs:1052:10:1052:10 | T | +| main.rs:1062:13:1062:13 | x | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1062:13:1062:13 | x | A | main.rs:1047:5:1048:14 | S1 | +| main.rs:1062:17:1062:30 | ...::C1(...) | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1062:17:1062:30 | ...::C1(...) | A | main.rs:1047:5:1048:14 | S1 | +| main.rs:1062:28:1062:29 | S1 | | main.rs:1047:5:1048:14 | S1 | +| main.rs:1063:13:1063:13 | y | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1063:13:1063:13 | y | A | main.rs:1049:5:1050:14 | S2 | +| main.rs:1063:17:1063:36 | ...::C2 {...} | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1063:17:1063:36 | ...::C2 {...} | A | main.rs:1049:5:1050:14 | S2 | +| main.rs:1063:33:1063:34 | S2 | | main.rs:1049:5:1050:14 | S2 | +| main.rs:1065:18:1065:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1065:18:1065:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1065:18:1065:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1065:18:1065:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1065:26:1065:26 | x | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1065:26:1065:26 | x | A | main.rs:1047:5:1048:14 | S1 | +| main.rs:1065:26:1065:31 | x.m1() | | main.rs:1047:5:1048:14 | S1 | +| main.rs:1066:18:1066:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1066:18:1066:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1066:18:1066:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1066:18:1066:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1066:26:1066:26 | y | | main.rs:1041:5:1045:5 | MyEnum | +| main.rs:1066:26:1066:26 | y | A | main.rs:1049:5:1050:14 | S2 | +| main.rs:1066:26:1066:31 | y.m1() | | main.rs:1049:5:1050:14 | S2 | +| main.rs:1088:15:1088:18 | SelfParam | | main.rs:1086:5:1089:5 | Self [trait MyTrait1] | +| main.rs:1093:15:1093:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1093:15:1093:19 | SelfParam | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | +| main.rs:1096:9:1102:9 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1097:13:1101:13 | if ... {...} else {...} | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1097:16:1097:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1097:16:1097:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1097:20:1097:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1097:22:1099:13 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1098:17:1098:20 | self | | file://:0:0:0:0 | & | +| main.rs:1098:17:1098:20 | self | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | +| main.rs:1098:17:1098:25 | self.m1() | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1099:20:1101:13 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1100:17:1100:31 | ...::m1(...) | | main.rs:1091:20:1091:22 | Tr2 | +| main.rs:1100:26:1100:30 | * ... | | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | +| main.rs:1100:27:1100:30 | self | | file://:0:0:0:0 | & | +| main.rs:1100:27:1100:30 | self | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | +| main.rs:1107:15:1107:18 | SelfParam | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | +| main.rs:1110:9:1116:9 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1111:13:1115:13 | if ... {...} else {...} | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1111:16:1111:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1111:16:1111:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1111:20:1111:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1111:22:1113:13 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1112:17:1112:20 | self | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | +| main.rs:1112:17:1112:25 | self.m2() | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1112:17:1112:25 | self.m2() | A | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1112:17:1112:27 | ... .a | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1113:20:1115:13 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1114:17:1114:31 | ...::m2(...) | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1114:17:1114:31 | ...::m2(...) | A | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1114:17:1114:33 | ... .a | | main.rs:1105:20:1105:22 | Tr3 | +| main.rs:1114:26:1114:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1114:26:1114:30 | &self | &T | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | +| main.rs:1114:27:1114:30 | self | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | +| main.rs:1121:15:1121:18 | SelfParam | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1121:15:1121:18 | SelfParam | A | main.rs:1119:10:1119:10 | T | +| main.rs:1121:26:1123:9 | { ... } | | main.rs:1119:10:1119:10 | T | +| main.rs:1122:13:1122:16 | self | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1122:13:1122:16 | self | A | main.rs:1119:10:1119:10 | T | +| main.rs:1122:13:1122:18 | self.a | | main.rs:1119:10:1119:10 | T | +| main.rs:1130:15:1130:18 | SelfParam | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1130:15:1130:18 | SelfParam | A | main.rs:1128:10:1128:10 | T | +| main.rs:1130:35:1132:9 | { ... } | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1130:35:1132:9 | { ... } | A | main.rs:1128:10:1128:10 | T | +| main.rs:1131:13:1131:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1131:13:1131:33 | MyThing {...} | A | main.rs:1128:10:1128:10 | T | +| main.rs:1131:26:1131:29 | self | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1131:26:1131:29 | self | A | main.rs:1128:10:1128:10 | T | +| main.rs:1131:26:1131:31 | self.a | | main.rs:1128:10:1128:10 | T | +| main.rs:1139:44:1139:44 | x | | main.rs:1139:26:1139:41 | T2 | +| main.rs:1139:57:1141:5 | { ... } | | main.rs:1139:22:1139:23 | T1 | +| main.rs:1140:9:1140:9 | x | | main.rs:1139:26:1139:41 | T2 | +| main.rs:1140:9:1140:14 | x.m1() | | main.rs:1139:22:1139:23 | T1 | +| main.rs:1143:56:1143:56 | x | | main.rs:1143:39:1143:53 | T | +| main.rs:1145:13:1145:13 | a | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1145:13:1145:13 | a | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1145:17:1145:17 | x | | main.rs:1143:39:1143:53 | T | +| main.rs:1145:17:1145:22 | x.m1() | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1145:17:1145:22 | x.m1() | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1146:18:1146:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1146:18:1146:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1146:18:1146:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1146:18:1146:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1146:26:1146:26 | a | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1146:26:1146:26 | a | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1150:13:1150:13 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1150:13:1150:13 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1150:17:1150:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1150:17:1150:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1150:30:1150:31 | S1 | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1151:13:1151:13 | y | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1151:13:1151:13 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1151:17:1151:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1151:17:1151:33 | MyThing {...} | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1151:30:1151:31 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1153:18:1153:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1153:18:1153:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1153:18:1153:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1153:18:1153:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1153:26:1153:26 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1153:26:1153:26 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1153:26:1153:31 | x.m1() | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1154:18:1154:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1154:18:1154:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1154:18:1154:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1154:18:1154:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1154:26:1154:26 | y | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1154:26:1154:26 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1154:26:1154:31 | y.m1() | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1156:13:1156:13 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1156:13:1156:13 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1156:17:1156:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1156:17:1156:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1156:30:1156:31 | S1 | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1157:13:1157:13 | y | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1157:13:1157:13 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1157:17:1157:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1157:17:1157:33 | MyThing {...} | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1157:30:1157:31 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1159:18:1159:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1159:18:1159:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1159:18:1159:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1159:18:1159:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1159:26:1159:26 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1159:26:1159:26 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1159:26:1159:31 | x.m2() | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1160:18:1160:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1160:18:1160:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1160:18:1160:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1160:18:1160:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1160:26:1160:26 | y | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1160:26:1160:26 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1160:26:1160:31 | y.m2() | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1162:13:1162:13 | x | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1162:13:1162:13 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1162:17:1162:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1162:17:1162:34 | MyThing2 {...} | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1162:31:1162:32 | S1 | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1163:13:1163:13 | y | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1163:13:1163:13 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1163:17:1163:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1163:17:1163:34 | MyThing2 {...} | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1163:31:1163:32 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1165:18:1165:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1165:18:1165:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1165:18:1165:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1165:18:1165:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1165:26:1165:26 | x | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1165:26:1165:26 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1165:26:1165:31 | x.m3() | | main.rs:1081:5:1082:14 | S1 | | main.rs:1166:18:1166:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1166:18:1166:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1166:18:1166:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1166:18:1166:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1166:26:1166:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1166:26:1166:37 | id::<...>(...) | &T | main.rs:1134:5:1135:14 | S1 | -| main.rs:1166:35:1166:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1166:35:1166:36 | &x | &T | main.rs:1134:5:1135:14 | S1 | -| main.rs:1166:36:1166:36 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1168:13:1168:13 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1168:13:1168:13 | x | | main.rs:1140:5:1140:25 | dyn Trait | -| main.rs:1168:17:1168:18 | S1 | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1168:17:1168:18 | S1 | | main.rs:1140:5:1140:25 | dyn Trait | -| main.rs:1170:18:1170:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1170:18:1170:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1170:18:1170:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1170:18:1170:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1170:26:1170:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1170:26:1170:44 | id::<...>(...) | &T | main.rs:1140:5:1140:25 | dyn Trait | -| main.rs:1170:42:1170:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1170:42:1170:43 | &x | &T | main.rs:1134:5:1135:14 | S1 | -| main.rs:1170:42:1170:43 | &x | &T | main.rs:1140:5:1140:25 | dyn Trait | -| main.rs:1170:43:1170:43 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1170:43:1170:43 | x | | main.rs:1140:5:1140:25 | dyn Trait | -| main.rs:1172:13:1172:13 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1172:17:1172:18 | S1 | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1173:9:1173:25 | into::<...>(...) | | main.rs:1137:5:1138:14 | S2 | -| main.rs:1173:24:1173:24 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1175:13:1175:13 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1175:17:1175:18 | S1 | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1176:13:1176:13 | y | | main.rs:1137:5:1138:14 | S2 | -| main.rs:1176:21:1176:27 | into(...) | | main.rs:1137:5:1138:14 | S2 | -| main.rs:1176:26:1176:26 | x | | main.rs:1134:5:1135:14 | S1 | -| main.rs:1190:22:1190:25 | SelfParam | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1190:22:1190:25 | SelfParam | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1190:22:1190:25 | SelfParam | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1190:35:1197:9 | { ... } | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1191:13:1196:13 | match self { ... } | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1191:19:1191:22 | self | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1191:19:1191:22 | self | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1191:19:1191:22 | self | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1192:17:1192:38 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1192:17:1192:38 | ...::PairNone(...) | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1192:17:1192:38 | ...::PairNone(...) | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1192:43:1192:82 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1192:50:1192:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1192:50:1192:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1192:50:1192:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1192:50:1192:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1192:50:1192:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1192:50:1192:81 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1192:50:1192:81 | { ... } | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1193:17:1193:38 | ...::PairFst(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1193:17:1193:38 | ...::PairFst(...) | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1193:17:1193:38 | ...::PairFst(...) | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1193:37:1193:37 | _ | | main.rs:1189:10:1189:12 | Fst | -| main.rs:1193:43:1193:81 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1193:50:1193:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1193:50:1193:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1193:50:1193:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1193:50:1193:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1193:50:1193:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1193:50:1193:80 | MacroExpr | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1193:50:1193:80 | { ... } | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1194:17:1194:40 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1194:17:1194:40 | ...::PairSnd(...) | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1194:17:1194:40 | ...::PairSnd(...) | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1194:37:1194:39 | snd | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1194:45:1194:47 | snd | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1195:17:1195:44 | ...::PairBoth(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1195:17:1195:44 | ...::PairBoth(...) | Fst | main.rs:1189:10:1189:12 | Fst | -| main.rs:1195:17:1195:44 | ...::PairBoth(...) | Snd | main.rs:1189:15:1189:17 | Snd | -| main.rs:1195:38:1195:38 | _ | | main.rs:1189:10:1189:12 | Fst | -| main.rs:1195:41:1195:43 | snd | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1195:49:1195:51 | snd | | main.rs:1189:15:1189:17 | Snd | -| main.rs:1221:10:1221:10 | t | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1221:10:1221:10 | t | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1221:10:1221:10 | t | Snd | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1221:10:1221:10 | t | Snd.Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1221:10:1221:10 | t | Snd.Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1222:13:1222:13 | x | | main.rs:1206:5:1207:14 | S3 | -| main.rs:1222:17:1222:17 | t | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1222:17:1222:17 | t | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1222:17:1222:17 | t | Snd | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1222:17:1222:17 | t | Snd.Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1222:17:1222:17 | t | Snd.Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1222:17:1222:29 | t.unwrapSnd() | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1222:17:1222:29 | t.unwrapSnd() | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1222:17:1222:29 | t.unwrapSnd() | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1222:17:1222:41 | ... .unwrapSnd() | | main.rs:1206:5:1207:14 | S3 | -| main.rs:1223:18:1223:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1223:18:1223:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1223:18:1223:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1223:18:1223:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1223:26:1223:26 | x | | main.rs:1206:5:1207:14 | S3 | -| main.rs:1238:22:1238:25 | SelfParam | | main.rs:1236:5:1239:5 | Self [trait TraitWithAssocType] | -| main.rs:1246:22:1246:25 | SelfParam | | main.rs:1234:5:1234:28 | GenS | -| main.rs:1246:22:1246:25 | SelfParam | GenT | main.rs:1241:10:1241:15 | Output | -| main.rs:1246:44:1248:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1246:44:1248:9 | { ... } | E | main.rs:1241:10:1241:15 | Output | -| main.rs:1246:44:1248:9 | { ... } | T | main.rs:1241:10:1241:15 | Output | -| main.rs:1247:13:1247:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1247:13:1247:22 | Ok(...) | E | main.rs:1241:10:1241:15 | Output | -| main.rs:1247:13:1247:22 | Ok(...) | T | main.rs:1241:10:1241:15 | Output | -| main.rs:1247:16:1247:19 | self | | main.rs:1234:5:1234:28 | GenS | -| main.rs:1247:16:1247:19 | self | GenT | main.rs:1241:10:1241:15 | Output | -| main.rs:1247:16:1247:21 | self.0 | | main.rs:1241:10:1241:15 | Output | -| main.rs:1253:13:1253:14 | p1 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1253:13:1253:14 | p1 | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1253:13:1253:14 | p1 | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1253:26:1253:53 | ...::PairBoth(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1253:26:1253:53 | ...::PairBoth(...) | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1253:26:1253:53 | ...::PairBoth(...) | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1253:47:1253:48 | S1 | | main.rs:1200:5:1201:14 | S1 | -| main.rs:1253:51:1253:52 | S2 | | main.rs:1203:5:1204:14 | S2 | -| main.rs:1254:18:1254:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1254:18:1254:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1254:18:1254:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1254:18:1254:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1254:26:1254:27 | p1 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1254:26:1254:27 | p1 | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1254:26:1254:27 | p1 | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1257:13:1257:14 | p2 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1257:13:1257:14 | p2 | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1257:13:1257:14 | p2 | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1257:26:1257:47 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1257:26:1257:47 | ...::PairNone(...) | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1257:26:1257:47 | ...::PairNone(...) | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1258:18:1258:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1258:18:1258:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1258:18:1258:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1258:18:1258:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1258:26:1258:27 | p2 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1258:26:1258:27 | p2 | Fst | main.rs:1200:5:1201:14 | S1 | -| main.rs:1258:26:1258:27 | p2 | Snd | main.rs:1203:5:1204:14 | S2 | -| main.rs:1261:13:1261:14 | p3 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1261:13:1261:14 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1261:13:1261:14 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1261:34:1261:56 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1261:34:1261:56 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1261:34:1261:56 | ...::PairSnd(...) | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1261:54:1261:55 | S3 | | main.rs:1206:5:1207:14 | S3 | -| main.rs:1262:18:1262:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1262:18:1262:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1262:18:1262:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1262:18:1262:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1262:26:1262:27 | p3 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1262:26:1262:27 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1262:26:1262:27 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1265:13:1265:14 | p3 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1265:13:1265:14 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1265:13:1265:14 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1265:35:1265:56 | ...::PairNone(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1265:35:1265:56 | ...::PairNone(...) | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1265:35:1265:56 | ...::PairNone(...) | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1266:18:1266:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1266:18:1266:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1266:18:1266:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1266:18:1266:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1266:26:1266:27 | p3 | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1266:26:1266:27 | p3 | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1266:26:1266:27 | p3 | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1268:11:1268:54 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1268:11:1268:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1268:31:1268:53 | ...::PairSnd(...) | | main.rs:1181:5:1187:5 | PairOption | -| main.rs:1268:31:1268:53 | ...::PairSnd(...) | Fst | main.rs:1203:5:1204:14 | S2 | -| main.rs:1268:31:1268:53 | ...::PairSnd(...) | Snd | main.rs:1206:5:1207:14 | S3 | -| main.rs:1268:51:1268:52 | S3 | | main.rs:1206:5:1207:14 | S3 | -| main.rs:1270:13:1270:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1270:13:1270:13 | x | E | main.rs:1200:5:1201:14 | S1 | -| main.rs:1270:13:1270:13 | x | T | main.rs:1226:5:1226:34 | S4 | -| main.rs:1270:13:1270:13 | x | T.T41 | main.rs:1203:5:1204:14 | S2 | -| main.rs:1270:13:1270:13 | x | T.T42 | main.rs:1228:5:1228:22 | S5 | -| main.rs:1270:13:1270:13 | x | T.T42.T5 | main.rs:1203:5:1204:14 | S2 | -| main.rs:1272:13:1272:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1272:13:1272:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1272:13:1272:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1272:17:1272:26 | GenS(...) | | main.rs:1234:5:1234:28 | GenS | -| main.rs:1272:17:1272:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1272:17:1272:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1272:17:1272:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1272:17:1272:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1272:22:1272:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1285:16:1285:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1285:16:1285:24 | SelfParam | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | -| main.rs:1285:27:1285:31 | value | | main.rs:1283:19:1283:19 | S | -| main.rs:1287:21:1287:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1287:21:1287:29 | SelfParam | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | -| main.rs:1287:32:1287:36 | value | | main.rs:1283:19:1283:19 | S | -| main.rs:1288:13:1288:16 | self | | file://:0:0:0:0 | & | -| main.rs:1288:13:1288:16 | self | &T | main.rs:1283:5:1290:5 | Self [trait MyTrait] | -| main.rs:1288:22:1288:26 | value | | main.rs:1283:19:1283:19 | S | -| main.rs:1294:16:1294:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1294:16:1294:24 | SelfParam | &T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1294:16:1294:24 | SelfParam | &T.T | main.rs:1292:10:1292:10 | T | -| main.rs:1294:27:1294:31 | value | | main.rs:1292:10:1292:10 | T | -| main.rs:1298:26:1300:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1298:26:1300:9 | { ... } | T | main.rs:1297:10:1297:10 | T | -| main.rs:1299:13:1299:30 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1299:13:1299:30 | ...::MyNone(...) | T | main.rs:1297:10:1297:10 | T | -| main.rs:1304:20:1304:23 | SelfParam | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1304:20:1304:23 | SelfParam | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1304:20:1304:23 | SelfParam | T.T | main.rs:1303:10:1303:10 | T | -| main.rs:1304:41:1309:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1304:41:1309:9 | { ... } | T | main.rs:1303:10:1303:10 | T | -| main.rs:1305:13:1308:13 | match self { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1305:13:1308:13 | match self { ... } | T | main.rs:1303:10:1303:10 | T | -| main.rs:1305:19:1305:22 | self | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1305:19:1305:22 | self | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1305:19:1305:22 | self | T.T | main.rs:1303:10:1303:10 | T | -| main.rs:1306:17:1306:34 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1306:17:1306:34 | ...::MyNone(...) | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1306:17:1306:34 | ...::MyNone(...) | T.T | main.rs:1303:10:1303:10 | T | -| main.rs:1306:39:1306:56 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1306:39:1306:56 | ...::MyNone(...) | T | main.rs:1303:10:1303:10 | T | -| main.rs:1307:17:1307:35 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1307:17:1307:35 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1307:17:1307:35 | ...::MySome(...) | T.T | main.rs:1303:10:1303:10 | T | -| main.rs:1307:34:1307:34 | x | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1307:34:1307:34 | x | T | main.rs:1303:10:1303:10 | T | -| main.rs:1307:40:1307:40 | x | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1307:40:1307:40 | x | T | main.rs:1303:10:1303:10 | T | -| main.rs:1316:13:1316:14 | x1 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1316:13:1316:14 | x1 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1316:18:1316:37 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1316:18:1316:37 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1317:18:1317:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1317:18:1317:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1317:18:1317:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1317:18:1317:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1317:26:1317:27 | x1 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1317:26:1317:27 | x1 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1319:17:1319:18 | x2 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1319:17:1319:18 | x2 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1319:22:1319:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1319:22:1319:36 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1320:9:1320:10 | x2 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1320:9:1320:10 | x2 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1320:16:1320:16 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1321:18:1321:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1321:18:1321:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1321:18:1321:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1321:18:1321:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1321:26:1321:27 | x2 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1321:26:1321:27 | x2 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1324:17:1324:18 | x3 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1324:22:1324:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1325:9:1325:10 | x3 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1325:21:1325:21 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1326:18:1326:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1326:18:1326:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1326:18:1326:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1326:18:1326:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1326:26:1326:27 | x3 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1328:17:1328:18 | x4 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1328:17:1328:18 | x4 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1328:22:1328:36 | ...::new(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1328:22:1328:36 | ...::new(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1329:23:1329:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1329:23:1329:29 | &mut x4 | &T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1329:23:1329:29 | &mut x4 | &T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1329:28:1329:29 | x4 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1329:28:1329:29 | x4 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1329:32:1329:32 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1330:18:1330:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1330:18:1330:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1330:18:1330:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1330:18:1330:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1330:26:1330:27 | x4 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1330:26:1330:27 | x4 | T | main.rs:1312:5:1313:13 | S | -| main.rs:1332:13:1332:14 | x5 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1332:13:1332:14 | x5 | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1332:13:1332:14 | x5 | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1332:18:1332:58 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1332:18:1332:58 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1332:18:1332:58 | ...::MySome(...) | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1332:35:1332:57 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1332:35:1332:57 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1333:18:1333:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1333:18:1333:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1333:18:1333:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1333:18:1333:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1333:26:1333:27 | x5 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1333:26:1333:27 | x5 | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1333:26:1333:27 | x5 | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1333:26:1333:37 | x5.flatten() | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1333:26:1333:37 | x5.flatten() | T | main.rs:1312:5:1313:13 | S | -| main.rs:1335:13:1335:14 | x6 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1335:13:1335:14 | x6 | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1335:13:1335:14 | x6 | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1335:18:1335:58 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1335:18:1335:58 | ...::MySome(...) | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1335:18:1335:58 | ...::MySome(...) | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1335:35:1335:57 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1335:35:1335:57 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1336:18:1336:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:18:1336:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:26:1336:61 | ...::flatten(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1336:26:1336:61 | ...::flatten(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1336:59:1336:60 | x6 | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1336:59:1336:60 | x6 | T | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1336:59:1336:60 | x6 | T.T | main.rs:1312:5:1313:13 | S | -| main.rs:1339:13:1339:19 | from_if | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1339:13:1339:19 | from_if | T | main.rs:1312:5:1313:13 | S | -| main.rs:1339:23:1343:9 | if ... {...} else {...} | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1339:23:1343:9 | if ... {...} else {...} | T | main.rs:1312:5:1313:13 | S | -| main.rs:1339:26:1339:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1339:26:1339:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1339:30:1339:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1339:32:1341:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1339:32:1341:9 | { ... } | T | main.rs:1312:5:1313:13 | S | -| main.rs:1340:13:1340:30 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1340:13:1340:30 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1341:16:1343:9 | { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1341:16:1343:9 | { ... } | T | main.rs:1312:5:1313:13 | S | -| main.rs:1342:13:1342:31 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1342:13:1342:31 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1342:30:1342:30 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1344:18:1344:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:18:1344:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:26:1344:32 | from_if | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1344:26:1344:32 | from_if | T | main.rs:1312:5:1313:13 | S | -| main.rs:1347:13:1347:22 | from_match | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1347:13:1347:22 | from_match | T | main.rs:1312:5:1313:13 | S | -| main.rs:1347:26:1350:9 | match ... { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1347:26:1350:9 | match ... { ... } | T | main.rs:1312:5:1313:13 | S | -| main.rs:1347:32:1347:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1347:32:1347:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1347:36:1347:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1348:13:1348:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1348:21:1348:38 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1348:21:1348:38 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1349:13:1349:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1349:22:1349:40 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1349:22:1349:40 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1349:39:1349:39 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1351:18:1351:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1351:18:1351:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1351:18:1351:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1351:18:1351:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1351:26:1351:35 | from_match | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1351:26:1351:35 | from_match | T | main.rs:1312:5:1313:13 | S | -| main.rs:1354:13:1354:21 | from_loop | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1354:13:1354:21 | from_loop | T | main.rs:1312:5:1313:13 | S | -| main.rs:1354:25:1359:9 | loop { ... } | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1354:25:1359:9 | loop { ... } | T | main.rs:1312:5:1313:13 | S | -| main.rs:1355:16:1355:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1355:16:1355:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1355:20:1355:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1356:23:1356:40 | ...::MyNone(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1356:23:1356:40 | ...::MyNone(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1358:19:1358:37 | ...::MySome(...) | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1358:19:1358:37 | ...::MySome(...) | T | main.rs:1312:5:1313:13 | S | -| main.rs:1358:36:1358:36 | S | | main.rs:1312:5:1313:13 | S | -| main.rs:1360:18:1360:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1360:18:1360:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1360:18:1360:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1360:18:1360:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1360:26:1360:34 | from_loop | | main.rs:1277:5:1281:5 | MyOption | -| main.rs:1360:26:1360:34 | from_loop | T | main.rs:1312:5:1313:13 | S | -| main.rs:1378:15:1378:18 | SelfParam | | main.rs:1366:5:1367:19 | S | -| main.rs:1378:15:1378:18 | SelfParam | T | main.rs:1377:10:1377:10 | T | -| main.rs:1378:26:1380:9 | { ... } | | main.rs:1377:10:1377:10 | T | -| main.rs:1379:13:1379:16 | self | | main.rs:1366:5:1367:19 | S | -| main.rs:1379:13:1379:16 | self | T | main.rs:1377:10:1377:10 | T | -| main.rs:1379:13:1379:18 | self.0 | | main.rs:1377:10:1377:10 | T | -| main.rs:1382:15:1382:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1382:15:1382:19 | SelfParam | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1382:15:1382:19 | SelfParam | &T.T | main.rs:1377:10:1377:10 | T | -| main.rs:1382:28:1384:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1382:28:1384:9 | { ... } | &T | main.rs:1377:10:1377:10 | T | -| main.rs:1383:13:1383:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1383:13:1383:19 | &... | &T | main.rs:1377:10:1377:10 | T | -| main.rs:1383:14:1383:17 | self | | file://:0:0:0:0 | & | -| main.rs:1383:14:1383:17 | self | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1383:14:1383:17 | self | &T.T | main.rs:1377:10:1377:10 | T | -| main.rs:1383:14:1383:19 | self.0 | | main.rs:1377:10:1377:10 | T | -| main.rs:1386:15:1386:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1386:15:1386:25 | SelfParam | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1386:15:1386:25 | SelfParam | &T.T | main.rs:1377:10:1377:10 | T | -| main.rs:1386:34:1388:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1386:34:1388:9 | { ... } | &T | main.rs:1377:10:1377:10 | T | -| main.rs:1387:13:1387:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1387:13:1387:19 | &... | &T | main.rs:1377:10:1377:10 | T | -| main.rs:1387:14:1387:17 | self | | file://:0:0:0:0 | & | -| main.rs:1387:14:1387:17 | self | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1387:14:1387:17 | self | &T.T | main.rs:1377:10:1377:10 | T | -| main.rs:1387:14:1387:19 | self.0 | | main.rs:1377:10:1377:10 | T | -| main.rs:1392:29:1392:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1392:29:1392:33 | SelfParam | &T | main.rs:1391:5:1394:5 | Self [trait ATrait] | -| main.rs:1393:33:1393:36 | SelfParam | | main.rs:1391:5:1394:5 | Self [trait ATrait] | -| main.rs:1399:29:1399:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1399:29:1399:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1399:29:1399:33 | SelfParam | &T.&T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1399:43:1401:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1400:13:1400:22 | (...) | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1400:13:1400:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1400:14:1400:21 | * ... | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1400:15:1400:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1400:15:1400:21 | (...) | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1400:16:1400:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1400:16:1400:20 | * ... | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1400:17:1400:20 | self | | file://:0:0:0:0 | & | -| main.rs:1400:17:1400:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1400:17:1400:20 | self | &T.&T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1404:33:1404:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1404:33:1404:36 | SelfParam | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1404:46:1406:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1405:13:1405:19 | (...) | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1405:13:1405:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1405:14:1405:18 | * ... | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1405:15:1405:18 | self | | file://:0:0:0:0 | & | -| main.rs:1405:15:1405:18 | self | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1410:13:1410:14 | x1 | | main.rs:1366:5:1367:19 | S | -| main.rs:1410:13:1410:14 | x1 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1410:18:1410:22 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1410:18:1410:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1410:20:1410:21 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1411:18:1411:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1411:18:1411:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1411:18:1411:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1411:18:1411:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1411:26:1411:27 | x1 | | main.rs:1366:5:1367:19 | S | -| main.rs:1411:26:1411:27 | x1 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1411:26:1411:32 | x1.m1() | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1413:13:1413:14 | x2 | | main.rs:1366:5:1367:19 | S | -| main.rs:1413:13:1413:14 | x2 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1413:18:1413:22 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1413:18:1413:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1413:20:1413:21 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1415:18:1415:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:18:1415:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:26:1415:27 | x2 | | main.rs:1366:5:1367:19 | S | -| main.rs:1415:26:1415:27 | x2 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1415:26:1415:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1415:26:1415:32 | x2.m2() | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1416:18:1416:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1416:18:1416:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1416:18:1416:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1416:18:1416:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1416:26:1416:27 | x2 | | main.rs:1366:5:1367:19 | S | -| main.rs:1416:26:1416:27 | x2 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1416:26:1416:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1416:26:1416:32 | x2.m3() | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1418:13:1418:14 | x3 | | main.rs:1366:5:1367:19 | S | -| main.rs:1418:13:1418:14 | x3 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1418:18:1418:22 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1418:18:1418:22 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1418:20:1418:21 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1420:18:1420:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1420:18:1420:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1420:18:1420:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1420:18:1420:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1420:26:1420:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1420:26:1420:41 | ...::m2(...) | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1420:38:1420:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1420:38:1420:40 | &x3 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1420:38:1420:40 | &x3 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1420:39:1420:40 | x3 | | main.rs:1366:5:1367:19 | S | -| main.rs:1420:39:1420:40 | x3 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1421:18:1421:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1421:18:1421:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1421:18:1421:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1421:26:1421:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1421:26:1421:41 | ...::m3(...) | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1421:38:1421:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1421:38:1421:40 | &x3 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1421:38:1421:40 | &x3 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1421:39:1421:40 | x3 | | main.rs:1366:5:1367:19 | S | -| main.rs:1421:39:1421:40 | x3 | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1423:13:1423:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1423:13:1423:14 | x4 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1423:13:1423:14 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1423:18:1423:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1423:18:1423:23 | &... | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1423:18:1423:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1423:19:1423:23 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1423:19:1423:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1423:21:1423:22 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1425:18:1425:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1425:18:1425:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1425:18:1425:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1425:26:1425:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1425:26:1425:27 | x4 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1425:26:1425:27 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1425:26:1425:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1425:26:1425:32 | x4.m2() | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:26:1426:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1426:26:1426:27 | x4 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1426:26:1426:27 | x4 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1426:26:1426:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1426:26:1426:32 | x4.m3() | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1428:13:1428:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1428:13:1428:14 | x5 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1428:13:1428:14 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1428:18:1428:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1428:18:1428:23 | &... | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1428:18:1428:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1428:19:1428:23 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1428:19:1428:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1428:21:1428:22 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1430:18:1430:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1430:18:1430:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1430:18:1430:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1430:26:1430:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1430:26:1430:27 | x5 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1430:26:1430:27 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1430:26:1430:32 | x5.m1() | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1431:18:1431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1431:18:1431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1431:18:1431:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1431:18:1431:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1431:26:1431:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1431:26:1431:27 | x5 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1431:26:1431:27 | x5 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1431:26:1431:29 | x5.0 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1433:13:1433:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1433:13:1433:14 | x6 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1433:13:1433:14 | x6 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1433:18:1433:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1433:18:1433:23 | &... | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1433:18:1433:23 | &... | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1433:19:1433:23 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1433:19:1433:23 | S(...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1433:21:1433:22 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1436:18:1436:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1436:18:1436:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1436:18:1436:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1436:18:1436:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1436:26:1436:30 | (...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1436:26:1436:30 | (...) | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1436:26:1436:35 | ... .m1() | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1436:27:1436:29 | * ... | | main.rs:1366:5:1367:19 | S | -| main.rs:1436:27:1436:29 | * ... | T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1436:28:1436:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1436:28:1436:29 | x6 | &T | main.rs:1366:5:1367:19 | S | -| main.rs:1436:28:1436:29 | x6 | &T.T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1438:13:1438:14 | x7 | | main.rs:1366:5:1367:19 | S | -| main.rs:1438:13:1438:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1438:13:1438:14 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1438:18:1438:23 | S(...) | | main.rs:1366:5:1367:19 | S | -| main.rs:1438:18:1438:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1438:18:1438:23 | S(...) | T.&T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1438:20:1438:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1438:20:1438:22 | &S2 | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1438:21:1438:22 | S2 | | main.rs:1369:5:1370:14 | S2 | -| main.rs:1441:13:1441:13 | t | | file://:0:0:0:0 | & | -| main.rs:1441:13:1441:13 | t | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1441:17:1441:18 | x7 | | main.rs:1366:5:1367:19 | S | -| main.rs:1441:17:1441:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1441:17:1441:18 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1441:17:1441:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1441:17:1441:23 | x7.m1() | &T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1442:18:1442:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:18:1442:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:26:1442:27 | x7 | | main.rs:1366:5:1367:19 | S | -| main.rs:1442:26:1442:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1442:26:1442:27 | x7 | T.&T | main.rs:1369:5:1370:14 | S2 | -| main.rs:1444:13:1444:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1444:26:1444:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1444:26:1444:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1444:26:1444:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1448:13:1448:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1448:13:1448:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1448:17:1448:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1448:17:1448:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1448:17:1448:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1450:13:1450:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1450:13:1450:20 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1450:24:1450:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1450:24:1450:39 | &... | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1450:25:1450:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1450:36:1450:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1452:13:1452:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1452:17:1452:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1452:17:1452:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1452:17:1452:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1453:18:1453:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1453:18:1453:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1453:18:1453:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1453:18:1453:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1453:26:1453:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1456:13:1456:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1456:13:1456:20 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1456:24:1456:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1456:24:1456:39 | &... | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1456:25:1456:39 | MyInt {...} | | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1456:36:1456:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1457:13:1457:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1457:17:1457:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1457:17:1457:24 | my_thing | &T | main.rs:1372:5:1375:5 | MyInt | -| main.rs:1457:17:1457:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1458:18:1458:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1458:18:1458:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1458:18:1458:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1458:18:1458:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1458:26:1458:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1465:16:1465:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1465:16:1465:20 | SelfParam | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | -| main.rs:1468:16:1468:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1468:16:1468:20 | SelfParam | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | -| main.rs:1468:32:1470:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1468:32:1470:9 | { ... } | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | -| main.rs:1469:13:1469:16 | self | | file://:0:0:0:0 | & | -| main.rs:1469:13:1469:16 | self | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | -| main.rs:1469:13:1469:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1469:13:1469:22 | self.foo() | &T | main.rs:1463:5:1471:5 | Self [trait MyTrait] | -| main.rs:1477:16:1477:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1477:16:1477:20 | SelfParam | &T | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1477:36:1479:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1477:36:1479:9 | { ... } | &T | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1478:13:1478:16 | self | | file://:0:0:0:0 | & | -| main.rs:1478:13:1478:16 | self | &T | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1483:13:1483:13 | x | | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1483:17:1483:24 | MyStruct | | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1484:9:1484:9 | x | | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1484:9:1484:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1484:9:1484:15 | x.bar() | &T | main.rs:1473:5:1473:20 | MyStruct | -| main.rs:1494:16:1494:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1494:16:1494:20 | SelfParam | &T | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1494:16:1494:20 | SelfParam | &T.T | main.rs:1493:10:1493:10 | T | -| main.rs:1494:32:1496:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1494:32:1496:9 | { ... } | &T | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1494:32:1496:9 | { ... } | &T.T | main.rs:1493:10:1493:10 | T | -| main.rs:1495:13:1495:16 | self | | file://:0:0:0:0 | & | -| main.rs:1495:13:1495:16 | self | &T | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1495:13:1495:16 | self | &T.T | main.rs:1493:10:1493:10 | T | -| main.rs:1500:13:1500:13 | x | | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1500:13:1500:13 | x | T | main.rs:1489:5:1489:13 | S | -| main.rs:1500:17:1500:27 | MyStruct(...) | | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1500:17:1500:27 | MyStruct(...) | T | main.rs:1489:5:1489:13 | S | -| main.rs:1500:26:1500:26 | S | | main.rs:1489:5:1489:13 | S | -| main.rs:1501:9:1501:9 | x | | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1501:9:1501:9 | x | T | main.rs:1489:5:1489:13 | S | -| main.rs:1501:9:1501:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1501:9:1501:15 | x.foo() | &T | main.rs:1491:5:1491:26 | MyStruct | -| main.rs:1501:9:1501:15 | x.foo() | &T.T | main.rs:1489:5:1489:13 | S | -| main.rs:1512:17:1512:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1512:17:1512:25 | SelfParam | &T | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | -| main.rs:1513:13:1513:16 | self | &T | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1513:13:1513:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:13:1513:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1513:25:1513:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1513:26:1513:29 | self | | file://:0:0:0:0 | & | -| main.rs:1513:26:1513:29 | self | &T | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1513:26:1513:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1520:15:1520:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1520:15:1520:19 | SelfParam | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1520:31:1522:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1520:31:1522:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1521:13:1521:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1521:13:1521:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1521:13:1521:19 | &... | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1521:13:1521:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1521:13:1521:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1521:13:1521:19 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1521:14:1521:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1521:14:1521:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1521:14:1521:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1521:14:1521:19 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1521:15:1521:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1521:15:1521:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1521:15:1521:19 | &self | &T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1521:16:1521:19 | self | | file://:0:0:0:0 | & | -| main.rs:1521:16:1521:19 | self | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1524:15:1524:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1524:15:1524:25 | SelfParam | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1524:37:1526:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1524:37:1526:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1525:13:1525:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1525:13:1525:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1525:13:1525:19 | &... | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1525:13:1525:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1525:13:1525:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1525:13:1525:19 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1525:14:1525:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1525:14:1525:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1525:14:1525:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1525:14:1525:19 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1525:15:1525:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1525:15:1525:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1525:15:1525:19 | &self | &T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1525:16:1525:19 | self | | file://:0:0:0:0 | & | -| main.rs:1525:16:1525:19 | self | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1528:15:1528:15 | x | | file://:0:0:0:0 | & | -| main.rs:1528:15:1528:15 | x | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1528:34:1530:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1528:34:1530:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1529:13:1529:13 | x | | file://:0:0:0:0 | & | -| main.rs:1529:13:1529:13 | x | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1532:15:1532:15 | x | | file://:0:0:0:0 | & | -| main.rs:1532:15:1532:15 | x | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1532:34:1534:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1532:34:1534:9 | { ... } | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1533:13:1533:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1533:13:1533:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1533:13:1533:16 | &... | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1533:13:1533:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1533:13:1533:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1533:13:1533:16 | &... | &T.&T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1533:14:1533:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1533:14:1533:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1533:14:1533:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1533:14:1533:16 | &... | &T.&T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1533:15:1533:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1533:15:1533:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1533:15:1533:16 | &x | &T.&T | main.rs:1517:5:1517:13 | S | -| main.rs:1533:16:1533:16 | x | | file://:0:0:0:0 | & | -| main.rs:1533:16:1533:16 | x | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1538:13:1538:13 | x | | main.rs:1517:5:1517:13 | S | -| main.rs:1538:17:1538:20 | S {...} | | main.rs:1517:5:1517:13 | S | -| main.rs:1539:9:1539:9 | x | | main.rs:1517:5:1517:13 | S | -| main.rs:1539:9:1539:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1539:9:1539:14 | x.f1() | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1540:9:1540:9 | x | | main.rs:1517:5:1517:13 | S | -| main.rs:1540:9:1540:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1540:9:1540:14 | x.f2() | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1541:9:1541:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1541:9:1541:17 | ...::f3(...) | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1541:15:1541:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1541:15:1541:16 | &x | &T | main.rs:1517:5:1517:13 | S | -| main.rs:1541:16:1541:16 | x | | main.rs:1517:5:1517:13 | S | -| main.rs:1543:13:1543:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:17:1543:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:18:1543:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1543:18:1543:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1543:19:1543:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1543:19:1543:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1543:19:1543:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1543:20:1543:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1543:20:1543:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1543:21:1543:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1547:17:1547:20 | flag | | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1547:24:1547:41 | ...::default(...) | | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1548:22:1548:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1548:22:1548:30 | &mut flag | &T | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1548:27:1548:30 | flag | | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1549:18:1549:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1549:18:1549:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1549:18:1549:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1549:18:1549:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1549:26:1549:29 | flag | | main.rs:1506:5:1509:5 | MyFlag | -| main.rs:1564:43:1567:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1564:43:1567:5 | { ... } | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1564:43:1567:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1565:13:1565:13 | x | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1565:17:1565:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1565:17:1565:30 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1565:17:1565:31 | TryExpr | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1565:28:1565:29 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1566:9:1566:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1566:9:1566:22 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1566:9:1566:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1566:20:1566:21 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1571:46:1575:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1571:46:1575:5 | { ... } | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1571:46:1575:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1572:13:1572:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1572:13:1572:13 | x | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1572:17:1572:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1572:17:1572:30 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1572:28:1572:29 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1573:13:1573:13 | y | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1573:17:1573:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1573:17:1573:17 | x | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1573:17:1573:18 | TryExpr | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1574:9:1574:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1574:9:1574:22 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1574:9:1574:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1574:20:1574:21 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1579:40:1584:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1579:40:1584:5 | { ... } | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1579:40:1584:5 | { ... } | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1580:13:1580:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1580:13:1580:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1580:13:1580:13 | x | T.T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1580:17:1580:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1580:17:1580:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1580:17:1580:42 | ...::Ok(...) | T.T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1580:28:1580:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1580:28:1580:41 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1580:39:1580:40 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1582:17:1582:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1582:17:1582:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1582:17:1582:17 | x | T.T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1582:17:1582:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1582:17:1582:18 | TryExpr | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1582:17:1582:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1582:24:1582:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1582:24:1582:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1583:9:1583:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1583:9:1583:22 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1583:9:1583:22 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1583:20:1583:21 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1588:30:1588:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1588:30:1588:34 | input | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1588:30:1588:34 | input | T | main.rs:1588:20:1588:27 | T | -| main.rs:1588:69:1595:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1588:69:1595:5 | { ... } | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1588:69:1595:5 | { ... } | T | main.rs:1588:20:1588:27 | T | -| main.rs:1589:13:1589:17 | value | | main.rs:1588:20:1588:27 | T | -| main.rs:1589:21:1589:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1589:21:1589:25 | input | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1589:21:1589:25 | input | T | main.rs:1588:20:1588:27 | T | -| main.rs:1589:21:1589:26 | TryExpr | | main.rs:1588:20:1588:27 | T | -| main.rs:1590:22:1590:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1590:22:1590:38 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1590:22:1590:38 | ...::Ok(...) | T | main.rs:1588:20:1588:27 | T | -| main.rs:1590:22:1593:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1590:22:1593:10 | ... .and_then(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1590:33:1590:37 | value | | main.rs:1588:20:1588:27 | T | -| main.rs:1590:49:1593:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1590:49:1593:9 | \|...\| ... | dyn(Output).E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1590:53:1593:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1590:53:1593:9 | { ... } | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1591:22:1591:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1591:22:1591:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1591:22:1591:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1591:22:1591:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1592:13:1592:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1592:13:1592:34 | ...::Ok::<...>(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1594:9:1594:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1594:9:1594:23 | ...::Err(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1594:9:1594:23 | ...::Err(...) | T | main.rs:1588:20:1588:27 | T | -| main.rs:1594:21:1594:22 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1599:16:1599:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1599:16:1599:33 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1599:16:1599:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1599:27:1599:32 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1599:37:1599:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1599:37:1599:52 | try_same_error(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1599:37:1599:52 | try_same_error(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1600:22:1600:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1600:22:1600:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1600:22:1600:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1600:22:1600:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1600:30:1600:35 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1603:16:1603:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1603:16:1603:33 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1603:16:1603:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1603:27:1603:32 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1603:37:1603:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1603:37:1603:55 | try_convert_error(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1603:37:1603:55 | try_convert_error(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1604:22:1604:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1604:22:1604:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1604:22:1604:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1604:22:1604:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1604:30:1604:35 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1607:16:1607:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1607:16:1607:33 | ...::Ok(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1607:16:1607:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1607:27:1607:32 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1607:37:1607:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1607:37:1607:49 | try_chained(...) | E | main.rs:1559:5:1560:14 | S2 | -| main.rs:1607:37:1607:49 | try_chained(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1608:22:1608:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1608:22:1608:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1608:22:1608:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1608:22:1608:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1608:30:1608:35 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:16:1611:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1611:16:1611:33 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:16:1611:33 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:27:1611:32 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:37:1611:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1611:37:1611:63 | try_complex(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:37:1611:63 | try_complex(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:49:1611:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1611:49:1611:62 | ...::Ok(...) | E | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:49:1611:62 | ...::Ok(...) | T | main.rs:1556:5:1557:14 | S1 | -| main.rs:1611:60:1611:61 | S1 | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1612:22:1612:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1612:22:1612:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1612:22:1612:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1612:22:1612:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1612:30:1612:35 | result | | main.rs:1556:5:1557:14 | S1 | -| main.rs:1619:13:1619:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1619:22:1619:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1620:13:1620:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1620:17:1620:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1621:13:1621:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1621:17:1621:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1621:17:1621:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1621:21:1621:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1622:13:1622:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1622:17:1622:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1622:17:1622:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1623:13:1623:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1623:17:1623:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1624:13:1624:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1624:13:1624:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1624:21:1624:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1624:21:1624:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1625:13:1625:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1625:17:1625:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1626:13:1626:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1626:17:1626:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1627:13:1627:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1627:17:1627:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1634:13:1634:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1634:17:1634:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1634:17:1634:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1634:25:1634:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1635:13:1635:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1635:17:1635:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1635:17:1635:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1635:25:1635:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1637:17:1637:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1638:13:1638:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1638:20:1638:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1638:20:1638:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1638:26:1638:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1639:12:1639:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1640:17:1640:17 | z | | file://:0:0:0:0 | () | -| main.rs:1640:21:1640:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1640:22:1640:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1640:22:1640:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1640:26:1640:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1642:13:1642:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1642:13:1642:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1642:17:1642:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1644:9:1644:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1658:30:1660:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1659:13:1659:31 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1659:23:1659:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1659:23:1659:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1659:29:1659:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1659:29:1659:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1666:16:1666:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1666:22:1666:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1666:41:1671:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1667:13:1670:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1668:20:1668:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1668:20:1668:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1668:20:1668:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1668:29:1668:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1668:29:1668:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1669:20:1669:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1669:20:1669:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1669:20:1669:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1669:29:1669:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1669:29:1669:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1676:23:1676:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1676:23:1676:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1676:34:1676:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1677:13:1677:16 | self | | file://:0:0:0:0 | & | -| main.rs:1677:13:1677:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1677:13:1677:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1677:13:1677:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1677:23:1677:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1677:23:1677:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1678:13:1678:16 | self | | file://:0:0:0:0 | & | -| main.rs:1678:13:1678:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1678:13:1678:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1678:13:1678:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1678:23:1678:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1678:23:1678:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1684:16:1684:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1684:22:1684:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1684:41:1689:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1685:13:1688:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1686:20:1686:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1686:20:1686:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1686:20:1686:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1686:29:1686:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1686:29:1686:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1687:20:1687:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1687:20:1687:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1687:20:1687:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1687:29:1687:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1687:29:1687:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1694:23:1694:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1694:23:1694:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1694:34:1694:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1695:13:1695:16 | self | | file://:0:0:0:0 | & | -| main.rs:1695:13:1695:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1695:13:1695:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1695:13:1695:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1695:23:1695:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1695:23:1695:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1696:13:1696:16 | self | | file://:0:0:0:0 | & | -| main.rs:1696:13:1696:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1696:13:1696:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1696:13:1696:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1696:23:1696:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1696:23:1696:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1702:16:1702:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1702:22:1702:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1702:41:1707:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1703:13:1706:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1704:20:1704:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1704:20:1704:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:20:1704:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:29:1704:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1704:29:1704:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1705:20:1705:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1705:20:1705:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1705:20:1705:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1705:29:1705:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1705:29:1705:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1711:23:1711:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1711:23:1711:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1711:34:1711:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1712:13:1712:16 | self | | file://:0:0:0:0 | & | -| main.rs:1712:13:1712:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1712:13:1712:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1712:13:1712:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1712:23:1712:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1712:23:1712:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:13:1713:16 | self | | file://:0:0:0:0 | & | -| main.rs:1713:13:1713:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1713:13:1713:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:13:1713:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1713:23:1713:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1713:23:1713:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1719:16:1719:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1719:22:1719:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1719:41:1724:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1720:13:1723:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1721:20:1721:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1721:20:1721:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1721:20:1721:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1721:29:1721:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1721:29:1721:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:20:1722:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1722:20:1722:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:20:1722:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:29:1722:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1722:29:1722:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1728:23:1728:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1728:23:1728:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1728:34:1728:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1729:13:1729:16 | self | | file://:0:0:0:0 | & | -| main.rs:1729:13:1729:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1729:13:1729:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1729:13:1729:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1729:23:1729:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1729:23:1729:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1730:13:1730:16 | self | | file://:0:0:0:0 | & | -| main.rs:1730:13:1730:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1730:13:1730:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1730:13:1730:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1730:23:1730:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1730:23:1730:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1736:16:1736:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1736:22:1736:24 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1736:41:1741:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1737:13:1740:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1738:20:1738:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1738:20:1738:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1738:20:1738:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1738:29:1738:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1738:29:1738:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:20:1739:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1739:20:1739:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:20:1739:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:29:1739:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1739:29:1739:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1745:23:1745:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1745:23:1745:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1745:34:1745:36 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1746:13:1746:16 | self | | file://:0:0:0:0 | & | -| main.rs:1746:13:1746:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1746:13:1746:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:13:1746:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1746:23:1746:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1746:23:1746:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:13:1747:16 | self | | file://:0:0:0:0 | & | -| main.rs:1747:13:1747:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1747:13:1747:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:13:1747:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1747:23:1747:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1747:23:1747:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1753:19:1753:22 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1753:25:1753:27 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1753:44:1758:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1754:13:1757:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1755:20:1755:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1755:20:1755:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:20:1755:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:29:1755:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1755:29:1755:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1756:20:1756:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1756:20:1756:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1756:20:1756:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1756:29:1756:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1756:29:1756:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1762:26:1762:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1762:26:1762:34 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1762:37:1762:39 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1763:13:1763:16 | self | | file://:0:0:0:0 | & | -| main.rs:1763:13:1763:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1763:13:1763:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:13:1763:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1763:23:1763:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1763:23:1763:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:13:1764:16 | self | | file://:0:0:0:0 | & | -| main.rs:1764:13:1764:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1764:13:1764:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:13:1764:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1764:23:1764:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1764:23:1764:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:18:1770:21 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1770:24:1770:26 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1770:43:1775:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1771:13:1774:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1772:20:1772:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1772:20:1772:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:20:1772:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:29:1772:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1772:29:1772:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:20:1773:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1773:20:1773:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:20:1773:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:29:1773:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1773:29:1773:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1779:25:1779:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1779:25:1779:33 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1779:36:1779:38 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1780:13:1780:16 | self | | file://:0:0:0:0 | & | -| main.rs:1780:13:1780:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1780:13:1780:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:13:1780:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1780:23:1780:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1780:23:1780:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:13:1781:16 | self | | file://:0:0:0:0 | & | -| main.rs:1781:13:1781:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1781:13:1781:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:13:1781:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1781:23:1781:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1781:23:1781:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:19:1787:22 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1787:25:1787:27 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1787:44:1792:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1788:13:1791:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1789:20:1789:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1789:20:1789:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:20:1789:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:29:1789:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1789:29:1789:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:20:1790:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1790:20:1790:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:20:1790:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:29:1790:31 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1790:29:1790:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1796:26:1796:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1796:26:1796:34 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1796:37:1796:39 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1797:13:1797:16 | self | | file://:0:0:0:0 | & | -| main.rs:1797:13:1797:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1797:13:1797:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:13:1797:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1797:23:1797:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1797:23:1797:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:13:1798:16 | self | | file://:0:0:0:0 | & | -| main.rs:1798:13:1798:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1798:13:1798:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:13:1798:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1798:23:1798:25 | rhs | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1798:23:1798:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:16:1804:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1804:22:1804:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1804:40:1809:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1805:13:1808:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1806:20:1806:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1806:20:1806:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1806:20:1806:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1806:30:1806:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1807:20:1807:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1807:20:1807:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:20:1807:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:30:1807:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1813:23:1813:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1813:23:1813:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1813:34:1813:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1814:13:1814:16 | self | | file://:0:0:0:0 | & | -| main.rs:1814:13:1814:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1814:13:1814:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1814:13:1814:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1814:24:1814:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1815:13:1815:16 | self | | file://:0:0:0:0 | & | -| main.rs:1815:13:1815:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1815:13:1815:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:13:1815:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1815:24:1815:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1821:16:1821:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1821:22:1821:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1821:40:1826:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1822:13:1825:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1823:20:1823:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1823:20:1823:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1823:20:1823:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1823:30:1823:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1824:20:1824:23 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1824:20:1824:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:20:1824:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:30:1824:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1830:23:1830:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1830:23:1830:31 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1830:34:1830:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1831:13:1831:16 | self | | file://:0:0:0:0 | & | -| main.rs:1831:13:1831:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1831:13:1831:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1831:13:1831:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1831:24:1831:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1832:13:1832:16 | self | | file://:0:0:0:0 | & | -| main.rs:1832:13:1832:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1832:13:1832:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:13:1832:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1832:24:1832:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1838:16:1838:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1838:30:1843:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1839:13:1842:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1840:20:1840:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1840:21:1840:24 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1840:21:1840:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:20:1841:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:21:1841:24 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1841:21:1841:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1848:16:1848:19 | SelfParam | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1848:30:1853:9 | { ... } | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1849:13:1852:13 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1850:20:1850:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:21:1850:24 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1850:21:1850:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:20:1851:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:21:1851:24 | self | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1851:21:1851:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:15:1857:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1857:15:1857:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1857:22:1857:26 | other | | file://:0:0:0:0 | & | -| main.rs:1857:22:1857:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1857:44:1859:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | -| main.rs:1858:13:1858:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1858:13:1858:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1858:13:1858:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1858:23:1858:27 | other | | file://:0:0:0:0 | & | -| main.rs:1858:23:1858:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1858:23:1858:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:34:1858:37 | self | | file://:0:0:0:0 | & | -| main.rs:1858:34:1858:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1858:34:1858:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:34:1858:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1858:44:1858:48 | other | | file://:0:0:0:0 | & | -| main.rs:1858:44:1858:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1858:44:1858:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:15:1861:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1861:15:1861:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1861:22:1861:26 | other | | file://:0:0:0:0 | & | -| main.rs:1861:22:1861:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1861:44:1863:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | -| main.rs:1862:13:1862:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1862:13:1862:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1862:13:1862:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1862:23:1862:27 | other | | file://:0:0:0:0 | & | -| main.rs:1862:23:1862:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1862:23:1862:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1862:34:1862:37 | self | | file://:0:0:0:0 | & | -| main.rs:1862:34:1862:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1862:34:1862:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1862:34:1862:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1862:44:1862:48 | other | | file://:0:0:0:0 | & | -| main.rs:1862:44:1862:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1862:44:1862:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:24:1867:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1867:24:1867:28 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1867:31:1867:35 | other | | file://:0:0:0:0 | & | -| main.rs:1867:31:1867:35 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1867:75:1869:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1867:75:1869:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1868:13:1868:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:13:1868:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1868:13:1868:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1868:14:1868:17 | self | | file://:0:0:0:0 | & | -| main.rs:1868:14:1868:17 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1868:14:1868:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:14:1868:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:23:1868:26 | self | | file://:0:0:0:0 | & | -| main.rs:1868:23:1868:26 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1868:23:1868:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:43:1868:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1868:43:1868:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:44:1868:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:45:1868:49 | other | | file://:0:0:0:0 | & | -| main.rs:1868:45:1868:49 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1868:45:1868:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:45:1868:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:55:1868:59 | other | | file://:0:0:0:0 | & | -| main.rs:1868:55:1868:59 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1868:55:1868:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:15:1871:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1871:15:1871:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1871:22:1871:26 | other | | file://:0:0:0:0 | & | -| main.rs:1871:22:1871:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1871:44:1873:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1872:13:1872:16 | self | | file://:0:0:0:0 | & | -| main.rs:1872:13:1872:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1872:13:1872:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:13:1872:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1872:13:1872:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1872:22:1872:26 | other | | file://:0:0:0:0 | & | -| main.rs:1872:22:1872:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1872:22:1872:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:33:1872:36 | self | | file://:0:0:0:0 | & | -| main.rs:1872:33:1872:36 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1872:33:1872:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:33:1872:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1872:42:1872:46 | other | | file://:0:0:0:0 | & | -| main.rs:1872:42:1872:46 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1872:42:1872:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1875:15:1875:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1875:15:1875:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1875:22:1875:26 | other | | file://:0:0:0:0 | & | -| main.rs:1875:22:1875:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1875:44:1877:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1166:18:1166:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1166:18:1166:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1166:26:1166:26 | y | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1166:26:1166:26 | y | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1166:26:1166:31 | y.m3() | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1168:13:1168:13 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1168:13:1168:13 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1168:17:1168:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1168:17:1168:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1168:30:1168:31 | S1 | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1169:13:1169:13 | s | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1169:17:1169:32 | call_trait_m1(...) | | main.rs:1081:5:1082:14 | S1 | +| main.rs:1169:31:1169:31 | x | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1169:31:1169:31 | x | A | main.rs:1081:5:1082:14 | S1 | +| main.rs:1171:13:1171:13 | x | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1171:13:1171:13 | x | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1171:17:1171:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1171:17:1171:34 | MyThing2 {...} | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1171:31:1171:32 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1172:13:1172:13 | s | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1172:13:1172:13 | s | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1172:17:1172:32 | call_trait_m1(...) | | main.rs:1071:5:1074:5 | MyThing | +| main.rs:1172:17:1172:32 | call_trait_m1(...) | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1172:31:1172:31 | x | | main.rs:1076:5:1079:5 | MyThing2 | +| main.rs:1172:31:1172:31 | x | A | main.rs:1083:5:1084:14 | S2 | +| main.rs:1189:22:1189:22 | x | | file://:0:0:0:0 | & | +| main.rs:1189:22:1189:22 | x | &T | main.rs:1189:11:1189:19 | T | +| main.rs:1189:35:1191:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1189:35:1191:5 | { ... } | &T | main.rs:1189:11:1189:19 | T | +| main.rs:1190:9:1190:9 | x | | file://:0:0:0:0 | & | +| main.rs:1190:9:1190:9 | x | &T | main.rs:1189:11:1189:19 | T | +| main.rs:1194:17:1194:20 | SelfParam | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1194:29:1196:9 | { ... } | | main.rs:1182:5:1183:14 | S2 | +| main.rs:1195:13:1195:14 | S2 | | main.rs:1182:5:1183:14 | S2 | +| main.rs:1199:21:1199:21 | x | | main.rs:1199:13:1199:14 | T1 | +| main.rs:1202:5:1204:5 | { ... } | | main.rs:1199:17:1199:18 | T2 | +| main.rs:1203:9:1203:9 | x | | main.rs:1199:13:1199:14 | T1 | +| main.rs:1203:9:1203:16 | x.into() | | main.rs:1199:17:1199:18 | T2 | +| main.rs:1207:13:1207:13 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1207:17:1207:18 | S1 | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1208:18:1208:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1208:18:1208:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1208:18:1208:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1208:18:1208:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1208:26:1208:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1208:26:1208:31 | id(...) | &T | main.rs:1179:5:1180:14 | S1 | +| main.rs:1208:29:1208:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1208:29:1208:30 | &x | &T | main.rs:1179:5:1180:14 | S1 | +| main.rs:1208:30:1208:30 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1210:13:1210:13 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1210:17:1210:18 | S1 | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1211:18:1211:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1211:18:1211:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1211:18:1211:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1211:18:1211:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1211:26:1211:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1211:26:1211:37 | id::<...>(...) | &T | main.rs:1179:5:1180:14 | S1 | +| main.rs:1211:35:1211:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1211:35:1211:36 | &x | &T | main.rs:1179:5:1180:14 | S1 | +| main.rs:1211:36:1211:36 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1213:13:1213:13 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1213:13:1213:13 | x | | main.rs:1185:5:1185:25 | dyn Trait | +| main.rs:1213:17:1213:18 | S1 | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1213:17:1213:18 | S1 | | main.rs:1185:5:1185:25 | dyn Trait | +| main.rs:1215:18:1215:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1215:18:1215:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1215:18:1215:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1215:18:1215:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1215:26:1215:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1215:26:1215:44 | id::<...>(...) | &T | main.rs:1185:5:1185:25 | dyn Trait | +| main.rs:1215:42:1215:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1215:42:1215:43 | &x | &T | main.rs:1179:5:1180:14 | S1 | +| main.rs:1215:42:1215:43 | &x | &T | main.rs:1185:5:1185:25 | dyn Trait | +| main.rs:1215:43:1215:43 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1215:43:1215:43 | x | | main.rs:1185:5:1185:25 | dyn Trait | +| main.rs:1217:13:1217:13 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1217:17:1217:18 | S1 | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1218:9:1218:25 | into::<...>(...) | | main.rs:1182:5:1183:14 | S2 | +| main.rs:1218:24:1218:24 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1220:13:1220:13 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1220:17:1220:18 | S1 | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1221:13:1221:13 | y | | main.rs:1182:5:1183:14 | S2 | +| main.rs:1221:21:1221:27 | into(...) | | main.rs:1182:5:1183:14 | S2 | +| main.rs:1221:26:1221:26 | x | | main.rs:1179:5:1180:14 | S1 | +| main.rs:1235:22:1235:25 | SelfParam | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1235:22:1235:25 | SelfParam | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1235:22:1235:25 | SelfParam | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1235:35:1242:9 | { ... } | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1236:13:1241:13 | match self { ... } | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1236:19:1236:22 | self | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1236:19:1236:22 | self | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1236:19:1236:22 | self | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1237:17:1237:38 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1237:17:1237:38 | ...::PairNone(...) | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1237:17:1237:38 | ...::PairNone(...) | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1237:43:1237:82 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1237:50:1237:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1237:50:1237:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1237:50:1237:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1237:50:1237:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1237:50:1237:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1237:50:1237:81 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1237:50:1237:81 | { ... } | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1238:17:1238:38 | ...::PairFst(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1238:17:1238:38 | ...::PairFst(...) | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1238:17:1238:38 | ...::PairFst(...) | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1238:37:1238:37 | _ | | main.rs:1234:10:1234:12 | Fst | +| main.rs:1238:43:1238:81 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1238:50:1238:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1238:50:1238:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1238:50:1238:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1238:50:1238:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1238:50:1238:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1238:50:1238:80 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1238:50:1238:80 | { ... } | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1239:17:1239:40 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1239:17:1239:40 | ...::PairSnd(...) | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1239:17:1239:40 | ...::PairSnd(...) | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1239:37:1239:39 | snd | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1239:45:1239:47 | snd | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1240:17:1240:44 | ...::PairBoth(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1240:17:1240:44 | ...::PairBoth(...) | Fst | main.rs:1234:10:1234:12 | Fst | +| main.rs:1240:17:1240:44 | ...::PairBoth(...) | Snd | main.rs:1234:15:1234:17 | Snd | +| main.rs:1240:38:1240:38 | _ | | main.rs:1234:10:1234:12 | Fst | +| main.rs:1240:41:1240:43 | snd | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1240:49:1240:51 | snd | | main.rs:1234:15:1234:17 | Snd | +| main.rs:1266:10:1266:10 | t | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1266:10:1266:10 | t | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1266:10:1266:10 | t | Snd | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1266:10:1266:10 | t | Snd.Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1266:10:1266:10 | t | Snd.Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1267:13:1267:13 | x | | main.rs:1251:5:1252:14 | S3 | +| main.rs:1267:17:1267:17 | t | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1267:17:1267:17 | t | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1267:17:1267:17 | t | Snd | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1267:17:1267:17 | t | Snd.Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1267:17:1267:17 | t | Snd.Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1267:17:1267:29 | t.unwrapSnd() | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1267:17:1267:29 | t.unwrapSnd() | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1267:17:1267:29 | t.unwrapSnd() | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1267:17:1267:41 | ... .unwrapSnd() | | main.rs:1251:5:1252:14 | S3 | +| main.rs:1268:18:1268:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1268:18:1268:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1268:18:1268:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1268:18:1268:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1268:26:1268:26 | x | | main.rs:1251:5:1252:14 | S3 | +| main.rs:1283:22:1283:25 | SelfParam | | main.rs:1281:5:1284:5 | Self [trait TraitWithAssocType] | +| main.rs:1291:22:1291:25 | SelfParam | | main.rs:1279:5:1279:28 | GenS | +| main.rs:1291:22:1291:25 | SelfParam | GenT | main.rs:1286:10:1286:15 | Output | +| main.rs:1291:44:1293:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1291:44:1293:9 | { ... } | E | main.rs:1286:10:1286:15 | Output | +| main.rs:1291:44:1293:9 | { ... } | T | main.rs:1286:10:1286:15 | Output | +| main.rs:1292:13:1292:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1292:13:1292:22 | Ok(...) | E | main.rs:1286:10:1286:15 | Output | +| main.rs:1292:13:1292:22 | Ok(...) | T | main.rs:1286:10:1286:15 | Output | +| main.rs:1292:16:1292:19 | self | | main.rs:1279:5:1279:28 | GenS | +| main.rs:1292:16:1292:19 | self | GenT | main.rs:1286:10:1286:15 | Output | +| main.rs:1292:16:1292:21 | self.0 | | main.rs:1286:10:1286:15 | Output | +| main.rs:1298:13:1298:14 | p1 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1298:13:1298:14 | p1 | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1298:13:1298:14 | p1 | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1298:26:1298:53 | ...::PairBoth(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1298:26:1298:53 | ...::PairBoth(...) | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1298:26:1298:53 | ...::PairBoth(...) | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1298:47:1298:48 | S1 | | main.rs:1245:5:1246:14 | S1 | +| main.rs:1298:51:1298:52 | S2 | | main.rs:1248:5:1249:14 | S2 | +| main.rs:1299:18:1299:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1299:18:1299:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1299:18:1299:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1299:18:1299:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1299:26:1299:27 | p1 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1299:26:1299:27 | p1 | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1299:26:1299:27 | p1 | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1302:13:1302:14 | p2 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1302:13:1302:14 | p2 | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1302:13:1302:14 | p2 | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1302:26:1302:47 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1302:26:1302:47 | ...::PairNone(...) | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1302:26:1302:47 | ...::PairNone(...) | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1303:18:1303:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1303:18:1303:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1303:18:1303:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1303:18:1303:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1303:26:1303:27 | p2 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1303:26:1303:27 | p2 | Fst | main.rs:1245:5:1246:14 | S1 | +| main.rs:1303:26:1303:27 | p2 | Snd | main.rs:1248:5:1249:14 | S2 | +| main.rs:1306:13:1306:14 | p3 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1306:13:1306:14 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1306:13:1306:14 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1306:34:1306:56 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1306:34:1306:56 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1306:34:1306:56 | ...::PairSnd(...) | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1306:54:1306:55 | S3 | | main.rs:1251:5:1252:14 | S3 | +| main.rs:1307:18:1307:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1307:18:1307:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1307:18:1307:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1307:18:1307:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1307:26:1307:27 | p3 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1307:26:1307:27 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1307:26:1307:27 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1310:13:1310:14 | p3 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1310:13:1310:14 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1310:13:1310:14 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1310:35:1310:56 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1310:35:1310:56 | ...::PairNone(...) | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1310:35:1310:56 | ...::PairNone(...) | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1311:18:1311:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1311:18:1311:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1311:18:1311:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1311:18:1311:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1311:26:1311:27 | p3 | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1311:26:1311:27 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1311:26:1311:27 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1313:11:1313:54 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1313:31:1313:53 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | +| main.rs:1313:31:1313:53 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | +| main.rs:1313:31:1313:53 | ...::PairSnd(...) | Snd | main.rs:1251:5:1252:14 | S3 | +| main.rs:1313:51:1313:52 | S3 | | main.rs:1251:5:1252:14 | S3 | +| main.rs:1315:13:1315:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1315:13:1315:13 | x | E | main.rs:1245:5:1246:14 | S1 | +| main.rs:1315:13:1315:13 | x | T | main.rs:1271:5:1271:34 | S4 | +| main.rs:1315:13:1315:13 | x | T.T41 | main.rs:1248:5:1249:14 | S2 | +| main.rs:1315:13:1315:13 | x | T.T42 | main.rs:1273:5:1273:22 | S5 | +| main.rs:1315:13:1315:13 | x | T.T42.T5 | main.rs:1248:5:1249:14 | S2 | +| main.rs:1317:13:1317:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1317:13:1317:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1317:13:1317:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1317:17:1317:26 | GenS(...) | | main.rs:1279:5:1279:28 | GenS | +| main.rs:1317:17:1317:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1317:17:1317:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1317:17:1317:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1317:17:1317:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1317:22:1317:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1330:16:1330:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1330:16:1330:24 | SelfParam | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | +| main.rs:1330:27:1330:31 | value | | main.rs:1328:19:1328:19 | S | +| main.rs:1332:21:1332:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1332:21:1332:29 | SelfParam | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | +| main.rs:1332:32:1332:36 | value | | main.rs:1328:19:1328:19 | S | +| main.rs:1333:13:1333:16 | self | | file://:0:0:0:0 | & | +| main.rs:1333:13:1333:16 | self | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | +| main.rs:1333:22:1333:26 | value | | main.rs:1328:19:1328:19 | S | +| main.rs:1339:16:1339:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1339:16:1339:24 | SelfParam | &T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1339:16:1339:24 | SelfParam | &T.T | main.rs:1337:10:1337:10 | T | +| main.rs:1339:27:1339:31 | value | | main.rs:1337:10:1337:10 | T | +| main.rs:1343:26:1345:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1343:26:1345:9 | { ... } | T | main.rs:1342:10:1342:10 | T | +| main.rs:1344:13:1344:30 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1344:13:1344:30 | ...::MyNone(...) | T | main.rs:1342:10:1342:10 | T | +| main.rs:1349:20:1349:23 | SelfParam | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1349:20:1349:23 | SelfParam | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1349:20:1349:23 | SelfParam | T.T | main.rs:1348:10:1348:10 | T | +| main.rs:1349:41:1354:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1349:41:1354:9 | { ... } | T | main.rs:1348:10:1348:10 | T | +| main.rs:1350:13:1353:13 | match self { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1350:13:1353:13 | match self { ... } | T | main.rs:1348:10:1348:10 | T | +| main.rs:1350:19:1350:22 | self | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1350:19:1350:22 | self | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1350:19:1350:22 | self | T.T | main.rs:1348:10:1348:10 | T | +| main.rs:1351:17:1351:34 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1351:17:1351:34 | ...::MyNone(...) | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1351:17:1351:34 | ...::MyNone(...) | T.T | main.rs:1348:10:1348:10 | T | +| main.rs:1351:39:1351:56 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1351:39:1351:56 | ...::MyNone(...) | T | main.rs:1348:10:1348:10 | T | +| main.rs:1352:17:1352:35 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1352:17:1352:35 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1352:17:1352:35 | ...::MySome(...) | T.T | main.rs:1348:10:1348:10 | T | +| main.rs:1352:34:1352:34 | x | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1352:34:1352:34 | x | T | main.rs:1348:10:1348:10 | T | +| main.rs:1352:40:1352:40 | x | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1352:40:1352:40 | x | T | main.rs:1348:10:1348:10 | T | +| main.rs:1361:13:1361:14 | x1 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1361:13:1361:14 | x1 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1361:18:1361:37 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1361:18:1361:37 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1362:18:1362:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1362:18:1362:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1362:18:1362:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1362:26:1362:27 | x1 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1362:26:1362:27 | x1 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1364:17:1364:18 | x2 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1364:17:1364:18 | x2 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1364:22:1364:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1364:22:1364:36 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1365:9:1365:10 | x2 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1365:9:1365:10 | x2 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1365:16:1365:16 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1366:18:1366:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1366:18:1366:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1366:26:1366:27 | x2 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1366:26:1366:27 | x2 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1369:17:1369:18 | x3 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1369:22:1369:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1370:9:1370:10 | x3 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1370:21:1370:21 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1371:18:1371:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1371:18:1371:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1371:18:1371:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1371:18:1371:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1371:26:1371:27 | x3 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1373:17:1373:18 | x4 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1373:17:1373:18 | x4 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1373:22:1373:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1373:22:1373:36 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1374:23:1374:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1374:23:1374:29 | &mut x4 | &T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1374:23:1374:29 | &mut x4 | &T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1374:28:1374:29 | x4 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1374:28:1374:29 | x4 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1374:32:1374:32 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1375:18:1375:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1375:18:1375:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1375:18:1375:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1375:18:1375:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1375:26:1375:27 | x4 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1375:26:1375:27 | x4 | T | main.rs:1357:5:1358:13 | S | +| main.rs:1377:13:1377:14 | x5 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1377:13:1377:14 | x5 | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1377:13:1377:14 | x5 | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1377:18:1377:58 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1377:18:1377:58 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1377:18:1377:58 | ...::MySome(...) | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1377:35:1377:57 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1377:35:1377:57 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1378:18:1378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1378:18:1378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1378:18:1378:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1378:18:1378:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1378:26:1378:27 | x5 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1378:26:1378:27 | x5 | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1378:26:1378:27 | x5 | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1378:26:1378:37 | x5.flatten() | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1378:26:1378:37 | x5.flatten() | T | main.rs:1357:5:1358:13 | S | +| main.rs:1380:13:1380:14 | x6 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1380:13:1380:14 | x6 | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1380:13:1380:14 | x6 | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1380:18:1380:58 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1380:18:1380:58 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1380:18:1380:58 | ...::MySome(...) | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1380:35:1380:57 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1380:35:1380:57 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1381:18:1381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1381:18:1381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1381:18:1381:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1381:18:1381:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1381:26:1381:61 | ...::flatten(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1381:26:1381:61 | ...::flatten(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1381:59:1381:60 | x6 | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1381:59:1381:60 | x6 | T | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1381:59:1381:60 | x6 | T.T | main.rs:1357:5:1358:13 | S | +| main.rs:1384:13:1384:19 | from_if | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1384:13:1384:19 | from_if | T | main.rs:1357:5:1358:13 | S | +| main.rs:1384:23:1388:9 | if ... {...} else {...} | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1384:23:1388:9 | if ... {...} else {...} | T | main.rs:1357:5:1358:13 | S | +| main.rs:1384:26:1384:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1384:26:1384:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1384:30:1384:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1384:32:1386:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1384:32:1386:9 | { ... } | T | main.rs:1357:5:1358:13 | S | +| main.rs:1385:13:1385:30 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1385:13:1385:30 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1386:16:1388:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1386:16:1388:9 | { ... } | T | main.rs:1357:5:1358:13 | S | +| main.rs:1387:13:1387:31 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1387:13:1387:31 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1387:30:1387:30 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1389:18:1389:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1389:18:1389:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1389:18:1389:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1389:18:1389:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1389:26:1389:32 | from_if | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1389:26:1389:32 | from_if | T | main.rs:1357:5:1358:13 | S | +| main.rs:1392:13:1392:22 | from_match | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1392:13:1392:22 | from_match | T | main.rs:1357:5:1358:13 | S | +| main.rs:1392:26:1395:9 | match ... { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1392:26:1395:9 | match ... { ... } | T | main.rs:1357:5:1358:13 | S | +| main.rs:1392:32:1392:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1392:32:1392:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1392:36:1392:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1393:13:1393:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1393:21:1393:38 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1393:21:1393:38 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1394:13:1394:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1394:22:1394:40 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1394:22:1394:40 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1394:39:1394:39 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1396:18:1396:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1396:18:1396:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1396:18:1396:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1396:18:1396:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1396:26:1396:35 | from_match | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1396:26:1396:35 | from_match | T | main.rs:1357:5:1358:13 | S | +| main.rs:1399:13:1399:21 | from_loop | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1399:13:1399:21 | from_loop | T | main.rs:1357:5:1358:13 | S | +| main.rs:1399:25:1404:9 | loop { ... } | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1399:25:1404:9 | loop { ... } | T | main.rs:1357:5:1358:13 | S | +| main.rs:1400:16:1400:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:16:1400:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1400:20:1400:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1401:23:1401:40 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1401:23:1401:40 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1403:19:1403:37 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1403:19:1403:37 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | +| main.rs:1403:36:1403:36 | S | | main.rs:1357:5:1358:13 | S | +| main.rs:1405:18:1405:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1405:18:1405:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1405:18:1405:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1405:18:1405:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1405:26:1405:34 | from_loop | | main.rs:1322:5:1326:5 | MyOption | +| main.rs:1405:26:1405:34 | from_loop | T | main.rs:1357:5:1358:13 | S | +| main.rs:1423:15:1423:18 | SelfParam | | main.rs:1411:5:1412:19 | S | +| main.rs:1423:15:1423:18 | SelfParam | T | main.rs:1422:10:1422:10 | T | +| main.rs:1423:26:1425:9 | { ... } | | main.rs:1422:10:1422:10 | T | +| main.rs:1424:13:1424:16 | self | | main.rs:1411:5:1412:19 | S | +| main.rs:1424:13:1424:16 | self | T | main.rs:1422:10:1422:10 | T | +| main.rs:1424:13:1424:18 | self.0 | | main.rs:1422:10:1422:10 | T | +| main.rs:1427:15:1427:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1427:15:1427:19 | SelfParam | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1427:15:1427:19 | SelfParam | &T.T | main.rs:1422:10:1422:10 | T | +| main.rs:1427:28:1429:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1427:28:1429:9 | { ... } | &T | main.rs:1422:10:1422:10 | T | +| main.rs:1428:13:1428:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1428:13:1428:19 | &... | &T | main.rs:1422:10:1422:10 | T | +| main.rs:1428:14:1428:17 | self | | file://:0:0:0:0 | & | +| main.rs:1428:14:1428:17 | self | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1428:14:1428:17 | self | &T.T | main.rs:1422:10:1422:10 | T | +| main.rs:1428:14:1428:19 | self.0 | | main.rs:1422:10:1422:10 | T | +| main.rs:1431:15:1431:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1431:15:1431:25 | SelfParam | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1431:15:1431:25 | SelfParam | &T.T | main.rs:1422:10:1422:10 | T | +| main.rs:1431:34:1433:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1431:34:1433:9 | { ... } | &T | main.rs:1422:10:1422:10 | T | +| main.rs:1432:13:1432:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1432:13:1432:19 | &... | &T | main.rs:1422:10:1422:10 | T | +| main.rs:1432:14:1432:17 | self | | file://:0:0:0:0 | & | +| main.rs:1432:14:1432:17 | self | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1432:14:1432:17 | self | &T.T | main.rs:1422:10:1422:10 | T | +| main.rs:1432:14:1432:19 | self.0 | | main.rs:1422:10:1422:10 | T | +| main.rs:1437:29:1437:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1437:29:1437:33 | SelfParam | &T | main.rs:1436:5:1439:5 | Self [trait ATrait] | +| main.rs:1438:33:1438:36 | SelfParam | | main.rs:1436:5:1439:5 | Self [trait ATrait] | +| main.rs:1444:29:1444:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1444:29:1444:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1444:29:1444:33 | SelfParam | &T.&T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1444:43:1446:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:13:1445:22 | (...) | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1445:13:1445:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:14:1445:21 | * ... | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1445:15:1445:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1445:15:1445:21 | (...) | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1445:16:1445:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1445:16:1445:20 | * ... | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1445:17:1445:20 | self | | file://:0:0:0:0 | & | +| main.rs:1445:17:1445:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1445:17:1445:20 | self | &T.&T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1449:33:1449:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1449:33:1449:36 | SelfParam | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1449:46:1451:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1450:13:1450:19 | (...) | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1450:13:1450:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1450:14:1450:18 | * ... | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1450:15:1450:18 | self | | file://:0:0:0:0 | & | +| main.rs:1450:15:1450:18 | self | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1455:13:1455:14 | x1 | | main.rs:1411:5:1412:19 | S | +| main.rs:1455:13:1455:14 | x1 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1455:18:1455:22 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1455:18:1455:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1455:20:1455:21 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1456:18:1456:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1456:18:1456:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1456:18:1456:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1456:18:1456:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1456:26:1456:27 | x1 | | main.rs:1411:5:1412:19 | S | +| main.rs:1456:26:1456:27 | x1 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1456:26:1456:32 | x1.m1() | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1458:13:1458:14 | x2 | | main.rs:1411:5:1412:19 | S | +| main.rs:1458:13:1458:14 | x2 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1458:18:1458:22 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1458:18:1458:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1458:20:1458:21 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1460:18:1460:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1460:18:1460:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1460:18:1460:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1460:18:1460:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1460:26:1460:27 | x2 | | main.rs:1411:5:1412:19 | S | +| main.rs:1460:26:1460:27 | x2 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1460:26:1460:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1460:26:1460:32 | x2.m2() | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1461:18:1461:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1461:18:1461:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1461:18:1461:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1461:18:1461:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1461:26:1461:27 | x2 | | main.rs:1411:5:1412:19 | S | +| main.rs:1461:26:1461:27 | x2 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1461:26:1461:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1461:26:1461:32 | x2.m3() | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1463:13:1463:14 | x3 | | main.rs:1411:5:1412:19 | S | +| main.rs:1463:13:1463:14 | x3 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1463:18:1463:22 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1463:18:1463:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1463:20:1463:21 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1465:18:1465:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1465:18:1465:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1465:18:1465:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1465:18:1465:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1465:26:1465:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1465:26:1465:41 | ...::m2(...) | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1465:38:1465:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1465:38:1465:40 | &x3 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1465:38:1465:40 | &x3 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1465:39:1465:40 | x3 | | main.rs:1411:5:1412:19 | S | +| main.rs:1465:39:1465:40 | x3 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1466:18:1466:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1466:18:1466:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1466:18:1466:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1466:18:1466:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1466:26:1466:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1466:26:1466:41 | ...::m3(...) | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1466:38:1466:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1466:38:1466:40 | &x3 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1466:38:1466:40 | &x3 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1466:39:1466:40 | x3 | | main.rs:1411:5:1412:19 | S | +| main.rs:1466:39:1466:40 | x3 | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1468:13:1468:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1468:13:1468:14 | x4 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1468:13:1468:14 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1468:18:1468:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1468:18:1468:23 | &... | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1468:18:1468:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1468:19:1468:23 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1468:19:1468:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1468:21:1468:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1470:18:1470:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1470:18:1470:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1470:18:1470:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1470:18:1470:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1470:26:1470:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1470:26:1470:27 | x4 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1470:26:1470:27 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1470:26:1470:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1470:26:1470:32 | x4.m2() | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1471:18:1471:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1471:18:1471:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1471:18:1471:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1471:18:1471:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1471:26:1471:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1471:26:1471:27 | x4 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1471:26:1471:27 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1471:26:1471:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1471:26:1471:32 | x4.m3() | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1473:13:1473:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1473:13:1473:14 | x5 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1473:13:1473:14 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1473:18:1473:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1473:18:1473:23 | &... | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1473:18:1473:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1473:19:1473:23 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1473:19:1473:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1473:21:1473:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1475:18:1475:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1475:18:1475:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1475:18:1475:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1475:18:1475:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1475:26:1475:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1475:26:1475:27 | x5 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1475:26:1475:27 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1475:26:1475:32 | x5.m1() | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1476:18:1476:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1476:18:1476:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1476:18:1476:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1476:18:1476:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1476:26:1476:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1476:26:1476:27 | x5 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1476:26:1476:27 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1476:26:1476:29 | x5.0 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1478:13:1478:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1478:13:1478:14 | x6 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1478:13:1478:14 | x6 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1478:18:1478:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1478:18:1478:23 | &... | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1478:18:1478:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1478:19:1478:23 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1478:19:1478:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1478:21:1478:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1481:18:1481:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1481:18:1481:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1481:18:1481:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1481:18:1481:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1481:26:1481:30 | (...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1481:26:1481:30 | (...) | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1481:26:1481:35 | ... .m1() | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1481:27:1481:29 | * ... | | main.rs:1411:5:1412:19 | S | +| main.rs:1481:27:1481:29 | * ... | T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1481:28:1481:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1481:28:1481:29 | x6 | &T | main.rs:1411:5:1412:19 | S | +| main.rs:1481:28:1481:29 | x6 | &T.T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1483:13:1483:14 | x7 | | main.rs:1411:5:1412:19 | S | +| main.rs:1483:13:1483:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1483:13:1483:14 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1483:18:1483:23 | S(...) | | main.rs:1411:5:1412:19 | S | +| main.rs:1483:18:1483:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1483:18:1483:23 | S(...) | T.&T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1483:20:1483:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1483:20:1483:22 | &S2 | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1483:21:1483:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1486:13:1486:13 | t | | file://:0:0:0:0 | & | +| main.rs:1486:13:1486:13 | t | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1486:17:1486:18 | x7 | | main.rs:1411:5:1412:19 | S | +| main.rs:1486:17:1486:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1486:17:1486:18 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1486:17:1486:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1486:17:1486:23 | x7.m1() | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1487:18:1487:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1487:18:1487:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1487:18:1487:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1487:18:1487:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1487:26:1487:27 | x7 | | main.rs:1411:5:1412:19 | S | +| main.rs:1487:26:1487:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1487:26:1487:27 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1489:13:1489:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1489:26:1489:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1489:26:1489:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1489:26:1489:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1493:13:1493:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1493:13:1493:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1493:17:1493:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1493:17:1493:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1493:17:1493:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1495:13:1495:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1495:13:1495:20 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1495:24:1495:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1495:24:1495:39 | &... | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1495:25:1495:39 | MyInt {...} | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1495:36:1495:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1495:36:1495:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:13:1497:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:17:1497:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1497:17:1497:24 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1497:17:1497:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1498:18:1498:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1498:18:1498:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1498:26:1498:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1501:13:1501:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1501:13:1501:20 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1501:24:1501:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1501:24:1501:39 | &... | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1501:25:1501:39 | MyInt {...} | | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1501:36:1501:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1501:36:1501:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1502:13:1502:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1502:17:1502:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1502:17:1502:24 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | +| main.rs:1502:17:1502:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1503:18:1503:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1503:18:1503:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1503:26:1503:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1510:16:1510:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1510:16:1510:20 | SelfParam | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | +| main.rs:1513:16:1513:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1513:16:1513:20 | SelfParam | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | +| main.rs:1513:32:1515:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1513:32:1515:9 | { ... } | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | +| main.rs:1514:13:1514:16 | self | | file://:0:0:0:0 | & | +| main.rs:1514:13:1514:16 | self | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | +| main.rs:1514:13:1514:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1514:13:1514:22 | self.foo() | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | +| main.rs:1522:16:1522:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1522:16:1522:20 | SelfParam | &T | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1522:36:1524:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1522:36:1524:9 | { ... } | &T | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1523:13:1523:16 | self | | file://:0:0:0:0 | & | +| main.rs:1523:13:1523:16 | self | &T | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1528:13:1528:13 | x | | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1528:17:1528:24 | MyStruct | | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1529:9:1529:9 | x | | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1529:9:1529:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1529:9:1529:15 | x.bar() | &T | main.rs:1518:5:1518:20 | MyStruct | +| main.rs:1539:16:1539:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1539:16:1539:20 | SelfParam | &T | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1539:16:1539:20 | SelfParam | &T.T | main.rs:1538:10:1538:10 | T | +| main.rs:1539:32:1541:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1539:32:1541:9 | { ... } | &T | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1539:32:1541:9 | { ... } | &T.T | main.rs:1538:10:1538:10 | T | +| main.rs:1540:13:1540:16 | self | | file://:0:0:0:0 | & | +| main.rs:1540:13:1540:16 | self | &T | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1540:13:1540:16 | self | &T.T | main.rs:1538:10:1538:10 | T | +| main.rs:1545:13:1545:13 | x | | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1545:13:1545:13 | x | T | main.rs:1534:5:1534:13 | S | +| main.rs:1545:17:1545:27 | MyStruct(...) | | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1545:17:1545:27 | MyStruct(...) | T | main.rs:1534:5:1534:13 | S | +| main.rs:1545:26:1545:26 | S | | main.rs:1534:5:1534:13 | S | +| main.rs:1546:9:1546:9 | x | | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1546:9:1546:9 | x | T | main.rs:1534:5:1534:13 | S | +| main.rs:1546:9:1546:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1546:9:1546:15 | x.foo() | &T | main.rs:1536:5:1536:26 | MyStruct | +| main.rs:1546:9:1546:15 | x.foo() | &T.T | main.rs:1534:5:1534:13 | S | +| main.rs:1557:17:1557:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1557:17:1557:25 | SelfParam | &T | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1558:13:1558:16 | self | | file://:0:0:0:0 | & | +| main.rs:1558:13:1558:16 | self | &T | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1558:13:1558:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1558:13:1558:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1558:25:1558:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1558:26:1558:29 | self | | file://:0:0:0:0 | & | +| main.rs:1558:26:1558:29 | self | &T | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1558:26:1558:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1565:15:1565:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1565:15:1565:19 | SelfParam | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1565:31:1567:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1565:31:1567:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1566:13:1566:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1566:13:1566:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1566:13:1566:19 | &... | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1566:13:1566:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1566:13:1566:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1566:13:1566:19 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1566:14:1566:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1566:14:1566:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1566:14:1566:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1566:14:1566:19 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1566:15:1566:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1566:15:1566:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1566:15:1566:19 | &self | &T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1566:16:1566:19 | self | | file://:0:0:0:0 | & | +| main.rs:1566:16:1566:19 | self | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1569:15:1569:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1569:15:1569:25 | SelfParam | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1569:37:1571:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1569:37:1571:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1570:13:1570:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1570:13:1570:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1570:13:1570:19 | &... | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1570:13:1570:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1570:13:1570:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1570:13:1570:19 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1570:14:1570:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1570:14:1570:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1570:14:1570:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1570:14:1570:19 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1570:15:1570:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1570:15:1570:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1570:15:1570:19 | &self | &T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1570:16:1570:19 | self | | file://:0:0:0:0 | & | +| main.rs:1570:16:1570:19 | self | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1573:15:1573:15 | x | | file://:0:0:0:0 | & | +| main.rs:1573:15:1573:15 | x | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1573:34:1575:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1573:34:1575:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1574:13:1574:13 | x | | file://:0:0:0:0 | & | +| main.rs:1574:13:1574:13 | x | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1577:15:1577:15 | x | | file://:0:0:0:0 | & | +| main.rs:1577:15:1577:15 | x | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1577:34:1579:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1577:34:1579:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1578:13:1578:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1578:13:1578:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1578:13:1578:16 | &... | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1578:13:1578:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1578:13:1578:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1578:13:1578:16 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1578:14:1578:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1578:14:1578:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1578:14:1578:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1578:14:1578:16 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1578:15:1578:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1578:15:1578:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1578:15:1578:16 | &x | &T.&T | main.rs:1562:5:1562:13 | S | +| main.rs:1578:16:1578:16 | x | | file://:0:0:0:0 | & | +| main.rs:1578:16:1578:16 | x | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1583:13:1583:13 | x | | main.rs:1562:5:1562:13 | S | +| main.rs:1583:17:1583:20 | S {...} | | main.rs:1562:5:1562:13 | S | +| main.rs:1584:9:1584:9 | x | | main.rs:1562:5:1562:13 | S | +| main.rs:1584:9:1584:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1584:9:1584:14 | x.f1() | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1585:9:1585:9 | x | | main.rs:1562:5:1562:13 | S | +| main.rs:1585:9:1585:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1585:9:1585:14 | x.f2() | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1586:9:1586:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1586:9:1586:17 | ...::f3(...) | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1586:15:1586:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1586:15:1586:16 | &x | &T | main.rs:1562:5:1562:13 | S | +| main.rs:1586:16:1586:16 | x | | main.rs:1562:5:1562:13 | S | +| main.rs:1588:13:1588:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1588:17:1588:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1588:18:1588:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1588:18:1588:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1588:19:1588:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1588:19:1588:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1588:19:1588:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1588:20:1588:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1588:20:1588:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1588:21:1588:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1592:17:1592:20 | flag | | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1592:24:1592:41 | ...::default(...) | | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1593:22:1593:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1593:22:1593:30 | &mut flag | &T | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1593:27:1593:30 | flag | | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1594:18:1594:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1594:18:1594:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1594:18:1594:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1594:18:1594:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1594:26:1594:29 | flag | | main.rs:1551:5:1554:5 | MyFlag | +| main.rs:1609:43:1612:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1609:43:1612:5 | { ... } | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1609:43:1612:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1610:13:1610:13 | x | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1610:17:1610:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1610:17:1610:30 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1610:17:1610:31 | TryExpr | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1610:28:1610:29 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1611:9:1611:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1611:9:1611:22 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1611:9:1611:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1611:20:1611:21 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1616:46:1620:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1616:46:1620:5 | { ... } | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1616:46:1620:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1617:13:1617:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1617:13:1617:13 | x | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1617:17:1617:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1617:17:1617:30 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1617:28:1617:29 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1618:13:1618:13 | y | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1618:17:1618:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1618:17:1618:17 | x | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1618:17:1618:18 | TryExpr | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1619:9:1619:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1619:9:1619:22 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1619:9:1619:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1619:20:1619:21 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1624:40:1629:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1624:40:1629:5 | { ... } | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1624:40:1629:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1625:13:1625:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1625:13:1625:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1625:13:1625:13 | x | T.T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1625:17:1625:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1625:17:1625:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1625:17:1625:42 | ...::Ok(...) | T.T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1625:28:1625:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1625:28:1625:41 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1625:39:1625:40 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1627:17:1627:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1627:17:1627:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1627:17:1627:17 | x | T.T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1627:17:1627:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1627:17:1627:18 | TryExpr | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1627:17:1627:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1627:24:1627:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1627:24:1627:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1628:9:1628:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1628:9:1628:22 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1628:9:1628:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1628:20:1628:21 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1633:30:1633:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1633:30:1633:34 | input | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1633:30:1633:34 | input | T | main.rs:1633:20:1633:27 | T | +| main.rs:1633:69:1640:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1633:69:1640:5 | { ... } | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1633:69:1640:5 | { ... } | T | main.rs:1633:20:1633:27 | T | +| main.rs:1634:13:1634:17 | value | | main.rs:1633:20:1633:27 | T | +| main.rs:1634:21:1634:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1634:21:1634:25 | input | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1634:21:1634:25 | input | T | main.rs:1633:20:1633:27 | T | +| main.rs:1634:21:1634:26 | TryExpr | | main.rs:1633:20:1633:27 | T | +| main.rs:1635:22:1635:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1635:22:1635:38 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1635:22:1635:38 | ...::Ok(...) | T | main.rs:1633:20:1633:27 | T | +| main.rs:1635:22:1638:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1635:22:1638:10 | ... .and_then(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1635:33:1635:37 | value | | main.rs:1633:20:1633:27 | T | +| main.rs:1635:49:1638:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Output).E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1635:53:1638:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1635:53:1638:9 | { ... } | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1636:22:1636:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1636:22:1636:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1636:22:1636:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1636:22:1636:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1637:13:1637:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1637:13:1637:34 | ...::Ok::<...>(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1639:9:1639:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1639:9:1639:23 | ...::Err(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1639:9:1639:23 | ...::Err(...) | T | main.rs:1633:20:1633:27 | T | +| main.rs:1639:21:1639:22 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1644:16:1644:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1644:16:1644:33 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1644:16:1644:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1644:27:1644:32 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1644:37:1644:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1644:37:1644:52 | try_same_error(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1644:37:1644:52 | try_same_error(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1645:22:1645:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1645:22:1645:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1645:22:1645:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1645:22:1645:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1645:30:1645:35 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1648:16:1648:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1648:16:1648:33 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1648:16:1648:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1648:27:1648:32 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1648:37:1648:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1648:37:1648:55 | try_convert_error(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1648:37:1648:55 | try_convert_error(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1649:22:1649:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1649:22:1649:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1649:22:1649:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1649:22:1649:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1649:30:1649:35 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1652:16:1652:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1652:16:1652:33 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1652:16:1652:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1652:27:1652:32 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1652:37:1652:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1652:37:1652:49 | try_chained(...) | E | main.rs:1604:5:1605:14 | S2 | +| main.rs:1652:37:1652:49 | try_chained(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1653:22:1653:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1653:22:1653:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1653:22:1653:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1653:22:1653:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1653:30:1653:35 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:16:1656:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1656:16:1656:33 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:16:1656:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:27:1656:32 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:37:1656:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1656:37:1656:63 | try_complex(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:37:1656:63 | try_complex(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:49:1656:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1656:49:1656:62 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:49:1656:62 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | +| main.rs:1656:60:1656:61 | S1 | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1657:22:1657:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1657:22:1657:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1657:22:1657:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1657:22:1657:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1657:30:1657:35 | result | | main.rs:1601:5:1602:14 | S1 | +| main.rs:1664:13:1664:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1664:22:1664:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:13:1665:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:17:1665:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1666:13:1666:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1666:17:1666:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1666:17:1666:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1666:21:1666:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1667:13:1667:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1667:17:1667:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1667:17:1667:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1668:13:1668:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1668:17:1668:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1669:13:1669:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1669:13:1669:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1669:21:1669:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1669:21:1669:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1670:13:1670:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1670:17:1670:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1671:13:1671:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1671:17:1671:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1672:13:1672:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1672:17:1672:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:13:1679:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:17:1679:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:17:1679:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:25:1679:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1680:13:1680:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1680:17:1680:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1680:17:1680:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1680:25:1680:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1682:17:1682:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1683:13:1683:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1683:20:1683:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1683:20:1683:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1683:26:1683:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1684:12:1684:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1685:17:1685:17 | z | | file://:0:0:0:0 | () | +| main.rs:1685:21:1685:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1685:22:1685:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1685:22:1685:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1685:26:1685:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1687:13:1687:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1687:13:1687:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1687:17:1687:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1689:9:1689:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:30:1705:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1704:13:1704:31 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1704:23:1704:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1704:23:1704:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1704:29:1704:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1704:29:1704:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1711:16:1711:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1711:22:1711:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1711:41:1716:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1712:13:1715:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1713:20:1713:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1713:20:1713:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1713:20:1713:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1713:29:1713:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1713:29:1713:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1714:20:1714:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1714:20:1714:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1714:20:1714:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1714:29:1714:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1714:29:1714:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:23:1721:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1721:23:1721:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1721:34:1721:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1722:13:1722:16 | self | | file://:0:0:0:0 | & | +| main.rs:1722:13:1722:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1722:13:1722:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:13:1722:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1722:23:1722:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1722:23:1722:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1723:13:1723:16 | self | | file://:0:0:0:0 | & | +| main.rs:1723:13:1723:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1723:13:1723:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1723:13:1723:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1723:23:1723:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1723:23:1723:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1729:16:1729:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1729:22:1729:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1729:41:1734:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1730:13:1733:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1731:20:1731:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1731:20:1731:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:20:1731:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:29:1731:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1731:29:1731:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1732:20:1732:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1732:20:1732:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1732:20:1732:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1732:29:1732:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1732:29:1732:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:23:1739:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1739:23:1739:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1739:34:1739:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1740:13:1740:16 | self | | file://:0:0:0:0 | & | +| main.rs:1740:13:1740:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1740:13:1740:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1740:13:1740:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1740:23:1740:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1740:23:1740:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1741:13:1741:16 | self | | file://:0:0:0:0 | & | +| main.rs:1741:13:1741:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1741:13:1741:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1741:13:1741:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1741:23:1741:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1741:23:1741:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1747:16:1747:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1747:22:1747:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1747:41:1752:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1748:13:1751:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1749:20:1749:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1749:20:1749:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1749:20:1749:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1749:29:1749:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1749:29:1749:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1750:20:1750:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1750:20:1750:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1750:20:1750:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1750:29:1750:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1750:29:1750:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:23:1756:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1756:23:1756:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1756:34:1756:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1757:13:1757:16 | self | | file://:0:0:0:0 | & | +| main.rs:1757:13:1757:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1757:13:1757:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:13:1757:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1757:23:1757:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1757:23:1757:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:13:1758:16 | self | | file://:0:0:0:0 | & | +| main.rs:1758:13:1758:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1758:13:1758:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:13:1758:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1758:23:1758:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1758:23:1758:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:16:1764:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1764:22:1764:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1764:41:1769:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1765:13:1768:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1766:20:1766:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1766:20:1766:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:20:1766:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:29:1766:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1766:29:1766:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:20:1767:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1767:20:1767:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:20:1767:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:29:1767:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1767:29:1767:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:23:1773:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1773:23:1773:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1773:34:1773:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1774:13:1774:16 | self | | file://:0:0:0:0 | & | +| main.rs:1774:13:1774:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1774:13:1774:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:13:1774:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1774:23:1774:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1774:23:1774:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:13:1775:16 | self | | file://:0:0:0:0 | & | +| main.rs:1775:13:1775:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1775:13:1775:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:13:1775:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1775:23:1775:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1775:23:1775:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:16:1781:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1781:22:1781:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1781:41:1786:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1782:13:1785:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1783:20:1783:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1783:20:1783:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:20:1783:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:29:1783:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1783:29:1783:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:20:1784:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1784:20:1784:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:20:1784:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:29:1784:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1784:29:1784:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:23:1790:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1790:23:1790:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1790:34:1790:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1791:13:1791:16 | self | | file://:0:0:0:0 | & | +| main.rs:1791:13:1791:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1791:13:1791:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:13:1791:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1791:23:1791:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1791:23:1791:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1792:13:1792:16 | self | | file://:0:0:0:0 | & | +| main.rs:1792:13:1792:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1792:13:1792:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1792:13:1792:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1792:23:1792:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1792:23:1792:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:19:1798:22 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1798:25:1798:27 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1798:44:1803:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1799:13:1802:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1800:20:1800:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1800:20:1800:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:20:1800:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:29:1800:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1800:29:1800:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:20:1801:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1801:20:1801:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:20:1801:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:29:1801:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1801:29:1801:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:26:1807:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1807:26:1807:34 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1807:37:1807:39 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1808:13:1808:16 | self | | file://:0:0:0:0 | & | +| main.rs:1808:13:1808:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1808:13:1808:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1808:13:1808:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1808:23:1808:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1808:23:1808:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:13:1809:16 | self | | file://:0:0:0:0 | & | +| main.rs:1809:13:1809:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1809:13:1809:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:13:1809:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1809:23:1809:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1809:23:1809:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1815:18:1815:21 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1815:24:1815:26 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1815:43:1820:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1816:13:1819:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1817:20:1817:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1817:20:1817:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1817:20:1817:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1817:29:1817:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1817:29:1817:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1818:20:1818:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1818:20:1818:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1818:20:1818:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1818:29:1818:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1818:29:1818:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:25:1824:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1824:25:1824:33 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1824:36:1824:38 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1825:13:1825:16 | self | | file://:0:0:0:0 | & | +| main.rs:1825:13:1825:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1825:13:1825:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1825:13:1825:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1825:23:1825:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1825:23:1825:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1826:13:1826:16 | self | | file://:0:0:0:0 | & | +| main.rs:1826:13:1826:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1826:13:1826:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1826:13:1826:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1826:23:1826:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1826:23:1826:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:19:1832:22 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1832:25:1832:27 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1832:44:1837:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1833:13:1836:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1834:20:1834:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1834:20:1834:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1834:20:1834:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1834:29:1834:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1834:29:1834:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1835:20:1835:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1835:20:1835:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1835:20:1835:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1835:29:1835:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1835:29:1835:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:26:1841:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1841:26:1841:34 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1841:37:1841:39 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1842:13:1842:16 | self | | file://:0:0:0:0 | & | +| main.rs:1842:13:1842:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1842:13:1842:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1842:13:1842:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1842:23:1842:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1842:23:1842:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1843:13:1843:16 | self | | file://:0:0:0:0 | & | +| main.rs:1843:13:1843:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1843:13:1843:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1843:13:1843:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1843:23:1843:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1843:23:1843:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1849:16:1849:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1849:22:1849:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1849:40:1854:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1850:13:1853:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1851:20:1851:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1851:20:1851:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:20:1851:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1851:30:1851:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1852:20:1852:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1852:20:1852:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:20:1852:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:30:1852:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1858:23:1858:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1858:23:1858:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1858:34:1858:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1859:13:1859:16 | self | | file://:0:0:0:0 | & | +| main.rs:1859:13:1859:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1859:13:1859:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1859:13:1859:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1859:24:1859:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1860:13:1860:16 | self | | file://:0:0:0:0 | & | +| main.rs:1860:13:1860:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1860:13:1860:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:13:1860:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1860:24:1860:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1866:16:1866:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1866:22:1866:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1866:40:1871:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1867:13:1870:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1868:20:1868:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1868:20:1868:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:20:1868:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:30:1868:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1869:20:1869:23 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1869:20:1869:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:20:1869:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:30:1869:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1875:23:1875:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1875:23:1875:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1875:34:1875:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1876:13:1876:16 | self | | file://:0:0:0:0 | & | -| main.rs:1876:13:1876:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | +| main.rs:1876:13:1876:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | | main.rs:1876:13:1876:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:13:1876:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1876:13:1876:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1876:23:1876:27 | other | | file://:0:0:0:0 | & | -| main.rs:1876:23:1876:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1876:23:1876:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:34:1876:37 | self | | file://:0:0:0:0 | & | -| main.rs:1876:34:1876:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1876:34:1876:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:34:1876:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1876:44:1876:48 | other | | file://:0:0:0:0 | & | -| main.rs:1876:44:1876:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1876:44:1876:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:15:1879:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1879:15:1879:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1879:22:1879:26 | other | | file://:0:0:0:0 | & | -| main.rs:1879:22:1879:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1879:44:1881:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1880:13:1880:16 | self | | file://:0:0:0:0 | & | -| main.rs:1880:13:1880:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1880:13:1880:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1880:13:1880:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1880:22:1880:26 | other | | file://:0:0:0:0 | & | -| main.rs:1880:22:1880:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1880:22:1880:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:33:1880:36 | self | | file://:0:0:0:0 | & | -| main.rs:1880:33:1880:36 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1880:33:1880:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:33:1880:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1880:42:1880:46 | other | | file://:0:0:0:0 | & | -| main.rs:1880:42:1880:46 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1880:42:1880:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1883:15:1883:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1883:15:1883:19 | SelfParam | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1883:22:1883:26 | other | | file://:0:0:0:0 | & | -| main.rs:1883:22:1883:26 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1883:44:1885:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1884:13:1884:16 | self | | file://:0:0:0:0 | & | -| main.rs:1884:13:1884:16 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1884:13:1884:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:13:1884:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1884:13:1884:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1884:23:1884:27 | other | | file://:0:0:0:0 | & | -| main.rs:1884:23:1884:27 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1884:23:1884:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:34:1884:37 | self | | file://:0:0:0:0 | & | -| main.rs:1884:34:1884:37 | self | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1884:34:1884:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:34:1884:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1884:44:1884:48 | other | | file://:0:0:0:0 | & | -| main.rs:1884:44:1884:48 | other | &T | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1884:44:1884:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:26:1888:26 | a | | main.rs:1888:18:1888:23 | T | -| main.rs:1888:32:1888:32 | b | | main.rs:1888:18:1888:23 | T | -| main.rs:1888:51:1890:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:1889:9:1889:9 | a | | main.rs:1888:18:1888:23 | T | -| main.rs:1889:9:1889:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:1889:13:1889:13 | b | | main.rs:1888:18:1888:23 | T | -| main.rs:1896:13:1896:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1896:22:1896:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1896:23:1896:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1896:23:1896:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1896:31:1896:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1897:13:1897:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1897:22:1897:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1897:23:1897:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1897:23:1897:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1897:31:1897:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1898:13:1898:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1898:22:1898:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1898:23:1898:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1898:23:1898:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1898:30:1898:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1899:13:1899:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1899:22:1899:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1899:23:1899:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1899:23:1899:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1899:31:1899:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1900:13:1900:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1900:22:1900:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1900:23:1900:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1900:23:1900:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1900:30:1900:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:13:1901:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1901:22:1901:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1901:23:1901:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:23:1901:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1901:32:1901:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:13:1904:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:23:1904:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:23:1904:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:31:1904:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:13:1905:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:23:1905:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:23:1905:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:31:1905:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:13:1906:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:23:1906:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:23:1906:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:31:1906:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:13:1907:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:23:1907:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:23:1907:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:31:1907:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1908:13:1908:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1908:23:1908:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1908:23:1908:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1908:31:1908:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1909:39:1909:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1909:45:1909:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:17:1912:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:34:1912:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:9:1913:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:9:1913:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1913:27:1913:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1915:17:1915:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1915:34:1915:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:9:1916:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:9:1916:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1916:27:1916:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1918:17:1918:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1918:34:1918:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1919:9:1919:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1919:9:1919:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1919:27:1919:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:17:1921:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:34:1921:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:9:1922:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:9:1922:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1922:27:1922:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:17:1924:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:34:1924:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:9:1925:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:9:1925:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1925:27:1925:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:13:1928:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:26:1928:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:26:1928:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:34:1928:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:13:1929:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:25:1929:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:25:1929:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:33:1929:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:13:1930:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:26:1930:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:26:1930:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:34:1930:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1931:13:1931:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1931:23:1931:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1931:23:1931:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1931:32:1931:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:13:1932:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:23:1932:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:23:1932:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:32:1932:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1935:17:1935:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1935:37:1935:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1936:9:1936:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1936:9:1936:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1936:30:1936:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1938:17:1938:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1938:36:1938:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:9:1939:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:9:1939:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1939:29:1939:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1941:17:1941:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1941:37:1941:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:9:1942:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:9:1942:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1942:30:1942:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:17:1944:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:34:1944:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:9:1945:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:9:1945:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1945:28:1945:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1947:17:1947:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1947:34:1947:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:9:1948:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:9:1948:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1948:28:1948:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:13:1950:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:24:1950:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:13:1951:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:23:1951:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:24:1951:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:13:1954:14 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1954:18:1954:36 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1954:28:1954:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1954:28:1954:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:34:1954:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1954:34:1954:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1955:13:1955:14 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1955:18:1955:36 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1955:28:1955:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1955:28:1955:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1955:34:1955:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1955:34:1955:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:13:1958:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:23:1958:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1958:23:1958:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:29:1958:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1959:13:1959:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1959:23:1959:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1959:23:1959:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1959:29:1959:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1960:13:1960:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1960:23:1960:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1960:23:1960:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1960:28:1960:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1961:13:1961:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1961:23:1961:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1961:23:1961:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1961:29:1961:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1962:13:1962:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:23:1962:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1962:23:1962:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:28:1962:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1963:13:1963:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1963:23:1963:24 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1963:23:1963:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1963:29:1963:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1966:13:1966:20 | vec2_add | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1966:24:1966:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1966:24:1966:30 | ... + ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1966:29:1966:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1967:13:1967:20 | vec2_sub | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1967:24:1967:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1967:24:1967:30 | ... - ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1967:29:1967:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1968:13:1968:20 | vec2_mul | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1968:24:1968:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1968:24:1968:30 | ... * ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1968:29:1968:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1969:13:1969:20 | vec2_div | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1969:24:1969:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1969:24:1969:30 | ... / ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1969:29:1969:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1970:13:1970:20 | vec2_rem | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1970:24:1970:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1970:24:1970:30 | ... % ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1970:29:1970:30 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1973:17:1973:31 | vec2_add_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1973:35:1973:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1974:9:1974:23 | vec2_add_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1974:9:1974:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1974:28:1974:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1976:17:1976:31 | vec2_sub_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1976:35:1976:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1977:9:1977:23 | vec2_sub_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1977:9:1977:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1977:28:1977:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1979:17:1979:31 | vec2_mul_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1979:35:1979:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1980:9:1980:23 | vec2_mul_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1980:9:1980:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1980:28:1980:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1982:17:1982:31 | vec2_div_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1982:35:1982:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1983:9:1983:23 | vec2_div_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1983:9:1983:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1983:28:1983:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1985:17:1985:31 | vec2_rem_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1985:35:1985:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1986:9:1986:23 | vec2_rem_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1986:9:1986:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1986:28:1986:29 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1989:13:1989:23 | vec2_bitand | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1989:27:1989:28 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1989:27:1989:33 | ... & ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1989:32:1989:33 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1990:13:1990:22 | vec2_bitor | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1990:26:1990:27 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1990:26:1990:32 | ... \| ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1990:31:1990:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1991:13:1991:23 | vec2_bitxor | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1991:27:1991:28 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1991:27:1991:33 | ... ^ ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1991:32:1991:33 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1992:13:1992:20 | vec2_shl | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1992:24:1992:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1992:24:1992:33 | ... << ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1992:30:1992:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1993:13:1993:20 | vec2_shr | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1993:24:1993:25 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1993:24:1993:33 | ... >> ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1993:30:1993:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1996:17:1996:34 | vec2_bitand_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1996:38:1996:39 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1997:9:1997:26 | vec2_bitand_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1997:9:1997:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1997:31:1997:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1999:17:1999:33 | vec2_bitor_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:1999:37:1999:38 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2000:9:2000:25 | vec2_bitor_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2000:9:2000:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2000:30:2000:31 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2002:17:2002:34 | vec2_bitxor_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2002:38:2002:39 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2003:9:2003:26 | vec2_bitxor_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2003:9:2003:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2003:31:2003:32 | v2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2005:17:2005:31 | vec2_shl_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2005:35:2005:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2006:9:2006:23 | vec2_shl_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2006:9:2006:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2006:29:2006:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2008:17:2008:31 | vec2_shr_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2008:35:2008:36 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2009:9:2009:23 | vec2_shr_assign | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2009:9:2009:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2009:29:2009:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2012:13:2012:20 | vec2_neg | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2012:24:2012:26 | - ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2012:25:2012:26 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2013:13:2013:20 | vec2_not | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2013:24:2013:26 | ! ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2013:25:2013:26 | v1 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2016:13:2016:24 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2016:28:2016:45 | ...::default(...) | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2017:13:2017:26 | vec2_zero_plus | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2017:30:2017:48 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2017:30:2017:63 | ... + ... | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2017:40:2017:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2017:40:2017:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:46:2017:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2017:46:2017:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:52:2017:63 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2021:13:2021:24 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2021:28:2021:45 | ...::default(...) | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2022:13:2022:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2022:30:2022:48 | Vec2 {...} | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2022:30:2022:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2022:40:2022:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2022:40:2022:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2022:46:2022:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2022:46:2022:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2022:53:2022:64 | default_vec2 | | main.rs:1651:5:1656:5 | Vec2 | -| main.rs:2032:18:2032:21 | SelfParam | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2035:25:2037:5 | { ... } | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2036:9:2036:10 | S1 | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2039:41:2041:5 | { ... } | | main.rs:2039:16:2039:39 | impl ... | -| main.rs:2040:9:2040:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2040:9:2040:20 | { ... } | Output | main.rs:2029:5:2029:14 | S1 | -| main.rs:2040:17:2040:18 | S1 | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2049:13:2049:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2049:13:2049:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2049:13:2049:42 | SelfParam | Ptr.&T | main.rs:2043:5:2043:14 | S2 | -| main.rs:2050:13:2050:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2050:13:2050:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2051:44:2053:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2051:44:2053:9 | { ... } | T | main.rs:2029:5:2029:14 | S1 | -| main.rs:2052:13:2052:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2052:13:2052:38 | ...::Ready(...) | T | main.rs:2029:5:2029:14 | S1 | -| main.rs:2052:36:2052:37 | S1 | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2056:41:2058:5 | { ... } | | main.rs:2056:16:2056:39 | impl ... | -| main.rs:2057:9:2057:10 | S2 | | main.rs:2043:5:2043:14 | S2 | -| main.rs:2057:9:2057:10 | S2 | | main.rs:2056:16:2056:39 | impl ... | -| main.rs:2061:9:2061:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2061:9:2061:12 | f1(...) | Output | main.rs:2029:5:2029:14 | S1 | -| main.rs:2061:9:2061:18 | await ... | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2062:9:2062:12 | f2(...) | | main.rs:2039:16:2039:39 | impl ... | -| main.rs:2062:9:2062:18 | await ... | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2063:9:2063:12 | f3(...) | | main.rs:2056:16:2056:39 | impl ... | -| main.rs:2063:9:2063:18 | await ... | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2064:9:2064:10 | S2 | | main.rs:2043:5:2043:14 | S2 | -| main.rs:2064:9:2064:16 | await S2 | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2065:13:2065:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2065:13:2065:13 | b | Output | main.rs:2029:5:2029:14 | S1 | -| main.rs:2065:17:2065:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2065:17:2065:28 | { ... } | Output | main.rs:2029:5:2029:14 | S1 | -| main.rs:2065:25:2065:26 | S1 | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2066:9:2066:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2066:9:2066:9 | b | Output | main.rs:2029:5:2029:14 | S1 | -| main.rs:2066:9:2066:15 | await b | | main.rs:2029:5:2029:14 | S1 | -| main.rs:2077:15:2077:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2077:15:2077:19 | SelfParam | &T | main.rs:2076:5:2078:5 | Self [trait Trait1] | -| main.rs:2081:15:2081:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2081:15:2081:19 | SelfParam | &T | main.rs:2080:5:2082:5 | Self [trait Trait2] | -| main.rs:2085:15:2085:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2085:15:2085:19 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | -| main.rs:2089:15:2089:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2089:15:2089:19 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | -| main.rs:2092:37:2094:5 | { ... } | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2093:9:2093:10 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2093:9:2093:10 | S1 | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2097:18:2097:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2097:18:2097:22 | SelfParam | &T | main.rs:2096:5:2098:5 | Self [trait MyTrait] | -| main.rs:2101:18:2101:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2101:18:2101:22 | SelfParam | &T | main.rs:2071:5:2072:14 | S1 | -| main.rs:2101:31:2103:9 | { ... } | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2102:13:2102:14 | S2 | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2107:18:2107:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2107:18:2107:22 | SelfParam | &T | main.rs:2074:5:2074:22 | S3 | -| main.rs:2107:18:2107:22 | SelfParam | &T.T3 | main.rs:2106:10:2106:17 | T | -| main.rs:2107:30:2110:9 | { ... } | | main.rs:2106:10:2106:17 | T | -| main.rs:2108:17:2108:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2108:17:2108:21 | S3(...) | | main.rs:2074:5:2074:22 | S3 | -| main.rs:2108:17:2108:21 | S3(...) | &T | main.rs:2074:5:2074:22 | S3 | -| main.rs:2108:17:2108:21 | S3(...) | &T.T3 | main.rs:2106:10:2106:17 | T | -| main.rs:2108:25:2108:28 | self | | file://:0:0:0:0 | & | -| main.rs:2108:25:2108:28 | self | &T | main.rs:2074:5:2074:22 | S3 | -| main.rs:2108:25:2108:28 | self | &T.T3 | main.rs:2106:10:2106:17 | T | -| main.rs:2109:13:2109:21 | t.clone() | | main.rs:2106:10:2106:17 | T | -| main.rs:2113:45:2115:5 | { ... } | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2114:9:2114:10 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2114:9:2114:10 | S1 | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2117:41:2117:41 | t | | main.rs:2117:26:2117:38 | B | -| main.rs:2117:52:2119:5 | { ... } | | main.rs:2117:23:2117:23 | A | -| main.rs:2118:9:2118:9 | t | | main.rs:2117:26:2117:38 | B | -| main.rs:2118:9:2118:17 | t.get_a() | | main.rs:2117:23:2117:23 | A | -| main.rs:2121:34:2121:34 | x | | main.rs:2121:24:2121:31 | T | -| main.rs:2121:59:2123:5 | { ... } | | main.rs:2121:43:2121:57 | impl ... | -| main.rs:2121:59:2123:5 | { ... } | impl(T) | main.rs:2121:24:2121:31 | T | -| main.rs:2122:9:2122:13 | S3(...) | | main.rs:2074:5:2074:22 | S3 | -| main.rs:2122:9:2122:13 | S3(...) | | main.rs:2121:43:2121:57 | impl ... | -| main.rs:2122:9:2122:13 | S3(...) | T3 | main.rs:2121:24:2121:31 | T | -| main.rs:2122:9:2122:13 | S3(...) | impl(T) | main.rs:2121:24:2121:31 | T | -| main.rs:2122:12:2122:12 | x | | main.rs:2121:24:2121:31 | T | -| main.rs:2125:34:2125:34 | x | | main.rs:2125:24:2125:31 | T | -| main.rs:2125:67:2127:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2125:67:2127:5 | { ... } | T | main.rs:2125:50:2125:64 | impl ... | -| main.rs:2125:67:2127:5 | { ... } | T.impl(T) | main.rs:2125:24:2125:31 | T | -| main.rs:2126:9:2126:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2126:9:2126:19 | Some(...) | T | main.rs:2074:5:2074:22 | S3 | -| main.rs:2126:9:2126:19 | Some(...) | T | main.rs:2125:50:2125:64 | impl ... | -| main.rs:2126:9:2126:19 | Some(...) | T.T3 | main.rs:2125:24:2125:31 | T | -| main.rs:2126:9:2126:19 | Some(...) | T.impl(T) | main.rs:2125:24:2125:31 | T | -| main.rs:2126:14:2126:18 | S3(...) | | main.rs:2074:5:2074:22 | S3 | -| main.rs:2126:14:2126:18 | S3(...) | | main.rs:2125:50:2125:64 | impl ... | -| main.rs:2126:14:2126:18 | S3(...) | T3 | main.rs:2125:24:2125:31 | T | -| main.rs:2126:14:2126:18 | S3(...) | impl(T) | main.rs:2125:24:2125:31 | T | -| main.rs:2126:17:2126:17 | x | | main.rs:2125:24:2125:31 | T | -| main.rs:2129:34:2129:34 | x | | main.rs:2129:24:2129:31 | T | -| main.rs:2129:78:2131:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2129:78:2131:5 | { ... } | 0(2) | main.rs:2129:44:2129:58 | impl ... | -| main.rs:2129:78:2131:5 | { ... } | 0(2).impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2129:78:2131:5 | { ... } | 1(2) | main.rs:2129:61:2129:75 | impl ... | -| main.rs:2129:78:2131:5 | { ... } | 1(2).impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2130:9:2130:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2130:9:2130:30 | TupleExpr | 0(2) | main.rs:2074:5:2074:22 | S3 | -| main.rs:2130:9:2130:30 | TupleExpr | 0(2) | main.rs:2129:44:2129:58 | impl ... | -| main.rs:2130:9:2130:30 | TupleExpr | 0(2).T3 | main.rs:2129:24:2129:31 | T | -| main.rs:2130:9:2130:30 | TupleExpr | 0(2).impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2130:9:2130:30 | TupleExpr | 1(2) | main.rs:2074:5:2074:22 | S3 | -| main.rs:2130:9:2130:30 | TupleExpr | 1(2) | main.rs:2129:61:2129:75 | impl ... | -| main.rs:2130:9:2130:30 | TupleExpr | 1(2).T3 | main.rs:2129:24:2129:31 | T | -| main.rs:2130:9:2130:30 | TupleExpr | 1(2).impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2130:10:2130:22 | S3(...) | | main.rs:2074:5:2074:22 | S3 | -| main.rs:2130:10:2130:22 | S3(...) | | main.rs:2129:44:2129:58 | impl ... | -| main.rs:2130:10:2130:22 | S3(...) | T3 | main.rs:2129:24:2129:31 | T | -| main.rs:2130:10:2130:22 | S3(...) | impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2130:13:2130:13 | x | | main.rs:2129:24:2129:31 | T | -| main.rs:2130:13:2130:21 | x.clone() | | main.rs:2129:24:2129:31 | T | -| main.rs:2130:25:2130:29 | S3(...) | | main.rs:2074:5:2074:22 | S3 | -| main.rs:2130:25:2130:29 | S3(...) | | main.rs:2129:61:2129:75 | impl ... | -| main.rs:2130:25:2130:29 | S3(...) | T3 | main.rs:2129:24:2129:31 | T | -| main.rs:2130:25:2130:29 | S3(...) | impl(T) | main.rs:2129:24:2129:31 | T | -| main.rs:2130:28:2130:28 | x | | main.rs:2129:24:2129:31 | T | -| main.rs:2133:26:2133:26 | t | | main.rs:2133:29:2133:43 | impl ... | -| main.rs:2133:51:2135:5 | { ... } | | main.rs:2133:23:2133:23 | A | -| main.rs:2134:9:2134:9 | t | | main.rs:2133:29:2133:43 | impl ... | -| main.rs:2134:9:2134:17 | t.get_a() | | main.rs:2133:23:2133:23 | A | -| main.rs:2138:13:2138:13 | x | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2138:17:2138:20 | f1(...) | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2139:9:2139:9 | x | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2140:9:2140:9 | x | | main.rs:2092:16:2092:35 | impl ... + ... | -| main.rs:2141:13:2141:13 | a | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2141:17:2141:32 | get_a_my_trait(...) | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2142:13:2142:13 | b | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2142:17:2142:33 | uses_my_trait1(...) | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2142:32:2142:32 | a | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2143:13:2143:13 | a | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2143:17:2143:32 | get_a_my_trait(...) | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2144:13:2144:13 | c | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2144:17:2144:33 | uses_my_trait2(...) | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2144:32:2144:32 | a | | main.rs:2113:28:2113:43 | impl ... | -| main.rs:2145:13:2145:13 | d | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2145:17:2145:34 | uses_my_trait2(...) | | main.rs:2073:5:2073:14 | S2 | -| main.rs:2145:32:2145:33 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2146:13:2146:13 | e | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2146:17:2146:35 | get_a_my_trait2(...) | | main.rs:2121:43:2121:57 | impl ... | -| main.rs:2146:17:2146:35 | get_a_my_trait2(...) | impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2146:17:2146:43 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2146:33:2146:34 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2149:13:2149:13 | f | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | T | main.rs:2125:50:2125:64 | impl ... | -| main.rs:2149:17:2149:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2149:17:2149:44 | ... .unwrap() | | main.rs:2125:50:2125:64 | impl ... | -| main.rs:2149:17:2149:44 | ... .unwrap() | impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2149:17:2149:52 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2149:33:2149:34 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:13:2150:13 | g | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 0(2) | main.rs:2129:44:2129:58 | impl ... | -| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 1(2) | main.rs:2129:61:2129:75 | impl ... | -| main.rs:2150:17:2150:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:17:2150:37 | ... .0 | | main.rs:2129:44:2129:58 | impl ... | -| main.rs:2150:17:2150:37 | ... .0 | impl(T) | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:17:2150:45 | ... .get_a() | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2150:33:2150:34 | S1 | | main.rs:2071:5:2072:14 | S1 | -| main.rs:2161:16:2161:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2161:16:2161:20 | SelfParam | &T | main.rs:2157:5:2158:13 | S | -| main.rs:2161:31:2163:9 | { ... } | | main.rs:2157:5:2158:13 | S | -| main.rs:2162:13:2162:13 | S | | main.rs:2157:5:2158:13 | S | -| main.rs:2172:26:2174:9 | { ... } | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2172:26:2174:9 | { ... } | T | main.rs:2171:10:2171:10 | T | -| main.rs:2173:13:2173:38 | MyVec {...} | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2173:13:2173:38 | MyVec {...} | T | main.rs:2171:10:2171:10 | T | -| main.rs:2173:27:2173:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2173:27:2173:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2173:27:2173:36 | ...::new(...) | T | main.rs:2171:10:2171:10 | T | -| main.rs:2176:17:2176:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2176:17:2176:25 | SelfParam | &T | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2176:17:2176:25 | SelfParam | &T.T | main.rs:2171:10:2171:10 | T | -| main.rs:2176:28:2176:32 | value | | main.rs:2171:10:2171:10 | T | -| main.rs:2177:13:2177:16 | self | | file://:0:0:0:0 | & | -| main.rs:2177:13:2177:16 | self | &T | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2177:13:2177:16 | self | &T.T | main.rs:2171:10:2171:10 | T | -| main.rs:2177:13:2177:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2177:13:2177:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2177:13:2177:21 | self.data | T | main.rs:2171:10:2171:10 | T | -| main.rs:2177:28:2177:32 | value | | main.rs:2171:10:2171:10 | T | -| main.rs:2185:18:2185:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2185:18:2185:22 | SelfParam | &T | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2185:18:2185:22 | SelfParam | &T.T | main.rs:2181:10:2181:10 | T | -| main.rs:2185:25:2185:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2185:56:2187:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2185:56:2187:9 | { ... } | &T | main.rs:2181:10:2181:10 | T | -| main.rs:2186:13:2186:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2186:13:2186:29 | &... | &T | main.rs:2181:10:2181:10 | T | -| main.rs:2186:14:2186:17 | self | | file://:0:0:0:0 | & | -| main.rs:2186:14:2186:17 | self | &T | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2186:14:2186:17 | self | &T.T | main.rs:2181:10:2181:10 | T | -| main.rs:2186:14:2186:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2186:14:2186:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2186:14:2186:22 | self.data | T | main.rs:2181:10:2181:10 | T | -| main.rs:2186:14:2186:29 | ...[index] | | main.rs:2181:10:2181:10 | T | -| main.rs:2186:24:2186:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2190:22:2190:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2190:22:2190:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2190:22:2190:26 | slice | &T.[T] | main.rs:2157:5:2158:13 | S | -| main.rs:2191:13:2191:13 | x | | main.rs:2157:5:2158:13 | S | -| main.rs:2191:17:2191:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2191:17:2191:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2191:17:2191:21 | slice | &T.[T] | main.rs:2157:5:2158:13 | S | -| main.rs:2191:17:2191:24 | slice[0] | | main.rs:2157:5:2158:13 | S | -| main.rs:2191:17:2191:30 | ... .foo() | | main.rs:2157:5:2158:13 | S | -| main.rs:2191:23:2191:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2194:37:2194:37 | a | | main.rs:2194:20:2194:34 | T | -| main.rs:2194:43:2194:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2197:5:2199:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2198:9:2198:9 | a | | main.rs:2194:20:2194:34 | T | -| main.rs:2198:9:2198:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2198:11:2198:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2202:17:2202:19 | vec | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2202:17:2202:19 | vec | T | main.rs:2157:5:2158:13 | S | -| main.rs:2202:23:2202:34 | ...::new(...) | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2202:23:2202:34 | ...::new(...) | T | main.rs:2157:5:2158:13 | S | -| main.rs:2203:9:2203:11 | vec | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2203:9:2203:11 | vec | T | main.rs:2157:5:2158:13 | S | -| main.rs:2203:18:2203:18 | S | | main.rs:2157:5:2158:13 | S | -| main.rs:2204:9:2204:11 | vec | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2204:9:2204:11 | vec | T | main.rs:2157:5:2158:13 | S | -| main.rs:2204:9:2204:14 | vec[0] | | main.rs:2157:5:2158:13 | S | -| main.rs:2204:9:2204:20 | ... .foo() | | main.rs:2157:5:2158:13 | S | -| main.rs:2204:13:2204:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2204:13:2204:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2206:13:2206:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2206:13:2206:14 | xs | [T;...] | main.rs:2157:5:2158:13 | S | -| main.rs:2206:21:2206:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2206:26:2206:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2206:26:2206:28 | [...] | [T;...] | main.rs:2157:5:2158:13 | S | -| main.rs:2206:27:2206:27 | S | | main.rs:2157:5:2158:13 | S | -| main.rs:2207:13:2207:13 | x | | main.rs:2157:5:2158:13 | S | -| main.rs:2207:17:2207:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2207:17:2207:18 | xs | [T;...] | main.rs:2157:5:2158:13 | S | -| main.rs:2207:17:2207:21 | xs[0] | | main.rs:2157:5:2158:13 | S | -| main.rs:2207:17:2207:27 | ... .foo() | | main.rs:2157:5:2158:13 | S | -| main.rs:2207:20:2207:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2209:29:2209:31 | vec | | main.rs:2166:5:2169:5 | MyVec | -| main.rs:2209:29:2209:31 | vec | T | main.rs:2157:5:2158:13 | S | -| main.rs:2209:34:2209:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2209:34:2209:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2211:23:2211:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2211:23:2211:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2211:23:2211:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2211:23:2211:25 | &xs | &T.[T;...] | main.rs:2157:5:2158:13 | S | -| main.rs:2211:23:2211:25 | &xs | &T.[T] | main.rs:2157:5:2158:13 | S | -| main.rs:2211:24:2211:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2211:24:2211:25 | xs | [T;...] | main.rs:2157:5:2158:13 | S | -| main.rs:2217:13:2217:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2217:17:2217:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2217:25:2217:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2217:25:2217:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2217:25:2217:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2217:25:2217:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2217:25:2217:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2217:25:2217:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2217:25:2217:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2217:38:2217:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2217:38:2217:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2226:19:2226:22 | SelfParam | | main.rs:2222:5:2227:5 | Self [trait MyAdd] | -| main.rs:2226:25:2226:27 | rhs | | main.rs:2222:17:2222:26 | Rhs | -| main.rs:2233:19:2233:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2233:25:2233:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2233:45:2235:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2234:13:2234:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2242:19:2242:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2242:25:2242:29 | value | | file://:0:0:0:0 | & | -| main.rs:2242:25:2242:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2242:46:2244:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2243:13:2243:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2243:14:2243:18 | value | | file://:0:0:0:0 | & | -| main.rs:2243:14:2243:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2251:19:2251:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2251:25:2251:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2251:46:2257:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2252:13:2256:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2252:13:2256:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2252:16:2252:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2252:22:2254:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2252:22:2254:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2253:17:2253:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2253:17:2253:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2254:20:2256:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2254:20:2256:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2255:17:2255:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2255:17:2255:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2266:19:2266:22 | SelfParam | | main.rs:2260:5:2260:19 | S | -| main.rs:2266:19:2266:22 | SelfParam | T | main.rs:2262:10:2262:17 | T | -| main.rs:2266:25:2266:29 | other | | main.rs:2260:5:2260:19 | S | -| main.rs:2266:25:2266:29 | other | T | main.rs:2262:10:2262:17 | T | -| main.rs:2266:54:2268:9 | { ... } | | main.rs:2260:5:2260:19 | S | -| main.rs:2266:54:2268:9 | { ... } | T | main.rs:2223:9:2223:20 | Output | -| main.rs:2267:13:2267:39 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2267:13:2267:39 | S(...) | T | main.rs:2223:9:2223:20 | Output | -| main.rs:2267:15:2267:22 | (...) | | main.rs:2262:10:2262:17 | T | -| main.rs:2267:15:2267:38 | ... .my_add(...) | | main.rs:2223:9:2223:20 | Output | -| main.rs:2267:16:2267:19 | self | | main.rs:2260:5:2260:19 | S | -| main.rs:2267:16:2267:19 | self | T | main.rs:2262:10:2262:17 | T | -| main.rs:2267:16:2267:21 | self.0 | | main.rs:2262:10:2262:17 | T | -| main.rs:2267:31:2267:35 | other | | main.rs:2260:5:2260:19 | S | -| main.rs:2267:31:2267:35 | other | T | main.rs:2262:10:2262:17 | T | -| main.rs:2267:31:2267:37 | other.0 | | main.rs:2222:5:2227:5 | Self [trait MyAdd] | -| main.rs:2267:31:2267:37 | other.0 | | main.rs:2262:10:2262:17 | T | -| main.rs:2275:19:2275:22 | SelfParam | | main.rs:2260:5:2260:19 | S | -| main.rs:2275:19:2275:22 | SelfParam | T | main.rs:2271:10:2271:17 | T | -| main.rs:2275:25:2275:29 | other | | main.rs:2271:10:2271:17 | T | -| main.rs:2275:51:2277:9 | { ... } | | main.rs:2260:5:2260:19 | S | -| main.rs:2275:51:2277:9 | { ... } | T | main.rs:2223:9:2223:20 | Output | -| main.rs:2276:13:2276:37 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2276:13:2276:37 | S(...) | T | main.rs:2223:9:2223:20 | Output | -| main.rs:2276:15:2276:22 | (...) | | main.rs:2271:10:2271:17 | T | -| main.rs:2276:15:2276:36 | ... .my_add(...) | | main.rs:2223:9:2223:20 | Output | -| main.rs:2276:16:2276:19 | self | | main.rs:2260:5:2260:19 | S | -| main.rs:2276:16:2276:19 | self | T | main.rs:2271:10:2271:17 | T | -| main.rs:2276:16:2276:21 | self.0 | | main.rs:2271:10:2271:17 | T | -| main.rs:2276:31:2276:35 | other | | main.rs:2271:10:2271:17 | T | -| main.rs:2287:19:2287:22 | SelfParam | | main.rs:2260:5:2260:19 | S | -| main.rs:2287:19:2287:22 | SelfParam | T | main.rs:2280:14:2280:14 | T | -| main.rs:2287:25:2287:29 | other | | file://:0:0:0:0 | & | -| main.rs:2287:25:2287:29 | other | &T | main.rs:2280:14:2280:14 | T | -| main.rs:2287:55:2289:9 | { ... } | | main.rs:2260:5:2260:19 | S | -| main.rs:2288:13:2288:37 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2288:15:2288:22 | (...) | | main.rs:2280:14:2280:14 | T | -| main.rs:2288:16:2288:19 | self | | main.rs:2260:5:2260:19 | S | -| main.rs:2288:16:2288:19 | self | T | main.rs:2280:14:2280:14 | T | -| main.rs:2288:16:2288:21 | self.0 | | main.rs:2280:14:2280:14 | T | -| main.rs:2288:31:2288:35 | other | | file://:0:0:0:0 | & | -| main.rs:2288:31:2288:35 | other | &T | main.rs:2280:14:2280:14 | T | -| main.rs:2294:20:2294:24 | value | | main.rs:2292:18:2292:18 | T | -| main.rs:2299:20:2299:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2299:40:2301:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2300:13:2300:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2306:20:2306:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2306:41:2312:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2307:13:2311:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:13:2311:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2307:16:2307:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2307:22:2309:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:22:2309:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2308:17:2308:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2308:17:2308:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2309:20:2311:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2309:20:2311:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2310:17:2310:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2310:17:2310:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2317:21:2317:25 | value | | main.rs:2315:19:2315:19 | T | -| main.rs:2317:31:2317:31 | x | | main.rs:2315:5:2318:5 | Self [trait MyFrom2] | -| main.rs:2322:21:2322:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2322:33:2322:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2322:48:2324:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2323:13:2323:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:21:2329:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2329:34:2329:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:49:2335:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2330:13:2334:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2330:16:2330:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2330:22:2332:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2331:17:2331:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2332:20:2334:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2333:17:2333:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2340:15:2340:15 | x | | main.rs:2338:5:2344:5 | Self [trait MySelfTrait] | -| main.rs:2343:15:2343:15 | x | | main.rs:2338:5:2344:5 | Self [trait MySelfTrait] | -| main.rs:2348:15:2348:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2348:31:2350:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2349:13:2349:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2349:13:2349:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2349:17:2349:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2353:15:2353:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2353:32:2355:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2354:13:2354:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2354:13:2354:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2354:17:2354:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2360:15:2360:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2360:31:2362:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2361:13:2361:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2361:13:2361:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2365:15:2365:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2365:32:2367:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2366:13:2366:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2371:13:2371:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2371:22:2371:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2371:22:2371:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2372:9:2372:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2372:9:2372:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2372:18:2372:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:9:2373:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:9:2373:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:18:2373:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2373:18:2373:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:19:2373:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2374:9:2374:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2374:9:2374:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2374:18:2374:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2376:9:2376:15 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2376:9:2376:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2376:9:2376:31 | ... .my_add(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2376:11:2376:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2376:24:2376:30 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2376:24:2376:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2376:26:2376:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2377:9:2377:15 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2377:9:2377:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2377:11:2377:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2377:24:2377:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2378:9:2378:15 | S(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2378:9:2378:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2378:9:2378:29 | ... .my_add(...) | | main.rs:2260:5:2260:19 | S | -| main.rs:2378:11:2378:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2378:24:2378:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2378:24:2378:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2378:25:2378:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2380:13:2380:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2380:17:2380:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2380:30:2380:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2381:13:2381:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2381:17:2381:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2381:30:2381:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2382:13:2382:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2382:22:2382:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2382:38:2382:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2383:9:2383:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2383:23:2383:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2383:30:2383:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2384:9:2384:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2384:23:2384:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2384:29:2384:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:9:2385:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2385:27:2385:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:34:2385:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2387:9:2387:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2387:17:2387:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2388:9:2388:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2388:17:2388:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2389:9:2389:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2389:18:2389:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2390:9:2390:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2390:18:2390:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2391:9:2391:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2391:25:2391:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2392:9:2392:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2392:25:2392:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:9:2393:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:25:2393:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2394:9:2394:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2394:25:2394:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2402:26:2404:9 | { ... } | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2403:13:2403:25 | MyCallable {...} | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2406:17:2406:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2406:17:2406:21 | SelfParam | &T | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2406:31:2408:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2407:13:2407:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2407:13:2407:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2414:13:2414:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:18:2414:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2414:18:2414:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:19:2414:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:22:2414:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:25:2414:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:18:2415:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2415:18:2415:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:18:2415:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2415:19:2415:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:22:2415:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:25:2415:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:32:2415:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2415:32:2415:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2415:40:2415:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:13:2416:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2416:13:2416:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:18:2416:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2416:18:2416:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:18:2416:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2416:18:2416:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:19:2416:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:22:2416:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:25:2416:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:13:2418:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2418:13:2418:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:13:2418:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2418:21:2418:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2418:21:2418:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:21:2418:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2418:22:2418:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2418:27:2418:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:27:2418:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2418:30:2418:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:30:2418:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2419:13:2419:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2419:13:2419:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2419:18:2419:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2419:18:2419:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2419:18:2419:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2421:13:2421:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2421:13:2421:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2421:21:2421:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2421:21:2421:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2421:22:2421:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2421:28:2421:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2422:13:2422:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2422:18:2422:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2422:18:2422:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2424:13:2424:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2424:13:2424:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2424:26:2424:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:31:2424:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2424:31:2424:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:31:2424:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2424:32:2424:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:32:2424:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2424:35:2424:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:35:2424:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2424:38:2424:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:38:2424:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2425:13:2425:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2425:18:2425:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2425:18:2425:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2427:13:2427:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2427:13:2427:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2427:26:2427:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:31:2427:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2427:31:2427:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:31:2427:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2427:32:2427:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:32:2427:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2427:35:2427:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:13:2428:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2428:18:2428:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2428:18:2428:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2430:17:2430:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2430:17:2430:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2430:17:2430:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2430:28:2430:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2430:28:2430:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2430:28:2430:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2430:29:2430:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2430:29:2430:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2430:36:2430:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2430:36:2430:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2430:43:2430:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2430:43:2430:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2431:13:2431:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2431:13:2431:13 | s | | file://:0:0:0:0 | & | -| main.rs:2431:13:2431:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2431:13:2431:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2431:18:2431:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2431:18:2431:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2431:18:2431:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2431:18:2431:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2431:19:2431:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2431:19:2431:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2431:19:2431:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2432:13:2432:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2432:13:2432:13 | s | | file://:0:0:0:0 | & | -| main.rs:2432:13:2432:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2432:13:2432:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2432:18:2432:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2432:18:2432:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2432:18:2432:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2432:18:2432:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2432:23:2432:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2432:23:2432:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2432:23:2432:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2433:13:2433:13 | s | | file://:0:0:0:0 | & | -| main.rs:2433:13:2433:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2433:18:2433:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2433:18:2433:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2433:18:2433:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2435:13:2435:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2435:13:2435:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2436:9:2440:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2436:9:2440:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2437:13:2437:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2437:26:2437:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2437:26:2437:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2438:13:2438:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2438:26:2438:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2438:26:2438:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2439:13:2439:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2439:26:2439:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2439:26:2439:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2441:13:2441:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2441:18:2441:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2441:18:2441:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2443:13:2443:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2443:13:2443:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2443:13:2443:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2444:9:2448:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2444:9:2448:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2444:9:2448:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2444:10:2448:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2444:10:2448:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2445:13:2445:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2445:26:2445:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2445:26:2445:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2446:13:2446:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2446:26:2446:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2446:26:2446:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2447:13:2447:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2447:26:2447:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2447:26:2447:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2449:13:2449:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2449:13:2449:13 | s | | file://:0:0:0:0 | & | -| main.rs:2449:13:2449:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2449:18:2449:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2449:18:2449:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2449:18:2449:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2451:13:2451:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2451:13:2451:21 | callables | [T;...] | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2451:25:2451:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2451:25:2451:81 | [...] | [T;...] | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2451:26:2451:42 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2451:45:2451:61 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2451:64:2451:80 | ...::new(...) | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2452:13:2452:13 | c | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2453:12:2453:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2453:12:2453:20 | callables | [T;...] | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2455:17:2455:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:26:2455:26 | c | | main.rs:2399:5:2399:24 | MyCallable | -| main.rs:2455:26:2455:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:18:2460:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:18:2460:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2460:18:2460:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:21:2460:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:13:2461:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2461:13:2461:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:13:2461:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:1876:13:1876:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1876:24:1876:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1877:13:1877:16 | self | | file://:0:0:0:0 | & | +| main.rs:1877:13:1877:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1877:13:1877:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1877:13:1877:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1877:24:1877:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1883:16:1883:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1883:30:1888:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1884:13:1887:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1885:20:1885:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1885:21:1885:24 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1885:21:1885:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1886:20:1886:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1886:21:1886:24 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1886:21:1886:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1893:16:1893:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1893:30:1898:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1894:13:1897:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1895:20:1895:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1895:21:1895:24 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1895:21:1895:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:20:1896:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:21:1896:24 | self | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1896:21:1896:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:15:1902:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1902:15:1902:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1902:22:1902:26 | other | | file://:0:0:0:0 | & | +| main.rs:1902:22:1902:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1902:44:1904:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1903:13:1903:16 | self | | file://:0:0:0:0 | & | +| main.rs:1903:13:1903:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1903:13:1903:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:13:1903:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1903:13:1903:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1903:23:1903:27 | other | | file://:0:0:0:0 | & | +| main.rs:1903:23:1903:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1903:23:1903:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:34:1903:37 | self | | file://:0:0:0:0 | & | +| main.rs:1903:34:1903:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1903:34:1903:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:34:1903:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1903:44:1903:48 | other | | file://:0:0:0:0 | & | +| main.rs:1903:44:1903:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1903:44:1903:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:15:1906:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1906:15:1906:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1906:22:1906:26 | other | | file://:0:0:0:0 | & | +| main.rs:1906:22:1906:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1906:44:1908:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1907:13:1907:16 | self | | file://:0:0:0:0 | & | +| main.rs:1907:13:1907:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1907:13:1907:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:13:1907:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1907:13:1907:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1907:23:1907:27 | other | | file://:0:0:0:0 | & | +| main.rs:1907:23:1907:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1907:23:1907:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:34:1907:37 | self | | file://:0:0:0:0 | & | +| main.rs:1907:34:1907:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1907:34:1907:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:34:1907:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1907:44:1907:48 | other | | file://:0:0:0:0 | & | +| main.rs:1907:44:1907:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1907:44:1907:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:24:1912:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1912:24:1912:28 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1912:31:1912:35 | other | | file://:0:0:0:0 | & | +| main.rs:1912:31:1912:35 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1912:75:1914:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1912:75:1914:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1913:13:1913:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:13:1913:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1913:13:1913:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1913:14:1913:17 | self | | file://:0:0:0:0 | & | +| main.rs:1913:14:1913:17 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1913:14:1913:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:14:1913:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:23:1913:26 | self | | file://:0:0:0:0 | & | +| main.rs:1913:23:1913:26 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1913:23:1913:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:43:1913:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1913:43:1913:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:44:1913:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:45:1913:49 | other | | file://:0:0:0:0 | & | +| main.rs:1913:45:1913:49 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1913:45:1913:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:45:1913:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:55:1913:59 | other | | file://:0:0:0:0 | & | +| main.rs:1913:55:1913:59 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1913:55:1913:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:15:1916:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1916:15:1916:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1916:22:1916:26 | other | | file://:0:0:0:0 | & | +| main.rs:1916:22:1916:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1916:44:1918:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1917:13:1917:16 | self | | file://:0:0:0:0 | & | +| main.rs:1917:13:1917:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1917:13:1917:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:13:1917:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1917:13:1917:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1917:22:1917:26 | other | | file://:0:0:0:0 | & | +| main.rs:1917:22:1917:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1917:22:1917:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:33:1917:36 | self | | file://:0:0:0:0 | & | +| main.rs:1917:33:1917:36 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1917:33:1917:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:33:1917:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1917:42:1917:46 | other | | file://:0:0:0:0 | & | +| main.rs:1917:42:1917:46 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1917:42:1917:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:15:1920:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1920:15:1920:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1920:22:1920:26 | other | | file://:0:0:0:0 | & | +| main.rs:1920:22:1920:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1920:44:1922:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1921:13:1921:16 | self | | file://:0:0:0:0 | & | +| main.rs:1921:13:1921:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:13:1921:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1921:13:1921:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1921:23:1921:27 | other | | file://:0:0:0:0 | & | +| main.rs:1921:23:1921:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1921:23:1921:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:34:1921:37 | self | | file://:0:0:0:0 | & | +| main.rs:1921:34:1921:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1921:34:1921:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:34:1921:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1921:44:1921:48 | other | | file://:0:0:0:0 | & | +| main.rs:1921:44:1921:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1921:44:1921:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:15:1924:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1924:15:1924:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1924:22:1924:26 | other | | file://:0:0:0:0 | & | +| main.rs:1924:22:1924:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1924:44:1926:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1925:13:1925:16 | self | | file://:0:0:0:0 | & | +| main.rs:1925:13:1925:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1925:13:1925:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:13:1925:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1925:13:1925:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1925:22:1925:26 | other | | file://:0:0:0:0 | & | +| main.rs:1925:22:1925:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1925:22:1925:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:33:1925:36 | self | | file://:0:0:0:0 | & | +| main.rs:1925:33:1925:36 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1925:33:1925:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:33:1925:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1925:42:1925:46 | other | | file://:0:0:0:0 | & | +| main.rs:1925:42:1925:46 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1925:42:1925:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:15:1928:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1928:15:1928:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1928:22:1928:26 | other | | file://:0:0:0:0 | & | +| main.rs:1928:22:1928:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1928:44:1930:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1929:13:1929:16 | self | | file://:0:0:0:0 | & | +| main.rs:1929:13:1929:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1929:13:1929:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:13:1929:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1929:13:1929:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1929:23:1929:27 | other | | file://:0:0:0:0 | & | +| main.rs:1929:23:1929:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1929:23:1929:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:34:1929:37 | self | | file://:0:0:0:0 | & | +| main.rs:1929:34:1929:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1929:34:1929:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1929:34:1929:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1929:44:1929:48 | other | | file://:0:0:0:0 | & | +| main.rs:1929:44:1929:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1929:44:1929:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1933:26:1933:26 | a | | main.rs:1933:18:1933:23 | T | +| main.rs:1933:32:1933:32 | b | | main.rs:1933:18:1933:23 | T | +| main.rs:1933:51:1935:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:1934:9:1934:9 | a | | main.rs:1933:18:1933:23 | T | +| main.rs:1934:9:1934:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:1934:13:1934:13 | b | | main.rs:1933:18:1933:23 | T | +| main.rs:1941:13:1941:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1941:22:1941:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1941:23:1941:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1941:23:1941:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1941:31:1941:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:13:1942:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:22:1942:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:23:1942:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:23:1942:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:31:1942:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:13:1943:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:22:1943:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:23:1943:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:23:1943:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:30:1943:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:13:1944:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:22:1944:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:23:1944:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:23:1944:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:31:1944:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:13:1945:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:22:1945:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:23:1945:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:23:1945:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:30:1945:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1946:13:1946:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1946:22:1946:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1946:23:1946:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1946:23:1946:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1946:32:1946:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:13:1949:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:23:1949:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:23:1949:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:31:1949:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:13:1950:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:31:1950:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:13:1951:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:23:1951:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:23:1951:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:31:1951:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:13:1952:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:23:1952:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:23:1952:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:31:1952:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:13:1953:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:23:1953:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:23:1953:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:31:1953:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:39:1954:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:45:1954:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1957:17:1957:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1957:34:1957:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:9:1958:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:9:1958:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1958:27:1958:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1960:17:1960:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1960:34:1960:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1961:9:1961:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1961:9:1961:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1961:27:1961:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1963:17:1963:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1963:34:1963:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:9:1964:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:9:1964:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1964:27:1964:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:17:1966:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:34:1966:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1967:9:1967:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1967:9:1967:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1967:27:1967:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:17:1969:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:34:1969:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1970:9:1970:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1970:9:1970:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1970:27:1970:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:26:1973:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:26:1973:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:34:1973:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:13:1974:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:25:1974:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:25:1974:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:33:1974:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:13:1975:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:26:1975:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:26:1975:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:34:1975:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:13:1976:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:23:1976:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:23:1976:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:32:1976:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1977:13:1977:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1977:23:1977:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1977:23:1977:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1977:32:1977:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:17:1980:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:37:1980:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:9:1981:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:9:1981:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1981:30:1981:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:17:1983:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:36:1983:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1984:9:1984:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1984:9:1984:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1984:29:1984:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:17:1986:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:37:1986:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:9:1987:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:9:1987:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1987:30:1987:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:17:1989:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:34:1989:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:9:1990:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:9:1990:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1990:28:1990:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1992:17:1992:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1992:34:1992:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1993:9:1993:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1993:9:1993:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1993:28:1993:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:13:1995:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:23:1995:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:24:1995:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1996:13:1996:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1996:23:1996:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1996:24:1996:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:13:1999:14 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1999:18:1999:36 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1999:28:1999:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1999:28:1999:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:34:1999:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1999:34:1999:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2000:13:2000:14 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2000:18:2000:36 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2000:28:2000:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2000:28:2000:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2000:34:2000:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2000:34:2000:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2003:13:2003:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2003:23:2003:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2003:23:2003:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2003:29:2003:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2004:13:2004:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2004:23:2004:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2004:23:2004:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2004:29:2004:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2005:13:2005:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2005:23:2005:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2005:23:2005:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2005:28:2005:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2006:13:2006:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2006:23:2006:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2006:23:2006:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2006:29:2006:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2007:13:2007:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:23:2007:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2007:23:2007:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:28:2007:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2008:13:2008:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2008:23:2008:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2008:23:2008:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2008:29:2008:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2011:13:2011:20 | vec2_add | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2011:24:2011:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2011:24:2011:30 | ... + ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2011:29:2011:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2012:13:2012:20 | vec2_sub | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2012:24:2012:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2012:24:2012:30 | ... - ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2012:29:2012:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2013:13:2013:20 | vec2_mul | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2013:24:2013:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2013:24:2013:30 | ... * ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2013:29:2013:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2014:13:2014:20 | vec2_div | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2014:24:2014:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2014:24:2014:30 | ... / ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2014:29:2014:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2015:13:2015:20 | vec2_rem | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2015:24:2015:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2015:24:2015:30 | ... % ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2015:29:2015:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2018:17:2018:31 | vec2_add_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2018:35:2018:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2019:9:2019:23 | vec2_add_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2019:9:2019:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2019:28:2019:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2021:17:2021:31 | vec2_sub_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2021:35:2021:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2022:9:2022:23 | vec2_sub_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2022:9:2022:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2022:28:2022:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2024:17:2024:31 | vec2_mul_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2024:35:2024:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2025:9:2025:23 | vec2_mul_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2025:9:2025:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2025:28:2025:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2027:17:2027:31 | vec2_div_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2027:35:2027:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2028:9:2028:23 | vec2_div_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2028:9:2028:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2028:28:2028:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2030:17:2030:31 | vec2_rem_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2030:35:2030:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2031:9:2031:23 | vec2_rem_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2031:9:2031:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2031:28:2031:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2034:13:2034:23 | vec2_bitand | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2034:27:2034:28 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2034:27:2034:33 | ... & ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2034:32:2034:33 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2035:13:2035:22 | vec2_bitor | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2035:26:2035:27 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2035:26:2035:32 | ... \| ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2035:31:2035:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2036:13:2036:23 | vec2_bitxor | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2036:27:2036:28 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2036:27:2036:33 | ... ^ ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2036:32:2036:33 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2037:13:2037:20 | vec2_shl | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2037:24:2037:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2037:24:2037:33 | ... << ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2037:30:2037:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2038:13:2038:20 | vec2_shr | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2038:24:2038:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2038:24:2038:33 | ... >> ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2038:30:2038:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2041:17:2041:34 | vec2_bitand_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2041:38:2041:39 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2042:9:2042:26 | vec2_bitand_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2042:9:2042:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2042:31:2042:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2044:17:2044:33 | vec2_bitor_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2044:37:2044:38 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2045:9:2045:25 | vec2_bitor_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2045:9:2045:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2045:30:2045:31 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2047:17:2047:34 | vec2_bitxor_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2047:38:2047:39 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2048:9:2048:26 | vec2_bitxor_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2048:9:2048:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2048:31:2048:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2050:17:2050:31 | vec2_shl_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2050:35:2050:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2051:9:2051:23 | vec2_shl_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2051:9:2051:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2051:29:2051:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2053:17:2053:31 | vec2_shr_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2053:35:2053:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2054:9:2054:23 | vec2_shr_assign | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2054:9:2054:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2054:29:2054:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2057:13:2057:20 | vec2_neg | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2057:24:2057:26 | - ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2057:25:2057:26 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2058:13:2058:20 | vec2_not | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2058:24:2058:26 | ! ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2058:25:2058:26 | v1 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2061:13:2061:24 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2061:28:2061:45 | ...::default(...) | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2062:13:2062:26 | vec2_zero_plus | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2062:30:2062:48 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2062:30:2062:63 | ... + ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2062:40:2062:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2062:40:2062:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2062:46:2062:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2062:46:2062:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2062:52:2062:63 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2066:13:2066:24 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2066:28:2066:45 | ...::default(...) | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2067:13:2067:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2067:30:2067:48 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2067:30:2067:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2067:40:2067:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2067:40:2067:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2067:46:2067:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2067:46:2067:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2067:53:2067:64 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:2077:18:2077:21 | SelfParam | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2080:25:2082:5 | { ... } | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2081:9:2081:10 | S1 | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2084:41:2086:5 | { ... } | | main.rs:2084:16:2084:39 | impl ... | +| main.rs:2085:9:2085:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2085:9:2085:20 | { ... } | Output | main.rs:2074:5:2074:14 | S1 | +| main.rs:2085:17:2085:18 | S1 | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2094:13:2094:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2094:13:2094:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2094:13:2094:42 | SelfParam | Ptr.&T | main.rs:2088:5:2088:14 | S2 | +| main.rs:2095:13:2095:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2095:13:2095:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2096:44:2098:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2096:44:2098:9 | { ... } | T | main.rs:2074:5:2074:14 | S1 | +| main.rs:2097:13:2097:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2097:13:2097:38 | ...::Ready(...) | T | main.rs:2074:5:2074:14 | S1 | +| main.rs:2097:36:2097:37 | S1 | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2101:41:2103:5 | { ... } | | main.rs:2101:16:2101:39 | impl ... | +| main.rs:2102:9:2102:10 | S2 | | main.rs:2088:5:2088:14 | S2 | +| main.rs:2102:9:2102:10 | S2 | | main.rs:2101:16:2101:39 | impl ... | +| main.rs:2106:9:2106:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2106:9:2106:12 | f1(...) | Output | main.rs:2074:5:2074:14 | S1 | +| main.rs:2106:9:2106:18 | await ... | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2107:9:2107:12 | f2(...) | | main.rs:2084:16:2084:39 | impl ... | +| main.rs:2107:9:2107:18 | await ... | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2108:9:2108:12 | f3(...) | | main.rs:2101:16:2101:39 | impl ... | +| main.rs:2108:9:2108:18 | await ... | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2109:9:2109:10 | S2 | | main.rs:2088:5:2088:14 | S2 | +| main.rs:2109:9:2109:16 | await S2 | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2110:13:2110:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2110:13:2110:13 | b | Output | main.rs:2074:5:2074:14 | S1 | +| main.rs:2110:17:2110:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2110:17:2110:28 | { ... } | Output | main.rs:2074:5:2074:14 | S1 | +| main.rs:2110:25:2110:26 | S1 | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2111:9:2111:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2111:9:2111:9 | b | Output | main.rs:2074:5:2074:14 | S1 | +| main.rs:2111:9:2111:15 | await b | | main.rs:2074:5:2074:14 | S1 | +| main.rs:2122:15:2122:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2122:15:2122:19 | SelfParam | &T | main.rs:2121:5:2123:5 | Self [trait Trait1] | +| main.rs:2126:15:2126:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2126:15:2126:19 | SelfParam | &T | main.rs:2125:5:2127:5 | Self [trait Trait2] | +| main.rs:2130:15:2130:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2130:15:2130:19 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | +| main.rs:2134:15:2134:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2134:15:2134:19 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | +| main.rs:2137:37:2139:5 | { ... } | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2138:9:2138:10 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2138:9:2138:10 | S1 | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2142:18:2142:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2142:18:2142:22 | SelfParam | &T | main.rs:2141:5:2143:5 | Self [trait MyTrait] | +| main.rs:2146:18:2146:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2146:18:2146:22 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | +| main.rs:2146:31:2148:9 | { ... } | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2147:13:2147:14 | S2 | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2152:18:2152:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2152:18:2152:22 | SelfParam | &T | main.rs:2119:5:2119:22 | S3 | +| main.rs:2152:18:2152:22 | SelfParam | &T.T3 | main.rs:2151:10:2151:17 | T | +| main.rs:2152:30:2155:9 | { ... } | | main.rs:2151:10:2151:17 | T | +| main.rs:2153:17:2153:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2153:17:2153:21 | S3(...) | | main.rs:2119:5:2119:22 | S3 | +| main.rs:2153:17:2153:21 | S3(...) | &T | main.rs:2119:5:2119:22 | S3 | +| main.rs:2153:17:2153:21 | S3(...) | &T.T3 | main.rs:2151:10:2151:17 | T | +| main.rs:2153:25:2153:28 | self | | file://:0:0:0:0 | & | +| main.rs:2153:25:2153:28 | self | &T | main.rs:2119:5:2119:22 | S3 | +| main.rs:2153:25:2153:28 | self | &T.T3 | main.rs:2151:10:2151:17 | T | +| main.rs:2154:13:2154:21 | t.clone() | | main.rs:2151:10:2151:17 | T | +| main.rs:2158:45:2160:5 | { ... } | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2159:9:2159:10 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2159:9:2159:10 | S1 | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2162:41:2162:41 | t | | main.rs:2162:26:2162:38 | B | +| main.rs:2162:52:2164:5 | { ... } | | main.rs:2162:23:2162:23 | A | +| main.rs:2163:9:2163:9 | t | | main.rs:2162:26:2162:38 | B | +| main.rs:2163:9:2163:17 | t.get_a() | | main.rs:2162:23:2162:23 | A | +| main.rs:2166:34:2166:34 | x | | main.rs:2166:24:2166:31 | T | +| main.rs:2166:59:2168:5 | { ... } | | main.rs:2166:43:2166:57 | impl ... | +| main.rs:2166:59:2168:5 | { ... } | impl(T) | main.rs:2166:24:2166:31 | T | +| main.rs:2167:9:2167:13 | S3(...) | | main.rs:2119:5:2119:22 | S3 | +| main.rs:2167:9:2167:13 | S3(...) | | main.rs:2166:43:2166:57 | impl ... | +| main.rs:2167:9:2167:13 | S3(...) | T3 | main.rs:2166:24:2166:31 | T | +| main.rs:2167:9:2167:13 | S3(...) | impl(T) | main.rs:2166:24:2166:31 | T | +| main.rs:2167:12:2167:12 | x | | main.rs:2166:24:2166:31 | T | +| main.rs:2170:34:2170:34 | x | | main.rs:2170:24:2170:31 | T | +| main.rs:2170:67:2172:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2170:67:2172:5 | { ... } | T | main.rs:2170:50:2170:64 | impl ... | +| main.rs:2170:67:2172:5 | { ... } | T.impl(T) | main.rs:2170:24:2170:31 | T | +| main.rs:2171:9:2171:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2171:9:2171:19 | Some(...) | T | main.rs:2119:5:2119:22 | S3 | +| main.rs:2171:9:2171:19 | Some(...) | T | main.rs:2170:50:2170:64 | impl ... | +| main.rs:2171:9:2171:19 | Some(...) | T.T3 | main.rs:2170:24:2170:31 | T | +| main.rs:2171:9:2171:19 | Some(...) | T.impl(T) | main.rs:2170:24:2170:31 | T | +| main.rs:2171:14:2171:18 | S3(...) | | main.rs:2119:5:2119:22 | S3 | +| main.rs:2171:14:2171:18 | S3(...) | | main.rs:2170:50:2170:64 | impl ... | +| main.rs:2171:14:2171:18 | S3(...) | T3 | main.rs:2170:24:2170:31 | T | +| main.rs:2171:14:2171:18 | S3(...) | impl(T) | main.rs:2170:24:2170:31 | T | +| main.rs:2171:17:2171:17 | x | | main.rs:2170:24:2170:31 | T | +| main.rs:2174:34:2174:34 | x | | main.rs:2174:24:2174:31 | T | +| main.rs:2174:78:2176:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2174:78:2176:5 | { ... } | 0(2) | main.rs:2174:44:2174:58 | impl ... | +| main.rs:2174:78:2176:5 | { ... } | 0(2).impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2174:78:2176:5 | { ... } | 1(2) | main.rs:2174:61:2174:75 | impl ... | +| main.rs:2174:78:2176:5 | { ... } | 1(2).impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2175:9:2175:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2175:9:2175:30 | TupleExpr | 0(2) | main.rs:2119:5:2119:22 | S3 | +| main.rs:2175:9:2175:30 | TupleExpr | 0(2) | main.rs:2174:44:2174:58 | impl ... | +| main.rs:2175:9:2175:30 | TupleExpr | 0(2).T3 | main.rs:2174:24:2174:31 | T | +| main.rs:2175:9:2175:30 | TupleExpr | 0(2).impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2175:9:2175:30 | TupleExpr | 1(2) | main.rs:2119:5:2119:22 | S3 | +| main.rs:2175:9:2175:30 | TupleExpr | 1(2) | main.rs:2174:61:2174:75 | impl ... | +| main.rs:2175:9:2175:30 | TupleExpr | 1(2).T3 | main.rs:2174:24:2174:31 | T | +| main.rs:2175:9:2175:30 | TupleExpr | 1(2).impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2175:10:2175:22 | S3(...) | | main.rs:2119:5:2119:22 | S3 | +| main.rs:2175:10:2175:22 | S3(...) | | main.rs:2174:44:2174:58 | impl ... | +| main.rs:2175:10:2175:22 | S3(...) | T3 | main.rs:2174:24:2174:31 | T | +| main.rs:2175:10:2175:22 | S3(...) | impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2175:13:2175:13 | x | | main.rs:2174:24:2174:31 | T | +| main.rs:2175:13:2175:21 | x.clone() | | main.rs:2174:24:2174:31 | T | +| main.rs:2175:25:2175:29 | S3(...) | | main.rs:2119:5:2119:22 | S3 | +| main.rs:2175:25:2175:29 | S3(...) | | main.rs:2174:61:2174:75 | impl ... | +| main.rs:2175:25:2175:29 | S3(...) | T3 | main.rs:2174:24:2174:31 | T | +| main.rs:2175:25:2175:29 | S3(...) | impl(T) | main.rs:2174:24:2174:31 | T | +| main.rs:2175:28:2175:28 | x | | main.rs:2174:24:2174:31 | T | +| main.rs:2178:26:2178:26 | t | | main.rs:2178:29:2178:43 | impl ... | +| main.rs:2178:51:2180:5 | { ... } | | main.rs:2178:23:2178:23 | A | +| main.rs:2179:9:2179:9 | t | | main.rs:2178:29:2178:43 | impl ... | +| main.rs:2179:9:2179:17 | t.get_a() | | main.rs:2178:23:2178:23 | A | +| main.rs:2183:13:2183:13 | x | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2183:17:2183:20 | f1(...) | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2184:9:2184:9 | x | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2185:9:2185:9 | x | | main.rs:2137:16:2137:35 | impl ... + ... | +| main.rs:2186:13:2186:13 | a | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2186:17:2186:32 | get_a_my_trait(...) | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2187:13:2187:13 | b | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2187:17:2187:33 | uses_my_trait1(...) | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2187:32:2187:32 | a | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2188:13:2188:13 | a | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2188:17:2188:32 | get_a_my_trait(...) | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2189:13:2189:13 | c | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2189:17:2189:33 | uses_my_trait2(...) | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2189:32:2189:32 | a | | main.rs:2158:28:2158:43 | impl ... | +| main.rs:2190:13:2190:13 | d | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2190:17:2190:34 | uses_my_trait2(...) | | main.rs:2118:5:2118:14 | S2 | +| main.rs:2190:32:2190:33 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2191:13:2191:13 | e | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2191:17:2191:35 | get_a_my_trait2(...) | | main.rs:2166:43:2166:57 | impl ... | +| main.rs:2191:17:2191:35 | get_a_my_trait2(...) | impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2191:17:2191:43 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2191:33:2191:34 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2194:13:2194:13 | f | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | T | main.rs:2170:50:2170:64 | impl ... | +| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2194:17:2194:44 | ... .unwrap() | | main.rs:2170:50:2170:64 | impl ... | +| main.rs:2194:17:2194:44 | ... .unwrap() | impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2194:17:2194:52 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2194:33:2194:34 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:13:2195:13 | g | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 0(2) | main.rs:2174:44:2174:58 | impl ... | +| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 1(2) | main.rs:2174:61:2174:75 | impl ... | +| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:17:2195:37 | ... .0 | | main.rs:2174:44:2174:58 | impl ... | +| main.rs:2195:17:2195:37 | ... .0 | impl(T) | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:17:2195:45 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2195:33:2195:34 | S1 | | main.rs:2116:5:2117:14 | S1 | +| main.rs:2206:16:2206:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2206:16:2206:20 | SelfParam | &T | main.rs:2202:5:2203:13 | S | +| main.rs:2206:31:2208:9 | { ... } | | main.rs:2202:5:2203:13 | S | +| main.rs:2207:13:2207:13 | S | | main.rs:2202:5:2203:13 | S | +| main.rs:2217:26:2219:9 | { ... } | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2217:26:2219:9 | { ... } | T | main.rs:2216:10:2216:10 | T | +| main.rs:2218:13:2218:38 | MyVec {...} | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2218:13:2218:38 | MyVec {...} | T | main.rs:2216:10:2216:10 | T | +| main.rs:2218:27:2218:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2218:27:2218:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2218:27:2218:36 | ...::new(...) | T | main.rs:2216:10:2216:10 | T | +| main.rs:2221:17:2221:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2221:17:2221:25 | SelfParam | &T | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2221:17:2221:25 | SelfParam | &T.T | main.rs:2216:10:2216:10 | T | +| main.rs:2221:28:2221:32 | value | | main.rs:2216:10:2216:10 | T | +| main.rs:2222:13:2222:16 | self | | file://:0:0:0:0 | & | +| main.rs:2222:13:2222:16 | self | &T | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2222:13:2222:16 | self | &T.T | main.rs:2216:10:2216:10 | T | +| main.rs:2222:13:2222:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2222:13:2222:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2222:13:2222:21 | self.data | T | main.rs:2216:10:2216:10 | T | +| main.rs:2222:28:2222:32 | value | | main.rs:2216:10:2216:10 | T | +| main.rs:2230:18:2230:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2230:18:2230:22 | SelfParam | &T | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2230:18:2230:22 | SelfParam | &T.T | main.rs:2226:10:2226:10 | T | +| main.rs:2230:25:2230:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2230:56:2232:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2230:56:2232:9 | { ... } | &T | main.rs:2226:10:2226:10 | T | +| main.rs:2231:13:2231:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2231:13:2231:29 | &... | &T | main.rs:2226:10:2226:10 | T | +| main.rs:2231:14:2231:17 | self | | file://:0:0:0:0 | & | +| main.rs:2231:14:2231:17 | self | &T | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2231:14:2231:17 | self | &T.T | main.rs:2226:10:2226:10 | T | +| main.rs:2231:14:2231:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2231:14:2231:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2231:14:2231:22 | self.data | T | main.rs:2226:10:2226:10 | T | +| main.rs:2231:14:2231:29 | ...[index] | | main.rs:2226:10:2226:10 | T | +| main.rs:2231:24:2231:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2235:22:2235:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2235:22:2235:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2235:22:2235:26 | slice | &T.[T] | main.rs:2202:5:2203:13 | S | +| main.rs:2236:13:2236:13 | x | | main.rs:2202:5:2203:13 | S | +| main.rs:2236:17:2236:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2236:17:2236:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2236:17:2236:21 | slice | &T.[T] | main.rs:2202:5:2203:13 | S | +| main.rs:2236:17:2236:24 | slice[0] | | main.rs:2202:5:2203:13 | S | +| main.rs:2236:17:2236:30 | ... .foo() | | main.rs:2202:5:2203:13 | S | +| main.rs:2236:23:2236:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2239:37:2239:37 | a | | main.rs:2239:20:2239:34 | T | +| main.rs:2239:43:2239:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2242:5:2244:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2243:9:2243:9 | a | | main.rs:2239:20:2239:34 | T | +| main.rs:2243:9:2243:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2243:11:2243:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2247:17:2247:19 | vec | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2247:17:2247:19 | vec | T | main.rs:2202:5:2203:13 | S | +| main.rs:2247:23:2247:34 | ...::new(...) | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2247:23:2247:34 | ...::new(...) | T | main.rs:2202:5:2203:13 | S | +| main.rs:2248:9:2248:11 | vec | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2248:9:2248:11 | vec | T | main.rs:2202:5:2203:13 | S | +| main.rs:2248:18:2248:18 | S | | main.rs:2202:5:2203:13 | S | +| main.rs:2249:9:2249:11 | vec | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2249:9:2249:11 | vec | T | main.rs:2202:5:2203:13 | S | +| main.rs:2249:9:2249:14 | vec[0] | | main.rs:2202:5:2203:13 | S | +| main.rs:2249:9:2249:20 | ... .foo() | | main.rs:2202:5:2203:13 | S | +| main.rs:2249:13:2249:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2249:13:2249:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2251:13:2251:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2251:13:2251:14 | xs | [T;...] | main.rs:2202:5:2203:13 | S | +| main.rs:2251:21:2251:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2251:26:2251:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2251:26:2251:28 | [...] | [T;...] | main.rs:2202:5:2203:13 | S | +| main.rs:2251:27:2251:27 | S | | main.rs:2202:5:2203:13 | S | +| main.rs:2252:13:2252:13 | x | | main.rs:2202:5:2203:13 | S | +| main.rs:2252:17:2252:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2252:17:2252:18 | xs | [T;...] | main.rs:2202:5:2203:13 | S | +| main.rs:2252:17:2252:21 | xs[0] | | main.rs:2202:5:2203:13 | S | +| main.rs:2252:17:2252:27 | ... .foo() | | main.rs:2202:5:2203:13 | S | +| main.rs:2252:20:2252:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2254:29:2254:31 | vec | | main.rs:2211:5:2214:5 | MyVec | +| main.rs:2254:29:2254:31 | vec | T | main.rs:2202:5:2203:13 | S | +| main.rs:2254:34:2254:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2254:34:2254:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2256:23:2256:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2256:23:2256:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2256:23:2256:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2256:23:2256:25 | &xs | &T.[T;...] | main.rs:2202:5:2203:13 | S | +| main.rs:2256:23:2256:25 | &xs | &T.[T] | main.rs:2202:5:2203:13 | S | +| main.rs:2256:24:2256:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2256:24:2256:25 | xs | [T;...] | main.rs:2202:5:2203:13 | S | +| main.rs:2262:13:2262:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2262:17:2262:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2262:25:2262:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2262:25:2262:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2262:25:2262:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2262:25:2262:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2262:25:2262:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2262:25:2262:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2262:25:2262:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2262:38:2262:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2262:38:2262:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2271:19:2271:22 | SelfParam | | main.rs:2267:5:2272:5 | Self [trait MyAdd] | +| main.rs:2271:25:2271:27 | rhs | | main.rs:2267:17:2267:26 | Rhs | +| main.rs:2278:19:2278:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2278:25:2278:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2278:45:2280:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2279:13:2279:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2287:19:2287:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2287:25:2287:29 | value | | file://:0:0:0:0 | & | +| main.rs:2287:25:2287:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2287:46:2289:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2288:13:2288:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2288:14:2288:18 | value | | file://:0:0:0:0 | & | +| main.rs:2288:14:2288:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2296:19:2296:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2296:25:2296:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2296:46:2302:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2297:13:2301:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2297:13:2301:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2297:16:2297:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2297:22:2299:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2297:22:2299:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2298:17:2298:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2298:17:2298:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2299:20:2301:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2299:20:2301:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2300:17:2300:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2300:17:2300:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2311:19:2311:22 | SelfParam | | main.rs:2305:5:2305:19 | S | +| main.rs:2311:19:2311:22 | SelfParam | T | main.rs:2307:10:2307:17 | T | +| main.rs:2311:25:2311:29 | other | | main.rs:2305:5:2305:19 | S | +| main.rs:2311:25:2311:29 | other | T | main.rs:2307:10:2307:17 | T | +| main.rs:2311:54:2313:9 | { ... } | | main.rs:2305:5:2305:19 | S | +| main.rs:2311:54:2313:9 | { ... } | T | main.rs:2268:9:2268:20 | Output | +| main.rs:2312:13:2312:39 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2312:13:2312:39 | S(...) | T | main.rs:2268:9:2268:20 | Output | +| main.rs:2312:15:2312:22 | (...) | | main.rs:2307:10:2307:17 | T | +| main.rs:2312:15:2312:38 | ... .my_add(...) | | main.rs:2268:9:2268:20 | Output | +| main.rs:2312:16:2312:19 | self | | main.rs:2305:5:2305:19 | S | +| main.rs:2312:16:2312:19 | self | T | main.rs:2307:10:2307:17 | T | +| main.rs:2312:16:2312:21 | self.0 | | main.rs:2307:10:2307:17 | T | +| main.rs:2312:31:2312:35 | other | | main.rs:2305:5:2305:19 | S | +| main.rs:2312:31:2312:35 | other | T | main.rs:2307:10:2307:17 | T | +| main.rs:2312:31:2312:37 | other.0 | | main.rs:2267:5:2272:5 | Self [trait MyAdd] | +| main.rs:2312:31:2312:37 | other.0 | | main.rs:2307:10:2307:17 | T | +| main.rs:2320:19:2320:22 | SelfParam | | main.rs:2305:5:2305:19 | S | +| main.rs:2320:19:2320:22 | SelfParam | T | main.rs:2316:10:2316:17 | T | +| main.rs:2320:25:2320:29 | other | | main.rs:2316:10:2316:17 | T | +| main.rs:2320:51:2322:9 | { ... } | | main.rs:2305:5:2305:19 | S | +| main.rs:2320:51:2322:9 | { ... } | T | main.rs:2268:9:2268:20 | Output | +| main.rs:2321:13:2321:37 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2321:13:2321:37 | S(...) | T | main.rs:2268:9:2268:20 | Output | +| main.rs:2321:15:2321:22 | (...) | | main.rs:2316:10:2316:17 | T | +| main.rs:2321:15:2321:36 | ... .my_add(...) | | main.rs:2268:9:2268:20 | Output | +| main.rs:2321:16:2321:19 | self | | main.rs:2305:5:2305:19 | S | +| main.rs:2321:16:2321:19 | self | T | main.rs:2316:10:2316:17 | T | +| main.rs:2321:16:2321:21 | self.0 | | main.rs:2316:10:2316:17 | T | +| main.rs:2321:31:2321:35 | other | | main.rs:2316:10:2316:17 | T | +| main.rs:2332:19:2332:22 | SelfParam | | main.rs:2305:5:2305:19 | S | +| main.rs:2332:19:2332:22 | SelfParam | T | main.rs:2325:14:2325:14 | T | +| main.rs:2332:25:2332:29 | other | | file://:0:0:0:0 | & | +| main.rs:2332:25:2332:29 | other | &T | main.rs:2325:14:2325:14 | T | +| main.rs:2332:55:2334:9 | { ... } | | main.rs:2305:5:2305:19 | S | +| main.rs:2333:13:2333:37 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2333:15:2333:22 | (...) | | main.rs:2325:14:2325:14 | T | +| main.rs:2333:16:2333:19 | self | | main.rs:2305:5:2305:19 | S | +| main.rs:2333:16:2333:19 | self | T | main.rs:2325:14:2325:14 | T | +| main.rs:2333:16:2333:21 | self.0 | | main.rs:2325:14:2325:14 | T | +| main.rs:2333:31:2333:35 | other | | file://:0:0:0:0 | & | +| main.rs:2333:31:2333:35 | other | &T | main.rs:2325:14:2325:14 | T | +| main.rs:2339:20:2339:24 | value | | main.rs:2337:18:2337:18 | T | +| main.rs:2344:20:2344:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2344:40:2346:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2345:13:2345:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2351:20:2351:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2351:41:2357:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2352:13:2356:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:13:2356:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2352:16:2352:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2352:22:2354:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:22:2354:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2353:17:2353:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2353:17:2353:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2354:20:2356:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2354:20:2356:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2355:17:2355:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2355:17:2355:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2362:21:2362:25 | value | | main.rs:2360:19:2360:19 | T | +| main.rs:2362:31:2362:31 | x | | main.rs:2360:5:2363:5 | Self [trait MyFrom2] | +| main.rs:2367:21:2367:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2367:33:2367:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2367:48:2369:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2368:13:2368:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2374:21:2374:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2374:34:2374:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2374:49:2380:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2375:13:2379:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2375:16:2375:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2375:22:2377:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2376:17:2376:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2377:20:2379:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2378:17:2378:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2385:15:2385:15 | x | | main.rs:2383:5:2389:5 | Self [trait MySelfTrait] | +| main.rs:2388:15:2388:15 | x | | main.rs:2383:5:2389:5 | Self [trait MySelfTrait] | +| main.rs:2393:15:2393:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:31:2395:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2394:13:2394:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2394:13:2394:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2394:17:2394:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2398:15:2398:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2398:32:2400:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2399:13:2399:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2399:13:2399:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2399:17:2399:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2405:15:2405:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2405:31:2407:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2406:13:2406:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2406:13:2406:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2410:15:2410:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2410:32:2412:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2411:13:2411:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2416:13:2416:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:22:2416:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:22:2416:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:9:2417:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:9:2417:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:18:2417:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2418:9:2418:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2418:9:2418:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2418:18:2418:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2418:18:2418:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2418:19:2418:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2419:9:2419:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2419:9:2419:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2419:18:2419:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2421:9:2421:15 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2421:9:2421:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2421:9:2421:31 | ... .my_add(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2421:11:2421:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2421:24:2421:30 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2421:24:2421:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2421:26:2421:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:9:2422:15 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2422:9:2422:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:11:2422:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:24:2422:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:9:2423:15 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2423:9:2423:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:9:2423:29 | ... .my_add(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2423:11:2423:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:24:2423:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2423:24:2423:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:25:2423:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:13:2425:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:17:2425:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:30:2425:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:13:2426:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:17:2426:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:30:2426:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2427:13:2427:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2427:22:2427:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2427:38:2427:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2428:9:2428:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2428:23:2428:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2428:30:2428:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2429:9:2429:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2429:23:2429:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2429:29:2429:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:9:2430:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2430:27:2430:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:34:2430:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2432:9:2432:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2432:17:2432:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2433:9:2433:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2433:17:2433:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2434:9:2434:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2434:18:2434:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2435:9:2435:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2435:18:2435:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2436:9:2436:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2436:25:2436:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2437:9:2437:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2437:25:2437:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2438:9:2438:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2438:25:2438:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2439:9:2439:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2439:25:2439:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2447:26:2449:9 | { ... } | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2448:13:2448:25 | MyCallable {...} | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2451:17:2451:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2451:17:2451:21 | SelfParam | &T | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2451:31:2453:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2452:13:2452:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2452:13:2452:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:13:2459:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:18:2459:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2459:18:2459:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:19:2459:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:22:2459:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:25:2459:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:18:2460:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2460:18:2460:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:18:2460:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2460:19:2460:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:22:2460:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:25:2460:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:32:2460:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2460:32:2460:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2460:40:2460:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:13:2461:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2461:13:2461:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2461:18:2461:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2461:18:2461:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2461:18:2461:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:18:2461:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2461:19:2461:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2461:19:2461:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2461:19:2461:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:19:2461:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2461:24:2461:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:24:2461:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2462:13:2462:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2462:13:2462:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:21:2462:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:21:2462:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2462:21:2462:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:24:2462:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2463:13:2463:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:18:2463:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2463:18:2463:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2464:13:2464:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2464:26:2464:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2465:13:2465:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2465:18:2465:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2465:19:2465:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2465:19:2465:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:20:2465:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:26:2465:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:32:2465:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:38:2465:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2467:13:2467:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2467:13:2467:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2468:9:2471:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2468:9:2471:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2469:20:2469:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2470:18:2470:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2472:18:2472:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2472:18:2472:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2476:26:2476:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:29:2476:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:32:2476:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:13:2479:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2479:13:2479:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2479:13:2479:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2479:32:2479:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2479:32:2479:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:32:2479:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2479:32:2479:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2479:32:2479:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2479:32:2479:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2479:33:2479:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2479:39:2479:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:42:2479:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2480:13:2480:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2480:13:2480:13 | u | | file://:0:0:0:0 | & | -| main.rs:2480:18:2480:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2480:18:2480:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2480:18:2480:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2482:22:2482:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2482:22:2482:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2482:22:2482:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2482:23:2482:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2482:29:2482:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2482:32:2482:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:13:2485:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2485:13:2485:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2485:13:2485:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:13:2485:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2485:21:2485:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2485:21:2485:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2485:21:2485:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:21:2485:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2485:31:2485:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2485:31:2485:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:31:2485:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2485:32:2485:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2485:38:2485:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2485:41:2485:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2486:13:2486:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2486:13:2486:13 | u | | file://:0:0:0:0 | & | -| main.rs:2486:18:2486:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2486:18:2486:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2486:18:2486:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2486:18:2486:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2488:13:2488:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2488:13:2488:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2488:13:2488:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2488:13:2488:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2488:32:2488:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2488:32:2488:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:32:2488:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2488:32:2488:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2488:32:2488:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2488:32:2488:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2488:32:2488:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2488:33:2488:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2488:39:2488:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2488:42:2488:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2489:13:2489:13 | u | | file://:0:0:0:0 | & | -| main.rs:2489:13:2489:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2489:18:2489:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2489:18:2489:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2489:18:2489:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2489:18:2489:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2491:17:2491:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2491:17:2491:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2491:17:2491:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2491:25:2491:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2491:25:2491:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2491:25:2491:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2492:9:2492:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2492:9:2492:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2492:9:2492:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2492:20:2492:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2493:13:2493:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2493:13:2493:13 | u | | file://:0:0:0:0 | & | -| main.rs:2493:18:2493:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2493:18:2493:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2493:18:2493:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2495:33:2495:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2495:36:2495:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2495:45:2495:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2495:48:2495:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:17:2502:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2502:17:2502:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:17:2502:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2502:17:2502:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2502:17:2502:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2502:17:2502:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2502:17:2502:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2502:24:2502:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2502:24:2502:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:24:2502:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2502:24:2502:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2502:24:2502:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2502:24:2502:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2502:24:2502:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2503:9:2503:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2503:9:2503:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:9:2503:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2503:9:2503:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2503:9:2503:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2503:9:2503:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2503:9:2503:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2503:9:2503:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2503:9:2503:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2503:9:2503:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2503:9:2503:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2503:9:2503:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2503:21:2503:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:24:2503:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2503:24:2503:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2503:24:2503:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2503:24:2503:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2503:33:2503:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2503:33:2503:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2504:9:2504:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2504:9:2504:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:9:2504:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2504:9:2504:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2504:9:2504:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2504:9:2504:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2504:9:2504:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2504:9:2504:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2504:9:2504:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2504:9:2504:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2504:9:2504:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2504:9:2504:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2504:21:2504:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:24:2504:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2504:24:2504:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2504:24:2504:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2504:24:2504:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2504:33:2504:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2504:33:2504:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2505:13:2505:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2505:13:2505:15 | key | | file://:0:0:0:0 | & | -| main.rs:2505:13:2505:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:20:2505:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2505:20:2505:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:20:2505:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2505:20:2505:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2505:20:2505:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2505:20:2505:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2505:20:2505:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2505:20:2505:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2505:20:2505:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:20:2505:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2505:20:2505:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2505:20:2505:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2505:20:2505:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2506:13:2506:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2506:13:2506:17 | value | | file://:0:0:0:0 | & | -| main.rs:2506:13:2506:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2506:13:2506:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2506:13:2506:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2506:13:2506:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2506:22:2506:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2506:22:2506:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:22:2506:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2506:22:2506:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2506:22:2506:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2506:22:2506:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2506:22:2506:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2506:22:2506:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2506:22:2506:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:22:2506:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2506:22:2506:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2506:22:2506:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2506:22:2506:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2507:13:2507:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2507:13:2507:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2507:13:2507:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:13:2507:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2507:13:2507:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2507:14:2507:16 | key | | file://:0:0:0:0 | & | -| main.rs:2507:14:2507:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:19:2507:23 | value | | file://:0:0:0:0 | & | -| main.rs:2507:19:2507:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2507:19:2507:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:19:2507:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2507:19:2507:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2507:29:2507:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2507:29:2507:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:29:2507:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2507:29:2507:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2507:29:2507:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:29:2507:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2507:29:2507:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2507:29:2507:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2507:29:2507:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:29:2507:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2507:29:2507:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2507:29:2507:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2507:29:2507:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2508:13:2508:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2508:13:2508:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2508:13:2508:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:13:2508:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2508:13:2508:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2508:14:2508:16 | key | | file://:0:0:0:0 | & | -| main.rs:2508:14:2508:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:19:2508:23 | value | | file://:0:0:0:0 | & | -| main.rs:2508:19:2508:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2508:19:2508:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2508:19:2508:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2508:19:2508:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2508:29:2508:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2508:29:2508:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2508:29:2508:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:29:2508:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2508:29:2508:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2508:29:2508:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2508:29:2508:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2508:29:2508:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2508:30:2508:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2508:30:2508:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:30:2508:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2508:30:2508:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2508:30:2508:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2508:30:2508:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2508:30:2508:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2512:17:2512:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2512:26:2512:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2512:26:2512:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2514:23:2514:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2514:23:2514:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2514:27:2514:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:27:2514:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2516:13:2516:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2516:13:2516:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2516:18:2516:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2528:40:2530:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2528:40:2530:9 | { ... } | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2528:40:2530:9 | { ... } | T.T | main.rs:2527:10:2527:19 | T | -| main.rs:2529:13:2529:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2529:13:2529:16 | None | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2529:13:2529:16 | None | T.T | main.rs:2527:10:2527:19 | T | -| main.rs:2532:30:2534:9 | { ... } | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2532:30:2534:9 | { ... } | T | main.rs:2527:10:2527:19 | T | -| main.rs:2533:13:2533:28 | S1(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2533:13:2533:28 | S1(...) | T | main.rs:2527:10:2527:19 | T | -| main.rs:2533:16:2533:27 | ...::default(...) | | main.rs:2527:10:2527:19 | T | -| main.rs:2536:19:2536:22 | SelfParam | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2536:19:2536:22 | SelfParam | T | main.rs:2527:10:2527:19 | T | -| main.rs:2536:33:2538:9 | { ... } | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2536:33:2538:9 | { ... } | T | main.rs:2527:10:2527:19 | T | -| main.rs:2537:13:2537:16 | self | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2537:13:2537:16 | self | T | main.rs:2527:10:2527:19 | T | -| main.rs:2549:15:2549:15 | x | | main.rs:2549:12:2549:12 | T | -| main.rs:2549:26:2551:5 | { ... } | | main.rs:2549:12:2549:12 | T | -| main.rs:2550:9:2550:9 | x | | main.rs:2549:12:2549:12 | T | -| main.rs:2554:13:2554:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2554:13:2554:14 | x1 | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2554:13:2554:14 | x1 | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2554:34:2554:48 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2555:13:2555:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2555:13:2555:14 | x2 | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2555:13:2555:14 | x2 | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2555:18:2555:38 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2556:13:2556:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2556:13:2556:14 | x3 | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2556:13:2556:14 | x3 | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | T | main.rs:2522:5:2522:20 | S1 | -| main.rs:2556:18:2556:32 | ...::assoc_fun(...) | T.T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2557:13:2557:14 | x4 | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2557:13:2557:14 | x4 | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2557:18:2557:48 | ...::method(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2557:18:2557:48 | ...::method(...) | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2557:35:2557:47 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2557:35:2557:47 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2558:13:2558:14 | x5 | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2558:13:2558:14 | x5 | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2558:18:2558:42 | ...::method(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2558:18:2558:42 | ...::method(...) | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2558:29:2558:41 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2558:29:2558:41 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2559:13:2559:14 | x6 | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2559:13:2559:14 | x6 | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2559:18:2559:45 | S4::<...>(...) | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2559:18:2559:45 | S4::<...>(...) | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2559:27:2559:44 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2560:13:2560:14 | x7 | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2560:13:2560:14 | x7 | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2560:18:2560:23 | S4(...) | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2560:18:2560:23 | S4(...) | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2560:21:2560:22 | S2 | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2561:13:2561:14 | x8 | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2561:13:2561:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:18:2561:22 | S4(...) | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2561:18:2561:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:21:2561:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:14 | x9 | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2562:13:2562:14 | x9 | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2562:18:2562:34 | S4(...) | | main.rs:2543:5:2543:27 | S4 | -| main.rs:2562:18:2562:34 | S4(...) | T4 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2562:21:2562:33 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2563:13:2563:15 | x10 | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2563:13:2563:15 | x10 | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2563:19:2566:9 | S5::<...> {...} | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2563:19:2566:9 | S5::<...> {...} | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2565:20:2565:37 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2567:13:2567:15 | x11 | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2567:13:2567:15 | x11 | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2567:19:2567:34 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2567:19:2567:34 | S5 {...} | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2567:31:2567:32 | S2 | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2568:13:2568:15 | x12 | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2568:13:2568:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2568:19:2568:33 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2568:19:2568:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2568:31:2568:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2569:13:2569:15 | x13 | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2569:13:2569:15 | x13 | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2569:19:2572:9 | S5 {...} | | main.rs:2545:5:2547:5 | S5 | -| main.rs:2569:19:2572:9 | S5 {...} | T5 | main.rs:2524:5:2525:14 | S2 | -| main.rs:2571:20:2571:32 | ...::default(...) | | main.rs:2524:5:2525:14 | S2 | -| main.rs:2573:13:2573:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:19:2573:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:30:2573:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2574:13:2574:15 | x15 | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2574:13:2574:15 | x15 | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2574:19:2574:37 | ...::default(...) | | main.rs:2522:5:2522:20 | S1 | -| main.rs:2574:19:2574:37 | ...::default(...) | T | main.rs:2524:5:2525:14 | S2 | -| main.rs:2583:35:2585:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2583:35:2585:9 | { ... } | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2583:35:2585:9 | { ... } | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2584:13:2584:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2584:13:2584:26 | TupleExpr | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2584:13:2584:26 | TupleExpr | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2584:14:2584:18 | S1 {...} | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2584:21:2584:25 | S1 {...} | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2586:16:2586:19 | SelfParam | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2590:13:2590:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2590:13:2590:13 | a | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2590:13:2590:13 | a | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2590:17:2590:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2590:17:2590:30 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2590:17:2590:30 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2591:17:2591:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2591:17:2591:17 | b | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2591:17:2591:17 | b | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2591:21:2591:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2591:21:2591:34 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2591:21:2591:34 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:13:2592:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2592:13:2592:18 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:13:2592:18 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:14:2592:14 | c | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:17:2592:17 | d | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:22:2592:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2592:22:2592:35 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2592:22:2592:35 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:13:2593:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2593:13:2593:22 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:13:2593:22 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:18:2593:18 | e | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:21:2593:21 | f | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:26:2593:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2593:26:2593:39 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2593:26:2593:39 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:13:2594:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2594:13:2594:26 | TuplePat | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:13:2594:26 | TuplePat | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:18:2594:18 | g | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:25:2594:25 | h | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:30:2594:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2594:30:2594:43 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2594:30:2594:43 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2596:9:2596:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2596:9:2596:9 | a | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2596:9:2596:9 | a | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2596:9:2596:11 | a.0 | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2597:9:2597:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2597:9:2597:9 | b | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2597:9:2597:9 | b | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2597:9:2597:11 | b.1 | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2598:9:2598:9 | c | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2599:9:2599:9 | d | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2600:9:2600:9 | e | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2601:9:2601:9 | f | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2602:9:2602:9 | g | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2603:9:2603:9 | h | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2608:13:2608:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2608:17:2608:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2609:13:2609:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2609:17:2609:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2610:13:2610:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2610:13:2610:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2610:13:2610:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2610:20:2610:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2610:20:2610:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2610:20:2610:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2610:21:2610:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2610:24:2610:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2611:22:2611:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2611:22:2611:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2611:22:2611:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2611:22:2611:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2612:13:2612:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2612:23:2612:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2612:23:2612:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2612:23:2612:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2612:23:2612:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2614:13:2614:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2614:13:2614:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:13:2614:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:20:2614:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2614:20:2614:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:20:2614:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2614:20:2614:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:20:2614:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:21:2614:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:24:2614:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:15:2615:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2615:15:2615:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:15:2615:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:13:2616:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2616:13:2616:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:13:2616:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:14:2616:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:17:2616:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:30:2616:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2616:30:2616:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2616:30:2616:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2616:30:2616:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2617:13:2617:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2617:13:2617:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2617:13:2617:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2617:25:2617:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2617:25:2617:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2617:25:2617:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2617:25:2617:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2619:13:2619:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:17:2619:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2619:17:2619:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:17:2619:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:17:2619:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:13:2621:13 | y | | file://:0:0:0:0 | & | -| main.rs:2621:13:2621:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2621:13:2621:13 | y | &T.0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2621:13:2621:13 | y | &T.1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2621:17:2621:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2621:17:2621:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2621:17:2621:31 | &... | &T.0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2621:17:2621:31 | &... | &T.1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2621:18:2621:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2621:18:2621:31 | ...::get_pair(...) | 0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2621:18:2621:31 | ...::get_pair(...) | 1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2622:9:2622:9 | y | | file://:0:0:0:0 | & | -| main.rs:2622:9:2622:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2622:9:2622:9 | y | &T.0(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2622:9:2622:9 | y | &T.1(2) | main.rs:2579:5:2580:16 | S1 | -| main.rs:2622:9:2622:11 | y.0 | | main.rs:2579:5:2580:16 | S1 | -| main.rs:2629:13:2629:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2629:13:2629:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2629:13:2629:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2629:27:2629:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2629:27:2629:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2629:27:2629:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2629:36:2629:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2632:15:2632:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2632:15:2632:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2632:15:2632:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2633:13:2633:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2633:13:2633:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2633:13:2633:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2633:17:2633:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2634:26:2634:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2634:26:2634:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2634:26:2634:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2634:26:2634:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2636:13:2636:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2636:13:2636:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2636:13:2636:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2638:26:2638:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2638:26:2638:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2638:26:2638:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2638:26:2638:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2643:13:2643:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2643:13:2643:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2643:13:2643:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2643:13:2643:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2643:13:2643:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:26:2643:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2643:26:2643:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2643:26:2643:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2643:26:2643:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2643:26:2643:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:35:2643:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2643:35:2643:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2643:35:2643:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:44:2643:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2644:15:2644:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2644:15:2644:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2644:15:2644:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2644:15:2644:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2644:15:2644:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2645:13:2645:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2645:13:2645:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2645:13:2645:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2645:13:2645:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2645:13:2645:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2647:26:2647:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2647:26:2647:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2647:26:2647:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2647:26:2647:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2659:36:2661:9 | { ... } | | main.rs:2656:5:2656:22 | Path | -| main.rs:2660:13:2660:19 | Path {...} | | main.rs:2656:5:2656:22 | Path | -| main.rs:2663:29:2663:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2663:29:2663:33 | SelfParam | &T | main.rs:2656:5:2656:22 | Path | -| main.rs:2663:59:2665:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2663:59:2665:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2663:59:2665:9 | { ... } | T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2664:13:2664:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2664:13:2664:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2664:13:2664:30 | Ok(...) | T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2664:16:2664:29 | ...::new(...) | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2671:39:2673:9 | { ... } | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2672:13:2672:22 | PathBuf {...} | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2681:18:2681:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2681:18:2681:22 | SelfParam | &T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2681:34:2685:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2681:34:2685:9 | { ... } | &T | main.rs:2656:5:2656:22 | Path | -| main.rs:2683:33:2683:43 | ...::new(...) | | main.rs:2656:5:2656:22 | Path | -| main.rs:2684:13:2684:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2684:13:2684:17 | &path | &T | main.rs:2656:5:2656:22 | Path | -| main.rs:2684:14:2684:17 | path | | main.rs:2656:5:2656:22 | Path | -| main.rs:2689:13:2689:17 | path1 | | main.rs:2656:5:2656:22 | Path | -| main.rs:2689:21:2689:31 | ...::new(...) | | main.rs:2656:5:2656:22 | Path | -| main.rs:2690:13:2690:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2690:13:2690:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2690:13:2690:17 | path2 | T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2690:21:2690:25 | path1 | | main.rs:2656:5:2656:22 | Path | -| main.rs:2690:21:2690:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2690:21:2690:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2690:21:2690:40 | path1.canonicalize() | T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2691:13:2691:17 | path3 | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2691:21:2691:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2691:21:2691:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2691:21:2691:25 | path2 | T | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2691:21:2691:34 | path2.unwrap() | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2693:13:2693:20 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2693:24:2693:37 | ...::new(...) | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2694:24:2694:31 | pathbuf1 | | main.rs:2668:5:2668:25 | PathBuf | -| main.rs:2701:14:2701:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2701:14:2701:18 | SelfParam | &T | main.rs:2700:5:2702:5 | Self [trait MyTrait] | -| main.rs:2708:14:2708:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2708:14:2708:18 | SelfParam | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2708:14:2708:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2708:28:2710:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2709:13:2709:16 | self | | file://:0:0:0:0 | & | -| main.rs:2709:13:2709:16 | self | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2709:13:2709:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2709:13:2709:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2714:14:2714:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2714:14:2714:18 | SelfParam | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2714:14:2714:18 | SelfParam | &T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2714:14:2714:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2714:28:2716:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2715:13:2715:16 | self | | file://:0:0:0:0 | & | -| main.rs:2715:13:2715:16 | self | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2715:13:2715:16 | self | &T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2715:13:2715:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2715:13:2715:18 | self.0 | | main.rs:2704:5:2705:19 | S | -| main.rs:2715:13:2715:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2715:13:2715:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:15:2720:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2720:15:2720:19 | SelfParam | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2720:15:2720:19 | SelfParam | &T.T | main.rs:2719:10:2719:16 | T | -| main.rs:2720:33:2722:9 | { ... } | | main.rs:2704:5:2705:19 | S | -| main.rs:2720:33:2722:9 | { ... } | T | main.rs:2704:5:2705:19 | S | -| main.rs:2720:33:2722:9 | { ... } | T.T | main.rs:2719:10:2719:16 | T | -| main.rs:2721:13:2721:24 | S(...) | | main.rs:2704:5:2705:19 | S | -| main.rs:2721:13:2721:24 | S(...) | T | main.rs:2704:5:2705:19 | S | -| main.rs:2721:13:2721:24 | S(...) | T.T | main.rs:2719:10:2719:16 | T | -| main.rs:2721:15:2721:23 | S(...) | | main.rs:2704:5:2705:19 | S | -| main.rs:2721:15:2721:23 | S(...) | T | main.rs:2719:10:2719:16 | T | -| main.rs:2721:17:2721:20 | self | | file://:0:0:0:0 | & | -| main.rs:2721:17:2721:20 | self | &T | main.rs:2704:5:2705:19 | S | -| main.rs:2721:17:2721:20 | self | &T.T | main.rs:2719:10:2719:16 | T | -| main.rs:2721:17:2721:22 | self.0 | | main.rs:2719:10:2719:16 | T | -| main.rs:2725:14:2725:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2725:48:2742:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2725:48:2742:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:48:2742:5 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2725:48:2742:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:13:2726:13 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2726:13:2726:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:17:2731:9 | if b {...} else {...} | | main.rs:2704:5:2705:19 | S | -| main.rs:2726:17:2731:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:20:2726:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2726:22:2729:9 | { ... } | | main.rs:2704:5:2705:19 | S | -| main.rs:2726:22:2729:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2727:17:2727:17 | y | | main.rs:2704:5:2705:19 | S | -| main.rs:2727:17:2727:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2727:21:2727:38 | ...::default(...) | | main.rs:2704:5:2705:19 | S | -| main.rs:2727:21:2727:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2728:13:2728:13 | y | | main.rs:2704:5:2705:19 | S | -| main.rs:2728:13:2728:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2729:16:2731:9 | { ... } | | main.rs:2704:5:2705:19 | S | -| main.rs:2729:16:2731:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:13:2730:16 | S(...) | | main.rs:2704:5:2705:19 | S | -| main.rs:2730:13:2730:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:15:2730:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2735:13:2735:13 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2735:13:2735:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:13:2735:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2735:17:2735:20 | S(...) | | main.rs:2704:5:2705:19 | S | -| main.rs:2735:17:2735:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:19:2735:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2736:9:2741:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:9:2741:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:12:2736:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2736:14:2739:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2736:14:2739:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2736:14:2739:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2736:14:2739:9 | { ... } | T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2736:14:2739:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2736:14:2739:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2737:17:2737:17 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:17:2737:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:17:2737:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2737:21:2737:21 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2737:21:2737:26 | x.m2() | | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T | main.rs:2704:5:2705:19 | S | -| main.rs:2737:21:2737:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:21:2737:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2738:13:2738:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2738:13:2738:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:13:2738:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:13:2738:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2738:22:2738:22 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T | main.rs:2704:5:2705:19 | S | -| main.rs:2738:22:2738:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2738:22:2738:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2739:16:2741:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2739:16:2741:9 | { ... } | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2739:16:2741:9 | { ... } | T | main.rs:2704:5:2705:19 | S | -| main.rs:2739:16:2741:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:16:2741:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2740:13:2740:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2740:13:2740:23 | ...::new(...) | T | main.rs:2704:5:2705:19 | S | -| main.rs:2740:13:2740:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2740:22:2740:22 | x | | main.rs:2704:5:2705:19 | S | -| main.rs:2740:22:2740:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:22:2740:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2752:5:2752:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2753:5:2753:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2753:20:2753:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2753:41:2753:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2769:5:2769:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2782:5:2782:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2782:5:2782:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2782:5:2782:20 | ...::f(...) | T | main.rs:2700:5:2702:5 | dyn MyTrait | -| main.rs:2782:5:2782:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:16:2782:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2461:18:2461:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:18:2461:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2461:18:2461:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:19:2461:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:22:2461:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2461:25:2461:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:13:2463:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2463:13:2463:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:13:2463:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:21:2463:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2463:21:2463:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:21:2463:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:22:2463:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:27:2463:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:27:2463:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:30:2463:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:30:2463:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2464:13:2464:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2464:13:2464:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2464:18:2464:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2464:18:2464:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2464:18:2464:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2466:13:2466:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2466:13:2466:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2466:21:2466:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2466:21:2466:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2466:22:2466:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2466:28:2466:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2467:13:2467:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2467:18:2467:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2467:18:2467:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2469:13:2469:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2469:13:2469:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:26:2469:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:31:2469:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2469:31:2469:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:31:2469:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:32:2469:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:32:2469:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:35:2469:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:35:2469:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:38:2469:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:38:2469:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2470:13:2470:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2470:18:2470:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2470:18:2470:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2472:13:2472:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2472:13:2472:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2472:26:2472:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2472:31:2472:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2472:31:2472:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2472:31:2472:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2472:32:2472:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2472:32:2472:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2472:35:2472:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2473:13:2473:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2473:18:2473:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2473:18:2473:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2475:17:2475:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2475:17:2475:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2475:17:2475:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2475:28:2475:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2475:28:2475:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2475:28:2475:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2475:29:2475:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2475:29:2475:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2475:36:2475:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2475:36:2475:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2475:43:2475:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2475:43:2475:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2476:13:2476:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2476:13:2476:13 | s | | file://:0:0:0:0 | & | +| main.rs:2476:13:2476:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2476:13:2476:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2476:18:2476:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2476:18:2476:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2476:18:2476:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2476:18:2476:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2476:19:2476:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2476:19:2476:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2476:19:2476:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2477:13:2477:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2477:13:2477:13 | s | | file://:0:0:0:0 | & | +| main.rs:2477:13:2477:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2477:13:2477:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2477:18:2477:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2477:18:2477:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2477:18:2477:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2477:18:2477:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2477:23:2477:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2477:23:2477:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2477:23:2477:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2478:13:2478:13 | s | | file://:0:0:0:0 | & | +| main.rs:2478:13:2478:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2478:18:2478:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2478:18:2478:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2478:18:2478:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2480:13:2480:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2480:13:2480:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2481:9:2485:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2481:9:2485:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2482:13:2482:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2482:26:2482:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2482:26:2482:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2483:13:2483:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2483:26:2483:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2483:26:2483:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2484:13:2484:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2484:26:2484:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2484:26:2484:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2486:13:2486:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2486:18:2486:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2486:18:2486:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2488:13:2488:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2488:13:2488:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2488:13:2488:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2489:9:2493:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2489:9:2493:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2489:9:2493:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2489:10:2493:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2489:10:2493:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2490:13:2490:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2490:26:2490:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2490:26:2490:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2491:13:2491:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2491:26:2491:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2491:26:2491:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2492:13:2492:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2492:26:2492:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2492:26:2492:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2494:13:2494:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2494:13:2494:13 | s | | file://:0:0:0:0 | & | +| main.rs:2494:13:2494:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2494:18:2494:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2494:18:2494:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2494:18:2494:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2496:13:2496:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2496:13:2496:21 | callables | [T;...] | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2496:25:2496:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2496:25:2496:81 | [...] | [T;...] | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2496:26:2496:42 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2496:45:2496:61 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2496:64:2496:80 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2497:13:2497:13 | c | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2498:12:2498:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2498:12:2498:20 | callables | [T;...] | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2500:17:2500:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2500:26:2500:26 | c | | main.rs:2444:5:2444:24 | MyCallable | +| main.rs:2500:26:2500:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2505:13:2505:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2505:13:2505:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:18:2505:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:18:2505:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2505:18:2505:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:21:2505:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2506:13:2506:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:13:2506:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:18:2506:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2506:18:2506:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2506:18:2506:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:18:2506:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:19:2506:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:19:2506:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2506:19:2506:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:19:2506:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:24:2506:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:24:2506:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2507:13:2507:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2507:13:2507:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:21:2507:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:21:2507:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2507:21:2507:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:24:2507:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:13:2508:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2508:13:2508:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:18:2508:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2508:18:2508:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:13:2509:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2509:26:2509:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2510:13:2510:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2510:18:2510:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2510:19:2510:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2510:19:2510:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2510:20:2510:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2510:26:2510:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2510:32:2510:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2510:38:2510:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2512:13:2512:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2512:13:2512:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2513:9:2516:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2513:9:2516:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2514:20:2514:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2515:18:2515:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2517:13:2517:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2517:13:2517:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2517:18:2517:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2517:18:2517:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2521:26:2521:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2521:29:2521:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2521:32:2521:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2524:13:2524:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2524:13:2524:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2524:13:2524:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2524:32:2524:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2524:32:2524:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2524:32:2524:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2524:32:2524:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2524:32:2524:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2524:32:2524:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2524:33:2524:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2524:39:2524:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2524:42:2524:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2525:13:2525:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2525:13:2525:13 | u | | file://:0:0:0:0 | & | +| main.rs:2525:18:2525:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2525:18:2525:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2525:18:2525:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2527:22:2527:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2527:22:2527:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2527:22:2527:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2527:23:2527:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2527:29:2527:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2527:32:2527:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:13:2530:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2530:13:2530:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2530:13:2530:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:13:2530:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2530:21:2530:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2530:21:2530:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2530:21:2530:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:21:2530:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2530:31:2530:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2530:31:2530:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:31:2530:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2530:32:2530:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2530:38:2530:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:41:2530:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:13:2531:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:13:2531:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2531:13:2531:13 | u | | file://:0:0:0:0 | & | +| main.rs:2531:18:2531:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2531:18:2531:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2531:18:2531:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:18:2531:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2533:13:2533:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2533:13:2533:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2533:13:2533:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2533:13:2533:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2533:32:2533:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2533:32:2533:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2533:32:2533:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2533:32:2533:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2533:32:2533:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2533:32:2533:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2533:32:2533:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2533:33:2533:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2533:39:2533:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2533:42:2533:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2534:13:2534:13 | u | | file://:0:0:0:0 | & | +| main.rs:2534:13:2534:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2534:18:2534:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2534:18:2534:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2534:18:2534:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2534:18:2534:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2536:17:2536:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2536:17:2536:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2536:17:2536:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2536:25:2536:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2536:25:2536:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2536:25:2536:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2537:9:2537:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2537:9:2537:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2537:9:2537:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2537:20:2537:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2538:13:2538:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2538:13:2538:13 | u | | file://:0:0:0:0 | & | +| main.rs:2538:18:2538:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2538:18:2538:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2538:18:2538:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2540:33:2540:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:36:2540:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:45:2540:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:48:2540:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:17:2547:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2547:17:2547:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:17:2547:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2547:17:2547:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2547:17:2547:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2547:17:2547:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2547:17:2547:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:24:2547:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2547:24:2547:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:24:2547:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2547:24:2547:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2547:24:2547:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2547:24:2547:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2547:24:2547:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:9:2548:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2548:9:2548:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:9:2548:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2548:9:2548:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2548:9:2548:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2548:9:2548:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2548:9:2548:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:9:2548:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2548:9:2548:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2548:9:2548:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2548:9:2548:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2548:9:2548:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:21:2548:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:24:2548:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2548:24:2548:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2548:24:2548:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2548:24:2548:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:33:2548:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2548:33:2548:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2549:9:2549:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2549:9:2549:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:9:2549:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2549:9:2549:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2549:9:2549:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2549:9:2549:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2549:9:2549:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2549:9:2549:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2549:9:2549:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2549:9:2549:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2549:9:2549:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2549:9:2549:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2549:21:2549:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:24:2549:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2549:24:2549:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2549:24:2549:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2549:24:2549:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2549:33:2549:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2549:33:2549:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2550:13:2550:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2550:13:2550:15 | key | | file://:0:0:0:0 | & | +| main.rs:2550:13:2550:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:20:2550:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2550:20:2550:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:20:2550:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2550:20:2550:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2550:20:2550:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2550:20:2550:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2550:20:2550:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2550:20:2550:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2550:20:2550:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:20:2550:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2550:20:2550:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2550:20:2550:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2550:20:2550:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:13:2551:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2551:13:2551:17 | value | | file://:0:0:0:0 | & | +| main.rs:2551:13:2551:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2551:13:2551:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:13:2551:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2551:13:2551:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:22:2551:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2551:22:2551:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:22:2551:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2551:22:2551:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2551:22:2551:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:22:2551:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2551:22:2551:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:22:2551:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2551:22:2551:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:22:2551:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2551:22:2551:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:22:2551:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2551:22:2551:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2552:13:2552:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2552:13:2552:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2552:13:2552:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:13:2552:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2552:14:2552:16 | key | | file://:0:0:0:0 | & | +| main.rs:2552:14:2552:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:19:2552:23 | value | | file://:0:0:0:0 | & | +| main.rs:2552:19:2552:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2552:19:2552:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:19:2552:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2552:19:2552:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2552:29:2552:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2552:29:2552:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:29:2552:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2552:29:2552:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2552:29:2552:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:29:2552:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2552:29:2552:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2552:29:2552:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2552:29:2552:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:29:2552:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2552:29:2552:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:29:2552:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2552:29:2552:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2553:13:2553:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2553:13:2553:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2553:13:2553:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2553:13:2553:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2553:14:2553:16 | key | | file://:0:0:0:0 | & | +| main.rs:2553:14:2553:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2553:19:2553:23 | value | | file://:0:0:0:0 | & | +| main.rs:2553:19:2553:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2553:19:2553:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2553:19:2553:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2553:19:2553:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2553:29:2553:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2553:29:2553:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2553:29:2553:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2553:29:2553:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2553:29:2553:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2553:29:2553:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2553:29:2553:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2553:29:2553:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2553:30:2553:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2553:30:2553:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2553:30:2553:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2553:30:2553:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2553:30:2553:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2553:30:2553:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2553:30:2553:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2557:17:2557:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2557:26:2557:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2557:26:2557:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2559:23:2559:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2559:23:2559:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2559:27:2559:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2559:27:2559:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2561:13:2561:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2561:13:2561:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2561:18:2561:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:40:2575:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2573:40:2575:9 | { ... } | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2573:40:2575:9 | { ... } | T.T | main.rs:2572:10:2572:19 | T | +| main.rs:2574:13:2574:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2574:13:2574:16 | None | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2574:13:2574:16 | None | T.T | main.rs:2572:10:2572:19 | T | +| main.rs:2577:30:2579:9 | { ... } | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2577:30:2579:9 | { ... } | T | main.rs:2572:10:2572:19 | T | +| main.rs:2578:13:2578:28 | S1(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2578:13:2578:28 | S1(...) | T | main.rs:2572:10:2572:19 | T | +| main.rs:2578:16:2578:27 | ...::default(...) | | main.rs:2572:10:2572:19 | T | +| main.rs:2581:19:2581:22 | SelfParam | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2581:19:2581:22 | SelfParam | T | main.rs:2572:10:2572:19 | T | +| main.rs:2581:33:2583:9 | { ... } | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2581:33:2583:9 | { ... } | T | main.rs:2572:10:2572:19 | T | +| main.rs:2582:13:2582:16 | self | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2582:13:2582:16 | self | T | main.rs:2572:10:2572:19 | T | +| main.rs:2594:15:2594:15 | x | | main.rs:2594:12:2594:12 | T | +| main.rs:2594:26:2596:5 | { ... } | | main.rs:2594:12:2594:12 | T | +| main.rs:2595:9:2595:9 | x | | main.rs:2594:12:2594:12 | T | +| main.rs:2599:13:2599:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2599:13:2599:14 | x1 | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2599:13:2599:14 | x1 | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2600:13:2600:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2600:13:2600:14 | x2 | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2600:13:2600:14 | x2 | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2601:13:2601:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2601:13:2601:14 | x3 | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2601:13:2601:14 | x3 | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | +| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2602:13:2602:14 | x4 | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2602:13:2602:14 | x4 | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2602:18:2602:48 | ...::method(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2602:18:2602:48 | ...::method(...) | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2602:35:2602:47 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2602:35:2602:47 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2603:13:2603:14 | x5 | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2603:13:2603:14 | x5 | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2603:18:2603:42 | ...::method(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2603:18:2603:42 | ...::method(...) | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2603:29:2603:41 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2603:29:2603:41 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2604:13:2604:14 | x6 | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2604:13:2604:14 | x6 | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2604:18:2604:45 | S4::<...>(...) | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2604:18:2604:45 | S4::<...>(...) | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2604:27:2604:44 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2605:13:2605:14 | x7 | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2605:13:2605:14 | x7 | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2605:18:2605:23 | S4(...) | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2605:18:2605:23 | S4(...) | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2605:21:2605:22 | S2 | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2606:13:2606:14 | x8 | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2606:13:2606:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2606:18:2606:22 | S4(...) | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2606:18:2606:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2606:21:2606:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2607:13:2607:14 | x9 | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2607:13:2607:14 | x9 | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2607:18:2607:34 | S4(...) | | main.rs:2588:5:2588:27 | S4 | +| main.rs:2607:18:2607:34 | S4(...) | T4 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2607:21:2607:33 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2608:13:2608:15 | x10 | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2608:13:2608:15 | x10 | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2608:19:2611:9 | S5::<...> {...} | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2608:19:2611:9 | S5::<...> {...} | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2610:20:2610:37 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2612:13:2612:15 | x11 | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2612:13:2612:15 | x11 | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2612:19:2612:34 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2612:19:2612:34 | S5 {...} | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2612:31:2612:32 | S2 | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2613:13:2613:15 | x12 | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2613:13:2613:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:19:2613:33 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2613:19:2613:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:31:2613:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2614:13:2614:15 | x13 | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2614:13:2614:15 | x13 | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2614:19:2617:9 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | +| main.rs:2614:19:2617:9 | S5 {...} | T5 | main.rs:2569:5:2570:14 | S2 | +| main.rs:2616:20:2616:32 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | +| main.rs:2618:13:2618:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2618:19:2618:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2618:30:2618:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:13:2619:15 | x15 | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2619:13:2619:15 | x15 | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2619:19:2619:37 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | +| main.rs:2619:19:2619:37 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | +| main.rs:2628:35:2630:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2628:35:2630:9 | { ... } | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2628:35:2630:9 | { ... } | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2629:13:2629:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2629:13:2629:26 | TupleExpr | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2629:13:2629:26 | TupleExpr | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2629:14:2629:18 | S1 {...} | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2629:21:2629:25 | S1 {...} | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2631:16:2631:19 | SelfParam | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2635:13:2635:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2635:13:2635:13 | a | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2635:13:2635:13 | a | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2635:17:2635:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2635:17:2635:30 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2635:17:2635:30 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2636:17:2636:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2636:17:2636:17 | b | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2636:17:2636:17 | b | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2636:21:2636:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2636:21:2636:34 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2636:21:2636:34 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:13:2637:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2637:13:2637:18 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:13:2637:18 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:14:2637:14 | c | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:17:2637:17 | d | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:22:2637:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2637:22:2637:35 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2637:22:2637:35 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:13:2638:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2638:13:2638:22 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:13:2638:22 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:18:2638:18 | e | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:21:2638:21 | f | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:26:2638:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2638:26:2638:39 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2638:26:2638:39 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:13:2639:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2639:13:2639:26 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:13:2639:26 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:18:2639:18 | g | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:25:2639:25 | h | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:30:2639:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2639:30:2639:43 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2639:30:2639:43 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2641:9:2641:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2641:9:2641:9 | a | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2641:9:2641:9 | a | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2641:9:2641:11 | a.0 | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2642:9:2642:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2642:9:2642:9 | b | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2642:9:2642:9 | b | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2642:9:2642:11 | b.1 | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2643:9:2643:9 | c | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2644:9:2644:9 | d | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2645:9:2645:9 | e | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2646:9:2646:9 | f | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2647:9:2647:9 | g | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2648:9:2648:9 | h | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2653:13:2653:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2653:17:2653:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2654:13:2654:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2654:17:2654:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2655:13:2655:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2655:13:2655:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2655:13:2655:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2655:20:2655:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2655:20:2655:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2655:20:2655:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2655:21:2655:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2655:24:2655:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2656:13:2656:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2656:22:2656:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2656:22:2656:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2656:22:2656:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2656:22:2656:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2657:13:2657:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2657:23:2657:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2657:23:2657:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2657:23:2657:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2657:23:2657:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2659:13:2659:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2659:13:2659:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:13:2659:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:20:2659:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2659:20:2659:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:20:2659:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2659:20:2659:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:20:2659:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:21:2659:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:24:2659:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:15:2660:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2660:15:2660:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:15:2660:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:13:2661:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2661:13:2661:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:13:2661:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:14:2661:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:17:2661:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:30:2661:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2661:30:2661:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2661:30:2661:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2661:30:2661:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2662:13:2662:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2662:13:2662:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2662:13:2662:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2662:25:2662:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2662:25:2662:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2662:25:2662:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2662:25:2662:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2664:13:2664:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2664:17:2664:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2664:17:2664:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2664:17:2664:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2664:17:2664:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2666:13:2666:13 | y | | file://:0:0:0:0 | & | +| main.rs:2666:13:2666:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2666:13:2666:13 | y | &T.0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2666:13:2666:13 | y | &T.1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2666:17:2666:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2666:17:2666:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2666:17:2666:31 | &... | &T.0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2666:17:2666:31 | &... | &T.1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2666:18:2666:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2666:18:2666:31 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2666:18:2666:31 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2667:9:2667:9 | y | | file://:0:0:0:0 | & | +| main.rs:2667:9:2667:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2667:9:2667:9 | y | &T.0(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2667:9:2667:9 | y | &T.1(2) | main.rs:2624:5:2625:16 | S1 | +| main.rs:2667:9:2667:11 | y.0 | | main.rs:2624:5:2625:16 | S1 | +| main.rs:2674:13:2674:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2674:13:2674:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2674:13:2674:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2674:27:2674:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2674:27:2674:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2674:27:2674:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2674:36:2674:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:15:2677:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2677:15:2677:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2677:15:2677:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2678:13:2678:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2678:13:2678:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2678:13:2678:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2678:17:2678:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:26:2679:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2679:26:2679:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2679:26:2679:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2679:26:2679:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2681:13:2681:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2681:13:2681:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2681:13:2681:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:26:2683:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2683:26:2683:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2683:26:2683:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2683:26:2683:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2688:13:2688:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2688:13:2688:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:13:2688:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2688:13:2688:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:13:2688:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2688:26:2688:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2688:26:2688:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:26:2688:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2688:26:2688:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:26:2688:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2688:35:2688:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2688:35:2688:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:35:2688:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2688:44:2688:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:15:2689:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2689:15:2689:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:15:2689:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2689:15:2689:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:15:2689:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2690:13:2690:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2690:13:2690:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2690:13:2690:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2690:13:2690:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2690:13:2690:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:26:2692:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2692:26:2692:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2692:26:2692:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2692:26:2692:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2704:36:2706:9 | { ... } | | main.rs:2701:5:2701:22 | Path | +| main.rs:2705:13:2705:19 | Path {...} | | main.rs:2701:5:2701:22 | Path | +| main.rs:2708:29:2708:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2708:29:2708:33 | SelfParam | &T | main.rs:2701:5:2701:22 | Path | +| main.rs:2708:59:2710:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2708:59:2710:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2708:59:2710:9 | { ... } | T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2709:13:2709:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2709:13:2709:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2709:13:2709:30 | Ok(...) | T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2709:16:2709:29 | ...::new(...) | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2716:39:2718:9 | { ... } | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2717:13:2717:22 | PathBuf {...} | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2726:18:2726:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2726:18:2726:22 | SelfParam | &T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2726:34:2730:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2726:34:2730:9 | { ... } | &T | main.rs:2701:5:2701:22 | Path | +| main.rs:2728:33:2728:43 | ...::new(...) | | main.rs:2701:5:2701:22 | Path | +| main.rs:2729:13:2729:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2729:13:2729:17 | &path | &T | main.rs:2701:5:2701:22 | Path | +| main.rs:2729:14:2729:17 | path | | main.rs:2701:5:2701:22 | Path | +| main.rs:2734:13:2734:17 | path1 | | main.rs:2701:5:2701:22 | Path | +| main.rs:2734:21:2734:31 | ...::new(...) | | main.rs:2701:5:2701:22 | Path | +| main.rs:2735:13:2735:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2735:13:2735:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2735:13:2735:17 | path2 | T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2735:21:2735:25 | path1 | | main.rs:2701:5:2701:22 | Path | +| main.rs:2735:21:2735:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2735:21:2735:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2735:21:2735:40 | path1.canonicalize() | T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2736:13:2736:17 | path3 | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2736:21:2736:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2736:21:2736:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2736:21:2736:25 | path2 | T | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2736:21:2736:34 | path2.unwrap() | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2738:13:2738:20 | pathbuf1 | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2738:24:2738:37 | ...::new(...) | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2739:24:2739:31 | pathbuf1 | | main.rs:2713:5:2713:25 | PathBuf | +| main.rs:2746:14:2746:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2746:14:2746:18 | SelfParam | &T | main.rs:2745:5:2747:5 | Self [trait MyTrait] | +| main.rs:2753:14:2753:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2753:14:2753:18 | SelfParam | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2753:14:2753:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2753:28:2755:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2754:13:2754:16 | self | | file://:0:0:0:0 | & | +| main.rs:2754:13:2754:16 | self | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2754:13:2754:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2754:13:2754:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:14:2759:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2759:14:2759:18 | SelfParam | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2759:14:2759:18 | SelfParam | &T.T | main.rs:2749:5:2750:19 | S | +| main.rs:2759:14:2759:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:28:2761:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2760:13:2760:16 | self | | file://:0:0:0:0 | & | +| main.rs:2760:13:2760:16 | self | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2760:13:2760:16 | self | &T.T | main.rs:2749:5:2750:19 | S | +| main.rs:2760:13:2760:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2760:13:2760:18 | self.0 | | main.rs:2749:5:2750:19 | S | +| main.rs:2760:13:2760:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2760:13:2760:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2765:15:2765:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2765:15:2765:19 | SelfParam | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2765:15:2765:19 | SelfParam | &T.T | main.rs:2764:10:2764:16 | T | +| main.rs:2765:33:2767:9 | { ... } | | main.rs:2749:5:2750:19 | S | +| main.rs:2765:33:2767:9 | { ... } | T | main.rs:2749:5:2750:19 | S | +| main.rs:2765:33:2767:9 | { ... } | T.T | main.rs:2764:10:2764:16 | T | +| main.rs:2766:13:2766:24 | S(...) | | main.rs:2749:5:2750:19 | S | +| main.rs:2766:13:2766:24 | S(...) | T | main.rs:2749:5:2750:19 | S | +| main.rs:2766:13:2766:24 | S(...) | T.T | main.rs:2764:10:2764:16 | T | +| main.rs:2766:15:2766:23 | S(...) | | main.rs:2749:5:2750:19 | S | +| main.rs:2766:15:2766:23 | S(...) | T | main.rs:2764:10:2764:16 | T | +| main.rs:2766:17:2766:20 | self | | file://:0:0:0:0 | & | +| main.rs:2766:17:2766:20 | self | &T | main.rs:2749:5:2750:19 | S | +| main.rs:2766:17:2766:20 | self | &T.T | main.rs:2764:10:2764:16 | T | +| main.rs:2766:17:2766:22 | self.0 | | main.rs:2764:10:2764:16 | T | +| main.rs:2770:14:2770:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2770:48:2787:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2770:48:2787:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2770:48:2787:5 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2770:48:2787:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:13:2771:13 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2771:13:2771:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:17:2776:9 | if b {...} else {...} | | main.rs:2749:5:2750:19 | S | +| main.rs:2771:17:2776:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:20:2771:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2771:22:2774:9 | { ... } | | main.rs:2749:5:2750:19 | S | +| main.rs:2771:22:2774:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2772:17:2772:17 | y | | main.rs:2749:5:2750:19 | S | +| main.rs:2772:17:2772:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2772:21:2772:38 | ...::default(...) | | main.rs:2749:5:2750:19 | S | +| main.rs:2772:21:2772:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2773:13:2773:13 | y | | main.rs:2749:5:2750:19 | S | +| main.rs:2773:13:2773:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2774:16:2776:9 | { ... } | | main.rs:2749:5:2750:19 | S | +| main.rs:2774:16:2776:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2775:13:2775:16 | S(...) | | main.rs:2749:5:2750:19 | S | +| main.rs:2775:13:2775:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2775:15:2775:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:13:2780:13 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2780:13:2780:13 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2780:13:2780:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:13:2780:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:17:2780:20 | S(...) | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2780:17:2780:20 | S(...) | | main.rs:2749:5:2750:19 | S | +| main.rs:2780:17:2780:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:17:2780:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:19:2780:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:9:2786:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2781:9:2786:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T | main.rs:2749:5:2750:19 | S | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T | main.rs:2749:5:2750:19 | S | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:9:2786:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:12:2781:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2781:14:2784:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2781:14:2784:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2781:14:2784:9 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2781:14:2784:9 | { ... } | T | main.rs:2749:5:2750:19 | S | +| main.rs:2781:14:2784:9 | { ... } | T.T | main.rs:2749:5:2750:19 | S | +| main.rs:2781:14:2784:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:14:2784:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:17:2782:17 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2782:17:2782:17 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2782:17:2782:17 | x | T | main.rs:2749:5:2750:19 | S | +| main.rs:2782:17:2782:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:17:2782:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:21:2782:21 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2782:21:2782:21 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2782:21:2782:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:21:2782:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:21:2782:26 | x.m2() | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2782:21:2782:26 | x.m2() | | main.rs:2749:5:2750:19 | S | +| main.rs:2782:21:2782:26 | x.m2() | T | main.rs:2749:5:2750:19 | S | +| main.rs:2782:21:2782:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:21:2782:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:13:2783:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2783:13:2783:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2783:13:2783:23 | ...::new(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2783:13:2783:23 | ...::new(...) | T | main.rs:2749:5:2750:19 | S | +| main.rs:2783:13:2783:23 | ...::new(...) | T.T | main.rs:2749:5:2750:19 | S | +| main.rs:2783:13:2783:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:13:2783:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:22:2783:22 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2783:22:2783:22 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2783:22:2783:22 | x | T | main.rs:2749:5:2750:19 | S | +| main.rs:2783:22:2783:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:22:2783:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:16:2786:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2784:16:2786:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2784:16:2786:9 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2784:16:2786:9 | { ... } | T | main.rs:2749:5:2750:19 | S | +| main.rs:2784:16:2786:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:16:2786:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2785:13:2785:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2785:13:2785:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2785:13:2785:23 | ...::new(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2785:13:2785:23 | ...::new(...) | T | main.rs:2749:5:2750:19 | S | +| main.rs:2785:13:2785:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2785:13:2785:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2785:22:2785:22 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2785:22:2785:22 | x | | main.rs:2749:5:2750:19 | S | +| main.rs:2785:22:2785:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2785:22:2785:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2797:5:2797:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2798:5:2798:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2798:20:2798:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2798:41:2798:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2815:5:2815:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2828:5:2828:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2828:5:2828:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2828:5:2828:20 | ...::f(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | +| main.rs:2828:5:2828:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2828:16:2828:19 | true | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 9022f996e8cb09f051d80395919eaa59bf0622bc Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 29 Oct 2025 10:07:59 +0100 Subject: [PATCH 420/965] Rust: Improve handling of occurrences of the `Self` type parameter --- .../lib/codeql/rust/internal/TypeMention.qll | 73 ++++++++++++++++--- .../test/library-tests/type-inference/main.rs | 6 +- .../type-inference/type-inference.expected | 13 ++-- 3 files changed, 70 insertions(+), 22 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index d015a0bf656..b7aa7c42de2 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -151,25 +151,61 @@ class NonAliasPathTypeMention extends PathTypeMention { result = this.getQualifier().getSegment().getGenericArgList().getTypeArg(i) } - private TypeMention getPositionalTypeArgument(int i) { - result = this.getPositionalTypeArgument0(i) + /** + * Gets the type mention that instantiates the implicit `Self` type parameter + * for this path, if it occurs in the position of a trait bound. + */ + private TypeMention getSelfTypeParameter() { + exists(ImplItemNode impl | this = impl.getTraitPath() and result = impl.(Impl).getSelfTy()) or + exists(Trait subTrait | + this = subTrait.getATypeBound().getTypeRepr().(PathTypeRepr).getPath() and + result.(SelfTypeParameterMention).getTrait() = subTrait + ) + or + exists(TypeParamItemNode tp | this = tp.getABoundPath() and result = tp) + } + + private Type getPositionalTypeArgument(int i, TypePath path) { + result = this.getPositionalTypeArgument0(i).resolveTypeAt(path) + or + result = this.getDefaultPositionalTypeArgument(i, path) + } + + private Type getDefaultPositionalTypeArgument(int i, TypePath path) { // If a type argument is not given in the path, then we use the default for // the type parameter if one exists for the type. not exists(this.getPositionalTypeArgument0(i)) and - result = this.resolveRootType().getTypeParameterDefault(i) and // Defaults only apply to type mentions in type annotations - this = any(PathTypeRepr ptp).getPath().getQualifier*() + this = any(PathTypeRepr ptp).getPath().getQualifier*() and + exists(Type ty, TypePath prefix | + ty = this.resolveRootType().getTypeParameterDefault(i).resolveTypeAt(prefix) and + if not ty = TSelfTypeParameter(resolved) + then result = ty and path = prefix + else + // When a default contains an implicit `Self` type parameter, it should + // be substituted for the type that implements the trait. + exists(TypePath suffix | + path = prefix.append(suffix) and + result = this.getSelfTypeParameter().resolveTypeAt(suffix) + ) + ) + } + + /** + * Gets the type for this path for the type parameter `tp` at `path`, when the + * type parameter does not correspond directly to a type mention. + */ + private Type getTypeForTypeParameterAt(TypeParameter tp, TypePath path) { + exists(int i | + result = this.getPositionalTypeArgument(pragma[only_bind_into](i), path) and + tp = this.resolveRootType().getPositionalTypeParameter(pragma[only_bind_into](i)) + ) } /** Gets the type mention in this path for the type parameter `tp`, if any. */ pragma[nomagic] private TypeMention getTypeMentionForTypeParameter(TypeParameter tp) { - exists(int i | - result = this.getPositionalTypeArgument(pragma[only_bind_into](i)) and - tp = this.resolveRootType().getPositionalTypeParameter(pragma[only_bind_into](i)) - ) - or exists(TypeAlias alias | result = this.getAnAssocTypeArgument(alias) and tp = TAssociatedTypeTypeParameter(alias) @@ -237,9 +273,17 @@ class NonAliasPathTypeMention extends PathTypeMention { typePath.isEmpty() and result = this.resolveRootType() or - exists(TypeParameter tp, TypePath suffix | - result = this.getTypeMentionForTypeParameter(tp).resolveTypeAt(suffix) and - typePath = TypePath::cons(tp, suffix) + exists(TypeParameter tp, TypePath suffix | typePath = TypePath::cons(tp, suffix) | + result = this.getTypeForTypeParameterAt(tp, suffix) + or + result = this.getTypeMentionForTypeParameter(tp).resolveTypeAt(suffix) + ) + or + // When the path refers to a trait, then the implicit `Self` type parameter + // should be instantiated from the context. + exists(TypePath suffix | + result = this.getSelfTypeParameter().resolveTypeAt(suffix) and + typePath = TypePath::cons(TSelfTypeParameter(resolved), suffix) ) } } @@ -296,6 +340,11 @@ class TraitMention extends TypeMention instanceof TraitItemNode { typePath.isEmpty() and result = TTrait(this) or + // The implicit `Self` type parameter occurs at the `Self` type parameter + // position. + typePath = TypePath::singleton(TSelfTypeParameter(this)) and + result = TSelfTypeParameter(this) + or exists(TypeAlias alias | alias = super.getAnAssocItem() and typePath = TypePath::singleton(result) and diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 7dec2061a32..c124f8d219c 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -666,7 +666,7 @@ mod trait_default_self_type_parameter { // The trait bound on `T` uses the default for `A` which contains `Self` fn tp_uses_default(thing: S) -> i64 { - let _ms = thing.get_a(); // $ target=TraitWithSelfTp::get_a MISSING: type=_ms:T.S + let _ms = thing.get_a(); // $ target=TraitWithSelfTp::get_a type=_ms:T.S 0 } @@ -675,7 +675,7 @@ mod trait_default_self_type_parameter { fn get_a_through_tp(thing: &S) { // `thing` is a `TraitWithSelfTp` through the trait hierarchy - let _ms = get_a(thing); // $ target=get_a MISSING: type=_ms:T.S + let _ms = get_a(thing); // $ target=get_a type=_ms:T.S } struct MyStruct { @@ -693,7 +693,7 @@ mod trait_default_self_type_parameter { pub fn test() { let s = MyStruct { value: 0 }; - let _ms = get_a(&s); // $ target=get_a MISSING: type=_ms:T.MyStruct + let _ms = get_a(&s); // $ target=get_a type=_ms:T.MyStruct } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 8e8e76ebde4..829f15bc01a 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2013,18 +2013,18 @@ inferType | main.rs:668:44:668:48 | thing | | main.rs:668:24:668:41 | S | | main.rs:668:61:671:5 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:669:13:669:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:669:13:669:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:669:13:669:15 | _ms | T | main.rs:668:24:668:41 | S | | main.rs:669:19:669:23 | thing | | main.rs:668:24:668:41 | S | | main.rs:669:19:669:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | -| main.rs:669:19:669:31 | thing.get_a() | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:669:19:669:31 | thing.get_a() | T | main.rs:668:24:668:41 | S | | main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:676:55:676:59 | thing | | file://:0:0:0:0 | & | | main.rs:676:55:676:59 | thing | &T | main.rs:676:25:676:52 | S | | main.rs:678:13:678:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:678:13:678:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:678:13:678:15 | _ms | T | main.rs:676:25:676:52 | S | | main.rs:678:19:678:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:678:19:678:30 | get_a(...) | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:678:19:678:30 | get_a(...) | T | main.rs:676:25:676:52 | S | | main.rs:678:25:678:29 | thing | | file://:0:0:0:0 | & | | main.rs:678:25:678:29 | thing | &T | main.rs:676:25:676:52 | S | | main.rs:687:18:687:22 | SelfParam | | file://:0:0:0:0 | & | @@ -2041,9 +2041,9 @@ inferType | main.rs:695:17:695:37 | MyStruct {...} | | main.rs:681:5:683:5 | MyStruct | | main.rs:695:35:695:35 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:696:13:696:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:696:13:696:15 | _ms | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:696:13:696:15 | _ms | T | main.rs:681:5:683:5 | MyStruct | | main.rs:696:19:696:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:696:19:696:27 | get_a(...) | T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | +| main.rs:696:19:696:27 | get_a(...) | T | main.rs:681:5:683:5 | MyStruct | | main.rs:696:25:696:26 | &s | | file://:0:0:0:0 | & | | main.rs:696:25:696:26 | &s | &T | main.rs:681:5:683:5 | MyStruct | | main.rs:696:26:696:26 | s | | main.rs:681:5:683:5 | MyStruct | @@ -4776,7 +4776,6 @@ inferType | main.rs:2312:16:2312:21 | self.0 | | main.rs:2307:10:2307:17 | T | | main.rs:2312:31:2312:35 | other | | main.rs:2305:5:2305:19 | S | | main.rs:2312:31:2312:35 | other | T | main.rs:2307:10:2307:17 | T | -| main.rs:2312:31:2312:37 | other.0 | | main.rs:2267:5:2272:5 | Self [trait MyAdd] | | main.rs:2312:31:2312:37 | other.0 | | main.rs:2307:10:2307:17 | T | | main.rs:2320:19:2320:22 | SelfParam | | main.rs:2305:5:2305:19 | S | | main.rs:2320:19:2320:22 | SelfParam | T | main.rs:2316:10:2316:17 | T | From 9f498df9fa78d298d1dd8bf4d74290857726ec88 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 29 Oct 2025 10:42:59 +0100 Subject: [PATCH 421/965] Swift: Do not include the embedded resources --- swift/third_party/load.bzl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index d19345a1880..d13c127102d 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,6 +5,8 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main + "resource-dir-macOS-swift-6.2-RELEASE-128.zip": "64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e", + "resource-dir-Linux-swift-6.2-RELEASE-128.zip": "44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 2505c8f3e39dc75f417e74dedb151d6431c80c07 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 29 Oct 2025 11:06:50 +0100 Subject: [PATCH 422/965] Swift: Improve docs --- docs/codeql/codeql-overview/system-requirements.rst | 4 ++++ docs/codeql/reusables/supported-versions-compilers.rst | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/codeql/codeql-overview/system-requirements.rst b/docs/codeql/codeql-overview/system-requirements.rst index 100b75445b2..6ade30b4901 100644 --- a/docs/codeql/codeql-overview/system-requirements.rst +++ b/docs/codeql/codeql-overview/system-requirements.rst @@ -46,6 +46,10 @@ For Rust extraction: - ``rustup`` and ``cargo`` must be installed. +For Swift extraction: + +- Only macOS is supported. + For Java extraction: - There must be a ``java`` or ``java.exe`` executable available on the ``PATH``, and the ``JAVA_HOME`` environment variable must point to the corresponding JDK's home directory. diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 0c729748dd4..fb204bc4685 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -26,8 +26,8 @@ Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" - Swift [12]_,"Swift 5.4-6.1","Swift compiler","``.swift``" - TypeScript [13]_,"2.6-5.9",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + Swift [12]_ [13]_,"Swift 5.4-6.1","Swift compiler","``.swift``" + TypeScript [14]_,"2.6-5.9",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group @@ -43,4 +43,5 @@ .. [10] Requires glibc 2.17. .. [11] Requires ``rustup`` and ``cargo`` to be installed. Features from nightly toolchains are not supported. .. [12] Support for the analysis of Swift requires macOS. - .. [13] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. + .. [13] Embedded Swift is not supported. + .. [14] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. From 6906c88781dc2ad268345359cebdb536c9f28652 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 29 Oct 2025 11:08:16 +0100 Subject: [PATCH 423/965] Swift: Update change note --- swift/ql/lib/change-notes/2025-10-22-swift-6.2.md | 1 + 1 file changed, 1 insertion(+) diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md index 145037125dd..97f3e45d6f8 100644 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md @@ -2,3 +2,4 @@ category: majorAnalysis --- * Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. From ce8cffc331b128d5a11e93bbd44132e5ad08e2d9 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 29 Oct 2025 11:18:02 +0100 Subject: [PATCH 424/965] Rust: Address comments --- .../lib/codeql/rust/internal/TypeMention.qll | 26 +- .../PathResolutionConsistency.expected | 4 +- .../test/library-tests/type-inference/main.rs | 1 - .../type-inference/type-inference.expected | 7374 ++++++++--------- 4 files changed, 3704 insertions(+), 3701 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index b7aa7c42de2..3a91a55e3fb 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -143,7 +143,11 @@ class NonAliasPathTypeMention extends PathTypeMention { ) } - private TypeMention getPositionalTypeArgument0(int i) { + /** + * Gets the positional type argument at index `i` that occurs in this path, if + * any. + */ + private TypeMention getPathPositionalTypeArgument(int i) { result = this.getSegment().getGenericArgList().getTypeArg(i) or // `Option::::Some` is valid in addition to `Option::Some::` @@ -155,7 +159,7 @@ class NonAliasPathTypeMention extends PathTypeMention { * Gets the type mention that instantiates the implicit `Self` type parameter * for this path, if it occurs in the position of a trait bound. */ - private TypeMention getSelfTypeParameter() { + private TypeMention getSelfTraitBoundArg() { exists(ImplItemNode impl | this = impl.getTraitPath() and result = impl.(Impl).getSelfTy()) or exists(Trait subTrait | @@ -166,16 +170,10 @@ class NonAliasPathTypeMention extends PathTypeMention { exists(TypeParamItemNode tp | this = tp.getABoundPath() and result = tp) } - private Type getPositionalTypeArgument(int i, TypePath path) { - result = this.getPositionalTypeArgument0(i).resolveTypeAt(path) - or - result = this.getDefaultPositionalTypeArgument(i, path) - } - private Type getDefaultPositionalTypeArgument(int i, TypePath path) { // If a type argument is not given in the path, then we use the default for // the type parameter if one exists for the type. - not exists(this.getPositionalTypeArgument0(i)) and + not exists(this.getPathPositionalTypeArgument(i)) and // Defaults only apply to type mentions in type annotations this = any(PathTypeRepr ptp).getPath().getQualifier*() and exists(Type ty, TypePath prefix | @@ -187,11 +185,17 @@ class NonAliasPathTypeMention extends PathTypeMention { // be substituted for the type that implements the trait. exists(TypePath suffix | path = prefix.append(suffix) and - result = this.getSelfTypeParameter().resolveTypeAt(suffix) + result = this.getSelfTraitBoundArg().resolveTypeAt(suffix) ) ) } + private Type getPositionalTypeArgument(int i, TypePath path) { + result = this.getPathPositionalTypeArgument(i).resolveTypeAt(path) + or + result = this.getDefaultPositionalTypeArgument(i, path) + } + /** * Gets the type for this path for the type parameter `tp` at `path`, when the * type parameter does not correspond directly to a type mention. @@ -282,7 +286,7 @@ class NonAliasPathTypeMention extends PathTypeMention { // When the path refers to a trait, then the implicit `Self` type parameter // should be instantiated from the context. exists(TypePath suffix | - result = this.getSelfTypeParameter().resolveTypeAt(suffix) and + result = this.getSelfTraitBoundArg().resolveTypeAt(suffix) and typePath = TypePath::cons(TSelfTypeParameter(resolved), suffix) ) } diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 28098e14514..78f5d853e13 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -5,9 +5,9 @@ multipleCallTargets | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | +| main.rs:2481:13:2481:31 | ...::from(...) | | main.rs:2482:13:2482:31 | ...::from(...) | | main.rs:2483:13:2483:31 | ...::from(...) | -| main.rs:2484:13:2484:31 | ...::from(...) | +| main.rs:2489:13:2489:31 | ...::from(...) | | main.rs:2490:13:2490:31 | ...::from(...) | | main.rs:2491:13:2491:31 | ...::from(...) | -| main.rs:2492:13:2492:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index c124f8d219c..ecf74fbd7bb 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -654,7 +654,6 @@ mod type_parameter_bounds { mod trait_default_self_type_parameter { // A trait with a type parameter that defaults to `Self`. - // trait TraitWithSelfTp { trait TraitWithSelfTp> { // TraitWithSelfTp::get_a fn get_a(&self) -> A; diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 829f15bc01a..05ee936cf25 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2002,3246 +2002,3265 @@ inferType | main.rs:651:18:651:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:651:32:651:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:651:36:651:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:660:18:660:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:660:18:660:22 | SelfParam | &T | main.rs:656:5:661:5 | Self [trait TraitWithSelfTp] | -| main.rs:663:40:663:44 | thing | | file://:0:0:0:0 | & | -| main.rs:663:40:663:44 | thing | &T | main.rs:663:17:663:37 | T | -| main.rs:663:56:665:5 | { ... } | | main.rs:663:14:663:14 | A | -| main.rs:664:9:664:13 | thing | | file://:0:0:0:0 | & | -| main.rs:664:9:664:13 | thing | &T | main.rs:663:17:663:37 | T | -| main.rs:664:9:664:21 | thing.get_a() | | main.rs:663:14:663:14 | A | -| main.rs:668:44:668:48 | thing | | main.rs:668:24:668:41 | S | -| main.rs:668:61:671:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:669:13:669:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:669:13:669:15 | _ms | T | main.rs:668:24:668:41 | S | -| main.rs:669:19:669:23 | thing | | main.rs:668:24:668:41 | S | -| main.rs:669:19:669:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | -| main.rs:669:19:669:31 | thing.get_a() | T | main.rs:668:24:668:41 | S | -| main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:670:9:670:9 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:676:55:676:59 | thing | | file://:0:0:0:0 | & | -| main.rs:676:55:676:59 | thing | &T | main.rs:676:25:676:52 | S | -| main.rs:678:13:678:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:678:13:678:15 | _ms | T | main.rs:676:25:676:52 | S | -| main.rs:678:19:678:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:678:19:678:30 | get_a(...) | T | main.rs:676:25:676:52 | S | -| main.rs:678:25:678:29 | thing | | file://:0:0:0:0 | & | -| main.rs:678:25:678:29 | thing | &T | main.rs:676:25:676:52 | S | -| main.rs:687:18:687:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:687:18:687:22 | SelfParam | &T | main.rs:681:5:683:5 | MyStruct | -| main.rs:687:41:689:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:687:41:689:9 | { ... } | T | main.rs:681:5:683:5 | MyStruct | -| main.rs:688:13:688:48 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:688:13:688:48 | Some(...) | T | main.rs:681:5:683:5 | MyStruct | -| main.rs:688:18:688:47 | MyStruct {...} | | main.rs:681:5:683:5 | MyStruct | -| main.rs:688:36:688:39 | self | | file://:0:0:0:0 | & | -| main.rs:688:36:688:39 | self | &T | main.rs:681:5:683:5 | MyStruct | -| main.rs:688:36:688:45 | self.value | | {EXTERNAL LOCATION} | i32 | -| main.rs:695:13:695:13 | s | | main.rs:681:5:683:5 | MyStruct | -| main.rs:695:17:695:37 | MyStruct {...} | | main.rs:681:5:683:5 | MyStruct | -| main.rs:695:35:695:35 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:696:13:696:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:696:13:696:15 | _ms | T | main.rs:681:5:683:5 | MyStruct | -| main.rs:696:19:696:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:696:19:696:27 | get_a(...) | T | main.rs:681:5:683:5 | MyStruct | -| main.rs:696:25:696:26 | &s | | file://:0:0:0:0 | & | -| main.rs:696:25:696:26 | &s | &T | main.rs:681:5:683:5 | MyStruct | -| main.rs:696:26:696:26 | s | | main.rs:681:5:683:5 | MyStruct | -| main.rs:712:15:712:18 | SelfParam | | main.rs:711:5:722:5 | Self [trait MyTrait] | -| main.rs:714:15:714:18 | SelfParam | | main.rs:711:5:722:5 | Self [trait MyTrait] | -| main.rs:717:9:719:9 | { ... } | | main.rs:711:19:711:19 | A | -| main.rs:718:13:718:16 | self | | main.rs:711:5:722:5 | Self [trait MyTrait] | -| main.rs:718:13:718:21 | self.m1() | | main.rs:711:19:711:19 | A | -| main.rs:721:18:721:18 | x | | main.rs:711:5:722:5 | Self [trait MyTrait] | -| main.rs:726:50:726:50 | x | | main.rs:726:26:726:47 | T2 | -| main.rs:726:63:729:5 | { ... } | | main.rs:726:22:726:23 | T1 | -| main.rs:727:9:727:9 | x | | main.rs:726:26:726:47 | T2 | -| main.rs:727:9:727:14 | x.m1() | | main.rs:726:22:726:23 | T1 | -| main.rs:728:9:728:9 | x | | main.rs:726:26:726:47 | T2 | -| main.rs:728:9:728:14 | x.m1() | | main.rs:726:22:726:23 | T1 | -| main.rs:730:52:730:52 | x | | main.rs:730:28:730:49 | T2 | -| main.rs:730:65:734:5 | { ... } | | main.rs:730:24:730:25 | T1 | -| main.rs:731:13:731:13 | y | | main.rs:730:24:730:25 | T1 | -| main.rs:731:17:731:25 | ...::m1(...) | | main.rs:730:24:730:25 | T1 | -| main.rs:731:24:731:24 | x | | main.rs:730:28:730:49 | T2 | -| main.rs:732:9:732:9 | y | | main.rs:730:24:730:25 | T1 | -| main.rs:733:9:733:17 | ...::m1(...) | | main.rs:730:24:730:25 | T1 | -| main.rs:733:16:733:16 | x | | main.rs:730:28:730:49 | T2 | -| main.rs:735:52:735:52 | x | | main.rs:735:28:735:49 | T2 | -| main.rs:735:65:739:5 | { ... } | | main.rs:735:24:735:25 | T1 | -| main.rs:736:13:736:13 | y | | main.rs:735:24:735:25 | T1 | -| main.rs:736:17:736:30 | ...::m1(...) | | main.rs:735:24:735:25 | T1 | -| main.rs:736:29:736:29 | x | | main.rs:735:28:735:49 | T2 | -| main.rs:737:9:737:9 | y | | main.rs:735:24:735:25 | T1 | -| main.rs:738:9:738:22 | ...::m1(...) | | main.rs:735:24:735:25 | T1 | -| main.rs:738:21:738:21 | x | | main.rs:735:28:735:49 | T2 | -| main.rs:740:55:740:55 | x | | main.rs:740:31:740:52 | T2 | -| main.rs:740:68:744:5 | { ... } | | main.rs:740:27:740:28 | T1 | -| main.rs:741:13:741:13 | y | | main.rs:740:27:740:28 | T1 | -| main.rs:741:17:741:28 | ...::assoc(...) | | main.rs:740:27:740:28 | T1 | -| main.rs:741:27:741:27 | x | | main.rs:740:31:740:52 | T2 | -| main.rs:742:9:742:9 | y | | main.rs:740:27:740:28 | T1 | -| main.rs:743:9:743:20 | ...::assoc(...) | | main.rs:740:27:740:28 | T1 | -| main.rs:743:19:743:19 | x | | main.rs:740:31:740:52 | T2 | -| main.rs:745:55:745:55 | x | | main.rs:745:31:745:52 | T2 | -| main.rs:745:68:749:5 | { ... } | | main.rs:745:27:745:28 | T1 | -| main.rs:746:13:746:13 | y | | main.rs:745:27:745:28 | T1 | -| main.rs:746:17:746:33 | ...::assoc(...) | | main.rs:745:27:745:28 | T1 | -| main.rs:746:32:746:32 | x | | main.rs:745:31:745:52 | T2 | -| main.rs:747:9:747:9 | y | | main.rs:745:27:745:28 | T1 | -| main.rs:748:9:748:25 | ...::assoc(...) | | main.rs:745:27:745:28 | T1 | -| main.rs:748:24:748:24 | x | | main.rs:745:31:745:52 | T2 | -| main.rs:753:49:753:49 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:753:49:753:49 | x | T | main.rs:753:32:753:46 | T2 | -| main.rs:753:71:755:5 | { ... } | | main.rs:753:28:753:29 | T1 | -| main.rs:754:9:754:9 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:754:9:754:9 | x | T | main.rs:753:32:753:46 | T2 | -| main.rs:754:9:754:11 | x.a | | main.rs:753:32:753:46 | T2 | -| main.rs:754:9:754:16 | ... .m1() | | main.rs:753:28:753:29 | T1 | -| main.rs:756:51:756:51 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:756:51:756:51 | x | T | main.rs:756:34:756:48 | T2 | -| main.rs:756:73:758:5 | { ... } | | main.rs:756:30:756:31 | T1 | -| main.rs:757:9:757:19 | ...::m1(...) | | main.rs:756:30:756:31 | T1 | -| main.rs:757:16:757:16 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:757:16:757:16 | x | T | main.rs:756:34:756:48 | T2 | -| main.rs:757:16:757:18 | x.a | | main.rs:756:34:756:48 | T2 | -| main.rs:759:51:759:51 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:759:51:759:51 | x | T | main.rs:759:34:759:48 | T2 | -| main.rs:759:73:761:5 | { ... } | | main.rs:759:30:759:31 | T1 | -| main.rs:760:9:760:24 | ...::m1(...) | | main.rs:759:30:759:31 | T1 | -| main.rs:760:21:760:21 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:760:21:760:21 | x | T | main.rs:759:34:759:48 | T2 | -| main.rs:760:21:760:23 | x.a | | main.rs:759:34:759:48 | T2 | -| main.rs:764:15:764:18 | SelfParam | | main.rs:701:5:704:5 | MyThing | -| main.rs:764:15:764:18 | SelfParam | T | main.rs:763:10:763:10 | T | -| main.rs:764:26:766:9 | { ... } | | main.rs:763:10:763:10 | T | -| main.rs:765:13:765:16 | self | | main.rs:701:5:704:5 | MyThing | -| main.rs:765:13:765:16 | self | T | main.rs:763:10:763:10 | T | -| main.rs:765:13:765:18 | self.a | | main.rs:763:10:763:10 | T | -| main.rs:768:18:768:18 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:768:18:768:18 | x | T | main.rs:763:10:763:10 | T | -| main.rs:768:32:770:9 | { ... } | | main.rs:763:10:763:10 | T | -| main.rs:769:13:769:13 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:769:13:769:13 | x | T | main.rs:763:10:763:10 | T | -| main.rs:769:13:769:15 | x.a | | main.rs:763:10:763:10 | T | -| main.rs:774:13:774:13 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:774:13:774:13 | x | T | main.rs:706:5:707:14 | S1 | -| main.rs:774:17:774:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:774:17:774:33 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | -| main.rs:774:30:774:31 | S1 | | main.rs:706:5:707:14 | S1 | -| main.rs:775:13:775:13 | y | | main.rs:701:5:704:5 | MyThing | -| main.rs:775:13:775:13 | y | T | main.rs:708:5:709:14 | S2 | -| main.rs:775:17:775:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:775:17:775:33 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | -| main.rs:775:30:775:31 | S2 | | main.rs:708:5:709:14 | S2 | +| main.rs:659:18:659:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:659:18:659:22 | SelfParam | &T | main.rs:656:5:660:5 | Self [trait TraitWithSelfTp] | +| main.rs:662:40:662:44 | thing | | file://:0:0:0:0 | & | +| main.rs:662:40:662:44 | thing | &T | main.rs:662:17:662:37 | T | +| main.rs:662:56:664:5 | { ... } | | main.rs:662:14:662:14 | A | +| main.rs:663:9:663:13 | thing | | file://:0:0:0:0 | & | +| main.rs:663:9:663:13 | thing | &T | main.rs:662:17:662:37 | T | +| main.rs:663:9:663:21 | thing.get_a() | | main.rs:662:14:662:14 | A | +| main.rs:667:44:667:48 | thing | | main.rs:667:24:667:41 | S | +| main.rs:667:61:670:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:668:13:668:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:668:13:668:15 | _ms | T | main.rs:667:24:667:41 | S | +| main.rs:668:19:668:23 | thing | | main.rs:667:24:667:41 | S | +| main.rs:668:19:668:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | +| main.rs:668:19:668:31 | thing.get_a() | T | main.rs:667:24:667:41 | S | +| main.rs:669:9:669:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:669:9:669:9 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:675:55:675:59 | thing | | file://:0:0:0:0 | & | +| main.rs:675:55:675:59 | thing | &T | main.rs:675:25:675:52 | S | +| main.rs:677:13:677:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:677:13:677:15 | _ms | T | main.rs:675:25:675:52 | S | +| main.rs:677:19:677:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:677:19:677:30 | get_a(...) | T | main.rs:675:25:675:52 | S | +| main.rs:677:25:677:29 | thing | | file://:0:0:0:0 | & | +| main.rs:677:25:677:29 | thing | &T | main.rs:675:25:675:52 | S | +| main.rs:686:18:686:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:686:18:686:22 | SelfParam | &T | main.rs:680:5:682:5 | MyStruct | +| main.rs:686:41:688:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:686:41:688:9 | { ... } | T | main.rs:680:5:682:5 | MyStruct | +| main.rs:687:13:687:48 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:687:13:687:48 | Some(...) | T | main.rs:680:5:682:5 | MyStruct | +| main.rs:687:18:687:47 | MyStruct {...} | | main.rs:680:5:682:5 | MyStruct | +| main.rs:687:36:687:39 | self | | file://:0:0:0:0 | & | +| main.rs:687:36:687:39 | self | &T | main.rs:680:5:682:5 | MyStruct | +| main.rs:687:36:687:45 | self.value | | {EXTERNAL LOCATION} | i32 | +| main.rs:694:13:694:13 | s | | main.rs:680:5:682:5 | MyStruct | +| main.rs:694:17:694:37 | MyStruct {...} | | main.rs:680:5:682:5 | MyStruct | +| main.rs:694:35:694:35 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:695:13:695:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:695:13:695:15 | _ms | T | main.rs:680:5:682:5 | MyStruct | +| main.rs:695:19:695:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:695:19:695:27 | get_a(...) | T | main.rs:680:5:682:5 | MyStruct | +| main.rs:695:25:695:26 | &s | | file://:0:0:0:0 | & | +| main.rs:695:25:695:26 | &s | &T | main.rs:680:5:682:5 | MyStruct | +| main.rs:695:26:695:26 | s | | main.rs:680:5:682:5 | MyStruct | +| main.rs:711:15:711:18 | SelfParam | | main.rs:710:5:721:5 | Self [trait MyTrait] | +| main.rs:713:15:713:18 | SelfParam | | main.rs:710:5:721:5 | Self [trait MyTrait] | +| main.rs:716:9:718:9 | { ... } | | main.rs:710:19:710:19 | A | +| main.rs:717:13:717:16 | self | | main.rs:710:5:721:5 | Self [trait MyTrait] | +| main.rs:717:13:717:21 | self.m1() | | main.rs:710:19:710:19 | A | +| main.rs:720:18:720:18 | x | | main.rs:710:5:721:5 | Self [trait MyTrait] | +| main.rs:725:50:725:50 | x | | main.rs:725:26:725:47 | T2 | +| main.rs:725:63:728:5 | { ... } | | main.rs:725:22:725:23 | T1 | +| main.rs:726:9:726:9 | x | | main.rs:725:26:725:47 | T2 | +| main.rs:726:9:726:14 | x.m1() | | main.rs:725:22:725:23 | T1 | +| main.rs:727:9:727:9 | x | | main.rs:725:26:725:47 | T2 | +| main.rs:727:9:727:14 | x.m1() | | main.rs:725:22:725:23 | T1 | +| main.rs:729:52:729:52 | x | | main.rs:729:28:729:49 | T2 | +| main.rs:729:65:733:5 | { ... } | | main.rs:729:24:729:25 | T1 | +| main.rs:730:13:730:13 | y | | main.rs:729:24:729:25 | T1 | +| main.rs:730:17:730:25 | ...::m1(...) | | main.rs:729:24:729:25 | T1 | +| main.rs:730:24:730:24 | x | | main.rs:729:28:729:49 | T2 | +| main.rs:731:9:731:9 | y | | main.rs:729:24:729:25 | T1 | +| main.rs:732:9:732:17 | ...::m1(...) | | main.rs:729:24:729:25 | T1 | +| main.rs:732:16:732:16 | x | | main.rs:729:28:729:49 | T2 | +| main.rs:734:52:734:52 | x | | main.rs:734:28:734:49 | T2 | +| main.rs:734:65:738:5 | { ... } | | main.rs:734:24:734:25 | T1 | +| main.rs:735:13:735:13 | y | | main.rs:734:24:734:25 | T1 | +| main.rs:735:17:735:30 | ...::m1(...) | | main.rs:734:24:734:25 | T1 | +| main.rs:735:29:735:29 | x | | main.rs:734:28:734:49 | T2 | +| main.rs:736:9:736:9 | y | | main.rs:734:24:734:25 | T1 | +| main.rs:737:9:737:22 | ...::m1(...) | | main.rs:734:24:734:25 | T1 | +| main.rs:737:21:737:21 | x | | main.rs:734:28:734:49 | T2 | +| main.rs:739:55:739:55 | x | | main.rs:739:31:739:52 | T2 | +| main.rs:739:68:743:5 | { ... } | | main.rs:739:27:739:28 | T1 | +| main.rs:740:13:740:13 | y | | main.rs:739:27:739:28 | T1 | +| main.rs:740:17:740:28 | ...::assoc(...) | | main.rs:739:27:739:28 | T1 | +| main.rs:740:27:740:27 | x | | main.rs:739:31:739:52 | T2 | +| main.rs:741:9:741:9 | y | | main.rs:739:27:739:28 | T1 | +| main.rs:742:9:742:20 | ...::assoc(...) | | main.rs:739:27:739:28 | T1 | +| main.rs:742:19:742:19 | x | | main.rs:739:31:739:52 | T2 | +| main.rs:744:55:744:55 | x | | main.rs:744:31:744:52 | T2 | +| main.rs:744:68:748:5 | { ... } | | main.rs:744:27:744:28 | T1 | +| main.rs:745:13:745:13 | y | | main.rs:744:27:744:28 | T1 | +| main.rs:745:17:745:33 | ...::assoc(...) | | main.rs:744:27:744:28 | T1 | +| main.rs:745:32:745:32 | x | | main.rs:744:31:744:52 | T2 | +| main.rs:746:9:746:9 | y | | main.rs:744:27:744:28 | T1 | +| main.rs:747:9:747:25 | ...::assoc(...) | | main.rs:744:27:744:28 | T1 | +| main.rs:747:24:747:24 | x | | main.rs:744:31:744:52 | T2 | +| main.rs:752:49:752:49 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:752:49:752:49 | x | T | main.rs:752:32:752:46 | T2 | +| main.rs:752:71:754:5 | { ... } | | main.rs:752:28:752:29 | T1 | +| main.rs:753:9:753:9 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:753:9:753:9 | x | T | main.rs:752:32:752:46 | T2 | +| main.rs:753:9:753:11 | x.a | | main.rs:752:32:752:46 | T2 | +| main.rs:753:9:753:16 | ... .m1() | | main.rs:752:28:752:29 | T1 | +| main.rs:755:51:755:51 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:755:51:755:51 | x | T | main.rs:755:34:755:48 | T2 | +| main.rs:755:73:757:5 | { ... } | | main.rs:755:30:755:31 | T1 | +| main.rs:756:9:756:19 | ...::m1(...) | | main.rs:755:30:755:31 | T1 | +| main.rs:756:16:756:16 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:756:16:756:16 | x | T | main.rs:755:34:755:48 | T2 | +| main.rs:756:16:756:18 | x.a | | main.rs:755:34:755:48 | T2 | +| main.rs:758:51:758:51 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:758:51:758:51 | x | T | main.rs:758:34:758:48 | T2 | +| main.rs:758:73:760:5 | { ... } | | main.rs:758:30:758:31 | T1 | +| main.rs:759:9:759:24 | ...::m1(...) | | main.rs:758:30:758:31 | T1 | +| main.rs:759:21:759:21 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:759:21:759:21 | x | T | main.rs:758:34:758:48 | T2 | +| main.rs:759:21:759:23 | x.a | | main.rs:758:34:758:48 | T2 | +| main.rs:763:15:763:18 | SelfParam | | main.rs:700:5:703:5 | MyThing | +| main.rs:763:15:763:18 | SelfParam | T | main.rs:762:10:762:10 | T | +| main.rs:763:26:765:9 | { ... } | | main.rs:762:10:762:10 | T | +| main.rs:764:13:764:16 | self | | main.rs:700:5:703:5 | MyThing | +| main.rs:764:13:764:16 | self | T | main.rs:762:10:762:10 | T | +| main.rs:764:13:764:18 | self.a | | main.rs:762:10:762:10 | T | +| main.rs:767:18:767:18 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:767:18:767:18 | x | T | main.rs:762:10:762:10 | T | +| main.rs:767:32:769:9 | { ... } | | main.rs:762:10:762:10 | T | +| main.rs:768:13:768:13 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:768:13:768:13 | x | T | main.rs:762:10:762:10 | T | +| main.rs:768:13:768:15 | x.a | | main.rs:762:10:762:10 | T | +| main.rs:773:13:773:13 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:773:13:773:13 | x | T | main.rs:705:5:706:14 | S1 | +| main.rs:773:17:773:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:773:17:773:33 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | +| main.rs:773:30:773:31 | S1 | | main.rs:705:5:706:14 | S1 | +| main.rs:774:13:774:13 | y | | main.rs:700:5:703:5 | MyThing | +| main.rs:774:13:774:13 | y | T | main.rs:707:5:708:14 | S2 | +| main.rs:774:17:774:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:774:17:774:33 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | +| main.rs:774:30:774:31 | S2 | | main.rs:707:5:708:14 | S2 | +| main.rs:776:18:776:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:776:18:776:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:776:18:776:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:776:18:776:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:776:26:776:26 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:776:26:776:26 | x | T | main.rs:705:5:706:14 | S1 | +| main.rs:776:26:776:31 | x.m1() | | main.rs:705:5:706:14 | S1 | | main.rs:777:18:777:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:777:18:777:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:777:18:777:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:777:18:777:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:777:26:777:26 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:777:26:777:26 | x | T | main.rs:706:5:707:14 | S1 | -| main.rs:777:26:777:31 | x.m1() | | main.rs:706:5:707:14 | S1 | -| main.rs:778:18:778:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:778:18:778:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:778:18:778:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:778:18:778:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:778:26:778:26 | y | | main.rs:701:5:704:5 | MyThing | -| main.rs:778:26:778:26 | y | T | main.rs:708:5:709:14 | S2 | -| main.rs:778:26:778:31 | y.m1() | | main.rs:708:5:709:14 | S2 | -| main.rs:780:13:780:13 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:780:13:780:13 | x | T | main.rs:706:5:707:14 | S1 | -| main.rs:780:17:780:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:780:17:780:33 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | -| main.rs:780:30:780:31 | S1 | | main.rs:706:5:707:14 | S1 | -| main.rs:781:13:781:13 | y | | main.rs:701:5:704:5 | MyThing | -| main.rs:781:13:781:13 | y | T | main.rs:708:5:709:14 | S2 | -| main.rs:781:17:781:33 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:781:17:781:33 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | -| main.rs:781:30:781:31 | S2 | | main.rs:708:5:709:14 | S2 | +| main.rs:777:26:777:26 | y | | main.rs:700:5:703:5 | MyThing | +| main.rs:777:26:777:26 | y | T | main.rs:707:5:708:14 | S2 | +| main.rs:777:26:777:31 | y.m1() | | main.rs:707:5:708:14 | S2 | +| main.rs:779:13:779:13 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:779:13:779:13 | x | T | main.rs:705:5:706:14 | S1 | +| main.rs:779:17:779:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:779:17:779:33 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | +| main.rs:779:30:779:31 | S1 | | main.rs:705:5:706:14 | S1 | +| main.rs:780:13:780:13 | y | | main.rs:700:5:703:5 | MyThing | +| main.rs:780:13:780:13 | y | T | main.rs:707:5:708:14 | S2 | +| main.rs:780:17:780:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:780:17:780:33 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | +| main.rs:780:30:780:31 | S2 | | main.rs:707:5:708:14 | S2 | +| main.rs:782:18:782:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:782:18:782:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:782:18:782:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:782:18:782:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:782:26:782:26 | x | | main.rs:700:5:703:5 | MyThing | +| main.rs:782:26:782:26 | x | T | main.rs:705:5:706:14 | S1 | +| main.rs:782:26:782:31 | x.m2() | | main.rs:705:5:706:14 | S1 | | main.rs:783:18:783:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:783:18:783:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:783:18:783:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:783:18:783:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:783:26:783:26 | x | | main.rs:701:5:704:5 | MyThing | -| main.rs:783:26:783:26 | x | T | main.rs:706:5:707:14 | S1 | -| main.rs:783:26:783:31 | x.m2() | | main.rs:706:5:707:14 | S1 | -| main.rs:784:18:784:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:784:18:784:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:784:18:784:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:784:18:784:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:784:26:784:26 | y | | main.rs:701:5:704:5 | MyThing | -| main.rs:784:26:784:26 | y | T | main.rs:708:5:709:14 | S2 | -| main.rs:784:26:784:31 | y.m2() | | main.rs:708:5:709:14 | S2 | -| main.rs:786:13:786:14 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:786:13:786:14 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:786:18:786:34 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:786:18:786:34 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | -| main.rs:786:31:786:32 | S1 | | main.rs:706:5:707:14 | S1 | -| main.rs:787:13:787:14 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:787:13:787:14 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:787:18:787:34 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:787:18:787:34 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | -| main.rs:787:31:787:32 | S2 | | main.rs:708:5:709:14 | S2 | -| main.rs:789:13:789:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:789:17:789:33 | call_trait_m1(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:789:31:789:32 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:789:31:789:32 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:790:18:790:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:790:18:790:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:790:18:790:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:790:18:790:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:790:26:790:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:791:13:791:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:791:17:791:35 | call_trait_m1_2(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:791:33:791:34 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:791:33:791:34 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:792:18:792:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:792:18:792:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:792:18:792:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:792:18:792:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:792:26:792:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:793:13:793:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:793:17:793:35 | call_trait_m1_3(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:793:33:793:34 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:793:33:793:34 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:794:18:794:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:794:18:794:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:794:18:794:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:794:18:794:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:794:26:794:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:795:13:795:13 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:795:17:795:33 | call_trait_m1(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:795:31:795:32 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:795:31:795:32 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:796:18:796:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:796:18:796:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:796:18:796:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:796:18:796:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:796:26:796:26 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:797:13:797:13 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:797:17:797:35 | call_trait_m1_2(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:797:33:797:34 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:797:33:797:34 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:798:18:798:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:798:18:798:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:798:18:798:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:798:18:798:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:798:26:798:26 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:799:13:799:13 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:799:17:799:35 | call_trait_m1_3(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:799:33:799:34 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:799:33:799:34 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:800:18:800:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:800:18:800:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:800:18:800:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:800:18:800:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:800:26:800:26 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:801:13:801:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:801:17:801:38 | call_trait_assoc_1(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:801:36:801:37 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:801:36:801:37 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:802:18:802:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:802:18:802:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:802:18:802:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:802:18:802:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:802:26:802:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:803:13:803:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:803:17:803:38 | call_trait_assoc_2(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:803:36:803:37 | x2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:803:36:803:37 | x2 | T | main.rs:706:5:707:14 | S1 | -| main.rs:804:18:804:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:804:18:804:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:804:18:804:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:804:18:804:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:804:26:804:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:805:13:805:13 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:805:17:805:38 | call_trait_assoc_1(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:805:36:805:37 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:805:36:805:37 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:806:18:806:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:806:18:806:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:806:18:806:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:806:18:806:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:806:26:806:26 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:807:13:807:13 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:807:17:807:38 | call_trait_assoc_2(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:807:36:807:37 | y2 | | main.rs:701:5:704:5 | MyThing | -| main.rs:807:36:807:37 | y2 | T | main.rs:708:5:709:14 | S2 | -| main.rs:808:18:808:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:808:18:808:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:808:18:808:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:808:18:808:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:808:26:808:26 | a | | main.rs:708:5:709:14 | S2 | -| main.rs:810:13:810:14 | x3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:810:13:810:14 | x3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:810:13:810:14 | x3 | T.T | main.rs:706:5:707:14 | S1 | -| main.rs:810:18:812:9 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:810:18:812:9 | MyThing {...} | T | main.rs:701:5:704:5 | MyThing | -| main.rs:810:18:812:9 | MyThing {...} | T.T | main.rs:706:5:707:14 | S1 | -| main.rs:811:16:811:32 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:811:16:811:32 | MyThing {...} | T | main.rs:706:5:707:14 | S1 | -| main.rs:811:29:811:30 | S1 | | main.rs:706:5:707:14 | S1 | -| main.rs:813:13:813:14 | y3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:813:13:813:14 | y3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:813:13:813:14 | y3 | T.T | main.rs:708:5:709:14 | S2 | -| main.rs:813:18:815:9 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:813:18:815:9 | MyThing {...} | T | main.rs:701:5:704:5 | MyThing | -| main.rs:813:18:815:9 | MyThing {...} | T.T | main.rs:708:5:709:14 | S2 | -| main.rs:814:16:814:32 | MyThing {...} | | main.rs:701:5:704:5 | MyThing | -| main.rs:814:16:814:32 | MyThing {...} | T | main.rs:708:5:709:14 | S2 | -| main.rs:814:29:814:30 | S2 | | main.rs:708:5:709:14 | S2 | -| main.rs:817:13:817:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:817:17:817:39 | call_trait_thing_m1(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:817:37:817:38 | x3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:817:37:817:38 | x3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:817:37:817:38 | x3 | T.T | main.rs:706:5:707:14 | S1 | -| main.rs:818:18:818:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:818:18:818:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:818:18:818:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:818:18:818:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:818:26:818:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:819:13:819:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:819:17:819:41 | call_trait_thing_m1_2(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:819:39:819:40 | x3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:819:39:819:40 | x3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:819:39:819:40 | x3 | T.T | main.rs:706:5:707:14 | S1 | -| main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:820:18:820:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:18:820:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:26:820:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:821:13:821:13 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:821:17:821:41 | call_trait_thing_m1_3(...) | | main.rs:706:5:707:14 | S1 | -| main.rs:821:39:821:40 | x3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:821:39:821:40 | x3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:821:39:821:40 | x3 | T.T | main.rs:706:5:707:14 | S1 | -| main.rs:822:18:822:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:822:18:822:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:822:18:822:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:822:18:822:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:822:26:822:26 | a | | main.rs:706:5:707:14 | S1 | -| main.rs:823:13:823:13 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:823:17:823:39 | call_trait_thing_m1(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:823:37:823:38 | y3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:823:37:823:38 | y3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:823:37:823:38 | y3 | T.T | main.rs:708:5:709:14 | S2 | -| main.rs:824:18:824:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:824:18:824:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:824:18:824:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:824:18:824:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:824:26:824:26 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:825:13:825:13 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:825:17:825:41 | call_trait_thing_m1_2(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:825:39:825:40 | y3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:825:39:825:40 | y3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:825:39:825:40 | y3 | T.T | main.rs:708:5:709:14 | S2 | -| main.rs:826:18:826:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:826:18:826:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:826:18:826:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:826:18:826:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:826:26:826:26 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:827:13:827:13 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:827:17:827:41 | call_trait_thing_m1_3(...) | | main.rs:708:5:709:14 | S2 | -| main.rs:827:39:827:40 | y3 | | main.rs:701:5:704:5 | MyThing | -| main.rs:827:39:827:40 | y3 | T | main.rs:701:5:704:5 | MyThing | -| main.rs:827:39:827:40 | y3 | T.T | main.rs:708:5:709:14 | S2 | -| main.rs:828:18:828:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:828:18:828:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:828:18:828:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:828:18:828:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:828:26:828:26 | b | | main.rs:708:5:709:14 | S2 | -| main.rs:839:19:839:22 | SelfParam | | main.rs:833:5:836:5 | Wrapper | -| main.rs:839:19:839:22 | SelfParam | A | main.rs:838:10:838:10 | A | -| main.rs:839:30:841:9 | { ... } | | main.rs:838:10:838:10 | A | -| main.rs:840:13:840:16 | self | | main.rs:833:5:836:5 | Wrapper | -| main.rs:840:13:840:16 | self | A | main.rs:838:10:838:10 | A | -| main.rs:840:13:840:22 | self.field | | main.rs:838:10:838:10 | A | -| main.rs:848:15:848:18 | SelfParam | | main.rs:844:5:858:5 | Self [trait MyTrait] | -| main.rs:850:15:850:18 | SelfParam | | main.rs:844:5:858:5 | Self [trait MyTrait] | -| main.rs:854:9:857:9 | { ... } | | main.rs:845:9:845:28 | AssociatedType | -| main.rs:855:13:855:16 | self | | main.rs:844:5:858:5 | Self [trait MyTrait] | -| main.rs:855:13:855:21 | self.m1() | | main.rs:845:9:845:28 | AssociatedType | -| main.rs:856:13:856:43 | ...::default(...) | | main.rs:845:9:845:28 | AssociatedType | -| main.rs:864:19:864:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:864:19:864:23 | SelfParam | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | -| main.rs:864:26:864:26 | a | | main.rs:864:16:864:16 | A | -| main.rs:866:22:866:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:866:22:866:26 | SelfParam | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | -| main.rs:866:29:866:29 | a | | main.rs:866:19:866:19 | A | -| main.rs:866:35:866:35 | b | | main.rs:866:19:866:19 | A | -| main.rs:866:75:869:9 | { ... } | | main.rs:861:9:861:52 | GenericAssociatedType | +| main.rs:783:26:783:26 | y | | main.rs:700:5:703:5 | MyThing | +| main.rs:783:26:783:26 | y | T | main.rs:707:5:708:14 | S2 | +| main.rs:783:26:783:31 | y.m2() | | main.rs:707:5:708:14 | S2 | +| main.rs:785:13:785:14 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:785:13:785:14 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:785:18:785:34 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:785:18:785:34 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | +| main.rs:785:31:785:32 | S1 | | main.rs:705:5:706:14 | S1 | +| main.rs:786:13:786:14 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:786:13:786:14 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:786:18:786:34 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:786:18:786:34 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | +| main.rs:786:31:786:32 | S2 | | main.rs:707:5:708:14 | S2 | +| main.rs:788:13:788:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:788:17:788:33 | call_trait_m1(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:788:31:788:32 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:788:31:788:32 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:789:18:789:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:789:18:789:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:789:18:789:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:789:18:789:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:789:26:789:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:790:13:790:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:790:17:790:35 | call_trait_m1_2(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:790:33:790:34 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:790:33:790:34 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:791:18:791:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:791:18:791:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:791:18:791:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:791:18:791:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:791:26:791:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:792:13:792:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:792:17:792:35 | call_trait_m1_3(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:792:33:792:34 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:792:33:792:34 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:793:18:793:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:793:18:793:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:793:18:793:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:793:18:793:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:793:26:793:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:794:13:794:13 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:794:17:794:33 | call_trait_m1(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:794:31:794:32 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:794:31:794:32 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:795:18:795:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:795:18:795:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:795:18:795:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:795:18:795:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:795:26:795:26 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:796:13:796:13 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:796:17:796:35 | call_trait_m1_2(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:796:33:796:34 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:796:33:796:34 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:797:18:797:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:797:18:797:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:797:18:797:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:797:18:797:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:797:26:797:26 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:798:13:798:13 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:798:17:798:35 | call_trait_m1_3(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:798:33:798:34 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:798:33:798:34 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:799:18:799:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:799:18:799:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:799:18:799:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:799:18:799:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:799:26:799:26 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:800:13:800:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:800:17:800:38 | call_trait_assoc_1(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:800:36:800:37 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:800:36:800:37 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:801:18:801:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:801:18:801:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:801:18:801:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:801:18:801:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:801:26:801:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:802:13:802:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:802:17:802:38 | call_trait_assoc_2(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:802:36:802:37 | x2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:802:36:802:37 | x2 | T | main.rs:705:5:706:14 | S1 | +| main.rs:803:18:803:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:803:18:803:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:803:18:803:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:803:18:803:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:803:26:803:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:804:13:804:13 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:804:17:804:38 | call_trait_assoc_1(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:804:36:804:37 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:804:36:804:37 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:805:18:805:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:805:18:805:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:805:18:805:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:805:18:805:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:805:26:805:26 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:806:13:806:13 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:806:17:806:38 | call_trait_assoc_2(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:806:36:806:37 | y2 | | main.rs:700:5:703:5 | MyThing | +| main.rs:806:36:806:37 | y2 | T | main.rs:707:5:708:14 | S2 | +| main.rs:807:18:807:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:807:18:807:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:807:18:807:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:807:18:807:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:807:26:807:26 | a | | main.rs:707:5:708:14 | S2 | +| main.rs:809:13:809:14 | x3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:809:13:809:14 | x3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:809:13:809:14 | x3 | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:809:18:811:9 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:809:18:811:9 | MyThing {...} | T | main.rs:700:5:703:5 | MyThing | +| main.rs:809:18:811:9 | MyThing {...} | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:810:16:810:32 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:810:16:810:32 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | +| main.rs:810:29:810:30 | S1 | | main.rs:705:5:706:14 | S1 | +| main.rs:812:13:812:14 | y3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:812:13:812:14 | y3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:812:13:812:14 | y3 | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:812:18:814:9 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:812:18:814:9 | MyThing {...} | T | main.rs:700:5:703:5 | MyThing | +| main.rs:812:18:814:9 | MyThing {...} | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:813:16:813:32 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | +| main.rs:813:16:813:32 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | +| main.rs:813:29:813:30 | S2 | | main.rs:707:5:708:14 | S2 | +| main.rs:816:13:816:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:816:17:816:39 | call_trait_thing_m1(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:816:37:816:38 | x3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:816:37:816:38 | x3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:816:37:816:38 | x3 | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:817:18:817:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:817:18:817:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:817:18:817:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:817:18:817:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:817:26:817:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:818:13:818:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:818:17:818:41 | call_trait_thing_m1_2(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:818:39:818:40 | x3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:818:39:818:40 | x3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:818:39:818:40 | x3 | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:819:18:819:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:819:18:819:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:819:18:819:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:819:18:819:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:819:26:819:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:820:13:820:13 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:820:17:820:41 | call_trait_thing_m1_3(...) | | main.rs:705:5:706:14 | S1 | +| main.rs:820:39:820:40 | x3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:820:39:820:40 | x3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:820:39:820:40 | x3 | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:821:18:821:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:821:18:821:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:821:18:821:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:821:18:821:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:821:26:821:26 | a | | main.rs:705:5:706:14 | S1 | +| main.rs:822:13:822:13 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:822:17:822:39 | call_trait_thing_m1(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:822:37:822:38 | y3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:822:37:822:38 | y3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:822:37:822:38 | y3 | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:823:18:823:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:823:18:823:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:823:18:823:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:823:18:823:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:823:26:823:26 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:824:13:824:13 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:824:17:824:41 | call_trait_thing_m1_2(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:824:39:824:40 | y3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:824:39:824:40 | y3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:824:39:824:40 | y3 | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:825:18:825:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:825:18:825:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:825:18:825:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:825:18:825:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:825:26:825:26 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:826:13:826:13 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:826:17:826:41 | call_trait_thing_m1_3(...) | | main.rs:707:5:708:14 | S2 | +| main.rs:826:39:826:40 | y3 | | main.rs:700:5:703:5 | MyThing | +| main.rs:826:39:826:40 | y3 | T | main.rs:700:5:703:5 | MyThing | +| main.rs:826:39:826:40 | y3 | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:827:18:827:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:827:18:827:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:827:18:827:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:827:18:827:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:827:26:827:26 | b | | main.rs:707:5:708:14 | S2 | +| main.rs:838:19:838:22 | SelfParam | | main.rs:832:5:835:5 | Wrapper | +| main.rs:838:19:838:22 | SelfParam | A | main.rs:837:10:837:10 | A | +| main.rs:838:30:840:9 | { ... } | | main.rs:837:10:837:10 | A | +| main.rs:839:13:839:16 | self | | main.rs:832:5:835:5 | Wrapper | +| main.rs:839:13:839:16 | self | A | main.rs:837:10:837:10 | A | +| main.rs:839:13:839:22 | self.field | | main.rs:837:10:837:10 | A | +| main.rs:847:15:847:18 | SelfParam | | main.rs:843:5:857:5 | Self [trait MyTrait] | +| main.rs:849:15:849:18 | SelfParam | | main.rs:843:5:857:5 | Self [trait MyTrait] | +| main.rs:853:9:856:9 | { ... } | | main.rs:844:9:844:28 | AssociatedType | +| main.rs:854:13:854:16 | self | | main.rs:843:5:857:5 | Self [trait MyTrait] | +| main.rs:854:13:854:21 | self.m1() | | main.rs:844:9:844:28 | AssociatedType | +| main.rs:855:13:855:43 | ...::default(...) | | main.rs:844:9:844:28 | AssociatedType | +| main.rs:863:19:863:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:863:19:863:23 | SelfParam | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | +| main.rs:863:26:863:26 | a | | main.rs:863:16:863:16 | A | +| main.rs:865:22:865:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:865:22:865:26 | SelfParam | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | +| main.rs:865:29:865:29 | a | | main.rs:865:19:865:19 | A | +| main.rs:865:35:865:35 | b | | main.rs:865:19:865:19 | A | +| main.rs:865:75:868:9 | { ... } | | main.rs:860:9:860:52 | GenericAssociatedType | +| main.rs:866:13:866:16 | self | | file://:0:0:0:0 | & | +| main.rs:866:13:866:16 | self | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | +| main.rs:866:13:866:23 | self.put(...) | | main.rs:860:9:860:52 | GenericAssociatedType | +| main.rs:866:22:866:22 | a | | main.rs:865:19:865:19 | A | | main.rs:867:13:867:16 | self | | file://:0:0:0:0 | & | -| main.rs:867:13:867:16 | self | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | -| main.rs:867:13:867:23 | self.put(...) | | main.rs:861:9:861:52 | GenericAssociatedType | -| main.rs:867:22:867:22 | a | | main.rs:866:19:866:19 | A | -| main.rs:868:13:868:16 | self | | file://:0:0:0:0 | & | -| main.rs:868:13:868:16 | self | &T | main.rs:860:5:870:5 | Self [trait MyTraitAssoc2] | -| main.rs:868:13:868:23 | self.put(...) | | main.rs:861:9:861:52 | GenericAssociatedType | -| main.rs:868:22:868:22 | b | | main.rs:866:19:866:19 | A | -| main.rs:877:21:877:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:877:21:877:25 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | -| main.rs:879:20:879:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:879:20:879:24 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | -| main.rs:881:20:881:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:881:20:881:24 | SelfParam | &T | main.rs:872:5:882:5 | Self [trait TraitMultipleAssoc] | -| main.rs:897:15:897:18 | SelfParam | | main.rs:884:5:885:13 | S | -| main.rs:897:45:899:9 | { ... } | | main.rs:890:5:891:14 | AT | -| main.rs:898:13:898:14 | AT | | main.rs:890:5:891:14 | AT | -| main.rs:907:19:907:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:907:19:907:23 | SelfParam | &T | main.rs:884:5:885:13 | S | -| main.rs:907:26:907:26 | a | | main.rs:907:16:907:16 | A | -| main.rs:907:46:909:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | -| main.rs:907:46:909:9 | { ... } | A | main.rs:907:16:907:16 | A | -| main.rs:908:13:908:32 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | -| main.rs:908:13:908:32 | Wrapper {...} | A | main.rs:907:16:907:16 | A | -| main.rs:908:30:908:30 | a | | main.rs:907:16:907:16 | A | -| main.rs:916:15:916:18 | SelfParam | | main.rs:887:5:888:14 | S2 | -| main.rs:916:45:918:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | -| main.rs:916:45:918:9 | { ... } | A | main.rs:887:5:888:14 | S2 | -| main.rs:917:13:917:35 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | -| main.rs:917:13:917:35 | Wrapper {...} | A | main.rs:887:5:888:14 | S2 | -| main.rs:917:30:917:33 | self | | main.rs:887:5:888:14 | S2 | -| main.rs:923:30:925:9 | { ... } | | main.rs:833:5:836:5 | Wrapper | -| main.rs:923:30:925:9 | { ... } | A | main.rs:887:5:888:14 | S2 | -| main.rs:924:13:924:33 | Wrapper {...} | | main.rs:833:5:836:5 | Wrapper | -| main.rs:924:13:924:33 | Wrapper {...} | A | main.rs:887:5:888:14 | S2 | -| main.rs:924:30:924:31 | S2 | | main.rs:887:5:888:14 | S2 | -| main.rs:930:22:930:26 | thing | | main.rs:930:10:930:19 | T | -| main.rs:931:9:931:13 | thing | | main.rs:930:10:930:19 | T | -| main.rs:938:21:938:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:938:21:938:25 | SelfParam | &T | main.rs:890:5:891:14 | AT | -| main.rs:938:34:940:9 | { ... } | | main.rs:890:5:891:14 | AT | -| main.rs:939:13:939:14 | AT | | main.rs:890:5:891:14 | AT | -| main.rs:942:20:942:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:942:20:942:24 | SelfParam | &T | main.rs:890:5:891:14 | AT | -| main.rs:942:43:944:9 | { ... } | | main.rs:884:5:885:13 | S | -| main.rs:943:13:943:13 | S | | main.rs:884:5:885:13 | S | -| main.rs:946:20:946:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:946:20:946:24 | SelfParam | &T | main.rs:890:5:891:14 | AT | -| main.rs:946:43:948:9 | { ... } | | main.rs:887:5:888:14 | S2 | -| main.rs:947:13:947:14 | S2 | | main.rs:887:5:888:14 | S2 | -| main.rs:952:13:952:14 | x1 | | main.rs:884:5:885:13 | S | -| main.rs:952:18:952:18 | S | | main.rs:884:5:885:13 | S | -| main.rs:954:18:954:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:954:18:954:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:954:18:954:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:954:18:954:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:954:26:954:27 | x1 | | main.rs:884:5:885:13 | S | -| main.rs:954:26:954:32 | x1.m1() | | main.rs:890:5:891:14 | AT | -| main.rs:956:13:956:14 | x2 | | main.rs:884:5:885:13 | S | -| main.rs:956:18:956:18 | S | | main.rs:884:5:885:13 | S | -| main.rs:958:13:958:13 | y | | main.rs:890:5:891:14 | AT | -| main.rs:958:17:958:18 | x2 | | main.rs:884:5:885:13 | S | -| main.rs:958:17:958:23 | x2.m2() | | main.rs:890:5:891:14 | AT | -| main.rs:959:18:959:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:959:18:959:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:959:18:959:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:959:18:959:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:959:26:959:26 | y | | main.rs:890:5:891:14 | AT | -| main.rs:961:13:961:14 | x3 | | main.rs:884:5:885:13 | S | -| main.rs:961:18:961:18 | S | | main.rs:884:5:885:13 | S | -| main.rs:963:18:963:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:963:18:963:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:963:18:963:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:963:18:963:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:963:26:963:27 | x3 | | main.rs:884:5:885:13 | S | -| main.rs:963:26:963:34 | x3.put(...) | | main.rs:833:5:836:5 | Wrapper | -| main.rs:963:26:963:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:963:26:963:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:963:33:963:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:966:18:966:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:966:18:966:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:966:18:966:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:966:18:966:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:966:26:966:27 | x3 | | main.rs:884:5:885:13 | S | -| main.rs:966:26:966:40 | x3.putTwo(...) | | main.rs:833:5:836:5 | Wrapper | -| main.rs:966:26:966:40 | x3.putTwo(...) | A | main.rs:904:36:904:50 | AssociatedParam | -| main.rs:966:26:966:49 | ... .unwrap() | | main.rs:904:36:904:50 | AssociatedParam | -| main.rs:966:36:966:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:966:39:966:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:968:20:968:20 | S | | main.rs:884:5:885:13 | S | -| main.rs:969:18:969:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:969:18:969:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:969:18:969:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:969:18:969:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:971:13:971:14 | x5 | | main.rs:887:5:888:14 | S2 | -| main.rs:971:18:971:19 | S2 | | main.rs:887:5:888:14 | S2 | -| main.rs:972:18:972:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:972:18:972:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:972:18:972:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:972:18:972:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:972:26:972:27 | x5 | | main.rs:887:5:888:14 | S2 | -| main.rs:972:26:972:32 | x5.m1() | | main.rs:833:5:836:5 | Wrapper | -| main.rs:972:26:972:32 | x5.m1() | A | main.rs:887:5:888:14 | S2 | -| main.rs:973:13:973:14 | x6 | | main.rs:887:5:888:14 | S2 | -| main.rs:973:18:973:19 | S2 | | main.rs:887:5:888:14 | S2 | -| main.rs:974:18:974:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:974:18:974:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:974:18:974:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:974:18:974:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:974:26:974:27 | x6 | | main.rs:887:5:888:14 | S2 | -| main.rs:974:26:974:32 | x6.m2() | | main.rs:833:5:836:5 | Wrapper | -| main.rs:974:26:974:32 | x6.m2() | A | main.rs:887:5:888:14 | S2 | -| main.rs:976:13:976:22 | assoc_zero | | main.rs:890:5:891:14 | AT | -| main.rs:976:26:976:27 | AT | | main.rs:890:5:891:14 | AT | -| main.rs:976:26:976:38 | AT.get_zero() | | main.rs:890:5:891:14 | AT | -| main.rs:977:13:977:21 | assoc_one | | main.rs:884:5:885:13 | S | -| main.rs:977:25:977:26 | AT | | main.rs:890:5:891:14 | AT | -| main.rs:977:25:977:36 | AT.get_one() | | main.rs:884:5:885:13 | S | -| main.rs:978:13:978:21 | assoc_two | | main.rs:887:5:888:14 | S2 | -| main.rs:978:25:978:26 | AT | | main.rs:890:5:891:14 | AT | -| main.rs:978:25:978:36 | AT.get_two() | | main.rs:887:5:888:14 | S2 | -| main.rs:986:19:986:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:986:19:986:23 | SelfParam | &T | main.rs:983:5:987:5 | Self [trait Supertrait] | -| main.rs:986:26:986:32 | content | | main.rs:984:9:984:21 | Content | -| main.rs:991:24:991:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:991:24:991:28 | SelfParam | &T | main.rs:989:5:992:5 | Self [trait Subtrait] | -| main.rs:1000:23:1000:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1000:23:1000:27 | SelfParam | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | -| main.rs:1000:30:1000:31 | c1 | | main.rs:984:9:984:21 | Content | -| main.rs:1000:49:1000:50 | c2 | | main.rs:984:9:984:21 | Content | +| main.rs:867:13:867:16 | self | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | +| main.rs:867:13:867:23 | self.put(...) | | main.rs:860:9:860:52 | GenericAssociatedType | +| main.rs:867:22:867:22 | b | | main.rs:865:19:865:19 | A | +| main.rs:876:21:876:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:876:21:876:25 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | +| main.rs:878:20:878:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:878:20:878:24 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | +| main.rs:880:20:880:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:880:20:880:24 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | +| main.rs:896:15:896:18 | SelfParam | | main.rs:883:5:884:13 | S | +| main.rs:896:45:898:9 | { ... } | | main.rs:889:5:890:14 | AT | +| main.rs:897:13:897:14 | AT | | main.rs:889:5:890:14 | AT | +| main.rs:906:19:906:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:906:19:906:23 | SelfParam | &T | main.rs:883:5:884:13 | S | +| main.rs:906:26:906:26 | a | | main.rs:906:16:906:16 | A | +| main.rs:906:46:908:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | +| main.rs:906:46:908:9 | { ... } | A | main.rs:906:16:906:16 | A | +| main.rs:907:13:907:32 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | +| main.rs:907:13:907:32 | Wrapper {...} | A | main.rs:906:16:906:16 | A | +| main.rs:907:30:907:30 | a | | main.rs:906:16:906:16 | A | +| main.rs:915:15:915:18 | SelfParam | | main.rs:886:5:887:14 | S2 | +| main.rs:915:45:917:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | +| main.rs:915:45:917:9 | { ... } | A | main.rs:886:5:887:14 | S2 | +| main.rs:916:13:916:35 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | +| main.rs:916:13:916:35 | Wrapper {...} | A | main.rs:886:5:887:14 | S2 | +| main.rs:916:30:916:33 | self | | main.rs:886:5:887:14 | S2 | +| main.rs:922:30:924:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | +| main.rs:922:30:924:9 | { ... } | A | main.rs:886:5:887:14 | S2 | +| main.rs:923:13:923:33 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | +| main.rs:923:13:923:33 | Wrapper {...} | A | main.rs:886:5:887:14 | S2 | +| main.rs:923:30:923:31 | S2 | | main.rs:886:5:887:14 | S2 | +| main.rs:929:22:929:26 | thing | | main.rs:929:10:929:19 | T | +| main.rs:930:9:930:13 | thing | | main.rs:929:10:929:19 | T | +| main.rs:937:21:937:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:937:21:937:25 | SelfParam | &T | main.rs:889:5:890:14 | AT | +| main.rs:937:34:939:9 | { ... } | | main.rs:889:5:890:14 | AT | +| main.rs:938:13:938:14 | AT | | main.rs:889:5:890:14 | AT | +| main.rs:941:20:941:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:941:20:941:24 | SelfParam | &T | main.rs:889:5:890:14 | AT | +| main.rs:941:43:943:9 | { ... } | | main.rs:883:5:884:13 | S | +| main.rs:942:13:942:13 | S | | main.rs:883:5:884:13 | S | +| main.rs:945:20:945:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:945:20:945:24 | SelfParam | &T | main.rs:889:5:890:14 | AT | +| main.rs:945:43:947:9 | { ... } | | main.rs:886:5:887:14 | S2 | +| main.rs:946:13:946:14 | S2 | | main.rs:886:5:887:14 | S2 | +| main.rs:951:13:951:14 | x1 | | main.rs:883:5:884:13 | S | +| main.rs:951:18:951:18 | S | | main.rs:883:5:884:13 | S | +| main.rs:953:18:953:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:953:18:953:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:953:18:953:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:953:18:953:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:953:26:953:27 | x1 | | main.rs:883:5:884:13 | S | +| main.rs:953:26:953:32 | x1.m1() | | main.rs:889:5:890:14 | AT | +| main.rs:955:13:955:14 | x2 | | main.rs:883:5:884:13 | S | +| main.rs:955:18:955:18 | S | | main.rs:883:5:884:13 | S | +| main.rs:957:13:957:13 | y | | main.rs:889:5:890:14 | AT | +| main.rs:957:17:957:18 | x2 | | main.rs:883:5:884:13 | S | +| main.rs:957:17:957:23 | x2.m2() | | main.rs:889:5:890:14 | AT | +| main.rs:958:18:958:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:958:18:958:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:958:18:958:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:958:18:958:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:958:26:958:26 | y | | main.rs:889:5:890:14 | AT | +| main.rs:960:13:960:14 | x3 | | main.rs:883:5:884:13 | S | +| main.rs:960:18:960:18 | S | | main.rs:883:5:884:13 | S | +| main.rs:962:18:962:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:962:18:962:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:962:18:962:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:962:18:962:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:962:26:962:27 | x3 | | main.rs:883:5:884:13 | S | +| main.rs:962:26:962:34 | x3.put(...) | | main.rs:832:5:835:5 | Wrapper | +| main.rs:962:26:962:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:962:26:962:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:962:33:962:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:965:18:965:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:965:18:965:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:965:18:965:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:965:18:965:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:965:26:965:27 | x3 | | main.rs:883:5:884:13 | S | +| main.rs:965:26:965:40 | x3.putTwo(...) | | main.rs:832:5:835:5 | Wrapper | +| main.rs:965:26:965:40 | x3.putTwo(...) | A | main.rs:903:36:903:50 | AssociatedParam | +| main.rs:965:26:965:49 | ... .unwrap() | | main.rs:903:36:903:50 | AssociatedParam | +| main.rs:965:36:965:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:965:39:965:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:967:20:967:20 | S | | main.rs:883:5:884:13 | S | +| main.rs:968:18:968:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:968:18:968:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:968:18:968:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:968:18:968:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:970:13:970:14 | x5 | | main.rs:886:5:887:14 | S2 | +| main.rs:970:18:970:19 | S2 | | main.rs:886:5:887:14 | S2 | +| main.rs:971:18:971:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:971:18:971:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:971:18:971:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:971:18:971:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:971:26:971:27 | x5 | | main.rs:886:5:887:14 | S2 | +| main.rs:971:26:971:32 | x5.m1() | | main.rs:832:5:835:5 | Wrapper | +| main.rs:971:26:971:32 | x5.m1() | A | main.rs:886:5:887:14 | S2 | +| main.rs:972:13:972:14 | x6 | | main.rs:886:5:887:14 | S2 | +| main.rs:972:18:972:19 | S2 | | main.rs:886:5:887:14 | S2 | +| main.rs:973:18:973:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:973:18:973:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:973:18:973:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:973:18:973:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:973:26:973:27 | x6 | | main.rs:886:5:887:14 | S2 | +| main.rs:973:26:973:32 | x6.m2() | | main.rs:832:5:835:5 | Wrapper | +| main.rs:973:26:973:32 | x6.m2() | A | main.rs:886:5:887:14 | S2 | +| main.rs:975:13:975:22 | assoc_zero | | main.rs:889:5:890:14 | AT | +| main.rs:975:26:975:27 | AT | | main.rs:889:5:890:14 | AT | +| main.rs:975:26:975:38 | AT.get_zero() | | main.rs:889:5:890:14 | AT | +| main.rs:976:13:976:21 | assoc_one | | main.rs:883:5:884:13 | S | +| main.rs:976:25:976:26 | AT | | main.rs:889:5:890:14 | AT | +| main.rs:976:25:976:36 | AT.get_one() | | main.rs:883:5:884:13 | S | +| main.rs:977:13:977:21 | assoc_two | | main.rs:886:5:887:14 | S2 | +| main.rs:977:25:977:26 | AT | | main.rs:889:5:890:14 | AT | +| main.rs:977:25:977:36 | AT.get_two() | | main.rs:886:5:887:14 | S2 | +| main.rs:985:19:985:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:985:19:985:23 | SelfParam | &T | main.rs:982:5:986:5 | Self [trait Supertrait] | +| main.rs:985:26:985:32 | content | | main.rs:983:9:983:21 | Content | +| main.rs:990:24:990:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:990:24:990:28 | SelfParam | &T | main.rs:988:5:991:5 | Self [trait Subtrait] | +| main.rs:999:23:999:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:999:23:999:27 | SelfParam | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | +| main.rs:999:30:999:31 | c1 | | main.rs:983:9:983:21 | Content | +| main.rs:999:49:999:50 | c2 | | main.rs:983:9:983:21 | Content | +| main.rs:1000:13:1000:16 | self | | file://:0:0:0:0 | & | +| main.rs:1000:13:1000:16 | self | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | +| main.rs:1000:25:1000:26 | c1 | | main.rs:983:9:983:21 | Content | | main.rs:1001:13:1001:16 | self | | file://:0:0:0:0 | & | -| main.rs:1001:13:1001:16 | self | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | -| main.rs:1001:25:1001:26 | c1 | | main.rs:984:9:984:21 | Content | -| main.rs:1002:13:1002:16 | self | | file://:0:0:0:0 | & | -| main.rs:1002:13:1002:16 | self | &T | main.rs:994:5:1004:5 | Self [trait Subtrait2] | -| main.rs:1002:25:1002:26 | c2 | | main.rs:984:9:984:21 | Content | -| main.rs:1010:19:1010:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1010:19:1010:23 | SelfParam | &T | main.rs:1006:5:1006:24 | MyType | -| main.rs:1010:19:1010:23 | SelfParam | &T.T | main.rs:1008:10:1008:10 | T | -| main.rs:1010:26:1010:33 | _content | | main.rs:1008:10:1008:10 | T | -| main.rs:1011:22:1011:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:1011:22:1011:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1011:22:1011:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1011:22:1011:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1017:24:1017:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1017:24:1017:28 | SelfParam | &T | main.rs:1006:5:1006:24 | MyType | -| main.rs:1017:24:1017:28 | SelfParam | &T.T | main.rs:1015:10:1015:17 | T | -| main.rs:1017:48:1019:9 | { ... } | | main.rs:1015:10:1015:17 | T | -| main.rs:1018:13:1018:19 | (...) | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1018:13:1018:19 | (...) | T | main.rs:1015:10:1015:17 | T | -| main.rs:1018:13:1018:21 | ... .0 | | main.rs:1015:10:1015:17 | T | -| main.rs:1018:13:1018:29 | ... .clone() | | main.rs:1015:10:1015:17 | T | -| main.rs:1018:14:1018:18 | * ... | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1018:14:1018:18 | * ... | T | main.rs:1015:10:1015:17 | T | -| main.rs:1018:15:1018:18 | self | | file://:0:0:0:0 | & | -| main.rs:1018:15:1018:18 | self | &T | main.rs:1006:5:1006:24 | MyType | -| main.rs:1018:15:1018:18 | self | &T.T | main.rs:1015:10:1015:17 | T | -| main.rs:1022:33:1022:36 | item | | file://:0:0:0:0 | & | -| main.rs:1022:33:1022:36 | item | &T | main.rs:1022:20:1022:30 | T | -| main.rs:1022:57:1024:5 | { ... } | | main.rs:984:9:984:21 | Content | -| main.rs:1023:9:1023:12 | item | | file://:0:0:0:0 | & | -| main.rs:1023:9:1023:12 | item | &T | main.rs:1022:20:1022:30 | T | -| main.rs:1023:9:1023:26 | item.get_content() | | main.rs:984:9:984:21 | Content | -| main.rs:1026:35:1026:38 | item | | file://:0:0:0:0 | & | -| main.rs:1026:35:1026:38 | item | &T | main.rs:1026:21:1026:32 | T | -| main.rs:1026:45:1026:46 | c1 | | main.rs:984:9:984:21 | Content | -| main.rs:1026:61:1026:62 | c2 | | main.rs:984:9:984:21 | Content | -| main.rs:1026:77:1026:78 | c3 | | main.rs:984:9:984:21 | Content | +| main.rs:1001:13:1001:16 | self | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | +| main.rs:1001:25:1001:26 | c2 | | main.rs:983:9:983:21 | Content | +| main.rs:1009:19:1009:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1009:19:1009:23 | SelfParam | &T | main.rs:1005:5:1005:24 | MyType | +| main.rs:1009:19:1009:23 | SelfParam | &T.T | main.rs:1007:10:1007:10 | T | +| main.rs:1009:26:1009:33 | _content | | main.rs:1007:10:1007:10 | T | +| main.rs:1010:22:1010:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:1010:22:1010:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1010:22:1010:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1010:22:1010:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1016:24:1016:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1016:24:1016:28 | SelfParam | &T | main.rs:1005:5:1005:24 | MyType | +| main.rs:1016:24:1016:28 | SelfParam | &T.T | main.rs:1014:10:1014:17 | T | +| main.rs:1016:48:1018:9 | { ... } | | main.rs:1014:10:1014:17 | T | +| main.rs:1017:13:1017:19 | (...) | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1017:13:1017:19 | (...) | T | main.rs:1014:10:1014:17 | T | +| main.rs:1017:13:1017:21 | ... .0 | | main.rs:1014:10:1014:17 | T | +| main.rs:1017:13:1017:29 | ... .clone() | | main.rs:1014:10:1014:17 | T | +| main.rs:1017:14:1017:18 | * ... | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1017:14:1017:18 | * ... | T | main.rs:1014:10:1014:17 | T | +| main.rs:1017:15:1017:18 | self | | file://:0:0:0:0 | & | +| main.rs:1017:15:1017:18 | self | &T | main.rs:1005:5:1005:24 | MyType | +| main.rs:1017:15:1017:18 | self | &T.T | main.rs:1014:10:1014:17 | T | +| main.rs:1021:33:1021:36 | item | | file://:0:0:0:0 | & | +| main.rs:1021:33:1021:36 | item | &T | main.rs:1021:20:1021:30 | T | +| main.rs:1021:57:1023:5 | { ... } | | main.rs:983:9:983:21 | Content | +| main.rs:1022:9:1022:12 | item | | file://:0:0:0:0 | & | +| main.rs:1022:9:1022:12 | item | &T | main.rs:1021:20:1021:30 | T | +| main.rs:1022:9:1022:26 | item.get_content() | | main.rs:983:9:983:21 | Content | +| main.rs:1025:35:1025:38 | item | | file://:0:0:0:0 | & | +| main.rs:1025:35:1025:38 | item | &T | main.rs:1025:21:1025:32 | T | +| main.rs:1025:45:1025:46 | c1 | | main.rs:983:9:983:21 | Content | +| main.rs:1025:61:1025:62 | c2 | | main.rs:983:9:983:21 | Content | +| main.rs:1025:77:1025:78 | c3 | | main.rs:983:9:983:21 | Content | +| main.rs:1026:9:1026:12 | item | | file://:0:0:0:0 | & | +| main.rs:1026:9:1026:12 | item | &T | main.rs:1025:21:1025:32 | T | +| main.rs:1026:21:1026:22 | c1 | | main.rs:983:9:983:21 | Content | | main.rs:1027:9:1027:12 | item | | file://:0:0:0:0 | & | -| main.rs:1027:9:1027:12 | item | &T | main.rs:1026:21:1026:32 | T | -| main.rs:1027:21:1027:22 | c1 | | main.rs:984:9:984:21 | Content | -| main.rs:1028:9:1028:12 | item | | file://:0:0:0:0 | & | -| main.rs:1028:9:1028:12 | item | &T | main.rs:1026:21:1026:32 | T | -| main.rs:1028:25:1028:26 | c2 | | main.rs:984:9:984:21 | Content | -| main.rs:1028:29:1028:30 | c3 | | main.rs:984:9:984:21 | Content | -| main.rs:1032:13:1032:17 | item1 | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1032:13:1032:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1032:21:1032:33 | MyType(...) | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1032:21:1032:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1032:28:1032:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1033:25:1033:29 | item1 | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1033:25:1033:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1035:13:1035:17 | item2 | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1035:13:1035:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1035:21:1035:32 | MyType(...) | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1035:21:1035:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:1035:28:1035:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1036:37:1036:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:1036:37:1036:42 | &item2 | &T | main.rs:1006:5:1006:24 | MyType | -| main.rs:1036:37:1036:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:1036:38:1036:42 | item2 | | main.rs:1006:5:1006:24 | MyType | -| main.rs:1036:38:1036:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1053:15:1053:18 | SelfParam | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1053:15:1053:18 | SelfParam | A | main.rs:1052:10:1052:10 | T | -| main.rs:1053:26:1058:9 | { ... } | | main.rs:1052:10:1052:10 | T | -| main.rs:1054:13:1057:13 | match self { ... } | | main.rs:1052:10:1052:10 | T | -| main.rs:1054:19:1054:22 | self | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1054:19:1054:22 | self | A | main.rs:1052:10:1052:10 | T | -| main.rs:1055:17:1055:29 | ...::C1(...) | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1055:17:1055:29 | ...::C1(...) | A | main.rs:1052:10:1052:10 | T | -| main.rs:1055:28:1055:28 | a | | main.rs:1052:10:1052:10 | T | -| main.rs:1055:34:1055:34 | a | | main.rs:1052:10:1052:10 | T | -| main.rs:1056:17:1056:32 | ...::C2 {...} | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1056:17:1056:32 | ...::C2 {...} | A | main.rs:1052:10:1052:10 | T | -| main.rs:1056:30:1056:30 | a | | main.rs:1052:10:1052:10 | T | -| main.rs:1056:37:1056:37 | a | | main.rs:1052:10:1052:10 | T | -| main.rs:1062:13:1062:13 | x | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1062:13:1062:13 | x | A | main.rs:1047:5:1048:14 | S1 | -| main.rs:1062:17:1062:30 | ...::C1(...) | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1062:17:1062:30 | ...::C1(...) | A | main.rs:1047:5:1048:14 | S1 | -| main.rs:1062:28:1062:29 | S1 | | main.rs:1047:5:1048:14 | S1 | -| main.rs:1063:13:1063:13 | y | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1063:13:1063:13 | y | A | main.rs:1049:5:1050:14 | S2 | -| main.rs:1063:17:1063:36 | ...::C2 {...} | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1063:17:1063:36 | ...::C2 {...} | A | main.rs:1049:5:1050:14 | S2 | -| main.rs:1063:33:1063:34 | S2 | | main.rs:1049:5:1050:14 | S2 | +| main.rs:1027:9:1027:12 | item | &T | main.rs:1025:21:1025:32 | T | +| main.rs:1027:25:1027:26 | c2 | | main.rs:983:9:983:21 | Content | +| main.rs:1027:29:1027:30 | c3 | | main.rs:983:9:983:21 | Content | +| main.rs:1031:13:1031:17 | item1 | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1031:13:1031:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1031:21:1031:33 | MyType(...) | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1031:21:1031:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1031:28:1031:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1032:25:1032:29 | item1 | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1032:25:1032:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1034:13:1034:17 | item2 | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1034:13:1034:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1034:21:1034:32 | MyType(...) | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1034:21:1034:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:1034:28:1034:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1035:37:1035:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:1035:37:1035:42 | &item2 | &T | main.rs:1005:5:1005:24 | MyType | +| main.rs:1035:37:1035:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:1035:38:1035:42 | item2 | | main.rs:1005:5:1005:24 | MyType | +| main.rs:1035:38:1035:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1052:15:1052:18 | SelfParam | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1052:15:1052:18 | SelfParam | A | main.rs:1051:10:1051:10 | T | +| main.rs:1052:26:1057:9 | { ... } | | main.rs:1051:10:1051:10 | T | +| main.rs:1053:13:1056:13 | match self { ... } | | main.rs:1051:10:1051:10 | T | +| main.rs:1053:19:1053:22 | self | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1053:19:1053:22 | self | A | main.rs:1051:10:1051:10 | T | +| main.rs:1054:17:1054:29 | ...::C1(...) | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1054:17:1054:29 | ...::C1(...) | A | main.rs:1051:10:1051:10 | T | +| main.rs:1054:28:1054:28 | a | | main.rs:1051:10:1051:10 | T | +| main.rs:1054:34:1054:34 | a | | main.rs:1051:10:1051:10 | T | +| main.rs:1055:17:1055:32 | ...::C2 {...} | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1055:17:1055:32 | ...::C2 {...} | A | main.rs:1051:10:1051:10 | T | +| main.rs:1055:30:1055:30 | a | | main.rs:1051:10:1051:10 | T | +| main.rs:1055:37:1055:37 | a | | main.rs:1051:10:1051:10 | T | +| main.rs:1061:13:1061:13 | x | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1061:13:1061:13 | x | A | main.rs:1046:5:1047:14 | S1 | +| main.rs:1061:17:1061:30 | ...::C1(...) | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1061:17:1061:30 | ...::C1(...) | A | main.rs:1046:5:1047:14 | S1 | +| main.rs:1061:28:1061:29 | S1 | | main.rs:1046:5:1047:14 | S1 | +| main.rs:1062:13:1062:13 | y | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1062:13:1062:13 | y | A | main.rs:1048:5:1049:14 | S2 | +| main.rs:1062:17:1062:36 | ...::C2 {...} | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1062:17:1062:36 | ...::C2 {...} | A | main.rs:1048:5:1049:14 | S2 | +| main.rs:1062:33:1062:34 | S2 | | main.rs:1048:5:1049:14 | S2 | +| main.rs:1064:18:1064:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1064:18:1064:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1064:18:1064:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1064:18:1064:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1064:26:1064:26 | x | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1064:26:1064:26 | x | A | main.rs:1046:5:1047:14 | S1 | +| main.rs:1064:26:1064:31 | x.m1() | | main.rs:1046:5:1047:14 | S1 | | main.rs:1065:18:1065:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1065:18:1065:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1065:18:1065:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1065:18:1065:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1065:26:1065:26 | x | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1065:26:1065:26 | x | A | main.rs:1047:5:1048:14 | S1 | -| main.rs:1065:26:1065:31 | x.m1() | | main.rs:1047:5:1048:14 | S1 | -| main.rs:1066:18:1066:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1066:18:1066:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1066:18:1066:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1066:18:1066:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1066:26:1066:26 | y | | main.rs:1041:5:1045:5 | MyEnum | -| main.rs:1066:26:1066:26 | y | A | main.rs:1049:5:1050:14 | S2 | -| main.rs:1066:26:1066:31 | y.m1() | | main.rs:1049:5:1050:14 | S2 | -| main.rs:1088:15:1088:18 | SelfParam | | main.rs:1086:5:1089:5 | Self [trait MyTrait1] | -| main.rs:1093:15:1093:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1093:15:1093:19 | SelfParam | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | -| main.rs:1096:9:1102:9 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1097:13:1101:13 | if ... {...} else {...} | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1097:16:1097:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1097:16:1097:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1097:20:1097:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1097:22:1099:13 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1098:17:1098:20 | self | | file://:0:0:0:0 | & | -| main.rs:1098:17:1098:20 | self | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | -| main.rs:1098:17:1098:25 | self.m1() | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1099:20:1101:13 | { ... } | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1100:17:1100:31 | ...::m1(...) | | main.rs:1091:20:1091:22 | Tr2 | -| main.rs:1100:26:1100:30 | * ... | | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | -| main.rs:1100:27:1100:30 | self | | file://:0:0:0:0 | & | -| main.rs:1100:27:1100:30 | self | &T | main.rs:1091:5:1103:5 | Self [trait MyTrait2] | -| main.rs:1107:15:1107:18 | SelfParam | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | -| main.rs:1110:9:1116:9 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1111:13:1115:13 | if ... {...} else {...} | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1111:16:1111:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1111:16:1111:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1111:20:1111:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1111:22:1113:13 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1112:17:1112:20 | self | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | -| main.rs:1112:17:1112:25 | self.m2() | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1112:17:1112:25 | self.m2() | A | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1112:17:1112:27 | ... .a | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1113:20:1115:13 | { ... } | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1114:17:1114:31 | ...::m2(...) | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1114:17:1114:31 | ...::m2(...) | A | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1114:17:1114:33 | ... .a | | main.rs:1105:20:1105:22 | Tr3 | -| main.rs:1114:26:1114:30 | &self | | file://:0:0:0:0 | & | -| main.rs:1114:26:1114:30 | &self | &T | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | -| main.rs:1114:27:1114:30 | self | | main.rs:1105:5:1117:5 | Self [trait MyTrait3] | -| main.rs:1121:15:1121:18 | SelfParam | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1121:15:1121:18 | SelfParam | A | main.rs:1119:10:1119:10 | T | -| main.rs:1121:26:1123:9 | { ... } | | main.rs:1119:10:1119:10 | T | -| main.rs:1122:13:1122:16 | self | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1122:13:1122:16 | self | A | main.rs:1119:10:1119:10 | T | -| main.rs:1122:13:1122:18 | self.a | | main.rs:1119:10:1119:10 | T | -| main.rs:1130:15:1130:18 | SelfParam | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1130:15:1130:18 | SelfParam | A | main.rs:1128:10:1128:10 | T | -| main.rs:1130:35:1132:9 | { ... } | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1130:35:1132:9 | { ... } | A | main.rs:1128:10:1128:10 | T | -| main.rs:1131:13:1131:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1131:13:1131:33 | MyThing {...} | A | main.rs:1128:10:1128:10 | T | -| main.rs:1131:26:1131:29 | self | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1131:26:1131:29 | self | A | main.rs:1128:10:1128:10 | T | -| main.rs:1131:26:1131:31 | self.a | | main.rs:1128:10:1128:10 | T | -| main.rs:1139:44:1139:44 | x | | main.rs:1139:26:1139:41 | T2 | -| main.rs:1139:57:1141:5 | { ... } | | main.rs:1139:22:1139:23 | T1 | -| main.rs:1140:9:1140:9 | x | | main.rs:1139:26:1139:41 | T2 | -| main.rs:1140:9:1140:14 | x.m1() | | main.rs:1139:22:1139:23 | T1 | -| main.rs:1143:56:1143:56 | x | | main.rs:1143:39:1143:53 | T | -| main.rs:1145:13:1145:13 | a | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1145:13:1145:13 | a | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1145:17:1145:17 | x | | main.rs:1143:39:1143:53 | T | -| main.rs:1145:17:1145:22 | x.m1() | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1145:17:1145:22 | x.m1() | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1146:18:1146:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1146:18:1146:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1146:18:1146:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1146:18:1146:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1146:26:1146:26 | a | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1146:26:1146:26 | a | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1150:13:1150:13 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1150:13:1150:13 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1150:17:1150:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1150:17:1150:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1150:30:1150:31 | S1 | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1151:13:1151:13 | y | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1151:13:1151:13 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1151:17:1151:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1151:17:1151:33 | MyThing {...} | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1151:30:1151:31 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1065:26:1065:26 | y | | main.rs:1040:5:1044:5 | MyEnum | +| main.rs:1065:26:1065:26 | y | A | main.rs:1048:5:1049:14 | S2 | +| main.rs:1065:26:1065:31 | y.m1() | | main.rs:1048:5:1049:14 | S2 | +| main.rs:1087:15:1087:18 | SelfParam | | main.rs:1085:5:1088:5 | Self [trait MyTrait1] | +| main.rs:1092:15:1092:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1092:15:1092:19 | SelfParam | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | +| main.rs:1095:9:1101:9 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1096:13:1100:13 | if ... {...} else {...} | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1096:16:1096:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1096:16:1096:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1096:20:1096:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1096:22:1098:13 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1097:17:1097:20 | self | | file://:0:0:0:0 | & | +| main.rs:1097:17:1097:20 | self | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | +| main.rs:1097:17:1097:25 | self.m1() | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1098:20:1100:13 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1099:17:1099:31 | ...::m1(...) | | main.rs:1090:20:1090:22 | Tr2 | +| main.rs:1099:26:1099:30 | * ... | | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | +| main.rs:1099:27:1099:30 | self | | file://:0:0:0:0 | & | +| main.rs:1099:27:1099:30 | self | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | +| main.rs:1106:15:1106:18 | SelfParam | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | +| main.rs:1109:9:1115:9 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1110:13:1114:13 | if ... {...} else {...} | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1110:16:1110:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1110:16:1110:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1110:20:1110:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1110:22:1112:13 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1111:17:1111:20 | self | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | +| main.rs:1111:17:1111:25 | self.m2() | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1111:17:1111:25 | self.m2() | A | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1111:17:1111:27 | ... .a | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1112:20:1114:13 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1113:17:1113:31 | ...::m2(...) | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1113:17:1113:31 | ...::m2(...) | A | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1113:17:1113:33 | ... .a | | main.rs:1104:20:1104:22 | Tr3 | +| main.rs:1113:26:1113:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1113:26:1113:30 | &self | &T | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | +| main.rs:1113:27:1113:30 | self | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | +| main.rs:1120:15:1120:18 | SelfParam | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1120:15:1120:18 | SelfParam | A | main.rs:1118:10:1118:10 | T | +| main.rs:1120:26:1122:9 | { ... } | | main.rs:1118:10:1118:10 | T | +| main.rs:1121:13:1121:16 | self | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1121:13:1121:16 | self | A | main.rs:1118:10:1118:10 | T | +| main.rs:1121:13:1121:18 | self.a | | main.rs:1118:10:1118:10 | T | +| main.rs:1129:15:1129:18 | SelfParam | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1129:15:1129:18 | SelfParam | A | main.rs:1127:10:1127:10 | T | +| main.rs:1129:35:1131:9 | { ... } | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1129:35:1131:9 | { ... } | A | main.rs:1127:10:1127:10 | T | +| main.rs:1130:13:1130:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1130:13:1130:33 | MyThing {...} | A | main.rs:1127:10:1127:10 | T | +| main.rs:1130:26:1130:29 | self | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1130:26:1130:29 | self | A | main.rs:1127:10:1127:10 | T | +| main.rs:1130:26:1130:31 | self.a | | main.rs:1127:10:1127:10 | T | +| main.rs:1138:44:1138:44 | x | | main.rs:1138:26:1138:41 | T2 | +| main.rs:1138:57:1140:5 | { ... } | | main.rs:1138:22:1138:23 | T1 | +| main.rs:1139:9:1139:9 | x | | main.rs:1138:26:1138:41 | T2 | +| main.rs:1139:9:1139:14 | x.m1() | | main.rs:1138:22:1138:23 | T1 | +| main.rs:1142:56:1142:56 | x | | main.rs:1142:39:1142:53 | T | +| main.rs:1144:13:1144:13 | a | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1144:13:1144:13 | a | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1144:17:1144:17 | x | | main.rs:1142:39:1142:53 | T | +| main.rs:1144:17:1144:22 | x.m1() | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1144:17:1144:22 | x.m1() | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1145:18:1145:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1145:18:1145:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1145:18:1145:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1145:18:1145:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1145:26:1145:26 | a | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1145:26:1145:26 | a | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1149:13:1149:13 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1149:13:1149:13 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1149:17:1149:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1149:17:1149:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1149:30:1149:31 | S1 | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1150:13:1150:13 | y | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1150:13:1150:13 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1150:17:1150:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1150:17:1150:33 | MyThing {...} | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1150:30:1150:31 | S2 | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1152:18:1152:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1152:18:1152:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1152:18:1152:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1152:18:1152:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1152:26:1152:26 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1152:26:1152:26 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1152:26:1152:31 | x.m1() | | main.rs:1080:5:1081:14 | S1 | | main.rs:1153:18:1153:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1153:18:1153:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1153:18:1153:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1153:18:1153:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1153:26:1153:26 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1153:26:1153:26 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1153:26:1153:31 | x.m1() | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1154:18:1154:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1154:18:1154:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1154:18:1154:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1154:18:1154:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1154:26:1154:26 | y | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1154:26:1154:26 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1154:26:1154:31 | y.m1() | | main.rs:1083:5:1084:14 | S2 | -| main.rs:1156:13:1156:13 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1156:13:1156:13 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1156:17:1156:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1156:17:1156:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1156:30:1156:31 | S1 | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1157:13:1157:13 | y | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1157:13:1157:13 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1157:17:1157:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1157:17:1157:33 | MyThing {...} | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1157:30:1157:31 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1153:26:1153:26 | y | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1153:26:1153:26 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1153:26:1153:31 | y.m1() | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1155:13:1155:13 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1155:13:1155:13 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1155:17:1155:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1155:17:1155:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1155:30:1155:31 | S1 | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1156:13:1156:13 | y | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1156:13:1156:13 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1156:17:1156:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1156:17:1156:33 | MyThing {...} | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1156:30:1156:31 | S2 | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1158:18:1158:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1158:18:1158:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1158:18:1158:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1158:18:1158:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1158:26:1158:26 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1158:26:1158:26 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1158:26:1158:31 | x.m2() | | main.rs:1080:5:1081:14 | S1 | | main.rs:1159:18:1159:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1159:18:1159:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1159:18:1159:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1159:18:1159:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1159:26:1159:26 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1159:26:1159:26 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1159:26:1159:31 | x.m2() | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1160:18:1160:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1160:18:1160:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1160:18:1160:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1160:18:1160:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1160:26:1160:26 | y | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1160:26:1160:26 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1160:26:1160:31 | y.m2() | | main.rs:1083:5:1084:14 | S2 | -| main.rs:1162:13:1162:13 | x | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1162:13:1162:13 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1162:17:1162:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1162:17:1162:34 | MyThing2 {...} | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1162:31:1162:32 | S1 | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1163:13:1163:13 | y | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1163:13:1163:13 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1163:17:1163:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1163:17:1163:34 | MyThing2 {...} | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1163:31:1163:32 | S2 | | main.rs:1083:5:1084:14 | S2 | +| main.rs:1159:26:1159:26 | y | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1159:26:1159:26 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1159:26:1159:31 | y.m2() | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1161:13:1161:13 | x | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1161:13:1161:13 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1161:17:1161:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1161:17:1161:34 | MyThing2 {...} | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1161:31:1161:32 | S1 | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1162:13:1162:13 | y | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1162:13:1162:13 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1162:17:1162:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1162:17:1162:34 | MyThing2 {...} | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1162:31:1162:32 | S2 | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1164:18:1164:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1164:18:1164:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1164:18:1164:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1164:18:1164:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1164:26:1164:26 | x | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1164:26:1164:26 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1164:26:1164:31 | x.m3() | | main.rs:1080:5:1081:14 | S1 | | main.rs:1165:18:1165:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1165:18:1165:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1165:18:1165:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1165:18:1165:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1165:26:1165:26 | x | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1165:26:1165:26 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1165:26:1165:31 | x.m3() | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1166:18:1166:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1166:18:1166:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1166:18:1166:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1166:18:1166:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1166:26:1166:26 | y | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1166:26:1166:26 | y | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1166:26:1166:31 | y.m3() | | main.rs:1083:5:1084:14 | S2 | -| main.rs:1168:13:1168:13 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1168:13:1168:13 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1168:17:1168:33 | MyThing {...} | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1168:17:1168:33 | MyThing {...} | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1168:30:1168:31 | S1 | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1169:13:1169:13 | s | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1169:17:1169:32 | call_trait_m1(...) | | main.rs:1081:5:1082:14 | S1 | -| main.rs:1169:31:1169:31 | x | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1169:31:1169:31 | x | A | main.rs:1081:5:1082:14 | S1 | -| main.rs:1171:13:1171:13 | x | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1171:13:1171:13 | x | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1171:17:1171:34 | MyThing2 {...} | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1171:17:1171:34 | MyThing2 {...} | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1171:31:1171:32 | S2 | | main.rs:1083:5:1084:14 | S2 | -| main.rs:1172:13:1172:13 | s | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1172:13:1172:13 | s | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1172:17:1172:32 | call_trait_m1(...) | | main.rs:1071:5:1074:5 | MyThing | -| main.rs:1172:17:1172:32 | call_trait_m1(...) | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1172:31:1172:31 | x | | main.rs:1076:5:1079:5 | MyThing2 | -| main.rs:1172:31:1172:31 | x | A | main.rs:1083:5:1084:14 | S2 | -| main.rs:1189:22:1189:22 | x | | file://:0:0:0:0 | & | -| main.rs:1189:22:1189:22 | x | &T | main.rs:1189:11:1189:19 | T | -| main.rs:1189:35:1191:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1189:35:1191:5 | { ... } | &T | main.rs:1189:11:1189:19 | T | -| main.rs:1190:9:1190:9 | x | | file://:0:0:0:0 | & | -| main.rs:1190:9:1190:9 | x | &T | main.rs:1189:11:1189:19 | T | -| main.rs:1194:17:1194:20 | SelfParam | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1194:29:1196:9 | { ... } | | main.rs:1182:5:1183:14 | S2 | -| main.rs:1195:13:1195:14 | S2 | | main.rs:1182:5:1183:14 | S2 | -| main.rs:1199:21:1199:21 | x | | main.rs:1199:13:1199:14 | T1 | -| main.rs:1202:5:1204:5 | { ... } | | main.rs:1199:17:1199:18 | T2 | -| main.rs:1203:9:1203:9 | x | | main.rs:1199:13:1199:14 | T1 | -| main.rs:1203:9:1203:16 | x.into() | | main.rs:1199:17:1199:18 | T2 | -| main.rs:1207:13:1207:13 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1207:17:1207:18 | S1 | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1208:18:1208:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1208:18:1208:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1208:18:1208:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1208:18:1208:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1208:26:1208:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1208:26:1208:31 | id(...) | &T | main.rs:1179:5:1180:14 | S1 | -| main.rs:1208:29:1208:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1208:29:1208:30 | &x | &T | main.rs:1179:5:1180:14 | S1 | -| main.rs:1208:30:1208:30 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1210:13:1210:13 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1210:17:1210:18 | S1 | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1211:18:1211:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1211:18:1211:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1211:18:1211:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1211:18:1211:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1211:26:1211:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1211:26:1211:37 | id::<...>(...) | &T | main.rs:1179:5:1180:14 | S1 | -| main.rs:1211:35:1211:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1211:35:1211:36 | &x | &T | main.rs:1179:5:1180:14 | S1 | -| main.rs:1211:36:1211:36 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1213:13:1213:13 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1213:13:1213:13 | x | | main.rs:1185:5:1185:25 | dyn Trait | -| main.rs:1213:17:1213:18 | S1 | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1213:17:1213:18 | S1 | | main.rs:1185:5:1185:25 | dyn Trait | -| main.rs:1215:18:1215:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1215:18:1215:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1215:18:1215:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1215:18:1215:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1215:26:1215:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1215:26:1215:44 | id::<...>(...) | &T | main.rs:1185:5:1185:25 | dyn Trait | -| main.rs:1215:42:1215:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1215:42:1215:43 | &x | &T | main.rs:1179:5:1180:14 | S1 | -| main.rs:1215:42:1215:43 | &x | &T | main.rs:1185:5:1185:25 | dyn Trait | -| main.rs:1215:43:1215:43 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1215:43:1215:43 | x | | main.rs:1185:5:1185:25 | dyn Trait | -| main.rs:1217:13:1217:13 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1217:17:1217:18 | S1 | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1218:9:1218:25 | into::<...>(...) | | main.rs:1182:5:1183:14 | S2 | -| main.rs:1218:24:1218:24 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1220:13:1220:13 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1220:17:1220:18 | S1 | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1221:13:1221:13 | y | | main.rs:1182:5:1183:14 | S2 | -| main.rs:1221:21:1221:27 | into(...) | | main.rs:1182:5:1183:14 | S2 | -| main.rs:1221:26:1221:26 | x | | main.rs:1179:5:1180:14 | S1 | -| main.rs:1235:22:1235:25 | SelfParam | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1235:22:1235:25 | SelfParam | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1235:22:1235:25 | SelfParam | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1235:35:1242:9 | { ... } | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1236:13:1241:13 | match self { ... } | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1236:19:1236:22 | self | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1236:19:1236:22 | self | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1236:19:1236:22 | self | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1237:17:1237:38 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1237:17:1237:38 | ...::PairNone(...) | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1237:17:1237:38 | ...::PairNone(...) | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1237:43:1237:82 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1237:50:1237:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1237:50:1237:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1237:50:1237:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1237:50:1237:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1237:50:1237:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1237:50:1237:81 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1237:50:1237:81 | { ... } | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1238:17:1238:38 | ...::PairFst(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1238:17:1238:38 | ...::PairFst(...) | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1238:17:1238:38 | ...::PairFst(...) | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1238:37:1238:37 | _ | | main.rs:1234:10:1234:12 | Fst | -| main.rs:1238:43:1238:81 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1238:50:1238:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1238:50:1238:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1238:50:1238:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1238:50:1238:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1238:50:1238:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1238:50:1238:80 | MacroExpr | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1238:50:1238:80 | { ... } | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1239:17:1239:40 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1239:17:1239:40 | ...::PairSnd(...) | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1239:17:1239:40 | ...::PairSnd(...) | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1239:37:1239:39 | snd | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1239:45:1239:47 | snd | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1240:17:1240:44 | ...::PairBoth(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1240:17:1240:44 | ...::PairBoth(...) | Fst | main.rs:1234:10:1234:12 | Fst | -| main.rs:1240:17:1240:44 | ...::PairBoth(...) | Snd | main.rs:1234:15:1234:17 | Snd | -| main.rs:1240:38:1240:38 | _ | | main.rs:1234:10:1234:12 | Fst | -| main.rs:1240:41:1240:43 | snd | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1240:49:1240:51 | snd | | main.rs:1234:15:1234:17 | Snd | -| main.rs:1266:10:1266:10 | t | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1266:10:1266:10 | t | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1266:10:1266:10 | t | Snd | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1266:10:1266:10 | t | Snd.Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1266:10:1266:10 | t | Snd.Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1267:13:1267:13 | x | | main.rs:1251:5:1252:14 | S3 | -| main.rs:1267:17:1267:17 | t | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1267:17:1267:17 | t | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1267:17:1267:17 | t | Snd | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1267:17:1267:17 | t | Snd.Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1267:17:1267:17 | t | Snd.Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1267:17:1267:29 | t.unwrapSnd() | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1267:17:1267:29 | t.unwrapSnd() | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1267:17:1267:29 | t.unwrapSnd() | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1267:17:1267:41 | ... .unwrapSnd() | | main.rs:1251:5:1252:14 | S3 | -| main.rs:1268:18:1268:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1268:18:1268:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1268:18:1268:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1268:18:1268:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1268:26:1268:26 | x | | main.rs:1251:5:1252:14 | S3 | -| main.rs:1283:22:1283:25 | SelfParam | | main.rs:1281:5:1284:5 | Self [trait TraitWithAssocType] | -| main.rs:1291:22:1291:25 | SelfParam | | main.rs:1279:5:1279:28 | GenS | -| main.rs:1291:22:1291:25 | SelfParam | GenT | main.rs:1286:10:1286:15 | Output | -| main.rs:1291:44:1293:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1291:44:1293:9 | { ... } | E | main.rs:1286:10:1286:15 | Output | -| main.rs:1291:44:1293:9 | { ... } | T | main.rs:1286:10:1286:15 | Output | -| main.rs:1292:13:1292:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1292:13:1292:22 | Ok(...) | E | main.rs:1286:10:1286:15 | Output | -| main.rs:1292:13:1292:22 | Ok(...) | T | main.rs:1286:10:1286:15 | Output | -| main.rs:1292:16:1292:19 | self | | main.rs:1279:5:1279:28 | GenS | -| main.rs:1292:16:1292:19 | self | GenT | main.rs:1286:10:1286:15 | Output | -| main.rs:1292:16:1292:21 | self.0 | | main.rs:1286:10:1286:15 | Output | -| main.rs:1298:13:1298:14 | p1 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1298:13:1298:14 | p1 | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1298:13:1298:14 | p1 | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1298:26:1298:53 | ...::PairBoth(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1298:26:1298:53 | ...::PairBoth(...) | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1298:26:1298:53 | ...::PairBoth(...) | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1298:47:1298:48 | S1 | | main.rs:1245:5:1246:14 | S1 | -| main.rs:1298:51:1298:52 | S2 | | main.rs:1248:5:1249:14 | S2 | -| main.rs:1299:18:1299:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1299:18:1299:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1299:18:1299:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1299:18:1299:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1299:26:1299:27 | p1 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1299:26:1299:27 | p1 | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1299:26:1299:27 | p1 | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1302:13:1302:14 | p2 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1302:13:1302:14 | p2 | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1302:13:1302:14 | p2 | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1302:26:1302:47 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1302:26:1302:47 | ...::PairNone(...) | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1302:26:1302:47 | ...::PairNone(...) | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1303:18:1303:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1303:18:1303:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1303:18:1303:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1303:18:1303:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1303:26:1303:27 | p2 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1303:26:1303:27 | p2 | Fst | main.rs:1245:5:1246:14 | S1 | -| main.rs:1303:26:1303:27 | p2 | Snd | main.rs:1248:5:1249:14 | S2 | -| main.rs:1306:13:1306:14 | p3 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1306:13:1306:14 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1306:13:1306:14 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1306:34:1306:56 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1306:34:1306:56 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1306:34:1306:56 | ...::PairSnd(...) | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1306:54:1306:55 | S3 | | main.rs:1251:5:1252:14 | S3 | -| main.rs:1307:18:1307:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1307:18:1307:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1307:18:1307:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1307:18:1307:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1307:26:1307:27 | p3 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1307:26:1307:27 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1307:26:1307:27 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1310:13:1310:14 | p3 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1310:13:1310:14 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1310:13:1310:14 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1310:35:1310:56 | ...::PairNone(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1310:35:1310:56 | ...::PairNone(...) | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1310:35:1310:56 | ...::PairNone(...) | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1311:18:1311:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1311:18:1311:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1311:18:1311:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1311:18:1311:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1311:26:1311:27 | p3 | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1311:26:1311:27 | p3 | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1311:26:1311:27 | p3 | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1313:11:1313:54 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1313:11:1313:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1313:31:1313:53 | ...::PairSnd(...) | | main.rs:1226:5:1232:5 | PairOption | -| main.rs:1313:31:1313:53 | ...::PairSnd(...) | Fst | main.rs:1248:5:1249:14 | S2 | -| main.rs:1313:31:1313:53 | ...::PairSnd(...) | Snd | main.rs:1251:5:1252:14 | S3 | -| main.rs:1313:51:1313:52 | S3 | | main.rs:1251:5:1252:14 | S3 | -| main.rs:1315:13:1315:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1315:13:1315:13 | x | E | main.rs:1245:5:1246:14 | S1 | -| main.rs:1315:13:1315:13 | x | T | main.rs:1271:5:1271:34 | S4 | -| main.rs:1315:13:1315:13 | x | T.T41 | main.rs:1248:5:1249:14 | S2 | -| main.rs:1315:13:1315:13 | x | T.T42 | main.rs:1273:5:1273:22 | S5 | -| main.rs:1315:13:1315:13 | x | T.T42.T5 | main.rs:1248:5:1249:14 | S2 | -| main.rs:1317:13:1317:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1317:13:1317:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1317:13:1317:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1317:17:1317:26 | GenS(...) | | main.rs:1279:5:1279:28 | GenS | -| main.rs:1317:17:1317:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1317:17:1317:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1317:17:1317:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1317:17:1317:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1317:22:1317:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1330:16:1330:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1330:16:1330:24 | SelfParam | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | -| main.rs:1330:27:1330:31 | value | | main.rs:1328:19:1328:19 | S | -| main.rs:1332:21:1332:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1332:21:1332:29 | SelfParam | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | -| main.rs:1332:32:1332:36 | value | | main.rs:1328:19:1328:19 | S | -| main.rs:1333:13:1333:16 | self | | file://:0:0:0:0 | & | -| main.rs:1333:13:1333:16 | self | &T | main.rs:1328:5:1335:5 | Self [trait MyTrait] | -| main.rs:1333:22:1333:26 | value | | main.rs:1328:19:1328:19 | S | -| main.rs:1339:16:1339:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1339:16:1339:24 | SelfParam | &T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1339:16:1339:24 | SelfParam | &T.T | main.rs:1337:10:1337:10 | T | -| main.rs:1339:27:1339:31 | value | | main.rs:1337:10:1337:10 | T | -| main.rs:1343:26:1345:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1343:26:1345:9 | { ... } | T | main.rs:1342:10:1342:10 | T | -| main.rs:1344:13:1344:30 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1344:13:1344:30 | ...::MyNone(...) | T | main.rs:1342:10:1342:10 | T | -| main.rs:1349:20:1349:23 | SelfParam | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1349:20:1349:23 | SelfParam | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1349:20:1349:23 | SelfParam | T.T | main.rs:1348:10:1348:10 | T | -| main.rs:1349:41:1354:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1349:41:1354:9 | { ... } | T | main.rs:1348:10:1348:10 | T | -| main.rs:1350:13:1353:13 | match self { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1350:13:1353:13 | match self { ... } | T | main.rs:1348:10:1348:10 | T | -| main.rs:1350:19:1350:22 | self | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1350:19:1350:22 | self | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1350:19:1350:22 | self | T.T | main.rs:1348:10:1348:10 | T | -| main.rs:1351:17:1351:34 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1351:17:1351:34 | ...::MyNone(...) | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1351:17:1351:34 | ...::MyNone(...) | T.T | main.rs:1348:10:1348:10 | T | -| main.rs:1351:39:1351:56 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1351:39:1351:56 | ...::MyNone(...) | T | main.rs:1348:10:1348:10 | T | -| main.rs:1352:17:1352:35 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1352:17:1352:35 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1352:17:1352:35 | ...::MySome(...) | T.T | main.rs:1348:10:1348:10 | T | -| main.rs:1352:34:1352:34 | x | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1352:34:1352:34 | x | T | main.rs:1348:10:1348:10 | T | -| main.rs:1352:40:1352:40 | x | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1352:40:1352:40 | x | T | main.rs:1348:10:1348:10 | T | -| main.rs:1361:13:1361:14 | x1 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1361:13:1361:14 | x1 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1361:18:1361:37 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1361:18:1361:37 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1362:18:1362:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1362:18:1362:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1362:18:1362:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1362:26:1362:27 | x1 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1362:26:1362:27 | x1 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1364:17:1364:18 | x2 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1364:17:1364:18 | x2 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1364:22:1364:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1364:22:1364:36 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1365:9:1365:10 | x2 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1365:9:1365:10 | x2 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1365:16:1365:16 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1366:18:1366:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1366:18:1366:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1366:26:1366:27 | x2 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1366:26:1366:27 | x2 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1369:17:1369:18 | x3 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1369:22:1369:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1370:9:1370:10 | x3 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1370:21:1370:21 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1371:18:1371:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1371:18:1371:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1371:18:1371:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1371:18:1371:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1371:26:1371:27 | x3 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1373:17:1373:18 | x4 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1373:17:1373:18 | x4 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1373:22:1373:36 | ...::new(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1373:22:1373:36 | ...::new(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1374:23:1374:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1374:23:1374:29 | &mut x4 | &T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1374:23:1374:29 | &mut x4 | &T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1374:28:1374:29 | x4 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1374:28:1374:29 | x4 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1374:32:1374:32 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1375:18:1375:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1375:18:1375:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1375:18:1375:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1375:18:1375:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1375:26:1375:27 | x4 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1375:26:1375:27 | x4 | T | main.rs:1357:5:1358:13 | S | -| main.rs:1377:13:1377:14 | x5 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1377:13:1377:14 | x5 | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1377:13:1377:14 | x5 | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1377:18:1377:58 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1377:18:1377:58 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1377:18:1377:58 | ...::MySome(...) | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1377:35:1377:57 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1377:35:1377:57 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1378:18:1378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1378:18:1378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1378:18:1378:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1378:18:1378:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1378:26:1378:27 | x5 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1378:26:1378:27 | x5 | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1378:26:1378:27 | x5 | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1378:26:1378:37 | x5.flatten() | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1378:26:1378:37 | x5.flatten() | T | main.rs:1357:5:1358:13 | S | -| main.rs:1380:13:1380:14 | x6 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1380:13:1380:14 | x6 | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1380:13:1380:14 | x6 | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1380:18:1380:58 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1380:18:1380:58 | ...::MySome(...) | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1380:18:1380:58 | ...::MySome(...) | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1380:35:1380:57 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1380:35:1380:57 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1381:18:1381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1381:18:1381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1381:18:1381:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1381:18:1381:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1381:26:1381:61 | ...::flatten(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1381:26:1381:61 | ...::flatten(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1381:59:1381:60 | x6 | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1381:59:1381:60 | x6 | T | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1381:59:1381:60 | x6 | T.T | main.rs:1357:5:1358:13 | S | -| main.rs:1384:13:1384:19 | from_if | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1384:13:1384:19 | from_if | T | main.rs:1357:5:1358:13 | S | -| main.rs:1384:23:1388:9 | if ... {...} else {...} | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1384:23:1388:9 | if ... {...} else {...} | T | main.rs:1357:5:1358:13 | S | -| main.rs:1384:26:1384:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1384:26:1384:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1384:30:1384:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1384:32:1386:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1384:32:1386:9 | { ... } | T | main.rs:1357:5:1358:13 | S | -| main.rs:1385:13:1385:30 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1385:13:1385:30 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1386:16:1388:9 | { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1386:16:1388:9 | { ... } | T | main.rs:1357:5:1358:13 | S | -| main.rs:1387:13:1387:31 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1387:13:1387:31 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1387:30:1387:30 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1389:18:1389:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1389:18:1389:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1389:18:1389:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1389:18:1389:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1389:26:1389:32 | from_if | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1389:26:1389:32 | from_if | T | main.rs:1357:5:1358:13 | S | -| main.rs:1392:13:1392:22 | from_match | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1392:13:1392:22 | from_match | T | main.rs:1357:5:1358:13 | S | -| main.rs:1392:26:1395:9 | match ... { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1392:26:1395:9 | match ... { ... } | T | main.rs:1357:5:1358:13 | S | -| main.rs:1392:32:1392:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1392:32:1392:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1392:36:1392:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1393:13:1393:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1393:21:1393:38 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1393:21:1393:38 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1394:13:1394:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1394:22:1394:40 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1394:22:1394:40 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1394:39:1394:39 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1396:18:1396:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1396:18:1396:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1396:18:1396:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1396:18:1396:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1396:26:1396:35 | from_match | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1396:26:1396:35 | from_match | T | main.rs:1357:5:1358:13 | S | -| main.rs:1399:13:1399:21 | from_loop | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1399:13:1399:21 | from_loop | T | main.rs:1357:5:1358:13 | S | -| main.rs:1399:25:1404:9 | loop { ... } | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1399:25:1404:9 | loop { ... } | T | main.rs:1357:5:1358:13 | S | -| main.rs:1400:16:1400:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1400:16:1400:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1400:20:1400:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1401:23:1401:40 | ...::MyNone(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1401:23:1401:40 | ...::MyNone(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1403:19:1403:37 | ...::MySome(...) | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1403:19:1403:37 | ...::MySome(...) | T | main.rs:1357:5:1358:13 | S | -| main.rs:1403:36:1403:36 | S | | main.rs:1357:5:1358:13 | S | -| main.rs:1405:18:1405:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1405:18:1405:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1405:18:1405:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1405:18:1405:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1405:26:1405:34 | from_loop | | main.rs:1322:5:1326:5 | MyOption | -| main.rs:1405:26:1405:34 | from_loop | T | main.rs:1357:5:1358:13 | S | -| main.rs:1423:15:1423:18 | SelfParam | | main.rs:1411:5:1412:19 | S | -| main.rs:1423:15:1423:18 | SelfParam | T | main.rs:1422:10:1422:10 | T | -| main.rs:1423:26:1425:9 | { ... } | | main.rs:1422:10:1422:10 | T | -| main.rs:1424:13:1424:16 | self | | main.rs:1411:5:1412:19 | S | -| main.rs:1424:13:1424:16 | self | T | main.rs:1422:10:1422:10 | T | -| main.rs:1424:13:1424:18 | self.0 | | main.rs:1422:10:1422:10 | T | -| main.rs:1427:15:1427:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1427:15:1427:19 | SelfParam | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1427:15:1427:19 | SelfParam | &T.T | main.rs:1422:10:1422:10 | T | -| main.rs:1427:28:1429:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1427:28:1429:9 | { ... } | &T | main.rs:1422:10:1422:10 | T | -| main.rs:1428:13:1428:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1428:13:1428:19 | &... | &T | main.rs:1422:10:1422:10 | T | -| main.rs:1428:14:1428:17 | self | | file://:0:0:0:0 | & | -| main.rs:1428:14:1428:17 | self | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1428:14:1428:17 | self | &T.T | main.rs:1422:10:1422:10 | T | -| main.rs:1428:14:1428:19 | self.0 | | main.rs:1422:10:1422:10 | T | -| main.rs:1431:15:1431:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1431:15:1431:25 | SelfParam | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1431:15:1431:25 | SelfParam | &T.T | main.rs:1422:10:1422:10 | T | -| main.rs:1431:34:1433:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1431:34:1433:9 | { ... } | &T | main.rs:1422:10:1422:10 | T | -| main.rs:1432:13:1432:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1432:13:1432:19 | &... | &T | main.rs:1422:10:1422:10 | T | -| main.rs:1432:14:1432:17 | self | | file://:0:0:0:0 | & | -| main.rs:1432:14:1432:17 | self | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1432:14:1432:17 | self | &T.T | main.rs:1422:10:1422:10 | T | -| main.rs:1432:14:1432:19 | self.0 | | main.rs:1422:10:1422:10 | T | -| main.rs:1437:29:1437:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1437:29:1437:33 | SelfParam | &T | main.rs:1436:5:1439:5 | Self [trait ATrait] | -| main.rs:1438:33:1438:36 | SelfParam | | main.rs:1436:5:1439:5 | Self [trait ATrait] | -| main.rs:1444:29:1444:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1444:29:1444:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1444:29:1444:33 | SelfParam | &T.&T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1444:43:1446:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:13:1445:22 | (...) | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1445:13:1445:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1445:14:1445:21 | * ... | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1445:15:1445:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1445:15:1445:21 | (...) | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1445:16:1445:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1445:16:1445:20 | * ... | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1445:17:1445:20 | self | | file://:0:0:0:0 | & | -| main.rs:1445:17:1445:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1445:17:1445:20 | self | &T.&T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1449:33:1449:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1449:33:1449:36 | SelfParam | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1449:46:1451:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1450:13:1450:19 | (...) | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1450:13:1450:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1450:14:1450:18 | * ... | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1450:15:1450:18 | self | | file://:0:0:0:0 | & | -| main.rs:1450:15:1450:18 | self | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1455:13:1455:14 | x1 | | main.rs:1411:5:1412:19 | S | -| main.rs:1455:13:1455:14 | x1 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1455:18:1455:22 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1455:18:1455:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1455:20:1455:21 | S2 | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1456:18:1456:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1456:18:1456:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1456:18:1456:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1456:18:1456:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1456:26:1456:27 | x1 | | main.rs:1411:5:1412:19 | S | -| main.rs:1456:26:1456:27 | x1 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1456:26:1456:32 | x1.m1() | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1458:13:1458:14 | x2 | | main.rs:1411:5:1412:19 | S | -| main.rs:1458:13:1458:14 | x2 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1458:18:1458:22 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1458:18:1458:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1458:20:1458:21 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1165:26:1165:26 | y | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1165:26:1165:26 | y | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1165:26:1165:31 | y.m3() | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1167:13:1167:13 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1167:13:1167:13 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1167:17:1167:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1167:17:1167:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1167:30:1167:31 | S1 | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1168:13:1168:13 | s | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1168:17:1168:32 | call_trait_m1(...) | | main.rs:1080:5:1081:14 | S1 | +| main.rs:1168:31:1168:31 | x | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1168:31:1168:31 | x | A | main.rs:1080:5:1081:14 | S1 | +| main.rs:1170:13:1170:13 | x | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1170:13:1170:13 | x | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1170:17:1170:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1170:17:1170:34 | MyThing2 {...} | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1170:31:1170:32 | S2 | | main.rs:1082:5:1083:14 | S2 | +| main.rs:1171:13:1171:13 | s | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1171:13:1171:13 | s | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1171:17:1171:32 | call_trait_m1(...) | | main.rs:1070:5:1073:5 | MyThing | +| main.rs:1171:17:1171:32 | call_trait_m1(...) | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1171:31:1171:31 | x | | main.rs:1075:5:1078:5 | MyThing2 | +| main.rs:1171:31:1171:31 | x | A | main.rs:1082:5:1083:14 | S2 | +| main.rs:1188:22:1188:22 | x | | file://:0:0:0:0 | & | +| main.rs:1188:22:1188:22 | x | &T | main.rs:1188:11:1188:19 | T | +| main.rs:1188:35:1190:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1188:35:1190:5 | { ... } | &T | main.rs:1188:11:1188:19 | T | +| main.rs:1189:9:1189:9 | x | | file://:0:0:0:0 | & | +| main.rs:1189:9:1189:9 | x | &T | main.rs:1188:11:1188:19 | T | +| main.rs:1193:17:1193:20 | SelfParam | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1193:29:1195:9 | { ... } | | main.rs:1181:5:1182:14 | S2 | +| main.rs:1194:13:1194:14 | S2 | | main.rs:1181:5:1182:14 | S2 | +| main.rs:1198:21:1198:21 | x | | main.rs:1198:13:1198:14 | T1 | +| main.rs:1201:5:1203:5 | { ... } | | main.rs:1198:17:1198:18 | T2 | +| main.rs:1202:9:1202:9 | x | | main.rs:1198:13:1198:14 | T1 | +| main.rs:1202:9:1202:16 | x.into() | | main.rs:1198:17:1198:18 | T2 | +| main.rs:1206:13:1206:13 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1206:17:1206:18 | S1 | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1207:18:1207:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1207:18:1207:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1207:18:1207:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1207:18:1207:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1207:26:1207:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1207:26:1207:31 | id(...) | &T | main.rs:1178:5:1179:14 | S1 | +| main.rs:1207:29:1207:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1207:29:1207:30 | &x | &T | main.rs:1178:5:1179:14 | S1 | +| main.rs:1207:30:1207:30 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1209:13:1209:13 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1209:17:1209:18 | S1 | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1210:18:1210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1210:18:1210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1210:18:1210:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1210:18:1210:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1210:26:1210:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1210:26:1210:37 | id::<...>(...) | &T | main.rs:1178:5:1179:14 | S1 | +| main.rs:1210:35:1210:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1210:35:1210:36 | &x | &T | main.rs:1178:5:1179:14 | S1 | +| main.rs:1210:36:1210:36 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1212:13:1212:13 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1212:13:1212:13 | x | | main.rs:1184:5:1184:25 | dyn Trait | +| main.rs:1212:17:1212:18 | S1 | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1212:17:1212:18 | S1 | | main.rs:1184:5:1184:25 | dyn Trait | +| main.rs:1214:18:1214:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1214:18:1214:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1214:18:1214:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1214:18:1214:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1214:26:1214:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1214:26:1214:44 | id::<...>(...) | &T | main.rs:1184:5:1184:25 | dyn Trait | +| main.rs:1214:42:1214:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1214:42:1214:43 | &x | &T | main.rs:1178:5:1179:14 | S1 | +| main.rs:1214:42:1214:43 | &x | &T | main.rs:1184:5:1184:25 | dyn Trait | +| main.rs:1214:43:1214:43 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1214:43:1214:43 | x | | main.rs:1184:5:1184:25 | dyn Trait | +| main.rs:1216:13:1216:13 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1216:17:1216:18 | S1 | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1217:9:1217:25 | into::<...>(...) | | main.rs:1181:5:1182:14 | S2 | +| main.rs:1217:24:1217:24 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1219:13:1219:13 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1219:17:1219:18 | S1 | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1220:13:1220:13 | y | | main.rs:1181:5:1182:14 | S2 | +| main.rs:1220:21:1220:27 | into(...) | | main.rs:1181:5:1182:14 | S2 | +| main.rs:1220:26:1220:26 | x | | main.rs:1178:5:1179:14 | S1 | +| main.rs:1234:22:1234:25 | SelfParam | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1234:22:1234:25 | SelfParam | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1234:22:1234:25 | SelfParam | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1234:35:1241:9 | { ... } | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1235:13:1240:13 | match self { ... } | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1235:19:1235:22 | self | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1235:19:1235:22 | self | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1235:19:1235:22 | self | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1236:17:1236:38 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1236:17:1236:38 | ...::PairNone(...) | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1236:17:1236:38 | ...::PairNone(...) | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1236:43:1236:82 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1236:50:1236:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1236:50:1236:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1236:50:1236:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1236:50:1236:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1236:50:1236:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1236:50:1236:81 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1236:50:1236:81 | { ... } | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1237:17:1237:38 | ...::PairFst(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1237:17:1237:38 | ...::PairFst(...) | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1237:17:1237:38 | ...::PairFst(...) | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1237:37:1237:37 | _ | | main.rs:1233:10:1233:12 | Fst | +| main.rs:1237:43:1237:81 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1237:50:1237:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1237:50:1237:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1237:50:1237:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1237:50:1237:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1237:50:1237:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1237:50:1237:80 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1237:50:1237:80 | { ... } | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1238:17:1238:40 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1238:17:1238:40 | ...::PairSnd(...) | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1238:17:1238:40 | ...::PairSnd(...) | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1238:37:1238:39 | snd | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1238:45:1238:47 | snd | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1239:17:1239:44 | ...::PairBoth(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1239:17:1239:44 | ...::PairBoth(...) | Fst | main.rs:1233:10:1233:12 | Fst | +| main.rs:1239:17:1239:44 | ...::PairBoth(...) | Snd | main.rs:1233:15:1233:17 | Snd | +| main.rs:1239:38:1239:38 | _ | | main.rs:1233:10:1233:12 | Fst | +| main.rs:1239:41:1239:43 | snd | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1239:49:1239:51 | snd | | main.rs:1233:15:1233:17 | Snd | +| main.rs:1265:10:1265:10 | t | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1265:10:1265:10 | t | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1265:10:1265:10 | t | Snd | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1265:10:1265:10 | t | Snd.Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1265:10:1265:10 | t | Snd.Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1266:13:1266:13 | x | | main.rs:1250:5:1251:14 | S3 | +| main.rs:1266:17:1266:17 | t | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1266:17:1266:17 | t | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1266:17:1266:17 | t | Snd | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1266:17:1266:17 | t | Snd.Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1266:17:1266:17 | t | Snd.Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1266:17:1266:29 | t.unwrapSnd() | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1266:17:1266:29 | t.unwrapSnd() | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1266:17:1266:29 | t.unwrapSnd() | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1266:17:1266:41 | ... .unwrapSnd() | | main.rs:1250:5:1251:14 | S3 | +| main.rs:1267:18:1267:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1267:18:1267:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1267:18:1267:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1267:26:1267:26 | x | | main.rs:1250:5:1251:14 | S3 | +| main.rs:1282:22:1282:25 | SelfParam | | main.rs:1280:5:1283:5 | Self [trait TraitWithAssocType] | +| main.rs:1290:22:1290:25 | SelfParam | | main.rs:1278:5:1278:28 | GenS | +| main.rs:1290:22:1290:25 | SelfParam | GenT | main.rs:1285:10:1285:15 | Output | +| main.rs:1290:44:1292:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1290:44:1292:9 | { ... } | E | main.rs:1285:10:1285:15 | Output | +| main.rs:1290:44:1292:9 | { ... } | T | main.rs:1285:10:1285:15 | Output | +| main.rs:1291:13:1291:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1291:13:1291:22 | Ok(...) | E | main.rs:1285:10:1285:15 | Output | +| main.rs:1291:13:1291:22 | Ok(...) | T | main.rs:1285:10:1285:15 | Output | +| main.rs:1291:16:1291:19 | self | | main.rs:1278:5:1278:28 | GenS | +| main.rs:1291:16:1291:19 | self | GenT | main.rs:1285:10:1285:15 | Output | +| main.rs:1291:16:1291:21 | self.0 | | main.rs:1285:10:1285:15 | Output | +| main.rs:1297:13:1297:14 | p1 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1297:13:1297:14 | p1 | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1297:13:1297:14 | p1 | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1297:26:1297:53 | ...::PairBoth(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1297:26:1297:53 | ...::PairBoth(...) | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1297:26:1297:53 | ...::PairBoth(...) | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1297:47:1297:48 | S1 | | main.rs:1244:5:1245:14 | S1 | +| main.rs:1297:51:1297:52 | S2 | | main.rs:1247:5:1248:14 | S2 | +| main.rs:1298:18:1298:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1298:18:1298:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1298:18:1298:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1298:18:1298:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1298:26:1298:27 | p1 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1298:26:1298:27 | p1 | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1298:26:1298:27 | p1 | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1301:13:1301:14 | p2 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1301:13:1301:14 | p2 | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1301:13:1301:14 | p2 | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1301:26:1301:47 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1301:26:1301:47 | ...::PairNone(...) | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1301:26:1301:47 | ...::PairNone(...) | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1302:18:1302:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1302:18:1302:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1302:18:1302:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1302:18:1302:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1302:26:1302:27 | p2 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1302:26:1302:27 | p2 | Fst | main.rs:1244:5:1245:14 | S1 | +| main.rs:1302:26:1302:27 | p2 | Snd | main.rs:1247:5:1248:14 | S2 | +| main.rs:1305:13:1305:14 | p3 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1305:13:1305:14 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1305:13:1305:14 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1305:34:1305:56 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1305:34:1305:56 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1305:34:1305:56 | ...::PairSnd(...) | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1305:54:1305:55 | S3 | | main.rs:1250:5:1251:14 | S3 | +| main.rs:1306:18:1306:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1306:18:1306:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1306:18:1306:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1306:18:1306:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1306:26:1306:27 | p3 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1306:26:1306:27 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1306:26:1306:27 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1309:13:1309:14 | p3 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1309:13:1309:14 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1309:13:1309:14 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1309:35:1309:56 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1309:35:1309:56 | ...::PairNone(...) | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1309:35:1309:56 | ...::PairNone(...) | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1310:18:1310:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1310:18:1310:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1310:18:1310:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1310:18:1310:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1310:26:1310:27 | p3 | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1310:26:1310:27 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1310:26:1310:27 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1312:11:1312:54 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1312:31:1312:53 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | +| main.rs:1312:31:1312:53 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | +| main.rs:1312:31:1312:53 | ...::PairSnd(...) | Snd | main.rs:1250:5:1251:14 | S3 | +| main.rs:1312:51:1312:52 | S3 | | main.rs:1250:5:1251:14 | S3 | +| main.rs:1314:13:1314:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1314:13:1314:13 | x | E | main.rs:1244:5:1245:14 | S1 | +| main.rs:1314:13:1314:13 | x | T | main.rs:1270:5:1270:34 | S4 | +| main.rs:1314:13:1314:13 | x | T.T41 | main.rs:1247:5:1248:14 | S2 | +| main.rs:1314:13:1314:13 | x | T.T42 | main.rs:1272:5:1272:22 | S5 | +| main.rs:1314:13:1314:13 | x | T.T42.T5 | main.rs:1247:5:1248:14 | S2 | +| main.rs:1316:13:1316:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1316:13:1316:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1316:13:1316:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1316:17:1316:26 | GenS(...) | | main.rs:1278:5:1278:28 | GenS | +| main.rs:1316:17:1316:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1316:17:1316:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1316:17:1316:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1316:17:1316:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1316:22:1316:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1329:16:1329:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1329:16:1329:24 | SelfParam | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | +| main.rs:1329:27:1329:31 | value | | main.rs:1327:19:1327:19 | S | +| main.rs:1331:21:1331:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1331:21:1331:29 | SelfParam | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | +| main.rs:1331:32:1331:36 | value | | main.rs:1327:19:1327:19 | S | +| main.rs:1332:13:1332:16 | self | | file://:0:0:0:0 | & | +| main.rs:1332:13:1332:16 | self | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | +| main.rs:1332:22:1332:26 | value | | main.rs:1327:19:1327:19 | S | +| main.rs:1338:16:1338:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1338:16:1338:24 | SelfParam | &T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1338:16:1338:24 | SelfParam | &T.T | main.rs:1336:10:1336:10 | T | +| main.rs:1338:27:1338:31 | value | | main.rs:1336:10:1336:10 | T | +| main.rs:1342:26:1344:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1342:26:1344:9 | { ... } | T | main.rs:1341:10:1341:10 | T | +| main.rs:1343:13:1343:30 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1343:13:1343:30 | ...::MyNone(...) | T | main.rs:1341:10:1341:10 | T | +| main.rs:1348:20:1348:23 | SelfParam | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1348:20:1348:23 | SelfParam | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1348:20:1348:23 | SelfParam | T.T | main.rs:1347:10:1347:10 | T | +| main.rs:1348:41:1353:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1348:41:1353:9 | { ... } | T | main.rs:1347:10:1347:10 | T | +| main.rs:1349:13:1352:13 | match self { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1349:13:1352:13 | match self { ... } | T | main.rs:1347:10:1347:10 | T | +| main.rs:1349:19:1349:22 | self | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1349:19:1349:22 | self | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1349:19:1349:22 | self | T.T | main.rs:1347:10:1347:10 | T | +| main.rs:1350:17:1350:34 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1350:17:1350:34 | ...::MyNone(...) | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1350:17:1350:34 | ...::MyNone(...) | T.T | main.rs:1347:10:1347:10 | T | +| main.rs:1350:39:1350:56 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1350:39:1350:56 | ...::MyNone(...) | T | main.rs:1347:10:1347:10 | T | +| main.rs:1351:17:1351:35 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1351:17:1351:35 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1351:17:1351:35 | ...::MySome(...) | T.T | main.rs:1347:10:1347:10 | T | +| main.rs:1351:34:1351:34 | x | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1351:34:1351:34 | x | T | main.rs:1347:10:1347:10 | T | +| main.rs:1351:40:1351:40 | x | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1351:40:1351:40 | x | T | main.rs:1347:10:1347:10 | T | +| main.rs:1360:13:1360:14 | x1 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1360:13:1360:14 | x1 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1360:18:1360:37 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1360:18:1360:37 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1361:18:1361:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1361:18:1361:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1361:18:1361:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1361:18:1361:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1361:26:1361:27 | x1 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1361:26:1361:27 | x1 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1363:17:1363:18 | x2 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1363:17:1363:18 | x2 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1363:22:1363:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1363:22:1363:36 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1364:9:1364:10 | x2 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1364:9:1364:10 | x2 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1364:16:1364:16 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1365:18:1365:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1365:18:1365:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1365:18:1365:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1365:18:1365:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1365:26:1365:27 | x2 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1365:26:1365:27 | x2 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1368:17:1368:18 | x3 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1368:22:1368:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1369:9:1369:10 | x3 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1369:21:1369:21 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1370:18:1370:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1370:18:1370:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1370:18:1370:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1370:26:1370:27 | x3 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1372:17:1372:18 | x4 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1372:17:1372:18 | x4 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1372:22:1372:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1372:22:1372:36 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1373:23:1373:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1373:23:1373:29 | &mut x4 | &T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1373:23:1373:29 | &mut x4 | &T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1373:28:1373:29 | x4 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1373:28:1373:29 | x4 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1373:32:1373:32 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1374:18:1374:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1374:18:1374:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1374:18:1374:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1374:18:1374:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1374:26:1374:27 | x4 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1374:26:1374:27 | x4 | T | main.rs:1356:5:1357:13 | S | +| main.rs:1376:13:1376:14 | x5 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1376:13:1376:14 | x5 | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1376:13:1376:14 | x5 | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1376:18:1376:58 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1376:18:1376:58 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1376:18:1376:58 | ...::MySome(...) | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1376:35:1376:57 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1376:35:1376:57 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1377:18:1377:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1377:18:1377:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1377:18:1377:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1377:18:1377:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1377:26:1377:27 | x5 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1377:26:1377:27 | x5 | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1377:26:1377:27 | x5 | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1377:26:1377:37 | x5.flatten() | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1377:26:1377:37 | x5.flatten() | T | main.rs:1356:5:1357:13 | S | +| main.rs:1379:13:1379:14 | x6 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1379:13:1379:14 | x6 | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1379:13:1379:14 | x6 | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1379:18:1379:58 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1379:18:1379:58 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1379:18:1379:58 | ...::MySome(...) | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1379:35:1379:57 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1379:35:1379:57 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1380:18:1380:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1380:18:1380:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1380:18:1380:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1380:18:1380:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1380:26:1380:61 | ...::flatten(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1380:26:1380:61 | ...::flatten(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1380:59:1380:60 | x6 | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1380:59:1380:60 | x6 | T | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1380:59:1380:60 | x6 | T.T | main.rs:1356:5:1357:13 | S | +| main.rs:1383:13:1383:19 | from_if | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1383:13:1383:19 | from_if | T | main.rs:1356:5:1357:13 | S | +| main.rs:1383:23:1387:9 | if ... {...} else {...} | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1383:23:1387:9 | if ... {...} else {...} | T | main.rs:1356:5:1357:13 | S | +| main.rs:1383:26:1383:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1383:26:1383:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1383:30:1383:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1383:32:1385:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1383:32:1385:9 | { ... } | T | main.rs:1356:5:1357:13 | S | +| main.rs:1384:13:1384:30 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1384:13:1384:30 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1385:16:1387:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1385:16:1387:9 | { ... } | T | main.rs:1356:5:1357:13 | S | +| main.rs:1386:13:1386:31 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1386:13:1386:31 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1386:30:1386:30 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1388:18:1388:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1388:18:1388:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1388:18:1388:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1388:18:1388:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1388:26:1388:32 | from_if | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1388:26:1388:32 | from_if | T | main.rs:1356:5:1357:13 | S | +| main.rs:1391:13:1391:22 | from_match | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1391:13:1391:22 | from_match | T | main.rs:1356:5:1357:13 | S | +| main.rs:1391:26:1394:9 | match ... { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1391:26:1394:9 | match ... { ... } | T | main.rs:1356:5:1357:13 | S | +| main.rs:1391:32:1391:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1391:32:1391:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1391:36:1391:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1392:13:1392:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1392:21:1392:38 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1392:21:1392:38 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1393:13:1393:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1393:22:1393:40 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1393:22:1393:40 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1393:39:1393:39 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1395:18:1395:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1395:18:1395:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1395:18:1395:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1395:18:1395:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1395:26:1395:35 | from_match | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1395:26:1395:35 | from_match | T | main.rs:1356:5:1357:13 | S | +| main.rs:1398:13:1398:21 | from_loop | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1398:13:1398:21 | from_loop | T | main.rs:1356:5:1357:13 | S | +| main.rs:1398:25:1403:9 | loop { ... } | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1398:25:1403:9 | loop { ... } | T | main.rs:1356:5:1357:13 | S | +| main.rs:1399:16:1399:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:16:1399:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1399:20:1399:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:23:1400:40 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1400:23:1400:40 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1402:19:1402:37 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1402:19:1402:37 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | +| main.rs:1402:36:1402:36 | S | | main.rs:1356:5:1357:13 | S | +| main.rs:1404:18:1404:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1404:18:1404:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1404:18:1404:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1404:18:1404:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1404:26:1404:34 | from_loop | | main.rs:1321:5:1325:5 | MyOption | +| main.rs:1404:26:1404:34 | from_loop | T | main.rs:1356:5:1357:13 | S | +| main.rs:1422:15:1422:18 | SelfParam | | main.rs:1410:5:1411:19 | S | +| main.rs:1422:15:1422:18 | SelfParam | T | main.rs:1421:10:1421:10 | T | +| main.rs:1422:26:1424:9 | { ... } | | main.rs:1421:10:1421:10 | T | +| main.rs:1423:13:1423:16 | self | | main.rs:1410:5:1411:19 | S | +| main.rs:1423:13:1423:16 | self | T | main.rs:1421:10:1421:10 | T | +| main.rs:1423:13:1423:18 | self.0 | | main.rs:1421:10:1421:10 | T | +| main.rs:1426:15:1426:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1426:15:1426:19 | SelfParam | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1426:15:1426:19 | SelfParam | &T.T | main.rs:1421:10:1421:10 | T | +| main.rs:1426:28:1428:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1426:28:1428:9 | { ... } | &T | main.rs:1421:10:1421:10 | T | +| main.rs:1427:13:1427:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1427:13:1427:19 | &... | &T | main.rs:1421:10:1421:10 | T | +| main.rs:1427:14:1427:17 | self | | file://:0:0:0:0 | & | +| main.rs:1427:14:1427:17 | self | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1427:14:1427:17 | self | &T.T | main.rs:1421:10:1421:10 | T | +| main.rs:1427:14:1427:19 | self.0 | | main.rs:1421:10:1421:10 | T | +| main.rs:1430:15:1430:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1430:15:1430:25 | SelfParam | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1430:15:1430:25 | SelfParam | &T.T | main.rs:1421:10:1421:10 | T | +| main.rs:1430:34:1432:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1430:34:1432:9 | { ... } | &T | main.rs:1421:10:1421:10 | T | +| main.rs:1431:13:1431:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1431:13:1431:19 | &... | &T | main.rs:1421:10:1421:10 | T | +| main.rs:1431:14:1431:17 | self | | file://:0:0:0:0 | & | +| main.rs:1431:14:1431:17 | self | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1431:14:1431:17 | self | &T.T | main.rs:1421:10:1421:10 | T | +| main.rs:1431:14:1431:19 | self.0 | | main.rs:1421:10:1421:10 | T | +| main.rs:1436:29:1436:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1436:29:1436:33 | SelfParam | &T | main.rs:1435:5:1438:5 | Self [trait ATrait] | +| main.rs:1437:33:1437:36 | SelfParam | | main.rs:1435:5:1438:5 | Self [trait ATrait] | +| main.rs:1443:29:1443:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1443:29:1443:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1443:29:1443:33 | SelfParam | &T.&T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1443:43:1445:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:13:1444:22 | (...) | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1444:13:1444:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:14:1444:21 | * ... | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1444:15:1444:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1444:15:1444:21 | (...) | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1444:16:1444:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1444:16:1444:20 | * ... | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1444:17:1444:20 | self | | file://:0:0:0:0 | & | +| main.rs:1444:17:1444:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1444:17:1444:20 | self | &T.&T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1448:33:1448:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1448:33:1448:36 | SelfParam | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1448:46:1450:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1449:13:1449:19 | (...) | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1449:13:1449:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1449:14:1449:18 | * ... | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1449:15:1449:18 | self | | file://:0:0:0:0 | & | +| main.rs:1449:15:1449:18 | self | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1454:13:1454:14 | x1 | | main.rs:1410:5:1411:19 | S | +| main.rs:1454:13:1454:14 | x1 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1454:18:1454:22 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1454:18:1454:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1454:20:1454:21 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1455:18:1455:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1455:18:1455:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1455:18:1455:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1455:26:1455:27 | x1 | | main.rs:1410:5:1411:19 | S | +| main.rs:1455:26:1455:27 | x1 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1455:26:1455:32 | x1.m1() | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1457:13:1457:14 | x2 | | main.rs:1410:5:1411:19 | S | +| main.rs:1457:13:1457:14 | x2 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1457:18:1457:22 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1457:18:1457:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1457:20:1457:21 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1459:18:1459:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1459:18:1459:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1459:18:1459:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1459:18:1459:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1459:26:1459:27 | x2 | | main.rs:1410:5:1411:19 | S | +| main.rs:1459:26:1459:27 | x2 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1459:26:1459:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1459:26:1459:32 | x2.m2() | &T | main.rs:1413:5:1414:14 | S2 | | main.rs:1460:18:1460:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1460:18:1460:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1460:18:1460:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1460:18:1460:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1460:26:1460:27 | x2 | | main.rs:1411:5:1412:19 | S | -| main.rs:1460:26:1460:27 | x2 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1460:26:1460:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1460:26:1460:32 | x2.m2() | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1461:18:1461:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1461:18:1461:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1461:18:1461:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1461:18:1461:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1461:26:1461:27 | x2 | | main.rs:1411:5:1412:19 | S | -| main.rs:1461:26:1461:27 | x2 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1461:26:1461:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1461:26:1461:32 | x2.m3() | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1463:13:1463:14 | x3 | | main.rs:1411:5:1412:19 | S | -| main.rs:1463:13:1463:14 | x3 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1463:18:1463:22 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1463:18:1463:22 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1463:20:1463:21 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1460:26:1460:27 | x2 | | main.rs:1410:5:1411:19 | S | +| main.rs:1460:26:1460:27 | x2 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1460:26:1460:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1460:26:1460:32 | x2.m3() | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1462:13:1462:14 | x3 | | main.rs:1410:5:1411:19 | S | +| main.rs:1462:13:1462:14 | x3 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1462:18:1462:22 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1462:18:1462:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1462:20:1462:21 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1464:18:1464:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1464:18:1464:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1464:18:1464:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1464:26:1464:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1464:26:1464:41 | ...::m2(...) | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1464:38:1464:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1464:38:1464:40 | &x3 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1464:38:1464:40 | &x3 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1464:39:1464:40 | x3 | | main.rs:1410:5:1411:19 | S | +| main.rs:1464:39:1464:40 | x3 | T | main.rs:1413:5:1414:14 | S2 | | main.rs:1465:18:1465:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1465:18:1465:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1465:18:1465:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1465:18:1465:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1465:26:1465:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1465:26:1465:41 | ...::m2(...) | &T | main.rs:1414:5:1415:14 | S2 | +| main.rs:1465:26:1465:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1465:26:1465:41 | ...::m3(...) | &T | main.rs:1413:5:1414:14 | S2 | | main.rs:1465:38:1465:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1465:38:1465:40 | &x3 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1465:38:1465:40 | &x3 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1465:39:1465:40 | x3 | | main.rs:1411:5:1412:19 | S | -| main.rs:1465:39:1465:40 | x3 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1466:18:1466:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1466:18:1466:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1466:18:1466:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1466:18:1466:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1466:26:1466:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1466:26:1466:41 | ...::m3(...) | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1466:38:1466:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1466:38:1466:40 | &x3 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1466:38:1466:40 | &x3 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1466:39:1466:40 | x3 | | main.rs:1411:5:1412:19 | S | -| main.rs:1466:39:1466:40 | x3 | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1468:13:1468:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:14 | x4 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1468:13:1468:14 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1468:18:1468:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1468:18:1468:23 | &... | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1468:18:1468:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1468:19:1468:23 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1468:19:1468:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1468:21:1468:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1465:38:1465:40 | &x3 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1465:38:1465:40 | &x3 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1465:39:1465:40 | x3 | | main.rs:1410:5:1411:19 | S | +| main.rs:1465:39:1465:40 | x3 | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1467:13:1467:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1467:13:1467:14 | x4 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1467:13:1467:14 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1467:18:1467:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1467:18:1467:23 | &... | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1467:18:1467:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1467:19:1467:23 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1467:19:1467:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1467:21:1467:22 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1469:18:1469:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1469:18:1469:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1469:18:1469:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1469:18:1469:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1469:26:1469:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1469:26:1469:27 | x4 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1469:26:1469:27 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1469:26:1469:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1469:26:1469:32 | x4.m2() | &T | main.rs:1413:5:1414:14 | S2 | | main.rs:1470:18:1470:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1470:18:1470:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1470:18:1470:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1470:18:1470:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1470:26:1470:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1470:26:1470:27 | x4 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1470:26:1470:27 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1470:26:1470:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1470:26:1470:32 | x4.m2() | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1471:18:1471:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1471:18:1471:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1471:18:1471:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1471:18:1471:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1471:26:1471:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1471:26:1471:27 | x4 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1471:26:1471:27 | x4 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1471:26:1471:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1471:26:1471:32 | x4.m3() | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1473:13:1473:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1473:13:1473:14 | x5 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1473:13:1473:14 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1473:18:1473:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1473:18:1473:23 | &... | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1473:18:1473:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1473:19:1473:23 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1473:19:1473:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1473:21:1473:22 | S2 | | main.rs:1414:5:1415:14 | S2 | +| main.rs:1470:26:1470:27 | x4 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1470:26:1470:27 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1470:26:1470:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1470:26:1470:32 | x4.m3() | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1472:13:1472:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1472:13:1472:14 | x5 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1472:13:1472:14 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1472:18:1472:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1472:18:1472:23 | &... | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1472:18:1472:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1472:19:1472:23 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1472:19:1472:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1472:21:1472:22 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1474:18:1474:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1474:18:1474:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1474:18:1474:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1474:18:1474:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1474:26:1474:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1474:26:1474:27 | x5 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1474:26:1474:27 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1474:26:1474:32 | x5.m1() | | main.rs:1413:5:1414:14 | S2 | | main.rs:1475:18:1475:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1475:18:1475:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1475:18:1475:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1475:18:1475:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1475:18:1475:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1475:18:1475:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1475:26:1475:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1475:26:1475:27 | x5 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1475:26:1475:27 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1475:26:1475:32 | x5.m1() | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1476:18:1476:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1476:18:1476:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1476:18:1476:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1476:18:1476:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1476:26:1476:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1476:26:1476:27 | x5 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1476:26:1476:27 | x5 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1476:26:1476:29 | x5.0 | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1478:13:1478:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1478:13:1478:14 | x6 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1478:13:1478:14 | x6 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1478:18:1478:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1478:18:1478:23 | &... | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1478:18:1478:23 | &... | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1478:19:1478:23 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1478:19:1478:23 | S(...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1478:21:1478:22 | S2 | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1481:18:1481:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1481:18:1481:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1481:18:1481:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1481:18:1481:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1481:26:1481:30 | (...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1481:26:1481:30 | (...) | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1481:26:1481:35 | ... .m1() | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1481:27:1481:29 | * ... | | main.rs:1411:5:1412:19 | S | -| main.rs:1481:27:1481:29 | * ... | T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1481:28:1481:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1481:28:1481:29 | x6 | &T | main.rs:1411:5:1412:19 | S | -| main.rs:1481:28:1481:29 | x6 | &T.T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1483:13:1483:14 | x7 | | main.rs:1411:5:1412:19 | S | -| main.rs:1483:13:1483:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1483:13:1483:14 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1483:18:1483:23 | S(...) | | main.rs:1411:5:1412:19 | S | -| main.rs:1483:18:1483:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1483:18:1483:23 | S(...) | T.&T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1483:20:1483:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1483:20:1483:22 | &S2 | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1483:21:1483:22 | S2 | | main.rs:1414:5:1415:14 | S2 | -| main.rs:1486:13:1486:13 | t | | file://:0:0:0:0 | & | -| main.rs:1486:13:1486:13 | t | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1486:17:1486:18 | x7 | | main.rs:1411:5:1412:19 | S | -| main.rs:1486:17:1486:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1486:17:1486:18 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1486:17:1486:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1486:17:1486:23 | x7.m1() | &T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1487:18:1487:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1487:18:1487:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1487:18:1487:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1487:18:1487:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1487:26:1487:27 | x7 | | main.rs:1411:5:1412:19 | S | -| main.rs:1487:26:1487:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1487:26:1487:27 | x7 | T.&T | main.rs:1414:5:1415:14 | S2 | -| main.rs:1489:13:1489:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1489:26:1489:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1489:26:1489:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1489:26:1489:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1493:13:1493:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1493:13:1493:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1493:17:1493:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1493:17:1493:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1493:17:1493:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1495:13:1495:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1495:13:1495:20 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1495:24:1495:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1495:24:1495:39 | &... | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1495:25:1495:39 | MyInt {...} | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1495:36:1495:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1495:36:1495:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1497:13:1497:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1497:17:1497:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1497:17:1497:24 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1497:17:1497:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1498:18:1498:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:18:1498:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:26:1498:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1501:13:1501:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1501:13:1501:20 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1501:24:1501:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1501:24:1501:39 | &... | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1501:25:1501:39 | MyInt {...} | | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1501:36:1501:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1501:36:1501:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:13:1502:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:17:1502:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1502:17:1502:24 | my_thing | &T | main.rs:1417:5:1420:5 | MyInt | -| main.rs:1502:17:1502:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1503:18:1503:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:18:1503:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:26:1503:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1510:16:1510:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1510:16:1510:20 | SelfParam | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | -| main.rs:1513:16:1513:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1513:16:1513:20 | SelfParam | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | -| main.rs:1513:32:1515:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1513:32:1515:9 | { ... } | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | -| main.rs:1514:13:1514:16 | self | | file://:0:0:0:0 | & | -| main.rs:1514:13:1514:16 | self | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | -| main.rs:1514:13:1514:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1514:13:1514:22 | self.foo() | &T | main.rs:1508:5:1516:5 | Self [trait MyTrait] | -| main.rs:1522:16:1522:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1522:16:1522:20 | SelfParam | &T | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1522:36:1524:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1522:36:1524:9 | { ... } | &T | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1523:13:1523:16 | self | | file://:0:0:0:0 | & | -| main.rs:1523:13:1523:16 | self | &T | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1528:13:1528:13 | x | | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1528:17:1528:24 | MyStruct | | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1529:9:1529:9 | x | | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1529:9:1529:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1529:9:1529:15 | x.bar() | &T | main.rs:1518:5:1518:20 | MyStruct | -| main.rs:1539:16:1539:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1539:16:1539:20 | SelfParam | &T | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1539:16:1539:20 | SelfParam | &T.T | main.rs:1538:10:1538:10 | T | -| main.rs:1539:32:1541:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1539:32:1541:9 | { ... } | &T | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1539:32:1541:9 | { ... } | &T.T | main.rs:1538:10:1538:10 | T | -| main.rs:1540:13:1540:16 | self | | file://:0:0:0:0 | & | -| main.rs:1540:13:1540:16 | self | &T | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1540:13:1540:16 | self | &T.T | main.rs:1538:10:1538:10 | T | -| main.rs:1545:13:1545:13 | x | | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1545:13:1545:13 | x | T | main.rs:1534:5:1534:13 | S | -| main.rs:1545:17:1545:27 | MyStruct(...) | | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1545:17:1545:27 | MyStruct(...) | T | main.rs:1534:5:1534:13 | S | -| main.rs:1545:26:1545:26 | S | | main.rs:1534:5:1534:13 | S | -| main.rs:1546:9:1546:9 | x | | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1546:9:1546:9 | x | T | main.rs:1534:5:1534:13 | S | -| main.rs:1546:9:1546:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1546:9:1546:15 | x.foo() | &T | main.rs:1536:5:1536:26 | MyStruct | -| main.rs:1546:9:1546:15 | x.foo() | &T.T | main.rs:1534:5:1534:13 | S | -| main.rs:1557:17:1557:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1557:17:1557:25 | SelfParam | &T | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1558:13:1558:16 | self | | file://:0:0:0:0 | & | -| main.rs:1558:13:1558:16 | self | &T | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1558:13:1558:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1558:13:1558:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1558:25:1558:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1558:26:1558:29 | self | | file://:0:0:0:0 | & | -| main.rs:1558:26:1558:29 | self | &T | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1558:26:1558:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1565:15:1565:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1565:15:1565:19 | SelfParam | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1565:31:1567:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1565:31:1567:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1566:13:1566:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1566:13:1566:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1566:13:1566:19 | &... | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1566:13:1566:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1566:13:1566:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1566:13:1566:19 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1566:14:1566:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1566:14:1566:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1566:14:1566:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1566:14:1566:19 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1566:15:1566:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1566:15:1566:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1566:15:1566:19 | &self | &T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1566:16:1566:19 | self | | file://:0:0:0:0 | & | -| main.rs:1566:16:1566:19 | self | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1569:15:1569:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1569:15:1569:25 | SelfParam | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1569:37:1571:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1569:37:1571:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1570:13:1570:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1570:13:1570:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1570:13:1570:19 | &... | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1570:13:1570:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1570:13:1570:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1570:13:1570:19 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1570:14:1570:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1570:14:1570:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1570:14:1570:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1570:14:1570:19 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1570:15:1570:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1570:15:1570:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1570:15:1570:19 | &self | &T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1570:16:1570:19 | self | | file://:0:0:0:0 | & | -| main.rs:1570:16:1570:19 | self | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1573:15:1573:15 | x | | file://:0:0:0:0 | & | -| main.rs:1573:15:1573:15 | x | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1573:34:1575:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1573:34:1575:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1574:13:1574:13 | x | | file://:0:0:0:0 | & | -| main.rs:1574:13:1574:13 | x | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1577:15:1577:15 | x | | file://:0:0:0:0 | & | -| main.rs:1577:15:1577:15 | x | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1577:34:1579:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1577:34:1579:9 | { ... } | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1578:13:1578:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1578:13:1578:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1578:13:1578:16 | &... | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1578:13:1578:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1578:13:1578:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1578:13:1578:16 | &... | &T.&T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1578:14:1578:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1578:14:1578:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1578:14:1578:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1578:14:1578:16 | &... | &T.&T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1578:15:1578:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1578:15:1578:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1578:15:1578:16 | &x | &T.&T | main.rs:1562:5:1562:13 | S | -| main.rs:1578:16:1578:16 | x | | file://:0:0:0:0 | & | -| main.rs:1578:16:1578:16 | x | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1583:13:1583:13 | x | | main.rs:1562:5:1562:13 | S | -| main.rs:1583:17:1583:20 | S {...} | | main.rs:1562:5:1562:13 | S | -| main.rs:1584:9:1584:9 | x | | main.rs:1562:5:1562:13 | S | -| main.rs:1584:9:1584:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1584:9:1584:14 | x.f1() | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1585:9:1585:9 | x | | main.rs:1562:5:1562:13 | S | -| main.rs:1585:9:1585:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1585:9:1585:14 | x.f2() | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1586:9:1586:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1586:9:1586:17 | ...::f3(...) | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1586:15:1586:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1586:15:1586:16 | &x | &T | main.rs:1562:5:1562:13 | S | -| main.rs:1586:16:1586:16 | x | | main.rs:1562:5:1562:13 | S | -| main.rs:1588:13:1588:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1588:17:1588:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1588:18:1588:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1588:18:1588:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1588:19:1588:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1588:19:1588:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1588:19:1588:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1588:20:1588:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1588:20:1588:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1588:21:1588:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1592:17:1592:20 | flag | | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1592:24:1592:41 | ...::default(...) | | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1593:22:1593:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1593:22:1593:30 | &mut flag | &T | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1593:27:1593:30 | flag | | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1594:18:1594:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1594:18:1594:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1594:18:1594:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1594:18:1594:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1594:26:1594:29 | flag | | main.rs:1551:5:1554:5 | MyFlag | -| main.rs:1609:43:1612:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1609:43:1612:5 | { ... } | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1609:43:1612:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1610:13:1610:13 | x | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1610:17:1610:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1610:17:1610:30 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1610:17:1610:31 | TryExpr | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1610:28:1610:29 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1611:9:1611:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1611:9:1611:22 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1611:9:1611:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1611:20:1611:21 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1616:46:1620:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1616:46:1620:5 | { ... } | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1616:46:1620:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1617:13:1617:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1617:13:1617:13 | x | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1617:17:1617:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1617:17:1617:30 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1617:28:1617:29 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1618:13:1618:13 | y | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1618:17:1618:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1618:17:1618:17 | x | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1618:17:1618:18 | TryExpr | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1619:9:1619:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1619:9:1619:22 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1619:9:1619:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1619:20:1619:21 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1624:40:1629:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1624:40:1629:5 | { ... } | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1624:40:1629:5 | { ... } | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1625:13:1625:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1625:13:1625:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1625:13:1625:13 | x | T.T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1625:17:1625:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1625:17:1625:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1625:17:1625:42 | ...::Ok(...) | T.T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1625:28:1625:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1625:28:1625:41 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1625:39:1625:40 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1627:17:1627:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1627:17:1627:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1627:17:1627:17 | x | T.T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1627:17:1627:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1627:17:1627:18 | TryExpr | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1627:17:1627:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1627:24:1627:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1627:24:1627:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1628:9:1628:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1628:9:1628:22 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1628:9:1628:22 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1628:20:1628:21 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1633:30:1633:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1633:30:1633:34 | input | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1633:30:1633:34 | input | T | main.rs:1633:20:1633:27 | T | -| main.rs:1633:69:1640:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1633:69:1640:5 | { ... } | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1633:69:1640:5 | { ... } | T | main.rs:1633:20:1633:27 | T | -| main.rs:1634:13:1634:17 | value | | main.rs:1633:20:1633:27 | T | -| main.rs:1634:21:1634:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1634:21:1634:25 | input | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1634:21:1634:25 | input | T | main.rs:1633:20:1633:27 | T | -| main.rs:1634:21:1634:26 | TryExpr | | main.rs:1633:20:1633:27 | T | -| main.rs:1635:22:1635:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1635:22:1635:38 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1635:22:1635:38 | ...::Ok(...) | T | main.rs:1633:20:1633:27 | T | -| main.rs:1635:22:1638:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1635:22:1638:10 | ... .and_then(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1635:33:1635:37 | value | | main.rs:1633:20:1633:27 | T | -| main.rs:1635:49:1638:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1635:49:1638:9 | \|...\| ... | dyn(Output).E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1635:53:1638:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1635:53:1638:9 | { ... } | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1636:22:1636:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1636:22:1636:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1636:22:1636:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1636:22:1636:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1637:13:1637:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1637:13:1637:34 | ...::Ok::<...>(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1639:9:1639:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1639:9:1639:23 | ...::Err(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1639:9:1639:23 | ...::Err(...) | T | main.rs:1633:20:1633:27 | T | -| main.rs:1639:21:1639:22 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1644:16:1644:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1644:16:1644:33 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1644:16:1644:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1644:27:1644:32 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1644:37:1644:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1644:37:1644:52 | try_same_error(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1644:37:1644:52 | try_same_error(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1645:22:1645:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1645:22:1645:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1645:22:1645:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1645:22:1645:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1645:30:1645:35 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1648:16:1648:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1648:16:1648:33 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1648:16:1648:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1648:27:1648:32 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1648:37:1648:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1648:37:1648:55 | try_convert_error(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1648:37:1648:55 | try_convert_error(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1649:22:1649:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1649:22:1649:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1649:22:1649:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1649:22:1649:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1649:30:1649:35 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1652:16:1652:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1652:16:1652:33 | ...::Ok(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1652:16:1652:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1652:27:1652:32 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1652:37:1652:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1652:37:1652:49 | try_chained(...) | E | main.rs:1604:5:1605:14 | S2 | -| main.rs:1652:37:1652:49 | try_chained(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1653:22:1653:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1653:22:1653:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1653:22:1653:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1653:22:1653:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1653:30:1653:35 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:16:1656:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1656:16:1656:33 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:16:1656:33 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:27:1656:32 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:37:1656:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1656:37:1656:63 | try_complex(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:37:1656:63 | try_complex(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:49:1656:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1656:49:1656:62 | ...::Ok(...) | E | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:49:1656:62 | ...::Ok(...) | T | main.rs:1601:5:1602:14 | S1 | -| main.rs:1656:60:1656:61 | S1 | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1657:22:1657:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1657:22:1657:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1657:22:1657:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1657:22:1657:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1657:30:1657:35 | result | | main.rs:1601:5:1602:14 | S1 | -| main.rs:1664:13:1664:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1664:22:1664:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:13:1665:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:17:1665:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1475:26:1475:27 | x5 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1475:26:1475:27 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1475:26:1475:29 | x5.0 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1477:13:1477:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1477:13:1477:14 | x6 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1477:13:1477:14 | x6 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1477:18:1477:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1477:18:1477:23 | &... | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1477:18:1477:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1477:19:1477:23 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1477:19:1477:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1477:21:1477:22 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1480:18:1480:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1480:18:1480:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1480:18:1480:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1480:18:1480:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1480:26:1480:30 | (...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1480:26:1480:30 | (...) | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1480:26:1480:35 | ... .m1() | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1480:27:1480:29 | * ... | | main.rs:1410:5:1411:19 | S | +| main.rs:1480:27:1480:29 | * ... | T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1480:28:1480:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1480:28:1480:29 | x6 | &T | main.rs:1410:5:1411:19 | S | +| main.rs:1480:28:1480:29 | x6 | &T.T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1482:13:1482:14 | x7 | | main.rs:1410:5:1411:19 | S | +| main.rs:1482:13:1482:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1482:13:1482:14 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1482:18:1482:23 | S(...) | | main.rs:1410:5:1411:19 | S | +| main.rs:1482:18:1482:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1482:18:1482:23 | S(...) | T.&T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1482:20:1482:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1482:20:1482:22 | &S2 | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1482:21:1482:22 | S2 | | main.rs:1413:5:1414:14 | S2 | +| main.rs:1485:13:1485:13 | t | | file://:0:0:0:0 | & | +| main.rs:1485:13:1485:13 | t | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1485:17:1485:18 | x7 | | main.rs:1410:5:1411:19 | S | +| main.rs:1485:17:1485:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1485:17:1485:18 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1485:17:1485:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1485:17:1485:23 | x7.m1() | &T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1486:18:1486:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1486:18:1486:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1486:18:1486:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1486:18:1486:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1486:26:1486:27 | x7 | | main.rs:1410:5:1411:19 | S | +| main.rs:1486:26:1486:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1486:26:1486:27 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | +| main.rs:1488:13:1488:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1488:26:1488:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1488:26:1488:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1488:26:1488:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1492:13:1492:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1492:13:1492:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1492:17:1492:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1492:17:1492:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1492:17:1492:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1494:13:1494:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1494:13:1494:20 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1494:24:1494:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1494:24:1494:39 | &... | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1494:25:1494:39 | MyInt {...} | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1494:36:1494:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1494:36:1494:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1496:13:1496:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1496:17:1496:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1496:17:1496:24 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1496:17:1496:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:18:1497:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1497:18:1497:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1497:18:1497:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1497:18:1497:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1497:26:1497:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1500:13:1500:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1500:13:1500:20 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1500:24:1500:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1500:24:1500:39 | &... | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1500:25:1500:39 | MyInt {...} | | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1500:36:1500:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1500:36:1500:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1501:13:1501:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1501:17:1501:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1501:17:1501:24 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | +| main.rs:1501:17:1501:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1502:18:1502:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1502:18:1502:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1502:18:1502:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1502:18:1502:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1502:26:1502:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:16:1509:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1509:16:1509:20 | SelfParam | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | +| main.rs:1512:16:1512:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1512:16:1512:20 | SelfParam | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | +| main.rs:1512:32:1514:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1512:32:1514:9 | { ... } | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | +| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | +| main.rs:1513:13:1513:16 | self | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | +| main.rs:1513:13:1513:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1513:13:1513:22 | self.foo() | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | +| main.rs:1521:16:1521:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1521:16:1521:20 | SelfParam | &T | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1521:36:1523:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1521:36:1523:9 | { ... } | &T | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1522:13:1522:16 | self | | file://:0:0:0:0 | & | +| main.rs:1522:13:1522:16 | self | &T | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1527:13:1527:13 | x | | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1527:17:1527:24 | MyStruct | | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1528:9:1528:9 | x | | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1528:9:1528:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1528:9:1528:15 | x.bar() | &T | main.rs:1517:5:1517:20 | MyStruct | +| main.rs:1538:16:1538:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1538:16:1538:20 | SelfParam | &T | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1538:16:1538:20 | SelfParam | &T.T | main.rs:1537:10:1537:10 | T | +| main.rs:1538:32:1540:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1538:32:1540:9 | { ... } | &T | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1538:32:1540:9 | { ... } | &T.T | main.rs:1537:10:1537:10 | T | +| main.rs:1539:13:1539:16 | self | | file://:0:0:0:0 | & | +| main.rs:1539:13:1539:16 | self | &T | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1539:13:1539:16 | self | &T.T | main.rs:1537:10:1537:10 | T | +| main.rs:1544:13:1544:13 | x | | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1544:13:1544:13 | x | T | main.rs:1533:5:1533:13 | S | +| main.rs:1544:17:1544:27 | MyStruct(...) | | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1544:17:1544:27 | MyStruct(...) | T | main.rs:1533:5:1533:13 | S | +| main.rs:1544:26:1544:26 | S | | main.rs:1533:5:1533:13 | S | +| main.rs:1545:9:1545:9 | x | | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1545:9:1545:9 | x | T | main.rs:1533:5:1533:13 | S | +| main.rs:1545:9:1545:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1545:9:1545:15 | x.foo() | &T | main.rs:1535:5:1535:26 | MyStruct | +| main.rs:1545:9:1545:15 | x.foo() | &T.T | main.rs:1533:5:1533:13 | S | +| main.rs:1556:17:1556:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1556:17:1556:25 | SelfParam | &T | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1557:13:1557:16 | self | | file://:0:0:0:0 | & | +| main.rs:1557:13:1557:16 | self | &T | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1557:13:1557:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1557:13:1557:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1557:25:1557:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1557:26:1557:29 | self | | file://:0:0:0:0 | & | +| main.rs:1557:26:1557:29 | self | &T | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1557:26:1557:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1564:15:1564:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1564:15:1564:19 | SelfParam | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1564:31:1566:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1564:31:1566:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1565:13:1565:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1565:13:1565:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1565:13:1565:19 | &... | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1565:13:1565:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1565:13:1565:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1565:13:1565:19 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1565:14:1565:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1565:14:1565:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1565:14:1565:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1565:14:1565:19 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1565:15:1565:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1565:15:1565:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1565:15:1565:19 | &self | &T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1565:16:1565:19 | self | | file://:0:0:0:0 | & | +| main.rs:1565:16:1565:19 | self | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1568:15:1568:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1568:15:1568:25 | SelfParam | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1568:37:1570:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1568:37:1570:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1569:13:1569:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1569:13:1569:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1569:13:1569:19 | &... | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1569:13:1569:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1569:13:1569:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1569:13:1569:19 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1569:14:1569:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1569:14:1569:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1569:14:1569:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1569:14:1569:19 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1569:15:1569:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1569:15:1569:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1569:15:1569:19 | &self | &T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1569:16:1569:19 | self | | file://:0:0:0:0 | & | +| main.rs:1569:16:1569:19 | self | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1572:15:1572:15 | x | | file://:0:0:0:0 | & | +| main.rs:1572:15:1572:15 | x | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1572:34:1574:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1572:34:1574:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1573:13:1573:13 | x | | file://:0:0:0:0 | & | +| main.rs:1573:13:1573:13 | x | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1576:15:1576:15 | x | | file://:0:0:0:0 | & | +| main.rs:1576:15:1576:15 | x | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1576:34:1578:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1576:34:1578:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1577:13:1577:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | &... | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1577:13:1577:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1577:14:1577:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1577:14:1577:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1577:14:1577:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1577:14:1577:16 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1577:15:1577:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1577:15:1577:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1577:15:1577:16 | &x | &T.&T | main.rs:1561:5:1561:13 | S | +| main.rs:1577:16:1577:16 | x | | file://:0:0:0:0 | & | +| main.rs:1577:16:1577:16 | x | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1582:13:1582:13 | x | | main.rs:1561:5:1561:13 | S | +| main.rs:1582:17:1582:20 | S {...} | | main.rs:1561:5:1561:13 | S | +| main.rs:1583:9:1583:9 | x | | main.rs:1561:5:1561:13 | S | +| main.rs:1583:9:1583:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1583:9:1583:14 | x.f1() | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1584:9:1584:9 | x | | main.rs:1561:5:1561:13 | S | +| main.rs:1584:9:1584:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1584:9:1584:14 | x.f2() | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1585:9:1585:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1585:9:1585:17 | ...::f3(...) | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1585:15:1585:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1585:15:1585:16 | &x | &T | main.rs:1561:5:1561:13 | S | +| main.rs:1585:16:1585:16 | x | | main.rs:1561:5:1561:13 | S | +| main.rs:1587:13:1587:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1587:17:1587:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1587:18:1587:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1587:18:1587:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1587:19:1587:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1587:19:1587:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1587:19:1587:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1587:20:1587:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1587:20:1587:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1587:21:1587:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1591:17:1591:20 | flag | | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1591:24:1591:41 | ...::default(...) | | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1592:22:1592:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1592:22:1592:30 | &mut flag | &T | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1592:27:1592:30 | flag | | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1593:18:1593:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1593:18:1593:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1593:18:1593:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1593:18:1593:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1593:26:1593:29 | flag | | main.rs:1550:5:1553:5 | MyFlag | +| main.rs:1608:43:1611:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1608:43:1611:5 | { ... } | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1608:43:1611:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1609:13:1609:13 | x | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1609:17:1609:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1609:17:1609:30 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1609:17:1609:31 | TryExpr | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1609:28:1609:29 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1610:9:1610:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1610:9:1610:22 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1610:9:1610:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1610:20:1610:21 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1615:46:1619:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1615:46:1619:5 | { ... } | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1615:46:1619:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1616:13:1616:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1616:13:1616:13 | x | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1616:17:1616:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1616:17:1616:30 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1616:28:1616:29 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1617:13:1617:13 | y | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1617:17:1617:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1617:17:1617:17 | x | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1617:17:1617:18 | TryExpr | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1618:9:1618:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1618:9:1618:22 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1618:9:1618:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1618:20:1618:21 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1623:40:1628:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1623:40:1628:5 | { ... } | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1623:40:1628:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1624:13:1624:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1624:13:1624:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1624:13:1624:13 | x | T.T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1624:17:1624:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1624:17:1624:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1624:17:1624:42 | ...::Ok(...) | T.T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1624:28:1624:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1624:28:1624:41 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1624:39:1624:40 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1626:17:1626:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1626:17:1626:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1626:17:1626:17 | x | T.T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1626:17:1626:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1626:17:1626:18 | TryExpr | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1626:17:1626:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1626:24:1626:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1626:24:1626:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1627:9:1627:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1627:9:1627:22 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1627:9:1627:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1627:20:1627:21 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1632:30:1632:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1632:30:1632:34 | input | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1632:30:1632:34 | input | T | main.rs:1632:20:1632:27 | T | +| main.rs:1632:69:1639:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1632:69:1639:5 | { ... } | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1632:69:1639:5 | { ... } | T | main.rs:1632:20:1632:27 | T | +| main.rs:1633:13:1633:17 | value | | main.rs:1632:20:1632:27 | T | +| main.rs:1633:21:1633:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1633:21:1633:25 | input | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1633:21:1633:25 | input | T | main.rs:1632:20:1632:27 | T | +| main.rs:1633:21:1633:26 | TryExpr | | main.rs:1632:20:1632:27 | T | +| main.rs:1634:22:1634:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1634:22:1634:38 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1634:22:1634:38 | ...::Ok(...) | T | main.rs:1632:20:1632:27 | T | +| main.rs:1634:22:1637:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1634:22:1637:10 | ... .and_then(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1634:33:1634:37 | value | | main.rs:1632:20:1632:27 | T | +| main.rs:1634:49:1637:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Output).E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1634:53:1637:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1634:53:1637:9 | { ... } | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1635:22:1635:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1635:22:1635:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1635:22:1635:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1635:22:1635:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1636:13:1636:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1636:13:1636:34 | ...::Ok::<...>(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1638:9:1638:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1638:9:1638:23 | ...::Err(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1638:9:1638:23 | ...::Err(...) | T | main.rs:1632:20:1632:27 | T | +| main.rs:1638:21:1638:22 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1643:16:1643:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1643:16:1643:33 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1643:16:1643:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1643:27:1643:32 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1643:37:1643:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1643:37:1643:52 | try_same_error(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1643:37:1643:52 | try_same_error(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1644:22:1644:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1644:22:1644:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1644:22:1644:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1644:22:1644:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1644:30:1644:35 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1647:16:1647:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1647:16:1647:33 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1647:16:1647:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1647:27:1647:32 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1647:37:1647:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1647:37:1647:55 | try_convert_error(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1647:37:1647:55 | try_convert_error(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1648:22:1648:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1648:22:1648:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1648:22:1648:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1648:22:1648:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1648:30:1648:35 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1651:16:1651:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1651:16:1651:33 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1651:16:1651:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1651:27:1651:32 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1651:37:1651:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1651:37:1651:49 | try_chained(...) | E | main.rs:1603:5:1604:14 | S2 | +| main.rs:1651:37:1651:49 | try_chained(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1652:22:1652:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1652:22:1652:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1652:22:1652:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1652:22:1652:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1652:30:1652:35 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:16:1655:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1655:16:1655:33 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:16:1655:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:27:1655:32 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:37:1655:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1655:37:1655:63 | try_complex(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:37:1655:63 | try_complex(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:49:1655:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1655:49:1655:62 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:49:1655:62 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | +| main.rs:1655:60:1655:61 | S1 | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1656:22:1656:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1656:22:1656:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1656:22:1656:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1656:22:1656:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1656:30:1656:35 | result | | main.rs:1600:5:1601:14 | S1 | +| main.rs:1663:13:1663:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1663:22:1663:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1664:13:1664:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1664:17:1664:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:13:1665:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:17:1665:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:17:1665:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1665:21:1665:21 | y | | {EXTERNAL LOCATION} | i32 | | main.rs:1666:13:1666:13 | z | | {EXTERNAL LOCATION} | i32 | | main.rs:1666:17:1666:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1666:17:1666:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1666:21:1666:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1667:13:1667:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1667:17:1667:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1667:17:1667:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1668:13:1668:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1668:17:1668:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1669:13:1669:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1669:13:1669:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1669:21:1669:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1669:21:1669:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1670:13:1670:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1670:17:1670:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1671:13:1671:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1671:17:1671:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1672:13:1672:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1672:17:1672:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:13:1679:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1666:17:1666:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1667:13:1667:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1667:17:1667:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1668:13:1668:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1668:13:1668:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1668:21:1668:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1668:21:1668:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1669:13:1669:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1669:17:1669:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1670:13:1670:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1670:17:1670:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1671:13:1671:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1671:17:1671:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1678:13:1678:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1678:17:1678:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1678:17:1678:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1678:25:1678:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:13:1679:13 | y | | {EXTERNAL LOCATION} | bool | | main.rs:1679:17:1679:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:17:1679:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1679:17:1679:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | | main.rs:1679:25:1679:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1680:13:1680:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1680:17:1680:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1680:17:1680:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1680:25:1680:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1682:17:1682:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1683:13:1683:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1683:20:1683:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1683:20:1683:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1683:26:1683:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1684:12:1684:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1685:17:1685:17 | z | | file://:0:0:0:0 | () | -| main.rs:1685:21:1685:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1685:22:1685:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1685:22:1685:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1685:26:1685:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1687:13:1687:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1687:13:1687:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1687:17:1687:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1689:9:1689:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:30:1705:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1704:13:1704:31 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1704:23:1704:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:23:1704:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:29:1704:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:29:1704:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1711:16:1711:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1711:22:1711:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1711:41:1716:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1712:13:1715:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1713:20:1713:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1713:20:1713:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1681:17:1681:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1682:13:1682:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1682:20:1682:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1682:20:1682:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1682:26:1682:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1683:12:1683:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1684:17:1684:17 | z | | file://:0:0:0:0 | () | +| main.rs:1684:21:1684:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1684:22:1684:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1684:22:1684:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1684:26:1684:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1686:13:1686:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1686:13:1686:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1686:17:1686:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1688:9:1688:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1702:30:1704:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1703:13:1703:31 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1703:23:1703:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:23:1703:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1703:29:1703:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:29:1703:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1710:16:1710:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1710:22:1710:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1710:41:1715:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1711:13:1714:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1712:20:1712:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1712:20:1712:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1712:20:1712:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1712:29:1712:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1712:29:1712:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1713:20:1713:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1713:20:1713:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1713:20:1713:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:29:1713:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1713:29:1713:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:20:1714:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1714:20:1714:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:20:1714:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:29:1714:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1714:29:1714:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1721:23:1721:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1721:23:1721:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1721:34:1721:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1713:29:1713:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1713:29:1713:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1720:23:1720:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1720:23:1720:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1720:34:1720:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1721:13:1721:16 | self | | file://:0:0:0:0 | & | +| main.rs:1721:13:1721:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1721:13:1721:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:13:1721:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1721:23:1721:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1721:23:1721:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1722:13:1722:16 | self | | file://:0:0:0:0 | & | -| main.rs:1722:13:1722:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1722:13:1722:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:13:1722:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1722:13:1722:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1722:13:1722:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1722:23:1722:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1722:23:1722:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1723:13:1723:16 | self | | file://:0:0:0:0 | & | -| main.rs:1723:13:1723:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1723:13:1723:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1723:13:1723:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1723:23:1723:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1723:23:1723:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1729:16:1729:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1729:22:1729:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1729:41:1734:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1730:13:1733:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1731:20:1731:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1731:20:1731:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1722:23:1722:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1722:23:1722:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1728:16:1728:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1728:22:1728:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1728:41:1733:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1729:13:1732:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1730:20:1730:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1730:20:1730:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1730:20:1730:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1730:29:1730:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1730:29:1730:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:20:1731:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1731:20:1731:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1731:20:1731:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1731:29:1731:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1731:29:1731:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1732:20:1732:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1732:20:1732:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1732:20:1732:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1732:29:1732:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1732:29:1732:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:23:1739:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1739:23:1739:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1739:34:1739:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1731:29:1731:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1731:29:1731:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1738:23:1738:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1738:23:1738:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1738:34:1738:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1739:13:1739:16 | self | | file://:0:0:0:0 | & | +| main.rs:1739:13:1739:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1739:13:1739:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:13:1739:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1739:23:1739:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1739:23:1739:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1740:13:1740:16 | self | | file://:0:0:0:0 | & | -| main.rs:1740:13:1740:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1740:13:1740:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1740:13:1740:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1740:13:1740:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1740:13:1740:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1740:23:1740:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1740:23:1740:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:13:1741:16 | self | | file://:0:0:0:0 | & | -| main.rs:1741:13:1741:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1741:13:1741:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:13:1741:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1741:23:1741:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1741:23:1741:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:16:1747:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1747:22:1747:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1747:41:1752:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1748:13:1751:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1749:20:1749:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1749:20:1749:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1740:23:1740:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1740:23:1740:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1746:16:1746:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1746:22:1746:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1746:41:1751:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1747:13:1750:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1748:20:1748:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1748:20:1748:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1748:20:1748:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1748:29:1748:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1748:29:1748:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1749:20:1749:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1749:20:1749:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1749:20:1749:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:29:1749:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1749:29:1749:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:20:1750:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1750:20:1750:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:20:1750:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:29:1750:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1750:29:1750:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1756:23:1756:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1756:23:1756:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1756:34:1756:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1749:29:1749:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1749:29:1749:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1755:23:1755:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1755:23:1755:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1755:34:1755:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1756:13:1756:16 | self | | file://:0:0:0:0 | & | +| main.rs:1756:13:1756:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1756:13:1756:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:13:1756:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1756:23:1756:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1756:23:1756:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1757:13:1757:16 | self | | file://:0:0:0:0 | & | -| main.rs:1757:13:1757:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1757:13:1757:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:13:1757:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1757:13:1757:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1757:13:1757:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1757:23:1757:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1757:23:1757:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:13:1758:16 | self | | file://:0:0:0:0 | & | -| main.rs:1758:13:1758:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1758:13:1758:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:13:1758:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1758:23:1758:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1758:23:1758:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:16:1764:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1764:22:1764:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1764:41:1769:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1765:13:1768:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1766:20:1766:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1766:20:1766:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:23:1757:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1757:23:1757:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:16:1763:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1763:22:1763:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1763:41:1768:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1764:13:1767:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1765:20:1765:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1765:20:1765:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:20:1765:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:29:1765:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1765:29:1765:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:20:1766:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1766:20:1766:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1766:20:1766:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:29:1766:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1766:29:1766:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:20:1767:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1767:20:1767:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:20:1767:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:29:1767:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1767:29:1767:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:23:1773:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1773:23:1773:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1773:34:1773:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1766:29:1766:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1766:29:1766:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:23:1772:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1772:23:1772:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1772:34:1772:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1773:13:1773:16 | self | | file://:0:0:0:0 | & | +| main.rs:1773:13:1773:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1773:13:1773:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1773:13:1773:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1773:23:1773:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1773:23:1773:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1774:13:1774:16 | self | | file://:0:0:0:0 | & | -| main.rs:1774:13:1774:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1774:13:1774:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:13:1774:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1774:13:1774:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1774:13:1774:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1774:23:1774:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1774:23:1774:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1775:13:1775:16 | self | | file://:0:0:0:0 | & | -| main.rs:1775:13:1775:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1775:13:1775:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1775:13:1775:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1775:23:1775:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1775:23:1775:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:16:1781:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1781:22:1781:24 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1781:41:1786:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1782:13:1785:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1783:20:1783:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1783:20:1783:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:23:1774:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1774:23:1774:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:16:1780:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1780:22:1780:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1780:41:1785:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1781:13:1784:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1782:20:1782:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1782:20:1782:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1782:20:1782:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1782:29:1782:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1782:29:1782:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:20:1783:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1783:20:1783:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1783:20:1783:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:29:1783:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1783:29:1783:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:20:1784:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1784:20:1784:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:20:1784:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:29:1784:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1784:29:1784:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:23:1790:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1790:23:1790:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1790:34:1790:36 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1783:29:1783:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1783:29:1783:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:23:1789:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1789:23:1789:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1789:34:1789:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1790:13:1790:16 | self | | file://:0:0:0:0 | & | +| main.rs:1790:13:1790:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1790:13:1790:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:13:1790:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1790:23:1790:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1790:23:1790:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1791:13:1791:16 | self | | file://:0:0:0:0 | & | -| main.rs:1791:13:1791:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1791:13:1791:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:13:1791:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1791:13:1791:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1791:13:1791:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1791:23:1791:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1791:23:1791:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:13:1792:16 | self | | file://:0:0:0:0 | & | -| main.rs:1792:13:1792:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1792:13:1792:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:13:1792:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1792:23:1792:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1792:23:1792:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:19:1798:22 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1798:25:1798:27 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1798:44:1803:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1799:13:1802:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1800:20:1800:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1800:20:1800:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:23:1791:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1791:23:1791:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:19:1797:22 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1797:25:1797:27 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1797:44:1802:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1798:13:1801:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1799:20:1799:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1799:20:1799:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1799:20:1799:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1799:29:1799:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1799:29:1799:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:20:1800:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1800:20:1800:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1800:20:1800:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1800:29:1800:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1800:29:1800:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1801:20:1801:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1801:20:1801:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1801:20:1801:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1801:29:1801:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1801:29:1801:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:26:1807:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1807:26:1807:34 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1807:37:1807:39 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1800:29:1800:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1800:29:1800:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:26:1806:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1806:26:1806:34 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1806:37:1806:39 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1807:13:1807:16 | self | | file://:0:0:0:0 | & | +| main.rs:1807:13:1807:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1807:13:1807:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:13:1807:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1807:23:1807:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1807:23:1807:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1808:13:1808:16 | self | | file://:0:0:0:0 | & | -| main.rs:1808:13:1808:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1808:13:1808:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1808:13:1808:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1808:13:1808:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1808:13:1808:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1808:23:1808:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1808:23:1808:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1809:13:1809:16 | self | | file://:0:0:0:0 | & | -| main.rs:1809:13:1809:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1809:13:1809:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1809:13:1809:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1809:23:1809:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1809:23:1809:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:18:1815:21 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1815:24:1815:26 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1815:43:1820:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1816:13:1819:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1817:20:1817:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1817:20:1817:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1808:23:1808:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1808:23:1808:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1814:18:1814:21 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1814:24:1814:26 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1814:43:1819:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1815:13:1818:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1816:20:1816:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1816:20:1816:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1816:20:1816:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1816:29:1816:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1816:29:1816:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1817:20:1817:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1817:20:1817:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1817:20:1817:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1817:29:1817:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1817:29:1817:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:20:1818:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1818:20:1818:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:20:1818:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:29:1818:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1818:29:1818:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:25:1824:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1824:25:1824:33 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1824:36:1824:38 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1817:29:1817:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1817:29:1817:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1823:25:1823:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1823:25:1823:33 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1823:36:1823:38 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1824:13:1824:16 | self | | file://:0:0:0:0 | & | +| main.rs:1824:13:1824:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1824:13:1824:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:13:1824:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1824:23:1824:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1824:23:1824:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1825:13:1825:16 | self | | file://:0:0:0:0 | & | -| main.rs:1825:13:1825:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1825:13:1825:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1825:13:1825:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1825:13:1825:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1825:13:1825:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1825:23:1825:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1825:23:1825:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1826:13:1826:16 | self | | file://:0:0:0:0 | & | -| main.rs:1826:13:1826:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1826:13:1826:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1826:13:1826:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1826:23:1826:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1826:23:1826:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:19:1832:22 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1832:25:1832:27 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1832:44:1837:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1833:13:1836:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1834:20:1834:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1834:20:1834:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1825:23:1825:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1825:23:1825:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1831:19:1831:22 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1831:25:1831:27 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1831:44:1836:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1832:13:1835:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1833:20:1833:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1833:20:1833:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:20:1833:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:29:1833:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1833:29:1833:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1834:20:1834:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1834:20:1834:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1834:20:1834:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:29:1834:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1834:29:1834:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:20:1835:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1835:20:1835:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:20:1835:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:29:1835:31 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1835:29:1835:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:26:1841:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1841:26:1841:34 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1841:37:1841:39 | rhs | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1834:29:1834:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1834:29:1834:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1840:26:1840:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1840:26:1840:34 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1840:37:1840:39 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1841:13:1841:16 | self | | file://:0:0:0:0 | & | +| main.rs:1841:13:1841:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1841:13:1841:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:13:1841:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1841:23:1841:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1841:23:1841:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1842:13:1842:16 | self | | file://:0:0:0:0 | & | -| main.rs:1842:13:1842:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1842:13:1842:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1842:13:1842:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1842:13:1842:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1842:13:1842:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1842:23:1842:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1842:23:1842:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1843:13:1843:16 | self | | file://:0:0:0:0 | & | -| main.rs:1843:13:1843:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1843:13:1843:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1843:13:1843:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1843:23:1843:25 | rhs | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1843:23:1843:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1849:16:1849:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1849:22:1849:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1849:40:1854:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1850:13:1853:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1851:20:1851:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1851:20:1851:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1842:23:1842:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1842:23:1842:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1848:16:1848:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1848:22:1848:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1848:40:1853:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1849:13:1852:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1850:20:1850:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1850:20:1850:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:20:1850:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:30:1850:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1851:20:1851:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1851:20:1851:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1851:20:1851:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1851:30:1851:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1852:20:1852:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1852:20:1852:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:20:1852:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:30:1852:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1858:23:1858:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1858:23:1858:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1858:34:1858:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1857:23:1857:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1857:23:1857:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1857:34:1857:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | +| main.rs:1858:13:1858:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1858:13:1858:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:13:1858:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1858:24:1858:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1859:13:1859:16 | self | | file://:0:0:0:0 | & | -| main.rs:1859:13:1859:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1859:13:1859:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1859:13:1859:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1859:13:1859:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1859:13:1859:26 | ... <<= ... | | file://:0:0:0:0 | () | | main.rs:1859:24:1859:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1860:13:1860:16 | self | | file://:0:0:0:0 | & | -| main.rs:1860:13:1860:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1860:13:1860:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:13:1860:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1860:24:1860:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1866:16:1866:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1866:22:1866:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1866:40:1871:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1867:13:1870:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1868:20:1868:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1868:20:1868:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1865:16:1865:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1865:22:1865:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1865:40:1870:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1866:13:1869:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1867:20:1867:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1867:20:1867:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:20:1867:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:30:1867:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1868:20:1868:23 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1868:20:1868:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1868:20:1868:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1868:30:1868:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1869:20:1869:23 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1869:20:1869:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:20:1869:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:30:1869:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1875:23:1875:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1875:23:1875:31 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1875:34:1875:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1874:23:1874:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1874:23:1874:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1874:34:1874:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1875:13:1875:16 | self | | file://:0:0:0:0 | & | +| main.rs:1875:13:1875:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1875:13:1875:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1875:13:1875:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1875:24:1875:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1876:13:1876:16 | self | | file://:0:0:0:0 | & | -| main.rs:1876:13:1876:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1876:13:1876:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:13:1876:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1876:13:1876:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1876:13:1876:26 | ... >>= ... | | file://:0:0:0:0 | () | | main.rs:1876:24:1876:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1877:13:1877:16 | self | | file://:0:0:0:0 | & | -| main.rs:1877:13:1877:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1877:13:1877:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1877:13:1877:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1877:24:1877:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1883:16:1883:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1883:30:1888:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1884:13:1887:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1882:16:1882:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1882:30:1887:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1883:13:1886:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1884:20:1884:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:21:1884:24 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1884:21:1884:26 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1885:20:1885:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1885:21:1885:24 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1885:21:1885:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1886:20:1886:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1886:21:1886:24 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1886:21:1886:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1893:16:1893:19 | SelfParam | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1893:30:1898:9 | { ... } | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1894:13:1897:13 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1885:21:1885:24 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1885:21:1885:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1892:16:1892:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1892:30:1897:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1893:13:1896:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1894:20:1894:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:21:1894:24 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1894:21:1894:26 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1895:20:1895:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1895:21:1895:24 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1895:21:1895:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1896:20:1896:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1896:21:1896:24 | self | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1896:21:1896:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:15:1902:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1902:15:1902:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1902:22:1902:26 | other | | file://:0:0:0:0 | & | -| main.rs:1902:22:1902:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1902:44:1904:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1903:13:1903:16 | self | | file://:0:0:0:0 | & | -| main.rs:1903:13:1903:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1903:13:1903:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1903:13:1903:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1903:13:1903:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1903:23:1903:27 | other | | file://:0:0:0:0 | & | -| main.rs:1903:23:1903:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1903:23:1903:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1903:34:1903:37 | self | | file://:0:0:0:0 | & | -| main.rs:1903:34:1903:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1903:34:1903:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1903:34:1903:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1903:44:1903:48 | other | | file://:0:0:0:0 | & | -| main.rs:1903:44:1903:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1903:44:1903:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:15:1906:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1906:15:1906:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1906:22:1906:26 | other | | file://:0:0:0:0 | & | -| main.rs:1906:22:1906:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1906:44:1908:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1907:13:1907:16 | self | | file://:0:0:0:0 | & | -| main.rs:1907:13:1907:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1907:13:1907:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:13:1907:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1907:13:1907:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1907:23:1907:27 | other | | file://:0:0:0:0 | & | -| main.rs:1907:23:1907:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1907:23:1907:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:34:1907:37 | self | | file://:0:0:0:0 | & | -| main.rs:1907:34:1907:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1907:34:1907:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:34:1907:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1907:44:1907:48 | other | | file://:0:0:0:0 | & | -| main.rs:1907:44:1907:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1907:44:1907:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:24:1912:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1912:24:1912:28 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1912:31:1912:35 | other | | file://:0:0:0:0 | & | -| main.rs:1912:31:1912:35 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1912:75:1914:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1912:75:1914:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1913:13:1913:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:13:1913:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1913:13:1913:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1913:14:1913:17 | self | | file://:0:0:0:0 | & | -| main.rs:1913:14:1913:17 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1913:14:1913:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:14:1913:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:23:1913:26 | self | | file://:0:0:0:0 | & | -| main.rs:1913:23:1913:26 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1913:23:1913:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:43:1913:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1913:43:1913:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:44:1913:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:45:1913:49 | other | | file://:0:0:0:0 | & | -| main.rs:1913:45:1913:49 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1913:45:1913:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:45:1913:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:55:1913:59 | other | | file://:0:0:0:0 | & | -| main.rs:1913:55:1913:59 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1913:55:1913:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:15:1916:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1916:15:1916:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1895:21:1895:24 | self | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1895:21:1895:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:15:1901:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1901:15:1901:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1901:22:1901:26 | other | | file://:0:0:0:0 | & | +| main.rs:1901:22:1901:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1901:44:1903:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1902:13:1902:16 | self | | file://:0:0:0:0 | & | +| main.rs:1902:13:1902:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1902:13:1902:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:13:1902:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1902:13:1902:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1902:23:1902:27 | other | | file://:0:0:0:0 | & | +| main.rs:1902:23:1902:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1902:23:1902:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:34:1902:37 | self | | file://:0:0:0:0 | & | +| main.rs:1902:34:1902:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1902:34:1902:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:34:1902:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1902:44:1902:48 | other | | file://:0:0:0:0 | & | +| main.rs:1902:44:1902:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1902:44:1902:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:15:1905:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1905:15:1905:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1905:22:1905:26 | other | | file://:0:0:0:0 | & | +| main.rs:1905:22:1905:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1905:44:1907:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1906:13:1906:16 | self | | file://:0:0:0:0 | & | +| main.rs:1906:13:1906:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1906:13:1906:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:13:1906:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1906:13:1906:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1906:23:1906:27 | other | | file://:0:0:0:0 | & | +| main.rs:1906:23:1906:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1906:23:1906:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:34:1906:37 | self | | file://:0:0:0:0 | & | +| main.rs:1906:34:1906:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1906:34:1906:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:34:1906:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1906:44:1906:48 | other | | file://:0:0:0:0 | & | +| main.rs:1906:44:1906:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1906:44:1906:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1911:24:1911:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1911:24:1911:28 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1911:31:1911:35 | other | | file://:0:0:0:0 | & | +| main.rs:1911:31:1911:35 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1911:75:1913:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1911:75:1913:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1912:13:1912:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:13:1912:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1912:13:1912:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1912:14:1912:17 | self | | file://:0:0:0:0 | & | +| main.rs:1912:14:1912:17 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1912:14:1912:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:14:1912:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:23:1912:26 | self | | file://:0:0:0:0 | & | +| main.rs:1912:23:1912:26 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1912:23:1912:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:43:1912:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1912:43:1912:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:44:1912:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:45:1912:49 | other | | file://:0:0:0:0 | & | +| main.rs:1912:45:1912:49 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1912:45:1912:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:45:1912:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:55:1912:59 | other | | file://:0:0:0:0 | & | +| main.rs:1912:55:1912:59 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1912:55:1912:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1915:15:1915:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1915:15:1915:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1915:22:1915:26 | other | | file://:0:0:0:0 | & | +| main.rs:1915:22:1915:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1915:44:1917:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1916:13:1916:16 | self | | file://:0:0:0:0 | & | +| main.rs:1916:13:1916:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1916:13:1916:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:13:1916:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1916:13:1916:48 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:1916:22:1916:26 | other | | file://:0:0:0:0 | & | -| main.rs:1916:22:1916:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1916:44:1918:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1917:13:1917:16 | self | | file://:0:0:0:0 | & | -| main.rs:1917:13:1917:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1917:13:1917:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1917:13:1917:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1917:13:1917:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1917:22:1917:26 | other | | file://:0:0:0:0 | & | -| main.rs:1917:22:1917:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1917:22:1917:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1917:33:1917:36 | self | | file://:0:0:0:0 | & | -| main.rs:1917:33:1917:36 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1917:33:1917:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1917:33:1917:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1917:42:1917:46 | other | | file://:0:0:0:0 | & | -| main.rs:1917:42:1917:46 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1917:42:1917:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1920:15:1920:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1920:15:1920:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1920:22:1920:26 | other | | file://:0:0:0:0 | & | -| main.rs:1920:22:1920:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1920:44:1922:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1921:13:1921:16 | self | | file://:0:0:0:0 | & | -| main.rs:1921:13:1921:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:13:1921:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1921:13:1921:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1921:23:1921:27 | other | | file://:0:0:0:0 | & | -| main.rs:1921:23:1921:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1921:23:1921:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:34:1921:37 | self | | file://:0:0:0:0 | & | -| main.rs:1921:34:1921:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1921:34:1921:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:34:1921:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1921:44:1921:48 | other | | file://:0:0:0:0 | & | -| main.rs:1921:44:1921:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1921:44:1921:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:15:1924:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1924:15:1924:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1916:22:1916:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1916:22:1916:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:33:1916:36 | self | | file://:0:0:0:0 | & | +| main.rs:1916:33:1916:36 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1916:33:1916:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:33:1916:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1916:42:1916:46 | other | | file://:0:0:0:0 | & | +| main.rs:1916:42:1916:46 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1916:42:1916:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:15:1919:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1919:15:1919:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1919:22:1919:26 | other | | file://:0:0:0:0 | & | +| main.rs:1919:22:1919:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1919:44:1921:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1920:13:1920:16 | self | | file://:0:0:0:0 | & | +| main.rs:1920:13:1920:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1920:13:1920:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:13:1920:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1920:13:1920:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1920:23:1920:27 | other | | file://:0:0:0:0 | & | +| main.rs:1920:23:1920:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1920:23:1920:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:34:1920:37 | self | | file://:0:0:0:0 | & | +| main.rs:1920:34:1920:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1920:34:1920:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:34:1920:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1920:44:1920:48 | other | | file://:0:0:0:0 | & | +| main.rs:1920:44:1920:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1920:44:1920:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1923:15:1923:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1923:15:1923:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1923:22:1923:26 | other | | file://:0:0:0:0 | & | +| main.rs:1923:22:1923:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1923:44:1925:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1924:13:1924:16 | self | | file://:0:0:0:0 | & | +| main.rs:1924:13:1924:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1924:13:1924:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:13:1924:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1924:13:1924:48 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:1924:22:1924:26 | other | | file://:0:0:0:0 | & | -| main.rs:1924:22:1924:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1924:44:1926:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1925:13:1925:16 | self | | file://:0:0:0:0 | & | -| main.rs:1925:13:1925:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1925:13:1925:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:13:1925:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1925:13:1925:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1925:22:1925:26 | other | | file://:0:0:0:0 | & | -| main.rs:1925:22:1925:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1925:22:1925:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:33:1925:36 | self | | file://:0:0:0:0 | & | -| main.rs:1925:33:1925:36 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1925:33:1925:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:33:1925:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1925:42:1925:46 | other | | file://:0:0:0:0 | & | -| main.rs:1925:42:1925:46 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1925:42:1925:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:15:1928:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1928:15:1928:19 | SelfParam | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1928:22:1928:26 | other | | file://:0:0:0:0 | & | -| main.rs:1928:22:1928:26 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1928:44:1930:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1929:13:1929:16 | self | | file://:0:0:0:0 | & | -| main.rs:1929:13:1929:16 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1929:13:1929:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:13:1929:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1929:13:1929:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1929:23:1929:27 | other | | file://:0:0:0:0 | & | -| main.rs:1929:23:1929:27 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1929:23:1929:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:34:1929:37 | self | | file://:0:0:0:0 | & | -| main.rs:1929:34:1929:37 | self | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1929:34:1929:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1929:34:1929:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1929:44:1929:48 | other | | file://:0:0:0:0 | & | -| main.rs:1929:44:1929:48 | other | &T | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1929:44:1929:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1933:26:1933:26 | a | | main.rs:1933:18:1933:23 | T | -| main.rs:1933:32:1933:32 | b | | main.rs:1933:18:1933:23 | T | -| main.rs:1933:51:1935:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:1934:9:1934:9 | a | | main.rs:1933:18:1933:23 | T | -| main.rs:1934:9:1934:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:1934:13:1934:13 | b | | main.rs:1933:18:1933:23 | T | -| main.rs:1941:13:1941:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1924:22:1924:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1924:22:1924:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:33:1924:36 | self | | file://:0:0:0:0 | & | +| main.rs:1924:33:1924:36 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1924:33:1924:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1924:33:1924:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1924:42:1924:46 | other | | file://:0:0:0:0 | & | +| main.rs:1924:42:1924:46 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1924:42:1924:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1927:15:1927:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1927:15:1927:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1927:22:1927:26 | other | | file://:0:0:0:0 | & | +| main.rs:1927:22:1927:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1927:44:1929:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1928:13:1928:16 | self | | file://:0:0:0:0 | & | +| main.rs:1928:13:1928:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1928:13:1928:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:13:1928:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1928:13:1928:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1928:23:1928:27 | other | | file://:0:0:0:0 | & | +| main.rs:1928:23:1928:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1928:23:1928:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:34:1928:37 | self | | file://:0:0:0:0 | & | +| main.rs:1928:34:1928:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1928:34:1928:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:34:1928:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1928:44:1928:48 | other | | file://:0:0:0:0 | & | +| main.rs:1928:44:1928:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1928:44:1928:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:26:1932:26 | a | | main.rs:1932:18:1932:23 | T | +| main.rs:1932:32:1932:32 | b | | main.rs:1932:18:1932:23 | T | +| main.rs:1932:51:1934:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:1933:9:1933:9 | a | | main.rs:1932:18:1932:23 | T | +| main.rs:1933:9:1933:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:1933:13:1933:13 | b | | main.rs:1932:18:1932:23 | T | +| main.rs:1940:13:1940:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:22:1940:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:23:1940:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1940:23:1940:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:31:1940:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1941:13:1941:18 | i64_ne | | {EXTERNAL LOCATION} | bool | | main.rs:1941:22:1941:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1941:23:1941:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1941:23:1941:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1941:31:1941:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:13:1942:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:22:1942:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:23:1942:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:23:1942:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:31:1942:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:13:1943:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:22:1943:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:23:1943:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:23:1943:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:30:1943:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:13:1944:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1941:23:1941:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1941:23:1941:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1941:31:1941:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:13:1942:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:22:1942:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:23:1942:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:23:1942:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1942:30:1942:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:13:1943:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:22:1943:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:23:1943:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:23:1943:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1943:31:1943:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:13:1944:18 | i64_gt | | {EXTERNAL LOCATION} | bool | | main.rs:1944:22:1944:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:23:1944:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:23:1944:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:31:1944:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:13:1945:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:22:1945:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:23:1945:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:23:1945:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:30:1945:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1946:13:1946:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1946:22:1946:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1946:23:1946:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1946:23:1946:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1946:32:1946:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:13:1949:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:23:1949:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:23:1949:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:31:1949:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:13:1950:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:31:1950:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:13:1951:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:23:1951:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:23:1951:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:31:1951:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:13:1952:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:23:1952:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:23:1952:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:31:1952:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:13:1953:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:23:1953:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:23:1953:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:31:1953:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:39:1954:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:45:1954:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:17:1957:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:34:1957:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:9:1958:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:9:1958:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1958:27:1958:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1960:17:1960:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1960:34:1960:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1961:9:1961:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1961:9:1961:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1961:27:1961:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1963:17:1963:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1963:34:1963:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1964:9:1964:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1964:9:1964:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1964:27:1964:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:17:1966:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:34:1966:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1967:9:1967:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1967:9:1967:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1967:27:1967:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:17:1969:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:34:1969:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1970:9:1970:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1970:9:1970:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1970:27:1970:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:13:1973:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:26:1973:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:26:1973:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:34:1973:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:13:1974:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:25:1974:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:25:1974:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:33:1974:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:13:1975:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:26:1975:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:26:1975:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:34:1975:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:13:1976:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:23:1976:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:23:1976:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:32:1976:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1977:13:1977:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1977:23:1977:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1977:23:1977:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1977:32:1977:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:17:1980:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:37:1980:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:9:1981:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:9:1981:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1981:30:1981:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:17:1983:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:36:1983:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1984:9:1984:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1984:9:1984:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1984:29:1984:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:17:1986:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:37:1986:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:9:1987:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:9:1987:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1987:30:1987:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:17:1989:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:34:1989:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:9:1990:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:9:1990:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1990:28:1990:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1992:17:1992:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1992:34:1992:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1993:9:1993:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1993:9:1993:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1993:28:1993:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:13:1995:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:23:1995:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:24:1995:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1996:13:1996:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1996:23:1996:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1996:24:1996:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1999:13:1999:14 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1999:18:1999:36 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:1999:28:1999:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1999:28:1999:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1999:34:1999:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1999:34:1999:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:13:2000:14 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2000:18:2000:36 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2000:28:2000:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2000:28:2000:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:34:2000:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2000:34:2000:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2003:13:2003:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2003:23:2003:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2003:23:2003:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2003:29:2003:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2004:13:2004:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2004:23:2004:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2004:23:2004:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2004:29:2004:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2005:13:2005:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2005:23:2005:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2005:23:2005:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2005:28:2005:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2006:13:2006:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2006:23:2006:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2006:23:2006:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2006:29:2006:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2007:13:2007:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:23:2007:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2007:23:2007:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:28:2007:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2008:13:2008:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2008:23:2008:24 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2008:23:2008:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2008:29:2008:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2011:13:2011:20 | vec2_add | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2011:24:2011:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2011:24:2011:30 | ... + ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2011:29:2011:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2012:13:2012:20 | vec2_sub | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2012:24:2012:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2012:24:2012:30 | ... - ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2012:29:2012:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2013:13:2013:20 | vec2_mul | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2013:24:2013:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2013:24:2013:30 | ... * ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2013:29:2013:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2014:13:2014:20 | vec2_div | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2014:24:2014:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2014:24:2014:30 | ... / ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2014:29:2014:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2015:13:2015:20 | vec2_rem | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2015:24:2015:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2015:24:2015:30 | ... % ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2015:29:2015:30 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2018:17:2018:31 | vec2_add_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2018:35:2018:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2019:9:2019:23 | vec2_add_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2019:9:2019:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2019:28:2019:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2021:17:2021:31 | vec2_sub_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2021:35:2021:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2022:9:2022:23 | vec2_sub_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2022:9:2022:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2022:28:2022:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2024:17:2024:31 | vec2_mul_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2024:35:2024:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2025:9:2025:23 | vec2_mul_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2025:9:2025:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2025:28:2025:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2027:17:2027:31 | vec2_div_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2027:35:2027:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2028:9:2028:23 | vec2_div_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2028:9:2028:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2028:28:2028:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2030:17:2030:31 | vec2_rem_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2030:35:2030:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2031:9:2031:23 | vec2_rem_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2031:9:2031:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2031:28:2031:29 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2034:13:2034:23 | vec2_bitand | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2034:27:2034:28 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2034:27:2034:33 | ... & ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2034:32:2034:33 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2035:13:2035:22 | vec2_bitor | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2035:26:2035:27 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2035:26:2035:32 | ... \| ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2035:31:2035:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2036:13:2036:23 | vec2_bitxor | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2036:27:2036:28 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2036:27:2036:33 | ... ^ ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2036:32:2036:33 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2037:13:2037:20 | vec2_shl | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2037:24:2037:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2037:24:2037:33 | ... << ... | | main.rs:1696:5:1701:5 | Vec2 | +| main.rs:1944:23:1944:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:23:1944:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:30:1944:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:13:1945:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:22:1945:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:23:1945:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:23:1945:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1945:32:1945:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:13:1948:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:23:1948:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:23:1948:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:31:1948:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:13:1949:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:23:1949:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:23:1949:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:31:1949:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:13:1950:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:31:1950:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:13:1951:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:23:1951:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:23:1951:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:31:1951:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:13:1952:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:23:1952:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:23:1952:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:31:1952:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:39:1953:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:45:1953:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:17:1956:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:34:1956:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1957:9:1957:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1957:9:1957:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1957:27:1957:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1959:17:1959:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1959:34:1959:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1960:9:1960:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1960:9:1960:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1960:27:1960:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:17:1962:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:34:1962:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1963:9:1963:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1963:9:1963:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1963:27:1963:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:17:1965:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:34:1965:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:9:1966:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:9:1966:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1966:27:1966:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1968:17:1968:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1968:34:1968:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:9:1969:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:9:1969:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1969:27:1969:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:13:1972:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:26:1972:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:26:1972:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:34:1972:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:25:1973:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:25:1973:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:33:1973:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:13:1974:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:26:1974:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:26:1974:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1974:34:1974:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:13:1975:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:23:1975:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:23:1975:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1975:32:1975:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:13:1976:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:23:1976:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:23:1976:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1976:32:1976:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:17:1979:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:37:1979:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:9:1980:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:9:1980:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1980:30:1980:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:17:1982:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:36:1982:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:9:1983:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:9:1983:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1983:29:1983:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1985:17:1985:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1985:37:1985:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:9:1986:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:9:1986:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1986:30:1986:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:17:1988:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:34:1988:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:9:1989:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:9:1989:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1989:28:1989:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:17:1991:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:34:1991:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1992:9:1992:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1992:9:1992:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1992:28:1992:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:13:1994:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:23:1994:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:24:1994:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:13:1995:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:23:1995:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:24:1995:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:13:1998:14 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1998:18:1998:36 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1998:28:1998:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1998:28:1998:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:34:1998:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1998:34:1998:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:13:1999:14 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1999:18:1999:36 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:1999:28:1999:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1999:28:1999:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:34:1999:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1999:34:1999:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2002:13:2002:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2002:23:2002:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2002:23:2002:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2002:29:2002:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2003:13:2003:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2003:23:2003:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2003:23:2003:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2003:29:2003:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2004:13:2004:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2004:23:2004:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2004:23:2004:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2004:28:2004:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2005:13:2005:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2005:23:2005:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2005:23:2005:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2005:29:2005:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2006:13:2006:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2006:23:2006:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2006:23:2006:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2006:28:2006:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2007:13:2007:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:23:2007:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2007:23:2007:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:29:2007:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2010:13:2010:20 | vec2_add | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2010:24:2010:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2010:24:2010:30 | ... + ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2010:29:2010:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2011:13:2011:20 | vec2_sub | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2011:24:2011:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2011:24:2011:30 | ... - ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2011:29:2011:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2012:13:2012:20 | vec2_mul | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2012:24:2012:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2012:24:2012:30 | ... * ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2012:29:2012:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2013:13:2013:20 | vec2_div | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2013:24:2013:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2013:24:2013:30 | ... / ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2013:29:2013:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2014:13:2014:20 | vec2_rem | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2014:24:2014:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2014:24:2014:30 | ... % ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2014:29:2014:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2017:17:2017:31 | vec2_add_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2017:35:2017:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2018:9:2018:23 | vec2_add_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2018:9:2018:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2018:28:2018:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2020:17:2020:31 | vec2_sub_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2020:35:2020:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2021:9:2021:23 | vec2_sub_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2021:9:2021:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2021:28:2021:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2023:17:2023:31 | vec2_mul_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2023:35:2023:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2024:9:2024:23 | vec2_mul_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2024:9:2024:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2024:28:2024:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2026:17:2026:31 | vec2_div_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2026:35:2026:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2027:9:2027:23 | vec2_div_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2027:9:2027:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2027:28:2027:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2029:17:2029:31 | vec2_rem_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2029:35:2029:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2030:9:2030:23 | vec2_rem_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2030:9:2030:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2030:28:2030:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2033:13:2033:23 | vec2_bitand | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2033:27:2033:28 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2033:27:2033:33 | ... & ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2033:32:2033:33 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2034:13:2034:22 | vec2_bitor | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2034:26:2034:27 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2034:26:2034:32 | ... \| ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2034:31:2034:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2035:13:2035:23 | vec2_bitxor | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2035:27:2035:28 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2035:27:2035:33 | ... ^ ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2035:32:2035:33 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2036:13:2036:20 | vec2_shl | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2036:24:2036:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2036:24:2036:33 | ... << ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2036:30:2036:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2037:13:2037:20 | vec2_shr | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2037:24:2037:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2037:24:2037:33 | ... >> ... | | main.rs:1695:5:1700:5 | Vec2 | | main.rs:2037:30:2037:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2038:13:2038:20 | vec2_shr | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2038:24:2038:25 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2038:24:2038:33 | ... >> ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2038:30:2038:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2041:17:2041:34 | vec2_bitand_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2041:38:2041:39 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2042:9:2042:26 | vec2_bitand_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2042:9:2042:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2042:31:2042:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2044:17:2044:33 | vec2_bitor_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2044:37:2044:38 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2045:9:2045:25 | vec2_bitor_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2045:9:2045:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2045:30:2045:31 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2047:17:2047:34 | vec2_bitxor_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2047:38:2047:39 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2048:9:2048:26 | vec2_bitxor_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2048:9:2048:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2048:31:2048:32 | v2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2050:17:2050:31 | vec2_shl_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2050:35:2050:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2051:9:2051:23 | vec2_shl_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2051:9:2051:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2051:29:2051:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2053:17:2053:31 | vec2_shr_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2053:35:2053:36 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2054:9:2054:23 | vec2_shr_assign | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2054:9:2054:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2054:29:2054:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2057:13:2057:20 | vec2_neg | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2057:24:2057:26 | - ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2057:25:2057:26 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2058:13:2058:20 | vec2_not | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2058:24:2058:26 | ! ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2058:25:2058:26 | v1 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2061:13:2061:24 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2061:28:2061:45 | ...::default(...) | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2062:13:2062:26 | vec2_zero_plus | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2062:30:2062:48 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2062:30:2062:63 | ... + ... | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2062:40:2062:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2062:40:2062:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2062:46:2062:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2062:46:2062:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2062:52:2062:63 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2066:13:2066:24 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2066:28:2066:45 | ...::default(...) | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2067:13:2067:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2067:30:2067:48 | Vec2 {...} | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2067:30:2067:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2067:40:2067:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2067:40:2067:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2067:46:2067:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2067:46:2067:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2067:53:2067:64 | default_vec2 | | main.rs:1696:5:1701:5 | Vec2 | -| main.rs:2077:18:2077:21 | SelfParam | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2080:25:2082:5 | { ... } | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2081:9:2081:10 | S1 | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2084:41:2086:5 | { ... } | | main.rs:2084:16:2084:39 | impl ... | -| main.rs:2085:9:2085:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2085:9:2085:20 | { ... } | Output | main.rs:2074:5:2074:14 | S1 | -| main.rs:2085:17:2085:18 | S1 | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2094:13:2094:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2094:13:2094:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2094:13:2094:42 | SelfParam | Ptr.&T | main.rs:2088:5:2088:14 | S2 | -| main.rs:2095:13:2095:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2095:13:2095:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2096:44:2098:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2096:44:2098:9 | { ... } | T | main.rs:2074:5:2074:14 | S1 | -| main.rs:2097:13:2097:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2097:13:2097:38 | ...::Ready(...) | T | main.rs:2074:5:2074:14 | S1 | -| main.rs:2097:36:2097:37 | S1 | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2101:41:2103:5 | { ... } | | main.rs:2101:16:2101:39 | impl ... | -| main.rs:2102:9:2102:10 | S2 | | main.rs:2088:5:2088:14 | S2 | -| main.rs:2102:9:2102:10 | S2 | | main.rs:2101:16:2101:39 | impl ... | -| main.rs:2106:9:2106:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2106:9:2106:12 | f1(...) | Output | main.rs:2074:5:2074:14 | S1 | -| main.rs:2106:9:2106:18 | await ... | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2107:9:2107:12 | f2(...) | | main.rs:2084:16:2084:39 | impl ... | -| main.rs:2107:9:2107:18 | await ... | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2108:9:2108:12 | f3(...) | | main.rs:2101:16:2101:39 | impl ... | -| main.rs:2108:9:2108:18 | await ... | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2109:9:2109:10 | S2 | | main.rs:2088:5:2088:14 | S2 | -| main.rs:2109:9:2109:16 | await S2 | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2110:13:2110:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2110:13:2110:13 | b | Output | main.rs:2074:5:2074:14 | S1 | -| main.rs:2110:17:2110:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2110:17:2110:28 | { ... } | Output | main.rs:2074:5:2074:14 | S1 | -| main.rs:2110:25:2110:26 | S1 | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2111:9:2111:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2111:9:2111:9 | b | Output | main.rs:2074:5:2074:14 | S1 | -| main.rs:2111:9:2111:15 | await b | | main.rs:2074:5:2074:14 | S1 | -| main.rs:2122:15:2122:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2122:15:2122:19 | SelfParam | &T | main.rs:2121:5:2123:5 | Self [trait Trait1] | -| main.rs:2126:15:2126:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2126:15:2126:19 | SelfParam | &T | main.rs:2125:5:2127:5 | Self [trait Trait2] | -| main.rs:2130:15:2130:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2130:15:2130:19 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | -| main.rs:2134:15:2134:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2134:15:2134:19 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | -| main.rs:2137:37:2139:5 | { ... } | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2138:9:2138:10 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2138:9:2138:10 | S1 | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2142:18:2142:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2142:18:2142:22 | SelfParam | &T | main.rs:2141:5:2143:5 | Self [trait MyTrait] | -| main.rs:2146:18:2146:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2146:18:2146:22 | SelfParam | &T | main.rs:2116:5:2117:14 | S1 | -| main.rs:2146:31:2148:9 | { ... } | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2147:13:2147:14 | S2 | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2152:18:2152:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2152:18:2152:22 | SelfParam | &T | main.rs:2119:5:2119:22 | S3 | -| main.rs:2152:18:2152:22 | SelfParam | &T.T3 | main.rs:2151:10:2151:17 | T | -| main.rs:2152:30:2155:9 | { ... } | | main.rs:2151:10:2151:17 | T | -| main.rs:2153:17:2153:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2153:17:2153:21 | S3(...) | | main.rs:2119:5:2119:22 | S3 | -| main.rs:2153:17:2153:21 | S3(...) | &T | main.rs:2119:5:2119:22 | S3 | -| main.rs:2153:17:2153:21 | S3(...) | &T.T3 | main.rs:2151:10:2151:17 | T | -| main.rs:2153:25:2153:28 | self | | file://:0:0:0:0 | & | -| main.rs:2153:25:2153:28 | self | &T | main.rs:2119:5:2119:22 | S3 | -| main.rs:2153:25:2153:28 | self | &T.T3 | main.rs:2151:10:2151:17 | T | -| main.rs:2154:13:2154:21 | t.clone() | | main.rs:2151:10:2151:17 | T | -| main.rs:2158:45:2160:5 | { ... } | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2159:9:2159:10 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2159:9:2159:10 | S1 | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2162:41:2162:41 | t | | main.rs:2162:26:2162:38 | B | -| main.rs:2162:52:2164:5 | { ... } | | main.rs:2162:23:2162:23 | A | -| main.rs:2163:9:2163:9 | t | | main.rs:2162:26:2162:38 | B | -| main.rs:2163:9:2163:17 | t.get_a() | | main.rs:2162:23:2162:23 | A | -| main.rs:2166:34:2166:34 | x | | main.rs:2166:24:2166:31 | T | -| main.rs:2166:59:2168:5 | { ... } | | main.rs:2166:43:2166:57 | impl ... | -| main.rs:2166:59:2168:5 | { ... } | impl(T) | main.rs:2166:24:2166:31 | T | -| main.rs:2167:9:2167:13 | S3(...) | | main.rs:2119:5:2119:22 | S3 | -| main.rs:2167:9:2167:13 | S3(...) | | main.rs:2166:43:2166:57 | impl ... | -| main.rs:2167:9:2167:13 | S3(...) | T3 | main.rs:2166:24:2166:31 | T | -| main.rs:2167:9:2167:13 | S3(...) | impl(T) | main.rs:2166:24:2166:31 | T | -| main.rs:2167:12:2167:12 | x | | main.rs:2166:24:2166:31 | T | -| main.rs:2170:34:2170:34 | x | | main.rs:2170:24:2170:31 | T | -| main.rs:2170:67:2172:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2170:67:2172:5 | { ... } | T | main.rs:2170:50:2170:64 | impl ... | -| main.rs:2170:67:2172:5 | { ... } | T.impl(T) | main.rs:2170:24:2170:31 | T | -| main.rs:2171:9:2171:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2171:9:2171:19 | Some(...) | T | main.rs:2119:5:2119:22 | S3 | -| main.rs:2171:9:2171:19 | Some(...) | T | main.rs:2170:50:2170:64 | impl ... | -| main.rs:2171:9:2171:19 | Some(...) | T.T3 | main.rs:2170:24:2170:31 | T | -| main.rs:2171:9:2171:19 | Some(...) | T.impl(T) | main.rs:2170:24:2170:31 | T | -| main.rs:2171:14:2171:18 | S3(...) | | main.rs:2119:5:2119:22 | S3 | -| main.rs:2171:14:2171:18 | S3(...) | | main.rs:2170:50:2170:64 | impl ... | -| main.rs:2171:14:2171:18 | S3(...) | T3 | main.rs:2170:24:2170:31 | T | -| main.rs:2171:14:2171:18 | S3(...) | impl(T) | main.rs:2170:24:2170:31 | T | -| main.rs:2171:17:2171:17 | x | | main.rs:2170:24:2170:31 | T | -| main.rs:2174:34:2174:34 | x | | main.rs:2174:24:2174:31 | T | -| main.rs:2174:78:2176:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2174:78:2176:5 | { ... } | 0(2) | main.rs:2174:44:2174:58 | impl ... | -| main.rs:2174:78:2176:5 | { ... } | 0(2).impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2174:78:2176:5 | { ... } | 1(2) | main.rs:2174:61:2174:75 | impl ... | -| main.rs:2174:78:2176:5 | { ... } | 1(2).impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2175:9:2175:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2175:9:2175:30 | TupleExpr | 0(2) | main.rs:2119:5:2119:22 | S3 | -| main.rs:2175:9:2175:30 | TupleExpr | 0(2) | main.rs:2174:44:2174:58 | impl ... | -| main.rs:2175:9:2175:30 | TupleExpr | 0(2).T3 | main.rs:2174:24:2174:31 | T | -| main.rs:2175:9:2175:30 | TupleExpr | 0(2).impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2175:9:2175:30 | TupleExpr | 1(2) | main.rs:2119:5:2119:22 | S3 | -| main.rs:2175:9:2175:30 | TupleExpr | 1(2) | main.rs:2174:61:2174:75 | impl ... | -| main.rs:2175:9:2175:30 | TupleExpr | 1(2).T3 | main.rs:2174:24:2174:31 | T | -| main.rs:2175:9:2175:30 | TupleExpr | 1(2).impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2175:10:2175:22 | S3(...) | | main.rs:2119:5:2119:22 | S3 | -| main.rs:2175:10:2175:22 | S3(...) | | main.rs:2174:44:2174:58 | impl ... | -| main.rs:2175:10:2175:22 | S3(...) | T3 | main.rs:2174:24:2174:31 | T | -| main.rs:2175:10:2175:22 | S3(...) | impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2175:13:2175:13 | x | | main.rs:2174:24:2174:31 | T | -| main.rs:2175:13:2175:21 | x.clone() | | main.rs:2174:24:2174:31 | T | -| main.rs:2175:25:2175:29 | S3(...) | | main.rs:2119:5:2119:22 | S3 | -| main.rs:2175:25:2175:29 | S3(...) | | main.rs:2174:61:2174:75 | impl ... | -| main.rs:2175:25:2175:29 | S3(...) | T3 | main.rs:2174:24:2174:31 | T | -| main.rs:2175:25:2175:29 | S3(...) | impl(T) | main.rs:2174:24:2174:31 | T | -| main.rs:2175:28:2175:28 | x | | main.rs:2174:24:2174:31 | T | -| main.rs:2178:26:2178:26 | t | | main.rs:2178:29:2178:43 | impl ... | -| main.rs:2178:51:2180:5 | { ... } | | main.rs:2178:23:2178:23 | A | -| main.rs:2179:9:2179:9 | t | | main.rs:2178:29:2178:43 | impl ... | -| main.rs:2179:9:2179:17 | t.get_a() | | main.rs:2178:23:2178:23 | A | -| main.rs:2183:13:2183:13 | x | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2183:17:2183:20 | f1(...) | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2184:9:2184:9 | x | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2185:9:2185:9 | x | | main.rs:2137:16:2137:35 | impl ... + ... | -| main.rs:2186:13:2186:13 | a | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2186:17:2186:32 | get_a_my_trait(...) | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2187:13:2187:13 | b | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2187:17:2187:33 | uses_my_trait1(...) | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2187:32:2187:32 | a | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2188:13:2188:13 | a | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2188:17:2188:32 | get_a_my_trait(...) | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2189:13:2189:13 | c | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2189:17:2189:33 | uses_my_trait2(...) | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2189:32:2189:32 | a | | main.rs:2158:28:2158:43 | impl ... | -| main.rs:2190:13:2190:13 | d | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2190:17:2190:34 | uses_my_trait2(...) | | main.rs:2118:5:2118:14 | S2 | -| main.rs:2190:32:2190:33 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2191:13:2191:13 | e | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2191:17:2191:35 | get_a_my_trait2(...) | | main.rs:2166:43:2166:57 | impl ... | -| main.rs:2191:17:2191:35 | get_a_my_trait2(...) | impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2191:17:2191:43 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2191:33:2191:34 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2194:13:2194:13 | f | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | T | main.rs:2170:50:2170:64 | impl ... | -| main.rs:2194:17:2194:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2194:17:2194:44 | ... .unwrap() | | main.rs:2170:50:2170:64 | impl ... | -| main.rs:2194:17:2194:44 | ... .unwrap() | impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2194:17:2194:52 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2194:33:2194:34 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:13:2195:13 | g | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 0(2) | main.rs:2174:44:2174:58 | impl ... | -| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 1(2) | main.rs:2174:61:2174:75 | impl ... | -| main.rs:2195:17:2195:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:17:2195:37 | ... .0 | | main.rs:2174:44:2174:58 | impl ... | -| main.rs:2195:17:2195:37 | ... .0 | impl(T) | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:17:2195:45 | ... .get_a() | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2195:33:2195:34 | S1 | | main.rs:2116:5:2117:14 | S1 | -| main.rs:2206:16:2206:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2206:16:2206:20 | SelfParam | &T | main.rs:2202:5:2203:13 | S | -| main.rs:2206:31:2208:9 | { ... } | | main.rs:2202:5:2203:13 | S | -| main.rs:2207:13:2207:13 | S | | main.rs:2202:5:2203:13 | S | -| main.rs:2217:26:2219:9 | { ... } | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2217:26:2219:9 | { ... } | T | main.rs:2216:10:2216:10 | T | -| main.rs:2218:13:2218:38 | MyVec {...} | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2218:13:2218:38 | MyVec {...} | T | main.rs:2216:10:2216:10 | T | -| main.rs:2218:27:2218:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2218:27:2218:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2218:27:2218:36 | ...::new(...) | T | main.rs:2216:10:2216:10 | T | -| main.rs:2221:17:2221:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2221:17:2221:25 | SelfParam | &T | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2221:17:2221:25 | SelfParam | &T.T | main.rs:2216:10:2216:10 | T | -| main.rs:2221:28:2221:32 | value | | main.rs:2216:10:2216:10 | T | -| main.rs:2222:13:2222:16 | self | | file://:0:0:0:0 | & | -| main.rs:2222:13:2222:16 | self | &T | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2222:13:2222:16 | self | &T.T | main.rs:2216:10:2216:10 | T | -| main.rs:2222:13:2222:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2222:13:2222:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2222:13:2222:21 | self.data | T | main.rs:2216:10:2216:10 | T | -| main.rs:2222:28:2222:32 | value | | main.rs:2216:10:2216:10 | T | -| main.rs:2230:18:2230:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2230:18:2230:22 | SelfParam | &T | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2230:18:2230:22 | SelfParam | &T.T | main.rs:2226:10:2226:10 | T | -| main.rs:2230:25:2230:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2230:56:2232:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2230:56:2232:9 | { ... } | &T | main.rs:2226:10:2226:10 | T | -| main.rs:2231:13:2231:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2231:13:2231:29 | &... | &T | main.rs:2226:10:2226:10 | T | -| main.rs:2231:14:2231:17 | self | | file://:0:0:0:0 | & | -| main.rs:2231:14:2231:17 | self | &T | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2231:14:2231:17 | self | &T.T | main.rs:2226:10:2226:10 | T | -| main.rs:2231:14:2231:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2231:14:2231:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2231:14:2231:22 | self.data | T | main.rs:2226:10:2226:10 | T | -| main.rs:2231:14:2231:29 | ...[index] | | main.rs:2226:10:2226:10 | T | -| main.rs:2231:24:2231:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2235:22:2235:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2235:22:2235:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2235:22:2235:26 | slice | &T.[T] | main.rs:2202:5:2203:13 | S | -| main.rs:2236:13:2236:13 | x | | main.rs:2202:5:2203:13 | S | -| main.rs:2236:17:2236:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2236:17:2236:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2236:17:2236:21 | slice | &T.[T] | main.rs:2202:5:2203:13 | S | -| main.rs:2236:17:2236:24 | slice[0] | | main.rs:2202:5:2203:13 | S | -| main.rs:2236:17:2236:30 | ... .foo() | | main.rs:2202:5:2203:13 | S | -| main.rs:2236:23:2236:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2239:37:2239:37 | a | | main.rs:2239:20:2239:34 | T | -| main.rs:2239:43:2239:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2242:5:2244:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2243:9:2243:9 | a | | main.rs:2239:20:2239:34 | T | -| main.rs:2243:9:2243:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2243:11:2243:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2247:17:2247:19 | vec | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2247:17:2247:19 | vec | T | main.rs:2202:5:2203:13 | S | -| main.rs:2247:23:2247:34 | ...::new(...) | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2247:23:2247:34 | ...::new(...) | T | main.rs:2202:5:2203:13 | S | -| main.rs:2248:9:2248:11 | vec | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2248:9:2248:11 | vec | T | main.rs:2202:5:2203:13 | S | -| main.rs:2248:18:2248:18 | S | | main.rs:2202:5:2203:13 | S | -| main.rs:2249:9:2249:11 | vec | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2249:9:2249:11 | vec | T | main.rs:2202:5:2203:13 | S | -| main.rs:2249:9:2249:14 | vec[0] | | main.rs:2202:5:2203:13 | S | -| main.rs:2249:9:2249:20 | ... .foo() | | main.rs:2202:5:2203:13 | S | -| main.rs:2249:13:2249:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2249:13:2249:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2251:13:2251:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2251:13:2251:14 | xs | [T;...] | main.rs:2202:5:2203:13 | S | -| main.rs:2251:21:2251:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2251:26:2251:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2251:26:2251:28 | [...] | [T;...] | main.rs:2202:5:2203:13 | S | -| main.rs:2251:27:2251:27 | S | | main.rs:2202:5:2203:13 | S | -| main.rs:2252:13:2252:13 | x | | main.rs:2202:5:2203:13 | S | -| main.rs:2252:17:2252:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2252:17:2252:18 | xs | [T;...] | main.rs:2202:5:2203:13 | S | -| main.rs:2252:17:2252:21 | xs[0] | | main.rs:2202:5:2203:13 | S | -| main.rs:2252:17:2252:27 | ... .foo() | | main.rs:2202:5:2203:13 | S | -| main.rs:2252:20:2252:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2254:29:2254:31 | vec | | main.rs:2211:5:2214:5 | MyVec | -| main.rs:2254:29:2254:31 | vec | T | main.rs:2202:5:2203:13 | S | -| main.rs:2254:34:2254:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2254:34:2254:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2256:23:2256:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2256:23:2256:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2256:23:2256:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2256:23:2256:25 | &xs | &T.[T;...] | main.rs:2202:5:2203:13 | S | -| main.rs:2256:23:2256:25 | &xs | &T.[T] | main.rs:2202:5:2203:13 | S | -| main.rs:2256:24:2256:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2256:24:2256:25 | xs | [T;...] | main.rs:2202:5:2203:13 | S | -| main.rs:2262:13:2262:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2262:17:2262:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2262:25:2262:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2262:25:2262:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2262:25:2262:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2262:25:2262:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2262:25:2262:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2262:25:2262:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2262:25:2262:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2262:38:2262:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2262:38:2262:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2271:19:2271:22 | SelfParam | | main.rs:2267:5:2272:5 | Self [trait MyAdd] | -| main.rs:2271:25:2271:27 | rhs | | main.rs:2267:17:2267:26 | Rhs | -| main.rs:2278:19:2278:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2278:25:2278:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2278:45:2280:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2279:13:2279:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2287:19:2287:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2287:25:2287:29 | value | | file://:0:0:0:0 | & | -| main.rs:2287:25:2287:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2287:46:2289:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2288:13:2288:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2288:14:2288:18 | value | | file://:0:0:0:0 | & | -| main.rs:2288:14:2288:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:19:2296:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:25:2296:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2296:46:2302:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:13:2301:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2297:13:2301:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:16:2297:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2297:22:2299:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2297:22:2299:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:17:2298:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2298:17:2298:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2299:20:2301:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2299:20:2301:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2300:17:2300:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2300:17:2300:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2311:19:2311:22 | SelfParam | | main.rs:2305:5:2305:19 | S | -| main.rs:2311:19:2311:22 | SelfParam | T | main.rs:2307:10:2307:17 | T | -| main.rs:2311:25:2311:29 | other | | main.rs:2305:5:2305:19 | S | -| main.rs:2311:25:2311:29 | other | T | main.rs:2307:10:2307:17 | T | -| main.rs:2311:54:2313:9 | { ... } | | main.rs:2305:5:2305:19 | S | -| main.rs:2311:54:2313:9 | { ... } | T | main.rs:2268:9:2268:20 | Output | -| main.rs:2312:13:2312:39 | S(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2312:13:2312:39 | S(...) | T | main.rs:2268:9:2268:20 | Output | -| main.rs:2312:15:2312:22 | (...) | | main.rs:2307:10:2307:17 | T | -| main.rs:2312:15:2312:38 | ... .my_add(...) | | main.rs:2268:9:2268:20 | Output | -| main.rs:2312:16:2312:19 | self | | main.rs:2305:5:2305:19 | S | -| main.rs:2312:16:2312:19 | self | T | main.rs:2307:10:2307:17 | T | -| main.rs:2312:16:2312:21 | self.0 | | main.rs:2307:10:2307:17 | T | -| main.rs:2312:31:2312:35 | other | | main.rs:2305:5:2305:19 | S | -| main.rs:2312:31:2312:35 | other | T | main.rs:2307:10:2307:17 | T | -| main.rs:2312:31:2312:37 | other.0 | | main.rs:2307:10:2307:17 | T | -| main.rs:2320:19:2320:22 | SelfParam | | main.rs:2305:5:2305:19 | S | -| main.rs:2320:19:2320:22 | SelfParam | T | main.rs:2316:10:2316:17 | T | -| main.rs:2320:25:2320:29 | other | | main.rs:2316:10:2316:17 | T | -| main.rs:2320:51:2322:9 | { ... } | | main.rs:2305:5:2305:19 | S | -| main.rs:2320:51:2322:9 | { ... } | T | main.rs:2268:9:2268:20 | Output | -| main.rs:2321:13:2321:37 | S(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2321:13:2321:37 | S(...) | T | main.rs:2268:9:2268:20 | Output | -| main.rs:2321:15:2321:22 | (...) | | main.rs:2316:10:2316:17 | T | -| main.rs:2321:15:2321:36 | ... .my_add(...) | | main.rs:2268:9:2268:20 | Output | -| main.rs:2321:16:2321:19 | self | | main.rs:2305:5:2305:19 | S | -| main.rs:2321:16:2321:19 | self | T | main.rs:2316:10:2316:17 | T | -| main.rs:2321:16:2321:21 | self.0 | | main.rs:2316:10:2316:17 | T | -| main.rs:2321:31:2321:35 | other | | main.rs:2316:10:2316:17 | T | -| main.rs:2332:19:2332:22 | SelfParam | | main.rs:2305:5:2305:19 | S | -| main.rs:2332:19:2332:22 | SelfParam | T | main.rs:2325:14:2325:14 | T | -| main.rs:2332:25:2332:29 | other | | file://:0:0:0:0 | & | -| main.rs:2332:25:2332:29 | other | &T | main.rs:2325:14:2325:14 | T | -| main.rs:2332:55:2334:9 | { ... } | | main.rs:2305:5:2305:19 | S | -| main.rs:2333:13:2333:37 | S(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2333:15:2333:22 | (...) | | main.rs:2325:14:2325:14 | T | -| main.rs:2333:16:2333:19 | self | | main.rs:2305:5:2305:19 | S | -| main.rs:2333:16:2333:19 | self | T | main.rs:2325:14:2325:14 | T | -| main.rs:2333:16:2333:21 | self.0 | | main.rs:2325:14:2325:14 | T | -| main.rs:2333:31:2333:35 | other | | file://:0:0:0:0 | & | -| main.rs:2333:31:2333:35 | other | &T | main.rs:2325:14:2325:14 | T | -| main.rs:2339:20:2339:24 | value | | main.rs:2337:18:2337:18 | T | -| main.rs:2344:20:2344:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2344:40:2346:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2345:13:2345:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2351:20:2351:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2351:41:2357:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2352:13:2356:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:13:2356:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2352:16:2352:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2352:22:2354:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:22:2354:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2353:17:2353:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2353:17:2353:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2354:20:2356:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:20:2356:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2355:17:2355:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2355:17:2355:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2362:21:2362:25 | value | | main.rs:2360:19:2360:19 | T | -| main.rs:2362:31:2362:31 | x | | main.rs:2360:5:2363:5 | Self [trait MyFrom2] | -| main.rs:2367:21:2367:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2367:33:2367:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2367:48:2369:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2368:13:2368:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2374:21:2374:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2374:34:2374:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2374:49:2380:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2375:13:2379:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2375:16:2375:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2375:22:2377:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2376:17:2376:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2377:20:2379:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2378:17:2378:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2385:15:2385:15 | x | | main.rs:2383:5:2389:5 | Self [trait MySelfTrait] | -| main.rs:2388:15:2388:15 | x | | main.rs:2383:5:2389:5 | Self [trait MySelfTrait] | -| main.rs:2393:15:2393:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:31:2395:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:13:2394:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:13:2394:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:17:2394:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2398:15:2398:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2398:32:2400:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2399:13:2399:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2399:13:2399:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2399:17:2399:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:15:2405:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2405:31:2407:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2406:13:2406:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2406:13:2406:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2410:15:2410:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2410:32:2412:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2411:13:2411:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2416:13:2416:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:22:2416:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:22:2416:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:17:2040:34 | vec2_bitand_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2040:38:2040:39 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2041:9:2041:26 | vec2_bitand_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2041:9:2041:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2041:31:2041:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2043:17:2043:33 | vec2_bitor_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2043:37:2043:38 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2044:9:2044:25 | vec2_bitor_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2044:9:2044:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2044:30:2044:31 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2046:17:2046:34 | vec2_bitxor_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2046:38:2046:39 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2047:9:2047:26 | vec2_bitxor_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2047:9:2047:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2047:31:2047:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2049:17:2049:31 | vec2_shl_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2049:35:2049:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2050:9:2050:23 | vec2_shl_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2050:9:2050:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2050:29:2050:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2052:17:2052:31 | vec2_shr_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2052:35:2052:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2053:9:2053:23 | vec2_shr_assign | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2053:9:2053:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2053:29:2053:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2056:13:2056:20 | vec2_neg | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2056:24:2056:26 | - ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2056:25:2056:26 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2057:13:2057:20 | vec2_not | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2057:24:2057:26 | ! ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2057:25:2057:26 | v1 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2060:13:2060:24 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2060:28:2060:45 | ...::default(...) | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2061:13:2061:26 | vec2_zero_plus | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2061:30:2061:48 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2061:30:2061:63 | ... + ... | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2061:40:2061:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2061:40:2061:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2061:46:2061:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2061:46:2061:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2061:52:2061:63 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2065:13:2065:24 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2065:28:2065:45 | ...::default(...) | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2066:13:2066:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2066:30:2066:48 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2066:30:2066:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2066:40:2066:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2066:40:2066:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2066:46:2066:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2066:46:2066:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2066:53:2066:64 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | +| main.rs:2076:18:2076:21 | SelfParam | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2079:25:2081:5 | { ... } | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2080:9:2080:10 | S1 | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2083:41:2085:5 | { ... } | | main.rs:2083:16:2083:39 | impl ... | +| main.rs:2084:9:2084:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2084:9:2084:20 | { ... } | Output | main.rs:2073:5:2073:14 | S1 | +| main.rs:2084:17:2084:18 | S1 | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2093:13:2093:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2093:13:2093:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2093:13:2093:42 | SelfParam | Ptr.&T | main.rs:2087:5:2087:14 | S2 | +| main.rs:2094:13:2094:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2094:13:2094:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2095:44:2097:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2095:44:2097:9 | { ... } | T | main.rs:2073:5:2073:14 | S1 | +| main.rs:2096:13:2096:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2096:13:2096:38 | ...::Ready(...) | T | main.rs:2073:5:2073:14 | S1 | +| main.rs:2096:36:2096:37 | S1 | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2100:41:2102:5 | { ... } | | main.rs:2100:16:2100:39 | impl ... | +| main.rs:2101:9:2101:10 | S2 | | main.rs:2087:5:2087:14 | S2 | +| main.rs:2101:9:2101:10 | S2 | | main.rs:2100:16:2100:39 | impl ... | +| main.rs:2105:9:2105:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2105:9:2105:12 | f1(...) | Output | main.rs:2073:5:2073:14 | S1 | +| main.rs:2105:9:2105:18 | await ... | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2106:9:2106:12 | f2(...) | | main.rs:2083:16:2083:39 | impl ... | +| main.rs:2106:9:2106:18 | await ... | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2107:9:2107:12 | f3(...) | | main.rs:2100:16:2100:39 | impl ... | +| main.rs:2107:9:2107:18 | await ... | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2108:9:2108:10 | S2 | | main.rs:2087:5:2087:14 | S2 | +| main.rs:2108:9:2108:16 | await S2 | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2109:13:2109:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2109:13:2109:13 | b | Output | main.rs:2073:5:2073:14 | S1 | +| main.rs:2109:17:2109:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2109:17:2109:28 | { ... } | Output | main.rs:2073:5:2073:14 | S1 | +| main.rs:2109:25:2109:26 | S1 | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2110:9:2110:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2110:9:2110:9 | b | Output | main.rs:2073:5:2073:14 | S1 | +| main.rs:2110:9:2110:15 | await b | | main.rs:2073:5:2073:14 | S1 | +| main.rs:2121:15:2121:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2121:15:2121:19 | SelfParam | &T | main.rs:2120:5:2122:5 | Self [trait Trait1] | +| main.rs:2125:15:2125:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2125:15:2125:19 | SelfParam | &T | main.rs:2124:5:2126:5 | Self [trait Trait2] | +| main.rs:2129:15:2129:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2129:15:2129:19 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | +| main.rs:2133:15:2133:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2133:15:2133:19 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | +| main.rs:2136:37:2138:5 | { ... } | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2137:9:2137:10 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2137:9:2137:10 | S1 | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2141:18:2141:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2141:18:2141:22 | SelfParam | &T | main.rs:2140:5:2142:5 | Self [trait MyTrait] | +| main.rs:2145:18:2145:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2145:18:2145:22 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | +| main.rs:2145:31:2147:9 | { ... } | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2146:13:2146:14 | S2 | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2151:18:2151:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2151:18:2151:22 | SelfParam | &T | main.rs:2118:5:2118:22 | S3 | +| main.rs:2151:18:2151:22 | SelfParam | &T.T3 | main.rs:2150:10:2150:17 | T | +| main.rs:2151:30:2154:9 | { ... } | | main.rs:2150:10:2150:17 | T | +| main.rs:2152:17:2152:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2152:17:2152:21 | S3(...) | | main.rs:2118:5:2118:22 | S3 | +| main.rs:2152:17:2152:21 | S3(...) | &T | main.rs:2118:5:2118:22 | S3 | +| main.rs:2152:17:2152:21 | S3(...) | &T.T3 | main.rs:2150:10:2150:17 | T | +| main.rs:2152:25:2152:28 | self | | file://:0:0:0:0 | & | +| main.rs:2152:25:2152:28 | self | &T | main.rs:2118:5:2118:22 | S3 | +| main.rs:2152:25:2152:28 | self | &T.T3 | main.rs:2150:10:2150:17 | T | +| main.rs:2153:13:2153:21 | t.clone() | | main.rs:2150:10:2150:17 | T | +| main.rs:2157:45:2159:5 | { ... } | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2158:9:2158:10 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2158:9:2158:10 | S1 | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2161:41:2161:41 | t | | main.rs:2161:26:2161:38 | B | +| main.rs:2161:52:2163:5 | { ... } | | main.rs:2161:23:2161:23 | A | +| main.rs:2162:9:2162:9 | t | | main.rs:2161:26:2161:38 | B | +| main.rs:2162:9:2162:17 | t.get_a() | | main.rs:2161:23:2161:23 | A | +| main.rs:2165:34:2165:34 | x | | main.rs:2165:24:2165:31 | T | +| main.rs:2165:59:2167:5 | { ... } | | main.rs:2165:43:2165:57 | impl ... | +| main.rs:2165:59:2167:5 | { ... } | impl(T) | main.rs:2165:24:2165:31 | T | +| main.rs:2166:9:2166:13 | S3(...) | | main.rs:2118:5:2118:22 | S3 | +| main.rs:2166:9:2166:13 | S3(...) | | main.rs:2165:43:2165:57 | impl ... | +| main.rs:2166:9:2166:13 | S3(...) | T3 | main.rs:2165:24:2165:31 | T | +| main.rs:2166:9:2166:13 | S3(...) | impl(T) | main.rs:2165:24:2165:31 | T | +| main.rs:2166:12:2166:12 | x | | main.rs:2165:24:2165:31 | T | +| main.rs:2169:34:2169:34 | x | | main.rs:2169:24:2169:31 | T | +| main.rs:2169:67:2171:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2169:67:2171:5 | { ... } | T | main.rs:2169:50:2169:64 | impl ... | +| main.rs:2169:67:2171:5 | { ... } | T.impl(T) | main.rs:2169:24:2169:31 | T | +| main.rs:2170:9:2170:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2170:9:2170:19 | Some(...) | T | main.rs:2118:5:2118:22 | S3 | +| main.rs:2170:9:2170:19 | Some(...) | T | main.rs:2169:50:2169:64 | impl ... | +| main.rs:2170:9:2170:19 | Some(...) | T.T3 | main.rs:2169:24:2169:31 | T | +| main.rs:2170:9:2170:19 | Some(...) | T.impl(T) | main.rs:2169:24:2169:31 | T | +| main.rs:2170:14:2170:18 | S3(...) | | main.rs:2118:5:2118:22 | S3 | +| main.rs:2170:14:2170:18 | S3(...) | | main.rs:2169:50:2169:64 | impl ... | +| main.rs:2170:14:2170:18 | S3(...) | T3 | main.rs:2169:24:2169:31 | T | +| main.rs:2170:14:2170:18 | S3(...) | impl(T) | main.rs:2169:24:2169:31 | T | +| main.rs:2170:17:2170:17 | x | | main.rs:2169:24:2169:31 | T | +| main.rs:2173:34:2173:34 | x | | main.rs:2173:24:2173:31 | T | +| main.rs:2173:78:2175:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2173:78:2175:5 | { ... } | 0(2) | main.rs:2173:44:2173:58 | impl ... | +| main.rs:2173:78:2175:5 | { ... } | 0(2).impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2173:78:2175:5 | { ... } | 1(2) | main.rs:2173:61:2173:75 | impl ... | +| main.rs:2173:78:2175:5 | { ... } | 1(2).impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2174:9:2174:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2174:9:2174:30 | TupleExpr | 0(2) | main.rs:2118:5:2118:22 | S3 | +| main.rs:2174:9:2174:30 | TupleExpr | 0(2) | main.rs:2173:44:2173:58 | impl ... | +| main.rs:2174:9:2174:30 | TupleExpr | 0(2).T3 | main.rs:2173:24:2173:31 | T | +| main.rs:2174:9:2174:30 | TupleExpr | 0(2).impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2174:9:2174:30 | TupleExpr | 1(2) | main.rs:2118:5:2118:22 | S3 | +| main.rs:2174:9:2174:30 | TupleExpr | 1(2) | main.rs:2173:61:2173:75 | impl ... | +| main.rs:2174:9:2174:30 | TupleExpr | 1(2).T3 | main.rs:2173:24:2173:31 | T | +| main.rs:2174:9:2174:30 | TupleExpr | 1(2).impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2174:10:2174:22 | S3(...) | | main.rs:2118:5:2118:22 | S3 | +| main.rs:2174:10:2174:22 | S3(...) | | main.rs:2173:44:2173:58 | impl ... | +| main.rs:2174:10:2174:22 | S3(...) | T3 | main.rs:2173:24:2173:31 | T | +| main.rs:2174:10:2174:22 | S3(...) | impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2174:13:2174:13 | x | | main.rs:2173:24:2173:31 | T | +| main.rs:2174:13:2174:21 | x.clone() | | main.rs:2173:24:2173:31 | T | +| main.rs:2174:25:2174:29 | S3(...) | | main.rs:2118:5:2118:22 | S3 | +| main.rs:2174:25:2174:29 | S3(...) | | main.rs:2173:61:2173:75 | impl ... | +| main.rs:2174:25:2174:29 | S3(...) | T3 | main.rs:2173:24:2173:31 | T | +| main.rs:2174:25:2174:29 | S3(...) | impl(T) | main.rs:2173:24:2173:31 | T | +| main.rs:2174:28:2174:28 | x | | main.rs:2173:24:2173:31 | T | +| main.rs:2177:26:2177:26 | t | | main.rs:2177:29:2177:43 | impl ... | +| main.rs:2177:51:2179:5 | { ... } | | main.rs:2177:23:2177:23 | A | +| main.rs:2178:9:2178:9 | t | | main.rs:2177:29:2177:43 | impl ... | +| main.rs:2178:9:2178:17 | t.get_a() | | main.rs:2177:23:2177:23 | A | +| main.rs:2182:13:2182:13 | x | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2182:17:2182:20 | f1(...) | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2183:9:2183:9 | x | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2184:9:2184:9 | x | | main.rs:2136:16:2136:35 | impl ... + ... | +| main.rs:2185:13:2185:13 | a | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2185:17:2185:32 | get_a_my_trait(...) | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2186:13:2186:13 | b | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2186:17:2186:33 | uses_my_trait1(...) | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2186:32:2186:32 | a | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2187:13:2187:13 | a | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2187:17:2187:32 | get_a_my_trait(...) | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2188:13:2188:13 | c | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2188:17:2188:33 | uses_my_trait2(...) | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2188:32:2188:32 | a | | main.rs:2157:28:2157:43 | impl ... | +| main.rs:2189:13:2189:13 | d | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2189:17:2189:34 | uses_my_trait2(...) | | main.rs:2117:5:2117:14 | S2 | +| main.rs:2189:32:2189:33 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2190:13:2190:13 | e | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2190:17:2190:35 | get_a_my_trait2(...) | | main.rs:2165:43:2165:57 | impl ... | +| main.rs:2190:17:2190:35 | get_a_my_trait2(...) | impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2190:17:2190:43 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2190:33:2190:34 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2193:13:2193:13 | f | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | T | main.rs:2169:50:2169:64 | impl ... | +| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2193:17:2193:44 | ... .unwrap() | | main.rs:2169:50:2169:64 | impl ... | +| main.rs:2193:17:2193:44 | ... .unwrap() | impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2193:17:2193:52 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2193:33:2193:34 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:13:2194:13 | g | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 0(2) | main.rs:2173:44:2173:58 | impl ... | +| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 1(2) | main.rs:2173:61:2173:75 | impl ... | +| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:17:2194:37 | ... .0 | | main.rs:2173:44:2173:58 | impl ... | +| main.rs:2194:17:2194:37 | ... .0 | impl(T) | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:17:2194:45 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2194:33:2194:34 | S1 | | main.rs:2115:5:2116:14 | S1 | +| main.rs:2205:16:2205:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2205:16:2205:20 | SelfParam | &T | main.rs:2201:5:2202:13 | S | +| main.rs:2205:31:2207:9 | { ... } | | main.rs:2201:5:2202:13 | S | +| main.rs:2206:13:2206:13 | S | | main.rs:2201:5:2202:13 | S | +| main.rs:2216:26:2218:9 | { ... } | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2216:26:2218:9 | { ... } | T | main.rs:2215:10:2215:10 | T | +| main.rs:2217:13:2217:38 | MyVec {...} | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2217:13:2217:38 | MyVec {...} | T | main.rs:2215:10:2215:10 | T | +| main.rs:2217:27:2217:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2217:27:2217:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2217:27:2217:36 | ...::new(...) | T | main.rs:2215:10:2215:10 | T | +| main.rs:2220:17:2220:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2220:17:2220:25 | SelfParam | &T | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2220:17:2220:25 | SelfParam | &T.T | main.rs:2215:10:2215:10 | T | +| main.rs:2220:28:2220:32 | value | | main.rs:2215:10:2215:10 | T | +| main.rs:2221:13:2221:16 | self | | file://:0:0:0:0 | & | +| main.rs:2221:13:2221:16 | self | &T | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2221:13:2221:16 | self | &T.T | main.rs:2215:10:2215:10 | T | +| main.rs:2221:13:2221:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2221:13:2221:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2221:13:2221:21 | self.data | T | main.rs:2215:10:2215:10 | T | +| main.rs:2221:28:2221:32 | value | | main.rs:2215:10:2215:10 | T | +| main.rs:2229:18:2229:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2229:18:2229:22 | SelfParam | &T | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2229:18:2229:22 | SelfParam | &T.T | main.rs:2225:10:2225:10 | T | +| main.rs:2229:25:2229:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2229:56:2231:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2229:56:2231:9 | { ... } | &T | main.rs:2225:10:2225:10 | T | +| main.rs:2230:13:2230:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2230:13:2230:29 | &... | &T | main.rs:2225:10:2225:10 | T | +| main.rs:2230:14:2230:17 | self | | file://:0:0:0:0 | & | +| main.rs:2230:14:2230:17 | self | &T | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2230:14:2230:17 | self | &T.T | main.rs:2225:10:2225:10 | T | +| main.rs:2230:14:2230:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2230:14:2230:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2230:14:2230:22 | self.data | T | main.rs:2225:10:2225:10 | T | +| main.rs:2230:14:2230:29 | ...[index] | | main.rs:2225:10:2225:10 | T | +| main.rs:2230:24:2230:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2234:22:2234:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2234:22:2234:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2234:22:2234:26 | slice | &T.[T] | main.rs:2201:5:2202:13 | S | +| main.rs:2235:13:2235:13 | x | | main.rs:2201:5:2202:13 | S | +| main.rs:2235:17:2235:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2235:17:2235:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2235:17:2235:21 | slice | &T.[T] | main.rs:2201:5:2202:13 | S | +| main.rs:2235:17:2235:24 | slice[0] | | main.rs:2201:5:2202:13 | S | +| main.rs:2235:17:2235:30 | ... .foo() | | main.rs:2201:5:2202:13 | S | +| main.rs:2235:23:2235:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2238:37:2238:37 | a | | main.rs:2238:20:2238:34 | T | +| main.rs:2238:43:2238:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2241:5:2243:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2242:9:2242:9 | a | | main.rs:2238:20:2238:34 | T | +| main.rs:2242:9:2242:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2242:11:2242:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2246:17:2246:19 | vec | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2246:17:2246:19 | vec | T | main.rs:2201:5:2202:13 | S | +| main.rs:2246:23:2246:34 | ...::new(...) | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2246:23:2246:34 | ...::new(...) | T | main.rs:2201:5:2202:13 | S | +| main.rs:2247:9:2247:11 | vec | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2247:9:2247:11 | vec | T | main.rs:2201:5:2202:13 | S | +| main.rs:2247:18:2247:18 | S | | main.rs:2201:5:2202:13 | S | +| main.rs:2248:9:2248:11 | vec | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2248:9:2248:11 | vec | T | main.rs:2201:5:2202:13 | S | +| main.rs:2248:9:2248:14 | vec[0] | | main.rs:2201:5:2202:13 | S | +| main.rs:2248:9:2248:20 | ... .foo() | | main.rs:2201:5:2202:13 | S | +| main.rs:2248:13:2248:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2248:13:2248:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2250:13:2250:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2250:13:2250:14 | xs | [T;...] | main.rs:2201:5:2202:13 | S | +| main.rs:2250:21:2250:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2250:26:2250:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2250:26:2250:28 | [...] | [T;...] | main.rs:2201:5:2202:13 | S | +| main.rs:2250:27:2250:27 | S | | main.rs:2201:5:2202:13 | S | +| main.rs:2251:13:2251:13 | x | | main.rs:2201:5:2202:13 | S | +| main.rs:2251:17:2251:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2251:17:2251:18 | xs | [T;...] | main.rs:2201:5:2202:13 | S | +| main.rs:2251:17:2251:21 | xs[0] | | main.rs:2201:5:2202:13 | S | +| main.rs:2251:17:2251:27 | ... .foo() | | main.rs:2201:5:2202:13 | S | +| main.rs:2251:20:2251:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2253:29:2253:31 | vec | | main.rs:2210:5:2213:5 | MyVec | +| main.rs:2253:29:2253:31 | vec | T | main.rs:2201:5:2202:13 | S | +| main.rs:2253:34:2253:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2253:34:2253:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2255:23:2255:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2255:23:2255:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2255:23:2255:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2255:23:2255:25 | &xs | &T.[T;...] | main.rs:2201:5:2202:13 | S | +| main.rs:2255:23:2255:25 | &xs | &T.[T] | main.rs:2201:5:2202:13 | S | +| main.rs:2255:24:2255:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2255:24:2255:25 | xs | [T;...] | main.rs:2201:5:2202:13 | S | +| main.rs:2261:13:2261:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2261:17:2261:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2261:25:2261:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2261:25:2261:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2261:25:2261:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2261:25:2261:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2261:25:2261:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2261:25:2261:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2261:25:2261:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2261:38:2261:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2261:38:2261:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2270:19:2270:22 | SelfParam | | main.rs:2266:5:2271:5 | Self [trait MyAdd] | +| main.rs:2270:25:2270:27 | rhs | | main.rs:2266:17:2266:26 | Rhs | +| main.rs:2277:19:2277:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2277:25:2277:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2277:45:2279:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2278:13:2278:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2286:19:2286:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2286:25:2286:29 | value | | file://:0:0:0:0 | & | +| main.rs:2286:25:2286:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2286:46:2288:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2287:13:2287:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2287:14:2287:18 | value | | file://:0:0:0:0 | & | +| main.rs:2287:14:2287:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2295:19:2295:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2295:25:2295:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2295:46:2301:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2296:13:2300:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2296:13:2300:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2296:16:2296:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2296:22:2298:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2296:22:2298:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2297:17:2297:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2297:17:2297:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2298:20:2300:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2298:20:2300:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2299:17:2299:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2299:17:2299:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2310:19:2310:22 | SelfParam | | main.rs:2304:5:2304:19 | S | +| main.rs:2310:19:2310:22 | SelfParam | T | main.rs:2306:10:2306:17 | T | +| main.rs:2310:25:2310:29 | other | | main.rs:2304:5:2304:19 | S | +| main.rs:2310:25:2310:29 | other | T | main.rs:2306:10:2306:17 | T | +| main.rs:2310:54:2312:9 | { ... } | | main.rs:2304:5:2304:19 | S | +| main.rs:2310:54:2312:9 | { ... } | T | main.rs:2267:9:2267:20 | Output | +| main.rs:2311:13:2311:39 | S(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2311:13:2311:39 | S(...) | T | main.rs:2267:9:2267:20 | Output | +| main.rs:2311:15:2311:22 | (...) | | main.rs:2306:10:2306:17 | T | +| main.rs:2311:15:2311:38 | ... .my_add(...) | | main.rs:2267:9:2267:20 | Output | +| main.rs:2311:16:2311:19 | self | | main.rs:2304:5:2304:19 | S | +| main.rs:2311:16:2311:19 | self | T | main.rs:2306:10:2306:17 | T | +| main.rs:2311:16:2311:21 | self.0 | | main.rs:2306:10:2306:17 | T | +| main.rs:2311:31:2311:35 | other | | main.rs:2304:5:2304:19 | S | +| main.rs:2311:31:2311:35 | other | T | main.rs:2306:10:2306:17 | T | +| main.rs:2311:31:2311:37 | other.0 | | main.rs:2306:10:2306:17 | T | +| main.rs:2319:19:2319:22 | SelfParam | | main.rs:2304:5:2304:19 | S | +| main.rs:2319:19:2319:22 | SelfParam | T | main.rs:2315:10:2315:17 | T | +| main.rs:2319:25:2319:29 | other | | main.rs:2315:10:2315:17 | T | +| main.rs:2319:51:2321:9 | { ... } | | main.rs:2304:5:2304:19 | S | +| main.rs:2319:51:2321:9 | { ... } | T | main.rs:2267:9:2267:20 | Output | +| main.rs:2320:13:2320:37 | S(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2320:13:2320:37 | S(...) | T | main.rs:2267:9:2267:20 | Output | +| main.rs:2320:15:2320:22 | (...) | | main.rs:2315:10:2315:17 | T | +| main.rs:2320:15:2320:36 | ... .my_add(...) | | main.rs:2267:9:2267:20 | Output | +| main.rs:2320:16:2320:19 | self | | main.rs:2304:5:2304:19 | S | +| main.rs:2320:16:2320:19 | self | T | main.rs:2315:10:2315:17 | T | +| main.rs:2320:16:2320:21 | self.0 | | main.rs:2315:10:2315:17 | T | +| main.rs:2320:31:2320:35 | other | | main.rs:2315:10:2315:17 | T | +| main.rs:2331:19:2331:22 | SelfParam | | main.rs:2304:5:2304:19 | S | +| main.rs:2331:19:2331:22 | SelfParam | T | main.rs:2324:14:2324:14 | T | +| main.rs:2331:25:2331:29 | other | | file://:0:0:0:0 | & | +| main.rs:2331:25:2331:29 | other | &T | main.rs:2324:14:2324:14 | T | +| main.rs:2331:55:2333:9 | { ... } | | main.rs:2304:5:2304:19 | S | +| main.rs:2332:13:2332:37 | S(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2332:15:2332:22 | (...) | | main.rs:2324:14:2324:14 | T | +| main.rs:2332:16:2332:19 | self | | main.rs:2304:5:2304:19 | S | +| main.rs:2332:16:2332:19 | self | T | main.rs:2324:14:2324:14 | T | +| main.rs:2332:16:2332:21 | self.0 | | main.rs:2324:14:2324:14 | T | +| main.rs:2332:31:2332:35 | other | | file://:0:0:0:0 | & | +| main.rs:2332:31:2332:35 | other | &T | main.rs:2324:14:2324:14 | T | +| main.rs:2338:20:2338:24 | value | | main.rs:2336:18:2336:18 | T | +| main.rs:2343:20:2343:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2343:40:2345:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2344:13:2344:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2350:20:2350:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2350:41:2356:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2351:13:2355:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2351:13:2355:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2351:16:2351:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2351:22:2353:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2351:22:2353:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2352:17:2352:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:17:2352:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2353:20:2355:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2353:20:2355:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2354:17:2354:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2354:17:2354:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2361:21:2361:25 | value | | main.rs:2359:19:2359:19 | T | +| main.rs:2361:31:2361:31 | x | | main.rs:2359:5:2362:5 | Self [trait MyFrom2] | +| main.rs:2366:21:2366:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2366:33:2366:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2366:48:2368:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2367:13:2367:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:21:2373:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2373:34:2373:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2373:49:2379:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2374:13:2378:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2374:16:2374:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2374:22:2376:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2375:17:2375:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2376:20:2378:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2377:17:2377:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2384:15:2384:15 | x | | main.rs:2382:5:2388:5 | Self [trait MySelfTrait] | +| main.rs:2387:15:2387:15 | x | | main.rs:2382:5:2388:5 | Self [trait MySelfTrait] | +| main.rs:2392:15:2392:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2392:31:2394:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:13:2393:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:13:2393:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:17:2393:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2397:15:2397:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2397:32:2399:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2398:13:2398:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2398:13:2398:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2398:17:2398:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2404:15:2404:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2404:31:2406:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2405:13:2405:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2405:13:2405:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2409:15:2409:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2409:32:2411:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2410:13:2410:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2415:13:2415:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2415:22:2415:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:22:2415:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:9:2416:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:9:2416:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:18:2416:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2417:9:2417:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:9:2417:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:18:2417:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:9:2417:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:18:2417:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2417:18:2417:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2417:19:2417:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2418:9:2418:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:9:2418:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:18:2418:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2418:18:2418:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:19:2418:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2419:9:2419:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2419:9:2419:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2419:18:2419:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2421:9:2421:15 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2418:9:2418:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2418:18:2418:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2420:9:2420:15 | S(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2420:9:2420:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2420:9:2420:31 | ... .my_add(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2420:11:2420:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2420:24:2420:30 | S(...) | | main.rs:2304:5:2304:19 | S | +| main.rs:2420:24:2420:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2420:26:2420:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2421:9:2421:15 | S(...) | | main.rs:2304:5:2304:19 | S | | main.rs:2421:9:2421:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:9:2421:31 | ... .my_add(...) | | main.rs:2305:5:2305:19 | S | | main.rs:2421:11:2421:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:24:2421:30 | S(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2421:24:2421:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:26:2421:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:9:2422:15 | S(...) | | main.rs:2305:5:2305:19 | S | +| main.rs:2421:24:2421:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:9:2422:15 | S(...) | | main.rs:2304:5:2304:19 | S | | main.rs:2422:9:2422:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:9:2422:29 | ... .my_add(...) | | main.rs:2304:5:2304:19 | S | | main.rs:2422:11:2422:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:24:2422:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:9:2423:15 | S(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2423:9:2423:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:9:2423:29 | ... .my_add(...) | | main.rs:2305:5:2305:19 | S | -| main.rs:2423:11:2423:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:24:2423:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2423:24:2423:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:25:2423:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:13:2425:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:17:2425:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:30:2425:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:13:2426:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:17:2426:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:30:2426:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2427:13:2427:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2427:22:2427:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2427:38:2427:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2428:9:2428:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2428:23:2428:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2428:30:2428:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2429:9:2429:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2429:23:2429:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2429:29:2429:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2430:9:2430:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2430:27:2430:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2430:34:2430:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2432:9:2432:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:24:2422:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2422:24:2422:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:25:2422:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2424:13:2424:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2424:17:2424:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2424:30:2424:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:13:2425:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:17:2425:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:30:2425:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2426:13:2426:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:22:2426:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:38:2426:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2427:9:2427:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2427:23:2427:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2427:30:2427:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2428:9:2428:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2428:23:2428:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2428:29:2428:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2429:9:2429:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2429:27:2429:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2429:34:2429:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:9:2431:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:17:2431:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2432:9:2432:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2432:17:2432:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2433:9:2433:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2433:17:2433:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2434:9:2434:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2433:9:2433:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2433:18:2433:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2434:9:2434:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | | main.rs:2434:18:2434:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2435:9:2435:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2435:18:2435:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2436:9:2436:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2435:9:2435:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2435:25:2435:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2436:9:2436:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2436:25:2436:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2437:9:2437:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2437:25:2437:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2438:9:2438:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2437:9:2437:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2437:25:2437:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2438:9:2438:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | | main.rs:2438:25:2438:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2439:9:2439:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2439:25:2439:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2447:26:2449:9 | { ... } | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2448:13:2448:25 | MyCallable {...} | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2451:17:2451:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2451:17:2451:21 | SelfParam | &T | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2451:31:2453:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2452:13:2452:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2452:13:2452:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:13:2459:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2446:26:2448:9 | { ... } | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2447:13:2447:25 | MyCallable {...} | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2450:17:2450:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2450:17:2450:21 | SelfParam | &T | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2450:31:2452:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2451:13:2451:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2451:13:2451:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2458:13:2458:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2458:18:2458:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2458:18:2458:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2458:19:2458:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2458:22:2458:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2458:25:2458:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2459:18:2459:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2459:18:2459:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:18:2459:41 | ... .map(...) | | file://:0:0:0:0 | [] | | main.rs:2459:19:2459:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2459:22:2459:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2459:25:2459:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2459:32:2459:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2459:32:2459:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2459:40:2459:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2460:18:2460:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2460:18:2460:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:18:2460:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2460:18:2460:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2460:18:2460:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | | main.rs:2460:19:2460:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2460:22:2460:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2460:25:2460:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:32:2460:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2460:32:2460:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2460:40:2460:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:13:2461:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2461:13:2461:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:18:2461:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2461:18:2461:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:18:2461:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2461:18:2461:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:19:2461:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:22:2461:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:25:2461:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2463:13:2463:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:21:2463:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2463:21:2463:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:21:2463:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:22:2463:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:27:2463:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:27:2463:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:30:2463:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:30:2463:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2464:13:2464:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2464:13:2464:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2464:18:2464:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2464:18:2464:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2464:18:2464:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2466:13:2466:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2466:13:2466:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2466:21:2466:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2466:21:2466:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2466:22:2466:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2466:28:2466:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2467:13:2467:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2467:18:2467:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2467:18:2467:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2469:13:2469:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2469:13:2469:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:26:2469:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:31:2469:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2469:31:2469:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:31:2469:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:32:2469:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:32:2469:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:35:2469:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:35:2469:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:38:2469:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:38:2469:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2470:13:2470:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2470:18:2470:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2470:18:2470:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2472:13:2472:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2472:13:2472:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2472:26:2472:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:31:2472:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2472:31:2472:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:31:2472:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2472:32:2472:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:32:2472:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2472:35:2472:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2473:13:2473:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2473:18:2473:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2473:18:2473:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2475:17:2475:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2475:17:2475:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2475:17:2475:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2475:28:2475:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2475:28:2475:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2475:28:2475:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2475:29:2475:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2475:29:2475:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2475:36:2475:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2475:36:2475:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2475:43:2475:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2475:43:2475:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2462:13:2462:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2462:13:2462:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:13:2462:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2462:21:2462:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2462:21:2462:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:21:2462:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2462:22:2462:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2462:27:2462:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:27:2462:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2462:30:2462:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2462:30:2462:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:13:2463:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:13:2463:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2463:18:2463:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2463:18:2463:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2463:18:2463:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2465:13:2465:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2465:13:2465:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2465:21:2465:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2465:21:2465:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2465:22:2465:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2465:28:2465:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2466:13:2466:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2466:18:2466:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2466:18:2466:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2468:13:2468:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2468:13:2468:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2468:26:2468:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2468:31:2468:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2468:31:2468:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2468:31:2468:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2468:32:2468:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2468:32:2468:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2468:35:2468:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2468:35:2468:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2468:38:2468:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2468:38:2468:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:13:2469:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2469:18:2469:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2469:18:2469:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2471:13:2471:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2471:13:2471:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2471:26:2471:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2471:31:2471:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2471:31:2471:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2471:31:2471:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2471:32:2471:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2471:32:2471:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2471:35:2471:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2472:18:2472:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2472:18:2472:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2474:17:2474:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2474:17:2474:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2474:17:2474:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2474:28:2474:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2474:28:2474:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2474:28:2474:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2474:29:2474:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2474:29:2474:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2474:36:2474:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2474:36:2474:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2474:43:2474:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2474:43:2474:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2475:13:2475:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2475:13:2475:13 | s | | file://:0:0:0:0 | & | +| main.rs:2475:13:2475:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2475:13:2475:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2475:18:2475:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2475:18:2475:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2475:18:2475:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2475:18:2475:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2475:19:2475:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2475:19:2475:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2475:19:2475:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | | main.rs:2476:13:2476:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2476:13:2476:13 | s | | file://:0:0:0:0 | & | | main.rs:2476:13:2476:13 | s | &T | file://:0:0:0:0 | & | | main.rs:2476:13:2476:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2476:18:2476:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2476:18:2476:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2476:18:2476:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2476:18:2476:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2476:19:2476:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2476:19:2476:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2476:19:2476:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2477:13:2477:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2476:18:2476:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2476:18:2476:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2476:18:2476:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2476:18:2476:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2476:23:2476:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2476:23:2476:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2476:23:2476:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | | main.rs:2477:13:2477:13 | s | | file://:0:0:0:0 | & | -| main.rs:2477:13:2477:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2477:13:2477:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2477:18:2477:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2477:18:2477:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2477:18:2477:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2477:18:2477:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2477:23:2477:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2477:23:2477:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2477:23:2477:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2478:13:2478:13 | s | | file://:0:0:0:0 | & | -| main.rs:2478:13:2478:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2478:18:2478:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2478:18:2478:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2478:18:2478:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2480:13:2480:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2480:13:2480:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2481:9:2485:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2481:9:2485:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2477:13:2477:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2477:18:2477:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2477:18:2477:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2477:18:2477:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2479:13:2479:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2479:13:2479:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2480:9:2484:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2480:9:2484:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2481:13:2481:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2481:26:2481:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2481:26:2481:30 | "foo" | &T | {EXTERNAL LOCATION} | str | | main.rs:2482:13:2482:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2482:26:2482:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2482:26:2482:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2482:26:2482:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2482:26:2482:30 | "bar" | &T | {EXTERNAL LOCATION} | str | | main.rs:2483:13:2483:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2483:26:2483:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2483:26:2483:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2484:13:2484:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2484:26:2484:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2484:26:2484:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2486:13:2486:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2486:18:2486:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2486:18:2486:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2488:13:2488:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2488:13:2488:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2488:13:2488:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2489:9:2493:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2489:9:2493:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2489:9:2493:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2489:10:2493:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2489:10:2493:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2483:26:2483:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2483:26:2483:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2485:13:2485:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2485:18:2485:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2485:18:2485:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2487:13:2487:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2487:13:2487:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2487:13:2487:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2488:9:2492:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2488:9:2492:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2488:9:2492:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2488:10:2492:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2488:10:2492:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2489:13:2489:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2489:26:2489:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2489:26:2489:30 | "foo" | &T | {EXTERNAL LOCATION} | str | | main.rs:2490:13:2490:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2490:26:2490:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2490:26:2490:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2490:26:2490:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2490:26:2490:30 | "bar" | &T | {EXTERNAL LOCATION} | str | | main.rs:2491:13:2491:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2491:26:2491:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2491:26:2491:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2492:13:2492:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2492:26:2492:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2492:26:2492:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2494:13:2494:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2494:13:2494:13 | s | | file://:0:0:0:0 | & | -| main.rs:2494:13:2494:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2494:18:2494:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2494:18:2494:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2494:18:2494:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2496:13:2496:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2496:13:2496:21 | callables | [T;...] | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2496:25:2496:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2496:25:2496:81 | [...] | [T;...] | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2496:26:2496:42 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2496:45:2496:61 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2496:64:2496:80 | ...::new(...) | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2497:13:2497:13 | c | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2498:12:2498:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2498:12:2498:20 | callables | [T;...] | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2500:17:2500:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2500:26:2500:26 | c | | main.rs:2444:5:2444:24 | MyCallable | -| main.rs:2500:26:2500:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2505:13:2505:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2505:13:2505:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:18:2505:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:18:2505:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2505:18:2505:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:21:2505:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2506:13:2506:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:13:2506:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:18:2506:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2506:18:2506:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2506:18:2506:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:18:2506:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:19:2506:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:19:2506:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2506:19:2506:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:19:2506:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2491:26:2491:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2491:26:2491:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2493:13:2493:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2493:13:2493:13 | s | | file://:0:0:0:0 | & | +| main.rs:2493:13:2493:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2493:18:2493:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2493:18:2493:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2493:18:2493:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2495:13:2495:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2495:13:2495:21 | callables | [T;...] | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2495:25:2495:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2495:25:2495:81 | [...] | [T;...] | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2495:26:2495:42 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2495:45:2495:61 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2495:64:2495:80 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2496:13:2496:13 | c | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2497:12:2497:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2497:12:2497:20 | callables | [T;...] | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2499:17:2499:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2499:26:2499:26 | c | | main.rs:2443:5:2443:24 | MyCallable | +| main.rs:2499:26:2499:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:13:2504:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2504:13:2504:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:18:2504:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:18:2504:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2504:18:2504:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:21:2504:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:13:2505:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2505:13:2505:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:13:2505:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:18:2505:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2505:18:2505:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2505:18:2505:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:18:2505:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:19:2505:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:19:2505:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2505:19:2505:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:19:2505:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:24:2505:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:24:2505:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:13:2506:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2506:13:2506:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:21:2506:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:21:2506:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2506:21:2506:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2506:24:2506:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:24:2506:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2507:13:2507:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2507:13:2507:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:21:2507:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:21:2507:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2507:21:2507:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:24:2507:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:13:2508:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2508:13:2508:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:18:2508:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2508:18:2508:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:13:2509:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2509:26:2509:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2510:13:2510:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2510:18:2510:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2510:19:2510:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2510:19:2510:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2510:20:2510:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2510:26:2510:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2510:32:2510:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2510:38:2510:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2512:13:2512:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2512:13:2512:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2513:9:2516:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2513:9:2516:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2514:20:2514:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2515:18:2515:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2517:13:2517:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2517:13:2517:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2517:18:2517:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2517:18:2517:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2521:26:2521:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2521:29:2521:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2521:32:2521:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2524:13:2524:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2524:13:2524:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2524:13:2524:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2524:32:2524:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2524:32:2524:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2524:32:2524:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2524:32:2524:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2524:32:2524:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2524:32:2524:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2524:33:2524:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2524:39:2524:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2524:42:2524:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2525:13:2525:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2525:13:2525:13 | u | | file://:0:0:0:0 | & | -| main.rs:2525:18:2525:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2525:18:2525:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2525:18:2525:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2527:22:2527:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2527:22:2527:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2527:22:2527:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2527:23:2527:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2527:29:2527:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2527:32:2527:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:13:2530:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2530:13:2530:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2530:13:2530:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:13:2530:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2530:21:2530:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2530:21:2530:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2530:21:2530:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:21:2530:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2530:31:2530:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2530:31:2530:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:31:2530:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2530:32:2530:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2530:38:2530:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:41:2530:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:13:2531:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:13:2531:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2531:13:2531:13 | u | | file://:0:0:0:0 | & | -| main.rs:2531:18:2531:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2531:18:2531:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2531:18:2531:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:18:2531:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2533:13:2533:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2533:13:2533:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2533:13:2533:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2533:13:2533:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2533:32:2533:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2533:32:2533:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:32:2533:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2533:32:2533:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2533:32:2533:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2533:32:2533:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2533:32:2533:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2533:33:2533:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2533:39:2533:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:42:2533:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:13:2534:13 | u | | file://:0:0:0:0 | & | -| main.rs:2534:13:2534:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2534:18:2534:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2534:18:2534:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2534:18:2534:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2534:18:2534:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2536:17:2536:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2536:17:2536:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2536:17:2536:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2536:25:2536:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2536:25:2536:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2536:25:2536:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2537:9:2537:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2537:9:2537:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2537:9:2537:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2537:20:2537:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2538:13:2538:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2538:13:2538:13 | u | | file://:0:0:0:0 | & | -| main.rs:2538:18:2538:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2538:18:2538:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2538:18:2538:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2540:33:2540:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:36:2540:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:45:2540:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:48:2540:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:17:2547:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2547:17:2547:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:17:2547:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2547:17:2547:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2547:17:2547:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2547:17:2547:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2547:17:2547:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:24:2547:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2547:24:2547:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:24:2547:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2547:24:2547:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2547:24:2547:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2547:24:2547:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2547:24:2547:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2507:13:2507:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2507:13:2507:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:18:2507:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2507:18:2507:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:13:2508:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2508:26:2508:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2509:13:2509:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2509:18:2509:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2509:19:2509:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2509:19:2509:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:20:2509:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:26:2509:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:32:2509:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:38:2509:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2511:13:2511:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2511:13:2511:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2512:9:2515:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2512:9:2515:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2513:20:2513:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2514:18:2514:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2516:13:2516:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2516:13:2516:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2516:18:2516:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2516:18:2516:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2520:26:2520:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2520:29:2520:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2520:32:2520:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2523:13:2523:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2523:13:2523:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2523:13:2523:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2523:32:2523:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2523:32:2523:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2523:32:2523:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2523:32:2523:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2523:32:2523:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2523:32:2523:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2523:33:2523:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2523:39:2523:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2523:42:2523:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2524:13:2524:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2524:13:2524:13 | u | | file://:0:0:0:0 | & | +| main.rs:2524:18:2524:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2524:18:2524:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2524:18:2524:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2526:22:2526:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2526:22:2526:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2526:22:2526:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2526:23:2526:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2526:29:2526:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2526:32:2526:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:13:2529:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2529:13:2529:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2529:13:2529:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:13:2529:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2529:21:2529:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2529:21:2529:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2529:21:2529:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:21:2529:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2529:31:2529:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2529:31:2529:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:31:2529:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2529:32:2529:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2529:38:2529:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:41:2529:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:13:2530:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:13:2530:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2530:13:2530:13 | u | | file://:0:0:0:0 | & | +| main.rs:2530:18:2530:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2530:18:2530:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2530:18:2530:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:18:2530:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2532:13:2532:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2532:13:2532:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2532:13:2532:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2532:13:2532:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2532:32:2532:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2532:32:2532:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:32:2532:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2532:32:2532:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2532:32:2532:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2532:32:2532:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2532:32:2532:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2532:33:2532:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2532:39:2532:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:42:2532:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2533:13:2533:13 | u | | file://:0:0:0:0 | & | +| main.rs:2533:13:2533:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2533:18:2533:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2533:18:2533:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2533:18:2533:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2533:18:2533:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2535:17:2535:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2535:17:2535:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2535:17:2535:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2535:25:2535:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2535:25:2535:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2535:25:2535:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2536:9:2536:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2536:9:2536:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2536:9:2536:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2536:20:2536:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2537:13:2537:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2537:13:2537:13 | u | | file://:0:0:0:0 | & | +| main.rs:2537:18:2537:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2537:18:2537:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2537:18:2537:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2539:33:2539:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2539:36:2539:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2539:45:2539:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2539:48:2539:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2546:17:2546:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2546:17:2546:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2546:17:2546:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2546:17:2546:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2546:17:2546:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2546:17:2546:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2546:17:2546:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2546:24:2546:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2546:24:2546:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2546:24:2546:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2546:24:2546:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2546:24:2546:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2546:24:2546:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2546:24:2546:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:9:2547:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2547:9:2547:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:9:2547:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2547:9:2547:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2547:9:2547:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2547:9:2547:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2547:9:2547:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:9:2547:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2547:9:2547:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2547:9:2547:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2547:9:2547:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2547:9:2547:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:21:2547:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:24:2547:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2547:24:2547:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2547:24:2547:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2547:24:2547:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:33:2547:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2547:33:2547:37 | "one" | &T | {EXTERNAL LOCATION} | str | | main.rs:2548:9:2548:12 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2548:9:2548:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2548:9:2548:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | @@ -5254,67 +5273,76 @@ inferType | main.rs:2548:9:2548:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | | main.rs:2548:9:2548:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | | main.rs:2548:9:2548:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:21:2548:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:21:2548:21 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2548:24:2548:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2548:24:2548:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2548:24:2548:38 | ...::new(...) | T | file://:0:0:0:0 | & | | main.rs:2548:24:2548:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:33:2548:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2548:33:2548:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2549:9:2549:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2549:9:2549:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:9:2549:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2549:9:2549:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2549:9:2549:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2549:9:2549:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2549:9:2549:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2549:9:2549:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2549:9:2549:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2549:9:2549:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2549:9:2549:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2549:9:2549:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2549:21:2549:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:24:2549:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2549:24:2549:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2549:24:2549:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2549:24:2549:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2549:33:2549:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2549:33:2549:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2550:13:2550:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2550:13:2550:15 | key | | file://:0:0:0:0 | & | -| main.rs:2550:13:2550:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:20:2550:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2550:20:2550:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:20:2550:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2550:20:2550:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2550:20:2550:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2550:20:2550:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2550:20:2550:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2550:20:2550:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2550:20:2550:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:20:2550:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2550:20:2550:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2550:20:2550:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2550:20:2550:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:13:2551:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2551:13:2551:17 | value | | file://:0:0:0:0 | & | -| main.rs:2551:13:2551:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2551:13:2551:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:13:2551:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2551:13:2551:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:22:2551:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2551:22:2551:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:22:2551:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2551:22:2551:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2551:22:2551:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:22:2551:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2551:22:2551:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:22:2551:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2551:22:2551:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:22:2551:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2551:22:2551:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:22:2551:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2551:22:2551:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:33:2548:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2548:33:2548:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2549:13:2549:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2549:13:2549:15 | key | | file://:0:0:0:0 | & | +| main.rs:2549:13:2549:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:20:2549:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2549:20:2549:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:20:2549:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2549:20:2549:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2549:20:2549:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2549:20:2549:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2549:20:2549:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2549:20:2549:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2549:20:2549:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:20:2549:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2549:20:2549:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2549:20:2549:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2549:20:2549:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2550:13:2550:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2550:13:2550:17 | value | | file://:0:0:0:0 | & | +| main.rs:2550:13:2550:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2550:13:2550:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2550:13:2550:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2550:13:2550:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2550:22:2550:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2550:22:2550:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:22:2550:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2550:22:2550:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2550:22:2550:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2550:22:2550:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2550:22:2550:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2550:22:2550:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2550:22:2550:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:22:2550:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2550:22:2550:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2550:22:2550:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2550:22:2550:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:13:2551:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2551:13:2551:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2551:13:2551:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:13:2551:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:14:2551:16 | key | | file://:0:0:0:0 | & | +| main.rs:2551:14:2551:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:19:2551:23 | value | | file://:0:0:0:0 | & | +| main.rs:2551:19:2551:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2551:19:2551:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:19:2551:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2551:19:2551:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:29:2551:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2551:29:2551:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:29:2551:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2551:29:2551:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2551:29:2551:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:29:2551:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2551:29:2551:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2551:29:2551:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2551:29:2551:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:29:2551:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2551:29:2551:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2551:29:2551:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2551:29:2551:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2552:13:2552:24 | TuplePat | | file://:0:0:0:0 | (T_2) | | main.rs:2552:13:2552:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | | main.rs:2552:13:2552:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | @@ -5330,515 +5358,487 @@ inferType | main.rs:2552:19:2552:23 | value | &T.A | {EXTERNAL LOCATION} | Global | | main.rs:2552:19:2552:23 | value | &T.T | file://:0:0:0:0 | & | | main.rs:2552:19:2552:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:29:2552:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2552:29:2552:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:29:2552:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2552:29:2552:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2552:29:2552:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:29:2552:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2552:29:2552:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:29:2552:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2552:29:2552:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:29:2552:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2552:29:2552:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:29:2552:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2552:29:2552:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2553:13:2553:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2553:13:2553:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2553:13:2553:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2553:13:2553:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2553:13:2553:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2553:14:2553:16 | key | | file://:0:0:0:0 | & | -| main.rs:2553:14:2553:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2553:19:2553:23 | value | | file://:0:0:0:0 | & | -| main.rs:2553:19:2553:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2553:19:2553:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2553:19:2553:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2553:19:2553:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2553:29:2553:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2553:29:2553:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2553:29:2553:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2553:29:2553:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2553:29:2553:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2553:29:2553:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2553:29:2553:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2553:29:2553:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2553:30:2553:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2553:30:2553:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2553:30:2553:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2553:30:2553:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2553:30:2553:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2553:30:2553:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2553:30:2553:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2557:17:2557:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2557:26:2557:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2557:26:2557:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2559:23:2559:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2559:23:2559:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2559:27:2559:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2559:27:2559:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2561:13:2561:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2561:13:2561:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2561:18:2561:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:40:2575:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2573:40:2575:9 | { ... } | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2573:40:2575:9 | { ... } | T.T | main.rs:2572:10:2572:19 | T | -| main.rs:2574:13:2574:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2574:13:2574:16 | None | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2574:13:2574:16 | None | T.T | main.rs:2572:10:2572:19 | T | -| main.rs:2577:30:2579:9 | { ... } | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2577:30:2579:9 | { ... } | T | main.rs:2572:10:2572:19 | T | -| main.rs:2578:13:2578:28 | S1(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2578:13:2578:28 | S1(...) | T | main.rs:2572:10:2572:19 | T | -| main.rs:2578:16:2578:27 | ...::default(...) | | main.rs:2572:10:2572:19 | T | -| main.rs:2581:19:2581:22 | SelfParam | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2581:19:2581:22 | SelfParam | T | main.rs:2572:10:2572:19 | T | -| main.rs:2581:33:2583:9 | { ... } | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2581:33:2583:9 | { ... } | T | main.rs:2572:10:2572:19 | T | -| main.rs:2582:13:2582:16 | self | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2582:13:2582:16 | self | T | main.rs:2572:10:2572:19 | T | -| main.rs:2594:15:2594:15 | x | | main.rs:2594:12:2594:12 | T | -| main.rs:2594:26:2596:5 | { ... } | | main.rs:2594:12:2594:12 | T | -| main.rs:2595:9:2595:9 | x | | main.rs:2594:12:2594:12 | T | -| main.rs:2599:13:2599:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2599:13:2599:14 | x1 | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2599:13:2599:14 | x1 | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2599:34:2599:48 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2600:13:2600:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2600:13:2600:14 | x2 | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2600:13:2600:14 | x2 | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2600:18:2600:38 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2601:13:2601:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2601:13:2601:14 | x3 | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2601:13:2601:14 | x3 | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | T | main.rs:2567:5:2567:20 | S1 | -| main.rs:2601:18:2601:32 | ...::assoc_fun(...) | T.T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2602:13:2602:14 | x4 | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2602:13:2602:14 | x4 | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2602:18:2602:48 | ...::method(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2602:18:2602:48 | ...::method(...) | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2602:35:2602:47 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2602:35:2602:47 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2603:13:2603:14 | x5 | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2603:13:2603:14 | x5 | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2603:18:2603:42 | ...::method(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2603:18:2603:42 | ...::method(...) | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2603:29:2603:41 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2603:29:2603:41 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2604:13:2604:14 | x6 | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2604:13:2604:14 | x6 | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2604:18:2604:45 | S4::<...>(...) | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2604:18:2604:45 | S4::<...>(...) | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2604:27:2604:44 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2605:13:2605:14 | x7 | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2605:13:2605:14 | x7 | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2605:18:2605:23 | S4(...) | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2605:18:2605:23 | S4(...) | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2605:21:2605:22 | S2 | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2606:13:2606:14 | x8 | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2606:13:2606:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2606:18:2606:22 | S4(...) | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2606:18:2606:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2606:21:2606:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2607:13:2607:14 | x9 | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2607:13:2607:14 | x9 | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2607:18:2607:34 | S4(...) | | main.rs:2588:5:2588:27 | S4 | -| main.rs:2607:18:2607:34 | S4(...) | T4 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2607:21:2607:33 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2608:13:2608:15 | x10 | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2608:13:2608:15 | x10 | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2608:19:2611:9 | S5::<...> {...} | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2608:19:2611:9 | S5::<...> {...} | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2610:20:2610:37 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2612:13:2612:15 | x11 | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2612:13:2612:15 | x11 | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2612:19:2612:34 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2612:19:2612:34 | S5 {...} | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2612:31:2612:32 | S2 | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2613:13:2613:15 | x12 | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2613:13:2613:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:19:2613:33 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2613:19:2613:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:31:2613:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2614:13:2614:15 | x13 | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2614:13:2614:15 | x13 | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2614:19:2617:9 | S5 {...} | | main.rs:2590:5:2592:5 | S5 | -| main.rs:2614:19:2617:9 | S5 {...} | T5 | main.rs:2569:5:2570:14 | S2 | -| main.rs:2616:20:2616:32 | ...::default(...) | | main.rs:2569:5:2570:14 | S2 | -| main.rs:2618:13:2618:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:19:2618:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:30:2618:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:13:2619:15 | x15 | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2619:13:2619:15 | x15 | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2619:19:2619:37 | ...::default(...) | | main.rs:2567:5:2567:20 | S1 | -| main.rs:2619:19:2619:37 | ...::default(...) | T | main.rs:2569:5:2570:14 | S2 | -| main.rs:2628:35:2630:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2628:35:2630:9 | { ... } | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2628:35:2630:9 | { ... } | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2629:13:2629:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2629:13:2629:26 | TupleExpr | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2629:13:2629:26 | TupleExpr | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2629:14:2629:18 | S1 {...} | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2629:21:2629:25 | S1 {...} | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2631:16:2631:19 | SelfParam | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2635:13:2635:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2635:13:2635:13 | a | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2635:13:2635:13 | a | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2635:17:2635:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2635:17:2635:30 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2635:17:2635:30 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2636:17:2636:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2636:17:2636:17 | b | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2636:17:2636:17 | b | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2636:21:2636:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2636:21:2636:34 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2636:21:2636:34 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:13:2637:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2637:13:2637:18 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:13:2637:18 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:14:2637:14 | c | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:17:2637:17 | d | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:22:2637:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2637:22:2637:35 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2637:22:2637:35 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:13:2638:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2638:13:2638:22 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:13:2638:22 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:18:2638:18 | e | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:21:2638:21 | f | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:26:2638:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2638:26:2638:39 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2638:26:2638:39 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:13:2639:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2639:13:2639:26 | TuplePat | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:13:2639:26 | TuplePat | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:18:2639:18 | g | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:25:2639:25 | h | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:30:2639:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2639:30:2639:43 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2639:30:2639:43 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2641:9:2641:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2641:9:2641:9 | a | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2641:9:2641:9 | a | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2641:9:2641:11 | a.0 | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2642:9:2642:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2642:9:2642:9 | b | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2642:9:2642:9 | b | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2642:9:2642:11 | b.1 | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2643:9:2643:9 | c | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2644:9:2644:9 | d | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2645:9:2645:9 | e | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2646:9:2646:9 | f | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2647:9:2647:9 | g | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2648:9:2648:9 | h | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2653:13:2653:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2653:17:2653:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2654:13:2654:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2654:17:2654:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2655:13:2655:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2655:13:2655:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2655:13:2655:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2655:20:2655:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2655:20:2655:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2655:20:2655:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2655:21:2655:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2655:24:2655:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2656:13:2656:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2656:22:2656:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2656:22:2656:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2656:22:2656:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2656:22:2656:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2657:13:2657:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2657:23:2657:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2657:23:2657:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2657:23:2657:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2657:23:2657:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2659:13:2659:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2659:13:2659:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:13:2659:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:20:2659:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2659:20:2659:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:20:2659:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2659:20:2659:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:20:2659:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:21:2659:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:24:2659:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:15:2660:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2660:15:2660:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:15:2660:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:13:2661:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2661:13:2661:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:13:2661:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:14:2661:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:17:2661:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:30:2661:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2661:30:2661:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2661:30:2661:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2661:30:2661:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2662:13:2662:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2662:13:2662:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2662:13:2662:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2662:25:2662:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2662:25:2662:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2662:25:2662:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2662:25:2662:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2664:13:2664:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2664:17:2664:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2664:17:2664:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2664:17:2664:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2664:17:2664:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:13:2666:13 | y | | file://:0:0:0:0 | & | -| main.rs:2666:13:2666:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2666:13:2666:13 | y | &T.0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2666:13:2666:13 | y | &T.1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2666:17:2666:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2666:17:2666:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2666:17:2666:31 | &... | &T.0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2666:17:2666:31 | &... | &T.1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2666:18:2666:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2666:18:2666:31 | ...::get_pair(...) | 0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2666:18:2666:31 | ...::get_pair(...) | 1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2667:9:2667:9 | y | | file://:0:0:0:0 | & | -| main.rs:2667:9:2667:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2667:9:2667:9 | y | &T.0(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2667:9:2667:9 | y | &T.1(2) | main.rs:2624:5:2625:16 | S1 | -| main.rs:2667:9:2667:11 | y.0 | | main.rs:2624:5:2625:16 | S1 | -| main.rs:2674:13:2674:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2674:13:2674:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2674:13:2674:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2674:27:2674:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2674:27:2674:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2674:27:2674:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2674:36:2674:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:15:2677:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2677:15:2677:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2677:15:2677:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:13:2678:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2678:13:2678:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2678:13:2678:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:17:2678:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2679:26:2679:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2679:26:2679:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2679:26:2679:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2679:26:2679:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2681:13:2681:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2681:13:2681:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2681:13:2681:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:26:2683:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2683:26:2683:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2683:26:2683:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2683:26:2683:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2688:13:2688:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2688:13:2688:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:13:2688:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2688:13:2688:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:13:2688:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:26:2688:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2688:26:2688:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:26:2688:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2688:26:2688:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:26:2688:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:35:2688:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2688:35:2688:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:35:2688:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:44:2688:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:15:2689:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2689:15:2689:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:15:2689:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2689:15:2689:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:15:2689:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2690:13:2690:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2690:13:2690:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2690:13:2690:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2690:13:2690:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2690:13:2690:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2692:26:2692:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2692:26:2692:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2692:26:2692:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2692:26:2692:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2704:36:2706:9 | { ... } | | main.rs:2701:5:2701:22 | Path | -| main.rs:2705:13:2705:19 | Path {...} | | main.rs:2701:5:2701:22 | Path | -| main.rs:2708:29:2708:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2708:29:2708:33 | SelfParam | &T | main.rs:2701:5:2701:22 | Path | -| main.rs:2708:59:2710:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2708:59:2710:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2708:59:2710:9 | { ... } | T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2709:13:2709:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2709:13:2709:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2709:13:2709:30 | Ok(...) | T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2709:16:2709:29 | ...::new(...) | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2716:39:2718:9 | { ... } | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2717:13:2717:22 | PathBuf {...} | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2726:18:2726:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2726:18:2726:22 | SelfParam | &T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2726:34:2730:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2726:34:2730:9 | { ... } | &T | main.rs:2701:5:2701:22 | Path | -| main.rs:2728:33:2728:43 | ...::new(...) | | main.rs:2701:5:2701:22 | Path | -| main.rs:2729:13:2729:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2729:13:2729:17 | &path | &T | main.rs:2701:5:2701:22 | Path | -| main.rs:2729:14:2729:17 | path | | main.rs:2701:5:2701:22 | Path | -| main.rs:2734:13:2734:17 | path1 | | main.rs:2701:5:2701:22 | Path | -| main.rs:2734:21:2734:31 | ...::new(...) | | main.rs:2701:5:2701:22 | Path | -| main.rs:2735:13:2735:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2735:13:2735:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2735:13:2735:17 | path2 | T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2735:21:2735:25 | path1 | | main.rs:2701:5:2701:22 | Path | -| main.rs:2735:21:2735:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2735:21:2735:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2735:21:2735:40 | path1.canonicalize() | T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2736:13:2736:17 | path3 | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2736:21:2736:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2736:21:2736:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2736:21:2736:25 | path2 | T | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2736:21:2736:34 | path2.unwrap() | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2738:13:2738:20 | pathbuf1 | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2738:24:2738:37 | ...::new(...) | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2739:24:2739:31 | pathbuf1 | | main.rs:2713:5:2713:25 | PathBuf | -| main.rs:2746:14:2746:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2746:14:2746:18 | SelfParam | &T | main.rs:2745:5:2747:5 | Self [trait MyTrait] | -| main.rs:2753:14:2753:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2753:14:2753:18 | SelfParam | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2753:14:2753:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2753:28:2755:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2754:13:2754:16 | self | | file://:0:0:0:0 | & | -| main.rs:2754:13:2754:16 | self | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2754:13:2754:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2754:13:2754:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:14:2759:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2759:14:2759:18 | SelfParam | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2759:14:2759:18 | SelfParam | &T.T | main.rs:2749:5:2750:19 | S | -| main.rs:2759:14:2759:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:28:2761:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2760:13:2760:16 | self | | file://:0:0:0:0 | & | -| main.rs:2760:13:2760:16 | self | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2760:13:2760:16 | self | &T.T | main.rs:2749:5:2750:19 | S | -| main.rs:2760:13:2760:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2760:13:2760:18 | self.0 | | main.rs:2749:5:2750:19 | S | -| main.rs:2760:13:2760:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2760:13:2760:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2765:15:2765:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2765:15:2765:19 | SelfParam | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2765:15:2765:19 | SelfParam | &T.T | main.rs:2764:10:2764:16 | T | -| main.rs:2765:33:2767:9 | { ... } | | main.rs:2749:5:2750:19 | S | -| main.rs:2765:33:2767:9 | { ... } | T | main.rs:2749:5:2750:19 | S | -| main.rs:2765:33:2767:9 | { ... } | T.T | main.rs:2764:10:2764:16 | T | -| main.rs:2766:13:2766:24 | S(...) | | main.rs:2749:5:2750:19 | S | -| main.rs:2766:13:2766:24 | S(...) | T | main.rs:2749:5:2750:19 | S | -| main.rs:2766:13:2766:24 | S(...) | T.T | main.rs:2764:10:2764:16 | T | -| main.rs:2766:15:2766:23 | S(...) | | main.rs:2749:5:2750:19 | S | -| main.rs:2766:15:2766:23 | S(...) | T | main.rs:2764:10:2764:16 | T | -| main.rs:2766:17:2766:20 | self | | file://:0:0:0:0 | & | -| main.rs:2766:17:2766:20 | self | &T | main.rs:2749:5:2750:19 | S | -| main.rs:2766:17:2766:20 | self | &T.T | main.rs:2764:10:2764:16 | T | -| main.rs:2766:17:2766:22 | self.0 | | main.rs:2764:10:2764:16 | T | -| main.rs:2770:14:2770:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2770:48:2787:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2770:48:2787:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2770:48:2787:5 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2770:48:2787:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2771:13:2771:13 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2771:13:2771:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2771:17:2776:9 | if b {...} else {...} | | main.rs:2749:5:2750:19 | S | -| main.rs:2771:17:2776:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2771:20:2771:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2771:22:2774:9 | { ... } | | main.rs:2749:5:2750:19 | S | -| main.rs:2771:22:2774:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2772:17:2772:17 | y | | main.rs:2749:5:2750:19 | S | -| main.rs:2772:17:2772:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2772:21:2772:38 | ...::default(...) | | main.rs:2749:5:2750:19 | S | -| main.rs:2772:21:2772:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2773:13:2773:13 | y | | main.rs:2749:5:2750:19 | S | -| main.rs:2773:13:2773:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2774:16:2776:9 | { ... } | | main.rs:2749:5:2750:19 | S | -| main.rs:2774:16:2776:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2775:13:2775:16 | S(...) | | main.rs:2749:5:2750:19 | S | -| main.rs:2775:13:2775:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2775:15:2775:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:13:2780:13 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2780:13:2780:13 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2780:13:2780:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:13:2780:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:17:2780:20 | S(...) | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2780:17:2780:20 | S(...) | | main.rs:2749:5:2750:19 | S | -| main.rs:2780:17:2780:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:17:2780:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:19:2780:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:9:2786:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2781:9:2786:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T | main.rs:2749:5:2750:19 | S | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T | main.rs:2749:5:2750:19 | S | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:9:2786:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:12:2781:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2781:14:2784:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2781:14:2784:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2781:14:2784:9 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2781:14:2784:9 | { ... } | T | main.rs:2749:5:2750:19 | S | -| main.rs:2781:14:2784:9 | { ... } | T.T | main.rs:2749:5:2750:19 | S | -| main.rs:2781:14:2784:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:14:2784:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:17:2782:17 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2782:17:2782:17 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2782:17:2782:17 | x | T | main.rs:2749:5:2750:19 | S | -| main.rs:2782:17:2782:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:17:2782:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:21:2782:21 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2782:21:2782:21 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2782:21:2782:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:21:2782:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:21:2782:26 | x.m2() | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2782:21:2782:26 | x.m2() | | main.rs:2749:5:2750:19 | S | -| main.rs:2782:21:2782:26 | x.m2() | T | main.rs:2749:5:2750:19 | S | -| main.rs:2782:21:2782:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:21:2782:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:13:2783:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2783:13:2783:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2783:13:2783:23 | ...::new(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2783:13:2783:23 | ...::new(...) | T | main.rs:2749:5:2750:19 | S | -| main.rs:2783:13:2783:23 | ...::new(...) | T.T | main.rs:2749:5:2750:19 | S | -| main.rs:2783:13:2783:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:13:2783:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:22:2783:22 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2783:22:2783:22 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2783:22:2783:22 | x | T | main.rs:2749:5:2750:19 | S | -| main.rs:2783:22:2783:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:22:2783:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:16:2786:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2784:16:2786:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2784:16:2786:9 | { ... } | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2784:16:2786:9 | { ... } | T | main.rs:2749:5:2750:19 | S | -| main.rs:2784:16:2786:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:16:2786:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2785:13:2785:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2785:13:2785:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2785:13:2785:23 | ...::new(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2785:13:2785:23 | ...::new(...) | T | main.rs:2749:5:2750:19 | S | -| main.rs:2785:13:2785:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2785:13:2785:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2785:22:2785:22 | x | | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2785:22:2785:22 | x | | main.rs:2749:5:2750:19 | S | -| main.rs:2785:22:2785:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2785:22:2785:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2797:5:2797:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2798:5:2798:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2798:20:2798:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2798:41:2798:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2815:5:2815:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2828:5:2828:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2828:5:2828:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2828:5:2828:20 | ...::f(...) | T | main.rs:2745:5:2747:5 | dyn MyTrait | -| main.rs:2828:5:2828:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2828:16:2828:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2552:29:2552:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2552:29:2552:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2552:29:2552:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:29:2552:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2552:29:2552:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2552:29:2552:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:29:2552:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2552:29:2552:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2552:30:2552:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2552:30:2552:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2552:30:2552:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2552:30:2552:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2552:30:2552:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2552:30:2552:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2552:30:2552:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2556:17:2556:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2556:26:2556:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2556:26:2556:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2558:23:2558:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2558:23:2558:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2558:27:2558:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2558:27:2558:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2560:13:2560:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2560:13:2560:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2560:18:2560:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:40:2574:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2572:40:2574:9 | { ... } | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2572:40:2574:9 | { ... } | T.T | main.rs:2571:10:2571:19 | T | +| main.rs:2573:13:2573:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2573:13:2573:16 | None | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2573:13:2573:16 | None | T.T | main.rs:2571:10:2571:19 | T | +| main.rs:2576:30:2578:9 | { ... } | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2576:30:2578:9 | { ... } | T | main.rs:2571:10:2571:19 | T | +| main.rs:2577:13:2577:28 | S1(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2577:13:2577:28 | S1(...) | T | main.rs:2571:10:2571:19 | T | +| main.rs:2577:16:2577:27 | ...::default(...) | | main.rs:2571:10:2571:19 | T | +| main.rs:2580:19:2580:22 | SelfParam | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2580:19:2580:22 | SelfParam | T | main.rs:2571:10:2571:19 | T | +| main.rs:2580:33:2582:9 | { ... } | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2580:33:2582:9 | { ... } | T | main.rs:2571:10:2571:19 | T | +| main.rs:2581:13:2581:16 | self | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2581:13:2581:16 | self | T | main.rs:2571:10:2571:19 | T | +| main.rs:2593:15:2593:15 | x | | main.rs:2593:12:2593:12 | T | +| main.rs:2593:26:2595:5 | { ... } | | main.rs:2593:12:2593:12 | T | +| main.rs:2594:9:2594:9 | x | | main.rs:2593:12:2593:12 | T | +| main.rs:2598:13:2598:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2598:13:2598:14 | x1 | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2598:13:2598:14 | x1 | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2599:13:2599:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2599:13:2599:14 | x2 | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2599:13:2599:14 | x2 | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2600:13:2600:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2600:13:2600:14 | x3 | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2600:13:2600:14 | x3 | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | +| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2601:13:2601:14 | x4 | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2601:13:2601:14 | x4 | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2601:18:2601:48 | ...::method(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2601:18:2601:48 | ...::method(...) | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2601:35:2601:47 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2601:35:2601:47 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2602:13:2602:14 | x5 | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2602:13:2602:14 | x5 | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2602:18:2602:42 | ...::method(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2602:18:2602:42 | ...::method(...) | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2602:29:2602:41 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2602:29:2602:41 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2603:13:2603:14 | x6 | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2603:13:2603:14 | x6 | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2603:18:2603:45 | S4::<...>(...) | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2603:18:2603:45 | S4::<...>(...) | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2603:27:2603:44 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2604:13:2604:14 | x7 | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2604:13:2604:14 | x7 | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2604:18:2604:23 | S4(...) | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2604:18:2604:23 | S4(...) | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2604:21:2604:22 | S2 | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2605:13:2605:14 | x8 | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2605:13:2605:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2605:18:2605:22 | S4(...) | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2605:18:2605:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2605:21:2605:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2606:13:2606:14 | x9 | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2606:13:2606:14 | x9 | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2606:18:2606:34 | S4(...) | | main.rs:2587:5:2587:27 | S4 | +| main.rs:2606:18:2606:34 | S4(...) | T4 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2606:21:2606:33 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2607:13:2607:15 | x10 | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2607:13:2607:15 | x10 | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2607:19:2610:9 | S5::<...> {...} | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2607:19:2610:9 | S5::<...> {...} | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2609:20:2609:37 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2611:13:2611:15 | x11 | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2611:13:2611:15 | x11 | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2611:19:2611:34 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2611:19:2611:34 | S5 {...} | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2611:31:2611:32 | S2 | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2612:13:2612:15 | x12 | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2612:13:2612:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:19:2612:33 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2612:19:2612:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:31:2612:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:13:2613:15 | x13 | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2613:13:2613:15 | x13 | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2613:19:2616:9 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | +| main.rs:2613:19:2616:9 | S5 {...} | T5 | main.rs:2568:5:2569:14 | S2 | +| main.rs:2615:20:2615:32 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | +| main.rs:2617:13:2617:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2617:19:2617:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2617:30:2617:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2618:13:2618:15 | x15 | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2618:13:2618:15 | x15 | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2618:19:2618:37 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | +| main.rs:2618:19:2618:37 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | +| main.rs:2627:35:2629:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2627:35:2629:9 | { ... } | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2627:35:2629:9 | { ... } | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2628:13:2628:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2628:13:2628:26 | TupleExpr | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2628:13:2628:26 | TupleExpr | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2628:14:2628:18 | S1 {...} | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2628:21:2628:25 | S1 {...} | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2630:16:2630:19 | SelfParam | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2634:13:2634:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2634:13:2634:13 | a | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2634:13:2634:13 | a | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2634:17:2634:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2634:17:2634:30 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2634:17:2634:30 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2635:17:2635:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2635:17:2635:17 | b | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2635:17:2635:17 | b | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2635:21:2635:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2635:21:2635:34 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2635:21:2635:34 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:13:2636:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2636:13:2636:18 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:13:2636:18 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:14:2636:14 | c | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:17:2636:17 | d | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:22:2636:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2636:22:2636:35 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2636:22:2636:35 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:13:2637:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2637:13:2637:22 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:13:2637:22 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:18:2637:18 | e | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:21:2637:21 | f | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:26:2637:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2637:26:2637:39 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2637:26:2637:39 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:13:2638:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2638:13:2638:26 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:13:2638:26 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:18:2638:18 | g | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:25:2638:25 | h | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:30:2638:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2638:30:2638:43 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2638:30:2638:43 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2640:9:2640:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2640:9:2640:9 | a | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2640:9:2640:9 | a | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2640:9:2640:11 | a.0 | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2641:9:2641:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2641:9:2641:9 | b | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2641:9:2641:9 | b | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2641:9:2641:11 | b.1 | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2642:9:2642:9 | c | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2643:9:2643:9 | d | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2644:9:2644:9 | e | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2645:9:2645:9 | f | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2646:9:2646:9 | g | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2647:9:2647:9 | h | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2652:13:2652:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2652:17:2652:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2653:13:2653:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2653:17:2653:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2654:13:2654:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2654:13:2654:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2654:13:2654:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2654:20:2654:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2654:20:2654:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2654:20:2654:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2654:21:2654:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2654:24:2654:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2655:13:2655:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2655:22:2655:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2655:22:2655:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2655:22:2655:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2655:22:2655:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2656:13:2656:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2656:23:2656:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2656:23:2656:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2656:23:2656:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2656:23:2656:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2658:13:2658:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2658:13:2658:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:13:2658:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:20:2658:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2658:20:2658:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:20:2658:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2658:20:2658:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:20:2658:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:21:2658:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:24:2658:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:15:2659:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2659:15:2659:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:15:2659:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:13:2660:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2660:13:2660:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:13:2660:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:14:2660:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:17:2660:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:30:2660:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2660:30:2660:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2660:30:2660:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2660:30:2660:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2661:13:2661:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2661:13:2661:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:13:2661:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:25:2661:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2661:25:2661:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2661:25:2661:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2661:25:2661:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2663:13:2663:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2663:17:2663:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2663:17:2663:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2663:17:2663:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2663:17:2663:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2665:13:2665:13 | y | | file://:0:0:0:0 | & | +| main.rs:2665:13:2665:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2665:13:2665:13 | y | &T.0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2665:13:2665:13 | y | &T.1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2665:17:2665:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2665:17:2665:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2665:17:2665:31 | &... | &T.0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2665:17:2665:31 | &... | &T.1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2665:18:2665:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2665:18:2665:31 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2665:18:2665:31 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2666:9:2666:9 | y | | file://:0:0:0:0 | & | +| main.rs:2666:9:2666:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2666:9:2666:9 | y | &T.0(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2666:9:2666:9 | y | &T.1(2) | main.rs:2623:5:2624:16 | S1 | +| main.rs:2666:9:2666:11 | y.0 | | main.rs:2623:5:2624:16 | S1 | +| main.rs:2673:13:2673:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2673:13:2673:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2673:13:2673:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:27:2673:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2673:27:2673:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2673:27:2673:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:36:2673:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:15:2676:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2676:15:2676:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2676:15:2676:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:13:2677:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2677:13:2677:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2677:13:2677:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:17:2677:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2678:26:2678:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2678:26:2678:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2678:26:2678:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2678:26:2678:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2680:13:2680:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2680:13:2680:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2680:13:2680:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:26:2682:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2682:26:2682:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2682:26:2682:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2682:26:2682:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2687:13:2687:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2687:13:2687:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2687:13:2687:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2687:13:2687:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2687:13:2687:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:26:2687:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2687:26:2687:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2687:26:2687:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2687:26:2687:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2687:26:2687:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:35:2687:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2687:35:2687:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2687:35:2687:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:44:2687:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2688:15:2688:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2688:15:2688:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:15:2688:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2688:15:2688:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:15:2688:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:13:2689:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2689:13:2689:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:13:2689:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2689:13:2689:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:13:2689:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2691:26:2691:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2691:26:2691:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2691:26:2691:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2691:26:2691:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2703:36:2705:9 | { ... } | | main.rs:2700:5:2700:22 | Path | +| main.rs:2704:13:2704:19 | Path {...} | | main.rs:2700:5:2700:22 | Path | +| main.rs:2707:29:2707:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2707:29:2707:33 | SelfParam | &T | main.rs:2700:5:2700:22 | Path | +| main.rs:2707:59:2709:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2707:59:2709:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2707:59:2709:9 | { ... } | T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2708:13:2708:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2708:13:2708:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2708:13:2708:30 | Ok(...) | T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2708:16:2708:29 | ...::new(...) | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2715:39:2717:9 | { ... } | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2716:13:2716:22 | PathBuf {...} | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2725:18:2725:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2725:18:2725:22 | SelfParam | &T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2725:34:2729:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2725:34:2729:9 | { ... } | &T | main.rs:2700:5:2700:22 | Path | +| main.rs:2727:33:2727:43 | ...::new(...) | | main.rs:2700:5:2700:22 | Path | +| main.rs:2728:13:2728:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2728:13:2728:17 | &path | &T | main.rs:2700:5:2700:22 | Path | +| main.rs:2728:14:2728:17 | path | | main.rs:2700:5:2700:22 | Path | +| main.rs:2733:13:2733:17 | path1 | | main.rs:2700:5:2700:22 | Path | +| main.rs:2733:21:2733:31 | ...::new(...) | | main.rs:2700:5:2700:22 | Path | +| main.rs:2734:13:2734:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2734:13:2734:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2734:13:2734:17 | path2 | T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2734:21:2734:25 | path1 | | main.rs:2700:5:2700:22 | Path | +| main.rs:2734:21:2734:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2734:21:2734:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2734:21:2734:40 | path1.canonicalize() | T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2735:13:2735:17 | path3 | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2735:21:2735:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2735:21:2735:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2735:21:2735:25 | path2 | T | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2735:21:2735:34 | path2.unwrap() | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2737:13:2737:20 | pathbuf1 | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2737:24:2737:37 | ...::new(...) | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2738:24:2738:31 | pathbuf1 | | main.rs:2712:5:2712:25 | PathBuf | +| main.rs:2745:14:2745:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2745:14:2745:18 | SelfParam | &T | main.rs:2744:5:2746:5 | Self [trait MyTrait] | +| main.rs:2752:14:2752:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2752:14:2752:18 | SelfParam | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2752:14:2752:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2752:28:2754:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2753:13:2753:16 | self | | file://:0:0:0:0 | & | +| main.rs:2753:13:2753:16 | self | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2753:13:2753:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2753:13:2753:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:14:2758:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2758:14:2758:18 | SelfParam | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2758:14:2758:18 | SelfParam | &T.T | main.rs:2748:5:2749:19 | S | +| main.rs:2758:14:2758:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:28:2760:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:13:2759:16 | self | | file://:0:0:0:0 | & | +| main.rs:2759:13:2759:16 | self | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2759:13:2759:16 | self | &T.T | main.rs:2748:5:2749:19 | S | +| main.rs:2759:13:2759:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:13:2759:18 | self.0 | | main.rs:2748:5:2749:19 | S | +| main.rs:2759:13:2759:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:13:2759:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2764:15:2764:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2764:15:2764:19 | SelfParam | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2764:15:2764:19 | SelfParam | &T.T | main.rs:2763:10:2763:16 | T | +| main.rs:2764:33:2766:9 | { ... } | | main.rs:2748:5:2749:19 | S | +| main.rs:2764:33:2766:9 | { ... } | T | main.rs:2748:5:2749:19 | S | +| main.rs:2764:33:2766:9 | { ... } | T.T | main.rs:2763:10:2763:16 | T | +| main.rs:2765:13:2765:24 | S(...) | | main.rs:2748:5:2749:19 | S | +| main.rs:2765:13:2765:24 | S(...) | T | main.rs:2748:5:2749:19 | S | +| main.rs:2765:13:2765:24 | S(...) | T.T | main.rs:2763:10:2763:16 | T | +| main.rs:2765:15:2765:23 | S(...) | | main.rs:2748:5:2749:19 | S | +| main.rs:2765:15:2765:23 | S(...) | T | main.rs:2763:10:2763:16 | T | +| main.rs:2765:17:2765:20 | self | | file://:0:0:0:0 | & | +| main.rs:2765:17:2765:20 | self | &T | main.rs:2748:5:2749:19 | S | +| main.rs:2765:17:2765:20 | self | &T.T | main.rs:2763:10:2763:16 | T | +| main.rs:2765:17:2765:22 | self.0 | | main.rs:2763:10:2763:16 | T | +| main.rs:2769:14:2769:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2769:48:2786:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2769:48:2786:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2769:48:2786:5 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2769:48:2786:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:13:2770:13 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2770:13:2770:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:17:2775:9 | if b {...} else {...} | | main.rs:2748:5:2749:19 | S | +| main.rs:2770:17:2775:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:20:2770:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2770:22:2773:9 | { ... } | | main.rs:2748:5:2749:19 | S | +| main.rs:2770:22:2773:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:17:2771:17 | y | | main.rs:2748:5:2749:19 | S | +| main.rs:2771:17:2771:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:21:2771:38 | ...::default(...) | | main.rs:2748:5:2749:19 | S | +| main.rs:2771:21:2771:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2772:13:2772:13 | y | | main.rs:2748:5:2749:19 | S | +| main.rs:2772:13:2772:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2773:16:2775:9 | { ... } | | main.rs:2748:5:2749:19 | S | +| main.rs:2773:16:2775:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2774:13:2774:16 | S(...) | | main.rs:2748:5:2749:19 | S | +| main.rs:2774:13:2774:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2774:15:2774:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2779:13:2779:13 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2779:13:2779:13 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2779:13:2779:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2779:13:2779:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2779:17:2779:20 | S(...) | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2779:17:2779:20 | S(...) | | main.rs:2748:5:2749:19 | S | +| main.rs:2779:17:2779:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2779:17:2779:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2779:19:2779:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:9:2785:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2780:9:2785:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T | main.rs:2748:5:2749:19 | S | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T | main.rs:2748:5:2749:19 | S | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:9:2785:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:12:2780:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2780:14:2783:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2780:14:2783:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2780:14:2783:9 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2780:14:2783:9 | { ... } | T | main.rs:2748:5:2749:19 | S | +| main.rs:2780:14:2783:9 | { ... } | T.T | main.rs:2748:5:2749:19 | S | +| main.rs:2780:14:2783:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2780:14:2783:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:17:2781:17 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2781:17:2781:17 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2781:17:2781:17 | x | T | main.rs:2748:5:2749:19 | S | +| main.rs:2781:17:2781:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:17:2781:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:21:2781:21 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2781:21:2781:21 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2781:21:2781:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:21:2781:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:21:2781:26 | x.m2() | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2781:21:2781:26 | x.m2() | | main.rs:2748:5:2749:19 | S | +| main.rs:2781:21:2781:26 | x.m2() | T | main.rs:2748:5:2749:19 | S | +| main.rs:2781:21:2781:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2781:21:2781:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:13:2782:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2782:13:2782:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2782:13:2782:23 | ...::new(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2782:13:2782:23 | ...::new(...) | T | main.rs:2748:5:2749:19 | S | +| main.rs:2782:13:2782:23 | ...::new(...) | T.T | main.rs:2748:5:2749:19 | S | +| main.rs:2782:13:2782:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:13:2782:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:22:2782:22 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2782:22:2782:22 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2782:22:2782:22 | x | T | main.rs:2748:5:2749:19 | S | +| main.rs:2782:22:2782:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2782:22:2782:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:16:2785:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2783:16:2785:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2783:16:2785:9 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2783:16:2785:9 | { ... } | T | main.rs:2748:5:2749:19 | S | +| main.rs:2783:16:2785:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2783:16:2785:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:13:2784:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2784:13:2784:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2784:13:2784:23 | ...::new(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2784:13:2784:23 | ...::new(...) | T | main.rs:2748:5:2749:19 | S | +| main.rs:2784:13:2784:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:13:2784:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:22:2784:22 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2784:22:2784:22 | x | | main.rs:2748:5:2749:19 | S | +| main.rs:2784:22:2784:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2784:22:2784:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2796:5:2796:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2797:5:2797:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2797:20:2797:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2797:41:2797:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2814:5:2814:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2827:5:2827:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2827:5:2827:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2827:5:2827:20 | ...::f(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | +| main.rs:2827:5:2827:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2827:16:2827:19 | true | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 25e4b790a3634e3e1fc8ee1024def4ff12458085 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 28 Oct 2025 11:46:54 +0000 Subject: [PATCH 425/965] Rust: Exclude skipped files from MacroCallTargetStats. --- rust/ql/src/queries/telemetry/DatabaseQuality.qll | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/rust/ql/src/queries/telemetry/DatabaseQuality.qll b/rust/ql/src/queries/telemetry/DatabaseQuality.qll index 0b874a9b9ce..cdac11b94e7 100644 --- a/rust/ql/src/queries/telemetry/DatabaseQuality.qll +++ b/rust/ql/src/queries/telemetry/DatabaseQuality.qll @@ -31,11 +31,21 @@ module CallTargetStats implements StatsSig { } module MacroCallTargetStats implements StatsSig { - int getNumberOfOk() { result = count(MacroCall c | c.hasMacroCallExpansion()) } + int getNumberOfOk() { + result = + count(MacroCall c | + not c.getFile().(ExtractedFile).isSkippedByCompilation() and c.hasMacroCallExpansion() + ) + } additional predicate isNotOkCall(MacroCall c) { not c.hasMacroCallExpansion() } - int getNumberOfNotOk() { result = count(MacroCall c | isNotOkCall(c)) } + int getNumberOfNotOk() { + result = + count(MacroCall c | + not c.getFile().(ExtractedFile).isSkippedByCompilation() and isNotOkCall(c) + ) + } string getOkText() { result = "macro calls with call target" } From 5ca0bd071decbb78fa60c07969e9b1c7b399357f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 28 Oct 2025 16:07:59 +0000 Subject: [PATCH 426/965] Rust: Exclude skipped files from CallTargetStats and ExprTypeStats as well. --- .../src/queries/telemetry/DatabaseQuality.qll | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/rust/ql/src/queries/telemetry/DatabaseQuality.qll b/rust/ql/src/queries/telemetry/DatabaseQuality.qll index cdac11b94e7..0c3e4dcd448 100644 --- a/rust/ql/src/queries/telemetry/DatabaseQuality.qll +++ b/rust/ql/src/queries/telemetry/DatabaseQuality.qll @@ -8,8 +8,21 @@ import rust import codeql.util.ReportStats import codeql.rust.internal.TypeInference as TypeInference +/** + * A file that is included in the quality statistics. + */ +private class RelevantFile extends File { + RelevantFile() { + // files that are not skipped by the compilation + not this.(ExtractedFile).isSkippedByCompilation() + } +} + module CallTargetStats implements StatsSig { - int getNumberOfOk() { result = count(CallExprBase c | exists(c.getStaticTarget())) } + int getNumberOfOk() { + result = + count(CallExprBase c | c.getFile() instanceof RelevantFile and exists(c.getStaticTarget())) + } private predicate isLambdaCall(CallExpr call) { exists(Expr receiver | receiver = call.getFunction() | @@ -19,6 +32,7 @@ module CallTargetStats implements StatsSig { } additional predicate isNotOkCall(CallExprBase c) { + c.getFile() instanceof RelevantFile and not exists(c.getStaticTarget()) and not isLambdaCall(c) } @@ -32,19 +46,13 @@ module CallTargetStats implements StatsSig { module MacroCallTargetStats implements StatsSig { int getNumberOfOk() { - result = - count(MacroCall c | - not c.getFile().(ExtractedFile).isSkippedByCompilation() and c.hasMacroCallExpansion() - ) + result = count(MacroCall c | c.getFile() instanceof RelevantFile and c.hasMacroCallExpansion()) } additional predicate isNotOkCall(MacroCall c) { not c.hasMacroCallExpansion() } int getNumberOfNotOk() { - result = - count(MacroCall c | - not c.getFile().(ExtractedFile).isSkippedByCompilation() and isNotOkCall(c) - ) + result = count(MacroCall c | c.getFile() instanceof RelevantFile and isNotOkCall(c)) } string getOkText() { result = "macro calls with call target" } @@ -55,9 +63,23 @@ module MacroCallTargetStats implements StatsSig { private predicate hasGoodType(Expr e) { exists(TypeInference::inferType(e, _)) } module ExprTypeStats implements StatsSig { - int getNumberOfOk() { result = count(Expr e | e.fromSource() and hasGoodType(e)) } + int getNumberOfOk() { + result = + count(Expr e | + e.getFile() instanceof RelevantFile and + e.fromSource() and + hasGoodType(e) + ) + } - int getNumberOfNotOk() { result = count(Expr e | e.fromSource() and not hasGoodType(e)) } + int getNumberOfNotOk() { + result = + count(Expr e | + e.getFile() instanceof RelevantFile and + e.fromSource() and + not hasGoodType(e) + ) + } string getOkText() { result = "expressions with known type" } From 4ea90e06a52bc1cd8cea47531a07078147ed91c9 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 12:58:56 +0100 Subject: [PATCH 427/965] Dataflow: Minor drive-by qldoc addition. --- .../codeql/dataflow/internal/DataFlowImpl.qll | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index e7b692cbec9..ddcd052e8fd 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -317,6 +317,13 @@ module MakeImpl Lang> { predicate returnMayFlowThrough(RetNd ret, ReturnKindExt kind); + /** + * Holds if this stage makes use of a store step of content `c` from + * `node1` to `node2`. + * + * `contentType` and `containerType` are the types of the content being + * stored, and the type of the resulting container, respectively. + */ predicate storeStepCand(Nd node1, Content c, Nd node2, Type contentType, Type containerType); predicate readStepCand(Nd n1, Content c, Nd n2); @@ -486,6 +493,14 @@ module MakeImpl Lang> { ) } + /** + * Holds if a node with type `containerType` is compatible with an + * access path with head content `apc`. This is determined by checking + * type compatibility against the possible types of nodes that are + * targets of store steps with content `apc`. + * + * Excludes the case where `apc` is compatible with all types. + */ bindingset[apc, containerType] pragma[inline_late] private predicate compatibleContainer(ApHeadContent apc, Type containerType) { From 9776e8f828fdedfb7d4b0a3fb1b5c4c10942d258 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 15 Oct 2025 14:40:04 +0200 Subject: [PATCH 428/965] C#: Remove an irrelevant reference to impliesStep. --- .../internal/rangeanalysis/RangeUtils.qll | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll index 1be94669951..069d4e6e83a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll @@ -111,19 +111,6 @@ private module Impl { } } - private Guard eqFlowCondAbs( - Definition def, ExprNode e, int delta, boolean isEq, G::AbstractValue v - ) { - exists(boolean eqpolarity | - result.isEquality(ssaRead(def, delta), e, eqpolarity) and - eqpolarity.booleanXor(v.(BooleanValue).getValue()).booleanNot() = isEq - ) - or - exists(G::AbstractValue v0 | - G::Internal::impliesStep(result, v, eqFlowCondAbs(def, e, delta, isEq, v0), v0) - ) - } - /** * Gets a condition that tests whether `def` equals `e + delta`. * @@ -132,9 +119,10 @@ private module Impl { * - `isEq = false` : `def != e + delta` */ Guard eqFlowCond(Definition def, ExprNode e, int delta, boolean isEq, boolean testIsTrue) { - exists(BooleanValue v | - result = eqFlowCondAbs(def, e, delta, isEq, v) and - testIsTrue = v.getValue() + exists(boolean eqpolarity | + result.isEquality(ssaRead(def, delta), e, eqpolarity) and + testIsTrue = [false, true] and + eqpolarity.booleanXor(testIsTrue).booleanNot() = isEq ) } From e3fc3192ac039c48b8345f83e02df81ad8b3b278 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 15 Oct 2025 14:41:52 +0200 Subject: [PATCH 429/965] C#: Remove tests referencing impliesStep. --- .../controlflow/guards/Implications.expected | 445 ----- .../controlflow/guards/Implications.ql | 6 - .../Nullness/Implications.expected | 1509 ----------------- .../test/query-tests/Nullness/Implications.ql | 8 - 4 files changed, 1968 deletions(-) delete mode 100644 csharp/ql/test/library-tests/controlflow/guards/Implications.expected delete mode 100644 csharp/ql/test/library-tests/controlflow/guards/Implications.ql delete mode 100644 csharp/ql/test/query-tests/Nullness/Implications.expected delete mode 100644 csharp/ql/test/query-tests/Nullness/Implications.ql diff --git a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected b/csharp/ql/test/library-tests/controlflow/guards/Implications.expected deleted file mode 100644 index 9a9bdd82aa9..00000000000 --- a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected +++ /dev/null @@ -1,445 +0,0 @@ -| Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | Assert.cs:9:20:9:20 | access to parameter b | false | -| Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | Assert.cs:9:31:9:32 | "" | non-null | -| Assert.cs:9:20:9:32 | ... ? ... : ... | null | Assert.cs:9:20:9:20 | access to parameter b | true | -| Assert.cs:9:20:9:32 | ... ? ... : ... | null | Assert.cs:9:24:9:27 | null | null | -| Assert.cs:10:22:10:22 | access to local variable s | empty | Assert.cs:9:20:9:32 | ... ? ... : ... | empty | -| Assert.cs:10:22:10:22 | access to local variable s | non-empty | Assert.cs:9:20:9:32 | ... ? ... : ... | non-empty | -| Assert.cs:10:22:10:22 | access to local variable s | non-null | Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | -| Assert.cs:10:22:10:22 | access to local variable s | null | Assert.cs:9:20:9:32 | ... ? ... : ... | null | -| Assert.cs:10:22:10:30 | ... != ... | false | Assert.cs:9:20:9:20 | access to parameter b | true | -| Assert.cs:10:22:10:30 | ... != ... | false | Assert.cs:10:22:10:22 | access to local variable s | null | -| Assert.cs:10:22:10:30 | ... != ... | true | Assert.cs:9:20:9:20 | access to parameter b | false | -| Assert.cs:10:22:10:30 | ... != ... | true | Assert.cs:10:22:10:22 | access to local variable s | non-null | -| Assert.cs:11:27:11:27 | access to local variable s | non-null | Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | -| Assert.cs:11:27:11:27 | access to local variable s | null | Assert.cs:9:20:9:32 | ... ? ... : ... | null | -| Assert.cs:16:20:16:32 | ... ? ... : ... | non-null | Assert.cs:16:20:16:20 | access to parameter b | false | -| Assert.cs:16:20:16:32 | ... ? ... : ... | non-null | Assert.cs:16:31:16:32 | "" | non-null | -| Assert.cs:16:20:16:32 | ... ? ... : ... | null | Assert.cs:16:20:16:20 | access to parameter b | true | -| Assert.cs:16:20:16:32 | ... ? ... : ... | null | Assert.cs:16:24:16:27 | null | null | -| Assert.cs:17:23:17:23 | access to local variable s | empty | Assert.cs:16:20:16:32 | ... ? ... : ... | empty | -| Assert.cs:17:23:17:23 | access to local variable s | non-empty | Assert.cs:16:20:16:32 | ... ? ... : ... | non-empty | -| Assert.cs:17:23:17:23 | access to local variable s | non-null | Assert.cs:16:20:16:20 | access to parameter b | false | -| Assert.cs:17:23:17:23 | access to local variable s | non-null | Assert.cs:16:20:16:32 | ... ? ... : ... | non-null | -| Assert.cs:17:23:17:23 | access to local variable s | null | Assert.cs:16:20:16:20 | access to parameter b | true | -| Assert.cs:17:23:17:23 | access to local variable s | null | Assert.cs:16:20:16:32 | ... ? ... : ... | null | -| Assert.cs:18:27:18:27 | access to local variable s | non-null | Assert.cs:16:20:16:32 | ... ? ... : ... | non-null | -| Assert.cs:18:27:18:27 | access to local variable s | null | Assert.cs:16:20:16:32 | ... ? ... : ... | null | -| Assert.cs:23:20:23:32 | ... ? ... : ... | non-null | Assert.cs:23:20:23:20 | access to parameter b | false | -| Assert.cs:23:20:23:32 | ... ? ... : ... | non-null | Assert.cs:23:31:23:32 | "" | non-null | -| Assert.cs:23:20:23:32 | ... ? ... : ... | null | Assert.cs:23:20:23:20 | access to parameter b | true | -| Assert.cs:23:20:23:32 | ... ? ... : ... | null | Assert.cs:23:24:23:27 | null | null | -| Assert.cs:24:26:24:26 | access to local variable s | empty | Assert.cs:23:20:23:32 | ... ? ... : ... | empty | -| Assert.cs:24:26:24:26 | access to local variable s | non-empty | Assert.cs:23:20:23:32 | ... ? ... : ... | non-empty | -| Assert.cs:24:26:24:26 | access to local variable s | non-null | Assert.cs:23:20:23:20 | access to parameter b | false | -| Assert.cs:24:26:24:26 | access to local variable s | non-null | Assert.cs:23:20:23:32 | ... ? ... : ... | non-null | -| Assert.cs:24:26:24:26 | access to local variable s | null | Assert.cs:23:20:23:20 | access to parameter b | true | -| Assert.cs:24:26:24:26 | access to local variable s | null | Assert.cs:23:20:23:32 | ... ? ... : ... | null | -| Assert.cs:25:27:25:27 | access to local variable s | non-null | Assert.cs:23:20:23:32 | ... ? ... : ... | non-null | -| Assert.cs:25:27:25:27 | access to local variable s | null | Assert.cs:23:20:23:32 | ... ? ... : ... | null | -| Assert.cs:30:20:30:32 | ... ? ... : ... | non-null | Assert.cs:30:20:30:20 | access to parameter b | false | -| Assert.cs:30:20:30:32 | ... ? ... : ... | non-null | Assert.cs:30:31:30:32 | "" | non-null | -| Assert.cs:30:20:30:32 | ... ? ... : ... | null | Assert.cs:30:20:30:20 | access to parameter b | true | -| Assert.cs:30:20:30:32 | ... ? ... : ... | null | Assert.cs:30:24:30:27 | null | null | -| Assert.cs:31:23:31:23 | access to local variable s | empty | Assert.cs:30:20:30:32 | ... ? ... : ... | empty | -| Assert.cs:31:23:31:23 | access to local variable s | non-empty | Assert.cs:30:20:30:32 | ... ? ... : ... | non-empty | -| Assert.cs:31:23:31:23 | access to local variable s | non-null | Assert.cs:30:20:30:32 | ... ? ... : ... | non-null | -| Assert.cs:31:23:31:23 | access to local variable s | null | Assert.cs:30:20:30:32 | ... ? ... : ... | null | -| Assert.cs:31:23:31:31 | ... == ... | false | Assert.cs:30:20:30:20 | access to parameter b | false | -| Assert.cs:31:23:31:31 | ... == ... | false | Assert.cs:31:23:31:23 | access to local variable s | non-null | -| Assert.cs:31:23:31:31 | ... == ... | true | Assert.cs:30:20:30:20 | access to parameter b | true | -| Assert.cs:31:23:31:31 | ... == ... | true | Assert.cs:31:23:31:23 | access to local variable s | null | -| Assert.cs:32:27:32:27 | access to local variable s | non-null | Assert.cs:30:20:30:32 | ... ? ... : ... | non-null | -| Assert.cs:32:27:32:27 | access to local variable s | null | Assert.cs:30:20:30:32 | ... ? ... : ... | null | -| Assert.cs:37:20:37:32 | ... ? ... : ... | non-null | Assert.cs:37:20:37:20 | access to parameter b | false | -| Assert.cs:37:20:37:32 | ... ? ... : ... | non-null | Assert.cs:37:31:37:32 | "" | non-null | -| Assert.cs:37:20:37:32 | ... ? ... : ... | null | Assert.cs:37:20:37:20 | access to parameter b | true | -| Assert.cs:37:20:37:32 | ... ? ... : ... | null | Assert.cs:37:24:37:27 | null | null | -| Assert.cs:38:23:38:23 | access to local variable s | empty | Assert.cs:37:20:37:32 | ... ? ... : ... | empty | -| Assert.cs:38:23:38:23 | access to local variable s | non-empty | Assert.cs:37:20:37:32 | ... ? ... : ... | non-empty | -| Assert.cs:38:23:38:23 | access to local variable s | non-null | Assert.cs:37:20:37:32 | ... ? ... : ... | non-null | -| Assert.cs:38:23:38:23 | access to local variable s | null | Assert.cs:37:20:37:32 | ... ? ... : ... | null | -| Assert.cs:38:23:38:31 | ... != ... | false | Assert.cs:37:20:37:20 | access to parameter b | true | -| Assert.cs:38:23:38:31 | ... != ... | false | Assert.cs:38:23:38:23 | access to local variable s | null | -| Assert.cs:38:23:38:31 | ... != ... | true | Assert.cs:37:20:37:20 | access to parameter b | false | -| Assert.cs:38:23:38:31 | ... != ... | true | Assert.cs:38:23:38:23 | access to local variable s | non-null | -| Assert.cs:39:27:39:27 | access to local variable s | non-null | Assert.cs:37:20:37:32 | ... ? ... : ... | non-null | -| Assert.cs:39:27:39:27 | access to local variable s | null | Assert.cs:37:20:37:32 | ... ? ... : ... | null | -| Assert.cs:44:20:44:32 | ... ? ... : ... | non-null | Assert.cs:44:20:44:20 | access to parameter b | false | -| Assert.cs:44:20:44:32 | ... ? ... : ... | non-null | Assert.cs:44:31:44:32 | "" | non-null | -| Assert.cs:44:20:44:32 | ... ? ... : ... | null | Assert.cs:44:20:44:20 | access to parameter b | true | -| Assert.cs:44:20:44:32 | ... ? ... : ... | null | Assert.cs:44:24:44:27 | null | null | -| Assert.cs:45:24:45:24 | access to local variable s | empty | Assert.cs:44:20:44:32 | ... ? ... : ... | empty | -| Assert.cs:45:24:45:24 | access to local variable s | non-empty | Assert.cs:44:20:44:32 | ... ? ... : ... | non-empty | -| Assert.cs:45:24:45:24 | access to local variable s | non-null | Assert.cs:44:20:44:32 | ... ? ... : ... | non-null | -| Assert.cs:45:24:45:24 | access to local variable s | null | Assert.cs:44:20:44:32 | ... ? ... : ... | null | -| Assert.cs:45:24:45:32 | ... != ... | false | Assert.cs:44:20:44:20 | access to parameter b | true | -| Assert.cs:45:24:45:32 | ... != ... | false | Assert.cs:45:24:45:24 | access to local variable s | null | -| Assert.cs:45:24:45:32 | ... != ... | true | Assert.cs:44:20:44:20 | access to parameter b | false | -| Assert.cs:45:24:45:32 | ... != ... | true | Assert.cs:45:24:45:24 | access to local variable s | non-null | -| Assert.cs:46:27:46:27 | access to local variable s | non-null | Assert.cs:44:20:44:32 | ... ? ... : ... | non-null | -| Assert.cs:46:27:46:27 | access to local variable s | null | Assert.cs:44:20:44:32 | ... ? ... : ... | null | -| Assert.cs:51:20:51:32 | ... ? ... : ... | non-null | Assert.cs:51:20:51:20 | access to parameter b | false | -| Assert.cs:51:20:51:32 | ... ? ... : ... | non-null | Assert.cs:51:31:51:32 | "" | non-null | -| Assert.cs:51:20:51:32 | ... ? ... : ... | null | Assert.cs:51:20:51:20 | access to parameter b | true | -| Assert.cs:51:20:51:32 | ... ? ... : ... | null | Assert.cs:51:24:51:27 | null | null | -| Assert.cs:52:24:52:24 | access to local variable s | empty | Assert.cs:51:20:51:32 | ... ? ... : ... | empty | -| Assert.cs:52:24:52:24 | access to local variable s | non-empty | Assert.cs:51:20:51:32 | ... ? ... : ... | non-empty | -| Assert.cs:52:24:52:24 | access to local variable s | non-null | Assert.cs:51:20:51:32 | ... ? ... : ... | non-null | -| Assert.cs:52:24:52:24 | access to local variable s | null | Assert.cs:51:20:51:32 | ... ? ... : ... | null | -| Assert.cs:52:24:52:32 | ... == ... | false | Assert.cs:51:20:51:20 | access to parameter b | false | -| Assert.cs:52:24:52:32 | ... == ... | false | Assert.cs:52:24:52:24 | access to local variable s | non-null | -| Assert.cs:52:24:52:32 | ... == ... | true | Assert.cs:51:20:51:20 | access to parameter b | true | -| Assert.cs:52:24:52:32 | ... == ... | true | Assert.cs:52:24:52:24 | access to local variable s | null | -| Assert.cs:53:27:53:27 | access to local variable s | non-null | Assert.cs:51:20:51:32 | ... ? ... : ... | non-null | -| Assert.cs:53:27:53:27 | access to local variable s | null | Assert.cs:51:20:51:32 | ... ? ... : ... | null | -| Assert.cs:58:20:58:32 | ... ? ... : ... | non-null | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:58:20:58:32 | ... ? ... : ... | non-null | Assert.cs:58:31:58:32 | "" | non-null | -| Assert.cs:58:20:58:32 | ... ? ... : ... | null | Assert.cs:58:20:58:20 | access to parameter b | true | -| Assert.cs:58:20:58:32 | ... ? ... : ... | null | Assert.cs:58:24:58:27 | null | null | -| Assert.cs:59:23:59:23 | access to local variable s | empty | Assert.cs:58:20:58:32 | ... ? ... : ... | empty | -| Assert.cs:59:23:59:23 | access to local variable s | non-empty | Assert.cs:58:20:58:32 | ... ? ... : ... | non-empty | -| Assert.cs:59:23:59:23 | access to local variable s | non-null | Assert.cs:58:20:58:32 | ... ? ... : ... | non-null | -| Assert.cs:59:23:59:23 | access to local variable s | null | Assert.cs:58:20:58:32 | ... ? ... : ... | null | -| Assert.cs:59:23:59:31 | ... != ... | false | Assert.cs:58:20:58:20 | access to parameter b | true | -| Assert.cs:59:23:59:31 | ... != ... | false | Assert.cs:59:23:59:23 | access to local variable s | null | -| Assert.cs:59:23:59:31 | ... != ... | true | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:59:23:59:31 | ... != ... | true | Assert.cs:59:23:59:23 | access to local variable s | non-null | -| Assert.cs:59:23:59:36 | ... && ... | true | Assert.cs:59:23:59:31 | ... != ... | true | -| Assert.cs:59:23:59:36 | ... && ... | true | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:60:27:60:27 | access to local variable s | non-null | Assert.cs:58:20:58:32 | ... ? ... : ... | non-null | -| Assert.cs:60:27:60:27 | access to local variable s | null | Assert.cs:58:20:58:32 | ... ? ... : ... | null | -| Assert.cs:65:20:65:32 | ... ? ... : ... | non-null | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:65:20:65:32 | ... ? ... : ... | non-null | Assert.cs:65:31:65:32 | "" | non-null | -| Assert.cs:65:20:65:32 | ... ? ... : ... | null | Assert.cs:65:20:65:20 | access to parameter b | true | -| Assert.cs:65:20:65:32 | ... ? ... : ... | null | Assert.cs:65:24:65:27 | null | null | -| Assert.cs:66:24:66:24 | access to local variable s | empty | Assert.cs:65:20:65:32 | ... ? ... : ... | empty | -| Assert.cs:66:24:66:24 | access to local variable s | non-empty | Assert.cs:65:20:65:32 | ... ? ... : ... | non-empty | -| Assert.cs:66:24:66:24 | access to local variable s | non-null | Assert.cs:65:20:65:32 | ... ? ... : ... | non-null | -| Assert.cs:66:24:66:24 | access to local variable s | null | Assert.cs:65:20:65:32 | ... ? ... : ... | null | -| Assert.cs:66:24:66:32 | ... == ... | false | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:66:24:66:32 | ... == ... | false | Assert.cs:66:24:66:24 | access to local variable s | non-null | -| Assert.cs:66:24:66:32 | ... == ... | true | Assert.cs:65:20:65:20 | access to parameter b | true | -| Assert.cs:66:24:66:32 | ... == ... | true | Assert.cs:66:24:66:24 | access to local variable s | null | -| Assert.cs:66:24:66:37 | ... \|\| ... | false | Assert.cs:66:24:66:32 | ... == ... | false | -| Assert.cs:66:24:66:37 | ... \|\| ... | false | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:67:27:67:27 | access to local variable s | non-null | Assert.cs:65:20:65:32 | ... ? ... : ... | non-null | -| Assert.cs:67:27:67:27 | access to local variable s | null | Assert.cs:65:20:65:32 | ... ? ... : ... | null | -| Assert.cs:72:20:72:32 | ... ? ... : ... | non-null | Assert.cs:72:20:72:20 | access to parameter b | false | -| Assert.cs:72:20:72:32 | ... ? ... : ... | non-null | Assert.cs:72:31:72:32 | "" | non-null | -| Assert.cs:72:20:72:32 | ... ? ... : ... | null | Assert.cs:72:20:72:20 | access to parameter b | true | -| Assert.cs:72:20:72:32 | ... ? ... : ... | null | Assert.cs:72:24:72:27 | null | null | -| Assert.cs:73:23:73:23 | access to local variable s | empty | Assert.cs:72:20:72:32 | ... ? ... : ... | empty | -| Assert.cs:73:23:73:23 | access to local variable s | non-empty | Assert.cs:72:20:72:32 | ... ? ... : ... | non-empty | -| Assert.cs:73:23:73:23 | access to local variable s | non-null | Assert.cs:72:20:72:32 | ... ? ... : ... | non-null | -| Assert.cs:73:23:73:23 | access to local variable s | null | Assert.cs:72:20:72:32 | ... ? ... : ... | null | -| Assert.cs:73:23:73:31 | ... == ... | false | Assert.cs:72:20:72:20 | access to parameter b | false | -| Assert.cs:73:23:73:31 | ... == ... | false | Assert.cs:73:23:73:23 | access to local variable s | non-null | -| Assert.cs:73:23:73:31 | ... == ... | true | Assert.cs:72:20:72:20 | access to parameter b | true | -| Assert.cs:73:23:73:31 | ... == ... | true | Assert.cs:73:23:73:23 | access to local variable s | null | -| Assert.cs:73:23:73:36 | ... && ... | true | Assert.cs:73:23:73:31 | ... == ... | true | -| Assert.cs:73:23:73:36 | ... && ... | true | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:74:27:74:27 | access to local variable s | non-null | Assert.cs:72:20:72:32 | ... ? ... : ... | non-null | -| Assert.cs:74:27:74:27 | access to local variable s | null | Assert.cs:72:20:72:32 | ... ? ... : ... | null | -| Assert.cs:79:20:79:32 | ... ? ... : ... | non-null | Assert.cs:79:20:79:20 | access to parameter b | false | -| Assert.cs:79:20:79:32 | ... ? ... : ... | non-null | Assert.cs:79:31:79:32 | "" | non-null | -| Assert.cs:79:20:79:32 | ... ? ... : ... | null | Assert.cs:79:20:79:20 | access to parameter b | true | -| Assert.cs:79:20:79:32 | ... ? ... : ... | null | Assert.cs:79:24:79:27 | null | null | -| Assert.cs:80:24:80:24 | access to local variable s | empty | Assert.cs:79:20:79:32 | ... ? ... : ... | empty | -| Assert.cs:80:24:80:24 | access to local variable s | non-empty | Assert.cs:79:20:79:32 | ... ? ... : ... | non-empty | -| Assert.cs:80:24:80:24 | access to local variable s | non-null | Assert.cs:79:20:79:32 | ... ? ... : ... | non-null | -| Assert.cs:80:24:80:24 | access to local variable s | null | Assert.cs:79:20:79:32 | ... ? ... : ... | null | -| Assert.cs:80:24:80:32 | ... != ... | false | Assert.cs:79:20:79:20 | access to parameter b | true | -| Assert.cs:80:24:80:32 | ... != ... | false | Assert.cs:80:24:80:24 | access to local variable s | null | -| Assert.cs:80:24:80:32 | ... != ... | true | Assert.cs:79:20:79:20 | access to parameter b | false | -| Assert.cs:80:24:80:32 | ... != ... | true | Assert.cs:80:24:80:24 | access to local variable s | non-null | -| Assert.cs:80:24:80:37 | ... \|\| ... | false | Assert.cs:80:24:80:32 | ... != ... | false | -| Assert.cs:80:24:80:37 | ... \|\| ... | false | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:81:27:81:27 | access to local variable s | non-null | Assert.cs:79:20:79:32 | ... ? ... : ... | non-null | -| Assert.cs:81:27:81:27 | access to local variable s | null | Assert.cs:79:20:79:32 | ... ? ... : ... | null | -| Assert.cs:94:16:94:24 | ... && ... | true | Assert.cs:94:16:94:17 | access to parameter b1 | true | -| Assert.cs:94:16:94:24 | ... && ... | true | Assert.cs:94:22:94:24 | !... | true | -| Assert.cs:94:22:94:24 | !... | false | Assert.cs:94:23:94:24 | access to parameter b2 | true | -| Assert.cs:94:22:94:24 | !... | true | Assert.cs:94:23:94:24 | access to parameter b2 | false | -| Collections.cs:11:17:11:32 | ... == ... | false | Collections.cs:11:17:11:20 | access to parameter args | non-empty | -| Collections.cs:11:17:11:32 | ... == ... | true | Collections.cs:11:17:11:20 | access to parameter args | empty | -| Collections.cs:12:13:12:28 | ... == ... | true | Collections.cs:12:13:12:16 | access to parameter args | non-empty | -| Collections.cs:13:13:13:28 | ... != ... | false | Collections.cs:13:13:13:16 | access to parameter args | empty | -| Collections.cs:13:13:13:28 | ... != ... | true | Collections.cs:13:13:13:16 | access to parameter args | non-empty | -| Collections.cs:14:13:14:28 | ... != ... | false | Collections.cs:14:13:14:16 | access to parameter args | non-empty | -| Collections.cs:15:13:15:27 | ... > ... | true | Collections.cs:15:13:15:16 | access to parameter args | non-empty | -| Collections.cs:17:13:17:28 | ... >= ... | true | Collections.cs:17:13:17:16 | access to parameter args | non-empty | -| Collections.cs:22:17:22:31 | ... == ... | false | Collections.cs:22:17:22:20 | access to parameter args | non-empty | -| Collections.cs:22:17:22:31 | ... == ... | true | Collections.cs:22:17:22:20 | access to parameter args | empty | -| Collections.cs:23:13:23:27 | ... == ... | true | Collections.cs:23:13:23:16 | access to parameter args | non-empty | -| Collections.cs:24:13:24:27 | ... != ... | false | Collections.cs:24:13:24:16 | access to parameter args | empty | -| Collections.cs:24:13:24:27 | ... != ... | true | Collections.cs:24:13:24:16 | access to parameter args | non-empty | -| Collections.cs:25:13:25:27 | ... != ... | false | Collections.cs:25:13:25:16 | access to parameter args | non-empty | -| Collections.cs:26:13:26:26 | ... > ... | true | Collections.cs:26:13:26:16 | access to parameter args | non-empty | -| Collections.cs:28:13:28:27 | ... >= ... | true | Collections.cs:28:13:28:16 | access to parameter args | non-empty | -| Collections.cs:33:17:33:33 | ... == ... | false | Collections.cs:33:17:33:20 | access to parameter args | non-empty | -| Collections.cs:33:17:33:33 | ... == ... | true | Collections.cs:33:17:33:20 | access to parameter args | empty | -| Collections.cs:34:13:34:29 | ... == ... | true | Collections.cs:34:13:34:16 | access to parameter args | non-empty | -| Collections.cs:35:13:35:29 | ... != ... | false | Collections.cs:35:13:35:16 | access to parameter args | empty | -| Collections.cs:35:13:35:29 | ... != ... | true | Collections.cs:35:13:35:16 | access to parameter args | non-empty | -| Collections.cs:36:13:36:29 | ... != ... | false | Collections.cs:36:13:36:16 | access to parameter args | non-empty | -| Collections.cs:37:13:37:28 | ... > ... | true | Collections.cs:37:13:37:16 | access to parameter args | non-empty | -| Collections.cs:39:13:39:29 | ... >= ... | true | Collections.cs:39:13:39:16 | access to parameter args | non-empty | -| Collections.cs:44:17:44:26 | call to method Any | false | Collections.cs:44:17:44:20 | access to parameter args | empty | -| Collections.cs:44:17:44:26 | call to method Any | true | Collections.cs:44:17:44:20 | access to parameter args | non-empty | -| Collections.cs:49:13:49:27 | ... == ... | false | Collections.cs:49:13:49:16 | access to parameter args | non-empty | -| Collections.cs:49:13:49:27 | ... == ... | true | Collections.cs:49:13:49:16 | access to parameter args | empty | -| Collections.cs:55:13:55:13 | access to local variable x | empty | Collections.cs:54:13:54:42 | array creation of type String[] | empty | -| Collections.cs:55:13:55:13 | access to local variable x | non-empty | Collections.cs:54:13:54:42 | array creation of type String[] | non-empty | -| Collections.cs:55:13:55:13 | access to local variable x | non-null | Collections.cs:54:13:54:42 | array creation of type String[] | non-null | -| Collections.cs:55:13:55:13 | access to local variable x | null | Collections.cs:54:13:54:42 | array creation of type String[] | null | -| Collections.cs:57:13:57:13 | access to local variable x | empty | Collections.cs:56:13:56:25 | array creation of type String[] | empty | -| Collections.cs:57:13:57:13 | access to local variable x | non-empty | Collections.cs:56:13:56:25 | array creation of type String[] | non-empty | -| Collections.cs:57:13:57:13 | access to local variable x | non-null | Collections.cs:56:13:56:25 | array creation of type String[] | non-null | -| Collections.cs:57:13:57:13 | access to local variable x | null | Collections.cs:56:13:56:25 | array creation of type String[] | null | -| Collections.cs:63:9:63:9 | access to local variable x | empty | Collections.cs:62:17:62:55 | call to method ToList | empty | -| Collections.cs:63:9:63:9 | access to local variable x | non-empty | Collections.cs:62:17:62:55 | call to method ToList | non-empty | -| Collections.cs:63:9:63:9 | access to local variable x | non-null | Collections.cs:62:17:62:55 | call to method ToList | non-null | -| Collections.cs:63:9:63:9 | access to local variable x | null | Collections.cs:62:17:62:55 | call to method ToList | null | -| Collections.cs:64:13:64:13 | access to local variable x | non-null | Collections.cs:62:17:62:55 | call to method ToList | non-null | -| Collections.cs:64:13:64:13 | access to local variable x | null | Collections.cs:62:17:62:55 | call to method ToList | null | -| Collections.cs:64:13:64:24 | ... == ... | false | Collections.cs:64:13:64:13 | access to local variable x | non-empty | -| Collections.cs:64:13:64:24 | ... == ... | true | Collections.cs:64:13:64:13 | access to local variable x | empty | -| Collections.cs:66:13:66:13 | access to local variable x | non-null | Collections.cs:62:17:62:55 | call to method ToList | non-null | -| Collections.cs:66:13:66:13 | access to local variable x | null | Collections.cs:62:17:62:55 | call to method ToList | null | -| Collections.cs:67:13:67:13 | access to local variable x | non-null | Collections.cs:62:17:62:55 | call to method ToList | non-null | -| Collections.cs:67:13:67:13 | access to local variable x | null | Collections.cs:62:17:62:55 | call to method ToList | null | -| Collections.cs:73:35:73:41 | ... == ... | true | Collections.cs:73:35:73:35 | access to parameter s | non-null | -| Collections.cs:73:35:73:41 | ... == ... | true | Collections.cs:73:40:73:41 | "" | non-null | -| Collections.cs:74:17:74:33 | call to method Any | true | Collections.cs:74:17:74:20 | access to parameter args | non-empty | -| Collections.cs:75:13:75:36 | ... == ... | false | Collections.cs:75:13:75:16 | access to parameter args | non-empty | -| Collections.cs:76:13:76:36 | ... == ... | true | Collections.cs:76:13:76:16 | access to parameter args | non-empty | -| Collections.cs:77:13:77:36 | ... != ... | true | Collections.cs:77:13:77:16 | access to parameter args | non-empty | -| Collections.cs:78:13:78:36 | ... != ... | false | Collections.cs:78:13:78:16 | access to parameter args | non-empty | -| Collections.cs:79:13:79:35 | ... > ... | true | Collections.cs:79:13:79:16 | access to parameter args | non-empty | -| Collections.cs:81:13:81:36 | ... >= ... | true | Collections.cs:81:13:81:16 | access to parameter args | non-empty | -| Guards.cs:10:13:10:25 | !... | false | Guards.cs:10:14:10:25 | !... | true | -| Guards.cs:10:13:10:25 | !... | true | Guards.cs:10:14:10:25 | !... | false | -| Guards.cs:10:14:10:25 | !... | false | Guards.cs:10:16:10:24 | ... == ... | true | -| Guards.cs:10:14:10:25 | !... | true | Guards.cs:10:16:10:24 | ... == ... | false | -| Guards.cs:10:16:10:24 | ... == ... | false | Guards.cs:10:16:10:16 | access to parameter s | non-null | -| Guards.cs:10:16:10:24 | ... == ... | true | Guards.cs:10:16:10:16 | access to parameter s | null | -| Guards.cs:24:13:24:21 | ... != ... | false | Guards.cs:24:13:24:13 | access to parameter s | null | -| Guards.cs:24:13:24:21 | ... != ... | true | Guards.cs:24:13:24:13 | access to parameter s | non-null | -| Guards.cs:32:13:32:36 | !... | false | Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | true | -| Guards.cs:32:13:32:36 | !... | true | Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | false | -| Guards.cs:32:13:32:51 | ... & ... | true | Guards.cs:32:13:32:36 | !... | true | -| Guards.cs:32:13:32:51 | ... & ... | true | Guards.cs:32:40:32:51 | !... | true | -| Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | false | Guards.cs:32:35:32:35 | access to parameter x | non-null | -| Guards.cs:32:40:32:51 | !... | false | Guards.cs:32:42:32:50 | ... == ... | true | -| Guards.cs:32:40:32:51 | !... | true | Guards.cs:32:42:32:50 | ... == ... | false | -| Guards.cs:32:42:32:50 | ... == ... | false | Guards.cs:32:42:32:42 | access to parameter y | non-null | -| Guards.cs:32:42:32:50 | ... == ... | true | Guards.cs:32:42:32:42 | access to parameter y | null | -| Guards.cs:33:31:33:35 | ... + ... | non-null | Guards.cs:33:31:33:31 | access to parameter x | non-null | -| Guards.cs:33:31:33:35 | ... + ... | non-null | Guards.cs:33:35:33:35 | access to parameter y | non-null | -| Guards.cs:35:13:35:21 | ... == ... | false | Guards.cs:35:13:35:13 | access to parameter x | non-null | -| Guards.cs:35:13:35:21 | ... == ... | true | Guards.cs:35:13:35:13 | access to parameter x | null | -| Guards.cs:35:13:35:34 | ... \|\| ... | false | Guards.cs:35:13:35:21 | ... == ... | false | -| Guards.cs:35:13:35:34 | ... \|\| ... | false | Guards.cs:35:26:35:34 | ... == ... | false | -| Guards.cs:35:26:35:34 | ... == ... | false | Guards.cs:35:26:35:26 | access to parameter y | non-null | -| Guards.cs:35:26:35:34 | ... == ... | true | Guards.cs:35:26:35:26 | access to parameter y | null | -| Guards.cs:36:32:36:36 | ... + ... | non-null | Guards.cs:36:32:36:32 | access to parameter x | non-null | -| Guards.cs:36:32:36:36 | ... + ... | non-null | Guards.cs:36:36:36:36 | access to parameter y | non-null | -| Guards.cs:36:32:36:36 | ... + ... | null | Guards.cs:36:32:36:32 | access to parameter x | null | -| Guards.cs:36:32:36:36 | ... + ... | null | Guards.cs:36:36:36:36 | access to parameter y | null | -| Guards.cs:38:13:38:37 | !... | false | Guards.cs:38:15:38:36 | ... \|\| ... | true | -| Guards.cs:38:13:38:37 | !... | true | Guards.cs:38:15:38:36 | ... \|\| ... | false | -| Guards.cs:38:15:38:23 | ... == ... | false | Guards.cs:38:15:38:15 | access to parameter x | non-null | -| Guards.cs:38:15:38:23 | ... == ... | true | Guards.cs:38:15:38:15 | access to parameter x | null | -| Guards.cs:38:15:38:36 | ... \|\| ... | false | Guards.cs:38:15:38:23 | ... == ... | false | -| Guards.cs:38:15:38:36 | ... \|\| ... | false | Guards.cs:38:28:38:36 | ... == ... | false | -| Guards.cs:38:28:38:36 | ... == ... | false | Guards.cs:38:28:38:28 | access to parameter y | non-null | -| Guards.cs:38:28:38:36 | ... == ... | true | Guards.cs:38:28:38:28 | access to parameter y | null | -| Guards.cs:39:31:39:35 | ... + ... | non-null | Guards.cs:39:31:39:31 | access to parameter x | non-null | -| Guards.cs:39:31:39:35 | ... + ... | non-null | Guards.cs:39:35:39:35 | access to parameter y | non-null | -| Guards.cs:39:31:39:35 | ... + ... | null | Guards.cs:39:31:39:31 | access to parameter x | null | -| Guards.cs:39:31:39:35 | ... + ... | null | Guards.cs:39:35:39:35 | access to parameter y | null | -| Guards.cs:41:13:41:39 | !... | false | Guards.cs:41:14:41:39 | !... | true | -| Guards.cs:41:13:41:39 | !... | true | Guards.cs:41:14:41:39 | !... | false | -| Guards.cs:41:14:41:39 | !... | false | Guards.cs:41:15:41:39 | !... | true | -| Guards.cs:41:14:41:39 | !... | true | Guards.cs:41:15:41:39 | !... | false | -| Guards.cs:41:15:41:39 | !... | false | Guards.cs:41:17:41:38 | ... && ... | true | -| Guards.cs:41:15:41:39 | !... | true | Guards.cs:41:17:41:38 | ... && ... | false | -| Guards.cs:41:17:41:25 | ... != ... | false | Guards.cs:41:17:41:17 | access to parameter x | null | -| Guards.cs:41:17:41:25 | ... != ... | true | Guards.cs:41:17:41:17 | access to parameter x | non-null | -| Guards.cs:41:17:41:38 | ... && ... | true | Guards.cs:41:17:41:25 | ... != ... | true | -| Guards.cs:41:17:41:38 | ... && ... | true | Guards.cs:41:30:41:38 | ... != ... | true | -| Guards.cs:41:30:41:38 | ... != ... | false | Guards.cs:41:30:41:30 | access to parameter y | null | -| Guards.cs:41:30:41:38 | ... != ... | true | Guards.cs:41:30:41:30 | access to parameter y | non-null | -| Guards.cs:42:32:42:36 | ... + ... | non-null | Guards.cs:42:32:42:32 | access to parameter x | non-null | -| Guards.cs:42:32:42:36 | ... + ... | non-null | Guards.cs:42:36:42:36 | access to parameter y | non-null | -| Guards.cs:42:32:42:36 | ... + ... | null | Guards.cs:42:32:42:32 | access to parameter x | null | -| Guards.cs:42:32:42:36 | ... + ... | null | Guards.cs:42:36:42:36 | access to parameter y | null | -| Guards.cs:44:13:44:25 | ... != ... | false | Guards.cs:44:13:44:17 | access to field Field | null | -| Guards.cs:44:13:44:25 | ... != ... | true | Guards.cs:44:13:44:17 | access to field Field | non-null | -| Guards.cs:47:13:47:25 | ... != ... | false | Guards.cs:47:13:47:17 | access to field Field | null | -| Guards.cs:47:13:47:25 | ... != ... | true | Guards.cs:47:13:47:17 | access to field Field | non-null | -| Guards.cs:53:13:53:27 | ... == ... | false | Guards.cs:53:13:53:19 | access to field Field | non-null | -| Guards.cs:53:13:53:27 | ... == ... | true | Guards.cs:53:13:53:19 | access to field Field | null | -| Guards.cs:60:13:60:45 | ... == ... | false | Guards.cs:60:13:60:37 | access to field Field | non-null | -| Guards.cs:60:13:60:45 | ... == ... | true | Guards.cs:60:13:60:37 | access to field Field | null | -| Guards.cs:68:16:68:24 | ... != ... | false | Guards.cs:68:16:68:16 | access to parameter s | null | -| Guards.cs:68:16:68:24 | ... != ... | true | Guards.cs:68:16:68:16 | access to parameter s | non-null | -| Guards.cs:72:31:72:31 | access to parameter s | empty | Guards.cs:71:17:71:20 | null | empty | -| Guards.cs:72:31:72:31 | access to parameter s | non-empty | Guards.cs:71:17:71:20 | null | non-empty | -| Guards.cs:72:31:72:31 | access to parameter s | non-null | Guards.cs:71:17:71:20 | null | non-null | -| Guards.cs:72:31:72:31 | access to parameter s | null | Guards.cs:71:17:71:20 | null | null | -| Guards.cs:78:13:78:21 | access to property Length | non-null | Guards.cs:78:13:78:13 | access to parameter s | non-null | -| Guards.cs:78:13:78:21 | access to property Length | null | Guards.cs:78:13:78:13 | access to parameter s | null | -| Guards.cs:78:13:78:26 | ... == ... | true | Guards.cs:78:13:78:21 | access to property Length | non-null | -| Guards.cs:80:13:80:21 | access to property Length | non-null | Guards.cs:80:13:80:13 | access to parameter s | non-null | -| Guards.cs:80:13:80:21 | access to property Length | null | Guards.cs:80:13:80:13 | access to parameter s | null | -| Guards.cs:80:13:80:25 | ... > ... | true | Guards.cs:80:13:80:21 | access to property Length | non-null | -| Guards.cs:82:13:82:21 | access to property Length | non-null | Guards.cs:82:13:82:13 | access to parameter s | non-null | -| Guards.cs:82:13:82:21 | access to property Length | null | Guards.cs:82:13:82:13 | access to parameter s | null | -| Guards.cs:82:13:82:26 | ... >= ... | true | Guards.cs:82:13:82:21 | access to property Length | non-null | -| Guards.cs:84:13:84:21 | access to property Length | non-null | Guards.cs:84:13:84:13 | access to parameter s | non-null | -| Guards.cs:84:13:84:21 | access to property Length | null | Guards.cs:84:13:84:13 | access to parameter s | null | -| Guards.cs:84:13:84:26 | ... < ... | true | Guards.cs:84:13:84:21 | access to property Length | non-null | -| Guards.cs:86:13:86:21 | access to property Length | non-null | Guards.cs:86:13:86:13 | access to parameter s | non-null | -| Guards.cs:86:13:86:21 | access to property Length | null | Guards.cs:86:13:86:13 | access to parameter s | null | -| Guards.cs:86:13:86:27 | ... <= ... | true | Guards.cs:86:13:86:21 | access to property Length | non-null | -| Guards.cs:88:13:88:21 | access to property Length | non-null | Guards.cs:88:13:88:13 | access to parameter s | non-null | -| Guards.cs:88:13:88:21 | access to property Length | null | Guards.cs:88:13:88:13 | access to parameter s | null | -| Guards.cs:88:13:88:29 | ... != ... | false | Guards.cs:88:13:88:21 | access to property Length | null | -| Guards.cs:88:13:88:29 | ... != ... | true | Guards.cs:88:13:88:21 | access to property Length | non-null | -| Guards.cs:92:13:92:21 | access to property Length | non-null | Guards.cs:92:13:92:13 | access to parameter s | non-null | -| Guards.cs:92:13:92:21 | access to property Length | null | Guards.cs:92:13:92:13 | access to parameter s | null | -| Guards.cs:92:13:92:25 | ... - ... | non-null | Guards.cs:92:13:92:21 | access to property Length | non-null | -| Guards.cs:92:13:92:25 | ... - ... | non-null | Guards.cs:92:25:92:25 | (...) ... | non-null | -| Guards.cs:92:13:92:25 | ... - ... | null | Guards.cs:92:13:92:21 | access to property Length | null | -| Guards.cs:92:13:92:30 | ... != ... | false | Guards.cs:92:13:92:25 | ... - ... | non-null | -| Guards.cs:96:13:96:19 | ... == ... | true | Guards.cs:96:13:96:13 | access to parameter s | non-null | -| Guards.cs:104:13:104:45 | ... == ... | false | Guards.cs:104:13:104:37 | access to field Field | non-null | -| Guards.cs:104:13:104:45 | ... == ... | true | Guards.cs:104:13:104:37 | access to field Field | null | -| Guards.cs:107:27:107:36 | access to property Property | non-null | Guards.cs:106:22:106:25 | null | non-null | -| Guards.cs:107:27:107:36 | access to property Property | null | Guards.cs:106:22:106:25 | null | null | -| Guards.cs:108:27:108:36 | access to property Property | non-null | Guards.cs:106:22:106:25 | null | non-null | -| Guards.cs:108:27:108:36 | access to property Property | null | Guards.cs:106:22:106:25 | null | null | -| Guards.cs:113:21:114:38 | ... ?? ... | null | Guards.cs:113:21:113:45 | access to field Field | null | -| Guards.cs:113:21:114:38 | ... ?? ... | null | Guards.cs:114:14:114:38 | access to field Field | null | -| Guards.cs:115:17:115:55 | ... ?? ... | null | Guards.cs:115:17:115:41 | access to field Field | null | -| Guards.cs:115:17:115:55 | ... ?? ... | null | Guards.cs:115:46:115:55 | throw ... | null | -| Guards.cs:118:27:118:36 | access to property Property | non-null | Guards.cs:117:22:117:25 | null | non-null | -| Guards.cs:118:27:118:36 | access to property Property | null | Guards.cs:117:22:117:25 | null | null | -| Guards.cs:119:27:119:36 | access to property Property | non-null | Guards.cs:117:22:117:25 | null | non-null | -| Guards.cs:119:27:119:36 | access to property Property | null | Guards.cs:117:22:117:25 | null | null | -| Guards.cs:125:18:125:31 | call to method Equals | non-null | Guards.cs:125:18:125:19 | access to parameter s1 | non-null | -| Guards.cs:125:18:125:31 | call to method Equals | null | Guards.cs:125:18:125:19 | access to parameter s1 | null | -| Guards.cs:125:18:125:31 | call to method Equals | true | Guards.cs:125:18:125:19 | access to parameter s1 | non-null | -| Guards.cs:125:18:125:31 | call to method Equals | true | Guards.cs:125:29:125:30 | access to parameter s1 | non-null | -| Guards.cs:130:13:130:21 | ... is ... | false | Guards.cs:130:13:130:13 | access to parameter s | non-null | -| Guards.cs:130:13:130:21 | ... is ... | true | Guards.cs:130:13:130:13 | access to parameter s | null | -| Guards.cs:137:13:137:25 | ... is ... | false | Guards.cs:137:13:137:13 | access to parameter s | null | -| Guards.cs:137:13:137:25 | ... is ... | true | Guards.cs:137:13:137:13 | access to parameter s | non-null | -| Guards.cs:144:13:144:25 | ... is ... | true | Guards.cs:144:13:144:13 | access to parameter o | non-null | -| Guards.cs:145:20:145:20 | access to local variable s | empty | Guards.cs:144:13:144:13 | access to parameter o | empty | -| Guards.cs:145:20:145:20 | access to local variable s | non-empty | Guards.cs:144:13:144:13 | access to parameter o | non-empty | -| Guards.cs:145:20:145:20 | access to local variable s | non-null | Guards.cs:144:13:144:13 | access to parameter o | non-null | -| Guards.cs:145:20:145:20 | access to local variable s | null | Guards.cs:144:13:144:13 | access to parameter o | null | -| Guards.cs:151:17:151:17 | access to parameter o | match "" | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:151:17:151:17 | access to parameter o | match Action a | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:151:17:151:17 | access to parameter o | match access to type Action | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:151:17:151:17 | access to parameter o | match null | Guards.cs:151:17:151:17 | access to parameter o | null | -| Guards.cs:151:17:151:17 | access to parameter o | non-match null | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:156:24:156:24 | access to local variable a | non-null | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:156:24:156:24 | access to local variable a | null | Guards.cs:151:17:151:17 | access to parameter o | null | -| Guards.cs:168:13:168:41 | !... | false | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | true | -| Guards.cs:168:13:168:41 | !... | true | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | false | -| Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | false | Guards.cs:168:40:168:40 | access to parameter x | non-null | -| Guards.cs:172:34:172:42 | ... == ... | false | Guards.cs:172:34:172:34 | access to parameter o | non-null | -| Guards.cs:172:34:172:42 | ... == ... | true | Guards.cs:172:34:172:34 | access to parameter o | null | -| Guards.cs:176:13:176:21 | ... is ... | false | Guards.cs:176:13:176:13 | access to parameter o | non-null | -| Guards.cs:176:13:176:21 | ... is ... | true | Guards.cs:176:13:176:13 | access to parameter o | null | -| Guards.cs:181:34:181:42 | ... == ... | false | Guards.cs:181:34:181:34 | access to parameter o | non-null | -| Guards.cs:181:34:181:42 | ... == ... | true | Guards.cs:181:34:181:34 | access to parameter o | null | -| Guards.cs:181:34:181:57 | ... ? ... : ... | false | Guards.cs:181:34:181:42 | ... == ... | false | -| Guards.cs:181:34:181:57 | ... ? ... : ... | true | Guards.cs:181:34:181:42 | ... == ... | true | -| Guards.cs:183:37:183:49 | !... | false | Guards.cs:183:38:183:49 | call to method NullTest3 | true | -| Guards.cs:183:37:183:49 | !... | true | Guards.cs:183:38:183:49 | call to method NullTest3 | false | -| Guards.cs:183:38:183:49 | call to method NullTest3 | false | Guards.cs:183:48:183:48 | access to parameter o | non-null | -| Guards.cs:183:38:183:49 | call to method NullTest3 | true | Guards.cs:183:48:183:48 | access to parameter o | null | -| Guards.cs:185:38:185:46 | ... == ... | false | Guards.cs:185:38:185:38 | access to parameter o | non-null | -| Guards.cs:185:38:185:46 | ... == ... | true | Guards.cs:185:38:185:38 | access to parameter o | null | -| Guards.cs:185:38:185:60 | ... ? ... : ... | false | Guards.cs:185:38:185:46 | ... == ... | false | -| Guards.cs:185:38:185:60 | ... ? ... : ... | false | Guards.cs:185:38:185:46 | ... == ... | true | -| Guards.cs:189:13:189:25 | !... | false | Guards.cs:189:14:189:25 | call to method NullTest1 | true | -| Guards.cs:189:13:189:25 | !... | true | Guards.cs:189:14:189:25 | call to method NullTest1 | false | -| Guards.cs:189:14:189:25 | call to method NullTest1 | false | Guards.cs:189:24:189:24 | access to parameter s | non-null | -| Guards.cs:189:14:189:25 | call to method NullTest1 | true | Guards.cs:189:24:189:24 | access to parameter s | null | -| Guards.cs:191:13:191:25 | !... | false | Guards.cs:191:14:191:25 | call to method NullTest2 | true | -| Guards.cs:191:13:191:25 | !... | true | Guards.cs:191:14:191:25 | call to method NullTest2 | false | -| Guards.cs:191:14:191:25 | call to method NullTest2 | false | Guards.cs:191:24:191:24 | access to parameter s | non-null | -| Guards.cs:191:14:191:25 | call to method NullTest2 | true | Guards.cs:191:24:191:24 | access to parameter s | null | -| Guards.cs:193:13:193:25 | !... | false | Guards.cs:193:14:193:25 | call to method NullTest3 | true | -| Guards.cs:193:13:193:25 | !... | true | Guards.cs:193:14:193:25 | call to method NullTest3 | false | -| Guards.cs:193:14:193:25 | call to method NullTest3 | false | Guards.cs:193:24:193:24 | access to parameter s | non-null | -| Guards.cs:193:14:193:25 | call to method NullTest3 | true | Guards.cs:193:24:193:24 | access to parameter s | null | -| Guards.cs:195:13:195:27 | call to method NotNullTest4 | false | Guards.cs:195:26:195:26 | access to parameter s | null | -| Guards.cs:195:13:195:27 | call to method NotNullTest4 | true | Guards.cs:195:26:195:26 | access to parameter s | non-null | -| Guards.cs:197:13:197:29 | !... | false | Guards.cs:197:14:197:29 | call to method NullTestWrong | true | -| Guards.cs:197:13:197:29 | !... | true | Guards.cs:197:14:197:29 | call to method NullTestWrong | false | -| Guards.cs:203:13:203:21 | ... != ... | false | Guards.cs:203:13:203:13 | access to parameter o | null | -| Guards.cs:203:13:203:21 | ... != ... | true | Guards.cs:203:13:203:13 | access to parameter o | non-null | -| Guards.cs:218:17:218:18 | access to local variable b2 | match true | Guards.cs:216:13:216:14 | access to parameter b1 | false | -| Guards.cs:218:17:218:18 | access to local variable b2 | match true | Guards.cs:218:17:218:18 | access to local variable b2 | true | -| Guards.cs:231:17:231:18 | access to local variable b2 | match true | Guards.cs:229:13:229:14 | access to parameter b1 | true | -| Guards.cs:231:17:231:18 | access to local variable b2 | match true | Guards.cs:231:17:231:18 | access to local variable b2 | true | -| Guards.cs:231:17:231:18 | access to local variable b2 | non-match true | Guards.cs:229:13:229:14 | access to parameter b1 | false | -| Guards.cs:244:17:244:17 | access to local variable i | match 1 | Guards.cs:242:13:242:13 | access to parameter b | true | -| Guards.cs:244:17:244:17 | access to local variable i | match 1 | Guards.cs:244:17:244:17 | access to local variable i | 1 | -| Guards.cs:244:17:244:17 | access to local variable i | non-match 1 | Guards.cs:242:13:242:13 | access to parameter b | false | -| Guards.cs:258:17:258:17 | access to local variable e | match access to constant B | Guards.cs:256:13:256:13 | access to parameter b | true | -| Guards.cs:258:17:258:17 | access to local variable e | match access to constant B | Guards.cs:258:17:258:17 | access to local variable e | 1 | -| Guards.cs:258:17:258:17 | access to local variable e | non-match access to constant B | Guards.cs:256:13:256:13 | access to parameter b | false | -| Guards.cs:268:13:268:25 | call to method GetType | non-null | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | -| Guards.cs:268:13:268:41 | call to operator == | true | Guards.cs:268:13:268:25 | call to method GetType | non-null | -| Guards.cs:270:13:270:25 | call to method GetType | non-null | Guards.cs:270:13:270:14 | access to parameter o1 | non-null | -| Guards.cs:270:30:270:42 | call to method GetType | non-null | Guards.cs:270:30:270:31 | access to parameter o2 | non-null | -| Guards.cs:276:16:276:16 | access to parameter o | match "" | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:276:16:276:16 | access to parameter o | match Action a | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:276:16:276:16 | access to parameter o | match access to type Action | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:276:16:276:16 | access to parameter o | match null | Guards.cs:276:16:276:16 | access to parameter o | null | -| Guards.cs:276:16:276:16 | access to parameter o | non-match null | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:278:13:279:28 | ... => ... | true | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:280:13:281:28 | ... => ... | true | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:281:17:281:17 | access to local variable a | non-null | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:281:17:281:17 | access to local variable a | null | Guards.cs:276:16:276:16 | access to parameter o | null | -| Guards.cs:282:13:283:28 | ... => ... | true | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:284:13:285:28 | ... => ... | false | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:284:13:285:28 | ... => ... | true | Guards.cs:276:16:276:16 | access to parameter o | null | -| Guards.cs:286:13:287:28 | ... => ... | true | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:296:16:296:17 | access to local variable b2 | match true | Guards.cs:294:13:294:14 | access to parameter b1 | false | -| Guards.cs:296:16:296:17 | access to local variable b2 | match true | Guards.cs:296:16:296:17 | access to local variable b2 | true | -| Guards.cs:308:16:308:17 | access to local variable b2 | match true | Guards.cs:306:13:306:14 | access to parameter b1 | true | -| Guards.cs:308:16:308:17 | access to local variable b2 | match true | Guards.cs:308:16:308:17 | access to local variable b2 | true | -| Guards.cs:308:16:308:17 | access to local variable b2 | non-match true | Guards.cs:306:13:306:14 | access to parameter b1 | false | -| Guards.cs:320:16:320:16 | access to local variable i | match 1 | Guards.cs:318:13:318:13 | access to parameter b | true | -| Guards.cs:320:16:320:16 | access to local variable i | match 1 | Guards.cs:320:16:320:16 | access to local variable i | 1 | -| Guards.cs:320:16:320:16 | access to local variable i | non-match 1 | Guards.cs:318:13:318:13 | access to parameter b | false | -| Guards.cs:332:16:332:16 | access to local variable e | match access to constant B | Guards.cs:330:13:330:13 | access to parameter b | true | -| Guards.cs:332:16:332:16 | access to local variable e | match access to constant B | Guards.cs:332:16:332:16 | access to local variable e | 1 | -| Guards.cs:332:16:332:16 | access to local variable e | non-match access to constant B | Guards.cs:330:13:330:13 | access to parameter b | false | -| Guards.cs:341:20:341:32 | ... ? ... : ... | non-null | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:341:20:341:32 | ... ? ... : ... | non-null | Guards.cs:341:31:341:32 | "" | non-null | -| Guards.cs:341:20:341:32 | ... ? ... : ... | null | Guards.cs:341:20:341:20 | access to parameter b | true | -| Guards.cs:341:20:341:32 | ... ? ... : ... | null | Guards.cs:341:24:341:27 | null | null | -| Guards.cs:342:13:342:13 | access to local variable s | empty | Guards.cs:341:20:341:32 | ... ? ... : ... | empty | -| Guards.cs:342:13:342:13 | access to local variable s | non-empty | Guards.cs:341:20:341:32 | ... ? ... : ... | non-empty | -| Guards.cs:342:13:342:13 | access to local variable s | non-null | Guards.cs:341:20:341:32 | ... ? ... : ... | non-null | -| Guards.cs:342:13:342:13 | access to local variable s | null | Guards.cs:341:20:341:32 | ... ? ... : ... | null | -| Guards.cs:342:13:342:21 | ... != ... | false | Guards.cs:341:20:341:20 | access to parameter b | true | -| Guards.cs:342:13:342:21 | ... != ... | false | Guards.cs:342:13:342:13 | access to local variable s | null | -| Guards.cs:342:13:342:21 | ... != ... | true | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:342:13:342:21 | ... != ... | true | Guards.cs:342:13:342:13 | access to local variable s | non-null | -| Guards.cs:342:13:342:27 | ... && ... | true | Guards.cs:342:13:342:21 | ... != ... | true | -| Guards.cs:342:13:342:27 | ... && ... | true | Guards.cs:342:26:342:27 | !... | true | -| Guards.cs:342:26:342:27 | !... | false | Guards.cs:342:27:342:27 | access to parameter b | true | -| Guards.cs:342:26:342:27 | !... | true | Guards.cs:342:27:342:27 | access to parameter b | false | -| Guards.cs:343:31:343:31 | access to local variable s | non-null | Guards.cs:341:20:341:32 | ... ? ... : ... | non-null | -| Guards.cs:343:31:343:31 | access to local variable s | null | Guards.cs:341:20:341:32 | ... ? ... : ... | null | -| Guards.cs:348:13:348:25 | ... is ... | true | Guards.cs:348:13:348:13 | access to parameter o | non-null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Implications.ql b/csharp/ql/test/library-tests/controlflow/guards/Implications.ql deleted file mode 100644 index 0c185b1a2dc..00000000000 --- a/csharp/ql/test/library-tests/controlflow/guards/Implications.ql +++ /dev/null @@ -1,6 +0,0 @@ -import csharp -import semmle.code.csharp.controlflow.Guards - -query predicate impliesStep(Expr e1, AbstractValue v1, Expr e2, AbstractValue v2) { - Internal::impliesStep(e1, v1, e2, v2) -} diff --git a/csharp/ql/test/query-tests/Nullness/Implications.expected b/csharp/ql/test/query-tests/Nullness/Implications.expected deleted file mode 100644 index a3e70f0474b..00000000000 --- a/csharp/ql/test/query-tests/Nullness/Implications.expected +++ /dev/null @@ -1,1509 +0,0 @@ -| A.cs:8:15:8:32 | access to local variable synchronizedAlways | non-null | A.cs:7:37:7:40 | null | non-null | -| A.cs:8:15:8:32 | access to local variable synchronizedAlways | null | A.cs:7:37:7:40 | null | null | -| A.cs:10:13:10:30 | access to local variable synchronizedAlways | non-null | A.cs:7:37:7:40 | null | non-null | -| A.cs:10:13:10:30 | access to local variable synchronizedAlways | null | A.cs:7:37:7:40 | null | null | -| A.cs:17:9:17:17 | access to local variable arrayNull | empty | A.cs:16:27:16:30 | null | empty | -| A.cs:17:9:17:17 | access to local variable arrayNull | non-empty | A.cs:16:27:16:30 | null | non-empty | -| A.cs:17:9:17:17 | access to local variable arrayNull | non-null | A.cs:16:27:16:30 | null | non-null | -| A.cs:17:9:17:17 | access to local variable arrayNull | null | A.cs:16:27:16:30 | null | null | -| A.cs:21:9:21:15 | access to local variable arrayOk | empty | A.cs:20:19:20:29 | array creation of type Int32[] | empty | -| A.cs:21:9:21:15 | access to local variable arrayOk | non-empty | A.cs:20:19:20:29 | array creation of type Int32[] | non-empty | -| A.cs:21:9:21:15 | access to local variable arrayOk | non-null | A.cs:20:19:20:29 | array creation of type Int32[] | non-null | -| A.cs:21:9:21:15 | access to local variable arrayOk | null | A.cs:20:19:20:29 | array creation of type Int32[] | null | -| A.cs:31:27:31:37 | access to local variable arrayAccess | empty | A.cs:26:29:26:32 | null | empty | -| A.cs:31:27:31:37 | access to local variable arrayAccess | non-empty | A.cs:26:29:26:32 | null | non-empty | -| A.cs:31:27:31:37 | access to local variable arrayAccess | non-null | A.cs:26:29:26:32 | null | non-null | -| A.cs:31:27:31:37 | access to local variable arrayAccess | null | A.cs:26:29:26:32 | null | null | -| A.cs:32:27:32:37 | access to local variable fieldAccess | empty | A.cs:27:32:27:35 | null | empty | -| A.cs:32:27:32:37 | access to local variable fieldAccess | non-empty | A.cs:27:32:27:35 | null | non-empty | -| A.cs:32:27:32:37 | access to local variable fieldAccess | non-null | A.cs:27:32:27:35 | null | non-null | -| A.cs:32:27:32:37 | access to local variable fieldAccess | null | A.cs:27:32:27:35 | null | null | -| A.cs:33:28:33:39 | access to local variable methodAccess | non-null | A.cs:28:31:28:34 | null | non-null | -| A.cs:33:28:33:39 | access to local variable methodAccess | null | A.cs:28:31:28:34 | null | null | -| A.cs:34:27:34:36 | access to local variable methodCall | non-null | A.cs:29:29:29:32 | null | non-null | -| A.cs:34:27:34:36 | access to local variable methodCall | null | A.cs:29:29:29:32 | null | null | -| A.cs:36:27:36:37 | access to local variable arrayAccess | non-null | A.cs:26:29:26:32 | null | non-null | -| A.cs:36:27:36:37 | access to local variable arrayAccess | null | A.cs:26:29:26:32 | null | null | -| A.cs:37:27:37:37 | access to local variable fieldAccess | non-null | A.cs:27:32:27:35 | null | non-null | -| A.cs:37:27:37:37 | access to local variable fieldAccess | null | A.cs:27:32:27:35 | null | null | -| A.cs:38:15:38:26 | access to local variable methodAccess | non-null | A.cs:28:31:28:34 | null | non-null | -| A.cs:38:15:38:26 | access to local variable methodAccess | null | A.cs:28:31:28:34 | null | null | -| A.cs:39:27:39:36 | access to local variable methodCall | non-null | A.cs:29:29:29:32 | null | non-null | -| A.cs:39:27:39:36 | access to local variable methodCall | null | A.cs:29:29:29:32 | null | null | -| A.cs:49:25:49:30 | access to local variable varRef | non-null | A.cs:48:25:48:28 | null | non-null | -| A.cs:49:25:49:30 | access to local variable varRef | null | A.cs:48:25:48:28 | null | null | -| A.cs:50:9:50:14 | access to local variable varRef | non-null | A.cs:48:25:48:28 | null | non-null | -| A.cs:50:9:50:14 | access to local variable varRef | null | A.cs:48:25:48:28 | null | null | -| A.cs:53:25:53:30 | access to local variable varRef | non-null | A.cs:52:18:52:21 | null | non-null | -| A.cs:53:25:53:30 | access to local variable varRef | null | A.cs:52:18:52:21 | null | null | -| A.cs:61:36:61:45 | ... = ... | empty | A.cs:61:36:61:41 | access to local variable actual | empty | -| A.cs:61:36:61:45 | ... = ... | empty | A.cs:61:45:61:45 | access to parameter e | empty | -| A.cs:61:36:61:45 | ... = ... | non-empty | A.cs:61:36:61:41 | access to local variable actual | non-empty | -| A.cs:61:36:61:45 | ... = ... | non-empty | A.cs:61:45:61:45 | access to parameter e | non-empty | -| A.cs:61:36:61:45 | ... = ... | non-null | A.cs:61:36:61:41 | access to local variable actual | non-null | -| A.cs:61:36:61:45 | ... = ... | non-null | A.cs:61:45:61:45 | access to parameter e | non-null | -| A.cs:61:36:61:45 | ... = ... | null | A.cs:61:36:61:41 | access to local variable actual | null | -| A.cs:61:36:61:45 | ... = ... | null | A.cs:61:45:61:45 | access to parameter e | null | -| A.cs:63:9:63:11 | access to local variable fun | non-null | A.cs:61:26:61:45 | (...) => ... | non-null | -| A.cs:63:9:63:11 | access to local variable fun | null | A.cs:61:26:61:45 | (...) => ... | null | -| Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | Assert.cs:9:20:9:20 | access to parameter b | false | -| Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | Assert.cs:9:31:9:32 | "" | non-null | -| Assert.cs:9:20:9:32 | ... ? ... : ... | null | Assert.cs:9:20:9:20 | access to parameter b | true | -| Assert.cs:9:20:9:32 | ... ? ... : ... | null | Assert.cs:9:24:9:27 | null | null | -| Assert.cs:10:22:10:22 | access to local variable s | empty | Assert.cs:9:20:9:32 | ... ? ... : ... | empty | -| Assert.cs:10:22:10:22 | access to local variable s | non-empty | Assert.cs:9:20:9:32 | ... ? ... : ... | non-empty | -| Assert.cs:10:22:10:22 | access to local variable s | non-null | Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | -| Assert.cs:10:22:10:22 | access to local variable s | null | Assert.cs:9:20:9:32 | ... ? ... : ... | null | -| Assert.cs:10:22:10:30 | ... != ... | false | Assert.cs:9:20:9:20 | access to parameter b | true | -| Assert.cs:10:22:10:30 | ... != ... | false | Assert.cs:10:22:10:22 | access to local variable s | null | -| Assert.cs:10:22:10:30 | ... != ... | true | Assert.cs:9:20:9:20 | access to parameter b | false | -| Assert.cs:10:22:10:30 | ... != ... | true | Assert.cs:10:22:10:22 | access to local variable s | non-null | -| Assert.cs:11:27:11:27 | access to local variable s | non-null | Assert.cs:9:20:9:32 | ... ? ... : ... | non-null | -| Assert.cs:11:27:11:27 | access to local variable s | null | Assert.cs:9:20:9:32 | ... ? ... : ... | null | -| Assert.cs:13:13:13:25 | ... ? ... : ... | non-null | Assert.cs:13:13:13:13 | access to parameter b | false | -| Assert.cs:13:13:13:25 | ... ? ... : ... | non-null | Assert.cs:13:24:13:25 | "" | non-null | -| Assert.cs:13:13:13:25 | ... ? ... : ... | null | Assert.cs:13:13:13:13 | access to parameter b | true | -| Assert.cs:13:13:13:25 | ... ? ... : ... | null | Assert.cs:13:17:13:20 | null | null | -| Assert.cs:14:23:14:23 | access to local variable s | empty | Assert.cs:13:13:13:25 | ... ? ... : ... | empty | -| Assert.cs:14:23:14:23 | access to local variable s | non-empty | Assert.cs:13:13:13:25 | ... ? ... : ... | non-empty | -| Assert.cs:14:23:14:23 | access to local variable s | non-null | Assert.cs:13:13:13:13 | access to parameter b | false | -| Assert.cs:14:23:14:23 | access to local variable s | non-null | Assert.cs:13:13:13:25 | ... ? ... : ... | non-null | -| Assert.cs:14:23:14:23 | access to local variable s | null | Assert.cs:13:13:13:13 | access to parameter b | true | -| Assert.cs:14:23:14:23 | access to local variable s | null | Assert.cs:13:13:13:25 | ... ? ... : ... | null | -| Assert.cs:15:27:15:27 | access to local variable s | non-null | Assert.cs:13:13:13:25 | ... ? ... : ... | non-null | -| Assert.cs:15:27:15:27 | access to local variable s | null | Assert.cs:13:13:13:25 | ... ? ... : ... | null | -| Assert.cs:17:13:17:25 | ... ? ... : ... | non-null | Assert.cs:17:13:17:13 | access to parameter b | false | -| Assert.cs:17:13:17:25 | ... ? ... : ... | non-null | Assert.cs:17:24:17:25 | "" | non-null | -| Assert.cs:17:13:17:25 | ... ? ... : ... | null | Assert.cs:17:13:17:13 | access to parameter b | true | -| Assert.cs:17:13:17:25 | ... ? ... : ... | null | Assert.cs:17:17:17:20 | null | null | -| Assert.cs:18:26:18:26 | access to local variable s | empty | Assert.cs:17:13:17:25 | ... ? ... : ... | empty | -| Assert.cs:18:26:18:26 | access to local variable s | non-empty | Assert.cs:17:13:17:25 | ... ? ... : ... | non-empty | -| Assert.cs:18:26:18:26 | access to local variable s | non-null | Assert.cs:17:13:17:13 | access to parameter b | false | -| Assert.cs:18:26:18:26 | access to local variable s | non-null | Assert.cs:17:13:17:25 | ... ? ... : ... | non-null | -| Assert.cs:18:26:18:26 | access to local variable s | null | Assert.cs:17:13:17:13 | access to parameter b | true | -| Assert.cs:18:26:18:26 | access to local variable s | null | Assert.cs:17:13:17:25 | ... ? ... : ... | null | -| Assert.cs:19:27:19:27 | access to local variable s | non-null | Assert.cs:17:13:17:25 | ... ? ... : ... | non-null | -| Assert.cs:19:27:19:27 | access to local variable s | null | Assert.cs:17:13:17:25 | ... ? ... : ... | null | -| Assert.cs:21:13:21:25 | ... ? ... : ... | non-null | Assert.cs:21:13:21:13 | access to parameter b | false | -| Assert.cs:21:13:21:25 | ... ? ... : ... | non-null | Assert.cs:21:24:21:25 | "" | non-null | -| Assert.cs:21:13:21:25 | ... ? ... : ... | null | Assert.cs:21:13:21:13 | access to parameter b | true | -| Assert.cs:21:13:21:25 | ... ? ... : ... | null | Assert.cs:21:17:21:20 | null | null | -| Assert.cs:22:23:22:23 | access to local variable s | empty | Assert.cs:21:13:21:25 | ... ? ... : ... | empty | -| Assert.cs:22:23:22:23 | access to local variable s | non-empty | Assert.cs:21:13:21:25 | ... ? ... : ... | non-empty | -| Assert.cs:22:23:22:23 | access to local variable s | non-null | Assert.cs:21:13:21:25 | ... ? ... : ... | non-null | -| Assert.cs:22:23:22:23 | access to local variable s | null | Assert.cs:21:13:21:25 | ... ? ... : ... | null | -| Assert.cs:22:23:22:31 | ... == ... | false | Assert.cs:21:13:21:13 | access to parameter b | false | -| Assert.cs:22:23:22:31 | ... == ... | false | Assert.cs:22:23:22:23 | access to local variable s | non-null | -| Assert.cs:22:23:22:31 | ... == ... | true | Assert.cs:21:13:21:13 | access to parameter b | true | -| Assert.cs:22:23:22:31 | ... == ... | true | Assert.cs:22:23:22:23 | access to local variable s | null | -| Assert.cs:23:27:23:27 | access to local variable s | non-null | Assert.cs:21:13:21:25 | ... ? ... : ... | non-null | -| Assert.cs:23:27:23:27 | access to local variable s | null | Assert.cs:21:13:21:25 | ... ? ... : ... | null | -| Assert.cs:25:13:25:25 | ... ? ... : ... | non-null | Assert.cs:25:13:25:13 | access to parameter b | false | -| Assert.cs:25:13:25:25 | ... ? ... : ... | non-null | Assert.cs:25:24:25:25 | "" | non-null | -| Assert.cs:25:13:25:25 | ... ? ... : ... | null | Assert.cs:25:13:25:13 | access to parameter b | true | -| Assert.cs:25:13:25:25 | ... ? ... : ... | null | Assert.cs:25:17:25:20 | null | null | -| Assert.cs:26:23:26:23 | access to local variable s | empty | Assert.cs:25:13:25:25 | ... ? ... : ... | empty | -| Assert.cs:26:23:26:23 | access to local variable s | non-empty | Assert.cs:25:13:25:25 | ... ? ... : ... | non-empty | -| Assert.cs:26:23:26:23 | access to local variable s | non-null | Assert.cs:25:13:25:25 | ... ? ... : ... | non-null | -| Assert.cs:26:23:26:23 | access to local variable s | null | Assert.cs:25:13:25:25 | ... ? ... : ... | null | -| Assert.cs:26:23:26:31 | ... != ... | false | Assert.cs:25:13:25:13 | access to parameter b | true | -| Assert.cs:26:23:26:31 | ... != ... | false | Assert.cs:26:23:26:23 | access to local variable s | null | -| Assert.cs:26:23:26:31 | ... != ... | true | Assert.cs:25:13:25:13 | access to parameter b | false | -| Assert.cs:26:23:26:31 | ... != ... | true | Assert.cs:26:23:26:23 | access to local variable s | non-null | -| Assert.cs:27:27:27:27 | access to local variable s | non-null | Assert.cs:25:13:25:25 | ... ? ... : ... | non-null | -| Assert.cs:27:27:27:27 | access to local variable s | null | Assert.cs:25:13:25:25 | ... ? ... : ... | null | -| Assert.cs:29:13:29:25 | ... ? ... : ... | non-null | Assert.cs:29:13:29:13 | access to parameter b | false | -| Assert.cs:29:13:29:25 | ... ? ... : ... | non-null | Assert.cs:29:24:29:25 | "" | non-null | -| Assert.cs:29:13:29:25 | ... ? ... : ... | null | Assert.cs:29:13:29:13 | access to parameter b | true | -| Assert.cs:29:13:29:25 | ... ? ... : ... | null | Assert.cs:29:17:29:20 | null | null | -| Assert.cs:30:24:30:24 | access to local variable s | empty | Assert.cs:29:13:29:25 | ... ? ... : ... | empty | -| Assert.cs:30:24:30:24 | access to local variable s | non-empty | Assert.cs:29:13:29:25 | ... ? ... : ... | non-empty | -| Assert.cs:30:24:30:24 | access to local variable s | non-null | Assert.cs:29:13:29:25 | ... ? ... : ... | non-null | -| Assert.cs:30:24:30:24 | access to local variable s | null | Assert.cs:29:13:29:25 | ... ? ... : ... | null | -| Assert.cs:30:24:30:32 | ... != ... | false | Assert.cs:29:13:29:13 | access to parameter b | true | -| Assert.cs:30:24:30:32 | ... != ... | false | Assert.cs:30:24:30:24 | access to local variable s | null | -| Assert.cs:30:24:30:32 | ... != ... | true | Assert.cs:29:13:29:13 | access to parameter b | false | -| Assert.cs:30:24:30:32 | ... != ... | true | Assert.cs:30:24:30:24 | access to local variable s | non-null | -| Assert.cs:31:27:31:27 | access to local variable s | non-null | Assert.cs:29:13:29:25 | ... ? ... : ... | non-null | -| Assert.cs:31:27:31:27 | access to local variable s | null | Assert.cs:29:13:29:25 | ... ? ... : ... | null | -| Assert.cs:33:13:33:25 | ... ? ... : ... | non-null | Assert.cs:33:13:33:13 | access to parameter b | false | -| Assert.cs:33:13:33:25 | ... ? ... : ... | non-null | Assert.cs:33:24:33:25 | "" | non-null | -| Assert.cs:33:13:33:25 | ... ? ... : ... | null | Assert.cs:33:13:33:13 | access to parameter b | true | -| Assert.cs:33:13:33:25 | ... ? ... : ... | null | Assert.cs:33:17:33:20 | null | null | -| Assert.cs:34:24:34:24 | access to local variable s | empty | Assert.cs:33:13:33:25 | ... ? ... : ... | empty | -| Assert.cs:34:24:34:24 | access to local variable s | non-empty | Assert.cs:33:13:33:25 | ... ? ... : ... | non-empty | -| Assert.cs:34:24:34:24 | access to local variable s | non-null | Assert.cs:33:13:33:25 | ... ? ... : ... | non-null | -| Assert.cs:34:24:34:24 | access to local variable s | null | Assert.cs:33:13:33:25 | ... ? ... : ... | null | -| Assert.cs:34:24:34:32 | ... == ... | false | Assert.cs:33:13:33:13 | access to parameter b | false | -| Assert.cs:34:24:34:32 | ... == ... | false | Assert.cs:34:24:34:24 | access to local variable s | non-null | -| Assert.cs:34:24:34:32 | ... == ... | true | Assert.cs:33:13:33:13 | access to parameter b | true | -| Assert.cs:34:24:34:32 | ... == ... | true | Assert.cs:34:24:34:24 | access to local variable s | null | -| Assert.cs:35:27:35:27 | access to local variable s | non-null | Assert.cs:33:13:33:25 | ... ? ... : ... | non-null | -| Assert.cs:35:27:35:27 | access to local variable s | null | Assert.cs:33:13:33:25 | ... ? ... : ... | null | -| Assert.cs:37:13:37:25 | ... ? ... : ... | non-null | Assert.cs:37:13:37:13 | access to parameter b | false | -| Assert.cs:37:13:37:25 | ... ? ... : ... | non-null | Assert.cs:37:24:37:25 | "" | non-null | -| Assert.cs:37:13:37:25 | ... ? ... : ... | null | Assert.cs:37:13:37:13 | access to parameter b | true | -| Assert.cs:37:13:37:25 | ... ? ... : ... | null | Assert.cs:37:17:37:20 | null | null | -| Assert.cs:38:23:38:23 | access to local variable s | empty | Assert.cs:37:13:37:25 | ... ? ... : ... | empty | -| Assert.cs:38:23:38:23 | access to local variable s | non-empty | Assert.cs:37:13:37:25 | ... ? ... : ... | non-empty | -| Assert.cs:38:23:38:23 | access to local variable s | non-null | Assert.cs:37:13:37:25 | ... ? ... : ... | non-null | -| Assert.cs:38:23:38:23 | access to local variable s | null | Assert.cs:37:13:37:25 | ... ? ... : ... | null | -| Assert.cs:38:23:38:31 | ... != ... | false | Assert.cs:37:13:37:13 | access to parameter b | true | -| Assert.cs:38:23:38:31 | ... != ... | false | Assert.cs:38:23:38:23 | access to local variable s | null | -| Assert.cs:38:23:38:31 | ... != ... | true | Assert.cs:37:13:37:13 | access to parameter b | false | -| Assert.cs:38:23:38:31 | ... != ... | true | Assert.cs:38:23:38:23 | access to local variable s | non-null | -| Assert.cs:38:23:38:36 | ... && ... | true | Assert.cs:38:23:38:31 | ... != ... | true | -| Assert.cs:38:23:38:36 | ... && ... | true | Assert.cs:38:36:38:36 | access to parameter b | true | -| Assert.cs:39:27:39:27 | access to local variable s | non-null | Assert.cs:37:13:37:25 | ... ? ... : ... | non-null | -| Assert.cs:39:27:39:27 | access to local variable s | null | Assert.cs:37:13:37:25 | ... ? ... : ... | null | -| Assert.cs:41:13:41:25 | ... ? ... : ... | non-null | Assert.cs:41:13:41:13 | access to parameter b | false | -| Assert.cs:41:13:41:25 | ... ? ... : ... | non-null | Assert.cs:41:24:41:25 | "" | non-null | -| Assert.cs:41:13:41:25 | ... ? ... : ... | null | Assert.cs:41:13:41:13 | access to parameter b | true | -| Assert.cs:41:13:41:25 | ... ? ... : ... | null | Assert.cs:41:17:41:20 | null | null | -| Assert.cs:42:24:42:24 | access to local variable s | empty | Assert.cs:41:13:41:25 | ... ? ... : ... | empty | -| Assert.cs:42:24:42:24 | access to local variable s | non-empty | Assert.cs:41:13:41:25 | ... ? ... : ... | non-empty | -| Assert.cs:42:24:42:24 | access to local variable s | non-null | Assert.cs:41:13:41:25 | ... ? ... : ... | non-null | -| Assert.cs:42:24:42:24 | access to local variable s | null | Assert.cs:41:13:41:25 | ... ? ... : ... | null | -| Assert.cs:42:24:42:32 | ... == ... | false | Assert.cs:41:13:41:13 | access to parameter b | false | -| Assert.cs:42:24:42:32 | ... == ... | false | Assert.cs:42:24:42:24 | access to local variable s | non-null | -| Assert.cs:42:24:42:32 | ... == ... | true | Assert.cs:41:13:41:13 | access to parameter b | true | -| Assert.cs:42:24:42:32 | ... == ... | true | Assert.cs:42:24:42:24 | access to local variable s | null | -| Assert.cs:42:24:42:38 | ... \|\| ... | false | Assert.cs:42:24:42:32 | ... == ... | false | -| Assert.cs:42:24:42:38 | ... \|\| ... | false | Assert.cs:42:37:42:38 | !... | false | -| Assert.cs:42:37:42:38 | !... | false | Assert.cs:42:38:42:38 | access to parameter b | true | -| Assert.cs:42:37:42:38 | !... | true | Assert.cs:42:38:42:38 | access to parameter b | false | -| Assert.cs:43:27:43:27 | access to local variable s | non-null | Assert.cs:41:13:41:25 | ... ? ... : ... | non-null | -| Assert.cs:43:27:43:27 | access to local variable s | null | Assert.cs:41:13:41:25 | ... ? ... : ... | null | -| Assert.cs:45:13:45:25 | ... ? ... : ... | non-null | Assert.cs:45:13:45:13 | access to parameter b | false | -| Assert.cs:45:13:45:25 | ... ? ... : ... | non-null | Assert.cs:45:24:45:25 | "" | non-null | -| Assert.cs:45:13:45:25 | ... ? ... : ... | null | Assert.cs:45:13:45:13 | access to parameter b | true | -| Assert.cs:45:13:45:25 | ... ? ... : ... | null | Assert.cs:45:17:45:20 | null | null | -| Assert.cs:46:23:46:23 | access to local variable s | empty | Assert.cs:45:13:45:25 | ... ? ... : ... | empty | -| Assert.cs:46:23:46:23 | access to local variable s | non-empty | Assert.cs:45:13:45:25 | ... ? ... : ... | non-empty | -| Assert.cs:46:23:46:23 | access to local variable s | non-null | Assert.cs:45:13:45:25 | ... ? ... : ... | non-null | -| Assert.cs:46:23:46:23 | access to local variable s | null | Assert.cs:45:13:45:25 | ... ? ... : ... | null | -| Assert.cs:46:23:46:31 | ... == ... | false | Assert.cs:45:13:45:13 | access to parameter b | false | -| Assert.cs:46:23:46:31 | ... == ... | false | Assert.cs:46:23:46:23 | access to local variable s | non-null | -| Assert.cs:46:23:46:31 | ... == ... | true | Assert.cs:45:13:45:13 | access to parameter b | true | -| Assert.cs:46:23:46:31 | ... == ... | true | Assert.cs:46:23:46:23 | access to local variable s | null | -| Assert.cs:46:23:46:36 | ... && ... | true | Assert.cs:46:23:46:31 | ... == ... | true | -| Assert.cs:46:23:46:36 | ... && ... | true | Assert.cs:46:36:46:36 | access to parameter b | true | -| Assert.cs:47:27:47:27 | access to local variable s | non-null | Assert.cs:45:13:45:25 | ... ? ... : ... | non-null | -| Assert.cs:47:27:47:27 | access to local variable s | null | Assert.cs:45:13:45:25 | ... ? ... : ... | null | -| Assert.cs:49:13:49:25 | ... ? ... : ... | non-null | Assert.cs:49:13:49:13 | access to parameter b | false | -| Assert.cs:49:13:49:25 | ... ? ... : ... | non-null | Assert.cs:49:24:49:25 | "" | non-null | -| Assert.cs:49:13:49:25 | ... ? ... : ... | null | Assert.cs:49:13:49:13 | access to parameter b | true | -| Assert.cs:49:13:49:25 | ... ? ... : ... | null | Assert.cs:49:17:49:20 | null | null | -| Assert.cs:50:24:50:24 | access to local variable s | empty | Assert.cs:49:13:49:25 | ... ? ... : ... | empty | -| Assert.cs:50:24:50:24 | access to local variable s | non-empty | Assert.cs:49:13:49:25 | ... ? ... : ... | non-empty | -| Assert.cs:50:24:50:24 | access to local variable s | non-null | Assert.cs:49:13:49:25 | ... ? ... : ... | non-null | -| Assert.cs:50:24:50:24 | access to local variable s | null | Assert.cs:49:13:49:25 | ... ? ... : ... | null | -| Assert.cs:50:24:50:32 | ... != ... | false | Assert.cs:49:13:49:13 | access to parameter b | true | -| Assert.cs:50:24:50:32 | ... != ... | false | Assert.cs:50:24:50:24 | access to local variable s | null | -| Assert.cs:50:24:50:32 | ... != ... | true | Assert.cs:49:13:49:13 | access to parameter b | false | -| Assert.cs:50:24:50:32 | ... != ... | true | Assert.cs:50:24:50:24 | access to local variable s | non-null | -| Assert.cs:50:24:50:38 | ... \|\| ... | false | Assert.cs:50:24:50:32 | ... != ... | false | -| Assert.cs:50:24:50:38 | ... \|\| ... | false | Assert.cs:50:37:50:38 | !... | false | -| Assert.cs:50:37:50:38 | !... | false | Assert.cs:50:38:50:38 | access to parameter b | true | -| Assert.cs:50:37:50:38 | !... | true | Assert.cs:50:38:50:38 | access to parameter b | false | -| Assert.cs:51:27:51:27 | access to local variable s | non-null | Assert.cs:49:13:49:25 | ... ? ... : ... | non-null | -| Assert.cs:51:27:51:27 | access to local variable s | null | Assert.cs:49:13:49:25 | ... ? ... : ... | null | -| B.cs:12:13:12:24 | access to local variable eqCallAlways | non-null | B.cs:7:26:7:29 | null | non-null | -| B.cs:12:13:12:24 | access to local variable eqCallAlways | null | B.cs:7:26:7:29 | null | null | -| B.cs:12:13:12:32 | call to operator == | false | B.cs:12:13:12:24 | access to local variable eqCallAlways | non-null | -| B.cs:12:13:12:32 | call to operator == | false | B.cs:12:29:12:32 | null | non-null | -| B.cs:12:13:12:32 | call to operator == | true | B.cs:12:13:12:24 | access to local variable eqCallAlways | null | -| B.cs:12:13:12:32 | call to operator == | true | B.cs:12:29:12:32 | null | null | -| B.cs:13:13:13:24 | access to local variable eqCallAlways | non-null | B.cs:7:26:7:29 | null | non-null | -| B.cs:13:13:13:24 | access to local variable eqCallAlways | null | B.cs:7:26:7:29 | null | null | -| B.cs:15:13:15:14 | access to local variable b2 | non-null | B.cs:8:16:8:19 | null | non-null | -| B.cs:15:13:15:14 | access to local variable b2 | null | B.cs:8:16:8:19 | null | null | -| B.cs:15:13:15:22 | call to operator != | false | B.cs:15:13:15:14 | access to local variable b2 | null | -| B.cs:15:13:15:22 | call to operator != | false | B.cs:15:19:15:22 | null | null | -| B.cs:15:13:15:22 | call to operator != | true | B.cs:15:13:15:14 | access to local variable b2 | non-null | -| B.cs:15:13:15:22 | call to operator != | true | B.cs:15:19:15:22 | null | non-null | -| B.cs:16:13:16:14 | access to local variable b2 | non-null | B.cs:8:16:8:19 | null | non-null | -| B.cs:16:13:16:14 | access to local variable b2 | null | B.cs:8:16:8:19 | null | null | -| B.cs:18:13:18:14 | access to local variable b3 | non-null | B.cs:9:16:9:19 | null | non-null | -| B.cs:18:13:18:14 | access to local variable b3 | null | B.cs:9:16:9:19 | null | null | -| B.cs:18:13:18:22 | call to operator == | false | B.cs:18:13:18:14 | access to local variable b3 | non-null | -| B.cs:18:13:18:22 | call to operator == | false | B.cs:18:19:18:22 | null | non-null | -| B.cs:18:13:18:22 | call to operator == | true | B.cs:18:13:18:14 | access to local variable b3 | null | -| B.cs:18:13:18:22 | call to operator == | true | B.cs:18:19:18:22 | null | null | -| B.cs:20:13:20:14 | access to local variable b3 | non-null | B.cs:9:16:9:19 | null | non-null | -| B.cs:20:13:20:14 | access to local variable b3 | null | B.cs:9:16:9:19 | null | null | -| B.cs:22:13:22:25 | access to local variable neqCallAlways | non-null | B.cs:10:27:10:30 | null | non-null | -| B.cs:22:13:22:25 | access to local variable neqCallAlways | null | B.cs:10:27:10:30 | null | null | -| B.cs:22:13:22:33 | call to operator != | false | B.cs:22:13:22:25 | access to local variable neqCallAlways | null | -| B.cs:22:13:22:33 | call to operator != | false | B.cs:22:30:22:33 | null | null | -| B.cs:22:13:22:33 | call to operator != | true | B.cs:22:13:22:25 | access to local variable neqCallAlways | non-null | -| B.cs:22:13:22:33 | call to operator != | true | B.cs:22:30:22:33 | null | non-null | -| B.cs:24:13:24:25 | access to local variable neqCallAlways | non-null | B.cs:10:27:10:30 | null | non-null | -| B.cs:24:13:24:25 | access to local variable neqCallAlways | null | B.cs:10:27:10:30 | null | null | -| B.cs:34:16:34:26 | !... | false | B.cs:34:18:34:25 | call to operator == | true | -| B.cs:34:16:34:26 | !... | true | B.cs:34:18:34:25 | call to operator == | false | -| B.cs:53:17:53:25 | (...) ... | non-null | B.cs:53:25:53:25 | access to local variable o | non-null | -| B.cs:53:17:53:25 | (...) ... | null | B.cs:53:25:53:25 | access to local variable o | null | -| B.cs:53:17:53:33 | ... != ... | false | B.cs:53:17:53:25 | (...) ... | null | -| B.cs:53:17:53:33 | ... != ... | false | B.cs:53:30:53:33 | null | null | -| B.cs:53:17:53:33 | ... != ... | true | B.cs:53:17:53:25 | (...) ... | non-null | -| B.cs:53:17:53:33 | ... != ... | true | B.cs:53:30:53:33 | null | non-null | -| B.cs:53:25:53:25 | access to local variable o | non-null | B.cs:52:24:52:27 | null | non-null | -| B.cs:53:25:53:25 | access to local variable o | null | B.cs:52:24:52:27 | null | null | -| B.cs:55:26:55:26 | access to local variable o | non-null | B.cs:52:24:52:27 | null | non-null | -| B.cs:55:26:55:26 | access to local variable o | null | B.cs:52:24:52:27 | null | null | -| B.cs:55:26:55:36 | call to method Equals | false | B.cs:55:26:55:26 | access to local variable o | non-null | -| B.cs:55:26:55:36 | call to method Equals | false | B.cs:55:35:55:35 | access to local variable o | non-null | -| B.cs:55:26:55:36 | call to method Equals | true | B.cs:55:26:55:26 | access to local variable o | null | -| B.cs:55:26:55:36 | call to method Equals | true | B.cs:55:35:55:35 | access to local variable o | null | -| B.cs:55:35:55:35 | access to local variable o | non-null | B.cs:52:24:52:27 | null | non-null | -| B.cs:55:35:55:35 | access to local variable o | null | B.cs:52:24:52:27 | null | null | -| C.cs:11:13:11:30 | !... | false | C.cs:11:15:11:29 | !... | true | -| C.cs:11:13:11:30 | !... | true | C.cs:11:15:11:29 | !... | false | -| C.cs:11:15:11:29 | !... | false | C.cs:11:17:11:28 | !... | true | -| C.cs:11:15:11:29 | !... | true | C.cs:11:17:11:28 | !... | false | -| C.cs:11:17:11:28 | !... | false | C.cs:11:19:11:27 | ... == ... | true | -| C.cs:11:17:11:28 | !... | true | C.cs:11:19:11:27 | ... == ... | false | -| C.cs:11:19:11:19 | access to local variable o | non-null | C.cs:10:20:10:23 | null | non-null | -| C.cs:11:19:11:19 | access to local variable o | null | C.cs:10:20:10:23 | null | null | -| C.cs:11:19:11:27 | ... == ... | false | C.cs:11:19:11:19 | access to local variable o | non-null | -| C.cs:11:19:11:27 | ... == ... | false | C.cs:11:24:11:27 | null | non-null | -| C.cs:11:19:11:27 | ... == ... | true | C.cs:11:19:11:19 | access to local variable o | null | -| C.cs:11:19:11:27 | ... == ... | true | C.cs:11:24:11:27 | null | null | -| C.cs:13:13:13:13 | access to local variable o | non-null | C.cs:10:20:10:23 | null | non-null | -| C.cs:13:13:13:13 | access to local variable o | null | C.cs:10:20:10:23 | null | null | -| C.cs:16:13:16:24 | !... | false | C.cs:16:15:16:23 | ... != ... | true | -| C.cs:16:13:16:24 | !... | true | C.cs:16:15:16:23 | ... != ... | false | -| C.cs:16:15:16:15 | access to local variable o | non-null | C.cs:10:20:10:23 | null | non-null | -| C.cs:16:15:16:15 | access to local variable o | null | C.cs:10:20:10:23 | null | null | -| C.cs:16:15:16:23 | ... != ... | false | C.cs:16:15:16:15 | access to local variable o | null | -| C.cs:16:15:16:23 | ... != ... | false | C.cs:16:20:16:23 | null | null | -| C.cs:16:15:16:23 | ... != ... | true | C.cs:16:15:16:15 | access to local variable o | non-null | -| C.cs:16:15:16:23 | ... != ... | true | C.cs:16:20:16:23 | null | non-null | -| C.cs:18:13:18:13 | access to local variable o | non-null | C.cs:10:20:10:23 | null | non-null | -| C.cs:18:13:18:13 | access to local variable o | null | C.cs:10:20:10:23 | null | null | -| C.cs:24:13:24:21 | ... != ... | false | C.cs:24:13:24:13 | access to parameter o | null | -| C.cs:24:13:24:21 | ... != ... | true | C.cs:24:13:24:13 | access to parameter o | non-null | -| C.cs:28:37:28:45 | ... == ... | false | C.cs:28:37:28:37 | access to parameter o | non-null | -| C.cs:28:37:28:45 | ... == ... | true | C.cs:28:37:28:37 | access to parameter o | null | -| C.cs:30:40:30:48 | ... != ... | false | C.cs:30:40:30:40 | access to parameter o | null | -| C.cs:30:40:30:48 | ... != ... | true | C.cs:30:40:30:40 | access to parameter o | non-null | -| C.cs:34:13:34:21 | ... == ... | false | C.cs:34:13:34:13 | access to parameter o | non-null | -| C.cs:34:13:34:21 | ... == ... | true | C.cs:34:13:34:13 | access to parameter o | null | -| C.cs:40:17:40:35 | ... ? ... : ... | non-null | C.cs:40:17:40:23 | call to method Maybe | false | -| C.cs:40:17:40:35 | ... ? ... : ... | non-null | C.cs:40:34:40:35 | "" | non-null | -| C.cs:40:17:40:35 | ... ? ... : ... | null | C.cs:40:17:40:23 | call to method Maybe | true | -| C.cs:40:17:40:35 | ... ? ... : ... | null | C.cs:40:27:40:30 | null | null | -| C.cs:41:22:41:22 | access to local variable s | empty | C.cs:40:17:40:35 | ... ? ... : ... | empty | -| C.cs:41:22:41:22 | access to local variable s | non-empty | C.cs:40:17:40:35 | ... ? ... : ... | non-empty | -| C.cs:41:22:41:22 | access to local variable s | non-null | C.cs:40:17:40:35 | ... ? ... : ... | non-null | -| C.cs:41:22:41:22 | access to local variable s | null | C.cs:40:17:40:35 | ... ? ... : ... | null | -| C.cs:41:22:41:30 | ... == ... | false | C.cs:40:17:40:23 | call to method Maybe | false | -| C.cs:41:22:41:30 | ... == ... | false | C.cs:41:22:41:22 | access to local variable s | non-null | -| C.cs:41:22:41:30 | ... == ... | true | C.cs:40:17:40:23 | call to method Maybe | true | -| C.cs:41:22:41:30 | ... == ... | true | C.cs:41:22:41:22 | access to local variable s | null | -| C.cs:42:9:42:9 | access to local variable s | non-null | C.cs:40:17:40:35 | ... ? ... : ... | non-null | -| C.cs:42:9:42:9 | access to local variable s | null | C.cs:40:17:40:35 | ... ? ... : ... | null | -| C.cs:44:13:44:31 | ... ? ... : ... | non-null | C.cs:44:13:44:19 | call to method Maybe | false | -| C.cs:44:13:44:31 | ... ? ... : ... | non-null | C.cs:44:30:44:31 | "" | non-null | -| C.cs:44:13:44:31 | ... ? ... : ... | null | C.cs:44:13:44:19 | call to method Maybe | true | -| C.cs:44:13:44:31 | ... ? ... : ... | null | C.cs:44:23:44:26 | null | null | -| C.cs:45:22:45:22 | access to local variable s | empty | C.cs:44:13:44:31 | ... ? ... : ... | empty | -| C.cs:45:22:45:22 | access to local variable s | non-empty | C.cs:44:13:44:31 | ... ? ... : ... | non-empty | -| C.cs:45:22:45:22 | access to local variable s | non-null | C.cs:44:13:44:31 | ... ? ... : ... | non-null | -| C.cs:45:22:45:22 | access to local variable s | null | C.cs:44:13:44:31 | ... ? ... : ... | null | -| C.cs:45:22:45:30 | ... != ... | false | C.cs:44:13:44:19 | call to method Maybe | true | -| C.cs:45:22:45:30 | ... != ... | false | C.cs:45:22:45:22 | access to local variable s | null | -| C.cs:45:22:45:30 | ... != ... | true | C.cs:44:13:44:19 | call to method Maybe | false | -| C.cs:45:22:45:30 | ... != ... | true | C.cs:45:22:45:22 | access to local variable s | non-null | -| C.cs:46:9:46:9 | access to local variable s | non-null | C.cs:44:13:44:31 | ... ? ... : ... | non-null | -| C.cs:46:9:46:9 | access to local variable s | null | C.cs:44:13:44:31 | ... ? ... : ... | null | -| C.cs:52:20:52:21 | access to local variable o1 | non-null | C.cs:51:18:51:29 | object creation of type Object | non-null | -| C.cs:52:20:52:21 | access to local variable o1 | null | C.cs:51:18:51:29 | object creation of type Object | null | -| C.cs:53:9:53:10 | access to local variable o1 | non-null | C.cs:51:18:51:29 | object creation of type Object | non-null | -| C.cs:53:9:53:10 | access to local variable o1 | null | C.cs:51:18:51:29 | object creation of type Object | null | -| C.cs:55:18:55:36 | ... ? ... : ... | non-null | C.cs:55:18:55:24 | call to method Maybe | false | -| C.cs:55:18:55:36 | ... ? ... : ... | non-null | C.cs:55:35:55:36 | "" | non-null | -| C.cs:55:18:55:36 | ... ? ... : ... | null | C.cs:55:18:55:24 | call to method Maybe | true | -| C.cs:55:18:55:36 | ... ? ... : ... | null | C.cs:55:28:55:31 | null | null | -| C.cs:56:23:56:24 | access to local variable o2 | empty | C.cs:55:18:55:36 | ... ? ... : ... | empty | -| C.cs:56:23:56:24 | access to local variable o2 | non-empty | C.cs:55:18:55:36 | ... ? ... : ... | non-empty | -| C.cs:56:23:56:24 | access to local variable o2 | non-null | C.cs:55:18:55:24 | call to method Maybe | false | -| C.cs:56:23:56:24 | access to local variable o2 | non-null | C.cs:55:18:55:36 | ... ? ... : ... | non-null | -| C.cs:56:23:56:24 | access to local variable o2 | null | C.cs:55:18:55:24 | call to method Maybe | true | -| C.cs:56:23:56:24 | access to local variable o2 | null | C.cs:55:18:55:36 | ... ? ... : ... | null | -| C.cs:57:9:57:10 | access to local variable o2 | non-null | C.cs:55:18:55:36 | ... ? ... : ... | non-null | -| C.cs:57:9:57:10 | access to local variable o2 | null | C.cs:55:18:55:36 | ... ? ... : ... | null | -| C.cs:62:18:62:46 | ... ? ... : ... | non-null | C.cs:62:18:62:24 | call to method Maybe | false | -| C.cs:62:18:62:46 | ... ? ... : ... | non-null | C.cs:62:35:62:46 | object creation of type Object | non-null | -| C.cs:62:18:62:46 | ... ? ... : ... | null | C.cs:62:18:62:24 | call to method Maybe | true | -| C.cs:62:18:62:46 | ... ? ... : ... | null | C.cs:62:28:62:31 | null | null | -| C.cs:63:23:63:24 | access to local variable o1 | non-null | C.cs:62:18:62:46 | ... ? ... : ... | non-null | -| C.cs:63:23:63:24 | access to local variable o1 | null | C.cs:62:18:62:46 | ... ? ... : ... | null | -| C.cs:64:9:64:10 | access to local variable o1 | non-null | C.cs:62:18:62:46 | ... ? ... : ... | non-null | -| C.cs:64:9:64:10 | access to local variable o1 | null | C.cs:62:18:62:46 | ... ? ... : ... | null | -| C.cs:66:18:66:46 | ... ? ... : ... | non-null | C.cs:66:18:66:24 | call to method Maybe | false | -| C.cs:66:18:66:46 | ... ? ... : ... | non-null | C.cs:66:35:66:46 | object creation of type Object | non-null | -| C.cs:66:18:66:46 | ... ? ... : ... | null | C.cs:66:18:66:24 | call to method Maybe | true | -| C.cs:66:18:66:46 | ... ? ... : ... | null | C.cs:66:28:66:31 | null | null | -| C.cs:67:23:67:24 | access to local variable o1 | non-null | C.cs:62:18:62:46 | ... ? ... : ... | non-null | -| C.cs:67:23:67:24 | access to local variable o1 | null | C.cs:62:18:62:46 | ... ? ... : ... | null | -| C.cs:68:9:68:10 | access to local variable o2 | non-null | C.cs:66:18:66:46 | ... ? ... : ... | non-null | -| C.cs:68:9:68:10 | access to local variable o2 | null | C.cs:66:18:66:46 | ... ? ... : ... | null | -| C.cs:70:18:70:46 | ... ? ... : ... | non-null | C.cs:70:18:70:24 | call to method Maybe | false | -| C.cs:70:18:70:46 | ... ? ... : ... | non-null | C.cs:70:35:70:46 | object creation of type Object | non-null | -| C.cs:70:18:70:46 | ... ? ... : ... | null | C.cs:70:18:70:24 | call to method Maybe | true | -| C.cs:70:18:70:46 | ... ? ... : ... | null | C.cs:70:28:70:31 | null | null | -| C.cs:71:26:71:27 | access to local variable o3 | non-null | C.cs:70:18:70:24 | call to method Maybe | false | -| C.cs:71:26:71:27 | access to local variable o3 | non-null | C.cs:70:18:70:46 | ... ? ... : ... | non-null | -| C.cs:71:26:71:27 | access to local variable o3 | null | C.cs:70:18:70:24 | call to method Maybe | true | -| C.cs:71:26:71:27 | access to local variable o3 | null | C.cs:70:18:70:46 | ... ? ... : ... | null | -| C.cs:72:9:72:10 | access to local variable o3 | non-null | C.cs:70:18:70:46 | ... ? ... : ... | non-null | -| C.cs:72:9:72:10 | access to local variable o3 | null | C.cs:70:18:70:46 | ... ? ... : ... | null | -| C.cs:78:13:78:24 | call to method IsNotNull | false | C.cs:78:23:78:23 | access to local variable o | null | -| C.cs:78:13:78:24 | call to method IsNotNull | true | C.cs:78:23:78:23 | access to local variable o | non-null | -| C.cs:78:23:78:23 | access to local variable o | non-null | C.cs:77:20:77:23 | null | non-null | -| C.cs:78:23:78:23 | access to local variable o | null | C.cs:77:20:77:23 | null | null | -| C.cs:79:13:79:13 | access to local variable o | non-null | C.cs:77:20:77:23 | null | non-null | -| C.cs:79:13:79:13 | access to local variable o | null | C.cs:77:20:77:23 | null | null | -| C.cs:81:13:81:22 | !... | false | C.cs:81:14:81:22 | call to method IsNull | true | -| C.cs:81:13:81:22 | !... | true | C.cs:81:14:81:22 | call to method IsNull | false | -| C.cs:81:14:81:22 | call to method IsNull | false | C.cs:81:21:81:21 | access to local variable o | non-null | -| C.cs:81:14:81:22 | call to method IsNull | true | C.cs:81:21:81:21 | access to local variable o | null | -| C.cs:81:21:81:21 | access to local variable o | non-null | C.cs:77:20:77:23 | null | non-null | -| C.cs:81:21:81:21 | access to local variable o | null | C.cs:77:20:77:23 | null | null | -| C.cs:82:13:82:13 | access to local variable o | non-null | C.cs:77:20:77:23 | null | non-null | -| C.cs:82:13:82:13 | access to local variable o | null | C.cs:77:20:77:23 | null | null | -| C.cs:88:13:88:13 | access to local variable o | non-null | C.cs:87:20:87:23 | null | non-null | -| C.cs:88:13:88:13 | access to local variable o | null | C.cs:87:20:87:23 | null | null | -| C.cs:88:13:88:23 | ... is ... | true | C.cs:88:13:88:13 | access to local variable o | non-null | -| C.cs:89:13:89:13 | access to local variable o | non-null | C.cs:87:20:87:23 | null | non-null | -| C.cs:89:13:89:13 | access to local variable o | null | C.cs:87:20:87:23 | null | null | -| C.cs:94:17:94:45 | ... ? ... : ... | non-null | C.cs:94:17:94:23 | call to method Maybe | false | -| C.cs:94:17:94:45 | ... ? ... : ... | non-null | C.cs:94:34:94:45 | object creation of type Object | non-null | -| C.cs:94:17:94:45 | ... ? ... : ... | null | C.cs:94:17:94:23 | call to method Maybe | true | -| C.cs:94:17:94:45 | ... ? ... : ... | null | C.cs:94:27:94:30 | null | null | -| C.cs:95:15:95:15 | access to local variable o | non-null | C.cs:94:17:94:45 | ... ? ... : ... | non-null | -| C.cs:95:15:95:15 | access to local variable o | null | C.cs:94:17:94:45 | ... ? ... : ... | null | -| C.cs:96:13:96:13 | access to local variable o | non-null | C.cs:94:17:94:45 | ... ? ... : ... | non-null | -| C.cs:96:13:96:13 | access to local variable o | null | C.cs:94:17:94:45 | ... ? ... : ... | null | -| C.cs:113:22:113:28 | access to local variable colours | empty | C.cs:112:26:112:29 | null | empty | -| C.cs:113:22:113:28 | access to local variable colours | non-empty | C.cs:112:26:112:29 | null | non-empty | -| C.cs:113:22:113:28 | access to local variable colours | non-null | C.cs:112:26:112:29 | null | non-null | -| C.cs:113:22:113:28 | access to local variable colours | null | C.cs:112:26:112:29 | null | null | -| C.cs:113:22:113:36 | ... == ... | false | C.cs:113:22:113:28 | access to local variable colours | non-null | -| C.cs:113:22:113:36 | ... == ... | false | C.cs:113:33:113:36 | null | non-null | -| C.cs:113:22:113:36 | ... == ... | true | C.cs:113:22:113:28 | access to local variable colours | null | -| C.cs:113:22:113:36 | ... == ... | true | C.cs:113:33:113:36 | null | null | -| C.cs:113:22:113:59 | ... \|\| ... | false | C.cs:113:22:113:36 | ... == ... | false | -| C.cs:113:22:113:59 | ... \|\| ... | false | C.cs:113:41:113:59 | ... == ... | false | -| C.cs:113:22:113:90 | ... ? ... : ... | null | C.cs:113:22:113:59 | ... \|\| ... | false | -| C.cs:113:22:113:90 | ... ? ... : ... | null | C.cs:113:73:113:90 | call to method ToString | null | -| C.cs:113:41:113:47 | access to local variable colours | non-null | C.cs:112:26:112:29 | null | non-null | -| C.cs:113:41:113:47 | access to local variable colours | null | C.cs:112:26:112:29 | null | null | -| C.cs:113:73:113:79 | access to local variable colours | non-null | C.cs:112:26:112:29 | null | non-null | -| C.cs:113:73:113:79 | access to local variable colours | null | C.cs:112:26:112:29 | null | null | -| C.cs:120:13:120:20 | access to local variable children | empty | C.cs:118:29:118:32 | null | empty | -| C.cs:120:13:120:20 | access to local variable children | non-empty | C.cs:118:29:118:32 | null | non-empty | -| C.cs:120:13:120:20 | access to local variable children | non-null | C.cs:118:29:118:32 | null | non-null | -| C.cs:120:13:120:20 | access to local variable children | null | C.cs:118:29:118:32 | null | null | -| C.cs:120:13:120:28 | ... == ... | false | C.cs:120:13:120:20 | access to local variable children | non-null | -| C.cs:120:13:120:28 | ... == ... | false | C.cs:120:25:120:28 | null | non-null | -| C.cs:120:13:120:28 | ... == ... | true | C.cs:120:13:120:20 | access to local variable children | null | -| C.cs:120:13:120:28 | ... == ... | true | C.cs:120:25:120:28 | null | null | -| C.cs:122:13:122:31 | ... > ... | true | C.cs:122:13:122:20 | access to local variable children | non-empty | -| C.cs:129:13:129:38 | ... == ... | false | C.cs:129:14:129:29 | ... = ... | non-null | -| C.cs:129:13:129:38 | ... == ... | false | C.cs:129:35:129:38 | null | non-null | -| C.cs:129:13:129:38 | ... == ... | true | C.cs:129:14:129:29 | ... = ... | null | -| C.cs:129:13:129:38 | ... == ... | true | C.cs:129:35:129:38 | null | null | -| C.cs:129:13:129:55 | ... \|\| ... | false | C.cs:129:13:129:38 | ... == ... | false | -| C.cs:129:13:129:55 | ... \|\| ... | false | C.cs:129:43:129:55 | ... > ... | false | -| C.cs:129:14:129:29 | ... = ... | empty | C.cs:129:14:129:15 | access to local variable ok | empty | -| C.cs:129:14:129:29 | ... = ... | empty | C.cs:129:20:129:28 | ... = ... | empty | -| C.cs:129:14:129:29 | ... = ... | non-empty | C.cs:129:14:129:15 | access to local variable ok | non-empty | -| C.cs:129:14:129:29 | ... = ... | non-empty | C.cs:129:20:129:28 | ... = ... | non-empty | -| C.cs:129:14:129:29 | ... = ... | non-null | C.cs:129:14:129:15 | access to local variable ok | non-null | -| C.cs:129:14:129:29 | ... = ... | non-null | C.cs:129:20:129:28 | ... = ... | non-null | -| C.cs:129:14:129:29 | ... = ... | null | C.cs:129:14:129:15 | access to local variable ok | null | -| C.cs:129:14:129:29 | ... = ... | null | C.cs:129:20:129:28 | ... = ... | null | -| C.cs:129:20:129:28 | ... = ... | empty | C.cs:129:20:129:21 | access to local variable xx | empty | -| C.cs:129:20:129:28 | ... = ... | empty | C.cs:129:25:129:28 | null | empty | -| C.cs:129:20:129:28 | ... = ... | non-empty | C.cs:129:20:129:21 | access to local variable xx | non-empty | -| C.cs:129:20:129:28 | ... = ... | non-empty | C.cs:129:25:129:28 | null | non-empty | -| C.cs:129:20:129:28 | ... = ... | non-null | C.cs:129:20:129:21 | access to local variable xx | non-null | -| C.cs:129:20:129:28 | ... = ... | non-null | C.cs:129:25:129:28 | null | non-null | -| C.cs:129:20:129:28 | ... = ... | null | C.cs:129:20:129:21 | access to local variable xx | null | -| C.cs:129:20:129:28 | ... = ... | null | C.cs:129:25:129:28 | null | null | -| C.cs:129:43:129:44 | access to local variable ok | empty | C.cs:129:20:129:28 | ... = ... | empty | -| C.cs:129:43:129:44 | access to local variable ok | non-empty | C.cs:129:20:129:28 | ... = ... | non-empty | -| C.cs:129:43:129:44 | access to local variable ok | non-null | C.cs:129:20:129:28 | ... = ... | non-null | -| C.cs:129:43:129:44 | access to local variable ok | null | C.cs:129:20:129:28 | ... = ... | null | -| C.cs:137:13:137:48 | ... \|\| ... | false | C.cs:137:13:137:30 | call to local function Foo | false | -| C.cs:137:13:137:48 | ... \|\| ... | false | C.cs:137:35:137:48 | ... > ... | false | -| C.cs:137:17:137:29 | ... = ... | empty | C.cs:137:17:137:19 | access to local variable ok2 | empty | -| C.cs:137:17:137:29 | ... = ... | empty | C.cs:137:23:137:29 | "hello" | empty | -| C.cs:137:17:137:29 | ... = ... | non-empty | C.cs:137:17:137:19 | access to local variable ok2 | non-empty | -| C.cs:137:17:137:29 | ... = ... | non-empty | C.cs:137:23:137:29 | "hello" | non-empty | -| C.cs:137:17:137:29 | ... = ... | non-null | C.cs:137:17:137:19 | access to local variable ok2 | non-null | -| C.cs:137:17:137:29 | ... = ... | non-null | C.cs:137:23:137:29 | "hello" | non-null | -| C.cs:137:17:137:29 | ... = ... | null | C.cs:137:17:137:19 | access to local variable ok2 | null | -| C.cs:137:17:137:29 | ... = ... | null | C.cs:137:23:137:29 | "hello" | null | -| C.cs:137:35:137:37 | access to local variable ok2 | empty | C.cs:137:23:137:29 | "hello" | empty | -| C.cs:137:35:137:37 | access to local variable ok2 | non-empty | C.cs:137:23:137:29 | "hello" | non-empty | -| C.cs:137:35:137:37 | access to local variable ok2 | non-null | C.cs:137:23:137:29 | "hello" | non-null | -| C.cs:137:35:137:37 | access to local variable ok2 | null | C.cs:137:23:137:29 | "hello" | null | -| C.cs:145:13:145:39 | ... != ... | false | C.cs:145:14:145:30 | ... = ... | null | -| C.cs:145:13:145:39 | ... != ... | false | C.cs:145:36:145:39 | null | null | -| C.cs:145:13:145:39 | ... != ... | true | C.cs:145:14:145:30 | ... = ... | non-null | -| C.cs:145:13:145:39 | ... != ... | true | C.cs:145:36:145:39 | null | non-null | -| C.cs:145:13:145:57 | ... && ... | true | C.cs:145:13:145:39 | ... != ... | true | -| C.cs:145:13:145:57 | ... && ... | true | C.cs:145:44:145:57 | ... > ... | true | -| C.cs:145:14:145:30 | ... = ... | empty | C.cs:145:14:145:15 | access to local variable xx | empty | -| C.cs:145:14:145:30 | ... = ... | empty | C.cs:145:20:145:29 | ... = ... | empty | -| C.cs:145:14:145:30 | ... = ... | non-empty | C.cs:145:14:145:15 | access to local variable xx | non-empty | -| C.cs:145:14:145:30 | ... = ... | non-empty | C.cs:145:20:145:29 | ... = ... | non-empty | -| C.cs:145:14:145:30 | ... = ... | non-null | C.cs:145:14:145:15 | access to local variable xx | non-null | -| C.cs:145:14:145:30 | ... = ... | non-null | C.cs:145:20:145:29 | ... = ... | non-null | -| C.cs:145:14:145:30 | ... = ... | null | C.cs:145:14:145:15 | access to local variable xx | null | -| C.cs:145:14:145:30 | ... = ... | null | C.cs:145:20:145:29 | ... = ... | null | -| C.cs:145:20:145:29 | ... = ... | empty | C.cs:145:20:145:22 | access to local variable ok3 | empty | -| C.cs:145:20:145:29 | ... = ... | empty | C.cs:145:26:145:29 | null | empty | -| C.cs:145:20:145:29 | ... = ... | non-empty | C.cs:145:20:145:22 | access to local variable ok3 | non-empty | -| C.cs:145:20:145:29 | ... = ... | non-empty | C.cs:145:26:145:29 | null | non-empty | -| C.cs:145:20:145:29 | ... = ... | non-null | C.cs:145:20:145:22 | access to local variable ok3 | non-null | -| C.cs:145:20:145:29 | ... = ... | non-null | C.cs:145:26:145:29 | null | non-null | -| C.cs:145:20:145:29 | ... = ... | null | C.cs:145:20:145:22 | access to local variable ok3 | null | -| C.cs:145:20:145:29 | ... = ... | null | C.cs:145:26:145:29 | null | null | -| C.cs:145:44:145:46 | access to local variable ok3 | empty | C.cs:145:26:145:29 | null | empty | -| C.cs:145:44:145:46 | access to local variable ok3 | non-empty | C.cs:145:26:145:29 | null | non-empty | -| C.cs:145:44:145:46 | access to local variable ok3 | non-null | C.cs:145:26:145:29 | null | non-null | -| C.cs:145:44:145:46 | access to local variable ok3 | null | C.cs:145:26:145:29 | null | null | -| C.cs:157:16:157:16 | access to local variable s | empty | C.cs:155:17:155:20 | null | empty | -| C.cs:157:16:157:16 | access to local variable s | non-empty | C.cs:155:17:155:20 | null | non-empty | -| C.cs:157:16:157:16 | access to local variable s | non-null | C.cs:155:17:155:20 | null | non-null | -| C.cs:157:16:157:16 | access to local variable s | null | C.cs:155:17:155:20 | null | null | -| C.cs:157:16:157:24 | ... != ... | false | C.cs:157:16:157:16 | access to local variable s | null | -| C.cs:157:16:157:24 | ... != ... | false | C.cs:157:21:157:24 | null | null | -| C.cs:157:16:157:24 | ... != ... | true | C.cs:157:16:157:16 | access to local variable s | non-null | -| C.cs:157:16:157:24 | ... != ... | true | C.cs:157:21:157:24 | null | non-null | -| C.cs:165:16:165:16 | access to local variable s | empty | C.cs:163:17:163:20 | null | empty | -| C.cs:165:16:165:16 | access to local variable s | non-empty | C.cs:163:17:163:20 | null | non-empty | -| C.cs:165:16:165:16 | access to local variable s | non-null | C.cs:163:17:163:20 | null | non-null | -| C.cs:165:16:165:16 | access to local variable s | null | C.cs:163:17:163:20 | null | null | -| C.cs:165:16:165:24 | ... != ... | false | C.cs:165:16:165:16 | access to local variable s | null | -| C.cs:165:16:165:24 | ... != ... | false | C.cs:165:21:165:24 | null | null | -| C.cs:165:16:165:24 | ... != ... | true | C.cs:165:16:165:16 | access to local variable s | non-null | -| C.cs:165:16:165:24 | ... != ... | true | C.cs:165:21:165:24 | null | non-null | -| C.cs:170:13:170:13 | access to local variable s | non-null | C.cs:167:13:167:16 | null | non-null | -| C.cs:170:13:170:13 | access to local variable s | null | C.cs:167:13:167:16 | null | null | -| C.cs:172:16:172:16 | access to local variable s | non-null | C.cs:167:13:167:16 | null | non-null | -| C.cs:172:16:172:16 | access to local variable s | null | C.cs:167:13:167:16 | null | null | -| C.cs:172:16:172:24 | ... != ... | false | C.cs:172:16:172:16 | access to local variable s | null | -| C.cs:172:16:172:24 | ... != ... | false | C.cs:172:21:172:24 | null | null | -| C.cs:172:16:172:24 | ... != ... | true | C.cs:172:16:172:16 | access to local variable s | non-null | -| C.cs:172:16:172:24 | ... != ... | true | C.cs:172:21:172:24 | null | non-null | -| C.cs:186:16:186:24 | ... != ... | false | C.cs:186:16:186:16 | access to local variable s | null | -| C.cs:186:16:186:24 | ... != ... | true | C.cs:186:16:186:16 | access to local variable s | non-null | -| C.cs:210:17:210:35 | ... ? ... : ... | non-null | C.cs:210:17:210:23 | call to method Maybe | false | -| C.cs:210:17:210:35 | ... ? ... : ... | non-null | C.cs:210:34:210:35 | "" | non-null | -| C.cs:210:17:210:35 | ... ? ... : ... | null | C.cs:210:17:210:23 | call to method Maybe | true | -| C.cs:210:17:210:35 | ... ? ... : ... | null | C.cs:210:27:210:30 | null | null | -| C.cs:211:13:211:13 | access to local variable s | empty | C.cs:210:17:210:35 | ... ? ... : ... | empty | -| C.cs:211:13:211:13 | access to local variable s | non-empty | C.cs:210:17:210:35 | ... ? ... : ... | non-empty | -| C.cs:211:13:211:13 | access to local variable s | non-null | C.cs:210:17:210:35 | ... ? ... : ... | non-null | -| C.cs:211:13:211:13 | access to local variable s | null | C.cs:210:17:210:35 | ... ? ... : ... | null | -| C.cs:211:13:211:21 | ... != ... | false | C.cs:210:17:210:23 | call to method Maybe | true | -| C.cs:211:13:211:21 | ... != ... | false | C.cs:211:13:211:13 | access to local variable s | null | -| C.cs:211:13:211:21 | ... != ... | true | C.cs:210:17:210:23 | call to method Maybe | false | -| C.cs:211:13:211:21 | ... != ... | true | C.cs:211:13:211:13 | access to local variable s | non-null | -| C.cs:213:13:213:13 | access to local variable s | non-null | C.cs:210:17:210:35 | ... ? ... : ... | non-null | -| C.cs:213:13:213:13 | access to local variable s | null | C.cs:210:17:210:35 | ... ? ... : ... | null | -| C.cs:217:13:217:21 | ... == ... | false | C.cs:211:13:211:21 | ... != ... | false | -| C.cs:217:13:217:21 | ... == ... | false | C.cs:217:13:217:13 | access to local variable s | non-null | -| C.cs:217:13:217:21 | ... == ... | true | C.cs:217:13:217:13 | access to local variable s | null | -| C.cs:221:13:221:13 | access to local variable s | empty | C.cs:220:13:220:14 | "" | empty | -| C.cs:221:13:221:13 | access to local variable s | non-empty | C.cs:220:13:220:14 | "" | non-empty | -| C.cs:221:13:221:13 | access to local variable s | non-null | C.cs:220:13:220:14 | "" | non-null | -| C.cs:221:13:221:13 | access to local variable s | null | C.cs:220:13:220:14 | "" | null | -| C.cs:221:13:221:21 | ... != ... | false | C.cs:221:13:221:13 | access to local variable s | null | -| C.cs:221:13:221:21 | ... != ... | false | C.cs:221:18:221:21 | null | non-null | -| C.cs:221:13:221:21 | ... != ... | true | C.cs:221:13:221:13 | access to local variable s | non-null | -| C.cs:221:13:221:42 | ... && ... | true | C.cs:221:13:221:21 | ... != ... | true | -| C.cs:221:13:221:42 | ... && ... | true | C.cs:221:26:221:42 | ... == ... | true | -| C.cs:221:26:221:26 | access to local variable s | non-null | C.cs:220:13:220:14 | "" | non-null | -| C.cs:221:26:221:26 | access to local variable s | null | C.cs:220:13:220:14 | "" | null | -| C.cs:229:14:229:19 | ... = ... | empty | C.cs:229:14:229:14 | access to local variable s | empty | -| C.cs:229:14:229:19 | ... = ... | empty | C.cs:229:18:229:19 | "" | empty | -| C.cs:229:14:229:19 | ... = ... | non-empty | C.cs:229:14:229:14 | access to local variable s | non-empty | -| C.cs:229:14:229:19 | ... = ... | non-empty | C.cs:229:18:229:19 | "" | non-empty | -| C.cs:229:14:229:19 | ... = ... | non-null | C.cs:229:14:229:14 | access to local variable s | non-null | -| C.cs:229:14:229:19 | ... = ... | non-null | C.cs:229:18:229:19 | "" | non-null | -| C.cs:229:14:229:19 | ... = ... | null | C.cs:229:14:229:14 | access to local variable s | null | -| C.cs:229:14:229:19 | ... = ... | null | C.cs:229:18:229:19 | "" | null | -| C.cs:229:22:229:30 | ... != ... | false | C.cs:229:22:229:22 | access to local variable s | null | -| C.cs:229:22:229:30 | ... != ... | true | C.cs:229:22:229:22 | access to local variable s | non-null | -| C.cs:229:33:229:40 | ... = ... | empty | C.cs:229:33:229:33 | access to local variable s | empty | -| C.cs:229:33:229:40 | ... = ... | empty | C.cs:229:37:229:40 | null | empty | -| C.cs:229:33:229:40 | ... = ... | non-empty | C.cs:229:33:229:33 | access to local variable s | non-empty | -| C.cs:229:33:229:40 | ... = ... | non-empty | C.cs:229:37:229:40 | null | non-empty | -| C.cs:229:33:229:40 | ... = ... | non-null | C.cs:229:33:229:33 | access to local variable s | non-null | -| C.cs:229:33:229:40 | ... = ... | non-null | C.cs:229:37:229:40 | null | non-null | -| C.cs:229:33:229:40 | ... = ... | null | C.cs:229:33:229:33 | access to local variable s | null | -| C.cs:229:33:229:40 | ... = ... | null | C.cs:229:37:229:40 | null | null | -| C.cs:235:14:235:21 | ... = ... | empty | C.cs:235:14:235:14 | access to local variable s | empty | -| C.cs:235:14:235:21 | ... = ... | empty | C.cs:235:18:235:21 | null | empty | -| C.cs:235:14:235:21 | ... = ... | non-empty | C.cs:235:14:235:14 | access to local variable s | non-empty | -| C.cs:235:14:235:21 | ... = ... | non-empty | C.cs:235:18:235:21 | null | non-empty | -| C.cs:235:14:235:21 | ... = ... | non-null | C.cs:235:14:235:14 | access to local variable s | non-null | -| C.cs:235:14:235:21 | ... = ... | non-null | C.cs:235:18:235:21 | null | non-null | -| C.cs:235:14:235:21 | ... = ... | null | C.cs:235:14:235:14 | access to local variable s | null | -| C.cs:235:14:235:21 | ... = ... | null | C.cs:235:18:235:21 | null | null | -| C.cs:235:24:235:32 | ... == ... | false | C.cs:235:24:235:24 | access to local variable s | non-null | -| C.cs:235:24:235:32 | ... == ... | false | C.cs:235:29:235:32 | null | non-null | -| C.cs:235:24:235:32 | ... == ... | true | C.cs:235:24:235:24 | access to local variable s | null | -| C.cs:235:24:235:32 | ... == ... | true | C.cs:235:29:235:32 | null | null | -| C.cs:235:35:235:42 | ... = ... | empty | C.cs:235:35:235:35 | access to local variable s | empty | -| C.cs:235:35:235:42 | ... = ... | empty | C.cs:235:39:235:42 | null | empty | -| C.cs:235:35:235:42 | ... = ... | non-empty | C.cs:235:35:235:35 | access to local variable s | non-empty | -| C.cs:235:35:235:42 | ... = ... | non-empty | C.cs:235:39:235:42 | null | non-empty | -| C.cs:235:35:235:42 | ... = ... | non-null | C.cs:235:35:235:35 | access to local variable s | non-null | -| C.cs:235:35:235:42 | ... = ... | non-null | C.cs:235:39:235:42 | null | non-null | -| C.cs:235:35:235:42 | ... = ... | null | C.cs:235:35:235:35 | access to local variable s | null | -| C.cs:235:35:235:42 | ... = ... | null | C.cs:235:39:235:42 | null | null | -| C.cs:240:14:240:19 | ... = ... | empty | C.cs:240:14:240:14 | access to local variable s | empty | -| C.cs:240:14:240:19 | ... = ... | empty | C.cs:240:18:240:19 | "" | empty | -| C.cs:240:14:240:19 | ... = ... | non-empty | C.cs:240:14:240:14 | access to local variable s | non-empty | -| C.cs:240:14:240:19 | ... = ... | non-empty | C.cs:240:18:240:19 | "" | non-empty | -| C.cs:240:14:240:19 | ... = ... | non-null | C.cs:240:14:240:14 | access to local variable s | non-null | -| C.cs:240:14:240:19 | ... = ... | non-null | C.cs:240:18:240:19 | "" | non-null | -| C.cs:240:14:240:19 | ... = ... | null | C.cs:240:14:240:14 | access to local variable s | null | -| C.cs:240:14:240:19 | ... = ... | null | C.cs:240:18:240:19 | "" | null | -| C.cs:240:24:240:31 | ... = ... | empty | C.cs:240:24:240:24 | access to local variable s | empty | -| C.cs:240:24:240:31 | ... = ... | empty | C.cs:240:28:240:31 | null | empty | -| C.cs:240:24:240:31 | ... = ... | non-empty | C.cs:240:24:240:24 | access to local variable s | non-empty | -| C.cs:240:24:240:31 | ... = ... | non-empty | C.cs:240:28:240:31 | null | non-empty | -| C.cs:240:24:240:31 | ... = ... | non-null | C.cs:240:24:240:24 | access to local variable s | non-null | -| C.cs:240:24:240:31 | ... = ... | non-null | C.cs:240:28:240:31 | null | non-null | -| C.cs:240:24:240:31 | ... = ... | null | C.cs:240:24:240:24 | access to local variable s | null | -| C.cs:240:24:240:31 | ... = ... | null | C.cs:240:28:240:31 | null | null | -| C.cs:249:9:249:9 | access to local variable a | empty | C.cs:248:19:248:22 | null | empty | -| C.cs:249:9:249:9 | access to local variable a | non-empty | C.cs:248:19:248:22 | null | non-empty | -| C.cs:249:9:249:9 | access to local variable a | non-null | C.cs:248:19:248:22 | null | non-null | -| C.cs:249:9:249:9 | access to local variable a | null | C.cs:248:19:248:22 | null | null | -| C.cs:252:9:252:9 | access to local variable a | empty | C.cs:251:13:251:23 | array creation of type Int32[] | empty | -| C.cs:252:9:252:9 | access to local variable a | non-empty | C.cs:251:13:251:23 | array creation of type Int32[] | non-empty | -| C.cs:252:9:252:9 | access to local variable a | non-null | C.cs:251:13:251:23 | array creation of type Int32[] | non-null | -| C.cs:252:9:252:9 | access to local variable a | null | C.cs:251:13:251:23 | array creation of type Int32[] | null | -| C.cs:260:9:260:10 | access to local variable ia | empty | C.cs:257:20:257:23 | null | empty | -| C.cs:260:9:260:10 | access to local variable ia | non-empty | C.cs:257:20:257:23 | null | non-empty | -| C.cs:260:9:260:10 | access to local variable ia | non-null | C.cs:257:20:257:23 | null | non-null | -| C.cs:260:9:260:10 | access to local variable ia | null | C.cs:257:20:257:23 | null | null | -| C.cs:261:20:261:21 | access to local variable sa | empty | C.cs:258:23:258:26 | null | empty | -| C.cs:261:20:261:21 | access to local variable sa | non-empty | C.cs:258:23:258:26 | null | non-empty | -| C.cs:261:20:261:21 | access to local variable sa | non-null | C.cs:258:23:258:26 | null | non-null | -| C.cs:261:20:261:21 | access to local variable sa | null | C.cs:258:23:258:26 | null | null | -| C.cs:263:9:263:10 | access to local variable ia | non-null | C.cs:257:20:257:23 | null | non-null | -| C.cs:263:9:263:10 | access to local variable ia | null | C.cs:257:20:257:23 | null | null | -| C.cs:264:16:264:17 | access to local variable sa | non-null | C.cs:258:23:258:26 | null | non-null | -| C.cs:264:16:264:17 | access to local variable sa | null | C.cs:258:23:258:26 | null | null | -| D.cs:28:13:28:25 | ... != ... | false | D.cs:28:13:28:17 | access to parameter param | null | -| D.cs:28:13:28:25 | ... != ... | true | D.cs:28:13:28:17 | access to parameter param | non-null | -| D.cs:37:13:37:23 | ... is ... | true | D.cs:37:13:37:13 | access to parameter x | non-null | -| D.cs:38:13:38:21 | ... == ... | false | D.cs:38:13:38:13 | access to parameter x | non-null | -| D.cs:38:13:38:21 | ... == ... | true | D.cs:38:13:38:13 | access to parameter x | null | -| D.cs:39:16:39:24 | ... == ... | false | D.cs:39:16:39:16 | access to parameter x | non-null | -| D.cs:39:16:39:24 | ... == ... | true | D.cs:39:16:39:16 | access to parameter x | null | -| D.cs:44:18:44:44 | ... ? ... : ... | non-null | D.cs:44:18:44:22 | access to field maybe | false | -| D.cs:44:18:44:44 | ... ? ... : ... | non-null | D.cs:44:33:44:44 | object creation of type Object | non-null | -| D.cs:44:18:44:44 | ... ? ... : ... | null | D.cs:44:18:44:22 | access to field maybe | true | -| D.cs:44:18:44:44 | ... ? ... : ... | null | D.cs:44:26:44:29 | null | null | -| D.cs:45:13:45:14 | access to local variable o1 | non-null | D.cs:44:18:44:44 | ... ? ... : ... | non-null | -| D.cs:45:13:45:14 | access to local variable o1 | null | D.cs:44:18:44:44 | ... ? ... : ... | null | -| D.cs:45:13:45:22 | ... != ... | false | D.cs:44:18:44:22 | access to field maybe | true | -| D.cs:45:13:45:22 | ... != ... | false | D.cs:45:13:45:14 | access to local variable o1 | null | -| D.cs:45:13:45:22 | ... != ... | true | D.cs:44:18:44:22 | access to field maybe | false | -| D.cs:45:13:45:22 | ... != ... | true | D.cs:45:13:45:14 | access to local variable o1 | non-null | -| D.cs:45:25:45:26 | access to local variable o1 | non-null | D.cs:44:18:44:44 | ... ? ... : ... | non-null | -| D.cs:45:25:45:26 | access to local variable o1 | null | D.cs:44:18:44:44 | ... ? ... : ... | null | -| D.cs:47:18:47:34 | ... ? ... : ... | non-null | D.cs:47:18:47:22 | access to field maybe | false | -| D.cs:47:18:47:34 | ... ? ... : ... | non-null | D.cs:47:33:47:34 | "" | non-null | -| D.cs:47:18:47:34 | ... ? ... : ... | null | D.cs:47:18:47:22 | access to field maybe | true | -| D.cs:47:18:47:34 | ... ? ... : ... | null | D.cs:47:26:47:29 | null | null | -| D.cs:48:13:48:14 | access to local variable o2 | empty | D.cs:47:18:47:34 | ... ? ... : ... | empty | -| D.cs:48:13:48:14 | access to local variable o2 | non-empty | D.cs:47:18:47:34 | ... ? ... : ... | non-empty | -| D.cs:48:13:48:14 | access to local variable o2 | non-null | D.cs:47:18:47:34 | ... ? ... : ... | non-null | -| D.cs:48:13:48:14 | access to local variable o2 | null | D.cs:47:18:47:34 | ... ? ... : ... | null | -| D.cs:48:13:48:24 | ... is ... | false | D.cs:47:18:47:22 | access to field maybe | true | -| D.cs:48:13:48:24 | ... is ... | false | D.cs:48:13:48:14 | access to local variable o2 | null | -| D.cs:48:13:48:24 | ... is ... | true | D.cs:47:18:47:22 | access to field maybe | false | -| D.cs:48:13:48:24 | ... is ... | true | D.cs:48:13:48:14 | access to local variable o2 | non-null | -| D.cs:48:27:48:28 | access to local variable o2 | non-null | D.cs:47:18:47:34 | ... ? ... : ... | non-null | -| D.cs:48:27:48:28 | access to local variable o2 | null | D.cs:47:18:47:34 | ... ? ... : ... | null | -| D.cs:51:13:51:44 | ... != ... | false | D.cs:51:14:51:35 | ... = ... | null | -| D.cs:51:13:51:44 | ... != ... | true | D.cs:51:14:51:35 | ... = ... | non-null | -| D.cs:51:14:51:35 | ... = ... | non-null | D.cs:51:14:51:15 | access to local variable o3 | non-null | -| D.cs:51:14:51:35 | ... = ... | non-null | D.cs:51:19:51:35 | ... ? ... : ... | non-null | -| D.cs:51:14:51:35 | ... = ... | null | D.cs:51:14:51:15 | access to local variable o3 | null | -| D.cs:51:14:51:35 | ... = ... | null | D.cs:51:19:51:35 | ... ? ... : ... | null | -| D.cs:51:19:51:35 | ... ? ... : ... | non-null | D.cs:51:19:51:23 | access to field maybe | false | -| D.cs:51:19:51:35 | ... ? ... : ... | non-null | D.cs:51:34:51:35 | "" | non-null | -| D.cs:51:19:51:35 | ... ? ... : ... | null | D.cs:51:19:51:23 | access to field maybe | true | -| D.cs:51:19:51:35 | ... ? ... : ... | null | D.cs:51:27:51:30 | null | null | -| D.cs:52:13:52:14 | access to local variable o3 | non-null | D.cs:51:19:51:35 | ... ? ... : ... | non-null | -| D.cs:52:13:52:14 | access to local variable o3 | null | D.cs:51:19:51:35 | ... ? ... : ... | null | -| D.cs:54:18:54:34 | ... ? ... : ... | non-null | D.cs:54:18:54:22 | access to field maybe | false | -| D.cs:54:18:54:34 | ... ? ... : ... | non-null | D.cs:54:33:54:34 | "" | non-null | -| D.cs:54:18:54:34 | ... ? ... : ... | null | D.cs:54:18:54:22 | access to field maybe | true | -| D.cs:54:18:54:34 | ... ? ... : ... | null | D.cs:54:26:54:29 | null | null | -| D.cs:55:13:55:42 | ... != ... | false | D.cs:55:14:55:32 | ... && ... | false | -| D.cs:55:13:55:42 | ... != ... | true | D.cs:55:14:55:32 | ... && ... | true | -| D.cs:55:14:55:32 | ... && ... | true | D.cs:55:14:55:18 | ... > ... | true | -| D.cs:55:14:55:32 | ... && ... | true | D.cs:55:23:55:32 | ... != ... | true | -| D.cs:55:23:55:24 | access to local variable o4 | empty | D.cs:54:18:54:34 | ... ? ... : ... | empty | -| D.cs:55:23:55:24 | access to local variable o4 | non-empty | D.cs:54:18:54:34 | ... ? ... : ... | non-empty | -| D.cs:55:23:55:24 | access to local variable o4 | non-null | D.cs:54:18:54:34 | ... ? ... : ... | non-null | -| D.cs:55:23:55:24 | access to local variable o4 | null | D.cs:54:18:54:34 | ... ? ... : ... | null | -| D.cs:55:23:55:32 | ... != ... | false | D.cs:54:18:54:22 | access to field maybe | true | -| D.cs:55:23:55:32 | ... != ... | false | D.cs:55:23:55:24 | access to local variable o4 | null | -| D.cs:55:23:55:32 | ... != ... | true | D.cs:54:18:54:22 | access to field maybe | false | -| D.cs:55:23:55:32 | ... != ... | true | D.cs:55:23:55:24 | access to local variable o4 | non-null | -| D.cs:56:13:56:14 | access to local variable o4 | non-null | D.cs:54:18:54:34 | ... ? ... : ... | non-null | -| D.cs:56:13:56:14 | access to local variable o4 | null | D.cs:54:18:54:34 | ... ? ... : ... | null | -| D.cs:58:18:58:41 | ... ? ... : ... | non-null | D.cs:58:19:58:28 | ... != ... | true | -| D.cs:58:18:58:41 | ... ? ... : ... | non-null | D.cs:58:33:58:34 | "" | non-null | -| D.cs:58:18:58:41 | ... ? ... : ... | null | D.cs:58:19:58:28 | ... != ... | false | -| D.cs:58:18:58:41 | ... ? ... : ... | null | D.cs:58:38:58:41 | null | null | -| D.cs:58:19:58:20 | access to local variable o4 | non-null | D.cs:54:18:54:34 | ... ? ... : ... | non-null | -| D.cs:58:19:58:20 | access to local variable o4 | null | D.cs:54:18:54:34 | ... ? ... : ... | null | -| D.cs:58:19:58:28 | ... != ... | false | D.cs:54:18:54:22 | access to field maybe | true | -| D.cs:58:19:58:28 | ... != ... | false | D.cs:58:19:58:20 | access to local variable o4 | null | -| D.cs:58:19:58:28 | ... != ... | true | D.cs:54:18:54:22 | access to field maybe | false | -| D.cs:58:19:58:28 | ... != ... | true | D.cs:58:19:58:20 | access to local variable o4 | non-null | -| D.cs:59:13:59:14 | access to local variable o5 | empty | D.cs:58:18:58:41 | ... ? ... : ... | empty | -| D.cs:59:13:59:14 | access to local variable o5 | non-empty | D.cs:58:18:58:41 | ... ? ... : ... | non-empty | -| D.cs:59:13:59:14 | access to local variable o5 | non-null | D.cs:58:18:58:41 | ... ? ... : ... | non-null | -| D.cs:59:13:59:14 | access to local variable o5 | null | D.cs:58:18:58:41 | ... ? ... : ... | null | -| D.cs:59:13:59:22 | ... != ... | false | D.cs:58:19:58:28 | ... != ... | false | -| D.cs:59:13:59:22 | ... != ... | false | D.cs:59:13:59:14 | access to local variable o5 | null | -| D.cs:59:13:59:22 | ... != ... | true | D.cs:58:19:58:28 | ... != ... | true | -| D.cs:59:13:59:22 | ... != ... | true | D.cs:59:13:59:14 | access to local variable o5 | non-null | -| D.cs:60:13:60:14 | access to local variable o4 | non-null | D.cs:54:18:54:34 | ... ? ... : ... | non-null | -| D.cs:60:13:60:14 | access to local variable o4 | null | D.cs:54:18:54:34 | ... ? ... : ... | null | -| D.cs:61:13:61:14 | access to local variable o4 | non-null | D.cs:54:18:54:34 | ... ? ... : ... | non-null | -| D.cs:61:13:61:14 | access to local variable o4 | null | D.cs:54:18:54:34 | ... ? ... : ... | null | -| D.cs:61:13:61:22 | ... != ... | false | D.cs:54:18:54:22 | access to field maybe | true | -| D.cs:61:13:61:22 | ... != ... | false | D.cs:61:13:61:14 | access to local variable o4 | null | -| D.cs:61:13:61:22 | ... != ... | true | D.cs:54:18:54:22 | access to field maybe | false | -| D.cs:61:13:61:22 | ... != ... | true | D.cs:61:13:61:14 | access to local variable o4 | non-null | -| D.cs:62:13:62:14 | access to local variable o5 | non-null | D.cs:58:18:58:41 | ... ? ... : ... | non-null | -| D.cs:62:13:62:14 | access to local variable o5 | null | D.cs:58:18:58:41 | ... ? ... : ... | null | -| D.cs:64:18:64:34 | ... ? ... : ... | non-null | D.cs:64:18:64:22 | access to field maybe | false | -| D.cs:64:18:64:34 | ... ? ... : ... | non-null | D.cs:64:33:64:34 | "" | non-null | -| D.cs:64:18:64:34 | ... ? ... : ... | null | D.cs:64:18:64:22 | access to field maybe | true | -| D.cs:64:18:64:34 | ... ? ... : ... | null | D.cs:64:26:64:29 | null | null | -| D.cs:65:13:65:29 | !... | false | D.cs:65:14:65:29 | call to method CustomIsNull | true | -| D.cs:65:13:65:29 | !... | true | D.cs:65:14:65:29 | call to method CustomIsNull | false | -| D.cs:65:14:65:29 | call to method CustomIsNull | false | D.cs:64:18:64:22 | access to field maybe | false | -| D.cs:65:14:65:29 | call to method CustomIsNull | false | D.cs:65:27:65:28 | access to local variable o6 | non-null | -| D.cs:65:14:65:29 | call to method CustomIsNull | true | D.cs:64:18:64:22 | access to field maybe | true | -| D.cs:65:14:65:29 | call to method CustomIsNull | true | D.cs:65:27:65:28 | access to local variable o6 | null | -| D.cs:65:27:65:28 | access to local variable o6 | empty | D.cs:64:18:64:34 | ... ? ... : ... | empty | -| D.cs:65:27:65:28 | access to local variable o6 | non-empty | D.cs:64:18:64:34 | ... ? ... : ... | non-empty | -| D.cs:65:27:65:28 | access to local variable o6 | non-null | D.cs:64:18:64:34 | ... ? ... : ... | non-null | -| D.cs:65:27:65:28 | access to local variable o6 | null | D.cs:64:18:64:34 | ... ? ... : ... | null | -| D.cs:66:13:66:14 | access to local variable o6 | non-null | D.cs:64:18:64:34 | ... ? ... : ... | non-null | -| D.cs:66:13:66:14 | access to local variable o6 | null | D.cs:64:18:64:34 | ... ? ... : ... | null | -| D.cs:68:18:68:34 | ... ? ... : ... | non-null | D.cs:68:18:68:22 | access to field maybe | false | -| D.cs:68:18:68:34 | ... ? ... : ... | non-null | D.cs:68:33:68:34 | "" | non-null | -| D.cs:68:18:68:34 | ... ? ... : ... | null | D.cs:68:18:68:22 | access to field maybe | true | -| D.cs:68:18:68:34 | ... ? ... : ... | null | D.cs:68:26:68:29 | null | null | -| D.cs:69:18:69:19 | access to local variable o7 | empty | D.cs:68:18:68:34 | ... ? ... : ... | empty | -| D.cs:69:18:69:19 | access to local variable o7 | non-empty | D.cs:68:18:68:34 | ... ? ... : ... | non-empty | -| D.cs:69:18:69:19 | access to local variable o7 | non-null | D.cs:68:18:68:34 | ... ? ... : ... | non-null | -| D.cs:69:18:69:19 | access to local variable o7 | null | D.cs:68:18:68:34 | ... ? ... : ... | null | -| D.cs:69:18:69:27 | ... != ... | false | D.cs:68:18:68:22 | access to field maybe | true | -| D.cs:69:18:69:27 | ... != ... | false | D.cs:69:18:69:19 | access to local variable o7 | null | -| D.cs:69:18:69:27 | ... != ... | true | D.cs:68:18:68:22 | access to field maybe | false | -| D.cs:69:18:69:27 | ... != ... | true | D.cs:69:18:69:19 | access to local variable o7 | non-null | -| D.cs:69:18:69:36 | ... && ... | true | D.cs:69:18:69:27 | ... != ... | true | -| D.cs:69:18:69:36 | ... && ... | true | D.cs:69:32:69:36 | ... > ... | true | -| D.cs:70:13:70:14 | access to local variable ok | false | D.cs:69:18:69:36 | ... && ... | false | -| D.cs:70:13:70:14 | access to local variable ok | true | D.cs:69:18:69:36 | ... && ... | true | -| D.cs:71:13:71:14 | access to local variable o7 | non-null | D.cs:68:18:68:34 | ... ? ... : ... | non-null | -| D.cs:71:13:71:14 | access to local variable o7 | null | D.cs:68:18:68:34 | ... ? ... : ... | null | -| D.cs:73:13:73:14 | access to local variable o7 | non-null | D.cs:68:18:68:34 | ... ? ... : ... | non-null | -| D.cs:73:13:73:14 | access to local variable o7 | null | D.cs:68:18:68:34 | ... ? ... : ... | null | -| D.cs:75:18:75:34 | ... ? ... : ... | non-null | D.cs:75:18:75:22 | access to field maybe | false | -| D.cs:75:18:75:34 | ... ? ... : ... | non-null | D.cs:75:33:75:34 | "" | non-null | -| D.cs:75:18:75:34 | ... ? ... : ... | null | D.cs:75:18:75:22 | access to field maybe | true | -| D.cs:75:18:75:34 | ... ? ... : ... | null | D.cs:75:26:75:29 | null | null | -| D.cs:76:21:76:22 | access to local variable o8 | empty | D.cs:75:18:75:34 | ... ? ... : ... | empty | -| D.cs:76:21:76:22 | access to local variable o8 | non-empty | D.cs:75:18:75:34 | ... ? ... : ... | non-empty | -| D.cs:76:21:76:22 | access to local variable o8 | non-null | D.cs:75:18:75:34 | ... ? ... : ... | non-null | -| D.cs:76:21:76:22 | access to local variable o8 | null | D.cs:75:18:75:34 | ... ? ... : ... | null | -| D.cs:76:21:76:30 | ... == ... | false | D.cs:75:18:75:22 | access to field maybe | false | -| D.cs:76:21:76:30 | ... == ... | false | D.cs:76:21:76:22 | access to local variable o8 | non-null | -| D.cs:76:21:76:30 | ... == ... | true | D.cs:75:18:75:22 | access to field maybe | true | -| D.cs:76:21:76:30 | ... == ... | true | D.cs:76:21:76:22 | access to local variable o8 | null | -| D.cs:77:13:77:22 | ... == ... | false | D.cs:76:21:76:30 | ... == ... | true | -| D.cs:77:13:77:22 | ... == ... | true | D.cs:76:21:76:30 | ... == ... | false | -| D.cs:78:13:78:14 | access to local variable o8 | non-null | D.cs:75:18:75:34 | ... ? ... : ... | non-null | -| D.cs:78:13:78:14 | access to local variable o8 | null | D.cs:75:18:75:34 | ... ? ... : ... | null | -| D.cs:79:13:79:23 | ... != ... | false | D.cs:76:21:76:30 | ... == ... | true | -| D.cs:79:13:79:23 | ... != ... | true | D.cs:76:21:76:30 | ... == ... | false | -| D.cs:80:13:80:14 | access to local variable o8 | non-null | D.cs:75:18:75:34 | ... ? ... : ... | non-null | -| D.cs:80:13:80:14 | access to local variable o8 | null | D.cs:75:18:75:34 | ... ? ... : ... | null | -| D.cs:82:13:82:14 | access to local variable o8 | non-null | D.cs:75:18:75:34 | ... ? ... : ... | non-null | -| D.cs:82:13:82:14 | access to local variable o8 | null | D.cs:75:18:75:34 | ... ? ... : ... | null | -| D.cs:84:13:84:14 | access to local variable o8 | non-null | D.cs:75:18:75:34 | ... ? ... : ... | non-null | -| D.cs:84:13:84:14 | access to local variable o8 | null | D.cs:75:18:75:34 | ... ? ... : ... | null | -| D.cs:89:20:89:44 | ... ? ... : ... | empty | D.cs:89:20:89:24 | access to field maybe | true | -| D.cs:89:20:89:44 | ... ? ... : ... | empty | D.cs:89:28:89:31 | null | empty | -| D.cs:89:20:89:44 | ... ? ... : ... | non-null | D.cs:89:20:89:24 | access to field maybe | false | -| D.cs:89:20:89:44 | ... ? ... : ... | non-null | D.cs:89:35:89:44 | array creation of type Int32[] | non-null | -| D.cs:89:20:89:44 | ... ? ... : ... | null | D.cs:89:20:89:24 | access to field maybe | true | -| D.cs:89:20:89:44 | ... ? ... : ... | null | D.cs:89:28:89:31 | null | null | -| D.cs:91:13:91:14 | access to local variable xs | empty | D.cs:89:20:89:44 | ... ? ... : ... | empty | -| D.cs:91:13:91:14 | access to local variable xs | non-empty | D.cs:89:20:89:44 | ... ? ... : ... | non-empty | -| D.cs:91:13:91:14 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:91:13:91:14 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:94:21:94:22 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:94:21:94:22 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:98:21:98:22 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:98:21:98:22 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:102:31:102:32 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:102:31:102:32 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:105:19:105:20 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:105:19:105:20 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:106:17:106:18 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:106:17:106:18 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:110:26:110:27 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:110:26:110:27 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:110:26:110:35 | ... != ... | false | D.cs:89:20:89:24 | access to field maybe | true | -| D.cs:110:26:110:35 | ... != ... | false | D.cs:110:26:110:27 | access to local variable xs | null | -| D.cs:110:26:110:35 | ... != ... | true | D.cs:89:20:89:24 | access to field maybe | false | -| D.cs:110:26:110:35 | ... != ... | true | D.cs:110:26:110:27 | access to local variable xs | non-null | -| D.cs:111:13:111:14 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:111:13:111:14 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:111:21:111:22 | access to local variable xs | non-null | D.cs:89:20:89:44 | ... ? ... : ... | non-null | -| D.cs:111:21:111:22 | access to local variable xs | null | D.cs:89:20:89:44 | ... ? ... : ... | null | -| D.cs:117:17:117:32 | ... ? ... : ... | non-null | D.cs:117:17:117:17 | access to parameter b | false | -| D.cs:117:17:117:32 | ... ? ... : ... | non-null | D.cs:117:28:117:32 | "abc" | non-null | -| D.cs:117:17:117:32 | ... ? ... : ... | null | D.cs:117:17:117:17 | access to parameter b | true | -| D.cs:117:17:117:32 | ... ? ... : ... | null | D.cs:117:21:117:24 | null | null | -| D.cs:118:13:118:13 | access to local variable x | empty | D.cs:117:17:117:32 | ... ? ... : ... | empty | -| D.cs:118:13:118:13 | access to local variable x | non-empty | D.cs:117:17:117:32 | ... ? ... : ... | non-empty | -| D.cs:118:13:118:13 | access to local variable x | non-null | D.cs:117:17:117:32 | ... ? ... : ... | non-null | -| D.cs:118:13:118:13 | access to local variable x | null | D.cs:117:17:117:32 | ... ? ... : ... | null | -| D.cs:118:13:118:21 | ... == ... | false | D.cs:117:17:117:17 | access to parameter b | false | -| D.cs:118:13:118:21 | ... == ... | false | D.cs:118:13:118:13 | access to local variable x | non-null | -| D.cs:118:13:118:21 | ... == ... | true | D.cs:117:17:117:17 | access to parameter b | true | -| D.cs:118:13:118:21 | ... == ... | true | D.cs:118:13:118:13 | access to local variable x | null | -| D.cs:118:13:118:30 | ... ? ... : ... | null | D.cs:118:13:118:21 | ... == ... | false | -| D.cs:118:13:118:30 | ... ? ... : ... | null | D.cs:118:30:118:30 | access to local variable x | null | -| D.cs:118:30:118:30 | access to local variable x | non-null | D.cs:117:17:117:32 | ... ? ... : ... | non-null | -| D.cs:118:30:118:30 | access to local variable x | null | D.cs:117:17:117:32 | ... ? ... : ... | null | -| D.cs:119:13:119:13 | access to local variable x | empty | D.cs:118:13:118:30 | ... ? ... : ... | empty | -| D.cs:119:13:119:13 | access to local variable x | non-empty | D.cs:118:13:118:30 | ... ? ... : ... | non-empty | -| D.cs:119:13:119:13 | access to local variable x | non-null | D.cs:118:13:118:30 | ... ? ... : ... | non-null | -| D.cs:119:13:119:13 | access to local variable x | null | D.cs:118:13:118:30 | ... ? ... : ... | null | -| D.cs:119:13:119:21 | ... == ... | false | D.cs:119:13:119:13 | access to local variable x | non-null | -| D.cs:119:13:119:21 | ... == ... | true | D.cs:118:13:118:21 | ... == ... | false | -| D.cs:119:13:119:21 | ... == ... | true | D.cs:119:13:119:13 | access to local variable x | null | -| D.cs:120:13:120:13 | access to local variable x | non-null | D.cs:118:13:118:30 | ... ? ... : ... | non-null | -| D.cs:120:13:120:13 | access to local variable x | null | D.cs:118:13:118:30 | ... ? ... : ... | null | -| D.cs:122:13:122:13 | access to local variable x | non-null | D.cs:118:13:118:30 | ... ? ... : ... | non-null | -| D.cs:122:13:122:13 | access to local variable x | null | D.cs:118:13:118:30 | ... ? ... : ... | null | -| D.cs:127:20:127:28 | ... == ... | false | D.cs:127:20:127:20 | access to parameter a | non-null | -| D.cs:127:20:127:28 | ... == ... | true | D.cs:127:20:127:20 | access to parameter a | null | -| D.cs:128:20:128:28 | ... == ... | false | D.cs:128:20:128:20 | access to parameter b | non-null | -| D.cs:128:20:128:28 | ... == ... | true | D.cs:128:20:128:20 | access to parameter b | null | -| D.cs:139:13:139:21 | ... != ... | false | D.cs:139:13:139:13 | access to parameter a | null | -| D.cs:139:13:139:21 | ... != ... | true | D.cs:139:13:139:13 | access to parameter a | non-null | -| D.cs:152:17:152:27 | ... != ... | false | D.cs:152:17:152:19 | access to parameter obj | null | -| D.cs:152:17:152:27 | ... != ... | true | D.cs:152:17:152:19 | access to parameter obj | non-null | -| D.cs:182:9:182:12 | access to local variable obj2 | non-null | D.cs:176:20:176:28 | call to method MkMaybe | non-null | -| D.cs:182:9:182:12 | access to local variable obj2 | null | D.cs:176:20:176:28 | call to method MkMaybe | null | -| D.cs:196:13:196:13 | access to local variable o | non-null | D.cs:195:17:195:28 | object creation of type Object | non-null | -| D.cs:196:13:196:13 | access to local variable o | null | D.cs:195:17:195:28 | object creation of type Object | null | -| D.cs:196:13:196:21 | ... == ... | false | D.cs:196:13:196:13 | access to local variable o | non-null | -| D.cs:196:13:196:21 | ... == ... | true | D.cs:196:13:196:13 | access to local variable o | null | -| D.cs:196:13:196:21 | ... == ... | true | D.cs:196:18:196:21 | null | non-null | -| D.cs:197:13:197:13 | access to local variable o | non-null | D.cs:195:17:195:28 | object creation of type Object | non-null | -| D.cs:197:13:197:13 | access to local variable o | null | D.cs:195:17:195:28 | object creation of type Object | null | -| D.cs:198:9:198:9 | access to local variable o | non-null | D.cs:195:17:195:28 | object creation of type Object | non-null | -| D.cs:198:9:198:9 | access to local variable o | null | D.cs:195:17:195:28 | object creation of type Object | null | -| D.cs:206:17:206:25 | ... == ... | false | D.cs:206:17:206:17 | access to local variable e | non-null | -| D.cs:206:17:206:25 | ... == ... | true | D.cs:206:17:206:17 | access to local variable e | null | -| D.cs:212:18:212:18 | access to local variable n | non-null | D.cs:211:20:211:23 | null | non-null | -| D.cs:212:18:212:18 | access to local variable n | null | D.cs:211:20:211:23 | null | null | -| D.cs:212:18:212:26 | ... == ... | false | D.cs:212:18:212:18 | access to local variable n | non-null | -| D.cs:212:18:212:26 | ... == ... | false | D.cs:212:23:212:26 | null | non-null | -| D.cs:212:18:212:26 | ... == ... | true | D.cs:212:18:212:18 | access to local variable n | null | -| D.cs:212:18:212:26 | ... == ... | true | D.cs:212:23:212:26 | null | null | -| D.cs:212:18:212:45 | ... ? ... : ... | non-null | D.cs:212:18:212:26 | ... == ... | true | -| D.cs:212:18:212:45 | ... ? ... : ... | non-null | D.cs:212:30:212:41 | object creation of type Object | non-null | -| D.cs:212:18:212:45 | ... ? ... : ... | null | D.cs:212:18:212:26 | ... == ... | false | -| D.cs:212:18:212:45 | ... ? ... : ... | null | D.cs:212:45:212:45 | access to local variable n | null | -| D.cs:212:45:212:45 | access to local variable n | non-null | D.cs:211:20:211:23 | null | non-null | -| D.cs:212:45:212:45 | access to local variable n | null | D.cs:211:20:211:23 | null | null | -| D.cs:213:9:213:10 | access to local variable o2 | non-null | D.cs:212:18:212:45 | ... ? ... : ... | non-null | -| D.cs:213:9:213:10 | access to local variable o2 | null | D.cs:212:18:212:45 | ... ? ... : ... | null | -| D.cs:216:13:216:14 | access to local variable o3 | empty | D.cs:215:18:215:22 | "abc" | empty | -| D.cs:216:13:216:14 | access to local variable o3 | non-empty | D.cs:215:18:215:22 | "abc" | non-empty | -| D.cs:216:13:216:14 | access to local variable o3 | non-null | D.cs:215:18:215:22 | "abc" | non-null | -| D.cs:216:13:216:14 | access to local variable o3 | null | D.cs:215:18:215:22 | "abc" | null | -| D.cs:216:13:216:22 | ... == ... | false | D.cs:216:13:216:14 | access to local variable o3 | non-null | -| D.cs:216:13:216:22 | ... == ... | true | D.cs:216:13:216:14 | access to local variable o3 | null | -| D.cs:216:13:216:22 | ... == ... | true | D.cs:216:19:216:22 | null | non-null | -| D.cs:217:13:217:14 | access to local variable o3 | non-null | D.cs:215:18:215:22 | "abc" | non-null | -| D.cs:217:13:217:14 | access to local variable o3 | null | D.cs:215:18:215:22 | "abc" | null | -| D.cs:218:9:218:10 | access to local variable o3 | non-null | D.cs:215:18:215:22 | "abc" | non-null | -| D.cs:218:9:218:10 | access to local variable o3 | null | D.cs:215:18:215:22 | "abc" | null | -| D.cs:220:18:220:26 | ... + ... | non-null | D.cs:220:18:220:19 | "" | non-null | -| D.cs:220:18:220:26 | ... + ... | non-null | D.cs:220:23:220:26 | null | non-null | -| D.cs:220:18:220:26 | ... + ... | null | D.cs:220:23:220:26 | null | null | -| D.cs:221:13:221:14 | access to local variable o4 | empty | D.cs:220:18:220:26 | ... + ... | empty | -| D.cs:221:13:221:14 | access to local variable o4 | non-empty | D.cs:220:18:220:26 | ... + ... | non-empty | -| D.cs:221:13:221:14 | access to local variable o4 | non-null | D.cs:220:18:220:26 | ... + ... | non-null | -| D.cs:221:13:221:14 | access to local variable o4 | null | D.cs:220:18:220:26 | ... + ... | null | -| D.cs:221:13:221:22 | ... == ... | false | D.cs:221:13:221:14 | access to local variable o4 | non-null | -| D.cs:221:13:221:22 | ... == ... | true | D.cs:221:13:221:14 | access to local variable o4 | null | -| D.cs:221:13:221:22 | ... == ... | true | D.cs:221:19:221:22 | null | non-null | -| D.cs:222:13:222:14 | access to local variable o4 | non-null | D.cs:220:18:220:26 | ... + ... | non-null | -| D.cs:222:13:222:14 | access to local variable o4 | null | D.cs:220:18:220:26 | ... + ... | null | -| D.cs:223:9:223:10 | access to local variable o4 | non-null | D.cs:220:18:220:26 | ... + ... | non-null | -| D.cs:223:9:223:10 | access to local variable o4 | null | D.cs:220:18:220:26 | ... + ... | null | -| D.cs:241:21:241:37 | ... ? ... : ... | non-null | D.cs:241:21:241:25 | access to field maybe | false | -| D.cs:241:21:241:37 | ... ? ... : ... | non-null | D.cs:241:36:241:37 | "" | non-null | -| D.cs:241:21:241:37 | ... ? ... : ... | null | D.cs:241:21:241:25 | access to field maybe | true | -| D.cs:241:21:241:37 | ... ? ... : ... | null | D.cs:241:29:241:32 | null | null | -| D.cs:242:13:242:17 | access to local variable other | empty | D.cs:241:21:241:37 | ... ? ... : ... | empty | -| D.cs:242:13:242:17 | access to local variable other | non-empty | D.cs:241:21:241:37 | ... ? ... : ... | non-empty | -| D.cs:242:13:242:17 | access to local variable other | non-null | D.cs:241:21:241:37 | ... ? ... : ... | non-null | -| D.cs:242:13:242:17 | access to local variable other | null | D.cs:241:21:241:37 | ... ? ... : ... | null | -| D.cs:242:13:242:25 | ... == ... | false | D.cs:241:21:241:25 | access to field maybe | false | -| D.cs:242:13:242:25 | ... == ... | false | D.cs:242:13:242:17 | access to local variable other | non-null | -| D.cs:242:13:242:25 | ... == ... | true | D.cs:241:21:241:25 | access to field maybe | true | -| D.cs:242:13:242:25 | ... == ... | true | D.cs:242:13:242:17 | access to local variable other | null | -| D.cs:244:13:244:17 | access to local variable other | non-null | D.cs:241:21:241:37 | ... ? ... : ... | non-null | -| D.cs:244:13:244:17 | access to local variable other | null | D.cs:241:21:241:37 | ... ? ... : ... | null | -| D.cs:244:13:244:25 | ... != ... | false | D.cs:241:21:241:25 | access to field maybe | true | -| D.cs:244:13:244:25 | ... != ... | false | D.cs:244:13:244:17 | access to local variable other | null | -| D.cs:244:13:244:25 | ... != ... | true | D.cs:241:21:241:25 | access to field maybe | false | -| D.cs:244:13:244:25 | ... != ... | true | D.cs:244:13:244:17 | access to local variable other | non-null | -| D.cs:249:18:249:38 | ... ? ... : ... | non-null | D.cs:249:19:249:25 | ... < ... | false | -| D.cs:249:18:249:38 | ... ? ... : ... | non-null | D.cs:249:37:249:38 | "" | non-null | -| D.cs:249:18:249:38 | ... ? ... : ... | null | D.cs:249:19:249:25 | ... < ... | true | -| D.cs:249:18:249:38 | ... ? ... : ... | null | D.cs:249:30:249:33 | null | null | -| D.cs:253:13:253:14 | access to local variable o2 | empty | D.cs:249:18:249:38 | ... ? ... : ... | empty | -| D.cs:253:13:253:14 | access to local variable o2 | non-empty | D.cs:249:18:249:38 | ... ? ... : ... | non-empty | -| D.cs:253:13:253:14 | access to local variable o2 | non-null | D.cs:249:18:249:38 | ... ? ... : ... | non-null | -| D.cs:253:13:253:14 | access to local variable o2 | null | D.cs:249:18:249:38 | ... ? ... : ... | null | -| D.cs:266:13:266:27 | ... is ... | true | D.cs:266:13:266:17 | access to local variable other | non-null | -| D.cs:310:21:310:26 | ... + ... | non-null | D.cs:310:21:310:22 | "" | non-null | -| D.cs:310:21:310:26 | ... + ... | non-null | D.cs:310:26:310:26 | call to method ToString | non-null | -| D.cs:310:21:310:26 | ... + ... | null | D.cs:310:26:310:26 | call to method ToString | null | -| D.cs:312:17:312:23 | !... | false | D.cs:312:18:312:23 | access to local variable s_null | true | -| D.cs:312:17:312:23 | !... | true | D.cs:312:18:312:23 | access to local variable s_null | false | -| D.cs:318:16:318:62 | ... && ... | true | D.cs:318:16:318:36 | ... == ... | true | -| D.cs:318:16:318:62 | ... && ... | true | D.cs:318:41:318:62 | ... != ... | true | -| D.cs:336:13:336:23 | ... == ... | false | D.cs:336:13:336:15 | access to parameter obj | non-null | -| D.cs:336:13:336:23 | ... == ... | true | D.cs:336:13:336:15 | access to parameter obj | null | -| D.cs:341:13:341:23 | ... != ... | false | D.cs:336:13:336:23 | ... == ... | false | -| D.cs:341:13:341:23 | ... != ... | false | D.cs:341:13:341:15 | access to local variable msg | null | -| D.cs:341:13:341:23 | ... != ... | true | D.cs:341:13:341:15 | access to local variable msg | non-null | -| D.cs:343:13:343:27 | ... + ... | non-null | D.cs:343:13:343:15 | access to local variable msg | non-null | -| D.cs:343:13:343:27 | ... + ... | non-null | D.cs:343:20:343:27 | "foobar" | non-null | -| D.cs:343:13:343:27 | ... + ... | null | D.cs:343:13:343:15 | access to local variable msg | null | -| D.cs:343:13:343:27 | ... = ... | empty | D.cs:343:13:343:15 | access to local variable msg | empty | -| D.cs:343:13:343:27 | ... = ... | empty | D.cs:343:13:343:27 | ... + ... | empty | -| D.cs:343:13:343:27 | ... = ... | non-empty | D.cs:343:13:343:15 | access to local variable msg | non-empty | -| D.cs:343:13:343:27 | ... = ... | non-empty | D.cs:343:13:343:27 | ... + ... | non-empty | -| D.cs:343:13:343:27 | ... = ... | non-null | D.cs:343:13:343:15 | access to local variable msg | non-null | -| D.cs:343:13:343:27 | ... = ... | non-null | D.cs:343:13:343:27 | ... + ... | non-null | -| D.cs:343:13:343:27 | ... = ... | null | D.cs:343:13:343:15 | access to local variable msg | null | -| D.cs:343:13:343:27 | ... = ... | null | D.cs:343:13:343:27 | ... + ... | null | -| D.cs:344:33:344:35 | access to local variable msg | empty | D.cs:343:13:343:27 | ... + ... | empty | -| D.cs:344:33:344:35 | access to local variable msg | non-empty | D.cs:343:13:343:27 | ... + ... | non-empty | -| D.cs:344:33:344:35 | access to local variable msg | non-null | D.cs:343:13:343:27 | ... + ... | non-null | -| D.cs:344:33:344:35 | access to local variable msg | null | D.cs:343:13:343:27 | ... + ... | null | -| D.cs:366:19:366:47 | ... ? ... : ... | non-null | D.cs:366:19:366:23 | access to field maybe | false | -| D.cs:366:19:366:47 | ... ? ... : ... | non-null | D.cs:366:34:366:47 | array creation of type Int32[] | non-null | -| D.cs:366:19:366:47 | ... ? ... : ... | null | D.cs:366:19:366:23 | access to field maybe | true | -| D.cs:366:19:366:47 | ... ? ... : ... | null | D.cs:366:27:366:30 | null | null | -| D.cs:367:13:367:56 | ... && ... | true | D.cs:367:13:367:21 | ... > ... | true | -| D.cs:367:13:367:56 | ... && ... | true | D.cs:367:27:367:55 | ... \|\| ... | true | -| D.cs:367:27:367:27 | access to local variable b | empty | D.cs:366:19:366:47 | ... ? ... : ... | empty | -| D.cs:367:27:367:27 | access to local variable b | non-empty | D.cs:366:19:366:47 | ... ? ... : ... | non-empty | -| D.cs:367:27:367:27 | access to local variable b | non-null | D.cs:366:19:366:47 | ... ? ... : ... | non-null | -| D.cs:367:27:367:27 | access to local variable b | null | D.cs:366:19:366:47 | ... ? ... : ... | null | -| D.cs:367:27:367:35 | ... == ... | false | D.cs:366:19:366:23 | access to field maybe | false | -| D.cs:367:27:367:35 | ... == ... | false | D.cs:367:27:367:27 | access to local variable b | non-null | -| D.cs:367:27:367:35 | ... == ... | true | D.cs:366:19:366:23 | access to field maybe | true | -| D.cs:367:27:367:35 | ... == ... | true | D.cs:367:27:367:27 | access to local variable b | null | -| D.cs:367:27:367:55 | ... \|\| ... | false | D.cs:367:27:367:35 | ... == ... | false | -| D.cs:367:27:367:55 | ... \|\| ... | false | D.cs:367:40:367:55 | ... < ... | false | -| D.cs:367:40:367:40 | access to local variable b | non-null | D.cs:366:19:366:47 | ... ? ... : ... | non-null | -| D.cs:367:40:367:40 | access to local variable b | null | D.cs:366:19:366:47 | ... ? ... : ... | null | -| D.cs:372:13:372:13 | access to local variable b | non-null | D.cs:366:19:366:47 | ... ? ... : ... | non-null | -| D.cs:372:13:372:13 | access to local variable b | null | D.cs:366:19:366:47 | ... ? ... : ... | null | -| D.cs:382:13:382:23 | ... != ... | false | D.cs:379:13:379:13 | access to parameter b | false | -| D.cs:382:13:382:23 | ... != ... | false | D.cs:382:13:382:15 | access to local variable ioe | null | -| D.cs:382:13:382:23 | ... != ... | true | D.cs:382:13:382:15 | access to local variable ioe | non-null | -| D.cs:390:20:390:28 | ... == ... | false | D.cs:390:20:390:20 | access to parameter a | non-null | -| D.cs:390:20:390:28 | ... == ... | true | D.cs:390:20:390:20 | access to parameter a | null | -| D.cs:397:20:397:28 | ... == ... | false | D.cs:397:20:397:20 | access to parameter b | non-null | -| D.cs:397:20:397:28 | ... == ... | true | D.cs:397:20:397:20 | access to parameter b | null | -| D.cs:407:13:407:64 | ... \|\| ... | false | D.cs:407:14:407:35 | ... && ... | false | -| D.cs:407:13:407:64 | ... \|\| ... | false | D.cs:407:42:407:63 | ... && ... | false | -| D.cs:407:14:407:22 | ... != ... | false | D.cs:407:14:407:14 | access to parameter x | null | -| D.cs:407:14:407:22 | ... != ... | true | D.cs:407:14:407:14 | access to parameter x | non-null | -| D.cs:407:14:407:35 | ... && ... | true | D.cs:407:14:407:22 | ... != ... | true | -| D.cs:407:14:407:35 | ... && ... | true | D.cs:407:27:407:35 | ... == ... | true | -| D.cs:407:27:407:35 | ... == ... | false | D.cs:407:27:407:27 | access to parameter y | non-null | -| D.cs:407:27:407:35 | ... == ... | true | D.cs:407:27:407:27 | access to parameter y | null | -| D.cs:407:42:407:50 | ... == ... | false | D.cs:407:42:407:42 | access to parameter x | non-null | -| D.cs:407:42:407:50 | ... == ... | true | D.cs:407:42:407:42 | access to parameter x | null | -| D.cs:407:42:407:63 | ... && ... | true | D.cs:407:42:407:50 | ... == ... | true | -| D.cs:407:42:407:63 | ... && ... | true | D.cs:407:55:407:63 | ... != ... | true | -| D.cs:407:55:407:63 | ... != ... | false | D.cs:407:55:407:55 | access to parameter y | null | -| D.cs:407:55:407:63 | ... != ... | true | D.cs:407:55:407:55 | access to parameter y | non-null | -| D.cs:409:13:409:21 | ... != ... | false | D.cs:409:13:409:13 | access to parameter x | null | -| D.cs:409:13:409:21 | ... != ... | true | D.cs:409:13:409:13 | access to parameter x | non-null | -| D.cs:411:13:411:21 | ... != ... | false | D.cs:411:13:411:13 | access to parameter y | null | -| D.cs:411:13:411:21 | ... != ... | true | D.cs:411:13:411:13 | access to parameter y | non-null | -| E.cs:10:22:10:54 | ... && ... | true | E.cs:10:22:10:29 | ... < ... | true | -| E.cs:10:22:10:54 | ... && ... | true | E.cs:10:34:10:54 | ... != ... | true | -| E.cs:10:34:10:54 | ... != ... | false | E.cs:10:35:10:45 | ... = ... | null | -| E.cs:10:34:10:54 | ... != ... | true | E.cs:10:35:10:45 | ... = ... | non-null | -| E.cs:10:35:10:45 | ... = ... | empty | E.cs:10:35:10:36 | access to local variable a2 | empty | -| E.cs:10:35:10:45 | ... = ... | empty | E.cs:10:40:10:45 | access to array element | empty | -| E.cs:10:35:10:45 | ... = ... | non-empty | E.cs:10:35:10:36 | access to local variable a2 | non-empty | -| E.cs:10:35:10:45 | ... = ... | non-empty | E.cs:10:40:10:45 | access to array element | non-empty | -| E.cs:10:35:10:45 | ... = ... | non-null | E.cs:10:35:10:36 | access to local variable a2 | non-null | -| E.cs:10:35:10:45 | ... = ... | non-null | E.cs:10:40:10:45 | access to array element | non-null | -| E.cs:10:35:10:45 | ... = ... | null | E.cs:10:35:10:36 | access to local variable a2 | null | -| E.cs:10:35:10:45 | ... = ... | null | E.cs:10:40:10:45 | access to array element | null | -| E.cs:12:22:12:27 | access to local variable haveA2 | false | E.cs:10:22:10:54 | ... && ... | false | -| E.cs:12:22:12:27 | access to local variable haveA2 | true | E.cs:10:22:10:54 | ... && ... | true | -| E.cs:12:22:12:52 | ... && ... | true | E.cs:12:22:12:27 | access to local variable haveA2 | true | -| E.cs:12:22:12:52 | ... && ... | true | E.cs:12:32:12:52 | ... != ... | true | -| E.cs:12:32:12:52 | ... != ... | false | E.cs:12:33:12:43 | ... = ... | null | -| E.cs:12:32:12:52 | ... != ... | true | E.cs:12:33:12:43 | ... = ... | non-null | -| E.cs:12:33:12:43 | ... = ... | empty | E.cs:12:33:12:34 | access to local variable a3 | empty | -| E.cs:12:33:12:43 | ... = ... | empty | E.cs:12:38:12:43 | access to array element | empty | -| E.cs:12:33:12:43 | ... = ... | non-empty | E.cs:12:33:12:34 | access to local variable a3 | non-empty | -| E.cs:12:33:12:43 | ... = ... | non-empty | E.cs:12:38:12:43 | access to array element | non-empty | -| E.cs:12:33:12:43 | ... = ... | non-null | E.cs:12:33:12:34 | access to local variable a3 | non-null | -| E.cs:12:33:12:43 | ... = ... | non-null | E.cs:12:38:12:43 | access to array element | non-null | -| E.cs:12:33:12:43 | ... = ... | null | E.cs:12:33:12:34 | access to local variable a3 | null | -| E.cs:12:33:12:43 | ... = ... | null | E.cs:12:38:12:43 | access to array element | null | -| E.cs:13:13:13:18 | access to local variable haveA3 | false | E.cs:12:22:12:52 | ... && ... | false | -| E.cs:13:13:13:18 | access to local variable haveA3 | true | E.cs:12:22:12:52 | ... && ... | true | -| E.cs:19:18:19:30 | ... ? ... : ... | non-null | E.cs:19:18:19:18 | access to parameter x | false | -| E.cs:19:18:19:30 | ... ? ... : ... | non-null | E.cs:19:29:19:30 | "" | non-null | -| E.cs:19:18:19:30 | ... ? ... : ... | null | E.cs:19:18:19:18 | access to parameter x | true | -| E.cs:19:18:19:30 | ... ? ... : ... | null | E.cs:19:22:19:25 | null | null | -| E.cs:20:18:20:41 | ... ? ... : ... | non-null | E.cs:20:19:20:28 | ... == ... | false | -| E.cs:20:18:20:41 | ... ? ... : ... | non-null | E.cs:20:40:20:41 | "" | non-null | -| E.cs:20:18:20:41 | ... ? ... : ... | null | E.cs:20:19:20:28 | ... == ... | true | -| E.cs:20:18:20:41 | ... ? ... : ... | null | E.cs:20:33:20:36 | null | null | -| E.cs:20:19:20:20 | access to local variable s1 | empty | E.cs:19:18:19:30 | ... ? ... : ... | empty | -| E.cs:20:19:20:20 | access to local variable s1 | non-empty | E.cs:19:18:19:30 | ... ? ... : ... | non-empty | -| E.cs:20:19:20:20 | access to local variable s1 | non-null | E.cs:19:18:19:30 | ... ? ... : ... | non-null | -| E.cs:20:19:20:20 | access to local variable s1 | null | E.cs:19:18:19:30 | ... ? ... : ... | null | -| E.cs:20:19:20:28 | ... == ... | false | E.cs:19:18:19:18 | access to parameter x | false | -| E.cs:20:19:20:28 | ... == ... | false | E.cs:20:19:20:20 | access to local variable s1 | non-null | -| E.cs:20:19:20:28 | ... == ... | true | E.cs:19:18:19:18 | access to parameter x | true | -| E.cs:20:19:20:28 | ... == ... | true | E.cs:20:19:20:20 | access to local variable s1 | null | -| E.cs:21:13:21:14 | access to local variable s2 | empty | E.cs:20:18:20:41 | ... ? ... : ... | empty | -| E.cs:21:13:21:14 | access to local variable s2 | non-empty | E.cs:20:18:20:41 | ... ? ... : ... | non-empty | -| E.cs:21:13:21:14 | access to local variable s2 | non-null | E.cs:20:18:20:41 | ... ? ... : ... | non-null | -| E.cs:21:13:21:14 | access to local variable s2 | null | E.cs:20:18:20:41 | ... ? ... : ... | null | -| E.cs:21:13:21:22 | ... == ... | false | E.cs:20:19:20:28 | ... == ... | false | -| E.cs:21:13:21:22 | ... == ... | false | E.cs:21:13:21:14 | access to local variable s2 | non-null | -| E.cs:21:13:21:22 | ... == ... | true | E.cs:20:19:20:28 | ... == ... | true | -| E.cs:21:13:21:22 | ... == ... | true | E.cs:21:13:21:14 | access to local variable s2 | null | -| E.cs:23:18:23:30 | ... ? ... : ... | non-null | E.cs:23:18:23:18 | access to parameter y | false | -| E.cs:23:18:23:30 | ... ? ... : ... | non-null | E.cs:23:29:23:30 | "" | non-null | -| E.cs:23:18:23:30 | ... ? ... : ... | null | E.cs:23:18:23:18 | access to parameter y | true | -| E.cs:23:18:23:30 | ... ? ... : ... | null | E.cs:23:22:23:25 | null | null | -| E.cs:24:18:24:41 | ... ? ... : ... | non-null | E.cs:24:19:24:28 | ... == ... | false | -| E.cs:24:18:24:41 | ... ? ... : ... | non-null | E.cs:24:40:24:41 | "" | non-null | -| E.cs:24:18:24:41 | ... ? ... : ... | null | E.cs:24:19:24:28 | ... == ... | true | -| E.cs:24:18:24:41 | ... ? ... : ... | null | E.cs:24:33:24:36 | null | null | -| E.cs:24:19:24:20 | access to local variable s1 | empty | E.cs:23:18:23:30 | ... ? ... : ... | empty | -| E.cs:24:19:24:20 | access to local variable s1 | non-empty | E.cs:23:18:23:30 | ... ? ... : ... | non-empty | -| E.cs:24:19:24:20 | access to local variable s1 | non-null | E.cs:23:18:23:30 | ... ? ... : ... | non-null | -| E.cs:24:19:24:20 | access to local variable s1 | null | E.cs:23:18:23:30 | ... ? ... : ... | null | -| E.cs:24:19:24:28 | ... == ... | false | E.cs:23:18:23:18 | access to parameter y | false | -| E.cs:24:19:24:28 | ... == ... | false | E.cs:24:19:24:20 | access to local variable s1 | non-null | -| E.cs:24:19:24:28 | ... == ... | true | E.cs:23:18:23:18 | access to parameter y | true | -| E.cs:24:19:24:28 | ... == ... | true | E.cs:24:19:24:20 | access to local variable s1 | null | -| E.cs:26:13:26:22 | ... != ... | false | E.cs:26:13:26:14 | access to local variable s2 | null | -| E.cs:26:13:26:22 | ... != ... | true | E.cs:26:13:26:14 | access to local variable s2 | non-null | -| E.cs:38:13:38:20 | call to method Any | false | E.cs:38:13:38:14 | access to parameter ss | empty | -| E.cs:38:13:38:20 | call to method Any | true | E.cs:38:13:38:14 | access to parameter ss | non-empty | -| E.cs:53:16:53:19 | access to local variable iter | non-null | E.cs:52:20:52:39 | call to method GetEnumerator | non-null | -| E.cs:53:16:53:19 | access to local variable iter | null | E.cs:52:20:52:39 | call to method GetEnumerator | null | -| E.cs:55:23:55:26 | access to local variable iter | non-null | E.cs:52:20:52:39 | call to method GetEnumerator | non-null | -| E.cs:55:23:55:26 | access to local variable iter | null | E.cs:52:20:52:39 | call to method GetEnumerator | null | -| E.cs:59:17:59:22 | access to local variable result | empty | E.cs:50:22:50:45 | object creation of type List> | empty | -| E.cs:59:17:59:22 | access to local variable result | non-empty | E.cs:50:22:50:45 | object creation of type List> | non-empty | -| E.cs:59:17:59:22 | access to local variable result | non-null | E.cs:50:22:50:45 | object creation of type List> | non-null | -| E.cs:59:17:59:22 | access to local variable result | null | E.cs:50:22:50:45 | object creation of type List> | null | -| E.cs:59:28:59:32 | access to local variable slice | empty | E.cs:58:25:58:42 | object creation of type List | empty | -| E.cs:59:28:59:32 | access to local variable slice | non-empty | E.cs:58:25:58:42 | object creation of type List | non-empty | -| E.cs:59:28:59:32 | access to local variable slice | non-null | E.cs:58:25:58:42 | object creation of type List | non-null | -| E.cs:59:28:59:32 | access to local variable slice | null | E.cs:58:25:58:42 | object creation of type List | null | -| E.cs:61:23:61:25 | access to local variable str | empty | E.cs:55:23:55:34 | access to property Current | empty | -| E.cs:61:23:61:25 | access to local variable str | non-empty | E.cs:55:23:55:34 | access to property Current | non-empty | -| E.cs:61:23:61:25 | access to local variable str | non-null | E.cs:55:23:55:34 | access to property Current | non-null | -| E.cs:61:23:61:25 | access to local variable str | null | E.cs:55:23:55:34 | access to property Current | null | -| E.cs:70:22:70:32 | ... == ... | false | E.cs:70:22:70:24 | access to parameter arr | non-null | -| E.cs:70:22:70:32 | ... == ... | true | E.cs:70:22:70:24 | access to parameter arr | null | -| E.cs:83:13:83:24 | ... != ... | false | E.cs:83:13:83:16 | access to parameter vals | null | -| E.cs:83:13:83:24 | ... != ... | true | E.cs:83:13:83:16 | access to parameter vals | non-null | -| E.cs:83:13:83:30 | ... && ... | true | E.cs:83:13:83:24 | ... != ... | true | -| E.cs:83:13:83:30 | ... && ... | true | E.cs:83:29:83:30 | access to parameter b1 | true | -| E.cs:85:18:85:29 | ... != ... | false | E.cs:85:18:85:21 | access to parameter vals | null | -| E.cs:85:18:85:29 | ... != ... | true | E.cs:85:18:85:21 | access to parameter vals | non-null | -| E.cs:85:18:85:35 | ... && ... | true | E.cs:85:18:85:29 | ... != ... | true | -| E.cs:85:18:85:35 | ... && ... | true | E.cs:85:34:85:35 | access to parameter b2 | true | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:83:13:83:30 | ... && ... | true | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:90:17:90:27 | access to local variable switchguard | 1 | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:83:13:83:30 | ... && ... | false | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:85:18:85:35 | ... && ... | true | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:90:17:90:27 | access to local variable switchguard | 2 | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:83:13:83:30 | ... && ... | false | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:85:18:85:35 | ... && ... | false | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:90:17:90:27 | access to local variable switchguard | 3 | -| E.cs:90:17:90:27 | access to local variable switchguard | non-match access to constant MY_CONST_A | E.cs:83:13:83:30 | ... && ... | false | -| E.cs:108:13:108:27 | ... > ... | true | E.cs:108:13:108:16 | access to parameter arr1 | non-empty | -| E.cs:120:16:120:20 | !... | false | E.cs:120:17:120:20 | access to local variable stop | true | -| E.cs:120:16:120:20 | !... | true | E.cs:120:17:120:20 | access to local variable stop | false | -| E.cs:123:20:123:24 | !... | false | E.cs:123:21:123:24 | access to local variable stop | true | -| E.cs:123:20:123:24 | !... | true | E.cs:123:21:123:24 | access to local variable stop | false | -| E.cs:123:20:123:35 | ... && ... | true | E.cs:123:20:123:24 | !... | true | -| E.cs:123:20:123:35 | ... && ... | true | E.cs:123:29:123:35 | ... < ... | true | -| E.cs:131:25:131:29 | !... | false | E.cs:131:26:131:29 | access to local variable stop | true | -| E.cs:131:25:131:29 | !... | true | E.cs:131:26:131:29 | access to local variable stop | false | -| E.cs:131:26:131:29 | access to local variable stop | false | E.cs:130:28:130:33 | ... >= ... | false | -| E.cs:131:26:131:29 | access to local variable stop | true | E.cs:130:28:130:33 | ... >= ... | true | -| E.cs:153:13:153:16 | access to local variable obj2 | non-null | E.cs:152:23:152:26 | access to parameter obj1 | non-null | -| E.cs:153:13:153:16 | access to local variable obj2 | null | E.cs:152:23:152:26 | access to parameter obj1 | null | -| E.cs:153:13:153:24 | ... != ... | false | E.cs:153:13:153:16 | access to local variable obj2 | null | -| E.cs:153:13:153:24 | ... != ... | true | E.cs:153:13:153:16 | access to local variable obj2 | non-null | -| E.cs:153:13:153:54 | ... && ... | true | E.cs:153:13:153:24 | ... != ... | true | -| E.cs:153:13:153:54 | ... && ... | true | E.cs:153:29:153:54 | ... > ... | true | -| E.cs:153:29:153:32 | access to local variable obj2 | non-null | E.cs:152:23:152:26 | access to parameter obj1 | non-null | -| E.cs:153:29:153:32 | access to local variable obj2 | null | E.cs:152:23:152:26 | access to parameter obj1 | null | -| E.cs:155:13:155:16 | access to local variable obj2 | non-null | E.cs:152:23:152:26 | access to parameter obj1 | non-null | -| E.cs:155:13:155:16 | access to local variable obj2 | null | E.cs:152:23:152:26 | access to parameter obj1 | null | -| E.cs:159:13:159:16 | access to local variable obj2 | non-null | E.cs:152:23:152:26 | access to parameter obj1 | non-null | -| E.cs:159:13:159:16 | access to local variable obj2 | null | E.cs:152:23:152:26 | access to parameter obj1 | null | -| E.cs:164:17:164:25 | ... == ... | false | E.cs:164:17:164:17 | access to parameter a | non-null | -| E.cs:164:17:164:25 | ... == ... | true | E.cs:164:17:164:17 | access to parameter a | null | -| E.cs:175:19:175:29 | ... == ... | false | E.cs:175:19:175:21 | access to parameter obj | non-null | -| E.cs:175:19:175:29 | ... == ... | true | E.cs:175:19:175:21 | access to parameter obj | null | -| E.cs:175:19:175:42 | ... ? ... : ... | true | E.cs:175:19:175:29 | ... == ... | false | -| E.cs:175:19:175:42 | ... ? ... : ... | true | E.cs:175:41:175:42 | access to parameter b1 | true | -| E.cs:176:13:176:14 | (...) ... | non-null | E.cs:176:13:176:14 | access to local variable b2 | non-null | -| E.cs:176:13:176:14 | (...) ... | null | E.cs:176:13:176:14 | access to local variable b2 | null | -| E.cs:176:13:176:14 | access to local variable b2 | false | E.cs:175:19:175:42 | ... ? ... : ... | false | -| E.cs:176:13:176:14 | access to local variable b2 | true | E.cs:175:19:175:42 | ... ? ... : ... | true | -| E.cs:176:13:176:22 | ... == ... | false | E.cs:176:13:176:14 | (...) ... | non-null | -| E.cs:176:13:176:22 | ... == ... | true | E.cs:176:13:176:14 | (...) ... | null | -| E.cs:176:13:176:22 | ... == ... | true | E.cs:176:19:176:22 | null | non-null | -| E.cs:180:13:180:23 | ... == ... | false | E.cs:180:13:180:15 | access to parameter obj | non-null | -| E.cs:180:13:180:23 | ... == ... | true | E.cs:180:13:180:15 | access to parameter obj | null | -| E.cs:184:13:184:14 | (...) ... | non-null | E.cs:184:13:184:14 | access to parameter b1 | non-null | -| E.cs:184:13:184:14 | (...) ... | null | E.cs:184:13:184:14 | access to parameter b1 | null | -| E.cs:184:13:184:22 | ... == ... | false | E.cs:184:13:184:14 | (...) ... | non-null | -| E.cs:184:13:184:22 | ... == ... | true | E.cs:184:13:184:14 | (...) ... | null | -| E.cs:184:13:184:22 | ... == ... | true | E.cs:184:19:184:22 | null | non-null | -| E.cs:193:17:193:29 | call to method ToString | non-null | E.cs:193:17:193:17 | access to parameter o | non-null | -| E.cs:198:17:198:29 | ... ? ... : ... | non-null | E.cs:198:17:198:17 | access to parameter b | false | -| E.cs:198:17:198:29 | ... ? ... : ... | non-null | E.cs:198:28:198:29 | "" | non-null | -| E.cs:198:17:198:29 | ... ? ... : ... | null | E.cs:198:17:198:17 | access to parameter b | true | -| E.cs:198:17:198:29 | ... ? ... : ... | null | E.cs:198:21:198:24 | null | null | -| E.cs:199:9:199:9 | access to local variable o | empty | E.cs:198:17:198:29 | ... ? ... : ... | empty | -| E.cs:199:9:199:9 | access to local variable o | non-empty | E.cs:198:17:198:29 | ... ? ... : ... | non-empty | -| E.cs:199:9:199:9 | access to local variable o | non-null | E.cs:198:17:198:29 | ... ? ... : ... | non-null | -| E.cs:199:9:199:9 | access to local variable o | null | E.cs:198:17:198:29 | ... ? ... : ... | null | -| E.cs:201:13:201:13 | access to local variable o | non-null | E.cs:198:17:198:29 | ... ? ... : ... | non-null | -| E.cs:201:13:201:13 | access to local variable o | null | E.cs:198:17:198:29 | ... ? ... : ... | null | -| E.cs:203:13:203:13 | access to local variable o | non-null | E.cs:198:17:198:29 | ... ? ... : ... | non-null | -| E.cs:203:13:203:13 | access to local variable o | null | E.cs:198:17:198:29 | ... ? ... : ... | null | -| E.cs:208:13:208:23 | ... is ... | false | E.cs:208:13:208:13 | access to parameter s | null | -| E.cs:208:13:208:23 | ... is ... | true | E.cs:208:13:208:13 | access to parameter s | non-null | -| E.cs:245:13:245:22 | access to property HasValue | false | E.cs:245:13:245:13 | access to parameter i | null | -| E.cs:245:13:245:22 | access to property HasValue | true | E.cs:245:13:245:13 | access to parameter i | non-null | -| E.cs:252:13:252:21 | ... != ... | false | E.cs:252:13:252:13 | access to parameter i | null | -| E.cs:252:13:252:21 | ... != ... | true | E.cs:252:13:252:13 | access to parameter i | non-null | -| E.cs:259:13:259:21 | ... == ... | false | E.cs:259:13:259:13 | access to parameter i | non-null | -| E.cs:259:13:259:21 | ... == ... | true | E.cs:259:13:259:13 | access to parameter i | null | -| E.cs:270:13:270:13 | access to local variable o | non-null | E.cs:269:17:269:22 | call to method Make | non-null | -| E.cs:270:13:270:13 | access to local variable o | null | E.cs:269:17:269:22 | call to method Make | null | -| E.cs:274:17:274:25 | ... != ... | false | E.cs:274:17:274:17 | access to local variable o | null | -| E.cs:274:17:274:25 | ... != ... | true | E.cs:274:17:274:17 | access to local variable o | non-null | -| E.cs:284:9:284:9 | access to local variable o | empty | E.cs:283:17:283:22 | call to method Make | empty | -| E.cs:284:9:284:9 | access to local variable o | non-empty | E.cs:283:17:283:22 | call to method Make | non-empty | -| E.cs:284:9:284:9 | access to local variable o | non-null | E.cs:283:17:283:22 | call to method Make | non-null | -| E.cs:284:9:284:9 | access to local variable o | null | E.cs:283:17:283:22 | call to method Make | null | -| E.cs:285:9:285:9 | access to local variable o | non-null | E.cs:283:17:283:22 | call to method Make | non-null | -| E.cs:285:9:285:9 | access to local variable o | null | E.cs:283:17:283:22 | call to method Make | null | -| E.cs:292:20:292:32 | ... ? ... : ... | non-null | E.cs:292:20:292:20 | access to parameter b | false | -| E.cs:292:20:292:32 | ... ? ... : ... | non-null | E.cs:292:31:292:32 | "" | non-null | -| E.cs:292:20:292:32 | ... ? ... : ... | null | E.cs:292:20:292:20 | access to parameter b | true | -| E.cs:292:20:292:32 | ... ? ... : ... | null | E.cs:292:24:292:27 | null | null | -| E.cs:293:13:293:13 | access to local variable s | empty | E.cs:292:20:292:32 | ... ? ... : ... | empty | -| E.cs:293:13:293:13 | access to local variable s | non-empty | E.cs:292:20:292:32 | ... ? ... : ... | non-empty | -| E.cs:293:13:293:13 | access to local variable s | non-null | E.cs:292:20:292:20 | access to parameter b | false | -| E.cs:293:13:293:13 | access to local variable s | non-null | E.cs:292:20:292:32 | ... ? ... : ... | non-null | -| E.cs:293:13:293:13 | access to local variable s | null | E.cs:292:20:292:20 | access to parameter b | true | -| E.cs:293:13:293:13 | access to local variable s | null | E.cs:292:20:292:32 | ... ? ... : ... | null | -| E.cs:293:13:293:19 | call to method M2 | non-null | E.cs:293:13:293:13 | access to local variable s | non-null | -| E.cs:293:13:293:19 | call to method M2 | null | E.cs:293:13:293:13 | access to local variable s | null | -| E.cs:293:13:293:24 | ... == ... | true | E.cs:293:13:293:19 | call to method M2 | non-null | -| E.cs:295:13:295:13 | access to local variable s | non-null | E.cs:292:20:292:32 | ... ? ... : ... | non-null | -| E.cs:295:13:295:13 | access to local variable s | null | E.cs:292:20:292:32 | ... ? ... : ... | null | -| E.cs:302:9:302:9 | access to local variable s | empty | E.cs:301:17:301:27 | ... as ... | empty | -| E.cs:302:9:302:9 | access to local variable s | non-empty | E.cs:301:17:301:27 | ... as ... | non-empty | -| E.cs:302:9:302:9 | access to local variable s | non-null | E.cs:301:17:301:27 | ... as ... | non-null | -| E.cs:302:9:302:9 | access to local variable s | null | E.cs:301:17:301:27 | ... as ... | null | -| E.cs:309:13:309:22 | access to property HasValue | false | E.cs:309:13:309:13 | access to field l | null | -| E.cs:309:13:309:22 | access to property HasValue | true | E.cs:309:13:309:13 | access to field l | non-null | -| E.cs:317:22:317:38 | ... ? ... : ... | non-null | E.cs:317:22:317:26 | access to field Field | false | -| E.cs:317:22:317:38 | ... ? ... : ... | non-null | E.cs:317:37:317:38 | "" | non-null | -| E.cs:317:22:317:38 | ... ? ... : ... | null | E.cs:317:22:317:26 | access to field Field | true | -| E.cs:317:22:317:38 | ... ? ... : ... | null | E.cs:317:30:317:33 | null | null | -| E.cs:321:13:321:30 | ... is ... | false | E.cs:321:14:321:21 | ... ?? ... | non-null | -| E.cs:321:13:321:30 | ... is ... | true | E.cs:321:14:321:21 | ... ?? ... | null | -| E.cs:321:14:321:21 | ... ?? ... | null | E.cs:321:14:321:15 | access to parameter s1 | null | -| E.cs:321:14:321:21 | ... ?? ... | null | E.cs:321:20:321:21 | access to parameter s2 | null | -| E.cs:330:17:330:28 | (...) ... | non-null | E.cs:330:25:330:28 | null | non-null | -| E.cs:330:17:330:28 | (...) ... | null | E.cs:330:25:330:28 | null | null | -| E.cs:330:17:330:36 | ... ?? ... | null | E.cs:330:17:330:28 | (...) ... | null | -| E.cs:330:17:330:36 | ... ?? ... | null | E.cs:330:33:330:36 | null | null | -| E.cs:331:9:331:9 | access to local variable x | empty | E.cs:330:17:330:36 | ... ?? ... | empty | -| E.cs:331:9:331:9 | access to local variable x | non-empty | E.cs:330:17:330:36 | ... ?? ... | non-empty | -| E.cs:331:9:331:9 | access to local variable x | non-null | E.cs:330:17:330:36 | ... ?? ... | non-null | -| E.cs:331:9:331:9 | access to local variable x | null | E.cs:330:17:330:36 | ... ?? ... | null | -| E.cs:336:17:336:23 | ... ?? ... | null | E.cs:336:17:336:17 | access to parameter s | null | -| E.cs:336:17:336:23 | ... ?? ... | null | E.cs:336:22:336:23 | "" | null | -| E.cs:337:9:337:9 | access to local variable x | empty | E.cs:336:17:336:23 | ... ?? ... | empty | -| E.cs:337:9:337:9 | access to local variable x | non-empty | E.cs:336:17:336:23 | ... ?? ... | non-empty | -| E.cs:337:9:337:9 | access to local variable x | non-null | E.cs:336:17:336:23 | ... ?? ... | non-null | -| E.cs:337:9:337:9 | access to local variable x | null | E.cs:336:17:336:23 | ... ?? ... | null | -| E.cs:342:17:342:32 | ... ?? ... | null | E.cs:342:17:342:17 | access to parameter s | null | -| E.cs:342:17:342:32 | ... ?? ... | null | E.cs:342:22:342:32 | ... as ... | null | -| E.cs:343:9:343:9 | access to local variable x | empty | E.cs:342:17:342:32 | ... ?? ... | empty | -| E.cs:343:9:343:9 | access to local variable x | non-empty | E.cs:342:17:342:32 | ... ?? ... | non-empty | -| E.cs:343:9:343:9 | access to local variable x | non-null | E.cs:342:17:342:32 | ... ?? ... | non-null | -| E.cs:343:9:343:9 | access to local variable x | null | E.cs:342:17:342:32 | ... ?? ... | null | -| E.cs:348:21:348:36 | ... ?? ... | null | E.cs:348:21:348:21 | access to parameter s | null | -| E.cs:348:21:348:36 | ... ?? ... | null | E.cs:348:26:348:36 | ... as ... | null | -| E.cs:349:9:349:9 | access to local variable x | non-null | E.cs:348:21:348:36 | ... ?? ... | non-null | -| E.cs:349:9:349:9 | access to local variable x | null | E.cs:348:21:348:36 | ... ?? ... | null | -| E.cs:354:21:354:36 | ... ?? ... | null | E.cs:354:21:354:21 | access to parameter s | null | -| E.cs:354:21:354:36 | ... ?? ... | null | E.cs:354:26:354:36 | ... as ... | null | -| E.cs:355:13:355:13 | access to local variable x | non-null | E.cs:354:21:354:36 | ... ?? ... | non-null | -| E.cs:355:13:355:13 | access to local variable x | null | E.cs:354:21:354:36 | ... ?? ... | null | -| E.cs:355:13:355:21 | dynamic call to operator != | false | E.cs:355:13:355:13 | access to local variable x | null | -| E.cs:355:13:355:21 | dynamic call to operator != | true | E.cs:355:13:355:13 | access to local variable x | non-null | -| E.cs:356:13:356:13 | access to local variable x | non-null | E.cs:354:21:354:36 | ... ?? ... | non-null | -| E.cs:356:13:356:13 | access to local variable x | null | E.cs:354:21:354:36 | ... ?? ... | null | -| E.cs:361:17:361:32 | ... ?? ... | null | E.cs:361:17:361:17 | access to parameter s | null | -| E.cs:361:17:361:32 | ... ?? ... | null | E.cs:361:22:361:32 | ... as ... | null | -| E.cs:362:13:362:13 | access to local variable x | empty | E.cs:361:17:361:32 | ... ?? ... | empty | -| E.cs:362:13:362:13 | access to local variable x | non-empty | E.cs:361:17:361:32 | ... ?? ... | non-empty | -| E.cs:362:13:362:13 | access to local variable x | non-null | E.cs:361:17:361:32 | ... ?? ... | non-null | -| E.cs:362:13:362:13 | access to local variable x | null | E.cs:361:17:361:32 | ... ?? ... | null | -| E.cs:362:13:362:29 | ... != ... | false | E.cs:362:13:362:13 | access to local variable x | null | -| E.cs:362:13:362:29 | ... != ... | true | E.cs:362:13:362:13 | access to local variable x | non-null | -| E.cs:362:18:362:29 | (...) ... | non-null | E.cs:362:26:362:29 | null | non-null | -| E.cs:362:18:362:29 | (...) ... | null | E.cs:362:26:362:29 | null | null | -| E.cs:363:13:363:13 | access to local variable x | non-null | E.cs:361:17:361:32 | ... ?? ... | non-null | -| E.cs:363:13:363:13 | access to local variable x | null | E.cs:361:17:361:32 | ... ?? ... | null | -| E.cs:372:13:372:23 | ... is ... | true | E.cs:372:13:372:13 | access to parameter o | non-null | -| E.cs:375:20:375:20 | access to local variable s | empty | E.cs:374:21:374:31 | ... as ... | empty | -| E.cs:375:20:375:20 | access to local variable s | non-empty | E.cs:374:21:374:31 | ... as ... | non-empty | -| E.cs:375:20:375:20 | access to local variable s | non-null | E.cs:374:21:374:31 | ... as ... | non-null | -| E.cs:375:20:375:20 | access to local variable s | null | E.cs:374:21:374:31 | ... as ... | null | -| E.cs:382:13:382:68 | ... \|\| ... | false | E.cs:382:14:382:37 | ... && ... | false | -| E.cs:382:13:382:68 | ... \|\| ... | false | E.cs:382:44:382:67 | ... && ... | false | -| E.cs:382:14:382:23 | ... == ... | false | E.cs:382:14:382:15 | access to parameter e1 | non-null | -| E.cs:382:14:382:23 | ... == ... | true | E.cs:382:14:382:15 | access to parameter e1 | null | -| E.cs:382:14:382:37 | ... && ... | true | E.cs:382:14:382:23 | ... == ... | true | -| E.cs:382:14:382:37 | ... && ... | true | E.cs:382:28:382:37 | ... != ... | true | -| E.cs:382:28:382:37 | ... != ... | false | E.cs:382:28:382:29 | access to parameter e2 | null | -| E.cs:382:28:382:37 | ... != ... | true | E.cs:382:28:382:29 | access to parameter e2 | non-null | -| E.cs:382:44:382:53 | ... != ... | false | E.cs:382:44:382:45 | access to parameter e1 | null | -| E.cs:382:44:382:53 | ... != ... | true | E.cs:382:44:382:45 | access to parameter e1 | non-null | -| E.cs:382:44:382:67 | ... && ... | true | E.cs:382:44:382:53 | ... != ... | true | -| E.cs:382:44:382:67 | ... && ... | true | E.cs:382:58:382:67 | ... == ... | true | -| E.cs:382:58:382:67 | ... == ... | false | E.cs:382:58:382:59 | access to parameter e2 | non-null | -| E.cs:382:58:382:67 | ... == ... | true | E.cs:382:58:382:59 | access to parameter e2 | null | -| E.cs:384:13:384:22 | ... == ... | false | E.cs:384:13:384:14 | access to parameter e1 | non-null | -| E.cs:384:13:384:22 | ... == ... | true | E.cs:384:13:384:14 | access to parameter e1 | null | -| E.cs:384:13:384:36 | ... && ... | true | E.cs:384:13:384:22 | ... == ... | true | -| E.cs:384:13:384:36 | ... && ... | true | E.cs:384:27:384:36 | ... == ... | true | -| E.cs:384:27:384:36 | ... == ... | false | E.cs:384:27:384:28 | access to parameter e2 | non-null | -| E.cs:384:27:384:36 | ... == ... | true | E.cs:384:27:384:28 | access to parameter e2 | null | -| E.cs:404:9:404:9 | access to local variable i | non-null | E.cs:403:18:403:21 | null | non-null | -| E.cs:404:9:404:9 | access to local variable i | null | E.cs:403:18:403:21 | null | null | -| E.cs:404:9:404:18 | ... = ... | non-null | E.cs:404:9:404:9 | access to local variable i | non-null | -| E.cs:404:9:404:18 | ... = ... | non-null | E.cs:404:9:404:18 | ... ?? ... | non-null | -| E.cs:404:9:404:18 | ... = ... | null | E.cs:404:9:404:9 | access to local variable i | null | -| E.cs:404:9:404:18 | ... = ... | null | E.cs:404:9:404:18 | ... ?? ... | null | -| E.cs:404:9:404:18 | ... ?? ... | null | E.cs:404:9:404:9 | access to local variable i | null | -| E.cs:404:9:404:18 | ... ?? ... | null | E.cs:404:15:404:18 | null | null | -| E.cs:405:16:405:16 | access to local variable i | non-null | E.cs:404:9:404:18 | ... ?? ... | non-null | -| E.cs:405:16:405:16 | access to local variable i | null | E.cs:404:9:404:18 | ... ?? ... | null | -| E.cs:411:9:411:9 | access to local variable i | non-null | E.cs:410:18:410:18 | (...) ... | non-null | -| E.cs:411:9:411:9 | access to local variable i | null | E.cs:410:18:410:18 | (...) ... | null | -| E.cs:411:9:411:18 | ... = ... | non-null | E.cs:411:9:411:9 | access to local variable i | non-null | -| E.cs:411:9:411:18 | ... = ... | non-null | E.cs:411:9:411:18 | ... ?? ... | non-null | -| E.cs:411:9:411:18 | ... = ... | null | E.cs:411:9:411:9 | access to local variable i | null | -| E.cs:411:9:411:18 | ... = ... | null | E.cs:411:9:411:18 | ... ?? ... | null | -| E.cs:411:9:411:18 | ... ?? ... | null | E.cs:411:9:411:9 | access to local variable i | null | -| E.cs:411:9:411:18 | ... ?? ... | null | E.cs:411:15:411:18 | null | null | -| E.cs:412:16:412:16 | access to local variable i | non-null | E.cs:411:9:411:18 | ... ?? ... | non-null | -| E.cs:412:16:412:16 | access to local variable i | null | E.cs:411:9:411:18 | ... ?? ... | null | -| E.cs:417:16:417:41 | call to method Any | true | E.cs:417:16:417:18 | access to parameter is | non-empty | -| E.cs:422:13:422:22 | access to property HasValue | false | E.cs:422:13:422:13 | access to parameter i | null | -| E.cs:422:13:422:22 | access to property HasValue | true | E.cs:422:13:422:13 | access to parameter i | non-null | -| E.cs:423:20:423:45 | call to method Any | true | E.cs:423:20:423:22 | access to parameter is | non-empty | -| E.cs:429:13:429:22 | access to property HasValue | false | E.cs:429:13:429:13 | access to parameter i | null | -| E.cs:429:13:429:22 | access to property HasValue | true | E.cs:429:13:429:13 | access to parameter i | non-null | -| E.cs:432:16:432:24 | call to method Any | false | E.cs:432:16:432:18 | access to parameter is | empty | -| E.cs:432:16:432:24 | call to method Any | true | E.cs:432:16:432:18 | access to parameter is | non-empty | -| E.cs:437:13:437:31 | ... && ... | true | E.cs:437:13:437:18 | ... == ... | true | -| E.cs:437:13:437:31 | ... && ... | true | E.cs:437:23:437:31 | ... is ... | true | -| E.cs:437:23:437:31 | ... is ... | false | E.cs:437:23:437:23 | access to parameter s | non-null | -| E.cs:437:23:437:31 | ... is ... | true | E.cs:437:23:437:23 | access to parameter s | null | -| E.cs:442:13:442:39 | ... && ... | true | E.cs:442:13:442:18 | ... == ... | true | -| E.cs:442:13:442:39 | ... && ... | true | E.cs:442:23:442:39 | ... is ... | true | -| E.cs:442:23:442:39 | ... is ... | false | E.cs:442:23:442:23 | access to parameter s | non-null | -| E.cs:447:13:447:35 | ... && ... | true | E.cs:447:13:447:18 | ... == ... | true | -| E.cs:447:13:447:35 | ... && ... | true | E.cs:447:23:447:35 | ... is ... | true | -| E.cs:447:23:447:35 | ... is ... | true | E.cs:447:23:447:23 | access to parameter s | non-null | -| E.cs:452:13:452:33 | ... && ... | true | E.cs:452:13:452:18 | ... == ... | true | -| E.cs:452:13:452:33 | ... && ... | true | E.cs:452:23:452:33 | ... is ... | true | -| E.cs:452:23:452:33 | ... is ... | true | E.cs:452:23:452:23 | access to parameter s | non-null | -| E.cs:457:13:457:27 | ... is ... | false | E.cs:457:13:457:13 | access to parameter s | non-null | -| F.cs:8:9:8:9 | access to local variable o | non-null | F.cs:7:20:7:23 | null | non-null | -| F.cs:8:9:8:9 | access to local variable o | null | F.cs:7:20:7:23 | null | null | -| F.cs:14:9:14:9 | access to local variable o | non-null | F.cs:13:21:13:24 | null | non-null | -| F.cs:14:9:14:9 | access to local variable o | null | F.cs:13:21:13:24 | null | null | -| Forwarding.cs:9:13:9:30 | !... | false | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | true | -| Forwarding.cs:9:13:9:30 | !... | true | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | false | -| Forwarding.cs:9:14:9:14 | access to local variable s | empty | Forwarding.cs:7:20:7:23 | null | empty | -| Forwarding.cs:9:14:9:14 | access to local variable s | non-empty | Forwarding.cs:7:20:7:23 | null | non-empty | -| Forwarding.cs:9:14:9:14 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:9:14:9:14 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | false | Forwarding.cs:9:14:9:14 | access to local variable s | non-null | -| Forwarding.cs:11:31:11:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:11:31:11:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:14:13:14:13 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:14:13:14:13 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:14:13:14:32 | call to method IsNotNullOrEmpty | true | Forwarding.cs:14:13:14:13 | access to local variable s | non-null | -| Forwarding.cs:16:31:16:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:16:31:16:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:19:13:19:23 | !... | false | Forwarding.cs:19:14:19:23 | call to method IsNull | true | -| Forwarding.cs:19:13:19:23 | !... | true | Forwarding.cs:19:14:19:23 | call to method IsNull | false | -| Forwarding.cs:19:14:19:14 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:19:14:19:14 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:19:14:19:23 | call to method IsNull | false | Forwarding.cs:19:14:19:14 | access to local variable s | non-null | -| Forwarding.cs:19:14:19:23 | call to method IsNull | true | Forwarding.cs:19:14:19:14 | access to local variable s | null | -| Forwarding.cs:21:31:21:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:21:31:21:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:24:13:24:13 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:24:13:24:13 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:24:13:24:25 | call to method IsNotNull | false | Forwarding.cs:24:13:24:13 | access to local variable s | null | -| Forwarding.cs:24:13:24:25 | call to method IsNotNull | true | Forwarding.cs:24:13:24:13 | access to local variable s | non-null | -| Forwarding.cs:26:31:26:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:26:31:26:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:29:13:29:24 | call to method IsNotNull | true | Forwarding.cs:29:23:29:23 | access to local variable s | non-null | -| Forwarding.cs:29:23:29:23 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:29:23:29:23 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:31:31:31:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:31:31:31:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:34:13:34:29 | call to method IsNotNullWrong | false | Forwarding.cs:34:28:34:28 | access to local variable s | non-null | -| Forwarding.cs:34:28:34:28 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:34:28:34:28 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:36:31:36:31 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:36:31:36:31 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:39:25:39:25 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:39:25:39:25 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:40:27:40:27 | access to local variable s | non-null | Forwarding.cs:7:20:7:23 | null | non-null | -| Forwarding.cs:40:27:40:27 | access to local variable s | null | Forwarding.cs:7:20:7:23 | null | null | -| Forwarding.cs:45:16:45:26 | ... is ... | true | Forwarding.cs:45:16:45:16 | access to parameter o | non-null | -| Forwarding.cs:45:30:45:61 | !... | false | Forwarding.cs:45:31:45:61 | call to method IsNullOrEmpty | true | -| Forwarding.cs:45:30:45:61 | !... | true | Forwarding.cs:45:31:45:61 | call to method IsNullOrEmpty | false | -| Forwarding.cs:45:31:45:61 | call to method IsNullOrEmpty | false | Forwarding.cs:45:52:45:60 | (...) ... | non-null | -| Forwarding.cs:45:52:45:60 | (...) ... | non-null | Forwarding.cs:45:60:45:60 | access to parameter o | non-null | -| Forwarding.cs:45:52:45:60 | (...) ... | null | Forwarding.cs:45:60:45:60 | access to parameter o | null | -| Forwarding.cs:45:65:45:75 | !... | false | Forwarding.cs:45:66:45:75 | call to method IsNull | true | -| Forwarding.cs:45:65:45:75 | !... | true | Forwarding.cs:45:66:45:75 | call to method IsNull | false | -| Forwarding.cs:45:66:45:75 | call to method IsNull | false | Forwarding.cs:45:66:45:66 | access to parameter o | non-null | -| Forwarding.cs:45:66:45:75 | call to method IsNull | true | Forwarding.cs:45:66:45:66 | access to parameter o | null | -| Forwarding.cs:50:13:50:23 | ... is ... | true | Forwarding.cs:50:13:50:13 | access to parameter o | non-null | -| Forwarding.cs:52:20:52:51 | !... | false | Forwarding.cs:52:21:52:51 | call to method IsNullOrEmpty | true | -| Forwarding.cs:52:20:52:51 | !... | true | Forwarding.cs:52:21:52:51 | call to method IsNullOrEmpty | false | -| Forwarding.cs:52:21:52:51 | call to method IsNullOrEmpty | false | Forwarding.cs:52:42:52:50 | (...) ... | non-null | -| Forwarding.cs:52:42:52:50 | (...) ... | non-null | Forwarding.cs:52:50:52:50 | access to parameter o | non-null | -| Forwarding.cs:52:42:52:50 | (...) ... | null | Forwarding.cs:52:50:52:50 | access to parameter o | null | -| Forwarding.cs:59:13:59:21 | ... == ... | false | Forwarding.cs:59:13:59:13 | access to parameter o | non-null | -| Forwarding.cs:59:13:59:21 | ... == ... | true | Forwarding.cs:59:13:59:13 | access to parameter o | null | -| Forwarding.cs:68:16:68:38 | call to method IsNullOrEmpty | false | Forwarding.cs:68:37:68:37 | access to parameter s | non-null | -| Forwarding.cs:73:16:73:39 | !... | false | Forwarding.cs:73:17:73:39 | call to method IsNullOrEmpty | true | -| Forwarding.cs:73:16:73:39 | !... | true | Forwarding.cs:73:17:73:39 | call to method IsNullOrEmpty | false | -| Forwarding.cs:73:17:73:39 | call to method IsNullOrEmpty | false | Forwarding.cs:73:38:73:38 | access to parameter s | non-null | -| Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | false | Forwarding.cs:78:32:78:32 | access to parameter o | non-null | -| Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | true | Forwarding.cs:78:32:78:32 | access to parameter o | null | -| Forwarding.cs:83:16:83:24 | ... != ... | false | Forwarding.cs:83:16:83:16 | access to parameter o | null | -| Forwarding.cs:83:16:83:24 | ... != ... | true | Forwarding.cs:83:16:83:16 | access to parameter o | non-null | -| GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | GuardedString.cs:7:31:7:32 | "" | non-null | -| GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | GuardedString.cs:7:24:7:27 | null | null | -| GuardedString.cs:9:13:9:36 | !... | false | GuardedString.cs:9:14:9:36 | call to method IsNullOrEmpty | true | -| GuardedString.cs:9:13:9:36 | !... | true | GuardedString.cs:9:14:9:36 | call to method IsNullOrEmpty | false | -| GuardedString.cs:9:14:9:36 | call to method IsNullOrEmpty | false | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:9:14:9:36 | call to method IsNullOrEmpty | false | GuardedString.cs:9:35:9:35 | access to local variable s | non-null | -| GuardedString.cs:9:35:9:35 | access to local variable s | empty | GuardedString.cs:7:20:7:32 | ... ? ... : ... | empty | -| GuardedString.cs:9:35:9:35 | access to local variable s | non-empty | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-empty | -| GuardedString.cs:9:35:9:35 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:9:35:9:35 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:11:31:11:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:11:31:11:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:14:13:14:41 | !... | false | GuardedString.cs:14:14:14:41 | call to method IsNullOrWhiteSpace | true | -| GuardedString.cs:14:13:14:41 | !... | true | GuardedString.cs:14:14:14:41 | call to method IsNullOrWhiteSpace | false | -| GuardedString.cs:14:14:14:41 | call to method IsNullOrWhiteSpace | false | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:14:14:14:41 | call to method IsNullOrWhiteSpace | false | GuardedString.cs:14:40:14:40 | access to local variable s | non-null | -| GuardedString.cs:14:40:14:40 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:14:40:14:40 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:16:31:16:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:16:31:16:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:19:13:19:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:19:13:19:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:19:13:19:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:19:13:19:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:19:13:19:21 | access to property Length | non-null | GuardedString.cs:19:13:19:13 | access to local variable s | non-null | -| GuardedString.cs:19:13:19:21 | access to property Length | null | GuardedString.cs:19:13:19:13 | access to local variable s | null | -| GuardedString.cs:19:13:19:26 | ... == ... | true | GuardedString.cs:19:13:19:21 | access to property Length | non-null | -| GuardedString.cs:20:31:20:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:20:31:20:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:22:13:22:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:22:13:22:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:22:13:22:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:22:13:22:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:22:13:22:21 | access to property Length | non-null | GuardedString.cs:22:13:22:13 | access to local variable s | non-null | -| GuardedString.cs:22:13:22:21 | access to property Length | null | GuardedString.cs:22:13:22:13 | access to local variable s | null | -| GuardedString.cs:22:13:22:25 | ... > ... | true | GuardedString.cs:22:13:22:21 | access to property Length | non-null | -| GuardedString.cs:23:31:23:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:23:31:23:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:25:13:25:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:25:13:25:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:25:13:25:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:25:13:25:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:25:13:25:21 | access to property Length | non-null | GuardedString.cs:25:13:25:13 | access to local variable s | non-null | -| GuardedString.cs:25:13:25:21 | access to property Length | null | GuardedString.cs:25:13:25:13 | access to local variable s | null | -| GuardedString.cs:25:13:25:26 | ... >= ... | true | GuardedString.cs:25:13:25:21 | access to property Length | non-null | -| GuardedString.cs:26:31:26:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:26:31:26:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:28:13:28:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:28:13:28:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:28:13:28:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:28:13:28:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:28:13:28:21 | access to property Length | non-null | GuardedString.cs:28:13:28:13 | access to local variable s | non-null | -| GuardedString.cs:28:13:28:21 | access to property Length | null | GuardedString.cs:28:13:28:13 | access to local variable s | null | -| GuardedString.cs:28:13:28:26 | ... < ... | true | GuardedString.cs:28:13:28:21 | access to property Length | non-null | -| GuardedString.cs:29:31:29:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:29:31:29:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:31:13:31:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:31:13:31:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:31:13:31:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:31:13:31:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:31:13:31:21 | access to property Length | non-null | GuardedString.cs:31:13:31:13 | access to local variable s | non-null | -| GuardedString.cs:31:13:31:21 | access to property Length | null | GuardedString.cs:31:13:31:13 | access to local variable s | null | -| GuardedString.cs:31:13:31:27 | ... <= ... | true | GuardedString.cs:31:13:31:21 | access to property Length | non-null | -| GuardedString.cs:32:31:32:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:32:31:32:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:34:13:34:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:20 | access to parameter b | false | -| GuardedString.cs:34:13:34:13 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:34:13:34:13 | access to local variable s | null | GuardedString.cs:7:20:7:20 | access to parameter b | true | -| GuardedString.cs:34:13:34:13 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:34:13:34:21 | access to property Length | non-null | GuardedString.cs:34:13:34:13 | access to local variable s | non-null | -| GuardedString.cs:34:13:34:21 | access to property Length | null | GuardedString.cs:34:13:34:13 | access to local variable s | null | -| GuardedString.cs:34:13:34:26 | ... != ... | false | GuardedString.cs:34:13:34:21 | access to property Length | non-null | -| GuardedString.cs:35:31:35:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:35:31:35:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| GuardedString.cs:37:31:37:31 | access to local variable s | non-null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | non-null | -| GuardedString.cs:37:31:37:31 | access to local variable s | null | GuardedString.cs:7:20:7:32 | ... ? ... : ... | null | -| ImplicitToString.cs:8:23:8:23 | access to local variable o | non-null | ImplicitToString.cs:7:20:7:23 | null | non-null | -| ImplicitToString.cs:8:23:8:23 | access to local variable o | null | ImplicitToString.cs:7:20:7:23 | null | null | -| NullAlwaysBad.cs:9:17:9:25 | ... != ... | false | NullAlwaysBad.cs:9:17:9:17 | access to parameter s | null | -| NullAlwaysBad.cs:9:17:9:25 | ... != ... | true | NullAlwaysBad.cs:9:17:9:17 | access to parameter s | non-null | -| NullAlwaysBad.cs:9:17:9:41 | ... \|\| ... | false | NullAlwaysBad.cs:9:17:9:25 | ... != ... | false | -| NullAlwaysBad.cs:9:17:9:41 | ... \|\| ... | false | NullAlwaysBad.cs:9:30:9:41 | ... > ... | false | -| NullAlwaysGood.cs:9:17:9:25 | ... != ... | false | NullAlwaysGood.cs:9:17:9:17 | access to parameter s | null | -| NullAlwaysGood.cs:9:17:9:25 | ... != ... | true | NullAlwaysGood.cs:9:17:9:17 | access to parameter s | non-null | -| NullAlwaysGood.cs:9:17:9:41 | ... && ... | true | NullAlwaysGood.cs:9:17:9:25 | ... != ... | true | -| NullAlwaysGood.cs:9:17:9:41 | ... && ... | true | NullAlwaysGood.cs:9:30:9:41 | ... > ... | true | -| NullMaybeGood.cs:7:13:7:21 | ... != ... | false | NullMaybeGood.cs:7:13:7:13 | access to parameter o | null | -| NullMaybeGood.cs:7:13:7:21 | ... != ... | true | NullMaybeGood.cs:7:13:7:13 | access to parameter o | non-null | -| StringConcatenation.cs:8:9:8:9 | access to local variable s | empty | StringConcatenation.cs:7:20:7:23 | null | empty | -| StringConcatenation.cs:8:9:8:9 | access to local variable s | non-empty | StringConcatenation.cs:7:20:7:23 | null | non-empty | -| StringConcatenation.cs:8:9:8:9 | access to local variable s | non-null | StringConcatenation.cs:7:20:7:23 | null | non-null | -| StringConcatenation.cs:8:9:8:9 | access to local variable s | null | StringConcatenation.cs:7:20:7:23 | null | null | -| StringConcatenation.cs:8:9:8:18 | ... + ... | non-null | StringConcatenation.cs:8:9:8:9 | access to local variable s | non-null | -| StringConcatenation.cs:8:9:8:18 | ... + ... | non-null | StringConcatenation.cs:8:14:8:18 | "abc" | non-null | -| StringConcatenation.cs:8:9:8:18 | ... + ... | null | StringConcatenation.cs:8:9:8:9 | access to local variable s | null | -| StringConcatenation.cs:8:9:8:18 | ... = ... | empty | StringConcatenation.cs:8:9:8:9 | access to local variable s | empty | -| StringConcatenation.cs:8:9:8:18 | ... = ... | empty | StringConcatenation.cs:8:9:8:18 | ... + ... | empty | -| StringConcatenation.cs:8:9:8:18 | ... = ... | non-empty | StringConcatenation.cs:8:9:8:9 | access to local variable s | non-empty | -| StringConcatenation.cs:8:9:8:18 | ... = ... | non-empty | StringConcatenation.cs:8:9:8:18 | ... + ... | non-empty | -| StringConcatenation.cs:8:9:8:18 | ... = ... | non-null | StringConcatenation.cs:8:9:8:9 | access to local variable s | non-null | -| StringConcatenation.cs:8:9:8:18 | ... = ... | non-null | StringConcatenation.cs:8:9:8:18 | ... + ... | non-null | -| StringConcatenation.cs:8:9:8:18 | ... = ... | null | StringConcatenation.cs:8:9:8:9 | access to local variable s | null | -| StringConcatenation.cs:8:9:8:18 | ... = ... | null | StringConcatenation.cs:8:9:8:18 | ... + ... | null | -| StringConcatenation.cs:9:13:9:13 | access to local variable s | empty | StringConcatenation.cs:8:9:8:18 | ... + ... | empty | -| StringConcatenation.cs:9:13:9:13 | access to local variable s | non-empty | StringConcatenation.cs:8:9:8:18 | ... + ... | non-empty | -| StringConcatenation.cs:9:13:9:13 | access to local variable s | non-null | StringConcatenation.cs:8:9:8:18 | ... + ... | non-null | -| StringConcatenation.cs:9:13:9:13 | access to local variable s | null | StringConcatenation.cs:8:9:8:18 | ... + ... | null | -| StringConcatenation.cs:15:16:15:22 | ... != ... | false | StringConcatenation.cs:15:16:15:16 | access to local variable s | non-null | -| StringConcatenation.cs:22:16:22:22 | ... != ... | false | StringConcatenation.cs:22:16:22:16 | access to local variable s | non-null | -| StringConcatenation.cs:23:13:23:22 | ... + ... | non-null | StringConcatenation.cs:23:13:23:13 | access to local variable s | non-null | -| StringConcatenation.cs:23:13:23:22 | ... + ... | non-null | StringConcatenation.cs:23:18:23:22 | "abc" | non-null | -| StringConcatenation.cs:23:13:23:22 | ... + ... | null | StringConcatenation.cs:23:13:23:13 | access to local variable s | null | -| StringConcatenation.cs:23:13:23:22 | ... = ... | empty | StringConcatenation.cs:23:13:23:13 | access to local variable s | empty | -| StringConcatenation.cs:23:13:23:22 | ... = ... | empty | StringConcatenation.cs:23:13:23:22 | ... + ... | empty | -| StringConcatenation.cs:23:13:23:22 | ... = ... | non-empty | StringConcatenation.cs:23:13:23:13 | access to local variable s | non-empty | -| StringConcatenation.cs:23:13:23:22 | ... = ... | non-empty | StringConcatenation.cs:23:13:23:22 | ... + ... | non-empty | -| StringConcatenation.cs:23:13:23:22 | ... = ... | non-null | StringConcatenation.cs:23:13:23:13 | access to local variable s | non-null | -| StringConcatenation.cs:23:13:23:22 | ... = ... | non-null | StringConcatenation.cs:23:13:23:22 | ... + ... | non-null | -| StringConcatenation.cs:23:13:23:22 | ... = ... | null | StringConcatenation.cs:23:13:23:13 | access to local variable s | null | -| StringConcatenation.cs:23:13:23:22 | ... = ... | null | StringConcatenation.cs:23:13:23:22 | ... + ... | null | -| StringConcatenation.cs:30:9:30:9 | access to local variable s | empty | StringConcatenation.cs:29:20:29:24 | "abc" | empty | -| StringConcatenation.cs:30:9:30:9 | access to local variable s | non-empty | StringConcatenation.cs:29:20:29:24 | "abc" | non-empty | -| StringConcatenation.cs:30:9:30:9 | access to local variable s | non-null | StringConcatenation.cs:29:20:29:24 | "abc" | non-null | -| StringConcatenation.cs:30:9:30:9 | access to local variable s | null | StringConcatenation.cs:29:20:29:24 | "abc" | null | -| StringConcatenation.cs:30:9:30:17 | ... + ... | non-null | StringConcatenation.cs:30:9:30:9 | access to local variable s | non-null | -| StringConcatenation.cs:30:9:30:17 | ... + ... | non-null | StringConcatenation.cs:30:14:30:17 | null | non-null | -| StringConcatenation.cs:30:9:30:17 | ... + ... | null | StringConcatenation.cs:30:14:30:17 | null | null | -| StringConcatenation.cs:30:9:30:17 | ... = ... | empty | StringConcatenation.cs:30:9:30:9 | access to local variable s | empty | -| StringConcatenation.cs:30:9:30:17 | ... = ... | empty | StringConcatenation.cs:30:9:30:17 | ... + ... | empty | -| StringConcatenation.cs:30:9:30:17 | ... = ... | non-empty | StringConcatenation.cs:30:9:30:9 | access to local variable s | non-empty | -| StringConcatenation.cs:30:9:30:17 | ... = ... | non-empty | StringConcatenation.cs:30:9:30:17 | ... + ... | non-empty | -| StringConcatenation.cs:30:9:30:17 | ... = ... | non-null | StringConcatenation.cs:30:9:30:9 | access to local variable s | non-null | -| StringConcatenation.cs:30:9:30:17 | ... = ... | non-null | StringConcatenation.cs:30:9:30:17 | ... + ... | non-null | -| StringConcatenation.cs:30:9:30:17 | ... = ... | null | StringConcatenation.cs:30:9:30:9 | access to local variable s | null | -| StringConcatenation.cs:30:9:30:17 | ... = ... | null | StringConcatenation.cs:30:9:30:17 | ... + ... | null | -| StringConcatenation.cs:31:13:31:13 | access to local variable s | empty | StringConcatenation.cs:30:9:30:17 | ... + ... | empty | -| StringConcatenation.cs:31:13:31:13 | access to local variable s | non-empty | StringConcatenation.cs:30:9:30:17 | ... + ... | non-empty | -| StringConcatenation.cs:31:13:31:13 | access to local variable s | non-null | StringConcatenation.cs:30:9:30:17 | ... + ... | non-null | -| StringConcatenation.cs:31:13:31:13 | access to local variable s | null | StringConcatenation.cs:30:9:30:17 | ... + ... | null | diff --git a/csharp/ql/test/query-tests/Nullness/Implications.ql b/csharp/ql/test/query-tests/Nullness/Implications.ql deleted file mode 100644 index 8f265616646..00000000000 --- a/csharp/ql/test/query-tests/Nullness/Implications.ql +++ /dev/null @@ -1,8 +0,0 @@ -import csharp -import semmle.code.csharp.controlflow.Guards - -query predicate impliesStep(Expr e1, AbstractValue v1, Expr e2, AbstractValue v2) { - e1.fromSource() and - e2.fromSource() and - Internal::impliesStep(e1, v1, e2, v2) -} From 1aa0e7c2daee8a4c4261ca97cf1d78f8be8b8a40 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 15 Oct 2025 14:43:30 +0200 Subject: [PATCH 430/965] C#: Make private. --- csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 3e33807991a..5492b2d5810 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -2278,8 +2278,7 @@ module Internal { * * This predicate relies on the control flow graph. */ - cached - predicate impliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { + private predicate impliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { preImpliesStep(g1, v1, g2, v2) or forex(ControlFlow::Node cfn1 | cfn1 = g1.getAControlFlowNode() | From 46fc006c5fe0fc89677938875f81ea2bfbdc8fd2 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 17 Oct 2025 11:50:45 +0200 Subject: [PATCH 431/965] C#: Update NullCheck test to reflect what nullness use. --- .../query-tests/Nullness/NullCheck.expected | 517 ++++++------------ .../ql/test/query-tests/Nullness/NullCheck.ql | 4 +- 2 files changed, 163 insertions(+), 358 deletions(-) diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index e8b9a30e5d1..5161037eba0 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -1,356 +1,161 @@ -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | false | true | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | true | false | -| Assert.cs:14:23:14:23 | access to local variable s | Assert.cs:14:23:14:23 | access to local variable s | non-null | false | -| Assert.cs:14:23:14:23 | access to local variable s | Assert.cs:14:23:14:23 | access to local variable s | null | true | -| Assert.cs:18:26:18:26 | access to local variable s | Assert.cs:18:26:18:26 | access to local variable s | non-null | false | -| Assert.cs:18:26:18:26 | access to local variable s | Assert.cs:18:26:18:26 | access to local variable s | null | true | -| Assert.cs:22:23:22:31 | ... == ... | Assert.cs:22:23:22:23 | access to local variable s | false | false | -| Assert.cs:22:23:22:31 | ... == ... | Assert.cs:22:23:22:23 | access to local variable s | true | true | -| Assert.cs:26:23:26:31 | ... != ... | Assert.cs:26:23:26:23 | access to local variable s | false | true | -| Assert.cs:26:23:26:31 | ... != ... | Assert.cs:26:23:26:23 | access to local variable s | true | false | -| Assert.cs:30:24:30:32 | ... != ... | Assert.cs:30:24:30:24 | access to local variable s | false | true | -| Assert.cs:30:24:30:32 | ... != ... | Assert.cs:30:24:30:24 | access to local variable s | true | false | -| Assert.cs:34:24:34:32 | ... == ... | Assert.cs:34:24:34:24 | access to local variable s | false | false | -| Assert.cs:34:24:34:32 | ... == ... | Assert.cs:34:24:34:24 | access to local variable s | true | true | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | false | true | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | true | false | -| Assert.cs:42:24:42:32 | ... == ... | Assert.cs:42:24:42:24 | access to local variable s | false | false | -| Assert.cs:42:24:42:32 | ... == ... | Assert.cs:42:24:42:24 | access to local variable s | true | true | -| Assert.cs:46:23:46:31 | ... == ... | Assert.cs:46:23:46:23 | access to local variable s | false | false | -| Assert.cs:46:23:46:31 | ... == ... | Assert.cs:46:23:46:23 | access to local variable s | true | true | -| Assert.cs:50:24:50:32 | ... != ... | Assert.cs:50:24:50:24 | access to local variable s | false | true | -| Assert.cs:50:24:50:32 | ... != ... | Assert.cs:50:24:50:24 | access to local variable s | true | false | -| B.cs:12:13:12:32 | call to operator == | B.cs:12:13:12:24 | access to local variable eqCallAlways | false | false | -| B.cs:12:13:12:32 | call to operator == | B.cs:12:13:12:24 | access to local variable eqCallAlways | true | true | -| B.cs:12:13:12:32 | call to operator == | B.cs:12:29:12:32 | null | false | false | -| B.cs:12:13:12:32 | call to operator == | B.cs:12:29:12:32 | null | true | true | -| B.cs:15:13:15:22 | call to operator != | B.cs:15:13:15:14 | access to local variable b2 | false | true | -| B.cs:15:13:15:22 | call to operator != | B.cs:15:13:15:14 | access to local variable b2 | true | false | -| B.cs:15:13:15:22 | call to operator != | B.cs:15:19:15:22 | null | false | true | -| B.cs:15:13:15:22 | call to operator != | B.cs:15:19:15:22 | null | true | false | -| B.cs:18:13:18:22 | call to operator == | B.cs:18:13:18:14 | access to local variable b3 | false | false | -| B.cs:18:13:18:22 | call to operator == | B.cs:18:13:18:14 | access to local variable b3 | true | true | -| B.cs:18:13:18:22 | call to operator == | B.cs:18:19:18:22 | null | false | false | -| B.cs:18:13:18:22 | call to operator == | B.cs:18:19:18:22 | null | true | true | -| B.cs:22:13:22:33 | call to operator != | B.cs:22:13:22:25 | access to local variable neqCallAlways | false | true | -| B.cs:22:13:22:33 | call to operator != | B.cs:22:13:22:25 | access to local variable neqCallAlways | true | false | -| B.cs:22:13:22:33 | call to operator != | B.cs:22:30:22:33 | null | false | true | -| B.cs:22:13:22:33 | call to operator != | B.cs:22:30:22:33 | null | true | false | -| B.cs:53:17:53:33 | ... != ... | B.cs:53:17:53:25 | (...) ... | false | true | -| B.cs:53:17:53:33 | ... != ... | B.cs:53:17:53:25 | (...) ... | true | false | -| B.cs:53:17:53:33 | ... != ... | B.cs:53:30:53:33 | null | false | true | -| B.cs:53:17:53:33 | ... != ... | B.cs:53:30:53:33 | null | true | false | -| B.cs:55:26:55:36 | call to method Equals | B.cs:55:26:55:26 | access to local variable o | false | false | -| B.cs:55:26:55:36 | call to method Equals | B.cs:55:26:55:26 | access to local variable o | true | true | -| B.cs:55:26:55:36 | call to method Equals | B.cs:55:35:55:35 | access to local variable o | false | false | -| B.cs:55:26:55:36 | call to method Equals | B.cs:55:35:55:35 | access to local variable o | true | true | -| C.cs:11:19:11:27 | ... == ... | C.cs:11:19:11:19 | access to local variable o | false | false | -| C.cs:11:19:11:27 | ... == ... | C.cs:11:19:11:19 | access to local variable o | true | true | -| C.cs:11:19:11:27 | ... == ... | C.cs:11:24:11:27 | null | false | false | -| C.cs:11:19:11:27 | ... == ... | C.cs:11:24:11:27 | null | true | true | -| C.cs:16:15:16:23 | ... != ... | C.cs:16:15:16:15 | access to local variable o | false | true | -| C.cs:16:15:16:23 | ... != ... | C.cs:16:15:16:15 | access to local variable o | true | false | -| C.cs:16:15:16:23 | ... != ... | C.cs:16:20:16:23 | null | false | true | -| C.cs:16:15:16:23 | ... != ... | C.cs:16:20:16:23 | null | true | false | -| C.cs:24:13:24:21 | ... != ... | C.cs:24:13:24:13 | access to parameter o | false | true | -| C.cs:24:13:24:21 | ... != ... | C.cs:24:13:24:13 | access to parameter o | true | false | -| C.cs:28:37:28:45 | ... == ... | C.cs:28:37:28:37 | access to parameter o | false | false | -| C.cs:28:37:28:45 | ... == ... | C.cs:28:37:28:37 | access to parameter o | true | true | -| C.cs:30:40:30:48 | ... != ... | C.cs:30:40:30:40 | access to parameter o | false | true | -| C.cs:30:40:30:48 | ... != ... | C.cs:30:40:30:40 | access to parameter o | true | false | -| C.cs:34:13:34:21 | ... == ... | C.cs:34:13:34:13 | access to parameter o | false | false | -| C.cs:34:13:34:21 | ... == ... | C.cs:34:13:34:13 | access to parameter o | true | true | -| C.cs:41:22:41:30 | ... == ... | C.cs:41:22:41:22 | access to local variable s | false | false | -| C.cs:41:22:41:30 | ... == ... | C.cs:41:22:41:22 | access to local variable s | true | true | -| C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | false | true | -| C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | true | false | -| C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | non-null | false | -| C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | null | true | -| C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | non-null | false | -| C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | null | true | -| C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | false | true | -| C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | true | false | -| C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | false | false | -| C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | true | true | -| C.cs:88:13:88:23 | ... is ... | C.cs:88:13:88:13 | access to local variable o | true | false | -| C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | false | false | -| C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | true | true | -| C.cs:113:22:113:36 | ... == ... | C.cs:113:33:113:36 | null | false | false | -| C.cs:113:22:113:36 | ... == ... | C.cs:113:33:113:36 | null | true | true | -| C.cs:120:13:120:28 | ... == ... | C.cs:120:13:120:20 | access to local variable children | false | false | -| C.cs:120:13:120:28 | ... == ... | C.cs:120:13:120:20 | access to local variable children | true | true | -| C.cs:120:13:120:28 | ... == ... | C.cs:120:25:120:28 | null | false | false | -| C.cs:120:13:120:28 | ... == ... | C.cs:120:25:120:28 | null | true | true | -| C.cs:129:13:129:38 | ... == ... | C.cs:129:14:129:29 | ... = ... | false | false | -| C.cs:129:13:129:38 | ... == ... | C.cs:129:14:129:29 | ... = ... | true | true | -| C.cs:129:13:129:38 | ... == ... | C.cs:129:35:129:38 | null | false | false | -| C.cs:129:13:129:38 | ... == ... | C.cs:129:35:129:38 | null | true | true | -| C.cs:145:13:145:39 | ... != ... | C.cs:145:14:145:30 | ... = ... | false | true | -| C.cs:145:13:145:39 | ... != ... | C.cs:145:14:145:30 | ... = ... | true | false | -| C.cs:145:13:145:39 | ... != ... | C.cs:145:36:145:39 | null | false | true | -| C.cs:145:13:145:39 | ... != ... | C.cs:145:36:145:39 | null | true | false | -| C.cs:157:16:157:24 | ... != ... | C.cs:157:16:157:16 | access to local variable s | false | true | -| C.cs:157:16:157:24 | ... != ... | C.cs:157:16:157:16 | access to local variable s | true | false | -| C.cs:157:16:157:24 | ... != ... | C.cs:157:21:157:24 | null | false | true | -| C.cs:157:16:157:24 | ... != ... | C.cs:157:21:157:24 | null | true | false | -| C.cs:165:16:165:24 | ... != ... | C.cs:165:16:165:16 | access to local variable s | false | true | -| C.cs:165:16:165:24 | ... != ... | C.cs:165:16:165:16 | access to local variable s | true | false | -| C.cs:165:16:165:24 | ... != ... | C.cs:165:21:165:24 | null | false | true | -| C.cs:165:16:165:24 | ... != ... | C.cs:165:21:165:24 | null | true | false | -| C.cs:172:16:172:24 | ... != ... | C.cs:172:16:172:16 | access to local variable s | false | true | -| C.cs:172:16:172:24 | ... != ... | C.cs:172:16:172:16 | access to local variable s | true | false | -| C.cs:172:16:172:24 | ... != ... | C.cs:172:21:172:24 | null | false | true | -| C.cs:172:16:172:24 | ... != ... | C.cs:172:21:172:24 | null | true | false | -| C.cs:186:16:186:24 | ... != ... | C.cs:186:16:186:16 | access to local variable s | false | true | -| C.cs:186:16:186:24 | ... != ... | C.cs:186:16:186:16 | access to local variable s | true | false | -| C.cs:211:13:211:21 | ... != ... | C.cs:211:13:211:13 | access to local variable s | false | true | -| C.cs:211:13:211:21 | ... != ... | C.cs:211:13:211:13 | access to local variable s | true | false | -| C.cs:217:13:217:21 | ... == ... | C.cs:217:13:217:13 | access to local variable s | false | false | -| C.cs:217:13:217:21 | ... == ... | C.cs:217:13:217:13 | access to local variable s | true | true | -| C.cs:221:13:221:21 | ... != ... | C.cs:221:13:221:13 | access to local variable s | false | true | -| C.cs:221:13:221:21 | ... != ... | C.cs:221:13:221:13 | access to local variable s | true | false | -| C.cs:221:13:221:21 | ... != ... | C.cs:221:18:221:21 | null | false | false | -| C.cs:229:22:229:30 | ... != ... | C.cs:229:22:229:22 | access to local variable s | false | true | -| C.cs:229:22:229:30 | ... != ... | C.cs:229:22:229:22 | access to local variable s | true | false | -| C.cs:235:24:235:32 | ... == ... | C.cs:235:24:235:24 | access to local variable s | false | false | -| C.cs:235:24:235:32 | ... == ... | C.cs:235:24:235:24 | access to local variable s | true | true | -| C.cs:235:24:235:32 | ... == ... | C.cs:235:29:235:32 | null | false | false | -| C.cs:235:24:235:32 | ... == ... | C.cs:235:29:235:32 | null | true | true | -| D.cs:28:13:28:25 | ... != ... | D.cs:28:13:28:17 | access to parameter param | false | true | -| D.cs:28:13:28:25 | ... != ... | D.cs:28:13:28:17 | access to parameter param | true | false | -| D.cs:37:13:37:23 | ... is ... | D.cs:37:13:37:13 | access to parameter x | true | false | -| D.cs:38:13:38:21 | ... == ... | D.cs:38:13:38:13 | access to parameter x | false | false | -| D.cs:38:13:38:21 | ... == ... | D.cs:38:13:38:13 | access to parameter x | true | true | -| D.cs:39:16:39:24 | ... == ... | D.cs:39:16:39:16 | access to parameter x | false | false | -| D.cs:39:16:39:24 | ... == ... | D.cs:39:16:39:16 | access to parameter x | true | true | -| D.cs:45:13:45:22 | ... != ... | D.cs:45:13:45:14 | access to local variable o1 | false | true | -| D.cs:45:13:45:22 | ... != ... | D.cs:45:13:45:14 | access to local variable o1 | true | false | -| D.cs:48:13:48:24 | ... is ... | D.cs:48:13:48:14 | access to local variable o2 | false | true | -| D.cs:48:13:48:24 | ... is ... | D.cs:48:13:48:14 | access to local variable o2 | true | false | -| D.cs:51:13:51:44 | ... != ... | D.cs:51:14:51:35 | ... = ... | false | true | -| D.cs:51:13:51:44 | ... != ... | D.cs:51:14:51:35 | ... = ... | true | false | -| D.cs:55:23:55:32 | ... != ... | D.cs:55:23:55:24 | access to local variable o4 | false | true | -| D.cs:55:23:55:32 | ... != ... | D.cs:55:23:55:24 | access to local variable o4 | true | false | -| D.cs:58:19:58:28 | ... != ... | D.cs:58:19:58:20 | access to local variable o4 | false | true | -| D.cs:58:19:58:28 | ... != ... | D.cs:58:19:58:20 | access to local variable o4 | true | false | -| D.cs:59:13:59:22 | ... != ... | D.cs:59:13:59:14 | access to local variable o5 | false | true | -| D.cs:59:13:59:22 | ... != ... | D.cs:59:13:59:14 | access to local variable o5 | true | false | -| D.cs:61:13:61:22 | ... != ... | D.cs:61:13:61:14 | access to local variable o4 | false | true | -| D.cs:61:13:61:22 | ... != ... | D.cs:61:13:61:14 | access to local variable o4 | true | false | -| D.cs:65:14:65:29 | call to method CustomIsNull | D.cs:65:27:65:28 | access to local variable o6 | false | false | -| D.cs:65:14:65:29 | call to method CustomIsNull | D.cs:65:27:65:28 | access to local variable o6 | true | true | -| D.cs:69:18:69:27 | ... != ... | D.cs:69:18:69:19 | access to local variable o7 | false | true | -| D.cs:69:18:69:27 | ... != ... | D.cs:69:18:69:19 | access to local variable o7 | true | false | -| D.cs:76:21:76:30 | ... == ... | D.cs:76:21:76:22 | access to local variable o8 | false | false | -| D.cs:76:21:76:30 | ... == ... | D.cs:76:21:76:22 | access to local variable o8 | true | true | -| D.cs:110:26:110:35 | ... != ... | D.cs:110:26:110:27 | access to local variable xs | false | true | -| D.cs:110:26:110:35 | ... != ... | D.cs:110:26:110:27 | access to local variable xs | true | false | -| D.cs:118:13:118:21 | ... == ... | D.cs:118:13:118:13 | access to local variable x | false | false | -| D.cs:118:13:118:21 | ... == ... | D.cs:118:13:118:13 | access to local variable x | true | true | -| D.cs:119:13:119:21 | ... == ... | D.cs:119:13:119:13 | access to local variable x | false | false | -| D.cs:119:13:119:21 | ... == ... | D.cs:119:13:119:13 | access to local variable x | true | true | -| D.cs:127:20:127:28 | ... == ... | D.cs:127:20:127:20 | access to parameter a | false | false | -| D.cs:127:20:127:28 | ... == ... | D.cs:127:20:127:20 | access to parameter a | true | true | -| D.cs:128:20:128:28 | ... == ... | D.cs:128:20:128:20 | access to parameter b | false | false | -| D.cs:128:20:128:28 | ... == ... | D.cs:128:20:128:20 | access to parameter b | true | true | -| D.cs:139:13:139:21 | ... != ... | D.cs:139:13:139:13 | access to parameter a | false | true | -| D.cs:139:13:139:21 | ... != ... | D.cs:139:13:139:13 | access to parameter a | true | false | -| D.cs:152:17:152:27 | ... != ... | D.cs:152:17:152:19 | access to parameter obj | false | true | -| D.cs:152:17:152:27 | ... != ... | D.cs:152:17:152:19 | access to parameter obj | true | false | -| D.cs:196:13:196:21 | ... == ... | D.cs:196:13:196:13 | access to local variable o | false | false | -| D.cs:196:13:196:21 | ... == ... | D.cs:196:13:196:13 | access to local variable o | true | true | -| D.cs:196:13:196:21 | ... == ... | D.cs:196:18:196:21 | null | true | false | -| D.cs:206:17:206:25 | ... == ... | D.cs:206:17:206:17 | access to local variable e | false | false | -| D.cs:206:17:206:25 | ... == ... | D.cs:206:17:206:17 | access to local variable e | true | true | -| D.cs:212:18:212:26 | ... == ... | D.cs:212:18:212:18 | access to local variable n | false | false | -| D.cs:212:18:212:26 | ... == ... | D.cs:212:18:212:18 | access to local variable n | true | true | -| D.cs:212:18:212:26 | ... == ... | D.cs:212:23:212:26 | null | false | false | -| D.cs:212:18:212:26 | ... == ... | D.cs:212:23:212:26 | null | true | true | -| D.cs:216:13:216:22 | ... == ... | D.cs:216:13:216:14 | access to local variable o3 | false | false | -| D.cs:216:13:216:22 | ... == ... | D.cs:216:13:216:14 | access to local variable o3 | true | true | -| D.cs:216:13:216:22 | ... == ... | D.cs:216:19:216:22 | null | true | false | -| D.cs:221:13:221:22 | ... == ... | D.cs:221:13:221:14 | access to local variable o4 | false | false | -| D.cs:221:13:221:22 | ... == ... | D.cs:221:13:221:14 | access to local variable o4 | true | true | -| D.cs:221:13:221:22 | ... == ... | D.cs:221:19:221:22 | null | true | false | -| D.cs:242:13:242:25 | ... == ... | D.cs:242:13:242:17 | access to local variable other | false | false | -| D.cs:242:13:242:25 | ... == ... | D.cs:242:13:242:17 | access to local variable other | true | true | -| D.cs:244:13:244:25 | ... != ... | D.cs:244:13:244:17 | access to local variable other | false | true | -| D.cs:244:13:244:25 | ... != ... | D.cs:244:13:244:17 | access to local variable other | true | false | -| D.cs:266:13:266:27 | ... is ... | D.cs:266:13:266:17 | access to local variable other | true | false | -| D.cs:336:13:336:23 | ... == ... | D.cs:336:13:336:15 | access to parameter obj | false | false | -| D.cs:336:13:336:23 | ... == ... | D.cs:336:13:336:15 | access to parameter obj | true | true | -| D.cs:341:13:341:23 | ... != ... | D.cs:341:13:341:15 | access to local variable msg | false | true | -| D.cs:341:13:341:23 | ... != ... | D.cs:341:13:341:15 | access to local variable msg | true | false | -| D.cs:367:27:367:35 | ... == ... | D.cs:367:27:367:27 | access to local variable b | false | false | -| D.cs:367:27:367:35 | ... == ... | D.cs:367:27:367:27 | access to local variable b | true | true | -| D.cs:382:13:382:23 | ... != ... | D.cs:382:13:382:15 | access to local variable ioe | false | true | -| D.cs:382:13:382:23 | ... != ... | D.cs:382:13:382:15 | access to local variable ioe | true | false | -| D.cs:390:20:390:28 | ... == ... | D.cs:390:20:390:20 | access to parameter a | false | false | -| D.cs:390:20:390:28 | ... == ... | D.cs:390:20:390:20 | access to parameter a | true | true | -| D.cs:397:20:397:28 | ... == ... | D.cs:397:20:397:20 | access to parameter b | false | false | -| D.cs:397:20:397:28 | ... == ... | D.cs:397:20:397:20 | access to parameter b | true | true | -| D.cs:407:14:407:22 | ... != ... | D.cs:407:14:407:14 | access to parameter x | false | true | -| D.cs:407:14:407:22 | ... != ... | D.cs:407:14:407:14 | access to parameter x | true | false | -| D.cs:407:27:407:35 | ... == ... | D.cs:407:27:407:27 | access to parameter y | false | false | -| D.cs:407:27:407:35 | ... == ... | D.cs:407:27:407:27 | access to parameter y | true | true | -| D.cs:407:42:407:50 | ... == ... | D.cs:407:42:407:42 | access to parameter x | false | false | -| D.cs:407:42:407:50 | ... == ... | D.cs:407:42:407:42 | access to parameter x | true | true | -| D.cs:407:55:407:63 | ... != ... | D.cs:407:55:407:55 | access to parameter y | false | true | -| D.cs:407:55:407:63 | ... != ... | D.cs:407:55:407:55 | access to parameter y | true | false | -| D.cs:409:13:409:21 | ... != ... | D.cs:409:13:409:13 | access to parameter x | false | true | -| D.cs:409:13:409:21 | ... != ... | D.cs:409:13:409:13 | access to parameter x | true | false | -| D.cs:411:13:411:21 | ... != ... | D.cs:411:13:411:13 | access to parameter y | false | true | -| D.cs:411:13:411:21 | ... != ... | D.cs:411:13:411:13 | access to parameter y | true | false | -| E.cs:10:34:10:54 | ... != ... | E.cs:10:35:10:45 | ... = ... | false | true | -| E.cs:10:34:10:54 | ... != ... | E.cs:10:35:10:45 | ... = ... | true | false | -| E.cs:12:32:12:52 | ... != ... | E.cs:12:33:12:43 | ... = ... | false | true | -| E.cs:12:32:12:52 | ... != ... | E.cs:12:33:12:43 | ... = ... | true | false | -| E.cs:20:19:20:28 | ... == ... | E.cs:20:19:20:20 | access to local variable s1 | false | false | -| E.cs:20:19:20:28 | ... == ... | E.cs:20:19:20:20 | access to local variable s1 | true | true | -| E.cs:21:13:21:22 | ... == ... | E.cs:21:13:21:14 | access to local variable s2 | false | false | -| E.cs:21:13:21:22 | ... == ... | E.cs:21:13:21:14 | access to local variable s2 | true | true | -| E.cs:24:19:24:28 | ... == ... | E.cs:24:19:24:20 | access to local variable s1 | false | false | -| E.cs:24:19:24:28 | ... == ... | E.cs:24:19:24:20 | access to local variable s1 | true | true | -| E.cs:26:13:26:22 | ... != ... | E.cs:26:13:26:14 | access to local variable s2 | false | true | -| E.cs:26:13:26:22 | ... != ... | E.cs:26:13:26:14 | access to local variable s2 | true | false | -| E.cs:70:22:70:32 | ... == ... | E.cs:70:22:70:24 | access to parameter arr | false | false | -| E.cs:70:22:70:32 | ... == ... | E.cs:70:22:70:24 | access to parameter arr | true | true | -| E.cs:83:13:83:24 | ... != ... | E.cs:83:13:83:16 | access to parameter vals | false | true | -| E.cs:83:13:83:24 | ... != ... | E.cs:83:13:83:16 | access to parameter vals | true | false | -| E.cs:85:18:85:29 | ... != ... | E.cs:85:18:85:21 | access to parameter vals | false | true | -| E.cs:85:18:85:29 | ... != ... | E.cs:85:18:85:21 | access to parameter vals | true | false | -| E.cs:153:13:153:24 | ... != ... | E.cs:153:13:153:16 | access to local variable obj2 | false | true | -| E.cs:153:13:153:24 | ... != ... | E.cs:153:13:153:16 | access to local variable obj2 | true | false | -| E.cs:164:17:164:25 | ... == ... | E.cs:164:17:164:17 | access to parameter a | false | false | -| E.cs:164:17:164:25 | ... == ... | E.cs:164:17:164:17 | access to parameter a | true | true | -| E.cs:175:19:175:29 | ... == ... | E.cs:175:19:175:21 | access to parameter obj | false | false | -| E.cs:175:19:175:29 | ... == ... | E.cs:175:19:175:21 | access to parameter obj | true | true | -| E.cs:176:13:176:22 | ... == ... | E.cs:176:13:176:14 | (...) ... | false | false | -| E.cs:176:13:176:22 | ... == ... | E.cs:176:13:176:14 | (...) ... | true | true | -| E.cs:176:13:176:22 | ... == ... | E.cs:176:19:176:22 | null | true | false | -| E.cs:180:13:180:23 | ... == ... | E.cs:180:13:180:15 | access to parameter obj | false | false | -| E.cs:180:13:180:23 | ... == ... | E.cs:180:13:180:15 | access to parameter obj | true | true | -| E.cs:184:13:184:22 | ... == ... | E.cs:184:13:184:14 | (...) ... | false | false | -| E.cs:184:13:184:22 | ... == ... | E.cs:184:13:184:14 | (...) ... | true | true | -| E.cs:184:13:184:22 | ... == ... | E.cs:184:19:184:22 | null | true | false | -| E.cs:193:17:193:17 | access to parameter o | E.cs:193:17:193:17 | access to parameter o | non-null | false | -| E.cs:193:17:193:17 | access to parameter o | E.cs:193:17:193:17 | access to parameter o | null | true | -| E.cs:208:13:208:23 | ... is ... | E.cs:208:13:208:13 | access to parameter s | false | true | -| E.cs:208:13:208:23 | ... is ... | E.cs:208:13:208:13 | access to parameter s | true | false | -| E.cs:245:13:245:22 | access to property HasValue | E.cs:245:13:245:13 | access to parameter i | false | true | -| E.cs:245:13:245:22 | access to property HasValue | E.cs:245:13:245:13 | access to parameter i | true | false | -| E.cs:252:13:252:21 | ... != ... | E.cs:252:13:252:13 | access to parameter i | false | true | -| E.cs:252:13:252:21 | ... != ... | E.cs:252:13:252:13 | access to parameter i | true | false | -| E.cs:259:13:259:21 | ... == ... | E.cs:259:13:259:13 | access to parameter i | false | false | -| E.cs:259:13:259:21 | ... == ... | E.cs:259:13:259:13 | access to parameter i | true | true | -| E.cs:274:17:274:25 | ... != ... | E.cs:274:17:274:17 | access to local variable o | false | true | -| E.cs:274:17:274:25 | ... != ... | E.cs:274:17:274:17 | access to local variable o | true | false | -| E.cs:284:9:284:9 | access to local variable o | E.cs:284:9:284:9 | access to local variable o | non-null | false | -| E.cs:284:9:284:9 | access to local variable o | E.cs:284:9:284:9 | access to local variable o | null | true | -| E.cs:293:13:293:13 | access to local variable s | E.cs:293:13:293:13 | access to local variable s | non-null | false | -| E.cs:293:13:293:13 | access to local variable s | E.cs:293:13:293:13 | access to local variable s | null | true | -| E.cs:293:13:293:24 | ... == ... | E.cs:293:13:293:19 | call to method M2 | true | false | -| E.cs:306:31:306:31 | access to field l | E.cs:306:31:306:31 | access to field l | non-null | false | -| E.cs:306:31:306:31 | access to field l | E.cs:306:31:306:31 | access to field l | null | true | -| E.cs:309:13:309:22 | access to property HasValue | E.cs:309:13:309:13 | access to field l | false | true | -| E.cs:309:13:309:22 | access to property HasValue | E.cs:309:13:309:13 | access to field l | true | false | -| E.cs:321:13:321:30 | ... is ... | E.cs:321:14:321:21 | ... ?? ... | false | false | -| E.cs:321:13:321:30 | ... is ... | E.cs:321:14:321:21 | ... ?? ... | true | true | -| E.cs:321:14:321:15 | access to parameter s1 | E.cs:321:14:321:15 | access to parameter s1 | non-null | false | -| E.cs:321:14:321:15 | access to parameter s1 | E.cs:321:14:321:15 | access to parameter s1 | null | true | -| E.cs:330:17:330:28 | (...) ... | E.cs:330:17:330:28 | (...) ... | null | true | -| E.cs:336:17:336:17 | access to parameter s | E.cs:336:17:336:17 | access to parameter s | non-null | false | -| E.cs:336:17:336:17 | access to parameter s | E.cs:336:17:336:17 | access to parameter s | null | true | -| E.cs:342:17:342:17 | access to parameter s | E.cs:342:17:342:17 | access to parameter s | non-null | false | -| E.cs:342:17:342:17 | access to parameter s | E.cs:342:17:342:17 | access to parameter s | null | true | -| E.cs:348:21:348:21 | access to parameter s | E.cs:348:21:348:21 | access to parameter s | non-null | false | -| E.cs:348:21:348:21 | access to parameter s | E.cs:348:21:348:21 | access to parameter s | null | true | -| E.cs:354:21:354:21 | access to parameter s | E.cs:354:21:354:21 | access to parameter s | non-null | false | -| E.cs:354:21:354:21 | access to parameter s | E.cs:354:21:354:21 | access to parameter s | null | true | -| E.cs:355:13:355:21 | dynamic call to operator != | E.cs:355:13:355:13 | access to local variable x | false | true | -| E.cs:355:13:355:21 | dynamic call to operator != | E.cs:355:13:355:13 | access to local variable x | true | false | -| E.cs:361:17:361:17 | access to parameter s | E.cs:361:17:361:17 | access to parameter s | non-null | false | -| E.cs:361:17:361:17 | access to parameter s | E.cs:361:17:361:17 | access to parameter s | null | true | -| E.cs:362:13:362:29 | ... != ... | E.cs:362:13:362:13 | access to local variable x | false | true | -| E.cs:362:13:362:29 | ... != ... | E.cs:362:13:362:13 | access to local variable x | true | false | -| E.cs:372:13:372:23 | ... is ... | E.cs:372:13:372:13 | access to parameter o | true | false | -| E.cs:382:14:382:23 | ... == ... | E.cs:382:14:382:15 | access to parameter e1 | false | false | -| E.cs:382:14:382:23 | ... == ... | E.cs:382:14:382:15 | access to parameter e1 | true | true | -| E.cs:382:28:382:37 | ... != ... | E.cs:382:28:382:29 | access to parameter e2 | false | true | -| E.cs:382:28:382:37 | ... != ... | E.cs:382:28:382:29 | access to parameter e2 | true | false | -| E.cs:382:44:382:53 | ... != ... | E.cs:382:44:382:45 | access to parameter e1 | false | true | -| E.cs:382:44:382:53 | ... != ... | E.cs:382:44:382:45 | access to parameter e1 | true | false | -| E.cs:382:58:382:67 | ... == ... | E.cs:382:58:382:59 | access to parameter e2 | false | false | -| E.cs:382:58:382:67 | ... == ... | E.cs:382:58:382:59 | access to parameter e2 | true | true | -| E.cs:384:13:384:22 | ... == ... | E.cs:384:13:384:14 | access to parameter e1 | false | false | -| E.cs:384:13:384:22 | ... == ... | E.cs:384:13:384:14 | access to parameter e1 | true | true | -| E.cs:384:27:384:36 | ... == ... | E.cs:384:27:384:28 | access to parameter e2 | false | false | -| E.cs:384:27:384:36 | ... == ... | E.cs:384:27:384:28 | access to parameter e2 | true | true | -| E.cs:391:9:391:9 | access to parameter i | E.cs:391:9:391:9 | access to parameter i | non-null | false | -| E.cs:391:9:391:9 | access to parameter i | E.cs:391:9:391:9 | access to parameter i | null | true | -| E.cs:397:9:397:13 | access to parameter color | E.cs:397:9:397:13 | access to parameter color | non-null | false | -| E.cs:397:9:397:13 | access to parameter color | E.cs:397:9:397:13 | access to parameter color | null | true | -| E.cs:404:9:404:9 | access to local variable i | E.cs:404:9:404:9 | access to local variable i | non-null | false | -| E.cs:404:9:404:9 | access to local variable i | E.cs:404:9:404:9 | access to local variable i | null | true | -| E.cs:411:9:411:9 | access to local variable i | E.cs:411:9:411:9 | access to local variable i | non-null | false | -| E.cs:411:9:411:9 | access to local variable i | E.cs:411:9:411:9 | access to local variable i | null | true | -| E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | false | true | -| E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | true | false | -| E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | false | true | -| E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | true | false | -| E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | false | false | -| E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | true | true | -| E.cs:442:23:442:39 | ... is ... | E.cs:442:23:442:23 | access to parameter s | false | false | -| E.cs:447:23:447:35 | ... is ... | E.cs:447:23:447:23 | access to parameter s | true | false | -| E.cs:452:23:452:33 | ... is ... | E.cs:452:23:452:23 | access to parameter s | true | false | -| E.cs:457:13:457:27 | ... is ... | E.cs:457:13:457:13 | access to parameter s | false | false | -| Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | Forwarding.cs:9:14:9:14 | access to local variable s | false | false | -| Forwarding.cs:14:13:14:32 | call to method IsNotNullOrEmpty | Forwarding.cs:14:13:14:13 | access to local variable s | true | false | -| Forwarding.cs:19:14:19:23 | call to method IsNull | Forwarding.cs:19:14:19:14 | access to local variable s | false | false | -| Forwarding.cs:19:14:19:23 | call to method IsNull | Forwarding.cs:19:14:19:14 | access to local variable s | true | true | -| Forwarding.cs:24:13:24:25 | call to method IsNotNull | Forwarding.cs:24:13:24:13 | access to local variable s | false | true | -| Forwarding.cs:24:13:24:25 | call to method IsNotNull | Forwarding.cs:24:13:24:13 | access to local variable s | true | false | -| Forwarding.cs:29:13:29:24 | call to method IsNotNull | Forwarding.cs:29:23:29:23 | access to local variable s | true | false | -| Forwarding.cs:34:13:34:29 | call to method IsNotNullWrong | Forwarding.cs:34:28:34:28 | access to local variable s | false | false | -| Forwarding.cs:45:16:45:26 | ... is ... | Forwarding.cs:45:16:45:16 | access to parameter o | true | false | -| Forwarding.cs:45:31:45:61 | call to method IsNullOrEmpty | Forwarding.cs:45:52:45:60 | (...) ... | false | false | -| Forwarding.cs:45:66:45:75 | call to method IsNull | Forwarding.cs:45:66:45:66 | access to parameter o | false | false | -| Forwarding.cs:45:66:45:75 | call to method IsNull | Forwarding.cs:45:66:45:66 | access to parameter o | true | true | -| Forwarding.cs:50:13:50:23 | ... is ... | Forwarding.cs:50:13:50:13 | access to parameter o | true | false | -| Forwarding.cs:52:21:52:51 | call to method IsNullOrEmpty | Forwarding.cs:52:42:52:50 | (...) ... | false | false | -| Forwarding.cs:59:13:59:21 | ... == ... | Forwarding.cs:59:13:59:13 | access to parameter o | false | false | -| Forwarding.cs:59:13:59:21 | ... == ... | Forwarding.cs:59:13:59:13 | access to parameter o | true | true | -| Forwarding.cs:68:16:68:38 | call to method IsNullOrEmpty | Forwarding.cs:68:37:68:37 | access to parameter s | false | false | -| Forwarding.cs:73:17:73:39 | call to method IsNullOrEmpty | Forwarding.cs:73:38:73:38 | access to parameter s | false | false | -| Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | Forwarding.cs:78:32:78:32 | access to parameter o | false | false | -| Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | Forwarding.cs:78:32:78:32 | access to parameter o | true | true | -| Forwarding.cs:83:16:83:24 | ... != ... | Forwarding.cs:83:16:83:16 | access to parameter o | false | true | -| Forwarding.cs:83:16:83:24 | ... != ... | Forwarding.cs:83:16:83:16 | access to parameter o | true | false | -| GuardedString.cs:9:14:9:36 | call to method IsNullOrEmpty | GuardedString.cs:9:35:9:35 | access to local variable s | false | false | -| GuardedString.cs:14:14:14:41 | call to method IsNullOrWhiteSpace | GuardedString.cs:14:40:14:40 | access to local variable s | false | false | -| GuardedString.cs:19:13:19:13 | access to local variable s | GuardedString.cs:19:13:19:13 | access to local variable s | non-null | false | -| GuardedString.cs:19:13:19:13 | access to local variable s | GuardedString.cs:19:13:19:13 | access to local variable s | null | true | -| GuardedString.cs:19:13:19:26 | ... == ... | GuardedString.cs:19:13:19:21 | access to property Length | true | false | -| GuardedString.cs:22:13:22:13 | access to local variable s | GuardedString.cs:22:13:22:13 | access to local variable s | non-null | false | -| GuardedString.cs:22:13:22:13 | access to local variable s | GuardedString.cs:22:13:22:13 | access to local variable s | null | true | -| GuardedString.cs:22:13:22:25 | ... > ... | GuardedString.cs:22:13:22:21 | access to property Length | true | false | -| GuardedString.cs:25:13:25:13 | access to local variable s | GuardedString.cs:25:13:25:13 | access to local variable s | non-null | false | -| GuardedString.cs:25:13:25:13 | access to local variable s | GuardedString.cs:25:13:25:13 | access to local variable s | null | true | -| GuardedString.cs:25:13:25:26 | ... >= ... | GuardedString.cs:25:13:25:21 | access to property Length | true | false | -| GuardedString.cs:28:13:28:13 | access to local variable s | GuardedString.cs:28:13:28:13 | access to local variable s | non-null | false | -| GuardedString.cs:28:13:28:13 | access to local variable s | GuardedString.cs:28:13:28:13 | access to local variable s | null | true | -| GuardedString.cs:28:13:28:26 | ... < ... | GuardedString.cs:28:13:28:21 | access to property Length | true | false | -| GuardedString.cs:31:13:31:13 | access to local variable s | GuardedString.cs:31:13:31:13 | access to local variable s | non-null | false | -| GuardedString.cs:31:13:31:13 | access to local variable s | GuardedString.cs:31:13:31:13 | access to local variable s | null | true | -| GuardedString.cs:31:13:31:27 | ... <= ... | GuardedString.cs:31:13:31:21 | access to property Length | true | false | -| GuardedString.cs:34:13:34:13 | access to local variable s | GuardedString.cs:34:13:34:13 | access to local variable s | non-null | false | -| GuardedString.cs:34:13:34:13 | access to local variable s | GuardedString.cs:34:13:34:13 | access to local variable s | null | true | -| GuardedString.cs:34:13:34:26 | ... != ... | GuardedString.cs:34:13:34:21 | access to property Length | false | false | -| NullAlwaysBad.cs:9:17:9:25 | ... != ... | NullAlwaysBad.cs:9:17:9:17 | access to parameter s | false | true | -| NullAlwaysBad.cs:9:17:9:25 | ... != ... | NullAlwaysBad.cs:9:17:9:17 | access to parameter s | true | false | -| NullAlwaysGood.cs:9:17:9:25 | ... != ... | NullAlwaysGood.cs:9:17:9:17 | access to parameter s | false | true | -| NullAlwaysGood.cs:9:17:9:25 | ... != ... | NullAlwaysGood.cs:9:17:9:17 | access to parameter s | true | false | -| NullMaybeGood.cs:7:13:7:21 | ... != ... | NullMaybeGood.cs:7:13:7:13 | access to parameter o | false | true | -| NullMaybeGood.cs:7:13:7:21 | ... != ... | NullMaybeGood.cs:7:13:7:13 | access to parameter o | true | false | -| StringConcatenation.cs:15:16:15:22 | ... != ... | StringConcatenation.cs:15:16:15:16 | access to local variable s | false | false | -| StringConcatenation.cs:22:16:22:22 | ... != ... | StringConcatenation.cs:22:16:22:16 | access to local variable s | false | false | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | +| Assert.cs:14:23:14:23 | access to local variable s | Assert.cs:14:23:14:23 | access to local variable s | +| Assert.cs:18:26:18:26 | access to local variable s | Assert.cs:18:26:18:26 | access to local variable s | +| Assert.cs:22:23:22:31 | ... == ... | Assert.cs:22:23:22:23 | access to local variable s | +| Assert.cs:26:23:26:31 | ... != ... | Assert.cs:26:23:26:23 | access to local variable s | +| Assert.cs:30:24:30:32 | ... != ... | Assert.cs:30:24:30:24 | access to local variable s | +| Assert.cs:34:24:34:32 | ... == ... | Assert.cs:34:24:34:24 | access to local variable s | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | +| Assert.cs:42:24:42:32 | ... == ... | Assert.cs:42:24:42:24 | access to local variable s | +| Assert.cs:46:23:46:31 | ... == ... | Assert.cs:46:23:46:23 | access to local variable s | +| Assert.cs:50:24:50:32 | ... != ... | Assert.cs:50:24:50:24 | access to local variable s | +| B.cs:12:13:12:32 | call to operator == | B.cs:12:13:12:24 | access to local variable eqCallAlways | +| B.cs:12:13:12:32 | call to operator == | B.cs:12:29:12:32 | null | +| B.cs:15:13:15:22 | call to operator != | B.cs:15:13:15:14 | access to local variable b2 | +| B.cs:15:13:15:22 | call to operator != | B.cs:15:19:15:22 | null | +| B.cs:18:13:18:22 | call to operator == | B.cs:18:13:18:14 | access to local variable b3 | +| B.cs:18:13:18:22 | call to operator == | B.cs:18:19:18:22 | null | +| B.cs:22:13:22:33 | call to operator != | B.cs:22:13:22:25 | access to local variable neqCallAlways | +| B.cs:22:13:22:33 | call to operator != | B.cs:22:30:22:33 | null | +| B.cs:53:17:53:33 | ... != ... | B.cs:53:17:53:25 | (...) ... | +| B.cs:53:17:53:33 | ... != ... | B.cs:53:30:53:33 | null | +| B.cs:55:26:55:36 | call to method Equals | B.cs:55:26:55:26 | access to local variable o | +| B.cs:55:26:55:36 | call to method Equals | B.cs:55:35:55:35 | access to local variable o | +| C.cs:11:19:11:27 | ... == ... | C.cs:11:19:11:19 | access to local variable o | +| C.cs:11:19:11:27 | ... == ... | C.cs:11:24:11:27 | null | +| C.cs:16:15:16:23 | ... != ... | C.cs:16:15:16:15 | access to local variable o | +| C.cs:16:15:16:23 | ... != ... | C.cs:16:20:16:23 | null | +| C.cs:24:13:24:21 | ... != ... | C.cs:24:13:24:13 | access to parameter o | +| C.cs:28:37:28:45 | ... == ... | C.cs:28:37:28:37 | access to parameter o | +| C.cs:30:40:30:48 | ... != ... | C.cs:30:40:30:40 | access to parameter o | +| C.cs:34:13:34:21 | ... == ... | C.cs:34:13:34:13 | access to parameter o | +| C.cs:41:22:41:30 | ... == ... | C.cs:41:22:41:22 | access to local variable s | +| C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | +| C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | +| C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | +| C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | +| C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | +| C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | +| C.cs:113:22:113:36 | ... == ... | C.cs:113:33:113:36 | null | +| C.cs:120:13:120:28 | ... == ... | C.cs:120:13:120:20 | access to local variable children | +| C.cs:120:13:120:28 | ... == ... | C.cs:120:25:120:28 | null | +| C.cs:129:13:129:38 | ... == ... | C.cs:129:14:129:29 | ... = ... | +| C.cs:129:13:129:38 | ... == ... | C.cs:129:35:129:38 | null | +| C.cs:145:13:145:39 | ... != ... | C.cs:145:14:145:30 | ... = ... | +| C.cs:145:13:145:39 | ... != ... | C.cs:145:36:145:39 | null | +| C.cs:157:16:157:24 | ... != ... | C.cs:157:16:157:16 | access to local variable s | +| C.cs:157:16:157:24 | ... != ... | C.cs:157:21:157:24 | null | +| C.cs:165:16:165:24 | ... != ... | C.cs:165:16:165:16 | access to local variable s | +| C.cs:165:16:165:24 | ... != ... | C.cs:165:21:165:24 | null | +| C.cs:172:16:172:24 | ... != ... | C.cs:172:16:172:16 | access to local variable s | +| C.cs:172:16:172:24 | ... != ... | C.cs:172:21:172:24 | null | +| C.cs:186:16:186:24 | ... != ... | C.cs:186:16:186:16 | access to local variable s | +| C.cs:211:13:211:21 | ... != ... | C.cs:211:13:211:13 | access to local variable s | +| C.cs:217:13:217:21 | ... == ... | C.cs:217:13:217:13 | access to local variable s | +| C.cs:221:13:221:21 | ... != ... | C.cs:221:13:221:13 | access to local variable s | +| C.cs:229:22:229:30 | ... != ... | C.cs:229:22:229:22 | access to local variable s | +| C.cs:235:24:235:32 | ... == ... | C.cs:235:24:235:24 | access to local variable s | +| C.cs:235:24:235:32 | ... == ... | C.cs:235:29:235:32 | null | +| D.cs:28:13:28:25 | ... != ... | D.cs:28:13:28:17 | access to parameter param | +| D.cs:38:13:38:21 | ... == ... | D.cs:38:13:38:13 | access to parameter x | +| D.cs:39:16:39:24 | ... == ... | D.cs:39:16:39:16 | access to parameter x | +| D.cs:45:13:45:22 | ... != ... | D.cs:45:13:45:14 | access to local variable o1 | +| D.cs:48:13:48:24 | ... is ... | D.cs:48:13:48:14 | access to local variable o2 | +| D.cs:51:13:51:44 | ... != ... | D.cs:51:14:51:35 | ... = ... | +| D.cs:55:23:55:32 | ... != ... | D.cs:55:23:55:24 | access to local variable o4 | +| D.cs:58:19:58:28 | ... != ... | D.cs:58:19:58:20 | access to local variable o4 | +| D.cs:59:13:59:22 | ... != ... | D.cs:59:13:59:14 | access to local variable o5 | +| D.cs:61:13:61:22 | ... != ... | D.cs:61:13:61:14 | access to local variable o4 | +| D.cs:65:14:65:29 | call to method CustomIsNull | D.cs:65:27:65:28 | access to local variable o6 | +| D.cs:69:18:69:27 | ... != ... | D.cs:69:18:69:19 | access to local variable o7 | +| D.cs:76:21:76:30 | ... == ... | D.cs:76:21:76:22 | access to local variable o8 | +| D.cs:110:26:110:35 | ... != ... | D.cs:110:26:110:27 | access to local variable xs | +| D.cs:118:13:118:21 | ... == ... | D.cs:118:13:118:13 | access to local variable x | +| D.cs:119:13:119:21 | ... == ... | D.cs:119:13:119:13 | access to local variable x | +| D.cs:127:20:127:28 | ... == ... | D.cs:127:20:127:20 | access to parameter a | +| D.cs:128:20:128:28 | ... == ... | D.cs:128:20:128:20 | access to parameter b | +| D.cs:139:13:139:21 | ... != ... | D.cs:139:13:139:13 | access to parameter a | +| D.cs:152:17:152:27 | ... != ... | D.cs:152:17:152:19 | access to parameter obj | +| D.cs:196:13:196:21 | ... == ... | D.cs:196:13:196:13 | access to local variable o | +| D.cs:206:17:206:25 | ... == ... | D.cs:206:17:206:17 | access to local variable e | +| D.cs:212:18:212:26 | ... == ... | D.cs:212:18:212:18 | access to local variable n | +| D.cs:212:18:212:26 | ... == ... | D.cs:212:23:212:26 | null | +| D.cs:216:13:216:22 | ... == ... | D.cs:216:13:216:14 | access to local variable o3 | +| D.cs:221:13:221:22 | ... == ... | D.cs:221:13:221:14 | access to local variable o4 | +| D.cs:242:13:242:25 | ... == ... | D.cs:242:13:242:17 | access to local variable other | +| D.cs:244:13:244:25 | ... != ... | D.cs:244:13:244:17 | access to local variable other | +| D.cs:336:13:336:23 | ... == ... | D.cs:336:13:336:15 | access to parameter obj | +| D.cs:341:13:341:23 | ... != ... | D.cs:341:13:341:15 | access to local variable msg | +| D.cs:367:27:367:35 | ... == ... | D.cs:367:27:367:27 | access to local variable b | +| D.cs:382:13:382:23 | ... != ... | D.cs:382:13:382:15 | access to local variable ioe | +| D.cs:390:20:390:28 | ... == ... | D.cs:390:20:390:20 | access to parameter a | +| D.cs:397:20:397:28 | ... == ... | D.cs:397:20:397:20 | access to parameter b | +| D.cs:407:14:407:22 | ... != ... | D.cs:407:14:407:14 | access to parameter x | +| D.cs:407:27:407:35 | ... == ... | D.cs:407:27:407:27 | access to parameter y | +| D.cs:407:42:407:50 | ... == ... | D.cs:407:42:407:42 | access to parameter x | +| D.cs:407:55:407:63 | ... != ... | D.cs:407:55:407:55 | access to parameter y | +| D.cs:409:13:409:21 | ... != ... | D.cs:409:13:409:13 | access to parameter x | +| D.cs:411:13:411:21 | ... != ... | D.cs:411:13:411:13 | access to parameter y | +| E.cs:10:34:10:54 | ... != ... | E.cs:10:35:10:45 | ... = ... | +| E.cs:12:32:12:52 | ... != ... | E.cs:12:33:12:43 | ... = ... | +| E.cs:20:19:20:28 | ... == ... | E.cs:20:19:20:20 | access to local variable s1 | +| E.cs:21:13:21:22 | ... == ... | E.cs:21:13:21:14 | access to local variable s2 | +| E.cs:24:19:24:28 | ... == ... | E.cs:24:19:24:20 | access to local variable s1 | +| E.cs:26:13:26:22 | ... != ... | E.cs:26:13:26:14 | access to local variable s2 | +| E.cs:70:22:70:32 | ... == ... | E.cs:70:22:70:24 | access to parameter arr | +| E.cs:83:13:83:24 | ... != ... | E.cs:83:13:83:16 | access to parameter vals | +| E.cs:85:18:85:29 | ... != ... | E.cs:85:18:85:21 | access to parameter vals | +| E.cs:153:13:153:24 | ... != ... | E.cs:153:13:153:16 | access to local variable obj2 | +| E.cs:164:17:164:25 | ... == ... | E.cs:164:17:164:17 | access to parameter a | +| E.cs:175:19:175:29 | ... == ... | E.cs:175:19:175:21 | access to parameter obj | +| E.cs:176:13:176:22 | ... == ... | E.cs:176:13:176:14 | (...) ... | +| E.cs:180:13:180:23 | ... == ... | E.cs:180:13:180:15 | access to parameter obj | +| E.cs:184:13:184:22 | ... == ... | E.cs:184:13:184:14 | (...) ... | +| E.cs:193:17:193:17 | access to parameter o | E.cs:193:17:193:17 | access to parameter o | +| E.cs:208:13:208:23 | ... is ... | E.cs:208:13:208:13 | access to parameter s | +| E.cs:245:13:245:22 | access to property HasValue | E.cs:245:13:245:13 | access to parameter i | +| E.cs:252:13:252:21 | ... != ... | E.cs:252:13:252:13 | access to parameter i | +| E.cs:259:13:259:21 | ... == ... | E.cs:259:13:259:13 | access to parameter i | +| E.cs:274:17:274:25 | ... != ... | E.cs:274:17:274:17 | access to local variable o | +| E.cs:284:9:284:9 | access to local variable o | E.cs:284:9:284:9 | access to local variable o | +| E.cs:293:13:293:13 | access to local variable s | E.cs:293:13:293:13 | access to local variable s | +| E.cs:306:31:306:31 | access to field l | E.cs:306:31:306:31 | access to field l | +| E.cs:309:13:309:22 | access to property HasValue | E.cs:309:13:309:13 | access to field l | +| E.cs:321:13:321:30 | ... is ... | E.cs:321:14:321:21 | ... ?? ... | +| E.cs:321:14:321:15 | access to parameter s1 | E.cs:321:14:321:15 | access to parameter s1 | +| E.cs:330:17:330:28 | (...) ... | E.cs:330:17:330:28 | (...) ... | +| E.cs:336:17:336:17 | access to parameter s | E.cs:336:17:336:17 | access to parameter s | +| E.cs:342:17:342:17 | access to parameter s | E.cs:342:17:342:17 | access to parameter s | +| E.cs:348:21:348:21 | access to parameter s | E.cs:348:21:348:21 | access to parameter s | +| E.cs:354:21:354:21 | access to parameter s | E.cs:354:21:354:21 | access to parameter s | +| E.cs:355:13:355:21 | dynamic call to operator != | E.cs:355:13:355:13 | access to local variable x | +| E.cs:361:17:361:17 | access to parameter s | E.cs:361:17:361:17 | access to parameter s | +| E.cs:362:13:362:29 | ... != ... | E.cs:362:13:362:13 | access to local variable x | +| E.cs:382:14:382:23 | ... == ... | E.cs:382:14:382:15 | access to parameter e1 | +| E.cs:382:28:382:37 | ... != ... | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:382:44:382:53 | ... != ... | E.cs:382:44:382:45 | access to parameter e1 | +| E.cs:382:58:382:67 | ... == ... | E.cs:382:58:382:59 | access to parameter e2 | +| E.cs:384:13:384:22 | ... == ... | E.cs:384:13:384:14 | access to parameter e1 | +| E.cs:384:27:384:36 | ... == ... | E.cs:384:27:384:28 | access to parameter e2 | +| E.cs:391:9:391:9 | access to parameter i | E.cs:391:9:391:9 | access to parameter i | +| E.cs:397:9:397:13 | access to parameter color | E.cs:397:9:397:13 | access to parameter color | +| E.cs:404:9:404:9 | access to local variable i | E.cs:404:9:404:9 | access to local variable i | +| E.cs:411:9:411:9 | access to local variable i | E.cs:411:9:411:9 | access to local variable i | +| E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | +| E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | +| E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | +| Forwarding.cs:19:14:19:23 | call to method IsNull | Forwarding.cs:19:14:19:14 | access to local variable s | +| Forwarding.cs:24:13:24:25 | call to method IsNotNull | Forwarding.cs:24:13:24:13 | access to local variable s | +| Forwarding.cs:45:66:45:75 | call to method IsNull | Forwarding.cs:45:66:45:66 | access to parameter o | +| Forwarding.cs:59:13:59:21 | ... == ... | Forwarding.cs:59:13:59:13 | access to parameter o | +| Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | Forwarding.cs:78:32:78:32 | access to parameter o | +| Forwarding.cs:83:16:83:24 | ... != ... | Forwarding.cs:83:16:83:16 | access to parameter o | +| GuardedString.cs:19:13:19:13 | access to local variable s | GuardedString.cs:19:13:19:13 | access to local variable s | +| GuardedString.cs:22:13:22:13 | access to local variable s | GuardedString.cs:22:13:22:13 | access to local variable s | +| GuardedString.cs:25:13:25:13 | access to local variable s | GuardedString.cs:25:13:25:13 | access to local variable s | +| GuardedString.cs:28:13:28:13 | access to local variable s | GuardedString.cs:28:13:28:13 | access to local variable s | +| GuardedString.cs:31:13:31:13 | access to local variable s | GuardedString.cs:31:13:31:13 | access to local variable s | +| GuardedString.cs:34:13:34:13 | access to local variable s | GuardedString.cs:34:13:34:13 | access to local variable s | +| NullAlwaysBad.cs:9:17:9:25 | ... != ... | NullAlwaysBad.cs:9:17:9:17 | access to parameter s | +| NullAlwaysGood.cs:9:17:9:25 | ... != ... | NullAlwaysGood.cs:9:17:9:17 | access to parameter s | +| NullMaybeGood.cs:7:13:7:21 | ... != ... | NullMaybeGood.cs:7:13:7:13 | access to parameter o | diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.ql b/csharp/ql/test/query-tests/Nullness/NullCheck.ql index 4dbd80b7877..0635ae823e7 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.ql +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.ql @@ -1,5 +1,5 @@ import csharp import semmle.code.csharp.controlflow.Guards -from DereferenceableExpr de, AbstractValue v, boolean isNull -select de.getANullCheck(v, isNull), de, v, isNull +from DereferenceableExpr de +select de.getANullCheck(_, true), de From dc4abc952f072a18ac8f1ba8952d1daed3ac174d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 17 Oct 2025 11:55:02 +0200 Subject: [PATCH 432/965] C#: Replace references to getANullCheck. --- .../ql/lib/semmle/code/csharp/controlflow/Guards.qll | 11 +++++++++++ .../ql/lib/semmle/code/csharp/dataflow/Nullness.qll | 2 +- .../ql/test/query-tests/Nullness/NullCheck.expected | 5 +---- csharp/ql/test/query-tests/Nullness/NullCheck.ql | 5 +++-- .../ql/test/query-tests/Nullness/NullMaybe.expected | 2 ++ 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 5492b2d5810..5f4c5c75246 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -776,6 +776,17 @@ class DereferenceableExpr extends Expr { or result = this.getANullnessNullCheck(v, isNull) } + + /** Holds if `guard` suggests that this expression may be `null`. */ + predicate guardSuggestsMaybeNull(Guards::Guard guard) { + guard = this.getANullnessNullCheck(_, true) + or + LogicInput::additionalNullCheck(guard, _, this, true) + or + guard.isEquality(this, any(Expr n | nullValueImplied(n)), _) + or + Guards::nullGuard(guard, any(GuardValue v | exists(v.asBooleanValue())), this, true) + } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 6e36008ab2e..55c0324e7c5 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -193,7 +193,7 @@ private predicate defMaybeNull( ( // A variable compared to `null` might be `null` exists(G::DereferenceableExpr de | de = def.getARead() | - reason = de.getANullCheck(_, true) and + de.guardSuggestsMaybeNull(reason) and msg = "as suggested by $@ null check" and node = def.getControlFlowNode() and not de = any(Ssa::PhiNode phi).getARead() and diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index 5161037eba0..ad941d2ae07 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -33,8 +33,6 @@ | C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | | C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | | C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | -| C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | -| C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | | C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | | C.cs:113:22:113:36 | ... == ... | C.cs:113:33:113:36 | null | | C.cs:120:13:120:28 | ... == ... | C.cs:120:13:120:20 | access to local variable children | @@ -144,8 +142,7 @@ | E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | | E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | | E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | -| Forwarding.cs:19:14:19:23 | call to method IsNull | Forwarding.cs:19:14:19:14 | access to local variable s | -| Forwarding.cs:24:13:24:25 | call to method IsNotNull | Forwarding.cs:24:13:24:13 | access to local variable s | +| E.cs:447:23:447:35 | ... is ... | E.cs:447:23:447:23 | access to parameter s | | Forwarding.cs:45:66:45:75 | call to method IsNull | Forwarding.cs:45:66:45:66 | access to parameter o | | Forwarding.cs:59:13:59:21 | ... == ... | Forwarding.cs:59:13:59:13 | access to parameter o | | Forwarding.cs:78:16:78:39 | call to method ReferenceEquals | Forwarding.cs:78:32:78:32 | access to parameter o | diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.ql b/csharp/ql/test/query-tests/Nullness/NullCheck.ql index 0635ae823e7..5ab3414b971 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.ql +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.ql @@ -1,5 +1,6 @@ import csharp import semmle.code.csharp.controlflow.Guards -from DereferenceableExpr de -select de.getANullCheck(_, true), de +from DereferenceableExpr de, Guards::Guard reason +where de.guardSuggestsMaybeNull(reason) +select reason, de diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index ce9b6d8b182..6a0d8372e3e 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -57,7 +57,9 @@ | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | | E.cs:444:13:444:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:23:437:31 | ... is ... | this | +| E.cs:444:13:444:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:447:23:447:35 | ... is ... | this | | E.cs:459:13:459:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:437:23:437:31 | ... is ... | this | +| E.cs:459:13:459:13 | access to parameter s | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:435:29:435:29 | s | s | E.cs:447:23:447:35 | ... is ... | this | | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | From 84b8b1c01fe46288146652e77734ca7abdc928d8 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 17 Oct 2025 12:00:21 +0200 Subject: [PATCH 433/965] C#: Minor test tweak. --- csharp/ql/test/query-tests/Nullness/C.cs | 2 +- csharp/ql/test/query-tests/Nullness/NullCheck.expected | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/csharp/ql/test/query-tests/Nullness/C.cs b/csharp/ql/test/query-tests/Nullness/C.cs index 405dceb74d5..8c6a0226f36 100644 --- a/csharp/ql/test/query-tests/Nullness/C.cs +++ b/csharp/ql/test/query-tests/Nullness/C.cs @@ -74,7 +74,7 @@ public class C public void TestNull() { - object o = null; + object o = Maybe() ? null : new object(); if (IsNotNull(o)) o.ToString(); // GOOD diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index ad941d2ae07..67cf5107ca3 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -33,6 +33,8 @@ | C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | | C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | | C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | +| C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | +| C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | | C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | | C.cs:113:22:113:36 | ... == ... | C.cs:113:33:113:36 | null | | C.cs:120:13:120:28 | ... == ... | C.cs:120:13:120:20 | access to local variable children | From 7ad570b5f5953247fe1caf865d9d4f864b538af0 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 29 Oct 2025 12:03:32 +0000 Subject: [PATCH 434/965] Pretty print models in test Otherwise the test output changes when unrelated models are added. --- .../examples/NonceReuse/NonceReuse.expected | 47 ++++++++++--------- .../examples/NonceReuse/NonceReuse.qlref | 3 +- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected index cf03a9053eb..ab2ca44ada4 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected @@ -1,3 +1,8 @@ +#select +| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | +| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | +| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | +| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | edges | Test.java:19:38:19:40 | val : byte[] | Test.java:20:16:20:18 | val : byte[] | provenance | | | Test.java:20:16:20:18 | val : byte[] | Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | provenance | | @@ -11,38 +16,41 @@ edges | Test.java:33:16:33:18 | val : byte[] | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:33:16:33:18 | val : byte[] | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:36:32:36:40 | iv : byte[] | Test.java:37:54:37:55 | iv : byte[] | provenance | | -| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | Test.java:46:54:46:55 | iv : byte[] | provenance | | -| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | Test.java:55:54:55:55 | iv : byte[] | provenance | | -| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | Test.java:64:54:64:55 | iv : byte[] | provenance | | -| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | Test.java:73:55:73:56 | iv : byte[] | provenance | | -| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:45890 | +| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:1 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:79:55:79:56 | iv : byte[] | provenance | | -| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:45890 | +| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:1 | | Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:88:38:88:39 | iv : byte[] | Test.java:89:54:89:55 | iv : byte[] | provenance | | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:45890 | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:1 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:1 | | Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:103:38:103:39 | iv : byte[] | Test.java:104:54:104:55 | iv : byte[] | provenance | | -| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | +models +| 1 | Sink: javax.crypto; Cipher; true; init; (int,Key,AlgorithmParameterSpec); ; Argument[2]; encryption-iv; manual | +| 2 | Summary: javax.crypto.spec; IvParameterSpec; true; IvParameterSpec; ; ; Argument[0]; Argument[this]; taint; manual | nodes | Test.java:19:38:19:40 | val : byte[] | semmle.label | val : byte[] | | Test.java:20:16:20:18 | val : byte[] | semmle.label | val : byte[] | @@ -84,8 +92,3 @@ nodes | Test.java:104:54:104:55 | iv : byte[] | semmle.label | iv : byte[] | | Test.java:107:47:107:52 | ivSpec | semmle.label | ivSpec | subpaths -#select -| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | -| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | -| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | -| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref index 6f8aa4b838b..9658a376bb9 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref @@ -1 +1,2 @@ -experimental/quantum/Examples/ReusedNonce.ql \ No newline at end of file +query: experimental/quantum/Examples/ReusedNonce.ql +postprocess: utils/test/PrettyPrintModels.ql From 8b3e62652c5c8097ea3a2fd51bd04e713e8e91a2 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 12:24:28 +0200 Subject: [PATCH 435/965] Guards: Only prune actually trivial guards. --- shared/controlflow/codeql/controlflow/Guards.qll | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 74fefbb4e39..52c43537ca6 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -362,6 +362,12 @@ module Make< v.asConstantValue() = c.asConstantValue() } + private predicate trivialHasValue(Expr e, GuardValue v) { + constantHasValue(e, v) + or + e instanceof NonNullExpr and v.isNonNullValue() + } + private predicate exceptionBranchPoint(BasicBlock bb1, BasicBlock normalSucc, BasicBlock excSucc) { exists(SuccessorType norm, ExceptionSuccessor exc | bb1.getASuccessor(norm) = normalSucc and @@ -815,7 +821,7 @@ module Make< v2.isNonNullValue() ) ) and - not exprHasValue(g2, v2) // disregard trivial guard + not trivialHasValue(g2, v2) // disregard trivial guard } bindingset[g1, v1] @@ -838,7 +844,7 @@ module Make< // g1 === ... ? e : g2 g2 = getBranchExpr(cond, branch.booleanNot()) and v2 = v1 and - not exprHasValue(g2, v2) // disregard trivial guard + not trivialHasValue(g2, v2) // disregard trivial guard ) } @@ -847,7 +853,7 @@ module Make< private predicate impliesStepSsaGuard(SsaDefinition def1, GuardValue v1, Guard g2, GuardValue v2) { def1.(SsaExplicitWrite).getValue() = g2 and v1 = v2 and - not exprHasValue(g2, v2) // disregard trivial guard + not trivialHasValue(g2, v2) // disregard trivial guard or exists(Expr e, GuardValue ev | guardDeterminesPhiInput(g2, v2.getDualValue(), def1, e) and @@ -1097,7 +1103,7 @@ module Make< call.getMethod() = wrapperGuard(ppos, v1, v2) and call.getArgument(apos) = g2 and parameterMatch(pragma[only_bind_out](ppos), pragma[only_bind_out](apos)) and - not exprHasValue(g2, v2) // disregard trivial guard + not trivialHasValue(g2, v2) // disregard trivial guard ) } } From 7241bedf0590f124f9c495066e478e2b5c2f9176 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 12:25:49 +0200 Subject: [PATCH 436/965] C#: Replace Guards with the new implementation. --- csharp/ql/lib/semmle/code/csharp/Caching.qll | 3 - .../semmle/code/csharp/controlflow/Guards.qll | 1108 +-------------- .../dataflow/internal/DataFlowPrivate.qll | 3 +- .../controlflow/guards/AbstractValue.expected | 1186 ++++++++++++----- .../controlflow/guards/AbstractValue.ql | 8 +- .../Nullness/EqualityCheck.expected | 14 +- .../query-tests/Nullness/EqualityCheck.ql | 5 +- .../test/query-tests/Nullness/Forwarding.cs | 2 +- .../query-tests/Nullness/NullAlways.expected | 1 + 9 files changed, 888 insertions(+), 1442 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Caching.qll b/csharp/ql/lib/semmle/code/csharp/Caching.qll index 4e34f5504dc..50a789f7989 100644 --- a/csharp/ql/lib/semmle/code/csharp/Caching.qll +++ b/csharp/ql/lib/semmle/code/csharp/Caching.qll @@ -10,7 +10,6 @@ module Stages { cached module ControlFlowStage { private import semmle.code.csharp.controlflow.internal.Splitting - private import semmle.code.csharp.controlflow.Guards as Guards cached predicate forceCachingInSameStage() { any() } @@ -21,8 +20,6 @@ module Stages { or exists(ControlFlow::Node n) or - Guards::Internal::isCustomNullCheck(_, _, _, _) - or forceCachingInSameStageRev() } } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 5f4c5c75246..654d2700d54 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -293,9 +293,7 @@ private module LogicInput implements GuardsImpl::LogicInputSig { module Guards = GuardsImpl::Logic; /** An expression whose value may control the execution of another element. */ -class Guard extends Expr { - Guard() { isGuard(this, _) } - +class Guard extends Guards::Guard { /** * Holds if `cfn` is guarded by this expression having value `v`, where `sub` is * a sub expression of this expression that is structurally equal to the expression @@ -323,229 +321,39 @@ class Guard extends Expr { */ predicate controlsBasicBlock(BasicBlock bb, AbstractValue v) { guardControls(this, bb, v) } - /** - * Holds if this guard is an equality test between `e1` and `e2`. If the test is - * negated, that is `!=`, then `polarity` is false, otherwise `polarity` is - * true. - */ - predicate isEquality(Expr e1, Expr e2, boolean polarity) { - exists(BooleanValue v | - this = getAnEqualityCheck(e1, v, e2) and - polarity = v.getValue() - ) - } - /** * Gets a valid value for this guard. For example, if this guard is a test, then * it can have Boolean values `true` and `false`. */ - AbstractValue getAValue() { isGuard(this, result) } + deprecated AbstractValue getAValue() { isGuard(this, result) } } -/** An abstract value. */ -abstract class AbstractValue extends TAbstractValue { - /** Holds if the `s` branch out of `cfe` is taken iff `e` has this value. */ - abstract predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e); - - /** Gets an abstract value that represents the dual of this value, if any. */ - abstract AbstractValue getDualValue(); - - /** - * Gets an expression that has this abstract value. Two expressions that have the - * same concrete value also have the same abstract value, but not necessarily the - * other way around. - * - * Moreover, `e = this.getAnExpr() implies not e = this.getDualValue().getAnExpr()`. - */ - abstract Expr getAnExpr(); - - /** - * Holds if this is a singleton abstract value. That is, two expressions that have - * this abstract value also have the same concrete value. - */ - abstract predicate isSingleton(); - - /** - * Holds if this value describes a referential property. For example, emptiness - * of a collection is a referential property. - * - * Such values only propagate through adjacent reads, for example, in - * - * ```csharp - * int M() - * { - * var x = new string[]{ "a", "b", "c" }.ToList(); - * x.Clear(); - * return x.Count; - * } - * ``` - * - * the non-emptiness of `new string[]{ "a", "b", "c" }.ToList()` only propagates - * to the read of `x` in `x.Clear()` and not in `x.Count`. - * - * Aliasing is not taken into account in the analyses. - */ - predicate isReferentialProperty() { none() } - - /** Gets a textual representation of this abstract value. */ - abstract string toString(); -} +class AbstractValue = GuardValue; /** Provides different types of `AbstractValues`s. */ module AbstractValues { - /** A Boolean value. */ - class BooleanValue extends AbstractValue, TBooleanValue { - /** Gets the underlying Boolean value. */ - boolean getValue() { this = TBooleanValue(result) } + class BooleanValue extends AbstractValue { + BooleanValue() { exists(this.asBooleanValue()) } - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { - s.(BooleanSuccessor).getValue() = this.getValue() and - exists(BooleanCompletion c | s = c.getAMatchingSuccessorType() | - c.isValidFor(cfe) and - e = cfe - ) - } - - override BooleanValue getDualValue() { result.getValue() = this.getValue().booleanNot() } - - override Expr getAnExpr() { - result.getType() instanceof BoolType and - result.getValue() = this.getValue().toString() - } - - override predicate isSingleton() { any() } - - override string toString() { result = this.getValue().toString() } + boolean getValue() { this.asBooleanValue() = result } } - /** An integer value. */ - class IntegerValue extends AbstractValue, TIntegerValue { - /** Gets the underlying integer value. */ - int getValue() { this = TIntegerValue(result) } + class IntegerValue extends AbstractValue { + IntegerValue() { exists(this.asIntValue()) } - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { none() } - - override IntegerValue getDualValue() { none() } - - override Expr getAnExpr() { - result.getValue().toInt() = this.getValue() and - ( - result.getType() instanceof Enum - or - result.getType() instanceof IntegralType - ) - } - - override predicate isSingleton() { any() } - - override string toString() { result = this.getValue().toString() } + int getValue() { this.asIntValue() = result } } - /** A value that is either `null` or non-`null`. */ - class NullValue extends AbstractValue, TNullValue { - /** Holds if this value represents `null`. */ - predicate isNull() { this = TNullValue(true) } + class NullValue extends AbstractValue { + NullValue() { this.isNullness(_) } - /** Holds if this value represents non-`null`. */ - predicate isNonNull() { this = TNullValue(false) } + predicate isNull() { this.isNullValue() } - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { - this = TNullValue(s.(NullnessSuccessor).getValue()) and - exists(NullnessCompletion c | s = c.getAMatchingSuccessorType() | - c.isValidFor(cfe) and - e = cfe - ) - } + predicate isNonNull() { this.isNonNullValue() } - override NullValue getDualValue() { - if this.isNull() then result.isNonNull() else result.isNull() - } - - override DereferenceableExpr getAnExpr() { + DereferenceableExpr getAnExpr() { if this.isNull() then nullValueImplied(result) else nonNullValueImplied(result) } - - override predicate isSingleton() { this.isNull() } - - override string toString() { if this.isNull() then result = "null" else result = "non-null" } - } - - /** A value that represents match or non-match against a specific pattern. */ - class MatchValue extends AbstractValue, TMatchValue { - /** Gets the case. */ - Case getCase() { this = TMatchValue(result, _) } - - /** Holds if this value represents a match. */ - predicate isMatch() { this = TMatchValue(_, true) } - - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { - this = TMatchValue(_, s.(MatchingSuccessor).getValue()) and - exists(MatchingCompletion c, Switch switch, Case case | s = c.getAMatchingSuccessorType() | - c.isValidFor(cfe) and - switchMatching(switch, case, cfe) and - e = switch.getExpr() and - case = this.getCase() - ) - } - - override MatchValue getDualValue() { - result = - any(MatchValue mv | - mv.getCase() = this.getCase() and - if this.isMatch() then not mv.isMatch() else mv.isMatch() - ) - } - - override Expr getAnExpr() { none() } - - override predicate isSingleton() { none() } - - override string toString() { - exists(string s | s = this.getCase().getPattern().toString() | - if this.isMatch() then result = "match " + s else result = "non-match " + s - ) - } - } - - /** A value that represents an empty or non-empty collection. */ - class EmptyCollectionValue extends AbstractValue, TEmptyCollectionValue { - /** Holds if this value represents an empty collection. */ - predicate isEmpty() { this = TEmptyCollectionValue(true) } - - /** Holds if this value represents a non-empty collection. */ - predicate isNonEmpty() { this = TEmptyCollectionValue(false) } - - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { - this = TEmptyCollectionValue(s.(EmptinessSuccessor).getValue()) and - exists(EmptinessCompletion c, ForeachStmt fs | s = c.getAMatchingSuccessorType() | - c.isValidFor(cfe) and - foreachEmptiness(fs, cfe) and - e = fs.getIterableExpr() - ) and - // Only when taking the non-empty successor do we know that the original iterator - // expression was non-empty. When taking the empty successor, we may have already - // iterated through the `foreach` loop zero or more times, hence the iterator - // expression can be both empty and non-empty - this.isNonEmpty() - } - - override EmptyCollectionValue getDualValue() { - if this.isEmpty() then result.isNonEmpty() else result.isEmpty() - } - - override Expr getAnExpr() { - this.isEmpty() and - emptyValue(result) - or - this.isNonEmpty() and - nonEmptyValue(result) - } - - override predicate isSingleton() { none() } - - override predicate isReferentialProperty() { any() } - - override string toString() { if this.isEmpty() then result = "empty" else result = "non-empty" } } } @@ -608,133 +416,6 @@ class DereferenceableExpr extends Expr { /** Holds if this expression has a nullable type `T?`. */ predicate hasNullableType() { isNullableType = true } - /** - * Gets an expression that directly tests whether this expression is `null`. - * - * If the returned expression evaluates to `v`, then this expression is - * guaranteed to be `null` if `isNull` is true, and non-`null` if `isNull` is - * false. - * - * For example, if the expression `x != null` evaluates to `true` then the - * expression `x` is guaranteed to be non-`null`. - */ - private Expr getABooleanNullCheck(BooleanValue v, boolean isNull) { - exists(boolean branch | branch = v.getValue() | - // Comparison with `null`, for example `x != null` - exists(ComparisonTest ct, ComparisonKind ck, Expr e | - ct.getExpr() = result and - ct.getAnArgument() = this and - ct.getAnArgument() = e and - e = any(NullValue nv | nv.isNull()).getAnExpr() and - this != e and - ck = ct.getComparisonKind() - | - ck.isEquality() and isNull = branch - or - ck.isInequality() and isNull = branch.booleanNot() - ) - or - // Comparison with a non-`null` value, for example `x?.Length > 0` - exists(ComparisonTest ct, ComparisonKind ck, Expr e | ct.getExpr() = result | - ct.getAnArgument() = this and - ct.getAnArgument() = e and - e = any(NullValue nv | nv.isNonNull()).getAnExpr() and - ck = ct.getComparisonKind() and - this != e and - isNull = false and - if ck.isInequality() then branch = false else branch = true - ) - or - // Call to `string.IsNullOrEmpty()` or `string.IsNullOrWhiteSpace()` - exists(MethodCall mc, string name | result = mc | - mc.getTarget() = any(SystemStringClass c).getAMethod(name) and - name.regexpMatch("IsNullOr(Empty|WhiteSpace)") and - mc.getArgument(0) = this and - branch = false and - isNull = false - ) - or - result = - any(PatternMatch pm | - this = pm.getExpr() and - ( - // E.g. `x is null` - pm.getPattern() instanceof NullLiteral and - isNull = branch - or - // E.g. `x is string` or `x is ""` - branch.booleanNot() = patternMatchesNull(pm.getPattern()) and - isNull = false - or - exists(TypePatternExpr tpe | - // E.g. `x is string` where `x` has type `string` - typePattern(result, tpe, tpe.getCheckedType()) and - branch = false and - isNull = true - ) - ) - ) - or - this.hasNullableType() and - result = - any(PropertyAccess pa | - pa.getQualifier() = this and - pa.getTarget().hasName("HasValue") and - if branch = true then isNull = false else isNull = true - ) - or - isCustomNullCheck(result, this, v, isNull) - ) - } - - /** - * Gets an expression that tests via matching whether this expression is `null`. - * - * If the returned expression matches (`v.isMatch()`) or non-matches - * (`not v.isMatch()`), then this expression is guaranteed to be `null` - * if `isNull` is true, and non-`null` if `isNull` is false. - * - * For example, if the case statement `case string s` matches in - * - * ```csharp - * switch (o) - * { - * case string s: - * return s; - * default: - * return ""; - * } - * ``` - * - * then `o` is guaranteed to be non-`null`. - */ - private Expr getAMatchingNullCheck(MatchValue v, boolean isNull) { - exists(Switch s, Case case | - case = v.getCase() and - this = s.getExpr() and - result = this and - case = s.getACase() - | - // E.g. `case string` - case.getPattern() instanceof TypePatternExpr and - v.isMatch() and - isNull = false - or - case.getPattern() = - any(ConstantPatternExpr cpe | - if cpe instanceof NullLiteral - then - // `case null` - if v.isMatch() then isNull = true else isNull = false - else ( - // E.g. `case ""` - v.isMatch() and - isNull = false - ) - ) - ) - } - /** * Gets an expression that tests via nullness whether this expression is `null`. * @@ -759,24 +440,6 @@ class DereferenceableExpr extends Expr { ) } - /** - * Gets an expression that tests whether this expression is `null`. - * - * If the returned expression has abstract value `v`, then this expression is - * guaranteed to be `null` if `isNull` is true, and non-`null` if `isNull` is - * false. - * - * For example, if the expression `x != null` evaluates to `true` then the - * expression `x` is guaranteed to be non-`null`. - */ - Expr getANullCheck(AbstractValue v, boolean isNull) { - result = this.getABooleanNullCheck(v, isNull) - or - result = this.getAMatchingNullCheck(v, isNull) - or - result = this.getANullnessNullCheck(v, isNull) - } - /** Holds if `guard` suggests that this expression may be `null`. */ predicate guardSuggestsMaybeNull(Guards::Guard guard) { guard = this.getANullnessNullCheck(_, true) @@ -955,6 +618,14 @@ private AssignableAccess getATrackedAccess(Ssa::Definition def, ControlFlow::Nod cfn = def.getControlFlowNode() } +private predicate ssaMustHaveValue(Expr e, GuardValue v) { + exists(Ssa::Definition def, BasicBlock bb | + e = def.getARead() and + e.getBasicBlock() = bb and + Guards::ssaControls(def, bb, v) + ) +} + /** * A guarded expression. * @@ -993,11 +664,7 @@ private AssignableAccess getATrackedAccess(Ssa::Definition def, ControlFlow::Nod * definition). */ class GuardedExpr extends AccessOrCallExpr { - private Guard g; - private AccessOrCallExpr sub0; - private AbstractValue v0; - - GuardedExpr() { isGuardedByExpr(this, g, sub0, v0) } + GuardedExpr() { isGuardedByExpr(this, _, _, _) or ssaMustHaveValue(this, _) } /** * Gets an expression that guards this expression. That is, this expression is @@ -1010,18 +677,16 @@ class GuardedExpr extends AccessOrCallExpr { * left-most qualifier, then so must the other (accessing the same SSA * variable). */ - Guard getAGuard(Expr sub, AbstractValue v) { - result = g and - sub = sub0 and - v = v0 - } + Guard getAGuard(Expr sub, AbstractValue v) { isGuardedByExpr(this, result, sub, v) } /** * Holds if this expression must have abstract value `v`. That is, this * expression is guarded by a structurally equal expression having abstract * value `v`. */ - predicate mustHaveValue(AbstractValue v) { g = this.getAGuard(g, v) } + predicate mustHaveValue(AbstractValue v) { + exists(Guard g | g = this.getAGuard(g, v)) or ssaMustHaveValue(this, v) + } /** * Holds if this expression is guarded by expression `cond`, which must @@ -1153,16 +818,6 @@ class NullGuardedDataFlowNode extends GuardedDataFlowNode { /** INTERNAL: Do not use. */ module Internal { - newtype TAbstractValue = - TBooleanValue(boolean b) { b = true or b = false } or - TIntegerValue(int i) { i = any(Expr e).getValue().toInt() } or - TNullValue(boolean b) { b = true or b = false } or - TMatchValue(Case c, boolean b) { - exists(c.getPattern()) and - (b = true or b = false) - } or - TEmptyCollectionValue(boolean b) { b = true or b = false } - /** Holds if expression `e` is a `null` value. */ predicate nullValue(Expr e) { e instanceof NullLiteral @@ -1280,22 +935,6 @@ module Internal { e = any(BinaryArithmeticOperation bao | result = bao.getAnOperand()) } - private Expr stripConditionalExpr(Expr e) { - e = - any(ConditionalExpr ce | - result = stripConditionalExpr(ce.getThen()) - or - result = stripConditionalExpr(ce.getElse()) - ) - or - not e instanceof ConditionalExpr and - result = e - } - - private predicate canReturn(Callable c, Expr ret) { - exists(Expr e | c.canReturn(e) | ret = stripConditionalExpr(e)) - } - // The predicates in this module should be evaluated in the same stage as the CFG // construction stage. This is to avoid recomputation of pre-basic-blocks and // pre-SSA predicates @@ -1303,416 +942,6 @@ module Internal { private import semmle.code.csharp.controlflow.internal.PreBasicBlocks as PreBasicBlocks private import semmle.code.csharp.controlflow.internal.PreSsa - /** - * Holds if pre-basic-block `bb` only is reached when guard `g` has abstract value `v`, - * not taking implications into account. - */ - pragma[nomagic] - private predicate preControlsDirect(Guard g, PreBasicBlocks::PreBasicBlock bb, AbstractValue v) { - exists(PreBasicBlocks::ConditionBlock cb, ConditionalSuccessor s | cb.controls(bb, s) | - v.branch(cb.getLastNode(), s, g) - ) - } - - pragma[nomagic] - private predicate preControlsDefDirect(Guard g, PreSsa::Definition def, AbstractValue v) { - preControlsDirect(g, def.getBasicBlock(), v) - } - - /** Holds if pre-basic-block `bb` only is reached when guard `g` has abstract value `v`. */ - predicate preControls(Guard g, PreBasicBlocks::PreBasicBlock bb, AbstractValue v) { - preControlsDirect(g, bb, v) - or - exists(AbstractValue v0, Guard g0 | - preControls(g0, bb, v0) and - preImpliesStep(g0, v0, g, v) - ) - } - - private class PreSsaImplicitParameterDefinition extends PreSsa::Definition { - private Parameter p; - - PreSsaImplicitParameterDefinition() { - p = this.getDefinition().(AssignableDefinitions::ImplicitParameterDefinition).getParameter() - } - - Parameter getParameter() { result = p } - - /** - * Holds if the callable that this parameter belongs to can return `ret`, but - * only if this parameter is `null` or non-`null`, as specified by `isNull`. - */ - predicate nullGuardedReturn(Expr ret, boolean isNull) { - canReturn(p.getCallable(), ret) and - exists(PreBasicBlocks::PreBasicBlock bb, NullValue nv | - preControls(this.getARead(), bb, nv) - | - ret = bb.getAnElement() and - if nv.isNull() then isNull = true else isNull = false - ) - } - } - - private predicate canReturnBool(Callable c, Expr ret) { - canReturn(c, ret) and - c.getReturnType() instanceof BoolType - } - - private predicate boolReturnImplies(Expr ret, BooleanValue retVal, Guard g, AbstractValue v) { - canReturnBool(_, ret) and - isGuard(ret, retVal) and - g = ret and - v = retVal - or - exists(Guard g0, AbstractValue v0 | - boolReturnImplies(ret, retVal, g0, v0) and - preImpliesStep(g0, v0, g, v) - ) - } - - /** - * Holds if `ret` is an expression returned by the callable to which parameter - * `p` belongs, and `ret` having Boolean value `retVal` allows the conclusion - * that the parameter `p` either is `null` or non-`null`, as specified by `isNull`. - */ - private predicate validReturnInCustomNullCheck( - Expr ret, Parameter p, BooleanValue retVal, boolean isNull - ) { - exists(Callable c | - canReturnBool(c, ret) and - p.getCallable() = c - ) and - exists(PreSsaImplicitParameterDefinition def | p = def.getParameter() | - def.nullGuardedReturn(ret, isNull) - or - exists(NullValue nv | boolReturnImplies(ret, retVal, def.getARead(), nv) | - if nv.isNull() then isNull = true else isNull = false - ) - ) - } - - /** - * Gets a non-overridable callable with a Boolean return value that performs a - * `null`-check on parameter `p`. A return value having Boolean value `retVal` - * allows us to conclude that the argument either is `null` or non-`null`, as - * specified by `isNull`. - */ - private Callable customNullCheck(Parameter p, BooleanValue retVal, boolean isNull) { - result.getReturnType() instanceof BoolType and - not result.(Overridable).isOverridableOrImplementable() and - p.getCallable() = result and - not p.isParams() and - p.getType() = any(Type t | t instanceof RefType or t instanceof NullableType) and - forex(Expr ret | - canReturn(result, ret) and - not ret.(BoolLiteral).getBoolValue() = retVal.getValue().booleanNot() - | - validReturnInCustomNullCheck(ret, p, retVal, isNull) - ) - } - - pragma[nomagic] - private predicate conditionalAssign0( - Guard guard, AbstractValue vGuard, PreSsa::PhiNode phi, Expr e, PreSsa::Definition upd, - PreBasicBlocks::PreBasicBlock bbGuard, PreBasicBlocks::PreBasicBlock bbPhi - ) { - e = upd.getDefinition().getSource() and - upd = phi.getAnInput() and - preControlsDefDirect(guard, upd, vGuard) and - bbGuard.getAnElement() = guard and - bbPhi = phi.getBasicBlock() - } - - pragma[noinline] - private predicate conditionalAssign1( - Guard guard, AbstractValue vGuard, PreSsa::PhiNode phi, Expr e, PreSsa::Definition upd, - PreBasicBlocks::PreBasicBlock bbGuard - ) { - exists(PreBasicBlocks::PreBasicBlock bbPhi | - conditionalAssign0(guard, vGuard, phi, e, upd, bbGuard, bbPhi) and - bbGuard.strictlyDominates(bbPhi) and - not preControlsDefDirect(guard, phi, vGuard) - ) - } - - pragma[noinline] - private predicate conditionalAssign2( - Guard guard, AbstractValue vGuard, PreSsa::PhiNode phi, Expr e, PreSsa::Definition upd, - PreBasicBlocks::PreBasicBlock bbGuard, PreSsa::Definition other - ) { - conditionalAssign1(guard, vGuard, phi, e, upd, bbGuard) and - other != upd and - other = phi.getAnInput() - } - - pragma[noinline] - private predicate conditionalAssign3( - Guard guard, AbstractValue vGuard, PreSsa::Definition def, Expr e, PreSsa::Definition upd, - PreBasicBlocks::PreBasicBlock bbGuard, PreSsa::Definition other - ) { - conditionalAssign2(guard, vGuard, def, e, upd, bbGuard, other) and - preControlsDefDirect(guard, other, vGuard.getDualValue()) - } - - /** Gets the successor block that is reached when guard `g` has abstract value `v`. */ - private PreBasicBlocks::PreBasicBlock getConditionalSuccessor(Guard g, AbstractValue v) { - exists(PreBasicBlocks::ConditionBlock pred, ConditionalSuccessor s | - v.branch(pred.getLastNode(), s, g) - | - result = pred.getASuccessor(s) - ) - } - - pragma[noinline] - private predicate conditionalAssign4( - Guard guard, AbstractValue vGuard, PreSsa::Definition def, Expr e, PreSsa::Definition upd, - PreBasicBlocks::PreBasicBlock bbGuard, PreSsa::Definition other - ) { - conditionalAssign2(guard, vGuard, def, e, upd, bbGuard, other) and - other.getBasicBlock().dominates(bbGuard) and - not other.isLiveAtEndOfBlock(getConditionalSuccessor(guard, vGuard)) - } - - /** - * Holds if the evaluation of `guard` to `vGuard` implies that `def` is assigned - * expression `e`. - */ - private predicate conditionalAssign( - Guard guard, AbstractValue vGuard, PreSsa::Definition def, Expr e - ) { - // For example: - // v = guard ? e : x; - exists(ConditionalExpr c | c = def.getDefinition().getSource() | - guard = c.getCondition() and - vGuard = - any(BooleanValue bv | - bv.getValue() = true and - e = c.getThen() - or - bv.getValue() = false and - e = c.getElse() - ) - ) - or - exists(PreSsa::Definition upd, PreBasicBlocks::PreBasicBlock bbGuard | - conditionalAssign1(guard, vGuard, def, e, upd, bbGuard) - | - forall(PreSsa::Definition other | - conditionalAssign2(guard, vGuard, def, e, upd, bbGuard, other) - | - // For example: - // if (guard) - // upd = a; - // else - // other = b; - // def = phi(upd, other) - conditionalAssign3(guard, vGuard, def, e, upd, bbGuard, other) - or - // For example: - // other = a; - // if (guard) - // upd = b; - // def = phi(other, upd) - conditionalAssign4(guard, vGuard, def, e, upd, bbGuard, other) - ) - ) - } - - /** - * Holds if the evaluation of `guard` to `vGuard` implies that `def` is assigned - * an expression with abstract value `vDef`. - */ - private predicate conditionalAssignVal( - Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef - ) { - conditionalAssign(guard, vGuard, def, vDef.getAnExpr()) - } - - pragma[noinline] - private predicate relevantEq(PreSsa::Definition def, AbstractValue v, AssignableRead ar) { - conditionalAssignVal(_, _, def, v) and - ar = def.getARead() - } - - /** - * Gets an expression that directly tests whether expression `e1` is equal - * to expression `e2`. - * - * If the returned expression evaluates to `v`, then expression `e1` is - * guaranteed to be equal to `e2`, otherwise it is guaranteed to not be - * equal to `e2`. - * - * For example, if the expression `x != ""` evaluates to `false` then the - * expression `x` is guaranteed to be equal to `""`. - */ - private Expr getABooleanEqualityCheck(Expr e1, BooleanValue v, Expr e2) { - exists(boolean branch | branch = v.getValue() | - exists(ComparisonTest ct, ComparisonKind ck | - ct.getExpr() = result and - ct.getAnArgument() = e1 and - ct.getAnArgument() = e2 and - e2 != e1 and - ck = ct.getComparisonKind() - | - ck.isEquality() and branch = true - or - ck.isInequality() and branch = false - ) - or - result = - any(IsExpr ie | - ie.getExpr() = e1 and - e2 = ie.getPattern().(ConstantPatternExpr) and - branch = true - ) - ) - } - - /** - * Gets an expression that tests via matching whether expression `e1` is equal - * to expression `e2`. - * - * If the returned expression matches (`v.isMatch()`), then expression `e1` is - * guaranteed to be equal to `e2`. If the returned expression non-matches - * (`not v.isMatch()`), then this expression is guaranteed to not be equal to `e2`. - * - * For example, if the case statement `case ""` matches in - * - * ```csharp - * switch (o) - * { - * case "": - * return s; - * default: - * return ""; - * } - * ``` - * - * then `o` is guaranteed to be equal to `""`. - */ - private Expr getAMatchingEqualityCheck(Expr e1, MatchValue v, Expr e2) { - exists(Switch s, Case case | case = v.getCase() | - e1 = s.getExpr() and - result = e1 and - case = s.getACase() and - e2 = case.getPattern().(ConstantPatternExpr) and - v.isMatch() - ) - } - - pragma[nomagic] - private Expr getAnEqualityCheckVal(Expr e, AbstractValue v, AbstractValue vExpr) { - result = getAnEqualityCheck(e, v, vExpr.getAnExpr()) - } - - /** - * Holds if the evaluation of `guard` to `vGuard` implies that `def` does not - * have the value `vDef`. - */ - private predicate guardImpliesNotEqual( - Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef - ) { - exists(AssignableRead ar | relevantEq(def, vDef, ar) | - // For example: - // if (de == null); vGuard = TBooleanValue(false); vDef = TNullValue(true) - // but not - // if (de == "abc"); vGuard = TBooleanValue(false); vDef = TNullValue(false) - guard = getAnEqualityCheckVal(ar, vGuard.getDualValue(), vDef) and - vDef.isSingleton() - or - // For example: - // if (de != null); vGuard = TBooleanValue(true); vDef = TNullValue(true) - // or - // if (de == null); vGuard = TBooleanValue(true); vDef = TNullValue(false) - exists(NullValue nv | - guard = - ar.(DereferenceableExpr).getANullCheck(vGuard, any(boolean b | nv = TNullValue(b))) - | - vDef = nv.getDualValue() - ) - or - // For example: - // if (de == false); vGuard = TBooleanValue(true); vDef = TBooleanValue(true) - guard = getAnEqualityCheckVal(ar, vGuard, vDef.getDualValue()) - ) - } - - /** - * Holds if `def` can have a value that is not representable as an - * abstract value. - */ - private predicate hasPossibleUnknownValue(PreSsa::Definition def) { - exists(PreSsa::Definition input | input = def.getAnUltimateDefinition() | - not exists(input.getDefinition().getSource()) - or - exists(Expr e | e = stripConditionalExpr(input.getDefinition().getSource()) | - not e = any(AbstractValue v).getAnExpr() - ) - ) - } - - /** - * Gets an ultimate definition of `def` that is not itself a phi node. The - * boolean `fromBackEdge` indicates whether the flow from `result` to `def` - * goes through a back edge. - */ - private PreSsa::Definition getADefinition(PreSsa::Definition def, boolean fromBackEdge) { - result = def and - not def instanceof PreSsa::PhiNode and - fromBackEdge = false - or - exists(PreSsa::Definition input, PreBasicBlocks::PreBasicBlock pred, boolean fbe | - input = def.(PreSsa::PhiNode).getAnInput() - | - pred = def.getBasicBlock().getAPredecessor() and - input.isLiveAtEndOfBlock(pred) and - result = getADefinition(input, fbe) and - (if def.getBasicBlock().dominates(pred) then fromBackEdge = true else fromBackEdge = fbe) - ) - } - - /** - * Holds if `e` has abstract value `v` and may be assigned to `def`. The Boolean - * `fromBackEdge` indicates whether the flow from `e` to `def` goes through a - * back edge. - */ - private predicate possibleValue( - PreSsa::Definition def, boolean fromBackEdge, Expr e, AbstractValue v - ) { - not hasPossibleUnknownValue(def) and - exists(PreSsa::Definition input | input = getADefinition(def, fromBackEdge) | - e = stripConditionalExpr(input.getDefinition().getSource()) and - v.getAnExpr() = e - ) - } - - private predicate nonUniqueValue(PreSsa::Definition def, Expr e, AbstractValue v) { - possibleValue(def, false, e, v) and - possibleValue(def, _, any(Expr other | other != e), v) - } - - /** - * Holds if `e` has abstract value `v` and may be assigned to `def` without going - * through back edges, and all other possible ultimate definitions of `def` do not - * have abstract value `v`. The trivial case where `def` is an explicit update with - * source `e` is excluded. - */ - private predicate uniqueValue(PreSsa::Definition def, Expr e, AbstractValue v) { - possibleValue(def, false, e, v) and - not nonUniqueValue(def, e, v) and - exists(Expr other | possibleValue(def, _, other, _) and other != e) - } - - /** - * Holds if `guard` having abstract value `vGuard` implies that `def` has - * abstract value `vDef`. - */ - private predicate guardImpliesEqual( - Guard guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef - ) { - guard = getAnEqualityCheck(def.getARead(), vGuard, vDef.getAnExpr()) - } - private predicate nullDef(PreSsa::Definition def) { nullValueImplied(def.getDefinition().getSource()) } @@ -1729,64 +958,25 @@ module Internal { nonEmptyValue(def.getDefinition().getSource()) } + deprecated predicate isGuard(Expr e, AbstractValue val) { + ( + e.getType() instanceof BoolType and + not e instanceof BoolLiteral and + not e instanceof SwitchCaseExpr and + not e instanceof PatternExpr and + exists(val.asBooleanValue()) + or + e instanceof DereferenceableExpr and + val.isNullness(_) + ) and + not e = any(ExprStmt es).getExpr() and + not e = any(LocalVariableDeclStmt s).getAVariableDeclExpr() + } + cached private module CachedWithCfg { private import semmle.code.csharp.Caching - cached - predicate isGuard(Expr e, AbstractValue val) { - Stages::ControlFlowStage::forceCachingInSameStage() and - ( - e.getType() instanceof BoolType and - not e instanceof BoolLiteral and - not e instanceof SwitchCaseExpr and - not e instanceof PatternExpr and - val = TBooleanValue(_) - or - e instanceof DereferenceableExpr and - val = TNullValue(_) - or - val.branch(_, _, e) - or - e instanceof EnumerableCollectionExpr and - val = TEmptyCollectionValue(_) - ) and - not e = any(ExprStmt es).getExpr() and - not e = any(LocalVariableDeclStmt s).getAVariableDeclExpr() - } - - /** - * Gets an expression that tests whether expression `e1` is equal to - * expression `e2`. - * - * If the returned expression has abstract value `v`, then expression `e1` is - * guaranteed to be equal to `e2`, and if the returned expression has abstract - * value `v.getDualValue()`, then this expression is guaranteed to be - * non-equal to `e`. - * - * For example, if the expression `x != ""` evaluates to `false` then the - * expression `x` is guaranteed to be equal to `""`. - */ - cached - Expr getAnEqualityCheck(Expr e1, AbstractValue v, Expr e2) { - result = getABooleanEqualityCheck(e1, v, e2) - or - result = getABooleanEqualityCheck(e2, v, e1) - or - result = getAMatchingEqualityCheck(e1, v, e2) - or - result = getAMatchingEqualityCheck(e2, v, e1) - } - - cached - predicate isCustomNullCheck(Call call, Expr arg, BooleanValue v, boolean isNull) { - exists(Callable callable, Parameter p | - arg = call.getArgumentForParameter(any(Parameter p0 | p0.getUnboundDeclaration() = p)) and - call.getTarget().getUnboundDeclaration() = callable and - callable = customNullCheck(p, v, isNull) - ) - } - private predicate firstReadSameVarUniquePredecessor( PreSsa::Definition def, AssignableRead read ) { @@ -1798,156 +988,6 @@ module Internal { ) } - /** - * Holds if the assumption that `g1` has abstract value `v1` implies that - * `g2` has abstract value `v2`, using one step of reasoning. That is, the - * evaluation of `g2` to `v2` dominates the evaluation of `g1` to `v1`. - * - * This predicate does not rely on the control flow graph. - */ - cached - predicate preImpliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { - g1 = - any(BinaryOperation bo | - ( - bo instanceof BitwiseAndExpr or - bo instanceof LogicalAndExpr - ) and - g2 = bo.getAnOperand() and - v1 = TBooleanValue(true) and - v2 = v1 - ) - or - g1 = - any(BinaryOperation bo | - ( - bo instanceof BitwiseOrExpr or - bo instanceof LogicalOrExpr - ) and - g2 = bo.getAnOperand() and - v1 = TBooleanValue(false) and - v2 = v1 - ) - or - g2 = g1.(LogicalNotExpr).getOperand() and - v2 = TBooleanValue(v1.(BooleanValue).getValue().booleanNot()) - or - exists(ComparisonTest ct, boolean polarity, BoolLiteral boolLit, boolean b | - ct.getAnArgument() = boolLit and - b = boolLit.getBoolValue() and - g2 = ct.getAnArgument() and - g1 = ct.getExpr() and - v2 = TBooleanValue(v1.(BooleanValue).getValue().booleanXor(polarity).booleanXor(b)) - | - ct.getComparisonKind().isEquality() and - polarity = true - or - ct.getComparisonKind().isInequality() and - polarity = false - ) - or - exists(ConditionalExpr cond, boolean branch, Expr e, AbstractValue v | - e = v.getAnExpr() and - ( - cond.getThen() = e and branch = true - or - cond.getElse() = e and branch = false - ) - | - g1 = cond and - v1 = v.getDualValue() and - ( - // g1 === g2 ? e : ...; - g2 = cond.getCondition() and - v2 = TBooleanValue(branch.booleanNot()) - or - // g1 === ... ? g2 : e - g2 = cond.getThen() and - branch = false and - v2 = v1 - or - // g1 === g2 ? ... : e - g2 = cond.getElse() and - branch = true and - v2 = v1 - ) - ) - or - isGuard(g1, v1) and - v1 = - any(MatchValue mv | - mv.isMatch() and - g2 = g1 and - v2.getAnExpr() = mv.getCase().getPattern().(ConstantPatternExpr) and - v1 != v2 - ) - or - exists(boolean isNull | g1 = g2.(DereferenceableExpr).getANullCheck(v1, isNull) | - v2 = any(NullValue nv | if nv.isNull() then isNull = true else isNull = false) and - (g1 != g2 or v1 != v2) - ) - or - exists(boolean isEmpty | - g1 = g2.(EnumerableCollectionExpr).getAnEmptinessCheck(v1, isEmpty) - | - v2 = - any(EmptyCollectionValue ecv | if ecv.isEmpty() then isEmpty = true else isEmpty = false) and - g1 != g2 - ) - or - g1 instanceof DereferenceableExpr and - g1 = getNullEquivParent(g2) and - v1 instanceof NullValue and - v2 = v1 - or - g1 instanceof DereferenceableExpr and - g2 = getANullImplyingChild(g1) and - v1.(NullValue).isNonNull() and - v2 = v1 - or - g2 = g1.(AssignExpr).getRValue() and - isGuard(g1, v1) and - v2 = v1 - or - g2 = g1.(Assignment).getLValue() and - isGuard(g1, v1) and - v2 = v1 - or - g2 = g1.(CastExpr).getExpr() and - isGuard(g1, v1) and - v2 = v1.(NullValue) - or - exists(PreSsa::Definition def | - def.getDefinition().getSource() = g2 and - g1 = def.getARead() and - isGuard(g1, v1) and - v2 = v1 and - if v1.isReferentialProperty() then firstReadSameVarUniquePredecessor(def, g1) else any() - ) - or - exists(PreSsa::Definition def, AbstractValue v | - // If for example `def = g2 ? v : ...`, then a guard `g1` proving `def != v` - // ensures that `g2` evaluates to `false`. - conditionalAssignVal(g2, v2.getDualValue(), def, v) and - guardImpliesNotEqual(g1, v1, def, v) - ) - or - exists(PreSsa::Definition def, Expr e, AbstractValue v | - // If for example `def = g2 ? v : ...` and all other assignments to `def` are - // different from `v`, then a guard proving `def == v` ensures that `g2` - // evaluates to `true`. - uniqueValue(def, e, v) and - guardImpliesEqual(g1, v1, def, v) and - preControlsDirect(g2, any(PreBasicBlocks::PreBasicBlock bb | e = bb.getAnElement()), v2) and - not preControlsDirect(g2, any(PreBasicBlocks::PreBasicBlock bb | g1 = bb.getAnElement()), - v2) - ) - or - g2 = g1.(NullCoalescingExpr).getAnOperand() and - v1.(NullValue).isNull() and - v2 = v1 - } - cached predicate nullValueImplied(Expr e) { nullValue(e) @@ -2153,14 +1193,7 @@ module Internal { */ cached predicate guardControls(Guard g, BasicBlock bb, AbstractValue v) { - exists(ControlFlowElement cfe, ConditionalSuccessor cs | - v.branch(cfe, cs, g) and cfe.controlsBlock(bb, cs, _) - ) - or - exists(AbstractValue v0, Guard g0 | - guardControls(g0, bb, v0) and - impliesStep(g0, v0, g, v) - ) + g.(Guards::Guard).valueControls(bb, v) } pragma[nomagic] @@ -2214,21 +1247,6 @@ module Internal { ) } - private predicate adjacentReadPairSameVarUniquePredecessor( - Ssa::Definition def, ControlFlow::Node cfn1, ControlFlow::Node cfn2 - ) { - SsaImpl::adjacentReadPairSameVar(def, cfn1, cfn2) and - ( - cfn1 = cfn2 and - cfn1 = unique(ControlFlow::Node other | SsaImpl::adjacentReadPairSameVar(def, other, cfn2)) - or - cfn1 = - unique(ControlFlow::Node other | - SsaImpl::adjacentReadPairSameVar(def, other, cfn2) and other != cfn2 - ) - ) - } - pragma[noinline] private predicate isGuardedByExpr0( AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v @@ -2246,12 +1264,7 @@ module Internal { forall(ControlFlow::Node subCfn, Ssa::Definition def | nodeIsGuardedBySameSubExprSsaDef(_, guarded, g, subCfn, sub, v, def) | - exists(ControlFlow::Node guardedCfn | - def = guarded.getAnSsaQualifier(guardedCfn) and - if v.isReferentialProperty() - then adjacentReadPairSameVarUniquePredecessor(def, subCfn, guardedCfn) - else any() - ) + def = guarded.getAnSsaQualifier(_) ) } @@ -2267,38 +1280,7 @@ module Internal { guarded .getAstNode() .(AccessOrCallExpr) - .getAnSsaQualifier(guarded.getBasicBlock().getANode()) and - if v.isReferentialProperty() - then adjacentReadPairSameVarUniquePredecessor(def, subCfn, guarded) - else any() - ) - } - - private predicate firstReadUniquePredecessor(Ssa::ExplicitDefinition def, ControlFlow::Node cfn) { - exists(def.getAFirstReadAtNode(cfn)) and - not exists(ControlFlow::Node other | - SsaImpl::adjacentReadPairSameVar(def, other, cfn) and - other != cfn - ) - } - - /** - * Holds if the assumption that `g1` has abstract value `v1` implies that - * `g2` has abstract value `v2`, using one step of reasoning. That is, the - * evaluation of `g2` to `v2` dominates the evaluation of `g1` to `v1`. - * - * This predicate relies on the control flow graph. - */ - private predicate impliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { - preImpliesStep(g1, v1, g2, v2) - or - forex(ControlFlow::Node cfn1 | cfn1 = g1.getAControlFlowNode() | - exists(Ssa::ExplicitDefinition def | def.getADefinition().getSource() = g2 | - g1 = def.getAReadAtNode(cfn1) and - isGuard(g1, v1) and - v2 = v1 and - if v1.isReferentialProperty() then firstReadUniquePredecessor(def, cfn1) else any() - ) + .getAnSsaQualifier(guarded.getBasicBlock().getANode()) ) } } 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 62ac89faef8..f4a76b2f577 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -2906,7 +2906,8 @@ class DataFlowExpr = Expr; /** Holds if `e` is an expression that always has the same Boolean value `val`. */ private predicate constantBooleanExpr(Expr e, boolean val) { - e = any(AbstractValues::BooleanValue bv | val = bv.getValue()).getAnExpr() + e.getType() instanceof BoolType and + e.getValue() = val.toString() or exists(Ssa::ExplicitDefinition def, Expr src | e = def.getARead() and diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected index b6059d48772..74e9febe662 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected @@ -1,4 +1,22 @@ -abstractValue +| | Assert.cs:9:31:9:32 | "" | +| | Assert.cs:16:31:16:32 | "" | +| | Assert.cs:23:31:23:32 | "" | +| | Assert.cs:30:31:30:32 | "" | +| | Assert.cs:37:31:37:32 | "" | +| | Assert.cs:44:31:44:32 | "" | +| | Assert.cs:51:31:51:32 | "" | +| | Assert.cs:58:31:58:32 | "" | +| | Assert.cs:65:31:65:32 | "" | +| | Assert.cs:72:31:72:32 | "" | +| | Assert.cs:79:31:79:32 | "" | +| | Collections.cs:73:40:73:41 | "" | +| | Guards.cs:96:18:96:19 | "" | +| | Guards.cs:97:31:97:31 | access to parameter s | +| | Guards.cs:157:18:157:19 | "" | +| | Guards.cs:158:24:158:24 | access to parameter o | +| | Guards.cs:282:13:282:14 | "" | +| | Guards.cs:283:17:283:17 | access to parameter o | +| | Guards.cs:341:31:341:32 | "" | | 0 | Collections.cs:11:32:11:32 | 0 | | 0 | Collections.cs:13:28:13:28 | 0 | | 0 | Collections.cs:15:27:15:27 | 0 | @@ -21,9 +39,13 @@ abstractValue | 0 | Collections.cs:86:17:86:32 | 0 | | 0 | Guards.cs:12:24:12:24 | 0 | | 0 | Guards.cs:78:26:78:26 | 0 | +| 0 | Guards.cs:78:26:78:26 | (...) ... | | 0 | Guards.cs:80:25:80:25 | 0 | +| 0 | Guards.cs:80:25:80:25 | (...) ... | | 0 | Guards.cs:82:26:82:26 | 0 | +| 0 | Guards.cs:82:26:82:26 | (...) ... | | 0 | Guards.cs:92:30:92:30 | 0 | +| 0 | Guards.cs:92:30:92:30 | (...) ... | | 0 | Guards.cs:241:17:241:17 | 0 | | 0 | Guards.cs:255:17:255:19 | access to constant A | | 0 | Guards.cs:298:21:298:21 | 0 | @@ -46,340 +68,823 @@ abstractValue | 1 | Collections.cs:81:36:81:36 | 1 | | 1 | Collections.cs:88:13:88:32 | 1 | | 1 | Guards.cs:92:25:92:25 | 1 | +| 1 | Guards.cs:92:25:92:25 | (...) ... | +| 1 | Guards.cs:243:13:243:17 | ... = ... | | 1 | Guards.cs:243:17:243:17 | 1 | | 1 | Guards.cs:246:18:246:18 | 1 | +| 1 | Guards.cs:257:13:257:19 | ... = ... | | 1 | Guards.cs:257:17:257:19 | access to constant B | | 1 | Guards.cs:260:18:260:20 | access to constant B | | 1 | Guards.cs:299:18:299:18 | 1 | | 1 | Guards.cs:311:18:311:18 | 1 | +| 1 | Guards.cs:319:13:319:17 | ... = ... | | 1 | Guards.cs:319:17:319:17 | 1 | | 1 | Guards.cs:322:13:322:13 | 1 | | 1 | Guards.cs:323:18:323:18 | 1 | +| 1 | Guards.cs:331:13:331:19 | ... = ... | | 1 | Guards.cs:331:17:331:19 | access to constant B | | 1 | Guards.cs:334:13:334:15 | access to constant B | | 1 | Guards.cs:335:18:335:18 | 1 | | 3 | Collections.cs:54:13:54:42 | 3 | | 3 | Collections.cs:62:17:62:46 | 3 | | 10 | Guards.cs:84:25:84:26 | 10 | +| 10 | Guards.cs:84:25:84:26 | (...) ... | | 10 | Guards.cs:86:26:86:27 | 10 | -| empty | Collections.cs:53:13:53:16 | access to parameter args | -| empty | Collections.cs:56:9:56:25 | ... = ... | -| empty | Collections.cs:56:13:56:25 | array creation of type String[] | -| empty | Collections.cs:57:9:57:13 | ... = ... | -| empty | Collections.cs:57:13:57:13 | access to local variable x | -| empty | Collections.cs:64:13:64:13 | access to local variable x | -| empty | Collections.cs:86:17:86:32 | array creation of type String[] | -| empty | Collections.cs:86:30:86:32 | { ..., ... } | -| empty | Collections.cs:87:22:87:24 | { ..., ... } | +| 10 | Guards.cs:86:26:86:27 | (...) ... | +| | Guards.cs:18:31:18:46 | "" | +| a | Collections.cs:54:28:54:30 | "a" | +| a | Collections.cs:62:32:62:34 | "a" | +| a | Collections.cs:66:19:66:21 | "a" | +| a | Collections.cs:88:28:88:30 | "a" | +| a | Collections.cs:89:24:89:26 | "a" | +| b | Collections.cs:54:33:54:35 | "b" | +| b | Collections.cs:62:37:62:39 | "b" | +| b | Collections.cs:67:19:67:21 | "b" | +| c | Collections.cs:54:38:54:40 | "c" | +| c | Collections.cs:62:42:62:44 | "c" | | false | Assert.cs:85:61:85:65 | false | | false | Guards.cs:178:16:178:20 | false | | false | Guards.cs:181:53:181:57 | false | +| false | Guards.cs:217:13:217:22 | ... = ... | | false | Guards.cs:217:18:217:22 | false | | false | Guards.cs:228:18:228:22 | false | +| false | Guards.cs:295:13:295:22 | ... = ... | | false | Guards.cs:295:18:295:22 | false | | false | Guards.cs:305:18:305:22 | false | -| non-empty | Collections.cs:54:9:54:42 | ... = ... | -| non-empty | Collections.cs:54:13:54:42 | array creation of type String[] | -| non-empty | Collections.cs:54:26:54:42 | { ..., ... } | -| non-empty | Collections.cs:55:9:55:13 | ... = ... | -| non-empty | Collections.cs:55:13:55:13 | access to local variable x | -| non-empty | Collections.cs:62:17:62:46 | array creation of type String[] | -| non-empty | Collections.cs:62:30:62:46 | { ..., ... } | -| non-empty | Collections.cs:67:13:67:13 | access to local variable x | -| non-empty | Collections.cs:88:9:88:32 | ... = ... | -| non-empty | Collections.cs:88:13:88:32 | array creation of type String[] | -| non-empty | Collections.cs:88:26:88:32 | { ..., ... } | -| non-empty | Collections.cs:89:22:89:28 | { ..., ... } | -| non-null | Assert.cs:9:31:9:32 | "" | -| non-null | Assert.cs:10:9:10:13 | access to type Debug | -| non-null | Assert.cs:11:9:11:15 | access to type Console | -| non-null | Assert.cs:11:27:11:27 | access to local variable s | -| non-null | Assert.cs:16:31:16:32 | "" | -| non-null | Assert.cs:17:9:17:14 | access to type Assert | -| non-null | Assert.cs:18:9:18:15 | access to type Console | -| non-null | Assert.cs:23:31:23:32 | "" | -| non-null | Assert.cs:24:9:24:14 | access to type Assert | -| non-null | Assert.cs:25:9:25:15 | access to type Console | -| non-null | Assert.cs:30:31:30:32 | "" | -| non-null | Assert.cs:31:9:31:14 | access to type Assert | -| non-null | Assert.cs:32:9:32:15 | access to type Console | -| non-null | Assert.cs:37:31:37:32 | "" | -| non-null | Assert.cs:38:9:38:14 | access to type Assert | -| non-null | Assert.cs:39:9:39:15 | access to type Console | -| non-null | Assert.cs:44:31:44:32 | "" | -| non-null | Assert.cs:45:9:45:14 | access to type Assert | -| non-null | Assert.cs:46:9:46:15 | access to type Console | -| non-null | Assert.cs:51:31:51:32 | "" | -| non-null | Assert.cs:52:9:52:14 | access to type Assert | -| non-null | Assert.cs:53:9:53:15 | access to type Console | -| non-null | Assert.cs:58:31:58:32 | "" | -| non-null | Assert.cs:59:9:59:14 | access to type Assert | -| non-null | Assert.cs:60:9:60:15 | access to type Console | -| non-null | Assert.cs:65:31:65:32 | "" | -| non-null | Assert.cs:66:9:66:14 | access to type Assert | -| non-null | Assert.cs:67:9:67:15 | access to type Console | -| non-null | Assert.cs:72:31:72:32 | "" | -| non-null | Assert.cs:73:9:73:14 | access to type Assert | -| non-null | Assert.cs:74:9:74:15 | access to type Console | -| non-null | Assert.cs:79:31:79:32 | "" | -| non-null | Assert.cs:80:9:80:14 | access to type Assert | -| non-null | Assert.cs:81:9:81:15 | access to type Console | -| non-null | Assert.cs:93:9:93:35 | this access | -| non-null | Collections.cs:11:17:11:20 | access to parameter args | -| non-null | Collections.cs:12:13:12:16 | access to parameter args | -| non-null | Collections.cs:13:13:13:16 | access to parameter args | -| non-null | Collections.cs:14:13:14:16 | access to parameter args | -| non-null | Collections.cs:15:13:15:16 | access to parameter args | -| non-null | Collections.cs:16:13:16:16 | access to parameter args | -| non-null | Collections.cs:17:13:17:16 | access to parameter args | -| non-null | Collections.cs:22:17:22:20 | access to parameter args | -| non-null | Collections.cs:23:13:23:16 | access to parameter args | -| non-null | Collections.cs:24:13:24:16 | access to parameter args | -| non-null | Collections.cs:25:13:25:16 | access to parameter args | -| non-null | Collections.cs:26:13:26:16 | access to parameter args | -| non-null | Collections.cs:27:13:27:16 | access to parameter args | -| non-null | Collections.cs:28:13:28:16 | access to parameter args | -| non-null | Collections.cs:33:17:33:20 | access to parameter args | -| non-null | Collections.cs:34:13:34:16 | access to parameter args | -| non-null | Collections.cs:35:13:35:16 | access to parameter args | -| non-null | Collections.cs:36:13:36:16 | access to parameter args | -| non-null | Collections.cs:37:13:37:16 | access to parameter args | -| non-null | Collections.cs:38:13:38:16 | access to parameter args | -| non-null | Collections.cs:39:13:39:16 | access to parameter args | -| non-null | Collections.cs:44:17:44:20 | access to parameter args | -| non-null | Collections.cs:49:13:49:16 | access to parameter args | -| non-null | Collections.cs:51:17:51:20 | access to parameter args | -| non-null | Collections.cs:51:17:51:30 | call to method ToArray | -| non-null | Collections.cs:52:9:52:12 | access to parameter args | -| non-null | Collections.cs:53:9:53:9 | access to local variable x | -| non-null | Collections.cs:53:9:53:26 | ... = ... | -| non-null | Collections.cs:53:13:53:16 | access to parameter args | -| non-null | Collections.cs:53:13:53:26 | call to method ToArray | -| non-null | Collections.cs:54:9:54:9 | access to local variable x | -| non-null | Collections.cs:54:9:54:42 | ... = ... | -| non-null | Collections.cs:54:13:54:42 | array creation of type String[] | -| non-null | Collections.cs:54:28:54:30 | "a" | -| non-null | Collections.cs:54:33:54:35 | "b" | -| non-null | Collections.cs:54:38:54:40 | "c" | -| non-null | Collections.cs:55:9:55:9 | access to local variable x | -| non-null | Collections.cs:55:9:55:13 | ... = ... | -| non-null | Collections.cs:55:13:55:13 | access to local variable x | -| non-null | Collections.cs:56:9:56:9 | access to local variable x | -| non-null | Collections.cs:56:9:56:25 | ... = ... | -| non-null | Collections.cs:56:13:56:25 | array creation of type String[] | -| non-null | Collections.cs:57:9:57:9 | access to local variable x | -| non-null | Collections.cs:57:9:57:13 | ... = ... | -| non-null | Collections.cs:57:13:57:13 | access to local variable x | -| non-null | Collections.cs:62:17:62:46 | array creation of type String[] | -| non-null | Collections.cs:62:17:62:55 | call to method ToList | -| non-null | Collections.cs:62:32:62:34 | "a" | -| non-null | Collections.cs:62:37:62:39 | "b" | -| non-null | Collections.cs:62:42:62:44 | "c" | -| non-null | Collections.cs:63:9:63:9 | access to local variable x | -| non-null | Collections.cs:64:13:64:13 | access to local variable x | -| non-null | Collections.cs:66:13:66:13 | access to local variable x | -| non-null | Collections.cs:66:19:66:21 | "a" | -| non-null | Collections.cs:67:13:67:13 | access to local variable x | -| non-null | Collections.cs:67:19:67:21 | "b" | -| non-null | Collections.cs:73:35:73:35 | access to parameter s | -| non-null | Collections.cs:73:40:73:41 | "" | -| non-null | Collections.cs:74:17:74:20 | access to parameter args | -| non-null | Collections.cs:74:26:74:32 | access to local function IsEmpty | -| non-null | Collections.cs:74:26:74:32 | delegate creation of type Func | -| non-null | Collections.cs:74:26:74:32 | this access | -| non-null | Collections.cs:75:13:75:16 | access to parameter args | -| non-null | Collections.cs:75:24:75:30 | access to local function IsEmpty | -| non-null | Collections.cs:75:24:75:30 | delegate creation of type Func | -| non-null | Collections.cs:75:24:75:30 | this access | -| non-null | Collections.cs:76:13:76:16 | access to parameter args | -| non-null | Collections.cs:76:24:76:30 | access to local function IsEmpty | -| non-null | Collections.cs:76:24:76:30 | delegate creation of type Func | -| non-null | Collections.cs:76:24:76:30 | this access | -| non-null | Collections.cs:77:13:77:16 | access to parameter args | -| non-null | Collections.cs:77:24:77:30 | access to local function IsEmpty | -| non-null | Collections.cs:77:24:77:30 | delegate creation of type Func | -| non-null | Collections.cs:77:24:77:30 | this access | -| non-null | Collections.cs:78:13:78:16 | access to parameter args | -| non-null | Collections.cs:78:24:78:30 | access to local function IsEmpty | -| non-null | Collections.cs:78:24:78:30 | delegate creation of type Func | -| non-null | Collections.cs:78:24:78:30 | this access | -| non-null | Collections.cs:79:13:79:16 | access to parameter args | -| non-null | Collections.cs:79:24:79:30 | access to local function IsEmpty | -| non-null | Collections.cs:79:24:79:30 | delegate creation of type Func | -| non-null | Collections.cs:79:24:79:30 | this access | -| non-null | Collections.cs:80:13:80:16 | access to parameter args | -| non-null | Collections.cs:80:24:80:30 | access to local function IsEmpty | -| non-null | Collections.cs:80:24:80:30 | delegate creation of type Func | -| non-null | Collections.cs:80:24:80:30 | this access | -| non-null | Collections.cs:81:13:81:16 | access to parameter args | -| non-null | Collections.cs:81:24:81:30 | access to local function IsEmpty | -| non-null | Collections.cs:81:24:81:30 | delegate creation of type Func | -| non-null | Collections.cs:81:24:81:30 | this access | -| non-null | Collections.cs:86:17:86:32 | array creation of type String[] | -| non-null | Collections.cs:87:22:87:24 | array creation of type String[] | -| non-null | Collections.cs:88:9:88:9 | access to local variable x | -| non-null | Collections.cs:88:9:88:32 | ... = ... | -| non-null | Collections.cs:88:13:88:32 | array creation of type String[] | -| non-null | Collections.cs:88:28:88:30 | "a" | -| non-null | Collections.cs:89:22:89:28 | array creation of type String[] | -| non-null | Collections.cs:89:24:89:26 | "a" | -| non-null | Collections.cs:94:29:94:32 | access to parameter args | -| non-null | Collections.cs:95:13:95:19 | access to type Console | -| non-null | Collections.cs:95:31:95:34 | access to parameter args | -| non-null | Collections.cs:100:29:100:32 | access to parameter args | -| non-null | Collections.cs:102:9:102:15 | access to type Console | -| non-null | Collections.cs:102:27:102:30 | access to parameter args | -| non-null | Guards.cs:12:13:12:13 | access to parameter s | -| non-null | Guards.cs:14:13:14:19 | access to type Console | -| non-null | Guards.cs:14:31:14:31 | access to parameter s | -| non-null | Guards.cs:18:13:18:19 | access to type Console | -| non-null | Guards.cs:18:31:18:46 | "" | -| non-null | Guards.cs:26:13:26:19 | access to type Console | -| non-null | Guards.cs:26:31:26:31 | access to parameter s | -| non-null | Guards.cs:32:14:32:19 | access to type String | -| non-null | Guards.cs:33:13:33:19 | access to type Console | -| non-null | Guards.cs:33:31:33:35 | ... + ... | -| non-null | Guards.cs:36:14:36:20 | access to type Console | -| non-null | Guards.cs:36:32:36:32 | access to parameter x | -| non-null | Guards.cs:36:32:36:36 | ... + ... | -| non-null | Guards.cs:36:36:36:36 | access to parameter y | -| non-null | Guards.cs:39:13:39:19 | access to type Console | -| non-null | Guards.cs:39:31:39:31 | access to parameter x | -| non-null | Guards.cs:39:31:39:35 | ... + ... | -| non-null | Guards.cs:39:35:39:35 | access to parameter y | -| non-null | Guards.cs:42:14:42:20 | access to type Console | -| non-null | Guards.cs:42:32:42:32 | access to parameter x | -| non-null | Guards.cs:42:32:42:36 | ... + ... | -| non-null | Guards.cs:42:36:42:36 | access to parameter y | -| non-null | Guards.cs:44:13:44:17 | this access | -| non-null | Guards.cs:45:13:45:19 | access to type Console | -| non-null | Guards.cs:45:31:45:42 | object creation of type Guards | -| non-null | Guards.cs:47:13:47:17 | this access | -| non-null | Guards.cs:48:13:48:19 | access to type Console | -| non-null | Guards.cs:48:31:48:34 | this access | -| non-null | Guards.cs:48:31:48:40 | access to field Field | -| non-null | Guards.cs:53:13:53:13 | access to parameter g | -| non-null | Guards.cs:55:9:55:15 | access to type Console | -| non-null | Guards.cs:55:27:55:27 | access to parameter g | -| non-null | Guards.cs:55:27:55:33 | access to field Field | -| non-null | Guards.cs:60:13:60:13 | access to parameter g | -| non-null | Guards.cs:61:19:61:33 | object creation of type Exception | -| non-null | Guards.cs:62:9:62:15 | access to type Console | -| non-null | Guards.cs:62:27:62:27 | access to parameter g | -| non-null | Guards.cs:62:27:62:36 | access to property Property | -| non-null | Guards.cs:62:27:62:45 | access to property Property | -| non-null | Guards.cs:62:27:62:51 | access to field Field | -| non-null | Guards.cs:63:9:63:15 | access to type Console | -| non-null | Guards.cs:63:27:63:27 | access to parameter g | -| non-null | Guards.cs:63:27:63:36 | access to property Property | -| non-null | Guards.cs:70:13:70:19 | access to type Console | -| non-null | Guards.cs:70:31:70:31 | access to parameter s | -| non-null | Guards.cs:71:13:71:13 | access to parameter s | -| non-null | Guards.cs:72:13:72:19 | access to type Console | -| non-null | Guards.cs:78:26:78:26 | (...) ... | -| non-null | Guards.cs:79:13:79:19 | access to type Console | -| non-null | Guards.cs:79:31:79:31 | access to parameter s | -| non-null | Guards.cs:80:25:80:25 | (...) ... | -| non-null | Guards.cs:81:13:81:19 | access to type Console | -| non-null | Guards.cs:81:31:81:31 | access to parameter s | -| non-null | Guards.cs:82:26:82:26 | (...) ... | -| non-null | Guards.cs:83:13:83:19 | access to type Console | -| non-null | Guards.cs:83:31:83:31 | access to parameter s | -| non-null | Guards.cs:84:25:84:26 | (...) ... | -| non-null | Guards.cs:85:13:85:19 | access to type Console | -| non-null | Guards.cs:85:31:85:31 | access to parameter s | -| non-null | Guards.cs:86:26:86:27 | (...) ... | -| non-null | Guards.cs:87:13:87:19 | access to type Console | -| non-null | Guards.cs:87:31:87:31 | access to parameter s | -| non-null | Guards.cs:89:13:89:19 | access to type Console | -| non-null | Guards.cs:89:31:89:31 | access to parameter s | -| non-null | Guards.cs:91:13:91:19 | access to type Console | -| non-null | Guards.cs:92:25:92:25 | (...) ... | -| non-null | Guards.cs:92:30:92:30 | (...) ... | -| non-null | Guards.cs:93:13:93:19 | access to type Console | -| non-null | Guards.cs:95:13:95:19 | access to type Console | -| non-null | Guards.cs:96:18:96:19 | "" | -| non-null | Guards.cs:97:13:97:19 | access to type Console | -| non-null | Guards.cs:97:31:97:31 | access to parameter s | -| non-null | Guards.cs:99:13:99:19 | access to type Console | -| non-null | Guards.cs:104:13:104:13 | access to parameter g | -| non-null | Guards.cs:105:19:105:33 | object creation of type Exception | -| non-null | Guards.cs:106:9:106:9 | access to parameter g | -| non-null | Guards.cs:106:9:106:18 | access to property Property | -| non-null | Guards.cs:107:9:107:15 | access to type Console | -| non-null | Guards.cs:107:27:107:27 | access to parameter g | -| non-null | Guards.cs:108:9:108:15 | access to type Console | -| non-null | Guards.cs:108:27:108:27 | access to parameter g | -| non-null | Guards.cs:108:27:108:36 | access to property Property | -| non-null | Guards.cs:113:21:113:21 | access to parameter g | -| non-null | Guards.cs:114:14:114:14 | access to parameter g | -| non-null | Guards.cs:114:14:114:23 | access to property Property | -| non-null | Guards.cs:114:14:114:32 | access to property Property | -| non-null | Guards.cs:115:9:115:55 | ... = ... | -| non-null | Guards.cs:115:17:115:17 | access to parameter g | -| non-null | Guards.cs:115:17:115:26 | access to property Property | -| non-null | Guards.cs:115:17:115:35 | access to property Property | -| non-null | Guards.cs:115:17:115:55 | ... ?? ... | -| non-null | Guards.cs:115:46:115:55 | throw ... | -| non-null | Guards.cs:116:9:116:15 | access to type Console | -| non-null | Guards.cs:116:27:116:27 | access to parameter g | -| non-null | Guards.cs:116:27:116:36 | access to property Property | -| non-null | Guards.cs:116:27:116:45 | access to property Property | -| non-null | Guards.cs:116:27:116:51 | access to field Field | -| non-null | Guards.cs:117:9:117:9 | access to parameter g | -| non-null | Guards.cs:117:9:117:18 | access to property Property | -| non-null | Guards.cs:118:9:118:15 | access to type Console | -| non-null | Guards.cs:118:27:118:27 | access to parameter g | -| non-null | Guards.cs:119:9:119:15 | access to type Console | -| non-null | Guards.cs:119:27:119:27 | access to parameter g | -| non-null | Guards.cs:119:27:119:36 | access to property Property | -| non-null | Guards.cs:125:18:125:19 | access to parameter s1 | -| non-null | Guards.cs:125:29:125:30 | access to parameter s1 | -| non-null | Guards.cs:132:16:132:16 | access to parameter s | -| non-null | Guards.cs:138:20:138:20 | access to parameter s | -| non-null | Guards.cs:145:20:145:20 | access to local variable s | -| non-null | Guards.cs:154:24:154:24 | access to parameter o | -| non-null | Guards.cs:156:24:156:24 | access to local variable a | -| non-null | Guards.cs:158:24:158:24 | access to parameter o | -| non-null | Guards.cs:162:24:162:24 | access to parameter o | -| non-null | Guards.cs:168:14:168:19 | access to type String | -| non-null | Guards.cs:169:13:169:19 | access to type Console | -| non-null | Guards.cs:169:31:169:31 | access to parameter x | -| non-null | Guards.cs:183:38:183:49 | this access | -| non-null | Guards.cs:189:14:189:25 | this access | -| non-null | Guards.cs:190:13:190:19 | access to type Console | -| non-null | Guards.cs:191:14:191:25 | this access | -| non-null | Guards.cs:192:13:192:19 | access to type Console | -| non-null | Guards.cs:193:14:193:25 | this access | -| non-null | Guards.cs:194:13:194:19 | access to type Console | -| non-null | Guards.cs:195:13:195:27 | this access | -| non-null | Guards.cs:196:13:196:19 | access to type Console | -| non-null | Guards.cs:197:14:197:29 | this access | -| non-null | Guards.cs:198:13:198:19 | access to type Console | -| non-null | Guards.cs:205:13:205:13 | access to parameter o | -| non-null | Guards.cs:206:33:206:36 | access to parameter args | -| non-null | Guards.cs:208:17:208:17 | access to parameter o | -| non-null | Guards.cs:268:30:268:41 | call to method GetType | -| non-null | Guards.cs:269:13:269:14 | access to parameter o1 | -| non-null | Guards.cs:270:30:270:31 | access to parameter o2 | -| non-null | Guards.cs:279:17:279:17 | access to parameter o | -| non-null | Guards.cs:281:17:281:17 | access to local variable a | -| non-null | Guards.cs:283:17:283:17 | access to parameter o | -| non-null | Guards.cs:287:17:287:17 | access to parameter o | -| non-null | Guards.cs:341:31:341:32 | "" | -| non-null | Guards.cs:343:13:343:19 | access to type Console | -| non-null | Guards.cs:343:31:343:31 | access to local variable s | -| non-null | Guards.cs:349:13:349:13 | access to parameter o | +| not | Guards.cs:99:31:99:31 | access to parameter s | +| not | Guards.cs:160:24:160:24 | access to parameter o | +| not | Guards.cs:162:24:162:24 | access to parameter o | +| not | Guards.cs:285:17:285:17 | access to parameter o | +| not | Guards.cs:287:17:287:17 | access to parameter o | +| not null | Assert.cs:9:20:9:20 | access to parameter b | +| not null | Assert.cs:9:31:9:32 | "" | +| not null | Assert.cs:10:9:10:13 | access to type Debug | +| not null | Assert.cs:10:9:10:31 | call to method Assert | +| not null | Assert.cs:10:22:10:30 | ... != ... | +| not null | Assert.cs:11:9:11:15 | access to type Console | +| not null | Assert.cs:11:9:11:35 | call to method WriteLine | +| not null | Assert.cs:11:27:11:27 | access to local variable s | +| not null | Assert.cs:11:27:11:34 | access to property Length | +| not null | Assert.cs:16:20:16:20 | access to parameter b | +| not null | Assert.cs:16:31:16:32 | "" | +| not null | Assert.cs:17:9:17:14 | access to type Assert | +| not null | Assert.cs:17:9:17:24 | call to method IsNull | +| not null | Assert.cs:18:9:18:15 | access to type Console | +| not null | Assert.cs:18:9:18:35 | call to method WriteLine | +| not null | Assert.cs:18:27:18:34 | access to property Length | +| not null | Assert.cs:23:20:23:20 | access to parameter b | +| not null | Assert.cs:23:31:23:32 | "" | +| not null | Assert.cs:24:9:24:14 | access to type Assert | +| not null | Assert.cs:24:9:24:27 | call to method IsNotNull | +| not null | Assert.cs:25:9:25:15 | access to type Console | +| not null | Assert.cs:25:9:25:35 | call to method WriteLine | +| not null | Assert.cs:25:27:25:34 | access to property Length | +| not null | Assert.cs:30:20:30:20 | access to parameter b | +| not null | Assert.cs:30:31:30:32 | "" | +| not null | Assert.cs:31:9:31:14 | access to type Assert | +| not null | Assert.cs:31:9:31:32 | call to method IsTrue | +| not null | Assert.cs:31:23:31:31 | ... == ... | +| not null | Assert.cs:32:9:32:15 | access to type Console | +| not null | Assert.cs:32:9:32:35 | call to method WriteLine | +| not null | Assert.cs:32:27:32:34 | access to property Length | +| not null | Assert.cs:37:20:37:20 | access to parameter b | +| not null | Assert.cs:37:31:37:32 | "" | +| not null | Assert.cs:38:9:38:14 | access to type Assert | +| not null | Assert.cs:38:9:38:32 | call to method IsTrue | +| not null | Assert.cs:38:23:38:31 | ... != ... | +| not null | Assert.cs:39:9:39:15 | access to type Console | +| not null | Assert.cs:39:9:39:35 | call to method WriteLine | +| not null | Assert.cs:39:27:39:27 | access to local variable s | +| not null | Assert.cs:39:27:39:34 | access to property Length | +| not null | Assert.cs:44:20:44:20 | access to parameter b | +| not null | Assert.cs:44:31:44:32 | "" | +| not null | Assert.cs:45:9:45:14 | access to type Assert | +| not null | Assert.cs:45:9:45:33 | call to method IsFalse | +| not null | Assert.cs:45:24:45:32 | ... != ... | +| not null | Assert.cs:46:9:46:15 | access to type Console | +| not null | Assert.cs:46:9:46:35 | call to method WriteLine | +| not null | Assert.cs:46:27:46:34 | access to property Length | +| not null | Assert.cs:51:20:51:20 | access to parameter b | +| not null | Assert.cs:51:31:51:32 | "" | +| not null | Assert.cs:52:9:52:14 | access to type Assert | +| not null | Assert.cs:52:9:52:33 | call to method IsFalse | +| not null | Assert.cs:52:24:52:32 | ... == ... | +| not null | Assert.cs:53:9:53:15 | access to type Console | +| not null | Assert.cs:53:9:53:35 | call to method WriteLine | +| not null | Assert.cs:53:27:53:27 | access to local variable s | +| not null | Assert.cs:53:27:53:34 | access to property Length | +| not null | Assert.cs:58:20:58:20 | access to parameter b | +| not null | Assert.cs:58:31:58:32 | "" | +| not null | Assert.cs:59:9:59:14 | access to type Assert | +| not null | Assert.cs:59:9:59:37 | call to method IsTrue | +| not null | Assert.cs:59:23:59:31 | ... != ... | +| not null | Assert.cs:59:23:59:36 | ... && ... | +| not null | Assert.cs:59:36:59:36 | access to parameter b | +| not null | Assert.cs:60:9:60:15 | access to type Console | +| not null | Assert.cs:60:9:60:35 | call to method WriteLine | +| not null | Assert.cs:60:27:60:27 | access to local variable s | +| not null | Assert.cs:60:27:60:34 | access to property Length | +| not null | Assert.cs:65:20:65:20 | access to parameter b | +| not null | Assert.cs:65:31:65:32 | "" | +| not null | Assert.cs:66:9:66:14 | access to type Assert | +| not null | Assert.cs:66:9:66:38 | call to method IsFalse | +| not null | Assert.cs:66:24:66:32 | ... == ... | +| not null | Assert.cs:66:24:66:37 | ... \|\| ... | +| not null | Assert.cs:66:37:66:37 | access to parameter b | +| not null | Assert.cs:67:9:67:15 | access to type Console | +| not null | Assert.cs:67:9:67:35 | call to method WriteLine | +| not null | Assert.cs:67:27:67:27 | access to local variable s | +| not null | Assert.cs:67:27:67:34 | access to property Length | +| not null | Assert.cs:72:20:72:20 | access to parameter b | +| not null | Assert.cs:72:31:72:32 | "" | +| not null | Assert.cs:73:9:73:14 | access to type Assert | +| not null | Assert.cs:73:9:73:37 | call to method IsTrue | +| not null | Assert.cs:73:23:73:31 | ... == ... | +| not null | Assert.cs:73:23:73:36 | ... && ... | +| not null | Assert.cs:73:36:73:36 | access to parameter b | +| not null | Assert.cs:74:9:74:15 | access to type Console | +| not null | Assert.cs:74:9:74:35 | call to method WriteLine | +| not null | Assert.cs:74:27:74:34 | access to property Length | +| not null | Assert.cs:79:20:79:20 | access to parameter b | +| not null | Assert.cs:79:31:79:32 | "" | +| not null | Assert.cs:80:9:80:14 | access to type Assert | +| not null | Assert.cs:80:9:80:38 | call to method IsFalse | +| not null | Assert.cs:80:24:80:32 | ... != ... | +| not null | Assert.cs:80:24:80:37 | ... \|\| ... | +| not null | Assert.cs:80:37:80:37 | access to parameter b | +| not null | Assert.cs:81:9:81:15 | access to type Console | +| not null | Assert.cs:81:9:81:35 | call to method WriteLine | +| not null | Assert.cs:81:27:81:34 | access to property Length | +| not null | Assert.cs:85:61:85:65 | false | +| not null | Assert.cs:86:61:86:64 | true | +| not null | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | +| not null | Assert.cs:93:9:93:35 | this access | +| not null | Assert.cs:93:25:93:26 | access to parameter b1 | +| not null | Assert.cs:93:29:93:30 | access to parameter b2 | +| not null | Assert.cs:93:33:93:34 | access to parameter b2 | +| not null | Assert.cs:94:16:94:17 | access to parameter b1 | +| not null | Assert.cs:94:16:94:24 | ... && ... | +| not null | Assert.cs:94:22:94:24 | !... | +| not null | Assert.cs:94:23:94:24 | access to parameter b2 | +| not null | Collections.cs:11:13:11:13 | access to local variable b | +| not null | Collections.cs:11:13:11:32 | Boolean b = ... | +| not null | Collections.cs:11:17:11:20 | access to parameter args | +| not null | Collections.cs:11:17:11:27 | access to property Length | +| not null | Collections.cs:11:17:11:32 | ... == ... | +| not null | Collections.cs:11:32:11:32 | 0 | +| not null | Collections.cs:12:9:12:9 | access to local variable b | +| not null | Collections.cs:12:9:12:28 | ... = ... | +| not null | Collections.cs:12:13:12:16 | access to parameter args | +| not null | Collections.cs:12:13:12:23 | access to property Length | +| not null | Collections.cs:12:13:12:28 | ... == ... | +| not null | Collections.cs:12:28:12:28 | 1 | +| not null | Collections.cs:13:9:13:9 | access to local variable b | +| not null | Collections.cs:13:9:13:28 | ... = ... | +| not null | Collections.cs:13:13:13:16 | access to parameter args | +| not null | Collections.cs:13:13:13:23 | access to property Length | +| not null | Collections.cs:13:13:13:28 | ... != ... | +| not null | Collections.cs:13:28:13:28 | 0 | +| not null | Collections.cs:14:9:14:9 | access to local variable b | +| not null | Collections.cs:14:9:14:28 | ... = ... | +| not null | Collections.cs:14:13:14:16 | access to parameter args | +| not null | Collections.cs:14:13:14:23 | access to property Length | +| not null | Collections.cs:14:13:14:28 | ... != ... | +| not null | Collections.cs:14:28:14:28 | 1 | +| not null | Collections.cs:15:9:15:9 | access to local variable b | +| not null | Collections.cs:15:9:15:27 | ... = ... | +| not null | Collections.cs:15:13:15:16 | access to parameter args | +| not null | Collections.cs:15:13:15:23 | access to property Length | +| not null | Collections.cs:15:13:15:27 | ... > ... | +| not null | Collections.cs:15:27:15:27 | 0 | +| not null | Collections.cs:16:9:16:9 | access to local variable b | +| not null | Collections.cs:16:9:16:28 | ... = ... | +| not null | Collections.cs:16:13:16:16 | access to parameter args | +| not null | Collections.cs:16:13:16:23 | access to property Length | +| not null | Collections.cs:16:13:16:28 | ... >= ... | +| not null | Collections.cs:16:28:16:28 | 0 | +| not null | Collections.cs:17:9:17:9 | access to local variable b | +| not null | Collections.cs:17:9:17:28 | ... = ... | +| not null | Collections.cs:17:13:17:16 | access to parameter args | +| not null | Collections.cs:17:13:17:23 | access to property Length | +| not null | Collections.cs:17:13:17:28 | ... >= ... | +| not null | Collections.cs:17:28:17:28 | 1 | +| not null | Collections.cs:22:13:22:13 | access to local variable b | +| not null | Collections.cs:22:13:22:31 | Boolean b = ... | +| not null | Collections.cs:22:17:22:20 | access to parameter args | +| not null | Collections.cs:22:17:22:26 | access to property Count | +| not null | Collections.cs:22:17:22:31 | ... == ... | +| not null | Collections.cs:22:31:22:31 | 0 | +| not null | Collections.cs:23:9:23:9 | access to local variable b | +| not null | Collections.cs:23:9:23:27 | ... = ... | +| not null | Collections.cs:23:13:23:16 | access to parameter args | +| not null | Collections.cs:23:13:23:22 | access to property Count | +| not null | Collections.cs:23:13:23:27 | ... == ... | +| not null | Collections.cs:23:27:23:27 | 1 | +| not null | Collections.cs:24:9:24:9 | access to local variable b | +| not null | Collections.cs:24:9:24:27 | ... = ... | +| not null | Collections.cs:24:13:24:16 | access to parameter args | +| not null | Collections.cs:24:13:24:22 | access to property Count | +| not null | Collections.cs:24:13:24:27 | ... != ... | +| not null | Collections.cs:24:27:24:27 | 0 | +| not null | Collections.cs:25:9:25:9 | access to local variable b | +| not null | Collections.cs:25:9:25:27 | ... = ... | +| not null | Collections.cs:25:13:25:16 | access to parameter args | +| not null | Collections.cs:25:13:25:22 | access to property Count | +| not null | Collections.cs:25:13:25:27 | ... != ... | +| not null | Collections.cs:25:27:25:27 | 1 | +| not null | Collections.cs:26:9:26:9 | access to local variable b | +| not null | Collections.cs:26:9:26:26 | ... = ... | +| not null | Collections.cs:26:13:26:16 | access to parameter args | +| not null | Collections.cs:26:13:26:22 | access to property Count | +| not null | Collections.cs:26:13:26:26 | ... > ... | +| not null | Collections.cs:26:26:26:26 | 0 | +| not null | Collections.cs:27:9:27:9 | access to local variable b | +| not null | Collections.cs:27:9:27:27 | ... = ... | +| not null | Collections.cs:27:13:27:16 | access to parameter args | +| not null | Collections.cs:27:13:27:22 | access to property Count | +| not null | Collections.cs:27:13:27:27 | ... >= ... | +| not null | Collections.cs:27:27:27:27 | 0 | +| not null | Collections.cs:28:9:28:9 | access to local variable b | +| not null | Collections.cs:28:9:28:27 | ... = ... | +| not null | Collections.cs:28:13:28:16 | access to parameter args | +| not null | Collections.cs:28:13:28:22 | access to property Count | +| not null | Collections.cs:28:13:28:27 | ... >= ... | +| not null | Collections.cs:28:27:28:27 | 1 | +| not null | Collections.cs:33:13:33:13 | access to local variable b | +| not null | Collections.cs:33:13:33:33 | Boolean b = ... | +| not null | Collections.cs:33:17:33:20 | access to parameter args | +| not null | Collections.cs:33:17:33:28 | call to method Count | +| not null | Collections.cs:33:17:33:33 | ... == ... | +| not null | Collections.cs:33:33:33:33 | 0 | +| not null | Collections.cs:34:9:34:9 | access to local variable b | +| not null | Collections.cs:34:9:34:29 | ... = ... | +| not null | Collections.cs:34:13:34:16 | access to parameter args | +| not null | Collections.cs:34:13:34:24 | call to method Count | +| not null | Collections.cs:34:13:34:29 | ... == ... | +| not null | Collections.cs:34:29:34:29 | 1 | +| not null | Collections.cs:35:9:35:9 | access to local variable b | +| not null | Collections.cs:35:9:35:29 | ... = ... | +| not null | Collections.cs:35:13:35:16 | access to parameter args | +| not null | Collections.cs:35:13:35:24 | call to method Count | +| not null | Collections.cs:35:13:35:29 | ... != ... | +| not null | Collections.cs:35:29:35:29 | 0 | +| not null | Collections.cs:36:9:36:9 | access to local variable b | +| not null | Collections.cs:36:9:36:29 | ... = ... | +| not null | Collections.cs:36:13:36:16 | access to parameter args | +| not null | Collections.cs:36:13:36:24 | call to method Count | +| not null | Collections.cs:36:13:36:29 | ... != ... | +| not null | Collections.cs:36:29:36:29 | 1 | +| not null | Collections.cs:37:9:37:9 | access to local variable b | +| not null | Collections.cs:37:9:37:28 | ... = ... | +| not null | Collections.cs:37:13:37:16 | access to parameter args | +| not null | Collections.cs:37:13:37:24 | call to method Count | +| not null | Collections.cs:37:13:37:28 | ... > ... | +| not null | Collections.cs:37:28:37:28 | 0 | +| not null | Collections.cs:38:9:38:9 | access to local variable b | +| not null | Collections.cs:38:9:38:29 | ... = ... | +| not null | Collections.cs:38:13:38:16 | access to parameter args | +| not null | Collections.cs:38:13:38:24 | call to method Count | +| not null | Collections.cs:38:13:38:29 | ... >= ... | +| not null | Collections.cs:38:29:38:29 | 0 | +| not null | Collections.cs:39:9:39:9 | access to local variable b | +| not null | Collections.cs:39:9:39:29 | ... = ... | +| not null | Collections.cs:39:13:39:16 | access to parameter args | +| not null | Collections.cs:39:13:39:24 | call to method Count | +| not null | Collections.cs:39:13:39:29 | ... >= ... | +| not null | Collections.cs:39:29:39:29 | 1 | +| not null | Collections.cs:44:13:44:13 | access to local variable b | +| not null | Collections.cs:44:13:44:26 | Boolean b = ... | +| not null | Collections.cs:44:17:44:20 | access to parameter args | +| not null | Collections.cs:44:17:44:26 | call to method Any | +| not null | Collections.cs:49:13:49:16 | access to parameter args | +| not null | Collections.cs:49:13:49:22 | access to property Count | +| not null | Collections.cs:49:13:49:27 | ... == ... | +| not null | Collections.cs:49:27:49:27 | 0 | +| not null | Collections.cs:51:17:51:20 | access to parameter args | +| not null | Collections.cs:51:17:51:30 | call to method ToArray | +| not null | Collections.cs:52:9:52:12 | access to parameter args | +| not null | Collections.cs:52:9:52:20 | call to method Clear | +| not null | Collections.cs:53:9:53:9 | access to local variable x | +| not null | Collections.cs:53:9:53:26 | ... = ... | +| not null | Collections.cs:53:13:53:16 | access to parameter args | +| not null | Collections.cs:53:13:53:26 | call to method ToArray | +| not null | Collections.cs:54:9:54:9 | access to local variable x | +| not null | Collections.cs:54:9:54:42 | ... = ... | +| not null | Collections.cs:54:13:54:42 | 3 | +| not null | Collections.cs:54:13:54:42 | array creation of type String[] | +| not null | Collections.cs:54:28:54:30 | "a" | +| not null | Collections.cs:54:33:54:35 | "b" | +| not null | Collections.cs:54:38:54:40 | "c" | +| not null | Collections.cs:55:9:55:9 | access to local variable x | +| not null | Collections.cs:55:9:55:13 | ... = ... | +| not null | Collections.cs:55:13:55:13 | access to local variable x | +| not null | Collections.cs:56:9:56:9 | access to local variable x | +| not null | Collections.cs:56:9:56:25 | ... = ... | +| not null | Collections.cs:56:13:56:25 | array creation of type String[] | +| not null | Collections.cs:56:24:56:24 | 0 | +| not null | Collections.cs:57:9:57:9 | access to local variable x | +| not null | Collections.cs:57:9:57:13 | ... = ... | +| not null | Collections.cs:57:13:57:13 | access to local variable x | +| not null | Collections.cs:62:17:62:46 | 3 | +| not null | Collections.cs:62:17:62:46 | array creation of type String[] | +| not null | Collections.cs:62:17:62:55 | call to method ToList | +| not null | Collections.cs:62:32:62:34 | "a" | +| not null | Collections.cs:62:37:62:39 | "b" | +| not null | Collections.cs:62:42:62:44 | "c" | +| not null | Collections.cs:63:9:63:9 | access to local variable x | +| not null | Collections.cs:63:9:63:17 | call to method Clear | +| not null | Collections.cs:64:13:64:13 | access to local variable x | +| not null | Collections.cs:64:13:64:19 | access to property Count | +| not null | Collections.cs:64:13:64:24 | ... == ... | +| not null | Collections.cs:64:24:64:24 | 0 | +| not null | Collections.cs:66:13:66:13 | access to local variable x | +| not null | Collections.cs:66:13:66:22 | call to method Add | +| not null | Collections.cs:66:19:66:21 | "a" | +| not null | Collections.cs:67:13:67:13 | access to local variable x | +| not null | Collections.cs:67:13:67:22 | call to method Add | +| not null | Collections.cs:67:19:67:21 | "b" | +| not null | Collections.cs:73:35:73:35 | access to parameter s | +| not null | Collections.cs:73:35:73:41 | ... == ... | +| not null | Collections.cs:73:40:73:41 | "" | +| not null | Collections.cs:74:13:74:13 | access to local variable b | +| not null | Collections.cs:74:13:74:33 | Boolean b = ... | +| not null | Collections.cs:74:17:74:20 | access to parameter args | +| not null | Collections.cs:74:17:74:33 | call to method Any | +| not null | Collections.cs:74:26:74:32 | access to local function IsEmpty | +| not null | Collections.cs:74:26:74:32 | delegate creation of type Func | +| not null | Collections.cs:74:26:74:32 | this access | +| not null | Collections.cs:75:9:75:9 | access to local variable b | +| not null | Collections.cs:75:9:75:36 | ... = ... | +| not null | Collections.cs:75:13:75:16 | access to parameter args | +| not null | Collections.cs:75:13:75:31 | call to method Count | +| not null | Collections.cs:75:13:75:36 | ... == ... | +| not null | Collections.cs:75:24:75:30 | access to local function IsEmpty | +| not null | Collections.cs:75:24:75:30 | delegate creation of type Func | +| not null | Collections.cs:75:24:75:30 | this access | +| not null | Collections.cs:75:36:75:36 | 0 | +| not null | Collections.cs:76:9:76:9 | access to local variable b | +| not null | Collections.cs:76:9:76:36 | ... = ... | +| not null | Collections.cs:76:13:76:16 | access to parameter args | +| not null | Collections.cs:76:13:76:31 | call to method Count | +| not null | Collections.cs:76:13:76:36 | ... == ... | +| not null | Collections.cs:76:24:76:30 | access to local function IsEmpty | +| not null | Collections.cs:76:24:76:30 | delegate creation of type Func | +| not null | Collections.cs:76:24:76:30 | this access | +| not null | Collections.cs:76:36:76:36 | 1 | +| not null | Collections.cs:77:9:77:9 | access to local variable b | +| not null | Collections.cs:77:9:77:36 | ... = ... | +| not null | Collections.cs:77:13:77:16 | access to parameter args | +| not null | Collections.cs:77:13:77:31 | call to method Count | +| not null | Collections.cs:77:13:77:36 | ... != ... | +| not null | Collections.cs:77:24:77:30 | access to local function IsEmpty | +| not null | Collections.cs:77:24:77:30 | delegate creation of type Func | +| not null | Collections.cs:77:24:77:30 | this access | +| not null | Collections.cs:77:36:77:36 | 0 | +| not null | Collections.cs:78:9:78:9 | access to local variable b | +| not null | Collections.cs:78:9:78:36 | ... = ... | +| not null | Collections.cs:78:13:78:16 | access to parameter args | +| not null | Collections.cs:78:13:78:31 | call to method Count | +| not null | Collections.cs:78:13:78:36 | ... != ... | +| not null | Collections.cs:78:24:78:30 | access to local function IsEmpty | +| not null | Collections.cs:78:24:78:30 | delegate creation of type Func | +| not null | Collections.cs:78:24:78:30 | this access | +| not null | Collections.cs:78:36:78:36 | 1 | +| not null | Collections.cs:79:9:79:9 | access to local variable b | +| not null | Collections.cs:79:9:79:35 | ... = ... | +| not null | Collections.cs:79:13:79:16 | access to parameter args | +| not null | Collections.cs:79:13:79:31 | call to method Count | +| not null | Collections.cs:79:13:79:35 | ... > ... | +| not null | Collections.cs:79:24:79:30 | access to local function IsEmpty | +| not null | Collections.cs:79:24:79:30 | delegate creation of type Func | +| not null | Collections.cs:79:24:79:30 | this access | +| not null | Collections.cs:79:35:79:35 | 0 | +| not null | Collections.cs:80:9:80:9 | access to local variable b | +| not null | Collections.cs:80:9:80:36 | ... = ... | +| not null | Collections.cs:80:13:80:16 | access to parameter args | +| not null | Collections.cs:80:13:80:31 | call to method Count | +| not null | Collections.cs:80:13:80:36 | ... >= ... | +| not null | Collections.cs:80:24:80:30 | access to local function IsEmpty | +| not null | Collections.cs:80:24:80:30 | delegate creation of type Func | +| not null | Collections.cs:80:24:80:30 | this access | +| not null | Collections.cs:80:36:80:36 | 0 | +| not null | Collections.cs:81:9:81:9 | access to local variable b | +| not null | Collections.cs:81:9:81:36 | ... = ... | +| not null | Collections.cs:81:13:81:16 | access to parameter args | +| not null | Collections.cs:81:13:81:31 | call to method Count | +| not null | Collections.cs:81:13:81:36 | ... >= ... | +| not null | Collections.cs:81:24:81:30 | access to local function IsEmpty | +| not null | Collections.cs:81:24:81:30 | delegate creation of type Func | +| not null | Collections.cs:81:24:81:30 | this access | +| not null | Collections.cs:81:36:81:36 | 1 | +| not null | Collections.cs:86:17:86:32 | 0 | +| not null | Collections.cs:86:17:86:32 | array creation of type String[] | +| not null | Collections.cs:87:22:87:24 | array creation of type String[] | +| not null | Collections.cs:88:9:88:9 | access to local variable x | +| not null | Collections.cs:88:9:88:32 | ... = ... | +| not null | Collections.cs:88:13:88:32 | 1 | +| not null | Collections.cs:88:13:88:32 | array creation of type String[] | +| not null | Collections.cs:88:28:88:30 | "a" | +| not null | Collections.cs:89:22:89:28 | array creation of type String[] | +| not null | Collections.cs:89:24:89:26 | "a" | +| not null | Collections.cs:94:29:94:32 | access to parameter args | +| not null | Collections.cs:95:13:95:19 | access to type Console | +| not null | Collections.cs:95:13:95:35 | call to method WriteLine | +| not null | Collections.cs:95:31:95:34 | access to parameter args | +| not null | Collections.cs:100:29:100:32 | access to parameter args | +| not null | Collections.cs:102:9:102:15 | access to type Console | +| not null | Collections.cs:102:9:102:31 | call to method WriteLine | +| not null | Collections.cs:102:27:102:30 | access to parameter args | +| not null | Guards.cs:10:13:10:25 | !... | +| not null | Guards.cs:10:14:10:25 | !... | +| not null | Guards.cs:10:16:10:24 | ... == ... | +| not null | Guards.cs:12:13:12:13 | access to parameter s | +| not null | Guards.cs:12:13:12:20 | access to property Length | +| not null | Guards.cs:12:13:12:24 | ... > ... | +| not null | Guards.cs:12:24:12:24 | 0 | +| not null | Guards.cs:14:13:14:19 | access to type Console | +| not null | Guards.cs:14:13:14:32 | call to method WriteLine | +| not null | Guards.cs:14:31:14:31 | access to parameter s | +| not null | Guards.cs:18:13:18:19 | access to type Console | +| not null | Guards.cs:18:13:18:47 | call to method WriteLine | +| not null | Guards.cs:18:31:18:46 | "" | +| not null | Guards.cs:24:13:24:21 | ... != ... | +| not null | Guards.cs:26:13:26:19 | access to type Console | +| not null | Guards.cs:26:13:26:32 | call to method WriteLine | +| not null | Guards.cs:26:31:26:31 | access to parameter s | +| not null | Guards.cs:32:13:32:36 | !... | +| not null | Guards.cs:32:13:32:51 | ... & ... | +| not null | Guards.cs:32:14:32:19 | access to type String | +| not null | Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | +| not null | Guards.cs:32:40:32:51 | !... | +| not null | Guards.cs:32:42:32:50 | ... == ... | +| not null | Guards.cs:33:13:33:19 | access to type Console | +| not null | Guards.cs:33:13:33:36 | call to method WriteLine | +| not null | Guards.cs:33:31:33:31 | access to parameter x | +| not null | Guards.cs:33:31:33:35 | ... + ... | +| not null | Guards.cs:33:35:33:35 | access to parameter y | +| not null | Guards.cs:35:13:35:21 | ... == ... | +| not null | Guards.cs:35:13:35:34 | ... \|\| ... | +| not null | Guards.cs:35:26:35:34 | ... == ... | +| not null | Guards.cs:36:14:36:20 | access to type Console | +| not null | Guards.cs:36:14:36:37 | call to method WriteLine | +| not null | Guards.cs:36:32:36:32 | access to parameter x | +| not null | Guards.cs:36:32:36:36 | ... + ... | +| not null | Guards.cs:36:36:36:36 | access to parameter y | +| not null | Guards.cs:38:13:38:37 | !... | +| not null | Guards.cs:38:15:38:23 | ... == ... | +| not null | Guards.cs:38:15:38:36 | ... \|\| ... | +| not null | Guards.cs:38:28:38:36 | ... == ... | +| not null | Guards.cs:39:13:39:19 | access to type Console | +| not null | Guards.cs:39:13:39:36 | call to method WriteLine | +| not null | Guards.cs:39:31:39:31 | access to parameter x | +| not null | Guards.cs:39:31:39:35 | ... + ... | +| not null | Guards.cs:39:35:39:35 | access to parameter y | +| not null | Guards.cs:41:13:41:39 | !... | +| not null | Guards.cs:41:14:41:39 | !... | +| not null | Guards.cs:41:15:41:39 | !... | +| not null | Guards.cs:41:17:41:25 | ... != ... | +| not null | Guards.cs:41:17:41:38 | ... && ... | +| not null | Guards.cs:41:30:41:38 | ... != ... | +| not null | Guards.cs:42:14:42:20 | access to type Console | +| not null | Guards.cs:42:14:42:37 | call to method WriteLine | +| not null | Guards.cs:42:32:42:32 | access to parameter x | +| not null | Guards.cs:42:32:42:36 | ... + ... | +| not null | Guards.cs:42:36:42:36 | access to parameter y | +| not null | Guards.cs:44:13:44:17 | this access | +| not null | Guards.cs:44:13:44:25 | ... != ... | +| not null | Guards.cs:45:13:45:19 | access to type Console | +| not null | Guards.cs:45:13:45:49 | call to method WriteLine | +| not null | Guards.cs:45:31:45:42 | object creation of type Guards | +| not null | Guards.cs:47:13:47:17 | this access | +| not null | Guards.cs:47:13:47:25 | ... != ... | +| not null | Guards.cs:48:13:48:19 | access to type Console | +| not null | Guards.cs:48:13:48:41 | call to method WriteLine | +| not null | Guards.cs:48:31:48:34 | this access | +| not null | Guards.cs:48:31:48:40 | access to field Field | +| not null | Guards.cs:53:13:53:13 | access to parameter g | +| not null | Guards.cs:53:13:53:27 | ... == ... | +| not null | Guards.cs:55:9:55:15 | access to type Console | +| not null | Guards.cs:55:9:55:34 | call to method WriteLine | +| not null | Guards.cs:55:27:55:27 | access to parameter g | +| not null | Guards.cs:55:27:55:33 | access to field Field | +| not null | Guards.cs:60:13:60:13 | access to parameter g | +| not null | Guards.cs:60:13:60:45 | ... == ... | +| not null | Guards.cs:61:19:61:33 | object creation of type Exception | +| not null | Guards.cs:62:9:62:15 | access to type Console | +| not null | Guards.cs:62:9:62:52 | call to method WriteLine | +| not null | Guards.cs:62:27:62:27 | access to parameter g | +| not null | Guards.cs:62:27:62:36 | access to property Property | +| not null | Guards.cs:62:27:62:45 | access to property Property | +| not null | Guards.cs:62:27:62:51 | access to field Field | +| not null | Guards.cs:63:9:63:15 | access to type Console | +| not null | Guards.cs:63:9:63:43 | call to method WriteLine | +| not null | Guards.cs:63:27:63:27 | access to parameter g | +| not null | Guards.cs:63:27:63:36 | access to property Property | +| not null | Guards.cs:68:16:68:24 | ... != ... | +| not null | Guards.cs:70:13:70:19 | access to type Console | +| not null | Guards.cs:70:13:70:32 | call to method WriteLine | +| not null | Guards.cs:70:31:70:31 | access to parameter s | +| not null | Guards.cs:71:13:71:13 | access to parameter s | +| not null | Guards.cs:72:13:72:19 | access to type Console | +| not null | Guards.cs:72:13:72:32 | call to method WriteLine | +| not null | Guards.cs:78:13:78:26 | ... == ... | +| not null | Guards.cs:78:26:78:26 | 0 | +| not null | Guards.cs:78:26:78:26 | (...) ... | +| not null | Guards.cs:79:13:79:19 | access to type Console | +| not null | Guards.cs:79:13:79:32 | call to method WriteLine | +| not null | Guards.cs:79:31:79:31 | access to parameter s | +| not null | Guards.cs:80:13:80:25 | ... > ... | +| not null | Guards.cs:80:25:80:25 | 0 | +| not null | Guards.cs:80:25:80:25 | (...) ... | +| not null | Guards.cs:81:13:81:19 | access to type Console | +| not null | Guards.cs:81:13:81:32 | call to method WriteLine | +| not null | Guards.cs:81:31:81:31 | access to parameter s | +| not null | Guards.cs:82:13:82:26 | ... >= ... | +| not null | Guards.cs:82:26:82:26 | 0 | +| not null | Guards.cs:82:26:82:26 | (...) ... | +| not null | Guards.cs:83:13:83:19 | access to type Console | +| not null | Guards.cs:83:13:83:32 | call to method WriteLine | +| not null | Guards.cs:83:31:83:31 | access to parameter s | +| not null | Guards.cs:84:13:84:26 | ... < ... | +| not null | Guards.cs:84:25:84:26 | 10 | +| not null | Guards.cs:84:25:84:26 | (...) ... | +| not null | Guards.cs:85:13:85:19 | access to type Console | +| not null | Guards.cs:85:13:85:32 | call to method WriteLine | +| not null | Guards.cs:85:31:85:31 | access to parameter s | +| not null | Guards.cs:86:13:86:27 | ... <= ... | +| not null | Guards.cs:86:26:86:27 | 10 | +| not null | Guards.cs:86:26:86:27 | (...) ... | +| not null | Guards.cs:87:13:87:19 | access to type Console | +| not null | Guards.cs:87:13:87:32 | call to method WriteLine | +| not null | Guards.cs:87:31:87:31 | access to parameter s | +| not null | Guards.cs:88:13:88:29 | ... != ... | +| not null | Guards.cs:89:13:89:19 | access to type Console | +| not null | Guards.cs:89:13:89:32 | call to method WriteLine | +| not null | Guards.cs:89:31:89:31 | access to parameter s | +| not null | Guards.cs:91:13:91:19 | access to type Console | +| not null | Guards.cs:91:13:91:32 | call to method WriteLine | +| not null | Guards.cs:92:13:92:30 | ... != ... | +| not null | Guards.cs:92:25:92:25 | 1 | +| not null | Guards.cs:92:25:92:25 | (...) ... | +| not null | Guards.cs:92:30:92:30 | 0 | +| not null | Guards.cs:92:30:92:30 | (...) ... | +| not null | Guards.cs:93:13:93:19 | access to type Console | +| not null | Guards.cs:93:13:93:32 | call to method WriteLine | +| not null | Guards.cs:95:13:95:19 | access to type Console | +| not null | Guards.cs:95:13:95:32 | call to method WriteLine | +| not null | Guards.cs:96:13:96:19 | ... == ... | +| not null | Guards.cs:96:18:96:19 | "" | +| not null | Guards.cs:97:13:97:19 | access to type Console | +| not null | Guards.cs:97:13:97:32 | call to method WriteLine | +| not null | Guards.cs:97:31:97:31 | access to parameter s | +| not null | Guards.cs:99:13:99:19 | access to type Console | +| not null | Guards.cs:99:13:99:32 | call to method WriteLine | +| not null | Guards.cs:104:13:104:13 | access to parameter g | +| not null | Guards.cs:104:13:104:45 | ... == ... | +| not null | Guards.cs:105:19:105:33 | object creation of type Exception | +| not null | Guards.cs:106:9:106:9 | access to parameter g | +| not null | Guards.cs:106:9:106:18 | access to property Property | +| not null | Guards.cs:107:9:107:15 | access to type Console | +| not null | Guards.cs:107:9:107:52 | call to method WriteLine | +| not null | Guards.cs:107:27:107:27 | access to parameter g | +| not null | Guards.cs:108:9:108:15 | access to type Console | +| not null | Guards.cs:108:9:108:43 | call to method WriteLine | +| not null | Guards.cs:108:27:108:27 | access to parameter g | +| not null | Guards.cs:108:27:108:36 | access to property Property | +| not null | Guards.cs:113:21:113:21 | access to parameter g | +| not null | Guards.cs:114:14:114:14 | access to parameter g | +| not null | Guards.cs:114:14:114:23 | access to property Property | +| not null | Guards.cs:114:14:114:32 | access to property Property | +| not null | Guards.cs:115:9:115:55 | ... = ... | +| not null | Guards.cs:115:17:115:17 | access to parameter g | +| not null | Guards.cs:115:17:115:26 | access to property Property | +| not null | Guards.cs:115:17:115:35 | access to property Property | +| not null | Guards.cs:115:17:115:55 | ... ?? ... | +| not null | Guards.cs:115:46:115:55 | throw ... | +| not null | Guards.cs:116:9:116:15 | access to type Console | +| not null | Guards.cs:116:9:116:52 | call to method WriteLine | +| not null | Guards.cs:116:27:116:27 | access to parameter g | +| not null | Guards.cs:116:27:116:36 | access to property Property | +| not null | Guards.cs:116:27:116:45 | access to property Property | +| not null | Guards.cs:116:27:116:51 | access to field Field | +| not null | Guards.cs:117:9:117:9 | access to parameter g | +| not null | Guards.cs:117:9:117:18 | access to property Property | +| not null | Guards.cs:118:9:118:15 | access to type Console | +| not null | Guards.cs:118:9:118:52 | call to method WriteLine | +| not null | Guards.cs:118:27:118:27 | access to parameter g | +| not null | Guards.cs:119:9:119:15 | access to type Console | +| not null | Guards.cs:119:9:119:43 | call to method WriteLine | +| not null | Guards.cs:119:27:119:27 | access to parameter g | +| not null | Guards.cs:119:27:119:36 | access to property Property | +| not null | Guards.cs:124:13:124:14 | access to local variable b1 | +| not null | Guards.cs:124:13:124:30 | Boolean b1 = ... | +| not null | Guards.cs:124:18:124:30 | call to method Equals | +| not null | Guards.cs:125:18:125:19 | access to parameter s1 | +| not null | Guards.cs:125:29:125:30 | access to parameter s1 | +| not null | Guards.cs:130:13:130:21 | ... is ... | +| not null | Guards.cs:131:20:131:27 | access to property Length | +| not null | Guards.cs:132:16:132:16 | access to parameter s | +| not null | Guards.cs:132:16:132:23 | access to property Length | +| not null | Guards.cs:137:13:137:25 | ... is ... | +| not null | Guards.cs:137:18:137:23 | access to type String | +| not null | Guards.cs:138:20:138:20 | access to parameter s | +| not null | Guards.cs:138:20:138:27 | access to property Length | +| not null | Guards.cs:139:16:139:23 | access to property Length | +| not null | Guards.cs:144:13:144:25 | ... is ... | +| not null | Guards.cs:145:20:145:20 | access to local variable s | +| not null | Guards.cs:153:18:153:31 | access to type Action | +| not null | Guards.cs:154:24:154:24 | access to parameter o | +| not null | Guards.cs:156:24:156:24 | access to local variable a | +| not null | Guards.cs:157:18:157:19 | "" | +| not null | Guards.cs:158:24:158:24 | access to parameter o | +| not null | Guards.cs:159:18:159:21 | null | +| not null | Guards.cs:162:24:162:24 | access to parameter o | +| not null | Guards.cs:168:13:168:41 | !... | +| not null | Guards.cs:168:14:168:19 | access to type String | +| not null | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | +| not null | Guards.cs:169:13:169:19 | access to type Console | +| not null | Guards.cs:169:13:169:32 | call to method WriteLine | +| not null | Guards.cs:169:31:169:31 | access to parameter x | +| not null | Guards.cs:172:34:172:42 | ... == ... | +| not null | Guards.cs:176:13:176:21 | ... is ... | +| not null | Guards.cs:177:20:177:23 | true | +| not null | Guards.cs:178:16:178:20 | false | +| not null | Guards.cs:181:34:181:42 | ... == ... | +| not null | Guards.cs:181:34:181:57 | ... ? ... : ... | +| not null | Guards.cs:181:46:181:49 | true | +| not null | Guards.cs:181:53:181:57 | false | +| not null | Guards.cs:183:37:183:49 | !... | +| not null | Guards.cs:183:38:183:49 | call to method NullTest3 | +| not null | Guards.cs:183:38:183:49 | this access | +| not null | Guards.cs:185:38:185:46 | ... == ... | +| not null | Guards.cs:185:38:185:60 | ... ? ... : ... | +| not null | Guards.cs:185:50:185:53 | true | +| not null | Guards.cs:185:57:185:60 | true | +| not null | Guards.cs:189:13:189:25 | !... | +| not null | Guards.cs:189:14:189:25 | call to method NullTest1 | +| not null | Guards.cs:189:14:189:25 | this access | +| not null | Guards.cs:190:13:190:19 | access to type Console | +| not null | Guards.cs:190:13:190:32 | call to method WriteLine | +| not null | Guards.cs:191:13:191:25 | !... | +| not null | Guards.cs:191:14:191:25 | call to method NullTest2 | +| not null | Guards.cs:191:14:191:25 | this access | +| not null | Guards.cs:192:13:192:19 | access to type Console | +| not null | Guards.cs:192:13:192:32 | call to method WriteLine | +| not null | Guards.cs:193:13:193:25 | !... | +| not null | Guards.cs:193:14:193:25 | call to method NullTest3 | +| not null | Guards.cs:193:14:193:25 | this access | +| not null | Guards.cs:194:13:194:19 | access to type Console | +| not null | Guards.cs:194:13:194:32 | call to method WriteLine | +| not null | Guards.cs:195:13:195:27 | call to method NotNullTest4 | +| not null | Guards.cs:195:13:195:27 | this access | +| not null | Guards.cs:196:13:196:19 | access to type Console | +| not null | Guards.cs:196:13:196:32 | call to method WriteLine | +| not null | Guards.cs:197:13:197:29 | !... | +| not null | Guards.cs:197:14:197:29 | call to method NullTestWrong | +| not null | Guards.cs:197:14:197:29 | this access | +| not null | Guards.cs:198:13:198:19 | access to type Console | +| not null | Guards.cs:198:13:198:32 | call to method WriteLine | +| not null | Guards.cs:203:13:203:21 | ... != ... | +| not null | Guards.cs:205:13:205:13 | access to parameter o | +| not null | Guards.cs:206:33:206:36 | access to parameter args | +| not null | Guards.cs:208:17:208:17 | access to parameter o | +| not null | Guards.cs:215:13:215:14 | access to local variable b2 | +| not null | Guards.cs:215:13:215:21 | Boolean b2 = ... | +| not null | Guards.cs:215:18:215:21 | true | +| not null | Guards.cs:216:13:216:14 | access to parameter b1 | +| not null | Guards.cs:217:13:217:14 | access to local variable b2 | +| not null | Guards.cs:217:13:217:22 | ... = ... | +| not null | Guards.cs:217:18:217:22 | false | +| not null | Guards.cs:218:17:218:18 | access to local variable b2 | +| not null | Guards.cs:220:18:220:21 | true | +| not null | Guards.cs:228:13:228:14 | access to local variable b2 | +| not null | Guards.cs:228:13:228:22 | Boolean b2 = ... | +| not null | Guards.cs:228:18:228:22 | false | +| not null | Guards.cs:229:13:229:14 | access to parameter b1 | +| not null | Guards.cs:230:13:230:14 | access to local variable b2 | +| not null | Guards.cs:230:13:230:21 | ... = ... | +| not null | Guards.cs:230:18:230:21 | true | +| not null | Guards.cs:231:17:231:18 | access to local variable b2 | +| not null | Guards.cs:233:18:233:21 | true | +| not null | Guards.cs:241:13:241:13 | access to local variable i | +| not null | Guards.cs:241:13:241:17 | Int32 i = ... | +| not null | Guards.cs:241:17:241:17 | 0 | +| not null | Guards.cs:242:13:242:13 | access to parameter b | +| not null | Guards.cs:243:13:243:13 | access to local variable i | +| not null | Guards.cs:243:13:243:17 | ... = ... | +| not null | Guards.cs:243:17:243:17 | 1 | +| not null | Guards.cs:244:17:244:17 | access to local variable i | +| not null | Guards.cs:246:18:246:18 | 1 | +| not null | Guards.cs:255:13:255:13 | access to local variable e | +| not null | Guards.cs:255:13:255:19 | E e = ... | +| not null | Guards.cs:255:17:255:17 | access to type E | +| not null | Guards.cs:255:17:255:19 | access to constant A | +| not null | Guards.cs:256:13:256:13 | access to parameter b | +| not null | Guards.cs:257:13:257:13 | access to local variable e | +| not null | Guards.cs:257:13:257:19 | ... = ... | +| not null | Guards.cs:257:17:257:17 | access to type E | +| not null | Guards.cs:257:17:257:19 | access to constant B | +| not null | Guards.cs:258:17:258:17 | access to local variable e | +| not null | Guards.cs:260:18:260:18 | access to type E | +| not null | Guards.cs:260:18:260:20 | access to constant B | +| not null | Guards.cs:268:13:268:41 | call to operator == | +| not null | Guards.cs:268:30:268:41 | call to method GetType | +| not null | Guards.cs:269:13:269:14 | access to parameter o1 | +| not null | Guards.cs:270:13:270:42 | call to operator == | +| not null | Guards.cs:270:30:270:31 | access to parameter o2 | +| not null | Guards.cs:278:13:278:26 | access to type Action | +| not null | Guards.cs:279:17:279:17 | access to parameter o | +| not null | Guards.cs:281:17:281:17 | access to local variable a | +| not null | Guards.cs:282:13:282:14 | "" | +| not null | Guards.cs:283:17:283:17 | access to parameter o | +| not null | Guards.cs:287:17:287:17 | access to parameter o | +| not null | Guards.cs:293:13:293:14 | access to local variable b2 | +| not null | Guards.cs:293:13:293:21 | Boolean b2 = ... | +| not null | Guards.cs:293:18:293:21 | true | +| not null | Guards.cs:294:13:294:14 | access to parameter b1 | +| not null | Guards.cs:295:13:295:14 | access to local variable b2 | +| not null | Guards.cs:295:13:295:22 | ... = ... | +| not null | Guards.cs:295:18:295:22 | false | +| not null | Guards.cs:296:16:296:17 | access to local variable b2 | +| not null | Guards.cs:296:16:300:9 | ... switch { ... } | +| not null | Guards.cs:298:13:298:16 | true | +| not null | Guards.cs:298:13:298:21 | ... => ... | +| not null | Guards.cs:298:21:298:21 | 0 | +| not null | Guards.cs:299:13:299:13 | _ | +| not null | Guards.cs:299:13:299:18 | ... => ... | +| not null | Guards.cs:299:18:299:18 | 1 | +| not null | Guards.cs:305:13:305:14 | access to local variable b2 | +| not null | Guards.cs:305:13:305:22 | Boolean b2 = ... | +| not null | Guards.cs:305:18:305:22 | false | +| not null | Guards.cs:306:13:306:14 | access to parameter b1 | +| not null | Guards.cs:307:13:307:14 | access to local variable b2 | +| not null | Guards.cs:307:13:307:21 | ... = ... | +| not null | Guards.cs:307:18:307:21 | true | +| not null | Guards.cs:308:16:308:17 | access to local variable b2 | +| not null | Guards.cs:308:16:312:9 | ... switch { ... } | +| not null | Guards.cs:310:13:310:16 | true | +| not null | Guards.cs:310:13:310:21 | ... => ... | +| not null | Guards.cs:310:21:310:21 | 0 | +| not null | Guards.cs:311:13:311:13 | _ | +| not null | Guards.cs:311:13:311:18 | ... => ... | +| not null | Guards.cs:311:18:311:18 | 1 | +| not null | Guards.cs:317:13:317:13 | access to local variable i | +| not null | Guards.cs:317:13:317:17 | Int32 i = ... | +| not null | Guards.cs:317:17:317:17 | 0 | +| not null | Guards.cs:318:13:318:13 | access to parameter b | +| not null | Guards.cs:319:13:319:13 | access to local variable i | +| not null | Guards.cs:319:13:319:17 | ... = ... | +| not null | Guards.cs:319:17:319:17 | 1 | +| not null | Guards.cs:320:16:320:16 | access to local variable i | +| not null | Guards.cs:320:16:324:9 | ... switch { ... } | +| not null | Guards.cs:322:13:322:13 | 1 | +| not null | Guards.cs:322:13:322:18 | ... => ... | +| not null | Guards.cs:322:18:322:18 | 0 | +| not null | Guards.cs:323:13:323:13 | _ | +| not null | Guards.cs:323:13:323:18 | ... => ... | +| not null | Guards.cs:323:18:323:18 | 1 | +| not null | Guards.cs:329:13:329:13 | access to local variable e | +| not null | Guards.cs:329:13:329:19 | E e = ... | +| not null | Guards.cs:329:17:329:17 | access to type E | +| not null | Guards.cs:329:17:329:19 | access to constant A | +| not null | Guards.cs:330:13:330:13 | access to parameter b | +| not null | Guards.cs:331:13:331:13 | access to local variable e | +| not null | Guards.cs:331:13:331:19 | ... = ... | +| not null | Guards.cs:331:17:331:17 | access to type E | +| not null | Guards.cs:331:17:331:19 | access to constant B | +| not null | Guards.cs:332:16:332:16 | access to local variable e | +| not null | Guards.cs:332:16:336:9 | ... switch { ... } | +| not null | Guards.cs:334:13:334:13 | access to type E | +| not null | Guards.cs:334:13:334:15 | access to constant B | +| not null | Guards.cs:334:13:334:20 | ... => ... | +| not null | Guards.cs:334:20:334:20 | 0 | +| not null | Guards.cs:335:13:335:13 | _ | +| not null | Guards.cs:335:13:335:18 | ... => ... | +| not null | Guards.cs:335:18:335:18 | 1 | +| not null | Guards.cs:341:20:341:20 | access to parameter b | +| not null | Guards.cs:341:31:341:32 | "" | +| not null | Guards.cs:342:13:342:21 | ... != ... | +| not null | Guards.cs:342:13:342:27 | ... && ... | +| not null | Guards.cs:342:26:342:27 | !... | +| not null | Guards.cs:342:27:342:27 | access to parameter b | +| not null | Guards.cs:343:13:343:19 | access to type Console | +| not null | Guards.cs:343:13:343:39 | call to method WriteLine | +| not null | Guards.cs:343:31:343:31 | access to local variable s | +| not null | Guards.cs:343:31:343:38 | access to property Length | +| not null | Guards.cs:348:13:348:25 | ... is ... | +| not null | Guards.cs:349:13:349:13 | access to parameter o | | null | Assert.cs:9:24:9:27 | null | | null | Assert.cs:10:27:10:30 | null | | null | Assert.cs:16:24:16:27 | null | | null | Assert.cs:23:24:23:27 | null | | null | Assert.cs:30:24:30:27 | null | | null | Assert.cs:31:28:31:31 | null | +| null | Assert.cs:32:27:32:27 | access to local variable s | | null | Assert.cs:37:24:37:27 | null | | null | Assert.cs:38:28:38:31 | null | | null | Assert.cs:44:24:44:27 | null | | null | Assert.cs:45:29:45:32 | null | +| null | Assert.cs:46:27:46:27 | access to local variable s | | null | Assert.cs:51:24:51:27 | null | | null | Assert.cs:52:29:52:32 | null | | null | Assert.cs:58:24:58:27 | null | @@ -388,8 +893,10 @@ abstractValue | null | Assert.cs:66:29:66:32 | null | | null | Assert.cs:72:24:72:27 | null | | null | Assert.cs:73:28:73:31 | null | +| null | Assert.cs:74:27:74:27 | access to local variable s | | null | Assert.cs:79:24:79:27 | null | | null | Assert.cs:80:29:80:32 | null | +| null | Assert.cs:81:27:81:27 | access to local variable s | | null | Guards.cs:10:21:10:24 | null | | null | Guards.cs:24:18:24:21 | null | | null | Guards.cs:32:47:32:50 | null | @@ -411,82 +918,43 @@ abstractValue | null | Guards.cs:104:42:104:45 | null | | null | Guards.cs:106:9:106:25 | ... = ... | | null | Guards.cs:106:22:106:25 | null | +| null | Guards.cs:107:27:107:36 | access to property Property | +| null | Guards.cs:108:27:108:36 | access to property Property | | null | Guards.cs:115:52:115:55 | null | | null | Guards.cs:117:9:117:25 | ... = ... | | null | Guards.cs:117:22:117:25 | null | +| null | Guards.cs:118:27:118:36 | access to property Property | +| null | Guards.cs:119:27:119:36 | access to property Property | +| null | Guards.cs:130:18:130:21 | null | +| null | Guards.cs:131:20:131:20 | access to parameter s | +| null | Guards.cs:139:16:139:16 | access to parameter s | +| null | Guards.cs:159:18:159:21 | null | +| null | Guards.cs:160:24:160:24 | access to parameter o | | null | Guards.cs:172:39:172:42 | null | +| null | Guards.cs:176:18:176:21 | null | | null | Guards.cs:181:39:181:42 | null | | null | Guards.cs:185:43:185:46 | null | | null | Guards.cs:203:18:203:21 | null | +| null | Guards.cs:284:13:284:16 | null | +| null | Guards.cs:285:17:285:17 | access to parameter o | | null | Guards.cs:341:24:341:27 | null | | null | Guards.cs:342:18:342:21 | null | +| null | Guards.cs:348:22:348:25 | null | +| true | Assert.cs:73:36:73:36 | access to parameter b | +| true | Assert.cs:80:37:80:37 | access to parameter b | | true | Assert.cs:86:61:86:64 | true | | true | Guards.cs:177:20:177:23 | true | | true | Guards.cs:181:46:181:49 | true | +| true | Guards.cs:185:38:185:60 | ... ? ... : ... | | true | Guards.cs:185:50:185:53 | true | | true | Guards.cs:185:57:185:60 | true | | true | Guards.cs:215:18:215:21 | true | | true | Guards.cs:220:18:220:21 | true | +| true | Guards.cs:230:13:230:21 | ... = ... | | true | Guards.cs:230:18:230:21 | true | | true | Guards.cs:233:18:233:21 | true | | true | Guards.cs:293:18:293:21 | true | | true | Guards.cs:298:13:298:16 | true | +| true | Guards.cs:307:13:307:21 | ... = ... | | true | Guards.cs:307:18:307:21 | true | | true | Guards.cs:310:13:310:16 | true | -dualValue -| empty | non-empty | -| false | true | -| match 1 | non-match 1 | -| match 1 | non-match 1 | -| match "" | non-match "" | -| match "" | non-match "" | -| match Action a | non-match Action a | -| match Action a | non-match Action a | -| match _ | non-match _ | -| match _ | non-match _ | -| match _ | non-match _ | -| match _ | non-match _ | -| match _ | non-match _ | -| match access to constant B | non-match access to constant B | -| match access to constant B | non-match access to constant B | -| match access to type Action | non-match access to type Action | -| match access to type Action | non-match access to type Action | -| match null | non-match null | -| match null | non-match null | -| match true | non-match true | -| match true | non-match true | -| match true | non-match true | -| match true | non-match true | -| non-empty | empty | -| non-match 1 | match 1 | -| non-match 1 | match 1 | -| non-match "" | match "" | -| non-match "" | match "" | -| non-match Action a | match Action a | -| non-match Action a | match Action a | -| non-match _ | match _ | -| non-match _ | match _ | -| non-match _ | match _ | -| non-match _ | match _ | -| non-match _ | match _ | -| non-match access to constant B | match access to constant B | -| non-match access to constant B | match access to constant B | -| non-match access to type Action | match access to type Action | -| non-match access to type Action | match access to type Action | -| non-match null | match null | -| non-match null | match null | -| non-match true | match true | -| non-match true | match true | -| non-match true | match true | -| non-match true | match true | -| non-null | null | -| null | non-null | -| true | false | -singletonValue -| 0 | -| 1 | -| 3 | -| 10 | -| false | -| null | -| true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql index e433004e3d5..a28da604ff6 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql @@ -2,11 +2,5 @@ import csharp private import semmle.code.csharp.controlflow.Guards query predicate abstractValue(AbstractValue value, Expr e) { - e = value.getAnExpr() and e.fromSource() -} - -query predicate dualValue(AbstractValue value, AbstractValue dual) { dual = value.getDualValue() } - -query predicate singletonValue(AbstractValue value) { - value.isSingleton() and value.getAnExpr().fromSource() + Guards::InternalUtil::exprHasValue(e, value) and e.fromSource() } diff --git a/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected b/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected index 7bb568f695a..5ba1fdf8765 100644 --- a/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/EqualityCheck.expected @@ -190,12 +190,12 @@ | E.cs:83:13:83:24 | ... != ... | false | E.cs:83:21:83:24 | null | E.cs:83:13:83:16 | access to parameter vals | | E.cs:85:18:85:29 | ... != ... | false | E.cs:85:18:85:21 | access to parameter vals | E.cs:85:26:85:29 | null | | E.cs:85:18:85:29 | ... != ... | false | E.cs:85:26:85:29 | null | E.cs:85:18:85:21 | access to parameter vals | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:92:18:92:27 | access to constant MY_CONST_A | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:92:18:92:27 | access to constant MY_CONST_A | E.cs:90:17:90:27 | access to local variable switchguard | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:97:18:97:27 | access to constant MY_CONST_B | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:97:18:97:27 | access to constant MY_CONST_B | E.cs:90:17:90:27 | access to local variable switchguard | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:95:18:95:27 | access to constant MY_CONST_C | -| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:95:18:95:27 | access to constant MY_CONST_C | E.cs:90:17:90:27 | access to local variable switchguard | +| E.cs:92:13:92:28 | case ...: | true | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:92:18:92:27 | access to constant MY_CONST_A | +| E.cs:92:13:92:28 | case ...: | true | E.cs:92:18:92:27 | access to constant MY_CONST_A | E.cs:90:17:90:27 | access to local variable switchguard | +| E.cs:95:13:95:28 | case ...: | true | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:95:18:95:27 | access to constant MY_CONST_C | +| E.cs:95:13:95:28 | case ...: | true | E.cs:95:18:95:27 | access to constant MY_CONST_C | E.cs:90:17:90:27 | access to local variable switchguard | +| E.cs:97:13:97:28 | case ...: | true | E.cs:90:17:90:27 | access to local variable switchguard | E.cs:97:18:97:27 | access to constant MY_CONST_B | +| E.cs:97:13:97:28 | case ...: | true | E.cs:97:18:97:27 | access to constant MY_CONST_B | E.cs:90:17:90:27 | access to local variable switchguard | | E.cs:126:21:126:29 | ... == ... | true | E.cs:126:21:126:24 | access to local variable step | E.cs:126:29:126:29 | 0 | | E.cs:126:21:126:29 | ... == ... | true | E.cs:126:29:126:29 | 0 | E.cs:126:21:126:24 | access to local variable step | | E.cs:153:13:153:24 | ... != ... | false | E.cs:153:13:153:16 | access to local variable obj2 | E.cs:153:21:153:24 | null | @@ -252,6 +252,8 @@ | E.cs:442:13:442:18 | ... == ... | true | E.cs:442:18:442:18 | 1 | E.cs:442:13:442:13 | access to parameter i | | E.cs:447:13:447:18 | ... == ... | true | E.cs:447:13:447:13 | access to parameter i | E.cs:447:18:447:18 | 2 | | E.cs:447:13:447:18 | ... == ... | true | E.cs:447:18:447:18 | 2 | E.cs:447:13:447:13 | access to parameter i | +| E.cs:447:23:447:35 | ... is ... | false | E.cs:447:23:447:23 | access to parameter s | E.cs:447:32:447:35 | null | +| E.cs:447:23:447:35 | ... is ... | false | E.cs:447:32:447:35 | null | E.cs:447:23:447:23 | access to parameter s | | E.cs:452:13:452:18 | ... == ... | true | E.cs:452:13:452:13 | access to parameter i | E.cs:452:18:452:18 | 3 | | E.cs:452:13:452:18 | ... == ... | true | E.cs:452:18:452:18 | 3 | E.cs:452:13:452:13 | access to parameter i | | Forwarding.cs:59:13:59:21 | ... == ... | true | Forwarding.cs:59:13:59:13 | access to parameter o | Forwarding.cs:59:18:59:21 | null | diff --git a/csharp/ql/test/query-tests/Nullness/EqualityCheck.ql b/csharp/ql/test/query-tests/Nullness/EqualityCheck.ql index 3036911b5a6..1140d4e9a9d 100644 --- a/csharp/ql/test/query-tests/Nullness/EqualityCheck.ql +++ b/csharp/ql/test/query-tests/Nullness/EqualityCheck.ql @@ -1,5 +1,6 @@ import csharp import semmle.code.csharp.controlflow.Guards -from Expr e1, AbstractValue v, Expr e2 -select Internal::getAnEqualityCheck(e1, v, e2), v, e1, e2 +from Guard guard, Expr e1, Expr e2, boolean eqval +where guard.isEquality(e1, e2, eqval) +select guard, eqval, e1, e2 diff --git a/csharp/ql/test/query-tests/Nullness/Forwarding.cs b/csharp/ql/test/query-tests/Nullness/Forwarding.cs index 122c5036567..fc7b7eb2e8f 100644 --- a/csharp/ql/test/query-tests/Nullness/Forwarding.cs +++ b/csharp/ql/test/query-tests/Nullness/Forwarding.cs @@ -28,7 +28,7 @@ class ForwardingTests if (IsNotNull(s)) { - Console.WriteLine(s.Length); // GOOD + Console.WriteLine(s.Length); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-is-always-null] } if (IsNotNullWrong(s)) diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.expected b/csharp/ql/test/query-tests/Nullness/NullAlways.expected index f432be31d5a..a633c4a1506 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlways.expected +++ b/csharp/ql/test/query-tests/Nullness/NullAlways.expected @@ -37,6 +37,7 @@ | E.cs:405:16:405:16 | access to local variable i | Variable $@ is always null at this dereference. | E.cs:403:14:403:14 | i | i | | E.cs:439:13:439:13 | access to parameter s | Variable $@ is always null at this dereference. | E.cs:435:29:435:29 | s | s | | F.cs:8:9:8:9 | access to local variable o | Variable $@ is always null at this dereference. | F.cs:7:16:7:16 | o | o | +| Forwarding.cs:31:31:31:31 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s | | Forwarding.cs:36:31:36:31 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s | | Forwarding.cs:40:27:40:27 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s | | NullAlwaysBad.cs:9:30:9:30 | access to parameter s | Variable $@ is always null at this dereference. | NullAlwaysBad.cs:7:29:7:29 | s | s | From cbfb8fd1100729b6ea7bff2b3b61a90e3d34562d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 14:45:03 +0200 Subject: [PATCH 437/965] C#: Accept some test changes. --- .../guards/BooleanGuardedExpr.expected | 11 + .../guards/GuardedControlFlowNode.expected | 215 +++++++++--------- .../controlflow/guards/GuardedExpr.expected | 215 +++++++++--------- .../guards/MatchingGuardedExpr.expected | 25 -- .../controlflow/guards/MatchingGuardedExpr.ql | 8 - 5 files changed, 233 insertions(+), 241 deletions(-) delete mode 100644 csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.expected delete mode 100644 csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.ql diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 6e9829600eb..649e8362370 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -69,6 +69,17 @@ | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | | Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | | Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | +| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | true | +| Guards.cs:281:17:281:17 | access to local variable a | Guards.cs:280:13:281:28 | ... => ... | Guards.cs:281:17:281:17 | access to local variable a | true | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | true | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | true | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index c04f1459790..65fe4110707 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -1,22 +1,22 @@ -| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | non-null | +| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | not null | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | true | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | null | -| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | non-null | +| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | not null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:23 | access to local variable s | true | -| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | non-null | +| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | not null | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | true | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | null | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:24 | access to local variable s | false | -| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | non-null | +| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | not null | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:24 | access to local variable s | false | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null | -| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | non-null | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | not null | +| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | not null | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:23 | access to local variable s | true | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null | -| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | non-null | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | not null | +| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | not null | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:24 | access to local variable s | false | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null | @@ -32,168 +32,175 @@ | Assert.cs:93:33:93:34 | [assertion success] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | | Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | | Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | -| Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | non-empty | +| Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | +| Collections.cs:52:9:52:12 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:52:9:52:12 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | +| Collections.cs:53:13:53:16 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:53:13:53:16 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | -| Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:13 | access to local variable x | Collections.cs:64:13:64:13 | access to local variable x | empty | +| Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:19 | access to property Count | Collections.cs:64:13:64:13 | access to local variable x | 0 | | Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:24 | ... == ... | Collections.cs:64:13:64:13 | access to local variable x | true | +| Collections.cs:67:13:67:13 | access to local variable x | Collections.cs:64:13:64:19 | access to property Count | Collections.cs:64:13:64:13 | access to local variable x | 0 | | Collections.cs:67:13:67:13 | access to local variable x | Collections.cs:64:13:64:24 | ... == ... | Collections.cs:64:13:64:13 | access to local variable x | true | -| Collections.cs:95:31:95:34 | access to parameter args | Collections.cs:94:29:94:32 | access to parameter args | Collections.cs:94:29:94:32 | access to parameter args | non-empty | -| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | non-null | +| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | not null | | Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:24 | ... == ... | Guards.cs:10:16:10:16 | access to parameter s | false | -| Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | non-null | +| Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | not null | | Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:24 | ... == ... | Guards.cs:10:16:10:16 | access to parameter s | false | | Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:12:13:12:24 | ... > ... | Guards.cs:12:13:12:13 | access to parameter s | true | -| Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | non-null | +| Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | not null | | Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:21 | ... != ... | Guards.cs:24:13:24:13 | access to parameter s | true | | Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | Guards.cs:32:35:32:35 | access to parameter x | false | -| Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | non-null | -| Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | non-null | +| Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | not null | +| Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | not null | | Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:50 | ... == ... | Guards.cs:32:42:32:42 | access to parameter y | false | -| Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | non-null | +| Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | not null | | Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:21 | ... == ... | Guards.cs:35:13:35:13 | access to parameter x | false | -| Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | non-null | +| Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | non-null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | non-null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | non-null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | non-null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | -| Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | non-null | +| Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | -| Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:13 | access to parameter g | non-null | +| Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:13 | access to parameter g | not null | | Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:13 | access to parameter g | false | -| Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | non-null | +| Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | not null | | Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:19 | access to field Field | false | -| Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | non-null | +| Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | not null | | Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:13 | access to parameter g | false | -| Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | non-null | +| Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | not null | | Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:22 | access to property Property | false | -| Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:31 | access to property Property | non-null | +| Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:31 | access to property Property | not null | | Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:31 | access to property Property | false | -| Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | non-null | +| Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | not null | | Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:37 | access to field Field | false | -| Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | non-null | +| Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | not null | | Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:13 | access to parameter g | false | -| Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | non-null | +| Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | not null | | Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:22 | access to property Property | false | -| Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | non-null | +| Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | not null | | Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:24 | ... != ... | Guards.cs:68:16:68:16 | access to parameter s | true | -| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | non-null | -| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:21 | access to property Length | Guards.cs:78:13:78:13 | access to parameter s | non-null | +| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | not null | +| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:21 | access to property Length | Guards.cs:78:13:78:13 | access to parameter s | not null | | Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:26 | ... == ... | Guards.cs:78:13:78:13 | access to parameter s | true | -| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | non-null | -| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:21 | access to property Length | Guards.cs:80:13:80:13 | access to parameter s | non-null | +| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | not null | +| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:21 | access to property Length | Guards.cs:80:13:80:13 | access to parameter s | not null | | Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:25 | ... > ... | Guards.cs:80:13:80:13 | access to parameter s | true | -| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | non-null | -| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:21 | access to property Length | Guards.cs:82:13:82:13 | access to parameter s | non-null | +| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | not null | +| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:21 | access to property Length | Guards.cs:82:13:82:13 | access to parameter s | not null | | Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:26 | ... >= ... | Guards.cs:82:13:82:13 | access to parameter s | true | -| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | non-null | -| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:21 | access to property Length | Guards.cs:84:13:84:13 | access to parameter s | non-null | +| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | not null | +| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:21 | access to property Length | Guards.cs:84:13:84:13 | access to parameter s | not null | | Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:26 | ... < ... | Guards.cs:84:13:84:13 | access to parameter s | true | -| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | non-null | -| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:21 | access to property Length | Guards.cs:86:13:86:13 | access to parameter s | non-null | +| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | not null | +| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:21 | access to property Length | Guards.cs:86:13:86:13 | access to parameter s | not null | | Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:27 | ... <= ... | Guards.cs:86:13:86:13 | access to parameter s | true | -| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | non-null | -| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | non-null | +| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | not null | +| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | not null | | Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:29 | ... != ... | Guards.cs:88:13:88:13 | access to parameter s | true | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | null | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | null | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:29 | ... != ... | Guards.cs:88:13:88:13 | access to parameter s | false | | Guards.cs:93:31:93:31 | access to parameter s | Guards.cs:92:13:92:30 | ... != ... | Guards.cs:92:13:92:13 | access to parameter s | true | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | non-null | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:21 | access to property Length | Guards.cs:92:13:92:13 | access to parameter s | non-null | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:25 | ... - ... | Guards.cs:92:13:92:13 | access to parameter s | non-null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | not null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:21 | access to property Length | Guards.cs:92:13:92:13 | access to parameter s | not null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:25 | ... - ... | Guards.cs:92:13:92:13 | access to parameter s | not null | | Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:30 | ... != ... | Guards.cs:92:13:92:13 | access to parameter s | false | -| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | non-null | +| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | | +| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | not null | | Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:19 | ... == ... | Guards.cs:96:13:96:13 | access to parameter s | true | +| Guards.cs:99:31:99:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | not | | Guards.cs:99:31:99:31 | access to parameter s | Guards.cs:96:13:96:19 | ... == ... | Guards.cs:96:13:96:13 | access to parameter s | false | -| Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | -| Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | -| Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | | Guards.cs:114:14:114:14 | access to parameter g | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:21 | access to parameter g | null | | Guards.cs:114:14:114:23 | access to property Property | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:30 | access to property Property | null | | Guards.cs:114:14:114:32 | access to property Property | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:39 | access to property Property | null | | Guards.cs:114:14:114:38 | access to field Field | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:45 | access to field Field | null | -| Guards.cs:116:27:116:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:116:27:116:36 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:26 | access to property Property | non-null | -| Guards.cs:116:27:116:45 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:35 | access to property Property | non-null | -| Guards.cs:116:27:116:51 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | non-null | -| Guards.cs:117:9:117:9 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:118:27:118:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:119:27:119:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:125:29:125:30 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | non-null | +| Guards.cs:116:27:116:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:116:27:116:36 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:26 | access to property Property | not null | +| Guards.cs:116:27:116:45 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:35 | access to property Property | not null | +| Guards.cs:116:27:116:51 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | not null | +| Guards.cs:117:9:117:9 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:118:27:118:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:119:27:119:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:125:29:125:30 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | not null | | Guards.cs:131:20:131:20 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | null | | Guards.cs:131:20:131:20 | access to parameter s | Guards.cs:130:13:130:21 | ... is ... | Guards.cs:130:13:130:13 | access to parameter s | true | -| Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | non-null | +| Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | not null | | Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:21 | ... is ... | Guards.cs:130:13:130:13 | access to parameter s | false | -| Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | non-null | +| Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | not null | | Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:25 | ... is ... | Guards.cs:137:13:137:13 | access to parameter s | true | | Guards.cs:139:16:139:16 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | null | | Guards.cs:139:16:139:16 | access to parameter s | Guards.cs:137:13:137:25 | ... is ... | Guards.cs:137:13:137:13 | access to parameter s | false | | Guards.cs:146:16:146:16 | access to parameter o | Guards.cs:144:13:144:25 | ... is ... | Guards.cs:144:13:144:13 | access to parameter o | false | -| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match access to type Action | -| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match "" | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match null | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match "" | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | +| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | +| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | | +| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | +| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not | | Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | null | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match "" | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match null | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | +| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not | +| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | | Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | Guards.cs:168:40:168:40 | access to parameter x | false | -| Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | non-null | +| Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | not null | | Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:14:189:25 | call to method NullTest1 | Guards.cs:189:24:189:24 | access to parameter s | false | -| Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | non-null | +| Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | not null | | Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:14:191:25 | call to method NullTest2 | Guards.cs:191:24:191:24 | access to parameter s | false | -| Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | non-null | +| Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | not null | | Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:14:193:25 | call to method NullTest3 | Guards.cs:193:24:193:24 | access to parameter s | false | -| Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | non-null | +| Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | not null | | Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:13:195:27 | call to method NotNullTest4 | Guards.cs:195:26:195:26 | access to parameter s | true | -| Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | non-null | +| Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | not null | | Guards.cs:198:31:198:31 | access to parameter s | Guards.cs:197:14:197:29 | call to method NullTestWrong | Guards.cs:197:28:197:28 | access to parameter s | false | -| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | +| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | not null | | Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | -| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | +| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | not null | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | -| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | -| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | not null | +| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | not null | | Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | | Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | -| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match access to type Action | -| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match "" | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match null | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match "" | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | +| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | true | +| Guards.cs:279:17:279:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | true | +| Guards.cs:281:17:281:17 | access to local variable a | Guards.cs:280:13:281:28 | ... => ... | Guards.cs:281:17:281:17 | access to local variable a | true | +| Guards.cs:281:17:281:28 | call to method ToString | Guards.cs:280:13:281:28 | ... => ... | Guards.cs:281:17:281:28 | call to method ToString | true | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | true | +| Guards.cs:283:17:283:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:283:17:283:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | true | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not | | Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | null | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match _ | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match "" | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match null | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | true | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | true | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:28 | call to method ToString | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | non-null | -| Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | non-null | +| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | not null | +| Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | not null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | -| Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | non-null | +| Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | not null | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index ec693ae3cdd..6dccae8756d 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -1,22 +1,22 @@ -| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | non-null | +| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | not null | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | true | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | null | -| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | non-null | +| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | not null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:23 | access to local variable s | true | -| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | non-null | +| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | not null | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | true | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | null | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:24 | access to local variable s | false | -| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | non-null | +| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | not null | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:24 | access to local variable s | false | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | non-null | -| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | non-null | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | not null | +| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | not null | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:23 | access to local variable s | true | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | non-null | -| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | non-null | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | not null | +| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | not null | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:24 | access to local variable s | false | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | null | @@ -28,168 +28,175 @@ | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s | false | | Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | | Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | -| Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | Collections.cs:49:13:49:16 | access to parameter args | non-empty | +| Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | +| Collections.cs:52:9:52:12 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:52:9:52:12 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | +| Collections.cs:53:13:53:16 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:53:13:53:16 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | -| Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:13 | access to local variable x | Collections.cs:64:13:64:13 | access to local variable x | empty | +| Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:19 | access to property Count | Collections.cs:64:13:64:13 | access to local variable x | 0 | | Collections.cs:66:13:66:13 | access to local variable x | Collections.cs:64:13:64:24 | ... == ... | Collections.cs:64:13:64:13 | access to local variable x | true | +| Collections.cs:67:13:67:13 | access to local variable x | Collections.cs:64:13:64:19 | access to property Count | Collections.cs:64:13:64:13 | access to local variable x | 0 | | Collections.cs:67:13:67:13 | access to local variable x | Collections.cs:64:13:64:24 | ... == ... | Collections.cs:64:13:64:13 | access to local variable x | true | -| Collections.cs:95:31:95:34 | access to parameter args | Collections.cs:94:29:94:32 | access to parameter args | Collections.cs:94:29:94:32 | access to parameter args | non-empty | -| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | non-null | +| Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | not null | | Guards.cs:12:13:12:13 | access to parameter s | Guards.cs:10:16:10:24 | ... == ... | Guards.cs:10:16:10:16 | access to parameter s | false | -| Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | non-null | +| Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | Guards.cs:10:16:10:16 | access to parameter s | not null | | Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:10:16:10:24 | ... == ... | Guards.cs:10:16:10:16 | access to parameter s | false | | Guards.cs:14:31:14:31 | access to parameter s | Guards.cs:12:13:12:24 | ... > ... | Guards.cs:12:13:12:13 | access to parameter s | true | -| Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | non-null | +| Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | Guards.cs:24:13:24:13 | access to parameter s | not null | | Guards.cs:26:31:26:31 | access to parameter s | Guards.cs:24:13:24:21 | ... != ... | Guards.cs:24:13:24:13 | access to parameter s | true | | Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:14:32:36 | call to method IsNullOrEmpty | Guards.cs:32:35:32:35 | access to parameter x | false | -| Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | non-null | -| Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | non-null | +| Guards.cs:33:31:33:31 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | Guards.cs:32:35:32:35 | access to parameter x | not null | +| Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | Guards.cs:32:42:32:42 | access to parameter y | not null | | Guards.cs:33:35:33:35 | access to parameter y | Guards.cs:32:42:32:50 | ... == ... | Guards.cs:32:42:32:42 | access to parameter y | false | -| Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | non-null | +| Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | Guards.cs:35:13:35:13 | access to parameter x | not null | | Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:21 | ... == ... | Guards.cs:35:13:35:13 | access to parameter x | false | -| Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | non-null | +| Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | non-null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | non-null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | non-null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | non-null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | -| Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | non-null | +| Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | -| Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:13 | access to parameter g | non-null | +| Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:13 | access to parameter g | not null | | Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:13 | access to parameter g | false | -| Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | non-null | +| Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | Guards.cs:53:13:53:19 | access to field Field | not null | | Guards.cs:55:27:55:33 | access to field Field | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:19 | access to field Field | false | -| Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | non-null | +| Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | not null | | Guards.cs:62:27:62:27 | access to parameter g | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:13 | access to parameter g | false | -| Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | non-null | +| Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | not null | | Guards.cs:62:27:62:36 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:22 | access to property Property | false | -| Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:31 | access to property Property | non-null | +| Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:31 | access to property Property | not null | | Guards.cs:62:27:62:45 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:31 | access to property Property | false | -| Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | non-null | +| Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:37 | access to field Field | not null | | Guards.cs:62:27:62:51 | access to field Field | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:37 | access to field Field | false | -| Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | non-null | +| Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:13 | access to parameter g | not null | | Guards.cs:63:27:63:27 | access to parameter g | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:13 | access to parameter g | false | -| Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | non-null | +| Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:37 | access to field Field | Guards.cs:60:13:60:22 | access to property Property | not null | | Guards.cs:63:27:63:36 | access to property Property | Guards.cs:60:13:60:45 | ... == ... | Guards.cs:60:13:60:22 | access to property Property | false | -| Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | non-null | +| Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | Guards.cs:68:16:68:16 | access to parameter s | not null | | Guards.cs:70:31:70:31 | access to parameter s | Guards.cs:68:16:68:24 | ... != ... | Guards.cs:68:16:68:16 | access to parameter s | true | -| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | non-null | -| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:21 | access to property Length | Guards.cs:78:13:78:13 | access to parameter s | non-null | +| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | Guards.cs:78:13:78:13 | access to parameter s | not null | +| Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:21 | access to property Length | Guards.cs:78:13:78:13 | access to parameter s | not null | | Guards.cs:79:31:79:31 | access to parameter s | Guards.cs:78:13:78:26 | ... == ... | Guards.cs:78:13:78:13 | access to parameter s | true | -| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | non-null | -| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:21 | access to property Length | Guards.cs:80:13:80:13 | access to parameter s | non-null | +| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | Guards.cs:80:13:80:13 | access to parameter s | not null | +| Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:21 | access to property Length | Guards.cs:80:13:80:13 | access to parameter s | not null | | Guards.cs:81:31:81:31 | access to parameter s | Guards.cs:80:13:80:25 | ... > ... | Guards.cs:80:13:80:13 | access to parameter s | true | -| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | non-null | -| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:21 | access to property Length | Guards.cs:82:13:82:13 | access to parameter s | non-null | +| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | Guards.cs:82:13:82:13 | access to parameter s | not null | +| Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:21 | access to property Length | Guards.cs:82:13:82:13 | access to parameter s | not null | | Guards.cs:83:31:83:31 | access to parameter s | Guards.cs:82:13:82:26 | ... >= ... | Guards.cs:82:13:82:13 | access to parameter s | true | -| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | non-null | -| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:21 | access to property Length | Guards.cs:84:13:84:13 | access to parameter s | non-null | +| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | Guards.cs:84:13:84:13 | access to parameter s | not null | +| Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:21 | access to property Length | Guards.cs:84:13:84:13 | access to parameter s | not null | | Guards.cs:85:31:85:31 | access to parameter s | Guards.cs:84:13:84:26 | ... < ... | Guards.cs:84:13:84:13 | access to parameter s | true | -| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | non-null | -| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:21 | access to property Length | Guards.cs:86:13:86:13 | access to parameter s | non-null | +| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | Guards.cs:86:13:86:13 | access to parameter s | not null | +| Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:21 | access to property Length | Guards.cs:86:13:86:13 | access to parameter s | not null | | Guards.cs:87:31:87:31 | access to parameter s | Guards.cs:86:13:86:27 | ... <= ... | Guards.cs:86:13:86:13 | access to parameter s | true | -| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | non-null | -| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | non-null | +| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | not null | +| Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | not null | | Guards.cs:89:31:89:31 | access to parameter s | Guards.cs:88:13:88:29 | ... != ... | Guards.cs:88:13:88:13 | access to parameter s | true | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | Guards.cs:88:13:88:13 | access to parameter s | null | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:21 | access to property Length | Guards.cs:88:13:88:13 | access to parameter s | null | | Guards.cs:91:31:91:31 | access to parameter s | Guards.cs:88:13:88:29 | ... != ... | Guards.cs:88:13:88:13 | access to parameter s | false | | Guards.cs:93:31:93:31 | access to parameter s | Guards.cs:92:13:92:30 | ... != ... | Guards.cs:92:13:92:13 | access to parameter s | true | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | non-null | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:21 | access to property Length | Guards.cs:92:13:92:13 | access to parameter s | non-null | -| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:25 | ... - ... | Guards.cs:92:13:92:13 | access to parameter s | non-null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | Guards.cs:92:13:92:13 | access to parameter s | not null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:21 | access to property Length | Guards.cs:92:13:92:13 | access to parameter s | not null | +| Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:25 | ... - ... | Guards.cs:92:13:92:13 | access to parameter s | not null | | Guards.cs:95:31:95:31 | access to parameter s | Guards.cs:92:13:92:30 | ... != ... | Guards.cs:92:13:92:13 | access to parameter s | false | -| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | non-null | +| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | | +| Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | not null | | Guards.cs:97:31:97:31 | access to parameter s | Guards.cs:96:13:96:19 | ... == ... | Guards.cs:96:13:96:13 | access to parameter s | true | +| Guards.cs:99:31:99:31 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | Guards.cs:96:13:96:13 | access to parameter s | not | | Guards.cs:99:31:99:31 | access to parameter s | Guards.cs:96:13:96:19 | ... == ... | Guards.cs:96:13:96:13 | access to parameter s | false | -| Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:106:9:106:9 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | -| Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:107:27:107:27 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | -| Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | non-null | +| Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:37 | access to field Field | Guards.cs:104:13:104:13 | access to parameter g | not null | | Guards.cs:108:27:108:27 | access to parameter g | Guards.cs:104:13:104:45 | ... == ... | Guards.cs:104:13:104:13 | access to parameter g | false | | Guards.cs:114:14:114:14 | access to parameter g | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:21 | access to parameter g | null | | Guards.cs:114:14:114:23 | access to property Property | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:30 | access to property Property | null | | Guards.cs:114:14:114:32 | access to property Property | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:39 | access to property Property | null | | Guards.cs:114:14:114:38 | access to field Field | Guards.cs:113:21:113:45 | access to field Field | Guards.cs:113:21:113:45 | access to field Field | null | -| Guards.cs:116:27:116:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:116:27:116:36 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:26 | access to property Property | non-null | -| Guards.cs:116:27:116:45 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:35 | access to property Property | non-null | -| Guards.cs:116:27:116:51 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | non-null | -| Guards.cs:117:9:117:9 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:118:27:118:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:119:27:119:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | non-null | -| Guards.cs:125:29:125:30 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | non-null | +| Guards.cs:116:27:116:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:116:27:116:36 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:26 | access to property Property | not null | +| Guards.cs:116:27:116:45 | access to property Property | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:35 | access to property Property | not null | +| Guards.cs:116:27:116:51 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:41 | access to field Field | not null | +| Guards.cs:117:9:117:9 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:118:27:118:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:119:27:119:27 | access to parameter g | Guards.cs:115:17:115:41 | access to field Field | Guards.cs:115:17:115:17 | access to parameter g | not null | +| Guards.cs:125:29:125:30 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | Guards.cs:125:18:125:19 | access to parameter s1 | not null | | Guards.cs:131:20:131:20 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | null | | Guards.cs:131:20:131:20 | access to parameter s | Guards.cs:130:13:130:21 | ... is ... | Guards.cs:130:13:130:13 | access to parameter s | true | -| Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | non-null | +| Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | Guards.cs:130:13:130:13 | access to parameter s | not null | | Guards.cs:132:16:132:16 | access to parameter s | Guards.cs:130:13:130:21 | ... is ... | Guards.cs:130:13:130:13 | access to parameter s | false | -| Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | non-null | +| Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | not null | | Guards.cs:138:20:138:20 | access to parameter s | Guards.cs:137:13:137:25 | ... is ... | Guards.cs:137:13:137:13 | access to parameter s | true | | Guards.cs:139:16:139:16 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | Guards.cs:137:13:137:13 | access to parameter s | null | | Guards.cs:139:16:139:16 | access to parameter s | Guards.cs:137:13:137:25 | ... is ... | Guards.cs:137:13:137:13 | access to parameter s | false | | Guards.cs:146:16:146:16 | access to parameter o | Guards.cs:144:13:144:25 | ... is ... | Guards.cs:144:13:144:13 | access to parameter o | false | -| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match access to type Action | -| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match "" | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | match null | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match "" | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | +| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | +| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | | +| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | +| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not | | Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | null | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match "" | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match Action a | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match access to type Action | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-match null | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | non-null | +| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not | +| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | not null | | Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | Guards.cs:168:40:168:40 | access to parameter x | false | -| Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | non-null | +| Guards.cs:169:31:169:31 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | Guards.cs:168:40:168:40 | access to parameter x | not null | | Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:14:189:25 | call to method NullTest1 | Guards.cs:189:24:189:24 | access to parameter s | false | -| Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | non-null | +| Guards.cs:190:31:190:31 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | Guards.cs:189:24:189:24 | access to parameter s | not null | | Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:14:191:25 | call to method NullTest2 | Guards.cs:191:24:191:24 | access to parameter s | false | -| Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | non-null | +| Guards.cs:192:31:192:31 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | Guards.cs:191:24:191:24 | access to parameter s | not null | | Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:14:193:25 | call to method NullTest3 | Guards.cs:193:24:193:24 | access to parameter s | false | -| Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | non-null | +| Guards.cs:194:31:194:31 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | Guards.cs:193:24:193:24 | access to parameter s | not null | | Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:13:195:27 | call to method NotNullTest4 | Guards.cs:195:26:195:26 | access to parameter s | true | -| Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | non-null | +| Guards.cs:196:31:196:31 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | Guards.cs:195:26:195:26 | access to parameter s | not null | | Guards.cs:198:31:198:31 | access to parameter s | Guards.cs:197:14:197:29 | call to method NullTestWrong | Guards.cs:197:28:197:28 | access to parameter s | false | -| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | +| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | not null | | Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | -| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | +| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | not null | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | -| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | -| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | not null | +| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | not null | | Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | | Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | -| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match access to type Action | -| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match "" | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match null | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match "" | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | +| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | true | +| Guards.cs:279:17:279:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | true | +| Guards.cs:281:17:281:17 | access to local variable a | Guards.cs:280:13:281:28 | ... => ... | Guards.cs:281:17:281:17 | access to local variable a | true | +| Guards.cs:281:17:281:28 | call to method ToString | Guards.cs:280:13:281:28 | ... => ... | Guards.cs:281:17:281:28 | call to method ToString | true | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | true | +| Guards.cs:283:17:283:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:283:17:283:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | true | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not | | Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | null | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match _ | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match "" | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match Action a | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match access to type Action | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-match null | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | true | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | +| Guards.cs:285:17:285:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | true | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | not null | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | +| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | false | +| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:28 | call to method ToString | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | -| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | non-null | -| Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | non-null | +| Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | not null | +| Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | not null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | -| Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | non-null | +| Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | Guards.cs:348:13:348:13 | access to parameter o | not null | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.expected deleted file mode 100644 index 7087e3d5493..00000000000 --- a/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.expected +++ /dev/null @@ -1,25 +0,0 @@ -| Guards.cs:154:24:154:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:153:13:153:34 | case ...: | match access to type Action | true | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:153:13:153:34 | case ...: | non-match access to type Action | false | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:155:13:155:34 | case ...: | non-match Action a | false | -| Guards.cs:158:24:158:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:157:13:157:20 | case ...: | match "" | true | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:153:13:153:34 | case ...: | non-match access to type Action | false | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:155:13:155:34 | case ...: | non-match Action a | false | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:157:13:157:20 | case ...: | non-match "" | false | -| Guards.cs:160:24:160:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:159:13:159:22 | case ...: | match null | true | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:153:13:153:34 | case ...: | non-match access to type Action | false | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:155:13:155:34 | case ...: | non-match Action a | false | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:157:13:157:20 | case ...: | non-match "" | false | -| Guards.cs:162:24:162:24 | access to parameter o | Guards.cs:151:17:151:17 | access to parameter o | Guards.cs:159:13:159:22 | case ...: | non-match null | false | -| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | match access to type Action | true | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | non-match access to type Action | false | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:280:13:281:28 | ... => ... | non-match Action a | false | -| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | match "" | true | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | non-match access to type Action | false | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:280:13:281:28 | ... => ... | non-match Action a | false | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | non-match "" | false | -| Guards.cs:285:17:285:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | match null | true | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | non-match access to type Action | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:280:13:281:28 | ... => ... | non-match Action a | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | non-match "" | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | non-match null | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | match _ | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.ql b/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.ql deleted file mode 100644 index 93b8d565834..00000000000 --- a/csharp/ql/test/library-tests/controlflow/guards/MatchingGuardedExpr.ql +++ /dev/null @@ -1,8 +0,0 @@ -import csharp -import semmle.code.csharp.controlflow.Guards - -from GuardedExpr ge, Expr e, AbstractValues::MatchValue v, boolean match -where - e = ge.getAGuard(e, v) and - if v.isMatch() then match = true else match = false -select ge, e, v.getCase(), v, match From 0df0816c955f6be01f7120229635df2259ff58d4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 12:57:17 +0100 Subject: [PATCH 438/965] Guards: Minor improvement to implications. --- shared/controlflow/codeql/controlflow/Guards.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 52c43537ca6..d271526d2ae 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -785,6 +785,8 @@ module Make< baseSsaValueCheck(def, ssaVal, g0, v0) | impliesStep1(g, v, g0, v0) + or + additionalImpliesStep(g, v, g0, v0) ) } From 72f1fe5d584342bb9008d695784eb6835ef59efb Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 12:57:55 +0100 Subject: [PATCH 439/965] C#: Exclude nullness sources that are deemed non-null. --- .../semmle/code/csharp/controlflow/Guards.qll | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 654d2700d54..6413fa4e93e 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -442,13 +442,16 @@ class DereferenceableExpr extends Expr { /** Holds if `guard` suggests that this expression may be `null`. */ predicate guardSuggestsMaybeNull(Guards::Guard guard) { - guard = this.getANullnessNullCheck(_, true) - or - LogicInput::additionalNullCheck(guard, _, this, true) - or - guard.isEquality(this, any(Expr n | nullValueImplied(n)), _) - or - Guards::nullGuard(guard, any(GuardValue v | exists(v.asBooleanValue())), this, true) + not nonNullValueImplied(this) and + ( + guard = this.getANullnessNullCheck(_, true) + or + LogicInput::additionalNullCheck(guard, _, this, true) + or + guard.isEquality(this, any(Expr n | nullValueImplied(n)), _) + or + Guards::nullGuard(guard, any(GuardValue v | exists(v.asBooleanValue())), this, true) + ) } } From 500fdb8723382b6d872d7be2106390b20927015f Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 15:42:41 +0100 Subject: [PATCH 440/965] Guards: Add support for assertions that exit rather than throw. --- shared/controlflow/codeql/controlflow/Guards.qll | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index d271526d2ae..17aee2a7cae 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -297,7 +297,7 @@ module Make< */ predicate isIntRange(int bound, boolean upper) { this = TIntRange(bound, upper) } - /** Holds if this value represents throwing an exception. */ + /** Holds if this value represents throwing an exception (or exiting). */ predicate isThrowsException() { this = TException(true) } /** Gets a textual representation of this value. */ @@ -368,12 +368,19 @@ module Make< e instanceof NonNullExpr and v.isNonNullValue() } + /** Holds if `t` is an exception-like successor type. */ + private predicate exceptionLike(SuccessorType t) { + t instanceof ExceptionSuccessor or + t instanceof ExitSuccessor + } + private predicate exceptionBranchPoint(BasicBlock bb1, BasicBlock normalSucc, BasicBlock excSucc) { - exists(SuccessorType norm, ExceptionSuccessor exc | + exists(SuccessorType norm, SuccessorType exc | bb1.getASuccessor(norm) = normalSucc and bb1.getASuccessor(exc) = excSucc and normalSucc != excSucc and - not norm instanceof ExceptionSuccessor + exceptionLike(exc) and + not exceptionLike(norm) ) } From b48d4d48347428f2ba2a430d3eba6245993f70da Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 15:43:29 +0100 Subject: [PATCH 441/965] C#: Recognize assertions as Guards. --- .../ql/lib/semmle/code/csharp/controlflow/Guards.qll | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 6413fa4e93e..4914450dfc9 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -287,6 +287,18 @@ private module LogicInput implements GuardsImpl::LogicInputSig { g2 = g1.(NullCoalescingExpr).getAnOperand() and v1.isNullValue() and v2 = v1 + or + exists(Assertion assert, AssertMethod target, int i | + assert.getAssertMethod() = target and + g1 = assert and + v1.getDualValue().isThrowsException() and + g2 = assert.getExpr(i) + | + target.(BooleanAssertMethod).getAnAssertionIndex(v2.asBooleanValue()) = i + or + target.(NullnessAssertMethod).getAnAssertionIndex(any(boolean isNull | v2.isNullness(isNull))) = + i + ) } } From e61ddf59d7d822c20cbba82710e5fa9d560a478f Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 15:46:23 +0100 Subject: [PATCH 442/965] C#: Remove assertion splitting. --- .../csharp/controlflow/internal/Splitting.qll | 136 +----------------- 1 file changed, 2 insertions(+), 134 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll index 210326b987c..63d2c181da4 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll @@ -24,17 +24,12 @@ private module Cached { cached newtype TSplitKind = TInitializerSplitKind() or - TConditionalCompletionSplitKind() or - TAssertionSplitKind() + TConditionalCompletionSplitKind() cached newtype TSplit = TInitializerSplit(Constructor c) { InitializerSplitting::constructorInitializes(c, _) } or - TConditionalCompletionSplit(ConditionalCompletion c) or - TAssertionSplit(AssertionSplitting::Assertion a, int i, boolean success) { - exists(a.getExpr(i)) and - success in [false, true] - } + TConditionalCompletionSplit(ConditionalCompletion c) } import Cached @@ -320,130 +315,3 @@ module ConditionalCompletionSplitting { int getNextListOrder() { result = InitializerSplitting::getNextListOrder() + 1 } } - -module AssertionSplitting { - import semmle.code.csharp.commons.Assertions - private import semmle.code.csharp.ExprOrStmtParent - - private AstNode getAnAssertionDescendant(Assertion a) { - result = a - or - result = getAnAssertionDescendant(a).getAChild() - } - - /** - * A split for assertions. For example, in - * - * ```csharp - * void M(int i) - * { - * Debug.Assert(i >= 0); - * System.Console.WriteLine("i is positive") - * } - * ``` - * - * we record whether `i >= 0` evaluates to `true` or `false`, and restrict the - * edges out of the assertion accordingly. - */ - class AssertionSplit extends Split, TAssertionSplit { - Assertion a; - boolean success; - int i; - - AssertionSplit() { this = TAssertionSplit(a, i, success) } - - /** Gets the assertion. */ - Assertion getAssertion() { result = a } - - /** Holds if this split represents a successful assertion. */ - predicate isSuccess() { success = true } - - override string toString() { - success = true and result = "assertion success" - or - success = false and result = "assertion failure" - } - } - - private class AssertionSplitKind extends SplitKind, TAssertionSplitKind { - override int getListOrder() { result = ConditionalCompletionSplitting::getNextListOrder() } - - override predicate isEnabled(AstNode cfe) { this.appliesTo(cfe) } - - override string toString() { result = "Assertion" } - } - - int getNextListOrder() { result = ConditionalCompletionSplitting::getNextListOrder() + 1 } - - private class AssertionSplitImpl extends SplitImpl instanceof AssertionSplit { - Assertion a; - boolean success; - int i; - - AssertionSplitImpl() { this = TAssertionSplit(a, i, success) } - - override AssertionSplitKind getKind() { any() } - - override predicate hasEntry(AstNode pred, AstNode succ, Completion c) { - exists(AssertMethod m | - last(a.getExpr(i), pred, c) and - succ(pred, succ, c) and - m = a.getAssertMethod() and - // The assertion only succeeds when all asserted arguments succeeded, so - // we only enter a "success" state after the last argument has succeeded. - // - // The split is only entered if we are not already in a "failing" state - // for one of the previous arguments, which ensures that the "success" - // state is only entered when all arguments succeed. This also means - // that if multiple arguments fail, then the first failing argument - // will determine the exception being thrown by the assertion. - if success = true then i = max(int j | exists(a.getExpr(j))) else any() - | - exists(boolean b | i = m.(BooleanAssertMethod).getAnAssertionIndex(b) | - c instanceof TrueCompletion and success = b - or - c instanceof FalseCompletion and success = b.booleanNot() - ) - or - exists(boolean b | i = m.(NullnessAssertMethod).getAnAssertionIndex(b) | - c.(NullnessCompletion).isNull() and success = b - or - c.(NullnessCompletion).isNonNull() and success = b.booleanNot() - ) - ) - } - - override predicate hasEntryScope(CfgScope scope, AstNode first) { none() } - - override predicate hasExit(AstNode pred, AstNode succ, Completion c) { - this.appliesTo(pred) and - pred = a and - succ(pred, succ, c) and - ( - success = true and - c instanceof NormalCompletion - or - success = false and - c = assertionCompletion(a, i) - ) - } - - override predicate hasExitScope(CfgScope scope, AstNode last, Completion c) { - this.appliesTo(last) and - last = a and - scopeLast(scope, last, c) and - ( - success = true and - c instanceof NormalCompletion - or - success = false and - c = assertionCompletion(a, i) - ) - } - - override predicate hasSuccessor(AstNode pred, AstNode succ, Completion c) { - this.appliesSucc(pred, succ, c) and - succ = getAnAssertionDescendant(a) - } - } -} From 87d89fd00f693b56dded40ca2b8879debfd76b14 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 28 Oct 2025 12:40:59 +0100 Subject: [PATCH 443/965] C#: Fix CFG for assertion. --- .../csharp/controlflow/internal/Completion.qll | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll index b1afbaed8ef..ab8bb233e2c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll @@ -390,11 +390,6 @@ private predicate invalidCastCandidate(CastExpr ce) { ce.getExpr().getType() = getACastExprBaseType(ce) } -private predicate assertion(Assertion a, int i, AssertMethod am, Expr e) { - e = a.getExpr(i) and - am = a.getAssertMethod() -} - /** Gets a valid completion when argument `i` fails in assertion `a`. */ Completion assertionCompletion(Assertion a, int i) { exists(AssertMethod am | am = a.getAssertMethod() | @@ -429,11 +424,6 @@ private predicate inBooleanContext(Expr e) { or e = any(SpecificCatchClause scc).getFilterClause() or - exists(BooleanAssertMethod m, int i | - assertion(_, i, m, e) and - i = m.getAnAssertionIndex(_) - ) - or e = any(LogicalNotExpr lne | inBooleanContext(lne)).getAnOperand() or exists(LogicalAndExpr lae | @@ -481,11 +471,6 @@ private predicate inNullnessContext(Expr e) { or exists(QualifiableExpr qe | qe.isConditional() | e = qe.getChildExpr(-1)) or - exists(NullnessAssertMethod m, int i | - assertion(_, i, m, e) and - i = m.getAnAssertionIndex(_) - ) - or exists(ConditionalExpr ce | inNullnessContext(ce) | (e = ce.getThen() or e = ce.getElse())) or exists(NullCoalescingExpr nce | inNullnessContext(nce) | e = nce.getRightOperand()) From 7a864c5244365843fde5fa5ad2d119244b1b5abc Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:13:12 +0000 Subject: [PATCH 444/965] Rust: Implement suggestion from review. --- rust/ql/src/queries/telemetry/DatabaseQuality.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/src/queries/telemetry/DatabaseQuality.qll b/rust/ql/src/queries/telemetry/DatabaseQuality.qll index 0c3e4dcd448..64adf9826dc 100644 --- a/rust/ql/src/queries/telemetry/DatabaseQuality.qll +++ b/rust/ql/src/queries/telemetry/DatabaseQuality.qll @@ -49,12 +49,12 @@ module MacroCallTargetStats implements StatsSig { result = count(MacroCall c | c.getFile() instanceof RelevantFile and c.hasMacroCallExpansion()) } - additional predicate isNotOkCall(MacroCall c) { not c.hasMacroCallExpansion() } - - int getNumberOfNotOk() { - result = count(MacroCall c | c.getFile() instanceof RelevantFile and isNotOkCall(c)) + additional predicate isNotOkCall(MacroCall c) { + c.getFile() instanceof RelevantFile and not c.hasMacroCallExpansion() } + int getNumberOfNotOk() { result = count(MacroCall c | isNotOkCall(c)) } + string getOkText() { result = "macro calls with call target" } string getNotOkText() { result = "macro calls with missing call target" } From 6ed8bcbcf3f872cf835d35f6ecb9432db270f201 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 27 Oct 2025 14:03:31 +0100 Subject: [PATCH 445/965] Rust: Add type inference tests for method resolution overlap --- .../PathResolutionConsistency.expected | 16 +- .../test/library-tests/type-inference/main.rs | 38 + .../type-inference/type-inference.expected | 8113 +++++++++-------- 3 files changed, 4119 insertions(+), 4048 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 78f5d853e13..02a800650f3 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -5,9 +5,13 @@ multipleCallTargets | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | -| main.rs:2481:13:2481:31 | ...::from(...) | -| main.rs:2482:13:2482:31 | ...::from(...) | -| main.rs:2483:13:2483:31 | ...::from(...) | -| main.rs:2489:13:2489:31 | ...::from(...) | -| main.rs:2490:13:2490:31 | ...::from(...) | -| main.rs:2491:13:2491:31 | ...::from(...) | +| main.rs:589:9:589:14 | S4.m() | +| main.rs:590:9:590:18 | ...::m(...) | +| main.rs:591:9:591:20 | ... .m() | +| main.rs:592:9:592:24 | ...::m(...) | +| main.rs:2519:13:2519:31 | ...::from(...) | +| main.rs:2520:13:2520:31 | ...::from(...) | +| main.rs:2521:13:2521:31 | ...::from(...) | +| main.rs:2527:13:2527:31 | ...::from(...) | +| main.rs:2528:13:2528:31 | ...::from(...) | +| main.rs:2529:13:2529:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index ecf74fbd7bb..9505b919318 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -535,6 +535,37 @@ mod impl_overlap { } } + trait MyTrait1 { + // MyTrait1::m + fn m(&self) {} + } + + trait MyTrait2: MyTrait1 {} + + #[derive(Debug)] + struct S4; + + impl MyTrait1 for S4 { + // ::m + fn m(&self) {} + } + + impl MyTrait2 for S4 {} + + #[derive(Debug)] + struct S5(T5); + + impl MyTrait1 for S5 { + // _as_MyTrait1>::m + fn m(&self) {} + } + + impl MyTrait2 for S5 {} + + impl MyTrait1 for S5 {} + + impl MyTrait2 for S5 {} + pub fn f() { let x = S1; println!("{:?}", x.common_method()); // $ target=S1::common_method @@ -554,6 +585,13 @@ mod impl_overlap { let w = S3(S1); println!("{:?}", w.m(x)); // $ target=S3::m println!("{:?}", S3::m(&w, x)); // $ target=S3::m + + S4.m(); // $ target=::m $ SPURIOUS: target=MyTrait1::m + S4::m(&S4); // $ target=::m $ SPURIOUS: target=MyTrait1::m + S5(0i32).m(); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m + S5::m(&S5(0i32)); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m + S5(true).m(); // $ target=MyTrait1::m + S5::m(&S5(true)); // $ target=MyTrait1::m } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 05ee936cf25..6b6d9a13593 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1787,4058 +1787,4087 @@ inferType | main.rs:534:13:534:16 | self | | file://:0:0:0:0 | & | | main.rs:534:13:534:16 | self | &T | main.rs:517:5:518:22 | S3 | | main.rs:534:13:534:16 | self | &T.T3 | main.rs:531:10:531:10 | T | -| main.rs:539:13:539:13 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:539:17:539:18 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:540:18:540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:540:18:540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:540:18:540:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:540:18:540:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:540:26:540:26 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:540:26:540:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:541:18:541:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:541:18:541:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:541:18:541:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:541:18:541:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:541:26:541:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | -| main.rs:541:44:541:44 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:542:18:542:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:542:18:542:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:542:18:542:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:542:18:542:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:542:26:542:26 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:542:26:542:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | -| main.rs:543:18:543:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:543:18:543:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:543:18:543:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:543:18:543:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:543:26:543:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | -| main.rs:543:46:543:46 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:545:13:545:13 | y | | main.rs:479:5:479:22 | S2 | -| main.rs:545:13:545:13 | y | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:545:17:545:22 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:545:17:545:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:545:20:545:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:546:18:546:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:546:18:546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:546:18:546:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:546:18:546:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:546:26:546:26 | y | | main.rs:479:5:479:22 | S2 | -| main.rs:546:26:546:26 | y | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:546:26:546:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:547:18:547:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:547:18:547:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:547:18:547:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:547:18:547:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:547:26:547:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | -| main.rs:547:50:547:55 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:547:50:547:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | -| main.rs:547:53:547:54 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:549:13:549:13 | z | | main.rs:479:5:479:22 | S2 | -| main.rs:549:13:549:13 | z | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:549:17:549:21 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:549:17:549:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:549:20:549:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:550:18:550:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:550:18:550:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:550:18:550:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:550:18:550:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:550:26:550:26 | z | | main.rs:479:5:479:22 | S2 | -| main.rs:550:26:550:26 | z | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:550:26:550:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:551:18:551:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:551:18:551:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:551:18:551:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:551:18:551:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:551:26:551:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | -| main.rs:551:44:551:48 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:551:44:551:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:551:47:551:47 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:552:18:552:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:552:18:552:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:552:18:552:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:552:18:552:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:552:26:552:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | -| main.rs:552:51:552:55 | S2(...) | | main.rs:479:5:479:22 | S2 | -| main.rs:552:51:552:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | -| main.rs:552:54:552:54 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:554:13:554:13 | w | | main.rs:517:5:518:22 | S3 | -| main.rs:554:13:554:13 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:554:17:554:22 | S3(...) | | main.rs:517:5:518:22 | S3 | -| main.rs:554:17:554:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:554:20:554:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:555:18:555:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:555:18:555:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:555:18:555:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:555:18:555:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:555:26:555:26 | w | | main.rs:517:5:518:22 | S3 | -| main.rs:555:26:555:26 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:555:26:555:31 | w.m(...) | | file://:0:0:0:0 | & | -| main.rs:555:26:555:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:555:26:555:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:555:30:555:30 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:556:18:556:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:556:18:556:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:556:18:556:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:556:18:556:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:556:26:556:37 | ...::m(...) | | file://:0:0:0:0 | & | -| main.rs:556:26:556:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:556:26:556:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:556:32:556:33 | &w | | file://:0:0:0:0 | & | -| main.rs:556:32:556:33 | &w | &T | main.rs:517:5:518:22 | S3 | -| main.rs:556:32:556:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:556:33:556:33 | w | | main.rs:517:5:518:22 | S3 | -| main.rs:556:33:556:33 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:556:36:556:36 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:573:19:573:22 | SelfParam | | main.rs:571:5:574:5 | Self [trait FirstTrait] | -| main.rs:578:19:578:22 | SelfParam | | main.rs:576:5:579:5 | Self [trait SecondTrait] | -| main.rs:581:64:581:64 | x | | main.rs:581:45:581:61 | T | -| main.rs:583:13:583:14 | s1 | | main.rs:581:35:581:42 | I | -| main.rs:583:18:583:18 | x | | main.rs:581:45:581:61 | T | -| main.rs:583:18:583:27 | x.method() | | main.rs:581:35:581:42 | I | -| main.rs:584:18:584:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:584:18:584:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:584:18:584:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:584:18:584:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:584:26:584:27 | s1 | | main.rs:581:35:581:42 | I | -| main.rs:587:65:587:65 | x | | main.rs:587:46:587:62 | T | -| main.rs:589:13:589:14 | s2 | | main.rs:587:36:587:43 | I | -| main.rs:589:18:589:18 | x | | main.rs:587:46:587:62 | T | -| main.rs:589:18:589:27 | x.method() | | main.rs:587:36:587:43 | I | -| main.rs:590:18:590:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:590:18:590:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:590:18:590:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:590:18:590:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:590:26:590:27 | s2 | | main.rs:587:36:587:43 | I | -| main.rs:593:49:593:49 | x | | main.rs:593:30:593:46 | T | -| main.rs:594:13:594:13 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:594:17:594:17 | x | | main.rs:593:30:593:46 | T | -| main.rs:594:17:594:26 | x.method() | | main.rs:563:5:564:14 | S1 | -| main.rs:595:18:595:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:595:18:595:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:595:18:595:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:595:18:595:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:595:26:595:26 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:598:53:598:53 | x | | main.rs:598:34:598:50 | T | -| main.rs:599:13:599:13 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:599:17:599:17 | x | | main.rs:598:34:598:50 | T | -| main.rs:599:17:599:26 | x.method() | | main.rs:563:5:564:14 | S1 | -| main.rs:600:18:600:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:600:18:600:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:600:18:600:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:600:18:600:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:600:26:600:26 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:603:43:603:43 | x | | main.rs:603:40:603:40 | T | -| main.rs:607:13:607:13 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:607:17:607:17 | x | | main.rs:603:40:603:40 | T | -| main.rs:607:17:607:26 | x.method() | | main.rs:563:5:564:14 | S1 | -| main.rs:608:18:608:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:608:18:608:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:608:18:608:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:608:18:608:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:608:26:608:26 | s | | main.rs:563:5:564:14 | S1 | -| main.rs:612:16:612:19 | SelfParam | | main.rs:611:5:615:5 | Self [trait Pair] | -| main.rs:614:16:614:19 | SelfParam | | main.rs:611:5:615:5 | Self [trait Pair] | -| main.rs:617:53:617:53 | x | | main.rs:617:50:617:50 | T | -| main.rs:617:59:617:59 | y | | main.rs:617:50:617:50 | T | -| main.rs:622:13:622:13 | _ | | main.rs:563:5:564:14 | S1 | -| main.rs:622:17:622:17 | x | | main.rs:617:50:617:50 | T | -| main.rs:622:17:622:23 | x.fst() | | main.rs:563:5:564:14 | S1 | -| main.rs:623:13:623:13 | _ | | main.rs:563:5:564:14 | S1 | -| main.rs:623:17:623:17 | y | | main.rs:617:50:617:50 | T | -| main.rs:623:17:623:26 | y.method() | | main.rs:563:5:564:14 | S1 | -| main.rs:626:58:626:58 | x | | main.rs:626:41:626:55 | T | -| main.rs:626:64:626:64 | y | | main.rs:626:41:626:55 | T | -| main.rs:628:13:628:14 | s1 | | main.rs:563:5:564:14 | S1 | -| main.rs:628:18:628:18 | x | | main.rs:626:41:626:55 | T | -| main.rs:628:18:628:24 | x.fst() | | main.rs:563:5:564:14 | S1 | -| main.rs:629:13:629:14 | s2 | | main.rs:566:5:567:14 | S2 | -| main.rs:629:18:629:18 | y | | main.rs:626:41:626:55 | T | -| main.rs:629:18:629:24 | y.snd() | | main.rs:566:5:567:14 | S2 | -| main.rs:630:18:630:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:630:18:630:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:630:18:630:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:630:18:630:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:630:32:630:33 | s1 | | main.rs:563:5:564:14 | S1 | -| main.rs:630:36:630:37 | s2 | | main.rs:566:5:567:14 | S2 | -| main.rs:633:69:633:69 | x | | main.rs:633:52:633:66 | T | -| main.rs:633:75:633:75 | y | | main.rs:633:52:633:66 | T | -| main.rs:635:13:635:14 | s1 | | main.rs:563:5:564:14 | S1 | -| main.rs:635:18:635:18 | x | | main.rs:633:52:633:66 | T | -| main.rs:635:18:635:24 | x.fst() | | main.rs:563:5:564:14 | S1 | -| main.rs:636:13:636:14 | s2 | | main.rs:633:41:633:49 | T2 | -| main.rs:636:18:636:18 | y | | main.rs:633:52:633:66 | T | -| main.rs:636:18:636:24 | y.snd() | | main.rs:633:41:633:49 | T2 | -| main.rs:637:18:637:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:637:18:637:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:637:18:637:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:637:18:637:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:637:32:637:33 | s1 | | main.rs:563:5:564:14 | S1 | -| main.rs:637:36:637:37 | s2 | | main.rs:633:41:633:49 | T2 | -| main.rs:640:50:640:50 | x | | main.rs:640:41:640:47 | T | -| main.rs:640:56:640:56 | y | | main.rs:640:41:640:47 | T | -| main.rs:642:13:642:14 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:642:18:642:18 | x | | main.rs:640:41:640:47 | T | -| main.rs:642:18:642:24 | x.fst() | | {EXTERNAL LOCATION} | bool | -| main.rs:643:13:643:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:643:18:643:18 | y | | main.rs:640:41:640:47 | T | -| main.rs:643:18:643:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:644:18:644:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:644:18:644:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:644:18:644:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:644:18:644:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:644:32:644:33 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:644:36:644:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:647:54:647:54 | x | | main.rs:647:41:647:51 | T | -| main.rs:647:60:647:60 | y | | main.rs:647:41:647:51 | T | -| main.rs:649:13:649:14 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:649:18:649:18 | x | | main.rs:647:41:647:51 | T | -| main.rs:649:18:649:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | -| main.rs:650:13:650:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:650:18:650:18 | y | | main.rs:647:41:647:51 | T | -| main.rs:650:18:650:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:651:18:651:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:651:18:651:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:651:18:651:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:651:18:651:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:651:32:651:33 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:651:36:651:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:659:18:659:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:659:18:659:22 | SelfParam | &T | main.rs:656:5:660:5 | Self [trait TraitWithSelfTp] | -| main.rs:662:40:662:44 | thing | | file://:0:0:0:0 | & | -| main.rs:662:40:662:44 | thing | &T | main.rs:662:17:662:37 | T | -| main.rs:662:56:664:5 | { ... } | | main.rs:662:14:662:14 | A | -| main.rs:663:9:663:13 | thing | | file://:0:0:0:0 | & | -| main.rs:663:9:663:13 | thing | &T | main.rs:662:17:662:37 | T | -| main.rs:663:9:663:21 | thing.get_a() | | main.rs:662:14:662:14 | A | -| main.rs:667:44:667:48 | thing | | main.rs:667:24:667:41 | S | -| main.rs:667:61:670:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:668:13:668:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:668:13:668:15 | _ms | T | main.rs:667:24:667:41 | S | -| main.rs:668:19:668:23 | thing | | main.rs:667:24:667:41 | S | -| main.rs:668:19:668:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | -| main.rs:668:19:668:31 | thing.get_a() | T | main.rs:667:24:667:41 | S | -| main.rs:669:9:669:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:669:9:669:9 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:675:55:675:59 | thing | | file://:0:0:0:0 | & | -| main.rs:675:55:675:59 | thing | &T | main.rs:675:25:675:52 | S | -| main.rs:677:13:677:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:677:13:677:15 | _ms | T | main.rs:675:25:675:52 | S | -| main.rs:677:19:677:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:677:19:677:30 | get_a(...) | T | main.rs:675:25:675:52 | S | -| main.rs:677:25:677:29 | thing | | file://:0:0:0:0 | & | -| main.rs:677:25:677:29 | thing | &T | main.rs:675:25:675:52 | S | -| main.rs:686:18:686:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:686:18:686:22 | SelfParam | &T | main.rs:680:5:682:5 | MyStruct | -| main.rs:686:41:688:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:686:41:688:9 | { ... } | T | main.rs:680:5:682:5 | MyStruct | -| main.rs:687:13:687:48 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:687:13:687:48 | Some(...) | T | main.rs:680:5:682:5 | MyStruct | -| main.rs:687:18:687:47 | MyStruct {...} | | main.rs:680:5:682:5 | MyStruct | -| main.rs:687:36:687:39 | self | | file://:0:0:0:0 | & | -| main.rs:687:36:687:39 | self | &T | main.rs:680:5:682:5 | MyStruct | -| main.rs:687:36:687:45 | self.value | | {EXTERNAL LOCATION} | i32 | -| main.rs:694:13:694:13 | s | | main.rs:680:5:682:5 | MyStruct | -| main.rs:694:17:694:37 | MyStruct {...} | | main.rs:680:5:682:5 | MyStruct | -| main.rs:694:35:694:35 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:695:13:695:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:695:13:695:15 | _ms | T | main.rs:680:5:682:5 | MyStruct | -| main.rs:695:19:695:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:695:19:695:27 | get_a(...) | T | main.rs:680:5:682:5 | MyStruct | -| main.rs:695:25:695:26 | &s | | file://:0:0:0:0 | & | -| main.rs:695:25:695:26 | &s | &T | main.rs:680:5:682:5 | MyStruct | -| main.rs:695:26:695:26 | s | | main.rs:680:5:682:5 | MyStruct | -| main.rs:711:15:711:18 | SelfParam | | main.rs:710:5:721:5 | Self [trait MyTrait] | -| main.rs:713:15:713:18 | SelfParam | | main.rs:710:5:721:5 | Self [trait MyTrait] | -| main.rs:716:9:718:9 | { ... } | | main.rs:710:19:710:19 | A | -| main.rs:717:13:717:16 | self | | main.rs:710:5:721:5 | Self [trait MyTrait] | -| main.rs:717:13:717:21 | self.m1() | | main.rs:710:19:710:19 | A | -| main.rs:720:18:720:18 | x | | main.rs:710:5:721:5 | Self [trait MyTrait] | -| main.rs:725:50:725:50 | x | | main.rs:725:26:725:47 | T2 | -| main.rs:725:63:728:5 | { ... } | | main.rs:725:22:725:23 | T1 | -| main.rs:726:9:726:9 | x | | main.rs:725:26:725:47 | T2 | -| main.rs:726:9:726:14 | x.m1() | | main.rs:725:22:725:23 | T1 | -| main.rs:727:9:727:9 | x | | main.rs:725:26:725:47 | T2 | -| main.rs:727:9:727:14 | x.m1() | | main.rs:725:22:725:23 | T1 | -| main.rs:729:52:729:52 | x | | main.rs:729:28:729:49 | T2 | -| main.rs:729:65:733:5 | { ... } | | main.rs:729:24:729:25 | T1 | -| main.rs:730:13:730:13 | y | | main.rs:729:24:729:25 | T1 | -| main.rs:730:17:730:25 | ...::m1(...) | | main.rs:729:24:729:25 | T1 | -| main.rs:730:24:730:24 | x | | main.rs:729:28:729:49 | T2 | -| main.rs:731:9:731:9 | y | | main.rs:729:24:729:25 | T1 | -| main.rs:732:9:732:17 | ...::m1(...) | | main.rs:729:24:729:25 | T1 | -| main.rs:732:16:732:16 | x | | main.rs:729:28:729:49 | T2 | -| main.rs:734:52:734:52 | x | | main.rs:734:28:734:49 | T2 | -| main.rs:734:65:738:5 | { ... } | | main.rs:734:24:734:25 | T1 | -| main.rs:735:13:735:13 | y | | main.rs:734:24:734:25 | T1 | -| main.rs:735:17:735:30 | ...::m1(...) | | main.rs:734:24:734:25 | T1 | -| main.rs:735:29:735:29 | x | | main.rs:734:28:734:49 | T2 | -| main.rs:736:9:736:9 | y | | main.rs:734:24:734:25 | T1 | -| main.rs:737:9:737:22 | ...::m1(...) | | main.rs:734:24:734:25 | T1 | -| main.rs:737:21:737:21 | x | | main.rs:734:28:734:49 | T2 | -| main.rs:739:55:739:55 | x | | main.rs:739:31:739:52 | T2 | -| main.rs:739:68:743:5 | { ... } | | main.rs:739:27:739:28 | T1 | -| main.rs:740:13:740:13 | y | | main.rs:739:27:739:28 | T1 | -| main.rs:740:17:740:28 | ...::assoc(...) | | main.rs:739:27:739:28 | T1 | -| main.rs:740:27:740:27 | x | | main.rs:739:31:739:52 | T2 | -| main.rs:741:9:741:9 | y | | main.rs:739:27:739:28 | T1 | -| main.rs:742:9:742:20 | ...::assoc(...) | | main.rs:739:27:739:28 | T1 | -| main.rs:742:19:742:19 | x | | main.rs:739:31:739:52 | T2 | -| main.rs:744:55:744:55 | x | | main.rs:744:31:744:52 | T2 | -| main.rs:744:68:748:5 | { ... } | | main.rs:744:27:744:28 | T1 | -| main.rs:745:13:745:13 | y | | main.rs:744:27:744:28 | T1 | -| main.rs:745:17:745:33 | ...::assoc(...) | | main.rs:744:27:744:28 | T1 | -| main.rs:745:32:745:32 | x | | main.rs:744:31:744:52 | T2 | -| main.rs:746:9:746:9 | y | | main.rs:744:27:744:28 | T1 | -| main.rs:747:9:747:25 | ...::assoc(...) | | main.rs:744:27:744:28 | T1 | -| main.rs:747:24:747:24 | x | | main.rs:744:31:744:52 | T2 | -| main.rs:752:49:752:49 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:752:49:752:49 | x | T | main.rs:752:32:752:46 | T2 | -| main.rs:752:71:754:5 | { ... } | | main.rs:752:28:752:29 | T1 | -| main.rs:753:9:753:9 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:753:9:753:9 | x | T | main.rs:752:32:752:46 | T2 | -| main.rs:753:9:753:11 | x.a | | main.rs:752:32:752:46 | T2 | -| main.rs:753:9:753:16 | ... .m1() | | main.rs:752:28:752:29 | T1 | -| main.rs:755:51:755:51 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:755:51:755:51 | x | T | main.rs:755:34:755:48 | T2 | -| main.rs:755:73:757:5 | { ... } | | main.rs:755:30:755:31 | T1 | -| main.rs:756:9:756:19 | ...::m1(...) | | main.rs:755:30:755:31 | T1 | -| main.rs:756:16:756:16 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:756:16:756:16 | x | T | main.rs:755:34:755:48 | T2 | -| main.rs:756:16:756:18 | x.a | | main.rs:755:34:755:48 | T2 | -| main.rs:758:51:758:51 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:758:51:758:51 | x | T | main.rs:758:34:758:48 | T2 | -| main.rs:758:73:760:5 | { ... } | | main.rs:758:30:758:31 | T1 | -| main.rs:759:9:759:24 | ...::m1(...) | | main.rs:758:30:758:31 | T1 | -| main.rs:759:21:759:21 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:759:21:759:21 | x | T | main.rs:758:34:758:48 | T2 | -| main.rs:759:21:759:23 | x.a | | main.rs:758:34:758:48 | T2 | -| main.rs:763:15:763:18 | SelfParam | | main.rs:700:5:703:5 | MyThing | -| main.rs:763:15:763:18 | SelfParam | T | main.rs:762:10:762:10 | T | -| main.rs:763:26:765:9 | { ... } | | main.rs:762:10:762:10 | T | -| main.rs:764:13:764:16 | self | | main.rs:700:5:703:5 | MyThing | -| main.rs:764:13:764:16 | self | T | main.rs:762:10:762:10 | T | -| main.rs:764:13:764:18 | self.a | | main.rs:762:10:762:10 | T | -| main.rs:767:18:767:18 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:767:18:767:18 | x | T | main.rs:762:10:762:10 | T | -| main.rs:767:32:769:9 | { ... } | | main.rs:762:10:762:10 | T | -| main.rs:768:13:768:13 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:768:13:768:13 | x | T | main.rs:762:10:762:10 | T | -| main.rs:768:13:768:15 | x.a | | main.rs:762:10:762:10 | T | -| main.rs:773:13:773:13 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:773:13:773:13 | x | T | main.rs:705:5:706:14 | S1 | -| main.rs:773:17:773:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:773:17:773:33 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | -| main.rs:773:30:773:31 | S1 | | main.rs:705:5:706:14 | S1 | -| main.rs:774:13:774:13 | y | | main.rs:700:5:703:5 | MyThing | -| main.rs:774:13:774:13 | y | T | main.rs:707:5:708:14 | S2 | -| main.rs:774:17:774:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:774:17:774:33 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | -| main.rs:774:30:774:31 | S2 | | main.rs:707:5:708:14 | S2 | -| main.rs:776:18:776:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:776:18:776:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:776:18:776:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:776:18:776:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:776:26:776:26 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:776:26:776:26 | x | T | main.rs:705:5:706:14 | S1 | -| main.rs:776:26:776:31 | x.m1() | | main.rs:705:5:706:14 | S1 | -| main.rs:777:18:777:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:777:18:777:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:777:18:777:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:777:18:777:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:777:26:777:26 | y | | main.rs:700:5:703:5 | MyThing | -| main.rs:777:26:777:26 | y | T | main.rs:707:5:708:14 | S2 | -| main.rs:777:26:777:31 | y.m1() | | main.rs:707:5:708:14 | S2 | -| main.rs:779:13:779:13 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:779:13:779:13 | x | T | main.rs:705:5:706:14 | S1 | -| main.rs:779:17:779:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:779:17:779:33 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | -| main.rs:779:30:779:31 | S1 | | main.rs:705:5:706:14 | S1 | -| main.rs:780:13:780:13 | y | | main.rs:700:5:703:5 | MyThing | -| main.rs:780:13:780:13 | y | T | main.rs:707:5:708:14 | S2 | -| main.rs:780:17:780:33 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:780:17:780:33 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | -| main.rs:780:30:780:31 | S2 | | main.rs:707:5:708:14 | S2 | -| main.rs:782:18:782:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:782:18:782:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:782:18:782:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:782:18:782:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:782:26:782:26 | x | | main.rs:700:5:703:5 | MyThing | -| main.rs:782:26:782:26 | x | T | main.rs:705:5:706:14 | S1 | -| main.rs:782:26:782:31 | x.m2() | | main.rs:705:5:706:14 | S1 | -| main.rs:783:18:783:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:783:18:783:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:783:18:783:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:783:18:783:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:783:26:783:26 | y | | main.rs:700:5:703:5 | MyThing | -| main.rs:783:26:783:26 | y | T | main.rs:707:5:708:14 | S2 | -| main.rs:783:26:783:31 | y.m2() | | main.rs:707:5:708:14 | S2 | -| main.rs:785:13:785:14 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:785:13:785:14 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:785:18:785:34 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:785:18:785:34 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | -| main.rs:785:31:785:32 | S1 | | main.rs:705:5:706:14 | S1 | -| main.rs:786:13:786:14 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:786:13:786:14 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:786:18:786:34 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:786:18:786:34 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | -| main.rs:786:31:786:32 | S2 | | main.rs:707:5:708:14 | S2 | -| main.rs:788:13:788:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:788:17:788:33 | call_trait_m1(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:788:31:788:32 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:788:31:788:32 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:789:18:789:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:789:18:789:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:789:18:789:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:789:18:789:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:789:26:789:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:790:13:790:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:790:17:790:35 | call_trait_m1_2(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:790:33:790:34 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:790:33:790:34 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:791:18:791:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:791:18:791:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:791:18:791:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:791:18:791:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:791:26:791:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:792:13:792:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:792:17:792:35 | call_trait_m1_3(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:792:33:792:34 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:792:33:792:34 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:793:18:793:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:793:18:793:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:793:18:793:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:793:18:793:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:793:26:793:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:794:13:794:13 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:794:17:794:33 | call_trait_m1(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:794:31:794:32 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:794:31:794:32 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:795:18:795:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:795:18:795:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:795:18:795:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:795:18:795:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:795:26:795:26 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:796:13:796:13 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:796:17:796:35 | call_trait_m1_2(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:796:33:796:34 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:796:33:796:34 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:797:18:797:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:797:18:797:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:797:18:797:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:797:18:797:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:797:26:797:26 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:798:13:798:13 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:798:17:798:35 | call_trait_m1_3(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:798:33:798:34 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:798:33:798:34 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:799:18:799:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:799:18:799:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:799:18:799:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:799:18:799:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:799:26:799:26 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:800:13:800:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:800:17:800:38 | call_trait_assoc_1(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:800:36:800:37 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:800:36:800:37 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:801:18:801:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:801:18:801:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:801:18:801:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:801:18:801:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:801:26:801:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:802:13:802:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:802:17:802:38 | call_trait_assoc_2(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:802:36:802:37 | x2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:802:36:802:37 | x2 | T | main.rs:705:5:706:14 | S1 | -| main.rs:803:18:803:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:803:18:803:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:803:18:803:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:803:18:803:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:803:26:803:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:804:13:804:13 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:804:17:804:38 | call_trait_assoc_1(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:804:36:804:37 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:804:36:804:37 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:805:18:805:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:805:18:805:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:805:18:805:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:805:18:805:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:805:26:805:26 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:806:13:806:13 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:806:17:806:38 | call_trait_assoc_2(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:806:36:806:37 | y2 | | main.rs:700:5:703:5 | MyThing | -| main.rs:806:36:806:37 | y2 | T | main.rs:707:5:708:14 | S2 | -| main.rs:807:18:807:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:807:18:807:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:807:18:807:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:807:18:807:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:807:26:807:26 | a | | main.rs:707:5:708:14 | S2 | -| main.rs:809:13:809:14 | x3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:809:13:809:14 | x3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:809:13:809:14 | x3 | T.T | main.rs:705:5:706:14 | S1 | -| main.rs:809:18:811:9 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:809:18:811:9 | MyThing {...} | T | main.rs:700:5:703:5 | MyThing | -| main.rs:809:18:811:9 | MyThing {...} | T.T | main.rs:705:5:706:14 | S1 | -| main.rs:810:16:810:32 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:810:16:810:32 | MyThing {...} | T | main.rs:705:5:706:14 | S1 | -| main.rs:810:29:810:30 | S1 | | main.rs:705:5:706:14 | S1 | -| main.rs:812:13:812:14 | y3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:812:13:812:14 | y3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:812:13:812:14 | y3 | T.T | main.rs:707:5:708:14 | S2 | -| main.rs:812:18:814:9 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:812:18:814:9 | MyThing {...} | T | main.rs:700:5:703:5 | MyThing | -| main.rs:812:18:814:9 | MyThing {...} | T.T | main.rs:707:5:708:14 | S2 | -| main.rs:813:16:813:32 | MyThing {...} | | main.rs:700:5:703:5 | MyThing | -| main.rs:813:16:813:32 | MyThing {...} | T | main.rs:707:5:708:14 | S2 | -| main.rs:813:29:813:30 | S2 | | main.rs:707:5:708:14 | S2 | -| main.rs:816:13:816:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:816:17:816:39 | call_trait_thing_m1(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:816:37:816:38 | x3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:816:37:816:38 | x3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:816:37:816:38 | x3 | T.T | main.rs:705:5:706:14 | S1 | -| main.rs:817:18:817:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:817:18:817:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:817:18:817:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:817:18:817:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:817:26:817:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:818:13:818:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:818:17:818:41 | call_trait_thing_m1_2(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:818:39:818:40 | x3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:818:39:818:40 | x3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:818:39:818:40 | x3 | T.T | main.rs:705:5:706:14 | S1 | -| main.rs:819:18:819:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:819:18:819:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:819:18:819:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:819:18:819:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:819:26:819:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:820:13:820:13 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:820:17:820:41 | call_trait_thing_m1_3(...) | | main.rs:705:5:706:14 | S1 | -| main.rs:820:39:820:40 | x3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:820:39:820:40 | x3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:820:39:820:40 | x3 | T.T | main.rs:705:5:706:14 | S1 | +| main.rs:540:14:540:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:540:14:540:18 | SelfParam | &T | main.rs:538:5:541:5 | Self [trait MyTrait1] | +| main.rs:550:14:550:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:550:14:550:18 | SelfParam | &T | main.rs:545:5:546:14 | S4 | +| main.rs:560:14:560:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:560:14:560:18 | SelfParam | &T | main.rs:555:5:556:22 | S5 | +| main.rs:560:14:560:18 | SelfParam | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:570:13:570:13 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:570:17:570:18 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:571:18:571:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:571:18:571:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:571:18:571:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | +| main.rs:572:18:572:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:572:18:572:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:572:18:572:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:573:18:573:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:573:18:573:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:573:18:573:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | +| main.rs:574:18:574:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:574:18:574:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:574:18:574:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:574:46:574:46 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:576:13:576:13 | y | | main.rs:479:5:479:22 | S2 | +| main.rs:576:13:576:13 | y | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:576:17:576:22 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:576:17:576:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:576:20:576:21 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:577:18:577:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:577:18:577:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:577:18:577:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | +| main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:577:26:577:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | +| main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:578:18:578:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:578:18:578:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:578:50:578:55 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:578:50:578:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | +| main.rs:578:53:578:54 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:580:13:580:13 | z | | main.rs:479:5:479:22 | S2 | +| main.rs:580:13:580:13 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:580:17:580:21 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:580:17:580:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:580:20:580:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:581:18:581:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:581:18:581:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:581:18:581:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | +| main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:581:26:581:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | +| main.rs:582:18:582:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:582:18:582:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:582:18:582:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:582:44:582:48 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:582:44:582:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:582:47:582:47 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:583:18:583:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:583:18:583:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:583:18:583:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | +| main.rs:583:51:583:55 | S2(...) | | main.rs:479:5:479:22 | S2 | +| main.rs:583:51:583:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | +| main.rs:583:54:583:54 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:585:13:585:13 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:585:13:585:13 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:585:17:585:22 | S3(...) | | main.rs:517:5:518:22 | S3 | +| main.rs:585:17:585:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:585:20:585:21 | S1 | | main.rs:446:5:447:14 | S1 | +| main.rs:586:18:586:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:586:18:586:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:586:18:586:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:586:26:586:31 | w.m(...) | | file://:0:0:0:0 | & | +| main.rs:586:26:586:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | +| main.rs:586:26:586:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:586:30:586:30 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:587:18:587:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:587:18:587:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:587:18:587:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:587:26:587:37 | ...::m(...) | | file://:0:0:0:0 | & | +| main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | +| main.rs:587:26:587:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:32:587:33 | &w | | file://:0:0:0:0 | & | +| main.rs:587:32:587:33 | &w | &T | main.rs:517:5:518:22 | S3 | +| main.rs:587:32:587:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:33:587:33 | w | | main.rs:517:5:518:22 | S3 | +| main.rs:587:33:587:33 | w | T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:36:587:36 | x | | main.rs:446:5:447:14 | S1 | +| main.rs:589:9:589:10 | S4 | | main.rs:545:5:546:14 | S4 | +| main.rs:590:15:590:17 | &S4 | | file://:0:0:0:0 | & | +| main.rs:590:15:590:17 | &S4 | &T | main.rs:545:5:546:14 | S4 | +| main.rs:590:16:590:17 | S4 | | main.rs:545:5:546:14 | S4 | +| main.rs:591:9:591:16 | S5(...) | | main.rs:555:5:556:22 | S5 | +| main.rs:591:9:591:16 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:591:12:591:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:592:15:592:23 | &... | | file://:0:0:0:0 | & | +| main.rs:592:15:592:23 | &... | &T | main.rs:555:5:556:22 | S5 | +| main.rs:592:15:592:23 | &... | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:592:16:592:23 | S5(...) | | main.rs:555:5:556:22 | S5 | +| main.rs:592:16:592:23 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:592:19:592:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:593:9:593:16 | S5(...) | | main.rs:555:5:556:22 | S5 | +| main.rs:593:9:593:16 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | +| main.rs:593:12:593:15 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:594:15:594:23 | &... | | file://:0:0:0:0 | & | +| main.rs:594:15:594:23 | &... | &T | main.rs:555:5:556:22 | S5 | +| main.rs:594:15:594:23 | &... | &T.T5 | {EXTERNAL LOCATION} | bool | +| main.rs:594:16:594:23 | S5(...) | | main.rs:555:5:556:22 | S5 | +| main.rs:594:16:594:23 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | +| main.rs:594:19:594:22 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:611:19:611:22 | SelfParam | | main.rs:609:5:612:5 | Self [trait FirstTrait] | +| main.rs:616:19:616:22 | SelfParam | | main.rs:614:5:617:5 | Self [trait SecondTrait] | +| main.rs:619:64:619:64 | x | | main.rs:619:45:619:61 | T | +| main.rs:621:13:621:14 | s1 | | main.rs:619:35:619:42 | I | +| main.rs:621:18:621:18 | x | | main.rs:619:45:619:61 | T | +| main.rs:621:18:621:27 | x.method() | | main.rs:619:35:619:42 | I | +| main.rs:622:18:622:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:622:18:622:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:622:18:622:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | +| main.rs:625:65:625:65 | x | | main.rs:625:46:625:62 | T | +| main.rs:627:13:627:14 | s2 | | main.rs:625:36:625:43 | I | +| main.rs:627:18:627:18 | x | | main.rs:625:46:625:62 | T | +| main.rs:627:18:627:27 | x.method() | | main.rs:625:36:625:43 | I | +| main.rs:628:18:628:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:628:18:628:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:628:18:628:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | +| main.rs:631:49:631:49 | x | | main.rs:631:30:631:46 | T | +| main.rs:632:13:632:13 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:632:17:632:17 | x | | main.rs:631:30:631:46 | T | +| main.rs:632:17:632:26 | x.method() | | main.rs:601:5:602:14 | S1 | +| main.rs:633:18:633:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:633:18:633:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:633:18:633:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:636:53:636:53 | x | | main.rs:636:34:636:50 | T | +| main.rs:637:13:637:13 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:637:17:637:17 | x | | main.rs:636:34:636:50 | T | +| main.rs:637:17:637:26 | x.method() | | main.rs:601:5:602:14 | S1 | +| main.rs:638:18:638:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:638:18:638:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:638:18:638:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:641:43:641:43 | x | | main.rs:641:40:641:40 | T | +| main.rs:645:13:645:13 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:645:17:645:17 | x | | main.rs:641:40:641:40 | T | +| main.rs:645:17:645:26 | x.method() | | main.rs:601:5:602:14 | S1 | +| main.rs:646:18:646:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:646:18:646:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:646:18:646:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | +| main.rs:650:16:650:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | +| main.rs:652:16:652:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | +| main.rs:655:53:655:53 | x | | main.rs:655:50:655:50 | T | +| main.rs:655:59:655:59 | y | | main.rs:655:50:655:50 | T | +| main.rs:660:13:660:13 | _ | | main.rs:601:5:602:14 | S1 | +| main.rs:660:17:660:17 | x | | main.rs:655:50:655:50 | T | +| main.rs:660:17:660:23 | x.fst() | | main.rs:601:5:602:14 | S1 | +| main.rs:661:13:661:13 | _ | | main.rs:601:5:602:14 | S1 | +| main.rs:661:17:661:17 | y | | main.rs:655:50:655:50 | T | +| main.rs:661:17:661:26 | y.method() | | main.rs:601:5:602:14 | S1 | +| main.rs:664:58:664:58 | x | | main.rs:664:41:664:55 | T | +| main.rs:664:64:664:64 | y | | main.rs:664:41:664:55 | T | +| main.rs:666:13:666:14 | s1 | | main.rs:601:5:602:14 | S1 | +| main.rs:666:18:666:18 | x | | main.rs:664:41:664:55 | T | +| main.rs:666:18:666:24 | x.fst() | | main.rs:601:5:602:14 | S1 | +| main.rs:667:13:667:14 | s2 | | main.rs:604:5:605:14 | S2 | +| main.rs:667:18:667:18 | y | | main.rs:664:41:664:55 | T | +| main.rs:667:18:667:24 | y.snd() | | main.rs:604:5:605:14 | S2 | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:668:18:668:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:668:18:668:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | +| main.rs:668:36:668:37 | s2 | | main.rs:604:5:605:14 | S2 | +| main.rs:671:69:671:69 | x | | main.rs:671:52:671:66 | T | +| main.rs:671:75:671:75 | y | | main.rs:671:52:671:66 | T | +| main.rs:673:13:673:14 | s1 | | main.rs:601:5:602:14 | S1 | +| main.rs:673:18:673:18 | x | | main.rs:671:52:671:66 | T | +| main.rs:673:18:673:24 | x.fst() | | main.rs:601:5:602:14 | S1 | +| main.rs:674:13:674:14 | s2 | | main.rs:671:41:671:49 | T2 | +| main.rs:674:18:674:18 | y | | main.rs:671:52:671:66 | T | +| main.rs:674:18:674:24 | y.snd() | | main.rs:671:41:671:49 | T2 | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:675:18:675:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:675:18:675:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | +| main.rs:675:36:675:37 | s2 | | main.rs:671:41:671:49 | T2 | +| main.rs:678:50:678:50 | x | | main.rs:678:41:678:47 | T | +| main.rs:678:56:678:56 | y | | main.rs:678:41:678:47 | T | +| main.rs:680:13:680:14 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:680:18:680:18 | x | | main.rs:678:41:678:47 | T | +| main.rs:680:18:680:24 | x.fst() | | {EXTERNAL LOCATION} | bool | +| main.rs:681:13:681:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:681:18:681:18 | y | | main.rs:678:41:678:47 | T | +| main.rs:681:18:681:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:682:18:682:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:682:18:682:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:682:36:682:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:685:54:685:54 | x | | main.rs:685:41:685:51 | T | +| main.rs:685:60:685:60 | y | | main.rs:685:41:685:51 | T | +| main.rs:687:13:687:14 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:687:18:687:18 | x | | main.rs:685:41:685:51 | T | +| main.rs:687:18:687:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:688:13:688:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:688:18:688:18 | y | | main.rs:685:41:685:51 | T | +| main.rs:688:18:688:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:689:18:689:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:689:18:689:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:697:18:697:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:697:18:697:22 | SelfParam | &T | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | +| main.rs:700:40:700:44 | thing | | file://:0:0:0:0 | & | +| main.rs:700:40:700:44 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:700:56:702:5 | { ... } | | main.rs:700:14:700:14 | A | +| main.rs:701:9:701:13 | thing | | file://:0:0:0:0 | & | +| main.rs:701:9:701:13 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:701:9:701:21 | thing.get_a() | | main.rs:700:14:700:14 | A | +| main.rs:705:44:705:48 | thing | | main.rs:705:24:705:41 | S | +| main.rs:705:61:708:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:706:13:706:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:706:13:706:15 | _ms | T | main.rs:705:24:705:41 | S | +| main.rs:706:19:706:23 | thing | | main.rs:705:24:705:41 | S | +| main.rs:706:19:706:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | +| main.rs:706:19:706:31 | thing.get_a() | T | main.rs:705:24:705:41 | S | +| main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:713:55:713:59 | thing | | file://:0:0:0:0 | & | +| main.rs:713:55:713:59 | thing | &T | main.rs:713:25:713:52 | S | +| main.rs:715:13:715:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:715:13:715:15 | _ms | T | main.rs:713:25:713:52 | S | +| main.rs:715:19:715:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:715:19:715:30 | get_a(...) | T | main.rs:713:25:713:52 | S | +| main.rs:715:25:715:29 | thing | | file://:0:0:0:0 | & | +| main.rs:715:25:715:29 | thing | &T | main.rs:713:25:713:52 | S | +| main.rs:724:18:724:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:724:18:724:22 | SelfParam | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:724:41:726:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:724:41:726:9 | { ... } | T | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:13:725:48 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:725:13:725:48 | Some(...) | T | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:18:725:47 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:36:725:39 | self | | file://:0:0:0:0 | & | +| main.rs:725:36:725:39 | self | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:36:725:45 | self.value | | {EXTERNAL LOCATION} | i32 | +| main.rs:732:13:732:13 | s | | main.rs:718:5:720:5 | MyStruct | +| main.rs:732:17:732:37 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | +| main.rs:732:35:732:35 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:733:13:733:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:733:13:733:15 | _ms | T | main.rs:718:5:720:5 | MyStruct | +| main.rs:733:19:733:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:733:19:733:27 | get_a(...) | T | main.rs:718:5:720:5 | MyStruct | +| main.rs:733:25:733:26 | &s | | file://:0:0:0:0 | & | +| main.rs:733:25:733:26 | &s | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:733:26:733:26 | s | | main.rs:718:5:720:5 | MyStruct | +| main.rs:749:15:749:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | +| main.rs:751:15:751:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | +| main.rs:754:9:756:9 | { ... } | | main.rs:748:19:748:19 | A | +| main.rs:755:13:755:16 | self | | main.rs:748:5:759:5 | Self [trait MyTrait] | +| main.rs:755:13:755:21 | self.m1() | | main.rs:748:19:748:19 | A | +| main.rs:758:18:758:18 | x | | main.rs:748:5:759:5 | Self [trait MyTrait] | +| main.rs:763:50:763:50 | x | | main.rs:763:26:763:47 | T2 | +| main.rs:763:63:766:5 | { ... } | | main.rs:763:22:763:23 | T1 | +| main.rs:764:9:764:9 | x | | main.rs:763:26:763:47 | T2 | +| main.rs:764:9:764:14 | x.m1() | | main.rs:763:22:763:23 | T1 | +| main.rs:765:9:765:9 | x | | main.rs:763:26:763:47 | T2 | +| main.rs:765:9:765:14 | x.m1() | | main.rs:763:22:763:23 | T1 | +| main.rs:767:52:767:52 | x | | main.rs:767:28:767:49 | T2 | +| main.rs:767:65:771:5 | { ... } | | main.rs:767:24:767:25 | T1 | +| main.rs:768:13:768:13 | y | | main.rs:767:24:767:25 | T1 | +| main.rs:768:17:768:25 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | +| main.rs:768:24:768:24 | x | | main.rs:767:28:767:49 | T2 | +| main.rs:769:9:769:9 | y | | main.rs:767:24:767:25 | T1 | +| main.rs:770:9:770:17 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | +| main.rs:770:16:770:16 | x | | main.rs:767:28:767:49 | T2 | +| main.rs:772:52:772:52 | x | | main.rs:772:28:772:49 | T2 | +| main.rs:772:65:776:5 | { ... } | | main.rs:772:24:772:25 | T1 | +| main.rs:773:13:773:13 | y | | main.rs:772:24:772:25 | T1 | +| main.rs:773:17:773:30 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | +| main.rs:773:29:773:29 | x | | main.rs:772:28:772:49 | T2 | +| main.rs:774:9:774:9 | y | | main.rs:772:24:772:25 | T1 | +| main.rs:775:9:775:22 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | +| main.rs:775:21:775:21 | x | | main.rs:772:28:772:49 | T2 | +| main.rs:777:55:777:55 | x | | main.rs:777:31:777:52 | T2 | +| main.rs:777:68:781:5 | { ... } | | main.rs:777:27:777:28 | T1 | +| main.rs:778:13:778:13 | y | | main.rs:777:27:777:28 | T1 | +| main.rs:778:17:778:28 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | +| main.rs:778:27:778:27 | x | | main.rs:777:31:777:52 | T2 | +| main.rs:779:9:779:9 | y | | main.rs:777:27:777:28 | T1 | +| main.rs:780:9:780:20 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | +| main.rs:780:19:780:19 | x | | main.rs:777:31:777:52 | T2 | +| main.rs:782:55:782:55 | x | | main.rs:782:31:782:52 | T2 | +| main.rs:782:68:786:5 | { ... } | | main.rs:782:27:782:28 | T1 | +| main.rs:783:13:783:13 | y | | main.rs:782:27:782:28 | T1 | +| main.rs:783:17:783:33 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | +| main.rs:783:32:783:32 | x | | main.rs:782:31:782:52 | T2 | +| main.rs:784:9:784:9 | y | | main.rs:782:27:782:28 | T1 | +| main.rs:785:9:785:25 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | +| main.rs:785:24:785:24 | x | | main.rs:782:31:782:52 | T2 | +| main.rs:790:49:790:49 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:790:49:790:49 | x | T | main.rs:790:32:790:46 | T2 | +| main.rs:790:71:792:5 | { ... } | | main.rs:790:28:790:29 | T1 | +| main.rs:791:9:791:9 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:791:9:791:9 | x | T | main.rs:790:32:790:46 | T2 | +| main.rs:791:9:791:11 | x.a | | main.rs:790:32:790:46 | T2 | +| main.rs:791:9:791:16 | ... .m1() | | main.rs:790:28:790:29 | T1 | +| main.rs:793:51:793:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:793:51:793:51 | x | T | main.rs:793:34:793:48 | T2 | +| main.rs:793:73:795:5 | { ... } | | main.rs:793:30:793:31 | T1 | +| main.rs:794:9:794:19 | ...::m1(...) | | main.rs:793:30:793:31 | T1 | +| main.rs:794:16:794:16 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:794:16:794:16 | x | T | main.rs:793:34:793:48 | T2 | +| main.rs:794:16:794:18 | x.a | | main.rs:793:34:793:48 | T2 | +| main.rs:796:51:796:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:796:51:796:51 | x | T | main.rs:796:34:796:48 | T2 | +| main.rs:796:73:798:5 | { ... } | | main.rs:796:30:796:31 | T1 | +| main.rs:797:9:797:24 | ...::m1(...) | | main.rs:796:30:796:31 | T1 | +| main.rs:797:21:797:21 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:797:21:797:21 | x | T | main.rs:796:34:796:48 | T2 | +| main.rs:797:21:797:23 | x.a | | main.rs:796:34:796:48 | T2 | +| main.rs:801:15:801:18 | SelfParam | | main.rs:738:5:741:5 | MyThing | +| main.rs:801:15:801:18 | SelfParam | T | main.rs:800:10:800:10 | T | +| main.rs:801:26:803:9 | { ... } | | main.rs:800:10:800:10 | T | +| main.rs:802:13:802:16 | self | | main.rs:738:5:741:5 | MyThing | +| main.rs:802:13:802:16 | self | T | main.rs:800:10:800:10 | T | +| main.rs:802:13:802:18 | self.a | | main.rs:800:10:800:10 | T | +| main.rs:805:18:805:18 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:805:18:805:18 | x | T | main.rs:800:10:800:10 | T | +| main.rs:805:32:807:9 | { ... } | | main.rs:800:10:800:10 | T | +| main.rs:806:13:806:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:806:13:806:13 | x | T | main.rs:800:10:800:10 | T | +| main.rs:806:13:806:15 | x.a | | main.rs:800:10:800:10 | T | +| main.rs:811:13:811:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:811:13:811:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:811:17:811:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:811:17:811:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:811:30:811:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:812:13:812:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:812:13:812:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:812:17:812:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:812:17:812:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:812:30:812:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:814:18:814:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:814:18:814:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:814:18:814:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:814:18:814:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:814:26:814:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:814:26:814:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:814:26:814:31 | x.m1() | | main.rs:743:5:744:14 | S1 | +| main.rs:815:18:815:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:815:18:815:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:815:18:815:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:815:18:815:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:815:26:815:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:815:26:815:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:815:26:815:31 | y.m1() | | main.rs:745:5:746:14 | S2 | +| main.rs:817:13:817:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:817:13:817:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:817:17:817:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:817:17:817:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:817:30:817:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:818:13:818:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:818:13:818:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:818:17:818:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:818:17:818:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:818:30:818:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:820:18:820:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:820:18:820:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:820:26:820:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:820:26:820:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:820:26:820:31 | x.m2() | | main.rs:743:5:744:14 | S1 | | main.rs:821:18:821:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:821:18:821:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:821:18:821:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:18:821:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:26:821:26 | a | | main.rs:705:5:706:14 | S1 | -| main.rs:822:13:822:13 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:822:17:822:39 | call_trait_thing_m1(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:822:37:822:38 | y3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:822:37:822:38 | y3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:822:37:822:38 | y3 | T.T | main.rs:707:5:708:14 | S2 | -| main.rs:823:18:823:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:823:18:823:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:823:18:823:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:823:18:823:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:823:26:823:26 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:824:13:824:13 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:824:17:824:41 | call_trait_thing_m1_2(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:824:39:824:40 | y3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:824:39:824:40 | y3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:824:39:824:40 | y3 | T.T | main.rs:707:5:708:14 | S2 | -| main.rs:825:18:825:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:825:18:825:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:825:18:825:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:825:18:825:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:825:26:825:26 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:826:13:826:13 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:826:17:826:41 | call_trait_thing_m1_3(...) | | main.rs:707:5:708:14 | S2 | -| main.rs:826:39:826:40 | y3 | | main.rs:700:5:703:5 | MyThing | -| main.rs:826:39:826:40 | y3 | T | main.rs:700:5:703:5 | MyThing | -| main.rs:826:39:826:40 | y3 | T.T | main.rs:707:5:708:14 | S2 | +| main.rs:821:18:821:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:821:18:821:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:821:26:821:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:821:26:821:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:821:26:821:31 | y.m2() | | main.rs:745:5:746:14 | S2 | +| main.rs:823:13:823:14 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:823:13:823:14 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:823:18:823:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:823:18:823:34 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:823:31:823:32 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:824:13:824:14 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:824:13:824:14 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:824:18:824:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:824:18:824:34 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:824:31:824:32 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:826:13:826:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:826:17:826:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:826:31:826:32 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:826:31:826:32 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:827:18:827:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:827:18:827:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:827:18:827:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:827:18:827:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:827:26:827:26 | b | | main.rs:707:5:708:14 | S2 | -| main.rs:838:19:838:22 | SelfParam | | main.rs:832:5:835:5 | Wrapper | -| main.rs:838:19:838:22 | SelfParam | A | main.rs:837:10:837:10 | A | -| main.rs:838:30:840:9 | { ... } | | main.rs:837:10:837:10 | A | -| main.rs:839:13:839:16 | self | | main.rs:832:5:835:5 | Wrapper | -| main.rs:839:13:839:16 | self | A | main.rs:837:10:837:10 | A | -| main.rs:839:13:839:22 | self.field | | main.rs:837:10:837:10 | A | -| main.rs:847:15:847:18 | SelfParam | | main.rs:843:5:857:5 | Self [trait MyTrait] | -| main.rs:849:15:849:18 | SelfParam | | main.rs:843:5:857:5 | Self [trait MyTrait] | -| main.rs:853:9:856:9 | { ... } | | main.rs:844:9:844:28 | AssociatedType | -| main.rs:854:13:854:16 | self | | main.rs:843:5:857:5 | Self [trait MyTrait] | -| main.rs:854:13:854:21 | self.m1() | | main.rs:844:9:844:28 | AssociatedType | -| main.rs:855:13:855:43 | ...::default(...) | | main.rs:844:9:844:28 | AssociatedType | -| main.rs:863:19:863:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:863:19:863:23 | SelfParam | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | -| main.rs:863:26:863:26 | a | | main.rs:863:16:863:16 | A | -| main.rs:865:22:865:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:865:22:865:26 | SelfParam | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | -| main.rs:865:29:865:29 | a | | main.rs:865:19:865:19 | A | -| main.rs:865:35:865:35 | b | | main.rs:865:19:865:19 | A | -| main.rs:865:75:868:9 | { ... } | | main.rs:860:9:860:52 | GenericAssociatedType | -| main.rs:866:13:866:16 | self | | file://:0:0:0:0 | & | -| main.rs:866:13:866:16 | self | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | -| main.rs:866:13:866:23 | self.put(...) | | main.rs:860:9:860:52 | GenericAssociatedType | -| main.rs:866:22:866:22 | a | | main.rs:865:19:865:19 | A | -| main.rs:867:13:867:16 | self | | file://:0:0:0:0 | & | -| main.rs:867:13:867:16 | self | &T | main.rs:859:5:869:5 | Self [trait MyTraitAssoc2] | -| main.rs:867:13:867:23 | self.put(...) | | main.rs:860:9:860:52 | GenericAssociatedType | -| main.rs:867:22:867:22 | b | | main.rs:865:19:865:19 | A | -| main.rs:876:21:876:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:876:21:876:25 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | -| main.rs:878:20:878:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:878:20:878:24 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | -| main.rs:880:20:880:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:880:20:880:24 | SelfParam | &T | main.rs:871:5:881:5 | Self [trait TraitMultipleAssoc] | -| main.rs:896:15:896:18 | SelfParam | | main.rs:883:5:884:13 | S | -| main.rs:896:45:898:9 | { ... } | | main.rs:889:5:890:14 | AT | -| main.rs:897:13:897:14 | AT | | main.rs:889:5:890:14 | AT | -| main.rs:906:19:906:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:906:19:906:23 | SelfParam | &T | main.rs:883:5:884:13 | S | -| main.rs:906:26:906:26 | a | | main.rs:906:16:906:16 | A | -| main.rs:906:46:908:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | -| main.rs:906:46:908:9 | { ... } | A | main.rs:906:16:906:16 | A | -| main.rs:907:13:907:32 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | -| main.rs:907:13:907:32 | Wrapper {...} | A | main.rs:906:16:906:16 | A | -| main.rs:907:30:907:30 | a | | main.rs:906:16:906:16 | A | -| main.rs:915:15:915:18 | SelfParam | | main.rs:886:5:887:14 | S2 | -| main.rs:915:45:917:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | -| main.rs:915:45:917:9 | { ... } | A | main.rs:886:5:887:14 | S2 | -| main.rs:916:13:916:35 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | -| main.rs:916:13:916:35 | Wrapper {...} | A | main.rs:886:5:887:14 | S2 | -| main.rs:916:30:916:33 | self | | main.rs:886:5:887:14 | S2 | -| main.rs:922:30:924:9 | { ... } | | main.rs:832:5:835:5 | Wrapper | -| main.rs:922:30:924:9 | { ... } | A | main.rs:886:5:887:14 | S2 | -| main.rs:923:13:923:33 | Wrapper {...} | | main.rs:832:5:835:5 | Wrapper | -| main.rs:923:13:923:33 | Wrapper {...} | A | main.rs:886:5:887:14 | S2 | -| main.rs:923:30:923:31 | S2 | | main.rs:886:5:887:14 | S2 | -| main.rs:929:22:929:26 | thing | | main.rs:929:10:929:19 | T | -| main.rs:930:9:930:13 | thing | | main.rs:929:10:929:19 | T | -| main.rs:937:21:937:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:937:21:937:25 | SelfParam | &T | main.rs:889:5:890:14 | AT | -| main.rs:937:34:939:9 | { ... } | | main.rs:889:5:890:14 | AT | -| main.rs:938:13:938:14 | AT | | main.rs:889:5:890:14 | AT | -| main.rs:941:20:941:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:941:20:941:24 | SelfParam | &T | main.rs:889:5:890:14 | AT | -| main.rs:941:43:943:9 | { ... } | | main.rs:883:5:884:13 | S | -| main.rs:942:13:942:13 | S | | main.rs:883:5:884:13 | S | -| main.rs:945:20:945:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:945:20:945:24 | SelfParam | &T | main.rs:889:5:890:14 | AT | -| main.rs:945:43:947:9 | { ... } | | main.rs:886:5:887:14 | S2 | -| main.rs:946:13:946:14 | S2 | | main.rs:886:5:887:14 | S2 | -| main.rs:951:13:951:14 | x1 | | main.rs:883:5:884:13 | S | -| main.rs:951:18:951:18 | S | | main.rs:883:5:884:13 | S | -| main.rs:953:18:953:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:953:18:953:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:953:18:953:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:953:18:953:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:953:26:953:27 | x1 | | main.rs:883:5:884:13 | S | -| main.rs:953:26:953:32 | x1.m1() | | main.rs:889:5:890:14 | AT | -| main.rs:955:13:955:14 | x2 | | main.rs:883:5:884:13 | S | -| main.rs:955:18:955:18 | S | | main.rs:883:5:884:13 | S | -| main.rs:957:13:957:13 | y | | main.rs:889:5:890:14 | AT | -| main.rs:957:17:957:18 | x2 | | main.rs:883:5:884:13 | S | -| main.rs:957:17:957:23 | x2.m2() | | main.rs:889:5:890:14 | AT | -| main.rs:958:18:958:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:958:18:958:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:958:18:958:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:958:18:958:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:958:26:958:26 | y | | main.rs:889:5:890:14 | AT | -| main.rs:960:13:960:14 | x3 | | main.rs:883:5:884:13 | S | -| main.rs:960:18:960:18 | S | | main.rs:883:5:884:13 | S | -| main.rs:962:18:962:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:962:18:962:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:962:18:962:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:962:18:962:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:962:26:962:27 | x3 | | main.rs:883:5:884:13 | S | -| main.rs:962:26:962:34 | x3.put(...) | | main.rs:832:5:835:5 | Wrapper | -| main.rs:962:26:962:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:962:26:962:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:962:33:962:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:965:18:965:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:965:18:965:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:965:18:965:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:965:18:965:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:965:26:965:27 | x3 | | main.rs:883:5:884:13 | S | -| main.rs:965:26:965:40 | x3.putTwo(...) | | main.rs:832:5:835:5 | Wrapper | -| main.rs:965:26:965:40 | x3.putTwo(...) | A | main.rs:903:36:903:50 | AssociatedParam | -| main.rs:965:26:965:49 | ... .unwrap() | | main.rs:903:36:903:50 | AssociatedParam | -| main.rs:965:36:965:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:965:39:965:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:967:20:967:20 | S | | main.rs:883:5:884:13 | S | -| main.rs:968:18:968:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:968:18:968:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:968:18:968:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:968:18:968:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:970:13:970:14 | x5 | | main.rs:886:5:887:14 | S2 | -| main.rs:970:18:970:19 | S2 | | main.rs:886:5:887:14 | S2 | -| main.rs:971:18:971:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:971:18:971:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:971:18:971:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:971:18:971:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:971:26:971:27 | x5 | | main.rs:886:5:887:14 | S2 | -| main.rs:971:26:971:32 | x5.m1() | | main.rs:832:5:835:5 | Wrapper | -| main.rs:971:26:971:32 | x5.m1() | A | main.rs:886:5:887:14 | S2 | -| main.rs:972:13:972:14 | x6 | | main.rs:886:5:887:14 | S2 | -| main.rs:972:18:972:19 | S2 | | main.rs:886:5:887:14 | S2 | -| main.rs:973:18:973:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:973:18:973:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:973:18:973:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:973:18:973:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:973:26:973:27 | x6 | | main.rs:886:5:887:14 | S2 | -| main.rs:973:26:973:32 | x6.m2() | | main.rs:832:5:835:5 | Wrapper | -| main.rs:973:26:973:32 | x6.m2() | A | main.rs:886:5:887:14 | S2 | -| main.rs:975:13:975:22 | assoc_zero | | main.rs:889:5:890:14 | AT | -| main.rs:975:26:975:27 | AT | | main.rs:889:5:890:14 | AT | -| main.rs:975:26:975:38 | AT.get_zero() | | main.rs:889:5:890:14 | AT | -| main.rs:976:13:976:21 | assoc_one | | main.rs:883:5:884:13 | S | -| main.rs:976:25:976:26 | AT | | main.rs:889:5:890:14 | AT | -| main.rs:976:25:976:36 | AT.get_one() | | main.rs:883:5:884:13 | S | -| main.rs:977:13:977:21 | assoc_two | | main.rs:886:5:887:14 | S2 | -| main.rs:977:25:977:26 | AT | | main.rs:889:5:890:14 | AT | -| main.rs:977:25:977:36 | AT.get_two() | | main.rs:886:5:887:14 | S2 | -| main.rs:985:19:985:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:985:19:985:23 | SelfParam | &T | main.rs:982:5:986:5 | Self [trait Supertrait] | -| main.rs:985:26:985:32 | content | | main.rs:983:9:983:21 | Content | -| main.rs:990:24:990:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:990:24:990:28 | SelfParam | &T | main.rs:988:5:991:5 | Self [trait Subtrait] | -| main.rs:999:23:999:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:999:23:999:27 | SelfParam | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | -| main.rs:999:30:999:31 | c1 | | main.rs:983:9:983:21 | Content | -| main.rs:999:49:999:50 | c2 | | main.rs:983:9:983:21 | Content | -| main.rs:1000:13:1000:16 | self | | file://:0:0:0:0 | & | -| main.rs:1000:13:1000:16 | self | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | -| main.rs:1000:25:1000:26 | c1 | | main.rs:983:9:983:21 | Content | -| main.rs:1001:13:1001:16 | self | | file://:0:0:0:0 | & | -| main.rs:1001:13:1001:16 | self | &T | main.rs:993:5:1003:5 | Self [trait Subtrait2] | -| main.rs:1001:25:1001:26 | c2 | | main.rs:983:9:983:21 | Content | -| main.rs:1009:19:1009:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1009:19:1009:23 | SelfParam | &T | main.rs:1005:5:1005:24 | MyType | -| main.rs:1009:19:1009:23 | SelfParam | &T.T | main.rs:1007:10:1007:10 | T | -| main.rs:1009:26:1009:33 | _content | | main.rs:1007:10:1007:10 | T | -| main.rs:1010:22:1010:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:1010:22:1010:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1010:22:1010:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1010:22:1010:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1016:24:1016:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1016:24:1016:28 | SelfParam | &T | main.rs:1005:5:1005:24 | MyType | -| main.rs:1016:24:1016:28 | SelfParam | &T.T | main.rs:1014:10:1014:17 | T | -| main.rs:1016:48:1018:9 | { ... } | | main.rs:1014:10:1014:17 | T | -| main.rs:1017:13:1017:19 | (...) | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1017:13:1017:19 | (...) | T | main.rs:1014:10:1014:17 | T | -| main.rs:1017:13:1017:21 | ... .0 | | main.rs:1014:10:1014:17 | T | -| main.rs:1017:13:1017:29 | ... .clone() | | main.rs:1014:10:1014:17 | T | -| main.rs:1017:14:1017:18 | * ... | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1017:14:1017:18 | * ... | T | main.rs:1014:10:1014:17 | T | -| main.rs:1017:15:1017:18 | self | | file://:0:0:0:0 | & | -| main.rs:1017:15:1017:18 | self | &T | main.rs:1005:5:1005:24 | MyType | -| main.rs:1017:15:1017:18 | self | &T.T | main.rs:1014:10:1014:17 | T | -| main.rs:1021:33:1021:36 | item | | file://:0:0:0:0 | & | -| main.rs:1021:33:1021:36 | item | &T | main.rs:1021:20:1021:30 | T | -| main.rs:1021:57:1023:5 | { ... } | | main.rs:983:9:983:21 | Content | -| main.rs:1022:9:1022:12 | item | | file://:0:0:0:0 | & | -| main.rs:1022:9:1022:12 | item | &T | main.rs:1021:20:1021:30 | T | -| main.rs:1022:9:1022:26 | item.get_content() | | main.rs:983:9:983:21 | Content | -| main.rs:1025:35:1025:38 | item | | file://:0:0:0:0 | & | -| main.rs:1025:35:1025:38 | item | &T | main.rs:1025:21:1025:32 | T | -| main.rs:1025:45:1025:46 | c1 | | main.rs:983:9:983:21 | Content | -| main.rs:1025:61:1025:62 | c2 | | main.rs:983:9:983:21 | Content | -| main.rs:1025:77:1025:78 | c3 | | main.rs:983:9:983:21 | Content | -| main.rs:1026:9:1026:12 | item | | file://:0:0:0:0 | & | -| main.rs:1026:9:1026:12 | item | &T | main.rs:1025:21:1025:32 | T | -| main.rs:1026:21:1026:22 | c1 | | main.rs:983:9:983:21 | Content | -| main.rs:1027:9:1027:12 | item | | file://:0:0:0:0 | & | -| main.rs:1027:9:1027:12 | item | &T | main.rs:1025:21:1025:32 | T | -| main.rs:1027:25:1027:26 | c2 | | main.rs:983:9:983:21 | Content | -| main.rs:1027:29:1027:30 | c3 | | main.rs:983:9:983:21 | Content | -| main.rs:1031:13:1031:17 | item1 | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1031:13:1031:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1031:21:1031:33 | MyType(...) | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1031:21:1031:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1031:28:1031:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1032:25:1032:29 | item1 | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1032:25:1032:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1034:13:1034:17 | item2 | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1034:13:1034:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1034:21:1034:32 | MyType(...) | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1034:21:1034:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:1034:28:1034:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1035:37:1035:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:1035:37:1035:42 | &item2 | &T | main.rs:1005:5:1005:24 | MyType | -| main.rs:1035:37:1035:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:1035:38:1035:42 | item2 | | main.rs:1005:5:1005:24 | MyType | -| main.rs:1035:38:1035:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1052:15:1052:18 | SelfParam | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1052:15:1052:18 | SelfParam | A | main.rs:1051:10:1051:10 | T | -| main.rs:1052:26:1057:9 | { ... } | | main.rs:1051:10:1051:10 | T | -| main.rs:1053:13:1056:13 | match self { ... } | | main.rs:1051:10:1051:10 | T | -| main.rs:1053:19:1053:22 | self | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1053:19:1053:22 | self | A | main.rs:1051:10:1051:10 | T | -| main.rs:1054:17:1054:29 | ...::C1(...) | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1054:17:1054:29 | ...::C1(...) | A | main.rs:1051:10:1051:10 | T | -| main.rs:1054:28:1054:28 | a | | main.rs:1051:10:1051:10 | T | -| main.rs:1054:34:1054:34 | a | | main.rs:1051:10:1051:10 | T | -| main.rs:1055:17:1055:32 | ...::C2 {...} | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1055:17:1055:32 | ...::C2 {...} | A | main.rs:1051:10:1051:10 | T | -| main.rs:1055:30:1055:30 | a | | main.rs:1051:10:1051:10 | T | -| main.rs:1055:37:1055:37 | a | | main.rs:1051:10:1051:10 | T | -| main.rs:1061:13:1061:13 | x | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1061:13:1061:13 | x | A | main.rs:1046:5:1047:14 | S1 | -| main.rs:1061:17:1061:30 | ...::C1(...) | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1061:17:1061:30 | ...::C1(...) | A | main.rs:1046:5:1047:14 | S1 | -| main.rs:1061:28:1061:29 | S1 | | main.rs:1046:5:1047:14 | S1 | -| main.rs:1062:13:1062:13 | y | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1062:13:1062:13 | y | A | main.rs:1048:5:1049:14 | S2 | -| main.rs:1062:17:1062:36 | ...::C2 {...} | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1062:17:1062:36 | ...::C2 {...} | A | main.rs:1048:5:1049:14 | S2 | -| main.rs:1062:33:1062:34 | S2 | | main.rs:1048:5:1049:14 | S2 | -| main.rs:1064:18:1064:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1064:18:1064:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1064:18:1064:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1064:18:1064:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1064:26:1064:26 | x | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1064:26:1064:26 | x | A | main.rs:1046:5:1047:14 | S1 | -| main.rs:1064:26:1064:31 | x.m1() | | main.rs:1046:5:1047:14 | S1 | -| main.rs:1065:18:1065:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1065:18:1065:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1065:18:1065:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1065:18:1065:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1065:26:1065:26 | y | | main.rs:1040:5:1044:5 | MyEnum | -| main.rs:1065:26:1065:26 | y | A | main.rs:1048:5:1049:14 | S2 | -| main.rs:1065:26:1065:31 | y.m1() | | main.rs:1048:5:1049:14 | S2 | -| main.rs:1087:15:1087:18 | SelfParam | | main.rs:1085:5:1088:5 | Self [trait MyTrait1] | -| main.rs:1092:15:1092:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1092:15:1092:19 | SelfParam | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | -| main.rs:1095:9:1101:9 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1096:13:1100:13 | if ... {...} else {...} | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1096:16:1096:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1096:16:1096:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1096:20:1096:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1096:22:1098:13 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1097:17:1097:20 | self | | file://:0:0:0:0 | & | -| main.rs:1097:17:1097:20 | self | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | -| main.rs:1097:17:1097:25 | self.m1() | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1098:20:1100:13 | { ... } | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1099:17:1099:31 | ...::m1(...) | | main.rs:1090:20:1090:22 | Tr2 | -| main.rs:1099:26:1099:30 | * ... | | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | -| main.rs:1099:27:1099:30 | self | | file://:0:0:0:0 | & | -| main.rs:1099:27:1099:30 | self | &T | main.rs:1090:5:1102:5 | Self [trait MyTrait2] | -| main.rs:1106:15:1106:18 | SelfParam | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | -| main.rs:1109:9:1115:9 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1110:13:1114:13 | if ... {...} else {...} | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1110:16:1110:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1110:16:1110:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1110:20:1110:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1110:22:1112:13 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1111:17:1111:20 | self | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | -| main.rs:1111:17:1111:25 | self.m2() | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1111:17:1111:25 | self.m2() | A | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1111:17:1111:27 | ... .a | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1112:20:1114:13 | { ... } | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1113:17:1113:31 | ...::m2(...) | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1113:17:1113:31 | ...::m2(...) | A | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1113:17:1113:33 | ... .a | | main.rs:1104:20:1104:22 | Tr3 | -| main.rs:1113:26:1113:30 | &self | | file://:0:0:0:0 | & | -| main.rs:1113:26:1113:30 | &self | &T | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | -| main.rs:1113:27:1113:30 | self | | main.rs:1104:5:1116:5 | Self [trait MyTrait3] | -| main.rs:1120:15:1120:18 | SelfParam | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1120:15:1120:18 | SelfParam | A | main.rs:1118:10:1118:10 | T | -| main.rs:1120:26:1122:9 | { ... } | | main.rs:1118:10:1118:10 | T | -| main.rs:1121:13:1121:16 | self | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1121:13:1121:16 | self | A | main.rs:1118:10:1118:10 | T | -| main.rs:1121:13:1121:18 | self.a | | main.rs:1118:10:1118:10 | T | -| main.rs:1129:15:1129:18 | SelfParam | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1129:15:1129:18 | SelfParam | A | main.rs:1127:10:1127:10 | T | -| main.rs:1129:35:1131:9 | { ... } | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1129:35:1131:9 | { ... } | A | main.rs:1127:10:1127:10 | T | -| main.rs:1130:13:1130:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1130:13:1130:33 | MyThing {...} | A | main.rs:1127:10:1127:10 | T | -| main.rs:1130:26:1130:29 | self | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1130:26:1130:29 | self | A | main.rs:1127:10:1127:10 | T | -| main.rs:1130:26:1130:31 | self.a | | main.rs:1127:10:1127:10 | T | -| main.rs:1138:44:1138:44 | x | | main.rs:1138:26:1138:41 | T2 | -| main.rs:1138:57:1140:5 | { ... } | | main.rs:1138:22:1138:23 | T1 | -| main.rs:1139:9:1139:9 | x | | main.rs:1138:26:1138:41 | T2 | -| main.rs:1139:9:1139:14 | x.m1() | | main.rs:1138:22:1138:23 | T1 | -| main.rs:1142:56:1142:56 | x | | main.rs:1142:39:1142:53 | T | -| main.rs:1144:13:1144:13 | a | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1144:13:1144:13 | a | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1144:17:1144:17 | x | | main.rs:1142:39:1142:53 | T | -| main.rs:1144:17:1144:22 | x.m1() | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1144:17:1144:22 | x.m1() | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1145:18:1145:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1145:18:1145:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1145:18:1145:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1145:18:1145:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1145:26:1145:26 | a | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1145:26:1145:26 | a | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1149:13:1149:13 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1149:13:1149:13 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1149:17:1149:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1149:17:1149:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1149:30:1149:31 | S1 | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1150:13:1150:13 | y | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1150:13:1150:13 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1150:17:1150:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1150:17:1150:33 | MyThing {...} | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1150:30:1150:31 | S2 | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1152:18:1152:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1152:18:1152:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1152:18:1152:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1152:18:1152:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1152:26:1152:26 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1152:26:1152:26 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1152:26:1152:31 | x.m1() | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1153:18:1153:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1153:18:1153:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1153:18:1153:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1153:18:1153:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1153:26:1153:26 | y | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1153:26:1153:26 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1153:26:1153:31 | y.m1() | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1155:13:1155:13 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1155:13:1155:13 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1155:17:1155:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1155:17:1155:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1155:30:1155:31 | S1 | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1156:13:1156:13 | y | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1156:13:1156:13 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1156:17:1156:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1156:17:1156:33 | MyThing {...} | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1156:30:1156:31 | S2 | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1158:18:1158:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1158:18:1158:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1158:18:1158:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1158:18:1158:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1158:26:1158:26 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1158:26:1158:26 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1158:26:1158:31 | x.m2() | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1159:18:1159:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1159:18:1159:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1159:18:1159:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1159:18:1159:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1159:26:1159:26 | y | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1159:26:1159:26 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1159:26:1159:31 | y.m2() | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1161:13:1161:13 | x | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1161:13:1161:13 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1161:17:1161:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1161:17:1161:34 | MyThing2 {...} | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1161:31:1161:32 | S1 | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1162:13:1162:13 | y | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1162:13:1162:13 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1162:17:1162:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1162:17:1162:34 | MyThing2 {...} | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1162:31:1162:32 | S2 | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1164:18:1164:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1164:18:1164:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1164:18:1164:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1164:18:1164:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1164:26:1164:26 | x | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1164:26:1164:26 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1164:26:1164:31 | x.m3() | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1165:18:1165:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1165:18:1165:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1165:18:1165:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1165:18:1165:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1165:26:1165:26 | y | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1165:26:1165:26 | y | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1165:26:1165:31 | y.m3() | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1167:13:1167:13 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1167:13:1167:13 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1167:17:1167:33 | MyThing {...} | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1167:17:1167:33 | MyThing {...} | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1167:30:1167:31 | S1 | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1168:13:1168:13 | s | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1168:17:1168:32 | call_trait_m1(...) | | main.rs:1080:5:1081:14 | S1 | -| main.rs:1168:31:1168:31 | x | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1168:31:1168:31 | x | A | main.rs:1080:5:1081:14 | S1 | -| main.rs:1170:13:1170:13 | x | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1170:13:1170:13 | x | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1170:17:1170:34 | MyThing2 {...} | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1170:17:1170:34 | MyThing2 {...} | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1170:31:1170:32 | S2 | | main.rs:1082:5:1083:14 | S2 | -| main.rs:1171:13:1171:13 | s | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1171:13:1171:13 | s | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1171:17:1171:32 | call_trait_m1(...) | | main.rs:1070:5:1073:5 | MyThing | -| main.rs:1171:17:1171:32 | call_trait_m1(...) | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1171:31:1171:31 | x | | main.rs:1075:5:1078:5 | MyThing2 | -| main.rs:1171:31:1171:31 | x | A | main.rs:1082:5:1083:14 | S2 | -| main.rs:1188:22:1188:22 | x | | file://:0:0:0:0 | & | -| main.rs:1188:22:1188:22 | x | &T | main.rs:1188:11:1188:19 | T | -| main.rs:1188:35:1190:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1188:35:1190:5 | { ... } | &T | main.rs:1188:11:1188:19 | T | -| main.rs:1189:9:1189:9 | x | | file://:0:0:0:0 | & | -| main.rs:1189:9:1189:9 | x | &T | main.rs:1188:11:1188:19 | T | -| main.rs:1193:17:1193:20 | SelfParam | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1193:29:1195:9 | { ... } | | main.rs:1181:5:1182:14 | S2 | -| main.rs:1194:13:1194:14 | S2 | | main.rs:1181:5:1182:14 | S2 | -| main.rs:1198:21:1198:21 | x | | main.rs:1198:13:1198:14 | T1 | -| main.rs:1201:5:1203:5 | { ... } | | main.rs:1198:17:1198:18 | T2 | -| main.rs:1202:9:1202:9 | x | | main.rs:1198:13:1198:14 | T1 | -| main.rs:1202:9:1202:16 | x.into() | | main.rs:1198:17:1198:18 | T2 | -| main.rs:1206:13:1206:13 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1206:17:1206:18 | S1 | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1207:18:1207:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1207:18:1207:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1207:18:1207:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1207:18:1207:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1207:26:1207:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1207:26:1207:31 | id(...) | &T | main.rs:1178:5:1179:14 | S1 | -| main.rs:1207:29:1207:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1207:29:1207:30 | &x | &T | main.rs:1178:5:1179:14 | S1 | -| main.rs:1207:30:1207:30 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1209:13:1209:13 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1209:17:1209:18 | S1 | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1210:18:1210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1210:18:1210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1210:18:1210:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1210:18:1210:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1210:26:1210:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1210:26:1210:37 | id::<...>(...) | &T | main.rs:1178:5:1179:14 | S1 | -| main.rs:1210:35:1210:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1210:35:1210:36 | &x | &T | main.rs:1178:5:1179:14 | S1 | -| main.rs:1210:36:1210:36 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1212:13:1212:13 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1212:13:1212:13 | x | | main.rs:1184:5:1184:25 | dyn Trait | -| main.rs:1212:17:1212:18 | S1 | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1212:17:1212:18 | S1 | | main.rs:1184:5:1184:25 | dyn Trait | -| main.rs:1214:18:1214:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1214:18:1214:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1214:18:1214:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1214:18:1214:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1214:26:1214:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1214:26:1214:44 | id::<...>(...) | &T | main.rs:1184:5:1184:25 | dyn Trait | -| main.rs:1214:42:1214:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1214:42:1214:43 | &x | &T | main.rs:1178:5:1179:14 | S1 | -| main.rs:1214:42:1214:43 | &x | &T | main.rs:1184:5:1184:25 | dyn Trait | -| main.rs:1214:43:1214:43 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1214:43:1214:43 | x | | main.rs:1184:5:1184:25 | dyn Trait | -| main.rs:1216:13:1216:13 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1216:17:1216:18 | S1 | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1217:9:1217:25 | into::<...>(...) | | main.rs:1181:5:1182:14 | S2 | -| main.rs:1217:24:1217:24 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1219:13:1219:13 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1219:17:1219:18 | S1 | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1220:13:1220:13 | y | | main.rs:1181:5:1182:14 | S2 | -| main.rs:1220:21:1220:27 | into(...) | | main.rs:1181:5:1182:14 | S2 | -| main.rs:1220:26:1220:26 | x | | main.rs:1178:5:1179:14 | S1 | -| main.rs:1234:22:1234:25 | SelfParam | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1234:22:1234:25 | SelfParam | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1234:22:1234:25 | SelfParam | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1234:35:1241:9 | { ... } | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1235:13:1240:13 | match self { ... } | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1235:19:1235:22 | self | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1235:19:1235:22 | self | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1235:19:1235:22 | self | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1236:17:1236:38 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1236:17:1236:38 | ...::PairNone(...) | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1236:17:1236:38 | ...::PairNone(...) | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1236:43:1236:82 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1236:50:1236:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1236:50:1236:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1236:50:1236:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1236:50:1236:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1236:50:1236:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1236:50:1236:81 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1236:50:1236:81 | { ... } | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1237:17:1237:38 | ...::PairFst(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1237:17:1237:38 | ...::PairFst(...) | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1237:17:1237:38 | ...::PairFst(...) | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1237:37:1237:37 | _ | | main.rs:1233:10:1233:12 | Fst | -| main.rs:1237:43:1237:81 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1237:50:1237:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1237:50:1237:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1237:50:1237:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1237:50:1237:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1237:50:1237:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1237:50:1237:80 | MacroExpr | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1237:50:1237:80 | { ... } | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1238:17:1238:40 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1238:17:1238:40 | ...::PairSnd(...) | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1238:17:1238:40 | ...::PairSnd(...) | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1238:37:1238:39 | snd | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1238:45:1238:47 | snd | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1239:17:1239:44 | ...::PairBoth(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1239:17:1239:44 | ...::PairBoth(...) | Fst | main.rs:1233:10:1233:12 | Fst | -| main.rs:1239:17:1239:44 | ...::PairBoth(...) | Snd | main.rs:1233:15:1233:17 | Snd | -| main.rs:1239:38:1239:38 | _ | | main.rs:1233:10:1233:12 | Fst | -| main.rs:1239:41:1239:43 | snd | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1239:49:1239:51 | snd | | main.rs:1233:15:1233:17 | Snd | -| main.rs:1265:10:1265:10 | t | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1265:10:1265:10 | t | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1265:10:1265:10 | t | Snd | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1265:10:1265:10 | t | Snd.Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1265:10:1265:10 | t | Snd.Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1266:13:1266:13 | x | | main.rs:1250:5:1251:14 | S3 | -| main.rs:1266:17:1266:17 | t | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1266:17:1266:17 | t | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1266:17:1266:17 | t | Snd | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1266:17:1266:17 | t | Snd.Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1266:17:1266:17 | t | Snd.Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1266:17:1266:29 | t.unwrapSnd() | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1266:17:1266:29 | t.unwrapSnd() | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1266:17:1266:29 | t.unwrapSnd() | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1266:17:1266:41 | ... .unwrapSnd() | | main.rs:1250:5:1251:14 | S3 | -| main.rs:1267:18:1267:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1267:18:1267:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1267:18:1267:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1267:26:1267:26 | x | | main.rs:1250:5:1251:14 | S3 | -| main.rs:1282:22:1282:25 | SelfParam | | main.rs:1280:5:1283:5 | Self [trait TraitWithAssocType] | -| main.rs:1290:22:1290:25 | SelfParam | | main.rs:1278:5:1278:28 | GenS | -| main.rs:1290:22:1290:25 | SelfParam | GenT | main.rs:1285:10:1285:15 | Output | -| main.rs:1290:44:1292:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1290:44:1292:9 | { ... } | E | main.rs:1285:10:1285:15 | Output | -| main.rs:1290:44:1292:9 | { ... } | T | main.rs:1285:10:1285:15 | Output | -| main.rs:1291:13:1291:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1291:13:1291:22 | Ok(...) | E | main.rs:1285:10:1285:15 | Output | -| main.rs:1291:13:1291:22 | Ok(...) | T | main.rs:1285:10:1285:15 | Output | -| main.rs:1291:16:1291:19 | self | | main.rs:1278:5:1278:28 | GenS | -| main.rs:1291:16:1291:19 | self | GenT | main.rs:1285:10:1285:15 | Output | -| main.rs:1291:16:1291:21 | self.0 | | main.rs:1285:10:1285:15 | Output | -| main.rs:1297:13:1297:14 | p1 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1297:13:1297:14 | p1 | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1297:13:1297:14 | p1 | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1297:26:1297:53 | ...::PairBoth(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1297:26:1297:53 | ...::PairBoth(...) | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1297:26:1297:53 | ...::PairBoth(...) | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1297:47:1297:48 | S1 | | main.rs:1244:5:1245:14 | S1 | -| main.rs:1297:51:1297:52 | S2 | | main.rs:1247:5:1248:14 | S2 | -| main.rs:1298:18:1298:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1298:18:1298:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1298:18:1298:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1298:18:1298:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1298:26:1298:27 | p1 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1298:26:1298:27 | p1 | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1298:26:1298:27 | p1 | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1301:13:1301:14 | p2 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1301:13:1301:14 | p2 | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1301:13:1301:14 | p2 | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1301:26:1301:47 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1301:26:1301:47 | ...::PairNone(...) | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1301:26:1301:47 | ...::PairNone(...) | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1302:18:1302:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1302:18:1302:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1302:18:1302:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1302:18:1302:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1302:26:1302:27 | p2 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1302:26:1302:27 | p2 | Fst | main.rs:1244:5:1245:14 | S1 | -| main.rs:1302:26:1302:27 | p2 | Snd | main.rs:1247:5:1248:14 | S2 | -| main.rs:1305:13:1305:14 | p3 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1305:13:1305:14 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1305:13:1305:14 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1305:34:1305:56 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1305:34:1305:56 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1305:34:1305:56 | ...::PairSnd(...) | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1305:54:1305:55 | S3 | | main.rs:1250:5:1251:14 | S3 | -| main.rs:1306:18:1306:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1306:18:1306:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1306:18:1306:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1306:18:1306:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1306:26:1306:27 | p3 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1306:26:1306:27 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1306:26:1306:27 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1309:13:1309:14 | p3 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1309:13:1309:14 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1309:13:1309:14 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1309:35:1309:56 | ...::PairNone(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1309:35:1309:56 | ...::PairNone(...) | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1309:35:1309:56 | ...::PairNone(...) | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1310:18:1310:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1310:18:1310:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1310:18:1310:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1310:18:1310:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1310:26:1310:27 | p3 | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1310:26:1310:27 | p3 | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1310:26:1310:27 | p3 | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1312:11:1312:54 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1312:11:1312:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1312:31:1312:53 | ...::PairSnd(...) | | main.rs:1225:5:1231:5 | PairOption | -| main.rs:1312:31:1312:53 | ...::PairSnd(...) | Fst | main.rs:1247:5:1248:14 | S2 | -| main.rs:1312:31:1312:53 | ...::PairSnd(...) | Snd | main.rs:1250:5:1251:14 | S3 | -| main.rs:1312:51:1312:52 | S3 | | main.rs:1250:5:1251:14 | S3 | -| main.rs:1314:13:1314:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1314:13:1314:13 | x | E | main.rs:1244:5:1245:14 | S1 | -| main.rs:1314:13:1314:13 | x | T | main.rs:1270:5:1270:34 | S4 | -| main.rs:1314:13:1314:13 | x | T.T41 | main.rs:1247:5:1248:14 | S2 | -| main.rs:1314:13:1314:13 | x | T.T42 | main.rs:1272:5:1272:22 | S5 | -| main.rs:1314:13:1314:13 | x | T.T42.T5 | main.rs:1247:5:1248:14 | S2 | -| main.rs:1316:13:1316:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1316:13:1316:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1316:13:1316:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1316:17:1316:26 | GenS(...) | | main.rs:1278:5:1278:28 | GenS | -| main.rs:1316:17:1316:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1316:17:1316:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1316:17:1316:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1316:17:1316:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1316:22:1316:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1329:16:1329:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1329:16:1329:24 | SelfParam | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | -| main.rs:1329:27:1329:31 | value | | main.rs:1327:19:1327:19 | S | -| main.rs:1331:21:1331:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1331:21:1331:29 | SelfParam | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | -| main.rs:1331:32:1331:36 | value | | main.rs:1327:19:1327:19 | S | -| main.rs:1332:13:1332:16 | self | | file://:0:0:0:0 | & | -| main.rs:1332:13:1332:16 | self | &T | main.rs:1327:5:1334:5 | Self [trait MyTrait] | -| main.rs:1332:22:1332:26 | value | | main.rs:1327:19:1327:19 | S | -| main.rs:1338:16:1338:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1338:16:1338:24 | SelfParam | &T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1338:16:1338:24 | SelfParam | &T.T | main.rs:1336:10:1336:10 | T | -| main.rs:1338:27:1338:31 | value | | main.rs:1336:10:1336:10 | T | -| main.rs:1342:26:1344:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1342:26:1344:9 | { ... } | T | main.rs:1341:10:1341:10 | T | -| main.rs:1343:13:1343:30 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1343:13:1343:30 | ...::MyNone(...) | T | main.rs:1341:10:1341:10 | T | -| main.rs:1348:20:1348:23 | SelfParam | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1348:20:1348:23 | SelfParam | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1348:20:1348:23 | SelfParam | T.T | main.rs:1347:10:1347:10 | T | -| main.rs:1348:41:1353:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1348:41:1353:9 | { ... } | T | main.rs:1347:10:1347:10 | T | -| main.rs:1349:13:1352:13 | match self { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1349:13:1352:13 | match self { ... } | T | main.rs:1347:10:1347:10 | T | -| main.rs:1349:19:1349:22 | self | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1349:19:1349:22 | self | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1349:19:1349:22 | self | T.T | main.rs:1347:10:1347:10 | T | -| main.rs:1350:17:1350:34 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1350:17:1350:34 | ...::MyNone(...) | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1350:17:1350:34 | ...::MyNone(...) | T.T | main.rs:1347:10:1347:10 | T | -| main.rs:1350:39:1350:56 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1350:39:1350:56 | ...::MyNone(...) | T | main.rs:1347:10:1347:10 | T | -| main.rs:1351:17:1351:35 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1351:17:1351:35 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1351:17:1351:35 | ...::MySome(...) | T.T | main.rs:1347:10:1347:10 | T | -| main.rs:1351:34:1351:34 | x | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1351:34:1351:34 | x | T | main.rs:1347:10:1347:10 | T | -| main.rs:1351:40:1351:40 | x | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1351:40:1351:40 | x | T | main.rs:1347:10:1347:10 | T | -| main.rs:1360:13:1360:14 | x1 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1360:13:1360:14 | x1 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1360:18:1360:37 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1360:18:1360:37 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1361:18:1361:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1361:18:1361:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1361:18:1361:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1361:18:1361:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1361:26:1361:27 | x1 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1361:26:1361:27 | x1 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1363:17:1363:18 | x2 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1363:17:1363:18 | x2 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1363:22:1363:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1363:22:1363:36 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1364:9:1364:10 | x2 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1364:9:1364:10 | x2 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1364:16:1364:16 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1365:18:1365:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1365:18:1365:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1365:18:1365:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1365:18:1365:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1365:26:1365:27 | x2 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1365:26:1365:27 | x2 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1368:17:1368:18 | x3 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1368:22:1368:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1369:9:1369:10 | x3 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1369:21:1369:21 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1370:18:1370:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1370:18:1370:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1370:18:1370:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1370:26:1370:27 | x3 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1372:17:1372:18 | x4 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1372:17:1372:18 | x4 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1372:22:1372:36 | ...::new(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1372:22:1372:36 | ...::new(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1373:23:1373:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1373:23:1373:29 | &mut x4 | &T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1373:23:1373:29 | &mut x4 | &T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1373:28:1373:29 | x4 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1373:28:1373:29 | x4 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1373:32:1373:32 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1374:18:1374:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1374:18:1374:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1374:18:1374:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1374:18:1374:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1374:26:1374:27 | x4 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1374:26:1374:27 | x4 | T | main.rs:1356:5:1357:13 | S | -| main.rs:1376:13:1376:14 | x5 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1376:13:1376:14 | x5 | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1376:13:1376:14 | x5 | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1376:18:1376:58 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1376:18:1376:58 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1376:18:1376:58 | ...::MySome(...) | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1376:35:1376:57 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1376:35:1376:57 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1377:18:1377:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1377:18:1377:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1377:18:1377:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1377:18:1377:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1377:26:1377:27 | x5 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1377:26:1377:27 | x5 | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1377:26:1377:27 | x5 | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1377:26:1377:37 | x5.flatten() | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1377:26:1377:37 | x5.flatten() | T | main.rs:1356:5:1357:13 | S | -| main.rs:1379:13:1379:14 | x6 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1379:13:1379:14 | x6 | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1379:13:1379:14 | x6 | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1379:18:1379:58 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1379:18:1379:58 | ...::MySome(...) | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1379:18:1379:58 | ...::MySome(...) | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1379:35:1379:57 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1379:35:1379:57 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1380:18:1380:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1380:18:1380:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1380:18:1380:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1380:18:1380:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1380:26:1380:61 | ...::flatten(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1380:26:1380:61 | ...::flatten(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1380:59:1380:60 | x6 | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1380:59:1380:60 | x6 | T | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1380:59:1380:60 | x6 | T.T | main.rs:1356:5:1357:13 | S | -| main.rs:1383:13:1383:19 | from_if | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1383:13:1383:19 | from_if | T | main.rs:1356:5:1357:13 | S | -| main.rs:1383:23:1387:9 | if ... {...} else {...} | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1383:23:1387:9 | if ... {...} else {...} | T | main.rs:1356:5:1357:13 | S | -| main.rs:1383:26:1383:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:26:1383:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1383:30:1383:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:32:1385:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1383:32:1385:9 | { ... } | T | main.rs:1356:5:1357:13 | S | -| main.rs:1384:13:1384:30 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1384:13:1384:30 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1385:16:1387:9 | { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1385:16:1387:9 | { ... } | T | main.rs:1356:5:1357:13 | S | -| main.rs:1386:13:1386:31 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1386:13:1386:31 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1386:30:1386:30 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1388:18:1388:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1388:18:1388:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1388:18:1388:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1388:18:1388:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1388:26:1388:32 | from_if | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1388:26:1388:32 | from_if | T | main.rs:1356:5:1357:13 | S | -| main.rs:1391:13:1391:22 | from_match | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1391:13:1391:22 | from_match | T | main.rs:1356:5:1357:13 | S | -| main.rs:1391:26:1394:9 | match ... { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1391:26:1394:9 | match ... { ... } | T | main.rs:1356:5:1357:13 | S | -| main.rs:1391:32:1391:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1391:32:1391:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1391:36:1391:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1392:13:1392:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1392:21:1392:38 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1392:21:1392:38 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1393:13:1393:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1393:22:1393:40 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1393:22:1393:40 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1393:39:1393:39 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1395:18:1395:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1395:18:1395:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1395:18:1395:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1395:18:1395:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1395:26:1395:35 | from_match | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1395:26:1395:35 | from_match | T | main.rs:1356:5:1357:13 | S | -| main.rs:1398:13:1398:21 | from_loop | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1398:13:1398:21 | from_loop | T | main.rs:1356:5:1357:13 | S | -| main.rs:1398:25:1403:9 | loop { ... } | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1398:25:1403:9 | loop { ... } | T | main.rs:1356:5:1357:13 | S | -| main.rs:1399:16:1399:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1399:16:1399:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1399:20:1399:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1400:23:1400:40 | ...::MyNone(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1400:23:1400:40 | ...::MyNone(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1402:19:1402:37 | ...::MySome(...) | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1402:19:1402:37 | ...::MySome(...) | T | main.rs:1356:5:1357:13 | S | -| main.rs:1402:36:1402:36 | S | | main.rs:1356:5:1357:13 | S | -| main.rs:1404:18:1404:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1404:18:1404:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1404:18:1404:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1404:18:1404:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1404:26:1404:34 | from_loop | | main.rs:1321:5:1325:5 | MyOption | -| main.rs:1404:26:1404:34 | from_loop | T | main.rs:1356:5:1357:13 | S | -| main.rs:1422:15:1422:18 | SelfParam | | main.rs:1410:5:1411:19 | S | -| main.rs:1422:15:1422:18 | SelfParam | T | main.rs:1421:10:1421:10 | T | -| main.rs:1422:26:1424:9 | { ... } | | main.rs:1421:10:1421:10 | T | -| main.rs:1423:13:1423:16 | self | | main.rs:1410:5:1411:19 | S | -| main.rs:1423:13:1423:16 | self | T | main.rs:1421:10:1421:10 | T | -| main.rs:1423:13:1423:18 | self.0 | | main.rs:1421:10:1421:10 | T | -| main.rs:1426:15:1426:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1426:15:1426:19 | SelfParam | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1426:15:1426:19 | SelfParam | &T.T | main.rs:1421:10:1421:10 | T | -| main.rs:1426:28:1428:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1426:28:1428:9 | { ... } | &T | main.rs:1421:10:1421:10 | T | -| main.rs:1427:13:1427:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1427:13:1427:19 | &... | &T | main.rs:1421:10:1421:10 | T | -| main.rs:1427:14:1427:17 | self | | file://:0:0:0:0 | & | -| main.rs:1427:14:1427:17 | self | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1427:14:1427:17 | self | &T.T | main.rs:1421:10:1421:10 | T | -| main.rs:1427:14:1427:19 | self.0 | | main.rs:1421:10:1421:10 | T | -| main.rs:1430:15:1430:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1430:15:1430:25 | SelfParam | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1430:15:1430:25 | SelfParam | &T.T | main.rs:1421:10:1421:10 | T | -| main.rs:1430:34:1432:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1430:34:1432:9 | { ... } | &T | main.rs:1421:10:1421:10 | T | -| main.rs:1431:13:1431:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1431:13:1431:19 | &... | &T | main.rs:1421:10:1421:10 | T | -| main.rs:1431:14:1431:17 | self | | file://:0:0:0:0 | & | -| main.rs:1431:14:1431:17 | self | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1431:14:1431:17 | self | &T.T | main.rs:1421:10:1421:10 | T | -| main.rs:1431:14:1431:19 | self.0 | | main.rs:1421:10:1421:10 | T | -| main.rs:1436:29:1436:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1436:29:1436:33 | SelfParam | &T | main.rs:1435:5:1438:5 | Self [trait ATrait] | -| main.rs:1437:33:1437:36 | SelfParam | | main.rs:1435:5:1438:5 | Self [trait ATrait] | -| main.rs:1443:29:1443:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1443:29:1443:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1443:29:1443:33 | SelfParam | &T.&T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1443:43:1445:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:13:1444:22 | (...) | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1444:13:1444:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:14:1444:21 | * ... | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1444:15:1444:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1444:15:1444:21 | (...) | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1444:16:1444:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1444:16:1444:20 | * ... | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1444:17:1444:20 | self | | file://:0:0:0:0 | & | -| main.rs:1444:17:1444:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1444:17:1444:20 | self | &T.&T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1448:33:1448:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1448:33:1448:36 | SelfParam | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1448:46:1450:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1449:13:1449:19 | (...) | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1449:13:1449:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1449:14:1449:18 | * ... | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1449:15:1449:18 | self | | file://:0:0:0:0 | & | -| main.rs:1449:15:1449:18 | self | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1454:13:1454:14 | x1 | | main.rs:1410:5:1411:19 | S | -| main.rs:1454:13:1454:14 | x1 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1454:18:1454:22 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1454:18:1454:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1454:20:1454:21 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1455:18:1455:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1455:18:1455:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1455:18:1455:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1455:26:1455:27 | x1 | | main.rs:1410:5:1411:19 | S | -| main.rs:1455:26:1455:27 | x1 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1455:26:1455:32 | x1.m1() | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1457:13:1457:14 | x2 | | main.rs:1410:5:1411:19 | S | -| main.rs:1457:13:1457:14 | x2 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1457:18:1457:22 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1457:18:1457:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1457:20:1457:21 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1459:18:1459:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1459:18:1459:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1459:18:1459:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1459:18:1459:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1459:26:1459:27 | x2 | | main.rs:1410:5:1411:19 | S | -| main.rs:1459:26:1459:27 | x2 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1459:26:1459:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1459:26:1459:32 | x2.m2() | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1460:18:1460:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1460:18:1460:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1460:18:1460:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1460:18:1460:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1460:26:1460:27 | x2 | | main.rs:1410:5:1411:19 | S | -| main.rs:1460:26:1460:27 | x2 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1460:26:1460:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1460:26:1460:32 | x2.m3() | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1462:13:1462:14 | x3 | | main.rs:1410:5:1411:19 | S | -| main.rs:1462:13:1462:14 | x3 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1462:18:1462:22 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1462:18:1462:22 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1462:20:1462:21 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1464:18:1464:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1464:18:1464:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1464:18:1464:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1464:26:1464:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1464:26:1464:41 | ...::m2(...) | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1464:38:1464:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1464:38:1464:40 | &x3 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1464:38:1464:40 | &x3 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1464:39:1464:40 | x3 | | main.rs:1410:5:1411:19 | S | -| main.rs:1464:39:1464:40 | x3 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1465:18:1465:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1465:18:1465:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1465:18:1465:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1465:18:1465:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1465:26:1465:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1465:26:1465:41 | ...::m3(...) | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1465:38:1465:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1465:38:1465:40 | &x3 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1465:38:1465:40 | &x3 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1465:39:1465:40 | x3 | | main.rs:1410:5:1411:19 | S | -| main.rs:1465:39:1465:40 | x3 | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1467:13:1467:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1467:13:1467:14 | x4 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1467:13:1467:14 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1467:18:1467:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1467:18:1467:23 | &... | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1467:18:1467:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1467:19:1467:23 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1467:19:1467:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1467:21:1467:22 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1469:18:1469:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1469:18:1469:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1469:18:1469:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1469:18:1469:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1469:26:1469:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1469:26:1469:27 | x4 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1469:26:1469:27 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1469:26:1469:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1469:26:1469:32 | x4.m2() | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1470:18:1470:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1470:18:1470:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1470:18:1470:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1470:18:1470:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1470:26:1470:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1470:26:1470:27 | x4 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1470:26:1470:27 | x4 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1470:26:1470:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1470:26:1470:32 | x4.m3() | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1472:13:1472:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1472:13:1472:14 | x5 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1472:13:1472:14 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1472:18:1472:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1472:18:1472:23 | &... | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1472:18:1472:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1472:19:1472:23 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1472:19:1472:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1472:21:1472:22 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1474:18:1474:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1474:18:1474:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1474:18:1474:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1474:18:1474:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1474:26:1474:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1474:26:1474:27 | x5 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1474:26:1474:27 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1474:26:1474:32 | x5.m1() | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1475:18:1475:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1475:18:1475:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1475:18:1475:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1475:18:1475:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1475:26:1475:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1475:26:1475:27 | x5 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1475:26:1475:27 | x5 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1475:26:1475:29 | x5.0 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1477:13:1477:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1477:13:1477:14 | x6 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1477:13:1477:14 | x6 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1477:18:1477:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1477:18:1477:23 | &... | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1477:18:1477:23 | &... | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1477:19:1477:23 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1477:19:1477:23 | S(...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1477:21:1477:22 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1480:18:1480:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1480:18:1480:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1480:18:1480:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1480:18:1480:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1480:26:1480:30 | (...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1480:26:1480:30 | (...) | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1480:26:1480:35 | ... .m1() | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1480:27:1480:29 | * ... | | main.rs:1410:5:1411:19 | S | -| main.rs:1480:27:1480:29 | * ... | T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1480:28:1480:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1480:28:1480:29 | x6 | &T | main.rs:1410:5:1411:19 | S | -| main.rs:1480:28:1480:29 | x6 | &T.T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1482:13:1482:14 | x7 | | main.rs:1410:5:1411:19 | S | -| main.rs:1482:13:1482:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1482:13:1482:14 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1482:18:1482:23 | S(...) | | main.rs:1410:5:1411:19 | S | -| main.rs:1482:18:1482:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1482:18:1482:23 | S(...) | T.&T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1482:20:1482:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1482:20:1482:22 | &S2 | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1482:21:1482:22 | S2 | | main.rs:1413:5:1414:14 | S2 | -| main.rs:1485:13:1485:13 | t | | file://:0:0:0:0 | & | -| main.rs:1485:13:1485:13 | t | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1485:17:1485:18 | x7 | | main.rs:1410:5:1411:19 | S | -| main.rs:1485:17:1485:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1485:17:1485:18 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1485:17:1485:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1485:17:1485:23 | x7.m1() | &T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1486:18:1486:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1486:18:1486:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1486:18:1486:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1486:18:1486:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1486:26:1486:27 | x7 | | main.rs:1410:5:1411:19 | S | -| main.rs:1486:26:1486:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1486:26:1486:27 | x7 | T.&T | main.rs:1413:5:1414:14 | S2 | -| main.rs:1488:13:1488:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1488:26:1488:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1488:26:1488:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1488:26:1488:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1492:13:1492:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1492:13:1492:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1492:17:1492:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1492:17:1492:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1492:17:1492:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1494:13:1494:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1494:13:1494:20 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1494:24:1494:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1494:24:1494:39 | &... | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1494:25:1494:39 | MyInt {...} | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1494:36:1494:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1494:36:1494:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1496:13:1496:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1496:17:1496:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1496:17:1496:24 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1496:17:1496:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:827:26:827:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:828:13:828:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:828:17:828:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:828:33:828:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:828:33:828:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:829:18:829:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:829:18:829:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:829:18:829:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:829:18:829:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:829:26:829:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:830:13:830:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:830:17:830:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:830:33:830:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:830:33:830:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:831:18:831:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:831:18:831:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:831:18:831:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:831:18:831:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:831:26:831:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:832:13:832:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:832:17:832:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:832:31:832:32 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:832:31:832:32 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:833:18:833:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:833:18:833:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:833:18:833:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:833:18:833:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:833:26:833:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:834:13:834:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:834:17:834:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:834:33:834:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:834:33:834:34 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:835:18:835:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:18:835:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:26:835:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:836:13:836:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:836:17:836:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:836:33:836:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:836:33:836:34 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:837:18:837:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:837:18:837:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:837:18:837:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:837:18:837:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:837:26:837:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:838:13:838:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:838:17:838:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:838:36:838:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:838:36:838:37 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:839:18:839:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:839:18:839:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:839:18:839:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:839:18:839:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:839:26:839:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:840:13:840:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:840:17:840:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:840:36:840:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:840:36:840:37 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:841:18:841:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:18:841:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:26:841:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:842:13:842:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:842:17:842:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:842:36:842:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:842:36:842:37 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:843:18:843:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:843:18:843:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:843:18:843:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:843:18:843:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:843:26:843:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:844:13:844:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:844:17:844:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:844:36:844:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:844:36:844:37 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:845:18:845:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:845:18:845:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:845:18:845:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:845:18:845:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:845:26:845:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:847:13:847:14 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:847:13:847:14 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:847:13:847:14 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:847:18:849:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:847:18:849:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:847:18:849:9 | MyThing {...} | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:848:16:848:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:848:16:848:32 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:848:29:848:30 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:850:13:850:14 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:850:13:850:14 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:850:13:850:14 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:850:18:852:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:850:18:852:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:850:18:852:9 | MyThing {...} | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:851:16:851:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:851:16:851:32 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:851:29:851:30 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:854:13:854:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:854:17:854:39 | call_trait_thing_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:854:37:854:38 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:854:37:854:38 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:854:37:854:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:855:18:855:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:855:18:855:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:855:26:855:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:856:13:856:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:856:17:856:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:856:39:856:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:856:39:856:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:856:39:856:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:857:18:857:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:857:18:857:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:857:26:857:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:858:17:858:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:858:39:858:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:858:39:858:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:858:39:858:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:859:18:859:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:859:18:859:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:860:13:860:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:860:17:860:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:860:37:860:38 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:860:37:860:38 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:860:37:860:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:861:18:861:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:861:18:861:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:861:26:861:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:862:13:862:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:862:17:862:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:862:39:862:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:862:39:862:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:862:39:862:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:863:18:863:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:863:18:863:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:863:26:863:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:864:13:864:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:864:17:864:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:864:39:864:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:864:39:864:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:864:39:864:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:865:18:865:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:865:18:865:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:865:26:865:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:876:19:876:22 | SelfParam | | main.rs:870:5:873:5 | Wrapper | +| main.rs:876:19:876:22 | SelfParam | A | main.rs:875:10:875:10 | A | +| main.rs:876:30:878:9 | { ... } | | main.rs:875:10:875:10 | A | +| main.rs:877:13:877:16 | self | | main.rs:870:5:873:5 | Wrapper | +| main.rs:877:13:877:16 | self | A | main.rs:875:10:875:10 | A | +| main.rs:877:13:877:22 | self.field | | main.rs:875:10:875:10 | A | +| main.rs:885:15:885:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | +| main.rs:887:15:887:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | +| main.rs:891:9:894:9 | { ... } | | main.rs:882:9:882:28 | AssociatedType | +| main.rs:892:13:892:16 | self | | main.rs:881:5:895:5 | Self [trait MyTrait] | +| main.rs:892:13:892:21 | self.m1() | | main.rs:882:9:882:28 | AssociatedType | +| main.rs:893:13:893:43 | ...::default(...) | | main.rs:882:9:882:28 | AssociatedType | +| main.rs:901:19:901:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:901:19:901:23 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | +| main.rs:901:26:901:26 | a | | main.rs:901:16:901:16 | A | +| main.rs:903:22:903:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:903:22:903:26 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | +| main.rs:903:29:903:29 | a | | main.rs:903:19:903:19 | A | +| main.rs:903:35:903:35 | b | | main.rs:903:19:903:19 | A | +| main.rs:903:75:906:9 | { ... } | | main.rs:898:9:898:52 | GenericAssociatedType | +| main.rs:904:13:904:16 | self | | file://:0:0:0:0 | & | +| main.rs:904:13:904:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | +| main.rs:904:13:904:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | +| main.rs:904:22:904:22 | a | | main.rs:903:19:903:19 | A | +| main.rs:905:13:905:16 | self | | file://:0:0:0:0 | & | +| main.rs:905:13:905:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | +| main.rs:905:13:905:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | +| main.rs:905:22:905:22 | b | | main.rs:903:19:903:19 | A | +| main.rs:914:21:914:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:914:21:914:25 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | +| main.rs:916:20:916:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:916:20:916:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | +| main.rs:918:20:918:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:918:20:918:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | +| main.rs:934:15:934:18 | SelfParam | | main.rs:921:5:922:13 | S | +| main.rs:934:45:936:9 | { ... } | | main.rs:927:5:928:14 | AT | +| main.rs:935:13:935:14 | AT | | main.rs:927:5:928:14 | AT | +| main.rs:944:19:944:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:944:19:944:23 | SelfParam | &T | main.rs:921:5:922:13 | S | +| main.rs:944:26:944:26 | a | | main.rs:944:16:944:16 | A | +| main.rs:944:46:946:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | +| main.rs:944:46:946:9 | { ... } | A | main.rs:944:16:944:16 | A | +| main.rs:945:13:945:32 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | +| main.rs:945:13:945:32 | Wrapper {...} | A | main.rs:944:16:944:16 | A | +| main.rs:945:30:945:30 | a | | main.rs:944:16:944:16 | A | +| main.rs:953:15:953:18 | SelfParam | | main.rs:924:5:925:14 | S2 | +| main.rs:953:45:955:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | +| main.rs:953:45:955:9 | { ... } | A | main.rs:924:5:925:14 | S2 | +| main.rs:954:13:954:35 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | +| main.rs:954:13:954:35 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | +| main.rs:954:30:954:33 | self | | main.rs:924:5:925:14 | S2 | +| main.rs:960:30:962:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | +| main.rs:960:30:962:9 | { ... } | A | main.rs:924:5:925:14 | S2 | +| main.rs:961:13:961:33 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | +| main.rs:961:13:961:33 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | +| main.rs:961:30:961:31 | S2 | | main.rs:924:5:925:14 | S2 | +| main.rs:967:22:967:26 | thing | | main.rs:967:10:967:19 | T | +| main.rs:968:9:968:13 | thing | | main.rs:967:10:967:19 | T | +| main.rs:975:21:975:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:975:21:975:25 | SelfParam | &T | main.rs:927:5:928:14 | AT | +| main.rs:975:34:977:9 | { ... } | | main.rs:927:5:928:14 | AT | +| main.rs:976:13:976:14 | AT | | main.rs:927:5:928:14 | AT | +| main.rs:979:20:979:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:979:20:979:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | +| main.rs:979:43:981:9 | { ... } | | main.rs:921:5:922:13 | S | +| main.rs:980:13:980:13 | S | | main.rs:921:5:922:13 | S | +| main.rs:983:20:983:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:983:20:983:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | +| main.rs:983:43:985:9 | { ... } | | main.rs:924:5:925:14 | S2 | +| main.rs:984:13:984:14 | S2 | | main.rs:924:5:925:14 | S2 | +| main.rs:989:13:989:14 | x1 | | main.rs:921:5:922:13 | S | +| main.rs:989:18:989:18 | S | | main.rs:921:5:922:13 | S | +| main.rs:991:18:991:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:991:18:991:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:991:18:991:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:991:18:991:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:991:26:991:27 | x1 | | main.rs:921:5:922:13 | S | +| main.rs:991:26:991:32 | x1.m1() | | main.rs:927:5:928:14 | AT | +| main.rs:993:13:993:14 | x2 | | main.rs:921:5:922:13 | S | +| main.rs:993:18:993:18 | S | | main.rs:921:5:922:13 | S | +| main.rs:995:13:995:13 | y | | main.rs:927:5:928:14 | AT | +| main.rs:995:17:995:18 | x2 | | main.rs:921:5:922:13 | S | +| main.rs:995:17:995:23 | x2.m2() | | main.rs:927:5:928:14 | AT | +| main.rs:996:18:996:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:996:18:996:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:996:18:996:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:996:18:996:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:996:26:996:26 | y | | main.rs:927:5:928:14 | AT | +| main.rs:998:13:998:14 | x3 | | main.rs:921:5:922:13 | S | +| main.rs:998:18:998:18 | S | | main.rs:921:5:922:13 | S | +| main.rs:1000:18:1000:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1000:18:1000:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1000:18:1000:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1000:18:1000:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1000:26:1000:27 | x3 | | main.rs:921:5:922:13 | S | +| main.rs:1000:26:1000:34 | x3.put(...) | | main.rs:870:5:873:5 | Wrapper | +| main.rs:1000:26:1000:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:1000:26:1000:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1000:33:1000:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1003:18:1003:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1003:18:1003:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1003:18:1003:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1003:18:1003:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1003:26:1003:27 | x3 | | main.rs:921:5:922:13 | S | +| main.rs:1003:26:1003:40 | x3.putTwo(...) | | main.rs:870:5:873:5 | Wrapper | +| main.rs:1003:26:1003:40 | x3.putTwo(...) | A | main.rs:941:36:941:50 | AssociatedParam | +| main.rs:1003:26:1003:49 | ... .unwrap() | | main.rs:941:36:941:50 | AssociatedParam | +| main.rs:1003:36:1003:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1003:39:1003:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1005:20:1005:20 | S | | main.rs:921:5:922:13 | S | +| main.rs:1006:18:1006:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1006:18:1006:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1006:18:1006:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1006:18:1006:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1008:13:1008:14 | x5 | | main.rs:924:5:925:14 | S2 | +| main.rs:1008:18:1008:19 | S2 | | main.rs:924:5:925:14 | S2 | +| main.rs:1009:18:1009:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1009:18:1009:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1009:18:1009:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1009:18:1009:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1009:26:1009:27 | x5 | | main.rs:924:5:925:14 | S2 | +| main.rs:1009:26:1009:32 | x5.m1() | | main.rs:870:5:873:5 | Wrapper | +| main.rs:1009:26:1009:32 | x5.m1() | A | main.rs:924:5:925:14 | S2 | +| main.rs:1010:13:1010:14 | x6 | | main.rs:924:5:925:14 | S2 | +| main.rs:1010:18:1010:19 | S2 | | main.rs:924:5:925:14 | S2 | +| main.rs:1011:18:1011:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1011:18:1011:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1011:18:1011:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1011:18:1011:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1011:26:1011:27 | x6 | | main.rs:924:5:925:14 | S2 | +| main.rs:1011:26:1011:32 | x6.m2() | | main.rs:870:5:873:5 | Wrapper | +| main.rs:1011:26:1011:32 | x6.m2() | A | main.rs:924:5:925:14 | S2 | +| main.rs:1013:13:1013:22 | assoc_zero | | main.rs:927:5:928:14 | AT | +| main.rs:1013:26:1013:27 | AT | | main.rs:927:5:928:14 | AT | +| main.rs:1013:26:1013:38 | AT.get_zero() | | main.rs:927:5:928:14 | AT | +| main.rs:1014:13:1014:21 | assoc_one | | main.rs:921:5:922:13 | S | +| main.rs:1014:25:1014:26 | AT | | main.rs:927:5:928:14 | AT | +| main.rs:1014:25:1014:36 | AT.get_one() | | main.rs:921:5:922:13 | S | +| main.rs:1015:13:1015:21 | assoc_two | | main.rs:924:5:925:14 | S2 | +| main.rs:1015:25:1015:26 | AT | | main.rs:927:5:928:14 | AT | +| main.rs:1015:25:1015:36 | AT.get_two() | | main.rs:924:5:925:14 | S2 | +| main.rs:1023:19:1023:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1023:19:1023:23 | SelfParam | &T | main.rs:1020:5:1024:5 | Self [trait Supertrait] | +| main.rs:1023:26:1023:32 | content | | main.rs:1021:9:1021:21 | Content | +| main.rs:1028:24:1028:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1028:24:1028:28 | SelfParam | &T | main.rs:1026:5:1029:5 | Self [trait Subtrait] | +| main.rs:1037:23:1037:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1037:23:1037:27 | SelfParam | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | +| main.rs:1037:30:1037:31 | c1 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1037:49:1037:50 | c2 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1038:13:1038:16 | self | | file://:0:0:0:0 | & | +| main.rs:1038:13:1038:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | +| main.rs:1038:25:1038:26 | c1 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1039:13:1039:16 | self | | file://:0:0:0:0 | & | +| main.rs:1039:13:1039:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | +| main.rs:1039:25:1039:26 | c2 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1047:19:1047:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1047:19:1047:23 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | +| main.rs:1047:19:1047:23 | SelfParam | &T.T | main.rs:1045:10:1045:10 | T | +| main.rs:1047:26:1047:33 | _content | | main.rs:1045:10:1045:10 | T | +| main.rs:1048:22:1048:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:1048:22:1048:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1048:22:1048:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1048:22:1048:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1054:24:1054:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1054:24:1054:28 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | +| main.rs:1054:24:1054:28 | SelfParam | &T.T | main.rs:1052:10:1052:17 | T | +| main.rs:1054:48:1056:9 | { ... } | | main.rs:1052:10:1052:17 | T | +| main.rs:1055:13:1055:19 | (...) | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1055:13:1055:19 | (...) | T | main.rs:1052:10:1052:17 | T | +| main.rs:1055:13:1055:21 | ... .0 | | main.rs:1052:10:1052:17 | T | +| main.rs:1055:13:1055:29 | ... .clone() | | main.rs:1052:10:1052:17 | T | +| main.rs:1055:14:1055:18 | * ... | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1055:14:1055:18 | * ... | T | main.rs:1052:10:1052:17 | T | +| main.rs:1055:15:1055:18 | self | | file://:0:0:0:0 | & | +| main.rs:1055:15:1055:18 | self | &T | main.rs:1043:5:1043:24 | MyType | +| main.rs:1055:15:1055:18 | self | &T.T | main.rs:1052:10:1052:17 | T | +| main.rs:1059:33:1059:36 | item | | file://:0:0:0:0 | & | +| main.rs:1059:33:1059:36 | item | &T | main.rs:1059:20:1059:30 | T | +| main.rs:1059:57:1061:5 | { ... } | | main.rs:1021:9:1021:21 | Content | +| main.rs:1060:9:1060:12 | item | | file://:0:0:0:0 | & | +| main.rs:1060:9:1060:12 | item | &T | main.rs:1059:20:1059:30 | T | +| main.rs:1060:9:1060:26 | item.get_content() | | main.rs:1021:9:1021:21 | Content | +| main.rs:1063:35:1063:38 | item | | file://:0:0:0:0 | & | +| main.rs:1063:35:1063:38 | item | &T | main.rs:1063:21:1063:32 | T | +| main.rs:1063:45:1063:46 | c1 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1063:61:1063:62 | c2 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1063:77:1063:78 | c3 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1064:9:1064:12 | item | | file://:0:0:0:0 | & | +| main.rs:1064:9:1064:12 | item | &T | main.rs:1063:21:1063:32 | T | +| main.rs:1064:21:1064:22 | c1 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1065:9:1065:12 | item | | file://:0:0:0:0 | & | +| main.rs:1065:9:1065:12 | item | &T | main.rs:1063:21:1063:32 | T | +| main.rs:1065:25:1065:26 | c2 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1065:29:1065:30 | c3 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1069:13:1069:17 | item1 | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1069:13:1069:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1069:21:1069:33 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1069:21:1069:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1069:28:1069:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1070:25:1070:29 | item1 | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1070:25:1070:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1072:13:1072:17 | item2 | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1072:13:1072:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1072:21:1072:32 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1072:21:1072:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:1072:28:1072:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1073:37:1073:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:1073:37:1073:42 | &item2 | &T | main.rs:1043:5:1043:24 | MyType | +| main.rs:1073:37:1073:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:1073:38:1073:42 | item2 | | main.rs:1043:5:1043:24 | MyType | +| main.rs:1073:38:1073:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1090:15:1090:18 | SelfParam | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1090:15:1090:18 | SelfParam | A | main.rs:1089:10:1089:10 | T | +| main.rs:1090:26:1095:9 | { ... } | | main.rs:1089:10:1089:10 | T | +| main.rs:1091:13:1094:13 | match self { ... } | | main.rs:1089:10:1089:10 | T | +| main.rs:1091:19:1091:22 | self | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1091:19:1091:22 | self | A | main.rs:1089:10:1089:10 | T | +| main.rs:1092:17:1092:29 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1092:17:1092:29 | ...::C1(...) | A | main.rs:1089:10:1089:10 | T | +| main.rs:1092:28:1092:28 | a | | main.rs:1089:10:1089:10 | T | +| main.rs:1092:34:1092:34 | a | | main.rs:1089:10:1089:10 | T | +| main.rs:1093:17:1093:32 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1093:17:1093:32 | ...::C2 {...} | A | main.rs:1089:10:1089:10 | T | +| main.rs:1093:30:1093:30 | a | | main.rs:1089:10:1089:10 | T | +| main.rs:1093:37:1093:37 | a | | main.rs:1089:10:1089:10 | T | +| main.rs:1099:13:1099:13 | x | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1099:13:1099:13 | x | A | main.rs:1084:5:1085:14 | S1 | +| main.rs:1099:17:1099:30 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1099:17:1099:30 | ...::C1(...) | A | main.rs:1084:5:1085:14 | S1 | +| main.rs:1099:28:1099:29 | S1 | | main.rs:1084:5:1085:14 | S1 | +| main.rs:1100:13:1100:13 | y | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1100:13:1100:13 | y | A | main.rs:1086:5:1087:14 | S2 | +| main.rs:1100:17:1100:36 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1100:17:1100:36 | ...::C2 {...} | A | main.rs:1086:5:1087:14 | S2 | +| main.rs:1100:33:1100:34 | S2 | | main.rs:1086:5:1087:14 | S2 | +| main.rs:1102:18:1102:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1102:18:1102:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1102:18:1102:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1102:18:1102:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1102:26:1102:26 | x | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1102:26:1102:26 | x | A | main.rs:1084:5:1085:14 | S1 | +| main.rs:1102:26:1102:31 | x.m1() | | main.rs:1084:5:1085:14 | S1 | +| main.rs:1103:18:1103:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1103:18:1103:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1103:18:1103:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1103:18:1103:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1103:26:1103:26 | y | | main.rs:1078:5:1082:5 | MyEnum | +| main.rs:1103:26:1103:26 | y | A | main.rs:1086:5:1087:14 | S2 | +| main.rs:1103:26:1103:31 | y.m1() | | main.rs:1086:5:1087:14 | S2 | +| main.rs:1125:15:1125:18 | SelfParam | | main.rs:1123:5:1126:5 | Self [trait MyTrait1] | +| main.rs:1130:15:1130:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1130:15:1130:19 | SelfParam | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | +| main.rs:1133:9:1139:9 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1134:13:1138:13 | if ... {...} else {...} | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1134:16:1134:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1134:16:1134:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1134:20:1134:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1134:22:1136:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1135:17:1135:20 | self | | file://:0:0:0:0 | & | +| main.rs:1135:17:1135:20 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | +| main.rs:1135:17:1135:25 | self.m1() | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1136:20:1138:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1137:17:1137:31 | ...::m1(...) | | main.rs:1128:20:1128:22 | Tr2 | +| main.rs:1137:26:1137:30 | * ... | | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | +| main.rs:1137:27:1137:30 | self | | file://:0:0:0:0 | & | +| main.rs:1137:27:1137:30 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | +| main.rs:1144:15:1144:18 | SelfParam | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | +| main.rs:1147:9:1153:9 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1148:13:1152:13 | if ... {...} else {...} | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1148:16:1148:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1148:16:1148:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1148:20:1148:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1148:22:1150:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1149:17:1149:20 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | +| main.rs:1149:17:1149:25 | self.m2() | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1149:17:1149:25 | self.m2() | A | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1149:17:1149:27 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1150:20:1152:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1151:17:1151:31 | ...::m2(...) | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1151:17:1151:31 | ...::m2(...) | A | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1151:17:1151:33 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | +| main.rs:1151:26:1151:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1151:26:1151:30 | &self | &T | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | +| main.rs:1151:27:1151:30 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | +| main.rs:1158:15:1158:18 | SelfParam | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1158:15:1158:18 | SelfParam | A | main.rs:1156:10:1156:10 | T | +| main.rs:1158:26:1160:9 | { ... } | | main.rs:1156:10:1156:10 | T | +| main.rs:1159:13:1159:16 | self | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1159:13:1159:16 | self | A | main.rs:1156:10:1156:10 | T | +| main.rs:1159:13:1159:18 | self.a | | main.rs:1156:10:1156:10 | T | +| main.rs:1167:15:1167:18 | SelfParam | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1167:15:1167:18 | SelfParam | A | main.rs:1165:10:1165:10 | T | +| main.rs:1167:35:1169:9 | { ... } | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1167:35:1169:9 | { ... } | A | main.rs:1165:10:1165:10 | T | +| main.rs:1168:13:1168:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1168:13:1168:33 | MyThing {...} | A | main.rs:1165:10:1165:10 | T | +| main.rs:1168:26:1168:29 | self | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1168:26:1168:29 | self | A | main.rs:1165:10:1165:10 | T | +| main.rs:1168:26:1168:31 | self.a | | main.rs:1165:10:1165:10 | T | +| main.rs:1176:44:1176:44 | x | | main.rs:1176:26:1176:41 | T2 | +| main.rs:1176:57:1178:5 | { ... } | | main.rs:1176:22:1176:23 | T1 | +| main.rs:1177:9:1177:9 | x | | main.rs:1176:26:1176:41 | T2 | +| main.rs:1177:9:1177:14 | x.m1() | | main.rs:1176:22:1176:23 | T1 | +| main.rs:1180:56:1180:56 | x | | main.rs:1180:39:1180:53 | T | +| main.rs:1182:13:1182:13 | a | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1182:13:1182:13 | a | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1182:17:1182:17 | x | | main.rs:1180:39:1180:53 | T | +| main.rs:1182:17:1182:22 | x.m1() | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1182:17:1182:22 | x.m1() | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1183:18:1183:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1183:18:1183:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1183:18:1183:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1183:18:1183:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1183:26:1183:26 | a | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1183:26:1183:26 | a | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1187:13:1187:13 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1187:13:1187:13 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1187:17:1187:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1187:17:1187:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1187:30:1187:31 | S1 | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1188:13:1188:13 | y | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1188:13:1188:13 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1188:17:1188:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1188:17:1188:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1188:30:1188:31 | S2 | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1190:18:1190:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1190:18:1190:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1190:18:1190:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1190:18:1190:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1190:26:1190:26 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1190:26:1190:26 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1190:26:1190:31 | x.m1() | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1191:18:1191:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1191:18:1191:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1191:18:1191:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1191:18:1191:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1191:26:1191:26 | y | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1191:26:1191:26 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1191:26:1191:31 | y.m1() | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1193:13:1193:13 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1193:13:1193:13 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1193:17:1193:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1193:17:1193:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1193:30:1193:31 | S1 | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1194:13:1194:13 | y | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1194:13:1194:13 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1194:17:1194:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1194:17:1194:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1194:30:1194:31 | S2 | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1196:18:1196:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1196:18:1196:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1196:18:1196:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1196:18:1196:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1196:26:1196:26 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1196:26:1196:26 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1196:26:1196:31 | x.m2() | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1197:18:1197:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1197:18:1197:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1197:18:1197:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1197:18:1197:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1197:26:1197:26 | y | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1197:26:1197:26 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1197:26:1197:31 | y.m2() | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1199:13:1199:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1199:13:1199:13 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1199:17:1199:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1199:17:1199:34 | MyThing2 {...} | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1199:31:1199:32 | S1 | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1200:13:1200:13 | y | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1200:13:1200:13 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1200:17:1200:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1200:17:1200:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1200:31:1200:32 | S2 | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1202:18:1202:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1202:18:1202:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1202:18:1202:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1202:18:1202:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1202:26:1202:26 | x | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1202:26:1202:26 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1202:26:1202:31 | x.m3() | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1203:18:1203:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1203:18:1203:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1203:18:1203:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1203:18:1203:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1203:26:1203:26 | y | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1203:26:1203:26 | y | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1203:26:1203:31 | y.m3() | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1205:13:1205:13 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1205:13:1205:13 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1205:17:1205:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1205:17:1205:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1205:30:1205:31 | S1 | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1206:13:1206:13 | s | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1206:17:1206:32 | call_trait_m1(...) | | main.rs:1118:5:1119:14 | S1 | +| main.rs:1206:31:1206:31 | x | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1206:31:1206:31 | x | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1208:13:1208:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1208:13:1208:13 | x | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1208:17:1208:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1208:17:1208:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1208:31:1208:32 | S2 | | main.rs:1120:5:1121:14 | S2 | +| main.rs:1209:13:1209:13 | s | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1209:13:1209:13 | s | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1209:17:1209:32 | call_trait_m1(...) | | main.rs:1108:5:1111:5 | MyThing | +| main.rs:1209:17:1209:32 | call_trait_m1(...) | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1209:31:1209:31 | x | | main.rs:1113:5:1116:5 | MyThing2 | +| main.rs:1209:31:1209:31 | x | A | main.rs:1120:5:1121:14 | S2 | +| main.rs:1226:22:1226:22 | x | | file://:0:0:0:0 | & | +| main.rs:1226:22:1226:22 | x | &T | main.rs:1226:11:1226:19 | T | +| main.rs:1226:35:1228:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1226:35:1228:5 | { ... } | &T | main.rs:1226:11:1226:19 | T | +| main.rs:1227:9:1227:9 | x | | file://:0:0:0:0 | & | +| main.rs:1227:9:1227:9 | x | &T | main.rs:1226:11:1226:19 | T | +| main.rs:1231:17:1231:20 | SelfParam | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1231:29:1233:9 | { ... } | | main.rs:1219:5:1220:14 | S2 | +| main.rs:1232:13:1232:14 | S2 | | main.rs:1219:5:1220:14 | S2 | +| main.rs:1236:21:1236:21 | x | | main.rs:1236:13:1236:14 | T1 | +| main.rs:1239:5:1241:5 | { ... } | | main.rs:1236:17:1236:18 | T2 | +| main.rs:1240:9:1240:9 | x | | main.rs:1236:13:1236:14 | T1 | +| main.rs:1240:9:1240:16 | x.into() | | main.rs:1236:17:1236:18 | T2 | +| main.rs:1244:13:1244:13 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1244:17:1244:18 | S1 | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1245:18:1245:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1245:18:1245:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1245:18:1245:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1245:18:1245:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1245:26:1245:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1245:26:1245:31 | id(...) | &T | main.rs:1216:5:1217:14 | S1 | +| main.rs:1245:29:1245:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1245:29:1245:30 | &x | &T | main.rs:1216:5:1217:14 | S1 | +| main.rs:1245:30:1245:30 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1247:13:1247:13 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1247:17:1247:18 | S1 | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1248:18:1248:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1248:18:1248:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1248:18:1248:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1248:18:1248:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1248:26:1248:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1248:26:1248:37 | id::<...>(...) | &T | main.rs:1216:5:1217:14 | S1 | +| main.rs:1248:35:1248:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1248:35:1248:36 | &x | &T | main.rs:1216:5:1217:14 | S1 | +| main.rs:1248:36:1248:36 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1250:13:1250:13 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1250:13:1250:13 | x | | main.rs:1222:5:1222:25 | dyn Trait | +| main.rs:1250:17:1250:18 | S1 | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1250:17:1250:18 | S1 | | main.rs:1222:5:1222:25 | dyn Trait | +| main.rs:1252:18:1252:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1252:18:1252:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1252:18:1252:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1252:18:1252:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1252:26:1252:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1252:26:1252:44 | id::<...>(...) | &T | main.rs:1222:5:1222:25 | dyn Trait | +| main.rs:1252:42:1252:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1252:42:1252:43 | &x | &T | main.rs:1216:5:1217:14 | S1 | +| main.rs:1252:42:1252:43 | &x | &T | main.rs:1222:5:1222:25 | dyn Trait | +| main.rs:1252:43:1252:43 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1252:43:1252:43 | x | | main.rs:1222:5:1222:25 | dyn Trait | +| main.rs:1254:13:1254:13 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1254:17:1254:18 | S1 | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1255:9:1255:25 | into::<...>(...) | | main.rs:1219:5:1220:14 | S2 | +| main.rs:1255:24:1255:24 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1257:13:1257:13 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1257:17:1257:18 | S1 | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1258:13:1258:13 | y | | main.rs:1219:5:1220:14 | S2 | +| main.rs:1258:21:1258:27 | into(...) | | main.rs:1219:5:1220:14 | S2 | +| main.rs:1258:26:1258:26 | x | | main.rs:1216:5:1217:14 | S1 | +| main.rs:1272:22:1272:25 | SelfParam | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1272:22:1272:25 | SelfParam | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1272:22:1272:25 | SelfParam | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1272:35:1279:9 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1273:13:1278:13 | match self { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1273:19:1273:22 | self | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1273:19:1273:22 | self | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1273:19:1273:22 | self | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:17:1274:38 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1274:17:1274:38 | ...::PairNone(...) | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1274:17:1274:38 | ...::PairNone(...) | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:43:1274:82 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1274:50:1274:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1274:50:1274:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1274:50:1274:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1274:50:1274:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:50:1274:81 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:17:1275:38 | ...::PairFst(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1275:17:1275:38 | ...::PairFst(...) | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1275:17:1275:38 | ...::PairFst(...) | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:37:1275:37 | _ | | main.rs:1271:10:1271:12 | Fst | +| main.rs:1275:43:1275:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:50:1275:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1275:50:1275:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1275:50:1275:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1275:50:1275:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1275:50:1275:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1275:50:1275:80 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:50:1275:80 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1276:17:1276:40 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1276:37:1276:39 | snd | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1276:45:1276:47 | snd | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1277:17:1277:44 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Fst | main.rs:1271:10:1271:12 | Fst | +| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1277:38:1277:38 | _ | | main.rs:1271:10:1271:12 | Fst | +| main.rs:1277:41:1277:43 | snd | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1277:49:1277:51 | snd | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1303:10:1303:10 | t | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1303:10:1303:10 | t | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1303:10:1303:10 | t | Snd | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1303:10:1303:10 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1303:10:1303:10 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1304:13:1304:13 | x | | main.rs:1288:5:1289:14 | S3 | +| main.rs:1304:17:1304:17 | t | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1304:17:1304:17 | t | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1304:17:1304:17 | t | Snd | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1304:17:1304:17 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1304:17:1304:17 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1304:17:1304:29 | t.unwrapSnd() | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1304:17:1304:29 | t.unwrapSnd() | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1304:17:1304:29 | t.unwrapSnd() | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1304:17:1304:41 | ... .unwrapSnd() | | main.rs:1288:5:1289:14 | S3 | +| main.rs:1305:18:1305:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1305:18:1305:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1305:18:1305:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1305:18:1305:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1305:26:1305:26 | x | | main.rs:1288:5:1289:14 | S3 | +| main.rs:1320:22:1320:25 | SelfParam | | main.rs:1318:5:1321:5 | Self [trait TraitWithAssocType] | +| main.rs:1328:22:1328:25 | SelfParam | | main.rs:1316:5:1316:28 | GenS | +| main.rs:1328:22:1328:25 | SelfParam | GenT | main.rs:1323:10:1323:15 | Output | +| main.rs:1328:44:1330:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1328:44:1330:9 | { ... } | E | main.rs:1323:10:1323:15 | Output | +| main.rs:1328:44:1330:9 | { ... } | T | main.rs:1323:10:1323:15 | Output | +| main.rs:1329:13:1329:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1329:13:1329:22 | Ok(...) | E | main.rs:1323:10:1323:15 | Output | +| main.rs:1329:13:1329:22 | Ok(...) | T | main.rs:1323:10:1323:15 | Output | +| main.rs:1329:16:1329:19 | self | | main.rs:1316:5:1316:28 | GenS | +| main.rs:1329:16:1329:19 | self | GenT | main.rs:1323:10:1323:15 | Output | +| main.rs:1329:16:1329:21 | self.0 | | main.rs:1323:10:1323:15 | Output | +| main.rs:1335:13:1335:14 | p1 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1335:13:1335:14 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1335:13:1335:14 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1335:26:1335:53 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1335:47:1335:48 | S1 | | main.rs:1282:5:1283:14 | S1 | +| main.rs:1335:51:1335:52 | S2 | | main.rs:1285:5:1286:14 | S2 | +| main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1336:18:1336:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1336:18:1336:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1336:26:1336:27 | p1 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1336:26:1336:27 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1336:26:1336:27 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1339:13:1339:14 | p2 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1339:13:1339:14 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1339:13:1339:14 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1339:26:1339:47 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1339:26:1339:47 | ...::PairNone(...) | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1339:26:1339:47 | ...::PairNone(...) | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1340:18:1340:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1340:18:1340:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1340:18:1340:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1340:18:1340:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1340:26:1340:27 | p2 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1340:26:1340:27 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | +| main.rs:1340:26:1340:27 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | +| main.rs:1343:13:1343:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1343:13:1343:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1343:13:1343:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1343:34:1343:56 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1343:54:1343:55 | S3 | | main.rs:1288:5:1289:14 | S3 | +| main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1344:18:1344:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1344:18:1344:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1344:26:1344:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1344:26:1344:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1344:26:1344:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1347:13:1347:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1347:13:1347:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1347:13:1347:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1347:35:1347:56 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1347:35:1347:56 | ...::PairNone(...) | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1347:35:1347:56 | ...::PairNone(...) | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1348:18:1348:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1348:18:1348:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1348:18:1348:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1348:18:1348:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1348:26:1348:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1348:26:1348:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1348:26:1348:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1350:11:1350:54 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1350:31:1350:53 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | +| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | +| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1350:51:1350:52 | S3 | | main.rs:1288:5:1289:14 | S3 | +| main.rs:1352:13:1352:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1352:13:1352:13 | x | E | main.rs:1282:5:1283:14 | S1 | +| main.rs:1352:13:1352:13 | x | T | main.rs:1308:5:1308:34 | S4 | +| main.rs:1352:13:1352:13 | x | T.T41 | main.rs:1285:5:1286:14 | S2 | +| main.rs:1352:13:1352:13 | x | T.T42 | main.rs:1310:5:1310:22 | S5 | +| main.rs:1352:13:1352:13 | x | T.T42.T5 | main.rs:1285:5:1286:14 | S2 | +| main.rs:1354:13:1354:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1354:13:1354:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1354:13:1354:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1354:17:1354:26 | GenS(...) | | main.rs:1316:5:1316:28 | GenS | +| main.rs:1354:17:1354:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1354:17:1354:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1354:17:1354:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1354:17:1354:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1354:22:1354:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1367:16:1367:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1367:16:1367:24 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | +| main.rs:1367:27:1367:31 | value | | main.rs:1365:19:1365:19 | S | +| main.rs:1369:21:1369:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1369:21:1369:29 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | +| main.rs:1369:32:1369:36 | value | | main.rs:1365:19:1365:19 | S | +| main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | +| main.rs:1370:13:1370:16 | self | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | +| main.rs:1370:22:1370:26 | value | | main.rs:1365:19:1365:19 | S | +| main.rs:1376:16:1376:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1376:16:1376:24 | SelfParam | &T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1376:16:1376:24 | SelfParam | &T.T | main.rs:1374:10:1374:10 | T | +| main.rs:1376:27:1376:31 | value | | main.rs:1374:10:1374:10 | T | +| main.rs:1380:26:1382:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1380:26:1382:9 | { ... } | T | main.rs:1379:10:1379:10 | T | +| main.rs:1381:13:1381:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1381:13:1381:30 | ...::MyNone(...) | T | main.rs:1379:10:1379:10 | T | +| main.rs:1386:20:1386:23 | SelfParam | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1386:20:1386:23 | SelfParam | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1386:20:1386:23 | SelfParam | T.T | main.rs:1385:10:1385:10 | T | +| main.rs:1386:41:1391:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1386:41:1391:9 | { ... } | T | main.rs:1385:10:1385:10 | T | +| main.rs:1387:13:1390:13 | match self { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1387:13:1390:13 | match self { ... } | T | main.rs:1385:10:1385:10 | T | +| main.rs:1387:19:1387:22 | self | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1387:19:1387:22 | self | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1387:19:1387:22 | self | T.T | main.rs:1385:10:1385:10 | T | +| main.rs:1388:17:1388:34 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1388:17:1388:34 | ...::MyNone(...) | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1388:17:1388:34 | ...::MyNone(...) | T.T | main.rs:1385:10:1385:10 | T | +| main.rs:1388:39:1388:56 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1388:39:1388:56 | ...::MyNone(...) | T | main.rs:1385:10:1385:10 | T | +| main.rs:1389:17:1389:35 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1389:17:1389:35 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1389:17:1389:35 | ...::MySome(...) | T.T | main.rs:1385:10:1385:10 | T | +| main.rs:1389:34:1389:34 | x | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1389:34:1389:34 | x | T | main.rs:1385:10:1385:10 | T | +| main.rs:1389:40:1389:40 | x | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1389:40:1389:40 | x | T | main.rs:1385:10:1385:10 | T | +| main.rs:1398:13:1398:14 | x1 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1398:13:1398:14 | x1 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1398:18:1398:37 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1398:18:1398:37 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1399:18:1399:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1399:18:1399:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1399:18:1399:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1399:18:1399:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1399:26:1399:27 | x1 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1399:26:1399:27 | x1 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1401:17:1401:18 | x2 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1401:17:1401:18 | x2 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1401:22:1401:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1401:22:1401:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1402:9:1402:10 | x2 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1402:9:1402:10 | x2 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1402:16:1402:16 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1403:18:1403:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1403:18:1403:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1403:18:1403:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1403:18:1403:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1403:26:1403:27 | x2 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1403:26:1403:27 | x2 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1406:17:1406:18 | x3 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1406:22:1406:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1407:9:1407:10 | x3 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1407:21:1407:21 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1408:18:1408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1408:18:1408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1408:18:1408:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1408:18:1408:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1408:26:1408:27 | x3 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1410:17:1410:18 | x4 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1410:17:1410:18 | x4 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1410:22:1410:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1410:22:1410:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1411:23:1411:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1411:23:1411:29 | &mut x4 | &T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1411:23:1411:29 | &mut x4 | &T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1411:28:1411:29 | x4 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1411:28:1411:29 | x4 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1411:32:1411:32 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1412:18:1412:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1412:18:1412:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1412:18:1412:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1412:18:1412:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1412:26:1412:27 | x4 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1412:26:1412:27 | x4 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1414:13:1414:14 | x5 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1414:13:1414:14 | x5 | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1414:13:1414:14 | x5 | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1414:18:1414:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1414:18:1414:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1414:18:1414:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1414:35:1414:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1414:35:1414:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1415:18:1415:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1415:18:1415:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1415:26:1415:27 | x5 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1415:26:1415:27 | x5 | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1415:26:1415:27 | x5 | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1415:26:1415:37 | x5.flatten() | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1415:26:1415:37 | x5.flatten() | T | main.rs:1394:5:1395:13 | S | +| main.rs:1417:13:1417:14 | x6 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1417:13:1417:14 | x6 | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1417:13:1417:14 | x6 | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1417:18:1417:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1417:18:1417:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1417:18:1417:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1417:35:1417:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1417:35:1417:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1418:18:1418:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1418:18:1418:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1418:18:1418:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1418:18:1418:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1418:26:1418:61 | ...::flatten(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1418:26:1418:61 | ...::flatten(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1418:59:1418:60 | x6 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1418:59:1418:60 | x6 | T | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1418:59:1418:60 | x6 | T.T | main.rs:1394:5:1395:13 | S | +| main.rs:1421:13:1421:19 | from_if | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1421:13:1421:19 | from_if | T | main.rs:1394:5:1395:13 | S | +| main.rs:1421:23:1425:9 | if ... {...} else {...} | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1421:23:1425:9 | if ... {...} else {...} | T | main.rs:1394:5:1395:13 | S | +| main.rs:1421:26:1421:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1421:26:1421:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1421:30:1421:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1421:32:1423:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1421:32:1423:9 | { ... } | T | main.rs:1394:5:1395:13 | S | +| main.rs:1422:13:1422:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1422:13:1422:30 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1423:16:1425:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1423:16:1425:9 | { ... } | T | main.rs:1394:5:1395:13 | S | +| main.rs:1424:13:1424:31 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1424:13:1424:31 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1424:30:1424:30 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1426:26:1426:32 | from_if | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1426:26:1426:32 | from_if | T | main.rs:1394:5:1395:13 | S | +| main.rs:1429:13:1429:22 | from_match | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1429:13:1429:22 | from_match | T | main.rs:1394:5:1395:13 | S | +| main.rs:1429:26:1432:9 | match ... { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1429:26:1432:9 | match ... { ... } | T | main.rs:1394:5:1395:13 | S | +| main.rs:1429:32:1429:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1429:32:1429:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1429:36:1429:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1430:13:1430:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1430:21:1430:38 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1430:21:1430:38 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1431:13:1431:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1431:22:1431:40 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1431:22:1431:40 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1431:39:1431:39 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1433:18:1433:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1433:18:1433:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1433:18:1433:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1433:18:1433:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1433:26:1433:35 | from_match | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1433:26:1433:35 | from_match | T | main.rs:1394:5:1395:13 | S | +| main.rs:1436:13:1436:21 | from_loop | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1436:13:1436:21 | from_loop | T | main.rs:1394:5:1395:13 | S | +| main.rs:1436:25:1441:9 | loop { ... } | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1436:25:1441:9 | loop { ... } | T | main.rs:1394:5:1395:13 | S | +| main.rs:1437:16:1437:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:16:1437:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1437:20:1437:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1438:23:1438:40 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1438:23:1438:40 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1440:19:1440:37 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1440:19:1440:37 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1440:36:1440:36 | S | | main.rs:1394:5:1395:13 | S | +| main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1442:18:1442:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1442:18:1442:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1442:26:1442:34 | from_loop | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1442:26:1442:34 | from_loop | T | main.rs:1394:5:1395:13 | S | +| main.rs:1460:15:1460:18 | SelfParam | | main.rs:1448:5:1449:19 | S | +| main.rs:1460:15:1460:18 | SelfParam | T | main.rs:1459:10:1459:10 | T | +| main.rs:1460:26:1462:9 | { ... } | | main.rs:1459:10:1459:10 | T | +| main.rs:1461:13:1461:16 | self | | main.rs:1448:5:1449:19 | S | +| main.rs:1461:13:1461:16 | self | T | main.rs:1459:10:1459:10 | T | +| main.rs:1461:13:1461:18 | self.0 | | main.rs:1459:10:1459:10 | T | +| main.rs:1464:15:1464:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1464:15:1464:19 | SelfParam | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1464:15:1464:19 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | +| main.rs:1464:28:1466:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1464:28:1466:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | +| main.rs:1465:13:1465:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1465:13:1465:19 | &... | &T | main.rs:1459:10:1459:10 | T | +| main.rs:1465:14:1465:17 | self | | file://:0:0:0:0 | & | +| main.rs:1465:14:1465:17 | self | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1465:14:1465:17 | self | &T.T | main.rs:1459:10:1459:10 | T | +| main.rs:1465:14:1465:19 | self.0 | | main.rs:1459:10:1459:10 | T | +| main.rs:1468:15:1468:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1468:15:1468:25 | SelfParam | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1468:15:1468:25 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | +| main.rs:1468:34:1470:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1468:34:1470:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | +| main.rs:1469:13:1469:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1469:13:1469:19 | &... | &T | main.rs:1459:10:1459:10 | T | +| main.rs:1469:14:1469:17 | self | | file://:0:0:0:0 | & | +| main.rs:1469:14:1469:17 | self | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1469:14:1469:17 | self | &T.T | main.rs:1459:10:1459:10 | T | +| main.rs:1469:14:1469:19 | self.0 | | main.rs:1459:10:1459:10 | T | +| main.rs:1474:29:1474:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1474:29:1474:33 | SelfParam | &T | main.rs:1473:5:1476:5 | Self [trait ATrait] | +| main.rs:1475:33:1475:36 | SelfParam | | main.rs:1473:5:1476:5 | Self [trait ATrait] | +| main.rs:1481:29:1481:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1481:29:1481:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1481:29:1481:33 | SelfParam | &T.&T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1481:43:1483:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1482:13:1482:22 | (...) | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1482:13:1482:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1482:14:1482:21 | * ... | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1482:15:1482:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1482:15:1482:21 | (...) | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1482:16:1482:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1482:16:1482:20 | * ... | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1482:17:1482:20 | self | | file://:0:0:0:0 | & | +| main.rs:1482:17:1482:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1482:17:1482:20 | self | &T.&T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1486:33:1486:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1486:33:1486:36 | SelfParam | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1486:46:1488:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1487:13:1487:19 | (...) | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1487:13:1487:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1487:14:1487:18 | * ... | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1487:15:1487:18 | self | | file://:0:0:0:0 | & | +| main.rs:1487:15:1487:18 | self | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1492:13:1492:14 | x1 | | main.rs:1448:5:1449:19 | S | +| main.rs:1492:13:1492:14 | x1 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1492:18:1492:22 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1492:18:1492:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1492:20:1492:21 | S2 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1493:18:1493:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1493:18:1493:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1493:18:1493:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1493:18:1493:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1493:26:1493:27 | x1 | | main.rs:1448:5:1449:19 | S | +| main.rs:1493:26:1493:27 | x1 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1493:26:1493:32 | x1.m1() | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1495:13:1495:14 | x2 | | main.rs:1448:5:1449:19 | S | +| main.rs:1495:13:1495:14 | x2 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1495:18:1495:22 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1495:18:1495:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1495:20:1495:21 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1497:18:1497:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1497:18:1497:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1497:18:1497:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:18:1497:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:26:1497:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1500:13:1500:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1500:13:1500:20 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1500:24:1500:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1500:24:1500:39 | &... | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1500:25:1500:39 | MyInt {...} | | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1500:36:1500:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1500:36:1500:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1501:13:1501:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1501:17:1501:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1501:17:1501:24 | my_thing | &T | main.rs:1416:5:1419:5 | MyInt | -| main.rs:1501:17:1501:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1497:18:1497:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1497:18:1497:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1497:26:1497:27 | x2 | | main.rs:1448:5:1449:19 | S | +| main.rs:1497:26:1497:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1497:26:1497:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1497:26:1497:32 | x2.m2() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1498:18:1498:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1498:18:1498:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1498:26:1498:27 | x2 | | main.rs:1448:5:1449:19 | S | +| main.rs:1498:26:1498:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1498:26:1498:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1498:26:1498:32 | x2.m3() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1500:13:1500:14 | x3 | | main.rs:1448:5:1449:19 | S | +| main.rs:1500:13:1500:14 | x3 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1500:18:1500:22 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1500:18:1500:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1500:20:1500:21 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1502:18:1502:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1502:18:1502:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1502:18:1502:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:18:1502:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:26:1502:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1509:16:1509:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1509:16:1509:20 | SelfParam | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | -| main.rs:1512:16:1512:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1512:16:1512:20 | SelfParam | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | -| main.rs:1512:32:1514:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1512:32:1514:9 | { ... } | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | -| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | -| main.rs:1513:13:1513:16 | self | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | -| main.rs:1513:13:1513:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1513:13:1513:22 | self.foo() | &T | main.rs:1507:5:1515:5 | Self [trait MyTrait] | -| main.rs:1521:16:1521:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1521:16:1521:20 | SelfParam | &T | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1521:36:1523:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1521:36:1523:9 | { ... } | &T | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1522:13:1522:16 | self | | file://:0:0:0:0 | & | -| main.rs:1522:13:1522:16 | self | &T | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1527:13:1527:13 | x | | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1527:17:1527:24 | MyStruct | | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1528:9:1528:9 | x | | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1528:9:1528:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1528:9:1528:15 | x.bar() | &T | main.rs:1517:5:1517:20 | MyStruct | -| main.rs:1538:16:1538:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1538:16:1538:20 | SelfParam | &T | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1538:16:1538:20 | SelfParam | &T.T | main.rs:1537:10:1537:10 | T | -| main.rs:1538:32:1540:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1538:32:1540:9 | { ... } | &T | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1538:32:1540:9 | { ... } | &T.T | main.rs:1537:10:1537:10 | T | -| main.rs:1539:13:1539:16 | self | | file://:0:0:0:0 | & | -| main.rs:1539:13:1539:16 | self | &T | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1539:13:1539:16 | self | &T.T | main.rs:1537:10:1537:10 | T | -| main.rs:1544:13:1544:13 | x | | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1544:13:1544:13 | x | T | main.rs:1533:5:1533:13 | S | -| main.rs:1544:17:1544:27 | MyStruct(...) | | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1544:17:1544:27 | MyStruct(...) | T | main.rs:1533:5:1533:13 | S | -| main.rs:1544:26:1544:26 | S | | main.rs:1533:5:1533:13 | S | -| main.rs:1545:9:1545:9 | x | | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1545:9:1545:9 | x | T | main.rs:1533:5:1533:13 | S | -| main.rs:1545:9:1545:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1545:9:1545:15 | x.foo() | &T | main.rs:1535:5:1535:26 | MyStruct | -| main.rs:1545:9:1545:15 | x.foo() | &T.T | main.rs:1533:5:1533:13 | S | -| main.rs:1556:17:1556:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1556:17:1556:25 | SelfParam | &T | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1557:13:1557:16 | self | | file://:0:0:0:0 | & | -| main.rs:1557:13:1557:16 | self | &T | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1557:13:1557:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1557:13:1557:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1557:25:1557:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1557:26:1557:29 | self | | file://:0:0:0:0 | & | -| main.rs:1557:26:1557:29 | self | &T | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1557:26:1557:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1564:15:1564:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1564:15:1564:19 | SelfParam | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1564:31:1566:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1564:31:1566:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1565:13:1565:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1565:13:1565:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1565:13:1565:19 | &... | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1565:13:1565:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1565:13:1565:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1565:13:1565:19 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1565:14:1565:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1565:14:1565:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1565:14:1565:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1565:14:1565:19 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1565:15:1565:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1565:15:1565:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1565:15:1565:19 | &self | &T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1565:16:1565:19 | self | | file://:0:0:0:0 | & | -| main.rs:1565:16:1565:19 | self | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1568:15:1568:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1568:15:1568:25 | SelfParam | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1568:37:1570:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1568:37:1570:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1569:13:1569:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1569:13:1569:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1569:13:1569:19 | &... | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1569:13:1569:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1569:13:1569:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1569:13:1569:19 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1569:14:1569:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1569:14:1569:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1569:14:1569:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1569:14:1569:19 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1569:15:1569:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1569:15:1569:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1569:15:1569:19 | &self | &T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1569:16:1569:19 | self | | file://:0:0:0:0 | & | -| main.rs:1569:16:1569:19 | self | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1572:15:1572:15 | x | | file://:0:0:0:0 | & | -| main.rs:1572:15:1572:15 | x | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1572:34:1574:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1572:34:1574:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1573:13:1573:13 | x | | file://:0:0:0:0 | & | -| main.rs:1573:13:1573:13 | x | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1576:15:1576:15 | x | | file://:0:0:0:0 | & | -| main.rs:1576:15:1576:15 | x | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1576:34:1578:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1576:34:1578:9 | { ... } | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1577:13:1577:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | &... | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1577:13:1577:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | &... | &T.&T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1577:14:1577:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1577:14:1577:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1577:14:1577:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1577:14:1577:16 | &... | &T.&T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1577:15:1577:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1577:15:1577:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1577:15:1577:16 | &x | &T.&T | main.rs:1561:5:1561:13 | S | -| main.rs:1577:16:1577:16 | x | | file://:0:0:0:0 | & | -| main.rs:1577:16:1577:16 | x | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1582:13:1582:13 | x | | main.rs:1561:5:1561:13 | S | -| main.rs:1582:17:1582:20 | S {...} | | main.rs:1561:5:1561:13 | S | -| main.rs:1583:9:1583:9 | x | | main.rs:1561:5:1561:13 | S | -| main.rs:1583:9:1583:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1583:9:1583:14 | x.f1() | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1584:9:1584:9 | x | | main.rs:1561:5:1561:13 | S | -| main.rs:1584:9:1584:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1584:9:1584:14 | x.f2() | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1585:9:1585:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1585:9:1585:17 | ...::f3(...) | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1585:15:1585:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1585:15:1585:16 | &x | &T | main.rs:1561:5:1561:13 | S | -| main.rs:1585:16:1585:16 | x | | main.rs:1561:5:1561:13 | S | -| main.rs:1587:13:1587:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1587:17:1587:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1587:18:1587:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1587:18:1587:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1587:19:1587:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1587:19:1587:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1587:19:1587:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1587:20:1587:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1587:20:1587:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1587:21:1587:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1591:17:1591:20 | flag | | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1591:24:1591:41 | ...::default(...) | | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1592:22:1592:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1592:22:1592:30 | &mut flag | &T | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1592:27:1592:30 | flag | | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1593:18:1593:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1593:18:1593:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1593:18:1593:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1593:18:1593:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1593:26:1593:29 | flag | | main.rs:1550:5:1553:5 | MyFlag | -| main.rs:1608:43:1611:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1608:43:1611:5 | { ... } | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1608:43:1611:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1609:13:1609:13 | x | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1609:17:1609:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1609:17:1609:30 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1609:17:1609:31 | TryExpr | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1609:28:1609:29 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1610:9:1610:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1610:9:1610:22 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1610:9:1610:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1610:20:1610:21 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1615:46:1619:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1615:46:1619:5 | { ... } | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1615:46:1619:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1616:13:1616:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1616:13:1616:13 | x | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1616:17:1616:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1616:17:1616:30 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1616:28:1616:29 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1617:13:1617:13 | y | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1617:17:1617:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1617:17:1617:17 | x | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1617:17:1617:18 | TryExpr | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1618:9:1618:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1618:9:1618:22 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1618:9:1618:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1618:20:1618:21 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1623:40:1628:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1623:40:1628:5 | { ... } | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1623:40:1628:5 | { ... } | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1624:13:1624:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1624:13:1624:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1624:13:1624:13 | x | T.T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1624:17:1624:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1624:17:1624:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1624:17:1624:42 | ...::Ok(...) | T.T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1624:28:1624:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1624:28:1624:41 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1624:39:1624:40 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1626:17:1626:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1626:17:1626:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1626:17:1626:17 | x | T.T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1626:17:1626:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1626:17:1626:18 | TryExpr | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1626:17:1626:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1626:24:1626:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1626:24:1626:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1627:9:1627:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1627:9:1627:22 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1627:9:1627:22 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1627:20:1627:21 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1632:30:1632:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1632:30:1632:34 | input | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1632:30:1632:34 | input | T | main.rs:1632:20:1632:27 | T | -| main.rs:1632:69:1639:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1632:69:1639:5 | { ... } | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1632:69:1639:5 | { ... } | T | main.rs:1632:20:1632:27 | T | -| main.rs:1633:13:1633:17 | value | | main.rs:1632:20:1632:27 | T | -| main.rs:1633:21:1633:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1633:21:1633:25 | input | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1633:21:1633:25 | input | T | main.rs:1632:20:1632:27 | T | -| main.rs:1633:21:1633:26 | TryExpr | | main.rs:1632:20:1632:27 | T | -| main.rs:1634:22:1634:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1634:22:1634:38 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1634:22:1634:38 | ...::Ok(...) | T | main.rs:1632:20:1632:27 | T | -| main.rs:1634:22:1637:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1634:22:1637:10 | ... .and_then(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1634:33:1634:37 | value | | main.rs:1632:20:1632:27 | T | -| main.rs:1634:49:1637:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1634:49:1637:9 | \|...\| ... | dyn(Output).E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1634:53:1637:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1634:53:1637:9 | { ... } | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1635:22:1635:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1635:22:1635:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1635:22:1635:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1635:22:1635:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1636:13:1636:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1636:13:1636:34 | ...::Ok::<...>(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1638:9:1638:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1638:9:1638:23 | ...::Err(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1638:9:1638:23 | ...::Err(...) | T | main.rs:1632:20:1632:27 | T | -| main.rs:1638:21:1638:22 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1643:16:1643:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1643:16:1643:33 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1643:16:1643:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1643:27:1643:32 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1643:37:1643:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1643:37:1643:52 | try_same_error(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1643:37:1643:52 | try_same_error(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1644:22:1644:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1644:22:1644:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1644:22:1644:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1644:22:1644:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1644:30:1644:35 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1647:16:1647:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1647:16:1647:33 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1647:16:1647:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1647:27:1647:32 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1647:37:1647:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1647:37:1647:55 | try_convert_error(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1647:37:1647:55 | try_convert_error(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1648:22:1648:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1648:22:1648:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1648:22:1648:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1648:22:1648:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1648:30:1648:35 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1651:16:1651:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1651:16:1651:33 | ...::Ok(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1651:16:1651:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1651:27:1651:32 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1651:37:1651:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1651:37:1651:49 | try_chained(...) | E | main.rs:1603:5:1604:14 | S2 | -| main.rs:1651:37:1651:49 | try_chained(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1652:22:1652:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1652:22:1652:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1652:22:1652:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1652:22:1652:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1652:30:1652:35 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:16:1655:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1655:16:1655:33 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:16:1655:33 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:27:1655:32 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:37:1655:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1655:37:1655:63 | try_complex(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:37:1655:63 | try_complex(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:49:1655:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1655:49:1655:62 | ...::Ok(...) | E | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:49:1655:62 | ...::Ok(...) | T | main.rs:1600:5:1601:14 | S1 | -| main.rs:1655:60:1655:61 | S1 | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1656:22:1656:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1656:22:1656:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1656:22:1656:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1656:22:1656:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1656:30:1656:35 | result | | main.rs:1600:5:1601:14 | S1 | -| main.rs:1663:13:1663:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1663:22:1663:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1664:13:1664:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1664:17:1664:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:13:1665:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:17:1665:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:17:1665:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1665:21:1665:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1666:13:1666:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1666:17:1666:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1666:17:1666:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1667:13:1667:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1667:17:1667:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1668:13:1668:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1668:13:1668:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1668:21:1668:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1668:21:1668:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1669:13:1669:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1669:17:1669:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1670:13:1670:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1670:17:1670:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1671:13:1671:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1671:17:1671:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1678:13:1678:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1678:17:1678:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1678:17:1678:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1678:25:1678:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:13:1679:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:17:1679:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:17:1679:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1679:25:1679:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1681:17:1681:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1682:13:1682:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1682:20:1682:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1682:20:1682:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1682:26:1682:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1683:12:1683:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1684:17:1684:17 | z | | file://:0:0:0:0 | () | -| main.rs:1684:21:1684:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1684:22:1684:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1684:22:1684:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1684:26:1684:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1686:13:1686:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1686:13:1686:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1686:17:1686:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1688:9:1688:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1702:30:1704:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1703:13:1703:31 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1703:23:1703:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:23:1703:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1703:29:1703:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:29:1703:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:16:1710:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1710:22:1710:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1710:41:1715:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1711:13:1714:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1712:20:1712:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1712:20:1712:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1712:20:1712:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1712:29:1712:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1712:29:1712:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:20:1713:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1713:20:1713:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:20:1713:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:29:1713:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1713:29:1713:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1720:23:1720:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1720:23:1720:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1720:34:1720:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1721:13:1721:16 | self | | file://:0:0:0:0 | & | -| main.rs:1721:13:1721:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1721:13:1721:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1721:13:1721:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1721:23:1721:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1721:23:1721:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:13:1722:16 | self | | file://:0:0:0:0 | & | -| main.rs:1722:13:1722:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1722:13:1722:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:13:1722:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1722:23:1722:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1722:23:1722:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1728:16:1728:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1728:22:1728:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1728:41:1733:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1729:13:1732:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1730:20:1730:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1730:20:1730:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1730:20:1730:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1730:29:1730:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1730:29:1730:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1731:20:1731:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1731:20:1731:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1731:20:1731:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1731:29:1731:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1731:29:1731:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1738:23:1738:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1738:23:1738:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1738:34:1738:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1739:13:1739:16 | self | | file://:0:0:0:0 | & | -| main.rs:1739:13:1739:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1739:13:1739:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:13:1739:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1739:23:1739:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1739:23:1739:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:13:1740:16 | self | | file://:0:0:0:0 | & | -| main.rs:1740:13:1740:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1740:13:1740:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:13:1740:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1740:23:1740:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1740:23:1740:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:16:1746:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1746:22:1746:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1746:41:1751:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1747:13:1750:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1748:20:1748:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1748:20:1748:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:20:1748:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:29:1748:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1748:29:1748:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:20:1749:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1749:20:1749:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:20:1749:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:29:1749:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1749:29:1749:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:23:1755:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1755:23:1755:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1755:34:1755:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1756:13:1756:16 | self | | file://:0:0:0:0 | & | -| main.rs:1756:13:1756:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1756:13:1756:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1756:13:1756:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1756:23:1756:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1756:23:1756:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:13:1757:16 | self | | file://:0:0:0:0 | & | -| main.rs:1757:13:1757:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1757:13:1757:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:13:1757:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1757:23:1757:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1757:23:1757:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:16:1763:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1763:22:1763:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1763:41:1768:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1764:13:1767:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1765:20:1765:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1765:20:1765:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1765:20:1765:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1765:29:1765:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1765:29:1765:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:20:1766:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1766:20:1766:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:20:1766:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:29:1766:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1766:29:1766:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:23:1772:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1772:23:1772:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1772:34:1772:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1773:13:1773:16 | self | | file://:0:0:0:0 | & | -| main.rs:1773:13:1773:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1773:13:1773:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:13:1773:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1773:23:1773:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1773:23:1773:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:13:1774:16 | self | | file://:0:0:0:0 | & | -| main.rs:1774:13:1774:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1774:13:1774:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:13:1774:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1774:23:1774:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1774:23:1774:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:16:1780:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1780:22:1780:24 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1780:41:1785:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1781:13:1784:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1782:20:1782:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1782:20:1782:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1782:20:1782:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1782:29:1782:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1782:29:1782:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:20:1783:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1783:20:1783:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:20:1783:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:29:1783:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1783:29:1783:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:23:1789:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1789:23:1789:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1789:34:1789:36 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1790:13:1790:16 | self | | file://:0:0:0:0 | & | -| main.rs:1790:13:1790:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1790:13:1790:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:13:1790:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1790:23:1790:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1790:23:1790:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1791:13:1791:16 | self | | file://:0:0:0:0 | & | -| main.rs:1791:13:1791:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1791:13:1791:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1791:13:1791:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1791:23:1791:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1791:23:1791:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:19:1797:22 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1797:25:1797:27 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1797:44:1802:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1798:13:1801:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1799:20:1799:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1799:20:1799:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1799:20:1799:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1799:29:1799:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1799:29:1799:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1800:20:1800:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1800:20:1800:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1800:20:1800:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1800:29:1800:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1800:29:1800:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1806:26:1806:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1806:26:1806:34 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1806:37:1806:39 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1807:13:1807:16 | self | | file://:0:0:0:0 | & | -| main.rs:1807:13:1807:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1807:13:1807:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:13:1807:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1807:23:1807:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1807:23:1807:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1808:13:1808:16 | self | | file://:0:0:0:0 | & | -| main.rs:1808:13:1808:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1808:13:1808:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1808:13:1808:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1808:23:1808:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1808:23:1808:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1814:18:1814:21 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1814:24:1814:26 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1814:43:1819:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1815:13:1818:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1816:20:1816:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1816:20:1816:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1816:20:1816:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1816:29:1816:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1816:29:1816:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1817:20:1817:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1817:20:1817:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1817:20:1817:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1817:29:1817:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1817:29:1817:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1823:25:1823:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1823:25:1823:33 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1823:36:1823:38 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1824:13:1824:16 | self | | file://:0:0:0:0 | & | -| main.rs:1824:13:1824:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1824:13:1824:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:13:1824:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1824:23:1824:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1824:23:1824:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1825:13:1825:16 | self | | file://:0:0:0:0 | & | -| main.rs:1825:13:1825:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1825:13:1825:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1825:13:1825:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1825:23:1825:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1825:23:1825:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1831:19:1831:22 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1831:25:1831:27 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1831:44:1836:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1832:13:1835:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1833:20:1833:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1833:20:1833:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:20:1833:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:29:1833:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1833:29:1833:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:20:1834:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1834:20:1834:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:20:1834:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1834:29:1834:31 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1834:29:1834:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1840:26:1840:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1840:26:1840:34 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1840:37:1840:39 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1841:13:1841:16 | self | | file://:0:0:0:0 | & | -| main.rs:1841:13:1841:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1841:13:1841:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:13:1841:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1841:23:1841:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1841:23:1841:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1842:13:1842:16 | self | | file://:0:0:0:0 | & | -| main.rs:1842:13:1842:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1842:13:1842:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1842:13:1842:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1842:23:1842:25 | rhs | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1842:23:1842:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1848:16:1848:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1848:22:1848:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1848:40:1853:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1849:13:1852:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1850:20:1850:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1850:20:1850:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:20:1850:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:30:1850:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1851:20:1851:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1851:20:1851:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:20:1851:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1851:30:1851:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1857:23:1857:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1857:23:1857:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1857:34:1857:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | -| main.rs:1858:13:1858:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1858:13:1858:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1858:24:1858:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1859:13:1859:16 | self | | file://:0:0:0:0 | & | -| main.rs:1859:13:1859:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1859:13:1859:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1859:13:1859:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1859:24:1859:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1865:16:1865:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1865:22:1865:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1865:40:1870:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1866:13:1869:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1867:20:1867:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1867:20:1867:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:20:1867:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:30:1867:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1868:20:1868:23 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1868:20:1868:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:20:1868:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:30:1868:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1874:23:1874:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1874:23:1874:31 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1874:34:1874:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1875:13:1875:16 | self | | file://:0:0:0:0 | & | -| main.rs:1875:13:1875:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1875:13:1875:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1875:13:1875:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1875:24:1875:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1876:13:1876:16 | self | | file://:0:0:0:0 | & | -| main.rs:1876:13:1876:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1876:13:1876:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1876:13:1876:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1876:24:1876:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1882:16:1882:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1882:30:1887:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1883:13:1886:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1884:20:1884:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:21:1884:24 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1884:21:1884:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1885:20:1885:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1885:21:1885:24 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1885:21:1885:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1892:16:1892:19 | SelfParam | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1892:30:1897:9 | { ... } | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1893:13:1896:13 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1894:20:1894:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1894:21:1894:24 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1894:21:1894:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1895:20:1895:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1895:21:1895:24 | self | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1895:21:1895:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:15:1901:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1901:15:1901:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1901:22:1901:26 | other | | file://:0:0:0:0 | & | -| main.rs:1901:22:1901:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1901:44:1903:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1902:13:1902:16 | self | | file://:0:0:0:0 | & | -| main.rs:1902:13:1902:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1902:13:1902:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:13:1902:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1902:13:1902:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1902:23:1902:27 | other | | file://:0:0:0:0 | & | -| main.rs:1902:23:1902:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1902:23:1902:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:34:1902:37 | self | | file://:0:0:0:0 | & | -| main.rs:1902:34:1902:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1902:34:1902:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:34:1902:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1902:44:1902:48 | other | | file://:0:0:0:0 | & | -| main.rs:1902:44:1902:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1902:44:1902:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:15:1905:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1905:15:1905:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1905:22:1905:26 | other | | file://:0:0:0:0 | & | -| main.rs:1905:22:1905:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1905:44:1907:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1906:13:1906:16 | self | | file://:0:0:0:0 | & | -| main.rs:1906:13:1906:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1906:13:1906:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:13:1906:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1906:13:1906:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1906:23:1906:27 | other | | file://:0:0:0:0 | & | -| main.rs:1906:23:1906:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1906:23:1906:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:34:1906:37 | self | | file://:0:0:0:0 | & | -| main.rs:1906:34:1906:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1906:34:1906:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:34:1906:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1906:44:1906:48 | other | | file://:0:0:0:0 | & | -| main.rs:1906:44:1906:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1906:44:1906:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1911:24:1911:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1911:24:1911:28 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1911:31:1911:35 | other | | file://:0:0:0:0 | & | -| main.rs:1911:31:1911:35 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1911:75:1913:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1911:75:1913:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1912:13:1912:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:13:1912:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1912:13:1912:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1912:14:1912:17 | self | | file://:0:0:0:0 | & | -| main.rs:1912:14:1912:17 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1912:14:1912:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:14:1912:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:23:1912:26 | self | | file://:0:0:0:0 | & | -| main.rs:1912:23:1912:26 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1912:23:1912:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:43:1912:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1912:43:1912:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:44:1912:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:45:1912:49 | other | | file://:0:0:0:0 | & | -| main.rs:1912:45:1912:49 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1912:45:1912:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:45:1912:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:55:1912:59 | other | | file://:0:0:0:0 | & | -| main.rs:1912:55:1912:59 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1912:55:1912:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1915:15:1915:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1915:15:1915:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1915:22:1915:26 | other | | file://:0:0:0:0 | & | -| main.rs:1915:22:1915:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1915:44:1917:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1916:13:1916:16 | self | | file://:0:0:0:0 | & | -| main.rs:1916:13:1916:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1916:13:1916:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:13:1916:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1916:13:1916:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1916:22:1916:26 | other | | file://:0:0:0:0 | & | -| main.rs:1916:22:1916:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1916:22:1916:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:33:1916:36 | self | | file://:0:0:0:0 | & | -| main.rs:1916:33:1916:36 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1916:33:1916:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1916:33:1916:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1916:42:1916:46 | other | | file://:0:0:0:0 | & | -| main.rs:1916:42:1916:46 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1916:42:1916:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1919:15:1919:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1919:15:1919:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1919:22:1919:26 | other | | file://:0:0:0:0 | & | -| main.rs:1919:22:1919:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1919:44:1921:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1920:13:1920:16 | self | | file://:0:0:0:0 | & | -| main.rs:1920:13:1920:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1920:13:1920:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1920:13:1920:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1920:13:1920:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1920:23:1920:27 | other | | file://:0:0:0:0 | & | -| main.rs:1920:23:1920:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1920:23:1920:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1920:34:1920:37 | self | | file://:0:0:0:0 | & | -| main.rs:1920:34:1920:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1920:34:1920:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1920:34:1920:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1920:44:1920:48 | other | | file://:0:0:0:0 | & | -| main.rs:1920:44:1920:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1920:44:1920:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1923:15:1923:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1923:15:1923:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1923:22:1923:26 | other | | file://:0:0:0:0 | & | -| main.rs:1923:22:1923:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1923:44:1925:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1924:13:1924:16 | self | | file://:0:0:0:0 | & | -| main.rs:1924:13:1924:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1924:13:1924:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:13:1924:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1924:13:1924:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1924:22:1924:26 | other | | file://:0:0:0:0 | & | -| main.rs:1924:22:1924:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1924:22:1924:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:33:1924:36 | self | | file://:0:0:0:0 | & | -| main.rs:1924:33:1924:36 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1924:33:1924:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1924:33:1924:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1924:42:1924:46 | other | | file://:0:0:0:0 | & | -| main.rs:1924:42:1924:46 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1924:42:1924:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1927:15:1927:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1927:15:1927:19 | SelfParam | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1927:22:1927:26 | other | | file://:0:0:0:0 | & | -| main.rs:1927:22:1927:26 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1927:44:1929:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1928:13:1928:16 | self | | file://:0:0:0:0 | & | -| main.rs:1928:13:1928:16 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1928:13:1928:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:13:1928:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1928:13:1928:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1928:23:1928:27 | other | | file://:0:0:0:0 | & | -| main.rs:1928:23:1928:27 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1928:23:1928:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:34:1928:37 | self | | file://:0:0:0:0 | & | -| main.rs:1928:34:1928:37 | self | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1928:34:1928:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1928:34:1928:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1928:44:1928:48 | other | | file://:0:0:0:0 | & | -| main.rs:1928:44:1928:48 | other | &T | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1928:44:1928:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:26:1932:26 | a | | main.rs:1932:18:1932:23 | T | -| main.rs:1932:32:1932:32 | b | | main.rs:1932:18:1932:23 | T | -| main.rs:1932:51:1934:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:1933:9:1933:9 | a | | main.rs:1932:18:1932:23 | T | -| main.rs:1933:9:1933:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:1933:13:1933:13 | b | | main.rs:1932:18:1932:23 | T | -| main.rs:1940:13:1940:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:22:1940:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:23:1940:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:23:1940:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:31:1940:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1941:13:1941:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1941:22:1941:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1941:23:1941:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1941:23:1941:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1941:31:1941:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:13:1942:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:22:1942:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:23:1942:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:23:1942:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1942:30:1942:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:13:1943:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:22:1943:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:23:1943:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:23:1943:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1943:31:1943:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:13:1944:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:22:1944:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:23:1944:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:23:1944:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:30:1944:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:13:1945:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:22:1945:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:23:1945:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1945:23:1945:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1945:32:1945:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:13:1948:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:23:1948:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:23:1948:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1948:31:1948:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:13:1949:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:23:1949:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:23:1949:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:31:1949:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:13:1950:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:31:1950:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:13:1951:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:23:1951:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:23:1951:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:31:1951:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:13:1952:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:23:1952:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:23:1952:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:31:1952:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:39:1953:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:45:1953:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1956:17:1956:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1956:34:1956:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:9:1957:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:9:1957:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1957:27:1957:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1959:17:1959:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1959:34:1959:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1960:9:1960:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1960:9:1960:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1960:27:1960:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:17:1962:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:34:1962:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1963:9:1963:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1963:9:1963:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1963:27:1963:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1965:17:1965:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1965:34:1965:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:9:1966:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:9:1966:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1966:27:1966:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1968:17:1968:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1968:34:1968:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:9:1969:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:9:1969:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1969:27:1969:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:13:1972:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:26:1972:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:26:1972:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:34:1972:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:13:1973:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:25:1973:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:25:1973:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:33:1973:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:13:1974:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:26:1974:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:26:1974:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1974:34:1974:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:13:1975:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:23:1975:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:23:1975:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1975:32:1975:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:13:1976:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:23:1976:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:23:1976:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1976:32:1976:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:17:1979:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:37:1979:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:9:1980:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:9:1980:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1980:30:1980:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:17:1982:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:36:1982:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:9:1983:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:9:1983:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1983:29:1983:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1985:17:1985:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1985:37:1985:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:9:1986:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:9:1986:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1986:30:1986:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:17:1988:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:34:1988:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:9:1989:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:9:1989:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1989:28:1989:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:17:1991:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:34:1991:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1992:9:1992:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1992:9:1992:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1992:28:1992:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:13:1994:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:23:1994:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:24:1994:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:13:1995:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:23:1995:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:24:1995:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:13:1998:14 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1998:18:1998:36 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1998:28:1998:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1998:28:1998:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:34:1998:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1998:34:1998:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1999:13:1999:14 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1999:18:1999:36 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:1999:28:1999:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1999:28:1999:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1999:34:1999:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1999:34:1999:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2002:13:2002:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2002:23:2002:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2002:23:2002:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2002:29:2002:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2003:13:2003:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2003:23:2003:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2003:23:2003:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2003:29:2003:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2004:13:2004:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2004:23:2004:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2004:23:2004:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2004:28:2004:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2005:13:2005:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2005:23:2005:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2005:23:2005:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2005:29:2005:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2006:13:2006:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2006:23:2006:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2006:23:2006:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2006:28:2006:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2007:13:2007:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:23:2007:24 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2007:23:2007:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:29:2007:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2010:13:2010:20 | vec2_add | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2010:24:2010:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2010:24:2010:30 | ... + ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2010:29:2010:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2011:13:2011:20 | vec2_sub | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2011:24:2011:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2011:24:2011:30 | ... - ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2011:29:2011:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2012:13:2012:20 | vec2_mul | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2012:24:2012:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2012:24:2012:30 | ... * ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2012:29:2012:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2013:13:2013:20 | vec2_div | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2013:24:2013:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2013:24:2013:30 | ... / ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2013:29:2013:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2014:13:2014:20 | vec2_rem | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2014:24:2014:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2014:24:2014:30 | ... % ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2014:29:2014:30 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2017:17:2017:31 | vec2_add_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2017:35:2017:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2018:9:2018:23 | vec2_add_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2018:9:2018:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2018:28:2018:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2020:17:2020:31 | vec2_sub_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2020:35:2020:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2021:9:2021:23 | vec2_sub_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2021:9:2021:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2021:28:2021:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2023:17:2023:31 | vec2_mul_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2023:35:2023:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2024:9:2024:23 | vec2_mul_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2024:9:2024:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2024:28:2024:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2026:17:2026:31 | vec2_div_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2026:35:2026:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2027:9:2027:23 | vec2_div_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2027:9:2027:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2027:28:2027:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2029:17:2029:31 | vec2_rem_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2029:35:2029:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2030:9:2030:23 | vec2_rem_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2030:9:2030:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2030:28:2030:29 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2033:13:2033:23 | vec2_bitand | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2033:27:2033:28 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2033:27:2033:33 | ... & ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2033:32:2033:33 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2034:13:2034:22 | vec2_bitor | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2034:26:2034:27 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2034:26:2034:32 | ... \| ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2034:31:2034:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2035:13:2035:23 | vec2_bitxor | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2035:27:2035:28 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2035:27:2035:33 | ... ^ ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2035:32:2035:33 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2036:13:2036:20 | vec2_shl | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2036:24:2036:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2036:24:2036:33 | ... << ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2036:30:2036:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2037:13:2037:20 | vec2_shr | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2037:24:2037:25 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2037:24:2037:33 | ... >> ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2037:30:2037:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2040:17:2040:34 | vec2_bitand_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2040:38:2040:39 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2041:9:2041:26 | vec2_bitand_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2041:9:2041:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2041:31:2041:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2043:17:2043:33 | vec2_bitor_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2043:37:2043:38 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2044:9:2044:25 | vec2_bitor_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2044:9:2044:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2044:30:2044:31 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2046:17:2046:34 | vec2_bitxor_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2046:38:2046:39 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2047:9:2047:26 | vec2_bitxor_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2047:9:2047:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2047:31:2047:32 | v2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2049:17:2049:31 | vec2_shl_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2049:35:2049:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2050:9:2050:23 | vec2_shl_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2050:9:2050:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2050:29:2050:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2052:17:2052:31 | vec2_shr_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2052:35:2052:36 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2053:9:2053:23 | vec2_shr_assign | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2053:9:2053:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2053:29:2053:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2056:13:2056:20 | vec2_neg | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2056:24:2056:26 | - ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2056:25:2056:26 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2057:13:2057:20 | vec2_not | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2057:24:2057:26 | ! ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2057:25:2057:26 | v1 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2060:13:2060:24 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2060:28:2060:45 | ...::default(...) | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2061:13:2061:26 | vec2_zero_plus | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2061:30:2061:48 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2061:30:2061:63 | ... + ... | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2061:40:2061:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2061:40:2061:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2061:46:2061:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2061:46:2061:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2061:52:2061:63 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2065:13:2065:24 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2065:28:2065:45 | ...::default(...) | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2066:13:2066:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2066:30:2066:48 | Vec2 {...} | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2066:30:2066:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2066:40:2066:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:40:2066:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2066:46:2066:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:46:2066:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2066:53:2066:64 | default_vec2 | | main.rs:1695:5:1700:5 | Vec2 | -| main.rs:2076:18:2076:21 | SelfParam | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2079:25:2081:5 | { ... } | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2080:9:2080:10 | S1 | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2083:41:2085:5 | { ... } | | main.rs:2083:16:2083:39 | impl ... | -| main.rs:2084:9:2084:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2084:9:2084:20 | { ... } | Output | main.rs:2073:5:2073:14 | S1 | -| main.rs:2084:17:2084:18 | S1 | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2093:13:2093:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2093:13:2093:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2093:13:2093:42 | SelfParam | Ptr.&T | main.rs:2087:5:2087:14 | S2 | -| main.rs:2094:13:2094:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2094:13:2094:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2095:44:2097:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2095:44:2097:9 | { ... } | T | main.rs:2073:5:2073:14 | S1 | -| main.rs:2096:13:2096:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2096:13:2096:38 | ...::Ready(...) | T | main.rs:2073:5:2073:14 | S1 | -| main.rs:2096:36:2096:37 | S1 | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2100:41:2102:5 | { ... } | | main.rs:2100:16:2100:39 | impl ... | -| main.rs:2101:9:2101:10 | S2 | | main.rs:2087:5:2087:14 | S2 | -| main.rs:2101:9:2101:10 | S2 | | main.rs:2100:16:2100:39 | impl ... | -| main.rs:2105:9:2105:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2105:9:2105:12 | f1(...) | Output | main.rs:2073:5:2073:14 | S1 | -| main.rs:2105:9:2105:18 | await ... | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2106:9:2106:12 | f2(...) | | main.rs:2083:16:2083:39 | impl ... | -| main.rs:2106:9:2106:18 | await ... | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2107:9:2107:12 | f3(...) | | main.rs:2100:16:2100:39 | impl ... | -| main.rs:2107:9:2107:18 | await ... | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2108:9:2108:10 | S2 | | main.rs:2087:5:2087:14 | S2 | -| main.rs:2108:9:2108:16 | await S2 | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2109:13:2109:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2109:13:2109:13 | b | Output | main.rs:2073:5:2073:14 | S1 | -| main.rs:2109:17:2109:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2109:17:2109:28 | { ... } | Output | main.rs:2073:5:2073:14 | S1 | -| main.rs:2109:25:2109:26 | S1 | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2110:9:2110:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2110:9:2110:9 | b | Output | main.rs:2073:5:2073:14 | S1 | -| main.rs:2110:9:2110:15 | await b | | main.rs:2073:5:2073:14 | S1 | -| main.rs:2121:15:2121:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2121:15:2121:19 | SelfParam | &T | main.rs:2120:5:2122:5 | Self [trait Trait1] | -| main.rs:2125:15:2125:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2125:15:2125:19 | SelfParam | &T | main.rs:2124:5:2126:5 | Self [trait Trait2] | -| main.rs:2129:15:2129:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2129:15:2129:19 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | -| main.rs:2133:15:2133:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2133:15:2133:19 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | -| main.rs:2136:37:2138:5 | { ... } | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2137:9:2137:10 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2137:9:2137:10 | S1 | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2141:18:2141:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2141:18:2141:22 | SelfParam | &T | main.rs:2140:5:2142:5 | Self [trait MyTrait] | -| main.rs:2145:18:2145:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2145:18:2145:22 | SelfParam | &T | main.rs:2115:5:2116:14 | S1 | -| main.rs:2145:31:2147:9 | { ... } | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2146:13:2146:14 | S2 | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2151:18:2151:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2151:18:2151:22 | SelfParam | &T | main.rs:2118:5:2118:22 | S3 | -| main.rs:2151:18:2151:22 | SelfParam | &T.T3 | main.rs:2150:10:2150:17 | T | -| main.rs:2151:30:2154:9 | { ... } | | main.rs:2150:10:2150:17 | T | -| main.rs:2152:17:2152:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2152:17:2152:21 | S3(...) | | main.rs:2118:5:2118:22 | S3 | -| main.rs:2152:17:2152:21 | S3(...) | &T | main.rs:2118:5:2118:22 | S3 | -| main.rs:2152:17:2152:21 | S3(...) | &T.T3 | main.rs:2150:10:2150:17 | T | -| main.rs:2152:25:2152:28 | self | | file://:0:0:0:0 | & | -| main.rs:2152:25:2152:28 | self | &T | main.rs:2118:5:2118:22 | S3 | -| main.rs:2152:25:2152:28 | self | &T.T3 | main.rs:2150:10:2150:17 | T | -| main.rs:2153:13:2153:21 | t.clone() | | main.rs:2150:10:2150:17 | T | -| main.rs:2157:45:2159:5 | { ... } | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2158:9:2158:10 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2158:9:2158:10 | S1 | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2161:41:2161:41 | t | | main.rs:2161:26:2161:38 | B | -| main.rs:2161:52:2163:5 | { ... } | | main.rs:2161:23:2161:23 | A | -| main.rs:2162:9:2162:9 | t | | main.rs:2161:26:2161:38 | B | -| main.rs:2162:9:2162:17 | t.get_a() | | main.rs:2161:23:2161:23 | A | -| main.rs:2165:34:2165:34 | x | | main.rs:2165:24:2165:31 | T | -| main.rs:2165:59:2167:5 | { ... } | | main.rs:2165:43:2165:57 | impl ... | -| main.rs:2165:59:2167:5 | { ... } | impl(T) | main.rs:2165:24:2165:31 | T | -| main.rs:2166:9:2166:13 | S3(...) | | main.rs:2118:5:2118:22 | S3 | -| main.rs:2166:9:2166:13 | S3(...) | | main.rs:2165:43:2165:57 | impl ... | -| main.rs:2166:9:2166:13 | S3(...) | T3 | main.rs:2165:24:2165:31 | T | -| main.rs:2166:9:2166:13 | S3(...) | impl(T) | main.rs:2165:24:2165:31 | T | -| main.rs:2166:12:2166:12 | x | | main.rs:2165:24:2165:31 | T | -| main.rs:2169:34:2169:34 | x | | main.rs:2169:24:2169:31 | T | -| main.rs:2169:67:2171:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2169:67:2171:5 | { ... } | T | main.rs:2169:50:2169:64 | impl ... | -| main.rs:2169:67:2171:5 | { ... } | T.impl(T) | main.rs:2169:24:2169:31 | T | -| main.rs:2170:9:2170:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2170:9:2170:19 | Some(...) | T | main.rs:2118:5:2118:22 | S3 | -| main.rs:2170:9:2170:19 | Some(...) | T | main.rs:2169:50:2169:64 | impl ... | -| main.rs:2170:9:2170:19 | Some(...) | T.T3 | main.rs:2169:24:2169:31 | T | -| main.rs:2170:9:2170:19 | Some(...) | T.impl(T) | main.rs:2169:24:2169:31 | T | -| main.rs:2170:14:2170:18 | S3(...) | | main.rs:2118:5:2118:22 | S3 | -| main.rs:2170:14:2170:18 | S3(...) | | main.rs:2169:50:2169:64 | impl ... | -| main.rs:2170:14:2170:18 | S3(...) | T3 | main.rs:2169:24:2169:31 | T | -| main.rs:2170:14:2170:18 | S3(...) | impl(T) | main.rs:2169:24:2169:31 | T | -| main.rs:2170:17:2170:17 | x | | main.rs:2169:24:2169:31 | T | -| main.rs:2173:34:2173:34 | x | | main.rs:2173:24:2173:31 | T | -| main.rs:2173:78:2175:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2173:78:2175:5 | { ... } | 0(2) | main.rs:2173:44:2173:58 | impl ... | -| main.rs:2173:78:2175:5 | { ... } | 0(2).impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2173:78:2175:5 | { ... } | 1(2) | main.rs:2173:61:2173:75 | impl ... | -| main.rs:2173:78:2175:5 | { ... } | 1(2).impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2174:9:2174:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2174:9:2174:30 | TupleExpr | 0(2) | main.rs:2118:5:2118:22 | S3 | -| main.rs:2174:9:2174:30 | TupleExpr | 0(2) | main.rs:2173:44:2173:58 | impl ... | -| main.rs:2174:9:2174:30 | TupleExpr | 0(2).T3 | main.rs:2173:24:2173:31 | T | -| main.rs:2174:9:2174:30 | TupleExpr | 0(2).impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2174:9:2174:30 | TupleExpr | 1(2) | main.rs:2118:5:2118:22 | S3 | -| main.rs:2174:9:2174:30 | TupleExpr | 1(2) | main.rs:2173:61:2173:75 | impl ... | -| main.rs:2174:9:2174:30 | TupleExpr | 1(2).T3 | main.rs:2173:24:2173:31 | T | -| main.rs:2174:9:2174:30 | TupleExpr | 1(2).impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2174:10:2174:22 | S3(...) | | main.rs:2118:5:2118:22 | S3 | -| main.rs:2174:10:2174:22 | S3(...) | | main.rs:2173:44:2173:58 | impl ... | -| main.rs:2174:10:2174:22 | S3(...) | T3 | main.rs:2173:24:2173:31 | T | -| main.rs:2174:10:2174:22 | S3(...) | impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2174:13:2174:13 | x | | main.rs:2173:24:2173:31 | T | -| main.rs:2174:13:2174:21 | x.clone() | | main.rs:2173:24:2173:31 | T | -| main.rs:2174:25:2174:29 | S3(...) | | main.rs:2118:5:2118:22 | S3 | -| main.rs:2174:25:2174:29 | S3(...) | | main.rs:2173:61:2173:75 | impl ... | -| main.rs:2174:25:2174:29 | S3(...) | T3 | main.rs:2173:24:2173:31 | T | -| main.rs:2174:25:2174:29 | S3(...) | impl(T) | main.rs:2173:24:2173:31 | T | -| main.rs:2174:28:2174:28 | x | | main.rs:2173:24:2173:31 | T | -| main.rs:2177:26:2177:26 | t | | main.rs:2177:29:2177:43 | impl ... | -| main.rs:2177:51:2179:5 | { ... } | | main.rs:2177:23:2177:23 | A | -| main.rs:2178:9:2178:9 | t | | main.rs:2177:29:2177:43 | impl ... | -| main.rs:2178:9:2178:17 | t.get_a() | | main.rs:2177:23:2177:23 | A | -| main.rs:2182:13:2182:13 | x | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2182:17:2182:20 | f1(...) | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2183:9:2183:9 | x | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2184:9:2184:9 | x | | main.rs:2136:16:2136:35 | impl ... + ... | -| main.rs:2185:13:2185:13 | a | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2185:17:2185:32 | get_a_my_trait(...) | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2186:13:2186:13 | b | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2186:17:2186:33 | uses_my_trait1(...) | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2186:32:2186:32 | a | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2187:13:2187:13 | a | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2187:17:2187:32 | get_a_my_trait(...) | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2188:13:2188:13 | c | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2188:17:2188:33 | uses_my_trait2(...) | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2188:32:2188:32 | a | | main.rs:2157:28:2157:43 | impl ... | -| main.rs:2189:13:2189:13 | d | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2189:17:2189:34 | uses_my_trait2(...) | | main.rs:2117:5:2117:14 | S2 | -| main.rs:2189:32:2189:33 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2190:13:2190:13 | e | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2190:17:2190:35 | get_a_my_trait2(...) | | main.rs:2165:43:2165:57 | impl ... | -| main.rs:2190:17:2190:35 | get_a_my_trait2(...) | impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2190:17:2190:43 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2190:33:2190:34 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2193:13:2193:13 | f | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | T | main.rs:2169:50:2169:64 | impl ... | -| main.rs:2193:17:2193:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2193:17:2193:44 | ... .unwrap() | | main.rs:2169:50:2169:64 | impl ... | -| main.rs:2193:17:2193:44 | ... .unwrap() | impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2193:17:2193:52 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2193:33:2193:34 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:13:2194:13 | g | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 0(2) | main.rs:2173:44:2173:58 | impl ... | -| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 1(2) | main.rs:2173:61:2173:75 | impl ... | -| main.rs:2194:17:2194:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:17:2194:37 | ... .0 | | main.rs:2173:44:2173:58 | impl ... | -| main.rs:2194:17:2194:37 | ... .0 | impl(T) | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:17:2194:45 | ... .get_a() | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2194:33:2194:34 | S1 | | main.rs:2115:5:2116:14 | S1 | -| main.rs:2205:16:2205:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2205:16:2205:20 | SelfParam | &T | main.rs:2201:5:2202:13 | S | -| main.rs:2205:31:2207:9 | { ... } | | main.rs:2201:5:2202:13 | S | -| main.rs:2206:13:2206:13 | S | | main.rs:2201:5:2202:13 | S | -| main.rs:2216:26:2218:9 | { ... } | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2216:26:2218:9 | { ... } | T | main.rs:2215:10:2215:10 | T | -| main.rs:2217:13:2217:38 | MyVec {...} | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2217:13:2217:38 | MyVec {...} | T | main.rs:2215:10:2215:10 | T | -| main.rs:2217:27:2217:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2217:27:2217:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2217:27:2217:36 | ...::new(...) | T | main.rs:2215:10:2215:10 | T | -| main.rs:2220:17:2220:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2220:17:2220:25 | SelfParam | &T | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2220:17:2220:25 | SelfParam | &T.T | main.rs:2215:10:2215:10 | T | -| main.rs:2220:28:2220:32 | value | | main.rs:2215:10:2215:10 | T | -| main.rs:2221:13:2221:16 | self | | file://:0:0:0:0 | & | -| main.rs:2221:13:2221:16 | self | &T | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2221:13:2221:16 | self | &T.T | main.rs:2215:10:2215:10 | T | -| main.rs:2221:13:2221:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2221:13:2221:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2221:13:2221:21 | self.data | T | main.rs:2215:10:2215:10 | T | -| main.rs:2221:28:2221:32 | value | | main.rs:2215:10:2215:10 | T | -| main.rs:2229:18:2229:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2229:18:2229:22 | SelfParam | &T | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2229:18:2229:22 | SelfParam | &T.T | main.rs:2225:10:2225:10 | T | -| main.rs:2229:25:2229:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2229:56:2231:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2229:56:2231:9 | { ... } | &T | main.rs:2225:10:2225:10 | T | -| main.rs:2230:13:2230:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2230:13:2230:29 | &... | &T | main.rs:2225:10:2225:10 | T | -| main.rs:2230:14:2230:17 | self | | file://:0:0:0:0 | & | -| main.rs:2230:14:2230:17 | self | &T | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2230:14:2230:17 | self | &T.T | main.rs:2225:10:2225:10 | T | -| main.rs:2230:14:2230:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2230:14:2230:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2230:14:2230:22 | self.data | T | main.rs:2225:10:2225:10 | T | -| main.rs:2230:14:2230:29 | ...[index] | | main.rs:2225:10:2225:10 | T | -| main.rs:2230:24:2230:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2234:22:2234:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2234:22:2234:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2234:22:2234:26 | slice | &T.[T] | main.rs:2201:5:2202:13 | S | -| main.rs:2235:13:2235:13 | x | | main.rs:2201:5:2202:13 | S | -| main.rs:2235:17:2235:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2235:17:2235:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2235:17:2235:21 | slice | &T.[T] | main.rs:2201:5:2202:13 | S | -| main.rs:2235:17:2235:24 | slice[0] | | main.rs:2201:5:2202:13 | S | -| main.rs:2235:17:2235:30 | ... .foo() | | main.rs:2201:5:2202:13 | S | -| main.rs:2235:23:2235:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2238:37:2238:37 | a | | main.rs:2238:20:2238:34 | T | -| main.rs:2238:43:2238:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2241:5:2243:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2242:9:2242:9 | a | | main.rs:2238:20:2238:34 | T | -| main.rs:2242:9:2242:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2242:11:2242:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2246:17:2246:19 | vec | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2246:17:2246:19 | vec | T | main.rs:2201:5:2202:13 | S | -| main.rs:2246:23:2246:34 | ...::new(...) | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2246:23:2246:34 | ...::new(...) | T | main.rs:2201:5:2202:13 | S | -| main.rs:2247:9:2247:11 | vec | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2247:9:2247:11 | vec | T | main.rs:2201:5:2202:13 | S | -| main.rs:2247:18:2247:18 | S | | main.rs:2201:5:2202:13 | S | -| main.rs:2248:9:2248:11 | vec | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2248:9:2248:11 | vec | T | main.rs:2201:5:2202:13 | S | -| main.rs:2248:9:2248:14 | vec[0] | | main.rs:2201:5:2202:13 | S | -| main.rs:2248:9:2248:20 | ... .foo() | | main.rs:2201:5:2202:13 | S | -| main.rs:2248:13:2248:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2248:13:2248:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2250:13:2250:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2250:13:2250:14 | xs | [T;...] | main.rs:2201:5:2202:13 | S | -| main.rs:2250:21:2250:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2250:26:2250:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2250:26:2250:28 | [...] | [T;...] | main.rs:2201:5:2202:13 | S | -| main.rs:2250:27:2250:27 | S | | main.rs:2201:5:2202:13 | S | -| main.rs:2251:13:2251:13 | x | | main.rs:2201:5:2202:13 | S | -| main.rs:2251:17:2251:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2251:17:2251:18 | xs | [T;...] | main.rs:2201:5:2202:13 | S | -| main.rs:2251:17:2251:21 | xs[0] | | main.rs:2201:5:2202:13 | S | -| main.rs:2251:17:2251:27 | ... .foo() | | main.rs:2201:5:2202:13 | S | -| main.rs:2251:20:2251:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2253:29:2253:31 | vec | | main.rs:2210:5:2213:5 | MyVec | -| main.rs:2253:29:2253:31 | vec | T | main.rs:2201:5:2202:13 | S | -| main.rs:2253:34:2253:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2253:34:2253:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2255:23:2255:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2255:23:2255:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2255:23:2255:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2255:23:2255:25 | &xs | &T.[T;...] | main.rs:2201:5:2202:13 | S | -| main.rs:2255:23:2255:25 | &xs | &T.[T] | main.rs:2201:5:2202:13 | S | -| main.rs:2255:24:2255:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2255:24:2255:25 | xs | [T;...] | main.rs:2201:5:2202:13 | S | -| main.rs:2261:13:2261:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2261:17:2261:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2261:25:2261:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2261:25:2261:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2261:25:2261:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2261:25:2261:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2261:25:2261:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2261:25:2261:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2261:25:2261:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2261:38:2261:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2261:38:2261:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2270:19:2270:22 | SelfParam | | main.rs:2266:5:2271:5 | Self [trait MyAdd] | -| main.rs:2270:25:2270:27 | rhs | | main.rs:2266:17:2266:26 | Rhs | -| main.rs:2277:19:2277:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2277:25:2277:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2277:45:2279:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2278:13:2278:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2286:19:2286:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2286:25:2286:29 | value | | file://:0:0:0:0 | & | -| main.rs:2286:25:2286:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2286:46:2288:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2287:13:2287:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2287:14:2287:18 | value | | file://:0:0:0:0 | & | -| main.rs:2287:14:2287:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2295:19:2295:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2295:25:2295:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2295:46:2301:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:13:2300:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:13:2300:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2296:16:2296:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2296:22:2298:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:22:2298:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2297:17:2297:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2297:17:2297:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2298:20:2300:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2298:20:2300:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2299:17:2299:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2299:17:2299:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2310:19:2310:22 | SelfParam | | main.rs:2304:5:2304:19 | S | -| main.rs:2310:19:2310:22 | SelfParam | T | main.rs:2306:10:2306:17 | T | -| main.rs:2310:25:2310:29 | other | | main.rs:2304:5:2304:19 | S | -| main.rs:2310:25:2310:29 | other | T | main.rs:2306:10:2306:17 | T | -| main.rs:2310:54:2312:9 | { ... } | | main.rs:2304:5:2304:19 | S | -| main.rs:2310:54:2312:9 | { ... } | T | main.rs:2267:9:2267:20 | Output | -| main.rs:2311:13:2311:39 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2311:13:2311:39 | S(...) | T | main.rs:2267:9:2267:20 | Output | -| main.rs:2311:15:2311:22 | (...) | | main.rs:2306:10:2306:17 | T | -| main.rs:2311:15:2311:38 | ... .my_add(...) | | main.rs:2267:9:2267:20 | Output | -| main.rs:2311:16:2311:19 | self | | main.rs:2304:5:2304:19 | S | -| main.rs:2311:16:2311:19 | self | T | main.rs:2306:10:2306:17 | T | -| main.rs:2311:16:2311:21 | self.0 | | main.rs:2306:10:2306:17 | T | -| main.rs:2311:31:2311:35 | other | | main.rs:2304:5:2304:19 | S | -| main.rs:2311:31:2311:35 | other | T | main.rs:2306:10:2306:17 | T | -| main.rs:2311:31:2311:37 | other.0 | | main.rs:2306:10:2306:17 | T | -| main.rs:2319:19:2319:22 | SelfParam | | main.rs:2304:5:2304:19 | S | -| main.rs:2319:19:2319:22 | SelfParam | T | main.rs:2315:10:2315:17 | T | -| main.rs:2319:25:2319:29 | other | | main.rs:2315:10:2315:17 | T | -| main.rs:2319:51:2321:9 | { ... } | | main.rs:2304:5:2304:19 | S | -| main.rs:2319:51:2321:9 | { ... } | T | main.rs:2267:9:2267:20 | Output | -| main.rs:2320:13:2320:37 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2320:13:2320:37 | S(...) | T | main.rs:2267:9:2267:20 | Output | -| main.rs:2320:15:2320:22 | (...) | | main.rs:2315:10:2315:17 | T | -| main.rs:2320:15:2320:36 | ... .my_add(...) | | main.rs:2267:9:2267:20 | Output | -| main.rs:2320:16:2320:19 | self | | main.rs:2304:5:2304:19 | S | -| main.rs:2320:16:2320:19 | self | T | main.rs:2315:10:2315:17 | T | -| main.rs:2320:16:2320:21 | self.0 | | main.rs:2315:10:2315:17 | T | -| main.rs:2320:31:2320:35 | other | | main.rs:2315:10:2315:17 | T | -| main.rs:2331:19:2331:22 | SelfParam | | main.rs:2304:5:2304:19 | S | -| main.rs:2331:19:2331:22 | SelfParam | T | main.rs:2324:14:2324:14 | T | -| main.rs:2331:25:2331:29 | other | | file://:0:0:0:0 | & | -| main.rs:2331:25:2331:29 | other | &T | main.rs:2324:14:2324:14 | T | -| main.rs:2331:55:2333:9 | { ... } | | main.rs:2304:5:2304:19 | S | -| main.rs:2332:13:2332:37 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2332:15:2332:22 | (...) | | main.rs:2324:14:2324:14 | T | -| main.rs:2332:16:2332:19 | self | | main.rs:2304:5:2304:19 | S | -| main.rs:2332:16:2332:19 | self | T | main.rs:2324:14:2324:14 | T | -| main.rs:2332:16:2332:21 | self.0 | | main.rs:2324:14:2324:14 | T | -| main.rs:2332:31:2332:35 | other | | file://:0:0:0:0 | & | -| main.rs:2332:31:2332:35 | other | &T | main.rs:2324:14:2324:14 | T | -| main.rs:2338:20:2338:24 | value | | main.rs:2336:18:2336:18 | T | -| main.rs:2343:20:2343:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2343:40:2345:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2344:13:2344:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2350:20:2350:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2350:41:2356:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2351:13:2355:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2351:13:2355:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2351:16:2351:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2351:22:2353:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2351:22:2353:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2352:17:2352:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:17:2352:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2353:20:2355:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2353:20:2355:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2354:17:2354:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:17:2354:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2361:21:2361:25 | value | | main.rs:2359:19:2359:19 | T | -| main.rs:2361:31:2361:31 | x | | main.rs:2359:5:2362:5 | Self [trait MyFrom2] | -| main.rs:2366:21:2366:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2366:33:2366:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2366:48:2368:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2367:13:2367:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:21:2373:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2373:34:2373:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2373:49:2379:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2374:13:2378:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2374:16:2374:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2374:22:2376:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2375:17:2375:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2376:20:2378:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2377:17:2377:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2384:15:2384:15 | x | | main.rs:2382:5:2388:5 | Self [trait MySelfTrait] | -| main.rs:2387:15:2387:15 | x | | main.rs:2382:5:2388:5 | Self [trait MySelfTrait] | -| main.rs:2392:15:2392:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2392:31:2394:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:13:2393:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:13:2393:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:17:2393:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2397:15:2397:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2397:32:2399:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2398:13:2398:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2398:13:2398:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2398:17:2398:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2404:15:2404:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2404:31:2406:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2405:13:2405:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:13:2405:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2409:15:2409:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2409:32:2411:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2410:13:2410:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2415:13:2415:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2415:22:2415:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:22:2415:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:9:2416:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:9:2416:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:18:2416:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:9:2417:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:9:2417:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:18:2417:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2417:18:2417:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2417:19:2417:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:9:2418:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:9:2418:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2418:18:2418:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2420:9:2420:15 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2420:9:2420:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2420:9:2420:31 | ... .my_add(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2420:11:2420:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2420:24:2420:30 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2420:24:2420:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2420:26:2420:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:9:2421:15 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2421:9:2421:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:11:2421:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2421:24:2421:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:9:2422:15 | S(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2422:9:2422:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:9:2422:29 | ... .my_add(...) | | main.rs:2304:5:2304:19 | S | -| main.rs:2422:11:2422:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:24:2422:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2422:24:2422:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:25:2422:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2424:13:2424:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2424:17:2424:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2424:30:2424:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:13:2425:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:17:2425:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:30:2425:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2426:13:2426:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:22:2426:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:38:2426:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2427:9:2427:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2427:23:2427:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2427:30:2427:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2428:9:2428:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2428:23:2428:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2428:29:2428:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2429:9:2429:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2429:27:2429:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2429:34:2429:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:9:2431:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:17:2431:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2432:9:2432:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2432:17:2432:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2433:9:2433:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2433:18:2433:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2434:9:2434:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2434:18:2434:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2435:9:2435:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2435:25:2435:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:9:2436:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:25:2436:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2437:9:2437:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2437:25:2437:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2438:9:2438:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2438:25:2438:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2446:26:2448:9 | { ... } | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2447:13:2447:25 | MyCallable {...} | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2450:17:2450:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2450:17:2450:21 | SelfParam | &T | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2450:31:2452:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2451:13:2451:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2451:13:2451:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:13:2458:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:18:2458:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2458:18:2458:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:19:2458:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:22:2458:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:25:2458:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:18:2459:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2459:18:2459:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:18:2459:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2459:19:2459:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:22:2459:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:25:2459:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:32:2459:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2459:32:2459:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2459:40:2459:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2460:13:2460:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:18:2460:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2460:18:2460:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:18:2460:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2460:18:2460:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:19:2460:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:22:2460:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2460:25:2460:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:13:2462:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2462:13:2462:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:13:2462:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2462:21:2462:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2462:21:2462:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:21:2462:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2462:22:2462:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2462:27:2462:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:27:2462:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2462:30:2462:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:30:2462:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:13:2463:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2463:18:2463:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2463:18:2463:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:18:2463:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2465:13:2465:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2465:13:2465:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2465:21:2465:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2465:21:2465:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2465:22:2465:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2465:28:2465:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2466:13:2466:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2466:18:2466:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2466:18:2466:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2468:13:2468:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2468:13:2468:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2468:26:2468:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:31:2468:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2468:31:2468:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:31:2468:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2468:32:2468:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:32:2468:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2468:35:2468:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:35:2468:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2468:38:2468:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:38:2468:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:13:2469:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2469:18:2469:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2469:18:2469:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2471:13:2471:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2471:13:2471:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2471:26:2471:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2471:31:2471:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2471:31:2471:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2471:31:2471:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2471:32:2471:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2471:32:2471:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2471:35:2471:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:13:2472:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2472:18:2472:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2472:18:2472:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2474:17:2474:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2474:17:2474:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2474:17:2474:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2474:28:2474:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2474:28:2474:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2474:28:2474:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2474:29:2474:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2474:29:2474:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2474:36:2474:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2474:36:2474:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2474:43:2474:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2474:43:2474:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2475:13:2475:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2475:13:2475:13 | s | | file://:0:0:0:0 | & | -| main.rs:2475:13:2475:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2475:13:2475:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2475:18:2475:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2475:18:2475:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2475:18:2475:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2475:18:2475:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2475:19:2475:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2475:19:2475:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2475:19:2475:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2476:13:2476:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2476:13:2476:13 | s | | file://:0:0:0:0 | & | -| main.rs:2476:13:2476:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2476:13:2476:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2476:18:2476:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2476:18:2476:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2476:18:2476:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2476:18:2476:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2476:23:2476:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2476:23:2476:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2476:23:2476:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2477:13:2477:13 | s | | file://:0:0:0:0 | & | -| main.rs:2477:13:2477:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2477:18:2477:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2477:18:2477:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2477:18:2477:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2479:13:2479:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2479:13:2479:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2480:9:2484:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2480:9:2484:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2481:13:2481:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2481:26:2481:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2481:26:2481:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2482:13:2482:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2482:26:2482:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2482:26:2482:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2483:13:2483:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2483:26:2483:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2483:26:2483:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2485:13:2485:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2485:18:2485:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2485:18:2485:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2487:13:2487:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2487:13:2487:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2487:13:2487:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2488:9:2492:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2488:9:2492:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2488:9:2492:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2488:10:2492:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2488:10:2492:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2489:13:2489:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2489:26:2489:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2489:26:2489:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2490:13:2490:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2490:26:2490:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2490:26:2490:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2491:13:2491:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2491:26:2491:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2491:26:2491:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2493:13:2493:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2493:13:2493:13 | s | | file://:0:0:0:0 | & | -| main.rs:2493:13:2493:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2493:18:2493:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2493:18:2493:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2493:18:2493:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2495:13:2495:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2495:13:2495:21 | callables | [T;...] | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2495:25:2495:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2495:25:2495:81 | [...] | [T;...] | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2495:26:2495:42 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2495:45:2495:61 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2495:64:2495:80 | ...::new(...) | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2496:13:2496:13 | c | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2497:12:2497:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2497:12:2497:20 | callables | [T;...] | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2499:17:2499:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2499:26:2499:26 | c | | main.rs:2443:5:2443:24 | MyCallable | -| main.rs:2499:26:2499:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2504:13:2504:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2504:13:2504:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:18:2504:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:18:2504:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2504:18:2504:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:21:2504:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:13:2505:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2505:13:2505:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:13:2505:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:18:2505:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2505:18:2505:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2505:18:2505:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:18:2505:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:19:2505:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:19:2505:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2505:19:2505:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:19:2505:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:24:2505:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:24:2505:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:13:2506:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2506:13:2506:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:21:2506:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:21:2506:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2506:21:2506:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:24:2506:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:13:2507:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2507:13:2507:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2507:18:2507:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2507:18:2507:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2508:13:2508:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2508:26:2508:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2509:13:2509:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2509:18:2509:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2509:19:2509:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2509:19:2509:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:20:2509:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:26:2509:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:32:2509:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:38:2509:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2511:13:2511:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2511:13:2511:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2512:9:2515:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2512:9:2515:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2513:20:2513:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2514:18:2514:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2516:13:2516:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2516:13:2516:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2516:18:2516:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2516:18:2516:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2520:26:2520:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2520:29:2520:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2520:32:2520:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2523:13:2523:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2523:13:2523:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2523:13:2523:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2523:32:2523:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2523:32:2523:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2523:32:2523:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2523:32:2523:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2523:32:2523:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2523:32:2523:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2523:33:2523:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2523:39:2523:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2523:42:2523:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2524:13:2524:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2524:13:2524:13 | u | | file://:0:0:0:0 | & | -| main.rs:2524:18:2524:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2524:18:2524:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2524:18:2524:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2526:22:2526:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2526:22:2526:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2526:22:2526:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2526:23:2526:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2526:29:2526:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2526:32:2526:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2529:13:2529:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2529:13:2529:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2529:13:2529:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2529:13:2529:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2529:21:2529:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2529:21:2529:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2529:21:2529:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2529:21:2529:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2529:31:2529:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2529:31:2529:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2529:31:2529:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2529:32:2529:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2529:38:2529:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2529:41:2529:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:13:2530:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:13:2530:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2530:13:2530:13 | u | | file://:0:0:0:0 | & | -| main.rs:2530:18:2530:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2530:18:2530:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2530:18:2530:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:18:2530:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2532:13:2532:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2532:13:2532:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2532:13:2532:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2532:13:2532:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2532:32:2532:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2532:32:2532:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:32:2532:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2532:32:2532:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2532:32:2532:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2532:32:2532:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2532:32:2532:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2532:33:2532:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2532:39:2532:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:42:2532:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2533:13:2533:13 | u | | file://:0:0:0:0 | & | -| main.rs:2533:13:2533:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2533:18:2533:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2533:18:2533:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2533:18:2533:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2533:18:2533:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2535:17:2535:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2535:17:2535:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2535:17:2535:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2535:25:2535:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2535:25:2535:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2535:25:2535:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2536:9:2536:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2536:9:2536:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2536:9:2536:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2536:20:2536:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2537:13:2537:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2537:13:2537:13 | u | | file://:0:0:0:0 | & | -| main.rs:2537:18:2537:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2537:18:2537:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2537:18:2537:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2539:33:2539:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2539:36:2539:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2539:45:2539:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2539:48:2539:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2546:17:2546:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2546:17:2546:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2546:17:2546:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2546:17:2546:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2546:17:2546:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2546:17:2546:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2546:17:2546:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2546:24:2546:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2546:24:2546:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2546:24:2546:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2546:24:2546:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2546:24:2546:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2546:24:2546:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2546:24:2546:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:9:2547:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2547:9:2547:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:9:2547:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2547:9:2547:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2547:9:2547:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2547:9:2547:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2547:9:2547:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:9:2547:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2547:9:2547:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2547:9:2547:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2547:9:2547:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2547:9:2547:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:21:2547:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:24:2547:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2547:24:2547:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2547:24:2547:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2547:24:2547:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:33:2547:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2547:33:2547:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2548:9:2548:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2548:9:2548:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:9:2548:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2548:9:2548:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2548:9:2548:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2548:9:2548:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2548:9:2548:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:9:2548:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2548:9:2548:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2548:9:2548:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2548:9:2548:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2548:9:2548:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:21:2548:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:24:2548:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2548:24:2548:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2548:24:2548:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2548:24:2548:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:33:2548:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2548:33:2548:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2549:13:2549:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2549:13:2549:15 | key | | file://:0:0:0:0 | & | -| main.rs:2549:13:2549:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:20:2549:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2549:20:2549:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:20:2549:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2549:20:2549:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2549:20:2549:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2549:20:2549:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2549:20:2549:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2549:20:2549:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2549:20:2549:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:20:2549:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2549:20:2549:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2549:20:2549:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2549:20:2549:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2550:13:2550:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2550:13:2550:17 | value | | file://:0:0:0:0 | & | -| main.rs:2550:13:2550:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2550:13:2550:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2550:13:2550:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2550:13:2550:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2550:22:2550:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2550:22:2550:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:22:2550:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2550:22:2550:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2550:22:2550:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2550:22:2550:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2550:22:2550:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2550:22:2550:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2550:22:2550:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:22:2550:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2550:22:2550:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2550:22:2550:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2550:22:2550:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:13:2551:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2551:13:2551:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2551:13:2551:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:13:2551:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2551:13:2551:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:14:2551:16 | key | | file://:0:0:0:0 | & | -| main.rs:2551:14:2551:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:19:2551:23 | value | | file://:0:0:0:0 | & | -| main.rs:2551:19:2551:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2551:19:2551:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:19:2551:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2551:19:2551:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:29:2551:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2551:29:2551:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:29:2551:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2551:29:2551:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2551:29:2551:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:29:2551:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2551:29:2551:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2551:29:2551:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2551:29:2551:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2551:29:2551:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2551:29:2551:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2551:29:2551:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2551:29:2551:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:13:2552:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2552:13:2552:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2552:13:2552:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:13:2552:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2552:13:2552:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:14:2552:16 | key | | file://:0:0:0:0 | & | -| main.rs:2552:14:2552:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:19:2552:23 | value | | file://:0:0:0:0 | & | -| main.rs:2552:19:2552:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2552:19:2552:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:19:2552:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2552:19:2552:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:29:2552:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2552:29:2552:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2552:29:2552:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:29:2552:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2552:29:2552:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2552:29:2552:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:29:2552:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2552:29:2552:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2552:30:2552:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2552:30:2552:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2552:30:2552:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2552:30:2552:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2552:30:2552:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2552:30:2552:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2552:30:2552:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2556:17:2556:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2556:26:2556:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2556:26:2556:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2558:23:2558:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2558:23:2558:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2558:27:2558:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2558:27:2558:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2560:13:2560:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2560:13:2560:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2560:18:2560:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:40:2574:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2572:40:2574:9 | { ... } | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2572:40:2574:9 | { ... } | T.T | main.rs:2571:10:2571:19 | T | -| main.rs:2573:13:2573:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2573:13:2573:16 | None | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2573:13:2573:16 | None | T.T | main.rs:2571:10:2571:19 | T | -| main.rs:2576:30:2578:9 | { ... } | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2576:30:2578:9 | { ... } | T | main.rs:2571:10:2571:19 | T | -| main.rs:2577:13:2577:28 | S1(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2577:13:2577:28 | S1(...) | T | main.rs:2571:10:2571:19 | T | -| main.rs:2577:16:2577:27 | ...::default(...) | | main.rs:2571:10:2571:19 | T | -| main.rs:2580:19:2580:22 | SelfParam | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2580:19:2580:22 | SelfParam | T | main.rs:2571:10:2571:19 | T | -| main.rs:2580:33:2582:9 | { ... } | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2580:33:2582:9 | { ... } | T | main.rs:2571:10:2571:19 | T | -| main.rs:2581:13:2581:16 | self | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2581:13:2581:16 | self | T | main.rs:2571:10:2571:19 | T | -| main.rs:2593:15:2593:15 | x | | main.rs:2593:12:2593:12 | T | -| main.rs:2593:26:2595:5 | { ... } | | main.rs:2593:12:2593:12 | T | -| main.rs:2594:9:2594:9 | x | | main.rs:2593:12:2593:12 | T | -| main.rs:2598:13:2598:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2598:13:2598:14 | x1 | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2598:13:2598:14 | x1 | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2598:34:2598:48 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2599:13:2599:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2599:13:2599:14 | x2 | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2599:13:2599:14 | x2 | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2599:18:2599:38 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2600:13:2600:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2600:13:2600:14 | x3 | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2600:13:2600:14 | x3 | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | T | main.rs:2566:5:2566:20 | S1 | -| main.rs:2600:18:2600:32 | ...::assoc_fun(...) | T.T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2601:13:2601:14 | x4 | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2601:13:2601:14 | x4 | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2601:18:2601:48 | ...::method(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2601:18:2601:48 | ...::method(...) | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2601:35:2601:47 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2601:35:2601:47 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2602:13:2602:14 | x5 | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2602:13:2602:14 | x5 | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2602:18:2602:42 | ...::method(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2602:18:2602:42 | ...::method(...) | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2602:29:2602:41 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2602:29:2602:41 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2603:13:2603:14 | x6 | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2603:13:2603:14 | x6 | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2603:18:2603:45 | S4::<...>(...) | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2603:18:2603:45 | S4::<...>(...) | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2603:27:2603:44 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2604:13:2604:14 | x7 | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2604:13:2604:14 | x7 | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2604:18:2604:23 | S4(...) | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2604:18:2604:23 | S4(...) | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2604:21:2604:22 | S2 | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2605:13:2605:14 | x8 | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2605:13:2605:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2605:18:2605:22 | S4(...) | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2605:18:2605:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2605:21:2605:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2606:13:2606:14 | x9 | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2606:13:2606:14 | x9 | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2606:18:2606:34 | S4(...) | | main.rs:2587:5:2587:27 | S4 | -| main.rs:2606:18:2606:34 | S4(...) | T4 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2606:21:2606:33 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2607:13:2607:15 | x10 | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2607:13:2607:15 | x10 | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2607:19:2610:9 | S5::<...> {...} | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2607:19:2610:9 | S5::<...> {...} | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2609:20:2609:37 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2611:13:2611:15 | x11 | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2611:13:2611:15 | x11 | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2611:19:2611:34 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2611:19:2611:34 | S5 {...} | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2611:31:2611:32 | S2 | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2612:13:2612:15 | x12 | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2612:13:2612:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2612:19:2612:33 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2612:19:2612:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2612:31:2612:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:13:2613:15 | x13 | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2613:13:2613:15 | x13 | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2613:19:2616:9 | S5 {...} | | main.rs:2589:5:2591:5 | S5 | -| main.rs:2613:19:2616:9 | S5 {...} | T5 | main.rs:2568:5:2569:14 | S2 | -| main.rs:2615:20:2615:32 | ...::default(...) | | main.rs:2568:5:2569:14 | S2 | -| main.rs:2617:13:2617:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2617:19:2617:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2617:30:2617:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:13:2618:15 | x15 | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2618:13:2618:15 | x15 | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2618:19:2618:37 | ...::default(...) | | main.rs:2566:5:2566:20 | S1 | -| main.rs:2618:19:2618:37 | ...::default(...) | T | main.rs:2568:5:2569:14 | S2 | -| main.rs:2627:35:2629:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2627:35:2629:9 | { ... } | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2627:35:2629:9 | { ... } | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2628:13:2628:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2628:13:2628:26 | TupleExpr | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2628:13:2628:26 | TupleExpr | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2628:14:2628:18 | S1 {...} | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2628:21:2628:25 | S1 {...} | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2630:16:2630:19 | SelfParam | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2634:13:2634:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2634:13:2634:13 | a | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2634:13:2634:13 | a | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2634:17:2634:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2634:17:2634:30 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2634:17:2634:30 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2635:17:2635:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2635:17:2635:17 | b | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2635:17:2635:17 | b | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2635:21:2635:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2635:21:2635:34 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2635:21:2635:34 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:13:2636:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2636:13:2636:18 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:13:2636:18 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:14:2636:14 | c | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:17:2636:17 | d | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:22:2636:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2636:22:2636:35 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2636:22:2636:35 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:13:2637:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2637:13:2637:22 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:13:2637:22 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:18:2637:18 | e | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:21:2637:21 | f | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:26:2637:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2637:26:2637:39 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2637:26:2637:39 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:13:2638:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2638:13:2638:26 | TuplePat | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:13:2638:26 | TuplePat | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:18:2638:18 | g | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:25:2638:25 | h | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:30:2638:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2638:30:2638:43 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2638:30:2638:43 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2640:9:2640:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2640:9:2640:9 | a | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2640:9:2640:9 | a | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2640:9:2640:11 | a.0 | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2641:9:2641:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2641:9:2641:9 | b | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2641:9:2641:9 | b | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2641:9:2641:11 | b.1 | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2642:9:2642:9 | c | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2643:9:2643:9 | d | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2644:9:2644:9 | e | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2645:9:2645:9 | f | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2646:9:2646:9 | g | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2647:9:2647:9 | h | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2652:13:2652:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2652:17:2652:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2653:13:2653:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2653:17:2653:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2654:13:2654:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2654:13:2654:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2654:13:2654:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2654:20:2654:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2654:20:2654:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2654:20:2654:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2654:21:2654:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2654:24:2654:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2655:13:2655:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2655:22:2655:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2655:22:2655:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2655:22:2655:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2655:22:2655:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2656:13:2656:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2656:23:2656:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2656:23:2656:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2656:23:2656:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2656:23:2656:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2658:13:2658:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2658:13:2658:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:13:2658:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:20:2658:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2658:20:2658:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:20:2658:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2658:20:2658:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:20:2658:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:21:2658:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:24:2658:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:15:2659:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2659:15:2659:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:15:2659:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:13:2660:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2660:13:2660:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:13:2660:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:14:2660:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:17:2660:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:30:2660:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2660:30:2660:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2660:30:2660:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2660:30:2660:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2661:13:2661:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2661:13:2661:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:13:2661:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:25:2661:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2661:25:2661:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2661:25:2661:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2661:25:2661:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2663:13:2663:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:17:2663:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2663:17:2663:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:17:2663:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2663:17:2663:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2665:13:2665:13 | y | | file://:0:0:0:0 | & | -| main.rs:2665:13:2665:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2665:13:2665:13 | y | &T.0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2665:13:2665:13 | y | &T.1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2665:17:2665:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2665:17:2665:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2665:17:2665:31 | &... | &T.0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2665:17:2665:31 | &... | &T.1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2665:18:2665:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2665:18:2665:31 | ...::get_pair(...) | 0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2665:18:2665:31 | ...::get_pair(...) | 1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2666:9:2666:9 | y | | file://:0:0:0:0 | & | -| main.rs:2666:9:2666:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2666:9:2666:9 | y | &T.0(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2666:9:2666:9 | y | &T.1(2) | main.rs:2623:5:2624:16 | S1 | -| main.rs:2666:9:2666:11 | y.0 | | main.rs:2623:5:2624:16 | S1 | -| main.rs:2673:13:2673:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2673:13:2673:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2673:13:2673:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2673:27:2673:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2673:27:2673:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2673:27:2673:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2673:36:2673:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2676:15:2676:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2676:15:2676:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2676:15:2676:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:13:2677:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2677:13:2677:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2677:13:2677:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:17:2677:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:26:2678:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2678:26:2678:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2678:26:2678:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2678:26:2678:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2680:13:2680:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2680:13:2680:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2680:13:2680:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2682:26:2682:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2682:26:2682:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2682:26:2682:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2682:26:2682:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2687:13:2687:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2687:13:2687:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2687:13:2687:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2687:13:2687:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2687:13:2687:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2687:26:2687:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2687:26:2687:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2687:26:2687:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2687:26:2687:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2687:26:2687:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2687:35:2687:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2687:35:2687:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2687:35:2687:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2687:44:2687:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2688:15:2688:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2688:15:2688:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:15:2688:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2688:15:2688:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2688:15:2688:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:13:2689:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2689:13:2689:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:13:2689:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2689:13:2689:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2689:13:2689:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2691:26:2691:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2691:26:2691:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2691:26:2691:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2691:26:2691:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2703:36:2705:9 | { ... } | | main.rs:2700:5:2700:22 | Path | -| main.rs:2704:13:2704:19 | Path {...} | | main.rs:2700:5:2700:22 | Path | -| main.rs:2707:29:2707:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2707:29:2707:33 | SelfParam | &T | main.rs:2700:5:2700:22 | Path | -| main.rs:2707:59:2709:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2707:59:2709:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2707:59:2709:9 | { ... } | T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2708:13:2708:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2708:13:2708:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2708:13:2708:30 | Ok(...) | T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2708:16:2708:29 | ...::new(...) | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2715:39:2717:9 | { ... } | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2716:13:2716:22 | PathBuf {...} | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2725:18:2725:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2725:18:2725:22 | SelfParam | &T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2725:34:2729:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2725:34:2729:9 | { ... } | &T | main.rs:2700:5:2700:22 | Path | -| main.rs:2727:33:2727:43 | ...::new(...) | | main.rs:2700:5:2700:22 | Path | -| main.rs:2728:13:2728:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2728:13:2728:17 | &path | &T | main.rs:2700:5:2700:22 | Path | -| main.rs:2728:14:2728:17 | path | | main.rs:2700:5:2700:22 | Path | -| main.rs:2733:13:2733:17 | path1 | | main.rs:2700:5:2700:22 | Path | -| main.rs:2733:21:2733:31 | ...::new(...) | | main.rs:2700:5:2700:22 | Path | -| main.rs:2734:13:2734:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2734:13:2734:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2734:13:2734:17 | path2 | T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2734:21:2734:25 | path1 | | main.rs:2700:5:2700:22 | Path | -| main.rs:2734:21:2734:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2734:21:2734:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2734:21:2734:40 | path1.canonicalize() | T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2735:13:2735:17 | path3 | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2735:21:2735:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2735:21:2735:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2735:21:2735:25 | path2 | T | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2735:21:2735:34 | path2.unwrap() | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2737:13:2737:20 | pathbuf1 | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2737:24:2737:37 | ...::new(...) | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2738:24:2738:31 | pathbuf1 | | main.rs:2712:5:2712:25 | PathBuf | -| main.rs:2745:14:2745:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2745:14:2745:18 | SelfParam | &T | main.rs:2744:5:2746:5 | Self [trait MyTrait] | -| main.rs:2752:14:2752:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2752:14:2752:18 | SelfParam | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2752:14:2752:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2752:28:2754:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2753:13:2753:16 | self | | file://:0:0:0:0 | & | -| main.rs:2753:13:2753:16 | self | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2753:13:2753:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2753:13:2753:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2758:14:2758:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2758:14:2758:18 | SelfParam | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2758:14:2758:18 | SelfParam | &T.T | main.rs:2748:5:2749:19 | S | -| main.rs:2758:14:2758:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2758:28:2760:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:13:2759:16 | self | | file://:0:0:0:0 | & | -| main.rs:2759:13:2759:16 | self | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2759:13:2759:16 | self | &T.T | main.rs:2748:5:2749:19 | S | -| main.rs:2759:13:2759:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:13:2759:18 | self.0 | | main.rs:2748:5:2749:19 | S | -| main.rs:2759:13:2759:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:13:2759:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2764:15:2764:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2764:15:2764:19 | SelfParam | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2764:15:2764:19 | SelfParam | &T.T | main.rs:2763:10:2763:16 | T | -| main.rs:2764:33:2766:9 | { ... } | | main.rs:2748:5:2749:19 | S | -| main.rs:2764:33:2766:9 | { ... } | T | main.rs:2748:5:2749:19 | S | -| main.rs:2764:33:2766:9 | { ... } | T.T | main.rs:2763:10:2763:16 | T | -| main.rs:2765:13:2765:24 | S(...) | | main.rs:2748:5:2749:19 | S | -| main.rs:2765:13:2765:24 | S(...) | T | main.rs:2748:5:2749:19 | S | -| main.rs:2765:13:2765:24 | S(...) | T.T | main.rs:2763:10:2763:16 | T | -| main.rs:2765:15:2765:23 | S(...) | | main.rs:2748:5:2749:19 | S | -| main.rs:2765:15:2765:23 | S(...) | T | main.rs:2763:10:2763:16 | T | -| main.rs:2765:17:2765:20 | self | | file://:0:0:0:0 | & | -| main.rs:2765:17:2765:20 | self | &T | main.rs:2748:5:2749:19 | S | -| main.rs:2765:17:2765:20 | self | &T.T | main.rs:2763:10:2763:16 | T | -| main.rs:2765:17:2765:22 | self.0 | | main.rs:2763:10:2763:16 | T | -| main.rs:2769:14:2769:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2769:48:2786:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2769:48:2786:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2769:48:2786:5 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2769:48:2786:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2770:13:2770:13 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2770:13:2770:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2770:17:2775:9 | if b {...} else {...} | | main.rs:2748:5:2749:19 | S | -| main.rs:2770:17:2775:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2770:20:2770:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2770:22:2773:9 | { ... } | | main.rs:2748:5:2749:19 | S | -| main.rs:2770:22:2773:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2771:17:2771:17 | y | | main.rs:2748:5:2749:19 | S | -| main.rs:2771:17:2771:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2771:21:2771:38 | ...::default(...) | | main.rs:2748:5:2749:19 | S | -| main.rs:2771:21:2771:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2772:13:2772:13 | y | | main.rs:2748:5:2749:19 | S | -| main.rs:2772:13:2772:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2773:16:2775:9 | { ... } | | main.rs:2748:5:2749:19 | S | -| main.rs:2773:16:2775:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2774:13:2774:16 | S(...) | | main.rs:2748:5:2749:19 | S | -| main.rs:2774:13:2774:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2774:15:2774:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2779:13:2779:13 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2779:13:2779:13 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2779:13:2779:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2779:13:2779:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2779:17:2779:20 | S(...) | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2779:17:2779:20 | S(...) | | main.rs:2748:5:2749:19 | S | -| main.rs:2779:17:2779:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2779:17:2779:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2779:19:2779:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:9:2785:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2780:9:2785:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T | main.rs:2748:5:2749:19 | S | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T | main.rs:2748:5:2749:19 | S | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:9:2785:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:12:2780:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2780:14:2783:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2780:14:2783:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2780:14:2783:9 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2780:14:2783:9 | { ... } | T | main.rs:2748:5:2749:19 | S | -| main.rs:2780:14:2783:9 | { ... } | T.T | main.rs:2748:5:2749:19 | S | -| main.rs:2780:14:2783:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2780:14:2783:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:17:2781:17 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2781:17:2781:17 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2781:17:2781:17 | x | T | main.rs:2748:5:2749:19 | S | -| main.rs:2781:17:2781:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:17:2781:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:21:2781:21 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2781:21:2781:21 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2781:21:2781:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:21:2781:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:21:2781:26 | x.m2() | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2781:21:2781:26 | x.m2() | | main.rs:2748:5:2749:19 | S | -| main.rs:2781:21:2781:26 | x.m2() | T | main.rs:2748:5:2749:19 | S | -| main.rs:2781:21:2781:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2781:21:2781:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:13:2782:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2782:13:2782:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2782:13:2782:23 | ...::new(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2782:13:2782:23 | ...::new(...) | T | main.rs:2748:5:2749:19 | S | -| main.rs:2782:13:2782:23 | ...::new(...) | T.T | main.rs:2748:5:2749:19 | S | -| main.rs:2782:13:2782:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:13:2782:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:22:2782:22 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2782:22:2782:22 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2782:22:2782:22 | x | T | main.rs:2748:5:2749:19 | S | -| main.rs:2782:22:2782:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2782:22:2782:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:16:2785:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2783:16:2785:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2783:16:2785:9 | { ... } | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2783:16:2785:9 | { ... } | T | main.rs:2748:5:2749:19 | S | -| main.rs:2783:16:2785:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2783:16:2785:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:13:2784:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2784:13:2784:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2784:13:2784:23 | ...::new(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2784:13:2784:23 | ...::new(...) | T | main.rs:2748:5:2749:19 | S | -| main.rs:2784:13:2784:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:13:2784:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:22:2784:22 | x | | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2784:22:2784:22 | x | | main.rs:2748:5:2749:19 | S | -| main.rs:2784:22:2784:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2784:22:2784:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:5:2796:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2797:5:2797:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2797:20:2797:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2797:41:2797:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2814:5:2814:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2827:5:2827:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2827:5:2827:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2827:5:2827:20 | ...::f(...) | T | main.rs:2744:5:2746:5 | dyn MyTrait | -| main.rs:2827:5:2827:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:16:2827:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1502:18:1502:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1502:18:1502:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1502:26:1502:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1502:26:1502:41 | ...::m2(...) | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1502:38:1502:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1502:38:1502:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1502:38:1502:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1502:39:1502:40 | x3 | | main.rs:1448:5:1449:19 | S | +| main.rs:1502:39:1502:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1503:18:1503:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1503:18:1503:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1503:26:1503:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1503:26:1503:41 | ...::m3(...) | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1503:38:1503:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1503:38:1503:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1503:38:1503:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1503:39:1503:40 | x3 | | main.rs:1448:5:1449:19 | S | +| main.rs:1503:39:1503:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1505:13:1505:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1505:13:1505:14 | x4 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1505:13:1505:14 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1505:18:1505:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1505:18:1505:23 | &... | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1505:18:1505:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1505:19:1505:23 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1505:19:1505:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1505:21:1505:22 | S2 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1507:18:1507:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1507:18:1507:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1507:18:1507:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1507:18:1507:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1507:26:1507:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1507:26:1507:27 | x4 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1507:26:1507:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1507:26:1507:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1507:26:1507:32 | x4.m2() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1508:18:1508:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1508:18:1508:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1508:18:1508:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1508:18:1508:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1508:26:1508:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1508:26:1508:27 | x4 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1508:26:1508:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1508:26:1508:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1508:26:1508:32 | x4.m3() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1510:13:1510:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1510:13:1510:14 | x5 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1510:13:1510:14 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1510:18:1510:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1510:18:1510:23 | &... | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1510:18:1510:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1510:19:1510:23 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1510:19:1510:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1510:21:1510:22 | S2 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1512:18:1512:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1512:18:1512:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1512:18:1512:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1512:18:1512:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1512:26:1512:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1512:26:1512:27 | x5 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1512:26:1512:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1512:26:1512:32 | x5.m1() | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1513:18:1513:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1513:18:1513:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1513:18:1513:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1513:18:1513:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1513:26:1513:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1513:26:1513:27 | x5 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1513:26:1513:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1513:26:1513:29 | x5.0 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1515:13:1515:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1515:13:1515:14 | x6 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1515:13:1515:14 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1515:18:1515:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1515:18:1515:23 | &... | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1515:18:1515:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1515:19:1515:23 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1515:19:1515:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1515:21:1515:22 | S2 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1518:18:1518:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1518:18:1518:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1518:18:1518:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1518:18:1518:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1518:26:1518:30 | (...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1518:26:1518:30 | (...) | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1518:26:1518:35 | ... .m1() | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1518:27:1518:29 | * ... | | main.rs:1448:5:1449:19 | S | +| main.rs:1518:27:1518:29 | * ... | T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1518:28:1518:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1518:28:1518:29 | x6 | &T | main.rs:1448:5:1449:19 | S | +| main.rs:1518:28:1518:29 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1520:13:1520:14 | x7 | | main.rs:1448:5:1449:19 | S | +| main.rs:1520:13:1520:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1520:13:1520:14 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1520:18:1520:23 | S(...) | | main.rs:1448:5:1449:19 | S | +| main.rs:1520:18:1520:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1520:18:1520:23 | S(...) | T.&T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1520:20:1520:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1520:20:1520:22 | &S2 | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1520:21:1520:22 | S2 | | main.rs:1451:5:1452:14 | S2 | +| main.rs:1523:13:1523:13 | t | | file://:0:0:0:0 | & | +| main.rs:1523:13:1523:13 | t | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1523:17:1523:18 | x7 | | main.rs:1448:5:1449:19 | S | +| main.rs:1523:17:1523:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1523:17:1523:18 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1523:17:1523:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1523:17:1523:23 | x7.m1() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1524:18:1524:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1524:18:1524:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1524:26:1524:27 | x7 | | main.rs:1448:5:1449:19 | S | +| main.rs:1524:26:1524:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1524:26:1524:27 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | +| main.rs:1526:13:1526:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1526:26:1526:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1526:26:1526:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1526:26:1526:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1530:13:1530:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1530:13:1530:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1530:17:1530:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1530:17:1530:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1530:17:1530:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1532:13:1532:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1532:13:1532:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1532:24:1532:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1532:24:1532:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1532:25:1532:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:13:1534:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:17:1534:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1534:17:1534:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1534:17:1534:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1535:18:1535:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1535:18:1535:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1535:26:1535:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1538:13:1538:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1538:13:1538:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1538:24:1538:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1538:24:1538:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1538:25:1538:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:13:1539:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1539:17:1539:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1539:17:1539:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1539:17:1539:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1540:18:1540:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1540:18:1540:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1540:26:1540:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:16:1547:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1547:16:1547:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | +| main.rs:1550:16:1550:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1550:16:1550:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | +| main.rs:1550:32:1552:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1550:32:1552:9 | { ... } | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | +| main.rs:1551:13:1551:16 | self | | file://:0:0:0:0 | & | +| main.rs:1551:13:1551:16 | self | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | +| main.rs:1551:13:1551:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1551:13:1551:22 | self.foo() | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | +| main.rs:1559:16:1559:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1559:16:1559:20 | SelfParam | &T | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1559:36:1561:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1559:36:1561:9 | { ... } | &T | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1560:13:1560:16 | self | | file://:0:0:0:0 | & | +| main.rs:1560:13:1560:16 | self | &T | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1565:13:1565:13 | x | | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1565:17:1565:24 | MyStruct | | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1566:9:1566:9 | x | | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1566:9:1566:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1566:9:1566:15 | x.bar() | &T | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1576:16:1576:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1576:16:1576:20 | SelfParam | &T | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1576:16:1576:20 | SelfParam | &T.T | main.rs:1575:10:1575:10 | T | +| main.rs:1576:32:1578:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1576:32:1578:9 | { ... } | &T | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1576:32:1578:9 | { ... } | &T.T | main.rs:1575:10:1575:10 | T | +| main.rs:1577:13:1577:16 | self | | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | self | &T | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1577:13:1577:16 | self | &T.T | main.rs:1575:10:1575:10 | T | +| main.rs:1582:13:1582:13 | x | | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1582:13:1582:13 | x | T | main.rs:1571:5:1571:13 | S | +| main.rs:1582:17:1582:27 | MyStruct(...) | | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1582:17:1582:27 | MyStruct(...) | T | main.rs:1571:5:1571:13 | S | +| main.rs:1582:26:1582:26 | S | | main.rs:1571:5:1571:13 | S | +| main.rs:1583:9:1583:9 | x | | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1583:9:1583:9 | x | T | main.rs:1571:5:1571:13 | S | +| main.rs:1583:9:1583:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1583:9:1583:15 | x.foo() | &T | main.rs:1573:5:1573:26 | MyStruct | +| main.rs:1583:9:1583:15 | x.foo() | &T.T | main.rs:1571:5:1571:13 | S | +| main.rs:1594:17:1594:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1594:17:1594:25 | SelfParam | &T | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1595:13:1595:16 | self | | file://:0:0:0:0 | & | +| main.rs:1595:13:1595:16 | self | &T | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1595:13:1595:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1595:13:1595:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1595:25:1595:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1595:26:1595:29 | self | | file://:0:0:0:0 | & | +| main.rs:1595:26:1595:29 | self | &T | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1595:26:1595:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1602:15:1602:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1602:15:1602:19 | SelfParam | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1602:31:1604:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1602:31:1604:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1603:13:1603:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:19 | &... | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1603:13:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1603:14:1603:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1603:14:1603:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1603:14:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1603:14:1603:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1603:15:1603:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1603:15:1603:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1603:15:1603:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1603:16:1603:19 | self | | file://:0:0:0:0 | & | +| main.rs:1603:16:1603:19 | self | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1606:15:1606:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1606:15:1606:25 | SelfParam | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1606:37:1608:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1606:37:1608:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1607:13:1607:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1607:13:1607:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1607:13:1607:19 | &... | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1607:13:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1607:13:1607:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1607:13:1607:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1607:14:1607:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1607:14:1607:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1607:14:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1607:14:1607:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1607:15:1607:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1607:15:1607:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1607:15:1607:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1607:16:1607:19 | self | | file://:0:0:0:0 | & | +| main.rs:1607:16:1607:19 | self | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1610:15:1610:15 | x | | file://:0:0:0:0 | & | +| main.rs:1610:15:1610:15 | x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1610:34:1612:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1610:34:1612:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1611:13:1611:13 | x | | file://:0:0:0:0 | & | +| main.rs:1611:13:1611:13 | x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1614:15:1614:15 | x | | file://:0:0:0:0 | & | +| main.rs:1614:15:1614:15 | x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1614:34:1616:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1614:34:1616:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1615:13:1615:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1615:13:1615:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1615:13:1615:16 | &... | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1615:13:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1615:13:1615:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1615:13:1615:16 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1615:14:1615:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1615:14:1615:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1615:14:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1615:14:1615:16 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1615:15:1615:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1615:15:1615:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1615:15:1615:16 | &x | &T.&T | main.rs:1599:5:1599:13 | S | +| main.rs:1615:16:1615:16 | x | | file://:0:0:0:0 | & | +| main.rs:1615:16:1615:16 | x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1620:13:1620:13 | x | | main.rs:1599:5:1599:13 | S | +| main.rs:1620:17:1620:20 | S {...} | | main.rs:1599:5:1599:13 | S | +| main.rs:1621:9:1621:9 | x | | main.rs:1599:5:1599:13 | S | +| main.rs:1621:9:1621:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1621:9:1621:14 | x.f1() | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1622:9:1622:9 | x | | main.rs:1599:5:1599:13 | S | +| main.rs:1622:9:1622:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1622:9:1622:14 | x.f2() | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1623:9:1623:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1623:9:1623:17 | ...::f3(...) | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1623:15:1623:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1623:15:1623:16 | &x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1623:16:1623:16 | x | | main.rs:1599:5:1599:13 | S | +| main.rs:1625:13:1625:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1625:17:1625:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1625:18:1625:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1625:18:1625:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1625:19:1625:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1625:19:1625:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1625:19:1625:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1625:20:1625:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1625:20:1625:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1625:21:1625:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1629:17:1629:20 | flag | | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1629:24:1629:41 | ...::default(...) | | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1630:22:1630:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1630:22:1630:30 | &mut flag | &T | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1630:27:1630:30 | flag | | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1631:18:1631:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1631:18:1631:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1631:18:1631:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1631:18:1631:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1631:26:1631:29 | flag | | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1646:43:1649:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1646:43:1649:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1646:43:1649:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1647:13:1647:13 | x | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1647:17:1647:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1647:17:1647:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1647:17:1647:31 | TryExpr | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1647:28:1647:29 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1648:9:1648:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1648:9:1648:22 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1648:9:1648:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1648:20:1648:21 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1653:46:1657:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1653:46:1657:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1653:46:1657:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1654:13:1654:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1654:13:1654:13 | x | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1654:17:1654:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1654:17:1654:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1654:28:1654:29 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1655:13:1655:13 | y | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1655:17:1655:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1655:17:1655:17 | x | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1655:17:1655:18 | TryExpr | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1656:9:1656:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1656:9:1656:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1656:9:1656:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1656:20:1656:21 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1661:40:1666:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1661:40:1666:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1661:40:1666:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1662:13:1662:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1662:13:1662:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1662:13:1662:13 | x | T.T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1662:17:1662:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1662:17:1662:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1662:17:1662:42 | ...::Ok(...) | T.T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1662:28:1662:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1662:28:1662:41 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1662:39:1662:40 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1664:17:1664:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1664:17:1664:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1664:17:1664:17 | x | T.T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1664:17:1664:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1664:17:1664:18 | TryExpr | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1664:17:1664:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1664:24:1664:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1664:24:1664:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1665:9:1665:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1665:9:1665:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1665:9:1665:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1665:20:1665:21 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1670:30:1670:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1670:30:1670:34 | input | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1670:30:1670:34 | input | T | main.rs:1670:20:1670:27 | T | +| main.rs:1670:69:1677:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1670:69:1677:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1670:69:1677:5 | { ... } | T | main.rs:1670:20:1670:27 | T | +| main.rs:1671:13:1671:17 | value | | main.rs:1670:20:1670:27 | T | +| main.rs:1671:21:1671:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1671:21:1671:25 | input | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1671:21:1671:25 | input | T | main.rs:1670:20:1670:27 | T | +| main.rs:1671:21:1671:26 | TryExpr | | main.rs:1670:20:1670:27 | T | +| main.rs:1672:22:1672:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1672:22:1672:38 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1672:22:1672:38 | ...::Ok(...) | T | main.rs:1670:20:1670:27 | T | +| main.rs:1672:22:1675:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1672:22:1675:10 | ... .and_then(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1672:33:1672:37 | value | | main.rs:1670:20:1670:27 | T | +| main.rs:1672:49:1675:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output).E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1672:53:1675:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1672:53:1675:9 | { ... } | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1673:22:1673:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1673:22:1673:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1673:22:1673:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1673:22:1673:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1676:9:1676:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1676:9:1676:23 | ...::Err(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1676:9:1676:23 | ...::Err(...) | T | main.rs:1670:20:1670:27 | T | +| main.rs:1676:21:1676:22 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:16:1681:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1681:16:1681:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:16:1681:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:27:1681:32 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:37:1681:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1681:37:1681:52 | try_same_error(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:37:1681:52 | try_same_error(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1682:22:1682:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1682:22:1682:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1682:22:1682:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1682:22:1682:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1682:30:1682:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1685:16:1685:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1685:16:1685:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1685:16:1685:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1685:27:1685:32 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1685:37:1685:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1685:37:1685:55 | try_convert_error(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1685:37:1685:55 | try_convert_error(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1686:22:1686:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1686:22:1686:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1686:22:1686:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1686:22:1686:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1686:30:1686:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1689:16:1689:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1689:16:1689:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1689:16:1689:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1689:27:1689:32 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1689:37:1689:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1689:37:1689:49 | try_chained(...) | E | main.rs:1641:5:1642:14 | S2 | +| main.rs:1689:37:1689:49 | try_chained(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1690:22:1690:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1690:22:1690:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1690:22:1690:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1690:22:1690:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1690:30:1690:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:16:1693:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:16:1693:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:16:1693:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:27:1693:32 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:37:1693:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:37:1693:63 | try_complex(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:37:1693:63 | try_complex(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:49:1693:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:49:1693:62 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:49:1693:62 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:60:1693:61 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1694:22:1694:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1694:22:1694:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1694:22:1694:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1694:22:1694:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1694:30:1694:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1701:13:1701:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1701:22:1701:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1702:13:1702:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1702:17:1702:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:13:1703:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:17:1703:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:17:1703:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1703:21:1703:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1704:13:1704:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1704:17:1704:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1704:17:1704:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1705:13:1705:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1705:17:1705:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1706:13:1706:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1706:13:1706:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1706:21:1706:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1706:21:1706:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1707:13:1707:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1707:17:1707:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1708:13:1708:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1708:17:1708:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1709:13:1709:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1709:17:1709:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1716:13:1716:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1716:17:1716:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1716:17:1716:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1716:25:1716:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:13:1717:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:17:1717:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:17:1717:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:25:1717:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1719:17:1719:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1720:13:1720:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1720:20:1720:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1720:20:1720:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1720:26:1720:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:12:1721:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1722:17:1722:17 | z | | file://:0:0:0:0 | () | +| main.rs:1722:21:1722:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1722:22:1722:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1722:22:1722:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1722:26:1722:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1724:13:1724:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1724:13:1724:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1724:17:1724:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1726:9:1726:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1740:30:1742:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1741:13:1741:31 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1748:16:1748:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1748:22:1748:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1748:41:1753:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1749:13:1752:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1750:20:1750:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1750:20:1750:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1750:20:1750:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1750:29:1750:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1750:29:1750:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1751:20:1751:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1751:20:1751:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1751:20:1751:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1751:29:1751:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1751:29:1751:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:23:1758:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1758:23:1758:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1758:34:1758:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1759:13:1759:16 | self | | file://:0:0:0:0 | & | +| main.rs:1759:13:1759:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1759:13:1759:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1759:13:1759:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1759:23:1759:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1759:23:1759:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:13:1760:16 | self | | file://:0:0:0:0 | & | +| main.rs:1760:13:1760:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1760:13:1760:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:13:1760:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1760:23:1760:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1760:23:1760:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:16:1766:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1766:22:1766:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1766:41:1771:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1767:13:1770:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1768:20:1768:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1768:20:1768:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:20:1768:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:29:1768:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1768:29:1768:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1769:20:1769:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1769:20:1769:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1769:20:1769:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1769:29:1769:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1769:29:1769:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1776:23:1776:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1776:23:1776:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1776:34:1776:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1777:13:1777:16 | self | | file://:0:0:0:0 | & | +| main.rs:1777:13:1777:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1777:13:1777:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:13:1777:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1777:23:1777:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1777:23:1777:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:13:1778:16 | self | | file://:0:0:0:0 | & | +| main.rs:1778:13:1778:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1778:13:1778:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:13:1778:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1778:23:1778:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1778:23:1778:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:16:1784:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1784:22:1784:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1784:41:1789:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1785:13:1788:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1786:20:1786:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1786:20:1786:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1786:20:1786:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1786:29:1786:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1786:29:1786:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:20:1787:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1787:20:1787:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:20:1787:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:29:1787:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1787:29:1787:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1793:23:1793:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1793:23:1793:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1793:34:1793:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1794:13:1794:16 | self | | file://:0:0:0:0 | & | +| main.rs:1794:13:1794:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1794:13:1794:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1794:13:1794:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1794:23:1794:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1794:23:1794:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:13:1795:16 | self | | file://:0:0:0:0 | & | +| main.rs:1795:13:1795:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1795:13:1795:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:13:1795:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1795:23:1795:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1795:23:1795:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:16:1801:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1801:22:1801:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1801:41:1806:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1802:13:1805:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1803:20:1803:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1803:20:1803:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:20:1803:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:29:1803:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1803:29:1803:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:20:1804:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1804:20:1804:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:20:1804:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:29:1804:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1804:29:1804:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1810:23:1810:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1810:23:1810:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1810:34:1810:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | +| main.rs:1811:13:1811:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1811:13:1811:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1811:13:1811:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1811:23:1811:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1811:23:1811:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1812:13:1812:16 | self | | file://:0:0:0:0 | & | +| main.rs:1812:13:1812:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1812:13:1812:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1812:13:1812:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1812:23:1812:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1812:23:1812:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1818:16:1818:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1818:22:1818:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1818:41:1823:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1819:13:1822:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1820:20:1820:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1820:20:1820:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1820:20:1820:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1820:29:1820:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1820:29:1820:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1821:20:1821:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1821:20:1821:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1821:20:1821:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1821:29:1821:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1821:29:1821:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1827:23:1827:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1827:23:1827:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1827:34:1827:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1828:13:1828:16 | self | | file://:0:0:0:0 | & | +| main.rs:1828:13:1828:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1828:13:1828:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1828:13:1828:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1828:23:1828:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1828:23:1828:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1829:13:1829:16 | self | | file://:0:0:0:0 | & | +| main.rs:1829:13:1829:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1829:13:1829:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1829:13:1829:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1829:23:1829:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1829:23:1829:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1835:19:1835:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1835:25:1835:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1835:44:1840:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1836:13:1839:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1837:20:1837:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1837:20:1837:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1837:20:1837:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1837:29:1837:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1837:29:1837:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1838:20:1838:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1838:20:1838:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1838:20:1838:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1838:29:1838:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1838:29:1838:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1844:26:1844:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1844:26:1844:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1844:37:1844:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | +| main.rs:1845:13:1845:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1845:13:1845:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1845:13:1845:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1845:23:1845:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1845:23:1845:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1846:13:1846:16 | self | | file://:0:0:0:0 | & | +| main.rs:1846:13:1846:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1846:13:1846:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1846:13:1846:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1846:23:1846:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1846:23:1846:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1852:18:1852:21 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1852:24:1852:26 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1852:43:1857:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1853:13:1856:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1854:20:1854:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1854:20:1854:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1854:20:1854:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1854:29:1854:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1854:29:1854:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1855:20:1855:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1855:20:1855:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1855:20:1855:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1855:29:1855:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1855:29:1855:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:25:1861:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1861:25:1861:33 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1861:36:1861:38 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | +| main.rs:1862:13:1862:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1862:13:1862:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1862:23:1862:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1862:23:1862:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1863:13:1863:16 | self | | file://:0:0:0:0 | & | +| main.rs:1863:13:1863:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1863:13:1863:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1863:13:1863:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1863:23:1863:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1863:23:1863:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:19:1869:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1869:25:1869:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1869:44:1874:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1870:13:1873:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1871:20:1871:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1871:20:1871:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:20:1871:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1871:29:1871:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1871:29:1871:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:20:1872:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1872:20:1872:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:20:1872:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1872:29:1872:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1872:29:1872:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1878:26:1878:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1878:26:1878:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1878:37:1878:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1879:13:1879:16 | self | | file://:0:0:0:0 | & | +| main.rs:1879:13:1879:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1879:13:1879:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:13:1879:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1879:23:1879:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1879:23:1879:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1880:13:1880:16 | self | | file://:0:0:0:0 | & | +| main.rs:1880:13:1880:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1880:13:1880:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1880:13:1880:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1880:23:1880:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1880:23:1880:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1886:16:1886:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1886:22:1886:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1886:40:1891:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1887:13:1890:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1888:20:1888:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1888:20:1888:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:20:1888:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:30:1888:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1889:20:1889:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1889:20:1889:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1889:20:1889:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1889:30:1889:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1895:23:1895:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1895:23:1895:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1895:34:1895:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1896:13:1896:16 | self | | file://:0:0:0:0 | & | +| main.rs:1896:13:1896:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1896:13:1896:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:13:1896:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1896:24:1896:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1897:13:1897:16 | self | | file://:0:0:0:0 | & | +| main.rs:1897:13:1897:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1897:13:1897:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:13:1897:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1897:24:1897:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1903:16:1903:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1903:22:1903:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1903:40:1908:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1904:13:1907:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1905:20:1905:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1905:20:1905:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:20:1905:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:30:1905:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1906:20:1906:23 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1906:20:1906:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:20:1906:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:30:1906:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1912:23:1912:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1912:23:1912:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1912:34:1912:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1913:13:1913:16 | self | | file://:0:0:0:0 | & | +| main.rs:1913:13:1913:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1913:13:1913:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:13:1913:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1913:24:1913:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1914:13:1914:16 | self | | file://:0:0:0:0 | & | +| main.rs:1914:13:1914:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1914:13:1914:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:13:1914:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1914:24:1914:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1920:16:1920:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1920:30:1925:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1921:13:1924:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1922:20:1922:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:21:1922:24 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1922:21:1922:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1923:20:1923:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1923:21:1923:24 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1923:21:1923:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:16:1930:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1930:30:1935:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1931:13:1934:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1932:20:1932:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1932:21:1932:24 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1932:21:1932:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1933:20:1933:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1933:21:1933:24 | self | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1933:21:1933:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:15:1939:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1939:15:1939:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1939:22:1939:26 | other | | file://:0:0:0:0 | & | +| main.rs:1939:22:1939:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1939:44:1941:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:13:1940:16 | self | | file://:0:0:0:0 | & | +| main.rs:1940:13:1940:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1940:13:1940:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1940:13:1940:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:13:1940:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:23:1940:27 | other | | file://:0:0:0:0 | & | +| main.rs:1940:23:1940:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1940:23:1940:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1940:34:1940:37 | self | | file://:0:0:0:0 | & | +| main.rs:1940:34:1940:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1940:34:1940:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1940:34:1940:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1940:44:1940:48 | other | | file://:0:0:0:0 | & | +| main.rs:1940:44:1940:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1940:44:1940:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:15:1943:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1943:15:1943:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1943:22:1943:26 | other | | file://:0:0:0:0 | & | +| main.rs:1943:22:1943:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1943:44:1945:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:13:1944:16 | self | | file://:0:0:0:0 | & | +| main.rs:1944:13:1944:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1944:13:1944:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:13:1944:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:13:1944:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:23:1944:27 | other | | file://:0:0:0:0 | & | +| main.rs:1944:23:1944:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1944:23:1944:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:34:1944:37 | self | | file://:0:0:0:0 | & | +| main.rs:1944:34:1944:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1944:34:1944:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1944:34:1944:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1944:44:1944:48 | other | | file://:0:0:0:0 | & | +| main.rs:1944:44:1944:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1944:44:1944:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1949:24:1949:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1949:24:1949:28 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1949:31:1949:35 | other | | file://:0:0:0:0 | & | +| main.rs:1949:31:1949:35 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1949:75:1951:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1949:75:1951:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1950:13:1950:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1950:14:1950:17 | self | | file://:0:0:0:0 | & | +| main.rs:1950:14:1950:17 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1950:14:1950:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:14:1950:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:23:1950:26 | self | | file://:0:0:0:0 | & | +| main.rs:1950:23:1950:26 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1950:23:1950:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:43:1950:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1950:43:1950:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:44:1950:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:45:1950:49 | other | | file://:0:0:0:0 | & | +| main.rs:1950:45:1950:49 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1950:45:1950:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:45:1950:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1950:55:1950:59 | other | | file://:0:0:0:0 | & | +| main.rs:1950:55:1950:59 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1950:55:1950:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1953:15:1953:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1953:15:1953:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1953:22:1953:26 | other | | file://:0:0:0:0 | & | +| main.rs:1953:22:1953:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1953:44:1955:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1954:13:1954:16 | self | | file://:0:0:0:0 | & | +| main.rs:1954:13:1954:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1954:13:1954:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:13:1954:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1954:13:1954:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1954:22:1954:26 | other | | file://:0:0:0:0 | & | +| main.rs:1954:22:1954:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1954:22:1954:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:33:1954:36 | self | | file://:0:0:0:0 | & | +| main.rs:1954:33:1954:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1954:33:1954:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:33:1954:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1954:42:1954:46 | other | | file://:0:0:0:0 | & | +| main.rs:1954:42:1954:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1954:42:1954:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1957:15:1957:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1957:15:1957:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1957:22:1957:26 | other | | file://:0:0:0:0 | & | +| main.rs:1957:22:1957:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1957:44:1959:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:13:1958:16 | self | | file://:0:0:0:0 | & | +| main.rs:1958:13:1958:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1958:13:1958:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:13:1958:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:13:1958:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:23:1958:27 | other | | file://:0:0:0:0 | & | +| main.rs:1958:23:1958:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1958:23:1958:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:34:1958:37 | self | | file://:0:0:0:0 | & | +| main.rs:1958:34:1958:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1958:34:1958:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1958:34:1958:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1958:44:1958:48 | other | | file://:0:0:0:0 | & | +| main.rs:1958:44:1958:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1958:44:1958:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1961:15:1961:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1961:15:1961:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1961:22:1961:26 | other | | file://:0:0:0:0 | & | +| main.rs:1961:22:1961:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1961:44:1963:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:13:1962:16 | self | | file://:0:0:0:0 | & | +| main.rs:1962:13:1962:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1962:13:1962:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:13:1962:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:13:1962:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:22:1962:26 | other | | file://:0:0:0:0 | & | +| main.rs:1962:22:1962:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1962:22:1962:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:33:1962:36 | self | | file://:0:0:0:0 | & | +| main.rs:1962:33:1962:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1962:33:1962:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:33:1962:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1962:42:1962:46 | other | | file://:0:0:0:0 | & | +| main.rs:1962:42:1962:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1962:42:1962:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:15:1965:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1965:15:1965:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1965:22:1965:26 | other | | file://:0:0:0:0 | & | +| main.rs:1965:22:1965:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1965:44:1967:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1966:13:1966:16 | self | | file://:0:0:0:0 | & | +| main.rs:1966:13:1966:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1966:13:1966:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:13:1966:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1966:13:1966:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1966:23:1966:27 | other | | file://:0:0:0:0 | & | +| main.rs:1966:23:1966:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1966:23:1966:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:34:1966:37 | self | | file://:0:0:0:0 | & | +| main.rs:1966:34:1966:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1966:34:1966:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1966:34:1966:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1966:44:1966:48 | other | | file://:0:0:0:0 | & | +| main.rs:1966:44:1966:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1966:44:1966:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1970:26:1970:26 | a | | main.rs:1970:18:1970:23 | T | +| main.rs:1970:32:1970:32 | b | | main.rs:1970:18:1970:23 | T | +| main.rs:1970:51:1972:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:1971:9:1971:9 | a | | main.rs:1970:18:1970:23 | T | +| main.rs:1971:9:1971:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:1971:13:1971:13 | b | | main.rs:1970:18:1970:23 | T | +| main.rs:1978:13:1978:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1978:22:1978:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1978:23:1978:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1978:23:1978:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1978:31:1978:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:13:1979:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1979:22:1979:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1979:23:1979:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:23:1979:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1979:31:1979:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:13:1980:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1980:22:1980:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1980:23:1980:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1980:23:1980:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1980:30:1980:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:13:1981:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1981:22:1981:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1981:23:1981:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:23:1981:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1981:31:1981:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:13:1982:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1982:22:1982:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1982:23:1982:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:23:1982:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1982:30:1982:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:13:1983:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:22:1983:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:23:1983:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:23:1983:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:32:1983:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:13:1986:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:23:1986:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:23:1986:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:31:1986:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:13:1987:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:23:1987:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:23:1987:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:31:1987:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:13:1988:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:23:1988:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:23:1988:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:31:1988:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:13:1989:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:23:1989:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:23:1989:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:31:1989:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:13:1990:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:23:1990:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:23:1990:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:31:1990:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:39:1991:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:45:1991:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:17:1994:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:34:1994:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:9:1995:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:9:1995:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1995:27:1995:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1997:17:1997:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1997:34:1997:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:9:1998:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:9:1998:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1998:27:1998:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2000:17:2000:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2000:34:2000:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2001:9:2001:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2001:9:2001:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2001:27:2001:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2003:17:2003:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2003:34:2003:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2004:9:2004:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2004:9:2004:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2004:27:2004:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2006:17:2006:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2006:34:2006:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2007:9:2007:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2007:9:2007:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2007:27:2007:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:13:2010:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:26:2010:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:26:2010:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:34:2010:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:13:2011:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:25:2011:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:25:2011:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:33:2011:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:13:2012:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:26:2012:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:26:2012:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:34:2012:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2013:13:2013:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:2013:23:2013:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2013:23:2013:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2013:32:2013:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2014:13:2014:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:2014:23:2014:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2014:23:2014:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2014:32:2014:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:17:2017:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:37:2017:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:9:2018:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:9:2018:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2018:30:2018:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2020:17:2020:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2020:36:2020:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2021:9:2021:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2021:9:2021:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2021:29:2021:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:17:2023:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:37:2023:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:9:2024:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:9:2024:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2024:30:2024:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2026:17:2026:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2026:34:2026:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2027:9:2027:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2027:9:2027:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2027:28:2027:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2029:17:2029:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2029:34:2029:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2030:9:2030:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2030:9:2030:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2030:28:2030:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:13:2032:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:23:2032:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:24:2032:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:13:2033:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:23:2033:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:24:2033:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2036:13:2036:14 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2036:18:2036:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2037:13:2037:14 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2037:18:2037:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:13:2040:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2040:23:2040:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2040:23:2040:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2040:29:2040:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2041:13:2041:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2041:23:2041:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2041:23:2041:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2041:29:2041:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2042:13:2042:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2042:23:2042:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2042:23:2042:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2042:28:2042:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2043:13:2043:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2043:23:2043:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2043:23:2043:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2043:29:2043:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2044:13:2044:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2044:23:2044:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2044:23:2044:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2044:28:2044:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2045:13:2045:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2045:23:2045:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2045:23:2045:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2045:29:2045:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2048:13:2048:20 | vec2_add | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2048:24:2048:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2048:24:2048:30 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2048:29:2048:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2049:13:2049:20 | vec2_sub | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2049:24:2049:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2049:24:2049:30 | ... - ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2049:29:2049:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2050:13:2050:20 | vec2_mul | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2050:24:2050:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2050:24:2050:30 | ... * ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2050:29:2050:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2051:13:2051:20 | vec2_div | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2051:24:2051:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2051:24:2051:30 | ... / ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2051:29:2051:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2052:13:2052:20 | vec2_rem | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2052:24:2052:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2052:24:2052:30 | ... % ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2052:29:2052:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2055:17:2055:31 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2055:35:2055:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2056:9:2056:23 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2056:9:2056:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2056:28:2056:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2058:17:2058:31 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2058:35:2058:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2059:9:2059:23 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2059:9:2059:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2059:28:2059:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2061:17:2061:31 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2061:35:2061:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2062:9:2062:23 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2062:9:2062:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2062:28:2062:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2064:17:2064:31 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2064:35:2064:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2065:9:2065:23 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2065:9:2065:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2065:28:2065:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2067:17:2067:31 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2067:35:2067:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2068:9:2068:23 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2068:9:2068:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2068:28:2068:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2071:13:2071:23 | vec2_bitand | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2071:27:2071:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2071:27:2071:33 | ... & ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2071:32:2071:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2072:13:2072:22 | vec2_bitor | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2072:26:2072:27 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2072:26:2072:32 | ... \| ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2072:31:2072:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2073:13:2073:23 | vec2_bitxor | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2073:27:2073:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2073:27:2073:33 | ... ^ ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2073:32:2073:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2074:13:2074:20 | vec2_shl | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2074:24:2074:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2074:24:2074:33 | ... << ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2074:30:2074:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2075:13:2075:20 | vec2_shr | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2075:24:2075:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2075:24:2075:33 | ... >> ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2075:30:2075:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2078:17:2078:34 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2078:38:2078:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2079:9:2079:26 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2079:9:2079:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2079:31:2079:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2081:17:2081:33 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2081:37:2081:38 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2082:9:2082:25 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2082:9:2082:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2082:30:2082:31 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2084:17:2084:34 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2084:38:2084:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2085:9:2085:26 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2085:9:2085:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2085:31:2085:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2087:17:2087:31 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2087:35:2087:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2088:9:2088:23 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2088:9:2088:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2088:29:2088:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2090:17:2090:31 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2090:35:2090:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2091:9:2091:23 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2091:9:2091:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2091:29:2091:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2094:13:2094:20 | vec2_neg | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2094:24:2094:26 | - ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2094:25:2094:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2095:13:2095:20 | vec2_not | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2095:24:2095:26 | ! ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2095:25:2095:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2098:13:2098:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2098:28:2098:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2099:13:2099:26 | vec2_zero_plus | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2099:30:2099:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2099:30:2099:63 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:52:2099:63 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2103:13:2103:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2103:28:2103:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2104:13:2104:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2104:30:2104:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2104:30:2104:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:53:2104:64 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:2114:18:2114:21 | SelfParam | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2117:25:2119:5 | { ... } | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2118:9:2118:10 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2121:41:2123:5 | { ... } | | main.rs:2121:16:2121:39 | impl ... | +| main.rs:2122:9:2122:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2122:9:2122:20 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2122:17:2122:18 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2131:13:2131:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2131:13:2131:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2131:13:2131:42 | SelfParam | Ptr.&T | main.rs:2125:5:2125:14 | S2 | +| main.rs:2132:13:2132:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2132:13:2132:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2133:44:2135:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2133:44:2135:9 | { ... } | T | main.rs:2111:5:2111:14 | S1 | +| main.rs:2134:13:2134:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2134:13:2134:38 | ...::Ready(...) | T | main.rs:2111:5:2111:14 | S1 | +| main.rs:2134:36:2134:37 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2138:41:2140:5 | { ... } | | main.rs:2138:16:2138:39 | impl ... | +| main.rs:2139:9:2139:10 | S2 | | main.rs:2125:5:2125:14 | S2 | +| main.rs:2139:9:2139:10 | S2 | | main.rs:2138:16:2138:39 | impl ... | +| main.rs:2143:9:2143:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2143:9:2143:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2143:9:2143:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2144:9:2144:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | +| main.rs:2144:9:2144:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2145:9:2145:12 | f3(...) | | main.rs:2138:16:2138:39 | impl ... | +| main.rs:2145:9:2145:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2146:9:2146:10 | S2 | | main.rs:2125:5:2125:14 | S2 | +| main.rs:2146:9:2146:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2147:13:2147:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2147:13:2147:13 | b | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2147:17:2147:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2147:17:2147:28 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2147:25:2147:26 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2148:9:2148:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2148:9:2148:9 | b | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2148:9:2148:15 | await b | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2159:15:2159:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2159:15:2159:19 | SelfParam | &T | main.rs:2158:5:2160:5 | Self [trait Trait1] | +| main.rs:2163:15:2163:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2163:15:2163:19 | SelfParam | &T | main.rs:2162:5:2164:5 | Self [trait Trait2] | +| main.rs:2167:15:2167:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2167:15:2167:19 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | +| main.rs:2171:15:2171:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2171:15:2171:19 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | +| main.rs:2174:37:2176:5 | { ... } | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2175:9:2175:10 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2175:9:2175:10 | S1 | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2179:18:2179:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2179:18:2179:22 | SelfParam | &T | main.rs:2178:5:2180:5 | Self [trait MyTrait] | +| main.rs:2183:18:2183:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2183:18:2183:22 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | +| main.rs:2183:31:2185:9 | { ... } | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2184:13:2184:14 | S2 | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2189:18:2189:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2189:18:2189:22 | SelfParam | &T | main.rs:2156:5:2156:22 | S3 | +| main.rs:2189:18:2189:22 | SelfParam | &T.T3 | main.rs:2188:10:2188:17 | T | +| main.rs:2189:30:2192:9 | { ... } | | main.rs:2188:10:2188:17 | T | +| main.rs:2190:17:2190:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2190:17:2190:21 | S3(...) | | main.rs:2156:5:2156:22 | S3 | +| main.rs:2190:17:2190:21 | S3(...) | &T | main.rs:2156:5:2156:22 | S3 | +| main.rs:2190:17:2190:21 | S3(...) | &T.T3 | main.rs:2188:10:2188:17 | T | +| main.rs:2190:25:2190:28 | self | | file://:0:0:0:0 | & | +| main.rs:2190:25:2190:28 | self | &T | main.rs:2156:5:2156:22 | S3 | +| main.rs:2190:25:2190:28 | self | &T.T3 | main.rs:2188:10:2188:17 | T | +| main.rs:2191:13:2191:21 | t.clone() | | main.rs:2188:10:2188:17 | T | +| main.rs:2195:45:2197:5 | { ... } | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2196:9:2196:10 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2196:9:2196:10 | S1 | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2199:41:2199:41 | t | | main.rs:2199:26:2199:38 | B | +| main.rs:2199:52:2201:5 | { ... } | | main.rs:2199:23:2199:23 | A | +| main.rs:2200:9:2200:9 | t | | main.rs:2199:26:2199:38 | B | +| main.rs:2200:9:2200:17 | t.get_a() | | main.rs:2199:23:2199:23 | A | +| main.rs:2203:34:2203:34 | x | | main.rs:2203:24:2203:31 | T | +| main.rs:2203:59:2205:5 | { ... } | | main.rs:2203:43:2203:57 | impl ... | +| main.rs:2203:59:2205:5 | { ... } | impl(T) | main.rs:2203:24:2203:31 | T | +| main.rs:2204:9:2204:13 | S3(...) | | main.rs:2156:5:2156:22 | S3 | +| main.rs:2204:9:2204:13 | S3(...) | | main.rs:2203:43:2203:57 | impl ... | +| main.rs:2204:9:2204:13 | S3(...) | T3 | main.rs:2203:24:2203:31 | T | +| main.rs:2204:9:2204:13 | S3(...) | impl(T) | main.rs:2203:24:2203:31 | T | +| main.rs:2204:12:2204:12 | x | | main.rs:2203:24:2203:31 | T | +| main.rs:2207:34:2207:34 | x | | main.rs:2207:24:2207:31 | T | +| main.rs:2207:67:2209:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2207:67:2209:5 | { ... } | T | main.rs:2207:50:2207:64 | impl ... | +| main.rs:2207:67:2209:5 | { ... } | T.impl(T) | main.rs:2207:24:2207:31 | T | +| main.rs:2208:9:2208:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2208:9:2208:19 | Some(...) | T | main.rs:2156:5:2156:22 | S3 | +| main.rs:2208:9:2208:19 | Some(...) | T | main.rs:2207:50:2207:64 | impl ... | +| main.rs:2208:9:2208:19 | Some(...) | T.T3 | main.rs:2207:24:2207:31 | T | +| main.rs:2208:9:2208:19 | Some(...) | T.impl(T) | main.rs:2207:24:2207:31 | T | +| main.rs:2208:14:2208:18 | S3(...) | | main.rs:2156:5:2156:22 | S3 | +| main.rs:2208:14:2208:18 | S3(...) | | main.rs:2207:50:2207:64 | impl ... | +| main.rs:2208:14:2208:18 | S3(...) | T3 | main.rs:2207:24:2207:31 | T | +| main.rs:2208:14:2208:18 | S3(...) | impl(T) | main.rs:2207:24:2207:31 | T | +| main.rs:2208:17:2208:17 | x | | main.rs:2207:24:2207:31 | T | +| main.rs:2211:34:2211:34 | x | | main.rs:2211:24:2211:31 | T | +| main.rs:2211:78:2213:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2211:78:2213:5 | { ... } | 0(2) | main.rs:2211:44:2211:58 | impl ... | +| main.rs:2211:78:2213:5 | { ... } | 0(2).impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2211:78:2213:5 | { ... } | 1(2) | main.rs:2211:61:2211:75 | impl ... | +| main.rs:2211:78:2213:5 | { ... } | 1(2).impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2212:9:2212:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2212:9:2212:30 | TupleExpr | 0(2) | main.rs:2156:5:2156:22 | S3 | +| main.rs:2212:9:2212:30 | TupleExpr | 0(2) | main.rs:2211:44:2211:58 | impl ... | +| main.rs:2212:9:2212:30 | TupleExpr | 0(2).T3 | main.rs:2211:24:2211:31 | T | +| main.rs:2212:9:2212:30 | TupleExpr | 0(2).impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2212:9:2212:30 | TupleExpr | 1(2) | main.rs:2156:5:2156:22 | S3 | +| main.rs:2212:9:2212:30 | TupleExpr | 1(2) | main.rs:2211:61:2211:75 | impl ... | +| main.rs:2212:9:2212:30 | TupleExpr | 1(2).T3 | main.rs:2211:24:2211:31 | T | +| main.rs:2212:9:2212:30 | TupleExpr | 1(2).impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2212:10:2212:22 | S3(...) | | main.rs:2156:5:2156:22 | S3 | +| main.rs:2212:10:2212:22 | S3(...) | | main.rs:2211:44:2211:58 | impl ... | +| main.rs:2212:10:2212:22 | S3(...) | T3 | main.rs:2211:24:2211:31 | T | +| main.rs:2212:10:2212:22 | S3(...) | impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2212:13:2212:13 | x | | main.rs:2211:24:2211:31 | T | +| main.rs:2212:13:2212:21 | x.clone() | | main.rs:2211:24:2211:31 | T | +| main.rs:2212:25:2212:29 | S3(...) | | main.rs:2156:5:2156:22 | S3 | +| main.rs:2212:25:2212:29 | S3(...) | | main.rs:2211:61:2211:75 | impl ... | +| main.rs:2212:25:2212:29 | S3(...) | T3 | main.rs:2211:24:2211:31 | T | +| main.rs:2212:25:2212:29 | S3(...) | impl(T) | main.rs:2211:24:2211:31 | T | +| main.rs:2212:28:2212:28 | x | | main.rs:2211:24:2211:31 | T | +| main.rs:2215:26:2215:26 | t | | main.rs:2215:29:2215:43 | impl ... | +| main.rs:2215:51:2217:5 | { ... } | | main.rs:2215:23:2215:23 | A | +| main.rs:2216:9:2216:9 | t | | main.rs:2215:29:2215:43 | impl ... | +| main.rs:2216:9:2216:17 | t.get_a() | | main.rs:2215:23:2215:23 | A | +| main.rs:2220:13:2220:13 | x | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2220:17:2220:20 | f1(...) | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2221:9:2221:9 | x | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2222:9:2222:9 | x | | main.rs:2174:16:2174:35 | impl ... + ... | +| main.rs:2223:13:2223:13 | a | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2223:17:2223:32 | get_a_my_trait(...) | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2224:13:2224:13 | b | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2224:17:2224:33 | uses_my_trait1(...) | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2224:32:2224:32 | a | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2225:13:2225:13 | a | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2225:17:2225:32 | get_a_my_trait(...) | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2226:13:2226:13 | c | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2226:17:2226:33 | uses_my_trait2(...) | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2226:32:2226:32 | a | | main.rs:2195:28:2195:43 | impl ... | +| main.rs:2227:13:2227:13 | d | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2227:17:2227:34 | uses_my_trait2(...) | | main.rs:2155:5:2155:14 | S2 | +| main.rs:2227:32:2227:33 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2228:13:2228:13 | e | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2228:17:2228:35 | get_a_my_trait2(...) | | main.rs:2203:43:2203:57 | impl ... | +| main.rs:2228:17:2228:35 | get_a_my_trait2(...) | impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2228:17:2228:43 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2228:33:2228:34 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2231:13:2231:13 | f | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | T | main.rs:2207:50:2207:64 | impl ... | +| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2231:17:2231:44 | ... .unwrap() | | main.rs:2207:50:2207:64 | impl ... | +| main.rs:2231:17:2231:44 | ... .unwrap() | impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2231:17:2231:52 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2231:33:2231:34 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:13:2232:13 | g | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 0(2) | main.rs:2211:44:2211:58 | impl ... | +| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 1(2) | main.rs:2211:61:2211:75 | impl ... | +| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:17:2232:37 | ... .0 | | main.rs:2211:44:2211:58 | impl ... | +| main.rs:2232:17:2232:37 | ... .0 | impl(T) | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:17:2232:45 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2232:33:2232:34 | S1 | | main.rs:2153:5:2154:14 | S1 | +| main.rs:2243:16:2243:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2243:16:2243:20 | SelfParam | &T | main.rs:2239:5:2240:13 | S | +| main.rs:2243:31:2245:9 | { ... } | | main.rs:2239:5:2240:13 | S | +| main.rs:2244:13:2244:13 | S | | main.rs:2239:5:2240:13 | S | +| main.rs:2254:26:2256:9 | { ... } | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2254:26:2256:9 | { ... } | T | main.rs:2253:10:2253:10 | T | +| main.rs:2255:13:2255:38 | MyVec {...} | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2255:13:2255:38 | MyVec {...} | T | main.rs:2253:10:2253:10 | T | +| main.rs:2255:27:2255:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2255:27:2255:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2255:27:2255:36 | ...::new(...) | T | main.rs:2253:10:2253:10 | T | +| main.rs:2258:17:2258:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2258:17:2258:25 | SelfParam | &T | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2258:17:2258:25 | SelfParam | &T.T | main.rs:2253:10:2253:10 | T | +| main.rs:2258:28:2258:32 | value | | main.rs:2253:10:2253:10 | T | +| main.rs:2259:13:2259:16 | self | | file://:0:0:0:0 | & | +| main.rs:2259:13:2259:16 | self | &T | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2259:13:2259:16 | self | &T.T | main.rs:2253:10:2253:10 | T | +| main.rs:2259:13:2259:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2259:13:2259:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2259:13:2259:21 | self.data | T | main.rs:2253:10:2253:10 | T | +| main.rs:2259:28:2259:32 | value | | main.rs:2253:10:2253:10 | T | +| main.rs:2267:18:2267:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2267:18:2267:22 | SelfParam | &T | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2267:18:2267:22 | SelfParam | &T.T | main.rs:2263:10:2263:10 | T | +| main.rs:2267:25:2267:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2267:56:2269:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2267:56:2269:9 | { ... } | &T | main.rs:2263:10:2263:10 | T | +| main.rs:2268:13:2268:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2268:13:2268:29 | &... | &T | main.rs:2263:10:2263:10 | T | +| main.rs:2268:14:2268:17 | self | | file://:0:0:0:0 | & | +| main.rs:2268:14:2268:17 | self | &T | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2268:14:2268:17 | self | &T.T | main.rs:2263:10:2263:10 | T | +| main.rs:2268:14:2268:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2268:14:2268:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2268:14:2268:22 | self.data | T | main.rs:2263:10:2263:10 | T | +| main.rs:2268:14:2268:29 | ...[index] | | main.rs:2263:10:2263:10 | T | +| main.rs:2268:24:2268:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2272:22:2272:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2272:22:2272:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2272:22:2272:26 | slice | &T.[T] | main.rs:2239:5:2240:13 | S | +| main.rs:2273:13:2273:13 | x | | main.rs:2239:5:2240:13 | S | +| main.rs:2273:17:2273:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2273:17:2273:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2273:17:2273:21 | slice | &T.[T] | main.rs:2239:5:2240:13 | S | +| main.rs:2273:17:2273:24 | slice[0] | | main.rs:2239:5:2240:13 | S | +| main.rs:2273:17:2273:30 | ... .foo() | | main.rs:2239:5:2240:13 | S | +| main.rs:2273:23:2273:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2276:37:2276:37 | a | | main.rs:2276:20:2276:34 | T | +| main.rs:2276:43:2276:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2279:5:2281:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2280:9:2280:9 | a | | main.rs:2276:20:2276:34 | T | +| main.rs:2280:9:2280:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2280:11:2280:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2284:17:2284:19 | vec | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2284:17:2284:19 | vec | T | main.rs:2239:5:2240:13 | S | +| main.rs:2284:23:2284:34 | ...::new(...) | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2284:23:2284:34 | ...::new(...) | T | main.rs:2239:5:2240:13 | S | +| main.rs:2285:9:2285:11 | vec | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2285:9:2285:11 | vec | T | main.rs:2239:5:2240:13 | S | +| main.rs:2285:18:2285:18 | S | | main.rs:2239:5:2240:13 | S | +| main.rs:2286:9:2286:11 | vec | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2286:9:2286:11 | vec | T | main.rs:2239:5:2240:13 | S | +| main.rs:2286:9:2286:14 | vec[0] | | main.rs:2239:5:2240:13 | S | +| main.rs:2286:9:2286:20 | ... .foo() | | main.rs:2239:5:2240:13 | S | +| main.rs:2286:13:2286:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2286:13:2286:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2288:13:2288:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2288:13:2288:14 | xs | [T;...] | main.rs:2239:5:2240:13 | S | +| main.rs:2288:21:2288:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:26:2288:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2288:26:2288:28 | [...] | [T;...] | main.rs:2239:5:2240:13 | S | +| main.rs:2288:27:2288:27 | S | | main.rs:2239:5:2240:13 | S | +| main.rs:2289:13:2289:13 | x | | main.rs:2239:5:2240:13 | S | +| main.rs:2289:17:2289:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2289:17:2289:18 | xs | [T;...] | main.rs:2239:5:2240:13 | S | +| main.rs:2289:17:2289:21 | xs[0] | | main.rs:2239:5:2240:13 | S | +| main.rs:2289:17:2289:27 | ... .foo() | | main.rs:2239:5:2240:13 | S | +| main.rs:2289:20:2289:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:29:2291:31 | vec | | main.rs:2248:5:2251:5 | MyVec | +| main.rs:2291:29:2291:31 | vec | T | main.rs:2239:5:2240:13 | S | +| main.rs:2291:34:2291:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:34:2291:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2293:23:2293:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2293:23:2293:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2293:23:2293:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2293:23:2293:25 | &xs | &T.[T;...] | main.rs:2239:5:2240:13 | S | +| main.rs:2293:23:2293:25 | &xs | &T.[T] | main.rs:2239:5:2240:13 | S | +| main.rs:2293:24:2293:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2293:24:2293:25 | xs | [T;...] | main.rs:2239:5:2240:13 | S | +| main.rs:2299:13:2299:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2299:17:2299:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2299:25:2299:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2299:25:2299:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2299:25:2299:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2299:25:2299:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2299:25:2299:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2299:25:2299:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2299:25:2299:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2299:38:2299:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2299:38:2299:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2308:19:2308:22 | SelfParam | | main.rs:2304:5:2309:5 | Self [trait MyAdd] | +| main.rs:2308:25:2308:27 | rhs | | main.rs:2304:17:2304:26 | Rhs | +| main.rs:2315:19:2315:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2315:25:2315:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2315:45:2317:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2316:13:2316:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2324:19:2324:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2324:25:2324:29 | value | | file://:0:0:0:0 | & | +| main.rs:2324:25:2324:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2324:46:2326:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2325:13:2325:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2325:14:2325:18 | value | | file://:0:0:0:0 | & | +| main.rs:2325:14:2325:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2333:19:2333:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2333:25:2333:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2333:46:2339:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2334:13:2338:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2334:13:2338:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2334:16:2334:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2334:22:2336:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2334:22:2336:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2335:17:2335:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2335:17:2335:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2336:20:2338:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2336:20:2338:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2337:17:2337:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2337:17:2337:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2348:19:2348:22 | SelfParam | | main.rs:2342:5:2342:19 | S | +| main.rs:2348:19:2348:22 | SelfParam | T | main.rs:2344:10:2344:17 | T | +| main.rs:2348:25:2348:29 | other | | main.rs:2342:5:2342:19 | S | +| main.rs:2348:25:2348:29 | other | T | main.rs:2344:10:2344:17 | T | +| main.rs:2348:54:2350:9 | { ... } | | main.rs:2342:5:2342:19 | S | +| main.rs:2348:54:2350:9 | { ... } | T | main.rs:2305:9:2305:20 | Output | +| main.rs:2349:13:2349:39 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2349:13:2349:39 | S(...) | T | main.rs:2305:9:2305:20 | Output | +| main.rs:2349:15:2349:22 | (...) | | main.rs:2344:10:2344:17 | T | +| main.rs:2349:15:2349:38 | ... .my_add(...) | | main.rs:2305:9:2305:20 | Output | +| main.rs:2349:16:2349:19 | self | | main.rs:2342:5:2342:19 | S | +| main.rs:2349:16:2349:19 | self | T | main.rs:2344:10:2344:17 | T | +| main.rs:2349:16:2349:21 | self.0 | | main.rs:2344:10:2344:17 | T | +| main.rs:2349:31:2349:35 | other | | main.rs:2342:5:2342:19 | S | +| main.rs:2349:31:2349:35 | other | T | main.rs:2344:10:2344:17 | T | +| main.rs:2349:31:2349:37 | other.0 | | main.rs:2344:10:2344:17 | T | +| main.rs:2357:19:2357:22 | SelfParam | | main.rs:2342:5:2342:19 | S | +| main.rs:2357:19:2357:22 | SelfParam | T | main.rs:2353:10:2353:17 | T | +| main.rs:2357:25:2357:29 | other | | main.rs:2353:10:2353:17 | T | +| main.rs:2357:51:2359:9 | { ... } | | main.rs:2342:5:2342:19 | S | +| main.rs:2357:51:2359:9 | { ... } | T | main.rs:2305:9:2305:20 | Output | +| main.rs:2358:13:2358:37 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2358:13:2358:37 | S(...) | T | main.rs:2305:9:2305:20 | Output | +| main.rs:2358:15:2358:22 | (...) | | main.rs:2353:10:2353:17 | T | +| main.rs:2358:15:2358:36 | ... .my_add(...) | | main.rs:2305:9:2305:20 | Output | +| main.rs:2358:16:2358:19 | self | | main.rs:2342:5:2342:19 | S | +| main.rs:2358:16:2358:19 | self | T | main.rs:2353:10:2353:17 | T | +| main.rs:2358:16:2358:21 | self.0 | | main.rs:2353:10:2353:17 | T | +| main.rs:2358:31:2358:35 | other | | main.rs:2353:10:2353:17 | T | +| main.rs:2369:19:2369:22 | SelfParam | | main.rs:2342:5:2342:19 | S | +| main.rs:2369:19:2369:22 | SelfParam | T | main.rs:2362:14:2362:14 | T | +| main.rs:2369:25:2369:29 | other | | file://:0:0:0:0 | & | +| main.rs:2369:25:2369:29 | other | &T | main.rs:2362:14:2362:14 | T | +| main.rs:2369:55:2371:9 | { ... } | | main.rs:2342:5:2342:19 | S | +| main.rs:2370:13:2370:37 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2370:15:2370:22 | (...) | | main.rs:2362:14:2362:14 | T | +| main.rs:2370:16:2370:19 | self | | main.rs:2342:5:2342:19 | S | +| main.rs:2370:16:2370:19 | self | T | main.rs:2362:14:2362:14 | T | +| main.rs:2370:16:2370:21 | self.0 | | main.rs:2362:14:2362:14 | T | +| main.rs:2370:31:2370:35 | other | | file://:0:0:0:0 | & | +| main.rs:2370:31:2370:35 | other | &T | main.rs:2362:14:2362:14 | T | +| main.rs:2376:20:2376:24 | value | | main.rs:2374:18:2374:18 | T | +| main.rs:2381:20:2381:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2381:40:2383:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:13:2382:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2388:20:2388:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2388:41:2394:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2389:13:2393:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2389:13:2393:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2389:16:2389:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2389:22:2391:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2389:22:2391:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2390:17:2390:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2390:17:2390:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2391:20:2393:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:20:2393:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2392:17:2392:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2392:17:2392:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2399:21:2399:25 | value | | main.rs:2397:19:2397:19 | T | +| main.rs:2399:31:2399:31 | x | | main.rs:2397:5:2400:5 | Self [trait MyFrom2] | +| main.rs:2404:21:2404:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2404:33:2404:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2404:48:2406:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2405:13:2405:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2411:21:2411:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2411:34:2411:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2411:49:2417:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2412:13:2416:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2412:16:2412:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2412:22:2414:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2413:17:2413:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:20:2416:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2415:17:2415:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2422:15:2422:15 | x | | main.rs:2420:5:2426:5 | Self [trait MySelfTrait] | +| main.rs:2425:15:2425:15 | x | | main.rs:2420:5:2426:5 | Self [trait MySelfTrait] | +| main.rs:2430:15:2430:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:31:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:13:2431:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:13:2431:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:17:2431:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2435:15:2435:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2435:32:2437:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2436:13:2436:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2436:13:2436:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2436:17:2436:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2442:15:2442:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2442:31:2444:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2447:15:2447:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2447:32:2449:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2448:13:2448:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2453:22:2453:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2453:22:2453:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2454:9:2454:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2454:9:2454:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2454:18:2454:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2455:9:2455:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2455:9:2455:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2455:18:2455:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2455:18:2455:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2455:19:2455:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2456:9:2456:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2456:9:2456:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2456:18:2456:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2458:9:2458:15 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2458:9:2458:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2458:9:2458:31 | ... .my_add(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2458:11:2458:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2458:24:2458:30 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2458:24:2458:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2458:26:2458:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:9:2459:15 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2459:9:2459:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:11:2459:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:24:2459:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:9:2460:15 | S(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2460:9:2460:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:9:2460:29 | ... .my_add(...) | | main.rs:2342:5:2342:19 | S | +| main.rs:2460:11:2460:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:24:2460:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2460:24:2460:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:25:2460:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2462:13:2462:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2462:17:2462:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2462:30:2462:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:13:2463:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:17:2463:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:30:2463:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2464:13:2464:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:22:2464:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:38:2464:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:9:2465:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2465:23:2465:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:30:2465:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2466:9:2466:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2466:23:2466:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2466:29:2466:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2467:9:2467:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2467:27:2467:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2467:34:2467:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2469:9:2469:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2469:17:2469:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:9:2470:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:17:2470:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2471:9:2471:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2471:18:2471:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2472:9:2472:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2472:18:2472:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2473:9:2473:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2473:25:2473:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:9:2474:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:25:2474:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:9:2475:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:25:2475:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2476:9:2476:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2476:25:2476:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2484:26:2486:9 | { ... } | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2485:13:2485:25 | MyCallable {...} | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2488:17:2488:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2488:17:2488:21 | SelfParam | &T | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2488:31:2490:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2489:13:2489:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2489:13:2489:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:13:2496:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:18:2496:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2496:18:2496:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:19:2496:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:22:2496:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:25:2496:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:18:2497:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2497:18:2497:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:18:2497:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2497:19:2497:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:22:2497:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:25:2497:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:32:2497:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2497:32:2497:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2497:40:2497:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:13:2498:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2498:13:2498:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:18:2498:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2498:18:2498:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:18:2498:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2498:18:2498:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:19:2498:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:22:2498:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2498:25:2498:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:13:2500:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2500:13:2500:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:13:2500:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2500:21:2500:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2500:21:2500:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:21:2500:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2500:22:2500:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2500:27:2500:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:27:2500:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2500:30:2500:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:30:2500:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2501:13:2501:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:13:2501:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2501:18:2501:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2501:18:2501:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:18:2501:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2503:13:2503:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2503:13:2503:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2503:21:2503:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2503:21:2503:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2503:22:2503:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2503:28:2503:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:13:2504:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2504:18:2504:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2504:18:2504:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2506:13:2506:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2506:13:2506:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2506:26:2506:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:31:2506:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2506:31:2506:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:31:2506:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2506:32:2506:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:32:2506:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2506:35:2506:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:35:2506:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2506:38:2506:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:38:2506:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2507:13:2507:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2507:18:2507:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2507:18:2507:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2509:13:2509:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2509:13:2509:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2509:26:2509:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:31:2509:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2509:31:2509:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:31:2509:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2509:32:2509:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:32:2509:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2509:35:2509:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2510:13:2510:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2510:18:2510:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2510:18:2510:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2512:17:2512:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2512:17:2512:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2512:17:2512:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2512:28:2512:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2512:28:2512:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2512:28:2512:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2512:29:2512:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2512:29:2512:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2512:36:2512:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2512:36:2512:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2512:43:2512:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2512:43:2512:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2513:13:2513:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2513:13:2513:13 | s | | file://:0:0:0:0 | & | +| main.rs:2513:13:2513:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2513:13:2513:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2513:18:2513:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2513:18:2513:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2513:18:2513:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2513:18:2513:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2513:19:2513:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2513:19:2513:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2513:19:2513:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2514:13:2514:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2514:13:2514:13 | s | | file://:0:0:0:0 | & | +| main.rs:2514:13:2514:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2514:13:2514:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2514:18:2514:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2514:18:2514:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2514:18:2514:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2514:18:2514:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2514:23:2514:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2514:23:2514:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2514:23:2514:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2515:13:2515:13 | s | | file://:0:0:0:0 | & | +| main.rs:2515:13:2515:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2515:18:2515:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2515:18:2515:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2515:18:2515:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2517:13:2517:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2517:13:2517:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2518:9:2522:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2518:9:2522:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2519:13:2519:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2519:26:2519:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2519:26:2519:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2520:13:2520:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2520:26:2520:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2520:26:2520:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2521:13:2521:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2521:26:2521:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2521:26:2521:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2523:13:2523:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2523:18:2523:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2523:18:2523:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2525:13:2525:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2525:13:2525:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2525:13:2525:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2526:9:2530:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2526:9:2530:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2526:9:2530:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2526:10:2530:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2526:10:2530:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2527:13:2527:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2527:26:2527:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2527:26:2527:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2528:13:2528:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2528:26:2528:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2528:26:2528:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2529:13:2529:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2529:26:2529:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2529:26:2529:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2531:13:2531:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2531:13:2531:13 | s | | file://:0:0:0:0 | & | +| main.rs:2531:13:2531:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2531:18:2531:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2531:18:2531:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2531:18:2531:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2533:13:2533:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2533:13:2533:21 | callables | [T;...] | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2533:25:2533:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2533:25:2533:81 | [...] | [T;...] | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2533:26:2533:42 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2533:45:2533:61 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2533:64:2533:80 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2534:13:2534:13 | c | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2535:12:2535:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2535:12:2535:20 | callables | [T;...] | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2537:17:2537:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2537:26:2537:26 | c | | main.rs:2481:5:2481:24 | MyCallable | +| main.rs:2537:26:2537:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2542:13:2542:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2542:13:2542:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2542:18:2542:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2542:18:2542:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2542:18:2542:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2542:21:2542:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:13:2543:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2543:13:2543:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:13:2543:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2543:18:2543:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2543:18:2543:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2543:18:2543:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:18:2543:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2543:19:2543:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2543:19:2543:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2543:19:2543:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:19:2543:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2543:24:2543:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:24:2543:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2544:13:2544:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2544:13:2544:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2544:21:2544:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2544:21:2544:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2544:21:2544:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2544:24:2544:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2545:13:2545:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2545:13:2545:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2545:18:2545:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2545:18:2545:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2546:13:2546:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2546:26:2546:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2547:18:2547:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2547:19:2547:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2547:19:2547:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2547:20:2547:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2547:26:2547:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2547:32:2547:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2547:38:2547:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2549:13:2549:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2549:13:2549:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2550:9:2553:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2550:9:2553:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2551:20:2551:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2552:18:2552:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2554:13:2554:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2554:13:2554:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2554:18:2554:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2554:18:2554:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2558:26:2558:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2558:29:2558:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2558:32:2558:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2561:13:2561:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2561:13:2561:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2561:13:2561:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2561:32:2561:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2561:32:2561:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2561:32:2561:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2561:32:2561:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2561:32:2561:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2561:32:2561:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2561:33:2561:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2561:39:2561:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2561:42:2561:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2562:13:2562:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2562:13:2562:13 | u | | file://:0:0:0:0 | & | +| main.rs:2562:18:2562:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2562:18:2562:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2562:18:2562:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2564:22:2564:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2564:22:2564:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2564:22:2564:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2564:23:2564:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2564:29:2564:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2564:32:2564:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:13:2567:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2567:13:2567:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2567:13:2567:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:13:2567:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2567:21:2567:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2567:21:2567:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2567:21:2567:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:21:2567:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2567:31:2567:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2567:31:2567:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:31:2567:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2567:32:2567:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2567:38:2567:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:41:2567:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:13:2568:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:13:2568:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2568:13:2568:13 | u | | file://:0:0:0:0 | & | +| main.rs:2568:18:2568:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2568:18:2568:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2568:18:2568:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:18:2568:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2570:13:2570:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2570:13:2570:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2570:13:2570:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2570:13:2570:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2570:32:2570:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2570:32:2570:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2570:32:2570:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2570:32:2570:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2570:32:2570:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2570:32:2570:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2570:32:2570:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2570:33:2570:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2570:39:2570:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2570:42:2570:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2571:13:2571:13 | u | | file://:0:0:0:0 | & | +| main.rs:2571:13:2571:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2571:18:2571:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2571:18:2571:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2571:18:2571:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2571:18:2571:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2573:17:2573:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2573:17:2573:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2573:17:2573:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2573:25:2573:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2573:25:2573:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2573:25:2573:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2574:9:2574:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2574:9:2574:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2574:9:2574:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2574:20:2574:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2575:13:2575:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2575:13:2575:13 | u | | file://:0:0:0:0 | & | +| main.rs:2575:18:2575:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2575:18:2575:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2575:18:2575:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:33:2577:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:36:2577:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:45:2577:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:48:2577:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:17:2584:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2584:17:2584:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:17:2584:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2584:17:2584:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2584:17:2584:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2584:17:2584:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2584:17:2584:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2584:24:2584:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2584:24:2584:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:24:2584:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2584:24:2584:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2584:24:2584:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2584:24:2584:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2584:24:2584:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2585:9:2585:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2585:9:2585:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2585:9:2585:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2585:9:2585:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2585:9:2585:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2585:9:2585:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2585:9:2585:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2585:9:2585:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2585:9:2585:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2585:9:2585:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2585:9:2585:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2585:9:2585:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2585:21:2585:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2585:24:2585:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2585:24:2585:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2585:24:2585:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2585:24:2585:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2585:33:2585:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2585:33:2585:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2586:9:2586:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2586:9:2586:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2586:9:2586:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2586:9:2586:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2586:9:2586:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2586:9:2586:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2586:9:2586:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2586:9:2586:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2586:9:2586:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2586:9:2586:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2586:9:2586:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2586:9:2586:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2586:21:2586:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2586:24:2586:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2586:24:2586:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2586:24:2586:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2586:24:2586:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2586:33:2586:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2586:33:2586:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2587:13:2587:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2587:13:2587:15 | key | | file://:0:0:0:0 | & | +| main.rs:2587:13:2587:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2587:20:2587:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2587:20:2587:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2587:20:2587:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2587:20:2587:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2587:20:2587:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2587:20:2587:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2587:20:2587:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2587:20:2587:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2587:20:2587:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2587:20:2587:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2587:20:2587:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2587:20:2587:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2587:20:2587:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2588:13:2588:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2588:13:2588:17 | value | | file://:0:0:0:0 | & | +| main.rs:2588:13:2588:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2588:13:2588:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2588:13:2588:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2588:13:2588:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2588:22:2588:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2588:22:2588:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2588:22:2588:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2588:22:2588:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2588:22:2588:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2588:22:2588:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2588:22:2588:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2588:22:2588:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2588:22:2588:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2588:22:2588:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2588:22:2588:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2588:22:2588:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2588:22:2588:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2589:13:2589:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2589:13:2589:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2589:13:2589:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:13:2589:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2589:14:2589:16 | key | | file://:0:0:0:0 | & | +| main.rs:2589:14:2589:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:19:2589:23 | value | | file://:0:0:0:0 | & | +| main.rs:2589:19:2589:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2589:19:2589:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:19:2589:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2589:19:2589:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2589:29:2589:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2589:29:2589:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:29:2589:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2589:29:2589:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2589:29:2589:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:29:2589:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2589:29:2589:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2589:29:2589:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2589:29:2589:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:29:2589:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2589:29:2589:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:29:2589:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2589:29:2589:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:13:2590:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2590:13:2590:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2590:13:2590:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:13:2590:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:14:2590:16 | key | | file://:0:0:0:0 | & | +| main.rs:2590:14:2590:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:19:2590:23 | value | | file://:0:0:0:0 | & | +| main.rs:2590:19:2590:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2590:19:2590:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:19:2590:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2590:19:2590:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:29:2590:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2590:29:2590:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2590:29:2590:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:29:2590:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2590:29:2590:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2590:29:2590:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:29:2590:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2590:29:2590:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:30:2590:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2590:30:2590:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:30:2590:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2590:30:2590:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2590:30:2590:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:30:2590:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2590:30:2590:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:17:2594:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2594:26:2594:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:26:2594:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2596:23:2596:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2596:23:2596:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2596:27:2596:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2596:27:2596:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2598:13:2598:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2598:13:2598:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2598:18:2598:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2610:40:2612:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2610:40:2612:9 | { ... } | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2610:40:2612:9 | { ... } | T.T | main.rs:2609:10:2609:19 | T | +| main.rs:2611:13:2611:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2611:13:2611:16 | None | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2611:13:2611:16 | None | T.T | main.rs:2609:10:2609:19 | T | +| main.rs:2614:30:2616:9 | { ... } | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2614:30:2616:9 | { ... } | T | main.rs:2609:10:2609:19 | T | +| main.rs:2615:13:2615:28 | S1(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2615:13:2615:28 | S1(...) | T | main.rs:2609:10:2609:19 | T | +| main.rs:2615:16:2615:27 | ...::default(...) | | main.rs:2609:10:2609:19 | T | +| main.rs:2618:19:2618:22 | SelfParam | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2618:19:2618:22 | SelfParam | T | main.rs:2609:10:2609:19 | T | +| main.rs:2618:33:2620:9 | { ... } | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2618:33:2620:9 | { ... } | T | main.rs:2609:10:2609:19 | T | +| main.rs:2619:13:2619:16 | self | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2619:13:2619:16 | self | T | main.rs:2609:10:2609:19 | T | +| main.rs:2631:15:2631:15 | x | | main.rs:2631:12:2631:12 | T | +| main.rs:2631:26:2633:5 | { ... } | | main.rs:2631:12:2631:12 | T | +| main.rs:2632:9:2632:9 | x | | main.rs:2631:12:2631:12 | T | +| main.rs:2636:13:2636:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2636:13:2636:14 | x1 | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2636:13:2636:14 | x1 | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2637:13:2637:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2637:13:2637:14 | x2 | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2637:13:2637:14 | x2 | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2638:13:2638:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2638:13:2638:14 | x3 | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2638:13:2638:14 | x3 | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | +| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2639:13:2639:14 | x4 | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2639:13:2639:14 | x4 | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2639:18:2639:48 | ...::method(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2639:18:2639:48 | ...::method(...) | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2639:35:2639:47 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2639:35:2639:47 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2640:13:2640:14 | x5 | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2640:13:2640:14 | x5 | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2640:18:2640:42 | ...::method(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2640:18:2640:42 | ...::method(...) | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2640:29:2640:41 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2640:29:2640:41 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2641:13:2641:14 | x6 | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2641:13:2641:14 | x6 | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2641:18:2641:45 | S4::<...>(...) | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2641:18:2641:45 | S4::<...>(...) | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2641:27:2641:44 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2642:13:2642:14 | x7 | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2642:13:2642:14 | x7 | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2642:18:2642:23 | S4(...) | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2642:18:2642:23 | S4(...) | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2642:21:2642:22 | S2 | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2643:13:2643:14 | x8 | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2643:13:2643:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2643:18:2643:22 | S4(...) | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2643:18:2643:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2643:21:2643:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2644:13:2644:14 | x9 | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2644:13:2644:14 | x9 | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2644:18:2644:34 | S4(...) | | main.rs:2625:5:2625:27 | S4 | +| main.rs:2644:18:2644:34 | S4(...) | T4 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2644:21:2644:33 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2645:13:2645:15 | x10 | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2645:13:2645:15 | x10 | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2645:19:2648:9 | S5::<...> {...} | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2645:19:2648:9 | S5::<...> {...} | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2647:20:2647:37 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2649:13:2649:15 | x11 | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2649:13:2649:15 | x11 | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2649:19:2649:34 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2649:19:2649:34 | S5 {...} | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2649:31:2649:32 | S2 | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2650:13:2650:15 | x12 | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2650:13:2650:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2650:19:2650:33 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2650:19:2650:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2650:31:2650:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2651:13:2651:15 | x13 | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2651:13:2651:15 | x13 | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2651:19:2654:9 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | +| main.rs:2651:19:2654:9 | S5 {...} | T5 | main.rs:2606:5:2607:14 | S2 | +| main.rs:2653:20:2653:32 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | +| main.rs:2655:13:2655:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2655:19:2655:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2655:30:2655:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2656:13:2656:15 | x15 | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2656:13:2656:15 | x15 | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2656:19:2656:37 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | +| main.rs:2656:19:2656:37 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | +| main.rs:2665:35:2667:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2665:35:2667:9 | { ... } | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2665:35:2667:9 | { ... } | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2666:13:2666:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2666:13:2666:26 | TupleExpr | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2666:13:2666:26 | TupleExpr | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2666:14:2666:18 | S1 {...} | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2666:21:2666:25 | S1 {...} | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2668:16:2668:19 | SelfParam | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2672:13:2672:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2672:13:2672:13 | a | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2672:13:2672:13 | a | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2672:17:2672:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2672:17:2672:30 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2672:17:2672:30 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2673:17:2673:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2673:17:2673:17 | b | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2673:17:2673:17 | b | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2673:21:2673:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2673:21:2673:34 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2673:21:2673:34 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:13:2674:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2674:13:2674:18 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:13:2674:18 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:14:2674:14 | c | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:17:2674:17 | d | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:22:2674:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2674:22:2674:35 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2674:22:2674:35 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:13:2675:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2675:13:2675:22 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:13:2675:22 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:18:2675:18 | e | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:21:2675:21 | f | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:26:2675:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2675:26:2675:39 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2675:26:2675:39 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:13:2676:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2676:13:2676:26 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:13:2676:26 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:18:2676:18 | g | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:25:2676:25 | h | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:30:2676:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2676:30:2676:43 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2676:30:2676:43 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2678:9:2678:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2678:9:2678:9 | a | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2678:9:2678:9 | a | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2678:9:2678:11 | a.0 | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2679:9:2679:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2679:9:2679:9 | b | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2679:9:2679:9 | b | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2679:9:2679:11 | b.1 | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2680:9:2680:9 | c | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2681:9:2681:9 | d | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2682:9:2682:9 | e | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2683:9:2683:9 | f | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2684:9:2684:9 | g | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2685:9:2685:9 | h | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2690:13:2690:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2690:17:2690:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2691:13:2691:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2691:17:2691:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2692:13:2692:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2692:13:2692:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2692:13:2692:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2692:20:2692:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2692:20:2692:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2692:20:2692:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2692:21:2692:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2692:24:2692:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2693:13:2693:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2693:22:2693:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2693:22:2693:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2693:22:2693:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2693:22:2693:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2694:13:2694:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2694:23:2694:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2694:23:2694:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2694:23:2694:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2694:23:2694:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2696:13:2696:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2696:13:2696:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:13:2696:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:20:2696:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2696:20:2696:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:20:2696:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2696:20:2696:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:20:2696:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:21:2696:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2696:24:2696:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2697:15:2697:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2697:15:2697:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2697:15:2697:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:13:2698:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2698:13:2698:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:13:2698:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:14:2698:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:17:2698:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2698:30:2698:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2698:30:2698:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2698:30:2698:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2698:30:2698:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2699:13:2699:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2699:13:2699:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:13:2699:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:25:2699:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2699:25:2699:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2699:25:2699:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2699:25:2699:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2701:13:2701:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:17:2701:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2701:17:2701:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:17:2701:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:17:2701:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:13:2703:13 | y | | file://:0:0:0:0 | & | +| main.rs:2703:13:2703:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2703:13:2703:13 | y | &T.0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2703:13:2703:13 | y | &T.1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2703:17:2703:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2703:17:2703:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2703:17:2703:31 | &... | &T.0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2703:17:2703:31 | &... | &T.1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2703:18:2703:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2703:18:2703:31 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2703:18:2703:31 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2704:9:2704:9 | y | | file://:0:0:0:0 | & | +| main.rs:2704:9:2704:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2704:9:2704:9 | y | &T.0(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2704:9:2704:9 | y | &T.1(2) | main.rs:2661:5:2662:16 | S1 | +| main.rs:2704:9:2704:11 | y.0 | | main.rs:2661:5:2662:16 | S1 | +| main.rs:2711:13:2711:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2711:13:2711:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2711:13:2711:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2711:27:2711:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2711:27:2711:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2711:27:2711:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2711:36:2711:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2714:15:2714:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2714:15:2714:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2714:15:2714:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:13:2715:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2715:13:2715:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2715:13:2715:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:17:2715:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2716:26:2716:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2716:26:2716:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2716:26:2716:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2716:26:2716:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2718:13:2718:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2718:13:2718:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2718:13:2718:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:26:2720:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2720:26:2720:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2720:26:2720:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2720:26:2720:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2725:13:2725:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2725:13:2725:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:13:2725:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2725:13:2725:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:13:2725:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:26:2725:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2725:26:2725:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:26:2725:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2725:26:2725:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:26:2725:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:35:2725:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2725:35:2725:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2725:35:2725:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:44:2725:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:15:2726:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2726:15:2726:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2726:15:2726:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2726:15:2726:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2726:15:2726:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2727:13:2727:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2727:13:2727:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2727:13:2727:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2727:13:2727:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2727:13:2727:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2729:26:2729:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2729:26:2729:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2729:26:2729:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2729:26:2729:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2741:36:2743:9 | { ... } | | main.rs:2738:5:2738:22 | Path | +| main.rs:2742:13:2742:19 | Path {...} | | main.rs:2738:5:2738:22 | Path | +| main.rs:2745:29:2745:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2745:29:2745:33 | SelfParam | &T | main.rs:2738:5:2738:22 | Path | +| main.rs:2745:59:2747:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2745:59:2747:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2745:59:2747:9 | { ... } | T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2746:13:2746:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2746:13:2746:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2746:13:2746:30 | Ok(...) | T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2746:16:2746:29 | ...::new(...) | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2753:39:2755:9 | { ... } | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2754:13:2754:22 | PathBuf {...} | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2763:18:2763:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2763:18:2763:22 | SelfParam | &T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2763:34:2767:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2763:34:2767:9 | { ... } | &T | main.rs:2738:5:2738:22 | Path | +| main.rs:2765:33:2765:43 | ...::new(...) | | main.rs:2738:5:2738:22 | Path | +| main.rs:2766:13:2766:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2766:13:2766:17 | &path | &T | main.rs:2738:5:2738:22 | Path | +| main.rs:2766:14:2766:17 | path | | main.rs:2738:5:2738:22 | Path | +| main.rs:2771:13:2771:17 | path1 | | main.rs:2738:5:2738:22 | Path | +| main.rs:2771:21:2771:31 | ...::new(...) | | main.rs:2738:5:2738:22 | Path | +| main.rs:2772:13:2772:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2772:13:2772:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2772:13:2772:17 | path2 | T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2772:21:2772:25 | path1 | | main.rs:2738:5:2738:22 | Path | +| main.rs:2772:21:2772:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2772:21:2772:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2772:21:2772:40 | path1.canonicalize() | T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2773:13:2773:17 | path3 | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2773:21:2773:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2773:21:2773:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2773:21:2773:25 | path2 | T | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2773:21:2773:34 | path2.unwrap() | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2775:13:2775:20 | pathbuf1 | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2775:24:2775:37 | ...::new(...) | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2776:24:2776:31 | pathbuf1 | | main.rs:2750:5:2750:25 | PathBuf | +| main.rs:2783:14:2783:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2783:14:2783:18 | SelfParam | &T | main.rs:2782:5:2784:5 | Self [trait MyTrait] | +| main.rs:2790:14:2790:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2790:14:2790:18 | SelfParam | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2790:14:2790:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2790:28:2792:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2791:13:2791:16 | self | | file://:0:0:0:0 | & | +| main.rs:2791:13:2791:16 | self | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2791:13:2791:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2791:13:2791:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2796:14:2796:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2796:14:2796:18 | SelfParam | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2796:14:2796:18 | SelfParam | &T.T | main.rs:2786:5:2787:19 | S | +| main.rs:2796:14:2796:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2796:28:2798:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2797:13:2797:16 | self | | file://:0:0:0:0 | & | +| main.rs:2797:13:2797:16 | self | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2797:13:2797:16 | self | &T.T | main.rs:2786:5:2787:19 | S | +| main.rs:2797:13:2797:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2797:13:2797:18 | self.0 | | main.rs:2786:5:2787:19 | S | +| main.rs:2797:13:2797:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2797:13:2797:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2802:15:2802:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2802:15:2802:19 | SelfParam | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2802:15:2802:19 | SelfParam | &T.T | main.rs:2801:10:2801:16 | T | +| main.rs:2802:33:2804:9 | { ... } | | main.rs:2786:5:2787:19 | S | +| main.rs:2802:33:2804:9 | { ... } | T | main.rs:2786:5:2787:19 | S | +| main.rs:2802:33:2804:9 | { ... } | T.T | main.rs:2801:10:2801:16 | T | +| main.rs:2803:13:2803:24 | S(...) | | main.rs:2786:5:2787:19 | S | +| main.rs:2803:13:2803:24 | S(...) | T | main.rs:2786:5:2787:19 | S | +| main.rs:2803:13:2803:24 | S(...) | T.T | main.rs:2801:10:2801:16 | T | +| main.rs:2803:15:2803:23 | S(...) | | main.rs:2786:5:2787:19 | S | +| main.rs:2803:15:2803:23 | S(...) | T | main.rs:2801:10:2801:16 | T | +| main.rs:2803:17:2803:20 | self | | file://:0:0:0:0 | & | +| main.rs:2803:17:2803:20 | self | &T | main.rs:2786:5:2787:19 | S | +| main.rs:2803:17:2803:20 | self | &T.T | main.rs:2801:10:2801:16 | T | +| main.rs:2803:17:2803:22 | self.0 | | main.rs:2801:10:2801:16 | T | +| main.rs:2807:14:2807:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2807:48:2824:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2807:48:2824:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2807:48:2824:5 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2807:48:2824:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2808:13:2808:13 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2808:13:2808:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2808:17:2813:9 | if b {...} else {...} | | main.rs:2786:5:2787:19 | S | +| main.rs:2808:17:2813:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2808:20:2808:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2808:22:2811:9 | { ... } | | main.rs:2786:5:2787:19 | S | +| main.rs:2808:22:2811:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2809:17:2809:17 | y | | main.rs:2786:5:2787:19 | S | +| main.rs:2809:17:2809:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2809:21:2809:38 | ...::default(...) | | main.rs:2786:5:2787:19 | S | +| main.rs:2809:21:2809:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2810:13:2810:13 | y | | main.rs:2786:5:2787:19 | S | +| main.rs:2810:13:2810:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:16:2813:9 | { ... } | | main.rs:2786:5:2787:19 | S | +| main.rs:2811:16:2813:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:13:2812:16 | S(...) | | main.rs:2786:5:2787:19 | S | +| main.rs:2812:13:2812:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:15:2812:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:13:2817:13 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2817:13:2817:13 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2817:13:2817:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:13:2817:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:17:2817:20 | S(...) | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2817:17:2817:20 | S(...) | | main.rs:2786:5:2787:19 | S | +| main.rs:2817:17:2817:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:17:2817:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:19:2817:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:9:2823:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2818:9:2823:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T | main.rs:2786:5:2787:19 | S | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T | main.rs:2786:5:2787:19 | S | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:9:2823:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:12:2818:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2818:14:2821:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2818:14:2821:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2818:14:2821:9 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2818:14:2821:9 | { ... } | T | main.rs:2786:5:2787:19 | S | +| main.rs:2818:14:2821:9 | { ... } | T.T | main.rs:2786:5:2787:19 | S | +| main.rs:2818:14:2821:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:14:2821:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:17:2819:17 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2819:17:2819:17 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2819:17:2819:17 | x | T | main.rs:2786:5:2787:19 | S | +| main.rs:2819:17:2819:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:17:2819:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:21:2819:21 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2819:21:2819:21 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2819:21:2819:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:21:2819:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:21:2819:26 | x.m2() | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2819:21:2819:26 | x.m2() | | main.rs:2786:5:2787:19 | S | +| main.rs:2819:21:2819:26 | x.m2() | T | main.rs:2786:5:2787:19 | S | +| main.rs:2819:21:2819:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2819:21:2819:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2820:13:2820:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2820:13:2820:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2820:13:2820:23 | ...::new(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2820:13:2820:23 | ...::new(...) | T | main.rs:2786:5:2787:19 | S | +| main.rs:2820:13:2820:23 | ...::new(...) | T.T | main.rs:2786:5:2787:19 | S | +| main.rs:2820:13:2820:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2820:13:2820:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2820:22:2820:22 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2820:22:2820:22 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2820:22:2820:22 | x | T | main.rs:2786:5:2787:19 | S | +| main.rs:2820:22:2820:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2820:22:2820:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2821:16:2823:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2821:16:2823:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2821:16:2823:9 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2821:16:2823:9 | { ... } | T | main.rs:2786:5:2787:19 | S | +| main.rs:2821:16:2823:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2821:16:2823:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:13:2822:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2822:13:2822:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2822:13:2822:23 | ...::new(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2822:13:2822:23 | ...::new(...) | T | main.rs:2786:5:2787:19 | S | +| main.rs:2822:13:2822:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:13:2822:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:22:2822:22 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2822:22:2822:22 | x | | main.rs:2786:5:2787:19 | S | +| main.rs:2822:22:2822:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:22:2822:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:5:2834:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2835:5:2835:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2835:20:2835:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2835:41:2835:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2852:5:2852:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2865:5:2865:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2865:5:2865:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2865:5:2865:20 | ...::f(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | +| main.rs:2865:5:2865:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2865:16:2865:19 | true | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 900d0d247741fb1e5dd148fbf844c8592223b33d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 15:17:34 +0100 Subject: [PATCH 446/965] C#: Accept test changes for assert split removal. --- .../controlflow/graph/BasicBlock.expected | 157 +- .../controlflow/graph/Condition.expected | 766 +--- .../controlflow/graph/Dominance.expected | 3488 +++++++---------- .../graph/EnclosingCallable.expected | 229 +- .../controlflow/graph/ExitElement.expected | 109 +- .../controlflow/graph/NodeGraph.expected | 231 +- .../controlflow/guards/AbstractValue.expected | 6 + .../guards/GuardedControlFlowNode.expected | 14 +- .../controlflow/guards/GuardedExpr.expected | 10 + .../FormatInvalid/FormatInvalid.expected | 6 +- .../query-tests/Nullness/NullCheck.expected | 11 - 11 files changed, 1672 insertions(+), 3355 deletions(-) diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index f95409f1bd6..c9f7d2ab35c 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -20,176 +20,149 @@ | Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | exit AssertTests | 5 | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:20 | access to parameter b | 4 | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | 1 | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:22:10:30 | ... != ... | 6 | +| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | 1 | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | call to method Assert | 7 | | Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | 1 | | Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | 1 | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | 2 | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (normal) | 6 | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | exit M1 (normal) | 5 | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:20 | access to parameter b | 4 | | Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | 1 | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:23:17:23 | access to local variable s | 4 | +| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | 1 | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | call to method IsNull | 5 | | Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | 1 | | Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | 1 | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | 2 | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (normal) | 6 | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | exit M2 (normal) | 5 | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:20 | access to parameter b | 4 | | Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | 1 | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:26:24:26 | access to local variable s | 4 | +| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | 1 | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | call to method IsNotNull | 5 | | Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | 1 | | Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | 1 | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | 2 | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (normal) | 6 | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | exit M3 (normal) | 5 | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:20 | access to parameter b | 4 | | Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | 1 | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:23:31:31 | ... == ... | 6 | +| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | 1 | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | call to method IsTrue | 7 | | Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | 1 | | Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | 1 | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | 2 | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (normal) | 6 | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | exit M4 (normal) | 5 | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:20 | access to parameter b | 4 | | Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | 1 | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:23:38:31 | ... != ... | 6 | +| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | 1 | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | call to method IsTrue | 7 | | Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | 1 | | Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | 1 | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | 2 | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (normal) | 6 | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | exit M5 (normal) | 5 | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:20 | access to parameter b | 4 | | Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | 1 | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:24:45:32 | ... != ... | 6 | +| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | 1 | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | call to method IsFalse | 7 | | Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | 1 | | Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | 1 | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | 2 | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (normal) | 6 | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | exit M6 (normal) | 5 | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:20 | access to parameter b | 4 | | Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | 1 | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:24:52:32 | ... == ... | 6 | +| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | 1 | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | call to method IsFalse | 7 | | Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | 1 | | Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | 1 | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | 2 | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (normal) | 6 | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | exit M7 (normal) | 5 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:20 | access to parameter b | 4 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | 1 | +| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 1 | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:31 | ... != ... | 6 | | Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | 1 | | Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | 1 | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 2 | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (normal) | 6 | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | 1 | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | 1 | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | 2 | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | 1 | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | exit M8 (normal) | 5 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:20 | access to parameter b | 4 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | 1 | +| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 1 | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:32 | ... == ... | 6 | | Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | 1 | | Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | 1 | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 2 | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (normal) | 6 | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | 1 | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | 1 | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | 2 | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | 1 | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | exit M9 (normal) | 5 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:20 | access to parameter b | 4 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | 1 | +| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 1 | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:31 | ... == ... | 6 | | Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | 1 | | Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | 1 | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 2 | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (normal) | 6 | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | 1 | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | 1 | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | 2 | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | 1 | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | exit M10 (normal) | 5 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:20 | access to parameter b | 4 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | 1 | +| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 1 | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:32 | ... != ... | 6 | | Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | 1 | | Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | 1 | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 2 | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (normal) | 6 | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | 1 | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | 1 | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | 2 | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | 1 | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | exit M11 (normal) | 5 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:20 | access to parameter b | 4 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | 1 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | 1 | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:22:87:30 | ... != ... | 6 | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | call to method Assert | 7 | | Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | 1 | | Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | 1 | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | 1 | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:13:90:13 | access to parameter b | 7 | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:23:91:23 | access to local variable s | 4 | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:13:90:13 | access to parameter b | 6 | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | call to method IsNull | 5 | | Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | 1 | | Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | 1 | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | 1 | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:13:94:13 | access to parameter b | 7 | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:26:95:26 | access to local variable s | 4 | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:13:94:13 | access to parameter b | 6 | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | call to method IsNotNull | 5 | | Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | 1 | | Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | 1 | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | 1 | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:13:98:13 | access to parameter b | 7 | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:23:99:31 | ... == ... | 6 | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:13:98:13 | access to parameter b | 6 | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | call to method IsTrue | 7 | | Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | 1 | | Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | 1 | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | 1 | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:13 | access to parameter b | 7 | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:23:103:31 | ... != ... | 6 | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:13:102:13 | access to parameter b | 6 | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | call to method IsTrue | 7 | | Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | 1 | | Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | 1 | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | 1 | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:13 | access to parameter b | 7 | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:24:107:32 | ... != ... | 6 | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:13:106:13 | access to parameter b | 6 | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | call to method IsFalse | 7 | | Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | 1 | | Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | 1 | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | 1 | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:13 | access to parameter b | 7 | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:24:111:32 | ... == ... | 6 | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:13:110:13 | access to parameter b | 6 | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | call to method IsFalse | 7 | | Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | 1 | | Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | 1 | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | 1 | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:13 | access to parameter b | 7 | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:13:114:13 | access to parameter b | 6 | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:31 | ... != ... | 6 | | Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | 1 | | Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | 1 | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | 1 | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:13 | access to parameter b | 7 | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | 1 | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | 1 | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | 2 | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | 1 | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:13:118:13 | access to parameter b | 6 | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:32 | ... == ... | 6 | | Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | 1 | | Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | 1 | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | 1 | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:13 | access to parameter b | 7 | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | 1 | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | 1 | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | 1 | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | 1 | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | 1 | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | 2 | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | 2 | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:13:122:13 | access to parameter b | 6 | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:31 | ... == ... | 6 | | Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | 1 | | Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | 1 | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | 1 | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:13 | access to parameter b | 7 | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | 1 | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | 1 | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | 2 | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | 1 | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:13:126:13 | access to parameter b | 6 | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:32 | ... != ... | 6 | | Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | 1 | | Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | 1 | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | 1 | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (normal) | 6 | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | 1 | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | 1 | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | 1 | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | 1 | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | 1 | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | 2 | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | 2 | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | exit M12 (normal) | 5 | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse | 4 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:25:140:26 | access to parameter b1 | 5 | +| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | 8 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | 1 | | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | 1 | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | 1 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | 1 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | 2 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | 2 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:138:10:138:12 | exit M13 (normal) | 4 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | 2 | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | exit Assignments | 5 | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 34 | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 | @@ -395,15 +368,13 @@ | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | 4 | | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | 1 | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | 1 | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:122:23:122:27 | false | 4 | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | 3 | +| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | 7 | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | 7 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | 2 | +| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | 3 | | ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | 1 | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | 2 | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | 2 | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:136:21:136:24 | true | 5 | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | 3 | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | 1 | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | 1 | +| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | 8 | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:142:13:142:13 | access to parameter b | 4 | | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | 2 | | ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:42 | call to method Throw | 3 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected index c705855ac64..2c2f3dbb018 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected @@ -1,696 +1,56 @@ conditionBlock | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:24:9:27 | null | true | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:31:9:32 | "" | false | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | false | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | true | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:24:16:27 | null | true | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:31:16:32 | "" | false | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | false | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | true | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:24:23:27 | null | true | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:31:23:32 | "" | false | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | true | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | false | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:24:30:27 | null | true | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:31:30:32 | "" | false | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | true | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:24:37:27 | null | true | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:31:37:32 | "" | false | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | true | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:24:44:27 | null | true | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:31:44:32 | "" | false | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | false | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:24:51:27 | null | true | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:31:51:32 | "" | false | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | false | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | true | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | false | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [true] ... && ... | true | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | true | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | false | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | true | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | false | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [true] ... && ... | true | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | true | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | false | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | true | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | false | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:17:90:20 | null | true | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:24:90:25 | "" | false | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | false | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:24:94:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | true | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:17:90:20 | null | true | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:24:90:25 | "" | false | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:17:94:20 | null | true | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:24:94:25 | "" | false | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:17:98:20 | null | true | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:24:98:25 | "" | false | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:17:102:20 | null | true | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:24:102:25 | "" | false | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:17:106:20 | null | true | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:24:106:25 | "" | false | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:17:110:20 | null | true | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:24:110:25 | "" | false | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:17:114:20 | null | true | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:24:114:25 | "" | false | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:17:118:20 | null | true | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:24:118:25 | "" | false | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:17:122:20 | null | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:17:126:20 | null | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:17:122:20 | null | true | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:24:122:25 | "" | false | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | false | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:17:126:20 | null | true | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:24:126:25 | "" | false | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | false | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | access to parameter b2 | true | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | false | | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | false | | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:10:21:10:26 | break; | false | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:10:21:10:26 | break; | true | @@ -827,10 +187,6 @@ conditionBlock | ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:69:112:75 | "input" | false | | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:34:117:34 | 0 | true | | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:38:117:38 | 1 | false | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | false | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | true | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | false | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | true | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:143:13:143:43 | ...; | true | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:145:13:145:53 | ...; | false | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | true | @@ -1688,126 +1044,64 @@ conditionBlock conditionFlow | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:24:9:27 | null | true | | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:31:9:32 | "" | false | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | false | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | true | | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:24:16:27 | null | true | | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:31:16:32 | "" | false | | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:24:23:27 | null | true | | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:31:23:32 | "" | false | | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:24:30:27 | null | true | | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:31:30:32 | "" | false | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | true | | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:24:37:27 | null | true | | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:31:37:32 | "" | false | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | true | | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:24:44:27 | null | true | | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:31:44:32 | "" | false | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | false | | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:24:51:27 | null | true | | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | false | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | false | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | true | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | false | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | false | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | true | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | false | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | true | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | true | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | false | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | false | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | true | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | false | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | true | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | true | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | false | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | true | | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | false | | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | true | | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | false | | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | true | | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | true | | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | true | | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | true | | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | true | | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | false | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [false] ... && ... | false | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | true | | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | true | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | true | | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | false | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | true | | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | true | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | false | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | true | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | false | | BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | false | | BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:10:21:10:26 | break; | true | | BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | false | @@ -1908,10 +1202,6 @@ conditionFlow | ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:69:112:75 | "input" | false | | ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:34:117:34 | 0 | true | | ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:38:117:38 | 1 | false | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | false | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | true | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | false | -| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | true | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:143:13:143:43 | ...; | true | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:145:13:145:53 | ...; | false | | Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | true | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index 8904dfb311b..f5368b5c7e9 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -347,12 +347,11 @@ dominance | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:24:9:27 | null | | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:31:9:32 | "" | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:11:9:11:36 | ...; | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:11:9:11:36 | ...; | | Assert.cs:10:9:10:32 | ...; | Assert.cs:10:22:10:22 | access to local variable s | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:27:10:30 | null | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | call to method Assert | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:30 | ... != ... | | Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:7:10:7:11 | exit M1 (normal) | | Assert.cs:11:9:11:36 | ...; | Assert.cs:11:27:11:27 | access to local variable s | @@ -365,11 +364,10 @@ dominance | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:24:16:27 | null | | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:31:16:32 | "" | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:18:9:18:36 | ...; | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:18:9:18:36 | ...; | | Assert.cs:17:9:17:25 | ...; | Assert.cs:17:23:17:23 | access to local variable s | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | exit M2 (normal) | | Assert.cs:18:9:18:36 | ...; | Assert.cs:18:27:18:27 | access to local variable s | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:34 | access to property Length | @@ -381,11 +379,10 @@ dominance | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:24:23:27 | null | | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:31:23:32 | "" | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | | Assert.cs:24:9:24:28 | ...; | Assert.cs:24:26:24:26 | access to local variable s | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | exit M3 (normal) | | Assert.cs:25:9:25:36 | ...; | Assert.cs:25:27:25:27 | access to local variable s | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:34 | access to property Length | @@ -397,12 +394,11 @@ dominance | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:24:30:27 | null | | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:31:30:32 | "" | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:32:9:32:36 | ...; | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:32:9:32:36 | ...; | | Assert.cs:31:9:31:33 | ...; | Assert.cs:31:23:31:23 | access to local variable s | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:28:31:31 | null | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:31 | ... == ... | | Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:28:10:28:11 | exit M4 (normal) | | Assert.cs:32:9:32:36 | ...; | Assert.cs:32:27:32:27 | access to local variable s | @@ -415,12 +411,11 @@ dominance | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:24:37:27 | null | | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:31:37:32 | "" | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:39:9:39:36 | ...; | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:39:9:39:36 | ...; | | Assert.cs:38:9:38:33 | ...; | Assert.cs:38:23:38:23 | access to local variable s | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:28:38:31 | null | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:31 | ... != ... | | Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:35:10:35:11 | exit M5 (normal) | | Assert.cs:39:9:39:36 | ...; | Assert.cs:39:27:39:27 | access to local variable s | @@ -433,12 +428,11 @@ dominance | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:24:44:27 | null | | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:31:44:32 | "" | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:46:9:46:36 | ...; | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:46:9:46:36 | ...; | | Assert.cs:45:9:45:34 | ...; | Assert.cs:45:24:45:24 | access to local variable s | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:29:45:32 | null | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:32 | ... != ... | | Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:42:10:42:11 | exit M6 (normal) | | Assert.cs:46:9:46:36 | ...; | Assert.cs:46:27:46:27 | access to local variable s | @@ -451,12 +445,11 @@ dominance | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:24:51:27 | null | | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:53:9:53:36 | ...; | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:53:9:53:36 | ...; | | Assert.cs:52:9:52:34 | ...; | Assert.cs:52:24:52:24 | access to local variable s | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:29:52:32 | null | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:32 | ... == ... | | Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:49:10:49:11 | exit M7 (normal) | | Assert.cs:53:9:53:36 | ...; | Assert.cs:53:27:53:27 | access to local variable s | @@ -469,16 +462,14 @@ dominance | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:60:9:60:36 | ...; | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:60:9:60:36 | ...; | | Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | @@ -490,16 +481,14 @@ dominance | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:67:9:67:36 | ...; | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:67:9:67:36 | ...; | | Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | @@ -511,16 +500,14 @@ dominance | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:74:9:74:36 | ...; | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:74:9:74:36 | ...; | | Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | @@ -532,16 +519,14 @@ dominance | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:81:9:81:36 | ...; | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:81:9:81:36 | ...; | | Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | @@ -553,11 +538,11 @@ dominance | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:88:9:88:36 | ...; | | Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | call to method Assert | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | | Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | | Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | @@ -568,10 +553,9 @@ dominance | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:92:9:92:36 | ...; | | Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | call to method IsNull | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | | Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | @@ -581,10 +565,9 @@ dominance | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | | Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | call to method IsNotNull | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | | Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | @@ -594,11 +577,10 @@ dominance | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:100:9:100:36 | ...; | | Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | | Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | | Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | @@ -609,11 +591,10 @@ dominance | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:104:9:104:36 | ...; | | Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | | Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | | Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | @@ -624,11 +605,10 @@ dominance | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:108:9:108:36 | ...; | | Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | | Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | | Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | @@ -639,11 +619,10 @@ dominance | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:112:9:112:36 | ...; | | Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | | Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | | Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | @@ -654,15 +633,13 @@ dominance | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:116:9:116:36 | ...; | | Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | | Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | @@ -672,17 +649,14 @@ dominance | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:120:9:120:36 | ...; | | Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | | Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | @@ -692,15 +666,13 @@ dominance | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:124:9:124:36 | ...; | | Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | | Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | @@ -710,17 +682,14 @@ dominance | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:128:9:128:36 | ...; | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:128:9:128:36 | ...; | | Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | @@ -730,17 +699,13 @@ dominance | Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:139:5:142:5 | {...} | | Assert.cs:139:5:142:5 | {...} | Assert.cs:140:9:140:36 | ...; | -| Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:25:140:26 | access to parameter b1 | | Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | this access | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | +| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | access to parameter b3 | +| Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | call to constructor Object | @@ -1431,9 +1396,9 @@ dominance | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} | | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:122:9:122:29 | ...; | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:23:122:27 | false | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | +| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | call to method IsTrue | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} | | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:128:9:128:27 | ...; | @@ -1441,17 +1406,16 @@ dominance | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | | ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | this access | | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | +| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | call to method IsFalse | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} | | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:26 | ...; | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:21:136:24 | true | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | this access | -| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | +| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} | | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:142:9:145:53 | if (...) ... | @@ -4174,7 +4138,6 @@ postDominance | Assert.cs:5:7:5:17 | exit AssertTests | Assert.cs:5:7:5:17 | exit AssertTests (normal) | | Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | {...} | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | call to constructor Object | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | | Assert.cs:7:10:7:11 | exit M1 (normal) | Assert.cs:11:9:11:35 | call to method WriteLine | | Assert.cs:8:5:12:5 | {...} | Assert.cs:7:10:7:11 | enter M1 | | Assert.cs:9:9:9:33 | ... ...; | Assert.cs:8:5:12:5 | {...} | @@ -4182,16 +4145,15 @@ postDominance | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:9:9:33 | ... ...; | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:24:9:27 | null | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:31:9:32 | "" | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:10:22:10:30 | ... != ... | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:30 | ... != ... | | Assert.cs:10:9:10:32 | ...; | Assert.cs:9:16:9:32 | String s = ... | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:9:10:32 | ...; | | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:27:10:30 | null | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:22 | access to local variable s | | Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:27:11:34 | access to property Length | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:10:9:10:31 | call to method Assert | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:9:11:36 | ...; | | Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:27 | access to local variable s | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | | Assert.cs:14:10:14:11 | exit M2 (normal) | Assert.cs:18:9:18:35 | call to method WriteLine | | Assert.cs:15:5:19:5 | {...} | Assert.cs:14:10:14:11 | enter M2 | | Assert.cs:16:9:16:33 | ... ...; | Assert.cs:15:5:19:5 | {...} | @@ -4199,14 +4161,13 @@ postDominance | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:9:16:33 | ... ...; | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:24:16:27 | null | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:31:16:32 | "" | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | | Assert.cs:17:9:17:25 | ...; | Assert.cs:16:16:16:32 | String s = ... | | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:25 | ...; | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:27:18:34 | access to property Length | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:9:18:36 | ...; | | Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:27 | access to local variable s | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | | Assert.cs:21:10:21:11 | exit M3 (normal) | Assert.cs:25:9:25:35 | call to method WriteLine | | Assert.cs:22:5:26:5 | {...} | Assert.cs:21:10:21:11 | enter M3 | | Assert.cs:23:9:23:33 | ... ...; | Assert.cs:22:5:26:5 | {...} | @@ -4214,14 +4175,13 @@ postDominance | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:9:23:33 | ... ...; | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:24:23:27 | null | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:31:23:32 | "" | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | | Assert.cs:24:9:24:28 | ...; | Assert.cs:23:16:23:32 | String s = ... | | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:28 | ...; | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:27:25:34 | access to property Length | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:9:25:36 | ...; | | Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:27 | access to local variable s | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | | Assert.cs:28:10:28:11 | exit M4 (normal) | Assert.cs:32:9:32:35 | call to method WriteLine | | Assert.cs:29:5:33:5 | {...} | Assert.cs:28:10:28:11 | enter M4 | | Assert.cs:30:9:30:33 | ... ...; | Assert.cs:29:5:33:5 | {...} | @@ -4229,16 +4189,15 @@ postDominance | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:9:30:33 | ... ...; | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:24:30:27 | null | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:31:30:32 | "" | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:31:23:31:31 | ... == ... | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:31 | ... == ... | | Assert.cs:31:9:31:33 | ...; | Assert.cs:30:16:30:32 | String s = ... | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:9:31:33 | ...; | | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:28:31:31 | null | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:23 | access to local variable s | | Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:27:32:34 | access to property Length | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:9:32:36 | ...; | | Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:27 | access to local variable s | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | | Assert.cs:35:10:35:11 | exit M5 (normal) | Assert.cs:39:9:39:35 | call to method WriteLine | | Assert.cs:36:5:40:5 | {...} | Assert.cs:35:10:35:11 | enter M5 | | Assert.cs:37:9:37:33 | ... ...; | Assert.cs:36:5:40:5 | {...} | @@ -4246,16 +4205,15 @@ postDominance | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:9:37:33 | ... ...; | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:24:37:27 | null | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:31:37:32 | "" | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:38:23:38:31 | ... != ... | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:31 | ... != ... | | Assert.cs:38:9:38:33 | ...; | Assert.cs:37:16:37:32 | String s = ... | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:9:38:33 | ...; | | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:28:38:31 | null | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:23 | access to local variable s | | Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:27:39:34 | access to property Length | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:9:39:36 | ...; | | Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:27 | access to local variable s | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | | Assert.cs:42:10:42:11 | exit M6 (normal) | Assert.cs:46:9:46:35 | call to method WriteLine | | Assert.cs:43:5:47:5 | {...} | Assert.cs:42:10:42:11 | enter M6 | | Assert.cs:44:9:44:33 | ... ...; | Assert.cs:43:5:47:5 | {...} | @@ -4263,16 +4221,15 @@ postDominance | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:9:44:33 | ... ...; | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:24:44:27 | null | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:31:44:32 | "" | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:45:24:45:32 | ... != ... | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:32 | ... != ... | | Assert.cs:45:9:45:34 | ...; | Assert.cs:44:16:44:32 | String s = ... | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:9:45:34 | ...; | | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:29:45:32 | null | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:24 | access to local variable s | | Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:27:46:34 | access to property Length | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:9:46:36 | ...; | | Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:27 | access to local variable s | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | | Assert.cs:49:10:49:11 | exit M7 (normal) | Assert.cs:53:9:53:35 | call to method WriteLine | | Assert.cs:50:5:54:5 | {...} | Assert.cs:49:10:49:11 | enter M7 | | Assert.cs:51:9:51:33 | ... ...; | Assert.cs:50:5:54:5 | {...} | @@ -4280,16 +4237,15 @@ postDominance | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:9:51:33 | ... ...; | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:24:51:27 | null | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:31:51:32 | "" | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:52:24:52:32 | ... == ... | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:32 | ... == ... | | Assert.cs:52:9:52:34 | ...; | Assert.cs:51:16:51:32 | String s = ... | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:9:52:34 | ...; | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:29:52:32 | null | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:24 | access to local variable s | | Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:27:53:34 | access to property Length | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:9:53:36 | ...; | | Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:27 | access to local variable s | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | | Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:60:9:60:35 | call to method WriteLine | | Assert.cs:57:5:61:5 | {...} | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:57:5:61:5 | {...} | @@ -4297,18 +4253,17 @@ postDominance | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:9:58:33 | ... ...; | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:59:9:59:38 | ...; | Assert.cs:58:16:58:32 | String s = ... | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:9:59:38 | ...; | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:28:59:31 | null | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:31 | ... != ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:23 | access to local variable s | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:31 | ... != ... | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:34 | access to property Length | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:9:59:37 | call to method IsTrue | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:9:60:36 | ...; | | Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:27 | access to local variable s | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | | Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:67:9:67:35 | call to method WriteLine | | Assert.cs:64:5:68:5 | {...} | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:64:5:68:5 | {...} | @@ -4316,18 +4271,17 @@ postDominance | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:9:65:33 | ... ...; | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:24:66:37 | [false] ... \|\| ... | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:66:9:66:39 | ...; | Assert.cs:65:16:65:32 | String s = ... | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:9:66:39 | ...; | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:29:66:32 | null | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:32 | ... == ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:24 | access to local variable s | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:32 | ... == ... | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:34 | access to property Length | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:9:66:38 | call to method IsFalse | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:9:67:36 | ...; | | Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:27 | access to local variable s | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | | Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:74:9:74:35 | call to method WriteLine | | Assert.cs:71:5:75:5 | {...} | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:71:5:75:5 | {...} | @@ -4335,18 +4289,17 @@ postDominance | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:9:72:33 | ... ...; | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:73:9:73:38 | ...; | Assert.cs:72:16:72:32 | String s = ... | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:9:73:38 | ...; | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:28:73:31 | null | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:31 | ... == ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:23 | access to local variable s | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:31 | ... == ... | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:34 | access to property Length | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:9:73:37 | call to method IsTrue | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:9:74:36 | ...; | | Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:27 | access to local variable s | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | | Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:81:9:81:35 | call to method WriteLine | | Assert.cs:78:5:82:5 | {...} | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:78:5:82:5 | {...} | @@ -4354,15 +4307,15 @@ postDominance | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:9:79:33 | ... ...; | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:24:80:37 | [false] ... \|\| ... | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:80:9:80:39 | ...; | Assert.cs:79:16:79:32 | String s = ... | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:9:80:39 | ...; | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:29:80:32 | null | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:32 | ... != ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:24 | access to local variable s | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:32 | ... != ... | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:34 | access to property Length | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:9:80:38 | call to method IsFalse | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:9:81:36 | ...; | | Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:27 | access to local variable s | | Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:128:9:128:35 | call to method WriteLine | @@ -4372,13 +4325,13 @@ postDominance | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:9:86:33 | ... ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:22:87:30 | ... != ... | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:22:87:30 | ... != ... | | Assert.cs:87:9:87:32 | ...; | Assert.cs:86:16:86:32 | String s = ... | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:9:87:32 | ...; | | Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:27:87:30 | null | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:22 | access to local variable s | | Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:27:88:34 | access to property Length | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:87:9:87:31 | call to method Assert | | Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:9:88:36 | ...; | | Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:27 | access to local variable s | | Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:25 | ... ? ... : ... | @@ -4386,11 +4339,11 @@ postDominance | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:9:90:26 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | | Assert.cs:91:9:91:25 | ...; | Assert.cs:90:9:90:25 | ... = ... | | Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:25 | ...; | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:27:92:34 | access to property Length | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:9:92:36 | ...; | | Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:27 | access to local variable s | | Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:25 | ... ? ... : ... | @@ -4398,11 +4351,11 @@ postDominance | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:9:94:26 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | | Assert.cs:95:9:95:28 | ...; | Assert.cs:94:9:94:25 | ... = ... | | Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:28 | ...; | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:27:96:34 | access to property Length | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:9:96:36 | ...; | | Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:27 | access to local variable s | | Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:25 | ... ? ... : ... | @@ -4410,13 +4363,13 @@ postDominance | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:9:98:26 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:23:99:31 | ... == ... | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:23:99:31 | ... == ... | | Assert.cs:99:9:99:33 | ...; | Assert.cs:98:9:98:25 | ... = ... | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:9:99:33 | ...; | | Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:28:99:31 | null | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:23 | access to local variable s | | Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:27:100:34 | access to property Length | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | | Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:9:100:36 | ...; | | Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:27 | access to local variable s | | Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:25 | ... ? ... : ... | @@ -4424,13 +4377,13 @@ postDominance | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:9:102:26 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:23:103:31 | ... != ... | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:23:103:31 | ... != ... | | Assert.cs:103:9:103:33 | ...; | Assert.cs:102:9:102:25 | ... = ... | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:9:103:33 | ...; | | Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:28:103:31 | null | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:23 | access to local variable s | | Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:27:104:34 | access to property Length | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | | Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:9:104:36 | ...; | | Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:27 | access to local variable s | | Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:25 | ... ? ... : ... | @@ -4438,13 +4391,13 @@ postDominance | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:9:106:26 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:24:107:32 | ... != ... | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:24:107:32 | ... != ... | | Assert.cs:107:9:107:34 | ...; | Assert.cs:106:9:106:25 | ... = ... | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:9:107:34 | ...; | | Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:29:107:32 | null | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:24 | access to local variable s | | Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:27:108:34 | access to property Length | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | | Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:9:108:36 | ...; | | Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:27 | access to local variable s | | Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:25 | ... ? ... : ... | @@ -4452,13 +4405,13 @@ postDominance | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:9:110:26 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:24:111:32 | ... == ... | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:24:111:32 | ... == ... | | Assert.cs:111:9:111:34 | ...; | Assert.cs:110:9:110:25 | ... = ... | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:9:111:34 | ...; | | Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:29:111:32 | null | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:24 | access to local variable s | | Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:27:112:34 | access to property Length | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | | Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:9:112:36 | ...; | | Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:27 | access to local variable s | | Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:25 | ... ? ... : ... | @@ -4466,15 +4419,15 @@ postDominance | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:9:114:26 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:115:9:115:38 | ...; | Assert.cs:114:9:114:25 | ... = ... | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:9:115:38 | ...; | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:28:115:31 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:31 | ... != ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:23 | access to local variable s | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:31 | ... != ... | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:34 | access to property Length | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:9:115:37 | call to method IsTrue | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:9:116:36 | ...; | | Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:27 | access to local variable s | | Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:25 | ... ? ... : ... | @@ -4482,16 +4435,16 @@ postDominance | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:9:118:26 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:119:9:119:40 | ...; | Assert.cs:118:9:118:25 | ... = ... | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:9:119:40 | ...; | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:29:119:32 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:32 | ... == ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:37:119:38 | !... | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:24 | access to local variable s | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:32 | ... == ... | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:34 | access to property Length | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:9:119:39 | call to method IsFalse | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:9:120:36 | ...; | | Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:27 | access to local variable s | | Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:25 | ... ? ... : ... | @@ -4499,15 +4452,15 @@ postDominance | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:9:122:26 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:123:9:123:38 | ...; | Assert.cs:122:9:122:25 | ... = ... | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:9:123:38 | ...; | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:28:123:31 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:31 | ... == ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:23 | access to local variable s | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:31 | ... == ... | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:34 | access to property Length | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:9:123:37 | call to method IsTrue | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:9:124:36 | ...; | | Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:27 | access to local variable s | | Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:25 | ... ? ... : ... | @@ -4515,16 +4468,16 @@ postDominance | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:9:126:26 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:127:9:127:40 | ...; | Assert.cs:126:9:126:25 | ... = ... | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:9:127:40 | ...; | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:29:127:32 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:32 | ... != ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:37:127:38 | !... | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:24 | access to local variable s | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:32 | ... != ... | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:34 | access to property Length | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:9:127:39 | call to method IsFalse | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:9:128:36 | ...; | | Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:27 | access to local variable s | | Assert.cs:131:18:131:32 | exit AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | @@ -4532,15 +4485,13 @@ postDominance | Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | enter AssertTrueFalse | | Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:141:9:141:15 | return ...; | | Assert.cs:139:5:142:5 | {...} | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:33:140:34 | access to parameter b3 | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:36 | ...; | | Assert.cs:140:9:140:36 | ...; | Assert.cs:139:5:142:5 | {...} | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:9:140:35 | this access | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:25:140:26 | access to parameter b1 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | +| Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:29:140:30 | access to parameter b2 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | enter Assignments | | Assignments.cs:1:7:1:17 | exit Assignments | Assignments.cs:1:7:1:17 | exit Assignments (normal) | | Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | {...} | @@ -5214,8 +5165,9 @@ postDominance | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:38:117:38 | 1 | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:16:117:16 | access to parameter s | | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | +| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:122:9:122:28 | call to method IsTrue | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:122:23:122:27 | false | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:121:5:124:5 | {...} | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:29 | ...; | | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | @@ -5224,13 +5176,13 @@ postDominance | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access | | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:27 | ...; | | ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:127:5:130:5 | {...} | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:33:132:49 | call to method IsFalse | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:10:132:20 | enter AssertFalse | | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | +| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:136:21:136:24 | true | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:26 | ...; | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:135:5:138:5 | {...} | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | this access | @@ -7549,1418 +7501,970 @@ blockDominance | Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | enter AssertTests | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | enter M1 | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | exit M1 | +| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | exit M1 (abnormal) | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:32 | ... ? ... : ... | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:24:9:27 | null | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:31:9:32 | "" | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:11:9:11:36 | ...; | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | +| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | exit M1 | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | exit M1 (abnormal) | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:11:9:11:36 | ...; | | Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | | Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | enter M2 | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | exit M2 | +| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | exit M2 (abnormal) | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:32 | ... ? ... : ... | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:24:16:27 | null | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:31:16:32 | "" | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:18:9:18:36 | ...; | | Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | +| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | exit M2 | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | exit M2 (abnormal) | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:18:9:18:36 | ...; | | Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | | Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | enter M3 | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | exit M3 | +| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | exit M3 (abnormal) | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:32 | ... ? ... : ... | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:24:23:27 | null | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:31:23:32 | "" | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:25:9:25:36 | ...; | | Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | +| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | exit M3 | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | exit M3 (abnormal) | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:25:9:25:36 | ...; | | Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | | Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | enter M4 | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | exit M4 | +| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | exit M4 (abnormal) | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:32 | ... ? ... : ... | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:24:30:27 | null | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:31:30:32 | "" | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:32:9:32:36 | ...; | | Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | +| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | exit M4 | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | exit M4 (abnormal) | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:32:9:32:36 | ...; | | Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | | Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | enter M5 | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | exit M5 | +| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | exit M5 (abnormal) | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:32 | ... ? ... : ... | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:24:37:27 | null | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:31:37:32 | "" | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:39:9:39:36 | ...; | | Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | +| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | exit M5 | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | exit M5 (abnormal) | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:39:9:39:36 | ...; | | Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | | Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | enter M6 | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | exit M6 | +| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | exit M6 (abnormal) | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:32 | ... ? ... : ... | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:24:44:27 | null | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:31:44:32 | "" | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:46:9:46:36 | ...; | | Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | +| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | exit M6 | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | exit M6 (abnormal) | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:46:9:46:36 | ...; | | Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | | Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | enter M7 | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | exit M7 | +| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | exit M7 (abnormal) | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:32 | ... ? ... : ... | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:24:51:27 | null | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:31:51:32 | "" | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:53:9:53:36 | ...; | | Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | +| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | exit M7 | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | exit M7 (abnormal) | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:53:9:53:36 | ...; | | Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | | Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | exit M8 (abnormal) | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:32 | ... ? ... : ... | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | [false] ... && ... | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:60:9:60:36 | ...; | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | exit M8 (abnormal) | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [false] ... && ... | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:60:9:60:36 | ...; | | Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | | Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | exit M8 (abnormal) | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:60:9:60:36 | ...; | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | exit M9 (abnormal) | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:32 | ... ? ... : ... | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | [true] ... \|\| ... | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:67:9:67:36 | ...; | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | exit M9 (abnormal) | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:67:9:67:36 | ...; | | Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | | Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | exit M9 (abnormal) | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:67:9:67:36 | ...; | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | exit M10 (abnormal) | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:32 | ... ? ... : ... | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | [false] ... && ... | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:74:9:74:36 | ...; | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | exit M10 (abnormal) | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [false] ... && ... | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:74:9:74:36 | ...; | | Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | | Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | exit M10 (abnormal) | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:74:9:74:36 | ...; | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | exit M11 (abnormal) | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:32 | ... ? ... : ... | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | [true] ... \|\| ... | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:81:9:81:36 | ...; | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | exit M11 (abnormal) | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:81:9:81:36 | ...; | | Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | | Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | exit M11 (abnormal) | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:81:9:81:36 | ...; | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 (abnormal) | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:88:9:88:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:17:90:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:24:90:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:92:9:92:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:17:94:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:24:94:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:96:9:96:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:17:98:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:24:98:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:100:9:100:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:17:102:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:24:102:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:104:9:104:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:17:106:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:24:106:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:108:9:108:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:17:110:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:24:110:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:112:9:112:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:17:114:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:24:114:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:116:9:116:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:17:118:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:24:118:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:120:9:120:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:17:122:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:24:122:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:124:9:124:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:17:126:20 | null | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:24:126:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:128:9:128:36 | ...; | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 (abnormal) | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | | Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:17:90:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:90:24:90:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:17:94:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:94:24:94:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:17:98:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:98:24:98:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:17:102:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:102:24:102:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:17:106:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:106:24:106:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:17:110:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:110:24:110:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:17:114:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:114:24:114:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:17:118:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:118:24:118:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:17:122:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:122:24:122:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:17:126:20 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:126:24:126:25 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | | Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:17:94:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:94:24:94:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:17:98:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:98:24:98:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:17:102:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:102:24:102:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:17:106:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:106:24:106:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:17:110:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:110:24:110:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:17:114:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:114:24:114:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:17:118:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:118:24:118:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:17:122:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:122:24:122:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:17:126:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:126:24:126:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | | Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:17:98:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:98:24:98:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:17:102:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:102:24:102:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:17:106:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:106:24:106:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:17:110:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:110:24:110:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:17:114:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:114:24:114:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:17:118:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:118:24:118:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:17:122:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:122:24:122:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:17:126:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:126:24:126:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | | Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | | Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | | Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | | Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | | Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:17:118:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:17:122:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:17:126:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | | Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:17:122:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:17:126:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:17:122:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:17:126:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | | Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:17:126:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:126:24:126:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:17:126:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:126:24:126:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | | Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:128:9:128:36 | ...; | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | exit M13 | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | +| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:141:9:141:15 | return ...; | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | enter Assignments | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | @@ -9458,19 +8962,15 @@ blockDominance | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | enter AssertFalse | | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | +| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | +| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:143:13:143:43 | ...; | @@ -11815,214 +11315,194 @@ postBlockDominance | Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | enter AssertTests | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | enter M1 | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | +| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | enter M1 | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:24:9:27 | null | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:31:9:32 | "" | | Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | | Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | enter M1 | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:9:24:9:27 | null | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:9:31:9:32 | "" | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | enter M1 | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:20:9:32 | ... ? ... : ... | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:24:9:27 | null | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:31:9:32 | "" | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | enter M2 | | Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | +| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | enter M2 | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:24:16:27 | null | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:31:16:32 | "" | | Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | | Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | enter M2 | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:16:24:16:27 | null | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:16:31:16:32 | "" | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | enter M2 | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:20:16:32 | ... ? ... : ... | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:24:16:27 | null | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:31:16:32 | "" | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | enter M3 | | Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | +| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | enter M3 | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:24:23:27 | null | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:31:23:32 | "" | | Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | | Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | enter M3 | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:23:24:23:27 | null | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:23:31:23:32 | "" | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | enter M3 | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:20:23:32 | ... ? ... : ... | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:24:23:27 | null | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:31:23:32 | "" | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | enter M4 | | Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | +| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | enter M4 | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:24:30:27 | null | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:31:30:32 | "" | | Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | | Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | enter M4 | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:30:24:30:27 | null | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:30:31:30:32 | "" | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | enter M4 | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:20:30:32 | ... ? ... : ... | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:24:30:27 | null | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:31:30:32 | "" | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | enter M5 | | Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | +| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | enter M5 | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:24:37:27 | null | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:31:37:32 | "" | | Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | | Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | enter M5 | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:37:24:37:27 | null | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:37:31:37:32 | "" | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | enter M5 | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:20:37:32 | ... ? ... : ... | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:24:37:27 | null | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:31:37:32 | "" | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | enter M6 | | Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | +| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | enter M6 | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:24:44:27 | null | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:31:44:32 | "" | | Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | | Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | enter M6 | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:44:24:44:27 | null | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:44:31:44:32 | "" | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | enter M6 | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:20:44:32 | ... ? ... : ... | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:24:44:27 | null | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:31:44:32 | "" | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | enter M7 | | Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | +| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | enter M7 | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:24:51:27 | null | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:31:51:32 | "" | | Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | | Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | enter M7 | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:51:24:51:27 | null | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:51:31:51:32 | "" | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | enter M7 | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:20:51:32 | ... ? ... : ... | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:24:51:27 | null | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:31:51:32 | "" | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | +| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | enter M8 | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | | Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | | Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:24:58:27 | null | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:23:59:36 | [false] ... && ... | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:24:58:27 | null | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:23:59:36 | [true] ... && ... | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:24:58:27 | null | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:31:58:32 | "" | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | enter M8 | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:24:58:27 | null | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:31:58:32 | "" | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | enter M8 | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:24:58:27 | null | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:31:58:32 | "" | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:23:59:36 | ... && ... | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | +| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | enter M9 | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | | Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | | Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:24:65:27 | null | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:24:65:27 | null | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:24:66:37 | [false] ... \|\| ... | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:24:65:27 | null | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:65:31:65:32 | "" | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | enter M9 | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:24:65:27 | null | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:31:65:32 | "" | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | enter M9 | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:24:65:27 | null | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:31:65:32 | "" | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:24:66:37 | ... \|\| ... | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | +| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | enter M10 | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | | Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | | Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:24:72:27 | null | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:23:73:36 | [false] ... && ... | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:24:72:27 | null | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:23:73:36 | [true] ... && ... | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:24:72:27 | null | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:72:31:72:32 | "" | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | enter M10 | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:24:72:27 | null | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:31:72:32 | "" | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | enter M10 | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:24:72:27 | null | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:31:72:32 | "" | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:23:73:36 | ... && ... | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | +| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | enter M11 | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | | Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | | Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:24:79:27 | null | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:24:79:27 | null | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:24:80:37 | [false] ... \|\| ... | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:24:79:27 | null | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:31:79:32 | "" | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | enter M11 | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:24:79:27 | null | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:31:79:32 | "" | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | enter M11 | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:24:79:27 | null | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:31:79:32 | "" | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:24:80:37 | ... \|\| ... | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | @@ -12032,1067 +11512,775 @@ postBlockDominance | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | | Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | | Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:24:86:27 | null | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:86:31:86:32 | "" | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | | Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | | Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:24:86:27 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:86:31:86:32 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:17:90:20 | null | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:90:24:90:25 | "" | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | | Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | | Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:24:86:27 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:86:31:86:32 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:17:90:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:90:24:90:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:17:94:20 | null | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:94:24:94:25 | "" | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | | Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | | Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | | Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | | Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | | Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | | Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | | Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | | Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | | Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | | Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:23:115:36 | [false] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:24:86:27 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:86:31:86:32 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:17:90:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:90:24:90:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:17:94:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:94:24:94:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:17:98:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:98:24:98:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:17:102:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:102:24:102:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:17:106:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:106:24:106:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:17:110:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:110:24:110:25 | "" | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:17:114:20 | null | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | | Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | | Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:24:86:27 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:17:90:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:17:94:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:17:98:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:17:102:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:17:106:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:17:110:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:17:114:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:17:118:20 | null | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:37:119:38 | [true] !... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:24:86:27 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:86:31:86:32 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:17:90:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:90:24:90:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:17:94:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:94:24:94:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:17:98:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:98:24:98:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:17:102:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:102:24:102:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:17:106:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:106:24:106:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:17:110:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:110:24:110:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:17:114:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:114:24:114:25 | "" | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:17:118:20 | null | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | | Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | | Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:24:86:27 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:86:31:86:32 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:17:90:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:90:24:90:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:17:94:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:94:24:94:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:17:98:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:98:24:98:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:17:102:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:102:24:102:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:17:106:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:106:24:106:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:17:110:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:110:24:110:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:17:114:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:114:24:114:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:17:118:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:118:24:118:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:17:122:20 | null | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:23:123:36 | [false] ... && ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:24:86:27 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:86:31:86:32 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:17:90:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:90:24:90:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:17:94:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:94:24:94:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:17:98:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:98:24:98:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:17:102:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:102:24:102:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:17:106:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:106:24:106:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:17:110:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:110:24:110:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:17:114:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:114:24:114:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:17:118:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:118:24:118:25 | "" | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:17:122:20 | null | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | [true] ... && ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:37:119:38 | [false] !... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | [true] ... && ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | | Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | | Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:24:86:27 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:86:31:86:32 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:17:90:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:90:24:90:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:17:94:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:94:24:94:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:17:98:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:98:24:98:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:17:102:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:102:24:102:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:17:106:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:106:24:106:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:17:110:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:110:24:110:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:17:114:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:114:24:114:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:17:118:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:118:24:118:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:17:122:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:122:24:122:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:17:126:20 | null | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:24:86:27 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:17:90:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:17:94:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:17:98:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:17:102:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:17:106:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:17:110:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:17:114:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:17:118:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:17:122:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:17:126:20 | null | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:37:127:38 | [false] !... | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:37:127:38 | [true] !... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:24:86:27 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:86:31:86:32 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:17:90:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:90:24:90:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:17:94:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:94:24:94:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:17:98:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:98:24:98:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:17:102:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:102:24:102:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:17:106:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:106:24:106:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:17:110:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:110:24:110:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:17:114:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:114:24:114:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:17:118:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:118:24:118:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:24:119:38 | [false] ... \|\| ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:17:122:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:122:24:122:25 | "" | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:17:126:20 | null | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:126:24:126:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:24:86:27 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:31:86:32 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:17:90:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:24:90:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:17:94:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:24:94:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:17:98:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:24:98:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:17:102:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:24:102:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:17:106:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:24:106:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:17:110:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:24:110:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:17:114:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:24:114:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:17:118:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:24:118:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:17:122:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:24:122:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:17:126:20 | null | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:24:126:25 | "" | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | enter M13 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | enter Assignments | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | @@ -13534,15 +12722,13 @@ postBlockDominance | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | enter AssertFalse | | ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | enter AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | enter AssertFalse | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | | ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:43 | ...; | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index a3a6a3cddfc..4a4631e454d 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -371,8 +371,7 @@ nodeEnclosing | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:24:9:27 | null | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:31:9:32 | "" | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:9:10:32 | ...; | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:7:10:7:11 | M1 | @@ -392,8 +391,7 @@ nodeEnclosing | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:24:16:27 | null | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:31:16:32 | "" | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | M2 | | Assert.cs:17:9:17:25 | ...; | Assert.cs:14:10:14:11 | M2 | | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:14:10:14:11 | M2 | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | M2 | @@ -411,8 +409,7 @@ nodeEnclosing | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:24:23:27 | null | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:31:23:32 | "" | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | | Assert.cs:24:9:24:28 | ...; | Assert.cs:21:10:21:11 | M3 | | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:21:10:21:11 | M3 | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | M3 | @@ -430,8 +427,7 @@ nodeEnclosing | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:24:30:27 | null | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:31:30:32 | "" | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:9:31:33 | ...; | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:28:10:28:11 | M4 | @@ -451,8 +447,7 @@ nodeEnclosing | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:24:37:27 | null | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:31:37:32 | "" | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:9:38:33 | ...; | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:35:10:35:11 | M5 | @@ -472,8 +467,7 @@ nodeEnclosing | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:24:44:27 | null | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:31:44:32 | "" | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:9:45:34 | ...; | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:42:10:42:11 | M6 | @@ -493,8 +487,7 @@ nodeEnclosing | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:24:51:27 | null | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:31:51:32 | "" | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:9:52:34 | ...; | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:49:10:49:11 | M7 | @@ -514,13 +507,11 @@ nodeEnclosing | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:38 | ...; | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:28:59:31 | null | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | M8 | @@ -538,13 +529,11 @@ nodeEnclosing | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:39 | ...; | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:29:66:32 | null | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | M9 | @@ -562,13 +551,11 @@ nodeEnclosing | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:38 | ...; | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:28:73:31 | null | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | M10 | @@ -586,13 +573,11 @@ nodeEnclosing | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:39 | ...; | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:29:80:32 | null | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | M11 | @@ -610,8 +595,7 @@ nodeEnclosing | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:9:87:32 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:22:87:30 | ... != ... | Assert.cs:84:10:84:12 | M12 | @@ -626,8 +610,7 @@ nodeEnclosing | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:91:9:91:25 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | @@ -640,8 +623,7 @@ nodeEnclosing | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:95:9:95:28 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | @@ -654,8 +636,7 @@ nodeEnclosing | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:9:99:33 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:23:99:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | @@ -670,8 +651,7 @@ nodeEnclosing | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:9:103:33 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:23:103:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | @@ -686,8 +666,7 @@ nodeEnclosing | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:9:107:34 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:24:107:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | @@ -702,8 +681,7 @@ nodeEnclosing | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:9:111:34 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:24:111:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | @@ -718,13 +696,11 @@ nodeEnclosing | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:9:115:38 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:28:115:31 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | @@ -737,16 +713,13 @@ nodeEnclosing | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:9:119:40 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:29:119:32 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | !... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | M12 | @@ -758,13 +731,11 @@ nodeEnclosing | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:9:123:38 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:28:123:31 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | @@ -777,16 +748,13 @@ nodeEnclosing | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:40 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:29:127:32 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:37:127:38 | !... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 | @@ -801,17 +769,12 @@ nodeEnclosing | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | M13 | | Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:138:10:138:12 | M13 | | Assert.cs:139:5:142:5 | {...} | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:9:140:35 | this access | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:9:140:36 | ...; | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | M13 | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | Assignments | @@ -1575,7 +1538,7 @@ nodeEnclosing | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | @@ -1589,14 +1552,13 @@ nodeEnclosing | ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | @@ -4250,176 +4212,149 @@ blockEnclosing | Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | M1 | | Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:24:9:27 | null | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:31:9:32 | "" | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | M1 | | Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | M2 | | Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:24:16:27 | null | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:31:16:32 | "" | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | M2 | | Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | M3 | | Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:24:23:27 | null | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:31:23:32 | "" | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | M3 | | Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | M4 | | Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:24:30:27 | null | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:31:30:32 | "" | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | M4 | | Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | M5 | | Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:24:37:27 | null | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:31:37:32 | "" | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | M5 | | Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | M6 | | Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:24:44:27 | null | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:31:44:32 | "" | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | M6 | | Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | M7 | | Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:24:51:27 | null | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:31:51:32 | "" | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | M7 | | Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | M8 | | Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | M8 | | Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | M9 | | Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | M9 | | Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | M10 | | Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | M10 | | Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | M11 | | Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | M11 | | Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | M12 | | Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | M12 | | Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse | | Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | M13 | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | @@ -4626,14 +4561,12 @@ blockEnclosing | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected index 495c74f169c..11880f4f825 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected @@ -327,8 +327,7 @@ | Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | call to method Assert | exit | | Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | call to method Assert | normal | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | normal | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | ... != ... | false | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | ... != ... | true | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | ... != ... | normal | | Assert.cs:10:27:10:30 | null | Assert.cs:10:27:10:30 | null | normal | | Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:9:11:35 | call to method WriteLine | normal | | Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:35 | call to method WriteLine | normal | @@ -347,8 +346,7 @@ | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:9:17:24 | call to method IsNull | throw(AssertFailedException) | | Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | normal | | Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | non-null | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | null | +| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | normal | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:9:18:35 | call to method WriteLine | normal | | Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:35 | call to method WriteLine | normal | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:27 | access to local variable s | normal | @@ -366,8 +364,7 @@ | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:9:24:27 | call to method IsNotNull | throw(AssertFailedException) | | Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | normal | | Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | non-null | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | null | +| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | normal | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:9:25:35 | call to method WriteLine | normal | | Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:35 | call to method WriteLine | normal | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:27 | access to local variable s | normal | @@ -386,8 +383,7 @@ | Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | normal | | Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | throw(AssertFailedException) | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | normal | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | ... == ... | false | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | ... == ... | true | +| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | ... == ... | normal | | Assert.cs:31:28:31:31 | null | Assert.cs:31:28:31:31 | null | normal | | Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:9:32:35 | call to method WriteLine | normal | | Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:35 | call to method WriteLine | normal | @@ -407,8 +403,7 @@ | Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | normal | | Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | throw(AssertFailedException) | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | normal | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | ... != ... | false | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | ... != ... | true | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | ... != ... | normal | | Assert.cs:38:28:38:31 | null | Assert.cs:38:28:38:31 | null | normal | | Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:9:39:35 | call to method WriteLine | normal | | Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:35 | call to method WriteLine | normal | @@ -428,8 +423,7 @@ | Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | normal | | Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | throw(AssertFailedException) | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | normal | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | ... != ... | false | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | ... != ... | true | +| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | ... != ... | normal | | Assert.cs:45:29:45:32 | null | Assert.cs:45:29:45:32 | null | normal | | Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:9:46:35 | call to method WriteLine | normal | | Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:35 | call to method WriteLine | normal | @@ -449,8 +443,7 @@ | Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | normal | | Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | throw(AssertFailedException) | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | normal | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | ... == ... | false | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | ... == ... | true | +| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | ... == ... | normal | | Assert.cs:52:29:52:32 | null | Assert.cs:52:29:52:32 | null | normal | | Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:9:53:35 | call to method WriteLine | normal | | Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:35 | call to method WriteLine | normal | @@ -472,11 +465,9 @@ | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | normal | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | ... != ... | false | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | ... != ... | true | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | false | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | true | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | normal | | Assert.cs:59:28:59:31 | null | Assert.cs:59:28:59:31 | null | normal | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | false | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | true | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | normal | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:9:60:35 | call to method WriteLine | normal | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:35 | call to method WriteLine | normal | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:27 | access to local variable s | normal | @@ -497,11 +488,9 @@ | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | normal | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | ... == ... | false | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | ... == ... | true | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | false | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | true | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | normal | | Assert.cs:66:29:66:32 | null | Assert.cs:66:29:66:32 | null | normal | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | true | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | normal | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:9:67:35 | call to method WriteLine | normal | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:35 | call to method WriteLine | normal | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:27 | access to local variable s | normal | @@ -522,11 +511,9 @@ | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s | normal | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | ... == ... | false | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | ... == ... | true | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | false | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | true | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | normal | | Assert.cs:73:28:73:31 | null | Assert.cs:73:28:73:31 | null | normal | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | false | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | true | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | normal | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:9:74:35 | call to method WriteLine | normal | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:35 | call to method WriteLine | normal | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:27 | access to local variable s | normal | @@ -547,11 +534,9 @@ | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | normal | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | ... != ... | false | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | ... != ... | true | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | false | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | true | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | normal | | Assert.cs:80:29:80:32 | null | Assert.cs:80:29:80:32 | null | normal | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | true | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | normal | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:9:81:35 | call to method WriteLine | normal | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:35 | call to method WriteLine | normal | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:27 | access to local variable s | normal | @@ -580,8 +565,7 @@ | Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | call to method Assert | exit | | Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | call to method Assert | normal | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:22:87:22 | access to local variable s | normal | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | ... != ... | false | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | ... != ... | true | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | ... != ... | normal | | Assert.cs:87:27:87:30 | null | Assert.cs:87:27:87:30 | null | normal | | Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:9:88:35 | call to method WriteLine | normal | | Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:35 | call to method WriteLine | normal | @@ -598,8 +582,7 @@ | Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:9:91:24 | call to method IsNull | throw(AssertFailedException) | | Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | normal | | Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:23:91:23 | access to local variable s | non-null | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:23:91:23 | access to local variable s | null | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:23:91:23 | access to local variable s | normal | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:9:92:35 | call to method WriteLine | normal | | Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:35 | call to method WriteLine | normal | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:27 | access to local variable s | normal | @@ -615,8 +598,7 @@ | Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:9:95:27 | call to method IsNotNull | throw(AssertFailedException) | | Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | normal | | Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:26:95:26 | access to local variable s | non-null | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:26:95:26 | access to local variable s | null | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:26:95:26 | access to local variable s | normal | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:9:96:35 | call to method WriteLine | normal | | Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:35 | call to method WriteLine | normal | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:27 | access to local variable s | normal | @@ -633,8 +615,7 @@ | Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | normal | | Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | throw(AssertFailedException) | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:23:99:23 | access to local variable s | normal | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | ... == ... | false | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | ... == ... | true | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | ... == ... | normal | | Assert.cs:99:28:99:31 | null | Assert.cs:99:28:99:31 | null | normal | | Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:9:100:35 | call to method WriteLine | normal | | Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:35 | call to method WriteLine | normal | @@ -652,8 +633,7 @@ | Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | normal | | Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | throw(AssertFailedException) | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:23:103:23 | access to local variable s | normal | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | ... != ... | false | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | ... != ... | true | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | ... != ... | normal | | Assert.cs:103:28:103:31 | null | Assert.cs:103:28:103:31 | null | normal | | Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:9:104:35 | call to method WriteLine | normal | | Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:35 | call to method WriteLine | normal | @@ -671,8 +651,7 @@ | Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | normal | | Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | throw(AssertFailedException) | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:24:107:24 | access to local variable s | normal | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | ... != ... | false | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | ... != ... | true | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | ... != ... | normal | | Assert.cs:107:29:107:32 | null | Assert.cs:107:29:107:32 | null | normal | | Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:9:108:35 | call to method WriteLine | normal | | Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:35 | call to method WriteLine | normal | @@ -690,8 +669,7 @@ | Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | normal | | Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | throw(AssertFailedException) | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:24:111:24 | access to local variable s | normal | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | ... == ... | false | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | ... == ... | true | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | ... == ... | normal | | Assert.cs:111:29:111:32 | null | Assert.cs:111:29:111:32 | null | normal | | Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:9:112:35 | call to method WriteLine | normal | | Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:35 | call to method WriteLine | normal | @@ -711,11 +689,9 @@ | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:23:115:23 | access to local variable s | normal | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | ... != ... | false | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | ... != ... | true | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | false | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | true | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | normal | | Assert.cs:115:28:115:31 | null | Assert.cs:115:28:115:31 | null | normal | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | false | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | normal | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:9:116:35 | call to method WriteLine | normal | | Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:35 | call to method WriteLine | normal | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:27 | access to local variable s | normal | @@ -734,13 +710,10 @@ | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:24:119:24 | access to local variable s | normal | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | ... == ... | false | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | ... == ... | true | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | false | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | true | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | normal | | Assert.cs:119:29:119:32 | null | Assert.cs:119:29:119:32 | null | normal | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... | false | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | true | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... | normal | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | normal | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:9:120:35 | call to method WriteLine | normal | | Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:35 | call to method WriteLine | normal | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:27 | access to local variable s | normal | @@ -759,11 +732,9 @@ | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:23:123:23 | access to local variable s | normal | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | ... == ... | false | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | ... == ... | true | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | false | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | true | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | normal | | Assert.cs:123:28:123:31 | null | Assert.cs:123:28:123:31 | null | normal | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | false | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | normal | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:9:124:35 | call to method WriteLine | normal | | Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:35 | call to method WriteLine | normal | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:27 | access to local variable s | normal | @@ -782,13 +753,10 @@ | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:24:127:24 | access to local variable s | normal | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | ... != ... | false | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | ... != ... | true | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | false | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | true | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | normal | | Assert.cs:127:29:127:32 | null | Assert.cs:127:29:127:32 | null | normal | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... | false | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | true | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... | normal | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | normal | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:9:128:35 | call to method WriteLine | normal | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:35 | call to method WriteLine | normal | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:27 | access to local variable s | normal | @@ -801,10 +769,8 @@ | Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:35 | this access | normal | | Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | normal | | Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | throw(Exception) | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:25:140:26 | access to parameter b1 | false | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:25:140:26 | access to parameter b1 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | false | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | true | +| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:25:140:26 | access to parameter b1 | normal | +| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | normal | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:33:140:34 | access to parameter b3 | normal | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | return | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | normal | @@ -1593,7 +1559,7 @@ | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | | ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:122:9:122:28 | call to method IsTrue | throw(AssertFailedException) | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:9:122:28 | call to method IsTrue | throw(AssertFailedException) | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:23:122:27 | false | false | +| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:23:122:27 | false | normal | | ExitMethods.cs:123:9:123:18 | ... ...; | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | | ExitMethods.cs:123:13:123:17 | Int32 x = ... | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | | ExitMethods.cs:123:17:123:17 | 0 | ExitMethods.cs:123:17:123:17 | 0 | normal | @@ -1607,14 +1573,13 @@ | ExitMethods.cs:129:17:129:17 | 0 | ExitMethods.cs:129:17:129:17 | 0 | normal | | ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | normal | | ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | throw(AssertFailedException) | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b | false | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b | true | +| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b | normal | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:25 | this access | normal | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | -| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:21:136:24 | true | true | +| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:21:136:24 | true | normal | | ExitMethods.cs:137:9:137:18 | ... ...; | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | | ExitMethods.cs:137:13:137:17 | Int32 x = ... | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | | ExitMethods.cs:137:17:137:17 | 0 | ExitMethods.cs:137:17:137:17 | 0 | normal | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 8f6f5e43d62..63855522ba6 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -350,12 +350,11 @@ | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | | | Assert.cs:9:24:9:27 | null | Assert.cs:9:20:9:32 | ... ? ... : ... | | | Assert.cs:9:31:9:32 | "" | Assert.cs:9:20:9:32 | ... ? ... : ... | | -| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | exit | -| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:11:9:11:36 | ...; | | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | exit | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:11:9:11:36 | ...; | | | Assert.cs:10:9:10:32 | ...; | Assert.cs:10:22:10:22 | access to local variable s | | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:27:10:30 | null | | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | false | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | [assertion success] call to method Assert | true | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | call to method Assert | | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:30 | ... != ... | | | Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:7:10:7:11 | exit M1 (normal) | | | Assert.cs:11:9:11:36 | ...; | Assert.cs:11:27:11:27 | access to local variable s | | @@ -372,11 +371,10 @@ | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | | | Assert.cs:16:24:16:27 | null | Assert.cs:16:20:16:32 | ... ? ... : ... | | | Assert.cs:16:31:16:32 | "" | Assert.cs:16:20:16:32 | ... ? ... : ... | | -| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | exception | -| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:18:9:18:36 | ...; | | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | exception | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:18:9:18:36 | ...; | | | Assert.cs:17:9:17:25 | ...; | Assert.cs:17:23:17:23 | access to local variable s | | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | non-null | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | null | +| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | exit M2 (normal) | | | Assert.cs:18:9:18:36 | ...; | Assert.cs:18:27:18:27 | access to local variable s | | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:34 | access to property Length | | @@ -392,11 +390,10 @@ | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | | | Assert.cs:23:24:23:27 | null | Assert.cs:23:20:23:32 | ... ? ... : ... | | | Assert.cs:23:31:23:32 | "" | Assert.cs:23:20:23:32 | ... ? ... : ... | | -| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | exception | -| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | exception | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | | | Assert.cs:24:9:24:28 | ...; | Assert.cs:24:26:24:26 | access to local variable s | | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | null | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | non-null | +| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | exit M3 (normal) | | | Assert.cs:25:9:25:36 | ...; | Assert.cs:25:27:25:27 | access to local variable s | | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:34 | access to property Length | | @@ -412,12 +409,11 @@ | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | | | Assert.cs:30:24:30:27 | null | Assert.cs:30:20:30:32 | ... ? ... : ... | | | Assert.cs:30:31:30:32 | "" | Assert.cs:30:20:30:32 | ... ? ... : ... | | -| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | exception | -| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:32:9:32:36 | ...; | | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | exception | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:32:9:32:36 | ...; | | | Assert.cs:31:9:31:33 | ...; | Assert.cs:31:23:31:23 | access to local variable s | | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:28:31:31 | null | | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:31 | ... == ... | | | Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:28:10:28:11 | exit M4 (normal) | | | Assert.cs:32:9:32:36 | ...; | Assert.cs:32:27:32:27 | access to local variable s | | @@ -434,12 +430,11 @@ | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | | | Assert.cs:37:24:37:27 | null | Assert.cs:37:20:37:32 | ... ? ... : ... | | | Assert.cs:37:31:37:32 | "" | Assert.cs:37:20:37:32 | ... ? ... : ... | | -| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | exception | -| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:39:9:39:36 | ...; | | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | exception | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:39:9:39:36 | ...; | | | Assert.cs:38:9:38:33 | ...; | Assert.cs:38:23:38:23 | access to local variable s | | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:28:38:31 | null | | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:31 | ... != ... | | | Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:35:10:35:11 | exit M5 (normal) | | | Assert.cs:39:9:39:36 | ...; | Assert.cs:39:27:39:27 | access to local variable s | | @@ -456,12 +451,11 @@ | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | | | Assert.cs:44:24:44:27 | null | Assert.cs:44:20:44:32 | ... ? ... : ... | | | Assert.cs:44:31:44:32 | "" | Assert.cs:44:20:44:32 | ... ? ... : ... | | -| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | exception | -| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:46:9:46:36 | ...; | | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | exception | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:46:9:46:36 | ...; | | | Assert.cs:45:9:45:34 | ...; | Assert.cs:45:24:45:24 | access to local variable s | | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:29:45:32 | null | | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:32 | ... != ... | | | Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:42:10:42:11 | exit M6 (normal) | | | Assert.cs:46:9:46:36 | ...; | Assert.cs:46:27:46:27 | access to local variable s | | @@ -478,12 +472,11 @@ | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | | | Assert.cs:51:24:51:27 | null | Assert.cs:51:20:51:32 | ... ? ... : ... | | | Assert.cs:51:31:51:32 | "" | Assert.cs:51:20:51:32 | ... ? ... : ... | | -| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | exception | -| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:53:9:53:36 | ...; | | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | exception | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:53:9:53:36 | ...; | | | Assert.cs:52:9:52:34 | ...; | Assert.cs:52:24:52:24 | access to local variable s | | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:29:52:32 | null | | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:32 | ... == ... | | | Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:49:10:49:11 | exit M7 (normal) | | | Assert.cs:53:9:53:36 | ...; | Assert.cs:53:27:53:27 | access to local variable s | | @@ -500,17 +493,15 @@ | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | | | Assert.cs:58:24:58:27 | null | Assert.cs:58:20:58:32 | ... ? ... : ... | | | Assert.cs:58:31:58:32 | "" | Assert.cs:58:20:58:32 | ... ? ... : ... | | -| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | exception | -| Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | Assert.cs:60:9:60:36 | ...; | | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | exception | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:60:9:60:36 | ...; | | | Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | [false] ... && ... | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | false | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:59:9:59:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [false] ... && ... | false | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | [true] ... && ... | true | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | ... && ... | | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | | @@ -526,17 +517,15 @@ | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | | | Assert.cs:65:24:65:27 | null | Assert.cs:65:20:65:32 | ... ? ... : ... | | | Assert.cs:65:31:65:32 | "" | Assert.cs:65:20:65:32 | ... ? ... : ... | | -| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | exception | -| Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | Assert.cs:67:9:67:36 | ...; | | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | exception | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:67:9:67:36 | ...; | | | Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | true | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | true | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [false] ... \|\| ... | false | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | [true] ... \|\| ... | true | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | ... \|\| ... | | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | | @@ -552,17 +541,15 @@ | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | | | Assert.cs:72:24:72:27 | null | Assert.cs:72:20:72:32 | ... ? ... : ... | | | Assert.cs:72:31:72:32 | "" | Assert.cs:72:20:72:32 | ... ? ... : ... | | -| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | exception | -| Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | Assert.cs:74:9:74:36 | ...; | | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | exception | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:74:9:74:36 | ...; | | | Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | [false] ... && ... | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | false | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:73:9:73:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [false] ... && ... | false | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | [true] ... && ... | true | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | ... && ... | | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | | @@ -578,17 +565,15 @@ | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | | | Assert.cs:79:24:79:27 | null | Assert.cs:79:20:79:32 | ... ? ... : ... | | | Assert.cs:79:31:79:32 | "" | Assert.cs:79:20:79:32 | ... ? ... : ... | | -| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | exception | -| Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | Assert.cs:81:9:81:36 | ...; | | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | exception | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:81:9:81:36 | ...; | | | Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | true | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion success] call to method IsFalse | false | -| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | true | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [false] ... \|\| ... | false | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | [true] ... \|\| ... | true | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | ... \|\| ... | | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | | @@ -604,12 +589,11 @@ | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | | | Assert.cs:86:24:86:27 | null | Assert.cs:86:20:86:32 | ... ? ... : ... | | | Assert.cs:86:31:86:32 | "" | Assert.cs:86:20:86:32 | ... ? ... : ... | | -| Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | -| Assert.cs:87:9:87:31 | [assertion success] call to method Assert | Assert.cs:88:9:88:36 | ...; | | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:88:9:88:36 | ...; | | | Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion failure] call to method Assert | false | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | [assertion success] call to method Assert | true | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | call to method Assert | | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | | | Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | | | Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | | @@ -622,11 +606,10 @@ | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | | | Assert.cs:90:17:90:20 | null | Assert.cs:90:13:90:25 | ... ? ... : ... | | | Assert.cs:90:24:90:25 | "" | Assert.cs:90:13:90:25 | ... ? ... : ... | | -| Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | Assert.cs:92:9:92:36 | ...; | | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:92:9:92:36 | ...; | | | Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion failure] call to method IsNull | non-null | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | [assertion success] call to method IsNull | null | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | call to method IsNull | | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | | | Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | | @@ -638,11 +621,10 @@ | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | | | Assert.cs:94:17:94:20 | null | Assert.cs:94:13:94:25 | ... ? ... : ... | | | Assert.cs:94:24:94:25 | "" | Assert.cs:94:13:94:25 | ... ? ... : ... | | -| Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | | | Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion failure] call to method IsNotNull | null | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | [assertion success] call to method IsNotNull | non-null | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | call to method IsNotNull | | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | | | Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | | @@ -654,12 +636,11 @@ | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | | | Assert.cs:98:17:98:20 | null | Assert.cs:98:13:98:25 | ... ? ... : ... | | | Assert.cs:98:24:98:25 | "" | Assert.cs:98:13:98:25 | ... ? ... : ... | | -| Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | Assert.cs:100:9:100:36 | ...; | | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:100:9:100:36 | ...; | | | Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | | | Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | | | Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | | @@ -672,12 +653,11 @@ | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | | | Assert.cs:102:17:102:20 | null | Assert.cs:102:13:102:25 | ... ? ... : ... | | | Assert.cs:102:24:102:25 | "" | Assert.cs:102:13:102:25 | ... ? ... : ... | | -| Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | Assert.cs:104:9:104:36 | ...; | | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:104:9:104:36 | ...; | | | Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion failure] call to method IsTrue | false | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | [assertion success] call to method IsTrue | true | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | | | Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | | | Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | | @@ -690,12 +670,11 @@ | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | | | Assert.cs:106:17:106:20 | null | Assert.cs:106:13:106:25 | ... ? ... : ... | | | Assert.cs:106:24:106:25 | "" | Assert.cs:106:13:106:25 | ... ? ... : ... | | -| Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | Assert.cs:108:9:108:36 | ...; | | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:108:9:108:36 | ...; | | | Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | | | Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | | | Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | | @@ -708,12 +687,11 @@ | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | | | Assert.cs:110:17:110:20 | null | Assert.cs:110:13:110:25 | ... ? ... : ... | | | Assert.cs:110:24:110:25 | "" | Assert.cs:110:13:110:25 | ... ? ... : ... | | -| Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | Assert.cs:112:9:112:36 | ...; | | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:112:9:112:36 | ...; | | | Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion failure] call to method IsFalse | true | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | [assertion success] call to method IsFalse | false | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | | | Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | | | Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | | @@ -726,17 +704,15 @@ | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | | | Assert.cs:114:17:114:20 | null | Assert.cs:114:13:114:25 | ... ? ... : ... | | | Assert.cs:114:24:114:25 | "" | Assert.cs:114:13:114:25 | ... ? ... : ... | | -| Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | Assert.cs:116:9:116:36 | ...; | | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:116:9:116:36 | ...; | | | Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | [false] ... && ... | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | false | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:115:23:115:36 | [false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:115:23:115:36 | [true] ... && ... | Assert.cs:115:9:115:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [false] ... && ... | false | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | [true] ... && ... | true | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | ... && ... | | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | | | Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | | @@ -748,19 +724,16 @@ | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | | | Assert.cs:118:17:118:20 | null | Assert.cs:118:13:118:25 | ... ? ... : ... | | | Assert.cs:118:24:118:25 | "" | Assert.cs:118:13:118:25 | ... ? ... : ... | | -| Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | Assert.cs:120:9:120:36 | ...; | | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:120:9:120:36 | ...; | | | Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | true | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:119:24:119:38 | [false] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:119:24:119:38 | [true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | | -| Assert.cs:119:37:119:38 | [false] !... | Assert.cs:119:24:119:38 | [false] ... \|\| ... | false | -| Assert.cs:119:37:119:38 | [true] !... | Assert.cs:119:24:119:38 | [true] ... \|\| ... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [false] !... | true | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | [true] !... | false | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:24:119:38 | ... \|\| ... | | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | | | Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | | @@ -772,17 +745,15 @@ | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | | | Assert.cs:122:17:122:20 | null | Assert.cs:122:13:122:25 | ... ? ... : ... | | | Assert.cs:122:24:122:25 | "" | Assert.cs:122:13:122:25 | ... ? ... : ... | | -| Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | Assert.cs:124:9:124:36 | ...; | | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:124:9:124:36 | ...; | | | Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | [false] ... && ... | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | false | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:123:23:123:36 | [false] ... && ... | Assert.cs:123:9:123:37 | [assertion failure] call to method IsTrue | false | -| Assert.cs:123:23:123:36 | [true] ... && ... | Assert.cs:123:9:123:37 | [assertion success] call to method IsTrue | true | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [false] ... && ... | false | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | [true] ... && ... | true | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | ... && ... | | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | | | Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | | @@ -794,19 +765,16 @@ | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | | | Assert.cs:126:17:126:20 | null | Assert.cs:126:13:126:25 | ... ? ... : ... | | | Assert.cs:126:24:126:25 | "" | Assert.cs:126:13:126:25 | ... ? ... : ... | | -| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | Assert.cs:128:9:128:36 | ...; | | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:128:9:128:36 | ...; | | | Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | true | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion success] call to method IsFalse | false | -| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | true | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | | -| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:127:24:127:38 | [false] ... \|\| ... | false | -| Assert.cs:127:37:127:38 | [true] !... | Assert.cs:127:24:127:38 | [true] ... \|\| ... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [false] !... | true | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | [true] !... | false | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:24:127:38 | ... \|\| ... | | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | | @@ -818,19 +786,13 @@ | Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 | | | Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:138:10:138:12 | exit M13 | | | Assert.cs:139:5:142:5 | {...} | Assert.cs:140:9:140:36 | ...; | | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | exception | -| Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | exception | -| Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | exception | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:25:140:26 | access to parameter b1 | | | Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | this access | | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | false | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | true | -| Assert.cs:140:29:140:30 | [assertion failure] access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | false, true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | true | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | false | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | | -| Assert.cs:140:33:140:34 | [assertion failure] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion failure] call to method AssertTrueFalse | | -| Assert.cs:140:33:140:34 | [assertion success] access to parameter b3 | Assert.cs:140:9:140:35 | [assertion success] call to method AssertTrueFalse | | +| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | | +| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | access to parameter b3 | | +| Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | return | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | | | Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | call to constructor Object | | @@ -1605,9 +1567,9 @@ | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} | | | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:122:9:122:29 | ...; | | -| ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | exception | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | exception | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:23:122:27 | false | | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | [assertion failure] call to method IsTrue | false | +| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | call to method IsTrue | | | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} | | | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:128:9:128:27 | ...; | | @@ -1617,17 +1579,16 @@ | ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | | | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse | | | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse | | -| ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | exception | -| ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion failure] call to method IsFalse | true | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | [assertion success] call to method IsFalse | false | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | exception | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | +| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | call to method IsFalse | | | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} | | | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:26 | ...; | | -| ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | exception | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | exception | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:21:136:24 | true | | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | this access | | -| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | [assertion failure] call to method AssertFalse | true | +| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | | | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} | | | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:142:9:145:53 | if (...) ... | | diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected index 74e9febe662..a930349e930 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected @@ -103,6 +103,7 @@ | c | Collections.cs:54:38:54:40 | "c" | | c | Collections.cs:62:42:62:44 | "c" | | false | Assert.cs:85:61:85:65 | false | +| false | Assert.cs:94:23:94:24 | access to parameter b2 | | false | Guards.cs:178:16:178:20 | false | | false | Guards.cs:181:53:181:57 | false | | false | Guards.cs:217:13:217:22 | ... = ... | @@ -138,6 +139,7 @@ | not null | Assert.cs:24:9:24:27 | call to method IsNotNull | | not null | Assert.cs:25:9:25:15 | access to type Console | | not null | Assert.cs:25:9:25:35 | call to method WriteLine | +| not null | Assert.cs:25:27:25:27 | access to local variable s | | not null | Assert.cs:25:27:25:34 | access to property Length | | not null | Assert.cs:30:20:30:20 | access to parameter b | | not null | Assert.cs:30:31:30:32 | "" | @@ -632,6 +634,7 @@ | not null | Guards.cs:93:13:93:32 | call to method WriteLine | | not null | Guards.cs:95:13:95:19 | access to type Console | | not null | Guards.cs:95:13:95:32 | call to method WriteLine | +| not null | Guards.cs:95:31:95:31 | access to parameter s | | not null | Guards.cs:96:13:96:19 | ... == ... | | not null | Guards.cs:96:18:96:19 | "" | | not null | Guards.cs:97:13:97:19 | access to type Console | @@ -876,6 +879,7 @@ | null | Assert.cs:9:24:9:27 | null | | null | Assert.cs:10:27:10:30 | null | | null | Assert.cs:16:24:16:27 | null | +| null | Assert.cs:18:27:18:27 | access to local variable s | | null | Assert.cs:23:24:23:27 | null | | null | Assert.cs:30:24:30:27 | null | | null | Assert.cs:31:28:31:31 | null | @@ -915,6 +919,7 @@ | null | Guards.cs:71:17:71:20 | null | | null | Guards.cs:72:31:72:31 | access to parameter s | | null | Guards.cs:88:26:88:29 | null | +| null | Guards.cs:91:31:91:31 | access to parameter s | | null | Guards.cs:104:42:104:45 | null | | null | Guards.cs:106:9:106:25 | ... = ... | | null | Guards.cs:106:22:106:25 | null | @@ -943,6 +948,7 @@ | true | Assert.cs:73:36:73:36 | access to parameter b | | true | Assert.cs:80:37:80:37 | access to parameter b | | true | Assert.cs:86:61:86:64 | true | +| true | Assert.cs:94:16:94:17 | access to parameter b1 | | true | Guards.cs:177:20:177:23 | true | | true | Guards.cs:181:46:181:49 | true | | true | Guards.cs:185:38:185:60 | ... ? ... : ... | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index 65fe4110707..b34cae88b80 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -1,13 +1,20 @@ +| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:22 | access to local variable s | no exception | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | not null | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | true | +| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | no exception | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | null | +| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | no exception | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | not null | +| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:23 | access to local variable s | no exception | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:23 | access to local variable s | true | +| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:23 | access to local variable s | no exception | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | not null | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | true | +| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:24 | access to local variable s | no exception | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | null | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:24 | access to local variable s | false | +| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:24 | access to local variable s | no exception | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | not null | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:24 | access to local variable s | false | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | @@ -26,11 +33,10 @@ | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s | false | -| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | -| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | -| Assert.cs:93:33:93:34 | [assertion failure] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | true | -| Assert.cs:93:33:93:34 | [assertion success] access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | +| Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:25:93:26 | access to parameter b1 | no exception | | Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | +| Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:29:93:30 | access to parameter b2 | no exception | +| Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:33:93:34 | access to parameter b2 | no exception | | Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index 6dccae8756d..b34cae88b80 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -1,13 +1,20 @@ +| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:22 | access to local variable s | no exception | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | not null | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | true | +| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | no exception | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | null | +| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | no exception | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | not null | +| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:23 | access to local variable s | no exception | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | null | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:23 | access to local variable s | true | +| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:23 | access to local variable s | no exception | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | not null | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:23 | access to local variable s | true | +| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:24 | access to local variable s | no exception | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | null | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:24 | access to local variable s | false | +| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:24 | access to local variable s | no exception | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | not null | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:24 | access to local variable s | false | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | @@ -26,7 +33,10 @@ | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | null | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s | false | +| Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:25:93:26 | access to parameter b1 | no exception | | Assert.cs:94:16:94:17 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | Assert.cs:93:25:93:26 | access to parameter b1 | true | +| Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:29:93:30 | access to parameter b2 | no exception | +| Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:9:93:35 | call to method AssertTrueFalse | Assert.cs:93:33:93:34 | access to parameter b2 | no exception | | Assert.cs:94:23:94:24 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | Assert.cs:93:29:93:30 | access to parameter b2 | false | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:22 | access to property Count | Collections.cs:49:13:49:16 | access to parameter args | not 0 | | Collections.cs:51:17:51:20 | access to parameter args | Collections.cs:49:13:49:27 | ... == ... | Collections.cs:49:13:49:16 | access to parameter args | false | 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 a33793ae461..30cb9112c3d 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected +++ b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected @@ -40,7 +40,7 @@ | FormatInvalid.cs:111:23:111:25 | "}" | FormatInvalid.cs:111:23:111:25 | "}" | FormatInvalid.cs:111:23:111:25 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:111:9:111:32 | call to method Write | this | FormatInvalid.cs:111:9:111:32 | call to method Write | this | | FormatInvalid.cs:112:23:112:25 | "}" | FormatInvalid.cs:112:23:112:25 | "}" | FormatInvalid.cs:112:23:112:25 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:112:9:112:35 | call to method Write | this | FormatInvalid.cs:112:9:112:35 | call to method Write | this | | FormatInvalid.cs:113:23:113:25 | "}" | FormatInvalid.cs:113:23:113:25 | "}" | FormatInvalid.cs:113:23:113:25 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:113:9:113:38 | call to method Write | this | FormatInvalid.cs:113:9:113:38 | call to method Write | this | -| FormatInvalid.cs:118:56:118:58 | "}" | FormatInvalid.cs:118:56:118:58 | [assertion success] "}" | FormatInvalid.cs:118:56:118:58 | [assertion success] "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:118:9:118:63 | call to method Assert | this | FormatInvalid.cs:118:9:118:63 | call to method Assert | this | +| FormatInvalid.cs:118:56:118:58 | "}" | FormatInvalid.cs:118:56:118:58 | "}" | FormatInvalid.cs:118:56:118:58 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:118:9:118:63 | call to method Assert | this | FormatInvalid.cs:118:9:118:63 | call to method Assert | this | | FormatInvalid.cs:119:18:119:20 | "}" | FormatInvalid.cs:119:18:119:20 | "}" | FormatInvalid.cs:119:18:119:20 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:119:9:119:24 | call to method Write | this | FormatInvalid.cs:119:9:119:24 | call to method Write | this | | FormatInvalid.cs:120:40:120:42 | "}" | FormatInvalid.cs:120:40:120:42 | "}" | FormatInvalid.cs:120:40:120:42 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:120:9:120:47 | call to method Print | this | FormatInvalid.cs:120:9:120:47 | call to method Print | this | | FormatInvalid.cs:140:44:140:46 | "}" | FormatInvalid.cs:140:44:140:46 | "}" | FormatInvalid.cs:140:44:140:46 | "}" | Invalid format string used in $@ formatting call. | FormatInvalid.cs:140:22:140:47 | call to method Parse | this | FormatInvalid.cs:140:22:140:47 | call to method Parse | this | @@ -264,8 +264,8 @@ nodes | FormatInvalid.cs:112:23:112:25 | "}" | semmle.label | "}" | | FormatInvalid.cs:113:23:113:25 | "}" | semmle.label | "}" | | FormatInvalid.cs:113:23:113:25 | "}" | semmle.label | "}" | -| FormatInvalid.cs:118:56:118:58 | [assertion success] "}" | semmle.label | [assertion success] "}" | -| FormatInvalid.cs:118:56:118:58 | [assertion success] "}" | semmle.label | [assertion success] "}" | +| FormatInvalid.cs:118:56:118:58 | "}" | semmle.label | "}" | +| FormatInvalid.cs:118:56:118:58 | "}" | semmle.label | "}" | | FormatInvalid.cs:119:18:119:20 | "}" | semmle.label | "}" | | FormatInvalid.cs:119:18:119:20 | "}" | semmle.label | "}" | | FormatInvalid.cs:120:40:120:42 | "}" | semmle.label | "}" | diff --git a/csharp/ql/test/query-tests/Nullness/NullCheck.expected b/csharp/ql/test/query-tests/Nullness/NullCheck.expected index 67cf5107ca3..ada1054f02c 100644 --- a/csharp/ql/test/query-tests/Nullness/NullCheck.expected +++ b/csharp/ql/test/query-tests/Nullness/NullCheck.expected @@ -1,6 +1,4 @@ | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:22 | access to local variable s | -| Assert.cs:14:23:14:23 | access to local variable s | Assert.cs:14:23:14:23 | access to local variable s | -| Assert.cs:18:26:18:26 | access to local variable s | Assert.cs:18:26:18:26 | access to local variable s | | Assert.cs:22:23:22:31 | ... == ... | Assert.cs:22:23:22:23 | access to local variable s | | Assert.cs:26:23:26:31 | ... != ... | Assert.cs:26:23:26:23 | access to local variable s | | Assert.cs:30:24:30:32 | ... != ... | Assert.cs:30:24:30:24 | access to local variable s | @@ -31,8 +29,6 @@ | C.cs:34:13:34:21 | ... == ... | C.cs:34:13:34:13 | access to parameter o | | C.cs:41:22:41:30 | ... == ... | C.cs:41:22:41:22 | access to local variable s | | C.cs:45:22:45:30 | ... != ... | C.cs:45:22:45:22 | access to local variable s | -| C.cs:56:23:56:24 | access to local variable o2 | C.cs:56:23:56:24 | access to local variable o2 | -| C.cs:71:26:71:27 | access to local variable o3 | C.cs:71:26:71:27 | access to local variable o3 | | C.cs:78:13:78:24 | call to method IsNotNull | C.cs:78:23:78:23 | access to local variable o | | C.cs:81:14:81:22 | call to method IsNull | C.cs:81:21:81:21 | access to local variable o | | C.cs:113:22:113:36 | ... == ... | C.cs:113:22:113:28 | access to local variable colours | @@ -52,7 +48,6 @@ | C.cs:186:16:186:24 | ... != ... | C.cs:186:16:186:16 | access to local variable s | | C.cs:211:13:211:21 | ... != ... | C.cs:211:13:211:13 | access to local variable s | | C.cs:217:13:217:21 | ... == ... | C.cs:217:13:217:13 | access to local variable s | -| C.cs:221:13:221:21 | ... != ... | C.cs:221:13:221:13 | access to local variable s | | C.cs:229:22:229:30 | ... != ... | C.cs:229:22:229:22 | access to local variable s | | C.cs:235:24:235:32 | ... == ... | C.cs:235:24:235:24 | access to local variable s | | C.cs:235:24:235:32 | ... == ... | C.cs:235:29:235:32 | null | @@ -76,12 +71,9 @@ | D.cs:128:20:128:28 | ... == ... | D.cs:128:20:128:20 | access to parameter b | | D.cs:139:13:139:21 | ... != ... | D.cs:139:13:139:13 | access to parameter a | | D.cs:152:17:152:27 | ... != ... | D.cs:152:17:152:19 | access to parameter obj | -| D.cs:196:13:196:21 | ... == ... | D.cs:196:13:196:13 | access to local variable o | | D.cs:206:17:206:25 | ... == ... | D.cs:206:17:206:17 | access to local variable e | | D.cs:212:18:212:26 | ... == ... | D.cs:212:18:212:18 | access to local variable n | | D.cs:212:18:212:26 | ... == ... | D.cs:212:23:212:26 | null | -| D.cs:216:13:216:22 | ... == ... | D.cs:216:13:216:14 | access to local variable o3 | -| D.cs:221:13:221:22 | ... == ... | D.cs:221:13:221:14 | access to local variable o4 | | D.cs:242:13:242:25 | ... == ... | D.cs:242:13:242:17 | access to local variable other | | D.cs:244:13:244:25 | ... != ... | D.cs:244:13:244:17 | access to local variable other | | D.cs:336:13:336:23 | ... == ... | D.cs:336:13:336:15 | access to parameter obj | @@ -108,9 +100,7 @@ | E.cs:153:13:153:24 | ... != ... | E.cs:153:13:153:16 | access to local variable obj2 | | E.cs:164:17:164:25 | ... == ... | E.cs:164:17:164:17 | access to parameter a | | E.cs:175:19:175:29 | ... == ... | E.cs:175:19:175:21 | access to parameter obj | -| E.cs:176:13:176:22 | ... == ... | E.cs:176:13:176:14 | (...) ... | | E.cs:180:13:180:23 | ... == ... | E.cs:180:13:180:15 | access to parameter obj | -| E.cs:184:13:184:22 | ... == ... | E.cs:184:13:184:14 | (...) ... | | E.cs:193:17:193:17 | access to parameter o | E.cs:193:17:193:17 | access to parameter o | | E.cs:208:13:208:23 | ... is ... | E.cs:208:13:208:13 | access to parameter s | | E.cs:245:13:245:22 | access to property HasValue | E.cs:245:13:245:13 | access to parameter i | @@ -140,7 +130,6 @@ | E.cs:391:9:391:9 | access to parameter i | E.cs:391:9:391:9 | access to parameter i | | E.cs:397:9:397:13 | access to parameter color | E.cs:397:9:397:13 | access to parameter color | | E.cs:404:9:404:9 | access to local variable i | E.cs:404:9:404:9 | access to local variable i | -| E.cs:411:9:411:9 | access to local variable i | E.cs:411:9:411:9 | access to local variable i | | E.cs:422:13:422:22 | access to property HasValue | E.cs:422:13:422:13 | access to parameter i | | E.cs:429:13:429:22 | access to property HasValue | E.cs:429:13:429:13 | access to parameter i | | E.cs:437:23:437:31 | ... is ... | E.cs:437:23:437:23 | access to parameter s | From f395162afd88e104478d3e766fd513895c15bba0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 28 Oct 2025 13:32:54 +0100 Subject: [PATCH 447/965] Rust: More type inference tests --- rust/ql/.generated.list | 14 +- .../lib/codeql/rust/elements/RetTypeRepr.qll | 2 +- .../rust/elements/UseBoundGenericArgs.qll | 2 +- .../elements/internal/RetTypeReprImpl.qll | 2 +- .../internal/UseBoundGenericArgsImpl.qll | 2 +- .../rust/elements/internal/generated/Raw.qll | 4 +- .../internal/generated/RetTypeRepr.qll | 2 +- .../generated/UseBoundGenericArgs.qll | 2 +- .../generated/.generated_tests.list | 6 +- .../generated/MatchArm/gen_match_arm.rs | 2 +- .../RetTypeRepr/gen_ret_type_repr.rs | 2 +- .../gen_use_bound_generic_args.rs | 2 +- .../PathResolutionConsistency.expected | 12 +- .../test/library-tests/type-inference/main.rs | 18 +- .../type-inference/type-inference.expected | 2727 +++++++++-------- rust/schema/annotations.py | 6 +- 16 files changed, 1415 insertions(+), 1390 deletions(-) diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index cdd94fc0d68..ffe947da742 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -135,7 +135,7 @@ lib/codeql/rust/elements/RefPat.qll fe076bdccb454111b38f360837d180274ba8a003b4cf lib/codeql/rust/elements/RefTypeRepr.qll 563d2edc097aa1896b3dea5a3918e6225f23dda91b3fb46e2f4c32feb813d56c af3bd746239130e3e94dd41ab682473b29b8b900b05c557beb8a2eba6508ebd9 lib/codeql/rust/elements/Rename.qll 5cb0ebad580d9842cfe65033059d4d373a1386f047f3a78f402a93e060e2c13e 642c6f37d94442575df12b2e998572a725d094ac5ae76147a56057e75138d72b lib/codeql/rust/elements/RestPat.qll 5fedfac18080b068f597c9bbb84de672834f72cc22295d6312e111f151f8e3c7 c0e1f77bfcdd40e8ab06ad8c138e6098d79940247758adf9de03a05b00c23de3 -lib/codeql/rust/elements/RetTypeRepr.qll a603393d373f38831dded00878c3299d61fdb977723d3e1038692f7a46bfebc5 583c626f7ae7fb4ec9a9f93f072330c16560ab52c8dfec566c46af40fb9f39f8 +lib/codeql/rust/elements/RetTypeRepr.qll d68b7c6c2eda13821fcfe085ac3d63010d89a206be09d23deaf531cac405ba96 6db787a96d95265ca20a17ce00603a678b39ac8c7c1d0e1ad6ed119dcf9858fa lib/codeql/rust/elements/ReturnExpr.qll b87187cff55bc33c8c18558c9b88617179183d1341b322c1cab35ba07167bbdb 892f3a9df2187e745c869e67f33c228ee42754bc9e4f8f4c1718472eb8f8c80f lib/codeql/rust/elements/ReturnTypeSyntax.qll f30b779f79bc2f0329d5585a462511e1aaa9da63182cb45231873a9bd9644d19 5ba004dae2bca323ced27bb4b2f54f725ae974421ab11b176eac4888c642b3fa lib/codeql/rust/elements/SelfParam.qll e36b54cdc57529935910b321c336783e9e2662c762f3cd6af492d819373ff188 7a4735dbf532fc0c33ebdb0b5c1dfc4e5267e79ceff4ca8977065eb0ce54aaf5 @@ -177,7 +177,7 @@ lib/codeql/rust/elements/Unimplemented.qll bf624d28163e5c99accda16c0c99f938bec4a lib/codeql/rust/elements/Union.qll 13f7f62e98b117d18e79db5f6e6535447bc069ebb08f7cdb390b012678b7e085 bd8c37bc0ff09926753bc250e1848ed25923f224829d0136afc27b749eaddd1f lib/codeql/rust/elements/Use.qll fdcf70574403c2f219353211b6930f2f9bc79f41c2594e07548de5a8c6cbb24d e41f2b689fcbeb7b84c7ba8d09592f7561626559318642b73574bbac83f74546 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 -lib/codeql/rust/elements/UseBoundGenericArgs.qll d9821a82a1d57e609fdc5e79d65e9a88b0088f51d03927e09f41b6931d3484ab 181483a95e22622c7cee07cce87e9476053f824a82e67e2bdecabf5a39f672ad +lib/codeql/rust/elements/UseBoundGenericArgs.qll 841913cfbb84de14aab1820a5433eae978bbadbb8e6d413b8ba70780c7328335 c9ec9d086cff91d15c3aea64f1080b22b41cdaf64e3c8b192aaaec17604a5d10 lib/codeql/rust/elements/UseTree.qll e67c148f63668319c37914a46ff600692de477242a0129fa1bb9839754c0f830 de9b39d3d078d51ec9130db6579bff13e6297e60556a7214a5c51cbf89d92791 lib/codeql/rust/elements/UseTreeList.qll 92ebfee4392a485b38fb3265fdede7c8f2ed1dbe2ab860aa61b1497c33874d25 a4e677455d20838e422e430eebd73d0a488e34e8c960f375fef7b99e79d4c911 lib/codeql/rust/elements/Variant.qll 7895461fa728f6c3a7293799c5e6b965b413b679566dcbd40bbe2609db8b6cde b0413547365a301bd9fbb6b266757f956394abad0a77f0e424446e23ec7d83e9 @@ -369,7 +369,7 @@ lib/codeql/rust/elements/internal/RenameConstructor.qll 65fa2e938978d154701e6cac lib/codeql/rust/elements/internal/RenameImpl.qll 61c681055f1f86402af0772539f702e9e19a123f8cfcfca225535c3a1a4cb1d7 1aa1c78616c4b54a31c8af74de141aef9e5ada53f3859df631ecb4238faabdbf lib/codeql/rust/elements/internal/RestPatConstructor.qll 45430925ddf08fba70ede44c7f413ddb41b3113c149b7efc276e0c2bf72507b4 25c678898d72446e7a975bb8b7f2fde51e55b59dbd42f2cca997c833b1a995f1 lib/codeql/rust/elements/internal/RetTypeReprConstructor.qll 6dcb56c92a13f5ca2c9a8344bc05638cc611543896c578cd6ca185054f155537 3fe34953ba397dc31533bd28b48df76693e86b51c4a89c26ad4dfdbd816a0874 -lib/codeql/rust/elements/internal/RetTypeReprImpl.qll 799e55ffcf27bf6f010419e1d61ebbbf3448e37b903b0f13984d0b44d6b7a999 be774bb09d121c35f40c75d5bee08918e7a6b5fccb4fd573fc55a650466b46e0 +lib/codeql/rust/elements/internal/RetTypeReprImpl.qll 321355a9b39193e09ef7c38b807d7f3c221dce06b0cafd2e0ceccdfbb81712e4 02ea0fb17416889b400e0706eeacc0afc6b489b76158e8c26b9b77102df6bd60 lib/codeql/rust/elements/internal/ReturnExprConstructor.qll 57be5afbe20aa8db6e63c1f2871914c19c186730ad7dccaa424038c6305730d5 4d3c4f2e9b38a4b54ff26a0032455cdcca3d35fec201b6c932072a9e31fbb4fe lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll 8994672e504d1674e5773157d0ad8a0dc3aad3d64ef295e7722e647e78e36c11 abe7df754721f4ff7f3e3bb22d275976b2e9a1ef51436a461fe52ebd2d29cff1 lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll 554af21b52fedfc356cb873e25c2429e6660ae62ea01be708de4342960cf4048 cdc497a3693bb162a7528b75e902c4743b0a974c6c44152f822a16107a83bee4 @@ -428,7 +428,7 @@ lib/codeql/rust/elements/internal/UnimplementedImpl.qll 06771abc088e0a8fc24032c9 lib/codeql/rust/elements/internal/UnionConstructor.qll d650551a1b3ef29c5a770bdad626269cf539ed0c675af954bc847d2c6111f3f6 aca9064ad653a126ab4f03703e96b274587c852dc5e7ff3fea0fec4d45993f10 lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll 2f90bfd5e43113da1155445bef0334ab84acddef102bd62dfa2ef908717a5d09 dd2fa3c6081d79e1d96360dbdb339128cd944e7b7dc26c449c04f970ee1d7848 lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll 84d4a959d098fcd1713cb169e15b4945d846121701d2c5709b11e19202c21f2b 93113c92be9bc9f0b8530c308fe482dfeddc7dc827fc44049cecb3eab28df731 -lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll f5c082fc8f7d9acc3783da18e61ad2c9831b46c1855e1bde9b7af95adc289ad9 eb83520c5333b199788638ccd70ee8e96fc3f05306072f51a76fd0a643f8930f +lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll 0f98d47c1e09c46dd3da66a4770181a0caae0512b362faaec997af22bb5f4ce7 1919235e50b9d2fee9bd5d407a0bc023a02dbb04b2662349fad5a8d6cfa98069 lib/codeql/rust/elements/internal/UseConstructor.qll a4f790795e18abc29a50d6fbaa0db64cba781e3259a42cbf0468c24ac66b63e7 2fa288f073ac094a838c11f091def2c790b347b6a1b79407c11b10c73d6bff57 lib/codeql/rust/elements/internal/UseTreeConstructor.qll 3e6e834100fcc7249f8a20f8bd9debe09b705fcf5a0e655537e71ac1c6f7956b cdbc84b8f1b009be1e4a7aaba7f5237823cea62c86b38f1794aad97e3dfcf64b lib/codeql/rust/elements/internal/UseTreeListConstructor.qll 973577da5d7b58eb245f108bd1ae2fecc5645f2795421dedf7687b067a233003 f41e5e3ffcb2a387e5c37f56c0b271e8dc20428b6ff4c63e1ee42fcfa4e67d0a @@ -584,13 +584,13 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 3f86deef2f54093e3b4bd24237ba0d80fa94856fdcf2ba6a9812033bec6c0021 30cd773ce7a390afbdabd8a078f5f1408671eaca6fa7e213bed6196dfa872447 +lib/codeql/rust/elements/internal/generated/Raw.qll f50925f4925848cef73003adf01420566ca3efa16f491eadac62a30972ee9204 17d62252413618e1fa162c6c0b303ccfcac5f7f70cc170d739b20cc95f57035b lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b lib/codeql/rust/elements/internal/generated/Rename.qll 53dd50d35aa38cb6eb4174c94e8e23042b42bdc4f38df009489ebf707380483b db14fbce0d95b4dae3d7512f9bdee92e0dc2dffde5ba5d7458f2f5dd632876b0 lib/codeql/rust/elements/internal/generated/RestPat.qll 369f5828bb78f2856d528679a9869f81859b375c2f831ff72f4507daaee976e3 17f24ce8aa6a27359c10a654667b7877ca7a1509509e2ab246ed26fe15ef66b4 -lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 7e782d6ca346fd4057e95a6eefe796e3fba7eef62144a0df78e2d115a7ae9ba9 d5da144e06d180673fa7ce274c5e7e2ca2db12b064df1155bc56f2f9378b58b4 +lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 853b7fd6c1f3678d0f9315ac23a99a0828a6e54148de24016a265039c7b1941c f1e140d2b113c494601143b735482869ee817c8a7d92026f6a511bc5c1420552 lib/codeql/rust/elements/internal/generated/ReturnExpr.qll c9c05400d326cd8e0da11c3bfa524daa08b2579ecaee80e468076e5dd7911d56 e7694926727220f46a7617b6ca336767450e359c6fa3782e82b1e21d85d37268 lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll 7b7692ca9fbe627afa0759050a740f0f42a8083446c1c3196084f5698fc570c3 96a735d60a3919c7c994f7b67930c9e51a3713940678d04a5fee54557d733c24 lib/codeql/rust/elements/internal/generated/SelfParam.qll 076c583f7f34e29aaaf3319e9d64565a34c64caa5a6dfca240c0cc7800e9a14c 375afed1772d193b71980d3825c4ac438e90b295cba0baf58319d29a3a8463a0 @@ -634,7 +634,7 @@ lib/codeql/rust/elements/internal/generated/Unimplemented.qll a3eb304781991bff12 lib/codeql/rust/elements/internal/generated/Union.qll 456504e6a32991ba17ca65f97636f4dfb86c758c7f8509aaca1b0d0432231dfe c96068edfec3e0755a7726426a10996455ee9f0f2d678af258719f1943a3063e lib/codeql/rust/elements/internal/generated/Use.qll cf95b5c4756b25bee74113207786e37464ffbc0fb5f776a04c651300afc53753 1fe26b3904db510184cb688cb0eeb0a8dbac7ac15e27a3b572d839743c738393 lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll 69162794e871291545ea04f61259b2d000671a96f7ca129f7dd9ed6e984067c4 31de9ebc0634b38e2347e0608b4ea888892f1f2732a2892464078cd8a07b4ee8 -lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll 2cc8ab0068b7bf44ca17a62b32a8dd1d89cd743532c8a96b262b164fd81b0c36 347e7709a0f5ace197beb6827f6cf04a31ff68ff2dff3707914c6b910658d00a +lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll cedde7ccf689e3a2a246113be94544c206c56fb1c01b83b074e1f6edd3acfced f022ea4c653d1b5f311917efde8e59be27394ce7f6abf2561bb1e42f93f74adf lib/codeql/rust/elements/internal/generated/UseTree.qll 3d7cbcc8ae76068b8f660c7d5b81b05595026043015cd6b4d42a60ed4c165811 b9f0bcf82feb31f31406e787670fee93e1aa0966bcc0e4cc285c342e88793e4e lib/codeql/rust/elements/internal/generated/UseTreeList.qll 38efaa569b76ca79be047703279388e8f64583a126b98078fbbb6586e0c6eb56 1623a50fd2d3b1e4b85323ad73dd655172f7cbc658d3506aaa6b409e9ebe576e lib/codeql/rust/elements/internal/generated/Variant.qll fa6909715133049b3dba4622e6262fa30c4a9478b6219ec4fd12e07c58750709 71fc2ddac97fc4c4e6b92a13ee217cccc81dffc7c12295b6bc97c56ad25a92cc diff --git a/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll index 205044d56b2..348550cef5f 100644 --- a/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll @@ -12,7 +12,7 @@ import codeql.rust.elements.TypeRepr * * For example: * ```rust - * fn foo() -> i32 {} + * fn foo() -> i32 { 0 } * // ^^^^^^ * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll b/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll index f3784ffdab2..f06180cfefc 100644 --- a/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll +++ b/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll @@ -12,7 +12,7 @@ import codeql.rust.elements.UseBoundGenericArg * * For example: * ```rust - * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } * // ^^^^^^^^ * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll index e7f9c48869d..d8b6a5b9e82 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll @@ -17,7 +17,7 @@ module Impl { * * For example: * ```rust - * fn foo() -> i32 {} + * fn foo() -> i32 { 0 } * // ^^^^^^ * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll index d8f1ed985f3..5b18c8f4978 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll @@ -17,7 +17,7 @@ module Impl { * * For example: * ```rust - * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } * // ^^^^^^^^ * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index 41b8e451308..21782ed7db4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -874,7 +874,7 @@ module Raw { * * For example: * ```rust - * fn foo() -> i32 {} + * fn foo() -> i32 { 0 } * // ^^^^^^ * ``` */ @@ -1270,7 +1270,7 @@ module Raw { * * For example: * ```rust - * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } * // ^^^^^^^^ * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll index e316b8b32f8..1589d16f20d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll @@ -19,7 +19,7 @@ module Generated { * * For example: * ```rust - * fn foo() -> i32 {} + * fn foo() -> i32 { 0 } * // ^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::RetTypeRepr` class directly. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll index 9ba10bdf876..3f76518c240 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll @@ -19,7 +19,7 @@ module Generated { * * For example: * ```rust - * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } * // ^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::UseBoundGenericArgs` class directly. diff --git a/rust/ql/test/extractor-tests/generated/.generated_tests.list b/rust/ql/test/extractor-tests/generated/.generated_tests.list index 2fcb0b79be4..879695fb758 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -75,7 +75,7 @@ MacroItems/gen_macro_items.rs c00f8045d9a7d6562da1d0136b335b685e2ec5dbd708763faa MacroPat/gen_macro_pat.rs 6bc63338397e6ef322a1824ce7d8fa68629a81c740f6e1d5347642501c83683a 6bc63338397e6ef322a1824ce7d8fa68629a81c740f6e1d5347642501c83683a MacroRules/gen_macro_rules.rs 5483484783b19a4f4cb7565cf63c517e61a76ce5b5b4bdc9b90f7e235a4c03b7 5483484783b19a4f4cb7565cf63c517e61a76ce5b5b4bdc9b90f7e235a4c03b7 MacroTypeRepr/gen_macro_type_repr.rs cdb9670dde8b2a71256bc8d4acb1d63bd726cb49ee486ca2dbf1952884fd9c37 cdb9670dde8b2a71256bc8d4acb1d63bd726cb49ee486ca2dbf1952884fd9c37 -MatchArm/gen_match_arm.rs ac75b4836a103e2755bd47a1ee1b74af6eb8349adc4ebedaaa27b3ea3ae41aa5 ac75b4836a103e2755bd47a1ee1b74af6eb8349adc4ebedaaa27b3ea3ae41aa5 +MatchArm/gen_match_arm.rs 4f4e717930729b2161b9cf9cd5e2b86b8e919204f5f7d4993d2c4e1034858cea 4f4e717930729b2161b9cf9cd5e2b86b8e919204f5f7d4993d2c4e1034858cea MatchArmList/gen_match_arm_list.rs 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 MatchExpr/gen_match_expr.rs 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 MatchGuard/gen_match_guard.rs f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a @@ -106,7 +106,7 @@ RefPat/gen_ref_pat.rs aba7518649d9a37928e59a40d42f76cc0f4735e8daf711a3def6d2f052 RefTypeRepr/gen_ref_type_repr.rs cf7b32d64550cd0b5033869b841089c1de292a1b25d3bd44c63ef9a265b9c8fb cf7b32d64550cd0b5033869b841089c1de292a1b25d3bd44c63ef9a265b9c8fb Rename/gen_rename.rs 05957dd5c7a0971223a485207ef3e98b0408a3e765cfb1fd6237bcc21c89f21a 05957dd5c7a0971223a485207ef3e98b0408a3e765cfb1fd6237bcc21c89f21a RestPat/gen_rest_pat.rs e9c977c8d3fce1d931abdfc025444e3e883468927f784ad1791670cace736aa7 e9c977c8d3fce1d931abdfc025444e3e883468927f784ad1791670cace736aa7 -RetTypeRepr/gen_ret_type_repr.rs 9db86003c7a4d91aa13fbc8220559bea6a05221c38c3f3ac0e03c6ac790aebcc 9db86003c7a4d91aa13fbc8220559bea6a05221c38c3f3ac0e03c6ac790aebcc +RetTypeRepr/gen_ret_type_repr.rs b5d66327b445e8290be59a4fc4217d8163aa5ab5e49d9335efa1037b7ca5dc6f b5d66327b445e8290be59a4fc4217d8163aa5ab5e49d9335efa1037b7ca5dc6f ReturnExpr/gen_return_expr.rs 4f6ef29d7b3c60d6d71d1a6034a0721671f517428ba21897361a92b01009d38f 4f6ef29d7b3c60d6d71d1a6034a0721671f517428ba21897361a92b01009d38f ReturnTypeSyntax/gen_return_type_syntax.rs 648ce343023e7f80c445fada390870c5498add7fdf63dc82a800f6a77b7e7026 648ce343023e7f80c445fada390870c5498add7fdf63dc82a800f6a77b7e7026 SelfParam/gen_self_param.rs 15491f86a32020c9ed3ecadc08c945ed01916b63683f95d2f5c1bedb4f3f01f2 15491f86a32020c9ed3ecadc08c945ed01916b63683f95d2f5c1bedb4f3f01f2 @@ -142,7 +142,7 @@ TypeParam/gen_type_param.rs 00b92ac7042ae83be1e37cd22f6d02098ca3157dc1ef45fbdf3b UnderscoreExpr/gen_underscore_expr.rs fe34e99d322bf86c0f5509c9b5fd6e1e8abbdf63dbe7e01687344a41e9aabe52 fe34e99d322bf86c0f5509c9b5fd6e1e8abbdf63dbe7e01687344a41e9aabe52 Union/gen_union.rs 0adc276bf324661137b4de7c4522afd5f7b2776e913c4a6ecc580ce3d753a51d 0adc276bf324661137b4de7c4522afd5f7b2776e913c4a6ecc580ce3d753a51d Use/gen_use.rs 3a8a426109080ce2a0ed5a68a83cfa195196c9f0a14eff328b7be54d1131eede 3a8a426109080ce2a0ed5a68a83cfa195196c9f0a14eff328b7be54d1131eede -UseBoundGenericArgs/gen_use_bound_generic_args.rs 1da801583b77f5f064d729a1d4313a863f1ad2e1dcc11c963194839cba977367 1da801583b77f5f064d729a1d4313a863f1ad2e1dcc11c963194839cba977367 +UseBoundGenericArgs/gen_use_bound_generic_args.rs 7b9542a4fd4025bdef5e3fab0e76a85c533936793d8791b5e4ed93d6d1e503e9 7b9542a4fd4025bdef5e3fab0e76a85c533936793d8791b5e4ed93d6d1e503e9 UseTree/gen_use_tree.rs 90660192ec361e96d0fee9dc03c34fcdf0a102269df33be45856c63ad5d18ff2 90660192ec361e96d0fee9dc03c34fcdf0a102269df33be45856c63ad5d18ff2 UseTreeList/gen_use_tree_list.rs 2494aadcec03a3f7a6e2ae448ee70ec6774f840e9519c668b2afe8cd968211c9 2494aadcec03a3f7a6e2ae448ee70ec6774f840e9519c668b2afe8cd968211c9 Variant/gen_variant.rs fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/gen_match_arm.rs b/rust/ql/test/extractor-tests/generated/MatchArm/gen_match_arm.rs index 5f5922e8ef4..39083d30d22 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/gen_match_arm.rs +++ b/rust/ql/test/extractor-tests/generated/MatchArm/gen_match_arm.rs @@ -1,6 +1,6 @@ // generated by codegen, do not edit -fn test_match_arm(x: i32) -> i32 { +fn test_match_arm(x: i32) { // A match arm. For example: match x { Option::Some(y) => y, diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs b/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs index a3294ce8545..361740fbd37 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs @@ -4,6 +4,6 @@ fn test_ret_type_repr() -> () { // A return type in a function signature. // // For example: - fn foo() -> i32 {} + fn foo() -> i32 { 0 } // ^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs index bb04264d33e..c53c6de548d 100644 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs @@ -4,6 +4,6 @@ fn test_use_bound_generic_args() -> () { // A use<..> bound to control which generic parameters are captured by an impl Trait return type. // // For example: - pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } // ^^^^^^^^ } diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 02a800650f3..e1585e2e0d3 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -9,9 +9,9 @@ multipleCallTargets | main.rs:590:9:590:18 | ...::m(...) | | main.rs:591:9:591:20 | ... .m() | | main.rs:592:9:592:24 | ...::m(...) | -| main.rs:2519:13:2519:31 | ...::from(...) | -| main.rs:2520:13:2520:31 | ...::from(...) | -| main.rs:2521:13:2521:31 | ...::from(...) | -| main.rs:2527:13:2527:31 | ...::from(...) | -| main.rs:2528:13:2528:31 | ...::from(...) | -| main.rs:2529:13:2529:31 | ...::from(...) | +| main.rs:2524:13:2524:31 | ...::from(...) | +| main.rs:2525:13:2525:31 | ...::from(...) | +| main.rs:2526:13:2526:31 | ...::from(...) | +| main.rs:2532:13:2532:31 | ...::from(...) | +| main.rs:2533:13:2533:31 | ...::from(...) | +| main.rs:2534:13:2534:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 9505b919318..2b1cee3debf 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2122,6 +2122,10 @@ mod async_ { async { S1 } } + fn f3() -> impl Future { + async {} + } + struct S2; impl Future for S2 { @@ -2135,14 +2139,15 @@ mod async_ { } } - fn f3() -> impl Future { + fn f4() -> impl Future { S2 } pub async fn f() { f1().await.f(); // $ target=S1f target=f1 f2().await.f(); // $ target=S1f target=f2 - f3().await.f(); // $ target=S1f target=f3 + f3().await; // $ target=f3 + f4().await.f(); // $ target=S1f target=f4 S2.await.f(); // $ target=S1f let b = async { S1 }; b.await.f(); // $ target=S1f @@ -2824,6 +2829,14 @@ mod if_expr { } } +mod local_function { + pub fn f() -> () { + fn local(x: i32) -> i32 { + x + 1 // $ target=add + } + } +} + mod blanket_impl; mod closure; mod dereference; @@ -2863,4 +2876,5 @@ fn main() { pattern_matching_experimental::box_patterns(); // $ target=box_patterns dyn_type::test(); // $ target=test if_expr::f(true); // $ target=f + local_function::f(); // $ target=f } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 6b6d9a13593..8fea18be996 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -4504,1370 +4504,1381 @@ inferType | main.rs:2122:9:2122:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | | main.rs:2122:9:2122:20 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | | main.rs:2122:17:2122:18 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2131:13:2131:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2131:13:2131:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2131:13:2131:42 | SelfParam | Ptr.&T | main.rs:2125:5:2125:14 | S2 | -| main.rs:2132:13:2132:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2132:13:2132:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2133:44:2135:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2133:44:2135:9 | { ... } | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2134:13:2134:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2134:13:2134:38 | ...::Ready(...) | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2134:36:2134:37 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2138:41:2140:5 | { ... } | | main.rs:2138:16:2138:39 | impl ... | -| main.rs:2139:9:2139:10 | S2 | | main.rs:2125:5:2125:14 | S2 | -| main.rs:2139:9:2139:10 | S2 | | main.rs:2138:16:2138:39 | impl ... | -| main.rs:2143:9:2143:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2143:9:2143:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2143:9:2143:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2144:9:2144:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | -| main.rs:2144:9:2144:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2145:9:2145:12 | f3(...) | | main.rs:2138:16:2138:39 | impl ... | -| main.rs:2145:9:2145:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2146:9:2146:10 | S2 | | main.rs:2125:5:2125:14 | S2 | -| main.rs:2146:9:2146:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:13:2147:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2147:13:2147:13 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:17:2147:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2147:17:2147:28 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:25:2147:26 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2148:9:2148:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2148:9:2148:9 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2148:9:2148:15 | await b | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2159:15:2159:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2159:15:2159:19 | SelfParam | &T | main.rs:2158:5:2160:5 | Self [trait Trait1] | -| main.rs:2163:15:2163:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2163:15:2163:19 | SelfParam | &T | main.rs:2162:5:2164:5 | Self [trait Trait2] | -| main.rs:2167:15:2167:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2167:15:2167:19 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | -| main.rs:2171:15:2171:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2171:15:2171:19 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | -| main.rs:2174:37:2176:5 | { ... } | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2175:9:2175:10 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2175:9:2175:10 | S1 | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2179:18:2179:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2179:18:2179:22 | SelfParam | &T | main.rs:2178:5:2180:5 | Self [trait MyTrait] | -| main.rs:2183:18:2183:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2183:18:2183:22 | SelfParam | &T | main.rs:2153:5:2154:14 | S1 | -| main.rs:2183:31:2185:9 | { ... } | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2184:13:2184:14 | S2 | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2189:18:2189:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2189:18:2189:22 | SelfParam | &T | main.rs:2156:5:2156:22 | S3 | -| main.rs:2189:18:2189:22 | SelfParam | &T.T3 | main.rs:2188:10:2188:17 | T | -| main.rs:2189:30:2192:9 | { ... } | | main.rs:2188:10:2188:17 | T | -| main.rs:2190:17:2190:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2190:17:2190:21 | S3(...) | | main.rs:2156:5:2156:22 | S3 | -| main.rs:2190:17:2190:21 | S3(...) | &T | main.rs:2156:5:2156:22 | S3 | -| main.rs:2190:17:2190:21 | S3(...) | &T.T3 | main.rs:2188:10:2188:17 | T | -| main.rs:2190:25:2190:28 | self | | file://:0:0:0:0 | & | -| main.rs:2190:25:2190:28 | self | &T | main.rs:2156:5:2156:22 | S3 | -| main.rs:2190:25:2190:28 | self | &T.T3 | main.rs:2188:10:2188:17 | T | -| main.rs:2191:13:2191:21 | t.clone() | | main.rs:2188:10:2188:17 | T | -| main.rs:2195:45:2197:5 | { ... } | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2196:9:2196:10 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2196:9:2196:10 | S1 | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2199:41:2199:41 | t | | main.rs:2199:26:2199:38 | B | -| main.rs:2199:52:2201:5 | { ... } | | main.rs:2199:23:2199:23 | A | -| main.rs:2200:9:2200:9 | t | | main.rs:2199:26:2199:38 | B | -| main.rs:2200:9:2200:17 | t.get_a() | | main.rs:2199:23:2199:23 | A | -| main.rs:2203:34:2203:34 | x | | main.rs:2203:24:2203:31 | T | -| main.rs:2203:59:2205:5 | { ... } | | main.rs:2203:43:2203:57 | impl ... | -| main.rs:2203:59:2205:5 | { ... } | impl(T) | main.rs:2203:24:2203:31 | T | -| main.rs:2204:9:2204:13 | S3(...) | | main.rs:2156:5:2156:22 | S3 | -| main.rs:2204:9:2204:13 | S3(...) | | main.rs:2203:43:2203:57 | impl ... | -| main.rs:2204:9:2204:13 | S3(...) | T3 | main.rs:2203:24:2203:31 | T | -| main.rs:2204:9:2204:13 | S3(...) | impl(T) | main.rs:2203:24:2203:31 | T | -| main.rs:2204:12:2204:12 | x | | main.rs:2203:24:2203:31 | T | -| main.rs:2207:34:2207:34 | x | | main.rs:2207:24:2207:31 | T | -| main.rs:2207:67:2209:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2207:67:2209:5 | { ... } | T | main.rs:2207:50:2207:64 | impl ... | -| main.rs:2207:67:2209:5 | { ... } | T.impl(T) | main.rs:2207:24:2207:31 | T | -| main.rs:2208:9:2208:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2208:9:2208:19 | Some(...) | T | main.rs:2156:5:2156:22 | S3 | -| main.rs:2208:9:2208:19 | Some(...) | T | main.rs:2207:50:2207:64 | impl ... | -| main.rs:2208:9:2208:19 | Some(...) | T.T3 | main.rs:2207:24:2207:31 | T | -| main.rs:2208:9:2208:19 | Some(...) | T.impl(T) | main.rs:2207:24:2207:31 | T | -| main.rs:2208:14:2208:18 | S3(...) | | main.rs:2156:5:2156:22 | S3 | -| main.rs:2208:14:2208:18 | S3(...) | | main.rs:2207:50:2207:64 | impl ... | -| main.rs:2208:14:2208:18 | S3(...) | T3 | main.rs:2207:24:2207:31 | T | -| main.rs:2208:14:2208:18 | S3(...) | impl(T) | main.rs:2207:24:2207:31 | T | -| main.rs:2208:17:2208:17 | x | | main.rs:2207:24:2207:31 | T | -| main.rs:2211:34:2211:34 | x | | main.rs:2211:24:2211:31 | T | -| main.rs:2211:78:2213:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2211:78:2213:5 | { ... } | 0(2) | main.rs:2211:44:2211:58 | impl ... | -| main.rs:2211:78:2213:5 | { ... } | 0(2).impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2211:78:2213:5 | { ... } | 1(2) | main.rs:2211:61:2211:75 | impl ... | -| main.rs:2211:78:2213:5 | { ... } | 1(2).impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2212:9:2212:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2212:9:2212:30 | TupleExpr | 0(2) | main.rs:2156:5:2156:22 | S3 | -| main.rs:2212:9:2212:30 | TupleExpr | 0(2) | main.rs:2211:44:2211:58 | impl ... | -| main.rs:2212:9:2212:30 | TupleExpr | 0(2).T3 | main.rs:2211:24:2211:31 | T | -| main.rs:2212:9:2212:30 | TupleExpr | 0(2).impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2212:9:2212:30 | TupleExpr | 1(2) | main.rs:2156:5:2156:22 | S3 | -| main.rs:2212:9:2212:30 | TupleExpr | 1(2) | main.rs:2211:61:2211:75 | impl ... | -| main.rs:2212:9:2212:30 | TupleExpr | 1(2).T3 | main.rs:2211:24:2211:31 | T | -| main.rs:2212:9:2212:30 | TupleExpr | 1(2).impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2212:10:2212:22 | S3(...) | | main.rs:2156:5:2156:22 | S3 | -| main.rs:2212:10:2212:22 | S3(...) | | main.rs:2211:44:2211:58 | impl ... | -| main.rs:2212:10:2212:22 | S3(...) | T3 | main.rs:2211:24:2211:31 | T | -| main.rs:2212:10:2212:22 | S3(...) | impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2212:13:2212:13 | x | | main.rs:2211:24:2211:31 | T | -| main.rs:2212:13:2212:21 | x.clone() | | main.rs:2211:24:2211:31 | T | -| main.rs:2212:25:2212:29 | S3(...) | | main.rs:2156:5:2156:22 | S3 | -| main.rs:2212:25:2212:29 | S3(...) | | main.rs:2211:61:2211:75 | impl ... | -| main.rs:2212:25:2212:29 | S3(...) | T3 | main.rs:2211:24:2211:31 | T | -| main.rs:2212:25:2212:29 | S3(...) | impl(T) | main.rs:2211:24:2211:31 | T | -| main.rs:2212:28:2212:28 | x | | main.rs:2211:24:2211:31 | T | -| main.rs:2215:26:2215:26 | t | | main.rs:2215:29:2215:43 | impl ... | -| main.rs:2215:51:2217:5 | { ... } | | main.rs:2215:23:2215:23 | A | -| main.rs:2216:9:2216:9 | t | | main.rs:2215:29:2215:43 | impl ... | -| main.rs:2216:9:2216:17 | t.get_a() | | main.rs:2215:23:2215:23 | A | -| main.rs:2220:13:2220:13 | x | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2220:17:2220:20 | f1(...) | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2221:9:2221:9 | x | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2222:9:2222:9 | x | | main.rs:2174:16:2174:35 | impl ... + ... | -| main.rs:2223:13:2223:13 | a | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2223:17:2223:32 | get_a_my_trait(...) | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2224:13:2224:13 | b | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2224:17:2224:33 | uses_my_trait1(...) | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2224:32:2224:32 | a | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2225:13:2225:13 | a | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2225:17:2225:32 | get_a_my_trait(...) | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2226:13:2226:13 | c | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2226:17:2226:33 | uses_my_trait2(...) | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2226:32:2226:32 | a | | main.rs:2195:28:2195:43 | impl ... | -| main.rs:2227:13:2227:13 | d | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2227:17:2227:34 | uses_my_trait2(...) | | main.rs:2155:5:2155:14 | S2 | -| main.rs:2227:32:2227:33 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2228:13:2228:13 | e | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2228:17:2228:35 | get_a_my_trait2(...) | | main.rs:2203:43:2203:57 | impl ... | -| main.rs:2228:17:2228:35 | get_a_my_trait2(...) | impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2228:17:2228:43 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2228:33:2228:34 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2231:13:2231:13 | f | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | T | main.rs:2207:50:2207:64 | impl ... | -| main.rs:2231:17:2231:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2231:17:2231:44 | ... .unwrap() | | main.rs:2207:50:2207:64 | impl ... | -| main.rs:2231:17:2231:44 | ... .unwrap() | impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2231:17:2231:52 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2231:33:2231:34 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:13:2232:13 | g | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 0(2) | main.rs:2211:44:2211:58 | impl ... | -| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 1(2) | main.rs:2211:61:2211:75 | impl ... | -| main.rs:2232:17:2232:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:17:2232:37 | ... .0 | | main.rs:2211:44:2211:58 | impl ... | -| main.rs:2232:17:2232:37 | ... .0 | impl(T) | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:17:2232:45 | ... .get_a() | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2232:33:2232:34 | S1 | | main.rs:2153:5:2154:14 | S1 | -| main.rs:2243:16:2243:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2243:16:2243:20 | SelfParam | &T | main.rs:2239:5:2240:13 | S | -| main.rs:2243:31:2245:9 | { ... } | | main.rs:2239:5:2240:13 | S | -| main.rs:2244:13:2244:13 | S | | main.rs:2239:5:2240:13 | S | -| main.rs:2254:26:2256:9 | { ... } | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2254:26:2256:9 | { ... } | T | main.rs:2253:10:2253:10 | T | -| main.rs:2255:13:2255:38 | MyVec {...} | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2255:13:2255:38 | MyVec {...} | T | main.rs:2253:10:2253:10 | T | -| main.rs:2255:27:2255:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2255:27:2255:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2255:27:2255:36 | ...::new(...) | T | main.rs:2253:10:2253:10 | T | -| main.rs:2258:17:2258:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2258:17:2258:25 | SelfParam | &T | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2258:17:2258:25 | SelfParam | &T.T | main.rs:2253:10:2253:10 | T | -| main.rs:2258:28:2258:32 | value | | main.rs:2253:10:2253:10 | T | -| main.rs:2259:13:2259:16 | self | | file://:0:0:0:0 | & | -| main.rs:2259:13:2259:16 | self | &T | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2259:13:2259:16 | self | &T.T | main.rs:2253:10:2253:10 | T | -| main.rs:2259:13:2259:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2259:13:2259:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2259:13:2259:21 | self.data | T | main.rs:2253:10:2253:10 | T | -| main.rs:2259:28:2259:32 | value | | main.rs:2253:10:2253:10 | T | -| main.rs:2267:18:2267:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2267:18:2267:22 | SelfParam | &T | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2267:18:2267:22 | SelfParam | &T.T | main.rs:2263:10:2263:10 | T | -| main.rs:2267:25:2267:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2267:56:2269:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2267:56:2269:9 | { ... } | &T | main.rs:2263:10:2263:10 | T | -| main.rs:2268:13:2268:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2268:13:2268:29 | &... | &T | main.rs:2263:10:2263:10 | T | -| main.rs:2268:14:2268:17 | self | | file://:0:0:0:0 | & | -| main.rs:2268:14:2268:17 | self | &T | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2268:14:2268:17 | self | &T.T | main.rs:2263:10:2263:10 | T | -| main.rs:2268:14:2268:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2268:14:2268:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2268:14:2268:22 | self.data | T | main.rs:2263:10:2263:10 | T | -| main.rs:2268:14:2268:29 | ...[index] | | main.rs:2263:10:2263:10 | T | -| main.rs:2268:24:2268:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2272:22:2272:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2272:22:2272:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2272:22:2272:26 | slice | &T.[T] | main.rs:2239:5:2240:13 | S | -| main.rs:2273:13:2273:13 | x | | main.rs:2239:5:2240:13 | S | -| main.rs:2273:17:2273:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2273:17:2273:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2273:17:2273:21 | slice | &T.[T] | main.rs:2239:5:2240:13 | S | -| main.rs:2273:17:2273:24 | slice[0] | | main.rs:2239:5:2240:13 | S | -| main.rs:2273:17:2273:30 | ... .foo() | | main.rs:2239:5:2240:13 | S | -| main.rs:2273:23:2273:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2276:37:2276:37 | a | | main.rs:2276:20:2276:34 | T | -| main.rs:2276:43:2276:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2279:5:2281:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2280:9:2280:9 | a | | main.rs:2276:20:2276:34 | T | -| main.rs:2280:9:2280:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2280:11:2280:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2284:17:2284:19 | vec | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2284:17:2284:19 | vec | T | main.rs:2239:5:2240:13 | S | -| main.rs:2284:23:2284:34 | ...::new(...) | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2284:23:2284:34 | ...::new(...) | T | main.rs:2239:5:2240:13 | S | -| main.rs:2285:9:2285:11 | vec | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2285:9:2285:11 | vec | T | main.rs:2239:5:2240:13 | S | -| main.rs:2285:18:2285:18 | S | | main.rs:2239:5:2240:13 | S | -| main.rs:2286:9:2286:11 | vec | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2286:9:2286:11 | vec | T | main.rs:2239:5:2240:13 | S | -| main.rs:2286:9:2286:14 | vec[0] | | main.rs:2239:5:2240:13 | S | -| main.rs:2286:9:2286:20 | ... .foo() | | main.rs:2239:5:2240:13 | S | -| main.rs:2286:13:2286:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2286:13:2286:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2288:13:2288:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2288:13:2288:14 | xs | [T;...] | main.rs:2239:5:2240:13 | S | -| main.rs:2288:21:2288:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2288:26:2288:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2288:26:2288:28 | [...] | [T;...] | main.rs:2239:5:2240:13 | S | -| main.rs:2288:27:2288:27 | S | | main.rs:2239:5:2240:13 | S | -| main.rs:2289:13:2289:13 | x | | main.rs:2239:5:2240:13 | S | -| main.rs:2289:17:2289:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2289:17:2289:18 | xs | [T;...] | main.rs:2239:5:2240:13 | S | -| main.rs:2289:17:2289:21 | xs[0] | | main.rs:2239:5:2240:13 | S | -| main.rs:2289:17:2289:27 | ... .foo() | | main.rs:2239:5:2240:13 | S | -| main.rs:2289:20:2289:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:29:2291:31 | vec | | main.rs:2248:5:2251:5 | MyVec | -| main.rs:2291:29:2291:31 | vec | T | main.rs:2239:5:2240:13 | S | -| main.rs:2291:34:2291:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:34:2291:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2293:23:2293:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2293:23:2293:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2293:23:2293:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2293:23:2293:25 | &xs | &T.[T;...] | main.rs:2239:5:2240:13 | S | -| main.rs:2293:23:2293:25 | &xs | &T.[T] | main.rs:2239:5:2240:13 | S | -| main.rs:2293:24:2293:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2293:24:2293:25 | xs | [T;...] | main.rs:2239:5:2240:13 | S | -| main.rs:2299:13:2299:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2299:17:2299:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2299:25:2299:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2299:25:2299:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2299:25:2299:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2299:25:2299:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2299:25:2299:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2299:25:2299:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2299:25:2299:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2299:38:2299:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2299:38:2299:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2308:19:2308:22 | SelfParam | | main.rs:2304:5:2309:5 | Self [trait MyAdd] | -| main.rs:2308:25:2308:27 | rhs | | main.rs:2304:17:2304:26 | Rhs | -| main.rs:2315:19:2315:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2315:25:2315:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2315:45:2317:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2316:13:2316:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2324:19:2324:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2324:25:2324:29 | value | | file://:0:0:0:0 | & | -| main.rs:2324:25:2324:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2324:46:2326:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2325:13:2325:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2325:14:2325:18 | value | | file://:0:0:0:0 | & | -| main.rs:2325:14:2325:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2333:19:2333:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2333:25:2333:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2333:46:2339:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2334:13:2338:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:13:2338:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2334:16:2334:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2334:22:2336:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2334:22:2336:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2335:17:2335:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:17:2335:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2336:20:2338:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:20:2338:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2337:17:2337:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2337:17:2337:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2348:19:2348:22 | SelfParam | | main.rs:2342:5:2342:19 | S | -| main.rs:2348:19:2348:22 | SelfParam | T | main.rs:2344:10:2344:17 | T | -| main.rs:2348:25:2348:29 | other | | main.rs:2342:5:2342:19 | S | -| main.rs:2348:25:2348:29 | other | T | main.rs:2344:10:2344:17 | T | -| main.rs:2348:54:2350:9 | { ... } | | main.rs:2342:5:2342:19 | S | -| main.rs:2348:54:2350:9 | { ... } | T | main.rs:2305:9:2305:20 | Output | -| main.rs:2349:13:2349:39 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2349:13:2349:39 | S(...) | T | main.rs:2305:9:2305:20 | Output | -| main.rs:2349:15:2349:22 | (...) | | main.rs:2344:10:2344:17 | T | -| main.rs:2349:15:2349:38 | ... .my_add(...) | | main.rs:2305:9:2305:20 | Output | -| main.rs:2349:16:2349:19 | self | | main.rs:2342:5:2342:19 | S | -| main.rs:2349:16:2349:19 | self | T | main.rs:2344:10:2344:17 | T | -| main.rs:2349:16:2349:21 | self.0 | | main.rs:2344:10:2344:17 | T | -| main.rs:2349:31:2349:35 | other | | main.rs:2342:5:2342:19 | S | -| main.rs:2349:31:2349:35 | other | T | main.rs:2344:10:2344:17 | T | -| main.rs:2349:31:2349:37 | other.0 | | main.rs:2344:10:2344:17 | T | -| main.rs:2357:19:2357:22 | SelfParam | | main.rs:2342:5:2342:19 | S | -| main.rs:2357:19:2357:22 | SelfParam | T | main.rs:2353:10:2353:17 | T | -| main.rs:2357:25:2357:29 | other | | main.rs:2353:10:2353:17 | T | -| main.rs:2357:51:2359:9 | { ... } | | main.rs:2342:5:2342:19 | S | -| main.rs:2357:51:2359:9 | { ... } | T | main.rs:2305:9:2305:20 | Output | -| main.rs:2358:13:2358:37 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2358:13:2358:37 | S(...) | T | main.rs:2305:9:2305:20 | Output | -| main.rs:2358:15:2358:22 | (...) | | main.rs:2353:10:2353:17 | T | -| main.rs:2358:15:2358:36 | ... .my_add(...) | | main.rs:2305:9:2305:20 | Output | -| main.rs:2358:16:2358:19 | self | | main.rs:2342:5:2342:19 | S | -| main.rs:2358:16:2358:19 | self | T | main.rs:2353:10:2353:17 | T | -| main.rs:2358:16:2358:21 | self.0 | | main.rs:2353:10:2353:17 | T | -| main.rs:2358:31:2358:35 | other | | main.rs:2353:10:2353:17 | T | -| main.rs:2369:19:2369:22 | SelfParam | | main.rs:2342:5:2342:19 | S | -| main.rs:2369:19:2369:22 | SelfParam | T | main.rs:2362:14:2362:14 | T | -| main.rs:2369:25:2369:29 | other | | file://:0:0:0:0 | & | -| main.rs:2369:25:2369:29 | other | &T | main.rs:2362:14:2362:14 | T | -| main.rs:2369:55:2371:9 | { ... } | | main.rs:2342:5:2342:19 | S | -| main.rs:2370:13:2370:37 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2370:15:2370:22 | (...) | | main.rs:2362:14:2362:14 | T | -| main.rs:2370:16:2370:19 | self | | main.rs:2342:5:2342:19 | S | -| main.rs:2370:16:2370:19 | self | T | main.rs:2362:14:2362:14 | T | -| main.rs:2370:16:2370:21 | self.0 | | main.rs:2362:14:2362:14 | T | -| main.rs:2370:31:2370:35 | other | | file://:0:0:0:0 | & | -| main.rs:2370:31:2370:35 | other | &T | main.rs:2362:14:2362:14 | T | -| main.rs:2376:20:2376:24 | value | | main.rs:2374:18:2374:18 | T | -| main.rs:2381:20:2381:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2381:40:2383:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2382:13:2382:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2388:20:2388:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2388:41:2394:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2389:13:2393:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2389:13:2393:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2389:16:2389:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2389:22:2391:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2389:22:2391:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2390:17:2390:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:17:2390:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2391:20:2393:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2391:20:2393:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2392:17:2392:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2392:17:2392:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2399:21:2399:25 | value | | main.rs:2397:19:2397:19 | T | -| main.rs:2399:31:2399:31 | x | | main.rs:2397:5:2400:5 | Self [trait MyFrom2] | -| main.rs:2404:21:2404:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2404:33:2404:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2404:48:2406:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2405:13:2405:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2411:21:2411:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2411:34:2411:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2411:49:2417:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2412:13:2416:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2412:16:2412:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2412:22:2414:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2413:17:2413:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:20:2416:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:17:2415:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2422:15:2422:15 | x | | main.rs:2420:5:2426:5 | Self [trait MySelfTrait] | -| main.rs:2425:15:2425:15 | x | | main.rs:2420:5:2426:5 | Self [trait MySelfTrait] | -| main.rs:2430:15:2430:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2430:31:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:13:2431:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:13:2431:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:17:2431:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2125:41:2127:5 | { ... } | | main.rs:2125:16:2125:39 | impl ... | +| main.rs:2126:9:2126:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2135:13:2135:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2135:13:2135:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2135:13:2135:42 | SelfParam | Ptr.&T | main.rs:2129:5:2129:14 | S2 | +| main.rs:2136:13:2136:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2136:13:2136:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2137:44:2139:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2137:44:2139:9 | { ... } | T | main.rs:2111:5:2111:14 | S1 | +| main.rs:2138:13:2138:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2138:13:2138:38 | ...::Ready(...) | T | main.rs:2111:5:2111:14 | S1 | +| main.rs:2138:36:2138:37 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2142:41:2144:5 | { ... } | | main.rs:2142:16:2142:39 | impl ... | +| main.rs:2143:9:2143:10 | S2 | | main.rs:2129:5:2129:14 | S2 | +| main.rs:2143:9:2143:10 | S2 | | main.rs:2142:16:2142:39 | impl ... | +| main.rs:2147:9:2147:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2147:9:2147:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2147:9:2147:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2148:9:2148:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | +| main.rs:2148:9:2148:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2149:9:2149:12 | f3(...) | | main.rs:2125:16:2125:39 | impl ... | +| main.rs:2149:9:2149:18 | await ... | | file://:0:0:0:0 | () | +| main.rs:2150:9:2150:12 | f4(...) | | main.rs:2142:16:2142:39 | impl ... | +| main.rs:2150:9:2150:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2151:9:2151:10 | S2 | | main.rs:2129:5:2129:14 | S2 | +| main.rs:2151:9:2151:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2152:13:2152:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2152:13:2152:13 | b | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2152:17:2152:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2152:17:2152:28 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2152:25:2152:26 | S1 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2153:9:2153:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2153:9:2153:9 | b | Output | main.rs:2111:5:2111:14 | S1 | +| main.rs:2153:9:2153:15 | await b | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2164:15:2164:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2164:15:2164:19 | SelfParam | &T | main.rs:2163:5:2165:5 | Self [trait Trait1] | +| main.rs:2168:15:2168:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2168:15:2168:19 | SelfParam | &T | main.rs:2167:5:2169:5 | Self [trait Trait2] | +| main.rs:2172:15:2172:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2172:15:2172:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | +| main.rs:2176:15:2176:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2176:15:2176:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | +| main.rs:2179:37:2181:5 | { ... } | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2180:9:2180:10 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2180:9:2180:10 | S1 | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2184:18:2184:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2184:18:2184:22 | SelfParam | &T | main.rs:2183:5:2185:5 | Self [trait MyTrait] | +| main.rs:2188:18:2188:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2188:18:2188:22 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | +| main.rs:2188:31:2190:9 | { ... } | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2189:13:2189:14 | S2 | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2194:18:2194:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2194:18:2194:22 | SelfParam | &T | main.rs:2161:5:2161:22 | S3 | +| main.rs:2194:18:2194:22 | SelfParam | &T.T3 | main.rs:2193:10:2193:17 | T | +| main.rs:2194:30:2197:9 | { ... } | | main.rs:2193:10:2193:17 | T | +| main.rs:2195:17:2195:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2195:17:2195:21 | S3(...) | | main.rs:2161:5:2161:22 | S3 | +| main.rs:2195:17:2195:21 | S3(...) | &T | main.rs:2161:5:2161:22 | S3 | +| main.rs:2195:17:2195:21 | S3(...) | &T.T3 | main.rs:2193:10:2193:17 | T | +| main.rs:2195:25:2195:28 | self | | file://:0:0:0:0 | & | +| main.rs:2195:25:2195:28 | self | &T | main.rs:2161:5:2161:22 | S3 | +| main.rs:2195:25:2195:28 | self | &T.T3 | main.rs:2193:10:2193:17 | T | +| main.rs:2196:13:2196:21 | t.clone() | | main.rs:2193:10:2193:17 | T | +| main.rs:2200:45:2202:5 | { ... } | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2201:9:2201:10 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2201:9:2201:10 | S1 | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2204:41:2204:41 | t | | main.rs:2204:26:2204:38 | B | +| main.rs:2204:52:2206:5 | { ... } | | main.rs:2204:23:2204:23 | A | +| main.rs:2205:9:2205:9 | t | | main.rs:2204:26:2204:38 | B | +| main.rs:2205:9:2205:17 | t.get_a() | | main.rs:2204:23:2204:23 | A | +| main.rs:2208:34:2208:34 | x | | main.rs:2208:24:2208:31 | T | +| main.rs:2208:59:2210:5 | { ... } | | main.rs:2208:43:2208:57 | impl ... | +| main.rs:2208:59:2210:5 | { ... } | impl(T) | main.rs:2208:24:2208:31 | T | +| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2161:5:2161:22 | S3 | +| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2208:43:2208:57 | impl ... | +| main.rs:2209:9:2209:13 | S3(...) | T3 | main.rs:2208:24:2208:31 | T | +| main.rs:2209:9:2209:13 | S3(...) | impl(T) | main.rs:2208:24:2208:31 | T | +| main.rs:2209:12:2209:12 | x | | main.rs:2208:24:2208:31 | T | +| main.rs:2212:34:2212:34 | x | | main.rs:2212:24:2212:31 | T | +| main.rs:2212:67:2214:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2212:67:2214:5 | { ... } | T | main.rs:2212:50:2212:64 | impl ... | +| main.rs:2212:67:2214:5 | { ... } | T.impl(T) | main.rs:2212:24:2212:31 | T | +| main.rs:2213:9:2213:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2161:5:2161:22 | S3 | +| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2212:50:2212:64 | impl ... | +| main.rs:2213:9:2213:19 | Some(...) | T.T3 | main.rs:2212:24:2212:31 | T | +| main.rs:2213:9:2213:19 | Some(...) | T.impl(T) | main.rs:2212:24:2212:31 | T | +| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2161:5:2161:22 | S3 | +| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2212:50:2212:64 | impl ... | +| main.rs:2213:14:2213:18 | S3(...) | T3 | main.rs:2212:24:2212:31 | T | +| main.rs:2213:14:2213:18 | S3(...) | impl(T) | main.rs:2212:24:2212:31 | T | +| main.rs:2213:17:2213:17 | x | | main.rs:2212:24:2212:31 | T | +| main.rs:2216:34:2216:34 | x | | main.rs:2216:24:2216:31 | T | +| main.rs:2216:78:2218:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2216:78:2218:5 | { ... } | 0(2) | main.rs:2216:44:2216:58 | impl ... | +| main.rs:2216:78:2218:5 | { ... } | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2216:78:2218:5 | { ... } | 1(2) | main.rs:2216:61:2216:75 | impl ... | +| main.rs:2216:78:2218:5 | { ... } | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2217:9:2217:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2161:5:2161:22 | S3 | +| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2216:44:2216:58 | impl ... | +| main.rs:2217:9:2217:30 | TupleExpr | 0(2).T3 | main.rs:2216:24:2216:31 | T | +| main.rs:2217:9:2217:30 | TupleExpr | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2161:5:2161:22 | S3 | +| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2216:61:2216:75 | impl ... | +| main.rs:2217:9:2217:30 | TupleExpr | 1(2).T3 | main.rs:2216:24:2216:31 | T | +| main.rs:2217:9:2217:30 | TupleExpr | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2161:5:2161:22 | S3 | +| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2216:44:2216:58 | impl ... | +| main.rs:2217:10:2217:22 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | +| main.rs:2217:10:2217:22 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2217:13:2217:13 | x | | main.rs:2216:24:2216:31 | T | +| main.rs:2217:13:2217:21 | x.clone() | | main.rs:2216:24:2216:31 | T | +| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2161:5:2161:22 | S3 | +| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2216:61:2216:75 | impl ... | +| main.rs:2217:25:2217:29 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | +| main.rs:2217:25:2217:29 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | +| main.rs:2217:28:2217:28 | x | | main.rs:2216:24:2216:31 | T | +| main.rs:2220:26:2220:26 | t | | main.rs:2220:29:2220:43 | impl ... | +| main.rs:2220:51:2222:5 | { ... } | | main.rs:2220:23:2220:23 | A | +| main.rs:2221:9:2221:9 | t | | main.rs:2220:29:2220:43 | impl ... | +| main.rs:2221:9:2221:17 | t.get_a() | | main.rs:2220:23:2220:23 | A | +| main.rs:2225:13:2225:13 | x | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2225:17:2225:20 | f1(...) | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2226:9:2226:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2227:9:2227:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2228:13:2228:13 | a | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2228:17:2228:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2229:13:2229:13 | b | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2229:17:2229:33 | uses_my_trait1(...) | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2229:32:2229:32 | a | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2230:13:2230:13 | a | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2230:17:2230:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2231:13:2231:13 | c | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2231:17:2231:33 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2231:32:2231:32 | a | | main.rs:2200:28:2200:43 | impl ... | +| main.rs:2232:13:2232:13 | d | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2232:17:2232:34 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | +| main.rs:2232:32:2232:33 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2233:13:2233:13 | e | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | | main.rs:2208:43:2208:57 | impl ... | +| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2233:17:2233:43 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2233:33:2233:34 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2236:13:2236:13 | f | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T | main.rs:2212:50:2212:64 | impl ... | +| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2236:17:2236:44 | ... .unwrap() | | main.rs:2212:50:2212:64 | impl ... | +| main.rs:2236:17:2236:44 | ... .unwrap() | impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2236:17:2236:52 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2236:33:2236:34 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:13:2237:13 | g | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2) | main.rs:2216:44:2216:58 | impl ... | +| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2) | main.rs:2216:61:2216:75 | impl ... | +| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:17:2237:37 | ... .0 | | main.rs:2216:44:2216:58 | impl ... | +| main.rs:2237:17:2237:37 | ... .0 | impl(T) | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:17:2237:45 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2237:33:2237:34 | S1 | | main.rs:2158:5:2159:14 | S1 | +| main.rs:2248:16:2248:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2248:16:2248:20 | SelfParam | &T | main.rs:2244:5:2245:13 | S | +| main.rs:2248:31:2250:9 | { ... } | | main.rs:2244:5:2245:13 | S | +| main.rs:2249:13:2249:13 | S | | main.rs:2244:5:2245:13 | S | +| main.rs:2259:26:2261:9 | { ... } | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2259:26:2261:9 | { ... } | T | main.rs:2258:10:2258:10 | T | +| main.rs:2260:13:2260:38 | MyVec {...} | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2260:13:2260:38 | MyVec {...} | T | main.rs:2258:10:2258:10 | T | +| main.rs:2260:27:2260:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2260:27:2260:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2260:27:2260:36 | ...::new(...) | T | main.rs:2258:10:2258:10 | T | +| main.rs:2263:17:2263:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2263:17:2263:25 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2263:17:2263:25 | SelfParam | &T.T | main.rs:2258:10:2258:10 | T | +| main.rs:2263:28:2263:32 | value | | main.rs:2258:10:2258:10 | T | +| main.rs:2264:13:2264:16 | self | | file://:0:0:0:0 | & | +| main.rs:2264:13:2264:16 | self | &T | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2264:13:2264:16 | self | &T.T | main.rs:2258:10:2258:10 | T | +| main.rs:2264:13:2264:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2264:13:2264:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2264:13:2264:21 | self.data | T | main.rs:2258:10:2258:10 | T | +| main.rs:2264:28:2264:32 | value | | main.rs:2258:10:2258:10 | T | +| main.rs:2272:18:2272:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2272:18:2272:22 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2272:18:2272:22 | SelfParam | &T.T | main.rs:2268:10:2268:10 | T | +| main.rs:2272:25:2272:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2272:56:2274:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2272:56:2274:9 | { ... } | &T | main.rs:2268:10:2268:10 | T | +| main.rs:2273:13:2273:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2273:13:2273:29 | &... | &T | main.rs:2268:10:2268:10 | T | +| main.rs:2273:14:2273:17 | self | | file://:0:0:0:0 | & | +| main.rs:2273:14:2273:17 | self | &T | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2273:14:2273:17 | self | &T.T | main.rs:2268:10:2268:10 | T | +| main.rs:2273:14:2273:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2273:14:2273:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2273:14:2273:22 | self.data | T | main.rs:2268:10:2268:10 | T | +| main.rs:2273:14:2273:29 | ...[index] | | main.rs:2268:10:2268:10 | T | +| main.rs:2273:24:2273:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2277:22:2277:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2277:22:2277:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2277:22:2277:26 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | +| main.rs:2278:13:2278:13 | x | | main.rs:2244:5:2245:13 | S | +| main.rs:2278:17:2278:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2278:17:2278:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2278:17:2278:21 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | +| main.rs:2278:17:2278:24 | slice[0] | | main.rs:2244:5:2245:13 | S | +| main.rs:2278:17:2278:30 | ... .foo() | | main.rs:2244:5:2245:13 | S | +| main.rs:2278:23:2278:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2281:37:2281:37 | a | | main.rs:2281:20:2281:34 | T | +| main.rs:2281:43:2281:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2284:5:2286:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2285:9:2285:9 | a | | main.rs:2281:20:2281:34 | T | +| main.rs:2285:9:2285:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2285:11:2285:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2289:17:2289:19 | vec | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2289:17:2289:19 | vec | T | main.rs:2244:5:2245:13 | S | +| main.rs:2289:23:2289:34 | ...::new(...) | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2289:23:2289:34 | ...::new(...) | T | main.rs:2244:5:2245:13 | S | +| main.rs:2290:9:2290:11 | vec | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2290:9:2290:11 | vec | T | main.rs:2244:5:2245:13 | S | +| main.rs:2290:18:2290:18 | S | | main.rs:2244:5:2245:13 | S | +| main.rs:2291:9:2291:11 | vec | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2291:9:2291:11 | vec | T | main.rs:2244:5:2245:13 | S | +| main.rs:2291:9:2291:14 | vec[0] | | main.rs:2244:5:2245:13 | S | +| main.rs:2291:9:2291:20 | ... .foo() | | main.rs:2244:5:2245:13 | S | +| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2293:13:2293:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2293:13:2293:14 | xs | [T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2293:21:2293:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2293:26:2293:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2293:26:2293:28 | [...] | [T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2293:27:2293:27 | S | | main.rs:2244:5:2245:13 | S | +| main.rs:2294:13:2294:13 | x | | main.rs:2244:5:2245:13 | S | +| main.rs:2294:17:2294:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2294:17:2294:18 | xs | [T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2294:17:2294:21 | xs[0] | | main.rs:2244:5:2245:13 | S | +| main.rs:2294:17:2294:27 | ... .foo() | | main.rs:2244:5:2245:13 | S | +| main.rs:2294:20:2294:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2296:29:2296:31 | vec | | main.rs:2253:5:2256:5 | MyVec | +| main.rs:2296:29:2296:31 | vec | T | main.rs:2244:5:2245:13 | S | +| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2298:23:2298:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2298:23:2298:25 | &xs | &T.[T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2298:23:2298:25 | &xs | &T.[T] | main.rs:2244:5:2245:13 | S | +| main.rs:2298:24:2298:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2298:24:2298:25 | xs | [T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2304:13:2304:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2304:17:2304:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2304:25:2304:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2304:25:2304:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2304:25:2304:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2304:25:2304:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2304:25:2304:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2304:25:2304:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2304:25:2304:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2304:38:2304:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2304:38:2304:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2313:19:2313:22 | SelfParam | | main.rs:2309:5:2314:5 | Self [trait MyAdd] | +| main.rs:2313:25:2313:27 | rhs | | main.rs:2309:17:2309:26 | Rhs | +| main.rs:2320:19:2320:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2320:25:2320:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2320:45:2322:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2321:13:2321:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:19:2329:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:25:2329:29 | value | | file://:0:0:0:0 | & | +| main.rs:2329:25:2329:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:46:2331:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2330:13:2330:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2330:14:2330:18 | value | | file://:0:0:0:0 | & | +| main.rs:2330:14:2330:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2338:19:2338:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2338:25:2338:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2338:46:2344:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2339:16:2339:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2353:19:2353:22 | SelfParam | | main.rs:2347:5:2347:19 | S | +| main.rs:2353:19:2353:22 | SelfParam | T | main.rs:2349:10:2349:17 | T | +| main.rs:2353:25:2353:29 | other | | main.rs:2347:5:2347:19 | S | +| main.rs:2353:25:2353:29 | other | T | main.rs:2349:10:2349:17 | T | +| main.rs:2353:54:2355:9 | { ... } | | main.rs:2347:5:2347:19 | S | +| main.rs:2353:54:2355:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | +| main.rs:2354:13:2354:39 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2354:13:2354:39 | S(...) | T | main.rs:2310:9:2310:20 | Output | +| main.rs:2354:15:2354:22 | (...) | | main.rs:2349:10:2349:17 | T | +| main.rs:2354:15:2354:38 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | +| main.rs:2354:16:2354:19 | self | | main.rs:2347:5:2347:19 | S | +| main.rs:2354:16:2354:19 | self | T | main.rs:2349:10:2349:17 | T | +| main.rs:2354:16:2354:21 | self.0 | | main.rs:2349:10:2349:17 | T | +| main.rs:2354:31:2354:35 | other | | main.rs:2347:5:2347:19 | S | +| main.rs:2354:31:2354:35 | other | T | main.rs:2349:10:2349:17 | T | +| main.rs:2354:31:2354:37 | other.0 | | main.rs:2349:10:2349:17 | T | +| main.rs:2362:19:2362:22 | SelfParam | | main.rs:2347:5:2347:19 | S | +| main.rs:2362:19:2362:22 | SelfParam | T | main.rs:2358:10:2358:17 | T | +| main.rs:2362:25:2362:29 | other | | main.rs:2358:10:2358:17 | T | +| main.rs:2362:51:2364:9 | { ... } | | main.rs:2347:5:2347:19 | S | +| main.rs:2362:51:2364:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | +| main.rs:2363:13:2363:37 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2363:13:2363:37 | S(...) | T | main.rs:2310:9:2310:20 | Output | +| main.rs:2363:15:2363:22 | (...) | | main.rs:2358:10:2358:17 | T | +| main.rs:2363:15:2363:36 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | +| main.rs:2363:16:2363:19 | self | | main.rs:2347:5:2347:19 | S | +| main.rs:2363:16:2363:19 | self | T | main.rs:2358:10:2358:17 | T | +| main.rs:2363:16:2363:21 | self.0 | | main.rs:2358:10:2358:17 | T | +| main.rs:2363:31:2363:35 | other | | main.rs:2358:10:2358:17 | T | +| main.rs:2374:19:2374:22 | SelfParam | | main.rs:2347:5:2347:19 | S | +| main.rs:2374:19:2374:22 | SelfParam | T | main.rs:2367:14:2367:14 | T | +| main.rs:2374:25:2374:29 | other | | file://:0:0:0:0 | & | +| main.rs:2374:25:2374:29 | other | &T | main.rs:2367:14:2367:14 | T | +| main.rs:2374:55:2376:9 | { ... } | | main.rs:2347:5:2347:19 | S | +| main.rs:2375:13:2375:37 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2375:15:2375:22 | (...) | | main.rs:2367:14:2367:14 | T | +| main.rs:2375:16:2375:19 | self | | main.rs:2347:5:2347:19 | S | +| main.rs:2375:16:2375:19 | self | T | main.rs:2367:14:2367:14 | T | +| main.rs:2375:16:2375:21 | self.0 | | main.rs:2367:14:2367:14 | T | +| main.rs:2375:31:2375:35 | other | | file://:0:0:0:0 | & | +| main.rs:2375:31:2375:35 | other | &T | main.rs:2367:14:2367:14 | T | +| main.rs:2381:20:2381:24 | value | | main.rs:2379:18:2379:18 | T | +| main.rs:2386:20:2386:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2386:40:2388:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2387:13:2387:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2393:20:2393:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2393:41:2399:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2394:16:2394:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2404:21:2404:25 | value | | main.rs:2402:19:2402:19 | T | +| main.rs:2404:31:2404:31 | x | | main.rs:2402:5:2405:5 | Self [trait MyFrom2] | +| main.rs:2409:21:2409:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2409:33:2409:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2409:48:2411:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2410:13:2410:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:21:2416:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2416:34:2416:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:49:2422:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2417:13:2421:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2417:16:2417:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2417:22:2419:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2418:17:2418:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2419:20:2421:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2420:17:2420:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2427:15:2427:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | +| main.rs:2430:15:2430:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | | main.rs:2435:15:2435:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2435:32:2437:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2435:31:2437:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2436:13:2436:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2436:13:2436:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2436:17:2436:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2442:15:2442:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2442:31:2444:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:15:2440:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:32:2442:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2441:13:2441:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2441:13:2441:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2441:17:2441:17 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2447:15:2447:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2447:32:2449:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2448:13:2448:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2453:22:2453:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2453:22:2453:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2454:9:2454:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2454:9:2454:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2454:18:2454:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:9:2455:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:9:2455:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:18:2455:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2455:18:2455:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:19:2455:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2456:9:2456:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2456:9:2456:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2456:18:2456:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2458:9:2458:15 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2458:9:2458:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:9:2458:31 | ... .my_add(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2458:11:2458:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:24:2458:30 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2458:24:2458:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:26:2458:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:9:2459:15 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2459:9:2459:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:11:2459:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:24:2459:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:15 | S(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2460:9:2460:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:29 | ... .my_add(...) | | main.rs:2342:5:2342:19 | S | -| main.rs:2460:11:2460:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:24:2460:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2460:24:2460:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:25:2460:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2462:13:2462:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2462:17:2462:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2462:30:2462:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:13:2463:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:17:2463:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:30:2463:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2464:13:2464:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:22:2464:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:38:2464:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:9:2465:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2465:23:2465:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:30:2465:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2466:9:2466:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2466:23:2466:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2466:29:2466:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:9:2467:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2467:27:2467:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:34:2467:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:9:2469:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:17:2469:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:9:2470:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:17:2470:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2471:9:2471:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2471:18:2471:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2472:9:2472:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2472:18:2472:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2473:9:2473:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2473:25:2473:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:9:2474:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:25:2474:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:9:2475:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:25:2475:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2476:9:2476:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2476:25:2476:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2484:26:2486:9 | { ... } | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2485:13:2485:25 | MyCallable {...} | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2488:17:2488:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2488:17:2488:21 | SelfParam | &T | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2488:31:2490:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2489:13:2489:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2489:13:2489:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2496:13:2496:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2496:18:2496:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2496:18:2496:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2496:19:2496:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2496:22:2496:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2496:25:2496:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2497:18:2497:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2497:18:2497:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2497:18:2497:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2497:19:2497:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2497:22:2497:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2497:25:2497:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2497:32:2497:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2497:32:2497:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2497:40:2497:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:13:2498:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2498:13:2498:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:18:2498:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2498:18:2498:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:18:2498:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2498:18:2498:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:19:2498:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:22:2498:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2498:25:2498:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2500:13:2500:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2500:13:2500:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2500:13:2500:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2500:21:2500:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2500:21:2500:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2500:21:2500:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2500:22:2500:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2500:27:2500:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2500:27:2500:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2500:30:2500:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2500:30:2500:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2501:13:2501:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:13:2501:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2501:18:2501:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2501:18:2501:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:18:2501:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2503:13:2503:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2503:13:2503:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2503:21:2503:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2503:21:2503:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2503:22:2503:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2503:28:2503:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2504:13:2504:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2504:18:2504:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2504:18:2504:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2506:13:2506:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2506:13:2506:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2506:26:2506:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:31:2506:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2506:31:2506:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:31:2506:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2506:32:2506:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:32:2506:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2506:35:2506:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:35:2506:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2506:38:2506:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:38:2506:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2507:13:2507:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2507:18:2507:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2507:18:2507:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2509:13:2509:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2509:13:2509:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2509:26:2509:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:31:2509:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2509:31:2509:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:31:2509:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2509:32:2509:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:32:2509:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2509:35:2509:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2510:13:2510:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2510:18:2510:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2510:18:2510:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2512:17:2512:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2512:17:2512:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2512:17:2512:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2512:28:2512:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2512:28:2512:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2512:28:2512:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2512:29:2512:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2512:29:2512:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2512:36:2512:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2512:36:2512:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2512:43:2512:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2512:43:2512:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2513:13:2513:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2513:13:2513:13 | s | | file://:0:0:0:0 | & | -| main.rs:2513:13:2513:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2513:13:2513:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2513:18:2513:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2513:18:2513:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2513:18:2513:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2513:18:2513:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2513:19:2513:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2513:19:2513:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2513:19:2513:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2514:13:2514:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2514:13:2514:13 | s | | file://:0:0:0:0 | & | -| main.rs:2514:13:2514:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2514:13:2514:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2514:18:2514:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2514:18:2514:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2514:18:2514:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2514:18:2514:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2514:23:2514:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2514:23:2514:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2514:23:2514:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2515:13:2515:13 | s | | file://:0:0:0:0 | & | -| main.rs:2515:13:2515:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2515:18:2515:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2515:18:2515:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2515:18:2515:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2517:13:2517:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2517:13:2517:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2518:9:2522:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2518:9:2522:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2519:13:2519:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2519:26:2519:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2519:26:2519:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2520:13:2520:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2520:26:2520:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2520:26:2520:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2521:13:2521:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2521:26:2521:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2521:26:2521:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2523:13:2523:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2523:18:2523:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2523:18:2523:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2525:13:2525:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2525:13:2525:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2525:13:2525:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2526:9:2530:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2526:9:2530:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2526:9:2530:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2526:10:2530:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2526:10:2530:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2527:13:2527:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2527:26:2527:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2527:26:2527:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2528:13:2528:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2528:26:2528:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2528:26:2528:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2529:13:2529:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2529:26:2529:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2529:26:2529:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2531:13:2531:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2531:13:2531:13 | s | | file://:0:0:0:0 | & | -| main.rs:2531:13:2531:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2531:18:2531:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2531:18:2531:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2531:18:2531:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2533:13:2533:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2533:13:2533:21 | callables | [T;...] | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2533:25:2533:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2533:25:2533:81 | [...] | [T;...] | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2533:26:2533:42 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2533:45:2533:61 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2533:64:2533:80 | ...::new(...) | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2534:13:2534:13 | c | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2535:12:2535:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2535:12:2535:20 | callables | [T;...] | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2537:17:2537:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2537:26:2537:26 | c | | main.rs:2481:5:2481:24 | MyCallable | -| main.rs:2537:26:2537:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2542:13:2542:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2542:13:2542:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2542:18:2542:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2542:18:2542:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2542:18:2542:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2542:21:2542:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:13:2543:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2543:13:2543:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:13:2543:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2543:18:2543:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2543:18:2543:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2543:18:2543:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:18:2543:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2543:19:2543:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2543:19:2543:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2543:19:2543:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:19:2543:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2543:24:2543:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:24:2543:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2544:13:2544:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2544:13:2544:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2544:21:2544:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2544:21:2544:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2544:21:2544:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2544:24:2544:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2545:13:2545:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2545:13:2545:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2545:18:2545:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2545:18:2545:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2546:13:2546:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2546:26:2546:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2447:31:2449:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2452:15:2452:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2452:32:2454:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2458:13:2458:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:9:2459:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:9:2459:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2459:18:2459:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:9:2460:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:9:2460:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:18:2460:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2460:18:2460:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2460:19:2460:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2461:9:2461:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2461:9:2461:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2461:18:2461:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2463:9:2463:15 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2463:9:2463:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:9:2463:31 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2463:11:2463:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:24:2463:30 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2463:24:2463:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:26:2463:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:9:2464:15 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2464:9:2464:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:11:2464:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:24:2464:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:9:2465:15 | S(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2465:9:2465:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:9:2465:29 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | +| main.rs:2465:11:2465:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:24:2465:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2465:24:2465:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:25:2465:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2467:13:2467:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2467:17:2467:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2467:30:2467:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2468:13:2468:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2468:17:2468:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2468:30:2468:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2469:13:2469:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2469:22:2469:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2469:38:2469:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:9:2470:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2470:23:2470:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:30:2470:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2471:9:2471:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2471:23:2471:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2471:29:2471:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2472:9:2472:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2472:27:2472:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2472:34:2472:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:9:2474:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:17:2474:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:9:2475:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:17:2475:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2476:9:2476:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2476:18:2476:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2477:9:2477:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2477:18:2477:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2478:9:2478:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2478:25:2478:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2479:9:2479:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2479:25:2479:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2480:9:2480:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2480:25:2480:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2481:9:2481:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2481:25:2481:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2489:26:2491:9 | { ... } | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2490:13:2490:25 | MyCallable {...} | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2493:17:2493:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2493:17:2493:21 | SelfParam | &T | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2493:31:2495:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2501:13:2501:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:18:2501:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2501:18:2501:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:19:2501:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:22:2501:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:25:2501:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:18:2502:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2502:18:2502:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:18:2502:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2502:19:2502:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:22:2502:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:25:2502:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:32:2502:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2502:32:2502:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2502:40:2502:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:18:2503:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2503:18:2503:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:18:2503:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2503:18:2503:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:19:2503:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:22:2503:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:25:2503:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:13:2505:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:21:2505:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:22:2505:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:18:2506:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2508:13:2508:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2508:13:2508:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2508:21:2508:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2508:21:2508:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2508:22:2508:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2508:28:2508:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:13:2509:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2509:18:2509:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2509:18:2509:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2511:13:2511:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2511:13:2511:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2511:26:2511:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2511:31:2511:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2512:13:2512:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2512:18:2512:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2512:18:2512:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2514:13:2514:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2514:13:2514:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2514:26:2514:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2514:31:2514:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2514:35:2514:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2515:13:2515:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2515:18:2515:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2515:18:2515:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2517:17:2517:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2517:17:2517:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2517:17:2517:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2517:28:2517:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2517:28:2517:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2517:28:2517:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2517:29:2517:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2517:29:2517:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2517:36:2517:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2517:36:2517:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2517:43:2517:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2517:43:2517:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2518:13:2518:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2518:13:2518:13 | s | | file://:0:0:0:0 | & | +| main.rs:2518:13:2518:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2518:13:2518:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2518:18:2518:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2518:18:2518:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2518:19:2518:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2518:19:2518:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2518:19:2518:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2519:13:2519:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2519:13:2519:13 | s | | file://:0:0:0:0 | & | +| main.rs:2519:13:2519:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2519:13:2519:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2519:18:2519:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2519:18:2519:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2519:23:2519:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2519:23:2519:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2519:23:2519:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2520:13:2520:13 | s | | file://:0:0:0:0 | & | +| main.rs:2520:13:2520:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2520:18:2520:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2520:18:2520:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2520:18:2520:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2522:13:2522:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2522:13:2522:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2523:9:2527:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2523:9:2527:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2524:13:2524:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2524:26:2524:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2524:26:2524:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2525:13:2525:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2525:26:2525:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2525:26:2525:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2526:13:2526:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2526:26:2526:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2526:26:2526:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2528:13:2528:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2528:18:2528:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2528:18:2528:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2530:13:2530:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2530:13:2530:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2530:13:2530:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2531:9:2535:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2531:9:2535:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2531:9:2535:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2531:10:2535:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2531:10:2535:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2532:13:2532:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2532:26:2532:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2532:26:2532:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2533:13:2533:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2533:26:2533:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2533:26:2533:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2534:13:2534:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2534:26:2534:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2534:26:2534:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2536:13:2536:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2536:13:2536:13 | s | | file://:0:0:0:0 | & | +| main.rs:2536:13:2536:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2536:18:2536:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2536:18:2536:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2536:18:2536:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2538:13:2538:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2538:13:2538:21 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2538:25:2538:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2538:25:2538:81 | [...] | [T;...] | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2538:26:2538:42 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2538:45:2538:61 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2538:64:2538:80 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2539:13:2539:13 | c | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2540:12:2540:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2540:12:2540:20 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2542:17:2542:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2542:26:2542:26 | c | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2542:26:2542:33 | c.call() | | {EXTERNAL LOCATION} | i64 | | main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2547:18:2547:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2547:19:2547:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2547:19:2547:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:20:2547:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:26:2547:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:32:2547:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:38:2547:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2549:13:2549:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2549:13:2549:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2550:9:2553:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2550:9:2553:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2551:20:2551:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2552:18:2552:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2554:13:2554:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2554:13:2554:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2554:18:2554:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2554:18:2554:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2558:26:2558:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2558:29:2558:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2558:32:2558:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:13:2561:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2561:13:2561:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2561:13:2561:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2561:32:2561:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2561:32:2561:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:32:2561:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2561:32:2561:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2561:32:2561:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2561:32:2561:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2561:33:2561:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2561:39:2561:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:42:2561:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2562:13:2562:13 | u | | file://:0:0:0:0 | & | -| main.rs:2562:18:2562:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2562:18:2562:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2562:18:2562:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2564:22:2564:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2564:22:2564:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2564:22:2564:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2564:23:2564:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2564:29:2564:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2564:32:2564:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:13:2567:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2567:13:2567:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2567:13:2567:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:13:2567:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2567:21:2567:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2567:21:2567:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2567:21:2567:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:21:2567:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2567:31:2567:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2567:31:2567:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:31:2567:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2567:32:2567:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2567:38:2567:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:41:2567:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2568:13:2568:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2568:13:2568:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2568:13:2568:13 | u | | file://:0:0:0:0 | & | -| main.rs:2568:18:2568:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2568:18:2568:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2568:18:2568:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2568:18:2568:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2570:13:2570:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2570:13:2570:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2570:13:2570:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2570:13:2570:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2570:32:2570:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2570:32:2570:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2570:32:2570:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2570:32:2570:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2570:32:2570:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2570:32:2570:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2570:32:2570:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2570:33:2570:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2570:39:2570:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2570:42:2570:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2571:13:2571:13 | u | | file://:0:0:0:0 | & | -| main.rs:2571:13:2571:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2571:18:2571:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2571:18:2571:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2571:18:2571:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2571:18:2571:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2573:17:2573:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2573:17:2573:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2573:17:2573:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2573:25:2573:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2573:25:2573:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2573:25:2573:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2574:9:2574:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2574:9:2574:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2574:9:2574:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2574:20:2574:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2575:13:2575:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2575:13:2575:13 | u | | file://:0:0:0:0 | & | -| main.rs:2575:18:2575:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2575:18:2575:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2575:18:2575:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:33:2577:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:36:2577:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:45:2577:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:48:2577:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:17:2584:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2584:17:2584:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:17:2584:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2584:17:2584:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2584:17:2584:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2584:17:2584:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2584:17:2584:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2584:24:2584:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2584:24:2584:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:24:2584:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2584:24:2584:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2584:24:2584:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2584:24:2584:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2584:24:2584:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2585:9:2585:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2585:9:2585:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2585:9:2585:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2585:9:2585:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2585:9:2585:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2585:9:2585:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2585:9:2585:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2585:9:2585:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2585:9:2585:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2585:9:2585:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2585:9:2585:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2585:9:2585:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2585:21:2585:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2585:24:2585:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2585:24:2585:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2585:24:2585:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2585:24:2585:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2585:33:2585:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2585:33:2585:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2586:9:2586:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2586:9:2586:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2586:9:2586:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2586:9:2586:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2586:9:2586:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2586:9:2586:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2586:9:2586:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2586:9:2586:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2586:9:2586:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2586:9:2586:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2586:9:2586:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2586:9:2586:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2586:21:2586:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2586:24:2586:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2586:24:2586:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2586:24:2586:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2586:24:2586:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2586:33:2586:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2586:33:2586:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2587:13:2587:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2587:13:2587:15 | key | | file://:0:0:0:0 | & | -| main.rs:2587:13:2587:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:20:2587:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2587:20:2587:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:20:2587:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2587:20:2587:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2587:20:2587:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2587:20:2587:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2587:20:2587:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2587:20:2587:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2587:20:2587:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:20:2587:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2587:20:2587:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2587:20:2587:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2587:20:2587:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2588:13:2588:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2588:13:2588:17 | value | | file://:0:0:0:0 | & | -| main.rs:2588:13:2588:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2588:13:2588:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2588:13:2588:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2588:13:2588:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2588:22:2588:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2588:22:2588:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2588:22:2588:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2588:22:2588:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2588:22:2588:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2588:22:2588:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2588:22:2588:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2588:22:2588:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2588:22:2588:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2588:22:2588:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2588:22:2588:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2588:22:2588:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2588:22:2588:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:13:2589:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2589:13:2589:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2589:13:2589:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:13:2589:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2589:13:2589:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:14:2589:16 | key | | file://:0:0:0:0 | & | -| main.rs:2589:14:2589:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:19:2589:23 | value | | file://:0:0:0:0 | & | -| main.rs:2589:19:2589:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2589:19:2589:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:19:2589:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2589:19:2589:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:29:2589:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2589:29:2589:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:29:2589:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2589:29:2589:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:29:2589:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:29:2589:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2589:29:2589:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:29:2589:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2589:29:2589:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:29:2589:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:29:2589:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:29:2589:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2589:29:2589:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:13:2590:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2590:13:2590:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2590:13:2590:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:13:2590:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2590:13:2590:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:14:2590:16 | key | | file://:0:0:0:0 | & | -| main.rs:2590:14:2590:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:19:2590:23 | value | | file://:0:0:0:0 | & | -| main.rs:2590:19:2590:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2590:19:2590:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:19:2590:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2590:19:2590:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:29:2590:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2590:29:2590:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2590:29:2590:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:29:2590:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2590:29:2590:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2590:29:2590:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:29:2590:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2590:29:2590:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:30:2590:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2590:30:2590:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:30:2590:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2590:30:2590:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2590:30:2590:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:30:2590:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2590:30:2590:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:17:2594:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2594:26:2594:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:26:2594:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2596:23:2596:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2596:23:2596:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2596:27:2596:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2596:27:2596:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2598:13:2598:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2598:13:2598:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2598:18:2598:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2610:40:2612:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2610:40:2612:9 | { ... } | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2610:40:2612:9 | { ... } | T.T | main.rs:2609:10:2609:19 | T | -| main.rs:2611:13:2611:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2611:13:2611:16 | None | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2611:13:2611:16 | None | T.T | main.rs:2609:10:2609:19 | T | -| main.rs:2614:30:2616:9 | { ... } | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2614:30:2616:9 | { ... } | T | main.rs:2609:10:2609:19 | T | -| main.rs:2615:13:2615:28 | S1(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2615:13:2615:28 | S1(...) | T | main.rs:2609:10:2609:19 | T | -| main.rs:2615:16:2615:27 | ...::default(...) | | main.rs:2609:10:2609:19 | T | -| main.rs:2618:19:2618:22 | SelfParam | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2618:19:2618:22 | SelfParam | T | main.rs:2609:10:2609:19 | T | -| main.rs:2618:33:2620:9 | { ... } | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2618:33:2620:9 | { ... } | T | main.rs:2609:10:2609:19 | T | -| main.rs:2619:13:2619:16 | self | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2619:13:2619:16 | self | T | main.rs:2609:10:2609:19 | T | -| main.rs:2631:15:2631:15 | x | | main.rs:2631:12:2631:12 | T | -| main.rs:2631:26:2633:5 | { ... } | | main.rs:2631:12:2631:12 | T | -| main.rs:2632:9:2632:9 | x | | main.rs:2631:12:2631:12 | T | -| main.rs:2636:13:2636:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2636:13:2636:14 | x1 | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2636:13:2636:14 | x1 | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2636:34:2636:48 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2637:13:2637:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2637:13:2637:14 | x2 | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2637:13:2637:14 | x2 | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2637:18:2637:38 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2638:13:2638:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2638:13:2638:14 | x3 | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2638:13:2638:14 | x3 | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | T | main.rs:2604:5:2604:20 | S1 | -| main.rs:2638:18:2638:32 | ...::assoc_fun(...) | T.T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2639:13:2639:14 | x4 | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2639:13:2639:14 | x4 | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2639:18:2639:48 | ...::method(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2639:18:2639:48 | ...::method(...) | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2639:35:2639:47 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2639:35:2639:47 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2640:13:2640:14 | x5 | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2640:13:2640:14 | x5 | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2640:18:2640:42 | ...::method(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2640:18:2640:42 | ...::method(...) | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2640:29:2640:41 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2640:29:2640:41 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2641:13:2641:14 | x6 | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2641:13:2641:14 | x6 | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2641:18:2641:45 | S4::<...>(...) | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2641:18:2641:45 | S4::<...>(...) | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2641:27:2641:44 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2642:13:2642:14 | x7 | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2642:13:2642:14 | x7 | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2642:18:2642:23 | S4(...) | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2642:18:2642:23 | S4(...) | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2642:21:2642:22 | S2 | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2643:13:2643:14 | x8 | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2643:13:2643:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:18:2643:22 | S4(...) | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2643:18:2643:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:21:2643:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2644:13:2644:14 | x9 | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2644:13:2644:14 | x9 | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2644:18:2644:34 | S4(...) | | main.rs:2625:5:2625:27 | S4 | -| main.rs:2644:18:2644:34 | S4(...) | T4 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2644:21:2644:33 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2645:13:2645:15 | x10 | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2645:13:2645:15 | x10 | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2645:19:2648:9 | S5::<...> {...} | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2645:19:2648:9 | S5::<...> {...} | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2647:20:2647:37 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2649:13:2649:15 | x11 | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2649:13:2649:15 | x11 | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2649:19:2649:34 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2649:19:2649:34 | S5 {...} | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2649:31:2649:32 | S2 | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2650:13:2650:15 | x12 | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2650:13:2650:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2650:19:2650:33 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2650:19:2650:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2650:31:2650:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2651:13:2651:15 | x13 | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2651:13:2651:15 | x13 | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2651:19:2654:9 | S5 {...} | | main.rs:2627:5:2629:5 | S5 | -| main.rs:2651:19:2654:9 | S5 {...} | T5 | main.rs:2606:5:2607:14 | S2 | -| main.rs:2653:20:2653:32 | ...::default(...) | | main.rs:2606:5:2607:14 | S2 | -| main.rs:2655:13:2655:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:19:2655:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:30:2655:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2656:13:2656:15 | x15 | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2656:13:2656:15 | x15 | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2656:19:2656:37 | ...::default(...) | | main.rs:2604:5:2604:20 | S1 | -| main.rs:2656:19:2656:37 | ...::default(...) | T | main.rs:2606:5:2607:14 | S2 | -| main.rs:2665:35:2667:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2665:35:2667:9 | { ... } | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2665:35:2667:9 | { ... } | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2666:13:2666:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2666:13:2666:26 | TupleExpr | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2666:13:2666:26 | TupleExpr | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2666:14:2666:18 | S1 {...} | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2666:21:2666:25 | S1 {...} | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2668:16:2668:19 | SelfParam | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2672:13:2672:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2672:13:2672:13 | a | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2672:13:2672:13 | a | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2672:17:2672:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2672:17:2672:30 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2672:17:2672:30 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2673:17:2673:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2673:17:2673:17 | b | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2673:17:2673:17 | b | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2673:21:2673:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2673:21:2673:34 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2673:21:2673:34 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:13:2674:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2674:13:2674:18 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:13:2674:18 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:14:2674:14 | c | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:17:2674:17 | d | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:22:2674:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2674:22:2674:35 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2674:22:2674:35 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:13:2675:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2675:13:2675:22 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:13:2675:22 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:18:2675:18 | e | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:21:2675:21 | f | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:26:2675:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2675:26:2675:39 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2675:26:2675:39 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:13:2676:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2676:13:2676:26 | TuplePat | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:13:2676:26 | TuplePat | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:18:2676:18 | g | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:25:2676:25 | h | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:30:2676:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2676:30:2676:43 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2676:30:2676:43 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2678:9:2678:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2678:9:2678:9 | a | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2678:9:2678:9 | a | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2678:9:2678:11 | a.0 | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2679:9:2679:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2679:9:2679:9 | b | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2679:9:2679:9 | b | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2679:9:2679:11 | b.1 | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2680:9:2680:9 | c | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2681:9:2681:9 | d | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2682:9:2682:9 | e | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2683:9:2683:9 | f | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2684:9:2684:9 | g | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2685:9:2685:9 | h | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2690:13:2690:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2690:17:2690:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2691:13:2691:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2691:17:2691:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2692:13:2692:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2692:13:2692:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2692:13:2692:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2692:20:2692:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2692:20:2692:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2692:20:2692:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2692:21:2692:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2692:24:2692:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2693:13:2693:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2693:22:2693:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2693:22:2693:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2693:22:2693:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2693:22:2693:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2694:13:2694:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2694:23:2694:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2694:23:2694:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2694:23:2694:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2694:23:2694:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2696:13:2696:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2696:13:2696:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:13:2696:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:20:2696:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2696:20:2696:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:20:2696:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2696:20:2696:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:20:2696:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:21:2696:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:24:2696:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2697:15:2697:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2697:15:2697:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2697:15:2697:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:13:2698:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2698:13:2698:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:13:2698:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:14:2698:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:17:2698:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:30:2698:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2698:30:2698:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2698:30:2698:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2698:30:2698:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2699:13:2699:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2699:13:2699:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2699:13:2699:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2699:25:2699:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2699:25:2699:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2699:25:2699:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2699:25:2699:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2701:13:2701:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:17:2701:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2701:17:2701:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:17:2701:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:17:2701:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:13:2703:13 | y | | file://:0:0:0:0 | & | -| main.rs:2703:13:2703:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2703:13:2703:13 | y | &T.0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2703:13:2703:13 | y | &T.1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2703:17:2703:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2703:17:2703:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2703:17:2703:31 | &... | &T.0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2703:17:2703:31 | &... | &T.1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2703:18:2703:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2703:18:2703:31 | ...::get_pair(...) | 0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2703:18:2703:31 | ...::get_pair(...) | 1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2704:9:2704:9 | y | | file://:0:0:0:0 | & | -| main.rs:2704:9:2704:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2704:9:2704:9 | y | &T.0(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2704:9:2704:9 | y | &T.1(2) | main.rs:2661:5:2662:16 | S1 | -| main.rs:2704:9:2704:11 | y.0 | | main.rs:2661:5:2662:16 | S1 | -| main.rs:2711:13:2711:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2711:13:2711:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2711:13:2711:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2711:27:2711:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2711:27:2711:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2711:27:2711:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2711:36:2711:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2714:15:2714:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2714:15:2714:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2714:15:2714:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2715:13:2715:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2715:13:2715:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2715:13:2715:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2715:17:2715:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2716:26:2716:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2716:26:2716:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2716:26:2716:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2716:26:2716:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2718:13:2718:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2718:13:2718:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2718:13:2718:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:26:2720:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2720:26:2720:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2720:26:2720:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2720:26:2720:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2725:13:2725:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2725:13:2725:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:13:2725:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2725:13:2725:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:13:2725:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2725:26:2725:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2725:26:2725:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:26:2725:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2725:26:2725:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:26:2725:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2725:35:2725:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2725:35:2725:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2725:35:2725:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2725:44:2725:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:15:2726:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2726:15:2726:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2726:15:2726:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2726:15:2726:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2726:15:2726:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2727:13:2727:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2727:13:2727:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2727:13:2727:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2727:13:2727:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2727:13:2727:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2729:26:2729:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2729:26:2729:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2729:26:2729:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2729:26:2729:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2741:36:2743:9 | { ... } | | main.rs:2738:5:2738:22 | Path | -| main.rs:2742:13:2742:19 | Path {...} | | main.rs:2738:5:2738:22 | Path | -| main.rs:2745:29:2745:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2745:29:2745:33 | SelfParam | &T | main.rs:2738:5:2738:22 | Path | -| main.rs:2745:59:2747:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2745:59:2747:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2745:59:2747:9 | { ... } | T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2746:13:2746:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2746:13:2746:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2746:13:2746:30 | Ok(...) | T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2746:16:2746:29 | ...::new(...) | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2753:39:2755:9 | { ... } | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2754:13:2754:22 | PathBuf {...} | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2763:18:2763:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2763:18:2763:22 | SelfParam | &T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2763:34:2767:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2763:34:2767:9 | { ... } | &T | main.rs:2738:5:2738:22 | Path | -| main.rs:2765:33:2765:43 | ...::new(...) | | main.rs:2738:5:2738:22 | Path | -| main.rs:2766:13:2766:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2766:13:2766:17 | &path | &T | main.rs:2738:5:2738:22 | Path | -| main.rs:2766:14:2766:17 | path | | main.rs:2738:5:2738:22 | Path | -| main.rs:2771:13:2771:17 | path1 | | main.rs:2738:5:2738:22 | Path | -| main.rs:2771:21:2771:31 | ...::new(...) | | main.rs:2738:5:2738:22 | Path | -| main.rs:2772:13:2772:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2772:13:2772:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2772:13:2772:17 | path2 | T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2772:21:2772:25 | path1 | | main.rs:2738:5:2738:22 | Path | -| main.rs:2772:21:2772:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2772:21:2772:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2772:21:2772:40 | path1.canonicalize() | T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2773:13:2773:17 | path3 | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2773:21:2773:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2773:21:2773:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2773:21:2773:25 | path2 | T | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2773:21:2773:34 | path2.unwrap() | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2775:13:2775:20 | pathbuf1 | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2775:24:2775:37 | ...::new(...) | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2776:24:2776:31 | pathbuf1 | | main.rs:2750:5:2750:25 | PathBuf | -| main.rs:2783:14:2783:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2783:14:2783:18 | SelfParam | &T | main.rs:2782:5:2784:5 | Self [trait MyTrait] | -| main.rs:2790:14:2790:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2790:14:2790:18 | SelfParam | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2790:14:2790:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2790:28:2792:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2791:13:2791:16 | self | | file://:0:0:0:0 | & | -| main.rs:2791:13:2791:16 | self | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2791:13:2791:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2791:13:2791:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:14:2796:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2796:14:2796:18 | SelfParam | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2796:14:2796:18 | SelfParam | &T.T | main.rs:2786:5:2787:19 | S | -| main.rs:2796:14:2796:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:28:2798:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2797:13:2797:16 | self | | file://:0:0:0:0 | & | -| main.rs:2797:13:2797:16 | self | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2797:13:2797:16 | self | &T.T | main.rs:2786:5:2787:19 | S | -| main.rs:2797:13:2797:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2797:13:2797:18 | self.0 | | main.rs:2786:5:2787:19 | S | -| main.rs:2797:13:2797:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2797:13:2797:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:15:2802:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2802:15:2802:19 | SelfParam | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2802:15:2802:19 | SelfParam | &T.T | main.rs:2801:10:2801:16 | T | -| main.rs:2802:33:2804:9 | { ... } | | main.rs:2786:5:2787:19 | S | -| main.rs:2802:33:2804:9 | { ... } | T | main.rs:2786:5:2787:19 | S | -| main.rs:2802:33:2804:9 | { ... } | T.T | main.rs:2801:10:2801:16 | T | -| main.rs:2803:13:2803:24 | S(...) | | main.rs:2786:5:2787:19 | S | -| main.rs:2803:13:2803:24 | S(...) | T | main.rs:2786:5:2787:19 | S | -| main.rs:2803:13:2803:24 | S(...) | T.T | main.rs:2801:10:2801:16 | T | -| main.rs:2803:15:2803:23 | S(...) | | main.rs:2786:5:2787:19 | S | -| main.rs:2803:15:2803:23 | S(...) | T | main.rs:2801:10:2801:16 | T | -| main.rs:2803:17:2803:20 | self | | file://:0:0:0:0 | & | -| main.rs:2803:17:2803:20 | self | &T | main.rs:2786:5:2787:19 | S | -| main.rs:2803:17:2803:20 | self | &T.T | main.rs:2801:10:2801:16 | T | -| main.rs:2803:17:2803:22 | self.0 | | main.rs:2801:10:2801:16 | T | -| main.rs:2807:14:2807:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2807:48:2824:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2807:48:2824:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2807:48:2824:5 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2807:48:2824:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2808:13:2808:13 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2808:13:2808:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2808:17:2813:9 | if b {...} else {...} | | main.rs:2786:5:2787:19 | S | -| main.rs:2808:17:2813:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2808:20:2808:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2808:22:2811:9 | { ... } | | main.rs:2786:5:2787:19 | S | -| main.rs:2808:22:2811:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2809:17:2809:17 | y | | main.rs:2786:5:2787:19 | S | -| main.rs:2809:17:2809:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2809:21:2809:38 | ...::default(...) | | main.rs:2786:5:2787:19 | S | -| main.rs:2809:21:2809:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2810:13:2810:13 | y | | main.rs:2786:5:2787:19 | S | -| main.rs:2810:13:2810:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2811:16:2813:9 | { ... } | | main.rs:2786:5:2787:19 | S | -| main.rs:2811:16:2813:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2812:13:2812:16 | S(...) | | main.rs:2786:5:2787:19 | S | -| main.rs:2812:13:2812:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2812:15:2812:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:13:2817:13 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2817:13:2817:13 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2817:13:2817:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:13:2817:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:17:2817:20 | S(...) | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2817:17:2817:20 | S(...) | | main.rs:2786:5:2787:19 | S | -| main.rs:2817:17:2817:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:17:2817:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:19:2817:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:9:2823:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2818:9:2823:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T | main.rs:2786:5:2787:19 | S | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T | main.rs:2786:5:2787:19 | S | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:9:2823:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:12:2818:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2818:14:2821:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2818:14:2821:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2818:14:2821:9 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2818:14:2821:9 | { ... } | T | main.rs:2786:5:2787:19 | S | -| main.rs:2818:14:2821:9 | { ... } | T.T | main.rs:2786:5:2787:19 | S | -| main.rs:2818:14:2821:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:14:2821:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:17:2819:17 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2819:17:2819:17 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2819:17:2819:17 | x | T | main.rs:2786:5:2787:19 | S | -| main.rs:2819:17:2819:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:17:2819:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:21:2819:21 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2819:21:2819:21 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2819:21:2819:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:21:2819:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:21:2819:26 | x.m2() | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2819:21:2819:26 | x.m2() | | main.rs:2786:5:2787:19 | S | -| main.rs:2819:21:2819:26 | x.m2() | T | main.rs:2786:5:2787:19 | S | -| main.rs:2819:21:2819:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:21:2819:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2820:13:2820:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2820:13:2820:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2820:13:2820:23 | ...::new(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2820:13:2820:23 | ...::new(...) | T | main.rs:2786:5:2787:19 | S | -| main.rs:2820:13:2820:23 | ...::new(...) | T.T | main.rs:2786:5:2787:19 | S | -| main.rs:2820:13:2820:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2820:13:2820:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2820:22:2820:22 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2820:22:2820:22 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2820:22:2820:22 | x | T | main.rs:2786:5:2787:19 | S | -| main.rs:2820:22:2820:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2820:22:2820:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2821:16:2823:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2821:16:2823:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2821:16:2823:9 | { ... } | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2821:16:2823:9 | { ... } | T | main.rs:2786:5:2787:19 | S | -| main.rs:2821:16:2823:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2821:16:2823:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2822:13:2822:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2822:13:2822:23 | ...::new(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2822:13:2822:23 | ...::new(...) | T | main.rs:2786:5:2787:19 | S | -| main.rs:2822:13:2822:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:22:2822:22 | x | | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2822:22:2822:22 | x | | main.rs:2786:5:2787:19 | S | -| main.rs:2822:22:2822:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:22:2822:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2834:5:2834:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2835:5:2835:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2835:20:2835:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2835:41:2835:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2852:5:2852:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2865:5:2865:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2865:5:2865:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2865:5:2865:20 | ...::f(...) | T | main.rs:2782:5:2784:5 | dyn MyTrait | -| main.rs:2865:5:2865:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2865:16:2865:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:18:2547:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:18:2547:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2547:18:2547:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:21:2547:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:13:2548:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2548:18:2548:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2548:18:2548:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2548:19:2548:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2548:19:2548:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2549:13:2549:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2549:13:2549:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:21:2549:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:21:2549:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2549:21:2549:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2549:24:2549:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:18:2550:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2550:18:2550:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2551:13:2551:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2551:26:2551:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2552:13:2552:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2552:18:2552:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2552:19:2552:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2552:19:2552:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2552:20:2552:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2552:26:2552:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2552:32:2552:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2552:38:2552:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2554:13:2554:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2554:13:2554:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2555:9:2558:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2555:9:2558:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2556:20:2556:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2557:18:2557:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2559:18:2559:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2559:18:2559:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2563:26:2563:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2563:29:2563:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2563:32:2563:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2566:13:2566:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2566:13:2566:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2566:13:2566:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2566:32:2566:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2566:32:2566:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2566:32:2566:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2566:32:2566:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2566:33:2566:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2566:39:2566:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2566:42:2566:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:13:2567:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2567:13:2567:13 | u | | file://:0:0:0:0 | & | +| main.rs:2567:18:2567:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2567:18:2567:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2567:18:2567:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2569:22:2569:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2569:23:2569:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2569:29:2569:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2569:32:2569:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:13:2572:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2572:13:2572:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2572:21:2572:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2572:21:2572:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2572:31:2572:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2572:32:2572:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2572:38:2572:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:41:2572:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2573:13:2573:13 | u | | file://:0:0:0:0 | & | +| main.rs:2573:18:2573:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2573:18:2573:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2575:13:2575:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2575:13:2575:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2575:13:2575:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2575:13:2575:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2575:32:2575:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2575:32:2575:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2575:32:2575:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2575:32:2575:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2575:32:2575:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2575:33:2575:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2575:39:2575:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2575:42:2575:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2576:13:2576:13 | u | | file://:0:0:0:0 | & | +| main.rs:2576:13:2576:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2576:18:2576:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2576:18:2576:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2576:18:2576:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2576:18:2576:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2578:17:2578:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2578:17:2578:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2578:17:2578:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2578:25:2578:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2578:25:2578:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2578:25:2578:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2579:9:2579:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2579:9:2579:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2579:9:2579:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2579:20:2579:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2580:13:2580:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2580:13:2580:13 | u | | file://:0:0:0:0 | & | +| main.rs:2580:18:2580:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2580:18:2580:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2580:18:2580:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2582:33:2582:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2582:36:2582:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2582:45:2582:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2582:48:2582:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:17:2589:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2589:17:2589:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:17:2589:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2589:17:2589:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2589:17:2589:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:17:2589:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2589:17:2589:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2589:24:2589:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2589:24:2589:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2589:24:2589:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2589:24:2589:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2589:24:2589:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:24:2589:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2589:24:2589:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:9:2590:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2590:9:2590:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:9:2590:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2590:9:2590:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2590:9:2590:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:9:2590:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2590:9:2590:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:9:2590:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2590:9:2590:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2590:9:2590:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:9:2590:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2590:9:2590:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:21:2590:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:24:2590:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2590:24:2590:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2590:24:2590:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2590:24:2590:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2590:33:2590:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2590:33:2590:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2591:9:2591:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2591:9:2591:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2591:9:2591:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2591:9:2591:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2591:9:2591:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2591:9:2591:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2591:9:2591:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2591:9:2591:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2591:9:2591:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2591:9:2591:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2591:9:2591:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2591:9:2591:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2591:21:2591:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2591:24:2591:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2591:24:2591:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2591:24:2591:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2591:24:2591:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2591:33:2591:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2591:33:2591:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2592:13:2592:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2592:13:2592:15 | key | | file://:0:0:0:0 | & | +| main.rs:2592:13:2592:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:20:2592:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2592:20:2592:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:20:2592:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2592:20:2592:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2592:20:2592:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2592:20:2592:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2592:20:2592:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2592:20:2592:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2592:20:2592:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:20:2592:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2592:20:2592:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2592:20:2592:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2592:20:2592:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2593:13:2593:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2593:13:2593:17 | value | | file://:0:0:0:0 | & | +| main.rs:2593:13:2593:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2593:13:2593:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2593:13:2593:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2593:13:2593:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2593:22:2593:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2593:22:2593:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2593:22:2593:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2593:22:2593:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2593:22:2593:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2593:22:2593:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2593:22:2593:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2593:22:2593:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2593:22:2593:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2593:22:2593:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2593:22:2593:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2593:22:2593:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2593:22:2593:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:13:2594:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2594:13:2594:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2594:13:2594:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:13:2594:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:14:2594:16 | key | | file://:0:0:0:0 | & | +| main.rs:2594:14:2594:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:19:2594:23 | value | | file://:0:0:0:0 | & | +| main.rs:2594:19:2594:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2594:19:2594:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2594:19:2594:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2594:19:2594:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:29:2594:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2594:29:2594:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:29:2594:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2594:29:2594:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2594:29:2594:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2594:29:2594:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2594:29:2594:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:29:2594:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2594:29:2594:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:29:2594:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2594:29:2594:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2594:29:2594:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2594:29:2594:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2595:13:2595:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2595:13:2595:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2595:13:2595:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:13:2595:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2595:14:2595:16 | key | | file://:0:0:0:0 | & | +| main.rs:2595:14:2595:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:19:2595:23 | value | | file://:0:0:0:0 | & | +| main.rs:2595:19:2595:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2595:19:2595:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:19:2595:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2595:19:2595:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2595:29:2595:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2595:29:2595:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2595:29:2595:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:29:2595:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2595:29:2595:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2595:29:2595:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:29:2595:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2595:29:2595:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2595:30:2595:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2595:30:2595:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:30:2595:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2595:30:2595:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2595:30:2595:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:30:2595:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2595:30:2595:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2599:17:2599:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2601:23:2601:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2601:23:2601:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2603:13:2603:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2603:13:2603:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2603:18:2603:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:40:2617:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2615:40:2617:9 | { ... } | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2615:40:2617:9 | { ... } | T.T | main.rs:2614:10:2614:19 | T | +| main.rs:2616:13:2616:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2616:13:2616:16 | None | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2616:13:2616:16 | None | T.T | main.rs:2614:10:2614:19 | T | +| main.rs:2619:30:2621:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2619:30:2621:9 | { ... } | T | main.rs:2614:10:2614:19 | T | +| main.rs:2620:13:2620:28 | S1(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2620:13:2620:28 | S1(...) | T | main.rs:2614:10:2614:19 | T | +| main.rs:2620:16:2620:27 | ...::default(...) | | main.rs:2614:10:2614:19 | T | +| main.rs:2623:19:2623:22 | SelfParam | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2623:19:2623:22 | SelfParam | T | main.rs:2614:10:2614:19 | T | +| main.rs:2623:33:2625:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2623:33:2625:9 | { ... } | T | main.rs:2614:10:2614:19 | T | +| main.rs:2624:13:2624:16 | self | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2624:13:2624:16 | self | T | main.rs:2614:10:2614:19 | T | +| main.rs:2636:15:2636:15 | x | | main.rs:2636:12:2636:12 | T | +| main.rs:2636:26:2638:5 | { ... } | | main.rs:2636:12:2636:12 | T | +| main.rs:2637:9:2637:9 | x | | main.rs:2636:12:2636:12 | T | +| main.rs:2641:13:2641:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2641:13:2641:14 | x1 | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2641:13:2641:14 | x1 | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2642:13:2642:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2642:13:2642:14 | x2 | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2642:13:2642:14 | x2 | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2643:13:2643:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2643:13:2643:14 | x3 | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2643:13:2643:14 | x3 | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | +| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2644:13:2644:14 | x4 | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2644:13:2644:14 | x4 | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2644:18:2644:48 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2644:18:2644:48 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2644:35:2644:47 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2644:35:2644:47 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2645:13:2645:14 | x5 | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2645:13:2645:14 | x5 | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2645:18:2645:42 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2645:18:2645:42 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2645:29:2645:41 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2645:29:2645:41 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2646:13:2646:14 | x6 | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2646:13:2646:14 | x6 | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2646:18:2646:45 | S4::<...>(...) | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2646:18:2646:45 | S4::<...>(...) | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2646:27:2646:44 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2647:13:2647:14 | x7 | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2647:13:2647:14 | x7 | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2647:18:2647:23 | S4(...) | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2647:18:2647:23 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2647:21:2647:22 | S2 | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2648:13:2648:14 | x8 | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2648:13:2648:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2648:18:2648:22 | S4(...) | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2648:18:2648:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2648:21:2648:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2649:13:2649:14 | x9 | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2649:13:2649:14 | x9 | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2649:18:2649:34 | S4(...) | | main.rs:2630:5:2630:27 | S4 | +| main.rs:2649:18:2649:34 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2649:21:2649:33 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2650:13:2650:15 | x10 | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2650:13:2650:15 | x10 | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2650:19:2653:9 | S5::<...> {...} | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2650:19:2653:9 | S5::<...> {...} | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2652:20:2652:37 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2654:13:2654:15 | x11 | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2654:13:2654:15 | x11 | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2654:19:2654:34 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2654:19:2654:34 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2654:31:2654:32 | S2 | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2655:13:2655:15 | x12 | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2655:13:2655:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2655:19:2655:33 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2655:19:2655:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2655:31:2655:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2656:13:2656:15 | x13 | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2656:13:2656:15 | x13 | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2656:19:2659:9 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | +| main.rs:2656:19:2659:9 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | +| main.rs:2658:20:2658:32 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | +| main.rs:2660:13:2660:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:19:2660:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:30:2660:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2661:13:2661:15 | x15 | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2661:13:2661:15 | x15 | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2661:19:2661:37 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | +| main.rs:2661:19:2661:37 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | +| main.rs:2670:35:2672:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2670:35:2672:9 | { ... } | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2670:35:2672:9 | { ... } | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2671:13:2671:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2671:13:2671:26 | TupleExpr | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2671:13:2671:26 | TupleExpr | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2671:14:2671:18 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2671:21:2671:25 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2673:16:2673:19 | SelfParam | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2677:13:2677:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2677:13:2677:13 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2677:13:2677:13 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2677:17:2677:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2677:17:2677:30 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2677:17:2677:30 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2678:17:2678:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2678:17:2678:17 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2678:17:2678:17 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2678:21:2678:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2678:21:2678:34 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2678:21:2678:34 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:13:2679:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2679:13:2679:18 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:13:2679:18 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:14:2679:14 | c | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:17:2679:17 | d | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:22:2679:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2679:22:2679:35 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2679:22:2679:35 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:13:2680:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2680:13:2680:22 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:13:2680:22 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:18:2680:18 | e | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:21:2680:21 | f | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:26:2680:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2680:26:2680:39 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2680:26:2680:39 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:13:2681:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2681:13:2681:26 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:13:2681:26 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:18:2681:18 | g | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:25:2681:25 | h | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:30:2681:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2681:30:2681:43 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2681:30:2681:43 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2683:9:2683:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2683:9:2683:9 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2683:9:2683:9 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2683:9:2683:11 | a.0 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2684:9:2684:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2684:9:2684:9 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2684:9:2684:9 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2684:9:2684:11 | b.1 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2685:9:2685:9 | c | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2686:9:2686:9 | d | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2687:9:2687:9 | e | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2688:9:2688:9 | f | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2689:9:2689:9 | g | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2690:9:2690:9 | h | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2695:13:2695:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2696:13:2696:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2696:17:2696:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2697:13:2697:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2697:13:2697:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2697:13:2697:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2697:20:2697:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2697:20:2697:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2697:20:2697:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2697:21:2697:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2697:24:2697:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2698:13:2698:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2698:22:2698:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2698:22:2698:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2698:22:2698:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2698:22:2698:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2699:13:2699:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2699:23:2699:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2699:23:2699:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2699:23:2699:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2699:23:2699:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2701:13:2701:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2701:13:2701:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:13:2701:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:20:2701:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2701:20:2701:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:20:2701:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2701:20:2701:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:20:2701:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:21:2701:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:24:2701:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:15:2702:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2702:15:2702:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:15:2702:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:13:2703:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2703:13:2703:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:13:2703:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:14:2703:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:17:2703:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:30:2703:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2703:30:2703:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2703:30:2703:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2703:30:2703:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2704:13:2704:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2704:13:2704:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:13:2704:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:25:2704:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2704:25:2704:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2704:25:2704:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2704:25:2704:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2706:13:2706:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2706:17:2706:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2706:17:2706:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2706:17:2706:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2706:17:2706:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2708:13:2708:13 | y | | file://:0:0:0:0 | & | +| main.rs:2708:13:2708:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2708:13:2708:13 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2708:13:2708:13 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2708:17:2708:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2708:17:2708:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2708:17:2708:31 | &... | &T.0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2708:17:2708:31 | &... | &T.1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2708:18:2708:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2708:18:2708:31 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2708:18:2708:31 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2709:9:2709:9 | y | | file://:0:0:0:0 | & | +| main.rs:2709:9:2709:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2709:9:2709:9 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2709:9:2709:9 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | +| main.rs:2709:9:2709:11 | y.0 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2716:13:2716:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2716:13:2716:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2716:13:2716:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2716:27:2716:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2716:27:2716:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2716:27:2716:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2716:36:2716:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:15:2719:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2719:15:2719:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2719:15:2719:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:13:2720:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2720:13:2720:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2720:13:2720:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:17:2720:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2721:26:2721:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2721:26:2721:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2721:26:2721:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2721:26:2721:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2723:13:2723:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2723:13:2723:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2723:13:2723:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2725:26:2725:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2725:26:2725:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2730:13:2730:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2730:13:2730:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2730:13:2730:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2730:13:2730:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2730:13:2730:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:26:2730:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2730:26:2730:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2730:26:2730:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2730:26:2730:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2730:26:2730:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:35:2730:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2730:35:2730:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2730:35:2730:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:44:2730:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2731:15:2731:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2731:15:2731:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2731:15:2731:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2731:15:2731:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2731:15:2731:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:13:2732:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2732:13:2732:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2732:13:2732:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2732:13:2732:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2732:13:2732:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2734:26:2734:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2734:26:2734:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2746:36:2748:9 | { ... } | | main.rs:2743:5:2743:22 | Path | +| main.rs:2747:13:2747:19 | Path {...} | | main.rs:2743:5:2743:22 | Path | +| main.rs:2750:29:2750:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2750:29:2750:33 | SelfParam | &T | main.rs:2743:5:2743:22 | Path | +| main.rs:2750:59:2752:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2750:59:2752:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2750:59:2752:9 | { ... } | T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2751:13:2751:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2751:13:2751:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2751:13:2751:30 | Ok(...) | T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2751:16:2751:29 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2758:39:2760:9 | { ... } | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2759:13:2759:22 | PathBuf {...} | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2768:18:2768:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2768:18:2768:22 | SelfParam | &T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2768:34:2772:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2768:34:2772:9 | { ... } | &T | main.rs:2743:5:2743:22 | Path | +| main.rs:2770:33:2770:43 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | +| main.rs:2771:13:2771:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2771:13:2771:17 | &path | &T | main.rs:2743:5:2743:22 | Path | +| main.rs:2771:14:2771:17 | path | | main.rs:2743:5:2743:22 | Path | +| main.rs:2776:13:2776:17 | path1 | | main.rs:2743:5:2743:22 | Path | +| main.rs:2776:21:2776:31 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | +| main.rs:2777:13:2777:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2777:13:2777:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2777:13:2777:17 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2777:21:2777:25 | path1 | | main.rs:2743:5:2743:22 | Path | +| main.rs:2777:21:2777:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2777:21:2777:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2777:21:2777:40 | path1.canonicalize() | T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2778:13:2778:17 | path3 | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2778:21:2778:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2778:21:2778:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2778:21:2778:25 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2778:21:2778:34 | path2.unwrap() | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2780:13:2780:20 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2780:24:2780:37 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2781:24:2781:31 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | +| main.rs:2788:14:2788:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2788:14:2788:18 | SelfParam | &T | main.rs:2787:5:2789:5 | Self [trait MyTrait] | +| main.rs:2795:14:2795:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2795:14:2795:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2795:14:2795:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2795:28:2797:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2796:13:2796:16 | self | | file://:0:0:0:0 | & | +| main.rs:2796:13:2796:16 | self | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2796:13:2796:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2796:13:2796:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2801:14:2801:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2801:14:2801:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2801:14:2801:18 | SelfParam | &T.T | main.rs:2791:5:2792:19 | S | +| main.rs:2801:14:2801:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2801:28:2803:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2802:13:2802:16 | self | | file://:0:0:0:0 | & | +| main.rs:2802:13:2802:16 | self | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2802:13:2802:16 | self | &T.T | main.rs:2791:5:2792:19 | S | +| main.rs:2802:13:2802:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2802:13:2802:18 | self.0 | | main.rs:2791:5:2792:19 | S | +| main.rs:2802:13:2802:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2802:13:2802:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2807:15:2807:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2807:15:2807:19 | SelfParam | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2807:15:2807:19 | SelfParam | &T.T | main.rs:2806:10:2806:16 | T | +| main.rs:2807:33:2809:9 | { ... } | | main.rs:2791:5:2792:19 | S | +| main.rs:2807:33:2809:9 | { ... } | T | main.rs:2791:5:2792:19 | S | +| main.rs:2807:33:2809:9 | { ... } | T.T | main.rs:2806:10:2806:16 | T | +| main.rs:2808:13:2808:24 | S(...) | | main.rs:2791:5:2792:19 | S | +| main.rs:2808:13:2808:24 | S(...) | T | main.rs:2791:5:2792:19 | S | +| main.rs:2808:13:2808:24 | S(...) | T.T | main.rs:2806:10:2806:16 | T | +| main.rs:2808:15:2808:23 | S(...) | | main.rs:2791:5:2792:19 | S | +| main.rs:2808:15:2808:23 | S(...) | T | main.rs:2806:10:2806:16 | T | +| main.rs:2808:17:2808:20 | self | | file://:0:0:0:0 | & | +| main.rs:2808:17:2808:20 | self | &T | main.rs:2791:5:2792:19 | S | +| main.rs:2808:17:2808:20 | self | &T.T | main.rs:2806:10:2806:16 | T | +| main.rs:2808:17:2808:22 | self.0 | | main.rs:2806:10:2806:16 | T | +| main.rs:2812:14:2812:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2812:48:2829:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2812:48:2829:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2812:48:2829:5 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2812:48:2829:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:13 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2813:13:2813:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:17:2818:9 | if b {...} else {...} | | main.rs:2791:5:2792:19 | S | +| main.rs:2813:17:2818:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:20:2813:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2813:22:2816:9 | { ... } | | main.rs:2791:5:2792:19 | S | +| main.rs:2813:22:2816:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:17:2814:17 | y | | main.rs:2791:5:2792:19 | S | +| main.rs:2814:17:2814:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:21:2814:38 | ...::default(...) | | main.rs:2791:5:2792:19 | S | +| main.rs:2814:21:2814:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2815:13:2815:13 | y | | main.rs:2791:5:2792:19 | S | +| main.rs:2815:13:2815:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:16:2818:9 | { ... } | | main.rs:2791:5:2792:19 | S | +| main.rs:2816:16:2818:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:13:2817:16 | S(...) | | main.rs:2791:5:2792:19 | S | +| main.rs:2817:13:2817:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2817:15:2817:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:13:2822:13 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2822:13:2822:13 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2822:13:2822:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:13:2822:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:17:2822:20 | S(...) | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2822:17:2822:20 | S(...) | | main.rs:2791:5:2792:19 | S | +| main.rs:2822:17:2822:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:17:2822:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2822:19:2822:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:9:2828:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2823:9:2828:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2791:5:2792:19 | S | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | main.rs:2791:5:2792:19 | S | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:9:2828:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:12:2823:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2823:14:2826:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2823:14:2826:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2791:5:2792:19 | S | +| main.rs:2823:14:2826:9 | { ... } | T.T | main.rs:2791:5:2792:19 | S | +| main.rs:2823:14:2826:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2823:14:2826:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:17:2824:17 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2824:17:2824:17 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2824:17:2824:17 | x | T | main.rs:2791:5:2792:19 | S | +| main.rs:2824:17:2824:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:17:2824:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:21:2824:21 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2824:21:2824:21 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2824:21:2824:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:21:2824:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2791:5:2792:19 | S | +| main.rs:2824:21:2824:26 | x.m2() | T | main.rs:2791:5:2792:19 | S | +| main.rs:2824:21:2824:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:21:2824:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:13:2825:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2825:13:2825:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | +| main.rs:2825:13:2825:23 | ...::new(...) | T.T | main.rs:2791:5:2792:19 | S | +| main.rs:2825:13:2825:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:13:2825:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:22:2825:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2825:22:2825:22 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2825:22:2825:22 | x | T | main.rs:2791:5:2792:19 | S | +| main.rs:2825:22:2825:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:22:2825:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:16:2828:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2826:16:2828:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2791:5:2792:19 | S | +| main.rs:2826:16:2828:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:16:2828:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2827:13:2827:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2827:13:2827:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | +| main.rs:2827:13:2827:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2827:13:2827:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2827:22:2827:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2827:22:2827:22 | x | | main.rs:2791:5:2792:19 | S | +| main.rs:2827:22:2827:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2827:22:2827:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:22:2837:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2834:18:2834:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2834:33:2836:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2835:13:2835:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2835:13:2835:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2847:5:2847:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2848:5:2848:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2848:20:2848:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2848:41:2848:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2865:5:2865:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2878:5:2878:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2878:5:2878:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2878:5:2878:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2878:5:2878:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2878:16:2878:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2879:5:2879:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index ce1b97570ee..5861ede759b 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -266,7 +266,7 @@ class _: @annotate(MatchArm) -@rust.doc_test_signature("(x: i32) -> i32") +@rust.doc_test_signature("(x: i32)") class _: """ A match arm. For example: @@ -1738,7 +1738,7 @@ class _: For example: ```rust - fn foo() -> i32 {} + fn foo() -> i32 { 0 } // ^^^^^^ ``` """ @@ -2466,7 +2466,7 @@ class _: For example: ```rust - pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> { 0 } // ^^^^^^^^ ``` """ From bc53fee1c5e9b50303e723a031dc1ed2e5845f57 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 28 Oct 2025 13:33:03 +0100 Subject: [PATCH 448/965] Rust: Infer more `()` types --- .../codeql/rust/internal/TypeInference.qll | 40 +- .../lib/codeql/rust/internal/TypeMention.qll | 24 + .../PathResolutionConsistency.expected | 0 .../PathResolutionConsistency.expected | 0 .../type-inference/type-inference.expected | 940 +++++++++++++++++- 5 files changed, 995 insertions(+), 9 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index d550f56b09d..d9c3d79379e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -278,7 +278,7 @@ private TypeMention getTypeAnnotation(AstNode n) { ) or exists(Function f | - result = f.getRetType().getTypeRepr() and + result = getReturnTypeMention(f) and n = f.getFunctionBody() ) } @@ -436,8 +436,7 @@ module CertainTypeInference { result = inferTupleRootType(n) and path.isEmpty() or - result = inferAsyncBlockExprRootType(n) and - path.isEmpty() + result = inferBlockExprType(n, path) or result = inferArrayExprType(n) and path.isEmpty() @@ -1854,7 +1853,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi } private Type resolveRetType(TypePath path) { - result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) + result = getReturnTypeMention(this).resolveTypeAt(path) } pragma[nomagic] @@ -2798,11 +2797,38 @@ private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { result.getTypeAlias() = any(FutureTrait ft).getOutputType() } +private predicate isReturnExprCfgAncestor(AstNode n) { + n instanceof ReturnExpr + or + exists(AstNode mid | + isReturnExprCfgAncestor(mid) and + n = mid.getParentNode() and + n.getEnclosingCfgScope() = mid.getEnclosingCfgScope() + ) +} + pragma[nomagic] -private TraitType inferAsyncBlockExprRootType(AsyncBlockExpr abe) { +predicate isUnitBlockExpr(BlockExpr be) { + not be.getStmtList().hasTailExpr() and + not isReturnExprCfgAncestor(be) +} + +pragma[nomagic] +private Type inferBlockExprType(BlockExpr be, TypePath path) { // `typeEquality` handles the non-root case - exists(abe) and - result = getFutureTraitType() + if be instanceof AsyncBlockExpr + then ( + path.isEmpty() and + result = getFutureTraitType() + or + isUnitBlockExpr(be) and + path = TypePath::singleton(getFutureOutputTypeParameter()) and + result instanceof UnitType + ) else ( + isUnitBlockExpr(be) and + path.isEmpty() and + result instanceof UnitType + ) } final private class AwaitTarget extends Expr { diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 3a91a55e3fb..2fde69d6c4d 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -443,6 +443,30 @@ TypeMention getSelfParamTypeMention(SelfParam self) { result = self.getTypeRepr() } +/** + * An element used to represent the implicit `()` return type of function. + */ +class ShorthandReturnTypeMention extends TypeMention instanceof Name { + private Function f; + + ShorthandReturnTypeMention() { + this = f.getName() and + not f.getRetType().hasTypeRepr() + } + + override Type resolveTypeAt(TypePath typePath) { + typePath.isEmpty() and + result instanceof UnitType + } +} + +pragma[nomagic] +TypeMention getReturnTypeMention(Function f) { + result.(ShorthandReturnTypeMention) = f.getName() + or + result = f.getRetType().getTypeRepr() +} + class DynTraitTypeReprMention extends TypeMention instanceof DynTraitTypeRepr { private DynTraitType dynType; diff --git a/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/file/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 8fea18be996..73ef95f5568 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -22,13 +22,16 @@ inferType | blanket_impl.rs:41:13:41:16 | self | | file://:0:0:0:0 | & | | blanket_impl.rs:41:13:41:16 | self | &T | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:25 | self.clone1() | | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:45:33:60:5 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:46:13:46:14 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:28 | S1.clone1() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:18:48:22 | (...) | | file://:0:0:0:0 | & | @@ -39,16 +42,20 @@ inferType | blanket_impl.rs:48:20:48:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:49:18:49:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:49:18:49:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:49:18:49:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:13:50:14 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:31 | S1.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:51:18:51:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:51:18:51:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:51:18:51:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:18:52:22 | (...) | | file://:0:0:0:0 | & | @@ -59,8 +66,10 @@ inferType | blanket_impl.rs:52:20:52:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:53:18:53:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:53:18:53:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:53:18:53:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:18:54:35 | ...::duplicate(...) | | blanket_impl.rs:6:5:7:14 | S1 | @@ -69,14 +78,18 @@ inferType | blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:55:18:55:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:55:18:55:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:55:18:55:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:57:18:57:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:57:18:57:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:57:18:57:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:58:18:58:22 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:19:58:21 | &S2 | | file://:0:0:0:0 | & | @@ -84,8 +97,10 @@ inferType | blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:59:18:59:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:59:18:59:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:59:18:59:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | | blanket_impl.rs:72:24:72:24 | x | | {EXTERNAL LOCATION} | i64 | @@ -100,6 +115,7 @@ inferType | blanket_impl.rs:85:13:85:32 | ...::assoc_func1(...) | | blanket_impl.rs:82:10:82:18 | T | | blanket_impl.rs:85:28:85:28 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:85:31:85:31 | y | | blanket_impl.rs:82:10:82:18 | T | +| blanket_impl.rs:89:33:98:5 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -107,8 +123,10 @@ inferType | blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:91:18:91:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:91:18:91:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:91:18:91:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:13:92:14 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:18:92:43 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | @@ -117,8 +135,10 @@ inferType | blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:93:18:93:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:93:18:93:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:93:18:93:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:13:94:14 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:18:94:39 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | @@ -127,8 +147,10 @@ inferType | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:95:18:95:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:95:18:95:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:95:18:95:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | @@ -137,8 +159,10 @@ inferType | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:97:18:97:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:97:18:97:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:97:18:97:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | @@ -187,6 +211,7 @@ inferType | blanket_impl.rs:167:18:167:21 | self | | file://:0:0:0:0 | & | | blanket_impl.rs:167:18:167:21 | self | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:167:18:167:26 | self.flag | | {EXTERNAL LOCATION} | bool | +| blanket_impl.rs:171:15:184:5 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:172:13:172:23 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:27:172:50 | MyTryFlag {...} | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:45:172:48 | true | | {EXTERNAL LOCATION} | bool | @@ -213,45 +238,69 @@ inferType | blanket_impl.rs:211:15:211:18 | SelfParam | | blanket_impl.rs:209:5:212:5 | Self [trait MyTrait4a] | | blanket_impl.rs:216:15:216:18 | SelfParam | | blanket_impl.rs:214:5:217:5 | Self [trait MyTrait4b] | | blanket_impl.rs:221:15:221:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:221:21:221:22 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:226:15:226:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:226:21:226:22 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:231:15:231:18 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:231:15:231:18 | SelfParam | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:231:21:233:9 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:232:13:232:16 | self | | file://:0:0:0:0 | & | | blanket_impl.rs:232:13:232:16 | self | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:232:13:232:21 | self.m1() | | file://:0:0:0:0 | () | | blanket_impl.rs:238:15:238:18 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:238:15:238:18 | SelfParam | &T | file://:0:0:0:0 | & | | blanket_impl.rs:238:15:238:18 | SelfParam | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:238:21:240:9 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:239:13:239:16 | self | | file://:0:0:0:0 | & | | blanket_impl.rs:239:13:239:16 | self | &T | file://:0:0:0:0 | & | | blanket_impl.rs:239:13:239:16 | self | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:239:13:239:21 | self.m1() | | file://:0:0:0:0 | () | | blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | +| blanket_impl.rs:245:21:247:9 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | +| blanket_impl.rs:246:13:246:21 | self.m3() | | file://:0:0:0:0 | () | | blanket_impl.rs:252:15:252:18 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:252:15:252:18 | SelfParam | &T | blanket_impl.rs:250:10:250:10 | T | +| blanket_impl.rs:252:21:252:22 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:255:33:263:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:256:13:256:14 | x1 | | file://:0:0:0:0 | () | | blanket_impl.rs:256:18:256:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:256:18:256:24 | S1.m1() | | file://:0:0:0:0 | () | +| blanket_impl.rs:257:13:257:14 | x2 | | file://:0:0:0:0 | () | | blanket_impl.rs:257:18:257:22 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:257:18:257:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:18:257:27 | ... .m2() | | file://:0:0:0:0 | () | | blanket_impl.rs:257:19:257:21 | &S1 | | file://:0:0:0:0 | & | | blanket_impl.rs:257:19:257:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:257:20:257:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:13:258:14 | x3 | | file://:0:0:0:0 | () | | blanket_impl.rs:258:18:258:23 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:258:18:258:23 | (...) | &T | file://:0:0:0:0 | & | | blanket_impl.rs:258:18:258:23 | (...) | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:18:258:28 | ... .m2() | | file://:0:0:0:0 | () | | blanket_impl.rs:258:19:258:22 | &... | | file://:0:0:0:0 | & | | blanket_impl.rs:258:19:258:22 | &... | &T | file://:0:0:0:0 | & | | blanket_impl.rs:258:19:258:22 | &... | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:20:258:22 | &S1 | | file://:0:0:0:0 | & | | blanket_impl.rs:258:20:258:22 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:21:258:22 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:259:13:259:14 | x4 | | file://:0:0:0:0 | () | | blanket_impl.rs:259:18:259:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:259:18:259:24 | S1.m4() | | file://:0:0:0:0 | () | +| blanket_impl.rs:260:13:260:14 | x5 | | file://:0:0:0:0 | () | | blanket_impl.rs:260:18:260:22 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:260:18:260:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:18:260:27 | ... .m4() | | file://:0:0:0:0 | () | | blanket_impl.rs:260:19:260:21 | &S1 | | file://:0:0:0:0 | & | | blanket_impl.rs:260:19:260:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:260:20:260:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:261:13:261:14 | x6 | | file://:0:0:0:0 | () | | blanket_impl.rs:261:18:261:19 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:261:18:261:24 | S2.m4() | | file://:0:0:0:0 | () | +| blanket_impl.rs:262:13:262:14 | x7 | | file://:0:0:0:0 | () | | blanket_impl.rs:262:18:262:22 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:262:18:262:22 | (...) | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:18:262:27 | ... .m4() | | file://:0:0:0:0 | () | | blanket_impl.rs:262:19:262:21 | &S2 | | file://:0:0:0:0 | & | | blanket_impl.rs:262:19:262:21 | &S2 | &T | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:262:20:262:21 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | @@ -262,39 +311,53 @@ inferType | blanket_impl.rs:273:31:273:35 | query | | blanket_impl.rs:273:21:273:21 | E | | blanket_impl.rs:277:21:277:25 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:277:21:277:25 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:277:28:279:9 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:278:22:278:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:278:22:278:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:278:22:278:41 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:281:24:281:28 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | +| blanket_impl.rs:281:42:283:9 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:282:22:282:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:282:22:282:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| blanket_impl.rs:282:22:282:41 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:290:16:300:5 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:291:17:291:34 | MySqlConnection {...} | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:293:9:293:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:293:9:293:20 | c.execute1() | | file://:0:0:0:0 | () | +| blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:294:35:294:36 | &c | | file://:0:0:0:0 | & | | blanket_impl.rs:294:35:294:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:296:9:296:41 | c.execute2(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | | blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:297:9:297:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:297:9:297:49 | c.execute2(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:298:35:298:36 | &c | | file://:0:0:0:0 | & | | blanket_impl.rs:298:35:298:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | file://:0:0:0:0 | () | | blanket_impl.rs:299:43:299:44 | &c | | file://:0:0:0:0 | & | | blanket_impl.rs:299:43:299:44 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| closure.rs:4:19:31:5 | { ... } | | file://:0:0:0:0 | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | file://:0:0:0:0 | (T_2) | | closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | @@ -397,11 +460,13 @@ inferType | closure.rs:30:25:30:32 | id2(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:29:30:31 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:35:44:35:44 | f | | closure.rs:35:20:35:41 | F | +| closure.rs:35:50:37:5 | { ... } | | file://:0:0:0:0 | () | | closure.rs:36:13:36:19 | _return | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | | closure.rs:36:23:36:29 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:39:46:39:46 | f | | closure.rs:39:22:39:43 | F | +| closure.rs:39:52:42:5 | { ... } | | file://:0:0:0:0 | () | | closure.rs:40:13:40:15 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:40:19:40:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:41:9:41:9 | f | | closure.rs:39:22:39:43 | F | @@ -419,6 +484,7 @@ inferType | closure.rs:49:9:49:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i32 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:52:15:64:5 | { ... } | | file://:0:0:0:0 | () | | closure.rs:53:13:53:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:53:13:53:13 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | | closure.rs:53:13:53:13 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | @@ -479,6 +545,7 @@ inferType | closure.rs:72:30:72:30 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | | closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | +| closure.rs:72:66:75:5 | { ... } | | file://:0:0:0:0 | () | | closure.rs:73:13:73:15 | _r1 | | closure.rs:72:27:72:27 | B | | closure.rs:73:19:73:37 | apply_boxed(...) | | closure.rs:72:27:72:27 | B | | closure.rs:73:31:73:31 | f | | {EXTERNAL LOCATION} | Box | @@ -535,6 +602,7 @@ inferType | dereference.rs:34:10:34:13 | self | &T | dereference.rs:30:1:30:15 | S | | dereference.rs:34:10:34:13 | self | &T.T | dereference.rs:32:6:32:6 | T | | dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | +| dereference.rs:38:39:50:1 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -557,6 +625,7 @@ inferType | dereference.rs:49:15:49:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:49:16:49:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:52:39:64:1 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:54:9:54:10 | c1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | @@ -588,6 +657,7 @@ inferType | dereference.rs:63:16:63:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:66:31:78:1 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:68:9:68:10 | e1 | | file://:0:0:0:0 | & | | dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:68:14:68:17 | &'a' | | file://:0:0:0:0 | & | @@ -619,6 +689,7 @@ inferType | dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:17:77:18 | e3 | | file://:0:0:0:0 | & | | dereference.rs:77:17:77:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:80:31:92:1 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | @@ -659,6 +730,7 @@ inferType | dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | | dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:94:27:105:1 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -682,6 +754,7 @@ inferType | dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:104:14:104:14 | z | T | dereference.rs:30:1:30:15 | S | | dereference.rs:104:14:104:14 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:131:19:139:5 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | | dereference.rs:132:17:132:26 | key_to_key | K | file://:0:0:0:0 | & | | dereference.rs:132:17:132:26 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | @@ -703,6 +776,7 @@ inferType | dereference.rs:133:23:133:29 | &... | &T | file://:0:0:0:0 | & | | dereference.rs:133:23:133:29 | &... | &T.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:9:137:9 | if ... {...} | | file://:0:0:0:0 | () | | dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:134:16:134:28 | Some(...) | T | file://:0:0:0:0 | & | | dereference.rs:134:16:134:28 | Some(...) | T.&T | dereference.rs:110:5:111:21 | Key | @@ -727,6 +801,7 @@ inferType | dereference.rs:134:47:134:49 | key | &T | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:47:134:49 | key | &T | file://:0:0:0:0 | & | | dereference.rs:134:47:134:49 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:52:137:9 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:136:13:136:15 | key | | file://:0:0:0:0 | & | | dereference.rs:136:13:136:15 | key | &T | dereference.rs:110:5:111:21 | Key | | dereference.rs:136:13:136:15 | key | &T | file://:0:0:0:0 | & | @@ -778,6 +853,7 @@ inferType | dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:181:19:188:5 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:13:182:13 | x | | {EXTERNAL LOCATION} | i64 | | dereference.rs:182:17:182:20 | (...) | | file://:0:0:0:0 | & | @@ -821,19 +897,40 @@ inferType | dereference.rs:196:16:196:20 | SelfParam | &T | dereference.rs:195:5:197:5 | Self [trait Bar] | | dereference.rs:201:16:201:24 | SelfParam | | file://:0:0:0:0 | & | | dereference.rs:201:16:201:24 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:201:27:203:9 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:202:13:202:39 | MacroExpr | | file://:0:0:0:0 | () | | dereference.rs:202:22:202:38 | "In struct impl!\\n" | | file://:0:0:0:0 | & | | dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:202:22:202:38 | ...::_print(...) | | file://:0:0:0:0 | () | | dereference.rs:202:22:202:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:202:22:202:38 | MacroBlockExpr | | file://:0:0:0:0 | () | | dereference.rs:202:22:202:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:202:22:202:38 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:208:16:208:20 | SelfParam | | file://:0:0:0:0 | & | | dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:208:23:210:9 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:209:13:209:38 | MacroExpr | | file://:0:0:0:0 | () | | dereference.rs:209:22:209:37 | "In trait impl!\\n" | | file://:0:0:0:0 | & | | dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:209:22:209:37 | ...::_print(...) | | file://:0:0:0:0 | () | | dereference.rs:209:22:209:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:209:22:209:37 | MacroBlockExpr | | file://:0:0:0:0 | () | | dereference.rs:209:22:209:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| dereference.rs:209:22:209:37 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:213:19:216:5 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:215:9:215:15 | f.bar() | | file://:0:0:0:0 | () | +| dereference.rs:219:15:228:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | file://:0:0:0:0 | () | +| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | file://:0:0:0:0 | () | +| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | file://:0:0:0:0 | () | +| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | file://:0:0:0:0 | () | +| dereference.rs:224:5:224:26 | implicit_dereference(...) | | file://:0:0:0:0 | () | +| dereference.rs:225:5:225:41 | ...::test(...) | | file://:0:0:0:0 | () | +| dereference.rs:226:5:226:26 | ...::test(...) | | file://:0:0:0:0 | () | +| dereference.rs:227:5:227:34 | ...::main(...) | | file://:0:0:0:0 | () | | dyn_type.rs:7:10:7:14 | SelfParam | | file://:0:0:0:0 | & | | dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | file://:0:0:0:0 | & | @@ -901,6 +998,7 @@ inferType | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:64:25:64:27 | obj | | file://:0:0:0:0 | & | | dyn_type.rs:64:25:64:27 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:64:45:66:1 | { ... } | | file://:0:0:0:0 | () | | dyn_type.rs:65:9:65:15 | _result | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:19:65:24 | (...) | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:65:19:65:28 | ... .m() | | {EXTERNAL LOCATION} | String | @@ -910,6 +1008,7 @@ inferType | dyn_type.rs:68:27:68:29 | obj | | file://:0:0:0:0 | & | | dyn_type.rs:68:27:68:29 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:68:27:68:29 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:68:57:71:1 | { ... } | | file://:0:0:0:0 | () | | dyn_type.rs:69:9:69:16 | _result1 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:25 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:20:69:25 | (...) | dyn(A) | {EXTERNAL LOCATION} | String | @@ -924,6 +1023,7 @@ inferType | dyn_type.rs:70:26:70:28 | obj | | file://:0:0:0:0 | & | | dyn_type.rs:70:26:70:28 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:70:26:70:28 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:73:26:76:1 | { ... } | | file://:0:0:0:0 | () | | dyn_type.rs:74:9:74:11 | obj | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:74:9:74:11 | obj | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:74:9:74:11 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | @@ -971,6 +1071,7 @@ inferType | dyn_type.rs:86:20:86:22 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:86:20:86:22 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:86:20:86:22 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:86:58:99:1 | { ... } | | file://:0:0:0:0 | () | | dyn_type.rs:87:9:90:5 | TuplePat | | file://:0:0:0:0 | (T_2) | | dyn_type.rs:87:9:90:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:87:9:90:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | @@ -1013,11 +1114,14 @@ inferType | dyn_type.rs:98:19:98:21 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:98:19:98:21 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:98:19:98:21 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:101:15:108:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | file://:0:0:0:0 | () | | dyn_type.rs:102:26:102:48 | &... | | file://:0:0:0:0 | & | | dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:45:102:46 | 42 | | {EXTERNAL LOCATION} | i32 | +| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | file://:0:0:0:0 | () | | dyn_type.rs:103:28:105:5 | &... | | file://:0:0:0:0 | & | | dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | @@ -1028,6 +1132,8 @@ inferType | dyn_type.rs:104:16:104:17 | "" | | file://:0:0:0:0 | & | | dyn_type.rs:104:16:104:17 | "" | &T | {EXTERNAL LOCATION} | str | | dyn_type.rs:104:16:104:29 | "".to_string() | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | file://:0:0:0:0 | () | +| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | file://:0:0:0:0 | () | | dyn_type.rs:107:21:107:45 | &... | | file://:0:0:0:0 | & | | dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | @@ -1038,8 +1144,11 @@ inferType | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | | invalid/main.rs:8:16:8:19 | SelfParam | | invalid/main.rs:7:5:9:5 | Self [trait T1] | +| invalid/main.rs:8:22:8:23 | { ... } | | file://:0:0:0:0 | () | | invalid/main.rs:12:16:12:19 | SelfParam | | invalid/main.rs:11:5:15:5 | Self [trait T2] | +| invalid/main.rs:12:22:14:9 | { ... } | | file://:0:0:0:0 | () | | invalid/main.rs:13:13:13:16 | self | | invalid/main.rs:11:5:15:5 | Self [trait T2] | +| invalid/main.rs:13:13:13:22 | self.foo() | | file://:0:0:0:0 | () | | invalid/main.rs:25:22:25:25 | SelfParam | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:25:28:25:32 | other | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:29:22:29:25 | SelfParam | | invalid/main.rs:21:5:22:20 | Num | @@ -1057,6 +1166,7 @@ inferType | invalid/main.rs:40:13:40:16 | self | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:13:40:33 | self.add_alias(...) | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:28:40:32 | other | | invalid/main.rs:35:10:35:20 | T | +| invalid/main.rs:44:30:49:5 | { ... } | | file://:0:0:0:0 | () | | invalid/main.rs:45:13:45:13 | a | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:17:45:22 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:21:45:21 | 5 | | {EXTERNAL LOCATION} | i32 | @@ -1089,29 +1199,37 @@ inferType | invalid/main.rs:84:13:84:16 | self | | file://:0:0:0:0 | & | | invalid/main.rs:84:13:84:16 | self | &T | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:25 | self.clone1() | | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:88:33:92:5 | { ... } | | file://:0:0:0:0 | () | | invalid/main.rs:91:13:91:13 | x | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:18 | S1 | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:30 | S1.duplicate() | | invalid/main.rs:53:5:54:14 | S1 | +| main.rs:25:30:28:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | | main.rs:27:18:27:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:27:18:27:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:27:18:27:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:27:18:27:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:27:18:27:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | +| main.rs:30:46:33:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | | main.rs:32:18:32:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:32:18:32:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:32:18:32:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:32:18:32:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:32:18:32:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:32:18:32:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | +| main.rs:35:31:63:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:13:37:13 | x | A | main.rs:3:5:4:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | @@ -1119,8 +1237,10 @@ inferType | main.rs:37:40:37:40 | S | | main.rs:3:5:4:13 | S | | main.rs:38:18:38:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:38:18:38:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:38:18:38:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:38:18:38:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:38:18:38:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:38:26:38:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1131,8 +1251,10 @@ inferType | main.rs:41:35:41:35 | S | | main.rs:3:5:4:13 | S | | main.rs:42:18:42:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:42:18:42:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:42:18:42:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:42:18:42:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:42:18:42:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:42:26:42:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1142,8 +1264,10 @@ inferType | main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:49:18:49:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:49:18:49:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:49:18:49:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:49:18:49:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:49:18:49:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:49:26:49:28 | x.a | T | main.rs:3:5:4:13 | S | @@ -1157,8 +1281,10 @@ inferType | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:55:18:55:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:55:18:55:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:55:18:55:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:55:18:55:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:55:18:55:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | | main.rs:55:26:55:26 | x | A.T | main.rs:3:5:4:13 | S | @@ -1181,10 +1307,15 @@ inferType | main.rs:61:30:61:32 | x.a | T | main.rs:3:5:4:13 | S | | main.rs:62:18:62:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:62:18:62:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:62:18:62:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:62:18:62:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:62:18:62:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | +| main.rs:65:16:68:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:66:9:66:29 | simple_field_access(...) | | file://:0:0:0:0 | () | +| main.rs:67:9:67:30 | generic_field_access(...) | | file://:0:0:0:0 | () | | main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | | main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | @@ -1194,8 +1325,10 @@ inferType | main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | file://:0:0:0:0 | & | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:85:18:85:33 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:85:18:85:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:85:18:85:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:85:18:85:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | | main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | | main.rs:87:13:87:13 | y | | main.rs:72:5:72:21 | Foo | @@ -1206,8 +1339,10 @@ inferType | main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | file://:0:0:0:0 | & | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:92:18:92:33 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:92:18:92:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:92:18:92:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:92:18:92:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | | main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | | main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | @@ -1217,6 +1352,7 @@ inferType | main.rs:110:39:112:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:111:13:111:16 | self | | main.rs:99:5:102:5 | MyThing | | main.rs:111:13:111:22 | self.field | | {EXTERNAL LOCATION} | bool | +| main.rs:115:16:121:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:116:13:116:13 | x | | main.rs:99:5:102:5 | MyThing | | main.rs:116:17:116:39 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | | main.rs:116:34:116:37 | true | | {EXTERNAL LOCATION} | bool | @@ -1231,24 +1367,40 @@ inferType | main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | | main.rs:130:25:130:29 | SelfParam | | file://:0:0:0:0 | & | | main.rs:130:25:130:29 | SelfParam | &T | main.rs:128:9:133:9 | Self [trait Foo] | +| main.rs:130:32:132:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:131:26:131:31 | "foo!\\n" | | file://:0:0:0:0 | & | | main.rs:131:26:131:31 | "foo!\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:131:26:131:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:131:26:131:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:131:26:131:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:131:26:131:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:137:25:137:29 | SelfParam | | file://:0:0:0:0 | & | | main.rs:137:25:137:29 | SelfParam | &T | main.rs:135:9:140:9 | Self [trait Bar] | +| main.rs:137:32:139:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:138:26:138:31 | "bar!\\n" | | file://:0:0:0:0 | & | | main.rs:138:26:138:31 | "bar!\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:138:26:138:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:138:26:138:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:138:26:138:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:138:26:138:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:149:15:170:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:150:13:150:13 | x | | main.rs:142:9:142:21 | X | | main.rs:150:17:150:17 | X | | main.rs:142:9:142:21 | X | +| main.rs:151:9:154:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:153:13:153:13 | x | | main.rs:142:9:142:21 | X | +| main.rs:153:13:153:24 | x.a_method() | | file://:0:0:0:0 | () | +| main.rs:155:9:158:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:157:13:157:13 | x | | main.rs:142:9:142:21 | X | +| main.rs:157:13:157:24 | x.a_method() | | file://:0:0:0:0 | () | +| main.rs:159:9:162:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:161:13:161:13 | x | | main.rs:142:9:142:21 | X | +| main.rs:161:13:161:24 | x.a_method() | | file://:0:0:0:0 | () | +| main.rs:163:9:169:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:167:13:167:29 | ...::a_method(...) | | file://:0:0:0:0 | () | | main.rs:167:27:167:28 | &x | | file://:0:0:0:0 | & | | main.rs:167:27:167:28 | &x | &T | main.rs:142:9:142:21 | X | | main.rs:167:28:167:28 | x | | main.rs:142:9:142:21 | X | +| main.rs:168:13:168:29 | ...::a_method(...) | | file://:0:0:0:0 | () | | main.rs:168:27:168:28 | &x | | file://:0:0:0:0 | & | | main.rs:168:27:168:28 | &x | &T | main.rs:142:9:142:21 | X | | main.rs:168:28:168:28 | x | | main.rs:142:9:142:21 | X | @@ -1273,6 +1425,7 @@ inferType | main.rs:200:13:200:16 | self | | main.rs:174:5:177:5 | MyThing | | main.rs:200:13:200:16 | self | A | main.rs:198:10:198:10 | T | | main.rs:200:13:200:18 | self.a | | main.rs:198:10:198:10 | T | +| main.rs:204:16:220:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:205:13:205:13 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:205:13:205:13 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:205:17:205:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | @@ -1285,29 +1438,37 @@ inferType | main.rs:206:30:206:31 | S2 | | main.rs:181:5:182:14 | S2 | | main.rs:209:18:209:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:209:18:209:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:209:18:209:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:209:18:209:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:209:18:209:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:209:18:209:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:209:26:209:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:209:26:209:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:209:26:209:28 | x.a | | main.rs:179:5:180:14 | S1 | | main.rs:210:18:210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:210:18:210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:210:18:210:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:210:18:210:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:210:18:210:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:210:18:210:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:210:26:210:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:210:26:210:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:210:26:210:28 | y.a | | main.rs:181:5:182:14 | S2 | | main.rs:212:18:212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:212:18:212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:212:18:212:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:212:18:212:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:212:18:212:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:212:18:212:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:212:26:212:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:212:26:212:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:212:26:212:31 | x.m1() | | main.rs:179:5:180:14 | S1 | | main.rs:213:18:213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:213:18:213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:213:18:213:33 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:213:18:213:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:213:18:213:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:213:18:213:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:213:26:213:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:213:26:213:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:213:26:213:31 | y.m1() | | main.rs:174:5:177:5 | MyThing | @@ -1325,15 +1486,19 @@ inferType | main.rs:216:30:216:31 | S2 | | main.rs:181:5:182:14 | S2 | | main.rs:218:18:218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:218:18:218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:218:18:218:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:218:18:218:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:218:18:218:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:218:18:218:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:218:26:218:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:218:26:218:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:218:26:218:31 | x.m2() | | main.rs:179:5:180:14 | S1 | | main.rs:219:18:219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:219:18:219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:219:18:219:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:219:18:219:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:219:18:219:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:219:18:219:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:219:26:219:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:219:26:219:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:219:26:219:31 | y.m2() | | main.rs:181:5:182:14 | S2 | @@ -1457,6 +1622,7 @@ inferType | main.rs:366:73:369:5 | { ... } | | main.rs:235:5:236:14 | S1 | | main.rs:368:9:368:13 | thing | | main.rs:366:39:366:53 | TP | | main.rs:368:9:368:26 | thing.convert_to() | | main.rs:235:5:236:14 | S1 | +| main.rs:371:16:442:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:372:13:372:20 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:372:13:372:20 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:372:24:372:40 | MyThing {...} | | main.rs:224:5:227:5 | MyThing | @@ -1474,15 +1640,19 @@ inferType | main.rs:374:37:374:38 | S3 | | main.rs:239:5:240:14 | S3 | | main.rs:378:18:378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:378:18:378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:378:18:378:38 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:378:18:378:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:378:18:378:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:378:18:378:38 | { ... } | | file://:0:0:0:0 | () | | main.rs:378:26:378:33 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:378:26:378:33 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:378:26:378:38 | thing_s1.m1() | | main.rs:235:5:236:14 | S1 | | main.rs:379:18:379:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:379:18:379:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:379:18:379:40 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:379:18:379:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:379:18:379:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:379:18:379:40 | { ... } | | file://:0:0:0:0 | () | | main.rs:379:26:379:33 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:379:26:379:33 | thing_s2 | A | main.rs:237:5:238:14 | S2 | | main.rs:379:26:379:38 | thing_s2.m1() | | main.rs:224:5:227:5 | MyThing | @@ -1494,8 +1664,10 @@ inferType | main.rs:380:22:380:34 | thing_s3.m1() | | main.rs:239:5:240:14 | S3 | | main.rs:381:18:381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:381:18:381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:381:18:381:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:381:18:381:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:381:18:381:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:381:18:381:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:381:26:381:27 | s3 | | main.rs:239:5:240:14 | S3 | | main.rs:383:13:383:14 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:383:13:383:14 | p1 | P1 | main.rs:235:5:236:14 | S1 | @@ -1507,8 +1679,10 @@ inferType | main.rs:383:39:383:40 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:384:18:384:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:384:18:384:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:384:18:384:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:384:18:384:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:384:18:384:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:384:18:384:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:384:26:384:27 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:384:26:384:27 | p1 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:384:26:384:27 | p1 | P2 | main.rs:235:5:236:14 | S1 | @@ -1523,8 +1697,10 @@ inferType | main.rs:386:39:386:40 | S2 | | main.rs:237:5:238:14 | S2 | | main.rs:387:18:387:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:387:18:387:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:387:18:387:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:387:18:387:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:387:18:387:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:387:18:387:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:387:26:387:27 | p2 | | main.rs:229:5:233:5 | MyPair | | main.rs:387:26:387:27 | p2 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:387:26:387:27 | p2 | P2 | main.rs:237:5:238:14 | S2 | @@ -1543,8 +1719,10 @@ inferType | main.rs:391:17:391:18 | S3 | | main.rs:239:5:240:14 | S3 | | main.rs:393:18:393:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:393:18:393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:393:18:393:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:393:18:393:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:393:18:393:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:393:18:393:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:393:26:393:27 | p3 | | main.rs:229:5:233:5 | MyPair | | main.rs:393:26:393:27 | p3 | P1 | main.rs:224:5:227:5 | MyThing | | main.rs:393:26:393:27 | p3 | P1.A | main.rs:235:5:236:14 | S1 | @@ -1565,8 +1743,10 @@ inferType | main.rs:397:17:397:23 | a.fst() | | main.rs:235:5:236:14 | S1 | | main.rs:398:18:398:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:398:18:398:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:398:18:398:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:398:18:398:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:398:18:398:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:398:18:398:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:398:26:398:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:399:13:399:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:17 | a | | main.rs:229:5:233:5 | MyPair | @@ -1575,8 +1755,10 @@ inferType | main.rs:399:17:399:23 | a.snd() | | main.rs:235:5:236:14 | S1 | | main.rs:400:18:400:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:400:18:400:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:400:18:400:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:400:18:400:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:400:18:400:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:400:18:400:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:400:26:400:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:406:13:406:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:406:13:406:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1593,8 +1775,10 @@ inferType | main.rs:407:17:407:23 | b.fst() | | main.rs:235:5:236:14 | S1 | | main.rs:408:18:408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:408:18:408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:408:18:408:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:408:18:408:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:408:18:408:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:408:18:408:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:408:26:408:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:409:13:409:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:409:17:409:17 | b | | main.rs:229:5:233:5 | MyPair | @@ -1603,8 +1787,10 @@ inferType | main.rs:409:17:409:23 | b.snd() | | main.rs:237:5:238:14 | S2 | | main.rs:410:18:410:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:410:18:410:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:410:18:410:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:410:18:410:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:410:18:410:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:410:18:410:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:410:26:410:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:414:13:414:13 | x | | main.rs:235:5:236:14 | S1 | | main.rs:414:17:414:39 | call_trait_m1(...) | | main.rs:235:5:236:14 | S1 | @@ -1612,8 +1798,10 @@ inferType | main.rs:414:31:414:38 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:415:18:415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:415:18:415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:415:18:415:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:415:18:415:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:415:18:415:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:415:18:415:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:415:26:415:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:416:13:416:13 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:416:13:416:13 | y | A | main.rs:237:5:238:14 | S2 | @@ -1623,8 +1811,10 @@ inferType | main.rs:416:31:416:38 | thing_s2 | A | main.rs:237:5:238:14 | S2 | | main.rs:417:18:417:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:417:18:417:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:417:18:417:28 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:417:18:417:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:417:18:417:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:417:18:417:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:417:26:417:26 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:417:26:417:26 | y | A | main.rs:237:5:238:14 | S2 | | main.rs:417:26:417:28 | y.a | | main.rs:237:5:238:14 | S2 | @@ -1643,8 +1833,10 @@ inferType | main.rs:421:25:421:25 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:422:18:422:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:422:18:422:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:422:18:422:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:422:18:422:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:422:18:422:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:422:18:422:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:422:26:422:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:423:13:423:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:423:17:423:26 | get_snd(...) | | main.rs:235:5:236:14 | S1 | @@ -1653,8 +1845,10 @@ inferType | main.rs:423:25:423:25 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:424:18:424:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:424:18:424:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:424:18:424:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:424:18:424:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:424:18:424:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:424:18:424:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:424:26:424:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:427:13:427:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:427:13:427:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1671,8 +1865,10 @@ inferType | main.rs:428:25:428:25 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:429:18:429:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:429:18:429:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:429:18:429:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:429:18:429:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:429:18:429:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:429:18:429:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:429:26:429:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:430:13:430:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:430:17:430:26 | get_snd(...) | | main.rs:237:5:238:14 | S2 | @@ -1681,8 +1877,10 @@ inferType | main.rs:430:25:430:25 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:431:18:431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:431:18:431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:431:18:431:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:431:18:431:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:431:18:431:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:431:18:431:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:431:26:431:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:433:13:433:13 | c | | main.rs:229:5:233:5 | MyPair | | main.rs:433:13:433:13 | c | P1 | main.rs:239:5:240:14 | S3 | @@ -1789,35 +1987,47 @@ inferType | main.rs:534:13:534:16 | self | &T.T3 | main.rs:531:10:531:10 | T | | main.rs:540:14:540:18 | SelfParam | | file://:0:0:0:0 | & | | main.rs:540:14:540:18 | SelfParam | &T | main.rs:538:5:541:5 | Self [trait MyTrait1] | +| main.rs:540:21:540:22 | { ... } | | file://:0:0:0:0 | () | | main.rs:550:14:550:18 | SelfParam | | file://:0:0:0:0 | & | | main.rs:550:14:550:18 | SelfParam | &T | main.rs:545:5:546:14 | S4 | +| main.rs:550:21:550:22 | { ... } | | file://:0:0:0:0 | () | | main.rs:560:14:560:18 | SelfParam | | file://:0:0:0:0 | & | | main.rs:560:14:560:18 | SelfParam | &T | main.rs:555:5:556:22 | S5 | | main.rs:560:14:560:18 | SelfParam | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:560:21:560:22 | { ... } | | file://:0:0:0:0 | () | +| main.rs:569:16:595:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:570:13:570:13 | x | | main.rs:446:5:447:14 | S1 | | main.rs:570:17:570:18 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:571:18:571:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:571:18:571:42 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:571:18:571:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:571:18:571:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:571:18:571:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:572:18:572:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:572:18:572:45 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:572:18:572:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:572:18:572:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:572:18:572:45 | { ... } | | file://:0:0:0:0 | () | | main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:18:573:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:573:18:573:44 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:573:18:573:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:573:18:573:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:573:18:573:44 | { ... } | | file://:0:0:0:0 | () | | main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | | main.rs:574:18:574:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:574:18:574:47 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:574:18:574:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:574:18:574:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:574:18:574:47 | { ... } | | file://:0:0:0:0 | () | | main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | | main.rs:574:46:574:46 | x | | main.rs:446:5:447:14 | S1 | | main.rs:576:13:576:13 | y | | main.rs:479:5:479:22 | S2 | @@ -1827,15 +2037,19 @@ inferType | main.rs:576:20:576:21 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:577:18:577:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:577:18:577:42 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:577:18:577:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:577:18:577:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:577:18:577:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | | main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | | main.rs:577:26:577:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:578:18:578:56 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:578:18:578:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:578:18:578:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:578:18:578:56 | { ... } | | file://:0:0:0:0 | () | | main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:578:50:578:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:578:50:578:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | @@ -1847,23 +2061,29 @@ inferType | main.rs:580:20:580:20 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:581:18:581:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:581:18:581:42 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:581:18:581:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:581:18:581:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:581:18:581:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | | main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:581:26:581:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:582:18:582:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:582:18:582:49 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:582:18:582:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:582:18:582:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:582:18:582:49 | { ... } | | file://:0:0:0:0 | () | | main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:582:44:582:48 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:582:44:582:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:582:47:582:47 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:583:18:583:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:583:18:583:56 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:583:18:583:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:583:18:583:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:583:18:583:56 | { ... } | | file://:0:0:0:0 | () | | main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:583:51:583:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:583:51:583:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | @@ -1875,8 +2095,10 @@ inferType | main.rs:585:20:585:21 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:586:18:586:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:586:18:586:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:586:18:586:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:586:18:586:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:586:18:586:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:586:26:586:31 | w.m(...) | | file://:0:0:0:0 | & | @@ -1885,8 +2107,10 @@ inferType | main.rs:586:30:586:30 | x | | main.rs:446:5:447:14 | S1 | | main.rs:587:18:587:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:587:18:587:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:587:18:587:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:587:18:587:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:587:18:587:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:587:26:587:37 | ...::m(...) | | file://:0:0:0:0 | & | | main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | | main.rs:587:26:587:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | @@ -1897,12 +2121,16 @@ inferType | main.rs:587:33:587:33 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:36:587:36 | x | | main.rs:446:5:447:14 | S1 | | main.rs:589:9:589:10 | S4 | | main.rs:545:5:546:14 | S4 | +| main.rs:589:9:589:14 | S4.m() | | file://:0:0:0:0 | () | +| main.rs:590:9:590:18 | ...::m(...) | | file://:0:0:0:0 | () | | main.rs:590:15:590:17 | &S4 | | file://:0:0:0:0 | & | | main.rs:590:15:590:17 | &S4 | &T | main.rs:545:5:546:14 | S4 | | main.rs:590:16:590:17 | S4 | | main.rs:545:5:546:14 | S4 | | main.rs:591:9:591:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:591:9:591:16 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:591:9:591:20 | ... .m() | | file://:0:0:0:0 | () | | main.rs:591:12:591:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:592:9:592:24 | ...::m(...) | | file://:0:0:0:0 | () | | main.rs:592:15:592:23 | &... | | file://:0:0:0:0 | & | | main.rs:592:15:592:23 | &... | &T | main.rs:555:5:556:22 | S5 | | main.rs:592:15:592:23 | &... | &T.T5 | {EXTERNAL LOCATION} | i32 | @@ -1911,7 +2139,9 @@ inferType | main.rs:592:19:592:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | | main.rs:593:9:593:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:593:9:593:16 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | +| main.rs:593:9:593:20 | ... .m() | | file://:0:0:0:0 | () | | main.rs:593:12:593:15 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:594:9:594:24 | ...::m(...) | | file://:0:0:0:0 | () | | main.rs:594:15:594:23 | &... | | file://:0:0:0:0 | & | | main.rs:594:15:594:23 | &... | &T | main.rs:555:5:556:22 | S5 | | main.rs:594:15:594:23 | &... | &T.T5 | {EXTERNAL LOCATION} | bool | @@ -1921,54 +2151,70 @@ inferType | main.rs:611:19:611:22 | SelfParam | | main.rs:609:5:612:5 | Self [trait FirstTrait] | | main.rs:616:19:616:22 | SelfParam | | main.rs:614:5:617:5 | Self [trait SecondTrait] | | main.rs:619:64:619:64 | x | | main.rs:619:45:619:61 | T | +| main.rs:619:70:623:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:621:13:621:14 | s1 | | main.rs:619:35:619:42 | I | | main.rs:621:18:621:18 | x | | main.rs:619:45:619:61 | T | | main.rs:621:18:621:27 | x.method() | | main.rs:619:35:619:42 | I | | main.rs:622:18:622:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:622:18:622:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:622:18:622:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:622:18:622:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:622:18:622:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | | main.rs:625:65:625:65 | x | | main.rs:625:46:625:62 | T | +| main.rs:625:71:629:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:627:13:627:14 | s2 | | main.rs:625:36:625:43 | I | | main.rs:627:18:627:18 | x | | main.rs:625:46:625:62 | T | | main.rs:627:18:627:27 | x.method() | | main.rs:625:36:625:43 | I | | main.rs:628:18:628:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:628:18:628:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:628:18:628:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:628:18:628:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:628:18:628:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | | main.rs:631:49:631:49 | x | | main.rs:631:30:631:46 | T | +| main.rs:631:55:634:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:632:13:632:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:632:17:632:17 | x | | main.rs:631:30:631:46 | T | | main.rs:632:17:632:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:633:18:633:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:633:18:633:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:633:18:633:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:633:18:633:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:633:18:633:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:636:53:636:53 | x | | main.rs:636:34:636:50 | T | +| main.rs:636:59:639:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:637:13:637:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:637:17:637:17 | x | | main.rs:636:34:636:50 | T | | main.rs:637:17:637:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:638:18:638:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:638:18:638:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:638:18:638:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:638:18:638:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:638:18:638:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:641:43:641:43 | x | | main.rs:641:40:641:40 | T | +| main.rs:644:5:647:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:645:13:645:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:645:17:645:17 | x | | main.rs:641:40:641:40 | T | | main.rs:645:17:645:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:646:18:646:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:646:18:646:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:646:18:646:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:646:18:646:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:646:18:646:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:650:16:650:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:652:16:652:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:655:53:655:53 | x | | main.rs:655:50:655:50 | T | | main.rs:655:59:655:59 | y | | main.rs:655:50:655:50 | T | +| main.rs:659:5:662:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:660:13:660:13 | _ | | main.rs:601:5:602:14 | S1 | | main.rs:660:17:660:17 | x | | main.rs:655:50:655:50 | T | | main.rs:660:17:660:23 | x.fst() | | main.rs:601:5:602:14 | S1 | @@ -1977,6 +2223,7 @@ inferType | main.rs:661:17:661:26 | y.method() | | main.rs:601:5:602:14 | S1 | | main.rs:664:58:664:58 | x | | main.rs:664:41:664:55 | T | | main.rs:664:64:664:64 | y | | main.rs:664:41:664:55 | T | +| main.rs:664:70:669:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:666:13:666:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:666:18:666:18 | x | | main.rs:664:41:664:55 | T | | main.rs:666:18:666:24 | x.fst() | | main.rs:601:5:602:14 | S1 | @@ -1985,12 +2232,15 @@ inferType | main.rs:667:18:667:24 | y.snd() | | main.rs:604:5:605:14 | S2 | | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:668:18:668:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:668:18:668:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:668:18:668:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:668:18:668:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:668:36:668:37 | s2 | | main.rs:604:5:605:14 | S2 | | main.rs:671:69:671:69 | x | | main.rs:671:52:671:66 | T | | main.rs:671:75:671:75 | y | | main.rs:671:52:671:66 | T | +| main.rs:671:81:676:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:673:13:673:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:673:18:673:18 | x | | main.rs:671:52:671:66 | T | | main.rs:673:18:673:24 | x.fst() | | main.rs:601:5:602:14 | S1 | @@ -1999,12 +2249,15 @@ inferType | main.rs:674:18:674:24 | y.snd() | | main.rs:671:41:671:49 | T2 | | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:675:18:675:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:675:18:675:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:675:18:675:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:675:18:675:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:675:36:675:37 | s2 | | main.rs:671:41:671:49 | T2 | | main.rs:678:50:678:50 | x | | main.rs:678:41:678:47 | T | | main.rs:678:56:678:56 | y | | main.rs:678:41:678:47 | T | +| main.rs:678:62:683:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:680:13:680:14 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:680:18:680:18 | x | | main.rs:678:41:678:47 | T | | main.rs:680:18:680:24 | x.fst() | | {EXTERNAL LOCATION} | bool | @@ -2013,12 +2266,15 @@ inferType | main.rs:681:18:681:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:682:18:682:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:682:18:682:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:682:18:682:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:682:18:682:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:682:36:682:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:685:54:685:54 | x | | main.rs:685:41:685:51 | T | | main.rs:685:60:685:60 | y | | main.rs:685:41:685:51 | T | +| main.rs:685:66:690:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:687:13:687:14 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:687:18:687:18 | x | | main.rs:685:41:685:51 | T | | main.rs:687:18:687:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | @@ -2027,8 +2283,10 @@ inferType | main.rs:688:18:688:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:689:18:689:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:689:18:689:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:689:18:689:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:689:18:689:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:697:18:697:22 | SelfParam | | file://:0:0:0:0 | & | @@ -2050,6 +2308,7 @@ inferType | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:713:55:713:59 | thing | | file://:0:0:0:0 | & | | main.rs:713:55:713:59 | thing | &T | main.rs:713:25:713:52 | S | +| main.rs:713:66:716:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:715:13:715:15 | _ms | | {EXTERNAL LOCATION} | Option | | main.rs:715:13:715:15 | _ms | T | main.rs:713:25:713:52 | S | | main.rs:715:19:715:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | @@ -2066,6 +2325,7 @@ inferType | main.rs:725:36:725:39 | self | | file://:0:0:0:0 | & | | main.rs:725:36:725:39 | self | &T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:36:725:45 | self.value | | {EXTERNAL LOCATION} | i32 | +| main.rs:731:19:734:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:732:13:732:13 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:17:732:37 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:35:732:35 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -2153,6 +2413,7 @@ inferType | main.rs:806:13:806:13 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:806:13:806:13 | x | T | main.rs:800:10:800:10 | T | | main.rs:806:13:806:15 | x.a | | main.rs:800:10:800:10 | T | +| main.rs:810:16:866:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:811:13:811:13 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:811:13:811:13 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:811:17:811:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | @@ -2165,15 +2426,19 @@ inferType | main.rs:812:30:812:31 | S2 | | main.rs:745:5:746:14 | S2 | | main.rs:814:18:814:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:814:18:814:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:814:18:814:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:814:18:814:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:814:18:814:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:814:18:814:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:814:26:814:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:814:26:814:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:814:26:814:31 | x.m1() | | main.rs:743:5:744:14 | S1 | | main.rs:815:18:815:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:815:18:815:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:815:18:815:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:815:18:815:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:815:18:815:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:815:18:815:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:815:26:815:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:815:26:815:26 | y | T | main.rs:745:5:746:14 | S2 | | main.rs:815:26:815:31 | y.m1() | | main.rs:745:5:746:14 | S2 | @@ -2189,15 +2454,19 @@ inferType | main.rs:818:30:818:31 | S2 | | main.rs:745:5:746:14 | S2 | | main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:820:18:820:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:820:18:820:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:820:18:820:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:820:18:820:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:820:26:820:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:820:26:820:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:820:26:820:31 | x.m2() | | main.rs:743:5:744:14 | S1 | | main.rs:821:18:821:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:821:18:821:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:821:18:821:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:821:18:821:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:821:18:821:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:821:18:821:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:821:26:821:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:821:26:821:26 | y | T | main.rs:745:5:746:14 | S2 | | main.rs:821:26:821:31 | y.m2() | | main.rs:745:5:746:14 | S2 | @@ -2217,8 +2486,10 @@ inferType | main.rs:826:31:826:32 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:827:18:827:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:827:18:827:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:827:18:827:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:827:18:827:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:827:18:827:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:827:18:827:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:827:26:827:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:828:13:828:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:828:17:828:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | @@ -2226,8 +2497,10 @@ inferType | main.rs:828:33:828:34 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:829:18:829:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:829:18:829:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:829:18:829:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:829:18:829:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:829:18:829:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:829:18:829:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:829:26:829:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:830:13:830:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:830:17:830:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | @@ -2235,8 +2508,10 @@ inferType | main.rs:830:33:830:34 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:831:18:831:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:831:18:831:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:831:18:831:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:831:18:831:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:831:18:831:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:831:18:831:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:831:26:831:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:832:13:832:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:832:17:832:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | @@ -2244,8 +2519,10 @@ inferType | main.rs:832:31:832:32 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:833:18:833:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:833:18:833:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:833:18:833:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:833:18:833:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:833:18:833:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:833:18:833:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:833:26:833:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:834:13:834:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:834:17:834:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | @@ -2253,8 +2530,10 @@ inferType | main.rs:834:33:834:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:835:18:835:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:835:18:835:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:835:18:835:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:18:835:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:835:26:835:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:836:13:836:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:836:17:836:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | @@ -2262,8 +2541,10 @@ inferType | main.rs:836:33:836:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:837:18:837:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:837:18:837:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:837:18:837:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:837:18:837:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:837:18:837:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:837:18:837:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:837:26:837:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:838:13:838:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:838:17:838:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | @@ -2271,8 +2552,10 @@ inferType | main.rs:838:36:838:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:839:18:839:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:839:18:839:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:839:18:839:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:839:18:839:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:839:18:839:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:839:18:839:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:839:26:839:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:840:13:840:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:840:17:840:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | @@ -2280,8 +2563,10 @@ inferType | main.rs:840:36:840:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:841:18:841:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:841:18:841:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:841:18:841:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:18:841:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:841:26:841:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:842:13:842:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:842:17:842:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | @@ -2289,8 +2574,10 @@ inferType | main.rs:842:36:842:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:843:18:843:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:843:18:843:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:843:18:843:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:843:18:843:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:843:18:843:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:843:18:843:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:843:26:843:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:844:13:844:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:844:17:844:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | @@ -2298,8 +2585,10 @@ inferType | main.rs:844:36:844:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:845:18:845:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:845:18:845:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:845:18:845:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:845:18:845:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:845:18:845:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:845:18:845:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:845:26:845:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:847:13:847:14 | x3 | | main.rs:738:5:741:5 | MyThing | | main.rs:847:13:847:14 | x3 | T | main.rs:738:5:741:5 | MyThing | @@ -2326,8 +2615,10 @@ inferType | main.rs:854:37:854:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:855:18:855:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:855:18:855:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:855:18:855:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:855:18:855:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:855:26:855:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:856:13:856:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:856:17:856:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | @@ -2336,8 +2627,10 @@ inferType | main.rs:856:39:856:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:857:18:857:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:857:18:857:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:857:18:857:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:857:18:857:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:857:26:857:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:858:17:858:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | @@ -2346,8 +2639,10 @@ inferType | main.rs:858:39:858:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:859:18:859:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:859:18:859:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:859:18:859:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:859:18:859:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:860:13:860:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:860:17:860:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | @@ -2356,8 +2651,10 @@ inferType | main.rs:860:37:860:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:861:18:861:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:861:18:861:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:861:18:861:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:861:18:861:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:861:26:861:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:862:13:862:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:862:17:862:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | @@ -2366,8 +2663,10 @@ inferType | main.rs:862:39:862:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:863:18:863:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:863:18:863:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:863:18:863:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:863:18:863:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:863:26:863:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:864:13:864:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:864:17:864:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | @@ -2376,8 +2675,10 @@ inferType | main.rs:864:39:864:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:865:18:865:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:865:18:865:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:865:18:865:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:865:18:865:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:865:26:865:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:876:19:876:22 | SelfParam | | main.rs:870:5:873:5 | Wrapper | | main.rs:876:19:876:22 | SelfParam | A | main.rs:875:10:875:10 | A | @@ -2449,12 +2750,15 @@ inferType | main.rs:983:20:983:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | | main.rs:983:43:985:9 | { ... } | | main.rs:924:5:925:14 | S2 | | main.rs:984:13:984:14 | S2 | | main.rs:924:5:925:14 | S2 | +| main.rs:988:16:1016:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:989:13:989:14 | x1 | | main.rs:921:5:922:13 | S | | main.rs:989:18:989:18 | S | | main.rs:921:5:922:13 | S | | main.rs:991:18:991:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:991:18:991:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:991:18:991:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:991:18:991:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:991:18:991:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:991:18:991:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:991:26:991:27 | x1 | | main.rs:921:5:922:13 | S | | main.rs:991:26:991:32 | x1.m1() | | main.rs:927:5:928:14 | AT | | main.rs:993:13:993:14 | x2 | | main.rs:921:5:922:13 | S | @@ -2464,15 +2768,19 @@ inferType | main.rs:995:17:995:23 | x2.m2() | | main.rs:927:5:928:14 | AT | | main.rs:996:18:996:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:996:18:996:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:996:18:996:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:996:18:996:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:996:18:996:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:996:18:996:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:996:26:996:26 | y | | main.rs:927:5:928:14 | AT | | main.rs:998:13:998:14 | x3 | | main.rs:921:5:922:13 | S | | main.rs:998:18:998:18 | S | | main.rs:921:5:922:13 | S | | main.rs:1000:18:1000:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1000:18:1000:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1000:18:1000:43 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1000:18:1000:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1000:18:1000:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1000:18:1000:43 | { ... } | | file://:0:0:0:0 | () | | main.rs:1000:26:1000:27 | x3 | | main.rs:921:5:922:13 | S | | main.rs:1000:26:1000:34 | x3.put(...) | | main.rs:870:5:873:5 | Wrapper | | main.rs:1000:26:1000:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | @@ -2480,8 +2788,10 @@ inferType | main.rs:1000:33:1000:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1003:18:1003:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1003:18:1003:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1003:18:1003:49 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1003:18:1003:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1003:18:1003:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1003:18:1003:49 | { ... } | | file://:0:0:0:0 | () | | main.rs:1003:26:1003:27 | x3 | | main.rs:921:5:922:13 | S | | main.rs:1003:26:1003:40 | x3.putTwo(...) | | main.rs:870:5:873:5 | Wrapper | | main.rs:1003:26:1003:40 | x3.putTwo(...) | A | main.rs:941:36:941:50 | AssociatedParam | @@ -2491,14 +2801,18 @@ inferType | main.rs:1005:20:1005:20 | S | | main.rs:921:5:922:13 | S | | main.rs:1006:18:1006:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1006:18:1006:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1006:18:1006:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1006:18:1006:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1006:18:1006:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1006:18:1006:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1008:13:1008:14 | x5 | | main.rs:924:5:925:14 | S2 | | main.rs:1008:18:1008:19 | S2 | | main.rs:924:5:925:14 | S2 | | main.rs:1009:18:1009:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1009:18:1009:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1009:18:1009:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1009:18:1009:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1009:18:1009:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1009:18:1009:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1009:26:1009:27 | x5 | | main.rs:924:5:925:14 | S2 | | main.rs:1009:26:1009:32 | x5.m1() | | main.rs:870:5:873:5 | Wrapper | | main.rs:1009:26:1009:32 | x5.m1() | A | main.rs:924:5:925:14 | S2 | @@ -2506,8 +2820,10 @@ inferType | main.rs:1010:18:1010:19 | S2 | | main.rs:924:5:925:14 | S2 | | main.rs:1011:18:1011:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1011:18:1011:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1011:18:1011:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1011:18:1011:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1011:18:1011:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1011:18:1011:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1011:26:1011:27 | x6 | | main.rs:924:5:925:14 | S2 | | main.rs:1011:26:1011:32 | x6.m2() | | main.rs:870:5:873:5 | Wrapper | | main.rs:1011:26:1011:32 | x6.m2() | A | main.rs:924:5:925:14 | S2 | @@ -2529,20 +2845,26 @@ inferType | main.rs:1037:23:1037:27 | SelfParam | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | | main.rs:1037:30:1037:31 | c1 | | main.rs:1021:9:1021:21 | Content | | main.rs:1037:49:1037:50 | c2 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1037:68:1040:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1038:13:1038:16 | self | | file://:0:0:0:0 | & | | main.rs:1038:13:1038:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | +| main.rs:1038:13:1038:27 | self.insert(...) | | file://:0:0:0:0 | () | | main.rs:1038:25:1038:26 | c1 | | main.rs:1021:9:1021:21 | Content | | main.rs:1039:13:1039:16 | self | | file://:0:0:0:0 | & | | main.rs:1039:13:1039:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | +| main.rs:1039:13:1039:27 | self.insert(...) | | file://:0:0:0:0 | () | | main.rs:1039:25:1039:26 | c2 | | main.rs:1021:9:1021:21 | Content | | main.rs:1047:19:1047:23 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1047:19:1047:23 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | | main.rs:1047:19:1047:23 | SelfParam | &T.T | main.rs:1045:10:1045:10 | T | | main.rs:1047:26:1047:33 | _content | | main.rs:1045:10:1045:10 | T | +| main.rs:1047:51:1049:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1048:22:1048:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | | main.rs:1048:22:1048:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1048:22:1048:42 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1048:22:1048:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1048:22:1048:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1048:22:1048:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:1054:24:1054:28 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1054:24:1054:28 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | | main.rs:1054:24:1054:28 | SelfParam | &T.T | main.rs:1052:10:1052:17 | T | @@ -2567,13 +2889,17 @@ inferType | main.rs:1063:45:1063:46 | c1 | | main.rs:1021:9:1021:21 | Content | | main.rs:1063:61:1063:62 | c2 | | main.rs:1021:9:1021:21 | Content | | main.rs:1063:77:1063:78 | c3 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1063:93:1066:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1064:9:1064:12 | item | | file://:0:0:0:0 | & | | main.rs:1064:9:1064:12 | item | &T | main.rs:1063:21:1063:32 | T | +| main.rs:1064:9:1064:23 | item.insert(...) | | file://:0:0:0:0 | () | | main.rs:1064:21:1064:22 | c1 | | main.rs:1021:9:1021:21 | Content | | main.rs:1065:9:1065:12 | item | | file://:0:0:0:0 | & | | main.rs:1065:9:1065:12 | item | &T | main.rs:1063:21:1063:32 | T | +| main.rs:1065:9:1065:31 | item.insert_two(...) | | file://:0:0:0:0 | () | | main.rs:1065:25:1065:26 | c2 | | main.rs:1021:9:1021:21 | Content | | main.rs:1065:29:1065:30 | c3 | | main.rs:1021:9:1021:21 | Content | +| main.rs:1068:15:1074:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1069:13:1069:17 | item1 | | main.rs:1043:5:1043:24 | MyType | | main.rs:1069:13:1069:17 | item1 | T | {EXTERNAL LOCATION} | i64 | | main.rs:1069:21:1069:33 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | @@ -2605,6 +2931,7 @@ inferType | main.rs:1093:17:1093:32 | ...::C2 {...} | A | main.rs:1089:10:1089:10 | T | | main.rs:1093:30:1093:30 | a | | main.rs:1089:10:1089:10 | T | | main.rs:1093:37:1093:37 | a | | main.rs:1089:10:1089:10 | T | +| main.rs:1098:16:1104:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1099:13:1099:13 | x | | main.rs:1078:5:1082:5 | MyEnum | | main.rs:1099:13:1099:13 | x | A | main.rs:1084:5:1085:14 | S1 | | main.rs:1099:17:1099:30 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | @@ -2617,15 +2944,19 @@ inferType | main.rs:1100:33:1100:34 | S2 | | main.rs:1086:5:1087:14 | S2 | | main.rs:1102:18:1102:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1102:18:1102:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1102:18:1102:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1102:18:1102:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1102:18:1102:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1102:18:1102:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1102:26:1102:26 | x | | main.rs:1078:5:1082:5 | MyEnum | | main.rs:1102:26:1102:26 | x | A | main.rs:1084:5:1085:14 | S1 | | main.rs:1102:26:1102:31 | x.m1() | | main.rs:1084:5:1085:14 | S1 | | main.rs:1103:18:1103:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1103:18:1103:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1103:18:1103:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1103:18:1103:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1103:18:1103:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1103:18:1103:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1103:26:1103:26 | y | | main.rs:1078:5:1082:5 | MyEnum | | main.rs:1103:26:1103:26 | y | A | main.rs:1086:5:1087:14 | S2 | | main.rs:1103:26:1103:31 | y.m1() | | main.rs:1086:5:1087:14 | S2 | @@ -2684,6 +3015,7 @@ inferType | main.rs:1177:9:1177:9 | x | | main.rs:1176:26:1176:41 | T2 | | main.rs:1177:9:1177:14 | x.m1() | | main.rs:1176:22:1176:23 | T1 | | main.rs:1180:56:1180:56 | x | | main.rs:1180:39:1180:53 | T | +| main.rs:1180:62:1184:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1182:13:1182:13 | a | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1182:13:1182:13 | a | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1182:17:1182:17 | x | | main.rs:1180:39:1180:53 | T | @@ -2691,10 +3023,13 @@ inferType | main.rs:1182:17:1182:22 | x.m1() | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1183:18:1183:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1183:18:1183:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1183:18:1183:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1183:18:1183:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1183:18:1183:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1183:18:1183:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1183:26:1183:26 | a | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1183:26:1183:26 | a | A | main.rs:1118:5:1119:14 | S1 | +| main.rs:1186:16:1210:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1187:13:1187:13 | x | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1187:13:1187:13 | x | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1187:17:1187:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | @@ -2707,15 +3042,19 @@ inferType | main.rs:1188:30:1188:31 | S2 | | main.rs:1120:5:1121:14 | S2 | | main.rs:1190:18:1190:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1190:18:1190:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1190:18:1190:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1190:18:1190:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1190:18:1190:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1190:18:1190:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1190:26:1190:26 | x | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1190:26:1190:26 | x | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1190:26:1190:31 | x.m1() | | main.rs:1118:5:1119:14 | S1 | | main.rs:1191:18:1191:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1191:18:1191:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1191:18:1191:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1191:18:1191:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1191:18:1191:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1191:18:1191:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1191:26:1191:26 | y | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1191:26:1191:26 | y | A | main.rs:1120:5:1121:14 | S2 | | main.rs:1191:26:1191:31 | y.m1() | | main.rs:1120:5:1121:14 | S2 | @@ -2731,15 +3070,19 @@ inferType | main.rs:1194:30:1194:31 | S2 | | main.rs:1120:5:1121:14 | S2 | | main.rs:1196:18:1196:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1196:18:1196:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1196:18:1196:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1196:18:1196:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1196:18:1196:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1196:18:1196:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1196:26:1196:26 | x | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1196:26:1196:26 | x | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1196:26:1196:31 | x.m2() | | main.rs:1118:5:1119:14 | S1 | | main.rs:1197:18:1197:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1197:18:1197:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1197:18:1197:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1197:18:1197:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1197:18:1197:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1197:18:1197:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1197:26:1197:26 | y | | main.rs:1108:5:1111:5 | MyThing | | main.rs:1197:26:1197:26 | y | A | main.rs:1120:5:1121:14 | S2 | | main.rs:1197:26:1197:31 | y.m2() | | main.rs:1120:5:1121:14 | S2 | @@ -2755,15 +3098,19 @@ inferType | main.rs:1200:31:1200:32 | S2 | | main.rs:1120:5:1121:14 | S2 | | main.rs:1202:18:1202:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1202:18:1202:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1202:18:1202:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1202:18:1202:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1202:18:1202:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1202:18:1202:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1202:26:1202:26 | x | | main.rs:1113:5:1116:5 | MyThing2 | | main.rs:1202:26:1202:26 | x | A | main.rs:1118:5:1119:14 | S1 | | main.rs:1202:26:1202:31 | x.m3() | | main.rs:1118:5:1119:14 | S1 | | main.rs:1203:18:1203:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1203:18:1203:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1203:18:1203:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1203:18:1203:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1203:18:1203:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1203:18:1203:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1203:26:1203:26 | y | | main.rs:1113:5:1116:5 | MyThing2 | | main.rs:1203:26:1203:26 | y | A | main.rs:1120:5:1121:14 | S2 | | main.rs:1203:26:1203:31 | y.m3() | | main.rs:1120:5:1121:14 | S2 | @@ -2800,12 +3147,15 @@ inferType | main.rs:1239:5:1241:5 | { ... } | | main.rs:1236:17:1236:18 | T2 | | main.rs:1240:9:1240:9 | x | | main.rs:1236:13:1236:14 | T1 | | main.rs:1240:9:1240:16 | x.into() | | main.rs:1236:17:1236:18 | T2 | +| main.rs:1243:16:1259:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1244:13:1244:13 | x | | main.rs:1216:5:1217:14 | S1 | | main.rs:1244:17:1244:18 | S1 | | main.rs:1216:5:1217:14 | S1 | | main.rs:1245:18:1245:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1245:18:1245:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1245:18:1245:31 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1245:18:1245:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1245:18:1245:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1245:18:1245:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1245:26:1245:31 | id(...) | | file://:0:0:0:0 | & | | main.rs:1245:26:1245:31 | id(...) | &T | main.rs:1216:5:1217:14 | S1 | | main.rs:1245:29:1245:30 | &x | | file://:0:0:0:0 | & | @@ -2815,8 +3165,10 @@ inferType | main.rs:1247:17:1247:18 | S1 | | main.rs:1216:5:1217:14 | S1 | | main.rs:1248:18:1248:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1248:18:1248:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1248:18:1248:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1248:18:1248:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1248:18:1248:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1248:18:1248:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:1248:26:1248:37 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:1248:26:1248:37 | id::<...>(...) | &T | main.rs:1216:5:1217:14 | S1 | | main.rs:1248:35:1248:36 | &x | | file://:0:0:0:0 | & | @@ -2828,8 +3180,10 @@ inferType | main.rs:1250:17:1250:18 | S1 | | main.rs:1222:5:1222:25 | dyn Trait | | main.rs:1252:18:1252:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1252:18:1252:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1252:18:1252:44 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1252:18:1252:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1252:18:1252:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1252:18:1252:44 | { ... } | | file://:0:0:0:0 | () | | main.rs:1252:26:1252:44 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:1252:26:1252:44 | id::<...>(...) | &T | main.rs:1222:5:1222:25 | dyn Trait | | main.rs:1252:42:1252:43 | &x | | file://:0:0:0:0 | & | @@ -2850,6 +3204,7 @@ inferType | main.rs:1272:22:1272:25 | SelfParam | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1272:22:1272:25 | SelfParam | Snd | main.rs:1271:15:1271:17 | Snd | | main.rs:1272:35:1279:9 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1273:13:1278:13 | match self { ... } | | file://:0:0:0:0 | () | | main.rs:1273:13:1278:13 | match self { ... } | | main.rs:1271:15:1271:17 | Snd | | main.rs:1273:19:1273:22 | self | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1273:19:1273:22 | self | Fst | main.rs:1271:10:1271:12 | Fst | @@ -2857,26 +3212,30 @@ inferType | main.rs:1274:17:1274:38 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1274:17:1274:38 | ...::PairNone(...) | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1274:17:1274:38 | ...::PairNone(...) | Snd | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:43:1274:82 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1274:43:1274:82 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | | main.rs:1274:50:1274:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | | main.rs:1274:50:1274:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | | main.rs:1274:50:1274:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1274:50:1274:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1274:50:1274:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1274:50:1274:81 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1274:50:1274:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:50:1274:81 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:50:1274:81 | { ... } | | file://:0:0:0:0 | () | | main.rs:1275:17:1275:38 | ...::PairFst(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1275:17:1275:38 | ...::PairFst(...) | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1275:17:1275:38 | ...::PairFst(...) | Snd | main.rs:1271:15:1271:17 | Snd | | main.rs:1275:37:1275:37 | _ | | main.rs:1271:10:1271:12 | Fst | +| main.rs:1275:43:1275:81 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1275:43:1275:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | | main.rs:1275:50:1275:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | | main.rs:1275:50:1275:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | | main.rs:1275:50:1275:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1275:50:1275:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1275:50:1275:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1275:50:1275:80 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1275:50:1275:80 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1275:50:1275:80 | { ... } | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:50:1275:80 | { ... } | | file://:0:0:0:0 | () | | main.rs:1276:17:1276:40 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1276:17:1276:40 | ...::PairSnd(...) | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1276:17:1276:40 | ...::PairSnd(...) | Snd | main.rs:1271:15:1271:17 | Snd | @@ -2893,6 +3252,7 @@ inferType | main.rs:1303:10:1303:10 | t | Snd | main.rs:1263:5:1269:5 | PairOption | | main.rs:1303:10:1303:10 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | | main.rs:1303:10:1303:10 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1303:30:1306:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1304:13:1304:13 | x | | main.rs:1288:5:1289:14 | S3 | | main.rs:1304:17:1304:17 | t | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1304:17:1304:17 | t | Fst | main.rs:1285:5:1286:14 | S2 | @@ -2905,8 +3265,10 @@ inferType | main.rs:1304:17:1304:41 | ... .unwrapSnd() | | main.rs:1288:5:1289:14 | S3 | | main.rs:1305:18:1305:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1305:18:1305:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1305:18:1305:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1305:18:1305:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1305:18:1305:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1305:18:1305:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1305:26:1305:26 | x | | main.rs:1288:5:1289:14 | S3 | | main.rs:1320:22:1320:25 | SelfParam | | main.rs:1318:5:1321:5 | Self [trait TraitWithAssocType] | | main.rs:1328:22:1328:25 | SelfParam | | main.rs:1316:5:1316:28 | GenS | @@ -2920,6 +3282,7 @@ inferType | main.rs:1329:16:1329:19 | self | | main.rs:1316:5:1316:28 | GenS | | main.rs:1329:16:1329:19 | self | GenT | main.rs:1323:10:1323:15 | Output | | main.rs:1329:16:1329:21 | self.0 | | main.rs:1323:10:1323:15 | Output | +| main.rs:1333:16:1355:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1335:13:1335:14 | p1 | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1335:13:1335:14 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | | main.rs:1335:13:1335:14 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | @@ -2930,8 +3293,10 @@ inferType | main.rs:1335:51:1335:52 | S2 | | main.rs:1285:5:1286:14 | S2 | | main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1336:18:1336:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1336:18:1336:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1336:18:1336:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1336:18:1336:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1336:26:1336:27 | p1 | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1336:26:1336:27 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | | main.rs:1336:26:1336:27 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | @@ -2943,8 +3308,10 @@ inferType | main.rs:1339:26:1339:47 | ...::PairNone(...) | Snd | main.rs:1285:5:1286:14 | S2 | | main.rs:1340:18:1340:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1340:18:1340:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1340:18:1340:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1340:18:1340:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1340:18:1340:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1340:18:1340:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1340:26:1340:27 | p2 | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1340:26:1340:27 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | | main.rs:1340:26:1340:27 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | @@ -2957,8 +3324,10 @@ inferType | main.rs:1343:54:1343:55 | S3 | | main.rs:1288:5:1289:14 | S3 | | main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1344:18:1344:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1344:18:1344:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1344:18:1344:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1344:18:1344:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1344:26:1344:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1344:26:1344:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | | main.rs:1344:26:1344:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | @@ -2970,11 +3339,14 @@ inferType | main.rs:1347:35:1347:56 | ...::PairNone(...) | Snd | main.rs:1288:5:1289:14 | S3 | | main.rs:1348:18:1348:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1348:18:1348:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1348:18:1348:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1348:18:1348:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1348:18:1348:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1348:18:1348:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1348:26:1348:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1348:26:1348:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | | main.rs:1348:26:1348:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | +| main.rs:1350:9:1350:55 | g(...) | | file://:0:0:0:0 | () | | main.rs:1350:11:1350:54 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1350:11:1350:54 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | | main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd | main.rs:1263:5:1269:5 | PairOption | @@ -3005,13 +3377,16 @@ inferType | main.rs:1369:21:1369:29 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1369:21:1369:29 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | | main.rs:1369:32:1369:36 | value | | main.rs:1365:19:1365:19 | S | +| main.rs:1369:42:1371:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | | main.rs:1370:13:1370:16 | self | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | +| main.rs:1370:13:1370:27 | self.set(...) | | file://:0:0:0:0 | () | | main.rs:1370:22:1370:26 | value | | main.rs:1365:19:1365:19 | S | | main.rs:1376:16:1376:24 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1376:16:1376:24 | SelfParam | &T | main.rs:1359:5:1363:5 | MyOption | | main.rs:1376:16:1376:24 | SelfParam | &T.T | main.rs:1374:10:1374:10 | T | | main.rs:1376:27:1376:31 | value | | main.rs:1374:10:1374:10 | T | +| main.rs:1376:37:1376:38 | { ... } | | file://:0:0:0:0 | () | | main.rs:1380:26:1382:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1380:26:1382:9 | { ... } | T | main.rs:1379:10:1379:10 | T | | main.rs:1381:13:1381:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | @@ -3038,14 +3413,17 @@ inferType | main.rs:1389:34:1389:34 | x | T | main.rs:1385:10:1385:10 | T | | main.rs:1389:40:1389:40 | x | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1389:40:1389:40 | x | T | main.rs:1385:10:1385:10 | T | +| main.rs:1397:16:1443:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1398:13:1398:14 | x1 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1398:13:1398:14 | x1 | T | main.rs:1394:5:1395:13 | S | | main.rs:1398:18:1398:37 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1398:18:1398:37 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1399:18:1399:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1399:18:1399:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1399:18:1399:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1399:18:1399:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1399:18:1399:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1399:18:1399:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1399:26:1399:27 | x1 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1399:26:1399:27 | x1 | T | main.rs:1394:5:1395:13 | S | | main.rs:1401:17:1401:18 | x2 | | main.rs:1359:5:1363:5 | MyOption | @@ -3054,26 +3432,33 @@ inferType | main.rs:1401:22:1401:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1402:9:1402:10 | x2 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1402:9:1402:10 | x2 | T | main.rs:1394:5:1395:13 | S | +| main.rs:1402:9:1402:17 | x2.set(...) | | file://:0:0:0:0 | () | | main.rs:1402:16:1402:16 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1403:18:1403:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1403:18:1403:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1403:18:1403:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1403:18:1403:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1403:18:1403:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1403:18:1403:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1403:26:1403:27 | x2 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1403:26:1403:27 | x2 | T | main.rs:1394:5:1395:13 | S | | main.rs:1406:17:1406:18 | x3 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1406:22:1406:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1407:9:1407:10 | x3 | | main.rs:1359:5:1363:5 | MyOption | +| main.rs:1407:9:1407:22 | x3.call_set(...) | | file://:0:0:0:0 | () | | main.rs:1407:21:1407:21 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1408:18:1408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1408:18:1408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1408:18:1408:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1408:18:1408:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1408:18:1408:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1408:18:1408:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1408:26:1408:27 | x3 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1410:17:1410:18 | x4 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1410:17:1410:18 | x4 | T | main.rs:1394:5:1395:13 | S | | main.rs:1410:22:1410:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1410:22:1410:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | +| main.rs:1411:9:1411:33 | ...::set(...) | | file://:0:0:0:0 | () | | main.rs:1411:23:1411:29 | &mut x4 | | file://:0:0:0:0 | & | | main.rs:1411:23:1411:29 | &mut x4 | &T | main.rs:1359:5:1363:5 | MyOption | | main.rs:1411:23:1411:29 | &mut x4 | &T.T | main.rs:1394:5:1395:13 | S | @@ -3082,8 +3467,10 @@ inferType | main.rs:1411:32:1411:32 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1412:18:1412:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1412:18:1412:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1412:18:1412:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1412:18:1412:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1412:18:1412:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1412:18:1412:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1412:26:1412:27 | x4 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1412:26:1412:27 | x4 | T | main.rs:1394:5:1395:13 | S | | main.rs:1414:13:1414:14 | x5 | | main.rs:1359:5:1363:5 | MyOption | @@ -3096,8 +3483,10 @@ inferType | main.rs:1414:35:1414:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1415:18:1415:37 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1415:18:1415:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1415:18:1415:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1415:18:1415:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:1415:26:1415:27 | x5 | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1415:26:1415:27 | x5 | T | main.rs:1359:5:1363:5 | MyOption | | main.rs:1415:26:1415:27 | x5 | T.T | main.rs:1394:5:1395:13 | S | @@ -3113,8 +3502,10 @@ inferType | main.rs:1417:35:1417:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1418:18:1418:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1418:18:1418:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1418:18:1418:61 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1418:18:1418:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1418:18:1418:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1418:18:1418:61 | { ... } | | file://:0:0:0:0 | () | | main.rs:1418:26:1418:61 | ...::flatten(...) | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1418:26:1418:61 | ...::flatten(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1418:59:1418:60 | x6 | | main.rs:1359:5:1363:5 | MyOption | @@ -3138,8 +3529,10 @@ inferType | main.rs:1424:30:1424:30 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1426:18:1426:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1426:18:1426:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1426:26:1426:32 | from_if | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1426:26:1426:32 | from_if | T | main.rs:1394:5:1395:13 | S | | main.rs:1429:13:1429:22 | from_match | | main.rs:1359:5:1363:5 | MyOption | @@ -3158,17 +3551,22 @@ inferType | main.rs:1431:39:1431:39 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1433:18:1433:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1433:18:1433:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1433:18:1433:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1433:18:1433:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1433:18:1433:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1433:18:1433:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1433:26:1433:35 | from_match | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1433:26:1433:35 | from_match | T | main.rs:1394:5:1395:13 | S | | main.rs:1436:13:1436:21 | from_loop | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1436:13:1436:21 | from_loop | T | main.rs:1394:5:1395:13 | S | | main.rs:1436:25:1441:9 | loop { ... } | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1436:25:1441:9 | loop { ... } | T | main.rs:1394:5:1395:13 | S | +| main.rs:1436:30:1441:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1437:13:1439:13 | if ... {...} | | file://:0:0:0:0 | () | | main.rs:1437:16:1437:16 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1437:16:1437:20 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:1437:20:1437:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:22:1439:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:1438:23:1438:40 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1438:23:1438:40 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | | main.rs:1440:19:1440:37 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | @@ -3176,8 +3574,10 @@ inferType | main.rs:1440:36:1440:36 | S | | main.rs:1394:5:1395:13 | S | | main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1442:18:1442:34 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1442:18:1442:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1442:18:1442:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1442:18:1442:34 | { ... } | | file://:0:0:0:0 | () | | main.rs:1442:26:1442:34 | from_loop | | main.rs:1359:5:1363:5 | MyOption | | main.rs:1442:26:1442:34 | from_loop | T | main.rs:1394:5:1395:13 | S | | main.rs:1460:15:1460:18 | SelfParam | | main.rs:1448:5:1449:19 | S | @@ -3233,6 +3633,7 @@ inferType | main.rs:1487:14:1487:18 | * ... | | main.rs:1454:5:1457:5 | MyInt | | main.rs:1487:15:1487:18 | self | | file://:0:0:0:0 | & | | main.rs:1487:15:1487:18 | self | &T | main.rs:1454:5:1457:5 | MyInt | +| main.rs:1491:16:1541:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1492:13:1492:14 | x1 | | main.rs:1448:5:1449:19 | S | | main.rs:1492:13:1492:14 | x1 | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1492:18:1492:22 | S(...) | | main.rs:1448:5:1449:19 | S | @@ -3240,8 +3641,10 @@ inferType | main.rs:1492:20:1492:21 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1493:18:1493:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1493:18:1493:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1493:18:1493:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1493:18:1493:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1493:18:1493:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1493:18:1493:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1493:26:1493:27 | x1 | | main.rs:1448:5:1449:19 | S | | main.rs:1493:26:1493:27 | x1 | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1493:26:1493:32 | x1.m1() | | main.rs:1451:5:1452:14 | S2 | @@ -3252,16 +3655,20 @@ inferType | main.rs:1495:20:1495:21 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1497:18:1497:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1497:18:1497:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1497:18:1497:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1497:18:1497:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1497:18:1497:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1497:18:1497:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1497:26:1497:27 | x2 | | main.rs:1448:5:1449:19 | S | | main.rs:1497:26:1497:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1497:26:1497:32 | x2.m2() | | file://:0:0:0:0 | & | | main.rs:1497:26:1497:32 | x2.m2() | &T | main.rs:1451:5:1452:14 | S2 | | main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1498:18:1498:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1498:18:1498:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1498:18:1498:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1498:18:1498:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1498:26:1498:27 | x2 | | main.rs:1448:5:1449:19 | S | | main.rs:1498:26:1498:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1498:26:1498:32 | x2.m3() | | file://:0:0:0:0 | & | @@ -3273,8 +3680,10 @@ inferType | main.rs:1500:20:1500:21 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1502:18:1502:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1502:18:1502:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1502:18:1502:41 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1502:18:1502:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1502:18:1502:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1502:18:1502:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:1502:26:1502:41 | ...::m2(...) | | file://:0:0:0:0 | & | | main.rs:1502:26:1502:41 | ...::m2(...) | &T | main.rs:1451:5:1452:14 | S2 | | main.rs:1502:38:1502:40 | &x3 | | file://:0:0:0:0 | & | @@ -3284,8 +3693,10 @@ inferType | main.rs:1502:39:1502:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1503:18:1503:41 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1503:18:1503:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1503:18:1503:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1503:18:1503:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:1503:26:1503:41 | ...::m3(...) | | file://:0:0:0:0 | & | | main.rs:1503:26:1503:41 | ...::m3(...) | &T | main.rs:1451:5:1452:14 | S2 | | main.rs:1503:38:1503:40 | &x3 | | file://:0:0:0:0 | & | @@ -3304,8 +3715,10 @@ inferType | main.rs:1505:21:1505:22 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1507:18:1507:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1507:18:1507:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1507:18:1507:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1507:18:1507:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1507:18:1507:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1507:18:1507:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1507:26:1507:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1507:26:1507:27 | x4 | &T | main.rs:1448:5:1449:19 | S | | main.rs:1507:26:1507:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | @@ -3313,8 +3726,10 @@ inferType | main.rs:1507:26:1507:32 | x4.m2() | &T | main.rs:1451:5:1452:14 | S2 | | main.rs:1508:18:1508:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1508:18:1508:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1508:18:1508:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1508:18:1508:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1508:18:1508:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1508:18:1508:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1508:26:1508:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1508:26:1508:27 | x4 | &T | main.rs:1448:5:1449:19 | S | | main.rs:1508:26:1508:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | @@ -3331,16 +3746,20 @@ inferType | main.rs:1510:21:1510:22 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1512:18:1512:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1512:18:1512:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1512:18:1512:32 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1512:18:1512:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1512:18:1512:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1512:18:1512:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1512:26:1512:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1512:26:1512:27 | x5 | &T | main.rs:1448:5:1449:19 | S | | main.rs:1512:26:1512:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | | main.rs:1512:26:1512:32 | x5.m1() | | main.rs:1451:5:1452:14 | S2 | | main.rs:1513:18:1513:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1513:18:1513:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1513:18:1513:29 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1513:18:1513:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1513:18:1513:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1513:18:1513:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:1513:26:1513:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1513:26:1513:27 | x5 | &T | main.rs:1448:5:1449:19 | S | | main.rs:1513:26:1513:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | @@ -3356,8 +3775,10 @@ inferType | main.rs:1515:21:1515:22 | S2 | | main.rs:1451:5:1452:14 | S2 | | main.rs:1518:18:1518:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1518:18:1518:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1518:18:1518:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1518:18:1518:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1518:18:1518:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1518:18:1518:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1518:26:1518:30 | (...) | | main.rs:1448:5:1449:19 | S | | main.rs:1518:26:1518:30 | (...) | T | main.rs:1451:5:1452:14 | S2 | | main.rs:1518:26:1518:35 | ... .m1() | | main.rs:1451:5:1452:14 | S2 | @@ -3384,8 +3805,10 @@ inferType | main.rs:1523:17:1523:23 | x7.m1() | &T | main.rs:1451:5:1452:14 | S2 | | main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1524:18:1524:27 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1524:18:1524:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1524:18:1524:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1524:18:1524:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1524:26:1524:27 | x7 | | main.rs:1448:5:1449:19 | S | | main.rs:1524:26:1524:27 | x7 | T | file://:0:0:0:0 | & | | main.rs:1524:26:1524:27 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | @@ -3411,8 +3834,10 @@ inferType | main.rs:1534:17:1534:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1535:18:1535:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1535:18:1535:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1535:18:1535:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1535:18:1535:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1535:26:1535:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1538:13:1538:20 | my_thing | | file://:0:0:0:0 | & | | main.rs:1538:13:1538:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | @@ -3427,8 +3852,10 @@ inferType | main.rs:1539:17:1539:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1540:18:1540:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1540:18:1540:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1540:18:1540:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1540:18:1540:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1540:26:1540:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1547:16:1547:20 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1547:16:1547:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | @@ -3446,6 +3873,7 @@ inferType | main.rs:1559:36:1561:9 | { ... } | &T | main.rs:1555:5:1555:20 | MyStruct | | main.rs:1560:13:1560:16 | self | | file://:0:0:0:0 | & | | main.rs:1560:13:1560:16 | self | &T | main.rs:1555:5:1555:20 | MyStruct | +| main.rs:1564:16:1567:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1565:13:1565:13 | x | | main.rs:1555:5:1555:20 | MyStruct | | main.rs:1565:17:1565:24 | MyStruct | | main.rs:1555:5:1555:20 | MyStruct | | main.rs:1566:9:1566:9 | x | | main.rs:1555:5:1555:20 | MyStruct | @@ -3460,6 +3888,7 @@ inferType | main.rs:1577:13:1577:16 | self | | file://:0:0:0:0 | & | | main.rs:1577:13:1577:16 | self | &T | main.rs:1573:5:1573:26 | MyStruct | | main.rs:1577:13:1577:16 | self | &T.T | main.rs:1575:10:1575:10 | T | +| main.rs:1581:16:1584:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1582:13:1582:13 | x | | main.rs:1573:5:1573:26 | MyStruct | | main.rs:1582:13:1582:13 | x | T | main.rs:1571:5:1571:13 | S | | main.rs:1582:17:1582:27 | MyStruct(...) | | main.rs:1573:5:1573:26 | MyStruct | @@ -3472,6 +3901,7 @@ inferType | main.rs:1583:9:1583:15 | x.foo() | &T.T | main.rs:1571:5:1571:13 | S | | main.rs:1594:17:1594:25 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1594:17:1594:25 | SelfParam | &T | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1594:28:1596:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1595:13:1595:16 | self | | file://:0:0:0:0 | & | | main.rs:1595:13:1595:16 | self | &T | main.rs:1588:5:1591:5 | MyFlag | | main.rs:1595:13:1595:21 | self.bool | | {EXTERNAL LOCATION} | bool | @@ -3543,6 +3973,7 @@ inferType | main.rs:1615:15:1615:16 | &x | &T.&T | main.rs:1599:5:1599:13 | S | | main.rs:1615:16:1615:16 | x | | file://:0:0:0:0 | & | | main.rs:1615:16:1615:16 | x | &T | main.rs:1599:5:1599:13 | S | +| main.rs:1619:16:1632:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1620:13:1620:13 | x | | main.rs:1599:5:1599:13 | S | | main.rs:1620:17:1620:20 | S {...} | | main.rs:1599:5:1599:13 | S | | main.rs:1621:9:1621:9 | x | | main.rs:1599:5:1599:13 | S | @@ -3568,13 +3999,16 @@ inferType | main.rs:1625:21:1625:24 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1629:17:1629:20 | flag | | main.rs:1588:5:1591:5 | MyFlag | | main.rs:1629:24:1629:41 | ...::default(...) | | main.rs:1588:5:1591:5 | MyFlag | +| main.rs:1630:9:1630:31 | ...::flip(...) | | file://:0:0:0:0 | () | | main.rs:1630:22:1630:30 | &mut flag | | file://:0:0:0:0 | & | | main.rs:1630:22:1630:30 | &mut flag | &T | main.rs:1588:5:1591:5 | MyFlag | | main.rs:1630:27:1630:30 | flag | | main.rs:1588:5:1591:5 | MyFlag | | main.rs:1631:18:1631:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1631:18:1631:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1631:18:1631:29 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1631:18:1631:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1631:18:1631:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1631:18:1631:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:1631:26:1631:29 | flag | | main.rs:1588:5:1591:5 | MyFlag | | main.rs:1646:43:1649:5 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1646:43:1649:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | @@ -3653,14 +4087,18 @@ inferType | main.rs:1672:53:1675:9 | { ... } | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1673:22:1673:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1673:22:1673:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1673:22:1673:30 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1673:22:1673:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1673:22:1673:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1673:22:1673:30 | { ... } | | file://:0:0:0:0 | () | | main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1676:9:1676:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1676:9:1676:23 | ...::Err(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1676:9:1676:23 | ...::Err(...) | T | main.rs:1670:20:1670:27 | T | | main.rs:1676:21:1676:22 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1680:16:1696:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1681:9:1683:9 | if ... {...} | | file://:0:0:0:0 | () | | main.rs:1681:16:1681:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1681:16:1681:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1681:16:1681:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | @@ -3668,11 +4106,15 @@ inferType | main.rs:1681:37:1681:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1681:37:1681:52 | try_same_error(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1681:37:1681:52 | try_same_error(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1681:54:1683:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1682:22:1682:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1682:22:1682:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1682:22:1682:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1682:22:1682:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1682:22:1682:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1682:22:1682:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1682:30:1682:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1685:9:1687:9 | if ... {...} | | file://:0:0:0:0 | () | | main.rs:1685:16:1685:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1685:16:1685:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | | main.rs:1685:16:1685:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | @@ -3680,11 +4122,15 @@ inferType | main.rs:1685:37:1685:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1685:37:1685:55 | try_convert_error(...) | E | main.rs:1641:5:1642:14 | S2 | | main.rs:1685:37:1685:55 | try_convert_error(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1685:57:1687:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1686:22:1686:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1686:22:1686:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1686:22:1686:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1686:22:1686:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1686:22:1686:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1686:22:1686:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1686:30:1686:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1689:9:1691:9 | if ... {...} | | file://:0:0:0:0 | () | | main.rs:1689:16:1689:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1689:16:1689:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | | main.rs:1689:16:1689:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | @@ -3692,11 +4138,15 @@ inferType | main.rs:1689:37:1689:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1689:37:1689:49 | try_chained(...) | E | main.rs:1641:5:1642:14 | S2 | | main.rs:1689:37:1689:49 | try_chained(...) | T | main.rs:1638:5:1639:14 | S1 | +| main.rs:1689:51:1691:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1690:22:1690:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1690:22:1690:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1690:22:1690:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1690:22:1690:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1690:22:1690:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1690:22:1690:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1690:30:1690:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:9:1695:9 | if ... {...} | | file://:0:0:0:0 | () | | main.rs:1693:16:1693:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1693:16:1693:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1693:16:1693:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | @@ -3708,11 +4158,15 @@ inferType | main.rs:1693:49:1693:62 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | | main.rs:1693:49:1693:62 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | | main.rs:1693:60:1693:61 | S1 | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1693:65:1695:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1694:22:1694:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1694:22:1694:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1694:22:1694:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1694:22:1694:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1694:22:1694:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1694:22:1694:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1694:30:1694:35 | result | | main.rs:1638:5:1639:14 | S1 | +| main.rs:1700:16:1710:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1701:13:1701:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1701:22:1701:22 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1702:13:1702:13 | y | | {EXTERNAL LOCATION} | i32 | @@ -3736,6 +4190,7 @@ inferType | main.rs:1708:17:1708:20 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1709:13:1709:13 | f | | {EXTERNAL LOCATION} | bool | | main.rs:1709:17:1709:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1715:16:1727:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1716:13:1716:13 | x | | {EXTERNAL LOCATION} | bool | | main.rs:1716:17:1716:20 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1716:17:1716:29 | ... && ... | | {EXTERNAL LOCATION} | bool | @@ -3749,12 +4204,15 @@ inferType | main.rs:1720:20:1720:21 | 34 | | {EXTERNAL LOCATION} | i32 | | main.rs:1720:20:1720:27 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:1720:26:1720:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:9:1725:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | | main.rs:1721:12:1721:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:17:1723:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1722:17:1722:17 | z | | file://:0:0:0:0 | () | | main.rs:1722:21:1722:27 | (...) | | file://:0:0:0:0 | () | | main.rs:1722:22:1722:22 | a | | {EXTERNAL LOCATION} | i32 | | main.rs:1722:22:1722:26 | ... = ... | | file://:0:0:0:0 | () | | main.rs:1722:26:1722:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1723:16:1725:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1724:13:1724:13 | a | | {EXTERNAL LOCATION} | i32 | | main.rs:1724:13:1724:17 | ... = ... | | file://:0:0:0:0 | () | | main.rs:1724:17:1724:17 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -3782,6 +4240,7 @@ inferType | main.rs:1758:23:1758:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1758:23:1758:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1758:34:1758:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1758:45:1761:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1759:13:1759:16 | self | | file://:0:0:0:0 | & | | main.rs:1759:13:1759:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1759:13:1759:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3811,6 +4270,7 @@ inferType | main.rs:1776:23:1776:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1776:23:1776:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1776:34:1776:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1776:45:1779:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1777:13:1777:16 | self | | file://:0:0:0:0 | & | | main.rs:1777:13:1777:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1777:13:1777:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3840,6 +4300,7 @@ inferType | main.rs:1793:23:1793:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1793:23:1793:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1793:34:1793:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1793:45:1796:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1794:13:1794:16 | self | | file://:0:0:0:0 | & | | main.rs:1794:13:1794:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1794:13:1794:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3869,6 +4330,7 @@ inferType | main.rs:1810:23:1810:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1810:23:1810:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1810:34:1810:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1810:45:1813:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | | main.rs:1811:13:1811:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1811:13:1811:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3898,6 +4360,7 @@ inferType | main.rs:1827:23:1827:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1827:23:1827:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1827:34:1827:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1827:45:1830:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1828:13:1828:16 | self | | file://:0:0:0:0 | & | | main.rs:1828:13:1828:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1828:13:1828:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3927,6 +4390,7 @@ inferType | main.rs:1844:26:1844:34 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1844:26:1844:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1844:37:1844:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1844:48:1847:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | | main.rs:1845:13:1845:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1845:13:1845:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3956,6 +4420,7 @@ inferType | main.rs:1861:25:1861:33 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1861:25:1861:33 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1861:36:1861:38 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1861:47:1864:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | | main.rs:1862:13:1862:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -3985,6 +4450,7 @@ inferType | main.rs:1878:26:1878:34 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1878:26:1878:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1878:37:1878:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | +| main.rs:1878:48:1881:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1879:13:1879:16 | self | | file://:0:0:0:0 | & | | main.rs:1879:13:1879:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1879:13:1879:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -4012,6 +4478,7 @@ inferType | main.rs:1895:23:1895:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1895:23:1895:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1895:34:1895:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1895:44:1898:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1896:13:1896:16 | self | | file://:0:0:0:0 | & | | main.rs:1896:13:1896:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1896:13:1896:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -4037,6 +4504,7 @@ inferType | main.rs:1912:23:1912:31 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1912:23:1912:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1912:34:1912:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1912:44:1915:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1913:13:1913:16 | self | | file://:0:0:0:0 | & | | main.rs:1913:13:1913:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | | main.rs:1913:13:1913:18 | self.x | | {EXTERNAL LOCATION} | i64 | @@ -4217,6 +4685,7 @@ inferType | main.rs:1971:9:1971:9 | a | | main.rs:1970:18:1970:23 | T | | main.rs:1971:9:1971:13 | ... + ... | | {EXTERNAL LOCATION} | Output | | main.rs:1971:13:1971:13 | b | | main.rs:1970:18:1970:23 | T | +| main.rs:1974:16:2105:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1978:13:1978:18 | i64_eq | | {EXTERNAL LOCATION} | bool | | main.rs:1978:22:1978:35 | (...) | | {EXTERNAL LOCATION} | bool | | main.rs:1978:23:1978:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | @@ -4498,6 +4967,7 @@ inferType | main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2104:53:2104:64 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | | main.rs:2114:18:2114:21 | SelfParam | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2114:24:2114:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2117:25:2119:5 | { ... } | | main.rs:2111:5:2111:14 | S1 | | main.rs:2118:9:2118:10 | S1 | | main.rs:2111:5:2111:14 | S1 | | main.rs:2121:41:2123:5 | { ... } | | main.rs:2121:16:2121:39 | impl ... | @@ -4506,6 +4976,7 @@ inferType | main.rs:2122:17:2122:18 | S1 | | main.rs:2111:5:2111:14 | S1 | | main.rs:2125:41:2127:5 | { ... } | | main.rs:2125:16:2125:39 | impl ... | | main.rs:2126:9:2126:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2126:9:2126:16 | { ... } | Output | file://:0:0:0:0 | () | | main.rs:2135:13:2135:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | | main.rs:2135:13:2135:42 | SelfParam | Ptr | file://:0:0:0:0 | & | | main.rs:2135:13:2135:42 | SelfParam | Ptr.&T | main.rs:2129:5:2129:14 | S2 | @@ -4519,17 +4990,22 @@ inferType | main.rs:2142:41:2144:5 | { ... } | | main.rs:2142:16:2142:39 | impl ... | | main.rs:2143:9:2143:10 | S2 | | main.rs:2129:5:2129:14 | S2 | | main.rs:2143:9:2143:10 | S2 | | main.rs:2142:16:2142:39 | impl ... | +| main.rs:2146:22:2154:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2147:9:2147:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | | main.rs:2147:9:2147:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | | main.rs:2147:9:2147:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2147:9:2147:22 | ... .f() | | file://:0:0:0:0 | () | | main.rs:2148:9:2148:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | | main.rs:2148:9:2148:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2148:9:2148:22 | ... .f() | | file://:0:0:0:0 | () | | main.rs:2149:9:2149:12 | f3(...) | | main.rs:2125:16:2125:39 | impl ... | | main.rs:2149:9:2149:18 | await ... | | file://:0:0:0:0 | () | | main.rs:2150:9:2150:12 | f4(...) | | main.rs:2142:16:2142:39 | impl ... | | main.rs:2150:9:2150:18 | await ... | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2150:9:2150:22 | ... .f() | | file://:0:0:0:0 | () | | main.rs:2151:9:2151:10 | S2 | | main.rs:2129:5:2129:14 | S2 | | main.rs:2151:9:2151:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2151:9:2151:20 | ... .f() | | file://:0:0:0:0 | () | | main.rs:2152:13:2152:13 | b | | {EXTERNAL LOCATION} | trait Future | | main.rs:2152:13:2152:13 | b | Output | main.rs:2111:5:2111:14 | S1 | | main.rs:2152:17:2152:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | @@ -4538,14 +5014,19 @@ inferType | main.rs:2153:9:2153:9 | b | | {EXTERNAL LOCATION} | trait Future | | main.rs:2153:9:2153:9 | b | Output | main.rs:2111:5:2111:14 | S1 | | main.rs:2153:9:2153:15 | await b | | main.rs:2111:5:2111:14 | S1 | +| main.rs:2153:9:2153:19 | ... .f() | | file://:0:0:0:0 | () | | main.rs:2164:15:2164:19 | SelfParam | | file://:0:0:0:0 | & | | main.rs:2164:15:2164:19 | SelfParam | &T | main.rs:2163:5:2165:5 | Self [trait Trait1] | +| main.rs:2164:22:2164:23 | { ... } | | file://:0:0:0:0 | () | | main.rs:2168:15:2168:19 | SelfParam | | file://:0:0:0:0 | & | | main.rs:2168:15:2168:19 | SelfParam | &T | main.rs:2167:5:2169:5 | Self [trait Trait2] | +| main.rs:2168:22:2168:23 | { ... } | | file://:0:0:0:0 | () | | main.rs:2172:15:2172:19 | SelfParam | | file://:0:0:0:0 | & | | main.rs:2172:15:2172:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | +| main.rs:2172:22:2172:23 | { ... } | | file://:0:0:0:0 | () | | main.rs:2176:15:2176:19 | SelfParam | | file://:0:0:0:0 | & | | main.rs:2176:15:2176:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | +| main.rs:2176:22:2176:23 | { ... } | | file://:0:0:0:0 | () | | main.rs:2179:37:2181:5 | { ... } | | main.rs:2179:16:2179:35 | impl ... + ... | | main.rs:2180:9:2180:10 | S1 | | main.rs:2158:5:2159:14 | S1 | | main.rs:2180:9:2180:10 | S1 | | main.rs:2179:16:2179:35 | impl ... + ... | @@ -4626,10 +5107,13 @@ inferType | main.rs:2220:51:2222:5 | { ... } | | main.rs:2220:23:2220:23 | A | | main.rs:2221:9:2221:9 | t | | main.rs:2220:29:2220:43 | impl ... | | main.rs:2221:9:2221:17 | t.get_a() | | main.rs:2220:23:2220:23 | A | +| main.rs:2224:16:2238:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2225:13:2225:13 | x | | main.rs:2179:16:2179:35 | impl ... + ... | | main.rs:2225:17:2225:20 | f1(...) | | main.rs:2179:16:2179:35 | impl ... + ... | | main.rs:2226:9:2226:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2226:9:2226:14 | x.f1() | | file://:0:0:0:0 | () | | main.rs:2227:9:2227:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | +| main.rs:2227:9:2227:14 | x.f2() | | file://:0:0:0:0 | () | | main.rs:2228:13:2228:13 | a | | main.rs:2200:28:2200:43 | impl ... | | main.rs:2228:17:2228:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | | main.rs:2229:13:2229:13 | b | | main.rs:2160:5:2160:14 | S2 | @@ -4681,12 +5165,14 @@ inferType | main.rs:2263:17:2263:25 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | | main.rs:2263:17:2263:25 | SelfParam | &T.T | main.rs:2258:10:2258:10 | T | | main.rs:2263:28:2263:32 | value | | main.rs:2258:10:2258:10 | T | +| main.rs:2263:38:2265:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:2264:13:2264:16 | self | | file://:0:0:0:0 | & | | main.rs:2264:13:2264:16 | self | &T | main.rs:2253:5:2256:5 | MyVec | | main.rs:2264:13:2264:16 | self | &T.T | main.rs:2258:10:2258:10 | T | | main.rs:2264:13:2264:21 | self.data | | {EXTERNAL LOCATION} | Vec | | main.rs:2264:13:2264:21 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:2264:13:2264:21 | self.data | T | main.rs:2258:10:2258:10 | T | +| main.rs:2264:13:2264:33 | ... .push(...) | | file://:0:0:0:0 | () | | main.rs:2264:28:2264:32 | value | | main.rs:2258:10:2258:10 | T | | main.rs:2272:18:2272:22 | SelfParam | | file://:0:0:0:0 | & | | main.rs:2272:18:2272:22 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | @@ -4707,6 +5193,7 @@ inferType | main.rs:2277:22:2277:26 | slice | | file://:0:0:0:0 | & | | main.rs:2277:22:2277:26 | slice | &T | file://:0:0:0:0 | [] | | main.rs:2277:22:2277:26 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | +| main.rs:2277:35:2279:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2278:13:2278:13 | x | | main.rs:2244:5:2245:13 | S | | main.rs:2278:17:2278:21 | slice | | file://:0:0:0:0 | & | | main.rs:2278:17:2278:21 | slice | &T | file://:0:0:0:0 | [] | @@ -4720,12 +5207,14 @@ inferType | main.rs:2285:9:2285:9 | a | | main.rs:2281:20:2281:34 | T | | main.rs:2285:9:2285:12 | a[b] | | {EXTERNAL LOCATION} | Output | | main.rs:2285:11:2285:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2288:16:2299:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2289:17:2289:19 | vec | | main.rs:2253:5:2256:5 | MyVec | | main.rs:2289:17:2289:19 | vec | T | main.rs:2244:5:2245:13 | S | | main.rs:2289:23:2289:34 | ...::new(...) | | main.rs:2253:5:2256:5 | MyVec | | main.rs:2289:23:2289:34 | ...::new(...) | T | main.rs:2244:5:2245:13 | S | | main.rs:2290:9:2290:11 | vec | | main.rs:2253:5:2256:5 | MyVec | | main.rs:2290:9:2290:11 | vec | T | main.rs:2244:5:2245:13 | S | +| main.rs:2290:9:2290:19 | vec.push(...) | | file://:0:0:0:0 | () | | main.rs:2290:18:2290:18 | S | | main.rs:2244:5:2245:13 | S | | main.rs:2291:9:2291:11 | vec | | main.rs:2253:5:2256:5 | MyVec | | main.rs:2291:9:2291:11 | vec | T | main.rs:2244:5:2245:13 | S | @@ -4749,6 +5238,7 @@ inferType | main.rs:2296:29:2296:31 | vec | T | main.rs:2244:5:2245:13 | S | | main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2298:9:2298:26 | analyze_slice(...) | | file://:0:0:0:0 | () | | main.rs:2298:23:2298:25 | &xs | | file://:0:0:0:0 | & | | main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | | main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | @@ -4756,6 +5246,7 @@ inferType | main.rs:2298:23:2298:25 | &xs | &T.[T] | main.rs:2244:5:2245:13 | S | | main.rs:2298:24:2298:25 | xs | | file://:0:0:0:0 | [] | | main.rs:2298:24:2298:25 | xs | [T;...] | main.rs:2244:5:2245:13 | S | +| main.rs:2303:16:2305:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2304:13:2304:13 | x | | {EXTERNAL LOCATION} | String | | main.rs:2304:17:2304:46 | MacroExpr | | {EXTERNAL LOCATION} | String | | main.rs:2304:25:2304:35 | "Hello, {}" | | file://:0:0:0:0 | & | @@ -4886,6 +5377,7 @@ inferType | main.rs:2452:15:2452:15 | x | | {EXTERNAL LOCATION} | bool | | main.rs:2452:32:2454:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2457:16:2482:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2458:13:2458:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i32 | | main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i64 | @@ -4959,12 +5451,14 @@ inferType | main.rs:2493:31:2495:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2498:16:2605:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2501:13:2501:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:18:2501:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2501:18:2501:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2501:19:2501:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:22:2501:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:25:2501:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2501:28:2501:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2502:18:2502:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2502:18:2502:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2502:18:2502:41 | ... .map(...) | | file://:0:0:0:0 | [] | @@ -4974,6 +5468,7 @@ inferType | main.rs:2502:32:2502:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | | main.rs:2502:32:2502:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | | main.rs:2502:40:2502:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2502:43:2502:44 | { ... } | | file://:0:0:0:0 | () | | main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2503:18:2503:26 | [...] | | file://:0:0:0:0 | [] | @@ -4983,6 +5478,7 @@ inferType | main.rs:2503:19:2503:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2503:22:2503:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2503:25:2503:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2503:40:2503:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:2505:13:2505:17 | vals1 | | file://:0:0:0:0 | [] | | main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | @@ -4999,6 +5495,7 @@ inferType | main.rs:2506:18:2506:22 | vals1 | | file://:0:0:0:0 | [] | | main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:24:2506:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2508:13:2508:17 | vals2 | | file://:0:0:0:0 | [] | | main.rs:2508:13:2508:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2508:21:2508:29 | [1u16; 3] | | file://:0:0:0:0 | [] | @@ -5008,6 +5505,7 @@ inferType | main.rs:2509:13:2509:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2509:18:2509:22 | vals2 | | file://:0:0:0:0 | [] | | main.rs:2509:18:2509:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2509:24:2509:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2511:13:2511:17 | vals3 | | file://:0:0:0:0 | [] | | main.rs:2511:13:2511:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | | main.rs:2511:26:2511:26 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -5023,6 +5521,7 @@ inferType | main.rs:2512:13:2512:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2512:18:2512:22 | vals3 | | file://:0:0:0:0 | [] | | main.rs:2512:18:2512:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2512:24:2512:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2514:13:2514:17 | vals4 | | file://:0:0:0:0 | [] | | main.rs:2514:13:2514:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | | main.rs:2514:26:2514:26 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -5035,6 +5534,7 @@ inferType | main.rs:2515:13:2515:13 | u | | {EXTERNAL LOCATION} | u64 | | main.rs:2515:18:2515:22 | vals4 | | file://:0:0:0:0 | [] | | main.rs:2515:18:2515:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2515:24:2515:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2517:17:2517:24 | strings1 | | file://:0:0:0:0 | [] | | main.rs:2517:17:2517:24 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2517:17:2517:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | @@ -5058,6 +5558,7 @@ inferType | main.rs:2518:19:2518:26 | strings1 | | file://:0:0:0:0 | [] | | main.rs:2518:19:2518:26 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2518:19:2518:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2518:28:2518:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2519:13:2519:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2519:13:2519:13 | s | | file://:0:0:0:0 | & | | main.rs:2519:13:2519:13 | s | &T | file://:0:0:0:0 | & | @@ -5069,11 +5570,13 @@ inferType | main.rs:2519:23:2519:30 | strings1 | | file://:0:0:0:0 | [] | | main.rs:2519:23:2519:30 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2519:23:2519:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2519:32:2519:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:2520:13:2520:13 | s | | file://:0:0:0:0 | & | | main.rs:2520:13:2520:13 | s | &T | {EXTERNAL LOCATION} | str | | main.rs:2520:18:2520:25 | strings1 | | file://:0:0:0:0 | [] | | main.rs:2520:18:2520:25 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2520:18:2520:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2520:27:2520:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:2522:13:2522:20 | strings2 | | file://:0:0:0:0 | [] | | main.rs:2522:13:2522:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | | main.rs:2523:9:2527:9 | [...] | | file://:0:0:0:0 | [] | @@ -5090,6 +5593,7 @@ inferType | main.rs:2528:13:2528:13 | s | | {EXTERNAL LOCATION} | String | | main.rs:2528:18:2528:25 | strings2 | | file://:0:0:0:0 | [] | | main.rs:2528:18:2528:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2528:27:2528:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:2530:13:2530:20 | strings3 | | file://:0:0:0:0 | & | | main.rs:2530:13:2530:20 | strings3 | &T | file://:0:0:0:0 | [] | | main.rs:2530:13:2530:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | @@ -5113,6 +5617,7 @@ inferType | main.rs:2536:18:2536:25 | strings3 | | file://:0:0:0:0 | & | | main.rs:2536:18:2536:25 | strings3 | &T | file://:0:0:0:0 | [] | | main.rs:2536:18:2536:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2536:27:2536:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:2538:13:2538:21 | callables | | file://:0:0:0:0 | [] | | main.rs:2538:13:2538:21 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2538:25:2538:81 | [...] | | file://:0:0:0:0 | [] | @@ -5123,6 +5628,7 @@ inferType | main.rs:2539:13:2539:13 | c | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2540:12:2540:20 | callables | | file://:0:0:0:0 | [] | | main.rs:2540:12:2540:20 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2541:9:2543:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:2542:17:2542:22 | result | | {EXTERNAL LOCATION} | i64 | | main.rs:2542:26:2542:26 | c | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2542:26:2542:33 | c.call() | | {EXTERNAL LOCATION} | i64 | @@ -5132,6 +5638,7 @@ inferType | main.rs:2547:18:2547:22 | 0..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2547:18:2547:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2547:21:2547:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2547:24:2547:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2548:13:2548:13 | u | | {EXTERNAL LOCATION} | Range | | main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | u8 | @@ -5145,6 +5652,7 @@ inferType | main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | | main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2548:28:2548:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2549:13:2549:17 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2549:13:2549:17 | range | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2549:21:2549:21 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -5155,6 +5663,7 @@ inferType | main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2550:18:2550:22 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2550:18:2550:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:24:2550:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2551:13:2551:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | | main.rs:2551:26:2551:27 | .. | | {EXTERNAL LOCATION} | RangeFull | | main.rs:2552:13:2552:13 | i | | {EXTERNAL LOCATION} | Item | @@ -5165,6 +5674,7 @@ inferType | main.rs:2552:26:2552:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2552:32:2552:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2552:38:2552:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2552:50:2552:51 | { ... } | | file://:0:0:0:0 | () | | main.rs:2554:13:2554:18 | range1 | | {EXTERNAL LOCATION} | Range | | main.rs:2554:13:2554:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | | main.rs:2555:9:2558:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | @@ -5175,9 +5685,11 @@ inferType | main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2559:18:2559:23 | range1 | | {EXTERNAL LOCATION} | Range | | main.rs:2559:18:2559:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2559:25:2559:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:2563:26:2563:26 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2563:29:2563:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2563:32:2563:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2564:24:2564:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2566:13:2566:18 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2566:13:2566:18 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2566:13:2566:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | @@ -5195,12 +5707,14 @@ inferType | main.rs:2567:18:2567:23 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2567:18:2567:23 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2567:18:2567:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2567:25:2567:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:2569:22:2569:33 | [...] | | file://:0:0:0:0 | [] | | main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2569:23:2569:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2569:29:2569:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2569:32:2569:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2570:25:2570:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:2572:13:2572:17 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2572:13:2572:17 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | @@ -5222,6 +5736,7 @@ inferType | main.rs:2573:18:2573:22 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2573:24:2573:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2575:13:2575:17 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2575:13:2575:17 | vals6 | A | {EXTERNAL LOCATION} | Global | | main.rs:2575:13:2575:17 | vals6 | T | file://:0:0:0:0 | & | @@ -5242,6 +5757,7 @@ inferType | main.rs:2576:18:2576:22 | vals6 | A | {EXTERNAL LOCATION} | Global | | main.rs:2576:18:2576:22 | vals6 | T | file://:0:0:0:0 | & | | main.rs:2576:18:2576:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2576:24:2576:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2578:17:2578:21 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2578:17:2578:21 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2578:17:2578:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | @@ -5251,16 +5767,19 @@ inferType | main.rs:2579:9:2579:13 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2579:9:2579:13 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2579:9:2579:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2579:9:2579:23 | vals7.push(...) | | file://:0:0:0:0 | () | | main.rs:2579:20:2579:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2580:13:2580:13 | u | | {EXTERNAL LOCATION} | u8 | | main.rs:2580:13:2580:13 | u | | file://:0:0:0:0 | & | | main.rs:2580:18:2580:22 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2580:18:2580:22 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2580:18:2580:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2580:24:2580:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2582:33:2582:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2582:36:2582:36 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2582:45:2582:45 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2582:48:2582:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2585:29:2586:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2589:17:2589:20 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2589:17:2589:20 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2589:17:2589:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | @@ -5329,6 +5848,7 @@ inferType | main.rs:2592:20:2592:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2592:20:2592:30 | map1.keys() | V.T | file://:0:0:0:0 | & | | main.rs:2592:20:2592:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2592:32:2592:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:2593:13:2593:17 | value | | {EXTERNAL LOCATION} | Item | | main.rs:2593:13:2593:17 | value | | file://:0:0:0:0 | & | | main.rs:2593:13:2593:17 | value | &T | {EXTERNAL LOCATION} | Box | @@ -5348,6 +5868,7 @@ inferType | main.rs:2593:22:2593:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2593:22:2593:34 | map1.values() | V.T | file://:0:0:0:0 | & | | main.rs:2593:22:2593:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2593:36:2593:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:2594:13:2594:24 | TuplePat | | file://:0:0:0:0 | (T_2) | | main.rs:2594:13:2594:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | | main.rs:2594:13:2594:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | @@ -5376,6 +5897,7 @@ inferType | main.rs:2594:29:2594:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2594:29:2594:39 | map1.iter() | V.T | file://:0:0:0:0 | & | | main.rs:2594:29:2594:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2594:41:2594:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:2595:13:2595:24 | TuplePat | | file://:0:0:0:0 | (T_2) | | main.rs:2595:13:2595:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | | main.rs:2595:13:2595:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | @@ -5406,6 +5928,7 @@ inferType | main.rs:2595:30:2595:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2595:30:2595:33 | map1 | V.T | file://:0:0:0:0 | & | | main.rs:2595:30:2595:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2595:35:2595:36 | { ... } | | file://:0:0:0:0 | () | | main.rs:2599:17:2599:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i64 | @@ -5413,6 +5936,7 @@ inferType | main.rs:2601:23:2601:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2602:9:2604:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:2603:13:2603:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2603:13:2603:18 | ... += ... | | file://:0:0:0:0 | () | | main.rs:2603:18:2603:18 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -5436,6 +5960,7 @@ inferType | main.rs:2636:15:2636:15 | x | | main.rs:2636:12:2636:12 | T | | main.rs:2636:26:2638:5 | { ... } | | main.rs:2636:12:2636:12 | T | | main.rs:2637:9:2637:9 | x | | main.rs:2636:12:2636:12 | T | +| main.rs:2640:16:2662:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2641:13:2641:14 | x1 | | {EXTERNAL LOCATION} | Option | | main.rs:2641:13:2641:14 | x1 | T | main.rs:2609:5:2609:20 | S1 | | main.rs:2641:13:2641:14 | x1 | T.T | main.rs:2611:5:2612:14 | S2 | @@ -5522,6 +6047,8 @@ inferType | main.rs:2671:14:2671:18 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | | main.rs:2671:21:2671:25 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | | main.rs:2673:16:2673:19 | SelfParam | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2673:22:2673:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2676:16:2710:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2677:13:2677:13 | a | | file://:0:0:0:0 | (T_2) | | main.rs:2677:13:2677:13 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2677:13:2677:13 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | @@ -5562,16 +6089,24 @@ inferType | main.rs:2683:9:2683:9 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2683:9:2683:9 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2683:9:2683:11 | a.0 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2683:9:2683:17 | ... .foo() | | file://:0:0:0:0 | () | | main.rs:2684:9:2684:9 | b | | file://:0:0:0:0 | (T_2) | | main.rs:2684:9:2684:9 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2684:9:2684:9 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2684:9:2684:11 | b.1 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2684:9:2684:17 | ... .foo() | | file://:0:0:0:0 | () | | main.rs:2685:9:2685:9 | c | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2685:9:2685:15 | c.foo() | | file://:0:0:0:0 | () | | main.rs:2686:9:2686:9 | d | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2686:9:2686:15 | d.foo() | | file://:0:0:0:0 | () | | main.rs:2687:9:2687:9 | e | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2687:9:2687:15 | e.foo() | | file://:0:0:0:0 | () | | main.rs:2688:9:2688:9 | f | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2688:9:2688:15 | f.foo() | | file://:0:0:0:0 | () | | main.rs:2689:9:2689:9 | g | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2689:9:2689:15 | g.foo() | | file://:0:0:0:0 | () | | main.rs:2690:9:2690:9 | h | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2690:9:2690:15 | h.foo() | | file://:0:0:0:0 | () | | main.rs:2695:13:2695:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2696:13:2696:13 | b | | {EXTERNAL LOCATION} | bool | @@ -5604,6 +6139,7 @@ inferType | main.rs:2701:20:2701:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2701:21:2701:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2701:24:2701:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:9:2705:9 | match pair { ... } | | file://:0:0:0:0 | () | | main.rs:2702:15:2702:18 | pair | | file://:0:0:0:0 | (T_2) | | main.rs:2702:15:2702:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2702:15:2702:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | @@ -5612,17 +6148,23 @@ inferType | main.rs:2703:13:2703:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2703:14:2703:14 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2703:17:2703:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:23:2703:42 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:2703:30:2703:41 | "unexpected" | | file://:0:0:0:0 | & | | main.rs:2703:30:2703:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2703:30:2703:41 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:2703:30:2703:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2703:30:2703:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2703:30:2703:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:2704:13:2704:13 | _ | | file://:0:0:0:0 | (T_2) | | main.rs:2704:13:2704:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2704:13:2704:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:18:2704:35 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:2704:25:2704:34 | "expected" | | file://:0:0:0:0 | & | | main.rs:2704:25:2704:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2704:25:2704:34 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:2704:25:2704:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2704:25:2704:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2704:25:2704:34 | { ... } | | file://:0:0:0:0 | () | | main.rs:2706:13:2706:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2706:17:2706:20 | pair | | file://:0:0:0:0 | (T_2) | | main.rs:2706:17:2706:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | @@ -5644,6 +6186,8 @@ inferType | main.rs:2709:9:2709:9 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2709:9:2709:9 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | | main.rs:2709:9:2709:11 | y.0 | | main.rs:2666:5:2667:16 | S1 | +| main.rs:2709:9:2709:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2715:27:2737:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2716:13:2716:23 | boxed_value | | {EXTERNAL LOCATION} | Box | | main.rs:2716:13:2716:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | | main.rs:2716:13:2716:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | @@ -5651,6 +6195,7 @@ inferType | main.rs:2716:27:2716:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2716:27:2716:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2716:36:2716:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:9:2727:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | | main.rs:2719:15:2719:25 | boxed_value | | {EXTERNAL LOCATION} | Box | | main.rs:2719:15:2719:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | | main.rs:2719:15:2719:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | @@ -5658,17 +6203,23 @@ inferType | main.rs:2720:13:2720:19 | box 100 | A | {EXTERNAL LOCATION} | Global | | main.rs:2720:13:2720:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2720:17:2720:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2720:24:2722:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2721:26:2721:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | | main.rs:2721:26:2721:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2721:26:2721:36 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:2721:26:2721:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2721:26:2721:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2721:26:2721:36 | { ... } | | file://:0:0:0:0 | () | | main.rs:2723:13:2723:17 | box ... | | {EXTERNAL LOCATION} | Box | | main.rs:2723:13:2723:17 | box ... | A | {EXTERNAL LOCATION} | Global | | main.rs:2723:13:2723:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2723:22:2726:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | | main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2725:26:2725:51 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:2725:26:2725:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2725:26:2725:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2725:26:2725:51 | { ... } | | file://:0:0:0:0 | () | | main.rs:2730:13:2730:22 | nested_box | | {EXTERNAL LOCATION} | Box | | main.rs:2730:13:2730:22 | nested_box | A | {EXTERNAL LOCATION} | Global | | main.rs:2730:13:2730:22 | nested_box | T | {EXTERNAL LOCATION} | Box | @@ -5683,6 +6234,7 @@ inferType | main.rs:2730:35:2730:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2730:35:2730:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2730:44:2730:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2731:9:2736:9 | match nested_box { ... } | | file://:0:0:0:0 | () | | main.rs:2731:15:2731:24 | nested_box | | {EXTERNAL LOCATION} | Box | | main.rs:2731:15:2731:24 | nested_box | A | {EXTERNAL LOCATION} | Global | | main.rs:2731:15:2731:24 | nested_box | T | {EXTERNAL LOCATION} | Box | @@ -5693,10 +6245,13 @@ inferType | main.rs:2732:13:2732:21 | box ... | T | {EXTERNAL LOCATION} | Box | | main.rs:2732:13:2732:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | | main.rs:2732:13:2732:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:26:2735:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | | main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2734:26:2734:59 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:2734:26:2734:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2734:26:2734:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2734:26:2734:59 | { ... } | | file://:0:0:0:0 | () | | main.rs:2746:36:2748:9 | { ... } | | main.rs:2743:5:2743:22 | Path | | main.rs:2747:13:2747:19 | Path {...} | | main.rs:2743:5:2743:22 | Path | | main.rs:2750:29:2750:33 | SelfParam | | file://:0:0:0:0 | & | @@ -5718,6 +6273,7 @@ inferType | main.rs:2771:13:2771:17 | &path | | file://:0:0:0:0 | & | | main.rs:2771:13:2771:17 | &path | &T | main.rs:2743:5:2743:22 | Path | | main.rs:2771:14:2771:17 | path | | main.rs:2743:5:2743:22 | Path | +| main.rs:2775:16:2783:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2776:13:2776:17 | path1 | | main.rs:2743:5:2743:22 | Path | | main.rs:2776:21:2776:31 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | | main.rs:2777:13:2777:17 | path2 | | {EXTERNAL LOCATION} | Result | @@ -5868,11 +6424,42 @@ inferType | main.rs:2835:13:2835:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2835:13:2835:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | | main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2845:11:2880:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2846:5:2846:21 | ...::f(...) | | file://:0:0:0:0 | () | | main.rs:2847:5:2847:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | | main.rs:2848:5:2848:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | | main.rs:2848:20:2848:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | | main.rs:2848:41:2848:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2849:5:2849:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2850:5:2850:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2851:5:2851:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2852:5:2852:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2853:5:2853:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2854:5:2854:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2855:5:2855:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2856:5:2856:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2857:5:2857:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2858:5:2858:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2859:5:2859:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2860:5:2860:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2861:5:2861:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2862:5:2862:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2863:5:2863:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2864:5:2864:18 | ...::f(...) | | file://:0:0:0:0 | () | | main.rs:2865:5:2865:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2865:5:2865:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:2866:5:2866:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2867:5:2867:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2868:5:2868:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2869:5:2869:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2870:5:2870:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2871:5:2871:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2872:5:2872:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2873:5:2873:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2874:5:2874:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2875:5:2875:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2876:5:2876:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2877:5:2877:20 | ...::test(...) | | file://:0:0:0:0 | () | | main.rs:2878:5:2878:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2878:5:2878:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2878:5:2878:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | @@ -5886,17 +6473,21 @@ inferType | pattern_matching.rs:14:17:14:24 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:17:14:24 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:14:22:14:23 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:15:5:18:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:15:12:15:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:12:15:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:17:15:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:25:15:29 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:25:15:29 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:15:31:18:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:16:13:16:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:16:20:16:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:17:18:17:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:17:18:17:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:17:18:17:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:19:5:25:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:19:11:19:15 | value | | {EXTERNAL LOCATION} | Option | @@ -5904,12 +6495,15 @@ inferType | pattern_matching.rs:20:9:20:18 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:20:9:20:18 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:14:20:17 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:20:23:23:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:22:22:22:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:22:22:22:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:22:22:22:29 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:24:9:24:12 | None | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:24:9:24:12 | None | T | {EXTERNAL LOCATION} | i32 | @@ -5922,8 +6516,10 @@ inferType | pattern_matching.rs:27:16:27:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:28:14:28:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:28:14:28:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:28:14:28:21 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:9:29:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:20 | value | | {EXTERNAL LOCATION} | Option | @@ -5931,8 +6527,10 @@ inferType | pattern_matching.rs:29:16:29:21 | TryExpr | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:30:14:30:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:30:14:30:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:30:14:30:21 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:9:32:14 | value2 | | file://:0:0:0:0 | & | | pattern_matching.rs:32:9:32:14 | value2 | &T | {EXTERNAL LOCATION} | Option | @@ -5943,6 +6541,7 @@ inferType | pattern_matching.rs:32:19:32:26 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:19:32:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:24:32:25 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:5:36:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:33:12:33:22 | &... | | file://:0:0:0:0 | & | | pattern_matching.rs:33:12:33:22 | &... | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:12:33:22 | &... | &T.T | {EXTERNAL LOCATION} | i32 | @@ -5952,26 +6551,33 @@ inferType | pattern_matching.rs:33:26:33:31 | value2 | | file://:0:0:0:0 | & | | pattern_matching.rs:33:26:33:31 | value2 | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:26:33:31 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:33:36:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:34:13:34:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:34:20:34:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:35:18:35:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:35:18:35:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:35:18:35:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:9:38:14 | value3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:18:38:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:5:42:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:39:16:39:19 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:39:16:39:19 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:23:39:28 | value3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:30:42:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:40:13:40:16 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:40:13:40:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:40:20:40:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:40:20:40:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:41:18:41:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:41:18:41:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:41:18:41:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:41:20:41:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:9:44:14 | value4 | | {EXTERNAL LOCATION} | Option | @@ -5979,20 +6585,24 @@ inferType | pattern_matching.rs:44:18:44:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:18:44:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:23:44:24 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:5:48:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:45:12:45:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:12:45:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:21:45:24 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:45:21:45:24 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:29:45:34 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:29:45:34 | value4 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:36:48:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:46:13:46:16 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:46:13:46:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:46:20:46:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:46:20:46:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:47:20:47:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:50:13:50:18 | value5 | | file://:0:0:0:0 | & | @@ -6010,6 +6620,7 @@ inferType | pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:54:17:54:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:55:17:55:21 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:57:5:61:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | @@ -6018,6 +6629,7 @@ inferType | pattern_matching.rs:57:48:57:63 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:48:57:63 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:48:57:63 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:57:65:61:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:58:13:58:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:58:17:58:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:59:13:59:13 | y | | {EXTERNAL LOCATION} | bool | @@ -6031,6 +6643,7 @@ inferType | pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:63:41:63:42 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:63:45:63:49 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:64:5:68:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | @@ -6039,6 +6652,7 @@ inferType | pattern_matching.rs:64:44:64:58 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:64:60:68:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:65:13:65:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:65:17:65:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:66:13:66:13 | y | | {EXTERNAL LOCATION} | bool | @@ -6052,6 +6666,7 @@ inferType | pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:71:17:71:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:72:17:72:21 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:74:5:85:5 | match my_enum1 { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:74:11:74:18 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:74:11:74:18 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:74:11:74:18 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | @@ -6060,6 +6675,7 @@ inferType | pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:75:28:75:33 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:75:36:75:41 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:75:48:79:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:76:17:76:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:76:21:76:26 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:77:17:77:17 | y | | {EXTERNAL LOCATION} | bool | @@ -6070,6 +6686,7 @@ inferType | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:26:80:31 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:34:80:39 | value2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:80:45:84:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:81:17:81:17 | x | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:81:21:81:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:82:17:82:17 | y | | {EXTERNAL LOCATION} | i32 | @@ -6116,6 +6733,7 @@ inferType | pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:100:25:100:25 | y | | file://:0:0:0:0 | & | | pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:102:14:107:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | @@ -6137,132 +6755,177 @@ inferType | pattern_matching.rs:111:16:111:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:111:16:111:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:111:21:111:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:113:9:113:9 | _ | | file://:0:0:0:0 | () | +| pattern_matching.rs:113:13:116:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:32:113:32 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:37:113:40 | opt1 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:37:113:40 | opt1 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:114:5:116:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:115:9:115:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:9:118:12 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:9:118:12 | opt2 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:16:118:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:16:118:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:21:118:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:120:9:120:9 | _ | | file://:0:0:0:0 | () | +| pattern_matching.rs:120:13:123:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:40:120:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:45:120:48 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:45:120:48 | opt2 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:121:5:123:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:122:9:122:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:9:125:12 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:9:125:12 | opt3 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:16:125:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:16:125:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:21:125:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:127:9:127:9 | _ | | file://:0:0:0:0 | () | +| pattern_matching.rs:127:13:130:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:40:127:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:45:127:48 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:45:127:48 | opt3 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:128:5:130:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:129:9:129:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:132:5:132:8 | None | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:132:5:132:8 | None | T | file://:0:0:0:0 | () | +| pattern_matching.rs:168:27:217:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:169:9:169:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:169:17:169:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:171:5:186:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:171:11:171:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:173:9:173:10 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:173:15:176:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:175:22:175:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:175:22:175:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:175:22:175:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:177:10:177:10 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:177:15:180:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:179:22:179:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:179:22:179:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:179:22:179:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:181:9:181:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:181:14:184:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:183:22:183:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:183:22:183:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:183:22:183:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:185:9:185:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:185:14:185:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:188:9:188:17 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:188:21:188:27 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:189:5:195:5 | match float_val { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:189:11:189:19 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:190:9:190:12 | 3.14 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:190:17:193:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:192:22:192:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:192:22:192:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:192:22:192:47 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:194:14:194:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:197:9:197:18 | string_val | | file://:0:0:0:0 | & | | pattern_matching.rs:197:9:197:18 | string_val | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:197:22:197:28 | "hello" | | file://:0:0:0:0 | & | | pattern_matching.rs:197:22:197:28 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:198:5:204:5 | match string_val { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:198:11:198:20 | string_val | | file://:0:0:0:0 | & | | pattern_matching.rs:198:11:198:20 | string_val | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:199:9:199:15 | "hello" | | file://:0:0:0:0 | & | | pattern_matching.rs:199:9:199:15 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:199:20:202:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:200:17:200:27 | hello_match | | file://:0:0:0:0 | & | | pattern_matching.rs:200:17:200:27 | hello_match | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:200:31:200:40 | string_val | | file://:0:0:0:0 | & | | pattern_matching.rs:200:31:200:40 | string_val | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:201:22:201:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:201:22:201:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:201:22:201:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:201:44:201:54 | hello_match | | file://:0:0:0:0 | & | | pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:203:9:203:9 | _ | | file://:0:0:0:0 | & | | pattern_matching.rs:203:9:203:9 | _ | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:203:14:203:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:206:9:206:16 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:206:20:206:23 | true | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:207:5:216:5 | match bool_val { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:207:11:207:18 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:208:9:208:12 | true | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:208:17:211:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:210:22:210:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:210:22:210:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:210:22:210:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:212:18:215:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:214:22:214:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:214:22:214:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:214:22:214:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:219:30:277:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:220:9:220:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:220:17:220:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:223:5:228:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:223:11:223:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:224:9:224:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:224:14:227:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:225:17:225:27 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:225:31:225:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:226:22:226:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:226:22:226:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:226:22:226:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:231:5:236:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:231:11:231:16 | &value | | file://:0:0:0:0 | & | | pattern_matching.rs:231:11:231:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:232:13:232:13 | x | | file://:0:0:0:0 | & | | pattern_matching.rs:232:13:232:13 | x | &T | file://:0:0:0:0 | & | | pattern_matching.rs:232:13:232:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:232:18:235:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:233:17:233:25 | ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:233:17:233:25 | ref_bound | &T | file://:0:0:0:0 | & | | pattern_matching.rs:233:17:233:25 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | @@ -6271,15 +6934,19 @@ inferType | pattern_matching.rs:233:29:233:29 | x | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:234:22:234:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:234:22:234:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:234:22:234:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:234:52:234:60 | ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:234:52:234:60 | ref_bound | &T | file://:0:0:0:0 | & | | pattern_matching.rs:234:52:234:60 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:240:11:240:23 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:241:13:241:13 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:241:18:245:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:242:17:242:25 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:242:29:242:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:243:13:243:13 | x | | {EXTERNAL LOCATION} | i32 | @@ -6287,63 +6954,80 @@ inferType | pattern_matching.rs:243:18:243:18 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:244:22:244:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:244:22:244:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:244:22:244:56 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:9:249:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:9:249:20 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:39:249:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:250:5:266:5 | match option_value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:250:11:250:22 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:250:11:250:22 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:24:251:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:28:251:29 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:251:35:254:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:252:17:252:24 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:252:28:252:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:253:22:253:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:253:22:253:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:253:22:253:59 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:24:255:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:28:255:28 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:32:255:34 | 100 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:255:40:258:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:256:17:256:30 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:256:34:256:34 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:257:22:257:63 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:257:22:257:63 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:257:22:257:63 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:24:259:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:259:30:262:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:260:17:260:26 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:260:30:260:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:261:22:261:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:261:22:261:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:261:22:261:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:263:9:263:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:263:9:263:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:263:27:265:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:264:22:264:33 | "None value\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:264:22:264:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:264:22:264:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:264:22:264:33 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:5:276:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | file://:0:0:0:0 | & | | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:17:271:17 | x | | file://:0:0:0:0 | & | | pattern_matching.rs:271:17:271:17 | x | &T | file://:0:0:0:0 | & | | pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:22:275:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | file://:0:0:0:0 | & | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | @@ -6360,107 +7044,146 @@ inferType | pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:274:22:274:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:274:22:274:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:274:22:274:38 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:279:28:290:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:280:17:280:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:282:5:289:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:282:11:282:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:283:9:283:10 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:283:15:283:40 | MacroExpr | | file://:0:0:0:0 | () | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:283:24:283:39 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:283:24:283:39 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:283:24:283:39 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:285:14:288:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:287:22:287:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:287:22:287:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:287:22:287:65 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:292:25:324:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:293:9:293:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:293:17:293:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:295:5:310:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:295:11:295:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:14 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:13:297:14 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:297:19:300:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:299:22:299:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:299:22:299:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:299:22:299:59 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:10 | 11 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:12 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:301:17:304:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:303:22:303:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:303:22:303:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:303:22:303:52 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:9:305:12 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:12:305:12 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:305:17:308:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:307:22:307:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:307:22:307:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:307:22:307:67 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:309:9:309:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:309:14:309:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:312:9:312:16 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:312:20:312:22 | 'c' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:313:5:323:5 | match char_val { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:313:11:313:18 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:11 | 'a' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:15:314:17 | 'z' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:314:22:317:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:316:22:316:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:316:22:316:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:316:22:316:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:15:318:17 | 'Z' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:318:22:321:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:320:22:320:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:320:22:320:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:320:22:320:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:322:9:322:9 | _ | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:322:14:322:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:326:29:355:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:327:9:327:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:327:17:327:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:13:328:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:331:5:340:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:331:11:331:16 | &value | | file://:0:0:0:0 | & | | pattern_matching.rs:331:11:331:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:9:332:11 | &42 | | file://:0:0:0:0 | & | | pattern_matching.rs:332:9:332:11 | &42 | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:10:332:11 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:332:16:335:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:334:22:334:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:334:22:334:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:334:22:334:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:9:336:10 | &... | | file://:0:0:0:0 | & | | pattern_matching.rs:336:9:336:10 | &... | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:10:336:10 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:336:15:339:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:337:17:337:27 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:337:31:337:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:338:22:338:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:338:22:338:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:338:22:338:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:342:5:347:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:342:11:342:28 | &mut mutable_value | | file://:0:0:0:0 | & | | pattern_matching.rs:342:11:342:28 | &mut mutable_value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | @@ -6468,22 +7191,27 @@ inferType | pattern_matching.rs:343:9:343:18 | &mut ... | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:343:18:343:18 | x | | file://:0:0:0:0 | & | | pattern_matching.rs:343:18:343:18 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:23:346:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:344:17:344:29 | mut_ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:344:17:344:29 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:344:33:344:33 | x | | file://:0:0:0:0 | & | | pattern_matching.rs:344:33:344:33 | x | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:345:22:345:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:345:22:345:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:345:22:345:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:349:5:354:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:349:11:349:16 | &value | | file://:0:0:0:0 | & | | pattern_matching.rs:349:11:349:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:350:13:350:13 | x | | file://:0:0:0:0 | & | | pattern_matching.rs:350:13:350:13 | x | &T | file://:0:0:0:0 | & | | pattern_matching.rs:350:13:350:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:350:18:353:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:351:17:351:27 | ref_pattern | | file://:0:0:0:0 | & | | pattern_matching.rs:351:17:351:27 | ref_pattern | &T | file://:0:0:0:0 | & | | pattern_matching.rs:351:17:351:27 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | @@ -6492,80 +7220,102 @@ inferType | pattern_matching.rs:351:31:351:31 | x | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:352:22:352:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:352:22:352:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:352:22:352:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:352:47:352:57 | ref_pattern | | file://:0:0:0:0 | & | | pattern_matching.rs:352:47:352:57 | ref_pattern | &T | file://:0:0:0:0 | & | | pattern_matching.rs:352:47:352:57 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:357:26:398:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:28:358:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:358:35:358:36 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:361:5:380:5 | match point { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:361:11:361:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:9:362:28 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:20:362:20 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:362:26:362:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:362:33:365:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:364:22:364:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:364:22:364:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:364:22:364:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:17:366:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:366:23:366:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:366:30:370:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:367:17:367:24 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:367:28:367:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | file://:0:0:0:0 | & | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:369:22:369:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:369:22:369:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:369:22:369:80 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:9:371:27 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:20:371:21 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:371:32:374:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:373:22:373:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:373:22:373:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:373:22:373:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:17:375:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:375:20:375:20 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:375:27:379:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:376:17:376:25 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:376:29:376:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:17:377:25 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:29:377:29 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:378:22:378:68 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:378:22:378:68 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:378:22:378:68 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:60:378:68 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:383:9:383:13 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:383:17:386:5 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:384:16:384:19 | 10.0 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:385:17:385:20 | 20.0 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:387:5:397:5 | match shape { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:387:11:387:15 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:388:9:391:9 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:389:20:389:20 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:390:21:390:21 | h | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:391:14:395:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:392:17:392:26 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:392:30:392:30 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:17:393:27 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:31:393:31 | h | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:394:22:394:64 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:394:22:394:64 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:394:22:394:64 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:54:394:64 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:396:9:396:9 | _ | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:396:14:396:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:400:32:441:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:401:9:401:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:17:401:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | i32 | @@ -6574,6 +7324,7 @@ inferType | pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:404:5:418:5 | match color { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:404:11:404:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:9:405:24 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:15:405:17 | 255 | | {EXTERNAL LOCATION} | i32 | @@ -6582,17 +7333,21 @@ inferType | pattern_matching.rs:405:20:405:20 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:405:29:408:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:406:17:406:25 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:406:29:406:33 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:407:22:407:48 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:407:22:407:48 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:407:22:407:48 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:9:409:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:15:409:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:18:409:18 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:21:409:21 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:409:27:417:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:410:17:410:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:410:33:410:33 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:411:17:411:31 | green_component | | {EXTERNAL LOCATION} | u8 | @@ -6601,46 +7356,60 @@ inferType | pattern_matching.rs:412:34:412:34 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:414:17:415:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:414:17:415:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:414:17:415:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:32:415:46 | green_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:49:415:62 | blue_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:421:5:430:5 | match color { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:421:11:421:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:9:422:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:422:20:422:21 | .. | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:422:27:425:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:423:17:423:29 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:423:33:423:37 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:424:22:424:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:424:22:424:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:424:22:424:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:9:426:20 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:15:426:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:426:18:426:19 | .. | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:426:25:429:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:427:17:427:23 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:427:27:427:27 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:428:22:428:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:428:22:428:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:428:22:428:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:434:9:434:15 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:19:434:29 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:27:434:28 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:435:5:440:5 | match wrapper { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:435:11:435:17 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:9:436:18 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:17:436:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:436:23:439:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:437:17:437:29 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:437:33:437:33 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:438:22:438:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:438:22:438:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:438:22:438:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:443:25:498:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:444:9:444:13 | tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:444:9:444:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | @@ -6656,6 +7425,7 @@ inferType | pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:447:5:458:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:447:11:447:15 | tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:447:11:447:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | @@ -6673,6 +7443,7 @@ inferType | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:448:24:451:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:449:17:449:27 | exact_tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:449:17:449:27 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | @@ -6687,8 +7458,10 @@ inferType | pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:450:22:450:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:450:22:450:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:450:22:450:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:450:43:450:53 | exact_tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:450:43:450:53 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | @@ -6706,6 +7479,7 @@ inferType | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:452:22:457:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:453:17:453:26 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:453:30:453:30 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:454:17:454:27 | second_elem | | {EXTERNAL LOCATION} | i32 | @@ -6718,13 +7492,16 @@ inferType | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:456:22:456:79 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:456:22:456:79 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:456:22:456:79 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:461:5:466:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:461:11:461:15 | tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:461:11:461:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | @@ -6737,37 +7514,48 @@ inferType | pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:462:24:465:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:464:22:464:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:464:22:464:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:464:22:464:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:469:9:469:12 | unit | | file://:0:0:0:0 | () | | pattern_matching.rs:469:16:469:17 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:470:5:475:5 | match unit { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:470:11:470:14 | unit | | file://:0:0:0:0 | () | | pattern_matching.rs:471:9:471:10 | TuplePat | | file://:0:0:0:0 | () | +| pattern_matching.rs:471:15:474:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:472:17:472:26 | unit_value | | file://:0:0:0:0 | () | | pattern_matching.rs:472:30:472:33 | unit | | file://:0:0:0:0 | () | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:473:22:473:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:473:22:473:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:473:22:473:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:473:42:473:51 | unit_value | | file://:0:0:0:0 | () | | pattern_matching.rs:478:9:478:14 | single | | file://:0:0:0:0 | (T_1) | | pattern_matching.rs:478:9:478:14 | single | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:18:478:25 | TupleExpr | | file://:0:0:0:0 | (T_1) | | pattern_matching.rs:478:18:478:25 | TupleExpr | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:479:5:484:5 | match single { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:479:11:479:16 | single | | file://:0:0:0:0 | (T_1) | | pattern_matching.rs:479:11:479:16 | single | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:9:480:12 | TuplePat | | file://:0:0:0:0 | (T_1) | | pattern_matching.rs:480:9:480:12 | TuplePat | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:10:480:10 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:480:17:483:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:481:17:481:27 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:481:31:481:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:482:22:482:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:482:22:482:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:482:22:482:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:482:50:482:60 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | | file://:0:0:0:0 | & | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | @@ -6782,19 +7570,25 @@ inferType | pattern_matching.rs:487:36:487:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:37:487:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:40:487:40 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:5:491:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:488:12:488:17 | TuplePat | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | | file://:0:0:0:0 | & | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:32:491:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:489:18:489:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:489:18:489:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:489:18:489:27 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:490:18:490:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:490:18:490:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:490:18:490:27 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | | file://:0:0:0:0 | & | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | @@ -6815,23 +7609,32 @@ inferType | pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:496:14:496:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:496:14:496:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:496:14:496:23 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:497:14:497:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:497:14:497:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:497:14:497:23 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:500:33:520:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:501:9:501:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:501:17:501:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:504:5:509:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:504:11:504:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:9:505:11 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:10:505:10 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:505:16:508:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:506:17:506:27 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:506:31:506:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:507:22:507:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:507:22:507:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:507:22:507:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:507:51:507:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:9:512:13 | tuple | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:512:9:512:13 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | @@ -6841,6 +7644,7 @@ inferType | pattern_matching.rs:512:17:512:28 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:18:512:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:24:512:27 | 2i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:5:519:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:513:11:513:15 | tuple | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:513:11:513:15 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:513:11:513:15 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | @@ -6850,16 +7654,20 @@ inferType | pattern_matching.rs:514:10:514:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:13:514:15 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:14:514:14 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:21:518:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:515:17:515:23 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:515:27:515:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:17:516:23 | paren_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:27:516:27 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | file://:0:0:0:0 | & | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:517:22:517:71 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:517:22:517:71 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:517:22:517:71 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:517:56:517:62 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:65:517:71 | paren_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:522:25:563:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:523:9:523:13 | slice | | file://:0:0:0:0 | & | | pattern_matching.rs:523:9:523:13 | slice | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:523:9:523:13 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | @@ -6875,12 +7683,14 @@ inferType | pattern_matching.rs:523:33:523:33 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:36:523:36 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:39:523:39 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:526:5:551:5 | match slice { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:526:11:526:15 | slice | | file://:0:0:0:0 | & | | pattern_matching.rs:526:11:526:15 | slice | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:526:11:526:15 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:527:9:527:10 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:527:9:527:10 | SlicePat | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:527:9:527:10 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:527:15:530:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:528:17:528:27 | empty_slice | | file://:0:0:0:0 | & | | pattern_matching.rs:528:17:528:27 | empty_slice | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:528:17:528:27 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | @@ -6889,32 +7699,43 @@ inferType | pattern_matching.rs:528:31:528:35 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:529:22:529:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:529:22:529:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:529:22:529:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:529:43:529:53 | empty_slice | | file://:0:0:0:0 | & | | pattern_matching.rs:529:43:529:53 | empty_slice | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:529:43:529:53 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:531:9:531:11 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:531:9:531:11 | SlicePat | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:531:9:531:11 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:531:16:534:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:533:22:533:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:533:22:533:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:533:22:533:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:535:9:535:23 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:535:9:535:23 | SlicePat | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:535:9:535:23 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:535:28:539:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:538:22:538:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:538:22:538:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:538:22:538:70 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:540:9:540:34 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:540:9:540:34 | SlicePat | &T | file://:0:0:0:0 | [] | | pattern_matching.rs:540:9:540:34 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:540:39:550:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | file://:0:0:0:0 | & | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:545:17:548:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:545:17:548:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:545:17:548:34 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:554:9:554:13 | array | | file://:0:0:0:0 | [] | | pattern_matching.rs:554:9:554:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:17:554:28 | [...] | | file://:0:0:0:0 | [] | @@ -6922,50 +7743,68 @@ inferType | pattern_matching.rs:554:18:554:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:24:554:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:27:554:27 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:555:5:562:5 | match array { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:555:11:555:15 | array | | file://:0:0:0:0 | [] | | pattern_matching.rs:555:11:555:15 | array | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:556:9:556:17 | SlicePat | | file://:0:0:0:0 | [] | | pattern_matching.rs:556:9:556:17 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:556:22:561:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:560:22:560:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:560:22:560:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:560:22:560:70 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:565:24:601:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:567:27:567:28 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:9:568:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:17:568:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:570:5:576:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:570:11:570:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:571:9:571:16 | CONSTANT | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:571:21:574:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:572:17:572:27 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:572:31:572:35 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:573:22:573:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:573:22:573:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:573:22:573:56 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:575:9:575:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:575:14:575:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:579:9:579:14 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:9:579:14 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:33:579:37 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:580:5:588:5 | match option { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:580:11:580:16 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:580:11:580:16 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:581:9:581:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:581:9:581:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:581:27:583:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:582:22:582:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:582:22:582:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:582:22:582:35 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:584:24:584:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:584:30:587:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:585:17:585:26 | some_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:585:30:585:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:586:22:586:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:586:22:586:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:586:22:586:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:586:40:586:49 | some_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:591:5:600:5 | match ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | @@ -6974,53 +7813,69 @@ inferType | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:592:33:592:33 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:592:39:595:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:593:17:593:24 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:593:28:593:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:594:22:594:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:594:22:594:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:594:22:594:45 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:594:38:594:45 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:34:596:34 | e | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:596:40:599:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:597:17:597:25 | err_value | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:597:29:597:29 | e | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:598:22:598:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:598:22:598:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:598:22:598:43 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:598:35:598:43 | err_value | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:603:22:638:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:604:9:604:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:604:17:604:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:607:5:617:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:607:11:607:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:17 | 1 \| 2 \| 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:13:608:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:17:608:17 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:608:22:611:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:609:17:609:25 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:609:29:609:33 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:610:22:610:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:610:22:610:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:610:22:610:50 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:10 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:15 | 10 \| 20 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:14:612:15 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:612:20:615:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:613:17:613:25 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:613:29:613:33 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:614:22:614:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:614:22:614:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:614:22:614:50 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:616:9:616:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:616:14:616:15 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:620:9:620:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:17:620:36 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:28:620:28 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:620:34:620:34 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:621:5:628:5 | match point { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:621:11:621:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:29 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:53 | ... \| ... | | pattern_matching.rs:135:1:140:1 | Point | @@ -7031,17 +7886,22 @@ inferType | pattern_matching.rs:622:41:622:41 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:47:622:47 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:51:622:51 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:622:58:626:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:623:17:623:22 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:623:26:623:26 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:17:624:22 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:26:624:26 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:625:22:625:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:625:22:625:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:625:22:625:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:625:49:625:54 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:57:625:62 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:627:9:627:9 | _ | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:627:14:627:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:631:5:637:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:631:11:631:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:14 | RangePat | | {EXTERNAL LOCATION} | i32 | @@ -7050,14 +7910,19 @@ inferType | pattern_matching.rs:632:18:632:19 | 90 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:18:632:25 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:23:632:25 | 100 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:632:30:635:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:633:17:633:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:633:34:633:38 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:634:22:634:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:634:22:634:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:634:22:634:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:636:9:636:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:636:14:636:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:640:24:674:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:641:9:641:13 | tuple | | file://:0:0:0:0 | (T_4) | | pattern_matching.rs:641:9:641:13 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:641:9:641:13 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | @@ -7072,6 +7937,7 @@ inferType | pattern_matching.rs:641:24:641:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:30:641:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:641:38:641:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:644:5:649:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:644:11:644:15 | tuple | | file://:0:0:0:0 | (T_4) | | pattern_matching.rs:644:11:644:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:644:11:644:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | @@ -7082,10 +7948,14 @@ inferType | pattern_matching.rs:645:9:645:19 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:645:9:645:19 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:645:9:645:19 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:645:24:648:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:647:22:647:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:647:22:647:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:647:22:647:54 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:651:5:656:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:651:11:651:15 | tuple | | file://:0:0:0:0 | (T_4) | | pattern_matching.rs:651:11:651:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:651:11:651:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | @@ -7096,10 +7966,14 @@ inferType | pattern_matching.rs:652:9:652:18 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:652:9:652:18 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:652:9:652:18 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:652:23:655:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:654:22:654:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:654:22:654:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:654:22:654:52 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:658:5:664:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:658:11:658:15 | tuple | | file://:0:0:0:0 | (T_4) | | pattern_matching.rs:658:11:658:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:658:11:658:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | @@ -7110,32 +7984,47 @@ inferType | pattern_matching.rs:659:9:659:25 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:659:9:659:25 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:659:9:659:25 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:659:30:663:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:662:22:662:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:662:22:662:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:662:22:662:67 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:17:667:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:28:667:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:667:35:667:36 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:668:5:673:5 | match point { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:668:11:668:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:9:669:23 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:17:669:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:669:28:672:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:670:17:670:22 | rest_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:670:26:670:26 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:671:22:671:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:671:22:671:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:671:22:671:47 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:671:42:671:47 | rest_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:676:25:696:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:678:17:678:18 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:678:17:678:18 | match 42i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:679:17:679:17 | match 42i32 { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:679:17:679:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:694:21:694:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:694:21:694:29 | match 42i32 { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:694:28:694:29 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:695:21:695:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:695:21:695:28 | match 10i32 { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:695:28:695:28 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:698:34:724:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:700:9:700:20 | complex_data | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:700:9:700:20 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:700:9:700:20 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7156,6 +8045,7 @@ inferType | pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:702:11:702:22 | complex_data | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:702:11:702:22 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:702:11:702:22 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7174,6 +8064,7 @@ inferType | pattern_matching.rs:704:50:704:52 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:55:704:55 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:58:704:58 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:704:66:712:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:705:17:705:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:705:28:705:28 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:706:17:706:24 | nested_g | | {EXTERNAL LOCATION} | u8 | @@ -7182,8 +8073,10 @@ inferType | pattern_matching.rs:707:28:707:28 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | file://:0:0:0:0 | & | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:709:17:710:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:709:17:710:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:709:17:710:44 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:710:17:710:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:710:27:710:34 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:710:37:710:44 | nested_b | | {EXTERNAL LOCATION} | u8 | @@ -7208,17 +8101,21 @@ inferType | pattern_matching.rs:714:61:714:61 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:70:714:70 | _ | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:70:714:70 | _ | T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:76:717:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:715:17:715:29 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:715:33:715:33 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | file://:0:0:0:0 | & | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:716:22:716:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:716:22:716:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:716:22:716:65 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:716:53:716:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:719:9:719:13 | other | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:719:9:719:13 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:719:9:719:13 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:719:9:719:13 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:719:18:722:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:720:17:720:29 | other_complex | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:720:17:720:29 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:720:17:720:29 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7229,12 +8126,15 @@ inferType | pattern_matching.rs:720:33:720:37 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:721:22:721:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:721:22:721:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:721:22:721:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:721:50:721:62 | other_complex | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:721:50:721:62 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:721:50:721:62 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:721:50:721:62 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:726:37:758:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:728:9:728:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:17:728:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:28:728:29 | 10 | | {EXTERNAL LOCATION} | i32 | @@ -7320,6 +8220,7 @@ inferType | pattern_matching.rs:756:23:756:27 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:9:757:15 | let_mut | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:19:757:25 | mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:760:42:789:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:763:22:763:35 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:763:30:763:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:33:763:33 | y | | {EXTERNAL LOCATION} | i32 | @@ -7405,6 +8306,7 @@ inferType | pattern_matching.rs:788:41:788:45 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:788:41:788:45 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:788:41:788:45 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:792:35:824:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:794:23:794:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:34:794:34 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -7416,14 +8318,17 @@ inferType | pattern_matching.rs:795:9:795:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:17:795:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:795:20:795:20 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:34:799:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:796:13:796:18 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:796:22:796:22 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:13:797:18 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:22:797:22 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:798:18:798:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:798:18:798:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:798:18:798:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:798:45:798:50 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:53:798:58 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:9:802:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7431,18 +8336,22 @@ inferType | pattern_matching.rs:802:24:802:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:802:24:802:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:39:802:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:803:5:806:5 | if ... {...} | | file://:0:0:0:0 | () | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:27:803:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:31:803:32 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:37:803:48 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:37:803:48 | option_value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:803:50:806:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:804:13:804:20 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:804:24:804:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:805:18:805:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:805:18:805:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:805:18:805:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:805:47:805:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:13:809:17 | stack | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:809:13:809:17 | stack | A | {EXTERNAL LOCATION} | Global | @@ -7461,28 +8370,55 @@ inferType | pattern_matching.rs:810:25:810:29 | stack | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:25:810:35 | stack.pop() | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:25:810:35 | stack.pop() | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:810:37:813:5 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:811:13:811:23 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:811:27:811:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:812:18:812:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:812:18:812:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:812:18:812:42 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:812:32:812:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:9:816:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:17:816:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:817:5:823:5 | match value { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:817:11:817:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:9:818:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:14 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:18 | ... > ... | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:818:18:818:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:818:23:821:9 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:819:17:819:23 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:819:27:819:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:820:22:820:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:820:22:820:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:820:22:820:44 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:820:38:820:44 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:822:9:822:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:822:14:822:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:826:28:846:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:827:5:827:7 | f(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:827:5:827:7 | f(...) | T | file://:0:0:0:0 | () | +| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | file://:0:0:0:0 | () | testFailures From ea6b05eda3a3a176de90076f8fdaab7c16efc868 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <93738568+jketema@users.noreply.github.com> Date: Wed, 29 Oct 2025 15:49:53 +0100 Subject: [PATCH 449/965] Update docs/codeql/codeql-overview/system-requirements.rst --- docs/codeql/codeql-overview/system-requirements.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-overview/system-requirements.rst b/docs/codeql/codeql-overview/system-requirements.rst index 6ade30b4901..9f477a9b39b 100644 --- a/docs/codeql/codeql-overview/system-requirements.rst +++ b/docs/codeql/codeql-overview/system-requirements.rst @@ -48,7 +48,7 @@ For Rust extraction: For Swift extraction: -- Only macOS is supported. +- Only macOS is supported as a host platform. For Java extraction: From cf2cd2088403dda9994de737b6c58f7deb908754 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 29 Oct 2025 15:54:17 +0100 Subject: [PATCH 450/965] Swift: Update resources --- swift/third_party/load.bzl | 2 -- swift/third_party/resources/resource-dir-linux.zip | 2 +- swift/third_party/resources/resource-dir-macos.zip | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index d13c127102d..d19345a1880 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,8 +5,6 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main - "resource-dir-macOS-swift-6.2-RELEASE-128.zip": "64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e", - "resource-dir-Linux-swift-6.2-RELEASE-128.zip": "44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index b8e0393bee1..6029e7657c0 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d58eaae17536e26586df9aa8333637859d3b79daf2c3694cd75aad94d8fcce8e +oid sha256:44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb size 385205623 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index b7f8f4df10c..368fcc2551d 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:258a766c51fcce31839c4f6ff823ef9909350e00c62c78de4c75d58ede3b45da -size 815605040 +oid sha256:64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e +size 614058230 From b189f1fe3f57bf2d7b90987c59a396f7fcd61973 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 24 Oct 2025 09:12:42 +0200 Subject: [PATCH 451/965] Rust: Refactor using shared constraint satisfaction --- .../codeql/rust/internal/TypeInference.qll | 8 +- .../typeinference/FunctionOverloading.qll | 4 +- .../internal/typeinference/FunctionType.qll | 142 +++++++----------- .../typeinference/internal/TypeInference.qll | 2 +- 4 files changed, 60 insertions(+), 96 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index d550f56b09d..4a53b5dee8e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -896,7 +896,7 @@ private predicate assocFunctionInfo( ) { f = i.getASuccessor(name) and arity = f.getParamList().getNumberOfParams() and - t.appliesTo(f, pos, i) + t.appliesTo(f, i, pos) } /** @@ -1791,7 +1791,7 @@ private module MethodResolution { predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t) { exists(TypePath path, Type t0 | FunctionOverloading::functionResolutionDependsOnArgument(i, f, pos, path, t0) and - t.appliesTo(f, pos, i) and + t.appliesTo(f, i, pos) and // for now, we do not handle ambiguous targets when one of the types it iself // a type parameter; we should be checking the constraints on that type parameter // in this case @@ -2024,7 +2024,7 @@ private module NonMethodResolution { ImplItemNode impl, NonMethodFunction implFunction ) { exists(TypePath path | - assocFunctionTypeAt(implFunction, impl, pos, path, type) and + type = assocFunctionTypeAt(implFunction, impl, pos, path) and implFunction.implements(traitFunction) and FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, _) | @@ -2238,7 +2238,7 @@ private module NonMethodResolution { private module NonMethodArgsAreInstantiationsOfInput implements ArgsAreInstantiationsOfInputSig { predicate toCheck(ImplOrTraitItemNode i, Function f, FunctionPosition pos, AssocFunctionType t) { - t.appliesTo(f, pos, i) and + t.appliesTo(f, i, pos) and ( exists(Type t0 | // for now, we do not handle ambiguous targets when one of the types it iself diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index d8ca50962a1..9373f62b0e4 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -79,7 +79,7 @@ predicate traitTypeParameterOccurrence( TypeParameter tp ) { f = trait.getASuccessor(functionName) and - assocFunctionTypeAt(f, trait, pos, path, tp) and + tp = assocFunctionTypeAt(f, trait, pos, path) and tp = trait.(TraitTypeAbstraction).getATypeParameter() } @@ -120,7 +120,7 @@ predicate functionResolutionDependsOnArgument( exists(TraitItemNode trait, string functionName | implHasSibling(impl, trait) and traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and - assocFunctionTypeAt(f, impl, pos, path, type) and + type = assocFunctionTypeAt(f, impl, pos, path) and f = impl.getASuccessor(functionName) and pos.isPosition() ) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index d6cefdb1edc..4c4de4fa767 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -72,28 +72,54 @@ module FunctionPositionMatchingInput { } private newtype TAssocFunctionType = - MkAssocFunctionType(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { - f = i.getAnAssocItem() and - exists(pos.getTypeMention(f)) - } or - MkInheritedAssocFunctionType( - Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, - ImplOrTraitItemNode i - ) { - exists(AssocFunctionType inherited | - inherited.appliesTo(f, pos, parent) and - f = i.getASuccessor(_) - | - parent = i.(ImplItemNode).resolveTraitTy() and - parentMention = i.(ImplItemNode).getTraitPath() - or - parent = i.(TraitItemNode).resolveBound(parentMention) - ) + /** An associated function `f` that should be specialized for `i` at `pos`. */ + MkAssocFunctionType(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { + f = i.getASuccessor(_) and exists(pos.getTypeMention(f)) } +bindingset[condition, constraint, tp] +private Type traitConstraintTypeAt( + TypeMention condition, TypeMention constraint, TypeParameter tp, TypePath path +) { + BaseTypes::conditionSatisfiesConstraintTypeAt(_, condition, constraint, + TypePath::singleton(tp).appendInverse(path), result) +} + /** - * The type of an associated function at a given position, when viewed as a member - * of a given trait or `impl` block. + * Gets if the type of the function `f` when specialized for `i` at position + * `pos` at path `path` + */ +pragma[nomagic] +Type assocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path) { + exists(MkAssocFunctionType(f, i, pos)) and + ( + // No specialization needed when the function is directly in the trait or + // impl block or the declared type is not a type parameter + (i.getAnAssocItem() = f or not result instanceof TypeParameter) and + result = pos.getTypeMention(f).resolveTypeAt(path) + or + not i.getAnAssocItem() = f and + exists(TypePath prefix, TypePath suffix, TypeParameter tp | + path = prefix.append(suffix) and + tp = pos.getTypeMention(f).resolveTypeAt(prefix) + | + if tp = TSelfTypeParameter(_) + then result = resolveImplOrTraitType(i, suffix) + else + exists(TraitItemNode trait, TypeMention condition, TypeMention constraint | + trait.getAnAssocItem() = f and + BaseTypes::rootTypesSatisfaction(_, TTrait(trait), _, condition, constraint) and + result = traitConstraintTypeAt(condition, constraint, tp, suffix) + | + condition = i.(Trait) or condition = i.(Impl).getSelfTy() + ) + ) + ) +} + +/** + * The type of an associated function at a given position, when its implicit + * `Self` type parameter is specialized to a given trait or `impl` block. * * Example: * @@ -126,64 +152,13 @@ private newtype TAssocFunctionType = * `self4` | `impl T2 for X` | `X` * `self5` | `impl T2 for X` | `X` */ -class AssocFunctionType extends TAssocFunctionType { - private predicate isFunctionType(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { - this = MkAssocFunctionType(f, pos, i) - } - - private predicate isInheritedFunctionType( - Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, - ImplOrTraitItemNode i - ) { - this = MkInheritedAssocFunctionType(f, pos, parentMention, parent, i) - } - +class AssocFunctionType extends MkAssocFunctionType { /** * Holds if this function type applies to the function `f` at position `pos`, * when viewed as a member of the `impl` or trait item `i`. */ - predicate appliesTo(Function f, FunctionPosition pos, ImplOrTraitItemNode i) { - this.isFunctionType(f, pos, i) - or - this.isInheritedFunctionType(f, pos, _, _, i) - } - - /** Gets the type at the given path. */ - pragma[nomagic] - Type getDeclaredTypeAt(TypePath path) { - exists(Function f, FunctionPosition pos | - this.isFunctionType(f, pos, _) and - result = pos.getTypeMention(f).resolveTypeAt(path) - ) - or - exists( - Function f, FunctionPosition pos, TypeMention parentMention, TraitItemNode parent, - AssocFunctionType parentType, ImplOrTraitItemNode i - | - this.isInheritedFunctionType(f, pos, parentMention, parent, i) and - parentType.appliesTo(f, pos, parent) - | - result = parentType.getDeclaredTypeAt(path) and - not result instanceof TypeParameter - or - exists(TypePath prefix, TypePath suffix | path = prefix.append(suffix) | - parentType.hasSelfTypeParameterAt(prefix) and - result = resolveImplOrTraitType(i, suffix) - or - exists(TypeParameter tp | - tp = parentType.getTypeParameterAt(prefix) and - result = parentMention.resolveTypeAt(TypePath::singleton(tp).appendInverse(suffix)) - ) - ) - ) - } - - pragma[nomagic] - private TypeParameter getTypeParameterAt(TypePath path) { result = this.getDeclaredTypeAt(path) } - - pragma[nomagic] - private predicate hasSelfTypeParameterAt(TypePath path) { - this.getTypeParameterAt(path) = TSelfTypeParameter(_) + predicate appliesTo(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { + this = MkAssocFunctionType(f, i, pos) } /** @@ -196,7 +171,10 @@ class AssocFunctionType extends TAssocFunctionType { * traits when matching. */ Type getTypeAt(TypePath path) { - exists(Type t | t = this.getDeclaredTypeAt(path) | + exists(Function f, FunctionPosition pos, ImplOrTraitItemNode i, Type t | + this.appliesTo(f, i, pos) and + t = assocFunctionTypeAt(f, i, pos, path) + | not t instanceof SelfTypeParameter and result = t or @@ -206,7 +184,7 @@ class AssocFunctionType extends TAssocFunctionType { private TypeMention getTypeMention() { exists(Function f, FunctionPosition pos | - this.appliesTo(f, pos, _) and + this.appliesTo(f, _, pos) and result = pos.getTypeMention(f) ) } @@ -216,20 +194,6 @@ class AssocFunctionType extends TAssocFunctionType { Location getLocation() { result = this.getTypeMention().getLocation() } } -/** - * Holds if the type of the function `f` at position `pos` and path `path` inside - * `i` is `type`. - */ -pragma[nomagic] -predicate assocFunctionTypeAt( - Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path, Type type -) { - exists(AssocFunctionType aft | - aft.appliesTo(f, pos, i) and - type = aft.getDeclaredTypeAt(path) - ) -} - private Trait getALookupTrait(Type t) { result = t.(TypeParamTypeParameter).getTypeParam().(TypeParamItemNode).resolveABound() or diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index d1d1b338707..a827ef3cd79 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -729,7 +729,7 @@ module Make1 Input1> { } /** Provides logic related to base types. */ - private module BaseTypes { + module BaseTypes { /** * Holds if, when `tm1` is considered an instantiation of `tm2`, then at * the type parameter `tp` it has the type `t` at `path`. From 5697a7e612b504fa48c0f20e012cd33046250af0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 10:43:44 +0100 Subject: [PATCH 452/965] Rust: More type inference tests --- .../test/library-tests/type-inference/main.rs | 27 +++++ .../type-inference/type-inference.expected | 103 +++++++++++------- 2 files changed, 88 insertions(+), 42 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 2b1cee3debf..5634381c671 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2837,6 +2837,33 @@ mod local_function { } } +mod block_types { + #[rustfmt::skip] + fn f1(cond: bool) -> i32 { + // Block that evaluates to unit + let a = { // $ MISSING: type=a:() + if cond { + return 12; + } + }; + 0 + } + + #[rustfmt::skip] + fn f2() -> i32 { + // Block that does not evaluate to unit + let b = 'label: { // $ MISSING: b:i32 SPURIOUS: certainType=b:() + break 'label 12; + }; + println!("b: {:?}", b); + 0 + } + + fn f3() -> i32 { + return 0; + } // should only have type `i32`, not `()` +} + mod blanket_impl; mod closure; mod dereference; diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 73ef95f5568..7511e0ec5e9 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -6424,48 +6424,67 @@ inferType | main.rs:2835:13:2835:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2835:13:2835:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | | main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2845:11:2880:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2846:5:2846:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2847:5:2847:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2848:5:2848:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2848:20:2848:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2848:41:2848:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2849:5:2849:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2850:5:2850:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2851:5:2851:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2852:5:2852:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2853:5:2853:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2854:5:2854:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2855:5:2855:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2856:5:2856:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2857:5:2857:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2858:5:2858:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2859:5:2859:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2860:5:2860:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2861:5:2861:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2862:5:2862:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2863:5:2863:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2864:5:2864:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2865:5:2865:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2865:5:2865:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2866:5:2866:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2867:5:2867:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2868:5:2868:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2869:5:2869:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2870:5:2870:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2871:5:2871:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2872:5:2872:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2873:5:2873:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2874:5:2874:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2875:5:2875:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2876:5:2876:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2877:5:2877:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2878:5:2878:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2878:5:2878:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2878:5:2878:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2878:5:2878:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2878:16:2878:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2879:5:2879:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2842:11:2842:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2842:30:2850:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2845:16:2845:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2846:24:2846:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2849:9:2849:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:20:2860:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2855:13:2855:13 | b | | file://:0:0:0:0 | () | +| main.rs:2855:17:2857:9 | 'label: { ... } | | file://:0:0:0:0 | () | +| main.rs:2856:26:2856:27 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2858:18:2858:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2858:18:2858:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2858:18:2858:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2858:18:2858:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2858:18:2858:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2858:18:2858:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2858:29:2858:29 | b | | file://:0:0:0:0 | () | +| main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2872:11:2907:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2873:5:2873:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2874:5:2874:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2875:5:2875:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2875:20:2875:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2875:41:2875:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2876:5:2876:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2877:5:2877:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2878:5:2878:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2879:5:2879:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2880:5:2880:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2881:5:2881:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2882:5:2882:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2883:5:2883:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2884:5:2884:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2885:5:2885:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2886:5:2886:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2887:5:2887:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2888:5:2888:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2889:5:2889:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2890:5:2890:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2891:5:2891:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2892:5:2892:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2892:5:2892:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:2893:5:2893:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2894:5:2894:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2895:5:2895:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2896:5:2896:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2897:5:2897:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2898:5:2898:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2899:5:2899:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2900:5:2900:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2901:5:2901:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2902:5:2902:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2903:5:2903:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2904:5:2904:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2905:5:2905:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2905:5:2905:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2905:5:2905:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2905:5:2905:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2905:16:2905:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2906:5:2906:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From cca458c2ac5e24de574c4a2b829eb08f3d04a8ac Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 12:36:38 +0100 Subject: [PATCH 453/965] Rust: Address review comments and handle `!` types in type inference --- .../codeql/rust/internal/TypeInference.qll | 65 +++++++++++++++---- .../lib/codeql/rust/internal/TypeMention.qll | 6 +- .../typeinference/BlanketImplementation.qll | 5 +- .../internal/typeinference/FunctionType.qll | 13 ++-- .../test/library-tests/type-inference/main.rs | 4 +- .../type-inference/type-inference.expected | 53 ++++++++++++--- 6 files changed, 114 insertions(+), 32 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index d9c3d79379e..96ebf10a0e4 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -232,9 +232,14 @@ import M2 module Consistency { import M2::Consistency + private Type inferCertainTypeAdj(AstNode n, TypePath path) { + result = CertainTypeInference::inferCertainType(n, path) and + not result = TNeverType() + } + predicate nonUniqueCertainType(AstNode n, TypePath path, Type t) { - strictcount(CertainTypeInference::inferCertainType(n, path)) > 1 and - t = CertainTypeInference::inferCertainType(n, path) and + strictcount(inferCertainTypeAdj(n, path)) > 1 and + t = inferCertainTypeAdj(n, path) and // Suppress the inconsistency if `n` is a self parameter and the type // mention for the self type has multiple types for a path. not exists(ImplItemNode impl, TypePath selfTypePath | @@ -291,6 +296,17 @@ private Type inferAnnotatedType(AstNode n, TypePath path) { result = n.(ShorthandSelfParameterMention).resolveTypeAt(path) } +/** + * Holds if `me` is a call to the `panic!` macro. + * + * `panic!` needs special treatment, because it expands to a block expression + * that looks like it should have type `()` instead of the correct `!` type. + */ +pragma[nomagic] +private predicate isPanicMacroCall(MacroExpr me) { + me.getMacroCall().resolveMacro().(MacroRules).getName().getText() = "panic" +} + /** Module for inferring certain type information. */ module CertainTypeInference { pragma[nomagic] @@ -443,6 +459,14 @@ module CertainTypeInference { or result = inferCastExprType(n, path) or + exprHasUnitType(n) and + path.isEmpty() and + result instanceof UnitType + or + isPanicMacroCall(n) and + path.isEmpty() and + result instanceof NeverType + or infersCertainTypeAt(n, path, result.getATypeParameter()) } @@ -579,7 +603,8 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n2 = be.getRhs() ) or - n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() + n1 = n2.(MacroExpr).getMacroCall().getMacroCallExpansion() and + not isPanicMacroCall(n2) or n1 = n2.(MacroPat).getMacroCall().getMacroCallExpansion() or @@ -931,14 +956,17 @@ private predicate functionInfoBlanketLike( */ bindingset[path, type] private predicate isComplexRootStripped(TypePath path, Type type) { - path.isEmpty() and - not validSelfType(type) - or - exists(TypeParameter tp | - complexSelfRoot(_, tp) and - path = TypePath::singleton(tp) and - exists(type) - ) + ( + path.isEmpty() and + not validSelfType(type) + or + exists(TypeParameter tp | + complexSelfRoot(_, tp) and + path = TypePath::singleton(tp) and + exists(type) + ) + ) and + type != TNeverType() } /** @@ -1540,7 +1568,8 @@ private module MethodResolution { MethodCall getMethodCall() { result = mc_ } Type getTypeAt(TypePath path) { - result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) + result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) and + not result = TNeverType() } pragma[nomagic] @@ -2810,7 +2839,8 @@ private predicate isReturnExprCfgAncestor(AstNode n) { pragma[nomagic] predicate isUnitBlockExpr(BlockExpr be) { not be.getStmtList().hasTailExpr() and - not isReturnExprCfgAncestor(be) + not isReturnExprCfgAncestor(be) and + not be.hasLabel() } pragma[nomagic] @@ -2831,6 +2861,15 @@ private Type inferBlockExprType(BlockExpr be, TypePath path) { ) } +pragma[nomagic] +private predicate exprHasUnitType(Expr e) { + e = any(IfExpr ie | not ie.hasElse()) + or + e instanceof WhileExpr + or + e instanceof ForExpr +} + final private class AwaitTarget extends Expr { AwaitTarget() { this = any(AwaitExpr ae).getExpr() } diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 2fde69d6c4d..c4185efc91f 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -444,7 +444,11 @@ TypeMention getSelfParamTypeMention(SelfParam self) { } /** - * An element used to represent the implicit `()` return type of function. + * An element used to represent the implicit `()` return type of a function. + * + * Since the implicit type does not appear in the AST, we (somewhat arbitrarily) + * choose the name of the function as a type mention. This works because there + * is a one-to-one correspondence between a function and its name. */ class ShorthandReturnTypeMention extends TypeMention instanceof Name { private Function f; diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index b88424caa34..6ddb7ee3be0 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -90,7 +90,10 @@ module SatisfiesBlanketConstraint< Location getLocation() { result = at.getLocation() } - Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) } + Type getTypeAt(TypePath path) { + result = at.getTypeAt(blanketPath.appendInverse(path)) and + not result = TNeverType() + } string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index d6cefdb1edc..c60378da0c6 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -46,7 +46,7 @@ class FunctionPosition extends TFunctionPosition { result = f.getParam(this.asPosition()).getTypeRepr() or this.isReturn() and - result = f.getRetType().getTypeRepr() + result = getReturnTypeMention(f) } string toString() { @@ -263,7 +263,10 @@ module ArgIsInstantiationOf< final private class ArgFinal = Arg; private class ArgSubst extends ArgFinal { - Type getTypeAt(TypePath path) { result = substituteLookupTraits(super.getTypeAt(path)) } + Type getTypeAt(TypePath path) { + result = substituteLookupTraits(super.getTypeAt(path)) and + not result = TNeverType() + } } private module IsInstantiationOfInput implements @@ -368,10 +371,10 @@ module ArgsAreInstantiationsOf { CallAndPos cp, Input::Call call, FunctionPosition pos, int rnk, Function f, TypeAbstraction abs, AssocFunctionType constraint ) { - cp = MkCallAndPos(call, pos) and + cp = MkCallAndPos(call, pragma[only_bind_into](pos)) and call.hasTargetCand(abs, f) and - toCheckRanked(abs, f, pos, rnk) and - Input::toCheck(abs, f, pos, constraint) + toCheckRanked(abs, f, pragma[only_bind_into](pos), rnk) and + Input::toCheck(abs, f, pragma[only_bind_into](pos), constraint) } pragma[nomagic] diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 5634381c671..f0bf215d49b 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2841,7 +2841,7 @@ mod block_types { #[rustfmt::skip] fn f1(cond: bool) -> i32 { // Block that evaluates to unit - let a = { // $ MISSING: type=a:() + let a = { // $ type=a:() if cond { return 12; } @@ -2852,7 +2852,7 @@ mod block_types { #[rustfmt::skip] fn f2() -> i32 { // Block that does not evaluate to unit - let b = 'label: { // $ MISSING: b:i32 SPURIOUS: certainType=b:() + let b = 'label: { // $ MISSING: b:i32 break 'label 12; }; println!("b: {:?}", b); diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 7511e0ec5e9..a5ec277a939 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -3204,7 +3204,7 @@ inferType | main.rs:1272:22:1272:25 | SelfParam | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1272:22:1272:25 | SelfParam | Snd | main.rs:1271:15:1271:17 | Snd | | main.rs:1272:35:1279:9 | { ... } | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1273:13:1278:13 | match self { ... } | | file://:0:0:0:0 | () | +| main.rs:1273:13:1278:13 | match self { ... } | | file://:0:0:0:0 | ! | | main.rs:1273:13:1278:13 | match self { ... } | | main.rs:1271:15:1271:17 | Snd | | main.rs:1273:19:1273:22 | self | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1273:19:1273:22 | self | Fst | main.rs:1271:10:1271:12 | Fst | @@ -3212,29 +3212,25 @@ inferType | main.rs:1274:17:1274:38 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1274:17:1274:38 | ...::PairNone(...) | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1274:17:1274:38 | ...::PairNone(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:43:1274:82 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1274:43:1274:82 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1274:43:1274:82 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:1274:50:1274:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | | main.rs:1274:50:1274:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | | main.rs:1274:50:1274:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1274:50:1274:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1274:50:1274:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1274:50:1274:81 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1274:50:1274:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | | main.rs:1274:50:1274:81 | { ... } | | file://:0:0:0:0 | () | | main.rs:1275:17:1275:38 | ...::PairFst(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1275:17:1275:38 | ...::PairFst(...) | Fst | main.rs:1271:10:1271:12 | Fst | | main.rs:1275:17:1275:38 | ...::PairFst(...) | Snd | main.rs:1271:15:1271:17 | Snd | | main.rs:1275:37:1275:37 | _ | | main.rs:1271:10:1271:12 | Fst | -| main.rs:1275:43:1275:81 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1275:43:1275:81 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | +| main.rs:1275:43:1275:81 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:1275:50:1275:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | | main.rs:1275:50:1275:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | | main.rs:1275:50:1275:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1275:50:1275:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1275:50:1275:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1275:50:1275:80 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1275:50:1275:80 | MacroExpr | | main.rs:1271:15:1271:17 | Snd | | main.rs:1275:50:1275:80 | { ... } | | file://:0:0:0:0 | () | | main.rs:1276:17:1276:40 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | | main.rs:1276:17:1276:40 | ...::PairSnd(...) | Fst | main.rs:1271:10:1271:12 | Fst | @@ -5452,6 +5448,7 @@ inferType | main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:2498:16:2605:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2501:9:2501:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2501:13:2501:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:18:2501:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2501:18:2501:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | @@ -5459,6 +5456,7 @@ inferType | main.rs:2501:22:2501:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:25:2501:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2501:28:2501:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2502:9:2502:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2502:18:2502:26 | [...] | | file://:0:0:0:0 | [] | | main.rs:2502:18:2502:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2502:18:2502:41 | ... .map(...) | | file://:0:0:0:0 | [] | @@ -5469,6 +5467,7 @@ inferType | main.rs:2502:32:2502:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | | main.rs:2502:40:2502:40 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2502:43:2502:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2503:9:2503:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2503:18:2503:26 | [...] | | file://:0:0:0:0 | [] | @@ -5490,6 +5489,7 @@ inferType | main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | u8 | | main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2506:9:2506:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | u8 | | main.rs:2506:18:2506:22 | vals1 | | file://:0:0:0:0 | [] | @@ -5502,6 +5502,7 @@ inferType | main.rs:2508:21:2508:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2508:22:2508:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2508:28:2508:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:9:2509:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2509:13:2509:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2509:18:2509:22 | vals2 | | file://:0:0:0:0 | [] | | main.rs:2509:18:2509:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | @@ -5518,6 +5519,7 @@ inferType | main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | u32 | | main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2512:9:2512:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2512:13:2512:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2512:18:2512:22 | vals3 | | file://:0:0:0:0 | [] | | main.rs:2512:18:2512:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | @@ -5531,6 +5533,7 @@ inferType | main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | u64 | | main.rs:2514:35:2514:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2515:9:2515:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2515:13:2515:13 | u | | {EXTERNAL LOCATION} | u64 | | main.rs:2515:18:2515:22 | vals4 | | file://:0:0:0:0 | [] | | main.rs:2515:18:2515:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | @@ -5547,6 +5550,7 @@ inferType | main.rs:2517:36:2517:40 | "bar" | &T | {EXTERNAL LOCATION} | str | | main.rs:2517:43:2517:47 | "baz" | | file://:0:0:0:0 | & | | main.rs:2517:43:2517:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2518:9:2518:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2518:13:2518:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2518:13:2518:13 | s | | file://:0:0:0:0 | & | | main.rs:2518:13:2518:13 | s | &T | file://:0:0:0:0 | & | @@ -5559,6 +5563,7 @@ inferType | main.rs:2518:19:2518:26 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2518:19:2518:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | | main.rs:2518:28:2518:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2519:9:2519:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2519:13:2519:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2519:13:2519:13 | s | | file://:0:0:0:0 | & | | main.rs:2519:13:2519:13 | s | &T | file://:0:0:0:0 | & | @@ -5571,6 +5576,7 @@ inferType | main.rs:2519:23:2519:30 | strings1 | [T;...] | file://:0:0:0:0 | & | | main.rs:2519:23:2519:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | | main.rs:2519:32:2519:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2520:9:2520:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2520:13:2520:13 | s | | file://:0:0:0:0 | & | | main.rs:2520:13:2520:13 | s | &T | {EXTERNAL LOCATION} | str | | main.rs:2520:18:2520:25 | strings1 | | file://:0:0:0:0 | [] | @@ -5590,6 +5596,7 @@ inferType | main.rs:2526:13:2526:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2526:26:2526:30 | "baz" | | file://:0:0:0:0 | & | | main.rs:2526:26:2526:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2528:9:2528:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2528:13:2528:13 | s | | {EXTERNAL LOCATION} | String | | main.rs:2528:18:2528:25 | strings2 | | file://:0:0:0:0 | [] | | main.rs:2528:18:2528:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | @@ -5611,6 +5618,7 @@ inferType | main.rs:2534:13:2534:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2534:26:2534:30 | "baz" | | file://:0:0:0:0 | & | | main.rs:2534:26:2534:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2536:9:2536:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2536:13:2536:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2536:13:2536:13 | s | | file://:0:0:0:0 | & | | main.rs:2536:13:2536:13 | s | &T | {EXTERNAL LOCATION} | String | @@ -5625,6 +5633,7 @@ inferType | main.rs:2538:26:2538:42 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2538:45:2538:61 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2538:64:2538:80 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | +| main.rs:2539:9:2543:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2539:13:2539:13 | c | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2540:12:2540:20 | callables | | file://:0:0:0:0 | [] | | main.rs:2540:12:2540:20 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | @@ -5632,6 +5641,7 @@ inferType | main.rs:2542:17:2542:22 | result | | {EXTERNAL LOCATION} | i64 | | main.rs:2542:26:2542:26 | c | | main.rs:2486:5:2486:24 | MyCallable | | main.rs:2542:26:2542:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2547:9:2547:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2547:18:2547:18 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -5639,6 +5649,7 @@ inferType | main.rs:2547:18:2547:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2547:21:2547:22 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2547:24:2547:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2548:9:2548:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2548:13:2548:13 | u | | {EXTERNAL LOCATION} | Range | | main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | u8 | @@ -5659,6 +5670,7 @@ inferType | main.rs:2549:21:2549:25 | 0..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2549:21:2549:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2549:24:2549:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:9:2550:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2550:18:2550:22 | range | | {EXTERNAL LOCATION} | Range | @@ -5666,6 +5678,7 @@ inferType | main.rs:2550:24:2550:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2551:13:2551:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | | main.rs:2551:26:2551:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2552:9:2552:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2552:13:2552:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2552:18:2552:48 | &... | | file://:0:0:0:0 | & | | main.rs:2552:19:2552:36 | [...] | | file://:0:0:0:0 | [] | @@ -5681,6 +5694,7 @@ inferType | main.rs:2555:9:2558:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | | main.rs:2556:20:2556:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2557:18:2557:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2559:9:2559:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | Item | | main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2559:18:2559:23 | range1 | | {EXTERNAL LOCATION} | Range | @@ -5689,6 +5703,7 @@ inferType | main.rs:2563:26:2563:26 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2563:29:2563:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2563:32:2563:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2564:9:2564:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2564:24:2564:25 | { ... } | | file://:0:0:0:0 | () | | main.rs:2566:13:2566:18 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2566:13:2566:18 | vals4a | A | {EXTERNAL LOCATION} | Global | @@ -5702,6 +5717,7 @@ inferType | main.rs:2566:33:2566:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2566:39:2566:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2566:42:2566:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2567:9:2567:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2567:13:2567:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2567:13:2567:13 | u | | file://:0:0:0:0 | & | | main.rs:2567:18:2567:23 | vals4a | | {EXTERNAL LOCATION} | Vec | @@ -5714,6 +5730,7 @@ inferType | main.rs:2569:23:2569:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2569:29:2569:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2569:32:2569:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2570:9:2570:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2570:25:2570:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:2572:13:2572:17 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2572:13:2572:17 | vals5 | A | {EXTERNAL LOCATION} | Global | @@ -5729,6 +5746,7 @@ inferType | main.rs:2572:32:2572:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2572:38:2572:38 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2572:41:2572:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:9:2573:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2573:13:2573:13 | u | | file://:0:0:0:0 | & | @@ -5751,6 +5769,7 @@ inferType | main.rs:2575:33:2575:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2575:39:2575:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2575:42:2575:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2576:9:2576:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2576:13:2576:13 | u | | file://:0:0:0:0 | & | | main.rs:2576:13:2576:13 | u | &T | {EXTERNAL LOCATION} | u64 | | main.rs:2576:18:2576:22 | vals6 | | {EXTERNAL LOCATION} | Vec | @@ -5769,6 +5788,7 @@ inferType | main.rs:2579:9:2579:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | | main.rs:2579:9:2579:23 | vals7.push(...) | | file://:0:0:0:0 | () | | main.rs:2579:20:2579:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2580:9:2580:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2580:13:2580:13 | u | | {EXTERNAL LOCATION} | u8 | | main.rs:2580:13:2580:13 | u | | file://:0:0:0:0 | & | | main.rs:2580:18:2580:22 | vals7 | | {EXTERNAL LOCATION} | Vec | @@ -5779,6 +5799,10 @@ inferType | main.rs:2582:36:2582:36 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2582:45:2582:45 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2582:48:2582:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:13:2584:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2584:17:2587:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2584:36:2587:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2585:13:2586:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2585:29:2586:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2589:17:2589:20 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2589:17:2589:20 | map1 | K | {EXTERNAL LOCATION} | i32 | @@ -5832,6 +5856,7 @@ inferType | main.rs:2591:24:2591:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | | main.rs:2591:33:2591:37 | "two" | | file://:0:0:0:0 | & | | main.rs:2591:33:2591:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2592:9:2592:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2592:13:2592:15 | key | | {EXTERNAL LOCATION} | Item | | main.rs:2592:13:2592:15 | key | | file://:0:0:0:0 | & | | main.rs:2592:13:2592:15 | key | &T | {EXTERNAL LOCATION} | i32 | @@ -5849,6 +5874,7 @@ inferType | main.rs:2592:20:2592:30 | map1.keys() | V.T | file://:0:0:0:0 | & | | main.rs:2592:20:2592:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2592:32:2592:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2593:9:2593:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2593:13:2593:17 | value | | {EXTERNAL LOCATION} | Item | | main.rs:2593:13:2593:17 | value | | file://:0:0:0:0 | & | | main.rs:2593:13:2593:17 | value | &T | {EXTERNAL LOCATION} | Box | @@ -5869,6 +5895,7 @@ inferType | main.rs:2593:22:2593:34 | map1.values() | V.T | file://:0:0:0:0 | & | | main.rs:2593:22:2593:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2593:36:2593:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2594:9:2594:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2594:13:2594:24 | TuplePat | | file://:0:0:0:0 | (T_2) | | main.rs:2594:13:2594:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | | main.rs:2594:13:2594:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | @@ -5898,6 +5925,7 @@ inferType | main.rs:2594:29:2594:39 | map1.iter() | V.T | file://:0:0:0:0 | & | | main.rs:2594:29:2594:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2594:41:2594:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2595:9:2595:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2595:13:2595:24 | TuplePat | | file://:0:0:0:0 | (T_2) | | main.rs:2595:13:2595:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | | main.rs:2595:13:2595:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | @@ -5932,6 +5960,8 @@ inferType | main.rs:2599:17:2599:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2601:13:2601:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2601:17:2604:9 | while ... { ... } | | file://:0:0:0:0 | () | | main.rs:2601:23:2601:23 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2601:23:2601:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i32 | @@ -6426,12 +6456,14 @@ inferType | main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2842:11:2842:14 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2842:30:2850:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2844:13:2844:13 | a | | file://:0:0:0:0 | () | +| main.rs:2844:17:2848:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2845:13:2847:13 | if cond {...} | | file://:0:0:0:0 | () | | main.rs:2845:16:2845:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2845:21:2847:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2846:24:2846:25 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2849:9:2849:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2853:20:2860:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2855:13:2855:13 | b | | file://:0:0:0:0 | () | -| main.rs:2855:17:2857:9 | 'label: { ... } | | file://:0:0:0:0 | () | | main.rs:2856:26:2856:27 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2858:18:2858:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:2858:18:2858:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | @@ -6439,7 +6471,6 @@ inferType | main.rs:2858:18:2858:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2858:18:2858:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2858:18:2858:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2858:29:2858:29 | b | | file://:0:0:0:0 | () | | main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -8334,6 +8365,7 @@ inferType | pattern_matching.rs:794:45:794:64 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:56:794:56 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:794:62:794:62 | 4 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:795:9:795:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:17:795:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:795:20:795:20 | y | | {EXTERNAL LOCATION} | i32 | @@ -8381,6 +8413,7 @@ inferType | pattern_matching.rs:809:36:809:39 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:42:809:42 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:45:809:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:810:5:813:5 | while ... { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:810:15:810:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:15:810:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:20:810:20 | x | | {EXTERNAL LOCATION} | i32 | From fef08afff9020323bba3276327b953d3371888d9 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 29 Oct 2025 22:05:43 +0000 Subject: [PATCH 454/965] Python: Remove points-to to from `ControlFlowNode` Moves the existing points-to predicates to the newly added class `ControlFlowNodeWithPointsTo` which resides in the `LegacyPointsTo` module. (Existing code that uses these predicates should import this module, and references to `ControlFlowNode` should be changed to `ControlFlowNodeWithPointsTo`.) Also updates all existing points-to based code to do just this. --- python/ql/examples/snippets/store_none.ql | 3 +- python/ql/lib/LegacyPointsTo.qll | 121 ++++++++++++++++++ python/ql/lib/analysis/DefinitionTracking.qll | 21 +-- python/ql/lib/semmle/python/Exprs.qll | 13 +- python/ql/lib/semmle/python/Flow.qll | 90 ------------- python/ql/lib/semmle/python/Metrics.qll | 3 +- .../ql/lib/semmle/python/SpecialMethods.qll | 7 +- .../python/dataflow/old/Implementation.qll | 13 +- .../python/dataflow/old/TaintTracking.qll | 21 ++- .../python/dependencies/Dependencies.qll | 9 +- .../lib/semmle/python/objects/ObjectAPI.qll | 9 +- .../lib/semmle/python/types/ClassObject.qll | 7 +- .../ql/lib/semmle/python/types/Exceptions.qll | 17 ++- .../semmle/python/types/FunctionObject.qll | 23 ++-- python/ql/lib/semmle/python/types/Object.qll | 10 +- .../ql/lib/semmle/python/types/Properties.qll | 21 +-- .../semmle/python/values/StringAttributes.qll | 25 +++- .../src/Expressions/ContainsNonContainer.ql | 4 +- .../Formatting/AdvancedFormatting.qll | 11 +- python/ql/src/Expressions/HashedButNoHash.ql | 5 +- python/ql/src/Expressions/IsComparisons.qll | 7 +- .../ql/src/Expressions/TruncatedDivision.ql | 5 +- python/ql/src/Expressions/UseofApply.ql | 3 +- .../Imports/FromImportOfMutableAttribute.ql | 3 +- .../Statements/IterableStringOrSequence.ql | 3 +- .../ql/src/Statements/ModificationOfLocals.ql | 5 +- .../ql/src/Statements/NonIteratorInForLoop.ql | 3 +- .../src/Statements/ShouldUseWithStatement.ql | 3 +- .../Statements/StringConcatenationInLoop.ql | 3 +- python/ql/src/Statements/UseOfExit.ql | 3 +- python/ql/src/Testing/Mox.qll | 3 +- python/ql/src/Variables/MonkeyPatched.qll | 9 +- python/ql/src/Variables/ShadowGlobal.ql | 10 +- .../SuspiciousUnusedLoopIterationVariable.ql | 3 +- python/ql/src/Variables/UndefinedExport.ql | 13 +- python/ql/src/analysis/Consistency.ql | 11 +- python/ql/src/analysis/Efficiency.ql | 5 +- python/ql/src/analysis/ImportFailure.ql | 6 +- python/ql/src/analysis/PointsToFailure.ql | 3 +- .../ql/src/analysis/TypeInferenceFailure.ql | 3 +- .../PointsTo/class_properties/ClassValues.ql | 3 +- .../library-tests/PointsTo/imports/Runtime.ql | 3 +- .../PointsTo/imports2/Runtime.ql | 3 +- .../PointsTo/imports2/RuntimeWithType.ql | 3 +- .../PointsTo/origin_uniqueness/Origin.ql | 3 +- .../library-tests/PointsTo/attributes/Test.ql | 3 +- .../PointsTo/attributes/TestWithType.ql | 3 +- .../PointsTo/class_properties/ClassValues.ql | 3 +- .../library-tests/PointsTo/imports/Runtime.ql | 3 +- .../PointsTo/imports/RuntimeWithType.ql | 3 +- .../PointsTo/typehints/Values.ql | 3 +- .../library-tests/PointsTo/absent/Absent.ql | 3 +- .../PointsTo/calls/CallPointsTo.ql | 3 +- .../PointsTo/comparisons/PointsTo.ql | 3 +- .../library-tests/PointsTo/decorators/Test.ql | 3 +- .../PointsTo/general/GlobalPointsTo.ql | 3 +- .../PointsTo/general/LocalPointsTo.ql | 3 +- .../PointsTo/general/LocalPointsToType.ql | 3 +- .../PointsTo/guarded/PointsTo.ql | 3 +- .../PointsTo/guarded/PointsToWithType.ql | 3 +- .../PointsTo/import_star/Values.ql | 3 +- .../library-tests/PointsTo/indexing/Test.ql | 3 +- .../PointsTo/indexing/TestWithType.ql | 3 +- .../PointsTo/inheritance/Self.ql | 3 +- .../PointsTo/new/ImpliesDataflow.ql | 3 +- .../PointsTo/new/PointsToNone.ql | 3 +- .../test/library-tests/PointsTo/new/Values.ql | 3 +- .../PointsTo/properties/Values.ql | 3 +- .../missing/if-urlsplit-access/Test.ql | 3 +- .../regressions/missing/re-compile/Test.ql | 3 +- .../missing/uncalled-function/Test.ql | 3 +- .../regressions/wrong/classmethod/Test.ql | 5 +- .../PointsTo/super/SuperMethodCall.ql | 5 +- .../ql/test/library-tests/objects/Strings.ql | 3 +- .../taint/extensions/ExtensionsLib.qll | 3 +- 75 files changed, 410 insertions(+), 236 deletions(-) create mode 100644 python/ql/lib/LegacyPointsTo.qll diff --git a/python/ql/examples/snippets/store_none.ql b/python/ql/examples/snippets/store_none.ql index 57be82f229d..b35c5fc84b4 100644 --- a/python/ql/examples/snippets/store_none.ql +++ b/python/ql/examples/snippets/store_none.ql @@ -10,9 +10,10 @@ */ import python +private import LegacyPointsTo from SubscriptNode store where store.isStore() and - store.getIndex().pointsTo(Value::named("None")) + store.getIndex().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("None")) select store diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll new file mode 100644 index 00000000000..f195bc20a51 --- /dev/null +++ b/python/ql/lib/LegacyPointsTo.qll @@ -0,0 +1,121 @@ +/** + * DEPRECATED: Using the methods in this module may lead to a degradation of performance. Use at + * your own peril. + * + * This module contains legacy points-to predicates and methods for various classes in the + * points-to analysis. + * + * Existing code that depends on, say, points-to predicates on `ControlFlowNode` should be modified + * to use `ControlFlowNodeWithPointsTo` instead. In particular, if inside a method call chain such + * as + * + * `someCallNode.getFunction().pointsTo(...)` + * + * an explicit cast should be added as follows + * + * `someCallNode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(...)` + * + * Similarly, if a bound variable has type `ControlFlowNode`, and a points-to method is called on + * it, the type should be changed to `ControlFlowNodeWithPointsTo`. + */ + +private import python +private import semmle.python.pointsto.PointsTo + +/** + * An extension of `ControlFlowNode` that provides points-to predicates. + */ +class ControlFlowNodeWithPointsTo extends ControlFlowNode { + /** Gets the value that this ControlFlowNode points-to. */ + predicate pointsTo(Value value) { this.pointsTo(_, value, _) } + + /** Gets the value that this ControlFlowNode points-to. */ + Value pointsTo() { this.pointsTo(_, result, _) } + + /** Gets a value that this ControlFlowNode may points-to. */ + Value inferredValue() { this.pointsTo(_, result, _) } + + /** Gets the value and origin that this ControlFlowNode points-to. */ + predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } + + /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ + predicate pointsTo(Context context, Value value, ControlFlowNode origin) { + PointsTo::pointsTo(this, context, value, origin) + } + + /** + * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + */ + pragma[nomagic] + predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** Gets what this expression might "refer-to" in the given `context`. */ + pragma[nomagic] + predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { + not obj = unknownValue() and + not cls = theUnknownType() and + PointsTo::points_to(this, context, obj, cls, origin) + } + + /** + * Whether this flow node might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)` this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, ControlFlowNode origin) { + not obj = unknownValue() and + PointsTo::points_to(this, _, obj, _, origin) + } + + /** Equivalent to `this.refersTo(value, _)` */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Check whether this control-flow node has complete points-to information. + * This would mean that the analysis managed to infer an over approximation + * of possible values at runtime. + */ + predicate hasCompletePointsToSet() { + // If the tracking failed, then `this` will be its own "origin". In that + // case, we want to exclude nodes for which there is also a different + // origin, as that would indicate that some paths failed and some did not. + this.refersTo(_, _, this) and + not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) + or + // If `this` is a use of a variable, then we must have complete points-to + // for that variable. + exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) + } +} + +/** + * Check whether a SSA variable has complete points-to information. + * This would mean that the analysis managed to infer an overapproximation + * of possible values at runtime. + */ +private predicate varHasCompletePointsToSet(SsaVariable var) { + // Global variables may be modified non-locally or concurrently. + not var.getVariable() instanceof GlobalVariable and + ( + // If we have complete points-to information on the definition of + // this variable, then the variable has complete information. + var.getDefinition() + .(DefinitionNode) + .getValue() + .(ControlFlowNodeWithPointsTo) + .hasCompletePointsToSet() + or + // If this variable is a phi output, then we have complete + // points-to information about it if all phi inputs had complete + // information. + forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | + varHasCompletePointsToSet(phiInput) + ) + ) +} diff --git a/python/ql/lib/analysis/DefinitionTracking.qll b/python/ql/lib/analysis/DefinitionTracking.qll index e015d0f70a9..53f8e791cd8 100644 --- a/python/ql/lib/analysis/DefinitionTracking.qll +++ b/python/ql/lib/analysis/DefinitionTracking.qll @@ -3,6 +3,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import IDEContextual @@ -36,22 +37,22 @@ private predicate jump_to_defn(ControlFlowNode use, Definition defn) { ) or exists(PythonModuleObject mod | - use.(ImportExprNode).refersTo(mod) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(mod) and defn.getAstNode() = mod.getModule() ) or exists(PythonModuleObject mod, string name | - use.(ImportMemberNode).getModule(name).refersTo(mod) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(mod) and scope_jump_to_defn_attribute(mod.getModule(), name, defn) ) or exists(PackageObject package | - use.(ImportExprNode).refersTo(package) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(package) and defn.getAstNode() = package.getInitModule().getModule() ) or exists(PackageObject package, string name | - use.(ImportMemberNode).getModule(name).refersTo(package) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(package) and scope_jump_to_defn_attribute(package.getInitModule().getModule(), name, defn) ) or @@ -230,7 +231,7 @@ private predicate module_and_name_for_import_star_helper( ModuleObject mod, string name, ImportStarNode im_star, ImportStarRefinement def ) { im_star = def.getDefiningNode() and - im_star.getModule().refersTo(mod) and + im_star.getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and name = def.getSourceVariable().getName() } @@ -239,7 +240,7 @@ pragma[noinline] private predicate variable_not_redefined_by_import_star(EssaVariable var, ImportStarRefinement def) { var = def.getInput() and exists(ModuleObject mod | - def.getDefiningNode().(ImportStarNode).getModule().refersTo(mod) and + def.getDefiningNode().(ImportStarNode).getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and not mod.exports(var.getSourceVariable().getName()) ) } @@ -352,7 +353,9 @@ private predicate scope_jump_to_defn_attribute(ImportTimeScope s, string name, D ) } -private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Definition defn) { +private predicate jump_to_defn_attribute( + ControlFlowNodeWithPointsTo use, string name, Definition defn +) { /* Local attribute */ exists(EssaVariable var | use = var.getASourceUse() and @@ -367,7 +370,7 @@ private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Defin /* Super attributes */ exists(AttrNode f, SuperBoundMethod sbm, Object function | use = f.getObject(name) and - f.refersTo(sbm) and + f.(ControlFlowNodeWithPointsTo).refersTo(sbm) and function = sbm.getFunction(_) and function.getOrigin() = defn.getAstNode() ) @@ -408,7 +411,7 @@ private predicate attribute_assignment_jump_to_defn_attribute( private predicate sets_attribute(ArgumentRefinement def, string name) { exists(CallNode call | call = def.getDefiningNode() and - call.getFunction().refersTo(Object::builtin("setattr")) and + call.getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("setattr")) and def.getInput().getAUse() = call.getArg(0) and call.getArg(1).getNode().(StringLiteral).getText() = name ) diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index a7f67b0b80e..e288078247a 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.pointsto.PointsTo private import semmle.python.objects.ObjectInternal private import semmle.python.internal.CachedStages @@ -71,7 +72,9 @@ class Expr extends Expr_, AstNode { * Gets what this expression might "refer-to" in the given `context`. */ predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { - this.getAFlowNode().refersTo(context, obj, cls, origin.getAFlowNode()) + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .refersTo(context, obj, cls, origin.getAFlowNode()) } /** @@ -82,7 +85,7 @@ class Expr extends Expr_, AstNode { */ pragma[nomagic] predicate refersTo(Object obj, AstNode origin) { - this.getAFlowNode().refersTo(obj, origin.getAFlowNode()) + this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) } /** @@ -96,14 +99,16 @@ class Expr extends Expr_, AstNode { * in the given `context`. */ predicate pointsTo(Context context, Value value, AstNode origin) { - this.getAFlowNode().pointsTo(context, value, origin.getAFlowNode()) + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .pointsTo(context, value, origin.getAFlowNode()) } /** * Holds if this expression might "point-to" to `value` which is from `origin`. */ predicate pointsTo(Value value, AstNode origin) { - this.getAFlowNode().pointsTo(value, origin.getAFlowNode()) + this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) } /** diff --git a/python/ql/lib/semmle/python/Flow.qll b/python/ql/lib/semmle/python/Flow.qll index 621013adcd5..496c1abc52a 100644 --- a/python/ql/lib/semmle/python/Flow.qll +++ b/python/ql/lib/semmle/python/Flow.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.pointsto.PointsTo private import semmle.python.internal.CachedStages private import codeql.controlflow.BasicBlock as BB @@ -144,56 +143,6 @@ class ControlFlowNode extends @py_flow_node { /** Whether this flow node is the first in its scope */ predicate isEntryNode() { py_scope_flow(this, _, -1) } - /** Gets the value that this ControlFlowNode points-to. */ - predicate pointsTo(Value value) { this.pointsTo(_, value, _) } - - /** Gets the value that this ControlFlowNode points-to. */ - Value pointsTo() { this.pointsTo(_, result, _) } - - /** Gets a value that this ControlFlowNode may points-to. */ - Value inferredValue() { this.pointsTo(_, result, _) } - - /** Gets the value and origin that this ControlFlowNode points-to. */ - predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } - - /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ - predicate pointsTo(Context context, Value value, ControlFlowNode origin) { - PointsTo::pointsTo(this, context, value, origin) - } - - /** - * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - */ - pragma[nomagic] - predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** Gets what this expression might "refer-to" in the given `context`. */ - pragma[nomagic] - predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { - not obj = unknownValue() and - not cls = theUnknownType() and - PointsTo::points_to(this, context, obj, cls, origin) - } - - /** - * Whether this flow node might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)` this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, ControlFlowNode origin) { - not obj = unknownValue() and - PointsTo::points_to(this, _, obj, _, origin) - } - - /** Equivalent to `this.refersTo(value, _)` */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - /** Gets the basic block containing this flow node */ BasicBlock getBasicBlock() { result.contains(this) } @@ -259,23 +208,6 @@ class ControlFlowNode extends @py_flow_node { ) } - /** - * Check whether this control-flow node has complete points-to information. - * This would mean that the analysis managed to infer an over approximation - * of possible values at runtime. - */ - predicate hasCompletePointsToSet() { - // If the tracking failed, then `this` will be its own "origin". In that - // case, we want to exclude nodes for which there is also a different - // origin, as that would indicate that some paths failed and some did not. - this.refersTo(_, _, this) and - not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) - or - // If `this` is a use of a variable, then we must have complete points-to - // for that variable. - exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) - } - /** Whether this strictly dominates other. */ pragma[inline] predicate strictlyDominates(ControlFlowNode other) { @@ -332,28 +264,6 @@ private class AnyNode extends ControlFlowNode { override AstNode getNode() { result = super.getNode() } } -/** - * Check whether a SSA variable has complete points-to information. - * This would mean that the analysis managed to infer an overapproximation - * of possible values at runtime. - */ -private predicate varHasCompletePointsToSet(SsaVariable var) { - // Global variables may be modified non-locally or concurrently. - not var.getVariable() instanceof GlobalVariable and - ( - // If we have complete points-to information on the definition of - // this variable, then the variable has complete information. - var.getDefinition().(DefinitionNode).getValue().hasCompletePointsToSet() - or - // If this variable is a phi output, then we have complete - // points-to information about it if all phi inputs had complete - // information. - forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | - varHasCompletePointsToSet(phiInput) - ) - ) -} - /** A control flow node corresponding to a call expression, such as `func(...)` */ class CallNode extends ControlFlowNode { CallNode() { toAst(this) instanceof Call } diff --git a/python/ql/lib/semmle/python/Metrics.qll b/python/ql/lib/semmle/python/Metrics.qll index e5130ba000f..16d89711eea 100644 --- a/python/ql/lib/semmle/python/Metrics.qll +++ b/python/ql/lib/semmle/python/Metrics.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** The metrics for a function */ class FunctionMetrics extends Function { @@ -59,7 +60,7 @@ class FunctionMetrics extends Function { not non_coupling_method(result) and exists(Call call | call.getScope() = this | exists(FunctionObject callee | callee.getFunction() = result | - call.getAFlowNode().getFunction().refersTo(callee) + call.getAFlowNode().getFunction().(ControlFlowNodeWithPointsTo).refersTo(callee) ) or exists(Attribute a | call.getFunc() = a | diff --git a/python/ql/lib/semmle/python/SpecialMethods.qll b/python/ql/lib/semmle/python/SpecialMethods.qll index a5832ae45ae..ea9e753d0f8 100644 --- a/python/ql/lib/semmle/python/SpecialMethods.qll +++ b/python/ql/lib/semmle/python/SpecialMethods.qll @@ -9,6 +9,7 @@ */ private import python +private import LegacyPointsTo /** A control flow node which might correspond to a special method call. */ class PotentialSpecialMethodCallNode extends ControlFlowNode instanceof SpecialMethod::Potential { } @@ -106,7 +107,11 @@ class SpecialMethodCallNode extends PotentialSpecialMethodCallNode { SpecialMethodCallNode() { exists(SpecialMethod::Potential pot | this = pot and - pot.getSelf().pointsTo().getClass().lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod + pot.getSelf() + .(ControlFlowNodeWithPointsTo) + .pointsTo() + .getClass() + .lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod ) } diff --git a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll index 19197f4bd30..83476db803c 100644 --- a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll +++ b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.Filters as Filters @@ -374,7 +375,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi exists(ModuleValue m, string name | src = TTaintTrackingNode_(_, context, path, kind, this) and this.moduleAttributeTainted(m, name, src) and - node.asCfgNode().(ImportMemberNode).getModule(name).pointsTo(m) + node.asCfgNode().(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).pointsTo(m) ) } @@ -408,7 +409,9 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi src = TTaintTrackingNode_(srcnode, context, srcpath, srckind, this) and exists(CallNode call, ControlFlowNode arg | call = node.asCfgNode() and - call.getFunction().pointsTo(ObjectInternal::builtin("getattr")) and + call.getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("getattr")) and arg = call.getArg(0) and attrname = call.getArg(1).getNode().(StringLiteral).getText() and arg = srcnode.asCfgNode() @@ -515,7 +518,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi TaintTrackingContext caller, TaintTrackingContext callee ) { exists(ClassValue cls | - call.getFunction().pointsTo(cls) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(cls) and cls.lookup("__init__") = init | exists(int arg, TaintKind callerKind, AttributePath callerPath, DataFlow::Node argument | @@ -878,7 +881,7 @@ private class EssaTaintTracking extends string instanceof TaintTracking::Configu const.getNode() instanceof ImmutableLiteral ) or - exists(ControlFlowNode c, ClassValue cls | + exists(ControlFlowNodeWithPointsTo c, ClassValue cls | Filters::isinstance(test, c, use) and c.pointsTo(cls) | @@ -978,7 +981,7 @@ module Implementation { tonode.getArg(0) = fromnode ) or - tonode.getFunction().pointsTo(ObjectInternal::builtin("reversed")) and + tonode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(ObjectInternal::builtin("reversed")) and tonode.getArg(0) = fromnode } } diff --git a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll index 0ce4bc27790..15459a31043 100644 --- a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll @@ -87,6 +87,7 @@ */ import python +private import LegacyPointsTo private import semmle.python.pointsto.Filters as Filters private import semmle.python.objects.ObjectInternal private import semmle.python.dataflow.Implementation @@ -267,7 +268,11 @@ module DictKind { Implementation::copyCall(fromnode, tonode) and edgeLabel = "dict copy" or - tonode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + tonode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and tonode.(CallNode).getArg(0) = fromnode and edgeLabel = "dict() call" } @@ -615,7 +620,7 @@ module DataFlow { TCfgNode(ControlFlowNode node) abstract class Node extends TDataFlowNode { - abstract ControlFlowNode asCfgNode(); + abstract ControlFlowNodeWithPointsTo asCfgNode(); abstract EssaVariable asVariable(); @@ -632,7 +637,7 @@ module DataFlow { } class CfgNode extends Node, TCfgNode { - override ControlFlowNode asCfgNode() { this = TCfgNode(result) } + override ControlFlowNodeWithPointsTo asCfgNode() { this = TCfgNode(result) } override EssaVariable asVariable() { none() } @@ -647,7 +652,7 @@ module DataFlow { } class EssaNode extends Node, TEssaNode { - override ControlFlowNode asCfgNode() { none() } + override ControlFlowNodeWithPointsTo asCfgNode() { none() } override EssaVariable asVariable() { this = TEssaNode(result) } @@ -668,7 +673,11 @@ pragma[noinline] private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) { dictnode.(DictNode).getAValue() = itemnode or - dictnode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + dictnode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and dictnode.(CallNode).getArgByName(_) = itemnode } @@ -688,7 +697,7 @@ private predicate sequence_construct(ControlFlowNode itemnode, ControlFlowNode s pragma[noinline] private predicate sequence_call(ControlFlowNode fromnode, CallNode tonode) { tonode.getArg(0) = fromnode and - exists(ControlFlowNode cls | cls = tonode.getFunction() | + exists(ControlFlowNodeWithPointsTo cls | cls = tonode.getFunction() | cls.pointsTo(ObjectInternal::builtin("list")) or cls.pointsTo(ObjectInternal::builtin("tuple")) diff --git a/python/ql/lib/semmle/python/dependencies/Dependencies.qll b/python/ql/lib/semmle/python/dependencies/Dependencies.qll index 6f70c7e4ec0..a224ad1b960 100644 --- a/python/ql/lib/semmle/python/dependencies/Dependencies.qll +++ b/python/ql/lib/semmle/python/dependencies/Dependencies.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dependencies.DependencyKind private predicate importDependency(Object target, AstNode source) { @@ -59,7 +60,7 @@ class PythonUse extends DependencyKind { interesting(target) and this = this and source != target.(ControlFlowNode).getNode() and - exists(ControlFlowNode use, Object obj | + exists(ControlFlowNodeWithPointsTo use, Object obj | use.getNode() = source and use.refersTo(obj) and use.isLoad() @@ -114,12 +115,14 @@ private predicate attribute_access_dependency(Object target, AstNode source) { private predicate use_of_attribute(Attribute attr, Scope s, string name) { exists(AttrNode cfg | cfg.isLoad() and cfg.getNode() = attr | - exists(Object obj | cfg.getObject(name).refersTo(obj) | + exists(Object obj | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(obj) | s = obj.(PythonModuleObject).getModule() or s = obj.(ClassObject).getPyClass() ) or - exists(ClassObject cls | cfg.getObject(name).refersTo(_, cls, _) | s = cls.getPyClass()) + exists(ClassObject cls | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) | + s = cls.getPyClass() + ) ) or exists(SelfAttributeRead sar | sar = attr | diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index 4a36ec6d847..26c57a78c17 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo private import TObject private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.PointsTo @@ -704,12 +705,14 @@ abstract class FunctionValue extends CallableValue { abstract ClassValue getARaisedType(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().pointsTo() = this } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = this + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().pointsTo() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = bm and bm.getFunction() = this ) } @@ -753,7 +756,7 @@ class PythonFunctionValue extends FunctionValue { * explicit return nodes that we can query and get the class of. */ - result = this.getAReturnedNode().pointsTo().getClass() + result = this.getAReturnedNode().(ControlFlowNodeWithPointsTo).pointsTo().getClass() } } diff --git a/python/ql/lib/semmle/python/types/ClassObject.qll b/python/ql/lib/semmle/python/types/ClassObject.qll index e3ad51ea162..6954a83463c 100644 --- a/python/ql/lib/semmle/python/types/ClassObject.qll +++ b/python/ql/lib/semmle/python/types/ClassObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.Classes private import semmle.python.objects.Instances private import semmle.python.pointsto.PointsTo @@ -193,7 +194,9 @@ class ClassObject extends Object { * It is guaranteed that getProbableSingletonInstance() returns at most one Object for each ClassObject. */ Object getProbableSingletonInstance() { - exists(ControlFlowNode use, Expr origin | use.refersTo(result, this, origin.getAFlowNode()) | + exists(ControlFlowNodeWithPointsTo use, Expr origin | + use.refersTo(result, this, origin.getAFlowNode()) + | this.hasStaticallyUniqueInstance() and /* Ensure that original expression will be executed only one. */ origin.getScope() instanceof ImportTimeScope and @@ -351,7 +354,7 @@ class ClassObject extends Object { * Gets a call to this class. Note that the call may not create a new instance of * this class, as that depends on the `__new__` method of this class. */ - CallNode getACall() { result.getFunction().refersTo(this) } + CallNode getACall() { result.getFunction().(ControlFlowNodeWithPointsTo).refersTo(this) } override predicate notClass() { none() } } diff --git a/python/ql/lib/semmle/python/types/Exceptions.qll b/python/ql/lib/semmle/python/types/Exceptions.qll index 93bace1cf51..5e982aa0134 100644 --- a/python/ql/lib/semmle/python/types/Exceptions.qll +++ b/python/ql/lib/semmle/python/types/Exceptions.qll @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /** The subset of ControlFlowNodes which might raise an exception */ class RaisingNode extends ControlFlowNode { @@ -30,7 +31,9 @@ class RaisingNode extends ControlFlowNode { ) } - private predicate quits() { this.(CallNode).getFunction().refersTo(Object::quitter(_)) } + private predicate quits() { + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::quitter(_)) + } /** * Gets the type of an exception that may be raised @@ -68,7 +71,7 @@ class RaisingNode extends ControlFlowNode { private ClassObject localRaisedType_objectapi() { result.isSubclassOf(theBaseExceptionType()) and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.refersTo(result) or ex.refersTo(_, result, _)) ) @@ -95,7 +98,7 @@ class RaisingNode extends ControlFlowNode { private ClassValue localRaisedType() { result.getASuperType() = ClassValue::baseException() and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.pointsTo(result) or ex.pointsTo().getClass() = result) ) @@ -153,7 +156,9 @@ class RaisingNode extends ControlFlowNode { /* Call to an unknown object */ this.getNode() instanceof Call and not exists(FunctionObject func | this = func.getACall()) and - not exists(ClassObject known | this.(CallNode).getFunction().refersTo(known)) + not exists(ClassObject known | + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(known) + ) or this.getNode() instanceof Exec or @@ -371,7 +376,7 @@ class ExceptFlowNode extends ControlFlowNode { * Gets the type handled by this exception handler. * `ExceptionType` in `except ExceptionType as e:` */ - ControlFlowNode getType() { + ControlFlowNodeWithPointsTo getType() { exists(ExceptStmt ex | this.getBasicBlock().dominates(result.getBasicBlock()) and ex = this.getNode() and @@ -470,7 +475,7 @@ class ExceptGroupFlowNode extends ControlFlowNode { } } -private ControlFlowNode element_from_tuple_objectapi(Object tuple) { +private ControlFlowNodeWithPointsTo element_from_tuple_objectapi(Object tuple) { exists(Tuple t | t = tuple.getOrigin() and result = t.getAnElt().getAFlowNode()) } diff --git a/python/ql/lib/semmle/python/types/FunctionObject.qll b/python/ql/lib/semmle/python/types/FunctionObject.qll index f64c02b9c6b..72ddb9411fb 100644 --- a/python/ql/lib/semmle/python/types/FunctionObject.qll +++ b/python/ql/lib/semmle/python/types/FunctionObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.types.Exceptions private import semmle.python.pointsto.PointsTo private import semmle.python.objects.Callables @@ -32,27 +33,31 @@ abstract class FunctionObject extends Object { abstract string descriptiveString(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().inferredValue() = this.theCallable() } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = this.theCallable() + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().inferredValue() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and bm.getFunction() = this.theCallable() ) } /** Gets a call-site from where this function is called */ - ControlFlowNode getACall() { result = this.theCallable().getACall() } + ControlFlowNodeWithPointsTo getACall() { result = this.theCallable().getACall() } /** Gets a call-site from where this function is called, given the `context` */ - ControlFlowNode getACall(Context context) { result = this.theCallable().getACall(context) } + ControlFlowNodeWithPointsTo getACall(Context context) { + result = this.theCallable().getACall(context) + } /** * Gets the `ControlFlowNode` that will be passed as the nth argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the zeroth argument. */ - ControlFlowNode getArgumentForCall(CallNode call, int n) { + ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { result = this.theCallable().getArgumentForCall(call, n) } @@ -60,7 +65,7 @@ abstract class FunctionObject extends Object { * Gets the `ControlFlowNode` that will be passed as the named argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the self argument. */ - ControlFlowNode getNamedArgumentForCall(CallNode call, string name) { + ControlFlowNodeWithPointsTo getNamedArgumentForCall(CallNode call, string name) { result = this.theCallable().getNamedArgumentForCall(call, name) } @@ -134,7 +139,9 @@ class PyFunctionObject extends FunctionObject { override predicate raisesUnknownType() { scope_raises_unknown(this.getFunction()) } /** Gets a control flow node corresponding to the value of a return statement */ - ControlFlowNode getAReturnedNode() { result = this.getFunction().getAReturnValueFlowNode() } + ControlFlowNodeWithPointsTo getAReturnedNode() { + result = this.getFunction().getAReturnValueFlowNode() + } override string descriptiveString() { if this.getFunction().isMethod() @@ -216,7 +223,7 @@ abstract class BuiltinCallable extends FunctionObject { abstract override string getQualifiedName(); - override ControlFlowNode getArgumentForCall(CallNode call, int n) { + override ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { call = this.getACall() and result = call.getArg(n) } } diff --git a/python/ql/lib/semmle/python/types/Object.qll b/python/ql/lib/semmle/python/types/Object.qll index 6c76067dc68..1e0868648be 100644 --- a/python/ql/lib/semmle/python/types/Object.qll +++ b/python/ql/lib/semmle/python/types/Object.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.ObjectInternal private import semmle.python.types.Builtins private import semmle.python.internal.CachedStages @@ -41,7 +42,7 @@ class Object extends @py_object { * for a control flow node 'f' */ ClassObject getAnInferredType() { - exists(ControlFlowNode somewhere | somewhere.refersTo(this, result, _)) + exists(ControlFlowNodeWithPointsTo somewhere | somewhere.refersTo(this, result, _)) or this.asBuiltin().getClass() = result.asBuiltin() and not this = unknownValue() or @@ -327,7 +328,7 @@ abstract class SequenceObject extends Object { Object getInferredElement(int n) { result = this.getBuiltinElement(n) or - this.getSourceElement(n).refersTo(result) + this.getSourceElement(n).(ControlFlowNodeWithPointsTo).refersTo(result) } } @@ -438,7 +439,8 @@ class SuperBoundMethod extends Object { string name; SuperBoundMethod() { - this.(AttrNode).getObject(name).inferredValue().getClass() = Value::named("super") + this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue().getClass() = + Value::named("super") } override string toString() { result = "super()." + name } @@ -446,7 +448,7 @@ class SuperBoundMethod extends Object { Object getFunction(string fname) { fname = name and exists(SuperInstance sup, BoundMethodObjectInternal m | - sup = this.(AttrNode).getObject(name).inferredValue() and + sup = this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue() and sup.attribute(name, m, _) and result = m.getFunction().getSource() ) diff --git a/python/ql/lib/semmle/python/types/Properties.qll b/python/ql/lib/semmle/python/types/Properties.qll index a0efe6ca5eb..899f0a3407e 100644 --- a/python/ql/lib/semmle/python/types/Properties.qll +++ b/python/ql/lib/semmle/python/types/Properties.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** * A Python property: @@ -77,32 +78,32 @@ class BuiltinPropertyObject extends PropertyObject { } private predicate property_getter(CallNode decorated, FunctionObject getter) { - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(0).refersTo(getter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(getter) } private predicate property_setter(CallNode decorated, FunctionObject setter) { property_getter(decorated, _) and exists(CallNode setter_call, AttrNode prop_setter | - prop_setter.getObject("setter").refersTo(decorated) + prop_setter.getObject("setter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - setter_call.getArg(0).refersTo(setter) and + setter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(setter) and setter_call.getFunction() = prop_setter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(1).refersTo(setter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(1).(ControlFlowNodeWithPointsTo).refersTo(setter) } private predicate property_deleter(CallNode decorated, FunctionObject deleter) { property_getter(decorated, _) and exists(CallNode deleter_call, AttrNode prop_deleter | - prop_deleter.getObject("deleter").refersTo(decorated) + prop_deleter.getObject("deleter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - deleter_call.getArg(0).refersTo(deleter) and + deleter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(deleter) and deleter_call.getFunction() = prop_deleter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(2).refersTo(deleter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(2).(ControlFlowNodeWithPointsTo).refersTo(deleter) } diff --git a/python/ql/lib/semmle/python/values/StringAttributes.qll b/python/ql/lib/semmle/python/values/StringAttributes.qll index 792ee923227..e94540dbf20 100644 --- a/python/ql/lib/semmle/python/values/StringAttributes.qll +++ b/python/ql/lib/semmle/python/values/StringAttributes.qll @@ -1,6 +1,10 @@ import python +private import LegacyPointsTo +private import semmle.python.types.Object +private import semmle.python.types.ClassObject +private import semmle.python.types.FunctionObject -predicate string_attribute_all(ControlFlowNode n, string attr) { +predicate string_attribute_all(ControlFlowNodeWithPointsTo n, string attr) { (n.getNode() instanceof Unicode or n.getNode() instanceof Bytes) and attr = "const" or @@ -19,18 +23,27 @@ predicate tracked_object(ControlFlowNode obj, string attr) { tracked_object_any(obj, attr) } -predicate open_file(Object obj) { obj.(CallNode).getFunction().refersTo(Object::builtin("open")) } +predicate open_file(Object obj) { + obj.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("open")) +} -predicate string_attribute_any(ControlFlowNode n, string attr) { +predicate string_attribute_any(ControlFlowNodeWithPointsTo n, string attr) { attr = "user-input" and - exists(Object input | n.(CallNode).getFunction().refersTo(input) | + exists(Object input | n.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(input) | if major_version() = 2 then input = Object::builtin("raw_input") else input = Object::builtin("input") ) or attr = "file-input" and - exists(Object fd | n.(CallNode).getFunction().(AttrNode).getObject("read").refersTo(fd) | + exists(Object fd | + n.(CallNode) + .getFunction() + .(AttrNode) + .getObject("read") + .(ControlFlowNodeWithPointsTo) + .refersTo(fd) + | open_file(fd) ) or @@ -65,7 +78,7 @@ ControlFlowNode sequence_for_iterator(ControlFlowNode f) { } pragma[noinline] -private predicate tracking_step(ControlFlowNode src, ControlFlowNode dest) { +private predicate tracking_step(ControlFlowNode src, ControlFlowNodeWithPointsTo dest) { src = dest.(BinaryExprNode).getAnOperand() or src = dest.(UnaryExprNode).getOperand() diff --git a/python/ql/src/Expressions/ContainsNonContainer.ql b/python/ql/src/Expressions/ContainsNonContainer.ql index cf6af5ce7b1..fd2123dd436 100644 --- a/python/ql/src/Expressions/ContainsNonContainer.ql +++ b/python/ql/src/Expressions/ContainsNonContainer.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { @@ -20,7 +21,8 @@ predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { ) } -from ControlFlowNode non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin +from + ControlFlowNodeWithPointsTo non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin where rhs_in_expr(non_seq, cmp) and non_seq.pointsTo(_, v, origin) and diff --git a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll index 7da80ffa027..d98286d85fa 100644 --- a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll +++ b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** A string constant that looks like it may be used in string formatting operations. */ class PossibleAdvancedFormatString extends StringLiteral { @@ -98,11 +99,15 @@ private predicate brace_pair(PossibleAdvancedFormatString fmt, int start, int en private predicate advanced_format_call(Call format_expr, PossibleAdvancedFormatString fmt, int args) { exists(CallNode call | call = format_expr.getAFlowNode() | - call.getFunction().pointsTo(Value::named("format")) and - call.getArg(0).pointsTo(_, fmt.getAFlowNode()) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("format")) and + call.getArg(0).(ControlFlowNodeWithPointsTo).pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) - 1 or - call.getFunction().(AttrNode).getObject("format").pointsTo(_, fmt.getAFlowNode()) and + call.getFunction() + .(AttrNode) + .getObject("format") + .(ControlFlowNodeWithPointsTo) + .pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) ) } diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index eb86f3b5533..79586598760 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* * This assumes that any indexing operation where the value is not a sequence or numpy array involves hashing. @@ -41,13 +42,13 @@ predicate unhashable_subscript(ControlFlowNode f, ClassValue c, ControlFlowNode is_unhashable(f, c, origin) and exists(SubscriptNode sub | sub.getIndex() = f | exists(Value custom_getitem | - sub.getObject().pointsTo(custom_getitem) and + sub.getObject().(ControlFlowNodeWithPointsTo).pointsTo(custom_getitem) and not has_custom_getitem(custom_getitem) ) ) } -predicate is_unhashable(ControlFlowNode f, ClassValue cls, ControlFlowNode origin) { +predicate is_unhashable(ControlFlowNodeWithPointsTo f, ClassValue cls, ControlFlowNode origin) { exists(Value v | f.pointsTo(v, origin) and v.getClass() = cls | not cls.hasAttribute("__hash__") and not cls.failedInference(_) and cls.isNewStyle() or diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 7825d01999b..25058206c86 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -1,6 +1,7 @@ /** INTERNAL - Helper predicates for queries that inspect the comparison of objects using `is`. */ import python +private import LegacyPointsTo /** Holds if the comparison `comp` uses `is` or `is not` (represented as `op`) to compare its `left` and `right` arguments. */ predicate comparison_using_is(Compare comp, ControlFlowNode left, Cmpop op, ControlFlowNode right) { @@ -42,7 +43,7 @@ predicate invalid_to_use_is_portably(ClassValue c) { } /** Holds if the control flow node `f` points to either `True`, `False`, or `None`. */ -predicate simple_constant(ControlFlowNode f) { +predicate simple_constant(ControlFlowNodeWithPointsTo f) { exists(Value val | f.pointsTo(val) | val = Value::named("True") or val = Value::named("False") or val = Value::named("None") ) @@ -84,7 +85,7 @@ predicate universally_interned_constant(Expr e) { } private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, ClassValue cls2) { - exists(ControlFlowNode op1, ControlFlowNode op2 | + exists(ControlFlowNodeWithPointsTo op1, ControlFlowNodeWithPointsTo op2 | comparison_using_is(comp, op1, op, op2) or comparison_using_is(comp, op2, op, op1) | op1.inferredValue().getClass() = cls1 and @@ -94,7 +95,7 @@ private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, private predicate comparison_one_type(Compare comp, Cmpop op, ClassValue cls) { not comparison_both_types(comp, _, _, _) and - exists(ControlFlowNode operand | + exists(ControlFlowNodeWithPointsTo operand | comparison_using_is(comp, operand, op, _) or comparison_using_is(comp, _, op, operand) | operand.inferredValue().getClass() = cls diff --git a/python/ql/src/Expressions/TruncatedDivision.ql b/python/ql/src/Expressions/TruncatedDivision.ql index 54758b4b78e..c731a21f7d2 100644 --- a/python/ql/src/Expressions/TruncatedDivision.ql +++ b/python/ql/src/Expressions/TruncatedDivision.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo from BinaryExpr div, ControlFlowNode left, ControlFlowNode right where @@ -20,9 +21,9 @@ where exists(BinaryExprNode bin, Value lval, Value rval | bin = div.getAFlowNode() and bin.getNode().getOp() instanceof Div and - bin.getLeft().pointsTo(lval, left) and + bin.getLeft().(ControlFlowNodeWithPointsTo).pointsTo(lval, left) and lval.getClass() = ClassValue::int_() and - bin.getRight().pointsTo(rval, right) and + bin.getRight().(ControlFlowNodeWithPointsTo).pointsTo(rval, right) and rval.getClass() = ClassValue::int_() and // Ignore instances where integer division leaves no remainder not lval.(NumericValue).getIntValue() % rval.(NumericValue).getIntValue() = 0 and diff --git a/python/ql/src/Expressions/UseofApply.ql b/python/ql/src/Expressions/UseofApply.ql index 7a0d72b43cf..2012f2d9361 100644 --- a/python/ql/src/Expressions/UseofApply.ql +++ b/python/ql/src/Expressions/UseofApply.ql @@ -10,8 +10,9 @@ */ import python +private import LegacyPointsTo private import semmle.python.types.Builtins -from CallNode call, ControlFlowNode func +from CallNode call, ControlFlowNodeWithPointsTo func where major_version() = 2 and call.getFunction() = func and func.pointsTo(Value::named("apply")) select call, "Call to the obsolete builtin function 'apply'." diff --git a/python/ql/src/Imports/FromImportOfMutableAttribute.ql b/python/ql/src/Imports/FromImportOfMutableAttribute.ql index c66a7578de6..63198bece30 100644 --- a/python/ql/src/Imports/FromImportOfMutableAttribute.ql +++ b/python/ql/src/Imports/FromImportOfMutableAttribute.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests from ImportMember im, ModuleValue m, AttrNode store_attr, string name @@ -23,7 +24,7 @@ where /* variable resulting from import must have a long lifetime */ not im.getScope() instanceof Function and store_attr.isStore() and - store_attr.getObject(name).pointsTo(m) and + store_attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(m) and /* Import not in same module as modification. */ not im.getEnclosingModule() = store_attr.getScope().getEnclosingModule() and /* Modification is not in a test */ diff --git a/python/ql/src/Statements/IterableStringOrSequence.ql b/python/ql/src/Statements/IterableStringOrSequence.ql index 5cf92754f62..d1c4a507f0d 100644 --- a/python/ql/src/Statements/IterableStringOrSequence.ql +++ b/python/ql/src/Statements/IterableStringOrSequence.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests predicate has_string_type(Value v) { @@ -21,7 +22,7 @@ predicate has_string_type(Value v) { } from - For loop, ControlFlowNode iter, Value str, Value seq, ControlFlowNode seq_origin, + For loop, ControlFlowNodeWithPointsTo iter, Value str, Value seq, ControlFlowNode seq_origin, ControlFlowNode str_origin where loop.getIter().getAFlowNode() = iter and diff --git a/python/ql/src/Statements/ModificationOfLocals.ql b/python/ql/src/Statements/ModificationOfLocals.ql index 05c2095f88c..e4791a410f7 100644 --- a/python/ql/src/Statements/ModificationOfLocals.ql +++ b/python/ql/src/Statements/ModificationOfLocals.ql @@ -12,8 +12,11 @@ */ import python +private import LegacyPointsTo -predicate originIsLocals(ControlFlowNode n) { n.pointsTo(_, _, Value::named("locals").getACall()) } +predicate originIsLocals(ControlFlowNodeWithPointsTo n) { + n.pointsTo(_, _, Value::named("locals").getACall()) +} predicate modification_of_locals(ControlFlowNode f) { originIsLocals(f.(SubscriptNode).getObject()) and diff --git a/python/ql/src/Statements/NonIteratorInForLoop.ql b/python/ql/src/Statements/NonIteratorInForLoop.ql index 92527a10e3b..f8e6e51b55f 100644 --- a/python/ql/src/Statements/NonIteratorInForLoop.ql +++ b/python/ql/src/Statements/NonIteratorInForLoop.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from For loop, ControlFlowNode iter, Value v, ClassValue t, ControlFlowNode origin +from For loop, ControlFlowNodeWithPointsTo iter, Value v, ClassValue t, ControlFlowNode origin where loop.getIter().getAFlowNode() = iter and iter.pointsTo(_, v, origin) and diff --git a/python/ql/src/Statements/ShouldUseWithStatement.ql b/python/ql/src/Statements/ShouldUseWithStatement.ql index 2ad76b5c832..eb5cf9237d5 100644 --- a/python/ql/src/Statements/ShouldUseWithStatement.ql +++ b/python/ql/src/Statements/ShouldUseWithStatement.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate calls_close(Call c) { exists(Attribute a | c.getFunc() = a and a.getName() = "close") } @@ -22,7 +23,7 @@ predicate only_stmt_in_finally(Try t, Call c) { ) } -predicate points_to_context_manager(ControlFlowNode f, ClassValue cls) { +predicate points_to_context_manager(ControlFlowNodeWithPointsTo f, ClassValue cls) { forex(Value v | f.pointsTo(v) | v.getClass() = cls) and cls.isContextManager() } diff --git a/python/ql/src/Statements/StringConcatenationInLoop.ql b/python/ql/src/Statements/StringConcatenationInLoop.ql index 563a42e5462..c85292cf26a 100644 --- a/python/ql/src/Statements/StringConcatenationInLoop.ql +++ b/python/ql/src/Statements/StringConcatenationInLoop.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo predicate string_concat_in_loop(BinaryExpr b) { b.getOp() instanceof Add and @@ -19,7 +20,7 @@ predicate string_concat_in_loop(BinaryExpr b) { | d.getDefinition().(DefinitionNode).getValue() = add and u.getAUse() = add.getAnOperand() and - add.getAnOperand().pointsTo().getClass() = ClassValue::str() + add.getAnOperand().(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::str() ) } diff --git a/python/ql/src/Statements/UseOfExit.ql b/python/ql/src/Statements/UseOfExit.ql index be3579481fc..437ff93b537 100644 --- a/python/ql/src/Statements/UseOfExit.ql +++ b/python/ql/src/Statements/UseOfExit.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo from CallNode call, string name -where call.getFunction().pointsTo(Value::siteQuitter(name)) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::siteQuitter(name)) select call, "The '" + name + "' site.Quitter object may not exist if the 'site' module is not loaded or is modified." diff --git a/python/ql/src/Testing/Mox.qll b/python/ql/src/Testing/Mox.qll index a131ca7eeca..969c49c6843 100644 --- a/python/ql/src/Testing/Mox.qll +++ b/python/ql/src/Testing/Mox.qll @@ -1,9 +1,10 @@ import python +private import LegacyPointsTo /** Whether `mox` or `.StubOutWithMock()` is used in thin module `m`. */ predicate useOfMoxInModule(Module m) { exists(ModuleObject mox | mox.getName() = "mox" or mox.getName() = "mox3.mox" | - exists(ControlFlowNode use | + exists(ControlFlowNodeWithPointsTo use | use.refersTo(mox) and use.getScope().getEnclosingModule() = m ) diff --git a/python/ql/src/Variables/MonkeyPatched.qll b/python/ql/src/Variables/MonkeyPatched.qll index ab842afbf26..86d9edac0a9 100644 --- a/python/ql/src/Variables/MonkeyPatched.qll +++ b/python/ql/src/Variables/MonkeyPatched.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate monkey_patched_builtin(string name) { exists(AttrNode attr, SubscriptNode subscr, StringLiteral s | @@ -6,19 +7,19 @@ predicate monkey_patched_builtin(string name) { subscr.getIndex().getNode() = s and s.getText() = name and subscr.getObject() = attr and - attr.getObject("__dict__").pointsTo(Module::builtinModule()) + attr.getObject("__dict__").(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) or - exists(CallNode call, ControlFlowNode bltn, StringLiteral s | + exists(CallNode call, ControlFlowNodeWithPointsTo bltn, StringLiteral s | call.getArg(0) = bltn and bltn.pointsTo(Module::builtinModule()) and call.getArg(1).getNode() = s and s.getText() = name and - call.getFunction().pointsTo(Value::named("setattr")) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("setattr")) ) or exists(AttrNode attr | attr.isStore() and - attr.getObject(name).pointsTo(Module::builtinModule()) + attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) } diff --git a/python/ql/src/Variables/ShadowGlobal.ql b/python/ql/src/Variables/ShadowGlobal.ql index 2f06e4fe57d..fad86935cf1 100644 --- a/python/ql/src/Variables/ShadowGlobal.ql +++ b/python/ql/src/Variables/ShadowGlobal.ql @@ -15,6 +15,7 @@ */ import python +private import LegacyPointsTo import Shadowing import semmle.python.types.Builtins @@ -35,7 +36,9 @@ predicate shadows(Name d, GlobalVariable g, Function scope, int line) { /* pytest dynamically populates its namespace so, we cannot look directly for the pytest.fixture function */ AttrNode pytest_fixture_attr() { - exists(ModuleValue pytest | result.getObject("fixture").pointsTo(pytest)) + exists(ModuleValue pytest | + result.getObject("fixture").(ControlFlowNodeWithPointsTo).pointsTo(pytest) + ) } Value pytest_fixture() { @@ -44,14 +47,15 @@ Value pytest_fixture() { or call.getFunction().(CallNode).getFunction() = pytest_fixture_attr() | - call.pointsTo(result) + call.(ControlFlowNodeWithPointsTo).pointsTo(result) ) } /* pytest fixtures require that the parameter name is also a global */ predicate assigned_pytest_fixture(GlobalVariable v) { exists(NameNode def | - def.defines(v) and def.(DefinitionNode).getValue().pointsTo(pytest_fixture()) + def.defines(v) and + def.(DefinitionNode).getValue().(ControlFlowNodeWithPointsTo).pointsTo(pytest_fixture()) ) } diff --git a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql index fbeb9b2b4f9..87900c48fc5 100644 --- a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +++ b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Definition predicate is_increment(Stmt s) { @@ -55,7 +56,7 @@ predicate points_to_call_to_range(ControlFlowNode f) { ) or /* Handle list(range(...)) and list(list(range(...))) */ - f.(CallNode).pointsTo().getClass() = ClassValue::list() and + f.(CallNode).(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::list() and points_to_call_to_range(f.(CallNode).getArg(0)) } diff --git a/python/ql/src/Variables/UndefinedExport.ql b/python/ql/src/Variables/UndefinedExport.ql index 173139e224a..ff3f78ec4bc 100644 --- a/python/ql/src/Variables/UndefinedExport.ql +++ b/python/ql/src/Variables/UndefinedExport.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo /** Whether name is declared in the __all__ list of this module */ predicate declaredInAll(Module m, StringLiteral name) { @@ -44,7 +45,7 @@ predicate mutates_globals(ModuleValue m) { enum_convert = enum_class.attr("_convert") and exists(CallNode call | call.getScope() = m.getScope() | enum_convert.getACall() = call or - call.getFunction().pointsTo(enum_convert) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(enum_convert) ) ) or @@ -52,7 +53,11 @@ predicate mutates_globals(ModuleValue m) { // analysis doesn't handle that well enough. So we need a special case for this not exists(enum_class.attr("_convert")) and exists(CallNode call | call.getScope() = m.getScope() | - call.getFunction().(AttrNode).getObject(["_convert", "_convert_"]).pointsTo() = enum_class + call.getFunction() + .(AttrNode) + .getObject(["_convert", "_convert_"]) + .(ControlFlowNodeWithPointsTo) + .pointsTo() = enum_class ) ) ) @@ -65,9 +70,9 @@ predicate is_exported_submodule_name(ModuleValue m, string exported_name) { predicate contains_unknown_import_star(ModuleValue m) { exists(ImportStarNode imp | imp.getEnclosingModule() = m.getScope() | - imp.getModule().pointsTo().isAbsent() + imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo().isAbsent() or - not exists(imp.getModule().pointsTo()) + not exists(imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo()) ) } diff --git a/python/ql/src/analysis/Consistency.ql b/python/ql/src/analysis/Consistency.ql index f7d80a5da95..aafb461a504 100644 --- a/python/ql/src/analysis/Consistency.ql +++ b/python/ql/src/analysis/Consistency.ql @@ -5,6 +5,7 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking predicate uniqueness_error(int number, string what, string problem) { @@ -208,18 +209,22 @@ predicate function_object_consistency(string clsname, string problem, string wha predicate multiple_origins_per_object(Object obj) { not obj.isC() and not obj instanceof ModuleObject and - exists(ControlFlowNode use, Context ctx | + exists(ControlFlowNodeWithPointsTo use, Context ctx | strictcount(ControlFlowNode orig | use.refersTo(ctx, obj, _, orig)) > 1 ) } -predicate intermediate_origins(ControlFlowNode use, ControlFlowNode inter, Object obj) { +predicate intermediate_origins( + ControlFlowNodeWithPointsTo use, ControlFlowNodeWithPointsTo inter, Object obj +) { exists(ControlFlowNode orig, Context ctx | not inter = orig | use.refersTo(ctx, obj, _, inter) and inter.refersTo(ctx, obj, _, orig) and // It can sometimes happen that two different modules (e.g. cPickle and Pickle) // have the same attribute, but different origins. - not strictcount(Object val | inter.(AttrNode).getObject().refersTo(val)) > 1 + not strictcount(Object val | + inter.(AttrNode).getObject().(ControlFlowNodeWithPointsTo).refersTo(val) + ) > 1 ) } diff --git a/python/ql/src/analysis/Efficiency.ql b/python/ql/src/analysis/Efficiency.ql index ff44fc2c47d..37cb5c97387 100644 --- a/python/ql/src/analysis/Efficiency.ql +++ b/python/ql/src/analysis/Efficiency.ql @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext @@ -18,11 +19,11 @@ predicate trivial(ControlFlowNode f) { from int interesting_facts, int interesting_facts_in_source, int total_size, float efficiency where interesting_facts = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) ) and interesting_facts_in_source = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) and exists(f.getScope().getEnclosingModule().getFile().getRelativePath()) diff --git a/python/ql/src/analysis/ImportFailure.ql b/python/ql/src/analysis/ImportFailure.ql index 62de72f3b3e..9dd6ac52adc 100644 --- a/python/ql/src/analysis/ImportFailure.ql +++ b/python/ql/src/analysis/ImportFailure.ql @@ -7,6 +7,7 @@ */ import python +private import LegacyPointsTo ImportExpr alternative_import(ImportExpr ie) { exists(Alias thisalias, Alias otheralias | @@ -62,7 +63,10 @@ class VersionTest extends ControlFlowNode { VersionTest() { exists(string name | name.matches("%version%") and - this.(CompareNode).getAChild+().pointsTo(Module::named("sys").attr(name)) + this.(CompareNode) + .getAChild+() + .(ControlFlowNodeWithPointsTo) + .pointsTo(Module::named("sys").attr(name)) ) } diff --git a/python/ql/src/analysis/PointsToFailure.ql b/python/ql/src/analysis/PointsToFailure.ql index 66ff2d811a3..7b9a2ac0659 100644 --- a/python/ql/src/analysis/PointsToFailure.ql +++ b/python/ql/src/analysis/PointsToFailure.ql @@ -9,7 +9,8 @@ */ import python +private import LegacyPointsTo from Expr e -where exists(ControlFlowNode f | f = e.getAFlowNode() | not f.refersTo(_)) +where exists(ControlFlowNodeWithPointsTo f | f = e.getAFlowNode() | not f.refersTo(_)) select e, "Expression does not 'point-to' any object." diff --git a/python/ql/src/analysis/TypeInferenceFailure.ql b/python/ql/src/analysis/TypeInferenceFailure.ql index 70c4e880879..5cfafee36b1 100644 --- a/python/ql/src/analysis/TypeInferenceFailure.ql +++ b/python/ql/src/analysis/TypeInferenceFailure.ql @@ -8,8 +8,9 @@ */ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o +from ControlFlowNodeWithPointsTo f, Object o where f.refersTo(o) and not f.refersTo(o, _, _) diff --git a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e6..382312a4b5c 100644 --- a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql index 7a46cc8cad1..aad100c14d5 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql index f694bc64cf0..19add3600a0 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql index 99a5f7b8163..09c330596c9 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql index 4c7a4fff358..3f923bc63fa 100644 --- a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql +++ b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo string short_loc(Location l) { result = l.getFile().getShortName() + ":" + l.getStartLine() } -from ControlFlowNode use, Object obj, ControlFlowNode orig, int line +from ControlFlowNodeWithPointsTo use, Object obj, ControlFlowNode orig, int line where use.refersTo(obj, orig) and use.getLocation().getFile().getShortName() = "test.py" and diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql index cc191d7c7d8..ad7b74f8c58 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql index 2b4b8a8c70c..dc19fefb4ce 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), c.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e6..382312a4b5c 100644 --- a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql index f694bc64cf0..19add3600a0 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql index 99a5f7b8163..09c330596c9 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql index 192468a2248..be451d6f596 100644 --- a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql +++ b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/absent/Absent.ql b/python/ql/test/library-tests/PointsTo/absent/Absent.ql index 95cdf3a1084..b73eb9b5296 100644 --- a/python/ql/test/library-tests/PointsTo/absent/Absent.ql +++ b/python/ql/test/library-tests/PointsTo/absent/Absent.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import semmle.python.objects.Modules -from Value val, ControlFlowNode f +from Value val, ControlFlowNodeWithPointsTo f where f.pointsTo(val) select f, val diff --git a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql index 10247a98f94..70a9bbd914b 100644 --- a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from CallNode call, Value func -where call.getFunction().pointsTo(func) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(func) select call.getLocation().getStartLine(), call.toString(), func.toString() diff --git a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql index 61f802a2ea5..31d2f1cab36 100644 --- a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Value v +from int line, ControlFlowNodeWithPointsTo f, Value v where any(ExprStmt s).getValue() = f.getNode() and line = f.getLocation().getStartLine() and diff --git a/python/ql/test/library-tests/PointsTo/decorators/Test.ql b/python/ql/test/library-tests/PointsTo/decorators/Test.ql index b5175845070..b237ce513d2 100644 --- a/python/ql/test/library-tests/PointsTo/decorators/Test.ql +++ b/python/ql/test/library-tests/PointsTo/decorators/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo // We don't care about the internals of functools which vary from // version to version, just the end result. from NameNode f, Object o, ControlFlowNode x, int line where - f.refersTo(o, x) and + f.(ControlFlowNodeWithPointsTo).refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" and line = f.getLocation().getStartLine() select line, f.toString(), o.toString(), x.getLocation().toString() diff --git a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql index 8caa54ccc23..e90674bab2e 100644 --- a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import interesting -from int line, ControlFlowNode f, Object o, ImportTimeScope n +from int line, ControlFlowNodeWithPointsTo f, Object o, ImportTimeScope n where of_interest(f, line) and f.refersTo(o) and diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql index aee2cb11bf4..76d711c00e0 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql @@ -6,10 +6,11 @@ */ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o +from int line, ControlFlowNodeWithPointsTo f, Object o where of_interest(f, line) and f.refersTo(o) diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql index fe14e61e01b..8b5e008d60a 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o, ClassObject cls +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls where of_interest(f, line) and f.refersTo(o, cls, _) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql index db4710786ac..c264bf04013 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql index 1c294e64282..f7c3d5a5c71 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/import_star/Values.ql b/python/ql/test/library-tests/PointsTo/import_star/Values.ql index b54b8c6c78d..f8c620662d6 100644 --- a/python/ql/test/library-tests/PointsTo/import_star/Values.ql +++ b/python/ql/test/library-tests/PointsTo/import_star/Values.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f, ctx, v diff --git a/python/ql/test/library-tests/PointsTo/indexing/Test.ql b/python/ql/test/library-tests/PointsTo/indexing/Test.ql index 694e4d8e98e..d9a9d7156de 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/Test.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql index 9f16abc2de0..b3888d5bf10 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql index 050690fd1cb..571f39d34ab 100644 --- a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql +++ b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from NameNode n, Object value, ClassObject cls -where n.getId() = "self" and n.refersTo(value, cls, _) +where n.getId() = "self" and n.(ControlFlowNodeWithPointsTo).refersTo(value, cls, _) select n.getNode().getLocation().getStartLine(), value.toString(), cls.toString() diff --git a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql index 620cac34332..da4b46595e6 100644 --- a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql +++ b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql @@ -4,10 +4,11 @@ */ private import python +private import LegacyPointsTo import semmle.python.dataflow.new.DataFlow predicate pointsToOrigin(DataFlow::CfgNode pointer, DataFlow::CfgNode origin) { - origin.getNode() = pointer.getNode().pointsTo().getOrigin() + origin.getNode() = pointer.getNode().(ControlFlowNodeWithPointsTo).pointsTo().getOrigin() } module PointsToConfig implements DataFlow::ConfigSig { diff --git a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql index c5009ad4cb6..8dca05a8a27 100644 --- a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql +++ b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, ControlFlowNode x where f.refersTo(theNoneObject(), _, x) select locate(f.getLocation(), "abcdghijklmopqr"), f.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/library-tests/PointsTo/new/Values.ql b/python/ql/test/library-tests/PointsTo/new/Values.ql index 668e7a6b265..9e49b44d37e 100644 --- a/python/ql/test/library-tests/PointsTo/new/Values.ql +++ b/python/ql/test/library-tests/PointsTo/new/Values.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select locate(f.getLocation(), "abeghijklmnpqrstu"), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/properties/Values.ql b/python/ql/test/library-tests/PointsTo/properties/Values.ql index 23416efc0eb..6ab52924bb9 100644 --- a/python/ql/test/library-tests/PointsTo/properties/Values.ql +++ b/python/ql/test/library-tests/PointsTo/properties/Values.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.objects.ObjectInternal string vrepr(Value v) { @@ -8,6 +9,6 @@ string vrepr(Value v) { v = ObjectInternal::boundMethod() and result = "builtin-class method" } -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f.getLocation(), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql index db02e9c4f08..87b4bb605d7 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql index db02e9c4f08..87b4bb605d7 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql index db02e9c4f08..87b4bb605d7 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql index 700e0dd72a5..a7be670276f 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from NameNode name, CallNode call, string debug where call.getAnArg() = name and call.getFunction().(NameNode).getId() = "check" and - if exists(name.pointsTo()) - then debug = name.pointsTo().toString() + if exists(name.(ControlFlowNodeWithPointsTo).pointsTo()) + then debug = name.(ControlFlowNodeWithPointsTo).pointsTo().toString() else debug = "" select name, debug diff --git a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql index 86ad5bee155..43149df47b8 100644 --- a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql +++ b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql @@ -1,11 +1,12 @@ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext import semmle.python.objects.ObjectInternal from CallNode call, SuperInstance sup, BoundMethodObjectInternal bm where - call.getFunction().inferredValue() = bm and - call.getFunction().(AttrNode).getObject().inferredValue() = sup + call.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and + call.getFunction().(AttrNode).getObject().(ControlFlowNodeWithPointsTo).inferredValue() = sup select call.getLocation().getStartLine(), call.toString(), bm.getFunction().getSource().(FunctionObject).getQualifiedName() diff --git a/python/ql/test/library-tests/objects/Strings.ql b/python/ql/test/library-tests/objects/Strings.ql index eca8dec51fd..4c79df89daf 100644 --- a/python/ql/test/library-tests/objects/Strings.ql +++ b/python/ql/test/library-tests/objects/Strings.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from StringObject s, ControlFlowNode f +from StringObject s, ControlFlowNodeWithPointsTo f where f.refersTo(s) select f.getLocation().toString(), s.getText() diff --git a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll index 4ae53e94a38..e6874512f5c 100644 --- a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll +++ b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking class SimpleTest extends TaintKind { @@ -30,7 +31,7 @@ predicate visit_call(CallNode call, FunctionObject func) { exists(AttrNode attr, ClassObject cls, string name | name.matches("visit\\_%") and func = cls.lookupAttribute(name) and - attr.getObject("visit").refersTo(_, cls, _) and + attr.getObject("visit").(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) and attr = call.getFunction() ) } From b434ce460ee45da3e63f8c2a267cc7650ad3dcc1 Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 11:50:07 +0000 Subject: [PATCH 455/965] Python: Get rid of `getLiteralValue` This had only two uses in our libraries, so I simply inlined the predicate body in both places. --- python/ql/lib/semmle/python/Exprs.qll | 2 -- python/ql/src/Expressions/IsComparisons.qll | 3 ++- python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index e288078247a..88562cb7698 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -337,8 +337,6 @@ abstract class ImmutableLiteral extends Expr { abstract Object getLiteralObject(); abstract boolean booleanValue(); - - final Value getLiteralValue() { result.(ConstantObjectInternal).getLiteral() = this } } /** A numerical constant expression, such as `7` or `4.2` */ diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 25058206c86..575c53a03e1 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -2,6 +2,7 @@ import python private import LegacyPointsTo +private import semmle.python.objects.ObjectInternal /** Holds if the comparison `comp` uses `is` or `is not` (represented as `op`) to compare its `left` and `right` arguments. */ predicate comparison_using_is(Compare comp, ControlFlowNode left, Cmpop op, ControlFlowNode right) { @@ -121,7 +122,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) // OK to use 'is' when comparing items from a known set of objects not exists(Expr left, Expr right, Value val | comp.compares(left, op, right) and - exists(ImmutableLiteral il | il.getLiteralValue() = val) + exists(ImmutableLiteral il | il = val.(ConstantObjectInternal).getLiteral()) | left.pointsTo(val) and right.pointsTo(val) or diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index e47d4a55bf5..3c4b66f6982 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -14,6 +14,7 @@ */ import python +import semmle.python.objects.ObjectInternal import semmle.python.strings predicate string_format(BinaryExpr operation, StringLiteral str, Value args, AstNode origin) { @@ -31,7 +32,7 @@ int sequence_length(Value args) { not seq.getAnElt() instanceof Starred ) or - exists(ImmutableLiteral i | i.getLiteralValue() = args | result = 1) + exists(ImmutableLiteral i | i = args.(ConstantObjectInternal).getLiteral() | result = 1) } from From c648aa69b8eace8cd2124e303ad3c3018564f8ac Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 30 Oct 2025 14:28:47 +0100 Subject: [PATCH 456/965] Rust: Rename predicates --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 2 +- .../rust/internal/typeinference/FunctionOverloading.qll | 4 ++-- .../codeql/rust/internal/typeinference/FunctionType.qll | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 4a53b5dee8e..a94c893c219 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -2024,7 +2024,7 @@ private module NonMethodResolution { ImplItemNode impl, NonMethodFunction implFunction ) { exists(TypePath path | - type = assocFunctionTypeAt(implFunction, impl, pos, path) and + type = getAssocFunctionTypeAt(implFunction, impl, pos, path) and implFunction.implements(traitFunction) and FunctionOverloading::traitTypeParameterOccurrence(trait, traitFunction, _, pos, path, _) | diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll index 9373f62b0e4..b58084e31cf 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionOverloading.qll @@ -79,7 +79,7 @@ predicate traitTypeParameterOccurrence( TypeParameter tp ) { f = trait.getASuccessor(functionName) and - tp = assocFunctionTypeAt(f, trait, pos, path) and + tp = getAssocFunctionTypeAt(f, trait, pos, path) and tp = trait.(TraitTypeAbstraction).getATypeParameter() } @@ -120,7 +120,7 @@ predicate functionResolutionDependsOnArgument( exists(TraitItemNode trait, string functionName | implHasSibling(impl, trait) and traitTypeParameterOccurrence(trait, _, functionName, pos, path, _) and - type = assocFunctionTypeAt(f, impl, pos, path) and + type = getAssocFunctionTypeAt(f, impl, pos, path) and f = impl.getASuccessor(functionName) and pos.isPosition() ) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 4c4de4fa767..789f0ca2e3c 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -78,7 +78,7 @@ private newtype TAssocFunctionType = } bindingset[condition, constraint, tp] -private Type traitConstraintTypeAt( +private Type getTraitConstraintTypeAt( TypeMention condition, TypeMention constraint, TypeParameter tp, TypePath path ) { BaseTypes::conditionSatisfiesConstraintTypeAt(_, condition, constraint, @@ -90,7 +90,7 @@ private Type traitConstraintTypeAt( * `pos` at path `path` */ pragma[nomagic] -Type assocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path) { +Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path) { exists(MkAssocFunctionType(f, i, pos)) and ( // No specialization needed when the function is directly in the trait or @@ -109,7 +109,7 @@ Type assocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos exists(TraitItemNode trait, TypeMention condition, TypeMention constraint | trait.getAnAssocItem() = f and BaseTypes::rootTypesSatisfaction(_, TTrait(trait), _, condition, constraint) and - result = traitConstraintTypeAt(condition, constraint, tp, suffix) + result = getTraitConstraintTypeAt(condition, constraint, tp, suffix) | condition = i.(Trait) or condition = i.(Impl).getSelfTy() ) @@ -173,7 +173,7 @@ class AssocFunctionType extends MkAssocFunctionType { Type getTypeAt(TypePath path) { exists(Function f, FunctionPosition pos, ImplOrTraitItemNode i, Type t | this.appliesTo(f, i, pos) and - t = assocFunctionTypeAt(f, i, pos, path) + t = getAssocFunctionTypeAt(f, i, pos, path) | not t instanceof SelfTypeParameter and result = t From b93ce986128f86ddb227149f8717f00f67c0f54b Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 11:52:39 +0000 Subject: [PATCH 457/965] Python: Remove points-to from `Expr` --- python/ql/examples/snippets/builtin_object.ql | 3 +- .../ql/examples/snippets/catch_exception.ql | 3 +- .../snippets/conditional_expression.ql | 5 +- python/ql/examples/snippets/new_instance.ql | 3 +- python/ql/examples/snippets/print.ql | 3 +- .../ql/examples/snippets/raise_exception.ql | 3 +- python/ql/lib/LegacyPointsTo.qll | 72 +++++++++++++++++++ python/ql/lib/semmle/python/Exprs.qll | 70 +----------------- python/ql/lib/semmle/python/Metrics.qll | 4 +- .../lib/semmle/python/objects/ObjectAPI.qll | 4 +- python/ql/src/Exceptions/NotImplemented.qll | 3 +- python/ql/src/Exceptions/Raising.qll | 3 +- python/ql/src/Expressions/CallArgs.qll | 5 +- .../ExpectedMappingForFormatString.ql | 3 +- python/ql/src/Expressions/HashedButNoHash.ql | 2 +- python/ql/src/Expressions/IsComparisons.qll | 8 +-- .../ql/src/Expressions/NonCallableCalled.ql | 3 +- .../ql/src/Expressions/UnnecessaryLambda.ql | 3 +- .../WrongNumberArgumentsForFormat.ql | 7 +- .../ql/src/Functions/ExplicitReturnInInit.ql | 3 +- .../Functions/UseImplicitNoneReturnValue.ql | 7 +- python/ql/src/Imports/Cyclic.qll | 8 ++- python/ql/src/Imports/DeprecatedModule.ql | 3 +- python/ql/src/Imports/UnusedImport.ql | 5 +- .../MismatchInMultipleAssignment.ql | 3 +- .../ql/src/Statements/RedundantAssignment.ql | 7 +- python/ql/src/Statements/StatementNoEffect.ql | 11 +-- python/ql/src/Statements/UnreachableCode.ql | 7 +- .../src/Statements/UnusedExceptionObject.ql | 3 +- python/ql/src/Variables/UndefinedGlobal.ql | 3 +- python/ql/src/Variables/UninitializedLocal.ql | 3 +- python/ql/src/analysis/ImportFailure.ql | 4 +- python/ql/src/analysis/RatioOfDefinitions.ql | 3 +- .../ql/test/2/library-tests/six/pointsto.ql | 3 +- .../ql/test/3/library-tests/six/pointsto.ql | 3 +- 35 files changed, 164 insertions(+), 119 deletions(-) diff --git a/python/ql/examples/snippets/builtin_object.ql b/python/ql/examples/snippets/builtin_object.ql index 7f552a5aa79..36b2d92e0b9 100644 --- a/python/ql/examples/snippets/builtin_object.ql +++ b/python/ql/examples/snippets/builtin_object.ql @@ -8,7 +8,8 @@ */ import python +private import LegacyPointsTo -from Expr e, string name +from ExprWithPointsTo e, string name where e.pointsTo(Value::named(name)) and not name.charAt(_) = "." select e diff --git a/python/ql/examples/snippets/catch_exception.ql b/python/ql/examples/snippets/catch_exception.ql index 9d67d0056b6..b4a77f267d0 100644 --- a/python/ql/examples/snippets/catch_exception.ql +++ b/python/ql/examples/snippets/catch_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from ExceptStmt ex, ClassValue cls where cls.getName() = "MyExceptionClass" and - ex.getType().pointsTo(cls) + ex.getType().(ExprWithPointsTo).pointsTo(cls) select ex diff --git a/python/ql/examples/snippets/conditional_expression.ql b/python/ql/examples/snippets/conditional_expression.ql index 8af55ca104f..876c3467869 100644 --- a/python/ql/examples/snippets/conditional_expression.ql +++ b/python/ql/examples/snippets/conditional_expression.ql @@ -9,10 +9,11 @@ */ import python +private import LegacyPointsTo from IfExp e, ClassObject cls1, ClassObject cls2 where - e.getBody().refersTo(_, cls1, _) and - e.getOrelse().refersTo(_, cls2, _) and + e.getBody().(ExprWithPointsTo).refersTo(_, cls1, _) and + e.getOrelse().(ExprWithPointsTo).refersTo(_, cls2, _) and cls1 != cls2 select e diff --git a/python/ql/examples/snippets/new_instance.ql b/python/ql/examples/snippets/new_instance.ql index 75a1ea635d5..b0be6f77197 100644 --- a/python/ql/examples/snippets/new_instance.ql +++ b/python/ql/examples/snippets/new_instance.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Call new, ClassValue cls where cls.getName() = "MyClass" and - new.getFunc().pointsTo(cls) + new.getFunc().(ExprWithPointsTo).pointsTo(cls) select new diff --git a/python/ql/examples/snippets/print.ql b/python/ql/examples/snippets/print.ql index f0ba47eafeb..ba4d730118d 100644 --- a/python/ql/examples/snippets/print.ql +++ b/python/ql/examples/snippets/print.ql @@ -6,6 +6,7 @@ */ import python +private import LegacyPointsTo from AstNode print where @@ -13,5 +14,5 @@ where print instanceof Print or /* Python 3 or with `from __future__ import print_function` */ - print.(Call).getFunc().pointsTo(Value::named("print")) + print.(Call).getFunc().(ExprWithPointsTo).pointsTo(Value::named("print")) select print diff --git a/python/ql/examples/snippets/raise_exception.ql b/python/ql/examples/snippets/raise_exception.ql index 12e4f93a349..23cf26a8c60 100644 --- a/python/ql/examples/snippets/raise_exception.ql +++ b/python/ql/examples/snippets/raise_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Raise raise, ClassValue ex where ex.getName() = "AnException" and - raise.getException().pointsTo(ex.getASuperType()) + raise.getException().(ExprWithPointsTo).pointsTo(ex.getASuperType()) select raise, "Don't raise instances of 'AnException'" diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll index f195bc20a51..d5961fc0213 100644 --- a/python/ql/lib/LegacyPointsTo.qll +++ b/python/ql/lib/LegacyPointsTo.qll @@ -119,3 +119,75 @@ private predicate varHasCompletePointsToSet(SsaVariable var) { ) ) } + +/** + * An extension of `Expr` that provides points-to predicates. + */ +class ExprWithPointsTo extends Expr { + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use + * `ControlFlowNode.refersTo(...)` instead. + */ + predicate refersTo(Object obj, ClassObject cls, AstNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to" in the given `context`. + */ + predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .refersTo(context, obj, cls, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Holds if this expression might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)`, this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Equivalent to `this.refersTo(value, _)` + */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin` + * in the given `context`. + */ + predicate pointsTo(Context context, Value value, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .pointsTo(context, value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin`. + */ + predicate pointsTo(Value value, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value`. + */ + predicate pointsTo(Value value) { this.pointsTo(value, _) } + + /** Gets a value that this expression might "point-to". */ + Value pointsTo() { this.pointsTo(result) } + + override string getAQlClass() { none() } +} diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index 88562cb7698..e5ee2bdb28c 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -1,7 +1,4 @@ -import python -private import LegacyPointsTo -private import semmle.python.pointsto.PointsTo -private import semmle.python.objects.ObjectInternal +private import python private import semmle.python.internal.CachedStages /** An expression */ @@ -53,71 +50,6 @@ class Expr extends Expr_, AstNode { Expr getASubExpression() { none() } override AstNode getAChildNode() { result = this.getASubExpression() } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use - * `ControlFlowNode.refersTo(...)` instead. - */ - predicate refersTo(Object obj, ClassObject cls, AstNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to" in the given `context`. - */ - predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { - this.getAFlowNode() - .(ControlFlowNodeWithPointsTo) - .refersTo(context, obj, cls, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Holds if this expression might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)`, this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, AstNode origin) { - this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Equivalent to `this.refersTo(value, _)` - */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin` - * in the given `context`. - */ - predicate pointsTo(Context context, Value value, AstNode origin) { - this.getAFlowNode() - .(ControlFlowNodeWithPointsTo) - .pointsTo(context, value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin`. - */ - predicate pointsTo(Value value, AstNode origin) { - this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value`. - */ - predicate pointsTo(Value value) { this.pointsTo(value, _) } - - /** Gets a value that this expression might "point-to". */ - Value pointsTo() { this.pointsTo(result) } } /** An assignment expression, such as `x := y` */ diff --git a/python/ql/lib/semmle/python/Metrics.qll b/python/ql/lib/semmle/python/Metrics.qll index 16d89711eea..dcc5cf959d9 100644 --- a/python/ql/lib/semmle/python/Metrics.qll +++ b/python/ql/lib/semmle/python/Metrics.qll @@ -124,7 +124,7 @@ class ClassMetrics extends Class { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass() = other ) ) @@ -293,7 +293,7 @@ class ModuleMetrics extends Module { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass().getEnclosingModule() = other ) ) diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index 26c57a78c17..45247c5d9d4 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -697,7 +697,9 @@ abstract class FunctionValue extends CallableValue { exists(ClassValue cls, string name | cls.declaredAttribute(name) = this and name != "__new__" and - exists(Expr expr, AstNode origin | expr.pointsTo(this, origin) | not origin instanceof Lambda) + exists(ExprWithPointsTo expr, AstNode origin | expr.pointsTo(this, origin) | + not origin instanceof Lambda + ) ) } diff --git a/python/ql/src/Exceptions/NotImplemented.qll b/python/ql/src/Exceptions/NotImplemented.qll index 2186a7b5f30..498165d2982 100644 --- a/python/ql/src/Exceptions/NotImplemented.qll +++ b/python/ql/src/Exceptions/NotImplemented.qll @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo /** Holds if `notimpl` refers to `NotImplemented` or `NotImplemented()` in the `raise` statement */ -predicate use_of_not_implemented_in_raise(Raise raise, Expr notimpl) { +predicate use_of_not_implemented_in_raise(Raise raise, ExprWithPointsTo notimpl) { notimpl.pointsTo(Value::named("NotImplemented")) and ( notimpl = raise.getException() or diff --git a/python/ql/src/Exceptions/Raising.qll b/python/ql/src/Exceptions/Raising.qll index c8149481187..c509c41819d 100644 --- a/python/ql/src/Exceptions/Raising.qll +++ b/python/ql/src/Exceptions/Raising.qll @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo /** Whether the raise statement 'r' raises 'type' from origin 'orig' */ predicate type_or_typeof(Raise r, ClassValue type, AstNode orig) { - exists(Expr exception | exception = r.getRaised() | + exists(ExprWithPointsTo exception | exception = r.getRaised() | exception.pointsTo(type, orig) or not exists(ClassValue exc_type | exception.pointsTo(exc_type)) and diff --git a/python/ql/src/Expressions/CallArgs.qll b/python/ql/src/Expressions/CallArgs.qll index d2f94ca7cf0..709915afbc6 100644 --- a/python/ql/src/Expressions/CallArgs.qll +++ b/python/ql/src/Expressions/CallArgs.qll @@ -1,12 +1,13 @@ /** INTERNAL - Methods used by queries that test whether functions are invoked correctly. */ import python +private import LegacyPointsTo import Testing.Mox private int varargs_length_objectapi(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleObject t | call.getStarargs().refersTo(t) | result = t.getLength()) + exists(TupleObject t | call.getStarargs().(ExprWithPointsTo).refersTo(t) | result = t.getLength()) or result = count(call.getStarargs().(List).getAnElt()) } @@ -14,7 +15,7 @@ private int varargs_length_objectapi(Call call) { private int varargs_length(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleValue t | call.getStarargs().pointsTo(t) | result = t.length()) + exists(TupleValue t | call.getStarargs().(ExprWithPointsTo).pointsTo(t) | result = t.length()) or result = count(call.getStarargs().(List).getAnElt()) } diff --git a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql index 4342062270b..c11ab58688e 100644 --- a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +++ b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import semmle.python.strings -from Expr e, ClassValue t +from ExprWithPointsTo e, ClassValue t where exists(BinaryExpr b | b.getOp() instanceof Mod and diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index 79586598760..705806bf360 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -72,7 +72,7 @@ predicate is_unhashable(ControlFlowNodeWithPointsTo f, ClassValue cls, ControlFl predicate typeerror_is_caught(ControlFlowNode f) { exists(Try try | try.getBody().contains(f.getNode()) and - try.getAHandler().getType().pointsTo(ClassValue::typeError()) + try.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::typeError()) ) } diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 575c53a03e1..1ed4534bd23 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -76,12 +76,12 @@ private predicate universally_interned_value(Expr e) { } /** Holds if the expression `e` points to an interned constant in CPython. */ -predicate cpython_interned_constant(Expr e) { +predicate cpython_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | cpython_interned_value(const)) } /** Holds if the expression `e` points to a value that can be reasonably expected to be interned across all implementations of Python. */ -predicate universally_interned_constant(Expr e) { +predicate universally_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | universally_interned_value(const)) } @@ -120,7 +120,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing items from a known set of objects - not exists(Expr left, Expr right, Value val | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, Value val | comp.compares(left, op, right) and exists(ImmutableLiteral il | il = val.(ConstantObjectInternal).getLiteral()) | @@ -134,7 +134,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing with a member of an enum - not exists(Expr left, Expr right, AstNode origin | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, AstNode origin | comp.compares(left, op, right) and enum_member(origin) | diff --git a/python/ql/src/Expressions/NonCallableCalled.ql b/python/ql/src/Expressions/NonCallableCalled.ql index 2740dbe5fb2..2e593f88ca5 100644 --- a/python/ql/src/Expressions/NonCallableCalled.ql +++ b/python/ql/src/Expressions/NonCallableCalled.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import Exceptions.NotImplemented -from Call c, Value v, ClassValue t, Expr f, AstNode origin +from Call c, Value v, ClassValue t, ExprWithPointsTo f, AstNode origin where f = c.getFunc() and f.pointsTo(v, origin) and diff --git a/python/ql/src/Expressions/UnnecessaryLambda.ql b/python/ql/src/Expressions/UnnecessaryLambda.ql index 5ba2dd17124..770dde6fece 100644 --- a/python/ql/src/Expressions/UnnecessaryLambda.ql +++ b/python/ql/src/Expressions/UnnecessaryLambda.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* f consists of a single return statement, whose value is a call. The arguments of the call are exactly the parameters of f */ predicate simple_wrapper(Lambda l, Expr wrapped) { @@ -39,7 +40,7 @@ predicate simple_wrapper(Lambda l, Expr wrapped) { } /* The expression called will refer to the same object if evaluated when the lambda is created or when the lambda is executed. */ -predicate unnecessary_lambda(Lambda l, Expr e) { +predicate unnecessary_lambda(Lambda l, ExprWithPointsTo e) { simple_wrapper(l, e) and ( /* plain class */ diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index 3c4b66f6982..d7b27e5c3d7 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -14,20 +14,21 @@ */ import python +import LegacyPointsTo import semmle.python.objects.ObjectInternal import semmle.python.strings predicate string_format(BinaryExpr operation, StringLiteral str, Value args, AstNode origin) { operation.getOp() instanceof Mod and exists(Context ctx | - operation.getLeft().pointsTo(ctx, _, str) and - operation.getRight().pointsTo(ctx, args, origin) + operation.getLeft().(ExprWithPointsTo).pointsTo(ctx, _, str) and + operation.getRight().(ExprWithPointsTo).pointsTo(ctx, args, origin) ) } int sequence_length(Value args) { /* Guess length of sequence */ - exists(Tuple seq | seq.pointsTo(args, _) | + exists(Tuple seq | seq.(ExprWithPointsTo).pointsTo(args, _) | result = strictcount(seq.getAnElt()) and not seq.getAnElt() instanceof Starred ) diff --git a/python/ql/src/Functions/ExplicitReturnInInit.ql b/python/ql/src/Functions/ExplicitReturnInInit.ql index c4deea6111c..f1300afbfd0 100644 --- a/python/ql/src/Functions/ExplicitReturnInInit.ql +++ b/python/ql/src/Functions/ExplicitReturnInInit.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from Return r, Expr rv +from Return r, ExprWithPointsTo rv where exists(Function init | init.isInitMethod() and r.getScope() = init) and r.getValue() = rv and diff --git a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql index aeac382f638..4a8b8edd623 100644 --- a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +++ b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Testing.Mox predicate is_used(Call c) { @@ -31,10 +32,12 @@ from Call c, FunctionValue func where /* Call result is used, but callee is a procedure */ is_used(c) and - c.getFunc().pointsTo(func) and + c.getFunc().(ExprWithPointsTo).pointsTo(func) and func.getScope().isProcedure() and /* All callees are procedures */ - forall(FunctionValue callee | c.getFunc().pointsTo(callee) | callee.getScope().isProcedure()) and + forall(FunctionValue callee | c.getFunc().(ExprWithPointsTo).pointsTo(callee) | + callee.getScope().isProcedure() + ) and /* Mox return objects have an `AndReturn` method */ not useOfMoxInModule(c.getEnclosingModule()) select c, "The result of $@ is used even though it is always None.", func, func.getQualifiedName() diff --git a/python/ql/src/Imports/Cyclic.qll b/python/ql/src/Imports/Cyclic.qll index dd25f06d0e5..720ea8f0048 100644 --- a/python/ql/src/Imports/Cyclic.qll +++ b/python/ql/src/Imports/Cyclic.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate is_import_time(Stmt s) { not s.getScope+() instanceof Function } @@ -21,7 +22,7 @@ predicate circular_import(ModuleValue m1, ModuleValue m2) { ModuleValue stmt_imports(ImportingStmt s) { exists(string name | result.importedAs(name) and not name = "__main__" | name = s.getAnImportedModuleName() and - s.getASubExpression().pointsTo(result) and + s.getASubExpression().(ExprWithPointsTo).pointsTo(result) and not result.isPackage() ) } @@ -57,7 +58,7 @@ predicate import_time_transitive_import(ModuleValue base, Stmt imp, ModuleValue * Returns import-time usages of module 'm' in module 'enclosing' */ predicate import_time_module_use(ModuleValue m, ModuleValue enclosing, Expr use, string attr) { - exists(Expr mod | + exists(ExprWithPointsTo mod | use.getEnclosingModule() = enclosing.getScope() and not use.getScope+() instanceof Function and mod.pointsTo(m) and @@ -90,7 +91,8 @@ predicate is_used_in_annotation(Expr use) { */ predicate is_annotation_with_from_future_import_annotations(Expr use) { exists(ImportMember i | i.getScope() = use.getEnclosingModule() | - i.getModule().pointsTo().getName() = "__future__" and i.getName() = "annotations" + i.getModule().(ExprWithPointsTo).pointsTo().getName() = "__future__" and + i.getName() = "annotations" ) and is_used_in_annotation(use) } diff --git a/python/ql/src/Imports/DeprecatedModule.ql b/python/ql/src/Imports/DeprecatedModule.ql index 5f5a8af3ae9..3d529943fb8 100644 --- a/python/ql/src/Imports/DeprecatedModule.ql +++ b/python/ql/src/Imports/DeprecatedModule.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo /** * Holds if the module `name` was deprecated in Python version `major`.`minor`, @@ -79,7 +80,7 @@ where name = imp.getName() and deprecated_module(name, instead, _, _) and not exists(Try try, ExceptStmt except | except = try.getAHandler() | - except.getType().pointsTo(ClassValue::importError()) and + except.getType().(ExprWithPointsTo).pointsTo(ClassValue::importError()) and except.containsInScope(imp) ) select imp, deprecation_message(name) + replacement_message(name) diff --git a/python/ql/src/Imports/UnusedImport.ql b/python/ql/src/Imports/UnusedImport.ql index 02035690165..370daf405fe 100644 --- a/python/ql/src/Imports/UnusedImport.ql +++ b/python/ql/src/Imports/UnusedImport.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Variables.Definition import semmle.python.ApiGraphs @@ -94,7 +95,7 @@ private string typehint_annotation_in_module(Module module_scope) { or annotation = any(FunctionExpr f).getReturns().getASubExpression*() | - annotation.pointsTo(Value::forString(result)) and + annotation.(ExprWithPointsTo).pointsTo(Value::forString(result)) and annotation.getEnclosingModule() = module_scope ) } @@ -144,7 +145,7 @@ predicate unused_import(Import imp, Variable name) { not is_pytest_fixture(imp, name) and // Only consider import statements that actually point-to something (possibly an unknown module). // If this is not the case, it's likely that the import statement never gets executed. - imp.getAName().getValue().pointsTo(_) + imp.getAName().getValue().(ExprWithPointsTo).pointsTo(_) } from Stmt s, Variable name diff --git a/python/ql/src/Statements/MismatchInMultipleAssignment.ql b/python/ql/src/Statements/MismatchInMultipleAssignment.ql index 188bdd7b915..c44d8e348c6 100644 --- a/python/ql/src/Statements/MismatchInMultipleAssignment.ql +++ b/python/ql/src/Statements/MismatchInMultipleAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo private int len(ExprList el) { result = count(el.getAnItem()) } @@ -41,7 +42,7 @@ predicate mismatched_tuple_rhs(Assign a, int lcount, int rcount, Location loc) { a.getATarget().(Tuple).getElts() = l or a.getATarget().(List).getElts() = l ) and - a.getValue().pointsTo(r, origin) and + a.getValue().(ExprWithPointsTo).pointsTo(r, origin) and loc = origin.getLocation() and lcount = len(l) and rcount = r.length() and diff --git a/python/ql/src/Statements/RedundantAssignment.ql b/python/ql/src/Statements/RedundantAssignment.ql index 42561905bac..357364c41b2 100644 --- a/python/ql/src/Statements/RedundantAssignment.ql +++ b/python/ql/src/Statements/RedundantAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate assignment(AssignStmt a, Expr left, Expr right) { a.getATarget() = left and a.getValue() = right @@ -57,7 +58,9 @@ predicate same_name(Name n1, Name n2) { not maybe_defined_in_outer_scope(n2) } -ClassValue value_type(Attribute a) { a.getObject().pointsTo().getClass() = result } +ClassValue value_type(Attribute a) { + a.getObject().(ExprWithPointsTo).pointsTo().getClass() = result +} predicate is_property_access(Attribute a) { value_type(a).lookup(a.getName()) instanceof PropertyValue @@ -87,7 +90,7 @@ predicate pyflakes_commented(AssignStmt assignment) { predicate side_effecting_lhs(Attribute lhs) { exists(ClassValue cls, ClassValue decl | - lhs.getObject().pointsTo().getClass() = cls and + lhs.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and decl = cls.getASuperType() and not decl.isBuiltin() | diff --git a/python/ql/src/Statements/StatementNoEffect.ql b/python/ql/src/Statements/StatementNoEffect.ql index a5806e7082d..222907f24e3 100644 --- a/python/ql/src/Statements/StatementNoEffect.ql +++ b/python/ql/src/Statements/StatementNoEffect.ql @@ -13,10 +13,11 @@ */ import python +private import LegacyPointsTo predicate understood_attribute(Attribute attr, ClassValue cls, ClassValue attr_cls) { exists(string name | attr.getName() = name | - attr.getObject().pointsTo().getClass() = cls and + attr.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and cls.attr(name).getClass() = attr_cls ) } @@ -30,7 +31,7 @@ predicate side_effecting_attribute(Attribute attr) { } predicate maybe_side_effecting_attribute(Attribute attr) { - not understood_attribute(attr, _, _) and not attr.pointsTo(_) + not understood_attribute(attr, _, _) and not attr.(ExprWithPointsTo).pointsTo(_) or side_effecting_attribute(attr) } @@ -68,7 +69,7 @@ predicate side_effecting_binary(Expr b) { pragma[nomagic] private predicate binary_operator_special_method( - BinaryExpr b, Expr sub, ClassValue cls, string method_name + BinaryExpr b, ExprWithPointsTo sub, ClassValue cls, string method_name ) { method_name = special_method() and sub = b.getLeft() and @@ -77,7 +78,9 @@ private predicate binary_operator_special_method( } pragma[nomagic] -private predicate comparison_special_method(Compare b, Expr sub, ClassValue cls, string method_name) { +private predicate comparison_special_method( + Compare b, ExprWithPointsTo sub, ClassValue cls, string method_name +) { exists(Cmpop op | b.compares(sub, op, _) and method_name = op.getSpecialMethodName() diff --git a/python/ql/src/Statements/UnreachableCode.ql b/python/ql/src/Statements/UnreachableCode.ql index 98c99ac1218..55582ed2f06 100644 --- a/python/ql/src/Statements/UnreachableCode.ql +++ b/python/ql/src/Statements/UnreachableCode.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate typing_import(ImportingStmt is) { exists(Module m | @@ -33,7 +34,11 @@ predicate unique_yield(Stmt s) { /** Holds if `contextlib.suppress` may be used in the same scope as `s` */ predicate suppression_in_scope(Stmt s) { exists(With w | - w.getContextExpr().(Call).getFunc().pointsTo(Value::named("contextlib.suppress")) and + w.getContextExpr() + .(Call) + .getFunc() + .(ExprWithPointsTo) + .pointsTo(Value::named("contextlib.suppress")) and w.getScope() = s.getScope() ) } diff --git a/python/ql/src/Statements/UnusedExceptionObject.ql b/python/ql/src/Statements/UnusedExceptionObject.ql index 90724b9f167..9a6a3650b7e 100644 --- a/python/ql/src/Statements/UnusedExceptionObject.ql +++ b/python/ql/src/Statements/UnusedExceptionObject.ql @@ -12,10 +12,11 @@ */ import python +private import LegacyPointsTo from Call call, ClassValue ex where - call.getFunc().pointsTo(ex) and + call.getFunc().(ExprWithPointsTo).pointsTo(ex) and ex.getASuperType() = ClassValue::exception() and exists(ExprStmt s | s.getValue() = call) select call, "Instantiating an exception, but not raising it, has no effect." diff --git a/python/ql/src/Variables/UndefinedGlobal.ql b/python/ql/src/Variables/UndefinedGlobal.ql index f88f5504df8..3ea1c0d38eb 100644 --- a/python/ql/src/Variables/UndefinedGlobal.ql +++ b/python/ql/src/Variables/UndefinedGlobal.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo import Variables.MonkeyPatched import Loop import semmle.python.pointsto.PointsTo @@ -95,7 +96,7 @@ predicate undefined_use(Name u) { not contains_unknown_import_star(u.getEnclosingModule()) and not use_of_exec(u.getEnclosingModule()) and not exists(u.getVariable().getAStore()) and - not u.pointsTo(_) and + not u.(ExprWithPointsTo).pointsTo(_) and not probably_defined_in_loop(u) } diff --git a/python/ql/src/Variables/UninitializedLocal.ql b/python/ql/src/Variables/UninitializedLocal.ql index a6ac7d490ce..d4d94f5a4f3 100644 --- a/python/ql/src/Variables/UninitializedLocal.ql +++ b/python/ql/src/Variables/UninitializedLocal.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Undefined import semmle.python.pointsto.PointsTo @@ -30,7 +31,7 @@ predicate uninitialized_local(NameNode use) { predicate explicitly_guarded(NameNode u) { exists(Try t | t.getBody().contains(u.getNode()) and - t.getAHandler().getType().pointsTo(ClassValue::nameError()) + t.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::nameError()) ) } diff --git a/python/ql/src/analysis/ImportFailure.ql b/python/ql/src/analysis/ImportFailure.ql index 9dd6ac52adc..c9289a8b474 100644 --- a/python/ql/src/analysis/ImportFailure.ql +++ b/python/ql/src/analysis/ImportFailure.ql @@ -54,7 +54,7 @@ string os_specific_import(ImportExpr ie) { string get_os() { py_flags_versioned("sys.platform", result, major_version().toString()) } predicate ok_to_fail(ImportExpr ie) { - alternative_import(ie).refersTo(_) + alternative_import(ie).(ExprWithPointsTo).refersTo(_) or os_specific_import(ie) != get_os() } @@ -80,7 +80,7 @@ class VersionGuard extends ConditionBlock { from ImportExpr ie where - not ie.refersTo(_) and + not ie.(ExprWithPointsTo).refersTo(_) and exists(Context c | c.appliesTo(ie.getAFlowNode())) and not ok_to_fail(ie) and not exists(VersionGuard guard | guard.controls(ie.getAFlowNode().getBasicBlock(), _)) diff --git a/python/ql/src/analysis/RatioOfDefinitions.ql b/python/ql/src/analysis/RatioOfDefinitions.ql index 562deb75005..84b8d7602ec 100644 --- a/python/ql/src/analysis/RatioOfDefinitions.ql +++ b/python/ql/src/analysis/RatioOfDefinitions.ql @@ -3,9 +3,10 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking -predicate want_to_have_definition(Expr e) { +predicate want_to_have_definition(ExprWithPointsTo e) { /* not builtin object like len, tuple, etc. */ not exists(Value builtin | e.pointsTo(builtin) and builtin.isBuiltin()) and ( diff --git a/python/ql/test/2/library-tests/six/pointsto.ql b/python/ql/test/2/library-tests/six/pointsto.ql index cca7eeede10..66a9d449a76 100644 --- a/python/ql/test/2/library-tests/six/pointsto.ql +++ b/python/ql/test/2/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() diff --git a/python/ql/test/3/library-tests/six/pointsto.ql b/python/ql/test/3/library-tests/six/pointsto.ql index cca7eeede10..66a9d449a76 100644 --- a/python/ql/test/3/library-tests/six/pointsto.ql +++ b/python/ql/test/3/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() From 820d8e76c44dc4dd4b22be36c61275629d22e38f Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 12:04:31 +0000 Subject: [PATCH 458/965] Python: Remove points-to from `Module` --- python/ql/lib/LegacyPointsTo.qll | 17 +++++++++++++++++ python/ql/lib/semmle/python/Module.qll | 10 ---------- python/ql/src/Variables/UnusedModuleVariable.ql | 3 ++- python/ql/test/extractor-tests/exports/Test.ql | 3 ++- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll index d5961fc0213..3e675854601 100644 --- a/python/ql/lib/LegacyPointsTo.qll +++ b/python/ql/lib/LegacyPointsTo.qll @@ -21,6 +21,7 @@ private import python private import semmle.python.pointsto.PointsTo +private import semmle.python.objects.Modules /** * An extension of `ControlFlowNode` that provides points-to predicates. @@ -191,3 +192,19 @@ class ExprWithPointsTo extends Expr { override string getAQlClass() { none() } } + +/** + * An extension of `Module` that provides points-to related methods. + */ +class ModuleWithPointsTo extends Module { + /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ + string getAnExport() { + py_exports(this, result) + or + exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | + mod.(ModuleValue).exports(result) + ) + } + + override string getAQlClass() { none() } +} diff --git a/python/ql/lib/semmle/python/Module.qll b/python/ql/lib/semmle/python/Module.qll index 307433fe95b..666217874b7 100644 --- a/python/ql/lib/semmle/python/Module.qll +++ b/python/ql/lib/semmle/python/Module.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.objects.Modules private import semmle.python.internal.CachedStages /** @@ -66,15 +65,6 @@ class Module extends Module_, Scope, AstNode { /** Whether this module is a package initializer */ predicate isPackageInit() { this.getName().matches("%\\_\\_init\\_\\_") and not this.isPackage() } - /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ - string getAnExport() { - py_exports(this, result) - or - exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | - mod.(ModuleValue).exports(result) - ) - } - /** Gets the source file for this module */ File getFile() { py_module_path(this, result) } diff --git a/python/ql/src/Variables/UnusedModuleVariable.ql b/python/ql/src/Variables/UnusedModuleVariable.ql index 855ca27a741..24d6559d6fe 100644 --- a/python/ql/src/Variables/UnusedModuleVariable.ql +++ b/python/ql/src/Variables/UnusedModuleVariable.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo import Definition /** @@ -58,7 +59,7 @@ predicate unused_global(Name unused, GlobalVariable v) { // indirectly defn.getBasicBlock().reachesExit() and u.getScope() != unused.getScope() ) and - not unused.getEnclosingModule().getAnExport() = v.getId() and + not unused.getEnclosingModule().(ModuleWithPointsTo).getAnExport() = v.getId() and not exists(unused.getParentNode().(ClassDef).getDefinedClass().getADecorator()) and not exists(unused.getParentNode().(FunctionDef).getDefinedFunction().getADecorator()) and unused.defines(v) and diff --git a/python/ql/test/extractor-tests/exports/Test.ql b/python/ql/test/extractor-tests/exports/Test.ql index 50bc0a4ab56..b04a904197c 100644 --- a/python/ql/test/extractor-tests/exports/Test.ql +++ b/python/ql/test/extractor-tests/exports/Test.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo -from Module m +from ModuleWithPointsTo m select m.toString(), m.getAnExport().toString() From 39f74d808be5cf89c48ec805212ff23121fce217 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 2 Jul 2025 12:01:48 +0200 Subject: [PATCH 459/965] JS: Add compileForOverlayEval --- javascript/ql/lib/qlpack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 1ee1c8c7815..d8d53ef1c7e 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -23,3 +23,4 @@ dataExtensions: - semmle/javascript/security/domains/**/*.model.yml - ext/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true From a5819a14bec6c7efba67743085c6b196d1ce1c90 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 12 Sep 2025 09:49:52 +0200 Subject: [PATCH 460/965] JS: Fix bad join order in getNextToken() --- javascript/ql/lib/semmle/javascript/Tokens.qll | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/Tokens.qll b/javascript/ql/lib/semmle/javascript/Tokens.qll index c6a9b05a3d1..3d4e70d6149 100644 --- a/javascript/ql/lib/semmle/javascript/Tokens.qll +++ b/javascript/ql/lib/semmle/javascript/Tokens.qll @@ -4,6 +4,13 @@ import javascript +private predicate adjacentTokens(Token token1, Token token2) { + exists(TopLevel top, int index | + tokeninfo(token1, _, top, index, _) and + tokeninfo(token2, _, top, index + 1, _) + ) +} + /** * A token occurring in a piece of JavaScript source code. * @@ -27,10 +34,7 @@ class Token extends Locatable, @token { string getValue() { tokeninfo(this, _, _, _, result) } /** Gets the token following this token inside the same toplevel structure, if any. */ - Token getNextToken() { - this.getTopLevel() = result.getTopLevel() and - this.getIndex() + 1 = result.getIndex() - } + Token getNextToken() { adjacentTokens(this, result) } /** Gets the token preceding this token inside the same toplevel structure, if any. */ Token getPreviousToken() { result.getNextToken() = this } From 0acfacefbfd9fbf1d0230c09d51afa5143c86e81 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 27 Oct 2025 13:29:02 +0100 Subject: [PATCH 461/965] JS: Recursively delete source archive so emptiness detection works --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index f5e998398f5..8d00712b653 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -498,12 +498,9 @@ public class AutoBuild { // ensuring that the finalize steps detects that no code was seen. Path srcFolder = Paths.get(EnvironmentVariables.getWipDatabase(), "src"); try { - // Non-recursive delete because "src/" should be empty. - FileUtil8.delete(srcFolder); + FileUtil8.recursiveDelete(srcFolder); } catch (NoSuchFileException e) { Exceptions.ignore(e, "the directory did not exist"); - } catch (DirectoryNotEmptyException e) { - Exceptions.ignore(e, "just leave the directory if it is not empty"); } return 0; } From 1f7671cf5ebf3ba673fcc40a9fbe84b5f5650d0e Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 27 Oct 2025 13:47:45 +0100 Subject: [PATCH 462/965] JS: Ensure integration test contains one valid file --- .../ql/integration-tests/diagnostics/syntax-error/good.js | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 javascript/ql/integration-tests/diagnostics/syntax-error/good.js diff --git a/javascript/ql/integration-tests/diagnostics/syntax-error/good.js b/javascript/ql/integration-tests/diagnostics/syntax-error/good.js new file mode 100644 index 00000000000..7b0bfcf5c25 --- /dev/null +++ b/javascript/ql/integration-tests/diagnostics/syntax-error/good.js @@ -0,0 +1,2 @@ +// Ensure at least one file without errors is included, as extraction fails otherwise. +console.log("Hello") From c583b480afe7c7e97a217abaa9e6c57c87bee4cd Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 30 Oct 2025 13:42:31 +0100 Subject: [PATCH 463/965] JS: Add pragma[nomagic] just to be safe The DIL is unchanged --- javascript/ql/lib/semmle/javascript/Tokens.qll | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/ql/lib/semmle/javascript/Tokens.qll b/javascript/ql/lib/semmle/javascript/Tokens.qll index 3d4e70d6149..c9eeef69dfb 100644 --- a/javascript/ql/lib/semmle/javascript/Tokens.qll +++ b/javascript/ql/lib/semmle/javascript/Tokens.qll @@ -4,6 +4,7 @@ import javascript +pragma[nomagic] private predicate adjacentTokens(Token token1, Token token2) { exists(TopLevel top, int index | tokeninfo(token1, _, top, index, _) and From e702d3bfc86df03ef53f12b89bebfd97ff42a06e Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 15:16:51 +0000 Subject: [PATCH 464/965] Python: Add change note I wasn't entirely sure if this should be classified as `deprecated` or `breaking`, but seeing as these changes technically _could_ break existing queries (requiring a small rewrite), I opted for the latter. --- .../2025-10-30-remove-points-to-from-cfg-and-expr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md diff --git a/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md b/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md new file mode 100644 index 00000000000..9b8eef6bcba --- /dev/null +++ b/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md @@ -0,0 +1,5 @@ +--- +category: breaking +--- + +- The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. From d71f2dee9cc7ceb3922bea439ceb0315084c1744 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 21:39:28 +0100 Subject: [PATCH 465/965] Rust: Add more variable tests --- .../test/library-tests/variables/Cfg.expected | 2040 +++++++++-------- .../test/library-tests/variables/Ssa.expected | 785 +++---- rust/ql/test/library-tests/variables/main.rs | 10 + .../variables/variables.expected | 719 +++--- 4 files changed, 1802 insertions(+), 1752 deletions(-) diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 6b3f0e0e93d..2e64a70cb5f 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -862,1027 +862,1049 @@ edges | main.rs:359:9:359:30 | ExprStmt | main.rs:359:9:359:17 | print_i64 | | | main.rs:359:19:359:19 | x | main.rs:359:19:359:28 | x.unwrap() | | | main.rs:359:19:359:28 | x.unwrap() | main.rs:359:9:359:29 | print_i64(...) | | -| main.rs:363:1:373:1 | enter fn param_pattern1 | main.rs:364:5:364:6 | a8 | | -| main.rs:363:1:373:1 | exit fn param_pattern1 (normal) | main.rs:363:1:373:1 | exit fn param_pattern1 | | -| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | | -| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:12 | ...: ... | match | -| main.rs:364:5:364:12 | ...: ... | main.rs:365:5:368:5 | TuplePat | | -| main.rs:365:5:368:5 | TuplePat | main.rs:366:9:366:10 | b3 | match | -| main.rs:365:5:368:19 | ...: ... | main.rs:370:5:370:18 | ExprStmt | | -| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | | -| main.rs:366:9:366:10 | b3 | main.rs:367:9:367:10 | c1 | match | -| main.rs:367:9:367:10 | c1 | main.rs:365:5:368:19 | ...: ... | match | -| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | | -| main.rs:369:9:373:1 | { ... } | main.rs:363:1:373:1 | exit fn param_pattern1 (normal) | | -| main.rs:370:5:370:13 | print_str | main.rs:370:15:370:16 | a8 | | -| main.rs:370:5:370:17 | print_str(...) | main.rs:371:5:371:18 | ExprStmt | | -| main.rs:370:5:370:18 | ExprStmt | main.rs:370:5:370:13 | print_str | | -| main.rs:370:15:370:16 | a8 | main.rs:370:5:370:17 | print_str(...) | | -| main.rs:371:5:371:13 | print_str | main.rs:371:15:371:16 | b3 | | -| main.rs:371:5:371:17 | print_str(...) | main.rs:372:5:372:18 | ExprStmt | | -| main.rs:371:5:371:18 | ExprStmt | main.rs:371:5:371:13 | print_str | | -| main.rs:371:15:371:16 | b3 | main.rs:371:5:371:17 | print_str(...) | | -| main.rs:372:5:372:13 | print_str | main.rs:372:15:372:16 | c1 | | -| main.rs:372:5:372:17 | print_str(...) | main.rs:369:9:373:1 | { ... } | | -| main.rs:372:5:372:18 | ExprStmt | main.rs:372:5:372:13 | print_str | | -| main.rs:372:15:372:16 | c1 | main.rs:372:5:372:17 | print_str(...) | | -| main.rs:375:1:378:1 | enter fn param_pattern2 | main.rs:375:20:375:35 | ...::Left(...) | | -| main.rs:375:1:378:1 | exit fn param_pattern2 (normal) | main.rs:375:1:378:1 | exit fn param_pattern2 | | -| main.rs:375:19:375:64 | ...: Either | main.rs:377:5:377:18 | ExprStmt | | -| main.rs:375:20:375:35 | ...::Left(...) | main.rs:375:33:375:34 | a9 | match | -| main.rs:375:20:375:35 | ...::Left(...) | main.rs:375:39:375:55 | ...::Right(...) | no-match | -| main.rs:375:20:375:55 | ... \| ... | main.rs:375:19:375:64 | ...: Either | match | -| main.rs:375:33:375:34 | a9 | main.rs:375:20:375:55 | ... \| ... | match | -| main.rs:375:33:375:34 | a9 | main.rs:375:33:375:34 | a9 | | -| main.rs:375:39:375:55 | ...::Right(...) | main.rs:375:53:375:54 | a9 | match | -| main.rs:375:53:375:54 | a9 | main.rs:375:20:375:55 | ... \| ... | match | -| main.rs:375:53:375:54 | a9 | main.rs:375:53:375:54 | a9 | | -| main.rs:376:9:378:1 | { ... } | main.rs:375:1:378:1 | exit fn param_pattern2 (normal) | | -| main.rs:377:5:377:13 | print_i64 | main.rs:377:15:377:16 | a9 | | -| main.rs:377:5:377:17 | print_i64(...) | main.rs:376:9:378:1 | { ... } | | -| main.rs:377:5:377:18 | ExprStmt | main.rs:377:5:377:13 | print_i64 | | -| main.rs:377:15:377:16 | a9 | main.rs:377:5:377:17 | print_i64(...) | | -| main.rs:380:1:415:1 | enter fn destruct_assignment | main.rs:381:5:385:18 | let ... = ... | | -| main.rs:380:1:415:1 | exit fn destruct_assignment (normal) | main.rs:380:1:415:1 | exit fn destruct_assignment | | -| main.rs:380:26:415:1 | { ... } | main.rs:380:1:415:1 | exit fn destruct_assignment (normal) | | -| main.rs:381:5:385:18 | let ... = ... | main.rs:385:10:385:10 | 1 | | -| main.rs:381:9:385:5 | TuplePat | main.rs:382:13:382:15 | a10 | match | -| main.rs:382:9:382:15 | mut a10 | main.rs:383:13:383:14 | b4 | match | -| main.rs:382:13:382:15 | a10 | main.rs:382:9:382:15 | mut a10 | | -| main.rs:383:9:383:14 | mut b4 | main.rs:384:13:384:14 | c2 | match | -| main.rs:383:13:383:14 | b4 | main.rs:383:9:383:14 | mut b4 | | -| main.rs:384:9:384:14 | mut c2 | main.rs:386:5:386:19 | ExprStmt | match | -| main.rs:384:13:384:14 | c2 | main.rs:384:9:384:14 | mut c2 | | -| main.rs:385:9:385:17 | TupleExpr | main.rs:381:9:385:5 | TuplePat | | -| main.rs:385:10:385:10 | 1 | main.rs:385:13:385:13 | 2 | | -| main.rs:385:13:385:13 | 2 | main.rs:385:16:385:16 | 3 | | -| main.rs:385:16:385:16 | 3 | main.rs:385:9:385:17 | TupleExpr | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:17 | a10 | | -| main.rs:386:5:386:18 | print_i64(...) | main.rs:387:5:387:18 | ExprStmt | | -| main.rs:386:5:386:19 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:17 | a10 | main.rs:386:5:386:18 | print_i64(...) | | -| main.rs:387:5:387:13 | print_i64 | main.rs:387:15:387:16 | b4 | | -| main.rs:387:5:387:17 | print_i64(...) | main.rs:388:5:388:18 | ExprStmt | | -| main.rs:387:5:387:18 | ExprStmt | main.rs:387:5:387:13 | print_i64 | | -| main.rs:387:15:387:16 | b4 | main.rs:387:5:387:17 | print_i64(...) | | -| main.rs:388:5:388:13 | print_i64 | main.rs:388:15:388:16 | c2 | | -| main.rs:388:5:388:17 | print_i64(...) | main.rs:390:5:398:6 | ExprStmt | | -| main.rs:388:5:388:18 | ExprStmt | main.rs:388:5:388:13 | print_i64 | | -| main.rs:388:15:388:16 | c2 | main.rs:388:5:388:17 | print_i64(...) | | -| main.rs:390:5:394:5 | TupleExpr | main.rs:395:9:395:11 | a10 | | -| main.rs:390:5:398:5 | ... = ... | main.rs:399:5:399:19 | ExprStmt | | -| main.rs:390:5:398:6 | ExprStmt | main.rs:391:9:391:10 | c2 | | -| main.rs:391:9:391:10 | c2 | main.rs:392:9:392:10 | b4 | | -| main.rs:392:9:392:10 | b4 | main.rs:393:9:393:11 | a10 | | -| main.rs:393:9:393:11 | a10 | main.rs:390:5:394:5 | TupleExpr | | -| main.rs:394:9:398:5 | TupleExpr | main.rs:390:5:398:5 | ... = ... | | -| main.rs:395:9:395:11 | a10 | main.rs:396:9:396:10 | b4 | | -| main.rs:396:9:396:10 | b4 | main.rs:397:9:397:10 | c2 | | -| main.rs:397:9:397:10 | c2 | main.rs:394:9:398:5 | TupleExpr | | -| main.rs:399:5:399:13 | print_i64 | main.rs:399:15:399:17 | a10 | | -| main.rs:399:5:399:18 | print_i64(...) | main.rs:400:5:400:18 | ExprStmt | | -| main.rs:399:5:399:19 | ExprStmt | main.rs:399:5:399:13 | print_i64 | | -| main.rs:399:15:399:17 | a10 | main.rs:399:5:399:18 | print_i64(...) | | -| main.rs:400:5:400:13 | print_i64 | main.rs:400:15:400:16 | b4 | | -| main.rs:400:5:400:17 | print_i64(...) | main.rs:401:5:401:18 | ExprStmt | | -| main.rs:400:5:400:18 | ExprStmt | main.rs:400:5:400:13 | print_i64 | | -| main.rs:400:15:400:16 | b4 | main.rs:400:5:400:17 | print_i64(...) | | -| main.rs:401:5:401:13 | print_i64 | main.rs:401:15:401:16 | c2 | | -| main.rs:401:5:401:17 | print_i64(...) | main.rs:403:5:411:5 | ExprStmt | | -| main.rs:401:5:401:18 | ExprStmt | main.rs:401:5:401:13 | print_i64 | | -| main.rs:401:15:401:16 | c2 | main.rs:401:5:401:17 | print_i64(...) | | -| main.rs:403:5:411:5 | ExprStmt | main.rs:403:12:403:12 | 4 | | -| main.rs:403:5:411:5 | match ... { ... } | main.rs:413:5:413:19 | ExprStmt | | -| main.rs:403:11:403:16 | TupleExpr | main.rs:404:9:407:9 | TuplePat | | -| main.rs:403:12:403:12 | 4 | main.rs:403:15:403:15 | 5 | | -| main.rs:403:15:403:15 | 5 | main.rs:403:11:403:16 | TupleExpr | | -| main.rs:404:9:407:9 | TuplePat | main.rs:405:13:405:15 | a10 | match | -| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | | -| main.rs:405:13:405:15 | a10 | main.rs:406:13:406:14 | b4 | match | -| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | | -| main.rs:406:13:406:14 | b4 | main.rs:408:13:408:27 | ExprStmt | match | -| main.rs:407:14:410:9 | { ... } | main.rs:403:5:411:5 | match ... { ... } | | -| main.rs:408:13:408:21 | print_i64 | main.rs:408:23:408:25 | a10 | | -| main.rs:408:13:408:26 | print_i64(...) | main.rs:409:13:409:26 | ExprStmt | | -| main.rs:408:13:408:27 | ExprStmt | main.rs:408:13:408:21 | print_i64 | | -| main.rs:408:23:408:25 | a10 | main.rs:408:13:408:26 | print_i64(...) | | -| main.rs:409:13:409:21 | print_i64 | main.rs:409:23:409:24 | b4 | | -| main.rs:409:13:409:25 | print_i64(...) | main.rs:407:14:410:9 | { ... } | | -| main.rs:409:13:409:26 | ExprStmt | main.rs:409:13:409:21 | print_i64 | | -| main.rs:409:23:409:24 | b4 | main.rs:409:13:409:25 | print_i64(...) | | -| main.rs:413:5:413:13 | print_i64 | main.rs:413:15:413:17 | a10 | | -| main.rs:413:5:413:18 | print_i64(...) | main.rs:414:5:414:18 | ExprStmt | | -| main.rs:413:5:413:19 | ExprStmt | main.rs:413:5:413:13 | print_i64 | | -| main.rs:413:15:413:17 | a10 | main.rs:413:5:413:18 | print_i64(...) | | -| main.rs:414:5:414:13 | print_i64 | main.rs:414:15:414:16 | b4 | | -| main.rs:414:5:414:17 | print_i64(...) | main.rs:380:26:415:1 | { ... } | | -| main.rs:414:5:414:18 | ExprStmt | main.rs:414:5:414:13 | print_i64 | | -| main.rs:414:15:414:16 | b4 | main.rs:414:5:414:17 | print_i64(...) | | -| main.rs:417:1:432:1 | enter fn closure_variable | main.rs:418:5:420:10 | let ... = ... | | -| main.rs:417:1:432:1 | exit fn closure_variable (normal) | main.rs:417:1:432:1 | exit fn closure_variable | | -| main.rs:417:23:432:1 | { ... } | main.rs:417:1:432:1 | exit fn closure_variable (normal) | | -| main.rs:418:5:420:10 | let ... = ... | main.rs:419:9:420:9 | \|...\| x | | -| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | | -| main.rs:418:9:418:23 | example_closure | main.rs:421:5:422:27 | let ... = ... | match | -| main.rs:419:9:420:9 | \|...\| x | main.rs:418:9:418:23 | example_closure | | -| main.rs:419:9:420:9 | enter \|...\| x | main.rs:419:10:419:10 | x | | -| main.rs:419:9:420:9 | exit \|...\| x (normal) | main.rs:419:9:420:9 | exit \|...\| x | | -| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | | -| main.rs:419:10:419:10 | x | main.rs:419:10:419:15 | ...: i64 | match | -| main.rs:419:10:419:15 | ...: i64 | main.rs:420:9:420:9 | x | | -| main.rs:420:9:420:9 | x | main.rs:419:9:420:9 | exit \|...\| x (normal) | | -| main.rs:421:5:422:27 | let ... = ... | main.rs:422:9:422:23 | example_closure | | -| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | | -| main.rs:421:9:421:10 | n1 | main.rs:423:5:423:18 | ExprStmt | match | -| main.rs:422:9:422:23 | example_closure | main.rs:422:25:422:25 | 5 | | -| main.rs:422:9:422:26 | example_closure(...) | main.rs:421:9:421:10 | n1 | | -| main.rs:422:25:422:25 | 5 | main.rs:422:9:422:26 | example_closure(...) | | -| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | n1 | | -| main.rs:423:5:423:17 | print_i64(...) | main.rs:425:5:425:25 | ExprStmt | | +| main.rs:363:1:370:1 | enter fn match_pattern15 | main.rs:364:5:364:20 | let ... = ... | | +| main.rs:363:1:370:1 | exit fn match_pattern15 (normal) | main.rs:363:1:370:1 | exit fn match_pattern15 | | +| main.rs:363:22:370:1 | { ... } | main.rs:363:1:370:1 | exit fn match_pattern15 (normal) | | +| main.rs:364:5:364:20 | let ... = ... | main.rs:364:13:364:16 | Some | | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | | +| main.rs:364:9:364:9 | x | main.rs:365:5:369:10 | ExprStmt | match | +| main.rs:364:13:364:16 | Some | main.rs:364:18:364:18 | 0 | | +| main.rs:364:13:364:19 | Some(...) | main.rs:364:9:364:9 | x | | +| main.rs:364:18:364:18 | 0 | main.rs:364:13:364:19 | Some(...) | | +| main.rs:365:5:369:9 | match x { ... } | main.rs:363:22:370:1 | { ... } | | +| main.rs:365:5:369:10 | ExprStmt | main.rs:365:11:365:11 | x | | +| main.rs:365:11:365:11 | x | main.rs:366:13:366:19 | Some(...) | | +| main.rs:366:13:366:19 | Some(...) | main.rs:366:18:366:18 | x | match | +| main.rs:366:13:366:19 | Some(...) | main.rs:368:13:368:13 | _ | no-match | +| main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | | +| main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | match | +| main.rs:367:20:367:20 | x | main.rs:365:5:369:9 | match x { ... } | | +| main.rs:368:13:368:13 | _ | main.rs:368:18:368:18 | 0 | match | +| main.rs:368:18:368:18 | 0 | main.rs:365:5:369:9 | match x { ... } | | +| main.rs:372:1:382:1 | enter fn param_pattern1 | main.rs:373:5:373:6 | a8 | | +| main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | main.rs:372:1:382:1 | exit fn param_pattern1 | | +| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | | +| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:12 | ...: ... | match | +| main.rs:373:5:373:12 | ...: ... | main.rs:374:5:377:5 | TuplePat | | +| main.rs:374:5:377:5 | TuplePat | main.rs:375:9:375:10 | b3 | match | +| main.rs:374:5:377:19 | ...: ... | main.rs:379:5:379:18 | ExprStmt | | +| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | | +| main.rs:375:9:375:10 | b3 | main.rs:376:9:376:10 | c1 | match | +| main.rs:376:9:376:10 | c1 | main.rs:374:5:377:19 | ...: ... | match | +| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | | +| main.rs:378:9:382:1 | { ... } | main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | | +| main.rs:379:5:379:13 | print_str | main.rs:379:15:379:16 | a8 | | +| main.rs:379:5:379:17 | print_str(...) | main.rs:380:5:380:18 | ExprStmt | | +| main.rs:379:5:379:18 | ExprStmt | main.rs:379:5:379:13 | print_str | | +| main.rs:379:15:379:16 | a8 | main.rs:379:5:379:17 | print_str(...) | | +| main.rs:380:5:380:13 | print_str | main.rs:380:15:380:16 | b3 | | +| main.rs:380:5:380:17 | print_str(...) | main.rs:381:5:381:18 | ExprStmt | | +| main.rs:380:5:380:18 | ExprStmt | main.rs:380:5:380:13 | print_str | | +| main.rs:380:15:380:16 | b3 | main.rs:380:5:380:17 | print_str(...) | | +| main.rs:381:5:381:13 | print_str | main.rs:381:15:381:16 | c1 | | +| main.rs:381:5:381:17 | print_str(...) | main.rs:378:9:382:1 | { ... } | | +| main.rs:381:5:381:18 | ExprStmt | main.rs:381:5:381:13 | print_str | | +| main.rs:381:15:381:16 | c1 | main.rs:381:5:381:17 | print_str(...) | | +| main.rs:384:1:387:1 | enter fn param_pattern2 | main.rs:384:20:384:35 | ...::Left(...) | | +| main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | main.rs:384:1:387:1 | exit fn param_pattern2 | | +| main.rs:384:19:384:64 | ...: Either | main.rs:386:5:386:18 | ExprStmt | | +| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:33:384:34 | a9 | match | +| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:39:384:55 | ...::Right(...) | no-match | +| main.rs:384:20:384:55 | ... \| ... | main.rs:384:19:384:64 | ...: Either | match | +| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | ... \| ... | match | +| main.rs:384:33:384:34 | a9 | main.rs:384:33:384:34 | a9 | | +| main.rs:384:39:384:55 | ...::Right(...) | main.rs:384:53:384:54 | a9 | match | +| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | ... \| ... | match | +| main.rs:384:53:384:54 | a9 | main.rs:384:53:384:54 | a9 | | +| main.rs:385:9:387:1 | { ... } | main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | | +| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | a9 | | +| main.rs:386:5:386:17 | print_i64(...) | main.rs:385:9:387:1 | { ... } | | +| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | +| main.rs:386:15:386:16 | a9 | main.rs:386:5:386:17 | print_i64(...) | | +| main.rs:389:1:424:1 | enter fn destruct_assignment | main.rs:390:5:394:18 | let ... = ... | | +| main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | main.rs:389:1:424:1 | exit fn destruct_assignment | | +| main.rs:389:26:424:1 | { ... } | main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | | +| main.rs:390:5:394:18 | let ... = ... | main.rs:394:10:394:10 | 1 | | +| main.rs:390:9:394:5 | TuplePat | main.rs:391:13:391:15 | a10 | match | +| main.rs:391:9:391:15 | mut a10 | main.rs:392:13:392:14 | b4 | match | +| main.rs:391:13:391:15 | a10 | main.rs:391:9:391:15 | mut a10 | | +| main.rs:392:9:392:14 | mut b4 | main.rs:393:13:393:14 | c2 | match | +| main.rs:392:13:392:14 | b4 | main.rs:392:9:392:14 | mut b4 | | +| main.rs:393:9:393:14 | mut c2 | main.rs:395:5:395:19 | ExprStmt | match | +| main.rs:393:13:393:14 | c2 | main.rs:393:9:393:14 | mut c2 | | +| main.rs:394:9:394:17 | TupleExpr | main.rs:390:9:394:5 | TuplePat | | +| main.rs:394:10:394:10 | 1 | main.rs:394:13:394:13 | 2 | | +| main.rs:394:13:394:13 | 2 | main.rs:394:16:394:16 | 3 | | +| main.rs:394:16:394:16 | 3 | main.rs:394:9:394:17 | TupleExpr | | +| main.rs:395:5:395:13 | print_i64 | main.rs:395:15:395:17 | a10 | | +| main.rs:395:5:395:18 | print_i64(...) | main.rs:396:5:396:18 | ExprStmt | | +| main.rs:395:5:395:19 | ExprStmt | main.rs:395:5:395:13 | print_i64 | | +| main.rs:395:15:395:17 | a10 | main.rs:395:5:395:18 | print_i64(...) | | +| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:16 | b4 | | +| main.rs:396:5:396:17 | print_i64(...) | main.rs:397:5:397:18 | ExprStmt | | +| main.rs:396:5:396:18 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | +| main.rs:396:15:396:16 | b4 | main.rs:396:5:396:17 | print_i64(...) | | +| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | c2 | | +| main.rs:397:5:397:17 | print_i64(...) | main.rs:399:5:407:6 | ExprStmt | | +| main.rs:397:5:397:18 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | +| main.rs:397:15:397:16 | c2 | main.rs:397:5:397:17 | print_i64(...) | | +| main.rs:399:5:403:5 | TupleExpr | main.rs:404:9:404:11 | a10 | | +| main.rs:399:5:407:5 | ... = ... | main.rs:408:5:408:19 | ExprStmt | | +| main.rs:399:5:407:6 | ExprStmt | main.rs:400:9:400:10 | c2 | | +| main.rs:400:9:400:10 | c2 | main.rs:401:9:401:10 | b4 | | +| main.rs:401:9:401:10 | b4 | main.rs:402:9:402:11 | a10 | | +| main.rs:402:9:402:11 | a10 | main.rs:399:5:403:5 | TupleExpr | | +| main.rs:403:9:407:5 | TupleExpr | main.rs:399:5:407:5 | ... = ... | | +| main.rs:404:9:404:11 | a10 | main.rs:405:9:405:10 | b4 | | +| main.rs:405:9:405:10 | b4 | main.rs:406:9:406:10 | c2 | | +| main.rs:406:9:406:10 | c2 | main.rs:403:9:407:5 | TupleExpr | | +| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:17 | a10 | | +| main.rs:408:5:408:18 | print_i64(...) | main.rs:409:5:409:18 | ExprStmt | | +| main.rs:408:5:408:19 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | +| main.rs:408:15:408:17 | a10 | main.rs:408:5:408:18 | print_i64(...) | | +| main.rs:409:5:409:13 | print_i64 | main.rs:409:15:409:16 | b4 | | +| main.rs:409:5:409:17 | print_i64(...) | main.rs:410:5:410:18 | ExprStmt | | +| main.rs:409:5:409:18 | ExprStmt | main.rs:409:5:409:13 | print_i64 | | +| main.rs:409:15:409:16 | b4 | main.rs:409:5:409:17 | print_i64(...) | | +| main.rs:410:5:410:13 | print_i64 | main.rs:410:15:410:16 | c2 | | +| main.rs:410:5:410:17 | print_i64(...) | main.rs:412:5:420:5 | ExprStmt | | +| main.rs:410:5:410:18 | ExprStmt | main.rs:410:5:410:13 | print_i64 | | +| main.rs:410:15:410:16 | c2 | main.rs:410:5:410:17 | print_i64(...) | | +| main.rs:412:5:420:5 | ExprStmt | main.rs:412:12:412:12 | 4 | | +| main.rs:412:5:420:5 | match ... { ... } | main.rs:422:5:422:19 | ExprStmt | | +| main.rs:412:11:412:16 | TupleExpr | main.rs:413:9:416:9 | TuplePat | | +| main.rs:412:12:412:12 | 4 | main.rs:412:15:412:15 | 5 | | +| main.rs:412:15:412:15 | 5 | main.rs:412:11:412:16 | TupleExpr | | +| main.rs:413:9:416:9 | TuplePat | main.rs:414:13:414:15 | a10 | match | +| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | | +| main.rs:414:13:414:15 | a10 | main.rs:415:13:415:14 | b4 | match | +| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | | +| main.rs:415:13:415:14 | b4 | main.rs:417:13:417:27 | ExprStmt | match | +| main.rs:416:14:419:9 | { ... } | main.rs:412:5:420:5 | match ... { ... } | | +| main.rs:417:13:417:21 | print_i64 | main.rs:417:23:417:25 | a10 | | +| main.rs:417:13:417:26 | print_i64(...) | main.rs:418:13:418:26 | ExprStmt | | +| main.rs:417:13:417:27 | ExprStmt | main.rs:417:13:417:21 | print_i64 | | +| main.rs:417:23:417:25 | a10 | main.rs:417:13:417:26 | print_i64(...) | | +| main.rs:418:13:418:21 | print_i64 | main.rs:418:23:418:24 | b4 | | +| main.rs:418:13:418:25 | print_i64(...) | main.rs:416:14:419:9 | { ... } | | +| main.rs:418:13:418:26 | ExprStmt | main.rs:418:13:418:21 | print_i64 | | +| main.rs:418:23:418:24 | b4 | main.rs:418:13:418:25 | print_i64(...) | | +| main.rs:422:5:422:13 | print_i64 | main.rs:422:15:422:17 | a10 | | +| main.rs:422:5:422:18 | print_i64(...) | main.rs:423:5:423:18 | ExprStmt | | +| main.rs:422:5:422:19 | ExprStmt | main.rs:422:5:422:13 | print_i64 | | +| main.rs:422:15:422:17 | a10 | main.rs:422:5:422:18 | print_i64(...) | | +| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | b4 | | +| main.rs:423:5:423:17 | print_i64(...) | main.rs:389:26:424:1 | { ... } | | | main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | -| main.rs:423:15:423:16 | n1 | main.rs:423:5:423:17 | print_i64(...) | | -| main.rs:425:5:425:22 | immutable_variable | main.rs:425:5:425:24 | immutable_variable(...) | | -| main.rs:425:5:425:24 | immutable_variable(...) | main.rs:426:5:428:10 | let ... = ... | | -| main.rs:425:5:425:25 | ExprStmt | main.rs:425:5:425:22 | immutable_variable | | -| main.rs:426:5:428:10 | let ... = ... | main.rs:427:5:428:9 | \|...\| x | | -| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | | -| main.rs:426:9:426:26 | immutable_variable | main.rs:429:5:430:30 | let ... = ... | match | -| main.rs:427:5:428:9 | \|...\| x | main.rs:426:9:426:26 | immutable_variable | | -| main.rs:427:5:428:9 | enter \|...\| x | main.rs:427:6:427:6 | x | | -| main.rs:427:5:428:9 | exit \|...\| x (normal) | main.rs:427:5:428:9 | exit \|...\| x | | -| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | | -| main.rs:427:6:427:6 | x | main.rs:427:6:427:11 | ...: i64 | match | -| main.rs:427:6:427:11 | ...: i64 | main.rs:428:9:428:9 | x | | -| main.rs:428:9:428:9 | x | main.rs:427:5:428:9 | exit \|...\| x (normal) | | -| main.rs:429:5:430:30 | let ... = ... | main.rs:430:9:430:26 | immutable_variable | | -| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | | -| main.rs:429:9:429:10 | n2 | main.rs:431:5:431:18 | ExprStmt | match | -| main.rs:430:9:430:26 | immutable_variable | main.rs:430:28:430:28 | 6 | | -| main.rs:430:9:430:29 | immutable_variable(...) | main.rs:429:9:429:10 | n2 | | -| main.rs:430:28:430:28 | 6 | main.rs:430:9:430:29 | immutable_variable(...) | | -| main.rs:431:5:431:13 | print_i64 | main.rs:431:15:431:16 | n2 | | -| main.rs:431:5:431:17 | print_i64(...) | main.rs:417:23:432:1 | { ... } | | -| main.rs:431:5:431:18 | ExprStmt | main.rs:431:5:431:13 | print_i64 | | -| main.rs:431:15:431:16 | n2 | main.rs:431:5:431:17 | print_i64(...) | | -| main.rs:434:1:464:1 | enter fn nested_function | main.rs:436:5:438:10 | let ... = ... | | -| main.rs:434:1:464:1 | exit fn nested_function (normal) | main.rs:434:1:464:1 | exit fn nested_function | | -| main.rs:434:22:464:1 | { ... } | main.rs:434:1:464:1 | exit fn nested_function (normal) | | -| main.rs:436:5:438:10 | let ... = ... | main.rs:437:9:438:9 | \|...\| x | | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | | -| main.rs:436:9:436:9 | f | main.rs:439:5:439:20 | ExprStmt | match | -| main.rs:437:9:438:9 | \|...\| x | main.rs:436:9:436:9 | f | | -| main.rs:437:9:438:9 | enter \|...\| x | main.rs:437:10:437:10 | x | | -| main.rs:437:9:438:9 | exit \|...\| x (normal) | main.rs:437:9:438:9 | exit \|...\| x | | -| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | | -| main.rs:437:10:437:10 | x | main.rs:437:10:437:15 | ...: i64 | match | -| main.rs:437:10:437:15 | ...: i64 | main.rs:438:9:438:9 | x | | -| main.rs:438:9:438:9 | x | main.rs:437:9:438:9 | exit \|...\| x (normal) | | -| main.rs:439:5:439:13 | print_i64 | main.rs:439:15:439:15 | f | | -| main.rs:439:5:439:19 | print_i64(...) | main.rs:441:5:444:5 | fn f | | -| main.rs:439:5:439:20 | ExprStmt | main.rs:439:5:439:13 | print_i64 | | -| main.rs:439:15:439:15 | f | main.rs:439:17:439:17 | 1 | | -| main.rs:439:15:439:18 | f(...) | main.rs:439:5:439:19 | print_i64(...) | | -| main.rs:439:17:439:17 | 1 | main.rs:439:15:439:18 | f(...) | | -| main.rs:441:5:444:5 | enter fn f | main.rs:441:10:441:10 | x | | -| main.rs:441:5:444:5 | exit fn f (normal) | main.rs:441:5:444:5 | exit fn f | | -| main.rs:441:5:444:5 | fn f | main.rs:446:5:446:20 | ExprStmt | | -| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | | -| main.rs:441:10:441:10 | x | main.rs:441:10:441:15 | ...: i64 | match | -| main.rs:441:10:441:15 | ...: i64 | main.rs:443:9:443:9 | x | | -| main.rs:442:5:444:5 | { ... } | main.rs:441:5:444:5 | exit fn f (normal) | | -| main.rs:443:9:443:9 | x | main.rs:443:13:443:13 | 1 | | -| main.rs:443:9:443:13 | ... + ... | main.rs:442:5:444:5 | { ... } | | -| main.rs:443:13:443:13 | 1 | main.rs:443:9:443:13 | ... + ... | | -| main.rs:446:5:446:13 | print_i64 | main.rs:446:15:446:15 | f | | -| main.rs:446:5:446:19 | print_i64(...) | main.rs:449:9:449:24 | ExprStmt | | -| main.rs:446:5:446:20 | ExprStmt | main.rs:446:5:446:13 | print_i64 | | -| main.rs:446:15:446:15 | f | main.rs:446:17:446:17 | 2 | | -| main.rs:446:15:446:18 | f(...) | main.rs:446:5:446:19 | print_i64(...) | | -| main.rs:446:17:446:17 | 2 | main.rs:446:15:446:18 | f(...) | | -| main.rs:448:5:463:5 | { ... } | main.rs:434:22:464:1 | { ... } | | -| main.rs:449:9:449:17 | print_i64 | main.rs:449:19:449:19 | f | | -| main.rs:449:9:449:23 | print_i64(...) | main.rs:450:9:453:9 | fn f | | -| main.rs:449:9:449:24 | ExprStmt | main.rs:449:9:449:17 | print_i64 | | -| main.rs:449:19:449:19 | f | main.rs:449:21:449:21 | 3 | | -| main.rs:449:19:449:22 | f(...) | main.rs:449:9:449:23 | print_i64(...) | | -| main.rs:449:21:449:21 | 3 | main.rs:449:19:449:22 | f(...) | | -| main.rs:450:9:453:9 | enter fn f | main.rs:450:14:450:14 | x | | -| main.rs:450:9:453:9 | exit fn f (normal) | main.rs:450:9:453:9 | exit fn f | | -| main.rs:450:9:453:9 | fn f | main.rs:455:9:457:9 | ExprStmt | | -| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | | -| main.rs:450:14:450:14 | x | main.rs:450:14:450:19 | ...: i64 | match | -| main.rs:450:14:450:19 | ...: i64 | main.rs:452:13:452:13 | 2 | | -| main.rs:451:9:453:9 | { ... } | main.rs:450:9:453:9 | exit fn f (normal) | | -| main.rs:452:13:452:13 | 2 | main.rs:452:17:452:17 | x | | -| main.rs:452:13:452:17 | ... * ... | main.rs:451:9:453:9 | { ... } | | -| main.rs:452:17:452:17 | x | main.rs:452:13:452:17 | ... * ... | | -| main.rs:455:9:457:9 | ExprStmt | main.rs:456:13:456:28 | ExprStmt | | -| main.rs:455:9:457:9 | { ... } | main.rs:459:9:461:14 | let ... = ... | | -| main.rs:456:13:456:21 | print_i64 | main.rs:456:23:456:23 | f | | -| main.rs:456:13:456:27 | print_i64(...) | main.rs:455:9:457:9 | { ... } | | -| main.rs:456:13:456:28 | ExprStmt | main.rs:456:13:456:21 | print_i64 | | -| main.rs:456:23:456:23 | f | main.rs:456:25:456:25 | 4 | | -| main.rs:456:23:456:26 | f(...) | main.rs:456:13:456:27 | print_i64(...) | | -| main.rs:456:25:456:25 | 4 | main.rs:456:23:456:26 | f(...) | | -| main.rs:459:9:461:14 | let ... = ... | main.rs:460:13:461:13 | \|...\| x | | -| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | | -| main.rs:459:13:459:13 | f | main.rs:462:9:462:24 | ExprStmt | match | -| main.rs:460:13:461:13 | \|...\| x | main.rs:459:13:459:13 | f | | -| main.rs:460:13:461:13 | enter \|...\| x | main.rs:460:14:460:14 | x | | -| main.rs:460:13:461:13 | exit \|...\| x (normal) | main.rs:460:13:461:13 | exit \|...\| x | | -| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | | -| main.rs:460:14:460:14 | x | main.rs:460:14:460:19 | ...: i64 | match | -| main.rs:460:14:460:19 | ...: i64 | main.rs:461:13:461:13 | x | | -| main.rs:461:13:461:13 | x | main.rs:460:13:461:13 | exit \|...\| x (normal) | | -| main.rs:462:9:462:17 | print_i64 | main.rs:462:19:462:19 | f | | -| main.rs:462:9:462:23 | print_i64(...) | main.rs:448:5:463:5 | { ... } | | -| main.rs:462:9:462:24 | ExprStmt | main.rs:462:9:462:17 | print_i64 | | -| main.rs:462:19:462:19 | f | main.rs:462:21:462:21 | 5 | | -| main.rs:462:19:462:22 | f(...) | main.rs:462:9:462:23 | print_i64(...) | | -| main.rs:462:21:462:21 | 5 | main.rs:462:19:462:22 | f(...) | | -| main.rs:466:1:473:1 | enter fn for_variable | main.rs:467:5:467:42 | let ... = ... | | -| main.rs:466:1:473:1 | exit fn for_variable (normal) | main.rs:466:1:473:1 | exit fn for_variable | | -| main.rs:466:19:473:1 | { ... } | main.rs:466:1:473:1 | exit fn for_variable (normal) | | -| main.rs:467:5:467:42 | let ... = ... | main.rs:467:15:467:22 | "apples" | | -| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | | -| main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | match | -| main.rs:467:13:467:41 | &... | main.rs:467:9:467:9 | v | | -| main.rs:467:14:467:41 | [...] | main.rs:467:13:467:41 | &... | | -| main.rs:467:15:467:22 | "apples" | main.rs:467:25:467:30 | "cake" | | -| main.rs:467:25:467:30 | "cake" | main.rs:467:33:467:40 | "coffee" | | -| main.rs:467:33:467:40 | "coffee" | main.rs:467:14:467:41 | [...] | | -| main.rs:469:5:472:5 | for ... in ... { ... } | main.rs:466:19:473:1 | { ... } | | -| main.rs:469:9:469:12 | text | main.rs:469:5:472:5 | for ... in ... { ... } | no-match | -| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | | -| main.rs:469:9:469:12 | text | main.rs:471:9:471:24 | ExprStmt | match | -| main.rs:470:12:470:12 | v | main.rs:469:9:469:12 | text | | -| main.rs:470:14:472:5 | { ... } | main.rs:469:9:469:12 | text | | -| main.rs:471:9:471:17 | print_str | main.rs:471:19:471:22 | text | | -| main.rs:471:9:471:23 | print_str(...) | main.rs:470:14:472:5 | { ... } | | -| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_str | | -| main.rs:471:19:471:22 | text | main.rs:471:9:471:23 | print_str(...) | | -| main.rs:475:1:481:1 | enter fn add_assign | main.rs:476:5:476:18 | let ... = 0 | | -| main.rs:475:1:481:1 | exit fn add_assign (normal) | main.rs:475:1:481:1 | exit fn add_assign | | -| main.rs:475:17:481:1 | { ... } | main.rs:475:1:481:1 | exit fn add_assign (normal) | | -| main.rs:476:5:476:18 | let ... = 0 | main.rs:476:17:476:17 | 0 | | -| main.rs:476:9:476:13 | mut a | main.rs:477:5:477:11 | ExprStmt | match | -| main.rs:476:13:476:13 | a | main.rs:476:9:476:13 | mut a | | -| main.rs:476:17:476:17 | 0 | main.rs:476:13:476:13 | a | | -| main.rs:477:5:477:5 | a | main.rs:477:10:477:10 | 1 | | -| main.rs:477:5:477:10 | ... += ... | main.rs:478:5:478:17 | ExprStmt | | -| main.rs:477:5:477:11 | ExprStmt | main.rs:477:5:477:5 | a | | -| main.rs:477:10:477:10 | 1 | main.rs:477:5:477:10 | ... += ... | | -| main.rs:478:5:478:13 | print_i64 | main.rs:478:15:478:15 | a | | -| main.rs:478:5:478:16 | print_i64(...) | main.rs:479:5:479:28 | ExprStmt | | -| main.rs:478:5:478:17 | ExprStmt | main.rs:478:5:478:13 | print_i64 | | -| main.rs:478:15:478:15 | a | main.rs:478:5:478:16 | print_i64(...) | | -| main.rs:479:5:479:27 | ... .add_assign(...) | main.rs:480:5:480:17 | ExprStmt | | -| main.rs:479:5:479:28 | ExprStmt | main.rs:479:11:479:11 | a | | -| main.rs:479:6:479:11 | &mut a | main.rs:479:25:479:26 | 10 | | -| main.rs:479:11:479:11 | a | main.rs:479:6:479:11 | &mut a | | -| main.rs:479:25:479:26 | 10 | main.rs:479:5:479:27 | ... .add_assign(...) | | -| main.rs:480:5:480:13 | print_i64 | main.rs:480:15:480:15 | a | | -| main.rs:480:5:480:16 | print_i64(...) | main.rs:475:17:481:1 | { ... } | | -| main.rs:480:5:480:17 | ExprStmt | main.rs:480:5:480:13 | print_i64 | | -| main.rs:480:15:480:15 | a | main.rs:480:5:480:16 | print_i64(...) | | -| main.rs:483:1:489:1 | enter fn mutate | main.rs:484:5:484:18 | let ... = 1 | | -| main.rs:483:1:489:1 | exit fn mutate (normal) | main.rs:483:1:489:1 | exit fn mutate | | -| main.rs:483:13:489:1 | { ... } | main.rs:483:1:489:1 | exit fn mutate (normal) | | -| main.rs:484:5:484:18 | let ... = 1 | main.rs:484:17:484:17 | 1 | | -| main.rs:484:9:484:13 | mut i | main.rs:485:5:486:15 | let ... = ... | match | -| main.rs:484:13:484:13 | i | main.rs:484:9:484:13 | mut i | | -| main.rs:484:17:484:17 | 1 | main.rs:484:13:484:13 | i | | -| main.rs:485:5:486:15 | let ... = ... | main.rs:486:14:486:14 | i | | -| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | | -| main.rs:485:9:485:13 | ref_i | main.rs:487:5:487:15 | ExprStmt | match | -| main.rs:486:9:486:14 | &mut i | main.rs:485:9:485:13 | ref_i | | -| main.rs:486:14:486:14 | i | main.rs:486:9:486:14 | &mut i | | -| main.rs:487:5:487:10 | * ... | main.rs:487:14:487:14 | 2 | | -| main.rs:487:5:487:14 | ... = ... | main.rs:488:5:488:17 | ExprStmt | | -| main.rs:487:5:487:15 | ExprStmt | main.rs:487:6:487:10 | ref_i | | -| main.rs:487:6:487:10 | ref_i | main.rs:487:5:487:10 | * ... | | -| main.rs:487:14:487:14 | 2 | main.rs:487:5:487:14 | ... = ... | | -| main.rs:488:5:488:13 | print_i64 | main.rs:488:15:488:15 | i | | -| main.rs:488:5:488:16 | print_i64(...) | main.rs:483:13:489:1 | { ... } | | -| main.rs:488:5:488:17 | ExprStmt | main.rs:488:5:488:13 | print_i64 | | -| main.rs:488:15:488:15 | i | main.rs:488:5:488:16 | print_i64(...) | | -| main.rs:491:1:496:1 | enter fn mutate_param | main.rs:491:17:491:17 | x | | -| main.rs:491:1:496:1 | exit fn mutate_param (normal) | main.rs:491:1:496:1 | exit fn mutate_param | | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:27 | ...: ... | match | -| main.rs:491:17:491:27 | ...: ... | main.rs:492:5:494:11 | ExprStmt | | -| main.rs:492:5:492:6 | * ... | main.rs:493:10:493:10 | x | | -| main.rs:492:5:494:10 | ... = ... | main.rs:495:5:495:13 | ExprStmt | | -| main.rs:492:5:494:11 | ExprStmt | main.rs:492:6:492:6 | x | | -| main.rs:492:6:492:6 | x | main.rs:492:5:492:6 | * ... | | -| main.rs:493:9:493:10 | * ... | main.rs:494:10:494:10 | x | | -| main.rs:493:9:494:10 | ... + ... | main.rs:492:5:494:10 | ... = ... | | -| main.rs:493:10:493:10 | x | main.rs:493:9:493:10 | * ... | | -| main.rs:494:9:494:10 | * ... | main.rs:493:9:494:10 | ... + ... | | -| main.rs:494:10:494:10 | x | main.rs:494:9:494:10 | * ... | | -| main.rs:495:5:495:12 | return x | main.rs:491:1:496:1 | exit fn mutate_param (normal) | return | -| main.rs:495:5:495:13 | ExprStmt | main.rs:495:12:495:12 | x | | -| main.rs:495:12:495:12 | x | main.rs:495:5:495:12 | return x | | -| main.rs:498:1:504:1 | enter fn mutate_param2 | main.rs:498:22:498:22 | x | | -| main.rs:498:1:504:1 | exit fn mutate_param2 (normal) | main.rs:498:1:504:1 | exit fn mutate_param2 | | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:35 | ...: ... | match | -| main.rs:498:22:498:35 | ...: ... | main.rs:498:38:498:38 | y | | -| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | | -| main.rs:498:38:498:38 | y | main.rs:498:38:498:56 | ...: ... | match | -| main.rs:498:38:498:56 | ...: ... | main.rs:499:5:501:11 | ExprStmt | | -| main.rs:498:59:504:1 | { ... } | main.rs:498:1:504:1 | exit fn mutate_param2 (normal) | | -| main.rs:499:5:499:6 | * ... | main.rs:500:10:500:10 | x | | -| main.rs:499:5:501:10 | ... = ... | main.rs:502:5:503:10 | ExprStmt | | -| main.rs:499:5:501:11 | ExprStmt | main.rs:499:6:499:6 | x | | -| main.rs:499:6:499:6 | x | main.rs:499:5:499:6 | * ... | | -| main.rs:500:9:500:10 | * ... | main.rs:501:10:501:10 | x | | -| main.rs:500:9:501:10 | ... + ... | main.rs:499:5:501:10 | ... = ... | | -| main.rs:500:10:500:10 | x | main.rs:500:9:500:10 | * ... | | -| main.rs:501:9:501:10 | * ... | main.rs:500:9:501:10 | ... + ... | | -| main.rs:501:10:501:10 | x | main.rs:501:9:501:10 | * ... | | -| main.rs:502:5:502:6 | * ... | main.rs:503:9:503:9 | x | | -| main.rs:502:5:503:9 | ... = ... | main.rs:498:59:504:1 | { ... } | | -| main.rs:502:5:503:10 | ExprStmt | main.rs:502:6:502:6 | y | | -| main.rs:502:6:502:6 | y | main.rs:502:5:502:6 | * ... | | -| main.rs:503:9:503:9 | x | main.rs:502:5:503:9 | ... = ... | | -| main.rs:506:1:526:1 | enter fn mutate_arg | main.rs:507:5:507:18 | let ... = 2 | | -| main.rs:506:1:526:1 | exit fn mutate_arg (normal) | main.rs:506:1:526:1 | exit fn mutate_arg | | -| main.rs:506:17:526:1 | { ... } | main.rs:506:1:526:1 | exit fn mutate_arg (normal) | | -| main.rs:507:5:507:18 | let ... = 2 | main.rs:507:17:507:17 | 2 | | -| main.rs:507:9:507:13 | mut x | main.rs:508:5:509:29 | let ... = ... | match | -| main.rs:507:13:507:13 | x | main.rs:507:9:507:13 | mut x | | -| main.rs:507:17:507:17 | 2 | main.rs:507:13:507:13 | x | | -| main.rs:508:5:509:29 | let ... = ... | main.rs:509:9:509:20 | mutate_param | | -| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | | -| main.rs:508:9:508:9 | y | main.rs:510:5:510:12 | ExprStmt | match | -| main.rs:509:9:509:20 | mutate_param | main.rs:509:27:509:27 | x | | -| main.rs:509:9:509:28 | mutate_param(...) | main.rs:508:9:508:9 | y | | -| main.rs:509:22:509:27 | &mut x | main.rs:509:9:509:28 | mutate_param(...) | | -| main.rs:509:27:509:27 | x | main.rs:509:22:509:27 | &mut x | | -| main.rs:510:5:510:6 | * ... | main.rs:510:10:510:11 | 10 | | -| main.rs:510:5:510:11 | ... = ... | main.rs:513:5:513:17 | ExprStmt | | -| main.rs:510:5:510:12 | ExprStmt | main.rs:510:6:510:6 | y | | -| main.rs:510:6:510:6 | y | main.rs:510:5:510:6 | * ... | | -| main.rs:510:10:510:11 | 10 | main.rs:510:5:510:11 | ... = ... | | -| main.rs:513:5:513:13 | print_i64 | main.rs:513:15:513:15 | x | | -| main.rs:513:5:513:16 | print_i64(...) | main.rs:515:5:515:18 | let ... = 4 | | -| main.rs:513:5:513:17 | ExprStmt | main.rs:513:5:513:13 | print_i64 | | -| main.rs:513:15:513:15 | x | main.rs:513:5:513:16 | print_i64(...) | | -| main.rs:515:5:515:18 | let ... = 4 | main.rs:515:17:515:17 | 4 | | -| main.rs:515:9:515:13 | mut z | main.rs:516:5:517:20 | let ... = ... | match | -| main.rs:515:13:515:13 | z | main.rs:515:9:515:13 | mut z | | -| main.rs:515:17:515:17 | 4 | main.rs:515:13:515:13 | z | | -| main.rs:516:5:517:20 | let ... = ... | main.rs:517:19:517:19 | x | | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | | -| main.rs:516:9:516:9 | w | main.rs:518:5:521:6 | ExprStmt | match | -| main.rs:517:9:517:19 | &mut ... | main.rs:516:9:516:9 | w | | -| main.rs:517:14:517:19 | &mut x | main.rs:517:9:517:19 | &mut ... | | -| main.rs:517:19:517:19 | x | main.rs:517:14:517:19 | &mut x | | -| main.rs:518:5:518:17 | mutate_param2 | main.rs:519:14:519:14 | z | | -| main.rs:518:5:521:5 | mutate_param2(...) | main.rs:522:5:522:13 | ExprStmt | | -| main.rs:518:5:521:6 | ExprStmt | main.rs:518:5:518:17 | mutate_param2 | | -| main.rs:519:9:519:14 | &mut z | main.rs:520:9:520:9 | w | | -| main.rs:519:14:519:14 | z | main.rs:519:9:519:14 | &mut z | | -| main.rs:520:9:520:9 | w | main.rs:518:5:521:5 | mutate_param2(...) | | -| main.rs:522:5:522:7 | * ... | main.rs:522:11:522:12 | 11 | | -| main.rs:522:5:522:12 | ... = ... | main.rs:525:5:525:17 | ExprStmt | | -| main.rs:522:5:522:13 | ExprStmt | main.rs:522:7:522:7 | w | | -| main.rs:522:6:522:7 | * ... | main.rs:522:5:522:7 | * ... | | -| main.rs:522:7:522:7 | w | main.rs:522:6:522:7 | * ... | | -| main.rs:522:11:522:12 | 11 | main.rs:522:5:522:12 | ... = ... | | -| main.rs:525:5:525:13 | print_i64 | main.rs:525:15:525:15 | z | | -| main.rs:525:5:525:16 | print_i64(...) | main.rs:506:17:526:1 | { ... } | | -| main.rs:525:5:525:17 | ExprStmt | main.rs:525:5:525:13 | print_i64 | | -| main.rs:525:15:525:15 | z | main.rs:525:5:525:16 | print_i64(...) | | -| main.rs:528:1:534:1 | enter fn alias | main.rs:529:5:529:18 | let ... = 1 | | -| main.rs:528:1:534:1 | exit fn alias (normal) | main.rs:528:1:534:1 | exit fn alias | | -| main.rs:528:12:534:1 | { ... } | main.rs:528:1:534:1 | exit fn alias (normal) | | -| main.rs:529:5:529:18 | let ... = 1 | main.rs:529:17:529:17 | 1 | | -| main.rs:529:9:529:13 | mut x | main.rs:530:5:531:15 | let ... = ... | match | -| main.rs:529:13:529:13 | x | main.rs:529:9:529:13 | mut x | | -| main.rs:529:17:529:17 | 1 | main.rs:529:13:529:13 | x | | -| main.rs:530:5:531:15 | let ... = ... | main.rs:531:14:531:14 | x | | -| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | | -| main.rs:530:9:530:9 | y | main.rs:532:5:532:11 | ExprStmt | match | -| main.rs:531:9:531:14 | &mut x | main.rs:530:9:530:9 | y | | -| main.rs:531:14:531:14 | x | main.rs:531:9:531:14 | &mut x | | -| main.rs:532:5:532:6 | * ... | main.rs:532:10:532:10 | 2 | | -| main.rs:532:5:532:10 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | -| main.rs:532:5:532:11 | ExprStmt | main.rs:532:6:532:6 | y | | -| main.rs:532:6:532:6 | y | main.rs:532:5:532:6 | * ... | | -| main.rs:532:10:532:10 | 2 | main.rs:532:5:532:10 | ... = ... | | -| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | -| main.rs:533:5:533:16 | print_i64(...) | main.rs:528:12:534:1 | { ... } | | -| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | -| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | -| main.rs:536:1:545:1 | enter fn capture_immut | main.rs:537:5:537:16 | let ... = 100 | | -| main.rs:536:1:545:1 | exit fn capture_immut (normal) | main.rs:536:1:545:1 | exit fn capture_immut | | -| main.rs:536:20:545:1 | { ... } | main.rs:536:1:545:1 | exit fn capture_immut (normal) | | -| main.rs:537:5:537:16 | let ... = 100 | main.rs:537:13:537:15 | 100 | | -| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | | -| main.rs:537:9:537:9 | x | main.rs:540:5:542:6 | let ... = ... | match | -| main.rs:537:13:537:15 | 100 | main.rs:537:9:537:9 | x | | -| main.rs:540:5:542:6 | let ... = ... | main.rs:540:15:542:5 | \|...\| ... | | -| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | | -| main.rs:540:9:540:11 | cap | main.rs:543:5:543:10 | ExprStmt | match | -| main.rs:540:15:542:5 | \|...\| ... | main.rs:540:9:540:11 | cap | | -| main.rs:540:15:542:5 | enter \|...\| ... | main.rs:541:9:541:21 | ExprStmt | | -| main.rs:540:15:542:5 | exit \|...\| ... (normal) | main.rs:540:15:542:5 | exit \|...\| ... | | -| main.rs:540:18:542:5 | { ... } | main.rs:540:15:542:5 | exit \|...\| ... (normal) | | -| main.rs:541:9:541:17 | print_i64 | main.rs:541:19:541:19 | x | | -| main.rs:541:9:541:20 | print_i64(...) | main.rs:540:18:542:5 | { ... } | | -| main.rs:541:9:541:21 | ExprStmt | main.rs:541:9:541:17 | print_i64 | | -| main.rs:541:19:541:19 | x | main.rs:541:9:541:20 | print_i64(...) | | -| main.rs:543:5:543:7 | cap | main.rs:543:5:543:9 | cap(...) | | -| main.rs:543:5:543:9 | cap(...) | main.rs:544:5:544:17 | ExprStmt | | -| main.rs:543:5:543:10 | ExprStmt | main.rs:543:5:543:7 | cap | | -| main.rs:544:5:544:13 | print_i64 | main.rs:544:15:544:15 | x | | -| main.rs:544:5:544:16 | print_i64(...) | main.rs:536:20:545:1 | { ... } | | -| main.rs:544:5:544:17 | ExprStmt | main.rs:544:5:544:13 | print_i64 | | -| main.rs:544:15:544:15 | x | main.rs:544:5:544:16 | print_i64(...) | | -| main.rs:547:1:574:1 | enter fn capture_mut | main.rs:548:5:548:18 | let ... = 1 | | -| main.rs:547:1:574:1 | exit fn capture_mut (normal) | main.rs:547:1:574:1 | exit fn capture_mut | | -| main.rs:547:18:574:1 | { ... } | main.rs:547:1:574:1 | exit fn capture_mut (normal) | | -| main.rs:548:5:548:18 | let ... = 1 | main.rs:548:17:548:17 | 1 | | -| main.rs:548:9:548:13 | mut x | main.rs:551:5:553:6 | let ... = ... | match | -| main.rs:548:13:548:13 | x | main.rs:548:9:548:13 | mut x | | -| main.rs:548:17:548:17 | 1 | main.rs:548:13:548:13 | x | | -| main.rs:551:5:553:6 | let ... = ... | main.rs:551:20:553:5 | \|...\| ... | | -| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | | -| main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:15 | ExprStmt | match | -| main.rs:551:20:553:5 | \|...\| ... | main.rs:551:9:551:16 | closure1 | | -| main.rs:551:20:553:5 | enter \|...\| ... | main.rs:552:9:552:21 | ExprStmt | | -| main.rs:551:20:553:5 | exit \|...\| ... (normal) | main.rs:551:20:553:5 | exit \|...\| ... | | -| main.rs:551:23:553:5 | { ... } | main.rs:551:20:553:5 | exit \|...\| ... (normal) | | -| main.rs:552:9:552:17 | print_i64 | main.rs:552:19:552:19 | x | | -| main.rs:552:9:552:20 | print_i64(...) | main.rs:551:23:553:5 | { ... } | | -| main.rs:552:9:552:21 | ExprStmt | main.rs:552:9:552:17 | print_i64 | | -| main.rs:552:19:552:19 | x | main.rs:552:9:552:20 | print_i64(...) | | -| main.rs:554:5:554:12 | closure1 | main.rs:554:5:554:14 | closure1(...) | | -| main.rs:554:5:554:14 | closure1(...) | main.rs:555:5:555:17 | ExprStmt | | -| main.rs:554:5:554:15 | ExprStmt | main.rs:554:5:554:12 | closure1 | | -| main.rs:555:5:555:13 | print_i64 | main.rs:555:15:555:15 | x | | -| main.rs:555:5:555:16 | print_i64(...) | main.rs:557:5:557:18 | let ... = 2 | | -| main.rs:555:5:555:17 | ExprStmt | main.rs:555:5:555:13 | print_i64 | | -| main.rs:555:15:555:15 | x | main.rs:555:5:555:16 | print_i64(...) | | -| main.rs:557:5:557:18 | let ... = 2 | main.rs:557:17:557:17 | 2 | | -| main.rs:557:9:557:13 | mut y | main.rs:560:5:562:6 | let ... = ... | match | -| main.rs:557:13:557:13 | y | main.rs:557:9:557:13 | mut y | | -| main.rs:557:17:557:17 | 2 | main.rs:557:13:557:13 | y | | -| main.rs:560:5:562:6 | let ... = ... | main.rs:560:24:562:5 | \|...\| ... | | -| main.rs:560:9:560:20 | mut closure2 | main.rs:563:5:563:15 | ExprStmt | match | -| main.rs:560:13:560:20 | closure2 | main.rs:560:9:560:20 | mut closure2 | | -| main.rs:560:24:562:5 | \|...\| ... | main.rs:560:13:560:20 | closure2 | | -| main.rs:560:24:562:5 | enter \|...\| ... | main.rs:561:9:561:14 | ExprStmt | | -| main.rs:560:24:562:5 | exit \|...\| ... (normal) | main.rs:560:24:562:5 | exit \|...\| ... | | -| main.rs:560:27:562:5 | { ... } | main.rs:560:24:562:5 | exit \|...\| ... (normal) | | -| main.rs:561:9:561:9 | y | main.rs:561:13:561:13 | 3 | | -| main.rs:561:9:561:13 | ... = ... | main.rs:560:27:562:5 | { ... } | | -| main.rs:561:9:561:14 | ExprStmt | main.rs:561:9:561:9 | y | | -| main.rs:561:13:561:13 | 3 | main.rs:561:9:561:13 | ... = ... | | -| main.rs:563:5:563:12 | closure2 | main.rs:563:5:563:14 | closure2(...) | | -| main.rs:563:5:563:14 | closure2(...) | main.rs:564:5:564:17 | ExprStmt | | -| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure2 | | -| main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | y | | +| main.rs:423:15:423:16 | b4 | main.rs:423:5:423:17 | print_i64(...) | | +| main.rs:426:1:441:1 | enter fn closure_variable | main.rs:427:5:429:10 | let ... = ... | | +| main.rs:426:1:441:1 | exit fn closure_variable (normal) | main.rs:426:1:441:1 | exit fn closure_variable | | +| main.rs:426:23:441:1 | { ... } | main.rs:426:1:441:1 | exit fn closure_variable (normal) | | +| main.rs:427:5:429:10 | let ... = ... | main.rs:428:9:429:9 | \|...\| x | | +| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | | +| main.rs:427:9:427:23 | example_closure | main.rs:430:5:431:27 | let ... = ... | match | +| main.rs:428:9:429:9 | \|...\| x | main.rs:427:9:427:23 | example_closure | | +| main.rs:428:9:429:9 | enter \|...\| x | main.rs:428:10:428:10 | x | | +| main.rs:428:9:429:9 | exit \|...\| x (normal) | main.rs:428:9:429:9 | exit \|...\| x | | +| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | | +| main.rs:428:10:428:10 | x | main.rs:428:10:428:15 | ...: i64 | match | +| main.rs:428:10:428:15 | ...: i64 | main.rs:429:9:429:9 | x | | +| main.rs:429:9:429:9 | x | main.rs:428:9:429:9 | exit \|...\| x (normal) | | +| main.rs:430:5:431:27 | let ... = ... | main.rs:431:9:431:23 | example_closure | | +| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | | +| main.rs:430:9:430:10 | n1 | main.rs:432:5:432:18 | ExprStmt | match | +| main.rs:431:9:431:23 | example_closure | main.rs:431:25:431:25 | 5 | | +| main.rs:431:9:431:26 | example_closure(...) | main.rs:430:9:430:10 | n1 | | +| main.rs:431:25:431:25 | 5 | main.rs:431:9:431:26 | example_closure(...) | | +| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:16 | n1 | | +| main.rs:432:5:432:17 | print_i64(...) | main.rs:434:5:434:25 | ExprStmt | | +| main.rs:432:5:432:18 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | +| main.rs:432:15:432:16 | n1 | main.rs:432:5:432:17 | print_i64(...) | | +| main.rs:434:5:434:22 | immutable_variable | main.rs:434:5:434:24 | immutable_variable(...) | | +| main.rs:434:5:434:24 | immutable_variable(...) | main.rs:435:5:437:10 | let ... = ... | | +| main.rs:434:5:434:25 | ExprStmt | main.rs:434:5:434:22 | immutable_variable | | +| main.rs:435:5:437:10 | let ... = ... | main.rs:436:5:437:9 | \|...\| x | | +| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | | +| main.rs:435:9:435:26 | immutable_variable | main.rs:438:5:439:30 | let ... = ... | match | +| main.rs:436:5:437:9 | \|...\| x | main.rs:435:9:435:26 | immutable_variable | | +| main.rs:436:5:437:9 | enter \|...\| x | main.rs:436:6:436:6 | x | | +| main.rs:436:5:437:9 | exit \|...\| x (normal) | main.rs:436:5:437:9 | exit \|...\| x | | +| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | | +| main.rs:436:6:436:6 | x | main.rs:436:6:436:11 | ...: i64 | match | +| main.rs:436:6:436:11 | ...: i64 | main.rs:437:9:437:9 | x | | +| main.rs:437:9:437:9 | x | main.rs:436:5:437:9 | exit \|...\| x (normal) | | +| main.rs:438:5:439:30 | let ... = ... | main.rs:439:9:439:26 | immutable_variable | | +| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | | +| main.rs:438:9:438:10 | n2 | main.rs:440:5:440:18 | ExprStmt | match | +| main.rs:439:9:439:26 | immutable_variable | main.rs:439:28:439:28 | 6 | | +| main.rs:439:9:439:29 | immutable_variable(...) | main.rs:438:9:438:10 | n2 | | +| main.rs:439:28:439:28 | 6 | main.rs:439:9:439:29 | immutable_variable(...) | | +| main.rs:440:5:440:13 | print_i64 | main.rs:440:15:440:16 | n2 | | +| main.rs:440:5:440:17 | print_i64(...) | main.rs:426:23:441:1 | { ... } | | +| main.rs:440:5:440:18 | ExprStmt | main.rs:440:5:440:13 | print_i64 | | +| main.rs:440:15:440:16 | n2 | main.rs:440:5:440:17 | print_i64(...) | | +| main.rs:443:1:473:1 | enter fn nested_function | main.rs:445:5:447:10 | let ... = ... | | +| main.rs:443:1:473:1 | exit fn nested_function (normal) | main.rs:443:1:473:1 | exit fn nested_function | | +| main.rs:443:22:473:1 | { ... } | main.rs:443:1:473:1 | exit fn nested_function (normal) | | +| main.rs:445:5:447:10 | let ... = ... | main.rs:446:9:447:9 | \|...\| x | | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | | +| main.rs:445:9:445:9 | f | main.rs:448:5:448:20 | ExprStmt | match | +| main.rs:446:9:447:9 | \|...\| x | main.rs:445:9:445:9 | f | | +| main.rs:446:9:447:9 | enter \|...\| x | main.rs:446:10:446:10 | x | | +| main.rs:446:9:447:9 | exit \|...\| x (normal) | main.rs:446:9:447:9 | exit \|...\| x | | +| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | | +| main.rs:446:10:446:10 | x | main.rs:446:10:446:15 | ...: i64 | match | +| main.rs:446:10:446:15 | ...: i64 | main.rs:447:9:447:9 | x | | +| main.rs:447:9:447:9 | x | main.rs:446:9:447:9 | exit \|...\| x (normal) | | +| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | f | | +| main.rs:448:5:448:19 | print_i64(...) | main.rs:450:5:453:5 | fn f | | +| main.rs:448:5:448:20 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | +| main.rs:448:15:448:15 | f | main.rs:448:17:448:17 | 1 | | +| main.rs:448:15:448:18 | f(...) | main.rs:448:5:448:19 | print_i64(...) | | +| main.rs:448:17:448:17 | 1 | main.rs:448:15:448:18 | f(...) | | +| main.rs:450:5:453:5 | enter fn f | main.rs:450:10:450:10 | x | | +| main.rs:450:5:453:5 | exit fn f (normal) | main.rs:450:5:453:5 | exit fn f | | +| main.rs:450:5:453:5 | fn f | main.rs:455:5:455:20 | ExprStmt | | +| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | | +| main.rs:450:10:450:10 | x | main.rs:450:10:450:15 | ...: i64 | match | +| main.rs:450:10:450:15 | ...: i64 | main.rs:452:9:452:9 | x | | +| main.rs:451:5:453:5 | { ... } | main.rs:450:5:453:5 | exit fn f (normal) | | +| main.rs:452:9:452:9 | x | main.rs:452:13:452:13 | 1 | | +| main.rs:452:9:452:13 | ... + ... | main.rs:451:5:453:5 | { ... } | | +| main.rs:452:13:452:13 | 1 | main.rs:452:9:452:13 | ... + ... | | +| main.rs:455:5:455:13 | print_i64 | main.rs:455:15:455:15 | f | | +| main.rs:455:5:455:19 | print_i64(...) | main.rs:458:9:458:24 | ExprStmt | | +| main.rs:455:5:455:20 | ExprStmt | main.rs:455:5:455:13 | print_i64 | | +| main.rs:455:15:455:15 | f | main.rs:455:17:455:17 | 2 | | +| main.rs:455:15:455:18 | f(...) | main.rs:455:5:455:19 | print_i64(...) | | +| main.rs:455:17:455:17 | 2 | main.rs:455:15:455:18 | f(...) | | +| main.rs:457:5:472:5 | { ... } | main.rs:443:22:473:1 | { ... } | | +| main.rs:458:9:458:17 | print_i64 | main.rs:458:19:458:19 | f | | +| main.rs:458:9:458:23 | print_i64(...) | main.rs:459:9:462:9 | fn f | | +| main.rs:458:9:458:24 | ExprStmt | main.rs:458:9:458:17 | print_i64 | | +| main.rs:458:19:458:19 | f | main.rs:458:21:458:21 | 3 | | +| main.rs:458:19:458:22 | f(...) | main.rs:458:9:458:23 | print_i64(...) | | +| main.rs:458:21:458:21 | 3 | main.rs:458:19:458:22 | f(...) | | +| main.rs:459:9:462:9 | enter fn f | main.rs:459:14:459:14 | x | | +| main.rs:459:9:462:9 | exit fn f (normal) | main.rs:459:9:462:9 | exit fn f | | +| main.rs:459:9:462:9 | fn f | main.rs:464:9:466:9 | ExprStmt | | +| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | | +| main.rs:459:14:459:14 | x | main.rs:459:14:459:19 | ...: i64 | match | +| main.rs:459:14:459:19 | ...: i64 | main.rs:461:13:461:13 | 2 | | +| main.rs:460:9:462:9 | { ... } | main.rs:459:9:462:9 | exit fn f (normal) | | +| main.rs:461:13:461:13 | 2 | main.rs:461:17:461:17 | x | | +| main.rs:461:13:461:17 | ... * ... | main.rs:460:9:462:9 | { ... } | | +| main.rs:461:17:461:17 | x | main.rs:461:13:461:17 | ... * ... | | +| main.rs:464:9:466:9 | ExprStmt | main.rs:465:13:465:28 | ExprStmt | | +| main.rs:464:9:466:9 | { ... } | main.rs:468:9:470:14 | let ... = ... | | +| main.rs:465:13:465:21 | print_i64 | main.rs:465:23:465:23 | f | | +| main.rs:465:13:465:27 | print_i64(...) | main.rs:464:9:466:9 | { ... } | | +| main.rs:465:13:465:28 | ExprStmt | main.rs:465:13:465:21 | print_i64 | | +| main.rs:465:23:465:23 | f | main.rs:465:25:465:25 | 4 | | +| main.rs:465:23:465:26 | f(...) | main.rs:465:13:465:27 | print_i64(...) | | +| main.rs:465:25:465:25 | 4 | main.rs:465:23:465:26 | f(...) | | +| main.rs:468:9:470:14 | let ... = ... | main.rs:469:13:470:13 | \|...\| x | | +| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | | +| main.rs:468:13:468:13 | f | main.rs:471:9:471:24 | ExprStmt | match | +| main.rs:469:13:470:13 | \|...\| x | main.rs:468:13:468:13 | f | | +| main.rs:469:13:470:13 | enter \|...\| x | main.rs:469:14:469:14 | x | | +| main.rs:469:13:470:13 | exit \|...\| x (normal) | main.rs:469:13:470:13 | exit \|...\| x | | +| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | | +| main.rs:469:14:469:14 | x | main.rs:469:14:469:19 | ...: i64 | match | +| main.rs:469:14:469:19 | ...: i64 | main.rs:470:13:470:13 | x | | +| main.rs:470:13:470:13 | x | main.rs:469:13:470:13 | exit \|...\| x (normal) | | +| main.rs:471:9:471:17 | print_i64 | main.rs:471:19:471:19 | f | | +| main.rs:471:9:471:23 | print_i64(...) | main.rs:457:5:472:5 | { ... } | | +| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_i64 | | +| main.rs:471:19:471:19 | f | main.rs:471:21:471:21 | 5 | | +| main.rs:471:19:471:22 | f(...) | main.rs:471:9:471:23 | print_i64(...) | | +| main.rs:471:21:471:21 | 5 | main.rs:471:19:471:22 | f(...) | | +| main.rs:475:1:482:1 | enter fn for_variable | main.rs:476:5:476:42 | let ... = ... | | +| main.rs:475:1:482:1 | exit fn for_variable (normal) | main.rs:475:1:482:1 | exit fn for_variable | | +| main.rs:475:19:482:1 | { ... } | main.rs:475:1:482:1 | exit fn for_variable (normal) | | +| main.rs:476:5:476:42 | let ... = ... | main.rs:476:15:476:22 | "apples" | | +| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | | +| main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | match | +| main.rs:476:13:476:41 | &... | main.rs:476:9:476:9 | v | | +| main.rs:476:14:476:41 | [...] | main.rs:476:13:476:41 | &... | | +| main.rs:476:15:476:22 | "apples" | main.rs:476:25:476:30 | "cake" | | +| main.rs:476:25:476:30 | "cake" | main.rs:476:33:476:40 | "coffee" | | +| main.rs:476:33:476:40 | "coffee" | main.rs:476:14:476:41 | [...] | | +| main.rs:478:5:481:5 | for ... in ... { ... } | main.rs:475:19:482:1 | { ... } | | +| main.rs:478:9:478:12 | text | main.rs:478:5:481:5 | for ... in ... { ... } | no-match | +| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | | +| main.rs:478:9:478:12 | text | main.rs:480:9:480:24 | ExprStmt | match | +| main.rs:479:12:479:12 | v | main.rs:478:9:478:12 | text | | +| main.rs:479:14:481:5 | { ... } | main.rs:478:9:478:12 | text | | +| main.rs:480:9:480:17 | print_str | main.rs:480:19:480:22 | text | | +| main.rs:480:9:480:23 | print_str(...) | main.rs:479:14:481:5 | { ... } | | +| main.rs:480:9:480:24 | ExprStmt | main.rs:480:9:480:17 | print_str | | +| main.rs:480:19:480:22 | text | main.rs:480:9:480:23 | print_str(...) | | +| main.rs:484:1:490:1 | enter fn add_assign | main.rs:485:5:485:18 | let ... = 0 | | +| main.rs:484:1:490:1 | exit fn add_assign (normal) | main.rs:484:1:490:1 | exit fn add_assign | | +| main.rs:484:17:490:1 | { ... } | main.rs:484:1:490:1 | exit fn add_assign (normal) | | +| main.rs:485:5:485:18 | let ... = 0 | main.rs:485:17:485:17 | 0 | | +| main.rs:485:9:485:13 | mut a | main.rs:486:5:486:11 | ExprStmt | match | +| main.rs:485:13:485:13 | a | main.rs:485:9:485:13 | mut a | | +| main.rs:485:17:485:17 | 0 | main.rs:485:13:485:13 | a | | +| main.rs:486:5:486:5 | a | main.rs:486:10:486:10 | 1 | | +| main.rs:486:5:486:10 | ... += ... | main.rs:487:5:487:17 | ExprStmt | | +| main.rs:486:5:486:11 | ExprStmt | main.rs:486:5:486:5 | a | | +| main.rs:486:10:486:10 | 1 | main.rs:486:5:486:10 | ... += ... | | +| main.rs:487:5:487:13 | print_i64 | main.rs:487:15:487:15 | a | | +| main.rs:487:5:487:16 | print_i64(...) | main.rs:488:5:488:28 | ExprStmt | | +| main.rs:487:5:487:17 | ExprStmt | main.rs:487:5:487:13 | print_i64 | | +| main.rs:487:15:487:15 | a | main.rs:487:5:487:16 | print_i64(...) | | +| main.rs:488:5:488:27 | ... .add_assign(...) | main.rs:489:5:489:17 | ExprStmt | | +| main.rs:488:5:488:28 | ExprStmt | main.rs:488:11:488:11 | a | | +| main.rs:488:6:488:11 | &mut a | main.rs:488:25:488:26 | 10 | | +| main.rs:488:11:488:11 | a | main.rs:488:6:488:11 | &mut a | | +| main.rs:488:25:488:26 | 10 | main.rs:488:5:488:27 | ... .add_assign(...) | | +| main.rs:489:5:489:13 | print_i64 | main.rs:489:15:489:15 | a | | +| main.rs:489:5:489:16 | print_i64(...) | main.rs:484:17:490:1 | { ... } | | +| main.rs:489:5:489:17 | ExprStmt | main.rs:489:5:489:13 | print_i64 | | +| main.rs:489:15:489:15 | a | main.rs:489:5:489:16 | print_i64(...) | | +| main.rs:492:1:498:1 | enter fn mutate | main.rs:493:5:493:18 | let ... = 1 | | +| main.rs:492:1:498:1 | exit fn mutate (normal) | main.rs:492:1:498:1 | exit fn mutate | | +| main.rs:492:13:498:1 | { ... } | main.rs:492:1:498:1 | exit fn mutate (normal) | | +| main.rs:493:5:493:18 | let ... = 1 | main.rs:493:17:493:17 | 1 | | +| main.rs:493:9:493:13 | mut i | main.rs:494:5:495:15 | let ... = ... | match | +| main.rs:493:13:493:13 | i | main.rs:493:9:493:13 | mut i | | +| main.rs:493:17:493:17 | 1 | main.rs:493:13:493:13 | i | | +| main.rs:494:5:495:15 | let ... = ... | main.rs:495:14:495:14 | i | | +| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | | +| main.rs:494:9:494:13 | ref_i | main.rs:496:5:496:15 | ExprStmt | match | +| main.rs:495:9:495:14 | &mut i | main.rs:494:9:494:13 | ref_i | | +| main.rs:495:14:495:14 | i | main.rs:495:9:495:14 | &mut i | | +| main.rs:496:5:496:10 | * ... | main.rs:496:14:496:14 | 2 | | +| main.rs:496:5:496:14 | ... = ... | main.rs:497:5:497:17 | ExprStmt | | +| main.rs:496:5:496:15 | ExprStmt | main.rs:496:6:496:10 | ref_i | | +| main.rs:496:6:496:10 | ref_i | main.rs:496:5:496:10 | * ... | | +| main.rs:496:14:496:14 | 2 | main.rs:496:5:496:14 | ... = ... | | +| main.rs:497:5:497:13 | print_i64 | main.rs:497:15:497:15 | i | | +| main.rs:497:5:497:16 | print_i64(...) | main.rs:492:13:498:1 | { ... } | | +| main.rs:497:5:497:17 | ExprStmt | main.rs:497:5:497:13 | print_i64 | | +| main.rs:497:15:497:15 | i | main.rs:497:5:497:16 | print_i64(...) | | +| main.rs:500:1:505:1 | enter fn mutate_param | main.rs:500:17:500:17 | x | | +| main.rs:500:1:505:1 | exit fn mutate_param (normal) | main.rs:500:1:505:1 | exit fn mutate_param | | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:27 | ...: ... | match | +| main.rs:500:17:500:27 | ...: ... | main.rs:501:5:503:11 | ExprStmt | | +| main.rs:501:5:501:6 | * ... | main.rs:502:10:502:10 | x | | +| main.rs:501:5:503:10 | ... = ... | main.rs:504:5:504:13 | ExprStmt | | +| main.rs:501:5:503:11 | ExprStmt | main.rs:501:6:501:6 | x | | +| main.rs:501:6:501:6 | x | main.rs:501:5:501:6 | * ... | | +| main.rs:502:9:502:10 | * ... | main.rs:503:10:503:10 | x | | +| main.rs:502:9:503:10 | ... + ... | main.rs:501:5:503:10 | ... = ... | | +| main.rs:502:10:502:10 | x | main.rs:502:9:502:10 | * ... | | +| main.rs:503:9:503:10 | * ... | main.rs:502:9:503:10 | ... + ... | | +| main.rs:503:10:503:10 | x | main.rs:503:9:503:10 | * ... | | +| main.rs:504:5:504:12 | return x | main.rs:500:1:505:1 | exit fn mutate_param (normal) | return | +| main.rs:504:5:504:13 | ExprStmt | main.rs:504:12:504:12 | x | | +| main.rs:504:12:504:12 | x | main.rs:504:5:504:12 | return x | | +| main.rs:507:1:513:1 | enter fn mutate_param2 | main.rs:507:22:507:22 | x | | +| main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | main.rs:507:1:513:1 | exit fn mutate_param2 | | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:35 | ...: ... | match | +| main.rs:507:22:507:35 | ...: ... | main.rs:507:38:507:38 | y | | +| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | | +| main.rs:507:38:507:38 | y | main.rs:507:38:507:56 | ...: ... | match | +| main.rs:507:38:507:56 | ...: ... | main.rs:508:5:510:11 | ExprStmt | | +| main.rs:507:59:513:1 | { ... } | main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | | +| main.rs:508:5:508:6 | * ... | main.rs:509:10:509:10 | x | | +| main.rs:508:5:510:10 | ... = ... | main.rs:511:5:512:10 | ExprStmt | | +| main.rs:508:5:510:11 | ExprStmt | main.rs:508:6:508:6 | x | | +| main.rs:508:6:508:6 | x | main.rs:508:5:508:6 | * ... | | +| main.rs:509:9:509:10 | * ... | main.rs:510:10:510:10 | x | | +| main.rs:509:9:510:10 | ... + ... | main.rs:508:5:510:10 | ... = ... | | +| main.rs:509:10:509:10 | x | main.rs:509:9:509:10 | * ... | | +| main.rs:510:9:510:10 | * ... | main.rs:509:9:510:10 | ... + ... | | +| main.rs:510:10:510:10 | x | main.rs:510:9:510:10 | * ... | | +| main.rs:511:5:511:6 | * ... | main.rs:512:9:512:9 | x | | +| main.rs:511:5:512:9 | ... = ... | main.rs:507:59:513:1 | { ... } | | +| main.rs:511:5:512:10 | ExprStmt | main.rs:511:6:511:6 | y | | +| main.rs:511:6:511:6 | y | main.rs:511:5:511:6 | * ... | | +| main.rs:512:9:512:9 | x | main.rs:511:5:512:9 | ... = ... | | +| main.rs:515:1:535:1 | enter fn mutate_arg | main.rs:516:5:516:18 | let ... = 2 | | +| main.rs:515:1:535:1 | exit fn mutate_arg (normal) | main.rs:515:1:535:1 | exit fn mutate_arg | | +| main.rs:515:17:535:1 | { ... } | main.rs:515:1:535:1 | exit fn mutate_arg (normal) | | +| main.rs:516:5:516:18 | let ... = 2 | main.rs:516:17:516:17 | 2 | | +| main.rs:516:9:516:13 | mut x | main.rs:517:5:518:29 | let ... = ... | match | +| main.rs:516:13:516:13 | x | main.rs:516:9:516:13 | mut x | | +| main.rs:516:17:516:17 | 2 | main.rs:516:13:516:13 | x | | +| main.rs:517:5:518:29 | let ... = ... | main.rs:518:9:518:20 | mutate_param | | +| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | | +| main.rs:517:9:517:9 | y | main.rs:519:5:519:12 | ExprStmt | match | +| main.rs:518:9:518:20 | mutate_param | main.rs:518:27:518:27 | x | | +| main.rs:518:9:518:28 | mutate_param(...) | main.rs:517:9:517:9 | y | | +| main.rs:518:22:518:27 | &mut x | main.rs:518:9:518:28 | mutate_param(...) | | +| main.rs:518:27:518:27 | x | main.rs:518:22:518:27 | &mut x | | +| main.rs:519:5:519:6 | * ... | main.rs:519:10:519:11 | 10 | | +| main.rs:519:5:519:11 | ... = ... | main.rs:522:5:522:17 | ExprStmt | | +| main.rs:519:5:519:12 | ExprStmt | main.rs:519:6:519:6 | y | | +| main.rs:519:6:519:6 | y | main.rs:519:5:519:6 | * ... | | +| main.rs:519:10:519:11 | 10 | main.rs:519:5:519:11 | ... = ... | | +| main.rs:522:5:522:13 | print_i64 | main.rs:522:15:522:15 | x | | +| main.rs:522:5:522:16 | print_i64(...) | main.rs:524:5:524:18 | let ... = 4 | | +| main.rs:522:5:522:17 | ExprStmt | main.rs:522:5:522:13 | print_i64 | | +| main.rs:522:15:522:15 | x | main.rs:522:5:522:16 | print_i64(...) | | +| main.rs:524:5:524:18 | let ... = 4 | main.rs:524:17:524:17 | 4 | | +| main.rs:524:9:524:13 | mut z | main.rs:525:5:526:20 | let ... = ... | match | +| main.rs:524:13:524:13 | z | main.rs:524:9:524:13 | mut z | | +| main.rs:524:17:524:17 | 4 | main.rs:524:13:524:13 | z | | +| main.rs:525:5:526:20 | let ... = ... | main.rs:526:19:526:19 | x | | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | | +| main.rs:525:9:525:9 | w | main.rs:527:5:530:6 | ExprStmt | match | +| main.rs:526:9:526:19 | &mut ... | main.rs:525:9:525:9 | w | | +| main.rs:526:14:526:19 | &mut x | main.rs:526:9:526:19 | &mut ... | | +| main.rs:526:19:526:19 | x | main.rs:526:14:526:19 | &mut x | | +| main.rs:527:5:527:17 | mutate_param2 | main.rs:528:14:528:14 | z | | +| main.rs:527:5:530:5 | mutate_param2(...) | main.rs:531:5:531:13 | ExprStmt | | +| main.rs:527:5:530:6 | ExprStmt | main.rs:527:5:527:17 | mutate_param2 | | +| main.rs:528:9:528:14 | &mut z | main.rs:529:9:529:9 | w | | +| main.rs:528:14:528:14 | z | main.rs:528:9:528:14 | &mut z | | +| main.rs:529:9:529:9 | w | main.rs:527:5:530:5 | mutate_param2(...) | | +| main.rs:531:5:531:7 | * ... | main.rs:531:11:531:12 | 11 | | +| main.rs:531:5:531:12 | ... = ... | main.rs:534:5:534:17 | ExprStmt | | +| main.rs:531:5:531:13 | ExprStmt | main.rs:531:7:531:7 | w | | +| main.rs:531:6:531:7 | * ... | main.rs:531:5:531:7 | * ... | | +| main.rs:531:7:531:7 | w | main.rs:531:6:531:7 | * ... | | +| main.rs:531:11:531:12 | 11 | main.rs:531:5:531:12 | ... = ... | | +| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | z | | +| main.rs:534:5:534:16 | print_i64(...) | main.rs:515:17:535:1 | { ... } | | +| main.rs:534:5:534:17 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | +| main.rs:534:15:534:15 | z | main.rs:534:5:534:16 | print_i64(...) | | +| main.rs:537:1:543:1 | enter fn alias | main.rs:538:5:538:18 | let ... = 1 | | +| main.rs:537:1:543:1 | exit fn alias (normal) | main.rs:537:1:543:1 | exit fn alias | | +| main.rs:537:12:543:1 | { ... } | main.rs:537:1:543:1 | exit fn alias (normal) | | +| main.rs:538:5:538:18 | let ... = 1 | main.rs:538:17:538:17 | 1 | | +| main.rs:538:9:538:13 | mut x | main.rs:539:5:540:15 | let ... = ... | match | +| main.rs:538:13:538:13 | x | main.rs:538:9:538:13 | mut x | | +| main.rs:538:17:538:17 | 1 | main.rs:538:13:538:13 | x | | +| main.rs:539:5:540:15 | let ... = ... | main.rs:540:14:540:14 | x | | +| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | | +| main.rs:539:9:539:9 | y | main.rs:541:5:541:11 | ExprStmt | match | +| main.rs:540:9:540:14 | &mut x | main.rs:539:9:539:9 | y | | +| main.rs:540:14:540:14 | x | main.rs:540:9:540:14 | &mut x | | +| main.rs:541:5:541:6 | * ... | main.rs:541:10:541:10 | 2 | | +| main.rs:541:5:541:10 | ... = ... | main.rs:542:5:542:17 | ExprStmt | | +| main.rs:541:5:541:11 | ExprStmt | main.rs:541:6:541:6 | y | | +| main.rs:541:6:541:6 | y | main.rs:541:5:541:6 | * ... | | +| main.rs:541:10:541:10 | 2 | main.rs:541:5:541:10 | ... = ... | | +| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | +| main.rs:542:5:542:16 | print_i64(...) | main.rs:537:12:543:1 | { ... } | | +| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | +| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | +| main.rs:545:1:554:1 | enter fn capture_immut | main.rs:546:5:546:16 | let ... = 100 | | +| main.rs:545:1:554:1 | exit fn capture_immut (normal) | main.rs:545:1:554:1 | exit fn capture_immut | | +| main.rs:545:20:554:1 | { ... } | main.rs:545:1:554:1 | exit fn capture_immut (normal) | | +| main.rs:546:5:546:16 | let ... = 100 | main.rs:546:13:546:15 | 100 | | +| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | | +| main.rs:546:9:546:9 | x | main.rs:549:5:551:6 | let ... = ... | match | +| main.rs:546:13:546:15 | 100 | main.rs:546:9:546:9 | x | | +| main.rs:549:5:551:6 | let ... = ... | main.rs:549:15:551:5 | \|...\| ... | | +| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | | +| main.rs:549:9:549:11 | cap | main.rs:552:5:552:10 | ExprStmt | match | +| main.rs:549:15:551:5 | \|...\| ... | main.rs:549:9:549:11 | cap | | +| main.rs:549:15:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | +| main.rs:549:15:551:5 | exit \|...\| ... (normal) | main.rs:549:15:551:5 | exit \|...\| ... | | +| main.rs:549:18:551:5 | { ... } | main.rs:549:15:551:5 | exit \|...\| ... (normal) | | +| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | +| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:18:551:5 | { ... } | | +| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | +| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | +| main.rs:552:5:552:7 | cap | main.rs:552:5:552:9 | cap(...) | | +| main.rs:552:5:552:9 | cap(...) | main.rs:553:5:553:17 | ExprStmt | | +| main.rs:552:5:552:10 | ExprStmt | main.rs:552:5:552:7 | cap | | +| main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | +| main.rs:553:5:553:16 | print_i64(...) | main.rs:545:20:554:1 | { ... } | | +| main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | +| main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | +| main.rs:556:1:583:1 | enter fn capture_mut | main.rs:557:5:557:18 | let ... = 1 | | +| main.rs:556:1:583:1 | exit fn capture_mut (normal) | main.rs:556:1:583:1 | exit fn capture_mut | | +| main.rs:556:18:583:1 | { ... } | main.rs:556:1:583:1 | exit fn capture_mut (normal) | | +| main.rs:557:5:557:18 | let ... = 1 | main.rs:557:17:557:17 | 1 | | +| main.rs:557:9:557:13 | mut x | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:13 | x | main.rs:557:9:557:13 | mut x | | +| main.rs:557:17:557:17 | 1 | main.rs:557:13:557:13 | x | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:20:562:5 | \|...\| ... | | +| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | | +| main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:15 | ExprStmt | match | +| main.rs:560:20:562:5 | \|...\| ... | main.rs:560:9:560:16 | closure1 | | +| main.rs:560:20:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | +| main.rs:560:20:562:5 | exit \|...\| ... (normal) | main.rs:560:20:562:5 | exit \|...\| ... | | +| main.rs:560:23:562:5 | { ... } | main.rs:560:20:562:5 | exit \|...\| ... (normal) | | +| main.rs:561:9:561:17 | print_i64 | main.rs:561:19:561:19 | x | | +| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:23:562:5 | { ... } | | +| main.rs:561:9:561:21 | ExprStmt | main.rs:561:9:561:17 | print_i64 | | +| main.rs:561:19:561:19 | x | main.rs:561:9:561:20 | print_i64(...) | | +| main.rs:563:5:563:12 | closure1 | main.rs:563:5:563:14 | closure1(...) | | +| main.rs:563:5:563:14 | closure1(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure1 | | +| main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | x | | | main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | | main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | -| main.rs:564:15:564:15 | y | main.rs:564:5:564:16 | print_i64(...) | | +| main.rs:564:15:564:15 | x | main.rs:564:5:564:16 | print_i64(...) | | | main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | -| main.rs:566:9:566:13 | mut z | main.rs:569:5:571:6 | let ... = ... | match | -| main.rs:566:13:566:13 | z | main.rs:566:9:566:13 | mut z | | -| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | z | | +| main.rs:566:9:566:13 | mut y | main.rs:569:5:571:6 | let ... = ... | match | +| main.rs:566:13:566:13 | y | main.rs:566:9:566:13 | mut y | | +| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | y | | | main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | -| main.rs:569:9:569:20 | mut closure3 | main.rs:572:5:572:15 | ExprStmt | match | -| main.rs:569:13:569:20 | closure3 | main.rs:569:9:569:20 | mut closure3 | | -| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure3 | | -| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:24 | ExprStmt | | +| main.rs:569:9:569:20 | mut closure2 | main.rs:572:5:572:15 | ExprStmt | match | +| main.rs:569:13:569:20 | closure2 | main.rs:569:9:569:20 | mut closure2 | | +| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure2 | | +| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:14 | ExprStmt | | | main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | | main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | -| main.rs:570:9:570:9 | z | main.rs:570:22:570:22 | 1 | | -| main.rs:570:9:570:23 | z.add_assign(...) | main.rs:569:27:571:5 | { ... } | | -| main.rs:570:9:570:24 | ExprStmt | main.rs:570:9:570:9 | z | | -| main.rs:570:22:570:22 | 1 | main.rs:570:9:570:23 | z.add_assign(...) | | -| main.rs:572:5:572:12 | closure3 | main.rs:572:5:572:14 | closure3(...) | | -| main.rs:572:5:572:14 | closure3(...) | main.rs:573:5:573:17 | ExprStmt | | -| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure3 | | -| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | z | | -| main.rs:573:5:573:16 | print_i64(...) | main.rs:547:18:574:1 | { ... } | | +| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | | +| main.rs:570:9:570:13 | ... = ... | main.rs:569:27:571:5 | { ... } | | +| main.rs:570:9:570:14 | ExprStmt | main.rs:570:9:570:9 | y | | +| main.rs:570:13:570:13 | 3 | main.rs:570:9:570:13 | ... = ... | | +| main.rs:572:5:572:12 | closure2 | main.rs:572:5:572:14 | closure2(...) | | +| main.rs:572:5:572:14 | closure2(...) | main.rs:573:5:573:17 | ExprStmt | | +| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure2 | | +| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | y | | +| main.rs:573:5:573:16 | print_i64(...) | main.rs:575:5:575:18 | let ... = 2 | | | main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | -| main.rs:573:15:573:15 | z | main.rs:573:5:573:16 | print_i64(...) | | -| main.rs:576:1:584:1 | enter fn async_block_capture | main.rs:577:5:577:23 | let ... = 0 | | -| main.rs:576:1:584:1 | exit fn async_block_capture (normal) | main.rs:576:1:584:1 | exit fn async_block_capture | | -| main.rs:576:32:584:1 | { ... } | main.rs:576:1:584:1 | exit fn async_block_capture (normal) | | -| main.rs:577:5:577:23 | let ... = 0 | main.rs:577:22:577:22 | 0 | | -| main.rs:577:9:577:13 | mut i | main.rs:578:5:580:6 | let ... = ... | match | -| main.rs:577:13:577:13 | i | main.rs:577:9:577:13 | mut i | | -| main.rs:577:22:577:22 | 0 | main.rs:577:13:577:13 | i | | -| main.rs:578:5:580:6 | let ... = ... | main.rs:578:17:580:5 | { ... } | | -| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | | -| main.rs:578:9:578:13 | block | main.rs:582:5:582:16 | ExprStmt | match | -| main.rs:578:17:580:5 | enter { ... } | main.rs:579:9:579:14 | ExprStmt | | -| main.rs:578:17:580:5 | exit { ... } (normal) | main.rs:578:17:580:5 | exit { ... } | | -| main.rs:578:17:580:5 | { ... } | main.rs:578:9:578:13 | block | | -| main.rs:579:9:579:9 | i | main.rs:579:13:579:13 | 1 | | -| main.rs:579:9:579:13 | ... = ... | main.rs:578:17:580:5 | exit { ... } (normal) | | -| main.rs:579:9:579:14 | ExprStmt | main.rs:579:9:579:9 | i | | -| main.rs:579:13:579:13 | 1 | main.rs:579:9:579:13 | ... = ... | | -| main.rs:582:5:582:9 | block | main.rs:582:5:582:15 | await block | | -| main.rs:582:5:582:15 | await block | main.rs:583:5:583:17 | ExprStmt | | -| main.rs:582:5:582:16 | ExprStmt | main.rs:582:5:582:9 | block | | -| main.rs:583:5:583:13 | print_i64 | main.rs:583:15:583:15 | i | | -| main.rs:583:5:583:16 | print_i64(...) | main.rs:576:32:584:1 | { ... } | | -| main.rs:583:5:583:17 | ExprStmt | main.rs:583:5:583:13 | print_i64 | | -| main.rs:583:15:583:15 | i | main.rs:583:5:583:16 | print_i64(...) | | -| main.rs:586:1:602:1 | enter fn phi | main.rs:586:8:586:8 | b | | -| main.rs:586:1:602:1 | exit fn phi (normal) | main.rs:586:1:602:1 | exit fn phi | | -| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | | -| main.rs:586:8:586:8 | b | main.rs:586:8:586:14 | ...: bool | match | -| main.rs:586:8:586:14 | ...: bool | main.rs:587:5:587:18 | let ... = 1 | | -| main.rs:586:17:602:1 | { ... } | main.rs:586:1:602:1 | exit fn phi (normal) | | -| main.rs:587:5:587:18 | let ... = 1 | main.rs:587:17:587:17 | 1 | | -| main.rs:587:9:587:13 | mut x | main.rs:588:5:588:17 | ExprStmt | match | -| main.rs:587:13:587:13 | x | main.rs:587:9:587:13 | mut x | | -| main.rs:587:17:587:17 | 1 | main.rs:587:13:587:13 | x | | -| main.rs:588:5:588:13 | print_i64 | main.rs:588:15:588:15 | x | | -| main.rs:588:5:588:16 | print_i64(...) | main.rs:589:5:589:21 | ExprStmt | | -| main.rs:588:5:588:17 | ExprStmt | main.rs:588:5:588:13 | print_i64 | | -| main.rs:588:15:588:15 | x | main.rs:588:5:588:16 | print_i64(...) | | -| main.rs:589:5:589:13 | print_i64 | main.rs:589:15:589:15 | x | | -| main.rs:589:5:589:20 | print_i64(...) | main.rs:590:5:600:6 | let _ = ... | | -| main.rs:589:5:589:21 | ExprStmt | main.rs:589:5:589:13 | print_i64 | | -| main.rs:589:15:589:15 | x | main.rs:589:19:589:19 | 1 | | -| main.rs:589:15:589:19 | ... + ... | main.rs:589:5:589:20 | print_i64(...) | | -| main.rs:589:19:589:19 | 1 | main.rs:589:15:589:19 | ... + ... | | -| main.rs:590:5:600:6 | let _ = ... | main.rs:591:16:591:16 | b | | -| main.rs:591:9:591:9 | _ | main.rs:601:5:601:17 | ExprStmt | match | -| main.rs:591:13:600:5 | if b {...} else {...} | main.rs:591:9:591:9 | _ | | -| main.rs:591:16:591:16 | b | main.rs:593:9:593:14 | ExprStmt | true | -| main.rs:591:16:591:16 | b | main.rs:597:9:597:14 | ExprStmt | false | -| main.rs:592:5:596:5 | { ... } | main.rs:591:13:600:5 | if b {...} else {...} | | -| main.rs:593:9:593:9 | x | main.rs:593:13:593:13 | 2 | | -| main.rs:593:9:593:13 | ... = ... | main.rs:594:9:594:21 | ExprStmt | | -| main.rs:593:9:593:14 | ExprStmt | main.rs:593:9:593:9 | x | | -| main.rs:593:13:593:13 | 2 | main.rs:593:9:593:13 | ... = ... | | -| main.rs:594:9:594:17 | print_i64 | main.rs:594:19:594:19 | x | | -| main.rs:594:9:594:20 | print_i64(...) | main.rs:595:9:595:25 | ExprStmt | | -| main.rs:594:9:594:21 | ExprStmt | main.rs:594:9:594:17 | print_i64 | | -| main.rs:594:19:594:19 | x | main.rs:594:9:594:20 | print_i64(...) | | -| main.rs:595:9:595:17 | print_i64 | main.rs:595:19:595:19 | x | | -| main.rs:595:9:595:24 | print_i64(...) | main.rs:592:5:596:5 | { ... } | | -| main.rs:595:9:595:25 | ExprStmt | main.rs:595:9:595:17 | print_i64 | | -| main.rs:595:19:595:19 | x | main.rs:595:23:595:23 | 1 | | -| main.rs:595:19:595:23 | ... + ... | main.rs:595:9:595:24 | print_i64(...) | | -| main.rs:595:23:595:23 | 1 | main.rs:595:19:595:23 | ... + ... | | -| main.rs:596:12:600:5 | { ... } | main.rs:591:13:600:5 | if b {...} else {...} | | -| main.rs:597:9:597:9 | x | main.rs:597:13:597:13 | 3 | | -| main.rs:597:9:597:13 | ... = ... | main.rs:598:9:598:21 | ExprStmt | | -| main.rs:597:9:597:14 | ExprStmt | main.rs:597:9:597:9 | x | | -| main.rs:597:13:597:13 | 3 | main.rs:597:9:597:13 | ... = ... | | -| main.rs:598:9:598:17 | print_i64 | main.rs:598:19:598:19 | x | | -| main.rs:598:9:598:20 | print_i64(...) | main.rs:599:9:599:25 | ExprStmt | | -| main.rs:598:9:598:21 | ExprStmt | main.rs:598:9:598:17 | print_i64 | | -| main.rs:598:19:598:19 | x | main.rs:598:9:598:20 | print_i64(...) | | -| main.rs:599:9:599:17 | print_i64 | main.rs:599:19:599:19 | x | | -| main.rs:599:9:599:24 | print_i64(...) | main.rs:596:12:600:5 | { ... } | | -| main.rs:599:9:599:25 | ExprStmt | main.rs:599:9:599:17 | print_i64 | | -| main.rs:599:19:599:19 | x | main.rs:599:23:599:23 | 1 | | -| main.rs:599:19:599:23 | ... + ... | main.rs:599:9:599:24 | print_i64(...) | | -| main.rs:599:23:599:23 | 1 | main.rs:599:19:599:23 | ... + ... | | -| main.rs:601:5:601:13 | print_i64 | main.rs:601:15:601:15 | x | | -| main.rs:601:5:601:16 | print_i64(...) | main.rs:586:17:602:1 | { ... } | | -| main.rs:601:5:601:17 | ExprStmt | main.rs:601:5:601:13 | print_i64 | | -| main.rs:601:15:601:15 | x | main.rs:601:5:601:16 | print_i64(...) | | -| main.rs:604:1:621:1 | enter fn phi_read | main.rs:604:13:604:14 | b1 | | -| main.rs:604:1:621:1 | exit fn phi_read (normal) | main.rs:604:1:621:1 | exit fn phi_read | | -| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | | -| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:20 | ...: bool | match | -| main.rs:604:13:604:20 | ...: bool | main.rs:604:23:604:24 | b2 | | -| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | | -| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:30 | ...: bool | match | -| main.rs:604:23:604:30 | ...: bool | main.rs:605:5:605:14 | let ... = 1 | | -| main.rs:604:33:621:1 | { ... } | main.rs:604:1:621:1 | exit fn phi_read (normal) | | -| main.rs:605:5:605:14 | let ... = 1 | main.rs:605:13:605:13 | 1 | | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | | -| main.rs:605:9:605:9 | x | main.rs:606:5:612:6 | let _ = ... | match | -| main.rs:605:13:605:13 | 1 | main.rs:605:9:605:9 | x | | -| main.rs:606:5:612:6 | let _ = ... | main.rs:607:16:607:17 | b1 | | -| main.rs:607:9:607:9 | _ | main.rs:614:5:620:6 | let _ = ... | match | -| main.rs:607:13:612:5 | if b1 {...} else {...} | main.rs:607:9:607:9 | _ | | -| main.rs:607:16:607:17 | b1 | main.rs:609:9:609:21 | ExprStmt | true | -| main.rs:607:16:607:17 | b1 | main.rs:611:9:611:21 | ExprStmt | false | -| main.rs:608:5:610:5 | { ... } | main.rs:607:13:612:5 | if b1 {...} else {...} | | -| main.rs:609:9:609:17 | print_i64 | main.rs:609:19:609:19 | x | | -| main.rs:609:9:609:20 | print_i64(...) | main.rs:608:5:610:5 | { ... } | | -| main.rs:609:9:609:21 | ExprStmt | main.rs:609:9:609:17 | print_i64 | | -| main.rs:609:19:609:19 | x | main.rs:609:9:609:20 | print_i64(...) | | -| main.rs:610:12:612:5 | { ... } | main.rs:607:13:612:5 | if b1 {...} else {...} | | -| main.rs:611:9:611:17 | print_i64 | main.rs:611:19:611:19 | x | | -| main.rs:611:9:611:20 | print_i64(...) | main.rs:610:12:612:5 | { ... } | | -| main.rs:611:9:611:21 | ExprStmt | main.rs:611:9:611:17 | print_i64 | | -| main.rs:611:19:611:19 | x | main.rs:611:9:611:20 | print_i64(...) | | -| main.rs:614:5:620:6 | let _ = ... | main.rs:615:16:615:17 | b2 | | -| main.rs:615:9:615:9 | _ | main.rs:604:33:621:1 | { ... } | match | -| main.rs:615:13:620:5 | if b2 {...} else {...} | main.rs:615:9:615:9 | _ | | -| main.rs:615:16:615:17 | b2 | main.rs:617:9:617:21 | ExprStmt | true | -| main.rs:615:16:615:17 | b2 | main.rs:619:9:619:21 | ExprStmt | false | -| main.rs:616:5:618:5 | { ... } | main.rs:615:13:620:5 | if b2 {...} else {...} | | -| main.rs:617:9:617:17 | print_i64 | main.rs:617:19:617:19 | x | | -| main.rs:617:9:617:20 | print_i64(...) | main.rs:616:5:618:5 | { ... } | | -| main.rs:617:9:617:21 | ExprStmt | main.rs:617:9:617:17 | print_i64 | | -| main.rs:617:19:617:19 | x | main.rs:617:9:617:20 | print_i64(...) | | -| main.rs:618:12:620:5 | { ... } | main.rs:615:13:620:5 | if b2 {...} else {...} | | -| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | -| main.rs:619:9:619:20 | print_i64(...) | main.rs:618:12:620:5 | { ... } | | -| main.rs:619:9:619:21 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | -| main.rs:619:19:619:19 | x | main.rs:619:9:619:20 | print_i64(...) | | -| main.rs:628:5:630:5 | enter fn my_get | main.rs:628:20:628:23 | self | | -| main.rs:628:5:630:5 | exit fn my_get (normal) | main.rs:628:5:630:5 | exit fn my_get | | -| main.rs:628:15:628:23 | SelfParam | main.rs:629:9:629:24 | ExprStmt | | -| main.rs:628:20:628:23 | self | main.rs:628:15:628:23 | SelfParam | | -| main.rs:629:9:629:23 | return ... | main.rs:628:5:630:5 | exit fn my_get (normal) | return | -| main.rs:629:9:629:24 | ExprStmt | main.rs:629:16:629:19 | self | | -| main.rs:629:16:629:19 | self | main.rs:629:16:629:23 | self.val | | -| main.rs:629:16:629:23 | self.val | main.rs:629:9:629:23 | return ... | | -| main.rs:632:5:634:5 | enter fn id | main.rs:632:11:632:14 | self | | -| main.rs:632:5:634:5 | exit fn id (normal) | main.rs:632:5:634:5 | exit fn id | | -| main.rs:632:11:632:14 | SelfParam | main.rs:633:9:633:12 | self | | -| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | SelfParam | | -| main.rs:632:25:634:5 | { ... } | main.rs:632:5:634:5 | exit fn id (normal) | | -| main.rs:633:9:633:12 | self | main.rs:632:25:634:5 | { ... } | | -| main.rs:636:5:643:5 | enter fn my_method | main.rs:636:23:636:26 | self | | -| main.rs:636:5:643:5 | exit fn my_method (normal) | main.rs:636:5:643:5 | exit fn my_method | | -| main.rs:636:18:636:26 | SelfParam | main.rs:637:9:640:10 | let ... = ... | | -| main.rs:636:23:636:26 | self | main.rs:636:18:636:26 | SelfParam | | -| main.rs:636:29:643:5 | { ... } | main.rs:636:5:643:5 | exit fn my_method (normal) | | -| main.rs:637:9:640:10 | let ... = ... | main.rs:637:21:640:9 | \|...\| ... | | -| main.rs:637:13:637:17 | mut f | main.rs:641:9:641:13 | ExprStmt | match | -| main.rs:637:17:637:17 | f | main.rs:637:13:637:17 | mut f | | -| main.rs:637:21:640:9 | \|...\| ... | main.rs:637:17:637:17 | f | | -| main.rs:637:21:640:9 | enter \|...\| ... | main.rs:637:22:637:22 | n | | -| main.rs:637:21:640:9 | exit \|...\| ... (normal) | main.rs:637:21:640:9 | exit \|...\| ... | | -| main.rs:637:22:637:22 | ... | main.rs:639:13:639:26 | ExprStmt | | -| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | ... | match | -| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | | -| main.rs:637:25:640:9 | { ... } | main.rs:637:21:640:9 | exit \|...\| ... (normal) | | -| main.rs:639:13:639:16 | self | main.rs:639:13:639:20 | self.val | | -| main.rs:639:13:639:20 | self.val | main.rs:639:25:639:25 | n | | -| main.rs:639:13:639:25 | ... += ... | main.rs:637:25:640:9 | { ... } | | -| main.rs:639:13:639:26 | ExprStmt | main.rs:639:13:639:16 | self | | -| main.rs:639:25:639:25 | n | main.rs:639:13:639:25 | ... += ... | | -| main.rs:641:9:641:9 | f | main.rs:641:11:641:11 | 3 | | -| main.rs:641:9:641:12 | f(...) | main.rs:642:9:642:13 | ExprStmt | | -| main.rs:641:9:641:13 | ExprStmt | main.rs:641:9:641:9 | f | | -| main.rs:641:11:641:11 | 3 | main.rs:641:9:641:12 | f(...) | | -| main.rs:642:9:642:9 | f | main.rs:642:11:642:11 | 4 | | -| main.rs:642:9:642:12 | f(...) | main.rs:636:29:643:5 | { ... } | | -| main.rs:642:9:642:13 | ExprStmt | main.rs:642:9:642:9 | f | | -| main.rs:642:11:642:11 | 4 | main.rs:642:9:642:12 | f(...) | | -| main.rs:646:1:653:1 | enter fn structs | main.rs:647:5:647:36 | let ... = ... | | -| main.rs:646:1:653:1 | exit fn structs (normal) | main.rs:646:1:653:1 | exit fn structs | | -| main.rs:646:14:653:1 | { ... } | main.rs:646:1:653:1 | exit fn structs (normal) | | -| main.rs:647:5:647:36 | let ... = ... | main.rs:647:33:647:33 | 1 | | -| main.rs:647:9:647:13 | mut a | main.rs:648:5:648:26 | ExprStmt | match | -| main.rs:647:13:647:13 | a | main.rs:647:9:647:13 | mut a | | -| main.rs:647:17:647:35 | MyStruct {...} | main.rs:647:13:647:13 | a | | -| main.rs:647:33:647:33 | 1 | main.rs:647:17:647:35 | MyStruct {...} | | -| main.rs:648:5:648:13 | print_i64 | main.rs:648:15:648:15 | a | | -| main.rs:648:5:648:25 | print_i64(...) | main.rs:649:5:649:14 | ExprStmt | | -| main.rs:648:5:648:26 | ExprStmt | main.rs:648:5:648:13 | print_i64 | | -| main.rs:648:15:648:15 | a | main.rs:648:15:648:24 | a.my_get() | | -| main.rs:648:15:648:24 | a.my_get() | main.rs:648:5:648:25 | print_i64(...) | | -| main.rs:649:5:649:5 | a | main.rs:649:5:649:9 | a.val | | -| main.rs:649:5:649:9 | a.val | main.rs:649:13:649:13 | 5 | | -| main.rs:649:5:649:13 | ... = ... | main.rs:650:5:650:26 | ExprStmt | | -| main.rs:649:5:649:14 | ExprStmt | main.rs:649:5:649:5 | a | | -| main.rs:649:13:649:13 | 5 | main.rs:649:5:649:13 | ... = ... | | -| main.rs:650:5:650:13 | print_i64 | main.rs:650:15:650:15 | a | | -| main.rs:650:5:650:25 | print_i64(...) | main.rs:651:5:651:28 | ExprStmt | | -| main.rs:650:5:650:26 | ExprStmt | main.rs:650:5:650:13 | print_i64 | | -| main.rs:650:15:650:15 | a | main.rs:650:15:650:24 | a.my_get() | | -| main.rs:650:15:650:24 | a.my_get() | main.rs:650:5:650:25 | print_i64(...) | | -| main.rs:651:5:651:5 | a | main.rs:651:25:651:25 | 2 | | -| main.rs:651:5:651:27 | ... = ... | main.rs:652:5:652:26 | ExprStmt | | -| main.rs:651:5:651:28 | ExprStmt | main.rs:651:5:651:5 | a | | -| main.rs:651:9:651:27 | MyStruct {...} | main.rs:651:5:651:27 | ... = ... | | -| main.rs:651:25:651:25 | 2 | main.rs:651:9:651:27 | MyStruct {...} | | -| main.rs:652:5:652:13 | print_i64 | main.rs:652:15:652:15 | a | | -| main.rs:652:5:652:25 | print_i64(...) | main.rs:646:14:653:1 | { ... } | | -| main.rs:652:5:652:26 | ExprStmt | main.rs:652:5:652:13 | print_i64 | | -| main.rs:652:15:652:15 | a | main.rs:652:15:652:24 | a.my_get() | | -| main.rs:652:15:652:24 | a.my_get() | main.rs:652:5:652:25 | print_i64(...) | | -| main.rs:655:1:662:1 | enter fn arrays | main.rs:656:5:656:26 | let ... = ... | | -| main.rs:655:1:662:1 | exit fn arrays (normal) | main.rs:655:1:662:1 | exit fn arrays | | -| main.rs:655:13:662:1 | { ... } | main.rs:655:1:662:1 | exit fn arrays (normal) | | -| main.rs:656:5:656:26 | let ... = ... | main.rs:656:18:656:18 | 1 | | -| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:20 | ExprStmt | match | +| main.rs:573:15:573:15 | y | main.rs:573:5:573:16 | print_i64(...) | | +| main.rs:575:5:575:18 | let ... = 2 | main.rs:575:17:575:17 | 2 | | +| main.rs:575:9:575:13 | mut z | main.rs:578:5:580:6 | let ... = ... | match | +| main.rs:575:13:575:13 | z | main.rs:575:9:575:13 | mut z | | +| main.rs:575:17:575:17 | 2 | main.rs:575:13:575:13 | z | | +| main.rs:578:5:580:6 | let ... = ... | main.rs:578:24:580:5 | \|...\| ... | | +| main.rs:578:9:578:20 | mut closure3 | main.rs:581:5:581:15 | ExprStmt | match | +| main.rs:578:13:578:20 | closure3 | main.rs:578:9:578:20 | mut closure3 | | +| main.rs:578:24:580:5 | \|...\| ... | main.rs:578:13:578:20 | closure3 | | +| main.rs:578:24:580:5 | enter \|...\| ... | main.rs:579:9:579:24 | ExprStmt | | +| main.rs:578:24:580:5 | exit \|...\| ... (normal) | main.rs:578:24:580:5 | exit \|...\| ... | | +| main.rs:578:27:580:5 | { ... } | main.rs:578:24:580:5 | exit \|...\| ... (normal) | | +| main.rs:579:9:579:9 | z | main.rs:579:22:579:22 | 1 | | +| main.rs:579:9:579:23 | z.add_assign(...) | main.rs:578:27:580:5 | { ... } | | +| main.rs:579:9:579:24 | ExprStmt | main.rs:579:9:579:9 | z | | +| main.rs:579:22:579:22 | 1 | main.rs:579:9:579:23 | z.add_assign(...) | | +| main.rs:581:5:581:12 | closure3 | main.rs:581:5:581:14 | closure3(...) | | +| main.rs:581:5:581:14 | closure3(...) | main.rs:582:5:582:17 | ExprStmt | | +| main.rs:581:5:581:15 | ExprStmt | main.rs:581:5:581:12 | closure3 | | +| main.rs:582:5:582:13 | print_i64 | main.rs:582:15:582:15 | z | | +| main.rs:582:5:582:16 | print_i64(...) | main.rs:556:18:583:1 | { ... } | | +| main.rs:582:5:582:17 | ExprStmt | main.rs:582:5:582:13 | print_i64 | | +| main.rs:582:15:582:15 | z | main.rs:582:5:582:16 | print_i64(...) | | +| main.rs:585:1:593:1 | enter fn async_block_capture | main.rs:586:5:586:23 | let ... = 0 | | +| main.rs:585:1:593:1 | exit fn async_block_capture (normal) | main.rs:585:1:593:1 | exit fn async_block_capture | | +| main.rs:585:32:593:1 | { ... } | main.rs:585:1:593:1 | exit fn async_block_capture (normal) | | +| main.rs:586:5:586:23 | let ... = 0 | main.rs:586:22:586:22 | 0 | | +| main.rs:586:9:586:13 | mut i | main.rs:587:5:589:6 | let ... = ... | match | +| main.rs:586:13:586:13 | i | main.rs:586:9:586:13 | mut i | | +| main.rs:586:22:586:22 | 0 | main.rs:586:13:586:13 | i | | +| main.rs:587:5:589:6 | let ... = ... | main.rs:587:17:589:5 | { ... } | | +| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | | +| main.rs:587:9:587:13 | block | main.rs:591:5:591:16 | ExprStmt | match | +| main.rs:587:17:589:5 | enter { ... } | main.rs:588:9:588:14 | ExprStmt | | +| main.rs:587:17:589:5 | exit { ... } (normal) | main.rs:587:17:589:5 | exit { ... } | | +| main.rs:587:17:589:5 | { ... } | main.rs:587:9:587:13 | block | | +| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | | +| main.rs:588:9:588:13 | ... = ... | main.rs:587:17:589:5 | exit { ... } (normal) | | +| main.rs:588:9:588:14 | ExprStmt | main.rs:588:9:588:9 | i | | +| main.rs:588:13:588:13 | 1 | main.rs:588:9:588:13 | ... = ... | | +| main.rs:591:5:591:9 | block | main.rs:591:5:591:15 | await block | | +| main.rs:591:5:591:15 | await block | main.rs:592:5:592:17 | ExprStmt | | +| main.rs:591:5:591:16 | ExprStmt | main.rs:591:5:591:9 | block | | +| main.rs:592:5:592:13 | print_i64 | main.rs:592:15:592:15 | i | | +| main.rs:592:5:592:16 | print_i64(...) | main.rs:585:32:593:1 | { ... } | | +| main.rs:592:5:592:17 | ExprStmt | main.rs:592:5:592:13 | print_i64 | | +| main.rs:592:15:592:15 | i | main.rs:592:5:592:16 | print_i64(...) | | +| main.rs:595:1:611:1 | enter fn phi | main.rs:595:8:595:8 | b | | +| main.rs:595:1:611:1 | exit fn phi (normal) | main.rs:595:1:611:1 | exit fn phi | | +| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | | +| main.rs:595:8:595:8 | b | main.rs:595:8:595:14 | ...: bool | match | +| main.rs:595:8:595:14 | ...: bool | main.rs:596:5:596:18 | let ... = 1 | | +| main.rs:595:17:611:1 | { ... } | main.rs:595:1:611:1 | exit fn phi (normal) | | +| main.rs:596:5:596:18 | let ... = 1 | main.rs:596:17:596:17 | 1 | | +| main.rs:596:9:596:13 | mut x | main.rs:597:5:597:17 | ExprStmt | match | +| main.rs:596:13:596:13 | x | main.rs:596:9:596:13 | mut x | | +| main.rs:596:17:596:17 | 1 | main.rs:596:13:596:13 | x | | +| main.rs:597:5:597:13 | print_i64 | main.rs:597:15:597:15 | x | | +| main.rs:597:5:597:16 | print_i64(...) | main.rs:598:5:598:21 | ExprStmt | | +| main.rs:597:5:597:17 | ExprStmt | main.rs:597:5:597:13 | print_i64 | | +| main.rs:597:15:597:15 | x | main.rs:597:5:597:16 | print_i64(...) | | +| main.rs:598:5:598:13 | print_i64 | main.rs:598:15:598:15 | x | | +| main.rs:598:5:598:20 | print_i64(...) | main.rs:599:5:609:6 | let _ = ... | | +| main.rs:598:5:598:21 | ExprStmt | main.rs:598:5:598:13 | print_i64 | | +| main.rs:598:15:598:15 | x | main.rs:598:19:598:19 | 1 | | +| main.rs:598:15:598:19 | ... + ... | main.rs:598:5:598:20 | print_i64(...) | | +| main.rs:598:19:598:19 | 1 | main.rs:598:15:598:19 | ... + ... | | +| main.rs:599:5:609:6 | let _ = ... | main.rs:600:16:600:16 | b | | +| main.rs:600:9:600:9 | _ | main.rs:610:5:610:17 | ExprStmt | match | +| main.rs:600:13:609:5 | if b {...} else {...} | main.rs:600:9:600:9 | _ | | +| main.rs:600:16:600:16 | b | main.rs:602:9:602:14 | ExprStmt | true | +| main.rs:600:16:600:16 | b | main.rs:606:9:606:14 | ExprStmt | false | +| main.rs:601:5:605:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | +| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | | +| main.rs:602:9:602:13 | ... = ... | main.rs:603:9:603:21 | ExprStmt | | +| main.rs:602:9:602:14 | ExprStmt | main.rs:602:9:602:9 | x | | +| main.rs:602:13:602:13 | 2 | main.rs:602:9:602:13 | ... = ... | | +| main.rs:603:9:603:17 | print_i64 | main.rs:603:19:603:19 | x | | +| main.rs:603:9:603:20 | print_i64(...) | main.rs:604:9:604:25 | ExprStmt | | +| main.rs:603:9:603:21 | ExprStmt | main.rs:603:9:603:17 | print_i64 | | +| main.rs:603:19:603:19 | x | main.rs:603:9:603:20 | print_i64(...) | | +| main.rs:604:9:604:17 | print_i64 | main.rs:604:19:604:19 | x | | +| main.rs:604:9:604:24 | print_i64(...) | main.rs:601:5:605:5 | { ... } | | +| main.rs:604:9:604:25 | ExprStmt | main.rs:604:9:604:17 | print_i64 | | +| main.rs:604:19:604:19 | x | main.rs:604:23:604:23 | 1 | | +| main.rs:604:19:604:23 | ... + ... | main.rs:604:9:604:24 | print_i64(...) | | +| main.rs:604:23:604:23 | 1 | main.rs:604:19:604:23 | ... + ... | | +| main.rs:605:12:609:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | +| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | | +| main.rs:606:9:606:13 | ... = ... | main.rs:607:9:607:21 | ExprStmt | | +| main.rs:606:9:606:14 | ExprStmt | main.rs:606:9:606:9 | x | | +| main.rs:606:13:606:13 | 3 | main.rs:606:9:606:13 | ... = ... | | +| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | +| main.rs:607:9:607:20 | print_i64(...) | main.rs:608:9:608:25 | ExprStmt | | +| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | +| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | +| main.rs:608:9:608:17 | print_i64 | main.rs:608:19:608:19 | x | | +| main.rs:608:9:608:24 | print_i64(...) | main.rs:605:12:609:5 | { ... } | | +| main.rs:608:9:608:25 | ExprStmt | main.rs:608:9:608:17 | print_i64 | | +| main.rs:608:19:608:19 | x | main.rs:608:23:608:23 | 1 | | +| main.rs:608:19:608:23 | ... + ... | main.rs:608:9:608:24 | print_i64(...) | | +| main.rs:608:23:608:23 | 1 | main.rs:608:19:608:23 | ... + ... | | +| main.rs:610:5:610:13 | print_i64 | main.rs:610:15:610:15 | x | | +| main.rs:610:5:610:16 | print_i64(...) | main.rs:595:17:611:1 | { ... } | | +| main.rs:610:5:610:17 | ExprStmt | main.rs:610:5:610:13 | print_i64 | | +| main.rs:610:15:610:15 | x | main.rs:610:5:610:16 | print_i64(...) | | +| main.rs:613:1:630:1 | enter fn phi_read | main.rs:613:13:613:14 | b1 | | +| main.rs:613:1:630:1 | exit fn phi_read (normal) | main.rs:613:1:630:1 | exit fn phi_read | | +| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | | +| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:20 | ...: bool | match | +| main.rs:613:13:613:20 | ...: bool | main.rs:613:23:613:24 | b2 | | +| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | | +| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:30 | ...: bool | match | +| main.rs:613:23:613:30 | ...: bool | main.rs:614:5:614:14 | let ... = 1 | | +| main.rs:613:33:630:1 | { ... } | main.rs:613:1:630:1 | exit fn phi_read (normal) | | +| main.rs:614:5:614:14 | let ... = 1 | main.rs:614:13:614:13 | 1 | | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | | +| main.rs:614:9:614:9 | x | main.rs:615:5:621:6 | let _ = ... | match | +| main.rs:614:13:614:13 | 1 | main.rs:614:9:614:9 | x | | +| main.rs:615:5:621:6 | let _ = ... | main.rs:616:16:616:17 | b1 | | +| main.rs:616:9:616:9 | _ | main.rs:623:5:629:6 | let _ = ... | match | +| main.rs:616:13:621:5 | if b1 {...} else {...} | main.rs:616:9:616:9 | _ | | +| main.rs:616:16:616:17 | b1 | main.rs:618:9:618:21 | ExprStmt | true | +| main.rs:616:16:616:17 | b1 | main.rs:620:9:620:21 | ExprStmt | false | +| main.rs:617:5:619:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:618:9:618:17 | print_i64 | main.rs:618:19:618:19 | x | | +| main.rs:618:9:618:20 | print_i64(...) | main.rs:617:5:619:5 | { ... } | | +| main.rs:618:9:618:21 | ExprStmt | main.rs:618:9:618:17 | print_i64 | | +| main.rs:618:19:618:19 | x | main.rs:618:9:618:20 | print_i64(...) | | +| main.rs:619:12:621:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:620:9:620:17 | print_i64 | main.rs:620:19:620:19 | x | | +| main.rs:620:9:620:20 | print_i64(...) | main.rs:619:12:621:5 | { ... } | | +| main.rs:620:9:620:21 | ExprStmt | main.rs:620:9:620:17 | print_i64 | | +| main.rs:620:19:620:19 | x | main.rs:620:9:620:20 | print_i64(...) | | +| main.rs:623:5:629:6 | let _ = ... | main.rs:624:16:624:17 | b2 | | +| main.rs:624:9:624:9 | _ | main.rs:613:33:630:1 | { ... } | match | +| main.rs:624:13:629:5 | if b2 {...} else {...} | main.rs:624:9:624:9 | _ | | +| main.rs:624:16:624:17 | b2 | main.rs:626:9:626:21 | ExprStmt | true | +| main.rs:624:16:624:17 | b2 | main.rs:628:9:628:21 | ExprStmt | false | +| main.rs:625:5:627:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | +| main.rs:626:9:626:17 | print_i64 | main.rs:626:19:626:19 | x | | +| main.rs:626:9:626:20 | print_i64(...) | main.rs:625:5:627:5 | { ... } | | +| main.rs:626:9:626:21 | ExprStmt | main.rs:626:9:626:17 | print_i64 | | +| main.rs:626:19:626:19 | x | main.rs:626:9:626:20 | print_i64(...) | | +| main.rs:627:12:629:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | +| main.rs:628:9:628:17 | print_i64 | main.rs:628:19:628:19 | x | | +| main.rs:628:9:628:20 | print_i64(...) | main.rs:627:12:629:5 | { ... } | | +| main.rs:628:9:628:21 | ExprStmt | main.rs:628:9:628:17 | print_i64 | | +| main.rs:628:19:628:19 | x | main.rs:628:9:628:20 | print_i64(...) | | +| main.rs:637:5:639:5 | enter fn my_get | main.rs:637:20:637:23 | self | | +| main.rs:637:5:639:5 | exit fn my_get (normal) | main.rs:637:5:639:5 | exit fn my_get | | +| main.rs:637:15:637:23 | SelfParam | main.rs:638:9:638:24 | ExprStmt | | +| main.rs:637:20:637:23 | self | main.rs:637:15:637:23 | SelfParam | | +| main.rs:638:9:638:23 | return ... | main.rs:637:5:639:5 | exit fn my_get (normal) | return | +| main.rs:638:9:638:24 | ExprStmt | main.rs:638:16:638:19 | self | | +| main.rs:638:16:638:19 | self | main.rs:638:16:638:23 | self.val | | +| main.rs:638:16:638:23 | self.val | main.rs:638:9:638:23 | return ... | | +| main.rs:641:5:643:5 | enter fn id | main.rs:641:11:641:14 | self | | +| main.rs:641:5:643:5 | exit fn id (normal) | main.rs:641:5:643:5 | exit fn id | | +| main.rs:641:11:641:14 | SelfParam | main.rs:642:9:642:12 | self | | +| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | SelfParam | | +| main.rs:641:25:643:5 | { ... } | main.rs:641:5:643:5 | exit fn id (normal) | | +| main.rs:642:9:642:12 | self | main.rs:641:25:643:5 | { ... } | | +| main.rs:645:5:652:5 | enter fn my_method | main.rs:645:23:645:26 | self | | +| main.rs:645:5:652:5 | exit fn my_method (normal) | main.rs:645:5:652:5 | exit fn my_method | | +| main.rs:645:18:645:26 | SelfParam | main.rs:646:9:649:10 | let ... = ... | | +| main.rs:645:23:645:26 | self | main.rs:645:18:645:26 | SelfParam | | +| main.rs:645:29:652:5 | { ... } | main.rs:645:5:652:5 | exit fn my_method (normal) | | +| main.rs:646:9:649:10 | let ... = ... | main.rs:646:21:649:9 | \|...\| ... | | +| main.rs:646:13:646:17 | mut f | main.rs:650:9:650:13 | ExprStmt | match | +| main.rs:646:17:646:17 | f | main.rs:646:13:646:17 | mut f | | +| main.rs:646:21:649:9 | \|...\| ... | main.rs:646:17:646:17 | f | | +| main.rs:646:21:649:9 | enter \|...\| ... | main.rs:646:22:646:22 | n | | +| main.rs:646:21:649:9 | exit \|...\| ... (normal) | main.rs:646:21:649:9 | exit \|...\| ... | | +| main.rs:646:22:646:22 | ... | main.rs:648:13:648:26 | ExprStmt | | +| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | ... | match | +| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | +| main.rs:646:25:649:9 | { ... } | main.rs:646:21:649:9 | exit \|...\| ... (normal) | | +| main.rs:648:13:648:16 | self | main.rs:648:13:648:20 | self.val | | +| main.rs:648:13:648:20 | self.val | main.rs:648:25:648:25 | n | | +| main.rs:648:13:648:25 | ... += ... | main.rs:646:25:649:9 | { ... } | | +| main.rs:648:13:648:26 | ExprStmt | main.rs:648:13:648:16 | self | | +| main.rs:648:25:648:25 | n | main.rs:648:13:648:25 | ... += ... | | +| main.rs:650:9:650:9 | f | main.rs:650:11:650:11 | 3 | | +| main.rs:650:9:650:12 | f(...) | main.rs:651:9:651:13 | ExprStmt | | +| main.rs:650:9:650:13 | ExprStmt | main.rs:650:9:650:9 | f | | +| main.rs:650:11:650:11 | 3 | main.rs:650:9:650:12 | f(...) | | +| main.rs:651:9:651:9 | f | main.rs:651:11:651:11 | 4 | | +| main.rs:651:9:651:12 | f(...) | main.rs:645:29:652:5 | { ... } | | +| main.rs:651:9:651:13 | ExprStmt | main.rs:651:9:651:9 | f | | +| main.rs:651:11:651:11 | 4 | main.rs:651:9:651:12 | f(...) | | +| main.rs:655:1:662:1 | enter fn structs | main.rs:656:5:656:36 | let ... = ... | | +| main.rs:655:1:662:1 | exit fn structs (normal) | main.rs:655:1:662:1 | exit fn structs | | +| main.rs:655:14:662:1 | { ... } | main.rs:655:1:662:1 | exit fn structs (normal) | | +| main.rs:656:5:656:36 | let ... = ... | main.rs:656:33:656:33 | 1 | | +| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:26 | ExprStmt | match | | main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | -| main.rs:656:17:656:25 | [...] | main.rs:656:13:656:13 | a | | -| main.rs:656:18:656:18 | 1 | main.rs:656:21:656:21 | 2 | | -| main.rs:656:21:656:21 | 2 | main.rs:656:24:656:24 | 3 | | -| main.rs:656:24:656:24 | 3 | main.rs:656:17:656:25 | [...] | | +| main.rs:656:17:656:35 | MyStruct {...} | main.rs:656:13:656:13 | a | | +| main.rs:656:33:656:33 | 1 | main.rs:656:17:656:35 | MyStruct {...} | | | main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:19 | print_i64(...) | main.rs:658:5:658:13 | ExprStmt | | -| main.rs:657:5:657:20 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:17:657:17 | 0 | | -| main.rs:657:15:657:18 | a[0] | main.rs:657:5:657:19 | print_i64(...) | | -| main.rs:657:17:657:17 | 0 | main.rs:657:15:657:18 | a[0] | | -| main.rs:658:5:658:5 | a | main.rs:658:7:658:7 | 1 | | -| main.rs:658:5:658:8 | a[1] | main.rs:658:12:658:12 | 5 | | -| main.rs:658:5:658:12 | ... = ... | main.rs:659:5:659:20 | ExprStmt | | -| main.rs:658:5:658:13 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:7:658:7 | 1 | main.rs:658:5:658:8 | a[1] | | -| main.rs:658:12:658:12 | 5 | main.rs:658:5:658:12 | ... = ... | | +| main.rs:657:5:657:25 | print_i64(...) | main.rs:658:5:658:14 | ExprStmt | | +| main.rs:657:5:657:26 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | +| main.rs:657:15:657:15 | a | main.rs:657:15:657:24 | a.my_get() | | +| main.rs:657:15:657:24 | a.my_get() | main.rs:657:5:657:25 | print_i64(...) | | +| main.rs:658:5:658:5 | a | main.rs:658:5:658:9 | a.val | | +| main.rs:658:5:658:9 | a.val | main.rs:658:13:658:13 | 5 | | +| main.rs:658:5:658:13 | ... = ... | main.rs:659:5:659:26 | ExprStmt | | +| main.rs:658:5:658:14 | ExprStmt | main.rs:658:5:658:5 | a | | +| main.rs:658:13:658:13 | 5 | main.rs:658:5:658:13 | ... = ... | | | main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:19 | print_i64(...) | main.rs:660:5:660:18 | ExprStmt | | -| main.rs:659:5:659:20 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:17:659:17 | 1 | | -| main.rs:659:15:659:18 | a[1] | main.rs:659:5:659:19 | print_i64(...) | | -| main.rs:659:17:659:17 | 1 | main.rs:659:15:659:18 | a[1] | | -| main.rs:660:5:660:5 | a | main.rs:660:10:660:10 | 4 | | -| main.rs:660:5:660:17 | ... = ... | main.rs:661:5:661:20 | ExprStmt | | -| main.rs:660:5:660:18 | ExprStmt | main.rs:660:5:660:5 | a | | -| main.rs:660:9:660:17 | [...] | main.rs:660:5:660:17 | ... = ... | | -| main.rs:660:10:660:10 | 4 | main.rs:660:13:660:13 | 5 | | -| main.rs:660:13:660:13 | 5 | main.rs:660:16:660:16 | 6 | | -| main.rs:660:16:660:16 | 6 | main.rs:660:9:660:17 | [...] | | +| main.rs:659:5:659:25 | print_i64(...) | main.rs:660:5:660:28 | ExprStmt | | +| main.rs:659:5:659:26 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | +| main.rs:659:15:659:15 | a | main.rs:659:15:659:24 | a.my_get() | | +| main.rs:659:15:659:24 | a.my_get() | main.rs:659:5:659:25 | print_i64(...) | | +| main.rs:660:5:660:5 | a | main.rs:660:25:660:25 | 2 | | +| main.rs:660:5:660:27 | ... = ... | main.rs:661:5:661:26 | ExprStmt | | +| main.rs:660:5:660:28 | ExprStmt | main.rs:660:5:660:5 | a | | +| main.rs:660:9:660:27 | MyStruct {...} | main.rs:660:5:660:27 | ... = ... | | +| main.rs:660:25:660:25 | 2 | main.rs:660:9:660:27 | MyStruct {...} | | | main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | -| main.rs:661:5:661:19 | print_i64(...) | main.rs:655:13:662:1 | { ... } | | -| main.rs:661:5:661:20 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | -| main.rs:661:15:661:15 | a | main.rs:661:17:661:17 | 2 | | -| main.rs:661:15:661:18 | a[2] | main.rs:661:5:661:19 | print_i64(...) | | -| main.rs:661:17:661:17 | 2 | main.rs:661:15:661:18 | a[2] | | -| main.rs:664:1:671:1 | enter fn ref_arg | main.rs:665:5:665:15 | let ... = 16 | | -| main.rs:664:1:671:1 | exit fn ref_arg (normal) | main.rs:664:1:671:1 | exit fn ref_arg | | -| main.rs:664:14:671:1 | { ... } | main.rs:664:1:671:1 | exit fn ref_arg (normal) | | -| main.rs:665:5:665:15 | let ... = 16 | main.rs:665:13:665:14 | 16 | | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | | -| main.rs:665:9:665:9 | x | main.rs:666:5:666:22 | ExprStmt | match | -| main.rs:665:13:665:14 | 16 | main.rs:665:9:665:9 | x | | -| main.rs:666:5:666:17 | print_i64_ref | main.rs:666:20:666:20 | x | | -| main.rs:666:5:666:21 | print_i64_ref(...) | main.rs:667:5:667:17 | ExprStmt | | -| main.rs:666:5:666:22 | ExprStmt | main.rs:666:5:666:17 | print_i64_ref | | -| main.rs:666:19:666:20 | &x | main.rs:666:5:666:21 | print_i64_ref(...) | | -| main.rs:666:20:666:20 | x | main.rs:666:19:666:20 | &x | | -| main.rs:667:5:667:13 | print_i64 | main.rs:667:15:667:15 | x | | -| main.rs:667:5:667:16 | print_i64(...) | main.rs:669:5:669:15 | let ... = 17 | | -| main.rs:667:5:667:17 | ExprStmt | main.rs:667:5:667:13 | print_i64 | | -| main.rs:667:15:667:15 | x | main.rs:667:5:667:16 | print_i64(...) | | -| main.rs:669:5:669:15 | let ... = 17 | main.rs:669:13:669:14 | 17 | | -| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | | -| main.rs:669:9:669:9 | z | main.rs:670:5:670:22 | ExprStmt | match | -| main.rs:669:13:669:14 | 17 | main.rs:669:9:669:9 | z | | -| main.rs:670:5:670:17 | print_i64_ref | main.rs:670:20:670:20 | z | | -| main.rs:670:5:670:21 | print_i64_ref(...) | main.rs:664:14:671:1 | { ... } | | -| main.rs:670:5:670:22 | ExprStmt | main.rs:670:5:670:17 | print_i64_ref | | -| main.rs:670:19:670:20 | &z | main.rs:670:5:670:21 | print_i64_ref(...) | | -| main.rs:670:20:670:20 | z | main.rs:670:19:670:20 | &z | | -| main.rs:678:5:680:5 | enter fn bar | main.rs:678:17:678:20 | self | | -| main.rs:678:5:680:5 | exit fn bar (normal) | main.rs:678:5:680:5 | exit fn bar | | -| main.rs:678:12:678:20 | SelfParam | main.rs:679:9:679:36 | ExprStmt | | -| main.rs:678:17:678:20 | self | main.rs:678:12:678:20 | SelfParam | | -| main.rs:678:23:680:5 | { ... } | main.rs:678:5:680:5 | exit fn bar (normal) | | -| main.rs:679:9:679:13 | * ... | main.rs:679:33:679:33 | 3 | | -| main.rs:679:9:679:35 | ... = ... | main.rs:678:23:680:5 | { ... } | | -| main.rs:679:9:679:36 | ExprStmt | main.rs:679:10:679:13 | self | | -| main.rs:679:10:679:13 | self | main.rs:679:9:679:13 | * ... | | -| main.rs:679:17:679:35 | MyStruct {...} | main.rs:679:9:679:35 | ... = ... | | -| main.rs:679:33:679:33 | 3 | main.rs:679:17:679:35 | MyStruct {...} | | -| main.rs:683:1:689:1 | enter fn ref_methodcall_receiver | main.rs:684:5:684:36 | let ... = ... | | -| main.rs:683:1:689:1 | exit fn ref_methodcall_receiver (normal) | main.rs:683:1:689:1 | exit fn ref_methodcall_receiver | | -| main.rs:683:30:689:1 | { ... } | main.rs:683:1:689:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:684:5:684:36 | let ... = ... | main.rs:684:33:684:33 | 1 | | -| main.rs:684:9:684:13 | mut a | main.rs:685:5:685:12 | ExprStmt | match | -| main.rs:684:13:684:13 | a | main.rs:684:9:684:13 | mut a | | -| main.rs:684:17:684:35 | MyStruct {...} | main.rs:684:13:684:13 | a | | -| main.rs:684:33:684:33 | 1 | main.rs:684:17:684:35 | MyStruct {...} | | -| main.rs:685:5:685:5 | a | main.rs:685:5:685:11 | a.bar() | | -| main.rs:685:5:685:11 | a.bar() | main.rs:688:5:688:21 | ExprStmt | | -| main.rs:685:5:685:12 | ExprStmt | main.rs:685:5:685:5 | a | | -| main.rs:688:5:688:13 | print_i64 | main.rs:688:15:688:15 | a | | -| main.rs:688:5:688:20 | print_i64(...) | main.rs:683:30:689:1 | { ... } | | -| main.rs:688:5:688:21 | ExprStmt | main.rs:688:5:688:13 | print_i64 | | -| main.rs:688:15:688:15 | a | main.rs:688:15:688:19 | a.val | | -| main.rs:688:15:688:19 | a.val | main.rs:688:5:688:20 | print_i64(...) | | -| main.rs:705:1:716:1 | enter fn macro_invocation | main.rs:706:5:707:26 | let ... = ... | | -| main.rs:705:1:716:1 | exit fn macro_invocation (normal) | main.rs:705:1:716:1 | exit fn macro_invocation | | -| main.rs:705:23:716:1 | { ... } | main.rs:705:1:716:1 | exit fn macro_invocation (normal) | | -| main.rs:706:5:707:26 | let ... = ... | main.rs:707:23:707:24 | let ... = 37 | | -| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | | -| main.rs:706:9:706:22 | var_from_macro | main.rs:708:5:708:30 | ExprStmt | match | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | match | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | { ... } | | -| main.rs:707:9:707:25 | MacroExpr | main.rs:706:9:706:22 | var_from_macro | | -| main.rs:707:9:707:25 | let_in_macro!... | main.rs:707:9:707:25 | MacroExpr | | -| main.rs:707:23:707:24 | 37 | main.rs:707:9:707:21 | var_in_macro | | -| main.rs:707:23:707:24 | let ... = 37 | main.rs:707:23:707:24 | 37 | | -| main.rs:707:23:707:24 | { ... } | main.rs:707:9:707:25 | let_in_macro!... | | -| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:28 | var_from_macro | | -| main.rs:708:5:708:29 | print_i64(...) | main.rs:709:5:709:26 | let ... = 33 | | -| main.rs:708:5:708:30 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | -| main.rs:708:15:708:28 | var_from_macro | main.rs:708:5:708:29 | print_i64(...) | | -| main.rs:709:5:709:26 | let ... = 33 | main.rs:709:24:709:25 | 33 | | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | | -| main.rs:709:9:709:20 | var_in_macro | main.rs:714:5:714:44 | ExprStmt | match | -| main.rs:709:24:709:25 | 33 | main.rs:709:9:709:20 | var_in_macro | | -| main.rs:714:5:714:13 | print_i64 | main.rs:714:15:714:28 | let ... = 0 | | -| main.rs:714:5:714:43 | print_i64(...) | main.rs:715:5:715:28 | ExprStmt | | -| main.rs:714:5:714:44 | ExprStmt | main.rs:714:5:714:13 | print_i64 | | -| main.rs:714:15:714:28 | 0 | main.rs:714:15:714:28 | var_in_macro | | -| main.rs:714:15:714:28 | let ... = 0 | main.rs:714:15:714:28 | 0 | | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | match | -| main.rs:714:15:714:42 | MacroExpr | main.rs:714:5:714:43 | print_i64(...) | | -| main.rs:714:15:714:42 | let_in_macro2!... | main.rs:714:15:714:42 | MacroExpr | | -| main.rs:714:30:714:41 | var_in_macro | main.rs:714:30:714:41 | { ... } | | -| main.rs:714:30:714:41 | { ... } | main.rs:714:15:714:42 | let_in_macro2!... | | -| main.rs:715:5:715:13 | print_i64 | main.rs:715:15:715:26 | var_in_macro | | -| main.rs:715:5:715:27 | print_i64(...) | main.rs:705:23:716:1 | { ... } | | -| main.rs:715:5:715:28 | ExprStmt | main.rs:715:5:715:13 | print_i64 | | -| main.rs:715:15:715:26 | var_in_macro | main.rs:715:5:715:27 | print_i64(...) | | -| main.rs:718:1:722:1 | enter fn let_without_initializer | main.rs:719:5:719:10 | let ... | | -| main.rs:718:1:722:1 | exit fn let_without_initializer (normal) | main.rs:718:1:722:1 | exit fn let_without_initializer | | -| main.rs:718:30:722:1 | { ... } | main.rs:718:1:722:1 | exit fn let_without_initializer (normal) | | -| main.rs:719:5:719:10 | let ... | main.rs:719:9:719:9 | x | | -| main.rs:719:9:719:9 | x | main.rs:719:9:719:9 | x | | -| main.rs:719:9:719:9 | x | main.rs:720:5:720:10 | ExprStmt | match | -| main.rs:720:5:720:5 | x | main.rs:720:9:720:9 | 1 | | -| main.rs:720:5:720:9 | ... = ... | main.rs:721:5:721:17 | ExprStmt | | -| main.rs:720:5:720:10 | ExprStmt | main.rs:720:5:720:5 | x | | -| main.rs:720:9:720:9 | 1 | main.rs:720:5:720:9 | ... = ... | | -| main.rs:721:5:721:13 | print_i64 | main.rs:721:15:721:15 | x | | -| main.rs:721:5:721:16 | print_i64(...) | main.rs:718:30:722:1 | { ... } | | -| main.rs:721:5:721:17 | ExprStmt | main.rs:721:5:721:13 | print_i64 | | -| main.rs:721:15:721:15 | x | main.rs:721:5:721:16 | print_i64(...) | | -| main.rs:724:1:734:1 | enter fn capture_phi | main.rs:725:5:725:20 | let ... = 100 | | -| main.rs:724:1:734:1 | exit fn capture_phi (normal) | main.rs:724:1:734:1 | exit fn capture_phi | | -| main.rs:724:18:734:1 | { ... } | main.rs:724:1:734:1 | exit fn capture_phi (normal) | | -| main.rs:725:5:725:20 | let ... = 100 | main.rs:725:17:725:19 | 100 | | -| main.rs:725:9:725:13 | mut x | main.rs:726:5:731:6 | let ... = ... | match | -| main.rs:725:13:725:13 | x | main.rs:725:9:725:13 | mut x | | -| main.rs:725:17:725:19 | 100 | main.rs:725:13:725:13 | x | | -| main.rs:726:5:731:6 | let ... = ... | main.rs:726:19:731:5 | \|...\| ... | | -| main.rs:726:9:726:15 | mut cap | main.rs:732:5:732:14 | ExprStmt | match | -| main.rs:726:13:726:15 | cap | main.rs:726:9:726:15 | mut cap | | -| main.rs:726:19:731:5 | \|...\| ... | main.rs:726:13:726:15 | cap | | -| main.rs:726:19:731:5 | enter \|...\| ... | main.rs:726:20:726:20 | b | | -| main.rs:726:19:731:5 | exit \|...\| ... (normal) | main.rs:726:19:731:5 | exit \|...\| ... | | -| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | | -| main.rs:726:20:726:20 | b | main.rs:726:20:726:26 | ...: bool | match | -| main.rs:726:20:726:26 | ...: bool | main.rs:727:9:730:10 | let _ = ... | | -| main.rs:726:29:731:5 | { ... } | main.rs:726:19:731:5 | exit \|...\| ... (normal) | | -| main.rs:727:9:730:10 | let _ = ... | main.rs:728:20:728:20 | b | | -| main.rs:728:13:728:13 | _ | main.rs:726:29:731:5 | { ... } | match | -| main.rs:728:17:730:9 | if b {...} | main.rs:728:13:728:13 | _ | | -| main.rs:728:20:728:20 | b | main.rs:728:17:730:9 | if b {...} | false | -| main.rs:728:20:728:20 | b | main.rs:729:13:729:20 | ExprStmt | true | -| main.rs:728:22:730:9 | { ... } | main.rs:728:17:730:9 | if b {...} | | -| main.rs:729:13:729:13 | x | main.rs:729:17:729:19 | 200 | | -| main.rs:729:13:729:19 | ... = ... | main.rs:728:22:730:9 | { ... } | | -| main.rs:729:13:729:20 | ExprStmt | main.rs:729:13:729:13 | x | | -| main.rs:729:17:729:19 | 200 | main.rs:729:13:729:19 | ... = ... | | -| main.rs:732:5:732:7 | cap | main.rs:732:9:732:12 | true | | -| main.rs:732:5:732:13 | cap(...) | main.rs:733:5:733:17 | ExprStmt | | -| main.rs:732:5:732:14 | ExprStmt | main.rs:732:5:732:7 | cap | | -| main.rs:732:9:732:12 | true | main.rs:732:5:732:13 | cap(...) | | -| main.rs:733:5:733:13 | print_i64 | main.rs:733:15:733:15 | x | | -| main.rs:733:5:733:16 | print_i64(...) | main.rs:724:18:734:1 | { ... } | | -| main.rs:733:5:733:17 | ExprStmt | main.rs:733:5:733:13 | print_i64 | | -| main.rs:733:15:733:15 | x | main.rs:733:5:733:16 | print_i64(...) | | -| main.rs:736:1:778:1 | enter fn main | main.rs:737:5:737:25 | ExprStmt | | -| main.rs:736:1:778:1 | exit fn main (normal) | main.rs:736:1:778:1 | exit fn main | | -| main.rs:736:11:778:1 | { ... } | main.rs:736:1:778:1 | exit fn main (normal) | | -| main.rs:737:5:737:22 | immutable_variable | main.rs:737:5:737:24 | immutable_variable(...) | | -| main.rs:737:5:737:24 | immutable_variable(...) | main.rs:738:5:738:23 | ExprStmt | | -| main.rs:737:5:737:25 | ExprStmt | main.rs:737:5:737:22 | immutable_variable | | -| main.rs:738:5:738:20 | mutable_variable | main.rs:738:5:738:22 | mutable_variable(...) | | -| main.rs:738:5:738:22 | mutable_variable(...) | main.rs:739:5:739:40 | ExprStmt | | -| main.rs:738:5:738:23 | ExprStmt | main.rs:738:5:738:20 | mutable_variable | | -| main.rs:739:5:739:37 | mutable_variable_immutable_borrow | main.rs:739:5:739:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:739:5:739:39 | mutable_variable_immutable_borrow(...) | main.rs:740:5:740:23 | ExprStmt | | -| main.rs:739:5:739:40 | ExprStmt | main.rs:739:5:739:37 | mutable_variable_immutable_borrow | | -| main.rs:740:5:740:20 | variable_shadow1 | main.rs:740:5:740:22 | variable_shadow1(...) | | -| main.rs:740:5:740:22 | variable_shadow1(...) | main.rs:741:5:741:23 | ExprStmt | | -| main.rs:740:5:740:23 | ExprStmt | main.rs:740:5:740:20 | variable_shadow1 | | -| main.rs:741:5:741:20 | variable_shadow2 | main.rs:741:5:741:22 | variable_shadow2(...) | | -| main.rs:741:5:741:22 | variable_shadow2(...) | main.rs:742:5:742:19 | ExprStmt | | -| main.rs:741:5:741:23 | ExprStmt | main.rs:741:5:741:20 | variable_shadow2 | | -| main.rs:742:5:742:16 | let_pattern1 | main.rs:742:5:742:18 | let_pattern1(...) | | -| main.rs:742:5:742:18 | let_pattern1(...) | main.rs:743:5:743:19 | ExprStmt | | -| main.rs:742:5:742:19 | ExprStmt | main.rs:742:5:742:16 | let_pattern1 | | -| main.rs:743:5:743:16 | let_pattern2 | main.rs:743:5:743:18 | let_pattern2(...) | | -| main.rs:743:5:743:18 | let_pattern2(...) | main.rs:744:5:744:19 | ExprStmt | | -| main.rs:743:5:743:19 | ExprStmt | main.rs:743:5:743:16 | let_pattern2 | | -| main.rs:744:5:744:16 | let_pattern3 | main.rs:744:5:744:18 | let_pattern3(...) | | -| main.rs:744:5:744:18 | let_pattern3(...) | main.rs:745:5:745:19 | ExprStmt | | -| main.rs:744:5:744:19 | ExprStmt | main.rs:744:5:744:16 | let_pattern3 | | -| main.rs:745:5:745:16 | let_pattern4 | main.rs:745:5:745:18 | let_pattern4(...) | | -| main.rs:745:5:745:18 | let_pattern4(...) | main.rs:746:5:746:21 | ExprStmt | | -| main.rs:745:5:745:19 | ExprStmt | main.rs:745:5:745:16 | let_pattern4 | | -| main.rs:746:5:746:18 | match_pattern1 | main.rs:746:5:746:20 | match_pattern1(...) | | -| main.rs:746:5:746:20 | match_pattern1(...) | main.rs:747:5:747:21 | ExprStmt | | -| main.rs:746:5:746:21 | ExprStmt | main.rs:746:5:746:18 | match_pattern1 | | -| main.rs:747:5:747:18 | match_pattern2 | main.rs:747:5:747:20 | match_pattern2(...) | | -| main.rs:747:5:747:20 | match_pattern2(...) | main.rs:748:5:748:21 | ExprStmt | | -| main.rs:747:5:747:21 | ExprStmt | main.rs:747:5:747:18 | match_pattern2 | | -| main.rs:748:5:748:18 | match_pattern3 | main.rs:748:5:748:20 | match_pattern3(...) | | -| main.rs:748:5:748:20 | match_pattern3(...) | main.rs:749:5:749:21 | ExprStmt | | -| main.rs:748:5:748:21 | ExprStmt | main.rs:748:5:748:18 | match_pattern3 | | -| main.rs:749:5:749:18 | match_pattern4 | main.rs:749:5:749:20 | match_pattern4(...) | | -| main.rs:749:5:749:20 | match_pattern4(...) | main.rs:750:5:750:21 | ExprStmt | | -| main.rs:749:5:749:21 | ExprStmt | main.rs:749:5:749:18 | match_pattern4 | | -| main.rs:750:5:750:18 | match_pattern5 | main.rs:750:5:750:20 | match_pattern5(...) | | -| main.rs:750:5:750:20 | match_pattern5(...) | main.rs:751:5:751:21 | ExprStmt | | -| main.rs:750:5:750:21 | ExprStmt | main.rs:750:5:750:18 | match_pattern5 | | -| main.rs:751:5:751:18 | match_pattern6 | main.rs:751:5:751:20 | match_pattern6(...) | | -| main.rs:751:5:751:20 | match_pattern6(...) | main.rs:752:5:752:21 | ExprStmt | | -| main.rs:751:5:751:21 | ExprStmt | main.rs:751:5:751:18 | match_pattern6 | | -| main.rs:752:5:752:18 | match_pattern7 | main.rs:752:5:752:20 | match_pattern7(...) | | -| main.rs:752:5:752:20 | match_pattern7(...) | main.rs:753:5:753:21 | ExprStmt | | -| main.rs:752:5:752:21 | ExprStmt | main.rs:752:5:752:18 | match_pattern7 | | -| main.rs:753:5:753:18 | match_pattern8 | main.rs:753:5:753:20 | match_pattern8(...) | | -| main.rs:753:5:753:20 | match_pattern8(...) | main.rs:754:5:754:21 | ExprStmt | | -| main.rs:753:5:753:21 | ExprStmt | main.rs:753:5:753:18 | match_pattern8 | | -| main.rs:754:5:754:18 | match_pattern9 | main.rs:754:5:754:20 | match_pattern9(...) | | -| main.rs:754:5:754:20 | match_pattern9(...) | main.rs:755:5:755:22 | ExprStmt | | -| main.rs:754:5:754:21 | ExprStmt | main.rs:754:5:754:18 | match_pattern9 | | -| main.rs:755:5:755:19 | match_pattern10 | main.rs:755:5:755:21 | match_pattern10(...) | | -| main.rs:755:5:755:21 | match_pattern10(...) | main.rs:756:5:756:22 | ExprStmt | | -| main.rs:755:5:755:22 | ExprStmt | main.rs:755:5:755:19 | match_pattern10 | | -| main.rs:756:5:756:19 | match_pattern11 | main.rs:756:5:756:21 | match_pattern11(...) | | -| main.rs:756:5:756:21 | match_pattern11(...) | main.rs:757:5:757:22 | ExprStmt | | -| main.rs:756:5:756:22 | ExprStmt | main.rs:756:5:756:19 | match_pattern11 | | -| main.rs:757:5:757:19 | match_pattern12 | main.rs:757:5:757:21 | match_pattern12(...) | | -| main.rs:757:5:757:21 | match_pattern12(...) | main.rs:758:5:758:22 | ExprStmt | | -| main.rs:757:5:757:22 | ExprStmt | main.rs:757:5:757:19 | match_pattern12 | | -| main.rs:758:5:758:19 | match_pattern13 | main.rs:758:5:758:21 | match_pattern13(...) | | -| main.rs:758:5:758:21 | match_pattern13(...) | main.rs:759:5:759:22 | ExprStmt | | -| main.rs:758:5:758:22 | ExprStmt | main.rs:758:5:758:19 | match_pattern13 | | -| main.rs:759:5:759:19 | match_pattern14 | main.rs:759:5:759:21 | match_pattern14(...) | | -| main.rs:759:5:759:21 | match_pattern14(...) | main.rs:760:5:760:36 | ExprStmt | | -| main.rs:759:5:759:22 | ExprStmt | main.rs:759:5:759:19 | match_pattern14 | | -| main.rs:760:5:760:18 | param_pattern1 | main.rs:760:20:760:22 | "a" | | -| main.rs:760:5:760:35 | param_pattern1(...) | main.rs:761:5:761:37 | ExprStmt | | -| main.rs:760:5:760:36 | ExprStmt | main.rs:760:5:760:18 | param_pattern1 | | -| main.rs:760:20:760:22 | "a" | main.rs:760:26:760:28 | "b" | | -| main.rs:760:25:760:34 | TupleExpr | main.rs:760:5:760:35 | param_pattern1(...) | | -| main.rs:760:26:760:28 | "b" | main.rs:760:31:760:33 | "c" | | -| main.rs:760:31:760:33 | "c" | main.rs:760:25:760:34 | TupleExpr | | -| main.rs:761:5:761:18 | param_pattern2 | main.rs:761:20:761:31 | ...::Left | | -| main.rs:761:5:761:36 | param_pattern2(...) | main.rs:762:5:762:26 | ExprStmt | | -| main.rs:761:5:761:37 | ExprStmt | main.rs:761:5:761:18 | param_pattern2 | | -| main.rs:761:20:761:31 | ...::Left | main.rs:761:33:761:34 | 45 | | -| main.rs:761:20:761:35 | ...::Left(...) | main.rs:761:5:761:36 | param_pattern2(...) | | -| main.rs:761:33:761:34 | 45 | main.rs:761:20:761:35 | ...::Left(...) | | -| main.rs:762:5:762:23 | destruct_assignment | main.rs:762:5:762:25 | destruct_assignment(...) | | -| main.rs:762:5:762:25 | destruct_assignment(...) | main.rs:763:5:763:23 | ExprStmt | | -| main.rs:762:5:762:26 | ExprStmt | main.rs:762:5:762:23 | destruct_assignment | | -| main.rs:763:5:763:20 | closure_variable | main.rs:763:5:763:22 | closure_variable(...) | | -| main.rs:763:5:763:22 | closure_variable(...) | main.rs:764:5:764:22 | ExprStmt | | -| main.rs:763:5:763:23 | ExprStmt | main.rs:763:5:763:20 | closure_variable | | -| main.rs:764:5:764:19 | nested_function | main.rs:764:5:764:21 | nested_function(...) | | -| main.rs:764:5:764:21 | nested_function(...) | main.rs:765:5:765:19 | ExprStmt | | -| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | nested_function | | -| main.rs:765:5:765:16 | for_variable | main.rs:765:5:765:18 | for_variable(...) | | -| main.rs:765:5:765:18 | for_variable(...) | main.rs:766:5:766:17 | ExprStmt | | -| main.rs:765:5:765:19 | ExprStmt | main.rs:765:5:765:16 | for_variable | | -| main.rs:766:5:766:14 | add_assign | main.rs:766:5:766:16 | add_assign(...) | | -| main.rs:766:5:766:16 | add_assign(...) | main.rs:767:5:767:13 | ExprStmt | | -| main.rs:766:5:766:17 | ExprStmt | main.rs:766:5:766:14 | add_assign | | -| main.rs:767:5:767:10 | mutate | main.rs:767:5:767:12 | mutate(...) | | -| main.rs:767:5:767:12 | mutate(...) | main.rs:768:5:768:17 | ExprStmt | | -| main.rs:767:5:767:13 | ExprStmt | main.rs:767:5:767:10 | mutate | | -| main.rs:768:5:768:14 | mutate_arg | main.rs:768:5:768:16 | mutate_arg(...) | | -| main.rs:768:5:768:16 | mutate_arg(...) | main.rs:769:5:769:12 | ExprStmt | | -| main.rs:768:5:768:17 | ExprStmt | main.rs:768:5:768:14 | mutate_arg | | -| main.rs:769:5:769:9 | alias | main.rs:769:5:769:11 | alias(...) | | -| main.rs:769:5:769:11 | alias(...) | main.rs:770:5:770:18 | ExprStmt | | -| main.rs:769:5:769:12 | ExprStmt | main.rs:769:5:769:9 | alias | | -| main.rs:770:5:770:15 | capture_mut | main.rs:770:5:770:17 | capture_mut(...) | | -| main.rs:770:5:770:17 | capture_mut(...) | main.rs:771:5:771:20 | ExprStmt | | -| main.rs:770:5:770:18 | ExprStmt | main.rs:770:5:770:15 | capture_mut | | -| main.rs:771:5:771:17 | capture_immut | main.rs:771:5:771:19 | capture_immut(...) | | -| main.rs:771:5:771:19 | capture_immut(...) | main.rs:772:5:772:26 | ExprStmt | | -| main.rs:771:5:771:20 | ExprStmt | main.rs:771:5:771:17 | capture_immut | | -| main.rs:772:5:772:23 | async_block_capture | main.rs:772:5:772:25 | async_block_capture(...) | | -| main.rs:772:5:772:25 | async_block_capture(...) | main.rs:773:5:773:14 | ExprStmt | | -| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | async_block_capture | | -| main.rs:773:5:773:11 | structs | main.rs:773:5:773:13 | structs(...) | | -| main.rs:773:5:773:13 | structs(...) | main.rs:774:5:774:14 | ExprStmt | | -| main.rs:773:5:773:14 | ExprStmt | main.rs:773:5:773:11 | structs | | -| main.rs:774:5:774:11 | ref_arg | main.rs:774:5:774:13 | ref_arg(...) | | -| main.rs:774:5:774:13 | ref_arg(...) | main.rs:775:5:775:30 | ExprStmt | | -| main.rs:774:5:774:14 | ExprStmt | main.rs:774:5:774:11 | ref_arg | | -| main.rs:775:5:775:27 | ref_methodcall_receiver | main.rs:775:5:775:29 | ref_methodcall_receiver(...) | | -| main.rs:775:5:775:29 | ref_methodcall_receiver(...) | main.rs:776:5:776:23 | ExprStmt | | -| main.rs:775:5:775:30 | ExprStmt | main.rs:775:5:775:27 | ref_methodcall_receiver | | -| main.rs:776:5:776:20 | macro_invocation | main.rs:776:5:776:22 | macro_invocation(...) | | -| main.rs:776:5:776:22 | macro_invocation(...) | main.rs:777:5:777:18 | ExprStmt | | -| main.rs:776:5:776:23 | ExprStmt | main.rs:776:5:776:20 | macro_invocation | | -| main.rs:777:5:777:15 | capture_phi | main.rs:777:5:777:17 | capture_phi(...) | | -| main.rs:777:5:777:17 | capture_phi(...) | main.rs:736:11:778:1 | { ... } | | -| main.rs:777:5:777:18 | ExprStmt | main.rs:777:5:777:15 | capture_phi | | +| main.rs:661:5:661:25 | print_i64(...) | main.rs:655:14:662:1 | { ... } | | +| main.rs:661:5:661:26 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | +| main.rs:661:15:661:15 | a | main.rs:661:15:661:24 | a.my_get() | | +| main.rs:661:15:661:24 | a.my_get() | main.rs:661:5:661:25 | print_i64(...) | | +| main.rs:664:1:671:1 | enter fn arrays | main.rs:665:5:665:26 | let ... = ... | | +| main.rs:664:1:671:1 | exit fn arrays (normal) | main.rs:664:1:671:1 | exit fn arrays | | +| main.rs:664:13:671:1 | { ... } | main.rs:664:1:671:1 | exit fn arrays (normal) | | +| main.rs:665:5:665:26 | let ... = ... | main.rs:665:18:665:18 | 1 | | +| main.rs:665:9:665:13 | mut a | main.rs:666:5:666:20 | ExprStmt | match | +| main.rs:665:13:665:13 | a | main.rs:665:9:665:13 | mut a | | +| main.rs:665:17:665:25 | [...] | main.rs:665:13:665:13 | a | | +| main.rs:665:18:665:18 | 1 | main.rs:665:21:665:21 | 2 | | +| main.rs:665:21:665:21 | 2 | main.rs:665:24:665:24 | 3 | | +| main.rs:665:24:665:24 | 3 | main.rs:665:17:665:25 | [...] | | +| main.rs:666:5:666:13 | print_i64 | main.rs:666:15:666:15 | a | | +| main.rs:666:5:666:19 | print_i64(...) | main.rs:667:5:667:13 | ExprStmt | | +| main.rs:666:5:666:20 | ExprStmt | main.rs:666:5:666:13 | print_i64 | | +| main.rs:666:15:666:15 | a | main.rs:666:17:666:17 | 0 | | +| main.rs:666:15:666:18 | a[0] | main.rs:666:5:666:19 | print_i64(...) | | +| main.rs:666:17:666:17 | 0 | main.rs:666:15:666:18 | a[0] | | +| main.rs:667:5:667:5 | a | main.rs:667:7:667:7 | 1 | | +| main.rs:667:5:667:8 | a[1] | main.rs:667:12:667:12 | 5 | | +| main.rs:667:5:667:12 | ... = ... | main.rs:668:5:668:20 | ExprStmt | | +| main.rs:667:5:667:13 | ExprStmt | main.rs:667:5:667:5 | a | | +| main.rs:667:7:667:7 | 1 | main.rs:667:5:667:8 | a[1] | | +| main.rs:667:12:667:12 | 5 | main.rs:667:5:667:12 | ... = ... | | +| main.rs:668:5:668:13 | print_i64 | main.rs:668:15:668:15 | a | | +| main.rs:668:5:668:19 | print_i64(...) | main.rs:669:5:669:18 | ExprStmt | | +| main.rs:668:5:668:20 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | +| main.rs:668:15:668:15 | a | main.rs:668:17:668:17 | 1 | | +| main.rs:668:15:668:18 | a[1] | main.rs:668:5:668:19 | print_i64(...) | | +| main.rs:668:17:668:17 | 1 | main.rs:668:15:668:18 | a[1] | | +| main.rs:669:5:669:5 | a | main.rs:669:10:669:10 | 4 | | +| main.rs:669:5:669:17 | ... = ... | main.rs:670:5:670:20 | ExprStmt | | +| main.rs:669:5:669:18 | ExprStmt | main.rs:669:5:669:5 | a | | +| main.rs:669:9:669:17 | [...] | main.rs:669:5:669:17 | ... = ... | | +| main.rs:669:10:669:10 | 4 | main.rs:669:13:669:13 | 5 | | +| main.rs:669:13:669:13 | 5 | main.rs:669:16:669:16 | 6 | | +| main.rs:669:16:669:16 | 6 | main.rs:669:9:669:17 | [...] | | +| main.rs:670:5:670:13 | print_i64 | main.rs:670:15:670:15 | a | | +| main.rs:670:5:670:19 | print_i64(...) | main.rs:664:13:671:1 | { ... } | | +| main.rs:670:5:670:20 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | +| main.rs:670:15:670:15 | a | main.rs:670:17:670:17 | 2 | | +| main.rs:670:15:670:18 | a[2] | main.rs:670:5:670:19 | print_i64(...) | | +| main.rs:670:17:670:17 | 2 | main.rs:670:15:670:18 | a[2] | | +| main.rs:673:1:680:1 | enter fn ref_arg | main.rs:674:5:674:15 | let ... = 16 | | +| main.rs:673:1:680:1 | exit fn ref_arg (normal) | main.rs:673:1:680:1 | exit fn ref_arg | | +| main.rs:673:14:680:1 | { ... } | main.rs:673:1:680:1 | exit fn ref_arg (normal) | | +| main.rs:674:5:674:15 | let ... = 16 | main.rs:674:13:674:14 | 16 | | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | | +| main.rs:674:9:674:9 | x | main.rs:675:5:675:22 | ExprStmt | match | +| main.rs:674:13:674:14 | 16 | main.rs:674:9:674:9 | x | | +| main.rs:675:5:675:17 | print_i64_ref | main.rs:675:20:675:20 | x | | +| main.rs:675:5:675:21 | print_i64_ref(...) | main.rs:676:5:676:17 | ExprStmt | | +| main.rs:675:5:675:22 | ExprStmt | main.rs:675:5:675:17 | print_i64_ref | | +| main.rs:675:19:675:20 | &x | main.rs:675:5:675:21 | print_i64_ref(...) | | +| main.rs:675:20:675:20 | x | main.rs:675:19:675:20 | &x | | +| main.rs:676:5:676:13 | print_i64 | main.rs:676:15:676:15 | x | | +| main.rs:676:5:676:16 | print_i64(...) | main.rs:678:5:678:15 | let ... = 17 | | +| main.rs:676:5:676:17 | ExprStmt | main.rs:676:5:676:13 | print_i64 | | +| main.rs:676:15:676:15 | x | main.rs:676:5:676:16 | print_i64(...) | | +| main.rs:678:5:678:15 | let ... = 17 | main.rs:678:13:678:14 | 17 | | +| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | | +| main.rs:678:9:678:9 | z | main.rs:679:5:679:22 | ExprStmt | match | +| main.rs:678:13:678:14 | 17 | main.rs:678:9:678:9 | z | | +| main.rs:679:5:679:17 | print_i64_ref | main.rs:679:20:679:20 | z | | +| main.rs:679:5:679:21 | print_i64_ref(...) | main.rs:673:14:680:1 | { ... } | | +| main.rs:679:5:679:22 | ExprStmt | main.rs:679:5:679:17 | print_i64_ref | | +| main.rs:679:19:679:20 | &z | main.rs:679:5:679:21 | print_i64_ref(...) | | +| main.rs:679:20:679:20 | z | main.rs:679:19:679:20 | &z | | +| main.rs:687:5:689:5 | enter fn bar | main.rs:687:17:687:20 | self | | +| main.rs:687:5:689:5 | exit fn bar (normal) | main.rs:687:5:689:5 | exit fn bar | | +| main.rs:687:12:687:20 | SelfParam | main.rs:688:9:688:36 | ExprStmt | | +| main.rs:687:17:687:20 | self | main.rs:687:12:687:20 | SelfParam | | +| main.rs:687:23:689:5 | { ... } | main.rs:687:5:689:5 | exit fn bar (normal) | | +| main.rs:688:9:688:13 | * ... | main.rs:688:33:688:33 | 3 | | +| main.rs:688:9:688:35 | ... = ... | main.rs:687:23:689:5 | { ... } | | +| main.rs:688:9:688:36 | ExprStmt | main.rs:688:10:688:13 | self | | +| main.rs:688:10:688:13 | self | main.rs:688:9:688:13 | * ... | | +| main.rs:688:17:688:35 | MyStruct {...} | main.rs:688:9:688:35 | ... = ... | | +| main.rs:688:33:688:33 | 3 | main.rs:688:17:688:35 | MyStruct {...} | | +| main.rs:692:1:698:1 | enter fn ref_methodcall_receiver | main.rs:693:5:693:36 | let ... = ... | | +| main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver | | +| main.rs:692:30:698:1 | { ... } | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:693:5:693:36 | let ... = ... | main.rs:693:33:693:33 | 1 | | +| main.rs:693:9:693:13 | mut a | main.rs:694:5:694:12 | ExprStmt | match | +| main.rs:693:13:693:13 | a | main.rs:693:9:693:13 | mut a | | +| main.rs:693:17:693:35 | MyStruct {...} | main.rs:693:13:693:13 | a | | +| main.rs:693:33:693:33 | 1 | main.rs:693:17:693:35 | MyStruct {...} | | +| main.rs:694:5:694:5 | a | main.rs:694:5:694:11 | a.bar() | | +| main.rs:694:5:694:11 | a.bar() | main.rs:697:5:697:21 | ExprStmt | | +| main.rs:694:5:694:12 | ExprStmt | main.rs:694:5:694:5 | a | | +| main.rs:697:5:697:13 | print_i64 | main.rs:697:15:697:15 | a | | +| main.rs:697:5:697:20 | print_i64(...) | main.rs:692:30:698:1 | { ... } | | +| main.rs:697:5:697:21 | ExprStmt | main.rs:697:5:697:13 | print_i64 | | +| main.rs:697:15:697:15 | a | main.rs:697:15:697:19 | a.val | | +| main.rs:697:15:697:19 | a.val | main.rs:697:5:697:20 | print_i64(...) | | +| main.rs:714:1:725:1 | enter fn macro_invocation | main.rs:715:5:716:26 | let ... = ... | | +| main.rs:714:1:725:1 | exit fn macro_invocation (normal) | main.rs:714:1:725:1 | exit fn macro_invocation | | +| main.rs:714:23:725:1 | { ... } | main.rs:714:1:725:1 | exit fn macro_invocation (normal) | | +| main.rs:715:5:716:26 | let ... = ... | main.rs:716:23:716:24 | let ... = 37 | | +| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | | +| main.rs:715:9:715:22 | var_from_macro | main.rs:717:5:717:30 | ExprStmt | match | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | match | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | { ... } | | +| main.rs:716:9:716:25 | MacroExpr | main.rs:715:9:715:22 | var_from_macro | | +| main.rs:716:9:716:25 | let_in_macro!... | main.rs:716:9:716:25 | MacroExpr | | +| main.rs:716:23:716:24 | 37 | main.rs:716:9:716:21 | var_in_macro | | +| main.rs:716:23:716:24 | let ... = 37 | main.rs:716:23:716:24 | 37 | | +| main.rs:716:23:716:24 | { ... } | main.rs:716:9:716:25 | let_in_macro!... | | +| main.rs:717:5:717:13 | print_i64 | main.rs:717:15:717:28 | var_from_macro | | +| main.rs:717:5:717:29 | print_i64(...) | main.rs:718:5:718:26 | let ... = 33 | | +| main.rs:717:5:717:30 | ExprStmt | main.rs:717:5:717:13 | print_i64 | | +| main.rs:717:15:717:28 | var_from_macro | main.rs:717:5:717:29 | print_i64(...) | | +| main.rs:718:5:718:26 | let ... = 33 | main.rs:718:24:718:25 | 33 | | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | | +| main.rs:718:9:718:20 | var_in_macro | main.rs:723:5:723:44 | ExprStmt | match | +| main.rs:718:24:718:25 | 33 | main.rs:718:9:718:20 | var_in_macro | | +| main.rs:723:5:723:13 | print_i64 | main.rs:723:15:723:28 | let ... = 0 | | +| main.rs:723:5:723:43 | print_i64(...) | main.rs:724:5:724:28 | ExprStmt | | +| main.rs:723:5:723:44 | ExprStmt | main.rs:723:5:723:13 | print_i64 | | +| main.rs:723:15:723:28 | 0 | main.rs:723:15:723:28 | var_in_macro | | +| main.rs:723:15:723:28 | let ... = 0 | main.rs:723:15:723:28 | 0 | | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | match | +| main.rs:723:15:723:42 | MacroExpr | main.rs:723:5:723:43 | print_i64(...) | | +| main.rs:723:15:723:42 | let_in_macro2!... | main.rs:723:15:723:42 | MacroExpr | | +| main.rs:723:30:723:41 | var_in_macro | main.rs:723:30:723:41 | { ... } | | +| main.rs:723:30:723:41 | { ... } | main.rs:723:15:723:42 | let_in_macro2!... | | +| main.rs:724:5:724:13 | print_i64 | main.rs:724:15:724:26 | var_in_macro | | +| main.rs:724:5:724:27 | print_i64(...) | main.rs:714:23:725:1 | { ... } | | +| main.rs:724:5:724:28 | ExprStmt | main.rs:724:5:724:13 | print_i64 | | +| main.rs:724:15:724:26 | var_in_macro | main.rs:724:5:724:27 | print_i64(...) | | +| main.rs:727:1:731:1 | enter fn let_without_initializer | main.rs:728:5:728:10 | let ... | | +| main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | main.rs:727:1:731:1 | exit fn let_without_initializer | | +| main.rs:727:30:731:1 | { ... } | main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | | +| main.rs:728:5:728:10 | let ... | main.rs:728:9:728:9 | x | | +| main.rs:728:9:728:9 | x | main.rs:728:9:728:9 | x | | +| main.rs:728:9:728:9 | x | main.rs:729:5:729:10 | ExprStmt | match | +| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | | +| main.rs:729:5:729:9 | ... = ... | main.rs:730:5:730:17 | ExprStmt | | +| main.rs:729:5:729:10 | ExprStmt | main.rs:729:5:729:5 | x | | +| main.rs:729:9:729:9 | 1 | main.rs:729:5:729:9 | ... = ... | | +| main.rs:730:5:730:13 | print_i64 | main.rs:730:15:730:15 | x | | +| main.rs:730:5:730:16 | print_i64(...) | main.rs:727:30:731:1 | { ... } | | +| main.rs:730:5:730:17 | ExprStmt | main.rs:730:5:730:13 | print_i64 | | +| main.rs:730:15:730:15 | x | main.rs:730:5:730:16 | print_i64(...) | | +| main.rs:733:1:743:1 | enter fn capture_phi | main.rs:734:5:734:20 | let ... = 100 | | +| main.rs:733:1:743:1 | exit fn capture_phi (normal) | main.rs:733:1:743:1 | exit fn capture_phi | | +| main.rs:733:18:743:1 | { ... } | main.rs:733:1:743:1 | exit fn capture_phi (normal) | | +| main.rs:734:5:734:20 | let ... = 100 | main.rs:734:17:734:19 | 100 | | +| main.rs:734:9:734:13 | mut x | main.rs:735:5:740:6 | let ... = ... | match | +| main.rs:734:13:734:13 | x | main.rs:734:9:734:13 | mut x | | +| main.rs:734:17:734:19 | 100 | main.rs:734:13:734:13 | x | | +| main.rs:735:5:740:6 | let ... = ... | main.rs:735:19:740:5 | \|...\| ... | | +| main.rs:735:9:735:15 | mut cap | main.rs:741:5:741:14 | ExprStmt | match | +| main.rs:735:13:735:15 | cap | main.rs:735:9:735:15 | mut cap | | +| main.rs:735:19:740:5 | \|...\| ... | main.rs:735:13:735:15 | cap | | +| main.rs:735:19:740:5 | enter \|...\| ... | main.rs:735:20:735:20 | b | | +| main.rs:735:19:740:5 | exit \|...\| ... (normal) | main.rs:735:19:740:5 | exit \|...\| ... | | +| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | | +| main.rs:735:20:735:20 | b | main.rs:735:20:735:26 | ...: bool | match | +| main.rs:735:20:735:26 | ...: bool | main.rs:736:9:739:10 | let _ = ... | | +| main.rs:735:29:740:5 | { ... } | main.rs:735:19:740:5 | exit \|...\| ... (normal) | | +| main.rs:736:9:739:10 | let _ = ... | main.rs:737:20:737:20 | b | | +| main.rs:737:13:737:13 | _ | main.rs:735:29:740:5 | { ... } | match | +| main.rs:737:17:739:9 | if b {...} | main.rs:737:13:737:13 | _ | | +| main.rs:737:20:737:20 | b | main.rs:737:17:739:9 | if b {...} | false | +| main.rs:737:20:737:20 | b | main.rs:738:13:738:20 | ExprStmt | true | +| main.rs:737:22:739:9 | { ... } | main.rs:737:17:739:9 | if b {...} | | +| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | | +| main.rs:738:13:738:19 | ... = ... | main.rs:737:22:739:9 | { ... } | | +| main.rs:738:13:738:20 | ExprStmt | main.rs:738:13:738:13 | x | | +| main.rs:738:17:738:19 | 200 | main.rs:738:13:738:19 | ... = ... | | +| main.rs:741:5:741:7 | cap | main.rs:741:9:741:12 | true | | +| main.rs:741:5:741:13 | cap(...) | main.rs:742:5:742:17 | ExprStmt | | +| main.rs:741:5:741:14 | ExprStmt | main.rs:741:5:741:7 | cap | | +| main.rs:741:9:741:12 | true | main.rs:741:5:741:13 | cap(...) | | +| main.rs:742:5:742:13 | print_i64 | main.rs:742:15:742:15 | x | | +| main.rs:742:5:742:16 | print_i64(...) | main.rs:733:18:743:1 | { ... } | | +| main.rs:742:5:742:17 | ExprStmt | main.rs:742:5:742:13 | print_i64 | | +| main.rs:742:15:742:15 | x | main.rs:742:5:742:16 | print_i64(...) | | +| main.rs:745:1:788:1 | enter fn main | main.rs:746:5:746:25 | ExprStmt | | +| main.rs:745:1:788:1 | exit fn main (normal) | main.rs:745:1:788:1 | exit fn main | | +| main.rs:745:11:788:1 | { ... } | main.rs:745:1:788:1 | exit fn main (normal) | | +| main.rs:746:5:746:22 | immutable_variable | main.rs:746:5:746:24 | immutable_variable(...) | | +| main.rs:746:5:746:24 | immutable_variable(...) | main.rs:747:5:747:23 | ExprStmt | | +| main.rs:746:5:746:25 | ExprStmt | main.rs:746:5:746:22 | immutable_variable | | +| main.rs:747:5:747:20 | mutable_variable | main.rs:747:5:747:22 | mutable_variable(...) | | +| main.rs:747:5:747:22 | mutable_variable(...) | main.rs:748:5:748:40 | ExprStmt | | +| main.rs:747:5:747:23 | ExprStmt | main.rs:747:5:747:20 | mutable_variable | | +| main.rs:748:5:748:37 | mutable_variable_immutable_borrow | main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | main.rs:749:5:749:23 | ExprStmt | | +| main.rs:748:5:748:40 | ExprStmt | main.rs:748:5:748:37 | mutable_variable_immutable_borrow | | +| main.rs:749:5:749:20 | variable_shadow1 | main.rs:749:5:749:22 | variable_shadow1(...) | | +| main.rs:749:5:749:22 | variable_shadow1(...) | main.rs:750:5:750:23 | ExprStmt | | +| main.rs:749:5:749:23 | ExprStmt | main.rs:749:5:749:20 | variable_shadow1 | | +| main.rs:750:5:750:20 | variable_shadow2 | main.rs:750:5:750:22 | variable_shadow2(...) | | +| main.rs:750:5:750:22 | variable_shadow2(...) | main.rs:751:5:751:19 | ExprStmt | | +| main.rs:750:5:750:23 | ExprStmt | main.rs:750:5:750:20 | variable_shadow2 | | +| main.rs:751:5:751:16 | let_pattern1 | main.rs:751:5:751:18 | let_pattern1(...) | | +| main.rs:751:5:751:18 | let_pattern1(...) | main.rs:752:5:752:19 | ExprStmt | | +| main.rs:751:5:751:19 | ExprStmt | main.rs:751:5:751:16 | let_pattern1 | | +| main.rs:752:5:752:16 | let_pattern2 | main.rs:752:5:752:18 | let_pattern2(...) | | +| main.rs:752:5:752:18 | let_pattern2(...) | main.rs:753:5:753:19 | ExprStmt | | +| main.rs:752:5:752:19 | ExprStmt | main.rs:752:5:752:16 | let_pattern2 | | +| main.rs:753:5:753:16 | let_pattern3 | main.rs:753:5:753:18 | let_pattern3(...) | | +| main.rs:753:5:753:18 | let_pattern3(...) | main.rs:754:5:754:19 | ExprStmt | | +| main.rs:753:5:753:19 | ExprStmt | main.rs:753:5:753:16 | let_pattern3 | | +| main.rs:754:5:754:16 | let_pattern4 | main.rs:754:5:754:18 | let_pattern4(...) | | +| main.rs:754:5:754:18 | let_pattern4(...) | main.rs:755:5:755:21 | ExprStmt | | +| main.rs:754:5:754:19 | ExprStmt | main.rs:754:5:754:16 | let_pattern4 | | +| main.rs:755:5:755:18 | match_pattern1 | main.rs:755:5:755:20 | match_pattern1(...) | | +| main.rs:755:5:755:20 | match_pattern1(...) | main.rs:756:5:756:21 | ExprStmt | | +| main.rs:755:5:755:21 | ExprStmt | main.rs:755:5:755:18 | match_pattern1 | | +| main.rs:756:5:756:18 | match_pattern2 | main.rs:756:5:756:20 | match_pattern2(...) | | +| main.rs:756:5:756:20 | match_pattern2(...) | main.rs:757:5:757:21 | ExprStmt | | +| main.rs:756:5:756:21 | ExprStmt | main.rs:756:5:756:18 | match_pattern2 | | +| main.rs:757:5:757:18 | match_pattern3 | main.rs:757:5:757:20 | match_pattern3(...) | | +| main.rs:757:5:757:20 | match_pattern3(...) | main.rs:758:5:758:21 | ExprStmt | | +| main.rs:757:5:757:21 | ExprStmt | main.rs:757:5:757:18 | match_pattern3 | | +| main.rs:758:5:758:18 | match_pattern4 | main.rs:758:5:758:20 | match_pattern4(...) | | +| main.rs:758:5:758:20 | match_pattern4(...) | main.rs:759:5:759:21 | ExprStmt | | +| main.rs:758:5:758:21 | ExprStmt | main.rs:758:5:758:18 | match_pattern4 | | +| main.rs:759:5:759:18 | match_pattern5 | main.rs:759:5:759:20 | match_pattern5(...) | | +| main.rs:759:5:759:20 | match_pattern5(...) | main.rs:760:5:760:21 | ExprStmt | | +| main.rs:759:5:759:21 | ExprStmt | main.rs:759:5:759:18 | match_pattern5 | | +| main.rs:760:5:760:18 | match_pattern6 | main.rs:760:5:760:20 | match_pattern6(...) | | +| main.rs:760:5:760:20 | match_pattern6(...) | main.rs:761:5:761:21 | ExprStmt | | +| main.rs:760:5:760:21 | ExprStmt | main.rs:760:5:760:18 | match_pattern6 | | +| main.rs:761:5:761:18 | match_pattern7 | main.rs:761:5:761:20 | match_pattern7(...) | | +| main.rs:761:5:761:20 | match_pattern7(...) | main.rs:762:5:762:21 | ExprStmt | | +| main.rs:761:5:761:21 | ExprStmt | main.rs:761:5:761:18 | match_pattern7 | | +| main.rs:762:5:762:18 | match_pattern8 | main.rs:762:5:762:20 | match_pattern8(...) | | +| main.rs:762:5:762:20 | match_pattern8(...) | main.rs:763:5:763:21 | ExprStmt | | +| main.rs:762:5:762:21 | ExprStmt | main.rs:762:5:762:18 | match_pattern8 | | +| main.rs:763:5:763:18 | match_pattern9 | main.rs:763:5:763:20 | match_pattern9(...) | | +| main.rs:763:5:763:20 | match_pattern9(...) | main.rs:764:5:764:22 | ExprStmt | | +| main.rs:763:5:763:21 | ExprStmt | main.rs:763:5:763:18 | match_pattern9 | | +| main.rs:764:5:764:19 | match_pattern10 | main.rs:764:5:764:21 | match_pattern10(...) | | +| main.rs:764:5:764:21 | match_pattern10(...) | main.rs:765:5:765:22 | ExprStmt | | +| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | match_pattern10 | | +| main.rs:765:5:765:19 | match_pattern11 | main.rs:765:5:765:21 | match_pattern11(...) | | +| main.rs:765:5:765:21 | match_pattern11(...) | main.rs:766:5:766:22 | ExprStmt | | +| main.rs:765:5:765:22 | ExprStmt | main.rs:765:5:765:19 | match_pattern11 | | +| main.rs:766:5:766:19 | match_pattern12 | main.rs:766:5:766:21 | match_pattern12(...) | | +| main.rs:766:5:766:21 | match_pattern12(...) | main.rs:767:5:767:22 | ExprStmt | | +| main.rs:766:5:766:22 | ExprStmt | main.rs:766:5:766:19 | match_pattern12 | | +| main.rs:767:5:767:19 | match_pattern13 | main.rs:767:5:767:21 | match_pattern13(...) | | +| main.rs:767:5:767:21 | match_pattern13(...) | main.rs:768:5:768:22 | ExprStmt | | +| main.rs:767:5:767:22 | ExprStmt | main.rs:767:5:767:19 | match_pattern13 | | +| main.rs:768:5:768:19 | match_pattern14 | main.rs:768:5:768:21 | match_pattern14(...) | | +| main.rs:768:5:768:21 | match_pattern14(...) | main.rs:769:5:769:22 | ExprStmt | | +| main.rs:768:5:768:22 | ExprStmt | main.rs:768:5:768:19 | match_pattern14 | | +| main.rs:769:5:769:19 | match_pattern15 | main.rs:769:5:769:21 | match_pattern15(...) | | +| main.rs:769:5:769:21 | match_pattern15(...) | main.rs:770:5:770:36 | ExprStmt | | +| main.rs:769:5:769:22 | ExprStmt | main.rs:769:5:769:19 | match_pattern15 | | +| main.rs:770:5:770:18 | param_pattern1 | main.rs:770:20:770:22 | "a" | | +| main.rs:770:5:770:35 | param_pattern1(...) | main.rs:771:5:771:37 | ExprStmt | | +| main.rs:770:5:770:36 | ExprStmt | main.rs:770:5:770:18 | param_pattern1 | | +| main.rs:770:20:770:22 | "a" | main.rs:770:26:770:28 | "b" | | +| main.rs:770:25:770:34 | TupleExpr | main.rs:770:5:770:35 | param_pattern1(...) | | +| main.rs:770:26:770:28 | "b" | main.rs:770:31:770:33 | "c" | | +| main.rs:770:31:770:33 | "c" | main.rs:770:25:770:34 | TupleExpr | | +| main.rs:771:5:771:18 | param_pattern2 | main.rs:771:20:771:31 | ...::Left | | +| main.rs:771:5:771:36 | param_pattern2(...) | main.rs:772:5:772:26 | ExprStmt | | +| main.rs:771:5:771:37 | ExprStmt | main.rs:771:5:771:18 | param_pattern2 | | +| main.rs:771:20:771:31 | ...::Left | main.rs:771:33:771:34 | 45 | | +| main.rs:771:20:771:35 | ...::Left(...) | main.rs:771:5:771:36 | param_pattern2(...) | | +| main.rs:771:33:771:34 | 45 | main.rs:771:20:771:35 | ...::Left(...) | | +| main.rs:772:5:772:23 | destruct_assignment | main.rs:772:5:772:25 | destruct_assignment(...) | | +| main.rs:772:5:772:25 | destruct_assignment(...) | main.rs:773:5:773:23 | ExprStmt | | +| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | destruct_assignment | | +| main.rs:773:5:773:20 | closure_variable | main.rs:773:5:773:22 | closure_variable(...) | | +| main.rs:773:5:773:22 | closure_variable(...) | main.rs:774:5:774:22 | ExprStmt | | +| main.rs:773:5:773:23 | ExprStmt | main.rs:773:5:773:20 | closure_variable | | +| main.rs:774:5:774:19 | nested_function | main.rs:774:5:774:21 | nested_function(...) | | +| main.rs:774:5:774:21 | nested_function(...) | main.rs:775:5:775:19 | ExprStmt | | +| main.rs:774:5:774:22 | ExprStmt | main.rs:774:5:774:19 | nested_function | | +| main.rs:775:5:775:16 | for_variable | main.rs:775:5:775:18 | for_variable(...) | | +| main.rs:775:5:775:18 | for_variable(...) | main.rs:776:5:776:17 | ExprStmt | | +| main.rs:775:5:775:19 | ExprStmt | main.rs:775:5:775:16 | for_variable | | +| main.rs:776:5:776:14 | add_assign | main.rs:776:5:776:16 | add_assign(...) | | +| main.rs:776:5:776:16 | add_assign(...) | main.rs:777:5:777:13 | ExprStmt | | +| main.rs:776:5:776:17 | ExprStmt | main.rs:776:5:776:14 | add_assign | | +| main.rs:777:5:777:10 | mutate | main.rs:777:5:777:12 | mutate(...) | | +| main.rs:777:5:777:12 | mutate(...) | main.rs:778:5:778:17 | ExprStmt | | +| main.rs:777:5:777:13 | ExprStmt | main.rs:777:5:777:10 | mutate | | +| main.rs:778:5:778:14 | mutate_arg | main.rs:778:5:778:16 | mutate_arg(...) | | +| main.rs:778:5:778:16 | mutate_arg(...) | main.rs:779:5:779:12 | ExprStmt | | +| main.rs:778:5:778:17 | ExprStmt | main.rs:778:5:778:14 | mutate_arg | | +| main.rs:779:5:779:9 | alias | main.rs:779:5:779:11 | alias(...) | | +| main.rs:779:5:779:11 | alias(...) | main.rs:780:5:780:18 | ExprStmt | | +| main.rs:779:5:779:12 | ExprStmt | main.rs:779:5:779:9 | alias | | +| main.rs:780:5:780:15 | capture_mut | main.rs:780:5:780:17 | capture_mut(...) | | +| main.rs:780:5:780:17 | capture_mut(...) | main.rs:781:5:781:20 | ExprStmt | | +| main.rs:780:5:780:18 | ExprStmt | main.rs:780:5:780:15 | capture_mut | | +| main.rs:781:5:781:17 | capture_immut | main.rs:781:5:781:19 | capture_immut(...) | | +| main.rs:781:5:781:19 | capture_immut(...) | main.rs:782:5:782:26 | ExprStmt | | +| main.rs:781:5:781:20 | ExprStmt | main.rs:781:5:781:17 | capture_immut | | +| main.rs:782:5:782:23 | async_block_capture | main.rs:782:5:782:25 | async_block_capture(...) | | +| main.rs:782:5:782:25 | async_block_capture(...) | main.rs:783:5:783:14 | ExprStmt | | +| main.rs:782:5:782:26 | ExprStmt | main.rs:782:5:782:23 | async_block_capture | | +| main.rs:783:5:783:11 | structs | main.rs:783:5:783:13 | structs(...) | | +| main.rs:783:5:783:13 | structs(...) | main.rs:784:5:784:14 | ExprStmt | | +| main.rs:783:5:783:14 | ExprStmt | main.rs:783:5:783:11 | structs | | +| main.rs:784:5:784:11 | ref_arg | main.rs:784:5:784:13 | ref_arg(...) | | +| main.rs:784:5:784:13 | ref_arg(...) | main.rs:785:5:785:30 | ExprStmt | | +| main.rs:784:5:784:14 | ExprStmt | main.rs:784:5:784:11 | ref_arg | | +| main.rs:785:5:785:27 | ref_methodcall_receiver | main.rs:785:5:785:29 | ref_methodcall_receiver(...) | | +| main.rs:785:5:785:29 | ref_methodcall_receiver(...) | main.rs:786:5:786:23 | ExprStmt | | +| main.rs:785:5:785:30 | ExprStmt | main.rs:785:5:785:27 | ref_methodcall_receiver | | +| main.rs:786:5:786:20 | macro_invocation | main.rs:786:5:786:22 | macro_invocation(...) | | +| main.rs:786:5:786:22 | macro_invocation(...) | main.rs:787:5:787:18 | ExprStmt | | +| main.rs:786:5:786:23 | ExprStmt | main.rs:786:5:786:20 | macro_invocation | | +| main.rs:787:5:787:15 | capture_phi | main.rs:787:5:787:17 | capture_phi(...) | | +| main.rs:787:5:787:17 | capture_phi(...) | main.rs:745:11:788:1 | { ... } | | +| main.rs:787:5:787:18 | ExprStmt | main.rs:787:5:787:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 342fd0df20b..89e1411259a 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -92,105 +92,107 @@ definition | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | | main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | -| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | -| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | -| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | -| main.rs:375:33:375:34 | a9 | main.rs:375:20:375:55 | a9 | -| main.rs:375:53:375:54 | a9 | main.rs:375:20:375:55 | a9 | -| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | -| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | -| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | -| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | -| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | -| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | -| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | -| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | -| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | -| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | -| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | -| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | -| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | -| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | -| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | -| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | -| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | -| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | -| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | -| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | -| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | -| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | -| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | -| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | -| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | -| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | -| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | -| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | -| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | -| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | -| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | -| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | -| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | -| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | -| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | -| main.rs:557:13:557:13 | y | main.rs:557:13:557:13 | y | -| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | -| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | -| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | -| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | -| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | -| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | -| main.rs:577:13:577:13 | i | main.rs:577:13:577:13 | i | -| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | -| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | -| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | -| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | -| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | -| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | -| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | -| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | -| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | -| main.rs:636:23:636:26 | self | main.rs:636:23:636:26 | self | -| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | -| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | -| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | -| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | -| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | +| main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | +| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | +| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | +| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | +| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | a9 | +| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | a9 | +| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | +| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | +| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | +| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | +| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | +| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | +| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | +| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | +| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | +| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | +| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | +| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | +| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | +| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | +| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | +| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | +| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | +| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | +| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | +| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | +| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | +| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | +| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | +| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | +| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | +| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | +| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | +| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | +| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | +| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | +| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | +| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | +| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | +| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | +| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | +| main.rs:566:13:566:13 | y | main.rs:566:13:566:13 | y | +| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | +| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | +| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | +| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | +| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | +| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | +| main.rs:586:13:586:13 | i | main.rs:586:13:586:13 | i | +| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | +| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | +| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | +| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | +| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | +| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | +| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | +| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | +| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | +| main.rs:645:23:645:26 | self | main.rs:645:23:645:26 | self | +| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | +| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | +| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | | main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | -| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | -| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | -| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | -| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | -| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | -| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | -| main.rs:725:13:725:13 | x | main.rs:725:13:725:13 | x | -| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | -| main.rs:726:19:731:5 | x | main.rs:725:13:725:13 | x | -| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | -| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | -| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | -| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | +| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | +| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | +| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | +| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | +| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | +| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | +| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | +| main.rs:734:13:734:13 | x | main.rs:734:13:734:13 | x | +| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | +| main.rs:735:19:740:5 | x | main.rs:734:13:734:13 | x | +| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | +| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | +| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -280,120 +282,123 @@ read | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:359:19:359:19 | x | | main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x | | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | -| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | main.rs:370:15:370:16 | a8 | -| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | main.rs:371:15:371:16 | b3 | -| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | main.rs:372:15:372:16 | c1 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:377:15:377:16 | a9 | -| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | -| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:395:9:395:11 | a10 | -| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | -| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:396:9:396:10 | b4 | -| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | -| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:397:9:397:10 | c2 | -| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | main.rs:401:15:401:16 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:414:15:414:16 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:413:15:413:17 | a10 | -| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | main.rs:408:23:408:25 | a10 | -| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | main.rs:409:23:409:24 | b4 | -| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | main.rs:422:9:422:23 | example_closure | -| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | main.rs:420:9:420:9 | x | -| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | main.rs:423:15:423:16 | n1 | -| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | main.rs:430:9:430:26 | immutable_variable | -| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | main.rs:428:9:428:9 | x | -| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | main.rs:431:15:431:16 | n2 | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:446:15:446:15 | f | -| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | main.rs:438:9:438:9 | x | -| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | main.rs:443:9:443:9 | x | -| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | main.rs:452:17:452:17 | x | -| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | main.rs:462:19:462:19 | f | -| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | main.rs:461:13:461:13 | x | -| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | -| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | main.rs:471:19:471:22 | text | -| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | main.rs:477:5:477:5 | a | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:479:11:479:11 | a | -| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | main.rs:480:15:480:15 | a | -| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | main.rs:486:14:486:14 | i | -| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | main.rs:487:6:487:10 | ref_i | -| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | main.rs:488:15:488:15 | i | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:493:10:493:10 | x | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:494:10:494:10 | x | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:495:12:495:12 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:500:10:500:10 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:501:10:501:10 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:503:9:503:9 | x | -| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | main.rs:502:6:502:6 | y | -| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | main.rs:509:27:509:27 | x | -| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | main.rs:510:6:510:6 | y | -| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | -| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:517:19:517:19 | x | -| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | main.rs:519:14:519:14 | z | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:522:7:522:7 | w | -| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | main.rs:525:15:525:15 | z | -| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | main.rs:531:14:531:14 | x | -| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | main.rs:532:6:532:6 | y | -| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | main.rs:533:15:533:15 | x | -| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | main.rs:544:15:544:15 | x | -| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | main.rs:543:5:543:7 | cap | -| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | main.rs:541:19:541:19 | x | -| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | main.rs:555:15:555:15 | x | -| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:12 | closure1 | -| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | main.rs:552:19:552:19 | x | -| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | main.rs:563:5:563:12 | closure2 | -| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | main.rs:564:15:564:15 | y | -| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | main.rs:573:15:573:15 | z | -| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | main.rs:572:5:572:12 | closure3 | -| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | main.rs:570:9:570:9 | z | -| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | main.rs:582:5:582:9 | block | -| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | main.rs:583:15:583:15 | i | -| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | main.rs:591:16:591:16 | b | -| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | -| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:589:15:589:15 | x | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:601:15:601:15 | x | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:595:19:595:19 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:599:19:599:19 | x | -| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | main.rs:607:16:607:17 | b1 | -| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | main.rs:615:16:615:17 | b2 | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:617:19:617:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:619:19:619:19 | x | -| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | main.rs:629:16:629:19 | self | -| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | main.rs:633:9:633:12 | self | -| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | -| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:642:9:642:9 | f | -| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | main.rs:639:13:639:16 | self | -| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | main.rs:639:25:639:25 | n | -| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | main.rs:648:15:648:15 | a | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:650:15:650:15 | a | -| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | main.rs:652:15:652:15 | a | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:367:20:367:20 | x | +| main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | +| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | +| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | +| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | +| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | +| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:404:9:404:11 | a10 | +| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | +| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:405:9:405:10 | b4 | +| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | +| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:406:9:406:10 | c2 | +| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:423:15:423:16 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:422:15:422:17 | a10 | +| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | +| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | +| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | +| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | +| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | +| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | +| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | +| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:455:15:455:15 | f | +| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | +| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | +| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | +| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | +| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | +| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | +| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | +| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:488:11:488:11 | a | +| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | +| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | +| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | +| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:504:12:504:12 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:512:9:512:9 | x | +| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | +| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | +| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | +| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | +| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:526:19:526:19 | x | +| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:531:7:531:7 | w | +| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | +| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | +| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | +| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | +| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | +| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | +| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | +| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | +| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | +| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | +| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | +| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | +| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | +| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | +| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | +| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | +| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | +| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | +| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:598:15:598:15 | x | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:604:19:604:19 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:608:19:608:19 | x | +| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | +| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | +| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | +| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | +| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | +| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:651:9:651:9 | f | +| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | +| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | | main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | | main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:667:15:667:15 | x | -| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | main.rs:670:20:670:20 | z | -| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | main.rs:679:10:679:13 | self | -| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | main.rs:685:5:685:5 | a | -| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | main.rs:688:15:688:15 | a | -| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | main.rs:708:15:708:28 | var_from_macro | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | main.rs:715:15:715:26 | var_in_macro | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | -| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | main.rs:721:15:721:15 | x | -| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | main.rs:732:5:732:7 | cap | -| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | main.rs:728:20:728:20 | b | -| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | main.rs:733:15:733:15 | x | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:668:15:668:15 | a | +| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:676:15:676:15 | x | +| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | +| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | +| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | +| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | +| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | +| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | +| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | +| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | +| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -466,95 +471,97 @@ firstRead | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | | main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x | | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | -| main.rs:364:5:364:6 | a8 | main.rs:364:5:364:6 | a8 | main.rs:370:15:370:16 | a8 | -| main.rs:366:9:366:10 | b3 | main.rs:366:9:366:10 | b3 | main.rs:371:15:371:16 | b3 | -| main.rs:367:9:367:10 | c1 | main.rs:367:9:367:10 | c1 | main.rs:372:15:372:16 | c1 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:377:15:377:16 | a9 | -| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | -| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | -| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | -| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | main.rs:401:15:401:16 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | -| main.rs:405:13:405:15 | a10 | main.rs:405:13:405:15 | a10 | main.rs:408:23:408:25 | a10 | -| main.rs:406:13:406:14 | b4 | main.rs:406:13:406:14 | b4 | main.rs:409:23:409:24 | b4 | -| main.rs:418:9:418:23 | example_closure | main.rs:418:9:418:23 | example_closure | main.rs:422:9:422:23 | example_closure | -| main.rs:419:10:419:10 | x | main.rs:419:10:419:10 | x | main.rs:420:9:420:9 | x | -| main.rs:421:9:421:10 | n1 | main.rs:421:9:421:10 | n1 | main.rs:423:15:423:16 | n1 | -| main.rs:426:9:426:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | main.rs:430:9:430:26 | immutable_variable | -| main.rs:427:6:427:6 | x | main.rs:427:6:427:6 | x | main.rs:428:9:428:9 | x | -| main.rs:429:9:429:10 | n2 | main.rs:429:9:429:10 | n2 | main.rs:431:15:431:16 | n2 | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | -| main.rs:437:10:437:10 | x | main.rs:437:10:437:10 | x | main.rs:438:9:438:9 | x | -| main.rs:441:10:441:10 | x | main.rs:441:10:441:10 | x | main.rs:443:9:443:9 | x | -| main.rs:450:14:450:14 | x | main.rs:450:14:450:14 | x | main.rs:452:17:452:17 | x | -| main.rs:459:13:459:13 | f | main.rs:459:13:459:13 | f | main.rs:462:19:462:19 | f | -| main.rs:460:14:460:14 | x | main.rs:460:14:460:14 | x | main.rs:461:13:461:13 | x | -| main.rs:467:9:467:9 | v | main.rs:467:9:467:9 | v | main.rs:470:12:470:12 | v | -| main.rs:469:9:469:12 | text | main.rs:469:9:469:12 | text | main.rs:471:19:471:22 | text | -| main.rs:476:13:476:13 | a | main.rs:476:13:476:13 | a | main.rs:477:5:477:5 | a | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | -| main.rs:479:6:479:11 | &mut a | main.rs:476:13:476:13 | a | main.rs:480:15:480:15 | a | -| main.rs:484:13:484:13 | i | main.rs:484:13:484:13 | i | main.rs:486:14:486:14 | i | -| main.rs:485:9:485:13 | ref_i | main.rs:485:9:485:13 | ref_i | main.rs:487:6:487:10 | ref_i | -| main.rs:486:9:486:14 | &mut i | main.rs:484:13:484:13 | i | main.rs:488:15:488:15 | i | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | -| main.rs:498:38:498:38 | y | main.rs:498:38:498:38 | y | main.rs:502:6:502:6 | y | -| main.rs:507:13:507:13 | x | main.rs:507:13:507:13 | x | main.rs:509:27:509:27 | x | -| main.rs:508:9:508:9 | y | main.rs:508:9:508:9 | y | main.rs:510:6:510:6 | y | -| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | -| main.rs:515:13:515:13 | z | main.rs:515:13:515:13 | z | main.rs:519:14:519:14 | z | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | -| main.rs:519:9:519:14 | &mut z | main.rs:515:13:515:13 | z | main.rs:525:15:525:15 | z | -| main.rs:529:13:529:13 | x | main.rs:529:13:529:13 | x | main.rs:531:14:531:14 | x | -| main.rs:530:9:530:9 | y | main.rs:530:9:530:9 | y | main.rs:532:6:532:6 | y | -| main.rs:531:9:531:14 | &mut x | main.rs:529:13:529:13 | x | main.rs:533:15:533:15 | x | -| main.rs:537:9:537:9 | x | main.rs:537:9:537:9 | x | main.rs:544:15:544:15 | x | -| main.rs:540:9:540:11 | cap | main.rs:540:9:540:11 | cap | main.rs:543:5:543:7 | cap | -| main.rs:540:15:542:5 | x | main.rs:537:9:537:9 | x | main.rs:541:19:541:19 | x | -| main.rs:548:13:548:13 | x | main.rs:548:13:548:13 | x | main.rs:555:15:555:15 | x | -| main.rs:551:9:551:16 | closure1 | main.rs:551:9:551:16 | closure1 | main.rs:554:5:554:12 | closure1 | -| main.rs:551:20:553:5 | x | main.rs:548:13:548:13 | x | main.rs:552:19:552:19 | x | -| main.rs:560:13:560:20 | closure2 | main.rs:560:13:560:20 | closure2 | main.rs:563:5:563:12 | closure2 | -| main.rs:563:5:563:14 | y | main.rs:557:13:557:13 | y | main.rs:564:15:564:15 | y | -| main.rs:566:13:566:13 | z | main.rs:566:13:566:13 | z | main.rs:573:15:573:15 | z | -| main.rs:569:13:569:20 | closure3 | main.rs:569:13:569:20 | closure3 | main.rs:572:5:572:12 | closure3 | -| main.rs:569:24:571:5 | z | main.rs:566:13:566:13 | z | main.rs:570:9:570:9 | z | -| main.rs:578:9:578:13 | block | main.rs:578:9:578:13 | block | main.rs:582:5:582:9 | block | -| main.rs:582:5:582:15 | i | main.rs:577:13:577:13 | i | main.rs:583:15:583:15 | i | -| main.rs:586:8:586:8 | b | main.rs:586:8:586:8 | b | main.rs:591:16:591:16 | b | -| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:601:15:601:15 | x | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | -| main.rs:604:13:604:14 | b1 | main.rs:604:13:604:14 | b1 | main.rs:607:16:607:17 | b1 | -| main.rs:604:23:604:24 | b2 | main.rs:604:23:604:24 | b2 | main.rs:615:16:615:17 | b2 | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | -| main.rs:628:20:628:23 | self | main.rs:628:20:628:23 | self | main.rs:629:16:629:19 | self | -| main.rs:632:11:632:14 | self | main.rs:632:11:632:14 | self | main.rs:633:9:633:12 | self | -| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | -| main.rs:637:21:640:9 | self | main.rs:636:23:636:26 | self | main.rs:639:13:639:16 | self | -| main.rs:637:22:637:22 | n | main.rs:637:22:637:22 | n | main.rs:639:25:639:25 | n | -| main.rs:647:13:647:13 | a | main.rs:647:13:647:13 | a | main.rs:648:15:648:15 | a | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | -| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | main.rs:652:15:652:15 | a | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | +| main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | +| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | +| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | +| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | +| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | +| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | +| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | +| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | +| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | +| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | +| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | +| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | +| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | +| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | +| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | +| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | +| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | +| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | +| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | +| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | +| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | +| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | +| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | +| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | +| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | +| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | +| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | +| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | +| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | +| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | +| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | +| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | +| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | +| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | +| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | +| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | +| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | +| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | +| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | +| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | +| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | +| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | +| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | +| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | +| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | +| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | +| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | +| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | +| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | +| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | +| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | +| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | +| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | +| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | +| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | +| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | +| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | +| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | | main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | | main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | -| main.rs:669:9:669:9 | z | main.rs:669:9:669:9 | z | main.rs:670:20:670:20 | z | -| main.rs:678:17:678:20 | self | main.rs:678:17:678:20 | self | main.rs:679:10:679:13 | self | -| main.rs:684:13:684:13 | a | main.rs:684:13:684:13 | a | main.rs:685:5:685:5 | a | -| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | main.rs:688:15:688:15 | a | -| main.rs:706:9:706:22 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | main.rs:708:15:708:28 | var_from_macro | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | main.rs:715:15:715:26 | var_in_macro | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | main.rs:714:30:714:41 | var_in_macro | -| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | main.rs:721:15:721:15 | x | -| main.rs:726:13:726:15 | cap | main.rs:726:13:726:15 | cap | main.rs:732:5:732:7 | cap | -| main.rs:726:20:726:20 | b | main.rs:726:20:726:20 | b | main.rs:728:20:728:20 | b | -| main.rs:732:5:732:13 | x | main.rs:725:13:725:13 | x | main.rs:733:15:733:15 | x | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | +| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | +| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | +| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | +| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | +| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | +| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | +| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | +| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | +| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | +| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -574,33 +581,34 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:382:13:382:15 | a10 | main.rs:382:13:382:15 | a10 | main.rs:386:15:386:17 | a10 | main.rs:395:9:395:11 | a10 | -| main.rs:383:13:383:14 | b4 | main.rs:383:13:383:14 | b4 | main.rs:387:15:387:16 | b4 | main.rs:396:9:396:10 | b4 | -| main.rs:384:13:384:14 | c2 | main.rs:384:13:384:14 | c2 | main.rs:388:15:388:16 | c2 | main.rs:397:9:397:10 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | main.rs:400:15:400:16 | b4 | main.rs:414:15:414:16 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | main.rs:399:15:399:17 | a10 | main.rs:413:15:413:17 | a10 | -| main.rs:436:9:436:9 | f | main.rs:436:9:436:9 | f | main.rs:439:15:439:15 | f | main.rs:446:15:446:15 | f | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | main.rs:478:15:478:15 | a | main.rs:479:11:479:11 | a | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:492:6:492:6 | x | main.rs:493:10:493:10 | x | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:493:10:493:10 | x | main.rs:494:10:494:10 | x | -| main.rs:491:17:491:17 | x | main.rs:491:17:491:17 | x | main.rs:494:10:494:10 | x | main.rs:495:12:495:12 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:499:6:499:6 | x | main.rs:500:10:500:10 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:500:10:500:10 | x | main.rs:501:10:501:10 | x | -| main.rs:498:22:498:22 | x | main.rs:498:22:498:22 | x | main.rs:501:10:501:10 | x | main.rs:503:9:503:9 | x | -| main.rs:509:22:509:27 | &mut x | main.rs:507:13:507:13 | x | main.rs:513:15:513:15 | x | main.rs:517:19:517:19 | x | -| main.rs:516:9:516:9 | w | main.rs:516:9:516:9 | w | main.rs:520:9:520:9 | w | main.rs:522:7:522:7 | w | -| main.rs:587:13:587:13 | x | main.rs:587:13:587:13 | x | main.rs:588:15:588:15 | x | main.rs:589:15:589:15 | x | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | main.rs:594:19:594:19 | x | main.rs:595:19:595:19 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | main.rs:598:19:598:19 | x | main.rs:599:19:599:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | main.rs:617:19:617:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:609:19:609:19 | x | main.rs:619:19:619:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | main.rs:617:19:617:19 | x | -| main.rs:605:9:605:9 | x | main.rs:605:9:605:9 | x | main.rs:611:19:611:19 | x | main.rs:619:19:619:19 | x | -| main.rs:637:17:637:17 | f | main.rs:637:17:637:17 | f | main.rs:641:9:641:9 | f | main.rs:642:9:642:9 | f | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | main.rs:649:5:649:5 | a | main.rs:650:15:650:15 | a | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | main.rs:658:5:658:5 | a | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | -| main.rs:665:9:665:9 | x | main.rs:665:9:665:9 | x | main.rs:666:20:666:20 | x | main.rs:667:15:667:15 | x | +| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | main.rs:367:20:367:20 | x | +| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | +| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | +| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | main.rs:423:15:423:16 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | main.rs:422:15:422:17 | a10 | +| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | main.rs:455:15:455:15 | f | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | main.rs:488:11:488:11 | a | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | main.rs:502:10:502:10 | x | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | main.rs:503:10:503:10 | x | +| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | main.rs:504:12:504:12 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | main.rs:509:10:509:10 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | main.rs:510:10:510:10 | x | +| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | main.rs:512:9:512:9 | x | +| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | main.rs:526:19:526:19 | x | +| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | main.rs:531:7:531:7 | w | +| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | main.rs:598:15:598:15 | x | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | main.rs:604:19:604:19 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | main.rs:608:19:608:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:626:19:626:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:628:19:628:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:626:19:626:19 | x | +| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:628:19:628:19 | x | +| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | main.rs:651:9:651:9 | f | +| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | main.rs:667:5:667:5 | a | +| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | main.rs:668:15:668:15 | a | +| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | main.rs:676:15:676:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -624,24 +632,24 @@ phi | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:375:33:375:34 | a9 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:20:375:55 | a9 | main.rs:375:53:375:54 | a9 | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:593:9:593:9 | x | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:587:13:587:13 | x | main.rs:597:9:597:9 | x | -| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | main.rs:726:19:731:5 | x | -| main.rs:728:17:730:9 | SSA phi(x) | main.rs:725:13:725:13 | x | main.rs:729:13:729:13 | x | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:33:384:34 | a9 | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:53:384:54 | a9 | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:602:9:602:9 | x | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:606:9:606:9 | x | +| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:735:19:740:5 | x | +| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:738:13:738:13 | x | phiReadNode | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | -| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | +| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | phiReadNodeFirstRead | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | -| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | main.rs:617:19:617:19 | x | -| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:605:9:605:9 | x | main.rs:619:19:619:19 | x | +| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | +| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | phiReadInput | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | -| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:609:19:609:19 | SSA read(x) | -| main.rs:607:13:612:5 | SSA phi read(x) | main.rs:611:19:611:19 | SSA read(x) | +| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:618:19:618:19 | SSA read(x) | +| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:620:19:620:19 | SSA read(x) | ultimateDef | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | @@ -668,12 +676,12 @@ ultimateDef | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:33:375:34 | a9 | -| main.rs:375:20:375:55 | SSA phi(a9) | main.rs:375:53:375:54 | a9 | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:593:9:593:9 | x | -| main.rs:591:13:600:5 | SSA phi(x) | main.rs:597:9:597:9 | x | -| main.rs:728:17:730:9 | SSA phi(x) | main.rs:726:19:731:5 | x | -| main.rs:728:17:730:9 | SSA phi(x) | main.rs:729:13:729:13 | x | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:33:384:34 | a9 | +| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:53:384:54 | a9 | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:602:9:602:9 | x | +| main.rs:600:13:609:5 | SSA phi(x) | main.rs:606:9:606:9 | x | +| main.rs:737:17:739:9 | SSA phi(x) | main.rs:735:19:740:5 | x | +| main.rs:737:17:739:9 | SSA phi(x) | main.rs:738:13:738:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -708,51 +716,52 @@ assigns | main.rs:334:9:334:9 | x | main.rs:334:13:334:20 | Some(...) | | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | -| main.rs:418:9:418:23 | example_closure | main.rs:419:9:420:9 | \|...\| x | -| main.rs:421:9:421:10 | n1 | main.rs:422:9:422:26 | example_closure(...) | -| main.rs:426:9:426:26 | immutable_variable | main.rs:427:5:428:9 | \|...\| x | -| main.rs:429:9:429:10 | n2 | main.rs:430:9:430:29 | immutable_variable(...) | -| main.rs:436:9:436:9 | f | main.rs:437:9:438:9 | \|...\| x | -| main.rs:459:13:459:13 | f | main.rs:460:13:461:13 | \|...\| x | -| main.rs:467:9:467:9 | v | main.rs:467:13:467:41 | &... | -| main.rs:476:13:476:13 | a | main.rs:476:17:476:17 | 0 | -| main.rs:484:13:484:13 | i | main.rs:484:17:484:17 | 1 | -| main.rs:485:9:485:13 | ref_i | main.rs:486:9:486:14 | &mut i | -| main.rs:507:13:507:13 | x | main.rs:507:17:507:17 | 2 | -| main.rs:508:9:508:9 | y | main.rs:509:9:509:28 | mutate_param(...) | -| main.rs:515:13:515:13 | z | main.rs:515:17:515:17 | 4 | -| main.rs:516:9:516:9 | w | main.rs:517:9:517:19 | &mut ... | -| main.rs:529:13:529:13 | x | main.rs:529:17:529:17 | 1 | -| main.rs:530:9:530:9 | y | main.rs:531:9:531:14 | &mut x | -| main.rs:537:9:537:9 | x | main.rs:537:13:537:15 | 100 | -| main.rs:540:9:540:11 | cap | main.rs:540:15:542:5 | \|...\| ... | -| main.rs:548:13:548:13 | x | main.rs:548:17:548:17 | 1 | -| main.rs:551:9:551:16 | closure1 | main.rs:551:20:553:5 | \|...\| ... | -| main.rs:557:13:557:13 | y | main.rs:557:17:557:17 | 2 | -| main.rs:560:13:560:20 | closure2 | main.rs:560:24:562:5 | \|...\| ... | -| main.rs:561:9:561:9 | y | main.rs:561:13:561:13 | 3 | -| main.rs:566:13:566:13 | z | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure3 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:577:13:577:13 | i | main.rs:577:22:577:22 | 0 | -| main.rs:578:9:578:13 | block | main.rs:578:17:580:5 | { ... } | -| main.rs:579:9:579:9 | i | main.rs:579:13:579:13 | 1 | -| main.rs:587:13:587:13 | x | main.rs:587:17:587:17 | 1 | -| main.rs:593:9:593:9 | x | main.rs:593:13:593:13 | 2 | -| main.rs:597:9:597:9 | x | main.rs:597:13:597:13 | 3 | -| main.rs:605:9:605:9 | x | main.rs:605:13:605:13 | 1 | -| main.rs:637:17:637:17 | f | main.rs:637:21:640:9 | \|...\| ... | -| main.rs:647:13:647:13 | a | main.rs:647:17:647:35 | MyStruct {...} | -| main.rs:651:5:651:5 | a | main.rs:651:9:651:27 | MyStruct {...} | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:25 | [...] | -| main.rs:660:5:660:5 | a | main.rs:660:9:660:17 | [...] | -| main.rs:665:9:665:9 | x | main.rs:665:13:665:14 | 16 | -| main.rs:669:9:669:9 | z | main.rs:669:13:669:14 | 17 | -| main.rs:684:13:684:13 | a | main.rs:684:17:684:35 | MyStruct {...} | -| main.rs:706:9:706:22 | var_from_macro | main.rs:707:9:707:25 | MacroExpr | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | 37 | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:24:709:25 | 33 | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | 0 | -| main.rs:720:5:720:5 | x | main.rs:720:9:720:9 | 1 | -| main.rs:725:13:725:13 | x | main.rs:725:17:725:19 | 100 | -| main.rs:726:13:726:15 | cap | main.rs:726:19:731:5 | \|...\| ... | -| main.rs:729:13:729:13 | x | main.rs:729:17:729:19 | 200 | +| main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | +| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | +| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | +| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | +| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | +| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | +| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | +| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | +| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | +| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | +| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | +| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | +| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | +| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | +| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | +| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | +| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | +| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | +| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | +| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | +| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | +| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | +| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | +| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | +| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | +| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | +| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | +| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | +| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | +| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | +| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | +| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | +| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | +| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | +| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | +| main.rs:660:5:660:5 | a | main.rs:660:9:660:27 | MyStruct {...} | +| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | +| main.rs:669:5:669:5 | a | main.rs:669:9:669:17 | [...] | +| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | +| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | +| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | +| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | +| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | +| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | +| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | +| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 948d9134be3..855eabbe3f6 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -360,6 +360,15 @@ fn match_pattern14() { } } +fn match_pattern15() { + let x = Some(0); // x1 + match x { // $ read_access=x1 + Some(x) // x2 + => x, // $ read_access=x2 $ SPURIOUS: read_access=x1 + _ => 0 + }; +} + fn param_pattern1( a8: &str, // a8 ( @@ -757,6 +766,7 @@ fn main() { match_pattern12(); match_pattern13(); match_pattern14(); + match_pattern15(); param_pattern1("a", ("b", "c")); param_pattern2(Either::Left(45)); destruct_assignment(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index d2194a59cad..b033fd00f79 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -68,75 +68,77 @@ variable | main.rs:348:9:348:9 | x | | main.rs:349:16:349:16 | x | | main.rs:354:20:354:20 | x | -| main.rs:364:5:364:6 | a8 | -| main.rs:366:9:366:10 | b3 | -| main.rs:367:9:367:10 | c1 | -| main.rs:375:20:375:55 | a9 | -| main.rs:382:13:382:15 | a10 | -| main.rs:383:13:383:14 | b4 | -| main.rs:384:13:384:14 | c2 | -| main.rs:405:13:405:15 | a10 | -| main.rs:406:13:406:14 | b4 | -| main.rs:418:9:418:23 | example_closure | -| main.rs:419:10:419:10 | x | -| main.rs:421:9:421:10 | n1 | -| main.rs:426:9:426:26 | immutable_variable | -| main.rs:427:6:427:6 | x | -| main.rs:429:9:429:10 | n2 | -| main.rs:436:9:436:9 | f | -| main.rs:437:10:437:10 | x | -| main.rs:441:10:441:10 | x | -| main.rs:450:14:450:14 | x | -| main.rs:459:13:459:13 | f | -| main.rs:460:14:460:14 | x | -| main.rs:467:9:467:9 | v | -| main.rs:469:9:469:12 | text | -| main.rs:476:13:476:13 | a | -| main.rs:484:13:484:13 | i | -| main.rs:485:9:485:13 | ref_i | -| main.rs:491:17:491:17 | x | -| main.rs:498:22:498:22 | x | -| main.rs:498:38:498:38 | y | -| main.rs:507:13:507:13 | x | -| main.rs:508:9:508:9 | y | -| main.rs:515:13:515:13 | z | -| main.rs:516:9:516:9 | w | -| main.rs:529:13:529:13 | x | -| main.rs:530:9:530:9 | y | -| main.rs:537:9:537:9 | x | -| main.rs:540:9:540:11 | cap | -| main.rs:548:13:548:13 | x | -| main.rs:551:9:551:16 | closure1 | -| main.rs:557:13:557:13 | y | -| main.rs:560:13:560:20 | closure2 | -| main.rs:566:13:566:13 | z | -| main.rs:569:13:569:20 | closure3 | -| main.rs:577:13:577:13 | i | -| main.rs:578:9:578:13 | block | -| main.rs:586:8:586:8 | b | -| main.rs:587:13:587:13 | x | -| main.rs:604:13:604:14 | b1 | -| main.rs:604:23:604:24 | b2 | -| main.rs:605:9:605:9 | x | -| main.rs:628:20:628:23 | self | -| main.rs:632:11:632:14 | self | -| main.rs:636:23:636:26 | self | -| main.rs:637:17:637:17 | f | -| main.rs:637:22:637:22 | n | -| main.rs:647:13:647:13 | a | +| main.rs:364:9:364:9 | x | +| main.rs:366:18:366:18 | x | +| main.rs:373:5:373:6 | a8 | +| main.rs:375:9:375:10 | b3 | +| main.rs:376:9:376:10 | c1 | +| main.rs:384:20:384:55 | a9 | +| main.rs:391:13:391:15 | a10 | +| main.rs:392:13:392:14 | b4 | +| main.rs:393:13:393:14 | c2 | +| main.rs:414:13:414:15 | a10 | +| main.rs:415:13:415:14 | b4 | +| main.rs:427:9:427:23 | example_closure | +| main.rs:428:10:428:10 | x | +| main.rs:430:9:430:10 | n1 | +| main.rs:435:9:435:26 | immutable_variable | +| main.rs:436:6:436:6 | x | +| main.rs:438:9:438:10 | n2 | +| main.rs:445:9:445:9 | f | +| main.rs:446:10:446:10 | x | +| main.rs:450:10:450:10 | x | +| main.rs:459:14:459:14 | x | +| main.rs:468:13:468:13 | f | +| main.rs:469:14:469:14 | x | +| main.rs:476:9:476:9 | v | +| main.rs:478:9:478:12 | text | +| main.rs:485:13:485:13 | a | +| main.rs:493:13:493:13 | i | +| main.rs:494:9:494:13 | ref_i | +| main.rs:500:17:500:17 | x | +| main.rs:507:22:507:22 | x | +| main.rs:507:38:507:38 | y | +| main.rs:516:13:516:13 | x | +| main.rs:517:9:517:9 | y | +| main.rs:524:13:524:13 | z | +| main.rs:525:9:525:9 | w | +| main.rs:538:13:538:13 | x | +| main.rs:539:9:539:9 | y | +| main.rs:546:9:546:9 | x | +| main.rs:549:9:549:11 | cap | +| main.rs:557:13:557:13 | x | +| main.rs:560:9:560:16 | closure1 | +| main.rs:566:13:566:13 | y | +| main.rs:569:13:569:20 | closure2 | +| main.rs:575:13:575:13 | z | +| main.rs:578:13:578:20 | closure3 | +| main.rs:586:13:586:13 | i | +| main.rs:587:9:587:13 | block | +| main.rs:595:8:595:8 | b | +| main.rs:596:13:596:13 | x | +| main.rs:613:13:613:14 | b1 | +| main.rs:613:23:613:24 | b2 | +| main.rs:614:9:614:9 | x | +| main.rs:637:20:637:23 | self | +| main.rs:641:11:641:14 | self | +| main.rs:645:23:645:26 | self | +| main.rs:646:17:646:17 | f | +| main.rs:646:22:646:22 | n | | main.rs:656:13:656:13 | a | -| main.rs:665:9:665:9 | x | -| main.rs:669:9:669:9 | z | -| main.rs:678:17:678:20 | self | -| main.rs:684:13:684:13 | a | -| main.rs:706:9:706:22 | var_from_macro | -| main.rs:707:9:707:21 | var_in_macro | -| main.rs:709:9:709:20 | var_in_macro | -| main.rs:714:15:714:28 | var_in_macro | -| main.rs:719:9:719:9 | x | -| main.rs:725:13:725:13 | x | -| main.rs:726:13:726:15 | cap | -| main.rs:726:20:726:20 | b | +| main.rs:665:13:665:13 | a | +| main.rs:674:9:674:9 | x | +| main.rs:678:9:678:9 | z | +| main.rs:687:17:687:20 | self | +| main.rs:693:13:693:13 | a | +| main.rs:715:9:715:22 | var_from_macro | +| main.rs:716:9:716:21 | var_in_macro | +| main.rs:718:9:718:20 | var_in_macro | +| main.rs:723:15:723:28 | var_in_macro | +| main.rs:728:9:728:9 | x | +| main.rs:734:13:734:13 | x | +| main.rs:735:13:735:15 | cap | +| main.rs:735:20:735:20 | b | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -229,146 +231,149 @@ variableAccess | main.rs:355:7:355:7 | x | main.rs:348:9:348:9 | x | | main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | -| main.rs:370:15:370:16 | a8 | main.rs:364:5:364:6 | a8 | -| main.rs:371:15:371:16 | b3 | main.rs:366:9:366:10 | b3 | -| main.rs:372:15:372:16 | c1 | main.rs:367:9:367:10 | c1 | -| main.rs:377:15:377:16 | a9 | main.rs:375:20:375:55 | a9 | -| main.rs:386:15:386:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:387:15:387:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:388:15:388:16 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:395:9:395:11 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:396:9:396:10 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:397:9:397:10 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:399:15:399:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:400:15:400:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:401:15:401:16 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:408:23:408:25 | a10 | main.rs:405:13:405:15 | a10 | -| main.rs:409:23:409:24 | b4 | main.rs:406:13:406:14 | b4 | -| main.rs:413:15:413:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:414:15:414:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:420:9:420:9 | x | main.rs:419:10:419:10 | x | -| main.rs:422:9:422:23 | example_closure | main.rs:418:9:418:23 | example_closure | -| main.rs:423:15:423:16 | n1 | main.rs:421:9:421:10 | n1 | -| main.rs:428:9:428:9 | x | main.rs:427:6:427:6 | x | -| main.rs:430:9:430:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | -| main.rs:431:15:431:16 | n2 | main.rs:429:9:429:10 | n2 | -| main.rs:438:9:438:9 | x | main.rs:437:10:437:10 | x | -| main.rs:439:15:439:15 | f | main.rs:436:9:436:9 | f | -| main.rs:443:9:443:9 | x | main.rs:441:10:441:10 | x | -| main.rs:446:15:446:15 | f | main.rs:436:9:436:9 | f | -| main.rs:452:17:452:17 | x | main.rs:450:14:450:14 | x | -| main.rs:461:13:461:13 | x | main.rs:460:14:460:14 | x | -| main.rs:462:19:462:19 | f | main.rs:459:13:459:13 | f | -| main.rs:470:12:470:12 | v | main.rs:467:9:467:9 | v | -| main.rs:471:19:471:22 | text | main.rs:469:9:469:12 | text | -| main.rs:477:5:477:5 | a | main.rs:476:13:476:13 | a | -| main.rs:478:15:478:15 | a | main.rs:476:13:476:13 | a | -| main.rs:479:11:479:11 | a | main.rs:476:13:476:13 | a | -| main.rs:480:15:480:15 | a | main.rs:476:13:476:13 | a | -| main.rs:486:14:486:14 | i | main.rs:484:13:484:13 | i | -| main.rs:487:6:487:10 | ref_i | main.rs:485:9:485:13 | ref_i | -| main.rs:488:15:488:15 | i | main.rs:484:13:484:13 | i | -| main.rs:492:6:492:6 | x | main.rs:491:17:491:17 | x | -| main.rs:493:10:493:10 | x | main.rs:491:17:491:17 | x | -| main.rs:494:10:494:10 | x | main.rs:491:17:491:17 | x | -| main.rs:495:12:495:12 | x | main.rs:491:17:491:17 | x | -| main.rs:499:6:499:6 | x | main.rs:498:22:498:22 | x | -| main.rs:500:10:500:10 | x | main.rs:498:22:498:22 | x | -| main.rs:501:10:501:10 | x | main.rs:498:22:498:22 | x | -| main.rs:502:6:502:6 | y | main.rs:498:38:498:38 | y | -| main.rs:503:9:503:9 | x | main.rs:498:22:498:22 | x | -| main.rs:509:27:509:27 | x | main.rs:507:13:507:13 | x | -| main.rs:510:6:510:6 | y | main.rs:508:9:508:9 | y | -| main.rs:513:15:513:15 | x | main.rs:507:13:507:13 | x | -| main.rs:517:19:517:19 | x | main.rs:507:13:507:13 | x | -| main.rs:519:14:519:14 | z | main.rs:515:13:515:13 | z | -| main.rs:520:9:520:9 | w | main.rs:516:9:516:9 | w | -| main.rs:522:7:522:7 | w | main.rs:516:9:516:9 | w | -| main.rs:525:15:525:15 | z | main.rs:515:13:515:13 | z | -| main.rs:531:14:531:14 | x | main.rs:529:13:529:13 | x | -| main.rs:532:6:532:6 | y | main.rs:530:9:530:9 | y | -| main.rs:533:15:533:15 | x | main.rs:529:13:529:13 | x | -| main.rs:541:19:541:19 | x | main.rs:537:9:537:9 | x | -| main.rs:543:5:543:7 | cap | main.rs:540:9:540:11 | cap | -| main.rs:544:15:544:15 | x | main.rs:537:9:537:9 | x | -| main.rs:552:19:552:19 | x | main.rs:548:13:548:13 | x | -| main.rs:554:5:554:12 | closure1 | main.rs:551:9:551:16 | closure1 | -| main.rs:555:15:555:15 | x | main.rs:548:13:548:13 | x | -| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | -| main.rs:563:5:563:12 | closure2 | main.rs:560:13:560:20 | closure2 | -| main.rs:564:15:564:15 | y | main.rs:557:13:557:13 | y | -| main.rs:570:9:570:9 | z | main.rs:566:13:566:13 | z | -| main.rs:572:5:572:12 | closure3 | main.rs:569:13:569:20 | closure3 | -| main.rs:573:15:573:15 | z | main.rs:566:13:566:13 | z | -| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | -| main.rs:582:5:582:9 | block | main.rs:578:9:578:13 | block | -| main.rs:583:15:583:15 | i | main.rs:577:13:577:13 | i | -| main.rs:588:15:588:15 | x | main.rs:587:13:587:13 | x | -| main.rs:589:15:589:15 | x | main.rs:587:13:587:13 | x | -| main.rs:591:16:591:16 | b | main.rs:586:8:586:8 | b | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | -| main.rs:594:19:594:19 | x | main.rs:587:13:587:13 | x | -| main.rs:595:19:595:19 | x | main.rs:587:13:587:13 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | -| main.rs:598:19:598:19 | x | main.rs:587:13:587:13 | x | -| main.rs:599:19:599:19 | x | main.rs:587:13:587:13 | x | -| main.rs:601:15:601:15 | x | main.rs:587:13:587:13 | x | -| main.rs:607:16:607:17 | b1 | main.rs:604:13:604:14 | b1 | -| main.rs:609:19:609:19 | x | main.rs:605:9:605:9 | x | -| main.rs:611:19:611:19 | x | main.rs:605:9:605:9 | x | -| main.rs:615:16:615:17 | b2 | main.rs:604:23:604:24 | b2 | -| main.rs:617:19:617:19 | x | main.rs:605:9:605:9 | x | -| main.rs:619:19:619:19 | x | main.rs:605:9:605:9 | x | -| main.rs:629:16:629:19 | self | main.rs:628:20:628:23 | self | -| main.rs:633:9:633:12 | self | main.rs:632:11:632:14 | self | -| main.rs:639:13:639:16 | self | main.rs:636:23:636:26 | self | -| main.rs:639:25:639:25 | n | main.rs:637:22:637:22 | n | -| main.rs:641:9:641:9 | f | main.rs:637:17:637:17 | f | -| main.rs:642:9:642:9 | f | main.rs:637:17:637:17 | f | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | -| main.rs:649:5:649:5 | a | main.rs:647:13:647:13 | a | -| main.rs:650:15:650:15 | a | main.rs:647:13:647:13 | a | -| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | -| main.rs:652:15:652:15 | a | main.rs:647:13:647:13 | a | +| main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | +| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | +| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | +| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | +| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | +| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | +| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | +| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | +| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | +| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | +| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | +| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | +| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | +| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | +| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | +| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | +| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | +| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | +| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | +| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | +| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | +| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | +| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | +| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | +| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | +| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | +| main.rs:488:11:488:11 | a | main.rs:485:13:485:13 | a | +| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | +| main.rs:495:14:495:14 | i | main.rs:493:13:493:13 | i | +| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | +| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | +| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | +| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | +| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | +| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | +| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | +| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | +| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | +| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | +| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | +| main.rs:518:27:518:27 | x | main.rs:516:13:516:13 | x | +| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | +| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | +| main.rs:526:19:526:19 | x | main.rs:516:13:516:13 | x | +| main.rs:528:14:528:14 | z | main.rs:524:13:524:13 | z | +| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | +| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | +| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | +| main.rs:540:14:540:14 | x | main.rs:538:13:538:13 | x | +| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | +| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | +| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | +| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | +| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | +| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | +| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | +| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | +| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | +| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | +| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | +| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | +| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | +| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | +| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | +| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | +| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | +| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | +| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | +| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | +| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | +| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | +| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | +| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | +| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | +| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | +| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | +| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | +| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | +| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | +| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | +| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | +| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | +| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | +| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | +| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | +| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | | main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | | main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | | main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | | main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | | main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:20:666:20 | x | main.rs:665:9:665:9 | x | -| main.rs:667:15:667:15 | x | main.rs:665:9:665:9 | x | -| main.rs:670:20:670:20 | z | main.rs:669:9:669:9 | z | -| main.rs:679:10:679:13 | self | main.rs:678:17:678:20 | self | -| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | -| main.rs:688:15:688:15 | a | main.rs:684:13:684:13 | a | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | -| main.rs:708:15:708:28 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | -| main.rs:714:30:714:41 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | -| main.rs:715:15:715:26 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | -| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | -| main.rs:721:15:721:15 | x | main.rs:719:9:719:9 | x | -| main.rs:728:20:728:20 | b | main.rs:726:20:726:20 | b | -| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | -| main.rs:732:5:732:7 | cap | main.rs:726:13:726:15 | cap | -| main.rs:733:15:733:15 | x | main.rs:725:13:725:13 | x | +| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | +| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | +| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | +| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | +| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | +| main.rs:675:20:675:20 | x | main.rs:674:9:674:9 | x | +| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | +| main.rs:679:20:679:20 | z | main.rs:678:9:678:9 | z | +| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | +| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | +| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | +| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | +| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | +| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | +| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | +| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | +| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | +| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | +| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | -| main.rs:391:9:391:10 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:392:9:392:10 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:393:9:393:11 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:561:9:561:9 | y | main.rs:557:13:557:13 | y | -| main.rs:579:9:579:9 | i | main.rs:577:13:577:13 | i | -| main.rs:593:9:593:9 | x | main.rs:587:13:587:13 | x | -| main.rs:597:9:597:9 | x | main.rs:587:13:587:13 | x | -| main.rs:651:5:651:5 | a | main.rs:647:13:647:13 | a | +| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | +| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | +| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | +| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | | main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:720:5:720:5 | x | main.rs:719:9:719:9 | x | -| main.rs:729:13:729:13 | x | main.rs:725:13:725:13 | x | +| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | +| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | +| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -456,111 +461,114 @@ variableReadAccess | main.rs:355:7:355:7 | x | main.rs:348:9:348:9 | x | | main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | -| main.rs:370:15:370:16 | a8 | main.rs:364:5:364:6 | a8 | -| main.rs:371:15:371:16 | b3 | main.rs:366:9:366:10 | b3 | -| main.rs:372:15:372:16 | c1 | main.rs:367:9:367:10 | c1 | -| main.rs:377:15:377:16 | a9 | main.rs:375:20:375:55 | a9 | -| main.rs:386:15:386:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:387:15:387:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:388:15:388:16 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:395:9:395:11 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:396:9:396:10 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:397:9:397:10 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:399:15:399:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:400:15:400:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:401:15:401:16 | c2 | main.rs:384:13:384:14 | c2 | -| main.rs:408:23:408:25 | a10 | main.rs:405:13:405:15 | a10 | -| main.rs:409:23:409:24 | b4 | main.rs:406:13:406:14 | b4 | -| main.rs:413:15:413:17 | a10 | main.rs:382:13:382:15 | a10 | -| main.rs:414:15:414:16 | b4 | main.rs:383:13:383:14 | b4 | -| main.rs:420:9:420:9 | x | main.rs:419:10:419:10 | x | -| main.rs:422:9:422:23 | example_closure | main.rs:418:9:418:23 | example_closure | -| main.rs:423:15:423:16 | n1 | main.rs:421:9:421:10 | n1 | -| main.rs:428:9:428:9 | x | main.rs:427:6:427:6 | x | -| main.rs:430:9:430:26 | immutable_variable | main.rs:426:9:426:26 | immutable_variable | -| main.rs:431:15:431:16 | n2 | main.rs:429:9:429:10 | n2 | -| main.rs:438:9:438:9 | x | main.rs:437:10:437:10 | x | -| main.rs:439:15:439:15 | f | main.rs:436:9:436:9 | f | -| main.rs:443:9:443:9 | x | main.rs:441:10:441:10 | x | -| main.rs:446:15:446:15 | f | main.rs:436:9:436:9 | f | -| main.rs:452:17:452:17 | x | main.rs:450:14:450:14 | x | -| main.rs:461:13:461:13 | x | main.rs:460:14:460:14 | x | -| main.rs:462:19:462:19 | f | main.rs:459:13:459:13 | f | -| main.rs:470:12:470:12 | v | main.rs:467:9:467:9 | v | -| main.rs:471:19:471:22 | text | main.rs:469:9:469:12 | text | -| main.rs:478:15:478:15 | a | main.rs:476:13:476:13 | a | -| main.rs:480:15:480:15 | a | main.rs:476:13:476:13 | a | -| main.rs:487:6:487:10 | ref_i | main.rs:485:9:485:13 | ref_i | -| main.rs:488:15:488:15 | i | main.rs:484:13:484:13 | i | -| main.rs:492:6:492:6 | x | main.rs:491:17:491:17 | x | -| main.rs:493:10:493:10 | x | main.rs:491:17:491:17 | x | -| main.rs:494:10:494:10 | x | main.rs:491:17:491:17 | x | -| main.rs:495:12:495:12 | x | main.rs:491:17:491:17 | x | -| main.rs:499:6:499:6 | x | main.rs:498:22:498:22 | x | -| main.rs:500:10:500:10 | x | main.rs:498:22:498:22 | x | -| main.rs:501:10:501:10 | x | main.rs:498:22:498:22 | x | -| main.rs:502:6:502:6 | y | main.rs:498:38:498:38 | y | -| main.rs:503:9:503:9 | x | main.rs:498:22:498:22 | x | -| main.rs:510:6:510:6 | y | main.rs:508:9:508:9 | y | -| main.rs:513:15:513:15 | x | main.rs:507:13:507:13 | x | -| main.rs:520:9:520:9 | w | main.rs:516:9:516:9 | w | -| main.rs:522:7:522:7 | w | main.rs:516:9:516:9 | w | -| main.rs:525:15:525:15 | z | main.rs:515:13:515:13 | z | -| main.rs:532:6:532:6 | y | main.rs:530:9:530:9 | y | -| main.rs:533:15:533:15 | x | main.rs:529:13:529:13 | x | -| main.rs:541:19:541:19 | x | main.rs:537:9:537:9 | x | -| main.rs:543:5:543:7 | cap | main.rs:540:9:540:11 | cap | -| main.rs:544:15:544:15 | x | main.rs:537:9:537:9 | x | -| main.rs:552:19:552:19 | x | main.rs:548:13:548:13 | x | -| main.rs:554:5:554:12 | closure1 | main.rs:551:9:551:16 | closure1 | -| main.rs:555:15:555:15 | x | main.rs:548:13:548:13 | x | -| main.rs:563:5:563:12 | closure2 | main.rs:560:13:560:20 | closure2 | -| main.rs:564:15:564:15 | y | main.rs:557:13:557:13 | y | -| main.rs:570:9:570:9 | z | main.rs:566:13:566:13 | z | -| main.rs:572:5:572:12 | closure3 | main.rs:569:13:569:20 | closure3 | -| main.rs:573:15:573:15 | z | main.rs:566:13:566:13 | z | -| main.rs:582:5:582:9 | block | main.rs:578:9:578:13 | block | -| main.rs:583:15:583:15 | i | main.rs:577:13:577:13 | i | -| main.rs:588:15:588:15 | x | main.rs:587:13:587:13 | x | -| main.rs:589:15:589:15 | x | main.rs:587:13:587:13 | x | -| main.rs:591:16:591:16 | b | main.rs:586:8:586:8 | b | -| main.rs:594:19:594:19 | x | main.rs:587:13:587:13 | x | -| main.rs:595:19:595:19 | x | main.rs:587:13:587:13 | x | -| main.rs:598:19:598:19 | x | main.rs:587:13:587:13 | x | -| main.rs:599:19:599:19 | x | main.rs:587:13:587:13 | x | -| main.rs:601:15:601:15 | x | main.rs:587:13:587:13 | x | -| main.rs:607:16:607:17 | b1 | main.rs:604:13:604:14 | b1 | -| main.rs:609:19:609:19 | x | main.rs:605:9:605:9 | x | -| main.rs:611:19:611:19 | x | main.rs:605:9:605:9 | x | -| main.rs:615:16:615:17 | b2 | main.rs:604:23:604:24 | b2 | -| main.rs:617:19:617:19 | x | main.rs:605:9:605:9 | x | -| main.rs:619:19:619:19 | x | main.rs:605:9:605:9 | x | -| main.rs:629:16:629:19 | self | main.rs:628:20:628:23 | self | -| main.rs:633:9:633:12 | self | main.rs:632:11:632:14 | self | -| main.rs:639:13:639:16 | self | main.rs:636:23:636:26 | self | -| main.rs:639:25:639:25 | n | main.rs:637:22:637:22 | n | -| main.rs:641:9:641:9 | f | main.rs:637:17:637:17 | f | -| main.rs:642:9:642:9 | f | main.rs:637:17:637:17 | f | -| main.rs:648:15:648:15 | a | main.rs:647:13:647:13 | a | -| main.rs:649:5:649:5 | a | main.rs:647:13:647:13 | a | -| main.rs:650:15:650:15 | a | main.rs:647:13:647:13 | a | -| main.rs:652:15:652:15 | a | main.rs:647:13:647:13 | a | +| main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | +| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | +| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | +| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | +| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | +| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | +| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | +| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | +| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | +| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | +| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | +| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | +| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | +| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | +| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | +| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | +| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | +| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | +| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | +| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | +| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | +| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | +| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | +| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | +| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | +| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | +| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | +| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | +| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | +| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | +| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | +| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | +| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | +| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | +| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | +| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | +| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | +| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | +| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | +| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | +| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | +| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | +| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | +| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | +| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | +| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | +| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | +| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | +| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | +| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | +| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | +| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | +| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | +| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | +| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | +| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | +| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | +| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | +| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | +| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | +| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | +| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | +| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | +| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | +| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | +| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | +| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | +| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | +| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | +| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | +| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | +| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | +| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | +| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | +| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | +| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | +| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | +| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | +| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | +| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | | main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | | main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | | main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | | main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:667:15:667:15 | x | main.rs:665:9:665:9 | x | -| main.rs:679:10:679:13 | self | main.rs:678:17:678:20 | self | -| main.rs:685:5:685:5 | a | main.rs:684:13:684:13 | a | -| main.rs:688:15:688:15 | a | main.rs:684:13:684:13 | a | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:9:707:21 | var_in_macro | -| main.rs:708:15:708:28 | var_from_macro | main.rs:706:9:706:22 | var_from_macro | -| main.rs:714:30:714:41 | var_in_macro | main.rs:714:15:714:28 | var_in_macro | -| main.rs:715:15:715:26 | var_in_macro | main.rs:709:9:709:20 | var_in_macro | -| main.rs:721:15:721:15 | x | main.rs:719:9:719:9 | x | -| main.rs:728:20:728:20 | b | main.rs:726:20:726:20 | b | -| main.rs:732:5:732:7 | cap | main.rs:726:13:726:15 | cap | -| main.rs:733:15:733:15 | x | main.rs:725:13:725:13 | x | +| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | +| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | +| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | +| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | +| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | +| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | +| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | +| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | +| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | +| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | +| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | +| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | +| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | +| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | +| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -592,62 +600,63 @@ variableInitializer | main.rs:334:9:334:9 | x | main.rs:334:13:334:20 | Some(...) | | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | -| main.rs:418:9:418:23 | example_closure | main.rs:419:9:420:9 | \|...\| x | -| main.rs:421:9:421:10 | n1 | main.rs:422:9:422:26 | example_closure(...) | -| main.rs:426:9:426:26 | immutable_variable | main.rs:427:5:428:9 | \|...\| x | -| main.rs:429:9:429:10 | n2 | main.rs:430:9:430:29 | immutable_variable(...) | -| main.rs:436:9:436:9 | f | main.rs:437:9:438:9 | \|...\| x | -| main.rs:459:13:459:13 | f | main.rs:460:13:461:13 | \|...\| x | -| main.rs:467:9:467:9 | v | main.rs:467:13:467:41 | &... | -| main.rs:476:13:476:13 | a | main.rs:476:17:476:17 | 0 | -| main.rs:484:13:484:13 | i | main.rs:484:17:484:17 | 1 | -| main.rs:485:9:485:13 | ref_i | main.rs:486:9:486:14 | &mut i | -| main.rs:507:13:507:13 | x | main.rs:507:17:507:17 | 2 | -| main.rs:508:9:508:9 | y | main.rs:509:9:509:28 | mutate_param(...) | -| main.rs:515:13:515:13 | z | main.rs:515:17:515:17 | 4 | -| main.rs:516:9:516:9 | w | main.rs:517:9:517:19 | &mut ... | -| main.rs:529:13:529:13 | x | main.rs:529:17:529:17 | 1 | -| main.rs:530:9:530:9 | y | main.rs:531:9:531:14 | &mut x | -| main.rs:537:9:537:9 | x | main.rs:537:13:537:15 | 100 | -| main.rs:540:9:540:11 | cap | main.rs:540:15:542:5 | \|...\| ... | -| main.rs:548:13:548:13 | x | main.rs:548:17:548:17 | 1 | -| main.rs:551:9:551:16 | closure1 | main.rs:551:20:553:5 | \|...\| ... | -| main.rs:557:13:557:13 | y | main.rs:557:17:557:17 | 2 | -| main.rs:560:13:560:20 | closure2 | main.rs:560:24:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | z | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure3 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:577:13:577:13 | i | main.rs:577:22:577:22 | 0 | -| main.rs:578:9:578:13 | block | main.rs:578:17:580:5 | { ... } | -| main.rs:587:13:587:13 | x | main.rs:587:17:587:17 | 1 | -| main.rs:605:9:605:9 | x | main.rs:605:13:605:13 | 1 | -| main.rs:637:17:637:17 | f | main.rs:637:21:640:9 | \|...\| ... | -| main.rs:647:13:647:13 | a | main.rs:647:17:647:35 | MyStruct {...} | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:25 | [...] | -| main.rs:665:9:665:9 | x | main.rs:665:13:665:14 | 16 | -| main.rs:669:9:669:9 | z | main.rs:669:13:669:14 | 17 | -| main.rs:684:13:684:13 | a | main.rs:684:17:684:35 | MyStruct {...} | -| main.rs:706:9:706:22 | var_from_macro | main.rs:707:9:707:25 | MacroExpr | -| main.rs:707:9:707:21 | var_in_macro | main.rs:707:23:707:24 | 37 | -| main.rs:709:9:709:20 | var_in_macro | main.rs:709:24:709:25 | 33 | -| main.rs:714:15:714:28 | var_in_macro | main.rs:714:15:714:28 | 0 | -| main.rs:725:13:725:13 | x | main.rs:725:17:725:19 | 100 | -| main.rs:726:13:726:15 | cap | main.rs:726:19:731:5 | \|...\| ... | +| main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | +| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | +| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | +| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | +| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | +| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | +| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | +| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | +| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | +| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | +| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | +| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | +| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | +| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | +| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | +| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | +| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | +| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | +| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | +| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | +| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | +| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | +| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | +| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | +| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | +| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | +| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | +| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | +| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | +| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | +| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | +| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | +| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | +| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | +| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | +| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | +| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | +| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | +| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | +| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | +| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | capturedVariable -| main.rs:537:9:537:9 | x | -| main.rs:548:13:548:13 | x | -| main.rs:557:13:557:13 | y | -| main.rs:566:13:566:13 | z | -| main.rs:577:13:577:13 | i | -| main.rs:636:23:636:26 | self | -| main.rs:725:13:725:13 | x | +| main.rs:546:9:546:9 | x | +| main.rs:557:13:557:13 | x | +| main.rs:566:13:566:13 | y | +| main.rs:575:13:575:13 | z | +| main.rs:586:13:586:13 | i | +| main.rs:645:23:645:26 | self | +| main.rs:734:13:734:13 | x | capturedAccess -| main.rs:541:19:541:19 | x | -| main.rs:552:19:552:19 | x | -| main.rs:561:9:561:9 | y | -| main.rs:570:9:570:9 | z | -| main.rs:579:9:579:9 | i | -| main.rs:639:13:639:16 | self | -| main.rs:729:13:729:13 | x | +| main.rs:550:19:550:19 | x | +| main.rs:561:19:561:19 | x | +| main.rs:570:9:570:9 | y | +| main.rs:579:9:579:9 | z | +| main.rs:588:9:588:9 | i | +| main.rs:648:13:648:16 | self | +| main.rs:738:13:738:13 | x | nestedFunctionAccess -| main.rs:449:19:449:19 | f | main.rs:450:9:453:9 | fn f | -| main.rs:456:23:456:23 | f | main.rs:450:9:453:9 | fn f | +| main.rs:458:19:458:19 | f | main.rs:459:9:462:9 | fn f | +| main.rs:465:23:465:23 | f | main.rs:459:9:462:9 | fn f | From 3d7b60a439ad80d0f1c721dbc6cc4b87253ff3e5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 21:40:37 +0100 Subject: [PATCH 466/965] Rust: Add variable consistency query --- rust/ql/consistency-queries/VariableConsistency.ql | 8 ++++++++ .../lib/codeql/rust/internal/VariableConsistency.qll | 10 ++++++++++ .../variables/CONSISTENCY/VariableConsistency.expected | 2 ++ 3 files changed, 20 insertions(+) create mode 100644 rust/ql/consistency-queries/VariableConsistency.ql create mode 100644 rust/ql/lib/codeql/rust/internal/VariableConsistency.qll create mode 100644 rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected diff --git a/rust/ql/consistency-queries/VariableConsistency.ql b/rust/ql/consistency-queries/VariableConsistency.ql new file mode 100644 index 00000000000..42c2149cbc7 --- /dev/null +++ b/rust/ql/consistency-queries/VariableConsistency.ql @@ -0,0 +1,8 @@ +/** + * @name Variable inconsistencies + * @description Lists the variable inconsistencies in the database. This query is intended for internal use. + * @kind table + * @id rust/diagnostics/variable-consistency + */ + +import codeql.rust.internal.VariableConsistency diff --git a/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll b/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll new file mode 100644 index 00000000000..37b38f6378e --- /dev/null +++ b/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll @@ -0,0 +1,10 @@ +/** + * Provides logic for recognizing variable inconsistencies. + */ + +private import rust + +query predicate multipleVariableTargets(VariableAccess va, Variable v1) { + va = v1.getAnAccess() and + strictcount(va.getVariable()) > 1 +} diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected new file mode 100644 index 00000000000..b3f21ae1271 --- /dev/null +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected @@ -0,0 +1,2 @@ +| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | +| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | From 5a2467414c2d0320318d7af8174e00650811d1e0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 30 Oct 2025 21:42:57 +0100 Subject: [PATCH 467/965] Rust: Fix variable access overlap --- rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll | 7 ++++++- .../variables/CONSISTENCY/VariableConsistency.expected | 2 -- rust/ql/test/library-tests/variables/Ssa.expected | 2 -- rust/ql/test/library-tests/variables/main.rs | 2 +- rust/ql/test/library-tests/variables/variables.expected | 2 -- 5 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index f03ca55b555..6f89be71660 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -460,7 +460,12 @@ module Impl { VariableAccessCand cand, VariableScope scope, string name, int nestLevel, int ord ) { name = cand.getName() and - scope = [cand.(VariableScope), getEnclosingScope(cand)] and + ( + scope = cand + or + not cand instanceof VariableScope and + scope = getEnclosingScope(cand) + ) and ord = getPreOrderNumbering(scope, cand) and nestLevel = 0 or diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected deleted file mode 100644 index b3f21ae1271..00000000000 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | -| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 89e1411259a..4b9764b21c9 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -283,7 +283,6 @@ read | main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x | | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | -| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:367:20:367:20 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | | main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | | main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | @@ -581,7 +580,6 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | main.rs:367:20:367:20 | x | | main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | | main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | | main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 855eabbe3f6..3ed78f601d6 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -364,7 +364,7 @@ fn match_pattern15() { let x = Some(0); // x1 match x { // $ read_access=x1 Some(x) // x2 - => x, // $ read_access=x2 $ SPURIOUS: read_access=x1 + => x, // $ read_access=x2 _ => 0 }; } diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index b033fd00f79..22c54b9740c 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -232,7 +232,6 @@ variableAccess | main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | -| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | | main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | @@ -462,7 +461,6 @@ variableReadAccess | main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x | | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | -| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | | main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | From f410c3c93a5669750c10bb6bcfedb63056048554 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:16:07 +0100 Subject: [PATCH 468/965] C#: Update Microsft.Build, Roslyn and Binlog dependencies. --- csharp/paket.dependencies | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/paket.dependencies b/csharp/paket.dependencies index 9413de7b1fe..cd2ac36422b 100644 --- a/csharp/paket.dependencies +++ b/csharp/paket.dependencies @@ -4,16 +4,16 @@ source https://api.nuget.org/v3/index.json # behave like nuget in choosing transitive dependency versions strategy: max -nuget Basic.CompilerLog.Util 0.9.8 +nuget Basic.CompilerLog.Util 0.9.21 nuget Mono.Posix.NETStandard nuget Newtonsoft.Json nuget xunit nuget xunit.runner.visualstudio nuget xunit.runner.utility nuget Microsoft.NET.Test.Sdk -nuget Microsoft.CodeAnalysis.CSharp 4.12.0 -nuget Microsoft.CodeAnalysis 4.12.0 -nuget Microsoft.Build 17.12.6 +nuget Microsoft.CodeAnalysis.CSharp 4.14.0 +nuget Microsoft.CodeAnalysis 4.14.0 +nuget Microsoft.Build 17.14.28 nuget Microsoft.Win32.Primitives nuget System.Net.Primitives nuget System.Security.Principal From 0484be6b5b62b48533e97a83974d45f36e99da9e Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:16:35 +0100 Subject: [PATCH 469/965] C#: Update lock files. --- csharp/paket.lock | 273 +++++++++++++++++++++--------------------- csharp/paket.main.bzl | 104 ++++++++-------- 2 files changed, 192 insertions(+), 185 deletions(-) diff --git a/csharp/paket.lock b/csharp/paket.lock index 8120aadb5bd..d503e19d87d 100644 --- a/csharp/paket.lock +++ b/csharp/paket.lock @@ -3,143 +3,148 @@ STRATEGY: MAX RESTRICTION: == net9.0 NUGET remote: https://api.nuget.org/v3/index.json - Basic.CompilerLog.Util (0.9.8) - MessagePack (>= 2.5.187) - Microsoft.CodeAnalysis (>= 4.12) - Microsoft.CodeAnalysis.CSharp (>= 4.12) - Microsoft.CodeAnalysis.VisualBasic (>= 4.12) - Microsoft.Extensions.ObjectPool (>= 9.0.2) - MSBuild.StructuredLogger (>= 2.2.243) - System.Buffers (>= 4.6) + Basic.CompilerLog.Util (0.9.21) + MessagePack (>= 3.1.4) + Microsoft.Bcl.Memory (>= 9.0.10) + Microsoft.CodeAnalysis (>= 4.8) + Microsoft.CodeAnalysis.CSharp (>= 4.8) + Microsoft.CodeAnalysis.VisualBasic (>= 4.8) + Microsoft.Extensions.ObjectPool (>= 9.0.10) + MSBuild.StructuredLogger (>= 2.3.71) + NaturalSort.Extension (>= 4.4) Humanizer.Core (2.14.1) - MessagePack (3.0.300) - MessagePack.Annotations (>= 3.0.300) - MessagePackAnalyzer (>= 3.0.300) + MessagePack (3.1.4) + MessagePack.Annotations (>= 3.1.4) + MessagePackAnalyzer (>= 3.1.4) Microsoft.NET.StringTools (>= 17.11.4) - MessagePack.Annotations (3.0.300) - MessagePackAnalyzer (3.0.300) - Microsoft.Bcl.AsyncInterfaces (9.0) - Microsoft.Build (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - System.Reflection.Metadata (>= 8.0) - System.Reflection.MetadataLoadContext (>= 8.0) - Microsoft.Build.Framework (17.12.6) - Microsoft.Build.Utilities.Core (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - Microsoft.CodeAnalysis (4.12) + MessagePack.Annotations (3.1.4) + MessagePackAnalyzer (3.1.4) + Microsoft.Bcl.AsyncInterfaces (9.0.10) + Microsoft.Bcl.Memory (9.0.10) + Microsoft.Build (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Reflection.MetadataLoadContext (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.Build.Framework (17.14.28) + Microsoft.Build.Utilities.Core (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Collections.Immutable (>= 9.0) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.CodeAnalysis (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.Bcl.AsyncInterfaces (>= 9.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) System.Buffers (>= 4.5.1) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) System.Memory (>= 4.5.5) System.Numerics.Vectors (>= 4.5) - System.Reflection.Metadata (>= 8.0) + System.Reflection.Metadata (>= 9.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encoding.CodePages (>= 7.0) System.Threading.Channels (>= 7.0) System.Threading.Tasks.Extensions (>= 4.5.4) Microsoft.CodeAnalysis.Analyzers (3.11) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeCoverage (17.12) - Microsoft.Extensions.ObjectPool (9.0.3) - Microsoft.NET.StringTools (17.12.6) - Microsoft.NET.Test.Sdk (17.12) - Microsoft.CodeCoverage (>= 17.12) - Microsoft.TestPlatform.TestHost (>= 17.12) + Microsoft.CodeCoverage (18.0) + Microsoft.Extensions.ObjectPool (9.0.10) + Microsoft.NET.StringTools (17.14.28) + Microsoft.NET.Test.Sdk (18.0) + Microsoft.CodeCoverage (>= 18.0) + Microsoft.TestPlatform.TestHost (>= 18.0) Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) - Microsoft.TestPlatform.ObjectModel (17.12) - System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.12) - Microsoft.TestPlatform.ObjectModel (>= 17.12) - Newtonsoft.Json (>= 13.0.1) + Microsoft.TestPlatform.ObjectModel (18.0) + System.Reflection.Metadata (>= 8.0) + Microsoft.TestPlatform.TestHost (18.0) + Microsoft.TestPlatform.ObjectModel (>= 18.0) + Newtonsoft.Json (>= 13.0.3) Microsoft.Win32.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.2.386) + MSBuild.StructuredLogger (2.3.71) Microsoft.Build.Framework (>= 17.5) Microsoft.Build.Utilities.Core (>= 17.5) System.Collections.Immutable (>= 8.0) - Newtonsoft.Json (13.0.3) - System.Buffers (4.6) - System.Collections.Immutable (9.0) - System.Composition (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Convention (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.TypedParts (>= 9.0) - System.Composition.AttributedModel (9.0) - System.Composition.Convention (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.Runtime (9.0) - System.Composition.TypedParts (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Configuration.ConfigurationManager (9.0) - System.Diagnostics.EventLog (>= 9.0) - System.Security.Cryptography.ProtectedData (>= 9.0) - System.Diagnostics.EventLog (9.0) + NaturalSort.Extension (4.4) + Newtonsoft.Json (13.0.4) + System.Buffers (4.6.1) + System.Collections.Immutable (9.0.10) + System.Composition (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Convention (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.TypedParts (>= 9.0.10) + System.Composition.AttributedModel (9.0.10) + System.Composition.Convention (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.Runtime (9.0.10) + System.Composition.TypedParts (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Configuration.ConfigurationManager (9.0.10) + System.Diagnostics.EventLog (>= 9.0.10) + System.Security.Cryptography.ProtectedData (>= 9.0.10) + System.Diagnostics.EventLog (9.0.10) System.IO (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -157,55 +162,55 @@ NUGET System.Threading.Tasks (>= 4.3) System.IO.FileSystem.Primitives (4.3) System.Runtime (>= 4.3) - System.IO.Pipelines (9.0) - System.Memory (4.6) + System.IO.Pipelines (9.0.10) + System.Memory (4.6.3) System.Net.Primitives (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) System.Runtime (>= 4.3.1) System.Runtime.Handles (>= 4.3) - System.Numerics.Vectors (4.6) - System.Reflection.Metadata (9.0) - System.Reflection.MetadataLoadContext (9.0) + System.Numerics.Vectors (4.6.1) + System.Reflection.Metadata (9.0.10) + System.Reflection.MetadataLoadContext (9.0.10) System.Runtime (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.1) + System.Runtime.CompilerServices.Unsafe (6.1.2) System.Runtime.Handles (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Security.Cryptography.ProtectedData (9.0) + System.Security.Cryptography.ProtectedData (9.0.10) System.Security.Principal (4.3) System.Runtime (>= 4.3) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (9.0) - System.Threading.Channels (9.0) + System.Text.Encoding.CodePages (9.0.10) + System.Threading.Channels (9.0.10) System.Threading.Tasks (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Threading.Tasks.Extensions (4.6) + System.Threading.Tasks.Extensions (4.6.3) System.Threading.ThreadPool (4.3) System.Runtime (>= 4.3) System.Runtime.Handles (>= 4.3) - xunit (2.9.2) - xunit.analyzers (>= 1.16) - xunit.assert (>= 2.9.2) - xunit.core (2.9.2) + xunit (2.9.3) + xunit.analyzers (>= 1.18) + xunit.assert (>= 2.9.3) + xunit.core (2.9.3) xunit.abstractions (2.0.3) - xunit.analyzers (1.17) - xunit.assert (2.9.2) - xunit.core (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) + xunit.analyzers (1.24) + xunit.assert (2.9.3) + xunit.core (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.runner.utility (2.9.2) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.runner.utility (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.runner.visualstudio (2.8.2) + xunit.runner.visualstudio (3.1.5) diff --git a/csharp/paket.main.bzl b/csharp/paket.main.bzl index 90d568ba3a8..1ef6f63df8f 100644 --- a/csharp/paket.main.bzl +++ b/csharp/paket.main.bzl @@ -7,73 +7,75 @@ def main(): nuget_repo( name = "paket.main", packages = [ - {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.8", "sha512": "sha512-bBlxHTdPRrmaw4AqoNwtx3jyAP63RVp2kwCn+UegxrimDYVCmhdgCkFjzlAc2Bo1LbO7HrsFhfh6lFijugOX3A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.21", "sha512": "sha512-l+Qbzh3nVaLLwZYgv/v5zIEdprseLgxcprHBvbNBzOyer7m6XD/N5GJC+FPChnSP48kK1/p7Nj7mvQH8d5NOtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Humanizer.Core", "id": "Humanizer.Core", "version": "2.14.1", "sha512": "sha512-yzqGU/HKNLZ9Uvr6kvSc3wYV/S5O/IvklIUW5WF7MuivGLY8wS5IZnLPkt7D1KW8Et2Enl0I3Lzg2vGWM24Xsw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack", "id": "MessagePack", "version": "3.0.300", "sha512": "sha512-5Mdl6CrQcxVVLawvqebPLALFdIMgWOnEGxxFvXWjJ/8KGyyhbfKMusj34Wv1AwE+uE9VAb+McVxtR9HDZIUwuA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.0.300", "sha512": "sha512-Jh9+7EsDtDSEciX8RfXHWxtRlC94wvCmmv+sFzGdzPF4fAp7OAGFktzViPBHMkCxrSh3hmM7jGUB7yMyUmzRCA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.0.300", "sha512": "sha512-Ad0UHGpotoXZYkBjJgO5Z1aTJz5YIsFGVrxc75OiHO/fNKSRKFiM1X2E1WTB5h7pk3uDzqXfh0M5fEEQVZ8FiQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.0", "sha512": "sha512-bYp2ksSR5uB6xqOa4NyD2gBOeFrc2n8FAWoh781MNMDcPjk1ysD7DNpv7r7sQOXfdFJT6F/syX7fN4lmUsn+RQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.12.6", "sha512": "sha512-YEiL5xKowbwnr52YroALNHg8YurjLyFTlhv3USrswhubuxN2ldY1TmQpBKQ4K28UgWJV9BxTVXY9/CecMNDeOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.12.6", "sha512": "sha512-UjfxnrQN9BPVtO0Kvv2FB5dpN2CX5snc7coq5vVQdbCV6kdSpI/r+GZTLvU/5BTT8y8bvIUqoocxRR674N6bWg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.12.6", "sha512": "sha512-YPtNsiLEPn3g3EcO+Kyr7fIdufg6wdzibzufclQYZjIDS80krFsYi2rTpeTmHtlCK0PhyLvxJAQZ3NecgJHTkg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.12.0", "sha512": "sha512-saGSG86irNb5MX0/7j0Lx2T0jSGQuqa6QlohBHBcTzObPyMunQZIuIWVXlEiKwcrcEQm4rtUg/5FW43s0dqH7Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack", "id": "MessagePack", "version": "3.1.4", "sha512": "sha512-O0JoklM97ru+Rqr1hGnlCbSAxi8MOk48pwoaT458RzboCHuAkQWTh+Of9MUoN3LE0Cb2tapku0FRPt2hnk+o0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.1.4", "sha512": "sha512-kIgD3A0OHs8+VUabMhIJT9ZF4oGHqjCocaRDmERI/Ds2hzJ5q3kcvzn5zI7V3CJ2NlQ4HDI80uh6zCqglwgQCQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.1.4", "sha512": "sha512-DFlhiA5fia4iK6i0S+L7sYMYmo5XRgWydKxiaxwz7tfcbvIhU7nmG4JzN1D9Y2XCEmLNExvNwTzXVEgURu4GnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.10", "sha512": "sha512-Di823U3L+0A2YQGU1HqJC7Gh8o/nuSXle5u6QDgho9s920QbVk6BS5fKJ0s+pzW+WbqM9+aPUQ2DJsfP6tLdKg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.Memory", "id": "Microsoft.Bcl.Memory", "version": "9.0.10", "sha512": "sha512-BZV+TVnrDf9O+Ak5gN47uOkECCtpiVq6MpEYX5lQcG1WFD6/Bnx5eyfueX9giDQPEk6azzhSPTGmJcWNXRBc+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.14.28", "sha512": "sha512-/J3DY36eYjSi/NYf/m4fS4HlxN8Zy+bCsopJUN0j4NNnrws4NR9ueWd0HKyhWEYYUa29Q1kjG1uKSGN1jBWg4g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.14.28", "sha512": "sha512-Gj4C8LNilfH6u6xu7QI/y0tkJCp3yQQpde/3qeK8E2FOfrZ4ENOoG/r2eKZws15bN6HPj09PhaJoqBhdbJdLpA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.14.28", "sha512": "sha512-A5uyO5HysGJRFR3IjjVKJ0Y69USn3E5Vlt/h51yID5Ynts4zHdh5ZELeU1gCoeF8i3tE21gO2u+QQLqQlb/iUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.14.0", "sha512": "sha512-eNBbL927Lc1Nh24ElWJmlGA928O9tu4mgWGOqmMFe6sskqQWCdnronCrrzwUdhBsBIjfx898MOCMOXuZQMtqOg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.CodeAnalysis.Analyzers", "id": "Microsoft.CodeAnalysis.Analyzers", "version": "3.11.0", "sha512": "sha512-tP9SLzLK72XCExlh8KXfrKbU6ycmZL3ExGl/a3Ml7LNy2Uaam7gFjjUmdzyTYkMXTyckCHHpzx7bD6BMumh8Bg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.12.0", "sha512": "sha512-83sYPF0SekVhecApCFXsLCsQL9qFzAl5ieCEqVb8Uo08nV34YD3cfq7FLv6EkhnAwPbP7ky19sAEEqYLDUrxWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.12.0", "sha512": "sha512-Dbb/taxFill9/+2HRJufXW3udAtJaQw3+LzbWTDyYx7Z02HVdU5ydMXXTqg5lFgSmLDNBe+B8jRuI2eYw8OBOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.12.0", "sha512": "sha512-YwFqDAYHJrf02FyGU8nQnaWNryZXuDV0r8pVgWjRtxAFDWfaU5CZxvU/4NsS6GSnEsWp6W/e49QMHsDXTJW/KA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.12.0", "sha512": "sha512-le1vRWFDjf9mYrVwhxw+rNZpRg/AvBi9aK+4zfn47qN2S7XPXtDwdz/dvxVg8bKJMfkwK1WPi2Bvlc7naPdaYg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.12.0", "sha512": "sha512-j/XDFfNu38FSTJOIhkB8pvLWNVNqNhaZTRtLuH/WsHUsnYfIztaDW9seR7OsUBF5LuZIKQ9uaCrj7p+0/BgPkw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.12.0", "sha512": "sha512-bzZOMF3kAtQhc5kcUILy0GyhgePksk/j9DJtlvFex1UYNgXJUoEkA6IUGootH1Z6GH4Z5BuLNXiFzsz9oJwbcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "17.12.0", "sha512": "sha512-POBqg788rrLApvncy8rvtyJ3ynsBdU0/SGUXD+vPqyRDM/aUJbPZWx01qalGJRK1GcArSku8QDd9AVMa0TkCkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.3", "sha512": "sha512-0s2vnkWqUSPhhe+Llybuli0LMon5Mf7Mx9NSO9ErGFGU+dSZqwz1Ixa7mXJo2W+Y74BXYE+yfU0HIsPUMOkwZQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.12.6", "sha512": "sha512-uCT/G0W1wUteqfrriWHfLfFmArka8ISo6nUkC5gQzYZYm2PSTuqfS14DEsY0gqDuQpcLLLaYTDcEM0SA2Za5vA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "17.12.0", "sha512": "sha512-hGf8I8+yo15etavoMd+7OXcOG6/G7HYPDEJg5aQnhMzsxaUpq+udNZzSxmEN9rGTWMZOAVFcyNXNL7YBsN6chw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net6.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net7.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.14.0", "sha512": "sha512-k9AIzOrtcZVqr9+lmcEW0vY80emyXx5JB/757K0HUF96GeUeiTD+djOlFF2y7k4XPZo20Lru4tDgQos+VKBr0w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.14.0", "sha512": "sha512-kqS2NihVvNQHxzLePtyYiiJmFzoYO9Wm46O9DhfUgIIf5NwTbvSy66kV9EM+qAHmGpi7zQy4w8JU6DFnPlAyTA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.14.0", "sha512": "sha512-q9VD/wqMEGW0S5WIKuTZ4Wr9EpsZJQrQxqCodxjlsfW0bWl7mOQ4zA7k0Nf80ZrEe7Edaz6+3SBvrALiUcaHzA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.14.0", "sha512": "sha512-vXhNyQk07THoSHzsu/fM48tFFHYAZQumfT7uDJuL/5ZO4CRgJK9Zr6UOJOwX1Df8N//lRMeymYyT+qiAmnWiYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.14.0", "sha512": "sha512-LZMVjjbRTcKOtgVDz/sZn+AXBNGL4iKYnWwu5eOvvRcdXaLNlOA7bYtTZOnSMlqig7b/3gMzkoaLqcJ+7hgddg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.14.0", "sha512": "sha512-m/c+FWBNr/JgCYRJ/jh14U9oAtPxHTgDiujb+19QG1AA3KMNZed+UQ51PRSaOt9CbIoMubZp2AkUMSeioz4EHQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "18.0.0", "sha512": "sha512-HT0zpIWW9Q0Csllqo7lefZ27HE6dl5gfh7NA4FPZjEURenH2GsvpRSZ63b1d3klDphxiX8bpxKwVSzyURhhgkQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.10", "sha512": "sha512-mx7sdMdkCBJuJQkSEaV9wQaB39+ciVUX0VCB7YrqAGvxyBkLRR0mgl9v7j4c6lVMeRZH79FgKOy1WaQbSyhVKA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.14.28", "sha512": "sha512-oJDGPNoVuWOmKTPpFK0lJnVwbLMRsm2oxgxBFOMKBYzSZtmiS0kcoednhArAeAicV2aSUFiuor1pw7JK/p2LwQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "18.0.0", "sha512": "sha512-+0iHCuP77nxZLLfEhCNDMOcy8+qC7IFtsLrSwSzp0qc7pUs2J28Stu2c+m9AEKkKdvhsMKB/AhlFOSyeOpdKVg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Platforms", "id": "Microsoft.NETCore.Platforms", "version": "7.0.4", "sha512": "sha512-mcQWjuDBh4WHGG4WcBI0k025WAdA2afMm6fs42sm1f+3gRyNQUiuMVT5gAWNUGSHmlu6qn/TCnAQpfl4Gm6cBw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Targets", "id": "Microsoft.NETCore.Targets", "version": "5.0.0", "sha512": "sha512-hYHm3JAjQO/nySxcl1EpZhYEW+2P3H1eLZNr+QxgO5TnLS6hqtfi5WchjQzjid45MYmhy2X7IOmcWtDP4fpMGw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "17.12.0", "sha512": "sha512-klsXMgAPNWYo3ceakLkod4wYrk4lAV2Ehi676zUKgiVpQ5Yj6q3vsMhk/3pm97Ltk/hdcSW0rJKJvcQvTzPgYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "17.12.0", "sha512": "sha512-gYM2BOGQvFEP2fZt61f3f5Gu+imL1G1bvGUrbJjpYcl66R6uzs5yESg0XMn8IgUgldz8RldOOaYmjk2KcSeG1Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net6.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net7.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "18.0.0", "sha512": "sha512-/ShCZQuIxaxzGjRQqCYTLD/KnG1yQKsNZXDUtjO2d55IOB8FEyhXleLw2hw8QlK/1gkblyJsp4BfQ8BQFaEAlg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "18.0.0", "sha512": "sha512-9IZUooXUUnh+z04QtWCu5iku4D4FAfJajP1su+I6741AxXa0bnXPo2125vqjvK0Khfsk16zskgDpG6vf2Mjubg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.Win32.Primitives", "id": "Microsoft.Win32.Primitives", "version": "4.3.0", "sha512": "sha512-Nm8Hp51y9tYcK3xD6qk43Wjftrg1mdH24CCJsTb6gr7HS21U1uA+CKPGEtUcVZbjU1y8Kynzm5eoJ7Pnx5gm8A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Mono.Posix.NETStandard", "id": "Mono.Posix.NETStandard", "version": "1.0.0", "sha512": "sha512-RtGiutQZJAmajvQ0QvBvh73VJye85iW9f9tjZlzF88idLxNMo4lAktP/4Y9ilCpais0LDO0tpoICt9Hdv6wooA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.2.386", "sha512": "sha512-m8ErawcbeDJ+nWtN62vh2OPHARvLpSqhOBCedtYniPGB059wSs2vuGPxfBcVGqVcjpZgntEY4vDOzGyAVB7atA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.3", "sha512": "sha512-mbJSvHfRxfX3tR/U6n1WU+mWHXswYc+SB/hkOpx8yZZe68hNZGfymJu0cjsaJEkVzCMqePiU6LdIyogqfIn7kg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.0", "sha512": "sha512-iRbJyTSX9bJVpURLGLiW8Fgk5Vfm5iGCztw4IG4IJYcxJy+BXTCEgEWFeJtO6c+kPnUmQu87KK5m188+qbErcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.0", "sha512": "sha512-z/Oo7nxWmZ0Y578vj8EUVrFJZ3DX6OMuUGlgeYgeeUZOFGT89XfaM8fDFMvJy6+mOIqW6ux5NdNzEnlTnQGJ7A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition", "id": "System.Composition", "version": "9.0.0", "sha512": "sha512-aWcyK90nIChHyxq7rpQ83Bbvt/t9l1X6yQtkvODaZ+rJlYHUMVpSji0YXIZTX5VlcWRCVRFdeEY767BCOzueaw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.0", "sha512": "sha512-oYuQzlIvO31GxSlTo6NCU+RnK9dVb1m154BNE7VGm9PUyJM+RrOQss8cNbMj+iIWVcp6VRnyJlBJ3MfzYo14AA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.0", "sha512": "sha512-3efhxn/7hQI9kNy6M6UUwWrMJCzdBZZ4hkYS3MUxqXyGdQ2sLCWToX1nLnnrRYafcdRSMOY2naMPNlRAEKDAGA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.0", "sha512": "sha512-zLPGbMYw6y2GoNBjcoPnvXt7wSJM/qIG1fU2Do8kDObDTYWHG6fFOhulSViX0Ip2j+qGeuCESqEswCRG+xDvwA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.0", "sha512": "sha512-P777aBPIwmLvL0Q8mPA7RiiomfjqLTbpX/xzKpk7YTJLcvPDMTvRIfNFognEpfJYRLadBymaBIU81vW3MzZYnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.0", "sha512": "sha512-7b7mkn4H0149jNKD1tZRUG2gmkszNzO6YAGV+xEsxdfIU+5SLhxWRYJpqm1zKzKNdzpKUW93oyEFGcTuoNvqGg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.0", "sha512": "sha512-RMASWXcds+sKAl/W6itFM8hvq9aha8CRqSv2nrjb8TUTSMLjjn80h1Lrob7km+v/1UfpUU/Nr67egAjZjsCgIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.0", "sha512": "sha512-ouyDUtZFOgkAPYmYUzioIjMxmgdI/E3j1sIuAbkXv4cTFOisf5FvQrbwi0KC84GUJMjkImXbaZqlTH9M5dJz2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.3.71", "sha512": "sha512-u2Tw1WLYy+2VdccrQWyN3AY8zcFj4evfwqWMd7aBiicX3eGfkWkME7lsh9K2XS/+S8KVkjGNPI/g78E2A7Zx0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "NaturalSort.Extension", "id": "NaturalSort.Extension", "version": "4.4.0", "sha512": "sha512-lcwYGJO2xZylcLW6B64tp6wE9UAt6fSn6el8MSAly5+6QG1vc/9uXQz+dsi69q1DxFv2TOaWrrheHNzg4yvy3Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.4", "sha512": "sha512-bR+v+E/yJ6g7GV2uXw2OrUSjYYfjLkOLC8JD4kCS23msLapnKtdJPBJA75fwHH++ErIffeIqzYITLxAur4KAXA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.1", "sha512": "sha512-qve/dFwECwehSWlZmpkrrlIeATCvo/Hw2koyMrUVcDBy5gXAQrnwX8pHEoqgj8DgkrWuWW1DrQbFqoMbo+Fvrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.10", "sha512": "sha512-00LI4a7blU063Z0lCdRVLlh0Mzl1yYLZaxlOZe0MiNH+TELklX0Mne/XKU7UuCZQQh6FHrcEUPDjxIsy2jZUxg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition", "id": "System.Composition", "version": "9.0.10", "sha512": "sha512-PyUH0f6tdjlQBntP/73cqaR53fjAZkaqGRatIi1BgZIfQH/Z0k1rPHaklBZqFV5+wKUkL74+49TrFPnB/zw+2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.10", "sha512": "sha512-9Gx8SRD1DJcQLca7ZaeMjU+qUd4EdxDj6urKR4TizWx+NM7L+beoAn07XCKkdJsweqF6gUK7el93DhUbpssSqA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.10", "sha512": "sha512-hzvwytBYpKoDX+OJpHXKoupR+BYy+QCUY5vSWOTvJLagAm3zYJKxAUR3l8OyPy46tnQ+3lK/6f5DeLHiTfbIIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.10", "sha512": "sha512-fPTM06IdvHrFIRJyYEpVKl5W7UTT4U3E+iiAVg3DFfuQ4Abe4XVhkoHn3DB4pUTOU2RpVc2+PxQ6y9hULPta1A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.10", "sha512": "sha512-8iDtNLXkjiFwir6Ocrm4XCC19Jzj06OHTvDeL6BZ4guWhCCGRCl6nWJVPonq6G2kZmNiDfraOwC8RgV5qPAAjg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.10", "sha512": "sha512-7OUDlDYszrhjJ8/r5na3N07XzBWl8e6/87dyGoDraDHlkl+APL4dbZ8TfniaXLJxZabDHVaaMLpViiIf+Fb9Ng==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.10", "sha512": "sha512-/LM2cc6vZulHDcDsd+9vntVD9j953k8WCCzB4Fea6YxOoIexpGP8iJhC7v13hKN5V66MDprjCJRjHHhDaDuOXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.10", "sha512": "sha512-3rC2TD7/ikgwu5Z7BzViMVDDp7RGyaej8pvVDzhy6rI7QZ9+x6DPiOPD5y4FjePxTLh/rFjMNcP7nG9IHWsB2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO", "id": "System.IO", "version": "4.3.0", "sha512": "sha512-v8paIePhmGuXZbE9xvvNb4uJ5ME4OFXR1+8la/G/L1GIl2nbU2WFnddgb79kVK3U2us7q1aZT/uY/R0D/ovB5g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem", "id": "System.IO.FileSystem", "version": "4.3.0", "sha512": "sha512-T7WB1vhblSmgkaDpdGM3Uqo55Qsr5sip5eyowrwiXOoHBkzOx3ePd9+Zh97r9NzOwFCxqX7awO6RBxQuao7n7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": ["System.IO.FileSystem.Primitives"], "net461": ["System.IO.FileSystem.Primitives"], "net462": ["System.IO.FileSystem.Primitives"], "net47": ["System.IO.FileSystem.Primitives"], "net471": ["System.IO.FileSystem.Primitives"], "net472": ["System.IO.FileSystem.Primitives"], "net48": ["System.IO.FileSystem.Primitives"], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem.Primitives", "id": "System.IO.FileSystem.Primitives", "version": "4.3.0", "sha512": "sha512-WIWVPQlYLP/Zc9I6IakpBk1y8ryVGK83MtZx//zGKKi2hvHQWKAB7moRQCOz5Is/wNDksiYpocf3FeA3le6e5Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.0", "sha512": "sha512-XIeVKR80wuDl05DI4Hufye7TT4D1Ca1Bm4zJPc7mgnodrCy0OfcQ1C00A7se56dMvg48cI64TMD+YKcZl+qOaA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Memory", "id": "System.Memory", "version": "4.6.0", "sha512": "sha512-TY7NpV4Vv0vwanZ6J8vrLGfybbPKhAvL3oTx7EndsZ/J/71sm01JPCHImtvYtwh1vmFat/GPS/id9htqIPK+6g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.10", "sha512": "sha512-kQg8x+mbt8Xi1mwm32DVEz6DtfqKn9XUGziGQvdNJ2QEGWvufcZfRWtxAf9nB+/B1FT1x7W4Wh2Fr9lcKlVWPA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Memory", "id": "System.Memory", "version": "4.6.3", "sha512": "sha512-NXcNYlWoXe5cz9sb8Huo6x2dCZVYkhwKtgE00n/MoI8V4ZI/7/t+EI5bOhQFlZfFjjqM8+U6prjU/aARt7H/tA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Net.Primitives", "id": "System.Net.Primitives", "version": "4.3.1", "sha512": "sha512-BgdlyYCI7rrdh36p3lMTqbkvaafPETpB1bk9iQlFdQxYE692kiXvmseXs8ghL+gEgQF2xgDc8GH4QLkSgUUs+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.0", "sha512": "sha512-dxZWbnnb21+5QuKAiUEntJirh5KiU1nqlLWtBu4v9/Fx1RnsgNn8T4XbmQhvCq/T94201P6EsGG2z2Y5ded1yA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.0", "sha512": "sha512-jz+Y2m/CpdPvdjCNRigiWJYKFusdkfJlxDx4V5cWX2TubAMaz5CZpODBD/P2+20SpWvmZG6J3UYjl+R2Yg7yFw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.0", "sha512": "sha512-or1DAn2dl2SjxPA4tuDG9RxTxeERdHIU7gUJjNf8WhT6D08ZsHbmSZpP2rKpgGOXHMhmXf3CTDNmfa4cSD2DtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.1", "sha512": "sha512-/rkvpUeUPlCY/2qYVQKiUsj5IKaXZcy2+SQAGAfemAdyEF5AgIgYOFNSTMWDXo09JWFX9HB+wV1yCyi2Mwi3TA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.10", "sha512": "sha512-3ZztNrfQJww1qZ9UgdB5aTAYlAIWd5dMyyBagAC8jth6iG5vxawtaGbZJMh4xkL9A5v6Ng48YL+hAjt08GBWKQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.10", "sha512": "sha512-qf9IjoUO2XfK4BTPhCIFDYAsiWtFCTpyiklmxoNK2Ys1wZdoVe5C3j5BH2ajSDWy2mAQcN1n+Eh/3uhd3oUcEA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime", "id": "System.Runtime", "version": "4.3.1", "sha512": "sha512-Al69mPDfzdD+bKGK2HAfB+lNFOHFqnkqzNnUJmmvUe1/qEPK9M7EiTT4zuycKDPy7ev11xz8XVgJWKP0hm7NIA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.0", "sha512": "sha512-iY0upfdQeiaCfoxT+m4XJyb0IJNk4B9TLQFanOCOrU9X5x1x2TjKx0OFbLmg1VG2dOyL5nHMn198SBQ91Yy1kQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.2", "sha512": "sha512-t2aXWJZBkAkRrTOnw31OBELKEVSDD5YvC3O5dXaHFsR66/nRTKm1y3Iq6NwFI5u5IlKrWYfdan66V+GKKkY8hQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime.Handles", "id": "System.Runtime.Handles", "version": "4.3.0", "sha512": "sha512-CluvHdVUv54BvLTOCCyybugreDNk/rR8unMPruzXDtxSjvrQOU3M4R831/lQf4YI8VYp668FGQa/01E+Rq8PEQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.0", "sha512": "sha512-Mbc5s1XBLje0N1idqILQUqWnG8RVj9p7uK110yxZXTzZq3CN7jaCFEySK52kA+dPYtByzcRtA/FUnK4o/sinSw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.10", "sha512": "sha512-yR8dvnme5ndA3L6Q6F/2N+4QBCi8sdfGWg9lmRVNBZO+evqIt323UdXMu8b8MnMYoyxXaml+vTEl74t5Nu7ABQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Security.Principal", "id": "System.Security.Principal", "version": "4.3.0", "sha512": "sha512-24oe0NGJY32e+DFHVQzl2okM9uwYmn0Aa6nehqtVZ55/Al4Yva7S3BN934Kn5qATH7TVTUJkgxhisdfF7mKDfg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": ["System.Runtime"], "netstandard1.1": ["System.Runtime"], "netstandard1.2": ["System.Runtime"], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Text.Encoding", "id": "System.Text.Encoding", "version": "4.3.0", "sha512": "sha512-b/f+7HMTpxIfeV7H03bkuHKMFylCGfr9/U6gePnfFFW0aF8LOWLDgQCY6V1oWUqDksC3mdNuyChM1vy9TP4sZw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.0", "sha512": "sha512-rMAcE2cpS8RvPR5iK6WkYdZKJLsUw5BRqG3d/LR0dl8x17ezOj43AWRhp4LRIFgydWjOOn/Z4w//l8wcowngvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.0", "sha512": "sha512-6q+SC/qL5eeX9t3zUjmtsccStVusUvYXdJFYGf3ihM/8TionV+iZxi3mxDPPFXOiepRe7WgrIOuoaCi4+bwZ0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.10", "sha512": "sha512-LPoLnlvwb3D12yjwva2nvfzDqm4XNUBrAf/zQ5ad2IOqhTWqRm4GIXxlH4lSr3W/ET31aLtM4C4vHbr8sGEzWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.10", "sha512": "sha512-wMh3VX2qbwFg8rZllC1QsiXl4NjLkamNVT+O6bJG5V3sN6cwRZRza2v7f2ohFNGdGlViwUAO/PKSZgJfuJNXTg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.Tasks", "id": "System.Threading.Tasks", "version": "4.3.0", "sha512": "sha512-fUiP+CyyCjs872OA8trl6p97qma/da1xGq3h4zAbJZk8zyaU4zyEfqW5vbkP80xG/Nimun1vlWBboMEk7XxdEw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.0", "sha512": "sha512-ph8eP2gKhA6mNhj/teYwn9xCrHMc7+nBMlSMKX7BUXcZn33RVLe45TWABkcgyS6TJWYx1v1WwtylHmF3Fvg0qQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.3", "sha512": "sha512-zWRHXIBnbfzQE1SamNoW9X5NjEcW/JNAtvVxGKd3bcg71wQVmoI3pDq+WUa2A+temXSNCm7707hmAFwwcYlK0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.ThreadPool", "id": "System.Threading.ThreadPool", "version": "4.3.0", "sha512": "sha512-RQpA+UpI6Tlpeedk5JStYk2DM/M3i5HqabI/yDbfj1xDu9bIz9kdoquVpHbh/wQjOJaOCbcgRH8iQcAUv8dRWQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime", "System.Runtime.Handles"], "net6.0": ["System.Runtime", "System.Runtime.Handles"], "net7.0": ["System.Runtime", "System.Runtime.Handles"], "net8.0": ["System.Runtime", "System.Runtime.Handles"], "net9.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit", "id": "xunit", "version": "2.9.2", "sha512": "sha512-bs4ccplaqCT7+jdAJhtt75uKq9qA3Jeld1ugiOgGEGSnzq8gkoa0VUqNEKkMPkBwV5COlAllNJGtGBfgxoZDrA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit", "id": "xunit", "version": "2.9.3", "sha512": "sha512-3/ayVPC7NQWQENR5REbOgXYsbhoJsmpnxQa5pO4lxbjGbckOs62nsm4kLErzc8ng7V5Xz08uwVjMqaZGJiXCrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "xunit.abstractions", "id": "xunit.abstractions", "version": "2.0.3", "sha512": "sha512-PKJri5f0qEQPFvgY6CZR9XG8JROlWSdC/ZYLkkDQuID++Egn+yWjB+Yf57AZ8U6GRlP7z33uDQ4/r5BZPer2JA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.17.0", "sha512": "sha512-36BC2a5gEL5TDXjkzhD8dK4toNcPGdwFb4tbIODwTp4eXhRS6BURiTclfZD2vFNTq4obCzPOdwnayhppP4qtUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.2", "sha512": "sha512-huNfINLH5HnyiPImimKv7liIJJ2MgRdJYT7ky3464zR62SH7o9JjsgMiSZRXha46kgTCNjKSNN1VvctC+USp7w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.core", "id": "xunit.core", "version": "2.9.2", "sha512": "sha512-kW48d7YL7ryT4zuWTjJN491cJwY8aYiIAxDaXJRebgMIw40PmlREiiaIz33QUFmglcfLlaoRyZcI4sl70kARiw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.2", "sha512": "sha512-sosk+dg5Cn4N9MKOjQ1wFTvfgduqiX1DLRZHEYXIaLOuTJbCJeXfn7XhAVDGY+zeB8aX3jCKL8BcDp4EJCdZXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.2", "sha512": "sha512-oOnG3GsmntYZqZleKMHFlAxxCxn+ZQrcY7GEKDFP0Zpjx/sTE61cEblJk4Dkl4He0t02DN4gmJ4hsQDoLTdo7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.2", "sha512": "sha512-uXH4JqD2cHxrS6L/NXbaKPa+i0/RarJp68Fu+9NMVKJuDjVXDQFtnzgaP9gB+77GbjsJ14SWdJEDkh+D+UX7jw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "2.8.2", "sha512": "sha512-z+EzhXxLlgn/n7FQ5J0DJxbGns/1vx1kPJh4Uq+OPChRpdSy3x/MCqQ/jtkboc7BRMthz14k7pL0D3iq/e4d0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.TestPlatform.ObjectModel"], "net47": ["Microsoft.TestPlatform.ObjectModel"], "net471": ["Microsoft.TestPlatform.ObjectModel"], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.24.0", "sha512": "sha512-LiogS9RX6I4MHFN8V3dNgEQ4QJrtvtKq49h9k5NAOvmwcrbR1IeNMZvyuez3YITKAeF+ka9yVG3+OH6vApPB/A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.3", "sha512": "sha512-wfqwCKAhSWGy9P/dPqDGSIBnPW3sUJ49MEfcTqNF+5BgJwjwtHb9SE7ajYZuR8ymTd8dwxoEGnlJHiejbgDv9w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.core", "id": "xunit.core", "version": "2.9.3", "sha512": "sha512-cv2sO37qJkIbBL3fXDIn3EPQ2zK8LQ6FkMJNnn1xc9n8mo3ik0URA4MfUNCmwDDCx83ZiJeRrJ0y1ykasojNJg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.3", "sha512": "sha512-S0a+jmIF/DraKuJ+FfWbqXMwvpcKxjP3GdrQzz5pr3GYtgII2XfDdAhkU/5VIWqWon2R6Q31X/9sTGaU+koDaQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.3", "sha512": "sha512-IidoBSrGw/KhWzZsKXIcStohj/oRFZizbWeUv+0hOFLeMJMegSW5QoGNzmjQuF8BuRtCyPQQukWSYdNnnfPAkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.3", "sha512": "sha512-L2zlPa7Ci/Awf5LdeTOvKOanev1bB6xV2Gxbrc+EDDN1hO/j0AIbu5PM8lXgkX69/8xaaex7zrxHZd8gcz2ilQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "3.1.5", "sha512": "sha512-b/tvN9kXtUd3wSSYbC80Ic6y/dYlYbNSvatYiv71iozPhXqM4EaOuHujkIJh85b+wY6dgf25k9ENSy8jN6mlvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, ], ) From ad02559b48c67bd123396b5d96792d395e58603b Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:36:22 +0100 Subject: [PATCH 470/965] C#: Fix Binlog API breaking change. --- .../extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index 3c01893dd89..69aa7c47909 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -182,7 +182,7 @@ namespace Semmle.Extraction.CSharp var compilerCall = compilationData.CompilerCall; var diagnosticName = compilerCall.GetDiagnosticName(); logger.LogInfo($" Processing compilation {diagnosticName} at {compilerCall.ProjectDirectory}"); - var compilerArgs = compilerCall.GetArguments(); + var compilerArgs = reader.ReadArguments(compilerCall); var compilationIdentifierPath = string.Empty; try From f85002558354985a228b4c9493ad08e6a2628e82 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 31 Oct 2025 09:39:00 +0100 Subject: [PATCH 471/965] Rust: Add another type inference test --- .../test/library-tests/type-inference/main.rs | 11 +++ .../type-inference/type-inference.expected | 96 +++++++++++-------- 2 files changed, 65 insertions(+), 42 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index f0bf215d49b..af39c583a46 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2862,6 +2862,17 @@ mod block_types { fn f3() -> i32 { return 0; } // should only have type `i32`, not `()` + + #[rustfmt::skip] + fn f4(cond: bool) -> i32 { + let a = { // $ MISSING: certainType=a:() + if cond { + return 12; + }; + }; + println!("a: {:?}", a); + 0 + } } mod blanket_impl; diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index a5ec277a939..18da3cb4255 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -6474,48 +6474,60 @@ inferType | main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2872:11:2907:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2873:5:2873:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2874:5:2874:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2875:5:2875:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2875:20:2875:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2875:41:2875:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2876:5:2876:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2877:5:2877:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2878:5:2878:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2879:5:2879:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2880:5:2880:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2881:5:2881:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2882:5:2882:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2883:5:2883:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2884:5:2884:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2885:5:2885:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2886:5:2886:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2887:5:2887:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2888:5:2888:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2889:5:2889:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2890:5:2890:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2891:5:2891:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2892:5:2892:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2892:5:2892:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2893:5:2893:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2894:5:2894:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2895:5:2895:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2896:5:2896:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2897:5:2897:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2898:5:2898:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2899:5:2899:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2900:5:2900:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2901:5:2901:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2902:5:2902:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2903:5:2903:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2904:5:2904:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2905:5:2905:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2905:5:2905:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2905:5:2905:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2905:5:2905:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2905:16:2905:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2906:5:2906:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2867:11:2867:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2867:30:2875:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2869:13:2871:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2869:16:2869:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2870:24:2870:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2873:18:2873:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2873:18:2873:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2873:18:2873:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2873:18:2873:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2873:18:2873:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2873:18:2873:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2874:9:2874:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2883:11:2918:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2884:5:2884:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2885:5:2885:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2886:5:2886:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2886:20:2886:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2886:41:2886:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2887:5:2887:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2888:5:2888:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2889:5:2889:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2890:5:2890:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2891:5:2891:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2892:5:2892:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2893:5:2893:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2894:5:2894:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2895:5:2895:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2896:5:2896:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2897:5:2897:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2898:5:2898:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2899:5:2899:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2900:5:2900:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2901:5:2901:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2902:5:2902:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2903:5:2903:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2903:5:2903:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:2904:5:2904:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2905:5:2905:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2906:5:2906:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2907:5:2907:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2908:5:2908:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2909:5:2909:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2910:5:2910:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2911:5:2911:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2912:5:2912:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2913:5:2913:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2914:5:2914:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2915:5:2915:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2916:5:2916:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2916:5:2916:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2916:5:2916:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | +| main.rs:2916:5:2916:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2916:16:2916:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2917:5:2917:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 7d5664f2a83922394aeed0f81f126ab179848133 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 31 Oct 2025 09:43:18 +0100 Subject: [PATCH 472/965] Address review comment --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 12 +----------- rust/ql/test/library-tests/type-inference/main.rs | 2 +- .../type-inference/type-inference.expected | 4 ++++ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 96ebf10a0e4..8c2a648f49e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -2826,20 +2826,10 @@ private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { result.getTypeAlias() = any(FutureTrait ft).getOutputType() } -private predicate isReturnExprCfgAncestor(AstNode n) { - n instanceof ReturnExpr - or - exists(AstNode mid | - isReturnExprCfgAncestor(mid) and - n = mid.getParentNode() and - n.getEnclosingCfgScope() = mid.getEnclosingCfgScope() - ) -} - pragma[nomagic] predicate isUnitBlockExpr(BlockExpr be) { not be.getStmtList().hasTailExpr() and - not isReturnExprCfgAncestor(be) and + not be = any(Callable c).getBody() and not be.hasLabel() } diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index af39c583a46..d99d178ba8d 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2865,7 +2865,7 @@ mod block_types { #[rustfmt::skip] fn f4(cond: bool) -> i32 { - let a = { // $ MISSING: certainType=a:() + let a = { // $ certainType=a:() if cond { return 12; }; diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 18da3cb4255..d9b5e5782ab 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -6476,8 +6476,11 @@ inferType | main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2867:11:2867:14 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2867:30:2875:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2868:13:2868:13 | a | | file://:0:0:0:0 | () | +| main.rs:2868:17:2872:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:2869:13:2871:13 | if cond {...} | | file://:0:0:0:0 | () | | main.rs:2869:16:2869:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2869:21:2871:13 | { ... } | | file://:0:0:0:0 | () | | main.rs:2870:24:2870:25 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2873:18:2873:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:2873:18:2873:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | @@ -6485,6 +6488,7 @@ inferType | main.rs:2873:18:2873:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2873:18:2873:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2873:18:2873:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2873:29:2873:29 | a | | file://:0:0:0:0 | () | | main.rs:2874:9:2874:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2883:11:2918:1 | { ... } | | file://:0:0:0:0 | () | | main.rs:2884:5:2884:21 | ...::f(...) | | file://:0:0:0:0 | () | From b08b123184ac72f02c704691046197d772a1df94 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 30 Oct 2025 13:14:20 +0100 Subject: [PATCH 473/965] Swift: Support new accessors --- .../extractor/translators/DeclTranslator.cpp | 8 +- swift/ql/.generated.list | 6 +- .../elements/decl/internal/AccessorImpl.qll | 8 ++ swift/ql/lib/codeql/swift/generated/Raw.qll | 20 ++++ .../codeql/swift/generated/decl/Accessor.qll | 22 ++++ swift/ql/lib/swift.dbscheme | 20 ++++ .../declarations/declarations.swift | 2 +- .../generated/decl/Accessor/Accessor.expected | 107 ++++++++++++------ .../generated/decl/Accessor/Accessor.ql | 20 +++- .../generated/decl/Accessor/accessors.swift | 6 + .../generated/decl/Accessor/accessors2.swift | 13 +++ swift/schema.py | 4 + 12 files changed, 188 insertions(+), 48 deletions(-) create mode 100644 swift/ql/test/extractor-tests/generated/decl/Accessor/accessors2.swift diff --git a/swift/extractor/translators/DeclTranslator.cpp b/swift/extractor/translators/DeclTranslator.cpp index b5370b65db1..0512b178f72 100644 --- a/swift/extractor/translators/DeclTranslator.cpp +++ b/swift/extractor/translators/DeclTranslator.cpp @@ -198,16 +198,16 @@ codeql::Accessor DeclTranslator::translateAccessorDecl(const swift::AccessorDecl entry.is_unsafe_mutable_address = true; break; case swift::AccessorKind::DistributedGet: - // TODO: Swift 6.2 + entry.is_distributed_get = true; break; case swift::AccessorKind::Read2: - // TODO: Swift 6.2 + entry.is_read2 = true; break; case swift::AccessorKind::Modify2: - // TODO: Swift 6.2 + entry.is_modify2 = true; break; case swift::AccessorKind::Init: - // TODO: Swift 6.2 + entry.is_init = true; break; } fillFunction(decl, entry); diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 585b3e73889..3bfeb2a8b95 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -730,7 +730,7 @@ lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll aa47e81ab3004a0049da3a85f25456bba15ed37329622153c154a296024077f3 46e9fb37fadc23d168fd43cbe77a792ba8e56aab7f4a3a984add1928efd4ac78 +lib/codeql/swift/generated/Raw.qll f64459f6113f9b568cb876b4a896d29e519b5ac2c89322614f52e981ab4aedc1 66440d5f6927641b4ffb38d2930af0dd6d5428fcdc4bd1a67868b2304a6b0ea8 lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d @@ -738,7 +738,7 @@ lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5d lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 lib/codeql/swift/generated/decl/AbstractStorageDecl.qll 2e1479489d879fe5a712d69fd7956f81c413a854c55f1094a0c801af5ee9478b a20e02c383350c7cf7ddb23db1e782f802a82f4d76b67243f8d6491a759d1d53 lib/codeql/swift/generated/decl/AbstractTypeParamDecl.qll b72e0759f91cad222e097629b1546e4d12dbc3e247cbb4d82057bb448deb1bfd 00e4135e775ff7076cada8894c6bae60aa642db717d6367a05f87b937f447a6e -lib/codeql/swift/generated/decl/Accessor.qll 2b015ca1f56cb083d5da653f8a230f712cd86a0121e95c5dd97a3c54cd730872 980e94dbed41ff3852b88e5799620ab3b34f533e7623f8b56385ee0ac8569470 +lib/codeql/swift/generated/decl/Accessor.qll 4e03be18e1191959d7724eb933826c7089f337c56885b08f0962221535935f21 aa2156241f3740246950bd26f97641fc2a8a140fa5d1cd0a341b14c235f7a2b2 lib/codeql/swift/generated/decl/AccessorOrNamedFunction.qll 4c545d471aff763dc92a2b2047a0543b3c3a487a591509d42bd5878b5b3d1747 07ec58884fdc5e3ddf138c4dd1eccea6bba849671a84e03d9ee12e2310fa8cf2 lib/codeql/swift/generated/decl/AssociatedTypeDecl.qll a590cfa5980eaf5b52c2bfb0ad7c7d96e8f70894b9945099eea9940d7ef9ed35 fa909d2d471119652c12fac3fdf51abe526920d5f961fd9f9e9c7c512be3bd5d lib/codeql/swift/generated/decl/CapturedDecl.qll 07999cdbe928b22e157a7295f25c0a9483b29fd1784fe3d9c6e7f1f211b676ab 62b45dc415ab912ad77db69f93011573918ddaeb0ce6837434b86c3fe561536f @@ -1032,7 +1032,7 @@ test/extractor-tests/generated/Comment/MISSING_SOURCE.txt 35fb32ea5393152eb7a875 test/extractor-tests/generated/Diagnostics/Diagnostics.ql c1f8be2c283e13c1a4dadaa008e42f660ea09d9ee1de22b0e8493ef76384546e d84efa40eaecbce6b928a5b235e10bf1e4409a9d0778c365ec19d2fade7ab3ab test/extractor-tests/generated/File/File.ql a1385ef2080e04e8757f61b8e1d0129df9f955edf03fbb3b83cc9cb5498b4e95 0364d8c7f108d01b2641f996efedab7084956307e875e6bc078ea677d04267e0 test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql 3fa617f8ed1b308d0c56f429ee8abe6d33ef60bf57d87f6dc89fdc8fe969a102 c2fa3153077dbe9e0fc608524dc03c82ff4ed460364d341ee6a817b0d75291c3 -test/extractor-tests/generated/decl/Accessor/Accessor.ql 7e50dd3c4119162bbfa3e2461300d876c60321d4b6473ddd35e0cb992108570e eb81ed8db92bff46974079e0f1100cf94bd639191a36db45ee9e65467abb6e38 +test/extractor-tests/generated/decl/Accessor/Accessor.ql 3d4301ec9ec6284b547f8cccf94c3077f0baf70778f458bc21bebc5de55c86e5 2f263e79ecd1ac8da56c17caff400fd3c40d83b6aa3d501830f1d2eeb48a57cd test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql 55a78a6b96a17532178a39bd39aa4df23295f98019bb00de041ba15dfd4f84d9 51dbcd86203d5d031d748f77943a81c2c50de4ff559af20a4a1a682a19978d4f test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql fd62be6c38d39f371c20e8c2f233e37a9da5aa234588920634f5db67e8beb3bd d51d35d4fd6a21cd596e064e0221d0c86e36312412a9bd4e64f431c123f3019a test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql d5fa7f68307e2e3e7ad060a125bda148e4a28f6acbef08a1a975bbf9ba947641 46d1e4f801414f1c869601dc706e41393e5fcd399e51da593c1e58737f6ff427 diff --git a/swift/ql/lib/codeql/swift/elements/decl/internal/AccessorImpl.qll b/swift/ql/lib/codeql/swift/elements/decl/internal/AccessorImpl.qll index bdbd96f2cf7..d84878ab166 100644 --- a/swift/ql/lib/codeql/swift/elements/decl/internal/AccessorImpl.qll +++ b/swift/ql/lib/codeql/swift/elements/decl/internal/AccessorImpl.qll @@ -18,6 +18,14 @@ module Impl { decl.isUnsafeAddress() and kind = "unsafeAddress" or decl.isUnsafeMutableAddress() and kind = "unsafeMutableAddress" + or + decl.isDistributedGet() and kind = "distributed get" + or + decl.isRead2() and kind = "read" + or + decl.isModify2() and kind = "modify" + or + decl.isInit() and kind = "init" } class Accessor extends Generated::Accessor { diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 6b1a267ecd9..11c4af13f15 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -876,6 +876,26 @@ module Raw { * Holds if this accessor is an `unsafeMutableAddress` mutable addressor. */ predicate isUnsafeMutableAddress() { accessor_is_unsafe_mutable_address(this) } + + /** + * Holds if this accessor is a distributed getter. + */ + predicate isDistributedGet() { accessor_is_distributed_get(this) } + + /** + * Holds if this accessor is a `read` coroutine, yielding a borrowed value of the property. + */ + predicate isRead2() { accessor_is_read2(this) } + + /** + * Holds if this accessor is a `modify` coroutine, yielding an inout value of the property. + */ + predicate isModify2() { accessor_is_modify2(this) } + + /** + * Holds if this accessor is an `init` accessor. + */ + predicate isInit() { accessor_is_init(this) } } /** diff --git a/swift/ql/lib/codeql/swift/generated/decl/Accessor.qll b/swift/ql/lib/codeql/swift/generated/decl/Accessor.qll index 75d887bf45e..f88ba83cbed 100644 --- a/swift/ql/lib/codeql/swift/generated/decl/Accessor.qll +++ b/swift/ql/lib/codeql/swift/generated/decl/Accessor.qll @@ -63,5 +63,27 @@ module Generated { predicate isUnsafeMutableAddress() { Synth::convertAccessorToRaw(this).(Raw::Accessor).isUnsafeMutableAddress() } + + /** + * Holds if this accessor is a distributed getter. + */ + predicate isDistributedGet() { + Synth::convertAccessorToRaw(this).(Raw::Accessor).isDistributedGet() + } + + /** + * Holds if this accessor is a `read` coroutine, yielding a borrowed value of the property. + */ + predicate isRead2() { Synth::convertAccessorToRaw(this).(Raw::Accessor).isRead2() } + + /** + * Holds if this accessor is a `modify` coroutine, yielding an inout value of the property. + */ + predicate isModify2() { Synth::convertAccessorToRaw(this).(Raw::Accessor).isModify2() } + + /** + * Holds if this accessor is an `init` accessor. + */ + predicate isInit() { Synth::convertAccessorToRaw(this).(Raw::Accessor).isInit() } } } diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index b7006eaacb0..c26cf1904ee 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -683,6 +683,26 @@ accessor_is_unsafe_mutable_address( //dir=decl int id: @accessor ref ); +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + associated_type_decls( //dir=decl unique int id: @associated_type_decl ); diff --git a/swift/ql/test/extractor-tests/declarations/declarations.swift b/swift/ql/test/extractor-tests/declarations/declarations.swift index 6a1503a95e5..c2e8a94bb97 100644 --- a/swift/ql/test/extractor-tests/declarations/declarations.swift +++ b/swift/ql/test/extractor-tests/declarations/declarations.swift @@ -86,7 +86,7 @@ struct HasPropertyAndObserver { } } - // A field can be marked as read-only by dirctly implementing + // A field can be marked as read-only by directly implementing // the getter between the braces. var readOnlyField1: Int { return 0 diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected index 7512cce3712..85b83a8e978 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected @@ -1,43 +1,57 @@ instances -| accessors.swift:2:9:2:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:2:9:2:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:2:9:2:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:3:9:3:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:4:9:4:28 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:5:9:5:42 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:7:9:7:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:8:9:8:29 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:11:9:11:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:12:9:12:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:15:9:15:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:16:9:16:28 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:19:9:19:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:20:9:20:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:23:9:23:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:24:9:24:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:26:9:26:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:29:9:29:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:29:9:29:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:30:9:32:9 | _read | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | yes | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:33:9:35:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:38:9:38:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | -| accessors.swift:39:9:41:9 | unsafeAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> UnsafePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | yes | isUnsafeMutableAddress: | no | -| accessors.swift:42:9:44:9 | unsafeMutableAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> UnsafeMutablePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | yes | +| accessors2.swift:2:9:2:9 | get | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (Foo2) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors2.swift:2:9:2:9 | modify | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (inout Foo2) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | yes | isInit: | no | +| accessors2.swift:2:9:2:9 | set | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (inout Foo2) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors2.swift:3:9:3:9 | set | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (inout Foo2) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors2.swift:4:9:6:9 | read | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (Foo2) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | yes | isModify2: | no | isInit: | no | +| accessors2.swift:7:9:9:9 | modify | getModule: | file://:0:0:0:0 | accessors2 | getInterfaceType: | (inout Foo2) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | yes | isInit: | no | +| accessors.swift:2:9:2:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:2:9:2:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:2:9:2:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:3:9:3:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:4:9:4:28 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:5:9:5:42 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:7:9:7:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:7:9:7:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:7:9:7:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:8:9:8:29 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:11:9:11:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:11:9:11:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:11:9:11:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:12:9:12:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:15:9:15:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:15:9:15:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:15:9:15:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:16:9:16:28 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:19:9:19:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:19:9:19:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:19:9:19:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:20:9:20:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:23:9:23:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:23:9:23:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:23:9:23:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:24:9:24:19 | willSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | yes | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:26:9:26:18 | didSet | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | yes | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:29:9:29:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:29:9:29:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:30:9:32:9 | _read | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | yes | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:33:9:35:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:38:9:38:9 | _modify | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | yes | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:38:9:38:9 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:38:9:38:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:39:9:41:9 | unsafeAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> UnsafePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | yes | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:42:9:44:9 | unsafeMutableAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> UnsafeMutablePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | yes | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | +| accessors.swift:48:9:48:16 | init | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | yes | +| accessors.swift:50:9:50:18 | get | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> Int | isGetter: | yes | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | isDistributedGet: | no | isRead2: | no | isModify2: | no | isInit: | no | getGenericTypeParam getMember getName +| accessors2.swift:2:9:2:9 | get | (unnamed function decl) | +| accessors2.swift:2:9:2:9 | modify | (unnamed function decl) | +| accessors2.swift:2:9:2:9 | set | (unnamed function decl) | +| accessors2.swift:3:9:3:9 | set | (unnamed function decl) | +| accessors2.swift:4:9:6:9 | read | (unnamed function decl) | +| accessors2.swift:7:9:9:9 | modify | (unnamed function decl) | | accessors.swift:2:9:2:9 | _modify | (unnamed function decl) | | accessors.swift:2:9:2:9 | get | (unnamed function decl) | | accessors.swift:2:9:2:9 | set | (unnamed function decl) | @@ -74,7 +88,15 @@ getName | accessors.swift:38:9:38:9 | set | (unnamed function decl) | | accessors.swift:39:9:41:9 | unsafeAddress | (unnamed function decl) | | accessors.swift:42:9:44:9 | unsafeMutableAddress | (unnamed function decl) | +| accessors.swift:48:9:48:16 | init | (unnamed function decl) | +| accessors.swift:50:9:50:18 | get | (unnamed function decl) | getSelfParam +| accessors2.swift:2:9:2:9 | get | accessors2.swift:2:9:2:9 | self | +| accessors2.swift:2:9:2:9 | modify | accessors2.swift:2:9:2:9 | self | +| accessors2.swift:2:9:2:9 | set | accessors2.swift:2:9:2:9 | self | +| accessors2.swift:3:9:3:9 | set | accessors2.swift:3:9:3:9 | self | +| accessors2.swift:4:9:6:9 | read | accessors2.swift:4:9:4:9 | self | +| accessors2.swift:7:9:9:9 | modify | accessors2.swift:7:9:7:9 | self | | accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | self | | accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | self | | accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | self | @@ -111,7 +133,11 @@ getSelfParam | accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | self | | accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:9:39:9 | self | | accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:9:42:9 | self | +| accessors.swift:48:9:48:16 | init | accessors.swift:48:9:48:9 | self | +| accessors.swift:50:9:50:18 | get | accessors.swift:50:9:50:9 | self | getParam +| accessors2.swift:2:9:2:9 | set | 0 | accessors2.swift:2:9:2:9 | value | +| accessors2.swift:3:9:3:9 | set | 0 | accessors2.swift:3:9:3:9 | value | | accessors.swift:2:9:2:9 | set | 0 | accessors.swift:2:9:2:9 | value | | accessors.swift:5:9:5:42 | set | 0 | accessors.swift:5:13:5:13 | newValue | | accessors.swift:7:9:7:9 | set | 0 | accessors.swift:7:9:7:9 | value | @@ -125,7 +151,14 @@ getParam | accessors.swift:24:9:24:19 | willSet | 0 | accessors.swift:24:9:24:9 | newValue | | accessors.swift:29:9:29:9 | set | 0 | accessors.swift:29:9:29:9 | value | | accessors.swift:38:9:38:9 | set | 0 | accessors.swift:38:9:38:9 | value | +| accessors.swift:48:9:48:16 | init | 0 | accessors.swift:48:9:48:9 | newValue | getBody +| accessors2.swift:2:9:2:9 | get | accessors2.swift:2:9:2:9 | { ... } | +| accessors2.swift:2:9:2:9 | modify | accessors2.swift:2:9:2:9 | { ... } | +| accessors2.swift:2:9:2:9 | set | accessors2.swift:2:9:2:9 | { ... } | +| accessors2.swift:3:9:3:9 | set | accessors2.swift:3:9:3:9 | { ... } | +| accessors2.swift:4:9:6:9 | read | accessors2.swift:4:14:6:9 | { ... } | +| accessors2.swift:7:9:9:9 | modify | accessors2.swift:7:16:9:9 | { ... } | | accessors.swift:2:9:2:9 | _modify | accessors.swift:2:9:2:9 | { ... } | | accessors.swift:2:9:2:9 | get | accessors.swift:2:9:2:9 | { ... } | | accessors.swift:2:9:2:9 | set | accessors.swift:2:9:2:9 | { ... } | @@ -162,4 +195,6 @@ getBody | accessors.swift:38:9:38:9 | set | accessors.swift:38:9:38:9 | { ... } | | accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:23:41:9 | { ... } | | accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:30:44:9 | { ... } | +| accessors.swift:48:9:48:16 | init | accessors.swift:48:14:48:16 | { ... } | +| accessors.swift:50:9:50:18 | get | accessors.swift:50:13:50:18 | { ... } | getCapture diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql index f05c5d94bba..b5821ca1903 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql @@ -8,7 +8,9 @@ query predicate instances( string isSetter, string isWillSet__label, string isWillSet, string isDidSet__label, string isDidSet, string isRead__label, string isRead, string isModify__label, string isModify, string isUnsafeAddress__label, string isUnsafeAddress, string isUnsafeMutableAddress__label, - string isUnsafeMutableAddress + string isUnsafeMutableAddress, string isDistributedGet__label, string isDistributedGet, + string isRead2__label, string isRead2, string isModify2__label, string isModify2, + string isInit__label, string isInit ) { toBeTested(x) and not x.isUnknown() and @@ -31,9 +33,19 @@ query predicate instances( isUnsafeAddress__label = "isUnsafeAddress:" and (if x.isUnsafeAddress() then isUnsafeAddress = "yes" else isUnsafeAddress = "no") and isUnsafeMutableAddress__label = "isUnsafeMutableAddress:" and - if x.isUnsafeMutableAddress() - then isUnsafeMutableAddress = "yes" - else isUnsafeMutableAddress = "no" + ( + if x.isUnsafeMutableAddress() + then isUnsafeMutableAddress = "yes" + else isUnsafeMutableAddress = "no" + ) and + isDistributedGet__label = "isDistributedGet:" and + (if x.isDistributedGet() then isDistributedGet = "yes" else isDistributedGet = "no") and + isRead2__label = "isRead2:" and + (if x.isRead2() then isRead2 = "yes" else isRead2 = "no") and + isModify2__label = "isModify2:" and + (if x.isModify2() then isModify2 = "yes" else isModify2 = "no") and + isInit__label = "isInit:" and + if x.isInit() then isInit = "yes" else isInit = "no" } query predicate getGenericTypeParam(Accessor x, int index, GenericTypeParamDecl getGenericTypeParam) { diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors.swift b/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors.swift index 2f645a1592e..6f3433c2024 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors.swift +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors.swift @@ -43,4 +43,10 @@ struct Foo { return UnsafeMutablePointer(bitPattern: 0)! } } + + var hasInit: Int { + init { } + + get { 42 } + } } diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors2.swift b/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors2.swift new file mode 100644 index 00000000000..e5f7f8d4aee --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/accessors2.swift @@ -0,0 +1,13 @@ +struct Foo2 { + var x = 11 + var borrowedProp: Int { + read { + yield x + } + modify { + yield &x + } + } +} + +//codeql-extractor-options: -enable-experimental-feature CoroutineAccessors diff --git a/swift/schema.py b/swift/schema.py index 6ef7b1bc21a..9beae81d981 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -315,6 +315,10 @@ class Accessor(AccessorOrNamedFunction): is_modify: predicate | doc('this accessor is a `_modify` coroutine, yielding an inout value of the property') is_unsafe_address: predicate | doc('this accessor is an `unsafeAddress` immutable addressor') is_unsafe_mutable_address: predicate | doc('this accessor is an `unsafeMutableAddress` mutable addressor') + is_distributed_get: predicate | doc('this accessor is a distributed getter') + is_read2: predicate | doc('this accessor is a `read` coroutine, yielding a borrowed value of the property') + is_modify2: predicate | doc('this accessor is a `modify` coroutine, yielding an inout value of the property') + is_init: predicate | doc('this accessor is an `init` accessor') class AssociatedTypeDecl(AbstractTypeParamDecl): pass From 119b058629a2497130fb2af632a58f21492673f8 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 30 Oct 2025 15:00:55 +0100 Subject: [PATCH 474/965] Swift: Handle method and initializer key path components in QL Note that it does not seem to be possible to write test that exercise this code. Passing `-enable-experimental-feature KeyPathWithMethodMembers` to the extractor results in: ``` error: experimental feature 'KeyPathWithMethodMembers' cannot be enabled in production compiler ``` --- swift/ql/.generated.list | 4 ++-- .../elements/internal/KeyPathComponentImpl.qll | 5 +++++ .../codeql/swift/generated/KeyPathComponent.qll | 14 ++++++-------- swift/ql/lib/codeql/swift/generated/Raw.qll | 14 ++++++-------- .../elements/KeyPathComponent/KindAccessors.ql | 9 +++++---- swift/schema.py | 14 ++++++-------- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 3bfeb2a8b95..0b55162d56f 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -724,13 +724,13 @@ lib/codeql/swift/generated/Diagnostics.qll 03ea201db80d33b18f7f6c71267044c695c25 lib/codeql/swift/generated/Element.qll bf8f688e05f44f18384067c3cab7f05796764e2b4cce7ff24da419c3dae26194 820390ffbb1012f73267668626f7d0ccd368500331c91bbc276fcb1c25037e41 lib/codeql/swift/generated/ErrorElement.qll b39bd7c8b4e2011f4a6889e073ebf5b628db32f36f50b067250ae730d9f26561 fd859ec969ba434049e7ba4e78271cc8cebc8b058d2e96e4d47a22064cbb5a21 lib/codeql/swift/generated/File.qll 476ac95566ef0080e0ad8c3da144b1be1d945d2f33a24f0864d85ff7c56a09b1 3134018bb50166cbf2690f64bba551cace350e4a7e6e25bcded18f997ad1835b -lib/codeql/swift/generated/KeyPathComponent.qll 99d1699394bb7f9ff904e2d44149f20d3e08e35df171a6141f111c9ac9138b62 d8f62f60cc2c1e73146af79e5567c04cd273b73bfb5202bda964ec15032cb040 +lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9eae0b61e5ddf16d29f2c58e2a79a6aa6 3371ae8f26dd5168ac1593bc92a4acd5105905a10a2d696d9ff5478370e6b055 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll f64459f6113f9b568cb876b4a896d29e519b5ac2c89322614f52e981ab4aedc1 66440d5f6927641b4ffb38d2930af0dd6d5428fcdc4bd1a67868b2304a6b0ea8 +lib/codeql/swift/generated/Raw.qll 9cbbea49cef2a47eb3414a14f42571c7bef60fa816a4cec0e3f34206b7ceafa1 86cc2bf1675dfccacf6041ad343b0642650dd38f2956a9e7bd2bb3d0f2cd90d1 lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d diff --git a/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll b/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll index 36bd5312940..4a0de00bc91 100644 --- a/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll +++ b/swift/ql/lib/codeql/swift/elements/internal/KeyPathComponentImpl.qll @@ -7,6 +7,11 @@ module Impl { * A component of a `KeyPathExpr`. */ class KeyPathComponent extends Generated::KeyPathComponent { + /** + * Method or initializer application like `.bar` in `\Foo.bar` with `bar` a method. + */ + predicate isApply() { this.getKind() = 4 } + /** * Property access like `.bar` in `\Foo.bar`. */ diff --git a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll index 99134a458c9..d5ce489fa52 100644 --- a/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll +++ b/swift/ql/lib/codeql/swift/generated/KeyPathComponent.qll @@ -29,15 +29,13 @@ module Generated { * * INTERNAL: Do not use. * - * TODO: Swift 6.2 update with UnresolvedApply and Apply + * This is 4 for method or initializer application, 5 for members, 6 for array and dictionary + * subscripts, 7 for optional forcing (`!`), 8 for optional chaining (`?`), 9 for implicit + * optional wrapping, 10 for `self`, and 11 for tuple element indexing. * - * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing - * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, - * and 11 for tuple element indexing. - * - * The following values should not appear: 0 for invalid components, 2 for unresolved - * properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for - * implicit IDE code completion data. + * The following values should not appear: 0 for invalid components, 1 for unresolved + * method or initializer applications, 2 for unresolved members, 3 for unresolved subscripts, + * 12 for #keyPath dictionary keys, and 13 for implicit IDE code completion data. */ int getKind() { result = Synth::convertKeyPathComponentToRaw(this).(Raw::KeyPathComponent).getKind() diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 11c4af13f15..b9eede08747 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -226,15 +226,13 @@ module Raw { * * INTERNAL: Do not use. * - * TODO: Swift 6.2 update with UnresolvedApply and Apply + * This is 4 for method or initializer application, 5 for members, 6 for array and dictionary + * subscripts, 7 for optional forcing (`!`), 8 for optional chaining (`?`), 9 for implicit + * optional wrapping, 10 for `self`, and 11 for tuple element indexing. * - * This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing - * (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, - * and 11 for tuple element indexing. - * - * The following values should not appear: 0 for invalid components, 2 for unresolved - * properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for - * implicit IDE code completion data. + * The following values should not appear: 0 for invalid components, 1 for unresolved + * method or initializer applications, 2 for unresolved members, 3 for unresolved subscripts, + * 12 for #keyPath dictionary keys, and 13 for implicit IDE code completion data. */ int getKind() { key_path_components(this, result, _) } diff --git a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.ql b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.ql index dc347a97287..f71806f0789 100644 --- a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.ql +++ b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.ql @@ -2,11 +2,12 @@ import codeql.swift.elements import TestUtils from - KeyPathComponent x, string property, string subscript, string opt_forcing, string opt_chaining, - string opt_wrapping, string self, string tuple_indexing + KeyPathComponent x, string apply, string property, string subscript, string opt_forcing, + string opt_chaining, string opt_wrapping, string self, string tuple_indexing where toBeTested(x) and not x.isUnknown() and + (if x.isApply() then apply = "apply" else apply = "") and (if x.isProperty() then property = "property" else property = "") and (if x.isSubscript() then subscript = "subscript" else subscript = "") and (if x.isOptionalForcing() then opt_forcing = "optional forcing" else opt_forcing = "") and @@ -14,5 +15,5 @@ where (if x.isOptionalWrapping() then opt_wrapping = "optional wrapping" else opt_wrapping = "") and (if x.isSelf() then self = "self" else self = "") and if x.isTupleIndexing() then tuple_indexing = "tuple indexing" else tuple_indexing = "" -select x, "getKind:", x.getKind(), property, subscript, opt_forcing, opt_chaining, opt_wrapping, - self, tuple_indexing +select x, "getKind:", x.getKind(), apply, property, subscript, opt_forcing, opt_chaining, + opt_wrapping, self, tuple_indexing diff --git a/swift/schema.py b/swift/schema.py index 9beae81d981..6c2fc29a2ab 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -490,15 +490,13 @@ class KeyPathComponent(AstNode): kind: int | doc("kind of key path component") | desc(""" INTERNAL: Do not use. - TODO: Swift 6.2 update with UnresolvedApply and Apply + This is 4 for method or initializer application, 5 for members, 6 for array and dictionary + subscripts, 7 for optional forcing (`!`), 8 for optional chaining (`?`), 9 for implicit + optional wrapping, 10 for `self`, and 11 for tuple element indexing. - This is 5 for properties, 6 for array and dictionary subscripts, 7 for optional forcing - (`!`), 8 for optional chaining (`?`), 9 for implicit optional wrapping, 10 for `self`, - and 11 for tuple element indexing. - - The following values should not appear: 0 for invalid components, 2 for unresolved - properties, 3 for unresolved subscripts, 12 for #keyPath dictionary keys, and 13 for - implicit IDE code completion data. + The following values should not appear: 0 for invalid components, 1 for unresolved + method or initializer applications, 2 for unresolved members, 3 for unresolved subscripts, + 12 for #keyPath dictionary keys, and 13 for implicit IDE code completion data. """) subscript_arguments : list[Argument] | child | doc( "arguments to an array or dictionary subscript expression") From 67b6b9cd158875116fcf808d0e50a34f222d5ad8 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 30 Oct 2025 15:29:11 +0100 Subject: [PATCH 475/965] Swift: Support `UnsafeExpr` --- swift/extractor/infra/SwiftTagTraits.h | 2 +- swift/ql/.generated.list | 14 +++++++---- swift/ql/.gitattributes | 4 ++++ swift/ql/lib/codeql/swift/elements.qll | 1 + .../codeql/swift/elements/expr/UnsafeExpr.qll | 9 ++++++++ .../expr/internal/UnsafeExprConstructor.qll | 14 +++++++++++ .../elements/expr/internal/UnsafeExprImpl.qll | 16 +++++++++++++ .../codeql/swift/generated/ParentChild.qll | 14 +++++++++++ swift/ql/lib/codeql/swift/generated/Raw.qll | 7 ++++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 23 ++++++++++++++++++- .../swift/generated/SynthConstructors.qll | 1 + .../swift/generated/expr/UnsafeExpr.qll | 23 +++++++++++++++++++ swift/ql/lib/swift.dbscheme | 5 ++++ .../expr/IdentityExpr/IdentityExpr.expected | 4 ++++ .../IdentityExpr/identity_expressions.swift | 7 ++++++ swift/schema.py | 3 +++ 16 files changed, 140 insertions(+), 7 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/expr/UnsafeExpr.qll create mode 100644 swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll create mode 100644 swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll create mode 100644 swift/ql/lib/codeql/swift/generated/expr/UnsafeExpr.qll diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index 22587ee1800..3958b5c9c20 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -103,7 +103,7 @@ MAP(swift::Expr, ExprTag) MAP(swift::ParenExpr, ParenExprTag) MAP(swift::DotSelfExpr, DotSelfExprTag) MAP(swift::AwaitExpr, AwaitExprTag) - MAP(swift::UnsafeExpr, void) // TODO: Swift 6.2 + MAP(swift::UnsafeExpr, UnsafeExprTag) MAP(swift::BorrowExpr, BorrowExprTag) MAP(swift::UnresolvedMemberChainResultExpr, UnresolvedMemberChainResultExprTag) MAP(swift::AnyTryExpr, AnyTryExprTag) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 0b55162d56f..78cc1f35de3 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -240,6 +240,7 @@ lib/codeql/swift/elements/expr/UnresolvedPatternExpr.qll f27ef68f5bbb2d957513efd lib/codeql/swift/elements/expr/UnresolvedSpecializeExpr.qll 9e1b27d90419e757480d0ae369bec1f159de3c28ddf760cdf24dd30b0ec6fcf9 1aeab5e10b1c3f081c5c3ca5bd807bfc38726a7b21b7201e0a9f997572935c73 lib/codeql/swift/elements/expr/UnresolvedTypeConversionExpr.qll e259a187d70ea6b6007ebdd3659aa7e1947b2dc606642ccda27309ff74ffc3db c6a85856f82e74ed5597e381a5e4c27927eb4f01c7b588b1f4277dfb0e977521 lib/codeql/swift/elements/expr/UnsafeCastExpr.qll 09c18a43f66432340b3212cb1933e096faf3825fa0a9abb30f7be11f170b6f97 93f35d500d67b71ed52d508ca9f7236c671f5b68a0ce6a0ee6a1a03d2b5db290 +lib/codeql/swift/elements/expr/UnsafeExpr.qll 49f076af1e154ff5eb6588f77e6532e75b4b6d9710185443fd48740bc5aaba99 7c558095d3be8401aa4d9065bd86110959cbced7f5d65f8120530d5497b3de15 lib/codeql/swift/elements/expr/VarargExpansionExpr.qll c7d7574caaac88fd73e69e82a84ca924e078eece0fd85a476b4a831e23b425f9 27213c88f864b7f8fd73edf8951e04a5ae7a57140a387df7c03dc1544ced723b lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprConstructor.qll de9d2daf68b754e783374d017116606c8cd0710dbf8989d3606939e977dc672c 63c5ddb9da56da2c9637d7a0a6d9d069f745b4c095b07c9494a0b3a7e11be95b lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprImpl.qll 6b2c51a5a5dd17044c6f5510048a9a2187aac9d35a70541faa9400406e35bc1e 448c23eec2ef44bd90e6c1636e3e881ca3447198eb68b8261412f42c4995b766 @@ -429,6 +430,8 @@ lib/codeql/swift/elements/expr/internal/UnresolvedTypeConversionExprConstructor. lib/codeql/swift/elements/expr/internal/UnresolvedTypeConversionExprImpl.qll 3511bf1bea3e3cee95c0793e40000493537076d76f235bfe91866e1e0caf97ab b97de4c795e873acee89d9b87d8c58b14e05f0c09e3a0385a479638adcf32966 lib/codeql/swift/elements/expr/internal/UnsafeCastExprConstructor.qll f8771eb8f677003fc62a2f78dcdffc46ee5510001428dde58a7e9d82746b6f97 f20eb160de27d9413a3b5d7ace406fe5f6912ad5720db85d8a12c48c71e42b35 lib/codeql/swift/elements/expr/internal/UnsafeCastExprImpl.qll 787104ce97d702c0c3efa81a0f8416584f35c454d3b2ffe7bd0917861589612b 50496a0f3f3a9e3d5a2e6cbcd5eb16b634cf3fd5e0878bdf017678243dbfd8a0 +lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll e7644366f93dfab6ae13910908a18a3a79aa7aee728c62da0bda158fe18279dd 7b9d866b762e1b49a9fa3320247b6c9f8d3f80283e2521c58a422dc73a15f6ce +lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll bae39cfbca303a18001397aa5f24c9ae59cd6c722e0db9488c48173027529a8a f0de29ed4b8b53b5b6f0cabf94d64eb3559f6b5462fe80bcbce062c7588371fb lib/codeql/swift/elements/expr/internal/VarargExpansionExprConstructor.qll 917701083da11fce895c53d5f3e0a52b8e3142e9aacdf1d8536a4216ef377b16 b72ca103ced9cbb45f2ef9387387b8aaf3134e358ae5a03fa3ea242896954c81 lib/codeql/swift/elements/internal/AvailabilityInfoConstructor.qll 89c731f266122a3434b88dfd573d68c50b5c4fa5e13c2443c54f78e682190d1e 86beb6f684e08b6f557b7d67bc164113e9f5270c09bbe95fbd81c558d77f7f84 lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll cca46cd2908923a08b7f6a8bea0c0c11071523bcc421bfe141d0e0bafd8dfcb4 cbb1494346379083c0f275111eca78617591568894258a6b73efda34f3fba1ba @@ -712,7 +715,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll 84a5704b697f4a3f224ec2b99d49f4d2a6ee2655aa86c72ea1cbc901b8231879 84a5704b697f4a3f224ec2b99d49f4d2a6ee2655aa86c72ea1cbc901b8231879 +lib/codeql/swift/elements.qll 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e @@ -728,11 +731,11 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll 88a8941821b1f511925eb8955ff25065a6004c61aa866854ee941d7556b1eb6d 6e32b4902cea8a78a9b2775826d64300987932c406212d841deeab7c48a5ef8b +lib/codeql/swift/generated/ParentChild.qll d136a88003d899184c4d9c9d88d4ab8fe0f66d5499dc36408e94e801a7a69977 e22fd02176b000e7797d535c9609e309d55f878cffdc0aead44b33ab9c0aa3da lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 9cbbea49cef2a47eb3414a14f42571c7bef60fa816a4cec0e3f34206b7ceafa1 86cc2bf1675dfccacf6041ad343b0642650dd38f2956a9e7bd2bb3d0f2cd90d1 -lib/codeql/swift/generated/Synth.qll a472fca73084eedab9ca8bb2fb82e7573d525444bb8d3729a3d18e06647fd96d b19984583774e30dae481d3d5cc95ebf2843c04dd952eb16cbf8a702ae52bbd8 -lib/codeql/swift/generated/SynthConstructors.qll f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 f3687a56d2fd9bc38d95d9ca335f558a91c865bd0bd1c7c73affedefd7514183 +lib/codeql/swift/generated/Raw.qll cd9af8d346b1c9b1ed7dbcce0689501ebb5c3664c05ada9ef74d0384d8fb7631 614d653e9a61b574ac5a4c7aaa6d686679532248d281dfd6f16b4dc0c2d04de5 +lib/codeql/swift/generated/Synth.qll adf8b1d9b1548ff3108e9f781e984475199d13b9f76001f04e76f3f47172c963 73dec964f00acde797be627aeb7af8f60589fb2c43f94faedd71861b9d07e704 +lib/codeql/swift/generated/SynthConstructors.qll 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 @@ -914,6 +917,7 @@ lib/codeql/swift/generated/expr/UnresolvedPatternExpr.qll f197e1f19aa3b7641df8e9 lib/codeql/swift/generated/expr/UnresolvedSpecializeExpr.qll 5b6d9a88439442624051af347514b0a9fd5e932a440979778cf4072f71317770 a8f10642376f9ffa7f7cc73ca81e1a1f5905778a2752f20360f8a84f333dbfdd lib/codeql/swift/generated/expr/UnresolvedTypeConversionExpr.qll f30db08dbb5fce2bf6149238f608c62b51079c3694ed80d15ddcbecb2af75346 71b60e93c67f7b66468400ce9cc8714c9ead1bacaa7ce27e9df94542b41318f9 lib/codeql/swift/generated/expr/UnsafeCastExpr.qll ec430464e1b6253dfcf0d17c08a01efae318b3f0c8beb7c977209504ccc2cc4f 48d5a80c96dfa71e091be2ce13ab7123997a37f8bcbaa6bde070493286f6b7f0 +lib/codeql/swift/generated/expr/UnsafeExpr.qll 5c81d5ebcd95bb217703298b25741b84804d52536cbc70ddf51896cc8e84441c 9bfacf26cc4aa119a47db4b968e81e0db45aecf48390eb67d690053700aecfcb lib/codeql/swift/generated/expr/VarargExpansionExpr.qll 3f382a545ef79ef5cd7eadf397f01524769d5fa0ee6410f1d92ff6b9985a99ff ffe8d0caec0226a13599de646f9e0c5f0e1af3c2b7ed480b327f2d51850e9e32 lib/codeql/swift/generated/pattern/AnyPattern.qll af808c11b81a388f7d35bd98b6abf0fef45a1e1ec850cad16abb754c97c4da82 5c6cb800d4f026792a49fb84a3404f0797e599425bc54f474e3df6a948c18cfe lib/codeql/swift/generated/pattern/BindingPattern.qll ec7a78c6f2c2e56494d87c8865da2028cc65875edc516fdbdbde8f2fc80a28e7 df9988a745548d8920a78c0aca6692b24e6dad19251420208d050ee4eb39eee3 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index c9f34f4cbd1..08f9b870a44 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -242,6 +242,7 @@ /lib/codeql/swift/elements/expr/UnresolvedSpecializeExpr.qll linguist-generated /lib/codeql/swift/elements/expr/UnresolvedTypeConversionExpr.qll linguist-generated /lib/codeql/swift/elements/expr/UnsafeCastExpr.qll linguist-generated +/lib/codeql/swift/elements/expr/UnsafeExpr.qll linguist-generated /lib/codeql/swift/elements/expr/VarargExpansionExpr.qll linguist-generated /lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprConstructor.qll linguist-generated /lib/codeql/swift/elements/expr/internal/AbiSafeConversionExprImpl.qll linguist-generated @@ -431,6 +432,8 @@ /lib/codeql/swift/elements/expr/internal/UnresolvedTypeConversionExprImpl.qll linguist-generated /lib/codeql/swift/elements/expr/internal/UnsafeCastExprConstructor.qll linguist-generated /lib/codeql/swift/elements/expr/internal/UnsafeCastExprImpl.qll linguist-generated +/lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll linguist-generated +/lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll linguist-generated /lib/codeql/swift/elements/expr/internal/VarargExpansionExprConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/AvailabilityInfoConstructor.qll linguist-generated /lib/codeql/swift/elements/internal/AvailabilitySpecConstructor.qll linguist-generated @@ -916,6 +919,7 @@ /lib/codeql/swift/generated/expr/UnresolvedSpecializeExpr.qll linguist-generated /lib/codeql/swift/generated/expr/UnresolvedTypeConversionExpr.qll linguist-generated /lib/codeql/swift/generated/expr/UnsafeCastExpr.qll linguist-generated +/lib/codeql/swift/generated/expr/UnsafeExpr.qll linguist-generated /lib/codeql/swift/generated/expr/VarargExpansionExpr.qll linguist-generated /lib/codeql/swift/generated/pattern/AnyPattern.qll linguist-generated /lib/codeql/swift/generated/pattern/BindingPattern.qll linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index bbe002a6761..df3acd2895a 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -195,6 +195,7 @@ import codeql.swift.elements.expr.UnresolvedPatternExpr import codeql.swift.elements.expr.UnresolvedSpecializeExpr import codeql.swift.elements.expr.UnresolvedTypeConversionExpr import codeql.swift.elements.expr.UnsafeCastExpr +import codeql.swift.elements.expr.UnsafeExpr import codeql.swift.elements.expr.VarargExpansionExpr import codeql.swift.elements.pattern.AnyPattern import codeql.swift.elements.pattern.BindingPattern diff --git a/swift/ql/lib/codeql/swift/elements/expr/UnsafeExpr.qll b/swift/ql/lib/codeql/swift/elements/expr/UnsafeExpr.qll new file mode 100644 index 00000000000..47d5c23d545 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/expr/UnsafeExpr.qll @@ -0,0 +1,9 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the public class `UnsafeExpr`. + */ + +private import internal.UnsafeExprImpl +import codeql.swift.elements.expr.IdentityExpr + +final class UnsafeExpr = Impl::UnsafeExpr; diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll new file mode 100644 index 00000000000..991dd41dcce --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `UnsafeExpr` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.Raw + +/** + * The characteristic predicate of `UnsafeExpr` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructUnsafeExpr(Raw::UnsafeExpr id) { any() } diff --git a/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll b/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll new file mode 100644 index 00000000000..6cb576c1a10 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/expr/internal/UnsafeExprImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `UnsafeExpr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.expr.UnsafeExpr + +/** + * INTERNAL: This module contains the customizable definition of `UnsafeExpr` and should not + * be referenced directly. + */ +module Impl { + class UnsafeExpr extends Generated::UnsafeExpr { } +} diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index c5bd9278356..e30256f1561 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -2235,6 +2235,18 @@ private module Impl { ) } + private Element getImmediateChildOfUnsafeExpr(UnsafeExpr e, int index, string partialPredicateCall) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" + ) + ) + } + private Element getImmediateChildOfBooleanLiteralExpr( BooleanLiteralExpr e, int index, string partialPredicateCall ) { @@ -3470,6 +3482,8 @@ private module Impl { or result = getImmediateChildOfUnsafeCastExpr(e, index, partialAccessor) or + result = getImmediateChildOfUnsafeExpr(e, index, partialAccessor) + or result = getImmediateChildOfBooleanLiteralExpr(e, index, partialAccessor) or result = getImmediateChildOfConditionalCheckedCastExpr(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index b9eede08747..2647f25864b 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -2517,6 +2517,13 @@ module Raw { override string toString() { result = "UnsafeCastExpr" } } + /** + * INTERNAL: Do not use. + */ + class UnsafeExpr extends @unsafe_expr, IdentityExpr { + override string toString() { result = "UnsafeExpr" } + } + /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 55ce9392000..ad6b311b320 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -718,6 +718,10 @@ module Synth { * INTERNAL: Do not use. */ TUnsafeCastExpr(Raw::UnsafeCastExpr id) { constructUnsafeCastExpr(id) } or + /** + * INTERNAL: Do not use. + */ + TUnsafeExpr(Raw::UnsafeExpr id) { constructUnsafeExpr(id) } or /** * INTERNAL: Do not use. */ @@ -1277,7 +1281,8 @@ module Synth { * INTERNAL: Do not use. */ class TIdentityExpr = - TAwaitExpr or TBorrowExpr or TDotSelfExpr or TParenExpr or TUnresolvedMemberChainResultExpr; + TAwaitExpr or TBorrowExpr or TDotSelfExpr or TParenExpr or TUnresolvedMemberChainResultExpr or + TUnsafeExpr; /** * INTERNAL: Do not use. @@ -2570,6 +2575,12 @@ module Synth { */ TUnsafeCastExpr convertUnsafeCastExprFromRaw(Raw::Element e) { result = TUnsafeCastExpr(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TUnsafeExpr`, if possible. + */ + TUnsafeExpr convertUnsafeExprFromRaw(Raw::Element e) { result = TUnsafeExpr(e) } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TVarargExpansionExpr`, if possible. @@ -3706,6 +3717,8 @@ module Synth { result = convertParenExprFromRaw(e) or result = convertUnresolvedMemberChainResultExprFromRaw(e) + or + result = convertUnsafeExprFromRaw(e) } /** @@ -5292,6 +5305,12 @@ module Synth { */ Raw::Element convertUnsafeCastExprToRaw(TUnsafeCastExpr e) { e = TUnsafeCastExpr(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TUnsafeExpr` to a raw DB element, if possible. + */ + Raw::Element convertUnsafeExprToRaw(TUnsafeExpr e) { e = TUnsafeExpr(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TVarargExpansionExpr` to a raw DB element, if possible. @@ -6428,6 +6447,8 @@ module Synth { result = convertParenExprToRaw(e) or result = convertUnresolvedMemberChainResultExprToRaw(e) + or + result = convertUnsafeExprToRaw(e) } /** diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 21431e563b2..46d7327da66 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -163,6 +163,7 @@ import codeql.swift.elements.expr.internal.UnresolvedPatternExprConstructor import codeql.swift.elements.expr.internal.UnresolvedSpecializeExprConstructor import codeql.swift.elements.expr.internal.UnresolvedTypeConversionExprConstructor import codeql.swift.elements.expr.internal.UnsafeCastExprConstructor +import codeql.swift.elements.expr.internal.UnsafeExprConstructor import codeql.swift.elements.expr.internal.VarargExpansionExprConstructor import codeql.swift.elements.pattern.internal.AnyPatternConstructor import codeql.swift.elements.pattern.internal.BindingPatternConstructor diff --git a/swift/ql/lib/codeql/swift/generated/expr/UnsafeExpr.qll b/swift/ql/lib/codeql/swift/generated/expr/UnsafeExpr.qll new file mode 100644 index 00000000000..28c18c953fe --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/expr/UnsafeExpr.qll @@ -0,0 +1,23 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the generated definition of `UnsafeExpr`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.expr.internal.IdentityExprImpl::Impl as IdentityExprImpl + +/** + * INTERNAL: This module contains the fully generated definition of `UnsafeExpr` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::UnsafeExpr` class directly. + * Use the subclass `UnsafeExpr`, where the following predicates are available. + */ + class UnsafeExpr extends Synth::TUnsafeExpr, IdentityExprImpl::IdentityExpr { + override string getAPrimaryQlClass() { result = "UnsafeExpr" } + } +} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index c26cf1904ee..0132d70ff64 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -1044,6 +1044,7 @@ force_value_exprs( //dir=expr | @dot_self_expr | @paren_expr | @unresolved_member_chain_result_expr +| @unsafe_expr ; #keyset[id] @@ -1693,6 +1694,10 @@ unsafe_cast_exprs( //dir=expr unique int id: @unsafe_cast_expr ); +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + boolean_literal_exprs( //dir=expr unique int id: @boolean_literal_expr, boolean value: boolean ref diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected index 8eb957d6089..e8976e41613 100644 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/IdentityExpr.expected @@ -8,6 +8,8 @@ instances | identity_expressions.swift:15:5:15:21 | await ... | AwaitExpr | getSubExpr: | identity_expressions.swift:15:11:15:21 | call to process() | | identity_expressions.swift:15:11:15:19 | (...) | ParenExpr | getSubExpr: | identity_expressions.swift:15:12:15:12 | process() | | identity_expressions.swift:18:9:18:17 | BorrowExpr | BorrowExpr | getSubExpr: | identity_expressions.swift:18:17:18:17 | x | +| identity_expressions.swift:23:33:23:40 | UnsafeExpr | UnsafeExpr | getSubExpr: | identity_expressions.swift:23:40:23:40 | y | +| identity_expressions.swift:24:13:24:20 | UnsafeExpr | UnsafeExpr | getSubExpr: | identity_expressions.swift:24:20:24:20 | x | getType | identity_expressions.swift:5:9:5:14 | .self | A | | identity_expressions.swift:5:9:5:21 | .self | @lvalue Int | @@ -18,3 +20,5 @@ getType | identity_expressions.swift:15:5:15:21 | await ... | () | | identity_expressions.swift:15:11:15:19 | (...) | () async -> () | | identity_expressions.swift:18:9:18:17 | BorrowExpr | Int | +| identity_expressions.swift:23:33:23:40 | UnsafeExpr | UnsafeType | +| identity_expressions.swift:24:13:24:20 | UnsafeExpr | UnsafeType | diff --git a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/identity_expressions.swift b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/identity_expressions.swift index 63ff2b690ce..ec2b39bece6 100644 --- a/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/identity_expressions.swift +++ b/swift/ql/test/extractor-tests/generated/expr/IdentityExpr/identity_expressions.swift @@ -16,3 +16,10 @@ Task.init { } let x = 42 let _ = _borrow x + +struct UnsafeType {} + +func unsafeFunc(_ y: UnsafeType) { + @unsafe let x: UnsafeType = unsafe y + let _ = unsafe x +} diff --git a/swift/schema.py b/swift/schema.py index 6c2fc29a2ab..54b3a3221e2 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -632,6 +632,9 @@ class AutoClosureExpr(ClosureExpr): class AwaitExpr(IdentityExpr): pass +class UnsafeExpr(IdentityExpr): + pass + class BinaryExpr(ApplyExpr): pass From b9d0cb7746d9cc9e3ded90eae42122050ebcd475 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 30 Oct 2025 16:00:12 +0100 Subject: [PATCH 476/965] Swift: Add basic support for experimental `using` decls Note that we cannot write tests for these at the moment. Passing ``` -enable-experimental-feature DefaultIsolationPerFile ``` to the extractor results in: ``` error: experimental feature 'DefaultIsolationPerFile' cannot be enabled in production compile ``` --- swift/extractor/infra/SwiftTagTraits.h | 2 +- .../extractor/translators/DeclTranslator.cpp | 13 +++++++ swift/extractor/translators/DeclTranslator.h | 1 + swift/ql/.generated.list | 15 +++++--- swift/ql/.gitattributes | 5 +++ swift/ql/lib/codeql/swift/elements.qll | 1 + .../codeql/swift/elements/decl/UsingDecl.qll | 9 +++++ .../decl/internal/UsingDeclConstructor.qll | 14 ++++++++ .../elements/decl/internal/UsingDeclImpl.qll | 16 +++++++++ .../codeql/swift/generated/ParentChild.qll | 15 ++++++++ swift/ql/lib/codeql/swift/generated/Raw.qll | 17 +++++++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 22 +++++++++++- .../swift/generated/SynthConstructors.qll | 1 + .../codeql/swift/generated/decl/UsingDecl.qll | 35 +++++++++++++++++++ swift/ql/lib/swift.dbscheme | 15 ++++++++ .../decl/UsingDecl/MISSING_SOURCE.txt | 4 +++ swift/schema.py | 4 +++ 17 files changed, 182 insertions(+), 7 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/decl/UsingDecl.qll create mode 100644 swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll create mode 100644 swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll create mode 100644 swift/ql/lib/codeql/swift/generated/decl/UsingDecl.qll create mode 100644 swift/ql/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index 3958b5c9c20..81154477e19 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -241,7 +241,7 @@ MAP(swift::Decl, DeclTag) MAP(swift::MissingMemberDecl, MissingMemberDeclTag) MAP(swift::PatternBindingDecl, PatternBindingDeclTag) MAP(swift::EnumCaseDecl, EnumCaseDeclTag) - MAP(swift::UsingDecl, void) // TODO: Swift 6.2 + MAP(swift::UsingDecl, UsingDeclTag) MAP(swift::OperatorDecl, OperatorDeclTag) MAP(swift::InfixOperatorDecl, InfixOperatorDeclTag) MAP(swift::PrefixOperatorDecl, PrefixOperatorDeclTag) diff --git a/swift/extractor/translators/DeclTranslator.cpp b/swift/extractor/translators/DeclTranslator.cpp index 0512b178f72..4a89d571c41 100644 --- a/swift/extractor/translators/DeclTranslator.cpp +++ b/swift/extractor/translators/DeclTranslator.cpp @@ -137,6 +137,19 @@ codeql::EnumCaseDecl DeclTranslator::translateEnumCaseDecl(const swift::EnumCase return entry; } +codeql::UsingDecl DeclTranslator::translateUsingDecl(const swift::UsingDecl& decl) { + auto entry = createEntry(decl); + switch (decl.getSpecifier()) { + case swift::UsingSpecifier::MainActor: + entry.is_main_actor = true; + break; + case swift::UsingSpecifier::Nonisolated: + entry.is_nonisolated = true; + break; + } + return entry; +} + codeql::EnumElementDecl DeclTranslator::translateEnumElementDecl( const swift::EnumElementDecl& decl) { auto entry = createEntry(decl); diff --git a/swift/extractor/translators/DeclTranslator.h b/swift/extractor/translators/DeclTranslator.h index 35372fb5f67..820edca194c 100644 --- a/swift/extractor/translators/DeclTranslator.h +++ b/swift/extractor/translators/DeclTranslator.h @@ -34,6 +34,7 @@ class DeclTranslator : public AstTranslatorBase { codeql::EnumDecl translateEnumDecl(const swift::EnumDecl& decl); codeql::ProtocolDecl translateProtocolDecl(const swift::ProtocolDecl& decl); codeql::EnumCaseDecl translateEnumCaseDecl(const swift::EnumCaseDecl& decl); + codeql::UsingDecl translateUsingDecl(const swift::UsingDecl& decl); codeql::EnumElementDecl translateEnumElementDecl(const swift::EnumElementDecl& decl); codeql::GenericTypeParamDecl translateGenericTypeParamDecl( const swift::GenericTypeParamDecl& decl); diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 78cc1f35de3..392ec64fada 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -56,6 +56,7 @@ lib/codeql/swift/elements/decl/SubscriptDecl.qll b55ac28cda7402efea4e57b6fe6c6b5 lib/codeql/swift/elements/decl/TopLevelCodeDecl.qll e5786a58e02c0d737ad382571ca6591bf18e0615b3d06b30a057209a80550e50 7b2cc05de78788cd862c8961e481a80b325b91e4fb64f22049564a21f0a5f95e lib/codeql/swift/elements/decl/TypeAliasDecl.qll 73e7ecca7d4faf078640a872f4857f465e80ce4d0c99017f3943419c8b65acf4 bfd14ad6a8411acb936036c4efc2ab4e1e165459eb270c02017b9f0de9a71fab lib/codeql/swift/elements/decl/TypeDecl.qll feb11a9eb276eff1eac5e72b5be4097fd4492c6dc81710d86c3eb55e37240795 2d1e4419aa05997e3149775a68e80065f5955fcaa141402c1892b7cb23ca58a2 +lib/codeql/swift/elements/decl/UsingDecl.qll 40fa34a7e7204ec53132cefa69857c9c4bfc286b8bd05e693a3ceead881e0e4a 44c62d2e4cc8b42481a999083b520e07c6d5e652677ac5b4c55887957be50e4e lib/codeql/swift/elements/decl/ValueDecl.qll f71d9aa147eb78894b5b1c292b13334b9661a0b4347a25803a118cdccfa29cf7 de304b3dc9c5b6e7d7a0d5989fd40e25827aefdd5062ab2634c0f8c79121cfd3 lib/codeql/swift/elements/decl/VarDecl.qll 5eb74f663d935328da028e892e8224a25e09c0edafa34b87471f57e4d7e51bdc 3f8e03ee0748ea67aa7a962a12c97fd20d37a1987cabadc0c1d5080900d149d5 lib/codeql/swift/elements/decl/internal/AbstractStorageDeclImpl.qll 56e7b7332f4a55a8860c03d0d756bfb31f66048c8082834a15bf613eca9d6e12 f6a9c384f9355bbc34e8c8654fd19f62ea2592c96b8bf79dcd2915406ff54f23 @@ -108,6 +109,8 @@ lib/codeql/swift/elements/decl/internal/StructDeclImpl.qll 9fc7b419040e509723320 lib/codeql/swift/elements/decl/internal/SubscriptDeclConstructor.qll 67882596f384f4710dd81aa284b53c7b3e9cd3c30f120e98252bfbd2f5dd34e1 f336269cdfbd3ef115ea29fe39c2d04deeb95ae8f927af27a4dc7acc4a14699a lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll 3924b6e5bee007fd62ae4b2352e38ae20292dbdab65fd1724ca9cd698bfc88f4 28ac8627c75cd787e6dca1a8bfed4c36edbfd13cdad19a08905a49d56b815ad7 lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll 1dc3d7ef11adf5fb9b4be1c824b8a49393137071584ed44224a2f47b3a0b8a4a 2e1e8222b851376b0d7843a93fb6affeac7f8ee52867623b1e2fa99c1ac37dbb +lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll 52fdc32c208571c3a0c588768cc65f04e708b8d7533b4d2d206734616f7d1475 aeece428c56101536ec8abd25364d208f1a020727d1294e9c97b13b7ab90f923 +lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll 49e5068c50f424d314d0c2df6723c17cb51bfab5a419b0d45d88f411f326e232 5389436fe692eb0ecf96e80555a589596e6c7b553d37f2990addd8a11e4efce0 lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll 62c6b231898c42a7756cae20ed9b3818958872cb581cca6f1db0b28e4cff9b93 b90f7496229e76a40ac66e8a3d0ac2f14c65d729ebeea796cb34f395f2858b32 lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll bbbc615255877e7fd95199710449fa696d68d81a4cfb985240d0cfbf124d9d37 526e7b4f2b5af5f2c8172b5d2c76c1f7198025e02c9e1068f92fa6c78cddeb81 lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll 3388c1ad2c9d984fb0a0368ef9090f03cc5bbd63088024308a056cabfb9c93c9 49e3450180b8a4626911fc83bd64d17e486fad6b50f33b55b9322faef1ced39f @@ -715,7 +718,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b +lib/codeql/swift/elements.qll 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55 lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e @@ -731,11 +734,11 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll d136a88003d899184c4d9c9d88d4ab8fe0f66d5499dc36408e94e801a7a69977 e22fd02176b000e7797d535c9609e309d55f878cffdc0aead44b33ab9c0aa3da +lib/codeql/swift/generated/ParentChild.qll 2d73f037f2a8d0f1d056ba7eb9d254275d46e5111617f262d8c618c3abb14050 e50636c770a5152be79e1cbc4528633233c2449c9c99c1a359e0e880bf93169f lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll cd9af8d346b1c9b1ed7dbcce0689501ebb5c3664c05ada9ef74d0384d8fb7631 614d653e9a61b574ac5a4c7aaa6d686679532248d281dfd6f16b4dc0c2d04de5 -lib/codeql/swift/generated/Synth.qll adf8b1d9b1548ff3108e9f781e984475199d13b9f76001f04e76f3f47172c963 73dec964f00acde797be627aeb7af8f60589fb2c43f94faedd71861b9d07e704 -lib/codeql/swift/generated/SynthConstructors.qll 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd +lib/codeql/swift/generated/Raw.qll 70e9ee68fe351433246ad62deab892587647630947220645c025460bdbd7ca6e 6948032896309b0885fda6f92269ac300f274d671a43d80bebb17e283c510efd +lib/codeql/swift/generated/Synth.qll d66a45f1572d722463cf3490ad1f3aefdf3197090c4d20f362fa2e71975095c2 36d89d310bb49a4d958e085203e16079bf77e1f32428808f995a00261b34820f +lib/codeql/swift/generated/SynthConstructors.qll 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 @@ -780,6 +783,7 @@ lib/codeql/swift/generated/decl/SubscriptDecl.qll 18d84b4ef27ecb732ac4350b8b01cb lib/codeql/swift/generated/decl/TopLevelCodeDecl.qll b327da6de5b1e40f5eea5893f4fcb01803cfdd78bd757ec93daadedb7169bf8d 2d316fff198707fae5a43e6b24d2a547ee9502fd278468846495d1b2f4ea62b1 lib/codeql/swift/generated/decl/TypeAliasDecl.qll 041c098c276bc7369049e9a11540e99b061d50977338cceca47488f82b21694e 06deed614cbe77031fdbf3f9591780e80b9f545adec8b7831a2b5329ee49bc5f lib/codeql/swift/generated/decl/TypeDecl.qll 92f74709cce7e9f0f713598d3b20b730475c312957c518b8096206f8744419a2 305bda46c8bef48b7e30392698e724093ab2984ffed74cae3361f818cbf8c77a +lib/codeql/swift/generated/decl/UsingDecl.qll 3bb697961f5699ec9ed1b87511714eac4ee69f5d82e1fd8c6598f121e23a2f7b 4e72b98a84f796d3e0e556ae6b84bf7b7f08adc225dcdc00fd120461e287b472 lib/codeql/swift/generated/decl/ValueDecl.qll d3b9c241fd6cb1ce8274435c0242775c28c08f6a47caae01ad1ecd38897b2cd5 bc81291b1394b47972d7b75b6a767ed847f881932a7d9345d28d161a55b66bd1 lib/codeql/swift/generated/decl/VarDecl.qll 8978a73fa2d7a9f952b68a2638788eda857e62502311a33fa6de1dad49a6cb1c b8b6c8cf6773056c3a90494754b0a257dcae494c03d933f138ece7f531fb9158 lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll 9d8f0f895a5e1abb89bed9671a9b398e48eca4664eb10b4b41263eb2a29bb2cf 4f65b8e62876664a357433f886baccaf40e4bf7e9ca7eebeb9f5d999354578f9 @@ -1067,6 +1071,7 @@ test/extractor-tests/generated/decl/StructDecl/MISSING_SOURCE.txt 35fb32ea539315 test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d +test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql 612ed1b62baed51cb74ea682512de8042c71cc14c99f966f8de33c65c8be7cdf 390197357690dd42d23ee5f0670f1183139cfbdd63f67c7430dd62c51e5d9426 test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 08f9b870a44..c3d4f70cf4f 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -58,6 +58,7 @@ /lib/codeql/swift/elements/decl/TopLevelCodeDecl.qll linguist-generated /lib/codeql/swift/elements/decl/TypeAliasDecl.qll linguist-generated /lib/codeql/swift/elements/decl/TypeDecl.qll linguist-generated +/lib/codeql/swift/elements/decl/UsingDecl.qll linguist-generated /lib/codeql/swift/elements/decl/ValueDecl.qll linguist-generated /lib/codeql/swift/elements/decl/VarDecl.qll linguist-generated /lib/codeql/swift/elements/decl/internal/AbstractStorageDeclImpl.qll linguist-generated @@ -110,6 +111,8 @@ /lib/codeql/swift/elements/decl/internal/SubscriptDeclConstructor.qll linguist-generated /lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll linguist-generated /lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll linguist-generated +/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll linguist-generated +/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll linguist-generated /lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll linguist-generated /lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll linguist-generated /lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll linguist-generated @@ -782,6 +785,7 @@ /lib/codeql/swift/generated/decl/TopLevelCodeDecl.qll linguist-generated /lib/codeql/swift/generated/decl/TypeAliasDecl.qll linguist-generated /lib/codeql/swift/generated/decl/TypeDecl.qll linguist-generated +/lib/codeql/swift/generated/decl/UsingDecl.qll linguist-generated /lib/codeql/swift/generated/decl/ValueDecl.qll linguist-generated /lib/codeql/swift/generated/decl/VarDecl.qll linguist-generated /lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll linguist-generated @@ -1069,6 +1073,7 @@ /test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql linguist-generated /test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index df3acd2895a..8d6a470d5a2 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -61,6 +61,7 @@ import codeql.swift.elements.decl.SubscriptDecl import codeql.swift.elements.decl.TopLevelCodeDecl import codeql.swift.elements.decl.TypeAliasDecl import codeql.swift.elements.decl.TypeDecl +import codeql.swift.elements.decl.UsingDecl import codeql.swift.elements.decl.ValueDecl import codeql.swift.elements.decl.VarDecl import codeql.swift.elements.expr.AbiSafeConversionExpr diff --git a/swift/ql/lib/codeql/swift/elements/decl/UsingDecl.qll b/swift/ql/lib/codeql/swift/elements/decl/UsingDecl.qll new file mode 100644 index 00000000000..b9f1afae331 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/decl/UsingDecl.qll @@ -0,0 +1,9 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the public class `UsingDecl`. + */ + +private import internal.UsingDeclImpl +import codeql.swift.elements.decl.Decl + +final class UsingDecl = Impl::UsingDecl; diff --git a/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll b/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll new file mode 100644 index 00000000000..ce38d9324a5 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `UsingDecl` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.Raw + +/** + * The characteristic predicate of `UsingDecl` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructUsingDecl(Raw::UsingDecl id) { any() } diff --git a/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll b/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll new file mode 100644 index 00000000000..48e70936f40 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `UsingDecl`. + * + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.decl.UsingDecl + +/** + * INTERNAL: This module contains the customizable definition of `UsingDecl` and should not + * be referenced directly. + */ +module Impl { + class UsingDecl extends Generated::UsingDecl { } +} diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index e30256f1561..a94c71028d1 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -261,6 +261,19 @@ private module Impl { ) } + private Element getImmediateChildOfUsingDecl(UsingDecl e, int index, string partialPredicateCall) { + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + ( + none() + or + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" + ) + ) + } + private Element getImmediateChildOfEnumElementDecl( EnumElementDecl e, int index, string partialPredicateCall ) { @@ -3222,6 +3235,8 @@ private module Impl { or result = getImmediateChildOfTopLevelCodeDecl(e, index, partialAccessor) or + result = getImmediateChildOfUsingDecl(e, index, partialAccessor) + or result = getImmediateChildOfEnumElementDecl(e, index, partialAccessor) or result = getImmediateChildOfInfixOperatorDecl(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 2647f25864b..e979ccdfafb 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -520,6 +520,23 @@ module Raw { BraceStmt getBody() { top_level_code_decls(this, result) } } + /** + * INTERNAL: Do not use. + */ + class UsingDecl extends @using_decl, Decl { + override string toString() { result = "UsingDecl" } + + /** + * Holds if this using declaration is main actor. + */ + predicate isMainActor() { using_decl_is_main_actor(this) } + + /** + * Holds if this using declaration is nonisolated. + */ + predicate isNonisolated() { using_decl_is_nonisolated(this) } + } + /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index ad6b311b320..370d5be4dac 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -182,6 +182,10 @@ module Synth { * INTERNAL: Do not use. */ TTypeAliasDecl(Raw::TypeAliasDecl id) { constructTypeAliasDecl(id) } or + /** + * INTERNAL: Do not use. + */ + TUsingDecl(Raw::UsingDecl id) { constructUsingDecl(id) } or /** * INTERNAL: Do not use. */ @@ -1171,7 +1175,7 @@ module Synth { class TDecl = TCapturedDecl or TEnumCaseDecl or TExtensionDecl or TIfConfigDecl or TImportDecl or TMissingMemberDecl or TOperatorDecl or TPatternBindingDecl or TPoundDiagnosticDecl or - TPrecedenceGroupDecl or TTopLevelCodeDecl or TValueDecl; + TPrecedenceGroupDecl or TTopLevelCodeDecl or TUsingDecl or TValueDecl; /** * INTERNAL: Do not use. @@ -1715,6 +1719,12 @@ module Synth { */ TTypeAliasDecl convertTypeAliasDeclFromRaw(Raw::Element e) { result = TTypeAliasDecl(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TUsingDecl`, if possible. + */ + TUsingDecl convertUsingDeclFromRaw(Raw::Element e) { result = TUsingDecl(e) } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TAbiSafeConversionExpr`, if possible. @@ -3380,6 +3390,8 @@ module Synth { or result = convertTopLevelCodeDeclFromRaw(e) or + result = convertUsingDeclFromRaw(e) + or result = convertValueDeclFromRaw(e) } @@ -4447,6 +4459,12 @@ module Synth { */ Raw::Element convertTypeAliasDeclToRaw(TTypeAliasDecl e) { e = TTypeAliasDecl(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TUsingDecl` to a raw DB element, if possible. + */ + Raw::Element convertUsingDeclToRaw(TUsingDecl e) { e = TUsingDecl(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TAbiSafeConversionExpr` to a raw DB element, if possible. @@ -6110,6 +6128,8 @@ module Synth { or result = convertTopLevelCodeDeclToRaw(e) or + result = convertUsingDeclToRaw(e) + or result = convertValueDeclToRaw(e) } diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 46d7327da66..385aee2d5ca 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -43,6 +43,7 @@ import codeql.swift.elements.decl.internal.StructDeclConstructor import codeql.swift.elements.decl.internal.SubscriptDeclConstructor import codeql.swift.elements.decl.internal.TopLevelCodeDeclConstructor import codeql.swift.elements.decl.internal.TypeAliasDeclConstructor +import codeql.swift.elements.decl.internal.UsingDeclConstructor import codeql.swift.elements.expr.internal.AbiSafeConversionExprConstructor import codeql.swift.elements.expr.internal.ActorIsolationErasureExprConstructor import codeql.swift.elements.expr.internal.AnyHashableErasureExprConstructor diff --git a/swift/ql/lib/codeql/swift/generated/decl/UsingDecl.qll b/swift/ql/lib/codeql/swift/generated/decl/UsingDecl.qll new file mode 100644 index 00000000000..cfbd68f7656 --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/decl/UsingDecl.qll @@ -0,0 +1,35 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the generated definition of `UsingDecl`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.decl.internal.DeclImpl::Impl as DeclImpl + +/** + * INTERNAL: This module contains the fully generated definition of `UsingDecl` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::UsingDecl` class directly. + * Use the subclass `UsingDecl`, where the following predicates are available. + */ + class UsingDecl extends Synth::TUsingDecl, DeclImpl::Decl { + override string getAPrimaryQlClass() { result = "UsingDecl" } + + /** + * Holds if this using declaration is main actor. + */ + predicate isMainActor() { Synth::convertUsingDeclToRaw(this).(Raw::UsingDecl).isMainActor() } + + /** + * Holds if this using declaration is nonisolated. + */ + predicate isNonisolated() { + Synth::convertUsingDeclToRaw(this).(Raw::UsingDecl).isNonisolated() + } + } +} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 0132d70ff64..b754629f939 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -273,6 +273,7 @@ unspecified_element_children( | @pound_diagnostic_decl | @precedence_group_decl | @top_level_code_decl +| @using_decl | @value_decl ; @@ -425,6 +426,20 @@ top_level_code_decls( //dir=decl int body: @brace_stmt_or_none ref ); +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + @value_decl = @abstract_storage_decl | @enum_element_decl diff --git a/swift/ql/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt b/swift/ql/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt new file mode 100644 index 00000000000..bdba87873f2 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt @@ -0,0 +1,4 @@ +// generated by codegen/codegen.py, do not edit + +After a source file is added in this directory and codegen/codegen.py is run again, test queries +will appear and this file will be deleted diff --git a/swift/schema.py b/swift/schema.py index 54b3a3221e2..ebe5c36c4fb 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -117,6 +117,10 @@ class GenericContext(Element): class EnumCaseDecl(Decl): elements: list["EnumElementDecl"] +class UsingDecl(Decl): + is_main_actor: predicate + is_nonisolated: predicate + class ExtensionDecl(GenericContext, Decl): extended_type_decl: "NominalTypeDecl" protocols: list["ProtocolDecl"] From 72e8ec39513f6426a0568c83de816c5760dbcddc Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 30 Oct 2025 20:26:22 +0100 Subject: [PATCH 477/965] Swift: Update comment for `LocatableType`s --- swift/extractor/infra/SwiftTagTraits.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index 81154477e19..b270aa9ca91 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -342,7 +342,7 @@ MAP(swift::TypeBase, TypeTag) MAP(swift::IntegerType, IntegerTypeTag) MAP(swift::SugarType, SugarTypeTag) MAP(swift::TypeAliasType, TypeAliasTypeTag) - MAP(swift::LocatableType, void) // TODO: Swift 6.2 + MAP(swift::LocatableType, void) // created during type checking and only used for constraint checking MAP(swift::SyntaxSugarType, SyntaxSugarTypeTag) MAP(swift::UnarySyntaxSugarType, UnarySyntaxSugarTypeTag) MAP(swift::ArraySliceType, ArraySliceTypeTag) From f4d1e1c034cc2e6515059a559e61885e0e252028 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 10:15:07 +0100 Subject: [PATCH 478/965] Swift: Handle `InlineArrayType`s --- swift/extractor/infra/SwiftTagTraits.h | 2 +- .../extractor/translators/TypeTranslator.cpp | 8 +++ swift/extractor/translators/TypeTranslator.h | 1 + swift/ql/.generated.list | 15 ++-- swift/ql/.gitattributes | 5 ++ swift/ql/lib/codeql/swift/elements.qll | 1 + .../swift/elements/type/InlineArrayType.qll | 10 +++ .../internal/InlineArrayTypeConstructor.qll | 14 ++++ .../type/internal/InlineArrayTypeImpl.qll | 16 +++++ .../codeql/swift/generated/ParentChild.qll | 8 +++ swift/ql/lib/codeql/swift/generated/Raw.qll | 17 +++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 22 +++++- .../swift/generated/SynthConstructors.qll | 1 + .../swift/generated/type/InlineArrayType.qll | 70 +++++++++++++++++++ swift/ql/lib/swift.dbscheme | 7 ++ .../InlineArrayType/InlineArrayType.expected | 1 + .../type/InlineArrayType/InlineArrayType.ql | 20 ++++++ .../type/InlineArrayType/inline_array.swift | 5 ++ swift/schema.py | 4 ++ 19 files changed, 220 insertions(+), 7 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/type/InlineArrayType.qll create mode 100644 swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll create mode 100644 swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll create mode 100644 swift/ql/lib/codeql/swift/generated/type/InlineArrayType.qll create mode 100644 swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.expected create mode 100644 swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql create mode 100644 swift/ql/test/extractor-tests/generated/type/InlineArrayType/inline_array.swift diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index b270aa9ca91..806ad0a5ffd 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -348,7 +348,7 @@ MAP(swift::TypeBase, TypeTag) MAP(swift::ArraySliceType, ArraySliceTypeTag) MAP(swift::OptionalType, OptionalTypeTag) MAP(swift::VariadicSequenceType, VariadicSequenceTypeTag) - MAP(swift::InlineArrayType, void) // TODO: Swift 6.2 + MAP(swift::InlineArrayType, InlineArrayTypeTag) MAP(swift::DictionaryType, DictionaryTypeTag) MAP(swift::AvailabilitySpec, AvailabilitySpecTag) diff --git a/swift/extractor/translators/TypeTranslator.cpp b/swift/extractor/translators/TypeTranslator.cpp index 9872a5863d0..52d17c7a357 100644 --- a/swift/extractor/translators/TypeTranslator.cpp +++ b/swift/extractor/translators/TypeTranslator.cpp @@ -88,6 +88,14 @@ codeql::ArraySliceType TypeTranslator::translateArraySliceType(const swift::Arra return entry; } +codeql::InlineArrayType TypeTranslator::translateInlineArrayType( + const swift::InlineArrayType& type) { + auto entry = createTypeEntry(type); + entry.count_type = dispatcher.fetchLabel(type.getCountType()); + entry.element_type = dispatcher.fetchLabel(type.getElementType()); + return entry; +} + codeql::DictionaryType TypeTranslator::translateDictionaryType(const swift::DictionaryType& type) { auto entry = createTypeEntry(type); entry.key_type = dispatcher.fetchLabel(type.getKeyType()); diff --git a/swift/extractor/translators/TypeTranslator.h b/swift/extractor/translators/TypeTranslator.h index b82c0a57a9d..c65c0e757de 100644 --- a/swift/extractor/translators/TypeTranslator.h +++ b/swift/extractor/translators/TypeTranslator.h @@ -28,6 +28,7 @@ class TypeTranslator : public TypeTranslatorBase { const swift::UnarySyntaxSugarType& type); codeql::OptionalType translateOptionalType(const swift::OptionalType& type); codeql::ArraySliceType translateArraySliceType(const swift::ArraySliceType& type); + codeql::InlineArrayType translateInlineArrayType(const swift::InlineArrayType& type); codeql::DictionaryType translateDictionaryType(const swift::DictionaryType& type); codeql::GenericFunctionType translateGenericFunctionType(const swift::GenericFunctionType& type); codeql::GenericTypeParamType translateGenericTypeParamType( diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 392ec64fada..1d3e3da7e3e 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -564,6 +564,7 @@ lib/codeql/swift/elements/type/FunctionType.qll 1a64eb24e8baa74ef2a8e4451f97442a lib/codeql/swift/elements/type/GenericFunctionType.qll 8df1db2785c4e6b88f9af13eb7ba473f91459f57d19c4d706847ac6e3a02d64a 186efec4c23c372f9d9f7038d4b5a36f9c3184564e5b6899d2e467864977dd89 lib/codeql/swift/elements/type/GenericTypeParamType.qll d75c865295501f7efe27399ce93b30f6a4a217ed207e7227a5d9870cf536ad5f 1a764963700b872c8ea7afd586abbc0dadda68366555baefa6737d87b701a73f lib/codeql/swift/elements/type/InOutType.qll 3ff69b884d2604f66290b188892f1d9d4321bf77a20bcda2ce5cb69e565b0cfb 3cd2b06bc606d84b1d73b8fcd2aea4d49aed0c8b98902b44dd6f19d298db7f9d +lib/codeql/swift/elements/type/InlineArrayType.qll 6af5235213a7d861944e7450143393bf3f56acbe4ac86770aa3920f39f7e61cb 7e04b96dd988e2f7edd7e34d5cf4a787cbcb94b8d0c21417e3e4829112dbe34e lib/codeql/swift/elements/type/IntegerType.qll 118acea4a849506aeddd5df92e9f134bf611f8c08cb44e18dc56259df1c98e5f 6801c067c63e310f28fed70a7c1ed87d08be6b7070a7ec677517a93b6eab0c3f lib/codeql/swift/elements/type/LValueType.qll e1e53b1467f7b4ff77a812ae9cd8ce151cfc21443a4da14319aee390c081775c 42f5a39fb2c1e5dad3fef6db56430c6063cb04b1ba9c1f2b9c68356aef6aef1c lib/codeql/swift/elements/type/LocalArchetypeType.qll 449ff6d721a70a0f8f7a8e1604471513af1523bad6efcc49820154e4d42a426b 1121b807f15d442b708bb614b684ad3d0581c787bae4a16999b8dd7da5103ab6 @@ -666,6 +667,8 @@ lib/codeql/swift/elements/type/internal/GenericTypeParamTypeConstructor.qll b126 lib/codeql/swift/elements/type/internal/GenericTypeParamTypeImpl.qll efca259897a044fc967341a9fdb39497fc5e9bcb0b4ba33fa76cb926b98b3eb7 aaa621c691813a2f70f4071e3592d7760cef319904209770442ca0d0583f65a1 lib/codeql/swift/elements/type/internal/InOutTypeConstructor.qll 40550fd07551bc7c1692e08f1cb0692defca613c3c6403719efc5998eb1f1bfd 775f16224a455e336da239a179f84581b345803b9576aca119aeb3eef583d739 lib/codeql/swift/elements/type/internal/InOutTypeImpl.qll 28fc2931a424f551107b0ee49663d5d5307146c725353c5e484f0dd289f93dc0 ff12e91e30ee53bb8acdcf9e31261b6b1b0ae966babb4eacacb344c22aa1cb6e +lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll 382c61399e3e51d8ffa41e5ee3c59d93fc4899284e715f7fb58696cad5d9ca54 0401ff7ff1c07d8d55e670f21a47377b6d650fe74b78c7d9daf9d23de30dbfdf +lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll b74965b9567b7bb6afdf1834ab3e372da0b13ca10244cbdeee55f71ad952e418 c026806f4f3e5fb416b0d1511c8e8aa6b31fa525b2987a0774d8750118dacad4 lib/codeql/swift/elements/type/internal/IntegerTypeConstructor.qll 39e33225066f7162309f888723f81893703ee0daba68f192e3277f922060160b 08903e4d0bc8889761d016d6b6c4b7f1bd061a08c97e2a151b59cc0400ea2199 lib/codeql/swift/elements/type/internal/IntegerTypeImpl.qll ba8e6e972dcea4dbe937083c819c5fd9eb49ba4b6176e040ce65d36a95fe31bd 88064b52d9430b67edd62ed37426f5adc8f6d80722370340d147b0a4ca90f70c lib/codeql/swift/elements/type/internal/LValueTypeConstructor.qll e3ab6ebb6191a2553bd4a483067acf7131862bc7235af2da74c35e2250300da8 cfa65d0f22416408ee1e5e5af440166fe5f5b39ae9bf1b9ae92bd9f9f2954b76 @@ -718,7 +721,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898 lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633 -lib/codeql/swift/elements.qll 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55 +lib/codeql/swift/elements.qll ec0104a658330f595eac7dd8578d996905a6c2cf78765744c3967a8f3d1c3273 ec0104a658330f595eac7dd8578d996905a6c2cf78765744c3967a8f3d1c3273 lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99 lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e @@ -734,11 +737,11 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll 2d73f037f2a8d0f1d056ba7eb9d254275d46e5111617f262d8c618c3abb14050 e50636c770a5152be79e1cbc4528633233c2449c9c99c1a359e0e880bf93169f +lib/codeql/swift/generated/ParentChild.qll 4d697f5372ad82380dc375a59fa0619ee56c7d88be58530147cd8e160262bbe3 e164b712a41f20d0b9986804cd753fb5e55ceb55139234d98bdb332a8f248db4 lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll 70e9ee68fe351433246ad62deab892587647630947220645c025460bdbd7ca6e 6948032896309b0885fda6f92269ac300f274d671a43d80bebb17e283c510efd -lib/codeql/swift/generated/Synth.qll d66a45f1572d722463cf3490ad1f3aefdf3197090c4d20f362fa2e71975095c2 36d89d310bb49a4d958e085203e16079bf77e1f32428808f995a00261b34820f -lib/codeql/swift/generated/SynthConstructors.qll 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47 +lib/codeql/swift/generated/Raw.qll f7dd5c3eb1afba1077dd6c291502e2b5dd5d18000ee581f7e3ad4f0050165c69 f042929df4651dfe587769cd3f539d07f97328c2fe17fbe19cbb8e4fbefe97f2 +lib/codeql/swift/generated/Synth.qll 6af0f5778c6c6a9d9a518c00707501c3fdb3ccaa96fa06793549c2b1f28c9cbb 575829e7a2a4c7619c6d98f1b7ec47d978d0b3d77d5c1a87eae5e9f98612ef5b +lib/codeql/swift/generated/SynthConstructors.qll c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022 @@ -1000,6 +1003,7 @@ lib/codeql/swift/generated/type/FunctionType.qll 739192b77787905a66d9c9970dc077c lib/codeql/swift/generated/type/GenericFunctionType.qll 50743701a62cad6f2cbe8b331a45bd3b18f3154b860720355b831735fd2208b4 481b28aee3e473a74a66628acd2050cfee9807ebad8c8a0646783e3942b89297 lib/codeql/swift/generated/type/GenericTypeParamType.qll f266dffcd2f87f8411b796b97faa671a7bb5e6dd0aa67d3bfc9bbc06a47f1a3b 0e1625a7d2447faf75ec4c716ed1d5219b82ba8720450bc77d279e9854599758 lib/codeql/swift/generated/type/InOutType.qll 809a3bb1c5eec066416c2fce85df9116e7402a368c7e955abe6a01c7673cbdf4 7c614fa92e624890f3a83e7a7f3464f8a94f45b60beeb77f9295850567522ba7 +lib/codeql/swift/generated/type/InlineArrayType.qll 90254c4b169240f55cf3d061474bb72cb9e107550d2ff1525e1ac6a38f03624a effa3759a6c2177f8586670c90445e7242a391bcffb3c354b5428221404ec926 lib/codeql/swift/generated/type/IntegerType.qll f2040268ae94c41f27a659c09c55360b20000d40440cb9513409a95379b3b37f 4397d31da9bad9e5167d6dc6cb7f26071bb80e00538bd8f55e7fc53e45e8bd32 lib/codeql/swift/generated/type/LValueType.qll 4a6422f21bd21b841d841cad9f7c01ce7eeb9ba6b5d1fa004fa44dc008eaa432 8914e356e0475f0f3b81c681295fa7a833fae2e24c491d8d6e552ad897be4184 lib/codeql/swift/generated/type/LocalArchetypeType.qll de4f291bab61ccb699609f39682cbe29936da3c8be51e9a5620b0bce384bc852 152a74964a40daa7419de15d646ee8b62d137a8a5d7c5d0b002d81d1fdf12c47 @@ -1197,6 +1201,7 @@ test/extractor-tests/generated/type/FunctionType/MISSING_SOURCE.txt 35fb32ea5393 test/extractor-tests/generated/type/GenericFunctionType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/GenericTypeParamType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/InOutType/InOutType.ql 611aea3776fbcd3763d798b58eba36522db9d4f8ae95dad133562abc6b9d0a9c 184e35f8ef3aa77b52d7d6dbd784fe4749793c50f0484195bd91f49bc2838509 +test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql e51c2fb11a7b19bcdd008944d16fd32b62a4460e53b792370aba45a8150a2b97 7c9541613e0a5ca33a1d73d03900de2a1dd5466a910e2a153e206a3ae650f8b8 test/extractor-tests/generated/type/IntegerType/IntegerType.ql 6f18b3b5b4c53ca5d5302a78b04fea929bce478fa5c342f01951379a405b4c8a 486c1ceef03d02b064381ba514ad19eeca250c83ce54354a08c3a7c94bd4fd11 test/extractor-tests/generated/type/LValueType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index c3d4f70cf4f..37f29b6947e 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -566,6 +566,7 @@ /lib/codeql/swift/elements/type/GenericFunctionType.qll linguist-generated /lib/codeql/swift/elements/type/GenericTypeParamType.qll linguist-generated /lib/codeql/swift/elements/type/InOutType.qll linguist-generated +/lib/codeql/swift/elements/type/InlineArrayType.qll linguist-generated /lib/codeql/swift/elements/type/IntegerType.qll linguist-generated /lib/codeql/swift/elements/type/LValueType.qll linguist-generated /lib/codeql/swift/elements/type/LocalArchetypeType.qll linguist-generated @@ -668,6 +669,8 @@ /lib/codeql/swift/elements/type/internal/GenericTypeParamTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/InOutTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/InOutTypeImpl.qll linguist-generated +/lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll linguist-generated +/lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/IntegerTypeConstructor.qll linguist-generated /lib/codeql/swift/elements/type/internal/IntegerTypeImpl.qll linguist-generated /lib/codeql/swift/elements/type/internal/LValueTypeConstructor.qll linguist-generated @@ -1002,6 +1005,7 @@ /lib/codeql/swift/generated/type/GenericFunctionType.qll linguist-generated /lib/codeql/swift/generated/type/GenericTypeParamType.qll linguist-generated /lib/codeql/swift/generated/type/InOutType.qll linguist-generated +/lib/codeql/swift/generated/type/InlineArrayType.qll linguist-generated /lib/codeql/swift/generated/type/IntegerType.qll linguist-generated /lib/codeql/swift/generated/type/LValueType.qll linguist-generated /lib/codeql/swift/generated/type/LocalArchetypeType.qll linguist-generated @@ -1199,6 +1203,7 @@ /test/extractor-tests/generated/type/GenericFunctionType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/GenericTypeParamType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/InOutType/InOutType.ql linguist-generated +/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql linguist-generated /test/extractor-tests/generated/type/IntegerType/IntegerType.ql linguist-generated /test/extractor-tests/generated/type/LValueType/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/type/MetatypeType/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index 8d6a470d5a2..bdffeba5261 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -275,6 +275,7 @@ import codeql.swift.elements.type.FunctionType import codeql.swift.elements.type.GenericFunctionType import codeql.swift.elements.type.GenericTypeParamType import codeql.swift.elements.type.InOutType +import codeql.swift.elements.type.InlineArrayType import codeql.swift.elements.type.IntegerType import codeql.swift.elements.type.LValueType import codeql.swift.elements.type.LocalArchetypeType diff --git a/swift/ql/lib/codeql/swift/elements/type/InlineArrayType.qll b/swift/ql/lib/codeql/swift/elements/type/InlineArrayType.qll new file mode 100644 index 00000000000..db28afeef75 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/InlineArrayType.qll @@ -0,0 +1,10 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the public class `InlineArrayType`. + */ + +private import internal.InlineArrayTypeImpl +import codeql.swift.elements.type.SyntaxSugarType +import codeql.swift.elements.type.Type + +final class InlineArrayType = Impl::InlineArrayType; diff --git a/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll b/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll new file mode 100644 index 00000000000..61f768b1319 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `InlineArrayType` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.Raw + +/** + * The characteristic predicate of `InlineArrayType` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructInlineArrayType(Raw::InlineArrayType id) { any() } diff --git a/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll b/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll new file mode 100644 index 00000000000..b91f4e3ffdb --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/type/internal/InlineArrayTypeImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `InlineArrayType`. + * + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.type.InlineArrayType + +/** + * INTERNAL: This module contains the customizable definition of `InlineArrayType` and should not + * be referenced directly. + */ +module Impl { + class InlineArrayType extends Generated::InlineArrayType { } +} diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index a94c71028d1..28b92e4902a 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -3103,6 +3103,12 @@ private module Impl { none() } + private Element getImmediateChildOfInlineArrayType( + InlineArrayType e, int index, string partialPredicateCall + ) { + none() + } + private Element getImmediateChildOfOpaqueTypeArchetypeType( OpaqueTypeArchetypeType e, int index, string partialPredicateCall ) { @@ -3675,6 +3681,8 @@ private module Impl { or result = getImmediateChildOfDictionaryType(e, index, partialAccessor) or + result = getImmediateChildOfInlineArrayType(e, index, partialAccessor) + or result = getImmediateChildOfOpaqueTypeArchetypeType(e, index, partialAccessor) or result = getImmediateChildOfPackArchetypeType(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index e979ccdfafb..39bc6ac7373 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -3789,6 +3789,23 @@ module Raw { Type getValueType() { dictionary_types(this, _, result) } } + /** + * INTERNAL: Do not use. + */ + class InlineArrayType extends @inline_array_type, SyntaxSugarType { + override string toString() { result = "InlineArrayType" } + + /** + * Gets the count type of this inline array type. + */ + Type getCountType() { inline_array_types(this, result, _) } + + /** + * Gets the element type of this inline array type. + */ + Type getElementType() { inline_array_types(this, _, result) } + } + /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 370d5be4dac..886fb855047 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -1010,6 +1010,10 @@ module Synth { * INTERNAL: Do not use. */ TInOutType(Raw::InOutType id) { constructInOutType(id) } or + /** + * INTERNAL: Do not use. + */ + TInlineArrayType(Raw::InlineArrayType id) { constructInlineArrayType(id) } or /** * INTERNAL: Do not use. */ @@ -1430,7 +1434,7 @@ module Synth { /** * INTERNAL: Do not use. */ - class TSyntaxSugarType = TDictionaryType or TUnarySyntaxSugarType; + class TSyntaxSugarType = TDictionaryType or TInlineArrayType or TUnarySyntaxSugarType; /** * INTERNAL: Do not use. @@ -3039,6 +3043,12 @@ module Synth { */ TInOutType convertInOutTypeFromRaw(Raw::Element e) { result = TInOutType(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TInlineArrayType`, if possible. + */ + TInlineArrayType convertInlineArrayTypeFromRaw(Raw::Element e) { result = TInlineArrayType(e) } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TIntegerType`, if possible. @@ -4122,6 +4132,8 @@ module Synth { TSyntaxSugarType convertSyntaxSugarTypeFromRaw(Raw::Element e) { result = convertDictionaryTypeFromRaw(e) or + result = convertInlineArrayTypeFromRaw(e) + or result = convertUnarySyntaxSugarTypeFromRaw(e) } @@ -5777,6 +5789,12 @@ module Synth { */ Raw::Element convertInOutTypeToRaw(TInOutType e) { e = TInOutType(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TInlineArrayType` to a raw DB element, if possible. + */ + Raw::Element convertInlineArrayTypeToRaw(TInlineArrayType e) { e = TInlineArrayType(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TIntegerType` to a raw DB element, if possible. @@ -6860,6 +6878,8 @@ module Synth { Raw::Element convertSyntaxSugarTypeToRaw(TSyntaxSugarType e) { result = convertDictionaryTypeToRaw(e) or + result = convertInlineArrayTypeToRaw(e) + or result = convertUnarySyntaxSugarTypeToRaw(e) } diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 385aee2d5ca..f5bf77b6dc1 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -232,6 +232,7 @@ import codeql.swift.elements.type.internal.FunctionTypeConstructor import codeql.swift.elements.type.internal.GenericFunctionTypeConstructor import codeql.swift.elements.type.internal.GenericTypeParamTypeConstructor import codeql.swift.elements.type.internal.InOutTypeConstructor +import codeql.swift.elements.type.internal.InlineArrayTypeConstructor import codeql.swift.elements.type.internal.IntegerTypeConstructor import codeql.swift.elements.type.internal.LValueTypeConstructor import codeql.swift.elements.type.internal.MetatypeTypeConstructor diff --git a/swift/ql/lib/codeql/swift/generated/type/InlineArrayType.qll b/swift/ql/lib/codeql/swift/generated/type/InlineArrayType.qll new file mode 100644 index 00000000000..ba314e62dda --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/type/InlineArrayType.qll @@ -0,0 +1,70 @@ +// generated by codegen/codegen.py, do not edit +/** + * This module provides the generated definition of `InlineArrayType`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.type.internal.SyntaxSugarTypeImpl::Impl as SyntaxSugarTypeImpl +import codeql.swift.elements.type.Type + +/** + * INTERNAL: This module contains the fully generated definition of `InlineArrayType` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::InlineArrayType` class directly. + * Use the subclass `InlineArrayType`, where the following predicates are available. + */ + class InlineArrayType extends Synth::TInlineArrayType, SyntaxSugarTypeImpl::SyntaxSugarType { + override string getAPrimaryQlClass() { result = "InlineArrayType" } + + /** + * Gets the count type of this inline array type. + * + * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the + * behavior of both the `Immediate` and non-`Immediate` versions. + */ + Type getImmediateCountType() { + result = + Synth::convertTypeFromRaw(Synth::convertInlineArrayTypeToRaw(this) + .(Raw::InlineArrayType) + .getCountType()) + } + + /** + * Gets the count type of this inline array type. + */ + final Type getCountType() { + exists(Type immediate | + immediate = this.getImmediateCountType() and + if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve() + ) + } + + /** + * Gets the element type of this inline array type. + * + * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the + * behavior of both the `Immediate` and non-`Immediate` versions. + */ + Type getImmediateElementType() { + result = + Synth::convertTypeFromRaw(Synth::convertInlineArrayTypeToRaw(this) + .(Raw::InlineArrayType) + .getElementType()) + } + + /** + * Gets the element type of this inline array type. + */ + final Type getElementType() { + exists(Type immediate | + immediate = this.getImmediateElementType() and + if exists(this.getResolveStep()) then result = immediate else result = immediate.resolve() + ) + } + } +} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index b754629f939..33e5e5e03bd 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -2520,6 +2520,7 @@ paren_types( //dir=type @syntax_sugar_type = @dictionary_type +| @inline_array_type | @unary_syntax_sugar_type ; @@ -2577,6 +2578,12 @@ dictionary_types( //dir=type int value_type: @type_or_none ref ); +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + @local_archetype_type = @element_archetype_type | @existential_archetype_type diff --git a/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.expected b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.expected new file mode 100644 index 00000000000..65a8baa5beb --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.expected @@ -0,0 +1 @@ +| [42 of Int] | getName: | [42 of Int] | getCanonicalType: | InlineArray<42, Int> | getCountType: | 42 | getElementType: | Int | diff --git a/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql new file mode 100644 index 00000000000..6c2b0923d0a --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/InlineArrayType.ql @@ -0,0 +1,20 @@ +// generated by codegen/codegen.py, do not edit +import codeql.swift.elements +import TestUtils + +query predicate instances( + InlineArrayType x, string getName__label, string getName, string getCanonicalType__label, + Type getCanonicalType, string getCountType__label, Type getCountType, + string getElementType__label, Type getElementType +) { + toBeTested(x) and + not x.isUnknown() and + getName__label = "getName:" and + getName = x.getName() and + getCanonicalType__label = "getCanonicalType:" and + getCanonicalType = x.getCanonicalType() and + getCountType__label = "getCountType:" and + getCountType = x.getCountType() and + getElementType__label = "getElementType:" and + getElementType = x.getElementType() +} diff --git a/swift/ql/test/extractor-tests/generated/type/InlineArrayType/inline_array.swift b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/inline_array.swift new file mode 100644 index 00000000000..804dd3f7d0b --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/type/InlineArrayType/inline_array.swift @@ -0,0 +1,5 @@ +struct Foo { + var x: [42 of Int] +} + +//codeql-extractor-options: -disable-availability-checking diff --git a/swift/schema.py b/swift/schema.py index ebe5c36c4fb..e7b45fb81a5 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -1192,6 +1192,10 @@ class BuiltinIntegerLiteralType(AnyBuiltinIntegerType): class BuiltinIntegerType(AnyBuiltinIntegerType): width: optional[int] +class InlineArrayType(SyntaxSugarType): + count_type: Type + element_type: Type + class DictionaryType(SyntaxSugarType): key_type: Type value_type: Type From eab6579e1267a090f6bca8d681071886600bec90 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 10:24:03 +0100 Subject: [PATCH 479/965] Swift: sync files --- swift/ql/test/library-tests/ast/declarations.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/ql/test/library-tests/ast/declarations.swift b/swift/ql/test/library-tests/ast/declarations.swift index 6a1503a95e5..c2e8a94bb97 100644 --- a/swift/ql/test/library-tests/ast/declarations.swift +++ b/swift/ql/test/library-tests/ast/declarations.swift @@ -86,7 +86,7 @@ struct HasPropertyAndObserver { } } - // A field can be marked as read-only by dirctly implementing + // A field can be marked as read-only by directly implementing // the getter between the braces. var readOnlyField1: Int { return 0 From ee6dd0f771155cea1d0d87e05835ce6961ec9971 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 10:37:49 +0100 Subject: [PATCH 480/965] C#: Update integration tests expected output. --- .../Assemblies.expected | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected index a706f914cd9..bbfd3417df3 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected @@ -3,6 +3,7 @@ | [...]/csharp/tools/[...]/MessagePack.Annotations.dll | | [...]/csharp/tools/[...]/MessagePack.dll | | [...]/csharp/tools/[...]/Microsoft.Bcl.AsyncInterfaces.dll | +| [...]/csharp/tools/[...]/Microsoft.Bcl.Memory.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Framework.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Utilities.Core.dll | | [...]/csharp/tools/[...]/Microsoft.Build.dll | @@ -20,6 +21,7 @@ | [...]/csharp/tools/[...]/Microsoft.Win32.Primitives.dll | | [...]/csharp/tools/[...]/Microsoft.Win32.Registry.dll | | [...]/csharp/tools/[...]/Mono.Posix.NETStandard.dll | +| [...]/csharp/tools/[...]/NaturalSort.Extension.dll | | [...]/csharp/tools/[...]/Newtonsoft.Json.dll | | [...]/csharp/tools/[...]/StructuredLogger.dll | | [...]/csharp/tools/[...]/System.AppContext.dll | From 6d64800e859be2a4e9e6179d844ee277555bc99f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 31 Oct 2025 10:16:22 +0100 Subject: [PATCH 481/965] Rust: Move variable consistency check into `AstConsistency.qll` --- rust/ql/consistency-queries/VariableConsistency.ql | 8 -------- rust/ql/lib/codeql/rust/internal/AstConsistency.qll | 11 +++++++++++ .../lib/codeql/rust/internal/VariableConsistency.qll | 10 ---------- .../diagnostics/AstConsistencyCounts.expected | 1 + 4 files changed, 12 insertions(+), 18 deletions(-) delete mode 100644 rust/ql/consistency-queries/VariableConsistency.ql delete mode 100644 rust/ql/lib/codeql/rust/internal/VariableConsistency.qll diff --git a/rust/ql/consistency-queries/VariableConsistency.ql b/rust/ql/consistency-queries/VariableConsistency.ql deleted file mode 100644 index 42c2149cbc7..00000000000 --- a/rust/ql/consistency-queries/VariableConsistency.ql +++ /dev/null @@ -1,8 +0,0 @@ -/** - * @name Variable inconsistencies - * @description Lists the variable inconsistencies in the database. This query is intended for internal use. - * @kind table - * @id rust/diagnostics/variable-consistency - */ - -import codeql.rust.internal.VariableConsistency diff --git a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll index 43adfc351f7..97f49a42560 100644 --- a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll @@ -73,6 +73,14 @@ query predicate multiplePositions(Element parent, int pos1, int pos2, string acc pos1 != pos2 } +/** + * Holds if `va` is a variable access that refers to multiple variables. + */ +query predicate multipleVariableTargets(VariableAccess va, Variable v1) { + va = v1.getAnAccess() and + strictcount(va.getVariable()) > 1 +} + /** * Gets counts of abstract syntax tree inconsistencies of each type. */ @@ -98,4 +106,7 @@ int getAstInconsistencyCounts(string type) { or type = "Multiple positions" and result = count(Element e | multiplePositions(_, _, _, _, e) | e) + or + type = "Multiple variable targets" and + result = count(VariableAccess va | multipleVariableTargets(va, _) | va) } diff --git a/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll b/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll deleted file mode 100644 index 37b38f6378e..00000000000 --- a/rust/ql/lib/codeql/rust/internal/VariableConsistency.qll +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Provides logic for recognizing variable inconsistencies. - */ - -private import rust - -query predicate multipleVariableTargets(VariableAccess va, Variable v1) { - va = v1.getAnAccess() and - strictcount(va.getVariable()) > 1 -} diff --git a/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected b/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected index 7f8d388fdc5..0028cd74b6e 100644 --- a/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected +++ b/rust/ql/test/query-tests/diagnostics/AstConsistencyCounts.expected @@ -4,4 +4,5 @@ | Multiple positions | 0 | | Multiple primary QL classes | 0 | | Multiple toStrings | 0 | +| Multiple variable targets | 0 | | No location | 0 | From 92ca0c2b62847a0b66a90c261fe5c1412b86c154 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 10:53:11 +0100 Subject: [PATCH 482/965] Swift: Update expected test results --- .../test/library-tests/ast/PrintAst.expected | 2 +- .../KeyPathComponent/KindAccessors.expected | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index 6bc89c057e1..8cd6a4a5aff 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -4571,7 +4571,7 @@ declarations.swift: # 81| Type = Int # 81| getParam(5): [ParamDecl] hasBoth # 81| Type = Int -# 89| [Comment] // A field can be marked as read-only by dirctly implementing +# 89| [Comment] // A field can be marked as read-only by directly implementing # 89| # 90| [Comment] // the getter between the braces. # 90| diff --git a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected index 6c55385ae62..76a5b3c8cad 100644 --- a/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected +++ b/swift/ql/test/library-tests/elements/KeyPathComponent/KindAccessors.expected @@ -1,14 +1,14 @@ -| file://:0:0:0:0 | KeyPathComponent | getKind: | 9 | | | | | optional wrapping | | | -| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 5 | property | | | | | | | -| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 6 | | subscript | | | | | | -| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 6 | | subscript | | | | | | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 7 | | | optional forcing | | | | | -| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 10 | | | | | | self | | -| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 5 | property | | | | | | | -| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 8 | | | | optional chaining | | | | -| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 5 | property | | | | | | | -| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 5 | property | | | | | | | -| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 8 | | | | optional chaining | | | | -| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 5 | property | | | | | | | -| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 10 | | | | | | self | | -| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 11 | | | | | | | tuple indexing | +| file://:0:0:0:0 | KeyPathComponent | getKind: | 9 | | | | | | optional wrapping | | | +| key_path_expr.swift:11:17:11:17 | KeyPathComponent | getKind: | 5 | | property | | | | | | | +| key_path_expr.swift:12:24:12:26 | KeyPathComponent | getKind: | 6 | | | subscript | | | | | | +| key_path_expr.swift:13:34:13:38 | KeyPathComponent | getKind: | 6 | | | subscript | | | | | | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 7 | | | | optional forcing | | | | | +| key_path_expr.swift:14:31:14:31 | KeyPathComponent | getKind: | 10 | | | | | | | self | | +| key_path_expr.swift:15:21:15:21 | KeyPathComponent | getKind: | 5 | | property | | | | | | | +| key_path_expr.swift:15:24:15:24 | KeyPathComponent | getKind: | 8 | | | | | optional chaining | | | | +| key_path_expr.swift:15:26:15:26 | KeyPathComponent | getKind: | 5 | | property | | | | | | | +| key_path_expr.swift:16:25:16:25 | KeyPathComponent | getKind: | 5 | | property | | | | | | | +| key_path_expr.swift:16:28:16:28 | KeyPathComponent | getKind: | 8 | | | | | optional chaining | | | | +| key_path_expr.swift:16:30:16:30 | KeyPathComponent | getKind: | 5 | | property | | | | | | | +| key_path_expr.swift:17:16:17:16 | KeyPathComponent | getKind: | 10 | | | | | | | self | | +| key_path_expr.swift:18:32:18:32 | KeyPathComponent | getKind: | 11 | | | | | | | | tuple indexing | From 7301bc74cff7206ccde94688e95d949d5121d845 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 11:01:04 +0100 Subject: [PATCH 483/965] Swift: Fix key path numbering in upgrade and downgrade scripts --- .../key_path_components.ql | 9 +++++++-- .../key_path_components.ql | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql index 460825531d4..f09e155ee5d 100644 --- a/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql +++ b/swift/downgrades/b7006eaacb007a06251596835506185619b86e98/key_path_components.ql @@ -19,14 +19,19 @@ class ValueDeclOrNone extends @value_decl_or_none { } predicate isKeyPathComponentWithNewKind(KeyPathComponent id) { - key_path_components(id, 3, _) or key_path_components(id, 4, _) + key_path_components(id, 1, _) or key_path_components(id, 4, _) } query predicate new_key_path_components(KeyPathComponent id, int kind, TypeOrNone component_type) { exists(int old_kind | key_path_components(id, old_kind, component_type) and not isKeyPathComponentWithNewKind(id) and - if old_kind < 5 then kind = old_kind else kind = old_kind - 2 + if old_kind = 0 + then kind = old_kind + else + if old_kind = 2 or old_kind = 3 + then kind = old_kind - 1 + else kind = old_kind - 2 ) } diff --git a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql index 6f63c5f3a5d..8d349dcd4fa 100644 --- a/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql +++ b/swift/ql/lib/upgrades/987ab0bc0911f8c88449210e21d2ee80ebcb488a/key_path_components.ql @@ -9,5 +9,10 @@ class TypeOrNone extends @type_or_none { from KeyPathComponent id, int kind, int new_kind, TypeOrNone component_type where key_path_components(id, kind, component_type) and - if kind < 3 then new_kind = kind else new_kind = kind + 2 + if kind = 0 + then new_kind = kind + else + if kind = 1 or kind = 2 + then new_kind = kind + 1 + else new_kind = kind + 2 select id, new_kind, component_type From 5aa53287ce6ac58a2fd96b92264320de14543fd3 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 11:25:37 +0100 Subject: [PATCH 484/965] C#: Allow nullness sources with SSA at entry. --- csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 6e36008ab2e..a2df7ad43fb 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -197,7 +197,6 @@ private predicate defMaybeNull( msg = "as suggested by $@ null check" and node = def.getControlFlowNode() and not de = any(Ssa::PhiNode phi).getARead() and - strictcount(Element e | e = any(Ssa::Definition def0 | de = def0.getARead()).getElement()) = 1 and // Don't use a check as reason if there is a `null` assignment // or argument not def.(Ssa::ExplicitDefinition).getADefinition().getSource() instanceof MaybeNullExpr and From 94f8ea56129180639e883e8067e64cb9cca610e2 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 11:35:50 +0100 Subject: [PATCH 485/965] Swift: Add upgrade and downgrade scripts --- .../downgrades.ql | 59 + .../old.dbscheme | 2885 +++++++++++++++++ .../swift.dbscheme | 2838 ++++++++++++++++ .../upgrade.properties | 16 + .../old.dbscheme | 2838 ++++++++++++++++ .../swift.dbscheme | 2885 +++++++++++++++++ .../upgrade.properties | 2 + 7 files changed, 11523 insertions(+) create mode 100644 swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/downgrades.ql create mode 100644 swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme create mode 100644 swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme create mode 100644 swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties create mode 100644 swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme create mode 100644 swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme create mode 100644 swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties diff --git a/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/downgrades.ql b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/downgrades.ql new file mode 100644 index 00000000000..8cb81599373 --- /dev/null +++ b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/downgrades.ql @@ -0,0 +1,59 @@ +class Element extends @element { + string toString() { none() } +} + +class Expr extends @expr { + string toString() { none() } +} + +class Decl extends @decl { + string toString() { none() } +} + +class DeclOrNone extends @decl_or_none { + string toString() { none() } +} + +class ModuleOrNone extends @module_decl_or_none { + string toString() { none() } +} + +class Type extends @type { + string toString() { none() } +} + +class TypeOrNone extends @type_or_none { + string toString() { none() } +} + +query predicate new_decls(Decl decl, ModuleOrNone moduleOrNone) { + decls(decl, moduleOrNone) and not using_decls(decl) +} + +query predicate new_decl_members(Decl decl, int index, DeclOrNone declOrNone) { + decl_members(decl, index, declOrNone) and not using_decls(decl) +} + +query predicate new_expr_types(Expr id, TypeOrNone typeOrNone) { + expr_types(id, typeOrNone) and not unsafe_exprs(id) +} + +query predicate new_types(Type id, string name, TypeOrNone typeOrNone) { + types(id, name, typeOrNone) and not inline_array_types(id, _, _) +} + +query predicate new_unspecified_elements(Element id, string property, string error) { + unspecified_elements(id, property, error) + or + using_decls(id) and + property = "" and + error = "UsingDecl removed during database downgrade. Please update your CodeQL." + or + unsafe_exprs(id) and + property = "" and + error = "UnsafeExpr removed during database downgrade. Please update your CodeQL." + or + inline_array_types(id, _, _) and + property = "" and + error = "InlineArrayType removed during database downgrade. Please update your CodeQL." +} diff --git a/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme new file mode 100644 index 00000000000..33e5e5e03bd --- /dev/null +++ b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/old.dbscheme @@ -0,0 +1,2885 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme new file mode 100644 index 00000000000..b7006eaacb0 --- /dev/null +++ b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/swift.dbscheme @@ -0,0 +1,2838 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties new file mode 100644 index 00000000000..09285f1bf01 --- /dev/null +++ b/swift/downgrades/33e5e5e03bd3f98322f4c67aefa81015be832b88/upgrade.properties @@ -0,0 +1,16 @@ +description: Support AST elements new in Swift 6.2 +compatibility: backwards +accessor_is_distributed_get.rel: delete +accessor_is_read2.rel: delete +accessor_is_modify2.rel: delete +accessor_is_init.rel: delete +decls.rel: run downgrades.qlo new_decls +decl_members.rel: run downgrades.qlo new_decl_members +expr_types.rel: run downgrades.qlo new_expr_types +inline_array_types.rel: delete +types.rel: run downgrades.qlo new_types +unsafe_exprs.rel: delete +unspecified_elements.rel: run downgrades.qlo new_unspecified_elements +using_decls.rel: delete +using_decl_is_main_actor.rel: delete +using_decl_is_nonisolated.rel: delete diff --git a/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme new file mode 100644 index 00000000000..b7006eaacb0 --- /dev/null +++ b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/old.dbscheme @@ -0,0 +1,2838 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme new file mode 100644 index 00000000000..33e5e5e03bd --- /dev/null +++ b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/swift.dbscheme @@ -0,0 +1,2885 @@ +// generated by codegen/codegen.py, do not edit + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @callable +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +availability_specs( + unique int id: @availability_spec +); + +#keyset[id] +availability_spec_platforms( + int id: @availability_spec ref, + string platform: string ref +); + +#keyset[id] +availability_spec_versions( + int id: @availability_spec ref, + string version: string ref +); + +#keyset[id] +availability_spec_is_wildcard( + int id: @availability_spec ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @using_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +using_decls( //dir=decl + unique int id: @using_decl +); + +#keyset[id] +using_decl_is_main_actor( //dir=decl + int id: @using_decl ref +); + +#keyset[id] +using_decl_is_nonisolated( //dir=decl + int id: @using_decl ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_distributed_get( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify2( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_init( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @current_context_isolation_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @extract_function_isolation_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @type_value_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +current_context_isolation_exprs( //dir=expr + unique int id: @current_context_isolation_expr, + int actor: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +extract_function_isolation_exprs( //dir=expr + unique int id: @extract_function_isolation_expr, + int function_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +| @unsafe_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @actor_isolation_erasure_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unreachable_expr +| @unresolved_type_conversion_expr +| @unsafe_cast_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +type_value_exprs( //dir=expr + unique int id: @type_value_expr, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +actor_isolation_erasure_exprs( //dir=expr + unique int id: @actor_isolation_erasure_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unreachable_exprs( //dir=expr + unique int id: @unreachable_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +unsafe_cast_exprs( //dir=expr + unique int id: @unsafe_cast_expr +); + +unsafe_exprs( //dir=expr + unique int id: @unsafe_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +for_each_stmt_variables( //dir=stmt + int id: @for_each_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @integer_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_fixed_array_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +integer_types( //dir=type + unique int id: @integer_type, + string value: string ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_fixed_array_types( //dir=type + unique int id: @builtin_fixed_array_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @inline_array_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +inline_array_types( //dir=type + unique int id: @inline_array_type, + int count_type: @type_or_none ref, + int element_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @existential_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +existential_archetype_types( //dir=type + unique int id: @existential_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties new file mode 100644 index 00000000000..015868a6f27 --- /dev/null +++ b/swift/ql/lib/upgrades/b7006eaacb007a06251596835506185619b86e98/upgrade.properties @@ -0,0 +1,2 @@ +description: Support AST elements new in Swift 6.2 +compatibility: full From 2a8e3bee36a015e7100b026df5277fbb53552104 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 31 Oct 2025 12:06:52 +0100 Subject: [PATCH 486/965] Swift: Add change note --- swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md new file mode 100644 index 00000000000..f227bc71c65 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md @@ -0,0 +1,6 @@ +--- +category: feature +--- +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. From 09bef0f4df84665b332f81f51431f3acb4e60bad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:51:08 +0000 Subject: [PATCH 487/965] Initial plan From 6011ecbef4d8dd5a1c57757456b54bee68e589a4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:01:25 +0000 Subject: [PATCH 488/965] Add ConstAccess class with getConst() predicate and test cases Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- rust/ql/lib/codeql/rust/elements/Const.qll | 14 +++++++ .../rust/elements/internal/ConstImpl.qll | 33 +++++++++++++++ .../library-tests/const_access/Cargo.lock | 7 ++++ .../const_access/const_access.ql | 23 ++++++++++ .../test/library-tests/const_access/main.rs | 42 +++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 rust/ql/test/library-tests/const_access/Cargo.lock create mode 100644 rust/ql/test/library-tests/const_access/const_access.ql create mode 100644 rust/ql/test/library-tests/const_access/main.rs diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 39aea3e25dc..1226d195eeb 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -22,3 +22,17 @@ import codeql.rust.elements.WhereClause * ``` */ final class Const = Impl::Const; + +/** + * A constant access. + * + * For example: + * ```rust + * const X: i32 = 42; + * + * fn main() { + * println!("{}", X); + * } + * ``` + */ +final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index d2f3cde2d03..8144475f36c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -6,6 +6,9 @@ */ private import codeql.rust.elements.internal.generated.Const +private import codeql.rust.elements.PathExpr +private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl +private import codeql.rust.internal.PathResolution /** * INTERNAL: This module contains the customizable definition of `Const` and should not @@ -21,4 +24,34 @@ module Impl { * ``` */ class Const extends Generated::Const { } + + /** + * A constant access. + * + * For example: + * ```rust + * const X: i32 = 42; + * + * fn main() { + * println!("{}", X); + * } + * ``` + */ + class ConstAccess extends PathExprBaseImpl::PathExprBase { + private Const c; + + ConstAccess() { + exists(PathExpr pe | + pe = this and + c = resolvePath(pe.getPath()) + ) + } + + /** Gets the constant being accessed. */ + Const getConst() { result = c } + + override string toStringImpl() { result = c.getName().getText() } + + override string getAPrimaryQlClass() { result = "ConstAccess" } + } } diff --git a/rust/ql/test/library-tests/const_access/Cargo.lock b/rust/ql/test/library-tests/const_access/Cargo.lock new file mode 100644 index 00000000000..876cd502126 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "const_access_test" +version = "0.1.0" diff --git a/rust/ql/test/library-tests/const_access/const_access.ql b/rust/ql/test/library-tests/const_access/const_access.ql new file mode 100644 index 00000000000..27b8f85e3dc --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.ql @@ -0,0 +1,23 @@ +import rust +import utils.test.InlineExpectationsTest +import TestUtils + +query predicate constAccess(ConstAccess ca, Const c) { + toBeTested(ca) and c = ca.getConst() +} + +module ConstAccessTest implements TestSig { + string getARelevantTag() { result = "const_access" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(ConstAccess ca | + toBeTested(ca) and + location = ca.getLocation() and + element = ca.toString() and + tag = "const_access" and + value = ca.getConst().getName().getText() + ) + } +} + +import MakeTest diff --git a/rust/ql/test/library-tests/const_access/main.rs b/rust/ql/test/library-tests/const_access/main.rs new file mode 100644 index 00000000000..b8a363adfdb --- /dev/null +++ b/rust/ql/test/library-tests/const_access/main.rs @@ -0,0 +1,42 @@ +const GLOBAL_CONST: i32 = 42; +const STRING_CONST: &str = "hello"; + +struct MyStruct { + value: i32, +} + +impl MyStruct { + const ASSOC_CONST: i32 = 100; +} + +mod my_module { + pub const MODULE_CONST: i32 = 200; +} + +fn use_consts() { + // $ const_access=GLOBAL_CONST + let x = GLOBAL_CONST; + // $ const_access=GLOBAL_CONST + println!("{}", GLOBAL_CONST); + + // $ const_access=STRING_CONST + let s = STRING_CONST; + + // $ const_access=ASSOC_CONST + let y = MyStruct::ASSOC_CONST; + + // $ const_access=MODULE_CONST + let z = my_module::MODULE_CONST; + + // $ const_access=GLOBAL_CONST + if GLOBAL_CONST > 0 { + println!("positive"); + } + + // $ const_access=ASSOC_CONST + let arr = [MyStruct::ASSOC_CONST; 5]; +} + +fn main() { + use_consts(); +} From ad51b61a2b5ba7deb525221e892d13f1ef8f8f81 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:07:04 +0000 Subject: [PATCH 489/965] Fix trailing whitespace in documentation comments Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- rust/ql/lib/codeql/rust/elements/Const.qll | 2 +- rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 1226d195eeb..d1515483555 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -29,7 +29,7 @@ final class Const = Impl::Const; * For example: * ```rust * const X: i32 = 42; - * + * * fn main() { * println!("{}", X); * } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 8144475f36c..99d76dd644a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -31,7 +31,7 @@ module Impl { * For example: * ```rust * const X: i32 = 42; - * + * * fn main() { * println!("{}", X); * } From ab2c2ef6ae034923810a815e5f4a6ba870e600a2 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 13:52:56 +0100 Subject: [PATCH 490/965] C#: Update isUnreachableInCall in dataflow to use Guards library. --- .../semmle/code/csharp/controlflow/Guards.qll | 11 ++++-- .../dataflow/internal/DataFlowPrivate.qll | 36 ++++++------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 4914450dfc9..040ea47f785 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -49,8 +49,15 @@ private module GuardsInput implements override predicate isNull() { any() } } - private class BooleanConstant extends ConstantExpr instanceof BoolLiteral { - override boolean asBooleanValue() { result = super.getBoolValue() } + private predicate boolConst(Expr e, boolean b) { + e.getType() instanceof BoolType and + e.getValue() = b.toString() + } + + private class BooleanConstant extends ConstantExpr { + BooleanConstant() { boolConst(this, _) } + + override boolean asBooleanValue() { boolConst(this, result) } } private predicate intConst(Expr e, int i) { 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 f4a76b2f577..4f7f0141da2 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -2583,10 +2583,10 @@ class NodeRegion instanceof ControlFlow::BasicBlock { * Holds if the nodes in `nr` are unreachable when the call context is `call`. */ predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { - exists(ExplicitParameterNode paramNode, Guard guard, ControlFlow::BooleanSuccessor bs | - viableConstantBooleanParamArg(paramNode, bs.getValue().booleanNot(), call) and + exists(ExplicitParameterNode paramNode, Guard guard, GuardValue val | + viableConstantParamArg(paramNode, val.getDualValue(), call) and paramNode.getSsaDefinition().getARead() = guard and - guard.controlsBlock(nr, bs, _) + guard.valueControls(nr, val) ) } @@ -2904,33 +2904,19 @@ class CastNode extends Node { class DataFlowExpr = Expr; -/** Holds if `e` is an expression that always has the same Boolean value `val`. */ -private predicate constantBooleanExpr(Expr e, boolean val) { - e.getType() instanceof BoolType and - e.getValue() = val.toString() - or - exists(Ssa::ExplicitDefinition def, Expr src | - e = def.getARead() and - src = def.getADefinition().getSource() and - constantBooleanExpr(src, val) - ) -} +/** An argument that always has the same value. */ +private class ConstantArgumentNode extends ExprNode { + ConstantArgumentNode() { Guards::InternalUtil::exprHasValue(this.(ArgumentNode).asExpr(), _) } -/** An argument that always has the same Boolean value. */ -private class ConstantBooleanArgumentNode extends ExprNode { - ConstantBooleanArgumentNode() { constantBooleanExpr(this.(ArgumentNode).asExpr(), _) } - - /** Gets the Boolean value of this expression. */ - boolean getBooleanValue() { constantBooleanExpr(this.getExpr(), result) } + /** Gets the value of this expression. */ + GuardValue getValue() { Guards::InternalUtil::exprHasValue(this.getExpr(), result) } } pragma[noinline] -private predicate viableConstantBooleanParamArg( - ParameterNode paramNode, boolean b, DataFlowCall call -) { - exists(ConstantBooleanArgumentNode arg | +private predicate viableConstantParamArg(ParameterNode paramNode, GuardValue val, DataFlowCall call) { + exists(ConstantArgumentNode arg | viableParamArg(call, paramNode, arg) and - b = arg.getBooleanValue() + val = arg.getValue() ) } From f6dfcf1ca4252eb354c7f96e5f1f17eb5d99c8db Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 16:02:55 +0100 Subject: [PATCH 491/965] C#: Delete splitting-aware controls implementation. --- csharp/ql/lib/semmle/code/csharp/Caching.qll | 2 - .../csharp/controlflow/ControlFlowElement.qll | 132 ------------------ 2 files changed, 134 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Caching.qll b/csharp/ql/lib/semmle/code/csharp/Caching.qll index 50a789f7989..bbe310fe69e 100644 --- a/csharp/ql/lib/semmle/code/csharp/Caching.qll +++ b/csharp/ql/lib/semmle/code/csharp/Caching.qll @@ -33,8 +33,6 @@ module Stages { cached private predicate forceCachingInSameStageRev() { - any(ControlFlowElement cfe).controlsBlock(_, _, _) - or exists(GuardedExpr ge) or forceCachingInSameStageRev() diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index 784dab415f3..ee2ae8c22a7 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -87,148 +87,16 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { result.getAControlFlowNode() } - pragma[noinline] - private predicate immediatelyControlsBlockSplit0( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s - ) { - // Only calculate dominance by explicit recursion for split nodes; - // all other nodes can use regular CFG dominance - this instanceof Impl::SplitAstNode and - cb.getLastNode() = this.getAControlFlowNode() and - succ = cb.getASuccessor(s) - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit1( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - pred = succ.getAPredecessorByType(t) and - pred != cb - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit2( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) and - ( - succ.dominates(pred) - or - // `pred` might be another split of this element - pred.getLastNode().getAstNode() = this and - t = s - ) - } - - /** - * Holds if basic block `succ` is immediately controlled by this control flow - * element with conditional value `s`. That is, `succ` can only be reached from - * the callable entry point by going via the `s` edge out of *some* basic block - * `pred` ending with this element, and `pred` is an immediate predecessor - * of `succ`. - * - * Moreover, this control flow element corresponds to multiple control flow nodes, - * which is why - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.immediatelyControls(succ, s) - * ) - * ``` - * - * does not work. - * - * `cb` records all of the possible condition blocks for this control flow element - * that a path from the callable entry point to `succ` may go through. - */ - pragma[nomagic] - private predicate immediatelyControlsBlockSplit( - BasicBlock succ, ConditionalSuccessor s, ConditionBlock cb - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - forall(BasicBlock pred, SuccessorType t | - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) - | - this.immediatelyControlsBlockSplit2(cb, succ, s, pred, t) - ) - } - - pragma[noinline] - private predicate controlsJoinBlockPredecessor( - JoinBlock controlled, ConditionalSuccessor s, int i, ConditionBlock cb - ) { - this.controlsBlockSplit(controlled.getJoinBlockPredecessor(i), s, cb) - } - - private predicate controlsJoinBlockSplit(JoinBlock controlled, ConditionalSuccessor s, int i) { - i = -1 and - this.controlsJoinBlockPredecessor(controlled, s, _, _) - or - this.controlsJoinBlockSplit(controlled, s, i - 1) and - ( - this.controlsJoinBlockPredecessor(controlled, s, i, _) - or - controlled.dominates(controlled.getJoinBlockPredecessor(i)) - ) - } - - cached - private predicate controlsBlockSplit( - BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb - ) { - Stages::GuardsStage::forceCachingInSameStage() and - this.immediatelyControlsBlockSplit(controlled, s, cb) - or - // Equivalent with - // - // ```ql - // exists(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // ) and - // forall(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // or - // controlled.dominates(pred) - // ) - // ``` - // - // but uses no universal recursion for better performance. - exists(int last | - last = max(int i | exists(controlled.(JoinBlock).getJoinBlockPredecessor(i))) - | - this.controlsJoinBlockSplit(controlled, s, last) - ) and - this.controlsJoinBlockPredecessor(controlled, s, _, cb) - or - not controlled instanceof JoinBlock and - this.controlsBlockSplit(controlled.getAPredecessor(), s, cb) - } - /** * Holds if basic block `controlled` is controlled by this control flow element * with conditional value `s`. That is, `controlled` can only be reached from * the callable entry point by going via the `s` edge out of *some* basic block * ending with this element. * - * This predicate is different from - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.controls(controlled, s) - * ) - * ``` - * - * as control flow splitting is taken into account. - * * `cb` records all of the possible condition blocks for this control flow element * that a path from the callable entry point to `controlled` may go through. */ predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb) { - this.controlsBlockSplit(controlled, s, cb) - or cb.getLastNode() = this.getAControlFlowNode() and cb.edgeDominates(controlled, s) } From 4de564eb4e35d300865e788f229456dc8875acad Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 14:01:12 +0100 Subject: [PATCH 492/965] C#: Replace reference to controlsBlock and simplify. --- .../csharp/security/dataflow/ConditionalBypassQuery.qll | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll index f2b46e4ebac..53b44f873a6 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll @@ -72,17 +72,10 @@ class ReverseDnsSource extends Source { } } -pragma[noinline] -private predicate conditionControlsCall0( - SensitiveExecutionMethodCall call, Expr e, ControlFlow::BooleanSuccessor s -) { - forex(BasicBlock bb | bb = call.getAControlFlowNode().getBasicBlock() | e.controlsBlock(bb, s, _)) -} - private predicate conditionControlsCall( SensitiveExecutionMethodCall call, SensitiveExecutionMethod def, Expr e, boolean cond ) { - exists(ControlFlow::BooleanSuccessor s | cond = s.getValue() | conditionControlsCall0(call, e, s)) and + e.(Guard).directlyControls(call.getBasicBlock(), cond) and def = call.getTarget().getUnboundDeclaration() } From eb93e8ed41c0eecd166cc228bd5e2248bbacfdf9 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 14:22:11 +0100 Subject: [PATCH 493/965] C#: Deprecate controlsBlock. --- .../semmle/code/csharp/controlflow/ControlFlowElement.qll | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index ee2ae8c22a7..0d0ed681969 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -88,6 +88,8 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { } /** + * DEPRECATED: Use `Guard` class instead. + * * Holds if basic block `controlled` is controlled by this control flow element * with conditional value `s`. That is, `controlled` can only be reached from * the callable entry point by going via the `s` edge out of *some* basic block @@ -96,7 +98,9 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { * `cb` records all of the possible condition blocks for this control flow element * that a path from the callable entry point to `controlled` may go through. */ - predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb) { + deprecated predicate controlsBlock( + BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb + ) { cb.getLastNode() = this.getAControlFlowNode() and cb.edgeDominates(controlled, s) } From 4f6528a9fbfe564b3fdec40d61e854998c59243d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 11:08:40 +0100 Subject: [PATCH 494/965] C#: Deprecate AbstractValue. --- .../2025-10-31-deprecate-abstractvalue.md | 4 + .../semmle/code/csharp/controlflow/Guards.qll | 84 ++++++++++--------- .../semmle/code/csharp/dataflow/Nullness.qll | 5 +- .../dataflow/internal/DataFlowPublic.qll | 4 +- .../code/csharp/dataflow/internal/SsaImpl.qll | 6 +- .../internal/rangeanalysis/RangeUtils.qll | 6 +- .../security/dataflow/TaintedPathQuery.qll | 5 +- .../security/dataflow/UrlRedirectQuery.qll | 20 ++--- .../csharp/security/dataflow/ZipSlipQuery.qll | 4 +- .../experimental/CWE-918/RequestForgery.qll | 8 +- .../controlflow/guards/AbstractValue.ql | 2 +- .../controlflow/guards/Collections.ql | 2 +- .../guards/GuardedControlFlowNode.ql | 2 +- .../controlflow/guards/GuardedExpr.ql | 2 +- .../dataflow/barrier-guards/barrier-flow.ql | 6 +- .../dataflow/callablereturnsarg/Common.qll | 4 +- 16 files changed, 81 insertions(+), 83 deletions(-) create mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md new file mode 100644 index 00000000000..65bb9032b12 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 4914450dfc9..ed0238d1f09 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -227,7 +227,7 @@ private module LogicInput implements GuardsImpl::LogicInputSig { e instanceof DereferenceableExpr and ct.getAnArgument() = e and ct.getAnArgument() = arg and - arg = any(NullValue nv | nv.isNonNull()).getAnExpr() and + nonNullValueImplied(arg) and ck = ct.getComparisonKind() and e != arg and isNull = false and @@ -314,7 +314,7 @@ class Guard extends Guards::Guard { * In case `cfn` or `sub` access an SSA variable in their left-most qualifier, then * so must the other (accessing the same SSA variable). */ - predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, AccessOrCallExpr sub, AbstractValue v) { + predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, AccessOrCallExpr sub, GuardValue v) { isGuardedByNode(cfn, this, sub, v) } @@ -324,26 +324,31 @@ class Guard extends Guards::Guard { * Note: This predicate is inlined. */ pragma[inline] - predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, AbstractValue v) { + predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, GuardValue v) { guardControls(this, cfn.getBasicBlock(), v) } /** * Holds if basic block `bb` is guarded by this expression having value `v`. */ - predicate controlsBasicBlock(BasicBlock bb, AbstractValue v) { guardControls(this, bb, v) } + predicate controlsBasicBlock(BasicBlock bb, GuardValue v) { guardControls(this, bb, v) } /** * Gets a valid value for this guard. For example, if this guard is a test, then * it can have Boolean values `true` and `false`. */ - deprecated AbstractValue getAValue() { isGuard(this, result) } + deprecated GuardValue getAValue() { isGuard(this, result) } } -class AbstractValue = GuardValue; +/** DEPRECATED: Use `GuardValue` instead. */ +deprecated class AbstractValue = GuardValue; -/** Provides different types of `AbstractValues`s. */ -module AbstractValues { +/** + * DEPRECATED: Use `GuardValue` member predicates instead. + * + * Provides different types of `AbstractValues`s. + */ +deprecated module AbstractValues { class BooleanValue extends AbstractValue { BooleanValue() { exists(this.asBooleanValue()) } @@ -369,8 +374,7 @@ module AbstractValues { } } -private import AbstractValues - +// private import AbstractValues /** Gets the value resulting from matching `null` against `pat`. */ private boolean patternMatchesNull(PatternExpr pat) { pat instanceof NullLiteral and result = true @@ -431,22 +435,22 @@ class DereferenceableExpr extends Expr { /** * Gets an expression that tests via nullness whether this expression is `null`. * - * If the returned expression evaluates to `null` (`v.isNull()`) or evaluates to - * non-`null` (`not v.isNull()`), then this expression is guaranteed to be `null` + * If the returned expression evaluates to `null` (`v.isNullValue()`) or evaluates to + * non-`null` (`not v.isNullValue()`), then this expression is guaranteed to be `null` * if `isNull` is true, and non-`null` if `isNull` is false. * * For example, if `x` evaluates to `null` in `x ?? y` then `y` is evaluated, and * `x` is guaranteed to be `null`. */ - private Expr getANullnessNullCheck(NullValue v, boolean isNull) { + private Expr getANullnessNullCheck(GuardValue v, boolean isNull) { exists(NullnessCompletion c | c.isValidFor(this) | result = this and if c.isNull() then ( - v.isNull() and + v.isNullValue() and isNull = true ) else ( - v.isNonNull() and + v.isNonNullValue() and isNull = false ) ) @@ -513,8 +517,8 @@ class EnumerableCollectionExpr extends Expr { ) } - private Expr getABooleanEmptinessCheck(BooleanValue v, boolean isEmpty) { - exists(boolean branch | branch = v.getValue() | + private Expr getABooleanEmptinessCheck(GuardValue v, boolean isEmpty) { + exists(boolean branch | branch = v.asBooleanValue() | result = any(ComparisonTest ct | exists(boolean lowerBound | @@ -578,7 +582,7 @@ class EnumerableCollectionExpr extends Expr { * For example, if the expression `x.Length != 0` evaluates to `true` then the * expression `x` is guaranteed to be non-empty. */ - Expr getAnEmptinessCheck(AbstractValue v, boolean isEmpty) { + Expr getAnEmptinessCheck(GuardValue v, boolean isEmpty) { result = this.getABooleanEmptinessCheck(v, isEmpty) } } @@ -692,14 +696,14 @@ class GuardedExpr extends AccessOrCallExpr { * left-most qualifier, then so must the other (accessing the same SSA * variable). */ - Guard getAGuard(Expr sub, AbstractValue v) { isGuardedByExpr(this, result, sub, v) } + Guard getAGuard(Expr sub, GuardValue v) { isGuardedByExpr(this, result, sub, v) } /** * Holds if this expression must have abstract value `v`. That is, this * expression is guarded by a structurally equal expression having abstract * value `v`. */ - predicate mustHaveValue(AbstractValue v) { + predicate mustHaveValue(GuardValue v) { exists(Guard g | g = this.getAGuard(g, v)) or ssaMustHaveValue(this, v) } @@ -713,7 +717,7 @@ class GuardedExpr extends AccessOrCallExpr { * variable). */ predicate isGuardedBy(Expr cond, Expr sub, boolean b) { - cond = this.getAGuard(sub, any(BooleanValue v | v.getValue() = b)) + cond = this.getAGuard(sub, any(GuardValue v | v.asBooleanValue() = b)) } } @@ -738,7 +742,7 @@ class GuardedExpr extends AccessOrCallExpr { class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { private Guard g; private AccessOrCallExpr sub0; - private AbstractValue v0; + private GuardValue v0; GuardedControlFlowNode() { g.controlsNode(this, sub0, v0) } @@ -753,7 +757,7 @@ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { * left-most qualifier, then so must the other (accessing the same SSA * variable). */ - Guard getAGuard(Expr sub, AbstractValue v) { + Guard getAGuard(Expr sub, GuardValue v) { result = g and sub = sub0 and v = v0 @@ -764,7 +768,7 @@ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { * control flow node is guarded by a structurally equal expression having * abstract value `v`. */ - predicate mustHaveValue(AbstractValue v) { g = this.getAGuard(g, v) } + predicate mustHaveValue(GuardValue v) { g = this.getAGuard(g, v) } } /** @@ -788,7 +792,7 @@ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { class GuardedDataFlowNode extends DataFlow::ExprNode { private Guard g; private AccessOrCallExpr sub0; - private AbstractValue v0; + private GuardValue v0; GuardedDataFlowNode() { exists(ControlFlow::Nodes::ElementNode cfn | exists(this.getExprAtNode(cfn)) | @@ -807,7 +811,7 @@ class GuardedDataFlowNode extends DataFlow::ExprNode { * left-most qualifier, then so must the other (accessing the same SSA * variable). */ - Guard getAGuard(Expr sub, AbstractValue v) { + Guard getAGuard(Expr sub, GuardValue v) { result = g and sub = sub0 and v = v0 @@ -818,17 +822,17 @@ class GuardedDataFlowNode extends DataFlow::ExprNode { * data flow node is guarded by a structurally equal expression having * abstract value `v`. */ - predicate mustHaveValue(AbstractValue v) { g = this.getAGuard(g, v) } + predicate mustHaveValue(GuardValue v) { g = this.getAGuard(g, v) } } /** An expression guarded by a `null` check. */ class NullGuardedExpr extends GuardedExpr { - NullGuardedExpr() { this.mustHaveValue(any(NullValue v | v.isNonNull())) } + NullGuardedExpr() { this.mustHaveValue(any(GuardValue v | v.isNonNullValue())) } } /** A data flow node guarded by a `null` check. */ class NullGuardedDataFlowNode extends GuardedDataFlowNode { - NullGuardedDataFlowNode() { this.mustHaveValue(any(NullValue v | v.isNonNull())) } + NullGuardedDataFlowNode() { this.mustHaveValue(any(GuardValue v | v.isNonNullValue())) } } /** INTERNAL: Do not use. */ @@ -931,7 +935,7 @@ module Internal { bao.getAnOperand() = o and // The other operand must be provably non-null in order // for `only if` to hold - o = any(NullValue nv | nv.isNonNull()).getAnExpr() and + nonNullValueImplied(o) and e != o ) } @@ -973,7 +977,7 @@ module Internal { nonEmptyValue(def.getDefinition().getSource()) } - deprecated predicate isGuard(Expr e, AbstractValue val) { + deprecated predicate isGuard(Expr e, GuardValue val) { ( e.getType() instanceof BoolType and not e instanceof BoolLiteral and @@ -1207,7 +1211,7 @@ module Internal { * Holds if basic block `bb` only is reached when guard `g` has abstract value `v`. */ cached - predicate guardControls(Guard g, BasicBlock bb, AbstractValue v) { + predicate guardControls(Guard g, BasicBlock bb, GuardValue v) { g.(Guards::Guard).valueControls(bb, v) } @@ -1220,7 +1224,7 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExpr0( ControlFlow::Node guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, - AccessOrCallExpr sub, AbstractValue v + AccessOrCallExpr sub, GuardValue v ) { Stages::GuardsStage::forceCachingInSameStage() and guardedCfn = guarded.getAControlFlowNode() and @@ -1233,7 +1237,7 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExpr( ControlFlow::Node guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, - AccessOrCallExpr sub, AbstractValue v + AccessOrCallExpr sub, GuardValue v ) { nodeIsGuardedBySameSubExpr0(guardedCfn, guardedBB, guarded, g, sub, v) and guardControlsSub(g, guardedBB, sub) @@ -1242,7 +1246,7 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExprSsaDef0( ControlFlow::Node cfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, - ControlFlow::Node subCfn, BasicBlock subCfnBB, AccessOrCallExpr sub, AbstractValue v, + ControlFlow::Node subCfn, BasicBlock subCfnBB, AccessOrCallExpr sub, GuardValue v, Ssa::Definition def ) { nodeIsGuardedBySameSubExpr(cfn, guardedBB, guarded, g, sub, v) and @@ -1253,7 +1257,7 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExprSsaDef( ControlFlow::Node guardedCfn, AccessOrCallExpr guarded, Guard g, ControlFlow::Node subCfn, - AccessOrCallExpr sub, AbstractValue v, Ssa::Definition def + AccessOrCallExpr sub, GuardValue v, Ssa::Definition def ) { exists(BasicBlock guardedBB, BasicBlock subCfnBB | nodeIsGuardedBySameSubExprSsaDef0(guardedCfn, guardedBB, guarded, g, subCfn, subCfnBB, sub, @@ -1264,7 +1268,7 @@ module Internal { pragma[noinline] private predicate isGuardedByExpr0( - AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { forex(ControlFlow::Node cfn | cfn = guarded.getAControlFlowNode() | nodeIsGuardedBySameSubExpr(cfn, _, guarded, g, sub, v) @@ -1272,9 +1276,7 @@ module Internal { } cached - predicate isGuardedByExpr( - AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v - ) { + predicate isGuardedByExpr(AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v) { isGuardedByExpr0(guarded, g, sub, v) and forall(ControlFlow::Node subCfn, Ssa::Definition def | nodeIsGuardedBySameSubExprSsaDef(_, guarded, g, subCfn, sub, v, def) @@ -1285,7 +1287,7 @@ module Internal { cached predicate isGuardedByNode( - ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { nodeIsGuardedBySameSubExpr(guarded, _, _, g, sub, v) and forall(ControlFlow::Node subCfn, Ssa::Definition def | diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index 55c0324e7c5..bf9d8d6c0ae 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -21,7 +21,6 @@ import csharp private import ControlFlow private import internal.CallableReturns private import semmle.code.csharp.controlflow.Guards as G -private import semmle.code.csharp.controlflow.Guards::AbstractValues private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.Test @@ -368,9 +367,9 @@ class Dereference extends G::DereferenceableExpr { ( forex(Ssa::Definition def0 | this = def0.getARead() | this.isAlwaysNull0(def0)) or - exists(NullValue nv | + exists(G::GuardValue nv | this.(G::GuardedExpr).mustHaveValue(nv) and - nv.isNull() + nv.isNullValue() ) ) and not this instanceof G::NullGuardedExpr diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index b21d5e2c3ef..4023d6c4597 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -173,7 +173,7 @@ abstract class NonLocalJumpNode extends Node { * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` * the argument `x`. */ -signature predicate guardChecksSig(Guard g, Expr e, AbstractValue v); +signature predicate guardChecksSig(Guard g, Expr e, GuardValue v); /** * Provides a set of barrier nodes for a guard that validates an expression. @@ -190,7 +190,7 @@ module BarrierGuard { SsaFlow::asNode(result) = SsaImpl::DataFlowIntegration::BarrierGuard::getABarrierNode() or - exists(Guard g, Expr e, AbstractValue v | + exists(Guard g, Expr e, GuardValue v | guardChecks(g, e, v) and g.controlsNode(result.getControlFlowNode(), e, v) ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 1b703d70dbd..70fda2b1296 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -963,7 +963,7 @@ private module Cached { DataFlowIntegrationImpl::localMustFlowStep(v, nodeFrom, nodeTo) } - signature predicate guardChecksSig(Guards::Guard g, Expr e, Guards::AbstractValue v); + signature predicate guardChecksSig(Guards::Guard g, Expr e, Guards::GuardValue v); cached // nothing is actually cached module BarrierGuard { @@ -971,9 +971,9 @@ private module Cached { DataFlowIntegrationInput::Guard g, DataFlowIntegrationInput::Expr e, DataFlowIntegrationInput::GuardValue branch ) { - exists(Guards::AbstractValues::BooleanValue v | + exists(Guards::GuardValue v | guardChecks(g, e.getAstNode(), v) and - branch = v.getValue() + branch = v.asBooleanValue() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll index 069d4e6e83a..71d177a48bb 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll @@ -10,8 +10,6 @@ private module Impl { private import semmle.code.csharp.controlflow.Guards as G private import ControlFlowReachability - private class BooleanValue = G::AbstractValues::BooleanValue; - private class ExprNode = ControlFlow::Nodes::ExprNode; private class ExprChildReachability extends ControlFlowReachabilityConfiguration { @@ -93,7 +91,7 @@ private module Impl { /** * Holds if basic block `bb` is guarded by this guard having value `v`. */ - predicate controlsBasicBlock(ControlFlow::BasicBlock bb, G::AbstractValue v) { + predicate controlsBasicBlock(ControlFlow::BasicBlock bb, G::GuardValue v) { super.controlsBasicBlock(bb, v) } @@ -130,7 +128,7 @@ private module Impl { * Holds if `guard` controls the position `controlled` with the value `testIsTrue`. */ predicate guardControlsSsaRead(Guard guard, SsaReadPosition controlled, boolean testIsTrue) { - exists(BooleanValue b | b.getValue() = testIsTrue | + exists(G::GuardValue b | b.asBooleanValue() = testIsTrue | guard.controlsBasicBlock(controlled.(SsaReadPositionBlock).getBlock(), b) ) } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll index 2f20eb6e342..668e3ddcb20 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll @@ -116,7 +116,7 @@ private class WeakGuard extends Guard { ) or // Checking against `null` has no bearing on path traversal. - this.controlsNode(_, _, any(AbstractValues::NullValue nv)) + this.controlsNode(_, _, any(GuardValue nv | nv.isNullness(_))) or this.(LogicalOperation).getAnOperand() instanceof WeakGuard } @@ -130,8 +130,9 @@ private class WeakGuard extends Guard { class PathCheck extends Sanitizer { PathCheck() { // This expression is structurally replicated in a dominating guard which is not a "weak" check - exists(Guard g, AbstractValues::BooleanValue v | + exists(Guard g, GuardValue v | g = this.(GuardedDataFlowNode).getAGuard(_, v) and + exists(v.asBooleanValue()) and not g instanceof WeakGuard ) } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index b095305742d..15ba99aedf0 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -111,7 +111,7 @@ class HttpServerTransferSink extends Sink { } } -private predicate isLocalUrlSanitizerMethodCall(MethodCall guard, Expr e, AbstractValue v) { +private predicate isLocalUrlSanitizerMethodCall(MethodCall guard, Expr e, GuardValue v) { exists(Method m | m = guard.getTarget() | m.hasName("IsLocalUrl") and e = guard.getArgument(0) @@ -119,10 +119,10 @@ private predicate isLocalUrlSanitizerMethodCall(MethodCall guard, Expr e, Abstra m.hasName("IsUrlLocalToHost") and e = guard.getArgument(1) ) and - v.(AbstractValues::BooleanValue).getValue() = true + v.asBooleanValue() = true } -private predicate isLocalUrlSanitizer(Guard g, Expr e, AbstractValue v) { +private predicate isLocalUrlSanitizer(Guard g, Expr e, GuardValue v) { isLocalUrlSanitizerMethodCall(g, e, v) } @@ -137,14 +137,14 @@ class LocalUrlSanitizer extends Sanitizer { /** * An argument to a call to `List.Contains()` that is a sanitizer for URL redirects. */ -private predicate isContainsUrlSanitizer(Guard guard, Expr e, AbstractValue v) { +private predicate isContainsUrlSanitizer(Guard guard, Expr e, GuardValue v) { guard = any(MethodCall method | exists(Method m | m = method.getTarget() | m.hasName("Contains") and e = method.getArgument(0) ) and - v.(AbstractValues::BooleanValue).getValue() = true + v.asBooleanValue() = true ) } @@ -163,12 +163,12 @@ class ContainsUrlSanitizer extends Sanitizer { /** * A check that the URL is relative, and therefore safe for URL redirects. */ -private predicate isRelativeUrlSanitizer(Guard guard, Expr e, AbstractValue v) { +private predicate isRelativeUrlSanitizer(Guard guard, Expr e, GuardValue v) { guard = any(PropertyAccess access | access.getProperty().hasFullyQualifiedName("System", "Uri", "IsAbsoluteUri") and e = access.getQualifier() and - v.(AbstractValues::BooleanValue).getValue() = false + v.asBooleanValue() = false ) } @@ -185,16 +185,14 @@ class RelativeUrlSanitizer extends Sanitizer { * A comparison on the `Host` property of a url, that is a sanitizer for URL redirects. * E.g. `url.Host == "example.org"` */ -private predicate isHostComparisonSanitizer(Guard guard, Expr e, AbstractValue v) { +private predicate isHostComparisonSanitizer(Guard guard, Expr e, GuardValue v) { guard = any(EqualityOperation comparison | exists(PropertyAccess access | access = comparison.getAnOperand() | access.getProperty().hasFullyQualifiedName("System", "Uri", "Host") and e = access.getQualifier() ) and - if comparison instanceof EQExpr - then v.(AbstractValues::BooleanValue).getValue() = true - else v.(AbstractValues::BooleanValue).getValue() = false + if comparison instanceof EQExpr then v.asBooleanValue() = true else v.asBooleanValue() = false ) } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll index 1639563e964..4a2b2759143 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll @@ -130,7 +130,7 @@ class SubstringSanitizer extends Sanitizer { } } -private predicate stringCheckGuard(Guard g, Expr e, AbstractValue v) { +private predicate stringCheckGuard(Guard g, Expr e, GuardValue v) { g.(MethodCall).getTarget().hasFullyQualifiedName("System", "String", "StartsWith") and g.(MethodCall).getQualifier() = e and // A StartsWith check against Path.Combine is not sufficient, because the ".." elements have @@ -139,7 +139,7 @@ private predicate stringCheckGuard(Guard g, Expr e, AbstractValue v) { combineCall.getTarget().hasFullyQualifiedName("System.IO", "Path", "Combine") and DataFlow::localExprFlow(combineCall, e) ) and - v.(AbstractValues::BooleanValue).getValue() = true + v.asBooleanValue() = true } /** diff --git a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll index 9ab1351f414..84ea534a50f 100644 --- a/csharp/ql/src/experimental/CWE-918/RequestForgery.qll +++ b/csharp/ql/src/experimental/CWE-918/RequestForgery.qll @@ -133,14 +133,14 @@ module RequestForgery { * to be a guard for Server Side Request Forgery(SSRF) Vulnerabilities. * This guard considers all checks as valid. */ - private predicate baseUriGuard(Guard g, Expr e, AbstractValue v) { + private predicate baseUriGuard(Guard g, Expr e, GuardValue v) { g.(MethodCall).getTarget().hasFullyQualifiedName("System", "Uri", "IsBaseOf") and // we consider any checks against the tainted value to sainitize the taint. // This implies any check such as shown below block the taint flow. // Uri url = new Uri("whitelist.com") // if (url.isBaseOf(`taint1)) (e = g.(MethodCall).getArgument(0) or e = g.(MethodCall).getQualifier()) and - v.(AbstractValues::BooleanValue).getValue() = true + v.asBooleanValue() = true } private class BaseUriBarrier extends Barrier { @@ -152,14 +152,14 @@ module RequestForgery { * to be a guard for Server Side Request Forgery(SSRF) Vulnerabilities. * This guard considers all checks as valid. */ - private predicate stringStartsWithGuard(Guard g, Expr e, AbstractValue v) { + private predicate stringStartsWithGuard(Guard g, Expr e, GuardValue v) { g.(MethodCall).getTarget().hasFullyQualifiedName("System", "String", "StartsWith") and // Any check such as the ones shown below // "https://myurl.com/".startsWith(`taint`) // `taint`.startsWith("https://myurl.com/") // are assumed to sainitize the taint (e = g.(MethodCall).getQualifier() or g.(MethodCall).getArgument(0) = e) and - v.(AbstractValues::BooleanValue).getValue() = true + v.asBooleanValue() = true } private class StringStartsWithBarrier extends Barrier { diff --git a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql index a28da604ff6..8d86e312cb4 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql +++ b/csharp/ql/test/library-tests/controlflow/guards/AbstractValue.ql @@ -1,6 +1,6 @@ import csharp private import semmle.code.csharp.controlflow.Guards -query predicate abstractValue(AbstractValue value, Expr e) { +query predicate abstractValue(GuardValue value, Expr e) { Guards::InternalUtil::exprHasValue(e, value) and e.fromSource() } diff --git a/csharp/ql/test/library-tests/controlflow/guards/Collections.ql b/csharp/ql/test/library-tests/controlflow/guards/Collections.ql index 1d5d3ad5a6e..578a08de307 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Collections.ql +++ b/csharp/ql/test/library-tests/controlflow/guards/Collections.ql @@ -2,7 +2,7 @@ import csharp private import semmle.code.csharp.controlflow.Guards query predicate emptinessCheck( - Expr check, EnumerableCollectionExpr collection, AbstractValue v, boolean isEmpty + Expr check, EnumerableCollectionExpr collection, GuardValue v, boolean isEmpty ) { check = collection.getAnEmptinessCheck(v, isEmpty) } diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.ql b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.ql index 82d843a2a41..183a097c27e 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.ql +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.ql @@ -1,5 +1,5 @@ import csharp import semmle.code.csharp.controlflow.Guards -from GuardedControlFlowNode gcfn, Expr sub, AbstractValue v +from GuardedControlFlowNode gcfn, Expr sub, GuardValue v select gcfn, gcfn.getAGuard(sub, v), sub, v diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.ql b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.ql index 4cdb4606dac..c825873677a 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.ql +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.ql @@ -1,5 +1,5 @@ import csharp import semmle.code.csharp.controlflow.Guards -from GuardedExpr ge, Expr sub, AbstractValue v +from GuardedExpr ge, Expr sub, GuardValue v select ge, ge.getAGuard(sub, v), sub, v diff --git a/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql index 5d63ff124ca..08579f1528f 100644 --- a/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql +++ b/csharp/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql @@ -5,10 +5,8 @@ import csharp import semmle.code.csharp.controlflow.Guards -private predicate stringConstCompare(Guard guard, Expr testedNode, AbstractValue value) { - guard - .isEquality(any(StringLiteral lit), testedNode, - value.(AbstractValues::BooleanValue).getValue()) +private predicate stringConstCompare(Guard guard, Expr testedNode, GuardValue value) { + guard.isEquality(any(StringLiteral lit), testedNode, value.asBooleanValue()) } class StringConstCompareBarrier extends DataFlow::Node { diff --git a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll index ae9b56cd038..3a3a55e42cc 100644 --- a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll +++ b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll @@ -18,9 +18,7 @@ module Config implements DataFlow::ConfigSig { } predicate isBarrier(DataFlow::Node node) { - exists(AbstractValues::NullValue nv | node.(GuardedDataFlowNode).mustHaveValue(nv) | - nv.isNull() - ) + exists(GuardValue nv | node.(GuardedDataFlowNode).mustHaveValue(nv) | nv.isNullValue()) } } From fa20075a4dd93204e125bfe8f27ff0a6c830a28a Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 14:41:32 +0100 Subject: [PATCH 495/965] C#: Review fix and simplification. --- .../semmle/code/csharp/controlflow/Guards.qll | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index ed0238d1f09..32519ba2348 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -374,7 +374,6 @@ deprecated module AbstractValues { } } -// private import AbstractValues /** Gets the value resulting from matching `null` against `pat`. */ private boolean patternMatchesNull(PatternExpr pat) { pat instanceof NullLiteral and result = true @@ -432,35 +431,11 @@ class DereferenceableExpr extends Expr { /** Holds if this expression has a nullable type `T?`. */ predicate hasNullableType() { isNullableType = true } - /** - * Gets an expression that tests via nullness whether this expression is `null`. - * - * If the returned expression evaluates to `null` (`v.isNullValue()`) or evaluates to - * non-`null` (`not v.isNullValue()`), then this expression is guaranteed to be `null` - * if `isNull` is true, and non-`null` if `isNull` is false. - * - * For example, if `x` evaluates to `null` in `x ?? y` then `y` is evaluated, and - * `x` is guaranteed to be `null`. - */ - private Expr getANullnessNullCheck(GuardValue v, boolean isNull) { - exists(NullnessCompletion c | c.isValidFor(this) | - result = this and - if c.isNull() - then ( - v.isNullValue() and - isNull = true - ) else ( - v.isNonNullValue() and - isNull = false - ) - ) - } - /** Holds if `guard` suggests that this expression may be `null`. */ predicate guardSuggestsMaybeNull(Guards::Guard guard) { not nonNullValueImplied(this) and ( - guard = this.getANullnessNullCheck(_, true) + exists(NullnessCompletion c | c.isValidFor(this) and c.isNull() and guard = this) or LogicInput::additionalNullCheck(guard, _, this, true) or From 1efecc099c5333d8f26473cc289be80bea4c60cc Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 30 Oct 2025 13:18:48 +0000 Subject: [PATCH 496/965] Kotlin: Avoid infinite recursion when extracting recursive interfaces --- .../src/main/kotlin/ExternalDeclExtractor.kt | 3 ++ .../main/kotlin/KotlinExtractorExtension.kt | 6 +++ .../src/main/kotlin/KotlinFileExtractor.kt | 19 +++++--- .../src/main/kotlin/KotlinUsesExtractor.kt | 18 ++++++- .../main/kotlin/utils/ClassInstanceStack.kt | 47 +++++++++++++++++++ 5 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/ClassInstanceStack.kt diff --git a/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt b/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt index 43cfad2f621..0a9e8df8073 100644 --- a/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt @@ -1,5 +1,6 @@ package com.github.codeql +import com.github.codeql.utils.ClassInstanceStack import com.github.codeql.utils.isExternalFileClassMember import com.semmle.extractor.java.OdasaOutput import com.semmle.util.data.StringDigestor @@ -18,6 +19,7 @@ class ExternalDeclExtractor( val compression: Compression, val invocationTrapFile: String, val sourceFilePath: String, + val classInstanceStack: ClassInstanceStack, val primitiveTypeMapping: PrimitiveTypeMapping, val pluginContext: IrPluginContext, val globalExtensionState: KotlinExtractorGlobalState, @@ -163,6 +165,7 @@ class ExternalDeclExtractor( binaryPath, manager, this, + classInstanceStack, primitiveTypeMapping, pluginContext, KotlinFileExtractor.DeclarationStack(), diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt b/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt index 1fc8ee37fc0..9f524de737e 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt @@ -1,5 +1,6 @@ package com.github.codeql +import com.github.codeql.utils.ClassInstanceStack import com.github.codeql.utils.versions.usesK2 import com.semmle.util.files.FileUtil import com.semmle.util.trap.pathtransformers.PathTransformer @@ -151,6 +152,7 @@ class KotlinExtractorExtension( } val compression = getCompression(logger) + val classInstanceStack = ClassInstanceStack() val primitiveTypeMapping = PrimitiveTypeMapping(logger, pluginContext) // FIXME: FileUtil expects a static global logger // which should be provided by SLF4J's factory facility. For now we set it here. @@ -182,6 +184,7 @@ class KotlinExtractorExtension( trapDir, srcDir, file, + classInstanceStack, primitiveTypeMapping, pluginContext, globalExtensionState @@ -358,6 +361,7 @@ private fun doFile( dbTrapDir: File, dbSrcDir: File, srcFile: IrFile, + classInstanceStack: ClassInstanceStack, primitiveTypeMapping: PrimitiveTypeMapping, pluginContext: IrPluginContext, globalExtensionState: KotlinExtractorGlobalState @@ -415,6 +419,7 @@ private fun doFile( compression, invocationTrapFile, srcFilePath, + classInstanceStack, primitiveTypeMapping, pluginContext, globalExtensionState, @@ -429,6 +434,7 @@ private fun doFile( srcFilePath, null, externalDeclExtractor, + classInstanceStack, primitiveTypeMapping, pluginContext, KotlinFileExtractor.DeclarationStack(), diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 376736611d1..72c766bb082 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -62,6 +62,7 @@ open class KotlinFileExtractor( val filePath: String, dependencyCollector: OdasaOutput.TrapFileManager?, externalClassExtractor: ExternalDeclExtractor, + classInstanceStack: ClassInstanceStack, primitiveTypeMapping: PrimitiveTypeMapping, pluginContext: IrPluginContext, val declarationStack: DeclarationStack, @@ -72,6 +73,7 @@ open class KotlinFileExtractor( tw, dependencyCollector, externalClassExtractor, + classInstanceStack, primitiveTypeMapping, pluginContext, globalExtensionState @@ -496,12 +498,17 @@ open class KotlinFileExtractor( } extractClassModifiers(c, id) - extractClassSupertypes( - c, - id, - if (argsIncludingOuterClasses == null) ExtractSupertypesMode.Raw - else ExtractSupertypesMode.Specialised(argsIncludingOuterClasses) - ) + classInstanceStack.push(c) + try { + extractClassSupertypes( + c, + id, + if (argsIncludingOuterClasses == null) ExtractSupertypesMode.Raw + else ExtractSupertypesMode.Specialised(argsIncludingOuterClasses) + ) + } finally { + classInstanceStack.pop() + } val locId = getLocation(c, argsIncludingOuterClasses) tw.writeHasLocation(id, locId) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index 2f87c77f8ee..83cbec771fc 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -49,6 +49,7 @@ open class KotlinUsesExtractor( open val tw: TrapWriter, val dependencyCollector: OdasaOutput.TrapFileManager?, val externalClassExtractor: ExternalDeclExtractor, + val classInstanceStack: ClassInstanceStack, val primitiveTypeMapping: PrimitiveTypeMapping, val pluginContext: IrPluginContext, val globalExtensionState: KotlinExtractorGlobalState @@ -182,6 +183,7 @@ open class KotlinUsesExtractor( filePath, dependencyCollector, externalClassExtractor, + classInstanceStack, primitiveTypeMapping, pluginContext, newDeclarationStack, @@ -199,6 +201,7 @@ open class KotlinUsesExtractor( clsFile.path, dependencyCollector, externalClassExtractor, + classInstanceStack, primitiveTypeMapping, pluginContext, newDeclarationStack, @@ -537,6 +540,19 @@ open class KotlinUsesExtractor( return Pair(p?.first ?: c, p?.second ?: argsIncludingOuterClassesBeforeReplacement) } + private fun avoidInfiniteRecursion( + pair: Pair?> + ): Pair?> { + val c = pair.first + val args = pair.second + if (args != null && args.isNotEmpty() && classInstanceStack.possiblyCyclicExtraction(c, args)) { + logger.warn("Making use of ${c.name} a raw type to avoid infinite recursion") + return Pair(c, null) + } else { + return pair + } + } + // `typeArgs` can be null to describe a raw generic type. // For non-generic types it will be zero-length list. private fun addClassLabel( @@ -545,7 +561,7 @@ open class KotlinUsesExtractor( inReceiverContext: Boolean = false ): TypeResult { val replaced = - tryReplaceType(cBeforeReplacement, argsIncludingOuterClassesBeforeReplacement) + avoidInfiniteRecursion(tryReplaceType(cBeforeReplacement, argsIncludingOuterClassesBeforeReplacement)) val replacedClass = replaced.first val replacedArgsIncludingOuterClasses = replaced.second diff --git a/java/kotlin-extractor/src/main/kotlin/utils/ClassInstanceStack.kt b/java/kotlin-extractor/src/main/kotlin/utils/ClassInstanceStack.kt new file mode 100644 index 00000000000..fdd0deb5151 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/ClassInstanceStack.kt @@ -0,0 +1,47 @@ +package com.github.codeql.utils + +import java.util.Stack +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.symbols.IrClassSymbol +import org.jetbrains.kotlin.ir.types.* + +class ClassInstanceStack { + private val stack: Stack = Stack() + + fun push(c: IrClass) = stack.push(c) + fun pop() = stack.pop() + + private fun checkTypeArgs(sym: IrClassSymbol, args: List): Boolean { + for (arg in args) { + if (arg is IrTypeProjection) { + if (checkType(sym, arg.type)) { + return true + } + } + } + return false + } + + private fun checkType(sym: IrClassSymbol, type: IrType): Boolean { + if (type is IrSimpleType) { + val decl = type.classifier.owner + if (decl.symbol == sym) { + return true + } + if (checkTypeArgs(sym, type.arguments)) { + return true + } + } + return false + } + + fun possiblyCyclicExtraction(classToCheck: IrClass, args: List): Boolean { + for (c in stack) { + if (c.symbol == classToCheck.symbol && checkTypeArgs(c.symbol, args)) { + return true + } + } + return false + } +} + From 9182da1d586ad69f3fe6fd179baeb3d96a6f8676 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 30 Oct 2025 15:28:01 +0000 Subject: [PATCH 497/965] Kotlin: Add a test for nested types --- .../library-tests/nested_types/test.kt | 16 ++++++++++++++++ .../library-tests/nested_types/types.expected | 13 +++++++++++++ .../library-tests/nested_types/types.ql | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 java/ql/test-kotlin2/library-tests/nested_types/test.kt create mode 100644 java/ql/test-kotlin2/library-tests/nested_types/types.expected create mode 100644 java/ql/test-kotlin2/library-tests/nested_types/types.ql diff --git a/java/ql/test-kotlin2/library-tests/nested_types/test.kt b/java/ql/test-kotlin2/library-tests/nested_types/test.kt new file mode 100644 index 00000000000..7d5e2280b92 --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/nested_types/test.kt @@ -0,0 +1,16 @@ + +import java.util.Stack; + +// Diagnostic Matches: %Making use of Stack a raw type to avoid infinite recursion% + +class MyType + +fun foo1(x: List>>>) { } + +fun foo2(x: Stack>>>) { } + +class MkT { } + +fun foo3(x: MkT>>>) { } + + diff --git a/java/ql/test-kotlin2/library-tests/nested_types/types.expected b/java/ql/test-kotlin2/library-tests/nested_types/types.expected new file mode 100644 index 00000000000..ec2e407b8b7 --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/nested_types/types.expected @@ -0,0 +1,13 @@ +| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT>>> | +| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT>> | +| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT> | +| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT | +| file:///modules/java.base/java/util/List.class:0:0:0:0 | List>>> | +| file:///modules/java.base/java/util/List.class:0:0:0:0 | List>> | +| file:///modules/java.base/java/util/List.class:0:0:0:0 | List> | +| file:///modules/java.base/java/util/List.class:0:0:0:0 | List | +| file:///modules/java.base/java/util/List.class:0:0:0:0 | List> | +| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack | +| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack> | +| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack>> | +| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack>>> | diff --git a/java/ql/test-kotlin2/library-tests/nested_types/types.ql b/java/ql/test-kotlin2/library-tests/nested_types/types.ql new file mode 100644 index 00000000000..3499ae037c7 --- /dev/null +++ b/java/ql/test-kotlin2/library-tests/nested_types/types.ql @@ -0,0 +1,7 @@ +import java + +from Type t +where + t.getName().matches("%MyType%") and + t.getName().matches(["List<%", "Stack<%", "MkT<%"]) +select t From 06218d8acd22872a1965fe2b79b57b0f50f78494 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 30 Oct 2025 15:36:32 +0000 Subject: [PATCH 498/965] Kotlin: Add a test for recursive interfaces --- .../recursive_interfaces/somepkg/IfaceA.java | 4 ++++ .../recursive_interfaces/somepkg/IfaceB.java | 4 ++++ .../recursive_interfaces/somepkg/IfaceC.java | 4 ++++ .../recursive_interfaces/somepkg/IfaceZ.java | 6 ++++++ .../recursive_interfaces/test.kt | 5 +++++ .../recursive_interfaces/test.py | 6 ++++++ .../recursive_interfaces/types.expected | 19 +++++++++++++++++++ .../recursive_interfaces/types.ql | 5 +++++ 8 files changed, 53 insertions(+) create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceA.java create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceB.java create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceC.java create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceZ.java create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.kt create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.py create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.expected create mode 100644 java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.ql diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceA.java b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceA.java new file mode 100644 index 00000000000..b8ffc44dada --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceA.java @@ -0,0 +1,4 @@ + +package somepkg; + +public interface IfaceA extends IfaceB {} diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceB.java b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceB.java new file mode 100644 index 00000000000..6c45ba3dcb3 --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceB.java @@ -0,0 +1,4 @@ + +package somepkg; + +public interface IfaceB extends IfaceC>> {} diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceC.java b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceC.java new file mode 100644 index 00000000000..e75348f1c26 --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceC.java @@ -0,0 +1,4 @@ + +package somepkg; + +public interface IfaceC {} diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceZ.java b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceZ.java new file mode 100644 index 00000000000..b46c132b0e0 --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/somepkg/IfaceZ.java @@ -0,0 +1,6 @@ + +package somepkg; + +public interface IfaceZ { + public IfaceA someFun(); +} diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.kt b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.kt new file mode 100644 index 00000000000..55767ae75f3 --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.kt @@ -0,0 +1,5 @@ +package mypkg + +import somepkg.IfaceZ + +class SomeClass(private val myVal: IfaceZ) { } diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.py b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.py new file mode 100644 index 00000000000..daa246c8c7c --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/test.py @@ -0,0 +1,6 @@ +import commands + +def test(codeql, java_full): + codeql.database.create( + command=["kotlinc somepkg/IfaceA.java somepkg/IfaceB.java somepkg/IfaceC.java somepkg/IfaceZ.java test.kt"] + ) diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.expected b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.expected new file mode 100644 index 00000000000..cf39c2a5457 --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.expected @@ -0,0 +1,19 @@ +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<> | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA> | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA> | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA> | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA | +| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA | +| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB | +| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB<> | +| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB | +| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB | +| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<> | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC>> | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC>> | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC>> | +| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC> | +| file:///!unknown-binary-location/somepkg/IfaceZ.class:0:0:0:0 | IfaceZ | diff --git a/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.ql b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.ql new file mode 100644 index 00000000000..fad3645276c --- /dev/null +++ b/java/ql/integration-tests/kotlin/all-platforms/recursive_interfaces/types.ql @@ -0,0 +1,5 @@ +import java + +from Type t +where t.getName().matches("Iface%") +select t From aaa3b1bcb45195c3111c4815deec4c035114488c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:20:52 +0000 Subject: [PATCH 499/965] Rust: Add a couple of new test cases. --- .../security/CWE-020/RegexInjection.expected | 36 ++++- .../CWE-020/RegexInjectionSink.expected | 1 + .../test/query-tests/security/CWE-020/main.rs | 12 +- .../security/CWE-117/LogInjection.expected | 129 ++++++++++-------- .../test/query-tests/security/CWE-117/main.rs | 6 +- 5 files changed, 119 insertions(+), 65 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 2814af2b5ed..7627221edb1 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -1,5 +1,6 @@ #select | main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | +| main.rs:21:25:21:30 | ®ex | main.rs:19:23:19:35 | ...::var | main.rs:21:25:21:30 | ®ex | This regular expression is constructed from a $@. | main.rs:19:23:19:35 | ...::var | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | | main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | @@ -8,14 +9,28 @@ edges | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:3 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:5 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | +| main.rs:19:9:19:19 | user_number | main.rs:20:25:20:47 | MacroExpr | provenance | | +| main.rs:19:23:19:35 | ...::var | main.rs:19:23:19:43 | ...::var(...) [Ok] | provenance | Src:MaD:1 | +| main.rs:19:23:19:43 | ...::var(...) [Ok] | main.rs:19:23:19:70 | ... .unwrap_or(...) | provenance | MaD:2 | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | +| main.rs:19:23:19:85 | ... .parse() [Ok] | main.rs:19:23:19:98 | ... .unwrap_or(...) | provenance | MaD:2 | +| main.rs:19:23:19:98 | ... .unwrap_or(...) | main.rs:19:9:19:19 | user_number | provenance | | +| main.rs:20:9:20:13 | regex | main.rs:21:26:21:30 | regex | provenance | | +| main.rs:20:25:20:47 | ...::format(...) | main.rs:20:25:20:47 | { ... } | provenance | | +| main.rs:20:25:20:47 | ...::must_use(...) | main.rs:20:9:20:13 | regex | provenance | | +| main.rs:20:25:20:47 | MacroExpr | main.rs:20:25:20:47 | ...::format(...) | provenance | MaD:4 | +| main.rs:20:25:20:47 | { ... } | main.rs:20:25:20:47 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:21:26:21:30 | regex | main.rs:21:25:21:30 | ®ex | provenance | | models | 1 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 2 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 3 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:4:9:4:16 | username | semmle.label | username | | main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | @@ -28,4 +43,17 @@ nodes | main.rs:5:25:5:44 | { ... } | semmle.label | { ... } | | main.rs:6:25:6:30 | ®ex | semmle.label | ®ex | | main.rs:6:26:6:30 | regex | semmle.label | regex | +| main.rs:19:9:19:19 | user_number | semmle.label | user_number | +| main.rs:19:23:19:35 | ...::var | semmle.label | ...::var | +| main.rs:19:23:19:43 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:19:23:19:85 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | +| main.rs:19:23:19:98 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:20:9:20:13 | regex | semmle.label | regex | +| main.rs:20:25:20:47 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:20:25:20:47 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:20:25:20:47 | MacroExpr | semmle.label | MacroExpr | +| main.rs:20:25:20:47 | { ... } | semmle.label | { ... } | +| main.rs:21:25:21:30 | ®ex | semmle.label | ®ex | +| main.rs:21:26:21:30 | regex | semmle.label | regex | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected index 4ea46a38587..9bbf1a6904f 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected @@ -1,2 +1,3 @@ | main.rs:6:25:6:30 | ®ex | | main.rs:14:25:14:30 | ®ex | +| main.rs:21:25:21:30 | ®ex | diff --git a/rust/ql/test/query-tests/security/CWE-020/main.rs b/rust/ql/test/query-tests/security/CWE-020/main.rs index a03e5d4b494..fcd66e1e3ce 100644 --- a/rust/ql/test/query-tests/security/CWE-020/main.rs +++ b/rust/ql/test/query-tests/security/CWE-020/main.rs @@ -7,7 +7,7 @@ fn simple_bad(hay: &str) -> Option { Some(re.is_match(hay)) } -fn simple_good(hay: &str) -> Option { +fn simple_good_escaped(hay: &str) -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let escaped = regex::escape(&username); let regex = format!("foo{}bar", escaped); @@ -15,6 +15,13 @@ fn simple_good(hay: &str) -> Option { Some(re.is_match(hay)) } +fn simple_good_numeric(hay: &str) -> Option { + let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); // $ Source=env + let regex = format!("foo{}bar", user_number); + let re = Regex::new(®ex).unwrap(); // $ SPURIOUS: Alert[rust/regex-injection]=env + Some(re.is_match(hay)) +} + fn not_a_sink_literal() -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let re = Regex::new("literal string").unwrap(); @@ -30,7 +37,8 @@ fn not_a_sink_raw_literal() -> Option { fn main() { let hay = "a string"; simple_bad(hay); - simple_good(hay); + simple_good_escaped(hay); + simple_good_numeric(hay); not_a_sink_literal(); not_a_sink_raw_literal(); } diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index adc258a886a..6a4995a2728 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -3,14 +3,15 @@ | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:108:9:108:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:108:9:108:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:109:9:109:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:109:9:109:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:110:9:110:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:110:9:110:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:111:9:111:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:111:9:111:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:112:9:112:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:112:9:112:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:115:9:115:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:115:9:115:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:122:9:122:16 | ...::_print | main.rs:119:25:119:37 | ...::var | main.rs:122:9:122:16 | ...::_print | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | -| main.rs:123:9:123:17 | ...::_eprint | main.rs:119:25:119:37 | ...::var | main.rs:123:9:123:17 | ...::_eprint | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | +| main.rs:49:5:49:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:49:5:49:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | +| main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:115:9:115:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:115:9:115:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:116:9:116:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:116:9:116:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:119:9:119:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:119:9:119:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:126:9:126:16 | ...::_print | main.rs:123:25:123:37 | ...::var | main.rs:126:9:126:16 | ...::_print | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | +| main.rs:127:9:127:17 | ...::_eprint | main.rs:123:25:123:37 | ...::var | main.rs:127:9:127:17 | ...::_eprint | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | edges | main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | | @@ -19,38 +20,44 @@ edges | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | +| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | +| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | | main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:4 | | main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:9 | -| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:12 | +| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:13 | | main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:10 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | | main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:105:13:105:21 | user_data | main.rs:108:15:108:35 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:109:15:109:38 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:110:16:110:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:111:16:111:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:112:16:112:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:115:15:115:75 | MacroExpr | provenance | | -| main.rs:105:25:105:38 | ...::args | main.rs:105:25:105:40 | ...::args(...) [element] | provenance | Src:MaD:5 | -| main.rs:105:25:105:40 | ...::args(...) [element] | main.rs:105:25:105:47 | ... .nth(...) [Some] | provenance | MaD:7 | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | main.rs:105:25:105:67 | ... .unwrap_or_default() | provenance | MaD:8 | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | main.rs:105:13:105:21 | user_data | provenance | | -| main.rs:108:15:108:35 | MacroExpr | main.rs:108:9:108:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:109:15:109:38 | MacroExpr | main.rs:109:9:109:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:110:16:110:37 | MacroExpr | main.rs:110:9:110:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:111:16:111:37 | MacroExpr | main.rs:111:9:111:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:112:16:112:37 | MacroExpr | main.rs:112:9:112:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:115:15:115:75 | MacroExpr | main.rs:115:9:115:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:119:13:119:21 | user_data | main.rs:122:18:122:38 | MacroExpr | provenance | | -| main.rs:119:13:119:21 | user_data | main.rs:123:19:123:49 | MacroExpr | provenance | | -| main.rs:119:25:119:37 | ...::var | main.rs:119:25:119:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | main.rs:119:25:119:65 | ... .unwrap_or_default() | provenance | MaD:11 | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | main.rs:119:13:119:21 | user_data | provenance | | -| main.rs:122:18:122:38 | MacroExpr | main.rs:122:9:122:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | -| main.rs:123:19:123:49 | MacroExpr | main.rs:123:9:123:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | +| main.rs:48:9:48:14 | number | main.rs:49:11:49:30 | MacroExpr | provenance | | +| main.rs:48:18:48:43 | remote_data.parse() [Ok] | main.rs:48:18:48:56 | ... .unwrap_or(...) | provenance | MaD:10 | +| main.rs:48:18:48:56 | ... .unwrap_or(...) | main.rs:48:9:48:14 | number | provenance | | +| main.rs:49:11:49:30 | MacroExpr | main.rs:49:5:49:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:115:16:115:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | | +| main.rs:109:25:109:38 | ...::args | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:5 | +| main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:7 | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:8 | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | main.rs:109:13:109:21 | user_data | provenance | | +| main.rs:112:15:112:35 | MacroExpr | main.rs:112:9:112:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:113:15:113:38 | MacroExpr | main.rs:113:9:113:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:114:16:114:37 | MacroExpr | main.rs:114:9:114:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:115:16:115:37 | MacroExpr | main.rs:115:9:115:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:116:16:116:37 | MacroExpr | main.rs:116:9:116:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:119:15:119:75 | MacroExpr | main.rs:119:9:119:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:123:13:123:21 | user_data | main.rs:126:18:126:38 | MacroExpr | provenance | | +| main.rs:123:13:123:21 | user_data | main.rs:127:19:127:49 | MacroExpr | provenance | | +| main.rs:123:25:123:37 | ...::var | main.rs:123:25:123:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | main.rs:123:25:123:65 | ... .unwrap_or_default() | provenance | MaD:11 | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | main.rs:123:13:123:21 | user_data | provenance | | +| main.rs:126:18:126:38 | MacroExpr | main.rs:126:9:126:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | +| main.rs:127:19:127:49 | MacroExpr | main.rs:127:9:127:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | models | 1 | Sink: log::__private_api::log; Argument[0]; log-injection | | 2 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | @@ -63,7 +70,8 @@ models | 9 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 10 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 11 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 13 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | @@ -83,29 +91,34 @@ nodes | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | -| main.rs:105:13:105:21 | user_data | semmle.label | user_data | -| main.rs:105:25:105:38 | ...::args | semmle.label | ...::args | -| main.rs:105:25:105:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:108:9:108:13 | ...::log | semmle.label | ...::log | -| main.rs:108:15:108:35 | MacroExpr | semmle.label | MacroExpr | -| main.rs:109:9:109:13 | ...::log | semmle.label | ...::log | -| main.rs:109:15:109:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:110:9:110:14 | ...::log | semmle.label | ...::log | -| main.rs:110:16:110:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:111:9:111:14 | ...::log | semmle.label | ...::log | -| main.rs:111:16:111:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:112:9:112:14 | ...::log | semmle.label | ...::log | -| main.rs:112:16:112:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:115:9:115:13 | ...::log | semmle.label | ...::log | -| main.rs:115:15:115:75 | MacroExpr | semmle.label | MacroExpr | -| main.rs:119:13:119:21 | user_data | semmle.label | user_data | -| main.rs:119:25:119:37 | ...::var | semmle.label | ...::var | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:122:9:122:16 | ...::_print | semmle.label | ...::_print | -| main.rs:122:18:122:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:123:9:123:17 | ...::_eprint | semmle.label | ...::_eprint | -| main.rs:123:19:123:49 | MacroExpr | semmle.label | MacroExpr | +| main.rs:48:9:48:14 | number | semmle.label | number | +| main.rs:48:18:48:43 | remote_data.parse() [Ok] | semmle.label | remote_data.parse() [Ok] | +| main.rs:48:18:48:56 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:49:5:49:9 | ...::log | semmle.label | ...::log | +| main.rs:49:11:49:30 | MacroExpr | semmle.label | MacroExpr | +| main.rs:109:13:109:21 | user_data | semmle.label | user_data | +| main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | +| main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:112:9:112:13 | ...::log | semmle.label | ...::log | +| main.rs:112:15:112:35 | MacroExpr | semmle.label | MacroExpr | +| main.rs:113:9:113:13 | ...::log | semmle.label | ...::log | +| main.rs:113:15:113:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:114:9:114:14 | ...::log | semmle.label | ...::log | +| main.rs:114:16:114:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:115:9:115:14 | ...::log | semmle.label | ...::log | +| main.rs:115:16:115:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:116:9:116:14 | ...::log | semmle.label | ...::log | +| main.rs:116:16:116:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:119:9:119:13 | ...::log | semmle.label | ...::log | +| main.rs:119:15:119:75 | MacroExpr | semmle.label | MacroExpr | +| main.rs:123:13:123:21 | user_data | semmle.label | user_data | +| main.rs:123:25:123:37 | ...::var | semmle.label | ...::var | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:126:9:126:16 | ...::_print | semmle.label | ...::_print | +| main.rs:126:18:126:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:127:9:127:17 | ...::_eprint | semmle.label | ...::_eprint | +| main.rs:127:19:127:49 | MacroExpr | semmle.label | MacroExpr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index 10bb03eb02c..88350515314 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -40,10 +40,14 @@ fn main() { let system_time = std::time::SystemTime::now(); info!("Current time: {:?}", system_time); - // GOOD: Numeric data derived from user input (not directly logged) + // GOOD: Numeric data derived from user input (indirectly) let user_id = username.len(); info!("User ID length: {}", user_id); + // GOOD: Numeric data derived from user input (directly) + let number = remote_data.parse::().unwrap_or(0); + info!("Number: {}", number); // $ SPURIOUS: Alert[rust/log-injection]=remote + // More complex test cases test_complex_scenarios(&username, &user_input); test_indirect_flows(&remote_data); From 47019f7f24388dfc2ef326e61256afbbc88f95b8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:38:19 +0000 Subject: [PATCH 500/965] Rust: Define NumericType, IntegralType and FloatingPointType in Builtins.qll. --- .../rust/frameworks/stdlib/Builtins.qll | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 0c4999bba5e..56de2d97b6f 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -31,6 +31,30 @@ class BuiltinType extends Struct { string getName() { result = super.getName().getText() } } +/** + * A numerical type, such as `i64`, `usize`, `f32` or `f64`. + */ +abstract private class NumericTypeImpl extends BuiltinType { +} + +final class NumericType = NumericTypeImpl; + +/** + * An integral numerical type, such as `i64` or `usize`. + */ +abstract private class IntegralTypeImpl extends NumericTypeImpl { +} + +final class IntegralType = IntegralTypeImpl; + +/** + * A floating-point numerical type, such as `f32` or `f64`. + */ +abstract private class FloatingPointTypeImpl extends NumericTypeImpl { +} + +final class FloatingPointType = FloatingPointTypeImpl; + /** The builtin `bool` type. */ class Bool extends BuiltinType { Bool() { this.getName() = "bool" } @@ -47,71 +71,71 @@ class Str extends BuiltinType { } /** The builtin `i8` type. */ -class I8 extends BuiltinType { +class I8 extends IntegralTypeImpl { I8() { this.getName() = "i8" } } /** The builtin `i16` type. */ -class I16 extends BuiltinType { +class I16 extends IntegralTypeImpl { I16() { this.getName() = "i16" } } /** The builtin `i32` type. */ -class I32 extends BuiltinType { +class I32 extends IntegralTypeImpl { I32() { this.getName() = "i32" } } /** The builtin `i64` type. */ -class I64 extends BuiltinType { +class I64 extends IntegralTypeImpl { I64() { this.getName() = "i64" } } /** The builtin `i128` type. */ -class I128 extends BuiltinType { +class I128 extends IntegralTypeImpl { I128() { this.getName() = "i128" } } /** The builtin `u8` type. */ -class U8 extends BuiltinType { +class U8 extends IntegralTypeImpl { U8() { this.getName() = "u8" } } /** The builtin `u16` type. */ -class U16 extends BuiltinType { +class U16 extends IntegralTypeImpl { U16() { this.getName() = "u16" } } /** The builtin `u32` type. */ -class U32 extends BuiltinType { +class U32 extends IntegralTypeImpl { U32() { this.getName() = "u32" } } /** The builtin `u64` type. */ -class U64 extends BuiltinType { +class U64 extends IntegralTypeImpl { U64() { this.getName() = "u64" } } /** The builtin `u128` type. */ -class U128 extends BuiltinType { +class U128 extends IntegralTypeImpl { U128() { this.getName() = "u128" } } /** The builtin `usize` type. */ -class Usize extends BuiltinType { +class Usize extends IntegralTypeImpl { Usize() { this.getName() = "usize" } } /** The builtin `isize` type. */ -class Isize extends BuiltinType { +class Isize extends IntegralTypeImpl { Isize() { this.getName() = "isize" } } /** The builtin `f32` type. */ -class F32 extends BuiltinType { +class F32 extends FloatingPointTypeImpl { F32() { this.getName() = "f32" } } /** The builtin `f64` type. */ -class F64 extends BuiltinType { +class F64 extends FloatingPointTypeImpl { F64() { this.getName() = "f64" } } From 6433bec69946d9c3a6e5570603e18f4945fab004 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:58:00 +0000 Subject: [PATCH 501/965] Rust: Add a test for BuiltinTypes. --- .../elements/builtintypes/BuiltinTypes.expected | 17 +++++++++++++++++ .../elements/builtintypes/BuiltinTypes.ql | 14 ++++++++++++++ .../elements/builtintypes/Cargo.lock | 7 +++++++ .../library-tests/elements/builtintypes/test.rs | 5 +++++ 4 files changed, 43 insertions(+) create mode 100644 rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected create mode 100644 rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql create mode 100644 rust/ql/test/library-tests/elements/builtintypes/Cargo.lock create mode 100644 rust/ql/test/library-tests/elements/builtintypes/test.rs diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected new file mode 100644 index 00000000000..2b0aecda049 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -0,0 +1,17 @@ +| struct bool | | +| struct char | | +| struct f32 | FloatingPointType, NumericType | +| struct f64 | FloatingPointType, NumericType | +| struct i8 | IntegralType, NumericType | +| struct i16 | IntegralType, NumericType | +| struct i32 | IntegralType, NumericType | +| struct i64 | IntegralType, NumericType | +| struct i128 | IntegralType, NumericType | +| struct isize | IntegralType, NumericType | +| struct str | | +| struct u8 | IntegralType, NumericType | +| struct u16 | IntegralType, NumericType | +| struct u32 | IntegralType, NumericType | +| struct u64 | IntegralType, NumericType | +| struct u128 | IntegralType, NumericType | +| struct usize | IntegralType, NumericType | diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql new file mode 100644 index 00000000000..a5a1a0a48e0 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -0,0 +1,14 @@ +import rust +import codeql.rust.frameworks.stdlib.Builtins +import codeql.rust.internal.Type + +string describe(BuiltinType t) { + (t instanceof NumericType and result = "NumericType") + or + (t instanceof IntegralType and result = "IntegralType") + or + (t instanceof FloatingPointType and result = "FloatingPointType") +} + +from BuiltinType t +select t.toString(), concat(describe(t), ", ") diff --git a/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/elements/builtintypes/test.rs b/rust/ql/test/library-tests/elements/builtintypes/test.rs new file mode 100644 index 00000000000..a00a4833c4c --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/test.rs @@ -0,0 +1,5 @@ + +// --- tests --- + +fn test_types() { +} From 52397f0ce0a7f86aeceea0e891a3a4fc8841f02c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:15:52 +0000 Subject: [PATCH 502/965] Rust: Add numeric type barrier for SQL injection. --- rust/ql/lib/codeql/rust/security/Barriers.qll | 26 ++++++++++ .../rust/security/SqlInjectionExtensions.qll | 7 +++ .../security/CWE-089/SqlInjection.expected | 48 ++++--------------- .../test/query-tests/security/CWE-089/sqlx.rs | 2 +- 4 files changed, 44 insertions(+), 39 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/security/Barriers.qll diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll new file mode 100644 index 00000000000..66d47146d30 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -0,0 +1,26 @@ +/** + * Classes to represent barriers commonly used in dataflow and taint tracking + * configurations. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.internal.Type +private import codeql.rust.frameworks.stdlib.Builtins + +/** + * A node whose type is a numeric or boolean type, which may be an appropriate + * taint flow barrier for some queries. + */ +class NumericTypeBarrier extends DataFlow::Node { + NumericTypeBarrier() { + exists(TypeInference::Type t | + t = TypeInference::inferType(this.asExpr().getExpr()) and + ( + t.(StructType).getStruct() instanceof NumericType or + t.(StructType).getStruct() instanceof Bool + ) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index f2921ef0cc1..ff81df37e40 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting SQL injection @@ -57,4 +58,10 @@ module SqlInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "sql-injection") } } + + /** + * A barrier for SQL injection vulnerabilities for nodes whose type is a numeric or + * boolean type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa7937..fafde42ff65 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -21,7 +21,6 @@ | mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:81:17:81:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:81:17:81:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -37,7 +36,7 @@ edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | | mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:34 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | @@ -114,7 +113,7 @@ edges | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | | mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:34 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | @@ -173,25 +172,14 @@ edges | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | -| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | -| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | @@ -212,11 +200,8 @@ edges | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:35 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:36 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | @@ -228,7 +213,7 @@ edges | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | @@ -270,7 +255,7 @@ edges | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | @@ -318,10 +303,9 @@ models | 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 34 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 37 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 36 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | @@ -444,14 +428,6 @@ nodes | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | semmle.label | remote_string.parse() [Ok] | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:52:32:52:87 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | semmle.label | &arg_string [&ref] | | sqlx.rs:53:27:53:36 | arg_string | semmle.label | arg_string | @@ -468,10 +444,6 @@ nodes | sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:77:13:77:23 | ...::query | semmle.label | ...::query | -| sqlx.rs:77:25:77:36 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | semmle.label | safe_query_3.as_str() [&ref] | | sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query | diff --git a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs index 151f9fa7c82..915625f7634 100644 --- a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs +++ b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs @@ -74,7 +74,7 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err // prepared queries let _ = sqlx::query(safe_query_1.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(safe_query_2.as_str()).execute(&pool).await?; // $ sql-sink - let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink $ SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 From 2d4369ac6c899a0450c710aa46f61620f506bc6e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:46:37 +0000 Subject: [PATCH 503/965] Rust: Add numeric type barrier for log injection. --- .../rust/security/LogInjectionExtensions.qll | 7 +++++++ .../security/CWE-117/LogInjection.expected | 17 ++--------------- .../test/query-tests/security/CWE-117/main.rs | 2 +- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index a0282a0ff29..dafebc96731 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -8,6 +8,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting log injection @@ -42,4 +43,10 @@ module LogInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + + /** + * A barrier for log injection vulnerabilities for nodes whose type is a + * numeric or boolean type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index 6a4995a2728..2e00f941c24 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -3,7 +3,6 @@ | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:49:5:49:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:49:5:49:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | @@ -20,21 +19,15 @@ edges | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | -| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | -| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | | main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:4 | | main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:9 | -| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:13 | +| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:12 | | main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:10 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | | main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:48:9:48:14 | number | main.rs:49:11:49:30 | MacroExpr | provenance | | -| main.rs:48:18:48:43 | remote_data.parse() [Ok] | main.rs:48:18:48:56 | ... .unwrap_or(...) | provenance | MaD:10 | -| main.rs:48:18:48:56 | ... .unwrap_or(...) | main.rs:48:9:48:14 | number | provenance | | -| main.rs:49:11:49:30 | MacroExpr | main.rs:49:5:49:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | @@ -70,8 +63,7 @@ models | 9 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 10 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 11 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 13 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | @@ -91,11 +83,6 @@ nodes | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | -| main.rs:48:9:48:14 | number | semmle.label | number | -| main.rs:48:18:48:43 | remote_data.parse() [Ok] | semmle.label | remote_data.parse() [Ok] | -| main.rs:48:18:48:56 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:49:5:49:9 | ...::log | semmle.label | ...::log | -| main.rs:49:11:49:30 | MacroExpr | semmle.label | MacroExpr | | main.rs:109:13:109:21 | user_data | semmle.label | user_data | | main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | | main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index 88350515314..f5001846d1b 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -46,7 +46,7 @@ fn main() { // GOOD: Numeric data derived from user input (directly) let number = remote_data.parse::().unwrap_or(0); - info!("Number: {}", number); // $ SPURIOUS: Alert[rust/log-injection]=remote + info!("Number: {}", number); // More complex test cases test_complex_scenarios(&username, &user_input); From 33efed92b8cb52f03604df0b6e23adcc17efc915 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:54:23 +0000 Subject: [PATCH 504/965] Rust: Add integral type barrier for Regex injection. --- rust/ql/lib/codeql/rust/security/Barriers.qll | 16 +++++++++ .../regex/RegexInjectionExtensions.qll | 10 ++++++ .../security/CWE-020/RegexInjection.expected | 36 +++---------------- .../test/query-tests/security/CWE-020/main.rs | 4 +-- 4 files changed, 32 insertions(+), 34 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 66d47146d30..8eec065f8f2 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -24,3 +24,19 @@ class NumericTypeBarrier extends DataFlow::Node { ) } } + +/** + * A node whose type is an integral (integer) or boolean type, which may be an + * appropriate taint flow barrier for some queries. + */ +class IntegralOrBooleanTypeBarrier extends DataFlow::Node { + IntegralOrBooleanTypeBarrier() { + exists(TypeInference::Type t | + t = TypeInference::inferType(this.asExpr().getExpr()) and + ( + t.(StructType).getStruct() instanceof IntegralType or + t.(StructType).getStruct() instanceof Bool + ) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 61d26f2f938..7e82bdd678a 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting regular expression @@ -87,4 +88,13 @@ module RegexInjection { .getText() = "escape" } } + + /** + * A barrier for regular expression injection vulnerabilities for nodes whose + * type is an integral or boolean type, which is unlikely to expose any vulnerability. + * + * We don't include floating point types in this barrier, as `.` is a special character + * in regular expressions. + */ + private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 7627221edb1..2814af2b5ed 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -1,6 +1,5 @@ #select | main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | -| main.rs:21:25:21:30 | ®ex | main.rs:19:23:19:35 | ...::var | main.rs:21:25:21:30 | ®ex | This regular expression is constructed from a $@. | main.rs:19:23:19:35 | ...::var | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | | main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | @@ -9,28 +8,14 @@ edges | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:4 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:3 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | -| main.rs:19:9:19:19 | user_number | main.rs:20:25:20:47 | MacroExpr | provenance | | -| main.rs:19:23:19:35 | ...::var | main.rs:19:23:19:43 | ...::var(...) [Ok] | provenance | Src:MaD:1 | -| main.rs:19:23:19:43 | ...::var(...) [Ok] | main.rs:19:23:19:70 | ... .unwrap_or(...) | provenance | MaD:2 | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | -| main.rs:19:23:19:85 | ... .parse() [Ok] | main.rs:19:23:19:98 | ... .unwrap_or(...) | provenance | MaD:2 | -| main.rs:19:23:19:98 | ... .unwrap_or(...) | main.rs:19:9:19:19 | user_number | provenance | | -| main.rs:20:9:20:13 | regex | main.rs:21:26:21:30 | regex | provenance | | -| main.rs:20:25:20:47 | ...::format(...) | main.rs:20:25:20:47 | { ... } | provenance | | -| main.rs:20:25:20:47 | ...::must_use(...) | main.rs:20:9:20:13 | regex | provenance | | -| main.rs:20:25:20:47 | MacroExpr | main.rs:20:25:20:47 | ...::format(...) | provenance | MaD:4 | -| main.rs:20:25:20:47 | { ... } | main.rs:20:25:20:47 | ...::must_use(...) | provenance | MaD:5 | -| main.rs:21:26:21:30 | regex | main.rs:21:25:21:30 | ®ex | provenance | | models | 1 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 2 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:4:9:4:16 | username | semmle.label | username | | main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | @@ -43,17 +28,4 @@ nodes | main.rs:5:25:5:44 | { ... } | semmle.label | { ... } | | main.rs:6:25:6:30 | ®ex | semmle.label | ®ex | | main.rs:6:26:6:30 | regex | semmle.label | regex | -| main.rs:19:9:19:19 | user_number | semmle.label | user_number | -| main.rs:19:23:19:35 | ...::var | semmle.label | ...::var | -| main.rs:19:23:19:43 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:19:23:19:85 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | -| main.rs:19:23:19:98 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:20:9:20:13 | regex | semmle.label | regex | -| main.rs:20:25:20:47 | ...::format(...) | semmle.label | ...::format(...) | -| main.rs:20:25:20:47 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| main.rs:20:25:20:47 | MacroExpr | semmle.label | MacroExpr | -| main.rs:20:25:20:47 | { ... } | semmle.label | { ... } | -| main.rs:21:25:21:30 | ®ex | semmle.label | ®ex | -| main.rs:21:26:21:30 | regex | semmle.label | regex | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-020/main.rs b/rust/ql/test/query-tests/security/CWE-020/main.rs index fcd66e1e3ce..3a8e3d01461 100644 --- a/rust/ql/test/query-tests/security/CWE-020/main.rs +++ b/rust/ql/test/query-tests/security/CWE-020/main.rs @@ -16,9 +16,9 @@ fn simple_good_escaped(hay: &str) -> Option { } fn simple_good_numeric(hay: &str) -> Option { - let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); // $ Source=env + let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); let regex = format!("foo{}bar", user_number); - let re = Regex::new(®ex).unwrap(); // $ SPURIOUS: Alert[rust/regex-injection]=env + let re = Regex::new(®ex).unwrap(); Some(re.is_match(hay)) } From 34f75952d0901a9fba547f7f6fcd13983a67ee01 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:40:02 +0000 Subject: [PATCH 505/965] Rust: Change note. --- rust/ql/src/change-notes/2025-10-31-barriers.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-10-31-barriers.md diff --git a/rust/ql/src/change-notes/2025-10-31-barriers.md b/rust/ql/src/change-notes/2025-10-31-barriers.md new file mode 100644 index 00000000000..1504380d8d0 --- /dev/null +++ b/rust/ql/src/change-notes/2025-10-31-barriers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. From 8548c167be39c4d88981cfc4263b68076ded75d9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 17:30:04 +0000 Subject: [PATCH 506/965] Rust: Autoformat. --- rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll | 9 +++------ .../rust/security/regex/RegexInjectionExtensions.qll | 3 ++- .../library-tests/elements/builtintypes/BuiltinTypes.ql | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 56de2d97b6f..9269aff2bdc 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -34,24 +34,21 @@ class BuiltinType extends Struct { /** * A numerical type, such as `i64`, `usize`, `f32` or `f64`. */ -abstract private class NumericTypeImpl extends BuiltinType { -} +abstract private class NumericTypeImpl extends BuiltinType { } final class NumericType = NumericTypeImpl; /** * An integral numerical type, such as `i64` or `usize`. */ -abstract private class IntegralTypeImpl extends NumericTypeImpl { -} +abstract private class IntegralTypeImpl extends NumericTypeImpl { } final class IntegralType = IntegralTypeImpl; /** * A floating-point numerical type, such as `f32` or `f64`. */ -abstract private class FloatingPointTypeImpl extends NumericTypeImpl { -} +abstract private class FloatingPointTypeImpl extends NumericTypeImpl { } final class FloatingPointType = FloatingPointTypeImpl; diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 7e82bdd678a..750517708af 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -96,5 +96,6 @@ module RegexInjection { * We don't include floating point types in this barrier, as `.` is a special character * in regular expressions. */ - private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier { } + private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier + { } } diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql index a5a1a0a48e0..4da1117a3fb 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -3,11 +3,11 @@ import codeql.rust.frameworks.stdlib.Builtins import codeql.rust.internal.Type string describe(BuiltinType t) { - (t instanceof NumericType and result = "NumericType") + t instanceof NumericType and result = "NumericType" or - (t instanceof IntegralType and result = "IntegralType") + t instanceof IntegralType and result = "IntegralType" or - (t instanceof FloatingPointType and result = "FloatingPointType") + t instanceof FloatingPointType and result = "FloatingPointType" } from BuiltinType t From 26087f6060e5ccd0f1cb7253c361de3dfee53314 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Fri, 31 Oct 2025 17:56:04 +0000 Subject: [PATCH 507/965] Added java-kotlin Sensitive Logging barriers (substrings) --- .../java/security/SensitiveLoggingQuery.qll | 112 +++++++++++++++++- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 25454d80c71..855d05168cc 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -6,10 +6,14 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.SensitiveActions import semmle.code.java.frameworks.android.Compose private import semmle.code.java.security.Sanitizers +import semmle.code.java.Constants /** A data flow source node for sensitive logging sources. */ abstract class SensitiveLoggerSource extends DataFlow::Node { } +/** A data flow barrier node for sensitive logging sanitizers. */ +abstract class SensitiveLoggerBarrier extends DataFlow::Node { } + /** A variable that may hold sensitive information, judging by its name. */ class VariableWithSensitiveName extends Variable { VariableWithSensitiveName() { @@ -40,17 +44,114 @@ private class TypeType extends RefType { } } +/** A sanitizer that may remove sensitive information from a string before logging. + * + * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. + */ +private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { + SensitiveLoggerSanitizerCalled() { + exists(MethodCall mc, Method m, int limit | + limit = 7 and + mc.getMethod() = m and + ( + // substring in Java + ( + m.hasQualifiedName("java.lang", "String", "substring") or + m.hasQualifiedName("java.lang", "StringBuffer", "substring") or + m.hasQualifiedName("java.lang", "StringBuilder", "substring") + ) and + twoArgLimit(mc, limit, false) and + this.asExpr() = mc.getQualifier() + or + // Kotlin string operations, which use extension methods (so the string is the first argument) + ( + m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and twoArgLimit(mc, limit, true) + or + m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and + singleArgLimit(mc, limit, true) + ) and + this.asExpr() = mc.getArgument(0) + ) + ) + } +} + +bindingset[limit, isKotlin] +predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { + exists(int argIndex, int staticInt | + (if isKotlin = true then argIndex = 1 else argIndex = 0) and + ( + staticInt <= limit and + staticInt > 0 and + mc.getArgument(argIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = staticInt + or exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | + source.asExpr() = cte and + cte.getIntValue() = staticInt and + sink.asExpr() = mc.getArgument(argIndex) and + IntegerToArgFlow::flow(source, sink) + ) + ) + ) +} + +bindingset[limit, isKotlin] +predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { + exists(int firstArgIndex, int secondArgIndex, int staticInt | + staticInt <= limit and + staticInt > 0 and + ( + (isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2) + or + (isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1) + ) + and + mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and + ( + mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = staticInt + or exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | + source.asExpr() = cte and + cte.getIntValue() = staticInt and + sink.asExpr() = mc.getArgument(secondArgIndex) and + IntegerToArgFlow::flow(source, sink) + ) + ) + ) +} + +module IntegerToArgConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr().getUnderlyingExpr() instanceof CompileTimeConstantExpr and + source.asExpr().getType() instanceof IntegralType and + source.asExpr().(CompileTimeConstantExpr).getIntValue() > 0 + } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | + sink.asExpr() = mc.getAnArgument() + and sink.asExpr().getType() instanceof IntegralType + ) + } + + predicate isBarrier(DataFlow::Node sanitizer) { none() } + + predicate isBarrierIn(DataFlow::Node node) { none() } +} + +private class GenericSanitizer extends SensitiveLoggerBarrier { + GenericSanitizer() { + this.asExpr() instanceof LiveLiteral or + this instanceof SimpleTypeSanitizer or + this.getType() instanceof TypeType + } +} + /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ module SensitiveLoggerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof SensitiveLoggerSource } predicate isSink(DataFlow::Node sink) { sinkNode(sink, "log-injection") } - predicate isBarrier(DataFlow::Node sanitizer) { - sanitizer.asExpr() instanceof LiveLiteral or - sanitizer instanceof SimpleTypeSanitizer or - sanitizer.getType() instanceof TypeType - } + predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof SensitiveLoggerBarrier } predicate isBarrierIn(DataFlow::Node node) { isSource(node) } @@ -58,3 +159,4 @@ module SensitiveLoggerConfig implements DataFlow::ConfigSig { } module SensitiveLoggerFlow = TaintTracking::Global; +module IntegerToArgFlow = TaintTracking::Global; From d1eceee9d44463602e6d1167fa6ac3cf98b67572 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Fri, 31 Oct 2025 18:19:27 +0000 Subject: [PATCH 508/965] Fixed format/docs issues --- .../java/security/SensitiveLoggingQuery.qll | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 855d05168cc..4692427f1cd 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -44,8 +44,9 @@ private class TypeType extends RefType { } } -/** A sanitizer that may remove sensitive information from a string before logging. - * +/** + * A sanitizer that may remove sensitive information from a string before logging. + * * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. */ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { @@ -65,7 +66,8 @@ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { or // Kotlin string operations, which use extension methods (so the string is the first argument) ( - m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and twoArgLimit(mc, limit, true) + m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and + twoArgLimit(mc, limit, true) or m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and singleArgLimit(mc, limit, true) @@ -76,15 +78,18 @@ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { } } +/** A predicate to check single-argument method calls for a constant integer below a set limit. */ bindingset[limit, isKotlin] -predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { +private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { exists(int argIndex, int staticInt | (if isKotlin = true then argIndex = 1 else argIndex = 0) and ( staticInt <= limit and staticInt > 0 and - mc.getArgument(argIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = staticInt - or exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | + mc.getArgument(argIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = + staticInt + or + exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | source.asExpr() = cte and cte.getIntValue() = staticInt and sink.asExpr() = mc.getArgument(argIndex) and @@ -94,21 +99,23 @@ predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { ) } +/** A predicate to check two-argument method calls for zero and a constant integer below a set limit. */ bindingset[limit, isKotlin] -predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { +private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { exists(int firstArgIndex, int secondArgIndex, int staticInt | staticInt <= limit and staticInt > 0 and ( - (isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2) + isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 or - (isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1) - ) - and + isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 + ) and mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and ( - mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = staticInt - or exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | + mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = + staticInt + or + exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | source.asExpr() = cte and cte.getIntValue() = staticInt and sink.asExpr() = mc.getArgument(secondArgIndex) and @@ -118,7 +125,8 @@ predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { ) } -module IntegerToArgConfig implements DataFlow::ConfigSig { +/** A data-flow configuration for identifying flow from a constant integer to a use in a method argument. */ +private module IntegerToArgConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr().getUnderlyingExpr() instanceof CompileTimeConstantExpr and source.asExpr().getType() instanceof IntegralType and @@ -127,8 +135,8 @@ module IntegerToArgConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(MethodCall mc | - sink.asExpr() = mc.getAnArgument() - and sink.asExpr().getType() instanceof IntegralType + sink.asExpr() = mc.getAnArgument() and + sink.asExpr().getType() instanceof IntegralType ) } @@ -159,4 +167,5 @@ module SensitiveLoggerConfig implements DataFlow::ConfigSig { } module SensitiveLoggerFlow = TaintTracking::Global; + module IntegerToArgFlow = TaintTracking::Global; From 39dd3acd764d2a71df1388163ec422dbabcf495a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 31 Oct 2025 13:57:47 +0100 Subject: [PATCH 509/965] Rust: More path resolution tests --- .../PathResolutionConsistency.expected | 10 +- .../library-tests/path-resolution/main.rs | 6 +- .../path-resolution/path-resolution.expected | 896 +++++++++--------- 3 files changed, 456 insertions(+), 456 deletions(-) diff --git a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected index 0b5d376b4d2..6b5461f3719 100644 --- a/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/path-resolution/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,6 @@ multipleCallTargets -| main.rs:125:9:125:11 | f(...) | -| main.rs:365:9:367:16 | ...::f(...) | -| main.rs:368:9:370:16 | ...::f(...) | -| main.rs:447:9:451:16 | ...::f(...) | -| main.rs:452:9:456:16 | ...::f(...) | +| main.rs:126:9:126:11 | f(...) | +| main.rs:366:9:368:16 | ...::f(...) | +| main.rs:369:9:371:16 | ...::f(...) | +| main.rs:448:9:452:16 | ...::f(...) | +| main.rs:453:9:457:16 | ...::f(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 037527c71be..ee255776035 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -1,6 +1,7 @@ mod my; // I1 -use my::*; // $ item=I1 +#[rustfmt::skip] +use {{{my::{{self as my_alias, *}}}}}; // $ MISSING: item=I1 use my::nested::nested1::nested2::*; // $ item=I3 @@ -815,7 +816,8 @@ fn main() { nested6::f(); // $ item=I116 nested8::f(); // $ item=I119 my3::f(); // $ item=I200 - nested_f(); // $ item=I201 + nested_f(); // $ MISSING: item=I201 + my_alias::nested_f(); // $ MISSING: item=I201 m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index bb9a456a42c..8efa01241a9 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -1,37 +1,37 @@ mod | lib.rs:1:1:1:11 | mod my | | main.rs:1:1:1:7 | mod my | -| main.rs:7:1:7:8 | mod my2 | -| main.rs:19:1:43:1 | mod m1 | -| main.rs:24:5:42:5 | mod m2 | -| main.rs:35:9:41:9 | mod m3 | -| main.rs:45:1:52:1 | mod m4 | -| main.rs:109:1:113:1 | mod m5 | -| main.rs:115:1:127:1 | mod m6 | -| main.rs:129:1:148:1 | mod m7 | -| main.rs:150:1:204:1 | mod m8 | -| main.rs:206:1:214:1 | mod m9 | -| main.rs:216:1:235:1 | mod m10 | -| main.rs:237:1:274:1 | mod m11 | -| main.rs:247:5:247:12 | mod f | -| main.rs:276:1:288:1 | mod m12 | -| main.rs:290:1:303:1 | mod m13 | -| main.rs:294:5:302:5 | mod m14 | -| main.rs:305:1:374:1 | mod m15 | -| main.rs:376:1:468:1 | mod m16 | -| main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:471:5:493:5 | mod m | -| main.rs:522:1:552:1 | mod m17 | -| main.rs:554:1:572:1 | mod m18 | -| main.rs:559:5:571:5 | mod m19 | -| main.rs:564:9:570:9 | mod m20 | -| main.rs:574:1:599:1 | mod m21 | -| main.rs:575:5:581:5 | mod m22 | -| main.rs:583:5:598:5 | mod m33 | -| main.rs:601:1:626:1 | mod m23 | -| main.rs:628:1:696:1 | mod m24 | -| main.rs:713:1:765:1 | mod associated_types | -| main.rs:771:1:790:1 | mod impl_with_attribute_macro | +| main.rs:8:1:8:8 | mod my2 | +| main.rs:20:1:44:1 | mod m1 | +| main.rs:25:5:43:5 | mod m2 | +| main.rs:36:9:42:9 | mod m3 | +| main.rs:46:1:53:1 | mod m4 | +| main.rs:110:1:114:1 | mod m5 | +| main.rs:116:1:128:1 | mod m6 | +| main.rs:130:1:149:1 | mod m7 | +| main.rs:151:1:205:1 | mod m8 | +| main.rs:207:1:215:1 | mod m9 | +| main.rs:217:1:236:1 | mod m10 | +| main.rs:238:1:275:1 | mod m11 | +| main.rs:248:5:248:12 | mod f | +| main.rs:277:1:289:1 | mod m12 | +| main.rs:291:1:304:1 | mod m13 | +| main.rs:295:5:303:5 | mod m14 | +| main.rs:306:1:375:1 | mod m15 | +| main.rs:377:1:469:1 | mod m16 | +| main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:472:5:494:5 | mod m | +| main.rs:523:1:553:1 | mod m17 | +| main.rs:555:1:573:1 | mod m18 | +| main.rs:560:5:572:5 | mod m19 | +| main.rs:565:9:571:9 | mod m20 | +| main.rs:575:1:600:1 | mod m21 | +| main.rs:576:5:582:5 | mod m22 | +| main.rs:584:5:599:5 | mod m33 | +| main.rs:602:1:627:1 | mod m23 | +| main.rs:629:1:697:1 | mod m24 | +| main.rs:714:1:766:1 | mod associated_types | +| main.rs:772:1:791:1 | mod impl_with_attribute_macro | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -47,424 +47,422 @@ mod | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:2:5:11:5 | mod nested2 | resolvePath -| main.rs:3:5:3:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:5:5:5:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:5:5:5:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:5:5:5:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:9:5:9:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:12:5:12:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:12:5:12:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:12:5:12:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:13:5:13:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:14:5:14:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:17:5:17:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:17:5:17:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:21:9:21:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:26:13:26:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:30:13:30:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:31:13:31:13 | f | main.rs:25:9:27:9 | fn f | -| main.rs:32:13:32:17 | super | main.rs:19:1:43:1 | mod m1 | -| main.rs:32:13:32:20 | ...::f | main.rs:20:5:22:5 | fn f | -| main.rs:36:17:36:21 | super | main.rs:24:5:42:5 | mod m2 | -| main.rs:36:17:36:24 | ...::f | main.rs:25:9:27:9 | fn f | -| main.rs:38:17:38:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:39:17:39:17 | f | main.rs:25:9:27:9 | fn f | -| main.rs:46:9:46:13 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:46:9:46:17 | ...::m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:46:9:46:21 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:46:9:46:24 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:49:9:49:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:50:9:50:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:57:5:57:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:62:13:62:14 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:62:13:62:18 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:62:13:62:21 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:63:9:63:9 | g | main.rs:29:9:33:9 | fn g | -| main.rs:66:9:66:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:67:17:67:19 | Foo | main.rs:65:9:65:21 | struct Foo | -| main.rs:70:13:70:15 | Foo | main.rs:59:5:59:17 | struct Foo | -| main.rs:72:5:72:5 | f | main.rs:61:5:68:5 | fn f | -| main.rs:74:5:74:8 | self | main.rs:1:1:827:2 | SourceFile | -| main.rs:74:5:74:11 | ...::i | main.rs:77:1:89:1 | fn i | -| main.rs:78:5:78:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:80:13:80:15 | Foo | main.rs:54:1:54:13 | struct Foo | -| main.rs:84:16:84:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:87:17:87:19 | Foo | main.rs:83:9:85:9 | struct Foo | -| main.rs:91:5:91:7 | my2 | main.rs:7:1:7:8 | mod my2 | -| main.rs:91:5:91:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:93:5:93:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:93:34:93:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:34:93:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:93:57:93:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:93:57:93:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:93:80:93:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:104:5:104:11 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:105:5:105:15 | fn_in_macro | main.rs:95:1:101:1 | MacroRules | -| main.rs:105:18:105:24 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:106:5:106:22 | f_defined_in_macro | main.rs:105:18:105:42 | fn f_defined_in_macro | -| main.rs:111:9:111:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:117:9:117:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:121:9:121:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:124:13:124:17 | super | main.rs:1:1:827:2 | SourceFile | -| main.rs:124:13:124:21 | ...::m5 | main.rs:109:1:113:1 | mod m5 | -| main.rs:125:9:125:9 | f | main.rs:110:5:112:5 | fn f | -| main.rs:125:9:125:9 | f | main.rs:116:5:118:5 | fn f | -| main.rs:132:13:132:15 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:135:16:135:18 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:141:19:141:24 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:143:9:143:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:144:17:144:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:144:17:144:25 | ...::A | main.rs:131:9:133:9 | A | -| main.rs:145:17:145:22 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:145:17:145:25 | ...::B | main.rs:133:12:136:9 | B | -| main.rs:146:9:146:14 | MyEnum | main.rs:130:5:138:5 | enum MyEnum | -| main.rs:146:9:146:17 | ...::C | main.rs:136:12:137:9 | C | -| main.rs:155:13:155:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:156:13:156:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:157:13:157:16 | Self | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:157:13:157:19 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:164:9:164:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:168:10:168:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:168:22:168:29 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:170:13:170:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:171:13:171:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:172:13:172:16 | Self | main.rs:167:5:178:5 | impl MyTrait for MyStruct { ... } | -| main.rs:172:13:172:19 | ...::g | main.rs:175:9:177:9 | fn g | -| main.rs:176:13:176:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:181:10:181:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:183:13:183:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:184:13:184:13 | f | main.rs:163:5:165:5 | fn f | -| main.rs:190:17:190:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:191:9:191:15 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:191:9:191:18 | ...::f | main.rs:152:9:152:20 | fn f | -| main.rs:192:9:192:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:192:9:192:19 | ...::f | main.rs:168:33:173:9 | fn f | -| main.rs:193:10:193:17 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:194:10:194:16 | MyTrait | main.rs:151:5:159:5 | trait MyTrait | -| main.rs:197:17:197:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:199:17:199:24 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:16 | MyStruct | main.rs:161:5:161:22 | struct MyStruct | -| main.rs:201:9:201:19 | ...::h | main.rs:181:21:185:9 | fn h | -| main.rs:210:19:210:22 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:210:19:210:32 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:211:9:211:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:212:9:212:12 | self | main.rs:206:1:214:1 | mod m9 | -| main.rs:212:9:212:22 | ...::MyStruct | main.rs:207:5:207:26 | struct MyStruct | -| main.rs:222:12:222:12 | T | main.rs:219:7:219:7 | T | -| main.rs:227:12:227:12 | T | main.rs:226:14:226:14 | T | -| main.rs:229:7:231:7 | MyStruct::<...> | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:230:9:230:9 | T | main.rs:226:14:226:14 | T | -| main.rs:233:9:233:16 | MyStruct | main.rs:217:5:223:5 | struct MyStruct | -| main.rs:243:17:243:19 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:244:9:244:11 | Foo | main.rs:240:5:240:15 | fn Foo | -| main.rs:253:9:253:11 | Bar | main.rs:249:5:251:5 | enum Bar | -| main.rs:253:9:253:19 | ...::FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:258:13:258:15 | Foo | main.rs:238:5:238:21 | struct Foo | -| main.rs:259:17:259:22 | FooBar | main.rs:250:9:250:17 | FooBar | -| main.rs:260:17:260:22 | FooBar | main.rs:255:5:255:18 | fn FooBar | -| main.rs:268:9:268:9 | E | main.rs:263:15:266:5 | enum E | -| main.rs:268:9:268:12 | ...::C | main.rs:265:9:265:9 | C | -| main.rs:271:17:271:17 | S | main.rs:263:5:263:13 | struct S | -| main.rs:272:17:272:17 | C | main.rs:265:9:265:9 | C | -| main.rs:285:16:285:16 | T | main.rs:279:7:279:7 | T | -| main.rs:286:14:286:17 | Self | main.rs:277:5:287:5 | trait MyParamTrait | -| main.rs:286:14:286:33 | ...::AssociatedType | main.rs:281:9:281:28 | type AssociatedType | -| main.rs:295:13:295:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:295:13:295:21 | ...::m13 | main.rs:290:1:303:1 | mod m13 | -| main.rs:295:13:295:24 | ...::f | main.rs:291:5:291:17 | fn f | -| main.rs:295:13:295:24 | ...::f | main.rs:291:19:292:19 | struct f | -| main.rs:298:17:298:17 | f | main.rs:291:19:292:19 | struct f | -| main.rs:299:21:299:21 | f | main.rs:291:19:292:19 | struct f | -| main.rs:300:13:300:13 | f | main.rs:291:5:291:17 | fn f | -| main.rs:314:9:314:14 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:316:13:316:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:317:13:317:16 | Self | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:317:13:317:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:327:9:327:12 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:327:15:327:20 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:328:9:328:10 | TT | main.rs:324:9:324:10 | TT | -| main.rs:328:13:328:18 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:330:25:330:26 | TT | main.rs:324:9:324:10 | TT | -| main.rs:331:13:331:16 | Self | main.rs:322:5:335:5 | trait Trait3 | -| main.rs:331:13:331:19 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:332:13:332:14 | TT | main.rs:324:9:324:10 | TT | -| main.rs:332:13:332:17 | ...::g | main.rs:309:9:309:20 | fn g | -| main.rs:340:10:340:15 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:341:11:341:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:343:13:343:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:344:13:344:16 | Self | main.rs:339:5:351:5 | impl Trait1 for S { ... } | -| main.rs:344:13:344:19 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:349:13:349:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:354:10:354:15 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:355:11:355:11 | S | main.rs:337:5:337:13 | struct S | -| main.rs:357:13:357:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:363:9:363:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:364:17:364:17 | S | main.rs:337:5:337:13 | struct S | -| main.rs:365:10:365:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:366:14:366:19 | Trait1 | main.rs:306:5:310:5 | trait Trait1 | -| main.rs:368:10:368:10 | S | main.rs:337:5:337:13 | struct S | -| main.rs:369:14:369:19 | Trait2 | main.rs:312:5:320:5 | trait Trait2 | -| main.rs:371:9:371:9 | S | main.rs:337:5:337:13 | struct S | -| main.rs:371:9:371:12 | ...::g | main.rs:348:9:350:9 | fn g | -| main.rs:381:24:381:24 | T | main.rs:379:7:379:7 | T | -| main.rs:383:24:383:24 | T | main.rs:379:7:379:7 | T | -| main.rs:386:24:386:24 | T | main.rs:379:7:379:7 | T | -| main.rs:387:13:387:16 | Self | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:387:13:387:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:391:18:391:18 | T | main.rs:379:7:379:7 | T | -| main.rs:399:9:401:9 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:400:11:400:11 | T | main.rs:397:7:397:7 | T | -| main.rs:402:24:402:24 | T | main.rs:397:7:397:7 | T | -| main.rs:403:13:403:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:404:13:404:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:404:13:404:19 | ...::g | main.rs:383:9:384:9 | fn g | -| main.rs:406:13:406:16 | Self | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:406:13:406:19 | ...::c | main.rs:391:9:392:9 | Const | -| main.rs:413:10:415:5 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:414:7:414:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:416:11:416:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:417:24:417:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:418:13:418:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:419:13:419:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:419:13:419:19 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:423:24:423:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:424:13:424:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:425:13:425:16 | Self | main.rs:412:5:430:5 | impl Trait1::<...> for S { ... } | -| main.rs:425:13:425:19 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:428:18:428:18 | S | main.rs:410:5:410:13 | struct S | -| main.rs:428:22:428:22 | S | main.rs:410:5:410:13 | struct S | -| main.rs:433:10:435:5 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:434:7:434:7 | S | main.rs:410:5:410:13 | struct S | -| main.rs:436:11:436:11 | S | main.rs:410:5:410:13 | struct S | -| main.rs:437:24:437:24 | S | main.rs:410:5:410:13 | struct S | -| main.rs:438:13:438:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:439:13:439:16 | Self | main.rs:432:5:441:5 | impl Trait2::<...> for S { ... } | -| main.rs:445:9:445:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:446:17:446:17 | S | main.rs:410:5:410:13 | struct S | -| main.rs:447:10:447:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:448:14:450:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:449:13:449:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:452:10:452:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:453:14:455:11 | Trait2::<...> | main.rs:395:5:408:5 | trait Trait2 | -| main.rs:454:13:454:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:457:9:457:12 | ...::g | main.rs:423:9:426:9 | fn g | -| main.rs:459:9:459:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:459:9:459:12 | ...::h | main.rs:386:9:389:9 | fn h | -| main.rs:461:9:461:9 | S | main.rs:410:5:410:13 | struct S | -| main.rs:461:9:461:12 | ...::c | main.rs:428:9:429:9 | Const | -| main.rs:462:10:462:10 | S | main.rs:410:5:410:13 | struct S | -| main.rs:463:14:465:11 | Trait1::<...> | main.rs:377:5:393:5 | trait Trait1 | -| main.rs:464:13:464:13 | S | main.rs:410:5:410:13 | struct S | -| main.rs:482:14:482:16 | Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:482:22:482:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:484:17:484:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:488:14:488:16 | Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:488:22:488:22 | X | main.rs:480:9:480:21 | struct X | -| main.rs:490:17:490:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:495:9:495:9 | m | main.rs:471:5:493:5 | mod m | -| main.rs:495:9:495:12 | ...::X | main.rs:480:9:480:21 | struct X | -| main.rs:498:17:498:17 | X | main.rs:480:9:480:21 | struct X | -| main.rs:501:17:501:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:501:17:501:22 | ...::Foo | main.rs:472:9:474:9 | trait Foo | -| main.rs:502:13:502:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:502:13:502:23 | ...::a_method | main.rs:482:26:485:13 | fn a_method | -| main.rs:506:17:506:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:506:17:506:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:507:13:507:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:507:13:507:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:511:17:511:17 | m | main.rs:471:5:493:5 | mod m | -| main.rs:511:17:511:22 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:512:13:512:13 | X | main.rs:480:9:480:21 | struct X | -| main.rs:512:13:512:23 | ...::a_method | main.rs:488:26:491:13 | fn a_method | -| main.rs:517:13:517:13 | m | main.rs:471:5:493:5 | mod m | -| main.rs:517:13:517:18 | ...::Bar | main.rs:476:9:478:9 | trait Bar | -| main.rs:517:13:517:28 | ...::a_method | main.rs:477:13:477:31 | fn a_method | -| main.rs:530:10:530:16 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:531:9:531:9 | S | main.rs:527:5:527:13 | struct S | -| main.rs:533:13:533:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:539:7:539:13 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:540:10:540:10 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:9 | T | main.rs:538:10:538:10 | T | -| main.rs:542:9:542:12 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:543:9:543:15 | MyTrait | main.rs:523:5:525:5 | trait MyTrait | -| main.rs:543:9:543:18 | ...::f | main.rs:524:9:524:20 | fn f | -| main.rs:548:9:548:9 | g | main.rs:537:5:544:5 | fn g | -| main.rs:549:11:549:11 | S | main.rs:527:5:527:13 | struct S | -| main.rs:556:9:556:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:561:13:561:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:566:17:566:23 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:567:17:567:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:567:17:567:24 | ...::f | main.rs:560:9:562:9 | fn f | -| main.rs:568:17:568:21 | super | main.rs:559:5:571:5 | mod m19 | -| main.rs:568:17:568:28 | ...::super | main.rs:554:1:572:1 | mod m18 | -| main.rs:568:17:568:31 | ...::f | main.rs:555:5:557:5 | fn f | -| main.rs:585:13:585:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:585:13:585:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:585:13:585:30 | ...::MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:586:13:586:16 | self | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:590:13:590:17 | super | main.rs:574:1:599:1 | mod m21 | -| main.rs:590:13:590:22 | ...::m22 | main.rs:575:5:581:5 | mod m22 | -| main.rs:590:13:590:32 | ...::MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:591:13:591:16 | self | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:595:21:595:26 | MyEnum | main.rs:576:9:578:9 | enum MyEnum | -| main.rs:595:21:595:29 | ...::A | main.rs:577:13:577:13 | A | -| main.rs:596:21:596:28 | MyStruct | main.rs:580:9:580:28 | struct MyStruct | -| main.rs:612:10:614:5 | Trait1::<...> | main.rs:602:5:607:5 | trait Trait1 | -| main.rs:613:7:613:10 | Self | main.rs:609:5:609:13 | struct S | -| main.rs:615:11:615:11 | S | main.rs:609:5:609:13 | struct S | -| main.rs:617:13:617:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:623:17:623:17 | S | main.rs:609:5:609:13 | struct S | -| main.rs:639:15:639:15 | T | main.rs:638:26:638:26 | T | -| main.rs:644:9:644:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:644:23:644:23 | T | main.rs:643:10:643:10 | T | -| main.rs:646:9:646:9 | T | main.rs:643:10:643:10 | T | -| main.rs:646:12:646:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:655:9:655:24 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:655:23:655:23 | T | main.rs:654:10:654:10 | T | -| main.rs:657:9:657:9 | T | main.rs:654:10:654:10 | T | -| main.rs:657:12:657:17 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:658:9:658:9 | T | main.rs:654:10:654:10 | T | -| main.rs:658:12:658:17 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:10:669:15 | TraitA | main.rs:629:5:631:5 | trait TraitA | -| main.rs:669:21:669:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:671:13:671:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:676:10:676:15 | TraitB | main.rs:633:5:635:5 | trait TraitB | -| main.rs:676:21:676:31 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:678:13:678:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:684:24:684:34 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:685:23:685:35 | GenericStruct | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:691:9:691:50 | ...::call_trait_a | main.rs:648:9:650:9 | fn call_trait_a | -| main.rs:691:25:691:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:694:9:694:36 | GenericStruct::<...> | main.rs:637:5:640:5 | struct GenericStruct | -| main.rs:694:9:694:47 | ...::call_both | main.rs:660:9:663:9 | fn call_both | -| main.rs:694:25:694:35 | Implementor | main.rs:666:5:666:23 | struct Implementor | -| main.rs:700:3:700:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:700:3:700:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:704:6:704:12 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:706:7:706:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:706:7:706:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:709:7:709:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:709:7:709:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | -| main.rs:714:9:714:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:714:9:714:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | -| main.rs:714:9:714:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:6:5:6:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:6:5:6:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:6:5:6:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:10:5:10:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:13:5:13:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:13:5:13:25 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:13:5:13:34 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:14:5:14:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:15:5:15:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:18:5:18:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:18:5:18:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:22:9:22:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:27:13:27:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:31:13:31:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:32:13:32:13 | f | main.rs:26:9:28:9 | fn f | +| main.rs:33:13:33:17 | super | main.rs:20:1:44:1 | mod m1 | +| main.rs:33:13:33:20 | ...::f | main.rs:21:5:23:5 | fn f | +| main.rs:37:17:37:21 | super | main.rs:25:5:43:5 | mod m2 | +| main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | +| main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | +| main.rs:47:9:47:13 | super | main.rs:1:1:829:2 | SourceFile | +| main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:50:9:50:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:51:9:51:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:58:5:58:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:63:13:63:14 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:63:13:63:18 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:63:13:63:21 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:64:9:64:9 | g | main.rs:30:9:34:9 | fn g | +| main.rs:67:9:67:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | +| main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | +| main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | +| main.rs:75:5:75:8 | self | main.rs:1:1:829:2 | SourceFile | +| main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | +| main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | +| main.rs:85:16:85:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:88:17:88:19 | Foo | main.rs:84:9:86:9 | struct Foo | +| main.rs:92:5:92:7 | my2 | main.rs:8:1:8:8 | mod my2 | +| main.rs:92:5:92:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:21 | my2_nested2_alias | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:94:5:94:30 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:94:34:94:40 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:34:94:43 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:94:57:94:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:94:57:94:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:94:80:94:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:105:5:105:11 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:106:5:106:15 | fn_in_macro | main.rs:96:1:102:1 | MacroRules | +| main.rs:106:18:106:24 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:107:5:107:22 | f_defined_in_macro | main.rs:106:18:106:42 | fn f_defined_in_macro | +| main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:125:13:125:17 | super | main.rs:1:1:829:2 | SourceFile | +| main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | +| main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | +| main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | +| main.rs:133:13:133:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:136:16:136:18 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:142:19:142:24 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:144:9:144:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:145:17:145:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:145:17:145:25 | ...::A | main.rs:132:9:134:9 | A | +| main.rs:146:17:146:22 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:146:17:146:25 | ...::B | main.rs:134:12:137:9 | B | +| main.rs:147:9:147:14 | MyEnum | main.rs:131:5:139:5 | enum MyEnum | +| main.rs:147:9:147:17 | ...::C | main.rs:137:12:138:9 | C | +| main.rs:156:13:156:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:157:13:157:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:158:13:158:16 | Self | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:158:13:158:19 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:165:9:165:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:169:10:169:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:169:22:169:29 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:171:13:171:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:172:13:172:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:173:13:173:16 | Self | main.rs:168:5:179:5 | impl MyTrait for MyStruct { ... } | +| main.rs:173:13:173:19 | ...::g | main.rs:176:9:178:9 | fn g | +| main.rs:177:13:177:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:182:10:182:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:184:13:184:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:185:13:185:13 | f | main.rs:164:5:166:5 | fn f | +| main.rs:191:17:191:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:192:9:192:15 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:192:9:192:18 | ...::f | main.rs:153:9:153:20 | fn f | +| main.rs:193:9:193:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:193:9:193:19 | ...::f | main.rs:169:33:174:9 | fn f | +| main.rs:194:10:194:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:195:10:195:16 | MyTrait | main.rs:152:5:160:5 | trait MyTrait | +| main.rs:198:17:198:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:200:17:200:24 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:16 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:202:9:202:19 | ...::h | main.rs:182:21:186:9 | fn h | +| main.rs:211:19:211:22 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:211:19:211:32 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:212:9:212:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:213:9:213:12 | self | main.rs:207:1:215:1 | mod m9 | +| main.rs:213:9:213:22 | ...::MyStruct | main.rs:208:5:208:26 | struct MyStruct | +| main.rs:223:12:223:12 | T | main.rs:220:7:220:7 | T | +| main.rs:228:12:228:12 | T | main.rs:227:14:227:14 | T | +| main.rs:230:7:232:7 | MyStruct::<...> | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:231:9:231:9 | T | main.rs:227:14:227:14 | T | +| main.rs:234:9:234:16 | MyStruct | main.rs:218:5:224:5 | struct MyStruct | +| main.rs:244:17:244:19 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:245:9:245:11 | Foo | main.rs:241:5:241:15 | fn Foo | +| main.rs:254:9:254:11 | Bar | main.rs:250:5:252:5 | enum Bar | +| main.rs:254:9:254:19 | ...::FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:259:13:259:15 | Foo | main.rs:239:5:239:21 | struct Foo | +| main.rs:260:17:260:22 | FooBar | main.rs:251:9:251:17 | FooBar | +| main.rs:261:17:261:22 | FooBar | main.rs:256:5:256:18 | fn FooBar | +| main.rs:269:9:269:9 | E | main.rs:264:15:267:5 | enum E | +| main.rs:269:9:269:12 | ...::C | main.rs:266:9:266:9 | C | +| main.rs:272:17:272:17 | S | main.rs:264:5:264:13 | struct S | +| main.rs:273:17:273:17 | C | main.rs:266:9:266:9 | C | +| main.rs:286:16:286:16 | T | main.rs:280:7:280:7 | T | +| main.rs:287:14:287:17 | Self | main.rs:278:5:288:5 | trait MyParamTrait | +| main.rs:287:14:287:33 | ...::AssociatedType | main.rs:282:9:282:28 | type AssociatedType | +| main.rs:296:13:296:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:296:13:296:21 | ...::m13 | main.rs:291:1:304:1 | mod m13 | +| main.rs:296:13:296:24 | ...::f | main.rs:292:5:292:17 | fn f | +| main.rs:296:13:296:24 | ...::f | main.rs:292:19:293:19 | struct f | +| main.rs:299:17:299:17 | f | main.rs:292:19:293:19 | struct f | +| main.rs:300:21:300:21 | f | main.rs:292:19:293:19 | struct f | +| main.rs:301:13:301:13 | f | main.rs:292:5:292:17 | fn f | +| main.rs:315:9:315:14 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:317:13:317:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:318:13:318:16 | Self | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:318:13:318:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:328:9:328:12 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:328:15:328:20 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:329:9:329:10 | TT | main.rs:325:9:325:10 | TT | +| main.rs:329:13:329:18 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:331:25:331:26 | TT | main.rs:325:9:325:10 | TT | +| main.rs:332:13:332:16 | Self | main.rs:323:5:336:5 | trait Trait3 | +| main.rs:332:13:332:19 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:333:13:333:14 | TT | main.rs:325:9:325:10 | TT | +| main.rs:333:13:333:17 | ...::g | main.rs:310:9:310:20 | fn g | +| main.rs:341:10:341:15 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:342:11:342:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:344:13:344:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:345:13:345:16 | Self | main.rs:340:5:352:5 | impl Trait1 for S { ... } | +| main.rs:345:13:345:19 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:350:13:350:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:355:10:355:15 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:356:11:356:11 | S | main.rs:338:5:338:13 | struct S | +| main.rs:358:13:358:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:364:9:364:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:365:17:365:17 | S | main.rs:338:5:338:13 | struct S | +| main.rs:366:10:366:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:367:14:367:19 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | +| main.rs:369:10:369:10 | S | main.rs:338:5:338:13 | struct S | +| main.rs:370:14:370:19 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | +| main.rs:372:9:372:9 | S | main.rs:338:5:338:13 | struct S | +| main.rs:372:9:372:12 | ...::g | main.rs:349:9:351:9 | fn g | +| main.rs:382:24:382:24 | T | main.rs:380:7:380:7 | T | +| main.rs:384:24:384:24 | T | main.rs:380:7:380:7 | T | +| main.rs:387:24:387:24 | T | main.rs:380:7:380:7 | T | +| main.rs:388:13:388:16 | Self | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:388:13:388:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:392:18:392:18 | T | main.rs:380:7:380:7 | T | +| main.rs:400:9:402:9 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:401:11:401:11 | T | main.rs:398:7:398:7 | T | +| main.rs:403:24:403:24 | T | main.rs:398:7:398:7 | T | +| main.rs:404:13:404:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:405:13:405:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:405:13:405:19 | ...::g | main.rs:384:9:385:9 | fn g | +| main.rs:407:13:407:16 | Self | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:407:13:407:19 | ...::c | main.rs:392:9:393:9 | Const | +| main.rs:414:10:416:5 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:415:7:415:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:417:11:417:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:418:24:418:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:419:13:419:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:420:13:420:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:420:13:420:19 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:424:24:424:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:425:13:425:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:426:13:426:16 | Self | main.rs:413:5:431:5 | impl Trait1::<...> for S { ... } | +| main.rs:426:13:426:19 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:429:18:429:18 | S | main.rs:411:5:411:13 | struct S | +| main.rs:429:22:429:22 | S | main.rs:411:5:411:13 | struct S | +| main.rs:434:10:436:5 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:435:7:435:7 | S | main.rs:411:5:411:13 | struct S | +| main.rs:437:11:437:11 | S | main.rs:411:5:411:13 | struct S | +| main.rs:438:24:438:24 | S | main.rs:411:5:411:13 | struct S | +| main.rs:439:13:439:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:440:13:440:16 | Self | main.rs:433:5:442:5 | impl Trait2::<...> for S { ... } | +| main.rs:446:9:446:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:447:17:447:17 | S | main.rs:411:5:411:13 | struct S | +| main.rs:448:10:448:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:449:14:451:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:450:13:450:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:453:10:453:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:454:14:456:11 | Trait2::<...> | main.rs:396:5:409:5 | trait Trait2 | +| main.rs:455:13:455:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:458:9:458:12 | ...::g | main.rs:424:9:427:9 | fn g | +| main.rs:460:9:460:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:460:9:460:12 | ...::h | main.rs:387:9:390:9 | fn h | +| main.rs:462:9:462:9 | S | main.rs:411:5:411:13 | struct S | +| main.rs:462:9:462:12 | ...::c | main.rs:429:9:430:9 | Const | +| main.rs:463:10:463:10 | S | main.rs:411:5:411:13 | struct S | +| main.rs:464:14:466:11 | Trait1::<...> | main.rs:378:5:394:5 | trait Trait1 | +| main.rs:465:13:465:13 | S | main.rs:411:5:411:13 | struct S | +| main.rs:483:14:483:16 | Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:483:22:483:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:485:17:485:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:489:14:489:16 | Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:489:22:489:22 | X | main.rs:481:9:481:21 | struct X | +| main.rs:491:17:491:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:496:9:496:9 | m | main.rs:472:5:494:5 | mod m | +| main.rs:496:9:496:12 | ...::X | main.rs:481:9:481:21 | struct X | +| main.rs:499:17:499:17 | X | main.rs:481:9:481:21 | struct X | +| main.rs:502:17:502:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:502:17:502:22 | ...::Foo | main.rs:473:9:475:9 | trait Foo | +| main.rs:503:13:503:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:503:13:503:23 | ...::a_method | main.rs:483:26:486:13 | fn a_method | +| main.rs:507:17:507:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:507:17:507:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:508:13:508:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:508:13:508:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:512:17:512:17 | m | main.rs:472:5:494:5 | mod m | +| main.rs:512:17:512:22 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:513:13:513:13 | X | main.rs:481:9:481:21 | struct X | +| main.rs:513:13:513:23 | ...::a_method | main.rs:489:26:492:13 | fn a_method | +| main.rs:518:13:518:13 | m | main.rs:472:5:494:5 | mod m | +| main.rs:518:13:518:18 | ...::Bar | main.rs:477:9:479:9 | trait Bar | +| main.rs:518:13:518:28 | ...::a_method | main.rs:478:13:478:31 | fn a_method | +| main.rs:531:10:531:16 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:532:9:532:9 | S | main.rs:528:5:528:13 | struct S | +| main.rs:534:13:534:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:540:7:540:13 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:541:10:541:10 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:9 | T | main.rs:539:10:539:10 | T | +| main.rs:543:9:543:12 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:544:9:544:15 | MyTrait | main.rs:524:5:526:5 | trait MyTrait | +| main.rs:544:9:544:18 | ...::f | main.rs:525:9:525:20 | fn f | +| main.rs:549:9:549:9 | g | main.rs:538:5:545:5 | fn g | +| main.rs:550:11:550:11 | S | main.rs:528:5:528:13 | struct S | +| main.rs:557:9:557:15 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:562:13:562:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:567:17:567:23 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:568:17:568:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:568:17:568:24 | ...::f | main.rs:561:9:563:9 | fn f | +| main.rs:569:17:569:21 | super | main.rs:560:5:572:5 | mod m19 | +| main.rs:569:17:569:28 | ...::super | main.rs:555:1:573:1 | mod m18 | +| main.rs:569:17:569:31 | ...::f | main.rs:556:5:558:5 | fn f | +| main.rs:586:13:586:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:586:13:586:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:586:13:586:30 | ...::MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:587:13:587:16 | self | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:591:13:591:17 | super | main.rs:575:1:600:1 | mod m21 | +| main.rs:591:13:591:22 | ...::m22 | main.rs:576:5:582:5 | mod m22 | +| main.rs:591:13:591:32 | ...::MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:592:13:592:16 | self | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:596:21:596:26 | MyEnum | main.rs:577:9:579:9 | enum MyEnum | +| main.rs:596:21:596:29 | ...::A | main.rs:578:13:578:13 | A | +| main.rs:597:21:597:28 | MyStruct | main.rs:581:9:581:28 | struct MyStruct | +| main.rs:613:10:615:5 | Trait1::<...> | main.rs:603:5:608:5 | trait Trait1 | +| main.rs:614:7:614:10 | Self | main.rs:610:5:610:13 | struct S | +| main.rs:616:11:616:11 | S | main.rs:610:5:610:13 | struct S | +| main.rs:618:13:618:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:624:17:624:17 | S | main.rs:610:5:610:13 | struct S | +| main.rs:640:15:640:15 | T | main.rs:639:26:639:26 | T | +| main.rs:645:9:645:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:645:23:645:23 | T | main.rs:644:10:644:10 | T | +| main.rs:647:9:647:9 | T | main.rs:644:10:644:10 | T | +| main.rs:647:12:647:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:656:9:656:24 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:656:23:656:23 | T | main.rs:655:10:655:10 | T | +| main.rs:658:9:658:9 | T | main.rs:655:10:655:10 | T | +| main.rs:658:12:658:17 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:659:9:659:9 | T | main.rs:655:10:655:10 | T | +| main.rs:659:12:659:17 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:10:670:15 | TraitA | main.rs:630:5:632:5 | trait TraitA | +| main.rs:670:21:670:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:672:13:672:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:677:10:677:15 | TraitB | main.rs:634:5:636:5 | trait TraitB | +| main.rs:677:21:677:31 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:679:13:679:19 | println | {EXTERNAL LOCATION} | MacroRules | +| main.rs:685:24:685:34 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:686:23:686:35 | GenericStruct | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:692:9:692:50 | ...::call_trait_a | main.rs:649:9:651:9 | fn call_trait_a | +| main.rs:692:25:692:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:695:9:695:36 | GenericStruct::<...> | main.rs:638:5:641:5 | struct GenericStruct | +| main.rs:695:9:695:47 | ...::call_both | main.rs:661:9:664:9 | fn call_both | +| main.rs:695:25:695:35 | Implementor | main.rs:667:5:667:23 | struct Implementor | +| main.rs:701:3:701:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:701:3:701:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:705:6:705:12 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:707:7:707:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:707:7:707:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | +| main.rs:710:7:710:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:710:7:710:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix | | main.rs:715:9:715:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:715:9:715:19 | ...::result | {EXTERNAL LOCATION} | mod result | -| main.rs:715:9:715:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | -| main.rs:723:19:723:22 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:723:19:723:29 | ...::Input | main.rs:718:9:718:19 | type Input | -| main.rs:724:14:724:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:724:21:724:24 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:21:724:32 | ...::Output | main.rs:719:21:720:20 | type Output | -| main.rs:724:35:724:38 | Self | main.rs:717:5:725:5 | trait Reduce | -| main.rs:724:35:724:45 | ...::Error | main.rs:718:21:719:19 | type Error | -| main.rs:728:17:728:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:728:29:728:33 | Input | main.rs:727:19:727:23 | Input | +| main.rs:715:9:715:19 | ...::marker | {EXTERNAL LOCATION} | mod marker | +| main.rs:715:9:715:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:716:9:716:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:716:9:716:19 | ...::result | {EXTERNAL LOCATION} | mod result | +| main.rs:716:9:716:27 | ...::Result | {EXTERNAL LOCATION} | enum Result | +| main.rs:724:19:724:22 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:724:19:724:29 | ...::Input | main.rs:719:9:719:19 | type Input | +| main.rs:725:14:725:46 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:725:21:725:24 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:21:725:32 | ...::Output | main.rs:720:21:721:20 | type Output | +| main.rs:725:35:725:38 | Self | main.rs:718:5:726:5 | trait Reduce | +| main.rs:725:35:725:45 | ...::Error | main.rs:719:21:720:19 | type Error | | main.rs:729:17:729:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | -| main.rs:729:29:729:33 | Error | main.rs:727:26:727:30 | Error | -| main.rs:736:11:736:16 | Reduce | main.rs:717:5:725:5 | trait Reduce | -| main.rs:737:13:740:9 | MyImpl::<...> | main.rs:727:5:730:5 | struct MyImpl | -| main.rs:738:13:738:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:739:13:739:17 | Error | main.rs:735:13:735:17 | Error | -| main.rs:742:22:745:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:743:13:743:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:744:13:744:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:744:13:744:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:747:22:749:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:748:11:748:15 | Error | main.rs:735:13:735:17 | Error | -| main.rs:752:13:752:17 | Input | main.rs:734:13:734:17 | Input | -| main.rs:757:19:757:22 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:757:19:757:29 | ...::Input | main.rs:742:9:746:9 | type Input | -| main.rs:758:14:761:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:759:13:759:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:759:13:759:24 | ...::Output | main.rs:750:11:753:9 | type Output | -| main.rs:760:13:760:16 | Self | main.rs:732:5:764:5 | impl Reduce for MyImpl::<...> { ... } | -| main.rs:760:13:760:23 | ...::Error | main.rs:746:11:750:9 | type Error | -| main.rs:767:5:767:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:767:11:767:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:769:15:769:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:769:15:769:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:779:7:779:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:779:7:779:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | -| main.rs:780:10:780:15 | ATrait | main.rs:775:5:777:5 | trait ATrait | -| main.rs:780:21:780:23 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:782:11:782:13 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:788:17:788:19 | Foo | main.rs:773:5:773:15 | struct Foo | -| main.rs:793:5:793:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:793:5:793:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:793:5:793:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:793:5:793:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:793:5:793:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:729:29:729:33 | Input | main.rs:728:19:728:23 | Input | +| main.rs:730:17:730:34 | PhantomData::<...> | {EXTERNAL LOCATION} | struct PhantomData | +| main.rs:730:29:730:33 | Error | main.rs:728:26:728:30 | Error | +| main.rs:737:11:737:16 | Reduce | main.rs:718:5:726:5 | trait Reduce | +| main.rs:738:13:741:9 | MyImpl::<...> | main.rs:728:5:731:5 | struct MyImpl | +| main.rs:739:13:739:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:740:13:740:17 | Error | main.rs:736:13:736:17 | Error | +| main.rs:743:22:746:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:744:13:744:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:745:13:745:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:745:13:745:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:748:22:750:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:749:11:749:15 | Error | main.rs:736:13:736:17 | Error | +| main.rs:753:13:753:17 | Input | main.rs:735:13:735:17 | Input | +| main.rs:758:19:758:22 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:758:19:758:29 | ...::Input | main.rs:743:9:747:9 | type Input | +| main.rs:759:14:762:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | +| main.rs:760:13:760:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:760:13:760:24 | ...::Output | main.rs:751:11:754:9 | type Output | +| main.rs:761:13:761:16 | Self | main.rs:733:5:765:5 | impl Reduce for MyImpl::<...> { ... } | +| main.rs:761:13:761:23 | ...::Error | main.rs:747:11:751:9 | type Error | +| main.rs:768:5:768:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:768:11:768:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:770:15:770:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:770:15:770:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:780:7:780:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:780:7:780:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | +| main.rs:781:10:781:15 | ATrait | main.rs:776:5:778:5 | trait ATrait | +| main.rs:781:21:781:23 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:783:11:783:13 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:789:17:789:19 | Foo | main.rs:774:5:774:15 | struct Foo | | main.rs:794:5:794:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:794:5:794:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:795:5:795:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:795:5:795:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:795:5:795:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:795:5:795:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:796:5:796:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:797:5:797:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:798:5:798:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:798:5:798:12 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:799:5:799:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:799:5:799:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:799:5:799:13 | ...::g | main.rs:29:9:33:9 | fn g | -| main.rs:800:5:800:6 | m1 | main.rs:19:1:43:1 | mod m1 | -| main.rs:800:5:800:10 | ...::m2 | main.rs:24:5:42:5 | mod m2 | -| main.rs:800:5:800:14 | ...::m3 | main.rs:35:9:41:9 | mod m3 | -| main.rs:800:5:800:17 | ...::h | main.rs:36:27:40:13 | fn h | -| main.rs:801:5:801:6 | m4 | main.rs:45:1:52:1 | mod m4 | -| main.rs:801:5:801:9 | ...::i | main.rs:48:5:51:5 | fn i | -| main.rs:802:5:802:5 | h | main.rs:56:1:75:1 | fn h | -| main.rs:803:5:803:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:804:5:804:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:805:5:805:5 | j | main.rs:103:1:107:1 | fn j | -| main.rs:806:5:806:6 | m6 | main.rs:115:1:127:1 | mod m6 | -| main.rs:806:5:806:9 | ...::g | main.rs:120:5:126:5 | fn g | -| main.rs:807:5:807:6 | m7 | main.rs:129:1:148:1 | mod m7 | -| main.rs:807:5:807:9 | ...::f | main.rs:140:5:147:5 | fn f | -| main.rs:808:5:808:6 | m8 | main.rs:150:1:204:1 | mod m8 | -| main.rs:808:5:808:9 | ...::g | main.rs:188:5:203:5 | fn g | -| main.rs:809:5:809:6 | m9 | main.rs:206:1:214:1 | mod m9 | -| main.rs:809:5:809:9 | ...::f | main.rs:209:5:213:5 | fn f | -| main.rs:810:5:810:7 | m11 | main.rs:237:1:274:1 | mod m11 | -| main.rs:810:5:810:10 | ...::f | main.rs:242:5:245:5 | fn f | -| main.rs:811:5:811:7 | m15 | main.rs:305:1:374:1 | mod m15 | -| main.rs:811:5:811:10 | ...::f | main.rs:361:5:373:5 | fn f | -| main.rs:812:5:812:7 | m16 | main.rs:376:1:468:1 | mod m16 | -| main.rs:812:5:812:10 | ...::f | main.rs:443:5:467:5 | fn f | -| main.rs:813:5:813:20 | trait_visibility | main.rs:470:1:520:1 | mod trait_visibility | -| main.rs:813:5:813:23 | ...::f | main.rs:497:5:519:5 | fn f | -| main.rs:814:5:814:7 | m17 | main.rs:522:1:552:1 | mod m17 | -| main.rs:814:5:814:10 | ...::f | main.rs:546:5:551:5 | fn f | -| main.rs:815:5:815:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:815:5:815:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:816:5:816:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:816:5:816:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:817:5:817:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:817:5:817:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:818:5:818:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:819:5:819:7 | m18 | main.rs:554:1:572:1 | mod m18 | -| main.rs:819:5:819:12 | ...::m19 | main.rs:559:5:571:5 | mod m19 | -| main.rs:819:5:819:17 | ...::m20 | main.rs:564:9:570:9 | mod m20 | -| main.rs:819:5:819:20 | ...::g | main.rs:565:13:569:13 | fn g | -| main.rs:820:5:820:7 | m23 | main.rs:601:1:626:1 | mod m23 | -| main.rs:820:5:820:10 | ...::f | main.rs:621:5:625:5 | fn f | -| main.rs:821:5:821:7 | m24 | main.rs:628:1:696:1 | mod m24 | -| main.rs:821:5:821:10 | ...::f | main.rs:682:5:695:5 | fn f | -| main.rs:822:5:822:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:822:5:822:11 | ...::h | main.rs:56:1:75:1 | fn h | -| main.rs:823:5:823:13 | z_changed | main.rs:701:1:701:9 | fn z_changed | -| main.rs:824:5:824:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:824:5:824:22 | ...::z_on_type | main.rs:707:5:707:17 | fn z_on_type | -| main.rs:825:5:825:11 | AStruct | main.rs:703:1:703:17 | struct AStruct | -| main.rs:826:5:826:29 | impl_with_attribute_macro | main.rs:771:1:790:1 | mod impl_with_attribute_macro | -| main.rs:826:5:826:35 | ...::test | main.rs:786:5:789:5 | fn test | +| main.rs:794:5:794:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:794:5:794:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:794:5:794:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:794:5:794:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:795:5:795:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:795:5:795:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:796:5:796:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:796:5:796:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:796:5:796:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:796:5:796:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:797:5:797:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:798:5:798:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:799:5:799:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:799:5:799:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:800:5:800:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:800:5:800:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:800:5:800:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:801:5:801:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:801:5:801:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:801:5:801:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:801:5:801:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:802:5:802:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:802:5:802:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:803:5:803:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:804:5:804:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:805:5:805:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:806:5:806:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:807:5:807:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:807:5:807:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:808:5:808:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:808:5:808:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:809:5:809:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:809:5:809:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:810:5:810:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:810:5:810:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:811:5:811:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:811:5:811:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:812:5:812:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:812:5:812:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:813:5:813:7 | m16 | main.rs:377:1:469:1 | mod m16 | +| main.rs:813:5:813:10 | ...::f | main.rs:444:5:468:5 | fn f | +| main.rs:814:5:814:20 | trait_visibility | main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:814:5:814:23 | ...::f | main.rs:498:5:520:5 | fn f | +| main.rs:815:5:815:7 | m17 | main.rs:523:1:553:1 | mod m17 | +| main.rs:815:5:815:10 | ...::f | main.rs:547:5:552:5 | fn f | +| main.rs:816:5:816:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:816:5:816:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:817:5:817:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:817:5:817:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:818:5:818:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:818:5:818:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:821:5:821:7 | m18 | main.rs:555:1:573:1 | mod m18 | +| main.rs:821:5:821:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | +| main.rs:821:5:821:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | +| main.rs:821:5:821:20 | ...::g | main.rs:566:13:570:13 | fn g | +| main.rs:822:5:822:7 | m23 | main.rs:602:1:627:1 | mod m23 | +| main.rs:822:5:822:10 | ...::f | main.rs:622:5:626:5 | fn f | +| main.rs:823:5:823:7 | m24 | main.rs:629:1:697:1 | mod m24 | +| main.rs:823:5:823:10 | ...::f | main.rs:683:5:696:5 | fn f | +| main.rs:824:5:824:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:824:5:824:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:825:5:825:13 | z_changed | main.rs:702:1:702:9 | fn z_changed | +| main.rs:826:5:826:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:826:5:826:22 | ...::z_on_type | main.rs:708:5:708:17 | fn z_on_type | +| main.rs:827:5:827:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:828:5:828:29 | impl_with_attribute_macro | main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:828:5:828:35 | ...::test | main.rs:787:5:790:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -488,10 +486,10 @@ resolvePath | my2/mod.rs:25:9:25:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f | | my2/my3/mod.rs:2:5:2:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | -| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:827:2 | SourceFile | -| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:56:1:75:1 | fn h | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:829:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:10:5:10:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | From c38115312599c8d7f733608fae88892cf80f1eb0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:38:43 +0000 Subject: [PATCH 510/965] Apply suggestions from code review Co-authored-by: Tom Hvitved --- rust/ql/lib/codeql/rust/security/Barriers.qll | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 8eec065f8f2..398e4f56712 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -15,12 +15,12 @@ private import codeql.rust.frameworks.stdlib.Builtins */ class NumericTypeBarrier extends DataFlow::Node { NumericTypeBarrier() { - exists(TypeInference::Type t | + exists(StructType t, Struct s | t = TypeInference::inferType(this.asExpr().getExpr()) and - ( - t.(StructType).getStruct() instanceof NumericType or - t.(StructType).getStruct() instanceof Bool - ) + s = t.getStruct() + | + s instanceof NumericType or + s instanceof Bool ) } } @@ -31,12 +31,12 @@ class NumericTypeBarrier extends DataFlow::Node { */ class IntegralOrBooleanTypeBarrier extends DataFlow::Node { IntegralOrBooleanTypeBarrier() { - exists(TypeInference::Type t | + exists(StructType t, Struct s | t = TypeInference::inferType(this.asExpr().getExpr()) and - ( - t.(StructType).getStruct() instanceof IntegralType or - t.(StructType).getStruct() instanceof Bool - ) + s = t.getStruct() + | + s instanceof IntegralType or + s instanceof Bool ) } } From c1ede51fe85cea172695925540b9388ea90da25b Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 3 Nov 2025 12:52:27 +0100 Subject: [PATCH 511/965] C#: Add change note. --- csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md diff --git a/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md b/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md new file mode 100644 index 00000000000..92231d3be2f --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. From 0ca62ca5b6d34a5bf8ad8fbd2049b323d382dd5e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 3 Nov 2025 12:58:29 +0100 Subject: [PATCH 512/965] Fix copilot implementation --- rust/ql/.generated.list | 1 - rust/ql/.gitattributes | 1 - rust/ql/lib/codeql/rust/elements/Const.qll | 14 ------------- .../lib/codeql/rust/elements/ConstAccess.qll | 7 +++++++ .../rust/elements/internal/ConstImpl.qll | 16 ++++----------- rust/ql/lib/rust.qll | 1 + .../macro-expansion/PrintAst.expected | 2 +- .../library-tests/const_access/Cargo.lock | 6 +++--- .../const_access/const_access.expected | 8 ++++++++ .../const_access/const_access.ql | 4 +--- .../test/library-tests/const_access/main.rs | 20 ++++++------------- 11 files changed, 31 insertions(+), 49 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/elements/ConstAccess.qll create mode 100644 rust/ql/test/library-tests/const_access/const_access.expected diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index ffe947da742..1f580178999 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -247,7 +247,6 @@ lib/codeql/rust/elements/internal/ConstArgImpl.qll dc7e7b5fe1a6eeb61dd30a55a3ed2 lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll ddb4a0045635d477e87360ecafec0ba90ddcffc6e62996eb6e7edd5a5d65b860 442061d0497a615b3f008b990f5e3c4f045110f76500eff81a7f44ffd1319acf lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll 2082a3244c21e03b6dadfba9b3f97a00981324e10d1465d3a51cf3c921eb89e4 889e347834d8c6e90dfef9714af073b3b2193f6830f1c8356cee9c6573b3ecb4 lib/codeql/rust/elements/internal/ConstConstructor.qll 72a31fd9b8b3fd910e35af1b2b30fa54cc4d9e14e7eabdb94b4cd2af95b2df38 3edc0a82a7b446fdfd3e71947801f3c7cac010b2a217b8accb69980387bdd67a -lib/codeql/rust/elements/internal/ConstImpl.qll 058b474b9aaf2ad687ab1e62ebc8a51ba93d9ea4340c2f41768b71613ac330c1 c2c5d4746a588096cbbdfa4355ee73d806c7a4ac9507930a120e49060f9d5347 lib/codeql/rust/elements/internal/ConstParamConstructor.qll f6645f952aac87c7e00e5e9661275312a1df47172088b4de6b5a253d5c4ed048 eda737470a7b89cf6a02715c9147d074041d6d00fd50d5b2d70266add6e4b571 lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7ee3dd8eb410bb3e634ff1bfe1be94dfb3fdf32 bcfb5547b40f24bcec20056fe1d36724b734c920b0bc7538fe2974b03f4478fe lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index df4a65e7d95..ff149fb36d3 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -249,7 +249,6 @@ /lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ConstImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index d1515483555..39aea3e25dc 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -22,17 +22,3 @@ import codeql.rust.elements.WhereClause * ``` */ final class Const = Impl::Const; - -/** - * A constant access. - * - * For example: - * ```rust - * const X: i32 = 42; - * - * fn main() { - * println!("{}", X); - * } - * ``` - */ -final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/ConstAccess.qll b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll new file mode 100644 index 00000000000..ae2f6c3e333 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll @@ -0,0 +1,7 @@ +/** + * This module provides the public class `ConstAccess`. + */ + +private import internal.ConstImpl + +final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 99d76dd644a..0234f7cf730 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Const`. * @@ -6,8 +5,7 @@ */ private import codeql.rust.elements.internal.generated.Const -private import codeql.rust.elements.PathExpr -private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl +private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl private import codeql.rust.internal.PathResolution /** @@ -15,6 +13,7 @@ private import codeql.rust.internal.PathResolution * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant item declaration. * @@ -37,21 +36,14 @@ module Impl { * } * ``` */ - class ConstAccess extends PathExprBaseImpl::PathExprBase { + class ConstAccess extends PathExprImpl::PathExpr { private Const c; - ConstAccess() { - exists(PathExpr pe | - pe = this and - c = resolvePath(pe.getPath()) - ) - } + ConstAccess() { c = resolvePath(this.getPath()) } /** Gets the constant being accessed. */ Const getConst() { result = c } - override string toStringImpl() { result = c.getName().getText() } - override string getAPrimaryQlClass() { result = "ConstAccess" } } } diff --git a/rust/ql/lib/rust.qll b/rust/ql/lib/rust.qll index b46e96868f6..d209672028b 100644 --- a/rust/ql/lib/rust.qll +++ b/rust/ql/lib/rust.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.ArithmeticOperation import codeql.rust.elements.AssignmentOperation import codeql.rust.elements.BitwiseOperation import codeql.rust.elements.ComparisonOperation +import codeql.rust.elements.ConstAccess import codeql.rust.elements.DerefExpr import codeql.rust.elements.LiteralExprExt import codeql.rust.elements.LogicalOperation diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 60e193113cc..ffff0f53e7e 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -1043,7 +1043,7 @@ macro_expansion.rs: # 98| getParamList(): [ParamList] ParamList # 99| getFunctionBody(): [BlockExpr] { ... } # 99| getStmtList(): [StmtList] StmtList -# 99| getTailExpr(): [PathExpr] CONST_MyDeriveUnion +# 99| getTailExpr(): [ConstAccess] CONST_MyDeriveUnion # 99| getPath(): [Path] CONST_MyDeriveUnion # 99| getSegment(): [PathSegment] CONST_MyDeriveUnion # 99| getIdentifier(): [NameRef] CONST_MyDeriveUnion diff --git a/rust/ql/test/library-tests/const_access/Cargo.lock b/rust/ql/test/library-tests/const_access/Cargo.lock index 876cd502126..b9856cfaf77 100644 --- a/rust/ql/test/library-tests/const_access/Cargo.lock +++ b/rust/ql/test/library-tests/const_access/Cargo.lock @@ -1,7 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "const_access_test" -version = "0.1.0" +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/const_access/const_access.expected b/rust/ql/test/library-tests/const_access/const_access.expected new file mode 100644 index 00000000000..83c5022aca8 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.expected @@ -0,0 +1,8 @@ +testFailures +constAccess +| main.rs:17:13:17:24 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:19:13:19:24 | STRING_CONST | main.rs:2:1:2:35 | Const | +| main.rs:21:13:21:33 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | +| main.rs:23:13:23:35 | ...::MODULE_CONST | main.rs:13:5:13:38 | Const | +| main.rs:25:8:25:19 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:29:16:29:36 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | diff --git a/rust/ql/test/library-tests/const_access/const_access.ql b/rust/ql/test/library-tests/const_access/const_access.ql index 27b8f85e3dc..b3bb7363392 100644 --- a/rust/ql/test/library-tests/const_access/const_access.ql +++ b/rust/ql/test/library-tests/const_access/const_access.ql @@ -2,9 +2,7 @@ import rust import utils.test.InlineExpectationsTest import TestUtils -query predicate constAccess(ConstAccess ca, Const c) { - toBeTested(ca) and c = ca.getConst() -} +query predicate constAccess(ConstAccess ca, Const c) { toBeTested(ca) and c = ca.getConst() } module ConstAccessTest implements TestSig { string getARelevantTag() { result = "const_access" } diff --git a/rust/ql/test/library-tests/const_access/main.rs b/rust/ql/test/library-tests/const_access/main.rs index b8a363adfdb..0cf2467d100 100644 --- a/rust/ql/test/library-tests/const_access/main.rs +++ b/rust/ql/test/library-tests/const_access/main.rs @@ -14,27 +14,19 @@ mod my_module { } fn use_consts() { - // $ const_access=GLOBAL_CONST - let x = GLOBAL_CONST; - // $ const_access=GLOBAL_CONST - println!("{}", GLOBAL_CONST); + let x = GLOBAL_CONST; // $ const_access=GLOBAL_CONST - // $ const_access=STRING_CONST - let s = STRING_CONST; + let s = STRING_CONST; // $ const_access=STRING_CONST - // $ const_access=ASSOC_CONST - let y = MyStruct::ASSOC_CONST; + let y = MyStruct::ASSOC_CONST; // $ const_access=ASSOC_CONST - // $ const_access=MODULE_CONST - let z = my_module::MODULE_CONST; + let z = my_module::MODULE_CONST; // $ const_access=MODULE_CONST - // $ const_access=GLOBAL_CONST - if GLOBAL_CONST > 0 { + if GLOBAL_CONST > 0 { // $ const_access=GLOBAL_CONST println!("positive"); } - // $ const_access=ASSOC_CONST - let arr = [MyStruct::ASSOC_CONST; 5]; + let arr = [MyStruct::ASSOC_CONST; 5]; // $ const_access=ASSOC_CONST } fn main() { From 4b3a1c5abb374e85b8810c1a35c6111655bf5261 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:24:28 +0000 Subject: [PATCH 513/965] Rust: Move a model file into subdirectory. --- .../{tokio-postgres.model.yml => tokio/postgres.model.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rust/ql/lib/codeql/rust/frameworks/{tokio-postgres.model.yml => tokio/postgres.model.yml} (100%) diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml rename to rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml From 1b435ed07d539f9548b30d301e17750e5a4be599 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:26:37 +0000 Subject: [PATCH 514/965] Rust: Move another model file into subdirectory. --- .../frameworks/{async-rs.model.yml => asyncstd/net.model.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rust/ql/lib/codeql/rust/frameworks/{async-rs.model.yml => asyncstd/net.model.yml} (100%) diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml rename to rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml From 8a2c117a0e3c2c0314a3186dab17945c56e4321f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:31:25 +0000 Subject: [PATCH 515/965] Rust: Move models between core.model.yml and alloc.model.yml. --- .../rust/frameworks/stdlib/alloc.model.yml | 26 ++++++++++++++----- .../rust/frameworks/stdlib/core.model.yml | 26 ++++++------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 56131c70462..324f6244516 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -27,18 +27,30 @@ extensions: - ["::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] + # Conversions + - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] # Fmt - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] + # Layout + - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String - - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 9a29741bd37..76a38bd546b 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -3,10 +3,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + # Arithmetic + - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Clone - ["<_ as core::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "manual"] # Conversions - - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] # From @@ -23,21 +26,6 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - # Layout - - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] @@ -53,10 +41,12 @@ extensions: - ["core::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"] # Str + - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] From 144fa7dd392c88267d311843ae1151eca15d9e98 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:33:37 +0000 Subject: [PATCH 516/965] Rust: Deduplicate some models. --- rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml | 2 -- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 4 ---- 2 files changed, 6 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 324f6244516..4dd9db8489c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -47,8 +47,6 @@ extensions: - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 76a38bd546b..eeeb948bf3a 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -45,11 +45,7 @@ extensions: - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel From 5af83787d82dfc8deb236ac7f1ead56c0b13cab7 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:35:27 +0000 Subject: [PATCH 517/965] Rust: Move a few more models. --- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 3 +++ rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index eeeb948bf3a..46eea8f9c4e 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -26,6 +26,9 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml index ae58b2a077a..17b0451793d 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml @@ -46,6 +46,3 @@ extensions: - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>:::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] From 64fcdd1f2f3695d9f6290c1a1da03586ee9fb23f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 3 Nov 2025 14:52:23 +0000 Subject: [PATCH 518/965] Release preparation for version 2.23.4 --- actions/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/0.4.20.md | 3 +++ actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/0.6.12.md | 3 +++ actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../2025-10-16-range-analysis-performance.md | 4 ---- cpp/ql/lib/change-notes/released/6.0.1.md | 5 +++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 ++++ cpp/ql/src/change-notes/released/1.5.3.md | 3 +++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../lib/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 15 +++++++++++++++ .../2025-10-10-starid-locations.md | 4 ---- .../2025-10-21-dotnet-rc2-tracing.md | 4 ---- .../2025-10-31-deprecate-abstractvalue.md | 4 ---- .../5.3.0.md} | 16 +++++++++++++--- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../1.4.3.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/1.0.34.md | 3 +++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/5.0.1.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/1.4.8.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 ++++ java/ql/lib/change-notes/released/7.7.3.md | 3 +++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 13 +++++++++++++ .../change-notes/2025-06-22-query-escaping.md | 4 ---- .../2025-06-22-query-not-thread-safe.md | 4 ---- .../2025-06-22-query-safe-publication.md | 4 ---- .../2025-10-02-http-only-cookie-promote.md | 4 ---- ...10-24-request-forgery-matches-sanitizer.md | 4 ---- java/ql/src/change-notes/released/1.9.0.md | 12 ++++++++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/2.6.14.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/2.1.3.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ++++++ .../4.1.0.md} | 6 +++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../1.6.8.md} | 9 +++++---- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 ++++ ruby/ql/lib/change-notes/released/5.1.2.md | 3 +++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/1.4.8.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 13 +++++++++++++ .../2025-09-29-actix-web-model.md | 4 ---- .../2025-10-06-call-resolution.md | 4 ---- rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 ---- rust/ql/lib/change-notes/2025-10-15-models.md | 4 ---- .../2025-10-16-new-extracted-file-methods.md | 4 ---- rust/ql/lib/change-notes/released/0.1.19.md | 12 ++++++++++++ rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ++++++ .../0.1.19.md} | 7 ++++--- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 ++++ .../concepts/change-notes/released/0.0.8.md | 3 +++ shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ .../dataflow/change-notes/released/2.0.18.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/1.0.34.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 ++++ .../quantum/change-notes/released/0.0.12.md | 3 +++ shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/1.0.34.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/2.0.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ .../tutorial/change-notes/released/1.0.34.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 ++++ .../typeflow/change-notes/released/1.0.34.md | 3 +++ shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.15.md | 3 +++ shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/1.0.34.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/2.0.21.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 ++++ shared/xml/change-notes/released/1.0.34.md | 3 +++ shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/1.0.34.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 19 +++++++++++++++++++ .../2025-10-22-swift-6.2-class-changes.md | 6 ------ .../lib/change-notes/2025-10-22-swift-6.2.md | 5 ----- .../change-notes/2025-10-31-swift-6.2-ast.md | 6 ------ swift/ql/lib/change-notes/released/6.0.0.md | 18 ++++++++++++++++++ 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/1.2.8.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 181 files changed, 472 insertions(+), 171 deletions(-) create mode 100644 actions/ql/lib/change-notes/released/0.4.20.md create mode 100644 actions/ql/src/change-notes/released/0.6.12.md delete mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md create mode 100644 cpp/ql/lib/change-notes/released/6.0.1.md create mode 100644 cpp/ql/src/change-notes/released/1.5.3.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md rename csharp/ql/lib/change-notes/{2025-10-03-nullness.md => released/5.3.0.md} (55%) rename csharp/ql/src/change-notes/{2025-10-17-location-in-web-config.md => released/1.4.3.md} (73%) create mode 100644 go/ql/consistency-queries/change-notes/released/1.0.34.md create mode 100644 go/ql/lib/change-notes/released/5.0.1.md create mode 100644 go/ql/src/change-notes/released/1.4.8.md create mode 100644 java/ql/lib/change-notes/released/7.7.3.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md delete mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md delete mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md create mode 100644 java/ql/src/change-notes/released/1.9.0.md create mode 100644 javascript/ql/lib/change-notes/released/2.6.14.md create mode 100644 javascript/ql/src/change-notes/released/2.1.3.md create mode 100644 misc/suite-helpers/change-notes/released/1.0.34.md rename python/ql/lib/change-notes/{2025-10-02-python-overlay-compilation-plus-extractor.md => released/4.1.0.md} (81%) rename python/ql/src/change-notes/{2025-09-19-insecure-cookie.md => released/1.6.8.md} (78%) create mode 100644 ruby/ql/lib/change-notes/released/5.1.2.md create mode 100644 ruby/ql/src/change-notes/released/1.4.8.md delete mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md delete mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md delete mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md delete mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md delete mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md create mode 100644 rust/ql/lib/change-notes/released/0.1.19.md rename rust/ql/src/change-notes/{2025-10-21-database-quality-diagnostic.md => released/0.1.19.md} (79%) create mode 100644 shared/concepts/change-notes/released/0.0.8.md create mode 100644 shared/controlflow/change-notes/released/2.0.18.md create mode 100644 shared/dataflow/change-notes/released/2.0.18.md create mode 100644 shared/mad/change-notes/released/1.0.34.md create mode 100644 shared/quantum/change-notes/released/0.0.12.md create mode 100644 shared/rangeanalysis/change-notes/released/1.0.34.md create mode 100644 shared/regex/change-notes/released/1.0.34.md create mode 100644 shared/ssa/change-notes/released/2.0.10.md create mode 100644 shared/threat-models/change-notes/released/1.0.34.md create mode 100644 shared/tutorial/change-notes/released/1.0.34.md create mode 100644 shared/typeflow/change-notes/released/1.0.34.md create mode 100644 shared/typeinference/change-notes/released/0.0.15.md create mode 100644 shared/typetracking/change-notes/released/2.0.18.md create mode 100644 shared/typos/change-notes/released/1.0.34.md create mode 100644 shared/util/change-notes/released/2.0.21.md create mode 100644 shared/xml/change-notes/released/1.0.34.md create mode 100644 shared/yaml/change-notes/released/1.0.34.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md delete mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md create mode 100644 swift/ql/lib/change-notes/released/6.0.0.md create mode 100644 swift/ql/src/change-notes/released/1.2.8.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index 3de5d186721..ffe1cba8281 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.20 + +No user-facing changes. + ## 0.4.19 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.20.md b/actions/ql/lib/change-notes/released/0.4.20.md new file mode 100644 index 00000000000..874725a8c2d --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.20.md @@ -0,0 +1,3 @@ +## 0.4.20 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index abf63707906..380b2d09423 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.19 +lastReleaseVersion: 0.4.20 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 6423894239d..3217afc182b 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20-dev +version: 0.4.20 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 4592fbb66da..c7253227b7c 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.12 + +No user-facing changes. + ## 0.6.11 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.12.md b/actions/ql/src/change-notes/released/0.6.12.md new file mode 100644 index 00000000000..da7e7709ef7 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.12.md @@ -0,0 +1,3 @@ +## 0.6.12 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index b73e74898d0..28c22ccab7c 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.11 +lastReleaseVersion: 0.6.12 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 553e579ceac..7c14b3a9172 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12-dev +version: 0.6.12 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 093b31078e0..390e3d4653b 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + ## 6.0.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md deleted file mode 100644 index f24ab4b87fe..00000000000 --- a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md new file mode 100644 index 00000000000..7e8cfdb2562 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.0.1.md @@ -0,0 +1,5 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..d1f3c68c812 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 6.0.1 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8712e400897..9ce21e2a8da 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1-dev +version: 6.0.1 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 4b876310708..880cab8a58d 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.3 + +No user-facing changes. + ## 1.5.2 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.3.md b/cpp/ql/src/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 7eb901bae56..232224b0e26 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.5.3 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 71aa95bed9e..178947f2549 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3-dev +version: 1.5.3 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index a569cf6a5c4..649b7e60de7 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index d91f21b0e90..b3977a0ef72 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index a722d924f3b..e7c0ac3cc88 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,18 @@ +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + ## 5.2.6 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md deleted file mode 100644 index a258abcf3ab..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md deleted file mode 100644 index b54f1e7d1b5..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md deleted file mode 100644 index 65bb9032b12..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: deprecated ---- -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/change-notes/2025-10-03-nullness.md b/csharp/ql/lib/change-notes/released/5.3.0.md similarity index 55% rename from csharp/ql/lib/change-notes/2025-10-03-nullness.md rename to csharp/ql/lib/change-notes/released/5.3.0.md index 0d44c1e98c1..144f8bf2633 100644 --- a/csharp/ql/lib/change-notes/2025-10-03-nullness.md +++ b/csharp/ql/lib/change-notes/released/5.3.0.md @@ -1,4 +1,14 @@ ---- -category: majorAnalysis ---- +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + * The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 1ac2b5309f2..b0a1c83e5bc 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.2.6 +lastReleaseVersion: 5.3.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 92a08088be7..7d6d2e1ed4e 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.2.7-dev +version: 5.3.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 40ea9e3693a..edbfcdc3969 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.4.3 + +### Minor Analysis Improvements + +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. + ## 1.4.2 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/released/1.4.3.md similarity index 73% rename from csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md rename to csharp/ql/src/change-notes/released/1.4.3.md index 5df97b9d28a..1a022f2462d 100644 --- a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md +++ b/csharp/ql/src/change-notes/released/1.4.3.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.4.3 + +### Minor Analysis Improvements + * the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index a76cacdf799..08f88b689fb 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.2 +lastReleaseVersion: 1.4.3 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a9776d058b9..4305c1d899e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3-dev +version: 1.4.3 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.34.md b/go/ql/consistency-queries/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +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 914c722b5d9..b736654032c 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index e44457e4570..f8a661692dc 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: 1.0.34-dev +version: 1.0.34 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 71d6bfdc60f..e2d2a71f6bd 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.1 + +No user-facing changes. + ## 5.0.0 ### Breaking Changes diff --git a/go/ql/lib/change-notes/released/5.0.1.md b/go/ql/lib/change-notes/released/5.0.1.md new file mode 100644 index 00000000000..b99e1ae0268 --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.1.md @@ -0,0 +1,3 @@ +## 5.0.1 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index c9e54136ca5..ae7df5e18b7 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.0 +lastReleaseVersion: 5.0.1 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index bf2586d9089..fba4fc5f83e 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1-dev +version: 5.0.1 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index eb370a8cddd..786164b5fe4 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.8.md b/go/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 3133d392d89..4a68e375703 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8-dev +version: 1.4.8 groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 5d6fcbde336..e261dbee59e 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.7.3 + +No user-facing changes. + ## 7.7.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/7.7.3.md b/java/ql/lib/change-notes/released/7.7.3.md new file mode 100644 index 00000000000..d03e3181a52 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.3.md @@ -0,0 +1,3 @@ +## 7.7.3 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 25c09b25d21..6856106e771 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.2 +lastReleaseVersion: 7.7.3 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 7f8860bc632..b1c5cbb54ed 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3-dev +version: 7.7.3 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 06133dffeba..ed02fdc5bb2 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,16 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. + ## 1.8.2 No user-facing changes. diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md deleted file mode 100644 index f33de2e8556..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-escaping.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md deleted file mode 100644 index d5dd0744609..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md deleted file mode 100644 index 23b64c970b3..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md deleted file mode 100644 index ee9fe7527bd..00000000000 --- a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md deleted file mode 100644 index a38c43dd730..00000000000 --- a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.9.0.md b/java/ql/src/change-notes/released/1.9.0.md new file mode 100644 index 00000000000..82977276fe2 --- /dev/null +++ b/java/ql/src/change-notes/released/1.9.0.md @@ -0,0 +1,12 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 559af8348bb..df17dc3a366 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.2 +lastReleaseVersion: 1.9.0 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index faf088b7a4a..198798cf67d 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.8.3-dev +version: 1.9.0 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 1e874227c37..9f27fdae99c 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.6.14 + +No user-facing changes. + ## 2.6.13 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.14.md b/javascript/ql/lib/change-notes/released/2.6.14.md new file mode 100644 index 00000000000..49a00b95efc --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.14.md @@ -0,0 +1,3 @@ +## 2.6.14 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 9240f755da8..022aeff4e02 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.13 +lastReleaseVersion: 2.6.14 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index d8d53ef1c7e..46e5661f216 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14-dev +version: 2.6.14 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index f03b3a66e4d..4a453506818 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.3 + +No user-facing changes. + ## 2.1.2 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.1.3.md b/javascript/ql/src/change-notes/released/2.1.3.md new file mode 100644 index 00000000000..a1338012fcd --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.1.3.md @@ -0,0 +1,3 @@ +## 2.1.3 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1a4e53e8772..345fb0c73a4 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.2 +lastReleaseVersion: 2.1.3 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index df854af7e2b..8a50977ba71 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3-dev +version: 2.1.3 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index a6f9fcd2377..203d289a673 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.34.md b/misc/suite-helpers/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index daf9a60662d..5aad5f4b49d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34-dev +version: 1.0.34 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index cb18c48a051..df8a66ca0e6 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.1.0 + +### New Features + +* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. + ## 4.0.17 ### Bug Fixes diff --git a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md b/python/ql/lib/change-notes/released/4.1.0.md similarity index 81% rename from python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md rename to python/ql/lib/change-notes/released/4.1.0.md index 5eb698354c1..51c7ea24f1b 100644 --- a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md +++ b/python/ql/lib/change-notes/released/4.1.0.md @@ -1,5 +1,5 @@ ---- -category: feature ---- +## 4.1.0 + +### New Features * Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d1339a1f762..d5b1bf88d10 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.17 +lastReleaseVersion: 4.1.0 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 34d03dc0fad..88b85332fba 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.18-dev +version: 4.1.0 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index aef1a87136d..65fd05e047b 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + ## 1.6.7 No user-facing changes. diff --git a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md b/python/ql/src/change-notes/released/1.6.8.md similarity index 78% rename from python/ql/src/change-notes/2025-09-19-insecure-cookie.md rename to python/ql/src/change-notes/released/1.6.8.md index 51c6dc6ce30..d1b510e542a 100644 --- a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md +++ b/python/ql/src/change-notes/released/1.6.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 0b49adeac7d..fbc11aa62b7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.7 +lastReleaseVersion: 1.6.8 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d01829a9de2..dd29d5c31a2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8-dev +version: 1.6.8 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 32e1dd3538b..a99e4017789 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.2 + +No user-facing changes. + ## 5.1.1 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.2.md b/ruby/ql/lib/change-notes/released/5.1.2.md new file mode 100644 index 00000000000..86e21502e26 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.2.md @@ -0,0 +1,3 @@ +## 5.1.2 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index dcb83eca6a3..d21c12fbe7f 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.1 +lastReleaseVersion: 5.1.2 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 77d07910f48..eec414da0f0 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2-dev +version: 5.1.2 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 29a0f89236d..282fd284635 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.8.md b/ruby/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index b35ffb5c411..aaac6c00522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8-dev +version: 1.4.8 groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 228d9c21637..7e8575b03be 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,16 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. + ## 0.1.18 ### New Features diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md deleted file mode 100644 index 7bf9ce8a7d5..00000000000 --- a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added basic models for the `actix-web` web framework. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md deleted file mode 100644 index ffaf449bb8a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md deleted file mode 100644 index 037f813a856..00000000000 --- a/rust/ql/lib/change-notes/2025-10-10-mysql.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md deleted file mode 100644 index fab2cab639a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-15-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Generalized some existing models to improve data flow. diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md deleted file mode 100644 index 63fbbe38899..00000000000 --- a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/change-notes/released/0.1.19.md b/rust/ql/lib/change-notes/released/0.1.19.md new file mode 100644 index 00000000000..b75ad4257c5 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.19.md @@ -0,0 +1,12 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b5dea62349a..b46b494c421 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19-dev +version: 0.1.19 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index df1c4e49856..2b0c54fc057 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.19 + +### Minor Analysis Improvements + +* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + ## 0.1.18 ### New Queries diff --git a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md b/rust/ql/src/change-notes/released/0.1.19.md similarity index 79% rename from rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md rename to rust/ql/src/change-notes/released/0.1.19.md index 322bdb7c5ab..67ccce578c8 100644 --- a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md +++ b/rust/ql/src/change-notes/released/0.1.19.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.19 + +### Minor Analysis Improvements + * The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index e72c44676d5..da14aa08a02 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19-dev +version: 0.1.19 groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index f7d8dfad907..4d0898b90e4 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.8 + +No user-facing changes. + ## 0.0.7 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.8.md b/shared/concepts/change-notes/released/0.0.8.md new file mode 100644 index 00000000000..6af2d954c09 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.8.md @@ -0,0 +1,3 @@ +## 0.0.8 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index a2a5484910b..58fdc6b45de 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.8 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index c765cb33734..a9fd8ce78e7 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8-dev +version: 0.0.8 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index cb14761bb38..c5b9b9d696a 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.18.md b/shared/controlflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index c4f39f17484..565ff51c42b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 99ee484c731..f963117ea88 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.18.md b/shared/dataflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index afe273133cb..75920f8f5a0 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index eda9cf4ddb2..b0b444f8c41 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.34.md b/shared/mad/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index a132a76336b..290eedf639c 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index d9dd6b6f2e2..83a42fb0551 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.12.md b/shared/quantum/change-notes/released/0.0.12.md new file mode 100644 index 00000000000..0e206033bc4 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index e679dc42092..997fb8da83c 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 201689efa51..8aaa96a8630 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12-dev +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7a0776cf53c..640d26270e1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.34.md b/shared/rangeanalysis/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 90efb8ebbf3..2769814d3e3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 2507f237ec0..1e3fb3c306c 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.34.md b/shared/regex/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 2019d2dcb2e..f06235bc4d3 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index cb33a2dd613..2d8087cd96c 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.10.md b/shared/ssa/change-notes/released/2.0.10.md new file mode 100644 index 00000000000..37310f107aa --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index ce305265e33..96ea0220a69 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f1aa89319bd..dcf19c605a1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10-dev +version: 2.0.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.34.md b/shared/threat-models/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 69963387a05..48d215a1d9a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34-dev +version: 1.0.34 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index e982f144f9c..23fd78f42e5 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.34.md b/shared/tutorial/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index efe3820754f..51e6e2a5984 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: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index 32d26faa9f4..d95faf69864 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.34.md b/shared/typeflow/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 70066fa9bd8..6c01f40eff6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index ad4781e2cbd..4f4b3189bb4 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.15 + +No user-facing changes. + ## 0.0.14 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.15.md b/shared/typeinference/change-notes/released/0.0.15.md new file mode 100644 index 00000000000..7af9c05f23f --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.15.md @@ -0,0 +1,3 @@ +## 0.0.15 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index ca29e45d0a6..dff35216fc6 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.14 +lastReleaseVersion: 0.0.15 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index ae0880ec7ea..b09de2187e9 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15-dev +version: 0.0.15 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index a536c707303..4edafe87290 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.18.md b/shared/typetracking/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 9a68b0ae750..14ca67d8ba8 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 979e0c24d1e..9fbdb39d493 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.34.md b/shared/typos/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 71a4826016e..5675b883f19 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 0f0cdcc36ca..88679dd6846 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.21 + +No user-facing changes. + ## 2.0.20 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.21.md b/shared/util/change-notes/released/2.0.21.md new file mode 100644 index 00000000000..bdc5029b70b --- /dev/null +++ b/shared/util/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index cde101f3516..a572e88bffd 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.20 +lastReleaseVersion: 2.0.21 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 69e188136fa..155a5b33b78 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21-dev +version: 2.0.21 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index f0d7c829bfb..ff67592d22b 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.34.md b/shared/xml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 25135f830c6..2bdbef9aa76 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 2ca0a52f636..fb623a1f26c 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.34.md b/shared/yaml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4ba9cb06c57..7dcc28b8269 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 4b8852b6711..b1b958708e0 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,22 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + ## 5.0.9 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md deleted file mode 100644 index 114f91eed8c..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: breaking ---- -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md deleted file mode 100644 index 97f3e45d6f8..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: majorAnalysis ---- -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md deleted file mode 100644 index f227bc71c65..00000000000 --- a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: feature ---- -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/swift/ql/lib/change-notes/released/6.0.0.md b/swift/ql/lib/change-notes/released/6.0.0.md new file mode 100644 index 00000000000..8fe348b6db5 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.0.0.md @@ -0,0 +1,18 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 2b650f0b340..f8c4fa43ccb 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.9 +lastReleaseVersion: 6.0.0 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 18bddfe30bb..2f395ceb198 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.10-dev +version: 6.0.0 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index f3fe65f7bd8..99b5491b9db 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.8 + +No user-facing changes. + ## 1.2.7 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.8.md b/swift/ql/src/change-notes/released/1.2.8.md new file mode 100644 index 00000000000..533ed7761e4 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.8.md @@ -0,0 +1,3 @@ +## 1.2.8 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 950e0645d4a..a49a92ee5ab 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.7 +lastReleaseVersion: 1.2.8 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 9e050de61b9..bec49400609 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8-dev +version: 1.2.8 groups: - swift - queries From 687cc6f544ace4a398a8b0029ae7b328d9b225f8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:53:58 +0000 Subject: [PATCH 519/965] Rust: Re-arrange models slightly. --- rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 4dd9db8489c..5199a0e8117 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -27,8 +27,6 @@ extensions: - ["::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] - # Conversions - - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] # Fmt - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] # Layout @@ -44,6 +42,7 @@ extensions: - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String From e825a3acf7ddebbac27a9a2fcf575d6cf6dde0a7 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Mon, 3 Nov 2025 15:03:46 +0000 Subject: [PATCH 520/965] C#: Minor changelog improvements --- csharp/ql/lib/CHANGELOG.md | 22 +++++++++++----------- csharp/ql/src/CHANGELOG.md | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index e7c0ac3cc88..20b1c03d722 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -6,7 +6,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements @@ -143,7 +143,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +163,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +201,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +451,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +586,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +626,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +645,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +692,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index edbfcdc3969..8993b453543 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -2,7 +2,7 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. ## 1.4.2 @@ -170,7 +170,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +284,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 From 50597685a2151906bc615c739252d49abb0a4b79 Mon Sep 17 00:00:00 2001 From: Chad Bentz <1760475+felickz@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:55:36 -0500 Subject: [PATCH 521/965] Add 'code-quality-extended' to query packs list --- misc/scripts/generate-code-scanning-query-list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index 02d59c473ec..e592875e4bd 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -31,7 +31,7 @@ assert hasattr(arguments, "ignore_missing_query_packs") # Define which languages and query packs to consider languages = [ "actions", "cpp", "csharp", "go", "java", "javascript", "python", "ruby", "rust", "swift" ] -packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality"] +packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality", "code-quality-extended"] class CodeQL: def __init__(self): From 4346c61e976b8463c635aea17e9c2a7d1a05a841 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:19:07 +0000 Subject: [PATCH 522/965] Initial plan From 7b6b703d06f58e4a55609f535c7d8165e4e7dc1d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:31:04 +0000 Subject: [PATCH 523/965] Add quality tag to Actions maintainability query Co-authored-by: felickz <1760475+felickz@users.noreply.github.com> --- .../CodeQL/UnnecessaryUseOfAdvancedConfig.ql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql index dc65fab292b..f6af52fd83f 100644 --- a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql +++ b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id actions/unnecessary-use-of-advanced-config - * @tags actions + * @tags quality * maintainability + * actions */ import codeql.actions.Violations_Of_Best_Practices.DefaultableCodeQLInitiatlizeActionQuery From 0fc25029bb6cf208300609af320b397d18c18918 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:46:56 +0000 Subject: [PATCH 524/965] Revert query file change and fix script to handle empty code-quality-extended suites Co-authored-by: felickz <1760475+felickz@users.noreply.github.com> --- .../CodeQL/UnnecessaryUseOfAdvancedConfig.ql | 3 +-- misc/scripts/generate-code-scanning-query-list.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql index f6af52fd83f..dc65fab292b 100644 --- a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql +++ b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql @@ -5,9 +5,8 @@ * @problem.severity recommendation * @precision high * @id actions/unnecessary-use-of-advanced-config - * @tags quality + * @tags actions * maintainability - * actions */ import codeql.actions.Violations_Of_Best_Practices.DefaultableCodeQLInitiatlizeActionQuery diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index e592875e4bd..24ed1d5de00 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -184,8 +184,8 @@ with CodeQL() as codeql: sys.exit("You can use '--ignore-missing-query-packs' to ignore this error") # Exception for the code-quality suites, which might be empty, but must be resolvable. - if pack == 'code-quality' and queries_subp == '': - print(f'Warning: skipping empty suite code-quality', file=sys.stderr) + if pack in ['code-quality', 'code-quality-extended'] and queries_subp == '': + print(f'Warning: skipping empty suite {pack}', file=sys.stderr) continue # Investigate metadata for every query by using 'codeql resolve metadata' From 56e98c45ec57eaa17e0282a507de6b700cd76f3b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:08:22 +0000 Subject: [PATCH 525/965] Rust: Accept trivial changes to test .expected files. --- .../ql/test/query-tests/security/CWE-089/SqlInjection.expected | 3 +-- .../security/CWE-770/UncontrolledAllocationSize.expected | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa7937..3195a0b606e 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -174,7 +174,6 @@ edges | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | @@ -195,9 +194,9 @@ edges | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 64875e0a8ac..8fcbd27ac02 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -252,7 +252,6 @@ edges | main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | | main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | @@ -277,7 +276,6 @@ edges | main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 | | main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:38 | | main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | | main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:40 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | From 2497d8c32905d1e522d1ed8b9a2f43f298f406bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:11:12 +0000 Subject: [PATCH 526/965] Initial plan From 8f02ab107c4b841750f5cfd55dd098d431c4e0dc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:16:04 +0000 Subject: [PATCH 527/965] Add test cases for actix-web, poem, and http-types cookie secure attribute Co-authored-by: geoffw0 <40627776+geoffw0@users.noreply.github.com> --- .../test/query-tests/security/CWE-614/main.rs | 54 +++++++++++++++++++ .../query-tests/security/CWE-614/options.yml | 3 ++ 2 files changed, 57 insertions(+) diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index afcbb28931f..c6d33b6bba4 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -188,9 +188,63 @@ fn test_qhelp_examples() { } } +fn test_actix_web() { + // actix-web re-exports the cookie crate + use actix_web::cookie::Cookie as ActixCookie; + + // secure set to false + let cookie1 = ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + println!("actix-web cookie1 = '{}'", cookie1.to_string()); + + // secure set to true + let cookie2 = ActixCookie::build("name", "value").secure(true).finish(); // good + println!("actix-web cookie2 = '{}'", cookie2.to_string()); + + // secure left as default + let cookie3 = ActixCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + println!("actix-web cookie3 = '{}'", cookie3.to_string()); +} + +fn test_poem() { + use poem::web::cookie::Cookie as PoemCookie; + + // secure set to false + let cookie1 = PoemCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + println!("poem cookie1 = '{}'", cookie1.to_string()); + + // secure set to true + let cookie2 = PoemCookie::build("name", "value").secure(true).finish(); // good + println!("poem cookie2 = '{}'", cookie2.to_string()); + + // secure left as default + let cookie3 = PoemCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + println!("poem cookie3 = '{}'", cookie3.to_string()); +} + +fn test_http_types() { + use http_types::Cookie as HttpTypesCookie; + + // secure set to false + let mut cookie1 = HttpTypesCookie::new("name", "value"); + cookie1.set_secure(false); // $ Source + println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] + + // secure set to true + let mut cookie2 = HttpTypesCookie::new("name", "value"); + cookie2.set_secure(true); // good + println!("http-types cookie2 = '{}'", cookie2.to_string()); + + // secure left as default + let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source + println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] +} + fn main() { test_cookie(true); test_cookie(false); test_biscotti(); test_qhelp_examples(); + test_actix_web(); + test_poem(); + test_http_types(); } diff --git a/rust/ql/test/query-tests/security/CWE-614/options.yml b/rust/ql/test/query-tests/security/CWE-614/options.yml index 99b8e37e843..7c267c5bfb0 100644 --- a/rust/ql/test/query-tests/security/CWE-614/options.yml +++ b/rust/ql/test/query-tests/security/CWE-614/options.yml @@ -2,3 +2,6 @@ qltest_cargo_check: true qltest_dependencies: - cookie = { version = "0.18.1", features = ["percent-encode", "signed", "private"] } - biscotti = { version = "0.4.3" } + - actix-web = { version = "4" } + - poem = { version = "3" } + - http-types = { version = "2" } From ee3d57ef3ca8a82afda51234fc1c2fad9ec702af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:38:25 +0000 Subject: [PATCH 528/965] Update test cases with correct APIs and run CodeQL test Co-authored-by: geoffw0 <40627776+geoffw0@users.noreply.github.com> --- .../query-tests/security/CWE-614/Cargo.lock | 2741 ++++++++++++++++- .../security/CWE-614/CookieSet.expected | 8 + .../security/CWE-614/InsecureCookie.expected | 13 + .../test/query-tests/security/CWE-614/main.rs | 24 +- .../query-tests/security/CWE-614/options.yml | 6 +- 5 files changed, 2680 insertions(+), 112 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock index 1d2124de710..f9d03f929df 100644 --- a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock @@ -2,6 +2,204 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64 0.22.1", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "foldhash", + "futures-core", + "h2 0.3.27", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand 0.9.2", + "sha1 0.10.6", + "smallvec", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.108", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "bytes", + "bytestring", + "cfg-if", + "cookie 0.16.2", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.5.10", + "time 0.3.44", + "tracing", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array", +] + [[package]] name = "aead" version = "0.5.2" @@ -12,6 +210,17 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher 0.2.5", +] + [[package]] name = "aes" version = "0.8.4" @@ -19,21 +228,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead 0.3.2", + "aes 0.6.0", + "cipher 0.2.5", + "ctr 0.6.0", + "ghash 0.3.1", + "subtle", +] + [[package]] name = "aes-gcm" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", "subtle", ] @@ -43,20 +266,210 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "polyval", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "polyval 0.6.2", "subtle", "zeroize", ] [[package]] -name = "anyhow" -version = "1.0.99" +name = "aes-soft" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.3.0", + "futures-lite 2.6.1", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite 2.6.1", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.6.1", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 2.6.1", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" @@ -72,17 +485,32 @@ checksum = "ddb6f28a3d15d18cace7a8010282a4d9cee1452dcd33f5861c173b4a31095b79" dependencies = [ "aes-gcm-siv", "anyhow", - "base64", - "hkdf", - "hmac", + "base64 0.22.1", + "hkdf 0.12.4", + "hmac 0.12.1", "jiff", "percent-encoding", "rand 0.9.2", "serde", - "sha2", + "sha2 0.10.9", "subtle", ] +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -93,10 +521,103 @@ dependencies = [ ] [[package]] -name = "cfg-if" -version = "1.0.3" +name = "blocking" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite 2.6.1", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] [[package]] name = "cipher" @@ -108,23 +629,73 @@ dependencies = [ "inout", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const_fn" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" + +[[package]] +name = "cookie" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" +dependencies = [ + "aes-gcm 0.8.0", + "base64 0.13.1", + "hkdf 0.10.0", + "hmac 0.10.1", + "percent-encoding", + "rand 0.8.5", + "sha2 0.9.9", + "time 0.2.27", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time 0.3.44", + "version_check", +] + [[package]] name = "cookie" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ - "aes-gcm", - "base64", - "hmac", + "aes-gcm 0.10.3", + "base64 0.22.1", + "hkdf 0.12.4", + "hmac 0.12.1", "percent-encoding", "rand 0.8.5", - "sha2", + "sha2 0.10.9", "subtle", - "time", + "time 0.3.44", "version_check", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -134,6 +705,27 @@ dependencies = [ "libc", ] +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + [[package]] name = "crypto-common" version = "0.1.6" @@ -145,45 +737,313 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-mac" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher 0.2.5", +] + [[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] name = "deranged" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "crypto-common", "subtle", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "discard" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.16" @@ -197,14 +1057,24 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "wasip2", +] + +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug", + "polyval 0.4.5", ] [[package]] @@ -214,7 +1084,103 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", - "polyval", + "polyval 0.6.2", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1 0.10.6", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +dependencies = [ + "digest 0.9.0", + "hmac 0.10.1", ] [[package]] @@ -223,7 +1189,17 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "hmac", + "hmac 0.12.1", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac", + "digest 0.9.0", ] [[package]] @@ -232,9 +1208,273 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel 1.9.0", + "async-std", + "base64 0.13.1", + "cookie 0.14.4", + "futures-lite 1.13.0", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "hyper", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + [[package]] name = "inout" version = "0.1.4" @@ -244,6 +1484,21 @@ dependencies = [ "generic-array", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + [[package]] name = "jiff" version = "0.2.15" @@ -256,7 +1511,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -267,7 +1522,7 @@ checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.108", ] [[package]] @@ -286,16 +1541,138 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.175" +name = "jobserver" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] [[package]] name = "log" version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] [[package]] name = "num-conv" @@ -303,6 +1680,21 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + [[package]] name = "opaque-debug" version = "0.3.1" @@ -310,10 +1702,141 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "parking" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.3.0", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "poem" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f977080932c87287147dca052951c3e2696f8759863f6b4e4c0c9ffe7a4cc8b" +dependencies = [ + "bytes", + "chrono", + "cookie 0.18.1", + "futures-util", + "headers", + "http 1.3.1", + "http-body-util", + "hyper", + "hyper-util", + "mime", + "nix", + "parking_lot", + "percent-encoding", + "pin-project-lite", + "poem-derive", + "regex", + "rfc7239", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "sync_wrapper", + "thiserror 2.0.17", + "time 0.3.44", + "tokio", + "tokio-util", + "tracing", + "wildmatch", +] + +[[package]] +name = "poem-derive" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056e2fea6de1cb240ffe23cfc4fc370b629f8be83b5f27e16b7acd5231a72de4" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "polyval" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +dependencies = [ + "cpuid-bool", + "opaque-debug", + "universal-hash 0.4.0", +] [[package]] name = "polyval" @@ -324,7 +1847,7 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", ] [[package]] @@ -342,6 +1865,15 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -358,19 +1890,34 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.95" +name = "proc-macro-crate" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -381,6 +1928,19 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -402,6 +1962,16 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -422,6 +1992,15 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + [[package]] name = "rand_core" version = "0.6.4" @@ -437,27 +2016,229 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] [[package]] -name = "serde" -version = "1.0.219" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "rfc7239" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" +dependencies = [ + "uncased", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.108", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", ] [[package]] @@ -468,9 +2249,126 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1 0.6.1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + [[package]] name = "subtle" version = "2.6.1" @@ -479,35 +2377,125 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.103" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "test" version = "0.0.1" dependencies = [ + "actix-web", "biscotti", - "cookie", + "cookie 0.18.1", + "http-types", + "poem", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] name = "time" -version = "0.3.43" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", + "itoa", "num-conv", "powerfmt", "serde", "time-core", - "time-macros", + "time-macros 0.2.24", ] [[package]] @@ -516,6 +2504,16 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + [[package]] name = "time-macros" version = "0.2.24" @@ -527,16 +2525,167 @@ dependencies = [ ] [[package]] -name = "typenum" -version = "1.18.0" +name = "time-macros-impl" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +dependencies = [ + "generic-array", + "subtle", +] [[package]] name = "universal-hash" @@ -548,12 +2697,48 @@ dependencies = [ "subtle", ] +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -561,21 +2746,176 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.5+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wasip2", + "wit-bindgen", ] [[package]] -name = "wasip2" -version = "1.0.0+wasi-0.2.4" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "wit-bindgen", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.108", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wildmatch" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39b7d07a236abaef6607536ccfaf19b396dbe3f5110ddb73d39f4562902ed382" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -584,7 +2924,25 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -593,14 +2951,31 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -609,42 +2984,84 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -652,33 +3069,159 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "wit-bindgen" -version = "0.45.1" +name = "windows_x86_64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure", +] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index 959648d37ed..22648e30994 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -52,3 +52,11 @@ | main.rs:180:29:180:66 | ...::build(...) | secure | true | | main.rs:186:9:186:22 | [SSA] secure_cookie2 | secure | true | | main.rs:186:9:186:22 | secure_cookie2 | secure | true | +| main.rs:197:5:197:11 | [SSA] cookie1 | secure | false | +| main.rs:197:5:197:11 | cookie1 | secure | false | +| main.rs:202:5:202:11 | [SSA] cookie2 | secure | true | +| main.rs:202:5:202:11 | cookie2 | secure | true | +| main.rs:233:5:233:11 | [SSA] cookie1 | secure | false | +| main.rs:233:5:233:11 | cookie1 | secure | false | +| main.rs:238:5:238:11 | [SSA] cookie2 | secure | true | +| main.rs:238:5:238:11 | cookie2 | secure | true | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index e514828c3a0..89906056752 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -595,3 +595,16 @@ nodes | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | subpaths +testFailures +| main.rs:197:32:197:42 | //... | Missing result: Source | +| main.rs:198:64:198:95 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:206:54:206:64 | //... | Missing result: Source | +| main.rs:207:64:207:95 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:215:32:215:42 | //... | Missing result: Source | +| main.rs:216:59:216:90 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:224:62:224:72 | //... | Missing result: Source | +| main.rs:225:59:225:90 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:233:32:233:42 | //... | Missing result: Source | +| main.rs:234:65:234:96 | //... | Missing result: Alert[rust/insecure-cookie] | +| main.rs:242:58:242:68 | //... | Missing result: Source | +| main.rs:243:65:243:96 | //... | Missing result: Alert[rust/insecure-cookie] | diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index c6d33b6bba4..5cf5298f788 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -193,32 +193,36 @@ fn test_actix_web() { use actix_web::cookie::Cookie as ActixCookie; // secure set to false - let cookie1 = ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] - println!("actix-web cookie1 = '{}'", cookie1.to_string()); + let mut cookie1 = ActixCookie::new("name", "value"); + cookie1.set_secure(false); // $ Source + println!("actix-web cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] // secure set to true - let cookie2 = ActixCookie::build("name", "value").secure(true).finish(); // good + let mut cookie2 = ActixCookie::new("name", "value"); + cookie2.set_secure(true); // good println!("actix-web cookie2 = '{}'", cookie2.to_string()); // secure left as default - let cookie3 = ActixCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] - println!("actix-web cookie3 = '{}'", cookie3.to_string()); + let cookie3 = ActixCookie::new("name", "value"); // $ Source + println!("actix-web cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] } fn test_poem() { use poem::web::cookie::Cookie as PoemCookie; // secure set to false - let cookie1 = PoemCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] - println!("poem cookie1 = '{}'", cookie1.to_string()); + let mut cookie1 = PoemCookie::new_with_str("name", "value"); + cookie1.set_secure(false); // $ Source + println!("poem cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] // secure set to true - let cookie2 = PoemCookie::build("name", "value").secure(true).finish(); // good + let mut cookie2 = PoemCookie::new_with_str("name", "value"); + cookie2.set_secure(true); // good println!("poem cookie2 = '{}'", cookie2.to_string()); // secure left as default - let cookie3 = PoemCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] - println!("poem cookie3 = '{}'", cookie3.to_string()); + let cookie3 = PoemCookie::new_with_str("name", "value"); // $ Source + println!("poem cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] } fn test_http_types() { diff --git a/rust/ql/test/query-tests/security/CWE-614/options.yml b/rust/ql/test/query-tests/security/CWE-614/options.yml index 7c267c5bfb0..92ddac2a86d 100644 --- a/rust/ql/test/query-tests/security/CWE-614/options.yml +++ b/rust/ql/test/query-tests/security/CWE-614/options.yml @@ -2,6 +2,6 @@ qltest_cargo_check: true qltest_dependencies: - cookie = { version = "0.18.1", features = ["percent-encode", "signed", "private"] } - biscotti = { version = "0.4.3" } - - actix-web = { version = "4" } - - poem = { version = "3" } - - http-types = { version = "2" } + - actix-web = { version = "4", features = ["cookies"] } + - poem = { version = "3", features = ["cookie"] } + - http-types = { version = "2", features = ["cookies"] } From c4d23d16edfde2566c4986e4dd7b7a177940886d Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 09:37:33 +0100 Subject: [PATCH 529/965] Actions: dont fail if no JS/TS code was found --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 6 ++++-- .../src/com/semmle/js/extractor/EnvironmentVariables.java | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 8d00712b653..23f15bcf35f 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -489,13 +489,15 @@ public class AutoBuild { diagnosticsToClose.forEach(DiagnosticWriter::close); } - if (!hasSeenCode()) { + // Fail extraction is no relevant files were found. + if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); } else { warn("No JavaScript or TypeScript code found."); } - // ensuring that the finalize steps detects that no code was seen. + // Ensuring that the finalize steps detects that no code was seen. + // This is necessary to ensure we don't produce an overlay-base database without externs. Path srcFolder = Paths.get(EnvironmentVariables.getWipDatabase(), "src"); try { FileUtil8.recursiveDelete(srcFolder); diff --git a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java index 39dfa70b285..f2ac4227589 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java +++ b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java @@ -18,6 +18,9 @@ public class EnvironmentVariables { public static final String CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR = "CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE"; + public static final String CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR = + "CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE"; + public static final String CODEQL_DIST_ENV_VAR = "CODEQL_DIST"; /** @@ -94,4 +97,8 @@ public class EnvironmentVariables { public static String getWipDatabase() { return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR); } + + public static boolean isActionsExtractor() { + return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR) != null; + } } From 105213df032e4427f6097a981ceb2c47dd3e4e3e Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 09:51:56 +0100 Subject: [PATCH 530/965] Update javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 23f15bcf35f..5deb786bc92 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -489,7 +489,7 @@ public class AutoBuild { diagnosticsToClose.forEach(DiagnosticWriter::close); } - // Fail extraction is no relevant files were found. + // Fail extraction if no relevant files were found. if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); From 81bb07a7ba0ee715df7c2dfd3e6344065489402d Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 11:45:20 +0100 Subject: [PATCH 531/965] JS: Fix check to account for override in tests The code was written on the assumption that 'seenCode' implies 'seenFiles' but the unit test override 'hasSeenCode()' to always return true. Which meant we would start taking this branch in the unit tests. --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 5deb786bc92..416fa237e97 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -490,7 +490,10 @@ public class AutoBuild { } // Fail extraction if no relevant files were found. - if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { + boolean seenRelevantFiles = EnvironmentVariables.isActionsExtractor() + ? seenFiles // assume all files are relevant for Actions extractor + : hasSeenCode(); + if (!seenRelevantFiles) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); } else { From 6790684767142d2c86ae9593c21dac220fadd772 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 13:12:12 +0100 Subject: [PATCH 532/965] Merge pull request #20752 from asgerf/actions/dont-fail-if-no-js Actions: don't fail if no JS/TS code was found --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 9 +++++++-- .../com/semmle/js/extractor/EnvironmentVariables.java | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 8d00712b653..416fa237e97 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -489,13 +489,18 @@ public class AutoBuild { diagnosticsToClose.forEach(DiagnosticWriter::close); } - if (!hasSeenCode()) { + // Fail extraction if no relevant files were found. + boolean seenRelevantFiles = EnvironmentVariables.isActionsExtractor() + ? seenFiles // assume all files are relevant for Actions extractor + : hasSeenCode(); + if (!seenRelevantFiles) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); } else { warn("No JavaScript or TypeScript code found."); } - // ensuring that the finalize steps detects that no code was seen. + // Ensuring that the finalize steps detects that no code was seen. + // This is necessary to ensure we don't produce an overlay-base database without externs. Path srcFolder = Paths.get(EnvironmentVariables.getWipDatabase(), "src"); try { FileUtil8.recursiveDelete(srcFolder); diff --git a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java index 39dfa70b285..f2ac4227589 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java +++ b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java @@ -18,6 +18,9 @@ public class EnvironmentVariables { public static final String CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR = "CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE"; + public static final String CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR = + "CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE"; + public static final String CODEQL_DIST_ENV_VAR = "CODEQL_DIST"; /** @@ -94,4 +97,8 @@ public class EnvironmentVariables { public static String getWipDatabase() { return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR); } + + public static boolean isActionsExtractor() { + return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR) != null; + } } From b6002558354605bf7f1242ae67534c1d5df79128 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 13:35:40 +0200 Subject: [PATCH 533/965] C#: Enable overlay compilation in lib/qlpack.yml. --- csharp/ql/lib/qlpack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 92a08088be7..f8ee05e306f 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -18,3 +18,4 @@ dataExtensions: - ext/*.model.yml - ext/generated/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true From bcc6234a60a45bbacc40b4c5b30acda450dbe852 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 29 Oct 2025 15:49:43 +0100 Subject: [PATCH 534/965] C#: Fix bad join due to overlay compilation. --- csharp/ql/lib/semmle/code/csharp/Conversion.qll | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Conversion.qll b/csharp/ql/lib/semmle/code/csharp/Conversion.qll index 7a1314abe16..99c58ee51c6 100644 --- a/csharp/ql/lib/semmle/code/csharp/Conversion.qll +++ b/csharp/ql/lib/semmle/code/csharp/Conversion.qll @@ -719,6 +719,15 @@ private Type convTypeParameterBase(TypeParameter tp) { result = getATypeParameterFromConstraints+(tp) } +pragma[noinline] +private Class typeConstraintToBaseType(TypeParameterConstraints tpc) { + tpc.hasValueTypeConstraint() and result instanceof SystemValueTypeClass + or + result = tpc.getATypeConstraint() + or + tpc.hasRefTypeConstraint() and result instanceof ObjectType +} + /** * 10.1.5: Candidates for the effective base class of type parameter `tp`. * @@ -731,13 +740,9 @@ private Class effectiveBaseClassCandidate(TypeParameter tp) { not hasPrimaryConstraints(tp) and result instanceof ObjectType or exists(TypeParameterConstraints tpc | tpc = tp.getConstraints() | - tpc.hasValueTypeConstraint() and result instanceof SystemValueTypeClass - or - result = tpc.getATypeConstraint() + result = typeConstraintToBaseType(tpc) or result = effectiveBaseClassCandidate(tpc.getATypeConstraint()) - or - tpc.hasRefTypeConstraint() and result instanceof ObjectType ) } From b48ce8dec2143c3f5cea1aae334c518eb901e460 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 12 Sep 2025 10:38:19 +0200 Subject: [PATCH 535/965] C#: Add overlay builtins to the dbscheme. --- csharp/ql/lib/semmlecode.csharp.dbscheme | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index 66044cfa5bb..605f8505340 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -194,6 +194,24 @@ externalData( sourceLocationPrefix( string prefix: string ref); +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + /* * C# dbscheme */ From cfb68436f2ce4acf19e0f830fc912d522e111cde Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 12 Sep 2025 10:45:20 +0200 Subject: [PATCH 536/965] C#: Add upgrade- and downgrade scripts. --- .../old.dbscheme | 1478 +++++++++++++++++ .../semmlecode.csharp.dbscheme | 1460 ++++++++++++++++ .../upgrade.properties | 4 + .../old.dbscheme | 1460 ++++++++++++++++ .../semmlecode.csharp.dbscheme | 1478 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 5882 insertions(+) create mode 100644 csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme create mode 100644 csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme create mode 100644 csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties create mode 100644 csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme create mode 100644 csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme create mode 100644 csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme new file mode 100644 index 00000000000..605f8505340 --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..66044cfa5bb --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme @@ -0,0 +1,1460 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties new file mode 100644 index 00000000000..f9e0669d521 --- /dev/null +++ b/csharp/downgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties @@ -0,0 +1,4 @@ +description: Delete databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme new file mode 100644 index 00000000000..66044cfa5bb --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/old.dbscheme @@ -0,0 +1,1460 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..605f8505340 --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/semmlecode.csharp.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties new file mode 100644 index 00000000000..52b67d65af7 --- /dev/null +++ b/csharp/ql/lib/upgrades/66044cfa5bbf2ecfabd06ead25e91db2bdd79764/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full From 9026a5a82afc258f7c9140b7652a4b77a766ccac Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 12 Sep 2025 10:47:41 +0200 Subject: [PATCH 537/965] C#: Turn on overlay support in codeql-extractor.yml. --- csharp/codeql-extractor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/codeql-extractor.yml b/csharp/codeql-extractor.yml index 786b78950ca..da7d665f7a7 100644 --- a/csharp/codeql-extractor.yml +++ b/csharp/codeql-extractor.yml @@ -4,6 +4,7 @@ aliases: display_name: "C#" version: 1.22.1 column_kind: "utf16" +overlay_support_version: 20250626 extra_env_vars: DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" build_modes: From aa805580e32cd80f8a5b69bc3cae0ee5f2471b21 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 12 Sep 2025 17:07:43 +0200 Subject: [PATCH 538/965] C#: Add functionality to detect overlay mode and integrate in extraction context. --- .../Extractor.cs | 3 +- .../Extractor/Analyser.cs | 10 +- .../Extractor/BinaryLogAnalyser.cs | 2 +- .../Extractor/Context.cs | 9 +- .../Extractor/OverlayInfo.cs | 124 ++++++++++++++++++ .../Extractor/StandaloneAnalyser.cs | 4 +- .../Extractor/TracingAnalyser.cs | 2 +- .../Semmle.Util/EnvironmentVariables.cs | 14 ++ 8 files changed, 159 insertions(+), 9 deletions(-) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index 9ddf7686bad..f8463ae1bc6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -143,7 +143,8 @@ namespace Semmle.Extraction.CSharp.Standalone var pathTransformer = new PathTransformer(canonicalPathCache); var progressMonitor = new ExtractionProgress(logger); - using var analyser = new StandaloneAnalyser(progressMonitor, fileLogger, pathTransformer, canonicalPathCache, false); + var overlayInfo = OverlayInfoFactory.Make(logger, options.SrcDir); + using var analyser = new StandaloneAnalyser(progressMonitor, fileLogger, pathTransformer, canonicalPathCache, overlayInfo, false); try { var extractionInput = new ExtractionInput(dependencyManager.AllSourceFiles, dependencyManager.ReferenceFiles, dependencyManager.CompilationInfos); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 4c8660c172a..1ba8827c9d2 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -41,16 +41,20 @@ namespace Semmle.Extraction.CSharp public IPathCache PathCache { get; } + public IOverlayInfo OverlayInfo { get; } + protected Analyser( IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, + IOverlayInfo overlayInfo, bool addAssemblyTrapPrefix) { Logger = logger; PathTransformer = pathTransformer; PathCache = pathCache; + OverlayInfo = overlayInfo; this.addAssemblyTrapPrefix = addAssemblyTrapPrefix; this.progressMonitor = pm; @@ -158,7 +162,7 @@ namespace Semmle.Extraction.CSharp if (compilation.GetAssemblyOrModuleSymbol(r) is IAssemblySymbol assembly) { - var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), OverlayInfo, addAssemblyTrapPrefix); foreach (var module in assembly.Modules) { @@ -195,7 +199,7 @@ namespace Semmle.Extraction.CSharp var currentTaskId = IncrementTaskCount(); ReportProgressTaskStarted(currentTaskId, sourcePath); - var cx = new Context(ExtractionContext, compilation, trapWriter, new SourceScope(tree), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new SourceScope(tree), OverlayInfo, addAssemblyTrapPrefix); // Ensure that the file itself is populated in case the source file is totally empty var root = tree.GetRoot(); Entities.File.Create(cx, root.SyntaxTree.FilePath); @@ -234,7 +238,7 @@ namespace Semmle.Extraction.CSharp var assembly = compilation.Assembly; var trapWriter = transformedAssemblyPath.CreateTrapWriter(Logger, options.TrapCompression, discardDuplicates: false); compilationTrapFile = trapWriter; // Dispose later - var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(ExtractionContext, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), OverlayInfo, addAssemblyTrapPrefix); compilationEntity = Entities.Compilation.Create(cx); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs index 6026778f2f7..7e457e24837 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/BinaryLogAnalyser.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp public class BinaryLogAnalyser : Analyser { public BinaryLogAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, new TrivialOverlayInfo(), addAssemblyTrapPrefix) { } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs index 74b3b186b51..cc80c57a1d7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs @@ -29,6 +29,12 @@ namespace Semmle.Extraction.CSharp /// public bool ShouldAddAssemblyTrapPrefix { get; } + /// + /// Holds if trap only should be created for types and member signatures (and not for expressions and statements). + /// This is the case for all unchanged files, when running in overlay mode. + /// + public bool OnlyScaffold { get; } + public IList TrapStackSuffix { get; } = new List(); private int GetNewId() => TrapWriter.IdCounter++; @@ -523,13 +529,14 @@ namespace Semmle.Extraction.CSharp internal CommentProcessor CommentGenerator { get; } = new CommentProcessor(); - public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, bool shouldAddAssemblyTrapPrefix = false) + public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, IOverlayInfo overlayInfo, bool shouldAddAssemblyTrapPrefix = false) { ExtractionContext = extractionContext; TrapWriter = trapWriter; ShouldAddAssemblyTrapPrefix = shouldAddAssemblyTrapPrefix; Compilation = c; this.scope = scope; + OnlyScaffold = overlayInfo.IsOverlayMode && scope is SourceScope ss && overlayInfo.OnlyMakeScaffold(ss.SourceTree.FilePath); } public bool FromSource => scope is SourceScope; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs new file mode 100644 index 00000000000..223d5426e96 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.Json; +using Semmle.Util; +using Semmle.Util.Logging; + +namespace Semmle.Extraction.CSharp +{ + public interface IOverlayInfo + { + /// + /// True, if the extractor is running in overlay mode. + /// + bool IsOverlayMode { get; } + + /// + /// Returns true, if the given file is not in the set of changed files. + /// + /// A source file path + bool OnlyMakeScaffold(string filePath); + } + + + /// + /// An instance of this class is used when overlay is not enabled. + /// + public class TrivialOverlayInfo : IOverlayInfo + { + public TrivialOverlayInfo() { } + + public bool IsOverlayMode { get; } = false; + + public bool OnlyMakeScaffold(string filePath) => false; + } + + /// + /// An instance of this class is used for detecting + /// (1) Whether overlay is enabled. + /// (2) Fetch the changed files that should be fully extracted as a part + /// of the overlay extraction. + /// + public class OverlayInfo : IOverlayInfo + { + private readonly ILogger logger; + private readonly HashSet changedFiles; + private readonly string srcDir; + + public OverlayInfo(ILogger logger, string srcDir, string json) + { + this.logger = logger; + this.srcDir = srcDir; + changedFiles = ParseJson(json); + } + + public bool IsOverlayMode { get; } = true; + + public bool OnlyMakeScaffold(string filePath) => !changedFiles.Contains(filePath); + + /// + /// Private type only used to parse overlay changes JSON files. + /// + /// The content of such a file has the format + /// { + /// "changes": [ + /// "app/controllers/about_controller.xyz", + /// "app/models/about.xyz" + /// ] + /// } + /// + public record ChangedFiles + { + public string[]? Changes { get; set; } + } + + private HashSet ParseJson(string json) + { + try + { + var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + var obj = JsonSerializer.Deserialize(json, options); + return obj?.Changes is string[] changes + ? changes.Select(change => Path.Join(srcDir, change)).ToHashSet() + : []; + } + catch (JsonException) + { + logger.LogError("Overlay: Unable to parse the JSON content from the overlay changes file."); + return []; + } + } + } + + public static class OverlayInfoFactory + { + /// + /// The returned object is used to decide, whether + /// (1) The extractor is running in overlay mode. + /// (2) Which files to only extract scaffolds for (unchanged files) + /// + /// A logger + /// The (overlay) source directory + /// An overlay information object. + public static IOverlayInfo Make(ILogger logger, string srcDir) + { + if (EnvironmentVariables.GetOverlayChangesFilePath() is string path) + { + logger.LogInfo($"Overlay: Reading overlay changes from file '{path}'."); + try + { + var json = File.ReadAllText(path); + return new OverlayInfo(logger, srcDir, json); + } + catch + { + logger.LogError("Overlay: Unexpected error while reading the overlay changes file."); + } + } + + logger.LogInfo("Overlay: Overlay mode not enabled."); + return new TrivialOverlayInfo(); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs index 3ce315b372f..ff3c2889bc9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs @@ -8,8 +8,8 @@ namespace Semmle.Extraction.CSharp { public class StandaloneAnalyser : Analyser { - public StandaloneAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + public StandaloneAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, IOverlayInfo overlayInfo, bool addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, overlayInfo, addAssemblyTrapPrefix) { } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs index 1139d7cdd9a..8a9856f1d31 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs @@ -14,7 +14,7 @@ namespace Semmle.Extraction.CSharp private bool init; public TracingAnalyser(IProgressMonitor pm, ILogger logger, PathTransformer pathTransformer, IPathCache pathCache, bool addAssemblyTrapPrefix) - : base(pm, logger, pathTransformer, pathCache, addAssemblyTrapPrefix) + : base(pm, logger, pathTransformer, pathCache, new TrivialOverlayInfo(), addAssemblyTrapPrefix) { } diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index 1b0e40790ff..561e38e1aa3 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -53,5 +53,19 @@ namespace Semmle.Util { return Environment.GetEnvironmentVariable(name)?.Split(" ", StringSplitOptions.RemoveEmptyEntries) ?? []; } + + /// + /// Used to + /// (1) Detect whether the extractor should run in overlay mode. + /// (2) Returns the path to the file containing a list of changed files + /// in JSON format. + /// + /// The environment variable is only set in case the extraction is supposed to be + /// performed in overlay mode. Furthermore, this only applies to buildless extraction. + /// + public static string? GetOverlayChangesFilePath() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_CHANGES"); + } } } From cab9d81376a4c23115c0e0581d80374286f86783 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 12 Sep 2025 17:08:11 +0200 Subject: [PATCH 539/965] C#: Add unit test. --- .../Semmle.Extraction.Tests/OverlayInfo.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs diff --git a/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs b/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs new file mode 100644 index 00000000000..6fde82541c1 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.Tests/OverlayInfo.cs @@ -0,0 +1,31 @@ +using Xunit; +using Semmle.Extraction.CSharp; +using System.IO; + +namespace Semmle.Extraction.Tests +{ + public class OverlayTests + { + [Fact] + public void TestOverlay() + { + var logger = new LoggerStub(); + var json = + """ + { + "changes": [ + "app/controllers/about_controller.xyz", + "app/models/about.xyz" + ] + } + """; + + var overlay = new OverlayInfo(logger, "overlay/source/path", json); + + Assert.True(overlay.IsOverlayMode); + Assert.False(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/controllers/about_controller.xyz")); + Assert.False(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/models/about.xyz")); + Assert.True(overlay.OnlyMakeScaffold("overlay/source/path" + Path.DirectorySeparatorChar + "app/models/unchanged.xyz")); + } + } +} From 61f6512c74ad52dfabef2654d6a893b3b532df7f Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 17 Sep 2025 14:30:19 +0200 Subject: [PATCH 540/965] C#: Sprinkle uses of OnlyScaffold to extract less when in overlay mode. --- .../Semmle.Extraction.CSharp/Entities/Attribute.cs | 6 ++++++ .../Entities/Base/CachedSymbol.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/CommentBlock.cs | 5 ++++- .../Semmle.Extraction.CSharp/Entities/CommentLine.cs | 5 ++++- .../Semmle.Extraction.CSharp/Entities/Constructor.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/Field.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/Indexer.cs | 8 +++++++- .../Semmle.Extraction.CSharp/Entities/Method.cs | 4 ++-- .../Entities/OrdinaryMethod.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/Parameter.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/Property.cs | 2 +- .../Entities/Types/NamedType.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/Types/Type.cs | 2 +- .../Entities/Types/TypeParameter.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/UserOperator.cs | 2 +- .../Entities/UsingDirective.cs | 10 ++++++++-- .../Semmle.Extraction.CSharp/Extractor/Context.cs | 3 ++- 17 files changed, 43 insertions(+), 18 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs index 0e1b756a37c..24464e50f8e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs @@ -59,6 +59,12 @@ namespace Semmle.Extraction.CSharp.Entities { var type = Type.Create(Context, Symbol.AttributeClass); trapFile.attributes(this, kind, type.TypeRef, entity); + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.attribute_location, this, Location); if (attributeSyntax is not null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs index 92861e97fdd..f5ac9a2f7b8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs @@ -109,7 +109,7 @@ namespace Semmle.Extraction.CSharp.Entities /// protected void BindComments() { - if (!Symbol.IsImplicitlyDeclared && IsSourceDeclaration && Symbol.FromSource()) + if (!Symbol.IsImplicitlyDeclared && IsSourceDeclaration && Symbol.FromSource() && !Context.OnlyScaffold) Context.BindComments(this, FullLocation); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs index 4e63f5535aa..23a878c3549 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs @@ -11,7 +11,10 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { trapFile.commentblock(this); - WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); + if (!Context.OnlyScaffold) + { + WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); + } Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child)); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs index 13cd002da79..639be404852 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs @@ -23,7 +23,10 @@ namespace Semmle.Extraction.CSharp.Entities { location = Context.CreateLocation(Location); trapFile.commentline(this, Type == CommentLineType.MultilineContinuation ? CommentLineType.Multiline : Type, Text, RawText); - WriteLocationToTrap(trapFile.commentline_location, this, location); + if (!Context.OnlyScaffold) + { + WriteLocationToTrap(trapFile.commentline_location, this, location); + } } public override Microsoft.CodeAnalysis.Location? ReportingLocation => location?.Symbol; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs index 462fd806788..2f4ceeb4ebe 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs @@ -179,7 +179,7 @@ namespace Semmle.Extraction.CSharp.Entities /// private bool IsBestSourceLocation => ReportingLocation is not null && Context.IsLocationInContext(ReportingLocation); - private bool MakeSynthetic => IsPrimary || (IsDefault && IsBestSourceLocation); + private bool MakeSynthetic => (IsPrimary || (IsDefault && IsBestSourceLocation)) && !Context.OnlyScaffold; [return: NotNullIfNotNull(nameof(constructor))] public static new Constructor? Create(Context cx, IMethodSymbol? constructor) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index 75a35c2a5f0..3a8876fde09 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -54,7 +54,7 @@ namespace Semmle.Extraction.CSharp.Entities WriteLocationsToTrap(trapFile.field_location, this, Locations); } - if (!IsSourceDeclaration || !Symbol.FromSource()) + if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) return; Context.BindComments(this, Location.Symbol); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs index e6a188a6ab1..2be022da71c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs @@ -42,7 +42,7 @@ namespace Semmle.Extraction.CSharp.Entities Parameter.Create(Context, Symbol.Parameters[i], this, original); } - if (IsSourceDeclaration) + if (IsSourceDeclaration && !Context.OnlyScaffold) { var expressionBody = ExpressionBody; if (expressionBody is not null) @@ -55,6 +55,12 @@ namespace Semmle.Extraction.CSharp.Entities PopulateAttributes(); PopulateModifiers(trapFile); + + if (Context.OnlyScaffold) + { + return; + } + BindComments(); var declSyntaxReferences = IsSourceDeclaration diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index 6ba5cca01cf..e0ba5660778 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -48,7 +48,7 @@ namespace Semmle.Extraction.CSharp.Entities protected virtual void PopulateMethodBody(TextWriter trapFile) { - if (!IsSourceDeclaration) + if (!IsSourceDeclaration || Context.OnlyScaffold) return; var block = Block; @@ -94,7 +94,7 @@ namespace Semmle.Extraction.CSharp.Entities { trapFile.explicitly_implements(this, explicitInterface.TypeRef); - if (IsSourceDeclaration) + if (IsSourceDeclaration && !Context.OnlyScaffold) { foreach (var syntax in Symbol.DeclaringSyntaxReferences.Select(d => d.GetSyntax()).OfType()) TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs index af4cd1a10ce..678dbb68f2c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs @@ -34,7 +34,7 @@ namespace Semmle.Extraction.CSharp.Entities var returnType = Type.Create(Context, Symbol.ReturnType); trapFile.methods(this, Name, ContainingType, returnType.TypeRef, OriginalDefinition); - if (IsSourceDeclaration) + if (IsSourceDeclaration && !Context.OnlyScaffold) { foreach (var declaration in Symbol.DeclaringSyntaxReferences.Select(s => s.GetSyntax()).OfType()) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs index 8b099261a10..ba57caef4ee 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs @@ -140,7 +140,7 @@ namespace Semmle.Extraction.CSharp.Entities Context.PopulateLater(defaultValueExpressionCreation); } - if (!IsSourceDeclaration || !Symbol.FromSource()) + if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) return; BindComments(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index ccffa1d9511..dd8275c1028 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -74,7 +74,7 @@ namespace Semmle.Extraction.CSharp.Entities WriteLocationsToTrap(trapFile.property_location, this, Locations); } - if (IsSourceDeclaration && Symbol.FromSource()) + if (IsSourceDeclaration && Symbol.FromSource() && !Context.OnlyScaffold) { var expressionBody = ExpressionBody; if (expressionBody is not null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs index d7eab644eeb..dcf2bffe095 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs @@ -81,7 +81,7 @@ namespace Semmle.Extraction.CSharp.Entities } // Class location - if (!Symbol.IsGenericType || Symbol.IsReallyUnbound()) + if ((!Symbol.IsGenericType || Symbol.IsReallyUnbound()) && !Context.OnlyScaffold) { WriteLocationsToTrap(trapFile.type_location, this, Locations); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs index 266fbfa5d60..3e79a8f8101 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Type.cs @@ -222,7 +222,7 @@ namespace Semmle.Extraction.CSharp.Entities private IEnumerable GetBaseTypeDeclarations() { - if (!IsSourceDeclaration || !Symbol.FromSource()) + if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) { return Enumerable.Empty(); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs index 8c7c0edde76..1670ac48101 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs @@ -32,7 +32,7 @@ namespace Semmle.Extraction.CSharp.Entities WriteLocationsToTrap(trapFile.type_location, this, locations); } - if (IsSourceDeclaration) + if (IsSourceDeclaration && !Context.OnlyScaffold) { var declSyntaxReferences = Symbol.DeclaringSyntaxReferences .Select(d => d.GetSyntax()) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs index 40a40aab556..113605602a4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs @@ -31,7 +31,7 @@ namespace Semmle.Extraction.CSharp.Entities WriteLocationsToTrap(trapFile.operator_location, this, Locations); } - if (IsSourceDeclaration) + if (IsSourceDeclaration && !Context.OnlyScaffold) { var declSyntaxReferences = Symbol.DeclaringSyntaxReferences.Select(s => s.GetSyntax()).ToArray(); foreach (var declaration in declSyntaxReferences.OfType()) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs index 04fe80dbcde..fe308d778f6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs @@ -32,7 +32,10 @@ namespace Semmle.Extraction.CSharp.Entities { var ns = Namespace.Create(Context, namespaceSymbol); trapFile.using_namespace_directives(this, ns); - trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); + if (!Context.OnlyScaffold) + { + trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); + } } else { @@ -46,7 +49,10 @@ namespace Semmle.Extraction.CSharp.Entities // A "using static" var m = Type.Create(Context, (ITypeSymbol?)info.Symbol); trapFile.using_static_directives(this, m.TypeRef); - trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); + if (!Context.OnlyScaffold) + { + trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); + } } if (node.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword)) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs index cc80c57a1d7..44ef1efabb6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs @@ -559,7 +559,8 @@ namespace Semmle.Extraction.CSharp public bool ExtractLocation(ISymbol symbol) => SymbolEqualityComparer.Default.Equals(symbol, symbol.OriginalDefinition) && - scope.InScope(symbol); + scope.InScope(symbol) && + !OnlyScaffold; /// /// Gets the locations of the symbol that are either From 76ac2dff26c7c8f3169d17e1f406b94065ba667a Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 21 Oct 2025 14:24:16 +0200 Subject: [PATCH 541/965] C#: Write overlay metadata at end of extraction. --- .../Extractor.cs | 15 +++++++++++++++ .../extractor/Semmle.Util/EnvironmentVariables.cs | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index f8463ae1bc6..573c8954bf4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -53,6 +54,20 @@ namespace Semmle.Extraction.CSharp.Standalone } progressMonitor.MissingSummary(analyser.ExtractionContext!.MissingTypes.Count(), analyser.ExtractionContext!.MissingNamespaces.Count()); + + // If extracting a base database, we need to create an empty metadata file. + if (EnvironmentVariables.GetBaseMetaDataOutPath() is string baseMetaDataOutPath) + { + try + { + analyser.Logger.LogInfo($"Creating base metadata file at {baseMetaDataOutPath}"); + File.WriteAllText(baseMetaDataOutPath, string.Empty); + } + catch (Exception ex) + { + analyser.Logger.LogError($"Failed to create base metadata file: {ex.Message}"); + } + } }); } finally diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index 561e38e1aa3..edce64a53fe 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -67,5 +67,14 @@ namespace Semmle.Util { return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_CHANGES"); } + + /// + /// If the environment variable is set, the extractor is being called to extract a base database. + /// Its value will be a path, and the extractor must create either a file or directory at that location. + /// + public static string? GetBaseMetaDataOutPath() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_BASE_METADATA_OUT"); + } } } From 121c1500cab7b3c4064a27a9e59b1912221815c3 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 23 Oct 2025 16:33:40 +0200 Subject: [PATCH 542/965] C#: Define discarding predicates for expressions, statements, locations and some named TRAP entities. --- csharp/ql/lib/csharp.qll | 1 + csharp/ql/lib/semmle/code/csharp/Overlay.qll | 227 +++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 csharp/ql/lib/semmle/code/csharp/Overlay.qll diff --git a/csharp/ql/lib/csharp.qll b/csharp/ql/lib/csharp.qll index dc187fc8d92..baa9d2a811d 100644 --- a/csharp/ql/lib/csharp.qll +++ b/csharp/ql/lib/csharp.qll @@ -36,6 +36,7 @@ import semmle.code.csharp.controlflow.ControlFlowGraph import semmle.code.csharp.dataflow.DataFlow import semmle.code.csharp.dataflow.TaintTracking import semmle.code.csharp.dataflow.SSA +private import semmle.code.csharp.Overlay /** Whether the source was extracted without a build command. */ predicate extractionIsStandalone() { exists(SourceFile f | f.extractedStandalone()) } diff --git a/csharp/ql/lib/semmle/code/csharp/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/Overlay.qll new file mode 100644 index 00000000000..94938c4163f --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/Overlay.qll @@ -0,0 +1,227 @@ +/** + * Defines entity discard predicates for C# overlay analysis. + */ + +/** + * Holds always for the overlay variant and never for the base variant. + * This local predicate is used to define local predicates that behave + * differently for the base and overlay variant. + */ +overlay[local] +predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +/** + * An abstract base class for all elements that can be discarded from the base. + */ +overlay[local] +abstract private class DiscardableEntity extends @element { + /** Gets the path to the file in which this element occurs. */ + abstract string getPath(); + + /** Holds if this element exists in the base variant. */ + predicate existsInBase() { not isOverlay() and exists(this) } + + /** Holds if this element exists in the overlay variant. */ + predicate existsInOverlay() { isOverlay() and exists(this) } + + /** Gets a textual representation of this discardable element. */ + string toString() { none() } +} + +/** + * A class of C# database entities that use `*` IDs. + * The rest use named TRAP IDs. + */ +overlay[local] +private class StarEntity = @expr or @stmt; + +overlay[discard_entity] +private predicate discardStarEntity(@element e) { + e instanceof StarEntity and + // Entities with *-ids can exist either in base or overlay, but not both. + exists(DiscardableEntity de | de = e | + overlayChangedFiles(de.getPath()) and + de.existsInBase() + ) +} + +overlay[discard_entity] +private predicate discardNamedEntity(@element e) { + not e instanceof StarEntity and + // Entities with named IDs can exist both in base, overlay, or both. + exists(DiscardableEntity de | de = e | + overlayChangedFiles(de.getPath()) and + not de.existsInOverlay() + ) +} + +overlay[local] +private string getLocationPath(@location_default loc) { + exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) +} + +overlay[local] +private predicate discardableLocation(@location_default loc, string path) { + not isOverlay() and + path = getLocationPath(loc) +} + +// Discard locations that are in changed files from the base variant. +overlay[discard_entity] +private predicate discardLocation(@location_default loc) { + exists(string path | discardableLocation(loc, path) | overlayChangedFiles(path)) +} + +overlay[local] +private class ExprEntity extends DiscardableEntity instanceof @expr { + override string getPath() { + exists(@location_default loc | expr_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class StmtEntity extends DiscardableEntity instanceof @stmt { + override string getPath() { + exists(@location_default loc | stmt_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class UsingDirectiveEntity extends DiscardableEntity instanceof @using_directive { + override string getPath() { + exists(@location_default loc | using_directive_location(this, loc) | + result = getLocationPath(loc) + ) + } +} + +overlay[local] +private class NamespaceDeclarationEntity extends DiscardableEntity instanceof @namespace_declaration +{ + override string getPath() { + exists(@location_default loc | namespace_declaration_location(this, loc) | + result = getLocationPath(loc) + ) + } +} + +overlay[local] +private class PreprocessorDirectiveEntity extends DiscardableEntity instanceof @preprocessor_directive +{ + override string getPath() { + exists(@location_default loc | preprocessor_directive_location(this, loc) | + result = getLocationPath(loc) + ) + } +} + +overlay[local] +private class TypeEntity extends DiscardableEntity instanceof @type { + override string getPath() { + exists(@location_default loc | type_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class AttributeEntity extends DiscardableEntity instanceof @attribute { + override string getPath() { + exists(@location_default loc | attribute_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class TypeParameterConstraintsEntity extends DiscardableEntity instanceof @type_parameter_constraints +{ + override string getPath() { + exists(@location_default loc | type_parameter_constraints_location(this, loc) | + result = getLocationPath(loc) + ) + } +} + +overlay[local] +private class PropertyEntity extends DiscardableEntity instanceof @property { + override string getPath() { + exists(@location_default loc | property_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class IndexerEntity extends DiscardableEntity instanceof @indexer { + override string getPath() { + exists(@location_default loc | indexer_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class AccessorEntity extends DiscardableEntity instanceof @accessor { + override string getPath() { + exists(@location_default loc | accessor_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class EventEntity extends DiscardableEntity instanceof @event { + override string getPath() { + exists(@location_default loc | event_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class EventAccessorEntity extends DiscardableEntity instanceof @event_accessor { + override string getPath() { + exists(@location_default loc | event_accessor_location(this, loc) | + result = getLocationPath(loc) + ) + } +} + +overlay[local] +private class OperatorEntity extends DiscardableEntity instanceof @operator { + override string getPath() { + exists(@location_default loc | operator_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class MethodEntity extends DiscardableEntity instanceof @method { + override string getPath() { + exists(@location_default loc | method_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class ConstructorEntity extends DiscardableEntity instanceof @constructor { + override string getPath() { + exists(@location_default loc | constructor_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class DestructorEntity extends DiscardableEntity instanceof @destructor { + override string getPath() { + exists(@location_default loc | destructor_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class FieldEntity extends DiscardableEntity instanceof @field { + override string getPath() { + exists(@location_default loc | field_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class LocalVariableEntity extends DiscardableEntity instanceof @local_variable { + override string getPath() { + exists(@location_default loc | localvar_location(this, loc) | result = getLocationPath(loc)) + } +} + +overlay[local] +private class ParameterEntity extends DiscardableEntity instanceof @parameter { + override string getPath() { + exists(@location_default loc | param_location(this, loc) | result = getLocationPath(loc)) + } +} +// TODO: We Still need to handle commentline, comment block entities and type mentions. From 8a344215b9230054b38c80179e1220ae3b5319ce Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 27 Oct 2025 10:49:15 +0100 Subject: [PATCH 543/965] C#: Add QL overlay tests. --- .../ql/test/library-tests/overlay/base/A.cs | 66 +++++ .../library-tests/overlay/base/Program.cs | 65 +++++ .../test/library-tests/overlay/base/options | 1 + .../library-tests/overlay/base/test.expected | 263 +++++++++++++++++ .../library-tests/overlay/base/test.qlref | 1 + .../library-tests/overlay/codeql-test.yml | 3 + csharp/ql/test/library-tests/overlay/options | 1 + .../test/library-tests/overlay/overlay/A.cs | 70 +++++ .../library-tests/overlay/overlay/Program.cs | 65 +++++ .../library-tests/overlay/overlay/options | 1 + .../overlay/overlay/test.expected | 267 ++++++++++++++++++ .../library-tests/overlay/overlay/test.qlref | 1 + csharp/ql/test/library-tests/overlay/test.ql | 39 +++ .../overlay/testlocations.expected | 5 + .../library-tests/overlay/testlocations.ql | 32 +++ 15 files changed, 880 insertions(+) create mode 100644 csharp/ql/test/library-tests/overlay/base/A.cs create mode 100644 csharp/ql/test/library-tests/overlay/base/Program.cs create mode 100644 csharp/ql/test/library-tests/overlay/base/options create mode 100644 csharp/ql/test/library-tests/overlay/base/test.expected create mode 100644 csharp/ql/test/library-tests/overlay/base/test.qlref create mode 100644 csharp/ql/test/library-tests/overlay/codeql-test.yml create mode 100644 csharp/ql/test/library-tests/overlay/options create mode 100644 csharp/ql/test/library-tests/overlay/overlay/A.cs create mode 100644 csharp/ql/test/library-tests/overlay/overlay/Program.cs create mode 100644 csharp/ql/test/library-tests/overlay/overlay/options create mode 100644 csharp/ql/test/library-tests/overlay/overlay/test.expected create mode 100644 csharp/ql/test/library-tests/overlay/overlay/test.qlref create mode 100644 csharp/ql/test/library-tests/overlay/test.ql create mode 100644 csharp/ql/test/library-tests/overlay/testlocations.expected create mode 100644 csharp/ql/test/library-tests/overlay/testlocations.ql diff --git a/csharp/ql/test/library-tests/overlay/base/A.cs b/csharp/ql/test/library-tests/overlay/base/A.cs new file mode 100644 index 00000000000..263824a575c --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/A.cs @@ -0,0 +1,66 @@ +using System; + +namespace ConsoleApp1 +{ + public class A + { + private string name; + public A(string x) + { + name = x; + } + + // Destructor + ~A() + { + Console.WriteLine("Destructor called!"); + } + + public string Prop { get; set; } = "Hello"; + + public object this[int i] + { + get { return new object(); } + set { } + } + + /* + * An example event + */ + public event EventHandler Clicked + { + add + { + Console.WriteLine("Handler added"); + } + remove + { + Console.WriteLine("Handler removed"); + } + } + + public static A operator +(A a, A b) + { + return a; + } + + [MyObsolete] + public void ObsoleteMethod() { } + + public int OldMethod(int x) + { + var y = x + 1; + return y; + } + + public override string ToString() + { + var x = $"A: {name}"; + return x; + } + } + + public class MyObsoleteAttribute : Attribute { } + + public class B { } +} diff --git a/csharp/ql/test/library-tests/overlay/base/Program.cs b/csharp/ql/test/library-tests/overlay/base/Program.cs new file mode 100644 index 00000000000..bc57d682a26 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/Program.cs @@ -0,0 +1,65 @@ +using System; + +namespace ConsoleApp1 +{ + internal class Program + { + public static void Main(string[] args) + { + if (args.Length == 0) + { + Console.WriteLine("Print usage instructions here."); + return; + } + var x = args[0]; + var a = new A(x); + Console.WriteLine(a.ToString()); + } + + private string programName; + + public Program(string x) + { + programName = x; + } + + // Program destructor + ~Program() + { + Console.WriteLine("Program destructor called!"); + } + + public string ProgramProp { get; set; } = "Hello World!"; + + public string this[int i] + { + get { return string.Empty; } + set { } + } + + /* + * A program event. + */ + public event EventHandler ProgramClicked + { + add + { + Console.WriteLine("Program handler added"); + } + remove + { + Console.WriteLine("Program handler removed"); + } + } + + public static Program operator -(Program a, Program b) + { + return b; + } + + [Program] + public void AnnotatedMethod() { } + } + + public class ProgramAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/base/options b/csharp/ql/test/library-tests/overlay/base/options new file mode 100644 index 00000000000..7ba3811b2af --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/base/test.expected b/csharp/ql/test/library-tests/overlay/base/test.expected new file mode 100644 index 00000000000..93c15eacc92 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/test.expected @@ -0,0 +1,263 @@ +expressions +| A.cs:8:16:8:16 | call to constructor Object | +| A.cs:10:13:10:16 | access to field name | +| A.cs:10:13:10:16 | this access | +| A.cs:10:13:10:20 | ... = ... | +| A.cs:10:20:10:20 | access to parameter x | +| A.cs:16:13:16:19 | access to type Console | +| A.cs:16:13:16:51 | call to method WriteLine | +| A.cs:16:31:16:50 | "Destructor called!" | +| A.cs:19:23:19:26 | access to property Prop | +| A.cs:19:23:19:26 | this access | +| A.cs:19:42:19:50 | ... = ... | +| A.cs:19:44:19:50 | "Hello" | +| A.cs:23:26:23:37 | object creation of type Object | +| A.cs:34:17:34:23 | access to type Console | +| A.cs:34:17:34:50 | call to method WriteLine | +| A.cs:34:35:34:49 | "Handler added" | +| A.cs:38:17:38:23 | access to type Console | +| A.cs:38:17:38:52 | call to method WriteLine | +| A.cs:38:35:38:51 | "Handler removed" | +| A.cs:44:20:44:20 | access to parameter a | +| A.cs:52:17:52:17 | access to local variable y | +| A.cs:52:17:52:25 | Int32 y = ... | +| A.cs:52:21:52:21 | access to parameter x | +| A.cs:52:21:52:25 | ... + ... | +| A.cs:52:25:52:25 | 1 | +| A.cs:53:20:53:20 | access to local variable y | +| A.cs:58:17:58:17 | access to local variable x | +| A.cs:58:17:58:32 | String x = ... | +| A.cs:58:21:58:32 | $"..." | +| A.cs:58:23:58:25 | "A: " | +| A.cs:58:26:58:31 | {...} | +| A.cs:58:27:58:30 | access to field name | +| A.cs:58:27:58:30 | this access | +| A.cs:59:20:59:20 | access to local variable x | +| A.cs:63:18:63:36 | call to constructor Attribute | +| A.cs:65:18:65:18 | call to constructor Object | +| Program.cs:9:17:9:20 | access to parameter args | +| Program.cs:9:17:9:27 | access to property Length | +| Program.cs:9:17:9:32 | ... == ... | +| Program.cs:9:32:9:32 | 0 | +| Program.cs:11:17:11:23 | access to type Console | +| Program.cs:11:17:11:67 | call to method WriteLine | +| Program.cs:11:35:11:66 | "Print usage instructions here." | +| Program.cs:14:17:14:17 | access to local variable x | +| Program.cs:14:17:14:27 | String x = ... | +| Program.cs:14:21:14:24 | access to parameter args | +| Program.cs:14:21:14:27 | access to array element | +| Program.cs:14:26:14:26 | 0 | +| Program.cs:15:17:15:17 | access to local variable a | +| Program.cs:15:17:15:28 | A a = ... | +| Program.cs:15:21:15:28 | object creation of type A | +| Program.cs:15:27:15:27 | access to local variable x | +| Program.cs:16:13:16:19 | access to type Console | +| Program.cs:16:13:16:43 | call to method WriteLine | +| Program.cs:16:31:16:31 | access to local variable a | +| Program.cs:16:31:16:42 | call to method ToString | +| Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:23:13:23:23 | access to field programName | +| Program.cs:23:13:23:23 | this access | +| Program.cs:23:13:23:27 | ... = ... | +| Program.cs:23:27:23:27 | access to parameter x | +| Program.cs:29:13:29:19 | access to type Console | +| Program.cs:29:13:29:59 | call to method WriteLine | +| Program.cs:29:31:29:58 | "Program destructor called!" | +| Program.cs:32:23:32:33 | access to property ProgramProp | +| Program.cs:32:23:32:33 | this access | +| Program.cs:32:49:32:64 | ... = ... | +| Program.cs:32:51:32:64 | "Hello World!" | +| Program.cs:36:26:36:31 | access to type String | +| Program.cs:36:26:36:37 | access to field Empty | +| Program.cs:47:17:47:23 | access to type Console | +| Program.cs:47:17:47:58 | call to method WriteLine | +| Program.cs:47:35:47:57 | "Program handler added" | +| Program.cs:51:17:51:23 | access to type Console | +| Program.cs:51:17:51:60 | call to method WriteLine | +| Program.cs:51:35:51:59 | "Program handler removed" | +| Program.cs:57:20:57:20 | access to parameter b | +| Program.cs:64:18:64:33 | call to constructor Attribute | +statements +| A.cs:9:9:11:9 | {...} | +| A.cs:10:13:10:21 | ...; | +| A.cs:15:9:17:9 | {...} | +| A.cs:16:13:16:52 | ...; | +| A.cs:23:17:23:40 | {...} | +| A.cs:23:19:23:38 | return ...; | +| A.cs:24:17:24:19 | {...} | +| A.cs:33:13:35:13 | {...} | +| A.cs:34:17:34:51 | ...; | +| A.cs:37:13:39:13 | {...} | +| A.cs:38:17:38:53 | ...; | +| A.cs:43:9:45:9 | {...} | +| A.cs:44:13:44:21 | return ...; | +| A.cs:48:38:48:40 | {...} | +| A.cs:51:9:54:9 | {...} | +| A.cs:52:13:52:26 | ... ...; | +| A.cs:53:13:53:21 | return ...; | +| A.cs:57:9:60:9 | {...} | +| A.cs:58:13:58:33 | ... ...; | +| A.cs:59:13:59:21 | return ...; | +| A.cs:63:18:63:36 | {...} | +| A.cs:65:18:65:18 | {...} | +| Program.cs:8:9:17:9 | {...} | +| Program.cs:9:13:13:13 | if (...) ... | +| Program.cs:10:13:13:13 | {...} | +| Program.cs:11:17:11:68 | ...; | +| Program.cs:12:17:12:23 | return ...; | +| Program.cs:14:13:14:28 | ... ...; | +| Program.cs:15:13:15:29 | ... ...; | +| Program.cs:16:13:16:44 | ...; | +| Program.cs:22:9:24:9 | {...} | +| Program.cs:23:13:23:28 | ...; | +| Program.cs:28:9:30:9 | {...} | +| Program.cs:29:13:29:60 | ...; | +| Program.cs:36:17:36:40 | {...} | +| Program.cs:36:19:36:38 | return ...; | +| Program.cs:37:17:37:19 | {...} | +| Program.cs:46:13:48:13 | {...} | +| Program.cs:47:17:47:59 | ...; | +| Program.cs:50:13:52:13 | {...} | +| Program.cs:51:17:51:61 | ...; | +| Program.cs:56:9:58:9 | {...} | +| Program.cs:57:13:57:21 | return ...; | +| Program.cs:61:39:61:41 | {...} | +| Program.cs:64:18:64:33 | {...} | +methods +| A.cs:48:21:48:34 | ObsoleteMethod | +| A.cs:50:20:50:28 | OldMethod | +| A.cs:56:32:56:39 | ToString | +| Program.cs:7:28:7:31 | Main | +| Program.cs:61:21:61:35 | AnnotatedMethod | +types +| A.cs:5:18:5:18 | A | +| A.cs:63:18:63:36 | MyObsoleteAttribute | +| A.cs:65:18:65:18 | B | +| Program.cs:5:20:5:26 | Program | +| Program.cs:64:18:64:33 | ProgramAttribute | +parameters +| A.cs:8:25:8:25 | x | +| A.cs:19:35:19:37 | value | +| A.cs:21:32:21:32 | i | +| A.cs:21:32:21:32 | i | +| A.cs:21:32:21:32 | i | +| A.cs:24:13:24:15 | value | +| A.cs:32:13:32:15 | value | +| A.cs:36:13:36:18 | value | +| A.cs:42:38:42:38 | a | +| A.cs:42:43:42:43 | b | +| A.cs:50:34:50:34 | x | +| Program.cs:7:42:7:45 | args | +| Program.cs:21:31:21:31 | x | +| Program.cs:32:42:32:44 | value | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:37:13:37:15 | value | +| Program.cs:45:13:45:15 | value | +| Program.cs:49:13:49:18 | value | +| Program.cs:55:50:55:50 | a | +| Program.cs:55:61:55:61 | b | +operators +| A.cs:42:34:42:34 | + | +| Program.cs:55:40:55:40 | - | +constructors +| A.cs:8:16:8:16 | A | +| Program.cs:21:16:21:22 | Program | +destructors +| A.cs:14:10:14:10 | ~A | +| Program.cs:27:10:27:16 | ~Program | +fields +| A.cs:7:24:7:27 | name | +| Program.cs:19:24:19:34 | programName | +properties +| A.cs:19:23:19:26 | Prop | +| Program.cs:32:23:32:33 | ProgramProp | +indexers +| A.cs:21:23:21:26 | Item | +| Program.cs:34:23:34:26 | Item | +accessors +| A.cs:19:30:19:32 | get_Prop | +| A.cs:19:35:19:37 | set_Prop | +| A.cs:23:13:23:15 | get_Item | +| A.cs:24:13:24:15 | set_Item | +| A.cs:32:13:32:15 | add_Clicked | +| A.cs:36:13:36:18 | remove_Clicked | +| Program.cs:32:37:32:39 | get_ProgramProp | +| Program.cs:32:42:32:44 | set_ProgramProp | +| Program.cs:36:13:36:15 | get_Item | +| Program.cs:37:13:37:15 | set_Item | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +attributes +| A.cs:47:10:47:19 | [MyObsolete(...)] | +| Program.cs:60:10:60:16 | [Program(...)] | +events +| A.cs:30:35:30:41 | Clicked | +| Program.cs:43:35:43:48 | ProgramClicked | +eventAccessors +| A.cs:32:13:32:15 | add_Clicked | +| A.cs:36:13:36:18 | remove_Clicked | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +usingDirectives +| A.cs:1:1:1:13 | using ...; | +| Program.cs:1:1:1:13 | using ...; | +commentLines +| A.cs:13:9:13:21 | // ... | +| A.cs:27:9:27:10 | /* ... */ | +| A.cs:28:1:28:27 | /* ... */ | +| A.cs:29:1:29:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:40:10 | /* ... */ | +| Program.cs:41:1:41:27 | /* ... */ | +| Program.cs:42:1:42:11 | /* ... */ | +commentBlocks +| A.cs:13:9:13:21 | // ... | +| A.cs:27:9:29:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:42:11 | /* ... */ | +typeMentions +| A.cs:7:17:7:22 | String | +| A.cs:8:18:8:23 | String | +| A.cs:16:13:16:19 | Console | +| A.cs:19:16:19:21 | String | +| A.cs:21:16:21:21 | Object | +| A.cs:21:28:21:30 | Int32 | +| A.cs:23:30:23:35 | Object | +| A.cs:34:17:34:23 | Console | +| A.cs:38:17:38:23 | Console | +| A.cs:42:23:42:23 | A | +| A.cs:42:36:42:36 | A | +| A.cs:42:41:42:41 | A | +| A.cs:47:10:47:19 | MyObsoleteAttribute | +| A.cs:48:16:48:19 | Void | +| A.cs:50:16:50:18 | Int32 | +| A.cs:50:30:50:32 | Int32 | +| A.cs:52:13:52:15 | Int32 | +| A.cs:56:25:56:30 | String | +| A.cs:58:13:58:15 | String | +| A.cs:63:40:63:48 | Attribute | +| Program.cs:7:23:7:26 | Void | +| Program.cs:7:33:7:38 | String | +| Program.cs:7:33:7:40 | String[] | +| Program.cs:11:17:11:23 | Console | +| Program.cs:14:13:14:15 | String | +| Program.cs:15:13:15:15 | A | +| Program.cs:15:25:15:25 | A | +| Program.cs:16:13:16:19 | Console | +| Program.cs:19:17:19:22 | String | +| Program.cs:21:24:21:29 | String | +| Program.cs:29:13:29:19 | Console | +| Program.cs:32:16:32:21 | String | +| Program.cs:34:16:34:21 | String | +| Program.cs:34:28:34:30 | Int32 | +| Program.cs:36:26:36:31 | String | +| Program.cs:47:17:47:23 | Console | +| Program.cs:51:17:51:23 | Console | +| Program.cs:55:23:55:29 | Program | +| Program.cs:55:42:55:48 | Program | +| Program.cs:55:53:55:59 | Program | +| Program.cs:60:10:60:16 | ProgramAttribute | +| Program.cs:61:16:61:19 | Void | +| Program.cs:64:37:64:45 | Attribute | diff --git a/csharp/ql/test/library-tests/overlay/base/test.qlref b/csharp/ql/test/library-tests/overlay/base/test.qlref new file mode 100644 index 00000000000..bbce8f8b98d --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/test.qlref @@ -0,0 +1 @@ +query: ../test.ql diff --git a/csharp/ql/test/library-tests/overlay/codeql-test.yml b/csharp/ql/test/library-tests/overlay/codeql-test.yml new file mode 100644 index 00000000000..59ca317af6f --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/codeql-test.yml @@ -0,0 +1,3 @@ +overlay: + base: "base/" + overlay: "overlay/" diff --git a/csharp/ql/test/library-tests/overlay/options b/csharp/ql/test/library-tests/overlay/options new file mode 100644 index 00000000000..7ba3811b2af --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/overlay/A.cs b/csharp/ql/test/library-tests/overlay/overlay/A.cs new file mode 100644 index 00000000000..7955f810bd8 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/A.cs @@ -0,0 +1,70 @@ +using System; + +namespace ConsoleApp1 +{ + public class C { } + + public class A + { + private string name; + public A(string x) + { + name = x; + } + + // Destructor + ~A() + { + Console.WriteLine("Destructor called!"); + } + + public string Prop { get; set; } = "Hello"; + + public object this[int i] + { + get { return new object(); } + set { } + } + + /* + * An example event + */ + public event EventHandler Clicked + { + add + { + Console.WriteLine("Handler added"); + } + remove + { + Console.WriteLine("Handler removed"); + } + } + + public static A operator +(A a, A b) + { + return a; + } + + [MyObsolete] + public void ObsoleteMethod() { } + + + public override string ToString() + { + string y; + y = $"Name: {name}"; + return y; + } + + public void NewMethod() + { + if (name.EndsWith("test")) + { + name = name.ToUpper(); + } + } + } + + public class MyObsoleteAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/overlay/Program.cs b/csharp/ql/test/library-tests/overlay/overlay/Program.cs new file mode 100644 index 00000000000..bc57d682a26 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/Program.cs @@ -0,0 +1,65 @@ +using System; + +namespace ConsoleApp1 +{ + internal class Program + { + public static void Main(string[] args) + { + if (args.Length == 0) + { + Console.WriteLine("Print usage instructions here."); + return; + } + var x = args[0]; + var a = new A(x); + Console.WriteLine(a.ToString()); + } + + private string programName; + + public Program(string x) + { + programName = x; + } + + // Program destructor + ~Program() + { + Console.WriteLine("Program destructor called!"); + } + + public string ProgramProp { get; set; } = "Hello World!"; + + public string this[int i] + { + get { return string.Empty; } + set { } + } + + /* + * A program event. + */ + public event EventHandler ProgramClicked + { + add + { + Console.WriteLine("Program handler added"); + } + remove + { + Console.WriteLine("Program handler removed"); + } + } + + public static Program operator -(Program a, Program b) + { + return b; + } + + [Program] + public void AnnotatedMethod() { } + } + + public class ProgramAttribute : Attribute { } +} diff --git a/csharp/ql/test/library-tests/overlay/overlay/options b/csharp/ql/test/library-tests/overlay/overlay/options new file mode 100644 index 00000000000..7ba3811b2af --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/options @@ -0,0 +1 @@ +semmle-extractor-options: --standalone diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.expected b/csharp/ql/test/library-tests/overlay/overlay/test.expected new file mode 100644 index 00000000000..f6fb9a2ce1f --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/test.expected @@ -0,0 +1,267 @@ +expressions +| A.cs:5:18:5:18 | call to constructor Object | +| A.cs:10:16:10:16 | call to constructor Object | +| A.cs:12:13:12:16 | access to field name | +| A.cs:12:13:12:16 | this access | +| A.cs:12:13:12:20 | ... = ... | +| A.cs:12:20:12:20 | access to parameter x | +| A.cs:18:13:18:19 | access to type Console | +| A.cs:18:13:18:51 | call to method WriteLine | +| A.cs:18:31:18:50 | "Destructor called!" | +| A.cs:21:23:21:26 | access to property Prop | +| A.cs:21:23:21:26 | this access | +| A.cs:21:42:21:50 | ... = ... | +| A.cs:21:44:21:50 | "Hello" | +| A.cs:25:26:25:37 | object creation of type Object | +| A.cs:36:17:36:23 | access to type Console | +| A.cs:36:17:36:50 | call to method WriteLine | +| A.cs:36:35:36:49 | "Handler added" | +| A.cs:40:17:40:23 | access to type Console | +| A.cs:40:17:40:52 | call to method WriteLine | +| A.cs:40:35:40:51 | "Handler removed" | +| A.cs:46:20:46:20 | access to parameter a | +| A.cs:55:20:55:20 | String y | +| A.cs:56:13:56:13 | access to local variable y | +| A.cs:56:13:56:31 | ... = ... | +| A.cs:56:17:56:31 | $"..." | +| A.cs:56:19:56:24 | "Name: " | +| A.cs:56:25:56:30 | {...} | +| A.cs:56:26:56:29 | access to field name | +| A.cs:56:26:56:29 | this access | +| A.cs:57:20:57:20 | access to local variable y | +| A.cs:62:17:62:20 | access to field name | +| A.cs:62:17:62:20 | this access | +| A.cs:62:17:62:37 | call to method EndsWith | +| A.cs:62:31:62:36 | "test" | +| A.cs:64:17:64:20 | access to field name | +| A.cs:64:17:64:20 | this access | +| A.cs:64:17:64:37 | ... = ... | +| A.cs:64:24:64:27 | access to field name | +| A.cs:64:24:64:27 | this access | +| A.cs:64:24:64:37 | call to method ToUpper | +| A.cs:69:18:69:36 | call to constructor Attribute | +| Program.cs:9:17:9:20 | access to parameter args | +| Program.cs:9:17:9:27 | access to property Length | +| Program.cs:9:17:9:32 | ... == ... | +| Program.cs:9:32:9:32 | 0 | +| Program.cs:11:17:11:23 | access to type Console | +| Program.cs:11:17:11:67 | call to method WriteLine | +| Program.cs:11:35:11:66 | "Print usage instructions here." | +| Program.cs:14:17:14:17 | access to local variable x | +| Program.cs:14:17:14:27 | String x = ... | +| Program.cs:14:21:14:24 | access to parameter args | +| Program.cs:14:21:14:27 | access to array element | +| Program.cs:14:26:14:26 | 0 | +| Program.cs:15:17:15:17 | access to local variable a | +| Program.cs:15:17:15:28 | A a = ... | +| Program.cs:15:21:15:28 | object creation of type A | +| Program.cs:15:27:15:27 | access to local variable x | +| Program.cs:16:13:16:19 | access to type Console | +| Program.cs:16:13:16:43 | call to method WriteLine | +| Program.cs:16:31:16:31 | access to local variable a | +| Program.cs:16:31:16:42 | call to method ToString | +| Program.cs:21:16:21:22 | call to constructor Object | +| Program.cs:23:13:23:23 | access to field programName | +| Program.cs:23:13:23:23 | this access | +| Program.cs:23:13:23:27 | ... = ... | +| Program.cs:23:27:23:27 | access to parameter x | +| Program.cs:29:13:29:19 | access to type Console | +| Program.cs:29:13:29:59 | call to method WriteLine | +| Program.cs:29:31:29:58 | "Program destructor called!" | +| Program.cs:32:23:32:33 | access to property ProgramProp | +| Program.cs:32:23:32:33 | this access | +| Program.cs:32:49:32:64 | ... = ... | +| Program.cs:32:51:32:64 | "Hello World!" | +| Program.cs:36:26:36:31 | access to type String | +| Program.cs:36:26:36:37 | access to field Empty | +| Program.cs:47:17:47:23 | access to type Console | +| Program.cs:47:17:47:58 | call to method WriteLine | +| Program.cs:47:35:47:57 | "Program handler added" | +| Program.cs:51:17:51:23 | access to type Console | +| Program.cs:51:17:51:60 | call to method WriteLine | +| Program.cs:51:35:51:59 | "Program handler removed" | +| Program.cs:57:20:57:20 | access to parameter b | +| Program.cs:64:18:64:33 | call to constructor Attribute | +statements +| A.cs:5:18:5:18 | {...} | +| A.cs:11:9:13:9 | {...} | +| A.cs:12:13:12:21 | ...; | +| A.cs:17:9:19:9 | {...} | +| A.cs:18:13:18:52 | ...; | +| A.cs:25:17:25:40 | {...} | +| A.cs:25:19:25:38 | return ...; | +| A.cs:26:17:26:19 | {...} | +| A.cs:35:13:37:13 | {...} | +| A.cs:36:17:36:51 | ...; | +| A.cs:39:13:41:13 | {...} | +| A.cs:40:17:40:53 | ...; | +| A.cs:45:9:47:9 | {...} | +| A.cs:46:13:46:21 | return ...; | +| A.cs:50:38:50:40 | {...} | +| A.cs:54:9:58:9 | {...} | +| A.cs:55:13:55:21 | ... ...; | +| A.cs:56:13:56:32 | ...; | +| A.cs:57:13:57:21 | return ...; | +| A.cs:61:9:66:9 | {...} | +| A.cs:62:13:65:13 | if (...) ... | +| A.cs:63:13:65:13 | {...} | +| A.cs:64:17:64:38 | ...; | +| A.cs:69:18:69:36 | {...} | +| Program.cs:8:9:17:9 | {...} | +| Program.cs:9:13:13:13 | if (...) ... | +| Program.cs:10:13:13:13 | {...} | +| Program.cs:11:17:11:68 | ...; | +| Program.cs:12:17:12:23 | return ...; | +| Program.cs:14:13:14:28 | ... ...; | +| Program.cs:15:13:15:29 | ... ...; | +| Program.cs:16:13:16:44 | ...; | +| Program.cs:22:9:24:9 | {...} | +| Program.cs:23:13:23:28 | ...; | +| Program.cs:28:9:30:9 | {...} | +| Program.cs:29:13:29:60 | ...; | +| Program.cs:36:17:36:40 | {...} | +| Program.cs:36:19:36:38 | return ...; | +| Program.cs:37:17:37:19 | {...} | +| Program.cs:46:13:48:13 | {...} | +| Program.cs:47:17:47:59 | ...; | +| Program.cs:50:13:52:13 | {...} | +| Program.cs:51:17:51:61 | ...; | +| Program.cs:56:9:58:9 | {...} | +| Program.cs:57:13:57:21 | return ...; | +| Program.cs:61:39:61:41 | {...} | +| Program.cs:64:18:64:33 | {...} | +methods +| A.cs:50:21:50:34 | ObsoleteMethod | +| A.cs:53:32:53:39 | ToString | +| A.cs:60:21:60:29 | NewMethod | +| Program.cs:7:28:7:31 | Main | +| Program.cs:61:21:61:35 | AnnotatedMethod | +types +| A.cs:5:18:5:18 | C | +| A.cs:7:18:7:18 | A | +| A.cs:69:18:69:36 | MyObsoleteAttribute | +| Program.cs:5:20:5:26 | Program | +| Program.cs:64:18:64:33 | ProgramAttribute | +parameters +| A.cs:10:25:10:25 | x | +| A.cs:21:35:21:37 | value | +| A.cs:23:32:23:32 | i | +| A.cs:23:32:23:32 | i | +| A.cs:23:32:23:32 | i | +| A.cs:26:13:26:15 | value | +| A.cs:34:13:34:15 | value | +| A.cs:38:13:38:18 | value | +| A.cs:44:38:44:38 | a | +| A.cs:44:43:44:43 | b | +| Program.cs:7:42:7:45 | args | +| Program.cs:21:31:21:31 | x | +| Program.cs:32:42:32:44 | value | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:34:32:34:32 | i | +| Program.cs:37:13:37:15 | value | +| Program.cs:45:13:45:15 | value | +| Program.cs:49:13:49:18 | value | +| Program.cs:55:50:55:50 | a | +| Program.cs:55:61:55:61 | b | +operators +| A.cs:44:34:44:34 | + | +| Program.cs:55:40:55:40 | - | +constructors +| A.cs:10:16:10:16 | A | +| Program.cs:21:16:21:22 | Program | +destructors +| A.cs:16:10:16:10 | ~A | +| Program.cs:27:10:27:16 | ~Program | +fields +| A.cs:9:24:9:27 | name | +| Program.cs:19:24:19:34 | programName | +properties +| A.cs:21:23:21:26 | Prop | +| Program.cs:32:23:32:33 | ProgramProp | +indexers +| A.cs:23:23:23:26 | Item | +| Program.cs:34:23:34:26 | Item | +accessors +| A.cs:21:30:21:32 | get_Prop | +| A.cs:21:35:21:37 | set_Prop | +| A.cs:25:13:25:15 | get_Item | +| A.cs:26:13:26:15 | set_Item | +| A.cs:34:13:34:15 | add_Clicked | +| A.cs:38:13:38:18 | remove_Clicked | +| Program.cs:32:37:32:39 | get_ProgramProp | +| Program.cs:32:42:32:44 | set_ProgramProp | +| Program.cs:36:13:36:15 | get_Item | +| Program.cs:37:13:37:15 | set_Item | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +attributes +| A.cs:49:10:49:19 | [MyObsolete(...)] | +| Program.cs:60:10:60:16 | [Program(...)] | +events +| A.cs:32:35:32:41 | Clicked | +| Program.cs:43:35:43:48 | ProgramClicked | +eventAccessors +| A.cs:34:13:34:15 | add_Clicked | +| A.cs:38:13:38:18 | remove_Clicked | +| Program.cs:45:13:45:15 | add_ProgramClicked | +| Program.cs:49:13:49:18 | remove_ProgramClicked | +usingDirectives +| A.cs:1:1:1:13 | using ...; | +| Program.cs:1:1:1:13 | using ...; | +commentLines +| A.cs:15:9:15:21 | // ... | +| A.cs:29:9:29:10 | /* ... */ | +| A.cs:30:1:30:27 | /* ... */ | +| A.cs:31:1:31:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:40:10 | /* ... */ | +| Program.cs:41:1:41:27 | /* ... */ | +| Program.cs:42:1:42:11 | /* ... */ | +commentBlocks +| A.cs:15:9:15:21 | // ... | +| A.cs:29:9:31:11 | /* ... */ | +| Program.cs:26:9:26:29 | // ... | +| Program.cs:40:9:42:11 | /* ... */ | +typeMentions +| A.cs:9:17:9:22 | String | +| A.cs:10:18:10:23 | String | +| A.cs:18:13:18:19 | Console | +| A.cs:21:16:21:21 | String | +| A.cs:23:16:23:21 | Object | +| A.cs:23:28:23:30 | Int32 | +| A.cs:25:30:25:35 | Object | +| A.cs:36:17:36:23 | Console | +| A.cs:40:17:40:23 | Console | +| A.cs:44:23:44:23 | A | +| A.cs:44:36:44:36 | A | +| A.cs:44:41:44:41 | A | +| A.cs:49:10:49:19 | MyObsoleteAttribute | +| A.cs:50:16:50:19 | Void | +| A.cs:53:25:53:30 | String | +| A.cs:55:13:55:18 | String | +| A.cs:60:16:60:19 | Void | +| A.cs:69:40:69:48 | Attribute | +| Program.cs:7:23:7:26 | Void | +| Program.cs:7:33:7:38 | String | +| Program.cs:7:33:7:40 | String[] | +| Program.cs:11:17:11:23 | Console | +| Program.cs:14:13:14:15 | String | +| Program.cs:15:13:15:15 | A | +| Program.cs:15:25:15:25 | A | +| Program.cs:16:13:16:19 | Console | +| Program.cs:19:17:19:22 | String | +| Program.cs:21:24:21:29 | String | +| Program.cs:29:13:29:19 | Console | +| Program.cs:32:16:32:21 | String | +| Program.cs:34:16:34:21 | String | +| Program.cs:34:28:34:30 | Int32 | +| Program.cs:36:26:36:31 | String | +| Program.cs:47:17:47:23 | Console | +| Program.cs:51:17:51:23 | Console | +| Program.cs:55:23:55:29 | Program | +| Program.cs:55:42:55:48 | Program | +| Program.cs:55:53:55:59 | Program | +| Program.cs:60:10:60:16 | ProgramAttribute | +| Program.cs:61:16:61:19 | Void | +| Program.cs:64:37:64:45 | Attribute | diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.qlref b/csharp/ql/test/library-tests/overlay/overlay/test.qlref new file mode 100644 index 00000000000..bbce8f8b98d --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/test.qlref @@ -0,0 +1 @@ +query: ../test.ql diff --git a/csharp/ql/test/library-tests/overlay/test.ql b/csharp/ql/test/library-tests/overlay/test.ql new file mode 100644 index 00000000000..953124d5b44 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/test.ql @@ -0,0 +1,39 @@ +import csharp + +query predicate expressions(Expr e) { e.fromSource() } + +query predicate statements(Stmt s) { s.fromSource() } + +query predicate methods(Method m) { m.fromSource() } + +query predicate types(Type t) { t.fromSource() } + +query predicate parameters(Parameter p) { p.fromSource() } + +query predicate operators(Operator o) { o.fromSource() } + +query predicate constructors(Constructor c) { c.fromSource() } + +query predicate destructors(Destructor d) { d.fromSource() } + +query predicate fields(Field f) { f.fromSource() } + +query predicate properties(Property p) { p.fromSource() } + +query predicate indexers(Indexer i) { i.fromSource() } + +query predicate accessors(Accessor a) { a.fromSource() } + +query predicate attributes(Attribute a) { a.fromSource() } + +query predicate events(Event ev) { ev.fromSource() } + +query predicate eventAccessors(EventAccessor ea) { ea.fromSource() } + +query predicate usingDirectives(UsingDirective ud) { ud.fromSource() } + +query predicate commentLines(CommentLine cl) { cl.getLocation().getFile().fromSource() } + +query predicate commentBlocks(CommentBlock cb) { cb.getLocation().getFile().fromSource() } + +query predicate typeMentions(TypeMention tm) { tm.getLocation().getFile().fromSource() } diff --git a/csharp/ql/test/library-tests/overlay/testlocations.expected b/csharp/ql/test/library-tests/overlay/testlocations.expected new file mode 100644 index 00000000000..28715da9ee9 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/testlocations.expected @@ -0,0 +1,5 @@ +elementsWithMultipleSourceLocations +typeMentionsWithMultipleSourceLocations +commentLinesWithMultipleSourceLocations +commentBlocksWithMultipleSourceLocations +removedEntities diff --git a/csharp/ql/test/library-tests/overlay/testlocations.ql b/csharp/ql/test/library-tests/overlay/testlocations.ql new file mode 100644 index 00000000000..33618429db0 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/testlocations.ql @@ -0,0 +1,32 @@ +import csharp + +// This is a consistency check that the overlay mechanism for cleaning up locations +// works correctly. +query predicate elementsWithMultipleSourceLocations(Element e, SourceLocation loc) { + e.fromSource() and + not e instanceof Namespace and + count(SourceLocation l0 | l0 = e.getALocation()) > 1 and + loc = e.getALocation() +} + +query predicate typeMentionsWithMultipleSourceLocations(TypeMention tm, SourceLocation loc) { + tm.getLocation().getFile().fromSource() and + count(SourceLocation l0 | l0 = tm.getLocation()) > 1 and + loc = tm.getLocation() +} + +query predicate commentLinesWithMultipleSourceLocations(CommentLine cl, SourceLocation loc) { + cl.getLocation().getFile().fromSource() and + count(SourceLocation l0 | l0 = cl.getLocation()) > 1 and + loc = cl.getLocation() +} + +query predicate commentBlocksWithMultipleSourceLocations(CommentBlock cb, SourceLocation loc) { + cb.getLocation().getFile().fromSource() and + count(SourceLocation l0 | l0 = cb.getLocation()) > 1 and + loc = cb.getLocation() +} + +// This is a consistency check that the entities that are removed as a part of +// the changes in the overlay are indeed removed from the database. +query predicate removedEntities(Element e) { e.(Method).getName() = "OldMethod" } From 40035d2e8226b8467526be822820f3f79b8e7883 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 27 Oct 2025 15:43:12 +0100 Subject: [PATCH 544/965] C#: Add a locatable type to the dbscheme. --- .../old.dbscheme | 1484 +++++++++++++++++ .../semmlecode.csharp.dbscheme | 1478 ++++++++++++++++ .../upgrade.properties | 2 + csharp/ql/lib/semmlecode.csharp.dbscheme | 6 + .../old.dbscheme | 1478 ++++++++++++++++ .../semmlecode.csharp.dbscheme | 1484 +++++++++++++++++ .../upgrade.properties | 2 + 7 files changed, 5934 insertions(+) create mode 100644 csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme create mode 100644 csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme create mode 100644 csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties create mode 100644 csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme create mode 100644 csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme create mode 100644 csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme new file mode 100644 index 00000000000..68b5aec54e5 --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/old.dbscheme @@ -0,0 +1,1484 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..605f8505340 --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/semmlecode.csharp.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties new file mode 100644 index 00000000000..950235727fe --- /dev/null +++ b/csharp/downgrades/68b5aec54e50fe7e375df3777b756a746ca3a37c/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove @locatable type +compatibility: full diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index 605f8505340..68b5aec54e5 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -240,6 +240,12 @@ overlayChangedFiles( @location = @location_default | @assembly; +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + locations_default( unique int id: @location_default, int file: @file ref, diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme new file mode 100644 index 00000000000..605f8505340 --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/old.dbscheme @@ -0,0 +1,1478 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme new file mode 100644 index 00000000000..68b5aec54e5 --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/semmlecode.csharp.dbscheme @@ -0,0 +1,1484 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @assign_expr | @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @operator_invocation_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties new file mode 100644 index 00000000000..81395885edd --- /dev/null +++ b/csharp/ql/lib/upgrades/605f85053409cd72b4904df3f198ddc8324f3a83/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @locatable type +compatibility: full From 8927b0a35066af76d5467d97d2c15b3c0b569021 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 27 Oct 2025 15:43:47 +0100 Subject: [PATCH 545/965] C#: Simplify the discarding and also discard type mentions and comments. --- csharp/ql/lib/semmle/code/csharp/Overlay.qll | 179 +++---------------- 1 file changed, 28 insertions(+), 151 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/Overlay.qll index 94938c4163f..0f1c996416b 100644 --- a/csharp/ql/lib/semmle/code/csharp/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/Overlay.qll @@ -14,7 +14,7 @@ predicate isOverlay() { databaseMetadata("isOverlay", "true") } * An abstract base class for all elements that can be discarded from the base. */ overlay[local] -abstract private class DiscardableEntity extends @element { +abstract private class DiscardableEntity extends @locatable { /** Gets the path to the file in which this element occurs. */ abstract string getPath(); @@ -36,7 +36,7 @@ overlay[local] private class StarEntity = @expr or @stmt; overlay[discard_entity] -private predicate discardStarEntity(@element e) { +private predicate discardStarEntity(@locatable e) { e instanceof StarEntity and // Entities with *-ids can exist either in base or overlay, but not both. exists(DiscardableEntity de | de = e | @@ -46,7 +46,7 @@ private predicate discardStarEntity(@element e) { } overlay[discard_entity] -private predicate discardNamedEntity(@element e) { +private predicate discardNamedEntity(@locatable e) { not e instanceof StarEntity and // Entities with named IDs can exist both in base, overlay, or both. exists(DiscardableEntity de | de = e | @@ -73,155 +73,32 @@ private predicate discardLocation(@location_default loc) { } overlay[local] -private class ExprEntity extends DiscardableEntity instanceof @expr { +private class PossibleDiscardableEntity extends DiscardableEntity instanceof @locatable { override string getPath() { - exists(@location_default loc | expr_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class StmtEntity extends DiscardableEntity instanceof @stmt { - override string getPath() { - exists(@location_default loc | stmt_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class UsingDirectiveEntity extends DiscardableEntity instanceof @using_directive { - override string getPath() { - exists(@location_default loc | using_directive_location(this, loc) | - result = getLocationPath(loc) + exists(@location_default loc | result = getLocationPath(loc) | + expr_location(this, loc) or + stmt_location(this, loc) or + using_directive_location(this, loc) or + namespace_declaration_location(this, loc) or + preprocessor_directive_location(this, loc) or + type_location(this, loc) or + attribute_location(this, loc) or + type_parameter_constraints_location(this, loc) or + property_location(this, loc) or + indexer_location(this, loc) or + accessor_location(this, loc) or + event_location(this, loc) or + event_accessor_location(this, loc) or + operator_location(this, loc) or + method_location(this, loc) or + constructor_location(this, loc) or + destructor_location(this, loc) or + field_location(this, loc) or + localvar_location(this, loc) or + param_location(this, loc) or + type_mention_location(this, loc) or + commentline_location(this, loc) or + commentblock_location(this, loc) ) } } - -overlay[local] -private class NamespaceDeclarationEntity extends DiscardableEntity instanceof @namespace_declaration -{ - override string getPath() { - exists(@location_default loc | namespace_declaration_location(this, loc) | - result = getLocationPath(loc) - ) - } -} - -overlay[local] -private class PreprocessorDirectiveEntity extends DiscardableEntity instanceof @preprocessor_directive -{ - override string getPath() { - exists(@location_default loc | preprocessor_directive_location(this, loc) | - result = getLocationPath(loc) - ) - } -} - -overlay[local] -private class TypeEntity extends DiscardableEntity instanceof @type { - override string getPath() { - exists(@location_default loc | type_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class AttributeEntity extends DiscardableEntity instanceof @attribute { - override string getPath() { - exists(@location_default loc | attribute_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class TypeParameterConstraintsEntity extends DiscardableEntity instanceof @type_parameter_constraints -{ - override string getPath() { - exists(@location_default loc | type_parameter_constraints_location(this, loc) | - result = getLocationPath(loc) - ) - } -} - -overlay[local] -private class PropertyEntity extends DiscardableEntity instanceof @property { - override string getPath() { - exists(@location_default loc | property_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class IndexerEntity extends DiscardableEntity instanceof @indexer { - override string getPath() { - exists(@location_default loc | indexer_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class AccessorEntity extends DiscardableEntity instanceof @accessor { - override string getPath() { - exists(@location_default loc | accessor_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class EventEntity extends DiscardableEntity instanceof @event { - override string getPath() { - exists(@location_default loc | event_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class EventAccessorEntity extends DiscardableEntity instanceof @event_accessor { - override string getPath() { - exists(@location_default loc | event_accessor_location(this, loc) | - result = getLocationPath(loc) - ) - } -} - -overlay[local] -private class OperatorEntity extends DiscardableEntity instanceof @operator { - override string getPath() { - exists(@location_default loc | operator_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class MethodEntity extends DiscardableEntity instanceof @method { - override string getPath() { - exists(@location_default loc | method_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class ConstructorEntity extends DiscardableEntity instanceof @constructor { - override string getPath() { - exists(@location_default loc | constructor_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class DestructorEntity extends DiscardableEntity instanceof @destructor { - override string getPath() { - exists(@location_default loc | destructor_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class FieldEntity extends DiscardableEntity instanceof @field { - override string getPath() { - exists(@location_default loc | field_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class LocalVariableEntity extends DiscardableEntity instanceof @local_variable { - override string getPath() { - exists(@location_default loc | localvar_location(this, loc) | result = getLocationPath(loc)) - } -} - -overlay[local] -private class ParameterEntity extends DiscardableEntity instanceof @parameter { - override string getPath() { - exists(@location_default loc | param_location(this, loc) | result = getLocationPath(loc)) - } -} -// TODO: We Still need to handle commentline, comment block entities and type mentions. From 04d33cbad7fa7b5d207bbb443611aef1390d3231 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 28 Oct 2025 13:44:10 +0100 Subject: [PATCH 546/965] C#: Add discarding for diagnostics and extractor messages. --- csharp/ql/lib/semmle/code/csharp/Overlay.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/Overlay.qll index 0f1c996416b..130c728feeb 100644 --- a/csharp/ql/lib/semmle/code/csharp/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/Overlay.qll @@ -33,7 +33,7 @@ abstract private class DiscardableEntity extends @locatable { * The rest use named TRAP IDs. */ overlay[local] -private class StarEntity = @expr or @stmt; +private class StarEntity = @expr or @stmt or @diagnostic or @extractor_message; overlay[discard_entity] private predicate discardStarEntity(@locatable e) { @@ -98,7 +98,9 @@ private class PossibleDiscardableEntity extends DiscardableEntity instanceof @lo param_location(this, loc) or type_mention_location(this, loc) or commentline_location(this, loc) or - commentblock_location(this, loc) + commentblock_location(this, loc) or + diagnostics(this, _, _, _, _, loc) or + extractor_messages(this, _, _, _, _, loc, _) ) } } From 1d2f1545d63a31b5ff79042223c3aa6dbc492e4f Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 30 Oct 2025 13:23:31 +0100 Subject: [PATCH 547/965] C#: Add change-note. --- .../2025-10-30-overlay-compilation-and-extraction.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md diff --git a/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md b/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md new file mode 100644 index 00000000000..0f5005a22a2 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md @@ -0,0 +1,5 @@ +--- +category: feature +--- + +* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. From 504bb9c4a1f470a95a32843984e14462c94fb275 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 3 Nov 2025 10:58:52 +0100 Subject: [PATCH 548/965] C#: Only scaffold assemblies in overlay mode, only extract expressions when not scaffolding and only extract attributes when they are in source code in overlay mode. --- .../Semmle.Extraction.CSharp/Entities/Attribute.cs | 7 +++++++ .../Semmle.Extraction.CSharp/Entities/Expression.cs | 5 +++++ .../Semmle.Extraction.CSharp/Extractor/Context.cs | 4 +++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs index 24464e50f8e..ded4320cba8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs @@ -57,6 +57,13 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { + // In this case, we don't extract the attribute again, as it was extracted using * ID + // originally and we re-use that. + if (Context.OnlyScaffold && (ReportingLocation is null || !ReportingLocation.IsInSource)) + { + return; + } + var type = Type.Create(Context, Symbol.AttributeClass); trapFile.attributes(this, kind, type.TypeRef, entity); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs index 93107fc6dab..0a10d4882e4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs @@ -34,6 +34,11 @@ namespace Semmle.Extraction.CSharp.Entities protected sealed override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + var type = Type.HasValue ? Entities.Type.Create(Context, Type.Value) : NullType.Create(Context); trapFile.expressions(this, Kind, type.TypeRef); if (info.Parent.IsTopLevelParent) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs index 44ef1efabb6..aa3d6e9edda 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs @@ -536,7 +536,9 @@ namespace Semmle.Extraction.CSharp ShouldAddAssemblyTrapPrefix = shouldAddAssemblyTrapPrefix; Compilation = c; this.scope = scope; - OnlyScaffold = overlayInfo.IsOverlayMode && scope is SourceScope ss && overlayInfo.OnlyMakeScaffold(ss.SourceTree.FilePath); + OnlyScaffold = overlayInfo.IsOverlayMode && ( + IsAssemblyScope + || (scope is SourceScope ss && overlayInfo.OnlyMakeScaffold(ss.SourceTree.FilePath))); } public bool FromSource => scope is SourceScope; From d95ebc77ae96489430bb4e509367db67a234740c Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 3 Nov 2025 11:29:01 +0100 Subject: [PATCH 549/965] C#: Add using directives and type mentions as star entities. --- csharp/ql/lib/semmle/code/csharp/Overlay.qll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/Overlay.qll index 130c728feeb..044279df7fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/Overlay.qll @@ -33,7 +33,8 @@ abstract private class DiscardableEntity extends @locatable { * The rest use named TRAP IDs. */ overlay[local] -private class StarEntity = @expr or @stmt or @diagnostic or @extractor_message; +private class StarEntity = + @expr or @stmt or @diagnostic or @extractor_message or @using_directive or @type_mention; overlay[discard_entity] private predicate discardStarEntity(@locatable e) { From 7fe4877ddd0222e8cda860e8e92d76d1cde491aa Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:36:56 +0000 Subject: [PATCH 550/965] Rust: Update test annotations. --- .../security/CWE-614/InsecureCookie.expected | 13 ---------- .../test/query-tests/security/CWE-614/main.rs | 24 +++++++++---------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 89906056752..e514828c3a0 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -595,16 +595,3 @@ nodes | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | subpaths -testFailures -| main.rs:197:32:197:42 | //... | Missing result: Source | -| main.rs:198:64:198:95 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:206:54:206:64 | //... | Missing result: Source | -| main.rs:207:64:207:95 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:215:32:215:42 | //... | Missing result: Source | -| main.rs:216:59:216:90 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:224:62:224:72 | //... | Missing result: Source | -| main.rs:225:59:225:90 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:233:32:233:42 | //... | Missing result: Source | -| main.rs:234:65:234:96 | //... | Missing result: Alert[rust/insecure-cookie] | -| main.rs:242:58:242:68 | //... | Missing result: Source | -| main.rs:243:65:243:96 | //... | Missing result: Alert[rust/insecure-cookie] | diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 5cf5298f788..69e436de9fb 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -194,8 +194,8 @@ fn test_actix_web() { // secure set to false let mut cookie1 = ActixCookie::new("name", "value"); - cookie1.set_secure(false); // $ Source - println!("actix-web cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] + cookie1.set_secure(false); // $ MISSING: Source + println!("actix-web cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = ActixCookie::new("name", "value"); @@ -203,8 +203,8 @@ fn test_actix_web() { println!("actix-web cookie2 = '{}'", cookie2.to_string()); // secure left as default - let cookie3 = ActixCookie::new("name", "value"); // $ Source - println!("actix-web cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] + let cookie3 = ActixCookie::new("name", "value"); // $ MISSING: Source + println!("actix-web cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] } fn test_poem() { @@ -212,8 +212,8 @@ fn test_poem() { // secure set to false let mut cookie1 = PoemCookie::new_with_str("name", "value"); - cookie1.set_secure(false); // $ Source - println!("poem cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] + cookie1.set_secure(false); // $ MISSING: Source + println!("poem cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = PoemCookie::new_with_str("name", "value"); @@ -221,8 +221,8 @@ fn test_poem() { println!("poem cookie2 = '{}'", cookie2.to_string()); // secure left as default - let cookie3 = PoemCookie::new_with_str("name", "value"); // $ Source - println!("poem cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] + let cookie3 = PoemCookie::new_with_str("name", "value"); // $ MISSING: Source + println!("poem cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] } fn test_http_types() { @@ -230,8 +230,8 @@ fn test_http_types() { // secure set to false let mut cookie1 = HttpTypesCookie::new("name", "value"); - cookie1.set_secure(false); // $ Source - println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie] + cookie1.set_secure(false); // $ MISSING: Source + println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = HttpTypesCookie::new("name", "value"); @@ -239,8 +239,8 @@ fn test_http_types() { println!("http-types cookie2 = '{}'", cookie2.to_string()); // secure left as default - let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source - println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie] + let cookie3 = HttpTypesCookie::new("name", "value"); // $ MISSING: Source + println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] } fn main() { From 50552da4d8a9a0ea0e794e6c2b10ae54615feaed Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 3 Nov 2025 11:25:50 +0100 Subject: [PATCH 551/965] Rust: Handle unqualified `UseTree`s in path resolution --- .../codeql/rust/internal/PathResolution.qll | 56 +++++++++++++++++-- .../library-tests/path-resolution/main.rs | 6 +- .../path-resolution/path-resolution.expected | 5 ++ 3 files changed, 60 insertions(+), 7 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index fc49b7ca5e8..568ff23aaf1 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1457,6 +1457,24 @@ private predicate crateDependencyEdge(SourceFileItemNode file, string name, Crat not hasDeclOrDep(file, name) } +/** + * Gets a `UseTree` that is nested under `tree`, and which needs to be resolved + * relative to the path of `tree`. + * + * `tree` is restricted to either having a path or being a direct child of some + * `use` statement without a path. + */ +private UseTree getAUseTreeUseTree(UseTree tree) { + result = tree.getUseTreeList().getAUseTree() and + (if tree.hasPath() then any() else tree = any(Use u).getUseTree()) + or + exists(UseTree mid | + mid = getAUseTreeUseTree(tree) and + not mid.hasPath() and + result = mid.getUseTreeList().getAUseTree() + ) +} + private predicate useTreeDeclares(UseTree tree, string name) { not tree.isGlob() and not exists(tree.getUseTreeList()) and @@ -1470,7 +1488,7 @@ private predicate useTreeDeclares(UseTree tree, string name) { or exists(UseTree mid | useTreeDeclares(mid, name) and - mid = tree.getUseTreeList().getAUseTree() + mid = getAUseTreeUseTree(tree) ) } @@ -1511,7 +1529,10 @@ class RelevantPath extends Path { pragma[nomagic] predicate isUnqualified(string name) { not exists(this.getQualifier()) and - not this = any(UseTreeList list).getAUseTree().getPath().getQualifier*() and + not exists(UseTree tree | + tree.hasPath() and + this = getAUseTreeUseTree(tree).getPath().getQualifier*() + ) and name = this.getText() } @@ -1990,7 +2011,7 @@ private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path exists(UseOption useOpt | checkQualifiedVisibility(use, result, kind, useOpt) | exists(UseTree midTree, ItemNode mid, string name | mid = resolveUseTreeListItem(use, midTree) and - tree = midTree.getUseTreeList().getAUseTree() and + tree = getAUseTreeUseTree(midTree) and isUseTreeSubPathUnqualified(tree, path, pragma[only_bind_into](name)) and result = mid.getASuccessor(pragma[only_bind_into](name), kind, useOpt) ) @@ -2010,14 +2031,31 @@ private ItemNode resolveUseTreeListItemQualifier( name = path.getText() } +private UseTree getAUseUseTree(Use use) { + exists(UseTree root | root = use.getUseTree() | + result = root + or + not root.hasPath() and + result = getAUseTreeUseTree(root) + ) +} + pragma[nomagic] private ItemNode resolveUseTreeListItem(Use use, UseTree tree) { exists(Path path | path = tree.getPath() | - tree = use.getUseTree() and + tree = getAUseUseTree(use) and result = resolvePathCand(path) or result = resolveUseTreeListItem(use, tree, path, _) ) + or + exists(UseTree midTree | + // `use foo::{bar, *}`; midTree = `foo` and tree = `*` + result = resolveUseTreeListItem(use, midTree) and + tree = getAUseTreeUseTree(midTree) and + tree.isGlob() and + not tree.hasPath() + ) } /** Holds if `use` imports `item` as `name`. */ @@ -2159,6 +2197,16 @@ private module Debug { result = resolvePath(path) } + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree, path, kind) + } + + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree) { + use = getRelevantLocatable() and + result = resolveUseTreeListItem(use, tree) + } + predicate debugUseImportEdge(Use use, string name, ItemNode item, SuccessorKind kind) { use = getRelevantLocatable() and useImportEdge(use, name, item, kind) diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index ee255776035..9e7ebf5fb17 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -1,7 +1,7 @@ mod my; // I1 #[rustfmt::skip] -use {{{my::{{self as my_alias, *}}}}}; // $ MISSING: item=I1 +use {{{my::{{self as my_alias, *}}}}}; // $ item=I1 use my::nested::nested1::nested2::*; // $ item=I3 @@ -816,8 +816,8 @@ fn main() { nested6::f(); // $ item=I116 nested8::f(); // $ item=I119 my3::f(); // $ item=I200 - nested_f(); // $ MISSING: item=I201 - my_alias::nested_f(); // $ MISSING: item=I201 + nested_f(); // $ item=I201 + my_alias::nested_f(); // $ item=I201 m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index 8efa01241a9..0ff48d11e8d 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -47,6 +47,8 @@ mod | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:2:5:11:5 | mod nested2 | resolvePath +| main.rs:4:8:4:9 | my | main.rs:1:1:1:7 | mod my | +| main.rs:4:14:4:17 | self | main.rs:1:1:1:7 | mod my | | main.rs:6:5:6:6 | my | main.rs:1:1:1:7 | mod my | | main.rs:6:5:6:14 | ...::nested | my.rs:1:1:1:15 | mod nested | | main.rs:6:5:6:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | @@ -447,6 +449,9 @@ resolvePath | main.rs:817:5:817:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | | main.rs:818:5:818:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | | main.rs:818:5:818:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:819:5:819:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:820:5:820:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:820:5:820:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | | main.rs:821:5:821:7 | m18 | main.rs:555:1:573:1 | mod m18 | | main.rs:821:5:821:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | | main.rs:821:5:821:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | From 55cf37588608f57a3d3caa1318b1e3b8db93ddd0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:43:30 +0000 Subject: [PATCH 552/965] Rust: Add the cookies to jars, indicating that they're ready for use. --- .../security/CWE-614/CookieSet.expected | 16 ++--- .../security/CWE-614/InsecureCookie.expected | 68 +++++++++++++++++++ .../test/query-tests/security/CWE-614/main.rs | 33 +++++---- 3 files changed, 94 insertions(+), 23 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index 22648e30994..554e66a6529 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -52,11 +52,11 @@ | main.rs:180:29:180:66 | ...::build(...) | secure | true | | main.rs:186:9:186:22 | [SSA] secure_cookie2 | secure | true | | main.rs:186:9:186:22 | secure_cookie2 | secure | true | -| main.rs:197:5:197:11 | [SSA] cookie1 | secure | false | -| main.rs:197:5:197:11 | cookie1 | secure | false | -| main.rs:202:5:202:11 | [SSA] cookie2 | secure | true | -| main.rs:202:5:202:11 | cookie2 | secure | true | -| main.rs:233:5:233:11 | [SSA] cookie1 | secure | false | -| main.rs:233:5:233:11 | cookie1 | secure | false | -| main.rs:238:5:238:11 | [SSA] cookie2 | secure | true | -| main.rs:238:5:238:11 | cookie2 | secure | true | +| main.rs:198:5:198:11 | [SSA] cookie1 | secure | false | +| main.rs:198:5:198:11 | cookie1 | secure | false | +| main.rs:203:5:203:11 | [SSA] cookie2 | secure | true | +| main.rs:203:5:203:11 | cookie2 | secure | true | +| main.rs:236:5:236:11 | [SSA] cookie1 | secure | false | +| main.rs:236:5:236:11 | cookie1 | secure | false | +| main.rs:241:5:241:11 | [SSA] cookie2 | secure | true | +| main.rs:241:5:241:11 | cookie2 | secure | true | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index e514828c3a0..67e644b01d4 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -78,6 +78,14 @@ | main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | +| main.rs:199:9:199:11 | add | main.rs:197:23:197:38 | ...::new | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:208:9:208:11 | add | main.rs:207:19:207:34 | ...::new | main.rs:208:9:208:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:237:9:237:11 | add | main.rs:235:23:235:42 | ...::new | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:246:9:246:11 | add | main.rs:245:19:245:38 | ...::new | main.rs:246:9:246:11 | add | Cookie attribute 'Secure' is not set to true. | edges | main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | @@ -314,6 +322,38 @@ edges | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | +| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | +| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:197:23:197:38 | ...::new | main.rs:197:23:197:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:197:23:197:55 | ...::new(...) | main.rs:197:9:197:19 | mut cookie1 | provenance | | +| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | +| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | +| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:199:13:199:19 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:199:13:199:27 | cookie1.clone() | main.rs:199:9:199:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:19 | cookie3 | provenance | | +| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:207:19:207:34 | ...::new | main.rs:207:19:207:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:207:19:207:51 | ...::new(...) | main.rs:207:9:207:15 | cookie3 | provenance | | +| main.rs:208:13:208:19 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:208:13:208:27 | cookie3.clone() | main.rs:208:9:208:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | +| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:235:23:235:42 | ...::new | main.rs:235:23:235:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:235:23:235:59 | ...::new(...) | main.rs:235:9:235:19 | mut cookie1 | provenance | | +| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | +| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | +| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:237:13:237:19 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:237:13:237:27 | cookie1.clone() | main.rs:237:9:237:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:19 | cookie3 | provenance | | +| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:245:19:245:38 | ...::new | main.rs:245:19:245:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:245:19:245:55 | ...::new(...) | main.rs:245:9:245:15 | cookie3 | provenance | | +| main.rs:246:13:246:19 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:246:13:246:27 | cookie3.clone() | main.rs:246:9:246:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -594,4 +634,32 @@ nodes | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | +| main.rs:197:9:197:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:197:23:197:38 | ...::new | semmle.label | ...::new | +| main.rs:197:23:197:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:198:5:198:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:198:5:198:11 | cookie1 | semmle.label | cookie1 | +| main.rs:199:9:199:11 | add | semmle.label | add | +| main.rs:199:13:199:19 | cookie1 | semmle.label | cookie1 | +| main.rs:199:13:199:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:207:9:207:15 | cookie3 | semmle.label | cookie3 | +| main.rs:207:19:207:34 | ...::new | semmle.label | ...::new | +| main.rs:207:19:207:51 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:208:9:208:11 | add | semmle.label | add | +| main.rs:208:13:208:19 | cookie3 | semmle.label | cookie3 | +| main.rs:208:13:208:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:235:9:235:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:235:23:235:42 | ...::new | semmle.label | ...::new | +| main.rs:235:23:235:59 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:236:5:236:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:236:5:236:11 | cookie1 | semmle.label | cookie1 | +| main.rs:237:9:237:11 | add | semmle.label | add | +| main.rs:237:13:237:19 | cookie1 | semmle.label | cookie1 | +| main.rs:237:13:237:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:245:9:245:15 | cookie3 | semmle.label | cookie3 | +| main.rs:245:19:245:38 | ...::new | semmle.label | ...::new | +| main.rs:245:19:245:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:246:9:246:11 | add | semmle.label | add | +| main.rs:246:13:246:19 | cookie3 | semmle.label | cookie3 | +| main.rs:246:13:246:27 | cookie3.clone() | semmle.label | cookie3.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 69e436de9fb..79b9d734c2a 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -191,56 +191,59 @@ fn test_qhelp_examples() { fn test_actix_web() { // actix-web re-exports the cookie crate use actix_web::cookie::Cookie as ActixCookie; + let mut jar = actix_web::cookie::CookieJar::new(); // secure set to false - let mut cookie1 = ActixCookie::new("name", "value"); - cookie1.set_secure(false); // $ MISSING: Source - println!("actix-web cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + let mut cookie1 = ActixCookie::new("name", "value"); // $ Source + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = ActixCookie::new("name", "value"); cookie2.set_secure(true); // good - println!("actix-web cookie2 = '{}'", cookie2.to_string()); + jar.add(cookie2.clone()); // secure left as default - let cookie3 = ActixCookie::new("name", "value"); // $ MISSING: Source - println!("actix-web cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + let cookie3 = ActixCookie::new("name", "value"); // $ Source + jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] } fn test_poem() { use poem::web::cookie::Cookie as PoemCookie; + let mut jar = poem::web::cookie::CookieJar::default(); // secure set to false let mut cookie1 = PoemCookie::new_with_str("name", "value"); cookie1.set_secure(false); // $ MISSING: Source - println!("poem cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + jar.add(cookie1.clone()); // $ MISSING: Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = PoemCookie::new_with_str("name", "value"); cookie2.set_secure(true); // good - println!("poem cookie2 = '{}'", cookie2.to_string()); + jar.add(cookie2.clone()); // secure left as default let cookie3 = PoemCookie::new_with_str("name", "value"); // $ MISSING: Source - println!("poem cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + jar.add(cookie3.clone()); // $ MISSING: Alert[rust/insecure-cookie] } fn test_http_types() { use http_types::Cookie as HttpTypesCookie; + let mut jar = http_types::cookies::CookieJar::default(); // secure set to false - let mut cookie1 = HttpTypesCookie::new("name", "value"); - cookie1.set_secure(false); // $ MISSING: Source - println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + let mut cookie1 = HttpTypesCookie::new("name", "value"); // $ Source + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = HttpTypesCookie::new("name", "value"); cookie2.set_secure(true); // good - println!("http-types cookie2 = '{}'", cookie2.to_string()); + jar.add(cookie2.clone()); // secure left as default - let cookie3 = HttpTypesCookie::new("name", "value"); // $ MISSING: Source - println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ MISSING: Alert[rust/insecure-cookie] + let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source + jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] } fn main() { From 7ab25b593d990b8fed63e29e1eca6473eb29dba4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 4 Nov 2025 15:43:49 +0100 Subject: [PATCH 553/965] C#: Change note. --- .../ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md diff --git a/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md b/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md new file mode 100644 index 00000000000..a3c69932917 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. From 41bf91072d21b7d86a878f5a55293c8126838787 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 4 Nov 2025 15:56:39 +0100 Subject: [PATCH 554/965] Swift: Update supported versions in the documentation Also document that we need to update the supported versions, so we don't forget it next time around. --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- swift/third_party/resources/updating.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index fb204bc4685..8dcfd1a5dc0 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -26,7 +26,7 @@ Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" - Swift [12]_ [13]_,"Swift 5.4-6.1","Swift compiler","``.swift``" + Swift [12]_ [13]_,"Swift 5.4-6.2","Swift compiler","``.swift``" TypeScript [14]_,"2.6-5.9",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/swift/third_party/resources/updating.md b/swift/third_party/resources/updating.md index 766d3e9410e..492f07f2742 100644 --- a/swift/third_party/resources/updating.md +++ b/swift/third_party/resources/updating.md @@ -23,4 +23,5 @@ In order to perform a Swift update: (or whatever you have overridden). This will pull the staged archives in the repository for git LFS. 8. Clear `_override` in [`load.bzl`](../load.bzl). 9. Add a change note to the [library change note directory](../../ql/lib/change-notes/) that mentions that we now support the Swift version we updated to. -10. Push and your PR will be ready for `main`. +10. If this not patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. +11. Push and your PR will be ready for `main`. From a29c9af4a765ad6ad59fc59f9fb90d9ca08fe19a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <93738568+jketema@users.noreply.github.com> Date: Tue, 4 Nov 2025 16:00:23 +0100 Subject: [PATCH 555/965] Update swift/third_party/resources/updating.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- swift/third_party/resources/updating.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/third_party/resources/updating.md b/swift/third_party/resources/updating.md index 492f07f2742..0d5874aa566 100644 --- a/swift/third_party/resources/updating.md +++ b/swift/third_party/resources/updating.md @@ -23,5 +23,5 @@ In order to perform a Swift update: (or whatever you have overridden). This will pull the staged archives in the repository for git LFS. 8. Clear `_override` in [`load.bzl`](../load.bzl). 9. Add a change note to the [library change note directory](../../ql/lib/change-notes/) that mentions that we now support the Swift version we updated to. -10. If this not patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. +10. If this is not a patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. 11. Push and your PR will be ready for `main`. From e5933d0c54e87f5a0c8826c4d0ce5b475a2cdd68 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:03:25 +0000 Subject: [PATCH 556/965] Rust: Add test cases with cookie builders. --- .../security/CWE-614/CookieSet.expected | 22 +- .../security/CWE-614/InsecureCookie.expected | 188 +++++++++++------- .../test/query-tests/security/CWE-614/main.rs | 14 ++ 3 files changed, 148 insertions(+), 76 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index 554e66a6529..c210f9ed096 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -52,11 +52,17 @@ | main.rs:180:29:180:66 | ...::build(...) | secure | true | | main.rs:186:9:186:22 | [SSA] secure_cookie2 | secure | true | | main.rs:186:9:186:22 | secure_cookie2 | secure | true | -| main.rs:198:5:198:11 | [SSA] cookie1 | secure | false | -| main.rs:198:5:198:11 | cookie1 | secure | false | -| main.rs:203:5:203:11 | [SSA] cookie2 | secure | true | -| main.rs:203:5:203:11 | cookie2 | secure | true | -| main.rs:236:5:236:11 | [SSA] cookie1 | secure | false | -| main.rs:236:5:236:11 | cookie1 | secure | false | -| main.rs:241:5:241:11 | [SSA] cookie2 | secure | true | -| main.rs:241:5:241:11 | cookie2 | secure | true | +| main.rs:197:5:197:39 | ...::build(...) | secure | false | +| main.rs:198:5:198:39 | ...::build(...) | secure | false | +| main.rs:201:5:201:11 | [SSA] cookie1 | secure | false | +| main.rs:201:5:201:11 | cookie1 | secure | false | +| main.rs:205:5:205:39 | ...::build(...) | secure | true | +| main.rs:208:5:208:11 | [SSA] cookie2 | secure | true | +| main.rs:208:5:208:11 | cookie2 | secure | true | +| main.rs:242:5:242:43 | ...::build(...) | secure | false | +| main.rs:243:5:243:43 | ...::build(...) | secure | false | +| main.rs:246:5:246:11 | [SSA] cookie1 | secure | false | +| main.rs:246:5:246:11 | cookie1 | secure | false | +| main.rs:250:5:250:43 | ...::build(...) | secure | true | +| main.rs:253:5:253:11 | [SSA] cookie2 | secure | true | +| main.rs:253:5:253:11 | cookie2 | secure | true | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 67e644b01d4..bcf56bdad02 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -78,14 +78,24 @@ | main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:199:9:199:11 | add | main.rs:197:23:197:38 | ...::new | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:199:9:199:11 | add | main.rs:198:5:198:11 | cookie1 | main.rs:199:9:199:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:208:9:208:11 | add | main.rs:207:19:207:34 | ...::new | main.rs:208:9:208:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:237:9:237:11 | add | main.rs:235:23:235:42 | ...::new | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:237:9:237:11 | add | main.rs:236:5:236:11 | cookie1 | main.rs:237:9:237:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:246:9:246:11 | add | main.rs:245:19:245:38 | ...::new | main.rs:246:9:246:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:197:55:197:60 | finish | main.rs:197:5:197:22 | ...::build | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:198:65:198:70 | finish | main.rs:198:5:198:22 | ...::build | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:200:23:200:38 | ...::new | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:242:59:242:64 | finish | main.rs:242:5:242:26 | ...::build | main.rs:242:59:242:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:242:59:242:64 | finish | main.rs:242:5:242:43 | ...::build(...) | main.rs:242:59:242:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:243:69:243:74 | finish | main.rs:243:5:243:26 | ...::build | main.rs:243:69:243:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:243:69:243:74 | finish | main.rs:243:5:243:43 | ...::build(...) | main.rs:243:69:243:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:247:9:247:11 | add | main.rs:245:23:245:42 | ...::new | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:247:9:247:11 | add | main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:247:9:247:11 | add | main.rs:246:5:246:11 | cookie1 | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:257:45:257:50 | finish | main.rs:257:5:257:26 | ...::build | main.rs:257:45:257:50 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:9:260:11 | add | main.rs:259:19:259:38 | ...::new | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | edges | main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | @@ -322,38 +332,56 @@ edges | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | -| main.rs:197:9:197:19 | mut cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:197:23:197:38 | ...::new | main.rs:197:23:197:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:197:23:197:55 | ...::new(...) | main.rs:197:9:197:19 | mut cookie1 | provenance | | -| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | -| main.rs:198:5:198:11 | [SSA] cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:19 | cookie1 | provenance | | -| main.rs:198:5:198:11 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:199:13:199:19 | cookie1 | main.rs:199:13:199:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:199:13:199:27 | cookie1.clone() | main.rs:199:9:199:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:19 | cookie3 | provenance | | -| main.rs:207:9:207:15 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:207:19:207:34 | ...::new | main.rs:207:19:207:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:207:19:207:51 | ...::new(...) | main.rs:207:9:207:15 | cookie3 | provenance | | -| main.rs:208:13:208:19 | cookie3 | main.rs:208:13:208:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:208:13:208:27 | cookie3.clone() | main.rs:208:9:208:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | -| main.rs:235:9:235:19 | mut cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:235:23:235:42 | ...::new | main.rs:235:23:235:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:235:23:235:59 | ...::new(...) | main.rs:235:9:235:19 | mut cookie1 | provenance | | -| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | -| main.rs:236:5:236:11 | [SSA] cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:19 | cookie1 | provenance | | -| main.rs:236:5:236:11 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:237:13:237:19 | cookie1 | main.rs:237:13:237:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:237:13:237:27 | cookie1.clone() | main.rs:237:9:237:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:19 | cookie3 | provenance | | -| main.rs:245:9:245:15 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:245:19:245:38 | ...::new | main.rs:245:19:245:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:245:19:245:55 | ...::new(...) | main.rs:245:9:245:15 | cookie3 | provenance | | -| main.rs:246:13:246:19 | cookie3 | main.rs:246:13:246:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:246:13:246:27 | cookie3.clone() | main.rs:246:9:246:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:197:5:197:22 | ...::build | main.rs:197:5:197:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:41 | +| main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:198:5:198:22 | ...::build | main.rs:198:5:198:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:41 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:37 | +| main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:200:9:200:19 | mut cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:200:9:200:19 | mut cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:200:23:200:38 | ...::new | main.rs:200:23:200:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:200:23:200:55 | ...::new(...) | main.rs:200:9:200:19 | mut cookie1 | provenance | | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:242:5:242:26 | ...::build | main.rs:242:5:242:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:242:5:242:43 | ...::build(...) | main.rs:242:5:242:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:242:5:242:57 | ... .secure(...) | main.rs:242:59:242:64 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:243:5:243:26 | ...::build | main.rs:243:5:243:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:243:5:243:43 | ...::build(...) | main.rs:243:5:243:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:243:5:243:57 | ... .secure(...) | main.rs:243:5:243:67 | ... .path(...) | provenance | MaD:37 | +| main.rs:243:5:243:67 | ... .path(...) | main.rs:243:69:243:74 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:245:9:245:19 | mut cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | +| main.rs:245:9:245:19 | mut cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:245:23:245:42 | ...::new | main.rs:245:23:245:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:245:23:245:59 | ...::new(...) | main.rs:245:9:245:19 | mut cookie1 | provenance | | +| main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | +| main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:246:5:246:11 | cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | +| main.rs:246:5:246:11 | cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:247:13:247:19 | cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:247:13:247:27 | cookie1.clone() | main.rs:247:9:247:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:257:5:257:26 | ...::build | main.rs:257:5:257:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:257:5:257:43 | ...::build(...) | main.rs:257:45:257:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:259:9:259:15 | cookie3 | main.rs:260:13:260:19 | cookie3 | provenance | | +| main.rs:259:9:259:15 | cookie3 | main.rs:260:13:260:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:259:19:259:38 | ...::new | main.rs:259:19:259:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:259:19:259:55 | ...::new(...) | main.rs:259:9:259:15 | cookie3 | provenance | | +| main.rs:260:13:260:19 | cookie3 | main.rs:260:13:260:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:260:13:260:27 | cookie3.clone() | main.rs:260:9:260:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -634,32 +662,56 @@ nodes | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | -| main.rs:197:9:197:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:197:23:197:38 | ...::new | semmle.label | ...::new | -| main.rs:197:23:197:55 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:198:5:198:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:198:5:198:11 | cookie1 | semmle.label | cookie1 | -| main.rs:199:9:199:11 | add | semmle.label | add | -| main.rs:199:13:199:19 | cookie1 | semmle.label | cookie1 | -| main.rs:199:13:199:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:207:9:207:15 | cookie3 | semmle.label | cookie3 | -| main.rs:207:19:207:34 | ...::new | semmle.label | ...::new | -| main.rs:207:19:207:51 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:208:9:208:11 | add | semmle.label | add | -| main.rs:208:13:208:19 | cookie3 | semmle.label | cookie3 | -| main.rs:208:13:208:27 | cookie3.clone() | semmle.label | cookie3.clone() | -| main.rs:235:9:235:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:235:23:235:42 | ...::new | semmle.label | ...::new | -| main.rs:235:23:235:59 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:236:5:236:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:236:5:236:11 | cookie1 | semmle.label | cookie1 | -| main.rs:237:9:237:11 | add | semmle.label | add | -| main.rs:237:13:237:19 | cookie1 | semmle.label | cookie1 | -| main.rs:237:13:237:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:245:9:245:15 | cookie3 | semmle.label | cookie3 | -| main.rs:245:19:245:38 | ...::new | semmle.label | ...::new | -| main.rs:245:19:245:55 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:246:9:246:11 | add | semmle.label | add | -| main.rs:246:13:246:19 | cookie3 | semmle.label | cookie3 | -| main.rs:246:13:246:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:197:5:197:22 | ...::build | semmle.label | ...::build | +| main.rs:197:5:197:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:197:5:197:53 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:197:55:197:60 | finish | semmle.label | finish | +| main.rs:198:5:198:22 | ...::build | semmle.label | ...::build | +| main.rs:198:5:198:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:198:65:198:70 | finish | semmle.label | finish | +| main.rs:200:9:200:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:200:23:200:38 | ...::new | semmle.label | ...::new | +| main.rs:200:23:200:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | +| main.rs:202:9:202:11 | add | semmle.label | add | +| main.rs:202:13:202:19 | cookie1 | semmle.label | cookie1 | +| main.rs:202:13:202:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:212:5:212:22 | ...::build | semmle.label | ...::build | +| main.rs:212:5:212:39 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:212:41:212:46 | finish | semmle.label | finish | +| main.rs:214:9:214:15 | cookie3 | semmle.label | cookie3 | +| main.rs:214:19:214:34 | ...::new | semmle.label | ...::new | +| main.rs:214:19:214:51 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:215:9:215:11 | add | semmle.label | add | +| main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | +| main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:242:5:242:26 | ...::build | semmle.label | ...::build | +| main.rs:242:5:242:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:242:5:242:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:242:59:242:64 | finish | semmle.label | finish | +| main.rs:243:5:243:26 | ...::build | semmle.label | ...::build | +| main.rs:243:5:243:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:243:5:243:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:243:5:243:67 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:243:69:243:74 | finish | semmle.label | finish | +| main.rs:245:9:245:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:245:23:245:42 | ...::new | semmle.label | ...::new | +| main.rs:245:23:245:59 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:246:5:246:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:246:5:246:11 | cookie1 | semmle.label | cookie1 | +| main.rs:247:9:247:11 | add | semmle.label | add | +| main.rs:247:13:247:19 | cookie1 | semmle.label | cookie1 | +| main.rs:247:13:247:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:257:5:257:26 | ...::build | semmle.label | ...::build | +| main.rs:257:5:257:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:257:45:257:50 | finish | semmle.label | finish | +| main.rs:259:9:259:15 | cookie3 | semmle.label | cookie3 | +| main.rs:259:19:259:38 | ...::new | semmle.label | ...::new | +| main.rs:259:19:259:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:260:9:260:11 | add | semmle.label | add | +| main.rs:260:13:260:19 | cookie3 | semmle.label | cookie3 | +| main.rs:260:13:260:27 | cookie3.clone() | semmle.label | cookie3.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 79b9d734c2a..29c2f4aafc0 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -194,16 +194,23 @@ fn test_actix_web() { let mut jar = actix_web::cookie::CookieJar::new(); // secure set to false + ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + ActixCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] + let mut cookie1 = ActixCookie::new("name", "value"); // $ Source cookie1.set_secure(false); // $ Source jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] // secure set to true + ActixCookie::build("name", "value").secure(true).finish(); // good + let mut cookie2 = ActixCookie::new("name", "value"); cookie2.set_secure(true); // good jar.add(cookie2.clone()); // secure left as default + ActixCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + let cookie3 = ActixCookie::new("name", "value"); // $ Source jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] } @@ -232,16 +239,23 @@ fn test_http_types() { let mut jar = http_types::cookies::CookieJar::default(); // secure set to false + HttpTypesCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] + HttpTypesCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] + let mut cookie1 = HttpTypesCookie::new("name", "value"); // $ Source cookie1.set_secure(false); // $ Source jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] // secure set to true + HttpTypesCookie::build("name", "value").secure(true).finish(); // good + let mut cookie2 = HttpTypesCookie::new("name", "value"); cookie2.set_secure(true); // good jar.add(cookie2.clone()); // secure left as default + HttpTypesCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie] + let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] } From 21274d3d763803f068e5c6e552bf5e785e82955a Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:07:43 +0000 Subject: [PATCH 557/965] Rust: Add tests of poem CookieConfig. --- .../query-tests/security/CWE-614/Cargo.lock | 14 +++ .../security/CWE-614/CookieSet.expected | 14 +-- .../security/CWE-614/InsecureCookie.expected | 118 +++++++++--------- .../test/query-tests/security/CWE-614/main.rs | 13 ++ .../query-tests/security/CWE-614/options.yml | 2 +- 5 files changed, 94 insertions(+), 67 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock index f9d03f929df..50a5b405215 100644 --- a/rust/ql/test/query-tests/security/CWE-614/Cargo.lock +++ b/rust/ql/test/query-tests/security/CWE-614/Cargo.lock @@ -1771,6 +1771,7 @@ version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f977080932c87287147dca052951c3e2696f8759863f6b4e4c0c9ffe7a4cc8b" dependencies = [ + "base64 0.22.1", "bytes", "chrono", "cookie 0.18.1", @@ -1786,6 +1787,8 @@ dependencies = [ "percent-encoding", "pin-project-lite", "poem-derive", + "priority-queue", + "rand 0.9.2", "regex", "rfc7239", "serde", @@ -1889,6 +1892,17 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "priority-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5676d703dda103cbb035b653a9f11448c0a7216c7926bd35fcb5865475d0c970" +dependencies = [ + "autocfg", + "equivalent", + "indexmap", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index c210f9ed096..d2219b8693e 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -59,10 +59,10 @@ | main.rs:205:5:205:39 | ...::build(...) | secure | true | | main.rs:208:5:208:11 | [SSA] cookie2 | secure | true | | main.rs:208:5:208:11 | cookie2 | secure | true | -| main.rs:242:5:242:43 | ...::build(...) | secure | false | -| main.rs:243:5:243:43 | ...::build(...) | secure | false | -| main.rs:246:5:246:11 | [SSA] cookie1 | secure | false | -| main.rs:246:5:246:11 | cookie1 | secure | false | -| main.rs:250:5:250:43 | ...::build(...) | secure | true | -| main.rs:253:5:253:11 | [SSA] cookie2 | secure | true | -| main.rs:253:5:253:11 | cookie2 | secure | true | +| main.rs:255:5:255:43 | ...::build(...) | secure | false | +| main.rs:256:5:256:43 | ...::build(...) | secure | false | +| main.rs:259:5:259:11 | [SSA] cookie1 | secure | false | +| main.rs:259:5:259:11 | cookie1 | secure | false | +| main.rs:263:5:263:43 | ...::build(...) | secure | true | +| main.rs:266:5:266:11 | [SSA] cookie2 | secure | true | +| main.rs:266:5:266:11 | cookie2 | secure | true | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index bcf56bdad02..b5014db4e21 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -87,15 +87,15 @@ | main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:242:59:242:64 | finish | main.rs:242:5:242:26 | ...::build | main.rs:242:59:242:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:242:59:242:64 | finish | main.rs:242:5:242:43 | ...::build(...) | main.rs:242:59:242:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:243:69:243:74 | finish | main.rs:243:5:243:26 | ...::build | main.rs:243:69:243:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:243:69:243:74 | finish | main.rs:243:5:243:43 | ...::build(...) | main.rs:243:69:243:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:247:9:247:11 | add | main.rs:245:23:245:42 | ...::new | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:247:9:247:11 | add | main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:247:9:247:11 | add | main.rs:246:5:246:11 | cookie1 | main.rs:247:9:247:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:257:45:257:50 | finish | main.rs:257:5:257:26 | ...::build | main.rs:257:45:257:50 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:9:260:11 | add | main.rs:259:19:259:38 | ...::new | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:255:59:255:64 | finish | main.rs:255:5:255:26 | ...::build | main.rs:255:59:255:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:255:59:255:64 | finish | main.rs:255:5:255:43 | ...::build(...) | main.rs:255:59:255:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:256:69:256:74 | finish | main.rs:256:5:256:26 | ...::build | main.rs:256:69:256:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:256:69:256:74 | finish | main.rs:256:5:256:43 | ...::build(...) | main.rs:256:69:256:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:9:260:11 | add | main.rs:258:23:258:42 | ...::new | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:9:260:11 | add | main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:9:260:11 | add | main.rs:259:5:259:11 | cookie1 | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:270:45:270:50 | finish | main.rs:270:5:270:26 | ...::build | main.rs:270:45:270:50 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:273:9:273:11 | add | main.rs:272:19:272:38 | ...::new | main.rs:273:9:273:11 | add | Cookie attribute 'Secure' is not set to true. | edges | main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | @@ -357,31 +357,31 @@ edges | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | | main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:242:5:242:26 | ...::build | main.rs:242:5:242:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:242:5:242:43 | ...::build(...) | main.rs:242:5:242:57 | ... .secure(...) | provenance | MaD:41 | -| main.rs:242:5:242:57 | ... .secure(...) | main.rs:242:59:242:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:243:5:243:26 | ...::build | main.rs:243:5:243:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:243:5:243:43 | ...::build(...) | main.rs:243:5:243:57 | ... .secure(...) | provenance | MaD:41 | -| main.rs:243:5:243:57 | ... .secure(...) | main.rs:243:5:243:67 | ... .path(...) | provenance | MaD:37 | -| main.rs:243:5:243:67 | ... .path(...) | main.rs:243:69:243:74 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:245:9:245:19 | mut cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | -| main.rs:245:9:245:19 | mut cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:245:23:245:42 | ...::new | main.rs:245:23:245:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:245:23:245:59 | ...::new(...) | main.rs:245:9:245:19 | mut cookie1 | provenance | | -| main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | -| main.rs:246:5:246:11 | [SSA] cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:246:5:246:11 | cookie1 | main.rs:247:13:247:19 | cookie1 | provenance | | -| main.rs:246:5:246:11 | cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:247:13:247:19 | cookie1 | main.rs:247:13:247:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:247:13:247:27 | cookie1.clone() | main.rs:247:9:247:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:257:5:257:26 | ...::build | main.rs:257:5:257:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:257:5:257:43 | ...::build(...) | main.rs:257:45:257:50 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:259:9:259:15 | cookie3 | main.rs:260:13:260:19 | cookie3 | provenance | | -| main.rs:259:9:259:15 | cookie3 | main.rs:260:13:260:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:259:19:259:38 | ...::new | main.rs:259:19:259:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:259:19:259:55 | ...::new(...) | main.rs:259:9:259:15 | cookie3 | provenance | | -| main.rs:260:13:260:19 | cookie3 | main.rs:260:13:260:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:260:13:260:27 | cookie3.clone() | main.rs:260:9:260:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:255:5:255:26 | ...::build | main.rs:255:5:255:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:255:5:255:43 | ...::build(...) | main.rs:255:5:255:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:255:5:255:57 | ... .secure(...) | main.rs:255:59:255:64 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:256:5:256:26 | ...::build | main.rs:256:5:256:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:256:5:256:43 | ...::build(...) | main.rs:256:5:256:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:256:5:256:57 | ... .secure(...) | main.rs:256:5:256:67 | ... .path(...) | provenance | MaD:37 | +| main.rs:256:5:256:67 | ... .path(...) | main.rs:256:69:256:74 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:258:9:258:19 | mut cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | +| main.rs:258:9:258:19 | mut cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:258:23:258:42 | ...::new | main.rs:258:23:258:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:258:23:258:59 | ...::new(...) | main.rs:258:9:258:19 | mut cookie1 | provenance | | +| main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | +| main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:259:5:259:11 | cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | +| main.rs:259:5:259:11 | cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:260:13:260:19 | cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:260:13:260:27 | cookie1.clone() | main.rs:260:9:260:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:270:5:270:26 | ...::build | main.rs:270:5:270:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:270:5:270:43 | ...::build(...) | main.rs:270:45:270:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:272:9:272:15 | cookie3 | main.rs:273:13:273:19 | cookie3 | provenance | | +| main.rs:272:9:272:15 | cookie3 | main.rs:273:13:273:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:272:19:272:38 | ...::new | main.rs:272:19:272:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:272:19:272:55 | ...::new(...) | main.rs:272:9:272:15 | cookie3 | provenance | | +| main.rs:273:13:273:19 | cookie3 | main.rs:273:13:273:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:273:13:273:27 | cookie3.clone() | main.rs:273:9:273:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -688,30 +688,30 @@ nodes | main.rs:215:9:215:11 | add | semmle.label | add | | main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | | main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | -| main.rs:242:5:242:26 | ...::build | semmle.label | ...::build | -| main.rs:242:5:242:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:242:5:242:57 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:242:59:242:64 | finish | semmle.label | finish | -| main.rs:243:5:243:26 | ...::build | semmle.label | ...::build | -| main.rs:243:5:243:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:243:5:243:57 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:243:5:243:67 | ... .path(...) | semmle.label | ... .path(...) | -| main.rs:243:69:243:74 | finish | semmle.label | finish | -| main.rs:245:9:245:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:245:23:245:42 | ...::new | semmle.label | ...::new | -| main.rs:245:23:245:59 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:246:5:246:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:246:5:246:11 | cookie1 | semmle.label | cookie1 | -| main.rs:247:9:247:11 | add | semmle.label | add | -| main.rs:247:13:247:19 | cookie1 | semmle.label | cookie1 | -| main.rs:247:13:247:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:257:5:257:26 | ...::build | semmle.label | ...::build | -| main.rs:257:5:257:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:257:45:257:50 | finish | semmle.label | finish | -| main.rs:259:9:259:15 | cookie3 | semmle.label | cookie3 | -| main.rs:259:19:259:38 | ...::new | semmle.label | ...::new | -| main.rs:259:19:259:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:255:5:255:26 | ...::build | semmle.label | ...::build | +| main.rs:255:5:255:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:255:5:255:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:255:59:255:64 | finish | semmle.label | finish | +| main.rs:256:5:256:26 | ...::build | semmle.label | ...::build | +| main.rs:256:5:256:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:256:5:256:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:256:5:256:67 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:256:69:256:74 | finish | semmle.label | finish | +| main.rs:258:9:258:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:258:23:258:42 | ...::new | semmle.label | ...::new | +| main.rs:258:23:258:59 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:259:5:259:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:259:5:259:11 | cookie1 | semmle.label | cookie1 | | main.rs:260:9:260:11 | add | semmle.label | add | -| main.rs:260:13:260:19 | cookie3 | semmle.label | cookie3 | -| main.rs:260:13:260:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:260:13:260:19 | cookie1 | semmle.label | cookie1 | +| main.rs:260:13:260:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:270:5:270:26 | ...::build | semmle.label | ...::build | +| main.rs:270:5:270:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:270:45:270:50 | finish | semmle.label | finish | +| main.rs:272:9:272:15 | cookie3 | semmle.label | cookie3 | +| main.rs:272:19:272:38 | ...::new | semmle.label | ...::new | +| main.rs:272:19:272:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:273:9:273:11 | add | semmle.label | add | +| main.rs:273:13:273:19 | cookie3 | semmle.label | cookie3 | +| main.rs:273:13:273:27 | cookie3.clone() | semmle.label | cookie3.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 29c2f4aafc0..c996a7a039e 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -232,6 +232,19 @@ fn test_poem() { // secure left as default let cookie3 = PoemCookie::new_with_str("name", "value"); // $ MISSING: Source jar.add(cookie3.clone()); // $ MISSING: Alert[rust/insecure-cookie] + + // set secure via CookieConfig + let cookie_config_bad = poem::session::CookieConfig::new().secure(false); + _ = poem::session::ServerSession::new(cookie_config_bad, ()); // $ MISSING: Alert[rust/insecure-cookie] + + let cookie_config_bad2 = poem::session::CookieConfig::new().secure(false).name("name").path("/"); + _ = poem::session::ServerSession::new(cookie_config_bad2, ()); // $ MISSING: Alert[rust/insecure-cookie] + + let cookie_config_good = poem::session::CookieConfig::new().secure(true); + _ = poem::session::ServerSession::new(cookie_config_good, ()); // good + + let cookie_config_default = poem::session::CookieConfig::new(); + _ = poem::session::ServerSession::new(cookie_config_default, ()); // $ MISSING: Alert[rust/insecure-cookie] } fn test_http_types() { diff --git a/rust/ql/test/query-tests/security/CWE-614/options.yml b/rust/ql/test/query-tests/security/CWE-614/options.yml index 92ddac2a86d..72093c119bb 100644 --- a/rust/ql/test/query-tests/security/CWE-614/options.yml +++ b/rust/ql/test/query-tests/security/CWE-614/options.yml @@ -3,5 +3,5 @@ qltest_dependencies: - cookie = { version = "0.18.1", features = ["percent-encode", "signed", "private"] } - biscotti = { version = "0.4.3" } - actix-web = { version = "4", features = ["cookies"] } - - poem = { version = "3", features = ["cookie"] } + - poem = { version = "3", features = ["cookie", "session"] } - http-types = { version = "2", features = ["cookies"] } From 4014df9a6eab1337da1aa894ae0789a9a9a6f7a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 4 Nov 2025 17:57:52 +0000 Subject: [PATCH 558/965] Post-release preparation for codeql-cli-2.23.4 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 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/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 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/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/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182b..295d925c318 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.21-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a9172..b612696b816 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.13-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da..8b211353323 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.2-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549..39cdb717ca7 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.4-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7..7877ad717e2 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72..6427ecbb935 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4e..a19e72b95ec 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.3.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899e..2597e99f55b 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.4-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc..be82fc786d2 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: 1.0.34 +version: 1.0.35-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e..f4f9d02faed 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.2-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e375703..4a0baaa7836 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.9-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed..bcfc194a4cb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67d..98f0bdd5710 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.9.1-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216..bd19febdfaa 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.15-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71..93dd9cf7ae7 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.4-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d..e3283b5dc3f 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.35-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fba..bb28a8f6315 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.1.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2..7280bbcb67c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f0..3a400018dec 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.3-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522..37c9e4be522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.9-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c421..3c045cd83e5 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.20-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a02..a26c9d35de5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.20-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e7..f76c1f2ae45 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42b..fdf7de8e6a7 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0..7f969fdef42 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c..13a5b8507b3 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a8630..0cc0fbad906 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e3..24b697d1f49 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d3..f66b9d743f6 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a1..0aada9508ee 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a..4bb9cb4cb5f 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.35-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a5984..fa53c0be99f 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: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff6..94cae6f26a6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9..00008849702 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.16-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8..0c588182911 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19..b876c84bbe3 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b78..4d4b671071e 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.22-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa76..40a7eadd828 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b8269..a1af32ac079 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198..ba8c8aac044 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 6.0.1-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec49400609..d5a55b365f1 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.9-dev groups: - swift - queries From 7383e4ff23bc3e44f1da8a14662576ffe56ab10e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:20:44 +0000 Subject: [PATCH 559/965] Rust: Test for another edge cases supported by two of the libraries. --- .../security/CWE-614/CookieSet.expected | 18 ++- .../security/CWE-614/InsecureCookie.expected | 146 +++++++++++------- .../test/query-tests/security/CWE-614/main.rs | 8 + 3 files changed, 105 insertions(+), 67 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index d2219b8693e..4f26ce3c30a 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -59,10 +59,14 @@ | main.rs:205:5:205:39 | ...::build(...) | secure | true | | main.rs:208:5:208:11 | [SSA] cookie2 | secure | true | | main.rs:208:5:208:11 | cookie2 | secure | true | -| main.rs:255:5:255:43 | ...::build(...) | secure | false | -| main.rs:256:5:256:43 | ...::build(...) | secure | false | -| main.rs:259:5:259:11 | [SSA] cookie1 | secure | false | -| main.rs:259:5:259:11 | cookie1 | secure | false | -| main.rs:263:5:263:43 | ...::build(...) | secure | true | -| main.rs:266:5:266:11 | [SSA] cookie2 | secure | true | -| main.rs:266:5:266:11 | cookie2 | secure | true | +| main.rs:218:5:218:11 | [SSA] cookie2 | secure | false | +| main.rs:218:5:218:11 | cookie2 | secure | false | +| main.rs:259:5:259:43 | ...::build(...) | secure | false | +| main.rs:260:5:260:43 | ...::build(...) | secure | false | +| main.rs:263:5:263:11 | [SSA] cookie1 | secure | false | +| main.rs:263:5:263:11 | cookie1 | secure | false | +| main.rs:267:5:267:43 | ...::build(...) | secure | true | +| main.rs:270:5:270:11 | [SSA] cookie2 | secure | true | +| main.rs:270:5:270:11 | cookie2 | secure | true | +| main.rs:280:5:280:11 | [SSA] cookie2 | secure | false | +| main.rs:280:5:280:11 | cookie2 | secure | false | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index b5014db4e21..868760676a5 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -87,15 +87,19 @@ | main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:255:59:255:64 | finish | main.rs:255:5:255:26 | ...::build | main.rs:255:59:255:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:255:59:255:64 | finish | main.rs:255:5:255:43 | ...::build(...) | main.rs:255:59:255:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:256:69:256:74 | finish | main.rs:256:5:256:26 | ...::build | main.rs:256:69:256:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:256:69:256:74 | finish | main.rs:256:5:256:43 | ...::build(...) | main.rs:256:69:256:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:9:260:11 | add | main.rs:258:23:258:42 | ...::new | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:9:260:11 | add | main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:9:260:11 | add | main.rs:259:5:259:11 | cookie1 | main.rs:260:9:260:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:270:45:270:50 | finish | main.rs:270:5:270:26 | ...::build | main.rs:270:45:270:50 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:273:9:273:11 | add | main.rs:272:19:272:38 | ...::new | main.rs:273:9:273:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:259:59:259:64 | finish | main.rs:259:5:259:26 | ...::build | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:69:260:74 | finish | main.rs:260:5:260:26 | ...::build | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:262:23:262:42 | ...::new | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | +| main.rs:277:9:277:11 | add | main.rs:276:19:276:38 | ...::new | main.rs:277:9:277:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges | main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | @@ -357,31 +361,43 @@ edges | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | | main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:255:5:255:26 | ...::build | main.rs:255:5:255:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:255:5:255:43 | ...::build(...) | main.rs:255:5:255:57 | ... .secure(...) | provenance | MaD:41 | -| main.rs:255:5:255:57 | ... .secure(...) | main.rs:255:59:255:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:256:5:256:26 | ...::build | main.rs:256:5:256:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:256:5:256:43 | ...::build(...) | main.rs:256:5:256:57 | ... .secure(...) | provenance | MaD:41 | -| main.rs:256:5:256:57 | ... .secure(...) | main.rs:256:5:256:67 | ... .path(...) | provenance | MaD:37 | -| main.rs:256:5:256:67 | ... .path(...) | main.rs:256:69:256:74 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:258:9:258:19 | mut cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | -| main.rs:258:9:258:19 | mut cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:258:23:258:42 | ...::new | main.rs:258:23:258:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:258:23:258:59 | ...::new(...) | main.rs:258:9:258:19 | mut cookie1 | provenance | | -| main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | -| main.rs:259:5:259:11 | [SSA] cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:259:5:259:11 | cookie1 | main.rs:260:13:260:19 | cookie1 | provenance | | -| main.rs:259:5:259:11 | cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:260:13:260:19 | cookie1 | main.rs:260:13:260:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:260:13:260:27 | cookie1.clone() | main.rs:260:9:260:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:270:5:270:26 | ...::build | main.rs:270:5:270:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:270:5:270:43 | ...::build(...) | main.rs:270:45:270:50 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:272:9:272:15 | cookie3 | main.rs:273:13:273:19 | cookie3 | provenance | | -| main.rs:272:9:272:15 | cookie3 | main.rs:273:13:273:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:272:19:272:38 | ...::new | main.rs:272:19:272:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:272:19:272:55 | ...::new(...) | main.rs:272:9:272:15 | cookie3 | provenance | | -| main.rs:273:13:273:19 | cookie3 | main.rs:273:13:273:27 | cookie3.clone() | provenance | MaD:17 | -| main.rs:273:13:273:27 | cookie3.clone() | main.rs:273:9:273:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:259:5:259:26 | ...::build | main.rs:259:5:259:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:260:5:260:26 | ...::build | main.rs:260:5:260:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:37 | +| main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:262:9:262:19 | mut cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:262:9:262:19 | mut cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:262:23:262:42 | ...::new | main.rs:262:23:262:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:262:23:262:59 | ...::new(...) | main.rs:262:9:262:19 | mut cookie1 | provenance | | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | | 2 | Sink: ::build; Argument[self]; cookie-use | @@ -688,30 +704,40 @@ nodes | main.rs:215:9:215:11 | add | semmle.label | add | | main.rs:215:13:215:19 | cookie3 | semmle.label | cookie3 | | main.rs:215:13:215:27 | cookie3.clone() | semmle.label | cookie3.clone() | -| main.rs:255:5:255:26 | ...::build | semmle.label | ...::build | -| main.rs:255:5:255:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:255:5:255:57 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:255:59:255:64 | finish | semmle.label | finish | -| main.rs:256:5:256:26 | ...::build | semmle.label | ...::build | -| main.rs:256:5:256:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:256:5:256:57 | ... .secure(...) | semmle.label | ... .secure(...) | -| main.rs:256:5:256:67 | ... .path(...) | semmle.label | ... .path(...) | -| main.rs:256:69:256:74 | finish | semmle.label | finish | -| main.rs:258:9:258:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:258:23:258:42 | ...::new | semmle.label | ...::new | -| main.rs:258:23:258:59 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:259:5:259:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | -| main.rs:259:5:259:11 | cookie1 | semmle.label | cookie1 | -| main.rs:260:9:260:11 | add | semmle.label | add | -| main.rs:260:13:260:19 | cookie1 | semmle.label | cookie1 | -| main.rs:260:13:260:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:270:5:270:26 | ...::build | semmle.label | ...::build | -| main.rs:270:5:270:43 | ...::build(...) | semmle.label | ...::build(...) | -| main.rs:270:45:270:50 | finish | semmle.label | finish | -| main.rs:272:9:272:15 | cookie3 | semmle.label | cookie3 | -| main.rs:272:19:272:38 | ...::new | semmle.label | ...::new | -| main.rs:272:19:272:55 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:273:9:273:11 | add | semmle.label | add | -| main.rs:273:13:273:19 | cookie3 | semmle.label | cookie3 | -| main.rs:273:13:273:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:218:5:218:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:218:5:218:11 | cookie2 | semmle.label | cookie2 | +| main.rs:219:9:219:11 | add | semmle.label | add | +| main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | +| main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:259:5:259:26 | ...::build | semmle.label | ...::build | +| main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:259:59:259:64 | finish | semmle.label | finish | +| main.rs:260:5:260:26 | ...::build | semmle.label | ...::build | +| main.rs:260:5:260:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:260:69:260:74 | finish | semmle.label | finish | +| main.rs:262:9:262:19 | mut cookie1 | semmle.label | mut cookie1 | +| main.rs:262:23:262:42 | ...::new | semmle.label | ...::new | +| main.rs:262:23:262:59 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | +| main.rs:264:9:264:11 | add | semmle.label | add | +| main.rs:264:13:264:19 | cookie1 | semmle.label | cookie1 | +| main.rs:264:13:264:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:274:5:274:26 | ...::build | semmle.label | ...::build | +| main.rs:274:5:274:43 | ...::build(...) | semmle.label | ...::build(...) | +| main.rs:274:45:274:50 | finish | semmle.label | finish | +| main.rs:276:9:276:15 | cookie3 | semmle.label | cookie3 | +| main.rs:276:19:276:38 | ...::new | semmle.label | ...::new | +| main.rs:276:19:276:55 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:277:9:277:11 | add | semmle.label | add | +| main.rs:277:13:277:19 | cookie3 | semmle.label | cookie3 | +| main.rs:277:13:277:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:280:5:280:11 | [SSA] cookie2 | semmle.label | [SSA] cookie2 | +| main.rs:280:5:280:11 | cookie2 | semmle.label | cookie2 | +| main.rs:281:9:281:11 | add | semmle.label | add | +| main.rs:281:13:281:19 | cookie2 | semmle.label | cookie2 | +| main.rs:281:13:281:27 | cookie2.clone() | semmle.label | cookie2.clone() | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index c996a7a039e..2a5880fcff1 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -213,6 +213,10 @@ fn test_actix_web() { let cookie3 = ActixCookie::new("name", "value"); // $ Source jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] + + // secure reset to None + cookie2.set_secure(None); // $ Source + jar.add(cookie2.clone()); // $ Alert[rust/insecure-cookie] } fn test_poem() { @@ -271,6 +275,10 @@ fn test_http_types() { let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source jar.add(cookie3.clone()); // $ Alert[rust/insecure-cookie] + + // secure reset to None + cookie2.set_secure(None); // $ Source + jar.add(cookie2.clone()); // $ Alert[rust/insecure-cookie] } fn main() { From 5fed5a278ec7b9d043f393d6deabb3df240092d2 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 18:33:13 +0000 Subject: [PATCH 560/965] Rust: It turns out Poem defaults 'secure' to true. --- rust/ql/test/query-tests/security/CWE-614/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 2a5880fcff1..6aa0e3d7e49 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -233,9 +233,9 @@ fn test_poem() { cookie2.set_secure(true); // good jar.add(cookie2.clone()); - // secure left as default - let cookie3 = PoemCookie::new_with_str("name", "value"); // $ MISSING: Source - jar.add(cookie3.clone()); // $ MISSING: Alert[rust/insecure-cookie] + // secure left as default (which is `true` for Poem) + let cookie3 = PoemCookie::new_with_str("name", "value"); + jar.add(cookie3.clone()); // good // set secure via CookieConfig let cookie_config_bad = poem::session::CookieConfig::new().secure(false); @@ -248,7 +248,7 @@ fn test_poem() { _ = poem::session::ServerSession::new(cookie_config_good, ()); // good let cookie_config_default = poem::session::CookieConfig::new(); - _ = poem::session::ServerSession::new(cookie_config_default, ()); // $ MISSING: Alert[rust/insecure-cookie] + _ = poem::session::ServerSession::new(cookie_config_default, ()); // good } fn test_http_types() { From ff06181e4bcc39504837ec0833faffd4bca4e309 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 4 Nov 2025 19:05:52 +0000 Subject: [PATCH 561/965] Rust: We actually want barriers on set_secure(false) as well as set_secure(true), to prevent excessive flow paths. --- .../security/CWE-614/InsecureCookie.ql | 6 +- .../security/CWE-614/InsecureCookie.expected | 395 ++++++------------ .../test/query-tests/security/CWE-614/main.rs | 4 +- 3 files changed, 142 insertions(+), 263 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql index 3fb4924470f..61996adaf05 100644 --- a/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql +++ b/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql @@ -39,9 +39,9 @@ module InsecureCookieConfig implements DataFlow::ConfigSig { node instanceof Sink } - predicate isBarrier(DataFlow::Node node) { - // setting the 'secure' attribute to true - cookieSetNode(node, "secure", true) + predicate isBarrierIn(DataFlow::Node node) { + // setting the 'secure' attribute + cookieSetNode(node, "secure", _) or node instanceof Barrier } diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 868760676a5..222f4d7bd84 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -1,48 +1,26 @@ #select -| main.rs:8:66:8:70 | build | main.rs:8:19:8:31 | ...::build | main.rs:8:66:8:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:8:66:8:70 | build | main.rs:8:19:8:50 | ...::build(...) | main.rs:8:66:8:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:16:52:16:56 | build | main.rs:16:19:16:31 | ...::build | main.rs:16:52:16:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:20:56:20:60 | build | main.rs:20:5:20:17 | ...::build | main.rs:20:56:20:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:20:56:20:60 | build | main.rs:20:5:20:36 | ...::build(...) | main.rs:20:56:20:60 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:21:57:21:61 | build | main.rs:21:5:21:17 | ...::build | main.rs:21:57:21:61 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:21:57:21:61 | build | main.rs:21:5:21:36 | ...::build(...) | main.rs:21:57:21:61 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:25:54:25:58 | build | main.rs:25:5:25:17 | ...::build | main.rs:25:54:25:58 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:25:54:25:58 | build | main.rs:25:5:25:36 | ...::build(...) | main.rs:25:54:25:58 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:26:52:26:56 | build | main.rs:26:5:26:17 | ...::build | main.rs:26:52:26:56 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:26:52:26:56 | build | main.rs:26:5:26:36 | ...::build(...) | main.rs:26:52:26:56 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:27:53:27:57 | build | main.rs:27:5:27:17 | ...::build | main.rs:27:53:27:57 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:27:53:27:57 | build | main.rs:27:5:27:36 | ...::build(...) | main.rs:27:53:27:57 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:28:62:28:66 | build | main.rs:28:5:28:17 | ...::build | main.rs:28:62:28:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:28:62:28:66 | build | main.rs:28:5:28:36 | ...::build(...) | main.rs:28:62:28:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:29:62:29:66 | build | main.rs:29:5:29:17 | ...::build | main.rs:29:62:29:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:29:62:29:66 | build | main.rs:29:5:29:36 | ...::build(...) | main.rs:29:62:29:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:33:60:33:64 | build | main.rs:33:9:33:21 | ...::build | main.rs:33:60:33:64 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:33:60:33:64 | build | main.rs:33:9:33:40 | ...::build(...) | main.rs:33:60:33:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:35:60:35:64 | build | main.rs:35:9:35:21 | ...::build | main.rs:35:60:35:64 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:35:60:35:64 | build | main.rs:35:9:35:40 | ...::build(...) | main.rs:35:60:35:64 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:39:55:39:59 | build | main.rs:39:5:39:22 | ...::new | main.rs:39:55:39:59 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:39:55:39:59 | build | main.rs:39:5:39:39 | ...::new(...) | main.rs:39:55:39:59 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:40:66:40:70 | build | main.rs:40:5:40:17 | ...::build | main.rs:40:66:40:70 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:40:66:40:70 | build | main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:66:40:70 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:41:95:41:99 | build | main.rs:41:5:41:17 | ...::build | main.rs:41:95:41:99 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:41:95:41:99 | build | main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:95:41:99 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:42:74:42:78 | build | main.rs:42:5:42:17 | ...::build | main.rs:42:74:42:78 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:42:74:42:78 | build | main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:74:42:78 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:43:62:43:66 | build | main.rs:43:5:43:17 | ...::build | main.rs:43:62:43:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:43:62:43:66 | build | main.rs:43:5:43:46 | ... .path(...) | main.rs:43:62:43:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:44:68:44:72 | build | main.rs:44:5:44:17 | ...::build | main.rs:44:68:44:72 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:44:68:44:72 | build | main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:68:44:72 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:45:88:45:92 | build | main.rs:45:5:45:17 | ...::build | main.rs:45:88:45:92 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:45:88:45:92 | build | main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:88:45:92 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:46:64:46:68 | build | main.rs:46:5:46:17 | ...::build | main.rs:46:64:46:68 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:46:64:46:68 | build | main.rs:46:5:46:48 | ... .permanent() | main.rs:46:64:46:68 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:47:62:47:66 | build | main.rs:47:5:47:17 | ...::build | main.rs:47:62:47:66 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:47:62:47:66 | build | main.rs:47:5:47:46 | ... .removal() | main.rs:47:62:47:66 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:48:52:48:57 | finish | main.rs:48:5:48:17 | ...::build | main.rs:48:52:48:57 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:48:52:48:57 | finish | main.rs:48:5:48:36 | ...::build(...) | main.rs:48:52:48:57 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:49:41:49:45 | build | main.rs:49:5:49:17 | ...::build | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:49:41:49:45 | build | main.rs:49:5:49:25 | ...::build(...) | main.rs:49:41:49:45 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:50:56:50:60 | build | main.rs:50:5:50:17 | ...::build | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:50:56:50:60 | build | main.rs:50:5:50:40 | ...::build(...) | main.rs:50:56:50:60 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:53:65:53:69 | build | main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:65:53:69 | build | Cookie attribute 'Secure' is not set to true. | | main.rs:59:9:59:11 | add | main.rs:58:17:58:27 | ...::new | main.rs:59:9:59:11 | add | Cookie attribute 'Secure' is not set to true. | @@ -52,7 +30,6 @@ | main.rs:69:16:69:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:69:16:69:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | [SSA] a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | | main.rs:70:16:70:27 | add_original | main.rs:63:5:63:5 | a | main.rs:70:16:70:27 | add_original | Cookie attribute 'Secure' is not set to true. | -| main.rs:72:16:72:18 | add | main.rs:68:17:68:29 | ...::named | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | [SSA] b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:72:16:72:18 | add | main.rs:71:5:71:5 | b | main.rs:72:16:72:18 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:78:17:78:19 | add | main.rs:77:17:77:28 | ...::from | main.rs:78:17:78:19 | add | Cookie attribute 'Secure' is not set to true. | @@ -78,22 +55,16 @@ | main.rs:166:13:166:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:166:13:166:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:167:13:167:18 | insert | main.rs:155:13:155:41 | ...::new | main.rs:167:13:167:18 | insert | Cookie attribute 'Secure' is not set to true. | | main.rs:173:61:173:65 | build | main.rs:173:22:173:34 | ...::build | main.rs:173:61:173:65 | build | Cookie attribute 'Secure' is not set to true. | -| main.rs:197:55:197:60 | finish | main.rs:197:5:197:22 | ...::build | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:197:55:197:60 | finish | main.rs:197:5:197:39 | ...::build(...) | main.rs:197:55:197:60 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:198:65:198:70 | finish | main.rs:198:5:198:22 | ...::build | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:198:65:198:70 | finish | main.rs:198:5:198:39 | ...::build(...) | main.rs:198:65:198:70 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:202:9:202:11 | add | main.rs:200:23:200:38 | ...::new | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:202:9:202:11 | add | main.rs:201:5:201:11 | cookie1 | main.rs:202:9:202:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:212:41:212:46 | finish | main.rs:212:5:212:22 | ...::build | main.rs:212:41:212:46 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:259:59:259:64 | finish | main.rs:259:5:259:26 | ...::build | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:260:69:260:74 | finish | main.rs:260:5:260:26 | ...::build | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | -| main.rs:264:9:264:11 | add | main.rs:262:23:262:42 | ...::new | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:274:45:274:50 | finish | main.rs:274:5:274:26 | ...::build | main.rs:274:45:274:50 | finish | Cookie attribute 'Secure' is not set to true. | @@ -101,302 +72,258 @@ | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:31 | ...::build | main.rs:8:19:8:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:41 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:33 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:17 | ...::build | main.rs:20:5:20:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:41 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:33 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:17 | ...::build | main.rs:21:5:21:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:41 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:33 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:17 | ...::build | main.rs:25:5:25:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:41 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:33 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:17 | ...::build | main.rs:26:5:26:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:41 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:33 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:17 | ...::build | main.rs:27:5:27:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:41 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:33 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:17 | ...::build | main.rs:28:5:28:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:33 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:17 | ...::build | main.rs:29:5:29:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:33 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:21 | ...::build | main.rs:33:9:33:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:41 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:33 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:21 | ...::build | main.rs:35:9:35:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:41 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:33 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:22 | ...::new | main.rs:39:5:39:39 | ...::new(...) | provenance | Src:MaD:16 MaD:16 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:41 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:33 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:17 | ...::build | main.rs:40:5:40:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:40:5:40:36 | ...::build(...) | main.rs:40:5:40:50 | ... .expires(...) | provenance | MaD:33 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:41 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:33 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:17 | ...::build | main.rs:41:5:41:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:41:5:41:36 | ...::build(...) | main.rs:41:5:41:79 | ... .max_age(...) | provenance | MaD:35 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:41 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:33 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:17 | ...::build | main.rs:42:5:42:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:42:5:42:36 | ...::build(...) | main.rs:42:5:42:58 | ... .domain(...) | provenance | MaD:32 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:41 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:33 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:17 | ...::build | main.rs:43:5:43:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:43:5:43:36 | ...::build(...) | main.rs:43:5:43:46 | ... .path(...) | provenance | MaD:37 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:33 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:17 | ...::build | main.rs:44:5:44:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:44:5:44:36 | ...::build(...) | main.rs:44:5:44:52 | ... .http_only(...) | provenance | MaD:34 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:41 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:33 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:17 | ...::build | main.rs:45:5:45:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:45:5:45:36 | ...::build(...) | main.rs:45:5:45:72 | ... .same_site(...) | provenance | MaD:40 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:41 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:33 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:17 | ...::build | main.rs:46:5:46:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:46:5:46:36 | ...::build(...) | main.rs:46:5:46:48 | ... .permanent() | provenance | MaD:38 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:41 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:33 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:17 | ...::build | main.rs:47:5:47:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:47:5:47:36 | ...::build(...) | main.rs:47:5:47:46 | ... .removal() | provenance | MaD:39 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:41 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:33 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:17 | ...::build | main.rs:48:5:48:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:41 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:33 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:17 | ...::build | main.rs:49:5:49:25 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:41 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:33 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:17 | ...::build | main.rs:50:5:50:40 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:41 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:33 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:41 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:33 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:17 | +| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:16 | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:17 | +| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:16 | | main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | -| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:17 | +| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:16 | | main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:17 | +| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:16 | | main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | | main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | -| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:17 | +| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | +| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | | main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:17 | -| main.rs:68:9:68:13 | mut b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | +| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:16 | | main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | -| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:17 | +| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:16 | | main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:17 | +| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | | main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | +| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | -| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:17 | +| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | +| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | | main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:17 | +| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:16 | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:17 | +| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:16 | | main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | -| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:17 | +| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:16 | | main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:17 | +| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | | main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | -| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:17 | +| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:16 | | main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:17 | +| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:16 | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:17 | +| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:16 | | main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | -| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:17 | +| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:16 | | main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:17 | +| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:16 | | main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:36 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:31 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:17 | +| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:16 | | main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | | main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | -| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:17 | +| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:16 | | main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | -| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:17 | -| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:24 | -| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:27 | +| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:16 | +| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:23 | +| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:26 | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | -| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:17 | +| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:16 | | main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | -| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:17 | +| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:16 | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | -| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:17 | +| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:16 | | main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | -| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:17 | -| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:27 | +| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:16 | +| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:26 | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | -| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:17 | +| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:16 | | main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | | main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:10 MaD:10 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:16 | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:17 | +| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:16 | | main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | | main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | -| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:17 | -| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:23 | +| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:16 | +| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:22 | | main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:17 | -| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:28 | +| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:16 | +| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:27 | | main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:17 | -| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:21 | +| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:16 | +| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:20 | | main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:17 | -| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:26 | +| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:16 | +| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:25 | | main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:17 | -| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:22 | +| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:16 | +| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:21 | | main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:17 | -| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:25 | +| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:16 | +| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:24 | | main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:17 | -| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:31 | +| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:16 | +| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:30 | | main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:17 | -| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:19 | +| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:16 | +| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:18 | | main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:17 | -| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:29 | +| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:16 | +| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:28 | | main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:17 | -| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:20 | +| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:16 | +| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:19 | | main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:17 | -| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:30 | +| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:16 | +| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:29 | | main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:17 | -| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:18 | +| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:16 | +| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:17 | | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:5:197:22 | ...::build | main.rs:197:5:197:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:41 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:33 | | main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:198:5:198:22 | ...::build | main.rs:198:5:198:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:41 | -| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:37 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:33 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:32 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:200:9:200:19 | mut cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:200:9:200:19 | mut cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:200:23:200:38 | ...::new | main.rs:200:23:200:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:200:23:200:55 | ...::new(...) | main.rs:200:9:200:19 | mut cookie1 | provenance | | | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | | main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | -| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:16 | | main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | -| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:16 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | -| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | | main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:259:5:259:26 | ...::build | main.rs:259:5:259:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:41 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:33 | | main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:260:5:260:26 | ...::build | main.rs:260:5:260:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:41 | -| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:37 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:33 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:32 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:262:9:262:19 | mut cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:262:9:262:19 | mut cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:262:23:262:42 | ...::new | main.rs:262:23:262:59 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:262:23:262:59 | ...::new(...) | main.rs:262:9:262:19 | mut cookie1 | provenance | | | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | -| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:17 | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | | main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | -| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:16 | | main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | -| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:17 | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:16 | | main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | -| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:17 | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | | main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | @@ -414,129 +341,91 @@ models | 13 | Source: ::build; ReturnValue; cookie-create | | 14 | Source: ::named; ReturnValue; cookie-create | | 15 | Source: ::new; ReturnValue; cookie-create | -| 16 | Source: ::new; ReturnValue; cookie-create | -| 17 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 18 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | -| 19 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | -| 20 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | -| 21 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | -| 22 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | -| 23 | Summary: ::set_name; Argument[self]; ReturnValue; taint | -| 24 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 25 | Summary: ::set_path; Argument[self]; ReturnValue; taint | -| 26 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | -| 27 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 28 | Summary: ::set_value; Argument[self]; ReturnValue; taint | -| 29 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | -| 30 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | -| 31 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | -| 32 | Summary: ::domain; Argument[self]; ReturnValue; taint | -| 33 | Summary: ::expires; Argument[self]; ReturnValue; taint | -| 34 | Summary: ::http_only; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::max_age; Argument[self]; ReturnValue; taint | -| 36 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 38 | Summary: ::permanent; Argument[self]; ReturnValue; taint | -| 39 | Summary: ::removal; Argument[self]; ReturnValue; taint | -| 40 | Summary: ::same_site; Argument[self]; ReturnValue; taint | -| 41 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 16 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 17 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | +| 18 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | +| 19 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | +| 20 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | +| 21 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | +| 22 | Summary: ::set_name; Argument[self]; ReturnValue; taint | +| 23 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 24 | Summary: ::set_path; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | +| 26 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 27 | Summary: ::set_value; Argument[self]; ReturnValue; taint | +| 28 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | +| 29 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | +| 30 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | +| 31 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 32 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 33 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | nodes -| main.rs:8:19:8:31 | ...::build | semmle.label | ...::build | | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:8:66:8:70 | build | semmle.label | build | | main.rs:16:19:16:31 | ...::build | semmle.label | ...::build | | main.rs:16:19:16:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:16:52:16:56 | build | semmle.label | build | -| main.rs:20:5:20:17 | ...::build | semmle.label | ...::build | | main.rs:20:5:20:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:20:5:20:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:20:56:20:60 | build | semmle.label | build | -| main.rs:21:5:21:17 | ...::build | semmle.label | ...::build | | main.rs:21:5:21:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:21:5:21:55 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:21:57:21:61 | build | semmle.label | build | -| main.rs:25:5:25:17 | ...::build | semmle.label | ...::build | | main.rs:25:5:25:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:25:5:25:52 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:25:54:25:58 | build | semmle.label | build | -| main.rs:26:5:26:17 | ...::build | semmle.label | ...::build | | main.rs:26:5:26:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:26:5:26:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:26:52:26:56 | build | semmle.label | build | -| main.rs:27:5:27:17 | ...::build | semmle.label | ...::build | | main.rs:27:5:27:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:27:5:27:51 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:27:53:27:57 | build | semmle.label | build | -| main.rs:28:5:28:17 | ...::build | semmle.label | ...::build | | main.rs:28:5:28:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:28:5:28:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:28:62:28:66 | build | semmle.label | build | -| main.rs:29:5:29:17 | ...::build | semmle.label | ...::build | | main.rs:29:5:29:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:29:5:29:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:29:62:29:66 | build | semmle.label | build | -| main.rs:33:9:33:21 | ...::build | semmle.label | ...::build | | main.rs:33:9:33:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:33:9:33:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:33:60:33:64 | build | semmle.label | build | -| main.rs:35:9:35:21 | ...::build | semmle.label | ...::build | | main.rs:35:9:35:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:35:9:35:58 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:35:60:35:64 | build | semmle.label | build | -| main.rs:39:5:39:22 | ...::new | semmle.label | ...::new | | main.rs:39:5:39:39 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:39:5:39:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:39:55:39:59 | build | semmle.label | build | -| main.rs:40:5:40:17 | ...::build | semmle.label | ...::build | -| main.rs:40:5:40:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:40:5:40:50 | ... .expires(...) | semmle.label | ... .expires(...) | | main.rs:40:5:40:64 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:40:66:40:70 | build | semmle.label | build | -| main.rs:41:5:41:17 | ...::build | semmle.label | ...::build | -| main.rs:41:5:41:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:41:5:41:79 | ... .max_age(...) | semmle.label | ... .max_age(...) | | main.rs:41:5:41:93 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:41:95:41:99 | build | semmle.label | build | -| main.rs:42:5:42:17 | ...::build | semmle.label | ...::build | -| main.rs:42:5:42:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:42:5:42:58 | ... .domain(...) | semmle.label | ... .domain(...) | | main.rs:42:5:42:72 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:42:74:42:78 | build | semmle.label | build | -| main.rs:43:5:43:17 | ...::build | semmle.label | ...::build | -| main.rs:43:5:43:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:43:5:43:46 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:43:5:43:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:43:62:43:66 | build | semmle.label | build | -| main.rs:44:5:44:17 | ...::build | semmle.label | ...::build | -| main.rs:44:5:44:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:44:5:44:52 | ... .http_only(...) | semmle.label | ... .http_only(...) | | main.rs:44:5:44:66 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:44:68:44:72 | build | semmle.label | build | -| main.rs:45:5:45:17 | ...::build | semmle.label | ...::build | -| main.rs:45:5:45:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:45:5:45:72 | ... .same_site(...) | semmle.label | ... .same_site(...) | | main.rs:45:5:45:86 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:45:88:45:92 | build | semmle.label | build | -| main.rs:46:5:46:17 | ...::build | semmle.label | ...::build | -| main.rs:46:5:46:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:46:5:46:48 | ... .permanent() | semmle.label | ... .permanent() | | main.rs:46:5:46:62 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:46:64:46:68 | build | semmle.label | build | -| main.rs:47:5:47:17 | ...::build | semmle.label | ...::build | -| main.rs:47:5:47:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:47:5:47:46 | ... .removal() | semmle.label | ... .removal() | | main.rs:47:5:47:60 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:47:62:47:66 | build | semmle.label | build | -| main.rs:48:5:48:17 | ...::build | semmle.label | ...::build | | main.rs:48:5:48:36 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:48:5:48:50 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:48:52:48:57 | finish | semmle.label | finish | -| main.rs:49:5:49:17 | ...::build | semmle.label | ...::build | | main.rs:49:5:49:25 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:49:5:49:39 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:49:41:49:45 | build | semmle.label | build | -| main.rs:50:5:50:17 | ...::build | semmle.label | ...::build | | main.rs:50:5:50:40 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:50:5:50:54 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:50:56:50:60 | build | semmle.label | build | @@ -678,18 +567,13 @@ nodes | main.rs:173:22:173:34 | ...::build | semmle.label | ...::build | | main.rs:173:22:173:59 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:173:61:173:65 | build | semmle.label | build | -| main.rs:197:5:197:22 | ...::build | semmle.label | ...::build | | main.rs:197:5:197:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:197:5:197:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:197:55:197:60 | finish | semmle.label | finish | -| main.rs:198:5:198:22 | ...::build | semmle.label | ...::build | | main.rs:198:5:198:39 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:198:5:198:53 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:198:5:198:63 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:198:65:198:70 | finish | semmle.label | finish | -| main.rs:200:9:200:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:200:23:200:38 | ...::new | semmle.label | ...::new | -| main.rs:200:23:200:55 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:201:5:201:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | | main.rs:201:5:201:11 | cookie1 | semmle.label | cookie1 | | main.rs:202:9:202:11 | add | semmle.label | add | @@ -709,18 +593,13 @@ nodes | main.rs:219:9:219:11 | add | semmle.label | add | | main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | | main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | -| main.rs:259:5:259:26 | ...::build | semmle.label | ...::build | | main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:259:59:259:64 | finish | semmle.label | finish | -| main.rs:260:5:260:26 | ...::build | semmle.label | ...::build | | main.rs:260:5:260:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:260:5:260:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:260:5:260:67 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:260:69:260:74 | finish | semmle.label | finish | -| main.rs:262:9:262:19 | mut cookie1 | semmle.label | mut cookie1 | -| main.rs:262:23:262:42 | ...::new | semmle.label | ...::new | -| main.rs:262:23:262:59 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:263:5:263:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | | main.rs:263:5:263:11 | cookie1 | semmle.label | cookie1 | | main.rs:264:9:264:11 | add | semmle.label | add | diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 6aa0e3d7e49..3dcb4a56122 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -197,7 +197,7 @@ fn test_actix_web() { ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] ActixCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] - let mut cookie1 = ActixCookie::new("name", "value"); // $ Source + let mut cookie1 = ActixCookie::new("name", "value"); cookie1.set_secure(false); // $ Source jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] @@ -259,7 +259,7 @@ fn test_http_types() { HttpTypesCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie] HttpTypesCookie::build("name", "value").secure(false).path("/").finish(); // $ Alert[rust/insecure-cookie] - let mut cookie1 = HttpTypesCookie::new("name", "value"); // $ Source + let mut cookie1 = HttpTypesCookie::new("name", "value"); cookie1.set_secure(false); // $ Source jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] From 68cd9ab3ab82fcd880b18950d6ce90075fc25c13 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 09:33:06 +0100 Subject: [PATCH 562/965] Swift: Update to Swift 6.2.1 --- swift/third_party/load.bzl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index d19345a1880..29d552bd3e2 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,6 +5,10 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main + "swift-prebuilt-macOS-swift-6.2.1-RELEASE-133.tar.zst": "c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7", + "swift-prebuilt-Linux-swift-6.2.1-RELEASE-133.tar.zst": "1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d", + "resource-dir-macOS-swift-6.2.1-RELEASE-133.zip": "e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8", + "resource-dir-Linux-swift-6.2.1-RELEASE-133.zip": "e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 51475df5a9cc941109b1002cd50233c128693f0e Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 5 Nov 2025 10:04:16 +0100 Subject: [PATCH 563/965] CODEOWNERS: Add code-scanning-language-coverage team to all extractors --- CODEOWNERS | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index ae1506f12a3..0a7504ba592 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,19 +5,25 @@ /actions/ @github/codeql-dynamic /cpp/ @github/codeql-c-analysis /csharp/ @github/codeql-csharp -/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor -/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor +/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor @github/code-scanning-language-coverage +/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor @github/code-scanning-language-coverage /go/ @github/codeql-go +/go/extractor/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript +/javascript/extractor/ @github/codeql-javascript @github/code-scanning-language-coverage /python/ @github/codeql-python +/python/extractor/ @github/codeql-python @github/code-scanning-language-coverage /ql/ @github/codeql-ql-for-ql-reviewers /ruby/ @github/codeql-ruby +/ruby/extractor/ @github/codeql-ruby @github/code-scanning-language-coverage /rust/ @github/codeql-rust +/rust/extractor/ @github/codeql-rust @github/code-scanning-language-coverage /shared/ @github/codeql-shared-libraries-reviewers /swift/ @github/codeql-swift +/swift/extractor/ @github/codeql-swift @github/code-scanning-language-coverage /misc/codegen/ @github/codeql-swift -/java/kotlin-extractor/ @github/codeql-kotlin +/java/kotlin-extractor/ @github/codeql-kotlin @github/code-scanning-language-coverage /java/ql/test-kotlin1/ @github/codeql-kotlin /java/ql/test-kotlin2/ @github/codeql-kotlin From 99a369228bd01ad2b2a59b5e15905e9d0c0032df Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 10:49:10 +0000 Subject: [PATCH 564/965] Rust: Model poem cookie methods. --- .../security/CWE-614/CookieSet.expected | 7 + .../security/CWE-614/InsecureCookie.expected | 384 +++++++++++------- .../test/query-tests/security/CWE-614/main.rs | 20 +- 3 files changed, 244 insertions(+), 167 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected index 4f26ce3c30a..220ba8ee62c 100644 --- a/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected +++ b/rust/ql/test/query-tests/security/CWE-614/CookieSet.expected @@ -61,6 +61,13 @@ | main.rs:208:5:208:11 | cookie2 | secure | true | | main.rs:218:5:218:11 | [SSA] cookie2 | secure | false | | main.rs:218:5:218:11 | cookie2 | secure | false | +| main.rs:228:5:228:11 | [SSA] cookie1 | secure | false | +| main.rs:228:5:228:11 | cookie1 | secure | false | +| main.rs:233:5:233:11 | [SSA] cookie2 | secure | true | +| main.rs:233:5:233:11 | cookie2 | secure | true | +| main.rs:241:29:241:62 | ...::new(...) | secure | false | +| main.rs:244:30:244:63 | ...::new(...) | secure | false | +| main.rs:247:30:247:63 | ...::new(...) | secure | true | | main.rs:259:5:259:43 | ...::build(...) | secure | false | | main.rs:260:5:260:43 | ...::build(...) | secure | false | | main.rs:263:5:263:11 | [SSA] cookie1 | secure | false | diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 222f4d7bd84..1cb18e1812e 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -63,6 +63,12 @@ | main.rs:215:9:215:11 | add | main.rs:214:19:214:34 | ...::new | main.rs:215:9:215:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:238:9:238:11 | add | main.rs:237:19:237:42 | ...::new_with_str | main.rs:238:9:238:11 | add | Cookie attribute 'Secure' is not set to true. | +| main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | +| main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | +| main.rs:251:9:251:41 | ...::new | main.rs:250:33:250:64 | ...::new | main.rs:251:9:251:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | @@ -72,258 +78,286 @@ | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:33 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:37 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:33 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:37 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:33 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:37 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:33 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:37 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:33 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:37 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:33 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:37 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:33 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:37 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:33 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:37 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:33 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:37 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:33 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:37 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:33 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:37 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:33 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:37 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:33 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:37 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:33 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:37 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:33 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:37 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:33 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:37 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:33 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:37 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:33 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:37 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:33 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:37 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:33 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:37 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:33 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:37 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:33 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:37 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:33 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:37 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:16 | +| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:20 | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:16 | -| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:20 | +| main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | -| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:16 | +| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:20 | | main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:16 | +| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:20 | | main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | | main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | -| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:16 | +| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | +| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | | main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:16 | -| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:14 MaD:14 | +| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:20 | +| main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | | main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | -| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:16 | +| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:20 | | main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:16 | +| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | | main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | +| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | -| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:16 | +| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | +| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | | main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:16 | +| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:20 | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:16 | -| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:20 | +| main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | -| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:16 | +| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:20 | | main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:16 | +| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | | main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | -| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:16 | +| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:20 | | main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:16 | +| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:20 | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:16 | -| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | +| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:20 | +| main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | -| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:16 | +| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:20 | | main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:16 | +| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:20 | | main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:31 | +| main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:35 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:16 | -| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:20 | +| main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | -| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:16 | +| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:20 | | main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | -| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:16 | -| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:23 | -| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:26 | +| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:20 | +| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:27 | +| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:30 | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | -| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:16 | +| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:20 | | main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | -| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:16 | +| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:20 | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | -| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:16 | +| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:20 | | main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | -| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:16 | -| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:26 | +| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:20 | +| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:30 | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | -| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:16 | +| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:20 | | main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | -| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:10 MaD:10 | +| main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:16 | +| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:20 | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:16 | -| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:11 MaD:11 | +| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | -| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:16 | -| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:22 | +| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:20 | +| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:26 | | main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:16 | -| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:27 | +| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:20 | +| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:31 | | main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:16 | -| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:20 | +| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:20 | +| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:24 | | main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:16 | -| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:25 | +| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:20 | +| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:29 | | main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:16 | -| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:21 | +| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:20 | +| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:25 | | main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:16 | -| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:24 | +| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:20 | +| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:28 | | main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:16 | -| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:30 | +| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:20 | +| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:34 | | main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:16 | -| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:18 | +| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:20 | +| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:22 | | main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:16 | -| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:28 | +| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:20 | +| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:32 | | main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:16 | -| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:19 | +| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:20 | +| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:23 | | main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:16 | -| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:29 | +| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:20 | +| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:33 | | main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:16 | -| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:17 | +| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:20 | +| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:21 | | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:33 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:37 | | main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:33 | -| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:32 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:37 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:36 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | -| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | | main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | -| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:16 | -| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | -| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:16 | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:20 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | -| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | | main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:33 | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | MaD:41 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:41 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | +| main.rs:237:9:237:15 | cookie3 | main.rs:238:13:238:19 | cookie3 | provenance | | +| main.rs:237:9:237:15 | cookie3 | main.rs:238:13:238:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:237:19:237:42 | ...::new_with_str | main.rs:237:19:237:59 | ...::new_with_str(...) | provenance | Src:MaD:19 MaD:19 | +| main.rs:237:19:237:59 | ...::new_with_str(...) | main.rs:237:9:237:15 | cookie3 | provenance | | +| main.rs:238:13:238:19 | cookie3 | main.rs:238:13:238:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:238:13:238:27 | cookie3.clone() | main.rs:238:9:238:11 | add | provenance | MaD:11 Sink:MaD:11 | +| main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | +| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:40 | +| main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | +| main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | +| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:40 | +| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:38 | +| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:39 | +| main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | +| main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:250:9:250:29 | cookie_config_default | main.rs:251:43:251:63 | cookie_config_default | provenance | | +| main.rs:250:33:250:64 | ...::new | main.rs:250:33:250:66 | ...::new(...) | provenance | Src:MaD:18 MaD:18 | +| main.rs:250:33:250:66 | ...::new(...) | main.rs:250:9:250:29 | cookie_config_default | provenance | | +| main.rs:251:43:251:63 | cookie_config_default | main.rs:251:9:251:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:37 | | main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:33 | -| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:32 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:37 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:36 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | -| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:16 | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | | main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:13 MaD:13 | +| main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | -| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:16 | -| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:15 MaD:15 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | -| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:16 | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:20 | | main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | -| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:16 | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | | main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | @@ -335,30 +369,38 @@ models | 7 | Sink: ::add_original; Argument[0]; cookie-use | | 8 | Sink: ::add; Argument[0]; cookie-use | | 9 | Sink: ::add_original; Argument[0]; cookie-use | -| 10 | Source: ::from; ReturnValue; cookie-create | -| 11 | Source: ::new; ReturnValue; cookie-create | -| 12 | Source: ::from; ReturnValue; cookie-create | -| 13 | Source: ::build; ReturnValue; cookie-create | -| 14 | Source: ::named; ReturnValue; cookie-create | -| 15 | Source: ::new; ReturnValue; cookie-create | -| 16 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 17 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | -| 18 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | -| 19 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | -| 20 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | -| 21 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | -| 22 | Summary: ::set_name; Argument[self]; ReturnValue; taint | -| 23 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 24 | Summary: ::set_path; Argument[self]; ReturnValue; taint | -| 25 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | -| 26 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 27 | Summary: ::set_value; Argument[self]; ReturnValue; taint | -| 28 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | -| 29 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | -| 30 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | -| 31 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 32 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 33 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 10 | Sink: ::new; Argument[0]; cookie-use | +| 11 | Sink: ::add; Argument[0]; cookie-use | +| 12 | Source: ::from; ReturnValue; cookie-create | +| 13 | Source: ::new; ReturnValue; cookie-create | +| 14 | Source: ::from; ReturnValue; cookie-create | +| 15 | Source: ::build; ReturnValue; cookie-create | +| 16 | Source: ::named; ReturnValue; cookie-create | +| 17 | Source: ::new; ReturnValue; cookie-create | +| 18 | Source: ::new; ReturnValue; cookie-create | +| 19 | Source: ::new_with_str; ReturnValue; cookie-create | +| 20 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 21 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | +| 22 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | +| 23 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | +| 24 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | +| 26 | Summary: ::set_name; Argument[self]; ReturnValue; taint | +| 27 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 28 | Summary: ::set_path; Argument[self]; ReturnValue; taint | +| 29 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | +| 30 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 31 | Summary: ::set_value; Argument[self]; ReturnValue; taint | +| 32 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | +| 33 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | +| 34 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | +| 35 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 36 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 37 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 38 | Summary: ::name; Argument[self]; ReturnValue; taint | +| 39 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 40 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 41 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; Argument[self]; taint | nodes | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -593,6 +635,34 @@ nodes | main.rs:219:9:219:11 | add | semmle.label | add | | main.rs:219:13:219:19 | cookie2 | semmle.label | cookie2 | | main.rs:219:13:219:27 | cookie2.clone() | semmle.label | cookie2.clone() | +| main.rs:228:5:228:11 | [SSA] cookie1 | semmle.label | [SSA] cookie1 | +| main.rs:228:5:228:11 | cookie1 | semmle.label | cookie1 | +| main.rs:229:9:229:11 | add | semmle.label | add | +| main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | +| main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | +| main.rs:237:9:237:15 | cookie3 | semmle.label | cookie3 | +| main.rs:237:19:237:42 | ...::new_with_str | semmle.label | ...::new_with_str | +| main.rs:237:19:237:59 | ...::new_with_str(...) | semmle.label | ...::new_with_str(...) | +| main.rs:238:9:238:11 | add | semmle.label | add | +| main.rs:238:13:238:19 | cookie3 | semmle.label | cookie3 | +| main.rs:238:13:238:27 | cookie3.clone() | semmle.label | cookie3.clone() | +| main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | +| main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:242:9:242:41 | ...::new | semmle.label | ...::new | +| main.rs:242:43:242:59 | cookie_config_bad | semmle.label | cookie_config_bad | +| main.rs:244:9:244:26 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | +| main.rs:244:30:244:63 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:244:30:244:77 | ... .secure(...) | semmle.label | ... .secure(...) | +| main.rs:244:30:244:90 | ... .name(...) | semmle.label | ... .name(...) | +| main.rs:244:30:244:100 | ... .path(...) | semmle.label | ... .path(...) | +| main.rs:245:9:245:41 | ...::new | semmle.label | ...::new | +| main.rs:245:43:245:60 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | +| main.rs:250:9:250:29 | cookie_config_default | semmle.label | cookie_config_default | +| main.rs:250:33:250:64 | ...::new | semmle.label | ...::new | +| main.rs:250:33:250:66 | ...::new(...) | semmle.label | ...::new(...) | +| main.rs:251:9:251:41 | ...::new | semmle.label | ...::new | +| main.rs:251:43:251:63 | cookie_config_default | semmle.label | cookie_config_default | | main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:259:59:259:64 | finish | semmle.label | finish | diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 3dcb4a56122..456a43f9a6c 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -225,8 +225,8 @@ fn test_poem() { // secure set to false let mut cookie1 = PoemCookie::new_with_str("name", "value"); - cookie1.set_secure(false); // $ MISSING: Source - jar.add(cookie1.clone()); // $ MISSING: Alert[rust/insecure-cookie] + cookie1.set_secure(false); // $ Source + jar.add(cookie1.clone()); // $ Alert[rust/insecure-cookie] // secure set to true let mut cookie2 = PoemCookie::new_with_str("name", "value"); @@ -234,21 +234,21 @@ fn test_poem() { jar.add(cookie2.clone()); // secure left as default (which is `true` for Poem) - let cookie3 = PoemCookie::new_with_str("name", "value"); - jar.add(cookie3.clone()); // good + let cookie3 = PoemCookie::new_with_str("name", "value"); // $ Source + jar.add(cookie3.clone()); // $ SPURIOUS: Alert[rust/insecure-cookie] // set secure via CookieConfig - let cookie_config_bad = poem::session::CookieConfig::new().secure(false); - _ = poem::session::ServerSession::new(cookie_config_bad, ()); // $ MISSING: Alert[rust/insecure-cookie] + let cookie_config_bad = poem::session::CookieConfig::new().secure(false); // $ Source + _ = poem::session::ServerSession::new(cookie_config_bad, ()); // $ Alert[rust/insecure-cookie] - let cookie_config_bad2 = poem::session::CookieConfig::new().secure(false).name("name").path("/"); - _ = poem::session::ServerSession::new(cookie_config_bad2, ()); // $ MISSING: Alert[rust/insecure-cookie] + let cookie_config_bad2 = poem::session::CookieConfig::new().secure(false).name("name").path("/"); // $ Source + _ = poem::session::ServerSession::new(cookie_config_bad2, ()); // $ Alert[rust/insecure-cookie] let cookie_config_good = poem::session::CookieConfig::new().secure(true); _ = poem::session::ServerSession::new(cookie_config_good, ()); // good - let cookie_config_default = poem::session::CookieConfig::new(); - _ = poem::session::ServerSession::new(cookie_config_default, ()); // good + let cookie_config_default = poem::session::CookieConfig::new(); // $ Source + _ = poem::session::ServerSession::new(cookie_config_default, ()); // $ SPURIOUS: Alert[rust/insecure-cookie] } fn test_http_types() { From ad24b7414ebfb98717630e22f9fcb9b63586fbc1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 11:32:30 +0000 Subject: [PATCH 565/965] Rust: Fix for Poem cookies defaulting secure. --- .../security/CWE-614/InsecureCookie.expected | 325 ++++++++---------- .../test/query-tests/security/CWE-614/main.rs | 8 +- 2 files changed, 154 insertions(+), 179 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected index 1cb18e1812e..e3a4998b532 100644 --- a/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected +++ b/rust/ql/test/query-tests/security/CWE-614/InsecureCookie.expected @@ -65,10 +65,8 @@ | main.rs:219:9:219:11 | add | main.rs:218:5:218:11 | cookie2 | main.rs:219:9:219:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:229:9:229:11 | add | main.rs:228:5:228:11 | cookie1 | main.rs:229:9:229:11 | add | Cookie attribute 'Secure' is not set to true. | -| main.rs:238:9:238:11 | add | main.rs:237:19:237:42 | ...::new_with_str | main.rs:238:9:238:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:242:9:242:41 | ...::new | main.rs:241:29:241:62 | ...::new(...) | main.rs:242:9:242:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:245:9:245:41 | ...::new | main.rs:244:30:244:63 | ...::new(...) | main.rs:245:9:245:41 | ...::new | Cookie attribute 'Secure' is not set to true. | -| main.rs:251:9:251:41 | ...::new | main.rs:250:33:250:64 | ...::new | main.rs:251:9:251:41 | ...::new | Cookie attribute 'Secure' is not set to true. | | main.rs:259:59:259:64 | finish | main.rs:259:5:259:43 | ...::build(...) | main.rs:259:59:259:64 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:260:69:260:74 | finish | main.rs:260:5:260:43 | ...::build(...) | main.rs:260:69:260:74 | finish | Cookie attribute 'Secure' is not set to true. | | main.rs:264:9:264:11 | add | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:9:264:11 | add | Cookie attribute 'Secure' is not set to true. | @@ -78,286 +76,276 @@ | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | | main.rs:281:9:281:11 | add | main.rs:280:5:280:11 | cookie2 | main.rs:281:9:281:11 | add | Cookie attribute 'Secure' is not set to true. | edges -| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:37 | +| main.rs:8:19:8:50 | ...::build(...) | main.rs:8:19:8:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:8:19:8:64 | ... .secure(...) | main.rs:8:66:8:70 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:16:19:16:31 | ...::build | main.rs:16:19:16:50 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:16:19:16:50 | ...::build(...) | main.rs:16:52:16:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:37 | +| main.rs:20:5:20:36 | ...::build(...) | main.rs:20:5:20:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:20:5:20:54 | ... .secure(...) | main.rs:20:56:20:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:37 | +| main.rs:21:5:21:36 | ...::build(...) | main.rs:21:5:21:55 | ... .secure(...) | provenance | MaD:35 | | main.rs:21:5:21:55 | ... .secure(...) | main.rs:21:57:21:61 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:37 | +| main.rs:25:5:25:36 | ...::build(...) | main.rs:25:5:25:52 | ... .secure(...) | provenance | MaD:35 | | main.rs:25:5:25:52 | ... .secure(...) | main.rs:25:54:25:58 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:37 | +| main.rs:26:5:26:36 | ...::build(...) | main.rs:26:5:26:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:26:5:26:50 | ... .secure(...) | main.rs:26:52:26:56 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:37 | +| main.rs:27:5:27:36 | ...::build(...) | main.rs:27:5:27:51 | ... .secure(...) | provenance | MaD:35 | | main.rs:27:5:27:51 | ... .secure(...) | main.rs:27:53:27:57 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:37 | +| main.rs:28:5:28:36 | ...::build(...) | main.rs:28:5:28:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:28:5:28:60 | ... .secure(...) | main.rs:28:62:28:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:37 | +| main.rs:29:5:29:36 | ...::build(...) | main.rs:29:5:29:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:29:5:29:60 | ... .secure(...) | main.rs:29:62:29:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:37 | +| main.rs:33:9:33:40 | ...::build(...) | main.rs:33:9:33:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:33:9:33:58 | ... .secure(...) | main.rs:33:60:33:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:37 | +| main.rs:35:9:35:40 | ...::build(...) | main.rs:35:9:35:58 | ... .secure(...) | provenance | MaD:35 | | main.rs:35:9:35:58 | ... .secure(...) | main.rs:35:60:35:64 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:37 | +| main.rs:39:5:39:39 | ...::new(...) | main.rs:39:5:39:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:39:5:39:53 | ... .secure(...) | main.rs:39:55:39:59 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:37 | +| main.rs:40:5:40:50 | ... .expires(...) | main.rs:40:5:40:64 | ... .secure(...) | provenance | MaD:35 | | main.rs:40:5:40:64 | ... .secure(...) | main.rs:40:66:40:70 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:37 | +| main.rs:41:5:41:79 | ... .max_age(...) | main.rs:41:5:41:93 | ... .secure(...) | provenance | MaD:35 | | main.rs:41:5:41:93 | ... .secure(...) | main.rs:41:95:41:99 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:37 | +| main.rs:42:5:42:58 | ... .domain(...) | main.rs:42:5:42:72 | ... .secure(...) | provenance | MaD:35 | | main.rs:42:5:42:72 | ... .secure(...) | main.rs:42:74:42:78 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:37 | +| main.rs:43:5:43:46 | ... .path(...) | main.rs:43:5:43:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:43:5:43:60 | ... .secure(...) | main.rs:43:62:43:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:37 | +| main.rs:44:5:44:52 | ... .http_only(...) | main.rs:44:5:44:66 | ... .secure(...) | provenance | MaD:35 | | main.rs:44:5:44:66 | ... .secure(...) | main.rs:44:68:44:72 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:37 | +| main.rs:45:5:45:72 | ... .same_site(...) | main.rs:45:5:45:86 | ... .secure(...) | provenance | MaD:35 | | main.rs:45:5:45:86 | ... .secure(...) | main.rs:45:88:45:92 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:37 | +| main.rs:46:5:46:48 | ... .permanent() | main.rs:46:5:46:62 | ... .secure(...) | provenance | MaD:35 | | main.rs:46:5:46:62 | ... .secure(...) | main.rs:46:64:46:68 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:37 | +| main.rs:47:5:47:46 | ... .removal() | main.rs:47:5:47:60 | ... .secure(...) | provenance | MaD:35 | | main.rs:47:5:47:60 | ... .secure(...) | main.rs:47:62:47:66 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:37 | +| main.rs:48:5:48:36 | ...::build(...) | main.rs:48:5:48:50 | ... .secure(...) | provenance | MaD:35 | | main.rs:48:5:48:50 | ... .secure(...) | main.rs:48:52:48:57 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:37 | +| main.rs:49:5:49:25 | ...::build(...) | main.rs:49:5:49:39 | ... .secure(...) | provenance | MaD:35 | | main.rs:49:5:49:39 | ... .secure(...) | main.rs:49:41:49:45 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:37 | +| main.rs:50:5:50:40 | ...::build(...) | main.rs:50:5:50:54 | ... .secure(...) | provenance | MaD:35 | | main.rs:50:5:50:54 | ... .secure(...) | main.rs:50:56:50:60 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:37 | +| main.rs:53:5:53:49 | ... .secure(...) | main.rs:53:5:53:63 | ... .secure(...) | provenance | MaD:35 | | main.rs:53:5:53:63 | ... .secure(...) | main.rs:53:65:53:69 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:58:9:58:13 | mut a | main.rs:59:13:59:13 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:20 | +| main.rs:58:9:58:13 | mut a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | | main.rs:58:9:58:13 | mut a | main.rs:60:22:60:22 | a | provenance | | -| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:20 | +| main.rs:58:9:58:13 | mut a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | | main.rs:58:17:58:27 | ...::new | main.rs:58:17:58:44 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:58:17:58:44 | ...::new(...) | main.rs:58:9:58:13 | mut a | provenance | | -| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:20 | +| main.rs:59:13:59:13 | a | main.rs:59:13:59:21 | a.clone() | provenance | MaD:18 | | main.rs:59:13:59:21 | a.clone() | main.rs:59:9:59:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:20 | +| main.rs:60:22:60:22 | a | main.rs:60:22:60:30 | a.clone() | provenance | MaD:18 | | main.rs:60:22:60:30 | a.clone() | main.rs:60:9:60:20 | add_original | provenance | MaD:5 Sink:MaD:5 | | main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | [SSA] a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:64:13:64:13 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:70:29:70:29 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:63:5:63:5 | a | main.rs:79:30:79:30 | a | provenance | | -| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | -| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:20 | +| main.rs:63:5:63:5 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | +| main.rs:64:13:64:13 | a | main.rs:64:13:64:21 | a.clone() | provenance | MaD:18 | | main.rs:64:13:64:21 | a.clone() | main.rs:64:9:64:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:68:9:68:13 | mut b | main.rs:69:20:69:20 | b | provenance | | -| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:20 | +| main.rs:68:9:68:13 | mut b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | | main.rs:68:17:68:29 | ...::named | main.rs:68:17:68:37 | ...::named(...) | provenance | Src:MaD:16 MaD:16 | | main.rs:68:17:68:37 | ...::named(...) | main.rs:68:9:68:13 | mut b | provenance | | -| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:20 | +| main.rs:69:20:69:20 | b | main.rs:69:20:69:28 | b.clone() | provenance | MaD:18 | | main.rs:69:20:69:28 | b.clone() | main.rs:69:16:69:18 | add | provenance | MaD:8 Sink:MaD:8 | -| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:20 | +| main.rs:70:29:70:29 | a | main.rs:70:29:70:37 | a.clone() | provenance | MaD:18 | | main.rs:70:29:70:37 | a.clone() | main.rs:70:16:70:27 | add_original | provenance | MaD:9 Sink:MaD:9 | | main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | +| main.rs:71:5:71:5 | [SSA] b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | | main.rs:71:5:71:5 | b | main.rs:72:20:72:20 | b | provenance | | -| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | -| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:20 | +| main.rs:71:5:71:5 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | +| main.rs:72:20:72:20 | b | main.rs:72:20:72:28 | b.clone() | provenance | MaD:18 | | main.rs:72:20:72:28 | b.clone() | main.rs:72:16:72:18 | add | provenance | MaD:8 Sink:MaD:8 | | main.rs:77:9:77:13 | mut c | main.rs:78:21:78:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:20 | +| main.rs:77:9:77:13 | mut c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | | main.rs:77:9:77:13 | mut c | main.rs:83:21:83:21 | c | provenance | | -| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:20 | +| main.rs:77:9:77:13 | mut c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | | main.rs:77:17:77:28 | ...::from | main.rs:77:17:77:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:77:17:77:36 | ...::from(...) | main.rs:77:9:77:13 | mut c | provenance | | -| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:20 | +| main.rs:78:21:78:21 | c | main.rs:78:21:78:29 | c.clone() | provenance | MaD:18 | | main.rs:78:21:78:29 | c.clone() | main.rs:78:17:78:19 | add | provenance | MaD:6 Sink:MaD:6 | -| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:20 | +| main.rs:79:30:79:30 | a | main.rs:79:30:79:38 | a.clone() | provenance | MaD:18 | | main.rs:79:30:79:38 | a.clone() | main.rs:79:17:79:28 | add_original | provenance | MaD:7 Sink:MaD:7 | -| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:20 | +| main.rs:83:21:83:21 | c | main.rs:83:21:83:29 | c.clone() | provenance | MaD:18 | | main.rs:83:21:83:29 | c.clone() | main.rs:83:17:83:19 | add | provenance | MaD:6 Sink:MaD:6 | | main.rs:87:9:87:13 | mut d | main.rs:88:13:88:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:20 | +| main.rs:87:9:87:13 | mut d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | | main.rs:87:9:87:13 | mut d | main.rs:94:13:94:13 | d | provenance | | -| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:20 | +| main.rs:87:9:87:13 | mut d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | | main.rs:87:17:87:28 | ...::from | main.rs:87:17:87:36 | ...::from(...) | provenance | Src:MaD:14 MaD:14 | | main.rs:87:17:87:36 | ...::from(...) | main.rs:87:9:87:13 | mut d | provenance | | -| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:20 | +| main.rs:88:13:88:13 | d | main.rs:88:13:88:21 | d.clone() | provenance | MaD:18 | | main.rs:88:13:88:21 | d.clone() | main.rs:88:9:88:11 | add | provenance | MaD:4 Sink:MaD:4 | -| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:20 | +| main.rs:94:13:94:13 | d | main.rs:94:13:94:21 | d.clone() | provenance | MaD:18 | | main.rs:94:13:94:21 | d.clone() | main.rs:94:9:94:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:114:5:114:17 | ...::build | main.rs:114:5:114:36 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | -| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:35 | +| main.rs:114:5:114:36 | ...::build(...) | main.rs:114:5:114:54 | ... .partitioned(...) | provenance | MaD:33 | | main.rs:114:5:114:54 | ... .partitioned(...) | main.rs:114:56:114:60 | build | provenance | MaD:2 Sink:MaD:2 | | main.rs:122:9:122:9 | a | main.rs:123:20:123:20 | a | provenance | | -| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:20 | +| main.rs:122:9:122:9 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | | main.rs:122:13:122:41 | ...::new | main.rs:122:13:122:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:122:13:122:58 | ...::new(...) | main.rs:122:9:122:9 | a | provenance | | -| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:20 | +| main.rs:123:20:123:20 | a | main.rs:123:20:123:28 | a.clone() | provenance | MaD:18 | | main.rs:123:20:123:28 | a.clone() | main.rs:123:13:123:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:130:9:130:9 | c | main.rs:131:20:131:20 | c | provenance | | -| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:20 | -| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:27 | -| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:30 | +| main.rs:130:9:130:9 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | +| main.rs:130:9:130:9 | c | main.rs:134:13:134:35 | c.set_partitioned(...) | provenance | MaD:25 | +| main.rs:130:13:130:13 | b | main.rs:130:13:130:31 | b.set_secure(...) | provenance | MaD:28 | | main.rs:130:13:130:31 | b.set_secure(...) | main.rs:130:9:130:9 | c | provenance | | -| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:20 | +| main.rs:131:20:131:20 | c | main.rs:131:20:131:28 | c.clone() | provenance | MaD:18 | | main.rs:131:20:131:28 | c.clone() | main.rs:131:13:131:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:134:9:134:9 | d | main.rs:135:20:135:20 | d | provenance | | -| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:20 | +| main.rs:134:9:134:9 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:134:13:134:35 | c.set_partitioned(...) | main.rs:134:9:134:9 | d | provenance | | -| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:20 | +| main.rs:135:20:135:20 | d | main.rs:135:20:135:28 | d.clone() | provenance | MaD:18 | | main.rs:135:20:135:28 | d.clone() | main.rs:135:13:135:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:146:9:146:9 | g | main.rs:147:20:147:20 | g | provenance | | -| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:20 | -| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:30 | +| main.rs:146:9:146:9 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | +| main.rs:146:13:146:13 | f | main.rs:146:13:146:31 | f.set_secure(...) | provenance | MaD:28 | | main.rs:146:13:146:31 | f.set_secure(...) | main.rs:146:9:146:9 | g | provenance | | -| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:20 | +| main.rs:147:20:147:20 | g | main.rs:147:20:147:28 | g.clone() | provenance | MaD:18 | | main.rs:147:20:147:28 | g.clone() | main.rs:147:13:147:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:151:9:151:9 | h | main.rs:152:20:152:20 | h | provenance | | | main.rs:151:13:151:42 | ...::from | main.rs:151:13:151:61 | ...::from(...) | provenance | Src:MaD:12 MaD:12 | | main.rs:151:13:151:61 | ...::from(...) | main.rs:151:9:151:9 | h | provenance | | | main.rs:152:20:152:20 | h | main.rs:152:13:152:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:155:9:155:9 | i | main.rs:156:20:156:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:157:20:157:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:158:20:158:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:159:20:159:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:160:20:160:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:161:20:161:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:162:20:162:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:163:20:163:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:164:20:164:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:165:20:165:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:166:20:166:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | | main.rs:155:9:155:9 | i | main.rs:167:20:167:20 | i | provenance | | -| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:20 | +| main.rs:155:9:155:9 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | | main.rs:155:13:155:41 | ...::new | main.rs:155:13:155:58 | ...::new(...) | provenance | Src:MaD:13 MaD:13 | | main.rs:155:13:155:58 | ...::new(...) | main.rs:155:9:155:9 | i | provenance | | -| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:20 | -| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:26 | +| main.rs:156:20:156:20 | i | main.rs:156:20:156:28 | i.clone() | provenance | MaD:18 | +| main.rs:156:20:156:28 | i.clone() | main.rs:156:20:156:46 | ... .set_name(...) | provenance | MaD:24 | | main.rs:156:20:156:46 | ... .set_name(...) | main.rs:156:13:156:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:20 | -| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:31 | +| main.rs:157:20:157:20 | i | main.rs:157:20:157:28 | i.clone() | provenance | MaD:18 | +| main.rs:157:20:157:28 | i.clone() | main.rs:157:20:157:48 | ... .set_value(...) | provenance | MaD:29 | | main.rs:157:20:157:48 | ... .set_value(...) | main.rs:157:13:157:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:20 | -| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:24 | +| main.rs:158:20:158:20 | i | main.rs:158:20:158:28 | i.clone() | provenance | MaD:18 | +| main.rs:158:20:158:28 | i.clone() | main.rs:158:20:158:48 | ... .set_http_only(...) | provenance | MaD:22 | | main.rs:158:20:158:48 | ... .set_http_only(...) | main.rs:158:13:158:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:20 | -| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:29 | +| main.rs:159:20:159:20 | i | main.rs:159:20:159:28 | i.clone() | provenance | MaD:18 | +| main.rs:159:20:159:28 | i.clone() | main.rs:159:20:159:70 | ... .set_same_site(...) | provenance | MaD:27 | | main.rs:159:20:159:70 | ... .set_same_site(...) | main.rs:159:13:159:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:20 | -| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:25 | +| main.rs:160:20:160:20 | i | main.rs:160:20:160:28 | i.clone() | provenance | MaD:18 | +| main.rs:160:20:160:28 | i.clone() | main.rs:160:20:160:46 | ... .set_max_age(...) | provenance | MaD:23 | | main.rs:160:20:160:46 | ... .set_max_age(...) | main.rs:160:13:160:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:20 | -| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:28 | +| main.rs:161:20:161:20 | i | main.rs:161:20:161:28 | i.clone() | provenance | MaD:18 | +| main.rs:161:20:161:28 | i.clone() | main.rs:161:20:161:42 | ... .set_path(...) | provenance | MaD:26 | | main.rs:161:20:161:42 | ... .set_path(...) | main.rs:161:13:161:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:20 | -| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:34 | +| main.rs:162:20:162:20 | i | main.rs:162:20:162:28 | i.clone() | provenance | MaD:18 | +| main.rs:162:20:162:28 | i.clone() | main.rs:162:20:162:41 | ... .unset_path() | provenance | MaD:32 | | main.rs:162:20:162:41 | ... .unset_path() | main.rs:162:13:162:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:20 | -| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:22 | +| main.rs:163:20:163:20 | i | main.rs:163:20:163:28 | i.clone() | provenance | MaD:18 | +| main.rs:163:20:163:28 | i.clone() | main.rs:163:20:163:54 | ... .set_domain(...) | provenance | MaD:20 | | main.rs:163:20:163:54 | ... .set_domain(...) | main.rs:163:13:163:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:20 | -| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:32 | +| main.rs:164:20:164:20 | i | main.rs:164:20:164:28 | i.clone() | provenance | MaD:18 | +| main.rs:164:20:164:28 | i.clone() | main.rs:164:20:164:43 | ... .unset_domain() | provenance | MaD:30 | | main.rs:164:20:164:43 | ... .unset_domain() | main.rs:164:13:164:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:20 | -| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:23 | +| main.rs:165:20:165:20 | i | main.rs:165:20:165:28 | i.clone() | provenance | MaD:18 | +| main.rs:165:20:165:28 | i.clone() | main.rs:165:20:165:46 | ... .set_expires(...) | provenance | MaD:21 | | main.rs:165:20:165:46 | ... .set_expires(...) | main.rs:165:13:165:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:20 | -| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:33 | +| main.rs:166:20:166:20 | i | main.rs:166:20:166:28 | i.clone() | provenance | MaD:18 | +| main.rs:166:20:166:28 | i.clone() | main.rs:166:20:166:44 | ... .unset_expires() | provenance | MaD:31 | | main.rs:166:20:166:44 | ... .unset_expires() | main.rs:166:13:166:18 | insert | provenance | MaD:1 Sink:MaD:1 | -| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:20 | -| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:21 | +| main.rs:167:20:167:20 | i | main.rs:167:20:167:28 | i.clone() | provenance | MaD:18 | +| main.rs:167:20:167:28 | i.clone() | main.rs:167:20:167:45 | ... .make_permanent() | provenance | MaD:19 | | main.rs:167:20:167:45 | ... .make_permanent() | main.rs:167:13:167:18 | insert | provenance | MaD:1 Sink:MaD:1 | | main.rs:173:22:173:34 | ...::build | main.rs:173:22:173:59 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:173:22:173:59 | ...::build(...) | main.rs:173:61:173:65 | build | provenance | MaD:2 Sink:MaD:2 | -| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:37 | +| main.rs:197:5:197:39 | ...::build(...) | main.rs:197:5:197:53 | ... .secure(...) | provenance | MaD:35 | | main.rs:197:5:197:53 | ... .secure(...) | main.rs:197:55:197:60 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:37 | -| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:36 | +| main.rs:198:5:198:39 | ...::build(...) | main.rs:198:5:198:53 | ... .secure(...) | provenance | MaD:35 | +| main.rs:198:5:198:53 | ... .secure(...) | main.rs:198:5:198:63 | ... .path(...) | provenance | MaD:34 | | main.rs:198:5:198:63 | ... .path(...) | main.rs:198:65:198:70 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:201:5:201:11 | [SSA] cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:19 | cookie1 | provenance | | -| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | -| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:201:5:201:11 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:202:13:202:19 | cookie1 | main.rs:202:13:202:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:202:13:202:27 | cookie1.clone() | main.rs:202:9:202:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:212:5:212:22 | ...::build | main.rs:212:5:212:39 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:212:5:212:39 | ...::build(...) | main.rs:212:41:212:46 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:19 | cookie3 | provenance | | -| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:214:9:214:15 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:214:19:214:34 | ...::new | main.rs:214:19:214:51 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:214:19:214:51 | ...::new(...) | main.rs:214:9:214:15 | cookie3 | provenance | | -| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:215:13:215:19 | cookie3 | main.rs:215:13:215:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:215:13:215:27 | cookie3.clone() | main.rs:215:9:215:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:218:5:218:11 | [SSA] cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:19 | cookie2 | provenance | | -| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | -| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:218:5:218:11 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:219:13:219:19 | cookie2 | main.rs:219:13:219:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:219:13:219:27 | cookie2.clone() | main.rs:219:9:219:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | -| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:228:5:228:11 | [SSA] cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | | -| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | MaD:41 | -| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:41 | -| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | -| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:19 | cookie1 | provenance | MaD:39 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:39 | +| main.rs:228:5:228:11 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:229:13:229:19 | cookie1 | main.rs:229:13:229:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:229:13:229:27 | cookie1.clone() | main.rs:229:9:229:11 | add | provenance | MaD:11 Sink:MaD:11 | -| main.rs:237:9:237:15 | cookie3 | main.rs:238:13:238:19 | cookie3 | provenance | | -| main.rs:237:9:237:15 | cookie3 | main.rs:238:13:238:27 | cookie3.clone() | provenance | MaD:20 | -| main.rs:237:19:237:42 | ...::new_with_str | main.rs:237:19:237:59 | ...::new_with_str(...) | provenance | Src:MaD:19 MaD:19 | -| main.rs:237:19:237:59 | ...::new_with_str(...) | main.rs:237:9:237:15 | cookie3 | provenance | | -| main.rs:238:13:238:19 | cookie3 | main.rs:238:13:238:27 | cookie3.clone() | provenance | MaD:20 | -| main.rs:238:13:238:27 | cookie3.clone() | main.rs:238:9:238:11 | add | provenance | MaD:11 Sink:MaD:11 | | main.rs:241:9:241:25 | cookie_config_bad | main.rs:242:43:242:59 | cookie_config_bad | provenance | | -| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:40 | +| main.rs:241:29:241:62 | ...::new(...) | main.rs:241:29:241:76 | ... .secure(...) | provenance | MaD:38 | | main.rs:241:29:241:76 | ... .secure(...) | main.rs:241:9:241:25 | cookie_config_bad | provenance | | | main.rs:242:43:242:59 | cookie_config_bad | main.rs:242:9:242:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | | main.rs:244:9:244:26 | cookie_config_bad2 | main.rs:245:43:245:60 | cookie_config_bad2 | provenance | | -| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:40 | -| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:38 | -| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:39 | +| main.rs:244:30:244:63 | ...::new(...) | main.rs:244:30:244:77 | ... .secure(...) | provenance | MaD:38 | +| main.rs:244:30:244:77 | ... .secure(...) | main.rs:244:30:244:90 | ... .name(...) | provenance | MaD:36 | +| main.rs:244:30:244:90 | ... .name(...) | main.rs:244:30:244:100 | ... .path(...) | provenance | MaD:37 | | main.rs:244:30:244:100 | ... .path(...) | main.rs:244:9:244:26 | cookie_config_bad2 | provenance | | | main.rs:245:43:245:60 | cookie_config_bad2 | main.rs:245:9:245:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | -| main.rs:250:9:250:29 | cookie_config_default | main.rs:251:43:251:63 | cookie_config_default | provenance | | -| main.rs:250:33:250:64 | ...::new | main.rs:250:33:250:66 | ...::new(...) | provenance | Src:MaD:18 MaD:18 | -| main.rs:250:33:250:66 | ...::new(...) | main.rs:250:9:250:29 | cookie_config_default | provenance | | -| main.rs:251:43:251:63 | cookie_config_default | main.rs:251:9:251:41 | ...::new | provenance | MaD:10 Sink:MaD:10 | -| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:37 | +| main.rs:259:5:259:43 | ...::build(...) | main.rs:259:5:259:57 | ... .secure(...) | provenance | MaD:35 | | main.rs:259:5:259:57 | ... .secure(...) | main.rs:259:59:259:64 | finish | provenance | MaD:3 Sink:MaD:3 | -| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:37 | -| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:36 | +| main.rs:260:5:260:43 | ...::build(...) | main.rs:260:5:260:57 | ... .secure(...) | provenance | MaD:35 | +| main.rs:260:5:260:57 | ... .secure(...) | main.rs:260:5:260:67 | ... .path(...) | provenance | MaD:34 | | main.rs:260:5:260:67 | ... .path(...) | main.rs:260:69:260:74 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:263:5:263:11 | [SSA] cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:19 | cookie1 | provenance | | -| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | -| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:20 | +| main.rs:263:5:263:11 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | +| main.rs:264:13:264:19 | cookie1 | main.rs:264:13:264:27 | cookie1.clone() | provenance | MaD:18 | | main.rs:264:13:264:27 | cookie1.clone() | main.rs:264:9:264:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:274:5:274:26 | ...::build | main.rs:274:5:274:43 | ...::build(...) | provenance | Src:MaD:15 MaD:15 | | main.rs:274:5:274:43 | ...::build(...) | main.rs:274:45:274:50 | finish | provenance | MaD:3 Sink:MaD:3 | | main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:19 | cookie3 | provenance | | -| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:276:9:276:15 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:276:19:276:38 | ...::new | main.rs:276:19:276:55 | ...::new(...) | provenance | Src:MaD:17 MaD:17 | | main.rs:276:19:276:55 | ...::new(...) | main.rs:276:9:276:15 | cookie3 | provenance | | -| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:20 | +| main.rs:277:13:277:19 | cookie3 | main.rs:277:13:277:27 | cookie3.clone() | provenance | MaD:18 | | main.rs:277:13:277:27 | cookie3.clone() | main.rs:277:9:277:11 | add | provenance | MaD:4 Sink:MaD:4 | | main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:280:5:280:11 | [SSA] cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:19 | cookie2 | provenance | | -| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | -| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:20 | +| main.rs:280:5:280:11 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | +| main.rs:281:13:281:19 | cookie2 | main.rs:281:13:281:27 | cookie2.clone() | provenance | MaD:18 | | main.rs:281:13:281:27 | cookie2.clone() | main.rs:281:9:281:11 | add | provenance | MaD:4 Sink:MaD:4 | models | 1 | Sink: ::insert; Argument[0]; cookie-use | @@ -377,30 +365,28 @@ models | 15 | Source: ::build; ReturnValue; cookie-create | | 16 | Source: ::named; ReturnValue; cookie-create | | 17 | Source: ::new; ReturnValue; cookie-create | -| 18 | Source: ::new; ReturnValue; cookie-create | -| 19 | Source: ::new_with_str; ReturnValue; cookie-create | -| 20 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 21 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | -| 22 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | -| 23 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | -| 24 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | -| 25 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | -| 26 | Summary: ::set_name; Argument[self]; ReturnValue; taint | -| 27 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 28 | Summary: ::set_path; Argument[self]; ReturnValue; taint | -| 29 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | -| 30 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 31 | Summary: ::set_value; Argument[self]; ReturnValue; taint | -| 32 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | -| 33 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | -| 34 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | -| 35 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | -| 36 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 37 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 38 | Summary: ::name; Argument[self]; ReturnValue; taint | -| 39 | Summary: ::path; Argument[self]; ReturnValue; taint | -| 40 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | -| 41 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; Argument[self]; taint | +| 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 19 | Summary: ::make_permanent; Argument[self]; ReturnValue; taint | +| 20 | Summary: ::set_domain; Argument[self]; ReturnValue; taint | +| 21 | Summary: ::set_expires; Argument[self]; ReturnValue; taint | +| 22 | Summary: ::set_http_only; Argument[self]; ReturnValue; taint | +| 23 | Summary: ::set_max_age; Argument[self]; ReturnValue; taint | +| 24 | Summary: ::set_name; Argument[self]; ReturnValue; taint | +| 25 | Summary: ::set_partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 26 | Summary: ::set_path; Argument[self]; ReturnValue; taint | +| 27 | Summary: ::set_same_site; Argument[self]; ReturnValue; taint | +| 28 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 29 | Summary: ::set_value; Argument[self]; ReturnValue; taint | +| 30 | Summary: ::unset_domain; Argument[self]; ReturnValue; taint | +| 31 | Summary: ::unset_expires; Argument[self]; ReturnValue; taint | +| 32 | Summary: ::unset_path; Argument[self]; ReturnValue; taint | +| 33 | Summary: ::partitioned; Argument[self].OptionalBarrier[cookie-partitioned-arg0]; ReturnValue; taint | +| 34 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 35 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 36 | Summary: ::name; Argument[self]; ReturnValue; taint | +| 37 | Summary: ::path; Argument[self]; ReturnValue; taint | +| 38 | Summary: ::secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; ReturnValue; taint | +| 39 | Summary: ::set_secure; Argument[self].OptionalBarrier[cookie-secure-arg0]; Argument[self]; taint | nodes | main.rs:8:19:8:50 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:8:19:8:64 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -640,12 +626,6 @@ nodes | main.rs:229:9:229:11 | add | semmle.label | add | | main.rs:229:13:229:19 | cookie1 | semmle.label | cookie1 | | main.rs:229:13:229:27 | cookie1.clone() | semmle.label | cookie1.clone() | -| main.rs:237:9:237:15 | cookie3 | semmle.label | cookie3 | -| main.rs:237:19:237:42 | ...::new_with_str | semmle.label | ...::new_with_str | -| main.rs:237:19:237:59 | ...::new_with_str(...) | semmle.label | ...::new_with_str(...) | -| main.rs:238:9:238:11 | add | semmle.label | add | -| main.rs:238:13:238:19 | cookie3 | semmle.label | cookie3 | -| main.rs:238:13:238:27 | cookie3.clone() | semmle.label | cookie3.clone() | | main.rs:241:9:241:25 | cookie_config_bad | semmle.label | cookie_config_bad | | main.rs:241:29:241:62 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:241:29:241:76 | ... .secure(...) | semmle.label | ... .secure(...) | @@ -658,11 +638,6 @@ nodes | main.rs:244:30:244:100 | ... .path(...) | semmle.label | ... .path(...) | | main.rs:245:9:245:41 | ...::new | semmle.label | ...::new | | main.rs:245:43:245:60 | cookie_config_bad2 | semmle.label | cookie_config_bad2 | -| main.rs:250:9:250:29 | cookie_config_default | semmle.label | cookie_config_default | -| main.rs:250:33:250:64 | ...::new | semmle.label | ...::new | -| main.rs:250:33:250:66 | ...::new(...) | semmle.label | ...::new(...) | -| main.rs:251:9:251:41 | ...::new | semmle.label | ...::new | -| main.rs:251:43:251:63 | cookie_config_default | semmle.label | cookie_config_default | | main.rs:259:5:259:43 | ...::build(...) | semmle.label | ...::build(...) | | main.rs:259:5:259:57 | ... .secure(...) | semmle.label | ... .secure(...) | | main.rs:259:59:259:64 | finish | semmle.label | finish | diff --git a/rust/ql/test/query-tests/security/CWE-614/main.rs b/rust/ql/test/query-tests/security/CWE-614/main.rs index 456a43f9a6c..1f723877a3e 100644 --- a/rust/ql/test/query-tests/security/CWE-614/main.rs +++ b/rust/ql/test/query-tests/security/CWE-614/main.rs @@ -234,8 +234,8 @@ fn test_poem() { jar.add(cookie2.clone()); // secure left as default (which is `true` for Poem) - let cookie3 = PoemCookie::new_with_str("name", "value"); // $ Source - jar.add(cookie3.clone()); // $ SPURIOUS: Alert[rust/insecure-cookie] + let cookie3 = PoemCookie::new_with_str("name", "value"); + jar.add(cookie3.clone()); // good // set secure via CookieConfig let cookie_config_bad = poem::session::CookieConfig::new().secure(false); // $ Source @@ -247,8 +247,8 @@ fn test_poem() { let cookie_config_good = poem::session::CookieConfig::new().secure(true); _ = poem::session::ServerSession::new(cookie_config_good, ()); // good - let cookie_config_default = poem::session::CookieConfig::new(); // $ Source - _ = poem::session::ServerSession::new(cookie_config_default, ()); // $ SPURIOUS: Alert[rust/insecure-cookie] + let cookie_config_default = poem::session::CookieConfig::new(); + _ = poem::session::ServerSession::new(cookie_config_default, ()); // good } fn test_http_types() { From 6e35cb9748e492dfa660b4f581b0e5269299627f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 11:36:04 +0000 Subject: [PATCH 566/965] Rust: Change note. --- rust/ql/lib/change-notes/2025-11-05-poem.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-11-05-poem.md diff --git a/rust/ql/lib/change-notes/2025-11-05-poem.md b/rust/ql/lib/change-notes/2025-11-05-poem.md new file mode 100644 index 00000000000..b71e52a8139 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-11-05-poem.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for cookie methods in the `poem` crate. From e78018769b3ca495267884ec8b59ce9f552c49b2 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:50:26 +0000 Subject: [PATCH 567/965] Rust: Add the model file (missed on previous commits). --- .../lib/codeql/rust/frameworks/poem.model.yml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 rust/ql/lib/codeql/rust/frameworks/poem.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/poem.model.yml b/rust/ql/lib/codeql/rust/frameworks/poem.model.yml new file mode 100644 index 00000000000..a64be8ada82 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/poem.model.yml @@ -0,0 +1,22 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::add", "Argument[0]", "cookie-use", "manual"] + - ["::new", "Argument[0]", "cookie-use", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::set_secure", "Argument[self].OptionalBarrier[cookie-secure-arg0]", "Argument[self]", "taint", "manual"] + - ["::secure", "Argument[self].OptionalBarrier[cookie-secure-arg0]", "ReturnValue", "taint", "manual"] + - ["::partitioned", "Argument[self].OptionalBarrier[cookie-partitioned-arg0]", "ReturnValue", "taint", "manual"] + - ["::name", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::path", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::domain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::http_only", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::same_site", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::max_age", "Argument[self]", "ReturnValue", "taint", "manual"] From db7b187961ffd2f85fdbd4b495bd665d96894e82 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 5 Nov 2025 15:32:24 +0100 Subject: [PATCH 568/965] Rust: Add more variables tests --- .../test/library-tests/variables/Cfg.expected | 2050 +++++++++-------- .../test/library-tests/variables/Ssa.expected | 797 +++---- rust/ql/test/library-tests/variables/main.rs | 12 + .../variables/variables.expected | 740 +++--- 4 files changed, 1831 insertions(+), 1768 deletions(-) diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 2e64a70cb5f..7d8da915bfb 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -881,1030 +881,1062 @@ edges | main.rs:367:20:367:20 | x | main.rs:365:5:369:9 | match x { ... } | | | main.rs:368:13:368:13 | _ | main.rs:368:18:368:18 | 0 | match | | main.rs:368:18:368:18 | 0 | main.rs:365:5:369:9 | match x { ... } | | -| main.rs:372:1:382:1 | enter fn param_pattern1 | main.rs:373:5:373:6 | a8 | | -| main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | main.rs:372:1:382:1 | exit fn param_pattern1 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:12 | ...: ... | match | -| main.rs:373:5:373:12 | ...: ... | main.rs:374:5:377:5 | TuplePat | | -| main.rs:374:5:377:5 | TuplePat | main.rs:375:9:375:10 | b3 | match | -| main.rs:374:5:377:19 | ...: ... | main.rs:379:5:379:18 | ExprStmt | | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | | -| main.rs:375:9:375:10 | b3 | main.rs:376:9:376:10 | c1 | match | -| main.rs:376:9:376:10 | c1 | main.rs:374:5:377:19 | ...: ... | match | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | | -| main.rs:378:9:382:1 | { ... } | main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | | -| main.rs:379:5:379:13 | print_str | main.rs:379:15:379:16 | a8 | | -| main.rs:379:5:379:17 | print_str(...) | main.rs:380:5:380:18 | ExprStmt | | -| main.rs:379:5:379:18 | ExprStmt | main.rs:379:5:379:13 | print_str | | -| main.rs:379:15:379:16 | a8 | main.rs:379:5:379:17 | print_str(...) | | -| main.rs:380:5:380:13 | print_str | main.rs:380:15:380:16 | b3 | | -| main.rs:380:5:380:17 | print_str(...) | main.rs:381:5:381:18 | ExprStmt | | -| main.rs:380:5:380:18 | ExprStmt | main.rs:380:5:380:13 | print_str | | -| main.rs:380:15:380:16 | b3 | main.rs:380:5:380:17 | print_str(...) | | -| main.rs:381:5:381:13 | print_str | main.rs:381:15:381:16 | c1 | | -| main.rs:381:5:381:17 | print_str(...) | main.rs:378:9:382:1 | { ... } | | -| main.rs:381:5:381:18 | ExprStmt | main.rs:381:5:381:13 | print_str | | -| main.rs:381:15:381:16 | c1 | main.rs:381:5:381:17 | print_str(...) | | -| main.rs:384:1:387:1 | enter fn param_pattern2 | main.rs:384:20:384:35 | ...::Left(...) | | -| main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | main.rs:384:1:387:1 | exit fn param_pattern2 | | -| main.rs:384:19:384:64 | ...: Either | main.rs:386:5:386:18 | ExprStmt | | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:33:384:34 | a9 | match | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:39:384:55 | ...::Right(...) | no-match | -| main.rs:384:20:384:55 | ... \| ... | main.rs:384:19:384:64 | ...: Either | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:33:384:34 | a9 | | -| main.rs:384:39:384:55 | ...::Right(...) | main.rs:384:53:384:54 | a9 | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:53:384:54 | a9 | | -| main.rs:385:9:387:1 | { ... } | main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | a9 | | -| main.rs:386:5:386:17 | print_i64(...) | main.rs:385:9:387:1 | { ... } | | -| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:16 | a9 | main.rs:386:5:386:17 | print_i64(...) | | -| main.rs:389:1:424:1 | enter fn destruct_assignment | main.rs:390:5:394:18 | let ... = ... | | -| main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | main.rs:389:1:424:1 | exit fn destruct_assignment | | -| main.rs:389:26:424:1 | { ... } | main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | | -| main.rs:390:5:394:18 | let ... = ... | main.rs:394:10:394:10 | 1 | | -| main.rs:390:9:394:5 | TuplePat | main.rs:391:13:391:15 | a10 | match | -| main.rs:391:9:391:15 | mut a10 | main.rs:392:13:392:14 | b4 | match | -| main.rs:391:13:391:15 | a10 | main.rs:391:9:391:15 | mut a10 | | -| main.rs:392:9:392:14 | mut b4 | main.rs:393:13:393:14 | c2 | match | -| main.rs:392:13:392:14 | b4 | main.rs:392:9:392:14 | mut b4 | | -| main.rs:393:9:393:14 | mut c2 | main.rs:395:5:395:19 | ExprStmt | match | -| main.rs:393:13:393:14 | c2 | main.rs:393:9:393:14 | mut c2 | | -| main.rs:394:9:394:17 | TupleExpr | main.rs:390:9:394:5 | TuplePat | | -| main.rs:394:10:394:10 | 1 | main.rs:394:13:394:13 | 2 | | -| main.rs:394:13:394:13 | 2 | main.rs:394:16:394:16 | 3 | | -| main.rs:394:16:394:16 | 3 | main.rs:394:9:394:17 | TupleExpr | | -| main.rs:395:5:395:13 | print_i64 | main.rs:395:15:395:17 | a10 | | -| main.rs:395:5:395:18 | print_i64(...) | main.rs:396:5:396:18 | ExprStmt | | -| main.rs:395:5:395:19 | ExprStmt | main.rs:395:5:395:13 | print_i64 | | -| main.rs:395:15:395:17 | a10 | main.rs:395:5:395:18 | print_i64(...) | | -| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:16 | b4 | | -| main.rs:396:5:396:17 | print_i64(...) | main.rs:397:5:397:18 | ExprStmt | | -| main.rs:396:5:396:18 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | -| main.rs:396:15:396:16 | b4 | main.rs:396:5:396:17 | print_i64(...) | | -| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | c2 | | -| main.rs:397:5:397:17 | print_i64(...) | main.rs:399:5:407:6 | ExprStmt | | +| main.rs:372:1:381:1 | enter fn match_pattern16 | main.rs:373:5:373:21 | let ... = ... | | +| main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | main.rs:372:1:381:1 | exit fn match_pattern16 | | +| main.rs:372:22:381:1 | { ... } | main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | | +| main.rs:373:5:373:21 | let ... = ... | main.rs:373:13:373:16 | Some | | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | +| main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | match | +| main.rs:373:13:373:16 | Some | main.rs:373:18:373:19 | 32 | | +| main.rs:373:13:373:20 | Some(...) | main.rs:373:9:373:9 | x | | +| main.rs:373:18:373:19 | 32 | main.rs:373:13:373:20 | Some(...) | | +| main.rs:374:5:380:5 | match x { ... } | main.rs:372:22:381:1 | { ... } | | +| main.rs:374:11:374:11 | x | main.rs:375:9:375:15 | Some(...) | | +| main.rs:375:9:375:15 | Some(...) | main.rs:375:14:375:14 | y | match | +| main.rs:375:9:375:15 | Some(...) | main.rs:379:9:379:9 | _ | no-match | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | | +| main.rs:375:14:375:14 | y | main.rs:377:17:377:20 | Some | match | +| main.rs:376:16:377:23 | [boolean(false)] let ... = ... | main.rs:379:9:379:9 | _ | false | +| main.rs:376:16:377:23 | [boolean(true)] let ... = ... | main.rs:378:16:378:24 | print_i64 | true | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:16:377:23 | [boolean(false)] let ... = ... | no-match | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:25:376:25 | y | match | +| main.rs:376:25:376:25 | y | main.rs:376:16:377:23 | [boolean(true)] let ... = ... | match | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | +| main.rs:377:17:377:20 | Some | main.rs:377:22:377:22 | y | | +| main.rs:377:17:377:23 | Some(...) | main.rs:376:20:376:26 | Some(...) | | +| main.rs:377:22:377:22 | y | main.rs:377:17:377:23 | Some(...) | | +| main.rs:378:16:378:24 | print_i64 | main.rs:378:26:378:26 | y | | +| main.rs:378:16:378:27 | print_i64(...) | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:378:26:378:26 | y | main.rs:378:16:378:27 | print_i64(...) | | +| main.rs:379:9:379:9 | _ | main.rs:379:14:379:15 | { ... } | match | +| main.rs:379:14:379:15 | { ... } | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:383:1:393:1 | enter fn param_pattern1 | main.rs:384:5:384:6 | a8 | | +| main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | main.rs:383:1:393:1 | exit fn param_pattern1 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:12 | ...: ... | match | +| main.rs:384:5:384:12 | ...: ... | main.rs:385:5:388:5 | TuplePat | | +| main.rs:385:5:388:5 | TuplePat | main.rs:386:9:386:10 | b3 | match | +| main.rs:385:5:388:19 | ...: ... | main.rs:390:5:390:18 | ExprStmt | | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | +| main.rs:386:9:386:10 | b3 | main.rs:387:9:387:10 | c1 | match | +| main.rs:387:9:387:10 | c1 | main.rs:385:5:388:19 | ...: ... | match | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | | +| main.rs:389:9:393:1 | { ... } | main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | | +| main.rs:390:5:390:13 | print_str | main.rs:390:15:390:16 | a8 | | +| main.rs:390:5:390:17 | print_str(...) | main.rs:391:5:391:18 | ExprStmt | | +| main.rs:390:5:390:18 | ExprStmt | main.rs:390:5:390:13 | print_str | | +| main.rs:390:15:390:16 | a8 | main.rs:390:5:390:17 | print_str(...) | | +| main.rs:391:5:391:13 | print_str | main.rs:391:15:391:16 | b3 | | +| main.rs:391:5:391:17 | print_str(...) | main.rs:392:5:392:18 | ExprStmt | | +| main.rs:391:5:391:18 | ExprStmt | main.rs:391:5:391:13 | print_str | | +| main.rs:391:15:391:16 | b3 | main.rs:391:5:391:17 | print_str(...) | | +| main.rs:392:5:392:13 | print_str | main.rs:392:15:392:16 | c1 | | +| main.rs:392:5:392:17 | print_str(...) | main.rs:389:9:393:1 | { ... } | | +| main.rs:392:5:392:18 | ExprStmt | main.rs:392:5:392:13 | print_str | | +| main.rs:392:15:392:16 | c1 | main.rs:392:5:392:17 | print_str(...) | | +| main.rs:395:1:398:1 | enter fn param_pattern2 | main.rs:395:20:395:35 | ...::Left(...) | | +| main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | main.rs:395:1:398:1 | exit fn param_pattern2 | | +| main.rs:395:19:395:64 | ...: Either | main.rs:397:5:397:18 | ExprStmt | | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:33:395:34 | a9 | match | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:39:395:55 | ...::Right(...) | no-match | +| main.rs:395:20:395:55 | ... \| ... | main.rs:395:19:395:64 | ...: Either | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:33:395:34 | a9 | | +| main.rs:395:39:395:55 | ...::Right(...) | main.rs:395:53:395:54 | a9 | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:53:395:54 | a9 | | +| main.rs:396:9:398:1 | { ... } | main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | | +| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | a9 | | +| main.rs:397:5:397:17 | print_i64(...) | main.rs:396:9:398:1 | { ... } | | | main.rs:397:5:397:18 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | -| main.rs:397:15:397:16 | c2 | main.rs:397:5:397:17 | print_i64(...) | | -| main.rs:399:5:403:5 | TupleExpr | main.rs:404:9:404:11 | a10 | | -| main.rs:399:5:407:5 | ... = ... | main.rs:408:5:408:19 | ExprStmt | | -| main.rs:399:5:407:6 | ExprStmt | main.rs:400:9:400:10 | c2 | | -| main.rs:400:9:400:10 | c2 | main.rs:401:9:401:10 | b4 | | -| main.rs:401:9:401:10 | b4 | main.rs:402:9:402:11 | a10 | | -| main.rs:402:9:402:11 | a10 | main.rs:399:5:403:5 | TupleExpr | | -| main.rs:403:9:407:5 | TupleExpr | main.rs:399:5:407:5 | ... = ... | | -| main.rs:404:9:404:11 | a10 | main.rs:405:9:405:10 | b4 | | -| main.rs:405:9:405:10 | b4 | main.rs:406:9:406:10 | c2 | | -| main.rs:406:9:406:10 | c2 | main.rs:403:9:407:5 | TupleExpr | | -| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:17 | a10 | | -| main.rs:408:5:408:18 | print_i64(...) | main.rs:409:5:409:18 | ExprStmt | | -| main.rs:408:5:408:19 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | -| main.rs:408:15:408:17 | a10 | main.rs:408:5:408:18 | print_i64(...) | | -| main.rs:409:5:409:13 | print_i64 | main.rs:409:15:409:16 | b4 | | -| main.rs:409:5:409:17 | print_i64(...) | main.rs:410:5:410:18 | ExprStmt | | -| main.rs:409:5:409:18 | ExprStmt | main.rs:409:5:409:13 | print_i64 | | -| main.rs:409:15:409:16 | b4 | main.rs:409:5:409:17 | print_i64(...) | | -| main.rs:410:5:410:13 | print_i64 | main.rs:410:15:410:16 | c2 | | -| main.rs:410:5:410:17 | print_i64(...) | main.rs:412:5:420:5 | ExprStmt | | -| main.rs:410:5:410:18 | ExprStmt | main.rs:410:5:410:13 | print_i64 | | -| main.rs:410:15:410:16 | c2 | main.rs:410:5:410:17 | print_i64(...) | | -| main.rs:412:5:420:5 | ExprStmt | main.rs:412:12:412:12 | 4 | | -| main.rs:412:5:420:5 | match ... { ... } | main.rs:422:5:422:19 | ExprStmt | | -| main.rs:412:11:412:16 | TupleExpr | main.rs:413:9:416:9 | TuplePat | | -| main.rs:412:12:412:12 | 4 | main.rs:412:15:412:15 | 5 | | -| main.rs:412:15:412:15 | 5 | main.rs:412:11:412:16 | TupleExpr | | -| main.rs:413:9:416:9 | TuplePat | main.rs:414:13:414:15 | a10 | match | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | | -| main.rs:414:13:414:15 | a10 | main.rs:415:13:415:14 | b4 | match | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | | -| main.rs:415:13:415:14 | b4 | main.rs:417:13:417:27 | ExprStmt | match | -| main.rs:416:14:419:9 | { ... } | main.rs:412:5:420:5 | match ... { ... } | | -| main.rs:417:13:417:21 | print_i64 | main.rs:417:23:417:25 | a10 | | -| main.rs:417:13:417:26 | print_i64(...) | main.rs:418:13:418:26 | ExprStmt | | -| main.rs:417:13:417:27 | ExprStmt | main.rs:417:13:417:21 | print_i64 | | -| main.rs:417:23:417:25 | a10 | main.rs:417:13:417:26 | print_i64(...) | | -| main.rs:418:13:418:21 | print_i64 | main.rs:418:23:418:24 | b4 | | -| main.rs:418:13:418:25 | print_i64(...) | main.rs:416:14:419:9 | { ... } | | -| main.rs:418:13:418:26 | ExprStmt | main.rs:418:13:418:21 | print_i64 | | -| main.rs:418:23:418:24 | b4 | main.rs:418:13:418:25 | print_i64(...) | | -| main.rs:422:5:422:13 | print_i64 | main.rs:422:15:422:17 | a10 | | -| main.rs:422:5:422:18 | print_i64(...) | main.rs:423:5:423:18 | ExprStmt | | -| main.rs:422:5:422:19 | ExprStmt | main.rs:422:5:422:13 | print_i64 | | -| main.rs:422:15:422:17 | a10 | main.rs:422:5:422:18 | print_i64(...) | | -| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | b4 | | -| main.rs:423:5:423:17 | print_i64(...) | main.rs:389:26:424:1 | { ... } | | -| main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | -| main.rs:423:15:423:16 | b4 | main.rs:423:5:423:17 | print_i64(...) | | -| main.rs:426:1:441:1 | enter fn closure_variable | main.rs:427:5:429:10 | let ... = ... | | -| main.rs:426:1:441:1 | exit fn closure_variable (normal) | main.rs:426:1:441:1 | exit fn closure_variable | | -| main.rs:426:23:441:1 | { ... } | main.rs:426:1:441:1 | exit fn closure_variable (normal) | | -| main.rs:427:5:429:10 | let ... = ... | main.rs:428:9:429:9 | \|...\| x | | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | | -| main.rs:427:9:427:23 | example_closure | main.rs:430:5:431:27 | let ... = ... | match | -| main.rs:428:9:429:9 | \|...\| x | main.rs:427:9:427:23 | example_closure | | -| main.rs:428:9:429:9 | enter \|...\| x | main.rs:428:10:428:10 | x | | -| main.rs:428:9:429:9 | exit \|...\| x (normal) | main.rs:428:9:429:9 | exit \|...\| x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:15 | ...: i64 | match | -| main.rs:428:10:428:15 | ...: i64 | main.rs:429:9:429:9 | x | | -| main.rs:429:9:429:9 | x | main.rs:428:9:429:9 | exit \|...\| x (normal) | | -| main.rs:430:5:431:27 | let ... = ... | main.rs:431:9:431:23 | example_closure | | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | | -| main.rs:430:9:430:10 | n1 | main.rs:432:5:432:18 | ExprStmt | match | -| main.rs:431:9:431:23 | example_closure | main.rs:431:25:431:25 | 5 | | -| main.rs:431:9:431:26 | example_closure(...) | main.rs:430:9:430:10 | n1 | | -| main.rs:431:25:431:25 | 5 | main.rs:431:9:431:26 | example_closure(...) | | -| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:16 | n1 | | -| main.rs:432:5:432:17 | print_i64(...) | main.rs:434:5:434:25 | ExprStmt | | -| main.rs:432:5:432:18 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | -| main.rs:432:15:432:16 | n1 | main.rs:432:5:432:17 | print_i64(...) | | -| main.rs:434:5:434:22 | immutable_variable | main.rs:434:5:434:24 | immutable_variable(...) | | -| main.rs:434:5:434:24 | immutable_variable(...) | main.rs:435:5:437:10 | let ... = ... | | -| main.rs:434:5:434:25 | ExprStmt | main.rs:434:5:434:22 | immutable_variable | | -| main.rs:435:5:437:10 | let ... = ... | main.rs:436:5:437:9 | \|...\| x | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:438:5:439:30 | let ... = ... | match | -| main.rs:436:5:437:9 | \|...\| x | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:436:5:437:9 | enter \|...\| x | main.rs:436:6:436:6 | x | | -| main.rs:436:5:437:9 | exit \|...\| x (normal) | main.rs:436:5:437:9 | exit \|...\| x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:11 | ...: i64 | match | -| main.rs:436:6:436:11 | ...: i64 | main.rs:437:9:437:9 | x | | -| main.rs:437:9:437:9 | x | main.rs:436:5:437:9 | exit \|...\| x (normal) | | -| main.rs:438:5:439:30 | let ... = ... | main.rs:439:9:439:26 | immutable_variable | | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | | -| main.rs:438:9:438:10 | n2 | main.rs:440:5:440:18 | ExprStmt | match | -| main.rs:439:9:439:26 | immutable_variable | main.rs:439:28:439:28 | 6 | | -| main.rs:439:9:439:29 | immutable_variable(...) | main.rs:438:9:438:10 | n2 | | -| main.rs:439:28:439:28 | 6 | main.rs:439:9:439:29 | immutable_variable(...) | | -| main.rs:440:5:440:13 | print_i64 | main.rs:440:15:440:16 | n2 | | -| main.rs:440:5:440:17 | print_i64(...) | main.rs:426:23:441:1 | { ... } | | -| main.rs:440:5:440:18 | ExprStmt | main.rs:440:5:440:13 | print_i64 | | -| main.rs:440:15:440:16 | n2 | main.rs:440:5:440:17 | print_i64(...) | | -| main.rs:443:1:473:1 | enter fn nested_function | main.rs:445:5:447:10 | let ... = ... | | -| main.rs:443:1:473:1 | exit fn nested_function (normal) | main.rs:443:1:473:1 | exit fn nested_function | | -| main.rs:443:22:473:1 | { ... } | main.rs:443:1:473:1 | exit fn nested_function (normal) | | -| main.rs:445:5:447:10 | let ... = ... | main.rs:446:9:447:9 | \|...\| x | | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | | -| main.rs:445:9:445:9 | f | main.rs:448:5:448:20 | ExprStmt | match | -| main.rs:446:9:447:9 | \|...\| x | main.rs:445:9:445:9 | f | | -| main.rs:446:9:447:9 | enter \|...\| x | main.rs:446:10:446:10 | x | | -| main.rs:446:9:447:9 | exit \|...\| x (normal) | main.rs:446:9:447:9 | exit \|...\| x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:15 | ...: i64 | match | -| main.rs:446:10:446:15 | ...: i64 | main.rs:447:9:447:9 | x | | -| main.rs:447:9:447:9 | x | main.rs:446:9:447:9 | exit \|...\| x (normal) | | -| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | f | | -| main.rs:448:5:448:19 | print_i64(...) | main.rs:450:5:453:5 | fn f | | -| main.rs:448:5:448:20 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | -| main.rs:448:15:448:15 | f | main.rs:448:17:448:17 | 1 | | -| main.rs:448:15:448:18 | f(...) | main.rs:448:5:448:19 | print_i64(...) | | -| main.rs:448:17:448:17 | 1 | main.rs:448:15:448:18 | f(...) | | -| main.rs:450:5:453:5 | enter fn f | main.rs:450:10:450:10 | x | | -| main.rs:450:5:453:5 | exit fn f (normal) | main.rs:450:5:453:5 | exit fn f | | -| main.rs:450:5:453:5 | fn f | main.rs:455:5:455:20 | ExprStmt | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:15 | ...: i64 | match | -| main.rs:450:10:450:15 | ...: i64 | main.rs:452:9:452:9 | x | | -| main.rs:451:5:453:5 | { ... } | main.rs:450:5:453:5 | exit fn f (normal) | | -| main.rs:452:9:452:9 | x | main.rs:452:13:452:13 | 1 | | -| main.rs:452:9:452:13 | ... + ... | main.rs:451:5:453:5 | { ... } | | -| main.rs:452:13:452:13 | 1 | main.rs:452:9:452:13 | ... + ... | | -| main.rs:455:5:455:13 | print_i64 | main.rs:455:15:455:15 | f | | -| main.rs:455:5:455:19 | print_i64(...) | main.rs:458:9:458:24 | ExprStmt | | -| main.rs:455:5:455:20 | ExprStmt | main.rs:455:5:455:13 | print_i64 | | -| main.rs:455:15:455:15 | f | main.rs:455:17:455:17 | 2 | | -| main.rs:455:15:455:18 | f(...) | main.rs:455:5:455:19 | print_i64(...) | | -| main.rs:455:17:455:17 | 2 | main.rs:455:15:455:18 | f(...) | | -| main.rs:457:5:472:5 | { ... } | main.rs:443:22:473:1 | { ... } | | -| main.rs:458:9:458:17 | print_i64 | main.rs:458:19:458:19 | f | | -| main.rs:458:9:458:23 | print_i64(...) | main.rs:459:9:462:9 | fn f | | -| main.rs:458:9:458:24 | ExprStmt | main.rs:458:9:458:17 | print_i64 | | -| main.rs:458:19:458:19 | f | main.rs:458:21:458:21 | 3 | | -| main.rs:458:19:458:22 | f(...) | main.rs:458:9:458:23 | print_i64(...) | | -| main.rs:458:21:458:21 | 3 | main.rs:458:19:458:22 | f(...) | | -| main.rs:459:9:462:9 | enter fn f | main.rs:459:14:459:14 | x | | -| main.rs:459:9:462:9 | exit fn f (normal) | main.rs:459:9:462:9 | exit fn f | | -| main.rs:459:9:462:9 | fn f | main.rs:464:9:466:9 | ExprStmt | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:19 | ...: i64 | match | -| main.rs:459:14:459:19 | ...: i64 | main.rs:461:13:461:13 | 2 | | -| main.rs:460:9:462:9 | { ... } | main.rs:459:9:462:9 | exit fn f (normal) | | -| main.rs:461:13:461:13 | 2 | main.rs:461:17:461:17 | x | | -| main.rs:461:13:461:17 | ... * ... | main.rs:460:9:462:9 | { ... } | | -| main.rs:461:17:461:17 | x | main.rs:461:13:461:17 | ... * ... | | -| main.rs:464:9:466:9 | ExprStmt | main.rs:465:13:465:28 | ExprStmt | | -| main.rs:464:9:466:9 | { ... } | main.rs:468:9:470:14 | let ... = ... | | -| main.rs:465:13:465:21 | print_i64 | main.rs:465:23:465:23 | f | | -| main.rs:465:13:465:27 | print_i64(...) | main.rs:464:9:466:9 | { ... } | | -| main.rs:465:13:465:28 | ExprStmt | main.rs:465:13:465:21 | print_i64 | | -| main.rs:465:23:465:23 | f | main.rs:465:25:465:25 | 4 | | -| main.rs:465:23:465:26 | f(...) | main.rs:465:13:465:27 | print_i64(...) | | -| main.rs:465:25:465:25 | 4 | main.rs:465:23:465:26 | f(...) | | -| main.rs:468:9:470:14 | let ... = ... | main.rs:469:13:470:13 | \|...\| x | | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | | -| main.rs:468:13:468:13 | f | main.rs:471:9:471:24 | ExprStmt | match | -| main.rs:469:13:470:13 | \|...\| x | main.rs:468:13:468:13 | f | | -| main.rs:469:13:470:13 | enter \|...\| x | main.rs:469:14:469:14 | x | | -| main.rs:469:13:470:13 | exit \|...\| x (normal) | main.rs:469:13:470:13 | exit \|...\| x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:19 | ...: i64 | match | -| main.rs:469:14:469:19 | ...: i64 | main.rs:470:13:470:13 | x | | -| main.rs:470:13:470:13 | x | main.rs:469:13:470:13 | exit \|...\| x (normal) | | -| main.rs:471:9:471:17 | print_i64 | main.rs:471:19:471:19 | f | | -| main.rs:471:9:471:23 | print_i64(...) | main.rs:457:5:472:5 | { ... } | | -| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_i64 | | -| main.rs:471:19:471:19 | f | main.rs:471:21:471:21 | 5 | | -| main.rs:471:19:471:22 | f(...) | main.rs:471:9:471:23 | print_i64(...) | | -| main.rs:471:21:471:21 | 5 | main.rs:471:19:471:22 | f(...) | | -| main.rs:475:1:482:1 | enter fn for_variable | main.rs:476:5:476:42 | let ... = ... | | -| main.rs:475:1:482:1 | exit fn for_variable (normal) | main.rs:475:1:482:1 | exit fn for_variable | | -| main.rs:475:19:482:1 | { ... } | main.rs:475:1:482:1 | exit fn for_variable (normal) | | -| main.rs:476:5:476:42 | let ... = ... | main.rs:476:15:476:22 | "apples" | | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | | -| main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | match | -| main.rs:476:13:476:41 | &... | main.rs:476:9:476:9 | v | | -| main.rs:476:14:476:41 | [...] | main.rs:476:13:476:41 | &... | | -| main.rs:476:15:476:22 | "apples" | main.rs:476:25:476:30 | "cake" | | -| main.rs:476:25:476:30 | "cake" | main.rs:476:33:476:40 | "coffee" | | -| main.rs:476:33:476:40 | "coffee" | main.rs:476:14:476:41 | [...] | | -| main.rs:478:5:481:5 | for ... in ... { ... } | main.rs:475:19:482:1 | { ... } | | -| main.rs:478:9:478:12 | text | main.rs:478:5:481:5 | for ... in ... { ... } | no-match | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | | -| main.rs:478:9:478:12 | text | main.rs:480:9:480:24 | ExprStmt | match | -| main.rs:479:12:479:12 | v | main.rs:478:9:478:12 | text | | -| main.rs:479:14:481:5 | { ... } | main.rs:478:9:478:12 | text | | -| main.rs:480:9:480:17 | print_str | main.rs:480:19:480:22 | text | | -| main.rs:480:9:480:23 | print_str(...) | main.rs:479:14:481:5 | { ... } | | -| main.rs:480:9:480:24 | ExprStmt | main.rs:480:9:480:17 | print_str | | -| main.rs:480:19:480:22 | text | main.rs:480:9:480:23 | print_str(...) | | -| main.rs:484:1:490:1 | enter fn add_assign | main.rs:485:5:485:18 | let ... = 0 | | -| main.rs:484:1:490:1 | exit fn add_assign (normal) | main.rs:484:1:490:1 | exit fn add_assign | | -| main.rs:484:17:490:1 | { ... } | main.rs:484:1:490:1 | exit fn add_assign (normal) | | -| main.rs:485:5:485:18 | let ... = 0 | main.rs:485:17:485:17 | 0 | | -| main.rs:485:9:485:13 | mut a | main.rs:486:5:486:11 | ExprStmt | match | -| main.rs:485:13:485:13 | a | main.rs:485:9:485:13 | mut a | | -| main.rs:485:17:485:17 | 0 | main.rs:485:13:485:13 | a | | -| main.rs:486:5:486:5 | a | main.rs:486:10:486:10 | 1 | | -| main.rs:486:5:486:10 | ... += ... | main.rs:487:5:487:17 | ExprStmt | | -| main.rs:486:5:486:11 | ExprStmt | main.rs:486:5:486:5 | a | | -| main.rs:486:10:486:10 | 1 | main.rs:486:5:486:10 | ... += ... | | -| main.rs:487:5:487:13 | print_i64 | main.rs:487:15:487:15 | a | | -| main.rs:487:5:487:16 | print_i64(...) | main.rs:488:5:488:28 | ExprStmt | | -| main.rs:487:5:487:17 | ExprStmt | main.rs:487:5:487:13 | print_i64 | | -| main.rs:487:15:487:15 | a | main.rs:487:5:487:16 | print_i64(...) | | -| main.rs:488:5:488:27 | ... .add_assign(...) | main.rs:489:5:489:17 | ExprStmt | | -| main.rs:488:5:488:28 | ExprStmt | main.rs:488:11:488:11 | a | | -| main.rs:488:6:488:11 | &mut a | main.rs:488:25:488:26 | 10 | | -| main.rs:488:11:488:11 | a | main.rs:488:6:488:11 | &mut a | | -| main.rs:488:25:488:26 | 10 | main.rs:488:5:488:27 | ... .add_assign(...) | | -| main.rs:489:5:489:13 | print_i64 | main.rs:489:15:489:15 | a | | -| main.rs:489:5:489:16 | print_i64(...) | main.rs:484:17:490:1 | { ... } | | -| main.rs:489:5:489:17 | ExprStmt | main.rs:489:5:489:13 | print_i64 | | -| main.rs:489:15:489:15 | a | main.rs:489:5:489:16 | print_i64(...) | | -| main.rs:492:1:498:1 | enter fn mutate | main.rs:493:5:493:18 | let ... = 1 | | -| main.rs:492:1:498:1 | exit fn mutate (normal) | main.rs:492:1:498:1 | exit fn mutate | | -| main.rs:492:13:498:1 | { ... } | main.rs:492:1:498:1 | exit fn mutate (normal) | | -| main.rs:493:5:493:18 | let ... = 1 | main.rs:493:17:493:17 | 1 | | -| main.rs:493:9:493:13 | mut i | main.rs:494:5:495:15 | let ... = ... | match | -| main.rs:493:13:493:13 | i | main.rs:493:9:493:13 | mut i | | -| main.rs:493:17:493:17 | 1 | main.rs:493:13:493:13 | i | | -| main.rs:494:5:495:15 | let ... = ... | main.rs:495:14:495:14 | i | | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | | -| main.rs:494:9:494:13 | ref_i | main.rs:496:5:496:15 | ExprStmt | match | -| main.rs:495:9:495:14 | &mut i | main.rs:494:9:494:13 | ref_i | | -| main.rs:495:14:495:14 | i | main.rs:495:9:495:14 | &mut i | | -| main.rs:496:5:496:10 | * ... | main.rs:496:14:496:14 | 2 | | -| main.rs:496:5:496:14 | ... = ... | main.rs:497:5:497:17 | ExprStmt | | -| main.rs:496:5:496:15 | ExprStmt | main.rs:496:6:496:10 | ref_i | | -| main.rs:496:6:496:10 | ref_i | main.rs:496:5:496:10 | * ... | | -| main.rs:496:14:496:14 | 2 | main.rs:496:5:496:14 | ... = ... | | -| main.rs:497:5:497:13 | print_i64 | main.rs:497:15:497:15 | i | | -| main.rs:497:5:497:16 | print_i64(...) | main.rs:492:13:498:1 | { ... } | | -| main.rs:497:5:497:17 | ExprStmt | main.rs:497:5:497:13 | print_i64 | | -| main.rs:497:15:497:15 | i | main.rs:497:5:497:16 | print_i64(...) | | -| main.rs:500:1:505:1 | enter fn mutate_param | main.rs:500:17:500:17 | x | | -| main.rs:500:1:505:1 | exit fn mutate_param (normal) | main.rs:500:1:505:1 | exit fn mutate_param | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:27 | ...: ... | match | -| main.rs:500:17:500:27 | ...: ... | main.rs:501:5:503:11 | ExprStmt | | -| main.rs:501:5:501:6 | * ... | main.rs:502:10:502:10 | x | | -| main.rs:501:5:503:10 | ... = ... | main.rs:504:5:504:13 | ExprStmt | | -| main.rs:501:5:503:11 | ExprStmt | main.rs:501:6:501:6 | x | | -| main.rs:501:6:501:6 | x | main.rs:501:5:501:6 | * ... | | -| main.rs:502:9:502:10 | * ... | main.rs:503:10:503:10 | x | | -| main.rs:502:9:503:10 | ... + ... | main.rs:501:5:503:10 | ... = ... | | -| main.rs:502:10:502:10 | x | main.rs:502:9:502:10 | * ... | | -| main.rs:503:9:503:10 | * ... | main.rs:502:9:503:10 | ... + ... | | -| main.rs:503:10:503:10 | x | main.rs:503:9:503:10 | * ... | | -| main.rs:504:5:504:12 | return x | main.rs:500:1:505:1 | exit fn mutate_param (normal) | return | -| main.rs:504:5:504:13 | ExprStmt | main.rs:504:12:504:12 | x | | -| main.rs:504:12:504:12 | x | main.rs:504:5:504:12 | return x | | -| main.rs:507:1:513:1 | enter fn mutate_param2 | main.rs:507:22:507:22 | x | | -| main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | main.rs:507:1:513:1 | exit fn mutate_param2 | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:35 | ...: ... | match | -| main.rs:507:22:507:35 | ...: ... | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:56 | ...: ... | match | -| main.rs:507:38:507:56 | ...: ... | main.rs:508:5:510:11 | ExprStmt | | -| main.rs:507:59:513:1 | { ... } | main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | | -| main.rs:508:5:508:6 | * ... | main.rs:509:10:509:10 | x | | -| main.rs:508:5:510:10 | ... = ... | main.rs:511:5:512:10 | ExprStmt | | -| main.rs:508:5:510:11 | ExprStmt | main.rs:508:6:508:6 | x | | -| main.rs:508:6:508:6 | x | main.rs:508:5:508:6 | * ... | | -| main.rs:509:9:509:10 | * ... | main.rs:510:10:510:10 | x | | -| main.rs:509:9:510:10 | ... + ... | main.rs:508:5:510:10 | ... = ... | | -| main.rs:509:10:509:10 | x | main.rs:509:9:509:10 | * ... | | -| main.rs:510:9:510:10 | * ... | main.rs:509:9:510:10 | ... + ... | | -| main.rs:510:10:510:10 | x | main.rs:510:9:510:10 | * ... | | -| main.rs:511:5:511:6 | * ... | main.rs:512:9:512:9 | x | | -| main.rs:511:5:512:9 | ... = ... | main.rs:507:59:513:1 | { ... } | | -| main.rs:511:5:512:10 | ExprStmt | main.rs:511:6:511:6 | y | | -| main.rs:511:6:511:6 | y | main.rs:511:5:511:6 | * ... | | -| main.rs:512:9:512:9 | x | main.rs:511:5:512:9 | ... = ... | | -| main.rs:515:1:535:1 | enter fn mutate_arg | main.rs:516:5:516:18 | let ... = 2 | | -| main.rs:515:1:535:1 | exit fn mutate_arg (normal) | main.rs:515:1:535:1 | exit fn mutate_arg | | -| main.rs:515:17:535:1 | { ... } | main.rs:515:1:535:1 | exit fn mutate_arg (normal) | | -| main.rs:516:5:516:18 | let ... = 2 | main.rs:516:17:516:17 | 2 | | -| main.rs:516:9:516:13 | mut x | main.rs:517:5:518:29 | let ... = ... | match | -| main.rs:516:13:516:13 | x | main.rs:516:9:516:13 | mut x | | -| main.rs:516:17:516:17 | 2 | main.rs:516:13:516:13 | x | | -| main.rs:517:5:518:29 | let ... = ... | main.rs:518:9:518:20 | mutate_param | | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | | -| main.rs:517:9:517:9 | y | main.rs:519:5:519:12 | ExprStmt | match | -| main.rs:518:9:518:20 | mutate_param | main.rs:518:27:518:27 | x | | -| main.rs:518:9:518:28 | mutate_param(...) | main.rs:517:9:517:9 | y | | -| main.rs:518:22:518:27 | &mut x | main.rs:518:9:518:28 | mutate_param(...) | | -| main.rs:518:27:518:27 | x | main.rs:518:22:518:27 | &mut x | | -| main.rs:519:5:519:6 | * ... | main.rs:519:10:519:11 | 10 | | -| main.rs:519:5:519:11 | ... = ... | main.rs:522:5:522:17 | ExprStmt | | -| main.rs:519:5:519:12 | ExprStmt | main.rs:519:6:519:6 | y | | -| main.rs:519:6:519:6 | y | main.rs:519:5:519:6 | * ... | | -| main.rs:519:10:519:11 | 10 | main.rs:519:5:519:11 | ... = ... | | -| main.rs:522:5:522:13 | print_i64 | main.rs:522:15:522:15 | x | | -| main.rs:522:5:522:16 | print_i64(...) | main.rs:524:5:524:18 | let ... = 4 | | -| main.rs:522:5:522:17 | ExprStmt | main.rs:522:5:522:13 | print_i64 | | -| main.rs:522:15:522:15 | x | main.rs:522:5:522:16 | print_i64(...) | | -| main.rs:524:5:524:18 | let ... = 4 | main.rs:524:17:524:17 | 4 | | -| main.rs:524:9:524:13 | mut z | main.rs:525:5:526:20 | let ... = ... | match | -| main.rs:524:13:524:13 | z | main.rs:524:9:524:13 | mut z | | -| main.rs:524:17:524:17 | 4 | main.rs:524:13:524:13 | z | | -| main.rs:525:5:526:20 | let ... = ... | main.rs:526:19:526:19 | x | | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | | -| main.rs:525:9:525:9 | w | main.rs:527:5:530:6 | ExprStmt | match | -| main.rs:526:9:526:19 | &mut ... | main.rs:525:9:525:9 | w | | -| main.rs:526:14:526:19 | &mut x | main.rs:526:9:526:19 | &mut ... | | -| main.rs:526:19:526:19 | x | main.rs:526:14:526:19 | &mut x | | -| main.rs:527:5:527:17 | mutate_param2 | main.rs:528:14:528:14 | z | | -| main.rs:527:5:530:5 | mutate_param2(...) | main.rs:531:5:531:13 | ExprStmt | | -| main.rs:527:5:530:6 | ExprStmt | main.rs:527:5:527:17 | mutate_param2 | | -| main.rs:528:9:528:14 | &mut z | main.rs:529:9:529:9 | w | | -| main.rs:528:14:528:14 | z | main.rs:528:9:528:14 | &mut z | | -| main.rs:529:9:529:9 | w | main.rs:527:5:530:5 | mutate_param2(...) | | -| main.rs:531:5:531:7 | * ... | main.rs:531:11:531:12 | 11 | | -| main.rs:531:5:531:12 | ... = ... | main.rs:534:5:534:17 | ExprStmt | | -| main.rs:531:5:531:13 | ExprStmt | main.rs:531:7:531:7 | w | | -| main.rs:531:6:531:7 | * ... | main.rs:531:5:531:7 | * ... | | -| main.rs:531:7:531:7 | w | main.rs:531:6:531:7 | * ... | | -| main.rs:531:11:531:12 | 11 | main.rs:531:5:531:12 | ... = ... | | -| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | z | | -| main.rs:534:5:534:16 | print_i64(...) | main.rs:515:17:535:1 | { ... } | | -| main.rs:534:5:534:17 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | -| main.rs:534:15:534:15 | z | main.rs:534:5:534:16 | print_i64(...) | | -| main.rs:537:1:543:1 | enter fn alias | main.rs:538:5:538:18 | let ... = 1 | | -| main.rs:537:1:543:1 | exit fn alias (normal) | main.rs:537:1:543:1 | exit fn alias | | -| main.rs:537:12:543:1 | { ... } | main.rs:537:1:543:1 | exit fn alias (normal) | | -| main.rs:538:5:538:18 | let ... = 1 | main.rs:538:17:538:17 | 1 | | -| main.rs:538:9:538:13 | mut x | main.rs:539:5:540:15 | let ... = ... | match | -| main.rs:538:13:538:13 | x | main.rs:538:9:538:13 | mut x | | -| main.rs:538:17:538:17 | 1 | main.rs:538:13:538:13 | x | | -| main.rs:539:5:540:15 | let ... = ... | main.rs:540:14:540:14 | x | | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | | -| main.rs:539:9:539:9 | y | main.rs:541:5:541:11 | ExprStmt | match | -| main.rs:540:9:540:14 | &mut x | main.rs:539:9:539:9 | y | | -| main.rs:540:14:540:14 | x | main.rs:540:9:540:14 | &mut x | | -| main.rs:541:5:541:6 | * ... | main.rs:541:10:541:10 | 2 | | -| main.rs:541:5:541:10 | ... = ... | main.rs:542:5:542:17 | ExprStmt | | -| main.rs:541:5:541:11 | ExprStmt | main.rs:541:6:541:6 | y | | -| main.rs:541:6:541:6 | y | main.rs:541:5:541:6 | * ... | | -| main.rs:541:10:541:10 | 2 | main.rs:541:5:541:10 | ... = ... | | -| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | -| main.rs:542:5:542:16 | print_i64(...) | main.rs:537:12:543:1 | { ... } | | -| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | -| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | -| main.rs:545:1:554:1 | enter fn capture_immut | main.rs:546:5:546:16 | let ... = 100 | | -| main.rs:545:1:554:1 | exit fn capture_immut (normal) | main.rs:545:1:554:1 | exit fn capture_immut | | -| main.rs:545:20:554:1 | { ... } | main.rs:545:1:554:1 | exit fn capture_immut (normal) | | -| main.rs:546:5:546:16 | let ... = 100 | main.rs:546:13:546:15 | 100 | | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | | -| main.rs:546:9:546:9 | x | main.rs:549:5:551:6 | let ... = ... | match | -| main.rs:546:13:546:15 | 100 | main.rs:546:9:546:9 | x | | -| main.rs:549:5:551:6 | let ... = ... | main.rs:549:15:551:5 | \|...\| ... | | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | | -| main.rs:549:9:549:11 | cap | main.rs:552:5:552:10 | ExprStmt | match | -| main.rs:549:15:551:5 | \|...\| ... | main.rs:549:9:549:11 | cap | | -| main.rs:549:15:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | -| main.rs:549:15:551:5 | exit \|...\| ... (normal) | main.rs:549:15:551:5 | exit \|...\| ... | | -| main.rs:549:18:551:5 | { ... } | main.rs:549:15:551:5 | exit \|...\| ... (normal) | | -| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | -| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:18:551:5 | { ... } | | -| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | -| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | -| main.rs:552:5:552:7 | cap | main.rs:552:5:552:9 | cap(...) | | -| main.rs:552:5:552:9 | cap(...) | main.rs:553:5:553:17 | ExprStmt | | -| main.rs:552:5:552:10 | ExprStmt | main.rs:552:5:552:7 | cap | | +| main.rs:397:15:397:16 | a9 | main.rs:397:5:397:17 | print_i64(...) | | +| main.rs:400:1:435:1 | enter fn destruct_assignment | main.rs:401:5:405:18 | let ... = ... | | +| main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | main.rs:400:1:435:1 | exit fn destruct_assignment | | +| main.rs:400:26:435:1 | { ... } | main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | | +| main.rs:401:5:405:18 | let ... = ... | main.rs:405:10:405:10 | 1 | | +| main.rs:401:9:405:5 | TuplePat | main.rs:402:13:402:15 | a10 | match | +| main.rs:402:9:402:15 | mut a10 | main.rs:403:13:403:14 | b4 | match | +| main.rs:402:13:402:15 | a10 | main.rs:402:9:402:15 | mut a10 | | +| main.rs:403:9:403:14 | mut b4 | main.rs:404:13:404:14 | c2 | match | +| main.rs:403:13:403:14 | b4 | main.rs:403:9:403:14 | mut b4 | | +| main.rs:404:9:404:14 | mut c2 | main.rs:406:5:406:19 | ExprStmt | match | +| main.rs:404:13:404:14 | c2 | main.rs:404:9:404:14 | mut c2 | | +| main.rs:405:9:405:17 | TupleExpr | main.rs:401:9:405:5 | TuplePat | | +| main.rs:405:10:405:10 | 1 | main.rs:405:13:405:13 | 2 | | +| main.rs:405:13:405:13 | 2 | main.rs:405:16:405:16 | 3 | | +| main.rs:405:16:405:16 | 3 | main.rs:405:9:405:17 | TupleExpr | | +| main.rs:406:5:406:13 | print_i64 | main.rs:406:15:406:17 | a10 | | +| main.rs:406:5:406:18 | print_i64(...) | main.rs:407:5:407:18 | ExprStmt | | +| main.rs:406:5:406:19 | ExprStmt | main.rs:406:5:406:13 | print_i64 | | +| main.rs:406:15:406:17 | a10 | main.rs:406:5:406:18 | print_i64(...) | | +| main.rs:407:5:407:13 | print_i64 | main.rs:407:15:407:16 | b4 | | +| main.rs:407:5:407:17 | print_i64(...) | main.rs:408:5:408:18 | ExprStmt | | +| main.rs:407:5:407:18 | ExprStmt | main.rs:407:5:407:13 | print_i64 | | +| main.rs:407:15:407:16 | b4 | main.rs:407:5:407:17 | print_i64(...) | | +| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:16 | c2 | | +| main.rs:408:5:408:17 | print_i64(...) | main.rs:410:5:418:6 | ExprStmt | | +| main.rs:408:5:408:18 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | +| main.rs:408:15:408:16 | c2 | main.rs:408:5:408:17 | print_i64(...) | | +| main.rs:410:5:414:5 | TupleExpr | main.rs:415:9:415:11 | a10 | | +| main.rs:410:5:418:5 | ... = ... | main.rs:419:5:419:19 | ExprStmt | | +| main.rs:410:5:418:6 | ExprStmt | main.rs:411:9:411:10 | c2 | | +| main.rs:411:9:411:10 | c2 | main.rs:412:9:412:10 | b4 | | +| main.rs:412:9:412:10 | b4 | main.rs:413:9:413:11 | a10 | | +| main.rs:413:9:413:11 | a10 | main.rs:410:5:414:5 | TupleExpr | | +| main.rs:414:9:418:5 | TupleExpr | main.rs:410:5:418:5 | ... = ... | | +| main.rs:415:9:415:11 | a10 | main.rs:416:9:416:10 | b4 | | +| main.rs:416:9:416:10 | b4 | main.rs:417:9:417:10 | c2 | | +| main.rs:417:9:417:10 | c2 | main.rs:414:9:418:5 | TupleExpr | | +| main.rs:419:5:419:13 | print_i64 | main.rs:419:15:419:17 | a10 | | +| main.rs:419:5:419:18 | print_i64(...) | main.rs:420:5:420:18 | ExprStmt | | +| main.rs:419:5:419:19 | ExprStmt | main.rs:419:5:419:13 | print_i64 | | +| main.rs:419:15:419:17 | a10 | main.rs:419:5:419:18 | print_i64(...) | | +| main.rs:420:5:420:13 | print_i64 | main.rs:420:15:420:16 | b4 | | +| main.rs:420:5:420:17 | print_i64(...) | main.rs:421:5:421:18 | ExprStmt | | +| main.rs:420:5:420:18 | ExprStmt | main.rs:420:5:420:13 | print_i64 | | +| main.rs:420:15:420:16 | b4 | main.rs:420:5:420:17 | print_i64(...) | | +| main.rs:421:5:421:13 | print_i64 | main.rs:421:15:421:16 | c2 | | +| main.rs:421:5:421:17 | print_i64(...) | main.rs:423:5:431:5 | ExprStmt | | +| main.rs:421:5:421:18 | ExprStmt | main.rs:421:5:421:13 | print_i64 | | +| main.rs:421:15:421:16 | c2 | main.rs:421:5:421:17 | print_i64(...) | | +| main.rs:423:5:431:5 | ExprStmt | main.rs:423:12:423:12 | 4 | | +| main.rs:423:5:431:5 | match ... { ... } | main.rs:433:5:433:19 | ExprStmt | | +| main.rs:423:11:423:16 | TupleExpr | main.rs:424:9:427:9 | TuplePat | | +| main.rs:423:12:423:12 | 4 | main.rs:423:15:423:15 | 5 | | +| main.rs:423:15:423:15 | 5 | main.rs:423:11:423:16 | TupleExpr | | +| main.rs:424:9:427:9 | TuplePat | main.rs:425:13:425:15 | a10 | match | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | | +| main.rs:425:13:425:15 | a10 | main.rs:426:13:426:14 | b4 | match | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | | +| main.rs:426:13:426:14 | b4 | main.rs:428:13:428:27 | ExprStmt | match | +| main.rs:427:14:430:9 | { ... } | main.rs:423:5:431:5 | match ... { ... } | | +| main.rs:428:13:428:21 | print_i64 | main.rs:428:23:428:25 | a10 | | +| main.rs:428:13:428:26 | print_i64(...) | main.rs:429:13:429:26 | ExprStmt | | +| main.rs:428:13:428:27 | ExprStmt | main.rs:428:13:428:21 | print_i64 | | +| main.rs:428:23:428:25 | a10 | main.rs:428:13:428:26 | print_i64(...) | | +| main.rs:429:13:429:21 | print_i64 | main.rs:429:23:429:24 | b4 | | +| main.rs:429:13:429:25 | print_i64(...) | main.rs:427:14:430:9 | { ... } | | +| main.rs:429:13:429:26 | ExprStmt | main.rs:429:13:429:21 | print_i64 | | +| main.rs:429:23:429:24 | b4 | main.rs:429:13:429:25 | print_i64(...) | | +| main.rs:433:5:433:13 | print_i64 | main.rs:433:15:433:17 | a10 | | +| main.rs:433:5:433:18 | print_i64(...) | main.rs:434:5:434:18 | ExprStmt | | +| main.rs:433:5:433:19 | ExprStmt | main.rs:433:5:433:13 | print_i64 | | +| main.rs:433:15:433:17 | a10 | main.rs:433:5:433:18 | print_i64(...) | | +| main.rs:434:5:434:13 | print_i64 | main.rs:434:15:434:16 | b4 | | +| main.rs:434:5:434:17 | print_i64(...) | main.rs:400:26:435:1 | { ... } | | +| main.rs:434:5:434:18 | ExprStmt | main.rs:434:5:434:13 | print_i64 | | +| main.rs:434:15:434:16 | b4 | main.rs:434:5:434:17 | print_i64(...) | | +| main.rs:437:1:452:1 | enter fn closure_variable | main.rs:438:5:440:10 | let ... = ... | | +| main.rs:437:1:452:1 | exit fn closure_variable (normal) | main.rs:437:1:452:1 | exit fn closure_variable | | +| main.rs:437:23:452:1 | { ... } | main.rs:437:1:452:1 | exit fn closure_variable (normal) | | +| main.rs:438:5:440:10 | let ... = ... | main.rs:439:9:440:9 | \|...\| x | | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | | +| main.rs:438:9:438:23 | example_closure | main.rs:441:5:442:27 | let ... = ... | match | +| main.rs:439:9:440:9 | \|...\| x | main.rs:438:9:438:23 | example_closure | | +| main.rs:439:9:440:9 | enter \|...\| x | main.rs:439:10:439:10 | x | | +| main.rs:439:9:440:9 | exit \|...\| x (normal) | main.rs:439:9:440:9 | exit \|...\| x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:15 | ...: i64 | match | +| main.rs:439:10:439:15 | ...: i64 | main.rs:440:9:440:9 | x | | +| main.rs:440:9:440:9 | x | main.rs:439:9:440:9 | exit \|...\| x (normal) | | +| main.rs:441:5:442:27 | let ... = ... | main.rs:442:9:442:23 | example_closure | | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | | +| main.rs:441:9:441:10 | n1 | main.rs:443:5:443:18 | ExprStmt | match | +| main.rs:442:9:442:23 | example_closure | main.rs:442:25:442:25 | 5 | | +| main.rs:442:9:442:26 | example_closure(...) | main.rs:441:9:441:10 | n1 | | +| main.rs:442:25:442:25 | 5 | main.rs:442:9:442:26 | example_closure(...) | | +| main.rs:443:5:443:13 | print_i64 | main.rs:443:15:443:16 | n1 | | +| main.rs:443:5:443:17 | print_i64(...) | main.rs:445:5:445:25 | ExprStmt | | +| main.rs:443:5:443:18 | ExprStmt | main.rs:443:5:443:13 | print_i64 | | +| main.rs:443:15:443:16 | n1 | main.rs:443:5:443:17 | print_i64(...) | | +| main.rs:445:5:445:22 | immutable_variable | main.rs:445:5:445:24 | immutable_variable(...) | | +| main.rs:445:5:445:24 | immutable_variable(...) | main.rs:446:5:448:10 | let ... = ... | | +| main.rs:445:5:445:25 | ExprStmt | main.rs:445:5:445:22 | immutable_variable | | +| main.rs:446:5:448:10 | let ... = ... | main.rs:447:5:448:9 | \|...\| x | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:449:5:450:30 | let ... = ... | match | +| main.rs:447:5:448:9 | \|...\| x | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:447:5:448:9 | enter \|...\| x | main.rs:447:6:447:6 | x | | +| main.rs:447:5:448:9 | exit \|...\| x (normal) | main.rs:447:5:448:9 | exit \|...\| x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:11 | ...: i64 | match | +| main.rs:447:6:447:11 | ...: i64 | main.rs:448:9:448:9 | x | | +| main.rs:448:9:448:9 | x | main.rs:447:5:448:9 | exit \|...\| x (normal) | | +| main.rs:449:5:450:30 | let ... = ... | main.rs:450:9:450:26 | immutable_variable | | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | | +| main.rs:449:9:449:10 | n2 | main.rs:451:5:451:18 | ExprStmt | match | +| main.rs:450:9:450:26 | immutable_variable | main.rs:450:28:450:28 | 6 | | +| main.rs:450:9:450:29 | immutable_variable(...) | main.rs:449:9:449:10 | n2 | | +| main.rs:450:28:450:28 | 6 | main.rs:450:9:450:29 | immutable_variable(...) | | +| main.rs:451:5:451:13 | print_i64 | main.rs:451:15:451:16 | n2 | | +| main.rs:451:5:451:17 | print_i64(...) | main.rs:437:23:452:1 | { ... } | | +| main.rs:451:5:451:18 | ExprStmt | main.rs:451:5:451:13 | print_i64 | | +| main.rs:451:15:451:16 | n2 | main.rs:451:5:451:17 | print_i64(...) | | +| main.rs:454:1:484:1 | enter fn nested_function | main.rs:456:5:458:10 | let ... = ... | | +| main.rs:454:1:484:1 | exit fn nested_function (normal) | main.rs:454:1:484:1 | exit fn nested_function | | +| main.rs:454:22:484:1 | { ... } | main.rs:454:1:484:1 | exit fn nested_function (normal) | | +| main.rs:456:5:458:10 | let ... = ... | main.rs:457:9:458:9 | \|...\| x | | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | | +| main.rs:456:9:456:9 | f | main.rs:459:5:459:20 | ExprStmt | match | +| main.rs:457:9:458:9 | \|...\| x | main.rs:456:9:456:9 | f | | +| main.rs:457:9:458:9 | enter \|...\| x | main.rs:457:10:457:10 | x | | +| main.rs:457:9:458:9 | exit \|...\| x (normal) | main.rs:457:9:458:9 | exit \|...\| x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:15 | ...: i64 | match | +| main.rs:457:10:457:15 | ...: i64 | main.rs:458:9:458:9 | x | | +| main.rs:458:9:458:9 | x | main.rs:457:9:458:9 | exit \|...\| x (normal) | | +| main.rs:459:5:459:13 | print_i64 | main.rs:459:15:459:15 | f | | +| main.rs:459:5:459:19 | print_i64(...) | main.rs:461:5:464:5 | fn f | | +| main.rs:459:5:459:20 | ExprStmt | main.rs:459:5:459:13 | print_i64 | | +| main.rs:459:15:459:15 | f | main.rs:459:17:459:17 | 1 | | +| main.rs:459:15:459:18 | f(...) | main.rs:459:5:459:19 | print_i64(...) | | +| main.rs:459:17:459:17 | 1 | main.rs:459:15:459:18 | f(...) | | +| main.rs:461:5:464:5 | enter fn f | main.rs:461:10:461:10 | x | | +| main.rs:461:5:464:5 | exit fn f (normal) | main.rs:461:5:464:5 | exit fn f | | +| main.rs:461:5:464:5 | fn f | main.rs:466:5:466:20 | ExprStmt | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:15 | ...: i64 | match | +| main.rs:461:10:461:15 | ...: i64 | main.rs:463:9:463:9 | x | | +| main.rs:462:5:464:5 | { ... } | main.rs:461:5:464:5 | exit fn f (normal) | | +| main.rs:463:9:463:9 | x | main.rs:463:13:463:13 | 1 | | +| main.rs:463:9:463:13 | ... + ... | main.rs:462:5:464:5 | { ... } | | +| main.rs:463:13:463:13 | 1 | main.rs:463:9:463:13 | ... + ... | | +| main.rs:466:5:466:13 | print_i64 | main.rs:466:15:466:15 | f | | +| main.rs:466:5:466:19 | print_i64(...) | main.rs:469:9:469:24 | ExprStmt | | +| main.rs:466:5:466:20 | ExprStmt | main.rs:466:5:466:13 | print_i64 | | +| main.rs:466:15:466:15 | f | main.rs:466:17:466:17 | 2 | | +| main.rs:466:15:466:18 | f(...) | main.rs:466:5:466:19 | print_i64(...) | | +| main.rs:466:17:466:17 | 2 | main.rs:466:15:466:18 | f(...) | | +| main.rs:468:5:483:5 | { ... } | main.rs:454:22:484:1 | { ... } | | +| main.rs:469:9:469:17 | print_i64 | main.rs:469:19:469:19 | f | | +| main.rs:469:9:469:23 | print_i64(...) | main.rs:470:9:473:9 | fn f | | +| main.rs:469:9:469:24 | ExprStmt | main.rs:469:9:469:17 | print_i64 | | +| main.rs:469:19:469:19 | f | main.rs:469:21:469:21 | 3 | | +| main.rs:469:19:469:22 | f(...) | main.rs:469:9:469:23 | print_i64(...) | | +| main.rs:469:21:469:21 | 3 | main.rs:469:19:469:22 | f(...) | | +| main.rs:470:9:473:9 | enter fn f | main.rs:470:14:470:14 | x | | +| main.rs:470:9:473:9 | exit fn f (normal) | main.rs:470:9:473:9 | exit fn f | | +| main.rs:470:9:473:9 | fn f | main.rs:475:9:477:9 | ExprStmt | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:19 | ...: i64 | match | +| main.rs:470:14:470:19 | ...: i64 | main.rs:472:13:472:13 | 2 | | +| main.rs:471:9:473:9 | { ... } | main.rs:470:9:473:9 | exit fn f (normal) | | +| main.rs:472:13:472:13 | 2 | main.rs:472:17:472:17 | x | | +| main.rs:472:13:472:17 | ... * ... | main.rs:471:9:473:9 | { ... } | | +| main.rs:472:17:472:17 | x | main.rs:472:13:472:17 | ... * ... | | +| main.rs:475:9:477:9 | ExprStmt | main.rs:476:13:476:28 | ExprStmt | | +| main.rs:475:9:477:9 | { ... } | main.rs:479:9:481:14 | let ... = ... | | +| main.rs:476:13:476:21 | print_i64 | main.rs:476:23:476:23 | f | | +| main.rs:476:13:476:27 | print_i64(...) | main.rs:475:9:477:9 | { ... } | | +| main.rs:476:13:476:28 | ExprStmt | main.rs:476:13:476:21 | print_i64 | | +| main.rs:476:23:476:23 | f | main.rs:476:25:476:25 | 4 | | +| main.rs:476:23:476:26 | f(...) | main.rs:476:13:476:27 | print_i64(...) | | +| main.rs:476:25:476:25 | 4 | main.rs:476:23:476:26 | f(...) | | +| main.rs:479:9:481:14 | let ... = ... | main.rs:480:13:481:13 | \|...\| x | | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | | +| main.rs:479:13:479:13 | f | main.rs:482:9:482:24 | ExprStmt | match | +| main.rs:480:13:481:13 | \|...\| x | main.rs:479:13:479:13 | f | | +| main.rs:480:13:481:13 | enter \|...\| x | main.rs:480:14:480:14 | x | | +| main.rs:480:13:481:13 | exit \|...\| x (normal) | main.rs:480:13:481:13 | exit \|...\| x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:19 | ...: i64 | match | +| main.rs:480:14:480:19 | ...: i64 | main.rs:481:13:481:13 | x | | +| main.rs:481:13:481:13 | x | main.rs:480:13:481:13 | exit \|...\| x (normal) | | +| main.rs:482:9:482:17 | print_i64 | main.rs:482:19:482:19 | f | | +| main.rs:482:9:482:23 | print_i64(...) | main.rs:468:5:483:5 | { ... } | | +| main.rs:482:9:482:24 | ExprStmt | main.rs:482:9:482:17 | print_i64 | | +| main.rs:482:19:482:19 | f | main.rs:482:21:482:21 | 5 | | +| main.rs:482:19:482:22 | f(...) | main.rs:482:9:482:23 | print_i64(...) | | +| main.rs:482:21:482:21 | 5 | main.rs:482:19:482:22 | f(...) | | +| main.rs:486:1:493:1 | enter fn for_variable | main.rs:487:5:487:42 | let ... = ... | | +| main.rs:486:1:493:1 | exit fn for_variable (normal) | main.rs:486:1:493:1 | exit fn for_variable | | +| main.rs:486:19:493:1 | { ... } | main.rs:486:1:493:1 | exit fn for_variable (normal) | | +| main.rs:487:5:487:42 | let ... = ... | main.rs:487:15:487:22 | "apples" | | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | | +| main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | match | +| main.rs:487:13:487:41 | &... | main.rs:487:9:487:9 | v | | +| main.rs:487:14:487:41 | [...] | main.rs:487:13:487:41 | &... | | +| main.rs:487:15:487:22 | "apples" | main.rs:487:25:487:30 | "cake" | | +| main.rs:487:25:487:30 | "cake" | main.rs:487:33:487:40 | "coffee" | | +| main.rs:487:33:487:40 | "coffee" | main.rs:487:14:487:41 | [...] | | +| main.rs:489:5:492:5 | for ... in ... { ... } | main.rs:486:19:493:1 | { ... } | | +| main.rs:489:9:489:12 | text | main.rs:489:5:492:5 | for ... in ... { ... } | no-match | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | | +| main.rs:489:9:489:12 | text | main.rs:491:9:491:24 | ExprStmt | match | +| main.rs:490:12:490:12 | v | main.rs:489:9:489:12 | text | | +| main.rs:490:14:492:5 | { ... } | main.rs:489:9:489:12 | text | | +| main.rs:491:9:491:17 | print_str | main.rs:491:19:491:22 | text | | +| main.rs:491:9:491:23 | print_str(...) | main.rs:490:14:492:5 | { ... } | | +| main.rs:491:9:491:24 | ExprStmt | main.rs:491:9:491:17 | print_str | | +| main.rs:491:19:491:22 | text | main.rs:491:9:491:23 | print_str(...) | | +| main.rs:495:1:501:1 | enter fn add_assign | main.rs:496:5:496:18 | let ... = 0 | | +| main.rs:495:1:501:1 | exit fn add_assign (normal) | main.rs:495:1:501:1 | exit fn add_assign | | +| main.rs:495:17:501:1 | { ... } | main.rs:495:1:501:1 | exit fn add_assign (normal) | | +| main.rs:496:5:496:18 | let ... = 0 | main.rs:496:17:496:17 | 0 | | +| main.rs:496:9:496:13 | mut a | main.rs:497:5:497:11 | ExprStmt | match | +| main.rs:496:13:496:13 | a | main.rs:496:9:496:13 | mut a | | +| main.rs:496:17:496:17 | 0 | main.rs:496:13:496:13 | a | | +| main.rs:497:5:497:5 | a | main.rs:497:10:497:10 | 1 | | +| main.rs:497:5:497:10 | ... += ... | main.rs:498:5:498:17 | ExprStmt | | +| main.rs:497:5:497:11 | ExprStmt | main.rs:497:5:497:5 | a | | +| main.rs:497:10:497:10 | 1 | main.rs:497:5:497:10 | ... += ... | | +| main.rs:498:5:498:13 | print_i64 | main.rs:498:15:498:15 | a | | +| main.rs:498:5:498:16 | print_i64(...) | main.rs:499:5:499:28 | ExprStmt | | +| main.rs:498:5:498:17 | ExprStmt | main.rs:498:5:498:13 | print_i64 | | +| main.rs:498:15:498:15 | a | main.rs:498:5:498:16 | print_i64(...) | | +| main.rs:499:5:499:27 | ... .add_assign(...) | main.rs:500:5:500:17 | ExprStmt | | +| main.rs:499:5:499:28 | ExprStmt | main.rs:499:11:499:11 | a | | +| main.rs:499:6:499:11 | &mut a | main.rs:499:25:499:26 | 10 | | +| main.rs:499:11:499:11 | a | main.rs:499:6:499:11 | &mut a | | +| main.rs:499:25:499:26 | 10 | main.rs:499:5:499:27 | ... .add_assign(...) | | +| main.rs:500:5:500:13 | print_i64 | main.rs:500:15:500:15 | a | | +| main.rs:500:5:500:16 | print_i64(...) | main.rs:495:17:501:1 | { ... } | | +| main.rs:500:5:500:17 | ExprStmt | main.rs:500:5:500:13 | print_i64 | | +| main.rs:500:15:500:15 | a | main.rs:500:5:500:16 | print_i64(...) | | +| main.rs:503:1:509:1 | enter fn mutate | main.rs:504:5:504:18 | let ... = 1 | | +| main.rs:503:1:509:1 | exit fn mutate (normal) | main.rs:503:1:509:1 | exit fn mutate | | +| main.rs:503:13:509:1 | { ... } | main.rs:503:1:509:1 | exit fn mutate (normal) | | +| main.rs:504:5:504:18 | let ... = 1 | main.rs:504:17:504:17 | 1 | | +| main.rs:504:9:504:13 | mut i | main.rs:505:5:506:15 | let ... = ... | match | +| main.rs:504:13:504:13 | i | main.rs:504:9:504:13 | mut i | | +| main.rs:504:17:504:17 | 1 | main.rs:504:13:504:13 | i | | +| main.rs:505:5:506:15 | let ... = ... | main.rs:506:14:506:14 | i | | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | | +| main.rs:505:9:505:13 | ref_i | main.rs:507:5:507:15 | ExprStmt | match | +| main.rs:506:9:506:14 | &mut i | main.rs:505:9:505:13 | ref_i | | +| main.rs:506:14:506:14 | i | main.rs:506:9:506:14 | &mut i | | +| main.rs:507:5:507:10 | * ... | main.rs:507:14:507:14 | 2 | | +| main.rs:507:5:507:14 | ... = ... | main.rs:508:5:508:17 | ExprStmt | | +| main.rs:507:5:507:15 | ExprStmt | main.rs:507:6:507:10 | ref_i | | +| main.rs:507:6:507:10 | ref_i | main.rs:507:5:507:10 | * ... | | +| main.rs:507:14:507:14 | 2 | main.rs:507:5:507:14 | ... = ... | | +| main.rs:508:5:508:13 | print_i64 | main.rs:508:15:508:15 | i | | +| main.rs:508:5:508:16 | print_i64(...) | main.rs:503:13:509:1 | { ... } | | +| main.rs:508:5:508:17 | ExprStmt | main.rs:508:5:508:13 | print_i64 | | +| main.rs:508:15:508:15 | i | main.rs:508:5:508:16 | print_i64(...) | | +| main.rs:511:1:516:1 | enter fn mutate_param | main.rs:511:17:511:17 | x | | +| main.rs:511:1:516:1 | exit fn mutate_param (normal) | main.rs:511:1:516:1 | exit fn mutate_param | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:27 | ...: ... | match | +| main.rs:511:17:511:27 | ...: ... | main.rs:512:5:514:11 | ExprStmt | | +| main.rs:512:5:512:6 | * ... | main.rs:513:10:513:10 | x | | +| main.rs:512:5:514:10 | ... = ... | main.rs:515:5:515:13 | ExprStmt | | +| main.rs:512:5:514:11 | ExprStmt | main.rs:512:6:512:6 | x | | +| main.rs:512:6:512:6 | x | main.rs:512:5:512:6 | * ... | | +| main.rs:513:9:513:10 | * ... | main.rs:514:10:514:10 | x | | +| main.rs:513:9:514:10 | ... + ... | main.rs:512:5:514:10 | ... = ... | | +| main.rs:513:10:513:10 | x | main.rs:513:9:513:10 | * ... | | +| main.rs:514:9:514:10 | * ... | main.rs:513:9:514:10 | ... + ... | | +| main.rs:514:10:514:10 | x | main.rs:514:9:514:10 | * ... | | +| main.rs:515:5:515:12 | return x | main.rs:511:1:516:1 | exit fn mutate_param (normal) | return | +| main.rs:515:5:515:13 | ExprStmt | main.rs:515:12:515:12 | x | | +| main.rs:515:12:515:12 | x | main.rs:515:5:515:12 | return x | | +| main.rs:518:1:524:1 | enter fn mutate_param2 | main.rs:518:22:518:22 | x | | +| main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | main.rs:518:1:524:1 | exit fn mutate_param2 | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:35 | ...: ... | match | +| main.rs:518:22:518:35 | ...: ... | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:56 | ...: ... | match | +| main.rs:518:38:518:56 | ...: ... | main.rs:519:5:521:11 | ExprStmt | | +| main.rs:518:59:524:1 | { ... } | main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | | +| main.rs:519:5:519:6 | * ... | main.rs:520:10:520:10 | x | | +| main.rs:519:5:521:10 | ... = ... | main.rs:522:5:523:10 | ExprStmt | | +| main.rs:519:5:521:11 | ExprStmt | main.rs:519:6:519:6 | x | | +| main.rs:519:6:519:6 | x | main.rs:519:5:519:6 | * ... | | +| main.rs:520:9:520:10 | * ... | main.rs:521:10:521:10 | x | | +| main.rs:520:9:521:10 | ... + ... | main.rs:519:5:521:10 | ... = ... | | +| main.rs:520:10:520:10 | x | main.rs:520:9:520:10 | * ... | | +| main.rs:521:9:521:10 | * ... | main.rs:520:9:521:10 | ... + ... | | +| main.rs:521:10:521:10 | x | main.rs:521:9:521:10 | * ... | | +| main.rs:522:5:522:6 | * ... | main.rs:523:9:523:9 | x | | +| main.rs:522:5:523:9 | ... = ... | main.rs:518:59:524:1 | { ... } | | +| main.rs:522:5:523:10 | ExprStmt | main.rs:522:6:522:6 | y | | +| main.rs:522:6:522:6 | y | main.rs:522:5:522:6 | * ... | | +| main.rs:523:9:523:9 | x | main.rs:522:5:523:9 | ... = ... | | +| main.rs:526:1:546:1 | enter fn mutate_arg | main.rs:527:5:527:18 | let ... = 2 | | +| main.rs:526:1:546:1 | exit fn mutate_arg (normal) | main.rs:526:1:546:1 | exit fn mutate_arg | | +| main.rs:526:17:546:1 | { ... } | main.rs:526:1:546:1 | exit fn mutate_arg (normal) | | +| main.rs:527:5:527:18 | let ... = 2 | main.rs:527:17:527:17 | 2 | | +| main.rs:527:9:527:13 | mut x | main.rs:528:5:529:29 | let ... = ... | match | +| main.rs:527:13:527:13 | x | main.rs:527:9:527:13 | mut x | | +| main.rs:527:17:527:17 | 2 | main.rs:527:13:527:13 | x | | +| main.rs:528:5:529:29 | let ... = ... | main.rs:529:9:529:20 | mutate_param | | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | | +| main.rs:528:9:528:9 | y | main.rs:530:5:530:12 | ExprStmt | match | +| main.rs:529:9:529:20 | mutate_param | main.rs:529:27:529:27 | x | | +| main.rs:529:9:529:28 | mutate_param(...) | main.rs:528:9:528:9 | y | | +| main.rs:529:22:529:27 | &mut x | main.rs:529:9:529:28 | mutate_param(...) | | +| main.rs:529:27:529:27 | x | main.rs:529:22:529:27 | &mut x | | +| main.rs:530:5:530:6 | * ... | main.rs:530:10:530:11 | 10 | | +| main.rs:530:5:530:11 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | +| main.rs:530:5:530:12 | ExprStmt | main.rs:530:6:530:6 | y | | +| main.rs:530:6:530:6 | y | main.rs:530:5:530:6 | * ... | | +| main.rs:530:10:530:11 | 10 | main.rs:530:5:530:11 | ... = ... | | +| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | +| main.rs:533:5:533:16 | print_i64(...) | main.rs:535:5:535:18 | let ... = 4 | | +| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | +| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | +| main.rs:535:5:535:18 | let ... = 4 | main.rs:535:17:535:17 | 4 | | +| main.rs:535:9:535:13 | mut z | main.rs:536:5:537:20 | let ... = ... | match | +| main.rs:535:13:535:13 | z | main.rs:535:9:535:13 | mut z | | +| main.rs:535:17:535:17 | 4 | main.rs:535:13:535:13 | z | | +| main.rs:536:5:537:20 | let ... = ... | main.rs:537:19:537:19 | x | | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | | +| main.rs:536:9:536:9 | w | main.rs:538:5:541:6 | ExprStmt | match | +| main.rs:537:9:537:19 | &mut ... | main.rs:536:9:536:9 | w | | +| main.rs:537:14:537:19 | &mut x | main.rs:537:9:537:19 | &mut ... | | +| main.rs:537:19:537:19 | x | main.rs:537:14:537:19 | &mut x | | +| main.rs:538:5:538:17 | mutate_param2 | main.rs:539:14:539:14 | z | | +| main.rs:538:5:541:5 | mutate_param2(...) | main.rs:542:5:542:13 | ExprStmt | | +| main.rs:538:5:541:6 | ExprStmt | main.rs:538:5:538:17 | mutate_param2 | | +| main.rs:539:9:539:14 | &mut z | main.rs:540:9:540:9 | w | | +| main.rs:539:14:539:14 | z | main.rs:539:9:539:14 | &mut z | | +| main.rs:540:9:540:9 | w | main.rs:538:5:541:5 | mutate_param2(...) | | +| main.rs:542:5:542:7 | * ... | main.rs:542:11:542:12 | 11 | | +| main.rs:542:5:542:12 | ... = ... | main.rs:545:5:545:17 | ExprStmt | | +| main.rs:542:5:542:13 | ExprStmt | main.rs:542:7:542:7 | w | | +| main.rs:542:6:542:7 | * ... | main.rs:542:5:542:7 | * ... | | +| main.rs:542:7:542:7 | w | main.rs:542:6:542:7 | * ... | | +| main.rs:542:11:542:12 | 11 | main.rs:542:5:542:12 | ... = ... | | +| main.rs:545:5:545:13 | print_i64 | main.rs:545:15:545:15 | z | | +| main.rs:545:5:545:16 | print_i64(...) | main.rs:526:17:546:1 | { ... } | | +| main.rs:545:5:545:17 | ExprStmt | main.rs:545:5:545:13 | print_i64 | | +| main.rs:545:15:545:15 | z | main.rs:545:5:545:16 | print_i64(...) | | +| main.rs:548:1:554:1 | enter fn alias | main.rs:549:5:549:18 | let ... = 1 | | +| main.rs:548:1:554:1 | exit fn alias (normal) | main.rs:548:1:554:1 | exit fn alias | | +| main.rs:548:12:554:1 | { ... } | main.rs:548:1:554:1 | exit fn alias (normal) | | +| main.rs:549:5:549:18 | let ... = 1 | main.rs:549:17:549:17 | 1 | | +| main.rs:549:9:549:13 | mut x | main.rs:550:5:551:15 | let ... = ... | match | +| main.rs:549:13:549:13 | x | main.rs:549:9:549:13 | mut x | | +| main.rs:549:17:549:17 | 1 | main.rs:549:13:549:13 | x | | +| main.rs:550:5:551:15 | let ... = ... | main.rs:551:14:551:14 | x | | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | | +| main.rs:550:9:550:9 | y | main.rs:552:5:552:11 | ExprStmt | match | +| main.rs:551:9:551:14 | &mut x | main.rs:550:9:550:9 | y | | +| main.rs:551:14:551:14 | x | main.rs:551:9:551:14 | &mut x | | +| main.rs:552:5:552:6 | * ... | main.rs:552:10:552:10 | 2 | | +| main.rs:552:5:552:10 | ... = ... | main.rs:553:5:553:17 | ExprStmt | | +| main.rs:552:5:552:11 | ExprStmt | main.rs:552:6:552:6 | y | | +| main.rs:552:6:552:6 | y | main.rs:552:5:552:6 | * ... | | +| main.rs:552:10:552:10 | 2 | main.rs:552:5:552:10 | ... = ... | | | main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | -| main.rs:553:5:553:16 | print_i64(...) | main.rs:545:20:554:1 | { ... } | | +| main.rs:553:5:553:16 | print_i64(...) | main.rs:548:12:554:1 | { ... } | | | main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | | main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | -| main.rs:556:1:583:1 | enter fn capture_mut | main.rs:557:5:557:18 | let ... = 1 | | -| main.rs:556:1:583:1 | exit fn capture_mut (normal) | main.rs:556:1:583:1 | exit fn capture_mut | | -| main.rs:556:18:583:1 | { ... } | main.rs:556:1:583:1 | exit fn capture_mut (normal) | | -| main.rs:557:5:557:18 | let ... = 1 | main.rs:557:17:557:17 | 1 | | -| main.rs:557:9:557:13 | mut x | main.rs:560:5:562:6 | let ... = ... | match | -| main.rs:557:13:557:13 | x | main.rs:557:9:557:13 | mut x | | -| main.rs:557:17:557:17 | 1 | main.rs:557:13:557:13 | x | | -| main.rs:560:5:562:6 | let ... = ... | main.rs:560:20:562:5 | \|...\| ... | | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:15 | ExprStmt | match | -| main.rs:560:20:562:5 | \|...\| ... | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:20:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | -| main.rs:560:20:562:5 | exit \|...\| ... (normal) | main.rs:560:20:562:5 | exit \|...\| ... | | -| main.rs:560:23:562:5 | { ... } | main.rs:560:20:562:5 | exit \|...\| ... (normal) | | +| main.rs:556:1:565:1 | enter fn capture_immut | main.rs:557:5:557:16 | let ... = 100 | | +| main.rs:556:1:565:1 | exit fn capture_immut (normal) | main.rs:556:1:565:1 | exit fn capture_immut | | +| main.rs:556:20:565:1 | { ... } | main.rs:556:1:565:1 | exit fn capture_immut (normal) | | +| main.rs:557:5:557:16 | let ... = 100 | main.rs:557:13:557:15 | 100 | | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | | +| main.rs:557:9:557:9 | x | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:15 | 100 | main.rs:557:9:557:9 | x | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:15:562:5 | \|...\| ... | | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | | +| main.rs:560:9:560:11 | cap | main.rs:563:5:563:10 | ExprStmt | match | +| main.rs:560:15:562:5 | \|...\| ... | main.rs:560:9:560:11 | cap | | +| main.rs:560:15:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | +| main.rs:560:15:562:5 | exit \|...\| ... (normal) | main.rs:560:15:562:5 | exit \|...\| ... | | +| main.rs:560:18:562:5 | { ... } | main.rs:560:15:562:5 | exit \|...\| ... (normal) | | | main.rs:561:9:561:17 | print_i64 | main.rs:561:19:561:19 | x | | -| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:23:562:5 | { ... } | | +| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:18:562:5 | { ... } | | | main.rs:561:9:561:21 | ExprStmt | main.rs:561:9:561:17 | print_i64 | | | main.rs:561:19:561:19 | x | main.rs:561:9:561:20 | print_i64(...) | | -| main.rs:563:5:563:12 | closure1 | main.rs:563:5:563:14 | closure1(...) | | -| main.rs:563:5:563:14 | closure1(...) | main.rs:564:5:564:17 | ExprStmt | | -| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure1 | | +| main.rs:563:5:563:7 | cap | main.rs:563:5:563:9 | cap(...) | | +| main.rs:563:5:563:9 | cap(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:10 | ExprStmt | main.rs:563:5:563:7 | cap | | | main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | x | | -| main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | +| main.rs:564:5:564:16 | print_i64(...) | main.rs:556:20:565:1 | { ... } | | | main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | | main.rs:564:15:564:15 | x | main.rs:564:5:564:16 | print_i64(...) | | -| main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | -| main.rs:566:9:566:13 | mut y | main.rs:569:5:571:6 | let ... = ... | match | -| main.rs:566:13:566:13 | y | main.rs:566:9:566:13 | mut y | | -| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | y | | -| main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | -| main.rs:569:9:569:20 | mut closure2 | main.rs:572:5:572:15 | ExprStmt | match | -| main.rs:569:13:569:20 | closure2 | main.rs:569:9:569:20 | mut closure2 | | -| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure2 | | -| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:14 | ExprStmt | | -| main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | -| main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | | -| main.rs:570:9:570:13 | ... = ... | main.rs:569:27:571:5 | { ... } | | -| main.rs:570:9:570:14 | ExprStmt | main.rs:570:9:570:9 | y | | -| main.rs:570:13:570:13 | 3 | main.rs:570:9:570:13 | ... = ... | | -| main.rs:572:5:572:12 | closure2 | main.rs:572:5:572:14 | closure2(...) | | -| main.rs:572:5:572:14 | closure2(...) | main.rs:573:5:573:17 | ExprStmt | | -| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure2 | | -| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | y | | -| main.rs:573:5:573:16 | print_i64(...) | main.rs:575:5:575:18 | let ... = 2 | | -| main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | -| main.rs:573:15:573:15 | y | main.rs:573:5:573:16 | print_i64(...) | | -| main.rs:575:5:575:18 | let ... = 2 | main.rs:575:17:575:17 | 2 | | -| main.rs:575:9:575:13 | mut z | main.rs:578:5:580:6 | let ... = ... | match | -| main.rs:575:13:575:13 | z | main.rs:575:9:575:13 | mut z | | -| main.rs:575:17:575:17 | 2 | main.rs:575:13:575:13 | z | | -| main.rs:578:5:580:6 | let ... = ... | main.rs:578:24:580:5 | \|...\| ... | | -| main.rs:578:9:578:20 | mut closure3 | main.rs:581:5:581:15 | ExprStmt | match | -| main.rs:578:13:578:20 | closure3 | main.rs:578:9:578:20 | mut closure3 | | -| main.rs:578:24:580:5 | \|...\| ... | main.rs:578:13:578:20 | closure3 | | -| main.rs:578:24:580:5 | enter \|...\| ... | main.rs:579:9:579:24 | ExprStmt | | -| main.rs:578:24:580:5 | exit \|...\| ... (normal) | main.rs:578:24:580:5 | exit \|...\| ... | | -| main.rs:578:27:580:5 | { ... } | main.rs:578:24:580:5 | exit \|...\| ... (normal) | | -| main.rs:579:9:579:9 | z | main.rs:579:22:579:22 | 1 | | -| main.rs:579:9:579:23 | z.add_assign(...) | main.rs:578:27:580:5 | { ... } | | -| main.rs:579:9:579:24 | ExprStmt | main.rs:579:9:579:9 | z | | -| main.rs:579:22:579:22 | 1 | main.rs:579:9:579:23 | z.add_assign(...) | | -| main.rs:581:5:581:12 | closure3 | main.rs:581:5:581:14 | closure3(...) | | -| main.rs:581:5:581:14 | closure3(...) | main.rs:582:5:582:17 | ExprStmt | | -| main.rs:581:5:581:15 | ExprStmt | main.rs:581:5:581:12 | closure3 | | -| main.rs:582:5:582:13 | print_i64 | main.rs:582:15:582:15 | z | | -| main.rs:582:5:582:16 | print_i64(...) | main.rs:556:18:583:1 | { ... } | | -| main.rs:582:5:582:17 | ExprStmt | main.rs:582:5:582:13 | print_i64 | | -| main.rs:582:15:582:15 | z | main.rs:582:5:582:16 | print_i64(...) | | -| main.rs:585:1:593:1 | enter fn async_block_capture | main.rs:586:5:586:23 | let ... = 0 | | -| main.rs:585:1:593:1 | exit fn async_block_capture (normal) | main.rs:585:1:593:1 | exit fn async_block_capture | | -| main.rs:585:32:593:1 | { ... } | main.rs:585:1:593:1 | exit fn async_block_capture (normal) | | -| main.rs:586:5:586:23 | let ... = 0 | main.rs:586:22:586:22 | 0 | | -| main.rs:586:9:586:13 | mut i | main.rs:587:5:589:6 | let ... = ... | match | -| main.rs:586:13:586:13 | i | main.rs:586:9:586:13 | mut i | | -| main.rs:586:22:586:22 | 0 | main.rs:586:13:586:13 | i | | -| main.rs:587:5:589:6 | let ... = ... | main.rs:587:17:589:5 | { ... } | | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | | -| main.rs:587:9:587:13 | block | main.rs:591:5:591:16 | ExprStmt | match | -| main.rs:587:17:589:5 | enter { ... } | main.rs:588:9:588:14 | ExprStmt | | -| main.rs:587:17:589:5 | exit { ... } (normal) | main.rs:587:17:589:5 | exit { ... } | | -| main.rs:587:17:589:5 | { ... } | main.rs:587:9:587:13 | block | | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | | -| main.rs:588:9:588:13 | ... = ... | main.rs:587:17:589:5 | exit { ... } (normal) | | -| main.rs:588:9:588:14 | ExprStmt | main.rs:588:9:588:9 | i | | -| main.rs:588:13:588:13 | 1 | main.rs:588:9:588:13 | ... = ... | | -| main.rs:591:5:591:9 | block | main.rs:591:5:591:15 | await block | | -| main.rs:591:5:591:15 | await block | main.rs:592:5:592:17 | ExprStmt | | -| main.rs:591:5:591:16 | ExprStmt | main.rs:591:5:591:9 | block | | -| main.rs:592:5:592:13 | print_i64 | main.rs:592:15:592:15 | i | | -| main.rs:592:5:592:16 | print_i64(...) | main.rs:585:32:593:1 | { ... } | | -| main.rs:592:5:592:17 | ExprStmt | main.rs:592:5:592:13 | print_i64 | | -| main.rs:592:15:592:15 | i | main.rs:592:5:592:16 | print_i64(...) | | -| main.rs:595:1:611:1 | enter fn phi | main.rs:595:8:595:8 | b | | -| main.rs:595:1:611:1 | exit fn phi (normal) | main.rs:595:1:611:1 | exit fn phi | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:14 | ...: bool | match | -| main.rs:595:8:595:14 | ...: bool | main.rs:596:5:596:18 | let ... = 1 | | -| main.rs:595:17:611:1 | { ... } | main.rs:595:1:611:1 | exit fn phi (normal) | | -| main.rs:596:5:596:18 | let ... = 1 | main.rs:596:17:596:17 | 1 | | -| main.rs:596:9:596:13 | mut x | main.rs:597:5:597:17 | ExprStmt | match | -| main.rs:596:13:596:13 | x | main.rs:596:9:596:13 | mut x | | -| main.rs:596:17:596:17 | 1 | main.rs:596:13:596:13 | x | | -| main.rs:597:5:597:13 | print_i64 | main.rs:597:15:597:15 | x | | -| main.rs:597:5:597:16 | print_i64(...) | main.rs:598:5:598:21 | ExprStmt | | -| main.rs:597:5:597:17 | ExprStmt | main.rs:597:5:597:13 | print_i64 | | -| main.rs:597:15:597:15 | x | main.rs:597:5:597:16 | print_i64(...) | | -| main.rs:598:5:598:13 | print_i64 | main.rs:598:15:598:15 | x | | -| main.rs:598:5:598:20 | print_i64(...) | main.rs:599:5:609:6 | let _ = ... | | -| main.rs:598:5:598:21 | ExprStmt | main.rs:598:5:598:13 | print_i64 | | -| main.rs:598:15:598:15 | x | main.rs:598:19:598:19 | 1 | | -| main.rs:598:15:598:19 | ... + ... | main.rs:598:5:598:20 | print_i64(...) | | -| main.rs:598:19:598:19 | 1 | main.rs:598:15:598:19 | ... + ... | | -| main.rs:599:5:609:6 | let _ = ... | main.rs:600:16:600:16 | b | | -| main.rs:600:9:600:9 | _ | main.rs:610:5:610:17 | ExprStmt | match | -| main.rs:600:13:609:5 | if b {...} else {...} | main.rs:600:9:600:9 | _ | | -| main.rs:600:16:600:16 | b | main.rs:602:9:602:14 | ExprStmt | true | -| main.rs:600:16:600:16 | b | main.rs:606:9:606:14 | ExprStmt | false | -| main.rs:601:5:605:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | | -| main.rs:602:9:602:13 | ... = ... | main.rs:603:9:603:21 | ExprStmt | | -| main.rs:602:9:602:14 | ExprStmt | main.rs:602:9:602:9 | x | | -| main.rs:602:13:602:13 | 2 | main.rs:602:9:602:13 | ... = ... | | -| main.rs:603:9:603:17 | print_i64 | main.rs:603:19:603:19 | x | | -| main.rs:603:9:603:20 | print_i64(...) | main.rs:604:9:604:25 | ExprStmt | | -| main.rs:603:9:603:21 | ExprStmt | main.rs:603:9:603:17 | print_i64 | | -| main.rs:603:19:603:19 | x | main.rs:603:9:603:20 | print_i64(...) | | -| main.rs:604:9:604:17 | print_i64 | main.rs:604:19:604:19 | x | | -| main.rs:604:9:604:24 | print_i64(...) | main.rs:601:5:605:5 | { ... } | | -| main.rs:604:9:604:25 | ExprStmt | main.rs:604:9:604:17 | print_i64 | | -| main.rs:604:19:604:19 | x | main.rs:604:23:604:23 | 1 | | -| main.rs:604:19:604:23 | ... + ... | main.rs:604:9:604:24 | print_i64(...) | | -| main.rs:604:23:604:23 | 1 | main.rs:604:19:604:23 | ... + ... | | -| main.rs:605:12:609:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | | -| main.rs:606:9:606:13 | ... = ... | main.rs:607:9:607:21 | ExprStmt | | -| main.rs:606:9:606:14 | ExprStmt | main.rs:606:9:606:9 | x | | -| main.rs:606:13:606:13 | 3 | main.rs:606:9:606:13 | ... = ... | | -| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | -| main.rs:607:9:607:20 | print_i64(...) | main.rs:608:9:608:25 | ExprStmt | | -| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | -| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | -| main.rs:608:9:608:17 | print_i64 | main.rs:608:19:608:19 | x | | -| main.rs:608:9:608:24 | print_i64(...) | main.rs:605:12:609:5 | { ... } | | -| main.rs:608:9:608:25 | ExprStmt | main.rs:608:9:608:17 | print_i64 | | -| main.rs:608:19:608:19 | x | main.rs:608:23:608:23 | 1 | | -| main.rs:608:19:608:23 | ... + ... | main.rs:608:9:608:24 | print_i64(...) | | -| main.rs:608:23:608:23 | 1 | main.rs:608:19:608:23 | ... + ... | | -| main.rs:610:5:610:13 | print_i64 | main.rs:610:15:610:15 | x | | -| main.rs:610:5:610:16 | print_i64(...) | main.rs:595:17:611:1 | { ... } | | -| main.rs:610:5:610:17 | ExprStmt | main.rs:610:5:610:13 | print_i64 | | -| main.rs:610:15:610:15 | x | main.rs:610:5:610:16 | print_i64(...) | | -| main.rs:613:1:630:1 | enter fn phi_read | main.rs:613:13:613:14 | b1 | | -| main.rs:613:1:630:1 | exit fn phi_read (normal) | main.rs:613:1:630:1 | exit fn phi_read | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:20 | ...: bool | match | -| main.rs:613:13:613:20 | ...: bool | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:30 | ...: bool | match | -| main.rs:613:23:613:30 | ...: bool | main.rs:614:5:614:14 | let ... = 1 | | -| main.rs:613:33:630:1 | { ... } | main.rs:613:1:630:1 | exit fn phi_read (normal) | | -| main.rs:614:5:614:14 | let ... = 1 | main.rs:614:13:614:13 | 1 | | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | | -| main.rs:614:9:614:9 | x | main.rs:615:5:621:6 | let _ = ... | match | -| main.rs:614:13:614:13 | 1 | main.rs:614:9:614:9 | x | | -| main.rs:615:5:621:6 | let _ = ... | main.rs:616:16:616:17 | b1 | | -| main.rs:616:9:616:9 | _ | main.rs:623:5:629:6 | let _ = ... | match | -| main.rs:616:13:621:5 | if b1 {...} else {...} | main.rs:616:9:616:9 | _ | | -| main.rs:616:16:616:17 | b1 | main.rs:618:9:618:21 | ExprStmt | true | -| main.rs:616:16:616:17 | b1 | main.rs:620:9:620:21 | ExprStmt | false | -| main.rs:617:5:619:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:567:1:594:1 | enter fn capture_mut | main.rs:568:5:568:18 | let ... = 1 | | +| main.rs:567:1:594:1 | exit fn capture_mut (normal) | main.rs:567:1:594:1 | exit fn capture_mut | | +| main.rs:567:18:594:1 | { ... } | main.rs:567:1:594:1 | exit fn capture_mut (normal) | | +| main.rs:568:5:568:18 | let ... = 1 | main.rs:568:17:568:17 | 1 | | +| main.rs:568:9:568:13 | mut x | main.rs:571:5:573:6 | let ... = ... | match | +| main.rs:568:13:568:13 | x | main.rs:568:9:568:13 | mut x | | +| main.rs:568:17:568:17 | 1 | main.rs:568:13:568:13 | x | | +| main.rs:571:5:573:6 | let ... = ... | main.rs:571:20:573:5 | \|...\| ... | | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:15 | ExprStmt | match | +| main.rs:571:20:573:5 | \|...\| ... | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:20:573:5 | enter \|...\| ... | main.rs:572:9:572:21 | ExprStmt | | +| main.rs:571:20:573:5 | exit \|...\| ... (normal) | main.rs:571:20:573:5 | exit \|...\| ... | | +| main.rs:571:23:573:5 | { ... } | main.rs:571:20:573:5 | exit \|...\| ... (normal) | | +| main.rs:572:9:572:17 | print_i64 | main.rs:572:19:572:19 | x | | +| main.rs:572:9:572:20 | print_i64(...) | main.rs:571:23:573:5 | { ... } | | +| main.rs:572:9:572:21 | ExprStmt | main.rs:572:9:572:17 | print_i64 | | +| main.rs:572:19:572:19 | x | main.rs:572:9:572:20 | print_i64(...) | | +| main.rs:574:5:574:12 | closure1 | main.rs:574:5:574:14 | closure1(...) | | +| main.rs:574:5:574:14 | closure1(...) | main.rs:575:5:575:17 | ExprStmt | | +| main.rs:574:5:574:15 | ExprStmt | main.rs:574:5:574:12 | closure1 | | +| main.rs:575:5:575:13 | print_i64 | main.rs:575:15:575:15 | x | | +| main.rs:575:5:575:16 | print_i64(...) | main.rs:577:5:577:18 | let ... = 2 | | +| main.rs:575:5:575:17 | ExprStmt | main.rs:575:5:575:13 | print_i64 | | +| main.rs:575:15:575:15 | x | main.rs:575:5:575:16 | print_i64(...) | | +| main.rs:577:5:577:18 | let ... = 2 | main.rs:577:17:577:17 | 2 | | +| main.rs:577:9:577:13 | mut y | main.rs:580:5:582:6 | let ... = ... | match | +| main.rs:577:13:577:13 | y | main.rs:577:9:577:13 | mut y | | +| main.rs:577:17:577:17 | 2 | main.rs:577:13:577:13 | y | | +| main.rs:580:5:582:6 | let ... = ... | main.rs:580:24:582:5 | \|...\| ... | | +| main.rs:580:9:580:20 | mut closure2 | main.rs:583:5:583:15 | ExprStmt | match | +| main.rs:580:13:580:20 | closure2 | main.rs:580:9:580:20 | mut closure2 | | +| main.rs:580:24:582:5 | \|...\| ... | main.rs:580:13:580:20 | closure2 | | +| main.rs:580:24:582:5 | enter \|...\| ... | main.rs:581:9:581:14 | ExprStmt | | +| main.rs:580:24:582:5 | exit \|...\| ... (normal) | main.rs:580:24:582:5 | exit \|...\| ... | | +| main.rs:580:27:582:5 | { ... } | main.rs:580:24:582:5 | exit \|...\| ... (normal) | | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | | +| main.rs:581:9:581:13 | ... = ... | main.rs:580:27:582:5 | { ... } | | +| main.rs:581:9:581:14 | ExprStmt | main.rs:581:9:581:9 | y | | +| main.rs:581:13:581:13 | 3 | main.rs:581:9:581:13 | ... = ... | | +| main.rs:583:5:583:12 | closure2 | main.rs:583:5:583:14 | closure2(...) | | +| main.rs:583:5:583:14 | closure2(...) | main.rs:584:5:584:17 | ExprStmt | | +| main.rs:583:5:583:15 | ExprStmt | main.rs:583:5:583:12 | closure2 | | +| main.rs:584:5:584:13 | print_i64 | main.rs:584:15:584:15 | y | | +| main.rs:584:5:584:16 | print_i64(...) | main.rs:586:5:586:18 | let ... = 2 | | +| main.rs:584:5:584:17 | ExprStmt | main.rs:584:5:584:13 | print_i64 | | +| main.rs:584:15:584:15 | y | main.rs:584:5:584:16 | print_i64(...) | | +| main.rs:586:5:586:18 | let ... = 2 | main.rs:586:17:586:17 | 2 | | +| main.rs:586:9:586:13 | mut z | main.rs:589:5:591:6 | let ... = ... | match | +| main.rs:586:13:586:13 | z | main.rs:586:9:586:13 | mut z | | +| main.rs:586:17:586:17 | 2 | main.rs:586:13:586:13 | z | | +| main.rs:589:5:591:6 | let ... = ... | main.rs:589:24:591:5 | \|...\| ... | | +| main.rs:589:9:589:20 | mut closure3 | main.rs:592:5:592:15 | ExprStmt | match | +| main.rs:589:13:589:20 | closure3 | main.rs:589:9:589:20 | mut closure3 | | +| main.rs:589:24:591:5 | \|...\| ... | main.rs:589:13:589:20 | closure3 | | +| main.rs:589:24:591:5 | enter \|...\| ... | main.rs:590:9:590:24 | ExprStmt | | +| main.rs:589:24:591:5 | exit \|...\| ... (normal) | main.rs:589:24:591:5 | exit \|...\| ... | | +| main.rs:589:27:591:5 | { ... } | main.rs:589:24:591:5 | exit \|...\| ... (normal) | | +| main.rs:590:9:590:9 | z | main.rs:590:22:590:22 | 1 | | +| main.rs:590:9:590:23 | z.add_assign(...) | main.rs:589:27:591:5 | { ... } | | +| main.rs:590:9:590:24 | ExprStmt | main.rs:590:9:590:9 | z | | +| main.rs:590:22:590:22 | 1 | main.rs:590:9:590:23 | z.add_assign(...) | | +| main.rs:592:5:592:12 | closure3 | main.rs:592:5:592:14 | closure3(...) | | +| main.rs:592:5:592:14 | closure3(...) | main.rs:593:5:593:17 | ExprStmt | | +| main.rs:592:5:592:15 | ExprStmt | main.rs:592:5:592:12 | closure3 | | +| main.rs:593:5:593:13 | print_i64 | main.rs:593:15:593:15 | z | | +| main.rs:593:5:593:16 | print_i64(...) | main.rs:567:18:594:1 | { ... } | | +| main.rs:593:5:593:17 | ExprStmt | main.rs:593:5:593:13 | print_i64 | | +| main.rs:593:15:593:15 | z | main.rs:593:5:593:16 | print_i64(...) | | +| main.rs:596:1:604:1 | enter fn async_block_capture | main.rs:597:5:597:23 | let ... = 0 | | +| main.rs:596:1:604:1 | exit fn async_block_capture (normal) | main.rs:596:1:604:1 | exit fn async_block_capture | | +| main.rs:596:32:604:1 | { ... } | main.rs:596:1:604:1 | exit fn async_block_capture (normal) | | +| main.rs:597:5:597:23 | let ... = 0 | main.rs:597:22:597:22 | 0 | | +| main.rs:597:9:597:13 | mut i | main.rs:598:5:600:6 | let ... = ... | match | +| main.rs:597:13:597:13 | i | main.rs:597:9:597:13 | mut i | | +| main.rs:597:22:597:22 | 0 | main.rs:597:13:597:13 | i | | +| main.rs:598:5:600:6 | let ... = ... | main.rs:598:17:600:5 | { ... } | | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | | +| main.rs:598:9:598:13 | block | main.rs:602:5:602:16 | ExprStmt | match | +| main.rs:598:17:600:5 | enter { ... } | main.rs:599:9:599:14 | ExprStmt | | +| main.rs:598:17:600:5 | exit { ... } (normal) | main.rs:598:17:600:5 | exit { ... } | | +| main.rs:598:17:600:5 | { ... } | main.rs:598:9:598:13 | block | | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | | +| main.rs:599:9:599:13 | ... = ... | main.rs:598:17:600:5 | exit { ... } (normal) | | +| main.rs:599:9:599:14 | ExprStmt | main.rs:599:9:599:9 | i | | +| main.rs:599:13:599:13 | 1 | main.rs:599:9:599:13 | ... = ... | | +| main.rs:602:5:602:9 | block | main.rs:602:5:602:15 | await block | | +| main.rs:602:5:602:15 | await block | main.rs:603:5:603:17 | ExprStmt | | +| main.rs:602:5:602:16 | ExprStmt | main.rs:602:5:602:9 | block | | +| main.rs:603:5:603:13 | print_i64 | main.rs:603:15:603:15 | i | | +| main.rs:603:5:603:16 | print_i64(...) | main.rs:596:32:604:1 | { ... } | | +| main.rs:603:5:603:17 | ExprStmt | main.rs:603:5:603:13 | print_i64 | | +| main.rs:603:15:603:15 | i | main.rs:603:5:603:16 | print_i64(...) | | +| main.rs:606:1:622:1 | enter fn phi | main.rs:606:8:606:8 | b | | +| main.rs:606:1:622:1 | exit fn phi (normal) | main.rs:606:1:622:1 | exit fn phi | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:14 | ...: bool | match | +| main.rs:606:8:606:14 | ...: bool | main.rs:607:5:607:18 | let ... = 1 | | +| main.rs:606:17:622:1 | { ... } | main.rs:606:1:622:1 | exit fn phi (normal) | | +| main.rs:607:5:607:18 | let ... = 1 | main.rs:607:17:607:17 | 1 | | +| main.rs:607:9:607:13 | mut x | main.rs:608:5:608:17 | ExprStmt | match | +| main.rs:607:13:607:13 | x | main.rs:607:9:607:13 | mut x | | +| main.rs:607:17:607:17 | 1 | main.rs:607:13:607:13 | x | | +| main.rs:608:5:608:13 | print_i64 | main.rs:608:15:608:15 | x | | +| main.rs:608:5:608:16 | print_i64(...) | main.rs:609:5:609:21 | ExprStmt | | +| main.rs:608:5:608:17 | ExprStmt | main.rs:608:5:608:13 | print_i64 | | +| main.rs:608:15:608:15 | x | main.rs:608:5:608:16 | print_i64(...) | | +| main.rs:609:5:609:13 | print_i64 | main.rs:609:15:609:15 | x | | +| main.rs:609:5:609:20 | print_i64(...) | main.rs:610:5:620:6 | let _ = ... | | +| main.rs:609:5:609:21 | ExprStmt | main.rs:609:5:609:13 | print_i64 | | +| main.rs:609:15:609:15 | x | main.rs:609:19:609:19 | 1 | | +| main.rs:609:15:609:19 | ... + ... | main.rs:609:5:609:20 | print_i64(...) | | +| main.rs:609:19:609:19 | 1 | main.rs:609:15:609:19 | ... + ... | | +| main.rs:610:5:620:6 | let _ = ... | main.rs:611:16:611:16 | b | | +| main.rs:611:9:611:9 | _ | main.rs:621:5:621:17 | ExprStmt | match | +| main.rs:611:13:620:5 | if b {...} else {...} | main.rs:611:9:611:9 | _ | | +| main.rs:611:16:611:16 | b | main.rs:613:9:613:14 | ExprStmt | true | +| main.rs:611:16:611:16 | b | main.rs:617:9:617:14 | ExprStmt | false | +| main.rs:612:5:616:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | | +| main.rs:613:9:613:13 | ... = ... | main.rs:614:9:614:21 | ExprStmt | | +| main.rs:613:9:613:14 | ExprStmt | main.rs:613:9:613:9 | x | | +| main.rs:613:13:613:13 | 2 | main.rs:613:9:613:13 | ... = ... | | +| main.rs:614:9:614:17 | print_i64 | main.rs:614:19:614:19 | x | | +| main.rs:614:9:614:20 | print_i64(...) | main.rs:615:9:615:25 | ExprStmt | | +| main.rs:614:9:614:21 | ExprStmt | main.rs:614:9:614:17 | print_i64 | | +| main.rs:614:19:614:19 | x | main.rs:614:9:614:20 | print_i64(...) | | +| main.rs:615:9:615:17 | print_i64 | main.rs:615:19:615:19 | x | | +| main.rs:615:9:615:24 | print_i64(...) | main.rs:612:5:616:5 | { ... } | | +| main.rs:615:9:615:25 | ExprStmt | main.rs:615:9:615:17 | print_i64 | | +| main.rs:615:19:615:19 | x | main.rs:615:23:615:23 | 1 | | +| main.rs:615:19:615:23 | ... + ... | main.rs:615:9:615:24 | print_i64(...) | | +| main.rs:615:23:615:23 | 1 | main.rs:615:19:615:23 | ... + ... | | +| main.rs:616:12:620:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | | +| main.rs:617:9:617:13 | ... = ... | main.rs:618:9:618:21 | ExprStmt | | +| main.rs:617:9:617:14 | ExprStmt | main.rs:617:9:617:9 | x | | +| main.rs:617:13:617:13 | 3 | main.rs:617:9:617:13 | ... = ... | | | main.rs:618:9:618:17 | print_i64 | main.rs:618:19:618:19 | x | | -| main.rs:618:9:618:20 | print_i64(...) | main.rs:617:5:619:5 | { ... } | | +| main.rs:618:9:618:20 | print_i64(...) | main.rs:619:9:619:25 | ExprStmt | | | main.rs:618:9:618:21 | ExprStmt | main.rs:618:9:618:17 | print_i64 | | | main.rs:618:19:618:19 | x | main.rs:618:9:618:20 | print_i64(...) | | -| main.rs:619:12:621:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | -| main.rs:620:9:620:17 | print_i64 | main.rs:620:19:620:19 | x | | -| main.rs:620:9:620:20 | print_i64(...) | main.rs:619:12:621:5 | { ... } | | -| main.rs:620:9:620:21 | ExprStmt | main.rs:620:9:620:17 | print_i64 | | -| main.rs:620:19:620:19 | x | main.rs:620:9:620:20 | print_i64(...) | | -| main.rs:623:5:629:6 | let _ = ... | main.rs:624:16:624:17 | b2 | | -| main.rs:624:9:624:9 | _ | main.rs:613:33:630:1 | { ... } | match | -| main.rs:624:13:629:5 | if b2 {...} else {...} | main.rs:624:9:624:9 | _ | | -| main.rs:624:16:624:17 | b2 | main.rs:626:9:626:21 | ExprStmt | true | -| main.rs:624:16:624:17 | b2 | main.rs:628:9:628:21 | ExprStmt | false | -| main.rs:625:5:627:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:626:9:626:17 | print_i64 | main.rs:626:19:626:19 | x | | -| main.rs:626:9:626:20 | print_i64(...) | main.rs:625:5:627:5 | { ... } | | -| main.rs:626:9:626:21 | ExprStmt | main.rs:626:9:626:17 | print_i64 | | -| main.rs:626:19:626:19 | x | main.rs:626:9:626:20 | print_i64(...) | | -| main.rs:627:12:629:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:628:9:628:17 | print_i64 | main.rs:628:19:628:19 | x | | -| main.rs:628:9:628:20 | print_i64(...) | main.rs:627:12:629:5 | { ... } | | -| main.rs:628:9:628:21 | ExprStmt | main.rs:628:9:628:17 | print_i64 | | -| main.rs:628:19:628:19 | x | main.rs:628:9:628:20 | print_i64(...) | | -| main.rs:637:5:639:5 | enter fn my_get | main.rs:637:20:637:23 | self | | -| main.rs:637:5:639:5 | exit fn my_get (normal) | main.rs:637:5:639:5 | exit fn my_get | | -| main.rs:637:15:637:23 | SelfParam | main.rs:638:9:638:24 | ExprStmt | | -| main.rs:637:20:637:23 | self | main.rs:637:15:637:23 | SelfParam | | -| main.rs:638:9:638:23 | return ... | main.rs:637:5:639:5 | exit fn my_get (normal) | return | -| main.rs:638:9:638:24 | ExprStmt | main.rs:638:16:638:19 | self | | -| main.rs:638:16:638:19 | self | main.rs:638:16:638:23 | self.val | | -| main.rs:638:16:638:23 | self.val | main.rs:638:9:638:23 | return ... | | -| main.rs:641:5:643:5 | enter fn id | main.rs:641:11:641:14 | self | | -| main.rs:641:5:643:5 | exit fn id (normal) | main.rs:641:5:643:5 | exit fn id | | -| main.rs:641:11:641:14 | SelfParam | main.rs:642:9:642:12 | self | | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | SelfParam | | -| main.rs:641:25:643:5 | { ... } | main.rs:641:5:643:5 | exit fn id (normal) | | -| main.rs:642:9:642:12 | self | main.rs:641:25:643:5 | { ... } | | -| main.rs:645:5:652:5 | enter fn my_method | main.rs:645:23:645:26 | self | | -| main.rs:645:5:652:5 | exit fn my_method (normal) | main.rs:645:5:652:5 | exit fn my_method | | -| main.rs:645:18:645:26 | SelfParam | main.rs:646:9:649:10 | let ... = ... | | -| main.rs:645:23:645:26 | self | main.rs:645:18:645:26 | SelfParam | | -| main.rs:645:29:652:5 | { ... } | main.rs:645:5:652:5 | exit fn my_method (normal) | | -| main.rs:646:9:649:10 | let ... = ... | main.rs:646:21:649:9 | \|...\| ... | | -| main.rs:646:13:646:17 | mut f | main.rs:650:9:650:13 | ExprStmt | match | -| main.rs:646:17:646:17 | f | main.rs:646:13:646:17 | mut f | | -| main.rs:646:21:649:9 | \|...\| ... | main.rs:646:17:646:17 | f | | -| main.rs:646:21:649:9 | enter \|...\| ... | main.rs:646:22:646:22 | n | | -| main.rs:646:21:649:9 | exit \|...\| ... (normal) | main.rs:646:21:649:9 | exit \|...\| ... | | -| main.rs:646:22:646:22 | ... | main.rs:648:13:648:26 | ExprStmt | | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | ... | match | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | -| main.rs:646:25:649:9 | { ... } | main.rs:646:21:649:9 | exit \|...\| ... (normal) | | -| main.rs:648:13:648:16 | self | main.rs:648:13:648:20 | self.val | | -| main.rs:648:13:648:20 | self.val | main.rs:648:25:648:25 | n | | -| main.rs:648:13:648:25 | ... += ... | main.rs:646:25:649:9 | { ... } | | -| main.rs:648:13:648:26 | ExprStmt | main.rs:648:13:648:16 | self | | -| main.rs:648:25:648:25 | n | main.rs:648:13:648:25 | ... += ... | | -| main.rs:650:9:650:9 | f | main.rs:650:11:650:11 | 3 | | -| main.rs:650:9:650:12 | f(...) | main.rs:651:9:651:13 | ExprStmt | | -| main.rs:650:9:650:13 | ExprStmt | main.rs:650:9:650:9 | f | | -| main.rs:650:11:650:11 | 3 | main.rs:650:9:650:12 | f(...) | | -| main.rs:651:9:651:9 | f | main.rs:651:11:651:11 | 4 | | -| main.rs:651:9:651:12 | f(...) | main.rs:645:29:652:5 | { ... } | | -| main.rs:651:9:651:13 | ExprStmt | main.rs:651:9:651:9 | f | | -| main.rs:651:11:651:11 | 4 | main.rs:651:9:651:12 | f(...) | | -| main.rs:655:1:662:1 | enter fn structs | main.rs:656:5:656:36 | let ... = ... | | -| main.rs:655:1:662:1 | exit fn structs (normal) | main.rs:655:1:662:1 | exit fn structs | | -| main.rs:655:14:662:1 | { ... } | main.rs:655:1:662:1 | exit fn structs (normal) | | -| main.rs:656:5:656:36 | let ... = ... | main.rs:656:33:656:33 | 1 | | -| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:26 | ExprStmt | match | -| main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | -| main.rs:656:17:656:35 | MyStruct {...} | main.rs:656:13:656:13 | a | | -| main.rs:656:33:656:33 | 1 | main.rs:656:17:656:35 | MyStruct {...} | | -| main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:25 | print_i64(...) | main.rs:658:5:658:14 | ExprStmt | | -| main.rs:657:5:657:26 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:15:657:24 | a.my_get() | | -| main.rs:657:15:657:24 | a.my_get() | main.rs:657:5:657:25 | print_i64(...) | | -| main.rs:658:5:658:5 | a | main.rs:658:5:658:9 | a.val | | -| main.rs:658:5:658:9 | a.val | main.rs:658:13:658:13 | 5 | | -| main.rs:658:5:658:13 | ... = ... | main.rs:659:5:659:26 | ExprStmt | | -| main.rs:658:5:658:14 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:13:658:13 | 5 | main.rs:658:5:658:13 | ... = ... | | -| main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:25 | print_i64(...) | main.rs:660:5:660:28 | ExprStmt | | -| main.rs:659:5:659:26 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:15:659:24 | a.my_get() | | -| main.rs:659:15:659:24 | a.my_get() | main.rs:659:5:659:25 | print_i64(...) | | -| main.rs:660:5:660:5 | a | main.rs:660:25:660:25 | 2 | | -| main.rs:660:5:660:27 | ... = ... | main.rs:661:5:661:26 | ExprStmt | | -| main.rs:660:5:660:28 | ExprStmt | main.rs:660:5:660:5 | a | | -| main.rs:660:9:660:27 | MyStruct {...} | main.rs:660:5:660:27 | ... = ... | | -| main.rs:660:25:660:25 | 2 | main.rs:660:9:660:27 | MyStruct {...} | | -| main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | -| main.rs:661:5:661:25 | print_i64(...) | main.rs:655:14:662:1 | { ... } | | -| main.rs:661:5:661:26 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | -| main.rs:661:15:661:15 | a | main.rs:661:15:661:24 | a.my_get() | | -| main.rs:661:15:661:24 | a.my_get() | main.rs:661:5:661:25 | print_i64(...) | | -| main.rs:664:1:671:1 | enter fn arrays | main.rs:665:5:665:26 | let ... = ... | | -| main.rs:664:1:671:1 | exit fn arrays (normal) | main.rs:664:1:671:1 | exit fn arrays | | -| main.rs:664:13:671:1 | { ... } | main.rs:664:1:671:1 | exit fn arrays (normal) | | -| main.rs:665:5:665:26 | let ... = ... | main.rs:665:18:665:18 | 1 | | -| main.rs:665:9:665:13 | mut a | main.rs:666:5:666:20 | ExprStmt | match | -| main.rs:665:13:665:13 | a | main.rs:665:9:665:13 | mut a | | -| main.rs:665:17:665:25 | [...] | main.rs:665:13:665:13 | a | | -| main.rs:665:18:665:18 | 1 | main.rs:665:21:665:21 | 2 | | -| main.rs:665:21:665:21 | 2 | main.rs:665:24:665:24 | 3 | | -| main.rs:665:24:665:24 | 3 | main.rs:665:17:665:25 | [...] | | -| main.rs:666:5:666:13 | print_i64 | main.rs:666:15:666:15 | a | | -| main.rs:666:5:666:19 | print_i64(...) | main.rs:667:5:667:13 | ExprStmt | | -| main.rs:666:5:666:20 | ExprStmt | main.rs:666:5:666:13 | print_i64 | | -| main.rs:666:15:666:15 | a | main.rs:666:17:666:17 | 0 | | -| main.rs:666:15:666:18 | a[0] | main.rs:666:5:666:19 | print_i64(...) | | -| main.rs:666:17:666:17 | 0 | main.rs:666:15:666:18 | a[0] | | -| main.rs:667:5:667:5 | a | main.rs:667:7:667:7 | 1 | | -| main.rs:667:5:667:8 | a[1] | main.rs:667:12:667:12 | 5 | | -| main.rs:667:5:667:12 | ... = ... | main.rs:668:5:668:20 | ExprStmt | | -| main.rs:667:5:667:13 | ExprStmt | main.rs:667:5:667:5 | a | | -| main.rs:667:7:667:7 | 1 | main.rs:667:5:667:8 | a[1] | | -| main.rs:667:12:667:12 | 5 | main.rs:667:5:667:12 | ... = ... | | +| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | +| main.rs:619:9:619:24 | print_i64(...) | main.rs:616:12:620:5 | { ... } | | +| main.rs:619:9:619:25 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | +| main.rs:619:19:619:19 | x | main.rs:619:23:619:23 | 1 | | +| main.rs:619:19:619:23 | ... + ... | main.rs:619:9:619:24 | print_i64(...) | | +| main.rs:619:23:619:23 | 1 | main.rs:619:19:619:23 | ... + ... | | +| main.rs:621:5:621:13 | print_i64 | main.rs:621:15:621:15 | x | | +| main.rs:621:5:621:16 | print_i64(...) | main.rs:606:17:622:1 | { ... } | | +| main.rs:621:5:621:17 | ExprStmt | main.rs:621:5:621:13 | print_i64 | | +| main.rs:621:15:621:15 | x | main.rs:621:5:621:16 | print_i64(...) | | +| main.rs:624:1:641:1 | enter fn phi_read | main.rs:624:13:624:14 | b1 | | +| main.rs:624:1:641:1 | exit fn phi_read (normal) | main.rs:624:1:641:1 | exit fn phi_read | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:20 | ...: bool | match | +| main.rs:624:13:624:20 | ...: bool | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:30 | ...: bool | match | +| main.rs:624:23:624:30 | ...: bool | main.rs:625:5:625:14 | let ... = 1 | | +| main.rs:624:33:641:1 | { ... } | main.rs:624:1:641:1 | exit fn phi_read (normal) | | +| main.rs:625:5:625:14 | let ... = 1 | main.rs:625:13:625:13 | 1 | | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | | +| main.rs:625:9:625:9 | x | main.rs:626:5:632:6 | let _ = ... | match | +| main.rs:625:13:625:13 | 1 | main.rs:625:9:625:9 | x | | +| main.rs:626:5:632:6 | let _ = ... | main.rs:627:16:627:17 | b1 | | +| main.rs:627:9:627:9 | _ | main.rs:634:5:640:6 | let _ = ... | match | +| main.rs:627:13:632:5 | if b1 {...} else {...} | main.rs:627:9:627:9 | _ | | +| main.rs:627:16:627:17 | b1 | main.rs:629:9:629:21 | ExprStmt | true | +| main.rs:627:16:627:17 | b1 | main.rs:631:9:631:21 | ExprStmt | false | +| main.rs:628:5:630:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:629:9:629:17 | print_i64 | main.rs:629:19:629:19 | x | | +| main.rs:629:9:629:20 | print_i64(...) | main.rs:628:5:630:5 | { ... } | | +| main.rs:629:9:629:21 | ExprStmt | main.rs:629:9:629:17 | print_i64 | | +| main.rs:629:19:629:19 | x | main.rs:629:9:629:20 | print_i64(...) | | +| main.rs:630:12:632:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:631:9:631:17 | print_i64 | main.rs:631:19:631:19 | x | | +| main.rs:631:9:631:20 | print_i64(...) | main.rs:630:12:632:5 | { ... } | | +| main.rs:631:9:631:21 | ExprStmt | main.rs:631:9:631:17 | print_i64 | | +| main.rs:631:19:631:19 | x | main.rs:631:9:631:20 | print_i64(...) | | +| main.rs:634:5:640:6 | let _ = ... | main.rs:635:16:635:17 | b2 | | +| main.rs:635:9:635:9 | _ | main.rs:624:33:641:1 | { ... } | match | +| main.rs:635:13:640:5 | if b2 {...} else {...} | main.rs:635:9:635:9 | _ | | +| main.rs:635:16:635:17 | b2 | main.rs:637:9:637:21 | ExprStmt | true | +| main.rs:635:16:635:17 | b2 | main.rs:639:9:639:21 | ExprStmt | false | +| main.rs:636:5:638:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:637:9:637:17 | print_i64 | main.rs:637:19:637:19 | x | | +| main.rs:637:9:637:20 | print_i64(...) | main.rs:636:5:638:5 | { ... } | | +| main.rs:637:9:637:21 | ExprStmt | main.rs:637:9:637:17 | print_i64 | | +| main.rs:637:19:637:19 | x | main.rs:637:9:637:20 | print_i64(...) | | +| main.rs:638:12:640:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:639:9:639:17 | print_i64 | main.rs:639:19:639:19 | x | | +| main.rs:639:9:639:20 | print_i64(...) | main.rs:638:12:640:5 | { ... } | | +| main.rs:639:9:639:21 | ExprStmt | main.rs:639:9:639:17 | print_i64 | | +| main.rs:639:19:639:19 | x | main.rs:639:9:639:20 | print_i64(...) | | +| main.rs:648:5:650:5 | enter fn my_get | main.rs:648:20:648:23 | self | | +| main.rs:648:5:650:5 | exit fn my_get (normal) | main.rs:648:5:650:5 | exit fn my_get | | +| main.rs:648:15:648:23 | SelfParam | main.rs:649:9:649:24 | ExprStmt | | +| main.rs:648:20:648:23 | self | main.rs:648:15:648:23 | SelfParam | | +| main.rs:649:9:649:23 | return ... | main.rs:648:5:650:5 | exit fn my_get (normal) | return | +| main.rs:649:9:649:24 | ExprStmt | main.rs:649:16:649:19 | self | | +| main.rs:649:16:649:19 | self | main.rs:649:16:649:23 | self.val | | +| main.rs:649:16:649:23 | self.val | main.rs:649:9:649:23 | return ... | | +| main.rs:652:5:654:5 | enter fn id | main.rs:652:11:652:14 | self | | +| main.rs:652:5:654:5 | exit fn id (normal) | main.rs:652:5:654:5 | exit fn id | | +| main.rs:652:11:652:14 | SelfParam | main.rs:653:9:653:12 | self | | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | SelfParam | | +| main.rs:652:25:654:5 | { ... } | main.rs:652:5:654:5 | exit fn id (normal) | | +| main.rs:653:9:653:12 | self | main.rs:652:25:654:5 | { ... } | | +| main.rs:656:5:663:5 | enter fn my_method | main.rs:656:23:656:26 | self | | +| main.rs:656:5:663:5 | exit fn my_method (normal) | main.rs:656:5:663:5 | exit fn my_method | | +| main.rs:656:18:656:26 | SelfParam | main.rs:657:9:660:10 | let ... = ... | | +| main.rs:656:23:656:26 | self | main.rs:656:18:656:26 | SelfParam | | +| main.rs:656:29:663:5 | { ... } | main.rs:656:5:663:5 | exit fn my_method (normal) | | +| main.rs:657:9:660:10 | let ... = ... | main.rs:657:21:660:9 | \|...\| ... | | +| main.rs:657:13:657:17 | mut f | main.rs:661:9:661:13 | ExprStmt | match | +| main.rs:657:17:657:17 | f | main.rs:657:13:657:17 | mut f | | +| main.rs:657:21:660:9 | \|...\| ... | main.rs:657:17:657:17 | f | | +| main.rs:657:21:660:9 | enter \|...\| ... | main.rs:657:22:657:22 | n | | +| main.rs:657:21:660:9 | exit \|...\| ... (normal) | main.rs:657:21:660:9 | exit \|...\| ... | | +| main.rs:657:22:657:22 | ... | main.rs:659:13:659:26 | ExprStmt | | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | ... | match | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | | +| main.rs:657:25:660:9 | { ... } | main.rs:657:21:660:9 | exit \|...\| ... (normal) | | +| main.rs:659:13:659:16 | self | main.rs:659:13:659:20 | self.val | | +| main.rs:659:13:659:20 | self.val | main.rs:659:25:659:25 | n | | +| main.rs:659:13:659:25 | ... += ... | main.rs:657:25:660:9 | { ... } | | +| main.rs:659:13:659:26 | ExprStmt | main.rs:659:13:659:16 | self | | +| main.rs:659:25:659:25 | n | main.rs:659:13:659:25 | ... += ... | | +| main.rs:661:9:661:9 | f | main.rs:661:11:661:11 | 3 | | +| main.rs:661:9:661:12 | f(...) | main.rs:662:9:662:13 | ExprStmt | | +| main.rs:661:9:661:13 | ExprStmt | main.rs:661:9:661:9 | f | | +| main.rs:661:11:661:11 | 3 | main.rs:661:9:661:12 | f(...) | | +| main.rs:662:9:662:9 | f | main.rs:662:11:662:11 | 4 | | +| main.rs:662:9:662:12 | f(...) | main.rs:656:29:663:5 | { ... } | | +| main.rs:662:9:662:13 | ExprStmt | main.rs:662:9:662:9 | f | | +| main.rs:662:11:662:11 | 4 | main.rs:662:9:662:12 | f(...) | | +| main.rs:666:1:673:1 | enter fn structs | main.rs:667:5:667:36 | let ... = ... | | +| main.rs:666:1:673:1 | exit fn structs (normal) | main.rs:666:1:673:1 | exit fn structs | | +| main.rs:666:14:673:1 | { ... } | main.rs:666:1:673:1 | exit fn structs (normal) | | +| main.rs:667:5:667:36 | let ... = ... | main.rs:667:33:667:33 | 1 | | +| main.rs:667:9:667:13 | mut a | main.rs:668:5:668:26 | ExprStmt | match | +| main.rs:667:13:667:13 | a | main.rs:667:9:667:13 | mut a | | +| main.rs:667:17:667:35 | MyStruct {...} | main.rs:667:13:667:13 | a | | +| main.rs:667:33:667:33 | 1 | main.rs:667:17:667:35 | MyStruct {...} | | | main.rs:668:5:668:13 | print_i64 | main.rs:668:15:668:15 | a | | -| main.rs:668:5:668:19 | print_i64(...) | main.rs:669:5:669:18 | ExprStmt | | -| main.rs:668:5:668:20 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | -| main.rs:668:15:668:15 | a | main.rs:668:17:668:17 | 1 | | -| main.rs:668:15:668:18 | a[1] | main.rs:668:5:668:19 | print_i64(...) | | -| main.rs:668:17:668:17 | 1 | main.rs:668:15:668:18 | a[1] | | -| main.rs:669:5:669:5 | a | main.rs:669:10:669:10 | 4 | | -| main.rs:669:5:669:17 | ... = ... | main.rs:670:5:670:20 | ExprStmt | | -| main.rs:669:5:669:18 | ExprStmt | main.rs:669:5:669:5 | a | | -| main.rs:669:9:669:17 | [...] | main.rs:669:5:669:17 | ... = ... | | -| main.rs:669:10:669:10 | 4 | main.rs:669:13:669:13 | 5 | | -| main.rs:669:13:669:13 | 5 | main.rs:669:16:669:16 | 6 | | -| main.rs:669:16:669:16 | 6 | main.rs:669:9:669:17 | [...] | | +| main.rs:668:5:668:25 | print_i64(...) | main.rs:669:5:669:14 | ExprStmt | | +| main.rs:668:5:668:26 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | +| main.rs:668:15:668:15 | a | main.rs:668:15:668:24 | a.my_get() | | +| main.rs:668:15:668:24 | a.my_get() | main.rs:668:5:668:25 | print_i64(...) | | +| main.rs:669:5:669:5 | a | main.rs:669:5:669:9 | a.val | | +| main.rs:669:5:669:9 | a.val | main.rs:669:13:669:13 | 5 | | +| main.rs:669:5:669:13 | ... = ... | main.rs:670:5:670:26 | ExprStmt | | +| main.rs:669:5:669:14 | ExprStmt | main.rs:669:5:669:5 | a | | +| main.rs:669:13:669:13 | 5 | main.rs:669:5:669:13 | ... = ... | | | main.rs:670:5:670:13 | print_i64 | main.rs:670:15:670:15 | a | | -| main.rs:670:5:670:19 | print_i64(...) | main.rs:664:13:671:1 | { ... } | | -| main.rs:670:5:670:20 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | -| main.rs:670:15:670:15 | a | main.rs:670:17:670:17 | 2 | | -| main.rs:670:15:670:18 | a[2] | main.rs:670:5:670:19 | print_i64(...) | | -| main.rs:670:17:670:17 | 2 | main.rs:670:15:670:18 | a[2] | | -| main.rs:673:1:680:1 | enter fn ref_arg | main.rs:674:5:674:15 | let ... = 16 | | -| main.rs:673:1:680:1 | exit fn ref_arg (normal) | main.rs:673:1:680:1 | exit fn ref_arg | | -| main.rs:673:14:680:1 | { ... } | main.rs:673:1:680:1 | exit fn ref_arg (normal) | | -| main.rs:674:5:674:15 | let ... = 16 | main.rs:674:13:674:14 | 16 | | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | | -| main.rs:674:9:674:9 | x | main.rs:675:5:675:22 | ExprStmt | match | -| main.rs:674:13:674:14 | 16 | main.rs:674:9:674:9 | x | | -| main.rs:675:5:675:17 | print_i64_ref | main.rs:675:20:675:20 | x | | -| main.rs:675:5:675:21 | print_i64_ref(...) | main.rs:676:5:676:17 | ExprStmt | | -| main.rs:675:5:675:22 | ExprStmt | main.rs:675:5:675:17 | print_i64_ref | | -| main.rs:675:19:675:20 | &x | main.rs:675:5:675:21 | print_i64_ref(...) | | -| main.rs:675:20:675:20 | x | main.rs:675:19:675:20 | &x | | -| main.rs:676:5:676:13 | print_i64 | main.rs:676:15:676:15 | x | | -| main.rs:676:5:676:16 | print_i64(...) | main.rs:678:5:678:15 | let ... = 17 | | -| main.rs:676:5:676:17 | ExprStmt | main.rs:676:5:676:13 | print_i64 | | -| main.rs:676:15:676:15 | x | main.rs:676:5:676:16 | print_i64(...) | | -| main.rs:678:5:678:15 | let ... = 17 | main.rs:678:13:678:14 | 17 | | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | | -| main.rs:678:9:678:9 | z | main.rs:679:5:679:22 | ExprStmt | match | -| main.rs:678:13:678:14 | 17 | main.rs:678:9:678:9 | z | | -| main.rs:679:5:679:17 | print_i64_ref | main.rs:679:20:679:20 | z | | -| main.rs:679:5:679:21 | print_i64_ref(...) | main.rs:673:14:680:1 | { ... } | | -| main.rs:679:5:679:22 | ExprStmt | main.rs:679:5:679:17 | print_i64_ref | | -| main.rs:679:19:679:20 | &z | main.rs:679:5:679:21 | print_i64_ref(...) | | -| main.rs:679:20:679:20 | z | main.rs:679:19:679:20 | &z | | -| main.rs:687:5:689:5 | enter fn bar | main.rs:687:17:687:20 | self | | -| main.rs:687:5:689:5 | exit fn bar (normal) | main.rs:687:5:689:5 | exit fn bar | | -| main.rs:687:12:687:20 | SelfParam | main.rs:688:9:688:36 | ExprStmt | | -| main.rs:687:17:687:20 | self | main.rs:687:12:687:20 | SelfParam | | -| main.rs:687:23:689:5 | { ... } | main.rs:687:5:689:5 | exit fn bar (normal) | | -| main.rs:688:9:688:13 | * ... | main.rs:688:33:688:33 | 3 | | -| main.rs:688:9:688:35 | ... = ... | main.rs:687:23:689:5 | { ... } | | -| main.rs:688:9:688:36 | ExprStmt | main.rs:688:10:688:13 | self | | -| main.rs:688:10:688:13 | self | main.rs:688:9:688:13 | * ... | | -| main.rs:688:17:688:35 | MyStruct {...} | main.rs:688:9:688:35 | ... = ... | | -| main.rs:688:33:688:33 | 3 | main.rs:688:17:688:35 | MyStruct {...} | | -| main.rs:692:1:698:1 | enter fn ref_methodcall_receiver | main.rs:693:5:693:36 | let ... = ... | | -| main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver | | -| main.rs:692:30:698:1 | { ... } | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:693:5:693:36 | let ... = ... | main.rs:693:33:693:33 | 1 | | -| main.rs:693:9:693:13 | mut a | main.rs:694:5:694:12 | ExprStmt | match | -| main.rs:693:13:693:13 | a | main.rs:693:9:693:13 | mut a | | -| main.rs:693:17:693:35 | MyStruct {...} | main.rs:693:13:693:13 | a | | -| main.rs:693:33:693:33 | 1 | main.rs:693:17:693:35 | MyStruct {...} | | -| main.rs:694:5:694:5 | a | main.rs:694:5:694:11 | a.bar() | | -| main.rs:694:5:694:11 | a.bar() | main.rs:697:5:697:21 | ExprStmt | | -| main.rs:694:5:694:12 | ExprStmt | main.rs:694:5:694:5 | a | | -| main.rs:697:5:697:13 | print_i64 | main.rs:697:15:697:15 | a | | -| main.rs:697:5:697:20 | print_i64(...) | main.rs:692:30:698:1 | { ... } | | -| main.rs:697:5:697:21 | ExprStmt | main.rs:697:5:697:13 | print_i64 | | -| main.rs:697:15:697:15 | a | main.rs:697:15:697:19 | a.val | | -| main.rs:697:15:697:19 | a.val | main.rs:697:5:697:20 | print_i64(...) | | -| main.rs:714:1:725:1 | enter fn macro_invocation | main.rs:715:5:716:26 | let ... = ... | | -| main.rs:714:1:725:1 | exit fn macro_invocation (normal) | main.rs:714:1:725:1 | exit fn macro_invocation | | -| main.rs:714:23:725:1 | { ... } | main.rs:714:1:725:1 | exit fn macro_invocation (normal) | | -| main.rs:715:5:716:26 | let ... = ... | main.rs:716:23:716:24 | let ... = 37 | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:717:5:717:30 | ExprStmt | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | { ... } | | -| main.rs:716:9:716:25 | MacroExpr | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:716:9:716:25 | let_in_macro!... | main.rs:716:9:716:25 | MacroExpr | | -| main.rs:716:23:716:24 | 37 | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:23:716:24 | let ... = 37 | main.rs:716:23:716:24 | 37 | | -| main.rs:716:23:716:24 | { ... } | main.rs:716:9:716:25 | let_in_macro!... | | -| main.rs:717:5:717:13 | print_i64 | main.rs:717:15:717:28 | var_from_macro | | -| main.rs:717:5:717:29 | print_i64(...) | main.rs:718:5:718:26 | let ... = 33 | | -| main.rs:717:5:717:30 | ExprStmt | main.rs:717:5:717:13 | print_i64 | | -| main.rs:717:15:717:28 | var_from_macro | main.rs:717:5:717:29 | print_i64(...) | | -| main.rs:718:5:718:26 | let ... = 33 | main.rs:718:24:718:25 | 33 | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:723:5:723:44 | ExprStmt | match | -| main.rs:718:24:718:25 | 33 | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:723:5:723:13 | print_i64 | main.rs:723:15:723:28 | let ... = 0 | | -| main.rs:723:5:723:43 | print_i64(...) | main.rs:724:5:724:28 | ExprStmt | | -| main.rs:723:5:723:44 | ExprStmt | main.rs:723:5:723:13 | print_i64 | | -| main.rs:723:15:723:28 | 0 | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | let ... = 0 | main.rs:723:15:723:28 | 0 | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | match | -| main.rs:723:15:723:42 | MacroExpr | main.rs:723:5:723:43 | print_i64(...) | | -| main.rs:723:15:723:42 | let_in_macro2!... | main.rs:723:15:723:42 | MacroExpr | | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:30:723:41 | { ... } | | -| main.rs:723:30:723:41 | { ... } | main.rs:723:15:723:42 | let_in_macro2!... | | -| main.rs:724:5:724:13 | print_i64 | main.rs:724:15:724:26 | var_in_macro | | -| main.rs:724:5:724:27 | print_i64(...) | main.rs:714:23:725:1 | { ... } | | -| main.rs:724:5:724:28 | ExprStmt | main.rs:724:5:724:13 | print_i64 | | -| main.rs:724:15:724:26 | var_in_macro | main.rs:724:5:724:27 | print_i64(...) | | -| main.rs:727:1:731:1 | enter fn let_without_initializer | main.rs:728:5:728:10 | let ... | | -| main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | main.rs:727:1:731:1 | exit fn let_without_initializer | | -| main.rs:727:30:731:1 | { ... } | main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | | -| main.rs:728:5:728:10 | let ... | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:729:5:729:10 | ExprStmt | match | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | | -| main.rs:729:5:729:9 | ... = ... | main.rs:730:5:730:17 | ExprStmt | | -| main.rs:729:5:729:10 | ExprStmt | main.rs:729:5:729:5 | x | | -| main.rs:729:9:729:9 | 1 | main.rs:729:5:729:9 | ... = ... | | -| main.rs:730:5:730:13 | print_i64 | main.rs:730:15:730:15 | x | | -| main.rs:730:5:730:16 | print_i64(...) | main.rs:727:30:731:1 | { ... } | | -| main.rs:730:5:730:17 | ExprStmt | main.rs:730:5:730:13 | print_i64 | | -| main.rs:730:15:730:15 | x | main.rs:730:5:730:16 | print_i64(...) | | -| main.rs:733:1:743:1 | enter fn capture_phi | main.rs:734:5:734:20 | let ... = 100 | | -| main.rs:733:1:743:1 | exit fn capture_phi (normal) | main.rs:733:1:743:1 | exit fn capture_phi | | -| main.rs:733:18:743:1 | { ... } | main.rs:733:1:743:1 | exit fn capture_phi (normal) | | -| main.rs:734:5:734:20 | let ... = 100 | main.rs:734:17:734:19 | 100 | | -| main.rs:734:9:734:13 | mut x | main.rs:735:5:740:6 | let ... = ... | match | -| main.rs:734:13:734:13 | x | main.rs:734:9:734:13 | mut x | | -| main.rs:734:17:734:19 | 100 | main.rs:734:13:734:13 | x | | -| main.rs:735:5:740:6 | let ... = ... | main.rs:735:19:740:5 | \|...\| ... | | -| main.rs:735:9:735:15 | mut cap | main.rs:741:5:741:14 | ExprStmt | match | -| main.rs:735:13:735:15 | cap | main.rs:735:9:735:15 | mut cap | | -| main.rs:735:19:740:5 | \|...\| ... | main.rs:735:13:735:15 | cap | | -| main.rs:735:19:740:5 | enter \|...\| ... | main.rs:735:20:735:20 | b | | -| main.rs:735:19:740:5 | exit \|...\| ... (normal) | main.rs:735:19:740:5 | exit \|...\| ... | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:26 | ...: bool | match | -| main.rs:735:20:735:26 | ...: bool | main.rs:736:9:739:10 | let _ = ... | | -| main.rs:735:29:740:5 | { ... } | main.rs:735:19:740:5 | exit \|...\| ... (normal) | | -| main.rs:736:9:739:10 | let _ = ... | main.rs:737:20:737:20 | b | | -| main.rs:737:13:737:13 | _ | main.rs:735:29:740:5 | { ... } | match | -| main.rs:737:17:739:9 | if b {...} | main.rs:737:13:737:13 | _ | | -| main.rs:737:20:737:20 | b | main.rs:737:17:739:9 | if b {...} | false | -| main.rs:737:20:737:20 | b | main.rs:738:13:738:20 | ExprStmt | true | -| main.rs:737:22:739:9 | { ... } | main.rs:737:17:739:9 | if b {...} | | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | | -| main.rs:738:13:738:19 | ... = ... | main.rs:737:22:739:9 | { ... } | | -| main.rs:738:13:738:20 | ExprStmt | main.rs:738:13:738:13 | x | | -| main.rs:738:17:738:19 | 200 | main.rs:738:13:738:19 | ... = ... | | -| main.rs:741:5:741:7 | cap | main.rs:741:9:741:12 | true | | -| main.rs:741:5:741:13 | cap(...) | main.rs:742:5:742:17 | ExprStmt | | -| main.rs:741:5:741:14 | ExprStmt | main.rs:741:5:741:7 | cap | | -| main.rs:741:9:741:12 | true | main.rs:741:5:741:13 | cap(...) | | -| main.rs:742:5:742:13 | print_i64 | main.rs:742:15:742:15 | x | | -| main.rs:742:5:742:16 | print_i64(...) | main.rs:733:18:743:1 | { ... } | | -| main.rs:742:5:742:17 | ExprStmt | main.rs:742:5:742:13 | print_i64 | | -| main.rs:742:15:742:15 | x | main.rs:742:5:742:16 | print_i64(...) | | -| main.rs:745:1:788:1 | enter fn main | main.rs:746:5:746:25 | ExprStmt | | -| main.rs:745:1:788:1 | exit fn main (normal) | main.rs:745:1:788:1 | exit fn main | | -| main.rs:745:11:788:1 | { ... } | main.rs:745:1:788:1 | exit fn main (normal) | | -| main.rs:746:5:746:22 | immutable_variable | main.rs:746:5:746:24 | immutable_variable(...) | | -| main.rs:746:5:746:24 | immutable_variable(...) | main.rs:747:5:747:23 | ExprStmt | | -| main.rs:746:5:746:25 | ExprStmt | main.rs:746:5:746:22 | immutable_variable | | -| main.rs:747:5:747:20 | mutable_variable | main.rs:747:5:747:22 | mutable_variable(...) | | -| main.rs:747:5:747:22 | mutable_variable(...) | main.rs:748:5:748:40 | ExprStmt | | -| main.rs:747:5:747:23 | ExprStmt | main.rs:747:5:747:20 | mutable_variable | | -| main.rs:748:5:748:37 | mutable_variable_immutable_borrow | main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | main.rs:749:5:749:23 | ExprStmt | | -| main.rs:748:5:748:40 | ExprStmt | main.rs:748:5:748:37 | mutable_variable_immutable_borrow | | -| main.rs:749:5:749:20 | variable_shadow1 | main.rs:749:5:749:22 | variable_shadow1(...) | | -| main.rs:749:5:749:22 | variable_shadow1(...) | main.rs:750:5:750:23 | ExprStmt | | -| main.rs:749:5:749:23 | ExprStmt | main.rs:749:5:749:20 | variable_shadow1 | | -| main.rs:750:5:750:20 | variable_shadow2 | main.rs:750:5:750:22 | variable_shadow2(...) | | -| main.rs:750:5:750:22 | variable_shadow2(...) | main.rs:751:5:751:19 | ExprStmt | | -| main.rs:750:5:750:23 | ExprStmt | main.rs:750:5:750:20 | variable_shadow2 | | -| main.rs:751:5:751:16 | let_pattern1 | main.rs:751:5:751:18 | let_pattern1(...) | | -| main.rs:751:5:751:18 | let_pattern1(...) | main.rs:752:5:752:19 | ExprStmt | | -| main.rs:751:5:751:19 | ExprStmt | main.rs:751:5:751:16 | let_pattern1 | | -| main.rs:752:5:752:16 | let_pattern2 | main.rs:752:5:752:18 | let_pattern2(...) | | -| main.rs:752:5:752:18 | let_pattern2(...) | main.rs:753:5:753:19 | ExprStmt | | -| main.rs:752:5:752:19 | ExprStmt | main.rs:752:5:752:16 | let_pattern2 | | -| main.rs:753:5:753:16 | let_pattern3 | main.rs:753:5:753:18 | let_pattern3(...) | | -| main.rs:753:5:753:18 | let_pattern3(...) | main.rs:754:5:754:19 | ExprStmt | | -| main.rs:753:5:753:19 | ExprStmt | main.rs:753:5:753:16 | let_pattern3 | | -| main.rs:754:5:754:16 | let_pattern4 | main.rs:754:5:754:18 | let_pattern4(...) | | -| main.rs:754:5:754:18 | let_pattern4(...) | main.rs:755:5:755:21 | ExprStmt | | -| main.rs:754:5:754:19 | ExprStmt | main.rs:754:5:754:16 | let_pattern4 | | -| main.rs:755:5:755:18 | match_pattern1 | main.rs:755:5:755:20 | match_pattern1(...) | | -| main.rs:755:5:755:20 | match_pattern1(...) | main.rs:756:5:756:21 | ExprStmt | | -| main.rs:755:5:755:21 | ExprStmt | main.rs:755:5:755:18 | match_pattern1 | | -| main.rs:756:5:756:18 | match_pattern2 | main.rs:756:5:756:20 | match_pattern2(...) | | -| main.rs:756:5:756:20 | match_pattern2(...) | main.rs:757:5:757:21 | ExprStmt | | -| main.rs:756:5:756:21 | ExprStmt | main.rs:756:5:756:18 | match_pattern2 | | -| main.rs:757:5:757:18 | match_pattern3 | main.rs:757:5:757:20 | match_pattern3(...) | | -| main.rs:757:5:757:20 | match_pattern3(...) | main.rs:758:5:758:21 | ExprStmt | | -| main.rs:757:5:757:21 | ExprStmt | main.rs:757:5:757:18 | match_pattern3 | | -| main.rs:758:5:758:18 | match_pattern4 | main.rs:758:5:758:20 | match_pattern4(...) | | -| main.rs:758:5:758:20 | match_pattern4(...) | main.rs:759:5:759:21 | ExprStmt | | -| main.rs:758:5:758:21 | ExprStmt | main.rs:758:5:758:18 | match_pattern4 | | -| main.rs:759:5:759:18 | match_pattern5 | main.rs:759:5:759:20 | match_pattern5(...) | | -| main.rs:759:5:759:20 | match_pattern5(...) | main.rs:760:5:760:21 | ExprStmt | | -| main.rs:759:5:759:21 | ExprStmt | main.rs:759:5:759:18 | match_pattern5 | | -| main.rs:760:5:760:18 | match_pattern6 | main.rs:760:5:760:20 | match_pattern6(...) | | -| main.rs:760:5:760:20 | match_pattern6(...) | main.rs:761:5:761:21 | ExprStmt | | -| main.rs:760:5:760:21 | ExprStmt | main.rs:760:5:760:18 | match_pattern6 | | -| main.rs:761:5:761:18 | match_pattern7 | main.rs:761:5:761:20 | match_pattern7(...) | | -| main.rs:761:5:761:20 | match_pattern7(...) | main.rs:762:5:762:21 | ExprStmt | | -| main.rs:761:5:761:21 | ExprStmt | main.rs:761:5:761:18 | match_pattern7 | | -| main.rs:762:5:762:18 | match_pattern8 | main.rs:762:5:762:20 | match_pattern8(...) | | -| main.rs:762:5:762:20 | match_pattern8(...) | main.rs:763:5:763:21 | ExprStmt | | -| main.rs:762:5:762:21 | ExprStmt | main.rs:762:5:762:18 | match_pattern8 | | -| main.rs:763:5:763:18 | match_pattern9 | main.rs:763:5:763:20 | match_pattern9(...) | | -| main.rs:763:5:763:20 | match_pattern9(...) | main.rs:764:5:764:22 | ExprStmt | | -| main.rs:763:5:763:21 | ExprStmt | main.rs:763:5:763:18 | match_pattern9 | | -| main.rs:764:5:764:19 | match_pattern10 | main.rs:764:5:764:21 | match_pattern10(...) | | -| main.rs:764:5:764:21 | match_pattern10(...) | main.rs:765:5:765:22 | ExprStmt | | -| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | match_pattern10 | | -| main.rs:765:5:765:19 | match_pattern11 | main.rs:765:5:765:21 | match_pattern11(...) | | -| main.rs:765:5:765:21 | match_pattern11(...) | main.rs:766:5:766:22 | ExprStmt | | -| main.rs:765:5:765:22 | ExprStmt | main.rs:765:5:765:19 | match_pattern11 | | -| main.rs:766:5:766:19 | match_pattern12 | main.rs:766:5:766:21 | match_pattern12(...) | | -| main.rs:766:5:766:21 | match_pattern12(...) | main.rs:767:5:767:22 | ExprStmt | | -| main.rs:766:5:766:22 | ExprStmt | main.rs:766:5:766:19 | match_pattern12 | | -| main.rs:767:5:767:19 | match_pattern13 | main.rs:767:5:767:21 | match_pattern13(...) | | -| main.rs:767:5:767:21 | match_pattern13(...) | main.rs:768:5:768:22 | ExprStmt | | -| main.rs:767:5:767:22 | ExprStmt | main.rs:767:5:767:19 | match_pattern13 | | -| main.rs:768:5:768:19 | match_pattern14 | main.rs:768:5:768:21 | match_pattern14(...) | | -| main.rs:768:5:768:21 | match_pattern14(...) | main.rs:769:5:769:22 | ExprStmt | | -| main.rs:768:5:768:22 | ExprStmt | main.rs:768:5:768:19 | match_pattern14 | | -| main.rs:769:5:769:19 | match_pattern15 | main.rs:769:5:769:21 | match_pattern15(...) | | -| main.rs:769:5:769:21 | match_pattern15(...) | main.rs:770:5:770:36 | ExprStmt | | -| main.rs:769:5:769:22 | ExprStmt | main.rs:769:5:769:19 | match_pattern15 | | -| main.rs:770:5:770:18 | param_pattern1 | main.rs:770:20:770:22 | "a" | | -| main.rs:770:5:770:35 | param_pattern1(...) | main.rs:771:5:771:37 | ExprStmt | | -| main.rs:770:5:770:36 | ExprStmt | main.rs:770:5:770:18 | param_pattern1 | | -| main.rs:770:20:770:22 | "a" | main.rs:770:26:770:28 | "b" | | -| main.rs:770:25:770:34 | TupleExpr | main.rs:770:5:770:35 | param_pattern1(...) | | -| main.rs:770:26:770:28 | "b" | main.rs:770:31:770:33 | "c" | | -| main.rs:770:31:770:33 | "c" | main.rs:770:25:770:34 | TupleExpr | | -| main.rs:771:5:771:18 | param_pattern2 | main.rs:771:20:771:31 | ...::Left | | -| main.rs:771:5:771:36 | param_pattern2(...) | main.rs:772:5:772:26 | ExprStmt | | -| main.rs:771:5:771:37 | ExprStmt | main.rs:771:5:771:18 | param_pattern2 | | -| main.rs:771:20:771:31 | ...::Left | main.rs:771:33:771:34 | 45 | | -| main.rs:771:20:771:35 | ...::Left(...) | main.rs:771:5:771:36 | param_pattern2(...) | | -| main.rs:771:33:771:34 | 45 | main.rs:771:20:771:35 | ...::Left(...) | | -| main.rs:772:5:772:23 | destruct_assignment | main.rs:772:5:772:25 | destruct_assignment(...) | | -| main.rs:772:5:772:25 | destruct_assignment(...) | main.rs:773:5:773:23 | ExprStmt | | -| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | destruct_assignment | | -| main.rs:773:5:773:20 | closure_variable | main.rs:773:5:773:22 | closure_variable(...) | | -| main.rs:773:5:773:22 | closure_variable(...) | main.rs:774:5:774:22 | ExprStmt | | -| main.rs:773:5:773:23 | ExprStmt | main.rs:773:5:773:20 | closure_variable | | -| main.rs:774:5:774:19 | nested_function | main.rs:774:5:774:21 | nested_function(...) | | -| main.rs:774:5:774:21 | nested_function(...) | main.rs:775:5:775:19 | ExprStmt | | -| main.rs:774:5:774:22 | ExprStmt | main.rs:774:5:774:19 | nested_function | | -| main.rs:775:5:775:16 | for_variable | main.rs:775:5:775:18 | for_variable(...) | | -| main.rs:775:5:775:18 | for_variable(...) | main.rs:776:5:776:17 | ExprStmt | | -| main.rs:775:5:775:19 | ExprStmt | main.rs:775:5:775:16 | for_variable | | -| main.rs:776:5:776:14 | add_assign | main.rs:776:5:776:16 | add_assign(...) | | -| main.rs:776:5:776:16 | add_assign(...) | main.rs:777:5:777:13 | ExprStmt | | -| main.rs:776:5:776:17 | ExprStmt | main.rs:776:5:776:14 | add_assign | | -| main.rs:777:5:777:10 | mutate | main.rs:777:5:777:12 | mutate(...) | | -| main.rs:777:5:777:12 | mutate(...) | main.rs:778:5:778:17 | ExprStmt | | -| main.rs:777:5:777:13 | ExprStmt | main.rs:777:5:777:10 | mutate | | -| main.rs:778:5:778:14 | mutate_arg | main.rs:778:5:778:16 | mutate_arg(...) | | -| main.rs:778:5:778:16 | mutate_arg(...) | main.rs:779:5:779:12 | ExprStmt | | -| main.rs:778:5:778:17 | ExprStmt | main.rs:778:5:778:14 | mutate_arg | | -| main.rs:779:5:779:9 | alias | main.rs:779:5:779:11 | alias(...) | | -| main.rs:779:5:779:11 | alias(...) | main.rs:780:5:780:18 | ExprStmt | | -| main.rs:779:5:779:12 | ExprStmt | main.rs:779:5:779:9 | alias | | -| main.rs:780:5:780:15 | capture_mut | main.rs:780:5:780:17 | capture_mut(...) | | -| main.rs:780:5:780:17 | capture_mut(...) | main.rs:781:5:781:20 | ExprStmt | | -| main.rs:780:5:780:18 | ExprStmt | main.rs:780:5:780:15 | capture_mut | | -| main.rs:781:5:781:17 | capture_immut | main.rs:781:5:781:19 | capture_immut(...) | | -| main.rs:781:5:781:19 | capture_immut(...) | main.rs:782:5:782:26 | ExprStmt | | -| main.rs:781:5:781:20 | ExprStmt | main.rs:781:5:781:17 | capture_immut | | -| main.rs:782:5:782:23 | async_block_capture | main.rs:782:5:782:25 | async_block_capture(...) | | -| main.rs:782:5:782:25 | async_block_capture(...) | main.rs:783:5:783:14 | ExprStmt | | -| main.rs:782:5:782:26 | ExprStmt | main.rs:782:5:782:23 | async_block_capture | | -| main.rs:783:5:783:11 | structs | main.rs:783:5:783:13 | structs(...) | | -| main.rs:783:5:783:13 | structs(...) | main.rs:784:5:784:14 | ExprStmt | | -| main.rs:783:5:783:14 | ExprStmt | main.rs:783:5:783:11 | structs | | -| main.rs:784:5:784:11 | ref_arg | main.rs:784:5:784:13 | ref_arg(...) | | -| main.rs:784:5:784:13 | ref_arg(...) | main.rs:785:5:785:30 | ExprStmt | | -| main.rs:784:5:784:14 | ExprStmt | main.rs:784:5:784:11 | ref_arg | | -| main.rs:785:5:785:27 | ref_methodcall_receiver | main.rs:785:5:785:29 | ref_methodcall_receiver(...) | | -| main.rs:785:5:785:29 | ref_methodcall_receiver(...) | main.rs:786:5:786:23 | ExprStmt | | -| main.rs:785:5:785:30 | ExprStmt | main.rs:785:5:785:27 | ref_methodcall_receiver | | -| main.rs:786:5:786:20 | macro_invocation | main.rs:786:5:786:22 | macro_invocation(...) | | -| main.rs:786:5:786:22 | macro_invocation(...) | main.rs:787:5:787:18 | ExprStmt | | -| main.rs:786:5:786:23 | ExprStmt | main.rs:786:5:786:20 | macro_invocation | | -| main.rs:787:5:787:15 | capture_phi | main.rs:787:5:787:17 | capture_phi(...) | | -| main.rs:787:5:787:17 | capture_phi(...) | main.rs:745:11:788:1 | { ... } | | -| main.rs:787:5:787:18 | ExprStmt | main.rs:787:5:787:15 | capture_phi | | +| main.rs:670:5:670:25 | print_i64(...) | main.rs:671:5:671:28 | ExprStmt | | +| main.rs:670:5:670:26 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | +| main.rs:670:15:670:15 | a | main.rs:670:15:670:24 | a.my_get() | | +| main.rs:670:15:670:24 | a.my_get() | main.rs:670:5:670:25 | print_i64(...) | | +| main.rs:671:5:671:5 | a | main.rs:671:25:671:25 | 2 | | +| main.rs:671:5:671:27 | ... = ... | main.rs:672:5:672:26 | ExprStmt | | +| main.rs:671:5:671:28 | ExprStmt | main.rs:671:5:671:5 | a | | +| main.rs:671:9:671:27 | MyStruct {...} | main.rs:671:5:671:27 | ... = ... | | +| main.rs:671:25:671:25 | 2 | main.rs:671:9:671:27 | MyStruct {...} | | +| main.rs:672:5:672:13 | print_i64 | main.rs:672:15:672:15 | a | | +| main.rs:672:5:672:25 | print_i64(...) | main.rs:666:14:673:1 | { ... } | | +| main.rs:672:5:672:26 | ExprStmt | main.rs:672:5:672:13 | print_i64 | | +| main.rs:672:15:672:15 | a | main.rs:672:15:672:24 | a.my_get() | | +| main.rs:672:15:672:24 | a.my_get() | main.rs:672:5:672:25 | print_i64(...) | | +| main.rs:675:1:682:1 | enter fn arrays | main.rs:676:5:676:26 | let ... = ... | | +| main.rs:675:1:682:1 | exit fn arrays (normal) | main.rs:675:1:682:1 | exit fn arrays | | +| main.rs:675:13:682:1 | { ... } | main.rs:675:1:682:1 | exit fn arrays (normal) | | +| main.rs:676:5:676:26 | let ... = ... | main.rs:676:18:676:18 | 1 | | +| main.rs:676:9:676:13 | mut a | main.rs:677:5:677:20 | ExprStmt | match | +| main.rs:676:13:676:13 | a | main.rs:676:9:676:13 | mut a | | +| main.rs:676:17:676:25 | [...] | main.rs:676:13:676:13 | a | | +| main.rs:676:18:676:18 | 1 | main.rs:676:21:676:21 | 2 | | +| main.rs:676:21:676:21 | 2 | main.rs:676:24:676:24 | 3 | | +| main.rs:676:24:676:24 | 3 | main.rs:676:17:676:25 | [...] | | +| main.rs:677:5:677:13 | print_i64 | main.rs:677:15:677:15 | a | | +| main.rs:677:5:677:19 | print_i64(...) | main.rs:678:5:678:13 | ExprStmt | | +| main.rs:677:5:677:20 | ExprStmt | main.rs:677:5:677:13 | print_i64 | | +| main.rs:677:15:677:15 | a | main.rs:677:17:677:17 | 0 | | +| main.rs:677:15:677:18 | a[0] | main.rs:677:5:677:19 | print_i64(...) | | +| main.rs:677:17:677:17 | 0 | main.rs:677:15:677:18 | a[0] | | +| main.rs:678:5:678:5 | a | main.rs:678:7:678:7 | 1 | | +| main.rs:678:5:678:8 | a[1] | main.rs:678:12:678:12 | 5 | | +| main.rs:678:5:678:12 | ... = ... | main.rs:679:5:679:20 | ExprStmt | | +| main.rs:678:5:678:13 | ExprStmt | main.rs:678:5:678:5 | a | | +| main.rs:678:7:678:7 | 1 | main.rs:678:5:678:8 | a[1] | | +| main.rs:678:12:678:12 | 5 | main.rs:678:5:678:12 | ... = ... | | +| main.rs:679:5:679:13 | print_i64 | main.rs:679:15:679:15 | a | | +| main.rs:679:5:679:19 | print_i64(...) | main.rs:680:5:680:18 | ExprStmt | | +| main.rs:679:5:679:20 | ExprStmt | main.rs:679:5:679:13 | print_i64 | | +| main.rs:679:15:679:15 | a | main.rs:679:17:679:17 | 1 | | +| main.rs:679:15:679:18 | a[1] | main.rs:679:5:679:19 | print_i64(...) | | +| main.rs:679:17:679:17 | 1 | main.rs:679:15:679:18 | a[1] | | +| main.rs:680:5:680:5 | a | main.rs:680:10:680:10 | 4 | | +| main.rs:680:5:680:17 | ... = ... | main.rs:681:5:681:20 | ExprStmt | | +| main.rs:680:5:680:18 | ExprStmt | main.rs:680:5:680:5 | a | | +| main.rs:680:9:680:17 | [...] | main.rs:680:5:680:17 | ... = ... | | +| main.rs:680:10:680:10 | 4 | main.rs:680:13:680:13 | 5 | | +| main.rs:680:13:680:13 | 5 | main.rs:680:16:680:16 | 6 | | +| main.rs:680:16:680:16 | 6 | main.rs:680:9:680:17 | [...] | | +| main.rs:681:5:681:13 | print_i64 | main.rs:681:15:681:15 | a | | +| main.rs:681:5:681:19 | print_i64(...) | main.rs:675:13:682:1 | { ... } | | +| main.rs:681:5:681:20 | ExprStmt | main.rs:681:5:681:13 | print_i64 | | +| main.rs:681:15:681:15 | a | main.rs:681:17:681:17 | 2 | | +| main.rs:681:15:681:18 | a[2] | main.rs:681:5:681:19 | print_i64(...) | | +| main.rs:681:17:681:17 | 2 | main.rs:681:15:681:18 | a[2] | | +| main.rs:684:1:691:1 | enter fn ref_arg | main.rs:685:5:685:15 | let ... = 16 | | +| main.rs:684:1:691:1 | exit fn ref_arg (normal) | main.rs:684:1:691:1 | exit fn ref_arg | | +| main.rs:684:14:691:1 | { ... } | main.rs:684:1:691:1 | exit fn ref_arg (normal) | | +| main.rs:685:5:685:15 | let ... = 16 | main.rs:685:13:685:14 | 16 | | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | | +| main.rs:685:9:685:9 | x | main.rs:686:5:686:22 | ExprStmt | match | +| main.rs:685:13:685:14 | 16 | main.rs:685:9:685:9 | x | | +| main.rs:686:5:686:17 | print_i64_ref | main.rs:686:20:686:20 | x | | +| main.rs:686:5:686:21 | print_i64_ref(...) | main.rs:687:5:687:17 | ExprStmt | | +| main.rs:686:5:686:22 | ExprStmt | main.rs:686:5:686:17 | print_i64_ref | | +| main.rs:686:19:686:20 | &x | main.rs:686:5:686:21 | print_i64_ref(...) | | +| main.rs:686:20:686:20 | x | main.rs:686:19:686:20 | &x | | +| main.rs:687:5:687:13 | print_i64 | main.rs:687:15:687:15 | x | | +| main.rs:687:5:687:16 | print_i64(...) | main.rs:689:5:689:15 | let ... = 17 | | +| main.rs:687:5:687:17 | ExprStmt | main.rs:687:5:687:13 | print_i64 | | +| main.rs:687:15:687:15 | x | main.rs:687:5:687:16 | print_i64(...) | | +| main.rs:689:5:689:15 | let ... = 17 | main.rs:689:13:689:14 | 17 | | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | | +| main.rs:689:9:689:9 | z | main.rs:690:5:690:22 | ExprStmt | match | +| main.rs:689:13:689:14 | 17 | main.rs:689:9:689:9 | z | | +| main.rs:690:5:690:17 | print_i64_ref | main.rs:690:20:690:20 | z | | +| main.rs:690:5:690:21 | print_i64_ref(...) | main.rs:684:14:691:1 | { ... } | | +| main.rs:690:5:690:22 | ExprStmt | main.rs:690:5:690:17 | print_i64_ref | | +| main.rs:690:19:690:20 | &z | main.rs:690:5:690:21 | print_i64_ref(...) | | +| main.rs:690:20:690:20 | z | main.rs:690:19:690:20 | &z | | +| main.rs:698:5:700:5 | enter fn bar | main.rs:698:17:698:20 | self | | +| main.rs:698:5:700:5 | exit fn bar (normal) | main.rs:698:5:700:5 | exit fn bar | | +| main.rs:698:12:698:20 | SelfParam | main.rs:699:9:699:36 | ExprStmt | | +| main.rs:698:17:698:20 | self | main.rs:698:12:698:20 | SelfParam | | +| main.rs:698:23:700:5 | { ... } | main.rs:698:5:700:5 | exit fn bar (normal) | | +| main.rs:699:9:699:13 | * ... | main.rs:699:33:699:33 | 3 | | +| main.rs:699:9:699:35 | ... = ... | main.rs:698:23:700:5 | { ... } | | +| main.rs:699:9:699:36 | ExprStmt | main.rs:699:10:699:13 | self | | +| main.rs:699:10:699:13 | self | main.rs:699:9:699:13 | * ... | | +| main.rs:699:17:699:35 | MyStruct {...} | main.rs:699:9:699:35 | ... = ... | | +| main.rs:699:33:699:33 | 3 | main.rs:699:17:699:35 | MyStruct {...} | | +| main.rs:703:1:709:1 | enter fn ref_methodcall_receiver | main.rs:704:5:704:36 | let ... = ... | | +| main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver | | +| main.rs:703:30:709:1 | { ... } | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:704:5:704:36 | let ... = ... | main.rs:704:33:704:33 | 1 | | +| main.rs:704:9:704:13 | mut a | main.rs:705:5:705:12 | ExprStmt | match | +| main.rs:704:13:704:13 | a | main.rs:704:9:704:13 | mut a | | +| main.rs:704:17:704:35 | MyStruct {...} | main.rs:704:13:704:13 | a | | +| main.rs:704:33:704:33 | 1 | main.rs:704:17:704:35 | MyStruct {...} | | +| main.rs:705:5:705:5 | a | main.rs:705:5:705:11 | a.bar() | | +| main.rs:705:5:705:11 | a.bar() | main.rs:708:5:708:21 | ExprStmt | | +| main.rs:705:5:705:12 | ExprStmt | main.rs:705:5:705:5 | a | | +| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:15 | a | | +| main.rs:708:5:708:20 | print_i64(...) | main.rs:703:30:709:1 | { ... } | | +| main.rs:708:5:708:21 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | +| main.rs:708:15:708:15 | a | main.rs:708:15:708:19 | a.val | | +| main.rs:708:15:708:19 | a.val | main.rs:708:5:708:20 | print_i64(...) | | +| main.rs:725:1:736:1 | enter fn macro_invocation | main.rs:726:5:727:26 | let ... = ... | | +| main.rs:725:1:736:1 | exit fn macro_invocation (normal) | main.rs:725:1:736:1 | exit fn macro_invocation | | +| main.rs:725:23:736:1 | { ... } | main.rs:725:1:736:1 | exit fn macro_invocation (normal) | | +| main.rs:726:5:727:26 | let ... = ... | main.rs:727:23:727:24 | let ... = 37 | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:728:5:728:30 | ExprStmt | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | { ... } | | +| main.rs:727:9:727:25 | MacroExpr | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:727:9:727:25 | let_in_macro!... | main.rs:727:9:727:25 | MacroExpr | | +| main.rs:727:23:727:24 | 37 | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:23:727:24 | let ... = 37 | main.rs:727:23:727:24 | 37 | | +| main.rs:727:23:727:24 | { ... } | main.rs:727:9:727:25 | let_in_macro!... | | +| main.rs:728:5:728:13 | print_i64 | main.rs:728:15:728:28 | var_from_macro | | +| main.rs:728:5:728:29 | print_i64(...) | main.rs:729:5:729:26 | let ... = 33 | | +| main.rs:728:5:728:30 | ExprStmt | main.rs:728:5:728:13 | print_i64 | | +| main.rs:728:15:728:28 | var_from_macro | main.rs:728:5:728:29 | print_i64(...) | | +| main.rs:729:5:729:26 | let ... = 33 | main.rs:729:24:729:25 | 33 | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:734:5:734:44 | ExprStmt | match | +| main.rs:729:24:729:25 | 33 | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:734:5:734:13 | print_i64 | main.rs:734:15:734:28 | let ... = 0 | | +| main.rs:734:5:734:43 | print_i64(...) | main.rs:735:5:735:28 | ExprStmt | | +| main.rs:734:5:734:44 | ExprStmt | main.rs:734:5:734:13 | print_i64 | | +| main.rs:734:15:734:28 | 0 | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | let ... = 0 | main.rs:734:15:734:28 | 0 | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | match | +| main.rs:734:15:734:42 | MacroExpr | main.rs:734:5:734:43 | print_i64(...) | | +| main.rs:734:15:734:42 | let_in_macro2!... | main.rs:734:15:734:42 | MacroExpr | | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:30:734:41 | { ... } | | +| main.rs:734:30:734:41 | { ... } | main.rs:734:15:734:42 | let_in_macro2!... | | +| main.rs:735:5:735:13 | print_i64 | main.rs:735:15:735:26 | var_in_macro | | +| main.rs:735:5:735:27 | print_i64(...) | main.rs:725:23:736:1 | { ... } | | +| main.rs:735:5:735:28 | ExprStmt | main.rs:735:5:735:13 | print_i64 | | +| main.rs:735:15:735:26 | var_in_macro | main.rs:735:5:735:27 | print_i64(...) | | +| main.rs:738:1:742:1 | enter fn let_without_initializer | main.rs:739:5:739:10 | let ... | | +| main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | main.rs:738:1:742:1 | exit fn let_without_initializer | | +| main.rs:738:30:742:1 | { ... } | main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | | +| main.rs:739:5:739:10 | let ... | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:740:5:740:10 | ExprStmt | match | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | | +| main.rs:740:5:740:9 | ... = ... | main.rs:741:5:741:17 | ExprStmt | | +| main.rs:740:5:740:10 | ExprStmt | main.rs:740:5:740:5 | x | | +| main.rs:740:9:740:9 | 1 | main.rs:740:5:740:9 | ... = ... | | +| main.rs:741:5:741:13 | print_i64 | main.rs:741:15:741:15 | x | | +| main.rs:741:5:741:16 | print_i64(...) | main.rs:738:30:742:1 | { ... } | | +| main.rs:741:5:741:17 | ExprStmt | main.rs:741:5:741:13 | print_i64 | | +| main.rs:741:15:741:15 | x | main.rs:741:5:741:16 | print_i64(...) | | +| main.rs:744:1:754:1 | enter fn capture_phi | main.rs:745:5:745:20 | let ... = 100 | | +| main.rs:744:1:754:1 | exit fn capture_phi (normal) | main.rs:744:1:754:1 | exit fn capture_phi | | +| main.rs:744:18:754:1 | { ... } | main.rs:744:1:754:1 | exit fn capture_phi (normal) | | +| main.rs:745:5:745:20 | let ... = 100 | main.rs:745:17:745:19 | 100 | | +| main.rs:745:9:745:13 | mut x | main.rs:746:5:751:6 | let ... = ... | match | +| main.rs:745:13:745:13 | x | main.rs:745:9:745:13 | mut x | | +| main.rs:745:17:745:19 | 100 | main.rs:745:13:745:13 | x | | +| main.rs:746:5:751:6 | let ... = ... | main.rs:746:19:751:5 | \|...\| ... | | +| main.rs:746:9:746:15 | mut cap | main.rs:752:5:752:14 | ExprStmt | match | +| main.rs:746:13:746:15 | cap | main.rs:746:9:746:15 | mut cap | | +| main.rs:746:19:751:5 | \|...\| ... | main.rs:746:13:746:15 | cap | | +| main.rs:746:19:751:5 | enter \|...\| ... | main.rs:746:20:746:20 | b | | +| main.rs:746:19:751:5 | exit \|...\| ... (normal) | main.rs:746:19:751:5 | exit \|...\| ... | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:26 | ...: bool | match | +| main.rs:746:20:746:26 | ...: bool | main.rs:747:9:750:10 | let _ = ... | | +| main.rs:746:29:751:5 | { ... } | main.rs:746:19:751:5 | exit \|...\| ... (normal) | | +| main.rs:747:9:750:10 | let _ = ... | main.rs:748:20:748:20 | b | | +| main.rs:748:13:748:13 | _ | main.rs:746:29:751:5 | { ... } | match | +| main.rs:748:17:750:9 | if b {...} | main.rs:748:13:748:13 | _ | | +| main.rs:748:20:748:20 | b | main.rs:748:17:750:9 | if b {...} | false | +| main.rs:748:20:748:20 | b | main.rs:749:13:749:20 | ExprStmt | true | +| main.rs:748:22:750:9 | { ... } | main.rs:748:17:750:9 | if b {...} | | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | | +| main.rs:749:13:749:19 | ... = ... | main.rs:748:22:750:9 | { ... } | | +| main.rs:749:13:749:20 | ExprStmt | main.rs:749:13:749:13 | x | | +| main.rs:749:17:749:19 | 200 | main.rs:749:13:749:19 | ... = ... | | +| main.rs:752:5:752:7 | cap | main.rs:752:9:752:12 | true | | +| main.rs:752:5:752:13 | cap(...) | main.rs:753:5:753:17 | ExprStmt | | +| main.rs:752:5:752:14 | ExprStmt | main.rs:752:5:752:7 | cap | | +| main.rs:752:9:752:12 | true | main.rs:752:5:752:13 | cap(...) | | +| main.rs:753:5:753:13 | print_i64 | main.rs:753:15:753:15 | x | | +| main.rs:753:5:753:16 | print_i64(...) | main.rs:744:18:754:1 | { ... } | | +| main.rs:753:5:753:17 | ExprStmt | main.rs:753:5:753:13 | print_i64 | | +| main.rs:753:15:753:15 | x | main.rs:753:5:753:16 | print_i64(...) | | +| main.rs:756:1:800:1 | enter fn main | main.rs:757:5:757:25 | ExprStmt | | +| main.rs:756:1:800:1 | exit fn main (normal) | main.rs:756:1:800:1 | exit fn main | | +| main.rs:756:11:800:1 | { ... } | main.rs:756:1:800:1 | exit fn main (normal) | | +| main.rs:757:5:757:22 | immutable_variable | main.rs:757:5:757:24 | immutable_variable(...) | | +| main.rs:757:5:757:24 | immutable_variable(...) | main.rs:758:5:758:23 | ExprStmt | | +| main.rs:757:5:757:25 | ExprStmt | main.rs:757:5:757:22 | immutable_variable | | +| main.rs:758:5:758:20 | mutable_variable | main.rs:758:5:758:22 | mutable_variable(...) | | +| main.rs:758:5:758:22 | mutable_variable(...) | main.rs:759:5:759:40 | ExprStmt | | +| main.rs:758:5:758:23 | ExprStmt | main.rs:758:5:758:20 | mutable_variable | | +| main.rs:759:5:759:37 | mutable_variable_immutable_borrow | main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | main.rs:760:5:760:23 | ExprStmt | | +| main.rs:759:5:759:40 | ExprStmt | main.rs:759:5:759:37 | mutable_variable_immutable_borrow | | +| main.rs:760:5:760:20 | variable_shadow1 | main.rs:760:5:760:22 | variable_shadow1(...) | | +| main.rs:760:5:760:22 | variable_shadow1(...) | main.rs:761:5:761:23 | ExprStmt | | +| main.rs:760:5:760:23 | ExprStmt | main.rs:760:5:760:20 | variable_shadow1 | | +| main.rs:761:5:761:20 | variable_shadow2 | main.rs:761:5:761:22 | variable_shadow2(...) | | +| main.rs:761:5:761:22 | variable_shadow2(...) | main.rs:762:5:762:19 | ExprStmt | | +| main.rs:761:5:761:23 | ExprStmt | main.rs:761:5:761:20 | variable_shadow2 | | +| main.rs:762:5:762:16 | let_pattern1 | main.rs:762:5:762:18 | let_pattern1(...) | | +| main.rs:762:5:762:18 | let_pattern1(...) | main.rs:763:5:763:19 | ExprStmt | | +| main.rs:762:5:762:19 | ExprStmt | main.rs:762:5:762:16 | let_pattern1 | | +| main.rs:763:5:763:16 | let_pattern2 | main.rs:763:5:763:18 | let_pattern2(...) | | +| main.rs:763:5:763:18 | let_pattern2(...) | main.rs:764:5:764:19 | ExprStmt | | +| main.rs:763:5:763:19 | ExprStmt | main.rs:763:5:763:16 | let_pattern2 | | +| main.rs:764:5:764:16 | let_pattern3 | main.rs:764:5:764:18 | let_pattern3(...) | | +| main.rs:764:5:764:18 | let_pattern3(...) | main.rs:765:5:765:19 | ExprStmt | | +| main.rs:764:5:764:19 | ExprStmt | main.rs:764:5:764:16 | let_pattern3 | | +| main.rs:765:5:765:16 | let_pattern4 | main.rs:765:5:765:18 | let_pattern4(...) | | +| main.rs:765:5:765:18 | let_pattern4(...) | main.rs:766:5:766:21 | ExprStmt | | +| main.rs:765:5:765:19 | ExprStmt | main.rs:765:5:765:16 | let_pattern4 | | +| main.rs:766:5:766:18 | match_pattern1 | main.rs:766:5:766:20 | match_pattern1(...) | | +| main.rs:766:5:766:20 | match_pattern1(...) | main.rs:767:5:767:21 | ExprStmt | | +| main.rs:766:5:766:21 | ExprStmt | main.rs:766:5:766:18 | match_pattern1 | | +| main.rs:767:5:767:18 | match_pattern2 | main.rs:767:5:767:20 | match_pattern2(...) | | +| main.rs:767:5:767:20 | match_pattern2(...) | main.rs:768:5:768:21 | ExprStmt | | +| main.rs:767:5:767:21 | ExprStmt | main.rs:767:5:767:18 | match_pattern2 | | +| main.rs:768:5:768:18 | match_pattern3 | main.rs:768:5:768:20 | match_pattern3(...) | | +| main.rs:768:5:768:20 | match_pattern3(...) | main.rs:769:5:769:21 | ExprStmt | | +| main.rs:768:5:768:21 | ExprStmt | main.rs:768:5:768:18 | match_pattern3 | | +| main.rs:769:5:769:18 | match_pattern4 | main.rs:769:5:769:20 | match_pattern4(...) | | +| main.rs:769:5:769:20 | match_pattern4(...) | main.rs:770:5:770:21 | ExprStmt | | +| main.rs:769:5:769:21 | ExprStmt | main.rs:769:5:769:18 | match_pattern4 | | +| main.rs:770:5:770:18 | match_pattern5 | main.rs:770:5:770:20 | match_pattern5(...) | | +| main.rs:770:5:770:20 | match_pattern5(...) | main.rs:771:5:771:21 | ExprStmt | | +| main.rs:770:5:770:21 | ExprStmt | main.rs:770:5:770:18 | match_pattern5 | | +| main.rs:771:5:771:18 | match_pattern6 | main.rs:771:5:771:20 | match_pattern6(...) | | +| main.rs:771:5:771:20 | match_pattern6(...) | main.rs:772:5:772:21 | ExprStmt | | +| main.rs:771:5:771:21 | ExprStmt | main.rs:771:5:771:18 | match_pattern6 | | +| main.rs:772:5:772:18 | match_pattern7 | main.rs:772:5:772:20 | match_pattern7(...) | | +| main.rs:772:5:772:20 | match_pattern7(...) | main.rs:773:5:773:21 | ExprStmt | | +| main.rs:772:5:772:21 | ExprStmt | main.rs:772:5:772:18 | match_pattern7 | | +| main.rs:773:5:773:18 | match_pattern8 | main.rs:773:5:773:20 | match_pattern8(...) | | +| main.rs:773:5:773:20 | match_pattern8(...) | main.rs:774:5:774:21 | ExprStmt | | +| main.rs:773:5:773:21 | ExprStmt | main.rs:773:5:773:18 | match_pattern8 | | +| main.rs:774:5:774:18 | match_pattern9 | main.rs:774:5:774:20 | match_pattern9(...) | | +| main.rs:774:5:774:20 | match_pattern9(...) | main.rs:775:5:775:22 | ExprStmt | | +| main.rs:774:5:774:21 | ExprStmt | main.rs:774:5:774:18 | match_pattern9 | | +| main.rs:775:5:775:19 | match_pattern10 | main.rs:775:5:775:21 | match_pattern10(...) | | +| main.rs:775:5:775:21 | match_pattern10(...) | main.rs:776:5:776:22 | ExprStmt | | +| main.rs:775:5:775:22 | ExprStmt | main.rs:775:5:775:19 | match_pattern10 | | +| main.rs:776:5:776:19 | match_pattern11 | main.rs:776:5:776:21 | match_pattern11(...) | | +| main.rs:776:5:776:21 | match_pattern11(...) | main.rs:777:5:777:22 | ExprStmt | | +| main.rs:776:5:776:22 | ExprStmt | main.rs:776:5:776:19 | match_pattern11 | | +| main.rs:777:5:777:19 | match_pattern12 | main.rs:777:5:777:21 | match_pattern12(...) | | +| main.rs:777:5:777:21 | match_pattern12(...) | main.rs:778:5:778:22 | ExprStmt | | +| main.rs:777:5:777:22 | ExprStmt | main.rs:777:5:777:19 | match_pattern12 | | +| main.rs:778:5:778:19 | match_pattern13 | main.rs:778:5:778:21 | match_pattern13(...) | | +| main.rs:778:5:778:21 | match_pattern13(...) | main.rs:779:5:779:22 | ExprStmt | | +| main.rs:778:5:778:22 | ExprStmt | main.rs:778:5:778:19 | match_pattern13 | | +| main.rs:779:5:779:19 | match_pattern14 | main.rs:779:5:779:21 | match_pattern14(...) | | +| main.rs:779:5:779:21 | match_pattern14(...) | main.rs:780:5:780:22 | ExprStmt | | +| main.rs:779:5:779:22 | ExprStmt | main.rs:779:5:779:19 | match_pattern14 | | +| main.rs:780:5:780:19 | match_pattern15 | main.rs:780:5:780:21 | match_pattern15(...) | | +| main.rs:780:5:780:21 | match_pattern15(...) | main.rs:781:5:781:22 | ExprStmt | | +| main.rs:780:5:780:22 | ExprStmt | main.rs:780:5:780:19 | match_pattern15 | | +| main.rs:781:5:781:19 | match_pattern16 | main.rs:781:5:781:21 | match_pattern16(...) | | +| main.rs:781:5:781:21 | match_pattern16(...) | main.rs:782:5:782:36 | ExprStmt | | +| main.rs:781:5:781:22 | ExprStmt | main.rs:781:5:781:19 | match_pattern16 | | +| main.rs:782:5:782:18 | param_pattern1 | main.rs:782:20:782:22 | "a" | | +| main.rs:782:5:782:35 | param_pattern1(...) | main.rs:783:5:783:37 | ExprStmt | | +| main.rs:782:5:782:36 | ExprStmt | main.rs:782:5:782:18 | param_pattern1 | | +| main.rs:782:20:782:22 | "a" | main.rs:782:26:782:28 | "b" | | +| main.rs:782:25:782:34 | TupleExpr | main.rs:782:5:782:35 | param_pattern1(...) | | +| main.rs:782:26:782:28 | "b" | main.rs:782:31:782:33 | "c" | | +| main.rs:782:31:782:33 | "c" | main.rs:782:25:782:34 | TupleExpr | | +| main.rs:783:5:783:18 | param_pattern2 | main.rs:783:20:783:31 | ...::Left | | +| main.rs:783:5:783:36 | param_pattern2(...) | main.rs:784:5:784:26 | ExprStmt | | +| main.rs:783:5:783:37 | ExprStmt | main.rs:783:5:783:18 | param_pattern2 | | +| main.rs:783:20:783:31 | ...::Left | main.rs:783:33:783:34 | 45 | | +| main.rs:783:20:783:35 | ...::Left(...) | main.rs:783:5:783:36 | param_pattern2(...) | | +| main.rs:783:33:783:34 | 45 | main.rs:783:20:783:35 | ...::Left(...) | | +| main.rs:784:5:784:23 | destruct_assignment | main.rs:784:5:784:25 | destruct_assignment(...) | | +| main.rs:784:5:784:25 | destruct_assignment(...) | main.rs:785:5:785:23 | ExprStmt | | +| main.rs:784:5:784:26 | ExprStmt | main.rs:784:5:784:23 | destruct_assignment | | +| main.rs:785:5:785:20 | closure_variable | main.rs:785:5:785:22 | closure_variable(...) | | +| main.rs:785:5:785:22 | closure_variable(...) | main.rs:786:5:786:22 | ExprStmt | | +| main.rs:785:5:785:23 | ExprStmt | main.rs:785:5:785:20 | closure_variable | | +| main.rs:786:5:786:19 | nested_function | main.rs:786:5:786:21 | nested_function(...) | | +| main.rs:786:5:786:21 | nested_function(...) | main.rs:787:5:787:19 | ExprStmt | | +| main.rs:786:5:786:22 | ExprStmt | main.rs:786:5:786:19 | nested_function | | +| main.rs:787:5:787:16 | for_variable | main.rs:787:5:787:18 | for_variable(...) | | +| main.rs:787:5:787:18 | for_variable(...) | main.rs:788:5:788:17 | ExprStmt | | +| main.rs:787:5:787:19 | ExprStmt | main.rs:787:5:787:16 | for_variable | | +| main.rs:788:5:788:14 | add_assign | main.rs:788:5:788:16 | add_assign(...) | | +| main.rs:788:5:788:16 | add_assign(...) | main.rs:789:5:789:13 | ExprStmt | | +| main.rs:788:5:788:17 | ExprStmt | main.rs:788:5:788:14 | add_assign | | +| main.rs:789:5:789:10 | mutate | main.rs:789:5:789:12 | mutate(...) | | +| main.rs:789:5:789:12 | mutate(...) | main.rs:790:5:790:17 | ExprStmt | | +| main.rs:789:5:789:13 | ExprStmt | main.rs:789:5:789:10 | mutate | | +| main.rs:790:5:790:14 | mutate_arg | main.rs:790:5:790:16 | mutate_arg(...) | | +| main.rs:790:5:790:16 | mutate_arg(...) | main.rs:791:5:791:12 | ExprStmt | | +| main.rs:790:5:790:17 | ExprStmt | main.rs:790:5:790:14 | mutate_arg | | +| main.rs:791:5:791:9 | alias | main.rs:791:5:791:11 | alias(...) | | +| main.rs:791:5:791:11 | alias(...) | main.rs:792:5:792:18 | ExprStmt | | +| main.rs:791:5:791:12 | ExprStmt | main.rs:791:5:791:9 | alias | | +| main.rs:792:5:792:15 | capture_mut | main.rs:792:5:792:17 | capture_mut(...) | | +| main.rs:792:5:792:17 | capture_mut(...) | main.rs:793:5:793:20 | ExprStmt | | +| main.rs:792:5:792:18 | ExprStmt | main.rs:792:5:792:15 | capture_mut | | +| main.rs:793:5:793:17 | capture_immut | main.rs:793:5:793:19 | capture_immut(...) | | +| main.rs:793:5:793:19 | capture_immut(...) | main.rs:794:5:794:26 | ExprStmt | | +| main.rs:793:5:793:20 | ExprStmt | main.rs:793:5:793:17 | capture_immut | | +| main.rs:794:5:794:23 | async_block_capture | main.rs:794:5:794:25 | async_block_capture(...) | | +| main.rs:794:5:794:25 | async_block_capture(...) | main.rs:795:5:795:14 | ExprStmt | | +| main.rs:794:5:794:26 | ExprStmt | main.rs:794:5:794:23 | async_block_capture | | +| main.rs:795:5:795:11 | structs | main.rs:795:5:795:13 | structs(...) | | +| main.rs:795:5:795:13 | structs(...) | main.rs:796:5:796:14 | ExprStmt | | +| main.rs:795:5:795:14 | ExprStmt | main.rs:795:5:795:11 | structs | | +| main.rs:796:5:796:11 | ref_arg | main.rs:796:5:796:13 | ref_arg(...) | | +| main.rs:796:5:796:13 | ref_arg(...) | main.rs:797:5:797:30 | ExprStmt | | +| main.rs:796:5:796:14 | ExprStmt | main.rs:796:5:796:11 | ref_arg | | +| main.rs:797:5:797:27 | ref_methodcall_receiver | main.rs:797:5:797:29 | ref_methodcall_receiver(...) | | +| main.rs:797:5:797:29 | ref_methodcall_receiver(...) | main.rs:798:5:798:23 | ExprStmt | | +| main.rs:797:5:797:30 | ExprStmt | main.rs:797:5:797:27 | ref_methodcall_receiver | | +| main.rs:798:5:798:20 | macro_invocation | main.rs:798:5:798:22 | macro_invocation(...) | | +| main.rs:798:5:798:22 | macro_invocation(...) | main.rs:799:5:799:18 | ExprStmt | | +| main.rs:798:5:798:23 | ExprStmt | main.rs:798:5:798:20 | macro_invocation | | +| main.rs:799:5:799:15 | capture_phi | main.rs:799:5:799:17 | capture_phi(...) | | +| main.rs:799:5:799:17 | capture_phi(...) | main.rs:756:11:800:1 | { ... } | | +| main.rs:799:5:799:18 | ExprStmt | main.rs:799:5:799:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 4b9764b21c9..e3271f2c20d 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -94,105 +94,107 @@ definition | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | -| main.rs:735:19:740:5 | x | main.rs:734:13:734:13 | x | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | +| main.rs:746:19:751:5 | x | main.rs:745:13:745:13 | x | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -284,120 +286,123 @@ read | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:455:15:455:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:488:11:488:11 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:512:9:512:9 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:526:19:526:19 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:531:7:531:7 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:598:15:598:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:608:19:608:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:651:9:651:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:668:15:668:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:676:15:676:15 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:466:15:466:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:499:11:499:11 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:523:9:523:9 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:537:19:537:19 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:542:7:542:7 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:609:15:609:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:619:19:619:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:662:9:662:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:670:15:670:15 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:679:15:679:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:687:15:687:15 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -472,95 +477,97 @@ firstRead | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -580,33 +587,34 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | main.rs:455:15:455:15 | f | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | main.rs:488:11:488:11 | a | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | main.rs:512:9:512:9 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | main.rs:526:19:526:19 | x | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | main.rs:531:7:531:7 | w | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | main.rs:598:15:598:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | main.rs:608:19:608:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:628:19:628:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:628:19:628:19 | x | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | main.rs:651:9:651:9 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | main.rs:668:15:668:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | main.rs:676:15:676:15 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | main.rs:378:26:378:26 | y | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | main.rs:466:15:466:15 | f | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | main.rs:499:11:499:11 | a | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | main.rs:523:9:523:9 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | main.rs:537:19:537:19 | x | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | main.rs:542:7:542:7 | w | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | main.rs:609:15:609:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | main.rs:619:19:619:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:639:19:639:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:639:19:639:19 | x | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | main.rs:662:9:662:9 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | main.rs:670:15:670:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | main.rs:679:15:679:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | main.rs:687:15:687:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -630,24 +638,24 @@ phi | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:749:13:749:13 | x | phiReadNode | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | phiReadNodeFirstRead | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | phiReadInput | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:618:19:618:19 | SSA read(x) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:620:19:620:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:629:19:629:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:631:19:631:19 | SSA read(x) | ultimateDef | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | @@ -674,12 +682,12 @@ ultimateDef | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:749:13:749:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -715,51 +723,52 @@ assigns | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:660:5:660:5 | a | main.rs:660:9:660:27 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:669:5:669:5 | a | main.rs:669:9:669:17 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:671:5:671:5 | a | main.rs:671:9:671:27 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:680:5:680:5 | a | main.rs:680:9:680:17 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 3ed78f601d6..b809f498752 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -369,6 +369,17 @@ fn match_pattern15() { }; } +fn match_pattern16() { + let x = Some(32); + match x { // $ read_access=x + Some(y) // y1 + if let Some(y) = // y2 + Some(y) // $ read_access=y1 + => print_i64(y), // $ MISSING: read_access=y2 $ SPURIOUS: read_access=y1 + _ => {}, + } +} + fn param_pattern1( a8: &str, // a8 ( @@ -767,6 +778,7 @@ fn main() { match_pattern13(); match_pattern14(); match_pattern15(); + match_pattern16(); param_pattern1("a", ("b", "c")); param_pattern2(Either::Left(45)); destruct_assignment(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 22c54b9740c..944a93ccab1 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -70,75 +70,78 @@ variable | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | -| main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | -| main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | -| main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | -| main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | -| main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | -| main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | -| main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | -| main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | -| main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | -| main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | -| main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | -| main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | -| main.rs:735:20:735:20 | b | +| main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | +| main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | +| main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | +| main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | +| main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | +| main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | +| main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | +| main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | +| main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | +| main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | +| main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | +| main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | +| main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | +| main.rs:746:20:746:20 | b | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -233,146 +236,149 @@ variableAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:488:11:488:11 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:495:14:495:14 | i | main.rs:493:13:493:13 | i | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:518:27:518:27 | x | main.rs:516:13:516:13 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:526:19:526:19 | x | main.rs:516:13:516:13 | x | -| main.rs:528:14:528:14 | z | main.rs:524:13:524:13 | z | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:540:14:540:14 | x | main.rs:538:13:538:13 | x | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:675:20:675:20 | x | main.rs:674:9:674:9 | x | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:679:20:679:20 | z | main.rs:678:9:678:9 | z | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:499:11:499:11 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:506:14:506:14 | i | main.rs:504:13:504:13 | i | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:529:27:529:27 | x | main.rs:527:13:527:13 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:537:19:537:19 | x | main.rs:527:13:527:13 | x | +| main.rs:539:14:539:14 | z | main.rs:535:13:535:13 | z | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:551:14:551:14 | x | main.rs:549:13:549:13 | x | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:686:20:686:20 | x | main.rs:685:9:685:9 | x | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:690:20:690:20 | z | main.rs:689:9:689:9 | z | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -462,111 +468,114 @@ variableReadAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -599,62 +608,63 @@ variableInitializer | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | capturedVariable -| main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | -| main.rs:645:23:645:26 | self | -| main.rs:734:13:734:13 | x | +| main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | +| main.rs:656:23:656:26 | self | +| main.rs:745:13:745:13 | x | capturedAccess -| main.rs:550:19:550:19 | x | | main.rs:561:19:561:19 | x | -| main.rs:570:9:570:9 | y | -| main.rs:579:9:579:9 | z | -| main.rs:588:9:588:9 | i | -| main.rs:648:13:648:16 | self | -| main.rs:738:13:738:13 | x | +| main.rs:572:19:572:19 | x | +| main.rs:581:9:581:9 | y | +| main.rs:590:9:590:9 | z | +| main.rs:599:9:599:9 | i | +| main.rs:659:13:659:16 | self | +| main.rs:749:13:749:13 | x | nestedFunctionAccess -| main.rs:458:19:458:19 | f | main.rs:459:9:462:9 | fn f | -| main.rs:465:23:465:23 | f | main.rs:459:9:462:9 | fn f | +| main.rs:469:19:469:19 | f | main.rs:470:9:473:9 | fn f | +| main.rs:476:23:476:23 | f | main.rs:470:9:473:9 | fn f | From a19f49b2acc67b87910dda49c9e9173195883e72 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:41:00 +0100 Subject: [PATCH 569/965] Swift: Update resources --- swift/third_party/resources/resource-dir-linux.zip | 4 ++-- swift/third_party/resources/resource-dir-macos.zip | 4 ++-- swift/third_party/resources/swift-prebuilt-linux.tar.zst | 4 ++-- swift/third_party/resources/swift-prebuilt-macos.tar.zst | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index 6029e7657c0..970660d813f 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb -size 385205623 +oid sha256:e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0 +size 385198654 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 368fcc2551d..c802f6fab29 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e -size 614058230 +oid sha256:e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8 +size 613718859 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 2a507b6291d..1f1dba6a974 100644 --- a/swift/third_party/resources/swift-prebuilt-linux.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff -size 132754495 +oid sha256:1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d +size 132780711 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index 3f4ac76f795..c66199543e1 100644 --- a/swift/third_party/resources/swift-prebuilt-macos.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-macos.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e -size 115290456 +oid sha256:c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7 +size 115298493 From 6476f60cd4ef9444bb6982883f60b94d4336f1fa Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:44:20 +0100 Subject: [PATCH 570/965] Swift: Add change note --- swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md new file mode 100644 index 00000000000..42a738ff746 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.2.1. From a79c383fd5311e9529fe3337ef2e426a91373ec4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:46:42 +0100 Subject: [PATCH 571/965] Swift: update `load.bzl` --- swift/third_party/load.bzl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 29d552bd3e2..d19345a1880 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,10 +5,6 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main - "swift-prebuilt-macOS-swift-6.2.1-RELEASE-133.tar.zst": "c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7", - "swift-prebuilt-Linux-swift-6.2.1-RELEASE-133.tar.zst": "1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d", - "resource-dir-macOS-swift-6.2.1-RELEASE-133.zip": "e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8", - "resource-dir-Linux-swift-6.2.1-RELEASE-133.zip": "e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 62e77687ca70215432bbdddfaef59b874d9bebcd Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 15:09:39 +0000 Subject: [PATCH 572/965] Rust: Move async_std::io models. --- rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml | 7 +++++++ rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml new file mode 100644 index 00000000000..99e14d0f0bc --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml index 706170d44b8..9e65ba1b196 100644 --- a/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml @@ -4,9 +4,3 @@ extensions: extensible: sourceModel data: - ["::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] \ No newline at end of file From c80301d58abbe826fc6af71b148a56a96965ab8c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 5 Nov 2025 19:46:54 +0100 Subject: [PATCH 573/965] Rust: Handle variables introduced in if-let guards --- .../rust/elements/internal/VariableImpl.qll | 38 +++++++++---------- .../test/library-tests/variables/Ssa.expected | 5 ++- rust/ql/test/library-tests/variables/main.rs | 2 +- .../variables/variables.expected | 4 +- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 6f89be71660..61f022c8bfd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -15,21 +15,12 @@ module Impl { class BlockExprScope extends VariableScope, BlockExpr { } - abstract class MatchArmScope extends VariableScope { - MatchArm arm; - - bindingset[arm] - MatchArmScope() { exists(arm) } - - Pat getPat() { result = arm.getPat() } + class MatchArmExprScope extends VariableScope { + MatchArmExprScope() { this = any(MatchArm arm).getExpr() } } - class MatchArmExprScope extends MatchArmScope { - MatchArmExprScope() { this = arm.getExpr() } - } - - class MatchArmGuardScope extends MatchArmScope { - MatchArmGuardScope() { this = arm.getGuard() } + class MatchArmGuardScope extends VariableScope { + MatchArmGuardScope() { this = any(MatchArm arm).getGuard() } } class ClosureBodyScope extends VariableScope { @@ -41,7 +32,7 @@ module Impl { * * Such variables are only available in the body guarded by the condition. */ - class ConditionScope extends VariableScope, Expr { + class ConditionScope extends VariableScope { private AstNode parent; private AstNode body; @@ -57,6 +48,12 @@ module Impl { this = we.getCondition() and body = we.getLoopBody() ) + or + parent = + any(MatchArm ma | + this = ma.getGuard() and + body = ma.getExpr() + ) } /** Gets the parent of this condition. */ @@ -417,11 +414,14 @@ module Impl { ord = getPreOrderNumbering(scope, scope) or exists(Pat pat | pat = getAVariablePatAncestor(v) | - scope = - any(MatchArmScope arm | - arm.getPat() = pat and - ord = getPreOrderNumbering(scope, arm) - ) + exists(MatchArm arm | + pat = arm.getPat() and + ord = getPreOrderNumbering(scope, scope) + | + scope = arm.getGuard() + or + not arm.hasGuard() and scope = arm.getExpr() + ) or exists(LetStmt let | let.getPat() = pat and diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index e3271f2c20d..35adac47802 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -96,6 +96,7 @@ definition | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | @@ -288,7 +289,7 @@ read | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | -| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:378:26:378:26 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | @@ -479,6 +480,7 @@ firstRead | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | @@ -587,7 +589,6 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | main.rs:378:26:378:26 | y | | main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | | main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | | main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index b809f498752..cdfe1091ee3 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -375,7 +375,7 @@ fn match_pattern16() { Some(y) // y1 if let Some(y) = // y2 Some(y) // $ read_access=y1 - => print_i64(y), // $ MISSING: read_access=y2 $ SPURIOUS: read_access=y1 + => print_i64(y), // $ read_access=y2 _ => {}, } } diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 944a93ccab1..64431803e6d 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -238,7 +238,7 @@ variableAccess | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | | main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | -| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | | main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | @@ -470,7 +470,7 @@ variableReadAccess | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | | main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | -| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | | main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | From 680870dbf3257d4538087b9c3b750b642c5228e0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:39:51 +0000 Subject: [PATCH 574/965] Rust: Fix after merge. --- rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index b74a6ee82e7..e1024e4ad72 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -172,7 +172,6 @@ edges | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | From 0d76d582b5373bcce0884381501ce8e5af238e25 Mon Sep 17 00:00:00 2001 From: Idriss Riouak Date: Thu, 6 Nov 2025 11:12:53 +0100 Subject: [PATCH 575/965] CODEOWNERS: Add Go-related folders for extractor and autobuilder Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> --- CODEOWNERS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index 0a7504ba592..131fb1e767d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,7 +8,11 @@ /csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor @github/code-scanning-language-coverage /csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor @github/code-scanning-language-coverage /go/ @github/codeql-go +/go/codeql-tools/ @github/codeql-go @github/code-scanning-language-coverage +/go/downgrades/ @github/codeql-go @github/code-scanning-language-coverage /go/extractor/ @github/codeql-go @github/code-scanning-language-coverage +/go/extractor-smoke-test/ @github/codeql-go @github/code-scanning-language-coverage +/go/ql/test/extractor-tests/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript /javascript/extractor/ @github/codeql-javascript @github/code-scanning-language-coverage From 446a87713afbd93cc857ce552be8891f24937be9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 6 Nov 2025 15:17:45 +0100 Subject: [PATCH 576/965] C#: Report more timing metrics to the console logger. --- .../extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index 9ddf7686bad..3fc98e35b77 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -154,7 +154,8 @@ namespace Semmle.Extraction.CSharp.Standalone fileLogger.LogError($" Unhandled exception: {ex}"); } - logger.Log(Severity.Info, $"Extraction completed in {overallStopwatch.Elapsed}"); + logger.Log(Severity.Info, $"Extraction completed in {analyzerStopwatch.Elapsed}"); + logger.Log(Severity.Info, $"Total time: {overallStopwatch.Elapsed}"); return ExitCode.Ok; } From 0607100310aab0a45cff7e7fec9bc99e97df3280 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 6 Nov 2025 16:54:54 +0000 Subject: [PATCH 577/965] C++: Add tests with missing flow. --- .../dataflow/taint-tests/localTaint.expected | 20 ++ .../dataflow/taint-tests/taint.cpp | 23 ++ .../dataflow/taint-tests/taint.expected | 1 + .../taint-tests/test_mad-signatures.expected | 202 ++++++++++++++++++ 4 files changed, 246 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index e8f0a8e34b2..0f4d67f2695 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -7988,6 +7988,26 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | taint.cpp:841:21:841:35 | call to indirect_source | taint.cpp:843:16:843:17 | fp | | | taint.cpp:842:11:842:12 | ref arg fp | taint.cpp:843:16:843:17 | fp | | | taint.cpp:842:15:842:16 | | taint.cpp:842:11:842:12 | ref arg fp | TAINT | +| taint.cpp:851:10:851:15 | call to source | taint.cpp:852:18:852:18 | s | | +| taint.cpp:851:10:851:15 | call to source | taint.cpp:854:18:854:18 | s | | +| taint.cpp:852:10:852:16 | call to toupper | taint.cpp:853:7:853:7 | u | | +| taint.cpp:854:10:854:16 | call to tolower | taint.cpp:855:7:855:7 | l | | +| taint.cpp:861:24:861:27 | size | taint.cpp:866:16:866:19 | size | | +| taint.cpp:862:12:862:26 | call to indirect_source | taint.cpp:866:12:866:12 | s | | +| taint.cpp:863:7:863:9 | out | taint.cpp:864:12:864:14 | out | | +| taint.cpp:864:12:864:14 | out | taint.cpp:866:23:866:23 | p | | +| taint.cpp:864:12:864:14 | out | taint.cpp:867:8:867:8 | p | | +| taint.cpp:865:9:865:16 | size_out | taint.cpp:866:27:866:34 | size_out | | +| taint.cpp:866:11:866:12 | ref arg & ... | taint.cpp:866:12:866:12 | s [inner post update] | | +| taint.cpp:866:12:866:12 | s | taint.cpp:866:11:866:12 | & ... | | +| taint.cpp:866:15:866:19 | ref arg & ... | taint.cpp:866:16:866:19 | size [inner post update] | | +| taint.cpp:866:16:866:19 | size | taint.cpp:866:15:866:19 | & ... | | +| taint.cpp:866:22:866:23 | ref arg & ... | taint.cpp:866:23:866:23 | p [inner post update] | | +| taint.cpp:866:22:866:23 | ref arg & ... | taint.cpp:867:8:867:8 | p | | +| taint.cpp:866:23:866:23 | p | taint.cpp:866:22:866:23 | & ... | | +| taint.cpp:866:26:866:34 | ref arg & ... | taint.cpp:866:27:866:34 | size_out [inner post update] | | +| taint.cpp:866:27:866:34 | size_out | taint.cpp:866:26:866:34 | & ... | | +| taint.cpp:867:8:867:8 | p | taint.cpp:867:7:867:8 | * ... | TAINT | | thread.cpp:10:27:10:27 | s | thread.cpp:10:27:10:27 | s | | | thread.cpp:10:27:10:27 | s | thread.cpp:11:8:11:8 | s | | | thread.cpp:14:26:14:26 | s | thread.cpp:15:8:15:8 | s | | 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 0c09665de1c..bc064a1bda6 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -842,4 +842,27 @@ int f7(void) fprintf(fp, ""); indirect_sink(fp); // $ ir MISSING: ast return 0; +} + +int toupper(int); +int tolower(int); + +void test_toupper_and_tolower() { + int s = source(); + int u = toupper(s); + sink(u); // $ MISSING: ast,ir + int l = tolower(s); + sink(l); // $ MISSING: ast,ir +} + +typedef int iconv_t; +size_t iconv(iconv_t cd, char **, size_t *, char **, size_t *); + +void test_iconv(size_t size) { + char* s = indirect_source(); + char out[10]; + char* p = out; + size_t size_out; + iconv(0, &s, &size, &p, &size_out); + sink(*p); // $ MISSING: ast,ir } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected index 444be256516..5b2bfbadb7f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected @@ -3,3 +3,4 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (tai WARNING: module 'DataFlow' has been deprecated and may be removed in future (taint.ql:61,22-30) WARNING: module 'DataFlow' has been deprecated and may be removed in future (taint.ql:68,25-33) WARNING: module 'TaintTracking' has been deprecated and may be removed in future (taint.ql:73,20-33) +| taint.cpp:867:7:867:8 | * ... | Fixed missing result: ast | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 846359fd6b2..bc20cc9b30e 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -17746,6 +17746,196 @@ signatureMatches | taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 1 | | taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 2 | | taint.cpp:837:5:837:11 | fprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_STRING_type_new | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_tag2bit | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_tag2str | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | EVP_PKEY_asn1_get0 | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | Jim_ReturnCode | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | Jim_SignalId | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2ln | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2obj | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2sn | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | OSSL_STORE_INFO_type_string | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | OSSL_trace_get_category_name | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | PKCS12_init | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | Symbol_Nth | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | X509_PURPOSE_get0 | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | X509_PURPOSE_get_by_id | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | X509_TRUST_get0 | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | X509_TRUST_get_by_id | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __btowc | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __current_locale_name | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __fdopendir | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __get_errlist | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __get_errname | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __math_invalid_i | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __math_invalidf_i | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __p_class | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __p_rcode | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __p_type | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __pkey_get | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __sigdescr_np | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | __strerrordesc_np | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | _tolower | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | _toupper | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | btowc | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | c_tolower | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | c_toupper | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | curlx_sitouz | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | evp_pkey_type2name | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | inet6_option_space | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isalnum | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isalpha | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isblank | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | iscntrl | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isdigit | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isgraph | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | islower | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isprint | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ispunct | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isspace | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isupper | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | isxdigit | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_cmp_bodytype_to_string | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_tolower | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_toupper | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | sigabbrev_np | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | sqlite3_compileoption_get | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | sqlite3_errstr | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | strerrorname_np | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | support_report_failure | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | svcudp_create | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | tls13_alert_code | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | toascii | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | tolower | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | toupper | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uabs | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uv__accept | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uv_err_name | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uv_strerror | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | | zError | 0 | +| taint.cpp:847:5:847:11 | toupper | (int) | __pthread_cleanup_class | __setdoit | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_STRING_type_new | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_tag2bit | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_tag2str | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | EVP_PKEY_asn1_get0 | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | Jim_ReturnCode | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | Jim_SignalId | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2ln | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2obj | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2sn | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | OSSL_STORE_INFO_type_string | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | OSSL_trace_get_category_name | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | PKCS12_init | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | Symbol_Nth | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | X509_PURPOSE_get0 | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | X509_PURPOSE_get_by_id | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | X509_TRUST_get0 | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | X509_TRUST_get_by_id | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | X509_VERIFY_PARAM_get0 | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __btowc | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __current_locale_name | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __fdopendir | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __get_errlist | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __get_errname | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __math_invalid_i | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __math_invalidf_i | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __p_class | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __p_rcode | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __p_type | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __pkey_get | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __sigdescr_np | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | __strerrordesc_np | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | _tolower | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | _toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | btowc | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | c_tolower | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | c_toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | curlx_sitouz | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | evp_pkey_type2name | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | inet6_option_space | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isalnum | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isalpha | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isblank | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | iscntrl | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isdigit | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isgraph | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | islower | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isprint | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ispunct | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isspace | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isupper | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | isxdigit | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_cmp_bodytype_to_string | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_tolower | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | sigabbrev_np | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | sqlite3_compileoption_get | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | sqlite3_errstr | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | strerrorname_np | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | support_report_failure | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | svcudp_create | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | tls13_alert_code | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | toascii | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | tolower | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uabs | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uv__accept | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uv_err_name | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uv_get_osfhandle | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uv_strerror | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | uv_translate_sys_error | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | | zError | 0 | +| taint.cpp:848:5:848:11 | tolower | (int) | __pthread_cleanup_class | __setdoit | 0 | +| taint.cpp:859:8:859:12 | iconv | (ASYNC_WAIT_CTX *,int *,size_t *,int *,size_t *) | | ASYNC_WAIT_CTX_get_changed_fds | 4 | +| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 4 | +| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 4 | +| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 4 | +| taint.cpp:859:8:859:12 | iconv | (OSSL_RECORD_LAYER *,uint8_t,size_t,size_t,size_t *) | | tls_get_max_records_default | 4 | +| taint.cpp:859:8:859:12 | iconv | (OSSL_RECORD_LAYER *,uint8_t,size_t,size_t,size_t *) | | tls_get_max_records_multiblock | 4 | +| taint.cpp:859:8:859:12 | iconv | (QUIC_SSTREAM *,size_t,OSSL_QUIC_FRAME_STREAM *,OSSL_QTX_IOVEC *,size_t *) | | ossl_quic_sstream_get_stream_frame | 4 | +| taint.cpp:859:8:859:12 | iconv | (QUIC_TSERVER *,uint64_t,const unsigned char *,size_t,size_t *) | | ossl_quic_tserver_write | 4 | +| taint.cpp:859:8:859:12 | iconv | (QUIC_TSERVER *,uint64_t,unsigned char *,size_t,size_t *) | | ossl_quic_tserver_read | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | SSL_write_ex2 | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | ossl_quic_write_flags | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | ssl_write_internal | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,int *,size_t *,int *,size_t *) | | SSL_get_changed_async_fds | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,uint8_t,const void *,size_t,size_t *) | | dtls1_write_app_data_bytes | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL *,uint8_t,const void *,size_t,size_t *) | | ssl3_write_bytes | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,uint8_t,const unsigned char *,size_t,size_t *) | | do_dtls1_write | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,uint8_t,const void *,size_t,size_t *) | | dtls1_write_bytes | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,unsigned char *,unsigned char *,size_t,size_t *) | | ssl3_generate_master_secret | 4 | +| taint.cpp:859:8:859:12 | iconv | (SSL_CTX *,const SSL_CIPHER *,const EVP_MD **,int *,size_t *) | | ssl_cipher_get_evp_md_mac | 4 | +| taint.cpp:859:8:859:12 | iconv | (loaded_l10nfile *,binding *,const char *,int,size_t *) | | _nl_find_msg | 4 | +| taint.cpp:859:8:859:12 | iconv | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_fillblock | 4 | +| taint.cpp:859:8:859:12 | iconv | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 4 | +| taint.cpp:859:8:859:12 | iconv | (unsigned long *,unsigned long *,unsigned long *,int,unsigned long *) | | bn_mul_low_recursive | 4 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | EVP_PKEY_meth_get0 | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | __libc_malloc | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | __libc_valloc | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | _dl_early_allocate | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztosi | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztosz | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztoui | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztoul | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | malloc | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_get_extension_type | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_param_bytes_to_blocks | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_quic_sstream_new | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ssl_cert_new | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_next_to_fault_allocate | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_next_to_fault_allocate_before | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_stack_alloc | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | xalloc_sigstack | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | BN_num_bits_word | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | BUF_MEM_new_ex | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | curlx_ultouc | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | curlx_ultous | 0 | +| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | next_prime | 0 | | thread.cpp:4:6:4:9 | sink | (int) | | ASN1_STRING_type_new | 0 | | thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2bit | 0 | | thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2str | 0 | @@ -47303,6 +47493,18 @@ getParameterTypeName | taint.cpp:837:5:837:11 | fprintf | 0 | FILE * | | taint.cpp:837:5:837:11 | fprintf | 1 | const char * | | taint.cpp:837:5:837:11 | fprintf | 2 | ... | +| taint.cpp:847:5:847:11 | toupper | 0 | int | +| taint.cpp:848:5:848:11 | tolower | 0 | int | +| taint.cpp:859:8:859:12 | iconv | 0 | iconv_t | +| taint.cpp:859:8:859:12 | iconv | 0 | int | +| taint.cpp:859:8:859:12 | iconv | 1 | char ** | +| taint.cpp:859:8:859:12 | iconv | 2 | size_t * | +| taint.cpp:859:8:859:12 | iconv | 2 | unsigned long * | +| taint.cpp:859:8:859:12 | iconv | 3 | char ** | +| taint.cpp:859:8:859:12 | iconv | 4 | size_t * | +| taint.cpp:859:8:859:12 | iconv | 4 | unsigned long * | +| taint.cpp:861:6:861:15 | test_iconv | 0 | size_t | +| taint.cpp:861:6:861:15 | test_iconv | 0 | unsigned long | | thread.cpp:4:6:4:9 | sink | 0 | int | | thread.cpp:6:8:6:8 | operator= | 0 | S && | | thread.cpp:6:8:6:8 | operator= | 0 | const S & | From 1d5d2728226b66c72635500216f04ac54ddccf8b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 6 Nov 2025 16:55:51 +0000 Subject: [PATCH 578/965] C++: Add a few more models. --- cpp/ql/lib/ext/cctype.model.yml | 9 +++++++++ cpp/ql/lib/ext/iconv.model.yml | 7 +++++++ 2 files changed, 16 insertions(+) create mode 100644 cpp/ql/lib/ext/cctype.model.yml create mode 100644 cpp/ql/lib/ext/iconv.model.yml diff --git a/cpp/ql/lib/ext/cctype.model.yml b/cpp/ql/lib/ext/cctype.model.yml new file mode 100644 index 00000000000..d5fa3861c05 --- /dev/null +++ b/cpp/ql/lib/ext/cctype.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "tolower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["std", "", False, "tolower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["", "", False, "toupper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["std", "", False, "toupper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/lib/ext/iconv.model.yml b/cpp/ql/lib/ext/iconv.model.yml new file mode 100644 index 00000000000..8db5a65841b --- /dev/null +++ b/cpp/ql/lib/ext/iconv.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + - ["", "", False, "iconv", "", "", "Argument[**1]", "Argument[**3]", "value", "manual"] + \ No newline at end of file From 2b6a75f4ad48fef3d8fc18f85a1539c04a22954c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 6 Nov 2025 16:57:11 +0000 Subject: [PATCH 579/965] C++: Accept test changes. --- cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp | 6 +++--- .../test/library-tests/dataflow/taint-tests/taint.expected | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) 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 bc064a1bda6..70d5b8c7b00 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -850,9 +850,9 @@ int tolower(int); void test_toupper_and_tolower() { int s = source(); int u = toupper(s); - sink(u); // $ MISSING: ast,ir + sink(u); // $ ir MISSING: ast int l = tolower(s); - sink(l); // $ MISSING: ast,ir + sink(l); // $ ir MISSING: ast } typedef int iconv_t; @@ -864,5 +864,5 @@ void test_iconv(size_t size) { char* p = out; size_t size_out; iconv(0, &s, &size, &p, &size_out); - sink(*p); // $ MISSING: ast,ir + sink(*p); // $ ast,ir } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected index 5b2bfbadb7f..444be256516 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.expected @@ -3,4 +3,3 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (tai WARNING: module 'DataFlow' has been deprecated and may be removed in future (taint.ql:61,22-30) WARNING: module 'DataFlow' has been deprecated and may be removed in future (taint.ql:68,25-33) WARNING: module 'TaintTracking' has been deprecated and may be removed in future (taint.ql:73,20-33) -| taint.cpp:867:7:867:8 | * ... | Fixed missing result: ast | From f0da0d98a2fc3d8f111dbd3aae20584b5e392bd4 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 6 Nov 2025 17:00:19 +0000 Subject: [PATCH 580/965] C++: Add a few more models I noticed while here. --- .../code/cpp/models/implementations/Memcpy.qll | 8 +++++--- .../code/cpp/models/implementations/Memset.qll | 5 +++-- .../code/cpp/models/implementations/Strcat.qll | 10 ++++++++-- .../code/cpp/models/implementations/Strcpy.qll | 12 ++++++++++-- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll index 311847e8aec..dc1302d3b8f 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memcpy.qll @@ -12,8 +12,8 @@ import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.NonThrowing /** - * The standard functions `memcpy`, `memmove` and `bcopy`; and the gcc variant - * `__builtin___memcpy_chk`. + * The standard functions `memcpy`, `memmove` and `bcopy`; and variants such as + * `__builtin___memcpy_chk` and `__builtin___memmove_chk`. */ private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffectFunction, AliasFunction, NonCppThrowingFunction @@ -27,7 +27,9 @@ private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffect // bcopy(src, dest, num) // mempcpy(dest, src, num) // memccpy(dest, src, c, n) - this.hasGlobalName(["bcopy", mempcpy(), "memccpy", "__builtin___memcpy_chk"]) + this.hasGlobalName([ + "bcopy", mempcpy(), "memccpy", "__builtin___memcpy_chk", "__builtin___memmove_chk" + ]) } /** 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 51234e50f94..f7d3f50234c 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll @@ -19,7 +19,8 @@ private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, Alias this.hasGlobalOrStdName("wmemset") or this.hasGlobalName([ - bzero(), "__builtin_memset", "__builtin_memset_chk", "RtlZeroMemory", "RtlSecureZeroMemory" + bzero(), "__builtin_memset", "__builtin_memset_chk", "__builtin___memset_chk", + "RtlZeroMemory", "RtlSecureZeroMemory" ]) } @@ -32,7 +33,7 @@ private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, Alias or this.hasGlobalOrStdName("wmemset") or - this.hasGlobalName(["__builtin_memset", "__builtin_memset_chk"]) + this.hasGlobalName(["__builtin_memset", "__builtin_memset_chk", "__builtin___memset_chk"]) ) and result = 1 } diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll index 966c7425dc4..051b887f4d1 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll @@ -30,7 +30,9 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid "_mbsncat", // _mbsncat(dst, src, max_amount) "_mbsncat_l", // _mbsncat_l(dst, src, max_amount, locale) "_mbsnbcat", // _mbsnbcat(dest, src, count) - "_mbsnbcat_l" // _mbsnbcat_l(dest, src, count, locale) + "_mbsnbcat_l", // _mbsnbcat_l(dest, src, count, locale) + "__builtin___strcat_chk", // __builtin___strcat_chk (dest, src, magic); + "__builtin___strncat_chk" // __builtin___strncat_chk (dest, src, max_amount, magic); ]) } @@ -56,7 +58,11 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { ( - this.getName() = ["strncat", "wcsncat", "_mbsncat", "_mbsncat_l"] and + this.getName() = + [ + "strncat", "wcsncat", "_mbsncat", "_mbsncat_l", "__builtin___strncat_chk", + "__builtin___strcat_chk" + ] and input.isParameter(2) or this.getName() = ["_mbsncat_l", "_mbsnbcat_l"] and diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index b7ed20f1bab..87606ba7b65 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -36,7 +36,11 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid "_mbsnbcpy", // _mbsnbcpy(dest, src, max_amount) "stpcpy", // stpcpy(dest, src) "stpncpy", // stpncpy(dest, src, max_amount) - "strlcpy" // strlcpy(dst, src, dst_size) + "strlcpy", // strlcpy(dst, src, dst_size) + "__builtin___strcpy_chk", // __builtin___strcpy_chk (dest, src, magic); + "__builtin___stpcpy_chk", // __builtin___stpcpy_chk (dest, src, magic); + "__builtin___stpncpy_chk", // __builtin___stpncpy_chk(dest, src, max_amount, magic) + "__builtin___strncpy_chk" // __builtin___strncpy_chk (dest, src, max_amount, magic); ]) or ( @@ -69,7 +73,11 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid if this.isSVariant() then result = 1 else ( - this.getName().matches(["%ncpy%", "%nbcpy%", "%xfrm%", "strlcpy"]) and + this.getName() + .matches([ + "%ncpy%", "%nbcpy%", "%xfrm%", "strlcpy", "__builtin___strcpy_chk", + "__builtin___stpcpy_chk", "__builtin___stpncpy_chk", "__builtin___strncpy_chk" + ]) and result = 2 ) } From 84b50606ed1b4f6f4236732d9d36d61e3cf6065f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:31:16 +0000 Subject: [PATCH 581/965] Rust: Add example queries pack. --- docs/codeql/reusables/rust-further-reading.rst | 1 + rust/ql/examples/qlpack.lock.yml | 4 ++++ rust/ql/examples/qlpack.yml | 7 +++++++ 3 files changed, 12 insertions(+) create mode 100644 rust/ql/examples/qlpack.lock.yml create mode 100644 rust/ql/examples/qlpack.yml diff --git a/docs/codeql/reusables/rust-further-reading.rst b/docs/codeql/reusables/rust-further-reading.rst index a82dee7f28e..c8d18cc77b0 100644 --- a/docs/codeql/reusables/rust-further-reading.rst +++ b/docs/codeql/reusables/rust-further-reading.rst @@ -1,2 +1,3 @@ - `CodeQL queries for Rust `__ +- `Example queries for Rust `__ - `CodeQL library reference for Rust `__ diff --git a/rust/ql/examples/qlpack.lock.yml b/rust/ql/examples/qlpack.lock.yml new file mode 100644 index 00000000000..06dd07fc7dc --- /dev/null +++ b/rust/ql/examples/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/rust/ql/examples/qlpack.yml b/rust/ql/examples/qlpack.yml new file mode 100644 index 00000000000..41adabd2c70 --- /dev/null +++ b/rust/ql/examples/qlpack.yml @@ -0,0 +1,7 @@ +name: codeql/rust-examples +groups: + - rust + - examples +dependencies: + codeql/rust-all: ${workspace} +warnOnImplicitThis: true From 6ce0a0d9df53a2f9b90d962b57e8c7615b4ce887 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:50:59 +0000 Subject: [PATCH 582/965] Rust: Add example from the basic-query-for-rust-code.rst. --- rust/ql/examples/snippets/empty_if.ql | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 rust/ql/examples/snippets/empty_if.ql diff --git a/rust/ql/examples/snippets/empty_if.ql b/rust/ql/examples/snippets/empty_if.ql new file mode 100644 index 00000000000..a4270a115b6 --- /dev/null +++ b/rust/ql/examples/snippets/empty_if.ql @@ -0,0 +1,15 @@ +/** + * @name Empty 'if' statement + * @description Finds 'if' statements where the "then" branch is empty and no + * "else" branch exists. + * @id rust/examples/empty-if + * @tags example + */ + +import rust + +from IfExpr ifExpr +where + ifExpr.getThen().(BlockExpr).getStmtList().getNumberOfStmtOrExpr() = 0 and + not exists(ifExpr.getElse()) +select ifExpr, "This 'if' expression is redundant." From 49aefe2110fbee92a96084b2ad59b33205c8095b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 6 Nov 2025 18:49:55 +0000 Subject: [PATCH 583/965] Rust: Add simple SQL injection example. --- .../examples/snippets/simple_sql_injection.ql | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rust/ql/examples/snippets/simple_sql_injection.ql diff --git a/rust/ql/examples/snippets/simple_sql_injection.ql b/rust/ql/examples/snippets/simple_sql_injection.ql new file mode 100644 index 00000000000..fd59ddd4c3e --- /dev/null +++ b/rust/ql/examples/snippets/simple_sql_injection.ql @@ -0,0 +1,30 @@ +/** + * @name Database query built from user-controlled sources + * @description Finds places where a value from a remote or local user input + * is used as an argument to the `sqlx_core::query::query` + * function. + * @id rust/examples/simple-sql-injection + * @tags example + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking +import codeql.rust.Concepts + +module SqlInjectionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node instanceof ActiveThreatModelSource } + + predicate isSink(DataFlow::Node node) { + exists(CallExpr call | + call.getStaticTarget().getCanonicalPath() = "sqlx_core::query::query" and + call.getArg(0) = node.asExpr().getExpr() + ) + } +} + +module SqlInjectionFlow = TaintTracking::Global; + +from DataFlow::Node sourceNode, DataFlow::Node sinkNode +where SqlInjectionFlow::flow(sourceNode, sinkNode) +select sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" From 7b6e06e8de164fd7b7948262c54e8da16838f25f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 7 Nov 2025 13:30:53 +0000 Subject: [PATCH 584/965] Rust: Add simple constant password example. --- .../snippets/simple_constant_password.ql | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rust/ql/examples/snippets/simple_constant_password.ql diff --git a/rust/ql/examples/snippets/simple_constant_password.ql b/rust/ql/examples/snippets/simple_constant_password.ql new file mode 100644 index 00000000000..87b7603ba1b --- /dev/null +++ b/rust/ql/examples/snippets/simple_constant_password.ql @@ -0,0 +1,30 @@ +/** + * @name Constant password + * @description Finds places where a string literal is used in a function call + * argument named something like "password". + * @id rust/examples/simple-constant-password + * @tags example + */ + +import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking + +module ConstantPasswordConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { node.asExpr().getExpr() instanceof StringLiteralExpr } + + predicate isSink(DataFlow::Node node) { + // `node` is an argument whose corresponding parameter name matches the pattern "pass%" + exists(CallExpr call, Function target, int argIndex | + call.getStaticTarget() = target and + target.getParam(argIndex).getPat().(IdentPat).getName().getText().matches("pass%") and + call.getArg(argIndex) = node.asExpr().getExpr() + ) + } +} + +module ConstantPasswordFlow = TaintTracking::Global; + +from DataFlow::Node sourceNode, DataFlow::Node sinkNode +where ConstantPasswordFlow::flow(sourceNode, sinkNode) +select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() From 7e3ab99d6b49856c7c2b0dee6c3939e6543f2b22 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 7 Nov 2025 13:48:03 +0000 Subject: [PATCH 585/965] Rust: Add much more detailed code comments, since these are examples. --- rust/ql/examples/snippets/empty_if.ql | 3 +++ .../snippets/simple_constant_password.ql | 21 +++++++++++++++++-- .../examples/snippets/simple_sql_injection.ql | 15 ++++++++++--- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/rust/ql/examples/snippets/empty_if.ql b/rust/ql/examples/snippets/empty_if.ql index a4270a115b6..5a4a62e41b6 100644 --- a/rust/ql/examples/snippets/empty_if.ql +++ b/rust/ql/examples/snippets/empty_if.ql @@ -8,8 +8,11 @@ import rust +// find 'if' statements... from IfExpr ifExpr where + // where the 'then' branch is empty ifExpr.getThen().(BlockExpr).getStmtList().getNumberOfStmtOrExpr() = 0 and + // and no 'else' branch exists not exists(ifExpr.getElse()) select ifExpr, "This 'if' expression is redundant." diff --git a/rust/ql/examples/snippets/simple_constant_password.ql b/rust/ql/examples/snippets/simple_constant_password.ql index 87b7603ba1b..202029994f4 100644 --- a/rust/ql/examples/snippets/simple_constant_password.ql +++ b/rust/ql/examples/snippets/simple_constant_password.ql @@ -1,7 +1,7 @@ /** * @name Constant password * @description Finds places where a string literal is used in a function call - * argument named something like "password". + * argument that looks like a password. * @id rust/examples/simple-constant-password * @tags example */ @@ -10,8 +10,23 @@ import rust import codeql.rust.dataflow.DataFlow import codeql.rust.dataflow.TaintTracking +/** + * A data flow configuration for tracking flow from a string literal to a function + * call argument that looks like a password. For example: + * ``` + * fn set_password(password: &str) { ... } + * + * ... + * + * let pwd = "123456"; // source + * set_password(pwd); // sink (argument 0) + * ``` + */ module ConstantPasswordConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node.asExpr().getExpr() instanceof StringLiteralExpr } + predicate isSource(DataFlow::Node node) { + // `node` is a string literal + node.asExpr().getExpr() instanceof StringLiteralExpr + } predicate isSink(DataFlow::Node node) { // `node` is an argument whose corresponding parameter name matches the pattern "pass%" @@ -23,8 +38,10 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { } } +// instantiate the data flow configuration as a global taint tracking module module ConstantPasswordFlow = TaintTracking::Global; +// report flows from sources to sinks from DataFlow::Node sourceNode, DataFlow::Node sinkNode where ConstantPasswordFlow::flow(sourceNode, sinkNode) select sinkNode, "The value $@ is used as a constant password.", sourceNode, sourceNode.toString() diff --git a/rust/ql/examples/snippets/simple_sql_injection.ql b/rust/ql/examples/snippets/simple_sql_injection.ql index fd59ddd4c3e..0a991118a50 100644 --- a/rust/ql/examples/snippets/simple_sql_injection.ql +++ b/rust/ql/examples/snippets/simple_sql_injection.ql @@ -1,8 +1,7 @@ /** * @name Database query built from user-controlled sources * @description Finds places where a value from a remote or local user input - * is used as an argument to the `sqlx_core::query::query` - * function. + * is used as the first argument of a call to `sqlx_core::query::query`. * @id rust/examples/simple-sql-injection * @tags example */ @@ -12,10 +11,18 @@ import codeql.rust.dataflow.DataFlow import codeql.rust.dataflow.TaintTracking import codeql.rust.Concepts +/** + * A data flow configuration for tracking flow from a user input (threat model + * source) to the first argument of a call to `sqlx_core::query::query`. + */ module SqlInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof ActiveThreatModelSource } + predicate isSource(DataFlow::Node node) { + // `node` is a user input (threat model source) + node instanceof ActiveThreatModelSource + } predicate isSink(DataFlow::Node node) { + // `node` is the first argument of a call to `sqlx_core::query::query` exists(CallExpr call | call.getStaticTarget().getCanonicalPath() = "sqlx_core::query::query" and call.getArg(0) = node.asExpr().getExpr() @@ -23,8 +30,10 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { } } +// instantiate the data flow configuration as a global taint tracking module module SqlInjectionFlow = TaintTracking::Global; +// report flows from sources to sinks from DataFlow::Node sourceNode, DataFlow::Node sinkNode where SqlInjectionFlow::flow(sourceNode, sinkNode) select sinkNode, "This query depends on a $@.", sourceNode, "user-provided value" From 7c670cdc3fe22d5a6d45a62ec9829080d2c44f19 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 7 Nov 2025 14:50:20 +0100 Subject: [PATCH 586/965] C#: Address review comments and make more early returns in Populate. --- .../Entities/CommentBlock.cs | 9 ++-- .../Entities/CommentLine.cs | 8 ++-- .../Compilations/CompilerDiagnostic.cs | 5 +++ .../Entities/Constructor.cs | 19 +++++--- .../Entities/Destructor.cs | 1 + .../Entities/Event.cs | 8 +++- .../Entities/ExtractionMessage.cs | 5 +++ .../Entities/Field.cs | 7 ++- .../Entities/Indexer.cs | 44 +++++++++---------- .../Entities/LocalVariable.cs | 5 +++ .../Entities/Method.cs | 2 +- .../Entities/NamespaceDeclaration.cs | 7 ++- .../Entities/OrdinaryMethod.cs | 17 ++++--- .../Entities/Parameter.cs | 7 ++- .../PreprocessorDirective.cs | 7 ++- .../Entities/Property.cs | 10 ++++- .../Entities/TypeMention.cs | 5 +++ .../Entities/Types/DynamicType.cs | 6 ++- .../Entities/Types/TupleType.cs | 4 ++ .../Entities/Types/TypeParameter.cs | 7 ++- .../Entities/UserOperator.cs | 13 ++++-- .../Entities/UsingDirective.cs | 15 +++---- .../Extractor/OverlayInfo.cs | 2 +- 23 files changed, 149 insertions(+), 64 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs index 23a878c3549..e72df5514ec 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs @@ -11,11 +11,12 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { trapFile.commentblock(this); - if (!Context.OnlyScaffold) - { - WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); - } Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child)); + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); } public override bool NeedsPopulation => true; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs index 639be404852..b51576ba3e5 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs @@ -21,12 +21,14 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { - location = Context.CreateLocation(Location); trapFile.commentline(this, Type == CommentLineType.MultilineContinuation ? CommentLineType.Multiline : Type, Text, RawText); - if (!Context.OnlyScaffold) + if (Context.OnlyScaffold) { - WriteLocationToTrap(trapFile.commentline_location, this, location); + return; } + location = Context.CreateLocation(Location); + WriteLocationToTrap(trapFile.commentline_location, this, location); + } public override Microsoft.CodeAnalysis.Location? ReportingLocation => location?.Symbol; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs index b4c0cdca730..667ed8f4301 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs @@ -21,6 +21,11 @@ namespace Semmle.Extraction.CSharp.Entities protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + var key = diagnostic.Id; var messageCount = compilation.messageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); if (messageCount > limit) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs index 2f4ceeb4ebe..dd17bd2e420 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs @@ -29,9 +29,17 @@ namespace Semmle.Extraction.CSharp.Entities ContainingType!.PopulateGenerics(); trapFile.constructors(this, Symbol.ContainingType.Name, ContainingType, (Constructor)OriginalDefinition); - if (Context.ExtractLocation(Symbol) && (!IsDefault || IsBestSourceLocation)) + + if (Symbol.IsImplicitlyDeclared) { - WriteLocationToTrap(trapFile.constructor_location, this, Location); + var lineCounts = new LineCounts() { Total = 2, Code = 1, Comment = 0 }; + trapFile.numlines(this, lineCounts); + } + ExtractCompilerGenerated(trapFile); + + if (Context.OnlyScaffold) + { + return; } if (MakeSynthetic) @@ -40,12 +48,11 @@ namespace Semmle.Extraction.CSharp.Entities Statements.SyntheticEmptyBlock.Create(Context, this, 0, Location); } - if (Symbol.IsImplicitlyDeclared) + if (Context.ExtractLocation(Symbol) && (!IsDefault || IsBestSourceLocation)) { - var lineCounts = new LineCounts() { Total = 2, Code = 1, Comment = 0 }; - trapFile.numlines(this, lineCounts); + WriteLocationToTrap(trapFile.constructor_location, this, Location); } - ExtractCompilerGenerated(trapFile); + } protected override void ExtractInitializers(TextWriter trapFile) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs index 13e86792fc3..0681d55377a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Destructor.cs @@ -15,6 +15,7 @@ namespace Semmle.Extraction.CSharp.Entities ContainingType!.PopulateGenerics(); trapFile.destructors(this, $"~{Symbol.ContainingType.Name}", ContainingType, OriginalDefinition(Context, this, Symbol)); + if (Context.ExtractLocation(Symbol)) { WriteLocationToTrap(trapFile.destructor_location, this, Location); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs index 8828639820b..bbd90989617 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs @@ -37,7 +37,6 @@ namespace Semmle.Extraction.CSharp.Entities Method.Create(Context, remover); PopulateModifiers(trapFile); - BindComments(); var declSyntaxReferences = IsSourceDeclaration ? Symbol.DeclaringSyntaxReferences.Select(d => d.GetSyntax()).ToArray() @@ -51,6 +50,13 @@ namespace Semmle.Extraction.CSharp.Entities TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + BindComments(); + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.event_location, this, Locations); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs index f8a771ae6d0..922094529b0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/ExtractionMessage.cs @@ -28,6 +28,11 @@ namespace Semmle.Extraction.CSharp.Entities protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + // For the time being we're counting the number of messages per severity, we could introduce other groupings in the future var key = msg.Severity.ToString(); groupedMessageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index 3a8876fde09..9a010aad376 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -49,12 +49,17 @@ namespace Semmle.Extraction.CSharp.Entities } } + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.field_location, this, Locations); } - if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) + if (!IsSourceDeclaration || !Symbol.FromSource()) return; Context.BindComments(this, Location.Symbol); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs index 2be022da71c..870c2eb7650 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs @@ -19,10 +19,6 @@ namespace Semmle.Extraction.CSharp.Entities var type = Type.Create(Context, Symbol.Type); trapFile.indexers(this, Symbol.GetName(useMetadataName: true), ContainingType!, type.TypeRef, OriginalDefinition); - if (Context.ExtractLocation(Symbol)) - { - WriteLocationsToTrap(trapFile.indexer_location, this, Locations); - } var getter = BodyDeclaringSymbol.GetMethod; var setter = BodyDeclaringSymbol.SetMethod; @@ -42,27 +38,9 @@ namespace Semmle.Extraction.CSharp.Entities Parameter.Create(Context, Symbol.Parameters[i], this, original); } - if (IsSourceDeclaration && !Context.OnlyScaffold) - { - var expressionBody = ExpressionBody; - if (expressionBody is not null) - { - // The expression may need to reference parameters in the getter. - // So we need to arrange that the expression is populated after the getter. - Context.PopulateLater(() => Expression.CreateFromNode(new ExpressionNodeInfo(Context, expressionBody, this, 0).SetType(Symbol.GetAnnotatedType()))); - } - } - PopulateAttributes(); PopulateModifiers(trapFile); - if (Context.OnlyScaffold) - { - return; - } - - BindComments(); - var declSyntaxReferences = IsSourceDeclaration ? Symbol.DeclaringSyntaxReferences. Select(d => d.GetSyntax()).OfType().ToArray() @@ -76,6 +54,28 @@ namespace Semmle.Extraction.CSharp.Entities TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + if (Context.ExtractLocation(Symbol)) + { + WriteLocationsToTrap(trapFile.indexer_location, this, Locations); + } + + if (IsSourceDeclaration) + { + var expressionBody = ExpressionBody; + if (expressionBody is not null) + { + // The expression may need to reference parameters in the getter. + // So we need to arrange that the expression is populated after the getter. + Context.PopulateLater(() => Expression.CreateFromNode(new ExpressionNodeInfo(Context, expressionBody, this, 0).SetType(Symbol.GetAnnotatedType()))); + } + } + + BindComments(); foreach (var syntax in declSyntaxReferences) TypeMention.Create(Context, syntax.Type, this, type); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs index f16faa7f530..22174f7e945 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs @@ -41,6 +41,11 @@ namespace Semmle.Extraction.CSharp.Entities trapFile.localvars(this, Kinds.VariableKind.None, Symbol.Name, @var, Type.Create(Context, parent.Type).TypeRef, parent); } + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.localvar_location, this, Location); DefineConstantValue(trapFile); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index e0ba5660778..c1b0f1a65bc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -94,7 +94,7 @@ namespace Semmle.Extraction.CSharp.Entities { trapFile.explicitly_implements(this, explicitInterface.TypeRef); - if (IsSourceDeclaration && !Context.OnlyScaffold) + if (IsSourceDeclaration) { foreach (var syntax in Symbol.DeclaringSyntaxReferences.Select(d => d.GetSyntax()).OfType()) TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs index 09ba3cc02b2..3eaafdca23b 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs @@ -35,7 +35,6 @@ namespace Semmle.Extraction.CSharp.Entities var ns = Namespace.Create(Context, @namespace); trapFile.namespace_declarations(this, ns); - WriteLocationToTrap(trapFile.namespace_declaration_location, this, Context.CreateLocation(node.Name.GetLocation())); var visitor = new Populators.TypeOrNamespaceVisitor(Context, trapFile, this); @@ -48,6 +47,12 @@ namespace Semmle.Extraction.CSharp.Entities { trapFile.parent_namespace_declaration(this, parent); } + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.namespace_declaration_location, this, Context.CreateLocation(node.Name.GetLocation())); } public static NamespaceDeclaration Create(Context cx, BaseNamespaceDeclarationSyntax decl, NamespaceDeclaration parent) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs index 678dbb68f2c..22bcd1dce2c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs @@ -34,7 +34,17 @@ namespace Semmle.Extraction.CSharp.Entities var returnType = Type.Create(Context, Symbol.ReturnType); trapFile.methods(this, Name, ContainingType, returnType.TypeRef, OriginalDefinition); - if (IsSourceDeclaration && !Context.OnlyScaffold) + PopulateGenerics(trapFile); + Overrides(trapFile); + ExtractRefReturn(trapFile, Symbol, this); + ExtractCompilerGenerated(trapFile); + + if (Context.OnlyScaffold) + { + return; + } + + if (IsSourceDeclaration) { foreach (var declaration in Symbol.DeclaringSyntaxReferences.Select(s => s.GetSyntax()).OfType()) { @@ -47,11 +57,6 @@ namespace Semmle.Extraction.CSharp.Entities { WriteLocationsToTrap(trapFile.method_location, this, Locations); } - - PopulateGenerics(trapFile); - Overrides(trapFile); - ExtractRefReturn(trapFile, Symbol, this); - ExtractCompilerGenerated(trapFile); } private bool IsCompilerGeneratedDelegate() => diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs index ba57caef4ee..49ef9a4a6e9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Parameter.cs @@ -115,6 +115,11 @@ namespace Semmle.Extraction.CSharp.Entities var type = Type.Create(Context, Symbol.Type); trapFile.@params(this, Name, type.TypeRef, Ordinal, ParamKind, Parent!, Original); + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { var locations = Context.GetLocations(Symbol); @@ -140,7 +145,7 @@ namespace Semmle.Extraction.CSharp.Entities Context.PopulateLater(defaultValueExpressionCreation); } - if (!IsSourceDeclaration || !Symbol.FromSource() || Context.OnlyScaffold) + if (!IsSourceDeclaration || !Symbol.FromSource()) return; BindComments(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs index 9520e80d245..4b0da499b80 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PreprocessorDirective.cs @@ -13,10 +13,15 @@ namespace Semmle.Extraction.CSharp.Entities PopulatePreprocessor(trapFile); trapFile.preprocessor_directive_active(this, Symbol.IsActive); - WriteLocationToTrap(trapFile.preprocessor_directive_location, this, Context.CreateLocation(ReportingLocation)); var compilation = Compilation.Create(Context); trapFile.preprocessor_directive_compilation(this, compilation); + + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.preprocessor_directive_location, this, Context.CreateLocation(ReportingLocation)); } protected abstract void PopulatePreprocessor(TextWriter trapFile); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index dd8275c1028..d48d778cb75 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -40,7 +40,6 @@ namespace Semmle.Extraction.CSharp.Entities { PopulateAttributes(); PopulateModifiers(trapFile); - BindComments(); PopulateNullability(trapFile, Symbol.GetAnnotatedType()); PopulateRefKind(trapFile, Symbol.RefKind); @@ -69,12 +68,19 @@ namespace Semmle.Extraction.CSharp.Entities TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface); } + if (Context.OnlyScaffold) + { + return; + } + + BindComments(); + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.property_location, this, Locations); } - if (IsSourceDeclaration && Symbol.FromSource() && !Context.OnlyScaffold) + if (IsSourceDeclaration && Symbol.FromSource()) { var expressionBody = ExpressionBody; if (expressionBody is not null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs index d41ba5dc195..aac4c5f5b3f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/TypeMention.cs @@ -59,6 +59,11 @@ namespace Semmle.Extraction.CSharp.Entities protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + switch (syntax.Kind()) { case SyntaxKind.ArrayType: diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs index a3372726ae3..b1413b206ae 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/DynamicType.cs @@ -16,10 +16,14 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { trapFile.types(this, Kinds.TypeKind.DYNAMIC, "dynamic"); - WriteLocationToTrap(trapFile.type_location, this, Location); trapFile.has_modifiers(this, Modifier.Create(Context, "public")); trapFile.parent_namespace(this, Namespace.Create(Context, Context.Compilation.GlobalNamespace)); + if (Context.OnlyScaffold) + { + return; + } + WriteLocationToTrap(trapFile.type_location, this, Location); } public override void WriteId(EscapingTextWriter trapFile) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs index 18d71c99788..f20be262e30 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TupleType.cs @@ -51,6 +51,10 @@ namespace Semmle.Extraction.CSharp.Entities trapFile.tuple_element(this, index++, element); } + if (Context.OnlyScaffold) + { + return; + } // Note: symbol.Locations seems to be very inconsistent // about what locations are available for a tuple type. // Sometimes it's the source code, and sometimes it's empty. diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs index 1670ac48101..7d117dcd427 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/TypeParameter.cs @@ -26,13 +26,18 @@ namespace Semmle.Extraction.CSharp.Entities var parentNs = Namespace.Create(Context, Symbol.TypeParameterKind == TypeParameterKind.Method ? Context.Compilation.GlobalNamespace : Symbol.ContainingNamespace); trapFile.parent_namespace(this, parentNs); + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { var locations = Context.GetLocations(Symbol); WriteLocationsToTrap(trapFile.type_location, this, locations); } - if (IsSourceDeclaration && !Context.OnlyScaffold) + if (IsSourceDeclaration) { var declSyntaxReferences = Symbol.DeclaringSyntaxReferences .Select(d => d.GetSyntax()) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs index 113605602a4..fc9358ffc2d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs @@ -26,12 +26,20 @@ namespace Semmle.Extraction.CSharp.Entities returnType.TypeRef, (UserOperator)OriginalDefinition); + ContainingType.PopulateGenerics(); + Overrides(trapFile); + + if (Context.OnlyScaffold) + { + return; + } + if (Context.ExtractLocation(Symbol)) { WriteLocationsToTrap(trapFile.operator_location, this, Locations); } - if (IsSourceDeclaration && !Context.OnlyScaffold) + if (IsSourceDeclaration) { var declSyntaxReferences = Symbol.DeclaringSyntaxReferences.Select(s => s.GetSyntax()).ToArray(); foreach (var declaration in declSyntaxReferences.OfType()) @@ -39,9 +47,6 @@ namespace Semmle.Extraction.CSharp.Entities foreach (var declaration in declSyntaxReferences.OfType()) TypeMention.Create(Context, declaration.Type, this, returnType); } - - ContainingType.PopulateGenerics(); - Overrides(trapFile); } public override bool NeedsPopulation => Context.Defines(Symbol) || IsImplicitOperator(out _); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs index fe308d778f6..f1de4a1d699 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UsingDirective.cs @@ -20,6 +20,11 @@ namespace Semmle.Extraction.CSharp.Entities protected override void Populate(TextWriter trapFile) { + if (Context.OnlyScaffold) + { + return; + } + // This is guaranteed to be non-null as we only deal with "using namespace" not "using X = Y" var name = node.Name!; @@ -32,10 +37,7 @@ namespace Semmle.Extraction.CSharp.Entities { var ns = Namespace.Create(Context, namespaceSymbol); trapFile.using_namespace_directives(this, ns); - if (!Context.OnlyScaffold) - { - trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); - } + trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); } else { @@ -49,10 +51,7 @@ namespace Semmle.Extraction.CSharp.Entities // A "using static" var m = Type.Create(Context, (ITypeSymbol?)info.Symbol); trapFile.using_static_directives(this, m.TypeRef); - if (!Context.OnlyScaffold) - { - trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); - } + trapFile.using_directive_location(this, Context.CreateLocation(ReportingLocation)); } if (node.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword)) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs index 223d5426e96..9ff5d88b439 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/OverlayInfo.cs @@ -68,7 +68,7 @@ namespace Semmle.Extraction.CSharp /// ] /// } /// - public record ChangedFiles + private record ChangedFiles { public string[]? Changes { get; set; } } From 1657dfb5516692ee2a4ef8cba766689a466cff19 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 7 Nov 2025 15:26:07 +0100 Subject: [PATCH 587/965] C#: Remove expression population safeguard and guard creation of constructor initializer expressions. --- .../Semmle.Extraction.CSharp/Entities/Constructor.cs | 3 ++- .../Semmle.Extraction.CSharp/Entities/Expression.cs | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs index dd17bd2e420..2c3b25b2e1c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs @@ -60,7 +60,7 @@ namespace Semmle.Extraction.CSharp.Entities // Do not extract initializers for constructed types. // Extract initializers for constructors with a body, primary constructors // and default constructors for classes and structs declared in source code. - if (Block is null && ExpressionBody is null && !MakeSynthetic) + if (Block is null && ExpressionBody is null && !MakeSynthetic || Context.OnlyScaffold) { return; } @@ -113,6 +113,7 @@ namespace Semmle.Extraction.CSharp.Entities } var baseConstructorTarget = Create(Context, baseConstructor); + var info = new ExpressionInfo(Context, AnnotatedTypeSymbol.CreateNotAnnotated(baseType), Location, diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs index 0a10d4882e4..93107fc6dab 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs @@ -34,11 +34,6 @@ namespace Semmle.Extraction.CSharp.Entities protected sealed override void Populate(TextWriter trapFile) { - if (Context.OnlyScaffold) - { - return; - } - var type = Type.HasValue ? Entities.Type.Create(Context, Type.Value) : NullType.Create(Context); trapFile.expressions(this, Kind, type.TypeRef); if (info.Parent.IsTopLevelParent) From 9d300e3ad348c63df5196c45032f7c6695d81498 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 7 Nov 2025 15:52:37 +0100 Subject: [PATCH 588/965] C#: Address comments in the QL implementation. --- csharp/ql/lib/csharp.qll | 2 +- .../code/csharp/{ => internal}/Overlay.qll | 122 +++++++++--------- .../library-tests/overlay/testlocations.ql | 11 +- 3 files changed, 65 insertions(+), 70 deletions(-) rename csharp/ql/lib/semmle/code/csharp/{ => internal}/Overlay.qll (82%) diff --git a/csharp/ql/lib/csharp.qll b/csharp/ql/lib/csharp.qll index baa9d2a811d..cab24d12dcd 100644 --- a/csharp/ql/lib/csharp.qll +++ b/csharp/ql/lib/csharp.qll @@ -36,7 +36,7 @@ import semmle.code.csharp.controlflow.ControlFlowGraph import semmle.code.csharp.dataflow.DataFlow import semmle.code.csharp.dataflow.TaintTracking import semmle.code.csharp.dataflow.SSA -private import semmle.code.csharp.Overlay +private import semmle.code.csharp.internal.Overlay /** Whether the source was extracted without a build command. */ predicate extractionIsStandalone() { exists(SourceFile f | f.extractedStandalone()) } diff --git a/csharp/ql/lib/semmle/code/csharp/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll similarity index 82% rename from csharp/ql/lib/semmle/code/csharp/Overlay.qll rename to csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll index 044279df7fc..28b86d5019a 100644 --- a/csharp/ql/lib/semmle/code/csharp/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll @@ -10,73 +10,19 @@ overlay[local] predicate isOverlay() { databaseMetadata("isOverlay", "true") } +overlay[local] +private string getLocationFilePath(@location_default loc) { + exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) +} + /** * An abstract base class for all elements that can be discarded from the base. */ overlay[local] -abstract private class DiscardableEntity extends @locatable { +private class DiscardableEntity extends @locatable { /** Gets the path to the file in which this element occurs. */ - abstract string getPath(); - - /** Holds if this element exists in the base variant. */ - predicate existsInBase() { not isOverlay() and exists(this) } - - /** Holds if this element exists in the overlay variant. */ - predicate existsInOverlay() { isOverlay() and exists(this) } - - /** Gets a textual representation of this discardable element. */ - string toString() { none() } -} - -/** - * A class of C# database entities that use `*` IDs. - * The rest use named TRAP IDs. - */ -overlay[local] -private class StarEntity = - @expr or @stmt or @diagnostic or @extractor_message or @using_directive or @type_mention; - -overlay[discard_entity] -private predicate discardStarEntity(@locatable e) { - e instanceof StarEntity and - // Entities with *-ids can exist either in base or overlay, but not both. - exists(DiscardableEntity de | de = e | - overlayChangedFiles(de.getPath()) and - de.existsInBase() - ) -} - -overlay[discard_entity] -private predicate discardNamedEntity(@locatable e) { - not e instanceof StarEntity and - // Entities with named IDs can exist both in base, overlay, or both. - exists(DiscardableEntity de | de = e | - overlayChangedFiles(de.getPath()) and - not de.existsInOverlay() - ) -} - -overlay[local] -private string getLocationPath(@location_default loc) { - exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) -} - -overlay[local] -private predicate discardableLocation(@location_default loc, string path) { - not isOverlay() and - path = getLocationPath(loc) -} - -// Discard locations that are in changed files from the base variant. -overlay[discard_entity] -private predicate discardLocation(@location_default loc) { - exists(string path | discardableLocation(loc, path) | overlayChangedFiles(path)) -} - -overlay[local] -private class PossibleDiscardableEntity extends DiscardableEntity instanceof @locatable { - override string getPath() { - exists(@location_default loc | result = getLocationPath(loc) | + string getFilePath() { + exists(@location_default loc | result = getLocationFilePath(loc) | expr_location(this, loc) or stmt_location(this, loc) or using_directive_location(this, loc) or @@ -104,4 +50,56 @@ private class PossibleDiscardableEntity extends DiscardableEntity instanceof @lo extractor_messages(this, _, _, _, _, loc, _) ) } + + /** Holds if this element exists in the base variant. */ + predicate existsInBase() { not isOverlay() and exists(this) } + + /** Holds if this element exists in the overlay variant. */ + predicate existsInOverlay() { isOverlay() and exists(this) } + + /** Gets a textual representation of this discardable element. */ + string toString() { none() } +} + +/** + * A class of C# database entities that use `*` IDs. + * The rest use named TRAP IDs. + */ +overlay[local] +private class StarEntity = + @expr or @stmt or @diagnostic or @extractor_message or @using_directive or @type_mention or + @local_variable; + +overlay[discard_entity] +private predicate discardStarEntity(@locatable e) { + e instanceof StarEntity and + // Entities with *-ids can exist either in base or overlay, but not both. + e = + any(DiscardableEntity de | + overlayChangedFiles(de.getFilePath()) and + de.existsInBase() + ) +} + +overlay[discard_entity] +private predicate discardNamedEntity(@locatable e) { + not e instanceof StarEntity and + // Entities with named IDs can exist both in base, overlay, or both. + e = + any(DiscardableEntity de | + overlayChangedFiles(de.getFilePath()) and + not de.existsInOverlay() + ) +} + +overlay[local] +private predicate discardableLocation(@location_default loc, string path) { + not isOverlay() and + path = getLocationFilePath(loc) +} + +// Discard locations that are in changed files from the base variant. +overlay[discard_entity] +private predicate discardLocation(@location_default loc) { + exists(string path | discardableLocation(loc, path) | overlayChangedFiles(path)) } diff --git a/csharp/ql/test/library-tests/overlay/testlocations.ql b/csharp/ql/test/library-tests/overlay/testlocations.ql index 33618429db0..24aaeda218c 100644 --- a/csharp/ql/test/library-tests/overlay/testlocations.ql +++ b/csharp/ql/test/library-tests/overlay/testlocations.ql @@ -5,25 +5,22 @@ import csharp query predicate elementsWithMultipleSourceLocations(Element e, SourceLocation loc) { e.fromSource() and not e instanceof Namespace and - count(SourceLocation l0 | l0 = e.getALocation()) > 1 and + strictcount(SourceLocation l0 | l0 = e.getALocation()) > 1 and loc = e.getALocation() } query predicate typeMentionsWithMultipleSourceLocations(TypeMention tm, SourceLocation loc) { - tm.getLocation().getFile().fromSource() and - count(SourceLocation l0 | l0 = tm.getLocation()) > 1 and + strictcount(SourceLocation l0 | l0 = tm.getLocation()) > 1 and loc = tm.getLocation() } query predicate commentLinesWithMultipleSourceLocations(CommentLine cl, SourceLocation loc) { - cl.getLocation().getFile().fromSource() and - count(SourceLocation l0 | l0 = cl.getLocation()) > 1 and + strictcount(SourceLocation l0 | l0 = cl.getLocation()) > 1 and loc = cl.getLocation() } query predicate commentBlocksWithMultipleSourceLocations(CommentBlock cb, SourceLocation loc) { - cb.getLocation().getFile().fromSource() and - count(SourceLocation l0 | l0 = cb.getLocation()) > 1 and + strictcount(SourceLocation l0 | l0 = cb.getLocation()) > 1 and loc = cb.getLocation() } From e7c029ae7d2cf0eec4f515ff8cedddf97b16cdd1 Mon Sep 17 00:00:00 2001 From: Enrico Steffinlongo Date: Fri, 7 Nov 2025 16:49:47 +0000 Subject: [PATCH 589/965] Revert "Merge pull request #20645 from paldepind/cpp/range-analysis-measure" This reverts commit a0a6f288b5d9a0d8d28537996f066567369c0b71, reversing changes made to 32f21d6d494c3324da5fde0218c65bd4e743d235. --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 428 +- .../SimpleRangeAnalysis/lowerBound.expected | 704 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 4605 ----------------- .../SimpleRangeAnalysis/nrOfBounds.ql | 5 - .../SimpleRangeAnalysis/ternaryLower.expected | 75 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 75 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 214 - .../SimpleRangeAnalysis/upperBound.expected | 704 +-- 8 files changed, 418 insertions(+), 6392 deletions(-) delete mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected delete mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index fcb99487d2a..95cdb2624b5 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -93,18 +93,6 @@ private float wideningUpperBounds(ArithmeticType t) { result = 1.0 / 0.0 // +Inf } -/** Gets the widened lower bound for a given type and lower bound. */ -bindingset[type, lb] -float widenLowerBound(Type type, float lb) { - result = max(float widenLB | widenLB = wideningLowerBounds(type) and widenLB <= lb | widenLB) -} - -/** Gets the widened upper bound for a given type and upper bound. */ -bindingset[type, ub] -float widenUpperBound(Type type, float ub) { - result = min(float widenUB | widenUB = wideningUpperBounds(type) and widenUB >= ub | widenUB) -} - /** * Gets the value of the expression `e`, if it is a constant. * This predicate also handles the case of constant variables initialized in different @@ -516,328 +504,6 @@ private predicate isRecursiveExpr(Expr e) { ) } -/** - * Provides predicates that estimate the number of bounds that the range - * analysis might produce. - */ -private module BoundsEstimate { - /** - * Gets the limit beyond which we enable widening. That is, if the estimated - * number of bounds exceeds this limit, we enable widening such that the limit - * will not be reached. - */ - float getBoundsLimit() { - // This limit is arbitrary, but low enough that it prevents timeouts on - // specific observed customer databases (and the in the tests). - result = 2.0.pow(40) - } - - /** Gets the maximum number of bounds possible for `t` when widening is used. */ - private int getNrOfWideningBounds(ArithmeticType t) { - result = strictcount(wideningLowerBounds(t)).maximum(strictcount(wideningUpperBounds(t))) - } - - /** - * Holds if `boundFromGuard(guard, v, _, branch)` holds, but without - * relying on range analysis (which would cause non-monotonic recursion - * elsewhere). - */ - private predicate hasBoundFromGuard(Expr guard, VariableAccess v, boolean branch) { - exists(Expr lhs | linearAccess(lhs, v, _, _) | - relOpWithSwapAndNegate(guard, lhs, _, _, _, branch) - or - eqOpWithSwapAndNegate(guard, lhs, _, true, branch) - or - eqZeroWithNegate(guard, lhs, true, branch) - ) - } - - /** Holds if `def` is a guard phi node for `v` with a bound from a guard. */ - predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { - exists(Expr guard, boolean branch | - def.isGuardPhi(v, access, guard, branch) and - hasBoundFromGuard(guard, access, branch) - ) - } - - /** - * Gets the number of bounds for `def` when `def` is a guard phi node for the - * variable `v`. - */ - language[monotonicAggregates] - private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { - // If we have - // - // if (x < c) { e1 } - // e2 - // - // then `e2` is both a guard phi node (guarded by `x < c`) and a normal - // phi node (control is merged after the `if` statement). - // - // Assume `x` has `n` bounds. Then `n` bounds are propagated to the guard - // phi node `{ e1 }` and, since `{ e1 }` is input to `e2` as a normal phi - // node, `n` bounds are propagated to `e2`. If we also propagate the `n` - // bounds to `e2` as a guard phi node, then we square the number of - // bounds. - // - // However in practice `x < c` is going to cut down the number of bounds: - // The tracked bounds can't flow to both branches as that would require - // them to simultaneously be greater and smaller than `c`. To approximate - // this better, the contribution from a guard phi node that is also a - // normal phi node is 1. - exists(def.getAPhiInput(v)) and - isGuardPhiWithBound(def, v, _) and - result = 1 - or - not exists(def.getAPhiInput(v)) and - // If there's different `access`es, then they refer to the same variable - // with the same lower bounds. Hence adding these guards make no sense (the - // implementation will take the union but they'll be removed by - // deduplication). Hence we use `max` as an approximation. - result = - max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) - or - def.isPhiNode(v) and - not isGuardPhiWithBound(def, v, _) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is a normal phi node for the - * variable `v`. - */ - language[monotonicAggregates] - private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { - result = - strictsum(RangeSsaDefinition inputDef | - inputDef = def.getAPhiInput(v) - | - nrOfBoundsDef(inputDef, v) - ) - or - def.isPhiNode(v) and - not exists(def.getAPhiInput(v)) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is an NE phi node for the - * variable `v`. - */ - private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) - or - def.isPhiNode(v) and - not isNEPhi(v, def, _, _) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is an unsupported guard phi - * node for the variable `v`. - */ - private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | - isUnsupportedGuardPhi(v, def, access) and - result = nrOfBoundsExpr(access) - ) - or - def.isPhiNode(v) and - not isUnsupportedGuardPhi(v, def, _) and - result = 0 - } - - private float nrOfBoundsPhi(RangeSsaDefinition def, StackVariable v) { - // The cases for phi nodes are not mutually exclusive. For instance a phi - // node can be both a guard phi node and a normal phi node. To handle this - // we sum the contributions from the different cases. - result = - nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + - nrOfBoundsUnsupportedGuardPhi(def, v) - } - - /** Gets the estimated number of bounds for `def` and `v`. */ - float nrOfBoundsDef(RangeSsaDefinition def, StackVariable v) { - // Recursive definitions are already widened, so we simply estimate them as - // having the number of widening bounds available. This is crucial as it - // ensures that we don't follow recursive cycles when calculating the - // estimate. Had that not been the case the estimate itself would be at risk - // of causing performance issues and being non-functional. - if isRecursiveDef(def, v) - then result = getNrOfWideningBounds(getVariableRangeType(v)) - else ( - // Definitions with a defining value - exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) - or - // Assignment operations with a defining value - exists(AssignOperation assignOp | - def = assignOp and - assignOp.getLValue() = v.getAnAccess() and - result = nrOfBoundsExpr(assignOp) - ) - or - // Phi nodes - result = nrOfBoundsPhi(def, v) - or - unanalyzableDefBounds(def, v, _, _) and result = 1 - ) - } - - /** - * Gets a naive estimate of the number of bounds for `e`. - * - * The estimate is like an abstract interpretation of the range analysis, - * where the abstract value is the number of bounds. For instance, - * `nrOfBoundsExpr(12) = 1` and `nrOfBoundsExpr(x + y) = nrOfBoundsExpr(x) * - * nrOfBoundsExpr(y)`. - * - * The estimated number of bounds will usually be greater than the actual - * number of bounds, as the estimate can not detect cases where bounds are cut - * down when tracked precisely. For instance, in - * ```c - * int x = 1; - * if (cond) { x = 1; } - * int y = x + x; - * ``` - * the actual number of bounds for `y` is 1. However, the estimate will be 4 - * as the conditional assignment to `x` gives two bounds for `x` on the last - * line and the addition gives 2 * 2 bounds. There are two sources of anncuracies: - * - * 1. Without tracking the lower bounds we can't see that `x` is assigned a - * value that is equal to its lower bound. - * 2. Had the conditional assignment been `x = 2` then the estimate of two - * bounds for `x` would have been correct. However, the estimate of 4 for `y` - * would still be incorrect. Summing the actual bounds `{1,2}` with itself - * gives `{2,3,4}` which is only three bounds. Again, we can't realise this - * without tracking the bounds. - * - * Since these inaccuracies compound the estimated number of bounds can often - * be _much_ greater than the actual number of bounds. Do note though that the - * estimate is not _guaranteed_ to be an upper bound. In some cases the - * approximations might underestimate the number of bounds. - * - * This predicate is functional. This is crucial as: - * - * - It ensures that the computing the estimate itself is fast. - * - Our use of monotonic aggregates assumes functionality. - * - * Any non-functional case should be considered a bug. - */ - float nrOfBoundsExpr(Expr e) { - // Similarly to what we do for definitions, we do not attempt to measure the - // number of bounds for recursive expressions. - if isRecursiveExpr(e) - then result = getNrOfWideningBounds(e.getUnspecifiedType()) - else - if analyzableExpr(e) - then - // The cases here are an abstraction of and mirrors the cases inside - // `getLowerBoundsImpl`/`getUpperBoundsImpl`. - result = 1 and exists(getValue(e).toFloat()) - or - exists(Expr operand | result = nrOfBoundsExpr(operand) | - effectivelyMultipliesByPositive(e, operand, _) - or - effectivelyMultipliesByNegative(e, operand, _) - ) - or - exists(ConditionalExpr condExpr | - e = condExpr and - result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) - ) - or - exists(BinaryOperation binop | - e = binop and - result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) - | - e instanceof MaxExpr or - e instanceof MinExpr or - e instanceof AddExpr or - e instanceof SubExpr or - e instanceof UnsignedMulExpr or - e instanceof UnsignedBitwiseAndExpr - ) - or - exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) - or - exists(AssignArithmeticOperation assignOp | - e = assignOp and - result = nrOfBoundsExpr(assignOp.getLValue()) * nrOfBoundsExpr(assignOp.getRValue()) - | - e instanceof AssignAddExpr or - e instanceof AssignSubExpr or - e instanceof UnsignedAssignMulExpr - ) - or - // Handles `AssignMulByPositiveConstantExpr` and `AssignMulByNegativeConstantExpr` - exists(AssignMulByConstantExpr mulExpr | - e = mulExpr and - result = nrOfBoundsExpr(mulExpr.getLValue()) - ) - or - // Handles the prefix and postfix increment and decrement operators. - exists(CrementOperation crementOp | - e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) - ) - or - exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getRightOperand())) - or - exists(Conversion convExpr | - e = convExpr and - if convExpr.getUnspecifiedType() instanceof BoolType - then result = 1 - else result = nrOfBoundsExpr(convExpr.getExpr()) - ) - or - exists(RangeSsaDefinition def, StackVariable v | - e = def.getAUse(v) and - result = nrOfBoundsDef(def, v) and - // Avoid returning two numbers when `e` is a use with a constant value. - not exists(getValue(e).toFloat()) - ) - or - exists(RShiftExpr rsExpr | - e = rsExpr and - exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and - result = nrOfBoundsExpr(rsExpr.getLeftOperand()) - ) - else ( - exists(exprMinVal(e)) and result = 1 - ) - } -} - -/** - * Holds if `v` is a variable for which widening should be used, as otherwise a - * very large number of bounds might be generated during the range analysis for - * `v`. - */ -private predicate varHasTooManyBounds(StackVariable v) { - exists(RangeSsaDefinition def | - def.getAVariable() = v and - BoundsEstimate::nrOfBoundsDef(def, v) > BoundsEstimate::getBoundsLimit() - ) -} - -/** - * Holds if `e` is an expression for which widening should be used, as otherwise - * a very large number of bounds might be generated during the range analysis - * for `e`. - */ -private predicate exprHasTooManyBounds(Expr e) { - BoundsEstimate::nrOfBoundsExpr(e) > BoundsEstimate::getBoundsLimit() - or - // A subexpressions of an expression with too many bounds may itself not have - // to many bounds. For instance, `x + y` can have too many bounds without `x` - // having as well. But in these cases, still want to consider `e` as having - // too many bounds since: - // - The overall result is widened anyway, so widening `e` as well is unlikely - // to cause further precision loss. - // - The number of bounds could be very large but still below the arbitrary - // limit. Hence widening `e` can improve performance. - exists(Expr pe | exprHasTooManyBounds(pe) and e.getParent() = pe) -} - /** * Holds if `binop` is a binary operation that's likely to be assigned a * quadratic (or more) number of candidate bounds during the analysis. This can @@ -988,8 +654,13 @@ private float getTruncatedLowerBounds(Expr expr) { if exprMinVal(expr) <= newLB and newLB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) - then result = widenLowerBound(expr.getUnspecifiedType(), newLB) + if isRecursiveBinary(expr) + then + result = + max(float widenLB | + widenLB = wideningLowerBounds(expr.getUnspecifiedType()) and + not widenLB > newLB + ) else result = newLB else result = exprMinVal(expr) ) and @@ -1042,8 +713,13 @@ private float getTruncatedUpperBounds(Expr expr) { if exprMinVal(expr) <= newUB and newUB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) - then result = widenUpperBound(expr.getUnspecifiedType(), newUB) + if isRecursiveBinary(expr) + then + result = + min(float widenUB | + widenUB = wideningUpperBounds(expr.getUnspecifiedType()) and + not widenUB < newUB + ) else result = newUB else result = exprMaxVal(expr) ) @@ -2120,12 +1796,18 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new lower bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) or varHasTooManyBounds(v) + if isRecursiveDef(def, v) then // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the // recursion from exploding. - result = widenLowerBound(getVariableRangeType(v), truncatedLB) + result = + max(float widenLB | + widenLB = wideningLowerBounds(getVariableRangeType(v)) and + not widenLB > truncatedLB + | + widenLB + ) else result = truncatedLB ) or @@ -2144,12 +1826,18 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new upper bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) or varHasTooManyBounds(v) + if isRecursiveDef(def, v) then // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion // from exploding. - result = widenUpperBound(getVariableRangeType(v), truncatedUB) + result = + min(float widenUB | + widenUB = wideningUpperBounds(getVariableRangeType(v)) and + not widenUB < truncatedUB + | + widenUB + ) else result = truncatedUB ) or @@ -2157,60 +1845,4 @@ module SimpleRangeAnalysisInternal { // bound is `typeUpperBound`. defMightOverflowNegatively(def, v) and result = varMaxVal(v) } - - /** Gets the estimate of the number of bounds for `e`. */ - float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } -} - -/** Provides predicates for debugging the simple range analysis library. */ -private module Debug { - Locatable getRelevantLocatable() { - exists(string filepath, int startline | - result.getLocation().hasLocationInfo(filepath, startline, _, _, _) and - filepath.matches("%/test.c") and - startline = [621 .. 639] - ) - } - - float debugGetLowerBoundsImpl(Expr e) { - e = getRelevantLocatable() and - result = getLowerBoundsImpl(e) - } - - float debugGetUpperBoundsImpl(Expr e) { - e = getRelevantLocatable() and - result = getUpperBoundsImpl(e) - } - - /** - * Counts the number of lower bounds for a given expression. This predicate is - * useful for identifying performance issues in the range analysis. - */ - predicate countGetLowerBoundsImpl(Expr e, int n) { - e = getRelevantLocatable() and - n = strictcount(float lb | lb = getLowerBoundsImpl(e) | lb) - } - - float debugNrOfBounds(Expr e) { - e = getRelevantLocatable() and - result = BoundsEstimate::nrOfBoundsExpr(e) - } - - /** - * Finds any expressions for which `nrOfBounds` is not functional. The result - * should be empty, so this predicate is useful to debug non-functional cases. - */ - int nonFunctionalNrOfBounds(Expr e) { - strictcount(BoundsEstimate::nrOfBoundsExpr(e)) > 1 and - result = BoundsEstimate::nrOfBoundsExpr(e) - } - - /** - * Holds if `e` is an expression that has a lower bound, but where - * `nrOfBounds` does not compute an estimate. - */ - predicate missingNrOfBounds(Expr e, float n) { - n = lowerBound(e) and - not exists(BoundsEstimate::nrOfBoundsExpr(e)) - } } diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 10e31040b5a..bc8f42dafc3 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,519 +485,197 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:420:7:420:9 | rhs | 0 | -| test.c:420:19:420:21 | rhs | 0 | -| test.c:421:7:421:9 | rhs | 0 | -| test.c:421:19:421:21 | rhs | 0 | -| test.c:422:7:422:9 | rhs | 0 | -| test.c:422:19:422:21 | rhs | 0 | -| test.c:423:7:423:9 | rhs | 0 | -| test.c:423:19:423:21 | rhs | 0 | -| test.c:424:7:424:9 | rhs | 0 | -| test.c:424:19:424:21 | rhs | 0 | -| test.c:425:10:425:12 | rhs | 0 | -| test.c:432:10:432:11 | ip | 0 | -| test.c:432:20:432:21 | ip | 0 | -| test.c:432:40:432:41 | ip | 0 | -| test.c:433:14:433:15 | ip | 1 | -| test.c:434:14:434:15 | ip | 0 | -| test.c:434:34:434:35 | ip | 0 | -| test.c:435:11:435:12 | ip | 0 | -| test.c:436:13:436:14 | ip | 0 | -| test.c:437:14:437:15 | ip | 0 | -| test.c:438:14:438:15 | ip | 0 | -| test.c:439:15:439:16 | ip | 0 | -| test.c:439:41:439:42 | ip | 0 | -| test.c:439:52:439:53 | ip | 0 | -| test.c:439:67:439:68 | ip | 0 | -| test.c:439:78:439:79 | ip | 0 | -| test.c:440:18:440:19 | ip | 0 | -| test.c:441:23:441:24 | ip | 0 | -| test.c:441:34:441:35 | ip | 0 | -| test.c:442:25:442:26 | ip | 0 | -| test.c:443:20:443:21 | ip | 0 | -| test.c:444:11:444:12 | ip | 0 | -| test.c:444:26:444:27 | ip | 0 | -| test.c:445:16:445:17 | ip | 0 | -| test.c:446:16:446:17 | ip | 0 | -| test.c:447:16:447:17 | ip | 0 | -| test.c:448:17:448:18 | ip | 0 | -| test.c:449:22:449:23 | ip | 0 | -| test.c:449:33:449:34 | ip | 0 | -| test.c:449:48:449:49 | ip | 0 | -| test.c:449:59:449:60 | ip | 0 | -| test.c:450:20:450:21 | ip | 0 | -| test.c:451:25:451:26 | ip | 0 | -| test.c:451:36:451:37 | ip | 0 | -| test.c:452:27:452:28 | ip | 0 | -| test.c:453:22:453:23 | ip | 0 | -| test.c:454:15:454:16 | ip | 0 | -| test.c:454:30:454:31 | ip | 0 | -| test.c:455:11:455:12 | ip | 0 | -| test.c:456:12:456:13 | ip | 0 | -| test.c:457:12:457:13 | ip | 0 | -| test.c:458:13:458:14 | ip | 0 | -| test.c:458:39:458:40 | ip | 0 | -| test.c:458:50:458:51 | ip | 0 | -| test.c:458:65:458:66 | ip | 0 | -| test.c:458:76:458:77 | ip | 0 | -| test.c:459:16:459:17 | ip | 0 | -| test.c:460:21:460:22 | ip | 0 | -| test.c:460:32:460:33 | ip | 0 | -| test.c:461:23:461:24 | ip | 0 | -| test.c:462:18:462:19 | ip | 0 | -| test.c:463:11:463:12 | ip | 0 | -| test.c:463:17:463:18 | ip | 0 | -| test.c:463:37:463:38 | ip | 0 | -| test.c:463:43:463:44 | ip | 0 | -| test.c:464:14:464:15 | ip | 0 | -| test.c:465:14:465:15 | ip | 0 | -| test.c:466:14:466:15 | ip | 0 | -| test.c:467:15:467:16 | ip | 0 | -| test.c:467:41:467:42 | ip | 0 | -| test.c:467:52:467:53 | ip | 0 | -| test.c:467:67:467:68 | ip | 0 | -| test.c:467:78:467:79 | ip | 0 | -| test.c:468:18:468:19 | ip | 0 | -| test.c:469:23:469:24 | ip | 0 | -| test.c:469:34:469:35 | ip | 0 | -| test.c:470:25:470:26 | ip | 0 | -| test.c:471:20:471:21 | ip | 0 | -| test.c:472:14:472:15 | ip | 0 | -| test.c:472:20:472:21 | ip | 0 | -| test.c:473:16:473:17 | ip | 0 | -| test.c:474:12:474:13 | ip | 0 | -| test.c:475:14:475:15 | ip | 0 | -| test.c:476:15:476:16 | ip | 0 | -| test.c:477:16:477:17 | ip | 0 | -| test.c:478:16:478:17 | ip | 0 | -| test.c:479:17:479:18 | ip | 0 | -| test.c:480:22:480:23 | ip | 0 | -| test.c:480:33:480:34 | ip | 0 | -| test.c:480:48:480:49 | ip | 0 | -| test.c:480:59:480:60 | ip | 0 | -| test.c:481:20:481:21 | ip | 0 | -| test.c:482:25:482:26 | ip | 0 | -| test.c:482:36:482:37 | ip | 0 | -| test.c:483:27:483:28 | ip | 0 | -| test.c:484:22:484:23 | ip | 0 | -| test.c:485:13:485:14 | ip | 0 | -| test.c:485:28:485:29 | ip | 0 | -| test.c:486:18:486:19 | ip | 0 | -| test.c:487:18:487:19 | ip | 0 | -| test.c:488:18:488:19 | ip | 0 | -| test.c:489:19:489:20 | ip | 0 | -| test.c:490:24:490:25 | ip | 0 | -| test.c:490:35:490:36 | ip | 0 | -| test.c:490:50:490:51 | ip | 0 | -| test.c:490:61:490:62 | ip | 0 | -| test.c:491:22:491:23 | ip | 0 | -| test.c:492:27:492:28 | ip | 0 | -| test.c:492:38:492:39 | ip | 0 | -| test.c:493:29:493:30 | ip | 0 | -| test.c:494:24:494:25 | ip | 0 | -| test.c:495:17:495:18 | ip | 0 | -| test.c:495:32:495:33 | ip | 0 | -| test.c:496:14:496:15 | ip | 0 | -| test.c:497:18:497:19 | ip | 0 | -| test.c:498:18:498:19 | ip | 0 | -| test.c:499:19:499:20 | ip | 0 | -| test.c:500:24:500:25 | ip | 0 | -| test.c:500:35:500:36 | ip | 0 | -| test.c:500:50:500:51 | ip | 0 | -| test.c:500:61:500:62 | ip | 0 | -| test.c:501:22:501:23 | ip | 0 | -| test.c:502:27:502:28 | ip | 0 | -| test.c:502:38:502:39 | ip | 0 | -| test.c:503:29:503:30 | ip | 0 | -| test.c:504:24:504:25 | ip | 0 | -| test.c:505:17:505:18 | ip | 0 | -| test.c:505:23:505:24 | ip | 0 | -| test.c:505:43:505:44 | ip | 0 | -| test.c:505:49:505:50 | ip | 0 | -| test.c:506:16:506:17 | ip | 0 | -| test.c:507:16:507:17 | ip | 0 | -| test.c:508:16:508:17 | ip | 0 | -| test.c:509:17:509:18 | ip | 0 | -| test.c:510:22:510:23 | ip | 0 | -| test.c:510:33:510:34 | ip | 0 | -| test.c:510:48:510:49 | ip | 0 | -| test.c:510:59:510:60 | ip | 0 | -| test.c:511:20:511:21 | ip | 0 | -| test.c:512:25:512:26 | ip | 0 | -| test.c:512:36:512:37 | ip | 0 | -| test.c:513:27:513:28 | ip | 0 | -| test.c:514:22:514:23 | ip | 0 | -| test.c:515:16:515:17 | ip | 0 | -| test.c:515:22:515:23 | ip | 0 | -| test.c:516:18:516:19 | ip | 0 | -| test.c:517:14:517:15 | ip | 0 | -| test.c:518:14:518:15 | ip | 0 | -| test.c:518:24:518:25 | ip | 0 | -| test.c:518:44:518:45 | ip | 0 | -| test.c:519:16:519:17 | ip | 1 | -| test.c:520:16:520:17 | ip | 0 | -| test.c:520:36:520:37 | ip | 0 | -| test.c:521:14:521:15 | ip | 0 | -| test.c:522:19:522:20 | ip | 0 | -| test.c:523:20:523:21 | ip | 0 | -| test.c:524:20:524:21 | ip | 0 | -| test.c:525:21:525:22 | ip | 0 | -| test.c:526:26:526:27 | ip | 0 | -| test.c:526:37:526:38 | ip | 0 | -| test.c:526:52:526:53 | ip | 0 | -| test.c:526:63:526:64 | ip | 0 | -| test.c:527:24:527:25 | ip | 0 | -| test.c:528:29:528:30 | ip | 0 | -| test.c:528:40:528:41 | ip | 0 | -| test.c:529:31:529:32 | ip | 0 | -| test.c:530:26:530:27 | ip | 0 | -| test.c:531:17:531:18 | ip | 0 | -| test.c:531:32:531:33 | ip | 0 | -| test.c:532:22:532:23 | ip | 0 | -| test.c:533:22:533:23 | ip | 0 | -| test.c:534:22:534:23 | ip | 0 | -| test.c:535:23:535:24 | ip | 0 | -| test.c:536:28:536:29 | ip | 0 | -| test.c:536:39:536:40 | ip | 0 | -| test.c:536:54:536:55 | ip | 0 | -| test.c:536:65:536:66 | ip | 0 | -| test.c:537:26:537:27 | ip | 0 | -| test.c:538:31:538:32 | ip | 0 | -| test.c:538:42:538:43 | ip | 0 | -| test.c:539:33:539:34 | ip | 0 | -| test.c:540:28:540:29 | ip | 0 | -| test.c:541:21:541:22 | ip | 0 | -| test.c:541:36:541:37 | ip | 0 | -| test.c:542:17:542:18 | ip | 0 | -| test.c:543:18:543:19 | ip | 0 | -| test.c:544:18:544:19 | ip | 0 | -| test.c:545:19:545:20 | ip | 0 | -| test.c:546:24:546:25 | ip | 0 | -| test.c:546:35:546:36 | ip | 0 | -| test.c:546:50:546:51 | ip | 0 | -| test.c:546:61:546:62 | ip | 0 | -| test.c:547:22:547:23 | ip | 0 | -| test.c:548:27:548:28 | ip | 0 | -| test.c:548:38:548:39 | ip | 0 | -| test.c:549:29:549:30 | ip | 0 | -| test.c:550:24:550:25 | ip | 0 | -| test.c:551:17:551:18 | ip | 0 | -| test.c:551:23:551:24 | ip | 0 | -| test.c:551:43:551:44 | ip | 0 | -| test.c:551:49:551:50 | ip | 0 | -| test.c:552:20:552:21 | ip | 0 | -| test.c:553:20:553:21 | ip | 0 | -| test.c:554:20:554:21 | ip | 0 | -| test.c:555:21:555:22 | ip | 0 | -| test.c:556:26:556:27 | ip | 0 | -| test.c:556:37:556:38 | ip | 0 | -| test.c:556:52:556:53 | ip | 0 | -| test.c:556:63:556:64 | ip | 0 | -| test.c:557:24:557:25 | ip | 0 | -| test.c:558:29:558:30 | ip | 0 | -| test.c:558:40:558:41 | ip | 0 | -| test.c:559:31:559:32 | ip | 0 | -| test.c:560:26:560:27 | ip | 0 | -| test.c:561:20:561:21 | ip | 0 | -| test.c:561:26:561:27 | ip | 0 | -| test.c:562:22:562:23 | ip | 0 | -| test.c:563:18:563:19 | ip | 0 | -| test.c:564:16:564:17 | ip | 0 | -| test.c:565:17:565:18 | ip | 0 | -| test.c:566:18:566:19 | ip | 0 | -| test.c:567:18:567:19 | ip | 0 | -| test.c:568:19:568:20 | ip | 0 | -| test.c:569:24:569:25 | ip | 0 | -| test.c:569:35:569:36 | ip | 0 | -| test.c:569:50:569:51 | ip | 0 | -| test.c:569:61:569:62 | ip | 0 | -| test.c:570:22:570:23 | ip | 0 | -| test.c:571:27:571:28 | ip | 0 | -| test.c:571:38:571:39 | ip | 0 | -| test.c:572:29:572:30 | ip | 0 | -| test.c:573:24:573:25 | ip | 0 | -| test.c:574:15:574:16 | ip | 0 | -| test.c:574:30:574:31 | ip | 0 | -| test.c:575:20:575:21 | ip | 0 | -| test.c:576:20:576:21 | ip | 0 | -| test.c:577:20:577:21 | ip | 0 | -| test.c:578:21:578:22 | ip | 0 | -| test.c:579:26:579:27 | ip | 0 | -| test.c:579:37:579:38 | ip | 0 | -| test.c:579:52:579:53 | ip | 0 | -| test.c:579:63:579:64 | ip | 0 | -| test.c:580:24:580:25 | ip | 0 | -| test.c:581:29:581:30 | ip | 0 | -| test.c:581:40:581:41 | ip | 0 | -| test.c:582:31:582:32 | ip | 0 | -| test.c:583:26:583:27 | ip | 0 | -| test.c:584:19:584:20 | ip | 0 | -| test.c:584:34:584:35 | ip | 0 | -| test.c:585:16:585:17 | ip | 0 | -| test.c:586:20:586:21 | ip | 0 | -| test.c:587:20:587:21 | ip | 0 | -| test.c:588:21:588:22 | ip | 0 | -| test.c:589:26:589:27 | ip | 0 | -| test.c:589:37:589:38 | ip | 0 | -| test.c:589:52:589:53 | ip | 0 | -| test.c:589:63:589:64 | ip | 0 | -| test.c:590:24:590:25 | ip | 0 | -| test.c:591:29:591:30 | ip | 0 | -| test.c:591:40:591:41 | ip | 0 | -| test.c:592:31:592:32 | ip | 0 | -| test.c:593:26:593:27 | ip | 0 | -| test.c:594:19:594:20 | ip | 0 | -| test.c:594:25:594:26 | ip | 0 | -| test.c:594:45:594:46 | ip | 0 | -| test.c:594:51:594:52 | ip | 0 | -| test.c:595:18:595:19 | ip | 0 | -| test.c:596:18:596:19 | ip | 0 | -| test.c:597:18:597:19 | ip | 0 | -| test.c:598:19:598:20 | ip | 0 | -| test.c:599:24:599:25 | ip | 0 | -| test.c:599:35:599:36 | ip | 0 | -| test.c:599:50:599:51 | ip | 0 | -| test.c:599:61:599:62 | ip | 0 | -| test.c:600:22:600:23 | ip | 0 | -| test.c:601:27:601:28 | ip | 0 | -| test.c:601:38:601:39 | ip | 0 | -| test.c:602:29:602:30 | ip | 0 | -| test.c:603:24:603:25 | ip | 0 | -| test.c:604:18:604:19 | ip | 0 | -| test.c:604:24:604:25 | ip | 0 | -| test.c:605:20:605:21 | ip | 0 | -| test.c:606:16:606:17 | ip | 0 | -| test.c:607:10:607:23 | special_number | 0 | -| test.c:615:7:615:8 | c1 | -2147483648 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | -2147483648 | -| test.c:616:13:616:13 | x | 0 | -| test.c:617:7:617:8 | c3 | -2147483648 | -| test.c:617:13:617:13 | x | 0 | -| test.c:618:7:618:8 | c4 | -2147483648 | -| test.c:618:13:618:13 | x | 0 | -| test.c:619:7:619:8 | c5 | -2147483648 | -| test.c:619:13:619:13 | x | 0 | -| test.c:620:7:620:8 | c1 | -2147483648 | -| test.c:620:13:620:14 | c2 | -2147483648 | -| test.c:620:19:620:19 | x | 0 | -| test.c:621:7:621:8 | c1 | -2147483648 | -| test.c:621:13:621:14 | c3 | -2147483648 | -| test.c:621:19:621:19 | x | 0 | -| test.c:622:7:622:8 | c1 | -2147483648 | -| test.c:622:13:622:14 | c4 | -2147483648 | -| test.c:622:19:622:19 | x | 0 | -| test.c:623:7:623:8 | c1 | -2147483648 | -| test.c:623:13:623:14 | c5 | -2147483648 | -| test.c:623:19:623:19 | x | 0 | -| test.c:624:7:624:8 | c2 | -2147483648 | -| test.c:624:13:624:14 | c3 | -2147483648 | -| test.c:624:19:624:19 | x | 0 | -| test.c:626:11:626:11 | x | 0 | -| test.c:626:15:626:15 | x | 0 | -| test.c:626:19:626:19 | x | 0 | -| test.c:626:23:626:23 | x | 0 | -| test.c:626:27:626:27 | x | 0 | -| test.c:626:31:626:31 | x | 0 | -| test.c:626:35:626:35 | x | 0 | -| test.c:626:39:626:39 | x | 0 | -| test.c:626:43:626:43 | x | 0 | -| test.c:626:47:626:47 | x | 0 | -| test.c:626:51:626:51 | x | 0 | -| test.c:626:55:626:55 | x | 0 | -| test.c:627:10:627:10 | y | -2147483648 | -| test.c:632:20:632:20 | x | 0 | -| test.c:632:30:632:30 | x | 0 | -| test.c:635:3:635:4 | y1 | 0 | -| test.c:635:11:635:11 | y | 0 | -| test.c:635:14:635:14 | y | 1 | -| test.c:636:3:636:4 | y2 | 0 | -| test.c:636:9:636:9 | y | 1 | -| test.c:636:14:636:14 | y | 2 | -| test.c:636:22:636:22 | y | 5 | -| test.c:637:10:637:11 | y1 | 1 | -| test.c:637:15:637:16 | y2 | 5 | -| test.c:645:3:645:3 | i | -2147483648 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | -2147483648 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | -2147483648 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | -2147483648 | -| test.c:656:7:656:7 | j | -2147483648 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | -2147483648 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | -2147483648 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 0 | -| test.c:670:17:670:17 | a | 3 | -| test.c:670:33:670:33 | b | 0 | -| test.c:670:38:670:38 | b | 5 | -| test.c:671:13:671:13 | a | 3 | -| test.c:671:15:671:15 | b | 5 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 15 | -| test.c:674:12:674:12 | a | 0 | -| test.c:674:17:674:17 | a | 3 | -| test.c:674:33:674:33 | b | 0 | -| test.c:674:38:674:38 | b | 0 | -| test.c:675:13:675:13 | a | 3 | -| test.c:675:15:675:15 | b | 0 | -| test.c:676:5:676:9 | total | 0 | -| test.c:676:14:676:14 | r | 0 | -| test.c:678:12:678:12 | a | 0 | -| test.c:678:17:678:17 | a | 3 | -| test.c:678:34:678:34 | b | 0 | -| test.c:678:39:678:39 | b | 13 | -| test.c:679:13:679:13 | a | 3 | -| test.c:679:15:679:15 | b | 13 | -| test.c:680:5:680:9 | total | 0 | -| test.c:680:14:680:14 | r | 39 | -| test.c:683:10:683:14 | total | 0 | -| test.c:689:12:689:12 | b | 0 | -| test.c:689:17:689:17 | b | 5 | -| test.c:690:16:690:16 | b | 5 | -| test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 55 | -| test.c:693:12:693:12 | b | 0 | -| test.c:693:17:693:17 | b | 0 | -| test.c:694:16:694:16 | b | 0 | -| test.c:695:5:695:9 | total | 0 | -| test.c:695:14:695:14 | r | 0 | -| test.c:697:13:697:13 | b | 0 | -| test.c:697:18:697:18 | b | 13 | -| test.c:698:16:698:16 | b | 13 | -| test.c:699:5:699:9 | total | 0 | -| test.c:699:14:699:14 | r | 143 | -| test.c:702:10:702:14 | total | 0 | -| test.c:707:3:707:3 | x | 0 | -| test.c:707:7:707:7 | y | 0 | -| test.c:708:3:708:4 | xy | 0 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 0 | -| test.c:715:3:715:3 | y | 0 | -| test.c:716:3:716:4 | xy | 0 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 0 | -| test.c:722:43:722:44 | ui | 10 | -| test.c:722:48:722:49 | ui | 10 | -| test.c:723:12:723:17 | result | 100 | -| test.c:725:7:725:8 | ul | 0 | -| test.c:726:28:726:29 | ul | 10 | -| test.c:726:33:726:34 | ul | 10 | -| test.c:727:12:727:17 | result | 0 | -| test.c:733:7:733:8 | ui | 0 | -| test.c:733:19:733:20 | ui | 0 | -| test.c:734:5:734:6 | ui | 2 | -| test.c:734:11:734:12 | ui | 2 | -| test.c:735:12:735:13 | ui | 4 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | -2147483648 | -| test.c:747:18:747:18 | i | -1 | -| test.c:748:5:748:5 | i | -2147483648 | -| test.c:748:13:748:13 | i | -1 | -| test.c:749:9:749:9 | i | -5 | -| test.c:751:5:751:5 | i | -2147483648 | -| test.c:751:9:751:9 | i | -5 | -| test.c:752:9:752:9 | i | -30 | -| test.c:754:5:754:5 | i | -30 | -| test.c:755:9:755:9 | i | -210 | -| test.c:757:5:757:5 | i | -210 | -| test.c:758:9:758:9 | i | -1155 | -| test.c:760:7:760:7 | i | -2147483648 | -| test.c:761:5:761:5 | i | -2147483648 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | -2147483648 | -| test.c:764:7:764:7 | i | -2147483648 | -| test.c:765:10:765:10 | i | -2147483648 | -| test.c:768:3:768:3 | i | -2147483648 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | -128 | -| test.c:777:7:777:7 | n | 0 | -| test.c:779:7:779:7 | n | 0 | -| test.c:780:9:780:9 | n | 1 | -| test.c:783:7:783:7 | n | 0 | -| test.c:784:9:784:9 | n | 1 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 0 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 1 | -| test.c:795:10:795:10 | n | 0 | -| test.c:796:5:796:5 | n | 1 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | -32768 | -| test.c:806:7:806:7 | n | 0 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 1 | -| test.c:812:7:812:7 | n | 0 | -| test.c:813:9:813:9 | n | 1 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 0 | -| test.c:819:5:819:5 | n | 1 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | -32768 | -| test.c:827:9:827:9 | n | -32768 | -| test.c:828:11:828:11 | n | 0 | -| test.c:832:7:832:7 | n | -32768 | -| test.c:833:13:833:13 | n | 5 | -| test.c:836:9:836:9 | n | 6 | -| test.c:839:7:839:7 | n | -32768 | -| test.c:839:22:839:22 | n | -32767 | -| test.c:840:9:840:9 | n | -32766 | -| test.c:843:7:843:7 | n | -32768 | -| test.c:844:5:844:5 | n | 0 | -| test.c:844:10:844:10 | n | 1 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 0 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 1 | -| test.c:856:7:856:8 | ss | -32768 | -| test.c:857:9:857:10 | ss | 0 | -| test.c:860:7:860:8 | ss | -32768 | -| test.c:861:9:861:10 | ss | -32768 | -| test.c:864:14:864:15 | us | 0 | -| test.c:865:9:865:10 | us | 0 | -| test.c:868:14:868:15 | us | 0 | -| test.c:869:9:869:10 | us | 0 | -| test.c:872:7:872:8 | ss | -32768 | -| test.c:873:9:873:10 | ss | -32768 | -| test.c:876:7:876:8 | ss | -32768 | -| test.c:877:9:877:10 | ss | -1 | -| test.c:883:8:883:8 | s | -2147483648 | -| test.c:883:15:883:15 | s | 0 | -| test.c:883:23:883:23 | s | 0 | -| test.c:884:18:884:18 | s | 0 | -| test.c:884:22:884:22 | s | 0 | -| test.c:885:9:885:14 | result | 0 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | -2147483648 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 0 | -| test.c:902:12:902:12 | s | -2147483648 | -| test.c:903:7:903:8 | s2 | -4 | -| test.c:908:7:908:7 | x | -2147483648 | -| test.c:909:9:909:9 | y | -2147483648 | -| test.c:913:7:913:7 | y | -2147483648 | -| test.c:922:7:922:7 | x | -2147483648 | -| test.c:927:7:927:7 | x | -2147483648 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:418:20:418:20 | x | 0 | +| test.c:418:30:418:30 | x | 0 | +| test.c:421:3:421:4 | y1 | 0 | +| test.c:421:11:421:11 | y | 0 | +| test.c:421:14:421:14 | y | 1 | +| test.c:422:3:422:4 | y2 | 0 | +| test.c:422:9:422:9 | y | 1 | +| test.c:422:14:422:14 | y | 2 | +| test.c:422:22:422:22 | y | 5 | +| test.c:423:10:423:11 | y1 | 1 | +| test.c:423:15:423:16 | y2 | 5 | +| test.c:431:3:431:3 | i | -2147483648 | +| test.c:432:7:432:7 | i | 10 | +| test.c:434:3:434:3 | i | -2147483648 | +| test.c:435:3:435:3 | i | 10 | +| test.c:436:7:436:7 | i | 20 | +| test.c:438:3:438:3 | i | -2147483648 | +| test.c:439:3:439:3 | i | 40 | +| test.c:440:7:440:7 | i | 30 | +| test.c:442:3:442:3 | i | -2147483648 | +| test.c:442:7:442:7 | j | -2147483648 | +| test.c:443:7:443:7 | i | 40 | +| test.c:445:3:445:3 | i | -2147483648 | +| test.c:445:8:445:8 | j | 40 | +| test.c:446:7:446:7 | i | 50 | +| test.c:448:3:448:3 | i | -2147483648 | +| test.c:448:13:448:13 | j | 50 | +| test.c:449:7:449:7 | i | 60 | +| test.c:456:12:456:12 | a | 0 | +| test.c:456:17:456:17 | a | 3 | +| test.c:456:33:456:33 | b | 0 | +| test.c:456:38:456:38 | b | 5 | +| test.c:457:13:457:13 | a | 3 | +| test.c:457:15:457:15 | b | 5 | +| test.c:458:5:458:9 | total | 0 | +| test.c:458:14:458:14 | r | 15 | +| test.c:460:12:460:12 | a | 0 | +| test.c:460:17:460:17 | a | 3 | +| test.c:460:33:460:33 | b | 0 | +| test.c:460:38:460:38 | b | 0 | +| test.c:461:13:461:13 | a | 3 | +| test.c:461:15:461:15 | b | 0 | +| test.c:462:5:462:9 | total | 0 | +| test.c:462:14:462:14 | r | 0 | +| test.c:464:12:464:12 | a | 0 | +| test.c:464:17:464:17 | a | 3 | +| test.c:464:34:464:34 | b | 0 | +| test.c:464:39:464:39 | b | 13 | +| test.c:465:13:465:13 | a | 3 | +| test.c:465:15:465:15 | b | 13 | +| test.c:466:5:466:9 | total | 0 | +| test.c:466:14:466:14 | r | 39 | +| test.c:469:10:469:14 | total | 0 | +| test.c:475:12:475:12 | b | 0 | +| test.c:475:17:475:17 | b | 5 | +| test.c:476:16:476:16 | b | 5 | +| test.c:477:5:477:9 | total | 0 | +| test.c:477:14:477:14 | r | 55 | +| test.c:479:12:479:12 | b | 0 | +| test.c:479:17:479:17 | b | 0 | +| test.c:480:16:480:16 | b | 0 | +| test.c:481:5:481:9 | total | 0 | +| test.c:481:14:481:14 | r | 0 | +| test.c:483:13:483:13 | b | 0 | +| test.c:483:18:483:18 | b | 13 | +| test.c:484:16:484:16 | b | 13 | +| test.c:485:5:485:9 | total | 0 | +| test.c:485:14:485:14 | r | 143 | +| test.c:488:10:488:14 | total | 0 | +| test.c:493:3:493:3 | x | 0 | +| test.c:493:7:493:7 | y | 0 | +| test.c:494:3:494:4 | xy | 0 | +| test.c:494:8:494:8 | x | 1000000003 | +| test.c:494:12:494:12 | y | 1000000003 | +| test.c:495:10:495:11 | xy | 1000000006000000000 | +| test.c:500:3:500:3 | x | 0 | +| test.c:501:3:501:3 | y | 0 | +| test.c:502:3:502:4 | xy | 0 | +| test.c:502:8:502:8 | x | 274177 | +| test.c:502:12:502:12 | y | 67280421310721 | +| test.c:503:10:503:11 | xy | 18446744073709551616 | +| test.c:507:7:507:8 | ui | 0 | +| test.c:508:43:508:44 | ui | 10 | +| test.c:508:48:508:49 | ui | 10 | +| test.c:509:12:509:17 | result | 100 | +| test.c:511:7:511:8 | ul | 0 | +| test.c:512:28:512:29 | ul | 10 | +| test.c:512:33:512:34 | ul | 10 | +| test.c:513:12:513:17 | result | 0 | +| test.c:519:7:519:8 | ui | 0 | +| test.c:519:19:519:20 | ui | 0 | +| test.c:520:5:520:6 | ui | 2 | +| test.c:520:11:520:12 | ui | 2 | +| test.c:521:12:521:13 | ui | 4 | +| test.c:525:3:525:9 | uiconst | 10 | +| test.c:528:3:528:9 | ulconst | 10 | +| test.c:529:10:529:16 | uiconst | 40 | +| test.c:529:20:529:26 | ulconst | 40 | +| test.c:533:7:533:7 | i | -2147483648 | +| test.c:533:18:533:18 | i | -1 | +| test.c:534:5:534:5 | i | -2147483648 | +| test.c:534:13:534:13 | i | -1 | +| test.c:535:9:535:9 | i | -5 | +| test.c:537:5:537:5 | i | -2147483648 | +| test.c:537:9:537:9 | i | -5 | +| test.c:538:9:538:9 | i | -30 | +| test.c:540:5:540:5 | i | -30 | +| test.c:541:9:541:9 | i | -210 | +| test.c:543:5:543:5 | i | -210 | +| test.c:544:9:544:9 | i | -1155 | +| test.c:546:7:546:7 | i | -2147483648 | +| test.c:547:5:547:5 | i | -2147483648 | +| test.c:547:9:547:9 | i | -1 | +| test.c:548:9:548:9 | i | 1 | +| test.c:550:3:550:3 | i | -2147483648 | +| test.c:550:7:550:7 | i | -2147483648 | +| test.c:551:10:551:10 | i | -2147483648 | +| test.c:554:3:554:3 | i | -2147483648 | +| test.c:554:10:554:11 | sc | 1 | +| test.c:556:7:556:7 | i | -128 | +| test.c:563:7:563:7 | n | 0 | +| test.c:565:7:565:7 | n | 0 | +| test.c:566:9:566:9 | n | 1 | +| test.c:569:7:569:7 | n | 0 | +| test.c:570:9:570:9 | n | 1 | +| test.c:572:9:572:9 | n | 0 | +| test.c:575:8:575:8 | n | 0 | +| test.c:576:9:576:9 | n | 0 | +| test.c:578:9:578:9 | n | 1 | +| test.c:581:10:581:10 | n | 0 | +| test.c:582:5:582:5 | n | 1 | +| test.c:585:7:585:7 | n | 0 | +| test.c:589:7:589:7 | n | -32768 | +| test.c:592:7:592:7 | n | 0 | +| test.c:593:9:593:9 | n | 0 | +| test.c:595:9:595:9 | n | 1 | +| test.c:598:7:598:7 | n | 0 | +| test.c:599:9:599:9 | n | 1 | +| test.c:601:9:601:9 | n | 0 | +| test.c:604:10:604:10 | n | 0 | +| test.c:605:5:605:5 | n | 1 | +| test.c:608:7:608:7 | n | 0 | +| test.c:612:7:612:7 | n | -32768 | +| test.c:613:9:613:9 | n | -32768 | +| test.c:614:11:614:11 | n | 0 | +| test.c:618:7:618:7 | n | -32768 | +| test.c:619:13:619:13 | n | 5 | +| test.c:622:9:622:9 | n | 6 | +| test.c:625:7:625:7 | n | -32768 | +| test.c:625:22:625:22 | n | -32767 | +| test.c:626:9:626:9 | n | -32766 | +| test.c:629:7:629:7 | n | -32768 | +| test.c:630:5:630:5 | n | 0 | +| test.c:630:10:630:10 | n | 1 | +| test.c:630:14:630:14 | n | 0 | +| test.c:631:6:631:6 | n | 0 | +| test.c:631:10:631:10 | n | 0 | +| test.c:631:14:631:14 | n | 1 | +| test.c:642:7:642:8 | ss | -32768 | +| test.c:643:9:643:10 | ss | 0 | +| test.c:646:7:646:8 | ss | -32768 | +| test.c:647:9:647:10 | ss | -32768 | +| test.c:650:14:650:15 | us | 0 | +| test.c:651:9:651:10 | us | 0 | +| test.c:654:14:654:15 | us | 0 | +| test.c:655:9:655:10 | us | 0 | +| test.c:658:7:658:8 | ss | -32768 | +| test.c:659:9:659:10 | ss | -32768 | +| test.c:662:7:662:8 | ss | -32768 | +| test.c:663:9:663:10 | ss | -1 | +| test.c:669:8:669:8 | s | -2147483648 | +| test.c:669:15:669:15 | s | 0 | +| test.c:669:23:669:23 | s | 0 | +| test.c:670:18:670:18 | s | 0 | +| test.c:670:22:670:22 | s | 0 | +| test.c:671:9:671:14 | result | 0 | +| test.c:677:7:677:7 | i | 0 | +| test.c:678:9:678:9 | i | -2147483648 | +| test.c:682:7:682:7 | u | 0 | +| test.c:683:9:683:9 | u | 0 | +| test.c:688:12:688:12 | s | -2147483648 | +| test.c:689:7:689:8 | s2 | -4 | +| test.c:694:7:694:7 | x | -2147483648 | +| test.c:695:9:695:9 | y | -2147483648 | +| test.c:699:7:699:7 | y | -2147483648 | +| test.c:708:7:708:7 | x | -2147483648 | +| test.c:713:7:713:7 | x | -2147483648 | +| test.c:720:8:720:8 | x | 2147483647 | +| test.c:720:12:720:12 | y | 256 | +| test.c:721:9:721:9 | x | 2147483647 | +| test.c:722:9:722:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected deleted file mode 100644 index c5905117615..00000000000 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ /dev/null @@ -1,4605 +0,0 @@ -| inline_assembly.c:9:20:9:20 | 0 | 1.0 | -| inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | -| inline_assembly.c:10:3:10:3 | y | 1.0 | -| inline_assembly.c:10:3:10:7 | ... = ... | 1.0 | -| inline_assembly.c:10:7:10:7 | 1 | 1.0 | -| inline_assembly.c:10:7:10:7 | (unsigned int)... | 1.0 | -| inline_assembly.c:12:3:12:8 | call to printf | 1.0 | -| inline_assembly.c:12:29:12:29 | x | 1.0 | -| inline_assembly.c:12:32:12:32 | y | 1.0 | -| inline_assembly.c:16:25:16:25 | x | 1.0 | -| inline_assembly.c:16:35:16:35 | y | 1.0 | -| inline_assembly.c:21:3:21:8 | call to printf | 1.0 | -| inline_assembly.c:21:29:21:29 | x | 1.0 | -| inline_assembly.c:21:32:21:32 | y | 1.0 | -| inline_assembly.c:23:10:23:10 | 0 | 1.0 | -| minmax.c:16:9:16:10 | 1 | 1.0 | -| minmax.c:16:16:16:17 | 2 | 1.0 | -| minmax.c:16:23:16:24 | 3 | 1.0 | -| minmax.c:18:2:18:7 | call to printf | 1.0 | -| minmax.c:18:37:18:37 | x | 1.0 | -| minmax.c:18:40:18:40 | y | 1.0 | -| minmax.c:18:43:18:43 | z | 1.0 | -| minmax.c:20:2:20:2 | z | 1.0 | -| minmax.c:20:2:24:3 | ... = ... | 2.0 | -| minmax.c:20:6:24:3 | (statement expression) | 2.0 | -| minmax.c:21:10:21:11 | 0 | 1.0 | -| minmax.c:22:7:22:14 | ... != ... | 1.0 | -| minmax.c:22:8:22:8 | x | 1.0 | -| minmax.c:22:14:22:14 | y | 1.0 | -| minmax.c:22:18:22:18 | t | 1.0 | -| minmax.c:22:18:22:22 | ... = ... | 1.0 | -| minmax.c:22:22:22:22 | x | 1.0 | -| minmax.c:23:3:23:3 | t | 2.0 | -| minmax.c:26:2:26:7 | call to printf | 1.0 | -| minmax.c:26:37:26:37 | x | 1.0 | -| minmax.c:26:40:26:40 | y | 1.0 | -| minmax.c:26:43:26:43 | z | 2.0 | -| test.c:6:14:6:15 | 0 | 1.0 | -| test.c:8:5:8:9 | count | 1.0 | -| test.c:8:5:8:19 | ... = ... | 13.0 | -| test.c:8:13:8:17 | count | 13.0 | -| test.c:8:13:8:19 | ... + ... | 13.0 | -| test.c:8:19:8:19 | 1 | 1.0 | -| test.c:10:10:10:14 | count | 13.0 | -| test.c:14:14:14:15 | 0 | 1.0 | -| test.c:16:5:16:9 | count | 1.0 | -| test.c:16:5:16:26 | ... = ... | 13.0 | -| test.c:16:13:16:21 | (...) | 13.0 | -| test.c:16:13:16:26 | ... % ... | 13.0 | -| test.c:16:14:16:18 | count | 13.0 | -| test.c:16:14:16:20 | ... + ... | 13.0 | -| test.c:16:20:16:20 | 1 | 1.0 | -| test.c:16:25:16:26 | 10 | 1.0 | -| test.c:18:10:18:14 | count | 13.0 | -| test.c:22:14:22:15 | 0 | 1.0 | -| test.c:24:5:24:9 | count | 13.0 | -| test.c:24:5:24:11 | ... ++ | 13.0 | -| test.c:25:5:25:9 | count | 1.0 | -| test.c:25:5:25:22 | ... = ... | 13.0 | -| test.c:25:13:25:17 | count | 13.0 | -| test.c:25:13:25:22 | ... % ... | 13.0 | -| test.c:25:21:25:22 | 10 | 1.0 | -| test.c:27:10:27:14 | count | 13.0 | -| test.c:31:10:31:11 | 0 | 1.0 | -| test.c:32:14:32:15 | 0 | 1.0 | -| test.c:33:8:33:8 | i | 1.0 | -| test.c:33:8:33:12 | ... = ... | 1.0 | -| test.c:33:12:33:12 | 0 | 1.0 | -| test.c:33:15:33:15 | i | 13.0 | -| test.c:33:15:33:19 | ... < ... | 1.0 | -| test.c:33:19:33:19 | 2 | 1.0 | -| test.c:33:22:33:22 | i | 1.0 | -| test.c:33:22:33:28 | ... = ... | 13.0 | -| test.c:33:26:33:26 | i | 13.0 | -| test.c:33:26:33:28 | ... + ... | 13.0 | -| test.c:33:28:33:28 | 1 | 1.0 | -| test.c:34:5:34:9 | total | 13.0 | -| test.c:34:5:34:14 | ... += ... | 13.0 | -| test.c:34:14:34:14 | i | 13.0 | -| test.c:36:10:36:14 | total | 13.0 | -| test.c:36:10:36:18 | ... + ... | 13.0 | -| test.c:36:18:36:18 | i | 13.0 | -| test.c:40:10:40:11 | 0 | 1.0 | -| test.c:41:14:41:15 | 0 | 1.0 | -| test.c:42:8:42:8 | i | 1.0 | -| test.c:42:8:42:12 | ... = ... | 1.0 | -| test.c:42:12:42:12 | 0 | 1.0 | -| test.c:42:15:42:15 | i | 13.0 | -| test.c:42:15:42:19 | ... < ... | 1.0 | -| test.c:42:19:42:19 | 2 | 1.0 | -| test.c:42:22:42:22 | i | 13.0 | -| test.c:42:22:42:24 | ... ++ | 13.0 | -| test.c:43:5:43:9 | total | 13.0 | -| test.c:43:5:43:14 | ... += ... | 13.0 | -| test.c:43:14:43:14 | i | 13.0 | -| test.c:45:10:45:14 | total | 13.0 | -| test.c:45:10:45:18 | ... + ... | 13.0 | -| test.c:45:18:45:18 | i | 13.0 | -| test.c:49:10:49:11 | 0 | 1.0 | -| test.c:50:14:50:15 | 0 | 1.0 | -| test.c:51:8:51:8 | i | 1.0 | -| test.c:51:8:51:12 | ... = ... | 1.0 | -| test.c:51:12:51:12 | 0 | 1.0 | -| test.c:51:15:51:15 | i | 13.0 | -| test.c:51:15:51:17 | ... + ... | 13.0 | -| test.c:51:15:51:21 | ... < ... | 1.0 | -| test.c:51:17:51:17 | 2 | 1.0 | -| test.c:51:21:51:21 | 4 | 1.0 | -| test.c:51:24:51:24 | i | 1.0 | -| test.c:51:24:51:30 | ... = ... | 13.0 | -| test.c:51:28:51:28 | i | 13.0 | -| test.c:51:28:51:30 | ... + ... | 13.0 | -| test.c:51:30:51:30 | 1 | 1.0 | -| test.c:52:5:52:9 | total | 13.0 | -| test.c:52:5:52:14 | ... += ... | 13.0 | -| test.c:52:14:52:14 | i | 13.0 | -| test.c:54:10:54:14 | total | 13.0 | -| test.c:54:10:54:18 | ... + ... | 13.0 | -| test.c:54:18:54:18 | i | 13.0 | -| test.c:58:7:58:7 | i | 1.0 | -| test.c:58:7:58:11 | ... < ... | 1.0 | -| test.c:58:11:58:11 | 4 | 1.0 | -| test.c:59:9:59:9 | i | 1.0 | -| test.c:59:9:59:13 | ... < ... | 1.0 | -| test.c:59:13:59:13 | 5 | 1.0 | -| test.c:60:14:60:14 | i | 1.0 | -| test.c:63:10:63:10 | 1 | 1.0 | -| test.c:67:7:67:11 | - ... | 1.0 | -| test.c:67:7:67:15 | ... < ... | 1.0 | -| test.c:67:7:67:25 | ... && ... | 1.0 | -| test.c:67:8:67:11 | 1000 | 1.0 | -| test.c:67:15:67:15 | y | 1.0 | -| test.c:67:20:67:20 | y | 1.0 | -| test.c:67:20:67:25 | ... < ... | 1.0 | -| test.c:67:24:67:25 | 10 | 1.0 | -| test.c:68:9:68:9 | x | 1.0 | -| test.c:68:9:68:15 | ... < ... | 1.0 | -| test.c:68:13:68:13 | y | 1.0 | -| test.c:68:13:68:15 | ... - ... | 1.0 | -| test.c:68:15:68:15 | 2 | 1.0 | -| test.c:69:14:69:14 | x | 1.0 | -| test.c:72:10:72:10 | y | 1.0 | -| test.c:76:7:76:7 | y | 1.0 | -| test.c:76:7:76:12 | ... == ... | 1.0 | -| test.c:76:12:76:12 | 0 | 1.0 | -| test.c:77:9:77:9 | x | 1.0 | -| test.c:77:9:77:13 | ... < ... | 1.0 | -| test.c:77:13:77:13 | 4 | 1.0 | -| test.c:78:14:78:14 | 0 | 1.0 | -| test.c:81:9:81:9 | x | 1.0 | -| test.c:81:9:81:13 | ... < ... | 1.0 | -| test.c:81:13:81:13 | 4 | 1.0 | -| test.c:82:14:82:14 | 1 | 1.0 | -| test.c:85:10:85:10 | x | 1.0 | -| test.c:89:7:89:7 | y | 1.0 | -| test.c:89:7:89:11 | ... > ... | 1.0 | -| test.c:89:11:89:11 | 7 | 1.0 | -| test.c:90:9:90:9 | x | 1.0 | -| test.c:90:9:90:13 | ... < ... | 1.0 | -| test.c:90:13:90:13 | y | 1.0 | -| test.c:91:14:91:14 | 0 | 1.0 | -| test.c:93:12:93:12 | x | 1.0 | -| test.c:95:10:95:10 | 1 | 1.0 | -| test.c:100:3:100:3 | c | 1.0 | -| test.c:100:3:100:8 | ... = ... | 1.0 | -| test.c:100:7:100:8 | * ... | 1.0 | -| test.c:101:7:101:7 | (int)... | 1.0 | -| test.c:101:7:101:7 | c | 1.0 | -| test.c:101:7:101:15 | ... != ... | 1.0 | -| test.c:101:12:101:15 | 0 | 1.0 | -| test.c:102:5:102:8 | * ... | 1.0 | -| test.c:102:5:102:15 | ... = ... | 1.0 | -| test.c:102:12:102:15 | 0 | 1.0 | -| test.c:102:12:102:15 | (char)... | 1.0 | -| test.c:104:7:104:7 | (int)... | 2.0 | -| test.c:104:7:104:7 | c | 2.0 | -| test.c:104:7:104:14 | ... == ... | 1.0 | -| test.c:104:12:104:14 | 58 | 1.0 | -| test.c:105:5:105:5 | c | 1.0 | -| test.c:105:5:105:10 | ... = ... | 1.0 | -| test.c:105:9:105:10 | * ... | 1.0 | -| test.c:106:9:106:9 | (int)... | 1.0 | -| test.c:106:9:106:9 | c | 1.0 | -| test.c:106:9:106:17 | ... != ... | 1.0 | -| test.c:106:14:106:17 | 0 | 1.0 | -| test.c:107:7:107:10 | * ... | 1.0 | -| test.c:107:7:107:17 | ... = ... | 1.0 | -| test.c:107:14:107:17 | 0 | 1.0 | -| test.c:107:14:107:17 | (char)... | 1.0 | -| test.c:109:9:109:9 | (int)... | 2.0 | -| test.c:109:9:109:9 | c | 2.0 | -| test.c:109:9:109:16 | ... != ... | 1.0 | -| test.c:109:14:109:16 | 44 | 1.0 | -| test.c:110:14:110:14 | 1 | 1.0 | -| test.c:112:10:112:10 | 0 | 1.0 | -| test.c:118:24:118:24 | 0 | 1.0 | -| test.c:118:24:118:24 | (size_type)... | 1.0 | -| test.c:119:10:119:10 | n | 1.0 | -| test.c:119:10:119:12 | ... ++ | 1.0 | -| test.c:123:22:123:22 | 0 | 1.0 | -| test.c:123:22:123:22 | (size_type)... | 1.0 | -| test.c:124:11:124:15 | Start | 13.0 | -| test.c:124:11:124:36 | ... <= ... | 1.0 | -| test.c:124:20:124:32 | call to test12_helper | 1.0 | -| test.c:124:20:124:36 | ... - ... | 1.0 | -| test.c:124:36:124:36 | 1 | 1.0 | -| test.c:124:36:124:36 | (unsigned long long)... | 1.0 | -| test.c:126:31:126:43 | call to test12_helper | 1.0 | -| test.c:127:6:127:10 | Start | 13.0 | -| test.c:127:6:127:24 | ... += ... | 13.0 | -| test.c:127:15:127:20 | Length | 1.0 | -| test.c:127:15:127:24 | ... + ... | 1.0 | -| test.c:127:24:127:24 | 1 | 1.0 | -| test.c:127:24:127:24 | (unsigned long long)... | 1.0 | -| test.c:130:11:130:11 | 1 | 1.0 | -| test.c:135:22:135:22 | (unsigned char)... | 1.0 | -| test.c:135:22:135:22 | c | 1.0 | -| test.c:136:20:136:20 | 0 | 1.0 | -| test.c:136:20:136:20 | (unsigned int)... | 1.0 | -| test.c:137:20:137:20 | x | 1.0 | -| test.c:137:20:137:22 | ... - ... | 1.0 | -| test.c:137:22:137:22 | 1 | 1.0 | -| test.c:137:22:137:22 | (unsigned int)... | 1.0 | -| test.c:138:11:138:11 | i | 1.0 | -| test.c:138:11:138:13 | ... + ... | 1.0 | -| test.c:138:13:138:13 | 1 | 1.0 | -| test.c:139:10:139:41 | (double)... | 1.0 | -| test.c:139:10:139:41 | (int)... | 1.0 | -| test.c:139:18:139:41 | (...) | 1.0 | -| test.c:139:19:139:19 | (int)... | 1.0 | -| test.c:139:19:139:19 | c | 1.0 | -| test.c:139:19:139:23 | ... + ... | 1.0 | -| test.c:139:19:139:28 | (unsigned int)... | 1.0 | -| test.c:139:19:139:28 | ... + ... | 1.0 | -| test.c:139:19:139:32 | ... + ... | 1.0 | -| test.c:139:19:139:36 | ... + ... | 1.0 | -| test.c:139:19:139:40 | ... + ... | 1.0 | -| test.c:139:23:139:23 | i | 1.0 | -| test.c:139:27:139:28 | (int)... | 1.0 | -| test.c:139:27:139:28 | uc | 1.0 | -| test.c:139:32:139:32 | x | 1.0 | -| test.c:139:36:139:36 | y | 1.0 | -| test.c:139:40:139:40 | (unsigned int)... | 1.0 | -| test.c:139:40:139:40 | z | 1.0 | -| test.c:144:12:144:23 | (int)... | 1.0 | -| test.c:144:17:144:23 | (char)... | 1.0 | -| test.c:144:23:144:23 | x | 1.0 | -| test.c:145:12:145:32 | (int)... | 1.0 | -| test.c:145:17:145:32 | (unsigned char)... | 1.0 | -| test.c:145:32:145:32 | x | 1.0 | -| test.c:146:12:146:33 | (int)... | 1.0 | -| test.c:146:17:146:33 | (unsigned short)... | 1.0 | -| test.c:146:33:146:33 | x | 1.0 | -| test.c:147:12:147:31 | (int)... | 1.0 | -| test.c:147:17:147:31 | (unsigned int)... | 1.0 | -| test.c:147:31:147:31 | x | 1.0 | -| test.c:148:13:148:13 | (char)... | 1.0 | -| test.c:148:13:148:13 | x | 1.0 | -| test.c:149:23:149:23 | (unsigned short)... | 1.0 | -| test.c:149:23:149:23 | x | 1.0 | -| test.c:150:10:150:11 | x0 | 1.0 | -| test.c:150:10:150:16 | ... + ... | 1.0 | -| test.c:150:10:150:21 | ... + ... | 1.0 | -| test.c:150:10:150:26 | ... + ... | 1.0 | -| test.c:150:10:150:31 | ... + ... | 1.0 | -| test.c:150:10:150:36 | ... + ... | 1.0 | -| test.c:150:15:150:16 | x1 | 1.0 | -| test.c:150:20:150:21 | x2 | 1.0 | -| test.c:150:25:150:26 | x3 | 1.0 | -| test.c:150:30:150:31 | (int)... | 1.0 | -| test.c:150:30:150:31 | c0 | 1.0 | -| test.c:150:35:150:36 | (int)... | 1.0 | -| test.c:150:35:150:36 | s0 | 1.0 | -| test.c:154:10:154:31 | (...) | 1.0 | -| test.c:154:10:154:40 | ... ? ... : ... | 1.0 | -| test.c:154:11:154:11 | x | 1.0 | -| test.c:154:11:154:15 | ... > ... | 1.0 | -| test.c:154:11:154:30 | ... && ... | 1.0 | -| test.c:154:15:154:15 | 0 | 1.0 | -| test.c:154:15:154:15 | (long long)... | 1.0 | -| test.c:154:20:154:20 | x | 1.0 | -| test.c:154:20:154:30 | ... == ... | 1.0 | -| test.c:154:25:154:30 | (int)... | 1.0 | -| test.c:154:25:154:30 | (long long)... | 1.0 | -| test.c:154:30:154:30 | x | 1.0 | -| test.c:154:35:154:35 | x | 1.0 | -| test.c:154:39:154:40 | (long long)... | 1.0 | -| test.c:154:39:154:40 | - ... | 1.0 | -| test.c:154:40:154:40 | 1 | 1.0 | -| test.c:159:14:159:15 | 0 | 1.0 | -| test.c:161:7:161:7 | 3 | 1.0 | -| test.c:161:7:161:12 | ... <= ... | 1.0 | -| test.c:161:7:161:23 | ... && ... | 1.0 | -| test.c:161:12:161:12 | a | 1.0 | -| test.c:161:17:161:17 | a | 1.0 | -| test.c:161:17:161:23 | ... <= ... | 1.0 | -| test.c:161:22:161:23 | 11 | 1.0 | -| test.c:162:13:162:14 | + ... | 1.0 | -| test.c:162:14:162:14 | a | 1.0 | -| test.c:163:13:163:14 | - ... | 1.0 | -| test.c:163:14:163:14 | a | 1.0 | -| test.c:164:5:164:9 | total | 1.0 | -| test.c:164:5:164:16 | ... += ... | 1.0 | -| test.c:164:14:164:14 | b | 1.0 | -| test.c:164:14:164:16 | ... + ... | 1.0 | -| test.c:164:16:164:16 | c | 1.0 | -| test.c:166:7:166:7 | 0 | 1.0 | -| test.c:166:7:166:12 | ... <= ... | 1.0 | -| test.c:166:7:166:23 | ... && ... | 1.0 | -| test.c:166:12:166:12 | a | 2.0 | -| test.c:166:17:166:17 | a | 2.0 | -| test.c:166:17:166:23 | ... <= ... | 1.0 | -| test.c:166:22:166:23 | 11 | 1.0 | -| test.c:167:13:167:14 | + ... | 2.0 | -| test.c:167:14:167:14 | a | 2.0 | -| test.c:168:13:168:14 | - ... | 2.0 | -| test.c:168:14:168:14 | a | 2.0 | -| test.c:169:5:169:9 | total | 2.0 | -| test.c:169:5:169:16 | ... += ... | 8.0 | -| test.c:169:14:169:14 | b | 2.0 | -| test.c:169:14:169:16 | ... + ... | 4.0 | -| test.c:169:16:169:16 | c | 2.0 | -| test.c:171:7:171:8 | - ... | 1.0 | -| test.c:171:7:171:13 | ... <= ... | 1.0 | -| test.c:171:7:171:24 | ... && ... | 1.0 | -| test.c:171:8:171:8 | 7 | 1.0 | -| test.c:171:13:171:13 | a | 3.0 | -| test.c:171:18:171:18 | a | 3.0 | -| test.c:171:18:171:24 | ... <= ... | 1.0 | -| test.c:171:23:171:24 | 11 | 1.0 | -| test.c:172:13:172:14 | + ... | 3.0 | -| test.c:172:14:172:14 | a | 3.0 | -| test.c:173:13:173:14 | - ... | 3.0 | -| test.c:173:14:173:14 | a | 3.0 | -| test.c:174:5:174:9 | total | 10.0 | -| test.c:174:5:174:16 | ... += ... | 90.0 | -| test.c:174:14:174:14 | b | 3.0 | -| test.c:174:14:174:16 | ... + ... | 9.0 | -| test.c:174:16:174:16 | c | 3.0 | -| test.c:176:7:176:8 | - ... | 1.0 | -| test.c:176:7:176:13 | ... <= ... | 1.0 | -| test.c:176:7:176:23 | ... && ... | 1.0 | -| test.c:176:8:176:8 | 7 | 1.0 | -| test.c:176:13:176:13 | a | 4.0 | -| test.c:176:18:176:18 | a | 4.0 | -| test.c:176:18:176:23 | ... <= ... | 1.0 | -| test.c:176:23:176:23 | 1 | 1.0 | -| test.c:177:13:177:14 | + ... | 4.0 | -| test.c:177:14:177:14 | a | 4.0 | -| test.c:178:13:178:14 | - ... | 4.0 | -| test.c:178:14:178:14 | a | 4.0 | -| test.c:179:5:179:9 | total | 100.0 | -| test.c:179:5:179:16 | ... += ... | 1600.0 | -| test.c:179:14:179:14 | b | 4.0 | -| test.c:179:14:179:16 | ... + ... | 16.0 | -| test.c:179:16:179:16 | c | 4.0 | -| test.c:181:7:181:8 | - ... | 1.0 | -| test.c:181:7:181:13 | ... <= ... | 1.0 | -| test.c:181:7:181:23 | ... && ... | 1.0 | -| test.c:181:8:181:8 | 7 | 1.0 | -| test.c:181:13:181:13 | a | 5.0 | -| test.c:181:18:181:18 | a | 5.0 | -| test.c:181:18:181:23 | ... <= ... | 1.0 | -| test.c:181:23:181:23 | 0 | 1.0 | -| test.c:182:13:182:14 | + ... | 5.0 | -| test.c:182:14:182:14 | a | 5.0 | -| test.c:183:13:183:14 | - ... | 5.0 | -| test.c:183:14:183:14 | a | 5.0 | -| test.c:184:5:184:9 | total | 1700.0 | -| test.c:184:5:184:16 | ... += ... | 42500.0 | -| test.c:184:14:184:14 | b | 5.0 | -| test.c:184:14:184:16 | ... + ... | 25.0 | -| test.c:184:16:184:16 | c | 5.0 | -| test.c:186:7:186:8 | - ... | 1.0 | -| test.c:186:7:186:13 | ... <= ... | 1.0 | -| test.c:186:7:186:24 | ... && ... | 1.0 | -| test.c:186:8:186:8 | 7 | 1.0 | -| test.c:186:13:186:13 | a | 6.0 | -| test.c:186:18:186:18 | a | 6.0 | -| test.c:186:18:186:24 | ... <= ... | 1.0 | -| test.c:186:23:186:24 | - ... | 1.0 | -| test.c:186:24:186:24 | 2 | 1.0 | -| test.c:187:13:187:14 | + ... | 6.0 | -| test.c:187:14:187:14 | a | 6.0 | -| test.c:188:13:188:14 | - ... | 6.0 | -| test.c:188:14:188:14 | a | 6.0 | -| test.c:189:5:189:9 | total | 44200.0 | -| test.c:189:5:189:16 | ... += ... | 1591200.0 | -| test.c:189:14:189:14 | b | 6.0 | -| test.c:189:14:189:16 | ... + ... | 36.0 | -| test.c:189:16:189:16 | c | 6.0 | -| test.c:192:10:192:14 | total | 1635400.0 | -| test.c:198:14:198:15 | 0 | 1.0 | -| test.c:200:7:200:7 | 3 | 1.0 | -| test.c:200:7:200:12 | ... <= ... | 1.0 | -| test.c:200:7:200:23 | ... && ... | 1.0 | -| test.c:200:7:200:33 | ... && ... | 1.0 | -| test.c:200:7:200:44 | ... && ... | 1.0 | -| test.c:200:12:200:12 | a | 1.0 | -| test.c:200:17:200:17 | a | 1.0 | -| test.c:200:17:200:23 | ... <= ... | 1.0 | -| test.c:200:22:200:23 | 11 | 1.0 | -| test.c:200:28:200:28 | 5 | 1.0 | -| test.c:200:28:200:33 | ... <= ... | 1.0 | -| test.c:200:33:200:33 | b | 1.0 | -| test.c:200:38:200:38 | b | 1.0 | -| test.c:200:38:200:44 | ... <= ... | 1.0 | -| test.c:200:43:200:44 | 23 | 1.0 | -| test.c:201:13:201:13 | a | 1.0 | -| test.c:201:13:201:15 | ... * ... | 1.0 | -| test.c:201:15:201:15 | b | 1.0 | -| test.c:202:5:202:9 | total | 1.0 | -| test.c:202:5:202:14 | ... += ... | 1.0 | -| test.c:202:14:202:14 | r | 1.0 | -| test.c:204:7:204:7 | 3 | 1.0 | -| test.c:204:7:204:12 | ... <= ... | 1.0 | -| test.c:204:7:204:23 | ... && ... | 1.0 | -| test.c:204:7:204:33 | ... && ... | 1.0 | -| test.c:204:7:204:44 | ... && ... | 1.0 | -| test.c:204:12:204:12 | a | 2.0 | -| test.c:204:17:204:17 | a | 2.0 | -| test.c:204:17:204:23 | ... <= ... | 1.0 | -| test.c:204:22:204:23 | 11 | 1.0 | -| test.c:204:28:204:28 | 0 | 1.0 | -| test.c:204:28:204:33 | ... <= ... | 1.0 | -| test.c:204:33:204:33 | b | 3.0 | -| test.c:204:38:204:38 | b | 3.0 | -| test.c:204:38:204:44 | ... <= ... | 1.0 | -| test.c:204:43:204:44 | 23 | 1.0 | -| test.c:205:13:205:13 | a | 2.0 | -| test.c:205:13:205:15 | ... * ... | 1.0 | -| test.c:205:15:205:15 | b | 3.0 | -| test.c:206:5:206:9 | total | 2.0 | -| test.c:206:5:206:14 | ... += ... | 2.0 | -| test.c:206:14:206:14 | r | 1.0 | -| test.c:208:7:208:7 | 3 | 1.0 | -| test.c:208:7:208:12 | ... <= ... | 1.0 | -| test.c:208:7:208:23 | ... && ... | 1.0 | -| test.c:208:7:208:35 | ... && ... | 1.0 | -| test.c:208:7:208:46 | ... && ... | 1.0 | -| test.c:208:12:208:12 | a | 3.0 | -| test.c:208:17:208:17 | a | 3.0 | -| test.c:208:17:208:23 | ... <= ... | 1.0 | -| test.c:208:22:208:23 | 11 | 1.0 | -| test.c:208:28:208:30 | - ... | 1.0 | -| test.c:208:28:208:35 | ... <= ... | 1.0 | -| test.c:208:29:208:30 | 13 | 1.0 | -| test.c:208:35:208:35 | b | 7.0 | -| test.c:208:40:208:40 | b | 7.0 | -| test.c:208:40:208:46 | ... <= ... | 1.0 | -| test.c:208:45:208:46 | 23 | 1.0 | -| test.c:209:13:209:13 | a | 3.0 | -| test.c:209:13:209:15 | ... * ... | 1.0 | -| test.c:209:15:209:15 | b | 7.0 | -| test.c:210:5:210:9 | total | 4.0 | -| test.c:210:5:210:14 | ... += ... | 4.0 | -| test.c:210:14:210:14 | r | 1.0 | -| test.c:212:7:212:7 | 3 | 1.0 | -| test.c:212:7:212:12 | ... <= ... | 1.0 | -| test.c:212:7:212:23 | ... && ... | 1.0 | -| test.c:212:7:212:35 | ... && ... | 1.0 | -| test.c:212:7:212:45 | ... && ... | 1.0 | -| test.c:212:12:212:12 | a | 4.0 | -| test.c:212:17:212:17 | a | 4.0 | -| test.c:212:17:212:23 | ... <= ... | 1.0 | -| test.c:212:22:212:23 | 11 | 1.0 | -| test.c:212:28:212:30 | - ... | 1.0 | -| test.c:212:28:212:35 | ... <= ... | 1.0 | -| test.c:212:29:212:30 | 13 | 1.0 | -| test.c:212:35:212:35 | b | 15.0 | -| test.c:212:40:212:40 | b | 15.0 | -| test.c:212:40:212:45 | ... <= ... | 1.0 | -| test.c:212:45:212:45 | 0 | 1.0 | -| test.c:213:13:213:13 | a | 4.0 | -| test.c:213:13:213:15 | ... * ... | 1.0 | -| test.c:213:15:213:15 | b | 15.0 | -| test.c:214:5:214:9 | total | 8.0 | -| test.c:214:5:214:14 | ... += ... | 8.0 | -| test.c:214:14:214:14 | r | 1.0 | -| test.c:216:7:216:7 | 3 | 1.0 | -| test.c:216:7:216:12 | ... <= ... | 1.0 | -| test.c:216:7:216:23 | ... && ... | 1.0 | -| test.c:216:7:216:35 | ... && ... | 1.0 | -| test.c:216:7:216:46 | ... && ... | 1.0 | -| test.c:216:12:216:12 | a | 5.0 | -| test.c:216:17:216:17 | a | 5.0 | -| test.c:216:17:216:23 | ... <= ... | 1.0 | -| test.c:216:22:216:23 | 11 | 1.0 | -| test.c:216:28:216:30 | - ... | 1.0 | -| test.c:216:28:216:35 | ... <= ... | 1.0 | -| test.c:216:29:216:30 | 13 | 1.0 | -| test.c:216:35:216:35 | b | 31.0 | -| test.c:216:40:216:40 | b | 31.0 | -| test.c:216:40:216:46 | ... <= ... | 1.0 | -| test.c:216:45:216:46 | - ... | 1.0 | -| test.c:216:46:216:46 | 7 | 1.0 | -| test.c:217:13:217:13 | a | 5.0 | -| test.c:217:13:217:15 | ... * ... | 1.0 | -| test.c:217:15:217:15 | b | 31.0 | -| test.c:218:5:218:9 | total | 16.0 | -| test.c:218:5:218:14 | ... += ... | 16.0 | -| test.c:218:14:218:14 | r | 1.0 | -| test.c:221:10:221:14 | total | 32.0 | -| test.c:226:14:226:15 | 0 | 1.0 | -| test.c:228:7:228:7 | 0 | 1.0 | -| test.c:228:7:228:12 | ... <= ... | 1.0 | -| test.c:228:7:228:23 | ... && ... | 1.0 | -| test.c:228:7:228:33 | ... && ... | 1.0 | -| test.c:228:7:228:44 | ... && ... | 1.0 | -| test.c:228:12:228:12 | a | 1.0 | -| test.c:228:17:228:17 | a | 1.0 | -| test.c:228:17:228:23 | ... <= ... | 1.0 | -| test.c:228:22:228:23 | 11 | 1.0 | -| test.c:228:28:228:28 | 5 | 1.0 | -| test.c:228:28:228:33 | ... <= ... | 1.0 | -| test.c:228:33:228:33 | b | 1.0 | -| test.c:228:38:228:38 | b | 1.0 | -| test.c:228:38:228:44 | ... <= ... | 1.0 | -| test.c:228:43:228:44 | 23 | 1.0 | -| test.c:229:13:229:13 | a | 1.0 | -| test.c:229:13:229:15 | ... * ... | 1.0 | -| test.c:229:15:229:15 | b | 1.0 | -| test.c:230:5:230:9 | total | 1.0 | -| test.c:230:5:230:14 | ... += ... | 1.0 | -| test.c:230:14:230:14 | r | 1.0 | -| test.c:232:7:232:7 | 0 | 1.0 | -| test.c:232:7:232:12 | ... <= ... | 1.0 | -| test.c:232:7:232:23 | ... && ... | 1.0 | -| test.c:232:7:232:33 | ... && ... | 1.0 | -| test.c:232:7:232:44 | ... && ... | 1.0 | -| test.c:232:12:232:12 | a | 2.0 | -| test.c:232:17:232:17 | a | 2.0 | -| test.c:232:17:232:23 | ... <= ... | 1.0 | -| test.c:232:22:232:23 | 11 | 1.0 | -| test.c:232:28:232:28 | 0 | 1.0 | -| test.c:232:28:232:33 | ... <= ... | 1.0 | -| test.c:232:33:232:33 | b | 3.0 | -| test.c:232:38:232:38 | b | 3.0 | -| test.c:232:38:232:44 | ... <= ... | 1.0 | -| test.c:232:43:232:44 | 23 | 1.0 | -| test.c:233:13:233:13 | a | 2.0 | -| test.c:233:13:233:15 | ... * ... | 1.0 | -| test.c:233:15:233:15 | b | 3.0 | -| test.c:234:5:234:9 | total | 2.0 | -| test.c:234:5:234:14 | ... += ... | 2.0 | -| test.c:234:14:234:14 | r | 1.0 | -| test.c:236:7:236:7 | 0 | 1.0 | -| test.c:236:7:236:12 | ... <= ... | 1.0 | -| test.c:236:7:236:23 | ... && ... | 1.0 | -| test.c:236:7:236:35 | ... && ... | 1.0 | -| test.c:236:7:236:46 | ... && ... | 1.0 | -| test.c:236:12:236:12 | a | 3.0 | -| test.c:236:17:236:17 | a | 3.0 | -| test.c:236:17:236:23 | ... <= ... | 1.0 | -| test.c:236:22:236:23 | 11 | 1.0 | -| test.c:236:28:236:30 | - ... | 1.0 | -| test.c:236:28:236:35 | ... <= ... | 1.0 | -| test.c:236:29:236:30 | 13 | 1.0 | -| test.c:236:35:236:35 | b | 7.0 | -| test.c:236:40:236:40 | b | 7.0 | -| test.c:236:40:236:46 | ... <= ... | 1.0 | -| test.c:236:45:236:46 | 23 | 1.0 | -| test.c:237:13:237:13 | a | 3.0 | -| test.c:237:13:237:15 | ... * ... | 1.0 | -| test.c:237:15:237:15 | b | 7.0 | -| test.c:238:5:238:9 | total | 4.0 | -| test.c:238:5:238:14 | ... += ... | 4.0 | -| test.c:238:14:238:14 | r | 1.0 | -| test.c:240:7:240:7 | 0 | 1.0 | -| test.c:240:7:240:12 | ... <= ... | 1.0 | -| test.c:240:7:240:23 | ... && ... | 1.0 | -| test.c:240:7:240:35 | ... && ... | 1.0 | -| test.c:240:7:240:45 | ... && ... | 1.0 | -| test.c:240:12:240:12 | a | 4.0 | -| test.c:240:17:240:17 | a | 4.0 | -| test.c:240:17:240:23 | ... <= ... | 1.0 | -| test.c:240:22:240:23 | 11 | 1.0 | -| test.c:240:28:240:30 | - ... | 1.0 | -| test.c:240:28:240:35 | ... <= ... | 1.0 | -| test.c:240:29:240:30 | 13 | 1.0 | -| test.c:240:35:240:35 | b | 15.0 | -| test.c:240:40:240:40 | b | 15.0 | -| test.c:240:40:240:45 | ... <= ... | 1.0 | -| test.c:240:45:240:45 | 0 | 1.0 | -| test.c:241:13:241:13 | a | 4.0 | -| test.c:241:13:241:15 | ... * ... | 1.0 | -| test.c:241:15:241:15 | b | 15.0 | -| test.c:242:5:242:9 | total | 8.0 | -| test.c:242:5:242:14 | ... += ... | 8.0 | -| test.c:242:14:242:14 | r | 1.0 | -| test.c:244:7:244:7 | 0 | 1.0 | -| test.c:244:7:244:12 | ... <= ... | 1.0 | -| test.c:244:7:244:23 | ... && ... | 1.0 | -| test.c:244:7:244:35 | ... && ... | 1.0 | -| test.c:244:7:244:46 | ... && ... | 1.0 | -| test.c:244:12:244:12 | a | 5.0 | -| test.c:244:17:244:17 | a | 5.0 | -| test.c:244:17:244:23 | ... <= ... | 1.0 | -| test.c:244:22:244:23 | 11 | 1.0 | -| test.c:244:28:244:30 | - ... | 1.0 | -| test.c:244:28:244:35 | ... <= ... | 1.0 | -| test.c:244:29:244:30 | 13 | 1.0 | -| test.c:244:35:244:35 | b | 31.0 | -| test.c:244:40:244:40 | b | 31.0 | -| test.c:244:40:244:46 | ... <= ... | 1.0 | -| test.c:244:45:244:46 | - ... | 1.0 | -| test.c:244:46:244:46 | 7 | 1.0 | -| test.c:245:13:245:13 | a | 5.0 | -| test.c:245:13:245:15 | ... * ... | 1.0 | -| test.c:245:15:245:15 | b | 31.0 | -| test.c:246:5:246:9 | total | 16.0 | -| test.c:246:5:246:14 | ... += ... | 16.0 | -| test.c:246:14:246:14 | r | 1.0 | -| test.c:249:10:249:14 | total | 32.0 | -| test.c:254:14:254:15 | 0 | 1.0 | -| test.c:256:7:256:9 | - ... | 1.0 | -| test.c:256:7:256:14 | ... <= ... | 1.0 | -| test.c:256:7:256:25 | ... && ... | 1.0 | -| test.c:256:7:256:35 | ... && ... | 1.0 | -| test.c:256:7:256:46 | ... && ... | 1.0 | -| test.c:256:8:256:9 | 17 | 1.0 | -| test.c:256:14:256:14 | a | 1.0 | -| test.c:256:19:256:19 | a | 1.0 | -| test.c:256:19:256:25 | ... <= ... | 1.0 | -| test.c:256:24:256:25 | 11 | 1.0 | -| test.c:256:30:256:30 | 5 | 1.0 | -| test.c:256:30:256:35 | ... <= ... | 1.0 | -| test.c:256:35:256:35 | b | 1.0 | -| test.c:256:40:256:40 | b | 1.0 | -| test.c:256:40:256:46 | ... <= ... | 1.0 | -| test.c:256:45:256:46 | 23 | 1.0 | -| test.c:257:13:257:13 | a | 1.0 | -| test.c:257:13:257:15 | ... * ... | 1.0 | -| test.c:257:15:257:15 | b | 1.0 | -| test.c:258:5:258:9 | total | 1.0 | -| test.c:258:5:258:14 | ... += ... | 1.0 | -| test.c:258:14:258:14 | r | 1.0 | -| test.c:260:7:260:9 | - ... | 1.0 | -| test.c:260:7:260:14 | ... <= ... | 1.0 | -| test.c:260:7:260:25 | ... && ... | 1.0 | -| test.c:260:7:260:35 | ... && ... | 1.0 | -| test.c:260:7:260:46 | ... && ... | 1.0 | -| test.c:260:8:260:9 | 17 | 1.0 | -| test.c:260:14:260:14 | a | 2.0 | -| test.c:260:19:260:19 | a | 2.0 | -| test.c:260:19:260:25 | ... <= ... | 1.0 | -| test.c:260:24:260:25 | 11 | 1.0 | -| test.c:260:30:260:30 | 0 | 1.0 | -| test.c:260:30:260:35 | ... <= ... | 1.0 | -| test.c:260:35:260:35 | b | 3.0 | -| test.c:260:40:260:40 | b | 3.0 | -| test.c:260:40:260:46 | ... <= ... | 1.0 | -| test.c:260:45:260:46 | 23 | 1.0 | -| test.c:261:13:261:13 | a | 2.0 | -| test.c:261:13:261:15 | ... * ... | 1.0 | -| test.c:261:15:261:15 | b | 3.0 | -| test.c:262:5:262:9 | total | 2.0 | -| test.c:262:5:262:14 | ... += ... | 2.0 | -| test.c:262:14:262:14 | r | 1.0 | -| test.c:264:7:264:9 | - ... | 1.0 | -| test.c:264:7:264:14 | ... <= ... | 1.0 | -| test.c:264:7:264:25 | ... && ... | 1.0 | -| test.c:264:7:264:37 | ... && ... | 1.0 | -| test.c:264:7:264:48 | ... && ... | 1.0 | -| test.c:264:8:264:9 | 17 | 1.0 | -| test.c:264:14:264:14 | a | 3.0 | -| test.c:264:19:264:19 | a | 3.0 | -| test.c:264:19:264:25 | ... <= ... | 1.0 | -| test.c:264:24:264:25 | 11 | 1.0 | -| test.c:264:30:264:32 | - ... | 1.0 | -| test.c:264:30:264:37 | ... <= ... | 1.0 | -| test.c:264:31:264:32 | 13 | 1.0 | -| test.c:264:37:264:37 | b | 7.0 | -| test.c:264:42:264:42 | b | 7.0 | -| test.c:264:42:264:48 | ... <= ... | 1.0 | -| test.c:264:47:264:48 | 23 | 1.0 | -| test.c:265:13:265:13 | a | 3.0 | -| test.c:265:13:265:15 | ... * ... | 1.0 | -| test.c:265:15:265:15 | b | 7.0 | -| test.c:266:5:266:9 | total | 4.0 | -| test.c:266:5:266:14 | ... += ... | 4.0 | -| test.c:266:14:266:14 | r | 1.0 | -| test.c:268:7:268:9 | - ... | 1.0 | -| test.c:268:7:268:14 | ... <= ... | 1.0 | -| test.c:268:7:268:25 | ... && ... | 1.0 | -| test.c:268:7:268:37 | ... && ... | 1.0 | -| test.c:268:7:268:47 | ... && ... | 1.0 | -| test.c:268:8:268:9 | 17 | 1.0 | -| test.c:268:14:268:14 | a | 4.0 | -| test.c:268:19:268:19 | a | 4.0 | -| test.c:268:19:268:25 | ... <= ... | 1.0 | -| test.c:268:24:268:25 | 11 | 1.0 | -| test.c:268:30:268:32 | - ... | 1.0 | -| test.c:268:30:268:37 | ... <= ... | 1.0 | -| test.c:268:31:268:32 | 13 | 1.0 | -| test.c:268:37:268:37 | b | 15.0 | -| test.c:268:42:268:42 | b | 15.0 | -| test.c:268:42:268:47 | ... <= ... | 1.0 | -| test.c:268:47:268:47 | 0 | 1.0 | -| test.c:269:13:269:13 | a | 4.0 | -| test.c:269:13:269:15 | ... * ... | 1.0 | -| test.c:269:15:269:15 | b | 15.0 | -| test.c:270:5:270:9 | total | 8.0 | -| test.c:270:5:270:14 | ... += ... | 8.0 | -| test.c:270:14:270:14 | r | 1.0 | -| test.c:272:7:272:9 | - ... | 1.0 | -| test.c:272:7:272:14 | ... <= ... | 1.0 | -| test.c:272:7:272:25 | ... && ... | 1.0 | -| test.c:272:7:272:37 | ... && ... | 1.0 | -| test.c:272:7:272:48 | ... && ... | 1.0 | -| test.c:272:8:272:9 | 17 | 1.0 | -| test.c:272:14:272:14 | a | 5.0 | -| test.c:272:19:272:19 | a | 5.0 | -| test.c:272:19:272:25 | ... <= ... | 1.0 | -| test.c:272:24:272:25 | 11 | 1.0 | -| test.c:272:30:272:32 | - ... | 1.0 | -| test.c:272:30:272:37 | ... <= ... | 1.0 | -| test.c:272:31:272:32 | 13 | 1.0 | -| test.c:272:37:272:37 | b | 31.0 | -| test.c:272:42:272:42 | b | 31.0 | -| test.c:272:42:272:48 | ... <= ... | 1.0 | -| test.c:272:47:272:48 | - ... | 1.0 | -| test.c:272:48:272:48 | 7 | 1.0 | -| test.c:273:13:273:13 | a | 5.0 | -| test.c:273:13:273:15 | ... * ... | 1.0 | -| test.c:273:15:273:15 | b | 31.0 | -| test.c:274:5:274:9 | total | 16.0 | -| test.c:274:5:274:14 | ... += ... | 16.0 | -| test.c:274:14:274:14 | r | 1.0 | -| test.c:277:10:277:14 | total | 32.0 | -| test.c:282:14:282:15 | 0 | 1.0 | -| test.c:284:7:284:9 | - ... | 1.0 | -| test.c:284:7:284:14 | ... <= ... | 1.0 | -| test.c:284:7:284:24 | ... && ... | 1.0 | -| test.c:284:7:284:34 | ... && ... | 1.0 | -| test.c:284:7:284:45 | ... && ... | 1.0 | -| test.c:284:8:284:9 | 17 | 1.0 | -| test.c:284:14:284:14 | a | 1.0 | -| test.c:284:19:284:19 | a | 1.0 | -| test.c:284:19:284:24 | ... <= ... | 1.0 | -| test.c:284:24:284:24 | 0 | 1.0 | -| test.c:284:29:284:29 | 5 | 1.0 | -| test.c:284:29:284:34 | ... <= ... | 1.0 | -| test.c:284:34:284:34 | b | 1.0 | -| test.c:284:39:284:39 | b | 1.0 | -| test.c:284:39:284:45 | ... <= ... | 1.0 | -| test.c:284:44:284:45 | 23 | 1.0 | -| test.c:285:13:285:13 | a | 1.0 | -| test.c:285:13:285:15 | ... * ... | 1.0 | -| test.c:285:15:285:15 | b | 1.0 | -| test.c:286:5:286:9 | total | 1.0 | -| test.c:286:5:286:14 | ... += ... | 1.0 | -| test.c:286:14:286:14 | r | 1.0 | -| test.c:288:7:288:9 | - ... | 1.0 | -| test.c:288:7:288:14 | ... <= ... | 1.0 | -| test.c:288:7:288:24 | ... && ... | 1.0 | -| test.c:288:7:288:34 | ... && ... | 1.0 | -| test.c:288:7:288:45 | ... && ... | 1.0 | -| test.c:288:8:288:9 | 17 | 1.0 | -| test.c:288:14:288:14 | a | 2.0 | -| test.c:288:19:288:19 | a | 2.0 | -| test.c:288:19:288:24 | ... <= ... | 1.0 | -| test.c:288:24:288:24 | 0 | 1.0 | -| test.c:288:29:288:29 | 0 | 1.0 | -| test.c:288:29:288:34 | ... <= ... | 1.0 | -| test.c:288:34:288:34 | b | 3.0 | -| test.c:288:39:288:39 | b | 3.0 | -| test.c:288:39:288:45 | ... <= ... | 1.0 | -| test.c:288:44:288:45 | 23 | 1.0 | -| test.c:289:13:289:13 | a | 2.0 | -| test.c:289:13:289:15 | ... * ... | 1.0 | -| test.c:289:15:289:15 | b | 3.0 | -| test.c:290:5:290:9 | total | 2.0 | -| test.c:290:5:290:14 | ... += ... | 2.0 | -| test.c:290:14:290:14 | r | 1.0 | -| test.c:292:7:292:9 | - ... | 1.0 | -| test.c:292:7:292:14 | ... <= ... | 1.0 | -| test.c:292:7:292:24 | ... && ... | 1.0 | -| test.c:292:7:292:36 | ... && ... | 1.0 | -| test.c:292:7:292:47 | ... && ... | 1.0 | -| test.c:292:8:292:9 | 17 | 1.0 | -| test.c:292:14:292:14 | a | 3.0 | -| test.c:292:19:292:19 | a | 3.0 | -| test.c:292:19:292:24 | ... <= ... | 1.0 | -| test.c:292:24:292:24 | 0 | 1.0 | -| test.c:292:29:292:31 | - ... | 1.0 | -| test.c:292:29:292:36 | ... <= ... | 1.0 | -| test.c:292:30:292:31 | 13 | 1.0 | -| test.c:292:36:292:36 | b | 7.0 | -| test.c:292:41:292:41 | b | 7.0 | -| test.c:292:41:292:47 | ... <= ... | 1.0 | -| test.c:292:46:292:47 | 23 | 1.0 | -| test.c:293:13:293:13 | a | 3.0 | -| test.c:293:13:293:15 | ... * ... | 1.0 | -| test.c:293:15:293:15 | b | 7.0 | -| test.c:294:5:294:9 | total | 4.0 | -| test.c:294:5:294:14 | ... += ... | 4.0 | -| test.c:294:14:294:14 | r | 1.0 | -| test.c:296:7:296:9 | - ... | 1.0 | -| test.c:296:7:296:14 | ... <= ... | 1.0 | -| test.c:296:7:296:24 | ... && ... | 1.0 | -| test.c:296:7:296:36 | ... && ... | 1.0 | -| test.c:296:7:296:46 | ... && ... | 1.0 | -| test.c:296:8:296:9 | 17 | 1.0 | -| test.c:296:14:296:14 | a | 4.0 | -| test.c:296:19:296:19 | a | 4.0 | -| test.c:296:19:296:24 | ... <= ... | 1.0 | -| test.c:296:24:296:24 | 0 | 1.0 | -| test.c:296:29:296:31 | - ... | 1.0 | -| test.c:296:29:296:36 | ... <= ... | 1.0 | -| test.c:296:30:296:31 | 13 | 1.0 | -| test.c:296:36:296:36 | b | 15.0 | -| test.c:296:41:296:41 | b | 15.0 | -| test.c:296:41:296:46 | ... <= ... | 1.0 | -| test.c:296:46:296:46 | 0 | 1.0 | -| test.c:297:13:297:13 | a | 4.0 | -| test.c:297:13:297:15 | ... * ... | 1.0 | -| test.c:297:15:297:15 | b | 15.0 | -| test.c:298:5:298:9 | total | 8.0 | -| test.c:298:5:298:14 | ... += ... | 8.0 | -| test.c:298:14:298:14 | r | 1.0 | -| test.c:300:7:300:9 | - ... | 1.0 | -| test.c:300:7:300:14 | ... <= ... | 1.0 | -| test.c:300:7:300:24 | ... && ... | 1.0 | -| test.c:300:7:300:36 | ... && ... | 1.0 | -| test.c:300:7:300:47 | ... && ... | 1.0 | -| test.c:300:8:300:9 | 17 | 1.0 | -| test.c:300:14:300:14 | a | 5.0 | -| test.c:300:19:300:19 | a | 5.0 | -| test.c:300:19:300:24 | ... <= ... | 1.0 | -| test.c:300:24:300:24 | 0 | 1.0 | -| test.c:300:29:300:31 | - ... | 1.0 | -| test.c:300:29:300:36 | ... <= ... | 1.0 | -| test.c:300:30:300:31 | 13 | 1.0 | -| test.c:300:36:300:36 | b | 31.0 | -| test.c:300:41:300:41 | b | 31.0 | -| test.c:300:41:300:47 | ... <= ... | 1.0 | -| test.c:300:46:300:47 | - ... | 1.0 | -| test.c:300:47:300:47 | 7 | 1.0 | -| test.c:301:13:301:13 | a | 5.0 | -| test.c:301:13:301:15 | ... * ... | 1.0 | -| test.c:301:15:301:15 | b | 31.0 | -| test.c:302:5:302:9 | total | 16.0 | -| test.c:302:5:302:14 | ... += ... | 16.0 | -| test.c:302:14:302:14 | r | 1.0 | -| test.c:305:10:305:14 | total | 32.0 | -| test.c:310:14:310:15 | 0 | 1.0 | -| test.c:312:7:312:9 | - ... | 1.0 | -| test.c:312:7:312:14 | ... <= ... | 1.0 | -| test.c:312:7:312:25 | ... && ... | 1.0 | -| test.c:312:7:312:35 | ... && ... | 1.0 | -| test.c:312:7:312:46 | ... && ... | 1.0 | -| test.c:312:8:312:9 | 17 | 1.0 | -| test.c:312:14:312:14 | a | 1.0 | -| test.c:312:19:312:19 | a | 1.0 | -| test.c:312:19:312:25 | ... <= ... | 1.0 | -| test.c:312:24:312:25 | - ... | 1.0 | -| test.c:312:25:312:25 | 2 | 1.0 | -| test.c:312:30:312:30 | 5 | 1.0 | -| test.c:312:30:312:35 | ... <= ... | 1.0 | -| test.c:312:35:312:35 | b | 1.0 | -| test.c:312:40:312:40 | b | 1.0 | -| test.c:312:40:312:46 | ... <= ... | 1.0 | -| test.c:312:45:312:46 | 23 | 1.0 | -| test.c:313:13:313:13 | a | 1.0 | -| test.c:313:13:313:15 | ... * ... | 1.0 | -| test.c:313:15:313:15 | b | 1.0 | -| test.c:314:5:314:9 | total | 1.0 | -| test.c:314:5:314:14 | ... += ... | 1.0 | -| test.c:314:14:314:14 | r | 1.0 | -| test.c:316:7:316:9 | - ... | 1.0 | -| test.c:316:7:316:14 | ... <= ... | 1.0 | -| test.c:316:7:316:25 | ... && ... | 1.0 | -| test.c:316:7:316:35 | ... && ... | 1.0 | -| test.c:316:7:316:46 | ... && ... | 1.0 | -| test.c:316:8:316:9 | 17 | 1.0 | -| test.c:316:14:316:14 | a | 2.0 | -| test.c:316:19:316:19 | a | 2.0 | -| test.c:316:19:316:25 | ... <= ... | 1.0 | -| test.c:316:24:316:25 | - ... | 1.0 | -| test.c:316:25:316:25 | 2 | 1.0 | -| test.c:316:30:316:30 | 0 | 1.0 | -| test.c:316:30:316:35 | ... <= ... | 1.0 | -| test.c:316:35:316:35 | b | 3.0 | -| test.c:316:40:316:40 | b | 3.0 | -| test.c:316:40:316:46 | ... <= ... | 1.0 | -| test.c:316:45:316:46 | 23 | 1.0 | -| test.c:317:13:317:13 | a | 2.0 | -| test.c:317:13:317:15 | ... * ... | 1.0 | -| test.c:317:15:317:15 | b | 3.0 | -| test.c:318:5:318:9 | total | 2.0 | -| test.c:318:5:318:14 | ... += ... | 2.0 | -| test.c:318:14:318:14 | r | 1.0 | -| test.c:320:7:320:9 | - ... | 1.0 | -| test.c:320:7:320:14 | ... <= ... | 1.0 | -| test.c:320:7:320:25 | ... && ... | 1.0 | -| test.c:320:7:320:37 | ... && ... | 1.0 | -| test.c:320:7:320:48 | ... && ... | 1.0 | -| test.c:320:8:320:9 | 17 | 1.0 | -| test.c:320:14:320:14 | a | 3.0 | -| test.c:320:19:320:19 | a | 3.0 | -| test.c:320:19:320:25 | ... <= ... | 1.0 | -| test.c:320:24:320:25 | - ... | 1.0 | -| test.c:320:25:320:25 | 2 | 1.0 | -| test.c:320:30:320:32 | - ... | 1.0 | -| test.c:320:30:320:37 | ... <= ... | 1.0 | -| test.c:320:31:320:32 | 13 | 1.0 | -| test.c:320:37:320:37 | b | 7.0 | -| test.c:320:42:320:42 | b | 7.0 | -| test.c:320:42:320:48 | ... <= ... | 1.0 | -| test.c:320:47:320:48 | 23 | 1.0 | -| test.c:321:13:321:13 | a | 3.0 | -| test.c:321:13:321:15 | ... * ... | 1.0 | -| test.c:321:15:321:15 | b | 7.0 | -| test.c:322:5:322:9 | total | 4.0 | -| test.c:322:5:322:14 | ... += ... | 4.0 | -| test.c:322:14:322:14 | r | 1.0 | -| test.c:324:7:324:9 | - ... | 1.0 | -| test.c:324:7:324:14 | ... <= ... | 1.0 | -| test.c:324:7:324:25 | ... && ... | 1.0 | -| test.c:324:7:324:37 | ... && ... | 1.0 | -| test.c:324:7:324:47 | ... && ... | 1.0 | -| test.c:324:8:324:9 | 17 | 1.0 | -| test.c:324:14:324:14 | a | 4.0 | -| test.c:324:19:324:19 | a | 4.0 | -| test.c:324:19:324:25 | ... <= ... | 1.0 | -| test.c:324:24:324:25 | - ... | 1.0 | -| test.c:324:25:324:25 | 2 | 1.0 | -| test.c:324:30:324:32 | - ... | 1.0 | -| test.c:324:30:324:37 | ... <= ... | 1.0 | -| test.c:324:31:324:32 | 13 | 1.0 | -| test.c:324:37:324:37 | b | 15.0 | -| test.c:324:42:324:42 | b | 15.0 | -| test.c:324:42:324:47 | ... <= ... | 1.0 | -| test.c:324:47:324:47 | 0 | 1.0 | -| test.c:325:13:325:13 | a | 4.0 | -| test.c:325:13:325:15 | ... * ... | 1.0 | -| test.c:325:15:325:15 | b | 15.0 | -| test.c:326:5:326:9 | total | 8.0 | -| test.c:326:5:326:14 | ... += ... | 8.0 | -| test.c:326:14:326:14 | r | 1.0 | -| test.c:328:7:328:9 | - ... | 1.0 | -| test.c:328:7:328:14 | ... <= ... | 1.0 | -| test.c:328:7:328:25 | ... && ... | 1.0 | -| test.c:328:7:328:37 | ... && ... | 1.0 | -| test.c:328:7:328:48 | ... && ... | 1.0 | -| test.c:328:8:328:9 | 17 | 1.0 | -| test.c:328:14:328:14 | a | 5.0 | -| test.c:328:19:328:19 | a | 5.0 | -| test.c:328:19:328:25 | ... <= ... | 1.0 | -| test.c:328:24:328:25 | - ... | 1.0 | -| test.c:328:25:328:25 | 2 | 1.0 | -| test.c:328:30:328:32 | - ... | 1.0 | -| test.c:328:30:328:37 | ... <= ... | 1.0 | -| test.c:328:31:328:32 | 13 | 1.0 | -| test.c:328:37:328:37 | b | 31.0 | -| test.c:328:42:328:42 | b | 31.0 | -| test.c:328:42:328:48 | ... <= ... | 1.0 | -| test.c:328:47:328:48 | - ... | 1.0 | -| test.c:328:48:328:48 | 7 | 1.0 | -| test.c:329:13:329:13 | a | 5.0 | -| test.c:329:13:329:15 | ... * ... | 1.0 | -| test.c:329:15:329:15 | b | 31.0 | -| test.c:330:5:330:9 | total | 16.0 | -| test.c:330:5:330:14 | ... += ... | 16.0 | -| test.c:330:14:330:14 | r | 1.0 | -| test.c:333:10:333:14 | total | 32.0 | -| test.c:337:13:337:14 | 0 | 1.0 | -| test.c:338:7:338:7 | x | 1.0 | -| test.c:338:7:338:11 | ... < ... | 1.0 | -| test.c:338:11:338:11 | 0 | 1.0 | -| test.c:339:12:339:13 | - ... | 1.0 | -| test.c:339:13:339:13 | 1 | 1.0 | -| test.c:342:10:342:10 | i | 13.0 | -| test.c:342:10:342:14 | ... < ... | 1.0 | -| test.c:342:14:342:14 | 3 | 1.0 | -| test.c:343:5:343:5 | i | 13.0 | -| test.c:343:5:343:7 | ... ++ | 13.0 | -| test.c:345:3:345:3 | d | 1.0 | -| test.c:345:3:345:7 | ... = ... | 13.0 | -| test.c:345:7:345:7 | i | 13.0 | -| test.c:346:7:346:7 | x | 1.0 | -| test.c:346:7:346:11 | ... < ... | 1.0 | -| test.c:346:11:346:11 | 0 | 1.0 | -| test.c:347:9:347:9 | d | 13.0 | -| test.c:347:9:347:14 | ... > ... | 1.0 | -| test.c:347:13:347:14 | - ... | 1.0 | -| test.c:347:14:347:14 | x | 1.0 | -| test.c:348:14:348:14 | 1 | 1.0 | -| test.c:351:10:351:10 | 0 | 1.0 | -| test.c:357:3:357:4 | y1 | 1.0 | -| test.c:357:3:357:23 | ... = ... | 1.0 | -| test.c:357:8:357:8 | x | 1.0 | -| test.c:357:8:357:14 | ... < ... | 1.0 | -| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | -| test.c:357:12:357:14 | 100 | 1.0 | -| test.c:357:12:357:14 | (unsigned int)... | 1.0 | -| test.c:357:18:357:18 | x | 1.0 | -| test.c:357:22:357:23 | 10 | 1.0 | -| test.c:357:22:357:23 | (unsigned int)... | 1.0 | -| test.c:358:3:358:4 | y2 | 1.0 | -| test.c:358:3:358:24 | ... = ... | 2.0 | -| test.c:358:8:358:8 | x | 2.0 | -| test.c:358:8:358:15 | ... >= ... | 1.0 | -| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | -| test.c:358:13:358:15 | 100 | 1.0 | -| test.c:358:13:358:15 | (unsigned int)... | 1.0 | -| test.c:358:19:358:20 | 10 | 1.0 | -| test.c:358:19:358:20 | (unsigned int)... | 1.0 | -| test.c:358:24:358:24 | x | 2.0 | -| test.c:359:3:359:4 | y3 | 1.0 | -| test.c:359:3:359:8 | ... = ... | 1.0 | -| test.c:359:8:359:8 | 0 | 1.0 | -| test.c:359:8:359:8 | (unsigned int)... | 1.0 | -| test.c:360:3:360:4 | y4 | 1.0 | -| test.c:360:3:360:8 | ... = ... | 1.0 | -| test.c:360:8:360:8 | 0 | 1.0 | -| test.c:360:8:360:8 | (unsigned int)... | 1.0 | -| test.c:361:3:361:4 | y5 | 1.0 | -| test.c:361:3:361:8 | ... = ... | 1.0 | -| test.c:361:8:361:8 | 0 | 1.0 | -| test.c:361:8:361:8 | (unsigned int)... | 1.0 | -| test.c:362:3:362:4 | y6 | 1.0 | -| test.c:362:3:362:8 | ... = ... | 1.0 | -| test.c:362:8:362:8 | 0 | 1.0 | -| test.c:362:8:362:8 | (unsigned int)... | 1.0 | -| test.c:363:3:363:4 | y7 | 1.0 | -| test.c:363:3:363:8 | ... = ... | 1.0 | -| test.c:363:8:363:8 | 0 | 1.0 | -| test.c:363:8:363:8 | (unsigned int)... | 1.0 | -| test.c:364:3:364:4 | y8 | 1.0 | -| test.c:364:3:364:8 | ... = ... | 1.0 | -| test.c:364:8:364:8 | 0 | 1.0 | -| test.c:364:8:364:8 | (unsigned int)... | 1.0 | -| test.c:365:7:365:7 | x | 4.0 | -| test.c:365:7:365:13 | ... < ... | 1.0 | -| test.c:365:11:365:13 | 300 | 1.0 | -| test.c:365:11:365:13 | (unsigned int)... | 1.0 | -| test.c:366:5:366:6 | y3 | 1.0 | -| test.c:366:5:366:15 | ... = ... | 4.0 | -| test.c:366:10:366:10 | x | 4.0 | -| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | -| test.c:366:15:366:15 | 5 | 1.0 | -| test.c:366:15:366:15 | (unsigned int)... | 1.0 | -| test.c:367:5:367:6 | y4 | 1.0 | -| test.c:367:5:367:17 | ... = ... | 4.0 | -| test.c:367:10:367:10 | x | 4.0 | -| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | -| test.c:367:15:367:17 | 500 | 1.0 | -| test.c:367:15:367:17 | (unsigned int)... | 1.0 | -| test.c:368:5:368:6 | y5 | 1.0 | -| test.c:368:5:368:21 | ... = ... | 4.0 | -| test.c:368:10:368:14 | (...) | 4.0 | -| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | -| test.c:368:11:368:11 | x | 4.0 | -| test.c:368:11:368:13 | ... + ... | 4.0 | -| test.c:368:13:368:13 | 1 | 1.0 | -| test.c:368:13:368:13 | (unsigned int)... | 1.0 | -| test.c:368:19:368:21 | 500 | 1.0 | -| test.c:368:19:368:21 | (unsigned int)... | 1.0 | -| test.c:369:5:369:6 | y6 | 1.0 | -| test.c:369:5:369:36 | ... = ... | 4.0 | -| test.c:369:10:369:31 | (...) | 4.0 | -| test.c:369:10:369:36 | (unsigned int)... | 4.0 | -| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | -| test.c:369:11:369:30 | (unsigned char)... | 4.0 | -| test.c:369:26:369:30 | (...) | 4.0 | -| test.c:369:27:369:27 | x | 4.0 | -| test.c:369:27:369:29 | ... + ... | 4.0 | -| test.c:369:29:369:29 | 1 | 1.0 | -| test.c:369:29:369:29 | (unsigned int)... | 1.0 | -| test.c:369:36:369:36 | 5 | 1.0 | -| test.c:370:5:370:6 | y7 | 1.0 | -| test.c:370:5:370:38 | ... = ... | 4.0 | -| test.c:370:10:370:31 | (...) | 4.0 | -| test.c:370:10:370:38 | (unsigned int)... | 4.0 | -| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | -| test.c:370:11:370:30 | (unsigned char)... | 4.0 | -| test.c:370:26:370:30 | (...) | 4.0 | -| test.c:370:27:370:27 | x | 4.0 | -| test.c:370:27:370:29 | ... + ... | 4.0 | -| test.c:370:29:370:29 | 1 | 1.0 | -| test.c:370:29:370:29 | (unsigned int)... | 1.0 | -| test.c:370:36:370:38 | 500 | 1.0 | -| test.c:371:5:371:6 | y8 | 1.0 | -| test.c:371:5:371:39 | ... = ... | 4.0 | -| test.c:371:10:371:32 | (...) | 4.0 | -| test.c:371:10:371:39 | (unsigned int)... | 4.0 | -| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | -| test.c:371:11:371:31 | (unsigned short)... | 4.0 | -| test.c:371:27:371:31 | (...) | 4.0 | -| test.c:371:28:371:28 | x | 4.0 | -| test.c:371:28:371:30 | ... + ... | 4.0 | -| test.c:371:30:371:30 | 1 | 1.0 | -| test.c:371:30:371:30 | (unsigned int)... | 1.0 | -| test.c:371:37:371:39 | 500 | 1.0 | -| test.c:373:10:373:11 | y1 | 1.0 | -| test.c:373:10:373:16 | ... + ... | 2.0 | -| test.c:373:10:373:21 | ... + ... | 10.0 | -| test.c:373:10:373:26 | ... + ... | 50.0 | -| test.c:373:10:373:31 | ... + ... | 250.0 | -| test.c:373:10:373:36 | ... + ... | 1250.0 | -| test.c:373:10:373:41 | ... + ... | 6250.0 | -| test.c:373:10:373:46 | ... + ... | 31250.0 | -| test.c:373:15:373:16 | y2 | 2.0 | -| test.c:373:20:373:21 | y3 | 5.0 | -| test.c:373:25:373:26 | y4 | 5.0 | -| test.c:373:30:373:31 | y5 | 5.0 | -| test.c:373:35:373:36 | y6 | 5.0 | -| test.c:373:40:373:41 | y7 | 5.0 | -| test.c:373:45:373:46 | y8 | 5.0 | -| test.c:379:3:379:4 | y1 | 1.0 | -| test.c:379:3:379:24 | ... = ... | 1.0 | -| test.c:379:8:379:8 | x | 1.0 | -| test.c:379:8:379:14 | ... > ... | 1.0 | -| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | -| test.c:379:12:379:14 | 100 | 1.0 | -| test.c:379:12:379:14 | (unsigned int)... | 1.0 | -| test.c:379:18:379:18 | x | 1.0 | -| test.c:379:22:379:24 | 110 | 1.0 | -| test.c:379:22:379:24 | (unsigned int)... | 1.0 | -| test.c:380:3:380:4 | y2 | 1.0 | -| test.c:380:3:380:25 | ... = ... | 2.0 | -| test.c:380:8:380:8 | x | 2.0 | -| test.c:380:8:380:15 | ... <= ... | 1.0 | -| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | -| test.c:380:13:380:15 | 100 | 1.0 | -| test.c:380:13:380:15 | (unsigned int)... | 1.0 | -| test.c:380:19:380:21 | 110 | 1.0 | -| test.c:380:19:380:21 | (unsigned int)... | 1.0 | -| test.c:380:25:380:25 | x | 2.0 | -| test.c:381:3:381:4 | y3 | 1.0 | -| test.c:381:3:381:11 | ... = ... | 1.0 | -| test.c:381:8:381:11 | 1000 | 1.0 | -| test.c:381:8:381:11 | (unsigned int)... | 1.0 | -| test.c:382:3:382:4 | y4 | 1.0 | -| test.c:382:3:382:11 | ... = ... | 1.0 | -| test.c:382:8:382:11 | 1000 | 1.0 | -| test.c:382:8:382:11 | (unsigned int)... | 1.0 | -| test.c:383:3:383:4 | y5 | 1.0 | -| test.c:383:3:383:11 | ... = ... | 1.0 | -| test.c:383:8:383:11 | 1000 | 1.0 | -| test.c:383:8:383:11 | (unsigned int)... | 1.0 | -| test.c:384:7:384:7 | x | 4.0 | -| test.c:384:7:384:14 | ... >= ... | 1.0 | -| test.c:384:12:384:14 | 300 | 1.0 | -| test.c:384:12:384:14 | (unsigned int)... | 1.0 | -| test.c:385:5:385:6 | y3 | 1.0 | -| test.c:385:5:385:21 | ... = ... | 4.0 | -| test.c:385:10:385:16 | (...) | 4.0 | -| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | -| test.c:385:11:385:11 | x | 4.0 | -| test.c:385:11:385:15 | ... - ... | 4.0 | -| test.c:385:13:385:15 | 300 | 1.0 | -| test.c:385:13:385:15 | (unsigned int)... | 1.0 | -| test.c:385:21:385:21 | 5 | 1.0 | -| test.c:385:21:385:21 | (unsigned int)... | 1.0 | -| test.c:386:5:386:6 | y4 | 1.0 | -| test.c:386:5:386:21 | ... = ... | 4.0 | -| test.c:386:10:386:16 | (...) | 4.0 | -| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | -| test.c:386:11:386:11 | x | 4.0 | -| test.c:386:11:386:15 | ... - ... | 4.0 | -| test.c:386:13:386:15 | 200 | 1.0 | -| test.c:386:13:386:15 | (unsigned int)... | 1.0 | -| test.c:386:21:386:21 | 5 | 1.0 | -| test.c:386:21:386:21 | (unsigned int)... | 1.0 | -| test.c:387:5:387:6 | y5 | 1.0 | -| test.c:387:5:387:38 | ... = ... | 4.0 | -| test.c:387:10:387:33 | (...) | 4.0 | -| test.c:387:10:387:38 | (unsigned int)... | 4.0 | -| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | -| test.c:387:11:387:32 | (unsigned char)... | 4.0 | -| test.c:387:26:387:32 | (...) | 4.0 | -| test.c:387:27:387:27 | x | 4.0 | -| test.c:387:27:387:31 | ... - ... | 4.0 | -| test.c:387:29:387:31 | 200 | 1.0 | -| test.c:387:29:387:31 | (unsigned int)... | 1.0 | -| test.c:387:38:387:38 | 5 | 1.0 | -| test.c:389:10:389:11 | y1 | 1.0 | -| test.c:389:10:389:16 | ... + ... | 2.0 | -| test.c:389:10:389:21 | ... + ... | 10.0 | -| test.c:389:10:389:26 | ... + ... | 50.0 | -| test.c:389:10:389:31 | ... + ... | 250.0 | -| test.c:389:15:389:16 | y2 | 2.0 | -| test.c:389:20:389:21 | y3 | 5.0 | -| test.c:389:25:389:26 | y4 | 5.0 | -| test.c:389:30:389:31 | y5 | 5.0 | -| test.c:394:14:394:14 | m | 1.0 | -| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | -| test.c:394:18:394:18 | n | 1.0 | -| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | -| test.c:394:22:394:22 | o | 1.0 | -| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | -| test.c:394:26:394:26 | p | 1.0 | -| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | -| test.c:394:30:394:30 | q | 1.0 | -| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | -| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | -| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | -| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | -| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | -| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | -| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | -| test.c:395:14:395:14 | m | 2.0 | -| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | -| test.c:395:18:395:18 | n | 3.0 | -| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | -| test.c:395:22:395:22 | o | 3.0 | -| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | -| test.c:395:26:395:26 | p | 3.0 | -| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | -| test.c:395:30:395:30 | q | 3.0 | -| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | -| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | -| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | -| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | -| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | -| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | -| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | -| test.c:396:14:396:14 | m | 4.0 | -| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | -| test.c:396:18:396:18 | n | 9.0 | -| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | -| test.c:396:22:396:22 | o | 9.0 | -| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | -| test.c:396:26:396:26 | p | 9.0 | -| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | -| test.c:396:30:396:30 | q | 9.0 | -| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | -| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | -| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | -| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | -| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | -| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | -| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | -| test.c:397:14:397:14 | m | 8.0 | -| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | -| test.c:397:18:397:18 | n | 27.0 | -| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | -| test.c:397:22:397:22 | o | 27.0 | -| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | -| test.c:397:26:397:26 | p | 27.0 | -| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | -| test.c:397:30:397:30 | q | 27.0 | -| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | -| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | -| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | -| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | -| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | -| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | -| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | -| test.c:398:14:398:14 | m | 16.0 | -| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | -| test.c:398:18:398:18 | n | 81.0 | -| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | -| test.c:398:22:398:22 | o | 81.0 | -| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | -| test.c:398:26:398:26 | p | 81.0 | -| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | -| test.c:398:30:398:30 | q | 81.0 | -| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | -| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | -| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | -| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | -| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | -| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | -| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | -| test.c:399:14:399:14 | m | 32.0 | -| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | -| test.c:399:18:399:18 | n | 243.0 | -| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | -| test.c:399:22:399:22 | o | 243.0 | -| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | -| test.c:399:26:399:26 | p | 243.0 | -| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | -| test.c:399:30:399:30 | q | 243.0 | -| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | -| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | -| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | -| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | -| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | -| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | -| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | -| test.c:400:14:400:14 | m | 64.0 | -| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | -| test.c:400:18:400:18 | n | 729.0 | -| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | -| test.c:400:22:400:22 | o | 729.0 | -| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | -| test.c:400:26:400:26 | p | 729.0 | -| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | -| test.c:400:30:400:30 | q | 729.0 | -| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | -| test.c:400:34:400:43 | 0.02524326 | 1.0 | -| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | -| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | -| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | -| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | -| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | -| test.c:401:14:401:14 | m | 128.0 | -| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | -| test.c:401:18:401:18 | n | 2187.0 | -| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | -| test.c:401:22:401:22 | o | 2187.0 | -| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | -| test.c:401:26:401:26 | p | 2187.0 | -| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | -| test.c:401:30:401:30 | q | 2187.0 | -| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | -| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | -| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | -| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | -| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | -| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | -| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | -| test.c:402:14:402:14 | m | 256.0 | -| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | -| test.c:402:18:402:18 | n | 6561.0 | -| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | -| test.c:402:22:402:22 | o | 6561.0 | -| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | -| test.c:402:26:402:26 | p | 6561.0 | -| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | -| test.c:402:30:402:30 | q | 6561.0 | -| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | -| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | -| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | -| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | -| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | -| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | -| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | -| test.c:403:14:403:14 | m | 512.0 | -| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | -| test.c:403:18:403:18 | n | 19683.0 | -| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | -| test.c:403:22:403:22 | o | 19683.0 | -| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | -| test.c:403:26:403:26 | p | 19683.0 | -| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | -| test.c:403:30:403:30 | q | 19683.0 | -| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | -| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | -| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | -| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | -| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | -| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | -| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | -| test.c:404:14:404:14 | m | 1024.0 | -| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | -| test.c:404:18:404:18 | n | 59049.0 | -| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | -| test.c:404:22:404:22 | o | 59049.0 | -| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | -| test.c:404:26:404:26 | p | 59049.0 | -| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | -| test.c:404:30:404:30 | q | 59049.0 | -| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | -| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | -| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | -| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | -| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | -| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | -| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | -| test.c:405:14:405:14 | m | 2048.0 | -| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | -| test.c:405:18:405:18 | n | 177147.0 | -| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | -| test.c:405:22:405:22 | o | 177147.0 | -| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | -| test.c:405:26:405:26 | p | 177147.0 | -| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | -| test.c:405:30:405:30 | q | 177147.0 | -| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | -| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | -| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | -| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | -| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | -| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | -| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | -| test.c:411:19:411:19 | a | 1.0 | -| test.c:411:19:411:23 | ... + ... | 1.0 | -| test.c:411:19:411:27 | ... + ... | 1.0 | -| test.c:411:19:411:31 | ... + ... | 1.0 | -| test.c:411:19:411:35 | ... + ... | 1.0 | -| test.c:411:19:411:39 | ... + ... | 1.0 | -| test.c:411:19:411:43 | ... + ... | 1.0 | -| test.c:411:19:411:47 | ... + ... | 1.0 | -| test.c:411:19:411:51 | ... + ... | 1.0 | -| test.c:411:19:411:55 | ... + ... | 1.0 | -| test.c:411:19:411:59 | ... + ... | 1.0 | -| test.c:411:19:411:63 | ... + ... | 1.0 | -| test.c:411:23:411:23 | b | 1.0 | -| test.c:411:27:411:27 | c | 1.0 | -| test.c:411:31:411:31 | d | 1.0 | -| test.c:411:35:411:35 | e | 1.0 | -| test.c:411:39:411:39 | f | 1.0 | -| test.c:411:43:411:43 | g | 1.0 | -| test.c:411:47:411:47 | h | 1.0 | -| test.c:411:51:411:51 | i | 1.0 | -| test.c:411:55:411:55 | j | 1.0 | -| test.c:411:59:411:59 | k | 1.0 | -| test.c:411:63:411:63 | l | 1.0 | -| test.c:413:10:413:15 | output | 1.0 | -| test.c:420:7:420:9 | rhs | 1.0 | -| test.c:420:7:420:14 | ... < ... | 1.0 | -| test.c:420:13:420:14 | 12 | 1.0 | -| test.c:420:13:420:14 | (unsigned int)... | 1.0 | -| test.c:420:19:420:21 | rhs | 1.0 | -| test.c:420:19:420:26 | ... << ... | 1.0 | -| test.c:420:26:420:26 | 1 | 1.0 | -| test.c:421:7:421:9 | rhs | 2.0 | -| test.c:421:7:421:14 | ... < ... | 1.0 | -| test.c:421:13:421:14 | 13 | 1.0 | -| test.c:421:13:421:14 | (unsigned int)... | 1.0 | -| test.c:421:19:421:21 | rhs | 2.0 | -| test.c:421:19:421:26 | ... << ... | 1.0 | -| test.c:421:26:421:26 | 1 | 1.0 | -| test.c:422:7:422:9 | rhs | 3.0 | -| test.c:422:7:422:14 | ... < ... | 1.0 | -| test.c:422:13:422:14 | 14 | 1.0 | -| test.c:422:13:422:14 | (unsigned int)... | 1.0 | -| test.c:422:19:422:21 | rhs | 3.0 | -| test.c:422:19:422:26 | ... << ... | 1.0 | -| test.c:422:26:422:26 | 1 | 1.0 | -| test.c:423:7:423:9 | rhs | 4.0 | -| test.c:423:7:423:14 | ... < ... | 1.0 | -| test.c:423:13:423:14 | 15 | 1.0 | -| test.c:423:13:423:14 | (unsigned int)... | 1.0 | -| test.c:423:19:423:21 | rhs | 4.0 | -| test.c:423:19:423:26 | ... << ... | 1.0 | -| test.c:423:26:423:26 | 1 | 1.0 | -| test.c:424:7:424:9 | rhs | 5.0 | -| test.c:424:7:424:14 | ... < ... | 1.0 | -| test.c:424:13:424:14 | 16 | 1.0 | -| test.c:424:13:424:14 | (unsigned int)... | 1.0 | -| test.c:424:19:424:21 | rhs | 5.0 | -| test.c:424:19:424:26 | ... << ... | 1.0 | -| test.c:424:26:424:26 | 1 | 1.0 | -| test.c:425:10:425:12 | (int)... | 6.0 | -| test.c:425:10:425:12 | rhs | 6.0 | -| test.c:432:4:434:50 | (...) | 1.0 | -| test.c:432:4:517:26 | ... > ... | 1.0 | -| test.c:432:4:606:27 | ... ? ... : ... | 1.297918419127476E201 | -| test.c:432:5:432:6 | 14 | 1.0 | -| test.c:432:5:432:6 | (unsigned int)... | 1.0 | -| test.c:432:5:432:11 | ... * ... | 1.0 | -| test.c:432:5:432:55 | ... > ... | 1.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 1.0 | -| test.c:432:10:432:11 | ip | 1.0 | -| test.c:432:15:432:26 | (...) | 1.0 | -| test.c:432:15:432:31 | ... * ... | 1.0 | -| test.c:432:15:432:55 | ... + ... | 1.0 | -| test.c:432:16:432:16 | 2 | 1.0 | -| test.c:432:16:432:16 | (unsigned int)... | 1.0 | -| test.c:432:16:432:21 | ... * ... | 1.0 | -| test.c:432:16:432:25 | ... + ... | 1.0 | -| test.c:432:20:432:21 | ip | 1.0 | -| test.c:432:25:432:25 | 1 | 1.0 | -| test.c:432:25:432:25 | (unsigned int)... | 1.0 | -| test.c:432:30:432:31 | 17 | 1.0 | -| test.c:432:30:432:31 | (unsigned int)... | 1.0 | -| test.c:432:35:432:50 | (...) | 1.0 | -| test.c:432:35:432:55 | ... * ... | 1.0 | -| test.c:432:36:432:36 | 2 | 1.0 | -| test.c:432:36:432:36 | (unsigned int)... | 1.0 | -| test.c:432:36:432:41 | ... * ... | 1.0 | -| test.c:432:36:432:45 | ... + ... | 1.0 | -| test.c:432:36:432:49 | ... + ... | 1.0 | -| test.c:432:40:432:41 | ip | 1.0 | -| test.c:432:45:432:45 | 1 | 1.0 | -| test.c:432:45:432:45 | (unsigned int)... | 1.0 | -| test.c:432:49:432:49 | 1 | 1.0 | -| test.c:432:49:432:49 | (unsigned int)... | 1.0 | -| test.c:432:54:432:55 | 17 | 1.0 | -| test.c:432:54:432:55 | (unsigned int)... | 1.0 | -| test.c:433:9:433:10 | 14 | 1.0 | -| test.c:433:9:433:10 | (unsigned int)... | 1.0 | -| test.c:433:9:433:15 | ... * ... | 1.0 | -| test.c:433:14:433:15 | ip | 1.0 | -| test.c:434:9:434:20 | (...) | 1.0 | -| test.c:434:9:434:25 | ... * ... | 1.0 | -| test.c:434:9:434:49 | ... + ... | 1.0 | -| test.c:434:10:434:10 | 2 | 1.0 | -| test.c:434:10:434:10 | (unsigned int)... | 1.0 | -| test.c:434:10:434:15 | ... * ... | 1.0 | -| test.c:434:10:434:19 | ... + ... | 1.0 | -| test.c:434:14:434:15 | ip | 1.0 | -| test.c:434:19:434:19 | 1 | 1.0 | -| test.c:434:19:434:19 | (unsigned int)... | 1.0 | -| test.c:434:24:434:25 | 14 | 1.0 | -| test.c:434:24:434:25 | (unsigned int)... | 1.0 | -| test.c:434:29:434:44 | (...) | 1.0 | -| test.c:434:29:434:49 | ... * ... | 1.0 | -| test.c:434:30:434:30 | 2 | 1.0 | -| test.c:434:30:434:30 | (unsigned int)... | 1.0 | -| test.c:434:30:434:35 | ... * ... | 1.0 | -| test.c:434:30:434:39 | ... + ... | 1.0 | -| test.c:434:30:434:43 | ... + ... | 1.0 | -| test.c:434:34:434:35 | ip | 1.0 | -| test.c:434:39:434:39 | 1 | 1.0 | -| test.c:434:39:434:39 | (unsigned int)... | 1.0 | -| test.c:434:43:434:43 | 1 | 1.0 | -| test.c:434:43:434:43 | (unsigned int)... | 1.0 | -| test.c:434:48:434:49 | 17 | 1.0 | -| test.c:434:48:434:49 | (unsigned int)... | 1.0 | -| test.c:435:5:517:26 | (...) | 9.29462083211502E84 | -| test.c:435:6:435:6 | 2 | 1.0 | -| test.c:435:6:435:6 | (unsigned int)... | 1.0 | -| test.c:435:6:435:23 | ... * ... | 2.0 | -| test.c:435:6:454:42 | ... + ... | 4.524508125E10 | -| test.c:435:6:474:24 | ... > ... | 1.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 9.29462083211502E84 | -| test.c:435:10:435:23 | (...) | 2.0 | -| test.c:435:11:435:12 | ip | 2.0 | -| test.c:435:11:435:17 | ... * ... | 2.0 | -| test.c:435:11:435:22 | ... + ... | 2.0 | -| test.c:435:16:435:17 | 14 | 1.0 | -| test.c:435:16:435:17 | (unsigned int)... | 1.0 | -| test.c:435:21:435:22 | 32 | 1.0 | -| test.c:435:21:435:22 | (unsigned int)... | 1.0 | -| test.c:436:7:454:42 | (...) | 2.2622540625E10 | -| test.c:436:8:436:8 | 4 | 1.0 | -| test.c:436:8:436:8 | (unsigned int)... | 1.0 | -| test.c:436:8:436:25 | ... * ... | 2.0 | -| test.c:436:8:437:26 | ... + ... | 4.0 | -| test.c:436:8:438:26 | ... + ... | 8.0 | -| test.c:436:8:443:22 | ... + ... | 1000.0 | -| test.c:436:8:444:37 | ... > ... | 1.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 2.2622540625E10 | -| test.c:436:12:436:25 | (...) | 2.0 | -| test.c:436:13:436:14 | ip | 2.0 | -| test.c:436:13:436:19 | ... * ... | 2.0 | -| test.c:436:13:436:24 | ... + ... | 2.0 | -| test.c:436:18:436:19 | 14 | 1.0 | -| test.c:436:18:436:19 | (unsigned int)... | 1.0 | -| test.c:436:23:436:24 | 32 | 1.0 | -| test.c:436:23:436:24 | (unsigned int)... | 1.0 | -| test.c:437:9:437:26 | (...) | 2.0 | -| test.c:437:10:437:10 | 2 | 1.0 | -| test.c:437:10:437:10 | (unsigned int)... | 1.0 | -| test.c:437:10:437:15 | ... * ... | 2.0 | -| test.c:437:10:437:20 | ... * ... | 2.0 | -| test.c:437:10:437:25 | ... + ... | 2.0 | -| test.c:437:14:437:15 | ip | 2.0 | -| test.c:437:19:437:20 | 14 | 1.0 | -| test.c:437:19:437:20 | (unsigned int)... | 1.0 | -| test.c:437:24:437:25 | 32 | 1.0 | -| test.c:437:24:437:25 | (unsigned int)... | 1.0 | -| test.c:438:9:438:9 | 2 | 1.0 | -| test.c:438:9:438:9 | (unsigned int)... | 1.0 | -| test.c:438:9:438:26 | ... * ... | 2.0 | -| test.c:438:13:438:26 | (...) | 2.0 | -| test.c:438:14:438:15 | ip | 2.0 | -| test.c:438:14:438:20 | ... * ... | 2.0 | -| test.c:438:14:438:25 | ... + ... | 2.0 | -| test.c:438:19:438:20 | 14 | 1.0 | -| test.c:438:19:438:20 | (unsigned int)... | 1.0 | -| test.c:438:24:438:25 | 64 | 1.0 | -| test.c:438:24:438:25 | (unsigned int)... | 1.0 | -| test.c:439:9:443:22 | (...) | 125.0 | -| test.c:439:10:439:21 | (...) | 2.0 | -| test.c:439:10:439:26 | ... * ... | 2.0 | -| test.c:439:10:439:80 | ... > ... | 1.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 125.0 | -| test.c:439:11:439:11 | 2 | 1.0 | -| test.c:439:11:439:11 | (unsigned int)... | 1.0 | -| test.c:439:11:439:16 | ... * ... | 2.0 | -| test.c:439:11:439:20 | ... + ... | 2.0 | -| test.c:439:15:439:16 | ip | 2.0 | -| test.c:439:20:439:20 | 1 | 1.0 | -| test.c:439:20:439:20 | (unsigned int)... | 1.0 | -| test.c:439:25:439:26 | 14 | 1.0 | -| test.c:439:25:439:26 | (unsigned int)... | 1.0 | -| test.c:439:30:439:80 | (...) | 4.0 | -| test.c:439:31:439:32 | 17 | 1.0 | -| test.c:439:31:439:32 | (unsigned int)... | 1.0 | -| test.c:439:31:439:43 | ... * ... | 2.0 | -| test.c:439:31:439:53 | ... > ... | 1.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.0 | -| test.c:439:36:439:43 | (...) | 2.0 | -| test.c:439:37:439:37 | 2 | 1.0 | -| test.c:439:37:439:37 | (unsigned int)... | 1.0 | -| test.c:439:37:439:42 | ... * ... | 2.0 | -| test.c:439:41:439:42 | ip | 2.0 | -| test.c:439:47:439:48 | 17 | 1.0 | -| test.c:439:47:439:48 | (unsigned int)... | 1.0 | -| test.c:439:47:439:53 | ... * ... | 2.0 | -| test.c:439:52:439:53 | ip | 2.0 | -| test.c:439:57:439:58 | 17 | 1.0 | -| test.c:439:57:439:58 | (unsigned int)... | 1.0 | -| test.c:439:57:439:69 | ... * ... | 2.0 | -| test.c:439:62:439:69 | (...) | 2.0 | -| test.c:439:63:439:63 | 2 | 1.0 | -| test.c:439:63:439:63 | (unsigned int)... | 1.0 | -| test.c:439:63:439:68 | ... * ... | 2.0 | -| test.c:439:67:439:68 | ip | 2.0 | -| test.c:439:73:439:74 | 17 | 1.0 | -| test.c:439:73:439:74 | (unsigned int)... | 1.0 | -| test.c:439:73:439:79 | ... * ... | 2.0 | -| test.c:439:78:439:79 | ip | 2.0 | -| test.c:440:13:440:24 | (...) | 5.0 | -| test.c:440:13:440:29 | ... * ... | 5.0 | -| test.c:440:14:440:14 | 2 | 1.0 | -| test.c:440:14:440:14 | (unsigned int)... | 1.0 | -| test.c:440:14:440:19 | ... * ... | 5.0 | -| test.c:440:14:440:23 | ... + ... | 5.0 | -| test.c:440:18:440:19 | ip | 5.0 | -| test.c:440:23:440:23 | 1 | 1.0 | -| test.c:440:23:440:23 | (unsigned int)... | 1.0 | -| test.c:440:28:440:29 | 14 | 1.0 | -| test.c:440:28:440:29 | (unsigned int)... | 1.0 | -| test.c:441:13:441:14 | 14 | 1.0 | -| test.c:441:13:441:14 | (unsigned int)... | 1.0 | -| test.c:441:13:441:25 | ... * ... | 5.0 | -| test.c:441:13:441:35 | ... > ... | 1.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 25.0 | -| test.c:441:18:441:25 | (...) | 5.0 | -| test.c:441:19:441:19 | 2 | 1.0 | -| test.c:441:19:441:19 | (unsigned int)... | 1.0 | -| test.c:441:19:441:24 | ... * ... | 5.0 | -| test.c:441:23:441:24 | ip | 5.0 | -| test.c:441:29:441:30 | 17 | 1.0 | -| test.c:441:29:441:30 | (unsigned int)... | 1.0 | -| test.c:441:29:441:35 | ... * ... | 5.0 | -| test.c:441:34:441:35 | ip | 5.0 | -| test.c:442:15:442:16 | 14 | 1.0 | -| test.c:442:15:442:16 | (unsigned int)... | 1.0 | -| test.c:442:15:442:27 | ... * ... | 5.0 | -| test.c:442:20:442:27 | (...) | 5.0 | -| test.c:442:21:442:21 | 2 | 1.0 | -| test.c:442:21:442:21 | (unsigned int)... | 1.0 | -| test.c:442:21:442:26 | ... * ... | 5.0 | -| test.c:442:25:442:26 | ip | 5.0 | -| test.c:443:15:443:16 | 14 | 1.0 | -| test.c:443:15:443:16 | (unsigned int)... | 1.0 | -| test.c:443:15:443:21 | ... * ... | 5.0 | -| test.c:443:20:443:21 | ip | 5.0 | -| test.c:444:7:444:7 | 2 | 1.0 | -| test.c:444:7:444:7 | (unsigned int)... | 1.0 | -| test.c:444:7:444:12 | ... * ... | 15.0 | -| test.c:444:7:444:17 | ... * ... | 15.0 | -| test.c:444:7:444:37 | ... + ... | 225.0 | -| test.c:444:11:444:12 | ip | 15.0 | -| test.c:444:16:444:17 | 14 | 1.0 | -| test.c:444:16:444:17 | (unsigned int)... | 1.0 | -| test.c:444:21:444:32 | (...) | 15.0 | -| test.c:444:21:444:37 | ... * ... | 15.0 | -| test.c:444:22:444:22 | 2 | 1.0 | -| test.c:444:22:444:22 | (unsigned int)... | 1.0 | -| test.c:444:22:444:27 | ... * ... | 15.0 | -| test.c:444:22:444:31 | ... + ... | 15.0 | -| test.c:444:26:444:27 | ip | 15.0 | -| test.c:444:31:444:31 | 1 | 1.0 | -| test.c:444:31:444:31 | (unsigned int)... | 1.0 | -| test.c:444:36:444:37 | 17 | 1.0 | -| test.c:444:36:444:37 | (unsigned int)... | 1.0 | -| test.c:445:11:445:11 | 4 | 1.0 | -| test.c:445:11:445:11 | (unsigned int)... | 1.0 | -| test.c:445:11:445:28 | ... * ... | 15.0 | -| test.c:445:11:446:28 | ... + ... | 225.0 | -| test.c:445:11:447:28 | ... + ... | 3375.0 | -| test.c:445:11:453:24 | ... + ... | 1.00544625E8 | -| test.c:445:15:445:28 | (...) | 15.0 | -| test.c:445:16:445:17 | ip | 15.0 | -| test.c:445:16:445:22 | ... * ... | 15.0 | -| test.c:445:16:445:27 | ... + ... | 15.0 | -| test.c:445:21:445:22 | 14 | 1.0 | -| test.c:445:21:445:22 | (unsigned int)... | 1.0 | -| test.c:445:26:445:27 | 32 | 1.0 | -| test.c:445:26:445:27 | (unsigned int)... | 1.0 | -| test.c:446:11:446:28 | (...) | 15.0 | -| test.c:446:12:446:12 | 2 | 1.0 | -| test.c:446:12:446:12 | (unsigned int)... | 1.0 | -| test.c:446:12:446:17 | ... * ... | 15.0 | -| test.c:446:12:446:22 | ... * ... | 15.0 | -| test.c:446:12:446:27 | ... + ... | 15.0 | -| test.c:446:16:446:17 | ip | 15.0 | -| test.c:446:21:446:22 | 14 | 1.0 | -| test.c:446:21:446:22 | (unsigned int)... | 1.0 | -| test.c:446:26:446:27 | 32 | 1.0 | -| test.c:446:26:446:27 | (unsigned int)... | 1.0 | -| test.c:447:11:447:11 | 2 | 1.0 | -| test.c:447:11:447:11 | (unsigned int)... | 1.0 | -| test.c:447:11:447:28 | ... * ... | 15.0 | -| test.c:447:15:447:28 | (...) | 15.0 | -| test.c:447:16:447:17 | ip | 15.0 | -| test.c:447:16:447:22 | ... * ... | 15.0 | -| test.c:447:16:447:27 | ... + ... | 15.0 | -| test.c:447:21:447:22 | 14 | 1.0 | -| test.c:447:21:447:22 | (unsigned int)... | 1.0 | -| test.c:447:26:447:27 | 64 | 1.0 | -| test.c:447:26:447:27 | (unsigned int)... | 1.0 | -| test.c:448:11:453:24 | (...) | 29791.0 | -| test.c:448:12:448:23 | (...) | 15.0 | -| test.c:448:12:448:28 | ... * ... | 15.0 | -| test.c:448:12:449:61 | ... > ... | 1.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 29791.0 | -| test.c:448:13:448:13 | 2 | 1.0 | -| test.c:448:13:448:13 | (unsigned int)... | 1.0 | -| test.c:448:13:448:18 | ... * ... | 15.0 | -| test.c:448:13:448:22 | ... + ... | 15.0 | -| test.c:448:17:448:18 | ip | 15.0 | -| test.c:448:22:448:22 | 1 | 1.0 | -| test.c:448:22:448:22 | (unsigned int)... | 1.0 | -| test.c:448:27:448:28 | 14 | 1.0 | -| test.c:448:27:448:28 | (unsigned int)... | 1.0 | -| test.c:449:11:449:61 | (...) | 225.0 | -| test.c:449:12:449:13 | 14 | 1.0 | -| test.c:449:12:449:13 | (unsigned int)... | 1.0 | -| test.c:449:12:449:24 | ... * ... | 15.0 | -| test.c:449:12:449:34 | ... > ... | 1.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 225.0 | -| test.c:449:17:449:24 | (...) | 15.0 | -| test.c:449:18:449:18 | 2 | 1.0 | -| test.c:449:18:449:18 | (unsigned int)... | 1.0 | -| test.c:449:18:449:23 | ... * ... | 15.0 | -| test.c:449:22:449:23 | ip | 15.0 | -| test.c:449:28:449:29 | 17 | 1.0 | -| test.c:449:28:449:29 | (unsigned int)... | 1.0 | -| test.c:449:28:449:34 | ... * ... | 15.0 | -| test.c:449:33:449:34 | ip | 15.0 | -| test.c:449:38:449:39 | 17 | 1.0 | -| test.c:449:38:449:39 | (unsigned int)... | 1.0 | -| test.c:449:38:449:50 | ... * ... | 15.0 | -| test.c:449:43:449:50 | (...) | 15.0 | -| test.c:449:44:449:44 | 2 | 1.0 | -| test.c:449:44:449:44 | (unsigned int)... | 1.0 | -| test.c:449:44:449:49 | ... * ... | 15.0 | -| test.c:449:48:449:49 | ip | 15.0 | -| test.c:449:54:449:55 | 17 | 1.0 | -| test.c:449:54:449:55 | (unsigned int)... | 1.0 | -| test.c:449:54:449:60 | ... * ... | 15.0 | -| test.c:449:59:449:60 | ip | 15.0 | -| test.c:450:15:450:26 | (...) | 31.0 | -| test.c:450:15:450:31 | ... * ... | 31.0 | -| test.c:450:16:450:16 | 2 | 1.0 | -| test.c:450:16:450:16 | (unsigned int)... | 1.0 | -| test.c:450:16:450:21 | ... * ... | 31.0 | -| test.c:450:16:450:25 | ... + ... | 31.0 | -| test.c:450:20:450:21 | ip | 31.0 | -| test.c:450:25:450:25 | 1 | 1.0 | -| test.c:450:25:450:25 | (unsigned int)... | 1.0 | -| test.c:450:30:450:31 | 14 | 1.0 | -| test.c:450:30:450:31 | (unsigned int)... | 1.0 | -| test.c:451:15:451:16 | 14 | 1.0 | -| test.c:451:15:451:16 | (unsigned int)... | 1.0 | -| test.c:451:15:451:27 | ... * ... | 31.0 | -| test.c:451:15:451:37 | ... > ... | 1.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 961.0 | -| test.c:451:20:451:27 | (...) | 31.0 | -| test.c:451:21:451:21 | 2 | 1.0 | -| test.c:451:21:451:21 | (unsigned int)... | 1.0 | -| test.c:451:21:451:26 | ... * ... | 31.0 | -| test.c:451:25:451:26 | ip | 31.0 | -| test.c:451:31:451:32 | 17 | 1.0 | -| test.c:451:31:451:32 | (unsigned int)... | 1.0 | -| test.c:451:31:451:37 | ... * ... | 31.0 | -| test.c:451:36:451:37 | ip | 31.0 | -| test.c:452:17:452:18 | 14 | 1.0 | -| test.c:452:17:452:18 | (unsigned int)... | 1.0 | -| test.c:452:17:452:29 | ... * ... | 31.0 | -| test.c:452:22:452:29 | (...) | 31.0 | -| test.c:452:23:452:23 | 2 | 1.0 | -| test.c:452:23:452:23 | (unsigned int)... | 1.0 | -| test.c:452:23:452:28 | ... * ... | 31.0 | -| test.c:452:27:452:28 | ip | 31.0 | -| test.c:453:17:453:18 | 14 | 1.0 | -| test.c:453:17:453:18 | (unsigned int)... | 1.0 | -| test.c:453:17:453:23 | ... * ... | 31.0 | -| test.c:453:22:453:23 | ip | 31.0 | -| test.c:454:11:454:11 | 2 | 1.0 | -| test.c:454:11:454:11 | (unsigned int)... | 1.0 | -| test.c:454:11:454:16 | ... * ... | 15.0 | -| test.c:454:11:454:21 | ... * ... | 15.0 | -| test.c:454:11:454:41 | ... + ... | 225.0 | -| test.c:454:15:454:16 | ip | 15.0 | -| test.c:454:20:454:21 | 14 | 1.0 | -| test.c:454:20:454:21 | (unsigned int)... | 1.0 | -| test.c:454:25:454:36 | (...) | 15.0 | -| test.c:454:25:454:41 | ... * ... | 15.0 | -| test.c:454:26:454:26 | 2 | 1.0 | -| test.c:454:26:454:26 | (unsigned int)... | 1.0 | -| test.c:454:26:454:31 | ... * ... | 15.0 | -| test.c:454:26:454:35 | ... + ... | 15.0 | -| test.c:454:30:454:31 | ip | 15.0 | -| test.c:454:35:454:35 | 1 | 1.0 | -| test.c:454:35:454:35 | (unsigned int)... | 1.0 | -| test.c:454:40:454:41 | 17 | 1.0 | -| test.c:454:40:454:41 | (unsigned int)... | 1.0 | -| test.c:455:5:474:24 | (...) | 6.6142118960740864E25 | -| test.c:455:6:455:6 | 4 | 1.0 | -| test.c:455:6:455:6 | (unsigned int)... | 1.0 | -| test.c:455:6:455:23 | ... * ... | 108.0 | -| test.c:455:6:456:24 | ... + ... | 11664.0 | -| test.c:455:6:457:24 | ... + ... | 1259712.0 | -| test.c:455:6:462:20 | ... + ... | 1.2872131505856E13 | -| test.c:455:6:463:55 | ... > ... | 1.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 6.6142118960740864E25 | -| test.c:455:10:455:23 | (...) | 108.0 | -| test.c:455:11:455:12 | ip | 108.0 | -| test.c:455:11:455:17 | ... * ... | 108.0 | -| test.c:455:11:455:22 | ... + ... | 108.0 | -| test.c:455:16:455:17 | 14 | 1.0 | -| test.c:455:16:455:17 | (unsigned int)... | 1.0 | -| test.c:455:21:455:22 | 32 | 1.0 | -| test.c:455:21:455:22 | (unsigned int)... | 1.0 | -| test.c:456:7:456:24 | (...) | 108.0 | -| test.c:456:8:456:8 | 2 | 1.0 | -| test.c:456:8:456:8 | (unsigned int)... | 1.0 | -| test.c:456:8:456:13 | ... * ... | 108.0 | -| test.c:456:8:456:18 | ... * ... | 108.0 | -| test.c:456:8:456:23 | ... + ... | 108.0 | -| test.c:456:12:456:13 | ip | 108.0 | -| test.c:456:17:456:18 | 14 | 1.0 | -| test.c:456:17:456:18 | (unsigned int)... | 1.0 | -| test.c:456:22:456:23 | 32 | 1.0 | -| test.c:456:22:456:23 | (unsigned int)... | 1.0 | -| test.c:457:7:457:7 | 2 | 1.0 | -| test.c:457:7:457:7 | (unsigned int)... | 1.0 | -| test.c:457:7:457:24 | ... * ... | 108.0 | -| test.c:457:11:457:24 | (...) | 108.0 | -| test.c:457:12:457:13 | ip | 108.0 | -| test.c:457:12:457:18 | ... * ... | 108.0 | -| test.c:457:12:457:23 | ... + ... | 108.0 | -| test.c:457:17:457:18 | 14 | 1.0 | -| test.c:457:17:457:18 | (unsigned int)... | 1.0 | -| test.c:457:22:457:23 | 64 | 1.0 | -| test.c:457:22:457:23 | (unsigned int)... | 1.0 | -| test.c:458:7:462:20 | (...) | 1.0218313E7 | -| test.c:458:8:458:19 | (...) | 108.0 | -| test.c:458:8:458:24 | ... * ... | 108.0 | -| test.c:458:8:458:78 | ... > ... | 1.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 1.0218313E7 | -| test.c:458:9:458:9 | 2 | 1.0 | -| test.c:458:9:458:9 | (unsigned int)... | 1.0 | -| test.c:458:9:458:14 | ... * ... | 108.0 | -| test.c:458:9:458:18 | ... + ... | 108.0 | -| test.c:458:13:458:14 | ip | 108.0 | -| test.c:458:18:458:18 | 1 | 1.0 | -| test.c:458:18:458:18 | (unsigned int)... | 1.0 | -| test.c:458:23:458:24 | 14 | 1.0 | -| test.c:458:23:458:24 | (unsigned int)... | 1.0 | -| test.c:458:28:458:78 | (...) | 11664.0 | -| test.c:458:29:458:30 | 17 | 1.0 | -| test.c:458:29:458:30 | (unsigned int)... | 1.0 | -| test.c:458:29:458:41 | ... * ... | 108.0 | -| test.c:458:29:458:51 | ... > ... | 1.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 11664.0 | -| test.c:458:34:458:41 | (...) | 108.0 | -| test.c:458:35:458:35 | 2 | 1.0 | -| test.c:458:35:458:35 | (unsigned int)... | 1.0 | -| test.c:458:35:458:40 | ... * ... | 108.0 | -| test.c:458:39:458:40 | ip | 108.0 | -| test.c:458:45:458:46 | 17 | 1.0 | -| test.c:458:45:458:46 | (unsigned int)... | 1.0 | -| test.c:458:45:458:51 | ... * ... | 108.0 | -| test.c:458:50:458:51 | ip | 108.0 | -| test.c:458:55:458:56 | 17 | 1.0 | -| test.c:458:55:458:56 | (unsigned int)... | 1.0 | -| test.c:458:55:458:67 | ... * ... | 108.0 | -| test.c:458:60:458:67 | (...) | 108.0 | -| test.c:458:61:458:61 | 2 | 1.0 | -| test.c:458:61:458:61 | (unsigned int)... | 1.0 | -| test.c:458:61:458:66 | ... * ... | 108.0 | -| test.c:458:65:458:66 | ip | 108.0 | -| test.c:458:71:458:72 | 17 | 1.0 | -| test.c:458:71:458:72 | (unsigned int)... | 1.0 | -| test.c:458:71:458:77 | ... * ... | 108.0 | -| test.c:458:76:458:77 | ip | 108.0 | -| test.c:459:11:459:22 | (...) | 217.0 | -| test.c:459:11:459:27 | ... * ... | 217.0 | -| test.c:459:12:459:12 | 2 | 1.0 | -| test.c:459:12:459:12 | (unsigned int)... | 1.0 | -| test.c:459:12:459:17 | ... * ... | 217.0 | -| test.c:459:12:459:21 | ... + ... | 217.0 | -| test.c:459:16:459:17 | ip | 217.0 | -| test.c:459:21:459:21 | 1 | 1.0 | -| test.c:459:21:459:21 | (unsigned int)... | 1.0 | -| test.c:459:26:459:27 | 14 | 1.0 | -| test.c:459:26:459:27 | (unsigned int)... | 1.0 | -| test.c:460:11:460:12 | 14 | 1.0 | -| test.c:460:11:460:12 | (unsigned int)... | 1.0 | -| test.c:460:11:460:23 | ... * ... | 217.0 | -| test.c:460:11:460:33 | ... > ... | 1.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 47089.0 | -| test.c:460:16:460:23 | (...) | 217.0 | -| test.c:460:17:460:17 | 2 | 1.0 | -| test.c:460:17:460:17 | (unsigned int)... | 1.0 | -| test.c:460:17:460:22 | ... * ... | 217.0 | -| test.c:460:21:460:22 | ip | 217.0 | -| test.c:460:27:460:28 | 17 | 1.0 | -| test.c:460:27:460:28 | (unsigned int)... | 1.0 | -| test.c:460:27:460:33 | ... * ... | 217.0 | -| test.c:460:32:460:33 | ip | 217.0 | -| test.c:461:13:461:14 | 14 | 1.0 | -| test.c:461:13:461:14 | (unsigned int)... | 1.0 | -| test.c:461:13:461:25 | ... * ... | 217.0 | -| test.c:461:18:461:25 | (...) | 217.0 | -| test.c:461:19:461:19 | 2 | 1.0 | -| test.c:461:19:461:19 | (unsigned int)... | 1.0 | -| test.c:461:19:461:24 | ... * ... | 217.0 | -| test.c:461:23:461:24 | ip | 217.0 | -| test.c:462:13:462:14 | 14 | 1.0 | -| test.c:462:13:462:14 | (unsigned int)... | 1.0 | -| test.c:462:13:462:19 | ... * ... | 217.0 | -| test.c:462:18:462:19 | ip | 217.0 | -| test.c:463:5:463:55 | (...) | 423801.0 | -| test.c:463:6:463:7 | 14 | 1.0 | -| test.c:463:6:463:7 | (unsigned int)... | 1.0 | -| test.c:463:6:463:12 | ... * ... | 651.0 | -| test.c:463:6:463:28 | ... > ... | 1.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 423801.0 | -| test.c:463:11:463:12 | ip | 651.0 | -| test.c:463:16:463:23 | (...) | 651.0 | -| test.c:463:16:463:28 | ... * ... | 651.0 | -| test.c:463:17:463:18 | ip | 651.0 | -| test.c:463:17:463:22 | ... + ... | 651.0 | -| test.c:463:22:463:22 | 1 | 1.0 | -| test.c:463:22:463:22 | (unsigned int)... | 1.0 | -| test.c:463:27:463:28 | 17 | 1.0 | -| test.c:463:27:463:28 | (unsigned int)... | 1.0 | -| test.c:463:32:463:33 | 17 | 1.0 | -| test.c:463:32:463:33 | (unsigned int)... | 1.0 | -| test.c:463:32:463:38 | ... * ... | 651.0 | -| test.c:463:37:463:38 | ip | 651.0 | -| test.c:463:42:463:49 | (...) | 651.0 | -| test.c:463:42:463:54 | ... * ... | 651.0 | -| test.c:463:43:463:44 | ip | 651.0 | -| test.c:463:43:463:48 | ... + ... | 651.0 | -| test.c:463:48:463:48 | 1 | 1.0 | -| test.c:463:48:463:48 | (unsigned int)... | 1.0 | -| test.c:463:53:463:54 | 17 | 1.0 | -| test.c:463:53:463:54 | (unsigned int)... | 1.0 | -| test.c:464:9:464:9 | 4 | 1.0 | -| test.c:464:9:464:9 | (unsigned int)... | 1.0 | -| test.c:464:9:464:26 | ... * ... | 1302.0 | -| test.c:464:9:465:26 | ... + ... | 1695204.0 | -| test.c:464:9:466:26 | ... + ... | 2.207155608E9 | -| test.c:464:9:471:22 | ... + ... | 3.9017203216097214E19 | -| test.c:464:13:464:26 | (...) | 1302.0 | -| test.c:464:14:464:15 | ip | 1302.0 | -| test.c:464:14:464:20 | ... * ... | 1302.0 | -| test.c:464:14:464:25 | ... + ... | 1302.0 | -| test.c:464:19:464:20 | 14 | 1.0 | -| test.c:464:19:464:20 | (unsigned int)... | 1.0 | -| test.c:464:24:464:25 | 32 | 1.0 | -| test.c:464:24:464:25 | (unsigned int)... | 1.0 | -| test.c:465:9:465:26 | (...) | 1302.0 | -| test.c:465:10:465:10 | 2 | 1.0 | -| test.c:465:10:465:10 | (unsigned int)... | 1.0 | -| test.c:465:10:465:15 | ... * ... | 1302.0 | -| test.c:465:10:465:20 | ... * ... | 1302.0 | -| test.c:465:10:465:25 | ... + ... | 1302.0 | -| test.c:465:14:465:15 | ip | 1302.0 | -| test.c:465:19:465:20 | 14 | 1.0 | -| test.c:465:19:465:20 | (unsigned int)... | 1.0 | -| test.c:465:24:465:25 | 32 | 1.0 | -| test.c:465:24:465:25 | (unsigned int)... | 1.0 | -| test.c:466:9:466:9 | 2 | 1.0 | -| test.c:466:9:466:9 | (unsigned int)... | 1.0 | -| test.c:466:9:466:26 | ... * ... | 1302.0 | -| test.c:466:13:466:26 | (...) | 1302.0 | -| test.c:466:14:466:15 | ip | 1302.0 | -| test.c:466:14:466:20 | ... * ... | 1302.0 | -| test.c:466:14:466:25 | ... + ... | 1302.0 | -| test.c:466:19:466:20 | 14 | 1.0 | -| test.c:466:19:466:20 | (unsigned int)... | 1.0 | -| test.c:466:24:466:25 | 64 | 1.0 | -| test.c:466:24:466:25 | (unsigned int)... | 1.0 | -| test.c:467:9:471:22 | (...) | 1.7677595125E10 | -| test.c:467:10:467:21 | (...) | 1302.0 | -| test.c:467:10:467:26 | ... * ... | 1302.0 | -| test.c:467:10:467:80 | ... > ... | 1.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 1.7677595125E10 | -| test.c:467:11:467:11 | 2 | 1.0 | -| test.c:467:11:467:11 | (unsigned int)... | 1.0 | -| test.c:467:11:467:16 | ... * ... | 1302.0 | -| test.c:467:11:467:20 | ... + ... | 1302.0 | -| test.c:467:15:467:16 | ip | 1302.0 | -| test.c:467:20:467:20 | 1 | 1.0 | -| test.c:467:20:467:20 | (unsigned int)... | 1.0 | -| test.c:467:25:467:26 | 14 | 1.0 | -| test.c:467:25:467:26 | (unsigned int)... | 1.0 | -| test.c:467:30:467:80 | (...) | 1695204.0 | -| test.c:467:31:467:32 | 17 | 1.0 | -| test.c:467:31:467:32 | (unsigned int)... | 1.0 | -| test.c:467:31:467:43 | ... * ... | 1302.0 | -| test.c:467:31:467:53 | ... > ... | 1.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 1695204.0 | -| test.c:467:36:467:43 | (...) | 1302.0 | -| test.c:467:37:467:37 | 2 | 1.0 | -| test.c:467:37:467:37 | (unsigned int)... | 1.0 | -| test.c:467:37:467:42 | ... * ... | 1302.0 | -| test.c:467:41:467:42 | ip | 1302.0 | -| test.c:467:47:467:48 | 17 | 1.0 | -| test.c:467:47:467:48 | (unsigned int)... | 1.0 | -| test.c:467:47:467:53 | ... * ... | 1302.0 | -| test.c:467:52:467:53 | ip | 1302.0 | -| test.c:467:57:467:58 | 17 | 1.0 | -| test.c:467:57:467:58 | (unsigned int)... | 1.0 | -| test.c:467:57:467:69 | ... * ... | 1302.0 | -| test.c:467:62:467:69 | (...) | 1302.0 | -| test.c:467:63:467:63 | 2 | 1.0 | -| test.c:467:63:467:63 | (unsigned int)... | 1.0 | -| test.c:467:63:467:68 | ... * ... | 1302.0 | -| test.c:467:67:467:68 | ip | 1302.0 | -| test.c:467:73:467:74 | 17 | 1.0 | -| test.c:467:73:467:74 | (unsigned int)... | 1.0 | -| test.c:467:73:467:79 | ... * ... | 1302.0 | -| test.c:467:78:467:79 | ip | 1302.0 | -| test.c:468:13:468:24 | (...) | 2605.0 | -| test.c:468:13:468:29 | ... * ... | 2605.0 | -| test.c:468:14:468:14 | 2 | 1.0 | -| test.c:468:14:468:14 | (unsigned int)... | 1.0 | -| test.c:468:14:468:19 | ... * ... | 2605.0 | -| test.c:468:14:468:23 | ... + ... | 2605.0 | -| test.c:468:18:468:19 | ip | 2605.0 | -| test.c:468:23:468:23 | 1 | 1.0 | -| test.c:468:23:468:23 | (unsigned int)... | 1.0 | -| test.c:468:28:468:29 | 14 | 1.0 | -| test.c:468:28:468:29 | (unsigned int)... | 1.0 | -| test.c:469:13:469:14 | 14 | 1.0 | -| test.c:469:13:469:14 | (unsigned int)... | 1.0 | -| test.c:469:13:469:25 | ... * ... | 2605.0 | -| test.c:469:13:469:35 | ... > ... | 1.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 6786025.0 | -| test.c:469:18:469:25 | (...) | 2605.0 | -| test.c:469:19:469:19 | 2 | 1.0 | -| test.c:469:19:469:19 | (unsigned int)... | 1.0 | -| test.c:469:19:469:24 | ... * ... | 2605.0 | -| test.c:469:23:469:24 | ip | 2605.0 | -| test.c:469:29:469:30 | 17 | 1.0 | -| test.c:469:29:469:30 | (unsigned int)... | 1.0 | -| test.c:469:29:469:35 | ... * ... | 2605.0 | -| test.c:469:34:469:35 | ip | 2605.0 | -| test.c:470:15:470:16 | 14 | 1.0 | -| test.c:470:15:470:16 | (unsigned int)... | 1.0 | -| test.c:470:15:470:27 | ... * ... | 2605.0 | -| test.c:470:20:470:27 | (...) | 2605.0 | -| test.c:470:21:470:21 | 2 | 1.0 | -| test.c:470:21:470:21 | (unsigned int)... | 1.0 | -| test.c:470:21:470:26 | ... * ... | 2605.0 | -| test.c:470:25:470:26 | ip | 2605.0 | -| test.c:471:15:471:16 | 14 | 1.0 | -| test.c:471:15:471:16 | (unsigned int)... | 1.0 | -| test.c:471:15:471:21 | ... * ... | 2605.0 | -| test.c:471:20:471:21 | ip | 2605.0 | -| test.c:472:9:472:10 | 14 | 1.0 | -| test.c:472:9:472:10 | (unsigned int)... | 1.0 | -| test.c:472:9:472:15 | ... * ... | 1302.0 | -| test.c:472:9:472:31 | ... > ... | 1.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 1695204.0 | -| test.c:472:14:472:15 | ip | 1302.0 | -| test.c:472:19:472:26 | (...) | 1302.0 | -| test.c:472:19:472:31 | ... * ... | 1302.0 | -| test.c:472:20:472:21 | ip | 1302.0 | -| test.c:472:20:472:25 | ... + ... | 1302.0 | -| test.c:472:25:472:25 | 1 | 1.0 | -| test.c:472:25:472:25 | (unsigned int)... | 1.0 | -| test.c:472:30:472:31 | 17 | 1.0 | -| test.c:472:30:472:31 | (unsigned int)... | 1.0 | -| test.c:473:11:473:12 | 14 | 1.0 | -| test.c:473:11:473:12 | (unsigned int)... | 1.0 | -| test.c:473:11:473:17 | ... * ... | 1302.0 | -| test.c:473:16:473:17 | ip | 1302.0 | -| test.c:474:11:474:18 | (...) | 1302.0 | -| test.c:474:11:474:23 | ... * ... | 1302.0 | -| test.c:474:12:474:13 | ip | 1302.0 | -| test.c:474:12:474:17 | ... + ... | 1302.0 | -| test.c:474:17:474:17 | 1 | 1.0 | -| test.c:474:17:474:17 | (unsigned int)... | 1.0 | -| test.c:474:22:474:23 | 14 | 1.0 | -| test.c:474:22:474:23 | (unsigned int)... | 1.0 | -| test.c:475:9:475:9 | 2 | 1.0 | -| test.c:475:9:475:9 | (unsigned int)... | 1.0 | -| test.c:475:9:475:26 | ... * ... | 10419.0 | -| test.c:475:9:495:44 | ... + ... | 1.9449636104972528E43 | -| test.c:475:13:475:26 | (...) | 10419.0 | -| test.c:475:14:475:15 | ip | 10419.0 | -| test.c:475:14:475:20 | ... * ... | 10419.0 | -| test.c:475:14:475:25 | ... + ... | 10419.0 | -| test.c:475:19:475:20 | 14 | 1.0 | -| test.c:475:19:475:20 | (unsigned int)... | 1.0 | -| test.c:475:24:475:25 | 32 | 1.0 | -| test.c:475:24:475:25 | (unsigned int)... | 1.0 | -| test.c:476:9:495:44 | (...) | 1.8667469147684545E39 | -| test.c:476:10:476:10 | 4 | 1.0 | -| test.c:476:10:476:10 | (unsigned int)... | 1.0 | -| test.c:476:10:476:27 | ... * ... | 10419.0 | -| test.c:476:10:477:28 | ... + ... | 1.08555561E8 | -| test.c:476:10:478:28 | ... + ... | 1.131040390059E12 | -| test.c:476:10:484:24 | ... + ... | 1.0235492350954187E25 | -| test.c:476:10:485:39 | ... > ... | 1.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 1.8667469147684545E39 | -| test.c:476:14:476:27 | (...) | 10419.0 | -| test.c:476:15:476:16 | ip | 10419.0 | -| test.c:476:15:476:21 | ... * ... | 10419.0 | -| test.c:476:15:476:26 | ... + ... | 10419.0 | -| test.c:476:20:476:21 | 14 | 1.0 | -| test.c:476:20:476:21 | (unsigned int)... | 1.0 | -| test.c:476:25:476:26 | 32 | 1.0 | -| test.c:476:25:476:26 | (unsigned int)... | 1.0 | -| test.c:477:11:477:28 | (...) | 10419.0 | -| test.c:477:12:477:12 | 2 | 1.0 | -| test.c:477:12:477:12 | (unsigned int)... | 1.0 | -| test.c:477:12:477:17 | ... * ... | 10419.0 | -| test.c:477:12:477:22 | ... * ... | 10419.0 | -| test.c:477:12:477:27 | ... + ... | 10419.0 | -| test.c:477:16:477:17 | ip | 10419.0 | -| test.c:477:21:477:22 | 14 | 1.0 | -| test.c:477:21:477:22 | (unsigned int)... | 1.0 | -| test.c:477:26:477:27 | 32 | 1.0 | -| test.c:477:26:477:27 | (unsigned int)... | 1.0 | -| test.c:478:11:478:11 | 2 | 1.0 | -| test.c:478:11:478:11 | (unsigned int)... | 1.0 | -| test.c:478:11:478:28 | ... * ... | 10419.0 | -| test.c:478:15:478:28 | (...) | 10419.0 | -| test.c:478:16:478:17 | ip | 10419.0 | -| test.c:478:16:478:22 | ... * ... | 10419.0 | -| test.c:478:16:478:27 | ... + ... | 10419.0 | -| test.c:478:21:478:22 | 14 | 1.0 | -| test.c:478:21:478:22 | (unsigned int)... | 1.0 | -| test.c:478:26:478:27 | 64 | 1.0 | -| test.c:478:26:478:27 | (unsigned int)... | 1.0 | -| test.c:479:11:484:24 | (...) | 9.049625849719E12 | -| test.c:479:12:479:23 | (...) | 10419.0 | -| test.c:479:12:479:28 | ... * ... | 10419.0 | -| test.c:479:12:480:61 | ... > ... | 1.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 9.049625849719E12 | -| test.c:479:13:479:13 | 2 | 1.0 | -| test.c:479:13:479:13 | (unsigned int)... | 1.0 | -| test.c:479:13:479:18 | ... * ... | 10419.0 | -| test.c:479:13:479:22 | ... + ... | 10419.0 | -| test.c:479:17:479:18 | ip | 10419.0 | -| test.c:479:22:479:22 | 1 | 1.0 | -| test.c:479:22:479:22 | (unsigned int)... | 1.0 | -| test.c:479:27:479:28 | 14 | 1.0 | -| test.c:479:27:479:28 | (unsigned int)... | 1.0 | -| test.c:480:11:480:61 | (...) | 1.08555561E8 | -| test.c:480:12:480:13 | 14 | 1.0 | -| test.c:480:12:480:13 | (unsigned int)... | 1.0 | -| test.c:480:12:480:24 | ... * ... | 10419.0 | -| test.c:480:12:480:34 | ... > ... | 1.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 1.08555561E8 | -| test.c:480:17:480:24 | (...) | 10419.0 | -| test.c:480:18:480:18 | 2 | 1.0 | -| test.c:480:18:480:18 | (unsigned int)... | 1.0 | -| test.c:480:18:480:23 | ... * ... | 10419.0 | -| test.c:480:22:480:23 | ip | 10419.0 | -| test.c:480:28:480:29 | 17 | 1.0 | -| test.c:480:28:480:29 | (unsigned int)... | 1.0 | -| test.c:480:28:480:34 | ... * ... | 10419.0 | -| test.c:480:33:480:34 | ip | 10419.0 | -| test.c:480:38:480:39 | 17 | 1.0 | -| test.c:480:38:480:39 | (unsigned int)... | 1.0 | -| test.c:480:38:480:50 | ... * ... | 10419.0 | -| test.c:480:43:480:50 | (...) | 10419.0 | -| test.c:480:44:480:44 | 2 | 1.0 | -| test.c:480:44:480:44 | (unsigned int)... | 1.0 | -| test.c:480:44:480:49 | ... * ... | 10419.0 | -| test.c:480:48:480:49 | ip | 10419.0 | -| test.c:480:54:480:55 | 17 | 1.0 | -| test.c:480:54:480:55 | (unsigned int)... | 1.0 | -| test.c:480:54:480:60 | ... * ... | 10419.0 | -| test.c:480:59:480:60 | ip | 10419.0 | -| test.c:481:15:481:26 | (...) | 20839.0 | -| test.c:481:15:481:31 | ... * ... | 20839.0 | -| test.c:481:16:481:16 | 2 | 1.0 | -| test.c:481:16:481:16 | (unsigned int)... | 1.0 | -| test.c:481:16:481:21 | ... * ... | 20839.0 | -| test.c:481:16:481:25 | ... + ... | 20839.0 | -| test.c:481:20:481:21 | ip | 20839.0 | -| test.c:481:25:481:25 | 1 | 1.0 | -| test.c:481:25:481:25 | (unsigned int)... | 1.0 | -| test.c:481:30:481:31 | 14 | 1.0 | -| test.c:481:30:481:31 | (unsigned int)... | 1.0 | -| test.c:482:15:482:16 | 14 | 1.0 | -| test.c:482:15:482:16 | (unsigned int)... | 1.0 | -| test.c:482:15:482:27 | ... * ... | 20839.0 | -| test.c:482:15:482:37 | ... > ... | 1.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.34263921E8 | -| test.c:482:20:482:27 | (...) | 20839.0 | -| test.c:482:21:482:21 | 2 | 1.0 | -| test.c:482:21:482:21 | (unsigned int)... | 1.0 | -| test.c:482:21:482:26 | ... * ... | 20839.0 | -| test.c:482:25:482:26 | ip | 20839.0 | -| test.c:482:31:482:32 | 17 | 1.0 | -| test.c:482:31:482:32 | (unsigned int)... | 1.0 | -| test.c:482:31:482:37 | ... * ... | 20839.0 | -| test.c:482:36:482:37 | ip | 20839.0 | -| test.c:483:17:483:18 | 14 | 1.0 | -| test.c:483:17:483:18 | (unsigned int)... | 1.0 | -| test.c:483:17:483:29 | ... * ... | 20839.0 | -| test.c:483:22:483:29 | (...) | 20839.0 | -| test.c:483:23:483:23 | 2 | 1.0 | -| test.c:483:23:483:23 | (unsigned int)... | 1.0 | -| test.c:483:23:483:28 | ... * ... | 20839.0 | -| test.c:483:27:483:28 | ip | 20839.0 | -| test.c:484:17:484:18 | 14 | 1.0 | -| test.c:484:17:484:18 | (unsigned int)... | 1.0 | -| test.c:484:17:484:23 | ... * ... | 20839.0 | -| test.c:484:22:484:23 | ip | 20839.0 | -| test.c:485:9:485:9 | 2 | 1.0 | -| test.c:485:9:485:9 | (unsigned int)... | 1.0 | -| test.c:485:9:485:14 | ... * ... | 62517.0 | -| test.c:485:9:485:19 | ... * ... | 62517.0 | -| test.c:485:9:485:39 | ... + ... | 3.908375289E9 | -| test.c:485:13:485:14 | ip | 62517.0 | -| test.c:485:18:485:19 | 14 | 1.0 | -| test.c:485:18:485:19 | (unsigned int)... | 1.0 | -| test.c:485:23:485:34 | (...) | 62517.0 | -| test.c:485:23:485:39 | ... * ... | 62517.0 | -| test.c:485:24:485:24 | 2 | 1.0 | -| test.c:485:24:485:24 | (unsigned int)... | 1.0 | -| test.c:485:24:485:29 | ... * ... | 62517.0 | -| test.c:485:24:485:33 | ... + ... | 62517.0 | -| test.c:485:28:485:29 | ip | 62517.0 | -| test.c:485:33:485:33 | 1 | 1.0 | -| test.c:485:33:485:33 | (unsigned int)... | 1.0 | -| test.c:485:38:485:39 | 17 | 1.0 | -| test.c:485:38:485:39 | (unsigned int)... | 1.0 | -| test.c:486:13:486:13 | 4 | 1.0 | -| test.c:486:13:486:13 | (unsigned int)... | 1.0 | -| test.c:486:13:486:30 | ... * ... | 62517.0 | -| test.c:486:13:487:30 | ... + ... | 3.908375289E9 | -| test.c:486:13:488:30 | ... + ... | 2.44339897942413E14 | -| test.c:486:13:494:26 | ... + ... | 4.7762734556795386E29 | -| test.c:486:17:486:30 | (...) | 62517.0 | -| test.c:486:18:486:19 | ip | 62517.0 | -| test.c:486:18:486:24 | ... * ... | 62517.0 | -| test.c:486:18:486:29 | ... + ... | 62517.0 | -| test.c:486:23:486:24 | 14 | 1.0 | -| test.c:486:23:486:24 | (unsigned int)... | 1.0 | -| test.c:486:28:486:29 | 32 | 1.0 | -| test.c:486:28:486:29 | (unsigned int)... | 1.0 | -| test.c:487:13:487:30 | (...) | 62517.0 | -| test.c:487:14:487:14 | 2 | 1.0 | -| test.c:487:14:487:14 | (unsigned int)... | 1.0 | -| test.c:487:14:487:19 | ... * ... | 62517.0 | -| test.c:487:14:487:24 | ... * ... | 62517.0 | -| test.c:487:14:487:29 | ... + ... | 62517.0 | -| test.c:487:18:487:19 | ip | 62517.0 | -| test.c:487:23:487:24 | 14 | 1.0 | -| test.c:487:23:487:24 | (unsigned int)... | 1.0 | -| test.c:487:28:487:29 | 32 | 1.0 | -| test.c:487:28:487:29 | (unsigned int)... | 1.0 | -| test.c:488:13:488:13 | 2 | 1.0 | -| test.c:488:13:488:13 | (unsigned int)... | 1.0 | -| test.c:488:13:488:30 | ... * ... | 62517.0 | -| test.c:488:17:488:30 | (...) | 62517.0 | -| test.c:488:18:488:19 | ip | 62517.0 | -| test.c:488:18:488:24 | ... * ... | 62517.0 | -| test.c:488:18:488:29 | ... + ... | 62517.0 | -| test.c:488:23:488:24 | 14 | 1.0 | -| test.c:488:23:488:24 | (unsigned int)... | 1.0 | -| test.c:488:28:488:29 | 64 | 1.0 | -| test.c:488:28:488:29 | (unsigned int)... | 1.0 | -| test.c:489:13:494:26 | (...) | 1.954766084417875E15 | -| test.c:489:14:489:25 | (...) | 62517.0 | -| test.c:489:14:489:30 | ... * ... | 62517.0 | -| test.c:489:14:490:63 | ... > ... | 1.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 1.954766084417875E15 | -| test.c:489:15:489:15 | 2 | 1.0 | -| test.c:489:15:489:15 | (unsigned int)... | 1.0 | -| test.c:489:15:489:20 | ... * ... | 62517.0 | -| test.c:489:15:489:24 | ... + ... | 62517.0 | -| test.c:489:19:489:20 | ip | 62517.0 | -| test.c:489:24:489:24 | 1 | 1.0 | -| test.c:489:24:489:24 | (unsigned int)... | 1.0 | -| test.c:489:29:489:30 | 14 | 1.0 | -| test.c:489:29:489:30 | (unsigned int)... | 1.0 | -| test.c:490:13:490:63 | (...) | 3.908375289E9 | -| test.c:490:14:490:15 | 14 | 1.0 | -| test.c:490:14:490:15 | (unsigned int)... | 1.0 | -| test.c:490:14:490:26 | ... * ... | 62517.0 | -| test.c:490:14:490:36 | ... > ... | 1.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 3.908375289E9 | -| test.c:490:19:490:26 | (...) | 62517.0 | -| test.c:490:20:490:20 | 2 | 1.0 | -| test.c:490:20:490:20 | (unsigned int)... | 1.0 | -| test.c:490:20:490:25 | ... * ... | 62517.0 | -| test.c:490:24:490:25 | ip | 62517.0 | -| test.c:490:30:490:31 | 17 | 1.0 | -| test.c:490:30:490:31 | (unsigned int)... | 1.0 | -| test.c:490:30:490:36 | ... * ... | 62517.0 | -| test.c:490:35:490:36 | ip | 62517.0 | -| test.c:490:40:490:41 | 17 | 1.0 | -| test.c:490:40:490:41 | (unsigned int)... | 1.0 | -| test.c:490:40:490:52 | ... * ... | 62517.0 | -| test.c:490:45:490:52 | (...) | 62517.0 | -| test.c:490:46:490:46 | 2 | 1.0 | -| test.c:490:46:490:46 | (unsigned int)... | 1.0 | -| test.c:490:46:490:51 | ... * ... | 62517.0 | -| test.c:490:50:490:51 | ip | 62517.0 | -| test.c:490:56:490:57 | 17 | 1.0 | -| test.c:490:56:490:57 | (unsigned int)... | 1.0 | -| test.c:490:56:490:62 | ... * ... | 62517.0 | -| test.c:490:61:490:62 | ip | 62517.0 | -| test.c:491:17:491:28 | (...) | 125035.0 | -| test.c:491:17:491:33 | ... * ... | 125035.0 | -| test.c:491:18:491:18 | 2 | 1.0 | -| test.c:491:18:491:18 | (unsigned int)... | 1.0 | -| test.c:491:18:491:23 | ... * ... | 125035.0 | -| test.c:491:18:491:27 | ... + ... | 125035.0 | -| test.c:491:22:491:23 | ip | 125035.0 | -| test.c:491:27:491:27 | 1 | 1.0 | -| test.c:491:27:491:27 | (unsigned int)... | 1.0 | -| test.c:491:32:491:33 | 14 | 1.0 | -| test.c:491:32:491:33 | (unsigned int)... | 1.0 | -| test.c:492:17:492:18 | 14 | 1.0 | -| test.c:492:17:492:18 | (unsigned int)... | 1.0 | -| test.c:492:17:492:29 | ... * ... | 125035.0 | -| test.c:492:17:492:39 | ... > ... | 1.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 1.5633751225E10 | -| test.c:492:22:492:29 | (...) | 125035.0 | -| test.c:492:23:492:23 | 2 | 1.0 | -| test.c:492:23:492:23 | (unsigned int)... | 1.0 | -| test.c:492:23:492:28 | ... * ... | 125035.0 | -| test.c:492:27:492:28 | ip | 125035.0 | -| test.c:492:33:492:34 | 17 | 1.0 | -| test.c:492:33:492:34 | (unsigned int)... | 1.0 | -| test.c:492:33:492:39 | ... * ... | 125035.0 | -| test.c:492:38:492:39 | ip | 125035.0 | -| test.c:493:19:493:20 | 14 | 1.0 | -| test.c:493:19:493:20 | (unsigned int)... | 1.0 | -| test.c:493:19:493:31 | ... * ... | 125035.0 | -| test.c:493:24:493:31 | (...) | 125035.0 | -| test.c:493:25:493:25 | 2 | 1.0 | -| test.c:493:25:493:25 | (unsigned int)... | 1.0 | -| test.c:493:25:493:30 | ... * ... | 125035.0 | -| test.c:493:29:493:30 | ip | 125035.0 | -| test.c:494:19:494:20 | 14 | 1.0 | -| test.c:494:19:494:20 | (unsigned int)... | 1.0 | -| test.c:494:19:494:25 | ... * ... | 125035.0 | -| test.c:494:24:494:25 | ip | 125035.0 | -| test.c:495:13:495:13 | 2 | 1.0 | -| test.c:495:13:495:13 | (unsigned int)... | 1.0 | -| test.c:495:13:495:18 | ... * ... | 62517.0 | -| test.c:495:13:495:23 | ... * ... | 62517.0 | -| test.c:495:13:495:43 | ... + ... | 3.908375289E9 | -| test.c:495:17:495:18 | ip | 62517.0 | -| test.c:495:22:495:23 | 14 | 1.0 | -| test.c:495:22:495:23 | (unsigned int)... | 1.0 | -| test.c:495:27:495:38 | (...) | 62517.0 | -| test.c:495:27:495:43 | ... * ... | 62517.0 | -| test.c:495:28:495:28 | 2 | 1.0 | -| test.c:495:28:495:28 | (unsigned int)... | 1.0 | -| test.c:495:28:495:33 | ... * ... | 62517.0 | -| test.c:495:28:495:37 | ... + ... | 62517.0 | -| test.c:495:32:495:33 | ip | 62517.0 | -| test.c:495:37:495:37 | 1 | 1.0 | -| test.c:495:37:495:37 | (unsigned int)... | 1.0 | -| test.c:495:42:495:43 | 17 | 1.0 | -| test.c:495:42:495:43 | (unsigned int)... | 1.0 | -| test.c:496:9:496:9 | 4 | 1.0 | -| test.c:496:9:496:9 | (unsigned int)... | 1.0 | -| test.c:496:9:496:26 | ... * ... | 10419.0 | -| test.c:496:9:497:30 | ... + ... | 1.08555561E8 | -| test.c:496:9:498:30 | ... + ... | 1.131040390059E12 | -| test.c:496:9:504:26 | ... + ... | 1.0235492350954187E25 | -| test.c:496:9:505:61 | ... > ... | 1.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.778814771623795E41 | -| test.c:496:13:496:26 | (...) | 10419.0 | -| test.c:496:14:496:15 | ip | 10419.0 | -| test.c:496:14:496:20 | ... * ... | 10419.0 | -| test.c:496:14:496:25 | ... + ... | 10419.0 | -| test.c:496:19:496:20 | 14 | 1.0 | -| test.c:496:19:496:20 | (unsigned int)... | 1.0 | -| test.c:496:24:496:25 | 32 | 1.0 | -| test.c:496:24:496:25 | (unsigned int)... | 1.0 | -| test.c:497:13:497:30 | (...) | 10419.0 | -| test.c:497:14:497:14 | 2 | 1.0 | -| test.c:497:14:497:14 | (unsigned int)... | 1.0 | -| test.c:497:14:497:19 | ... * ... | 10419.0 | -| test.c:497:14:497:24 | ... * ... | 10419.0 | -| test.c:497:14:497:29 | ... + ... | 10419.0 | -| test.c:497:18:497:19 | ip | 10419.0 | -| test.c:497:23:497:24 | 14 | 1.0 | -| test.c:497:23:497:24 | (unsigned int)... | 1.0 | -| test.c:497:28:497:29 | 32 | 1.0 | -| test.c:497:28:497:29 | (unsigned int)... | 1.0 | -| test.c:498:13:498:13 | 2 | 1.0 | -| test.c:498:13:498:13 | (unsigned int)... | 1.0 | -| test.c:498:13:498:30 | ... * ... | 10419.0 | -| test.c:498:17:498:30 | (...) | 10419.0 | -| test.c:498:18:498:19 | ip | 10419.0 | -| test.c:498:18:498:24 | ... * ... | 10419.0 | -| test.c:498:18:498:29 | ... + ... | 10419.0 | -| test.c:498:23:498:24 | 14 | 1.0 | -| test.c:498:23:498:24 | (unsigned int)... | 1.0 | -| test.c:498:28:498:29 | 64 | 1.0 | -| test.c:498:28:498:29 | (unsigned int)... | 1.0 | -| test.c:499:13:504:26 | (...) | 9.049625849719E12 | -| test.c:499:14:499:25 | (...) | 10419.0 | -| test.c:499:14:499:30 | ... * ... | 10419.0 | -| test.c:499:14:500:63 | ... > ... | 1.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 9.049625849719E12 | -| test.c:499:15:499:15 | 2 | 1.0 | -| test.c:499:15:499:15 | (unsigned int)... | 1.0 | -| test.c:499:15:499:20 | ... * ... | 10419.0 | -| test.c:499:15:499:24 | ... + ... | 10419.0 | -| test.c:499:19:499:20 | ip | 10419.0 | -| test.c:499:24:499:24 | 1 | 1.0 | -| test.c:499:24:499:24 | (unsigned int)... | 1.0 | -| test.c:499:29:499:30 | 14 | 1.0 | -| test.c:499:29:499:30 | (unsigned int)... | 1.0 | -| test.c:500:13:500:63 | (...) | 1.08555561E8 | -| test.c:500:14:500:15 | 14 | 1.0 | -| test.c:500:14:500:15 | (unsigned int)... | 1.0 | -| test.c:500:14:500:26 | ... * ... | 10419.0 | -| test.c:500:14:500:36 | ... > ... | 1.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 1.08555561E8 | -| test.c:500:19:500:26 | (...) | 10419.0 | -| test.c:500:20:500:20 | 2 | 1.0 | -| test.c:500:20:500:20 | (unsigned int)... | 1.0 | -| test.c:500:20:500:25 | ... * ... | 10419.0 | -| test.c:500:24:500:25 | ip | 10419.0 | -| test.c:500:30:500:31 | 17 | 1.0 | -| test.c:500:30:500:31 | (unsigned int)... | 1.0 | -| test.c:500:30:500:36 | ... * ... | 10419.0 | -| test.c:500:35:500:36 | ip | 10419.0 | -| test.c:500:40:500:41 | 17 | 1.0 | -| test.c:500:40:500:41 | (unsigned int)... | 1.0 | -| test.c:500:40:500:52 | ... * ... | 10419.0 | -| test.c:500:45:500:52 | (...) | 10419.0 | -| test.c:500:46:500:46 | 2 | 1.0 | -| test.c:500:46:500:46 | (unsigned int)... | 1.0 | -| test.c:500:46:500:51 | ... * ... | 10419.0 | -| test.c:500:50:500:51 | ip | 10419.0 | -| test.c:500:56:500:57 | 17 | 1.0 | -| test.c:500:56:500:57 | (unsigned int)... | 1.0 | -| test.c:500:56:500:62 | ... * ... | 10419.0 | -| test.c:500:61:500:62 | ip | 10419.0 | -| test.c:501:17:501:28 | (...) | 20839.0 | -| test.c:501:17:501:33 | ... * ... | 20839.0 | -| test.c:501:18:501:18 | 2 | 1.0 | -| test.c:501:18:501:18 | (unsigned int)... | 1.0 | -| test.c:501:18:501:23 | ... * ... | 20839.0 | -| test.c:501:18:501:27 | ... + ... | 20839.0 | -| test.c:501:22:501:23 | ip | 20839.0 | -| test.c:501:27:501:27 | 1 | 1.0 | -| test.c:501:27:501:27 | (unsigned int)... | 1.0 | -| test.c:501:32:501:33 | 14 | 1.0 | -| test.c:501:32:501:33 | (unsigned int)... | 1.0 | -| test.c:502:17:502:18 | 14 | 1.0 | -| test.c:502:17:502:18 | (unsigned int)... | 1.0 | -| test.c:502:17:502:29 | ... * ... | 20839.0 | -| test.c:502:17:502:39 | ... > ... | 1.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.34263921E8 | -| test.c:502:22:502:29 | (...) | 20839.0 | -| test.c:502:23:502:23 | 2 | 1.0 | -| test.c:502:23:502:23 | (unsigned int)... | 1.0 | -| test.c:502:23:502:28 | ... * ... | 20839.0 | -| test.c:502:27:502:28 | ip | 20839.0 | -| test.c:502:33:502:34 | 17 | 1.0 | -| test.c:502:33:502:34 | (unsigned int)... | 1.0 | -| test.c:502:33:502:39 | ... * ... | 20839.0 | -| test.c:502:38:502:39 | ip | 20839.0 | -| test.c:503:19:503:20 | 14 | 1.0 | -| test.c:503:19:503:20 | (unsigned int)... | 1.0 | -| test.c:503:19:503:31 | ... * ... | 20839.0 | -| test.c:503:24:503:31 | (...) | 20839.0 | -| test.c:503:25:503:25 | 2 | 1.0 | -| test.c:503:25:503:25 | (unsigned int)... | 1.0 | -| test.c:503:25:503:30 | ... * ... | 20839.0 | -| test.c:503:29:503:30 | ip | 20839.0 | -| test.c:504:19:504:20 | 14 | 1.0 | -| test.c:504:19:504:20 | (unsigned int)... | 1.0 | -| test.c:504:19:504:25 | ... * ... | 20839.0 | -| test.c:504:24:504:25 | ip | 20839.0 | -| test.c:505:11:505:61 | (...) | 3.908375289E9 | -| test.c:505:12:505:13 | 14 | 1.0 | -| test.c:505:12:505:13 | (unsigned int)... | 1.0 | -| test.c:505:12:505:18 | ... * ... | 62517.0 | -| test.c:505:12:505:34 | ... > ... | 1.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 3.908375289E9 | -| test.c:505:17:505:18 | ip | 62517.0 | -| test.c:505:22:505:29 | (...) | 62517.0 | -| test.c:505:22:505:34 | ... * ... | 62517.0 | -| test.c:505:23:505:24 | ip | 62517.0 | -| test.c:505:23:505:28 | ... + ... | 62517.0 | -| test.c:505:28:505:28 | 1 | 1.0 | -| test.c:505:28:505:28 | (unsigned int)... | 1.0 | -| test.c:505:33:505:34 | 17 | 1.0 | -| test.c:505:33:505:34 | (unsigned int)... | 1.0 | -| test.c:505:38:505:39 | 17 | 1.0 | -| test.c:505:38:505:39 | (unsigned int)... | 1.0 | -| test.c:505:38:505:44 | ... * ... | 62517.0 | -| test.c:505:43:505:44 | ip | 62517.0 | -| test.c:505:48:505:55 | (...) | 62517.0 | -| test.c:505:48:505:60 | ... * ... | 62517.0 | -| test.c:505:49:505:50 | ip | 62517.0 | -| test.c:505:49:505:54 | ... + ... | 62517.0 | -| test.c:505:54:505:54 | 1 | 1.0 | -| test.c:505:54:505:54 | (unsigned int)... | 1.0 | -| test.c:505:59:505:60 | 17 | 1.0 | -| test.c:505:59:505:60 | (unsigned int)... | 1.0 | -| test.c:506:11:506:11 | 4 | 1.0 | -| test.c:506:11:506:11 | (unsigned int)... | 1.0 | -| test.c:506:11:506:28 | ... * ... | 125034.0 | -| test.c:506:11:507:28 | ... + ... | 1.5633501156E10 | -| test.c:506:11:508:28 | ... + ... | 1.954719183539304E15 | -| test.c:506:11:514:24 | ... + ... | 3.056778340269433E31 | -| test.c:506:15:506:28 | (...) | 125034.0 | -| test.c:506:16:506:17 | ip | 125034.0 | -| test.c:506:16:506:22 | ... * ... | 125034.0 | -| test.c:506:16:506:27 | ... + ... | 125034.0 | -| test.c:506:21:506:22 | 14 | 1.0 | -| test.c:506:21:506:22 | (unsigned int)... | 1.0 | -| test.c:506:26:506:27 | 32 | 1.0 | -| test.c:506:26:506:27 | (unsigned int)... | 1.0 | -| test.c:507:11:507:28 | (...) | 125034.0 | -| test.c:507:12:507:12 | 2 | 1.0 | -| test.c:507:12:507:12 | (unsigned int)... | 1.0 | -| test.c:507:12:507:17 | ... * ... | 125034.0 | -| test.c:507:12:507:22 | ... * ... | 125034.0 | -| test.c:507:12:507:27 | ... + ... | 125034.0 | -| test.c:507:16:507:17 | ip | 125034.0 | -| test.c:507:21:507:22 | 14 | 1.0 | -| test.c:507:21:507:22 | (unsigned int)... | 1.0 | -| test.c:507:26:507:27 | 32 | 1.0 | -| test.c:507:26:507:27 | (unsigned int)... | 1.0 | -| test.c:508:11:508:11 | 2 | 1.0 | -| test.c:508:11:508:11 | (unsigned int)... | 1.0 | -| test.c:508:11:508:28 | ... * ... | 125034.0 | -| test.c:508:15:508:28 | (...) | 125034.0 | -| test.c:508:16:508:17 | ip | 125034.0 | -| test.c:508:16:508:22 | ... * ... | 125034.0 | -| test.c:508:16:508:27 | ... + ... | 125034.0 | -| test.c:508:21:508:22 | 14 | 1.0 | -| test.c:508:21:508:22 | (unsigned int)... | 1.0 | -| test.c:508:26:508:27 | 64 | 1.0 | -| test.c:508:26:508:27 | (unsigned int)... | 1.0 | -| test.c:509:11:514:24 | (...) | 1.5637941071078508E16 | -| test.c:509:12:509:23 | (...) | 125034.0 | -| test.c:509:12:509:28 | ... * ... | 125034.0 | -| test.c:509:12:510:61 | ... > ... | 1.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 1.5637941071078508E16 | -| test.c:509:13:509:13 | 2 | 1.0 | -| test.c:509:13:509:13 | (unsigned int)... | 1.0 | -| test.c:509:13:509:18 | ... * ... | 125034.0 | -| test.c:509:13:509:22 | ... + ... | 125034.0 | -| test.c:509:17:509:18 | ip | 125034.0 | -| test.c:509:22:509:22 | 1 | 1.0 | -| test.c:509:22:509:22 | (unsigned int)... | 1.0 | -| test.c:509:27:509:28 | 14 | 1.0 | -| test.c:509:27:509:28 | (unsigned int)... | 1.0 | -| test.c:510:11:510:61 | (...) | 1.5633501156E10 | -| test.c:510:12:510:13 | 14 | 1.0 | -| test.c:510:12:510:13 | (unsigned int)... | 1.0 | -| test.c:510:12:510:24 | ... * ... | 125034.0 | -| test.c:510:12:510:34 | ... > ... | 1.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 1.5633501156E10 | -| test.c:510:17:510:24 | (...) | 125034.0 | -| test.c:510:18:510:18 | 2 | 1.0 | -| test.c:510:18:510:18 | (unsigned int)... | 1.0 | -| test.c:510:18:510:23 | ... * ... | 125034.0 | -| test.c:510:22:510:23 | ip | 125034.0 | -| test.c:510:28:510:29 | 17 | 1.0 | -| test.c:510:28:510:29 | (unsigned int)... | 1.0 | -| test.c:510:28:510:34 | ... * ... | 125034.0 | -| test.c:510:33:510:34 | ip | 125034.0 | -| test.c:510:38:510:39 | 17 | 1.0 | -| test.c:510:38:510:39 | (unsigned int)... | 1.0 | -| test.c:510:38:510:50 | ... * ... | 125034.0 | -| test.c:510:43:510:50 | (...) | 125034.0 | -| test.c:510:44:510:44 | 2 | 1.0 | -| test.c:510:44:510:44 | (unsigned int)... | 1.0 | -| test.c:510:44:510:49 | ... * ... | 125034.0 | -| test.c:510:48:510:49 | ip | 125034.0 | -| test.c:510:54:510:55 | 17 | 1.0 | -| test.c:510:54:510:55 | (unsigned int)... | 1.0 | -| test.c:510:54:510:60 | ... * ... | 125034.0 | -| test.c:510:59:510:60 | ip | 125034.0 | -| test.c:511:15:511:26 | (...) | 250069.0 | -| test.c:511:15:511:31 | ... * ... | 250069.0 | -| test.c:511:16:511:16 | 2 | 1.0 | -| test.c:511:16:511:16 | (unsigned int)... | 1.0 | -| test.c:511:16:511:21 | ... * ... | 250069.0 | -| test.c:511:16:511:25 | ... + ... | 250069.0 | -| test.c:511:20:511:21 | ip | 250069.0 | -| test.c:511:25:511:25 | 1 | 1.0 | -| test.c:511:25:511:25 | (unsigned int)... | 1.0 | -| test.c:511:30:511:31 | 14 | 1.0 | -| test.c:511:30:511:31 | (unsigned int)... | 1.0 | -| test.c:512:15:512:16 | 14 | 1.0 | -| test.c:512:15:512:16 | (unsigned int)... | 1.0 | -| test.c:512:15:512:27 | ... * ... | 250069.0 | -| test.c:512:15:512:37 | ... > ... | 1.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 6.2534504761E10 | -| test.c:512:20:512:27 | (...) | 250069.0 | -| test.c:512:21:512:21 | 2 | 1.0 | -| test.c:512:21:512:21 | (unsigned int)... | 1.0 | -| test.c:512:21:512:26 | ... * ... | 250069.0 | -| test.c:512:25:512:26 | ip | 250069.0 | -| test.c:512:31:512:32 | 17 | 1.0 | -| test.c:512:31:512:32 | (unsigned int)... | 1.0 | -| test.c:512:31:512:37 | ... * ... | 250069.0 | -| test.c:512:36:512:37 | ip | 250069.0 | -| test.c:513:17:513:18 | 14 | 1.0 | -| test.c:513:17:513:18 | (unsigned int)... | 1.0 | -| test.c:513:17:513:29 | ... * ... | 250069.0 | -| test.c:513:22:513:29 | (...) | 250069.0 | -| test.c:513:23:513:23 | 2 | 1.0 | -| test.c:513:23:513:23 | (unsigned int)... | 1.0 | -| test.c:513:23:513:28 | ... * ... | 250069.0 | -| test.c:513:27:513:28 | ip | 250069.0 | -| test.c:514:17:514:18 | 14 | 1.0 | -| test.c:514:17:514:18 | (unsigned int)... | 1.0 | -| test.c:514:17:514:23 | ... * ... | 250069.0 | -| test.c:514:22:514:23 | ip | 250069.0 | -| test.c:515:11:515:12 | 14 | 1.0 | -| test.c:515:11:515:12 | (unsigned int)... | 1.0 | -| test.c:515:11:515:17 | ... * ... | 125034.0 | -| test.c:515:11:515:33 | ... > ... | 1.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 1.5633501156E10 | -| test.c:515:16:515:17 | ip | 125034.0 | -| test.c:515:21:515:28 | (...) | 125034.0 | -| test.c:515:21:515:33 | ... * ... | 125034.0 | -| test.c:515:22:515:23 | ip | 125034.0 | -| test.c:515:22:515:27 | ... + ... | 125034.0 | -| test.c:515:27:515:27 | 1 | 1.0 | -| test.c:515:27:515:27 | (unsigned int)... | 1.0 | -| test.c:515:32:515:33 | 17 | 1.0 | -| test.c:515:32:515:33 | (unsigned int)... | 1.0 | -| test.c:516:13:516:14 | 14 | 1.0 | -| test.c:516:13:516:14 | (unsigned int)... | 1.0 | -| test.c:516:13:516:19 | ... * ... | 125034.0 | -| test.c:516:18:516:19 | ip | 125034.0 | -| test.c:517:13:517:20 | (...) | 125034.0 | -| test.c:517:13:517:25 | ... * ... | 125034.0 | -| test.c:517:14:517:15 | ip | 125034.0 | -| test.c:517:14:517:19 | ... + ... | 125034.0 | -| test.c:517:19:517:19 | 1 | 1.0 | -| test.c:517:19:517:19 | (unsigned int)... | 1.0 | -| test.c:517:24:517:25 | 14 | 1.0 | -| test.c:517:24:517:25 | (unsigned int)... | 1.0 | -| test.c:518:9:518:10 | 14 | 1.0 | -| test.c:518:9:518:10 | (unsigned int)... | 1.0 | -| test.c:518:9:518:15 | ... * ... | 1437897.0 | -| test.c:518:9:518:59 | ... > ... | 1.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 2.9729207539701335E18 | -| test.c:518:14:518:15 | ip | 1437897.0 | -| test.c:518:19:518:30 | (...) | 1437897.0 | -| test.c:518:19:518:35 | ... * ... | 1437897.0 | -| test.c:518:19:518:59 | ... + ... | 2.067547782609E12 | -| test.c:518:20:518:20 | 2 | 1.0 | -| test.c:518:20:518:20 | (unsigned int)... | 1.0 | -| test.c:518:20:518:25 | ... * ... | 1437897.0 | -| test.c:518:20:518:29 | ... + ... | 1437897.0 | -| test.c:518:24:518:25 | ip | 1437897.0 | -| test.c:518:29:518:29 | 1 | 1.0 | -| test.c:518:29:518:29 | (unsigned int)... | 1.0 | -| test.c:518:34:518:35 | 17 | 1.0 | -| test.c:518:34:518:35 | (unsigned int)... | 1.0 | -| test.c:518:39:518:54 | (...) | 1437897.0 | -| test.c:518:39:518:59 | ... * ... | 1437897.0 | -| test.c:518:40:518:40 | 2 | 1.0 | -| test.c:518:40:518:40 | (unsigned int)... | 1.0 | -| test.c:518:40:518:45 | ... * ... | 1437897.0 | -| test.c:518:40:518:49 | ... + ... | 1437897.0 | -| test.c:518:40:518:53 | ... + ... | 1437897.0 | -| test.c:518:44:518:45 | ip | 1437897.0 | -| test.c:518:49:518:49 | 1 | 1.0 | -| test.c:518:49:518:49 | (unsigned int)... | 1.0 | -| test.c:518:53:518:53 | 1 | 1.0 | -| test.c:518:53:518:53 | (unsigned int)... | 1.0 | -| test.c:518:58:518:59 | 17 | 1.0 | -| test.c:518:58:518:59 | (unsigned int)... | 1.0 | -| test.c:519:11:519:12 | 14 | 1.0 | -| test.c:519:11:519:12 | (unsigned int)... | 1.0 | -| test.c:519:11:519:17 | ... * ... | 1437897.0 | -| test.c:519:16:519:17 | ip | 1437897.0 | -| test.c:520:11:520:22 | (...) | 1437897.0 | -| test.c:520:11:520:27 | ... * ... | 1437897.0 | -| test.c:520:11:520:51 | ... + ... | 2.067547782609E12 | -| test.c:520:12:520:12 | 2 | 1.0 | -| test.c:520:12:520:12 | (unsigned int)... | 1.0 | -| test.c:520:12:520:17 | ... * ... | 1437897.0 | -| test.c:520:12:520:21 | ... + ... | 1437897.0 | -| test.c:520:16:520:17 | ip | 1437897.0 | -| test.c:520:21:520:21 | 1 | 1.0 | -| test.c:520:21:520:21 | (unsigned int)... | 1.0 | -| test.c:520:26:520:27 | 14 | 1.0 | -| test.c:520:26:520:27 | (unsigned int)... | 1.0 | -| test.c:520:31:520:46 | (...) | 1437897.0 | -| test.c:520:31:520:51 | ... * ... | 1437897.0 | -| test.c:520:32:520:32 | 2 | 1.0 | -| test.c:520:32:520:32 | (unsigned int)... | 1.0 | -| test.c:520:32:520:37 | ... * ... | 1437897.0 | -| test.c:520:32:520:41 | ... + ... | 1437897.0 | -| test.c:520:32:520:45 | ... + ... | 1437897.0 | -| test.c:520:36:520:37 | ip | 1437897.0 | -| test.c:520:41:520:41 | 1 | 1.0 | -| test.c:520:41:520:41 | (unsigned int)... | 1.0 | -| test.c:520:45:520:45 | 1 | 1.0 | -| test.c:520:45:520:45 | (unsigned int)... | 1.0 | -| test.c:520:50:520:51 | 17 | 1.0 | -| test.c:520:50:520:51 | (unsigned int)... | 1.0 | -| test.c:521:9:521:9 | 2 | 1.0 | -| test.c:521:9:521:9 | (unsigned int)... | 1.0 | -| test.c:521:9:521:26 | ... * ... | 1437897.0 | -| test.c:521:9:541:48 | ... + ... | 3.5306223994138077E62 | -| test.c:521:9:563:30 | ... > ... | 1.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.3658022750663434E182 | -| test.c:521:13:521:26 | (...) | 1437897.0 | -| test.c:521:14:521:15 | ip | 1437897.0 | -| test.c:521:14:521:20 | ... * ... | 1437897.0 | -| test.c:521:14:521:25 | ... + ... | 1437897.0 | -| test.c:521:19:521:20 | 14 | 1.0 | -| test.c:521:19:521:20 | (unsigned int)... | 1.0 | -| test.c:521:24:521:25 | 32 | 1.0 | -| test.c:521:24:521:25 | (unsigned int)... | 1.0 | -| test.c:522:13:541:48 | (...) | 2.4554070280512497E56 | -| test.c:522:14:522:14 | 4 | 1.0 | -| test.c:522:14:522:14 | (unsigned int)... | 1.0 | -| test.c:522:14:522:31 | ... * ... | 1437897.0 | -| test.c:522:14:523:32 | ... + ... | 2.067547782609E12 | -| test.c:522:14:524:32 | ... + ... | 2.9729207539701335E18 | -| test.c:522:14:530:28 | ... + ... | 7.070613623498497E37 | -| test.c:522:14:531:43 | ... > ... | 1.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 2.4554070280512497E56 | -| test.c:522:18:522:31 | (...) | 1437897.0 | -| test.c:522:19:522:20 | ip | 1437897.0 | -| test.c:522:19:522:25 | ... * ... | 1437897.0 | -| test.c:522:19:522:30 | ... + ... | 1437897.0 | -| test.c:522:24:522:25 | 14 | 1.0 | -| test.c:522:24:522:25 | (unsigned int)... | 1.0 | -| test.c:522:29:522:30 | 32 | 1.0 | -| test.c:522:29:522:30 | (unsigned int)... | 1.0 | -| test.c:523:15:523:32 | (...) | 1437897.0 | -| test.c:523:16:523:16 | 2 | 1.0 | -| test.c:523:16:523:16 | (unsigned int)... | 1.0 | -| test.c:523:16:523:21 | ... * ... | 1437897.0 | -| test.c:523:16:523:26 | ... * ... | 1437897.0 | -| test.c:523:16:523:31 | ... + ... | 1437897.0 | -| test.c:523:20:523:21 | ip | 1437897.0 | -| test.c:523:25:523:26 | 14 | 1.0 | -| test.c:523:25:523:26 | (unsigned int)... | 1.0 | -| test.c:523:30:523:31 | 32 | 1.0 | -| test.c:523:30:523:31 | (unsigned int)... | 1.0 | -| test.c:524:15:524:15 | 2 | 1.0 | -| test.c:524:15:524:15 | (unsigned int)... | 1.0 | -| test.c:524:15:524:32 | ... * ... | 1437897.0 | -| test.c:524:19:524:32 | (...) | 1437897.0 | -| test.c:524:20:524:21 | ip | 1437897.0 | -| test.c:524:20:524:26 | ... * ... | 1437897.0 | -| test.c:524:20:524:31 | ... + ... | 1437897.0 | -| test.c:524:25:524:26 | 14 | 1.0 | -| test.c:524:25:524:26 | (unsigned int)... | 1.0 | -| test.c:524:30:524:31 | 64 | 1.0 | -| test.c:524:30:524:31 | (unsigned int)... | 1.0 | -| test.c:525:15:530:28 | (...) | 2.3783390842343084E19 | -| test.c:525:16:525:27 | (...) | 1437897.0 | -| test.c:525:16:525:32 | ... * ... | 1437897.0 | -| test.c:525:16:526:65 | ... > ... | 1.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 2.3783390842343084E19 | -| test.c:525:17:525:17 | 2 | 1.0 | -| test.c:525:17:525:17 | (unsigned int)... | 1.0 | -| test.c:525:17:525:22 | ... * ... | 1437897.0 | -| test.c:525:17:525:26 | ... + ... | 1437897.0 | -| test.c:525:21:525:22 | ip | 1437897.0 | -| test.c:525:26:525:26 | 1 | 1.0 | -| test.c:525:26:525:26 | (unsigned int)... | 1.0 | -| test.c:525:31:525:32 | 14 | 1.0 | -| test.c:525:31:525:32 | (unsigned int)... | 1.0 | -| test.c:526:15:526:65 | (...) | 2.067547782609E12 | -| test.c:526:16:526:17 | 14 | 1.0 | -| test.c:526:16:526:17 | (unsigned int)... | 1.0 | -| test.c:526:16:526:28 | ... * ... | 1437897.0 | -| test.c:526:16:526:38 | ... > ... | 1.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 2.067547782609E12 | -| test.c:526:21:526:28 | (...) | 1437897.0 | -| test.c:526:22:526:22 | 2 | 1.0 | -| test.c:526:22:526:22 | (unsigned int)... | 1.0 | -| test.c:526:22:526:27 | ... * ... | 1437897.0 | -| test.c:526:26:526:27 | ip | 1437897.0 | -| test.c:526:32:526:33 | 17 | 1.0 | -| test.c:526:32:526:33 | (unsigned int)... | 1.0 | -| test.c:526:32:526:38 | ... * ... | 1437897.0 | -| test.c:526:37:526:38 | ip | 1437897.0 | -| test.c:526:42:526:43 | 17 | 1.0 | -| test.c:526:42:526:43 | (unsigned int)... | 1.0 | -| test.c:526:42:526:54 | ... * ... | 1437897.0 | -| test.c:526:47:526:54 | (...) | 1437897.0 | -| test.c:526:48:526:48 | 2 | 1.0 | -| test.c:526:48:526:48 | (unsigned int)... | 1.0 | -| test.c:526:48:526:53 | ... * ... | 1437897.0 | -| test.c:526:52:526:53 | ip | 1437897.0 | -| test.c:526:58:526:59 | 17 | 1.0 | -| test.c:526:58:526:59 | (unsigned int)... | 1.0 | -| test.c:526:58:526:64 | ... * ... | 1437897.0 | -| test.c:526:63:526:64 | ip | 1437897.0 | -| test.c:527:19:527:30 | (...) | 2875795.0 | -| test.c:527:19:527:35 | ... * ... | 2875795.0 | -| test.c:527:20:527:20 | 2 | 1.0 | -| test.c:527:20:527:20 | (unsigned int)... | 1.0 | -| test.c:527:20:527:25 | ... * ... | 2875795.0 | -| test.c:527:20:527:29 | ... + ... | 2875795.0 | -| test.c:527:24:527:25 | ip | 2875795.0 | -| test.c:527:29:527:29 | 1 | 1.0 | -| test.c:527:29:527:29 | (unsigned int)... | 1.0 | -| test.c:527:34:527:35 | 14 | 1.0 | -| test.c:527:34:527:35 | (unsigned int)... | 1.0 | -| test.c:528:19:528:20 | 14 | 1.0 | -| test.c:528:19:528:20 | (unsigned int)... | 1.0 | -| test.c:528:19:528:31 | ... * ... | 2875795.0 | -| test.c:528:19:528:41 | ... > ... | 1.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 8.270196882025E12 | -| test.c:528:24:528:31 | (...) | 2875795.0 | -| test.c:528:25:528:25 | 2 | 1.0 | -| test.c:528:25:528:25 | (unsigned int)... | 1.0 | -| test.c:528:25:528:30 | ... * ... | 2875795.0 | -| test.c:528:29:528:30 | ip | 2875795.0 | -| test.c:528:35:528:36 | 17 | 1.0 | -| test.c:528:35:528:36 | (unsigned int)... | 1.0 | -| test.c:528:35:528:41 | ... * ... | 2875795.0 | -| test.c:528:40:528:41 | ip | 2875795.0 | -| test.c:529:21:529:22 | 14 | 1.0 | -| test.c:529:21:529:22 | (unsigned int)... | 1.0 | -| test.c:529:21:529:33 | ... * ... | 2875795.0 | -| test.c:529:26:529:33 | (...) | 2875795.0 | -| test.c:529:27:529:27 | 2 | 1.0 | -| test.c:529:27:529:27 | (unsigned int)... | 1.0 | -| test.c:529:27:529:32 | ... * ... | 2875795.0 | -| test.c:529:31:529:32 | ip | 2875795.0 | -| test.c:530:21:530:22 | 14 | 1.0 | -| test.c:530:21:530:22 | (unsigned int)... | 1.0 | -| test.c:530:21:530:27 | ... * ... | 2875795.0 | -| test.c:530:26:530:27 | ip | 2875795.0 | -| test.c:531:13:531:13 | 2 | 1.0 | -| test.c:531:13:531:13 | (unsigned int)... | 1.0 | -| test.c:531:13:531:18 | ... * ... | 8627385.0 | -| test.c:531:13:531:23 | ... * ... | 8627385.0 | -| test.c:531:13:531:43 | ... + ... | 7.4431771938225E13 | -| test.c:531:17:531:18 | ip | 8627385.0 | -| test.c:531:22:531:23 | 14 | 1.0 | -| test.c:531:22:531:23 | (unsigned int)... | 1.0 | -| test.c:531:27:531:38 | (...) | 8627385.0 | -| test.c:531:27:531:43 | ... * ... | 8627385.0 | -| test.c:531:28:531:28 | 2 | 1.0 | -| test.c:531:28:531:28 | (unsigned int)... | 1.0 | -| test.c:531:28:531:33 | ... * ... | 8627385.0 | -| test.c:531:28:531:37 | ... + ... | 8627385.0 | -| test.c:531:32:531:33 | ip | 8627385.0 | -| test.c:531:37:531:37 | 1 | 1.0 | -| test.c:531:37:531:37 | (unsigned int)... | 1.0 | -| test.c:531:42:531:43 | 17 | 1.0 | -| test.c:531:42:531:43 | (unsigned int)... | 1.0 | -| test.c:532:17:532:17 | 4 | 1.0 | -| test.c:532:17:532:17 | (unsigned int)... | 1.0 | -| test.c:532:17:532:34 | ... * ... | 8627385.0 | -| test.c:532:17:533:34 | ... + ... | 7.4431771938225E13 | -| test.c:532:17:534:34 | ... + ... | 6.421515527432633E20 | -| test.c:532:17:540:30 | ... + ... | 3.298869507082441E42 | -| test.c:532:21:532:34 | (...) | 8627385.0 | -| test.c:532:22:532:23 | ip | 8627385.0 | -| test.c:532:22:532:28 | ... * ... | 8627385.0 | -| test.c:532:22:532:33 | ... + ... | 8627385.0 | -| test.c:532:27:532:28 | 14 | 1.0 | -| test.c:532:27:532:28 | (unsigned int)... | 1.0 | -| test.c:532:32:532:33 | 32 | 1.0 | -| test.c:532:32:532:33 | (unsigned int)... | 1.0 | -| test.c:533:17:533:34 | (...) | 8627385.0 | -| test.c:533:18:533:18 | 2 | 1.0 | -| test.c:533:18:533:18 | (unsigned int)... | 1.0 | -| test.c:533:18:533:23 | ... * ... | 8627385.0 | -| test.c:533:18:533:28 | ... * ... | 8627385.0 | -| test.c:533:18:533:33 | ... + ... | 8627385.0 | -| test.c:533:22:533:23 | ip | 8627385.0 | -| test.c:533:27:533:28 | 14 | 1.0 | -| test.c:533:27:533:28 | (unsigned int)... | 1.0 | -| test.c:533:32:533:33 | 32 | 1.0 | -| test.c:533:32:533:33 | (unsigned int)... | 1.0 | -| test.c:534:17:534:17 | 2 | 1.0 | -| test.c:534:17:534:17 | (unsigned int)... | 1.0 | -| test.c:534:17:534:34 | ... * ... | 8627385.0 | -| test.c:534:21:534:34 | (...) | 8627385.0 | -| test.c:534:22:534:23 | ip | 8627385.0 | -| test.c:534:22:534:28 | ... * ... | 8627385.0 | -| test.c:534:22:534:33 | ... + ... | 8627385.0 | -| test.c:534:27:534:28 | 14 | 1.0 | -| test.c:534:27:534:28 | (unsigned int)... | 1.0 | -| test.c:534:32:534:33 | 64 | 1.0 | -| test.c:534:32:534:33 | (unsigned int)... | 1.0 | -| test.c:535:17:540:30 | (...) | 5.137213315127421E21 | -| test.c:535:18:535:29 | (...) | 8627385.0 | -| test.c:535:18:535:34 | ... * ... | 8627385.0 | -| test.c:535:18:536:67 | ... > ... | 1.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 5.137213315127421E21 | -| test.c:535:19:535:19 | 2 | 1.0 | -| test.c:535:19:535:19 | (unsigned int)... | 1.0 | -| test.c:535:19:535:24 | ... * ... | 8627385.0 | -| test.c:535:19:535:28 | ... + ... | 8627385.0 | -| test.c:535:23:535:24 | ip | 8627385.0 | -| test.c:535:28:535:28 | 1 | 1.0 | -| test.c:535:28:535:28 | (unsigned int)... | 1.0 | -| test.c:535:33:535:34 | 14 | 1.0 | -| test.c:535:33:535:34 | (unsigned int)... | 1.0 | -| test.c:536:17:536:67 | (...) | 7.4431771938225E13 | -| test.c:536:18:536:19 | 14 | 1.0 | -| test.c:536:18:536:19 | (unsigned int)... | 1.0 | -| test.c:536:18:536:30 | ... * ... | 8627385.0 | -| test.c:536:18:536:40 | ... > ... | 1.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 7.4431771938225E13 | -| test.c:536:23:536:30 | (...) | 8627385.0 | -| test.c:536:24:536:24 | 2 | 1.0 | -| test.c:536:24:536:24 | (unsigned int)... | 1.0 | -| test.c:536:24:536:29 | ... * ... | 8627385.0 | -| test.c:536:28:536:29 | ip | 8627385.0 | -| test.c:536:34:536:35 | 17 | 1.0 | -| test.c:536:34:536:35 | (unsigned int)... | 1.0 | -| test.c:536:34:536:40 | ... * ... | 8627385.0 | -| test.c:536:39:536:40 | ip | 8627385.0 | -| test.c:536:44:536:45 | 17 | 1.0 | -| test.c:536:44:536:45 | (unsigned int)... | 1.0 | -| test.c:536:44:536:56 | ... * ... | 8627385.0 | -| test.c:536:49:536:56 | (...) | 8627385.0 | -| test.c:536:50:536:50 | 2 | 1.0 | -| test.c:536:50:536:50 | (unsigned int)... | 1.0 | -| test.c:536:50:536:55 | ... * ... | 8627385.0 | -| test.c:536:54:536:55 | ip | 8627385.0 | -| test.c:536:60:536:61 | 17 | 1.0 | -| test.c:536:60:536:61 | (unsigned int)... | 1.0 | -| test.c:536:60:536:66 | ... * ... | 8627385.0 | -| test.c:536:65:536:66 | ip | 8627385.0 | -| test.c:537:21:537:32 | (...) | 1.7254771E7 | -| test.c:537:21:537:37 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:22 | 2 | 1.0 | -| test.c:537:22:537:22 | (unsigned int)... | 1.0 | -| test.c:537:22:537:27 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:31 | ... + ... | 1.7254771E7 | -| test.c:537:26:537:27 | ip | 1.7254771E7 | -| test.c:537:31:537:31 | 1 | 1.0 | -| test.c:537:31:537:31 | (unsigned int)... | 1.0 | -| test.c:537:36:537:37 | 14 | 1.0 | -| test.c:537:36:537:37 | (unsigned int)... | 1.0 | -| test.c:538:21:538:22 | 14 | 1.0 | -| test.c:538:21:538:22 | (unsigned int)... | 1.0 | -| test.c:538:21:538:33 | ... * ... | 1.7254771E7 | -| test.c:538:21:538:43 | ... > ... | 1.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 2.97727122262441E14 | -| test.c:538:26:538:33 | (...) | 1.7254771E7 | -| test.c:538:27:538:27 | 2 | 1.0 | -| test.c:538:27:538:27 | (unsigned int)... | 1.0 | -| test.c:538:27:538:32 | ... * ... | 1.7254771E7 | -| test.c:538:31:538:32 | ip | 1.7254771E7 | -| test.c:538:37:538:38 | 17 | 1.0 | -| test.c:538:37:538:38 | (unsigned int)... | 1.0 | -| test.c:538:37:538:43 | ... * ... | 1.7254771E7 | -| test.c:538:42:538:43 | ip | 1.7254771E7 | -| test.c:539:23:539:24 | 14 | 1.0 | -| test.c:539:23:539:24 | (unsigned int)... | 1.0 | -| test.c:539:23:539:35 | ... * ... | 1.7254771E7 | -| test.c:539:28:539:35 | (...) | 1.7254771E7 | -| test.c:539:29:539:29 | 2 | 1.0 | -| test.c:539:29:539:29 | (unsigned int)... | 1.0 | -| test.c:539:29:539:34 | ... * ... | 1.7254771E7 | -| test.c:539:33:539:34 | ip | 1.7254771E7 | -| test.c:540:23:540:24 | 14 | 1.0 | -| test.c:540:23:540:24 | (unsigned int)... | 1.0 | -| test.c:540:23:540:29 | ... * ... | 1.7254771E7 | -| test.c:540:28:540:29 | ip | 1.7254771E7 | -| test.c:541:17:541:17 | 2 | 1.0 | -| test.c:541:17:541:17 | (unsigned int)... | 1.0 | -| test.c:541:17:541:22 | ... * ... | 8627385.0 | -| test.c:541:17:541:27 | ... * ... | 8627385.0 | -| test.c:541:17:541:47 | ... + ... | 7.4431771938225E13 | -| test.c:541:21:541:22 | ip | 8627385.0 | -| test.c:541:26:541:27 | 14 | 1.0 | -| test.c:541:26:541:27 | (unsigned int)... | 1.0 | -| test.c:541:31:541:42 | (...) | 8627385.0 | -| test.c:541:31:541:47 | ... * ... | 8627385.0 | -| test.c:541:32:541:32 | 2 | 1.0 | -| test.c:541:32:541:32 | (unsigned int)... | 1.0 | -| test.c:541:32:541:37 | ... * ... | 8627385.0 | -| test.c:541:32:541:41 | ... + ... | 8627385.0 | -| test.c:541:36:541:37 | ip | 8627385.0 | -| test.c:541:41:541:41 | 1 | 1.0 | -| test.c:541:41:541:41 | (unsigned int)... | 1.0 | -| test.c:541:46:541:47 | 17 | 1.0 | -| test.c:541:46:541:47 | (unsigned int)... | 1.0 | -| test.c:542:11:563:30 | (...) | 6.08636382738973E71 | -| test.c:542:12:542:12 | 4 | 1.0 | -| test.c:542:12:542:12 | (unsigned int)... | 1.0 | -| test.c:542:12:542:29 | ... * ... | 6.0391698E7 | -| test.c:542:12:543:30 | ... + ... | 3.647157187323204E15 | -| test.c:542:12:544:30 | ... + ... | 2.2025801541535236E23 | -| test.c:542:12:550:26 | ... + ... | 3.881087564774641E47 | -| test.c:542:12:551:61 | ... > ... | 1.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 6.08636382738973E71 | -| test.c:542:16:542:29 | (...) | 6.0391698E7 | -| test.c:542:17:542:18 | ip | 6.0391698E7 | -| test.c:542:17:542:23 | ... * ... | 6.0391698E7 | -| test.c:542:17:542:28 | ... + ... | 6.0391698E7 | -| test.c:542:22:542:23 | 14 | 1.0 | -| test.c:542:22:542:23 | (unsigned int)... | 1.0 | -| test.c:542:27:542:28 | 32 | 1.0 | -| test.c:542:27:542:28 | (unsigned int)... | 1.0 | -| test.c:543:13:543:30 | (...) | 6.0391698E7 | -| test.c:543:14:543:14 | 2 | 1.0 | -| test.c:543:14:543:14 | (unsigned int)... | 1.0 | -| test.c:543:14:543:19 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:24 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:29 | ... + ... | 6.0391698E7 | -| test.c:543:18:543:19 | ip | 6.0391698E7 | -| test.c:543:23:543:24 | 14 | 1.0 | -| test.c:543:23:543:24 | (unsigned int)... | 1.0 | -| test.c:543:28:543:29 | 32 | 1.0 | -| test.c:543:28:543:29 | (unsigned int)... | 1.0 | -| test.c:544:13:544:13 | 2 | 1.0 | -| test.c:544:13:544:13 | (unsigned int)... | 1.0 | -| test.c:544:13:544:30 | ... * ... | 6.0391698E7 | -| test.c:544:17:544:30 | (...) | 6.0391698E7 | -| test.c:544:18:544:19 | ip | 6.0391698E7 | -| test.c:544:18:544:24 | ... * ... | 6.0391698E7 | -| test.c:544:18:544:29 | ... + ... | 6.0391698E7 | -| test.c:544:23:544:24 | 14 | 1.0 | -| test.c:544:23:544:24 | (unsigned int)... | 1.0 | -| test.c:544:28:544:29 | 64 | 1.0 | -| test.c:544:28:544:29 | (unsigned int)... | 1.0 | -| test.c:545:13:550:26 | (...) | 1.7620641670887053E24 | -| test.c:545:14:545:25 | (...) | 6.0391698E7 | -| test.c:545:14:545:30 | ... * ... | 6.0391698E7 | -| test.c:545:14:546:63 | ... > ... | 1.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 1.7620641670887053E24 | -| test.c:545:15:545:15 | 2 | 1.0 | -| test.c:545:15:545:15 | (unsigned int)... | 1.0 | -| test.c:545:15:545:20 | ... * ... | 6.0391698E7 | -| test.c:545:15:545:24 | ... + ... | 6.0391698E7 | -| test.c:545:19:545:20 | ip | 6.0391698E7 | -| test.c:545:24:545:24 | 1 | 1.0 | -| test.c:545:24:545:24 | (unsigned int)... | 1.0 | -| test.c:545:29:545:30 | 14 | 1.0 | -| test.c:545:29:545:30 | (unsigned int)... | 1.0 | -| test.c:546:13:546:63 | (...) | 3.647157187323204E15 | -| test.c:546:14:546:15 | 14 | 1.0 | -| test.c:546:14:546:15 | (unsigned int)... | 1.0 | -| test.c:546:14:546:26 | ... * ... | 6.0391698E7 | -| test.c:546:14:546:36 | ... > ... | 1.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 3.647157187323204E15 | -| test.c:546:19:546:26 | (...) | 6.0391698E7 | -| test.c:546:20:546:20 | 2 | 1.0 | -| test.c:546:20:546:20 | (unsigned int)... | 1.0 | -| test.c:546:20:546:25 | ... * ... | 6.0391698E7 | -| test.c:546:24:546:25 | ip | 6.0391698E7 | -| test.c:546:30:546:31 | 17 | 1.0 | -| test.c:546:30:546:31 | (unsigned int)... | 1.0 | -| test.c:546:30:546:36 | ... * ... | 6.0391698E7 | -| test.c:546:35:546:36 | ip | 6.0391698E7 | -| test.c:546:40:546:41 | 17 | 1.0 | -| test.c:546:40:546:41 | (unsigned int)... | 1.0 | -| test.c:546:40:546:52 | ... * ... | 6.0391698E7 | -| test.c:546:45:546:52 | (...) | 6.0391698E7 | -| test.c:546:46:546:46 | 2 | 1.0 | -| test.c:546:46:546:46 | (unsigned int)... | 1.0 | -| test.c:546:46:546:51 | ... * ... | 6.0391698E7 | -| test.c:546:50:546:51 | ip | 6.0391698E7 | -| test.c:546:56:546:57 | 17 | 1.0 | -| test.c:546:56:546:57 | (unsigned int)... | 1.0 | -| test.c:546:56:546:62 | ... * ... | 6.0391698E7 | -| test.c:546:61:546:62 | ip | 6.0391698E7 | -| test.c:547:17:547:28 | (...) | 1.20783397E8 | -| test.c:547:17:547:33 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:18 | 2 | 1.0 | -| test.c:547:18:547:18 | (unsigned int)... | 1.0 | -| test.c:547:18:547:23 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:27 | ... + ... | 1.20783397E8 | -| test.c:547:22:547:23 | ip | 1.20783397E8 | -| test.c:547:27:547:27 | 1 | 1.0 | -| test.c:547:27:547:27 | (unsigned int)... | 1.0 | -| test.c:547:32:547:33 | 14 | 1.0 | -| test.c:547:32:547:33 | (unsigned int)... | 1.0 | -| test.c:548:17:548:18 | 14 | 1.0 | -| test.c:548:17:548:18 | (unsigned int)... | 1.0 | -| test.c:548:17:548:29 | ... * ... | 1.20783397E8 | -| test.c:548:17:548:39 | ... > ... | 1.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 1.4588628990859608E16 | -| test.c:548:22:548:29 | (...) | 1.20783397E8 | -| test.c:548:23:548:23 | 2 | 1.0 | -| test.c:548:23:548:23 | (unsigned int)... | 1.0 | -| test.c:548:23:548:28 | ... * ... | 1.20783397E8 | -| test.c:548:27:548:28 | ip | 1.20783397E8 | -| test.c:548:33:548:34 | 17 | 1.0 | -| test.c:548:33:548:34 | (unsigned int)... | 1.0 | -| test.c:548:33:548:39 | ... * ... | 1.20783397E8 | -| test.c:548:38:548:39 | ip | 1.20783397E8 | -| test.c:549:19:549:20 | 14 | 1.0 | -| test.c:549:19:549:20 | (unsigned int)... | 1.0 | -| test.c:549:19:549:31 | ... * ... | 1.20783397E8 | -| test.c:549:24:549:31 | (...) | 1.20783397E8 | -| test.c:549:25:549:25 | 2 | 1.0 | -| test.c:549:25:549:25 | (unsigned int)... | 1.0 | -| test.c:549:25:549:30 | ... * ... | 1.20783397E8 | -| test.c:549:29:549:30 | ip | 1.20783397E8 | -| test.c:550:19:550:20 | 14 | 1.0 | -| test.c:550:19:550:20 | (unsigned int)... | 1.0 | -| test.c:550:19:550:25 | ... * ... | 1.20783397E8 | -| test.c:550:24:550:25 | ip | 1.20783397E8 | -| test.c:551:11:551:61 | (...) | 1.3129766091773648E17 | -| test.c:551:12:551:13 | 14 | 1.0 | -| test.c:551:12:551:13 | (unsigned int)... | 1.0 | -| test.c:551:12:551:18 | ... * ... | 3.62350191E8 | -| test.c:551:12:551:34 | ... > ... | 1.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 1.3129766091773648E17 | -| test.c:551:17:551:18 | ip | 3.62350191E8 | -| test.c:551:22:551:29 | (...) | 3.62350191E8 | -| test.c:551:22:551:34 | ... * ... | 3.62350191E8 | -| test.c:551:23:551:24 | ip | 3.62350191E8 | -| test.c:551:23:551:28 | ... + ... | 3.62350191E8 | -| test.c:551:28:551:28 | 1 | 1.0 | -| test.c:551:28:551:28 | (unsigned int)... | 1.0 | -| test.c:551:33:551:34 | 17 | 1.0 | -| test.c:551:33:551:34 | (unsigned int)... | 1.0 | -| test.c:551:38:551:39 | 17 | 1.0 | -| test.c:551:38:551:39 | (unsigned int)... | 1.0 | -| test.c:551:38:551:44 | ... * ... | 3.62350191E8 | -| test.c:551:43:551:44 | ip | 3.62350191E8 | -| test.c:551:48:551:55 | (...) | 3.62350191E8 | -| test.c:551:48:551:60 | ... * ... | 3.62350191E8 | -| test.c:551:49:551:50 | ip | 3.62350191E8 | -| test.c:551:49:551:54 | ... + ... | 3.62350191E8 | -| test.c:551:54:551:54 | 1 | 1.0 | -| test.c:551:54:551:54 | (unsigned int)... | 1.0 | -| test.c:551:59:551:60 | 17 | 1.0 | -| test.c:551:59:551:60 | (unsigned int)... | 1.0 | -| test.c:552:15:552:15 | 4 | 1.0 | -| test.c:552:15:552:15 | (unsigned int)... | 1.0 | -| test.c:552:15:552:32 | ... * ... | 7.24700382E8 | -| test.c:552:15:553:32 | ... + ... | 5.251906436709459E17 | -| test.c:552:15:554:32 | ... + ... | 3.806058600911604E26 | -| test.c:552:15:560:28 | ... + ... | 1.1588865682845433E54 | -| test.c:552:19:552:32 | (...) | 7.24700382E8 | -| test.c:552:20:552:21 | ip | 7.24700382E8 | -| test.c:552:20:552:26 | ... * ... | 7.24700382E8 | -| test.c:552:20:552:31 | ... + ... | 7.24700382E8 | -| test.c:552:25:552:26 | 14 | 1.0 | -| test.c:552:25:552:26 | (unsigned int)... | 1.0 | -| test.c:552:30:552:31 | 32 | 1.0 | -| test.c:552:30:552:31 | (unsigned int)... | 1.0 | -| test.c:553:15:553:32 | (...) | 7.24700382E8 | -| test.c:553:16:553:16 | 2 | 1.0 | -| test.c:553:16:553:16 | (unsigned int)... | 1.0 | -| test.c:553:16:553:21 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:26 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:31 | ... + ... | 7.24700382E8 | -| test.c:553:20:553:21 | ip | 7.24700382E8 | -| test.c:553:25:553:26 | 14 | 1.0 | -| test.c:553:25:553:26 | (unsigned int)... | 1.0 | -| test.c:553:30:553:31 | 32 | 1.0 | -| test.c:553:30:553:31 | (unsigned int)... | 1.0 | -| test.c:554:15:554:15 | 2 | 1.0 | -| test.c:554:15:554:15 | (unsigned int)... | 1.0 | -| test.c:554:15:554:32 | ... * ... | 7.24700382E8 | -| test.c:554:19:554:32 | (...) | 7.24700382E8 | -| test.c:554:20:554:21 | ip | 7.24700382E8 | -| test.c:554:20:554:26 | ... * ... | 7.24700382E8 | -| test.c:554:20:554:31 | ... + ... | 7.24700382E8 | -| test.c:554:25:554:26 | 14 | 1.0 | -| test.c:554:25:554:26 | (unsigned int)... | 1.0 | -| test.c:554:30:554:31 | 64 | 1.0 | -| test.c:554:30:554:31 | (unsigned int)... | 1.0 | -| test.c:555:15:560:28 | (...) | 3.044846887031571E27 | -| test.c:555:16:555:27 | (...) | 7.24700382E8 | -| test.c:555:16:555:32 | ... * ... | 7.24700382E8 | -| test.c:555:16:556:65 | ... > ... | 1.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 3.044846887031571E27 | -| test.c:555:17:555:17 | 2 | 1.0 | -| test.c:555:17:555:17 | (unsigned int)... | 1.0 | -| test.c:555:17:555:22 | ... * ... | 7.24700382E8 | -| test.c:555:17:555:26 | ... + ... | 7.24700382E8 | -| test.c:555:21:555:22 | ip | 7.24700382E8 | -| test.c:555:26:555:26 | 1 | 1.0 | -| test.c:555:26:555:26 | (unsigned int)... | 1.0 | -| test.c:555:31:555:32 | 14 | 1.0 | -| test.c:555:31:555:32 | (unsigned int)... | 1.0 | -| test.c:556:15:556:65 | (...) | 5.251906436709459E17 | -| test.c:556:16:556:17 | 14 | 1.0 | -| test.c:556:16:556:17 | (unsigned int)... | 1.0 | -| test.c:556:16:556:28 | ... * ... | 7.24700382E8 | -| test.c:556:16:556:38 | ... > ... | 1.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:556:21:556:28 | (...) | 7.24700382E8 | -| test.c:556:22:556:22 | 2 | 1.0 | -| test.c:556:22:556:22 | (unsigned int)... | 1.0 | -| test.c:556:22:556:27 | ... * ... | 7.24700382E8 | -| test.c:556:26:556:27 | ip | 7.24700382E8 | -| test.c:556:32:556:33 | 17 | 1.0 | -| test.c:556:32:556:33 | (unsigned int)... | 1.0 | -| test.c:556:32:556:38 | ... * ... | 7.24700382E8 | -| test.c:556:37:556:38 | ip | 7.24700382E8 | -| test.c:556:42:556:43 | 17 | 1.0 | -| test.c:556:42:556:43 | (unsigned int)... | 1.0 | -| test.c:556:42:556:54 | ... * ... | 7.24700382E8 | -| test.c:556:47:556:54 | (...) | 7.24700382E8 | -| test.c:556:48:556:48 | 2 | 1.0 | -| test.c:556:48:556:48 | (unsigned int)... | 1.0 | -| test.c:556:48:556:53 | ... * ... | 7.24700382E8 | -| test.c:556:52:556:53 | ip | 7.24700382E8 | -| test.c:556:58:556:59 | 17 | 1.0 | -| test.c:556:58:556:59 | (unsigned int)... | 1.0 | -| test.c:556:58:556:64 | ... * ... | 7.24700382E8 | -| test.c:556:63:556:64 | ip | 7.24700382E8 | -| test.c:557:19:557:30 | (...) | 1.449400765E9 | -| test.c:557:19:557:35 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:20 | 2 | 1.0 | -| test.c:557:20:557:20 | (unsigned int)... | 1.0 | -| test.c:557:20:557:25 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:29 | ... + ... | 1.449400765E9 | -| test.c:557:24:557:25 | ip | 1.449400765E9 | -| test.c:557:29:557:29 | 1 | 1.0 | -| test.c:557:29:557:29 | (unsigned int)... | 1.0 | -| test.c:557:34:557:35 | 14 | 1.0 | -| test.c:557:34:557:35 | (unsigned int)... | 1.0 | -| test.c:558:19:558:20 | 14 | 1.0 | -| test.c:558:19:558:20 | (unsigned int)... | 1.0 | -| test.c:558:19:558:31 | ... * ... | 1.449400765E9 | -| test.c:558:19:558:41 | ... > ... | 1.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 2.1007625775825853E18 | -| test.c:558:24:558:31 | (...) | 1.449400765E9 | -| test.c:558:25:558:25 | 2 | 1.0 | -| test.c:558:25:558:25 | (unsigned int)... | 1.0 | -| test.c:558:25:558:30 | ... * ... | 1.449400765E9 | -| test.c:558:29:558:30 | ip | 1.449400765E9 | -| test.c:558:35:558:36 | 17 | 1.0 | -| test.c:558:35:558:36 | (unsigned int)... | 1.0 | -| test.c:558:35:558:41 | ... * ... | 1.449400765E9 | -| test.c:558:40:558:41 | ip | 1.449400765E9 | -| test.c:559:21:559:22 | 14 | 1.0 | -| test.c:559:21:559:22 | (unsigned int)... | 1.0 | -| test.c:559:21:559:33 | ... * ... | 1.449400765E9 | -| test.c:559:26:559:33 | (...) | 1.449400765E9 | -| test.c:559:27:559:27 | 2 | 1.0 | -| test.c:559:27:559:27 | (unsigned int)... | 1.0 | -| test.c:559:27:559:32 | ... * ... | 1.449400765E9 | -| test.c:559:31:559:32 | ip | 1.449400765E9 | -| test.c:560:21:560:22 | 14 | 1.0 | -| test.c:560:21:560:22 | (unsigned int)... | 1.0 | -| test.c:560:21:560:27 | ... * ... | 1.449400765E9 | -| test.c:560:26:560:27 | ip | 1.449400765E9 | -| test.c:561:15:561:16 | 14 | 1.0 | -| test.c:561:15:561:16 | (unsigned int)... | 1.0 | -| test.c:561:15:561:21 | ... * ... | 7.24700382E8 | -| test.c:561:15:561:37 | ... > ... | 1.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:561:20:561:21 | ip | 7.24700382E8 | -| test.c:561:25:561:32 | (...) | 7.24700382E8 | -| test.c:561:25:561:37 | ... * ... | 7.24700382E8 | -| test.c:561:26:561:27 | ip | 7.24700382E8 | -| test.c:561:26:561:31 | ... + ... | 7.24700382E8 | -| test.c:561:31:561:31 | 1 | 1.0 | -| test.c:561:31:561:31 | (unsigned int)... | 1.0 | -| test.c:561:36:561:37 | 17 | 1.0 | -| test.c:561:36:561:37 | (unsigned int)... | 1.0 | -| test.c:562:17:562:18 | 14 | 1.0 | -| test.c:562:17:562:18 | (unsigned int)... | 1.0 | -| test.c:562:17:562:23 | ... * ... | 7.24700382E8 | -| test.c:562:22:562:23 | ip | 7.24700382E8 | -| test.c:563:17:563:24 | (...) | 7.24700382E8 | -| test.c:563:17:563:29 | ... * ... | 7.24700382E8 | -| test.c:563:18:563:19 | ip | 7.24700382E8 | -| test.c:563:18:563:23 | ... + ... | 7.24700382E8 | -| test.c:563:23:563:23 | 1 | 1.0 | -| test.c:563:23:563:23 | (unsigned int)... | 1.0 | -| test.c:563:28:563:29 | 14 | 1.0 | -| test.c:563:28:563:29 | (unsigned int)... | 1.0 | -| test.c:564:11:564:11 | 2 | 1.0 | -| test.c:564:11:564:11 | (unsigned int)... | 1.0 | -| test.c:564:11:564:28 | ... * ... | 5.797603059E9 | -| test.c:564:11:584:46 | ... + ... | 9.943431528813442E94 | -| test.c:564:15:564:28 | (...) | 5.797603059E9 | -| test.c:564:16:564:17 | ip | 5.797603059E9 | -| test.c:564:16:564:22 | ... * ... | 5.797603059E9 | -| test.c:564:16:564:27 | ... + ... | 5.797603059E9 | -| test.c:564:21:564:22 | 14 | 1.0 | -| test.c:564:21:564:22 | (unsigned int)... | 1.0 | -| test.c:564:26:564:27 | 32 | 1.0 | -| test.c:564:26:564:27 | (unsigned int)... | 1.0 | -| test.c:565:11:584:46 | (...) | 1.715093535659983E85 | -| test.c:565:12:565:12 | 4 | 1.0 | -| test.c:565:12:565:12 | (unsigned int)... | 1.0 | -| test.c:565:12:565:29 | ... * ... | 5.797603059E9 | -| test.c:565:12:566:30 | ... + ... | 3.361220122972616E19 | -| test.c:565:12:567:30 | ... + ... | 1.9487020066918396E29 | -| test.c:565:12:573:26 | ... + ... | 3.0379516094938436E59 | -| test.c:565:12:574:41 | ... > ... | 1.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 1.715093535659983E85 | -| test.c:565:16:565:29 | (...) | 5.797603059E9 | -| test.c:565:17:565:18 | ip | 5.797603059E9 | -| test.c:565:17:565:23 | ... * ... | 5.797603059E9 | -| test.c:565:17:565:28 | ... + ... | 5.797603059E9 | -| test.c:565:22:565:23 | 14 | 1.0 | -| test.c:565:22:565:23 | (unsigned int)... | 1.0 | -| test.c:565:27:565:28 | 32 | 1.0 | -| test.c:565:27:565:28 | (unsigned int)... | 1.0 | -| test.c:566:13:566:30 | (...) | 5.797603059E9 | -| test.c:566:14:566:14 | 2 | 1.0 | -| test.c:566:14:566:14 | (unsigned int)... | 1.0 | -| test.c:566:14:566:19 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:24 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:29 | ... + ... | 5.797603059E9 | -| test.c:566:18:566:19 | ip | 5.797603059E9 | -| test.c:566:23:566:24 | 14 | 1.0 | -| test.c:566:23:566:24 | (unsigned int)... | 1.0 | -| test.c:566:28:566:29 | 32 | 1.0 | -| test.c:566:28:566:29 | (unsigned int)... | 1.0 | -| test.c:567:13:567:13 | 2 | 1.0 | -| test.c:567:13:567:13 | (unsigned int)... | 1.0 | -| test.c:567:13:567:30 | ... * ... | 5.797603059E9 | -| test.c:567:17:567:30 | (...) | 5.797603059E9 | -| test.c:567:18:567:19 | ip | 5.797603059E9 | -| test.c:567:18:567:24 | ... * ... | 5.797603059E9 | -| test.c:567:18:567:29 | ... + ... | 5.797603059E9 | -| test.c:567:23:567:24 | 14 | 1.0 | -| test.c:567:23:567:24 | (unsigned int)... | 1.0 | -| test.c:567:28:567:29 | 64 | 1.0 | -| test.c:567:28:567:29 | (unsigned int)... | 1.0 | -| test.c:568:13:573:26 | (...) | 1.558961605756818E30 | -| test.c:568:14:568:25 | (...) | 5.797603059E9 | -| test.c:568:14:568:30 | ... * ... | 5.797603059E9 | -| test.c:568:14:569:63 | ... > ... | 1.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:568:15:568:15 | 2 | 1.0 | -| test.c:568:15:568:15 | (unsigned int)... | 1.0 | -| test.c:568:15:568:20 | ... * ... | 5.797603059E9 | -| test.c:568:15:568:24 | ... + ... | 5.797603059E9 | -| test.c:568:19:568:20 | ip | 5.797603059E9 | -| test.c:568:24:568:24 | 1 | 1.0 | -| test.c:568:24:568:24 | (unsigned int)... | 1.0 | -| test.c:568:29:568:30 | 14 | 1.0 | -| test.c:568:29:568:30 | (unsigned int)... | 1.0 | -| test.c:569:13:569:63 | (...) | 3.361220122972616E19 | -| test.c:569:14:569:15 | 14 | 1.0 | -| test.c:569:14:569:15 | (unsigned int)... | 1.0 | -| test.c:569:14:569:26 | ... * ... | 5.797603059E9 | -| test.c:569:14:569:36 | ... > ... | 1.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:569:19:569:26 | (...) | 5.797603059E9 | -| test.c:569:20:569:20 | 2 | 1.0 | -| test.c:569:20:569:20 | (unsigned int)... | 1.0 | -| test.c:569:20:569:25 | ... * ... | 5.797603059E9 | -| test.c:569:24:569:25 | ip | 5.797603059E9 | -| test.c:569:30:569:31 | 17 | 1.0 | -| test.c:569:30:569:31 | (unsigned int)... | 1.0 | -| test.c:569:30:569:36 | ... * ... | 5.797603059E9 | -| test.c:569:35:569:36 | ip | 5.797603059E9 | -| test.c:569:40:569:41 | 17 | 1.0 | -| test.c:569:40:569:41 | (unsigned int)... | 1.0 | -| test.c:569:40:569:52 | ... * ... | 5.797603059E9 | -| test.c:569:45:569:52 | (...) | 5.797603059E9 | -| test.c:569:46:569:46 | 2 | 1.0 | -| test.c:569:46:569:46 | (unsigned int)... | 1.0 | -| test.c:569:46:569:51 | ... * ... | 5.797603059E9 | -| test.c:569:50:569:51 | ip | 5.797603059E9 | -| test.c:569:56:569:57 | 17 | 1.0 | -| test.c:569:56:569:57 | (unsigned int)... | 1.0 | -| test.c:569:56:569:62 | ... * ... | 5.797603059E9 | -| test.c:569:61:569:62 | ip | 5.797603059E9 | -| test.c:570:17:570:28 | (...) | 1.1595206119E10 | -| test.c:570:17:570:33 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:18 | 2 | 1.0 | -| test.c:570:18:570:18 | (unsigned int)... | 1.0 | -| test.c:570:18:570:23 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:27 | ... + ... | 1.1595206119E10 | -| test.c:570:22:570:23 | ip | 1.1595206119E10 | -| test.c:570:27:570:27 | 1 | 1.0 | -| test.c:570:27:570:27 | (unsigned int)... | 1.0 | -| test.c:570:32:570:33 | 14 | 1.0 | -| test.c:570:32:570:33 | (unsigned int)... | 1.0 | -| test.c:571:17:571:18 | 14 | 1.0 | -| test.c:571:17:571:18 | (unsigned int)... | 1.0 | -| test.c:571:17:571:29 | ... * ... | 1.1595206119E10 | -| test.c:571:17:571:39 | ... > ... | 1.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:571:22:571:29 | (...) | 1.1595206119E10 | -| test.c:571:23:571:23 | 2 | 1.0 | -| test.c:571:23:571:23 | (unsigned int)... | 1.0 | -| test.c:571:23:571:28 | ... * ... | 1.1595206119E10 | -| test.c:571:27:571:28 | ip | 1.1595206119E10 | -| test.c:571:33:571:34 | 17 | 1.0 | -| test.c:571:33:571:34 | (unsigned int)... | 1.0 | -| test.c:571:33:571:39 | ... * ... | 1.1595206119E10 | -| test.c:571:38:571:39 | ip | 1.1595206119E10 | -| test.c:572:19:572:20 | 14 | 1.0 | -| test.c:572:19:572:20 | (unsigned int)... | 1.0 | -| test.c:572:19:572:31 | ... * ... | 1.1595206119E10 | -| test.c:572:24:572:31 | (...) | 1.1595206119E10 | -| test.c:572:25:572:25 | 2 | 1.0 | -| test.c:572:25:572:25 | (unsigned int)... | 1.0 | -| test.c:572:25:572:30 | ... * ... | 1.1595206119E10 | -| test.c:572:29:572:30 | ip | 1.1595206119E10 | -| test.c:573:19:573:20 | 14 | 1.0 | -| test.c:573:19:573:20 | (unsigned int)... | 1.0 | -| test.c:573:19:573:25 | ... * ... | 1.1595206119E10 | -| test.c:573:24:573:25 | ip | 1.1595206119E10 | -| test.c:574:11:574:11 | 2 | 1.0 | -| test.c:574:11:574:11 | (unsigned int)... | 1.0 | -| test.c:574:11:574:16 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:21 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:41 | ... + ... | 1.2100392444788552E21 | -| test.c:574:15:574:16 | ip | 3.4785618357E10 | -| test.c:574:20:574:21 | 14 | 1.0 | -| test.c:574:20:574:21 | (unsigned int)... | 1.0 | -| test.c:574:25:574:36 | (...) | 3.4785618357E10 | -| test.c:574:25:574:41 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:26 | 2 | 1.0 | -| test.c:574:26:574:26 | (unsigned int)... | 1.0 | -| test.c:574:26:574:31 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:35 | ... + ... | 3.4785618357E10 | -| test.c:574:30:574:31 | ip | 3.4785618357E10 | -| test.c:574:35:574:35 | 1 | 1.0 | -| test.c:574:35:574:35 | (unsigned int)... | 1.0 | -| test.c:574:40:574:41 | 17 | 1.0 | -| test.c:574:40:574:41 | (unsigned int)... | 1.0 | -| test.c:575:15:575:15 | 4 | 1.0 | -| test.c:575:15:575:15 | (unsigned int)... | 1.0 | -| test.c:575:15:575:32 | ... * ... | 3.4785618357E10 | -| test.c:575:15:576:32 | ... + ... | 1.2100392444788552E21 | -| test.c:575:15:577:32 | ... + ... | 4.209196335543408E31 | -| test.c:575:15:583:28 | ... + ... | 1.417386703353284E64 | -| test.c:575:19:575:32 | (...) | 3.4785618357E10 | -| test.c:575:20:575:21 | ip | 3.4785618357E10 | -| test.c:575:20:575:26 | ... * ... | 3.4785618357E10 | -| test.c:575:20:575:31 | ... + ... | 3.4785618357E10 | -| test.c:575:25:575:26 | 14 | 1.0 | -| test.c:575:25:575:26 | (unsigned int)... | 1.0 | -| test.c:575:30:575:31 | 32 | 1.0 | -| test.c:575:30:575:31 | (unsigned int)... | 1.0 | -| test.c:576:15:576:32 | (...) | 3.4785618357E10 | -| test.c:576:16:576:16 | 2 | 1.0 | -| test.c:576:16:576:16 | (unsigned int)... | 1.0 | -| test.c:576:16:576:21 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:26 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:31 | ... + ... | 3.4785618357E10 | -| test.c:576:20:576:21 | ip | 3.4785618357E10 | -| test.c:576:25:576:26 | 14 | 1.0 | -| test.c:576:25:576:26 | (unsigned int)... | 1.0 | -| test.c:576:30:576:31 | 32 | 1.0 | -| test.c:576:30:576:31 | (unsigned int)... | 1.0 | -| test.c:577:15:577:15 | 2 | 1.0 | -| test.c:577:15:577:15 | (unsigned int)... | 1.0 | -| test.c:577:15:577:32 | ... * ... | 3.4785618357E10 | -| test.c:577:19:577:32 | (...) | 3.4785618357E10 | -| test.c:577:20:577:21 | ip | 3.4785618357E10 | -| test.c:577:20:577:26 | ... * ... | 3.4785618357E10 | -| test.c:577:20:577:31 | ... + ... | 3.4785618357E10 | -| test.c:577:25:577:26 | 14 | 1.0 | -| test.c:577:25:577:26 | (unsigned int)... | 1.0 | -| test.c:577:30:577:31 | 64 | 1.0 | -| test.c:577:30:577:31 | (unsigned int)... | 1.0 | -| test.c:578:15:583:28 | (...) | 3.367357068579931E32 | -| test.c:578:16:578:27 | (...) | 3.4785618357E10 | -| test.c:578:16:578:32 | ... * ... | 3.4785618357E10 | -| test.c:578:16:579:65 | ... > ... | 1.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 3.367357068579931E32 | -| test.c:578:17:578:17 | 2 | 1.0 | -| test.c:578:17:578:17 | (unsigned int)... | 1.0 | -| test.c:578:17:578:22 | ... * ... | 3.4785618357E10 | -| test.c:578:17:578:26 | ... + ... | 3.4785618357E10 | -| test.c:578:21:578:22 | ip | 3.4785618357E10 | -| test.c:578:26:578:26 | 1 | 1.0 | -| test.c:578:26:578:26 | (unsigned int)... | 1.0 | -| test.c:578:31:578:32 | 14 | 1.0 | -| test.c:578:31:578:32 | (unsigned int)... | 1.0 | -| test.c:579:15:579:65 | (...) | 1.2100392444788552E21 | -| test.c:579:16:579:17 | 14 | 1.0 | -| test.c:579:16:579:17 | (unsigned int)... | 1.0 | -| test.c:579:16:579:28 | ... * ... | 3.4785618357E10 | -| test.c:579:16:579:38 | ... > ... | 1.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:579:21:579:28 | (...) | 3.4785618357E10 | -| test.c:579:22:579:22 | 2 | 1.0 | -| test.c:579:22:579:22 | (unsigned int)... | 1.0 | -| test.c:579:22:579:27 | ... * ... | 3.4785618357E10 | -| test.c:579:26:579:27 | ip | 3.4785618357E10 | -| test.c:579:32:579:33 | 17 | 1.0 | -| test.c:579:32:579:33 | (unsigned int)... | 1.0 | -| test.c:579:32:579:38 | ... * ... | 3.4785618357E10 | -| test.c:579:37:579:38 | ip | 3.4785618357E10 | -| test.c:579:42:579:43 | 17 | 1.0 | -| test.c:579:42:579:43 | (unsigned int)... | 1.0 | -| test.c:579:42:579:54 | ... * ... | 3.4785618357E10 | -| test.c:579:47:579:54 | (...) | 3.4785618357E10 | -| test.c:579:48:579:48 | 2 | 1.0 | -| test.c:579:48:579:48 | (unsigned int)... | 1.0 | -| test.c:579:48:579:53 | ... * ... | 3.4785618357E10 | -| test.c:579:52:579:53 | ip | 3.4785618357E10 | -| test.c:579:58:579:59 | 17 | 1.0 | -| test.c:579:58:579:59 | (unsigned int)... | 1.0 | -| test.c:579:58:579:64 | ... * ... | 3.4785618357E10 | -| test.c:579:63:579:64 | ip | 3.4785618357E10 | -| test.c:580:19:580:30 | (...) | 6.9571236715E10 | -| test.c:580:19:580:35 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:20 | 2 | 1.0 | -| test.c:580:20:580:20 | (unsigned int)... | 1.0 | -| test.c:580:20:580:25 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:29 | ... + ... | 6.9571236715E10 | -| test.c:580:24:580:25 | ip | 6.9571236715E10 | -| test.c:580:29:580:29 | 1 | 1.0 | -| test.c:580:29:580:29 | (unsigned int)... | 1.0 | -| test.c:580:34:580:35 | 14 | 1.0 | -| test.c:580:34:580:35 | (unsigned int)... | 1.0 | -| test.c:581:19:581:20 | 14 | 1.0 | -| test.c:581:19:581:20 | (unsigned int)... | 1.0 | -| test.c:581:19:581:31 | ... * ... | 6.9571236715E10 | -| test.c:581:19:581:41 | ... > ... | 1.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.840156978054564E21 | -| test.c:581:24:581:31 | (...) | 6.9571236715E10 | -| test.c:581:25:581:25 | 2 | 1.0 | -| test.c:581:25:581:25 | (unsigned int)... | 1.0 | -| test.c:581:25:581:30 | ... * ... | 6.9571236715E10 | -| test.c:581:29:581:30 | ip | 6.9571236715E10 | -| test.c:581:35:581:36 | 17 | 1.0 | -| test.c:581:35:581:36 | (unsigned int)... | 1.0 | -| test.c:581:35:581:41 | ... * ... | 6.9571236715E10 | -| test.c:581:40:581:41 | ip | 6.9571236715E10 | -| test.c:582:21:582:22 | 14 | 1.0 | -| test.c:582:21:582:22 | (unsigned int)... | 1.0 | -| test.c:582:21:582:33 | ... * ... | 6.9571236715E10 | -| test.c:582:26:582:33 | (...) | 6.9571236715E10 | -| test.c:582:27:582:27 | 2 | 1.0 | -| test.c:582:27:582:27 | (unsigned int)... | 1.0 | -| test.c:582:27:582:32 | ... * ... | 6.9571236715E10 | -| test.c:582:31:582:32 | ip | 6.9571236715E10 | -| test.c:583:21:583:22 | 14 | 1.0 | -| test.c:583:21:583:22 | (unsigned int)... | 1.0 | -| test.c:583:21:583:27 | ... * ... | 6.9571236715E10 | -| test.c:583:26:583:27 | ip | 6.9571236715E10 | -| test.c:584:15:584:15 | 2 | 1.0 | -| test.c:584:15:584:15 | (unsigned int)... | 1.0 | -| test.c:584:15:584:20 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:25 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:45 | ... + ... | 1.2100392444788552E21 | -| test.c:584:19:584:20 | ip | 3.4785618357E10 | -| test.c:584:24:584:25 | 14 | 1.0 | -| test.c:584:24:584:25 | (unsigned int)... | 1.0 | -| test.c:584:29:584:40 | (...) | 3.4785618357E10 | -| test.c:584:29:584:45 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:30 | 2 | 1.0 | -| test.c:584:30:584:30 | (unsigned int)... | 1.0 | -| test.c:584:30:584:35 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:39 | ... + ... | 3.4785618357E10 | -| test.c:584:34:584:35 | ip | 3.4785618357E10 | -| test.c:584:39:584:39 | 1 | 1.0 | -| test.c:584:39:584:39 | (unsigned int)... | 1.0 | -| test.c:584:44:584:45 | 17 | 1.0 | -| test.c:584:44:584:45 | (unsigned int)... | 1.0 | -| test.c:585:11:585:11 | 4 | 1.0 | -| test.c:585:11:585:11 | (unsigned int)... | 1.0 | -| test.c:585:11:585:28 | ... * ... | 5.797603059E9 | -| test.c:585:11:586:32 | ... + ... | 3.361220122972616E19 | -| test.c:585:11:587:32 | ... + ... | 1.9487020066918396E29 | -| test.c:585:11:593:28 | ... + ... | 3.0379516094938436E59 | -| test.c:585:11:594:63 | ... > ... | 1.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.390639451194891E87 | -| test.c:585:15:585:28 | (...) | 5.797603059E9 | -| test.c:585:16:585:17 | ip | 5.797603059E9 | -| test.c:585:16:585:22 | ... * ... | 5.797603059E9 | -| test.c:585:16:585:27 | ... + ... | 5.797603059E9 | -| test.c:585:21:585:22 | 14 | 1.0 | -| test.c:585:21:585:22 | (unsigned int)... | 1.0 | -| test.c:585:26:585:27 | 32 | 1.0 | -| test.c:585:26:585:27 | (unsigned int)... | 1.0 | -| test.c:586:15:586:32 | (...) | 5.797603059E9 | -| test.c:586:16:586:16 | 2 | 1.0 | -| test.c:586:16:586:16 | (unsigned int)... | 1.0 | -| test.c:586:16:586:21 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:26 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:31 | ... + ... | 5.797603059E9 | -| test.c:586:20:586:21 | ip | 5.797603059E9 | -| test.c:586:25:586:26 | 14 | 1.0 | -| test.c:586:25:586:26 | (unsigned int)... | 1.0 | -| test.c:586:30:586:31 | 32 | 1.0 | -| test.c:586:30:586:31 | (unsigned int)... | 1.0 | -| test.c:587:15:587:15 | 2 | 1.0 | -| test.c:587:15:587:15 | (unsigned int)... | 1.0 | -| test.c:587:15:587:32 | ... * ... | 5.797603059E9 | -| test.c:587:19:587:32 | (...) | 5.797603059E9 | -| test.c:587:20:587:21 | ip | 5.797603059E9 | -| test.c:587:20:587:26 | ... * ... | 5.797603059E9 | -| test.c:587:20:587:31 | ... + ... | 5.797603059E9 | -| test.c:587:25:587:26 | 14 | 1.0 | -| test.c:587:25:587:26 | (unsigned int)... | 1.0 | -| test.c:587:30:587:31 | 64 | 1.0 | -| test.c:587:30:587:31 | (unsigned int)... | 1.0 | -| test.c:588:15:593:28 | (...) | 1.558961605756818E30 | -| test.c:588:16:588:27 | (...) | 5.797603059E9 | -| test.c:588:16:588:32 | ... * ... | 5.797603059E9 | -| test.c:588:16:589:65 | ... > ... | 1.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:588:17:588:17 | 2 | 1.0 | -| test.c:588:17:588:17 | (unsigned int)... | 1.0 | -| test.c:588:17:588:22 | ... * ... | 5.797603059E9 | -| test.c:588:17:588:26 | ... + ... | 5.797603059E9 | -| test.c:588:21:588:22 | ip | 5.797603059E9 | -| test.c:588:26:588:26 | 1 | 1.0 | -| test.c:588:26:588:26 | (unsigned int)... | 1.0 | -| test.c:588:31:588:32 | 14 | 1.0 | -| test.c:588:31:588:32 | (unsigned int)... | 1.0 | -| test.c:589:15:589:65 | (...) | 3.361220122972616E19 | -| test.c:589:16:589:17 | 14 | 1.0 | -| test.c:589:16:589:17 | (unsigned int)... | 1.0 | -| test.c:589:16:589:28 | ... * ... | 5.797603059E9 | -| test.c:589:16:589:38 | ... > ... | 1.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:589:21:589:28 | (...) | 5.797603059E9 | -| test.c:589:22:589:22 | 2 | 1.0 | -| test.c:589:22:589:22 | (unsigned int)... | 1.0 | -| test.c:589:22:589:27 | ... * ... | 5.797603059E9 | -| test.c:589:26:589:27 | ip | 5.797603059E9 | -| test.c:589:32:589:33 | 17 | 1.0 | -| test.c:589:32:589:33 | (unsigned int)... | 1.0 | -| test.c:589:32:589:38 | ... * ... | 5.797603059E9 | -| test.c:589:37:589:38 | ip | 5.797603059E9 | -| test.c:589:42:589:43 | 17 | 1.0 | -| test.c:589:42:589:43 | (unsigned int)... | 1.0 | -| test.c:589:42:589:54 | ... * ... | 5.797603059E9 | -| test.c:589:47:589:54 | (...) | 5.797603059E9 | -| test.c:589:48:589:48 | 2 | 1.0 | -| test.c:589:48:589:48 | (unsigned int)... | 1.0 | -| test.c:589:48:589:53 | ... * ... | 5.797603059E9 | -| test.c:589:52:589:53 | ip | 5.797603059E9 | -| test.c:589:58:589:59 | 17 | 1.0 | -| test.c:589:58:589:59 | (unsigned int)... | 1.0 | -| test.c:589:58:589:64 | ... * ... | 5.797603059E9 | -| test.c:589:63:589:64 | ip | 5.797603059E9 | -| test.c:590:19:590:30 | (...) | 1.1595206119E10 | -| test.c:590:19:590:35 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:20 | 2 | 1.0 | -| test.c:590:20:590:20 | (unsigned int)... | 1.0 | -| test.c:590:20:590:25 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:29 | ... + ... | 1.1595206119E10 | -| test.c:590:24:590:25 | ip | 1.1595206119E10 | -| test.c:590:29:590:29 | 1 | 1.0 | -| test.c:590:29:590:29 | (unsigned int)... | 1.0 | -| test.c:590:34:590:35 | 14 | 1.0 | -| test.c:590:34:590:35 | (unsigned int)... | 1.0 | -| test.c:591:19:591:20 | 14 | 1.0 | -| test.c:591:19:591:20 | (unsigned int)... | 1.0 | -| test.c:591:19:591:31 | ... * ... | 1.1595206119E10 | -| test.c:591:19:591:41 | ... > ... | 1.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:591:24:591:31 | (...) | 1.1595206119E10 | -| test.c:591:25:591:25 | 2 | 1.0 | -| test.c:591:25:591:25 | (unsigned int)... | 1.0 | -| test.c:591:25:591:30 | ... * ... | 1.1595206119E10 | -| test.c:591:29:591:30 | ip | 1.1595206119E10 | -| test.c:591:35:591:36 | 17 | 1.0 | -| test.c:591:35:591:36 | (unsigned int)... | 1.0 | -| test.c:591:35:591:41 | ... * ... | 1.1595206119E10 | -| test.c:591:40:591:41 | ip | 1.1595206119E10 | -| test.c:592:21:592:22 | 14 | 1.0 | -| test.c:592:21:592:22 | (unsigned int)... | 1.0 | -| test.c:592:21:592:33 | ... * ... | 1.1595206119E10 | -| test.c:592:26:592:33 | (...) | 1.1595206119E10 | -| test.c:592:27:592:27 | 2 | 1.0 | -| test.c:592:27:592:27 | (unsigned int)... | 1.0 | -| test.c:592:27:592:32 | ... * ... | 1.1595206119E10 | -| test.c:592:31:592:32 | ip | 1.1595206119E10 | -| test.c:593:21:593:22 | 14 | 1.0 | -| test.c:593:21:593:22 | (unsigned int)... | 1.0 | -| test.c:593:21:593:27 | ... * ... | 1.1595206119E10 | -| test.c:593:26:593:27 | ip | 1.1595206119E10 | -| test.c:594:13:594:63 | (...) | 1.2100392444788552E21 | -| test.c:594:14:594:15 | 14 | 1.0 | -| test.c:594:14:594:15 | (unsigned int)... | 1.0 | -| test.c:594:14:594:20 | ... * ... | 3.4785618357E10 | -| test.c:594:14:594:36 | ... > ... | 1.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:594:19:594:20 | ip | 3.4785618357E10 | -| test.c:594:24:594:31 | (...) | 3.4785618357E10 | -| test.c:594:24:594:36 | ... * ... | 3.4785618357E10 | -| test.c:594:25:594:26 | ip | 3.4785618357E10 | -| test.c:594:25:594:30 | ... + ... | 3.4785618357E10 | -| test.c:594:30:594:30 | 1 | 1.0 | -| test.c:594:30:594:30 | (unsigned int)... | 1.0 | -| test.c:594:35:594:36 | 17 | 1.0 | -| test.c:594:35:594:36 | (unsigned int)... | 1.0 | -| test.c:594:40:594:41 | 17 | 1.0 | -| test.c:594:40:594:41 | (unsigned int)... | 1.0 | -| test.c:594:40:594:46 | ... * ... | 3.4785618357E10 | -| test.c:594:45:594:46 | ip | 3.4785618357E10 | -| test.c:594:50:594:57 | (...) | 3.4785618357E10 | -| test.c:594:50:594:62 | ... * ... | 3.4785618357E10 | -| test.c:594:51:594:52 | ip | 3.4785618357E10 | -| test.c:594:51:594:56 | ... + ... | 3.4785618357E10 | -| test.c:594:56:594:56 | 1 | 1.0 | -| test.c:594:56:594:56 | (unsigned int)... | 1.0 | -| test.c:594:61:594:62 | 17 | 1.0 | -| test.c:594:61:594:62 | (unsigned int)... | 1.0 | -| test.c:595:13:595:13 | 4 | 1.0 | -| test.c:595:13:595:13 | (unsigned int)... | 1.0 | -| test.c:595:13:595:30 | ... * ... | 6.9571236714E10 | -| test.c:595:13:596:30 | ... + ... | 4.840156977915421E21 | -| test.c:595:13:597:30 | ... + ... | 3.3673570684347266E32 | -| test.c:595:13:603:26 | ... + ... | 9.071274901265435E65 | -| test.c:595:17:595:30 | (...) | 6.9571236714E10 | -| test.c:595:18:595:19 | ip | 6.9571236714E10 | -| test.c:595:18:595:24 | ... * ... | 6.9571236714E10 | -| test.c:595:18:595:29 | ... + ... | 6.9571236714E10 | -| test.c:595:23:595:24 | 14 | 1.0 | -| test.c:595:23:595:24 | (unsigned int)... | 1.0 | -| test.c:595:28:595:29 | 32 | 1.0 | -| test.c:595:28:595:29 | (unsigned int)... | 1.0 | -| test.c:596:13:596:30 | (...) | 6.9571236714E10 | -| test.c:596:14:596:14 | 2 | 1.0 | -| test.c:596:14:596:14 | (unsigned int)... | 1.0 | -| test.c:596:14:596:19 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:24 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:29 | ... + ... | 6.9571236714E10 | -| test.c:596:18:596:19 | ip | 6.9571236714E10 | -| test.c:596:23:596:24 | 14 | 1.0 | -| test.c:596:23:596:24 | (unsigned int)... | 1.0 | -| test.c:596:28:596:29 | 32 | 1.0 | -| test.c:596:28:596:29 | (unsigned int)... | 1.0 | -| test.c:597:13:597:13 | 2 | 1.0 | -| test.c:597:13:597:13 | (unsigned int)... | 1.0 | -| test.c:597:13:597:30 | ... * ... | 6.9571236714E10 | -| test.c:597:17:597:30 | (...) | 6.9571236714E10 | -| test.c:597:18:597:19 | ip | 6.9571236714E10 | -| test.c:597:18:597:24 | ... * ... | 6.9571236714E10 | -| test.c:597:18:597:29 | ... + ... | 6.9571236714E10 | -| test.c:597:23:597:24 | 14 | 1.0 | -| test.c:597:23:597:24 | (unsigned int)... | 1.0 | -| test.c:597:28:597:29 | 64 | 1.0 | -| test.c:597:28:597:29 | (unsigned int)... | 1.0 | -| test.c:598:13:603:26 | (...) | 2.693885654805863E33 | -| test.c:598:14:598:25 | (...) | 6.9571236714E10 | -| test.c:598:14:598:30 | ... * ... | 6.9571236714E10 | -| test.c:598:14:599:63 | ... > ... | 1.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 2.693885654805863E33 | -| test.c:598:15:598:15 | 2 | 1.0 | -| test.c:598:15:598:15 | (unsigned int)... | 1.0 | -| test.c:598:15:598:20 | ... * ... | 6.9571236714E10 | -| test.c:598:15:598:24 | ... + ... | 6.9571236714E10 | -| test.c:598:19:598:20 | ip | 6.9571236714E10 | -| test.c:598:24:598:24 | 1 | 1.0 | -| test.c:598:24:598:24 | (unsigned int)... | 1.0 | -| test.c:598:29:598:30 | 14 | 1.0 | -| test.c:598:29:598:30 | (unsigned int)... | 1.0 | -| test.c:599:13:599:63 | (...) | 4.840156977915421E21 | -| test.c:599:14:599:15 | 14 | 1.0 | -| test.c:599:14:599:15 | (unsigned int)... | 1.0 | -| test.c:599:14:599:26 | ... * ... | 6.9571236714E10 | -| test.c:599:14:599:36 | ... > ... | 1.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:599:19:599:26 | (...) | 6.9571236714E10 | -| test.c:599:20:599:20 | 2 | 1.0 | -| test.c:599:20:599:20 | (unsigned int)... | 1.0 | -| test.c:599:20:599:25 | ... * ... | 6.9571236714E10 | -| test.c:599:24:599:25 | ip | 6.9571236714E10 | -| test.c:599:30:599:31 | 17 | 1.0 | -| test.c:599:30:599:31 | (unsigned int)... | 1.0 | -| test.c:599:30:599:36 | ... * ... | 6.9571236714E10 | -| test.c:599:35:599:36 | ip | 6.9571236714E10 | -| test.c:599:40:599:41 | 17 | 1.0 | -| test.c:599:40:599:41 | (unsigned int)... | 1.0 | -| test.c:599:40:599:52 | ... * ... | 6.9571236714E10 | -| test.c:599:45:599:52 | (...) | 6.9571236714E10 | -| test.c:599:46:599:46 | 2 | 1.0 | -| test.c:599:46:599:46 | (unsigned int)... | 1.0 | -| test.c:599:46:599:51 | ... * ... | 6.9571236714E10 | -| test.c:599:50:599:51 | ip | 6.9571236714E10 | -| test.c:599:56:599:57 | 17 | 1.0 | -| test.c:599:56:599:57 | (unsigned int)... | 1.0 | -| test.c:599:56:599:62 | ... * ... | 6.9571236714E10 | -| test.c:599:61:599:62 | ip | 6.9571236714E10 | -| test.c:600:17:600:28 | (...) | 1.39142473429E11 | -| test.c:600:17:600:33 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:18 | 2 | 1.0 | -| test.c:600:18:600:18 | (unsigned int)... | 1.0 | -| test.c:600:18:600:23 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:27 | ... + ... | 1.39142473429E11 | -| test.c:600:22:600:23 | ip | 1.39142473429E11 | -| test.c:600:27:600:27 | 1 | 1.0 | -| test.c:600:27:600:27 | (unsigned int)... | 1.0 | -| test.c:600:32:600:33 | 14 | 1.0 | -| test.c:600:32:600:33 | (unsigned int)... | 1.0 | -| test.c:601:17:601:18 | 14 | 1.0 | -| test.c:601:17:601:18 | (unsigned int)... | 1.0 | -| test.c:601:17:601:29 | ... * ... | 1.39142473429E11 | -| test.c:601:17:601:39 | ... > ... | 1.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 1.936062791193997E22 | -| test.c:601:22:601:29 | (...) | 1.39142473429E11 | -| test.c:601:23:601:23 | 2 | 1.0 | -| test.c:601:23:601:23 | (unsigned int)... | 1.0 | -| test.c:601:23:601:28 | ... * ... | 1.39142473429E11 | -| test.c:601:27:601:28 | ip | 1.39142473429E11 | -| test.c:601:33:601:34 | 17 | 1.0 | -| test.c:601:33:601:34 | (unsigned int)... | 1.0 | -| test.c:601:33:601:39 | ... * ... | 1.39142473429E11 | -| test.c:601:38:601:39 | ip | 1.39142473429E11 | -| test.c:602:19:602:20 | 14 | 1.0 | -| test.c:602:19:602:20 | (unsigned int)... | 1.0 | -| test.c:602:19:602:31 | ... * ... | 1.39142473429E11 | -| test.c:602:24:602:31 | (...) | 1.39142473429E11 | -| test.c:602:25:602:25 | 2 | 1.0 | -| test.c:602:25:602:25 | (unsigned int)... | 1.0 | -| test.c:602:25:602:30 | ... * ... | 1.39142473429E11 | -| test.c:602:29:602:30 | ip | 1.39142473429E11 | -| test.c:603:19:603:20 | 14 | 1.0 | -| test.c:603:19:603:20 | (unsigned int)... | 1.0 | -| test.c:603:19:603:25 | ... * ... | 1.39142473429E11 | -| test.c:603:24:603:25 | ip | 1.39142473429E11 | -| test.c:604:13:604:14 | 14 | 1.0 | -| test.c:604:13:604:14 | (unsigned int)... | 1.0 | -| test.c:604:13:604:19 | ... * ... | 6.9571236714E10 | -| test.c:604:13:604:35 | ... > ... | 1.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:604:18:604:19 | ip | 6.9571236714E10 | -| test.c:604:23:604:30 | (...) | 6.9571236714E10 | -| test.c:604:23:604:35 | ... * ... | 6.9571236714E10 | -| test.c:604:24:604:25 | ip | 6.9571236714E10 | -| test.c:604:24:604:29 | ... + ... | 6.9571236714E10 | -| test.c:604:29:604:29 | 1 | 1.0 | -| test.c:604:29:604:29 | (unsigned int)... | 1.0 | -| test.c:604:34:604:35 | 17 | 1.0 | -| test.c:604:34:604:35 | (unsigned int)... | 1.0 | -| test.c:605:15:605:16 | 14 | 1.0 | -| test.c:605:15:605:16 | (unsigned int)... | 1.0 | -| test.c:605:15:605:21 | ... * ... | 6.9571236714E10 | -| test.c:605:20:605:21 | ip | 6.9571236714E10 | -| test.c:606:15:606:22 | (...) | 6.9571236714E10 | -| test.c:606:15:606:27 | ... * ... | 6.9571236714E10 | -| test.c:606:16:606:17 | ip | 6.9571236714E10 | -| test.c:606:16:606:21 | ... + ... | 6.9571236714E10 | -| test.c:606:21:606:21 | 1 | 1.0 | -| test.c:606:21:606:21 | (unsigned int)... | 1.0 | -| test.c:606:26:606:27 | 14 | 1.0 | -| test.c:606:26:606:27 | (unsigned int)... | 1.0 | -| test.c:607:10:607:23 | special_number | 1.297918419127476E201 | -| test.c:614:10:614:11 | 0 | 1.0 | -| test.c:615:7:615:8 | c1 | 1.0 | -| test.c:615:13:615:13 | x | 1.0 | -| test.c:615:13:615:23 | ... += ... | 1.0 | -| test.c:615:18:615:23 | 748596 | 1.0 | -| test.c:616:7:616:8 | c2 | 1.0 | -| test.c:616:13:616:13 | x | 2.0 | -| test.c:616:13:616:25 | ... += ... | 2.0 | -| test.c:616:18:616:25 | 84652395 | 1.0 | -| test.c:617:7:617:8 | c3 | 1.0 | -| test.c:617:13:617:13 | x | 4.0 | -| test.c:617:13:617:24 | ... += ... | 4.0 | -| test.c:617:18:617:24 | 3675895 | 1.0 | -| test.c:618:7:618:8 | c4 | 1.0 | -| test.c:618:13:618:13 | x | 8.0 | -| test.c:618:13:618:22 | ... += ... | 8.0 | -| test.c:618:18:618:22 | 98634 | 1.0 | -| test.c:619:7:619:8 | c5 | 1.0 | -| test.c:619:13:619:13 | x | 16.0 | -| test.c:619:13:619:24 | ... += ... | 16.0 | -| test.c:619:18:619:24 | 7834985 | 1.0 | -| test.c:620:7:620:8 | c1 | 2.0 | -| test.c:620:7:620:14 | ... && ... | 1.0 | -| test.c:620:13:620:14 | c2 | 2.0 | -| test.c:620:19:620:19 | x | 32.0 | -| test.c:620:19:620:32 | ... += ... | 32.0 | -| test.c:620:24:620:32 | 938457398 | 1.0 | -| test.c:621:7:621:8 | c1 | 3.0 | -| test.c:621:7:621:14 | ... && ... | 1.0 | -| test.c:621:13:621:14 | c3 | 2.0 | -| test.c:621:19:621:19 | x | 64.0 | -| test.c:621:19:621:31 | ... += ... | 64.0 | -| test.c:621:24:621:31 | 73895648 | 1.0 | -| test.c:622:7:622:8 | c1 | 4.0 | -| test.c:622:7:622:14 | ... && ... | 1.0 | -| test.c:622:13:622:14 | c4 | 2.0 | -| test.c:622:19:622:19 | x | 128.0 | -| test.c:622:19:622:31 | ... += ... | 128.0 | -| test.c:622:24:622:31 | 12345432 | 1.0 | -| test.c:623:7:623:8 | c1 | 5.0 | -| test.c:623:7:623:14 | ... && ... | 1.0 | -| test.c:623:13:623:14 | c5 | 2.0 | -| test.c:623:19:623:19 | x | 256.0 | -| test.c:623:19:623:28 | ... += ... | 256.0 | -| test.c:623:24:623:28 | 38847 | 1.0 | -| test.c:624:7:624:8 | c2 | 5.0 | -| test.c:624:7:624:14 | ... && ... | 1.0 | -| test.c:624:13:624:14 | c3 | 5.0 | -| test.c:624:19:624:19 | x | 512.0 | -| test.c:624:19:624:26 | ... += ... | 512.0 | -| test.c:624:24:624:26 | 234 | 1.0 | -| test.c:626:11:626:11 | x | 1024.0 | -| test.c:626:11:626:15 | ... + ... | 1048576.0 | -| test.c:626:11:626:19 | ... + ... | 1.073741824E9 | -| test.c:626:11:626:23 | ... + ... | 1.099511627776E12 | -| test.c:626:11:626:27 | ... + ... | 1.125899906842624E15 | -| test.c:626:11:626:31 | ... + ... | 1.152921504606847E18 | -| test.c:626:11:626:35 | ... + ... | 1.1805916207174113E21 | -| test.c:626:11:626:39 | ... + ... | 1.2089258196146292E24 | -| test.c:626:11:626:43 | ... + ... | 1.2379400392853803E27 | -| test.c:626:11:626:47 | ... + ... | 1.2676506002282294E30 | -| test.c:626:11:626:51 | ... + ... | 1.298074214633707E33 | -| test.c:626:11:626:55 | ... + ... | 1.329227995784916E36 | -| test.c:626:15:626:15 | x | 1024.0 | -| test.c:626:19:626:19 | x | 1024.0 | -| test.c:626:23:626:23 | x | 1024.0 | -| test.c:626:27:626:27 | x | 1024.0 | -| test.c:626:31:626:31 | x | 1024.0 | -| test.c:626:35:626:35 | x | 1024.0 | -| test.c:626:39:626:39 | x | 1024.0 | -| test.c:626:43:626:43 | x | 1024.0 | -| test.c:626:47:626:47 | x | 1024.0 | -| test.c:626:51:626:51 | x | 1024.0 | -| test.c:626:55:626:55 | x | 1024.0 | -| test.c:627:10:627:10 | y | 1.329227995784916E36 | -| test.c:632:20:632:20 | x | 1.0 | -| test.c:632:20:632:26 | ... < ... | 1.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 1.0 | -| test.c:632:24:632:26 | 100 | 1.0 | -| test.c:632:24:632:26 | (unsigned int)... | 1.0 | -| test.c:632:30:632:30 | x | 1.0 | -| test.c:632:34:632:36 | 100 | 1.0 | -| test.c:632:34:632:36 | (unsigned int)... | 1.0 | -| test.c:635:3:635:4 | y1 | 1.0 | -| test.c:635:9:635:11 | ++ ... | 1.0 | -| test.c:635:11:635:11 | y | 1.0 | -| test.c:636:3:636:4 | y2 | 1.0 | -| test.c:636:19:636:19 | 3 | 1.0 | -| test.c:636:19:636:19 | (unsigned int)... | 1.0 | -| test.c:645:3:645:3 | i | 1.0 | -| test.c:645:3:645:8 | ... = ... | 1.0 | -| test.c:645:7:645:8 | 10 | 1.0 | -| test.c:646:7:646:7 | i | 1.0 | -| test.c:648:3:648:3 | i | 1.0 | -| test.c:648:3:648:8 | ... = ... | 1.0 | -| test.c:648:7:648:8 | 10 | 1.0 | -| test.c:649:3:649:3 | i | 1.0 | -| test.c:649:3:649:9 | ... += ... | 1.0 | -| test.c:649:8:649:9 | 10 | 1.0 | -| test.c:650:7:650:7 | i | 1.0 | -| test.c:652:3:652:3 | i | 1.0 | -| test.c:652:3:652:8 | ... = ... | 1.0 | -| test.c:652:7:652:8 | 40 | 1.0 | -| test.c:653:3:653:3 | i | 1.0 | -| test.c:653:3:653:9 | ... -= ... | 1.0 | -| test.c:653:8:653:9 | 10 | 1.0 | -| test.c:654:7:654:7 | i | 1.0 | -| test.c:656:3:656:3 | i | 1.0 | -| test.c:656:3:656:12 | ... = ... | 1.0 | -| test.c:656:7:656:7 | j | 1.0 | -| test.c:656:7:656:12 | ... = ... | 1.0 | -| test.c:656:11:656:12 | 40 | 1.0 | -| test.c:657:7:657:7 | i | 1.0 | -| test.c:659:3:659:3 | i | 1.0 | -| test.c:659:3:659:15 | ... = ... | 1.0 | -| test.c:659:7:659:15 | (...) | 1.0 | -| test.c:659:8:659:8 | j | 1.0 | -| test.c:659:8:659:14 | ... += ... | 1.0 | -| test.c:659:13:659:14 | 10 | 1.0 | -| test.c:660:7:660:7 | i | 1.0 | -| test.c:662:3:662:3 | i | 1.0 | -| test.c:662:3:662:20 | ... = ... | 1.0 | -| test.c:662:7:662:8 | 20 | 1.0 | -| test.c:662:7:662:20 | ... + ... | 1.0 | -| test.c:662:12:662:20 | (...) | 1.0 | -| test.c:662:13:662:13 | j | 1.0 | -| test.c:662:13:662:19 | ... -= ... | 1.0 | -| test.c:662:18:662:19 | 10 | 1.0 | -| test.c:663:7:663:7 | i | 1.0 | -| test.c:668:14:668:15 | 0 | 1.0 | -| test.c:670:7:670:7 | 3 | 1.0 | -| test.c:670:7:670:7 | (unsigned int)... | 1.0 | -| test.c:670:7:670:12 | ... <= ... | 1.0 | -| test.c:670:7:670:23 | ... && ... | 1.0 | -| test.c:670:7:670:33 | ... && ... | 1.0 | -| test.c:670:7:670:44 | ... && ... | 1.0 | -| test.c:670:12:670:12 | a | 1.0 | -| test.c:670:17:670:17 | a | 1.0 | -| test.c:670:17:670:23 | ... <= ... | 1.0 | -| test.c:670:22:670:23 | 11 | 1.0 | -| test.c:670:22:670:23 | (unsigned int)... | 1.0 | -| test.c:670:28:670:28 | 5 | 1.0 | -| test.c:670:28:670:28 | (unsigned int)... | 1.0 | -| test.c:670:28:670:33 | ... <= ... | 1.0 | -| test.c:670:33:670:33 | b | 1.0 | -| test.c:670:38:670:38 | b | 1.0 | -| test.c:670:38:670:44 | ... <= ... | 1.0 | -| test.c:670:43:670:44 | 23 | 1.0 | -| test.c:670:43:670:44 | (unsigned int)... | 1.0 | -| test.c:671:13:671:13 | a | 1.0 | -| test.c:671:13:671:15 | (int)... | 1.0 | -| test.c:671:13:671:15 | ... * ... | 1.0 | -| test.c:671:15:671:15 | b | 1.0 | -| test.c:672:5:672:9 | total | 1.0 | -| test.c:672:5:672:14 | ... += ... | 1.0 | -| test.c:672:14:672:14 | r | 1.0 | -| test.c:674:7:674:7 | 3 | 1.0 | -| test.c:674:7:674:7 | (unsigned int)... | 1.0 | -| test.c:674:7:674:12 | ... <= ... | 1.0 | -| test.c:674:7:674:23 | ... && ... | 1.0 | -| test.c:674:7:674:33 | ... && ... | 1.0 | -| test.c:674:7:674:44 | ... && ... | 1.0 | -| test.c:674:12:674:12 | a | 2.0 | -| test.c:674:17:674:17 | a | 2.0 | -| test.c:674:17:674:23 | ... <= ... | 1.0 | -| test.c:674:22:674:23 | 11 | 1.0 | -| test.c:674:22:674:23 | (unsigned int)... | 1.0 | -| test.c:674:28:674:28 | 0 | 1.0 | -| test.c:674:28:674:28 | (unsigned int)... | 1.0 | -| test.c:674:28:674:33 | ... <= ... | 1.0 | -| test.c:674:33:674:33 | b | 3.0 | -| test.c:674:38:674:38 | b | 3.0 | -| test.c:674:38:674:44 | ... <= ... | 1.0 | -| test.c:674:43:674:44 | 23 | 1.0 | -| test.c:674:43:674:44 | (unsigned int)... | 1.0 | -| test.c:675:13:675:13 | a | 2.0 | -| test.c:675:13:675:15 | (int)... | 6.0 | -| test.c:675:13:675:15 | ... * ... | 6.0 | -| test.c:675:15:675:15 | b | 3.0 | -| test.c:676:5:676:9 | total | 2.0 | -| test.c:676:5:676:14 | ... += ... | 12.0 | -| test.c:676:14:676:14 | r | 6.0 | -| test.c:678:7:678:7 | 3 | 1.0 | -| test.c:678:7:678:7 | (unsigned int)... | 1.0 | -| test.c:678:7:678:12 | ... <= ... | 1.0 | -| test.c:678:7:678:23 | ... && ... | 1.0 | -| test.c:678:7:678:34 | ... && ... | 1.0 | -| test.c:678:7:678:45 | ... && ... | 1.0 | -| test.c:678:12:678:12 | a | 3.0 | -| test.c:678:17:678:17 | a | 3.0 | -| test.c:678:17:678:23 | ... <= ... | 1.0 | -| test.c:678:22:678:23 | 11 | 1.0 | -| test.c:678:22:678:23 | (unsigned int)... | 1.0 | -| test.c:678:28:678:29 | 13 | 1.0 | -| test.c:678:28:678:29 | (unsigned int)... | 1.0 | -| test.c:678:28:678:34 | ... <= ... | 1.0 | -| test.c:678:34:678:34 | b | 7.0 | -| test.c:678:39:678:39 | b | 7.0 | -| test.c:678:39:678:45 | ... <= ... | 1.0 | -| test.c:678:44:678:45 | 23 | 1.0 | -| test.c:678:44:678:45 | (unsigned int)... | 1.0 | -| test.c:679:13:679:13 | a | 3.0 | -| test.c:679:13:679:15 | (int)... | 21.0 | -| test.c:679:13:679:15 | ... * ... | 21.0 | -| test.c:679:15:679:15 | b | 7.0 | -| test.c:680:5:680:9 | total | 14.0 | -| test.c:680:5:680:14 | ... += ... | 294.0 | -| test.c:680:14:680:14 | r | 21.0 | -| test.c:683:10:683:14 | total | 308.0 | -| test.c:687:14:687:15 | 0 | 1.0 | -| test.c:689:7:689:7 | 5 | 1.0 | -| test.c:689:7:689:7 | (unsigned int)... | 1.0 | -| test.c:689:7:689:12 | ... <= ... | 1.0 | -| test.c:689:7:689:23 | ... && ... | 1.0 | -| test.c:689:12:689:12 | b | 1.0 | -| test.c:689:17:689:17 | b | 1.0 | -| test.c:689:17:689:23 | ... <= ... | 1.0 | -| test.c:689:22:689:23 | 23 | 1.0 | -| test.c:689:22:689:23 | (unsigned int)... | 1.0 | -| test.c:690:13:690:14 | 11 | 1.0 | -| test.c:690:13:690:14 | (unsigned int)... | 1.0 | -| test.c:690:13:690:16 | (int)... | 1.0 | -| test.c:690:13:690:16 | ... * ... | 1.0 | -| test.c:690:16:690:16 | b | 1.0 | -| test.c:691:5:691:9 | total | 1.0 | -| test.c:691:5:691:14 | ... += ... | 1.0 | -| test.c:691:14:691:14 | r | 1.0 | -| test.c:693:7:693:7 | 0 | 1.0 | -| test.c:693:7:693:7 | (unsigned int)... | 1.0 | -| test.c:693:7:693:12 | ... <= ... | 1.0 | -| test.c:693:7:693:23 | ... && ... | 1.0 | -| test.c:693:12:693:12 | b | 2.0 | -| test.c:693:17:693:17 | b | 2.0 | -| test.c:693:17:693:23 | ... <= ... | 1.0 | -| test.c:693:22:693:23 | 23 | 1.0 | -| test.c:693:22:693:23 | (unsigned int)... | 1.0 | -| test.c:694:13:694:14 | 11 | 1.0 | -| test.c:694:13:694:14 | (unsigned int)... | 1.0 | -| test.c:694:13:694:16 | (int)... | 2.0 | -| test.c:694:13:694:16 | ... * ... | 2.0 | -| test.c:694:16:694:16 | b | 2.0 | -| test.c:695:5:695:9 | total | 2.0 | -| test.c:695:5:695:14 | ... += ... | 4.0 | -| test.c:695:14:695:14 | r | 2.0 | -| test.c:697:7:697:8 | 13 | 1.0 | -| test.c:697:7:697:8 | (unsigned int)... | 1.0 | -| test.c:697:7:697:13 | ... <= ... | 1.0 | -| test.c:697:7:697:24 | ... && ... | 1.0 | -| test.c:697:13:697:13 | b | 3.0 | -| test.c:697:18:697:18 | b | 3.0 | -| test.c:697:18:697:24 | ... <= ... | 1.0 | -| test.c:697:23:697:24 | 23 | 1.0 | -| test.c:697:23:697:24 | (unsigned int)... | 1.0 | -| test.c:698:13:698:14 | 11 | 1.0 | -| test.c:698:13:698:14 | (unsigned int)... | 1.0 | -| test.c:698:13:698:16 | (int)... | 3.0 | -| test.c:698:13:698:16 | ... * ... | 3.0 | -| test.c:698:16:698:16 | b | 3.0 | -| test.c:699:5:699:9 | total | 6.0 | -| test.c:699:5:699:14 | ... += ... | 18.0 | -| test.c:699:14:699:14 | r | 3.0 | -| test.c:702:10:702:14 | total | 24.0 | -| test.c:707:3:707:3 | x | 1.0 | -| test.c:707:3:707:22 | ... = ... | 1.0 | -| test.c:707:7:707:7 | y | 1.0 | -| test.c:707:7:707:22 | ... = ... | 1.0 | -| test.c:707:11:707:22 | 1000000003 | 1.0 | -| test.c:708:3:708:4 | xy | 1.0 | -| test.c:708:3:708:12 | ... = ... | 1.0 | -| test.c:708:8:708:8 | x | 1.0 | -| test.c:708:8:708:12 | ... * ... | 1.0 | -| test.c:708:12:708:12 | y | 1.0 | -| test.c:709:10:709:11 | xy | 1.0 | -| test.c:714:3:714:3 | x | 1.0 | -| test.c:714:3:714:14 | ... = ... | 1.0 | -| test.c:714:7:714:14 | 274177 | 1.0 | -| test.c:715:3:715:3 | y | 1.0 | -| test.c:715:3:715:22 | ... = ... | 1.0 | -| test.c:715:7:715:22 | 67280421310721 | 1.0 | -| test.c:716:3:716:4 | xy | 1.0 | -| test.c:716:3:716:12 | ... = ... | 1.0 | -| test.c:716:8:716:8 | x | 1.0 | -| test.c:716:8:716:12 | ... * ... | 1.0 | -| test.c:716:12:716:12 | y | 1.0 | -| test.c:717:10:717:11 | xy | 1.0 | -| test.c:721:7:721:8 | ui | 1.0 | -| test.c:721:7:721:14 | ... >= ... | 1.0 | -| test.c:721:13:721:14 | 10 | 1.0 | -| test.c:721:13:721:14 | (unsigned int)... | 1.0 | -| test.c:722:28:722:44 | (unsigned long)... | 1.0 | -| test.c:722:28:722:49 | ... * ... | 1.0 | -| test.c:722:43:722:44 | ui | 1.0 | -| test.c:722:48:722:49 | (unsigned long)... | 1.0 | -| test.c:722:48:722:49 | ui | 1.0 | -| test.c:723:12:723:17 | result | 1.0 | -| test.c:725:7:725:8 | ul | 1.0 | -| test.c:725:7:725:14 | ... >= ... | 1.0 | -| test.c:725:13:725:14 | 10 | 1.0 | -| test.c:725:13:725:14 | (unsigned long)... | 1.0 | -| test.c:726:28:726:29 | ul | 1.0 | -| test.c:726:28:726:34 | ... * ... | 1.0 | -| test.c:726:33:726:34 | ul | 1.0 | -| test.c:727:12:727:17 | result | 1.0 | -| test.c:729:10:729:10 | 0 | 1.0 | -| test.c:729:10:729:10 | (unsigned long)... | 1.0 | -| test.c:733:7:733:8 | ui | 1.0 | -| test.c:733:7:733:14 | ... <= ... | 1.0 | -| test.c:733:7:733:25 | ... && ... | 1.0 | -| test.c:733:13:733:14 | 10 | 1.0 | -| test.c:733:13:733:14 | (unsigned int)... | 1.0 | -| test.c:733:19:733:20 | ui | 1.0 | -| test.c:733:19:733:25 | ... >= ... | 1.0 | -| test.c:733:25:733:25 | 2 | 1.0 | -| test.c:733:25:733:25 | (unsigned int)... | 1.0 | -| test.c:734:5:734:6 | ui | 1.0 | -| test.c:734:5:734:16 | ... *= ... | 1.0 | -| test.c:734:11:734:12 | ui | 1.0 | -| test.c:734:11:734:16 | ... + ... | 1.0 | -| test.c:734:16:734:16 | 0 | 1.0 | -| test.c:734:16:734:16 | (unsigned int)... | 1.0 | -| test.c:735:12:735:13 | (unsigned long)... | 1.0 | -| test.c:735:12:735:13 | ui | 1.0 | -| test.c:738:26:738:27 | 10 | 1.0 | -| test.c:738:26:738:27 | (unsigned int)... | 1.0 | -| test.c:739:3:739:9 | uiconst | 1.0 | -| test.c:739:3:739:14 | ... *= ... | 1.0 | -| test.c:739:14:739:14 | 4 | 1.0 | -| test.c:739:14:739:14 | (unsigned int)... | 1.0 | -| test.c:741:27:741:28 | 10 | 1.0 | -| test.c:741:27:741:28 | (unsigned long)... | 1.0 | -| test.c:742:3:742:9 | ulconst | 1.0 | -| test.c:742:3:742:14 | ... *= ... | 1.0 | -| test.c:742:14:742:14 | 4 | 1.0 | -| test.c:742:14:742:14 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | uiconst | 1.0 | -| test.c:743:10:743:26 | ... + ... | 1.0 | -| test.c:743:20:743:26 | ulconst | 1.0 | -| test.c:747:7:747:7 | i | 1.0 | -| test.c:747:7:747:13 | ... >= ... | 1.0 | -| test.c:747:7:747:23 | ... && ... | 1.0 | -| test.c:747:12:747:13 | - ... | 1.0 | -| test.c:747:13:747:13 | 1 | 1.0 | -| test.c:747:18:747:18 | i | 1.0 | -| test.c:747:18:747:23 | ... <= ... | 1.0 | -| test.c:747:23:747:23 | 2 | 1.0 | -| test.c:748:5:748:5 | i | 1.0 | -| test.c:748:5:748:13 | ... = ... | 1.0 | -| test.c:748:9:748:9 | 5 | 1.0 | -| test.c:748:9:748:13 | ... * ... | 1.0 | -| test.c:748:13:748:13 | i | 1.0 | -| test.c:749:9:749:9 | i | 1.0 | -| test.c:751:5:751:5 | i | 1.0 | -| test.c:751:5:751:14 | ... = ... | 1.0 | -| test.c:751:9:751:9 | i | 1.0 | -| test.c:751:9:751:14 | ... * ... | 1.0 | -| test.c:751:13:751:14 | - ... | 1.0 | -| test.c:751:14:751:14 | 3 | 1.0 | -| test.c:752:9:752:9 | i | 1.0 | -| test.c:754:5:754:5 | i | 1.0 | -| test.c:754:5:754:10 | ... *= ... | 1.0 | -| test.c:754:10:754:10 | 7 | 1.0 | -| test.c:755:9:755:9 | i | 1.0 | -| test.c:757:5:757:5 | i | 1.0 | -| test.c:757:5:757:12 | ... *= ... | 1.0 | -| test.c:757:10:757:12 | - ... | 1.0 | -| test.c:757:11:757:12 | 11 | 1.0 | -| test.c:758:9:758:9 | i | 1.0 | -| test.c:760:7:760:7 | i | 2.0 | -| test.c:760:7:760:13 | ... == ... | 1.0 | -| test.c:760:12:760:13 | - ... | 1.0 | -| test.c:760:13:760:13 | 1 | 1.0 | -| test.c:761:5:761:5 | i | 1.0 | -| test.c:761:5:761:27 | ... = ... | 2.0 | -| test.c:761:9:761:9 | i | 2.0 | -| test.c:761:9:761:27 | ... * ... | 2.0 | -| test.c:761:13:761:27 | (int)... | 1.0 | -| test.c:761:18:761:27 | 4294967295 | 1.0 | -| test.c:762:9:762:9 | i | 2.0 | -| test.c:764:3:764:3 | i | 1.0 | -| test.c:764:3:764:12 | ... = ... | 4.0 | -| test.c:764:7:764:7 | i | 4.0 | -| test.c:764:7:764:12 | ... * ... | 4.0 | -| test.c:764:11:764:12 | - ... | 1.0 | -| test.c:764:12:764:12 | 1 | 1.0 | -| test.c:765:10:765:10 | i | 4.0 | -| test.c:767:20:767:20 | 1 | 1.0 | -| test.c:767:20:767:20 | (signed char)... | 1.0 | -| test.c:768:3:768:3 | i | 1.0 | -| test.c:768:3:768:17 | ... = ... | 1.0 | -| test.c:768:7:768:17 | (...) | 1.0 | -| test.c:768:7:768:17 | (int)... | 1.0 | -| test.c:768:8:768:11 | * ... | 1.0 | -| test.c:768:8:768:16 | ... *= ... | 1.0 | -| test.c:768:10:768:11 | sc | 1.0 | -| test.c:768:16:768:16 | 2 | 1.0 | -| test.c:770:7:770:7 | i | 1.0 | -| test.c:772:10:772:10 | 0 | 1.0 | -| test.c:777:7:777:7 | (int)... | 1.0 | -| test.c:777:7:777:7 | n | 1.0 | -| test.c:779:7:779:7 | n | 1.0 | -| test.c:779:7:779:11 | ... > ... | 1.0 | -| test.c:779:11:779:11 | 0 | 1.0 | -| test.c:779:11:779:11 | (unsigned int)... | 1.0 | -| test.c:780:9:780:9 | (int)... | 1.0 | -| test.c:780:9:780:9 | n | 1.0 | -| test.c:783:7:783:7 | n | 2.0 | -| test.c:783:7:783:12 | ... != ... | 1.0 | -| test.c:783:12:783:12 | 0 | 1.0 | -| test.c:783:12:783:12 | (unsigned int)... | 1.0 | -| test.c:784:9:784:9 | (int)... | 2.0 | -| test.c:784:9:784:9 | n | 2.0 | -| test.c:786:9:786:9 | (int)... | 2.0 | -| test.c:786:9:786:9 | n | 2.0 | -| test.c:789:7:789:8 | ! ... | 1.0 | -| test.c:789:8:789:8 | n | 4.0 | -| test.c:790:9:790:9 | (int)... | 4.0 | -| test.c:790:9:790:9 | n | 4.0 | -| test.c:792:9:792:9 | (int)... | 4.0 | -| test.c:792:9:792:9 | n | 4.0 | -| test.c:795:10:795:10 | n | 13.0 | -| test.c:795:10:795:15 | ... != ... | 1.0 | -| test.c:795:15:795:15 | 0 | 1.0 | -| test.c:795:15:795:15 | (unsigned int)... | 1.0 | -| test.c:796:5:796:5 | n | 13.0 | -| test.c:796:5:796:7 | ... -- | 13.0 | -| test.c:799:7:799:7 | (int)... | 13.0 | -| test.c:799:7:799:7 | n | 13.0 | -| test.c:803:7:803:7 | (int)... | 1.0 | -| test.c:803:7:803:7 | n | 1.0 | -| test.c:803:7:803:11 | ... < ... | 1.0 | -| test.c:803:11:803:11 | 0 | 1.0 | -| test.c:806:7:806:7 | (int)... | 1.0 | -| test.c:806:7:806:7 | n | 1.0 | -| test.c:806:7:806:12 | ... == ... | 1.0 | -| test.c:806:12:806:12 | 0 | 1.0 | -| test.c:807:9:807:9 | (int)... | 1.0 | -| test.c:807:9:807:9 | n | 1.0 | -| test.c:809:9:809:9 | (int)... | 1.0 | -| test.c:809:9:809:9 | n | 1.0 | -| test.c:812:7:812:7 | n | 2.0 | -| test.c:813:9:813:9 | (int)... | 2.0 | -| test.c:813:9:813:9 | n | 2.0 | -| test.c:815:9:815:9 | (int)... | 2.0 | -| test.c:815:9:815:9 | n | 2.0 | -| test.c:818:10:818:10 | (int)... | 13.0 | -| test.c:818:10:818:10 | n | 12.0 | -| test.c:818:10:818:15 | ... != ... | 1.0 | -| test.c:818:15:818:15 | 0 | 1.0 | -| test.c:819:5:819:5 | n | 12.0 | -| test.c:819:5:819:7 | ... -- | 12.0 | -| test.c:822:7:822:7 | (int)... | 12.0 | -| test.c:822:7:822:7 | n | 12.0 | -| test.c:826:7:826:7 | (int)... | 1.0 | -| test.c:826:7:826:7 | n | 1.0 | -| test.c:826:7:826:12 | ... != ... | 1.0 | -| test.c:826:12:826:12 | 0 | 1.0 | -| test.c:827:9:827:9 | (int)... | 1.0 | -| test.c:827:9:827:9 | n | 1.0 | -| test.c:827:9:827:14 | ... >= ... | 1.0 | -| test.c:827:14:827:14 | 0 | 1.0 | -| test.c:828:11:828:11 | (int)... | 1.0 | -| test.c:828:11:828:11 | n | 1.0 | -| test.c:832:7:832:7 | (int)... | 2.0 | -| test.c:832:7:832:7 | n | 2.0 | -| test.c:832:7:832:12 | ... >= ... | 1.0 | -| test.c:832:12:832:12 | 5 | 1.0 | -| test.c:833:9:833:9 | 2 | 1.0 | -| test.c:833:9:833:13 | ... * ... | 2.0 | -| test.c:833:9:833:18 | ... - ... | 2.0 | -| test.c:833:9:833:23 | ... == ... | 1.0 | -| test.c:833:13:833:13 | (int)... | 2.0 | -| test.c:833:13:833:13 | n | 2.0 | -| test.c:833:17:833:18 | 10 | 1.0 | -| test.c:833:23:833:23 | 0 | 1.0 | -| test.c:836:9:836:9 | (int)... | 2.0 | -| test.c:836:9:836:9 | n | 2.0 | -| test.c:839:7:839:7 | (int)... | 3.0 | -| test.c:839:7:839:7 | n | 3.0 | -| test.c:839:7:839:17 | ... != ... | 1.0 | -| test.c:839:7:839:32 | ... && ... | 1.0 | -| test.c:839:12:839:17 | - ... | 1.0 | -| test.c:839:13:839:17 | 32768 | 1.0 | -| test.c:839:22:839:22 | (int)... | 3.0 | -| test.c:839:22:839:22 | n | 3.0 | -| test.c:839:22:839:32 | ... != ... | 1.0 | -| test.c:839:27:839:32 | - ... | 1.0 | -| test.c:839:28:839:32 | 32767 | 1.0 | -| test.c:840:9:840:9 | (int)... | 3.0 | -| test.c:840:9:840:9 | n | 3.0 | -| test.c:843:7:843:7 | (int)... | 4.0 | -| test.c:843:7:843:7 | n | 4.0 | -| test.c:843:7:843:12 | ... >= ... | 1.0 | -| test.c:843:12:843:12 | 0 | 1.0 | -| test.c:844:5:844:5 | n | 4.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 16.0 | -| test.c:844:10:844:10 | (int)... | 4.0 | -| test.c:844:10:844:10 | n | 4.0 | -| test.c:844:14:844:14 | (int)... | 4.0 | -| test.c:844:14:844:14 | n | 4.0 | -| test.c:845:5:845:6 | ! ... | 1.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 64.0 | -| test.c:845:6:845:6 | n | 8.0 | -| test.c:845:10:845:10 | (int)... | 8.0 | -| test.c:845:10:845:10 | n | 8.0 | -| test.c:845:14:845:14 | (int)... | 8.0 | -| test.c:845:14:845:14 | n | 8.0 | -| test.c:856:7:856:8 | (unsigned long)... | 1.0 | -| test.c:856:7:856:8 | ss | 1.0 | -| test.c:856:7:856:22 | ... < ... | 1.0 | -| test.c:856:12:856:22 | sizeof(int) | 1.0 | -| test.c:857:9:857:10 | (int)... | 1.0 | -| test.c:857:9:857:10 | ss | 1.0 | -| test.c:860:7:860:8 | (int)... | 2.0 | -| test.c:860:7:860:8 | ss | 2.0 | -| test.c:860:7:860:17 | ... < ... | 1.0 | -| test.c:860:12:860:17 | 32769 | 1.0 | -| test.c:861:9:861:10 | (int)... | 2.0 | -| test.c:861:9:861:10 | ss | 2.0 | -| test.c:864:7:864:15 | (int)... | 1.0 | -| test.c:864:7:864:15 | (short)... | 1.0 | -| test.c:864:7:864:20 | ... >= ... | 1.0 | -| test.c:864:14:864:15 | us | 1.0 | -| test.c:864:20:864:20 | 0 | 1.0 | -| test.c:865:9:865:10 | (int)... | 1.0 | -| test.c:865:9:865:10 | us | 1.0 | -| test.c:868:7:868:15 | (int)... | 2.0 | -| test.c:868:7:868:15 | (short)... | 2.0 | -| test.c:868:7:868:21 | ... >= ... | 1.0 | -| test.c:868:14:868:15 | us | 2.0 | -| test.c:868:20:868:21 | - ... | 1.0 | -| test.c:868:21:868:21 | 1 | 1.0 | -| test.c:869:9:869:10 | (int)... | 2.0 | -| test.c:869:9:869:10 | us | 2.0 | -| test.c:872:7:872:8 | (unsigned long)... | 3.0 | -| test.c:872:7:872:8 | ss | 3.0 | -| test.c:872:7:872:23 | ... >= ... | 1.0 | -| test.c:872:13:872:23 | sizeof(int) | 1.0 | -| test.c:873:9:873:10 | (int)... | 3.0 | -| test.c:873:9:873:10 | ss | 3.0 | -| test.c:876:7:876:8 | (int)... | 4.0 | -| test.c:876:7:876:8 | ss | 4.0 | -| test.c:876:7:876:12 | (unsigned long)... | 4.0 | -| test.c:876:7:876:12 | ... + ... | 4.0 | -| test.c:876:7:876:26 | ... < ... | 1.0 | -| test.c:876:12:876:12 | 1 | 1.0 | -| test.c:876:16:876:26 | sizeof(int) | 1.0 | -| test.c:877:9:877:10 | (int)... | 4.0 | -| test.c:877:9:877:10 | ss | 4.0 | -| test.c:883:8:883:8 | s | 1.0 | -| test.c:883:8:883:12 | ... = ... | 1.0 | -| test.c:883:12:883:12 | 0 | 1.0 | -| test.c:883:15:883:15 | s | 13.0 | -| test.c:883:15:883:20 | ... < ... | 1.0 | -| test.c:883:19:883:20 | 10 | 1.0 | -| test.c:883:23:883:23 | s | 13.0 | -| test.c:883:23:883:25 | ... ++ | 13.0 | -| test.c:884:18:884:18 | s | 13.0 | -| test.c:884:18:884:22 | ... + ... | 13.0 | -| test.c:884:22:884:22 | s | 13.0 | -| test.c:885:9:885:14 | result | 13.0 | -| test.c:890:10:890:11 | 0 | 1.0 | -| test.c:891:7:891:7 | i | 1.0 | -| test.c:891:7:891:11 | ... < ... | 1.0 | -| test.c:891:11:891:11 | 0 | 1.0 | -| test.c:892:9:892:9 | i | 1.0 | -| test.c:895:20:895:20 | 0 | 1.0 | -| test.c:895:20:895:20 | (unsigned int)... | 1.0 | -| test.c:896:7:896:7 | u | 1.0 | -| test.c:896:7:896:11 | ... < ... | 1.0 | -| test.c:896:11:896:11 | 0 | 1.0 | -| test.c:896:11:896:11 | (unsigned int)... | 1.0 | -| test.c:897:9:897:9 | (int)... | 1.0 | -| test.c:897:9:897:9 | u | 1.0 | -| test.c:902:12:902:12 | s | 1.0 | -| test.c:902:12:902:16 | ... % ... | 1.0 | -| test.c:902:16:902:16 | 5 | 1.0 | -| test.c:903:7:903:8 | s2 | 1.0 | -| test.c:908:7:908:7 | x | 1.0 | -| test.c:909:9:909:9 | y | 1.0 | -| test.c:909:9:909:14 | ... != ... | 1.0 | -| test.c:909:14:909:14 | 0 | 1.0 | -| test.c:910:12:910:12 | 0 | 1.0 | -| test.c:913:7:913:7 | y | 2.0 | -| test.c:922:7:922:7 | x | 1.0 | -| test.c:922:7:922:13 | ... >= ... | 1.0 | -| test.c:922:12:922:13 | 10 | 1.0 | -| test.c:927:7:927:7 | x | 13.0 | -| test.c:932:16:932:26 | 2147483647 | 1.0 | -| test.c:933:16:933:19 | 256 | 1.0 | -| test.c:934:7:934:13 | (...) | 1.0 | -| test.c:934:7:934:20 | ... <= ... | 1.0 | -| test.c:934:8:934:8 | x | 1.0 | -| test.c:934:8:934:12 | ... + ... | 1.0 | -| test.c:934:12:934:12 | y | 1.0 | -| test.c:934:18:934:20 | 512 | 1.0 | -| test.c:935:9:935:9 | x | 1.0 | -| test.c:936:9:936:9 | y | 1.0 | -| test.cpp:9:11:9:12 | - ... | 1.0 | -| test.cpp:9:12:9:12 | 1 | 1.0 | -| test.cpp:10:7:10:7 | (bool)... | 1.0 | -| test.cpp:10:7:10:7 | b | 1.0 | -| test.cpp:11:5:11:5 | x | 1.0 | -| test.cpp:11:5:11:14 | ... = ... | 1.0 | -| test.cpp:11:12:11:12 | call to operator[] | 1.0 | -| test.cpp:11:12:11:14 | (reference dereference) | 1.0 | -| test.cpp:11:13:11:13 | 3 | 1.0 | -| test.cpp:13:10:13:10 | x | 2.0 | -| test.cpp:18:12:18:31 | (int)... | 1.0 | -| test.cpp:18:12:18:31 | static_cast... | 1.0 | -| test.cpp:18:30:18:30 | x | 1.0 | -| test.cpp:19:10:19:11 | x0 | 1.0 | -| test.cpp:27:7:27:7 | y | 1.0 | -| test.cpp:27:7:27:12 | ... == ... | 1.0 | -| test.cpp:27:12:27:12 | 0 | 1.0 | -| test.cpp:28:5:28:5 | x | 1.0 | -| test.cpp:28:5:28:9 | ... = ... | 1.0 | -| test.cpp:28:9:28:9 | 0 | 1.0 | -| test.cpp:30:7:30:7 | y | 2.0 | -| test.cpp:30:7:30:13 | ... == ... | 1.0 | -| test.cpp:30:12:30:13 | - ... | 1.0 | -| test.cpp:30:13:30:13 | 1 | 1.0 | -| test.cpp:31:5:31:5 | x | 1.0 | -| test.cpp:31:5:31:10 | ... = ... | 1.0 | -| test.cpp:31:9:31:10 | - ... | 1.0 | -| test.cpp:31:10:31:10 | 1 | 1.0 | -| test.cpp:33:7:33:7 | y | 4.0 | -| test.cpp:33:7:33:12 | ... == ... | 1.0 | -| test.cpp:33:12:33:12 | 1 | 1.0 | -| test.cpp:34:5:34:5 | x | 1.0 | -| test.cpp:34:5:34:9 | ... = ... | 1.0 | -| test.cpp:34:9:34:9 | 1 | 1.0 | -| test.cpp:36:7:36:7 | y | 8.0 | -| test.cpp:36:7:36:15 | ... == ... | 1.0 | -| test.cpp:36:12:36:15 | - ... | 1.0 | -| test.cpp:36:13:36:15 | 128 | 1.0 | -| test.cpp:37:5:37:5 | x | 1.0 | -| test.cpp:37:5:37:12 | ... = ... | 1.0 | -| test.cpp:37:9:37:12 | - ... | 1.0 | -| test.cpp:37:10:37:12 | 128 | 1.0 | -| test.cpp:39:7:39:7 | y | 16.0 | -| test.cpp:39:7:39:14 | ... == ... | 1.0 | -| test.cpp:39:12:39:14 | 128 | 1.0 | -| test.cpp:40:5:40:5 | x | 1.0 | -| test.cpp:40:5:40:11 | ... = ... | 1.0 | -| test.cpp:40:9:40:11 | 128 | 1.0 | -| test.cpp:42:7:42:7 | y | 32.0 | -| test.cpp:42:7:42:16 | ... == ... | 1.0 | -| test.cpp:42:12:42:16 | - ... | 1.0 | -| test.cpp:42:13:42:16 | 1024 | 1.0 | -| test.cpp:43:5:43:5 | x | 1.0 | -| test.cpp:43:5:43:13 | ... = ... | 1.0 | -| test.cpp:43:9:43:13 | - ... | 1.0 | -| test.cpp:43:10:43:13 | 1024 | 1.0 | -| test.cpp:45:7:45:7 | y | 64.0 | -| test.cpp:45:7:45:15 | ... == ... | 1.0 | -| test.cpp:45:12:45:15 | 1024 | 1.0 | -| test.cpp:46:5:46:5 | x | 1.0 | -| test.cpp:46:5:46:12 | ... = ... | 1.0 | -| test.cpp:46:9:46:12 | 1024 | 1.0 | -| test.cpp:49:10:49:11 | 0 | 1.0 | -| test.cpp:51:7:51:7 | x | 8.0 | -| test.cpp:51:7:51:12 | ... == ... | 1.0 | -| test.cpp:51:12:51:12 | 0 | 1.0 | -| test.cpp:52:15:52:21 | (bool)... | 1.0 | -| test.cpp:52:21:52:21 | x | 8.0 | -| test.cpp:53:5:53:5 | t | 1.0 | -| test.cpp:53:5:53:16 | ... += ... | 8.0 | -| test.cpp:53:10:53:16 | (int)... | 8.0 | -| test.cpp:53:15:53:16 | xb | 8.0 | -| test.cpp:56:7:56:7 | x | 16.0 | -| test.cpp:56:7:56:11 | ... > ... | 1.0 | -| test.cpp:56:11:56:11 | 0 | 1.0 | -| test.cpp:57:15:57:21 | (bool)... | 1.0 | -| test.cpp:57:21:57:21 | x | 16.0 | -| test.cpp:58:5:58:5 | t | 9.0 | -| test.cpp:58:5:58:16 | ... += ... | 144.0 | -| test.cpp:58:10:58:16 | (int)... | 16.0 | -| test.cpp:58:15:58:16 | xb | 16.0 | -| test.cpp:61:7:61:7 | x | 17.0 | -| test.cpp:61:7:61:11 | ... < ... | 1.0 | -| test.cpp:61:11:61:11 | 0 | 1.0 | -| test.cpp:62:15:62:21 | (bool)... | 1.0 | -| test.cpp:62:21:62:21 | x | 17.0 | -| test.cpp:63:5:63:5 | t | 153.0 | -| test.cpp:63:5:63:16 | ... += ... | 2601.0 | -| test.cpp:63:10:63:16 | (int)... | 17.0 | -| test.cpp:63:15:63:16 | xb | 17.0 | -| test.cpp:66:13:66:19 | (bool)... | 1.0 | -| test.cpp:66:19:66:19 | x | 18.0 | -| test.cpp:67:3:67:3 | t | 2754.0 | -| test.cpp:67:3:67:14 | ... += ... | 49572.0 | -| test.cpp:67:8:67:14 | (int)... | 18.0 | -| test.cpp:67:13:67:14 | xb | 18.0 | -| test.cpp:69:10:69:10 | b | 1.0 | -| test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | -| test.cpp:69:15:69:21 | (bool)... | 1.0 | -| test.cpp:69:21:69:21 | t | 49572.0 | -| test.cpp:74:30:74:30 | (int)... | 1.0 | -| test.cpp:74:30:74:30 | c | 1.0 | -| test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | -| test.cpp:74:30:74:34 | ... + ... | 1.0 | -| test.cpp:74:34:74:34 | (int)... | 1.0 | -| test.cpp:74:34:74:34 | c | 1.0 | -| test.cpp:75:7:75:30 | (int)... | 1.0 | -| test.cpp:75:7:75:30 | (unsigned char)... | 1.0 | -| test.cpp:75:7:75:35 | ... == ... | 1.0 | -| test.cpp:75:22:75:30 | c_times_2 | 1.0 | -| test.cpp:75:35:75:35 | 0 | 1.0 | -| test.cpp:77:5:77:13 | c_times_2 | 1.0 | -| test.cpp:79:3:79:11 | c_times_2 | 1.0 | -| test.cpp:83:16:83:22 | (reference dereference) | 1.0 | -| test.cpp:83:16:83:22 | (reference to) | 1.0 | -| test.cpp:83:16:83:22 | aliased | 1.0 | -| test.cpp:85:7:85:7 | (reference dereference) | 1.0 | -| test.cpp:85:7:85:7 | i | 1.0 | -| test.cpp:85:7:85:12 | ... >= ... | 1.0 | -| test.cpp:85:12:85:12 | 2 | 1.0 | -| test.cpp:86:12:86:12 | (reference dereference) | 1.0 | -| test.cpp:86:12:86:12 | i | 1.0 | -| test.cpp:88:7:88:8 | (reference dereference) | 1.0 | -| test.cpp:88:7:88:8 | ci | 1.0 | -| test.cpp:88:7:88:13 | ... >= ... | 1.0 | -| test.cpp:88:13:88:13 | 2 | 1.0 | -| test.cpp:89:12:89:13 | (reference dereference) | 1.0 | -| test.cpp:89:12:89:13 | ci | 1.0 | -| test.cpp:91:7:91:13 | (reference dereference) | 1.0 | -| test.cpp:91:7:91:13 | aliased | 1.0 | -| test.cpp:91:7:91:18 | ... >= ... | 1.0 | -| test.cpp:91:18:91:18 | 2 | 1.0 | -| test.cpp:92:12:92:18 | (reference dereference) | 1.0 | -| test.cpp:92:12:92:18 | aliased | 1.0 | -| test.cpp:94:7:94:11 | (reference dereference) | 1.0 | -| test.cpp:94:7:94:11 | alias | 1.0 | -| test.cpp:94:7:94:16 | ... >= ... | 1.0 | -| test.cpp:94:16:94:16 | 2 | 1.0 | -| test.cpp:95:12:95:16 | (reference dereference) | 1.0 | -| test.cpp:95:12:95:16 | alias | 1.0 | -| test.cpp:97:10:97:10 | (reference dereference) | 13.0 | -| test.cpp:97:10:97:19 | ... <= ... | 1.0 | -| test.cpp:97:15:97:19 | 12345 | 1.0 | -| test.cpp:97:22:97:22 | (reference dereference) | 13.0 | -| test.cpp:97:22:97:24 | ... ++ | 13.0 | -| test.cpp:98:5:98:5 | (reference dereference) | 1.0 | -| test.cpp:98:5:98:5 | i | 1.0 | -| test.cpp:98:5:98:9 | ... = ... | 13.0 | -| test.cpp:98:9:98:9 | (reference dereference) | 13.0 | -| test.cpp:99:5:99:5 | (reference dereference) | 13.0 | -| test.cpp:102:10:102:10 | 0 | 1.0 | -| test.cpp:106:7:106:7 | (int)... | 1.0 | -| test.cpp:106:7:106:7 | n | 1.0 | -| test.cpp:106:7:106:11 | ... < ... | 1.0 | -| test.cpp:106:11:106:11 | 0 | 1.0 | -| test.cpp:109:7:109:7 | (bool)... | 1.0 | -| test.cpp:109:7:109:7 | n | 1.0 | -| test.cpp:110:5:110:5 | n | 1.0 | -| test.cpp:112:5:112:5 | n | 1.0 | -| test.cpp:115:7:115:8 | ! ... | 1.0 | -| test.cpp:115:8:115:8 | (bool)... | 1.0 | -| test.cpp:115:8:115:8 | n | 2.0 | -| test.cpp:116:5:116:5 | n | 2.0 | -| test.cpp:118:5:118:5 | n | 2.0 | -| test.cpp:121:3:121:3 | (bool)... | 1.0 | -| test.cpp:121:3:121:3 | n | 4.0 | -| test.cpp:121:3:121:12 | ... ? ... : ... | 16.0 | -| test.cpp:121:8:121:8 | n | 4.0 | -| test.cpp:121:12:121:12 | n | 4.0 | -| test.cpp:122:3:122:4 | ! ... | 1.0 | -| test.cpp:122:3:122:12 | ... ? ... : ... | 64.0 | -| test.cpp:122:4:122:4 | (bool)... | 1.0 | -| test.cpp:122:4:122:4 | n | 8.0 | -| test.cpp:122:8:122:8 | n | 8.0 | -| test.cpp:122:12:122:12 | n | 8.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql deleted file mode 100644 index ec82c44ef82..00000000000 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis - -from Expr e -select e, SimpleRangeAnalysisInternal::estimateNrOfBounds(e) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 1d0415e7a78..0cd2437e073 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,77 +72,8 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:418:20:418:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:630:5:630:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:631:5:631:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 4e7d05d9c08..b34beda10d4 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,77 +72,8 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:432:5:434:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:435:6:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:436:8:454:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:10:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:441:13:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:448:12:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:449:12:449:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:451:15:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:455:6:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:8:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:29:458:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:460:11:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:463:6:463:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:10:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:31:467:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:469:13:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:472:9:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:476:10:495:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:479:12:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:480:12:480:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:489:14:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:490:14:490:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:492:17:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:499:14:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:500:14:500:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:509:12:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:510:12:510:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:512:15:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:515:11:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:518:9:520:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:522:14:541:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:525:16:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:526:16:526:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:528:19:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:535:18:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:536:18:536:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:538:21:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:542:12:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:545:14:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:546:14:546:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:548:17:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:551:12:551:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:555:16:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:556:16:556:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:558:19:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:561:15:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:565:12:584:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:568:14:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:569:14:569:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:571:17:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:578:16:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:579:16:579:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:588:16:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:589:16:589:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:591:19:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:598:14:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:601:17:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:632:20:632:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:418:20:418:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:630:5:630:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:631:5:631:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index c161dcdbb05..26e6a49e6f6 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,220 +413,6 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } -int repeated_if_statements(unsigned int rhs) { - // Test how many bounds we estimate for `if` statements without `else` - // branches where the following node is both a normal phi node and a guard phi - // node. - if (rhs < 12) { rhs << 1; } - if (rhs < 13) { rhs << 1; } - if (rhs < 14) { rhs << 1; } - if (rhs < 15) { rhs << 1; } - if (rhs < 16) { rhs << 1; } - return rhs; // rhs has 6 bounds -} - -unsigned int conditional_nested_guards(unsigned int ip) { - // This tests a combinatorial explosion that can happen from a large number of - // nested linear guards. - unsigned int special_number = - (14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 - ? 14 * ip - : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17) > - (2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) > - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) - : 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 - ? 14 * ip - : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17 - : 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) > - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) - : 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14; - return special_number; -} - -int many_conditional_assignments(int c1, int c2, int c3, int c4, int c5) { - // This tests a combinatorial explosion that can happen from many conditional - // assignments, since each conditional assignment doubles the number of - // bounds. - int x = 0; - if (c1) { x += 748596; } - if (c2) { x += 84652395; } - if (c3) { x += 3675895; } - if (c4) { x += 98634; } - if (c5) { x += 7834985; } - if (c1 && c2) { x += 938457398; } - if (c1 && c3) { x += 73895648; } - if (c1 && c4) { x += 12345432; } - if (c1 && c5) { x += 38847; } - if (c2 && c3) { x += 234; } - // x now has 2^10 bounds, the 10 additions below give (2^10)^10 bounds - int y = x + x + x + x + x + x + x + x + x + x + x + x; - return y; -} - // Test the comma expression. unsigned int test_comma01(unsigned int x) { unsigned int y = x < 100 ? x : 100; diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index d4c776a065d..8696ecfe8d0 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,519 +485,197 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:420:7:420:9 | rhs | 4294967295 | -| test.c:420:19:420:21 | rhs | 11 | -| test.c:421:7:421:9 | rhs | 4294967295 | -| test.c:421:19:421:21 | rhs | 12 | -| test.c:422:7:422:9 | rhs | 4294967295 | -| test.c:422:19:422:21 | rhs | 13 | -| test.c:423:7:423:9 | rhs | 4294967295 | -| test.c:423:19:423:21 | rhs | 14 | -| test.c:424:7:424:9 | rhs | 4294967295 | -| test.c:424:19:424:21 | rhs | 15 | -| test.c:425:10:425:12 | rhs | 4294967295 | -| test.c:432:10:432:11 | ip | 4294967295 | -| test.c:432:20:432:21 | ip | 4294967295 | -| test.c:432:40:432:41 | ip | 4294967295 | -| test.c:433:14:433:15 | ip | 4294967295 | -| test.c:434:14:434:15 | ip | 4294967295 | -| test.c:434:34:434:35 | ip | 4294967295 | -| test.c:435:11:435:12 | ip | 4294967295 | -| test.c:436:13:436:14 | ip | 4294967295 | -| test.c:437:14:437:15 | ip | 4294967295 | -| test.c:438:14:438:15 | ip | 4294967295 | -| test.c:439:15:439:16 | ip | 4294967295 | -| test.c:439:41:439:42 | ip | 4294967295 | -| test.c:439:52:439:53 | ip | 4294967295 | -| test.c:439:67:439:68 | ip | 4294967295 | -| test.c:439:78:439:79 | ip | 4294967295 | -| test.c:440:18:440:19 | ip | 4294967295 | -| test.c:441:23:441:24 | ip | 4294967295 | -| test.c:441:34:441:35 | ip | 4294967295 | -| test.c:442:25:442:26 | ip | 4294967295 | -| test.c:443:20:443:21 | ip | 4294967295 | -| test.c:444:11:444:12 | ip | 4294967295 | -| test.c:444:26:444:27 | ip | 4294967295 | -| test.c:445:16:445:17 | ip | 4294967295 | -| test.c:446:16:446:17 | ip | 4294967295 | -| test.c:447:16:447:17 | ip | 4294967295 | -| test.c:448:17:448:18 | ip | 4294967295 | -| test.c:449:22:449:23 | ip | 4294967295 | -| test.c:449:33:449:34 | ip | 4294967295 | -| test.c:449:48:449:49 | ip | 4294967295 | -| test.c:449:59:449:60 | ip | 4294967295 | -| test.c:450:20:450:21 | ip | 4294967295 | -| test.c:451:25:451:26 | ip | 4294967295 | -| test.c:451:36:451:37 | ip | 4294967295 | -| test.c:452:27:452:28 | ip | 4294967295 | -| test.c:453:22:453:23 | ip | 4294967295 | -| test.c:454:15:454:16 | ip | 4294967295 | -| test.c:454:30:454:31 | ip | 4294967295 | -| test.c:455:11:455:12 | ip | 4294967295 | -| test.c:456:12:456:13 | ip | 4294967295 | -| test.c:457:12:457:13 | ip | 4294967295 | -| test.c:458:13:458:14 | ip | 4294967295 | -| test.c:458:39:458:40 | ip | 4294967295 | -| test.c:458:50:458:51 | ip | 4294967295 | -| test.c:458:65:458:66 | ip | 4294967295 | -| test.c:458:76:458:77 | ip | 4294967295 | -| test.c:459:16:459:17 | ip | 4294967295 | -| test.c:460:21:460:22 | ip | 4294967295 | -| test.c:460:32:460:33 | ip | 4294967295 | -| test.c:461:23:461:24 | ip | 4294967295 | -| test.c:462:18:462:19 | ip | 4294967295 | -| test.c:463:11:463:12 | ip | 4294967295 | -| test.c:463:17:463:18 | ip | 4294967295 | -| test.c:463:37:463:38 | ip | 4294967295 | -| test.c:463:43:463:44 | ip | 4294967295 | -| test.c:464:14:464:15 | ip | 4294967295 | -| test.c:465:14:465:15 | ip | 4294967295 | -| test.c:466:14:466:15 | ip | 4294967295 | -| test.c:467:15:467:16 | ip | 4294967295 | -| test.c:467:41:467:42 | ip | 4294967295 | -| test.c:467:52:467:53 | ip | 4294967295 | -| test.c:467:67:467:68 | ip | 4294967295 | -| test.c:467:78:467:79 | ip | 4294967295 | -| test.c:468:18:468:19 | ip | 4294967295 | -| test.c:469:23:469:24 | ip | 4294967295 | -| test.c:469:34:469:35 | ip | 4294967295 | -| test.c:470:25:470:26 | ip | 4294967295 | -| test.c:471:20:471:21 | ip | 4294967295 | -| test.c:472:14:472:15 | ip | 4294967295 | -| test.c:472:20:472:21 | ip | 4294967295 | -| test.c:473:16:473:17 | ip | 4294967295 | -| test.c:474:12:474:13 | ip | 4294967295 | -| test.c:475:14:475:15 | ip | 4294967295 | -| test.c:476:15:476:16 | ip | 4294967295 | -| test.c:477:16:477:17 | ip | 4294967295 | -| test.c:478:16:478:17 | ip | 4294967295 | -| test.c:479:17:479:18 | ip | 4294967295 | -| test.c:480:22:480:23 | ip | 4294967295 | -| test.c:480:33:480:34 | ip | 4294967295 | -| test.c:480:48:480:49 | ip | 4294967295 | -| test.c:480:59:480:60 | ip | 4294967295 | -| test.c:481:20:481:21 | ip | 4294967295 | -| test.c:482:25:482:26 | ip | 4294967295 | -| test.c:482:36:482:37 | ip | 4294967295 | -| test.c:483:27:483:28 | ip | 4294967295 | -| test.c:484:22:484:23 | ip | 4294967295 | -| test.c:485:13:485:14 | ip | 4294967295 | -| test.c:485:28:485:29 | ip | 4294967295 | -| test.c:486:18:486:19 | ip | 4294967295 | -| test.c:487:18:487:19 | ip | 4294967295 | -| test.c:488:18:488:19 | ip | 4294967295 | -| test.c:489:19:489:20 | ip | 4294967295 | -| test.c:490:24:490:25 | ip | 4294967295 | -| test.c:490:35:490:36 | ip | 4294967295 | -| test.c:490:50:490:51 | ip | 4294967295 | -| test.c:490:61:490:62 | ip | 4294967295 | -| test.c:491:22:491:23 | ip | 4294967295 | -| test.c:492:27:492:28 | ip | 4294967295 | -| test.c:492:38:492:39 | ip | 4294967295 | -| test.c:493:29:493:30 | ip | 4294967295 | -| test.c:494:24:494:25 | ip | 4294967295 | -| test.c:495:17:495:18 | ip | 4294967295 | -| test.c:495:32:495:33 | ip | 4294967295 | -| test.c:496:14:496:15 | ip | 4294967295 | -| test.c:497:18:497:19 | ip | 4294967295 | -| test.c:498:18:498:19 | ip | 4294967295 | -| test.c:499:19:499:20 | ip | 4294967295 | -| test.c:500:24:500:25 | ip | 4294967295 | -| test.c:500:35:500:36 | ip | 4294967295 | -| test.c:500:50:500:51 | ip | 4294967295 | -| test.c:500:61:500:62 | ip | 4294967295 | -| test.c:501:22:501:23 | ip | 4294967295 | -| test.c:502:27:502:28 | ip | 4294967295 | -| test.c:502:38:502:39 | ip | 4294967295 | -| test.c:503:29:503:30 | ip | 4294967295 | -| test.c:504:24:504:25 | ip | 4294967295 | -| test.c:505:17:505:18 | ip | 4294967295 | -| test.c:505:23:505:24 | ip | 4294967295 | -| test.c:505:43:505:44 | ip | 4294967295 | -| test.c:505:49:505:50 | ip | 4294967295 | -| test.c:506:16:506:17 | ip | 4294967295 | -| test.c:507:16:507:17 | ip | 4294967295 | -| test.c:508:16:508:17 | ip | 4294967295 | -| test.c:509:17:509:18 | ip | 4294967295 | -| test.c:510:22:510:23 | ip | 4294967295 | -| test.c:510:33:510:34 | ip | 4294967295 | -| test.c:510:48:510:49 | ip | 4294967295 | -| test.c:510:59:510:60 | ip | 4294967295 | -| test.c:511:20:511:21 | ip | 4294967295 | -| test.c:512:25:512:26 | ip | 4294967295 | -| test.c:512:36:512:37 | ip | 4294967295 | -| test.c:513:27:513:28 | ip | 4294967295 | -| test.c:514:22:514:23 | ip | 4294967295 | -| test.c:515:16:515:17 | ip | 4294967295 | -| test.c:515:22:515:23 | ip | 4294967295 | -| test.c:516:18:516:19 | ip | 4294967295 | -| test.c:517:14:517:15 | ip | 4294967295 | -| test.c:518:14:518:15 | ip | 4294967295 | -| test.c:518:24:518:25 | ip | 4294967295 | -| test.c:518:44:518:45 | ip | 4294967295 | -| test.c:519:16:519:17 | ip | 4294967295 | -| test.c:520:16:520:17 | ip | 4294967295 | -| test.c:520:36:520:37 | ip | 4294967295 | -| test.c:521:14:521:15 | ip | 4294967295 | -| test.c:522:19:522:20 | ip | 4294967295 | -| test.c:523:20:523:21 | ip | 4294967295 | -| test.c:524:20:524:21 | ip | 4294967295 | -| test.c:525:21:525:22 | ip | 4294967295 | -| test.c:526:26:526:27 | ip | 4294967295 | -| test.c:526:37:526:38 | ip | 4294967295 | -| test.c:526:52:526:53 | ip | 4294967295 | -| test.c:526:63:526:64 | ip | 4294967295 | -| test.c:527:24:527:25 | ip | 4294967295 | -| test.c:528:29:528:30 | ip | 4294967295 | -| test.c:528:40:528:41 | ip | 4294967295 | -| test.c:529:31:529:32 | ip | 4294967295 | -| test.c:530:26:530:27 | ip | 4294967295 | -| test.c:531:17:531:18 | ip | 4294967295 | -| test.c:531:32:531:33 | ip | 4294967295 | -| test.c:532:22:532:23 | ip | 4294967295 | -| test.c:533:22:533:23 | ip | 4294967295 | -| test.c:534:22:534:23 | ip | 4294967295 | -| test.c:535:23:535:24 | ip | 4294967295 | -| test.c:536:28:536:29 | ip | 4294967295 | -| test.c:536:39:536:40 | ip | 4294967295 | -| test.c:536:54:536:55 | ip | 4294967295 | -| test.c:536:65:536:66 | ip | 4294967295 | -| test.c:537:26:537:27 | ip | 4294967295 | -| test.c:538:31:538:32 | ip | 4294967295 | -| test.c:538:42:538:43 | ip | 4294967295 | -| test.c:539:33:539:34 | ip | 4294967295 | -| test.c:540:28:540:29 | ip | 4294967295 | -| test.c:541:21:541:22 | ip | 4294967295 | -| test.c:541:36:541:37 | ip | 4294967295 | -| test.c:542:17:542:18 | ip | 4294967295 | -| test.c:543:18:543:19 | ip | 4294967295 | -| test.c:544:18:544:19 | ip | 4294967295 | -| test.c:545:19:545:20 | ip | 4294967295 | -| test.c:546:24:546:25 | ip | 4294967295 | -| test.c:546:35:546:36 | ip | 4294967295 | -| test.c:546:50:546:51 | ip | 4294967295 | -| test.c:546:61:546:62 | ip | 4294967295 | -| test.c:547:22:547:23 | ip | 4294967295 | -| test.c:548:27:548:28 | ip | 4294967295 | -| test.c:548:38:548:39 | ip | 4294967295 | -| test.c:549:29:549:30 | ip | 4294967295 | -| test.c:550:24:550:25 | ip | 4294967295 | -| test.c:551:17:551:18 | ip | 4294967295 | -| test.c:551:23:551:24 | ip | 4294967295 | -| test.c:551:43:551:44 | ip | 4294967295 | -| test.c:551:49:551:50 | ip | 4294967295 | -| test.c:552:20:552:21 | ip | 4294967295 | -| test.c:553:20:553:21 | ip | 4294967295 | -| test.c:554:20:554:21 | ip | 4294967295 | -| test.c:555:21:555:22 | ip | 4294967295 | -| test.c:556:26:556:27 | ip | 4294967295 | -| test.c:556:37:556:38 | ip | 4294967295 | -| test.c:556:52:556:53 | ip | 4294967295 | -| test.c:556:63:556:64 | ip | 4294967295 | -| test.c:557:24:557:25 | ip | 4294967295 | -| test.c:558:29:558:30 | ip | 4294967295 | -| test.c:558:40:558:41 | ip | 4294967295 | -| test.c:559:31:559:32 | ip | 4294967295 | -| test.c:560:26:560:27 | ip | 4294967295 | -| test.c:561:20:561:21 | ip | 4294967295 | -| test.c:561:26:561:27 | ip | 4294967295 | -| test.c:562:22:562:23 | ip | 4294967295 | -| test.c:563:18:563:19 | ip | 4294967295 | -| test.c:564:16:564:17 | ip | 4294967295 | -| test.c:565:17:565:18 | ip | 4294967295 | -| test.c:566:18:566:19 | ip | 4294967295 | -| test.c:567:18:567:19 | ip | 4294967295 | -| test.c:568:19:568:20 | ip | 4294967295 | -| test.c:569:24:569:25 | ip | 4294967295 | -| test.c:569:35:569:36 | ip | 4294967295 | -| test.c:569:50:569:51 | ip | 4294967295 | -| test.c:569:61:569:62 | ip | 4294967295 | -| test.c:570:22:570:23 | ip | 4294967295 | -| test.c:571:27:571:28 | ip | 4294967295 | -| test.c:571:38:571:39 | ip | 4294967295 | -| test.c:572:29:572:30 | ip | 4294967295 | -| test.c:573:24:573:25 | ip | 4294967295 | -| test.c:574:15:574:16 | ip | 4294967295 | -| test.c:574:30:574:31 | ip | 4294967295 | -| test.c:575:20:575:21 | ip | 4294967295 | -| test.c:576:20:576:21 | ip | 4294967295 | -| test.c:577:20:577:21 | ip | 4294967295 | -| test.c:578:21:578:22 | ip | 4294967295 | -| test.c:579:26:579:27 | ip | 4294967295 | -| test.c:579:37:579:38 | ip | 4294967295 | -| test.c:579:52:579:53 | ip | 4294967295 | -| test.c:579:63:579:64 | ip | 4294967295 | -| test.c:580:24:580:25 | ip | 4294967295 | -| test.c:581:29:581:30 | ip | 4294967295 | -| test.c:581:40:581:41 | ip | 4294967295 | -| test.c:582:31:582:32 | ip | 4294967295 | -| test.c:583:26:583:27 | ip | 4294967295 | -| test.c:584:19:584:20 | ip | 4294967295 | -| test.c:584:34:584:35 | ip | 4294967295 | -| test.c:585:16:585:17 | ip | 4294967295 | -| test.c:586:20:586:21 | ip | 4294967295 | -| test.c:587:20:587:21 | ip | 4294967295 | -| test.c:588:21:588:22 | ip | 4294967295 | -| test.c:589:26:589:27 | ip | 4294967295 | -| test.c:589:37:589:38 | ip | 4294967295 | -| test.c:589:52:589:53 | ip | 4294967295 | -| test.c:589:63:589:64 | ip | 4294967295 | -| test.c:590:24:590:25 | ip | 4294967295 | -| test.c:591:29:591:30 | ip | 4294967295 | -| test.c:591:40:591:41 | ip | 4294967295 | -| test.c:592:31:592:32 | ip | 4294967295 | -| test.c:593:26:593:27 | ip | 4294967295 | -| test.c:594:19:594:20 | ip | 4294967295 | -| test.c:594:25:594:26 | ip | 4294967295 | -| test.c:594:45:594:46 | ip | 4294967295 | -| test.c:594:51:594:52 | ip | 4294967295 | -| test.c:595:18:595:19 | ip | 4294967295 | -| test.c:596:18:596:19 | ip | 4294967295 | -| test.c:597:18:597:19 | ip | 4294967295 | -| test.c:598:19:598:20 | ip | 4294967295 | -| test.c:599:24:599:25 | ip | 4294967295 | -| test.c:599:35:599:36 | ip | 4294967295 | -| test.c:599:50:599:51 | ip | 4294967295 | -| test.c:599:61:599:62 | ip | 4294967295 | -| test.c:600:22:600:23 | ip | 4294967295 | -| test.c:601:27:601:28 | ip | 4294967295 | -| test.c:601:38:601:39 | ip | 4294967295 | -| test.c:602:29:602:30 | ip | 4294967295 | -| test.c:603:24:603:25 | ip | 4294967295 | -| test.c:604:18:604:19 | ip | 4294967295 | -| test.c:604:24:604:25 | ip | 4294967295 | -| test.c:605:20:605:21 | ip | 4294967295 | -| test.c:606:16:606:17 | ip | 4294967295 | -| test.c:607:10:607:23 | special_number | 4294967295 | -| test.c:615:7:615:8 | c1 | 2147483647 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | 2147483647 | -| test.c:616:13:616:13 | x | 748596 | -| test.c:617:7:617:8 | c3 | 2147483647 | -| test.c:617:13:617:13 | x | 85400991 | -| test.c:618:7:618:8 | c4 | 2147483647 | -| test.c:618:13:618:13 | x | 89076886 | -| test.c:619:7:619:8 | c5 | 2147483647 | -| test.c:619:13:619:13 | x | 89175520 | -| test.c:620:7:620:8 | c1 | 2147483647 | -| test.c:620:13:620:14 | c2 | 2147483647 | -| test.c:620:19:620:19 | x | 97010505 | -| test.c:621:7:621:8 | c1 | 2147483647 | -| test.c:621:13:621:14 | c3 | 2147483647 | -| test.c:621:19:621:19 | x | 1035467903 | -| test.c:622:7:622:8 | c1 | 2147483647 | -| test.c:622:13:622:14 | c4 | 2147483647 | -| test.c:622:19:622:19 | x | 1109363551 | -| test.c:623:7:623:8 | c1 | 2147483647 | -| test.c:623:13:623:14 | c5 | 2147483647 | -| test.c:623:19:623:19 | x | 1121708983 | -| test.c:624:7:624:8 | c2 | 2147483647 | -| test.c:624:13:624:14 | c3 | 2147483647 | -| test.c:624:19:624:19 | x | 1121747830 | -| test.c:626:11:626:11 | x | 2147483647 | -| test.c:626:15:626:15 | x | 2147483647 | -| test.c:626:19:626:19 | x | 2147483647 | -| test.c:626:23:626:23 | x | 2147483647 | -| test.c:626:27:626:27 | x | 2147483647 | -| test.c:626:31:626:31 | x | 2147483647 | -| test.c:626:35:626:35 | x | 2147483647 | -| test.c:626:39:626:39 | x | 2147483647 | -| test.c:626:43:626:43 | x | 2147483647 | -| test.c:626:47:626:47 | x | 2147483647 | -| test.c:626:51:626:51 | x | 2147483647 | -| test.c:626:55:626:55 | x | 2147483647 | -| test.c:627:10:627:10 | y | 2147483647 | -| test.c:632:20:632:20 | x | 4294967295 | -| test.c:632:30:632:30 | x | 99 | -| test.c:635:3:635:4 | y1 | 4294967295 | -| test.c:635:11:635:11 | y | 100 | -| test.c:635:14:635:14 | y | 101 | -| test.c:636:3:636:4 | y2 | 4294967295 | -| test.c:636:9:636:9 | y | 101 | -| test.c:636:14:636:14 | y | 102 | -| test.c:636:22:636:22 | y | 105 | -| test.c:637:10:637:11 | y1 | 101 | -| test.c:637:15:637:16 | y2 | 105 | -| test.c:645:3:645:3 | i | 2147483647 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | 2147483647 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | 2147483647 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | 2147483647 | -| test.c:656:7:656:7 | j | 2147483647 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | 2147483647 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | 2147483647 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 4294967295 | -| test.c:670:17:670:17 | a | 4294967295 | -| test.c:670:33:670:33 | b | 4294967295 | -| test.c:670:38:670:38 | b | 4294967295 | -| test.c:671:13:671:13 | a | 11 | -| test.c:671:15:671:15 | b | 23 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 253 | -| test.c:674:12:674:12 | a | 4294967295 | -| test.c:674:17:674:17 | a | 4294967295 | -| test.c:674:33:674:33 | b | 4294967295 | -| test.c:674:38:674:38 | b | 4294967295 | -| test.c:675:13:675:13 | a | 11 | -| test.c:675:15:675:15 | b | 23 | -| test.c:676:5:676:9 | total | 253 | -| test.c:676:14:676:14 | r | 253 | -| test.c:678:12:678:12 | a | 4294967295 | -| test.c:678:17:678:17 | a | 4294967295 | -| test.c:678:34:678:34 | b | 4294967295 | -| test.c:678:39:678:39 | b | 4294967295 | -| test.c:679:13:679:13 | a | 11 | -| test.c:679:15:679:15 | b | 23 | -| test.c:680:5:680:9 | total | 506 | -| test.c:680:14:680:14 | r | 253 | -| test.c:683:10:683:14 | total | 759 | -| test.c:689:12:689:12 | b | 4294967295 | -| test.c:689:17:689:17 | b | 4294967295 | -| test.c:690:16:690:16 | b | 23 | -| test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 253 | -| test.c:693:12:693:12 | b | 4294967295 | -| test.c:693:17:693:17 | b | 4294967295 | -| test.c:694:16:694:16 | b | 23 | -| test.c:695:5:695:9 | total | 253 | -| test.c:695:14:695:14 | r | 253 | -| test.c:697:13:697:13 | b | 4294967295 | -| test.c:697:18:697:18 | b | 4294967295 | -| test.c:698:16:698:16 | b | 23 | -| test.c:699:5:699:9 | total | 506 | -| test.c:699:14:699:14 | r | 253 | -| test.c:702:10:702:14 | total | 759 | -| test.c:707:3:707:3 | x | 18446744073709551616 | -| test.c:707:7:707:7 | y | 18446744073709551616 | -| test.c:708:3:708:4 | xy | 18446744073709551616 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 18446744073709551616 | -| test.c:715:3:715:3 | y | 18446744073709551616 | -| test.c:716:3:716:4 | xy | 18446744073709551616 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 4294967295 | -| test.c:722:43:722:44 | ui | 4294967295 | -| test.c:722:48:722:49 | ui | 4294967295 | -| test.c:723:12:723:17 | result | 18446744065119617024 | -| test.c:725:7:725:8 | ul | 18446744073709551616 | -| test.c:726:28:726:29 | ul | 18446744073709551616 | -| test.c:726:33:726:34 | ul | 18446744073709551616 | -| test.c:727:12:727:17 | result | 18446744073709551616 | -| test.c:733:7:733:8 | ui | 4294967295 | -| test.c:733:19:733:20 | ui | 10 | -| test.c:734:5:734:6 | ui | 10 | -| test.c:734:11:734:12 | ui | 10 | -| test.c:735:12:735:13 | ui | 100 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | 2147483647 | -| test.c:747:18:747:18 | i | 2147483647 | -| test.c:748:5:748:5 | i | 2147483647 | -| test.c:748:13:748:13 | i | 2 | -| test.c:749:9:749:9 | i | 10 | -| test.c:751:5:751:5 | i | 2147483647 | -| test.c:751:9:751:9 | i | 10 | -| test.c:752:9:752:9 | i | 15 | -| test.c:754:5:754:5 | i | 15 | -| test.c:755:9:755:9 | i | 105 | -| test.c:757:5:757:5 | i | 105 | -| test.c:758:9:758:9 | i | 2310 | -| test.c:760:7:760:7 | i | 2147483647 | -| test.c:761:5:761:5 | i | 2147483647 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | 2147483647 | -| test.c:764:7:764:7 | i | 2147483647 | -| test.c:765:10:765:10 | i | 2147483647 | -| test.c:768:3:768:3 | i | 2147483647 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | 127 | -| test.c:777:7:777:7 | n | 4294967295 | -| test.c:779:7:779:7 | n | 4294967295 | -| test.c:780:9:780:9 | n | 4294967295 | -| test.c:783:7:783:7 | n | 4294967295 | -| test.c:784:9:784:9 | n | 4294967295 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 4294967295 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 4294967295 | -| test.c:795:10:795:10 | n | 4294967295 | -| test.c:796:5:796:5 | n | 4294967295 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | 32767 | -| test.c:806:7:806:7 | n | 32767 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 32767 | -| test.c:812:7:812:7 | n | 32767 | -| test.c:813:9:813:9 | n | 32767 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 32767 | -| test.c:819:5:819:5 | n | 32767 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | 32767 | -| test.c:827:9:827:9 | n | 32767 | -| test.c:828:11:828:11 | n | 32767 | -| test.c:832:7:832:7 | n | 32767 | -| test.c:833:13:833:13 | n | 32767 | -| test.c:836:9:836:9 | n | 32767 | -| test.c:839:7:839:7 | n | 32767 | -| test.c:839:22:839:22 | n | 32767 | -| test.c:840:9:840:9 | n | 32767 | -| test.c:843:7:843:7 | n | 32767 | -| test.c:844:5:844:5 | n | 32767 | -| test.c:844:10:844:10 | n | 32767 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 32767 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 32767 | -| test.c:856:7:856:8 | ss | 32767 | -| test.c:857:9:857:10 | ss | 3 | -| test.c:860:7:860:8 | ss | 32767 | -| test.c:861:9:861:10 | ss | 32767 | -| test.c:864:14:864:15 | us | 65535 | -| test.c:865:9:865:10 | us | 32767 | -| test.c:868:14:868:15 | us | 65535 | -| test.c:869:9:869:10 | us | 65535 | -| test.c:872:7:872:8 | ss | 32767 | -| test.c:873:9:873:10 | ss | 32767 | -| test.c:876:7:876:8 | ss | 32767 | -| test.c:877:9:877:10 | ss | 2 | -| test.c:883:8:883:8 | s | 2147483647 | -| test.c:883:15:883:15 | s | 127 | -| test.c:883:23:883:23 | s | 9 | -| test.c:884:18:884:18 | s | 9 | -| test.c:884:22:884:22 | s | 9 | -| test.c:885:9:885:14 | result | 127 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | 2147483647 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 4294967295 | -| test.c:902:12:902:12 | s | 2147483647 | -| test.c:903:7:903:8 | s2 | 4 | -| test.c:908:7:908:7 | x | 2147483647 | -| test.c:909:9:909:9 | y | 2147483647 | -| test.c:913:7:913:7 | y | 2147483647 | -| test.c:922:7:922:7 | x | 2147483647 | -| test.c:927:7:927:7 | x | 15 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:418:20:418:20 | x | 4294967295 | +| test.c:418:30:418:30 | x | 99 | +| test.c:421:3:421:4 | y1 | 4294967295 | +| test.c:421:11:421:11 | y | 100 | +| test.c:421:14:421:14 | y | 101 | +| test.c:422:3:422:4 | y2 | 4294967295 | +| test.c:422:9:422:9 | y | 101 | +| test.c:422:14:422:14 | y | 102 | +| test.c:422:22:422:22 | y | 105 | +| test.c:423:10:423:11 | y1 | 101 | +| test.c:423:15:423:16 | y2 | 105 | +| test.c:431:3:431:3 | i | 2147483647 | +| test.c:432:7:432:7 | i | 10 | +| test.c:434:3:434:3 | i | 2147483647 | +| test.c:435:3:435:3 | i | 10 | +| test.c:436:7:436:7 | i | 20 | +| test.c:438:3:438:3 | i | 2147483647 | +| test.c:439:3:439:3 | i | 40 | +| test.c:440:7:440:7 | i | 30 | +| test.c:442:3:442:3 | i | 2147483647 | +| test.c:442:7:442:7 | j | 2147483647 | +| test.c:443:7:443:7 | i | 40 | +| test.c:445:3:445:3 | i | 2147483647 | +| test.c:445:8:445:8 | j | 40 | +| test.c:446:7:446:7 | i | 50 | +| test.c:448:3:448:3 | i | 2147483647 | +| test.c:448:13:448:13 | j | 50 | +| test.c:449:7:449:7 | i | 60 | +| test.c:456:12:456:12 | a | 4294967295 | +| test.c:456:17:456:17 | a | 4294967295 | +| test.c:456:33:456:33 | b | 4294967295 | +| test.c:456:38:456:38 | b | 4294967295 | +| test.c:457:13:457:13 | a | 11 | +| test.c:457:15:457:15 | b | 23 | +| test.c:458:5:458:9 | total | 0 | +| test.c:458:14:458:14 | r | 253 | +| test.c:460:12:460:12 | a | 4294967295 | +| test.c:460:17:460:17 | a | 4294967295 | +| test.c:460:33:460:33 | b | 4294967295 | +| test.c:460:38:460:38 | b | 4294967295 | +| test.c:461:13:461:13 | a | 11 | +| test.c:461:15:461:15 | b | 23 | +| test.c:462:5:462:9 | total | 253 | +| test.c:462:14:462:14 | r | 253 | +| test.c:464:12:464:12 | a | 4294967295 | +| test.c:464:17:464:17 | a | 4294967295 | +| test.c:464:34:464:34 | b | 4294967295 | +| test.c:464:39:464:39 | b | 4294967295 | +| test.c:465:13:465:13 | a | 11 | +| test.c:465:15:465:15 | b | 23 | +| test.c:466:5:466:9 | total | 506 | +| test.c:466:14:466:14 | r | 253 | +| test.c:469:10:469:14 | total | 759 | +| test.c:475:12:475:12 | b | 4294967295 | +| test.c:475:17:475:17 | b | 4294967295 | +| test.c:476:16:476:16 | b | 23 | +| test.c:477:5:477:9 | total | 0 | +| test.c:477:14:477:14 | r | 253 | +| test.c:479:12:479:12 | b | 4294967295 | +| test.c:479:17:479:17 | b | 4294967295 | +| test.c:480:16:480:16 | b | 23 | +| test.c:481:5:481:9 | total | 253 | +| test.c:481:14:481:14 | r | 253 | +| test.c:483:13:483:13 | b | 4294967295 | +| test.c:483:18:483:18 | b | 4294967295 | +| test.c:484:16:484:16 | b | 23 | +| test.c:485:5:485:9 | total | 506 | +| test.c:485:14:485:14 | r | 253 | +| test.c:488:10:488:14 | total | 759 | +| test.c:493:3:493:3 | x | 18446744073709551616 | +| test.c:493:7:493:7 | y | 18446744073709551616 | +| test.c:494:3:494:4 | xy | 18446744073709551616 | +| test.c:494:8:494:8 | x | 1000000003 | +| test.c:494:12:494:12 | y | 1000000003 | +| test.c:495:10:495:11 | xy | 1000000006000000000 | +| test.c:500:3:500:3 | x | 18446744073709551616 | +| test.c:501:3:501:3 | y | 18446744073709551616 | +| test.c:502:3:502:4 | xy | 18446744073709551616 | +| test.c:502:8:502:8 | x | 274177 | +| test.c:502:12:502:12 | y | 67280421310721 | +| test.c:503:10:503:11 | xy | 18446744073709551616 | +| test.c:507:7:507:8 | ui | 4294967295 | +| test.c:508:43:508:44 | ui | 4294967295 | +| test.c:508:48:508:49 | ui | 4294967295 | +| test.c:509:12:509:17 | result | 18446744065119617024 | +| test.c:511:7:511:8 | ul | 18446744073709551616 | +| test.c:512:28:512:29 | ul | 18446744073709551616 | +| test.c:512:33:512:34 | ul | 18446744073709551616 | +| test.c:513:12:513:17 | result | 18446744073709551616 | +| test.c:519:7:519:8 | ui | 4294967295 | +| test.c:519:19:519:20 | ui | 10 | +| test.c:520:5:520:6 | ui | 10 | +| test.c:520:11:520:12 | ui | 10 | +| test.c:521:12:521:13 | ui | 100 | +| test.c:525:3:525:9 | uiconst | 10 | +| test.c:528:3:528:9 | ulconst | 10 | +| test.c:529:10:529:16 | uiconst | 40 | +| test.c:529:20:529:26 | ulconst | 40 | +| test.c:533:7:533:7 | i | 2147483647 | +| test.c:533:18:533:18 | i | 2147483647 | +| test.c:534:5:534:5 | i | 2147483647 | +| test.c:534:13:534:13 | i | 2 | +| test.c:535:9:535:9 | i | 10 | +| test.c:537:5:537:5 | i | 2147483647 | +| test.c:537:9:537:9 | i | 10 | +| test.c:538:9:538:9 | i | 15 | +| test.c:540:5:540:5 | i | 15 | +| test.c:541:9:541:9 | i | 105 | +| test.c:543:5:543:5 | i | 105 | +| test.c:544:9:544:9 | i | 2310 | +| test.c:546:7:546:7 | i | 2147483647 | +| test.c:547:5:547:5 | i | 2147483647 | +| test.c:547:9:547:9 | i | -1 | +| test.c:548:9:548:9 | i | 1 | +| test.c:550:3:550:3 | i | 2147483647 | +| test.c:550:7:550:7 | i | 2147483647 | +| test.c:551:10:551:10 | i | 2147483647 | +| test.c:554:3:554:3 | i | 2147483647 | +| test.c:554:10:554:11 | sc | 1 | +| test.c:556:7:556:7 | i | 127 | +| test.c:563:7:563:7 | n | 4294967295 | +| test.c:565:7:565:7 | n | 4294967295 | +| test.c:566:9:566:9 | n | 4294967295 | +| test.c:569:7:569:7 | n | 4294967295 | +| test.c:570:9:570:9 | n | 4294967295 | +| test.c:572:9:572:9 | n | 0 | +| test.c:575:8:575:8 | n | 4294967295 | +| test.c:576:9:576:9 | n | 0 | +| test.c:578:9:578:9 | n | 4294967295 | +| test.c:581:10:581:10 | n | 4294967295 | +| test.c:582:5:582:5 | n | 4294967295 | +| test.c:585:7:585:7 | n | 0 | +| test.c:589:7:589:7 | n | 32767 | +| test.c:592:7:592:7 | n | 32767 | +| test.c:593:9:593:9 | n | 0 | +| test.c:595:9:595:9 | n | 32767 | +| test.c:598:7:598:7 | n | 32767 | +| test.c:599:9:599:9 | n | 32767 | +| test.c:601:9:601:9 | n | 0 | +| test.c:604:10:604:10 | n | 32767 | +| test.c:605:5:605:5 | n | 32767 | +| test.c:608:7:608:7 | n | 0 | +| test.c:612:7:612:7 | n | 32767 | +| test.c:613:9:613:9 | n | 32767 | +| test.c:614:11:614:11 | n | 32767 | +| test.c:618:7:618:7 | n | 32767 | +| test.c:619:13:619:13 | n | 32767 | +| test.c:622:9:622:9 | n | 32767 | +| test.c:625:7:625:7 | n | 32767 | +| test.c:625:22:625:22 | n | 32767 | +| test.c:626:9:626:9 | n | 32767 | +| test.c:629:7:629:7 | n | 32767 | +| test.c:630:5:630:5 | n | 32767 | +| test.c:630:10:630:10 | n | 32767 | +| test.c:630:14:630:14 | n | 0 | +| test.c:631:6:631:6 | n | 32767 | +| test.c:631:10:631:10 | n | 0 | +| test.c:631:14:631:14 | n | 32767 | +| test.c:642:7:642:8 | ss | 32767 | +| test.c:643:9:643:10 | ss | 3 | +| test.c:646:7:646:8 | ss | 32767 | +| test.c:647:9:647:10 | ss | 32767 | +| test.c:650:14:650:15 | us | 65535 | +| test.c:651:9:651:10 | us | 32767 | +| test.c:654:14:654:15 | us | 65535 | +| test.c:655:9:655:10 | us | 65535 | +| test.c:658:7:658:8 | ss | 32767 | +| test.c:659:9:659:10 | ss | 32767 | +| test.c:662:7:662:8 | ss | 32767 | +| test.c:663:9:663:10 | ss | 2 | +| test.c:669:8:669:8 | s | 2147483647 | +| test.c:669:15:669:15 | s | 127 | +| test.c:669:23:669:23 | s | 9 | +| test.c:670:18:670:18 | s | 9 | +| test.c:670:22:670:22 | s | 9 | +| test.c:671:9:671:14 | result | 127 | +| test.c:677:7:677:7 | i | 0 | +| test.c:678:9:678:9 | i | 2147483647 | +| test.c:682:7:682:7 | u | 0 | +| test.c:683:9:683:9 | u | 4294967295 | +| test.c:688:12:688:12 | s | 2147483647 | +| test.c:689:7:689:8 | s2 | 4 | +| test.c:694:7:694:7 | x | 2147483647 | +| test.c:695:9:695:9 | y | 2147483647 | +| test.c:699:7:699:7 | y | 2147483647 | +| test.c:708:7:708:7 | x | 2147483647 | +| test.c:713:7:713:7 | x | 15 | +| test.c:720:8:720:8 | x | 2147483647 | +| test.c:720:12:720:12 | y | 256 | +| test.c:721:9:721:9 | x | 2147483647 | +| test.c:722:9:722:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From c91e5618a41f0166a9bdbc8a1ecb27847046a2d4 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 27 Aug 2025 12:53:56 +0100 Subject: [PATCH 590/965] Go: add dbscheme relations for overlay support --- .../go.dbscheme | 552 +++++++++++++++++ .../old.dbscheme | 563 ++++++++++++++++++ .../upgrade.properties | 4 + go/extractor/dbscheme/tables.go | 11 + go/ql/lib/go.dbscheme | 11 + .../go.dbscheme | 563 ++++++++++++++++++ .../old.dbscheme | 552 +++++++++++++++++ .../upgrade.properties | 2 + 8 files changed, 2258 insertions(+) create mode 100644 go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme create mode 100644 go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme create mode 100644 go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties create mode 100644 go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme create mode 100644 go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme create mode 100644 go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme new file mode 100644 index 00000000000..b3da71c3ac2 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/go.dbscheme @@ -0,0 +1,552 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme new file mode 100644 index 00000000000..b1341734d68 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/old.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties new file mode 100644 index 00000000000..1a7cdb0ad71 --- /dev/null +++ b/go/downgrades/b1341734d6870b105e5c9d168ce7dec25d7f72d0/upgrade.properties @@ -0,0 +1,4 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/go/extractor/dbscheme/tables.go b/go/extractor/dbscheme/tables.go index 665ecdcc240..9c537fbaf89 100644 --- a/go/extractor/dbscheme/tables.go +++ b/go/extractor/dbscheme/tables.go @@ -43,6 +43,17 @@ externalData( snapshotDate(unique date snapshotDate : date ref); sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); `) // Copied directly from the XML dbscheme diff --git a/go/ql/lib/go.dbscheme b/go/ql/lib/go.dbscheme index b3da71c3ac2..b1341734d68 100644 --- a/go/ql/lib/go.dbscheme +++ b/go/ql/lib/go.dbscheme @@ -36,6 +36,17 @@ snapshotDate(unique date snapshotDate : date ref); sourceLocationPrefix(varchar(900) prefix : string ref); +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + /* * XML Files diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme new file mode 100644 index 00000000000..b1341734d68 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/go.dbscheme @@ -0,0 +1,563 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Overlay support **/ + +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +overlayChangedFiles( + string path: string ref +); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme new file mode 100644 index 00000000000..b3da71c3ac2 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/old.dbscheme @@ -0,0 +1,552 @@ +/** Auto-generated dbscheme; do not edit. Run `make gen` in directory `go/` to regenerate. */ + + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +compilations(unique int id: @compilation, string cwd: string ref); + +#keyset[id, num] +compilation_args(int id: @compilation ref, int num: int ref, string arg: string ref); + +#keyset[id, num, kind] +compilation_time(int id: @compilation ref, int num: int ref, int kind: int ref, float secs: float ref); + +diagnostic_for(unique int diagnostic: @diagnostic ref, int compilation: @compilation ref, int file_number: int ref, int file_number_diagnostic_number: int ref); + +compilation_finished(unique int id: @compilation ref, float cpu_seconds: float ref, float elapsed_seconds: float ref); + +#keyset[id, num] +compilation_compiling_files(int id: @compilation ref, int num: int ref, int file: @file ref); + +diagnostics(unique int id: @diagnostic, int severity: int ref, string error_tag: string ref, string error_message: string ref, + string full_error_message: string ref, int location: @location ref); + +locations_default(unique int id: @location_default, int file: @file ref, int beginLine: int ref, int beginColumn: int ref, + int endLine: int ref, int endColumn: int ref); + +numlines(int element_id: @sourceline ref, int num_lines: int ref, int num_code: int ref, int num_comment: int ref); + +files(unique int id: @file, string name: string ref); + +folders(unique int id: @folder, string name: string ref); + +containerparent(int parent: @container ref, unique int child: @container ref); + +has_location(unique int locatable: @locatable ref, int location: @location ref); + +#keyset[parent, idx] +comment_groups(unique int id: @comment_group, int parent: @file ref, int idx: int ref); + +comments(unique int id: @comment, int kind: int ref, int parent: @comment_group ref, int idx: int ref, string text: string ref); + +doc_comments(unique int node: @documentable ref, int comment: @comment_group ref); + +#keyset[parent, idx] +exprs(unique int id: @expr, int kind: int ref, int parent: @exprparent ref, int idx: int ref); + +literals(unique int expr: @expr ref, string value: string ref, string raw: string ref); + +constvalues(unique int expr: @expr ref, string value: string ref, string exact: string ref); + +fields(unique int id: @field, int parent: @fieldparent ref, int idx: int ref); + +typeparamdecls(unique int id: @typeparamdecl, int parent: @typeparamdeclparent ref, int idx: int ref); + +#keyset[parent, idx] +stmts(unique int id: @stmt, int kind: int ref, int parent: @stmtparent ref, int idx: int ref); + +#keyset[parent, idx] +decls(unique int id: @decl, int kind: int ref, int parent: @declparent ref, int idx: int ref); + +#keyset[parent, idx] +specs(unique int id: @spec, int kind: int ref, int parent: @gendecl ref, int idx: int ref); + +scopes(unique int id: @scope, int kind: int ref); + +scopenesting(unique int inner: @scope ref, int outer: @scope ref); + +scopenodes(unique int node: @scopenode ref, int scope: @localscope ref); + +objects(unique int id: @object, int kind: int ref, string name: string ref); + +objectscopes(unique int object: @object ref, int scope: @scope ref); + +objecttypes(unique int object: @object ref, int tp: @type ref); + +methodreceivers(unique int method: @object ref, int receiver: @object ref); + +fieldstructs(unique int field: @object ref, int struct: @structtype ref); + +methodhosts(int method: @object ref, int host: @definedtype ref); + +defs(int ident: @ident ref, int object: @object ref); + +uses(int ident: @ident ref, int object: @object ref); + +types(unique int id: @type, int kind: int ref); + +type_of(unique int expr: @expr ref, int tp: @type ref); + +typename(unique int tp: @type ref, string name: string ref); + +key_type(unique int map: @maptype ref, int tp: @type ref); + +element_type(unique int container: @containertype ref, int tp: @type ref); + +base_type(unique int ptr: @pointertype ref, int tp: @type ref); + +underlying_type(unique int defined: @definedtype ref, int tp: @type ref); + +#keyset[parent, index] +component_types(int parent: @compositetype ref, int index: int ref, string name: string ref, int tp: @type ref); + +#keyset[parent, index] +struct_tags(int parent: @structtype ref, int index: int ref, string tag: string ref); + +#keyset[interface, index] +interface_private_method_ids(int interface: @interfacetype ref, int index: int ref, string id: string ref); + +array_length(unique int tp: @arraytype ref, string len: string ref); + +type_objects(unique int tp: @type ref, int object: @object ref); + +packages(unique int id: @package, string name: string ref, string path: string ref, int scope: @packagescope ref); + +#keyset[parent, idx] +modexprs(unique int id: @modexpr, int kind: int ref, int parent: @modexprparent ref, int idx: int ref); + +#keyset[parent, idx] +modtokens(string token: string ref, int parent: @modexpr ref, int idx: int ref); + +#keyset[package, idx] +errors(unique int id: @error, int kind: int ref, string msg: string ref, string rawpos: string ref, + string file: string ref, int line: int ref, int col: int ref, int package: @package ref, int idx: int ref); + +has_ellipsis(int id: @callorconversionexpr ref); + +variadic(int id: @signaturetype ref); + +#keyset[parent, idx] +typeparam(unique int tp: @typeparamtype ref, string name: string ref, int bound: @compositetype ref, + int parent: @typeparamparentobject ref, int idx: int ref); + +@container = @file | @folder; + +@locatable = @xmllocatable | @node | @localscope; + +@node = @documentable | @exprparent | @modexprparent | @fieldparent | @stmtparent | @declparent | @typeparamdeclparent + | @scopenode | @comment_group | @comment; + +@documentable = @file | @field | @typeparamdecl | @spec | @gendecl | @funcdecl | @modexpr; + +@exprparent = @funcdef | @file | @expr | @field | @stmt | @decl | @typeparamdecl | @spec; + +@modexprparent = @file | @modexpr; + +@fieldparent = @decl | @structtypeexpr | @functypeexpr | @interfacetypeexpr; + +@stmtparent = @funcdef | @stmt | @decl; + +@declparent = @file | @declstmt; + +@typeparamdeclparent = @funcdecl | @typespec; + +@funcdef = @funclit | @funcdecl; + +@scopenode = @file | @functypeexpr | @blockstmt | @ifstmt | @caseclause | @switchstmt | @commclause | @loopstmt; + +@location = @location_default; + +@sourceline = @locatable; + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment; + +case @expr.kind of + 0 = @badexpr +| 1 = @ident +| 2 = @ellipsis +| 3 = @intlit +| 4 = @floatlit +| 5 = @imaglit +| 6 = @charlit +| 7 = @stringlit +| 8 = @funclit +| 9 = @compositelit +| 10 = @parenexpr +| 11 = @selectorexpr +| 12 = @indexexpr +| 13 = @genericfunctioninstantiationexpr +| 14 = @generictypeinstantiationexpr +| 15 = @sliceexpr +| 16 = @typeassertexpr +| 17 = @callorconversionexpr +| 18 = @starexpr +| 19 = @keyvalueexpr +| 20 = @arraytypeexpr +| 21 = @structtypeexpr +| 22 = @functypeexpr +| 23 = @interfacetypeexpr +| 24 = @maptypeexpr +| 25 = @typesetliteralexpr +| 26 = @plusexpr +| 27 = @minusexpr +| 28 = @notexpr +| 29 = @complementexpr +| 30 = @derefexpr +| 31 = @addressexpr +| 32 = @arrowexpr +| 33 = @lorexpr +| 34 = @landexpr +| 35 = @eqlexpr +| 36 = @neqexpr +| 37 = @lssexpr +| 38 = @leqexpr +| 39 = @gtrexpr +| 40 = @geqexpr +| 41 = @addexpr +| 42 = @subexpr +| 43 = @orexpr +| 44 = @xorexpr +| 45 = @mulexpr +| 46 = @quoexpr +| 47 = @remexpr +| 48 = @shlexpr +| 49 = @shrexpr +| 50 = @andexpr +| 51 = @andnotexpr +| 52 = @sendchantypeexpr +| 53 = @recvchantypeexpr +| 54 = @sendrcvchantypeexpr; + +@basiclit = @intlit | @floatlit | @imaglit | @charlit | @stringlit; + +@operatorexpr = @logicalexpr | @arithmeticexpr | @bitwiseexpr | @unaryexpr | @binaryexpr; + +@logicalexpr = @logicalunaryexpr | @logicalbinaryexpr; + +@arithmeticexpr = @arithmeticunaryexpr | @arithmeticbinaryexpr; + +@bitwiseexpr = @bitwiseunaryexpr | @bitwisebinaryexpr; + +@unaryexpr = @logicalunaryexpr | @bitwiseunaryexpr | @arithmeticunaryexpr | @derefexpr | @addressexpr | @arrowexpr; + +@logicalunaryexpr = @notexpr; + +@bitwiseunaryexpr = @complementexpr; + +@arithmeticunaryexpr = @plusexpr | @minusexpr; + +@binaryexpr = @logicalbinaryexpr | @bitwisebinaryexpr | @arithmeticbinaryexpr | @comparison; + +@logicalbinaryexpr = @lorexpr | @landexpr; + +@bitwisebinaryexpr = @shiftexpr | @orexpr | @xorexpr | @andexpr | @andnotexpr; + +@arithmeticbinaryexpr = @addexpr | @subexpr | @mulexpr | @quoexpr | @remexpr; + +@shiftexpr = @shlexpr | @shrexpr; + +@comparison = @equalitytest | @relationalcomparison; + +@equalitytest = @eqlexpr | @neqexpr; + +@relationalcomparison = @lssexpr | @leqexpr | @gtrexpr | @geqexpr; + +@chantypeexpr = @sendchantypeexpr | @recvchantypeexpr | @sendrcvchantypeexpr; + +case @stmt.kind of + 0 = @badstmt +| 1 = @declstmt +| 2 = @emptystmt +| 3 = @labeledstmt +| 4 = @exprstmt +| 5 = @sendstmt +| 6 = @incstmt +| 7 = @decstmt +| 8 = @gostmt +| 9 = @deferstmt +| 10 = @returnstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @gotostmt +| 14 = @fallthroughstmt +| 15 = @blockstmt +| 16 = @ifstmt +| 17 = @caseclause +| 18 = @exprswitchstmt +| 19 = @typeswitchstmt +| 20 = @commclause +| 21 = @selectstmt +| 22 = @forstmt +| 23 = @rangestmt +| 24 = @assignstmt +| 25 = @definestmt +| 26 = @addassignstmt +| 27 = @subassignstmt +| 28 = @mulassignstmt +| 29 = @quoassignstmt +| 30 = @remassignstmt +| 31 = @andassignstmt +| 32 = @orassignstmt +| 33 = @xorassignstmt +| 34 = @shlassignstmt +| 35 = @shrassignstmt +| 36 = @andnotassignstmt; + +@incdecstmt = @incstmt | @decstmt; + +@assignment = @simpleassignstmt | @compoundassignstmt; + +@simpleassignstmt = @assignstmt | @definestmt; + +@compoundassignstmt = @addassignstmt | @subassignstmt | @mulassignstmt | @quoassignstmt | @remassignstmt + | @andassignstmt | @orassignstmt | @xorassignstmt | @shlassignstmt | @shrassignstmt | @andnotassignstmt; + +@branchstmt = @breakstmt | @continuestmt | @gotostmt | @fallthroughstmt; + +@switchstmt = @exprswitchstmt | @typeswitchstmt; + +@loopstmt = @forstmt | @rangestmt; + +case @decl.kind of + 0 = @baddecl +| 1 = @importdecl +| 2 = @constdecl +| 3 = @typedecl +| 4 = @vardecl +| 5 = @funcdecl; + +@gendecl = @importdecl | @constdecl | @typedecl | @vardecl; + +case @spec.kind of + 0 = @importspec +| 1 = @valuespec +| 2 = @typedefspec +| 3 = @aliasspec; + +@typespec = @typedefspec | @aliasspec; + +case @object.kind of + 0 = @pkgobject +| 1 = @decltypeobject +| 2 = @builtintypeobject +| 3 = @declconstobject +| 4 = @builtinconstobject +| 5 = @declvarobject +| 6 = @declfunctionobject +| 7 = @builtinfunctionobject +| 8 = @labelobject; + +@typeparamparentobject = @decltypeobject | @declfunctionobject; + +@declobject = @decltypeobject | @declconstobject | @declvarobject | @declfunctionobject; + +@builtinobject = @builtintypeobject | @builtinconstobject | @builtinfunctionobject; + +@typeobject = @decltypeobject | @builtintypeobject; + +@valueobject = @constobject | @varobject | @functionobject; + +@constobject = @declconstobject | @builtinconstobject; + +@varobject = @declvarobject; + +@functionobject = @declfunctionobject | @builtinfunctionobject; + +case @scope.kind of + 0 = @universescope +| 1 = @packagescope +| 2 = @localscope; + +case @type.kind of + 0 = @invalidtype +| 1 = @boolexprtype +| 2 = @inttype +| 3 = @int8type +| 4 = @int16type +| 5 = @int32type +| 6 = @int64type +| 7 = @uinttype +| 8 = @uint8type +| 9 = @uint16type +| 10 = @uint32type +| 11 = @uint64type +| 12 = @uintptrtype +| 13 = @float32type +| 14 = @float64type +| 15 = @complex64type +| 16 = @complex128type +| 17 = @stringexprtype +| 18 = @unsafepointertype +| 19 = @boolliteraltype +| 20 = @intliteraltype +| 21 = @runeliteraltype +| 22 = @floatliteraltype +| 23 = @complexliteraltype +| 24 = @stringliteraltype +| 25 = @nilliteraltype +| 26 = @typeparamtype +| 27 = @arraytype +| 28 = @slicetype +| 29 = @structtype +| 30 = @pointertype +| 31 = @interfacetype +| 32 = @tupletype +| 33 = @signaturetype +| 34 = @maptype +| 35 = @sendchantype +| 36 = @recvchantype +| 37 = @sendrcvchantype +| 38 = @definedtype +| 39 = @typesetliteraltype; + +@basictype = @booltype | @numerictype | @stringtype | @literaltype | @invalidtype | @unsafepointertype; + +@booltype = @boolexprtype | @boolliteraltype; + +@numerictype = @integertype | @floattype | @complextype; + +@integertype = @signedintegertype | @unsignedintegertype; + +@signedintegertype = @inttype | @int8type | @int16type | @int32type | @int64type | @intliteraltype | @runeliteraltype; + +@unsignedintegertype = @uinttype | @uint8type | @uint16type | @uint32type | @uint64type | @uintptrtype; + +@floattype = @float32type | @float64type | @floatliteraltype; + +@complextype = @complex64type | @complex128type | @complexliteraltype; + +@stringtype = @stringexprtype | @stringliteraltype; + +@literaltype = @boolliteraltype | @intliteraltype | @runeliteraltype | @floatliteraltype | @complexliteraltype + | @stringliteraltype | @nilliteraltype; + +@compositetype = @typeparamtype | @containertype | @structtype | @pointertype | @interfacetype | @tupletype + | @signaturetype | @definedtype | @typesetliteraltype; + +@containertype = @arraytype | @slicetype | @maptype | @chantype; + +@chantype = @sendchantype | @recvchantype | @sendrcvchantype; + +case @modexpr.kind of + 0 = @modcommentblock +| 1 = @modline +| 2 = @modlineblock +| 3 = @modlparen +| 4 = @modrparen; + +case @error.kind of + 0 = @unknownerror +| 1 = @listerror +| 2 = @parseerror +| 3 = @typeerror; + diff --git a/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties new file mode 100644 index 00000000000..52b67d65af7 --- /dev/null +++ b/go/ql/lib/upgrades/b3da71c3ac204b557c86e9d9c26012360bdbdccb/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full From 4a325986e440c3704ffb3252d8a4a48e5a1d93f5 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 27 Aug 2025 12:58:08 +0100 Subject: [PATCH 591/965] Go: add extractor pack field indicating overlay support --- go/codeql-extractor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/go/codeql-extractor.yml b/go/codeql-extractor.yml index af9fca0462f..7a009fb2610 100644 --- a/go/codeql-extractor.yml +++ b/go/codeql-extractor.yml @@ -21,6 +21,7 @@ file_types: extensions: - .go legacy_qltest_extraction: true +overlay_support_version: 20250626 options: extract_tests: title: Whether to include Go test files in the CodeQL database. From 05e5502680e2b9d776cb7fc6320063a78aff8d92 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 27 Aug 2025 13:09:44 +0100 Subject: [PATCH 592/965] Go: recognize CODEQL_PATH_TRANSFORMER env var --- go/extractor/cli/go-autobuilder/go-autobuilder.go | 9 +++++---- go/extractor/srcarchive/BUILD.bazel | 1 + go/extractor/srcarchive/srcarchive.go | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index ae9a478c367..d9e294524e6 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -273,7 +273,7 @@ func createPathTransformerFile(newdir string) *os.File { log.Fatalf("Failed to chdir into %s: %s\n", newdir, err.Error()) } - // set up SEMMLE_PATH_TRANSFORMER to ensure paths in the source archive and the snapshot + // set up CODEQL_PATH_TRANSFORMER to ensure paths in the source archive and the snapshot // match the original source location, not the location we moved it to pt, err := os.CreateTemp("", "path-transformer") if err != nil { @@ -292,9 +292,9 @@ func writePathTransformerFile(pt *os.File, realSrc, root, newdir string) { if err != nil { log.Fatalf("Unable to close path transformer file: %s.", err.Error()) } - err = os.Setenv("SEMMLE_PATH_TRANSFORMER", pt.Name()) + err = os.Setenv("CODEQL_PATH_TRANSFORMER", pt.Name()) if err != nil { - log.Fatalf("Unable to set SEMMLE_PATH_TRANSFORMER environment variable: %s.\n", err.Error()) + log.Fatalf("Unable to set CODEQL_PATH_TRANSFORMER environment variable: %s.\n", err.Error()) } } @@ -501,7 +501,8 @@ func installDependenciesAndBuild() { srcdir := getSourceDir() - // we set `SEMMLE_PATH_TRANSFORMER` ourselves in some cases, so blank it out first for consistency + // we set `CODEQL_PATH_TRANSFORMER` ourselves in some cases, so blank it out first for consistency + os.Setenv("CODEQL_PATH_TRANSFORMER", "") os.Setenv("SEMMLE_PATH_TRANSFORMER", "") // determine how to install dependencies and whether a GOPATH needs to be set up before diff --git a/go/extractor/srcarchive/BUILD.bazel b/go/extractor/srcarchive/BUILD.bazel index e72e2e7ca08..6d8776abce7 100644 --- a/go/extractor/srcarchive/BUILD.bazel +++ b/go/extractor/srcarchive/BUILD.bazel @@ -10,6 +10,7 @@ go_library( ], importpath = "github.com/github/codeql-go/extractor/srcarchive", visibility = ["//visibility:public"], + deps = ["//go/extractor/util"], ) go_test( diff --git a/go/extractor/srcarchive/srcarchive.go b/go/extractor/srcarchive/srcarchive.go index ee9aea43064..eaaf867c607 100644 --- a/go/extractor/srcarchive/srcarchive.go +++ b/go/extractor/srcarchive/srcarchive.go @@ -7,12 +7,14 @@ import ( "os" "path/filepath" "strings" + + "github.com/github/codeql-go/extractor/util" ) var pathTransformer *ProjectLayout func init() { - pt := os.Getenv("SEMMLE_PATH_TRANSFORMER") + pt := util.Getenv("CODEQL_PATH_TRANSFORMER", "SEMMLE_PATH_TRANSFORMER") if pt != "" { ptf, err := os.Open(pt) if err != nil { @@ -69,7 +71,7 @@ func srcArchive() (string, error) { return srcArchive, nil } -// TransformPath applies the transformations specified by `SEMMLE_PATH_TRANSFORMER` (if any) to the +// TransformPath applies the transformations specified by `CODEQL_PATH_TRANSFORMER` (if any) to the // given path func TransformPath(path string) string { if pathTransformer != nil { From 604df2125dab03217e35fd5fbb6e87607eb08398 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Mon, 1 Sep 2025 16:15:58 +0100 Subject: [PATCH 593/965] Go: implement basic overlay extraction When in overlay mode, extractFile will exit early if the file isn't in the list of files that changed since the base was extracted. --- go/extractor/extractor.go | 51 ++++++++++++++++++++++++---------- go/extractor/util/BUILD.bazel | 1 + go/extractor/util/overlays.go | 52 +++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 14 deletions(-) create mode 100644 go/extractor/util/overlays.go diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 67c12737584..fa3f6b7c00d 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -311,6 +311,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) extraction.WaitGroup.Wait() + util.WriteOverlayBaseMetadata() + log.Println("Done extracting packages.") t := time.Now() @@ -323,16 +325,17 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) type Extraction struct { // A lock for preventing concurrent writes to maps and the stat trap writer, as they are not // thread-safe - Lock sync.Mutex - LabelKey string - Label trap.Label - StatWriter *trap.Writer - WaitGroup sync.WaitGroup - GoroutineSem *semaphore - FdSem *semaphore - NextFileId int - FileInfo map[string]*FileInfo - SeenGoMods map[string]bool + Lock sync.Mutex + LabelKey string + Label trap.Label + StatWriter *trap.Writer + WaitGroup sync.WaitGroup + GoroutineSem *semaphore + FdSem *semaphore + NextFileId int + FileInfo map[string]*FileInfo + SeenGoMods map[string]bool + OverlayChanges map[string]bool } type FileInfo struct { @@ -379,6 +382,21 @@ func NewExtraction(buildFlags []string, patterns []string) *Extraction { } sum := hash.Sum(nil) + overlayChangeList := util.GetOverlayChanges() + var overlayChanges map[string]bool + if overlayChangeList == nil { + overlayChanges = nil + } else { + overlayChanges = make(map[string]bool) + for _, changedFilePath := range overlayChangeList { + absPath, err := filepath.Abs(changedFilePath) + if err != nil { + log.Fatalf("Error resolving absolute path of overlay change %s: %s", changedFilePath, err.Error()) + } + overlayChanges[absPath] = true + } + } + i := 0 var path string // split compilation files into directories to avoid filling a single directory with too many files @@ -438,10 +456,11 @@ func NewExtraction(buildFlags []string, patterns []string) *Extraction { FdSem: newSemaphore(100), // this semaphore is used to limit the number of goroutines spawned, so we // don't run into memory issues - GoroutineSem: newSemaphore(MaxGoRoutines), - NextFileId: 0, - FileInfo: make(map[string]*FileInfo), - SeenGoMods: make(map[string]bool), + GoroutineSem: newSemaphore(MaxGoRoutines), + NextFileId: 0, + FileInfo: make(map[string]*FileInfo), + SeenGoMods: make(map[string]bool), + OverlayChanges: overlayChanges, } } @@ -720,6 +739,10 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) return nil } path := normalizedPath(ast, fset) + if extraction.OverlayChanges != nil && !extraction.OverlayChanges[path] { + // This file did not change since the base was extracted + return nil + } extraction.FdSem.acquire(3) diff --git a/go/extractor/util/BUILD.bazel b/go/extractor/util/BUILD.bazel index b8f005378aa..ee090607ced 100644 --- a/go/extractor/util/BUILD.bazel +++ b/go/extractor/util/BUILD.bazel @@ -7,6 +7,7 @@ go_library( srcs = [ "extractvendordirs.go", "logging.go", + "overlays.go", "registryproxy.go", "semver.go", "util.go", diff --git a/go/extractor/util/overlays.go b/go/extractor/util/overlays.go new file mode 100644 index 00000000000..07fad8b4d71 --- /dev/null +++ b/go/extractor/util/overlays.go @@ -0,0 +1,52 @@ +package util + +import ( + "encoding/json" + "log" + "os" +) + +// If the relevant environment variable is set, indicating that we are extracting an overlay +// database, GetOverlayChanges returns the list of relative paths of files that have changed (or +// been deleted). Otherwise, it returns `nil`. +func GetOverlayChanges() []string { + if overlayChangesJsonPath, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_CHANGES"); present { + log.Printf("Reading overlay changes from: %s", overlayChangesJsonPath) + + file, err := os.Open(overlayChangesJsonPath) + if err != nil { + log.Fatalf("Failed to open overlay changes JSON file: %s", err) + } + defer file.Close() + + var overlayData struct { + Changes []string `json:"changes"` + } + + decoder := json.NewDecoder(file) + if err := decoder.Decode(&overlayData); err != nil { + log.Fatalf("Failed to decode overlay changes JSON file: %s", err) + } + + return overlayData.Changes + } else { + return nil + } +} + +// WriteOverlayBaseMetadata creates an empty metadata file if we are extracting an overlay base; +// otherwise, it does nothing. +func WriteOverlayBaseMetadata() { + if metadataPath, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_BASE_METADATA_OUT"); present { + log.Printf("Writing overlay base metadata to: %s", metadataPath) + + // In principle, we could store some metadata here and read it back when extracting the + // overlay. For now, we don't need to store anything, but the CLI still requires us to write + // something, so just create an empty file. + file, err := os.Create(metadataPath) + if err != nil { + log.Fatalf("Failed to create overlay base metadata file: %s", err) + } + file.Close() + } +} From 99236f78776903f71ecaa1ebce356ee81c1e49b2 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Tue, 2 Sep 2025 16:59:30 +0100 Subject: [PATCH 594/965] Go: skip overlay extraction of unchanged go.mod files --- go/extractor/gomodextractor.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/go/extractor/gomodextractor.go b/go/extractor/gomodextractor.go index be52af59760..8dce96b6e6a 100644 --- a/go/extractor/gomodextractor.go +++ b/go/extractor/gomodextractor.go @@ -20,6 +20,11 @@ func (extraction *Extraction) extractGoMod(path string) error { path = normPath } + if extraction.OverlayChanges != nil && !extraction.OverlayChanges[path] { + // This go.mod did not change since the base was extracted + return nil + } + extraction.Lock.Lock() if extraction.SeenGoMods[path] { extraction.Lock.Unlock() From aff874e8352b27eaf6d569584fff04ac74429b74 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 3 Sep 2025 16:36:28 +0100 Subject: [PATCH 595/965] Go: merge with incoming path transformer when setting GOPATH --- go/extractor/cli/go-autobuilder/BUILD.bazel | 1 + .../cli/go-autobuilder/go-autobuilder.go | 23 ++++++-- go/extractor/srcarchive/projectlayout.go | 35 +++++++++--- go/extractor/srcarchive/projectlayout_test.go | 56 ++++++++++++++++--- go/extractor/srcarchive/srcarchive.go | 17 ++---- 5 files changed, 100 insertions(+), 32 deletions(-) diff --git a/go/extractor/cli/go-autobuilder/BUILD.bazel b/go/extractor/cli/go-autobuilder/BUILD.bazel index 0c705d5b194..003836b0874 100644 --- a/go/extractor/cli/go-autobuilder/BUILD.bazel +++ b/go/extractor/cli/go-autobuilder/BUILD.bazel @@ -12,6 +12,7 @@ go_library( "//go/extractor/autobuilder", "//go/extractor/diagnostics", "//go/extractor/project", + "//go/extractor/srcarchive", "//go/extractor/toolchain", "//go/extractor/util", ], diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index d9e294524e6..c22b356c4be 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -13,6 +13,7 @@ import ( "github.com/github/codeql-go/extractor/autobuilder" "github.com/github/codeql-go/extractor/diagnostics" "github.com/github/codeql-go/extractor/project" + "github.com/github/codeql-go/extractor/srcarchive" "github.com/github/codeql-go/extractor/toolchain" "github.com/github/codeql-go/extractor/util" ) @@ -283,7 +284,7 @@ func createPathTransformerFile(newdir string) *os.File { } // Writes the path transformer file -func writePathTransformerFile(pt *os.File, realSrc, root, newdir string) { +func writePathTransformerFile(pt *os.File, realSrc, newdir string) { _, err := pt.WriteString("#" + realSrc + "\n" + newdir + "//\n") if err != nil { log.Fatalf("Unable to write path transformer file: %s.", err.Error()) @@ -501,10 +502,6 @@ func installDependenciesAndBuild() { srcdir := getSourceDir() - // we set `CODEQL_PATH_TRANSFORMER` ourselves in some cases, so blank it out first for consistency - os.Setenv("CODEQL_PATH_TRANSFORMER", "") - os.Setenv("SEMMLE_PATH_TRANSFORMER", "") - // determine how to install dependencies and whether a GOPATH needs to be set up before // extraction workspaces := project.GetWorkspaceInfo(true) @@ -535,7 +532,21 @@ func installDependenciesAndBuild() { pt := createPathTransformerFile(paths.newdir) defer os.Remove(pt.Name()) - writePathTransformerFile(pt, paths.realSrc, paths.root, paths.newdir) + // We're about to create out own path transformer, so that paths containing the + // temporary GOPATH point to the right location. However, if there was already an + // incoming path transformer, the right location will be what _it_ wanted to transform + // paths to. + existingPathTransformer, err := srcarchive.LoadProjectLayoutFromEnv() + if err != nil { + log.Fatalf("Unable to load path transformer: %s.\n", err.Error()) + } + var realSrc string + if existingPathTransformer == nil { + realSrc = paths.realSrc + } else { + realSrc = existingPathTransformer.To + } + writePathTransformerFile(pt, realSrc, paths.newdir) setGopath(paths.root) } } diff --git a/go/extractor/srcarchive/projectlayout.go b/go/extractor/srcarchive/projectlayout.go index 6301755ef8a..0a628f38424 100644 --- a/go/extractor/srcarchive/projectlayout.go +++ b/go/extractor/srcarchive/projectlayout.go @@ -6,6 +6,8 @@ import ( "fmt" "os" "strings" + + "github.com/github/codeql-go/extractor/util" ) // ProjectLayout describes a very simple project layout rewriting paths starting @@ -16,7 +18,7 @@ import ( // # to // from// type ProjectLayout struct { - from, to string + From, To string } // normaliseSlashes adds an initial slash to `path` if there isn't one, and trims @@ -28,6 +30,25 @@ func normaliseSlashes(path string) string { return strings.TrimSuffix(path, "/") } +// LoadProjectLayoutFromEnv loads a project layout from the file referenced by the +// {CODEQL,SEMMLE}_PATH_TRANSFORMER environment variable. If neither env var is set, returns nil. If +// the file cannot be read or does not have the right format, it returns an error. +func LoadProjectLayoutFromEnv() (*ProjectLayout, error) { + pt := util.Getenv("CODEQL_PATH_TRANSFORMER", "SEMMLE_PATH_TRANSFORMER") + if pt == "" { + return nil, nil + } + ptf, err := os.Open(pt) + if err != nil { + return nil, err + } + projLayout, err := LoadProjectLayout(ptf) + if err != nil { + return nil, err + } + return projLayout, nil +} + // LoadProjectLayout loads a project layout from the given file, returning an error // if the file does not have the right format func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { @@ -41,7 +62,7 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { if !strings.HasPrefix(line, "#") { return nil, fmt.Errorf("first line of project layout should start with #, but got %s", line) } - res.to = normaliseSlashes(strings.TrimSpace(strings.TrimPrefix(line, "#"))) + res.To = normaliseSlashes(strings.TrimSpace(strings.TrimPrefix(line, "#"))) if !scanner.Scan() { return nil, errors.New("empty section in project-layout file") @@ -57,7 +78,7 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { if strings.HasPrefix(line, "-") || strings.Contains(line, "*") || strings.Contains(line, "//") { return nil, errors.New("unsupported project-layout feature") } - res.from = normaliseSlashes(line) + res.From = normaliseSlashes(line) for scanner.Scan() { if strings.TrimSpace(scanner.Text()) != "" { @@ -71,11 +92,11 @@ func LoadProjectLayout(file *os.File) (*ProjectLayout, error) { // transformString transforms `str` as specified by the project layout: if it starts with the `from` // prefix, that prefix is relaced by `to`; otherwise the string is returned unchanged func (p *ProjectLayout) transformString(str string) string { - if str == p.from { - return p.to + if str == p.From { + return p.To } - if strings.HasPrefix(str, p.from+"/") { - return p.to + "/" + str[len(p.from)+1:] + if strings.HasPrefix(str, p.From+"/") { + return p.To + "/" + str[len(p.From)+1:] } return str } diff --git a/go/extractor/srcarchive/projectlayout_test.go b/go/extractor/srcarchive/projectlayout_test.go index 8fb17607cae..507ee183d9a 100644 --- a/go/extractor/srcarchive/projectlayout_test.go +++ b/go/extractor/srcarchive/projectlayout_test.go @@ -28,6 +28,32 @@ func mkProjectLayout(projectLayoutSource string, t *testing.T) (*ProjectLayout, return LoadProjectLayout(pt) } +func mkProjectLayoutFromEnv(projectLayoutSource string, t *testing.T) (*ProjectLayout, error) { + pt, err := os.CreateTemp("", "path-transformer-from-env") + if err != nil { + t.Fatalf("Unable to create temporary file for project layout: %s", err.Error()) + } + defer os.Remove(pt.Name()) + _, err = pt.WriteString(projectLayoutSource) + if err != nil { + t.Fatalf("Unable to write to temporary file for project layout: %s", err.Error()) + } + err = pt.Close() + if err != nil { + t.Fatalf("Unable to close path transformer file: %s.", err.Error()) + } + + pt, err = os.Open(pt.Name()) + if err != nil { + t.Fatalf("Unable to open path transformer file: %s.", err.Error()) + } + + os.Setenv("CODEQL_PATH_TRANSFORMER", pt.Name()) + defer os.Unsetenv("CODEQL_PATH_TRANSFORMER") + + return LoadProjectLayoutFromEnv() +} + func testTransformation(projectLayout *ProjectLayout, t *testing.T, path string, expected string) { actual := projectLayout.Transform(path) if actual != expected { @@ -35,16 +61,12 @@ func testTransformation(projectLayout *ProjectLayout, t *testing.T, path string, } } -func TestValidProjectLayout(t *testing.T) { - p, err := mkProjectLayout(` +const validProjectLayoutSource = ` # /opt/src /opt/src/root/src/org/repo// -`, t) - - if err != nil { - t.Fatalf("Error loading project layout: %s", err.Error()) - } +` +func testTransformationsForValidProjectLayout(p *ProjectLayout, t *testing.T) { testTransformation(p, t, "/opt/src/root/src/org/repo", "/opt/src") testTransformation(p, t, "/opt/src/root/src/org/repo/", "/opt/src/") testTransformation(p, t, "/opt/src/root/src/org/repo/main.go", "/opt/src/main.go") @@ -53,6 +75,26 @@ func TestValidProjectLayout(t *testing.T) { testTransformation(p, t, "opt/src/root/src/org/repo", "opt/src/root/src/org/repo") } +func TestValidProjectLayout(t *testing.T) { + p, err := mkProjectLayout(validProjectLayoutSource, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformationsForValidProjectLayout(p, t) +} + +func TestValidProjectLayoutFromEnv(t *testing.T) { + p, err := mkProjectLayoutFromEnv(validProjectLayoutSource, t) + + if err != nil { + t.Fatalf("Error loading project layout: %s", err.Error()) + } + + testTransformationsForValidProjectLayout(p, t) +} + func TestWindowsPaths(t *testing.T) { p, err := mkProjectLayout(` # /c:/virtual diff --git a/go/extractor/srcarchive/srcarchive.go b/go/extractor/srcarchive/srcarchive.go index eaaf867c607..f871a2fbca2 100644 --- a/go/extractor/srcarchive/srcarchive.go +++ b/go/extractor/srcarchive/srcarchive.go @@ -7,23 +7,16 @@ import ( "os" "path/filepath" "strings" - - "github.com/github/codeql-go/extractor/util" ) var pathTransformer *ProjectLayout func init() { - pt := util.Getenv("CODEQL_PATH_TRANSFORMER", "SEMMLE_PATH_TRANSFORMER") - if pt != "" { - ptf, err := os.Open(pt) - if err != nil { - log.Fatalf("Unable to open path transformer %s: %s.\n", pt, err.Error()) - } - pathTransformer, err = LoadProjectLayout(ptf) - if err != nil { - log.Fatalf("Unable to initialize path transformer: %s.\n", err.Error()) - } + pt, err := LoadProjectLayoutFromEnv() + if err == nil { + pathTransformer = pt + } else { + log.Fatalf("Unable to load path transformer: %s.\n", err.Error()) } } From 4c009d5bc9bb2b0d41b389a7e8866adcc0e24ea6 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 5 Sep 2025 12:07:12 +0100 Subject: [PATCH 596/965] Go: implement overlay discarding for @locatable --- go/ql/lib/semmle/go/Locations.qll | 1 + go/ql/lib/semmle/go/Overlay.qll | 35 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 go/ql/lib/semmle/go/Overlay.qll diff --git a/go/ql/lib/semmle/go/Locations.qll b/go/ql/lib/semmle/go/Locations.qll index 817fea56f00..7503421c0ff 100644 --- a/go/ql/lib/semmle/go/Locations.qll +++ b/go/ql/lib/semmle/go/Locations.qll @@ -1,6 +1,7 @@ /** Provides classes for working with locations and program elements that have locations. */ import go +private import semmle.go.Overlay /** * A location as given by a file, a start line, a start column, diff --git a/go/ql/lib/semmle/go/Overlay.qll b/go/ql/lib/semmle/go/Overlay.qll new file mode 100644 index 00000000000..fa3719bd00c --- /dev/null +++ b/go/ql/lib/semmle/go/Overlay.qll @@ -0,0 +1,35 @@ +/** + * Defines entity discard predicates for Go overlay analysis. + */ +overlay[local] +module; + +/** + * A local predicate that always holds for the overlay variant and never holds for the base variant. + * This is used to define local predicates that behave differently for the base and overlay variant. + */ +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +/** Gets the file containing the given `locatable`. */ +private @file getFile(@locatable locatable) { + exists(@location_default location | has_location(locatable, location) | + locations_default(location, result, _, _, _, _) + ) +} + +/** Holds if the `locatable` is in the `file` and is part of the overlay base database. */ +private predicate discardableLocatable(@file file, @locatable locatable) { + not isOverlay() and + file = getFile(locatable) +} + +/** + * Holds if the given `locatable` should be discarded, because it is part of the overlay base and is + * in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardLocatable(@locatable locatable) { + exists(@file file, string path | files(file, path) | + discardableLocatable(file, locatable) and overlayChangedFiles(path) + ) +} From dd4f27868e7f5ba51d7b5694c93bf1962d8f9507 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Mon, 8 Sep 2025 14:32:53 +0100 Subject: [PATCH 597/965] Go: apply path transformer for file TRAP labels --- go/extractor/extractor.go | 4 ++-- go/extractor/trap/labels.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index fa3f6b7c00d..b4d4815f15c 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -814,12 +814,12 @@ func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string, isDu displayPath = rawPath } if i == len(components)-1 { - lbl := tw.Labeler.FileLabelFor(file) + lbl := tw.Labeler.FileLabelFor(path) dbscheme.FilesTable.Emit(tw, lbl, displayPath) dbscheme.ContainerParentTable.Emit(tw, parentLbl, lbl) dbscheme.HasLocationTable.Emit(tw, lbl, emitLocation(tw, lbl, 0, 0, 0, 0)) extraction.Lock.Lock() - slbl := extraction.StatWriter.Labeler.FileLabelFor(file) + slbl := extraction.StatWriter.Labeler.FileLabelFor(path) if !isDummy { dbscheme.CompilationCompilingFilesTable.Emit(extraction.StatWriter, extraction.Label, extraction.GetFileIdx(file), slbl) } diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 2822da61ff1..9a03bfe9a57 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -4,6 +4,7 @@ import ( "fmt" "go/types" + "github.com/github/codeql-go/extractor/srcarchive" "github.com/github/codeql-go/extractor/util" ) @@ -67,7 +68,7 @@ func (l *Labeler) GlobalID(key string) Label { // FileLabel returns the label for a file with path `path`. func (l *Labeler) FileLabel() Label { if l.fileLabel == InvalidLabel { - l.fileLabel = l.FileLabelFor(l.tw.path) + l.fileLabel = l.FileLabelFor(srcarchive.TransformPath(l.tw.path)) } return l.fileLabel } From 5aaed8941a80b74ac7939d4c40738c32948b5c49 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 19 Sep 2025 12:23:25 +0100 Subject: [PATCH 598/965] Go: pass source root from autobuilder to extractor This ensures the extractor can resolve the relative paths for files changed in the overlay. --- .../cli/go-autobuilder/go-autobuilder.go | 18 +++++++++++++-- go/extractor/cli/go-extractor/go-extractor.go | 21 ++++++++++++++---- go/extractor/extractor.go | 15 ++++--------- go/extractor/util/overlays.go | 22 +++++++++++++++++-- 4 files changed, 57 insertions(+), 19 deletions(-) diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index c22b356c4be..756bd19b45e 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -448,7 +448,7 @@ func installDependencies(workspace project.GoWorkspace) { } // Run the extractor. -func extract(workspace project.GoWorkspace) bool { +func extract(workspace project.GoWorkspace, sourceRoot string) bool { extractor, err := util.GetExtractorPath() if err != nil { log.Fatalf("Could not determine path of extractor: %v.\n", err) @@ -459,6 +459,12 @@ func extract(workspace project.GoWorkspace) bool { extractorArgs = append(extractorArgs, workspace.ModMode.ArgsForGoVersion(toolchain.GetEnvGoSemVer())...) } + if util.IsOverlayExtraction() { + // When we are extracting an overlay, pass the source root to the extractor so that it knows + // how to resolve the relative paths in the list of changed files. + extractorArgs = append(extractorArgs, "--source-root", sourceRoot) + } + if len(workspace.Modules) == 0 { // There may be no modules if we are using e.g. Dep or Glide extractorArgs = append(extractorArgs, "./...") @@ -587,6 +593,12 @@ func installDependenciesAndBuild() { buildWithCustomCommands(inst) } + // The autobuilder is invoked with its working directory set to the source directory. + sourceRoot, err := os.Getwd() + if err != nil { + log.Fatalf("Failed to get current working directory: %s\n", err.Error()) + } + // Attempt to extract all workspaces; we will tolerate individual extraction failures here for i, workspace := range workspaces { if workspace.ModMode == project.ModVendor { @@ -607,7 +619,7 @@ func installDependenciesAndBuild() { } } - workspaces[i].Extracted = extract(workspace) + workspaces[i].Extracted = extract(workspace, sourceRoot) if !workspaces[i].Extracted { unsuccessfulProjects = append(unsuccessfulProjects, workspace.BaseDir) @@ -632,6 +644,8 @@ func installDependenciesAndBuild() { } else { log.Printf("Success: extraction succeeded for all %d discovered project(s).\n", len(workspaces)) } + + util.WriteOverlayBaseMetadata() } func main() { diff --git a/go/extractor/cli/go-extractor/go-extractor.go b/go/extractor/cli/go-extractor/go-extractor.go index 72ab3291f3c..d394d5fde40 100644 --- a/go/extractor/cli/go-extractor/go-extractor.go +++ b/go/extractor/cli/go-extractor/go-extractor.go @@ -24,9 +24,10 @@ func usage() { // extractTests is set (a) if we were manually commanded to extract tests via the relevant // environment variable / extractor option, or (b) we're mimicking a `go test` command. -func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []string, bool) { +func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []string, bool, string) { i := 0 buildFlags := []string{} + var sourceRoot string for ; i < len(args) && strings.HasPrefix(args[i], "-"); i++ { if args[i] == "--" { i++ @@ -61,6 +62,18 @@ func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []strin } else { log.Fatalf("--mimic requires an argument, e.g. --mimic go") } + case "--source-root": + // The extractor can be called by the autobuilder with the working directory set to + // the directory containing the workspace we're extracting, and this may be a + // subdirectory of the actual source root. This argument lets us resolve paths that + // are relative to that source root, e.g. for the list of overlay changed files. + if i+1 < len(args) { + i++ + sourceRoot = args[i] + log.Printf("Source root is %s", sourceRoot) + } else { + log.Fatalf("--source-root requires an argument, e.g. --source-root /path/to/root") + } } } @@ -93,14 +106,14 @@ func parseFlags(args []string, mimic bool, extractTests bool) ([]string, []strin cpuprofile = os.Getenv("CODEQL_EXTRACTOR_GO_CPU_PROFILE") memprofile = os.Getenv("CODEQL_EXTRACTOR_GO_MEM_PROFILE") - return buildFlags, args[i:], extractTests + return buildFlags, args[i:], extractTests, sourceRoot } func main() { util.SetLogLevel() extractTestsDefault := os.Getenv("CODEQL_EXTRACTOR_GO_OPTION_EXTRACT_TESTS") == "true" - buildFlags, patterns, extractTests := parseFlags(os.Args[1:], false, extractTestsDefault) + buildFlags, patterns, extractTests, sourceRoot := parseFlags(os.Args[1:], false, extractTestsDefault) if cpuprofile != "" { f, err := os.Create(cpuprofile) @@ -120,7 +133,7 @@ func main() { } log.Printf("Build flags: '%s'; patterns: '%s'\n", strings.Join(buildFlags, " "), strings.Join(patterns, " ")) - err := extractor.ExtractWithFlags(buildFlags, patterns, extractTests) + err := extractor.ExtractWithFlags(buildFlags, patterns, extractTests, sourceRoot) if err != nil { errString := err.Error() if strings.Contains(errString, "unexpected directory layout:") { diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index b4d4815f15c..0ddd812cc7a 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -58,16 +58,11 @@ func init() { } } -// Extract extracts the packages specified by the given patterns -func Extract(patterns []string) error { - return ExtractWithFlags(nil, patterns, false) -} - // ExtractWithFlags extracts the packages specified by the given patterns and build flags -func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) error { +func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, sourceRoot string) error { startTime := time.Now() - extraction := NewExtraction(buildFlags, patterns) + extraction := NewExtraction(buildFlags, patterns, sourceRoot) defer extraction.StatWriter.Close() modEnabled := os.Getenv("GO111MODULE") != "off" @@ -311,8 +306,6 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool) extraction.WaitGroup.Wait() - util.WriteOverlayBaseMetadata() - log.Println("Done extracting packages.") t := time.Now() @@ -370,7 +363,7 @@ func (extraction *Extraction) GetNextErr(path string) int { return res } -func NewExtraction(buildFlags []string, patterns []string) *Extraction { +func NewExtraction(buildFlags []string, patterns []string, sourceRoot string) *Extraction { hash := md5.New() io.WriteString(hash, "go") for _, buildFlag := range buildFlags { @@ -382,7 +375,7 @@ func NewExtraction(buildFlags []string, patterns []string) *Extraction { } sum := hash.Sum(nil) - overlayChangeList := util.GetOverlayChanges() + overlayChangeList := util.GetOverlayChanges(sourceRoot) var overlayChanges map[string]bool if overlayChangeList == nil { overlayChanges = nil diff --git a/go/extractor/util/overlays.go b/go/extractor/util/overlays.go index 07fad8b4d71..6a5c3760549 100644 --- a/go/extractor/util/overlays.go +++ b/go/extractor/util/overlays.go @@ -4,12 +4,18 @@ import ( "encoding/json" "log" "os" + "path/filepath" ) +func IsOverlayExtraction() bool { + _, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_METADATA_IN") + return present +} + // If the relevant environment variable is set, indicating that we are extracting an overlay // database, GetOverlayChanges returns the list of relative paths of files that have changed (or // been deleted). Otherwise, it returns `nil`. -func GetOverlayChanges() []string { +func GetOverlayChanges(sourceRoot string) []string { if overlayChangesJsonPath, present := os.LookupEnv("CODEQL_EXTRACTOR_GO_OVERLAY_CHANGES"); present { log.Printf("Reading overlay changes from: %s", overlayChangesJsonPath) @@ -28,7 +34,19 @@ func GetOverlayChanges() []string { log.Fatalf("Failed to decode overlay changes JSON file: %s", err) } - return overlayData.Changes + absPaths := make([]string, 0, len(overlayData.Changes)) + if sourceRoot == "" { + // This shouldn't happen, because it implies the extractor was invoked in some way other + // than from the autobuilder. However, we'll only attempt to build an overlay if there + // exists an overlay _base_, and only the autobuilder writes the metadata file that + // ensures a database is created as an overlay-base. + log.Fatalf("Extractor is running in overlay mode, but --source-root was not provided") + } + for _, relPath := range overlayData.Changes { + absPaths = append(absPaths, filepath.Clean(sourceRoot+"/"+relPath)) + } + + return absPaths } else { return nil } From 50e01283da314a3726a16cf0fa7fe97e58606504 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 24 Sep 2025 16:38:13 +0100 Subject: [PATCH 599/965] Go: overlay workaround for cgo-processed files --- go/extractor/extractor.go | 9 +++++++-- go/ql/lib/semmle/go/Overlay.qll | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 0ddd812cc7a..5668d5894f8 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -732,8 +732,13 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) return nil } path := normalizedPath(ast, fset) - if extraction.OverlayChanges != nil && !extraction.OverlayChanges[path] { - // This file did not change since the base was extracted + // If we're extracting an overlay, we want to skip extraction of files that haven't changed. + // Since some files may be outside the source directory (e.g. files preprocessed by cgo) we + // can't easily know if they have changed (or came from source files that changed), so we always + // extract a file if it's not in the package directory. + if extraction.OverlayChanges != nil && + !extraction.OverlayChanges[path] && + strings.HasPrefix(path+string(filepath.Separator), pkg.Dir) { return nil } diff --git a/go/ql/lib/semmle/go/Overlay.qll b/go/ql/lib/semmle/go/Overlay.qll index fa3719bd00c..b7b1223878c 100644 --- a/go/ql/lib/semmle/go/Overlay.qll +++ b/go/ql/lib/semmle/go/Overlay.qll @@ -23,6 +23,23 @@ private predicate discardableLocatable(@file file, @locatable locatable) { file = getFile(locatable) } +/** + * Holds if the given `path` is for a file in the base database whose entities should be discarded. + */ +bindingset[path] +private predicate discardableFile(string path) { + isOverlay() and + ( + overlayChangedFiles(path) + or + // The extractor unconditionally extracts files outside of the source directory (these are + // typically cgo-processed source files), so all entities in such files should be discarded. + not exists(string srcLoc | sourceLocationPrefix(srcLoc) | + path.substring(0, srcLoc.length()) = srcLoc + ) + ) +} + /** * Holds if the given `locatable` should be discarded, because it is part of the overlay base and is * in a file that was also extracted as part of the overlay database. @@ -30,6 +47,6 @@ private predicate discardableLocatable(@file file, @locatable locatable) { overlay[discard_entity] private predicate discardLocatable(@locatable locatable) { exists(@file file, string path | files(file, path) | - discardableLocatable(file, locatable) and overlayChangedFiles(path) + discardableLocatable(file, locatable) and discardableFile(path) ) } From e4c9bb3c5c4c2efa3a92e0e6f7094457fd92dd40 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 5 Sep 2025 15:45:36 +0100 Subject: [PATCH 600/965] Go: enable overlay compilation --- go/ql/lib/qlpack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index f4f9d02faed..058e65978f2 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -14,3 +14,4 @@ dependencies: dataExtensions: - ext/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true From 10fa1d650df26c5927112502aae4e4e8d7c31080 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Thu, 23 Oct 2025 15:56:59 +0100 Subject: [PATCH 601/965] Go: be consistent in replacement of backslashes in file labels --- go/extractor/trap/labels.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 9a03bfe9a57..3fc02d066cf 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -3,6 +3,7 @@ package trap import ( "fmt" "go/types" + "path/filepath" "github.com/github/codeql-go/extractor/srcarchive" "github.com/github/codeql-go/extractor/util" @@ -75,7 +76,7 @@ func (l *Labeler) FileLabel() Label { // FileLabelFor returns the label for the file for which the trap writer `tw` is associated func (l *Labeler) FileLabelFor(path string) Label { - return l.GlobalID(util.EscapeTrapSpecialChars(path) + ";sourcefile") + return l.GlobalID(util.EscapeTrapSpecialChars(filepath.ToSlash(path)) + ";sourcefile") } // LocalID associates a label with the given AST node `nd` and returns it From 734cba7b9c8f48cf6fe346d3f16a12980dd26b8b Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 31 Oct 2025 17:09:31 +0000 Subject: [PATCH 602/965] Go: add discard predicates for XML entities This is adapted from the implementation for Java. Since the HTML/XML extractor is not (yet) incremental, it will extract files that were not in the diff. These discard predicates are intended to cope with that, while also being robust against a future version where the extractor *is* overlay-aware. --- go/ql/lib/semmle/go/Overlay.qll | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/go/ql/lib/semmle/go/Overlay.qll b/go/ql/lib/semmle/go/Overlay.qll index b7b1223878c..32c77c7e642 100644 --- a/go/ql/lib/semmle/go/Overlay.qll +++ b/go/ql/lib/semmle/go/Overlay.qll @@ -50,3 +50,40 @@ private predicate discardLocatable(@locatable locatable) { discardableLocatable(file, locatable) and discardableFile(path) ) } + +private @file getXmlFile(@xmllocatable locatable) { + exists(@location_default location | xmllocations(locatable, location) | + locations_default(location, result, _, _, _, _) + ) +} + +private @file getXmlFileInBase(@xmllocatable locatable) { + not isOverlay() and + result = getXmlFile(locatable) +} + +/** + * Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML + * extractor. + */ +private predicate overlayXmlExtracted(@file file) { + isOverlay() and + exists(@xmllocatable locatable | + not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable) + ) +} + +/** + * Holds if the given XML `locatable` should be discarded, because it is part of the overlay base + * and is in a file that was also extracted as part of the overlay database. + */ +overlay[discard_entity] +private predicate discardXmlLocatable(@xmllocatable locatable) { + exists(@file file | file = getXmlFileInBase(locatable) | + exists(string path | files(file, path) | overlayChangedFiles(path)) + or + // The HTML/XML extractor is currently not incremental and may extract more files than those + // included in overlayChangedFiles. + overlayXmlExtracted(file) + ) +} From 44654bdef624edbcbd8acb899e3e96d389b55d23 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 5 Nov 2025 12:29:31 +0000 Subject: [PATCH 603/965] Go: avoid overlay-discarding @file entities ...since they are shared between base and overlay --- go/ql/lib/semmle/go/Overlay.qll | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/go/ql/lib/semmle/go/Overlay.qll b/go/ql/lib/semmle/go/Overlay.qll index 32c77c7e642..97d7f788fdb 100644 --- a/go/ql/lib/semmle/go/Overlay.qll +++ b/go/ql/lib/semmle/go/Overlay.qll @@ -20,7 +20,9 @@ private @file getFile(@locatable locatable) { /** Holds if the `locatable` is in the `file` and is part of the overlay base database. */ private predicate discardableLocatable(@file file, @locatable locatable) { not isOverlay() and - file = getFile(locatable) + file = getFile(locatable) and + // Avoid discarding @file entities, since they are shared between base and overlay. + not locatable instanceof @file } /** From e32a5ca846e8fa979e6a2caaeb13bb413b8b199b Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 7 Nov 2025 16:51:30 +0000 Subject: [PATCH 604/965] Go: add some overlay-related logging --- go/extractor/extractor.go | 3 +++ go/extractor/srcarchive/srcarchive.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 5668d5894f8..09dd1b3f575 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -11,6 +11,7 @@ import ( "go/types" "io" "log" + "log/slog" "os" "path/filepath" "reflect" @@ -387,6 +388,7 @@ func NewExtraction(buildFlags []string, patterns []string, sourceRoot string) *E log.Fatalf("Error resolving absolute path of overlay change %s: %s", changedFilePath, err.Error()) } overlayChanges[absPath] = true + slog.Info("Overlay changed file", "path", absPath) } } @@ -739,6 +741,7 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) if extraction.OverlayChanges != nil && !extraction.OverlayChanges[path] && strings.HasPrefix(path+string(filepath.Separator), pkg.Dir) { + slog.Info("Skipping unchanged file in overlay extraction", "path", path) return nil } diff --git a/go/extractor/srcarchive/srcarchive.go b/go/extractor/srcarchive/srcarchive.go index f871a2fbca2..3f4c1d1a90d 100644 --- a/go/extractor/srcarchive/srcarchive.go +++ b/go/extractor/srcarchive/srcarchive.go @@ -4,6 +4,7 @@ import ( "errors" "io" "log" + "log/slog" "os" "path/filepath" "strings" @@ -15,6 +16,9 @@ func init() { pt, err := LoadProjectLayoutFromEnv() if err == nil { pathTransformer = pt + if pathTransformer != nil { + slog.Info("Loaded path transformer", "from", pathTransformer.From, "to", pathTransformer.To) + } } else { log.Fatalf("Unable to load path transformer: %s.\n", err.Error()) } From 61481b51e7bed367aca37893e4019f4d67343552 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 7 Nov 2025 16:52:56 +0000 Subject: [PATCH 605/965] Rust: Change note. --- rust/ql/src/change-notes/2025-11-07-example-queries.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-11-07-example-queries.md diff --git a/rust/ql/src/change-notes/2025-11-07-example-queries.md b/rust/ql/src/change-notes/2025-11-07-example-queries.md new file mode 100644 index 00000000000..9e11d4e0a93 --- /dev/null +++ b/rust/ql/src/change-notes/2025-11-07-example-queries.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added three example queries (`rust/examples/empty-if`, `rust/examples/simple-sql-injection` and `rust/examples/simple-constant-password`) to help developers learn to write CodeQL queries for Rust. From f163d015d58bb95b762629ec5b37010c588ea666 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 7 Nov 2025 17:27:25 +0000 Subject: [PATCH 606/965] C++: Clean up comments. --- .../lib/semmle/code/cpp/models/implementations/Strcat.qll | 4 ++-- .../lib/semmle/code/cpp/models/implementations/Strcpy.qll | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll index 051b887f4d1..5dc0bb20689 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll @@ -31,8 +31,8 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid "_mbsncat_l", // _mbsncat_l(dst, src, max_amount, locale) "_mbsnbcat", // _mbsnbcat(dest, src, count) "_mbsnbcat_l", // _mbsnbcat_l(dest, src, count, locale) - "__builtin___strcat_chk", // __builtin___strcat_chk (dest, src, magic); - "__builtin___strncat_chk" // __builtin___strncat_chk (dest, src, max_amount, magic); + "__builtin___strcat_chk", // __builtin___strcat_chk (dest, src, magic) + "__builtin___strncat_chk" // __builtin___strncat_chk (dest, src, max_amount, magic) ]) } diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index 87606ba7b65..d96a0d677bc 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -37,10 +37,10 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid "stpcpy", // stpcpy(dest, src) "stpncpy", // stpncpy(dest, src, max_amount) "strlcpy", // strlcpy(dst, src, dst_size) - "__builtin___strcpy_chk", // __builtin___strcpy_chk (dest, src, magic); - "__builtin___stpcpy_chk", // __builtin___stpcpy_chk (dest, src, magic); + "__builtin___strcpy_chk", // __builtin___strcpy_chk (dest, src, magic) + "__builtin___stpcpy_chk", // __builtin___stpcpy_chk (dest, src, magic) "__builtin___stpncpy_chk", // __builtin___stpncpy_chk(dest, src, max_amount, magic) - "__builtin___strncpy_chk" // __builtin___strncpy_chk (dest, src, max_amount, magic); + "__builtin___strncpy_chk" // __builtin___strncpy_chk (dest, src, max_amount, magic) ]) or ( From 6ce8f072905ce93b9852a8f8b2ed0e837538b5b0 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 7 Nov 2025 17:28:28 +0000 Subject: [PATCH 607/965] Revert "Release preparation for version 2.23.4" --- actions/ql/lib/CHANGELOG.md | 4 --- .../ql/lib/change-notes/released/0.4.20.md | 3 -- actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 --- .../ql/src/change-notes/released/0.6.12.md | 3 -- actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 6 ---- .../2025-10-16-range-analysis-performance.md | 4 +++ cpp/ql/lib/change-notes/released/6.0.1.md | 5 --- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 --- cpp/ql/src/change-notes/released/1.5.3.md | 3 -- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 --- .../lib/change-notes/released/1.7.51.md | 3 -- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 --- .../src/change-notes/released/1.7.51.md | 3 -- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 35 ++++++------------- .../5.3.0.md => 2025-10-03-nullness.md} | 16 ++------- .../2025-10-10-starid-locations.md | 4 +++ .../2025-10-21-dotnet-rc2-tracing.md | 4 +++ .../2025-10-31-deprecate-abstractvalue.md | 4 +++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 10 ++---- ...d => 2025-10-17-location-in-web-config.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/1.0.34.md | 3 -- .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 --- go/ql/lib/change-notes/released/5.0.1.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/1.4.8.md | 3 -- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 --- java/ql/lib/change-notes/released/7.7.3.md | 3 -- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 13 ------- .../change-notes/2025-06-22-query-escaping.md | 4 +++ .../2025-06-22-query-not-thread-safe.md | 4 +++ .../2025-06-22-query-safe-publication.md | 4 +++ .../2025-10-02-http-only-cookie-promote.md | 4 +++ ...10-24-request-forgery-matches-sanitizer.md | 4 +++ java/ql/src/change-notes/released/1.9.0.md | 12 ------- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 --- .../ql/lib/change-notes/released/2.6.14.md | 3 -- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 --- .../ql/src/change-notes/released/2.1.3.md | 3 -- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ---- ...hon-overlay-compilation-plus-extractor.md} | 6 ++-- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ---- ...1.6.8.md => 2025-09-19-insecure-cookie.md} | 9 +++-- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 --- ruby/ql/lib/change-notes/released/5.1.2.md | 3 -- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 --- ruby/ql/src/change-notes/released/1.4.8.md | 3 -- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 13 ------- .../2025-09-29-actix-web-model.md | 4 +++ .../2025-10-06-call-resolution.md | 4 +++ rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 +++ rust/ql/lib/change-notes/2025-10-15-models.md | 4 +++ .../2025-10-16-new-extracted-file-methods.md | 4 +++ rust/ql/lib/change-notes/released/0.1.19.md | 12 ------- rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ---- ...2025-10-21-database-quality-diagnostic.md} | 7 ++-- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 --- .../concepts/change-notes/released/0.0.8.md | 3 -- shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 --- .../change-notes/released/2.0.18.md | 3 -- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 --- .../dataflow/change-notes/released/2.0.18.md | 3 -- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 --- shared/mad/change-notes/released/1.0.34.md | 3 -- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 --- .../quantum/change-notes/released/0.0.12.md | 3 -- shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 --- shared/regex/change-notes/released/1.0.34.md | 3 -- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 --- shared/ssa/change-notes/released/2.0.10.md | 3 -- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 --- .../tutorial/change-notes/released/1.0.34.md | 3 -- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 --- .../typeflow/change-notes/released/1.0.34.md | 3 -- shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 --- .../change-notes/released/0.0.15.md | 3 -- shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 --- .../change-notes/released/2.0.18.md | 3 -- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 --- shared/typos/change-notes/released/1.0.34.md | 3 -- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 --- shared/util/change-notes/released/2.0.21.md | 3 -- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 --- shared/xml/change-notes/released/1.0.34.md | 3 -- shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 --- shared/yaml/change-notes/released/1.0.34.md | 3 -- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 19 ---------- .../2025-10-22-swift-6.2-class-changes.md | 6 ++++ .../lib/change-notes/2025-10-22-swift-6.2.md | 5 +++ .../change-notes/2025-10-31-swift-6.2-ast.md | 6 ++++ swift/ql/lib/change-notes/released/6.0.0.md | 18 ---------- 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/1.2.8.md | 3 -- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 181 files changed, 183 insertions(+), 484 deletions(-) delete mode 100644 actions/ql/lib/change-notes/released/0.4.20.md delete mode 100644 actions/ql/src/change-notes/released/0.6.12.md create mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md delete mode 100644 cpp/ql/lib/change-notes/released/6.0.1.md delete mode 100644 cpp/ql/src/change-notes/released/1.5.3.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md rename csharp/ql/lib/change-notes/{released/5.3.0.md => 2025-10-03-nullness.md} (55%) create mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md create mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md create mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md rename csharp/ql/src/change-notes/{released/1.4.3.md => 2025-10-17-location-in-web-config.md} (73%) delete mode 100644 go/ql/consistency-queries/change-notes/released/1.0.34.md delete mode 100644 go/ql/lib/change-notes/released/5.0.1.md delete mode 100644 go/ql/src/change-notes/released/1.4.8.md delete mode 100644 java/ql/lib/change-notes/released/7.7.3.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md create mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md create mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md delete mode 100644 java/ql/src/change-notes/released/1.9.0.md delete mode 100644 javascript/ql/lib/change-notes/released/2.6.14.md delete mode 100644 javascript/ql/src/change-notes/released/2.1.3.md delete mode 100644 misc/suite-helpers/change-notes/released/1.0.34.md rename python/ql/lib/change-notes/{released/4.1.0.md => 2025-10-02-python-overlay-compilation-plus-extractor.md} (81%) rename python/ql/src/change-notes/{released/1.6.8.md => 2025-09-19-insecure-cookie.md} (78%) delete mode 100644 ruby/ql/lib/change-notes/released/5.1.2.md delete mode 100644 ruby/ql/src/change-notes/released/1.4.8.md create mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md create mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md create mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md create mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md create mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md delete mode 100644 rust/ql/lib/change-notes/released/0.1.19.md rename rust/ql/src/change-notes/{released/0.1.19.md => 2025-10-21-database-quality-diagnostic.md} (79%) delete mode 100644 shared/concepts/change-notes/released/0.0.8.md delete mode 100644 shared/controlflow/change-notes/released/2.0.18.md delete mode 100644 shared/dataflow/change-notes/released/2.0.18.md delete mode 100644 shared/mad/change-notes/released/1.0.34.md delete mode 100644 shared/quantum/change-notes/released/0.0.12.md delete mode 100644 shared/rangeanalysis/change-notes/released/1.0.34.md delete mode 100644 shared/regex/change-notes/released/1.0.34.md delete mode 100644 shared/ssa/change-notes/released/2.0.10.md delete mode 100644 shared/threat-models/change-notes/released/1.0.34.md delete mode 100644 shared/tutorial/change-notes/released/1.0.34.md delete mode 100644 shared/typeflow/change-notes/released/1.0.34.md delete mode 100644 shared/typeinference/change-notes/released/0.0.15.md delete mode 100644 shared/typetracking/change-notes/released/2.0.18.md delete mode 100644 shared/typos/change-notes/released/1.0.34.md delete mode 100644 shared/util/change-notes/released/2.0.21.md delete mode 100644 shared/xml/change-notes/released/1.0.34.md delete mode 100644 shared/yaml/change-notes/released/1.0.34.md create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md create mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md delete mode 100644 swift/ql/lib/change-notes/released/6.0.0.md delete mode 100644 swift/ql/src/change-notes/released/1.2.8.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index ffe1cba8281..3de5d186721 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.4.20 - -No user-facing changes. - ## 0.4.19 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.20.md b/actions/ql/lib/change-notes/released/0.4.20.md deleted file mode 100644 index 874725a8c2d..00000000000 --- a/actions/ql/lib/change-notes/released/0.4.20.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.4.20 - -No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index 380b2d09423..abf63707906 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.20 +lastReleaseVersion: 0.4.19 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182b..6423894239d 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.20-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index c7253227b7c..4592fbb66da 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.6.12 - -No user-facing changes. - ## 0.6.11 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.12.md b/actions/ql/src/change-notes/released/0.6.12.md deleted file mode 100644 index da7e7709ef7..00000000000 --- a/actions/ql/src/change-notes/released/0.6.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.6.12 - -No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 28c22ccab7c..b73e74898d0 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.12 +lastReleaseVersion: 0.6.11 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a9172..553e579ceac 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.12-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 390e3d4653b..093b31078e0 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 6.0.1 - -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. - ## 6.0.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md new file mode 100644 index 00000000000..f24ab4b87fe --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md deleted file mode 100644 index 7e8cfdb2562..00000000000 --- a/cpp/ql/lib/change-notes/released/6.0.1.md +++ /dev/null @@ -1,5 +0,0 @@ -## 6.0.1 - -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index d1f3c68c812..f8c4fa43ccb 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.1 +lastReleaseVersion: 6.0.0 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da..8712e400897 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 880cab8a58d..4b876310708 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.5.3 - -No user-facing changes. - ## 1.5.2 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.3.md b/cpp/ql/src/change-notes/released/1.5.3.md deleted file mode 100644 index 2e9bcb5e663..00000000000 --- a/cpp/ql/src/change-notes/released/1.5.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.5.3 - -No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 232224b0e26..7eb901bae56 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.3 +lastReleaseVersion: 1.5.2 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549..71aa95bed9e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.3-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index a25c349e35e..7b4887608d9 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.51 - -No user-facing changes. - ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md deleted file mode 100644 index ec2d4e2bdcc..00000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.51 - -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 26376c0cebb..dab079d6644 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.51 +lastReleaseVersion: 1.7.50 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7..a569cf6a5c4 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.51 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index a25c349e35e..7b4887608d9 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.51 - -No user-facing changes. - ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md deleted file mode 100644 index ec2d4e2bdcc..00000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.51 - -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 26376c0cebb..dab079d6644 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.51 +lastReleaseVersion: 1.7.50 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72..d91f21b0e90 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.51 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 20b1c03d722..a722d924f3b 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,18 +1,3 @@ -## 5.3.0 - -### Deprecated APIs - -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. - -### Major Analysis Improvements - -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. - -### Minor Analysis Improvements - -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. - ## 5.2.6 ### Minor Analysis Improvements @@ -143,7 +128,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +148,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +186,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +436,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +571,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +611,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +630,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +677,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/lib/change-notes/released/5.3.0.md b/csharp/ql/lib/change-notes/2025-10-03-nullness.md similarity index 55% rename from csharp/ql/lib/change-notes/released/5.3.0.md rename to csharp/ql/lib/change-notes/2025-10-03-nullness.md index 144f8bf2633..0d44c1e98c1 100644 --- a/csharp/ql/lib/change-notes/released/5.3.0.md +++ b/csharp/ql/lib/change-notes/2025-10-03-nullness.md @@ -1,14 +1,4 @@ -## 5.3.0 - -### Deprecated APIs - -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. - -### Major Analysis Improvements - +--- +category: majorAnalysis +--- * The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. - -### Minor Analysis Improvements - -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md new file mode 100644 index 00000000000..a258abcf3ab --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md new file mode 100644 index 00000000000..b54f1e7d1b5 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md new file mode 100644 index 00000000000..65bb9032b12 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index b0a1c83e5bc..1ac2b5309f2 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.3.0 +lastReleaseVersion: 5.2.6 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4e..92a08088be7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.2.7-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 8993b453543..40ea9e3693a 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 1.4.3 - -### Minor Analysis Improvements - -* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. - ## 1.4.2 No user-facing changes. @@ -170,7 +164,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +278,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 diff --git a/csharp/ql/src/change-notes/released/1.4.3.md b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md similarity index 73% rename from csharp/ql/src/change-notes/released/1.4.3.md rename to csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md index 1a022f2462d..5df97b9d28a 100644 --- a/csharp/ql/src/change-notes/released/1.4.3.md +++ b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md @@ -1,5 +1,4 @@ -## 1.4.3 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 08f88b689fb..a76cacdf799 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.3 +lastReleaseVersion: 1.4.2 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899e..a9776d058b9 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.3-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 870695d684c..102463df544 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.34.md b/go/ql/consistency-queries/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/go/ql/consistency-queries/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -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 b736654032c..914c722b5d9 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc..e44457e4570 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: 1.0.34 +version: 1.0.34-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e2d2a71f6bd..71d6bfdc60f 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 5.0.1 - -No user-facing changes. - ## 5.0.0 ### Breaking Changes diff --git a/go/ql/lib/change-notes/released/5.0.1.md b/go/ql/lib/change-notes/released/5.0.1.md deleted file mode 100644 index b99e1ae0268..00000000000 --- a/go/ql/lib/change-notes/released/5.0.1.md +++ /dev/null @@ -1,3 +0,0 @@ -## 5.0.1 - -No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index ae7df5e18b7..c9e54136ca5 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.1 +lastReleaseVersion: 5.0.0 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e..bf2586d9089 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.1-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 786164b5fe4..eb370a8cddd 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.4.8 - -No user-facing changes. - ## 1.4.7 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.8.md b/go/ql/src/change-notes/released/1.4.8.md deleted file mode 100644 index 06976d05e75..00000000000 --- a/go/ql/src/change-notes/released/1.4.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.4.8 - -No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 16e6425ae7e..163362bd632 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.4.7 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e375703..3133d392d89 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.8-dev groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index e261dbee59e..5d6fcbde336 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 7.7.3 - -No user-facing changes. - ## 7.7.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/7.7.3.md b/java/ql/lib/change-notes/released/7.7.3.md deleted file mode 100644 index d03e3181a52..00000000000 --- a/java/ql/lib/change-notes/released/7.7.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 7.7.3 - -No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 6856106e771..25c09b25d21 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.3 +lastReleaseVersion: 7.7.2 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed..7f8860bc632 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.3-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ed02fdc5bb2..06133dffeba 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,16 +1,3 @@ -## 1.9.0 - -### New Queries - -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. - -### Minor Analysis Improvements - -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. - ## 1.8.2 No user-facing changes. diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md new file mode 100644 index 00000000000..f33de2e8556 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-escaping.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md new file mode 100644 index 00000000000..d5dd0744609 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md new file mode 100644 index 00000000000..23b64c970b3 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md new file mode 100644 index 00000000000..ee9fe7527bd --- /dev/null +++ b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md new file mode 100644 index 00000000000..a38c43dd730 --- /dev/null +++ b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.9.0.md b/java/ql/src/change-notes/released/1.9.0.md deleted file mode 100644 index 82977276fe2..00000000000 --- a/java/ql/src/change-notes/released/1.9.0.md +++ /dev/null @@ -1,12 +0,0 @@ -## 1.9.0 - -### New Queries - -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. - -### Minor Analysis Improvements - -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index df17dc3a366..559af8348bb 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.9.0 +lastReleaseVersion: 1.8.2 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67d..faf088b7a4a 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.8.3-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 9f27fdae99c..1e874227c37 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.6.14 - -No user-facing changes. - ## 2.6.13 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.14.md b/javascript/ql/lib/change-notes/released/2.6.14.md deleted file mode 100644 index 49a00b95efc..00000000000 --- a/javascript/ql/lib/change-notes/released/2.6.14.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.6.14 - -No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 022aeff4e02..9240f755da8 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.14 +lastReleaseVersion: 2.6.13 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216..d8d53ef1c7e 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.14-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 4a453506818..f03b3a66e4d 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.1.3 - -No user-facing changes. - ## 2.1.2 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.1.3.md b/javascript/ql/src/change-notes/released/2.1.3.md deleted file mode 100644 index a1338012fcd..00000000000 --- a/javascript/ql/src/change-notes/released/2.1.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.1.3 - -No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 345fb0c73a4..1a4e53e8772 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.3 +lastReleaseVersion: 2.1.2 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71..df854af7e2b 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.3-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 203d289a673..a6f9fcd2377 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.34.md b/misc/suite-helpers/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/misc/suite-helpers/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d..daf9a60662d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.34-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index df8a66ca0e6..cb18c48a051 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 4.1.0 - -### New Features - -* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. - ## 4.0.17 ### Bug Fixes diff --git a/python/ql/lib/change-notes/released/4.1.0.md b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md similarity index 81% rename from python/ql/lib/change-notes/released/4.1.0.md rename to python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md index 51c7ea24f1b..5eb698354c1 100644 --- a/python/ql/lib/change-notes/released/4.1.0.md +++ b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md @@ -1,5 +1,5 @@ -## 4.1.0 - -### New Features +--- +category: feature +--- * Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d5b1bf88d10..d1339a1f762 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.0 +lastReleaseVersion: 4.0.17 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fba..34d03dc0fad 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.0.18-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 65fd05e047b..aef1a87136d 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 1.6.8 - -### Minor Analysis Improvements - -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. - ## 1.6.7 No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.6.8.md b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md similarity index 78% rename from python/ql/src/change-notes/released/1.6.8.md rename to python/ql/src/change-notes/2025-09-19-insecure-cookie.md index d1b510e542a..51c6dc6ce30 100644 --- a/python/ql/src/change-notes/released/1.6.8.md +++ b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md @@ -1,5 +1,4 @@ -## 1.6.8 - -### Minor Analysis Improvements - -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. +--- +category: minorAnalysis +--- +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index fbc11aa62b7..0b49adeac7d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.8 +lastReleaseVersion: 1.6.7 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2..d01829a9de2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.8-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a99e4017789..32e1dd3538b 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 5.1.2 - -No user-facing changes. - ## 5.1.1 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.2.md b/ruby/ql/lib/change-notes/released/5.1.2.md deleted file mode 100644 index 86e21502e26..00000000000 --- a/ruby/ql/lib/change-notes/released/5.1.2.md +++ /dev/null @@ -1,3 +0,0 @@ -## 5.1.2 - -No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index d21c12fbe7f..dcb83eca6a3 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.2 +lastReleaseVersion: 5.1.1 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f0..77d07910f48 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.2-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 282fd284635..29a0f89236d 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.4.8 - -No user-facing changes. - ## 1.4.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.8.md b/ruby/ql/src/change-notes/released/1.4.8.md deleted file mode 100644 index 06976d05e75..00000000000 --- a/ruby/ql/src/change-notes/released/1.4.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.4.8 - -No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 16e6425ae7e..163362bd632 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.4.7 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522..b35ffb5c411 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.8-dev groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 7e8575b03be..228d9c21637 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,16 +1,3 @@ -## 0.1.19 - -### Major Analysis Improvements - -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. -* Added basic models for the `actix-web` web framework. - -### Minor Analysis Improvements - -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. -* Generalized some existing models to improve data flow. -* Added models for the `mysql` and `mysql_async` libraries. - ## 0.1.18 ### New Features diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md new file mode 100644 index 00000000000..7bf9ce8a7d5 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added basic models for the `actix-web` web framework. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md new file mode 100644 index 00000000000..ffaf449bb8a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md new file mode 100644 index 00000000000..037f813a856 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-10-mysql.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md new file mode 100644 index 00000000000..fab2cab639a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-15-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Generalized some existing models to improve data flow. diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md new file mode 100644 index 00000000000..63fbbe38899 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/change-notes/released/0.1.19.md b/rust/ql/lib/change-notes/released/0.1.19.md deleted file mode 100644 index b75ad4257c5..00000000000 --- a/rust/ql/lib/change-notes/released/0.1.19.md +++ /dev/null @@ -1,12 +0,0 @@ -## 0.1.19 - -### Major Analysis Improvements - -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. -* Added basic models for the `actix-web` web framework. - -### Minor Analysis Improvements - -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. -* Generalized some existing models to improve data flow. -* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index de6e4c49068..a9893ce82c4 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.18 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c421..b5dea62349a 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.19-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 2b0c54fc057..df1c4e49856 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.1.19 - -### Minor Analysis Improvements - -* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. - ## 0.1.18 ### New Queries diff --git a/rust/ql/src/change-notes/released/0.1.19.md b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md similarity index 79% rename from rust/ql/src/change-notes/released/0.1.19.md rename to rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md index 67ccce578c8..322bdb7c5ab 100644 --- a/rust/ql/src/change-notes/released/0.1.19.md +++ b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md @@ -1,5 +1,4 @@ -## 0.1.19 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index de6e4c49068..a9893ce82c4 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.18 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a02..e72c44676d5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.19-dev groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index 4d0898b90e4..f7d8dfad907 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.8 - -No user-facing changes. - ## 0.0.7 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.8.md b/shared/concepts/change-notes/released/0.0.8.md deleted file mode 100644 index 6af2d954c09..00000000000 --- a/shared/concepts/change-notes/released/0.0.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.8 - -No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index 58fdc6b45de..a2a5484910b 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.7 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e7..c765cb33734 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index c5b9b9d696a..cb14761bb38 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.18.md b/shared/controlflow/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/controlflow/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42b..c4f39f17484 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index f963117ea88..99ee484c731 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.18.md b/shared/dataflow/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/dataflow/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0..afe273133cb 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index b0b444f8c41..eda9cf4ddb2 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.34.md b/shared/mad/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/mad/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c..a132a76336b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 83a42fb0551..d9dd6b6f2e2 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.12 - -No user-facing changes. - ## 0.0.11 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.12.md b/shared/quantum/change-notes/released/0.0.12.md deleted file mode 100644 index 0e206033bc4..00000000000 --- a/shared/quantum/change-notes/released/0.0.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.12 - -No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 997fb8da83c..e679dc42092 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.11 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a8630..201689efa51 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.12-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 640d26270e1..7a0776cf53c 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.34.md b/shared/rangeanalysis/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/rangeanalysis/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e3..90efb8ebbf3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 1e3fb3c306c..2507f237ec0 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.34.md b/shared/regex/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/regex/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d3..2019d2dcb2e 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 2d8087cd96c..cb33a2dd613 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.10 - -No user-facing changes. - ## 2.0.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.10.md b/shared/ssa/change-notes/released/2.0.10.md deleted file mode 100644 index 37310f107aa..00000000000 --- a/shared/ssa/change-notes/released/2.0.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.10 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 96ea0220a69..ce305265e33 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.10 +lastReleaseVersion: 2.0.9 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a1..f1aa89319bd 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 870695d684c..102463df544 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.34.md b/shared/threat-models/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/threat-models/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a..69963387a05 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.34-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 23fd78f42e5..e982f144f9c 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.34.md b/shared/tutorial/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/tutorial/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a5984..efe3820754f 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: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index d95faf69864..32d26faa9f4 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.34.md b/shared/typeflow/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/typeflow/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff6..70066fa9bd8 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 4f4b3189bb4..ad4781e2cbd 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.15 - -No user-facing changes. - ## 0.0.14 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.15.md b/shared/typeinference/change-notes/released/0.0.15.md deleted file mode 100644 index 7af9c05f23f..00000000000 --- a/shared/typeinference/change-notes/released/0.0.15.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.15 - -No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index dff35216fc6..ca29e45d0a6 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.15 +lastReleaseVersion: 0.0.14 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9..ae0880ec7ea 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.15-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 4edafe87290..a536c707303 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.18.md b/shared/typetracking/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/typetracking/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8..9a68b0ae750 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 9fbdb39d493..979e0c24d1e 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.34.md b/shared/typos/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/typos/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19..71a4826016e 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 88679dd6846..0f0cdcc36ca 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.21 - -No user-facing changes. - ## 2.0.20 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.21.md b/shared/util/change-notes/released/2.0.21.md deleted file mode 100644 index bdc5029b70b..00000000000 --- a/shared/util/change-notes/released/2.0.21.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.21 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a572e88bffd..cde101f3516 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.21 +lastReleaseVersion: 2.0.20 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b78..69e188136fa 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.21-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index ff67592d22b..f0d7c829bfb 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.34.md b/shared/xml/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/xml/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa76..25135f830c6 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index fb623a1f26c..2ca0a52f636 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.34.md b/shared/yaml/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/yaml/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b8269..4ba9cb06c57 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b1b958708e0..4b8852b6711 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,22 +1,3 @@ -## 6.0.0 - -### Breaking Changes - -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. - -### New Features - -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. - -### Major Analysis Improvements - -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. - ## 5.0.9 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md new file mode 100644 index 00000000000..114f91eed8c --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md @@ -0,0 +1,6 @@ +--- +category: breaking +--- +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md new file mode 100644 index 00000000000..97f3e45d6f8 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md new file mode 100644 index 00000000000..f227bc71c65 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md @@ -0,0 +1,6 @@ +--- +category: feature +--- +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/swift/ql/lib/change-notes/released/6.0.0.md b/swift/ql/lib/change-notes/released/6.0.0.md deleted file mode 100644 index 8fe348b6db5..00000000000 --- a/swift/ql/lib/change-notes/released/6.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ -## 6.0.0 - -### Breaking Changes - -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. - -### New Features - -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. - -### Major Analysis Improvements - -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..2b650f0b340 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 5.0.9 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198..18bddfe30bb 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 5.0.10-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 99b5491b9db..f3fe65f7bd8 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.2.8 - -No user-facing changes. - ## 1.2.7 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.8.md b/swift/ql/src/change-notes/released/1.2.8.md deleted file mode 100644 index 533ed7761e4..00000000000 --- a/swift/ql/src/change-notes/released/1.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.2.8 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index a49a92ee5ab..950e0645d4a 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.8 +lastReleaseVersion: 1.2.7 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec49400609..9e050de61b9 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.8-dev groups: - swift - queries From 56b9566299e65e388a5d1d17040d40ccc538a47f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 7 Nov 2025 17:29:48 +0000 Subject: [PATCH 608/965] C++: Fix mistakes in models of internal strcat and strcpy functions. --- .../lib/semmle/code/cpp/models/implementations/Strcat.qll | 6 +----- .../lib/semmle/code/cpp/models/implementations/Strcpy.qll | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll index 5dc0bb20689..df16d220e02 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcat.qll @@ -58,11 +58,7 @@ class StrcatFunction extends TaintFunction, DataFlowFunction, ArrayFunction, Sid override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { ( - this.getName() = - [ - "strncat", "wcsncat", "_mbsncat", "_mbsncat_l", "__builtin___strncat_chk", - "__builtin___strcat_chk" - ] and + this.getName() = ["strncat", "wcsncat", "_mbsncat", "_mbsncat_l", "__builtin___strncat_chk"] and input.isParameter(2) or this.getName() = ["_mbsncat_l", "_mbsnbcat_l"] and diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index d96a0d677bc..b3230a5a1c8 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -73,11 +73,7 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid if this.isSVariant() then result = 1 else ( - this.getName() - .matches([ - "%ncpy%", "%nbcpy%", "%xfrm%", "strlcpy", "__builtin___strcpy_chk", - "__builtin___stpcpy_chk", "__builtin___stpncpy_chk", "__builtin___strncpy_chk" - ]) and + this.getName().matches(["%ncpy%", "%nbcpy%", "%xfrm%", "strlcpy"]) and result = 2 ) } From 6342da9503dcad5edf0a05ba162f6c8871a933b3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 7 Nov 2025 17:37:29 +0000 Subject: [PATCH 609/965] Release preparation for version 2.23.4 --- actions/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/0.4.20.md | 3 +++ actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/0.6.12.md | 3 +++ actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../2025-10-16-range-analysis-performance.md | 4 ---- cpp/ql/lib/change-notes/released/6.0.1.md | 5 +++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 ++++ cpp/ql/src/change-notes/released/1.5.3.md | 3 +++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../lib/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 15 +++++++++++++++ .../2025-10-10-starid-locations.md | 4 ---- .../2025-10-21-dotnet-rc2-tracing.md | 4 ---- .../2025-10-31-deprecate-abstractvalue.md | 4 ---- .../5.3.0.md} | 16 +++++++++++++--- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../1.4.3.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/1.0.34.md | 3 +++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/5.0.1.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/1.4.8.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 ++++ java/ql/lib/change-notes/released/7.7.3.md | 3 +++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 13 +++++++++++++ .../change-notes/2025-06-22-query-escaping.md | 4 ---- .../2025-06-22-query-not-thread-safe.md | 4 ---- .../2025-06-22-query-safe-publication.md | 4 ---- .../2025-10-02-http-only-cookie-promote.md | 4 ---- ...10-24-request-forgery-matches-sanitizer.md | 4 ---- java/ql/src/change-notes/released/1.9.0.md | 12 ++++++++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/2.6.14.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/2.1.3.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ++++++ .../4.1.0.md} | 6 +++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../1.6.8.md} | 9 +++++---- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 ++++ ruby/ql/lib/change-notes/released/5.1.2.md | 3 +++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/1.4.8.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 13 +++++++++++++ .../2025-09-29-actix-web-model.md | 4 ---- .../2025-10-06-call-resolution.md | 4 ---- rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 ---- rust/ql/lib/change-notes/2025-10-15-models.md | 4 ---- .../2025-10-16-new-extracted-file-methods.md | 4 ---- rust/ql/lib/change-notes/released/0.1.19.md | 12 ++++++++++++ rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ++++++ .../0.1.19.md} | 7 ++++--- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 ++++ .../concepts/change-notes/released/0.0.8.md | 3 +++ shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ .../dataflow/change-notes/released/2.0.18.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/1.0.34.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 ++++ .../quantum/change-notes/released/0.0.12.md | 3 +++ shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/1.0.34.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/2.0.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ .../tutorial/change-notes/released/1.0.34.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 ++++ .../typeflow/change-notes/released/1.0.34.md | 3 +++ shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.15.md | 3 +++ shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/1.0.34.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/2.0.21.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 ++++ shared/xml/change-notes/released/1.0.34.md | 3 +++ shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/1.0.34.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 19 +++++++++++++++++++ .../2025-10-22-swift-6.2-class-changes.md | 6 ------ .../lib/change-notes/2025-10-22-swift-6.2.md | 5 ----- .../change-notes/2025-10-31-swift-6.2-ast.md | 6 ------ swift/ql/lib/change-notes/released/6.0.0.md | 18 ++++++++++++++++++ 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/1.2.8.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 181 files changed, 472 insertions(+), 171 deletions(-) create mode 100644 actions/ql/lib/change-notes/released/0.4.20.md create mode 100644 actions/ql/src/change-notes/released/0.6.12.md delete mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md create mode 100644 cpp/ql/lib/change-notes/released/6.0.1.md create mode 100644 cpp/ql/src/change-notes/released/1.5.3.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md rename csharp/ql/lib/change-notes/{2025-10-03-nullness.md => released/5.3.0.md} (55%) rename csharp/ql/src/change-notes/{2025-10-17-location-in-web-config.md => released/1.4.3.md} (73%) create mode 100644 go/ql/consistency-queries/change-notes/released/1.0.34.md create mode 100644 go/ql/lib/change-notes/released/5.0.1.md create mode 100644 go/ql/src/change-notes/released/1.4.8.md create mode 100644 java/ql/lib/change-notes/released/7.7.3.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md delete mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md delete mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md create mode 100644 java/ql/src/change-notes/released/1.9.0.md create mode 100644 javascript/ql/lib/change-notes/released/2.6.14.md create mode 100644 javascript/ql/src/change-notes/released/2.1.3.md create mode 100644 misc/suite-helpers/change-notes/released/1.0.34.md rename python/ql/lib/change-notes/{2025-10-02-python-overlay-compilation-plus-extractor.md => released/4.1.0.md} (81%) rename python/ql/src/change-notes/{2025-09-19-insecure-cookie.md => released/1.6.8.md} (78%) create mode 100644 ruby/ql/lib/change-notes/released/5.1.2.md create mode 100644 ruby/ql/src/change-notes/released/1.4.8.md delete mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md delete mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md delete mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md delete mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md delete mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md create mode 100644 rust/ql/lib/change-notes/released/0.1.19.md rename rust/ql/src/change-notes/{2025-10-21-database-quality-diagnostic.md => released/0.1.19.md} (79%) create mode 100644 shared/concepts/change-notes/released/0.0.8.md create mode 100644 shared/controlflow/change-notes/released/2.0.18.md create mode 100644 shared/dataflow/change-notes/released/2.0.18.md create mode 100644 shared/mad/change-notes/released/1.0.34.md create mode 100644 shared/quantum/change-notes/released/0.0.12.md create mode 100644 shared/rangeanalysis/change-notes/released/1.0.34.md create mode 100644 shared/regex/change-notes/released/1.0.34.md create mode 100644 shared/ssa/change-notes/released/2.0.10.md create mode 100644 shared/threat-models/change-notes/released/1.0.34.md create mode 100644 shared/tutorial/change-notes/released/1.0.34.md create mode 100644 shared/typeflow/change-notes/released/1.0.34.md create mode 100644 shared/typeinference/change-notes/released/0.0.15.md create mode 100644 shared/typetracking/change-notes/released/2.0.18.md create mode 100644 shared/typos/change-notes/released/1.0.34.md create mode 100644 shared/util/change-notes/released/2.0.21.md create mode 100644 shared/xml/change-notes/released/1.0.34.md create mode 100644 shared/yaml/change-notes/released/1.0.34.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md delete mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md create mode 100644 swift/ql/lib/change-notes/released/6.0.0.md create mode 100644 swift/ql/src/change-notes/released/1.2.8.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index 3de5d186721..ffe1cba8281 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.20 + +No user-facing changes. + ## 0.4.19 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.20.md b/actions/ql/lib/change-notes/released/0.4.20.md new file mode 100644 index 00000000000..874725a8c2d --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.20.md @@ -0,0 +1,3 @@ +## 0.4.20 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index abf63707906..380b2d09423 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.19 +lastReleaseVersion: 0.4.20 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 6423894239d..3217afc182b 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20-dev +version: 0.4.20 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 4592fbb66da..c7253227b7c 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.12 + +No user-facing changes. + ## 0.6.11 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.12.md b/actions/ql/src/change-notes/released/0.6.12.md new file mode 100644 index 00000000000..da7e7709ef7 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.12.md @@ -0,0 +1,3 @@ +## 0.6.12 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index b73e74898d0..28c22ccab7c 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.11 +lastReleaseVersion: 0.6.12 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 553e579ceac..7c14b3a9172 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12-dev +version: 0.6.12 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 093b31078e0..390e3d4653b 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + ## 6.0.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md deleted file mode 100644 index f24ab4b87fe..00000000000 --- a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md new file mode 100644 index 00000000000..7e8cfdb2562 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.0.1.md @@ -0,0 +1,5 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..d1f3c68c812 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 6.0.1 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8712e400897..9ce21e2a8da 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1-dev +version: 6.0.1 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 4b876310708..880cab8a58d 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.3 + +No user-facing changes. + ## 1.5.2 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.3.md b/cpp/ql/src/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 7eb901bae56..232224b0e26 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.5.3 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 71aa95bed9e..178947f2549 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3-dev +version: 1.5.3 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index a569cf6a5c4..649b7e60de7 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index d91f21b0e90..b3977a0ef72 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index a722d924f3b..e7c0ac3cc88 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,18 @@ +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + ## 5.2.6 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md deleted file mode 100644 index a258abcf3ab..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md deleted file mode 100644 index b54f1e7d1b5..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md deleted file mode 100644 index 65bb9032b12..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: deprecated ---- -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/change-notes/2025-10-03-nullness.md b/csharp/ql/lib/change-notes/released/5.3.0.md similarity index 55% rename from csharp/ql/lib/change-notes/2025-10-03-nullness.md rename to csharp/ql/lib/change-notes/released/5.3.0.md index 0d44c1e98c1..144f8bf2633 100644 --- a/csharp/ql/lib/change-notes/2025-10-03-nullness.md +++ b/csharp/ql/lib/change-notes/released/5.3.0.md @@ -1,4 +1,14 @@ ---- -category: majorAnalysis ---- +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + * The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 1ac2b5309f2..b0a1c83e5bc 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.2.6 +lastReleaseVersion: 5.3.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 92a08088be7..7d6d2e1ed4e 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.2.7-dev +version: 5.3.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 40ea9e3693a..edbfcdc3969 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.4.3 + +### Minor Analysis Improvements + +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. + ## 1.4.2 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/released/1.4.3.md similarity index 73% rename from csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md rename to csharp/ql/src/change-notes/released/1.4.3.md index 5df97b9d28a..1a022f2462d 100644 --- a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md +++ b/csharp/ql/src/change-notes/released/1.4.3.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.4.3 + +### Minor Analysis Improvements + * the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index a76cacdf799..08f88b689fb 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.2 +lastReleaseVersion: 1.4.3 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a9776d058b9..4305c1d899e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3-dev +version: 1.4.3 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.34.md b/go/ql/consistency-queries/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +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 914c722b5d9..b736654032c 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index e44457e4570..f8a661692dc 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: 1.0.34-dev +version: 1.0.34 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 71d6bfdc60f..e2d2a71f6bd 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.1 + +No user-facing changes. + ## 5.0.0 ### Breaking Changes diff --git a/go/ql/lib/change-notes/released/5.0.1.md b/go/ql/lib/change-notes/released/5.0.1.md new file mode 100644 index 00000000000..b99e1ae0268 --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.1.md @@ -0,0 +1,3 @@ +## 5.0.1 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index c9e54136ca5..ae7df5e18b7 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.0 +lastReleaseVersion: 5.0.1 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index bf2586d9089..fba4fc5f83e 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1-dev +version: 5.0.1 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index eb370a8cddd..786164b5fe4 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.8.md b/go/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 3133d392d89..4a68e375703 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8-dev +version: 1.4.8 groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 5d6fcbde336..e261dbee59e 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.7.3 + +No user-facing changes. + ## 7.7.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/7.7.3.md b/java/ql/lib/change-notes/released/7.7.3.md new file mode 100644 index 00000000000..d03e3181a52 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.3.md @@ -0,0 +1,3 @@ +## 7.7.3 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 25c09b25d21..6856106e771 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.2 +lastReleaseVersion: 7.7.3 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 7f8860bc632..b1c5cbb54ed 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3-dev +version: 7.7.3 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 06133dffeba..ed02fdc5bb2 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,16 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. + ## 1.8.2 No user-facing changes. diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md deleted file mode 100644 index f33de2e8556..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-escaping.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md deleted file mode 100644 index d5dd0744609..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md deleted file mode 100644 index 23b64c970b3..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md deleted file mode 100644 index ee9fe7527bd..00000000000 --- a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md deleted file mode 100644 index a38c43dd730..00000000000 --- a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.9.0.md b/java/ql/src/change-notes/released/1.9.0.md new file mode 100644 index 00000000000..82977276fe2 --- /dev/null +++ b/java/ql/src/change-notes/released/1.9.0.md @@ -0,0 +1,12 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 559af8348bb..df17dc3a366 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.2 +lastReleaseVersion: 1.9.0 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index faf088b7a4a..198798cf67d 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.8.3-dev +version: 1.9.0 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 1e874227c37..9f27fdae99c 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.6.14 + +No user-facing changes. + ## 2.6.13 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.14.md b/javascript/ql/lib/change-notes/released/2.6.14.md new file mode 100644 index 00000000000..49a00b95efc --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.14.md @@ -0,0 +1,3 @@ +## 2.6.14 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 9240f755da8..022aeff4e02 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.13 +lastReleaseVersion: 2.6.14 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index d8d53ef1c7e..46e5661f216 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14-dev +version: 2.6.14 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index f03b3a66e4d..4a453506818 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.3 + +No user-facing changes. + ## 2.1.2 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.1.3.md b/javascript/ql/src/change-notes/released/2.1.3.md new file mode 100644 index 00000000000..a1338012fcd --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.1.3.md @@ -0,0 +1,3 @@ +## 2.1.3 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1a4e53e8772..345fb0c73a4 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.2 +lastReleaseVersion: 2.1.3 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index df854af7e2b..8a50977ba71 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3-dev +version: 2.1.3 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index a6f9fcd2377..203d289a673 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.34.md b/misc/suite-helpers/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index daf9a60662d..5aad5f4b49d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34-dev +version: 1.0.34 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index cb18c48a051..df8a66ca0e6 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.1.0 + +### New Features + +* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. + ## 4.0.17 ### Bug Fixes diff --git a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md b/python/ql/lib/change-notes/released/4.1.0.md similarity index 81% rename from python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md rename to python/ql/lib/change-notes/released/4.1.0.md index 5eb698354c1..51c7ea24f1b 100644 --- a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md +++ b/python/ql/lib/change-notes/released/4.1.0.md @@ -1,5 +1,5 @@ ---- -category: feature ---- +## 4.1.0 + +### New Features * Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d1339a1f762..d5b1bf88d10 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.17 +lastReleaseVersion: 4.1.0 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 34d03dc0fad..88b85332fba 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.18-dev +version: 4.1.0 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index aef1a87136d..65fd05e047b 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + ## 1.6.7 No user-facing changes. diff --git a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md b/python/ql/src/change-notes/released/1.6.8.md similarity index 78% rename from python/ql/src/change-notes/2025-09-19-insecure-cookie.md rename to python/ql/src/change-notes/released/1.6.8.md index 51c6dc6ce30..d1b510e542a 100644 --- a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md +++ b/python/ql/src/change-notes/released/1.6.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 0b49adeac7d..fbc11aa62b7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.7 +lastReleaseVersion: 1.6.8 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d01829a9de2..dd29d5c31a2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8-dev +version: 1.6.8 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 32e1dd3538b..a99e4017789 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.2 + +No user-facing changes. + ## 5.1.1 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.2.md b/ruby/ql/lib/change-notes/released/5.1.2.md new file mode 100644 index 00000000000..86e21502e26 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.2.md @@ -0,0 +1,3 @@ +## 5.1.2 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index dcb83eca6a3..d21c12fbe7f 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.1 +lastReleaseVersion: 5.1.2 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 77d07910f48..eec414da0f0 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2-dev +version: 5.1.2 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 29a0f89236d..282fd284635 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.8.md b/ruby/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index b35ffb5c411..aaac6c00522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8-dev +version: 1.4.8 groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 228d9c21637..7e8575b03be 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,16 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. + ## 0.1.18 ### New Features diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md deleted file mode 100644 index 7bf9ce8a7d5..00000000000 --- a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added basic models for the `actix-web` web framework. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md deleted file mode 100644 index ffaf449bb8a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md deleted file mode 100644 index 037f813a856..00000000000 --- a/rust/ql/lib/change-notes/2025-10-10-mysql.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md deleted file mode 100644 index fab2cab639a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-15-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Generalized some existing models to improve data flow. diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md deleted file mode 100644 index 63fbbe38899..00000000000 --- a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/change-notes/released/0.1.19.md b/rust/ql/lib/change-notes/released/0.1.19.md new file mode 100644 index 00000000000..b75ad4257c5 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.19.md @@ -0,0 +1,12 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b5dea62349a..b46b494c421 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19-dev +version: 0.1.19 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index df1c4e49856..2b0c54fc057 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.19 + +### Minor Analysis Improvements + +* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + ## 0.1.18 ### New Queries diff --git a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md b/rust/ql/src/change-notes/released/0.1.19.md similarity index 79% rename from rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md rename to rust/ql/src/change-notes/released/0.1.19.md index 322bdb7c5ab..67ccce578c8 100644 --- a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md +++ b/rust/ql/src/change-notes/released/0.1.19.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.19 + +### Minor Analysis Improvements + * The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index e72c44676d5..da14aa08a02 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19-dev +version: 0.1.19 groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index f7d8dfad907..4d0898b90e4 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.8 + +No user-facing changes. + ## 0.0.7 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.8.md b/shared/concepts/change-notes/released/0.0.8.md new file mode 100644 index 00000000000..6af2d954c09 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.8.md @@ -0,0 +1,3 @@ +## 0.0.8 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index a2a5484910b..58fdc6b45de 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.8 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index c765cb33734..a9fd8ce78e7 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8-dev +version: 0.0.8 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index cb14761bb38..c5b9b9d696a 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.18.md b/shared/controlflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index c4f39f17484..565ff51c42b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 99ee484c731..f963117ea88 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.18.md b/shared/dataflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index afe273133cb..75920f8f5a0 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index eda9cf4ddb2..b0b444f8c41 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.34.md b/shared/mad/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index a132a76336b..290eedf639c 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index d9dd6b6f2e2..83a42fb0551 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.12.md b/shared/quantum/change-notes/released/0.0.12.md new file mode 100644 index 00000000000..0e206033bc4 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index e679dc42092..997fb8da83c 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 201689efa51..8aaa96a8630 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12-dev +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7a0776cf53c..640d26270e1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.34.md b/shared/rangeanalysis/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 90efb8ebbf3..2769814d3e3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 2507f237ec0..1e3fb3c306c 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.34.md b/shared/regex/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 2019d2dcb2e..f06235bc4d3 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index cb33a2dd613..2d8087cd96c 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.10.md b/shared/ssa/change-notes/released/2.0.10.md new file mode 100644 index 00000000000..37310f107aa --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index ce305265e33..96ea0220a69 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f1aa89319bd..dcf19c605a1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10-dev +version: 2.0.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.34.md b/shared/threat-models/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 69963387a05..48d215a1d9a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34-dev +version: 1.0.34 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index e982f144f9c..23fd78f42e5 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.34.md b/shared/tutorial/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index efe3820754f..51e6e2a5984 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: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index 32d26faa9f4..d95faf69864 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.34.md b/shared/typeflow/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 70066fa9bd8..6c01f40eff6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index ad4781e2cbd..4f4b3189bb4 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.15 + +No user-facing changes. + ## 0.0.14 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.15.md b/shared/typeinference/change-notes/released/0.0.15.md new file mode 100644 index 00000000000..7af9c05f23f --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.15.md @@ -0,0 +1,3 @@ +## 0.0.15 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index ca29e45d0a6..dff35216fc6 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.14 +lastReleaseVersion: 0.0.15 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index ae0880ec7ea..b09de2187e9 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15-dev +version: 0.0.15 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index a536c707303..4edafe87290 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.18.md b/shared/typetracking/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 9a68b0ae750..14ca67d8ba8 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 979e0c24d1e..9fbdb39d493 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.34.md b/shared/typos/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 71a4826016e..5675b883f19 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 0f0cdcc36ca..88679dd6846 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.21 + +No user-facing changes. + ## 2.0.20 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.21.md b/shared/util/change-notes/released/2.0.21.md new file mode 100644 index 00000000000..bdc5029b70b --- /dev/null +++ b/shared/util/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index cde101f3516..a572e88bffd 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.20 +lastReleaseVersion: 2.0.21 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 69e188136fa..155a5b33b78 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21-dev +version: 2.0.21 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index f0d7c829bfb..ff67592d22b 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.34.md b/shared/xml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 25135f830c6..2bdbef9aa76 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 2ca0a52f636..fb623a1f26c 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.34.md b/shared/yaml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4ba9cb06c57..7dcc28b8269 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 4b8852b6711..b1b958708e0 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,22 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + ## 5.0.9 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md deleted file mode 100644 index 114f91eed8c..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: breaking ---- -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md deleted file mode 100644 index 97f3e45d6f8..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: majorAnalysis ---- -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md deleted file mode 100644 index f227bc71c65..00000000000 --- a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: feature ---- -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/swift/ql/lib/change-notes/released/6.0.0.md b/swift/ql/lib/change-notes/released/6.0.0.md new file mode 100644 index 00000000000..8fe348b6db5 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.0.0.md @@ -0,0 +1,18 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 2b650f0b340..f8c4fa43ccb 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.9 +lastReleaseVersion: 6.0.0 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 18bddfe30bb..2f395ceb198 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.10-dev +version: 6.0.0 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index f3fe65f7bd8..99b5491b9db 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.8 + +No user-facing changes. + ## 1.2.7 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.8.md b/swift/ql/src/change-notes/released/1.2.8.md new file mode 100644 index 00000000000..533ed7761e4 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.8.md @@ -0,0 +1,3 @@ +## 1.2.8 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 950e0645d4a..a49a92ee5ab 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.7 +lastReleaseVersion: 1.2.8 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 9e050de61b9..bec49400609 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8-dev +version: 1.2.8 groups: - swift - queries From 6a2debba961bef9da44f1dbfe49aeb88eecf0a73 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 7 Nov 2025 17:38:18 +0000 Subject: [PATCH 610/965] C++: Fix bad magic. --- cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 536e1750fd2..d5287494df9 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -703,6 +703,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesLt( Cpp::Expr left, Cpp::Expr right, int k, boolean isLessThan, boolean testIsTrue ) { @@ -713,6 +714,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesLt(Cpp::Expr e, int k, boolean isLessThan, GuardValue value) { exists(GuardValue partValue, GuardCondition part | this.(Cpp::BinaryLogicalOperation) @@ -738,6 +740,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesEq( Cpp::Expr left, Cpp::Expr right, int k, boolean areEqual, boolean testIsTrue ) { @@ -757,6 +760,7 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl ) } + pragma[nomagic] override predicate comparesEq(Cpp::Expr e, int k, boolean areEqual, GuardValue value) { exists(GuardValue partValue, GuardCondition part | this.(Cpp::BinaryLogicalOperation) From 262bfe035102ecd3b4aa7eb0747c06f4f4cab89a Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Mon, 3 Nov 2025 15:03:46 +0000 Subject: [PATCH 611/965] C#: Minor changelog improvements --- csharp/ql/lib/CHANGELOG.md | 22 +++++++++++----------- csharp/ql/src/CHANGELOG.md | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index e7c0ac3cc88..20b1c03d722 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -6,7 +6,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements @@ -143,7 +143,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +163,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +201,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +451,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +586,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +626,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +645,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +692,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index edbfcdc3969..8993b453543 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -2,7 +2,7 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. ## 1.4.2 @@ -170,7 +170,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +284,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 From 0cbc9358de6893f2099bca7958de3dad21851a6e Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 7 Nov 2025 17:09:02 +0000 Subject: [PATCH 612/965] Revert C++ range analysis change note --- cpp/ql/lib/CHANGELOG.md | 24 +++++++++++------------ cpp/ql/lib/change-notes/released/6.0.1.md | 4 +--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 390e3d4653b..0f158cd3fb5 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,8 +1,6 @@ ## 6.0.1 -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. +No user-facing changes. ## 6.0.0 @@ -261,8 +259,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. * Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. * Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. @@ -296,7 +294,7 @@ No user-facing changes. * A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide. * An `isExplicit` predicate was added to the `Function` class that determines whether the function was declared as explicit. * A `getExplicitExpr` predicate was added to the `Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. -* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. +* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. ### Minor Analysis Improvements @@ -374,9 +372,9 @@ No user-facing changes. ### New Features * Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. * Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. @@ -492,7 +490,7 @@ No user-facing changes. * Functions that do not return due to calling functions that don't return (e.g. `exit`) are now detected as non-returning in the IR and dataflow. * Treat functions that reach the end of the function as returning in the IR. - They used to be treated as unreachable but it is allowed in C. + They used to be treated as unreachable but it is allowed in C. * The `DataFlow::asDefiningArgument` predicate now takes its argument from the range starting at `1` instead of `2`. Queries that depend on the single-parameter version of `DataFlow::asDefiningArgument` should have their arguments updated accordingly. ## 0.9.3 @@ -541,7 +539,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -735,7 +733,7 @@ No user-facing changes. ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -752,7 +750,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -851,7 +849,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md index 7e8cfdb2562..35b17912c81 100644 --- a/cpp/ql/lib/change-notes/released/6.0.1.md +++ b/cpp/ql/lib/change-notes/released/6.0.1.md @@ -1,5 +1,3 @@ ## 6.0.1 -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. +No user-facing changes. From 10ae374a820e70e78fbc9475cc03b04e634a3604 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 7 Nov 2025 18:18:09 +0000 Subject: [PATCH 613/965] Post-release preparation for codeql-cli-2.23.4 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 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/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 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/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/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182b..295d925c318 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.21-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a9172..b612696b816 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.13-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da..8b211353323 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.2-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549..39cdb717ca7 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.4-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7..7877ad717e2 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72..6427ecbb935 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4e..a19e72b95ec 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.3.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899e..2597e99f55b 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.4-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc..be82fc786d2 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: 1.0.34 +version: 1.0.35-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e..f4f9d02faed 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.2-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e375703..4a0baaa7836 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.9-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed..bcfc194a4cb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67d..98f0bdd5710 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.9.1-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216..bd19febdfaa 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.15-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71..93dd9cf7ae7 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.4-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d..e3283b5dc3f 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.35-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fba..bb28a8f6315 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.1.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2..7280bbcb67c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f0..3a400018dec 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.3-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522..37c9e4be522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.9-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c421..3c045cd83e5 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.20-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a02..a26c9d35de5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.20-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e7..f76c1f2ae45 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42b..fdf7de8e6a7 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0..7f969fdef42 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c..13a5b8507b3 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a8630..0cc0fbad906 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e3..24b697d1f49 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d3..f66b9d743f6 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a1..0aada9508ee 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a..4bb9cb4cb5f 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.35-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a5984..fa53c0be99f 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: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff6..94cae6f26a6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9..00008849702 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.16-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8..0c588182911 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19..b876c84bbe3 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b78..4d4b671071e 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.22-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa76..40a7eadd828 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b8269..a1af32ac079 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198..ba8c8aac044 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 6.0.1-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec49400609..d5a55b365f1 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.9-dev groups: - swift - queries From a922d5099f517e1014a4a73ab59484d19668d8e9 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Sat, 8 Nov 2025 16:28:05 +0000 Subject: [PATCH 614/965] C++: Factor out some conjuncts from 'interpretElement0' and into a new predicate. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 101 ++++++++++-------- 1 file changed, 55 insertions(+), 46 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index b279c4965f3..508e5325d85 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -789,6 +789,32 @@ private string getSignatureParameterName(string signature, string type, string n ) } +/** + * Gets a `Function` identified by the `(namespace, type, name)` components. + * + * If `subtypes` is `true` then the result may be an override of the function + * identified by the components. + */ +bindingset[type, name] +private Function getFunction(string namespace, string type, boolean subtypes, string name) { + funcHasQualifiedName(result, namespace, name) and + subtypes = false and + type = "" + or + exists(Class namedClass, Class classWithMethod | + hasClassAndName(classWithMethod, result, name) and + classHasQualifiedName(namedClass, namespace, type) + | + // member declared in the named type or a subtype of it + subtypes = true and + classWithMethod = namedClass.getADerivedClass*() + or + // member declared directly in the named type + subtypes = false and + classWithMethod = namedClass + ) +} + /** * Holds if the suffix containing the entries in `signature` starting at entry * `i` matches the suffix containing the parameters of `func` starting at entry `i`. @@ -953,7 +979,7 @@ private predicate funcHasQualifiedName(Function func, string namespace, string n * Holds if `namedClass` is in namespace `namespace` and has * name `type` (excluding any template parameters). */ -bindingset[type, namespace] +bindingset[type] pragma[inline_late] private predicate classHasQualifiedName(Class namedClass, string namespace, string type) { exists(string typeWithoutArgs | @@ -976,10 +1002,9 @@ pragma[nomagic] private Element interpretElement0( string namespace, string type, boolean subtypes, string name, string signature ) { + result = getFunction(namespace, type, subtypes, name) and ( // Non-member functions - funcHasQualifiedName(result, namespace, name) and - subtypes = false and type = "" and ( elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) @@ -989,52 +1014,36 @@ private Element interpretElement0( ) or // Member functions - exists(Class namedClass, Class classWithMethod | - hasClassAndName(classWithMethod, result, name) and - classHasQualifiedName(namedClass, namespace, type) - | - ( - elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) - or - signature = "" and - elementSpec(namespace, type, subtypes, name, "", _) - ) and - ( - // member declared in the named type or a subtype of it - subtypes = true and - classWithMethod = namedClass.getADerivedClass*() - or - // member declared directly in the named type - subtypes = false and - classWithMethod = namedClass - ) - ) + elementSpecMatchesSignature(result, namespace, type, subtypes, name, signature) or - elementSpec(namespace, type, subtypes, name, signature, _) and - // Member variables signature = "" and - exists(Class namedClass, Class classWithMember, MemberVariable member | - member.getName() = name and - member = classWithMember.getAMember() and - namedClass.hasQualifiedName(namespace, type) and - result = member - | - // field declared in the named type or a subtype of it (or an extension of any) - subtypes = true and - classWithMember = namedClass.getADerivedClass*() - or - // field declared directly in the named type (or an extension of it) - subtypes = false and - classWithMember = namedClass - ) - or - // Global or namespace variables - elementSpec(namespace, type, subtypes, name, signature, _) and - signature = "" and - type = "" and - subtypes = false and - result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name)) + elementSpec(namespace, type, subtypes, name, signature, _) ) + or + // Member variables + elementSpec(namespace, type, subtypes, name, signature, _) and + signature = "" and + exists(Class namedClass, Class classWithMember, MemberVariable member | + member.getName() = name and + member = classWithMember.getAMember() and + namedClass.hasQualifiedName(namespace, type) and + result = member + | + // field declared in the named type or a subtype of it (or an extension of any) + subtypes = true and + classWithMember = namedClass.getADerivedClass*() + or + // field declared directly in the named type (or an extension of it) + subtypes = false and + classWithMember = namedClass + ) + or + // Global or namespace variables + elementSpec(namespace, type, subtypes, name, signature, _) and + signature = "" and + type = "" and + subtypes = false and + result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name)) } cached From bfe2b7dc4489566ea49537354995fa89dc55e590 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Sat, 8 Nov 2025 16:28:34 +0000 Subject: [PATCH 615/965] C++: Use the new predicate to remove a cartesian-like join. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 1 + .../taint-tests/test_mad-signatures.expected | 19495 ---------------- 2 files changed, 1 insertion(+), 19495 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 508e5325d85..1fe132c2784 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -839,6 +839,7 @@ private Function getFunction(string namespace, string type, boolean subtypes, st * in `name`. */ private predicate signatureMatches(Function func, string signature, string type, string name, int i) { + func = getFunction(_, type, _, name) and exists(string s | s = getSignatureParameterName(signature, type, name, i) and s = getParameterTypeName(func, i) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index bc20cc9b30e..142bb14366f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -1,19638 +1,143 @@ signatureMatches -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __btowc | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __get_errname | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_class | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __p_type | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | _tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | _toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | btowc | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isalnum | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isalpha | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isblank | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | iscntrl | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isdigit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isgraph | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | islower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isprint | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ispunct | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isspace | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | isxdigit | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | toascii | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | tolower | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | toupper | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uabs | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv__accept | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | | zError | 0 | -| arrayassignment.cpp:3:6:3:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __btowc | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __get_errname | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_class | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __p_type | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | _tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | _toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | btowc | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isalnum | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isalpha | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isblank | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | iscntrl | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isdigit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isgraph | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | islower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isprint | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ispunct | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isspace | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | isxdigit | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | toascii | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | tolower | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | toupper | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uabs | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv__accept | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | | zError | 0 | -| arrayassignment.cpp:88:7:88:9 | get | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2bit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2str | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Jim_ReturnCode | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Jim_SignalId | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2ln | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2obj | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OBJ_nid2sn | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | PKCS12_init | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | Symbol_Nth | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __btowc | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __current_locale_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __fdopendir | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __get_errlist | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __get_errname | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __math_invalid_i | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __math_invalidf_i | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_class | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_rcode | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __p_type | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __pkey_get | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __sigdescr_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | __strerrordesc_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | _tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | _toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | btowc | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | curlx_sitouz | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | evp_pkey_type2name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | inet6_option_space | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isalnum | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isalpha | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isblank | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | iscntrl | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isdigit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isgraph | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | islower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isprint | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ispunct | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isspace | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | isxdigit | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sigabbrev_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_errstr | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | strerrorname_np | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | support_report_failure | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | svcudp_create | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tls13_alert_code | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | toascii | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tolower | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | toupper | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uabs | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv__accept | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_err_name | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_get_osfhandle | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_strerror | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_translate_sys_error | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | zError | 0 | -| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| arrayassignment.cpp:124:6:124:9 | sink | (int *) | | rresvport | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 | | atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | __sleep | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | la_version | 0 | -| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | ssl3_get_cipher | 0 | | atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Strsafe | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Symbol_new | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | UI_create_method | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __basename | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __gettext | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __hash_string | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __strdup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __textdomain | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | __tzstring | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a64l | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | charmap_opendir | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ether_aton | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | getdate | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | inetstr2int | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | last_component | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_path_end | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_progname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | repertoire_read | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | sgetsgent | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | sgetspent | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | strhash | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uc_script_byname | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv__strdup | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | xstrdup | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | __libc_malloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | __libc_valloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | malloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:201:8:201:12 | GetAt | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | uv__strscpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | __realpath_chk | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | getpass_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | ns_makecanon | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | Curl_strerror | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | __strerror_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | __ttyname_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_err_name_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_strerror_r | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,const void *,size_t) | | writeall | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (int,void *,size_t) | | __readall | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (unsigned int,char *,size_t) | | __initstate | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void **,size_t,size_t) | | __posix_memalign | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| atl.cpp:206:10:206:17 | InsertAt | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | __libc_malloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | __libc_valloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | malloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:213:8:213:17 | operator[] | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __sleep | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __sleep | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | la_version | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | la_version | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_valloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | __libc_valloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | _dl_early_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | malloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_quic_sstream_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ssl_cert_new | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_next_to_fault_allocate_before | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | support_stack_alloc | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | xalloc_sigstack | 0 | -| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:409:10:409:10 | operator= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | Append | 0 | | atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ASN1_tag2str | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Jim_SignalId | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | PKCS12_init | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | Symbol_Nth | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __btowc | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __current_locale_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __fdopendir | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __get_errlist | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __get_errname | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __math_invalid_i | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __math_invalidf_i | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_class | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_rcode | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __p_type | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __pkey_get | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __sigdescr_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | __strerrordesc_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | _tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | _toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | btowc | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | curlx_sitouz | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | inet6_option_space | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isalnum | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isalpha | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isblank | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | iscntrl | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isdigit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isgraph | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | islower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isprint | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ispunct | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isspace | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | isxdigit | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sigabbrev_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_errstr | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | strerrorname_np | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | support_report_failure | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | svcudp_create | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | tls13_alert_code | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | toascii | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | tolower | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | toupper | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uabs | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv__accept | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_err_name | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_strerror | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | | zError | 0 | -| atl.cpp:412:5:412:12 | CComBSTR | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:413:5:413:12 | CComBSTR | (__wprintf_buffer *,const wchar_t *) | | __wprintf_buffer_puts_1 | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | __wcscoll | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | wcspbrk | 1 | -| atl.cpp:413:5:413:12 | CComBSTR | (const wchar_t *,const wchar_t *) | | wcsstr | 1 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | _CONF_new_section | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_convert_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_set_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (GlobalConfig *,const char *) | | setvariable | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_add1_host | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_set1_host | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_add_error_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_add_info_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_dup_error_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (UI *,const char *) | | UI_dup_info_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509 *,const char *) | | x509_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | Curl_setstropt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | __strsep | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (char *,const char *) | | xstrdup | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Configcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Curl_timestrcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | DES_crypt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __bindtextdomain | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __dgettext | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __gconv_compare_alias | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcasestr | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcspn_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strcspn_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strpbrk_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strspn_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strspn_sse42 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strstr_generic | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | __strverscmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | advance | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | c_strcasecmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | charmap_aliases | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | charmap_open | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | chroot_canon | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | get_passwd | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen64 | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | iconv_open | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | openssl_fopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_strglob | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_stricmp | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | step | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | tempnam | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | xfopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const mntent *,const char *) | | __hasmntopt | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (const nis_error,const char *) | | nis_sperror | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_off_t *,const char *) | | str2offset | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist **,const char *) | | add2list | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist *,const char *) | | curl_slist_append | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (gzFile,const char *) | | gzputs | 1 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | _IO_new_fdopen | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | _IO_new_fdopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | setlocale | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | setlocale | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | xsetlocale | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | xsetlocale | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (lemon *,const char *) | | file_makename | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | secs2ms | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2num | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2unum | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (size_t *,const char *) | | next_protos_parse | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc **,const char *) | | easysrc_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc *,const char *) | | slist_wc_append | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (stringtable *,const char *) | | stringtable_add | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_cert_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_name_ex | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 | | atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 | | atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Strsafe | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Symbol_new | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | UI_create_method | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __basename | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __gettext | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __hash_string | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __strdup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __textdomain | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | __tzstring | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a64l | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | charmap_opendir | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ether_aton | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | getdate | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | inetstr2int | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | last_component | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_path_end | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_progname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | repertoire_read | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | sgetsgent | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | sgetspent | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | strhash | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uc_script_byname | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv__strdup | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | xstrdup | 0 | | atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | | atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | | wcwidth | 0 | | atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_tolower | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_toupper | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | findshortopt | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 | | atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 | | atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | | atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Strsafe | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | Symbol_new | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | UI_create_method | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __basename | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __gettext | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __hash_string | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __strdup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __textdomain | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | __tzstring | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | a64l | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | charmap_opendir | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | ether_aton | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | getdate | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | inetstr2int | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | last_component | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_path_end | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_progname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | repertoire_read | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | sgetsgent | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | sgetspent | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | strhash | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uc_script_byname | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uv__strdup | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:424:13:424:18 | Append | (const char *) | | xstrdup | 0 | -| atl.cpp:425:13:425:18 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:425:13:425:18 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:425:13:425:18 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:425:13:425:18 | Append | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:425:13:425:18 | Append | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:425:13:425:18 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:425:13:425:18 | Append | (FTS *,int) | | fts_children | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | | atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:425:13:425:18 | Append | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:425:13:425:18 | Append | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:425:13:425:18 | Append | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:425:13:425:18 | Append | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:425:13:425:18 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:425:13:425:18 | Append | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:425:13:425:18 | Append | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:425:13:425:18 | Append | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:425:13:425:18 | Append | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:425:13:425:18 | Append | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:425:13:425:18 | Append | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:425:13:425:18 | Append | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:425:13:425:18 | Append | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:425:13:425:18 | Append | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:425:13:425:18 | Append | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:425:13:425:18 | Append | (char **,int) | | addrsort | 1 | -| atl.cpp:425:13:425:18 | Append | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:425:13:425:18 | Append | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:425:13:425:18 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:425:13:425:18 | Append | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:425:13:425:18 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:425:13:425:18 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:425:13:425:18 | Append | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:425:13:425:18 | Append | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:425:13:425:18 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | ftok | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:425:13:425:18 | Append | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:425:13:425:18 | Append | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:425:13:425:18 | Append | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:425:13:425:18 | Append | (double,int) | | __ldexp | 1 | -| atl.cpp:425:13:425:18 | Append | (double,int) | | __scalbn | 1 | -| atl.cpp:425:13:425:18 | Append | (double[],int) | | getloadavg | 1 | -| atl.cpp:425:13:425:18 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:425:13:425:18 | Append | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:425:13:425:18 | Append | (float,int) | | __ldexpf | 1 | -| atl.cpp:425:13:425:18 | Append | (float,int) | | __scalbnf | 1 | -| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzflush | 1 | -| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzputc | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:425:13:425:18 | Append | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | BN_security_bits | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | __isctype | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | acttab_alloc | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | div | 1 | -| atl.cpp:425:13:425:18 | Append | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:425:13:425:18 | Append | (long double,int) | | __ldexpl | 1 | -| atl.cpp:425:13:425:18 | Append | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:425:13:425:18 | Append | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:425:13:425:18 | Append | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:425:13:425:18 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:425:13:425:18 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:425:13:425:18 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:425:13:425:18 | Append | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:425:13:425:18 | Append | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:425:13:425:18 | Append | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:425:13:425:18 | Append | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:425:13:425:18 | Append | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:425:13:425:18 | Append | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:425:13:425:18 | Append | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:425:13:425:18 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:425:13:425:18 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:425:13:425:18 | Append | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:425:13:425:18 | Append | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:425:13:425:18 | Append | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:426:13:426:22 | AppendBSTR | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (FTS *,int) | | fts_children | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char **,int) | | addrsort | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DH_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DSA_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | Jim_StrDupLen | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | RSA_meth_new | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | ftok | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | ftok | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | gethostbyname2 | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | parse_yesno | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | res_gethostbyname2 | 0 | -| atl.cpp:427:13:427:23 | AppendBytes | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double,int) | | __ldexp | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double,int) | | __scalbn | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (double[],int) | | getloadavg | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (float,int) | | __ldexpf | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (float,int) | | __scalbnf | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzflush | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzputc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | BN_security_bits | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | __isctype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | acttab_alloc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | div | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (long double,int) | | __ldexpl | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:440:10:440:19 | LoadString | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| atl.cpp:440:10:440:19 | LoadString | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| atl.cpp:440:10:440:19 | LoadString | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | | atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | | atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | -| atl.cpp:440:10:440:19 | LoadString | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| atl.cpp:440:10:440:19 | LoadString | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| atl.cpp:440:10:440:19 | LoadString | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| atl.cpp:440:10:440:19 | LoadString | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| atl.cpp:440:10:440:19 | LoadString | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| atl.cpp:440:10:440:19 | LoadString | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | __nis_default_access | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | utf8_fromunicode | 1 | -| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | uv_buf_init | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| atl.cpp:440:10:440:19 | LoadString | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| atl.cpp:440:10:440:19 | LoadString | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| atl.cpp:440:10:440:19 | LoadString | (gzFile,unsigned int) | | gzbuffer | 1 | -| atl.cpp:440:10:440:19 | LoadString | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| atl.cpp:440:10:440:19 | LoadString | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| atl.cpp:440:10:440:19 | LoadString | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| atl.cpp:440:10:440:19 | LoadString | (z_streamp,unsigned int) | | inflate_fast | 1 | | atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | __sleep | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | la_version | 0 | -| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:450:15:450:24 | operator+= | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | Add | 0 | | atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | | atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 | -| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | -| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | | atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | -| atl.cpp:546:13:546:15 | Add | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | -| atl.cpp:546:13:546:15 | Add | (support_fuse *,bool) | | support_fuse_filter_forget | 1 | -| atl.cpp:546:13:546:15 | Add | (void *,bool) | | _dl_allocate_tls_init | 1 | -| atl.cpp:546:13:546:15 | Add | (void *,bool) | | _dl_deallocate_tls | 1 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __fdelt_chk | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __math_invalid_li | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | __math_invalidf_li | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltosi | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltoui | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltous | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | l64a | 0 | -| atl.cpp:554:8:554:12 | GetAt | (long) | | ulabs | 0 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | -| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | -| atl.cpp:565:13:565:17 | SetAt | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | -| atl.cpp:565:13:565:17 | SetAt | (link_map *,Dl_serinfo *,bool) | | _dl_rtld_di_serinfo | 2 | -| atl.cpp:565:13:565:17 | SetAt | (link_map *,link_map_public *,bool) | | _dl_close_worker | 2 | -| atl.cpp:565:13:565:17 | SetAt | (size_t,char *[],bool) | | add_locales_to_archive | 2 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __fdelt_chk | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __math_invalid_li | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | __math_invalidf_li | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltosi | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltoui | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltous | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | l64a | 0 | -| atl.cpp:567:8:567:17 | operator[] | (long) | | ulabs | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | btowc | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isblank | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | islower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isprint | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isspace | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | toascii | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | tolower | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | toupper | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uabs | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | | zError | 0 | -| atl.cpp:568:8:568:17 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | | operator+= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:617:10:617:21 | AddExtension | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:618:10:618:15 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:621:10:621:16 | Combine | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:621:10:621:16 | Combine | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:621:10:621:16 | Combine | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | | operator+= | 0 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:622:24:622:35 | CommonPrefix | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | | operator+= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:659:25:659:34 | operator+= | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | btowc | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isblank | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | islower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isprint | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isspace | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | toascii | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | tolower | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | toupper | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uabs | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | | zError | 0 | -| atl.cpp:731:8:731:17 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:765:10:765:12 | Add | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:765:10:765:12 | Add | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:765:10:765:12 | Add | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:765:10:765:12 | Add | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:765:10:765:12 | Add | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ASN1_tag2str | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Jim_SignalId | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | PKCS12_init | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | Symbol_Nth | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __btowc | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __current_locale_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __fdopendir | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __get_errlist | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __get_errname | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __math_invalid_i | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __math_invalidf_i | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_class | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_rcode | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __p_type | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __pkey_get | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __sigdescr_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | __strerrordesc_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | _tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | _toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | btowc | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | curlx_sitouz | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | inet6_option_space | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isalnum | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isalpha | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isblank | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | iscntrl | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isdigit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isgraph | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | islower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isprint | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ispunct | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isspace | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | isxdigit | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sigabbrev_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_errstr | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | strerrorname_np | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | support_report_failure | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | svcudp_create | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | tls13_alert_code | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | toascii | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | tolower | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | toupper | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uabs | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv__accept | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_err_name | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_strerror | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | | zError | 0 | -| atl.cpp:770:11:770:20 | GetValueAt | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (const vector &,const Allocator &) | vector | vector | 1 | -| atl.cpp:776:10:776:14 | SetAt | (deque &&,const Allocator &) | deque | deque | 1 | -| atl.cpp:776:10:776:14 | SetAt | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (list &&,const Allocator &) | list | list | 1 | -| atl.cpp:776:10:776:14 | SetAt | (vector &&,const Allocator &) | vector | vector | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | list | list | 2 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BN_num_bits_word | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BUF_MEM_new_ex | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultouc | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultous | 0 | -| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | next_prime | 0 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (hash_table *,unsigned long) | | init_hash | 1 | -| atl.cpp:824:10:824:17 | CrackUrl | (u_long,unsigned long) | | __p_option | 1 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| atl.cpp:825:17:825:25 | CreateUrl | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Strsafe | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Symbol_new | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | UI_create_method | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __basename | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __gettext | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __hash_string | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __strdup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __textdomain | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | __tzstring | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a64l | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | charmap_opendir | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ether_aton | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | getdate | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | inetstr2int | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | last_component | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_path_end | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_progname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | repertoire_read | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | sgetsgent | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | sgetspent | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | strhash | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uc_script_byname | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv__strdup | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | xstrdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Strsafe | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Symbol_new | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | UI_create_method | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __basename | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __gettext | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __hash_string | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __strdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __textdomain | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | __tzstring | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a64l | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ether_aton | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | getdate | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | inetstr2int | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | last_component | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_path_end | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_progname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | repertoire_read | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | sgetsgent | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | sgetspent | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | strhash | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv__strdup | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | xstrdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Strsafe | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Symbol_new | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | UI_create_method | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __basename | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __gettext | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __hash_string | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __strdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __textdomain | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | __tzstring | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a64l | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | charmap_opendir | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ether_aton | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | getdate | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | inetstr2int | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | last_component | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_path_end | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_progname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | repertoire_read | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | sgetsgent | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | sgetspent | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | strhash | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uc_script_byname | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv__strdup | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | xstrdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Strsafe | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Symbol_new | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | UI_create_method | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __basename | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __gettext | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __hash_string | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __strdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __textdomain | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | __tzstring | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a64l | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ether_aton | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | getdate | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | inetstr2int | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | last_component | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_path_end | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_progname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | repertoire_read | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | sgetsgent | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | sgetspent | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | strhash | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv__strdup | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | xstrdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Strsafe | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Symbol_new | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | UI_create_method | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __basename | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __gettext | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __hash_string | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __strdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __textdomain | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | __tzstring | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a64l | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | charmap_opendir | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ether_aton | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | getdate | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | inetstr2int | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | last_component | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_path_end | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_progname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | repertoire_read | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | sgetsgent | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | sgetspent | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | strhash | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uc_script_byname | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv__strdup | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | xstrdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | BIO_gethostbyname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_copy_header_value | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_get_scheme_handler | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_getdate_capped | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Jim_StrDup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OPENSSL_LH_strhash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Strsafe | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Symbol_new | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | UI_create_method | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509V3_parse_list | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509_LOOKUP_meth_new | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __basename | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __gconv_find_shlib | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __gettext | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __hash_string | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __nss_action_parse | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __strdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __textdomain | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __tzset_parse_tz | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | __tzstring | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS_NC | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a64l | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | charmap_opendir | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ether_aton | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | getdate | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | inetstr2int | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | last_component | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_path_end | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_progname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ossl_lh_strcasehash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | repertoire_read | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | res_gethostbyname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | sgetsgent | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | sgetspent | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | strhash | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uc_script_byname | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv__strdup | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | xstrdup | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | | atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | | operator+= | 0 | | atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | | operator+= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CSimpleStringT | operator+= | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | CStringT | 0 | -| atl.cpp:921:10:921:15 | Append | (const CSimpleStringT &) | CStringT | operator= | 0 | -| atl.cpp:922:10:922:15 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:922:10:922:15 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:922:10:922:15 | Append | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:922:10:922:15 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:922:10:922:15 | Append | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:922:10:922:15 | Append | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:922:10:922:15 | Append | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:922:10:922:15 | Append | (FTS *,int) | | fts_children | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:922:10:922:15 | Append | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:922:10:922:15 | Append | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:922:10:922:15 | Append | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:922:10:922:15 | Append | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:922:10:922:15 | Append | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:922:10:922:15 | Append | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:922:10:922:15 | Append | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:922:10:922:15 | Append | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:922:10:922:15 | Append | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:922:10:922:15 | Append | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:922:10:922:15 | Append | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:922:10:922:15 | Append | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:922:10:922:15 | Append | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:922:10:922:15 | Append | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:922:10:922:15 | Append | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:922:10:922:15 | Append | (char **,int) | | addrsort | 1 | -| atl.cpp:922:10:922:15 | Append | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:922:10:922:15 | Append | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:922:10:922:15 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:922:10:922:15 | Append | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:922:10:922:15 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:922:10:922:15 | Append | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:922:10:922:15 | Append | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:922:10:922:15 | Append | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:922:10:922:15 | Append | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | ftok | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:922:10:922:15 | Append | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:922:10:922:15 | Append | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:922:10:922:15 | Append | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:922:10:922:15 | Append | (double,int) | | __ldexp | 1 | -| atl.cpp:922:10:922:15 | Append | (double,int) | | __scalbn | 1 | -| atl.cpp:922:10:922:15 | Append | (double[],int) | | getloadavg | 1 | -| atl.cpp:922:10:922:15 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:922:10:922:15 | Append | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:922:10:922:15 | Append | (float,int) | | __ldexpf | 1 | -| atl.cpp:922:10:922:15 | Append | (float,int) | | __scalbnf | 1 | -| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzflush | 1 | -| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzputc | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:922:10:922:15 | Append | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | BN_security_bits | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | __isctype | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | acttab_alloc | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | div | 1 | -| atl.cpp:922:10:922:15 | Append | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:922:10:922:15 | Append | (long double,int) | | __ldexpl | 1 | -| atl.cpp:922:10:922:15 | Append | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:922:10:922:15 | Append | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:922:10:922:15 | Append | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:922:10:922:15 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:922:10:922:15 | Append | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:922:10:922:15 | Append | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:922:10:922:15 | Append | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:922:10:922:15 | Append | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:922:10:922:15 | Append | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:922:10:922:15 | Append | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:922:10:922:15 | Append | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:922:10:922:15 | Append | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:922:10:922:15 | Append | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:922:10:922:15 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:922:10:922:15 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:922:10:922:15 | Append | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:922:10:922:15 | Append | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:922:10:922:15 | Append | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | | operator+= | 0 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:923:10:923:15 | Append | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,char *,int) | | BIO_get_line | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,const DSA *,int) | | DSA_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (BIO *,const RSA *,int) | | RSA_print | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,__FILE *,int) | | fwide | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FILE *,rule *,int) | | RulePrint | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (FTS *,FTSENT *,int) | | fts_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,const void *,int) | | SSL_write | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_peek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_read | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,int,int) | | X509_check_purpose | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509 *,int,int) | | X509_check_trust | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | | atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | | atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | | atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (action *,FILE *,int) | | PrintAction | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (acttab *,int,int) | | acttab_action | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (char *,size_t,int) | | __argz_stringify | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | __strtol | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | __strtoul | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | __dcgettext | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | __dcgettext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | sqlite3_strnicmp | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,long *,int) | | Jim_StringToWide | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,void *,int) | | support_readdir_check | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const char *,wordexp_t *,int) | | wordexp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (database_dyn *,time_t,int) | | prune_cache | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (double,double,int) | | __kernel_standard | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (float,float,int) | | __kernel_standard_f | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,char *,int) | | gzgets | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,int,int) | | gzsetparams | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off64_t,int) | | gzseek64 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off_t,int) | | gzseek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int *,short *,int) | | __lll_lock_elision | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | ASN1_object_size | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_sinl | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_standard_l | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (long double,long double,int) | | __kernel_tanl | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (regex_t *,const char *,int) | | jim_regcomp | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const char *,int) | | data_string | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const char *,int) | | data_string | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const char *,int) | | _IO_adjust_column | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,int,int) | | ossl_blob_length | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| atl.cpp:927:17:927:25 | CopyChars | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,const BIGNUM *,const BIGNUM *,int) | | ossl_rsa_check_pminusq_diff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_bntest_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_priv_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_pseudo_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_rand | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | PEM_write_bio_CMS_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | SMIME_write_CMS | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,CMS_ContentInfo *,BIO *,int) | | i2d_CMS_bio_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | PEM_write_bio_PKCS7_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | SMIME_write_PKCS7 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,PKCS7 *,BIO *,int) | | i2d_PKCS7_bio_stream | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,X509_EXTENSION *,unsigned long,int) | | X509V3_EXT_print | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,const char *,const OCSP_REQUEST *,int) | | OCSP_sendreq_new | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,const unsigned char *,long,int) | | ASN1_parse | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,int,const ASN1_TYPE *,int) | | ossl_print_attribute_value | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BIO *,void *,int,int) | | app_http_tls_cb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const int *,size_t,int) | | tls1_set_sigalgs | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const uint16_t *,size_t,int) | | tls1_set_raw_sigalgs | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (DH *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_dh_key_todata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (DSO *,const char *,DSO_METHOD *,int) | | DSO_load | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE *,const char *,const char *,int) | | ENGINE_ctrl_cmd_string | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE *,const char *,const char *,int) | | ENGINE_ctrl_cmd_string | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE_TABLE **,int,const char *,int) | | ossl_engine_table_select | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ENGINE_TABLE **,int,const char *,int) | | ossl_engine_table_select | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (EVP_PKEY_CTX *,const char *,int,int) | | app_keygen | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FFC_PARAMS *,const unsigned char *,size_t,int) | | ossl_ffc_params_set_validate_params | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,char *,char *,int) | | _IO_setb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,const char *,const char *,int) | | _IO_new_file_fopen | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,const char *,const char *,int) | | _IO_new_file_fopen | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,lemon *,int *,int) | | print_stack_union | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,mntent *,char *,int) | | __getmntent_r | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_file_seekoff_mmap | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_new_file_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_str_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_wfile_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,off64_t,int,int) | | _IO_wstr_seekoff | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (FILE *,wchar_t *,wchar_t *,int) | | _IO_wsetb | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,Jim_Obj **,int) | | Jim_SubstObj | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,Jim_Obj *,int) | | Jim_ScanString | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_MSG *,ossl_cmp_allow_unprotected_cb_t,int) | | ossl_cmp_msg_check_update | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_PKISI *,const OSSL_CRMF_CERTID *,int) | | ossl_cmp_rp_new | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_LIB_CTX *,const char *,OSSL_PARAM *,int) | | OSSL_PROVIDER_try_load_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_PARAM_BLD *,OSSL_PARAM *,const char *,int) | | ossl_param_build_set_int | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (OSSL_PARAM_BLD *,OSSL_PARAM *,const char *,int) | | ossl_param_build_set_int | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (RSA *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_rsa_todata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SIPHASH *,const unsigned char *,int,int) | | SipHash_Init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SLH_DSA_KEY *,const OSSL_PARAM *,const OSSL_PARAM[],int) | | ossl_slh_dsa_key_fromdata | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL *,SSL_CTX *,const SSL_METHOD *,int) | | ossl_ssl_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL_CONNECTION *,WPACKET *,CERT_PKEY *,int) | | ssl3_output_cert_chain | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SSL_CONNECTION *,stack_st_X509 *,X509 *,int) | | ssl_security_cert_chain | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,ASN1_INTEGER *,const char *,int) | | SXNET_add_id_INTEGER | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,ASN1_INTEGER *,const char *,int) | | SXNET_add_id_INTEGER | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,const char *,const char *,int) | | SXNET_add_id_asc | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,const char *,const char *,int) | | SXNET_add_id_asc | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,unsigned long,const char *,int) | | SXNET_add_id_ulong | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (SXNET **,unsigned long,const char *,int) | | SXNET_add_id_ulong | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (TS_RESP_CTX *,int,int,int) | | TS_RESP_CTX_set_accuracy | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (UI *,UI_STRING *,const char *,int) | | UI_set_result_ex | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (UI *,UI_STRING *,const char *,int) | | UI_set_result_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_NAME *,const X509_NAME_ENTRY *,int,int) | | X509_NAME_add_entry | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_NAME_ENTRY *,int,const unsigned char *,int) | | X509_NAME_ENTRY_set_data | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (X509_STORE_CTX *,int,int,int) | | X509_STORE_CTX_purpose_inherit | 3 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | | atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (_Float128,_Float128,_Float128,int) | | __lgamma_productf128 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (char *,int,const ASN1_OBJECT *,int) | | OBJ_obj2txt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (cmsghdr *,const uint8_t *,int,int) | | inet6_option_append | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (cmsghdr *,int,int,int) | | inet6_option_alloc | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const DH *,unsigned char **,size_t,int) | | ossl_dh_key2buf | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const EVP_MD *,const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_v2_new_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,const ASN1_OBJECT *,char *,int) | | X509_NAME_get_text_by_OBJ | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,int,char *,int) | | X509_NAME_get_text_by_NID | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_CRL_load_http | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_load_http | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,char **,int) | | idn2_register_ul | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | __old_strpbrk_c3 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | append_str | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const char *,u_char *,unsigned char *,int) | | inet_nsap_addr | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,int,unsigned char *,int) | | ___res_send | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,RC2_KEY *,int) | | RC2_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const BF_KEY *,int) | | BF_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const CAST_KEY *,int) | | CAST_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const SEED_KEY_SCHEDULE *,int) | | SEED_ecb_encrypt | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (double,double,double,int) | | __lgamma_product | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,ENGINE *,const unsigned char *,int) | | EVP_PKEY_new_mac_key | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const char *,const timespec[2],int) | | __utimensat | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,int *,int *,int) | | sqlite3_status | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,int,const unsigned char *,int) | | PKCS5_pbe_set | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,sockaddr *,socklen_t *,int) | | xaccept4 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (link_map *,r_scope_elem *[],int,int) | | _dl_relocate_object | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (link_map *,r_scope_elem *[],int,int) | | _dl_relocate_object_no_relro | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (long double,long double,long double,int) | | __lgamma_productl | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,const void *,int,int) | | sqlite3_blob_write | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,void *,int,int) | | sqlite3_blob_read | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (stack_st_PKCS12_SAFEBAG **,int,const unsigned char *,int) | | PKCS12_add_secret | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uint8_t *,unsigned char *,uint64_t,int) | | ossl_quic_vlint_encode_n | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const char *,int) | | a2d_ASN1_OBJECT | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const char *,int) | | a2d_ASN1_OBJECT | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_type_1 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_type_2 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_X931 | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_none | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long *,unsigned long *,unsigned long *,int) | | bn_mul_low_normal | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long long,char *,unsigned int,int) | | _itoa | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,char *,unsigned int,int) | | _fitoa_word | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,char *,unsigned int,int) | | _itoa_word | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,const ASN1_ITEM *,int,int) | | PKCS12_item_pack_safebag | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 3 | -| atl.cpp:928:17:928:25 | CopyChars | (void *,socklen_t,int,int) | | inet6_rth_init | 3 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,char *,int) | | BIO_get_line | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const DSA *,int) | | DSA_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const RSA *,int) | | RSA_print | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,__FILE *,int) | | fwide | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FILE *,rule *,int) | | RulePrint | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (FTS *,FTSENT *,int) | | fts_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,const void *,int) | | SSL_write | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_peek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_read | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,int,int) | | X509_check_purpose | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509 *,int,int) | | X509_check_trust | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | | atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (action *,FILE *,int) | | PrintAction | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (acttab *,int,int) | | acttab_action | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (char *,size_t,int) | | __argz_stringify | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | __strtol | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | __strtoul | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | __dcgettext | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | __dcgettext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | sqlite3_strnicmp | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,long *,int) | | Jim_StringToWide | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,void *,int) | | support_readdir_check | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,wordexp_t *,int) | | wordexp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (database_dyn *,time_t,int) | | prune_cache | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (double,double,int) | | __kernel_standard | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (float,float,int) | | __kernel_standard_f | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,char *,int) | | gzgets | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,int,int) | | gzsetparams | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off64_t,int) | | gzseek64 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off_t,int) | | gzseek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int *,short *,int) | | __lll_lock_elision | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | ASN1_object_size | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_sinl | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_standard_l | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (long double,long double,int) | | __kernel_tanl | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (regex_t *,const char *,int) | | jim_regcomp | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const char *,int) | | data_string | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const char *,int) | | data_string | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const char *,int) | | _IO_adjust_column | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,int,int) | | ossl_blob_length | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2str | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Jim_SignalId | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | PKCS12_init | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | Symbol_Nth | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __btowc | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __current_locale_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __fdopendir | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __get_errlist | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __get_errname | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __math_invalid_i | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __math_invalidf_i | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_class | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_rcode | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __p_type | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __pkey_get | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __sigdescr_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | __strerrordesc_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | _tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | _toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | btowc | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | c_tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | c_toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | curlx_sitouz | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | inet6_option_space | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isalnum | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isalpha | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isblank | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | iscntrl | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isdigit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isgraph | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | islower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isprint | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ispunct | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isspace | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | isxdigit | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sigabbrev_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_errstr | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | strerrorname_np | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | support_report_failure | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | svcudp_create | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | tls13_alert_code | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | toascii | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | tolower | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | toupper | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uabs | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv__accept | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_err_name | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_strerror | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | | zError | 0 | -| atl.cpp:931:11:931:15 | GetAt | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2str | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Jim_SignalId | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | PKCS12_init | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | Symbol_Nth | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __btowc | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __current_locale_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __fdopendir | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __get_errlist | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __get_errname | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __math_invalid_i | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __math_invalidf_i | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_class | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_rcode | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __p_type | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __pkey_get | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __sigdescr_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | __strerrordesc_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | _tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | _toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | btowc | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | curlx_sitouz | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | inet6_option_space | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isalnum | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isalpha | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isblank | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | iscntrl | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isdigit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isgraph | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | islower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isprint | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ispunct | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isspace | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | isxdigit | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sigabbrev_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_errstr | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | strerrorname_np | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | support_report_failure | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | svcudp_create | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | tls13_alert_code | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | toascii | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | tolower | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | toupper | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uabs | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv__accept | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_err_name | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_strerror | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | | zError | 0 | -| atl.cpp:932:11:932:19 | GetBuffer | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2str | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Jim_SignalId | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | PKCS12_init | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | Symbol_Nth | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __btowc | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __current_locale_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __fdopendir | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __get_errlist | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __get_errname | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __math_invalid_i | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __math_invalidf_i | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_class | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_rcode | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __p_type | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __pkey_get | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __sigdescr_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | __strerrordesc_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | _tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | _toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | btowc | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | curlx_sitouz | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | inet6_option_space | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isalnum | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isalpha | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isblank | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | iscntrl | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isdigit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isgraph | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | islower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isprint | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ispunct | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isspace | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | isxdigit | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sigabbrev_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_errstr | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | strerrorname_np | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | support_report_failure | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | svcudp_create | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tls13_alert_code | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | toascii | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tolower | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | toupper | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uabs | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv__accept | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_err_name | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_strerror | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | zError | 0 | -| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:938:10:938:14 | SetAt | (__printf_buffer *,char) | | __printf_buffer_putc_1 | 1 | -| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | Curl_str_single | 1 | -| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | __old_strsep_1c | 1 | -| atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 | -| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:939:10:939:18 | SetString | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:939:10:939:18 | SetString | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:939:10:939:18 | SetString | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:939:10:939:18 | SetString | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:939:10:939:18 | SetString | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:939:10:939:18 | SetString | (FTS *,int) | | fts_children | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:939:10:939:18 | SetString | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:939:10:939:18 | SetString | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:939:10:939:18 | SetString | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:939:10:939:18 | SetString | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:939:10:939:18 | SetString | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:939:10:939:18 | SetString | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:939:10:939:18 | SetString | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:939:10:939:18 | SetString | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:939:10:939:18 | SetString | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:939:10:939:18 | SetString | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:939:10:939:18 | SetString | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:939:10:939:18 | SetString | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:939:10:939:18 | SetString | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:939:10:939:18 | SetString | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:939:10:939:18 | SetString | (char **,int) | | addrsort | 1 | -| atl.cpp:939:10:939:18 | SetString | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:939:10:939:18 | SetString | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:939:10:939:18 | SetString | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:939:10:939:18 | SetString | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:939:10:939:18 | SetString | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:939:10:939:18 | SetString | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:939:10:939:18 | SetString | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:939:10:939:18 | SetString | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | ftok | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:939:10:939:18 | SetString | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:939:10:939:18 | SetString | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:939:10:939:18 | SetString | (double,int) | | __ldexp | 1 | -| atl.cpp:939:10:939:18 | SetString | (double,int) | | __scalbn | 1 | -| atl.cpp:939:10:939:18 | SetString | (double[],int) | | getloadavg | 1 | -| atl.cpp:939:10:939:18 | SetString | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:939:10:939:18 | SetString | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:939:10:939:18 | SetString | (float,int) | | __ldexpf | 1 | -| atl.cpp:939:10:939:18 | SetString | (float,int) | | __scalbnf | 1 | -| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzflush | 1 | -| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzputc | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:939:10:939:18 | SetString | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | BN_security_bits | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | __isctype | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | acttab_alloc | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | div | 1 | -| atl.cpp:939:10:939:18 | SetString | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:939:10:939:18 | SetString | (long double,int) | | __ldexpl | 1 | -| atl.cpp:939:10:939:18 | SetString | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:939:10:939:18 | SetString | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:939:10:939:18 | SetString | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:939:10:939:18 | SetString | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:939:10:939:18 | SetString | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:939:10:939:18 | SetString | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:939:10:939:18 | SetString | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:939:10:939:18 | SetString | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:939:10:939:18 | SetString | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:939:10:939:18 | SetString | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:939:10:939:18 | SetString | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:939:10:939:18 | SetString | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:939:10:939:18 | SetString | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:939:10:939:18 | SetString | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:939:10:939:18 | SetString | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:939:10:939:18 | SetString | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | | operator+= | 0 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:940:10:940:18 | SetString | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ASN1_tag2str | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Jim_SignalId | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | PKCS12_init | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | Symbol_Nth | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __btowc | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __current_locale_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __fdopendir | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __get_errlist | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __get_errname | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __math_invalid_i | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __math_invalidf_i | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_class | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_rcode | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __p_type | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __pkey_get | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __sigdescr_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | __strerrordesc_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | _tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | _toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | btowc | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | c_tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | c_toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | curlx_sitouz | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | inet6_option_space | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isalnum | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isalpha | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isblank | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | iscntrl | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isdigit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isgraph | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | islower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isprint | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ispunct | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isspace | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | isxdigit | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sigabbrev_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_errstr | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | strerrorname_np | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | support_report_failure | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | svcudp_create | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | tls13_alert_code | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | toascii | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | tolower | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | toupper | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uabs | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv__accept | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_err_name | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_strerror | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | | zError | 0 | -| atl.cpp:942:11:942:20 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 | | atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 | | atl.cpp:1037:5:1037:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1037:5:1037:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | | atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1037:5:1037:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | CStringT | 0 | -| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | operator= | 0 | | atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | | atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1042:5:1042:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:1042:5:1042:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1042:5:1042:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1043:5:1043:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | | atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | | atl.cpp:1043:5:1043:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | | atl.cpp:1043:5:1043:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | SRP_VBASE_new | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | _IO_gets | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __mktemp | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_group | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_owner | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __nis_default_ttl | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | __xpg_basename | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | ctermid | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | cuserid | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | defossilize | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | des_setparity | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | dirname | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | getwd | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | make_uppercase | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | mkdtemp | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | next_item | 0 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | | strfry | 0 | | atl.cpp:1045:5:1045:12 | CStringT | (char *) | CStringT | CStringT | 0 | | atl.cpp:1046:5:1046:12 | CStringT | (unsigned char *) | CStringT | CStringT | 0 | | atl.cpp:1047:5:1047:12 | CStringT | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:1049:5:1049:12 | CStringT | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char **,int) | | addrsort | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | | atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | ftok | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double,int) | | __ldexp | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double,int) | | __scalbn | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (double[],int) | | getloadavg | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (float,int) | | __ldexpf | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (float,int) | | __scalbnf | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | __isctype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | div | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (void *const *,int) | | __backtrace_symbols | 1 | | atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char **,int) | | addrsort | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | PEM_proc_type | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | ftok | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double,int) | | __ldexp | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double,int) | | __scalbn | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (double[],int) | | getloadavg | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (float,int) | | __ldexpf | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (float,int) | | __scalbnf | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | __isctype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | div | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (void *const *,int) | | __backtrace_symbols | 1 | | atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | | atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | | atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 0 | | atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | | atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | | atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | Format | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | FormatMessage | 1 | | atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 0 | | atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | Format | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | FormatMessage | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (const CStringT &,PCXSTR) | | operator+ | 1 | | atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 0 | | atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1071:9:1071:14 | Insert | (XCHAR,XCHAR) | CStringT | Replace | 1 | | atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 0 | | atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ASN1_tag2str | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Jim_SignalId | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | PKCS12_init | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | Symbol_Nth | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __btowc | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __current_locale_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __fdopendir | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __get_errlist | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __get_errname | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __math_invalid_i | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __math_invalidf_i | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_class | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_rcode | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __p_type | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __pkey_get | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __sigdescr_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | __strerrordesc_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | _tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | _toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | btowc | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | c_tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | c_toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | curlx_sitouz | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | inet6_option_space | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isalnum | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isalpha | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isblank | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | iscntrl | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isdigit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isgraph | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | islower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isprint | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ispunct | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isspace | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | isxdigit | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sigabbrev_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_errstr | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | strerrorname_np | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | support_report_failure | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | svcudp_create | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | tls13_alert_code | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | toascii | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | tolower | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | toupper | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uabs | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv__accept | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_err_name | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_strerror | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | | zError | 0 | -| atl.cpp:1072:14:1072:17 | Left | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | __sleep | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | curlx_uitous | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | la_version | 0 | -| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_clear_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_mask_bits | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_set_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | BN_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | bn_expand2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | bn_wexpand | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_find_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_retry_reason | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | BIO_set_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | TXT_DB_read | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (CURL *,int) | | curl_easy_pause | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA *,int) | | DSA_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA *,int) | | DSA_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_default_pbackfail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_fwide | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_init_internal | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_new_file_attach | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_new_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_old_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_sputbackc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_str_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | _IO_str_pbackfail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (FTS *,int) | | fts_children | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA *,int) | | RSA_clear_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA *,int) | | RSA_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_key_update | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_read_ahead | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_security_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL *,int) | | SSL_set_verify_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_CTX *,int) | | ssl_md | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509 *,int) | | X509_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509 *,int) | | X509_self_signed | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (_Float128,int) | | __ldexpf128 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (_Float128,int) | | __scalbnf128 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (acttab *,int) | | acttab_insert | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (addrinfo *,int) | | support_format_addrinfo | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char **,int) | | addrsort | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | Curl_str2addr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | PEM_proc_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_get_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIO *,int) | | BIO_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const BIO *,int) | | BIO_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | DH_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | DH_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DH *,int) | | ossl_dh_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | DSA_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | DSA_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const DSA *,int) | | ossl_dsa_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | RSA_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | RSA_test_flags | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const RSA *,int) | | ossl_rsa_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL *,int) | | SSL_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const UI *,int) | | UI_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509 *,int) | | X509_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509 *,int) | | X509_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | DH_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | DSA_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | Jim_StrDupLen | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | RSA_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | ftok | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | gethostbyname2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | parse_yesno | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const char *,int) | | res_gethostbyname2 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (const void *,int) | | inet6_rth_getaddr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double,int) | | __ldexp | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double,int) | | __scalbn | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (double[],int) | | getloadavg | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (fexcept_t *,int) | | fegetexceptflag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (float,int) | | __ldexpf | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (float,int) | | __scalbnf | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzflush | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzputc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_PURPOSE_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_TRUST_set | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | __lll_unlock_elision | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_MD_meth_new | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_MD_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | __isctype | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | __isctype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | div | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | div | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | inet6_rth_space | 0 | -| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | inet6_rth_space | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (long double,int) | | __ldexpl | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (netlink_handle *,int) | | __netlink_request | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (ns_msg,int) | | ns_msg_getflag | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (obstack *,int) | | _obstack_newchunk | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_add | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_addbasis | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sigset_t *,int) | | sigaddset | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sigset_t *,int) | | sigdelset | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (timespec *,int) | | __timespec_get | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (timespec *,int) | | __timespec_getres | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (uint16_t,int) | | tls1_group_id2nid | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | DSO_dsobyaddr | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | sqlite3_realloc | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (void *const *,int) | | __backtrace_symbols | 1 | -| atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 | | atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | | atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (const CStringT &,PCXSTR) | | operator+ | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (int,PCXSTR) | CStringT | Insert | 1 | | atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 0 | | atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1082:9:1082:15 | Replace | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_STRING_type_new | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_tag2bit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ASN1_tag2str | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | EVP_PKEY_asn1_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Jim_ReturnCode | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Jim_SignalId | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2ln | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2obj | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OBJ_nid2sn | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OSSL_STORE_INFO_type_string | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | OSSL_trace_get_category_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | PKCS12_init | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | Symbol_Nth | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_PURPOSE_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_PURPOSE_get_by_id | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get_by_id | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __btowc | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __current_locale_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __fdopendir | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __get_errlist | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __get_errname | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __math_invalid_i | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __math_invalidf_i | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_class | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_rcode | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __p_type | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __pkey_get | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __sigdescr_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | __strerrordesc_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | _tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | _toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | btowc | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | c_tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | c_toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | curlx_sitouz | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | evp_pkey_type2name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | inet6_option_space | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isalnum | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isalpha | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isblank | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | iscntrl | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isdigit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isgraph | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | islower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isprint | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ispunct | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isspace | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | isxdigit | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_cmp_bodytype_to_string | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sigabbrev_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_compileoption_get | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_errstr | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | strerrorname_np | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | support_report_failure | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | svcudp_create | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | tls13_alert_code | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | toascii | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | tolower | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | toupper | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uabs | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv__accept | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_err_name | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_get_osfhandle | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_strerror | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_translate_sys_error | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | | zError | 0 | -| atl.cpp:1083:14:1083:18 | Right | (int) | __pthread_cleanup_class | __setdoit | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1086:14:1086:26 | SpanIncluding | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1088:15:1088:18 | Trim | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1089:15:1089:18 | Trim | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1091:15:1091:22 | TrimLeft | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1092:15:1092:22 | TrimLeft | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1094:15:1094:23 | TrimRight | (XCHAR) | CStringT | operator= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | | operator+= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CSimpleStringT | operator+= | 0 | -| atl.cpp:1095:15:1095:23 | TrimRight | (PCXSTR) | CStringT | operator= | 0 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 1 | -| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | | atl.cpp:1286:5:1286:10 | ComPtr | (const ComPtr &) | ComPtr | ComPtr | 0 | -| atl.cpp:1286:5:1286:10 | ComPtr | (const ComPtr &) | ComPtr | operator= | 0 | | atl.cpp:1287:5:1287:10 | ComPtr | (ComPtr &&) | ComPtr | ComPtr | 0 | -| atl.cpp:1287:5:1287:10 | ComPtr | (ComPtr &&) | ComPtr | operator= | 0 | | atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | | atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (U *) | ComPtr | operator= | 0 | | atl.cpp:1301:13:1301:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | -| atl.cpp:1303:13:1303:18 | CopyTo | (Curl_easy *,void **) | | Curl_resolver_init | 1 | | atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 0 | | atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 1 | -| atl.cpp:1303:13:1303:18 | CopyTo | (size_t,void **) | | __libc_alloc_buffer_allocate | 1 | | atl.cpp:1306:13:1306:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | | atl.cpp:1328:13:1328:21 | operator= | (T *) | ComPtr | operator= | 0 | -| atl.cpp:1330:13:1330:21 | operator= | (T *) | ComPtr | ComPtr | 0 | | atl.cpp:1330:13:1330:21 | operator= | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1331:13:1331:21 | operator= | (const ComPtr &) | ComPtr | ComPtr | 0 | | atl.cpp:1331:13:1331:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1333:13:1333:21 | operator= | (const ComPtr &) | ComPtr | ComPtr | 0 | | atl.cpp:1333:13:1333:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1334:13:1334:21 | operator= | (ComPtr &&) | ComPtr | ComPtr | 0 | | atl.cpp:1334:13:1334:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| atl.cpp:1336:13:1336:21 | operator= | (ComPtr &&) | ComPtr | ComPtr | 0 | | atl.cpp:1336:13:1336:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| bsd.cpp:12:5:12:10 | accept | (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | -| bsd.cpp:12:5:12:10 | accept | (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_EncryptFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_EncryptFinal_ex | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_OpenFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_SealFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_ENCODE_CTX *,unsigned char *,int *) | | EVP_DecodeFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (EVP_ENCODE_CTX *,unsigned char *,int *) | | EVP_EncodeFinal | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_DictPairs | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetBoolFromExpr | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetBoolean | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetIndex | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetReturnCode | 2 | -| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetSourceInfo | 2 | -| bsd.cpp:12:5:12:10 | accept | (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | -| bsd.cpp:12:5:12:10 | accept | (OPENSSL_STACK *,const void *,int *) | | OPENSSL_sk_find_all | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_DECODER *,const char *,int *) | | ossl_decoder_fast_is_a | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_LIB_CTX *,uint32_t,int *) | | ossl_rand_uniform_uint32 | 2 | -| bsd.cpp:12:5:12:10 | accept | (OSSL_PROVIDER *,size_t,int *) | | ossl_provider_test_operation_bit | 2 | -| bsd.cpp:12:5:12:10 | accept | (PACKET *,uint64_t *,int *) | | ossl_quic_wire_peek_frame_header | 2 | -| bsd.cpp:12:5:12:10 | accept | (PROV_DRBG *,OSSL_PARAM[],int *) | | ossl_drbg_get_ctx_params_no_lock | 2 | -| bsd.cpp:12:5:12:10 | accept | (QUIC_RSTREAM *,size_t *,int *) | | ossl_quic_rstream_available | 2 | -| bsd.cpp:12:5:12:10 | accept | (_Float128,_Float128,int *) | | __remquof128 | 2 | -| bsd.cpp:12:5:12:10 | accept | (const BIGNUM *,const BIGNUM *,int *) | | ossl_ffc_validate_private_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | DH_check_pub_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | ossl_dh_check_priv_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DH *,const BIGNUM *,int *) | | ossl_dh_check_pub_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_priv_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_pub_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,const BIGNUM *,int *) | | ossl_dsa_check_pub_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const DSA *,int,int *) | | ossl_dsa_check_params | 2 | -| bsd.cpp:12:5:12:10 | accept | (const FFC_PARAMS *,const BIGNUM *,int *) | | ossl_ffc_validate_public_key | 2 | -| bsd.cpp:12:5:12:10 | accept | (const FFC_PARAMS *,const BIGNUM *,int *) | | ossl_ffc_validate_public_key_partial | 2 | -| bsd.cpp:12:5:12:10 | accept | (const SSL *,const SSL_CTX *,int *) | | ssl_get_security_level_bits | 2 | -| bsd.cpp:12:5:12:10 | accept | (const X509 *,EVP_MD **,int *) | | X509_digest_sig | 2 | -| bsd.cpp:12:5:12:10 | accept | (const char *,const OPT_PAIR *,int *) | | opt_pair | 2 | -| bsd.cpp:12:5:12:10 | accept | (const char *,const char *,int *) | | __gconv_compare_alias_cache | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,const char *,int *) | | __sym_ston | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,int,int *) | | __sym_ntop | 2 | -| bsd.cpp:12:5:12:10 | accept | (const res_sym *,int,int *) | | __sym_ntos | 2 | -| bsd.cpp:12:5:12:10 | accept | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | -| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | -| bsd.cpp:12:5:12:10 | accept | (double,double,int *) | | __remquo | 2 | -| bsd.cpp:12:5:12:10 | accept | (float,float,int *) | | __remquof | 2 | -| bsd.cpp:12:5:12:10 | accept | (int,const char **,int *) | | sqlite3_keyword_name | 2 | -| bsd.cpp:12:5:12:10 | accept | (int,int,int *) | | ssl_set_version_bound | 2 | -| bsd.cpp:12:5:12:10 | accept | (long double,long double,int *) | | __remquol | 2 | -| bsd.cpp:12:5:12:10 | accept | (pthread_mutex_t *,int,int *) | | __pthread_mutex_setprioceiling | 2 | -| bsd.cpp:12:5:12:10 | accept | (size_t,size_t *,int *) | | __malloc_hugepage_config | 2 | -| bsd.cpp:12:5:12:10 | accept | (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | -| bsd.cpp:12:5:12:10 | accept | (z_streamp,unsigned int *,int *) | | deflatePending | 2 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_STRING_type_new | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2bit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2str | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | EVP_PKEY_asn1_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Jim_ReturnCode | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Jim_SignalId | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2ln | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2obj | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OBJ_nid2sn | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OSSL_STORE_INFO_type_string | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | OSSL_trace_get_category_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | PKCS12_init | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | Symbol_Nth | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_PURPOSE_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_PURPOSE_get_by_id | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get_by_id | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __btowc | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __current_locale_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __fdopendir | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __get_errlist | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __get_errname | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __math_invalid_i | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __math_invalidf_i | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_class | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_rcode | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __p_type | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __pkey_get | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __sigdescr_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | __strerrordesc_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | _tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | _toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | btowc | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | curlx_sitouz | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | evp_pkey_type2name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | inet6_option_space | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isalnum | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isalpha | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isblank | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | iscntrl | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isdigit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isgraph | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | islower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isprint | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ispunct | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isspace | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | isxdigit | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_cmp_bodytype_to_string | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sigabbrev_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_compileoption_get | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_errstr | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | strerrorname_np | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | support_report_failure | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | svcudp_create | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tls13_alert_code | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | toascii | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tolower | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | toupper | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uabs | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv__accept | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_err_name | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_get_osfhandle | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_strerror | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_translate_sys_error | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | zError | 0 | -| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | __pthread_cleanup_class | __setdoit | 0 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_set_in_callback | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (curl_socket_t[2],bool) | | Curl_eventfd | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (support_fuse *,bool) | | support_fuse_filter_forget | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (void *,bool) | | _dl_allocate_tls_init | 1 | -| constructor_delegation.cpp:9:2:9:8 | MyValue | (void *,bool) | | _dl_deallocate_tls | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_clear_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_mask_bits | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_set_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | bn_expand2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | bn_wexpand | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_find_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_retry_reason | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | BIO_set_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | TXT_DB_read | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (CURL *,int) | | curl_easy_pause | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA *,int) | | DSA_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA *,int) | | DSA_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_default_pbackfail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_fwide | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_init_internal | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_new_file_attach | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_new_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_old_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_sputbackc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_str_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | _IO_str_pbackfail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (FTS *,int) | | fts_children | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA *,int) | | RSA_clear_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA *,int) | | RSA_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_key_update | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_read_ahead | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_security_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL *,int) | | SSL_set_verify_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_CTX *,int) | | ssl_md | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509 *,int) | | X509_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509 *,int) | | X509_self_signed | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (_Float128,int) | | __ldexpf128 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (_Float128,int) | | __scalbnf128 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (acttab *,int) | | acttab_insert | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (addrinfo *,int) | | support_format_addrinfo | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char **,int) | | addrsort | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | Curl_str2addr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | PEM_proc_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_get_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIO *,int) | | BIO_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIO *,int) | | BIO_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | DH_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | DH_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DH *,int) | | ossl_dh_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | DSA_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | DSA_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const DSA *,int) | | ossl_dsa_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | RSA_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | RSA_test_flags | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const RSA *,int) | | ossl_rsa_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL *,int) | | SSL_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const UI *,int) | | UI_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509 *,int) | | X509_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509 *,int) | | X509_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const XCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const YCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | DH_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | DSA_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | Jim_StrDupLen | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | RSA_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | ftok | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | gethostbyname2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | parse_yesno | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const char *,int) | | res_gethostbyname2 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (const void *,int) | | inet6_rth_getaddr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double,int) | | __ldexp | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double,int) | | __scalbn | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (double[],int) | | getloadavg | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (fexcept_t *,int) | | fegetexceptflag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (float,int) | | __ldexpf | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (float,int) | | __scalbnf | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzflush | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzputc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_PURPOSE_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_TRUST_set | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | __lll_unlock_elision | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_MD_meth_new | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_MD_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | __isctype | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | __isctype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | div | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | div | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | inet6_rth_space | 0 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | inet6_rth_space | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (long double,int) | | __ldexpl | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (netlink_handle *,int) | | __netlink_request | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (ns_msg,int) | | ns_msg_getflag | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (obstack *,int) | | _obstack_newchunk | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_add | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_addbasis | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sigset_t *,int) | | sigaddset | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sigset_t *,int) | | sigdelset | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (timespec *,int) | | __timespec_get | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (timespec *,int) | | __timespec_getres | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (uint16_t,int) | | tls1_group_id2nid | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | DSO_dsobyaddr | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | sqlite3_realloc | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *const *,int) | | __backtrace_symbols | 1 | -| constructor_delegation.cpp:10:2:10:8 | MyValue | (wchar_t,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (link_map *,Dl_serinfo *,bool) | | _dl_rtld_di_serinfo | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (link_map *,link_map_public *,bool) | | _dl_close_worker | 2 | -| constructor_delegation.cpp:11:2:11:8 | MyValue | (size_t,char *[],bool) | | add_locales_to_archive | 2 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_clear_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_mask_bits | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_set_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | bn_expand2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | bn_wexpand | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_find_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_retry_reason | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | BIO_set_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | TXT_DB_read | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CURL *,int) | | curl_easy_pause | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA *,int) | | DSA_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA *,int) | | DSA_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_default_pbackfail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_fwide | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_init_internal | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_new_file_attach | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_new_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_old_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_sputbackc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_str_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | _IO_str_pbackfail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FTS *,int) | | fts_children | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA *,int) | | RSA_clear_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA *,int) | | RSA_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_key_update | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_read_ahead | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_security_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL *,int) | | SSL_set_verify_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_CTX *,int) | | ssl_md | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509 *,int) | | X509_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509 *,int) | | X509_self_signed | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (_Float128,int) | | __ldexpf128 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (_Float128,int) | | __scalbnf128 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (acttab *,int) | | acttab_insert | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (addrinfo *,int) | | support_format_addrinfo | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char **,int) | | addrsort | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | Curl_str2addr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | PEM_proc_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_get_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIO *,int) | | BIO_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIO *,int) | | BIO_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | DH_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | DH_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DH *,int) | | ossl_dh_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | DSA_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | DSA_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const DSA *,int) | | ossl_dsa_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | RSA_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | RSA_test_flags | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const RSA *,int) | | ossl_rsa_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL *,int) | | SSL_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const UI *,int) | | UI_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509 *,int) | | X509_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509 *,int) | | X509_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const XCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const YCHAR *,int) | CStringT | CStringT | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | DH_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | DSA_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | Jim_StrDupLen | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | RSA_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | ftok | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | gethostbyname2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | parse_yesno | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const char *,int) | | res_gethostbyname2 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const void *,int) | | inet6_rth_getaddr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double,int) | | __ldexp | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double,int) | | __scalbn | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (double[],int) | | getloadavg | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (fexcept_t *,int) | | fegetexceptflag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (float,int) | | __ldexpf | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (float,int) | | __scalbnf | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzflush | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzputc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_PURPOSE_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_TRUST_set | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | __lll_unlock_elision | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | BN_security_bits | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_MD_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_PKEY_meth_new | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | __isctype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | acttab_alloc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | div | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | inet6_rth_space | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (long double,int) | | __ldexpl | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (netlink_handle *,int) | | __netlink_request | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ns_msg,int) | | ns_msg_getflag | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (obstack *,int) | | _obstack_newchunk | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_add | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_addbasis | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sigset_t *,int) | | sigaddset | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sigset_t *,int) | | sigdelset | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (timespec *,int) | | __timespec_get | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (timespec *,int) | | __timespec_getres | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uint16_t,int) | | tls1_group_id2nid | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | DSO_dsobyaddr | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | sqlite3_realloc | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *const *,int) | | __backtrace_symbols | 1 | -| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (wchar_t,int) | CStringT | CStringT | 1 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_STRING_type_new | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_tag2bit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ASN1_tag2str | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Jim_ReturnCode | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Jim_SignalId | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2ln | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2obj | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OBJ_nid2sn | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | OSSL_trace_get_category_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | PKCS12_init | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | Symbol_Nth | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_PURPOSE_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get_by_id | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __btowc | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __current_locale_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __fdopendir | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __get_errlist | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __get_errname | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __math_invalid_i | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __math_invalidf_i | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_class | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_rcode | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __p_type | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __pkey_get | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __sigdescr_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | __strerrordesc_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | _tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | _toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | btowc | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | curlx_sitouz | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | evp_pkey_type2name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | inet6_option_space | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isalnum | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isalpha | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isblank | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | iscntrl | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isdigit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isgraph | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | islower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isprint | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ispunct | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isspace | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | isxdigit | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sigabbrev_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_compileoption_get | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_errstr | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | strerrorname_np | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | support_report_failure | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | svcudp_create | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tls13_alert_code | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | toascii | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tolower | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | toupper | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uabs | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv__accept | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_err_name | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_get_osfhandle | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_strerror | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_translate_sys_error | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | zError | 0 | -| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_STRING_type_new | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2bit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2str | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | EVP_PKEY_asn1_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Jim_ReturnCode | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Jim_SignalId | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2ln | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2obj | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OBJ_nid2sn | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OSSL_STORE_INFO_type_string | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | OSSL_trace_get_category_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | PKCS12_init | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | Symbol_Nth | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_PURPOSE_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_PURPOSE_get_by_id | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get_by_id | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __btowc | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __current_locale_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __fdopendir | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __get_errlist | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __get_errname | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __math_invalid_i | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __math_invalidf_i | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_class | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_rcode | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __p_type | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __pkey_get | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __sigdescr_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | __strerrordesc_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | _tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | _toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | btowc | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | curlx_sitouz | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | evp_pkey_type2name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | inet6_option_space | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isalnum | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isalpha | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isblank | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | iscntrl | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isdigit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isgraph | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | islower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isprint | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ispunct | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isspace | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | isxdigit | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_cmp_bodytype_to_string | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sigabbrev_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_compileoption_get | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_errstr | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | strerrorname_np | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | support_report_failure | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | svcudp_create | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tls13_alert_code | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | toascii | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tolower | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | toupper | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uabs | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv__accept | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_err_name | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_get_osfhandle | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_strerror | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_translate_sys_error | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | zError | 0 | -| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | __pthread_cleanup_class | __setdoit | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | Curl_cpool_upkeep | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __dlclose | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __libc_dlclose | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __libc_free | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | __malloc_usable_size | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | _dl_allocate_tls | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | _dl_close | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | malloc_usable_size | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | ossl_kdf_data_new | 0 | -| file://:0:0:0:0 | operator delete | (void *) | | support_shared_free | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | BN_num_bits_word | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | BUF_MEM_new_ex | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultouc | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultous | 0 | -| file://:0:0:0:0 | operator new | (unsigned long) | | next_prime | 0 | -| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | -| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:5:5:5:12 | snprintf | (char **,int,const char *,...) | | ___asprintf_chk | 2 | -| format.cpp:5:5:5:12 | snprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 0 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 1 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 2 | -| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | -| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:5:5:5:12 | snprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:6:5:6:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| format.cpp:6:5:6:11 | sprintf | (char **,const char *,...) | | ___asprintf | 1 | -| format.cpp:6:5:6:11 | sprintf | (char **,const char *,...) | | ___asprintf | 2 | -| format.cpp:6:5:6:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| format.cpp:7:5:7:12 | swprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:7:5:7:12 | swprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:7:5:7:12 | swprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:7:5:7:12 | swprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_bio_ECPKParameters | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_ECPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_EC_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_bio | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_bio_NETSCAPE_CERT_SEQUENCE | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_bio_PKCS7 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8_PRIV_KEY_INFO | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPublicKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_bio_SSL_SESSION | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509_AUX | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_bio_X509_ACERT | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_bio_X509_CRL | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_bio_X509_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_bio_X509_REQ | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (DSO *,int,long,void *) | | DSO_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DH **,pem_password_cb *,void *) | | PEM_read_DHparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAparams | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_ECPKParameters | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_ECPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_EC_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_fp | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_NETSCAPE_CERT_SEQUENCE | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_PKCS7 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_PKCS8_PRIV_KEY_INFO | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPrivateKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPublicKey | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSA_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_SSL_SESSION | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509_AUX | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_X509_ACERT | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_X509_CRL | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_X509_PUBKEY | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_X509_REQ | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_PKCS8 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,int,const char *,va_list) | | ___vfprintf_chk | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,int,const char *,va_list) | | ___vfprintf_chk | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (OSSL_QTX *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_qtx_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (QUIC_CHANNEL *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_quic_channel_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (QUIC_RXFC *,uint64_t,..(*)(..),void *) | | ossl_quic_rxfc_init_standalone | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | SSL_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | dtls1_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | ossl_quic_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,int,long,void *) | | ssl3_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL *,ossl_statem_mutate_handshake_cb,ossl_statem_finish_mutate_handshake_cb,void *) | | ossl_statem_set_mutator | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,SSL_CTX_generate_session_ticket_fn,SSL_CTX_decrypt_session_ticket_fn,void *) | | SSL_CTX_set_session_ticket_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | SSL_CTX_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | ossl_quic_ctx_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (SSL_CTX *,int,long,void *) | | ssl3_ctx_ctrl | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | PEM_def_callback | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | ___vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *,__gnuc_va_list,va_list) | | _IO_vsscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *__restrict__,__gnuc_va_list,va_list) | | __isoc23_vscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,const char *__restrict__,__gnuc_va_list,va_list) | | __isoc99_vscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const char *,int,void *,void *) | | support_readdir_r_check | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const wchar_t *,const wchar_t *__restrict__,__gnuc_va_list,va_list) | | __isoc23_vwscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (const wchar_t *,const wchar_t *__restrict__,__gnuc_va_list,va_list) | | __isoc99_vwscanf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (hash_table *,const void *,size_t,void *) | | insert_entry | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,int,..(*)(..),void *) | | sqlite3_progress_handler | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (void *,const char *,const char *,void *) | | _dl_vsym | 2 | -| format.cpp:14:5:14:13 | vsnprintf | (void *,const char *,const char *,void *) | | _dl_vsym | 3 | -| format.cpp:14:5:14:13 | vsnprintf | (wchar_t *,size_t,const wchar_t *,va_list) | | __vswprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char **,int,const char *,...) | | ___asprintf_chk | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char **,int,const char *,...) | | ___asprintf_chk | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 1 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 0 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 1 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 2 | -| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | __strfmon | 3 | -| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 | -| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 | -| format.cpp:16:5:16:13 | mysprintf | (ucontext_t *,..(*)(..),int,...) | | __makecontext | 3 | -| format.cpp:28:5:28:10 | sscanf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| format.cpp:28:5:28:10 | sscanf | (char **,const char *,...) | | ___asprintf | 1 | -| format.cpp:28:5:28:10 | sscanf | (char **,const char *,...) | | ___asprintf | 2 | -| format.cpp:28:5:28:10 | sscanf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | BIO_gethostbyname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_copy_header_value | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_get_scheme_handler | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_getdate_capped | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Jim_StrDup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | OPENSSL_LH_strhash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Strsafe | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | Symbol_new | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | UI_create_method | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | X509V3_parse_list | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | X509_LOOKUP_meth_new | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __basename | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __gconv_find_shlib | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __gettext | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __hash_string | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __nss_action_parse | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __strdup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __textdomain | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __tzset_parse_tz | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | __tzstring | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS_NC | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | a64l | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | charmap_opendir | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | ether_aton | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | getdate | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | inetstr2int | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | last_component | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_path_end | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_progname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | ossl_lh_strcasehash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | repertoire_read | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | res_gethostbyname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | sgetsgent | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | sgetspent | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | strhash | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uc_script_byname | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uv__strdup | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| format.cpp:142:8:142:13 | strlen | (const char *) | | xstrdup | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | _IO_gets | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __mktemp | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_group | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_owner | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __nis_default_ttl | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | __xpg_basename | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | ctermid | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | cuserid | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | des_setparity | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | dirname | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | getwd | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | mkdtemp | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | | strfry | 0 | -| map.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | BIO_gethostbyname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_copy_header_value | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_getdate_capped | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Jim_StrDup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Strsafe | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | Symbol_new | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | UI_create_method | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | X509V3_parse_list | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __basename | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __gconv_find_shlib | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __gettext | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __hash_string | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __nss_action_parse | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __strdup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __textdomain | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __tzset_parse_tz | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | __tzstring | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | a64l | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | charmap_opendir | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | ether_aton | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | getdate | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | inetstr2int | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | last_component | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | opt_path_end | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | opt_progname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | repertoire_read | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | res_gethostbyname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | sgetsgent | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | sgetspent | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | strhash | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uc_script_byname | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uv__strdup | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| map.cpp:9:6:9:9 | sink | (const char *) | | xstrdup | 0 | -| map.cpp:442:7:442:19 | indirect_sink | (int *) | | rresvport | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_STRING_type_new | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2bit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2str | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Jim_ReturnCode | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Jim_SignalId | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2ln | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2obj | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OBJ_nid2sn | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | OSSL_trace_get_category_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | PKCS12_init | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | Symbol_Nth | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_PURPOSE_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get_by_id | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __btowc | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __current_locale_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __fdopendir | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __get_errlist | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __get_errname | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __math_invalid_i | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __math_invalidf_i | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_class | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_rcode | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __p_type | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __pkey_get | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __sigdescr_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | __strerrordesc_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | _tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | _toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | btowc | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | curlx_sitouz | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | evp_pkey_type2name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | inet6_option_space | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isalnum | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isalpha | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isblank | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | iscntrl | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isdigit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isgraph | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | islower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isprint | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ispunct | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isspace | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | isxdigit | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sigabbrev_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_compileoption_get | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_errstr | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | strerrorname_np | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | support_report_failure | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | svcudp_create | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tls13_alert_code | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | toascii | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tolower | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | toupper | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uabs | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv__accept | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_err_name | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_get_osfhandle | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_strerror | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_translate_sys_error | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | zError | 0 | -| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | _IO_gets | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __mktemp | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_group | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_owner | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __nis_default_ttl | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | __xpg_basename | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | ctermid | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | cuserid | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | des_setparity | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | dirname | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | getwd | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | mkdtemp | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | | strfry | 0 | -| set.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2bit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2str | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Jim_ReturnCode | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Jim_SignalId | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2ln | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2obj | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2sn | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | PKCS12_init | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | Symbol_Nth | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __btowc | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __current_locale_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __fdopendir | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __get_errlist | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __get_errname | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __math_invalid_i | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __math_invalidf_i | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_class | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_rcode | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __p_type | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __pkey_get | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __sigdescr_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | __strerrordesc_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | _tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | _toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | btowc | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | inet6_option_space | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isalnum | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isalpha | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isblank | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | iscntrl | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isdigit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isgraph | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | islower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isprint | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ispunct | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isspace | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | isxdigit | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sigabbrev_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | strerrorname_np | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | support_report_failure | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | svcudp_create | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | toascii | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | tolower | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | toupper | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uabs | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | | zError | 0 | -| smart_pointer.cpp:4:6:4:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| smart_pointer.cpp:5:6:5:9 | sink | (int *) | | rresvport | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __btowc | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_class | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __p_type | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | _tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | _toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | btowc | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isalnum | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isalpha | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isblank | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isdigit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isgraph | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | islower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isprint | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ispunct | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isspace | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | toascii | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tolower | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | toupper | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uabs | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | zError | 0 | -| standalone_iterators.cpp:5:6:5:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __btowc | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_class | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __p_type | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | _tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | _toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | btowc | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isalnum | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isalpha | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isblank | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isdigit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isgraph | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | islower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isprint | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ispunct | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isspace | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | toascii | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tolower | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | toupper | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uabs | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | zError | 0 | -| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __btowc | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_class | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __p_type | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | _tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | _toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | btowc | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isalnum | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isalpha | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isblank | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isdigit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isgraph | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | islower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isprint | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ispunct | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isspace | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | toascii | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tolower | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | toupper | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uabs | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | zError | 0 | -| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_STRING_type_new | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2bit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2str | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Jim_ReturnCode | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Jim_SignalId | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2ln | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2obj | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OBJ_nid2sn | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | OSSL_trace_get_category_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | PKCS12_init | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | Symbol_Nth | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_PURPOSE_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_PURPOSE_get_by_id | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get_by_id | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __btowc | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __current_locale_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __fdopendir | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __get_errlist | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __get_errname | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __math_invalid_i | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __math_invalidf_i | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_class | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_rcode | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __p_type | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __pkey_get | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __sigdescr_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | __strerrordesc_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | _tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | _toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | btowc | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | curlx_sitouz | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | evp_pkey_type2name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | inet6_option_space | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isalnum | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isalpha | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isblank | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | iscntrl | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isdigit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isgraph | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | islower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isprint | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ispunct | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isspace | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | isxdigit | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sigabbrev_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_compileoption_get | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_errstr | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | strerrorname_np | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | support_report_failure | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | svcudp_create | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tls13_alert_code | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | toascii | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tolower | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | toupper | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uabs | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv__accept | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_err_name | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_get_osfhandle | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_strerror | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_translate_sys_error | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | zError | 0 | -| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_clear_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_mask_bits | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_set_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | bn_expand2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | bn_wexpand | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_find_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_retry_reason | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | BIO_set_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | TXT_DB_read | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (CURL *,int) | | curl_easy_pause | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA *,int) | | DSA_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA *,int) | | DSA_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_default_pbackfail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_fwide | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_init_internal | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_new_file_attach | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_new_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_old_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_sputbackc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_str_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | _IO_str_pbackfail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (FTS *,int) | | fts_children | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA *,int) | | RSA_clear_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA *,int) | | RSA_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_key_update | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_read_ahead | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_security_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL *,int) | | SSL_set_verify_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_CTX *,int) | | ssl_md | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509 *,int) | | X509_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509 *,int) | | X509_self_signed | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (_Float128,int) | | __ldexpf128 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (_Float128,int) | | __scalbnf128 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (acttab *,int) | | acttab_insert | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (addrinfo *,int) | | support_format_addrinfo | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char **,int) | | addrsort | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | Curl_str2addr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | PEM_proc_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (char,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_get_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIO *,int) | | BIO_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIO *,int) | | BIO_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | DH_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | DH_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DH *,int) | | ossl_dh_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | DSA_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | DSA_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const DSA *,int) | | ossl_dsa_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | RSA_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | RSA_test_flags | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const RSA *,int) | | ossl_rsa_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL *,int) | | SSL_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const UI *,int) | | UI_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509 *,int) | | X509_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509 *,int) | | X509_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const XCHAR *,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const YCHAR *,int) | CStringT | CStringT | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | DH_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | DSA_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | Jim_StrDupLen | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | RSA_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | ftok | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | gethostbyname2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | parse_yesno | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const char *,int) | | res_gethostbyname2 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (const void *,int) | | inet6_rth_getaddr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double,int) | | __ldexp | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double,int) | | __scalbn | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (double[],int) | | getloadavg | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (fexcept_t *,int) | | fegetexceptflag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (float,int) | | __ldexpf | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (float,int) | | __scalbnf | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzflush | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzputc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_PURPOSE_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_TRUST_set | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | __lll_unlock_elision | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | BN_security_bits | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_MD_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_PKEY_meth_new | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | __isctype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | acttab_alloc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | div | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | inet6_rth_space | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (long double,int) | | __ldexpl | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (netlink_handle *,int) | | __netlink_request | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (ns_msg,int) | | ns_msg_getflag | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (obstack *,int) | | _obstack_newchunk | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_add | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_addbasis | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sigset_t *,int) | | sigaddset | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sigset_t *,int) | | sigdelset | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (timespec *,int) | | __timespec_get | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (timespec *,int) | | __timespec_getres | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (uint16_t,int) | | tls1_group_id2nid | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | DSO_dsobyaddr | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | sqlite3_realloc | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *const *,int) | | __backtrace_symbols | 1 | -| standalone_iterators.cpp:103:27:103:36 | operator+= | (wchar_t,int) | CStringT | CStringT | 1 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __get_errname | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_class | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __p_type | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | _toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | btowc | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalnum | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isalpha | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isblank | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | iscntrl | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isgraph | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | islower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isprint | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ispunct | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isspace | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | isxdigit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toascii | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | tolower | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | toupper | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uabs | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:52:12:52:21 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2bit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2str | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Jim_ReturnCode | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Jim_SignalId | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2ln | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2obj | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OBJ_nid2sn | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | PKCS12_init | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | Symbol_Nth | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __btowc | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __current_locale_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __fdopendir | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __get_errlist | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __get_errname | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __math_invalid_i | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __math_invalidf_i | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_class | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_rcode | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __p_type | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __pkey_get | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __sigdescr_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | __strerrordesc_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | _tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | _toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | btowc | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | c_tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | c_toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | curlx_sitouz | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | evp_pkey_type2name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | inet6_option_space | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isalnum | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isalpha | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isblank | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | iscntrl | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isdigit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isgraph | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | islower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isprint | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ispunct | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isspace | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | isxdigit | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | ossl_toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sigabbrev_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_errstr | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | strerrorname_np | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | support_report_failure | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | svcudp_create | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | tls13_alert_code | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | toascii | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | tolower | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | toupper | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uabs | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv__accept | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_err_name | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_get_osfhandle | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_strerror | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | uv_translate_sys_error | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | | zError | 0 | -| stl.h:54:12:54:21 | operator-- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2bit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2str | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Jim_ReturnCode | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Jim_SignalId | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2ln | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2obj | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OBJ_nid2sn | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | PKCS12_init | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | Symbol_Nth | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __btowc | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __current_locale_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __fdopendir | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __get_errlist | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __get_errname | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __math_invalid_i | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __math_invalidf_i | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_class | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_rcode | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __p_type | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __pkey_get | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __sigdescr_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | __strerrordesc_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | _tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | _toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | btowc | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | c_tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | c_toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | curlx_sitouz | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | evp_pkey_type2name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | inet6_option_space | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isalnum | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isalpha | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isblank | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | iscntrl | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isdigit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isgraph | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | islower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isprint | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ispunct | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isspace | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | isxdigit | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | ossl_toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sigabbrev_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_errstr | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | strerrorname_np | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | support_report_failure | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | svcudp_create | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | tls13_alert_code | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | toascii | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | tolower | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | toupper | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uabs | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv__accept | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_err_name | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_get_osfhandle | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_strerror | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | uv_translate_sys_error | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | | zError | 0 | -| stl.h:59:12:59:20 | operator+ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2bit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2str | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Jim_ReturnCode | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Jim_SignalId | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2ln | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2obj | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OBJ_nid2sn | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | PKCS12_init | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | Symbol_Nth | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __btowc | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __current_locale_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __fdopendir | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __get_errlist | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __get_errname | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __math_invalid_i | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __math_invalidf_i | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_class | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_rcode | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __p_type | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __pkey_get | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __sigdescr_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | __strerrordesc_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | _tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | _toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | btowc | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | c_tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | c_toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | curlx_sitouz | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | evp_pkey_type2name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | inet6_option_space | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isalnum | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isalpha | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isblank | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | iscntrl | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isdigit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isgraph | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | islower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isprint | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ispunct | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isspace | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | isxdigit | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | ossl_toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sigabbrev_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_errstr | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | strerrorname_np | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | support_report_failure | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | svcudp_create | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | tls13_alert_code | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | toascii | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | tolower | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | toupper | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uabs | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv__accept | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_err_name | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_get_osfhandle | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_strerror | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | uv_translate_sys_error | 0 | -| stl.h:60:12:60:20 | operator- | (int) | | zError | 0 | -| stl.h:60:12:60:20 | operator- | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2str | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2str | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_ReturnCode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_ReturnCode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_SignalId | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Jim_SignalId | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2ln | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2ln | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2obj | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2obj | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2sn | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OBJ_nid2sn | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | PKCS12_init | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | PKCS12_init | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Symbol_Nth | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | Symbol_Nth | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __current_locale_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __current_locale_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __fdopendir | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __fdopendir | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errlist | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errlist | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errname | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __get_errname | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalid_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalid_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalidf_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __math_invalidf_i | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_class | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_class | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_rcode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_rcode | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_type | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __p_type | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __pkey_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __pkey_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __sigdescr_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __sigdescr_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __strerrordesc_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | __strerrordesc_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | _toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | btowc | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | inet6_option_space | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | inet6_option_space | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalnum | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalnum | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalpha | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isalpha | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isblank | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isblank | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | iscntrl | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | iscntrl | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isgraph | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isgraph | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | islower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | islower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isprint | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isprint | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ispunct | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ispunct | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isspace | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isspace | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isxdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | isxdigit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | ossl_toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sigabbrev_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sigabbrev_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | strerrorname_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | strerrorname_np | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | support_report_failure | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | support_report_failure | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | svcudp_create | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | svcudp_create | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toascii | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toascii | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | tolower | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | toupper | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uabs | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uabs | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:61:13:61:22 | operator+= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2bit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2str | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Jim_ReturnCode | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Jim_SignalId | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2ln | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2obj | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OBJ_nid2sn | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | PKCS12_init | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | Symbol_Nth | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __btowc | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __current_locale_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __fdopendir | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __get_errlist | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __get_errname | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __math_invalid_i | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __math_invalidf_i | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_class | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_rcode | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __p_type | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __pkey_get | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __sigdescr_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | __strerrordesc_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | _tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | _toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | btowc | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | c_tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | c_toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | curlx_sitouz | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | evp_pkey_type2name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | inet6_option_space | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isalnum | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isalpha | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isblank | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | iscntrl | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isdigit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isgraph | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | islower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isprint | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ispunct | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isspace | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | isxdigit | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | ossl_toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sigabbrev_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_errstr | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | strerrorname_np | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | support_report_failure | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | svcudp_create | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | tls13_alert_code | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | toascii | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | tolower | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | toupper | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uabs | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv__accept | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_err_name | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_get_osfhandle | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_strerror | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | uv_translate_sys_error | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | | zError | 0 | -| stl.h:62:13:62:22 | operator-= | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2bit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2str | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Jim_ReturnCode | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Jim_SignalId | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2ln | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2obj | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OBJ_nid2sn | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | PKCS12_init | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | Symbol_Nth | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __btowc | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __current_locale_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __fdopendir | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __get_errlist | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __get_errname | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __math_invalid_i | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __math_invalidf_i | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_class | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_rcode | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __p_type | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __pkey_get | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __sigdescr_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | __strerrordesc_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | _tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | _toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | btowc | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | c_tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | c_toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | curlx_sitouz | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | evp_pkey_type2name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | inet6_option_space | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isalnum | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isalpha | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isblank | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | iscntrl | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isdigit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isgraph | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | islower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isprint | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ispunct | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isspace | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | isxdigit | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | ossl_toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sigabbrev_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_errstr | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | strerrorname_np | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | support_report_failure | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | svcudp_create | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | tls13_alert_code | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | toascii | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | tolower | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | toupper | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uabs | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv__accept | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_err_name | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_get_osfhandle | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_strerror | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | uv_translate_sys_error | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | | zError | 0 | -| stl.h:64:18:64:27 | operator[] | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2str | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_ReturnCode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Jim_SignalId | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2ln | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2obj | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OBJ_nid2sn | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | PKCS12_init | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | Symbol_Nth | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __current_locale_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __fdopendir | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errlist | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errname | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __get_errname | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalid_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __math_invalidf_i | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_class | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_class | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_rcode | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_type | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __p_type | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __pkey_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __sigdescr_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | __strerrordesc_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | _toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | btowc | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | inet6_option_space | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalnum | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalnum | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalpha | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isalpha | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isblank | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isblank | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | iscntrl | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | iscntrl | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isgraph | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isgraph | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | islower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | islower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isprint | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isprint | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ispunct | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ispunct | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isspace | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isspace | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isxdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | isxdigit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | ossl_toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sigabbrev_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | strerrorname_np | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | support_report_failure | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | svcudp_create | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toascii | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toascii | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | tolower | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | toupper | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uabs | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uabs | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:91:24:91:33 | operator++ | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | list | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | list | assign | 1 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:185:17:185:22 | insert | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:190:17:190:23 | replace | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:218:33:218:35 | get | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:218:33:218:35 | get | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:218:33:218:35 | get | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:218:33:218:35 | get | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:218:33:218:35 | get | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:218:33:218:35 | get | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:218:33:218:35 | get | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:218:33:218:35 | get | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:218:33:218:35 | get | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:218:33:218:35 | get | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:218:33:218:35 | get | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:218:33:218:35 | get | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:218:33:218:35 | get | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:218:33:218:35 | get | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:218:33:218:35 | get | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:218:33:218:35 | get | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:220:33:220:36 | read | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:220:33:220:36 | read | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:220:33:220:36 | read | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:220:33:220:36 | read | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:220:33:220:36 | read | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:220:33:220:36 | read | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:220:33:220:36 | read | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:220:33:220:36 | read | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:220:33:220:36 | read | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:220:33:220:36 | read | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:220:33:220:36 | read | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:220:33:220:36 | read | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:220:33:220:36 | read | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:220:33:220:36 | read | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:220:33:220:36 | read | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:220:33:220:36 | read | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:221:14:221:21 | readsome | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:221:14:221:21 | readsome | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:221:14:221:21 | readsome | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:221:14:221:21 | readsome | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:221:14:221:21 | readsome | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:221:14:221:21 | readsome | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:221:14:221:21 | readsome | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:221:14:221:21 | readsome | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:221:14:221:21 | readsome | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:221:14:221:21 | readsome | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:221:14:221:21 | readsome | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:225:32:225:38 | getline | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:225:32:225:38 | getline | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:225:32:225:38 | getline | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:225:32:225:38 | getline | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:225:32:225:38 | getline | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:225:32:225:38 | getline | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:225:32:225:38 | getline | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:225:32:225:38 | getline | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:225:32:225:38 | getline | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:225:32:225:38 | getline | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:225:32:225:38 | getline | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:232:84:232:90 | getline | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_STRING_type_new | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_tag2bit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ASN1_tag2str | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Jim_ReturnCode | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Jim_SignalId | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2ln | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2obj | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OBJ_nid2sn | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | OSSL_trace_get_category_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | PKCS12_init | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | Symbol_Nth | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_PURPOSE_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_PURPOSE_get_by_id | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get_by_id | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __btowc | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __current_locale_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __fdopendir | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __get_errlist | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __get_errname | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __math_invalid_i | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __math_invalidf_i | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_class | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_rcode | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __p_type | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __pkey_get | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __sigdescr_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | __strerrordesc_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | _tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | _toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | btowc | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | c_tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | c_toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | curlx_sitouz | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | evp_pkey_type2name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | inet6_option_space | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isalnum | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isalpha | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isblank | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | iscntrl | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isdigit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isgraph | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | islower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isprint | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ispunct | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isspace | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | isxdigit | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | ossl_toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sigabbrev_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_compileoption_get | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_errstr | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | strerrorname_np | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | support_report_failure | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | svcudp_create | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | tls13_alert_code | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | toascii | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | tolower | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | toupper | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uabs | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv__accept | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_err_name | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_get_osfhandle | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_strerror | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | uv_translate_sys_error | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | | zError | 0 | -| stl.h:240:33:240:42 | operator<< | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| stl.h:243:33:243:37 | write | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| stl.h:243:33:243:37 | write | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| stl.h:243:33:243:37 | write | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| stl.h:243:33:243:37 | write | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| stl.h:243:33:243:37 | write | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| stl.h:243:33:243:37 | write | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| stl.h:243:33:243:37 | write | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| stl.h:243:33:243:37 | write | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| stl.h:243:33:243:37 | write | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| stl.h:243:33:243:37 | write | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| stl.h:243:33:243:37 | write | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| stl.h:243:33:243:37 | write | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| stl.h:243:33:243:37 | write | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| stl.h:243:33:243:37 | write | (hash_table *,unsigned long) | | init_hash | 1 | -| stl.h:243:33:243:37 | write | (u_long,unsigned long) | | __p_option | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (const list &,const Allocator &) | list | list | 1 | | stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | | stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | | stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | -| stl.h:294:12:294:17 | vector | (list &&,const Allocator &) | list | list | 1 | | stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | | stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | | stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | | stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | | stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | | stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | deque | deque | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | list | list | 2 | | stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 0 | | stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 1 | | stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | deque | deque | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | forward_list | forward_list | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | list | list | 2 | | stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:301:11:301:19 | operator= | (const vector &) | vector | vector | 0 | -| stl.h:302:11:302:19 | operator= | (vector &&) | vector | vector | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | list | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | list | assign | 1 | | stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 0 | | stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | deque | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | forward_list | insert_after | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | list | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (const_iterator,const T &) | vector | insert | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | deque | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | forward_list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | list | assign | 1 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | | stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __sleep | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | la_version | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | Jim_IntHashFunction | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | __sleep | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | __x86_get_cpuid_feature_leaf | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | curlx_uitous | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | la_version | 0 | -| stl.h:318:13:318:14 | at | (unsigned int) | | ssl3_get_cipher | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | list | insert | 1 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 0 | | stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | deque | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | forward_list | insert_after | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | list | insert | 2 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | | stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:335:37:335:43 | emplace | (format_string,Args &&) | | format | 1 | -| stl.h:351:12:351:21 | shared_ptr | (T *) | ComPtr | operator= | 0 | -| stl.h:369:12:369:21 | unique_ptr | (T *) | ComPtr | operator= | 0 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const deque &,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const list &,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (deque &&,const Allocator &) | deque | deque | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (list &&,const Allocator &) | list | list | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:396:3:396:3 | pair | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:440:36:440:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:440:36:440:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:448:48:448:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:448:48:448:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:452:42:452:57 | insert_or_assign | (format_string,Args &&) | | format | 1 | -| stl.h:508:36:508:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:508:36:508:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:516:48:516:58 | try_emplace | (format_string,Args &&) | | format | 1 | -| stl.h:520:42:520:57 | insert_or_assign | (format_string,Args &&) | | format | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | list | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | list | assign | 1 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:557:33:557:35 | set | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:569:36:569:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:569:36:569:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | list | insert | 1 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:573:12:573:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:574:38:574:43 | insert | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| stl.h:611:33:611:45 | unordered_set | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| stl.h:611:33:611:45 | unordered_set | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| stl.h:611:33:611:45 | unordered_set | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| stl.h:611:33:611:45 | unordered_set | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| stl.h:623:36:623:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:623:36:623:47 | emplace_hint | (format_string,Args &&) | | format | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | deque | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | deque | insert | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | forward_list | insert_after | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | list | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | list | insert | 1 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:627:12:627:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | deque | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | deque | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | forward_list | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | forward_list | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | list | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | list | assign | 1 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:628:38:628:43 | insert | (InputIt,InputIt) | vector | assign | 1 | | stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | | stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | | stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | | stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | -| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 0 | -| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 1 | -| string.cpp:17:6:17:9 | sink | (const char *) | | BIO_gethostbyname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_copy_header_value | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_getdate_capped | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Jim_StrDup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Strsafe | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | Symbol_new | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | UI_create_method | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | X509V3_parse_list | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __basename | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __gconv_find_shlib | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __gettext | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __hash_string | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __nss_action_parse | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __strdup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __textdomain | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __tzset_parse_tz | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | __tzstring | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | a64l | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | charmap_opendir | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | ether_aton | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | getdate | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | inetstr2int | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | last_component | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | opt_path_end | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | opt_progname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | repertoire_read | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | res_gethostbyname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | sgetsgent | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | sgetspent | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | strhash | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uc_script_byname | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uv__strdup | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| string.cpp:17:6:17:9 | sink | (const char *) | | xstrdup | 0 | -| string.cpp:19:6:19:9 | sink | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| string.cpp:19:6:19:9 | sink | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | _CONF_new_section | 1 | -| string.cpp:19:6:19:9 | sink | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| string.cpp:19:6:19:9 | sink | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_convert_filename | 1 | -| string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_set_filename | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| string.cpp:19:6:19:9 | sink | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (GlobalConfig *,const char *) | | setvariable | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| string.cpp:19:6:19:9 | sink | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| string.cpp:19:6:19:9 | sink | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| string.cpp:19:6:19:9 | sink | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| string.cpp:19:6:19:9 | sink | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_add1_host | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_set1_host | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| string.cpp:19:6:19:9 | sink | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| string.cpp:19:6:19:9 | sink | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_add_error_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_add_info_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_dup_error_string | 1 | -| string.cpp:19:6:19:9 | sink | (UI *,const char *) | | UI_dup_info_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509 *,const char *) | | x509_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| string.cpp:19:6:19:9 | sink | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| string.cpp:19:6:19:9 | sink | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| string.cpp:19:6:19:9 | sink | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| string.cpp:19:6:19:9 | sink | (char **,const char *) | | Curl_setstropt | 1 | -| string.cpp:19:6:19:9 | sink | (char **,const char *) | | __strsep | 1 | -| string.cpp:19:6:19:9 | sink | (char *,const char *) | | xstrdup | 1 | -| string.cpp:19:6:19:9 | sink | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| string.cpp:19:6:19:9 | sink | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bindtextdomain | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __bindtextdomain | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __dgettext | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __dgettext | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __gconv_compare_alias | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __gconv_compare_alias | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcasestr | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcasestr | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strcspn_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_sse42 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strspn_sse42 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strstr_generic | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strstr_generic | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strverscmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | __strverscmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | advance | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | advance | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_aliases | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_aliases | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_open | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | charmap_open | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | chroot_canon | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | chroot_canon | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | iconv_open | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | iconv_open | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | step | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | step | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | tempnam | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | tempnam | 1 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | xfopen | 0 | -| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | xfopen | 1 | -| string.cpp:19:6:19:9 | sink | (const mntent *,const char *) | | __hasmntopt | 1 | -| string.cpp:19:6:19:9 | sink | (const nis_error,const char *) | | nis_sperror | 1 | -| string.cpp:19:6:19:9 | sink | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| string.cpp:19:6:19:9 | sink | (curl_off_t *,const char *) | | str2offset | 1 | -| string.cpp:19:6:19:9 | sink | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| string.cpp:19:6:19:9 | sink | (curl_slist **,const char *) | | add2list | 1 | -| string.cpp:19:6:19:9 | sink | (curl_slist *,const char *) | | curl_slist_append | 1 | -| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| string.cpp:19:6:19:9 | sink | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| string.cpp:19:6:19:9 | sink | (gzFile,const char *) | | gzputs | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | BIO_meth_new | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | _IO_new_fdopen | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | gzdopen | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | setlocale | 1 | -| string.cpp:19:6:19:9 | sink | (int,const char *) | | xsetlocale | 1 | -| string.cpp:19:6:19:9 | sink | (lemon *,const char *) | | file_makename | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | secs2ms | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2num | 1 | -| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2unum | 1 | -| string.cpp:19:6:19:9 | sink | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| string.cpp:19:6:19:9 | sink | (size_t *,const char *) | | next_protos_parse | 1 | -| string.cpp:19:6:19:9 | sink | (slist_wc **,const char *) | | easysrc_add | 1 | -| string.cpp:19:6:19:9 | sink | (slist_wc *,const char *) | | slist_wc_append | 1 | -| string.cpp:19:6:19:9 | sink | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| string.cpp:19:6:19:9 | sink | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| string.cpp:19:6:19:9 | sink | (stringtable *,const char *) | | stringtable_add | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_cert_ex | 1 | -| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_name_ex | 1 | -| string.cpp:19:6:19:9 | sink | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_tolower | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_toupper | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | findshortopt | 0 | -| string.cpp:20:6:20:9 | sink | (char) | | operator+= | 0 | -| string.cpp:20:6:20:9 | sink | (char) | CComBSTR | Append | 0 | -| string.cpp:20:6:20:9 | sink | (char) | CSimpleStringT | operator+= | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | PKCS12_init | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __btowc | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __current_locale_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __fdopendir | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __get_errlist | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __get_errname | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_class | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_rcode | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __p_type | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __pkey_get | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | _tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | _toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | btowc | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | inet6_option_space | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isalnum | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isalpha | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isblank | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | iscntrl | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isdigit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isgraph | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | islower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isprint | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ispunct | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isspace | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | isxdigit | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | strerrorname_np | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | support_report_failure | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | svcudp_create | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | toascii | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | tolower | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | toupper | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uabs | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | | zError | 0 | -| stringstream.cpp:13:6:13:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | PKCS12_init | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __btowc | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __current_locale_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __fdopendir | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __get_errlist | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __get_errname | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_class | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_rcode | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __p_type | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __pkey_get | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | _tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | _toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | btowc | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | inet6_option_space | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isalnum | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isalpha | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isblank | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | iscntrl | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isdigit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isgraph | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | islower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isprint | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ispunct | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isspace | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | isxdigit | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | strerrorname_np | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | support_report_failure | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | svcudp_create | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | toascii | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tolower | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | toupper | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uabs | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv__accept | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_err_name | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_strerror | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | zError | 0 | -| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | __pthread_cleanup_class | __setdoit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_STRING_type_new | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2bit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2str | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | EVP_PKEY_asn1_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Jim_ReturnCode | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Jim_SignalId | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2ln | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2obj | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OBJ_nid2sn | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OSSL_STORE_INFO_type_string | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | OSSL_trace_get_category_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | PKCS12_init | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | Symbol_Nth | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_PURPOSE_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_PURPOSE_get_by_id | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get_by_id | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __btowc | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __current_locale_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __fdopendir | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __get_errlist | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __get_errname | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __math_invalid_i | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __math_invalidf_i | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_class | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_rcode | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __p_type | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __pkey_get | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __sigdescr_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | __strerrordesc_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | _tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | _toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | btowc | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | curlx_sitouz | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | evp_pkey_type2name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | inet6_option_space | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isalnum | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isalpha | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isblank | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | iscntrl | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isdigit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isgraph | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | islower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isprint | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ispunct | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isspace | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | isxdigit | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_cmp_bodytype_to_string | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sigabbrev_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_compileoption_get | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_errstr | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | strerrorname_np | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | support_report_failure | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | svcudp_create | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tls13_alert_code | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | toascii | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tolower | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | toupper | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uabs | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv__accept | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_err_name | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_get_osfhandle | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_strerror | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_translate_sys_error | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | zError | 0 | -| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | __pthread_cleanup_class | __setdoit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_STRING_type_new | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2bit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2str | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | EVP_PKEY_asn1_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Jim_ReturnCode | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Jim_SignalId | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2ln | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2obj | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OBJ_nid2sn | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OSSL_STORE_INFO_type_string | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | OSSL_trace_get_category_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | PKCS12_init | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | Symbol_Nth | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_PURPOSE_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_PURPOSE_get_by_id | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get_by_id | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __btowc | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __current_locale_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __fdopendir | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __get_errlist | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __get_errname | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __math_invalid_i | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __math_invalidf_i | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_class | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_rcode | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __p_type | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __pkey_get | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __sigdescr_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | __strerrordesc_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | _tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | _toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | btowc | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | curlx_sitouz | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | evp_pkey_type2name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | inet6_option_space | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isalnum | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isalpha | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isblank | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | iscntrl | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isdigit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isgraph | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | islower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isprint | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ispunct | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isspace | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | isxdigit | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_cmp_bodytype_to_string | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sigabbrev_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_compileoption_get | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_errstr | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | strerrorname_np | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | support_report_failure | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | svcudp_create | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tls13_alert_code | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | toascii | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tolower | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | toupper | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uabs | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv__accept | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_err_name | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_get_osfhandle | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_strerror | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_translate_sys_error | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | zError | 0 | -| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (FTS *,int) | | fts_children | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char **,int) | | addrsort | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | ftok | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double,int) | | __ldexp | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double,int) | | __scalbn | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (double[],int) | | getloadavg | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (float,int) | | __ldexpf | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (float,int) | | __scalbnf | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzflush | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzputc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | __isctype | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | __isctype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | div | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | div | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (long double,int) | | __ldexpl | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:4:6:4:21 | arithAssignments | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ASN1_tag2str | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Jim_SignalId | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | PKCS12_init | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | Symbol_Nth | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __btowc | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __current_locale_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __fdopendir | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __get_errlist | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __get_errname | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __math_invalid_i | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __math_invalidf_i | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_class | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_rcode | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __p_type | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __pkey_get | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __sigdescr_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | __strerrordesc_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | _tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | _toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | btowc | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | c_tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | c_toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | curlx_sitouz | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | inet6_option_space | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isalnum | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isalpha | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isblank | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | iscntrl | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isdigit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isgraph | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | islower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isprint | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ispunct | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isspace | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | isxdigit | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | ossl_toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sigabbrev_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_errstr | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | strerrorname_np | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | support_report_failure | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | svcudp_create | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | tls13_alert_code | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | toascii | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | tolower | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | toupper | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uabs | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv__accept | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_err_name | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_strerror | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | | zError | 0 | -| taint.cpp:22:5:22:13 | increment | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2str | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Jim_SignalId | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | PKCS12_init | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | Symbol_Nth | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __btowc | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __current_locale_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __fdopendir | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __get_errlist | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __get_errname | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __math_invalid_i | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __math_invalidf_i | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_class | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_rcode | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __p_type | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __pkey_get | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __sigdescr_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | __strerrordesc_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | _tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | _toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | btowc | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | c_tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | c_toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | curlx_sitouz | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | inet6_option_space | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isalnum | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isalpha | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isblank | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | iscntrl | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isdigit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isgraph | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | islower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isprint | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ispunct | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isspace | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | isxdigit | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | ossl_toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sigabbrev_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_errstr | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | strerrorname_np | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | support_report_failure | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | svcudp_create | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | tls13_alert_code | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | toascii | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | tolower | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | toupper | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uabs | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv__accept | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_err_name | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_strerror | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | | zError | 0 | -| taint.cpp:23:5:23:8 | zero | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2str | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Jim_SignalId | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | PKCS12_init | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | Symbol_Nth | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __btowc | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __current_locale_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __fdopendir | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __get_errlist | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __get_errname | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __math_invalid_i | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __math_invalidf_i | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_class | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_rcode | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __p_type | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __pkey_get | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __sigdescr_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | __strerrordesc_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | _tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | _toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | btowc | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | c_tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | c_toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | curlx_sitouz | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | inet6_option_space | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isalnum | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isalpha | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isblank | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | iscntrl | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isdigit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isgraph | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | islower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isprint | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ispunct | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isspace | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | isxdigit | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sigabbrev_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_errstr | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | strerrorname_np | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | support_report_failure | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | svcudp_create | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | tls13_alert_code | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | toascii | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | tolower | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | toupper | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uabs | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv__accept | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_err_name | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_strerror | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | | zError | 0 | -| taint.cpp:100:6:100:15 | array_test | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 1 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:142:5:142:10 | select | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:142:5:142:10 | select | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:142:5:142:10 | select | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:142:5:142:10 | select | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:142:5:142:10 | select | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:142:5:142:10 | select | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:142:5:142:10 | select | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:142:5:142:10 | select | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:142:5:142:10 | select | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:142:5:142:10 | select | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:142:5:142:10 | select | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:142:5:142:10 | select | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 1 | -| taint.cpp:142:5:142:10 | select | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:142:5:142:10 | select | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:142:5:142:10 | select | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:142:5:142:10 | select | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:142:5:142:10 | select | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:142:5:142:10 | select | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:142:5:142:10 | select | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:142:5:142:10 | select | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:142:5:142:10 | select | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 1 | -| taint.cpp:142:5:142:10 | select | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:142:5:142:10 | select | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_purpose | 1 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_trust | 1 | -| taint.cpp:142:5:142:10 | select | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:142:5:142:10 | select | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:142:5:142:10 | select | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:142:5:142:10 | select | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:142:5:142:10 | select | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:142:5:142:10 | select | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:142:5:142:10 | select | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:142:5:142:10 | select | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:142:5:142:10 | select | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:142:5:142:10 | select | (acttab *,int,int) | | acttab_action | 1 | -| taint.cpp:142:5:142:10 | select | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:142:5:142:10 | select | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:142:5:142:10 | select | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:142:5:142:10 | select | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:142:5:142:10 | select | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL *,int,int) | | apps_ssl_info_callback | 1 | -| taint.cpp:142:5:142:10 | select | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:142:5:142:10 | select | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,int,int) | | __old_strpbrk_c2 | 1 | -| taint.cpp:142:5:142:10 | select | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:142:5:142:10 | select | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:142:5:142:10 | select | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | -| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:142:5:142:10 | select | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:142:5:142:10 | select | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:142:5:142:10 | select | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:142:5:142:10 | select | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:142:5:142:10 | select | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:142:5:142:10 | select | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:142:5:142:10 | select | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:142:5:142:10 | select | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:142:5:142:10 | select | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:142:5:142:10 | select | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 1 | -| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:142:5:142:10 | select | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:142:5:142:10 | select | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:142:5:142:10 | select | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 0 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 1 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 0 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 1 | -| taint.cpp:142:5:142:10 | select | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:142:5:142:10 | select | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_double | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float128 | 1 | -| taint.cpp:142:5:142:10 | select | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:142:5:142:10 | select | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:142:5:142:10 | select | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,int,int) | | sqlite3_limit | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:142:5:142:10 | select | (sqlite3expert *,int,int) | | sqlite3_expert_report | 1 | -| taint.cpp:142:5:142:10 | select | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 1 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 1 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:142:5:142:10 | select | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:142:5:142:10 | select | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:142:5:142:10 | select | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:142:5:142:10 | select | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 1 | -| taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:142:5:142:10 | select | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:142:5:142:10 | select | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 1 | -| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:142:5:142:10 | select | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:142:5:142:10 | select | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:142:5:142:10 | select | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:142:5:142:10 | select | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2str | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Jim_SignalId | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | PKCS12_init | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | Symbol_Nth | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __btowc | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __current_locale_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __fdopendir | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __get_errlist | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __get_errname | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __math_invalid_i | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __math_invalidf_i | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_class | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_rcode | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __p_type | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __pkey_get | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __sigdescr_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | __strerrordesc_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | _tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | _toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | btowc | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | c_tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | c_toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | curlx_sitouz | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | inet6_option_space | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isalnum | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isalpha | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isblank | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | iscntrl | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isdigit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isgraph | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | islower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isprint | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ispunct | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isspace | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | isxdigit | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sigabbrev_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_errstr | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | strerrorname_np | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | support_report_failure | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | svcudp_create | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | tls13_alert_code | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | toascii | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | tolower | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | toupper | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uabs | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv__accept | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_err_name | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_strerror | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | | zError | 0 | -| taint.cpp:150:6:150:12 | fn_test | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:156:7:156:12 | strcpy | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:156:7:156:12 | strcpy | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:156:7:156:12 | strcpy | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:156:7:156:12 | strcpy | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:156:7:156:12 | strcpy | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:156:7:156:12 | strcpy | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | __strsep | 1 | -| taint.cpp:156:7:156:12 | strcpy | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:156:7:156:12 | strcpy | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | advance | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | step | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:156:7:156:12 | strcpy | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:156:7:156:12 | strcpy | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:156:7:156:12 | strcpy | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:156:7:156:12 | strcpy | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | gzdopen | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | setlocale | 1 | -| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:156:7:156:12 | strcpy | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2num | 1 | -| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2unum | 1 | -| taint.cpp:156:7:156:12 | strcpy | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:156:7:156:12 | strcpy | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:156:7:156:12 | strcpy | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:156:7:156:12 | strcpy | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:156:7:156:12 | strcpy | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:156:7:156:12 | strcpy | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:157:7:157:12 | strcat | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:157:7:157:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:157:7:157:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:157:7:157:12 | strcat | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:157:7:157:12 | strcat | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:157:7:157:12 | strcat | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:157:7:157:12 | strcat | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:157:7:157:12 | strcat | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:157:7:157:12 | strcat | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | __strsep | 1 | -| taint.cpp:157:7:157:12 | strcat | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:157:7:157:12 | strcat | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:157:7:157:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | advance | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | step | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:157:7:157:12 | strcat | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:157:7:157:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:157:7:157:12 | strcat | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:157:7:157:12 | strcat | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | gzdopen | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | setlocale | 1 | -| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:157:7:157:12 | strcat | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2num | 1 | -| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2unum | 1 | -| taint.cpp:157:7:157:12 | strcat | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:157:7:157:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:157:7:157:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:157:7:157:12 | strcat | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:157:7:157:12 | strcat | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:157:7:157:12 | strcat | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:157:7:157:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:180:7:180:12 | callee | (int *) | | rresvport | 0 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 1 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:190:7:190:12 | memcpy | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 1 | -| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:190:7:190:12 | memcpy | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:190:7:190:12 | memcpy | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_peek | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_read | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 1 | -| taint.cpp:190:7:190:12 | memcpy | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:190:7:190:12 | memcpy | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:190:7:190:12 | memcpy | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:190:7:190:12 | memcpy | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:190:7:190:12 | memcpy | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:190:7:190:12 | memcpy | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:190:7:190:12 | memcpy | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,void *,int) | | support_readdir_check | 1 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:190:7:190:12 | memcpy | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:190:7:190:12 | memcpy | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:190:7:190:12 | memcpy | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:190:7:190:12 | memcpy | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:190:7:190:12 | memcpy | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:190:7:190:12 | memcpy | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:190:7:190:12 | memcpy | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:190:7:190:12 | memcpy | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:190:7:190:12 | memcpy | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:190:7:190:12 | memcpy | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:190:7:190:12 | memcpy | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:190:7:190:12 | memcpy | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:190:7:190:12 | memcpy | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:192:6:192:16 | test_memcpy | (int *) | | rresvport | 0 | -| taint.cpp:249:13:249:13 | _FUN | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:249:13:249:13 | _FUN | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:249:13:249:13 | _FUN | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | _FUN | (FTS *,int) | | fts_children | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:249:13:249:13 | _FUN | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:249:13:249:13 | _FUN | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:249:13:249:13 | _FUN | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:249:13:249:13 | _FUN | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:249:13:249:13 | _FUN | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:249:13:249:13 | _FUN | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:249:13:249:13 | _FUN | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:249:13:249:13 | _FUN | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:249:13:249:13 | _FUN | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:249:13:249:13 | _FUN | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char **,int) | | addrsort | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | ftok | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double,int) | | __ldexp | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double,int) | | __scalbn | 1 | -| taint.cpp:249:13:249:13 | _FUN | (double[],int) | | getloadavg | 1 | -| taint.cpp:249:13:249:13 | _FUN | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:249:13:249:13 | _FUN | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (float,int) | | __ldexpf | 1 | -| taint.cpp:249:13:249:13 | _FUN | (float,int) | | __scalbnf | 1 | -| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzflush | 1 | -| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzputc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | __isctype | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | __isctype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | div | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | div | 1 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:249:13:249:13 | _FUN | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:249:13:249:13 | _FUN | (long double,int) | | __ldexpl | 1 | -| taint.cpp:249:13:249:13 | _FUN | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:249:13:249:13 | _FUN | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:249:13:249:13 | _FUN | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:249:13:249:13 | _FUN | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:249:13:249:13 | _FUN | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:249:13:249:13 | _FUN | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:249:13:249:13 | _FUN | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:249:13:249:13 | _FUN | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:249:13:249:13 | _FUN | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:249:13:249:13 | _FUN | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:249:13:249:13 | _FUN | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:249:13:249:13 | _FUN | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:249:13:249:13 | _FUN | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:249:13:249:13 | operator() | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:249:13:249:13 | operator() | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:249:13:249:13 | operator() | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:249:13:249:13 | operator() | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:249:13:249:13 | operator() | (FTS *,int) | | fts_children | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:249:13:249:13 | operator() | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:249:13:249:13 | operator() | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:249:13:249:13 | operator() | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:249:13:249:13 | operator() | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:249:13:249:13 | operator() | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:249:13:249:13 | operator() | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:249:13:249:13 | operator() | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:249:13:249:13 | operator() | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:249:13:249:13 | operator() | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:249:13:249:13 | operator() | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:249:13:249:13 | operator() | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:249:13:249:13 | operator() | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:249:13:249:13 | operator() | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:249:13:249:13 | operator() | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:249:13:249:13 | operator() | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:249:13:249:13 | operator() | (char **,int) | | addrsort | 1 | -| taint.cpp:249:13:249:13 | operator() | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:249:13:249:13 | operator() | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:249:13:249:13 | operator() | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:249:13:249:13 | operator() | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | operator() | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:249:13:249:13 | operator() | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:249:13:249:13 | operator() | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:249:13:249:13 | operator() | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | ftok | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:249:13:249:13 | operator() | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:249:13:249:13 | operator() | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:249:13:249:13 | operator() | (double,int) | | __ldexp | 1 | -| taint.cpp:249:13:249:13 | operator() | (double,int) | | __scalbn | 1 | -| taint.cpp:249:13:249:13 | operator() | (double[],int) | | getloadavg | 1 | -| taint.cpp:249:13:249:13 | operator() | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:249:13:249:13 | operator() | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:249:13:249:13 | operator() | (float,int) | | __ldexpf | 1 | -| taint.cpp:249:13:249:13 | operator() | (float,int) | | __scalbnf | 1 | -| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzflush | 1 | -| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzputc | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:249:13:249:13 | operator() | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_MD_meth_new | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | __isctype | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | __isctype | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | div | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | div | 1 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | inet6_rth_space | 0 | -| taint.cpp:249:13:249:13 | operator() | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:249:13:249:13 | operator() | (long double,int) | | __ldexpl | 1 | -| taint.cpp:249:13:249:13 | operator() | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:249:13:249:13 | operator() | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:249:13:249:13 | operator() | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:249:13:249:13 | operator() | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:249:13:249:13 | operator() | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:249:13:249:13 | operator() | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:249:13:249:13 | operator() | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:249:13:249:13 | operator() | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:249:13:249:13 | operator() | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:249:13:249:13 | operator() | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:249:13:249:13 | operator() | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:249:13:249:13 | operator() | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:249:13:249:13 | operator() | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:249:13:249:13 | operator() | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:249:13:249:13 | operator() | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:249:13:249:13 | operator() | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:249:13:249:13 | operator() | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ASN1_tag2str | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Jim_SignalId | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | PKCS12_init | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | Symbol_Nth | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __btowc | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __current_locale_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __fdopendir | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __get_errlist | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __get_errname | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __math_invalid_i | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __math_invalidf_i | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_class | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_rcode | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __p_type | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __pkey_get | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __sigdescr_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | __strerrordesc_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | _tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | _toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | btowc | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | c_tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | c_toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | curlx_sitouz | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | inet6_option_space | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isalnum | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isalpha | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isblank | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | iscntrl | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isdigit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isgraph | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | islower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isprint | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ispunct | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isspace | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | isxdigit | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | ossl_toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sigabbrev_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_errstr | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | strerrorname_np | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | support_report_failure | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | svcudp_create | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | tls13_alert_code | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | toascii | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | tolower | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | toupper | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uabs | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv__accept | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_err_name | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_strerror | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:266:5:266:6 | id | (int) | | zError | 0 | -| taint.cpp:266:5:266:6 | id | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:302:6:302:14 | myAssign2 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char **,int) | | addrsort | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | ftok | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double,int) | | __ldexp | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double,int) | | __scalbn | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (double[],int) | | getloadavg | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (float,int) | | __ldexpf | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (float,int) | | __scalbnf | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | __isctype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | div | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:302:6:302:14 | myAssign2 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char **,int) | | addrsort | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | ftok | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double,int) | | __ldexp | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double,int) | | __scalbn | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (double[],int) | | getloadavg | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (float,int) | | __ldexpf | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (float,int) | | __scalbnf | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | __lll_unlock_elision | 0 | -| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | __isctype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | div | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:307:6:307:14 | myAssign3 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (FTS *,int) | | fts_children | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char **,int) | | addrsort | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | ftok | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double,int) | | __ldexp | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double,int) | | __scalbn | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (double[],int) | | getloadavg | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (float,int) | | __ldexpf | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (float,int) | | __scalbnf | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzflush | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzputc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | __lll_unlock_elision | 0 | -| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | BN_security_bits | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | __isctype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | acttab_alloc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | div | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (long double,int) | | __ldexpl | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:312:6:312:14 | myAssign4 | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Strsafe | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | Symbol_new | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | UI_create_method | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __basename | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __gettext | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __hash_string | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __strdup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __textdomain | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | __tzstring | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | a64l | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | charmap_opendir | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | ether_aton | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | getdate | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | inetstr2int | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | last_component | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_path_end | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_progname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | repertoire_read | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | sgetsgent | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | sgetspent | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | strhash | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uc_script_byname | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv__strdup | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:361:7:361:12 | strdup | (const char *) | | xstrdup | 0 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:362:7:362:13 | strndup | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:362:7:362:13 | strndup | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:362:7:362:13 | strndup | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:362:7:362:13 | strndup | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:362:7:362:13 | strndup | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:362:7:362:13 | strndup | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | plain_method | 1 | -| taint.cpp:362:7:362:13 | strndup | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __nss_module_allocate | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __strndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | charmap_hash | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | locfile_hash | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | mblen | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | mblen | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | xstrndup | 0 | -| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:362:7:362:13 | strndup | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:362:7:362:13 | strndup | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:362:7:362:13 | strndup | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:362:7:362:13 | strndup | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:362:7:362:13 | strndup | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:362:7:362:13 | strndup | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:362:7:362:13 | strndup | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:362:7:362:13 | strndup | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:362:7:362:13 | strndup | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:362:7:362:13 | strndup | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:362:7:362:13 | strndup | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:362:7:362:13 | strndup | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:362:7:362:13 | strndup | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:362:7:362:13 | strndup | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:362:7:362:13 | strndup | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | getentropy | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Strsafe | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Symbol_new | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | UI_create_method | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __basename | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __gettext | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __hash_string | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __strdup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __textdomain | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | __tzstring | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a64l | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | charmap_opendir | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | ether_aton | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | getdate | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | inetstr2int | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | last_component | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_path_end | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_progname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | repertoire_read | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | sgetsgent | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | sgetspent | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | strhash | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uc_script_byname | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv__strdup | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:364:7:364:13 | strdupa | (const char *) | | xstrdup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:365:7:365:14 | strndupa | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:365:7:365:14 | strndupa | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:365:7:365:14 | strndupa | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:365:7:365:14 | strndupa | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:365:7:365:14 | strndupa | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | plain_method | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __nss_module_allocate | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __strndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | charmap_hash | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | locfile_hash | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | mblen | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | mblen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | xstrndup | 0 | -| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:365:7:365:14 | strndupa | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:365:7:365:14 | strndupa | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:365:7:365:14 | strndupa | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:365:7:365:14 | strndupa | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:365:7:365:14 | strndupa | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:365:7:365:14 | strndupa | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:365:7:365:14 | strndupa | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:365:7:365:14 | strndupa | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:365:7:365:14 | strndupa | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:365:7:365:14 | strndupa | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:365:7:365:14 | strndupa | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:365:7:365:14 | strndupa | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | getentropy | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | _IO_gets | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __mktemp | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_group | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_owner | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | __xpg_basename | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | ctermid | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | cuserid | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | defossilize | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | des_setparity | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | dirname | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | getwd | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | make_uppercase | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | mkdtemp | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | next_item | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | | strfry | 0 | -| taint.cpp:367:6:367:16 | test_strdup | (char *) | CStringT | CStringT | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ASN1_tag2str | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Jim_SignalId | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | PKCS12_init | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | Symbol_Nth | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __btowc | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __current_locale_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __fdopendir | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __get_errlist | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __get_errname | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __math_invalid_i | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __math_invalidf_i | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_class | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_rcode | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __p_type | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __pkey_get | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __sigdescr_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | __strerrordesc_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | _tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | _toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | btowc | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | curlx_sitouz | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | inet6_option_space | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isalnum | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isalpha | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isblank | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | iscntrl | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isdigit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isgraph | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | islower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isprint | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ispunct | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isspace | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | isxdigit | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sigabbrev_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_errstr | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | strerrorname_np | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | support_report_failure | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | svcudp_create | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | tls13_alert_code | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | toascii | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | tolower | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | toupper | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uabs | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv__accept | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_err_name | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_strerror | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | | zError | 0 | -| taint.cpp:379:6:379:17 | test_strndup | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:387:6:387:16 | test_wcsdup | (wchar_t *) | CStringT | CStringT | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | _IO_gets | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __mktemp | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_group | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_owner | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | __xpg_basename | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | ctermid | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | cuserid | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | defossilize | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | des_setparity | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | dirname | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | getwd | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | make_uppercase | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | mkdtemp | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | next_item | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | strfry | 0 | -| taint.cpp:397:6:397:17 | test_strdupa | (char *) | CStringT | CStringT | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ASN1_tag2str | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Jim_SignalId | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | PKCS12_init | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | Symbol_Nth | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __btowc | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __current_locale_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __fdopendir | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __get_errlist | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __get_errname | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __math_invalid_i | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __math_invalidf_i | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_class | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_rcode | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __p_type | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __pkey_get | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __sigdescr_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | __strerrordesc_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | _tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | _toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | btowc | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | curlx_sitouz | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | inet6_option_space | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isalnum | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isalpha | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isblank | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | iscntrl | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isdigit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isgraph | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | islower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isprint | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ispunct | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isspace | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | isxdigit | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sigabbrev_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_errstr | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | strerrorname_np | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | support_report_failure | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | svcudp_create | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | tls13_alert_code | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | toascii | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | tolower | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | toupper | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uabs | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv__accept | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_err_name | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_strerror | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | | zError | 0 | -| taint.cpp:409:6:409:18 | test_strndupa | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2str | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Jim_SignalId | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | PKCS12_init | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | Symbol_Nth | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __btowc | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __current_locale_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __fdopendir | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __get_errlist | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __get_errname | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __math_invalid_i | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __math_invalidf_i | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_class | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_rcode | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __p_type | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __pkey_get | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __sigdescr_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | __strerrordesc_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | _tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | _toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | btowc | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | curlx_sitouz | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | inet6_option_space | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isalnum | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isalpha | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isblank | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | iscntrl | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isdigit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isgraph | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | islower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isprint | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ispunct | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isspace | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | isxdigit | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sigabbrev_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_errstr | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | strerrorname_np | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | support_report_failure | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | svcudp_create | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | tls13_alert_code | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | toascii | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | tolower | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | toupper | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uabs | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv__accept | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_err_name | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_strerror | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | | zError | 0 | -| taint.cpp:421:2:421:9 | MyClass2 | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2str | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Jim_SignalId | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | PKCS12_init | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | Symbol_Nth | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __btowc | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __current_locale_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __fdopendir | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __get_errlist | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __get_errname | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __math_invalid_i | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __math_invalidf_i | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_class | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_rcode | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __p_type | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __pkey_get | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __sigdescr_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | __strerrordesc_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | _tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | _toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | btowc | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | c_tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | c_toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | curlx_sitouz | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | inet6_option_space | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isalnum | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isalpha | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isblank | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | iscntrl | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isdigit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isgraph | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | islower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isprint | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ispunct | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isspace | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | isxdigit | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sigabbrev_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_errstr | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | strerrorname_np | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | support_report_failure | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | svcudp_create | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | tls13_alert_code | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | toascii | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | tolower | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | toupper | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uabs | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv__accept | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_err_name | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_strerror | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | | zError | 0 | -| taint.cpp:422:7:422:15 | setMember | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Strsafe | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Symbol_new | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | UI_create_method | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __basename | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __gettext | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __hash_string | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __strdup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __textdomain | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | __tzstring | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a64l | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | charmap_opendir | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ether_aton | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | getdate | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | inetstr2int | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | last_component | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_path_end | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_progname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | repertoire_read | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | sgetsgent | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | sgetspent | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | strhash | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uc_script_byname | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv__strdup | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | xstrdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Strsafe | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | Symbol_new | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | UI_create_method | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __basename | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __gettext | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __hash_string | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __strdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __textdomain | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | __tzstring | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | a64l | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | charmap_opendir | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | ether_aton | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | getdate | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | inetstr2int | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | last_component | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_path_end | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_progname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | repertoire_read | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | sgetsgent | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | sgetspent | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | strhash | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uc_script_byname | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uv__strdup | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:431:7:431:15 | setString | (const char *) | | xstrdup | 0 | -| taint.cpp:500:5:500:12 | getdelim | (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_chk | 2 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_chk | 3 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_unlocked_chk | 2 | -| taint.cpp:500:5:500:12 | getdelim | (char *,size_t,int,FILE *) | | __fgets_unlocked_chk | 3 | -| taint.cpp:500:5:500:12 | getdelim | (const void *,size_t,size_t,FILE *) | | _IO_fwrite | 3 | -| taint.cpp:500:5:500:12 | getdelim | (void *,size_t,size_t,FILE *) | | _IO_fread | 3 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_default_uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_feof | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_ferror | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_file_close_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_file_underflow_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_ftell | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_getc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_getwc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_new_file_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_peekc_locked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_str_count | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_str_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_sungetc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_sungetwc | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wdefault_uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wfile_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wfile_underflow_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wstr_count | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | _IO_wstr_underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fbufsize | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __feof_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __ferror_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fileno | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __flbf | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fopen_maybe_mmap | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fpending | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __ftello | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __fwriting | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __getc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __getwc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __uflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __underflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __wuflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | __wunderflow | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | feof_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | ferror_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetgrent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetpwent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetsgent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | fgetspent | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | getc_unlocked | 0 | -| taint.cpp:502:6:502:18 | test_getdelim | (FILE *) | | getmntent | 0 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:512:7:512:12 | strtok | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:512:7:512:12 | strtok | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:512:7:512:12 | strtok | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:512:7:512:12 | strtok | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:512:7:512:12 | strtok | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:512:7:512:12 | strtok | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:512:7:512:12 | strtok | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:512:7:512:12 | strtok | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:512:7:512:12 | strtok | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | __strsep | 1 | -| taint.cpp:512:7:512:12 | strtok | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:512:7:512:12 | strtok | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:512:7:512:12 | strtok | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | advance | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | step | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:512:7:512:12 | strtok | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:512:7:512:12 | strtok | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:512:7:512:12 | strtok | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:512:7:512:12 | strtok | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | gzdopen | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | setlocale | 1 | -| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:512:7:512:12 | strtok | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2num | 1 | -| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2unum | 1 | -| taint.cpp:512:7:512:12 | strtok | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:512:7:512:12 | strtok | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:512:7:512:12 | strtok | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:512:7:512:12 | strtok | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:512:7:512:12 | strtok | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:512:7:512:12 | strtok | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:512:7:512:12 | strtok | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | _IO_gets | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __mktemp | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_group | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_owner | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | __xpg_basename | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | ctermid | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | cuserid | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | defossilize | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | des_setparity | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | dirname | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | getwd | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | make_uppercase | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | mkdtemp | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | next_item | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | | strfry | 0 | -| taint.cpp:514:6:514:16 | test_strtok | (char *) | CStringT | CStringT | 0 | -| taint.cpp:523:7:523:13 | _strset | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:523:7:523:13 | _strset | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:523:7:523:13 | _strset | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:523:7:523:13 | _strset | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:523:7:523:13 | _strset | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:523:7:523:13 | _strset | (FTS *,int) | | fts_children | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:523:7:523:13 | _strset | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:523:7:523:13 | _strset | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:523:7:523:13 | _strset | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:523:7:523:13 | _strset | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:523:7:523:13 | _strset | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:523:7:523:13 | _strset | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:523:7:523:13 | _strset | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:523:7:523:13 | _strset | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:523:7:523:13 | _strset | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:523:7:523:13 | _strset | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:523:7:523:13 | _strset | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:523:7:523:13 | _strset | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:523:7:523:13 | _strset | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:523:7:523:13 | _strset | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:523:7:523:13 | _strset | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:523:7:523:13 | _strset | (char **,int) | | addrsort | 1 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 0 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 0 | -| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:523:7:523:13 | _strset | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:523:7:523:13 | _strset | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:523:7:523:13 | _strset | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:523:7:523:13 | _strset | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:523:7:523:13 | _strset | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:523:7:523:13 | _strset | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | ftok | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:523:7:523:13 | _strset | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:523:7:523:13 | _strset | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:523:7:523:13 | _strset | (double,int) | | __ldexp | 1 | -| taint.cpp:523:7:523:13 | _strset | (double,int) | | __scalbn | 1 | -| taint.cpp:523:7:523:13 | _strset | (double[],int) | | getloadavg | 1 | -| taint.cpp:523:7:523:13 | _strset | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:523:7:523:13 | _strset | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:523:7:523:13 | _strset | (float,int) | | __ldexpf | 1 | -| taint.cpp:523:7:523:13 | _strset | (float,int) | | __scalbnf | 1 | -| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzflush | 1 | -| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzputc | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:523:7:523:13 | _strset | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | BN_security_bits | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | __isctype | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | acttab_alloc | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | div | 1 | -| taint.cpp:523:7:523:13 | _strset | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:523:7:523:13 | _strset | (long double,int) | | __ldexpl | 1 | -| taint.cpp:523:7:523:13 | _strset | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:523:7:523:13 | _strset | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:523:7:523:13 | _strset | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:523:7:523:13 | _strset | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:523:7:523:13 | _strset | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:523:7:523:13 | _strset | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:523:7:523:13 | _strset | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:523:7:523:13 | _strset | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:523:7:523:13 | _strset | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:523:7:523:13 | _strset | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:523:7:523:13 | _strset | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:523:7:523:13 | _strset | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:523:7:523:13 | _strset | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:523:7:523:13 | _strset | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:523:7:523:13 | _strset | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:523:7:523:13 | _strset | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:523:7:523:13 | _strset | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (__printf_buffer *,char) | | __printf_buffer_putc_1 | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | Curl_str_single | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | __old_strsep_1c | 1 | -| taint.cpp:525:6:525:18 | test_strset_1 | (const CStringT &,char) | | operator+ | 1 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | _IO_gets | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __mktemp | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_group | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_owner | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | __xpg_basename | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | ctermid | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | cuserid | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | defossilize | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | des_setparity | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | dirname | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | getwd | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | make_uppercase | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | mkdtemp | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | next_item | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | strfry | 0 | -| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | CStringT | CStringT | 0 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | __realpath_chk | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | getpass_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | ns_makecanon | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | Curl_strerror | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | __strerror_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | __ttyname_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_err_name_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_strerror_r | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | writeall | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (int,const void *,size_t) | | writeall | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (int,void *,size_t) | | __readall | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | -| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (unsigned int,char *,size_t) | | __initstate | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void **,size_t,size_t) | | __posix_memalign | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| taint.cpp:538:7:538:13 | mempcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| taint.cpp:540:6:540:17 | test_mempcpy | (int *) | | rresvport | 0 | -| taint.cpp:548:7:548:13 | memccpy | (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIGNUM *,BIGNUM *,const unsigned char **,size_t) | | ossl_decode_der_dsa_sig | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509 *,unsigned long,unsigned long) | | X509_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_ACERT *,unsigned long,unsigned long) | | X509_ACERT_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_REQ *,unsigned long,unsigned long) | | X509_REQ_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex | 2 | -| taint.cpp:548:7:548:13 | memccpy | (BIO *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,size_t,size_t) | | CRYPTO_ccm128_setiv | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ccm128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (CCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ccm128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (EVP_KEYMGMT *,void *,char *,size_t) | | evp_keymgmt_util_get_deflt_digest_name | 3 | -| taint.cpp:548:7:548:13 | memccpy | (FILE *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex_fp | 2 | -| taint.cpp:548:7:548:13 | memccpy | (FILE *,const X509_NAME *,int,unsigned long) | | X509_NAME_print_ex_fp | 3 | -| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | -| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_HPKE_CTX *,const char *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_psk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_LIB_CTX *,const OSSL_PROPERTY_LIST *,char *,size_t) | | ossl_property_list_to_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM[],size_t,size_t,unsigned long) | | ossl_digest_default_get_params | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const BIGNUM *,size_t) | | OSSL_PARAM_BLD_push_BN_pad | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const char *,size_t) | | OSSL_PARAM_BLD_push_utf8_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_PARAM_BLD *,const char *,const void *,size_t) | | OSSL_PARAM_BLD_push_octet_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (OSSL_RECORD_LAYER *,size_t,size_t,size_t) | | tls_setup_write_buffer | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cfb8 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_cfb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_chunked_ofb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb1 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb8 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_cfb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_ctr | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_generic_ofb128 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_cbc | 3 | -| taint.cpp:548:7:548:13 | memccpy | (PROV_CIPHER_CTX *,unsigned char *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ecb | 3 | -| taint.cpp:548:7:548:13 | memccpy | (RAND_POOL *,const unsigned char *,size_t,size_t) | | ossl_rand_pool_add | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SIV128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | ossl_siv128_decrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SIV128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | ossl_siv128_encrypt | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SSL *,uint64_t,const SSL_SHUTDOWN_EX_ARGS *,size_t) | | SSL_shutdown_ex | 3 | -| taint.cpp:548:7:548:13 | memccpy | (SSL_CONNECTION *,unsigned char **,const void *,size_t) | | construct_key_exchange_tbs | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,const void *,size_t,size_t) | | WPACKET_sub_memcpy__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,int,const unsigned char *,size_t) | | ossl_DER_w_octet_string | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,int,const unsigned char *,size_t) | | ossl_DER_w_precompiled | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,size_t,unsigned char **,size_t) | | WPACKET_sub_allocate_bytes__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,size_t,unsigned char **,size_t) | | WPACKET_sub_reserve_bytes__ | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,uint64_t,const unsigned char *,size_t) | | ossl_quic_wire_encode_transport_param_bytes | 3 | -| taint.cpp:548:7:548:13 | memccpy | (WPACKET *,unsigned char *,size_t,size_t) | | WPACKET_init_static_len | 3 | -| taint.cpp:548:7:548:13 | memccpy | (alloc_buffer *,size_t,size_t,size_t) | | __libc_alloc_buffer_alloc_array | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *,const wchar_t *,size_t,size_t) | | __wcstombs_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *__restrict__,const char *__restrict__,size_t,size_t) | | __strlcat_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (char *__restrict__,const char *__restrict__,size_t,size_t) | | __strlcpy_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const ML_DSA_KEY *,int,const uint8_t *,size_t) | | ossl_ml_dsa_mu_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const VECTOR *,uint32_t,uint8_t *,size_t) | | ossl_ml_dsa_w1_encode | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const char *,const char *,const char *,unsigned long) | | __dngettext | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const char *,u_char *,unsigned char *,size_t) | | __b64_pton | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const nis_error,const char *,char *,size_t) | | nis_sperror_r | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | -| taint.cpp:548:7:548:13 | memccpy | (const void *,size_t,const void *,size_t) | | __memmem | 3 | -| taint.cpp:548:7:548:13 | memccpy | (dynarray_header *,size_t,void *,size_t) | | __libc_dynarray_resize | 3 | -| taint.cpp:548:7:548:13 | memccpy | (dynarray_header *,size_t,void *,size_t) | | __libc_dynarray_resize_clear | 3 | -| taint.cpp:548:7:548:13 | memccpy | (in_addr_t,uint32_t,char *,size_t) | | inet_neta | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int *,X509 *,stack_st_X509 *,unsigned long) | | X509_chain_check_suiteb | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_private_key | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_public_key | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,char *,size_t,size_t) | | __ttyname_r_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const char *,void *,size_t) | | inet_net_pton | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | -| taint.cpp:548:7:548:13 | memccpy | (int,int,size_t,size_t) | | ossl_rand_pool_new | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | -| taint.cpp:548:7:548:13 | memccpy | (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | -| taint.cpp:548:7:548:13 | memccpy | (resolv_context *,const char *,char *,size_t) | | __res_context_hostalias | 3 | -| taint.cpp:548:7:548:13 | memccpy | (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | -| taint.cpp:548:7:548:13 | memccpy | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | -| taint.cpp:548:7:548:13 | memccpy | (u_long,unsigned long,char *,size_t) | | ns_format_ttl | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 2 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 3 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 2 | -| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 3 | -| taint.cpp:548:7:548:13 | memccpy | (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 0 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 1 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 2 | -| taint.cpp:548:7:548:13 | memccpy | (void *,const void *,int,size_t) | | __memccpy | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_ccm_stream_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_cipher_generic_block_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_gcm_stream_final | 3 | -| taint.cpp:548:7:548:13 | memccpy | (wchar_t *,const char *,size_t,size_t) | | __mbstowcs_chk | 3 | -| taint.cpp:548:7:548:13 | memccpy | (wchar_t *,const wchar_t *,size_t,size_t) | | __wmemmove_chk | 3 | -| taint.cpp:550:6:550:17 | test_memccpy | (int *) | | rresvport | 0 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:558:7:558:12 | strcat | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:558:7:558:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:558:7:558:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:558:7:558:12 | strcat | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:558:7:558:12 | strcat | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:558:7:558:12 | strcat | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:558:7:558:12 | strcat | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:558:7:558:12 | strcat | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:558:7:558:12 | strcat | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | __strsep | 1 | -| taint.cpp:558:7:558:12 | strcat | (char *,const char *) | | xstrdup | 0 | -| taint.cpp:558:7:558:12 | strcat | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:558:7:558:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | advance | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | step | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:558:7:558:12 | strcat | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:558:7:558:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:558:7:558:12 | strcat | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:558:7:558:12 | strcat | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | gzdopen | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | setlocale | 1 | -| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:558:7:558:12 | strcat | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2num | 1 | -| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2unum | 1 | -| taint.cpp:558:7:558:12 | strcat | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:558:7:558:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:558:7:558:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:558:7:558:12 | strcat | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:558:7:558:12 | strcat | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:558:7:558:12 | strcat | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:558:7:558:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:560:6:560:16 | test_strcat | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 2 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (_IO_strfile *,char *,int,char *) | | _IO_str_init_static | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (action **,e_action,symbol *,char *) | | Action_add | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | -| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (int,const u_char *,const unsigned char *,char *) | | inet_nsap_ntoa | 3 | -| taint.cpp:560:6:560:16 | test_strcat | (int,u_int,u_int,char *) | | svcunix_create | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_bio_ECPKParameters | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_ECPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_bio_EC_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_bio_PrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_bio | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_bio_NETSCAPE_CERT_SEQUENCE | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_bio_PKCS7 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8_PRIV_KEY_INFO | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSAPublicKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,RSA **,pem_password_cb *,void *) | | PEM_read_bio_RSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_bio_SSL_SESSION | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509 **,pem_password_cb *,void *) | | PEM_read_bio_X509_AUX | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_bio_X509_ACERT | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_bio_X509_CRL | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_bio_X509_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_bio_X509_REQ | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (DSO *,int,long,void *) | | DSO_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DH **,pem_password_cb *,void *) | | PEM_read_DHparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,DSA **,pem_password_cb *,void *) | | PEM_read_DSAparams | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_GROUP **,pem_password_cb *,void *) | | PEM_read_ECPKParameters | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_ECPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EC_KEY **,pem_password_cb *,void *) | | PEM_read_EC_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | PEM_read_PrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,EVP_PKEY **,pem_password_cb *,void *) | | d2i_PKCS8PrivateKey_fp | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,NETSCAPE_CERT_SEQUENCE **,pem_password_cb *,void *) | | PEM_read_NETSCAPE_CERT_SEQUENCE | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,PKCS7 **,pem_password_cb *,void *) | | PEM_read_PKCS7 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,PKCS8_PRIV_KEY_INFO **,pem_password_cb *,void *) | | PEM_read_PKCS8_PRIV_KEY_INFO | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPrivateKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSAPublicKey | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,RSA **,pem_password_cb *,void *) | | PEM_read_RSA_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,SSL_SESSION **,pem_password_cb *,void *) | | PEM_read_SSL_SESSION | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509 **,pem_password_cb *,void *) | | PEM_read_X509_AUX | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_ACERT **,pem_password_cb *,void *) | | PEM_read_X509_ACERT | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_CRL **,pem_password_cb *,void *) | | PEM_read_X509_CRL | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_PUBKEY **,pem_password_cb *,void *) | | PEM_read_X509_PUBKEY | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_REQ **,pem_password_cb *,void *) | | PEM_read_X509_REQ | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_PKCS8 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_QTX *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_qtx_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (QUIC_CHANNEL *,ossl_mutate_packet_cb,ossl_finish_mutate_cb,void *) | | ossl_quic_channel_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (QUIC_RXFC *,uint64_t,..(*)(..),void *) | | ossl_quic_rxfc_init_standalone | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SHA_CTX *,int,int,void *) | | ossl_sha1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | SSL_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | dtls1_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | ossl_quic_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,int,long,void *) | | ssl3_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL *,ossl_statem_mutate_handshake_cb,ossl_statem_finish_mutate_handshake_cb,void *) | | ossl_statem_set_mutator | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,SSL_CTX_generate_session_ticket_fn,SSL_CTX_decrypt_session_ticket_fn,void *) | | SSL_CTX_set_session_ticket_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | SSL_CTX_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | ossl_quic_ctx_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (SSL_CTX *,int,long,void *) | | ssl3_ctx_ctrl | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (X509_ALGOR *,ASN1_OBJECT *,int,void *) | | X509_ALGOR_set0 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | PEM_def_callback | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | PEM_def_callback | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_header_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_read_cb | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (const char *,int,void *,void *) | | support_readdir_r_check | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (hash_table *,const void *,size_t,void *) | | insert_entry | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 2 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,int,void *) | | sqlite3_file_control | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,int,..(*)(..),void *) | | sqlite3_progress_handler | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 | -| taint.cpp:570:16:570:25 | _mbsncat_l | (void *,const char *,const char *,void *) | | _dl_vsym | 3 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE *,const char *,long,void *,..(*)(..),int) | | ENGINE_ctrl_cmd | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE_TABLE **,ENGINE_CLEANUP_CB *,ENGINE *,const int *,int,int) | | engine_table_register | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX *,const EVP_CIPHER *,ENGINE *,const unsigned char *,const unsigned char *,int) | | EVP_CipherInit_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (FILE *,const char *,int,int,int,int) | | _IO_file_open | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (GENERAL_NAME *,const X509V3_EXT_METHOD *,X509V3_CTX *,int,const char *,int) | | a2i_GENERAL_NAME | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj **,int) | | Jim_DictKeysVector | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj *,int) | | Jim_SetDictKeysVector | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,const char *const *,int *,const char *,int) | | Jim_GetEnum | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (PKCS7 *,stack_st_X509 *,X509_STORE *,BIO *,BIO *,int) | | PKCS7_verify | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (QUIC_STREAM_MAP *,..(*)(..),void *,QUIC_RXFC *,QUIC_RXFC *,int) | | ossl_quic_stream_map_init | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,const unsigned char *,const EVP_MD *,const EVP_MD *,const unsigned char *,int) | | RSA_verify_PKCS1_PSS_mgf1 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,unsigned char *,const unsigned char *,const EVP_MD *,const EVP_MD *,int) | | RSA_padding_add_PKCS1_PSS_mgf1 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (SSL_CONNECTION *,PACKET *,unsigned int,RAW_EXTENSION **,size_t *,int) | | tls_collect_extensions | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (SSL_CONNECTION *,int,RAW_EXTENSION *,X509 *,size_t,int) | | tls_parse_all_extensions | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (UI *,const char *,int,char *,int,int) | | UI_add_input_string | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (UI *,const char *,int,char *,int,int) | | UI_dup_input_string | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509V3_CTX *,X509 *,X509 *,X509_REQ *,X509_CRL *,int) | | X509V3_set_ctx | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_ALGOR *,const ASN1_ITEM *,const char *,int,void *,int) | | PKCS12_item_i2d_encrypt | 4 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_ALGOR *,const ASN1_ITEM *,const char *,int,void *,int) | | PKCS12_item_i2d_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (X509_PUBKEY *,ASN1_OBJECT *,int,void *,unsigned char *,int) | | X509_PUBKEY_set0_param | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *,int) | | BN_is_prime_fasttest | 4 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *,int) | | BN_is_prime_fasttest | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const X509_ALGOR *,const ASN1_ITEM *,const char *,int,const ASN1_OCTET_STRING *,int) | | PKCS12_item_decrypt_d2i | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const XTS128_CONTEXT *,const unsigned char[16],const unsigned char *,unsigned char *,size_t,int) | | CRYPTO_xts128_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const XTS128_CONTEXT *,const unsigned char[16],const unsigned char *,unsigned char *,size_t,int) | | ossl_crypto_xts128gb_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *,const char *,int,unsigned long,int) | | __dcigettext | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *,int,int,unsigned char *,int) | | ___res_querydomain | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *__restrict__,char **,char **__restrict__,int,int) | | __strtol_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const char *,const char *__restrict__,char **,char **__restrict__,int,int) | | __strtoul_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const u_char *,const unsigned char *,const u_char *,const unsigned char *,ns_sect,int) | | ns_skiprr | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,DES_key_schedule *,DES_cblock *,int) | | DES_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,DES_key_schedule *,DES_cblock *,int) | | DES_ncbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,IDEA_KEY_SCHEDULE *,unsigned char *,int) | | IDEA_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,RC2_KEY *,unsigned char *,int) | | RC2_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,const BF_KEY *,unsigned char *,int) | | BF_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,long,const CAST_KEY *,unsigned char *,int) | | CAST_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,size_t,const SEED_KEY_SCHEDULE *,unsigned char[16],int) | | SEED_cbc_encrypt | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | OBJ_bsearch_ex_ | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const wchar_t *,const wchar_t *__restrict__,wchar_t **,wchar_t **__restrict__,int,int) | | __wcstol_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (const wchar_t *,const wchar_t *__restrict__,wchar_t **,wchar_t **__restrict__,int,int) | | __wcstoul_internal | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (res_state,const char *,int,int,unsigned char *,int) | | ___res_nquery | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (res_state,const char *,int,int,unsigned char *,int) | | ___res_nsearch | 5 | -| taint.cpp:572:6:572:20 | test__mbsncat_l | (unsigned char *,int,const unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_OAEP | 5 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:589:7:589:12 | strsep | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:589:7:589:12 | strsep | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:589:7:589:12 | strsep | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:589:7:589:12 | strsep | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:589:7:589:12 | strsep | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:589:7:589:12 | strsep | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:589:7:589:12 | strsep | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:589:7:589:12 | strsep | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:589:7:589:12 | strsep | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 0 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | __strsep | 0 | -| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | __strsep | 1 | -| taint.cpp:589:7:589:12 | strsep | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:589:7:589:12 | strsep | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | advance | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | step | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:589:7:589:12 | strsep | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:589:7:589:12 | strsep | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:589:7:589:12 | strsep | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:589:7:589:12 | strsep | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | gzdopen | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | setlocale | 1 | -| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:589:7:589:12 | strsep | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2num | 1 | -| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2unum | 1 | -| taint.cpp:589:7:589:12 | strsep | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:589:7:589:12 | strsep | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:589:7:589:12 | strsep | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:589:7:589:12 | strsep | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:589:7:589:12 | strsep | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:589:7:589:12 | strsep | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:589:7:589:12 | strsep | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | _IO_gets | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __mktemp | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_group | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_owner | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | __xpg_basename | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | ctermid | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | cuserid | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | defossilize | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | des_setparity | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | dirname | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | getwd | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | make_uppercase | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | mkdtemp | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | next_item | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | | strfry | 0 | -| taint.cpp:591:6:591:16 | test_strsep | (char *) | CStringT | CStringT | 0 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | | OSSL_STORE_do_all_loaders | 1 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | | _dlerror_run | 1 | -| taint.cpp:602:7:602:13 | _strinc | (..(*)(..),void *) | __pthread_cleanup_class | __pthread_cleanup_class | 1 | -| taint.cpp:602:7:602:13 | _strinc | (ASN1_SCTX *,void *) | | ASN1_SCTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (BIO *,void *) | | BIO_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CONF_IMODULE *,void *) | | CONF_imodule_set_usr_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CONF_MODULE *,void *) | | CONF_module_set_usr_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (CRYPTO_THREAD_LOCAL *,void *) | | CRYPTO_THREAD_set_local | 1 | -| taint.cpp:602:7:602:13 | _strinc | (Curl_tree *,void *) | | Curl_splayset | 1 | -| taint.cpp:602:7:602:13 | _strinc | (DH_METHOD *,void *) | | DH_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (DSA_METHOD *,void *) | | DSA_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_cipher_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_KEYMGMT *,void *) | | evp_keymgmt_util_make_pkey | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_get1_id | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (Jim_Stack *,void *) | | Jim_StackPush | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OPENSSL_LHASH *,void *) | | OPENSSL_LH_insert | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_certConf_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_http_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_CMP_CTX *,void *) | | OSSL_CMP_CTX_set_transfer_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_DECODER *,void *) | | ossl_decoder_instance_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_DECODER_CTX *,void *) | | OSSL_DECODER_CTX_set_construct_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_ENCODER_CTX *,void *) | | OSSL_ENCODER_CTX_set_construct_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QRX *,void *) | | ossl_qrx_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QTX *,void *) | | ossl_qtx_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (OSSL_QUIC_TX_PACKETISER *,void *) | | ossl_quic_tx_packetiser_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (QUIC_CHANNEL *,void *) | | ossl_quic_channel_set_msg_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (RSA_METHOD *,void *) | | RSA_meth_set0_app_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set0_security_ex_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_async_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_default_passwd_cb_userdata | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL *,void *) | | SSL_set_record_padding_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set0_security_ex_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_async_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_default_passwd_cb_userdata | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_record_padding_callback_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (SSL_CTX *,void *) | | SSL_CTX_set_srp_cb_arg | 1 | -| taint.cpp:602:7:602:13 | _strinc | (UI *,void *) | | UI_add_user_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (X509_CRL *,void *) | | X509_CRL_set_meth_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (X509_LOOKUP *,void *) | | X509_LOOKUP_set_method_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const OSSL_DISPATCH *,void *) | | ossl_prov_free_key | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const OSSL_PARAM[],void *) | | ossl_store_handle_load_result | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 0 | -| taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const md5_ctx *,void *) | | __md5_read_ctx | 1 | -| taint.cpp:602:7:602:13 | _strinc | (const void *,void *) | | inet6_rth_reverse | 1 | -| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | OSSL_STORE_INFO_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | sqlite3_randomness | 1 | -| taint.cpp:602:7:602:13 | _strinc | (md5_ctx *,void *) | | __md5_finish_ctx | 1 | -| taint.cpp:602:7:602:13 | _strinc | (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | -| taint.cpp:602:7:602:13 | _strinc | (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (obstack *,void *) | | _obstack_allocated_p | 1 | -| taint.cpp:602:7:602:13 | _strinc | (obstack *,void *) | | obstack_free | 1 | -| taint.cpp:602:7:602:13 | _strinc | (pthread_attr_t *,void *) | | __pthread_attr_setstackaddr | 1 | -| taint.cpp:602:7:602:13 | _strinc | (tunable_id_t,void *) | | __tunable_get_default | 1 | -| taint.cpp:602:7:602:13 | _strinc | (unsigned char *,void *) | | pitem_new | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_handle_t *,void *) | | uv_handle_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_key_t *,void *) | | uv_key_set | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_loop_t *,void *) | | uv_loop_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (uv_req_t *,void *) | | uv_req_set_data | 1 | -| taint.cpp:602:7:602:13 | _strinc | (void *,void *) | | insque | 1 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_be | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_le | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read32_le | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _getlong | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _getshort | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu32 | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu64 | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | CStringT | 0 | -| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | operator= | 0 | -| taint.cpp:604:16:604:22 | _strdec | (MD4_CTX *,const unsigned char *) | | MD4_Transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (RIPEMD160_CTX *,const unsigned char *) | | RIPEMD160_Transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (SM3_CTX *,const unsigned char *) | | ossl_sm3_transform | 1 | -| taint.cpp:604:16:604:22 | _strdec | (TLS_RL_RECORD *,const unsigned char *) | | ossl_tls_rl_record_set_seq_num | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const u_char *,const unsigned char *) | | ns_get16 | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const u_char *,const unsigned char *) | | ns_get32 | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char **,const unsigned char *) | | ___ns_name_skip | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | ___dn_skipname | 0 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | ___dn_skipname | 1 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | __ns_name_length_uncompressed | 0 | -| taint.cpp:604:16:604:22 | _strdec | (const unsigned char *,const unsigned char *) | | __ns_name_length_uncompressed | 1 | -| taint.cpp:606:6:606:17 | test__strinc | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (OSSL_QUIC_TX_PACKETISER *,const unsigned char *,size_t,ossl_quic_initial_token_free_fn *,void *) | | ossl_quic_tx_packetiser_set_initial_token | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_dec | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_enc | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char **,const char **,bool *,..(*)(..),void *) | | _dl_catch_error | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | -| taint.cpp:606:6:606:17 | test__strinc | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | -| taint.cpp:616:6:616:17 | test__mbsinc | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (_IO_strfile *,char *,int,char *) | | _IO_str_init_static | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (action **,e_action,symbol *,char *) | | Action_add | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (int,const u_char *,const unsigned char *,char *) | | inet_nsap_ntoa | 3 | -| taint.cpp:616:6:616:17 | test__mbsinc | (int,u_int,u_int,char *) | | svcunix_create | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (BIO *,const BIGNUM *,const char *,int,unsigned char *) | | print_bignum_var | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (OSSL_LIB_CTX *,const char *,const QUIC_PKT_HDR *,const QUIC_CONN_ID *,unsigned char *) | | ossl_quic_calculate_retry_integrity_tag | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 4 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 3 | -| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 4 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Strsafe | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Symbol_new | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | UI_create_method | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __basename | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __gettext | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __hash_string | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __strdup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __textdomain | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | __tzstring | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a64l | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | charmap_opendir | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ether_aton | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | getdate | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | inetstr2int | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | last_component | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_path_end | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_progname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | repertoire_read | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | sgetsgent | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | sgetspent | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | strhash | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uc_script_byname | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv__strdup | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | xstrdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | BIO_gethostbyname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_copy_header_value | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_get_scheme_handler | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_getdate_capped | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Jim_StrDup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OPENSSL_LH_strhash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Strsafe | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Symbol_new | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | UI_create_method | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509V3_parse_list | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __basename | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __gconv_find_shlib | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __gettext | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __hash_string | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __nss_action_parse | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __strdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __textdomain | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __tzset_parse_tz | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | __tzstring | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a64l | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | charmap_opendir | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ether_aton | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | getdate | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | inetstr2int | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | last_component | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | new_glibc_hwcaps_subdirectory | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_path_end | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_progname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ossl_lh_strcasehash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | repertoire_read | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | res_gethostbyname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | sgetsgent | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | sgetspent | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | strhash | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uc_script_byname | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv__strdup | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 | -| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | xstrdup | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | _IO_gets | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __mktemp | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_group | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_owner | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | __xpg_basename | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | ctermid | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | cuserid | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | defossilize | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | des_setparity | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | dirname | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | getwd | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | make_uppercase | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | mkdtemp | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | next_item | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | strfry | 0 | -| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | CStringT | CStringT | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | _IO_gets | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __mktemp | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_group | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_owner | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | __xpg_basename | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | ctermid | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | cuserid | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | defossilize | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | des_setparity | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | dirname | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | getwd | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | make_uppercase | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | mkdtemp | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | next_item | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | strfry | 0 | -| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | CStringT | CStringT | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | Curl_cpool_upkeep | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __dlclose | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __libc_dlclose | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __libc_free | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | __malloc_usable_size | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | _dl_allocate_tls | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | _dl_close | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | malloc_usable_size | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | ossl_kdf_data_new | 0 | -| taint.cpp:683:6:683:20 | argument_source | (void *) | | support_shared_free | 0 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| taint.cpp:707:8:707:14 | strncpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| taint.cpp:707:8:707:14 | strncpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| taint.cpp:707:8:707:14 | strncpy | (const char *,const char *,unsigned long) | | __ngettext | 1 | -| taint.cpp:707:8:707:14 | strncpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| taint.cpp:707:8:707:14 | strncpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| taint.cpp:709:6:709:17 | test_strncpy | (ARGS *,char *) | | chopup_args | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (BIO *,char *) | | BIO_set_callback_arg | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SRP_VBASE *,char *) | | SRP_VBASE_get_by_user | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_password | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (XDR *,char *) | | xdr_char | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | passwd2des_internal | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | passwd2des_internal | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xdecrypt | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xdecrypt | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xencrypt | 0 | -| taint.cpp:709:6:709:17 | test_strncpy | (char *,char *) | | xencrypt | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | __old_realpath | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | __realpath | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha1sum_file | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha3sum_file | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const ether_addr *,char *) | | ether_ntoa_r | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (const tm *,char *) | | __asctime_r | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | -| taint.cpp:709:6:709:17 | test_strncpy | (unsigned long,char *) | | ERR_error_string | 1 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_OCTET_STRING *,const unsigned char *,int) | | ASN1_OCTET_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_STRING *,const void *,int) | | ASN1_STRING_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_STRING *,void *,int) | | ASN1_STRING_set0 | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_TIME *,tm *,int) | | ossl_asn1_time_from_tm | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_TYPE *,unsigned char *,int) | | ASN1_TYPE_set_octetstring | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_item_embed_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (ASN1_VALUE **,const ASN1_ITEM *,int) | | ossl_asn1_primitive_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_lshift | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_rshift | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | BN_with_flags | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | bn_lshift_fixed_top | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const BIGNUM *,int) | | bn_rshift_fixed_top | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const unsigned long *,int) | | bn_set_static_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIGNUM *,const unsigned long *,int) | | bn_set_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,BIO *,int) | | OSSL_HTTP_REQ_CTX_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,BIO *,int) | | SMIME_crlf_copy | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,GENERAL_NAMES *,int) | | OSSL_GENERAL_NAMES_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,char *,int) | | BIO_get_line | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,const DSA *,int) | | DSA_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (BIO *,const RSA *,int) | | RSA_print | 2 | -| taint.cpp:725:10:725:15 | strtol | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 | -| taint.cpp:725:10:725:15 | strtol | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | -| taint.cpp:725:10:725:15 | strtol | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | -| taint.cpp:725:10:725:15 | strtol | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (EC_KEY *,const OSSL_PARAM[],int) | | ossl_ec_key_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (ENGINE *,ENGINE_DYNAMIC_ID,int) | | engine_add_dynamic_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_export_to_provider | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_KEYMGMT *,int) | | evp_keymgmt_util_find_operation_cache | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY *,EVP_PKEY *,int) | | evp_keymgmt_util_copy | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,EVP_PKEY *,int) | | EVP_PKEY_derive_set_peer_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const char *,int) | | EVP_PKEY_CTX_set1_pbe_pass | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_hkdf_info | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_add1_tls1_prf_seed | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_hkdf_salt | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_scrypt_salt | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set1_tls1_prf_secret | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const unsigned char *,int) | | EVP_PKEY_CTX_set_mac_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,const void *,int) | | EVP_PKEY_CTX_set1_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (EVP_PKEY_CTX *,int *,int) | | EVP_PKEY_CTX_set0_keygen_info | 2 | -| taint.cpp:725:10:725:15 | strtol | (FFC_PARAMS *,unsigned int,int) | | ossl_ffc_params_enable_flags | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,_IO_marker *,int) | | _IO_seekmark | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,_IO_marker *,int) | | _IO_seekwmark | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,__FILE *,int) | | fwide | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,const DSA *,int) | | DSA_print_fp | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,const RSA *,int) | | RSA_print_fp | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,off64_t,int) | | _IO_cookie_seek | 2 | -| taint.cpp:725:10:725:15 | strtol | (FILE *,rule *,int) | | RulePrint | 2 | -| taint.cpp:725:10:725:15 | strtol | (FTS *,FTSENT *,int) | | fts_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetCommand | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetGlobalVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_GetVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_ListGetIndex | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *,int) | | Jim_UnsetVariable | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewDictObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,Jim_Obj *const *,int) | | Jim_NewListObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,char *,int) | | Jim_NewStringObjNoAlloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_GetGlobalVariableStr | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_GetVariableStr | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 | -| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 | -| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | -| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,int,int) | | OCSP_BASICRESP_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,X509_EXTENSION *,int) | | OCSP_ONEREQ_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,const ASN1_OBJECT *,int) | | OCSP_ONEREQ_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_ONEREQ *,int,int) | | OCSP_ONEREQ_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,X509_EXTENSION *,int) | | OCSP_REQUEST_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,const ASN1_OBJECT *,int) | | OCSP_REQUEST_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_REQUEST *,int,int) | | OCSP_REQUEST_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,X509_EXTENSION *,int) | | OCSP_SINGLERESP_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,const ASN1_OBJECT *,int) | | OCSP_SINGLERESP_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (OCSP_SINGLERESP *,int,int) | | OCSP_SINGLERESP_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (OPENSSL_STACK *,const void *,int) | | OPENSSL_sk_insert | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_referenceValue | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,const unsigned char *,int) | | OSSL_CMP_CTX_set1_secretValue | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_CMP_CTX *,int,int) | | OSSL_CMP_CTX_set_option | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | EC_GROUP_new_by_curve_name_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | EC_KEY_new_by_curve_name_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | OSSL_PROVIDER_try_load | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_dsa_key_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_ml_kem_key_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_parse_query | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_name | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_LIB_CTX *,const char *,int) | | ossl_property_value | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_PROVIDER *,OSSL_PROVIDER **,int) | | ossl_provider_add_to_store | 2 | -| taint.cpp:725:10:725:15 | strtol | (OSSL_QRL_ENC_LEVEL_SET *,uint32_t,int) | | ossl_qrl_enc_level_set_get | 2 | -| taint.cpp:725:10:725:15 | strtol | (PKCS7 *,stack_st_X509 *,int) | | PKCS7_get0_signers | 2 | -| taint.cpp:725:10:725:15 | strtol | (POLICYINFO *,const ASN1_OBJECT *,int) | | ossl_policy_data_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ctx_get_bool_param | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ml_dsa_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (PROV_CTX *,const char *,int) | | ossl_prov_ml_kem_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (QLOG *,uint32_t,int) | | ossl_qlog_set_event_type_enabled | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_RXFC *,uint64_t,int) | | ossl_quic_rxfc_on_rx_stream_frame | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_STREAM_ITER *,QUIC_STREAM_MAP *,int) | | ossl_quic_stream_iter_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (QUIC_STREAM_MAP *,uint64_t,int) | | ossl_quic_stream_map_alloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (RSA *,const OSSL_PARAM[],int) | | ossl_rsa_fromdata | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,const unsigned char *,int) | | SSL_use_certificate_ASN1 | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,const void *,int) | | SSL_write | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_peek | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_read | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL *,void *,int) | | SSL_set_session_ticket_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CIPHER *,const SSL_CIPHER *,int) | | OBJ_bsearch_ssl_cipher_id | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,PACKET *,int) | | ssl_cache_cipherlist | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_close_construct_packet | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | dtls1_set_handshake_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,WPACKET *,int) | | tls_close_construct_packet | 2 | -| taint.cpp:725:10:725:15 | strtol | (SSL_CONNECTION *,int,int) | | ssl3_send_alert | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_MSG_IMPRINT *,unsigned char *,int) | | TS_MSG_IMPRINT_set_msg | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,X509_EXTENSION *,int) | | TS_REQ_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,const ASN1_OBJECT *,int) | | TS_REQ_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_REQ *,int,int) | | TS_REQ_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,X509_EXTENSION *,int) | | TS_TST_INFO_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,const ASN1_OBJECT *,int) | | TS_TST_INFO_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (TS_TST_INFO *,int,int) | | TS_TST_INFO_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,X509_EXTENSION *,int) | | X509_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,int,int) | | X509_check_purpose | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509 *,int,int) | | X509_check_trust | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_CRL *,X509_EXTENSION *,int) | | X509_CRL_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_PUBKEY *,unsigned char *,int) | | X509_PUBKEY_set0_public_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_REVOKED *,X509_EXTENSION *,int) | | X509_REVOKED_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (X509_STORE_CTX *,X509 *,int) | | ossl_x509_check_cert_time | 2 | -| taint.cpp:725:10:725:15 | strtol | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| taint.cpp:725:10:725:15 | strtol | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| taint.cpp:725:10:725:15 | strtol | (_Float128,_Float128,int) | | __kernel_sinf128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (_Float128,_Float128,int) | | __kernel_tanf128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (_IO_strfile *,const char *,int) | | _IO_str_init_readonly | 2 | -| taint.cpp:725:10:725:15 | strtol | (action *,FILE *,int) | | PrintAction | 2 | -| taint.cpp:725:10:725:15 | strtol | (acttab *,int,int) | | acttab_action | 2 | -| taint.cpp:725:10:725:15 | strtol | (char *,size_t,int) | | __argz_stringify | 2 | -| taint.cpp:725:10:725:15 | strtol | (const ASN1_VALUE *,const ASN1_TEMPLATE *,int) | | ossl_asn1_do_adb | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,int[],int) | | BN_GF2m_poly2arr | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2binpad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2lebinpad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_bn2nativepad | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2bin | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2lebin | 2 | -| taint.cpp:725:10:725:15 | strtol | (const BIGNUM *,unsigned char *,int) | | BN_signed_bn2native | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_ContentInfo *,BIO *,int) | | ossl_cms_DigestedData_do_final | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_signed_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const OSSL_PARAM *,BIO *,int) | | OSSL_PARAM_print_to_bio | 2 | -| taint.cpp:725:10:725:15 | strtol | (const OSSL_PROVIDER *,const char *,int) | | OSSL_PROVIDER_conf_get_bool | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL *,char *,int) | | SSL_get_shared_ciphers | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL *,int,int) | | apps_ssl_info_callback | 2 | -| taint.cpp:725:10:725:15 | strtol | (const SSL_CIPHER *,char *,int) | | SSL_CIPHER_description | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,const ASN1_OBJECT *,int) | | X509_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_new_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,int,int) | | X509_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509 *,int,int) | | X509_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_ACERT *,const ASN1_OBJECT *,int) | | X509_ACERT_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_ACERT *,int,int) | | X509_ACERT_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,const ASN1_OBJECT *,int) | | X509_CRL_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,const X509 *,int) | | OSSL_CMP_CRLSTATUS_create | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_CRL *,int,int) | | X509_CRL_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,char *,int) | | X509_NAME_oneline | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,const ASN1_OBJECT *,int) | | X509_NAME_get_index_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_NAME *,int,int) | | X509_NAME_get_index_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REQ *,const ASN1_OBJECT *,int) | | X509_REQ_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REQ *,int,int) | | X509_REQ_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,const ASN1_OBJECT *,int) | | X509_REVOKED_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtol | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | __strtoul | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 0 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 1 | -| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | CRYPTO_strdup | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | __dcgettext | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | sqlite3_strnicmp | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,int,int) | | __old_strpbrk_c2 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,long *,int) | | Jim_StringToWide | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,size_t *,int) | | _dl_sysdep_read_whole_file | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,sqlite3_filename,int) | | sqlite3_uri_key | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,void *,int) | | support_readdir_check | 2 | -| taint.cpp:725:10:725:15 | strtol | (const char *,wordexp_t *,int) | | wordexp | 2 | -| taint.cpp:725:10:725:15 | strtol | (const cmsghdr *,uint8_t **,int) | | inet6_option_find | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_ATTRIBUTE *,const ASN1_OBJECT *,int) | | X509at_get_attr_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_ATTRIBUTE *,int,int) | | X509at_get_attr_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 | -| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | -| taint.cpp:725:10:725:15 | strtol | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | -| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 | -| taint.cpp:725:10:725:15 | strtol | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 | -| taint.cpp:725:10:725:15 | strtol | (const void *,socklen_t,int) | | res_gethostbyaddr | 2 | -| taint.cpp:725:10:725:15 | strtol | (const wchar_t *,wchar_t **,int) | | __wcstol | 2 | -| taint.cpp:725:10:725:15 | strtol | (const wchar_t *,wchar_t **,int) | | __wcstoul | 2 | -| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | -| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | -| taint.cpp:725:10:725:15 | strtol | (database_dyn *,size_t,int) | | mempool_alloc | 2 | -| taint.cpp:725:10:725:15 | strtol | (database_dyn *,time_t,int) | | prune_cache | 2 | -| taint.cpp:725:10:725:15 | strtol | (double,double,int) | | __kernel_standard | 2 | -| taint.cpp:725:10:725:15 | strtol | (float,float,int) | | __kernel_standard_f | 2 | -| taint.cpp:725:10:725:15 | strtol | (gconv_spec *,__gconv_t *,int) | | __gconv_open | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,char *,int) | | gzgets | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,int,int) | | gzsetparams | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,off64_t,int) | | gzseek64 | 2 | -| taint.cpp:725:10:725:15 | strtol | (gzFile,off_t,int) | | gzseek | 2 | -| taint.cpp:725:10:725:15 | strtol | (int *,short *,int) | | __lll_lock_elision | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | ASN1_object_size | 2 | -| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | EVP_CIPHER_meth_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_sinl | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_standard_l | 2 | -| taint.cpp:725:10:725:15 | strtol | (long double,long double,int) | | __kernel_tanl | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_double | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_float | 2 | -| taint.cpp:725:10:725:15 | strtol | (mp_srcptr,int,int) | | __mpn_construct_float128 | 2 | -| taint.cpp:725:10:725:15 | strtol | (regex_t *,const char *,int) | | jim_regcomp | 2 | -| taint.cpp:725:10:725:15 | strtol | (requestlist *,requestlist *,int) | | __aio_remove_request | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3 *,const char *,int) | | sqlite3_overload_function | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3 *,int,int) | | sqlite3_limit | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_context *,const char *,int) | | sqlite3_result_error | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_context *,const void *,int) | | sqlite3_result_error16 | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_index_info *,int,int) | | sqlite3_vtab_in | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_bind_int | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_bind_zeroblob | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_stmt *,int,int) | | sqlite3_stmt_status | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3_str *,const char *,int) | | sqlite3_str_append | 2 | -| taint.cpp:725:10:725:15 | strtol | (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 **,X509 *,int) | | ossl_x509_add_cert_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 **,stack_st_X509 *,int) | | ossl_x509_add_certs_new | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,ASIdentifiers *,int) | | X509v3_asid_validate_resource_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,IPAddrBlocks *,int) | | X509v3_addr_validate_resource_set | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,X509 *,int) | | X509_add_cert | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509 *,stack_st_X509 *,int) | | X509_add_certs | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_ALGOR **,int,int) | | CMS_add_simple_smimecap | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_ALGOR *,int,int) | | PKCS7_simple_smimecap | 2 | -| taint.cpp:725:10:725:15 | strtol | (stack_st_X509_EXTENSION **,X509_EXTENSION *,int) | | X509v3_add_ext | 2 | -| taint.cpp:725:10:725:15 | strtol | (td_thragent_t *,uint32_t *,int) | | _td_check_sizeof | 2 | -| taint.cpp:725:10:725:15 | strtol | (uint8_t[56],const gf,int) | | gf_serialize | 2 | -| taint.cpp:725:10:725:15 | strtol | (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const char *,int) | | data_string | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,const unsigned char *,int) | | EVP_EncodeBlock | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,const char *,int) | | _IO_adjust_column | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,const wchar_t *,int) | | _IO_adjust_wcolumn | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned int,int,int) | | ossl_blob_length | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | -| taint.cpp:725:10:725:15 | strtol | (uv_stream_t *,int,int) | | uv__stream_open | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,cmsghdr **,int) | | inet6_option_init | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,const char *,int) | | CRYPTO_secure_free | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | -| taint.cpp:725:10:725:15 | strtol | (void *,socklen_t,int) | | inet6_opt_finish | 2 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | _IO_gets | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __mktemp | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_group | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_owner | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | __xpg_basename | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | ctermid | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | cuserid | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | defossilize | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | des_setparity | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | dirname | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | getwd | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | make_uppercase | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | mkdtemp | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | next_item | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | | strfry | 0 | -| taint.cpp:727:6:727:16 | test_strtol | (char *) | CStringT | CStringT | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | __libc_malloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | __libc_valloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | _dl_early_allocate | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosi | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosz | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoui | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoul | 0 | | taint.cpp:735:7:735:12 | malloc | (size_t) | | malloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_get_extension_type | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_quic_sstream_new | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | ssl_cert_new | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_next_to_fault_allocate | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_next_to_fault_allocate_before | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | support_stack_alloc | 0 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | xalloc_sigstack | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BN_num_bits_word | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BUF_MEM_new_ex | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultouc | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultous | 0 | -| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | next_prime | 0 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_oid_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_str_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_add_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_div_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_set_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BIGNUM *,unsigned long) | | BN_sub_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (BN_BLINDING *,unsigned long) | | BN_BLINDING_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | -| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | -| taint.cpp:736:7:736:13 | realloc | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | -| taint.cpp:736:7:736:13 | realloc | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (OPENSSL_INIT_SETTINGS *,unsigned long) | | OPENSSL_INIT_set_config_file_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (OPENSSL_LHASH *,unsigned long) | | OPENSSL_LH_set_down_load | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HPKE_SUITE,size_t) | | OSSL_HPKE_get_ciphertext_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HTTP_REQ_CTX *,size_t) | | OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_HTTP_REQ_CTX *,unsigned long) | | OSSL_HTTP_REQ_CTX_set_max_response_length | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_LIB_CTX *,size_t) | | ossl_quic_lcidm_new | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PARAM *,size_t) | | OSSL_PARAM_set_size_t | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PARAM *,unsigned long) | | OSSL_PARAM_set_ulong | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PQUEUE *,size_t) | | ossl_pqueue_remove | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_PROVIDER *,size_t) | | ossl_provider_set_operation_bit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QTX *,size_t) | | ossl_qtx_set_mdpl | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_add_unvalidated_credit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_consume_unvalidated_credit | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_QUIC_TX_PACKETISER *,size_t) | | ossl_quic_tx_packetiser_record_received_closing_bytes | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_frag_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (OSSL_RECORD_LAYER *,size_t) | | tls_set_max_pipelines | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_release_record | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RSTREAM *,size_t) | | ossl_quic_rstream_resize_rbuf | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_RXFC *,size_t) | | ossl_quic_rxfc_set_max_window_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_SSTREAM *,size_t) | | ossl_quic_sstream_set_buffer_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (QUIC_STREAM_MAP *,size_t) | | ossl_quic_stream_map_set_rr_stepping | 1 | -| taint.cpp:736:7:736:13 | realloc | (RAND_POOL *,size_t) | | ossl_rand_pool_add_begin | 1 | -| taint.cpp:736:7:736:13 | realloc | (SIPHASH *,size_t) | | SipHash_set_hash_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_block_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_default_read_buffer_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,size_t) | | SSL_set_num_tickets | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,unsigned long) | | SSL_dane_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL *,unsigned long) | | SSL_dane_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CONNECTION *,unsigned long) | | tls1_check_ec_tmp_key | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_block_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_default_read_buffer_len | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,size_t) | | SSL_CTX_set_num_tickets | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (SSL_CTX *,unsigned long) | | SSL_CTX_dane_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_init_null | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_set_max_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | WPACKET_start_sub_packet_len__ | 1 | -| taint.cpp:736:7:736:13 | realloc | (WPACKET *,size_t) | | ossl_quic_wire_encode_padding | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_STORE *,unsigned long) | | X509_STORE_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 | -| taint.cpp:736:7:736:13 | realloc | (__gconv_step *,size_t) | | __gconv_close_transform | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_lmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_rmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (argp_fmtstream_t,size_t) | | __argp_fmtstream_set_wmargin | 1 | -| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_skip | 1 | -| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_unwrite | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | RAND_file_name | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __getcwd | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __gets_chk | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | __getwd_chk | 1 | -| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | plain_method | 1 | -| taint.cpp:736:7:736:13 | realloc | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_getn_scheme_handler | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_memdup0 | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | OPENSSL_strnlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | __nss_module_allocate | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | __strndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | charmap_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | locfile_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | mblen | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | uv__strndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | xstrndup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | -| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | Curl_memdup | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | __nis_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | __nss_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | compute_hashval | 1 | -| taint.cpp:736:7:736:13 | realloc | (const wchar_t *,size_t) | | __wcsnlen_generic | 1 | -| taint.cpp:736:7:736:13 | realloc | (const wchar_t *,size_t) | | wcswidth | 1 | -| taint.cpp:736:7:736:13 | realloc | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | -| taint.cpp:736:7:736:13 | realloc | (dl_find_object_internal *,size_t) | | _dlfo_sort_mappings | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_tail | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_tail | 1 | -| taint.cpp:736:7:736:13 | realloc | (dynhds *,size_t) | | Curl_dynhds_getn | 1 | -| taint.cpp:736:7:736:13 | realloc | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | -| taint.cpp:736:7:736:13 | realloc | (hash_table *,unsigned long) | | init_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (int,size_t) | | ossl_calculate_comp_expansion | 1 | -| taint.cpp:736:7:736:13 | realloc | (link_map *,size_t) | | _dl_make_tlsdesc_dynamic | 1 | -| taint.cpp:736:7:736:13 | realloc | (locale_file *,size_t) | | init_locale_data | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | -| taint.cpp:736:7:736:13 | realloc | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | -| taint.cpp:736:7:736:13 | realloc | (nss_action *,size_t) | | __nss_action_allocate | 1 | -| taint.cpp:736:7:736:13 | realloc | (pthread_attr_t *,size_t) | | __pthread_attr_setguardsize | 1 | -| taint.cpp:736:7:736:13 | realloc | (pthread_attr_t *,size_t) | | __pthread_attr_setstacksize | 1 | -| taint.cpp:736:7:736:13 | realloc | (size_t,size_t) | | __libc_memalign | 1 | -| taint.cpp:736:7:736:13 | realloc | (size_t,size_t) | | aligned_alloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (u_long,unsigned long) | | __p_option | 1 | -| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | nghttp2_downcase | 1 | -| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __arc4random_buf | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __arc4random_buf | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __libc_realloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __libc_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __minimal_realloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | __minimal_realloc | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | getentropy | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | getentropy | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 1 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | xrealloc | 0 | -| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | xrealloc | 1 | -| taint.cpp:758:5:758:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| taint.cpp:758:5:758:11 | sprintf | (char **,const char *,...) | | ___asprintf | 1 | -| taint.cpp:758:5:758:11 | sprintf | (char **,const char *,...) | | ___asprintf | 2 | -| taint.cpp:758:5:758:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (ARGS *,char *) | | chopup_args | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (BIO *,char *) | | BIO_set_callback_arg | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get_by_user | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_password | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (XDR *,char *) | | xdr_char | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | passwd2des_internal | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | passwd2des_internal | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xdecrypt | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xdecrypt | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xencrypt | 0 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (char *,char *) | | xencrypt | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | __old_realpath | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | __realpath | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha1sum_file | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha3sum_file | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const ether_addr *,char *) | | ether_ntoa_r | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (const tm *,char *) | | __asctime_r | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | -| taint.cpp:760:6:760:23 | call_sprintf_twice | (unsigned long,char *) | | ERR_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:782:7:782:11 | fopen | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:782:7:782:11 | fopen | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:782:7:782:11 | fopen | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:782:7:782:11 | fopen | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:782:7:782:11 | fopen | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:782:7:782:11 | fopen | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:782:7:782:11 | fopen | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:782:7:782:11 | fopen | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:782:7:782:11 | fopen | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | __strsep | 1 | -| taint.cpp:782:7:782:11 | fopen | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:782:7:782:11 | fopen | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bindtextdomain | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __dgettext | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __gconv_compare_alias | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcasestr | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_sse42 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strstr_generic | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strverscmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | advance | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | advance | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_aliases | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_open | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | chroot_canon | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | iconv_open | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | step | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | step | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | tempnam | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | xfopen | 0 | -| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:782:7:782:11 | fopen | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:782:7:782:11 | fopen | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:782:7:782:11 | fopen | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:782:7:782:11 | fopen | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | gzdopen | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | setlocale | 1 | -| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:782:7:782:11 | fopen | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2num | 1 | -| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2unum | 1 | -| taint.cpp:782:7:782:11 | fopen | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:782:7:782:11 | fopen | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:782:7:782:11 | fopen | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:782:7:782:11 | fopen | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:782:7:782:11 | fopen | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:782:7:782:11 | fopen | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:782:7:782:11 | fopen | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (CURL *,char **,const char *) | | add_file_name_to_url | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (FILE *,const char *,const char *) | | _IO_new_proc_open | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (FILE *,const char *,const char *) | | _IO_new_proc_open | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,Jim_Obj *,const char *) | | Jim_CompareStringImmediate | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_CMP_MSG *,OSSL_LIB_CTX *,const char *) | | ossl_cmp_msg_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_DECODER *,void *,const char *) | | ossl_decoder_instance_new_forprov | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,EVP_PKEY *,const char *) | | EVP_PKEY_CTX_new_from_pkey | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | EVP_PKEY_CTX_new_from_name | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | EVP_PKEY_CTX_new_from_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | ossl_slh_dsa_key_new | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,const char *,const char *) | | ossl_slh_dsa_key_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (OSSL_NAMEMAP *,int,const char *) | | ossl_namemap_add_name | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (PROV_CTX *,const char *,const char *) | | ossl_prov_ctx_get_param | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (PROV_CTX *,const char *,const char *) | | ossl_prov_ctx_get_param | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (SRP_user_pwd *,const char *,const char *) | | SRP_user_pwd_set1_ids | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (SRP_user_pwd *,const char *,const char *) | | SRP_user_pwd_set1_ids | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (SSL_CONF_CTX *,const char *,const char *) | | SSL_CONF_cmd | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (SSL_CONF_CTX *,const char *,const char *) | | SSL_CONF_cmd | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,UI_STRING *,const char *) | | UI_set_result | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,const char *,const char *) | | UI_construct_prompt | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (UI *,const char *,const char *) | | UI_construct_prompt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509 *,OSSL_LIB_CTX *,const char *) | | ossl_x509_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509V3_EXT_METHOD *,X509V3_CTX *,const char *) | | s2i_ASN1_IA5STRING | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509V3_EXT_METHOD *,X509V3_CTX *,const char *) | | s2i_ASN1_UTF8STRING | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509_CRL *,OSSL_LIB_CTX *,const char *) | | ossl_x509_crl_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (X509_REQ *,OSSL_LIB_CTX *,const char *) | | ossl_x509_req_set0_libctx | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char **,size_t *,const char *) | | envz_remove | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const char *,const char *) | | host2netname | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const char *,const char *) | | host2netname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (char[256],const uid_t,const char *) | | user2netname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const ASN1_ITEM *,OSSL_LIB_CTX *,const char *) | | ASN1_item_new_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_CIPHER *,OSSL_LIB_CTX *,const char *) | | CMS_AuthEnvelopedData_create_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_CIPHER *,OSSL_LIB_CTX *,const char *) | | CMS_EnvelopedData_create_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const EVP_MD *,OSSL_LIB_CTX *,const char *) | | ossl_cms_DigestedData_create | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const OSSL_PARAM[],OSSL_LIB_CTX *,const char *) | | EC_GROUP_new_from_params | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const OSSL_PROPERTY_LIST *,OSSL_LIB_CTX *,const char *) | | ossl_property_find_property | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | EVP_PKCS82PKEY_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_ecx_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *) | | ossl_rsa_key_from_pkcs8 | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *) | | PKCS12_SAFEBAG_get1_cert_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *) | | PKCS12_SAFEBAG_get1_crl_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const X509_ALGOR *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_param_from_x509_algor | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char **,char **,const char *) | | Curl_get_pathname | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_read | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | __argz_next | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | argz_next | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | envz_entry | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,size_t,const char *) | | envz_get | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (const char *,sqlite3_filename,const char *) | | sqlite3_uri_parameter | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (dl_exception *,const char *,const char *) | | _dl_exception_create | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (dl_exception *,const char *,const char *) | | _dl_exception_create | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (gconv_spec *,const char *,const char *) | | __gconv_create_spec | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (gconv_spec *,const char *,const char *) | | __gconv_create_spec | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (gz_statep,int,const char *) | | gz_error | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,OSSL_LIB_CTX *,const char *) | | PKCS12_init_ex | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,char *const *,const char *) | | __posix_getopt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,char *const *,const char *) | | getopt | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,dl_exception *,const char *) | | _dl_signal_cexception | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,dl_exception *,const char *) | | _dl_signal_exception | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (int,int,const char *) | | OSSL_CMP_STATUSINFO_new | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (locale_t,const char *,const char *) | | __translated_number_width | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (locale_t,const char *,const char *) | | __translated_number_width | 2 | -| taint.cpp:783:5:783:11 | fopen_s | (sqlite3 *,const char *,const char *) | | sqlite3_recover_init | 1 | -| taint.cpp:783:5:783:11 | fopen_s | (sqlite3 *,const char *,const char *) | | sqlite3_recover_init | 2 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | SRP_VBASE_new | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | _IO_gets | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __mktemp | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_group | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_owner | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __nis_default_ttl | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | __xpg_basename | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | ctermid | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | cuserid | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | defossilize | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | des_setparity | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | dirname | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | getwd | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | make_uppercase | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | mkdtemp | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | next_item | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | | strfry | 0 | -| taint.cpp:785:6:785:15 | fopen_test | (char *) | CStringT | CStringT | 0 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | __nis_default_access | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | utf8_fromunicode | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | uv_buf_init | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (gzFile,unsigned int) | | gzbuffer | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (z_streamp,unsigned int) | | inflate_fast | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (OSSL_PARAM *,unsigned int) | | OSSL_PARAM_set_uint | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (QUIC_DEMUX *,unsigned int) | | ossl_quic_demux_set_mtu | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (QUIC_OBJ *,unsigned int) | | ossl_quic_obj_set_blocking_mode | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (RAND_POOL *,unsigned int) | | ossl_rand_pool_bytes_needed | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL *,unsigned int) | | SSL_set_hostflags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_clear_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (SSL_CONF_CTX *,unsigned int) | | SSL_CONF_CTX_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (TS_RESP_CTX *,unsigned int) | | TS_RESP_CTX_set_clock_precision_digits | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | __nis_default_access | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | utf8_fromunicode | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | uv_buf_init | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (const_nis_name,unsigned int) | | __create_ib_request | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (grouping_iterator *,unsigned int) | | __grouping_iterator_init_none | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (gzFile,unsigned int) | | gzbuffer | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (res_state,unsigned int) | | __res_get_nsaddr | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (unsigned int,unsigned int) | | __gnu_dev_makedev | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (unsigned int,unsigned int) | | gnu_dev_makedev | 1 | -| taint.cpp:802:6:802:22 | SysAllocStringLen | (z_streamp,unsigned int) | | inflate_fast | 1 | -| taint.cpp:815:7:815:12 | strchr | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_clear_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_mask_bits | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_set_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | bn_expand2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | bn_wexpand | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_find_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_retry_reason | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | BIO_set_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | TXT_DB_read | 1 | -| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (CURL *,int) | | curl_easy_pause | 1 | -| taint.cpp:815:7:815:12 | strchr | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA *,int) | | DSA_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA *,int) | | DSA_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| taint.cpp:815:7:815:12 | strchr | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| taint.cpp:815:7:815:12 | strchr | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| taint.cpp:815:7:815:12 | strchr | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_default_pbackfail | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_fwide | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_init_internal | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_new_file_attach | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_new_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_old_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_sputbackc | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_str_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | _IO_str_pbackfail | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| taint.cpp:815:7:815:12 | strchr | (FTS *,int) | | fts_children | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| taint.cpp:815:7:815:12 | strchr | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| taint.cpp:815:7:815:12 | strchr | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| taint.cpp:815:7:815:12 | strchr | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| taint.cpp:815:7:815:12 | strchr | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| taint.cpp:815:7:815:12 | strchr | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA *,int) | | RSA_clear_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA *,int) | | RSA_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| taint.cpp:815:7:815:12 | strchr | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_key_update | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_read_ahead | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_security_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL *,int) | | SSL_set_verify_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_CTX *,int) | | ssl_md | 1 | -| taint.cpp:815:7:815:12 | strchr | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509 *,int) | | X509_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509 *,int) | | X509_self_signed | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| taint.cpp:815:7:815:12 | strchr | (_Float128,int) | | __ldexpf128 | 1 | -| taint.cpp:815:7:815:12 | strchr | (_Float128,int) | | __scalbnf128 | 1 | -| taint.cpp:815:7:815:12 | strchr | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| taint.cpp:815:7:815:12 | strchr | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| taint.cpp:815:7:815:12 | strchr | (acttab *,int) | | acttab_insert | 1 | -| taint.cpp:815:7:815:12 | strchr | (addrinfo *,int) | | support_format_addrinfo | 1 | -| taint.cpp:815:7:815:12 | strchr | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| taint.cpp:815:7:815:12 | strchr | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| taint.cpp:815:7:815:12 | strchr | (char **,int) | | addrsort | 1 | -| taint.cpp:815:7:815:12 | strchr | (char *,int) | | Curl_str2addr | 1 | -| taint.cpp:815:7:815:12 | strchr | (char *,int) | | PEM_proc_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (char,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_get_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIO *,int) | | BIO_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const BIO *,int) | | BIO_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | DH_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | DH_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DH *,int) | | ossl_dh_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | DSA_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | DSA_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const DSA *,int) | | ossl_dsa_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| taint.cpp:815:7:815:12 | strchr | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| taint.cpp:815:7:815:12 | strchr | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| taint.cpp:815:7:815:12 | strchr | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | RSA_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | RSA_test_flags | 1 | -| taint.cpp:815:7:815:12 | strchr | (const RSA *,int) | | ossl_rsa_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL *,int) | | SSL_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| taint.cpp:815:7:815:12 | strchr | (const UI *,int) | | UI_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509 *,int) | | X509_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509 *,int) | | X509_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| taint.cpp:815:7:815:12 | strchr | (const XCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (const YCHAR *,int) | CStringT | CStringT | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DH_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DH_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DSA_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | DSA_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | Jim_StrDupLen | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | Jim_StrDupLen | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | RSA_meth_new | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | RSA_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | ftok | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | ftok | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | gethostbyname2 | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | gethostbyname2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | parse_yesno | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | parse_yesno | 1 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | res_gethostbyname2 | 0 | -| taint.cpp:815:7:815:12 | strchr | (const char *,int) | | res_gethostbyname2 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| taint.cpp:815:7:815:12 | strchr | (const void *,int) | | inet6_rth_getaddr | 1 | -| taint.cpp:815:7:815:12 | strchr | (double,int) | | __ldexp | 1 | -| taint.cpp:815:7:815:12 | strchr | (double,int) | | __scalbn | 1 | -| taint.cpp:815:7:815:12 | strchr | (double[],int) | | getloadavg | 1 | -| taint.cpp:815:7:815:12 | strchr | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| taint.cpp:815:7:815:12 | strchr | (fexcept_t *,int) | | fegetexceptflag | 1 | -| taint.cpp:815:7:815:12 | strchr | (float,int) | | __ldexpf | 1 | -| taint.cpp:815:7:815:12 | strchr | (float,int) | | __scalbnf | 1 | -| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzflush | 1 | -| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzputc | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_PURPOSE_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_TRUST_set | 1 | -| taint.cpp:815:7:815:12 | strchr | (int *,int) | | __lll_unlock_elision | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | BN_security_bits | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_MD_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_PKEY_meth_new | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | __isctype | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | acttab_alloc | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | div | 1 | -| taint.cpp:815:7:815:12 | strchr | (int,int) | | inet6_rth_space | 1 | -| taint.cpp:815:7:815:12 | strchr | (long double,int) | | __ldexpl | 1 | -| taint.cpp:815:7:815:12 | strchr | (netlink_handle *,int) | | __netlink_request | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| taint.cpp:815:7:815:12 | strchr | (ns_msg,int) | | ns_msg_getflag | 1 | -| taint.cpp:815:7:815:12 | strchr | (obstack *,int) | | _obstack_newchunk | 1 | -| taint.cpp:815:7:815:12 | strchr | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| taint.cpp:815:7:815:12 | strchr | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| taint.cpp:815:7:815:12 | strchr | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_add | 1 | -| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_addbasis | 1 | -| taint.cpp:815:7:815:12 | strchr | (sigset_t *,int) | | sigaddset | 1 | -| taint.cpp:815:7:815:12 | strchr | (sigset_t *,int) | | sigdelset | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| taint.cpp:815:7:815:12 | strchr | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| taint.cpp:815:7:815:12 | strchr | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| taint.cpp:815:7:815:12 | strchr | (timespec *,int) | | __timespec_get | 1 | -| taint.cpp:815:7:815:12 | strchr | (timespec *,int) | | __timespec_getres | 1 | -| taint.cpp:815:7:815:12 | strchr | (uint16_t,int) | | tls1_group_id2nid | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| taint.cpp:815:7:815:12 | strchr | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| taint.cpp:815:7:815:12 | strchr | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *,int) | | DSO_dsobyaddr | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *,int) | | sqlite3_realloc | 1 | -| taint.cpp:815:7:815:12 | strchr | (void *const *,int) | | __backtrace_symbols | 1 | -| taint.cpp:815:7:815:12 | strchr | (wchar_t,int) | CStringT | CStringT | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const OSSL_PARAM *,const char **) | | OSSL_PARAM_get_utf8_ptr | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const OSSL_PARAM *,const char **) | | OSSL_PARAM_get_utf8_string_ptr | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (const X509_NAME *,const char **) | | OCSP_url_svcloc_new | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (int,const char **) | | _nl_load_locale_from_archive | 1 | -| taint.cpp:817:6:817:27 | write_to_const_ptr_ptr | (sqlite3_intck *,const char **) | | sqlite3_intck_error | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ASN1_UTCTIME *,const char *) | | ASN1_UTCTIME_set_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_asc2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_dec2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_hex2bn | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | _CONF_new_section | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (CURLU *,const char *) | | Curl_url_set_authority | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_convert_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_set_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | ENGINE_set_id | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | ENGINE_set_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (ENGINE *,const char *) | | OSSL_STORE_LOADER_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY *,const char *) | | CTLOG_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (GlobalConfig *,const char *) | | setvariable | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_Eval | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (Lmid_t,const char *) | | _dl_lookup_map | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_no_proxy | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_proxy | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_server | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_CMP_CTX *,const char *) | | OSSL_CMP_CTX_set1_serverPath | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_structure | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_DECODER_CTX *,const char *) | | OSSL_DECODER_CTX_set_input_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_structure | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_ENCODER_CTX *,const char *) | | OSSL_ENCODER_CTX_set_output_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_JSON_ENC *,const char *) | | ossl_json_key | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_JSON_ENC *,const char *) | | ossl_json_str | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CMS_ContentInfo_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CTLOG_STORE_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | CT_POLICY_EVAL_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | EC_KEY_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_CMP_SRV_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | OSSL_PROVIDER_load | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | PKCS7_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | SCT_CTX_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | TS_RESP_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_CRL_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_PUBKEY_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_REQ_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_STORE_CTX_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | X509_new_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_cmp_mock_srv_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_cms_Data_create | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_LIB_CTX *,const char *) | | ossl_parse_property | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_locate | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_ptr | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PARAM *,const char *) | | OSSL_PARAM_set_utf8_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (OSSL_PROVIDER *,const char *) | | ossl_provider_set_module_path | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (PKCS7 *,const char *) | | ossl_pkcs7_set1_propq | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (RSA_METHOD *,const char *) | | RSA_meth_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_add1_host | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_set1_host | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_set_cipher_list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL *,const char *) | | SSL_use_psk_identity_hint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CONF_CTX *,const char *) | | SSL_CONF_CTX_set1_prefix | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CONF_CTX *,const char *) | | SSL_CONF_cmd_value_type | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | SSL_CTX_set_cipher_list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | SSL_CTX_use_psk_identity_hint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_CTX *,const char *) | | ossl_quic_set_diag_title | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (SSL_SESSION *,const char *) | | SSL_SESSION_set1_hostname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_add_error_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_add_info_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_dup_error_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (UI *,const char *) | | UI_dup_info_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509 *,const char *) | | x509_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (__printf_buffer *,const char *) | | __printf_buffer_puts_1 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (alloc_buffer,const char *) | | __libc_alloc_buffer_copy_string | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (argp_fmtstream_t,const char *) | | __argp_fmtstream_puts | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | Curl_setstropt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | __strsep | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (char *,const char *) | | xstrdup | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char **,const char *) | | uv__utf8_decode1 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bind_textdomain_codeset | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bind_textdomain_codeset | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bindtextdomain | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __bindtextdomain | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __dgettext | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __dgettext | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __gconv_compare_alias | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __gconv_compare_alias | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcasestr | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcasestr | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strcspn_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strpbrk_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_sse42 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strspn_sse42 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strstr_generic | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strstr_generic | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strverscmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | __strverscmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | _dl_cache_libcmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | _dl_cache_libcmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | advance | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | advance | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_aliases | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_aliases | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_open | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | charmap_open | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | chroot_canon | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | chroot_canon | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | iconv_open | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | iconv_open | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_v3_name_cmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_v3_name_cmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | step | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | step | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | tempnam | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | tempnam | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | xfopen | 0 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | xfopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const mntent *,const char *) | | __hasmntopt | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (const nis_error,const char *) | | nis_sperror | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_off_t *,const char *) | | str2offset | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist **,const char *) | | add2list | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist *,const char *) | | curl_slist_append | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | Curl_dyn_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | curlx_dyn_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_cget | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (gconv_fcts *,const char *) | | __wcsmbs_named_conv | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (gzFile,const char *) | | gzputs | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | BIO_meth_new | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | _IO_new_fdopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | gzdopen | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | setlocale | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | xsetlocale | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (lemon *,const char *) | | file_makename | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | secs2ms | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2num | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2unum | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (nss_module *,const char *) | | __nss_module_get_function | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (size_t *,const char *) | | next_protos_parse | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc **,const char *) | | easysrc_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc *,const char *) | | slist_wc_append | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sockaddr_un *,const char *) | | __sockaddr_un_set | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_intck *,const char *) | | sqlite3_intck_test_sql | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_stmt *,const char *) | | sqlite3_bind_parameter_index | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_str *,const char *) | | sqlite3_str_appendall | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3_value *,const char *) | | sqlite3_value_pointer | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (stringtable *,const char *) | | stringtable_add | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_cert_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_name_ex | 1 | -| taint.cpp:822:6:822:19 | take_const_ptr | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_default_uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_feof | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_ferror | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_file_close_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_file_underflow_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_ftell | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_getc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_getwc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_new_file_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_peekc_locked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_str_count | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_str_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_sungetc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_sungetwc | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wdefault_uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wfile_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wfile_underflow_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wstr_count | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | _IO_wstr_underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fbufsize | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __feof_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __ferror_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fileno | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __flbf | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fopen_maybe_mmap | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fpending | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __ftello | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __fwriting | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __getc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __getwc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __uflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __underflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __wuflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | __wunderflow | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | feof_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | ferror_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetgrent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetpwent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetsgent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | fgetspent | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | getc_unlocked | 0 | -| taint.cpp:836:6:836:18 | indirect_sink | (FILE *) | | getmntent | 0 | -| taint.cpp:837:5:837:11 | fprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | -| taint.cpp:837:5:837:11 | fprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 | -| taint.cpp:837:5:837:11 | fprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 | -| taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 1 | -| taint.cpp:837:5:837:11 | fprintf | (char **,const char *,...) | | ___asprintf | 2 | -| taint.cpp:837:5:837:11 | fprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ASN1_tag2str | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | Jim_SignalId | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | PKCS12_init | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | Symbol_Nth | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __btowc | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __current_locale_name | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __fdopendir | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __get_errlist | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __get_errname | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __math_invalid_i | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __math_invalidf_i | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __p_class | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __p_rcode | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __p_type | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __pkey_get | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __sigdescr_np | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | __strerrordesc_np | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | _tolower | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | _toupper | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | btowc | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | c_tolower | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | c_toupper | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | curlx_sitouz | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | inet6_option_space | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isalnum | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isalpha | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isblank | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | iscntrl | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isdigit | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isgraph | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | islower | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isprint | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ispunct | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isspace | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isupper | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | isxdigit | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_tolower | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | ossl_toupper | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | sigabbrev_np | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | sqlite3_errstr | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | strerrorname_np | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | support_report_failure | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | svcudp_create | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | tls13_alert_code | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | toascii | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | tolower | 0 | | taint.cpp:847:5:847:11 | toupper | (int) | | toupper | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uabs | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uv__accept | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uv_err_name | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uv_strerror | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | zError | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_STRING_type_new | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_tag2bit | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ASN1_tag2str | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | EVP_PKEY_asn1_get0 | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | Jim_ReturnCode | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | Jim_SignalId | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2ln | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2obj | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | OBJ_nid2sn | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | OSSL_STORE_INFO_type_string | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | OSSL_trace_get_category_name | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | PKCS12_init | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | Symbol_Nth | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | X509_PURPOSE_get0 | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | X509_PURPOSE_get_by_id | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | X509_TRUST_get0 | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | X509_TRUST_get_by_id | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __btowc | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __current_locale_name | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __fdopendir | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __get_errlist | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __get_errname | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __math_invalid_i | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __math_invalidf_i | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __p_class | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __p_rcode | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __p_type | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __pkey_get | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __sigdescr_np | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | __strerrordesc_np | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | _tolower | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | _toupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | btowc | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | c_tolower | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | c_toupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | curlx_sitouz | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | evp_pkey_type2name | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | inet6_option_space | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isalnum | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isalpha | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isblank | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | iscntrl | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isdigit | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isgraph | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | islower | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isprint | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ispunct | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isspace | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | isxdigit | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_cmp_bodytype_to_string | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_tolower | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | ossl_toupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | sigabbrev_np | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | sqlite3_compileoption_get | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | sqlite3_errstr | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | strerrorname_np | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | support_report_failure | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | svcudp_create | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | tls13_alert_code | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | toascii | 0 | | taint.cpp:848:5:848:11 | tolower | (int) | | tolower | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | toupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uabs | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uv__accept | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uv_err_name | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uv_get_osfhandle | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uv_strerror | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | uv_translate_sys_error | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | zError | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | __pthread_cleanup_class | __setdoit | 0 | -| taint.cpp:859:8:859:12 | iconv | (ASYNC_WAIT_CTX *,int *,size_t *,int *,size_t *) | | ASYNC_WAIT_CTX_get_changed_fds | 4 | -| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 4 | -| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 4 | -| taint.cpp:859:8:859:12 | iconv | (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 4 | -| taint.cpp:859:8:859:12 | iconv | (OSSL_RECORD_LAYER *,uint8_t,size_t,size_t,size_t *) | | tls_get_max_records_default | 4 | -| taint.cpp:859:8:859:12 | iconv | (OSSL_RECORD_LAYER *,uint8_t,size_t,size_t,size_t *) | | tls_get_max_records_multiblock | 4 | -| taint.cpp:859:8:859:12 | iconv | (QUIC_SSTREAM *,size_t,OSSL_QUIC_FRAME_STREAM *,OSSL_QTX_IOVEC *,size_t *) | | ossl_quic_sstream_get_stream_frame | 4 | -| taint.cpp:859:8:859:12 | iconv | (QUIC_TSERVER *,uint64_t,const unsigned char *,size_t,size_t *) | | ossl_quic_tserver_write | 4 | -| taint.cpp:859:8:859:12 | iconv | (QUIC_TSERVER *,uint64_t,unsigned char *,size_t,size_t *) | | ossl_quic_tserver_read | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | SSL_write_ex2 | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | ossl_quic_write_flags | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,const void *,size_t,uint64_t,size_t *) | | ssl_write_internal | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,int *,size_t *,int *,size_t *) | | SSL_get_changed_async_fds | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,uint8_t,const void *,size_t,size_t *) | | dtls1_write_app_data_bytes | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL *,uint8_t,const void *,size_t,size_t *) | | ssl3_write_bytes | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,uint8_t,const unsigned char *,size_t,size_t *) | | do_dtls1_write | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,uint8_t,const void *,size_t,size_t *) | | dtls1_write_bytes | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL_CONNECTION *,unsigned char *,unsigned char *,size_t,size_t *) | | ssl3_generate_master_secret | 4 | -| taint.cpp:859:8:859:12 | iconv | (SSL_CTX *,const SSL_CIPHER *,const EVP_MD **,int *,size_t *) | | ssl_cipher_get_evp_md_mac | 4 | -| taint.cpp:859:8:859:12 | iconv | (loaded_l10nfile *,binding *,const char *,int,size_t *) | | _nl_find_msg | 4 | -| taint.cpp:859:8:859:12 | iconv | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_fillblock | 4 | -| taint.cpp:859:8:859:12 | iconv | (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 4 | -| taint.cpp:859:8:859:12 | iconv | (unsigned long *,unsigned long *,unsigned long *,int,unsigned long *) | | bn_mul_low_recursive | 4 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | BrotliEncoderMaxCompressedSize | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | EVP_PKEY_meth_get0 | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | __libc_malloc | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | __libc_valloc | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | _dl_early_allocate | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztosi | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztosz | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztoui | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | curlx_uztoul | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | malloc | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_get_extension_type | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_param_bytes_to_blocks | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ossl_quic_sstream_new | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | ssl_cert_new | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_next_to_fault_allocate | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_next_to_fault_allocate_before | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | support_stack_alloc | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (size_t) | | xalloc_sigstack | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | BN_num_bits_word | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | BUF_MEM_new_ex | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | curlx_ultouc | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | curlx_ultous | 0 | -| taint.cpp:861:6:861:15 | test_iconv | (unsigned long) | | next_prime | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2bit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ASN1_tag2str | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Jim_ReturnCode | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Jim_SignalId | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2ln | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2obj | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OBJ_nid2sn | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | PKCS12_init | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | Symbol_Nth | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __btowc | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __current_locale_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __fdopendir | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __get_errlist | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __get_errname | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __math_invalid_i | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __math_invalidf_i | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_class | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_rcode | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __p_type | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __pkey_get | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __sigdescr_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | __strerrordesc_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | _tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | _toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | btowc | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | inet6_option_space | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isalnum | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isalpha | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isblank | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | iscntrl | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isdigit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isgraph | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | islower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isprint | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ispunct | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isspace | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | isxdigit | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | ossl_toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sigabbrev_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | strerrorname_np | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | support_report_failure | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | svcudp_create | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | toascii | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | tolower | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | toupper | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uabs | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | | zError | 0 | -| thread.cpp:4:6:4:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_clear_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_mask_bits | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_set_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | BN_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | bn_expand2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | bn_wexpand | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_find_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_retry_reason | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | BIO_set_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (BIO *,int) | | TXT_DB_read | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (CURL *,int) | | curl_easy_pause | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH *,int) | | DH_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH *,int) | | DH_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA *,int) | | DSA_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA *,int) | | DSA_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_default_pbackfail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_fwide | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_init_internal | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_new_file_attach | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_new_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_old_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_sputbackc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_str_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | _IO_str_pbackfail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (FTS *,int) | | fts_children | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA *,int) | | RSA_clear_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA *,int) | | RSA_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_key_update | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_read_ahead | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_security_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL *,int) | | SSL_set_verify_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_CTX *,int) | | ssl_md | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509 *,int) | | X509_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509 *,int) | | X509_self_signed | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (_Float128,int) | | __ldexpf128 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (_Float128,int) | | __scalbnf128 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (acttab *,int) | | acttab_insert | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (addrinfo *,int) | | support_format_addrinfo | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char **,int) | | addrsort | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char *,int) | | Curl_str2addr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char *,int) | | PEM_proc_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (char,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIGNUM *,int) | | BN_get_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIO *,int) | | BIO_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const BIO *,int) | | BIO_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | DH_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | DH_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DH *,int) | | ossl_dh_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | DSA_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | DSA_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const DSA *,int) | | ossl_dsa_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | RSA_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | RSA_test_flags | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const RSA *,int) | | ossl_rsa_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL *,int) | | SSL_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const UI *,int) | | UI_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509 *,int) | | X509_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509 *,int) | | X509_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const XCHAR *,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const YCHAR *,int) | CStringT | CStringT | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | DH_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | DSA_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | Jim_StrDupLen | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | RSA_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | ftok | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | gethostbyname2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | parse_yesno | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const char *,int) | | res_gethostbyname2 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (const void *,int) | | inet6_rth_getaddr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double,int) | | __ldexp | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double,int) | | __scalbn | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (double[],int) | | getloadavg | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (fexcept_t *,int) | | fegetexceptflag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (float,int) | | __ldexpf | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (float,int) | | __scalbnf | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (gzFile,int) | | gzflush | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (gzFile,int) | | gzputc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | X509_PURPOSE_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | X509_TRUST_set | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int *,int) | | __lll_unlock_elision | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | BN_security_bits | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | EVP_MD_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | EVP_PKEY_meth_new | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | __isctype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | acttab_alloc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | div | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (int,int) | | inet6_rth_space | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (long double,int) | | __ldexpl | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (netlink_handle *,int) | | __netlink_request | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (ns_msg,int) | | ns_msg_getflag | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (obstack *,int) | | _obstack_newchunk | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (rule *,int) | | Configlist_add | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (rule *,int) | | Configlist_addbasis | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sigset_t *,int) | | sigaddset | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sigset_t *,int) | | sigdelset | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (timespec *,int) | | __timespec_get | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (timespec *,int) | | __timespec_getres | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (uint16_t,int) | | tls1_group_id2nid | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | RAND_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *,int) | | DSO_dsobyaddr | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *,int) | | sqlite3_realloc | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (void *const *,int) | | __backtrace_symbols | 1 | -| thread.cpp:18:6:18:22 | thread_function_3 | (wchar_t,int) | CStringT | CStringT | 1 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Jim_SignalId | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | PKCS12_init | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | Symbol_Nth | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __btowc | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __current_locale_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __fdopendir | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __get_errlist | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __get_errname | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __math_invalid_i | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __math_invalidf_i | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_class | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_rcode | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __p_type | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __pkey_get | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __sigdescr_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | __strerrordesc_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | _tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | _toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | btowc | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | inet6_option_space | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isalnum | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isalpha | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isblank | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | iscntrl | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isdigit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isgraph | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | islower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isprint | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ispunct | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isspace | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | isxdigit | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | ossl_toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sigabbrev_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | strerrorname_np | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | support_report_failure | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | svcudp_create | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | toascii | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | tolower | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | toupper | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uabs | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | | zError | 0 | -| vector.cpp:13:6:13:9 | sink | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2str | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Jim_SignalId | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | PKCS12_init | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | Symbol_Nth | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __btowc | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __current_locale_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __fdopendir | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __get_errlist | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __get_errname | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __math_invalid_i | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __math_invalidf_i | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_class | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_rcode | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __p_type | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __pkey_get | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __sigdescr_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | __strerrordesc_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | _tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | _toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | btowc | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | curlx_sitouz | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | inet6_option_space | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isalnum | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isalpha | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isblank | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | iscntrl | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isdigit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isgraph | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | islower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isprint | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ispunct | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isspace | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | isxdigit | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sigabbrev_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_errstr | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | strerrorname_np | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | support_report_failure | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | svcudp_create | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tls13_alert_code | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | toascii | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tolower | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | toupper | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uabs | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv__accept | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_err_name | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_strerror | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | zError | 0 | -| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2str | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Jim_SignalId | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | PKCS12_init | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | Symbol_Nth | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __btowc | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __current_locale_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __fdopendir | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __get_errlist | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __get_errname | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __math_invalid_i | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __math_invalidf_i | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_class | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_rcode | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __p_type | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __pkey_get | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __sigdescr_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | __strerrordesc_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | _tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | _toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | btowc | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | curlx_sitouz | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | inet6_option_space | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isalnum | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isalpha | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isblank | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | iscntrl | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isdigit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isgraph | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | islower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isprint | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ispunct | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isspace | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | isxdigit | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sigabbrev_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_errstr | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | strerrorname_np | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | support_report_failure | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | svcudp_create | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | tls13_alert_code | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | toascii | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | tolower | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | toupper | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uabs | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv__accept | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_err_name | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_strerror | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | | zError | 0 | -| vector.cpp:37:6:37:23 | test_element_taint | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:279:6:279:9 | sink | (int *) | | rresvport | 0 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_clear_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_mask_bits | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_set_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | bn_expand2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | bn_wexpand | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | ossl_bn_mask_bits_fixed_top | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_find_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_retry_reason | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | BIO_set_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | TXT_DB_read | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CURL *,int) | | curl_easy_pause | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (Curl_easy *,int) | | Curl_conn_get_socket | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH_METHOD *,int) | | DH_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA *,int) | | DSA_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA *,int) | | DSA_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DSA_METHOD *,int) | | DSA_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_GROUP *,int) | | EC_GROUP_set_asn1_flag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_GROUP *,int) | | EC_GROUP_set_curve_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_set_asn1_flag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EC_KEY *,int) | | EC_KEY_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ENGINE *,int) | | ENGINE_cmd_is_executable | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ENGINE *,int) | | ENGINE_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_impl_ctx_size | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER *,int) | | EVP_CIPHER_meth_set_iv_length | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_key_length | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_set_num | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_KEYMGMT *,int) | | evp_keymgmt_util_query_operation_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_app_datasize | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_input_blocksize | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD *,int) | | EVP_MD_meth_set_result_size | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD_CTX *,int) | | EVP_MD_CTX_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_MD_CTX *,int) | | EVP_MD_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_save_parameters | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY *,int) | | EVP_PKEY_set_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_get_keygen_info | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_kdf_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_paramgen_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dh_rfc5114 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_dhx_rfc5114 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_param_enc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ec_paramgen_curve_nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_ecdh_kdf_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_hkdf_mode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_padding | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (EVP_PKEY_CTX *,int) | | EVP_PKEY_CTX_set_rsa_pss_saltlen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_default_pbackfail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_fwide | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_init_internal | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_new_file_attach | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_new_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_old_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_sputbackc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_str_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | _IO_str_pbackfail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | __printf_buffer_as_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FILE *,int) | | __wprintf_buffer_as_file_overflow | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FTS *,int) | | fts_children | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_resp_get0 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_ONEREQ *,int) | | OCSP_ONEREQ_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_REQUEST_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_REQUEST_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_REQUEST *,int) | | OCSP_request_onereq_get0 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_SINGLERESP *,int) | | OCSP_SINGLERESP_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_STACK *,int) | | OPENSSL_sk_delete | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_STACK *,int) | | OPENSSL_sk_reserve | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OPENSSL_sk_compfunc,int) | | OPENSSL_sk_new_reserve | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_deadline | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_ack_frame | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_get_largest_acked | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ACKM *,int) | | ossl_ackm_on_pkt_space_discarded | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_set_serverPort | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_failInfoCode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_ctx_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_msg_create | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_CTX *,int) | | ossl_cmp_pollReq_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_MSG *,int) | | ossl_cmp_msg_set_bodytype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_PKIHEADER *,int) | | ossl_cmp_hdr_set_pvno | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_CertId | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_REVREPCONTENT *,int) | | ossl_cmp_revrepcontent_get_pkisi | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_raverified | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_accept_unprotected | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_grant_implicit_confirm | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CMP_SRV_CTX *,int) | | OSSL_CMP_SRV_CTX_set_send_unprotected_errors | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_CRMF_PKIPUBLICATIONINFO *,int) | | OSSL_CRMF_MSG_set_PKIPublicationInfo_action | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_DECODER_CTX *,int) | | OSSL_DECODER_CTX_set_selection | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_ENCODER_CTX *,int) | | OSSL_ENCODER_CTX_set_selection | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_get_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | OSSL_LIB_CTX_set_conf_diagnostics | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_ctx_global_properties | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_dh_new_by_nid_ex | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_lib_ctx_get_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_LIB_CTX *,int) | | ossl_mac_key_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_PARAM *,int) | | OSSL_PARAM_set_int | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_QRX *,int) | | ossl_qrx_get_bytes_received | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_RECORD_LAYER *,int) | | tls_set_first_handshake | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_RECORD_LAYER *,int) | | tls_set_plain_alerts | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OSSL_STORE_CTX *,int) | | OSSL_STORE_expect | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (PKCS7 *,int) | | PKCS7_set_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_CHANNEL *,int) | | ossl_quic_channel_new_stream_local | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_ENGINE *,int) | | ossl_quic_engine_set_inhibit_tick | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_PORT *,int) | | ossl_quic_port_set_allow_incoming | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RCIDM *,int) | | ossl_quic_rcidm_get_preferred_tx_dcid_changed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RSTREAM *,int) | | ossl_quic_rstream_set_cleanse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RXFC *,int) | | ossl_quic_rxfc_get_error | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_RXFC *,int) | | ossl_quic_rxfc_has_cwm_changed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_SSTREAM *,int) | | ossl_quic_sstream_set_cleanse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_STREAM_MAP *,int) | | ossl_quic_stream_map_get_accept_queue_len | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (QUIC_TXFC *,int) | | ossl_quic_txfc_has_become_blocked | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA *,int) | | RSA_clear_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA *,int) | | RSA_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_METHOD *,int) | | RSA_meth_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_hashalg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_maskgenhashalg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_key_update | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_post_handshake_auth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_quic_tls_early_data_enabled | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_quiet_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_read_ahead | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_security_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL *,int) | | SSL_set_verify_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | dtls1_read_failed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | ossl_statem_send_fatal | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | ossl_statem_set_in_init | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CONNECTION *,int) | | tls1_shared_group | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_post_handshake_auth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_quiet_shutdown | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_security_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_srp_strength | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | SSL_CTX_set_verify_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_CTX *,int) | | ssl_md | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (SSL_SESSION *,int) | | SSL_SESSION_set_protocol_version | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_REQ *,int) | | TS_REQ_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_REQ *,int) | | TS_REQ_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_RESP_CTX *,int) | | TS_RESP_CTX_add_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_STATUS_INFO *,int) | | TS_STATUS_INFO_set_status | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_TST_INFO *,int) | | TS_TST_INFO_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_TST_INFO *,int) | | TS_TST_INFO_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_add_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (TS_VERIFY_CTX *,int) | | TS_VERIFY_CTX_set_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (WPACKET *,int) | | ossl_DER_w_begin_sequence | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509 *,int) | | X509_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509 *,int) | | X509_self_signed | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_ACERT *,int) | | X509_ACERT_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_ATTRIBUTE *,int) | | X509_ATTRIBUTE_get0_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_CRL *,int) | | X509_CRL_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_NAME *,int) | | X509_NAME_delete_entry | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_REQ *,int) | | X509_REQ_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_REVOKED *,int) | | X509_REVOKED_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE *,int) | | X509_STORE_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_error_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_STORE_CTX *,int) | | X509_STORE_CTX_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_get0_host | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_auth_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_depth | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (_Float128,int) | | __ldexpf128 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (_Float128,int) | | __scalbnf128 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (__sigset_t *,int) | | __sigaddset_compat | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (__sigset_t *,int) | | __sigdelset_compat | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (acttab *,int) | | acttab_insert | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (addrinfo *,int) | | support_format_addrinfo | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (aiocb_union *,int) | | __aio_enqueue_request | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (argp_fmtstream_t,int) | | __argp_fmtstream_putc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char **,int) | | addrsort | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | Curl_str2addr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | PEM_proc_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (connectdata *,int) | | Curl_conn_is_ssl | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_get_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_is_bit_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIO *,int) | | BIO_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIO *,int) | | BIO_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CMS_SignerInfo *,int) | | CMS_signed_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CMS_SignerInfo *,int) | | CMS_unsigned_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const CRYPTO_EX_DATA *,int) | | CRYPTO_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | DH_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | DH_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DH *,int) | | ossl_dh_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | DSA_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | DSA_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const DSA *,int) | | ossl_dsa_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ECX_KEY *,int) | | ossl_ecx_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EC_KEY *,int) | | EC_KEY_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EC_KEY *,int) | | ossl_ec_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ENGINE *,int) | | ENGINE_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_CIPHER_CTX *,int) | | EVP_CIPHER_CTX_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_MD_CTX *,int) | | EVP_MD_CTX_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_PKEY *,int) | | EVP_PKEY_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const EVP_PKEY *,int) | | EVP_PKEY_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ML_DSA_KEY *,int) | | ossl_ml_dsa_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ML_KEM_KEY *,int) | | ossl_ml_kem_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OPENSSL_STACK *,int) | | OPENSSL_sk_value | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CERTREPMESSAGE *,int) | | ossl_cmp_certrepmessage_get0_certresponse | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get0_newPkey | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_CTX *,int) | | OSSL_CMP_CTX_get_option | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_PKISI *,int) | | ossl_cmp_pkisi_check_pkifailureinfo | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const OSSL_CMP_POLLREPCONTENT *,int) | | ossl_cmp_pollrepcontent_get0_pollrep | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_local_stream_count_avail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const QUIC_CHANNEL *,int) | | ossl_quic_channel_get_remote_stream_count_avail | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | RSA_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | RSA_test_flags | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const RSA *,int) | | ossl_rsa_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SLH_DSA_KEY *,int) | | ossl_slh_dsa_key_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL *,int) | | SSL_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_CTX *,int) | | SSL_CTX_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_SESSION *,int) | | SSL_SESSION_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const SSL_SESSION *,int) | | ssl_session_dup | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const UI *,int) | | UI_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const UI_METHOD *,int) | | UI_method_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509 *,int) | | X509_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509 *,int) | | X509_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_ACERT *,int) | | X509_ACERT_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_CRL *,int) | | X509_CRL_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_NAME *,int) | | X509_NAME_get_entry | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_POLICY_LEVEL *,int) | | X509_policy_level_get0_node | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_POLICY_TREE *,int) | | X509_policy_tree_get0_level | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_REQ *,int) | | X509_REQ_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_REVOKED *,int) | | X509_REVOKED_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_STORE *,int) | | X509_STORE_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const X509_STORE_CTX *,int) | | X509_STORE_CTX_get_ex_data | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const XCHAR *,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const YCHAR *,int) | CStringT | CStringT | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | DH_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | DSA_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | Jim_StrDupLen | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | NETSCAPE_SPKI_b64_decode | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | RSA_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | ftok | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | gethostbyname2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | parse_yesno | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const char *,int) | | res_gethostbyname2 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const stack_st_X509_ATTRIBUTE *,int) | | X509at_get_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const stack_st_X509_EXTENSION *,int) | | X509v3_get_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | Jim_GenHashFunction | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const void *,int) | | inet6_rth_getaddr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double,int) | | __ldexp | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double,int) | | __scalbn | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (double[],int) | | getloadavg | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (dynhds *,int) | | Curl_dynhds_set_opts | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (fexcept_t *,int) | | fegetexceptflag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (float,int) | | __ldexpf | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (float,int) | | __scalbnf | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzflush | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzputc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_PURPOSE_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_TRUST_set | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | __lll_unlock_elision | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | BN_security_bits | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_MD_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_PKEY_meth_new | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | __isctype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | acttab_alloc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | div | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | inet6_rth_space | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (long double,int) | | __ldexpl | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (netlink_handle *,int) | | __netlink_request | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ns_msg,int) | | ns_msg_getflag | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (obstack *,int) | | _obstack_newchunk | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (posix_spawnattr_t *,int) | | posix_spawnattr_setcgroup_np | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (posix_spawnattr_t *,int) | | posix_spawnattr_setschedpolicy | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_attr_t *,int) | | __pthread_attr_setschedpolicy | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_barrierattr_t *,int) | | __pthread_barrierattr_setpshared | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | ___pthread_mutexattr_settype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprioceiling | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_mutexattr_t *,int) | | __pthread_mutexattr_setprotocol | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setkind_np | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (pthread_rwlockattr_t *,int) | | __pthread_rwlockattr_setpshared | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_add | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_addbasis | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sigset_t *,int) | | sigaddset | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sigset_t *,int) | | sigdelset | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_db_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_wal_autocheckpoint | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_backup *,int) | | sqlite3_backup_step | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_context *,int) | | sqlite3_aggregate_context | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_context *,int) | | sqlite3_result_error_code | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_index_info *,int) | | sqlite3_vtab_collation | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_bind_parameter_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_blob | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_bytes16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_decltype | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_decltype16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_double | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_int | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_int64 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_name | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_name16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_text | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_text16 | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_type | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_column_value | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3_stmt *,int) | | sqlite3_stmt_explain | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_PKCS7 *,int) | | PKCS12_add_safes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_SSL_COMP *,int) | | ssl3_comp_find | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_X509_ATTRIBUTE *,int) | | X509at_delete_attr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (stack_st_X509_EXTENSION *,int) | | X509v3_delete_ext | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (timespec *,int) | | __timespec_get | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (timespec *,int) | | __timespec_getres | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uint16_t,int) | | tls1_group_id2nid | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_priv_bytes | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned short,int) | | dtls1_get_queue_priority | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uv_env_item_t *,int) | | uv_os_free_environ | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | DSO_dsobyaddr | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | sqlite3_realloc | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *const *,int) | | __backtrace_symbols | 1 | -| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (wchar_t,int) | CStringT | CStringT | 1 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_STRING_type_new | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_tag2bit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ASN1_tag2str | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | EVP_PKEY_asn1_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Jim_ReturnCode | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Jim_SignalId | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2ln | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2obj | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OBJ_nid2sn | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OSSL_STORE_INFO_type_string | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | OSSL_trace_get_category_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | PKCS12_init | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | Symbol_Nth | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_PURPOSE_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_PURPOSE_get_by_id | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get_by_id | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_VERIFY_PARAM_get0 | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __btowc | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __current_locale_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __fdopendir | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __get_errlist | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __get_errname | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __math_invalid_i | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __math_invalidf_i | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_class | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_rcode | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __p_type | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __pkey_get | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __sigdescr_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | __strerrordesc_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | _tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | _toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | btowc | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | curlx_sitouz | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | evp_pkey_type2name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | inet6_option_space | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isalnum | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isalpha | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isblank | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | iscntrl | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isdigit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isgraph | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | islower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isprint | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ispunct | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isspace | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | isxdigit | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_cmp_bodytype_to_string | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sigabbrev_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_compileoption_get | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_errstr | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | strerrorname_np | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | support_report_failure | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | svcudp_create | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tls13_alert_code | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | toascii | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tolower | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | toupper | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uabs | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv__accept | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_err_name | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_get_osfhandle | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_strerror | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_translate_sys_error | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | zError | 0 | -| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | __pthread_cleanup_class | __setdoit | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | SRP_VBASE_new | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | _IO_gets | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __mktemp | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_group | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_owner | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __nis_default_ttl | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | __xpg_basename | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | ctermid | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | cuserid | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | defossilize | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | des_setparity | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | dirname | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | getwd | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | make_uppercase | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | mkdtemp | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | next_item | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | strfry | 0 | -| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | CStringT | CStringT | 0 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| vector.cpp:454:7:454:12 | memcpy | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| vector.cpp:454:7:454:12 | memcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 1 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| vector.cpp:454:7:454:12 | memcpy | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| vector.cpp:454:7:454:12 | memcpy | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| vector.cpp:454:7:454:12 | memcpy | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 1 | -| vector.cpp:454:7:454:12 | memcpy | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| vector.cpp:454:7:454:12 | memcpy | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 1 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| vector.cpp:454:7:454:12 | memcpy | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 1 | -| vector.cpp:454:7:454:12 | memcpy | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| vector.cpp:454:7:454:12 | memcpy | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | -| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | uv__strscpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | __realpath_chk | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | getpass_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | ns_makecanon | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| vector.cpp:454:7:454:12 | memcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | -| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| vector.cpp:454:7:454:12 | memcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | Curl_strerror | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | __strerror_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | __ttyname_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_err_name_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_strerror_r | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 1 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | writeall | 1 | -| vector.cpp:454:7:454:12 | memcpy | (int,const void *,size_t) | | writeall | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| vector.cpp:454:7:454:12 | memcpy | (int,void *,size_t) | | __readall | 2 | -| vector.cpp:454:7:454:12 | memcpy | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| vector.cpp:454:7:454:12 | memcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| vector.cpp:454:7:454:12 | memcpy | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| vector.cpp:454:7:454:12 | memcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| vector.cpp:454:7:454:12 | memcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| vector.cpp:454:7:454:12 | memcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| vector.cpp:454:7:454:12 | memcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | -| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| vector.cpp:454:7:454:12 | memcpy | (unsigned int,char *,size_t) | | __initstate | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void **,size_t,size_t) | | __posix_memalign | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| vector.cpp:454:7:454:12 | memcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| vector.cpp:454:7:454:12 | memcpy | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (OSSL_QUIC_TX_PACKETISER *,const unsigned char *,size_t,ossl_quic_initial_token_free_fn *,void *) | | ossl_quic_tx_packetiser_set_initial_token | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_dec | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (char *,size_t,size_t *,const OSSL_PARAM[],void *) | | ossl_pw_passphrase_callback_enc | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char **,const char **,bool *,..(*)(..),void *) | | _dl_catch_error | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | -| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,X509 *,unsigned long) | | ossl_x509_print_ex_brief | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,X509_CRL *,unsigned long) | | X509_CRL_print_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_CTX *,const void *,size_t) | | ossl_blake2b_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_personal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2B_PARAM *,const uint8_t *,size_t) | | ossl_blake2b_param_set_salt | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_CTX *,const void *,size_t) | | ossl_blake2s_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_personal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (BLAKE2S_PARAM *,const uint8_t *,size_t) | | ossl_blake2s_param_set_salt | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ccm128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FFC_PARAMS *,const unsigned char *,size_t) | | ossl_ffc_params_set_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const char *,size_t) | | _IO_new_do_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_default_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_new_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_wdefault_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | _IO_wfile_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | __printf_buffer_as_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,const void *,size_t) | | __wprintf_buffer_as_file_xsputn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_default_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_file_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_file_xsgetn_mmap | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (FILE *,void *,size_t) | | _IO_wdefault_xsgetn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_gcm128_setiv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (GCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_gcm128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MD5_SHA1_CTX *,const void *,size_t) | | ossl_md5_sha1_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_JSON_ENC *,const char *,size_t) | | ossl_json_str_len | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_JSON_ENC *,const void *,size_t) | | ossl_json_str_hex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_entropy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_LIB_CTX *,unsigned char *,size_t) | | ossl_rand_cleanup_user_entropy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,const void *,size_t) | | OSSL_PARAM_set_octet_string_or_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_PARAM *,void *,size_t) | | ossl_param_set_secure_block | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_default | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_RECORD_LAYER *,OSSL_RECORD_TEMPLATE *,size_t) | | tls_write_records_multiblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (POLY1305 *,const unsigned char *,size_t) | | Poly1305_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_generic_initiv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_CIPHER_CTX *,const unsigned char *,size_t) | | ossl_cipher_hw_tdes_ede3_initkey | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (PROV_GCM_CTX *,const unsigned char *,size_t) | | ossl_gcm_aad_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_PN,unsigned char *,size_t) | | ossl_quic_wire_encode_pkt_hdr_pn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_RXFC *,OSSL_STATM *,size_t) | | ossl_quic_rstream_new | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (QUIC_TLS *,const unsigned char *,size_t) | | ossl_quic_tls_set_transport_params | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RAND_POOL *,const unsigned char *,size_t) | | ossl_rand_pool_adin_mix_in | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RAND_POOL *,size_t,size_t) | | ossl_rand_pool_add_end | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RIPEMD160_CTX *,const void *,size_t) | | RIPEMD160_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (RIPEMD160_CTX *,const void *,size_t) | | ripemd160_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT **,const unsigned char **,size_t) | | o2i_SCT | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char **,size_t) | | o2i_SCT_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_extensions | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_log_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,const unsigned char *,size_t) | | SCT_set1_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_extensions | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_log_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SCT *,unsigned char *,size_t) | | SCT_set0_signature | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA256_CTX *,const void *,size_t) | | SHA224_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA256_CTX *,const void *,size_t) | | SHA256_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA512_CTX *,const void *,size_t) | | SHA384_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA512_CTX *,const void *,size_t) | | SHA512_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SHA_CTX *,const void *,size_t) | | SHA1_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIPHASH *,const unsigned char *,size_t) | | SipHash_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIPHASH *,unsigned char *,size_t) | | SipHash_Final | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIV128_CONTEXT *,const unsigned char *,size_t) | | ossl_siv128_set_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SIV128_CONTEXT *,unsigned char *,size_t) | | ossl_siv128_get_tag | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_priv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SLH_DSA_KEY *,const uint8_t *,size_t) | | ossl_slh_dsa_set_pub | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SM3_CTX *,const void *,size_t) | | ossl_sm3_block_data_order | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SM3_CTX *,const void *,size_t) | | ossl_sm3_update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set1_client_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set1_server_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,const unsigned char *,size_t) | | SSL_set_quic_tls_transport_params | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL *,size_t,size_t) | | SSL_set_block_padding_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CONNECTION *,TLS_RECORD *,size_t) | | ssl_release_record | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CONNECTION *,const unsigned char *,size_t) | | lookup_sess_in_cache | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_client_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,const unsigned char *,size_t) | | SSL_CTX_set1_server_cert_type | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_CTX *,size_t,size_t) | | SSL_CTX_set_block_padding_ex | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_alpn_selected | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const unsigned char *,size_t) | | SSL_SESSION_set1_master_key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (SSL_SESSION *,const void *,size_t) | | SSL_SESSION_set1_ticket_appdata | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (Strtab *,const char *,size_t) | | strtabadd | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_BitUpdate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WHIRLPOOL_CTX *,const void *,size_t) | | WHIRLPOOL_Update | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,BUF_MEM *,size_t) | | WPACKET_init_len | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,const unsigned char *,size_t) | | ossl_quic_wire_encode_frame_new_token | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,const void *,size_t) | | WPACKET_memcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,int,size_t) | | WPACKET_memset | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,uint64_t,size_t) | | WPACKET_put_bytes__ | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,unsigned char *,size_t) | | WPACKET_init_der | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (WPACKET *,unsigned char *,size_t) | | dtls_raw_hello_verify_request | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_add1_host | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer *,char,size_t) | | __printf_buffer_pad_1 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer *,const char *,size_t) | | __printf_buffer_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (__printf_buffer_snprintf *,char *,size_t) | | __printf_buffer_snprintf_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__wprintf_buffer *,const wchar_t *,size_t) | | __wprintf_buffer_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (__wprintf_buffer *,wchar_t,size_t) | | __wprintf_buffer_pad_1 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (alloc_buffer,const void *,size_t) | | __libc_alloc_buffer_copy_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (argp_fmtstream *,argp_fmtstream_t,size_t) | | __argp_fmtstream_ensure | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (argp_fmtstream_t,const char *,size_t) | | __argp_fmtstream_write | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char **,size_t *,size_t) | | Curl_str_number | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntolower | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntoupper | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | uv__strscpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *,size_t,size_t) | | __getcwd_chk | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *__restrict__,const char *__restrict__,size_t) | | __strlcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (char *__restrict__,const char *__restrict__,size_t) | | __strlcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const unsigned char *,size_t) | | OSSL_STORE_SEARCH_by_key_fingerprint | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_CTX *,char *,size_t) | | OSSL_CMP_CTX_snprint_PKIStatus | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_CMP_PKISI *,char *,size_t) | | OSSL_CMP_snprint_PKIStatusInfo | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_NAMEMAP *,int,size_t) | | ossl_namemap_num2name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const OSSL_PARAM *,char **,size_t) | | OSSL_PARAM_get_utf8_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL *,unsigned char *,size_t) | | SSL_get_client_random | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL *,unsigned char *,size_t) | | SSL_get_server_random | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __libc_ns_makecanon | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __libc_ns_makecanon | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __realpath_chk | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | __realpath_chk | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | ns_makecanon | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | ns_makecanon | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | c_strncasecmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,unsigned long) | | __ngettext | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | uv__random_readpath | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const charmap_t *,const char *,size_t) | | charmap_find_symbol | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const charmap_t *,const char *,size_t) | | charmap_find_value | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const repertoire_t *,const char *,size_t) | | repertoire_find_value | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,char *,size_t) | | ___ns_name_ntop | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,size_t,size_t) | | support_blob_repeat_allocate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const void *,size_t,size_t) | | support_blob_repeat_allocate_shared | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_domain_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_domain_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_leaf_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_name_of_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (const_nis_name,char *,size_t) | | nis_name_of_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int *,const char *,size_t) | | Curl_http_decode_status | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int *,int *,size_t) | | EVP_PBE_get | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __strerror_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __strerror_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __ttyname_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | __ttyname_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,const void *,size_t) | | _nl_intern_locale_data | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,const void *,size_t) | | writeall | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (int,void *,size_t) | | __readall | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (locale_file *,const uint32_t *,size_t) | | add_locale_uint32_array | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ns_rr_cursor *,const unsigned char *,size_t) | | __ns_rr_cursor_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (pthread_attr_t *,void *,size_t) | | __pthread_attr_setstack | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (scratch_buffer *,size_t,size_t) | | __libc_scratch_buffer_set_array_size | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned int,char *,size_t) | | __initstate | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (unsigned int,char *,size_t) | | __initstate | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | -| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void **,size_t,size_t) | | __posix_memalign | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | Curl_hash_str | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | __libc_reallocarray | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *,const wchar_t *,size_t) | | __wmemcpy | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *,const wchar_t *,size_t) | | __wmemmove | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcat | 2 | -| zmq.cpp:17:6:17:13 | test_zmc | (wchar_t *__restrict__,const wchar_t *__restrict__,size_t) | | __wcslcpy | 2 | getSignatureParameterName | (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) | | (..(*)(..)) | | ossl_pqueue_new | 0 | ..(*)(..) | From 3d6b3a31acccbfb3d4dcea92abe008a2233663b4 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Sat, 8 Nov 2025 16:40:46 +0000 Subject: [PATCH 616/965] C++: Also join on the 'namespace'. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 12 +- .../taint-tests/test_mad-signatures.expected | 278 +++++++++--------- .../taint-tests/test_mad-signatures.ql | 2 +- 3 files changed, 147 insertions(+), 145 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 1fe132c2784..77da8de3396 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -838,14 +838,16 @@ private Function getFunction(string namespace, string type, boolean subtypes, st * is `func:n` then the signature name is compared with the `n`'th name * in `name`. */ -private predicate signatureMatches(Function func, string signature, string type, string name, int i) { - func = getFunction(_, type, _, name) and +private predicate signatureMatches( + Function func, string namespace, string signature, string type, string name, int i +) { + func = getFunction(namespace, type, _, name) and exists(string s | s = getSignatureParameterName(signature, type, name, i) and s = getParameterTypeName(func, i) ) and if exists(getParameterTypeName(func, i + 1)) - then signatureMatches(func, signature, type, name, i + 1) + then signatureMatches(func, namespace, signature, type, name, i + 1) else i = count(signature.indexOf(",")) } @@ -860,7 +862,7 @@ module ExternalFlowDebug { * * Exposed for testing purposes. */ - predicate signatureMatches_debug = signatureMatches/5; + predicate signatureMatches_debug = signatureMatches/6; /** * INTERNAL: Do not use. @@ -936,7 +938,7 @@ private predicate elementSpecMatchesSignature( ) { elementSpec(namespace, pragma[only_bind_into](type), subtypes, pragma[only_bind_into](name), pragma[only_bind_into](signature), _) and - signatureMatches(func, signature, type, name, 0) + signatureMatches(func, namespace, signature, type, name, 0) } /** diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 142bb14366f..5e96daea95c 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -1,143 +1,143 @@ signatureMatches -| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | -| atl.cpp:411:5:411:12 | CComBSTR | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | -| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | -| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 | -| atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | -| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 | -| atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 | -| atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 | -| atl.cpp:423:13:423:18 | Append | (LPCOLESTR) | CComBSTR | Append | 0 | -| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 | -| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 | -| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 | -| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:440:10:440:19 | LoadString | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | -| atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 | -| atl.cpp:540:5:540:17 | CComSafeArray | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | -| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 | -| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 | -| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:916:5:916:18 | CSimpleStringT | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | -| atl.cpp:917:5:917:18 | CSimpleStringT | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:927:17:927:25 | CopyChars | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | -| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | -| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | -| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 | -| atl.cpp:1037:5:1037:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1037:5:1037:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1037:5:1037:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1038:5:1038:12 | CStringT | (const CStringT &) | CStringT | CStringT | 0 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1042:5:1042:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | -| atl.cpp:1043:5:1043:12 | CStringT | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1043:5:1043:12 | CStringT | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | -| atl.cpp:1045:5:1045:12 | CStringT | (char *) | CStringT | CStringT | 0 | -| atl.cpp:1046:5:1046:12 | CStringT | (unsigned char *) | CStringT | CStringT | 0 | -| atl.cpp:1047:5:1047:12 | CStringT | (wchar_t *) | CStringT | CStringT | 0 | -| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 | -| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const XCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (const YCHAR *,int) | CStringT | CStringT | 1 | -| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 | -| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1061:10:1061:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (PCXSTR,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 0 | -| atl.cpp:1062:10:1062:21 | AppendFormat | (UINT,...) | CStringT | AppendFormat | 1 | -| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 0 | -| atl.cpp:1070:9:1070:14 | Insert | (int,PCXSTR) | CStringT | Insert | 1 | -| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 0 | -| atl.cpp:1071:9:1071:14 | Insert | (int,XCHAR) | CStringT | Insert | 1 | -| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | -| atl.cpp:1081:9:1081:15 | Replace | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | -| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 0 | -| atl.cpp:1082:9:1082:15 | Replace | (XCHAR,XCHAR) | CStringT | Replace | 1 | -| atl.cpp:1286:5:1286:10 | ComPtr | (const ComPtr &) | ComPtr | ComPtr | 0 | -| atl.cpp:1287:5:1287:10 | ComPtr | (ComPtr &&) | ComPtr | ComPtr | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1290:5:1290:10 | ComPtr | (T *) | ComPtr | ComPtr | 0 | -| atl.cpp:1301:13:1301:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | -| atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 0 | -| atl.cpp:1303:13:1303:18 | CopyTo | (REFIID,void **) | ComPtr | CopyTo | 1 | -| atl.cpp:1306:13:1306:18 | CopyTo | (T **) | ComPtr | CopyTo | 0 | -| atl.cpp:1328:13:1328:21 | operator= | (T *) | ComPtr | operator= | 0 | -| atl.cpp:1330:13:1330:21 | operator= | (U *) | ComPtr | operator= | 0 | -| atl.cpp:1331:13:1331:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1333:13:1333:21 | operator= | (const ComPtr &) | ComPtr | operator= | 0 | -| atl.cpp:1334:13:1334:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| atl.cpp:1336:13:1336:21 | operator= | (ComPtr &&) | ComPtr | operator= | 0 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (const vector &,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:294:12:294:17 | vector | (vector &&,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 0 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 1 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:295:3:295:8 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 0 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 1 | -| stl.h:296:101:296:106 | vector | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | -| stl.h:296:101:296:106 | vector | (size_type,const T &,const Allocator &) | vector | vector | 2 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 0 | -| stl.h:303:106:303:111 | assign | (InputIt,InputIt) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 0 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:306:8:306:13 | assign | (size_type,const T &) | vector | assign | 1 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 0 | -| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 0 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 1 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:333:42:333:47 | insert | (const_iterator,InputIt,InputIt) | vector | insert | 2 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 0 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | -| stl.h:678:33:678:38 | format | (format_string,Args &&) | | format | 1 | -| taint.cpp:735:7:735:12 | malloc | (size_t) | | malloc | 0 | -| taint.cpp:847:5:847:11 | toupper | (int) | | toupper | 0 | -| taint.cpp:848:5:848:11 | tolower | (int) | | tolower | 0 | +| atl.cpp:71:5:71:17 | _U_STRINGorID | ATL | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:72:5:72:17 | _U_STRINGorID | ATL | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 | +| atl.cpp:411:5:411:12 | CComBSTR | ATL | (const CComBSTR &) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | ATL | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:413:5:413:12 | CComBSTR | ATL | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:414:5:414:12 | CComBSTR | ATL | (int,LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:414:5:414:12 | CComBSTR | ATL | (int,LPCSTR) | CComBSTR | CComBSTR | 1 | +| atl.cpp:415:5:415:12 | CComBSTR | ATL | (LPCOLESTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:416:5:416:12 | CComBSTR | ATL | (LPCSTR) | CComBSTR | CComBSTR | 0 | +| atl.cpp:417:5:417:12 | CComBSTR | ATL | (CComBSTR &&) | CComBSTR | CComBSTR | 0 | +| atl.cpp:420:13:420:18 | Append | ATL | (const CComBSTR &) | CComBSTR | Append | 0 | +| atl.cpp:421:13:421:18 | Append | ATL | (wchar_t) | CComBSTR | Append | 0 | +| atl.cpp:422:13:422:18 | Append | ATL | (char) | CComBSTR | Append | 0 | +| atl.cpp:423:13:423:18 | Append | ATL | (LPCOLESTR) | CComBSTR | Append | 0 | +| atl.cpp:424:13:424:18 | Append | ATL | (LPCSTR) | CComBSTR | Append | 0 | +| atl.cpp:425:13:425:18 | Append | ATL | (LPCOLESTR,int) | CComBSTR | Append | 0 | +| atl.cpp:425:13:425:18 | Append | ATL | (LPCOLESTR,int) | CComBSTR | Append | 1 | +| atl.cpp:440:10:440:19 | LoadString | ATL | (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:440:10:440:19 | LoadString | ATL | (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | +| atl.cpp:441:10:441:19 | LoadString | ATL | (UINT) | CComBSTR | LoadString | 0 | +| atl.cpp:540:5:540:17 | CComSafeArray | ATL | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 | +| atl.cpp:544:13:544:15 | Add | ATL | (const SAFEARRAY *) | CComSafeArray | Add | 0 | +| atl.cpp:546:13:546:15 | Add | ATL | (const T &,BOOL) | CComSafeArray | Add | 0 | +| atl.cpp:546:13:546:15 | Add | ATL | (const T &,BOOL) | CComSafeArray | Add | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:915:5:915:18 | CSimpleStringT | ATL | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 | +| atl.cpp:916:5:916:18 | CSimpleStringT | ATL | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:916:5:916:18 | CSimpleStringT | ATL | (PCXSTR,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 | +| atl.cpp:917:5:917:18 | CSimpleStringT | ATL | (const CSimpleStringT &) | CSimpleStringT | CSimpleStringT | 0 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:927:17:927:25 | CopyChars | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 0 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 | +| atl.cpp:928:17:928:25 | CopyChars | ATL | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 0 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 1 | +| atl.cpp:929:17:929:35 | CopyCharsOverlapped | ATL | (XCHAR *,const XCHAR *,int) | CSimpleStringT | CopyCharsOverlapped | 2 | +| atl.cpp:1036:5:1036:12 | CStringT | ATL | (const VARIANT &) | CStringT | CStringT | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1037:5:1037:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1038:5:1038:12 | CStringT | ATL | (const CStringT &) | CStringT | CStringT | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1042:5:1042:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 0 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (LPCWSTR,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (const VARIANT &,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1043:5:1043:12 | CStringT | ATL | (const unsigned char *,IAtlStringMgr *) | CStringT | CStringT | 1 | +| atl.cpp:1045:5:1045:12 | CStringT | ATL | (char *) | CStringT | CStringT | 0 | +| atl.cpp:1046:5:1046:12 | CStringT | ATL | (unsigned char *) | CStringT | CStringT | 0 | +| atl.cpp:1047:5:1047:12 | CStringT | ATL | (wchar_t *) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 0 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1049:5:1049:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (char,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (const XCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (const YCHAR *,int) | CStringT | CStringT | 1 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 0 | +| atl.cpp:1050:5:1050:12 | CStringT | ATL | (wchar_t,int) | CStringT | CStringT | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1061:10:1061:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (PCXSTR,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 0 | +| atl.cpp:1062:10:1062:21 | AppendFormat | ATL | (UINT,...) | CStringT | AppendFormat | 1 | +| atl.cpp:1070:9:1070:14 | Insert | ATL | (int,PCXSTR) | CStringT | Insert | 0 | +| atl.cpp:1070:9:1070:14 | Insert | ATL | (int,PCXSTR) | CStringT | Insert | 1 | +| atl.cpp:1071:9:1071:14 | Insert | ATL | (int,XCHAR) | CStringT | Insert | 0 | +| atl.cpp:1071:9:1071:14 | Insert | ATL | (int,XCHAR) | CStringT | Insert | 1 | +| atl.cpp:1081:9:1081:15 | Replace | ATL | (PCXSTR,PCXSTR) | CStringT | Replace | 0 | +| atl.cpp:1081:9:1081:15 | Replace | ATL | (PCXSTR,PCXSTR) | CStringT | Replace | 1 | +| atl.cpp:1082:9:1082:15 | Replace | ATL | (XCHAR,XCHAR) | CStringT | Replace | 0 | +| atl.cpp:1082:9:1082:15 | Replace | ATL | (XCHAR,XCHAR) | CStringT | Replace | 1 | +| atl.cpp:1286:5:1286:10 | ComPtr | Microsoft::WRL | (const ComPtr &) | ComPtr | ComPtr | 0 | +| atl.cpp:1287:5:1287:10 | ComPtr | Microsoft::WRL | (ComPtr &&) | ComPtr | ComPtr | 0 | +| atl.cpp:1290:5:1290:10 | ComPtr | Microsoft::WRL | (T *) | ComPtr | ComPtr | 0 | +| atl.cpp:1290:5:1290:10 | ComPtr | Microsoft::WRL | (T *) | ComPtr | ComPtr | 0 | +| atl.cpp:1301:13:1301:18 | CopyTo | Microsoft::WRL | (T **) | ComPtr | CopyTo | 0 | +| atl.cpp:1303:13:1303:18 | CopyTo | Microsoft::WRL | (REFIID,void **) | ComPtr | CopyTo | 0 | +| atl.cpp:1303:13:1303:18 | CopyTo | Microsoft::WRL | (REFIID,void **) | ComPtr | CopyTo | 1 | +| atl.cpp:1306:13:1306:18 | CopyTo | Microsoft::WRL | (T **) | ComPtr | CopyTo | 0 | +| atl.cpp:1328:13:1328:21 | operator= | Microsoft::WRL | (T *) | ComPtr | operator= | 0 | +| atl.cpp:1330:13:1330:21 | operator= | Microsoft::WRL | (U *) | ComPtr | operator= | 0 | +| atl.cpp:1331:13:1331:21 | operator= | Microsoft::WRL | (const ComPtr &) | ComPtr | operator= | 0 | +| atl.cpp:1333:13:1333:21 | operator= | Microsoft::WRL | (const ComPtr &) | ComPtr | operator= | 0 | +| atl.cpp:1334:13:1334:21 | operator= | Microsoft::WRL | (ComPtr &&) | ComPtr | operator= | 0 | +| atl.cpp:1336:13:1336:21 | operator= | Microsoft::WRL | (ComPtr &&) | ComPtr | operator= | 0 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (const vector &,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:294:12:294:17 | vector | std | (vector &&,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 0 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 0 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 1 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:295:3:295:8 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 0 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 1 | +| stl.h:296:101:296:106 | vector | std | (InputIterator,InputIterator,const Allocator &) | vector | vector | 2 | +| stl.h:296:101:296:106 | vector | std | (size_type,const T &,const Allocator &) | vector | vector | 2 | +| stl.h:303:106:303:111 | assign | std | (InputIt,InputIt) | vector | assign | 0 | +| stl.h:303:106:303:111 | assign | std | (InputIt,InputIt) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 0 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:306:8:306:13 | assign | std | (size_type,const T &) | vector | assign | 1 | +| stl.h:331:12:331:17 | insert | std | (const_iterator,T &&) | vector | insert | 0 | +| stl.h:331:12:331:17 | insert | std | (const_iterator,T &&) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 0 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 0 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 1 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 2 | +| stl.h:333:42:333:47 | insert | std | (const_iterator,InputIt,InputIt) | vector | insert | 2 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 0 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 0 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | +| stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | +| taint.cpp:735:7:735:12 | malloc | | (size_t) | | malloc | 0 | +| taint.cpp:847:5:847:11 | toupper | | (int) | | toupper | 0 | +| taint.cpp:848:5:848:11 | tolower | | (int) | | tolower | 0 | getSignatureParameterName | (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) | | (..(*)(..)) | | ossl_pqueue_new | 0 | ..(*)(..) | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql index 32c0e59c158..dc0027fcc6f 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.ql @@ -2,7 +2,7 @@ import cpp import semmle.code.cpp.dataflow.ExternalFlow import ExternalFlowDebug -query predicate signatureMatches = signatureMatches_debug/5; +query predicate signatureMatches = signatureMatches_debug/6; query predicate getSignatureParameterName = getSignatureParameterName_debug/4; From dfdc2a6a153fc922c6f1e2c00f53c3a19eea4986 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Sat, 8 Nov 2025 16:41:08 +0000 Subject: [PATCH 617/965] C++: Delete an incorrect comment. --- cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 77da8de3396..55848d3fa2f 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -998,8 +998,6 @@ private predicate classHasQualifiedName(Class namedClass, string namespace, stri * are also returned. * 3. The element has name `name` * 4. If `signature` is non-empty, then the element has a list of parameter types described by `signature`. - * - * NOTE: `namespace` is currently not used (since we don't properly extract modules yet). */ pragma[nomagic] private Element interpretElement0( From d77b35c5d2a9ac5ea07f3dd5daedf5af52494f2a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 6 Nov 2025 20:25:01 +0100 Subject: [PATCH 618/965] Codegen: Add `Raw::getImmediateChild` and `Synth::getSynthParent` --- misc/codegen/templates/ql_db.mustache | 70 +++++++++++++++++++ misc/codegen/templates/ql_parent.mustache | 7 +- .../codegen/templates/ql_synth_types.mustache | 19 +++++ 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/misc/codegen/templates/ql_db.mustache b/misc/codegen/templates/ql_db.mustache index e63e0aae903..a82ff78ec51 100644 --- a/misc/codegen/templates/ql_db.mustache +++ b/misc/codegen/templates/ql_db.mustache @@ -29,9 +29,79 @@ module Raw { {{type}} {{getter}}({{#is_indexed}}int index{{/is_indexed}}) { {{tablename}}({{#tableparams}}{{^first}}, {{/first}}{{param}}{{/tableparams}}) } + {{#is_indexed}} + /** + * Gets the number of {{doc_plural}}. + {{#internal}} + * INTERNAL: Do not use. + {{/internal}} + */ + int getNumberOf{{plural}}() { + result = count(int i | {{tablename}}(this, i, _)) + } + {{/is_indexed}} {{/synth}} {{/properties}} } + + {{#final}} + private Element getImmediateChildOf{{name}}({{name}} e, int index) { + {{^has_children}}none(){{/has_children}} + {{#has_children}} + {{! n is the base offset 0, for ease of generation }} + {{! n is constructed to be strictly greater than the indexes for children }} + exists(int n{{#all_children}}, int n{{property.singular}}{{/all_children}} | + n = 0 + {{#all_children}} + {{#property}} + {{#synth}} + and + n{{singular}} = n{{prev}} + {{/synth}} + {{^synth}} + {{! n is defined on top of the previous definition }} + {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} + {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} + and + n{{singular}} = n{{prev}} {{^is_repeated}}+ 1{{/is_repeated}}{{#is_repeated}}+ e.getNumberOf{{plural}}(){{/is_repeated}} + {{/synth}} + {{/property}} + {{/all_children}} and ( + none() + {{#all_children}} + {{#property}} + {{^synth}} + or + {{#is_repeated}} + result = e.get{{singular}}(index - n{{prev}}) + {{/is_repeated}} + {{^is_repeated}} + index = n{{prev}} and result = e.get{{singular}}() + {{/is_repeated}} + {{/synth}} + {{/property}} + {{/all_children}} + )) + {{/has_children}} + } + {{/final}} + {{/classes}} + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + {{#classes}} + {{#final}} + or + result = getImmediateChildOf{{name}}(e, index) + {{/final}} + {{/classes}} + } } diff --git a/misc/codegen/templates/ql_parent.mustache b/misc/codegen/templates/ql_parent.mustache index 84bc0d79a0b..91c5de98c47 100644 --- a/misc/codegen/templates/ql_parent.mustache +++ b/misc/codegen/templates/ql_parent.mustache @@ -23,7 +23,12 @@ private module Impl { {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} and - n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} + {{#type_is_hideable}} + n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.getImmediate{{singular}}(i)) | i){{/is_repeated}} + {{/type_is_hideable}} + {{^type_is_hideable}} + n{{singular}} = n{{prev}} {{^is_repeated}}+ 1{{/is_repeated}}{{#is_repeated}}+ e.getNumberOf{{plural}}(){{/is_repeated}} + {{/type_is_hideable}} {{/property}} {{/all_children}} and ( none() diff --git a/misc/codegen/templates/ql_synth_types.mustache b/misc/codegen/templates/ql_synth_types.mustache index c76654b8ea9..14a48f635e5 100644 --- a/misc/codegen/templates/ql_synth_types.mustache +++ b/misc/codegen/templates/ql_synth_types.mustache @@ -32,9 +32,28 @@ module Synth { {{/root}} {{/non_final_classes}} + /** + * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::{{root}} getSynthParent(T{{root}} e) { + none() + {{#final_classes}} + {{#is_fresh_synth}} + {{#has_params}} + or + e = T{{name}}({{#params}}{{#first}}result{{/first}}{{^first}}, _{{/first}}{{/params}}) + {{/has_params}} + {{/is_fresh_synth}} + {{/final_classes}} + } + + {{#final_classes}} /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `T{{name}}`, if possible. */ T{{name}} convert{{name}}FromRaw(Raw::Element e) { From 0bf458a56f76b9b6d0d958cbe5e3a9ca9b460d4e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 9 Nov 2025 20:40:13 +0100 Subject: [PATCH 619/965] Rust: Run codegen --- rust/ql/.generated.list | 6 +- .../internal/generated/ParentChild.qll | 234 +- .../rust/elements/internal/generated/Raw.qll | 3390 +++++++++++++++++ .../elements/internal/generated/Synth.qll | 180 + 4 files changed, 3687 insertions(+), 123 deletions(-) diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 1f580178999..13b8156aaa9 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -568,7 +568,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll 6e86fd9b6d5ec1b4aeeb5472cc6d2ebf3328bbaa8605cf52c9add56652cc47dc 3cf2a8e12ffb6631221c7b94fa112e8e3be96efba697996862685a87b2c9aff7 +lib/codeql/rust/elements/internal/generated/ParentChild.qll f04ca3d02170f7e532a480cc81748cf04f1b022d5e0e32ffcdf0f15c8f1961aa 999104d69a5435c9cab594e04b82ed26ae38b1b1d2ac1dbbb315a433c586f941 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -583,7 +583,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll f50925f4925848cef73003adf01420566ca3efa16f491eadac62a30972ee9204 17d62252413618e1fa162c6c0b303ccfcac5f7f70cc170d739b20cc95f57035b +lib/codeql/rust/elements/internal/generated/Raw.qll 14758dc2e2a9af251f24e24516eab0fc95d334c1da06f418ea5da3c5521642c9 a8b6637f57293a85714cc8761f8fd1e23780d58f3873acaa3c77acd9cbfcf19f lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b @@ -608,7 +608,7 @@ lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9 lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37 -lib/codeql/rust/elements/internal/generated/Synth.qll 4c741d502d21d449c4e01010776f767c69b408c80ce7d10784b599463bcfd0e3 c76b8628663c126914ead897c779ce782294e9109125d61de958e0eee543abce +lib/codeql/rust/elements/internal/generated/Synth.qll a8ea364358a2bc3a9226d451c0867e89c29509a0f54dd88ed23c77045db2c85a a44de5e84a63cb5a1bfa66b0df33bf28c9f8b6628393d0f3b2f6215dabee47bd lib/codeql/rust/elements/internal/generated/SynthConstructors.qll f41abfc73415b7accb38da7c107faebfe6843c270ad54e0e54a96e930dfe479a f41abfc73415b7accb38da7c107faebfe6843c270ad54e0e54a96e930dfe479a lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index 7b8d4d4e462..233c29e0173 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -74,7 +74,7 @@ private module Impl { private Element getImmediateChildOfArgList(ArgList e, int index, string partialPredicateCall) { exists(int n, int nArg | n = 0 and - nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and + nArg = n + e.getNumberOfArgs() and ( none() or @@ -126,8 +126,8 @@ private module Impl { ) { exists(int n, int nAssocItem, int nAttr | n = 0 and - nAssocItem = n + 1 + max(int i | i = -1 or exists(e.getAssocItem(i)) | i) and - nAttr = nAssocItem + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAssocItem = n + e.getNumberOfAssocItems() and + nAttr = nAssocItem + e.getNumberOfAttrs() and ( none() or @@ -157,8 +157,8 @@ private module Impl { ) { exists(int n, int nAttr, int nExternItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nExternItem = nAttr + 1 + max(int i | i = -1 or exists(e.getExternItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nExternItem = nAttr + e.getNumberOfExternItems() and ( none() or @@ -207,7 +207,7 @@ private module Impl { ) { exists(int n, int nGenericArg | n = 0 and - nGenericArg = n + 1 + max(int i | i = -1 or exists(e.getGenericArg(i)) | i) and + nGenericArg = n + e.getNumberOfGenericArgs() and ( none() or @@ -222,7 +222,7 @@ private module Impl { ) { exists(int n, int nGenericParam | n = 0 and - nGenericParam = n + 1 + max(int i | i = -1 or exists(e.getGenericParam(i)) | i) and + nGenericParam = n + e.getNumberOfGenericParams() and ( none() or @@ -235,8 +235,8 @@ private module Impl { private Element getImmediateChildOfItemList(ItemList e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and ( none() or @@ -276,7 +276,7 @@ private module Impl { private Element getImmediateChildOfMacroItems(MacroItems e, int index, string partialPredicateCall) { exists(int n, int nItem | n = 0 and - nItem = n + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nItem = n + e.getNumberOfItems() and ( none() or @@ -289,7 +289,7 @@ private module Impl { private Element getImmediateChildOfMatchArm(MatchArm e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nGuard, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nGuard = nExpr + 1 and nPat = nGuard + 1 and @@ -313,8 +313,8 @@ private module Impl { ) { exists(int n, int nArm, int nAttr | n = 0 and - nArm = n + 1 + max(int i | i = -1 or exists(e.getArm(i)) | i) and - nAttr = nArm + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nArm = n + e.getNumberOfArms() and + nAttr = nArm + e.getNumberOfAttrs() and ( none() or @@ -362,7 +362,7 @@ private module Impl { private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { exists(int n, int nParam, int nSelfParam | n = 0 and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = n + e.getNumberOfParams() and nSelfParam = nParam + 1 and ( none() @@ -380,7 +380,7 @@ private module Impl { ) { exists(int n, int nTypeArg | n = 0 and - nTypeArg = n + 1 + max(int i | i = -1 or exists(e.getTypeArg(i)) | i) and + nTypeArg = n + e.getNumberOfTypeArgs() and ( none() or @@ -487,8 +487,8 @@ private module Impl { private Element getImmediateChildOfSourceFile(SourceFile e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nItem | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and ( none() or @@ -504,8 +504,8 @@ private module Impl { private Element getImmediateChildOfStmtList(StmtList e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nStatement, int nTailExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nStatement = nAttr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nStatement = nAttr + e.getNumberOfStatements() and nTailExpr = nStatement + 1 and ( none() @@ -526,7 +526,7 @@ private module Impl { ) { exists(int n, int nAttr, int nExpr, int nIdentifier | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nIdentifier = nExpr + 1 and ( @@ -547,8 +547,8 @@ private module Impl { ) { exists(int n, int nAttr, int nField, int nSpread | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and nSpread = nField + 1 and ( none() @@ -569,7 +569,7 @@ private module Impl { ) { exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefault = nAttr + 1 and nName = nDefault + 1 and nTypeRepr = nName + 1 and @@ -596,7 +596,7 @@ private module Impl { ) { exists(int n, int nAttr, int nIdentifier, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nIdentifier = nAttr + 1 and nPat = nIdentifier + 1 and ( @@ -617,7 +617,7 @@ private module Impl { ) { exists(int n, int nField, int nRestPat | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and nRestPat = nField + 1 and ( none() @@ -637,7 +637,7 @@ private module Impl { private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nVisibility = nTypeRepr + 1 and ( @@ -681,7 +681,7 @@ private module Impl { ) { exists(int n, int nBound | n = 0 and - nBound = n + 1 + max(int i | i = -1 or exists(e.getBound(i)) | i) and + nBound = n + e.getNumberOfBounds() and ( none() or @@ -696,7 +696,7 @@ private module Impl { ) { exists(int n, int nUseBoundGenericArg | n = 0 and - nUseBoundGenericArg = n + 1 + max(int i | i = -1 or exists(e.getUseBoundGenericArg(i)) | i) and + nUseBoundGenericArg = n + e.getNumberOfUseBoundGenericArgs() and ( none() or @@ -729,7 +729,7 @@ private module Impl { ) { exists(int n, int nUseTree | n = 0 and - nUseTree = n + 1 + max(int i | i = -1 or exists(e.getUseTree(i)) | i) and + nUseTree = n + e.getNumberOfUseTrees() and ( none() or @@ -744,7 +744,7 @@ private module Impl { ) { exists(int n, int nVariant | n = 0 and - nVariant = n + 1 + max(int i | i = -1 or exists(e.getVariant(i)) | i) and + nVariant = n + e.getNumberOfVariants() and ( none() or @@ -771,7 +771,7 @@ private module Impl { ) { exists(int n, int nPredicate | n = 0 and - nPredicate = n + 1 + max(int i | i = -1 or exists(e.getPredicate(i)) | i) and + nPredicate = n + e.getNumberOfPredicates() and ( none() or @@ -809,8 +809,8 @@ private module Impl { ) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nExpr = nAttr + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + e.getNumberOfExprs() and ( none() or @@ -894,7 +894,7 @@ private module Impl { ) { exists(int n, int nAsmOption | n = 0 and - nAsmOption = n + 1 + max(int i | i = -1 or exists(e.getAsmOption(i)) | i) and + nAsmOption = n + e.getNumberOfAsmOptions() and ( none() or @@ -991,7 +991,7 @@ private module Impl { private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1007,7 +1007,7 @@ private module Impl { private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1023,7 +1023,7 @@ private module Impl { private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nLhs, int nRhs | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLhs = nAttr + 1 and nRhs = nLhs + 1 and ( @@ -1054,7 +1054,7 @@ private module Impl { private Element getImmediateChildOfBreakExpr(BreakExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nLifetime | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nLifetime = nExpr + 1 and ( @@ -1073,7 +1073,7 @@ private module Impl { private Element getImmediateChildOfCastExpr(CastExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and nTypeRepr = nExpr + 1 and ( @@ -1095,7 +1095,7 @@ private module Impl { exists(int n, int nParamList, int nAttr, int nClosureBody, int nForBinder, int nRetType | n = 0 and nParamList = n + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nParamList + e.getNumberOfAttrs() and nClosureBody = nAttr + 1 and nForBinder = nClosureBody + 1 and nRetType = nForBinder + 1 and @@ -1149,7 +1149,7 @@ private module Impl { private Element getImmediateChildOfConstParam(ConstParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefaultVal = nAttr + 1 and nName = nDefaultVal + 1 and nTypeRepr = nName + 1 and @@ -1173,7 +1173,7 @@ private module Impl { ) { exists(int n, int nAttr, int nLifetime | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLifetime = nAttr + 1 and ( none() @@ -1215,7 +1215,7 @@ private module Impl { private Element getImmediateChildOfFieldExpr(FieldExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nContainer, int nIdentifier | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nContainer = nAttr + 1 and nIdentifier = nContainer + 1 and ( @@ -1273,10 +1273,10 @@ private module Impl { ) { exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | n = 0 and - nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and - nAttr = nArg + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nArg = n + e.getNumberOfArgs() and + nAttr = nArg + e.getNumberOfAttrs() and nTemplate = nAttr + 1 and - nFormat = nTemplate + 1 + max(int i | i = -1 or exists(e.getFormat(i)) | i) and + nFormat = nTemplate + e.getNumberOfFormats() and ( none() or @@ -1297,7 +1297,7 @@ private module Impl { private Element getImmediateChildOfIdentPat(IdentPat e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nName, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nName = nAttr + 1 and nPat = nName + 1 and ( @@ -1316,7 +1316,7 @@ private module Impl { private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nCondition, int nElse, int nThen | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nCondition = nAttr + 1 and nElse = nCondition + 1 and nThen = nElse + 1 and @@ -1352,7 +1352,7 @@ private module Impl { private Element getImmediateChildOfIndexExpr(IndexExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nBase, int nIndex | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nBase = nAttr + 1 and nIndex = nBase + 1 and ( @@ -1377,7 +1377,7 @@ private module Impl { private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nScrutinee, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nScrutinee = nAttr + 1 and nPat = nScrutinee + 1 and ( @@ -1396,7 +1396,7 @@ private module Impl { private Element getImmediateChildOfLetStmt(LetStmt e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nInitializer = nAttr + 1 and nLetElse = nInitializer + 1 and nPat = nLetElse + 1 and @@ -1441,7 +1441,7 @@ private module Impl { ) { exists(int n, int nAttr, int nLifetime, int nTypeBoundList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nLifetime = nAttr + 1 and nTypeBoundList = nLifetime + 1 and ( @@ -1464,7 +1464,7 @@ private module Impl { ) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -1491,7 +1491,7 @@ private module Impl { ) { exists(int n, int nStatement, int nTailExpr | n = 0 and - nStatement = n + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and + nStatement = n + e.getNumberOfStatements() and nTailExpr = nStatement + 1 and ( none() @@ -1545,7 +1545,7 @@ private module Impl { private Element getImmediateChildOfMatchExpr(MatchExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nScrutinee, int nMatchArmList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nScrutinee = nAttr + 1 and nMatchArmList = nScrutinee + 1 and ( @@ -1578,8 +1578,8 @@ private module Impl { ) { exists(int n, int nAttr, int nField, int nTypeRepr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and nTypeRepr = nField + 1 and ( none() @@ -1598,7 +1598,7 @@ private module Impl { private Element getImmediateChildOfOrPat(OrPat e, int index, string partialPredicateCall) { exists(int n, int nPat | n = 0 and - nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and + nPat = n + e.getNumberOfPats() and ( none() or @@ -1611,7 +1611,7 @@ private module Impl { private Element getImmediateChildOfParam(Param e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nPat | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nPat = nTypeRepr + 1 and ( @@ -1630,7 +1630,7 @@ private module Impl { private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1698,7 +1698,7 @@ private module Impl { private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1728,7 +1728,7 @@ private module Impl { private Element getImmediateChildOfRangeExpr(RangeExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nEnd, int nStart | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nEnd = nAttr + 1 and nStart = nEnd + 1 and ( @@ -1762,7 +1762,7 @@ private module Impl { private Element getImmediateChildOfRefExpr(RefExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1807,7 +1807,7 @@ private module Impl { private Element getImmediateChildOfRestPat(RestPat e, int index, string partialPredicateCall) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -1820,7 +1820,7 @@ private module Impl { private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1836,7 +1836,7 @@ private module Impl { private Element getImmediateChildOfSelfParam(SelfParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nTypeRepr = nAttr + 1 and nLifetime = nTypeRepr + 1 and nName = nLifetime + 1 and @@ -1858,7 +1858,7 @@ private module Impl { private Element getImmediateChildOfSlicePat(SlicePat e, int index, string partialPredicateCall) { exists(int n, int nPat | n = 0 and - nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and + nPat = n + e.getNumberOfPats() and ( none() or @@ -1904,7 +1904,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1934,7 +1934,7 @@ private module Impl { private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -1950,8 +1950,8 @@ private module Impl { private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nField | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and ( none() or @@ -1969,7 +1969,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1982,7 +1982,7 @@ private module Impl { private Element getImmediateChildOfTuplePat(TuplePat e, int index, string partialPredicateCall) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -1998,7 +1998,7 @@ private module Impl { exists(int n, int nPath, int nField | n = 0 and nPath = n + 1 and - nField = nPath + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = nPath + e.getNumberOfFields() and ( none() or @@ -2015,7 +2015,7 @@ private module Impl { ) { exists(int n, int nField | n = 0 and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + nField = n + e.getNumberOfFields() and ( none() or @@ -2040,7 +2040,7 @@ private module Impl { private Element getImmediateChildOfTypeParam(TypeParam e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDefaultType = nAttr + 1 and nName = nDefaultType + 1 and nTypeBoundList = nName + 1 and @@ -2064,7 +2064,7 @@ private module Impl { ) { exists(int n, int nAttr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and ( none() or @@ -2077,7 +2077,7 @@ private module Impl { private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nDiscriminant = nAttr + 1 and nFieldList = nDiscriminant + 1 and nName = nFieldList + 1 and @@ -2108,7 +2108,7 @@ private module Impl { private Element getImmediateChildOfYeetExpr(YeetExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -2124,7 +2124,7 @@ private module Impl { private Element getImmediateChildOfYieldExpr(YieldExpr e, int index, string partialPredicateCall) { exists(int n, int nAttr, int nExpr | n = 0 and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = n + e.getNumberOfAttrs() and nExpr = nAttr + 1 and ( none() @@ -2142,8 +2142,8 @@ private module Impl { ) { exists(int n, int nExpr, int nAttr | n = 0 and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nExpr = n + e.getNumberOfExprs() and + nAttr = nExpr + e.getNumberOfAttrs() and ( none() or @@ -2161,8 +2161,8 @@ private module Impl { ) { exists(int n, int nExpr, int nAttr, int nRepeatOperand, int nRepeatLength | n = 0 and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nExpr = n + e.getNumberOfExprs() and + nAttr = nExpr + e.getNumberOfAttrs() and nRepeatOperand = nAttr + 1 and nRepeatLength = nRepeatOperand + 1 and ( @@ -2187,9 +2187,9 @@ private module Impl { exists(int n, int nAttributeMacroExpansion, int nAsmPiece, int nAttr, int nTemplate | n = 0 and nAttributeMacroExpansion = n + 1 and - nAsmPiece = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and - nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and + nAsmPiece = nAttributeMacroExpansion + e.getNumberOfAsmPieces() and + nAttr = nAsmPiece + e.getNumberOfAttrs() and + nTemplate = nAttr + e.getNumberOfTemplates() and ( none() or @@ -2213,7 +2213,7 @@ private module Impl { exists(int n, int nLabel, int nAttr, int nStmtList | n = 0 and nLabel = n + 1 and - nAttr = nLabel + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLabel + e.getNumberOfAttrs() and nStmtList = nAttr + 1 and ( none() @@ -2232,7 +2232,7 @@ private module Impl { exists(int n, int nArgList, int nAttr, int nFunction | n = 0 and nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgList + e.getNumberOfAttrs() and nFunction = nAttr + 1 and ( none() @@ -2254,7 +2254,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAbi = nAttributeMacroExpansion + 1 and - nAttr = nAbi + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAbi + e.getNumberOfAttrs() and nExternItemList = nAttr + 1 and ( none() @@ -2283,7 +2283,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nIdentifier = nAttr + 1 and nRename = nIdentifier + 1 and nVisibility = nRename + 1 and @@ -2320,7 +2320,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and - nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nSelfTy = nGenericParamList + 1 and nTrait = nSelfTy + 1 and @@ -2365,7 +2365,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nArgs = nAttributeMacroExpansion + 1 and - nAttr = nArgs + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgs + e.getNumberOfAttrs() and nBody = nAttr + 1 and nName = nBody + 1 and nVisibility = nName + 1 and @@ -2398,7 +2398,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nName = nAttr + 1 and nTokenTree = nName + 1 and nVisibility = nTokenTree + 1 and @@ -2427,7 +2427,7 @@ private module Impl { exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | n = 0 and nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nArgList + e.getNumberOfAttrs() and nGenericArgList = nAttr + 1 and nIdentifier = nGenericArgList + 1 and nReceiver = nIdentifier + 1 and @@ -2458,7 +2458,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nItemList = nAttr + 1 and nName = nItemList + 1 and nVisibility = nName + 1 and @@ -2485,7 +2485,7 @@ private module Impl { exists(int n, int nPath, int nAttr | n = 0 and nPath = n + 1 and - nAttr = nPath + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nPath + e.getNumberOfAttrs() and ( none() or @@ -2505,7 +2505,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nAssocItemList = nAttributeMacroExpansion + 1 and - nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAssocItemList + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeBoundList = nName + 1 and @@ -2551,7 +2551,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeBoundList = nName + 1 and @@ -2590,7 +2590,7 @@ private module Impl { exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nUseTree = nAttr + 1 and nVisibility = nUseTree + 1 and ( @@ -2617,7 +2617,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nBody = nAttr + 1 and nGenericParamList = nBody + 1 and nName = nGenericParamList + 1 and @@ -2660,10 +2660,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nVariantList = nName + 1 and @@ -2707,7 +2705,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and nIterable = nAttr + 1 and nPat = nIterable + 1 and ( @@ -2735,7 +2733,7 @@ private module Impl { n = 0 and nAttributeMacroExpansion = n + 1 and nParamList = nAttributeMacroExpansion + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nParamList + e.getNumberOfAttrs() and nAbi = nAttr + 1 and nFunctionBody = nAbi + 1 and nGenericParamList = nFunctionBody + 1 and @@ -2783,7 +2781,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and ( none() or @@ -2804,7 +2802,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nPath = nAttr + 1 and nTokenTree = nPath + 1 and nMacroCallExpansion = nTokenTree + 1 and @@ -2836,7 +2834,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nBody = nAttr + 1 and nName = nBody + 1 and nTypeRepr = nName + 1 and @@ -2869,10 +2867,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nFieldList = nAttr + 1 and nGenericParamList = nFieldList + 1 and nName = nGenericParamList + 1 and @@ -2916,7 +2912,7 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeRepr = nName + 1 and @@ -2963,10 +2959,8 @@ private module Impl { | n = 0 and nAttributeMacroExpansion = n + 1 and - nDeriveMacroExpansion = - nAttributeMacroExpansion + 1 + - max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nStructFieldList = nName + 1 and @@ -3012,7 +3006,7 @@ private module Impl { n = 0 and nLabel = n + 1 and nLoopBody = nLabel + 1 and - nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAttr = nLoopBody + e.getNumberOfAttrs() and nCondition = nAttr + 1 and ( none() diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index 21782ed7db4..aff81e9b9ab 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -34,6 +34,8 @@ module Raw { int getDurationMs() { extractor_steps(this, _, result) } } + private Element getImmediateChildOfExtractorStep(ExtractorStep e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -56,6 +58,8 @@ module Raw { Crate getCrate() { named_crates(this, _, result) } } + private Element getImmediateChildOfNamedCrate(NamedCrate e, int index) { none() } + /** * INTERNAL: Do not use. * The base class marking everything that was not properly extracted for some reason, such as: @@ -91,12 +95,27 @@ module Raw { */ string getCfgOption(int index) { crate_cfg_options(this, index, result) } + /** + * Gets the number of cfg options of this crate. + */ + int getNumberOfCfgOptions() { result = count(int i | crate_cfg_options(this, i, _)) } + /** * Gets the `index`th named dependency of this crate (0-based). */ NamedCrate getNamedDependency(int index) { crate_named_dependencies(this, index, result) } + + /** + * Gets the number of named dependencies of this crate. + * INTERNAL: Do not use. + */ + int getNumberOfNamedDependencies() { + result = count(int i | crate_named_dependencies(this, i, _)) + } } + private Element getImmediateChildOfCrate(Crate e, int index) { none() } + /** * INTERNAL: Do not use. * The base class marking errors during parsing or resolution. @@ -105,6 +124,8 @@ module Raw { override string toString() { result = "Missing" } } + private Element getImmediateChildOfMissing(Missing e, int index) { none() } + /** * INTERNAL: Do not use. * The base class for unimplemented nodes. This is used to mark nodes that are not yet extracted. @@ -113,6 +134,8 @@ module Raw { override string toString() { result = "Unimplemented" } } + private Element getImmediateChildOfUnimplemented(Unimplemented e, int index) { none() } + /** * INTERNAL: Do not use. * An ABI specification for an extern function or block. @@ -132,6 +155,8 @@ module Raw { string getAbiString() { abi_abi_strings(this, result) } } + private Element getImmediateChildOfAbi(Abi e, int index) { none() } + /** * INTERNAL: Do not use. * Something that can be addressed by a path. @@ -157,6 +182,23 @@ module Raw { * Gets the `index`th argument of this argument list (0-based). */ Expr getArg(int index) { arg_list_args(this, index, result) } + + /** + * Gets the number of arguments of this argument list. + */ + int getNumberOfArgs() { result = count(int i | arg_list_args(this, i, _)) } + } + + private Element getImmediateChildOfArgList(ArgList e, int index) { + exists(int n, int nArg | + n = 0 and + nArg = n + e.getNumberOfArgs() and + ( + none() + or + result = e.getArg(index - n) + ) + ) } /** @@ -174,6 +216,8 @@ module Raw { override string toString() { result = "AsmDirSpec" } } + private Element getImmediateChildOfAsmDirSpec(AsmDirSpec e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -204,6 +248,21 @@ module Raw { Expr getOutExpr() { asm_operand_expr_out_exprs(this, result) } } + private Element getImmediateChildOfAsmOperandExpr(AsmOperandExpr e, int index) { + exists(int n, int nInExpr, int nOutExpr | + n = 0 and + nInExpr = n + 1 and + nOutExpr = nInExpr + 1 and + ( + none() + or + index = n and result = e.getInExpr() + or + index = nInExpr and result = e.getOutExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An option in an inline assembly block. @@ -224,6 +283,8 @@ module Raw { predicate isRaw() { asm_option_is_raw(this) } } + private Element getImmediateChildOfAsmOption(AsmOption e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -249,6 +310,18 @@ module Raw { NameRef getIdentifier() { asm_reg_spec_identifiers(this, result) } } + private Element getImmediateChildOfAsmRegSpec(AsmRegSpec e, int index) { + exists(int n, int nIdentifier | + n = 0 and + nIdentifier = n + 1 and + ( + none() + or + index = n and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. @@ -261,10 +334,35 @@ module Raw { */ AssocItem getAssocItem(int index) { assoc_item_list_assoc_items(this, index, result) } + /** + * Gets the number of assoc items of this assoc item list. + */ + int getNumberOfAssocItems() { result = count(int i | assoc_item_list_assoc_items(this, i, _)) } + /** * Gets the `index`th attr of this assoc item list (0-based). */ Attr getAttr(int index) { assoc_item_list_attrs(this, index, result) } + + /** + * Gets the number of attrs of this assoc item list. + */ + int getNumberOfAttrs() { result = count(int i | assoc_item_list_attrs(this, i, _)) } + } + + private Element getImmediateChildOfAssocItemList(AssocItemList e, int index) { + exists(int n, int nAssocItem, int nAttr | + n = 0 and + nAssocItem = n + e.getNumberOfAssocItems() and + nAttr = nAssocItem + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAssocItem(index - n) + or + result = e.getAttr(index - nAssocItem) + ) + ) } /** @@ -287,6 +385,18 @@ module Raw { Meta getMeta() { attr_meta(this, result) } } + private Element getImmediateChildOfAttr(Attr e, int index) { + exists(int n, int nMeta | + n = 0 and + nMeta = n + 1 and + ( + none() + or + index = n and result = e.getMeta() + ) + ) + } + /** * INTERNAL: Do not use. * A callable. Either a `Function` or a `ClosureExpr`. @@ -301,6 +411,11 @@ module Raw { * Gets the `index`th attr of this callable (0-based). */ Attr getAttr(int index) { callable_attrs(this, index, result) } + + /** + * Gets the number of attrs of this callable. + */ + int getNumberOfAttrs() { result = count(int i | callable_attrs(this, i, _)) } } /** @@ -329,10 +444,37 @@ module Raw { */ Attr getAttr(int index) { extern_item_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern item list. + */ + int getNumberOfAttrs() { result = count(int i | extern_item_list_attrs(this, i, _)) } + /** * Gets the `index`th extern item of this extern item list (0-based). */ ExternItem getExternItem(int index) { extern_item_list_extern_items(this, index, result) } + + /** + * Gets the number of extern items of this extern item list. + */ + int getNumberOfExternItems() { + result = count(int i | extern_item_list_extern_items(this, i, _)) + } + } + + private Element getImmediateChildOfExternItemList(ExternItemList e, int index) { + exists(int n, int nAttr, int nExternItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExternItem = nAttr + e.getNumberOfExternItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getExternItem(index - nAttr) + ) + ) } /** @@ -373,6 +515,18 @@ module Raw { GenericParamList getGenericParamList() { for_binder_generic_param_lists(this, result) } } + private Element getImmediateChildOfForBinder(ForBinder e, int index) { + exists(int n, int nGenericParamList | + n = 0 and + nGenericParamList = n + 1 and + ( + none() + or + index = n and result = e.getGenericParamList() + ) + ) + } + /** * INTERNAL: Do not use. * A FormatArgsArg. For example the `"world"` in: @@ -394,6 +548,21 @@ module Raw { Name getName() { format_args_arg_names(this, result) } } + private Element getImmediateChildOfFormatArgsArg(FormatArgsArg e, int index) { + exists(int n, int nExpr, int nName | + n = 0 and + nExpr = n + 1 and + nName = nExpr + 1 and + ( + none() + or + index = n and result = e.getExpr() + or + index = nExpr and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A generic argument in a generic argument list. @@ -420,6 +589,25 @@ module Raw { * Gets the `index`th generic argument of this generic argument list (0-based). */ GenericArg getGenericArg(int index) { generic_arg_list_generic_args(this, index, result) } + + /** + * Gets the number of generic arguments of this generic argument list. + */ + int getNumberOfGenericArgs() { + result = count(int i | generic_arg_list_generic_args(this, i, _)) + } + } + + private Element getImmediateChildOfGenericArgList(GenericArgList e, int index) { + exists(int n, int nGenericArg | + n = 0 and + nGenericArg = n + e.getNumberOfGenericArgs() and + ( + none() + or + result = e.getGenericArg(index - n) + ) + ) } /** @@ -453,6 +641,25 @@ module Raw { GenericParam getGenericParam(int index) { generic_param_list_generic_params(this, index, result) } + + /** + * Gets the number of generic parameters of this generic parameter list. + */ + int getNumberOfGenericParams() { + result = count(int i | generic_param_list_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfGenericParamList(GenericParamList e, int index) { + exists(int n, int nGenericParam | + n = 0 and + nGenericParam = n + e.getNumberOfGenericParams() and + ( + none() + or + result = e.getGenericParam(index - n) + ) + ) } /** @@ -475,10 +682,35 @@ module Raw { */ Attr getAttr(int index) { item_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this item list. + */ + int getNumberOfAttrs() { result = count(int i | item_list_attrs(this, i, _)) } + /** * Gets the `index`th item of this item list (0-based). */ Item getItem(int index) { item_list_items(this, index, result) } + + /** + * Gets the number of items of this item list. + */ + int getNumberOfItems() { result = count(int i | item_list_items(this, i, _)) } + } + + private Element getImmediateChildOfItemList(ItemList e, int index) { + exists(int n, int nAttr, int nItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getItem(index - nAttr) + ) + ) } /** @@ -500,6 +732,18 @@ module Raw { Lifetime getLifetime() { label_lifetimes(this, result) } } + private Element getImmediateChildOfLabel(Label e, int index) { + exists(int n, int nLifetime | + n = 0 and + nLifetime = n + 1 and + ( + none() + or + index = n and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * An else block in a let-else statement. @@ -521,6 +765,18 @@ module Raw { BlockExpr getBlockExpr() { let_else_block_exprs(this, result) } } + private Element getImmediateChildOfLetElse(LetElse e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A sequence of items generated by a macro. For example: @@ -545,6 +801,23 @@ module Raw { * Gets the `index`th item of this macro items (0-based). */ Item getItem(int index) { macro_items_items(this, index, result) } + + /** + * Gets the number of items of this macro items. + */ + int getNumberOfItems() { result = count(int i | macro_items_items(this, i, _)) } + } + + private Element getImmediateChildOfMacroItems(MacroItems e, int index) { + exists(int n, int nItem | + n = 0 and + nItem = n + e.getNumberOfItems() and + ( + none() + or + result = e.getItem(index - n) + ) + ) } /** @@ -571,6 +844,11 @@ module Raw { */ Attr getAttr(int index) { match_arm_attrs(this, index, result) } + /** + * Gets the number of attrs of this match arm. + */ + int getNumberOfAttrs() { result = count(int i | match_arm_attrs(this, i, _)) } + /** * Gets the expression of this match arm, if it exists. */ @@ -587,6 +865,27 @@ module Raw { Pat getPat() { match_arm_pats(this, result) } } + private Element getImmediateChildOfMatchArm(MatchArm e, int index) { + exists(int n, int nAttr, int nExpr, int nGuard, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nGuard = nExpr + 1 and + nPat = nGuard + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getGuard() + or + index = nGuard and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A list of arms in a match expression. @@ -609,10 +908,35 @@ module Raw { */ MatchArm getArm(int index) { match_arm_list_arms(this, index, result) } + /** + * Gets the number of arms of this match arm list. + */ + int getNumberOfArms() { result = count(int i | match_arm_list_arms(this, i, _)) } + /** * Gets the `index`th attr of this match arm list (0-based). */ Attr getAttr(int index) { match_arm_list_attrs(this, index, result) } + + /** + * Gets the number of attrs of this match arm list. + */ + int getNumberOfAttrs() { result = count(int i | match_arm_list_attrs(this, i, _)) } + } + + private Element getImmediateChildOfMatchArmList(MatchArmList e, int index) { + exists(int n, int nArm, int nAttr | + n = 0 and + nArm = n + e.getNumberOfArms() and + nAttr = nArm + e.getNumberOfAttrs() and + ( + none() + or + result = e.getArm(index - n) + or + result = e.getAttr(index - nArm) + ) + ) } /** @@ -637,6 +961,18 @@ module Raw { Expr getCondition() { match_guard_conditions(this, result) } } + private Element getImmediateChildOfMatchGuard(MatchGuard e, int index) { + exists(int n, int nCondition | + n = 0 and + nCondition = n + 1 and + ( + none() + or + index = n and result = e.getCondition() + ) + ) + } + /** * INTERNAL: Do not use. * A meta item in an attribute. @@ -676,6 +1012,24 @@ module Raw { TokenTree getTokenTree() { meta_token_trees(this, result) } } + private Element getImmediateChildOfMeta(Meta e, int index) { + exists(int n, int nExpr, int nPath, int nTokenTree | + n = 0 and + nExpr = n + 1 and + nPath = nExpr + 1 and + nTokenTree = nPath + 1 and + ( + none() + or + index = n and result = e.getExpr() + or + index = nExpr and result = e.getPath() + or + index = nPath and result = e.getTokenTree() + ) + ) + } + /** * INTERNAL: Do not use. * An identifier name. @@ -695,6 +1049,8 @@ module Raw { string getText() { name_texts(this, result) } } + private Element getImmediateChildOfName(Name e, int index) { none() } + /** * INTERNAL: Do not use. * A normal parameter, `Param`, or a self parameter `SelfParam`. @@ -705,6 +1061,11 @@ module Raw { */ Attr getAttr(int index) { param_base_attrs(this, index, result) } + /** + * Gets the number of attrs of this parameter base. + */ + int getNumberOfAttrs() { result = count(int i | param_base_attrs(this, i, _)) } + /** * Gets the type representation of this parameter base, if it exists. */ @@ -729,12 +1090,32 @@ module Raw { */ Param getParam(int index) { param_list_params(this, index, result) } + /** + * Gets the number of parameters of this parameter list. + */ + int getNumberOfParams() { result = count(int i | param_list_params(this, i, _)) } + /** * Gets the self parameter of this parameter list, if it exists. */ SelfParam getSelfParam() { param_list_self_params(this, result) } } + private Element getImmediateChildOfParamList(ParamList e, int index) { + exists(int n, int nParam, int nSelfParam | + n = 0 and + nParam = n + e.getNumberOfParams() and + nSelfParam = nParam + 1 and + ( + none() + or + result = e.getParam(index - n) + or + index = nParam and result = e.getSelfParam() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized argument list as used in function traits. @@ -757,6 +1138,25 @@ module Raw { * Gets the `index`th type argument of this parenthesized argument list (0-based). */ TypeArg getTypeArg(int index) { parenthesized_arg_list_type_args(this, index, result) } + + /** + * Gets the number of type arguments of this parenthesized argument list. + */ + int getNumberOfTypeArgs() { + result = count(int i | parenthesized_arg_list_type_args(this, i, _)) + } + } + + private Element getImmediateChildOfParenthesizedArgList(ParenthesizedArgList e, int index) { + exists(int n, int nTypeArg | + n = 0 and + nTypeArg = n + e.getNumberOfTypeArgs() and + ( + none() + or + result = e.getTypeArg(index - n) + ) + ) } /** @@ -787,6 +1187,21 @@ module Raw { PathSegment getSegment() { path_segments_(this, result) } } + private Element getImmediateChildOfPath(Path e, int index) { + exists(int n, int nQualifier, int nSegment | + n = 0 and + nQualifier = n + 1 and + nSegment = nQualifier + 1 and + ( + none() + or + index = n and result = e.getQualifier() + or + index = nQualifier and result = e.getSegment() + ) + ) + } + /** * INTERNAL: Do not use. * An AST element wrapping a path (`PathExpr`, `RecordExpr`, `PathPat`, `RecordPat`, `TupleStructPat`). @@ -849,6 +1264,39 @@ module Raw { PathTypeRepr getTraitTypeRepr() { path_segment_trait_type_reprs(this, result) } } + private Element getImmediateChildOfPathSegment(PathSegment e, int index) { + exists( + int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr + | + n = 0 and + nGenericArgList = n + 1 and + nIdentifier = nGenericArgList + 1 and + nParenthesizedArgList = nIdentifier + 1 and + nRetType = nParenthesizedArgList + 1 and + nReturnTypeSyntax = nRetType + 1 and + nTypeRepr = nReturnTypeSyntax + 1 and + nTraitTypeRepr = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getParenthesizedArgList() + or + index = nParenthesizedArgList and result = e.getRetType() + or + index = nRetType and result = e.getReturnTypeSyntax() + or + index = nReturnTypeSyntax and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTraitTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A rename in a use declaration. @@ -868,6 +1316,18 @@ module Raw { Name getName() { rename_names(this, result) } } + private Element getImmediateChildOfRename(Rename e, int index) { + exists(int n, int nName | + n = 0 and + nName = n + 1 and + ( + none() + or + index = n and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A return type in a function signature. @@ -887,6 +1347,18 @@ module Raw { TypeRepr getTypeRepr() { ret_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfRetTypeRepr(RetTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A return type notation `(..)` to reference or bound the type returned by a trait method @@ -911,6 +1383,8 @@ module Raw { override string toString() { result = "ReturnTypeSyntax" } } + private Element getImmediateChildOfReturnTypeSyntax(ReturnTypeSyntax e, int index) { none() } + /** * INTERNAL: Do not use. * A source file. @@ -929,10 +1403,35 @@ module Raw { */ Attr getAttr(int index) { source_file_attrs(this, index, result) } + /** + * Gets the number of attrs of this source file. + */ + int getNumberOfAttrs() { result = count(int i | source_file_attrs(this, i, _)) } + /** * Gets the `index`th item of this source file (0-based). */ Item getItem(int index) { source_file_items(this, index, result) } + + /** + * Gets the number of items of this source file. + */ + int getNumberOfItems() { result = count(int i | source_file_items(this, i, _)) } + } + + private Element getImmediateChildOfSourceFile(SourceFile e, int index) { + exists(int n, int nAttr, int nItem | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nItem = nAttr + e.getNumberOfItems() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getItem(index - nAttr) + ) + ) } /** @@ -964,6 +1463,11 @@ module Raw { */ Attr getAttr(int index) { stmt_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this statement list. + */ + int getNumberOfAttrs() { result = count(int i | stmt_list_attrs(this, i, _)) } + /** * Gets the `index`th statement of this statement list (0-based). * @@ -972,6 +1476,11 @@ module Raw { */ Stmt getStatement(int index) { stmt_list_statements(this, index, result) } + /** + * Gets the number of statements of this statement list. + */ + int getNumberOfStatements() { result = count(int i | stmt_list_statements(this, i, _)) } + /** * Gets the tail expression of this statement list, if it exists. * @@ -981,6 +1490,24 @@ module Raw { Expr getTailExpr() { stmt_list_tail_exprs(this, result) } } + private Element getImmediateChildOfStmtList(StmtList e, int index) { + exists(int n, int nAttr, int nStatement, int nTailExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nStatement = nAttr + e.getNumberOfStatements() and + nTailExpr = nStatement + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getStatement(index - nAttr) + or + index = nStatement and result = e.getTailExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct expression. For example `a: 1` in: @@ -996,6 +1523,11 @@ module Raw { */ Attr getAttr(int index) { struct_expr_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct expression field. + */ + int getNumberOfAttrs() { result = count(int i | struct_expr_field_attrs(this, i, _)) } + /** * Gets the expression of this struct expression field, if it exists. */ @@ -1007,6 +1539,24 @@ module Raw { NameRef getIdentifier() { struct_expr_field_identifiers(this, result) } } + private Element getImmediateChildOfStructExprField(StructExprField e, int index) { + exists(int n, int nAttr, int nExpr, int nIdentifier | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nIdentifier = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct expression. @@ -1025,17 +1575,45 @@ module Raw { */ Attr getAttr(int index) { struct_expr_field_list_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct expression field list. + */ + int getNumberOfAttrs() { result = count(int i | struct_expr_field_list_attrs(this, i, _)) } + /** * Gets the `index`th field of this struct expression field list (0-based). */ StructExprField getField(int index) { struct_expr_field_list_fields(this, index, result) } + /** + * Gets the number of fields of this struct expression field list. + */ + int getNumberOfFields() { result = count(int i | struct_expr_field_list_fields(this, i, _)) } + /** * Gets the spread of this struct expression field list, if it exists. */ Expr getSpread() { struct_expr_field_list_spreads(this, result) } } + private Element getImmediateChildOfStructExprFieldList(StructExprFieldList e, int index) { + exists(int n, int nAttr, int nField, int nSpread | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + nSpread = nField + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + or + index = nField and result = e.getSpread() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct declaration. @@ -1054,6 +1632,11 @@ module Raw { */ Attr getAttr(int index) { struct_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct field. + */ + int getNumberOfAttrs() { result = count(int i | struct_field_attrs(this, i, _)) } + /** * Gets the default of this struct field, if it exists. */ @@ -1080,6 +1663,30 @@ module Raw { Visibility getVisibility() { struct_field_visibilities(this, result) } } + private Element getImmediateChildOfStructField(StructField e, int index) { + exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefault = nAttr + 1 and + nName = nDefault + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefault() + or + index = nDefault and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A field in a struct pattern. For example `a: 1` in: @@ -1095,6 +1702,11 @@ module Raw { */ Attr getAttr(int index) { struct_pat_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct pattern field. + */ + int getNumberOfAttrs() { result = count(int i | struct_pat_field_attrs(this, i, _)) } + /** * Gets the identifier of this struct pattern field, if it exists. */ @@ -1106,6 +1718,24 @@ module Raw { Pat getPat() { struct_pat_field_pats(this, result) } } + private Element getImmediateChildOfStructPatField(StructPatField e, int index) { + exists(int n, int nAttr, int nIdentifier, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nIdentifier = nAttr + 1 and + nPat = nIdentifier + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getIdentifier() + or + index = nIdentifier and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct pattern. @@ -1124,12 +1754,32 @@ module Raw { */ StructPatField getField(int index) { struct_pat_field_list_fields(this, index, result) } + /** + * Gets the number of fields of this struct pattern field list. + */ + int getNumberOfFields() { result = count(int i | struct_pat_field_list_fields(this, i, _)) } + /** * Gets the rest pattern of this struct pattern field list, if it exists. */ RestPat getRestPat() { struct_pat_field_list_rest_pats(this, result) } } + private Element getImmediateChildOfStructPatFieldList(StructPatFieldList e, int index) { + exists(int n, int nField, int nRestPat | + n = 0 and + nField = n + e.getNumberOfFields() and + nRestPat = nField + 1 and + ( + none() + or + result = e.getField(index - n) + or + index = nField and result = e.getRestPat() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for all tokens. @@ -1154,6 +1804,8 @@ module Raw { override string toString() { result = "TokenTree" } } + private Element getImmediateChildOfTokenTree(TokenTree e, int index) { none() } + /** * INTERNAL: Do not use. * A field in a tuple struct or tuple enum variant. @@ -1172,6 +1824,11 @@ module Raw { */ Attr getAttr(int index) { tuple_field_attrs(this, index, result) } + /** + * Gets the number of attrs of this tuple field. + */ + int getNumberOfAttrs() { result = count(int i | tuple_field_attrs(this, i, _)) } + /** * Gets the type representation of this tuple field, if it exists. */ @@ -1183,6 +1840,24 @@ module Raw { Visibility getVisibility() { tuple_field_visibilities(this, result) } } + private Element getImmediateChildOfTupleField(TupleField e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A type bound in a trait or generic parameter. @@ -1229,6 +1904,27 @@ module Raw { UseBoundGenericArgs getUseBoundGenericArgs() { type_bound_use_bound_generic_args(this, result) } } + private Element getImmediateChildOfTypeBound(TypeBound e, int index) { + exists(int n, int nForBinder, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | + n = 0 and + nForBinder = n + 1 and + nLifetime = nForBinder + 1 and + nTypeRepr = nLifetime + 1 and + nUseBoundGenericArgs = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getUseBoundGenericArgs() + ) + ) + } + /** * INTERNAL: Do not use. * A list of type bounds. @@ -1246,6 +1942,23 @@ module Raw { * Gets the `index`th bound of this type bound list (0-based). */ TypeBound getBound(int index) { type_bound_list_bounds(this, index, result) } + + /** + * Gets the number of bounds of this type bound list. + */ + int getNumberOfBounds() { result = count(int i | type_bound_list_bounds(this, i, _)) } + } + + private Element getImmediateChildOfTypeBoundList(TypeBoundList e, int index) { + exists(int n, int nBound | + n = 0 and + nBound = n + e.getNumberOfBounds() and + ( + none() + or + result = e.getBound(index - n) + ) + ) } /** @@ -1283,6 +1996,25 @@ module Raw { UseBoundGenericArg getUseBoundGenericArg(int index) { use_bound_generic_args_use_bound_generic_args(this, index, result) } + + /** + * Gets the number of use bound generic arguments of this use bound generic arguments. + */ + int getNumberOfUseBoundGenericArgs() { + result = count(int i | use_bound_generic_args_use_bound_generic_args(this, i, _)) + } + } + + private Element getImmediateChildOfUseBoundGenericArgs(UseBoundGenericArgs e, int index) { + exists(int n, int nUseBoundGenericArg | + n = 0 and + nUseBoundGenericArg = n + e.getNumberOfUseBoundGenericArgs() and + ( + none() + or + result = e.getUseBoundGenericArg(index - n) + ) + ) } /** @@ -1319,6 +2051,24 @@ module Raw { UseTreeList getUseTreeList() { use_tree_use_tree_lists(this, result) } } + private Element getImmediateChildOfUseTree(UseTree e, int index) { + exists(int n, int nPath, int nRename, int nUseTreeList | + n = 0 and + nPath = n + 1 and + nRename = nPath + 1 and + nUseTreeList = nRename + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getRename() + or + index = nRename and result = e.getUseTreeList() + ) + ) + } + /** * INTERNAL: Do not use. * A list of use trees in a use declaration. @@ -1336,6 +2086,23 @@ module Raw { * Gets the `index`th use tree of this use tree list (0-based). */ UseTree getUseTree(int index) { use_tree_list_use_trees(this, index, result) } + + /** + * Gets the number of use trees of this use tree list. + */ + int getNumberOfUseTrees() { result = count(int i | use_tree_list_use_trees(this, i, _)) } + } + + private Element getImmediateChildOfUseTreeList(UseTreeList e, int index) { + exists(int n, int nUseTree | + n = 0 and + nUseTree = n + e.getNumberOfUseTrees() and + ( + none() + or + result = e.getUseTree(index - n) + ) + ) } /** @@ -1355,6 +2122,23 @@ module Raw { * Gets the `index`th variant of this variant list (0-based). */ Variant getVariant(int index) { variant_list_variants(this, index, result) } + + /** + * Gets the number of variants of this variant list. + */ + int getNumberOfVariants() { result = count(int i | variant_list_variants(this, i, _)) } + } + + private Element getImmediateChildOfVariantList(VariantList e, int index) { + exists(int n, int nVariant | + n = 0 and + nVariant = n + e.getNumberOfVariants() and + ( + none() + or + result = e.getVariant(index - n) + ) + ) } /** @@ -1376,6 +2160,18 @@ module Raw { Path getPath() { visibility_paths(this, result) } } + private Element getImmediateChildOfVisibility(Visibility e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A where clause in a generic declaration. @@ -1393,6 +2189,23 @@ module Raw { * Gets the `index`th predicate of this where clause (0-based). */ WherePred getPredicate(int index) { where_clause_predicates(this, index, result) } + + /** + * Gets the number of predicates of this where clause. + */ + int getNumberOfPredicates() { result = count(int i | where_clause_predicates(this, i, _)) } + } + + private Element getImmediateChildOfWhereClause(WhereClause e, int index) { + exists(int n, int nPredicate | + n = 0 and + nPredicate = n + e.getNumberOfPredicates() and + ( + none() + or + result = e.getPredicate(index - n) + ) + ) } /** @@ -1431,6 +2244,27 @@ module Raw { TypeBoundList getTypeBoundList() { where_pred_type_bound_lists(this, result) } } + private Element getImmediateChildOfWherePred(WherePred e, int index) { + exists(int n, int nForBinder, int nLifetime, int nTypeRepr, int nTypeBoundList | + n = 0 and + nForBinder = n + 1 and + nLifetime = nForBinder + 1 and + nTypeRepr = nLifetime + 1 and + nTypeBoundList = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1442,17 +2276,42 @@ module Raw { */ Attr getAttr(int index) { array_expr_internal_attrs(this, index, result) } + /** + * Gets the number of attrs of this array expression internal. + */ + int getNumberOfAttrs() { result = count(int i | array_expr_internal_attrs(this, i, _)) } + /** * Gets the `index`th expression of this array expression internal (0-based). */ Expr getExpr(int index) { array_expr_internal_exprs(this, index, result) } + /** + * Gets the number of expressions of this array expression internal. + */ + int getNumberOfExprs() { result = count(int i | array_expr_internal_exprs(this, i, _)) } + /** * Holds if this array expression internal is semicolon. */ predicate isSemicolon() { array_expr_internal_is_semicolon(this) } } + private Element getImmediateChildOfArrayExprInternal(ArrayExprInternal e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + e.getNumberOfExprs() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getExpr(index - nAttr) + ) + ) + } + /** * INTERNAL: Do not use. * An array type representation. @@ -1477,6 +2336,21 @@ module Raw { TypeRepr getElementTypeRepr() { array_type_repr_element_type_reprs(this, result) } } + private Element getImmediateChildOfArrayTypeRepr(ArrayTypeRepr e, int index) { + exists(int n, int nConstArg, int nElementTypeRepr | + n = 0 and + nConstArg = n + 1 and + nElementTypeRepr = nConstArg + 1 and + ( + none() + or + index = n and result = e.getConstArg() + or + index = nConstArg and result = e.getElementTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A clobbered ABI in an inline assembly block. @@ -1492,6 +2366,8 @@ module Raw { override string toString() { result = "AsmClobberAbi" } } + private Element getImmediateChildOfAsmClobberAbi(AsmClobberAbi e, int index) { none() } + /** * INTERNAL: Do not use. * A constant operand in an inline assembly block. @@ -1517,6 +2393,18 @@ module Raw { predicate isConst() { asm_const_is_const(this) } } + private Element getImmediateChildOfAsmConst(AsmConst e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A label in an inline assembly block. @@ -1540,6 +2428,18 @@ module Raw { BlockExpr getBlockExpr() { asm_label_block_exprs(this, result) } } + private Element getImmediateChildOfAsmLabel(AsmLabel e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A named operand in an inline assembly block. @@ -1565,6 +2465,21 @@ module Raw { Name getName() { asm_operand_named_names(this, result) } } + private Element getImmediateChildOfAsmOperandNamed(AsmOperandNamed e, int index) { + exists(int n, int nAsmOperand, int nName | + n = 0 and + nAsmOperand = n + 1 and + nName = nAsmOperand + 1 and + ( + none() + or + index = n and result = e.getAsmOperand() + or + index = nAsmOperand and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A list of options in an inline assembly block. @@ -1583,6 +2498,23 @@ module Raw { * Gets the `index`th asm option of this asm options list (0-based). */ AsmOption getAsmOption(int index) { asm_options_list_asm_options(this, index, result) } + + /** + * Gets the number of asm options of this asm options list. + */ + int getNumberOfAsmOptions() { result = count(int i | asm_options_list_asm_options(this, i, _)) } + } + + private Element getImmediateChildOfAsmOptionsList(AsmOptionsList e, int index) { + exists(int n, int nAsmOption | + n = 0 and + nAsmOption = n + e.getNumberOfAsmOptions() and + ( + none() + or + result = e.getAsmOption(index - n) + ) + ) } /** @@ -1615,6 +2547,24 @@ module Raw { AsmRegSpec getAsmRegSpec() { asm_reg_operand_asm_reg_specs(this, result) } } + private Element getImmediateChildOfAsmRegOperand(AsmRegOperand e, int index) { + exists(int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | + n = 0 and + nAsmDirSpec = n + 1 and + nAsmOperandExpr = nAsmDirSpec + 1 and + nAsmRegSpec = nAsmOperandExpr + 1 and + ( + none() + or + index = n and result = e.getAsmDirSpec() + or + index = nAsmDirSpec and result = e.getAsmOperandExpr() + or + index = nAsmOperandExpr and result = e.getAsmRegSpec() + ) + ) + } + /** * INTERNAL: Do not use. * A symbol operand in an inline assembly block. @@ -1635,6 +2585,18 @@ module Raw { Path getPath() { asm_sym_paths(this, result) } } + private Element getImmediateChildOfAsmSym(AsmSym e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * An associated type argument in a path. @@ -1694,6 +2656,42 @@ module Raw { TypeBoundList getTypeBoundList() { assoc_type_arg_type_bound_lists(this, result) } } + private Element getImmediateChildOfAssocTypeArg(AssocTypeArg e, int index) { + exists( + int n, int nConstArg, int nGenericArgList, int nIdentifier, int nParamList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList + | + n = 0 and + nConstArg = n + 1 and + nGenericArgList = nConstArg + 1 and + nIdentifier = nGenericArgList + 1 and + nParamList = nIdentifier + 1 and + nRetType = nParamList + 1 and + nReturnTypeSyntax = nRetType + 1 and + nTypeRepr = nReturnTypeSyntax + 1 and + nTypeBoundList = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getConstArg() + or + index = nConstArg and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getParamList() + or + index = nParamList and result = e.getRetType() + or + index = nRetType and result = e.getReturnTypeSyntax() + or + index = nReturnTypeSyntax and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An `await` expression. For example: @@ -1712,12 +2710,32 @@ module Raw { */ Attr getAttr(int index) { await_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this await expression. + */ + int getNumberOfAttrs() { result = count(int i | await_expr_attrs(this, i, _)) } + /** * Gets the expression of this await expression, if it exists. */ Expr getExpr() { await_expr_exprs(this, result) } } + private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `become` expression. For example: @@ -1739,12 +2757,32 @@ module Raw { */ Attr getAttr(int index) { become_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this become expression. + */ + int getNumberOfAttrs() { result = count(int i | become_expr_attrs(this, i, _)) } + /** * Gets the expression of this become expression, if it exists. */ Expr getExpr() { become_expr_exprs(this, result) } } + private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A binary operation expression. For example: @@ -1764,6 +2802,11 @@ module Raw { */ Attr getAttr(int index) { binary_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this binary expression. + */ + int getNumberOfAttrs() { result = count(int i | binary_expr_attrs(this, i, _)) } + /** * Gets the lhs of this binary expression, if it exists. */ @@ -1780,6 +2823,24 @@ module Raw { Expr getRhs() { binary_expr_rhs(this, result) } } + private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index) { + exists(int n, int nAttr, int nLhs, int nRhs | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLhs = nAttr + 1 and + nRhs = nLhs + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLhs() + or + index = nLhs and result = e.getRhs() + ) + ) + } + /** * INTERNAL: Do not use. * A box pattern. For example: @@ -1799,6 +2860,18 @@ module Raw { Pat getPat() { box_pat_pats(this, result) } } + private Element getImmediateChildOfBoxPat(BoxPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A break expression. For example: @@ -1833,6 +2906,11 @@ module Raw { */ Attr getAttr(int index) { break_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this break expression. + */ + int getNumberOfAttrs() { result = count(int i | break_expr_attrs(this, i, _)) } + /** * Gets the expression of this break expression, if it exists. */ @@ -1844,6 +2922,24 @@ module Raw { Lifetime getLifetime() { break_expr_lifetimes(this, result) } } + private Element getImmediateChildOfBreakExpr(BreakExpr e, int index) { + exists(int n, int nAttr, int nExpr, int nLifetime | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nLifetime = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A function or method call expression. See `CallExpr` and `MethodCallExpr` for further details. @@ -1858,6 +2954,11 @@ module Raw { * Gets the `index`th attr of this call expression base (0-based). */ Attr getAttr(int index) { call_expr_base_attrs(this, index, result) } + + /** + * Gets the number of attrs of this call expression base. + */ + int getNumberOfAttrs() { result = count(int i | call_expr_base_attrs(this, i, _)) } } /** @@ -1875,6 +2976,11 @@ module Raw { */ Attr getAttr(int index) { cast_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this cast expression. + */ + int getNumberOfAttrs() { result = count(int i | cast_expr_attrs(this, i, _)) } + /** * Gets the expression of this cast expression, if it exists. */ @@ -1886,6 +2992,24 @@ module Raw { TypeRepr getTypeRepr() { cast_expr_type_reprs(this, result) } } + private Element getImmediateChildOfCastExpr(CastExpr e, int index) { + exists(int n, int nAttr, int nExpr, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + nTypeRepr = nExpr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + or + index = nExpr and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A closure expression. For example: @@ -1946,6 +3070,30 @@ module Raw { RetTypeRepr getRetType() { closure_expr_ret_types(this, result) } } + private Element getImmediateChildOfClosureExpr(ClosureExpr e, int index) { + exists(int n, int nParamList, int nAttr, int nClosureBody, int nForBinder, int nRetType | + n = 0 and + nParamList = n + 1 and + nAttr = nParamList + e.getNumberOfAttrs() and + nClosureBody = nAttr + 1 and + nForBinder = nClosureBody + 1 and + nRetType = nForBinder + 1 and + ( + none() + or + index = n and result = e.getParamList() + or + result = e.getAttr(index - nParamList) + or + index = nAttr and result = e.getClosureBody() + or + index = nClosureBody and result = e.getForBinder() + or + index = nForBinder and result = e.getRetType() + ) + ) + } + /** * INTERNAL: Do not use. * A comment. For example: @@ -1968,6 +3116,8 @@ module Raw { string getText() { comments(this, _, result) } } + private Element getImmediateChildOfComment(Comment e, int index) { none() } + /** * INTERNAL: Do not use. * A constant argument in a generic argument list. @@ -1987,6 +3137,18 @@ module Raw { Expr getExpr() { const_arg_exprs(this, result) } } + private Element getImmediateChildOfConstArg(ConstArg e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A const block pattern. For example: @@ -2011,6 +3173,18 @@ module Raw { predicate isConst() { const_block_pat_is_const(this) } } + private Element getImmediateChildOfConstBlockPat(ConstBlockPat e, int index) { + exists(int n, int nBlockExpr | + n = 0 and + nBlockExpr = n + 1 and + ( + none() + or + index = n and result = e.getBlockExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A constant parameter in a generic parameter list. @@ -2029,6 +3203,11 @@ module Raw { */ Attr getAttr(int index) { const_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this const parameter. + */ + int getNumberOfAttrs() { result = count(int i | const_param_attrs(this, i, _)) } + /** * Gets the default val of this const parameter, if it exists. */ @@ -2050,6 +3229,27 @@ module Raw { TypeRepr getTypeRepr() { const_param_type_reprs(this, result) } } + private Element getImmediateChildOfConstParam(ConstParam e, int index) { + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefaultVal = nAttr + 1 and + nName = nDefaultVal + 1 and + nTypeRepr = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefaultVal() + or + index = nDefaultVal and result = e.getName() + or + index = nName and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A continue expression. For example: @@ -2076,12 +3276,32 @@ module Raw { */ Attr getAttr(int index) { continue_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this continue expression. + */ + int getNumberOfAttrs() { result = count(int i | continue_expr_attrs(this, i, _)) } + /** * Gets the lifetime of this continue expression, if it exists. */ Lifetime getLifetime() { continue_expr_lifetimes(this, result) } } + private Element getImmediateChildOfContinueExpr(ContinueExpr e, int index) { + exists(int n, int nAttr, int nLifetime | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLifetime = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A dynamic trait object type. @@ -2101,6 +3321,18 @@ module Raw { TypeBoundList getTypeBoundList() { dyn_trait_type_repr_type_bound_lists(this, result) } } + private Element getImmediateChildOfDynTraitTypeRepr(DynTraitTypeRepr e, int index) { + exists(int n, int nTypeBoundList | + n = 0 and + nTypeBoundList = n + 1 and + ( + none() + or + index = n and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An expression statement. For example: @@ -2119,6 +3351,18 @@ module Raw { Expr getExpr() { expr_stmt_exprs(this, result) } } + private Element getImmediateChildOfExprStmt(ExprStmt e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A field access expression. For example: @@ -2134,6 +3378,11 @@ module Raw { */ Attr getAttr(int index) { field_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this field expression. + */ + int getNumberOfAttrs() { result = count(int i | field_expr_attrs(this, i, _)) } + /** * Gets the container of this field expression, if it exists. */ @@ -2145,6 +3394,24 @@ module Raw { NameRef getIdentifier() { field_expr_identifiers(this, result) } } + private Element getImmediateChildOfFieldExpr(FieldExpr e, int index) { + exists(int n, int nAttr, int nContainer, int nIdentifier | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nContainer = nAttr + 1 and + nIdentifier = nContainer + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getContainer() + or + index = nContainer and result = e.getIdentifier() + ) + ) + } + /** * INTERNAL: Do not use. * A function pointer type. @@ -2189,6 +3456,24 @@ module Raw { RetTypeRepr getRetType() { fn_ptr_type_repr_ret_types(this, result) } } + private Element getImmediateChildOfFnPtrTypeRepr(FnPtrTypeRepr e, int index) { + exists(int n, int nAbi, int nParamList, int nRetType | + n = 0 and + nAbi = n + 1 and + nParamList = nAbi + 1 and + nRetType = nParamList + 1 and + ( + none() + or + index = n and result = e.getAbi() + or + index = nAbi and result = e.getParamList() + or + index = nParamList and result = e.getRetType() + ) + ) + } + /** * INTERNAL: Do not use. * A function pointer type with a `for` modifier. @@ -2213,6 +3498,21 @@ module Raw { TypeRepr getTypeRepr() { for_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfForTypeRepr(ForTypeRepr e, int index) { + exists(int n, int nForBinder, int nTypeRepr | + n = 0 and + nForBinder = n + 1 and + nTypeRepr = nForBinder + 1 and + ( + none() + or + index = n and result = e.getForBinder() + or + index = nForBinder and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A FormatArgsExpr. For example: @@ -2232,17 +3532,46 @@ module Raw { */ FormatArgsArg getArg(int index) { format_args_expr_args(this, index, result) } + /** + * Gets the number of arguments of this format arguments expression. + */ + int getNumberOfArgs() { result = count(int i | format_args_expr_args(this, i, _)) } + /** * Gets the `index`th attr of this format arguments expression (0-based). */ Attr getAttr(int index) { format_args_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this format arguments expression. + */ + int getNumberOfAttrs() { result = count(int i | format_args_expr_attrs(this, i, _)) } + /** * Gets the template of this format arguments expression, if it exists. */ Expr getTemplate() { format_args_expr_templates(this, result) } } + private Element getImmediateChildOfFormatArgsExpr(FormatArgsExpr e, int index) { + exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | + n = 0 and + nArg = n + e.getNumberOfArgs() and + nAttr = nArg + e.getNumberOfAttrs() and + nTemplate = nAttr + 1 and + nFormat = nTemplate and + ( + none() + or + result = e.getArg(index - n) + or + result = e.getAttr(index - nArg) + or + index = nAttr and result = e.getTemplate() + ) + ) + } + /** * INTERNAL: Do not use. * A binding pattern. For example: @@ -2267,6 +3596,11 @@ module Raw { */ Attr getAttr(int index) { ident_pat_attrs(this, index, result) } + /** + * Gets the number of attrs of this ident pattern. + */ + int getNumberOfAttrs() { result = count(int i | ident_pat_attrs(this, i, _)) } + /** * Holds if this ident pattern is mut. */ @@ -2288,6 +3622,24 @@ module Raw { Pat getPat() { ident_pat_pats(this, result) } } + private Element getImmediateChildOfIdentPat(IdentPat e, int index) { + exists(int n, int nAttr, int nName, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nName = nAttr + 1 and + nPat = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getName() + or + index = nName and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * An `if` expression. For example: @@ -2312,6 +3664,11 @@ module Raw { */ Attr getAttr(int index) { if_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this if expression. + */ + int getNumberOfAttrs() { result = count(int i | if_expr_attrs(this, i, _)) } + /** * Gets the condition of this if expression, if it exists. */ @@ -2328,6 +3685,27 @@ module Raw { BlockExpr getThen() { if_expr_thens(this, result) } } + private Element getImmediateChildOfIfExpr(IfExpr e, int index) { + exists(int n, int nAttr, int nCondition, int nElse, int nThen | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nCondition = nAttr + 1 and + nElse = nCondition + 1 and + nThen = nElse + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getCondition() + or + index = nCondition and result = e.getElse() + or + index = nElse and result = e.getThen() + ) + ) + } + /** * INTERNAL: Do not use. * An `impl Trait` type. @@ -2347,6 +3725,18 @@ module Raw { TypeBoundList getTypeBoundList() { impl_trait_type_repr_type_bound_lists(this, result) } } + private Element getImmediateChildOfImplTraitTypeRepr(ImplTraitTypeRepr e, int index) { + exists(int n, int nTypeBoundList | + n = 0 and + nTypeBoundList = n + 1 and + ( + none() + or + index = n and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An index expression. For example: @@ -2363,6 +3753,11 @@ module Raw { */ Attr getAttr(int index) { index_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this index expression. + */ + int getNumberOfAttrs() { result = count(int i | index_expr_attrs(this, i, _)) } + /** * Gets the base of this index expression, if it exists. */ @@ -2374,6 +3769,24 @@ module Raw { Expr getIndex() { index_expr_indices(this, result) } } + private Element getImmediateChildOfIndexExpr(IndexExpr e, int index) { + exists(int n, int nAttr, int nBase, int nIndex | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nBase = nAttr + 1 and + nIndex = nBase + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getBase() + or + index = nBase and result = e.getIndex() + ) + ) + } + /** * INTERNAL: Do not use. * An inferred type (`_`). @@ -2388,6 +3801,8 @@ module Raw { override string toString() { result = "InferTypeRepr" } } + private Element getImmediateChildOfInferTypeRepr(InferTypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. * An item such as a function, struct, enum, etc. @@ -2434,6 +3849,11 @@ module Raw { */ Attr getAttr(int index) { let_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this let expression. + */ + int getNumberOfAttrs() { result = count(int i | let_expr_attrs(this, i, _)) } + /** * Gets the scrutinee of this let expression, if it exists. */ @@ -2445,6 +3865,24 @@ module Raw { Pat getPat() { let_expr_pats(this, result) } } + private Element getImmediateChildOfLetExpr(LetExpr e, int index) { + exists(int n, int nAttr, int nScrutinee, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nScrutinee = nAttr + 1 and + nPat = nScrutinee + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getScrutinee() + or + index = nScrutinee and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A let statement. For example: @@ -2467,6 +3905,11 @@ module Raw { */ Attr getAttr(int index) { let_stmt_attrs(this, index, result) } + /** + * Gets the number of attrs of this let statement. + */ + int getNumberOfAttrs() { result = count(int i | let_stmt_attrs(this, i, _)) } + /** * Gets the initializer of this let statement, if it exists. */ @@ -2488,6 +3931,30 @@ module Raw { TypeRepr getTypeRepr() { let_stmt_type_reprs(this, result) } } + private Element getImmediateChildOfLetStmt(LetStmt e, int index) { + exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nInitializer = nAttr + 1 and + nLetElse = nInitializer + 1 and + nPat = nLetElse + 1 and + nTypeRepr = nPat + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getInitializer() + or + index = nInitializer and result = e.getLetElse() + or + index = nLetElse and result = e.getPat() + or + index = nPat and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A lifetime annotation. @@ -2507,6 +3974,8 @@ module Raw { string getText() { lifetime_texts(this, result) } } + private Element getImmediateChildOfLifetime(Lifetime e, int index) { none() } + /** * INTERNAL: Do not use. * A lifetime argument in a generic argument list. @@ -2526,6 +3995,18 @@ module Raw { Lifetime getLifetime() { lifetime_arg_lifetimes(this, result) } } + private Element getImmediateChildOfLifetimeArg(LifetimeArg e, int index) { + exists(int n, int nLifetime | + n = 0 and + nLifetime = n + 1 and + ( + none() + or + index = n and result = e.getLifetime() + ) + ) + } + /** * INTERNAL: Do not use. * A lifetime parameter in a generic parameter list. @@ -2544,6 +4025,11 @@ module Raw { */ Attr getAttr(int index) { lifetime_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this lifetime parameter. + */ + int getNumberOfAttrs() { result = count(int i | lifetime_param_attrs(this, i, _)) } + /** * Gets the lifetime of this lifetime parameter, if it exists. */ @@ -2555,6 +4041,24 @@ module Raw { TypeBoundList getTypeBoundList() { lifetime_param_type_bound_lists(this, result) } } + private Element getImmediateChildOfLifetimeParam(LifetimeParam e, int index) { + exists(int n, int nAttr, int nLifetime, int nTypeBoundList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nLifetime = nAttr + 1 and + nTypeBoundList = nLifetime + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * A literal expression. For example: @@ -2577,12 +4081,29 @@ module Raw { */ Attr getAttr(int index) { literal_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this literal expression. + */ + int getNumberOfAttrs() { result = count(int i | literal_expr_attrs(this, i, _)) } + /** * Gets the text value of this literal expression, if it exists. */ string getTextValue() { literal_expr_text_values(this, result) } } + private Element getImmediateChildOfLiteralExpr(LiteralExpr e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * A literal pattern. For example: @@ -2602,6 +4123,18 @@ module Raw { LiteralExpr getLiteral() { literal_pat_literals(this, result) } } + private Element getImmediateChildOfLiteralPat(LiteralPat e, int index) { + exists(int n, int nLiteral | + n = 0 and + nLiteral = n + 1 and + ( + none() + or + index = n and result = e.getLiteral() + ) + ) + } + /** * INTERNAL: Do not use. * A sequence of statements generated by a `MacroCall`. For example: @@ -2625,12 +4158,32 @@ module Raw { */ Stmt getStatement(int index) { macro_block_expr_statements(this, index, result) } + /** + * Gets the number of statements of this macro block expression. + */ + int getNumberOfStatements() { result = count(int i | macro_block_expr_statements(this, i, _)) } + /** * Gets the tail expression of this macro block expression, if it exists. */ Expr getTailExpr() { macro_block_expr_tail_exprs(this, result) } } + private Element getImmediateChildOfMacroBlockExpr(MacroBlockExpr e, int index) { + exists(int n, int nStatement, int nTailExpr | + n = 0 and + nStatement = n + e.getNumberOfStatements() and + nTailExpr = nStatement + 1 and + ( + none() + or + result = e.getStatement(index - n) + or + index = nStatement and result = e.getTailExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A macro expression, representing the invocation of a macro that produces an expression. @@ -2649,6 +4202,18 @@ module Raw { MacroCall getMacroCall() { macro_expr_macro_calls(this, result) } } + private Element getImmediateChildOfMacroExpr(MacroExpr e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A macro pattern, representing the invocation of a macro that produces a pattern. @@ -2676,6 +4241,18 @@ module Raw { MacroCall getMacroCall() { macro_pat_macro_calls(this, result) } } + private Element getImmediateChildOfMacroPat(MacroPat e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A type produced by a macro. @@ -2698,6 +4275,18 @@ module Raw { MacroCall getMacroCall() { macro_type_repr_macro_calls(this, result) } } + private Element getImmediateChildOfMacroTypeRepr(MacroTypeRepr e, int index) { + exists(int n, int nMacroCall | + n = 0 and + nMacroCall = n + 1 and + ( + none() + or + index = n and result = e.getMacroCall() + ) + ) + } + /** * INTERNAL: Do not use. * A match expression. For example: @@ -2722,6 +4311,11 @@ module Raw { */ Attr getAttr(int index) { match_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this match expression. + */ + int getNumberOfAttrs() { result = count(int i | match_expr_attrs(this, i, _)) } + /** * Gets the scrutinee (the expression being matched) of this match expression, if it exists. */ @@ -2733,6 +4327,24 @@ module Raw { MatchArmList getMatchArmList() { match_expr_match_arm_lists(this, result) } } + private Element getImmediateChildOfMatchExpr(MatchExpr e, int index) { + exists(int n, int nAttr, int nScrutinee, int nMatchArmList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nScrutinee = nAttr + 1 and + nMatchArmList = nScrutinee + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getScrutinee() + or + index = nScrutinee and result = e.getMatchArmList() + ) + ) + } + /** * INTERNAL: Do not use. * A reference to a name. @@ -2752,6 +4364,8 @@ module Raw { string getText() { name_ref_texts(this, result) } } + private Element getImmediateChildOfNameRef(NameRef e, int index) { none() } + /** * INTERNAL: Do not use. * The never type `!`. @@ -2766,6 +4380,8 @@ module Raw { override string toString() { result = "NeverTypeRepr" } } + private Element getImmediateChildOfNeverTypeRepr(NeverTypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. * An `offset_of` expression. For example: @@ -2781,17 +4397,45 @@ module Raw { */ Attr getAttr(int index) { offset_of_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this offset of expression. + */ + int getNumberOfAttrs() { result = count(int i | offset_of_expr_attrs(this, i, _)) } + /** * Gets the `index`th field of this offset of expression (0-based). */ NameRef getField(int index) { offset_of_expr_fields(this, index, result) } + /** + * Gets the number of fields of this offset of expression. + */ + int getNumberOfFields() { result = count(int i | offset_of_expr_fields(this, i, _)) } + /** * Gets the type representation of this offset of expression, if it exists. */ TypeRepr getTypeRepr() { offset_of_expr_type_reprs(this, result) } } + private Element getImmediateChildOfOffsetOfExpr(OffsetOfExpr e, int index) { + exists(int n, int nAttr, int nField, int nTypeRepr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + nTypeRepr = nField + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + or + index = nField and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * An or pattern. For example: @@ -2808,6 +4452,23 @@ module Raw { * Gets the `index`th pattern of this or pattern (0-based). */ Pat getPat(int index) { or_pat_pats(this, index, result) } + + /** + * Gets the number of patterns of this or pattern. + */ + int getNumberOfPats() { result = count(int i | or_pat_pats(this, i, _)) } + } + + private Element getImmediateChildOfOrPat(OrPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + e.getNumberOfPats() and + ( + none() + or + result = e.getPat(index - n) + ) + ) } /** @@ -2828,6 +4489,24 @@ module Raw { Pat getPat() { param_pats(this, result) } } + private Element getImmediateChildOfParam(Param e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nPat | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nPat = nTypeRepr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized expression. @@ -2845,12 +4524,32 @@ module Raw { */ Attr getAttr(int index) { paren_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this paren expression. + */ + int getNumberOfAttrs() { result = count(int i | paren_expr_attrs(this, i, _)) } + /** * Gets the expression of this paren expression, if it exists. */ Expr getExpr() { paren_expr_exprs(this, result) } } + private Element getImmediateChildOfParenExpr(ParenExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized pattern. @@ -2870,6 +4569,18 @@ module Raw { Pat getPat() { paren_pat_pats(this, result) } } + private Element getImmediateChildOfParenPat(ParenPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A parenthesized type. @@ -2889,6 +4600,18 @@ module Raw { TypeRepr getTypeRepr() { paren_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfParenTypeRepr(ParenTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A path expression or a variable access in a formatting template. See `PathExpr` and `FormatTemplateVariableAccess` for further details. @@ -2909,6 +4632,18 @@ module Raw { override string toString() { result = "PathPat" } } + private Element getImmediateChildOfPathPat(PathPat e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A path referring to a type. For example: @@ -2926,6 +4661,18 @@ module Raw { Path getPath() { path_type_repr_paths(this, result) } } + private Element getImmediateChildOfPathTypeRepr(PathTypeRepr e, int index) { + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and + ( + none() + or + index = n and result = e.getPath() + ) + ) + } + /** * INTERNAL: Do not use. * A unary operation expression. For example: @@ -2943,6 +4690,11 @@ module Raw { */ Attr getAttr(int index) { prefix_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this prefix expression. + */ + int getNumberOfAttrs() { result = count(int i | prefix_expr_attrs(this, i, _)) } + /** * Gets the expression of this prefix expression, if it exists. */ @@ -2954,6 +4706,21 @@ module Raw { string getOperatorName() { prefix_expr_operator_names(this, result) } } + private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A pointer type. @@ -2984,6 +4751,18 @@ module Raw { TypeRepr getTypeRepr() { ptr_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfPtrTypeRepr(PtrTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A range expression. For example: @@ -3004,6 +4783,11 @@ module Raw { */ Attr getAttr(int index) { range_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this range expression. + */ + int getNumberOfAttrs() { result = count(int i | range_expr_attrs(this, i, _)) } + /** * Gets the end of this range expression, if it exists. */ @@ -3020,6 +4804,24 @@ module Raw { Expr getStart() { range_expr_starts(this, result) } } + private Element getImmediateChildOfRangeExpr(RangeExpr e, int index) { + exists(int n, int nAttr, int nEnd, int nStart | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nEnd = nAttr + 1 and + nStart = nEnd + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getEnd() + or + index = nEnd and result = e.getStart() + ) + ) + } + /** * INTERNAL: Do not use. * A range pattern. For example: @@ -3050,6 +4852,21 @@ module Raw { Pat getStart() { range_pat_starts(this, result) } } + private Element getImmediateChildOfRangePat(RangePat e, int index) { + exists(int n, int nEnd, int nStart | + n = 0 and + nEnd = n + 1 and + nStart = nEnd + 1 and + ( + none() + or + index = n and result = e.getEnd() + or + index = nEnd and result = e.getStart() + ) + ) + } + /** * INTERNAL: Do not use. * A reference expression. For example: @@ -3068,6 +4885,11 @@ module Raw { */ Attr getAttr(int index) { ref_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this reference expression. + */ + int getNumberOfAttrs() { result = count(int i | ref_expr_attrs(this, i, _)) } + /** * Gets the expression of this reference expression, if it exists. */ @@ -3089,6 +4911,21 @@ module Raw { predicate isRaw() { ref_expr_is_raw(this) } } + private Element getImmediateChildOfRefExpr(RefExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A reference pattern. For example: @@ -3113,6 +4950,18 @@ module Raw { Pat getPat() { ref_pat_pats(this, result) } } + private Element getImmediateChildOfRefPat(RefPat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + 1 and + ( + none() + or + index = n and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A reference type. @@ -3143,6 +4992,21 @@ module Raw { TypeRepr getTypeRepr() { ref_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfRefTypeRepr(RefTypeRepr e, int index) { + exists(int n, int nLifetime, int nTypeRepr | + n = 0 and + nLifetime = n + 1 and + nTypeRepr = nLifetime + 1 and + ( + none() + or + index = n and result = e.getLifetime() + or + index = nLifetime and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A rest pattern (`..`) in a tuple, slice, or struct pattern. @@ -3160,6 +5024,23 @@ module Raw { * Gets the `index`th attr of this rest pattern (0-based). */ Attr getAttr(int index) { rest_pat_attrs(this, index, result) } + + /** + * Gets the number of attrs of this rest pattern. + */ + int getNumberOfAttrs() { result = count(int i | rest_pat_attrs(this, i, _)) } + } + + private Element getImmediateChildOfRestPat(RestPat e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) } /** @@ -3184,12 +5065,32 @@ module Raw { */ Attr getAttr(int index) { return_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this return expression. + */ + int getNumberOfAttrs() { result = count(int i | return_expr_attrs(this, i, _)) } + /** * Gets the expression of this return expression, if it exists. */ Expr getExpr() { return_expr_exprs(this, result) } } + private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `self` parameter. For example `self` in: @@ -3228,6 +5129,27 @@ module Raw { Name getName() { self_param_names(this, result) } } + private Element getImmediateChildOfSelfParam(SelfParam e, int index) { + exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nTypeRepr = nAttr + 1 and + nLifetime = nTypeRepr + 1 and + nName = nLifetime + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getLifetime() + or + index = nLifetime and result = e.getName() + ) + ) + } + /** * INTERNAL: Do not use. * A slice pattern. For example: @@ -3246,6 +5168,23 @@ module Raw { * Gets the `index`th pattern of this slice pattern (0-based). */ Pat getPat(int index) { slice_pat_pats(this, index, result) } + + /** + * Gets the number of patterns of this slice pattern. + */ + int getNumberOfPats() { result = count(int i | slice_pat_pats(this, i, _)) } + } + + private Element getImmediateChildOfSlicePat(SlicePat e, int index) { + exists(int n, int nPat | + n = 0 and + nPat = n + e.getNumberOfPats() and + ( + none() + or + result = e.getPat(index - n) + ) + ) } /** @@ -3267,6 +5206,18 @@ module Raw { TypeRepr getTypeRepr() { slice_type_repr_type_reprs(this, result) } } + private Element getImmediateChildOfSliceTypeRepr(SliceTypeRepr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A struct expression. For example: @@ -3288,6 +5239,21 @@ module Raw { } } + private Element getImmediateChildOfStructExpr(StructExpr e, int index) { + exists(int n, int nPath, int nStructExprFieldList | + n = 0 and + nPath = n + 1 and + nStructExprFieldList = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getStructExprFieldList() + ) + ) + } + /** * INTERNAL: Do not use. * A list of fields in a struct declaration. @@ -3305,6 +5271,23 @@ module Raw { * Gets the `index`th field of this struct field list (0-based). */ StructField getField(int index) { struct_field_list_fields(this, index, result) } + + /** + * Gets the number of fields of this struct field list. + */ + int getNumberOfFields() { result = count(int i | struct_field_list_fields(this, i, _)) } + } + + private Element getImmediateChildOfStructFieldList(StructFieldList e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3326,6 +5309,21 @@ module Raw { StructPatFieldList getStructPatFieldList() { struct_pat_struct_pat_field_lists(this, result) } } + private Element getImmediateChildOfStructPat(StructPat e, int index) { + exists(int n, int nPath, int nStructPatFieldList | + n = 0 and + nPath = n + 1 and + nStructPatFieldList = nPath + 1 and + ( + none() + or + index = n and result = e.getPath() + or + index = nPath and result = e.getStructPatFieldList() + ) + ) + } + /** * INTERNAL: Do not use. * A try expression using the `?` operator. @@ -3344,12 +5342,32 @@ module Raw { */ Attr getAttr(int index) { try_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this try expression. + */ + int getNumberOfAttrs() { result = count(int i | try_expr_attrs(this, i, _)) } + /** * Gets the expression of this try expression, if it exists. */ Expr getExpr() { try_expr_exprs(this, result) } } + private Element getImmediateChildOfTryExpr(TryExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A tuple expression. For example: @@ -3367,10 +5385,35 @@ module Raw { */ Attr getAttr(int index) { tuple_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this tuple expression. + */ + int getNumberOfAttrs() { result = count(int i | tuple_expr_attrs(this, i, _)) } + /** * Gets the `index`th field of this tuple expression (0-based). */ Expr getField(int index) { tuple_expr_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple expression. + */ + int getNumberOfFields() { result = count(int i | tuple_expr_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleExpr(TupleExpr e, int index) { + exists(int n, int nAttr, int nField | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nField = nAttr + e.getNumberOfFields() and + ( + none() + or + result = e.getAttr(index - n) + or + result = e.getField(index - nAttr) + ) + ) } /** @@ -3390,6 +5433,23 @@ module Raw { * Gets the `index`th field of this tuple field list (0-based). */ TupleField getField(int index) { tuple_field_list_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple field list. + */ + int getNumberOfFields() { result = count(int i | tuple_field_list_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleFieldList(TupleFieldList e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3407,6 +5467,23 @@ module Raw { * Gets the `index`th field of this tuple pattern (0-based). */ Pat getField(int index) { tuple_pat_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple pattern. + */ + int getNumberOfFields() { result = count(int i | tuple_pat_fields(this, i, _)) } + } + + private Element getImmediateChildOfTuplePat(TuplePat e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3427,6 +5504,26 @@ module Raw { * Gets the `index`th field of this tuple struct pattern (0-based). */ Pat getField(int index) { tuple_struct_pat_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple struct pattern. + */ + int getNumberOfFields() { result = count(int i | tuple_struct_pat_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleStructPat(TupleStructPat e, int index) { + exists(int n, int nPath, int nField | + n = 0 and + nPath = n + 1 and + nField = nPath + e.getNumberOfFields() and + ( + none() + or + index = n and result = e.getPath() + or + result = e.getField(index - nPath) + ) + ) } /** @@ -3446,6 +5543,23 @@ module Raw { * Gets the `index`th field of this tuple type representation (0-based). */ TypeRepr getField(int index) { tuple_type_repr_fields(this, index, result) } + + /** + * Gets the number of fields of this tuple type representation. + */ + int getNumberOfFields() { result = count(int i | tuple_type_repr_fields(this, i, _)) } + } + + private Element getImmediateChildOfTupleTypeRepr(TupleTypeRepr e, int index) { + exists(int n, int nField | + n = 0 and + nField = n + e.getNumberOfFields() and + ( + none() + or + result = e.getField(index - n) + ) + ) } /** @@ -3467,6 +5581,18 @@ module Raw { TypeRepr getTypeRepr() { type_arg_type_reprs(this, result) } } + private Element getImmediateChildOfTypeArg(TypeArg e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. * A type parameter in a generic parameter list. @@ -3485,6 +5611,11 @@ module Raw { */ Attr getAttr(int index) { type_param_attrs(this, index, result) } + /** + * Gets the number of attrs of this type parameter. + */ + int getNumberOfAttrs() { result = count(int i | type_param_attrs(this, i, _)) } + /** * Gets the default type of this type parameter, if it exists. */ @@ -3501,6 +5632,27 @@ module Raw { TypeBoundList getTypeBoundList() { type_param_type_bound_lists(this, result) } } + private Element getImmediateChildOfTypeParam(TypeParam e, int index) { + exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDefaultType = nAttr + 1 and + nName = nDefaultType + 1 and + nTypeBoundList = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDefaultType() + or + index = nDefaultType and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + ) + ) + } + /** * INTERNAL: Do not use. * An underscore expression. For example: @@ -3515,6 +5667,23 @@ module Raw { * Gets the `index`th attr of this underscore expression (0-based). */ Attr getAttr(int index) { underscore_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this underscore expression. + */ + int getNumberOfAttrs() { result = count(int i | underscore_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfUnderscoreExpr(UnderscoreExpr e, int index) { + exists(int n, int nAttr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + ( + none() + or + result = e.getAttr(index - n) + ) + ) } /** @@ -3535,6 +5704,11 @@ module Raw { */ Attr getAttr(int index) { variant_attrs(this, index, result) } + /** + * Gets the number of attrs of this variant. + */ + int getNumberOfAttrs() { result = count(int i | variant_attrs(this, i, _)) } + /** * Gets the discriminant of this variant, if it exists. */ @@ -3556,6 +5730,30 @@ module Raw { Visibility getVisibility() { variant_visibilities(this, result) } } + private Element getImmediateChildOfVariant(Variant e, int index) { + exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nDiscriminant = nAttr + 1 and + nFieldList = nDiscriminant + 1 and + nName = nFieldList + 1 and + nVisibility = nName + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getDiscriminant() + or + index = nDiscriminant and result = e.getFieldList() + or + index = nFieldList and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A wildcard pattern. For example: @@ -3567,6 +5765,8 @@ module Raw { override string toString() { result = "WildcardPat" } } + private Element getImmediateChildOfWildcardPat(WildcardPat e, int index) { none() } + /** * INTERNAL: Do not use. * A `yeet` expression. For example: @@ -3584,12 +5784,32 @@ module Raw { */ Attr getAttr(int index) { yeet_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this yeet expression. + */ + int getNumberOfAttrs() { result = count(int i | yeet_expr_attrs(this, i, _)) } + /** * Gets the expression of this yeet expression, if it exists. */ Expr getExpr() { yeet_expr_exprs(this, result) } } + private Element getImmediateChildOfYeetExpr(YeetExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A `yield` expression. For example: @@ -3608,12 +5828,32 @@ module Raw { */ Attr getAttr(int index) { yield_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this yield expression. + */ + int getNumberOfAttrs() { result = count(int i | yield_expr_attrs(this, i, _)) } + /** * Gets the expression of this yield expression, if it exists. */ Expr getExpr() { yield_expr_exprs(this, result) } } + private Element getImmediateChildOfYieldExpr(YieldExpr e, int index) { + exists(int n, int nAttr, int nExpr | + n = 0 and + nAttr = n + e.getNumberOfAttrs() and + nExpr = nAttr + 1 and + ( + none() + or + result = e.getAttr(index - n) + or + index = nAttr and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An ADT (Abstract Data Type) definition, such as `Struct`, `Enum`, or `Union`. @@ -3625,6 +5865,13 @@ module Raw { MacroItems getDeriveMacroExpansion(int index) { adt_derive_macro_expansions(this, index, result) } + + /** + * Gets the number of derive macro expansions of this adt. + */ + int getNumberOfDeriveMacroExpansions() { + result = count(int i | adt_derive_macro_expansions(this, i, _)) + } } /** @@ -3645,15 +5892,51 @@ module Raw { */ AsmPiece getAsmPiece(int index) { asm_expr_asm_pieces(this, index, result) } + /** + * Gets the number of asm pieces of this asm expression. + */ + int getNumberOfAsmPieces() { result = count(int i | asm_expr_asm_pieces(this, i, _)) } + /** * Gets the `index`th attr of this asm expression (0-based). */ Attr getAttr(int index) { asm_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this asm expression. + */ + int getNumberOfAttrs() { result = count(int i | asm_expr_attrs(this, i, _)) } + /** * Gets the `index`th template of this asm expression (0-based). */ Expr getTemplate(int index) { asm_expr_templates(this, index, result) } + + /** + * Gets the number of templates of this asm expression. + */ + int getNumberOfTemplates() { result = count(int i | asm_expr_templates(this, i, _)) } + } + + private Element getImmediateChildOfAsmExpr(AsmExpr e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAsmPiece, int nAttr, int nTemplate | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAsmPiece = nAttributeMacroExpansion + e.getNumberOfAsmPieces() and + nAttr = nAsmPiece + e.getNumberOfAttrs() and + nTemplate = nAttr + e.getNumberOfTemplates() and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAsmPiece(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nAsmPiece) + or + result = e.getTemplate(index - nAttr) + ) + ) } /** @@ -3691,6 +5974,11 @@ module Raw { */ Attr getAttr(int index) { block_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this block expression. + */ + int getNumberOfAttrs() { result = count(int i | block_expr_attrs(this, i, _)) } + /** * Holds if this block expression is async. */ @@ -3727,6 +6015,24 @@ module Raw { StmtList getStmtList() { block_expr_stmt_lists(this, result) } } + private Element getImmediateChildOfBlockExpr(BlockExpr e, int index) { + exists(int n, int nLabel, int nAttr, int nStmtList | + n = 0 and + nLabel = n + 1 and + nAttr = nLabel + e.getNumberOfAttrs() and + nStmtList = nAttr + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + result = e.getAttr(index - nLabel) + or + index = nAttr and result = e.getStmtList() + ) + ) + } + /** * INTERNAL: Do not use. * A function call expression. For example: @@ -3746,6 +6052,24 @@ module Raw { Expr getFunction() { call_expr_functions(this, result) } } + private Element getImmediateChildOfCallExpr(CallExpr e, int index) { + exists(int n, int nArgList, int nAttr, int nFunction | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + e.getNumberOfAttrs() and + nFunction = nAttr + 1 and + ( + none() + or + index = n and result = e.getArgList() + or + result = e.getAttr(index - nArgList) + or + index = nAttr and result = e.getFunction() + ) + ) + } + /** * INTERNAL: Do not use. * An extern block containing foreign function declarations. @@ -3770,6 +6094,11 @@ module Raw { */ Attr getAttr(int index) { extern_block_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern block. + */ + int getNumberOfAttrs() { result = count(int i | extern_block_attrs(this, i, _)) } + /** * Gets the extern item list of this extern block, if it exists. */ @@ -3781,6 +6110,27 @@ module Raw { predicate isUnsafe() { extern_block_is_unsafe(this) } } + private Element getImmediateChildOfExternBlock(ExternBlock e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAbi, int nAttr, int nExternItemList | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAbi = nAttributeMacroExpansion + 1 and + nAttr = nAbi + e.getNumberOfAttrs() and + nExternItemList = nAttr + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAbi() + or + result = e.getAttr(index - nAbi) + or + index = nAttr and result = e.getExternItemList() + ) + ) + } + /** * INTERNAL: Do not use. * An extern crate declaration. @@ -3798,6 +6148,11 @@ module Raw { */ Attr getAttr(int index) { extern_crate_attrs(this, index, result) } + /** + * Gets the number of attrs of this extern crate. + */ + int getNumberOfAttrs() { result = count(int i | extern_crate_attrs(this, i, _)) } + /** * Gets the identifier of this extern crate, if it exists. */ @@ -3814,6 +6169,32 @@ module Raw { Visibility getVisibility() { extern_crate_visibilities(this, result) } } + private Element getImmediateChildOfExternCrate(ExternCrate e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nIdentifier, int nRename, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nIdentifier = nAttr + 1 and + nRename = nIdentifier + 1 and + nVisibility = nRename + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getIdentifier() + or + index = nIdentifier and result = e.getRename() + or + index = nRename and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * An item inside an extern block. @@ -3852,6 +6233,11 @@ module Raw { */ Attr getAttr(int index) { impl_attrs(this, index, result) } + /** + * Gets the number of attrs of this impl. + */ + int getNumberOfAttrs() { result = count(int i | impl_attrs(this, i, _)) } + /** * Gets the generic parameter list of this impl, if it exists. */ @@ -3893,6 +6279,42 @@ module Raw { WhereClause getWhereClause() { impl_where_clauses(this, result) } } + private Element getImmediateChildOfImpl(Impl e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nSelfTy, int nTrait, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and + nAttr = nAssocItemList + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nSelfTy = nGenericParamList + 1 and + nTrait = nSelfTy + 1 and + nVisibility = nTrait + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAssocItemList() + or + result = e.getAttr(index - nAssocItemList) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getSelfTy() + or + index = nSelfTy and result = e.getTrait() + or + index = nTrait and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). @@ -3928,6 +6350,11 @@ module Raw { */ Attr getAttr(int index) { macro_def_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro def. + */ + int getNumberOfAttrs() { result = count(int i | macro_def_attrs(this, i, _)) } + /** * Gets the body of this macro def, if it exists. */ @@ -3944,6 +6371,36 @@ module Raw { Visibility getVisibility() { macro_def_visibilities(this, result) } } + private Element getImmediateChildOfMacroDef(MacroDef e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nArgs, int nAttr, int nBody, int nName, + int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nArgs = nAttributeMacroExpansion + 1 and + nAttr = nArgs + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nName = nBody + 1 and + nVisibility = nName + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getArgs() + or + result = e.getAttr(index - nArgs) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A macro definition using the `macro_rules!` syntax. @@ -3963,6 +6420,11 @@ module Raw { */ Attr getAttr(int index) { macro_rules_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro rules. + */ + int getNumberOfAttrs() { result = count(int i | macro_rules_attrs(this, i, _)) } + /** * Gets the name of this macro rules, if it exists. */ @@ -3979,6 +6441,32 @@ module Raw { Visibility getVisibility() { macro_rules_visibilities(this, result) } } + private Element getImmediateChildOfMacroRules(MacroRules e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nName, int nTokenTree, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nName = nAttr + 1 and + nTokenTree = nName + 1 and + nVisibility = nTokenTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getName() + or + index = nName and result = e.getTokenTree() + or + index = nTokenTree and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A method call expression. For example: @@ -4006,6 +6494,30 @@ module Raw { Expr getReceiver() { method_call_expr_receivers(this, result) } } + private Element getImmediateChildOfMethodCallExpr(MethodCallExpr e, int index) { + exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + e.getNumberOfAttrs() and + nGenericArgList = nAttr + 1 and + nIdentifier = nGenericArgList + 1 and + nReceiver = nIdentifier + 1 and + ( + none() + or + index = n and result = e.getArgList() + or + result = e.getAttr(index - nArgList) + or + index = nAttr and result = e.getGenericArgList() + or + index = nGenericArgList and result = e.getIdentifier() + or + index = nIdentifier and result = e.getReceiver() + ) + ) + } + /** * INTERNAL: Do not use. * A module declaration. For example: @@ -4026,6 +6538,11 @@ module Raw { */ Attr getAttr(int index) { module_attrs(this, index, result) } + /** + * Gets the number of attrs of this module. + */ + int getNumberOfAttrs() { result = count(int i | module_attrs(this, i, _)) } + /** * Gets the item list of this module, if it exists. */ @@ -4042,6 +6559,32 @@ module Raw { Visibility getVisibility() { module_visibilities(this, result) } } + private Element getImmediateChildOfModule(Module e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nItemList, int nName, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nItemList = nAttr + 1 and + nName = nItemList + 1 and + nVisibility = nName + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getItemList() + or + index = nItemList and result = e.getName() + or + index = nName and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A path expression. For example: @@ -4059,6 +6602,26 @@ module Raw { * Gets the `index`th attr of this path expression (0-based). */ Attr getAttr(int index) { path_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this path expression. + */ + int getNumberOfAttrs() { result = count(int i | path_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfPathExpr(PathExpr e, int index) { + exists(int n, int nPath, int nAttr | + n = 0 and + nPath = n + 1 and + nAttr = nPath + e.getNumberOfAttrs() and + ( + none() + or + index = n and result = e.getPath() + or + result = e.getAttr(index - nPath) + ) + ) } /** @@ -4087,6 +6650,11 @@ module Raw { */ Attr getAttr(int index) { trait_attrs(this, index, result) } + /** + * Gets the number of attrs of this trait. + */ + int getNumberOfAttrs() { result = count(int i | trait_attrs(this, i, _)) } + /** * Gets the generic parameter list of this trait, if it exists. */ @@ -4123,6 +6691,42 @@ module Raw { WhereClause getWhereClause() { trait_where_clauses(this, result) } } + private Element getImmediateChildOfTrait(Trait e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nName, int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and + nAttr = nAssocItemList + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getAssocItemList() + or + result = e.getAttr(index - nAssocItemList) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A trait alias. @@ -4140,6 +6744,11 @@ module Raw { */ Attr getAttr(int index) { trait_alias_attrs(this, index, result) } + /** + * Gets the number of attrs of this trait alias. + */ + int getNumberOfAttrs() { result = count(int i | trait_alias_attrs(this, i, _)) } + /** * Gets the generic parameter list of this trait alias, if it exists. */ @@ -4166,6 +6775,39 @@ module Raw { WhereClause getWhereClause() { trait_alias_where_clauses(this, result) } } + private Element getImmediateChildOfTraitAlias(TraitAlias e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeBoundList = nName + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A `use` statement. For example: @@ -4181,6 +6823,11 @@ module Raw { */ Attr getAttr(int index) { use_attrs(this, index, result) } + /** + * Gets the number of attrs of this use. + */ + int getNumberOfAttrs() { result = count(int i | use_attrs(this, i, _)) } + /** * Gets the use tree of this use, if it exists. */ @@ -4192,6 +6839,27 @@ module Raw { Visibility getVisibility() { use_visibilities(this, result) } } + private Element getImmediateChildOfUse(Use e, int index) { + exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nUseTree = nAttr + 1 and + nVisibility = nUseTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getUseTree() + or + index = nUseTree and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A constant item declaration. @@ -4209,6 +6877,11 @@ module Raw { */ Attr getAttr(int index) { const_attrs(this, index, result) } + /** + * Gets the number of attrs of this const. + */ + int getNumberOfAttrs() { result = count(int i | const_attrs(this, i, _)) } + /** * Gets the body of this const, if it exists. */ @@ -4258,6 +6931,42 @@ module Raw { predicate hasImplementation() { const_has_implementation(this) } } + private Element getImmediateChildOfConst(Const e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nGenericParamList, int nName, + int nTypeRepr, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nGenericParamList = nBody + 1 and + nName = nGenericParamList + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * An enum declaration. @@ -4275,6 +6984,11 @@ module Raw { */ Attr getAttr(int index) { enum_attrs(this, index, result) } + /** + * Gets the number of attrs of this enum. + */ + int getNumberOfAttrs() { result = count(int i | enum_attrs(this, i, _)) } + /** * Gets the generic parameter list of this enum, if it exists. */ @@ -4301,6 +7015,42 @@ module Raw { WhereClause getWhereClause() { enum_where_clauses(this, result) } } + private Element getImmediateChildOfEnum(Enum e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nVariantList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nVariantList = nName + 1 and + nVisibility = nVariantList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getVariantList() + or + index = nVariantList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A for loop expression. @@ -4320,6 +7070,11 @@ module Raw { */ Attr getAttr(int index) { for_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this for expression. + */ + int getNumberOfAttrs() { result = count(int i | for_expr_attrs(this, i, _)) } + /** * Gets the iterable of this for expression, if it exists. */ @@ -4331,6 +7086,30 @@ module Raw { Pat getPat() { for_expr_pats(this, result) } } + private Element getImmediateChildOfForExpr(ForExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr, int nIterable, int nPat | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + nIterable = nAttr + 1 and + nPat = nIterable + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + or + index = nAttr and result = e.getIterable() + or + index = nIterable and result = e.getPat() + ) + ) + } + /** * INTERNAL: Do not use. * A function declaration. For example @@ -4416,6 +7195,48 @@ module Raw { predicate hasImplementation() { function_has_implementation(this) } } + private Element getImmediateChildOfFunction(Function e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nFunctionBody, + int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nParamList = nAttributeMacroExpansion + 1 and + nAttr = nParamList + e.getNumberOfAttrs() and + nAbi = nAttr + 1 and + nFunctionBody = nAbi + 1 and + nGenericParamList = nFunctionBody + 1 and + nName = nGenericParamList + 1 and + nRetType = nName + 1 and + nVisibility = nRetType + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + index = nAttributeMacroExpansion and result = e.getParamList() + or + result = e.getAttr(index - nParamList) + or + index = nAttr and result = e.getAbi() + or + index = nAbi and result = e.getFunctionBody() + or + index = nFunctionBody and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getRetType() + or + index = nRetType and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A loop expression. For example: @@ -4448,6 +7269,29 @@ module Raw { * Gets the `index`th attr of this loop expression (0-based). */ Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + + /** + * Gets the number of attrs of this loop expression. + */ + int getNumberOfAttrs() { result = count(int i | loop_expr_attrs(this, i, _)) } + } + + private Element getImmediateChildOfLoopExpr(LoopExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + ) + ) } /** @@ -4467,6 +7311,11 @@ module Raw { */ Attr getAttr(int index) { macro_call_attrs(this, index, result) } + /** + * Gets the number of attrs of this macro call. + */ + int getNumberOfAttrs() { result = count(int i | macro_call_attrs(this, i, _)) } + /** * Gets the path of this macro call, if it exists. */ @@ -4483,6 +7332,33 @@ module Raw { AstNode getMacroCallExpansion() { macro_call_macro_call_expansions(this, result) } } + private Element getImmediateChildOfMacroCall(MacroCall e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nPath, int nTokenTree, + int nMacroCallExpansion + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nPath = nAttr + 1 and + nTokenTree = nPath + 1 and + nMacroCallExpansion = nTokenTree + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getPath() + or + index = nPath and result = e.getTokenTree() + or + index = nTokenTree and result = e.getMacroCallExpansion() + ) + ) + } + /** * INTERNAL: Do not use. * A static item declaration. @@ -4500,6 +7376,11 @@ module Raw { */ Attr getAttr(int index) { static_attrs(this, index, result) } + /** + * Gets the number of attrs of this static. + */ + int getNumberOfAttrs() { result = count(int i | static_attrs(this, i, _)) } + /** * Gets the body of this static, if it exists. */ @@ -4536,6 +7417,36 @@ module Raw { Visibility getVisibility() { static_visibilities(this, result) } } + private Element getImmediateChildOfStatic(Static e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nName, int nTypeRepr, + int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nBody = nAttr + 1 and + nName = nBody + 1 and + nTypeRepr = nName + 1 and + nVisibility = nTypeRepr + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getBody() + or + index = nBody and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getVisibility() + ) + ) + } + /** * INTERNAL: Do not use. * A Struct. For example: @@ -4554,6 +7465,11 @@ module Raw { */ Attr getAttr(int index) { struct_attrs(this, index, result) } + /** + * Gets the number of attrs of this struct. + */ + int getNumberOfAttrs() { result = count(int i | struct_attrs(this, i, _)) } + /** * Gets the field list of this struct, if it exists. */ @@ -4580,6 +7496,42 @@ module Raw { WhereClause getWhereClause() { struct_where_clauses(this, result) } } + private Element getImmediateChildOfStruct(Struct e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, int nFieldList, + int nGenericParamList, int nName, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nFieldList = nAttr + 1 and + nGenericParamList = nFieldList + 1 and + nName = nGenericParamList + 1 and + nVisibility = nName + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getFieldList() + or + index = nFieldList and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A type alias. For example: @@ -4600,6 +7552,11 @@ module Raw { */ Attr getAttr(int index) { type_alias_attrs(this, index, result) } + /** + * Gets the number of attrs of this type alias. + */ + int getNumberOfAttrs() { result = count(int i | type_alias_attrs(this, i, _)) } + /** * Gets the generic parameter list of this type alias, if it exists. */ @@ -4636,6 +7593,42 @@ module Raw { WhereClause getWhereClause() { type_alias_where_clauses(this, result) } } + private Element getImmediateChildOfTypeAlias(TypeAlias e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nTypeRepr = nName + 1 and + nTypeBoundList = nTypeRepr + 1 and + nVisibility = nTypeBoundList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getAttr(index - nAttributeMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getTypeRepr() + or + index = nTypeRepr and result = e.getTypeBoundList() + or + index = nTypeBoundList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A union declaration. @@ -4653,6 +7646,11 @@ module Raw { */ Attr getAttr(int index) { union_attrs(this, index, result) } + /** + * Gets the number of attrs of this union. + */ + int getNumberOfAttrs() { result = count(int i | union_attrs(this, i, _)) } + /** * Gets the generic parameter list of this union, if it exists. */ @@ -4679,6 +7677,42 @@ module Raw { WhereClause getWhereClause() { union_where_clauses(this, result) } } + private Element getImmediateChildOfUnion(Union e, int index) { + exists( + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nStructFieldList, int nVisibility, int nWhereClause + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = nAttributeMacroExpansion + e.getNumberOfDeriveMacroExpansions() and + nAttr = nDeriveMacroExpansion + e.getNumberOfAttrs() and + nGenericParamList = nAttr + 1 and + nName = nGenericParamList + 1 and + nStructFieldList = nName + 1 and + nVisibility = nStructFieldList + 1 and + nWhereClause = nVisibility + 1 and + ( + none() + or + index = n and result = e.getAttributeMacroExpansion() + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) + or + result = e.getAttr(index - nDeriveMacroExpansion) + or + index = nAttr and result = e.getGenericParamList() + or + index = nGenericParamList and result = e.getName() + or + index = nName and result = e.getStructFieldList() + or + index = nStructFieldList and result = e.getVisibility() + or + index = nVisibility and result = e.getWhereClause() + ) + ) + } + /** * INTERNAL: Do not use. * A while loop expression. @@ -4698,9 +7732,365 @@ module Raw { */ Attr getAttr(int index) { while_expr_attrs(this, index, result) } + /** + * Gets the number of attrs of this while expression. + */ + int getNumberOfAttrs() { result = count(int i | while_expr_attrs(this, i, _)) } + /** * Gets the condition of this while expression, if it exists. */ Expr getCondition() { while_expr_conditions(this, result) } } + + private Element getImmediateChildOfWhileExpr(WhileExpr e, int index) { + exists(int n, int nLabel, int nLoopBody, int nAttr, int nCondition | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + e.getNumberOfAttrs() and + nCondition = nAttr + 1 and + ( + none() + or + index = n and result = e.getLabel() + or + index = nLabel and result = e.getLoopBody() + or + result = e.getAttr(index - nLoopBody) + or + index = nAttr and result = e.getCondition() + ) + ) + } + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + or + result = getImmediateChildOfExtractorStep(e, index) + or + result = getImmediateChildOfNamedCrate(e, index) + or + result = getImmediateChildOfCrate(e, index) + or + result = getImmediateChildOfMissing(e, index) + or + result = getImmediateChildOfUnimplemented(e, index) + or + result = getImmediateChildOfAbi(e, index) + or + result = getImmediateChildOfArgList(e, index) + or + result = getImmediateChildOfAsmDirSpec(e, index) + or + result = getImmediateChildOfAsmOperandExpr(e, index) + or + result = getImmediateChildOfAsmOption(e, index) + or + result = getImmediateChildOfAsmRegSpec(e, index) + or + result = getImmediateChildOfAssocItemList(e, index) + or + result = getImmediateChildOfAttr(e, index) + or + result = getImmediateChildOfExternItemList(e, index) + or + result = getImmediateChildOfForBinder(e, index) + or + result = getImmediateChildOfFormatArgsArg(e, index) + or + result = getImmediateChildOfGenericArgList(e, index) + or + result = getImmediateChildOfGenericParamList(e, index) + or + result = getImmediateChildOfItemList(e, index) + or + result = getImmediateChildOfLabel(e, index) + or + result = getImmediateChildOfLetElse(e, index) + or + result = getImmediateChildOfMacroItems(e, index) + or + result = getImmediateChildOfMatchArm(e, index) + or + result = getImmediateChildOfMatchArmList(e, index) + or + result = getImmediateChildOfMatchGuard(e, index) + or + result = getImmediateChildOfMeta(e, index) + or + result = getImmediateChildOfName(e, index) + or + result = getImmediateChildOfParamList(e, index) + or + result = getImmediateChildOfParenthesizedArgList(e, index) + or + result = getImmediateChildOfPath(e, index) + or + result = getImmediateChildOfPathSegment(e, index) + or + result = getImmediateChildOfRename(e, index) + or + result = getImmediateChildOfRetTypeRepr(e, index) + or + result = getImmediateChildOfReturnTypeSyntax(e, index) + or + result = getImmediateChildOfSourceFile(e, index) + or + result = getImmediateChildOfStmtList(e, index) + or + result = getImmediateChildOfStructExprField(e, index) + or + result = getImmediateChildOfStructExprFieldList(e, index) + or + result = getImmediateChildOfStructField(e, index) + or + result = getImmediateChildOfStructPatField(e, index) + or + result = getImmediateChildOfStructPatFieldList(e, index) + or + result = getImmediateChildOfTokenTree(e, index) + or + result = getImmediateChildOfTupleField(e, index) + or + result = getImmediateChildOfTypeBound(e, index) + or + result = getImmediateChildOfTypeBoundList(e, index) + or + result = getImmediateChildOfUseBoundGenericArgs(e, index) + or + result = getImmediateChildOfUseTree(e, index) + or + result = getImmediateChildOfUseTreeList(e, index) + or + result = getImmediateChildOfVariantList(e, index) + or + result = getImmediateChildOfVisibility(e, index) + or + result = getImmediateChildOfWhereClause(e, index) + or + result = getImmediateChildOfWherePred(e, index) + or + result = getImmediateChildOfArrayExprInternal(e, index) + or + result = getImmediateChildOfArrayTypeRepr(e, index) + or + result = getImmediateChildOfAsmClobberAbi(e, index) + or + result = getImmediateChildOfAsmConst(e, index) + or + result = getImmediateChildOfAsmLabel(e, index) + or + result = getImmediateChildOfAsmOperandNamed(e, index) + or + result = getImmediateChildOfAsmOptionsList(e, index) + or + result = getImmediateChildOfAsmRegOperand(e, index) + or + result = getImmediateChildOfAsmSym(e, index) + or + result = getImmediateChildOfAssocTypeArg(e, index) + or + result = getImmediateChildOfAwaitExpr(e, index) + or + result = getImmediateChildOfBecomeExpr(e, index) + or + result = getImmediateChildOfBinaryExpr(e, index) + or + result = getImmediateChildOfBoxPat(e, index) + or + result = getImmediateChildOfBreakExpr(e, index) + or + result = getImmediateChildOfCastExpr(e, index) + or + result = getImmediateChildOfClosureExpr(e, index) + or + result = getImmediateChildOfComment(e, index) + or + result = getImmediateChildOfConstArg(e, index) + or + result = getImmediateChildOfConstBlockPat(e, index) + or + result = getImmediateChildOfConstParam(e, index) + or + result = getImmediateChildOfContinueExpr(e, index) + or + result = getImmediateChildOfDynTraitTypeRepr(e, index) + or + result = getImmediateChildOfExprStmt(e, index) + or + result = getImmediateChildOfFieldExpr(e, index) + or + result = getImmediateChildOfFnPtrTypeRepr(e, index) + or + result = getImmediateChildOfForTypeRepr(e, index) + or + result = getImmediateChildOfFormatArgsExpr(e, index) + or + result = getImmediateChildOfIdentPat(e, index) + or + result = getImmediateChildOfIfExpr(e, index) + or + result = getImmediateChildOfImplTraitTypeRepr(e, index) + or + result = getImmediateChildOfIndexExpr(e, index) + or + result = getImmediateChildOfInferTypeRepr(e, index) + or + result = getImmediateChildOfLetExpr(e, index) + or + result = getImmediateChildOfLetStmt(e, index) + or + result = getImmediateChildOfLifetime(e, index) + or + result = getImmediateChildOfLifetimeArg(e, index) + or + result = getImmediateChildOfLifetimeParam(e, index) + or + result = getImmediateChildOfLiteralExpr(e, index) + or + result = getImmediateChildOfLiteralPat(e, index) + or + result = getImmediateChildOfMacroBlockExpr(e, index) + or + result = getImmediateChildOfMacroExpr(e, index) + or + result = getImmediateChildOfMacroPat(e, index) + or + result = getImmediateChildOfMacroTypeRepr(e, index) + or + result = getImmediateChildOfMatchExpr(e, index) + or + result = getImmediateChildOfNameRef(e, index) + or + result = getImmediateChildOfNeverTypeRepr(e, index) + or + result = getImmediateChildOfOffsetOfExpr(e, index) + or + result = getImmediateChildOfOrPat(e, index) + or + result = getImmediateChildOfParam(e, index) + or + result = getImmediateChildOfParenExpr(e, index) + or + result = getImmediateChildOfParenPat(e, index) + or + result = getImmediateChildOfParenTypeRepr(e, index) + or + result = getImmediateChildOfPathPat(e, index) + or + result = getImmediateChildOfPathTypeRepr(e, index) + or + result = getImmediateChildOfPrefixExpr(e, index) + or + result = getImmediateChildOfPtrTypeRepr(e, index) + or + result = getImmediateChildOfRangeExpr(e, index) + or + result = getImmediateChildOfRangePat(e, index) + or + result = getImmediateChildOfRefExpr(e, index) + or + result = getImmediateChildOfRefPat(e, index) + or + result = getImmediateChildOfRefTypeRepr(e, index) + or + result = getImmediateChildOfRestPat(e, index) + or + result = getImmediateChildOfReturnExpr(e, index) + or + result = getImmediateChildOfSelfParam(e, index) + or + result = getImmediateChildOfSlicePat(e, index) + or + result = getImmediateChildOfSliceTypeRepr(e, index) + or + result = getImmediateChildOfStructExpr(e, index) + or + result = getImmediateChildOfStructFieldList(e, index) + or + result = getImmediateChildOfStructPat(e, index) + or + result = getImmediateChildOfTryExpr(e, index) + or + result = getImmediateChildOfTupleExpr(e, index) + or + result = getImmediateChildOfTupleFieldList(e, index) + or + result = getImmediateChildOfTuplePat(e, index) + or + result = getImmediateChildOfTupleStructPat(e, index) + or + result = getImmediateChildOfTupleTypeRepr(e, index) + or + result = getImmediateChildOfTypeArg(e, index) + or + result = getImmediateChildOfTypeParam(e, index) + or + result = getImmediateChildOfUnderscoreExpr(e, index) + or + result = getImmediateChildOfVariant(e, index) + or + result = getImmediateChildOfWildcardPat(e, index) + or + result = getImmediateChildOfYeetExpr(e, index) + or + result = getImmediateChildOfYieldExpr(e, index) + or + result = getImmediateChildOfAsmExpr(e, index) + or + result = getImmediateChildOfBlockExpr(e, index) + or + result = getImmediateChildOfCallExpr(e, index) + or + result = getImmediateChildOfExternBlock(e, index) + or + result = getImmediateChildOfExternCrate(e, index) + or + result = getImmediateChildOfImpl(e, index) + or + result = getImmediateChildOfMacroDef(e, index) + or + result = getImmediateChildOfMacroRules(e, index) + or + result = getImmediateChildOfMethodCallExpr(e, index) + or + result = getImmediateChildOfModule(e, index) + or + result = getImmediateChildOfPathExpr(e, index) + or + result = getImmediateChildOfTrait(e, index) + or + result = getImmediateChildOfTraitAlias(e, index) + or + result = getImmediateChildOfUse(e, index) + or + result = getImmediateChildOfConst(e, index) + or + result = getImmediateChildOfEnum(e, index) + or + result = getImmediateChildOfForExpr(e, index) + or + result = getImmediateChildOfFunction(e, index) + or + result = getImmediateChildOfLoopExpr(e, index) + or + result = getImmediateChildOfMacroCall(e, index) + or + result = getImmediateChildOfStatic(e, index) + or + result = getImmediateChildOfStruct(e, index) + or + result = getImmediateChildOfTypeAlias(e, index) + or + result = getImmediateChildOfUnion(e, index) + or + result = getImmediateChildOfWhileExpr(e, index) + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index 9ed7961f63c..74b4a14460a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -845,18 +845,36 @@ module Synth { /** * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::Element getSynthParent(TElement e) { + none() + or + e = TFormat(result, _, _, _) + or + e = TFormatArgument(result, _, _, _, _, _) + or + e = TFormatTemplateVariableAccess(result, _, _) + } + + /** + * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAbi`, if possible. */ TAbi convertAbiFromRaw(Raw::Element e) { result = TAbi(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArgList`, if possible. */ TArgList convertArgListFromRaw(Raw::Element e) { result = TArgList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayExprInternal`, if possible. */ TArrayExprInternal convertArrayExprInternalFromRaw(Raw::Element e) { @@ -865,306 +883,357 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayListExpr`, if possible. */ TArrayListExpr convertArrayListExprFromRaw(Raw::Element e) { result = TArrayListExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayRepeatExpr`, if possible. */ TArrayRepeatExpr convertArrayRepeatExprFromRaw(Raw::Element e) { result = TArrayRepeatExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayTypeRepr`, if possible. */ TArrayTypeRepr convertArrayTypeReprFromRaw(Raw::Element e) { result = TArrayTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmClobberAbi`, if possible. */ TAsmClobberAbi convertAsmClobberAbiFromRaw(Raw::Element e) { result = TAsmClobberAbi(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmConst`, if possible. */ TAsmConst convertAsmConstFromRaw(Raw::Element e) { result = TAsmConst(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmDirSpec`, if possible. */ TAsmDirSpec convertAsmDirSpecFromRaw(Raw::Element e) { result = TAsmDirSpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmExpr`, if possible. */ TAsmExpr convertAsmExprFromRaw(Raw::Element e) { result = TAsmExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmLabel`, if possible. */ TAsmLabel convertAsmLabelFromRaw(Raw::Element e) { result = TAsmLabel(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOperandExpr`, if possible. */ TAsmOperandExpr convertAsmOperandExprFromRaw(Raw::Element e) { result = TAsmOperandExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOperandNamed`, if possible. */ TAsmOperandNamed convertAsmOperandNamedFromRaw(Raw::Element e) { result = TAsmOperandNamed(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOption`, if possible. */ TAsmOption convertAsmOptionFromRaw(Raw::Element e) { result = TAsmOption(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmOptionsList`, if possible. */ TAsmOptionsList convertAsmOptionsListFromRaw(Raw::Element e) { result = TAsmOptionsList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmRegOperand`, if possible. */ TAsmRegOperand convertAsmRegOperandFromRaw(Raw::Element e) { result = TAsmRegOperand(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmRegSpec`, if possible. */ TAsmRegSpec convertAsmRegSpecFromRaw(Raw::Element e) { result = TAsmRegSpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAsmSym`, if possible. */ TAsmSym convertAsmSymFromRaw(Raw::Element e) { result = TAsmSym(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssocItemList`, if possible. */ TAssocItemList convertAssocItemListFromRaw(Raw::Element e) { result = TAssocItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssocTypeArg`, if possible. */ TAssocTypeArg convertAssocTypeArgFromRaw(Raw::Element e) { result = TAssocTypeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAttr`, if possible. */ TAttr convertAttrFromRaw(Raw::Element e) { result = TAttr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAwaitExpr`, if possible. */ TAwaitExpr convertAwaitExprFromRaw(Raw::Element e) { result = TAwaitExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBecomeExpr`, if possible. */ TBecomeExpr convertBecomeExprFromRaw(Raw::Element e) { result = TBecomeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBinaryExpr`, if possible. */ TBinaryExpr convertBinaryExprFromRaw(Raw::Element e) { result = TBinaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBlockExpr`, if possible. */ TBlockExpr convertBlockExprFromRaw(Raw::Element e) { result = TBlockExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoxPat`, if possible. */ TBoxPat convertBoxPatFromRaw(Raw::Element e) { result = TBoxPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBreakExpr`, if possible. */ TBreakExpr convertBreakExprFromRaw(Raw::Element e) { result = TBreakExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCallExpr`, if possible. */ TCallExpr convertCallExprFromRaw(Raw::Element e) { result = TCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCastExpr`, if possible. */ TCastExpr convertCastExprFromRaw(Raw::Element e) { result = TCastExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClosureExpr`, if possible. */ TClosureExpr convertClosureExprFromRaw(Raw::Element e) { result = TClosureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TComment`, if possible. */ TComment convertCommentFromRaw(Raw::Element e) { result = TComment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConst`, if possible. */ TConst convertConstFromRaw(Raw::Element e) { result = TConst(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstArg`, if possible. */ TConstArg convertConstArgFromRaw(Raw::Element e) { result = TConstArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstBlockPat`, if possible. */ TConstBlockPat convertConstBlockPatFromRaw(Raw::Element e) { result = TConstBlockPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConstParam`, if possible. */ TConstParam convertConstParamFromRaw(Raw::Element e) { result = TConstParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TContinueExpr`, if possible. */ TContinueExpr convertContinueExprFromRaw(Raw::Element e) { result = TContinueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCrate`, if possible. */ TCrate convertCrateFromRaw(Raw::Element e) { result = TCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynTraitTypeRepr`, if possible. */ TDynTraitTypeRepr convertDynTraitTypeReprFromRaw(Raw::Element e) { result = TDynTraitTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnum`, if possible. */ TEnum convertEnumFromRaw(Raw::Element e) { result = TEnum(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExprStmt`, if possible. */ TExprStmt convertExprStmtFromRaw(Raw::Element e) { result = TExprStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternBlock`, if possible. */ TExternBlock convertExternBlockFromRaw(Raw::Element e) { result = TExternBlock(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternCrate`, if possible. */ TExternCrate convertExternCrateFromRaw(Raw::Element e) { result = TExternCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExternItemList`, if possible. */ TExternItemList convertExternItemListFromRaw(Raw::Element e) { result = TExternItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtractorStep`, if possible. */ TExtractorStep convertExtractorStepFromRaw(Raw::Element e) { result = TExtractorStep(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFieldExpr`, if possible. */ TFieldExpr convertFieldExprFromRaw(Raw::Element e) { result = TFieldExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFnPtrTypeRepr`, if possible. */ TFnPtrTypeRepr convertFnPtrTypeReprFromRaw(Raw::Element e) { result = TFnPtrTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForBinder`, if possible. */ TForBinder convertForBinderFromRaw(Raw::Element e) { result = TForBinder(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForExpr`, if possible. */ TForExpr convertForExprFromRaw(Raw::Element e) { result = TForExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForTypeRepr`, if possible. */ TForTypeRepr convertForTypeReprFromRaw(Raw::Element e) { result = TForTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormat`, if possible. */ TFormat convertFormatFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgsArg`, if possible. */ TFormatArgsArg convertFormatArgsArgFromRaw(Raw::Element e) { result = TFormatArgsArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgsExpr`, if possible. */ TFormatArgsExpr convertFormatArgsExprFromRaw(Raw::Element e) { result = TFormatArgsExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatArgument`, if possible. */ TFormatArgument convertFormatArgumentFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFormatTemplateVariableAccess`, if possible. */ TFormatTemplateVariableAccess convertFormatTemplateVariableAccessFromRaw(Raw::Element e) { @@ -1173,42 +1242,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunction`, if possible. */ TFunction convertFunctionFromRaw(Raw::Element e) { result = TFunction(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericArgList`, if possible. */ TGenericArgList convertGenericArgListFromRaw(Raw::Element e) { result = TGenericArgList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericParamList`, if possible. */ TGenericParamList convertGenericParamListFromRaw(Raw::Element e) { result = TGenericParamList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIdentPat`, if possible. */ TIdentPat convertIdentPatFromRaw(Raw::Element e) { result = TIdentPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfExpr`, if possible. */ TIfExpr convertIfExprFromRaw(Raw::Element e) { result = TIfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImpl`, if possible. */ TImpl convertImplFromRaw(Raw::Element e) { result = TImpl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImplTraitTypeRepr`, if possible. */ TImplTraitTypeRepr convertImplTraitTypeReprFromRaw(Raw::Element e) { @@ -1217,246 +1293,287 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIndexExpr`, if possible. */ TIndexExpr convertIndexExprFromRaw(Raw::Element e) { result = TIndexExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInferTypeRepr`, if possible. */ TInferTypeRepr convertInferTypeReprFromRaw(Raw::Element e) { result = TInferTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TItemList`, if possible. */ TItemList convertItemListFromRaw(Raw::Element e) { result = TItemList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLabel`, if possible. */ TLabel convertLabelFromRaw(Raw::Element e) { result = TLabel(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetElse`, if possible. */ TLetElse convertLetElseFromRaw(Raw::Element e) { result = TLetElse(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetExpr`, if possible. */ TLetExpr convertLetExprFromRaw(Raw::Element e) { result = TLetExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLetStmt`, if possible. */ TLetStmt convertLetStmtFromRaw(Raw::Element e) { result = TLetStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetime`, if possible. */ TLifetime convertLifetimeFromRaw(Raw::Element e) { result = TLifetime(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetimeArg`, if possible. */ TLifetimeArg convertLifetimeArgFromRaw(Raw::Element e) { result = TLifetimeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLifetimeParam`, if possible. */ TLifetimeParam convertLifetimeParamFromRaw(Raw::Element e) { result = TLifetimeParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLiteralExpr`, if possible. */ TLiteralExpr convertLiteralExprFromRaw(Raw::Element e) { result = TLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLiteralPat`, if possible. */ TLiteralPat convertLiteralPatFromRaw(Raw::Element e) { result = TLiteralPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLoopExpr`, if possible. */ TLoopExpr convertLoopExprFromRaw(Raw::Element e) { result = TLoopExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroBlockExpr`, if possible. */ TMacroBlockExpr convertMacroBlockExprFromRaw(Raw::Element e) { result = TMacroBlockExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroCall`, if possible. */ TMacroCall convertMacroCallFromRaw(Raw::Element e) { result = TMacroCall(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroDef`, if possible. */ TMacroDef convertMacroDefFromRaw(Raw::Element e) { result = TMacroDef(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroExpr`, if possible. */ TMacroExpr convertMacroExprFromRaw(Raw::Element e) { result = TMacroExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroItems`, if possible. */ TMacroItems convertMacroItemsFromRaw(Raw::Element e) { result = TMacroItems(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroPat`, if possible. */ TMacroPat convertMacroPatFromRaw(Raw::Element e) { result = TMacroPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroRules`, if possible. */ TMacroRules convertMacroRulesFromRaw(Raw::Element e) { result = TMacroRules(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroTypeRepr`, if possible. */ TMacroTypeRepr convertMacroTypeReprFromRaw(Raw::Element e) { result = TMacroTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchArm`, if possible. */ TMatchArm convertMatchArmFromRaw(Raw::Element e) { result = TMatchArm(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchArmList`, if possible. */ TMatchArmList convertMatchArmListFromRaw(Raw::Element e) { result = TMatchArmList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchExpr`, if possible. */ TMatchExpr convertMatchExprFromRaw(Raw::Element e) { result = TMatchExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMatchGuard`, if possible. */ TMatchGuard convertMatchGuardFromRaw(Raw::Element e) { result = TMatchGuard(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMeta`, if possible. */ TMeta convertMetaFromRaw(Raw::Element e) { result = TMeta(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMethodCallExpr`, if possible. */ TMethodCallExpr convertMethodCallExprFromRaw(Raw::Element e) { result = TMethodCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMissing`, if possible. */ TMissing convertMissingFromRaw(Raw::Element e) { result = TMissing(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModule`, if possible. */ TModule convertModuleFromRaw(Raw::Element e) { result = TModule(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TName`, if possible. */ TName convertNameFromRaw(Raw::Element e) { result = TName(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNameRef`, if possible. */ TNameRef convertNameRefFromRaw(Raw::Element e) { result = TNameRef(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedCrate`, if possible. */ TNamedCrate convertNamedCrateFromRaw(Raw::Element e) { result = TNamedCrate(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNeverTypeRepr`, if possible. */ TNeverTypeRepr convertNeverTypeReprFromRaw(Raw::Element e) { result = TNeverTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOffsetOfExpr`, if possible. */ TOffsetOfExpr convertOffsetOfExprFromRaw(Raw::Element e) { result = TOffsetOfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOrPat`, if possible. */ TOrPat convertOrPatFromRaw(Raw::Element e) { result = TOrPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParam`, if possible. */ TParam convertParamFromRaw(Raw::Element e) { result = TParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParamList`, if possible. */ TParamList convertParamListFromRaw(Raw::Element e) { result = TParamList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenExpr`, if possible. */ TParenExpr convertParenExprFromRaw(Raw::Element e) { result = TParenExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenPat`, if possible. */ TParenPat convertParenPatFromRaw(Raw::Element e) { result = TParenPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenTypeRepr`, if possible. */ TParenTypeRepr convertParenTypeReprFromRaw(Raw::Element e) { result = TParenTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenthesizedArgList`, if possible. */ TParenthesizedArgList convertParenthesizedArgListFromRaw(Raw::Element e) { @@ -1465,162 +1582,189 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPath`, if possible. */ TPath convertPathFromRaw(Raw::Element e) { result = TPath(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathExpr`, if possible. */ TPathExpr convertPathExprFromRaw(Raw::Element e) { result = TPathExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathPat`, if possible. */ TPathPat convertPathPatFromRaw(Raw::Element e) { result = TPathPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathSegment`, if possible. */ TPathSegment convertPathSegmentFromRaw(Raw::Element e) { result = TPathSegment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPathTypeRepr`, if possible. */ TPathTypeRepr convertPathTypeReprFromRaw(Raw::Element e) { result = TPathTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixExpr`, if possible. */ TPrefixExpr convertPrefixExprFromRaw(Raw::Element e) { result = TPrefixExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPtrTypeRepr`, if possible. */ TPtrTypeRepr convertPtrTypeReprFromRaw(Raw::Element e) { result = TPtrTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRangeExpr`, if possible. */ TRangeExpr convertRangeExprFromRaw(Raw::Element e) { result = TRangeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRangePat`, if possible. */ TRangePat convertRangePatFromRaw(Raw::Element e) { result = TRangePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefExpr`, if possible. */ TRefExpr convertRefExprFromRaw(Raw::Element e) { result = TRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefPat`, if possible. */ TRefPat convertRefPatFromRaw(Raw::Element e) { result = TRefPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRefTypeRepr`, if possible. */ TRefTypeRepr convertRefTypeReprFromRaw(Raw::Element e) { result = TRefTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRename`, if possible. */ TRename convertRenameFromRaw(Raw::Element e) { result = TRename(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRestPat`, if possible. */ TRestPat convertRestPatFromRaw(Raw::Element e) { result = TRestPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRetTypeRepr`, if possible. */ TRetTypeRepr convertRetTypeReprFromRaw(Raw::Element e) { result = TRetTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnExpr`, if possible. */ TReturnExpr convertReturnExprFromRaw(Raw::Element e) { result = TReturnExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnTypeSyntax`, if possible. */ TReturnTypeSyntax convertReturnTypeSyntaxFromRaw(Raw::Element e) { result = TReturnTypeSyntax(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSelfParam`, if possible. */ TSelfParam convertSelfParamFromRaw(Raw::Element e) { result = TSelfParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSlicePat`, if possible. */ TSlicePat convertSlicePatFromRaw(Raw::Element e) { result = TSlicePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSliceTypeRepr`, if possible. */ TSliceTypeRepr convertSliceTypeReprFromRaw(Raw::Element e) { result = TSliceTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSourceFile`, if possible. */ TSourceFile convertSourceFileFromRaw(Raw::Element e) { result = TSourceFile(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStatic`, if possible. */ TStatic convertStaticFromRaw(Raw::Element e) { result = TStatic(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStmtList`, if possible. */ TStmtList convertStmtListFromRaw(Raw::Element e) { result = TStmtList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStruct`, if possible. */ TStruct convertStructFromRaw(Raw::Element e) { result = TStruct(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExpr`, if possible. */ TStructExpr convertStructExprFromRaw(Raw::Element e) { result = TStructExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExprField`, if possible. */ TStructExprField convertStructExprFieldFromRaw(Raw::Element e) { result = TStructExprField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructExprFieldList`, if possible. */ TStructExprFieldList convertStructExprFieldListFromRaw(Raw::Element e) { @@ -1629,30 +1773,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructField`, if possible. */ TStructField convertStructFieldFromRaw(Raw::Element e) { result = TStructField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructFieldList`, if possible. */ TStructFieldList convertStructFieldListFromRaw(Raw::Element e) { result = TStructFieldList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPat`, if possible. */ TStructPat convertStructPatFromRaw(Raw::Element e) { result = TStructPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPatField`, if possible. */ TStructPatField convertStructPatFieldFromRaw(Raw::Element e) { result = TStructPatField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructPatFieldList`, if possible. */ TStructPatFieldList convertStructPatFieldListFromRaw(Raw::Element e) { @@ -1661,120 +1810,140 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTokenTree`, if possible. */ TTokenTree convertTokenTreeFromRaw(Raw::Element e) { result = TTokenTree(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTrait`, if possible. */ TTrait convertTraitFromRaw(Raw::Element e) { result = TTrait(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTraitAlias`, if possible. */ TTraitAlias convertTraitAliasFromRaw(Raw::Element e) { result = TTraitAlias(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTryExpr`, if possible. */ TTryExpr convertTryExprFromRaw(Raw::Element e) { result = TTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleExpr`, if possible. */ TTupleExpr convertTupleExprFromRaw(Raw::Element e) { result = TTupleExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleField`, if possible. */ TTupleField convertTupleFieldFromRaw(Raw::Element e) { result = TTupleField(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleFieldList`, if possible. */ TTupleFieldList convertTupleFieldListFromRaw(Raw::Element e) { result = TTupleFieldList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTuplePat`, if possible. */ TTuplePat convertTuplePatFromRaw(Raw::Element e) { result = TTuplePat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleStructPat`, if possible. */ TTupleStructPat convertTupleStructPatFromRaw(Raw::Element e) { result = TTupleStructPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleTypeRepr`, if possible. */ TTupleTypeRepr convertTupleTypeReprFromRaw(Raw::Element e) { result = TTupleTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAlias`, if possible. */ TTypeAlias convertTypeAliasFromRaw(Raw::Element e) { result = TTypeAlias(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeArg`, if possible. */ TTypeArg convertTypeArgFromRaw(Raw::Element e) { result = TTypeArg(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeBound`, if possible. */ TTypeBound convertTypeBoundFromRaw(Raw::Element e) { result = TTypeBound(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeBoundList`, if possible. */ TTypeBoundList convertTypeBoundListFromRaw(Raw::Element e) { result = TTypeBoundList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeParam`, if possible. */ TTypeParam convertTypeParamFromRaw(Raw::Element e) { result = TTypeParam(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnderscoreExpr`, if possible. */ TUnderscoreExpr convertUnderscoreExprFromRaw(Raw::Element e) { result = TUnderscoreExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnimplemented`, if possible. */ TUnimplemented convertUnimplementedFromRaw(Raw::Element e) { result = TUnimplemented(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnion`, if possible. */ TUnion convertUnionFromRaw(Raw::Element e) { result = TUnion(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUse`, if possible. */ TUse convertUseFromRaw(Raw::Element e) { result = TUse(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseBoundGenericArgs`, if possible. */ TUseBoundGenericArgs convertUseBoundGenericArgsFromRaw(Raw::Element e) { @@ -1783,66 +1952,77 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseTree`, if possible. */ TUseTree convertUseTreeFromRaw(Raw::Element e) { result = TUseTree(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUseTreeList`, if possible. */ TUseTreeList convertUseTreeListFromRaw(Raw::Element e) { result = TUseTreeList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariant`, if possible. */ TVariant convertVariantFromRaw(Raw::Element e) { result = TVariant(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariantList`, if possible. */ TVariantList convertVariantListFromRaw(Raw::Element e) { result = TVariantList(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVisibility`, if possible. */ TVisibility convertVisibilityFromRaw(Raw::Element e) { result = TVisibility(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhereClause`, if possible. */ TWhereClause convertWhereClauseFromRaw(Raw::Element e) { result = TWhereClause(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWherePred`, if possible. */ TWherePred convertWherePredFromRaw(Raw::Element e) { result = TWherePred(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhileExpr`, if possible. */ TWhileExpr convertWhileExprFromRaw(Raw::Element e) { result = TWhileExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWildcardPat`, if possible. */ TWildcardPat convertWildcardPatFromRaw(Raw::Element e) { result = TWildcardPat(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYeetExpr`, if possible. */ TYeetExpr convertYeetExprFromRaw(Raw::Element e) { result = TYeetExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYieldExpr`, if possible. */ TYieldExpr convertYieldExprFromRaw(Raw::Element e) { result = TYieldExpr(e) } From a8a799c919a49275dd1c5670710726c108b8bb16 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 9 Nov 2025 20:41:26 +0100 Subject: [PATCH 620/965] Swift: Run codegen --- swift/ql/.generated.list | 6 +- .../codeql/swift/generated/ParentChild.qll | 165 +- swift/ql/lib/codeql/swift/generated/Raw.qll | 3360 +++++++++++++++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 264 ++ 4 files changed, 3709 insertions(+), 86 deletions(-) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 1d3e3da7e3e..8d2fb9a2ebc 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -737,10 +737,10 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9 lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721 lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 -lib/codeql/swift/generated/ParentChild.qll 4d697f5372ad82380dc375a59fa0619ee56c7d88be58530147cd8e160262bbe3 e164b712a41f20d0b9986804cd753fb5e55ceb55139234d98bdb332a8f248db4 +lib/codeql/swift/generated/ParentChild.qll 7fdc133bdec6cc223d5ee85e757b02c5d2e1ab121bcf269bb48c8a12a31a61e9 d8dd6e21d290a293db4db510b1523a9ea428b12f48b7574f03acf00b9ca065ef lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 -lib/codeql/swift/generated/Raw.qll f7dd5c3eb1afba1077dd6c291502e2b5dd5d18000ee581f7e3ad4f0050165c69 f042929df4651dfe587769cd3f539d07f97328c2fe17fbe19cbb8e4fbefe97f2 -lib/codeql/swift/generated/Synth.qll 6af0f5778c6c6a9d9a518c00707501c3fdb3ccaa96fa06793549c2b1f28c9cbb 575829e7a2a4c7619c6d98f1b7ec47d978d0b3d77d5c1a87eae5e9f98612ef5b +lib/codeql/swift/generated/Raw.qll 6adc2ec210e91051b6d3d6c84117b827f10dbea682a18b69348d1c6cdc53629c 9ff02fcca7a7b83c85303ffc6daa00ea392da6ce1f9cb389b5053b34d4a45e4c +lib/codeql/swift/generated/Synth.qll b0084d1f573ba1b10ec8a8fab169b15f15866ecb9a6aeeeac81553a442be28e3 09efe455f3fd6b8b983b30efbd797f09af46e6f5a1a1075801650528999ed938 lib/codeql/swift/generated/SynthConstructors.qll c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 c40f01e1331bdbe238620a41d17409cefe34a6b23066708ef5d74f8631b54f48 lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 28b92e4902a..efed12bb5fe 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -45,7 +45,7 @@ private module Impl { ) { exists(int n, int nSpec | n = 0 and - nSpec = n + 1 + max(int i | i = -1 or exists(e.getSpec(i)) | i) and + nSpec = n + e.getNumberOfSpecs() and ( none() or @@ -66,7 +66,7 @@ private module Impl { ) { exists(int n, int nSubscriptArgument | n = 0 and - nSubscriptArgument = n + 1 + max(int i | i = -1 or exists(e.getSubscriptArgument(i)) | i) and + nSubscriptArgument = n + e.getNumberOfSubscriptArguments() and ( none() or @@ -100,7 +100,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -115,7 +115,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -130,8 +130,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -149,7 +149,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -162,7 +162,7 @@ private module Impl { private Element getImmediateChildOfImportDecl(ImportDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -177,7 +177,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -192,7 +192,7 @@ private module Impl { ) { exists(int n, int nMember, int nInit, int nPattern | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nInit = nMember + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and nPattern = nInit + 1 + max(int i | i = -1 or exists(e.getImmediatePattern(i)) | i) and ( @@ -215,7 +215,7 @@ private module Impl { ) { exists(int n, int nMember, int nMessage | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nMessage = nMember + 1 and ( none() @@ -233,7 +233,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -248,7 +248,7 @@ private module Impl { ) { exists(int n, int nMember, int nBody | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and nBody = nMember + 1 and ( none() @@ -264,7 +264,7 @@ private module Impl { private Element getImmediateChildOfUsingDecl(UsingDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -279,8 +279,8 @@ private module Impl { ) { exists(int n, int nMember, int nParam | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nParam = nMember + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nParam = nMember + e.getNumberOfParams() and ( none() or @@ -298,7 +298,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -311,8 +311,8 @@ private module Impl { private Element getImmediateChildOfMacroDecl(MacroDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -330,7 +330,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -345,7 +345,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -362,12 +362,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -397,12 +397,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -428,7 +428,7 @@ private module Impl { private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -443,11 +443,10 @@ private module Impl { ) { exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and - nGenericTypeParam = - nAccessor + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nParam = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nGenericTypeParam = nAccessor + e.getNumberOfGenericTypeParams() and + nParam = nGenericTypeParam + e.getNumberOfParams() and ( none() or @@ -471,12 +470,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -504,7 +503,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -523,8 +522,8 @@ private module Impl { int nPropertyWrapperProjectionVar | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and @@ -562,7 +561,7 @@ private module Impl { ) { exists(int n, int nMember | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMember = n + e.getNumberOfMembers() and ( none() or @@ -579,12 +578,12 @@ private module Impl { int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and nSelfParam = nMember + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -612,8 +611,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -634,8 +633,8 @@ private module Impl { int nPropertyWrapperLocalWrappedVar | n = 0 and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and @@ -683,8 +682,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -700,8 +699,8 @@ private module Impl { private Element getImmediateChildOfClassDecl(ClassDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -717,8 +716,8 @@ private module Impl { private Element getImmediateChildOfEnumDecl(EnumDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -736,8 +735,8 @@ private module Impl { ) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -753,8 +752,8 @@ private module Impl { private Element getImmediateChildOfStructDecl(StructDecl e, int index, string partialPredicateCall) { exists(int n, int nGenericTypeParam, int nMember | n = 0 and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and ( none() or @@ -827,8 +826,8 @@ private module Impl { ) { exists(int n, int nBindingDecl, int nVariable, int nClosureBody | n = 0 and - nBindingDecl = n + 1 + max(int i | i = -1 or exists(e.getBindingDecl(i)) | i) and - nVariable = nBindingDecl + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nBindingDecl = n + e.getNumberOfBindingDecls() and + nVariable = nBindingDecl + e.getNumberOfVariables() and nClosureBody = nVariable + 1 and ( none() @@ -1040,7 +1039,7 @@ private module Impl { exists(int n, int nRoot, int nComponent | n = 0 and nRoot = n + 1 and - nComponent = nRoot + 1 + max(int i | i = -1 or exists(e.getComponent(i)) | i) and + nComponent = nRoot + e.getNumberOfComponents() and ( none() or @@ -1493,9 +1492,9 @@ private module Impl { exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -1528,7 +1527,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -1584,7 +1583,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -1797,9 +1796,9 @@ private module Impl { exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | n = 0 and nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nParam = nSelfParam + e.getNumberOfParams() and nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and + nCapture = nBody + e.getNumberOfCaptures() and ( none() or @@ -2014,7 +2013,7 @@ private module Impl { ) { exists(int n, int nArgument | n = 0 and - nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = n + e.getNumberOfArguments() and ( none() or @@ -2070,7 +2069,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2088,7 +2087,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2140,7 +2139,7 @@ private module Impl { exists(int n, int nBase, int nArgument | n = 0 and nBase = n + 1 and - nArgument = nBase + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nBase + e.getNumberOfArguments() and ( none() or @@ -2286,7 +2285,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2346,7 +2345,7 @@ private module Impl { exists(int n, int nFunction, int nArgument | n = 0 and nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + nArgument = nFunction + e.getNumberOfArguments() and ( none() or @@ -2578,7 +2577,7 @@ private module Impl { ) { exists(int n, int nElement | n = 0 and - nElement = n + 1 + max(int i | i = -1 or exists(e.getElement(i)) | i) and + nElement = n + e.getNumberOfElements() and ( none() or @@ -2591,7 +2590,7 @@ private module Impl { private Element getImmediateChildOfBraceStmt(BraceStmt e, int index, string partialPredicateCall) { exists(int n, int nVariable, int nElement | n = 0 and - nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nVariable = n + e.getNumberOfVariables() and nElement = nVariable + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() @@ -2612,8 +2611,8 @@ private module Impl { private Element getImmediateChildOfCaseStmt(CaseStmt e, int index, string partialPredicateCall) { exists(int n, int nLabel, int nVariable, int nBody | n = 0 and - nLabel = n + 1 + max(int i | i = -1 or exists(e.getLabel(i)) | i) and - nVariable = nLabel + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nLabel = n + e.getNumberOfLabels() and + nVariable = nLabel + e.getNumberOfVariables() and nBody = nVariable + 1 and ( none() @@ -2732,7 +2731,7 @@ private module Impl { exists(int n, int nBody, int nCatch | n = 0 and nBody = n + 1 and - nCatch = nBody + 1 + max(int i | i = -1 or exists(e.getCatch(i)) | i) and + nCatch = nBody + e.getNumberOfCatches() and ( none() or @@ -2763,7 +2762,7 @@ private module Impl { int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody | n = 0 and - nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and + nVariable = n + e.getNumberOfVariables() and nPattern = nVariable + 1 and nWhere = nPattern + 1 and nIteratorVar = nWhere + 1 and @@ -2813,7 +2812,7 @@ private module Impl { exists(int n, int nExpr, int nCase | n = 0 and nExpr = n + 1 and - nCase = nExpr + 1 + max(int i | i = -1 or exists(e.getCase(i)) | i) and + nCase = nExpr + e.getNumberOfCases() and ( none() or diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 39bc6ac7373..714579218bc 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -87,6 +87,8 @@ module Raw { string getText() { comments(this, result) } } + private Element getImmediateChildOfComment(Comment e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -94,6 +96,8 @@ module Raw { override string toString() { result = "DbFile" } } + private Element getImmediateChildOfDbFile(DbFile e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -101,6 +105,8 @@ module Raw { override string toString() { result = "DbLocation" } } + private Element getImmediateChildOfDbLocation(DbLocation e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -118,6 +124,8 @@ module Raw { int getKind() { diagnostics(this, _, result) } } + private Element getImmediateChildOfDiagnostics(Diagnostics e, int index) { none() } + /** * INTERNAL: Do not use. * The superclass of all elements indicating some kind of error. @@ -152,6 +160,23 @@ module Raw { * Gets the `index`th spec of this availability info (0-based). */ AvailabilitySpec getSpec(int index) { availability_info_specs(this, index, result) } + + /** + * Gets the number of specs of this availability info. + */ + int getNumberOfSpecs() { result = count(int i | availability_info_specs(this, i, _)) } + } + + private Element getImmediateChildOfAvailabilityInfo(AvailabilityInfo e, int index) { + exists(int n, int nSpec | + n = 0 and + nSpec = n + e.getNumberOfSpecs() and + ( + none() + or + result = e.getSpec(index - n) + ) + ) } /** @@ -180,6 +205,8 @@ module Raw { predicate isWildcard() { availability_spec_is_wildcard(this) } } + private Element getImmediateChildOfAvailabilitySpec(AvailabilitySpec e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -201,6 +228,11 @@ module Raw { */ ParamDecl getParam(int index) { callable_params(this, index, result) } + /** + * Gets the number of parameters of this callable. + */ + int getNumberOfParams() { result = count(int i | callable_params(this, i, _)) } + /** * Gets the body of this callable, if it exists. * @@ -212,6 +244,11 @@ module Raw { * Gets the `index`th capture of this callable (0-based). */ CapturedDecl getCapture(int index) { callable_captures(this, index, result) } + + /** + * Gets the number of captures of this callable. + */ + int getNumberOfCaptures() { result = count(int i | callable_captures(this, i, _)) } } /** @@ -243,6 +280,13 @@ module Raw { key_path_component_subscript_arguments(this, index, result) } + /** + * Gets the number of arguments to an array or dictionary subscript expression. + */ + int getNumberOfSubscriptArguments() { + result = count(int i | key_path_component_subscript_arguments(this, i, _)) + } + /** * Gets the tuple index of this key path component, if it exists. */ @@ -263,6 +307,18 @@ module Raw { Type getComponentType() { key_path_components(this, _, result) } } + private Element getImmediateChildOfKeyPathComponent(KeyPathComponent e, int index) { + exists(int n, int nSubscriptArgument | + n = 0 and + nSubscriptArgument = n + e.getNumberOfSubscriptArguments() and + ( + none() + or + result = e.getSubscriptArgument(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * The role of a macro, for example #freestanding(declaration) or @attached(member). @@ -285,12 +341,24 @@ module Raw { */ Expr getConformance(int index) { macro_role_conformances(this, index, result) } + /** + * Gets the number of conformances of this macro role. + */ + int getNumberOfConformances() { result = count(int i | macro_role_conformances(this, i, _)) } + /** * Gets the `index`th name of this macro role (0-based). */ string getName(int index) { macro_role_names(this, index, result) } + + /** + * Gets the number of names of this macro role. + */ + int getNumberOfNames() { result = count(int i | macro_role_names(this, i, _)) } } + private Element getImmediateChildOfMacroRole(MacroRole e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -323,6 +391,23 @@ module Raw { * These will be present only in certain downgraded databases. */ AstNode getChild(int index) { unspecified_element_children(this, index, result) } + + /** + * Gets the number of children of this unspecified element. + */ + int getNumberOfChildren() { result = count(int i | unspecified_element_children(this, i, _)) } + } + + private Element getImmediateChildOfUnspecifiedElement(UnspecifiedElement e, int index) { + exists(int n, int nChild | + n = 0 and + nChild = n + e.getNumberOfChildren() and + ( + none() + or + result = e.getChild(index - n) + ) + ) } /** @@ -342,6 +427,11 @@ module Raw { * align with expectations, and could change in future releases. */ Decl getMember(int index) { decl_members(this, index, result) } + + /** + * Gets the number of members of this declaration. + */ + int getNumberOfMembers() { result = count(int i | decl_members(this, i, _)) } } /** @@ -354,6 +444,13 @@ module Raw { GenericTypeParamDecl getGenericTypeParam(int index) { generic_context_generic_type_params(this, index, result) } + + /** + * Gets the number of generic type parameters of this generic context. + */ + int getNumberOfGenericTypeParams() { + result = count(int i | generic_context_generic_type_params(this, i, _)) + } } /** @@ -378,6 +475,18 @@ module Raw { predicate isEscaping() { captured_decl_is_escaping(this) } } + private Element getImmediateChildOfCapturedDecl(CapturedDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -388,6 +497,23 @@ module Raw { * Gets the `index`th element of this enum case declaration (0-based). */ EnumElementDecl getElement(int index) { enum_case_decl_elements(this, index, result) } + + /** + * Gets the number of elements of this enum case declaration. + */ + int getNumberOfElements() { result = count(int i | enum_case_decl_elements(this, i, _)) } + } + + private Element getImmediateChildOfEnumCaseDecl(EnumCaseDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -405,6 +531,26 @@ module Raw { * Gets the `index`th protocol of this extension declaration (0-based). */ ProtocolDecl getProtocol(int index) { extension_decl_protocols(this, index, result) } + + /** + * Gets the number of protocols of this extension declaration. + */ + int getNumberOfProtocols() { result = count(int i | extension_decl_protocols(this, i, _)) } + } + + private Element getImmediateChildOfExtensionDecl(ExtensionDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -417,6 +563,25 @@ module Raw { * Gets the `index`th active element of this if config declaration (0-based). */ AstNode getActiveElement(int index) { if_config_decl_active_elements(this, index, result) } + + /** + * Gets the number of active elements of this if config declaration. + */ + int getNumberOfActiveElements() { + result = count(int i | if_config_decl_active_elements(this, i, _)) + } + } + + private Element getImmediateChildOfIfConfigDecl(IfConfigDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -439,6 +604,23 @@ module Raw { * Gets the `index`th declaration of this import declaration (0-based). */ ValueDecl getDeclaration(int index) { import_decl_declarations(this, index, result) } + + /** + * Gets the number of declarations of this import declaration. + */ + int getNumberOfDeclarations() { result = count(int i | import_decl_declarations(this, i, _)) } + } + + private Element getImmediateChildOfImportDecl(ImportDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) } /** @@ -454,6 +636,18 @@ module Raw { string getName() { missing_member_decls(this, result) } } + private Element getImmediateChildOfMissingMemberDecl(MissingMemberDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -475,10 +669,38 @@ module Raw { */ Expr getInit(int index) { pattern_binding_decl_inits(this, index, result) } + /** + * Gets the number of inits of this pattern binding declaration. + */ + int getNumberOfInits() { result = count(int i | pattern_binding_decl_inits(this, i, _)) } + /** * Gets the `index`th pattern of this pattern binding declaration (0-based). */ Pattern getPattern(int index) { pattern_binding_decl_patterns(this, index, result) } + + /** + * Gets the number of patterns of this pattern binding declaration. + */ + int getNumberOfPatterns() { result = count(int i | pattern_binding_decl_patterns(this, i, _)) } + } + + private Element getImmediateChildOfPatternBindingDecl(PatternBindingDecl e, int index) { + exists(int n, int nMember, int nInit, int nPattern | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nInit = nMember + e.getNumberOfInits() and + nPattern = nInit + e.getNumberOfPatterns() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getInit(index - nMember) + or + result = e.getPattern(index - nInit) + ) + ) } /** @@ -501,6 +723,21 @@ module Raw { StringLiteralExpr getMessage() { pound_diagnostic_decls(this, _, result) } } + private Element getImmediateChildOfPoundDiagnosticDecl(PoundDiagnosticDecl e, int index) { + exists(int n, int nMember, int nMessage | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nMessage = nMember + 1 and + ( + none() + or + result = e.getMember(index - n) + or + index = nMember and result = e.getMessage() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -508,6 +745,18 @@ module Raw { override string toString() { result = "PrecedenceGroupDecl" } } + private Element getImmediateChildOfPrecedenceGroupDecl(PrecedenceGroupDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -520,6 +769,21 @@ module Raw { BraceStmt getBody() { top_level_code_decls(this, result) } } + private Element getImmediateChildOfTopLevelCodeDecl(TopLevelCodeDecl e, int index) { + exists(int n, int nMember, int nBody | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nBody = nMember + 1 and + ( + none() + or + result = e.getMember(index - n) + or + index = nMember and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -537,6 +801,18 @@ module Raw { predicate isNonisolated() { using_decl_is_nonisolated(this) } } + private Element getImmediateChildOfUsingDecl(UsingDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -555,6 +831,13 @@ module Raw { * Gets the `index`th accessor of this abstract storage declaration (0-based). */ Accessor getAccessor(int index) { abstract_storage_decl_accessors(this, index, result) } + + /** + * Gets the number of accessors of this abstract storage declaration. + */ + int getNumberOfAccessors() { + result = count(int i | abstract_storage_decl_accessors(this, i, _)) + } } /** @@ -572,6 +855,26 @@ module Raw { * Gets the `index`th parameter of this enum element declaration (0-based). */ ParamDecl getParam(int index) { enum_element_decl_params(this, index, result) } + + /** + * Gets the number of parameters of this enum element declaration. + */ + int getNumberOfParams() { result = count(int i | enum_element_decl_params(this, i, _)) } + } + + private Element getImmediateChildOfEnumElementDecl(EnumElementDecl e, int index) { + exists(int n, int nMember, int nParam | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nParam = nMember + e.getNumberOfParams() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getParam(index - nMember) + ) + ) } /** @@ -591,6 +894,18 @@ module Raw { PrecedenceGroupDecl getPrecedenceGroup() { infix_operator_decl_precedence_groups(this, result) } } + private Element getImmediateChildOfInfixOperatorDecl(InfixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a macro. Some examples: @@ -617,10 +932,35 @@ module Raw { */ ParamDecl getParameter(int index) { macro_decl_parameters(this, index, result) } + /** + * Gets the number of parameters of this macro. + */ + int getNumberOfParameters() { result = count(int i | macro_decl_parameters(this, i, _)) } + /** * Gets the `index`th role of this macro (0-based). */ MacroRole getRole(int index) { macro_decl_roles(this, index, result) } + + /** + * Gets the number of roles of this macro. + */ + int getNumberOfRoles() { result = count(int i | macro_decl_roles(this, i, _)) } + } + + private Element getImmediateChildOfMacroDecl(MacroDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -630,6 +970,18 @@ module Raw { override string toString() { result = "PostfixOperatorDecl" } } + private Element getImmediateChildOfPostfixOperatorDecl(PostfixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -637,6 +989,18 @@ module Raw { override string toString() { result = "PrefixOperatorDecl" } } + private Element getImmediateChildOfPrefixOperatorDecl(PrefixOperatorDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -653,6 +1017,13 @@ module Raw { * will not resolve `TypeAliasDecl`s or consider base types added by extensions. */ Type getInheritedType(int index) { type_decl_inherited_types(this, index, result) } + + /** + * Gets the number of inherited types of this type declaration. + */ + int getNumberOfInheritedTypes() { + result = count(int i | type_decl_inherited_types(this, i, _)) + } } /** @@ -672,6 +1043,35 @@ module Raw { override string toString() { result = "Deinitializer" } } + private Element getImmediateChildOfDeinitializer(Deinitializer e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -684,6 +1084,35 @@ module Raw { override string toString() { result = "Initializer" } } + private Element getImmediateChildOfInitializer(Initializer e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -713,6 +1142,18 @@ module Raw { ModuleDecl getAnExportedModule() { module_decl_exported_modules(this, result) } } + private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -724,12 +1165,38 @@ module Raw { */ ParamDecl getParam(int index) { subscript_decl_params(this, index, result) } + /** + * Gets the number of parameters of this subscript declaration. + */ + int getNumberOfParams() { result = count(int i | subscript_decl_params(this, i, _)) } + /** * Gets the element type of this subscript declaration. */ Type getElementType() { subscript_decls(this, result) } } + private Element getImmediateChildOfSubscriptDecl(SubscriptDecl e, int index) { + exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nGenericTypeParam = nAccessor + e.getNumberOfGenericTypeParams() and + nParam = nGenericTypeParam + e.getNumberOfParams() and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + result = e.getGenericTypeParam(index - nAccessor) + or + result = e.getParam(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a variable such as @@ -913,6 +1380,35 @@ module Raw { predicate isInit() { accessor_is_init(this) } } + private Element getImmediateChildOfAccessor(Accessor e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -920,6 +1416,18 @@ module Raw { override string toString() { result = "AssociatedTypeDecl" } } + private Element getImmediateChildOfAssociatedTypeDecl(AssociatedTypeDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -934,6 +1442,38 @@ module Raw { int getIntroducerInt() { concrete_var_decls(this, result) } } + private Element getImmediateChildOfConcreteVarDecl(ConcreteVarDecl e, int index) { + exists( + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar + | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() + or + index = nPropertyWrapperBackingVarBinding and result = e.getPropertyWrapperBackingVar() + or + index = nPropertyWrapperBackingVar and result = e.getPropertyWrapperProjectionVarBinding() + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -941,6 +1481,18 @@ module Raw { override string toString() { result = "GenericTypeParamDecl" } } + private Element getImmediateChildOfGenericTypeParamDecl(GenericTypeParamDecl e, int index) { + exists(int n, int nMember | + n = 0 and + nMember = n + e.getNumberOfMembers() and + ( + none() + or + result = e.getMember(index - n) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -948,6 +1500,35 @@ module Raw { override string toString() { result = "NamedFunction" } } + private Element getImmediateChildOfNamedFunction(NamedFunction e, int index) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + nSelfParam = nMember + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + or + index = nMember and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -984,6 +1565,28 @@ module Raw { GenericTypeParamType getOpaqueGenericParam(int index) { opaque_type_decl_opaque_generic_params(this, index, result) } + + /** + * Gets the number of opaque generic parameters of this opaque type declaration. + */ + int getNumberOfOpaqueGenericParams() { + result = count(int i | opaque_type_decl_opaque_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfOpaqueTypeDecl(OpaqueTypeDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) } /** @@ -1018,6 +1621,47 @@ module Raw { } } + private Element getImmediateChildOfParamDecl(ParamDecl e, int index) { + exists( + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar, int nPropertyWrapperLocalWrappedVarBinding, + int nPropertyWrapperLocalWrappedVar + | + n = 0 and + nMember = n + e.getNumberOfMembers() and + nAccessor = nMember + e.getNumberOfAccessors() and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + nPropertyWrapperLocalWrappedVarBinding = nPropertyWrapperProjectionVar + 1 and + nPropertyWrapperLocalWrappedVar = nPropertyWrapperLocalWrappedVarBinding + 1 and + ( + none() + or + result = e.getMember(index - n) + or + result = e.getAccessor(index - nMember) + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() + or + index = nPropertyWrapperBackingVarBinding and result = e.getPropertyWrapperBackingVar() + or + index = nPropertyWrapperBackingVar and result = e.getPropertyWrapperProjectionVarBinding() + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() + or + index = nPropertyWrapperProjectionVar and + result = e.getPropertyWrapperLocalWrappedVarBinding() + or + index = nPropertyWrapperLocalWrappedVarBinding and + result = e.getPropertyWrapperLocalWrappedVar() + ) + ) + } + /** * INTERNAL: Do not use. * A declaration of a type alias to another type. For example: @@ -1039,6 +1683,21 @@ module Raw { Type getAliasedType() { type_alias_decls(this, result) } } + private Element getImmediateChildOfTypeAliasDecl(TypeAliasDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1046,6 +1705,21 @@ module Raw { override string toString() { result = "ClassDecl" } } + private Element getImmediateChildOfClassDecl(ClassDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1053,6 +1727,21 @@ module Raw { override string toString() { result = "EnumDecl" } } + private Element getImmediateChildOfEnumDecl(EnumDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1060,6 +1749,21 @@ module Raw { override string toString() { result = "ProtocolDecl" } } + private Element getImmediateChildOfProtocolDecl(ProtocolDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1067,6 +1771,21 @@ module Raw { override string toString() { result = "StructDecl" } } + private Element getImmediateChildOfStructDecl(StructDecl e, int index) { + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + e.getNumberOfGenericTypeParams() and + nMember = nGenericTypeParam + e.getNumberOfMembers() and + ( + none() + or + result = e.getGenericTypeParam(index - n) + or + result = e.getMember(index - nGenericTypeParam) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1084,6 +1803,18 @@ module Raw { Expr getExpr() { arguments(this, _, result) } } + private Element getImmediateChildOfArgument(Argument e, int index) { + exists(int n, int nExpr | + n = 0 and + nExpr = n + 1 and + ( + none() + or + index = n and result = e.getExpr() + ) + ) + } + /** * INTERNAL: Do not use. * The base class for all expressions in Swift. @@ -1132,6 +1863,20 @@ module Raw { ParamDecl getParam() { applied_property_wrapper_exprs(this, _, _, result) } } + private Element getImmediateChildOfAppliedPropertyWrapperExpr( + AppliedPropertyWrapperExpr e, int index + ) { + exists(int n, int nValue | + n = 0 and + nValue = n + 1 and + ( + none() + or + index = n and result = e.getValue() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1145,6 +1890,11 @@ module Raw { * Gets the `index`th argument passed to the applied function (0-based). */ Argument getArgument(int index) { apply_expr_arguments(this, index, result) } + + /** + * Gets the number of arguments passed to the applied function. + */ + int getNumberOfArguments() { result = count(int i | apply_expr_arguments(this, i, _)) } } /** @@ -1164,6 +1914,21 @@ module Raw { Expr getSource() { assign_exprs(this, _, result) } } + private Element getImmediateChildOfAssignExpr(AssignExpr e, int index) { + exists(int n, int nDest, int nSource | + n = 0 and + nDest = n + 1 and + nSource = nDest + 1 and + ( + none() + or + index = n and result = e.getDest() + or + index = nDest and result = e.getSource() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1176,6 +1941,18 @@ module Raw { Expr getSubExpr() { bind_optional_exprs(this, result) } } + private Element getImmediateChildOfBindOptionalExpr(BindOptionalExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1189,12 +1966,35 @@ module Raw { capture_list_expr_binding_decls(this, index, result) } + /** + * Gets the number of binding declarations of this capture list expression. + */ + int getNumberOfBindingDecls() { + result = count(int i | capture_list_expr_binding_decls(this, i, _)) + } + /** * Gets the closure body of this capture list expression. */ ClosureExpr getClosureBody() { capture_list_exprs(this, result) } } + private Element getImmediateChildOfCaptureListExpr(CaptureListExpr e, int index) { + exists(int n, int nBindingDecl, int nVariable, int nClosureBody | + n = 0 and + nBindingDecl = n + e.getNumberOfBindingDecls() and + nVariable = nBindingDecl and + nClosureBody = nVariable + 1 and + ( + none() + or + result = e.getBindingDecl(index - n) + or + index = nVariable and result = e.getClosureBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1223,6 +2023,18 @@ module Raw { Expr getSubExpr() { consume_exprs(this, result) } } + private Element getImmediateChildOfConsumeExpr(ConsumeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that forces value to be copied. In the example below, `copy` marks the copy expression: @@ -1241,6 +2053,18 @@ module Raw { Expr getSubExpr() { copy_exprs(this, result) } } + private Element getImmediateChildOfCopyExpr(CopyExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that extracts the actor isolation of the current context, of type `(any Actor)?`. @@ -1256,6 +2080,12 @@ module Raw { Expr getActor() { current_context_isolation_exprs(this, result) } } + private Element getImmediateChildOfCurrentContextIsolationExpr( + CurrentContextIsolationExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1272,6 +2102,13 @@ module Raw { */ Type getReplacementType(int index) { decl_ref_expr_replacement_types(this, index, result) } + /** + * Gets the number of replacement types of this declaration reference expression. + */ + int getNumberOfReplacementTypes() { + result = count(int i | decl_ref_expr_replacement_types(this, i, _)) + } + /** * Holds if this declaration reference expression has direct to storage semantics. */ @@ -1295,6 +2132,8 @@ module Raw { predicate hasDistributedThunkSemantics() { decl_ref_expr_has_distributed_thunk_semantics(this) } } + private Element getImmediateChildOfDeclRefExpr(DeclRefExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1317,6 +2156,10 @@ module Raw { Expr getCallerSideDefault() { default_argument_expr_caller_side_defaults(this, result) } } + private Element getImmediateChildOfDefaultArgumentExpr(DefaultArgumentExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1324,6 +2167,10 @@ module Raw { override string toString() { result = "DiscardAssignmentExpr" } } + private Element getImmediateChildOfDiscardAssignmentExpr(DiscardAssignmentExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1341,6 +2188,21 @@ module Raw { Expr getSubExpr() { dot_syntax_base_ignored_exprs(this, _, result) } } + private Element getImmediateChildOfDotSyntaxBaseIgnoredExpr(DotSyntaxBaseIgnoredExpr e, int index) { + exists(int n, int nQualifier, int nSubExpr | + n = 0 and + nQualifier = n + 1 and + nSubExpr = nQualifier + 1 and + ( + none() + or + index = n and result = e.getQualifier() + or + index = nQualifier and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1353,6 +2215,18 @@ module Raw { Expr getBase() { dynamic_type_exprs(this, result) } } + private Element getImmediateChildOfDynamicTypeExpr(DynamicTypeExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1370,6 +2244,18 @@ module Raw { EnumElementDecl getElement() { enum_is_case_exprs(this, _, result) } } + private Element getImmediateChildOfEnumIsCaseExpr(EnumIsCaseExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1377,6 +2263,8 @@ module Raw { override string toString() { result = "ErrorExpr" } } + private Element getImmediateChildOfErrorExpr(ErrorExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1408,6 +2296,20 @@ module Raw { Expr getFunctionExpr() { extract_function_isolation_exprs(this, result) } } + private Element getImmediateChildOfExtractFunctionIsolationExpr( + ExtractFunctionIsolationExpr e, int index + ) { + exists(int n, int nFunctionExpr | + n = 0 and + nFunctionExpr = n + 1 and + ( + none() + or + index = n and result = e.getFunctionExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1420,6 +2322,18 @@ module Raw { Expr getSubExpr() { force_value_exprs(this, result) } } + private Element getImmediateChildOfForceValueExpr(ForceValueExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1452,6 +2366,24 @@ module Raw { Expr getElseExpr() { if_exprs(this, _, _, result) } } + private Element getImmediateChildOfIfExpr(IfExpr e, int index) { + exists(int n, int nCondition, int nThenExpr, int nElseExpr | + n = 0 and + nCondition = n + 1 and + nThenExpr = nCondition + 1 and + nElseExpr = nThenExpr + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getThenExpr() + or + index = nThenExpr and result = e.getElseExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1474,6 +2406,18 @@ module Raw { Expr getSubExpr() { in_out_exprs(this, result) } } + private Element getImmediateChildOfInOutExpr(InOutExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1491,6 +2435,21 @@ module Raw { Expr getKeyPath() { key_path_application_exprs(this, _, result) } } + private Element getImmediateChildOfKeyPathApplicationExpr(KeyPathApplicationExpr e, int index) { + exists(int n, int nBase, int nKeyPath | + n = 0 and + nBase = n + 1 and + nKeyPath = nBase + 1 and + ( + none() + or + index = n and result = e.getBase() + or + index = nBase and result = e.getKeyPath() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1498,6 +2457,8 @@ module Raw { override string toString() { result = "KeyPathDotExpr" } } + private Element getImmediateChildOfKeyPathDotExpr(KeyPathDotExpr e, int index) { none() } + /** * INTERNAL: Do not use. * A key-path expression. @@ -1514,6 +2475,26 @@ module Raw { * Gets the `index`th component of this key path expression (0-based). */ KeyPathComponent getComponent(int index) { key_path_expr_components(this, index, result) } + + /** + * Gets the number of components of this key path expression. + */ + int getNumberOfComponents() { result = count(int i | key_path_expr_components(this, i, _)) } + } + + private Element getImmediateChildOfKeyPathExpr(KeyPathExpr e, int index) { + exists(int n, int nRoot, int nComponent | + n = 0 and + nRoot = n + 1 and + nComponent = nRoot + e.getNumberOfComponents() and + ( + none() + or + index = n and result = e.getRoot() + or + result = e.getComponent(index - nRoot) + ) + ) } /** @@ -1528,6 +2509,18 @@ module Raw { Expr getSubExpr() { lazy_initialization_exprs(this, result) } } + private Element getImmediateChildOfLazyInitializationExpr(LazyInitializationExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1570,6 +2563,26 @@ module Raw { Expr getSubExpr() { make_temporarily_escapable_exprs(this, _, _, result) } } + private Element getImmediateChildOfMakeTemporarilyEscapableExpr( + MakeTemporarilyEscapableExpr e, int index + ) { + exists(int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | + n = 0 and + nEscapingClosure = n + 1 and + nNonescapingClosure = nEscapingClosure + 1 and + nSubExpr = nNonescapingClosure + 1 and + ( + none() + or + index = n and result = e.getEscapingClosure() + or + index = nEscapingClosure and result = e.getNonescapingClosure() + or + index = nNonescapingClosure and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * An expression that materializes a pack during expansion. Appears around PackExpansionExpr. @@ -1586,6 +2599,18 @@ module Raw { Expr getSubExpr() { materialize_pack_exprs(this, result) } } + private Element getImmediateChildOfMaterializePackExpr(MaterializePackExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1603,6 +2628,18 @@ module Raw { Function getMethod() { obj_c_selector_exprs(this, _, result) } } + private Element getImmediateChildOfObjCSelectorExpr(ObjCSelectorExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1615,6 +2652,18 @@ module Raw { Expr getSubExpr() { one_way_exprs(this, result) } } + private Element getImmediateChildOfOneWayExpr(OneWayExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1622,6 +2671,8 @@ module Raw { override string toString() { result = "OpaqueValueExpr" } } + private Element getImmediateChildOfOpaqueValueExpr(OpaqueValueExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An implicit expression created by the compiler when a method is called on a protocol. For example in @@ -1657,6 +2708,21 @@ module Raw { OpaqueValueExpr getOpaqueExpr() { open_existential_exprs(this, _, _, result) } } + private Element getImmediateChildOfOpenExistentialExpr(OpenExistentialExpr e, int index) { + exists(int n, int nSubExpr, int nExistential | + n = 0 and + nSubExpr = n + 1 and + nExistential = nSubExpr + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + or + index = nSubExpr and result = e.getExistential() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1669,6 +2735,18 @@ module Raw { Expr getSubExpr() { optional_evaluation_exprs(this, result) } } + private Element getImmediateChildOfOptionalEvaluationExpr(OptionalEvaluationExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1681,6 +2759,10 @@ module Raw { Initializer getInitializer() { other_initializer_ref_exprs(this, result) } } + private Element getImmediateChildOfOtherInitializerRefExpr(OtherInitializerRefExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. * An ambiguous expression that might refer to multiple declarations. This will be present only @@ -1695,6 +2777,17 @@ module Raw { ValueDecl getPossibleDeclaration(int index) { overloaded_decl_ref_expr_possible_declarations(this, index, result) } + + /** + * Gets the number of possible declarations of this overloaded declaration reference expression. + */ + int getNumberOfPossibleDeclarations() { + result = count(int i | overloaded_decl_ref_expr_possible_declarations(this, i, _)) + } + } + + private Element getImmediateChildOfOverloadedDeclRefExpr(OverloadedDeclRefExpr e, int index) { + none() } /** @@ -1720,6 +2813,18 @@ module Raw { Expr getSubExpr() { pack_element_exprs(this, result) } } + private Element getImmediateChildOfPackElementExpr(PackElementExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A pack expansion expression. @@ -1743,6 +2848,18 @@ module Raw { Expr getPatternExpr() { pack_expansion_exprs(this, result) } } + private Element getImmediateChildOfPackExpansionExpr(PackExpansionExpr e, int index) { + exists(int n, int nPatternExpr | + n = 0 and + nPatternExpr = n + 1 and + ( + none() + or + index = n and result = e.getPatternExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A placeholder substituting property initializations with `=` when the property has a property @@ -1762,6 +2879,12 @@ module Raw { OpaqueValueExpr getPlaceholder() { property_wrapper_value_placeholder_exprs(this, result) } } + private Element getImmediateChildOfPropertyWrapperValuePlaceholderExpr( + PropertyWrapperValuePlaceholderExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1779,6 +2902,20 @@ module Raw { VarDecl getSelf() { rebind_self_in_initializer_exprs(this, _, result) } } + private Element getImmediateChildOfRebindSelfInInitializerExpr( + RebindSelfInInitializerExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1789,6 +2926,23 @@ module Raw { * Gets the `index`th element of this sequence expression (0-based). */ Expr getElement(int index) { sequence_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this sequence expression. + */ + int getNumberOfElements() { result = count(int i | sequence_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfSequenceExpr(SequenceExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -1804,6 +2958,18 @@ module Raw { Stmt getStmt() { single_value_stmt_exprs(this, result) } } + private Element getImmediateChildOfSingleValueStmtExpr(SingleValueStmtExpr e, int index) { + exists(int n, int nStmt | + n = 0 and + nStmt = n + 1 and + ( + none() + or + index = n and result = e.getStmt() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1816,6 +2982,8 @@ module Raw { VarDecl getSelf() { super_ref_exprs(this, result) } } + private Element getImmediateChildOfSuperRefExpr(SuperRefExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -1838,6 +3006,21 @@ module Raw { VarDecl getVar() { tap_exprs(this, _, result) } } + private Element getImmediateChildOfTapExpr(TapExpr e, int index) { + exists(int n, int nSubExpr, int nBody | + n = 0 and + nSubExpr = n + 1 and + nBody = nSubExpr + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + or + index = nSubExpr and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1855,6 +3038,18 @@ module Raw { int getIndex() { tuple_element_exprs(this, _, result) } } + private Element getImmediateChildOfTupleElementExpr(TupleElementExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1865,6 +3060,23 @@ module Raw { * Gets the `index`th element of this tuple expression (0-based). */ Expr getElement(int index) { tuple_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this tuple expression. + */ + int getNumberOfElements() { result = count(int i | tuple_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfTupleExpr(TupleExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -1879,6 +3091,18 @@ module Raw { TypeRepr getTypeRepr() { type_expr_type_reprs(this, result) } } + private Element getImmediateChildOfTypeExpr(TypeExpr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1891,6 +3115,18 @@ module Raw { TypeRepr getTypeRepr() { type_value_exprs(this, result) } } + private Element getImmediateChildOfTypeValueExpr(TypeValueExpr e, int index) { + exists(int n, int nTypeRepr | + n = 0 and + nTypeRepr = n + 1 and + ( + none() + or + index = n and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1903,6 +3139,10 @@ module Raw { string getName() { unresolved_decl_ref_expr_names(this, result) } } + private Element getImmediateChildOfUnresolvedDeclRefExpr(UnresolvedDeclRefExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1920,6 +3160,18 @@ module Raw { string getName() { unresolved_dot_exprs(this, _, result) } } + private Element getImmediateChildOfUnresolvedDotExpr(UnresolvedDotExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1932,6 +3184,10 @@ module Raw { string getName() { unresolved_member_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedMemberExpr(UnresolvedMemberExpr e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -1944,6 +3200,18 @@ module Raw { Pattern getSubPattern() { unresolved_pattern_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedPatternExpr(UnresolvedPatternExpr e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1956,6 +3224,18 @@ module Raw { Expr getSubExpr() { unresolved_specialize_exprs(this, result) } } + private Element getImmediateChildOfUnresolvedSpecializeExpr(UnresolvedSpecializeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1968,6 +3248,18 @@ module Raw { Expr getSubExpr() { vararg_expansion_exprs(this, result) } } + private Element getImmediateChildOfVarargExpansionExpr(VarargExpansionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1975,6 +3267,18 @@ module Raw { override string toString() { result = "AbiSafeConversionExpr" } } + private Element getImmediateChildOfAbiSafeConversionExpr(AbiSafeConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion that erases the actor isolation of an expression with `@isolated(any)` function @@ -1984,6 +3288,20 @@ module Raw { override string toString() { result = "ActorIsolationErasureExpr" } } + private Element getImmediateChildOfActorIsolationErasureExpr( + ActorIsolationErasureExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1991,6 +3309,18 @@ module Raw { override string toString() { result = "AnyHashableErasureExpr" } } + private Element getImmediateChildOfAnyHashableErasureExpr(AnyHashableErasureExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -1998,6 +3328,18 @@ module Raw { override string toString() { result = "ArchetypeToSuperExpr" } } + private Element getImmediateChildOfArchetypeToSuperExpr(ArchetypeToSuperExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2008,6 +3350,23 @@ module Raw { * Gets the `index`th element of this array expression (0-based). */ Expr getElement(int index) { array_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this array expression. + */ + int getNumberOfElements() { result = count(int i | array_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2017,6 +3376,18 @@ module Raw { override string toString() { result = "ArrayToPointerExpr" } } + private Element getImmediateChildOfArrayToPointerExpr(ArrayToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2024,6 +3395,27 @@ module Raw { override string toString() { result = "AutoClosureExpr" } } + private Element getImmediateChildOfAutoClosureExpr(AutoClosureExpr e, int index) { + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + index = n and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2031,6 +3423,18 @@ module Raw { override string toString() { result = "AwaitExpr" } } + private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2038,6 +3442,21 @@ module Raw { override string toString() { result = "BinaryExpr" } } + private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. * An expression that marks value as borrowed. In the example below, `_borrow` marks the borrow expression: @@ -2051,6 +3470,18 @@ module Raw { override string toString() { result = "BorrowExpr" } } + private Element getImmediateChildOfBorrowExpr(BorrowExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2058,6 +3489,18 @@ module Raw { override string toString() { result = "BridgeFromObjCExpr" } } + private Element getImmediateChildOfBridgeFromObjCExpr(BridgeFromObjCExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2065,6 +3508,18 @@ module Raw { override string toString() { result = "BridgeToObjCExpr" } } + private Element getImmediateChildOfBridgeToObjCExpr(BridgeToObjCExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2077,6 +3532,21 @@ module Raw { override string toString() { result = "CallExpr" } } + private Element getImmediateChildOfCallExpr(CallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2089,6 +3559,20 @@ module Raw { override string toString() { result = "ClassMetatypeToObjectExpr" } } + private Element getImmediateChildOfClassMetatypeToObjectExpr( + ClassMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2096,6 +3580,18 @@ module Raw { override string toString() { result = "CoerceExpr" } } + private Element getImmediateChildOfCoerceExpr(CoerceExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2105,6 +3601,20 @@ module Raw { override string toString() { result = "CollectionUpcastConversionExpr" } } + private Element getImmediateChildOfCollectionUpcastConversionExpr( + CollectionUpcastConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2114,6 +3624,20 @@ module Raw { override string toString() { result = "ConditionalBridgeFromObjCExpr" } } + private Element getImmediateChildOfConditionalBridgeFromObjCExpr( + ConditionalBridgeFromObjCExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2123,6 +3647,20 @@ module Raw { override string toString() { result = "CovariantFunctionConversionExpr" } } + private Element getImmediateChildOfCovariantFunctionConversionExpr( + CovariantFunctionConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2132,6 +3670,20 @@ module Raw { override string toString() { result = "CovariantReturnConversionExpr" } } + private Element getImmediateChildOfCovariantReturnConversionExpr( + CovariantReturnConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2139,6 +3691,18 @@ module Raw { override string toString() { result = "DerivedToBaseExpr" } } + private Element getImmediateChildOfDerivedToBaseExpr(DerivedToBaseExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2146,6 +3710,18 @@ module Raw { override string toString() { result = "DestructureTupleExpr" } } + private Element getImmediateChildOfDestructureTupleExpr(DestructureTupleExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2156,6 +3732,23 @@ module Raw { * Gets the `index`th element of this dictionary expression (0-based). */ Expr getElement(int index) { dictionary_expr_elements(this, index, result) } + + /** + * Gets the number of elements of this dictionary expression. + */ + int getNumberOfElements() { result = count(int i | dictionary_expr_elements(this, i, _)) } + } + + private Element getImmediateChildOfDictionaryExpr(DictionaryExpr e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2165,6 +3758,20 @@ module Raw { override string toString() { result = "DifferentiableFunctionExpr" } } + private Element getImmediateChildOfDifferentiableFunctionExpr( + DifferentiableFunctionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2174,6 +3781,20 @@ module Raw { override string toString() { result = "DifferentiableFunctionExtractOriginalExpr" } } + private Element getImmediateChildOfDifferentiableFunctionExtractOriginalExpr( + DifferentiableFunctionExtractOriginalExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2181,6 +3802,18 @@ module Raw { override string toString() { result = "DotSelfExpr" } } + private Element getImmediateChildOfDotSelfExpr(DotSelfExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2193,6 +3826,18 @@ module Raw { override string toString() { result = "ErasureExpr" } } + private Element getImmediateChildOfErasureExpr(ErasureExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2202,6 +3847,20 @@ module Raw { override string toString() { result = "ExistentialMetatypeToObjectExpr" } } + private Element getImmediateChildOfExistentialMetatypeToObjectExpr( + ExistentialMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2209,6 +3868,27 @@ module Raw { override string toString() { result = "ExplicitClosureExpr" } } + private Element getImmediateChildOfExplicitClosureExpr(ExplicitClosureExpr e, int index) { + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + e.getNumberOfParams() and + nBody = nParam + 1 and + nCapture = nBody + e.getNumberOfCaptures() and + ( + none() + or + index = n and result = e.getSelfParam() + or + result = e.getParam(index - nSelfParam) + or + index = nParam and result = e.getBody() + or + result = e.getCapture(index - nBody) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2216,6 +3896,18 @@ module Raw { override string toString() { result = "ForceTryExpr" } } + private Element getImmediateChildOfForceTryExpr(ForceTryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2223,6 +3915,20 @@ module Raw { override string toString() { result = "ForeignObjectConversionExpr" } } + private Element getImmediateChildOfForeignObjectConversionExpr( + ForeignObjectConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2230,6 +3936,18 @@ module Raw { override string toString() { result = "FunctionConversionExpr" } } + private Element getImmediateChildOfFunctionConversionExpr(FunctionConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2237,6 +3955,18 @@ module Raw { override string toString() { result = "InOutToPointerExpr" } } + private Element getImmediateChildOfInOutToPointerExpr(InOutToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2244,6 +3974,18 @@ module Raw { override string toString() { result = "InjectIntoOptionalExpr" } } + private Element getImmediateChildOfInjectIntoOptionalExpr(InjectIntoOptionalExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2263,6 +4005,20 @@ module Raw { TapExpr getAppendingExpr() { interpolated_string_literal_expr_appending_exprs(this, result) } } + private Element getImmediateChildOfInterpolatedStringLiteralExpr( + InterpolatedStringLiteralExpr e, int index + ) { + exists(int n, int nAppendingExpr | + n = 0 and + nAppendingExpr = n + 1 and + ( + none() + or + index = n and result = e.getAppendingExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2270,6 +4026,18 @@ module Raw { override string toString() { result = "LinearFunctionExpr" } } + private Element getImmediateChildOfLinearFunctionExpr(LinearFunctionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2279,6 +4047,20 @@ module Raw { override string toString() { result = "LinearFunctionExtractOriginalExpr" } } + private Element getImmediateChildOfLinearFunctionExtractOriginalExpr( + LinearFunctionExtractOriginalExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2288,6 +4070,20 @@ module Raw { override string toString() { result = "LinearToDifferentiableFunctionExpr" } } + private Element getImmediateChildOfLinearToDifferentiableFunctionExpr( + LinearToDifferentiableFunctionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2295,6 +4091,18 @@ module Raw { override string toString() { result = "LoadExpr" } } + private Element getImmediateChildOfLoadExpr(LoadExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2328,6 +4136,18 @@ module Raw { } } + private Element getImmediateChildOfMemberRefExpr(MemberRefExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2335,6 +4155,18 @@ module Raw { override string toString() { result = "MetatypeConversionExpr" } } + private Element getImmediateChildOfMetatypeConversionExpr(MetatypeConversionExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2342,6 +4174,8 @@ module Raw { override string toString() { result = "NilLiteralExpr" } } + private Element getImmediateChildOfNilLiteralExpr(NilLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An instance of `#fileLiteral`, `#imageLiteral` or `#colorLiteral` expressions, which are used in playgrounds. @@ -2360,6 +4194,23 @@ module Raw { * Gets the `index`th argument of this object literal expression (0-based). */ Argument getArgument(int index) { object_literal_expr_arguments(this, index, result) } + + /** + * Gets the number of arguments of this object literal expression. + */ + int getNumberOfArguments() { result = count(int i | object_literal_expr_arguments(this, i, _)) } + } + + private Element getImmediateChildOfObjectLiteralExpr(ObjectLiteralExpr e, int index) { + exists(int n, int nArgument | + n = 0 and + nArgument = n + e.getNumberOfArguments() and + ( + none() + or + result = e.getArgument(index - n) + ) + ) } /** @@ -2369,6 +4220,18 @@ module Raw { override string toString() { result = "OptionalTryExpr" } } + private Element getImmediateChildOfOptionalTryExpr(OptionalTryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2376,6 +4239,18 @@ module Raw { override string toString() { result = "ParenExpr" } } + private Element getImmediateChildOfParenExpr(ParenExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2383,6 +4258,18 @@ module Raw { override string toString() { result = "PointerToPointerExpr" } } + private Element getImmediateChildOfPointerToPointerExpr(PointerToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2390,6 +4277,21 @@ module Raw { override string toString() { result = "PostfixUnaryExpr" } } + private Element getImmediateChildOfPostfixUnaryExpr(PostfixUnaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2397,6 +4299,21 @@ module Raw { override string toString() { result = "PrefixUnaryExpr" } } + private Element getImmediateChildOfPrefixUnaryExpr(PrefixUnaryExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2406,6 +4323,20 @@ module Raw { override string toString() { result = "ProtocolMetatypeToObjectExpr" } } + private Element getImmediateChildOfProtocolMetatypeToObjectExpr( + ProtocolMetatypeToObjectExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A regular expression literal which is checked at compile time, for example `/a(a|b)*b/`. @@ -2424,6 +4355,8 @@ module Raw { int getVersion() { regex_literal_exprs(this, _, result) } } + private Element getImmediateChildOfRegexLiteralExpr(RegexLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. * An internal raw instance of method lookups like `x.foo` in `x.foo()`. @@ -2443,6 +4376,18 @@ module Raw { override string toString() { result = "StringToPointerExpr" } } + private Element getImmediateChildOfStringToPointerExpr(StringToPointerExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2454,6 +4399,11 @@ module Raw { */ Argument getArgument(int index) { subscript_expr_arguments(this, index, result) } + /** + * Gets the number of arguments of this subscript expression. + */ + int getNumberOfArguments() { result = count(int i | subscript_expr_arguments(this, i, _)) } + /** * Holds if this subscript expression has direct to storage semantics. */ @@ -2479,6 +4429,21 @@ module Raw { } } + private Element getImmediateChildOfSubscriptExpr(SubscriptExpr e, int index) { + exists(int n, int nBase, int nArgument | + n = 0 and + nBase = n + 1 and + nArgument = nBase + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getBase() + or + result = e.getArgument(index - nBase) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2486,6 +4451,18 @@ module Raw { override string toString() { result = "TryExpr" } } + private Element getImmediateChildOfTryExpr(TryExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2493,6 +4470,18 @@ module Raw { override string toString() { result = "UnderlyingToOpaqueExpr" } } + private Element getImmediateChildOfUnderlyingToOpaqueExpr(UnderlyingToOpaqueExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2500,6 +4489,18 @@ module Raw { override string toString() { result = "UnevaluatedInstanceExpr" } } + private Element getImmediateChildOfUnevaluatedInstanceExpr(UnevaluatedInstanceExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion from the uninhabited type to any other type. It's never evaluated. @@ -2508,6 +4509,18 @@ module Raw { override string toString() { result = "UnreachableExpr" } } + private Element getImmediateChildOfUnreachableExpr(UnreachableExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2517,6 +4530,20 @@ module Raw { override string toString() { result = "UnresolvedMemberChainResultExpr" } } + private Element getImmediateChildOfUnresolvedMemberChainResultExpr( + UnresolvedMemberChainResultExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2526,6 +4553,20 @@ module Raw { override string toString() { result = "UnresolvedTypeConversionExpr" } } + private Element getImmediateChildOfUnresolvedTypeConversionExpr( + UnresolvedTypeConversionExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. * A conversion that performs an unsafe bitcast. @@ -2534,6 +4575,18 @@ module Raw { override string toString() { result = "UnsafeCastExpr" } } + private Element getImmediateChildOfUnsafeCastExpr(UnsafeCastExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2541,6 +4594,18 @@ module Raw { override string toString() { result = "UnsafeExpr" } } + private Element getImmediateChildOfUnsafeExpr(UnsafeExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2553,6 +4618,8 @@ module Raw { boolean getValue() { boolean_literal_exprs(this, result) } } + private Element getImmediateChildOfBooleanLiteralExpr(BooleanLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2560,6 +4627,20 @@ module Raw { override string toString() { result = "ConditionalCheckedCastExpr" } } + private Element getImmediateChildOfConditionalCheckedCastExpr( + ConditionalCheckedCastExpr e, int index + ) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2567,6 +4648,21 @@ module Raw { override string toString() { result = "DotSyntaxCallExpr" } } + private Element getImmediateChildOfDotSyntaxCallExpr(DotSyntaxCallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2574,6 +4670,18 @@ module Raw { override string toString() { result = "DynamicMemberRefExpr" } } + private Element getImmediateChildOfDynamicMemberRefExpr(DynamicMemberRefExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2581,6 +4689,18 @@ module Raw { override string toString() { result = "DynamicSubscriptExpr" } } + private Element getImmediateChildOfDynamicSubscriptExpr(DynamicSubscriptExpr e, int index) { + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and + ( + none() + or + index = n and result = e.getBase() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2588,6 +4708,18 @@ module Raw { override string toString() { result = "ForcedCheckedCastExpr" } } + private Element getImmediateChildOfForcedCheckedCastExpr(ForcedCheckedCastExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2595,6 +4727,21 @@ module Raw { override string toString() { result = "InitializerRefCallExpr" } } + private Element getImmediateChildOfInitializerRefCallExpr(InitializerRefCallExpr e, int index) { + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + e.getNumberOfArguments() and + ( + none() + or + index = n and result = e.getFunction() + or + result = e.getArgument(index - nFunction) + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2602,6 +4749,18 @@ module Raw { override string toString() { result = "IsExpr" } } + private Element getImmediateChildOfIsExpr(IsExpr e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2614,6 +4773,12 @@ module Raw { string getKind() { magic_identifier_literal_exprs(this, result) } } + private Element getImmediateChildOfMagicIdentifierLiteralExpr( + MagicIdentifierLiteralExpr e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -2631,6 +4796,8 @@ module Raw { string getValue() { string_literal_exprs(this, result) } } + private Element getImmediateChildOfStringLiteralExpr(StringLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2643,6 +4810,8 @@ module Raw { string getStringValue() { float_literal_exprs(this, result) } } + private Element getImmediateChildOfFloatLiteralExpr(FloatLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2655,6 +4824,8 @@ module Raw { string getStringValue() { integer_literal_exprs(this, result) } } + private Element getImmediateChildOfIntegerLiteralExpr(IntegerLiteralExpr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2672,6 +4843,8 @@ module Raw { override string toString() { result = "AnyPattern" } } + private Element getImmediateChildOfAnyPattern(AnyPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2684,6 +4857,18 @@ module Raw { Pattern getSubPattern() { binding_patterns(this, result) } } + private Element getImmediateChildOfBindingPattern(BindingPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2696,6 +4881,8 @@ module Raw { boolean getValue() { bool_patterns(this, result) } } + private Element getImmediateChildOfBoolPattern(BoolPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2713,6 +4900,18 @@ module Raw { Pattern getSubPattern() { enum_element_pattern_sub_patterns(this, result) } } + private Element getImmediateChildOfEnumElementPattern(EnumElementPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2725,6 +4924,18 @@ module Raw { Expr getSubExpr() { expr_patterns(this, result) } } + private Element getImmediateChildOfExprPattern(ExprPattern e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2742,6 +4953,21 @@ module Raw { Pattern getSubPattern() { is_pattern_sub_patterns(this, result) } } + private Element getImmediateChildOfIsPattern(IsPattern e, int index) { + exists(int n, int nCastTypeRepr, int nSubPattern | + n = 0 and + nCastTypeRepr = n + 1 and + nSubPattern = nCastTypeRepr + 1 and + ( + none() + or + index = n and result = e.getCastTypeRepr() + or + index = nCastTypeRepr and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2754,6 +4980,8 @@ module Raw { VarDecl getVarDecl() { named_patterns(this, result) } } + private Element getImmediateChildOfNamedPattern(NamedPattern e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2766,6 +4994,18 @@ module Raw { Pattern getSubPattern() { optional_some_patterns(this, result) } } + private Element getImmediateChildOfOptionalSomePattern(OptionalSomePattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2778,6 +5018,18 @@ module Raw { Pattern getSubPattern() { paren_patterns(this, result) } } + private Element getImmediateChildOfParenPattern(ParenPattern e, int index) { + exists(int n, int nSubPattern | + n = 0 and + nSubPattern = n + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2788,6 +5040,23 @@ module Raw { * Gets the `index`th element of this tuple pattern (0-based). */ Pattern getElement(int index) { tuple_pattern_elements(this, index, result) } + + /** + * Gets the number of elements of this tuple pattern. + */ + int getNumberOfElements() { result = count(int i | tuple_pattern_elements(this, i, _)) } + } + + private Element getImmediateChildOfTuplePattern(TuplePattern e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2807,6 +5076,21 @@ module Raw { TypeRepr getTypeRepr() { typed_pattern_type_reprs(this, result) } } + private Element getImmediateChildOfTypedPattern(TypedPattern e, int index) { + exists(int n, int nSubPattern, int nTypeRepr | + n = 0 and + nSubPattern = n + 1 and + nTypeRepr = nSubPattern + 1 and + ( + none() + or + index = n and result = e.getSubPattern() + or + index = nSubPattern and result = e.getTypeRepr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2824,6 +5108,21 @@ module Raw { Expr getGuard() { case_label_item_guards(this, result) } } + private Element getImmediateChildOfCaseLabelItem(CaseLabelItem e, int index) { + exists(int n, int nPattern, int nGuard | + n = 0 and + nPattern = n + 1 and + nGuard = nPattern + 1 and + ( + none() + or + index = n and result = e.getPattern() + or + index = nPattern and result = e.getGuard() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2851,6 +5150,27 @@ module Raw { AvailabilityInfo getAvailability() { condition_element_availabilities(this, result) } } + private Element getImmediateChildOfConditionElement(ConditionElement e, int index) { + exists(int n, int nBoolean, int nPattern, int nInitializer, int nAvailability | + n = 0 and + nBoolean = n + 1 and + nPattern = nBoolean + 1 and + nInitializer = nPattern + 1 and + nAvailability = nInitializer + 1 and + ( + none() + or + index = n and result = e.getBoolean() + or + index = nBoolean and result = e.getPattern() + or + index = nPattern and result = e.getInitializer() + or + index = nInitializer and result = e.getAvailability() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2866,6 +5186,23 @@ module Raw { * Gets the `index`th element of this statement condition (0-based). */ ConditionElement getElement(int index) { stmt_condition_elements(this, index, result) } + + /** + * Gets the number of elements of this statement condition. + */ + int getNumberOfElements() { result = count(int i | stmt_condition_elements(this, i, _)) } + } + + private Element getImmediateChildOfStmtCondition(StmtCondition e, int index) { + exists(int n, int nElement | + n = 0 and + nElement = n + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - n) + ) + ) } /** @@ -2878,6 +5215,24 @@ module Raw { * Gets the `index`th element of this brace statement (0-based). */ AstNode getElement(int index) { brace_stmt_elements(this, index, result) } + + /** + * Gets the number of elements of this brace statement. + */ + int getNumberOfElements() { result = count(int i | brace_stmt_elements(this, i, _)) } + } + + private Element getImmediateChildOfBraceStmt(BraceStmt e, int index) { + exists(int n, int nVariable, int nElement | + n = 0 and + nVariable = n and + nElement = nVariable + e.getNumberOfElements() and + ( + none() + or + result = e.getElement(index - nVariable) + ) + ) } /** @@ -2897,6 +5252,8 @@ module Raw { Stmt getTarget() { break_stmt_targets(this, result) } } + private Element getImmediateChildOfBreakStmt(BreakStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2908,17 +5265,45 @@ module Raw { */ CaseLabelItem getLabel(int index) { case_stmt_labels(this, index, result) } + /** + * Gets the number of labels of this case statement. + */ + int getNumberOfLabels() { result = count(int i | case_stmt_labels(this, i, _)) } + /** * Gets the `index`th variable of this case statement (0-based). */ VarDecl getVariable(int index) { case_stmt_variables(this, index, result) } + /** + * Gets the number of variables of this case statement. + */ + int getNumberOfVariables() { result = count(int i | case_stmt_variables(this, i, _)) } + /** * Gets the body of this case statement. */ Stmt getBody() { case_stmts(this, result) } } + private Element getImmediateChildOfCaseStmt(CaseStmt e, int index) { + exists(int n, int nLabel, int nVariable, int nBody | + n = 0 and + nLabel = n + e.getNumberOfLabels() and + nVariable = nLabel + e.getNumberOfVariables() and + nBody = nVariable + 1 and + ( + none() + or + result = e.getLabel(index - n) + or + result = e.getVariable(index - nLabel) + or + index = nVariable and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2936,6 +5321,8 @@ module Raw { Stmt getTarget() { continue_stmt_targets(this, result) } } + private Element getImmediateChildOfContinueStmt(ContinueStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2948,6 +5335,18 @@ module Raw { BraceStmt getBody() { defer_stmts(this, result) } } + private Element getImmediateChildOfDeferStmt(DeferStmt e, int index) { + exists(int n, int nBody | + n = 0 and + nBody = n + 1 and + ( + none() + or + index = n and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. * A statement that takes a non-copyable value and destructs its members/fields. @@ -2966,6 +5365,18 @@ module Raw { Expr getSubExpr() { discard_stmts(this, result) } } + private Element getImmediateChildOfDiscardStmt(DiscardStmt e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -2973,6 +5384,8 @@ module Raw { override string toString() { result = "FailStmt" } } + private Element getImmediateChildOfFailStmt(FailStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -2990,6 +5403,8 @@ module Raw { CaseStmt getFallthroughDest() { fallthrough_stmts(this, _, result) } } + private Element getImmediateChildOfFallthroughStmt(FallthroughStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3017,6 +5432,8 @@ module Raw { string getMessage() { pound_assert_stmts(this, _, result) } } + private Element getImmediateChildOfPoundAssertStmt(PoundAssertStmt e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3029,6 +5446,18 @@ module Raw { Expr getResult() { return_stmt_results(this, result) } } + private Element getImmediateChildOfReturnStmt(ReturnStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + 1 and + ( + none() + or + index = n and result = e.getResult() + ) + ) + } + /** * INTERNAL: Do not use. * A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: @@ -3050,6 +5479,18 @@ module Raw { Expr getResult() { then_stmts(this, result) } } + private Element getImmediateChildOfThenStmt(ThenStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + 1 and + ( + none() + or + index = n and result = e.getResult() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3062,6 +5503,18 @@ module Raw { Expr getSubExpr() { throw_stmts(this, result) } } + private Element getImmediateChildOfThrowStmt(ThrowStmt e, int index) { + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and + ( + none() + or + index = n and result = e.getSubExpr() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3072,6 +5525,23 @@ module Raw { * Gets the `index`th result of this yield statement (0-based). */ Expr getResult(int index) { yield_stmt_results(this, index, result) } + + /** + * Gets the number of results of this yield statement. + */ + int getNumberOfResults() { result = count(int i | yield_stmt_results(this, i, _)) } + } + + private Element getImmediateChildOfYieldStmt(YieldStmt e, int index) { + exists(int n, int nResult | + n = 0 and + nResult = n + e.getNumberOfResults() and + ( + none() + or + result = e.getResult(index - n) + ) + ) } /** @@ -3089,6 +5559,26 @@ module Raw { * Gets the `index`th catch of this do catch statement (0-based). */ CaseStmt getCatch(int index) { do_catch_stmt_catches(this, index, result) } + + /** + * Gets the number of catches of this do catch statement. + */ + int getNumberOfCatches() { result = count(int i | do_catch_stmt_catches(this, i, _)) } + } + + private Element getImmediateChildOfDoCatchStmt(DoCatchStmt e, int index) { + exists(int n, int nBody, int nCatch | + n = 0 and + nBody = n + 1 and + nCatch = nBody + e.getNumberOfCatches() and + ( + none() + or + index = n and result = e.getBody() + or + result = e.getCatch(index - nBody) + ) + ) } /** @@ -3103,6 +5593,18 @@ module Raw { BraceStmt getBody() { do_stmts(this, result) } } + private Element getImmediateChildOfDoStmt(DoStmt e, int index) { + exists(int n, int nBody | + n = 0 and + nBody = n + 1 and + ( + none() + or + index = n and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3114,6 +5616,11 @@ module Raw { */ VarDecl getVariable(int index) { for_each_stmt_variables(this, index, result) } + /** + * Gets the number of variables of this for each statement. + */ + int getNumberOfVariables() { result = count(int i | for_each_stmt_variables(this, i, _)) } + /** * Gets the pattern of this for each statement. */ @@ -3140,6 +5647,35 @@ module Raw { BraceStmt getBody() { for_each_stmts(this, _, result) } } + private Element getImmediateChildOfForEachStmt(ForEachStmt e, int index) { + exists( + int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody + | + n = 0 and + nVariable = n + e.getNumberOfVariables() and + nPattern = nVariable + 1 and + nWhere = nPattern + 1 and + nIteratorVar = nWhere + 1 and + nNextCall = nIteratorVar + 1 and + nBody = nNextCall + 1 and + ( + none() + or + result = e.getVariable(index - n) + or + index = nVariable and result = e.getPattern() + or + index = nPattern and result = e.getWhere() + or + index = nWhere and result = e.getIteratorVar() + or + index = nIteratorVar and result = e.getNextCall() + or + index = nNextCall and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3167,6 +5703,21 @@ module Raw { Stmt getBody() { repeat_while_stmts(this, _, result) } } + private Element getImmediateChildOfRepeatWhileStmt(RepeatWhileStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3182,6 +5733,26 @@ module Raw { * Gets the `index`th case of this switch statement (0-based). */ CaseStmt getCase(int index) { switch_stmt_cases(this, index, result) } + + /** + * Gets the number of cases of this switch statement. + */ + int getNumberOfCases() { result = count(int i | switch_stmt_cases(this, i, _)) } + } + + private Element getImmediateChildOfSwitchStmt(SwitchStmt e, int index) { + exists(int n, int nExpr, int nCase | + n = 0 and + nExpr = n + 1 and + nCase = nExpr + e.getNumberOfCases() and + ( + none() + or + index = n and result = e.getExpr() + or + result = e.getCase(index - nExpr) + ) + ) } /** @@ -3196,6 +5767,21 @@ module Raw { BraceStmt getBody() { guard_stmts(this, result) } } + private Element getImmediateChildOfGuardStmt(GuardStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3213,6 +5799,24 @@ module Raw { Stmt getElse() { if_stmt_elses(this, result) } } + private Element getImmediateChildOfIfStmt(IfStmt e, int index) { + exists(int n, int nCondition, int nThen, int nElse | + n = 0 and + nCondition = n + 1 and + nThen = nCondition + 1 and + nElse = nThen + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getThen() + or + index = nThen and result = e.getElse() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3225,6 +5829,21 @@ module Raw { Stmt getBody() { while_stmts(this, result) } } + private Element getImmediateChildOfWhileStmt(WhileStmt e, int index) { + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( + none() + or + index = n and result = e.getCondition() + or + index = nCondition and result = e.getBody() + ) + ) + } + /** * INTERNAL: Do not use. */ @@ -3258,6 +5877,8 @@ module Raw { Type getType() { type_reprs(this, result) } } + private Element getImmediateChildOfTypeRepr(TypeRepr e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3272,6 +5893,13 @@ module Raw { */ Type getParamType(int index) { any_function_type_param_types(this, index, result) } + /** + * Gets the number of parameter types of this function type. + */ + int getNumberOfParamTypes() { + result = count(int i | any_function_type_param_types(this, i, _)) + } + /** * Holds if this type refers to a throwing function. */ @@ -3325,6 +5953,10 @@ module Raw { AssociatedTypeDecl getAssociatedTypeDecl() { dependent_member_types(this, _, result) } } + private Element getImmediateChildOfDependentMemberType(DependentMemberType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3337,6 +5969,8 @@ module Raw { Type getStaticSelfType() { dynamic_self_types(this, result) } } + private Element getImmediateChildOfDynamicSelfType(DynamicSelfType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3344,6 +5978,8 @@ module Raw { override string toString() { result = "ErrorType" } } + private Element getImmediateChildOfErrorType(ErrorType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3356,6 +5992,8 @@ module Raw { Type getConstraint() { existential_types(this, result) } } + private Element getImmediateChildOfExistentialType(ExistentialType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3368,6 +6006,8 @@ module Raw { Type getObjectType() { in_out_types(this, result) } } + private Element getImmediateChildOfInOutType(InOutType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3380,6 +6020,8 @@ module Raw { string getValue() { integer_types(this, result) } } + private Element getImmediateChildOfIntegerType(IntegerType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3392,6 +6034,8 @@ module Raw { Type getObjectType() { l_value_types(this, result) } } + private Element getImmediateChildOfLValueType(LValueType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3404,6 +6048,8 @@ module Raw { ModuleDecl getModule() { module_types(this, result) } } + private Element getImmediateChildOfModuleType(ModuleType e, int index) { none() } + /** * INTERNAL: Do not use. * A type of PackElementExpr, see PackElementExpr for more information. @@ -3417,6 +6063,8 @@ module Raw { Type getPackType() { pack_element_types(this, result) } } + private Element getImmediateChildOfPackElementType(PackElementType e, int index) { none() } + /** * INTERNAL: Do not use. * A type of PackExpansionExpr, see PackExpansionExpr for more information. @@ -3435,6 +6083,8 @@ module Raw { Type getCountType() { pack_expansion_types(this, _, result) } } + private Element getImmediateChildOfPackExpansionType(PackExpansionType e, int index) { none() } + /** * INTERNAL: Do not use. * An actual type of a pack expression at the instatiation point. @@ -3455,8 +6105,15 @@ module Raw { * Gets the `index`th element of this pack type (0-based). */ Type getElement(int index) { pack_type_elements(this, index, result) } + + /** + * Gets the number of elements of this pack type. + */ + int getNumberOfElements() { result = count(int i | pack_type_elements(this, i, _)) } } + private Element getImmediateChildOfPackType(PackType e, int index) { none() } + /** * INTERNAL: Do not use. * A sugar type of the form `P` with `P` a protocol. @@ -3475,6 +6132,17 @@ module Raw { * Gets the `index`th argument of this parameterized protocol type (0-based). */ Type getArg(int index) { parameterized_protocol_type_args(this, index, result) } + + /** + * Gets the number of arguments of this parameterized protocol type. + */ + int getNumberOfArgs() { result = count(int i | parameterized_protocol_type_args(this, i, _)) } + } + + private Element getImmediateChildOfParameterizedProtocolType( + ParameterizedProtocolType e, int index + ) { + none() } /** @@ -3487,6 +6155,17 @@ module Raw { * Gets the `index`th member of this protocol composition type (0-based). */ Type getMember(int index) { protocol_composition_type_members(this, index, result) } + + /** + * Gets the number of members of this protocol composition type. + */ + int getNumberOfMembers() { + result = count(int i | protocol_composition_type_members(this, i, _)) + } + } + + private Element getImmediateChildOfProtocolCompositionType(ProtocolCompositionType e, int index) { + none() } /** @@ -3520,12 +6199,24 @@ module Raw { */ Type getType(int index) { tuple_type_types(this, index, result) } + /** + * Gets the number of types of this tuple type. + */ + int getNumberOfTypes() { result = count(int i | tuple_type_types(this, i, _)) } + /** * Gets the `index`th name of this tuple type (0-based), if it exists. */ string getName(int index) { tuple_type_names(this, index, result) } + + /** + * Gets the number of names of this tuple type. + */ + int getNumberOfNames() { result = count(int i | tuple_type_names(this, i, _)) } } + private Element getImmediateChildOfTupleType(TupleType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3533,6 +6224,8 @@ module Raw { override string toString() { result = "UnresolvedType" } } + private Element getImmediateChildOfUnresolvedType(UnresolvedType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3556,6 +6249,11 @@ module Raw { * Gets the `index`th protocol of this archetype type (0-based). */ ProtocolDecl getProtocol(int index) { archetype_type_protocols(this, index, result) } + + /** + * Gets the number of protocols of this archetype type. + */ + int getNumberOfProtocols() { result = count(int i | archetype_type_protocols(this, i, _)) } } /** @@ -3565,6 +6263,10 @@ module Raw { override string toString() { result = "BuiltinBridgeObjectType" } } + private Element getImmediateChildOfBuiltinBridgeObjectType(BuiltinBridgeObjectType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3572,6 +6274,12 @@ module Raw { override string toString() { result = "BuiltinDefaultActorStorageType" } } + private Element getImmediateChildOfBuiltinDefaultActorStorageType( + BuiltinDefaultActorStorageType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3579,6 +6287,10 @@ module Raw { override string toString() { result = "BuiltinExecutorType" } } + private Element getImmediateChildOfBuiltinExecutorType(BuiltinExecutorType e, int index) { + none() + } + /** * INTERNAL: Do not use. * A builtin type representing N values stored contiguously. @@ -3587,6 +6299,10 @@ module Raw { override string toString() { result = "BuiltinFixedArrayType" } } + private Element getImmediateChildOfBuiltinFixedArrayType(BuiltinFixedArrayType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3594,6 +6310,8 @@ module Raw { override string toString() { result = "BuiltinFloatType" } } + private Element getImmediateChildOfBuiltinFloatType(BuiltinFloatType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3601,6 +6319,8 @@ module Raw { override string toString() { result = "BuiltinJobType" } } + private Element getImmediateChildOfBuiltinJobType(BuiltinJobType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3608,6 +6328,10 @@ module Raw { override string toString() { result = "BuiltinNativeObjectType" } } + private Element getImmediateChildOfBuiltinNativeObjectType(BuiltinNativeObjectType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3615,6 +6339,10 @@ module Raw { override string toString() { result = "BuiltinRawPointerType" } } + private Element getImmediateChildOfBuiltinRawPointerType(BuiltinRawPointerType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3622,6 +6350,12 @@ module Raw { override string toString() { result = "BuiltinRawUnsafeContinuationType" } } + private Element getImmediateChildOfBuiltinRawUnsafeContinuationType( + BuiltinRawUnsafeContinuationType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3629,6 +6363,12 @@ module Raw { override string toString() { result = "BuiltinUnsafeValueBufferType" } } + private Element getImmediateChildOfBuiltinUnsafeValueBufferType( + BuiltinUnsafeValueBufferType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3636,6 +6376,8 @@ module Raw { override string toString() { result = "BuiltinVectorType" } } + private Element getImmediateChildOfBuiltinVectorType(BuiltinVectorType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3643,6 +6385,10 @@ module Raw { override string toString() { result = "ExistentialMetatypeType" } } + private Element getImmediateChildOfExistentialMetatypeType(ExistentialMetatypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3650,6 +6396,8 @@ module Raw { override string toString() { result = "FunctionType" } } + private Element getImmediateChildOfFunctionType(FunctionType e, int index) { none() } + /** * INTERNAL: Do not use. * The type of a generic function with type parameters @@ -3663,6 +6411,17 @@ module Raw { GenericTypeParamType getGenericParam(int index) { generic_function_type_generic_params(this, index, result) } + + /** + * Gets the number of type parameters of this generic type. + */ + int getNumberOfGenericParams() { + result = count(int i | generic_function_type_generic_params(this, i, _)) + } + } + + private Element getImmediateChildOfGenericFunctionType(GenericFunctionType e, int index) { + none() } /** @@ -3672,6 +6431,10 @@ module Raw { override string toString() { result = "GenericTypeParamType" } } + private Element getImmediateChildOfGenericTypeParamType(GenericTypeParamType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3679,6 +6442,8 @@ module Raw { override string toString() { result = "MetatypeType" } } + private Element getImmediateChildOfMetatypeType(MetatypeType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3698,6 +6463,8 @@ module Raw { Type getType() { paren_types(this, result) } } + private Element getImmediateChildOfParenType(ParenType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3715,6 +6482,8 @@ module Raw { TypeAliasDecl getDecl() { type_alias_types(this, result) } } + private Element getImmediateChildOfTypeAliasType(TypeAliasType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3722,6 +6491,8 @@ module Raw { override string toString() { result = "UnboundGenericType" } } + private Element getImmediateChildOfUnboundGenericType(UnboundGenericType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3729,6 +6500,10 @@ module Raw { override string toString() { result = "UnmanagedStorageType" } } + private Element getImmediateChildOfUnmanagedStorageType(UnmanagedStorageType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3736,6 +6511,8 @@ module Raw { override string toString() { result = "UnownedStorageType" } } + private Element getImmediateChildOfUnownedStorageType(UnownedStorageType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3743,6 +6520,8 @@ module Raw { override string toString() { result = "WeakStorageType" } } + private Element getImmediateChildOfWeakStorageType(WeakStorageType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3751,6 +6530,11 @@ module Raw { * Gets the `index`th argument type of this bound generic type (0-based). */ Type getArgType(int index) { bound_generic_type_arg_types(this, index, result) } + + /** + * Gets the number of argument types of this bound generic type. + */ + int getNumberOfArgTypes() { result = count(int i | bound_generic_type_arg_types(this, i, _)) } } /** @@ -3760,6 +6544,12 @@ module Raw { override string toString() { result = "BuiltinIntegerLiteralType" } } + private Element getImmediateChildOfBuiltinIntegerLiteralType( + BuiltinIntegerLiteralType e, int index + ) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3772,6 +6562,8 @@ module Raw { int getWidth() { builtin_integer_type_widths(this, result) } } + private Element getImmediateChildOfBuiltinIntegerType(BuiltinIntegerType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3789,6 +6581,8 @@ module Raw { Type getValueType() { dictionary_types(this, _, result) } } + private Element getImmediateChildOfDictionaryType(DictionaryType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3806,6 +6600,8 @@ module Raw { Type getElementType() { inline_array_types(this, _, result) } } + private Element getImmediateChildOfInlineArrayType(InlineArrayType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3831,6 +6627,10 @@ module Raw { OpaqueTypeDecl getDeclaration() { opaque_type_archetype_types(this, result) } } + private Element getImmediateChildOfOpaqueTypeArchetypeType(OpaqueTypeArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. * An archetype type of PackType. @@ -3839,6 +6639,8 @@ module Raw { override string toString() { result = "PackArchetypeType" } } + private Element getImmediateChildOfPackArchetypeType(PackArchetypeType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3846,6 +6648,10 @@ module Raw { override string toString() { result = "PrimaryArchetypeType" } } + private Element getImmediateChildOfPrimaryArchetypeType(PrimaryArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3863,6 +6669,8 @@ module Raw { override string toString() { result = "ArraySliceType" } } + private Element getImmediateChildOfArraySliceType(ArraySliceType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3870,6 +6678,10 @@ module Raw { override string toString() { result = "BoundGenericClassType" } } + private Element getImmediateChildOfBoundGenericClassType(BoundGenericClassType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3877,6 +6689,10 @@ module Raw { override string toString() { result = "BoundGenericEnumType" } } + private Element getImmediateChildOfBoundGenericEnumType(BoundGenericEnumType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3884,6 +6700,10 @@ module Raw { override string toString() { result = "BoundGenericStructType" } } + private Element getImmediateChildOfBoundGenericStructType(BoundGenericStructType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3891,6 +6711,8 @@ module Raw { override string toString() { result = "ClassType" } } + private Element getImmediateChildOfClassType(ClassType e, int index) { none() } + /** * INTERNAL: Do not use. * An archetype type of PackElementType. @@ -3899,6 +6721,10 @@ module Raw { override string toString() { result = "ElementArchetypeType" } } + private Element getImmediateChildOfElementArchetypeType(ElementArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3906,6 +6732,8 @@ module Raw { override string toString() { result = "EnumType" } } + private Element getImmediateChildOfEnumType(EnumType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3913,6 +6741,10 @@ module Raw { override string toString() { result = "ExistentialArchetypeType" } } + private Element getImmediateChildOfExistentialArchetypeType(ExistentialArchetypeType e, int index) { + none() + } + /** * INTERNAL: Do not use. */ @@ -3920,6 +6752,8 @@ module Raw { override string toString() { result = "OptionalType" } } + private Element getImmediateChildOfOptionalType(OptionalType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3927,6 +6761,8 @@ module Raw { override string toString() { result = "ProtocolType" } } + private Element getImmediateChildOfProtocolType(ProtocolType e, int index) { none() } + /** * INTERNAL: Do not use. */ @@ -3934,10 +6770,534 @@ module Raw { override string toString() { result = "StructType" } } + private Element getImmediateChildOfStructType(StructType e, int index) { none() } + /** * INTERNAL: Do not use. */ class VariadicSequenceType extends @variadic_sequence_type, UnarySyntaxSugarType { override string toString() { result = "VariadicSequenceType" } } + + private Element getImmediateChildOfVariadicSequenceType(VariadicSequenceType e, int index) { + none() + } + + /** + * Gets the immediate child indexed at `index`. Indexes are not guaranteed to be contiguous, but are guaranteed to be distinct. + */ + pragma[nomagic] + Element getImmediateChild(Element e, int index) { + // why does this look more complicated than it should? + // * none() simplifies generation, as we can append `or ...` without a special case for the first item + none() + or + result = getImmediateChildOfComment(e, index) + or + result = getImmediateChildOfDbFile(e, index) + or + result = getImmediateChildOfDbLocation(e, index) + or + result = getImmediateChildOfDiagnostics(e, index) + or + result = getImmediateChildOfAvailabilityInfo(e, index) + or + result = getImmediateChildOfAvailabilitySpec(e, index) + or + result = getImmediateChildOfKeyPathComponent(e, index) + or + result = getImmediateChildOfMacroRole(e, index) + or + result = getImmediateChildOfUnspecifiedElement(e, index) + or + result = getImmediateChildOfCapturedDecl(e, index) + or + result = getImmediateChildOfEnumCaseDecl(e, index) + or + result = getImmediateChildOfExtensionDecl(e, index) + or + result = getImmediateChildOfIfConfigDecl(e, index) + or + result = getImmediateChildOfImportDecl(e, index) + or + result = getImmediateChildOfMissingMemberDecl(e, index) + or + result = getImmediateChildOfPatternBindingDecl(e, index) + or + result = getImmediateChildOfPoundDiagnosticDecl(e, index) + or + result = getImmediateChildOfPrecedenceGroupDecl(e, index) + or + result = getImmediateChildOfTopLevelCodeDecl(e, index) + or + result = getImmediateChildOfUsingDecl(e, index) + or + result = getImmediateChildOfEnumElementDecl(e, index) + or + result = getImmediateChildOfInfixOperatorDecl(e, index) + or + result = getImmediateChildOfMacroDecl(e, index) + or + result = getImmediateChildOfPostfixOperatorDecl(e, index) + or + result = getImmediateChildOfPrefixOperatorDecl(e, index) + or + result = getImmediateChildOfDeinitializer(e, index) + or + result = getImmediateChildOfInitializer(e, index) + or + result = getImmediateChildOfModuleDecl(e, index) + or + result = getImmediateChildOfSubscriptDecl(e, index) + or + result = getImmediateChildOfAccessor(e, index) + or + result = getImmediateChildOfAssociatedTypeDecl(e, index) + or + result = getImmediateChildOfConcreteVarDecl(e, index) + or + result = getImmediateChildOfGenericTypeParamDecl(e, index) + or + result = getImmediateChildOfNamedFunction(e, index) + or + result = getImmediateChildOfOpaqueTypeDecl(e, index) + or + result = getImmediateChildOfParamDecl(e, index) + or + result = getImmediateChildOfTypeAliasDecl(e, index) + or + result = getImmediateChildOfClassDecl(e, index) + or + result = getImmediateChildOfEnumDecl(e, index) + or + result = getImmediateChildOfProtocolDecl(e, index) + or + result = getImmediateChildOfStructDecl(e, index) + or + result = getImmediateChildOfArgument(e, index) + or + result = getImmediateChildOfAppliedPropertyWrapperExpr(e, index) + or + result = getImmediateChildOfAssignExpr(e, index) + or + result = getImmediateChildOfBindOptionalExpr(e, index) + or + result = getImmediateChildOfCaptureListExpr(e, index) + or + result = getImmediateChildOfConsumeExpr(e, index) + or + result = getImmediateChildOfCopyExpr(e, index) + or + result = getImmediateChildOfCurrentContextIsolationExpr(e, index) + or + result = getImmediateChildOfDeclRefExpr(e, index) + or + result = getImmediateChildOfDefaultArgumentExpr(e, index) + or + result = getImmediateChildOfDiscardAssignmentExpr(e, index) + or + result = getImmediateChildOfDotSyntaxBaseIgnoredExpr(e, index) + or + result = getImmediateChildOfDynamicTypeExpr(e, index) + or + result = getImmediateChildOfEnumIsCaseExpr(e, index) + or + result = getImmediateChildOfErrorExpr(e, index) + or + result = getImmediateChildOfExtractFunctionIsolationExpr(e, index) + or + result = getImmediateChildOfForceValueExpr(e, index) + or + result = getImmediateChildOfIfExpr(e, index) + or + result = getImmediateChildOfInOutExpr(e, index) + or + result = getImmediateChildOfKeyPathApplicationExpr(e, index) + or + result = getImmediateChildOfKeyPathDotExpr(e, index) + or + result = getImmediateChildOfKeyPathExpr(e, index) + or + result = getImmediateChildOfLazyInitializationExpr(e, index) + or + result = getImmediateChildOfMakeTemporarilyEscapableExpr(e, index) + or + result = getImmediateChildOfMaterializePackExpr(e, index) + or + result = getImmediateChildOfObjCSelectorExpr(e, index) + or + result = getImmediateChildOfOneWayExpr(e, index) + or + result = getImmediateChildOfOpaqueValueExpr(e, index) + or + result = getImmediateChildOfOpenExistentialExpr(e, index) + or + result = getImmediateChildOfOptionalEvaluationExpr(e, index) + or + result = getImmediateChildOfOtherInitializerRefExpr(e, index) + or + result = getImmediateChildOfOverloadedDeclRefExpr(e, index) + or + result = getImmediateChildOfPackElementExpr(e, index) + or + result = getImmediateChildOfPackExpansionExpr(e, index) + or + result = getImmediateChildOfPropertyWrapperValuePlaceholderExpr(e, index) + or + result = getImmediateChildOfRebindSelfInInitializerExpr(e, index) + or + result = getImmediateChildOfSequenceExpr(e, index) + or + result = getImmediateChildOfSingleValueStmtExpr(e, index) + or + result = getImmediateChildOfSuperRefExpr(e, index) + or + result = getImmediateChildOfTapExpr(e, index) + or + result = getImmediateChildOfTupleElementExpr(e, index) + or + result = getImmediateChildOfTupleExpr(e, index) + or + result = getImmediateChildOfTypeExpr(e, index) + or + result = getImmediateChildOfTypeValueExpr(e, index) + or + result = getImmediateChildOfUnresolvedDeclRefExpr(e, index) + or + result = getImmediateChildOfUnresolvedDotExpr(e, index) + or + result = getImmediateChildOfUnresolvedMemberExpr(e, index) + or + result = getImmediateChildOfUnresolvedPatternExpr(e, index) + or + result = getImmediateChildOfUnresolvedSpecializeExpr(e, index) + or + result = getImmediateChildOfVarargExpansionExpr(e, index) + or + result = getImmediateChildOfAbiSafeConversionExpr(e, index) + or + result = getImmediateChildOfActorIsolationErasureExpr(e, index) + or + result = getImmediateChildOfAnyHashableErasureExpr(e, index) + or + result = getImmediateChildOfArchetypeToSuperExpr(e, index) + or + result = getImmediateChildOfArrayExpr(e, index) + or + result = getImmediateChildOfArrayToPointerExpr(e, index) + or + result = getImmediateChildOfAutoClosureExpr(e, index) + or + result = getImmediateChildOfAwaitExpr(e, index) + or + result = getImmediateChildOfBinaryExpr(e, index) + or + result = getImmediateChildOfBorrowExpr(e, index) + or + result = getImmediateChildOfBridgeFromObjCExpr(e, index) + or + result = getImmediateChildOfBridgeToObjCExpr(e, index) + or + result = getImmediateChildOfCallExpr(e, index) + or + result = getImmediateChildOfClassMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfCoerceExpr(e, index) + or + result = getImmediateChildOfCollectionUpcastConversionExpr(e, index) + or + result = getImmediateChildOfConditionalBridgeFromObjCExpr(e, index) + or + result = getImmediateChildOfCovariantFunctionConversionExpr(e, index) + or + result = getImmediateChildOfCovariantReturnConversionExpr(e, index) + or + result = getImmediateChildOfDerivedToBaseExpr(e, index) + or + result = getImmediateChildOfDestructureTupleExpr(e, index) + or + result = getImmediateChildOfDictionaryExpr(e, index) + or + result = getImmediateChildOfDifferentiableFunctionExpr(e, index) + or + result = getImmediateChildOfDifferentiableFunctionExtractOriginalExpr(e, index) + or + result = getImmediateChildOfDotSelfExpr(e, index) + or + result = getImmediateChildOfErasureExpr(e, index) + or + result = getImmediateChildOfExistentialMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfExplicitClosureExpr(e, index) + or + result = getImmediateChildOfForceTryExpr(e, index) + or + result = getImmediateChildOfForeignObjectConversionExpr(e, index) + or + result = getImmediateChildOfFunctionConversionExpr(e, index) + or + result = getImmediateChildOfInOutToPointerExpr(e, index) + or + result = getImmediateChildOfInjectIntoOptionalExpr(e, index) + or + result = getImmediateChildOfInterpolatedStringLiteralExpr(e, index) + or + result = getImmediateChildOfLinearFunctionExpr(e, index) + or + result = getImmediateChildOfLinearFunctionExtractOriginalExpr(e, index) + or + result = getImmediateChildOfLinearToDifferentiableFunctionExpr(e, index) + or + result = getImmediateChildOfLoadExpr(e, index) + or + result = getImmediateChildOfMemberRefExpr(e, index) + or + result = getImmediateChildOfMetatypeConversionExpr(e, index) + or + result = getImmediateChildOfNilLiteralExpr(e, index) + or + result = getImmediateChildOfObjectLiteralExpr(e, index) + or + result = getImmediateChildOfOptionalTryExpr(e, index) + or + result = getImmediateChildOfParenExpr(e, index) + or + result = getImmediateChildOfPointerToPointerExpr(e, index) + or + result = getImmediateChildOfPostfixUnaryExpr(e, index) + or + result = getImmediateChildOfPrefixUnaryExpr(e, index) + or + result = getImmediateChildOfProtocolMetatypeToObjectExpr(e, index) + or + result = getImmediateChildOfRegexLiteralExpr(e, index) + or + result = getImmediateChildOfStringToPointerExpr(e, index) + or + result = getImmediateChildOfSubscriptExpr(e, index) + or + result = getImmediateChildOfTryExpr(e, index) + or + result = getImmediateChildOfUnderlyingToOpaqueExpr(e, index) + or + result = getImmediateChildOfUnevaluatedInstanceExpr(e, index) + or + result = getImmediateChildOfUnreachableExpr(e, index) + or + result = getImmediateChildOfUnresolvedMemberChainResultExpr(e, index) + or + result = getImmediateChildOfUnresolvedTypeConversionExpr(e, index) + or + result = getImmediateChildOfUnsafeCastExpr(e, index) + or + result = getImmediateChildOfUnsafeExpr(e, index) + or + result = getImmediateChildOfBooleanLiteralExpr(e, index) + or + result = getImmediateChildOfConditionalCheckedCastExpr(e, index) + or + result = getImmediateChildOfDotSyntaxCallExpr(e, index) + or + result = getImmediateChildOfDynamicMemberRefExpr(e, index) + or + result = getImmediateChildOfDynamicSubscriptExpr(e, index) + or + result = getImmediateChildOfForcedCheckedCastExpr(e, index) + or + result = getImmediateChildOfInitializerRefCallExpr(e, index) + or + result = getImmediateChildOfIsExpr(e, index) + or + result = getImmediateChildOfMagicIdentifierLiteralExpr(e, index) + or + result = getImmediateChildOfStringLiteralExpr(e, index) + or + result = getImmediateChildOfFloatLiteralExpr(e, index) + or + result = getImmediateChildOfIntegerLiteralExpr(e, index) + or + result = getImmediateChildOfAnyPattern(e, index) + or + result = getImmediateChildOfBindingPattern(e, index) + or + result = getImmediateChildOfBoolPattern(e, index) + or + result = getImmediateChildOfEnumElementPattern(e, index) + or + result = getImmediateChildOfExprPattern(e, index) + or + result = getImmediateChildOfIsPattern(e, index) + or + result = getImmediateChildOfNamedPattern(e, index) + or + result = getImmediateChildOfOptionalSomePattern(e, index) + or + result = getImmediateChildOfParenPattern(e, index) + or + result = getImmediateChildOfTuplePattern(e, index) + or + result = getImmediateChildOfTypedPattern(e, index) + or + result = getImmediateChildOfCaseLabelItem(e, index) + or + result = getImmediateChildOfConditionElement(e, index) + or + result = getImmediateChildOfStmtCondition(e, index) + or + result = getImmediateChildOfBraceStmt(e, index) + or + result = getImmediateChildOfBreakStmt(e, index) + or + result = getImmediateChildOfCaseStmt(e, index) + or + result = getImmediateChildOfContinueStmt(e, index) + or + result = getImmediateChildOfDeferStmt(e, index) + or + result = getImmediateChildOfDiscardStmt(e, index) + or + result = getImmediateChildOfFailStmt(e, index) + or + result = getImmediateChildOfFallthroughStmt(e, index) + or + result = getImmediateChildOfPoundAssertStmt(e, index) + or + result = getImmediateChildOfReturnStmt(e, index) + or + result = getImmediateChildOfThenStmt(e, index) + or + result = getImmediateChildOfThrowStmt(e, index) + or + result = getImmediateChildOfYieldStmt(e, index) + or + result = getImmediateChildOfDoCatchStmt(e, index) + or + result = getImmediateChildOfDoStmt(e, index) + or + result = getImmediateChildOfForEachStmt(e, index) + or + result = getImmediateChildOfRepeatWhileStmt(e, index) + or + result = getImmediateChildOfSwitchStmt(e, index) + or + result = getImmediateChildOfGuardStmt(e, index) + or + result = getImmediateChildOfIfStmt(e, index) + or + result = getImmediateChildOfWhileStmt(e, index) + or + result = getImmediateChildOfTypeRepr(e, index) + or + result = getImmediateChildOfDependentMemberType(e, index) + or + result = getImmediateChildOfDynamicSelfType(e, index) + or + result = getImmediateChildOfErrorType(e, index) + or + result = getImmediateChildOfExistentialType(e, index) + or + result = getImmediateChildOfInOutType(e, index) + or + result = getImmediateChildOfIntegerType(e, index) + or + result = getImmediateChildOfLValueType(e, index) + or + result = getImmediateChildOfModuleType(e, index) + or + result = getImmediateChildOfPackElementType(e, index) + or + result = getImmediateChildOfPackExpansionType(e, index) + or + result = getImmediateChildOfPackType(e, index) + or + result = getImmediateChildOfParameterizedProtocolType(e, index) + or + result = getImmediateChildOfProtocolCompositionType(e, index) + or + result = getImmediateChildOfTupleType(e, index) + or + result = getImmediateChildOfUnresolvedType(e, index) + or + result = getImmediateChildOfBuiltinBridgeObjectType(e, index) + or + result = getImmediateChildOfBuiltinDefaultActorStorageType(e, index) + or + result = getImmediateChildOfBuiltinExecutorType(e, index) + or + result = getImmediateChildOfBuiltinFixedArrayType(e, index) + or + result = getImmediateChildOfBuiltinFloatType(e, index) + or + result = getImmediateChildOfBuiltinJobType(e, index) + or + result = getImmediateChildOfBuiltinNativeObjectType(e, index) + or + result = getImmediateChildOfBuiltinRawPointerType(e, index) + or + result = getImmediateChildOfBuiltinRawUnsafeContinuationType(e, index) + or + result = getImmediateChildOfBuiltinUnsafeValueBufferType(e, index) + or + result = getImmediateChildOfBuiltinVectorType(e, index) + or + result = getImmediateChildOfExistentialMetatypeType(e, index) + or + result = getImmediateChildOfFunctionType(e, index) + or + result = getImmediateChildOfGenericFunctionType(e, index) + or + result = getImmediateChildOfGenericTypeParamType(e, index) + or + result = getImmediateChildOfMetatypeType(e, index) + or + result = getImmediateChildOfParenType(e, index) + or + result = getImmediateChildOfTypeAliasType(e, index) + or + result = getImmediateChildOfUnboundGenericType(e, index) + or + result = getImmediateChildOfUnmanagedStorageType(e, index) + or + result = getImmediateChildOfUnownedStorageType(e, index) + or + result = getImmediateChildOfWeakStorageType(e, index) + or + result = getImmediateChildOfBuiltinIntegerLiteralType(e, index) + or + result = getImmediateChildOfBuiltinIntegerType(e, index) + or + result = getImmediateChildOfDictionaryType(e, index) + or + result = getImmediateChildOfInlineArrayType(e, index) + or + result = getImmediateChildOfOpaqueTypeArchetypeType(e, index) + or + result = getImmediateChildOfPackArchetypeType(e, index) + or + result = getImmediateChildOfPrimaryArchetypeType(e, index) + or + result = getImmediateChildOfArraySliceType(e, index) + or + result = getImmediateChildOfBoundGenericClassType(e, index) + or + result = getImmediateChildOfBoundGenericEnumType(e, index) + or + result = getImmediateChildOfBoundGenericStructType(e, index) + or + result = getImmediateChildOfClassType(e, index) + or + result = getImmediateChildOfElementArchetypeType(e, index) + or + result = getImmediateChildOfEnumType(e, index) + or + result = getImmediateChildOfExistentialArchetypeType(e, index) + or + result = getImmediateChildOfOptionalType(e, index) + or + result = getImmediateChildOfProtocolType(e, index) + or + result = getImmediateChildOfStructType(e, index) + or + result = getImmediateChildOfVariadicSequenceType(e, index) + } } diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index 886fb855047..27508df94e9 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -1453,66 +1453,84 @@ module Synth { /** * INTERNAL: Do not use. + * + * Gets the parent of synthetic element `e`. + */ + Raw::Element getSynthParent(TElement e) { none() } + + /** + * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAvailabilityInfo`, if possible. */ TAvailabilityInfo convertAvailabilityInfoFromRaw(Raw::Element e) { result = TAvailabilityInfo(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAvailabilitySpec`, if possible. */ TAvailabilitySpec convertAvailabilitySpecFromRaw(Raw::Element e) { result = TAvailabilitySpec(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TComment`, if possible. */ TComment convertCommentFromRaw(Raw::Element e) { result = TComment(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDbFile`, if possible. */ TDbFile convertDbFileFromRaw(Raw::Element e) { result = TDbFile(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDbLocation`, if possible. */ TDbLocation convertDbLocationFromRaw(Raw::Element e) { result = TDbLocation(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiagnostics`, if possible. */ TDiagnostics convertDiagnosticsFromRaw(Raw::Element e) { result = TDiagnostics(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathComponent`, if possible. */ TKeyPathComponent convertKeyPathComponentFromRaw(Raw::Element e) { result = TKeyPathComponent(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroRole`, if possible. */ TMacroRole convertMacroRoleFromRaw(Raw::Element e) { result = TMacroRole(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnknownFile`, if possible. */ TUnknownFile convertUnknownFileFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnknownLocation`, if possible. */ TUnknownLocation convertUnknownLocationFromRaw(Raw::Element e) { none() } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnspecifiedElement`, if possible. */ TUnspecifiedElement convertUnspecifiedElementFromRaw(Raw::Element e) { @@ -1521,12 +1539,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAccessor`, if possible. */ TAccessor convertAccessorFromRaw(Raw::Element e) { result = TAccessor(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssociatedTypeDecl`, if possible. */ TAssociatedTypeDecl convertAssociatedTypeDeclFromRaw(Raw::Element e) { @@ -1535,54 +1555,63 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCapturedDecl`, if possible. */ TCapturedDecl convertCapturedDeclFromRaw(Raw::Element e) { result = TCapturedDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassDecl`, if possible. */ TClassDecl convertClassDeclFromRaw(Raw::Element e) { result = TClassDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConcreteVarDecl`, if possible. */ TConcreteVarDecl convertConcreteVarDeclFromRaw(Raw::Element e) { result = TConcreteVarDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeinitializer`, if possible. */ TDeinitializer convertDeinitializerFromRaw(Raw::Element e) { result = TDeinitializer(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumCaseDecl`, if possible. */ TEnumCaseDecl convertEnumCaseDeclFromRaw(Raw::Element e) { result = TEnumCaseDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumDecl`, if possible. */ TEnumDecl convertEnumDeclFromRaw(Raw::Element e) { result = TEnumDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumElementDecl`, if possible. */ TEnumElementDecl convertEnumElementDeclFromRaw(Raw::Element e) { result = TEnumElementDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtensionDecl`, if possible. */ TExtensionDecl convertExtensionDeclFromRaw(Raw::Element e) { result = TExtensionDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericTypeParamDecl`, if possible. */ TGenericTypeParamDecl convertGenericTypeParamDeclFromRaw(Raw::Element e) { @@ -1591,18 +1620,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfConfigDecl`, if possible. */ TIfConfigDecl convertIfConfigDeclFromRaw(Raw::Element e) { result = TIfConfigDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TImportDecl`, if possible. */ TImportDecl convertImportDeclFromRaw(Raw::Element e) { result = TImportDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInfixOperatorDecl`, if possible. */ TInfixOperatorDecl convertInfixOperatorDeclFromRaw(Raw::Element e) { @@ -1611,18 +1643,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInitializer`, if possible. */ TInitializer convertInitializerFromRaw(Raw::Element e) { result = TInitializer(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMacroDecl`, if possible. */ TMacroDecl convertMacroDeclFromRaw(Raw::Element e) { result = TMacroDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMissingMemberDecl`, if possible. */ TMissingMemberDecl convertMissingMemberDeclFromRaw(Raw::Element e) { @@ -1631,30 +1666,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModuleDecl`, if possible. */ TModuleDecl convertModuleDeclFromRaw(Raw::Element e) { result = TModuleDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedFunction`, if possible. */ TNamedFunction convertNamedFunctionFromRaw(Raw::Element e) { result = TNamedFunction(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueTypeDecl`, if possible. */ TOpaqueTypeDecl convertOpaqueTypeDeclFromRaw(Raw::Element e) { result = TOpaqueTypeDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParamDecl`, if possible. */ TParamDecl convertParamDeclFromRaw(Raw::Element e) { result = TParamDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPatternBindingDecl`, if possible. */ TPatternBindingDecl convertPatternBindingDeclFromRaw(Raw::Element e) { @@ -1663,6 +1703,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPostfixOperatorDecl`, if possible. */ TPostfixOperatorDecl convertPostfixOperatorDeclFromRaw(Raw::Element e) { @@ -1671,6 +1712,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPoundDiagnosticDecl`, if possible. */ TPoundDiagnosticDecl convertPoundDiagnosticDeclFromRaw(Raw::Element e) { @@ -1679,6 +1721,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrecedenceGroupDecl`, if possible. */ TPrecedenceGroupDecl convertPrecedenceGroupDeclFromRaw(Raw::Element e) { @@ -1687,6 +1730,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixOperatorDecl`, if possible. */ TPrefixOperatorDecl convertPrefixOperatorDeclFromRaw(Raw::Element e) { @@ -1695,42 +1739,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolDecl`, if possible. */ TProtocolDecl convertProtocolDeclFromRaw(Raw::Element e) { result = TProtocolDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructDecl`, if possible. */ TStructDecl convertStructDeclFromRaw(Raw::Element e) { result = TStructDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSubscriptDecl`, if possible. */ TSubscriptDecl convertSubscriptDeclFromRaw(Raw::Element e) { result = TSubscriptDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTopLevelCodeDecl`, if possible. */ TTopLevelCodeDecl convertTopLevelCodeDeclFromRaw(Raw::Element e) { result = TTopLevelCodeDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAliasDecl`, if possible. */ TTypeAliasDecl convertTypeAliasDeclFromRaw(Raw::Element e) { result = TTypeAliasDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUsingDecl`, if possible. */ TUsingDecl convertUsingDeclFromRaw(Raw::Element e) { result = TUsingDecl(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAbiSafeConversionExpr`, if possible. */ TAbiSafeConversionExpr convertAbiSafeConversionExprFromRaw(Raw::Element e) { @@ -1739,6 +1790,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TActorIsolationErasureExpr`, if possible. */ TActorIsolationErasureExpr convertActorIsolationErasureExprFromRaw(Raw::Element e) { @@ -1747,6 +1799,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAnyHashableErasureExpr`, if possible. */ TAnyHashableErasureExpr convertAnyHashableErasureExprFromRaw(Raw::Element e) { @@ -1755,6 +1808,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAppliedPropertyWrapperExpr`, if possible. */ TAppliedPropertyWrapperExpr convertAppliedPropertyWrapperExprFromRaw(Raw::Element e) { @@ -1763,6 +1817,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArchetypeToSuperExpr`, if possible. */ TArchetypeToSuperExpr convertArchetypeToSuperExprFromRaw(Raw::Element e) { @@ -1771,18 +1826,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArgument`, if possible. */ TArgument convertArgumentFromRaw(Raw::Element e) { result = TArgument(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayExpr`, if possible. */ TArrayExpr convertArrayExprFromRaw(Raw::Element e) { result = TArrayExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArrayToPointerExpr`, if possible. */ TArrayToPointerExpr convertArrayToPointerExprFromRaw(Raw::Element e) { @@ -1791,36 +1849,42 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAssignExpr`, if possible. */ TAssignExpr convertAssignExprFromRaw(Raw::Element e) { result = TAssignExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAutoClosureExpr`, if possible. */ TAutoClosureExpr convertAutoClosureExprFromRaw(Raw::Element e) { result = TAutoClosureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAwaitExpr`, if possible. */ TAwaitExpr convertAwaitExprFromRaw(Raw::Element e) { result = TAwaitExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBinaryExpr`, if possible. */ TBinaryExpr convertBinaryExprFromRaw(Raw::Element e) { result = TBinaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBindOptionalExpr`, if possible. */ TBindOptionalExpr convertBindOptionalExprFromRaw(Raw::Element e) { result = TBindOptionalExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBooleanLiteralExpr`, if possible. */ TBooleanLiteralExpr convertBooleanLiteralExprFromRaw(Raw::Element e) { @@ -1829,12 +1893,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBorrowExpr`, if possible. */ TBorrowExpr convertBorrowExprFromRaw(Raw::Element e) { result = TBorrowExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBridgeFromObjCExpr`, if possible. */ TBridgeFromObjCExpr convertBridgeFromObjCExprFromRaw(Raw::Element e) { @@ -1843,24 +1909,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBridgeToObjCExpr`, if possible. */ TBridgeToObjCExpr convertBridgeToObjCExprFromRaw(Raw::Element e) { result = TBridgeToObjCExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCallExpr`, if possible. */ TCallExpr convertCallExprFromRaw(Raw::Element e) { result = TCallExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaptureListExpr`, if possible. */ TCaptureListExpr convertCaptureListExprFromRaw(Raw::Element e) { result = TCaptureListExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassMetatypeToObjectExpr`, if possible. */ TClassMetatypeToObjectExpr convertClassMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -1869,12 +1939,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCoerceExpr`, if possible. */ TCoerceExpr convertCoerceExprFromRaw(Raw::Element e) { result = TCoerceExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCollectionUpcastConversionExpr`, if possible. */ TCollectionUpcastConversionExpr convertCollectionUpcastConversionExprFromRaw(Raw::Element e) { @@ -1883,6 +1955,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionalBridgeFromObjCExpr`, if possible. */ TConditionalBridgeFromObjCExpr convertConditionalBridgeFromObjCExprFromRaw(Raw::Element e) { @@ -1891,6 +1964,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionalCheckedCastExpr`, if possible. */ TConditionalCheckedCastExpr convertConditionalCheckedCastExprFromRaw(Raw::Element e) { @@ -1899,18 +1973,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConsumeExpr`, if possible. */ TConsumeExpr convertConsumeExprFromRaw(Raw::Element e) { result = TConsumeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCopyExpr`, if possible. */ TCopyExpr convertCopyExprFromRaw(Raw::Element e) { result = TCopyExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCovariantFunctionConversionExpr`, if possible. */ TCovariantFunctionConversionExpr convertCovariantFunctionConversionExprFromRaw(Raw::Element e) { @@ -1919,6 +1996,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCovariantReturnConversionExpr`, if possible. */ TCovariantReturnConversionExpr convertCovariantReturnConversionExprFromRaw(Raw::Element e) { @@ -1927,6 +2005,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCurrentContextIsolationExpr`, if possible. */ TCurrentContextIsolationExpr convertCurrentContextIsolationExprFromRaw(Raw::Element e) { @@ -1935,12 +2014,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeclRefExpr`, if possible. */ TDeclRefExpr convertDeclRefExprFromRaw(Raw::Element e) { result = TDeclRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDefaultArgumentExpr`, if possible. */ TDefaultArgumentExpr convertDefaultArgumentExprFromRaw(Raw::Element e) { @@ -1949,6 +2030,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDerivedToBaseExpr`, if possible. */ TDerivedToBaseExpr convertDerivedToBaseExprFromRaw(Raw::Element e) { @@ -1957,6 +2039,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDestructureTupleExpr`, if possible. */ TDestructureTupleExpr convertDestructureTupleExprFromRaw(Raw::Element e) { @@ -1965,12 +2048,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDictionaryExpr`, if possible. */ TDictionaryExpr convertDictionaryExprFromRaw(Raw::Element e) { result = TDictionaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDifferentiableFunctionExpr`, if possible. */ TDifferentiableFunctionExpr convertDifferentiableFunctionExprFromRaw(Raw::Element e) { @@ -1979,6 +2064,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDifferentiableFunctionExtractOriginalExpr`, if possible. */ TDifferentiableFunctionExtractOriginalExpr convertDifferentiableFunctionExtractOriginalExprFromRaw( @@ -1989,6 +2075,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiscardAssignmentExpr`, if possible. */ TDiscardAssignmentExpr convertDiscardAssignmentExprFromRaw(Raw::Element e) { @@ -1997,12 +2084,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSelfExpr`, if possible. */ TDotSelfExpr convertDotSelfExprFromRaw(Raw::Element e) { result = TDotSelfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSyntaxBaseIgnoredExpr`, if possible. */ TDotSyntaxBaseIgnoredExpr convertDotSyntaxBaseIgnoredExprFromRaw(Raw::Element e) { @@ -2011,6 +2100,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDotSyntaxCallExpr`, if possible. */ TDotSyntaxCallExpr convertDotSyntaxCallExprFromRaw(Raw::Element e) { @@ -2019,6 +2109,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicMemberRefExpr`, if possible. */ TDynamicMemberRefExpr convertDynamicMemberRefExprFromRaw(Raw::Element e) { @@ -2027,6 +2118,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicSubscriptExpr`, if possible. */ TDynamicSubscriptExpr convertDynamicSubscriptExprFromRaw(Raw::Element e) { @@ -2035,30 +2127,35 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicTypeExpr`, if possible. */ TDynamicTypeExpr convertDynamicTypeExprFromRaw(Raw::Element e) { result = TDynamicTypeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumIsCaseExpr`, if possible. */ TEnumIsCaseExpr convertEnumIsCaseExprFromRaw(Raw::Element e) { result = TEnumIsCaseExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErasureExpr`, if possible. */ TErasureExpr convertErasureExprFromRaw(Raw::Element e) { result = TErasureExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErrorExpr`, if possible. */ TErrorExpr convertErrorExprFromRaw(Raw::Element e) { result = TErrorExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialMetatypeToObjectExpr`, if possible. */ TExistentialMetatypeToObjectExpr convertExistentialMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -2067,6 +2164,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExplicitClosureExpr`, if possible. */ TExplicitClosureExpr convertExplicitClosureExprFromRaw(Raw::Element e) { @@ -2075,6 +2173,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExtractFunctionIsolationExpr`, if possible. */ TExtractFunctionIsolationExpr convertExtractFunctionIsolationExprFromRaw(Raw::Element e) { @@ -2083,24 +2182,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFloatLiteralExpr`, if possible. */ TFloatLiteralExpr convertFloatLiteralExprFromRaw(Raw::Element e) { result = TFloatLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForceTryExpr`, if possible. */ TForceTryExpr convertForceTryExprFromRaw(Raw::Element e) { result = TForceTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForceValueExpr`, if possible. */ TForceValueExpr convertForceValueExprFromRaw(Raw::Element e) { result = TForceValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForcedCheckedCastExpr`, if possible. */ TForcedCheckedCastExpr convertForcedCheckedCastExprFromRaw(Raw::Element e) { @@ -2109,6 +2212,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForeignObjectConversionExpr`, if possible. */ TForeignObjectConversionExpr convertForeignObjectConversionExprFromRaw(Raw::Element e) { @@ -2117,6 +2221,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunctionConversionExpr`, if possible. */ TFunctionConversionExpr convertFunctionConversionExprFromRaw(Raw::Element e) { @@ -2125,18 +2230,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfExpr`, if possible. */ TIfExpr convertIfExprFromRaw(Raw::Element e) { result = TIfExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutExpr`, if possible. */ TInOutExpr convertInOutExprFromRaw(Raw::Element e) { result = TInOutExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutToPointerExpr`, if possible. */ TInOutToPointerExpr convertInOutToPointerExprFromRaw(Raw::Element e) { @@ -2145,6 +2253,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInitializerRefCallExpr`, if possible. */ TInitializerRefCallExpr convertInitializerRefCallExprFromRaw(Raw::Element e) { @@ -2153,6 +2262,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInjectIntoOptionalExpr`, if possible. */ TInjectIntoOptionalExpr convertInjectIntoOptionalExprFromRaw(Raw::Element e) { @@ -2161,6 +2271,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIntegerLiteralExpr`, if possible. */ TIntegerLiteralExpr convertIntegerLiteralExprFromRaw(Raw::Element e) { @@ -2169,6 +2280,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInterpolatedStringLiteralExpr`, if possible. */ TInterpolatedStringLiteralExpr convertInterpolatedStringLiteralExprFromRaw(Raw::Element e) { @@ -2177,12 +2289,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIsExpr`, if possible. */ TIsExpr convertIsExprFromRaw(Raw::Element e) { result = TIsExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathApplicationExpr`, if possible. */ TKeyPathApplicationExpr convertKeyPathApplicationExprFromRaw(Raw::Element e) { @@ -2191,18 +2305,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathDotExpr`, if possible. */ TKeyPathDotExpr convertKeyPathDotExprFromRaw(Raw::Element e) { result = TKeyPathDotExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TKeyPathExpr`, if possible. */ TKeyPathExpr convertKeyPathExprFromRaw(Raw::Element e) { result = TKeyPathExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLazyInitializationExpr`, if possible. */ TLazyInitializationExpr convertLazyInitializationExprFromRaw(Raw::Element e) { @@ -2211,6 +2328,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearFunctionExpr`, if possible. */ TLinearFunctionExpr convertLinearFunctionExprFromRaw(Raw::Element e) { @@ -2219,6 +2337,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearFunctionExtractOriginalExpr`, if possible. */ TLinearFunctionExtractOriginalExpr convertLinearFunctionExtractOriginalExprFromRaw(Raw::Element e) { @@ -2227,6 +2346,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLinearToDifferentiableFunctionExpr`, if possible. */ TLinearToDifferentiableFunctionExpr convertLinearToDifferentiableFunctionExprFromRaw( @@ -2237,12 +2357,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLoadExpr`, if possible. */ TLoadExpr convertLoadExprFromRaw(Raw::Element e) { result = TLoadExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMagicIdentifierLiteralExpr`, if possible. */ TMagicIdentifierLiteralExpr convertMagicIdentifierLiteralExprFromRaw(Raw::Element e) { @@ -2251,6 +2373,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMakeTemporarilyEscapableExpr`, if possible. */ TMakeTemporarilyEscapableExpr convertMakeTemporarilyEscapableExprFromRaw(Raw::Element e) { @@ -2259,6 +2382,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMaterializePackExpr`, if possible. */ TMaterializePackExpr convertMaterializePackExprFromRaw(Raw::Element e) { @@ -2267,12 +2391,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMemberRefExpr`, if possible. */ TMemberRefExpr convertMemberRefExprFromRaw(Raw::Element e) { result = TMemberRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMetatypeConversionExpr`, if possible. */ TMetatypeConversionExpr convertMetatypeConversionExprFromRaw(Raw::Element e) { @@ -2281,24 +2407,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMethodLookupExpr`, if possible. */ TMethodLookupExpr convertMethodLookupExprFromRaw(Raw::Element e) { result = TMethodLookupExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNilLiteralExpr`, if possible. */ TNilLiteralExpr convertNilLiteralExprFromRaw(Raw::Element e) { result = TNilLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TObjCSelectorExpr`, if possible. */ TObjCSelectorExpr convertObjCSelectorExprFromRaw(Raw::Element e) { result = TObjCSelectorExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TObjectLiteralExpr`, if possible. */ TObjectLiteralExpr convertObjectLiteralExprFromRaw(Raw::Element e) { @@ -2307,18 +2437,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOneWayExpr`, if possible. */ TOneWayExpr convertOneWayExprFromRaw(Raw::Element e) { result = TOneWayExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueValueExpr`, if possible. */ TOpaqueValueExpr convertOpaqueValueExprFromRaw(Raw::Element e) { result = TOpaqueValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpenExistentialExpr`, if possible. */ TOpenExistentialExpr convertOpenExistentialExprFromRaw(Raw::Element e) { @@ -2327,6 +2460,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalEvaluationExpr`, if possible. */ TOptionalEvaluationExpr convertOptionalEvaluationExprFromRaw(Raw::Element e) { @@ -2335,12 +2469,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalTryExpr`, if possible. */ TOptionalTryExpr convertOptionalTryExprFromRaw(Raw::Element e) { result = TOptionalTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOtherInitializerRefExpr`, if possible. */ TOtherInitializerRefExpr convertOtherInitializerRefExprFromRaw(Raw::Element e) { @@ -2349,6 +2485,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOverloadedDeclRefExpr`, if possible. */ TOverloadedDeclRefExpr convertOverloadedDeclRefExprFromRaw(Raw::Element e) { @@ -2357,12 +2494,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackElementExpr`, if possible. */ TPackElementExpr convertPackElementExprFromRaw(Raw::Element e) { result = TPackElementExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackExpansionExpr`, if possible. */ TPackExpansionExpr convertPackExpansionExprFromRaw(Raw::Element e) { @@ -2371,12 +2510,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenExpr`, if possible. */ TParenExpr convertParenExprFromRaw(Raw::Element e) { result = TParenExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPointerToPointerExpr`, if possible. */ TPointerToPointerExpr convertPointerToPointerExprFromRaw(Raw::Element e) { @@ -2385,18 +2526,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPostfixUnaryExpr`, if possible. */ TPostfixUnaryExpr convertPostfixUnaryExprFromRaw(Raw::Element e) { result = TPostfixUnaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrefixUnaryExpr`, if possible. */ TPrefixUnaryExpr convertPrefixUnaryExprFromRaw(Raw::Element e) { result = TPrefixUnaryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPropertyWrapperValuePlaceholderExpr`, if possible. */ TPropertyWrapperValuePlaceholderExpr convertPropertyWrapperValuePlaceholderExprFromRaw( @@ -2407,6 +2551,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolMetatypeToObjectExpr`, if possible. */ TProtocolMetatypeToObjectExpr convertProtocolMetatypeToObjectExprFromRaw(Raw::Element e) { @@ -2415,6 +2560,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRebindSelfInInitializerExpr`, if possible. */ TRebindSelfInInitializerExpr convertRebindSelfInInitializerExprFromRaw(Raw::Element e) { @@ -2423,18 +2569,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRegexLiteralExpr`, if possible. */ TRegexLiteralExpr convertRegexLiteralExprFromRaw(Raw::Element e) { result = TRegexLiteralExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSequenceExpr`, if possible. */ TSequenceExpr convertSequenceExprFromRaw(Raw::Element e) { result = TSequenceExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSingleValueStmtExpr`, if possible. */ TSingleValueStmtExpr convertSingleValueStmtExprFromRaw(Raw::Element e) { @@ -2443,6 +2592,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStringLiteralExpr`, if possible. */ TStringLiteralExpr convertStringLiteralExprFromRaw(Raw::Element e) { @@ -2451,6 +2601,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStringToPointerExpr`, if possible. */ TStringToPointerExpr convertStringToPointerExprFromRaw(Raw::Element e) { @@ -2459,54 +2610,63 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSubscriptExpr`, if possible. */ TSubscriptExpr convertSubscriptExprFromRaw(Raw::Element e) { result = TSubscriptExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSuperRefExpr`, if possible. */ TSuperRefExpr convertSuperRefExprFromRaw(Raw::Element e) { result = TSuperRefExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTapExpr`, if possible. */ TTapExpr convertTapExprFromRaw(Raw::Element e) { result = TTapExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTryExpr`, if possible. */ TTryExpr convertTryExprFromRaw(Raw::Element e) { result = TTryExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleElementExpr`, if possible. */ TTupleElementExpr convertTupleElementExprFromRaw(Raw::Element e) { result = TTupleElementExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleExpr`, if possible. */ TTupleExpr convertTupleExprFromRaw(Raw::Element e) { result = TTupleExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeExpr`, if possible. */ TTypeExpr convertTypeExprFromRaw(Raw::Element e) { result = TTypeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeValueExpr`, if possible. */ TTypeValueExpr convertTypeValueExprFromRaw(Raw::Element e) { result = TTypeValueExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnderlyingToOpaqueExpr`, if possible. */ TUnderlyingToOpaqueExpr convertUnderlyingToOpaqueExprFromRaw(Raw::Element e) { @@ -2515,6 +2675,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnevaluatedInstanceExpr`, if possible. */ TUnevaluatedInstanceExpr convertUnevaluatedInstanceExprFromRaw(Raw::Element e) { @@ -2523,12 +2684,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnreachableExpr`, if possible. */ TUnreachableExpr convertUnreachableExprFromRaw(Raw::Element e) { result = TUnreachableExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedDeclRefExpr`, if possible. */ TUnresolvedDeclRefExpr convertUnresolvedDeclRefExprFromRaw(Raw::Element e) { @@ -2537,6 +2700,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedDotExpr`, if possible. */ TUnresolvedDotExpr convertUnresolvedDotExprFromRaw(Raw::Element e) { @@ -2545,6 +2709,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedMemberChainResultExpr`, if possible. */ TUnresolvedMemberChainResultExpr convertUnresolvedMemberChainResultExprFromRaw(Raw::Element e) { @@ -2553,6 +2718,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedMemberExpr`, if possible. */ TUnresolvedMemberExpr convertUnresolvedMemberExprFromRaw(Raw::Element e) { @@ -2561,6 +2727,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedPatternExpr`, if possible. */ TUnresolvedPatternExpr convertUnresolvedPatternExprFromRaw(Raw::Element e) { @@ -2569,6 +2736,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedSpecializeExpr`, if possible. */ TUnresolvedSpecializeExpr convertUnresolvedSpecializeExprFromRaw(Raw::Element e) { @@ -2577,6 +2745,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedTypeConversionExpr`, if possible. */ TUnresolvedTypeConversionExpr convertUnresolvedTypeConversionExprFromRaw(Raw::Element e) { @@ -2585,18 +2754,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnsafeCastExpr`, if possible. */ TUnsafeCastExpr convertUnsafeCastExprFromRaw(Raw::Element e) { result = TUnsafeCastExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnsafeExpr`, if possible. */ TUnsafeExpr convertUnsafeExprFromRaw(Raw::Element e) { result = TUnsafeExpr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVarargExpansionExpr`, if possible. */ TVarargExpansionExpr convertVarargExpansionExprFromRaw(Raw::Element e) { @@ -2605,24 +2777,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TAnyPattern`, if possible. */ TAnyPattern convertAnyPatternFromRaw(Raw::Element e) { result = TAnyPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBindingPattern`, if possible. */ TBindingPattern convertBindingPatternFromRaw(Raw::Element e) { result = TBindingPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoolPattern`, if possible. */ TBoolPattern convertBoolPatternFromRaw(Raw::Element e) { result = TBoolPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumElementPattern`, if possible. */ TEnumElementPattern convertEnumElementPatternFromRaw(Raw::Element e) { @@ -2631,24 +2807,28 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExprPattern`, if possible. */ TExprPattern convertExprPatternFromRaw(Raw::Element e) { result = TExprPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIsPattern`, if possible. */ TIsPattern convertIsPatternFromRaw(Raw::Element e) { result = TIsPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TNamedPattern`, if possible. */ TNamedPattern convertNamedPatternFromRaw(Raw::Element e) { result = TNamedPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalSomePattern`, if possible. */ TOptionalSomePattern convertOptionalSomePatternFromRaw(Raw::Element e) { @@ -2657,174 +2837,203 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenPattern`, if possible. */ TParenPattern convertParenPatternFromRaw(Raw::Element e) { result = TParenPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTuplePattern`, if possible. */ TTuplePattern convertTuplePatternFromRaw(Raw::Element e) { result = TTuplePattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypedPattern`, if possible. */ TTypedPattern convertTypedPatternFromRaw(Raw::Element e) { result = TTypedPattern(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBraceStmt`, if possible. */ TBraceStmt convertBraceStmtFromRaw(Raw::Element e) { result = TBraceStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBreakStmt`, if possible. */ TBreakStmt convertBreakStmtFromRaw(Raw::Element e) { result = TBreakStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaseLabelItem`, if possible. */ TCaseLabelItem convertCaseLabelItemFromRaw(Raw::Element e) { result = TCaseLabelItem(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TCaseStmt`, if possible. */ TCaseStmt convertCaseStmtFromRaw(Raw::Element e) { result = TCaseStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TConditionElement`, if possible. */ TConditionElement convertConditionElementFromRaw(Raw::Element e) { result = TConditionElement(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TContinueStmt`, if possible. */ TContinueStmt convertContinueStmtFromRaw(Raw::Element e) { result = TContinueStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDeferStmt`, if possible. */ TDeferStmt convertDeferStmtFromRaw(Raw::Element e) { result = TDeferStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDiscardStmt`, if possible. */ TDiscardStmt convertDiscardStmtFromRaw(Raw::Element e) { result = TDiscardStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDoCatchStmt`, if possible. */ TDoCatchStmt convertDoCatchStmtFromRaw(Raw::Element e) { result = TDoCatchStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDoStmt`, if possible. */ TDoStmt convertDoStmtFromRaw(Raw::Element e) { result = TDoStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFailStmt`, if possible. */ TFailStmt convertFailStmtFromRaw(Raw::Element e) { result = TFailStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFallthroughStmt`, if possible. */ TFallthroughStmt convertFallthroughStmtFromRaw(Raw::Element e) { result = TFallthroughStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TForEachStmt`, if possible. */ TForEachStmt convertForEachStmtFromRaw(Raw::Element e) { result = TForEachStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGuardStmt`, if possible. */ TGuardStmt convertGuardStmtFromRaw(Raw::Element e) { result = TGuardStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIfStmt`, if possible. */ TIfStmt convertIfStmtFromRaw(Raw::Element e) { result = TIfStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPoundAssertStmt`, if possible. */ TPoundAssertStmt convertPoundAssertStmtFromRaw(Raw::Element e) { result = TPoundAssertStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TRepeatWhileStmt`, if possible. */ TRepeatWhileStmt convertRepeatWhileStmtFromRaw(Raw::Element e) { result = TRepeatWhileStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TReturnStmt`, if possible. */ TReturnStmt convertReturnStmtFromRaw(Raw::Element e) { result = TReturnStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStmtCondition`, if possible. */ TStmtCondition convertStmtConditionFromRaw(Raw::Element e) { result = TStmtCondition(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TSwitchStmt`, if possible. */ TSwitchStmt convertSwitchStmtFromRaw(Raw::Element e) { result = TSwitchStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TThenStmt`, if possible. */ TThenStmt convertThenStmtFromRaw(Raw::Element e) { result = TThenStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TThrowStmt`, if possible. */ TThrowStmt convertThrowStmtFromRaw(Raw::Element e) { result = TThrowStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWhileStmt`, if possible. */ TWhileStmt convertWhileStmtFromRaw(Raw::Element e) { result = TWhileStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TYieldStmt`, if possible. */ TYieldStmt convertYieldStmtFromRaw(Raw::Element e) { result = TYieldStmt(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TArraySliceType`, if possible. */ TArraySliceType convertArraySliceTypeFromRaw(Raw::Element e) { result = TArraySliceType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericClassType`, if possible. */ TBoundGenericClassType convertBoundGenericClassTypeFromRaw(Raw::Element e) { @@ -2833,6 +3042,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericEnumType`, if possible. */ TBoundGenericEnumType convertBoundGenericEnumTypeFromRaw(Raw::Element e) { @@ -2841,6 +3051,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBoundGenericStructType`, if possible. */ TBoundGenericStructType convertBoundGenericStructTypeFromRaw(Raw::Element e) { @@ -2849,6 +3060,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinBridgeObjectType`, if possible. */ TBuiltinBridgeObjectType convertBuiltinBridgeObjectTypeFromRaw(Raw::Element e) { @@ -2857,6 +3069,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinDefaultActorStorageType`, if possible. */ TBuiltinDefaultActorStorageType convertBuiltinDefaultActorStorageTypeFromRaw(Raw::Element e) { @@ -2865,6 +3078,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinExecutorType`, if possible. */ TBuiltinExecutorType convertBuiltinExecutorTypeFromRaw(Raw::Element e) { @@ -2873,6 +3087,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinFixedArrayType`, if possible. */ TBuiltinFixedArrayType convertBuiltinFixedArrayTypeFromRaw(Raw::Element e) { @@ -2881,12 +3096,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinFloatType`, if possible. */ TBuiltinFloatType convertBuiltinFloatTypeFromRaw(Raw::Element e) { result = TBuiltinFloatType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinIntegerLiteralType`, if possible. */ TBuiltinIntegerLiteralType convertBuiltinIntegerLiteralTypeFromRaw(Raw::Element e) { @@ -2895,6 +3112,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinIntegerType`, if possible. */ TBuiltinIntegerType convertBuiltinIntegerTypeFromRaw(Raw::Element e) { @@ -2903,12 +3121,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinJobType`, if possible. */ TBuiltinJobType convertBuiltinJobTypeFromRaw(Raw::Element e) { result = TBuiltinJobType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinNativeObjectType`, if possible. */ TBuiltinNativeObjectType convertBuiltinNativeObjectTypeFromRaw(Raw::Element e) { @@ -2917,6 +3137,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinRawPointerType`, if possible. */ TBuiltinRawPointerType convertBuiltinRawPointerTypeFromRaw(Raw::Element e) { @@ -2925,6 +3146,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinRawUnsafeContinuationType`, if possible. */ TBuiltinRawUnsafeContinuationType convertBuiltinRawUnsafeContinuationTypeFromRaw(Raw::Element e) { @@ -2933,6 +3155,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinUnsafeValueBufferType`, if possible. */ TBuiltinUnsafeValueBufferType convertBuiltinUnsafeValueBufferTypeFromRaw(Raw::Element e) { @@ -2941,6 +3164,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TBuiltinVectorType`, if possible. */ TBuiltinVectorType convertBuiltinVectorTypeFromRaw(Raw::Element e) { @@ -2949,12 +3173,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TClassType`, if possible. */ TClassType convertClassTypeFromRaw(Raw::Element e) { result = TClassType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDependentMemberType`, if possible. */ TDependentMemberType convertDependentMemberTypeFromRaw(Raw::Element e) { @@ -2963,18 +3189,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDictionaryType`, if possible. */ TDictionaryType convertDictionaryTypeFromRaw(Raw::Element e) { result = TDictionaryType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TDynamicSelfType`, if possible. */ TDynamicSelfType convertDynamicSelfTypeFromRaw(Raw::Element e) { result = TDynamicSelfType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TElementArchetypeType`, if possible. */ TElementArchetypeType convertElementArchetypeTypeFromRaw(Raw::Element e) { @@ -2983,18 +3212,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TEnumType`, if possible. */ TEnumType convertEnumTypeFromRaw(Raw::Element e) { result = TEnumType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TErrorType`, if possible. */ TErrorType convertErrorTypeFromRaw(Raw::Element e) { result = TErrorType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialArchetypeType`, if possible. */ TExistentialArchetypeType convertExistentialArchetypeTypeFromRaw(Raw::Element e) { @@ -3003,6 +3235,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialMetatypeType`, if possible. */ TExistentialMetatypeType convertExistentialMetatypeTypeFromRaw(Raw::Element e) { @@ -3011,18 +3244,21 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TExistentialType`, if possible. */ TExistentialType convertExistentialTypeFromRaw(Raw::Element e) { result = TExistentialType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TFunctionType`, if possible. */ TFunctionType convertFunctionTypeFromRaw(Raw::Element e) { result = TFunctionType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericFunctionType`, if possible. */ TGenericFunctionType convertGenericFunctionTypeFromRaw(Raw::Element e) { @@ -3031,6 +3267,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TGenericTypeParamType`, if possible. */ TGenericTypeParamType convertGenericTypeParamTypeFromRaw(Raw::Element e) { @@ -3039,42 +3276,49 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInOutType`, if possible. */ TInOutType convertInOutTypeFromRaw(Raw::Element e) { result = TInOutType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TInlineArrayType`, if possible. */ TInlineArrayType convertInlineArrayTypeFromRaw(Raw::Element e) { result = TInlineArrayType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TIntegerType`, if possible. */ TIntegerType convertIntegerTypeFromRaw(Raw::Element e) { result = TIntegerType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TLValueType`, if possible. */ TLValueType convertLValueTypeFromRaw(Raw::Element e) { result = TLValueType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TMetatypeType`, if possible. */ TMetatypeType convertMetatypeTypeFromRaw(Raw::Element e) { result = TMetatypeType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TModuleType`, if possible. */ TModuleType convertModuleTypeFromRaw(Raw::Element e) { result = TModuleType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOpaqueTypeArchetypeType`, if possible. */ TOpaqueTypeArchetypeType convertOpaqueTypeArchetypeTypeFromRaw(Raw::Element e) { @@ -3083,12 +3327,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TOptionalType`, if possible. */ TOptionalType convertOptionalTypeFromRaw(Raw::Element e) { result = TOptionalType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackArchetypeType`, if possible. */ TPackArchetypeType convertPackArchetypeTypeFromRaw(Raw::Element e) { @@ -3097,12 +3343,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackElementType`, if possible. */ TPackElementType convertPackElementTypeFromRaw(Raw::Element e) { result = TPackElementType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackExpansionType`, if possible. */ TPackExpansionType convertPackExpansionTypeFromRaw(Raw::Element e) { @@ -3111,12 +3359,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPackType`, if possible. */ TPackType convertPackTypeFromRaw(Raw::Element e) { result = TPackType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParameterizedProtocolType`, if possible. */ TParameterizedProtocolType convertParameterizedProtocolTypeFromRaw(Raw::Element e) { @@ -3125,12 +3375,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TParenType`, if possible. */ TParenType convertParenTypeFromRaw(Raw::Element e) { result = TParenType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TPrimaryArchetypeType`, if possible. */ TPrimaryArchetypeType convertPrimaryArchetypeTypeFromRaw(Raw::Element e) { @@ -3139,6 +3391,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolCompositionType`, if possible. */ TProtocolCompositionType convertProtocolCompositionTypeFromRaw(Raw::Element e) { @@ -3147,36 +3400,42 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TProtocolType`, if possible. */ TProtocolType convertProtocolTypeFromRaw(Raw::Element e) { result = TProtocolType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TStructType`, if possible. */ TStructType convertStructTypeFromRaw(Raw::Element e) { result = TStructType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTupleType`, if possible. */ TTupleType convertTupleTypeFromRaw(Raw::Element e) { result = TTupleType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeAliasType`, if possible. */ TTypeAliasType convertTypeAliasTypeFromRaw(Raw::Element e) { result = TTypeAliasType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TTypeRepr`, if possible. */ TTypeRepr convertTypeReprFromRaw(Raw::Element e) { result = TTypeRepr(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnboundGenericType`, if possible. */ TUnboundGenericType convertUnboundGenericTypeFromRaw(Raw::Element e) { @@ -3185,6 +3444,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnmanagedStorageType`, if possible. */ TUnmanagedStorageType convertUnmanagedStorageTypeFromRaw(Raw::Element e) { @@ -3193,6 +3453,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnownedStorageType`, if possible. */ TUnownedStorageType convertUnownedStorageTypeFromRaw(Raw::Element e) { @@ -3201,12 +3462,14 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TUnresolvedType`, if possible. */ TUnresolvedType convertUnresolvedTypeFromRaw(Raw::Element e) { result = TUnresolvedType(e) } /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TVariadicSequenceType`, if possible. */ TVariadicSequenceType convertVariadicSequenceTypeFromRaw(Raw::Element e) { @@ -3215,6 +3478,7 @@ module Synth { /** * INTERNAL: Do not use. + * * Converts a raw element to a synthesized `TWeakStorageType`, if possible. */ TWeakStorageType convertWeakStorageTypeFromRaw(Raw::Element e) { result = TWeakStorageType(e) } From c81f5f51900e87ecdfca9d705c8aafd4f914539b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 6 Nov 2025 20:27:10 +0100 Subject: [PATCH 621/965] Rust: Remove elements superseded by attribute macro expansions --- rust/ql/.generated.list | 1 - rust/ql/.gitattributes | 1 - .../rust/elements/internal/AstNodeImpl.qll | 14 +-- .../rust/elements/internal/ElementImpl.qll | 111 ++++++++++++++++++ .../rust/elements/internal/ItemImpl.qll | 8 +- .../rust/elements/internal/LocatableImpl.qll | 14 +-- .../rust/elements/internal/MacroCallImpl.qll | 22 +--- .../codeql/rust/internal/PathResolution.qll | 23 +--- .../PathResolutionInlineExpectationsTest.qll | 7 +- .../queries/unusedentities/UnreachableCode.ql | 2 +- .../src/queries/unusedentities/UnusedValue.ql | 2 +- .../queries/unusedentities/UnusedVariable.qll | 2 +- .../macro-expansion/PrintAst.expected | 95 ++------------- .../macro-expansion/test.expected | 32 +++-- .../macro-in-library/PrintAst.expected | 2 +- .../PathResolutionConsistency.expected | 1 - .../sources/net/TaintSources.expected | 1 - .../web_frameworks/InlineFlow.expected | 44 ------- .../web_frameworks/TaintSources.expected | 37 ------ .../test/library-tests/variables/variables.ql | 2 +- .../PathResolutionConsistency.expected | 1 - .../PathResolutionConsistency.expected | 1 - .../security/CWE-918/RequestForgery.expected | 32 ----- .../unusedentities/UnusedValue.expected | 6 +- .../test/query-tests/unusedentities/main.rs | 10 +- 25 files changed, 164 insertions(+), 307 deletions(-) diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 13b8156aaa9..5ed2894e273 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -287,7 +287,6 @@ lib/codeql/rust/elements/internal/ImplConstructor.qll 24edccca59f70d812d1458b412 lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll 1ed355e5e56f432b24b6f4778e4dc45c6e65095190cacb7a5015529e0c9d01f8 c8505185a042da4eb20a0cc32323194a0290c4bf821c7e0fce7351b194b10f31 lib/codeql/rust/elements/internal/IndexExprConstructor.qll 99bdc3d793c4dbd993860da60abe2b7c604345d645e86916462bc55a6939a5d1 3fe9d7da725956903707806aadbecac8d5b3874e8bed63c9bab54fff630e75dd lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll bc5f16853401617fc9c5af8a1287a23c5921df1b615cfbe2d7c7a70145ecfcbd da93bd28ea2daade2cbb0a729be3fbf05f72bc02009565c7bb062e4f68fdb9e7 -lib/codeql/rust/elements/internal/ItemImpl.qll e3fb78d572ce1c3cc857d2671bd71ff4d7850321acfddc5f15533ff87accda79 fbabc2081e4b2773b04938d57bb51af908c80b7bc53c3127c74ab5d4fb9837bc lib/codeql/rust/elements/internal/ItemListConstructor.qll 08af3bd12536941c3dd4a43c81cc861be24325e242e2593c087a3ce632674291 2fa166159c409d2aaffa73a30babb40829a6de580bd40894d909ee6152801082 lib/codeql/rust/elements/internal/ItemListImpl.qll 195dbe93c334ad2bfc29db530bda9aaea88fc31696b2f230faae9e6c2ecb74a8 e498983a5b2f7a91e2fd336e85ac17e521a18c677784a0788d95bb283f3652e7 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index ff149fb36d3..bde61270e6a 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -289,7 +289,6 @@ /lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/IndexExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/InferTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ItemImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index 237ebfa6b41..69138190dba 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -13,9 +13,9 @@ private import codeql.rust.controlflow.ControlFlowGraph */ module Impl { private import rust + private import codeql.rust.elements.internal.ElementImpl::Impl as ElementImpl private import codeql.rust.elements.internal.generated.ParentChild private import codeql.rust.controlflow.ControlFlowGraph - private import codeql.rust.elements.internal.MacroCallImpl::Impl as MacroCallImpl /** * Gets the immediate parent of a non-`AstNode` element `e`. @@ -71,21 +71,15 @@ module Impl { } /** Holds if this node is inside a macro expansion. */ - predicate isInMacroExpansion() { MacroCallImpl::isInMacroExpansion(_, this) } + predicate isInMacroExpansion() { ElementImpl::MacroExpansion::isInMacroExpansion(this) } /** * Holds if this node exists only as the result of a macro expansion. * * This is the same as `isInMacroExpansion()`, but excludes AST nodes corresponding - * to macro arguments. + * to macro arguments, including attribute macro targets. */ - pragma[nomagic] - predicate isFromMacroExpansion() { - exists(AstNode root | - MacroCallImpl::isInMacroExpansion(root, this) and - not this = root.(MacroCall).getATokenTreeNode() - ) - } + predicate isFromMacroExpansion() { ElementImpl::MacroExpansion::isFromMacroExpansion(this) } /** * Gets a control flow node for this AST node, if any. diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index 7a464a378d1..36b4f22c20e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -11,7 +11,118 @@ private import codeql.rust.elements.internal.generated.Element * be referenced directly. */ module Impl { + private import rust + private import codeql.rust.elements.internal.generated.ParentChild + private import codeql.rust.elements.internal.generated.Synth + private import codeql.rust.elements.internal.generated.Raw + private import codeql.rust.elements.internal.LocationImpl + + /** + * Provides logic for classifying elements with respect to macro expansions. + */ + cached + module MacroExpansion { + /** + * Holds if `e` is superseded by an attribute macro expansion. That is, `e` is + * a transitive child of an item with an attribute macro expansion. + * + * Since this predicate is referenced in the charpred of `Element`, we need to + * use the parent-child relation on raw elements to avoid non-monotonicity. + */ + private predicate supersededByAttributeMacroExpansionRaw(Raw::Item item, Raw::Element e) { + exists(item.getAttributeMacroExpansion()) and + e = Raw::getImmediateChild(item, _) and + not e = item.getAttributeMacroExpansion() and + // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn + // f() {}` the macro expansion supersedes `fn f() {}` but not `#[a]`. + not e instanceof Raw::Attr + or + exists(Raw::Element parent | + e = Raw::getImmediateChild(parent, _) and + supersededByAttributeMacroExpansionRaw(item, parent) + ) + } + + private predicate isMacroExpansion(AstNode macro, AstNode expansion) { + expansion = macro.(MacroCall).getMacroCallExpansion() + or + expansion = macro.(Adt).getDeriveMacroExpansion(_) + or + expansion = macro.(Item).getAttributeMacroExpansion() + } + + /** + * Gets the immediately enclosing macro invocation for element `e`, if any. + * + * The result is either a `MacroCall`, and `Adt` with a derive macro expansion, or + * an `Item` with an attribute macro expansion. + */ + cached + AstNode getImmediatelyEnclosingMacroInvocation(Element e) { + isMacroExpansion(result, e) + or + exists(Element mid | + result = getImmediatelyEnclosingMacroInvocation(mid) and + mid = getImmediateParent(e) and + not isMacroExpansion(mid, e) + ) + } + + pragma[nomagic] + private predicate isAttributeMacroExpansionSourceLocation(Item i, Location l) { + exists(Raw::Locatable e, @location_default loc | + supersededByAttributeMacroExpansionRaw(Synth::convertElementToRaw(i), e) and + locatable_locations(e, loc) and + l = LocationImpl::TLocationDefault(loc) + ) + } + + /** Gets an AST node whose location is inside the token tree belonging to `mc`. */ + pragma[nomagic] + private AstNode getATokenTreeNode(MacroCall mc) { + mc = getImmediatelyEnclosingMacroInvocation(result) and + mc.getTokenTree().getLocation().contains(result.getLocation()) + } + + /** Holds if `n` is inside a macro expansion. */ + cached + predicate isInMacroExpansion(AstNode n) { exists(getImmediatelyEnclosingMacroInvocation(n)) } + + /** + * Holds if `n` exists only as the result of a macro expansion. + * + * This is the same as `isInMacroExpansion(n)`, but excludes AST nodes corresponding + * to macro arguments, including attribute macro targets. + * + * Note: This predicate is a heuristic based on location information and may not be + * accurate in all cases. + */ + cached + predicate isFromMacroExpansion(AstNode n) { + exists(AstNode macro | + macro = getImmediatelyEnclosingMacroInvocation(n) and + not n = getATokenTreeNode(macro) and + not isAttributeMacroExpansionSourceLocation(macro, n.getLocation()) + ) + or + isFromMacroExpansion(getImmediatelyEnclosingMacroInvocation(n)) + } + + cached + predicate isRelevantElement(Generated::Element e) { + exists(Raw::Element raw | + raw = Synth::convertElementToRaw(e) and + not supersededByAttributeMacroExpansionRaw(_, raw) + ) + or + // Synthetic elements are relevant when their parents are + Synth::convertFormatArgsExprToRaw(_) = Synth::getSynthParent(e) + } + } + class Element extends Generated::Element { + Element() { MacroExpansion::isRelevantElement(this) } + override string toStringImpl() { result = this.getAPrimaryQlClass() } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll index f211708bc81..46e554e4b42 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Item`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Item * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An item such as a function, struct, enum, etc. * @@ -23,4 +23,10 @@ module Impl { * ``` */ class Item extends Generated::Item { } + + private class ItemWithAttributeMacroExpansion extends Item { + ItemWithAttributeMacroExpansion() { this.hasAttributeMacroExpansion() } + + override string toStringImpl() { result = "(item with attribute macro expansion)" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll index fcb5289e049..78a9e7f38ec 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll @@ -5,6 +5,7 @@ */ import codeql.Locations +private import codeql.rust.elements.internal.ElementImpl::Impl as ElementImpl private import codeql.rust.elements.internal.LocationImpl private import codeql.rust.elements.internal.generated.Locatable private import codeql.rust.elements.internal.generated.Synth @@ -50,21 +51,12 @@ module Impl { locatable_locations(Synth::convertLocatableToRaw(l), result) } - private MacroCall getImmediatelyEnclosingMacroCall(AstNode n) { - result = n.getParentNode() - or - exists(AstNode mid | - result = getImmediatelyEnclosingMacroCall(mid) and - n.getParentNode() = mid and - not mid instanceof MacroCall - ) - } - /** Gets the non-synthesized location of `l`, if any. */ LocationImpl::LocationDefault getLocationDefault(Locatable l) { result = LocationImpl::TLocationDefault(getDbLocation(l)) or not exists(getDbLocation(l)) and - result = getLocationDefault(getImmediatelyEnclosingMacroCall(l)) + result = + getLocationDefault(ElementImpl::MacroExpansion::getImmediatelyEnclosingMacroInvocation(l)) } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index 17cc47d803f..8e048517f63 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -14,17 +14,6 @@ module Impl { private import rust private import codeql.rust.internal.PathResolution - pragma[nomagic] - predicate isInMacroExpansion(AstNode root, AstNode n) { - n = root.(MacroCall).getMacroCallExpansion() - or - n = root.(Adt).getDeriveMacroExpansion(_) - or - n = root.(Item).getAttributeMacroExpansion() - or - isInMacroExpansion(root, n.getParentNode()) - } - // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A macro invocation. @@ -35,16 +24,7 @@ module Impl { * ``` */ class MacroCall extends Generated::MacroCall { - override string toStringImpl() { - if this.hasPath() then result = this.getPath().toAbbreviatedString() + "!..." else result = "" - } - - /** Gets an AST node whose location is inside the token tree belonging to this macro call. */ - pragma[nomagic] - AstNode getATokenTreeNode() { - isInMacroExpansion(this, result) and - this.getTokenTree().getLocation().contains(result.getLocation()) - } + override string toStringImpl() { result = this.getPath().toAbbreviatedString() + "!..." } /** * Gets the macro definition that this macro call resolves to. diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index fc49b7ca5e8..2bf316f78bc 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -90,24 +90,6 @@ private module UseOption = Option; private class UseOption = UseOption::Option; -/** - * Holds if `n` is superseded by an attribute macro expansion. That is, `n` is - * an item or a transitive child of an item with an attribute macro expansion. - */ -predicate supersededByAttributeMacroExpansion(AstNode n) { - n.(Item).hasAttributeMacroExpansion() - or - exists(AstNode parent | - n.getParentNode() = parent and - supersededByAttributeMacroExpansion(parent) and - // Don't exclude expansions themselves as they supercede other nodes. - not n = parent.(Item).getAttributeMacroExpansion() and - // Don't consider attributes themselves to be superseded. E.g., in `#[a] fn - // f() {}` the macro expansion supercedes `fn f() {}` but not `#[a]`. - not n instanceof Attr - ) -} - /** * An item that may be referred to by a path, and which is a node in * the _item graph_. @@ -186,10 +168,7 @@ predicate supersededByAttributeMacroExpansion(AstNode n) { * - https://doc.rust-lang.org/reference/names/namespaces.html */ abstract class ItemNode extends Locatable { - ItemNode() { - // Exclude items that are superseded by the expansion of an attribute macro. - not supersededByAttributeMacroExpansion(this) - } + ItemNode() { not this.(Item).hasAttributeMacroExpansion() } /** Gets the (original) name of this item. */ abstract string getName(); diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index f7606b941ac..d8b2703203d 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -10,9 +10,8 @@ private import utils.test.InlineExpectationsTest private module ResolveTest implements TestSig { string getARelevantTag() { result = "item" } - private predicate itemAt(ItemNode i, string filepath, int line, boolean inMacro) { - i.getLocation().hasLocationInfo(filepath, _, _, line, _) and - if i.(AstNode).isInMacroExpansion() then inMacro = true else inMacro = false + private predicate itemAt(ItemNode i, string filepath, int line) { + i.getLocation().hasLocationInfo(filepath, _, _, line, _) } private predicate commmentAt(string text, string filepath, int line) { @@ -25,7 +24,7 @@ private module ResolveTest implements TestSig { } private predicate item(ItemNode i, string value) { - exists(string filepath, int line, boolean inMacro | itemAt(i, filepath, line, inMacro) | + exists(string filepath, int line | itemAt(i, filepath, line) | if i instanceof SourceFile then value = i.getFile().getBaseName() else ( diff --git a/rust/ql/src/queries/unusedentities/UnreachableCode.ql b/rust/ql/src/queries/unusedentities/UnreachableCode.ql index 15a45c6f4b5..bb9092fb570 100644 --- a/rust/ql/src/queries/unusedentities/UnreachableCode.ql +++ b/rust/ql/src/queries/unusedentities/UnreachableCode.ql @@ -33,7 +33,7 @@ predicate hiddenNode(AstNode n) { n instanceof ControlFlowGraphImpl::PostOrderTree and // location is counter-intuitive not n instanceof MacroExpr or - n.isInMacroExpansion() + n.isFromMacroExpansion() } /** diff --git a/rust/ql/src/queries/unusedentities/UnusedValue.ql b/rust/ql/src/queries/unusedentities/UnusedValue.ql index 14204a2273b..07e80b00b45 100644 --- a/rust/ql/src/queries/unusedentities/UnusedValue.ql +++ b/rust/ql/src/queries/unusedentities/UnusedValue.ql @@ -18,7 +18,7 @@ from AstNode write, Ssa::Variable v where variableWrite(_, write, v) and not v instanceof DiscardVariable and - not write.isInMacroExpansion() and + not write.isFromMacroExpansion() and not isAllowableUnused(v) and // SSA definitions are only created for live writes not write = any(Ssa::WriteDefinition def).getWriteAccess().getAstNode() and diff --git a/rust/ql/src/queries/unusedentities/UnusedVariable.qll b/rust/ql/src/queries/unusedentities/UnusedVariable.qll index ad75415634c..c0684636e77 100644 --- a/rust/ql/src/queries/unusedentities/UnusedVariable.qll +++ b/rust/ql/src/queries/unusedentities/UnusedVariable.qll @@ -36,7 +36,7 @@ class IncompleteCallable extends Callable { */ predicate isAllowableUnused(Variable v) { // in a macro expansion - v.getPat().isInMacroExpansion() + v.getPat().isInMacroExpansion() // TODO: replace with `isFromMacroExpansion()` when false positives have been removed or // declared in an incomplete callable v.getEnclosingCfgScope() instanceof IncompleteCallable diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index ffff0f53e7e..1a0ded6950d 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -174,7 +174,7 @@ macro_expansion.rs: # 1| getPath(): [Path] MyTrait # 1| getSegment(): [PathSegment] MyTrait # 1| getIdentifier(): [NameRef] MyTrait -# 3| getItem(1): [Function] fn foo +# 3| getItem(1): [Function] (item with attribute macro expansion) # 4| getAttributeMacroExpansion(): [MacroItems] MacroItems # 4| getItem(0): [Function] fn foo # 4| getParamList(): [ParamList] ParamList @@ -190,7 +190,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] fn inner +# 7| getStatement(1): [Function] (item with attribute macro expansion) # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -202,16 +202,12 @@ macro_expansion.rs: # 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 -# 8| getParamList(): [ParamList] ParamList # 7| getAttr(0): [Attr] Attr # 7| getMeta(): [Meta] Meta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt # 10| getExpr(): [CallExpr] inner_0(...) # 10| getArgList(): [ArgList] ArgList @@ -242,7 +238,7 @@ macro_expansion.rs: # 5| getIdentifier(): [NameRef] concat # 5| getTokenTree(): [TokenTree] TokenTree # 5| getMacroCallExpansion(): [StringLiteralExpr] "Hello world!" -# 7| getStatement(1): [Function] fn inner +# 7| getStatement(1): [Function] (item with attribute macro expansion) # 8| getAttributeMacroExpansion(): [MacroItems] MacroItems # 8| getItem(0): [Function] fn inner_0 # 8| getParamList(): [ParamList] ParamList @@ -254,16 +250,12 @@ macro_expansion.rs: # 8| getFunctionBody(): [BlockExpr] { ... } # 8| getStmtList(): [StmtList] StmtList # 8| getName(): [Name] inner_1 -# 8| getParamList(): [ParamList] ParamList # 7| getAttr(0): [Attr] Attr # 7| getMeta(): [Meta] Meta # 7| getPath(): [Path] repeat # 7| getSegment(): [PathSegment] repeat # 7| getIdentifier(): [NameRef] repeat # 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner # 10| getStatement(2): [ExprStmt] ExprStmt # 10| getExpr(): [CallExpr] inner_0(...) # 10| getArgList(): [ArgList] ArgList @@ -280,53 +272,14 @@ macro_expansion.rs: # 11| getIdentifier(): [NameRef] inner_1 # 4| getName(): [Name] foo_new # 4| getVisibility(): [Visibility] Visibility -# 4| getParamList(): [ParamList] ParamList # 3| getAttr(0): [Attr] Attr # 3| getMeta(): [Meta] Meta # 3| getPath(): [Path] add_one # 3| getSegment(): [PathSegment] add_one # 3| getIdentifier(): [NameRef] add_one -# 4| getFunctionBody(): [BlockExpr] { ... } -# 4| getStmtList(): [StmtList] StmtList -# 5| getStatement(0): [ExprStmt] ExprStmt -# 5| getExpr(): [AssignmentExpr] ... = ... -# 5| getLhs(): [UnderscoreExpr] _ -# 5| getRhs(): [MacroExpr] MacroExpr -# 5| getMacroCall(): [MacroCall] concat!... -# 5| getPath(): [Path] concat -# 5| getSegment(): [PathSegment] concat -# 5| getIdentifier(): [NameRef] concat -# 5| getTokenTree(): [TokenTree] TokenTree -# 7| getStatement(1): [Function] fn inner -# 8| getParamList(): [ParamList] ParamList -# 7| getAttr(0): [Attr] Attr -# 7| getMeta(): [Meta] Meta -# 7| getPath(): [Path] repeat -# 7| getSegment(): [PathSegment] repeat -# 7| getIdentifier(): [NameRef] repeat -# 7| getTokenTree(): [TokenTree] TokenTree -# 8| getFunctionBody(): [BlockExpr] { ... } -# 8| getStmtList(): [StmtList] StmtList -# 8| getName(): [Name] inner -# 10| getStatement(2): [ExprStmt] ExprStmt -# 10| getExpr(): [CallExpr] inner_0(...) -# 10| getArgList(): [ArgList] ArgList -# 10| getFunction(): [PathExpr] inner_0 -# 10| getPath(): [Path] inner_0 -# 10| getSegment(): [PathSegment] inner_0 -# 10| getIdentifier(): [NameRef] inner_0 -# 11| getStatement(3): [ExprStmt] ExprStmt -# 11| getExpr(): [CallExpr] inner_1(...) -# 11| getArgList(): [ArgList] ArgList -# 11| getFunction(): [PathExpr] inner_1 -# 11| getPath(): [Path] inner_1 -# 11| getSegment(): [PathSegment] inner_1 -# 11| getIdentifier(): [NameRef] inner_1 -# 4| getName(): [Name] foo -# 4| getVisibility(): [Visibility] Visibility -# 14| getItem(2): [Function] fn bar +# 14| getItem(2): [Function] (item with attribute macro expansion) # 15| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 15| getItem(0): [Function] fn bar_0 +# 15| getItem(0): [Function] (item with attribute macro expansion) # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_0 # 16| getParamList(): [ParamList] ParamList @@ -340,17 +293,12 @@ macro_expansion.rs: # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_0_new # 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 15| getAttr(0): [Attr] Attr # 15| getMeta(): [Meta] Meta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar_0 -# 16| getVisibility(): [Visibility] Visibility -# 15| getItem(1): [Function] fn bar_1 +# 15| getItem(1): [Function] (item with attribute macro expansion) # 16| getAttributeMacroExpansion(): [MacroItems] MacroItems # 16| getItem(0): [Function] fn bar_1 # 16| getParamList(): [ParamList] ParamList @@ -364,17 +312,11 @@ macro_expansion.rs: # 16| getStmtList(): [StmtList] StmtList # 16| getName(): [Name] bar_1_new # 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 15| getAttr(0): [Attr] Attr # 15| getMeta(): [Meta] Meta # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar_1 -# 16| getVisibility(): [Visibility] Visibility -# 16| getParamList(): [ParamList] ParamList # 14| getAttr(0): [Attr] Attr # 14| getMeta(): [Meta] Meta # 14| getPath(): [Path] repeat @@ -386,22 +328,13 @@ macro_expansion.rs: # 15| getPath(): [Path] add_one # 15| getSegment(): [PathSegment] add_one # 15| getIdentifier(): [NameRef] add_one -# 16| getFunctionBody(): [BlockExpr] { ... } -# 16| getStmtList(): [StmtList] StmtList -# 16| getName(): [Name] bar -# 16| getVisibility(): [Visibility] Visibility -# 18| getItem(3): [Function] fn baz +# 18| getItem(3): [Function] (item with attribute macro expansion) # 18| getAttributeMacroExpansion(): [MacroItems] MacroItems -# 19| getParamList(): [ParamList] ParamList # 18| getAttr(0): [Attr] Attr # 18| getMeta(): [Meta] Meta # 18| getPath(): [Path] erase # 18| getSegment(): [PathSegment] erase # 18| getIdentifier(): [NameRef] erase -# 19| getFunctionBody(): [BlockExpr] { ... } -# 19| getStmtList(): [StmtList] StmtList -# 19| getName(): [Name] baz -# 19| getVisibility(): [Visibility] Visibility # 22| getItem(4): [MacroRules] MacroRules # 22| getName(): [Name] hello # 22| getTokenTree(): [TokenTree] TokenTree @@ -410,7 +343,7 @@ macro_expansion.rs: # 28| getVisibility(): [Visibility] Visibility # 30| getItem(6): [Impl] impl S { ... } # 30| getAssocItemList(): [AssocItemList] AssocItemList -# 31| getAssocItem(0): [Function] fn bzz +# 31| getAssocItem(0): [Function] (item with attribute macro expansion) # 32| getAttributeMacroExpansion(): [MacroItems] MacroItems # 32| getItem(0): [Function] fn bzz_0 # 32| getParamList(): [ParamList] ParamList @@ -556,24 +489,12 @@ macro_expansion.rs: # 31| getIdentifier(): [NameRef] _print # 32| getName(): [Name] bzz_2 # 32| getVisibility(): [Visibility] Visibility -# 32| getParamList(): [ParamList] ParamList # 31| getAttr(0): [Attr] Attr # 31| getMeta(): [Meta] Meta # 31| getPath(): [Path] repeat # 31| getSegment(): [PathSegment] repeat # 31| getIdentifier(): [NameRef] repeat # 31| getTokenTree(): [TokenTree] TokenTree -# 32| getFunctionBody(): [BlockExpr] { ... } -# 32| getStmtList(): [StmtList] StmtList -# 33| getStatement(0): [ExprStmt] ExprStmt -# 33| getExpr(): [MacroExpr] MacroExpr -# 33| getMacroCall(): [MacroCall] hello!... -# 33| getPath(): [Path] hello -# 33| getSegment(): [PathSegment] hello -# 33| getIdentifier(): [NameRef] hello -# 33| getTokenTree(): [TokenTree] TokenTree -# 32| getName(): [Name] bzz -# 32| getVisibility(): [Visibility] Visibility # 30| getSelfTy(): [PathTypeRepr] S # 30| getPath(): [Path] S # 30| getSegment(): [PathSegment] S diff --git a/rust/ql/test/extractor-tests/macro-expansion/test.expected b/rust/ql/test/extractor-tests/macro-expansion/test.expected index 930a0f443bd..5abff30113b 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/test.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/test.expected @@ -1,19 +1,19 @@ attribute_macros -| macro_expansion.rs:3:1:12:1 | fn foo | 0 | macro_expansion.rs:4:1:12:1 | fn foo | -| macro_expansion.rs:3:1:12:1 | fn foo | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | -| macro_expansion.rs:7:5:8:17 | fn inner | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | fn inner | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | -| macro_expansion.rs:7:5:8:17 | fn inner | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:7:5:8:17 | fn inner | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | -| macro_expansion.rs:14:1:16:15 | fn bar | 0 | macro_expansion.rs:15:1:16:15 | fn bar_0 | -| macro_expansion.rs:14:1:16:15 | fn bar | 1 | macro_expansion.rs:15:1:16:15 | fn bar_1 | -| macro_expansion.rs:15:1:16:15 | fn bar_0 | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | -| macro_expansion.rs:15:1:16:15 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | -| macro_expansion.rs:15:1:16:15 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | -| macro_expansion.rs:15:1:16:15 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | -| macro_expansion.rs:31:5:34:5 | fn bzz | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | -| macro_expansion.rs:31:5:34:5 | fn bzz | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | -| macro_expansion.rs:31:5:34:5 | fn bzz | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | +| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 0 | macro_expansion.rs:4:1:12:1 | fn foo | +| macro_expansion.rs:3:1:12:1 | (item with attribute macro expansion) | 1 | macro_expansion.rs:4:1:12:1 | fn foo_new | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 0 | macro_expansion.rs:8:5:8:17 | fn inner_0 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:7:5:8:17 | (item with attribute macro expansion) | 1 | macro_expansion.rs:8:5:8:17 | fn inner_1 | +| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | +| macro_expansion.rs:14:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_0 | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 0 | macro_expansion.rs:16:1:16:15 | fn bar_1 | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_0_new | +| macro_expansion.rs:15:1:16:15 | (item with attribute macro expansion) | 1 | macro_expansion.rs:16:1:16:15 | fn bar_1_new | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 0 | macro_expansion.rs:32:5:34:5 | fn bzz_0 | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 1 | macro_expansion.rs:32:5:34:5 | fn bzz_1 | +| macro_expansion.rs:31:5:34:5 | (item with attribute macro expansion) | 2 | macro_expansion.rs:32:5:34:5 | fn bzz_2 | derive_macros | macro_expansion.rs:83:1:86:1 | struct MyDerive | 0 | 0 | macro_expansion.rs:84:8:85:9 | impl ...::Debug for MyDerive::<...> { ... } | | macro_expansion.rs:88:1:92:1 | enum MyDeriveEnum | 0 | 0 | macro_expansion.rs:89:6:91:12 | impl ...::PartialEq for MyDeriveEnum::<...> { ... } | @@ -46,8 +46,6 @@ macro_calls | macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:18 | i32 | unexpanded_macro_calls | included/included.rs:2:9:2:39 | concat!... | -| macro_expansion.rs:5:9:5:35 | concat!... | -| macro_expansion.rs:33:9:33:16 | hello!... | | macro_expansion.rs:56:9:56:31 | concat!... | | macro_expansion.rs:63:9:63:32 | include_str!... | warnings diff --git a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected index b8853791210..30dbc24103b 100644 --- a/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-in-library/PrintAst.expected @@ -5,7 +5,7 @@ lib.rs: # 1| getVisibility(): [Visibility] Visibility macro_in_library.rs: # 1| [SourceFile] SourceFile -# 1| getItem(0): [MacroCall] +# 1| getItem(0): [MacroCall] (item with attribute macro expansion) # 2| getAttributeMacroExpansion(): [MacroItems] MacroItems # 2| getItem(0): [Function] fn foo # 2| getParamList(): [ParamList] ParamList diff --git a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected index 352992bf4f2..ca5c386b720 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/CONSISTENCY/PathResolutionConsistency.expected @@ -7,4 +7,3 @@ multipleCallTargets | test.rs:447:30:447:67 | pinned.poll_read(...) | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) | | test.rs:519:50:519:66 | ...::from(...) | -| test.rs:519:50:519:66 | ...::from(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected index 190628f93d7..bfe1ce0e56b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/TaintSources.expected @@ -15,4 +15,3 @@ | test.rs:332:22:332:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:373:19:373:36 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:519:16:519:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected index e128916f847..24a0cf78aec 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/InlineFlow.expected @@ -12,20 +12,12 @@ models | 11 | Summary: ::as_str; Argument[self]; ReturnValue; value | edges | test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | -| test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | provenance | | -| test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:13:14:13:14 | a | test.rs:13:14:13:23 | a.as_str() | provenance | MaD:11 | | test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:14:14:14:14 | a | test.rs:14:14:14:25 | a.as_bytes() | provenance | MaD:10 | -| test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | provenance | | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() | provenance | MaD:9 | | test.rs:98:9:98:31 | ...: ...::Path::<...> | test.rs:100:17:100:33 | path.into_inner() [tuple.0] | provenance | MaD:6 | @@ -87,37 +79,21 @@ edges | test.rs:139:41:139:42 | to | test.rs:98:9:98:31 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:140:45:140:46 | to | test.rs:109:9:109:41 | ...: ...::Path::<...> | provenance | Src:MaD:5 | | test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | -| test.rs:242:33:242:35 | map | test.rs:242:38:242:46 | ...: String | provenance | Src:MaD:2 | -| test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | | test.rs:242:38:242:46 | ...: String | test.rs:244:18:244:18 | a | provenance | | | test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | -| test.rs:250:46:250:49 | then | test.rs:251:25:251:33 | ...: String | provenance | Src:MaD:3 | -| test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | | test.rs:251:25:251:33 | ...: String | test.rs:252:22:252:22 | a | provenance | | | test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | -| test.rs:259:50:259:57 | and_then | test.rs:260:26:260:32 | ...: u64 | provenance | Src:MaD:1 | -| test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | | test.rs:260:26:260:32 | ...: u64 | test.rs:263:22:263:23 | id | provenance | | | test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:272:75:272:77 | map | test.rs:273:15:273:23 | ...: String | provenance | Src:MaD:2 | -| test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | | test.rs:273:15:273:23 | ...: String | test.rs:275:22:275:22 | a | provenance | | nodes | test.rs:11:31:11:31 | a | semmle.label | a | -| test.rs:11:31:11:31 | a | semmle.label | a | -| test.rs:13:14:13:14 | a | semmle.label | a | | test.rs:13:14:13:14 | a | semmle.label | a | | test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | -| test.rs:13:14:13:23 | a.as_str() | semmle.label | a.as_str() | -| test.rs:14:14:14:14 | a | semmle.label | a | | test.rs:14:14:14:14 | a | semmle.label | a | | test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:14:14:14:25 | a.as_bytes() | semmle.label | a.as_bytes() | -| test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:15:14:15:14 | a | semmle.label | a | | test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:68:15:68:15 | a | semmle.label | a | -| test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:70:14:70:14 | a | semmle.label | a | | test.rs:98:9:98:31 | ...: ...::Path::<...> | semmle.label | ...: ...::Path::<...> | | test.rs:100:13:100:13 | a | semmle.label | a | @@ -162,39 +138,23 @@ nodes | test.rs:139:41:139:42 | to | semmle.label | to | | test.rs:140:45:140:46 | to | semmle.label | to | | test.rs:242:33:242:35 | map | semmle.label | map | -| test.rs:242:33:242:35 | map | semmle.label | map | -| test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | | test.rs:242:38:242:46 | ...: String | semmle.label | ...: String | | test.rs:244:18:244:18 | a | semmle.label | a | -| test.rs:244:18:244:18 | a | semmle.label | a | -| test.rs:250:46:250:49 | then | semmle.label | then | | test.rs:250:46:250:49 | then | semmle.label | then | | test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:251:25:251:33 | ...: String | semmle.label | ...: String | -| test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:252:22:252:22 | a | semmle.label | a | | test.rs:259:50:259:57 | and_then | semmle.label | and_then | -| test.rs:259:50:259:57 | and_then | semmle.label | and_then | -| test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | | test.rs:260:26:260:32 | ...: u64 | semmle.label | ...: u64 | | test.rs:263:22:263:23 | id | semmle.label | id | -| test.rs:263:22:263:23 | id | semmle.label | id | -| test.rs:272:75:272:77 | map | semmle.label | map | | test.rs:272:75:272:77 | map | semmle.label | map | | test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | -| test.rs:273:15:273:23 | ...: String | semmle.label | ...: String | -| test.rs:275:22:275:22 | a | semmle.label | a | | test.rs:275:22:275:22 | a | semmle.label | a | subpaths testFailures #select | test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:13:14:13:23 | a.as_str() | test.rs:11:31:11:31 | a | test.rs:13:14:13:23 | a.as_str() | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:14:14:14:25 | a.as_bytes() | test.rs:11:31:11:31 | a | test.rs:14:14:14:25 | a.as_bytes() | $@ | test.rs:11:31:11:31 | a | a | | test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:15:14:15:14 | a | test.rs:11:31:11:31 | a | test.rs:15:14:15:14 | a | $@ | test.rs:11:31:11:31 | a | a | -| test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:70:14:70:14 | a | test.rs:68:15:68:15 | a | test.rs:70:14:70:14 | a | $@ | test.rs:68:15:68:15 | a | a | | test.rs:101:14:101:23 | a.as_str() | test.rs:139:41:139:42 | to | test.rs:101:14:101:23 | a.as_str() | $@ | test.rs:139:41:139:42 | to | to | | test.rs:102:14:102:25 | a.as_bytes() | test.rs:139:41:139:42 | to | test.rs:102:14:102:25 | a.as_bytes() | $@ | test.rs:139:41:139:42 | to | to | @@ -203,10 +163,6 @@ testFailures | test.rs:114:14:114:14 | b | test.rs:140:45:140:46 | to | test.rs:114:14:114:14 | b | $@ | test.rs:140:45:140:46 | to | to | | test.rs:132:14:132:14 | a | test.rs:127:5:127:20 | to | test.rs:132:14:132:14 | a | $@ | test.rs:127:5:127:20 | to | to | | test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:244:18:244:18 | a | test.rs:242:33:242:35 | map | test.rs:244:18:244:18 | a | $@ | test.rs:242:33:242:35 | map | map | -| test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:252:22:252:22 | a | test.rs:250:46:250:49 | then | test.rs:252:22:252:22 | a | $@ | test.rs:250:46:250:49 | then | then | | test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:263:22:263:23 | id | test.rs:259:50:259:57 | and_then | test.rs:263:22:263:23 | id | $@ | test.rs:259:50:259:57 | and_then | and_then | -| test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | | test.rs:275:22:275:22 | a | test.rs:272:75:272:77 | map | test.rs:275:22:275:22 | a | $@ | test.rs:272:75:272:77 | map | map | diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected index 549f9c4ab76..20a20ce3f9b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks/TaintSources.expected @@ -1,12 +1,7 @@ | test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:11:31:11:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:22:14:22:19 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:48:14:48:30 | MyStruct {...} | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:58:14:58:15 | ms | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:68:15:68:15 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:127:5:127:20 | to | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -48,22 +43,6 @@ | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:242:33:242:35 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:250:46:250:49 | then | Flow source 'RemoteSource' of type remote (DEFAULT). | @@ -80,22 +59,6 @@ | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:259:50:259:57 | and_then | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:272:75:272:77 | map | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/variables/variables.ql b/rust/ql/test/library-tests/variables/variables.ql index dbde4f56e85..9997b29c7d0 100644 --- a/rust/ql/test/library-tests/variables/variables.ql +++ b/rust/ql/test/library-tests/variables/variables.ql @@ -35,7 +35,7 @@ module VariableAccessTest implements TestSig { private predicate declAt(Variable v, string filepath, int line, boolean inMacro) { variable(v) and v.getLocation().hasLocationInfo(filepath, _, _, line, _) and - if v.getPat().isInMacroExpansion() then inMacro = true else inMacro = false + if v.getPat().isFromMacroExpansion() then inMacro = true else inMacro = false } private predicate commmentAt(string text, string filepath, int line) { diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected index b1c7e787dee..538ecf9c2e3 100644 --- a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | test.rs:117:9:117:21 | ptr.is_null() | -| test.rs:117:9:117:21 | ptr.is_null() | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected index 5caae105914..821f75cee26 100644 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,2 @@ multipleCallTargets | request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | -| request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | diff --git a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected index aa5003a0e9d..0f931ed3a0f 100644 --- a/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/rust/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -1,28 +1,19 @@ #select | request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:8:24:8:35 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:24:8:35 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:17:25:17:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:17:25:17:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:21:25:21:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:21:25:21:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:25:25:25:36 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:25:25:25:36 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:31:29:31:40 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:29:31:40 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | | request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:37:37:37:48 | ...::get | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:37:37:48 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:5:29:5:36 | user_url | user-provided value | -| request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | | request_forgery_tests.rs:68:28:68:39 | ...::get | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:68:28:68:39 | ...::get | The URL of this request depends on a $@. | request_forgery_tests.rs:65:33:65:40 | and_then | user-provided value | edges | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:8:38:8:45 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:16:27:16:49 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:20:27:20:57 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:24:27:24:70 | MacroExpr | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:31:43:31:50 | user_url | provenance | | -| request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | | request_forgery_tests.rs:5:29:5:36 | user_url | request_forgery_tests.rs:37:51:37:58 | user_url | provenance | | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | request_forgery_tests.rs:8:24:8:35 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:8:38:8:45 | user_url | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:16:13:16:15 | url | request_forgery_tests.rs:17:39:17:41 | url | provenance | | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | request_forgery_tests.rs:16:27:16:49 | { ... } | provenance | | @@ -46,20 +37,12 @@ edges | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | request_forgery_tests.rs:25:25:25:36 | ...::get | provenance | MaD:1 Sink:MaD:1 | | request_forgery_tests.rs:25:39:25:41 | url | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | provenance | | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | request_forgery_tests.rs:31:29:31:40 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:31:43:31:50 | user_url | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | request_forgery_tests.rs:37:37:37:48 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:37:51:37:58 | user_url | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | provenance | | | request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | -| request_forgery_tests.rs:65:33:65:40 | and_then | request_forgery_tests.rs:65:49:65:57 | ...: String | provenance | Src:MaD:2 | -| request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | | request_forgery_tests.rs:65:49:65:57 | ...: String | request_forgery_tests.rs:68:42:68:42 | a | provenance | | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | request_forgery_tests.rs:68:28:68:39 | ...::get | provenance | MaD:1 Sink:MaD:1 | -| request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | | request_forgery_tests.rs:68:42:68:42 | a | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | provenance | | models | 1 | Sink: reqwest::get; Argument[0]; request-url | @@ -68,12 +51,8 @@ models | 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:5:29:5:36 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:8:24:8:35 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:8:37:8:45 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | | request_forgery_tests.rs:8:38:8:45 | user_url | semmle.label | user_url | | request_forgery_tests.rs:16:13:16:15 | url | semmle.label | url | | request_forgery_tests.rs:16:27:16:49 | ...::format(...) | semmle.label | ...::format(...) | @@ -100,25 +79,14 @@ nodes | request_forgery_tests.rs:25:38:25:41 | &url [&ref] | semmle.label | &url [&ref] | | request_forgery_tests.rs:25:39:25:41 | url | semmle.label | url | | request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:31:29:31:40 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:31:42:31:50 | &user_url [&ref] | semmle.label | &user_url [&ref] | | request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:31:43:31:50 | user_url | semmle.label | user_url | -| request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:37:37:37:48 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:37:50:37:58 | &user_url [&ref] | semmle.label | &user_url [&ref] | -| request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | | request_forgery_tests.rs:37:51:37:58 | user_url | semmle.label | user_url | | request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | -| request_forgery_tests.rs:65:33:65:40 | and_then | semmle.label | and_then | -| request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | | request_forgery_tests.rs:65:49:65:57 | ...: String | semmle.label | ...: String | | request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | -| request_forgery_tests.rs:68:28:68:39 | ...::get | semmle.label | ...::get | | request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:41:68:42 | &a [&ref] | semmle.label | &a [&ref] | -| request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | | request_forgery_tests.rs:68:42:68:42 | a | semmle.label | a | subpaths diff --git a/rust/ql/test/query-tests/unusedentities/UnusedValue.expected b/rust/ql/test/query-tests/unusedentities/UnusedValue.expected index c5f0f59966c..c5286361662 100644 --- a/rust/ql/test/query-tests/unusedentities/UnusedValue.expected +++ b/rust/ql/test/query-tests/unusedentities/UnusedValue.expected @@ -15,8 +15,10 @@ | main.rs:322:12:322:12 | j | Variable $@ is assigned a value that is never used. | main.rs:322:12:322:12 | j | j | | main.rs:382:9:382:9 | x | Variable $@ is assigned a value that is never used. | main.rs:382:9:382:9 | x | x | | main.rs:390:17:390:17 | x | Variable $@ is assigned a value that is never used. | main.rs:390:17:390:17 | x | x | -| main.rs:536:9:536:20 | var_in_macro | Variable $@ is assigned a value that is never used. | main.rs:536:9:536:20 | var_in_macro | var_in_macro | -| main.rs:545:9:545:9 | c | Variable $@ is assigned a value that is never used. | main.rs:545:9:545:9 | c | c | +| main.rs:491:16:491:16 | a | Variable $@ is assigned a value that is never used. | main.rs:489:9:489:9 | a | a | +| main.rs:516:41:516:41 | x | Variable $@ is assigned a value that is never used. | main.rs:515:9:515:9 | x | x | +| main.rs:530:9:530:20 | var_in_macro | Variable $@ is assigned a value that is never used. | main.rs:530:9:530:20 | var_in_macro | var_in_macro | +| main.rs:539:9:539:9 | c | Variable $@ is assigned a value that is never used. | main.rs:539:9:539:9 | c | c | | more.rs:44:9:44:14 | a_ptr4 | Variable $@ is assigned a value that is never used. | more.rs:44:9:44:14 | a_ptr4 | a_ptr4 | | more.rs:59:9:59:13 | d_ptr | Variable $@ is assigned a value that is never used. | more.rs:59:9:59:13 | d_ptr | d_ptr | | more.rs:65:13:65:17 | f_ptr | Variable $@ is assigned a value that is never used. | more.rs:65:13:65:17 | f_ptr | f_ptr | diff --git a/rust/ql/test/query-tests/unusedentities/main.rs b/rust/ql/test/query-tests/unusedentities/main.rs index 01b7cc14bc8..a08a05a83bd 100644 --- a/rust/ql/test/query-tests/unusedentities/main.rs +++ b/rust/ql/test/query-tests/unusedentities/main.rs @@ -488,7 +488,7 @@ macro_rules! use_value { fn macros1() { let a: u16; let b: u16 = 2; - set_value!(a, 1); + set_value!(a, 1); // $ Alert[rust/unused-value] use_value!(b); match std::env::args().nth(1).unwrap().parse::() { @@ -513,13 +513,7 @@ fn macros2() { fn macros3() { let x; - println!( - "The value of x is {}", - ({ - x = 10; // $ MISSING: Alert[rust/unused-value] - 10 - }) - ); + println!("The value of x is {}", ({ x = 10; 10 })); // $ Alert[rust/unused-value] } macro_rules! let_in_macro { From da966fc7999ff1cfb342cf9e2de04cd2655caa28 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 09:50:33 +0100 Subject: [PATCH 622/965] CI: remove deprecated `macos-13` image --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 6f1f95ddf8c..e87b76f6df4 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04, macos-13, windows-2022] + os: [ubuntu-22.04, macos-15, windows-2022] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 From fe690c90d54bd6add28d16e3e9842fdf5c186a2a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 09:52:14 +0100 Subject: [PATCH 623/965] Fix typo in workflow name --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index e87b76f6df4..f0054eaebde 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -1,4 +1,4 @@ -name: Build runzip +name: Build ripunzip on: workflow_dispatch: From 63a2088ae079f5050199e0fbd801825047696edd Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 09:53:19 +0100 Subject: [PATCH 624/965] Add pull_request trigger for ripunzip workflow --- .github/workflows/build-ripunzip.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index f0054eaebde..1077d26ce21 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -11,6 +11,9 @@ on: description: "what reference to checkout from openssl/openssl for Linux" required: false default: openssl-3.5.0 + pull_request: + paths: + - .github/workflows/build-ripunzip.yml jobs: build: From cd3b29f249f2900a48e1f59c5f43227f6547b843 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 09:54:10 +0100 Subject: [PATCH 625/965] Update OS versions in ripunzip workflow --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 1077d26ce21..ae3d81d08a4 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04, macos-15, windows-2022] + os: [ubuntu-24.04, macos-15, windows-2025] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 From 2ff4af9ede1cade56a0850422ae9b24e4c32fbc2 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 09:56:52 +0100 Subject: [PATCH 626/965] Update default versions in build-ripunzip.yml --- .github/workflows/build-ripunzip.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index ae3d81d08a4..b0d76de42a1 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -6,11 +6,11 @@ on: ripunzip-version: description: "what reference to checktout from google/runzip" required: false - default: v2.0.2 + default: v2.0.3 openssl-version: description: "what reference to checkout from openssl/openssl for Linux" required: false - default: openssl-3.5.0 + default: openssl-3.6.0 pull_request: paths: - .github/workflows/build-ripunzip.yml From 7fb0e212b2cea0680d93e9399b4b067f4136f73d Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 10:09:16 +0100 Subject: [PATCH 627/965] Make default refs valid on PR checks Set default versions for ripunzip and openssl in the workflow. --- .github/workflows/build-ripunzip.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index b0d76de42a1..5f037d08aa3 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -6,14 +6,15 @@ on: ripunzip-version: description: "what reference to checktout from google/runzip" required: false - default: v2.0.3 openssl-version: description: "what reference to checkout from openssl/openssl for Linux" required: false - default: openssl-3.6.0 pull_request: paths: - .github/workflows/build-ripunzip.yml +env: + RIPUNZIP_DEFAULT: v2.0.3 + OPENSSL_DEFAULT: openssl-3.6.0 jobs: build: @@ -26,7 +27,7 @@ jobs: - uses: actions/checkout@v5 with: repository: google/ripunzip - ref: ${{ inputs.ripunzip-version }} + ref: ${{ inputs.ripunzip-version || env.RIPUNZIP_DEFAULT }} # we need to avoid ripunzip dynamically linking into libssl # see https://github.com/sfackler/rust-openssl/issues/183 - if: runner.os == 'Linux' @@ -35,7 +36,7 @@ jobs: with: repository: openssl/openssl path: openssl - ref: ${{ inputs.openssl-version }} + ref: ${{ inputs.openssl-version || env.OPENSSL_DEFAULT }} - if: runner.os == 'Linux' name: build and install openssl with fPIC shell: bash From f9554e1542bbe06b4703854379c0a37552cff901 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 8 Nov 2025 22:37:16 +0100 Subject: [PATCH 628/965] C++: Give proper `getName`s to more types and fix QLdoc --- cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll | 4 ++-- cpp/ql/lib/semmle/code/cpp/Type.qll | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll b/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll index 12434f17f01..2efca72d098 100644 --- a/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll +++ b/cpp/ql/lib/semmle/code/cpp/NameQualifiers.qll @@ -144,14 +144,14 @@ class NameQualifiableElement extends Element, @namequalifiableelement { class NameQualifyingElement extends Element, @namequalifyingelement { /** * Gets a name qualifier for which this is the qualifying namespace or - * user-defined type. For example: class `X` is the + * user-defined type, or decltype. For example: class `X` is the * `NameQualifyingElement` and `X::` is the `NameQualifier`. */ NameQualifier getANameQualifier() { namequalifiers(unresolveElement(result), _, underlyingElement(this), _) } - /** Gets the name of this namespace or user-defined type. */ + /** Gets the name of this namespace, user-defined type, or decltype. */ string getName() { none() } } diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index 35b56882d7b..d9a61865c96 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -1146,7 +1146,7 @@ class DerivedType extends Type, @derivedtype { * decltype(a) b; * ``` */ -class Decltype extends Type { +class Decltype extends Type, NameQualifyingElement { Decltype() { decltypes(underlyingElement(this), _, 0, _, _) } override string getAPrimaryQlClass() { result = "Decltype" } @@ -1187,7 +1187,7 @@ class Decltype extends Type { override string toString() { result = "decltype(...)" } - override string getName() { none() } + override string getName() { result = "decltype(...)" } override int getSize() { result = this.getBaseType().getSize() } @@ -1247,7 +1247,7 @@ class TypeofType extends Type { override string toString() { result = "typeof(...)" } - override string getName() { none() } + override string getName() { result = "typeof(...)" } override int getSize() { result = this.getBaseType().getSize() } @@ -1311,8 +1311,6 @@ class TypeofTypeType extends TypeofType { Type getType() { type_operators(underlyingElement(this), unresolveElement(result), _, _) } override string getAPrimaryQlClass() { result = "TypeofTypeType" } - - override string toString() { result = "typeof(...)" } } /** @@ -1394,7 +1392,7 @@ class IntrinsicTransformedType extends Type { override Type resolveTypedefs() { result = this.getBaseType().resolveTypedefs() } - override string getName() { none() } + override string getName() { result = this.getIntrinsicName() + "(...)" } override int getSize() { result = this.getBaseType().getSize() } From a3f26fd6bb249e9ebf9e3b54379241a7e34004ba Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 8 Nov 2025 23:04:02 +0100 Subject: [PATCH 629/965] C++: Update expected test results after QL changes --- .../dataflow/taint-tests/test_mad-signatures.expected | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 846359fd6b2..bacf53b9fa5 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -46152,14 +46152,20 @@ getParameterTypeName | atl.cpp:196:12:196:14 | Add | 0 | INARGTYPclass:0 | | atl.cpp:198:12:198:17 | Append | 0 | const CAtlArray & | | atl.cpp:199:10:199:13 | Copy | 0 | const CAtlArray & | +| atl.cpp:201:8:201:12 | GetAt | 0 | decltype(...) | | atl.cpp:201:8:201:12 | GetAt | 0 | size_t | +| atl.cpp:205:10:205:22 | InsertArrayAt | 0 | decltype(...) | | atl.cpp:205:10:205:22 | InsertArrayAt | 0 | size_t | | atl.cpp:205:10:205:22 | InsertArrayAt | 1 | const CAtlArray * | +| atl.cpp:206:10:206:17 | InsertAt | 0 | decltype(...) | | atl.cpp:206:10:206:17 | InsertAt | 0 | size_t | | atl.cpp:206:10:206:17 | InsertAt | 1 | INARGTYPclass:0 | +| atl.cpp:206:10:206:17 | InsertAt | 2 | decltype(...) | | atl.cpp:206:10:206:17 | InsertAt | 2 | size_t | +| atl.cpp:211:10:211:18 | SetAtGrow | 0 | decltype(...) | | atl.cpp:211:10:211:18 | SetAtGrow | 0 | size_t | | atl.cpp:211:10:211:18 | SetAtGrow | 1 | INARGTYPclass:0 | +| atl.cpp:213:8:213:17 | operator[] | 0 | decltype(...) | | atl.cpp:213:8:213:17 | operator[] | 0 | size_t | | atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | | atl.cpp:259:5:259:12 | CAtlList | 0 | UINT | @@ -46179,6 +46185,8 @@ getParameterTypeName | atl.cpp:267:14:267:17 | Find | 1 | POSITION | | atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | | atl.cpp:267:14:267:17 | Find | 1 | __POSITION * | +| atl.cpp:268:14:268:22 | FindIndex | 0 | decltype(...) | +| atl.cpp:268:14:268:22 | FindIndex | 0 | decltype(...) | | atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | | atl.cpp:268:14:268:22 | FindIndex | 0 | size_t | | atl.cpp:269:8:269:12 | GetAt | 0 | POSITION | @@ -46359,6 +46367,7 @@ getParameterTypeName | atl.cpp:927:17:927:25 | CopyChars | 2 | int | | atl.cpp:928:17:928:25 | CopyChars | 0 | XCHAR * | | atl.cpp:928:17:928:25 | CopyChars | 0 | char * | +| atl.cpp:928:17:928:25 | CopyChars | 1 | decltype(...) | | atl.cpp:928:17:928:25 | CopyChars | 1 | size_t | | atl.cpp:928:17:928:25 | CopyChars | 2 | const XCHAR * | | atl.cpp:928:17:928:25 | CopyChars | 2 | const char * | From b66062542923a773435341d8fd79b291e93b6b6f Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sat, 8 Nov 2025 22:38:08 +0100 Subject: [PATCH 630/965] C++: Update dbscheme to address dataset check error --- cpp/ql/lib/semmlecode.cpp.dbscheme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index c16b29b27f7..2121ffec11f 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1327,7 +1327,8 @@ specialnamequalifyingelements( @namequalifiableelement = @expr | @namequalifier; @namequalifyingelement = @namespace | @specialnamequalifyingelement - | @usertype; + | @usertype + | @decltype; namequalifiers( unique int id: @namequalifier, From 0bf415acdfd885489072e6551e20db4048a48d76 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Sun, 9 Nov 2025 08:08:04 +0100 Subject: [PATCH 631/965] C++: Add upgrade and downgrade scripts --- .../old.dbscheme | 2437 +++++++++++++++++ .../semmlecode.cpp.dbscheme | 2436 ++++++++++++++++ .../upgrade.properties | 2 + .../old.dbscheme | 2436 ++++++++++++++++ .../semmlecode.cpp.dbscheme | 2437 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 9750 insertions(+) create mode 100644 cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme create mode 100644 cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties diff --git a/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme new file mode 100644 index 00000000000..2121ffec11f --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme @@ -0,0 +1,2437 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..c16b29b27f7 --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme @@ -0,0 +1,2436 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties new file mode 100644 index 00000000000..a951593a337 --- /dev/null +++ b/cpp/downgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties @@ -0,0 +1,2 @@ +description: Fix decltype qualifier issue +compatibility: full diff --git a/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme new file mode 100644 index 00000000000..c16b29b27f7 --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/old.dbscheme @@ -0,0 +1,2436 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..2121ffec11f --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/semmlecode.cpp.dbscheme @@ -0,0 +1,2437 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties new file mode 100644 index 00000000000..a951593a337 --- /dev/null +++ b/cpp/ql/lib/upgrades/c16b29b27f71247023321cc0d0360998b318837c/upgrade.properties @@ -0,0 +1,2 @@ +description: Fix decltype qualifier issue +compatibility: full From 29a294f8d0fe6cde9b92d4ba6d881aaedc6747be Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 10 Nov 2025 10:15:36 +0000 Subject: [PATCH 632/965] C++: Bind the columns inside the predicate instead of relying on 'bindingset's. The repeated inlining caused by 'bindiingset's created some #shared predicates with repeated regex matching. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 38 +++++++++++-------- .../taint-tests/test_mad-signatures.expected | 1 - 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 55848d3fa2f..b71a46f6961 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -656,6 +656,7 @@ private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remain * Normalize the `n`'th parameter of `f` by replacing template names * with `class:N` (where `N` is the index of the template). */ +pragma[nomagic] private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining) { // If there is a declaring type then we start by expanding the function templates exists(Class template | @@ -727,6 +728,7 @@ private string getSignatureWithoutClassTemplateNames( * - The `remaining` number of template arguments in `partiallyNormalizedSignature` * with their index in `nameArgs`. */ +pragma[nomagic] private string getSignatureWithoutFunctionTemplateNames( string partiallyNormalizedSignature, string typeArgs, string nameArgs, int remaining ) { @@ -770,6 +772,7 @@ private string getSignatureWithoutFunctionTemplateNames( * ``` * In this case, `normalizedSignature` will be `"(const func:0 &,int,class:1,class:0 *)"`. */ +pragma[nomagic] private predicate elementSpecWithArguments( string signature, string type, string name, string normalizedSignature, string typeArgs, string nameArgs @@ -795,23 +798,26 @@ private string getSignatureParameterName(string signature, string type, string n * If `subtypes` is `true` then the result may be an override of the function * identified by the components. */ -bindingset[type, name] +pragma[nomagic] private Function getFunction(string namespace, string type, boolean subtypes, string name) { - funcHasQualifiedName(result, namespace, name) and - subtypes = false and - type = "" - or - exists(Class namedClass, Class classWithMethod | - hasClassAndName(classWithMethod, result, name) and - classHasQualifiedName(namedClass, namespace, type) - | - // member declared in the named type or a subtype of it - subtypes = true and - classWithMethod = namedClass.getADerivedClass*() - or - // member declared directly in the named type + elementSpec(namespace, type, subtypes, name, _, _) and + ( + funcHasQualifiedName(result, namespace, name) and subtypes = false and - classWithMethod = namedClass + type = "" + or + exists(Class namedClass, Class classWithMethod | + hasClassAndName(classWithMethod, result, name) and + classHasQualifiedName(namedClass, namespace, type) + | + // member declared in the named type or a subtype of it + subtypes = true and + classWithMethod = namedClass.getADerivedClass*() + or + // member declared directly in the named type + subtypes = false and + classWithMethod = namedClass + ) ) } @@ -838,6 +844,7 @@ private Function getFunction(string namespace, string type, boolean subtypes, st * is `func:n` then the signature name is compared with the `n`'th name * in `name`. */ +pragma[nomagic] private predicate signatureMatches( Function func, string namespace, string signature, string type, string name, int i ) { @@ -912,6 +919,7 @@ private predicate parseParens(string s, string betweenParens) { s = "(" + betwee * - `signatureWithoutParens` equals `signature`, but with the surrounding * parentheses removed. */ +pragma[nomagic] private predicate elementSpecWithArguments0( string signature, string type, string name, string signatureWithoutParens, string typeArgs, string nameArgs diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 5e96daea95c..cf5cf4036fa 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -135,7 +135,6 @@ signatureMatches | stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 0 | | stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | | stl.h:678:33:678:38 | format | std | (format_string,Args &&) | | format | 1 | -| taint.cpp:735:7:735:12 | malloc | | (size_t) | | malloc | 0 | | taint.cpp:847:5:847:11 | toupper | | (int) | | toupper | 0 | | taint.cpp:848:5:848:11 | tolower | | (int) | | tolower | 0 | getSignatureParameterName From de367eaad6085176e3ae4616e678b3ab622e588f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 10 Nov 2025 12:42:28 +0100 Subject: [PATCH 633/965] Update rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index 36b4f22c20e..f8aaf597ca2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -54,7 +54,7 @@ module Impl { /** * Gets the immediately enclosing macro invocation for element `e`, if any. * - * The result is either a `MacroCall`, and `Adt` with a derive macro expansion, or + * The result is either a `MacroCall`, an `Adt` with a derive macro expansion, or * an `Item` with an attribute macro expansion. */ cached From ded13281034e284b25631dddc51208b0cc20daa7 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 11:08:50 +0100 Subject: [PATCH 634/965] C#: Do not extract comments when scaffolding. --- .../Entities/Base/CachedSymbol.cs | 2 +- .../Semmle.Extraction.CSharp/Entities/CommentBlock.cs | 8 ++++++-- .../Semmle.Extraction.CSharp/Entities/CommentLine.cs | 2 +- .../Semmle.Extraction.CSharp/Extractor/Context.cs | 4 ++++ .../Populators/CommentPopulator.cs | 8 ++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs index f5ac9a2f7b8..92861e97fdd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs @@ -109,7 +109,7 @@ namespace Semmle.Extraction.CSharp.Entities /// protected void BindComments() { - if (!Symbol.IsImplicitlyDeclared && IsSourceDeclaration && Symbol.FromSource() && !Context.OnlyScaffold) + if (!Symbol.IsImplicitlyDeclared && IsSourceDeclaration && Symbol.FromSource()) Context.BindComments(this, FullLocation); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs index e72df5514ec..af579a47dc5 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs @@ -10,12 +10,12 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { - trapFile.commentblock(this); - Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child)); if (Context.OnlyScaffold) { return; } + trapFile.commentblock(this); + Symbol.CommentLines.ForEach((l, child) => trapFile.commentblock_child(this, l, child)); WriteLocationToTrap(trapFile.commentblock_location, this, Context.CreateLocation(Symbol.Location)); } @@ -31,6 +31,10 @@ namespace Semmle.Extraction.CSharp.Entities public void BindTo(Label entity, CommentBinding binding) { + if (Context.OnlyScaffold) + { + return; + } Context.TrapWriter.Writer.commentblock_binding(this, entity, binding); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs index b51576ba3e5..f7db5dbe294 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs @@ -21,11 +21,11 @@ namespace Semmle.Extraction.CSharp.Entities public override void Populate(TextWriter trapFile) { - trapFile.commentline(this, Type == CommentLineType.MultilineContinuation ? CommentLineType.Multiline : Type, Text, RawText); if (Context.OnlyScaffold) { return; } + trapFile.commentline(this, Type == CommentLineType.MultilineContinuation ? CommentLineType.Multiline : Type, Text, RawText); location = Context.CreateLocation(Location); WriteLocationToTrap(trapFile.commentline_location, this, location); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs index aa3d6e9edda..c3752165204 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs @@ -631,6 +631,10 @@ namespace Semmle.Extraction.CSharp /// Location of the entity. public void BindComments(Entity entity, Microsoft.CodeAnalysis.Location? l) { + if (OnlyScaffold) + { + return; + } var duplicationGuardKey = GetCurrentTagStackKey(); CommentGenerator.AddElement(entity.Label, duplicationGuardKey, l); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs index 24e23ff4abf..5f7b16bba43 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Populators/CommentPopulator.cs @@ -12,6 +12,10 @@ namespace Semmle.Extraction.CSharp.Populators { public static void ExtractCommentBlocks(Context cx, CommentProcessor gen) { + if (cx.OnlyScaffold) + { + return; + } cx.Try(null, null, () => { gen.GenerateBindings((entity, duplicationGuardKey, block, binding) => @@ -34,6 +38,10 @@ namespace Semmle.Extraction.CSharp.Populators public static void ExtractComment(Context cx, SyntaxTrivia trivia) { + if (cx.OnlyScaffold) + { + return; + } switch (trivia.Kind()) { case SyntaxKind.SingleLineDocumentationCommentTrivia: From 43118ecccce4eda654bf34dd3b13b7879dc1b42e Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 11:42:55 +0100 Subject: [PATCH 635/965] C#: The extraction of the TypeMentions for return type and explicit interface return type for methods have changed order. --- csharp/ql/test/library-tests/csharp11/PrintAst.expected | 4 ++-- csharp/ql/test/library-tests/definitions/PrintAst.expected | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 3a3f4497423..1de7ff42928 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -1234,9 +1234,9 @@ StaticInterfaceMembers.cs: # 49| 1: [PropertyCall] access to property Real # 49| -1: [ParameterAccess] access to parameter n # 51| 14: [Method] Inc -# 51| -1: [TypeMention] Complex # 51| -1: [TypeMention] INumber # 51| 1: [TypeMention] Complex +# 51| -1: [TypeMention] Complex #-----| 2: (Parameters) # 51| 0: [Parameter] other # 51| -1: [TypeMention] Complex @@ -1254,9 +1254,9 @@ StaticInterfaceMembers.cs: # 52| 1: [PropertyCall] access to property Imaginary # 52| -1: [ParameterAccess] access to parameter other # 54| 15: [Method] Dec -# 54| -1: [TypeMention] Complex # 54| -1: [TypeMention] INumber # 54| 1: [TypeMention] Complex +# 54| -1: [TypeMention] Complex #-----| 2: (Parameters) # 54| 0: [Parameter] other # 54| -1: [TypeMention] Complex diff --git a/csharp/ql/test/library-tests/definitions/PrintAst.expected b/csharp/ql/test/library-tests/definitions/PrintAst.expected index 1ad3ad1a61d..9b5606d30f5 100644 --- a/csharp/ql/test/library-tests/definitions/PrintAst.expected +++ b/csharp/ql/test/library-tests/definitions/PrintAst.expected @@ -272,8 +272,8 @@ definitions.cs: # 125| 0: [MethodCall] call to method M # 125| -1: [BaseAccess] base access # 128| 6: [Method] M2`1 -# 128| -1: [TypeMention] Void # 128| -1: [TypeMention] I1 +# 128| -1: [TypeMention] Void #-----| 1: (Type parameters) # 128| 0: [TypeParameter] T # 128| 4: [BlockStmt] {...} @@ -356,8 +356,8 @@ definitions.cs: # 153| 0: [Parameter] value # 153| 4: [BlockStmt] {...} # 154| 6: [Method] M -# 154| -1: [TypeMention] A # 154| -1: [TypeMention] I4 +# 154| -1: [TypeMention] A # 154| 4: [ThrowExpr] throw ... # 154| 0: [ObjectCreation] object creation of type Exception # 154| 0: [TypeMention] Exception From 4b212239e10fc87efe0c001316354da11a1fa3fb Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 10 Nov 2025 12:35:39 +0000 Subject: [PATCH 636/965] Rust: Remove unnecessary .(BlockExpr). --- rust/ql/examples/snippets/empty_if.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/examples/snippets/empty_if.ql b/rust/ql/examples/snippets/empty_if.ql index 5a4a62e41b6..90df6b95b22 100644 --- a/rust/ql/examples/snippets/empty_if.ql +++ b/rust/ql/examples/snippets/empty_if.ql @@ -12,7 +12,7 @@ import rust from IfExpr ifExpr where // where the 'then' branch is empty - ifExpr.getThen().(BlockExpr).getStmtList().getNumberOfStmtOrExpr() = 0 and + ifExpr.getThen().getStmtList().getNumberOfStmtOrExpr() = 0 and // and no 'else' branch exists not exists(ifExpr.getElse()) select ifExpr, "This 'if' expression is redundant." From 0a16cf68de764b27859255345170691d5eedd554 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 13:53:41 +0100 Subject: [PATCH 637/965] C#: Do not require that comments and type locations are in source in test. --- csharp/ql/test/library-tests/overlay/test.ql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/test/library-tests/overlay/test.ql b/csharp/ql/test/library-tests/overlay/test.ql index 953124d5b44..adbed2f6e3b 100644 --- a/csharp/ql/test/library-tests/overlay/test.ql +++ b/csharp/ql/test/library-tests/overlay/test.ql @@ -32,8 +32,8 @@ query predicate eventAccessors(EventAccessor ea) { ea.fromSource() } query predicate usingDirectives(UsingDirective ud) { ud.fromSource() } -query predicate commentLines(CommentLine cl) { cl.getLocation().getFile().fromSource() } +query predicate commentLines(CommentLine cl) { any() } -query predicate commentBlocks(CommentBlock cb) { cb.getLocation().getFile().fromSource() } +query predicate commentBlocks(CommentBlock cb) { any() } -query predicate typeMentions(TypeMention tm) { tm.getLocation().getFile().fromSource() } +query predicate typeMentions(TypeMention tm) { any() } From c44b74740e55a21dae792cc9b299f79637665065 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 14:15:01 +0100 Subject: [PATCH 638/965] C#: Minor code quality improvements. --- csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll index 28b86d5019a..59b5359a1de 100644 --- a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll @@ -16,7 +16,7 @@ private string getLocationFilePath(@location_default loc) { } /** - * An abstract base class for all elements that can be discarded from the base. + * A class of elements that can be discarded from the base. */ overlay[local] private class DiscardableEntity extends @locatable { @@ -52,10 +52,10 @@ private class DiscardableEntity extends @locatable { } /** Holds if this element exists in the base variant. */ - predicate existsInBase() { not isOverlay() and exists(this) } + predicate existsInBase() { not isOverlay() } /** Holds if this element exists in the overlay variant. */ - predicate existsInOverlay() { isOverlay() and exists(this) } + predicate existsInOverlay() { isOverlay() } /** Gets a textual representation of this discardable element. */ string toString() { none() } From 7bb65fef1bef19d78ff23ca1a5be8fb933f639ad Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 16 Oct 2025 15:46:56 +0100 Subject: [PATCH 639/965] Refactor secure cookie query --- .../CWE-614/CookieWithoutSecure.ql | 192 ++++++++++-------- 1 file changed, 107 insertions(+), 85 deletions(-) diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql index d7628f7b2c7..d202e2edc5b 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql @@ -17,91 +17,113 @@ import csharp import semmle.code.asp.WebConfig import semmle.code.csharp.frameworks.system.Web import semmle.code.csharp.frameworks.microsoft.AspNetCore -deprecated import experimental.dataflow.flowsources.AuthCookie +import experimental.dataflow.flowsources.AuthCookie -deprecated query predicate problems(Expr secureSink, string message) { +predicate cookieAppendSecureByDefault() { + // default is set to `Always` or `SameAsRequest` ( - exists(Call c | - secureSink = c and - ( - // default is not configured or is not set to `Always` or `SameAsRequest` - not ( - getAValueForCookiePolicyProp("Secure").getValue() = "0" or - getAValueForCookiePolicyProp("Secure").getValue() = "1" - ) and - // there is no callback `OnAppendCookie` that sets `Secure` to true - not OnAppendCookieSecureTracking::flowTo(_) and - ( - // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - not isPropertySet(oc, "Secure") and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - or - // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default - exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | - mc = c and - iResponse.getAppendMethod() = mc.getTarget() and - mc.getNumberOfArguments() < 3 - ) - ) - or - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof SystemWebHttpCookie and - // the property wasn't explicitly set, so a default value from config is used - not isPropertySet(oc, "Secure") and - // the default in config is not set to `true` - // the `exists` below covers the `cs/web/requiressl-not-set` - not exists(XmlElement element | - element instanceof FormsElement and - element.(FormsElement).isRequireSsl() - or - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isRequireSsl() - ) - ) - ) - ) - or - exists(Assignment a, Expr val | - secureSink = a.getRValue() and - ( - exists(ObjectCreation oc | - getAValueForProp(oc, a, "Secure") = val and - val.getValue() = "false" and - ( - oc.getType() instanceof SystemWebHttpCookie - or - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - // there is no callback `OnAppendCookie` that sets `Secure` to true - not OnAppendCookieSecureTracking::flowTo(_) and - // the cookie option is passed to `Append` - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - ) - or - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "SecurePolicy" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) and - val.getValue() = "2" // None - ) - ) - ) - ) and - message = "Cookie attribute 'Secure' is not set to true." + getAValueForCookiePolicyProp("Secure").getValue() = "0" or + getAValueForCookiePolicyProp("Secure").getValue() = "1" + ) + or + //callback `OnAppendCookie` that sets `Secure` to true + OnAppendCookieSecureTracking::flowTo(_) } + +predicate insecureCookieOptionsCreation(Expr sink) { + // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + exists(ObjectCreation oc | + oc = sink and + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + not isPropertySet(oc, "Secure") and + exists(DataFlow::Node creation | + CookieOptionsTracking::flow(creation, _) and + creation.asExpr() = oc + ) + ) +} + +predicate insecureCookieAppend(Expr sink) { + // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default + exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | + mc = sink and + iResponse.getAppendMethod() = mc.getTarget() and + mc.getNumberOfArguments() < 3 + ) +} + +predicate insecureCookieCreationFromConfig(Expr sink) { + // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used + exists(ObjectCreation oc | + oc = sink and + oc.getType() instanceof SystemWebHttpCookie and + not isPropertySet(oc, "Secure") and + // the default in config is not set to `true` + // the `exists` below covers the `cs/web/requiressl-not-set` + not exists(XmlElement element | + element instanceof FormsElement and + element.(FormsElement).isRequireSsl() + or + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isRequireSsl() + ) + ) +} + +predicate insecureCookieCall(Call c) { + not cookieAppendSecureByDefault() and + ( + insecureCookieOptionsCreation(c) + or + insecureCookieAppend(c) + ) + or + insecureCookieCreationFromConfig(c) +} + +predicate insecureCookieCreationAssignment(Assignment a, Expr val) { + exists(ObjectCreation oc | + getAValueForProp(oc, a, "Secure") = val and + val.getValue() = "false" and + ( + oc.getType() instanceof SystemWebHttpCookie + or + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + // there is no callback `OnAppendCookie` that sets `Secure` to true + not OnAppendCookieSecureTracking::flowTo(_) and + // the cookie option is passed to `Append` + exists(DataFlow::Node creation | + CookieOptionsTracking::flow(creation, _) and + creation.asExpr() = oc + ) + ) + ) +} + +predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "SecurePolicy" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) and + val.getValue() = "2" // None + ) +} + +from Expr secureSink +where + insecureCookieCall(secureSink) + or + exists(Assignment a | + secureSink = a.getRValue() and + ( + insecureCookieCreationAssignment(a, _) + or + insecureSecurePolicyAssignment(a, _) + ) + ) +select secureSink, "Cookie attribute 'Secure' is not set to true." From d3ea6758c352117e9e7d80a191575012e94204ed Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 17 Oct 2025 10:34:27 +0100 Subject: [PATCH 640/965] Simplify checks for assignments to false to creation case --- .../CWE-614/CookieWithoutSecure.ql | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql index d202e2edc5b..30109ce0009 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql @@ -30,16 +30,22 @@ predicate cookieAppendSecureByDefault() { OnAppendCookieSecureTracking::flowTo(_) } -predicate insecureCookieOptionsCreation(Expr sink) { +predicate secureFalseOrNotSet(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "Secure") = a.getRValue() and + a.getRValue().getValue() = "false" + ) + or + not isPropertySet(oc, "Secure") +} + +predicate insecureCookieOptionsCreation(ObjectCreation oc) { // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - exists(ObjectCreation oc | - oc = sink and - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - not isPropertySet(oc, "Secure") and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + secureFalseOrNotSet(oc) and + exists(DataFlow::Node creation | + CookieOptionsTracking::flow(creation, _) and + creation.asExpr() = oc ) } @@ -81,25 +87,24 @@ predicate insecureCookieCall(Call c) { insecureCookieCreationFromConfig(c) } -predicate insecureCookieCreationAssignment(Assignment a, Expr val) { - exists(ObjectCreation oc | - getAValueForProp(oc, a, "Secure") = val and - val.getValue() = "false" and - ( - oc.getType() instanceof SystemWebHttpCookie - or - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - // there is no callback `OnAppendCookie` that sets `Secure` to true - not OnAppendCookieSecureTracking::flowTo(_) and - // the cookie option is passed to `Append` - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - ) -} - +// predicate insecureCookieCreationAssignment(Assignment a, Expr val) { +// exists(ObjectCreation oc | +// getAValueForProp(oc, a, "Secure") = val and +// val.getValue() = "false" and +// ( +// oc.getType() instanceof SystemWebHttpCookie +// or +// oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and +// // there is no callback `OnAppendCookie` that sets `Secure` to true +// not OnAppendCookieSecureTracking::flowTo(_) and +// // the cookie option is passed to `Append` +// exists(DataFlow::Node creation | +// CookieOptionsTracking::flow(creation, _) and +// creation.asExpr() = oc +// ) +// ) +// ) +// } predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { exists(PropertyWrite pw | ( @@ -120,10 +125,6 @@ where or exists(Assignment a | secureSink = a.getRValue() and - ( - insecureCookieCreationAssignment(a, _) - or - insecureSecurePolicyAssignment(a, _) - ) + insecureSecurePolicyAssignment(a, _) ) select secureSink, "Cookie attribute 'Secure' is not set to true." From a1864edcb6574b180bf22507e4c49ebb1200e479 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 17 Oct 2025 15:13:31 +0100 Subject: [PATCH 641/965] Presere behaviour for insecure cookie constructor --- .../CWE-614/CookieWithoutSecure.ql | 39 +++++++------------ 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql index 30109ce0009..210c1f9b1c0 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql @@ -30,11 +30,15 @@ predicate cookieAppendSecureByDefault() { OnAppendCookieSecureTracking::flowTo(_) } -predicate secureFalseOrNotSet(ObjectCreation oc) { +predicate secureFalse(ObjectCreation oc) { exists(Assignment a | getAValueForProp(oc, a, "Secure") = a.getRValue() and a.getRValue().getValue() = "false" ) +} + +predicate secureFalseOrNotSet(ObjectCreation oc) { + secureFalse(oc) or not isPropertySet(oc, "Secure") } @@ -58,12 +62,13 @@ predicate insecureCookieAppend(Expr sink) { ) } -predicate insecureCookieCreationFromConfig(Expr sink) { - // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used - exists(ObjectCreation oc | - oc = sink and - oc.getType() instanceof SystemWebHttpCookie and - not isPropertySet(oc, "Secure") and +predicate insecureCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + ( + secureFalse(oc) + or + // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used + isPropertySet(oc, "Secure") and // the default in config is not set to `true` // the `exists` below covers the `cs/web/requiressl-not-set` not exists(XmlElement element | @@ -84,27 +89,9 @@ predicate insecureCookieCall(Call c) { insecureCookieAppend(c) ) or - insecureCookieCreationFromConfig(c) + insecureCookieCreation(c) } -// predicate insecureCookieCreationAssignment(Assignment a, Expr val) { -// exists(ObjectCreation oc | -// getAValueForProp(oc, a, "Secure") = val and -// val.getValue() = "false" and -// ( -// oc.getType() instanceof SystemWebHttpCookie -// or -// oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and -// // there is no callback `OnAppendCookie` that sets `Secure` to true -// not OnAppendCookieSecureTracking::flowTo(_) and -// // the cookie option is passed to `Append` -// exists(DataFlow::Node creation | -// CookieOptionsTracking::flow(creation, _) and -// creation.asExpr() = oc -// ) -// ) -// ) -// } predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { exists(PropertyWrite pw | ( From 71ad5a340fba27b10c680cf395debc97b4fe8a36 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 17 Oct 2025 15:16:58 +0100 Subject: [PATCH 642/965] Refactor httponly cookie query --- .../CWE-1004/CookieWithoutHttpOnly.ql | 172 ++++++++++-------- 1 file changed, 92 insertions(+), 80 deletions(-) diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index 359ffbcd2f3..e6fb24fa8a8 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -17,91 +17,103 @@ import csharp import semmle.code.asp.WebConfig import semmle.code.csharp.frameworks.system.Web import semmle.code.csharp.frameworks.microsoft.AspNetCore -deprecated import experimental.dataflow.flowsources.AuthCookie +import experimental.dataflow.flowsources.AuthCookie -deprecated query predicate problems(Expr httpOnlySink, string message) { +predicate cookieAppendHttpOnlyByDefault() { + // default is set to `Always` + getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" + or + // there is an `OnAppendCookie` callback that sets `HttpOnly` to true + not OnAppendCookieHttpOnlyTracking::flowTo(_) +} + +predicate httpOnlyFalse(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and + a.getRValue().getValue() = "false" + ) +} + +predicate httpOnlyFalseOrNotSet(ObjectCreation oc) { + httpOnlyFalse(oc) + or + not isPropertySet(oc, "HttpOnly") +} + +predicate nonHttpOnlyCookieOptionsCreation(ObjectCreation oc, MethodCall append) { + // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + httpOnlyFalseOrNotSet(oc) and + exists(DataFlow::Node creation, DataFlow::Node sink | + CookieOptionsTracking::flow(creation, sink) and + creation.asExpr() = oc and + sink.asExpr() = append.getArgument(2) + ) +} + +predicate nonHttpOnlySensitiveCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + isCookieWithSensitiveName(oc.getArgument(0)) and ( - exists(Assignment a, Expr val | - httpOnlySink = a.getRValue() and - val.getValue() = "false" and + httpOnlyFalse(oc) + or + // the property wasn't explicitly set, so a default value from config is used + not isPropertySet(oc, "HttpOnly") and + // the default in config is not set to `true` + not exists(XmlElement element | + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isHttpOnlyCookies() + ) + ) +} + +predicate sensitiveCookieAppend(MethodCall mc) { + exists(MicrosoftAspNetCoreHttpResponseCookies iResponse | + iResponse.getAppendMethod() = mc.getTarget() and + isCookieWithSensitiveName(mc.getArgument(0)) + ) +} + +predicate nonHttpOnlyCookieCall(Call c) { + ( + not cookieAppendHttpOnlyByDefault() and + exists(MethodCall mc | + sensitiveCookieAppend(mc) and ( - exists(ObjectCreation oc | - getAValueForProp(oc, a, "HttpOnly") = val and - ( - oc.getType() instanceof SystemWebHttpCookie and - isCookieWithSensitiveName(oc.getArgument(0)) - or - exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - iResponse.getAppendMethod() = mc.getTarget() and - isCookieWithSensitiveName(mc.getArgument(0)) and - // there is no callback `OnAppendCookie` that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) and - // Passed as third argument to `IResponseCookies.Append` - exists(DataFlow::Node creation, DataFlow::Node append | - CookieOptionsTracking::flow(creation, append) and - creation.asExpr() = oc and - append.asExpr() = mc.getArgument(2) - ) - ) - ) - ) + nonHttpOnlyCookieOptionsCreation(c, mc) or - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "HttpOnly" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) - ) + // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default + mc = c and + mc.getNumberOfArguments() < 3 ) ) or - exists(Call c | - httpOnlySink = c and - ( - exists(MicrosoftAspNetCoreHttpResponseCookies iResponse, MethodCall mc | - // default is not configured or is not set to `Always` - not getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" and - // there is no callback `OnAppendCookie` that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) and - iResponse.getAppendMethod() = mc.getTarget() and - isCookieWithSensitiveName(mc.getArgument(0)) and - ( - // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - not isPropertySet(oc, "HttpOnly") and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) - ) - or - // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default - mc = c and - mc.getNumberOfArguments() < 3 - ) - ) - or - exists(ObjectCreation oc | - oc = c and - oc.getType() instanceof SystemWebHttpCookie and - isCookieWithSensitiveName(oc.getArgument(0)) and - // the property wasn't explicitly set, so a default value from config is used - not isPropertySet(oc, "HttpOnly") and - // the default in config is not set to `true` - not exists(XmlElement element | - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isHttpOnlyCookies() - ) - ) - ) - ) - ) and - message = "Cookie attribute 'HttpOnly' is not set to true." + nonHttpOnlySensitiveCookieCreation(c) + ) } + +predicate nonHttpOnlyPolicyAssignment(Assignment a, Expr val) { + val.getValue() = "false" and + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "HttpOnly" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) + ) +} + +from Expr httpOnlySink +where + ( + nonHttpOnlyCookieCall(httpOnlySink) + or + exists(Assignment a | + httpOnlySink = a.getRValue() and + nonHttpOnlyPolicyAssignment(a, _) + ) + ) +select httpOnlySink, "Cookie attribute 'HttpOnly' is not set to true." From a87a03cfa83f1c16070d66b330cc656c99dc3b46 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 20 Oct 2025 10:18:24 +0100 Subject: [PATCH 643/965] Move to main query pack --- .../csharp/security/auth/SecureCookies.qll | 195 ++++++++++++++++++ .../CWE-1004/CookieWithoutHttpOnly.qhelp | 51 +++++ .../CWE-1004/CookieWithoutHttpOnly.ql | 119 +++++++++++ .../CWE-1004/cookiepolicyoptions.cs | 12 ++ .../CWE-1004/httponlyflag.cs | 7 + .../CWE-1004/httponlyflagcore.cs | 8 + .../CWE-614/CookieWithoutSecure.qhelp | 55 +++++ .../CWE-614/CookieWithoutSecure.ql | 116 +++++++++++ .../CWE-614/cookiepolicyoptions.cs | 12 ++ .../Security Features/CWE-614/secureflag.cs | 7 + .../CWE-614/secureflagcore.cs | 8 + 11 files changed, 590 insertions(+) create mode 100644 csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll create mode 100644 csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp create mode 100644 csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql create mode 100644 csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs create mode 100644 csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs create mode 100644 csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs create mode 100644 csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp create mode 100644 csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql create mode 100644 csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs create mode 100644 csharp/ql/src/Security Features/CWE-614/secureflag.cs create mode 100644 csharp/ql/src/Security Features/CWE-614/secureflagcore.cs diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll new file mode 100644 index 00000000000..401944adcc4 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -0,0 +1,195 @@ +/** + * Provides classes and predicates for detecting insecure cookies. + */ + +import csharp +import semmle.code.csharp.frameworks.microsoft.AspNetCore + +/** + * Holds if the expression is a variable with a sensitive name. + */ +predicate isCookieWithSensitiveName(Expr cookieExpr) { + exists(DataFlow::Node sink | + AuthCookieName::flowTo(sink) and + sink.asExpr() = cookieExpr + ) +} + +/** + * Configuration for tracking if a variable with a sensitive name is used as an argument. + */ +private module AuthCookieNameConfig implements DataFlow::ConfigSig { + private predicate isAuthVariable(Expr expr) { + exists(string val | + ( + val = expr.getValue() or + val = expr.(Access).getTarget().getName() + ) and + val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and + not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") + ) + } + + predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } + + predicate isSink(DataFlow::Node sink) { exists(Call c | sink.asExpr() = c.getAnArgument()) } +} + +/** + * Tracks if a variable with a sensitive name is used as an argument. + */ +private module AuthCookieName = DataFlow::Global; + +/** + * Configuration module tracking creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` + * calls as a third parameter. + */ +private module CookieOptionsTrackingConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asExpr().(ObjectCreation).getType() instanceof MicrosoftAspNetCoreHttpCookieOptions + } + + predicate isSink(DataFlow::Node sink) { + exists(MicrosoftAspNetCoreHttpResponseCookies iResponse, MethodCall mc | + iResponse.getAppendMethod() = mc.getTarget() and + mc.getArgument(2) = sink.asExpr() + ) + } +} + +/** + * Tracking creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` + * calls as a third parameter. + */ +module CookieOptionsTracking = DataFlow::Global; + +/** + * Looks for property value of `CookiePolicyOptions` passed to `app.UseCookiePolicy` in `Startup.Configure`. + */ +Expr getAValueForCookiePolicyProp(string prop) { + exists(Method m, MethodCall mc, ObjectCreation oc, Expr val | + m.getName() = "Configure" and + m.getDeclaringType().getName() = "Startup" and + m.getBody().getAChild+() = mc and + mc.getTarget() = + any(MicrosoftAspNetCoreBuilderCookiePolicyAppBuilderExtensions e).getUseCookiePolicyMethod() and + oc.getType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and + getAValueForProp(oc, _, prop) = val and + result = val + ) +} + +/** + * A simplistic points-to alternative: given an object creation and a property name, get the values that property can be assigned. + * + * Assumptions: + * - we don't reassign the variable that the creation is stored in + * - we always access the creation through the same variable it is initially assigned to + * + * This should cover most typical patterns... + */ +Expr getAValueForProp(ObjectCreation create, Assignment a, string prop) { + // values set in object init + exists(MemberInitializer init, Expr src, PropertyAccess pa | + a.getLValue() = pa and + pa.getTarget().hasName(prop) and + init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and + init.getLValue() = pa and + DataFlow::localExprFlow(src, init.getRValue()) and + result = src + ) + or + // values set on var that create is assigned to + exists(Expr src, PropertyAccess pa | + a.getLValue() = pa and + pa.getTarget().hasName(prop) and + DataFlow::localExprFlow(create, pa.getQualifier()) and + DataFlow::localExprFlow(src, a.getRValue()) and + result = src + ) +} + +/** + * Checks if the given property was explicitly set to a value. + */ +predicate isPropertySet(ObjectCreation oc, string prop) { exists(getAValueForProp(oc, _, prop)) } + +private signature string propertyName(); + +/** + * Configuration for tracking if a callback used in `OnAppendCookie` sets a cookie property to `true`. + */ +private module OnAppendCookieTrackingConfig implements + DataFlow::ConfigSig +{ + /** + * Specifies the cookie property name to track. + */ + predicate isSource(DataFlow::Node source) { + exists(PropertyWrite pw, Assignment delegateAssign, Callable c | + pw.getProperty().getName() = "OnAppendCookie" and + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and + delegateAssign.getLValue() = pw and + ( + exists(LambdaExpr lambda | + delegateAssign.getRValue() = lambda and + lambda = c + ) + or + exists(DelegateCreation delegate | + delegateAssign.getRValue() = delegate and + delegate.getArgument().(CallableAccess).getTarget() = c + ) + ) and + c.getParameter(0) = source.asParameter() + ) + } + + predicate isSink(DataFlow::Node sink) { + exists(PropertyWrite pw, Assignment a | + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + pw.getProperty().getName() = getPropertyName() and + a.getLValue() = pw and + exists(Expr val | + DataFlow::localExprFlow(val, a.getRValue()) and + val.getValue() = "true" + ) and + sink.asExpr() = pw.getQualifier() + ) + } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + node2.asExpr() = + any(PropertyRead pr | + pr.getQualifier() = node1.asExpr() and + pr.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreCookiePolicyAppendCookieContext + ) + } +} + +private string getPropertyNameSecure() { result = "Secure" } + +/** + * Configuration module for tracking if a callback used in `OnAppendCookie` sets `Secure` to `true`. + */ +private module OnAppendCookieSecureTrackingConfig = + OnAppendCookieTrackingConfig; + +/** + * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`. + */ +module OnAppendCookieSecureTracking = DataFlow::Global; + +private string getPropertyNameHttpOnly() { result = "HttpOnly" } + +/** + * Configuration module for tracking if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. + */ +private module OnAppendCookieHttpOnlyTrackingConfig = + OnAppendCookieTrackingConfig; + +/** + * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. + */ +module OnAppendCookieHttpOnlyTracking = DataFlow::Global; diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp new file mode 100644 index 00000000000..c7c10a3af9e --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -0,0 +1,51 @@ + + + + +

    +Cookies without HttpOnly flag are accessible to JavaScript running in the same origin. In case of +Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. +

    +
    + + +

    +Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make +them not accessible to JavaScript. In ASP.NET case it is also possible to set the attribute via <httpCookies> element +of web.config with the attribute httpOnlyCookies="true". +

    +
    + + + +

    +In the example below Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true. +

    + + + +

    +In the following example CookiePolicyOptions are set programmatically to configure defaults. +

    + + + +

    +In the example below System.Web.HttpCookie.HttpOnly is set to true. +

    + + + +
    + + + +
  • CookieOptions.HttpOnly Property,
  • +
  • Set-Cookie Header,
  • +
  • HttpCookie.HttpOnly Property,
  • +
  • httpCookies Element,
  • + +
    +
    diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql new file mode 100644 index 00000000000..82cbb068b9f --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -0,0 +1,119 @@ +/** + * @name 'HttpOnly' attribute is not set to true + * @description Omitting the 'HttpOnly' attribute for security sensitive data allows + * malicious JavaScript to steal it in case of XSS vulnerability. Always set + * 'HttpOnly' to 'true' to authentication related cookie to make it + * not accessible by JavaScript. + * @kind problem + * @problem.severity warning + * @precision high + * @id cs/web/cookie-httponly-not-set + * @tags security + * experimental + * external/cwe/cwe-1004 + */ + +import csharp +import semmle.code.asp.WebConfig +import semmle.code.csharp.frameworks.system.Web +import semmle.code.csharp.frameworks.microsoft.AspNetCore +import semmle.code.csharp.security.auth.SecureCookies + +predicate cookieAppendHttpOnlyByDefault() { + // default is set to `Always` + getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" + or + // there is an `OnAppendCookie` callback that sets `HttpOnly` to true + not OnAppendCookieHttpOnlyTracking::flowTo(_) +} + +predicate httpOnlyFalse(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and + a.getRValue().getValue() = "false" + ) +} + +predicate httpOnlyFalseOrNotSet(ObjectCreation oc) { + httpOnlyFalse(oc) + or + not isPropertySet(oc, "HttpOnly") +} + +predicate nonHttpOnlyCookieOptionsCreation(ObjectCreation oc, MethodCall append) { + // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + httpOnlyFalseOrNotSet(oc) and + exists(DataFlow::Node creation, DataFlow::Node sink | + CookieOptionsTracking::flow(creation, sink) and + creation.asExpr() = oc and + sink.asExpr() = append.getArgument(2) + ) +} + +predicate nonHttpOnlySensitiveCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + isCookieWithSensitiveName(oc.getArgument(0)) and + ( + httpOnlyFalse(oc) + or + // the property wasn't explicitly set, so a default value from config is used + not isPropertySet(oc, "HttpOnly") and + // the default in config is not set to `true` + not exists(XmlElement element | + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isHttpOnlyCookies() + ) + ) +} + +predicate sensitiveCookieAppend(MethodCall mc) { + exists(MicrosoftAspNetCoreHttpResponseCookies iResponse | + iResponse.getAppendMethod() = mc.getTarget() and + isCookieWithSensitiveName(mc.getArgument(0)) + ) +} + +predicate nonHttpOnlyCookieCall(Call c) { + ( + not cookieAppendHttpOnlyByDefault() and + exists(MethodCall mc | + sensitiveCookieAppend(mc) and + ( + nonHttpOnlyCookieOptionsCreation(c, mc) + or + // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default + mc = c and + mc.getNumberOfArguments() < 3 + ) + ) + or + nonHttpOnlySensitiveCookieCreation(c) + ) +} + +predicate nonHttpOnlyPolicyAssignment(Assignment a, Expr val) { + val.getValue() = "false" and + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "HttpOnly" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) + ) +} + +from Expr httpOnlySink +where + ( + nonHttpOnlyCookieCall(httpOnlySink) + or + exists(Assignment a | + httpOnlySink = a.getRValue() and + nonHttpOnlyPolicyAssignment(a, _) + ) + ) +select httpOnlySink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs b/csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs new file mode 100644 index 00000000000..a9adf0d9982 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/cookiepolicyoptions.cs @@ -0,0 +1,12 @@ +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() + { + Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always, + HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always + }); + } +} \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs b/csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs new file mode 100644 index 00000000000..09f8dd8b1fa --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/httponlyflag.cs @@ -0,0 +1,7 @@ +class MyController : Controller +{ + void Login() + { + var cookie = new System.Web.HttpCookie("cookieName") { HttpOnly = true }; + } +} \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs b/csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs new file mode 100644 index 00000000000..455675b5ba9 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/httponlyflagcore.cs @@ -0,0 +1,8 @@ +class MyController : Controller +{ + void Login() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; + Response.Cookies.Append("auth", "secret", cookieOptions); + } +} \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp new file mode 100644 index 00000000000..ddf825aed26 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp @@ -0,0 +1,55 @@ + + + + +

    +Sensitive data that is transmitted using HTTP is vulnerable to being read by a third party. By default, +cookies are sent via HTTP, not HTTPS. +

    +
    + + +

    +In ASP.NET case when using cookies ensure that HTTPS is used by setting the property Microsoft.AspNetCore.Http.CookieOptions.Secure to true. +

    +

    +In ASP.NET Core case when using cookies, ensure that HTTPS is used, either via the <forms> attribute above, or +the <httpCookies> element, with the attribute requireSSL="true". It is also possible to require cookies +to use HTTPS programmatically, by setting the property System.Web.HttpCookie.Secure to true. +

    +
    + + + +

    +In the example below Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true programmatically. +

    + + + +

    +In the following example CookiePolicyOptions are set programmatically to configure defaults. +

    + + + +

    +In the example below System.Web.HttpCookie.Secure is set to true programmatically. +

    + + + +
    + + + +
  • CookieOptions.Secure Property,
  • +
  • Set-Cookie Header,
  • +
  • FormsAuthentication.RequireSSL Property,
  • +
  • forms Element for authentication,
  • +
  • httpCookies Element,
  • + +
    +
    diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql new file mode 100644 index 00000000000..1fd688cae5e --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -0,0 +1,116 @@ +/** + * @name 'Secure' attribute is not set to true + * @description Omitting the 'Secure' attribute allows data to be transmitted insecurely + * using HTTP. Always set 'Secure' to 'true' to ensure that HTTPS + * is used at all times. + * @kind problem + * @problem.severity error + * @precision high + * @id cs/web/cookie-secure-not-set + * @tags security + * external/cwe/cwe-319 + * external/cwe/cwe-614 + */ + +import csharp +import semmle.code.asp.WebConfig +import semmle.code.csharp.frameworks.system.Web +import semmle.code.csharp.frameworks.microsoft.AspNetCore +import semmle.code.csharp.security.auth.SecureCookies + +predicate cookieAppendSecureByDefault() { + // default is set to `Always` or `SameAsRequest` + ( + getAValueForCookiePolicyProp("Secure").getValue() = "0" or + getAValueForCookiePolicyProp("Secure").getValue() = "1" + ) + or + //callback `OnAppendCookie` that sets `Secure` to true + OnAppendCookieSecureTracking::flowTo(_) +} + +predicate secureFalse(ObjectCreation oc) { + exists(Assignment a | + getAValueForProp(oc, a, "Secure") = a.getRValue() and + a.getRValue().getValue() = "false" + ) +} + +predicate secureFalseOrNotSet(ObjectCreation oc) { + secureFalse(oc) + or + not isPropertySet(oc, "Secure") +} + +predicate insecureCookieOptionsCreation(ObjectCreation oc) { + // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set + oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and + secureFalseOrNotSet(oc) and + exists(DataFlow::Node creation | + CookieOptionsTracking::flow(creation, _) and + creation.asExpr() = oc + ) +} + +predicate insecureCookieAppend(Expr sink) { + // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default + exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | + mc = sink and + iResponse.getAppendMethod() = mc.getTarget() and + mc.getNumberOfArguments() < 3 + ) +} + +predicate insecureCookieCreation(ObjectCreation oc) { + oc.getType() instanceof SystemWebHttpCookie and + ( + secureFalse(oc) + or + // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used + isPropertySet(oc, "Secure") and + // the default in config is not set to `true` + // the `exists` below covers the `cs/web/requiressl-not-set` + not exists(XmlElement element | + element instanceof FormsElement and + element.(FormsElement).isRequireSsl() + or + element instanceof HttpCookiesElement and + element.(HttpCookiesElement).isRequireSsl() + ) + ) +} + +predicate insecureCookieCall(Call c) { + not cookieAppendSecureByDefault() and + ( + insecureCookieOptionsCreation(c) + or + insecureCookieAppend(c) + ) + or + insecureCookieCreation(c) +} + +predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { + exists(PropertyWrite pw | + ( + pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or + pw.getProperty().getDeclaringType() instanceof + MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions + ) and + pw.getProperty().getName() = "SecurePolicy" and + a.getLValue() = pw and + DataFlow::localExprFlow(val, a.getRValue()) and + val.getValue() = "2" // None + ) +} + +from Expr secureSink +where + insecureCookieCall(secureSink) + or + exists(Assignment a | + secureSink = a.getRValue() and + insecureSecurePolicyAssignment(a, _) + ) +select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs b/csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs new file mode 100644 index 00000000000..a9adf0d9982 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/cookiepolicyoptions.cs @@ -0,0 +1,12 @@ +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() + { + Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always, + HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always + }); + } +} \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-614/secureflag.cs b/csharp/ql/src/Security Features/CWE-614/secureflag.cs new file mode 100644 index 00000000000..4542d8630e2 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/secureflag.cs @@ -0,0 +1,7 @@ +class MyController : Controller +{ + void Login() + { + var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; + } +} \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-614/secureflagcore.cs b/csharp/ql/src/Security Features/CWE-614/secureflagcore.cs new file mode 100644 index 00000000000..5d8163cdf8d --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-614/secureflagcore.cs @@ -0,0 +1,8 @@ +class MyController : Controller +{ + void Login() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; + Response.Cookies.Append("auth", "secret", cookieOptions); + } +} \ No newline at end of file From 3cdfa8e0acb9b85f36d3a9183ec2888111fae506 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 20 Oct 2025 16:46:03 +0100 Subject: [PATCH 644/965] Update comments and names --- .../csharp/security/auth/SecureCookies.qll | 17 +++++++------ .../CWE-1004/CookieWithoutHttpOnly.ql | 14 +++++------ .../CWE-614/CookieWithoutSecure.ql | 25 ++++++++++--------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index 401944adcc4..8a0f08a4675 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -1,12 +1,12 @@ /** - * Provides classes and predicates for detecting insecure cookies. + * Definitions for detecting insecure and non-httponly cookies. */ import csharp import semmle.code.csharp.frameworks.microsoft.AspNetCore /** - * Holds if the expression is a variable with a sensitive name. + * Holds if the expression is a sensitive string literal or a variable with a sensitive name. */ predicate isCookieWithSensitiveName(Expr cookieExpr) { exists(DataFlow::Node sink | @@ -16,7 +16,7 @@ predicate isCookieWithSensitiveName(Expr cookieExpr) { } /** - * Configuration for tracking if a variable with a sensitive name is used as an argument. + * Configuration for tracking if a sensitive string literal or a variable with a sensitive name is used as an argument. */ private module AuthCookieNameConfig implements DataFlow::ConfigSig { private predicate isAuthVariable(Expr expr) { @@ -118,13 +118,13 @@ private signature string propertyName(); /** * Configuration for tracking if a callback used in `OnAppendCookie` sets a cookie property to `true`. + * + * ` getPropertyName` specifies the cookie property name to track. */ private module OnAppendCookieTrackingConfig implements DataFlow::ConfigSig { - /** - * Specifies the cookie property name to track. - */ + /** Source is the parameter of a callback passed to `OnAppendCookie` */ predicate isSource(DataFlow::Node source) { exists(PropertyWrite pw, Assignment delegateAssign, Callable c | pw.getProperty().getName() = "OnAppendCookie" and @@ -145,6 +145,7 @@ private module OnAppendCookieTrackingConfig impl ) } + /** Sink is a property write that sets the given property to `true`. */ predicate isSink(DataFlow::Node sink) { exists(PropertyWrite pw, Assignment a | pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and @@ -177,7 +178,7 @@ private module OnAppendCookieSecureTrackingConfig = OnAppendCookieTrackingConfig; /** - * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`. + * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`, and thus cookies appended to responses are secure by default. */ module OnAppendCookieSecureTracking = DataFlow::Global; @@ -190,6 +191,6 @@ private module OnAppendCookieHttpOnlyTrackingConfig = OnAppendCookieTrackingConfig; /** - * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. + * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`, and thus cookies appended to responses are httponly by default. */ module OnAppendCookieHttpOnlyTracking = DataFlow::Global; diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index 82cbb068b9f..6f52503d3ea 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -1,15 +1,13 @@ /** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. + * @name Cookie 'HttpOnly' attribute is not set to true + * @description Sensitive cookies without the `HttpOnly` property set are accessible by client-side scripts such as JavaScript. + * This makes them more vulnerable to being stolen by an XSS attack. * @kind problem * @problem.severity warning + * @security-severity 5.0 * @precision high * @id cs/web/cookie-httponly-not-set * @tags security - * experimental * external/cwe/cwe-1004 */ @@ -51,7 +49,7 @@ predicate nonHttpOnlyCookieOptionsCreation(ObjectCreation oc, MethodCall append) ) } -predicate nonHttpOnlySensitiveCookieCreation(ObjectCreation oc) { +predicate nonHttpOnlySystemWebSensitiveCookieCreation(ObjectCreation oc) { oc.getType() instanceof SystemWebHttpCookie and isCookieWithSensitiveName(oc.getArgument(0)) and ( @@ -88,7 +86,7 @@ predicate nonHttpOnlyCookieCall(Call c) { ) ) or - nonHttpOnlySensitiveCookieCreation(c) + nonHttpOnlySystemWebSensitiveCookieCreation(c) ) } diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql index 1fd688cae5e..db21b236f31 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -1,10 +1,10 @@ /** - * @name 'Secure' attribute is not set to true - * @description Omitting the 'Secure' attribute allows data to be transmitted insecurely - * using HTTP. Always set 'Secure' to 'true' to ensure that HTTPS - * is used at all times. + * @name Cookie 'Secure' attribute is not set to true + * @description Cookies without the `Secure` flag may be sent in cleartext. + * This makes them vulnerable to be intercepted by an attacker. * @kind problem * @problem.severity error + * @security-severity 5.0 * @precision high * @id cs/web/cookie-secure-not-set * @tags security @@ -61,15 +61,14 @@ predicate insecureCookieAppend(Expr sink) { ) } -predicate insecureCookieCreation(ObjectCreation oc) { +predicate insecureSystemWebCookieCreation(ObjectCreation oc) { oc.getType() instanceof SystemWebHttpCookie and ( secureFalse(oc) or // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used - isPropertySet(oc, "Secure") and + not isPropertySet(oc, "Secure") and // the default in config is not set to `true` - // the `exists` below covers the `cs/web/requiressl-not-set` not exists(XmlElement element | element instanceof FormsElement and element.(FormsElement).isRequireSsl() @@ -88,7 +87,7 @@ predicate insecureCookieCall(Call c) { insecureCookieAppend(c) ) or - insecureCookieCreation(c) + insecureSystemWebCookieCreation(c) } predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { @@ -105,12 +104,14 @@ predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { ) } -from Expr secureSink +from Expr secureSink, string msg where - insecureCookieCall(secureSink) + insecureCookieCall(secureSink) and + msg = "Cookie attribute 'Secure' is not set to true." or exists(Assignment a | secureSink = a.getRValue() and insecureSecurePolicyAssignment(a, _) - ) -select secureSink, "Cookie attribute 'Secure' is not set to true." + ) and + msg = "Cookie security policy sets cookies as insecure by default." +select secureSink, msg From bb010fee6b03ae4ad272b254e989f34d711f6020 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 23 Oct 2025 21:46:38 +0100 Subject: [PATCH 645/965] Add tests for secure cookie using aspnetcore --- .../CWE-614/CookieWithoutSecure.ql | 10 +-- .../CookieWithoutSecure.expected | 2 + .../CookieBuilder/CookieWithoutSecure.qlref | 2 + .../AspNetCore/CookieBuilder/Program.cs | 23 ++++++ .../NoPolicy/CookieWithoutSecure.expected | 4 + .../NoPolicy/CookieWithoutSecure.qlref | 2 + .../AspNetCore/NoPolicy/Program.cs | 75 +++++++++++++++++++ .../PolicyAlways/CookieWithoutSecure.expected | 1 + .../PolicyAlways/CookieWithoutSecure.qlref | 2 + .../AspNetCore/PolicyAlways/Program.cs | 25 +++++++ .../CookieWithoutSecure.expected | 1 + .../PolicyCallback/CookieWithoutSecure.qlref | 2 + .../AspNetCore/PolicyCallback/Program.cs | 41 ++++++++++ .../PolicyNone/CookieWithoutSecure.expected | 2 + .../PolicyNone/CookieWithoutSecure.qlref | 2 + .../AspNetCore/PolicyNone/Program.cs | 25 +++++++ .../CWE-614/InsecureCookie/AspNetCore/options | 3 + 17 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql index db21b236f31..c52a5cd992b 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -104,14 +104,12 @@ predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { ) } -from Expr secureSink, string msg +from Expr secureSink where - insecureCookieCall(secureSink) and - msg = "Cookie attribute 'Secure' is not set to true." + insecureCookieCall(secureSink) or exists(Assignment a | secureSink = a.getRValue() and insecureSecurePolicyAssignment(a, _) - ) and - msg = "Cookie security policy sets cookies as insecure by default." -select secureSink, msg + ) +select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected new file mode 100644 index 00000000000..fdddb5357bd --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.expected @@ -0,0 +1,2 @@ +| Program.cs:14:37:14:85 | access to constant None | Cookie attribute 'Secure' is not set to true. | +| Program.cs:19:43:19:91 | access to constant None | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs new file mode 100644 index 00000000000..245c693f513 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/CookieBuilder/Program.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authentication; + +public class Startup +{ + public void ConfigureServices(IServiceCollection services) + { + services.AddAuthentication().AddCookie(o => + { + o.Cookie.HttpOnly = false; + o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; // $ Alert + }); + + services.AddSession(options => + { + options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; // $ Alert + options.Cookie.HttpOnly = false; + }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected new file mode 100644 index 00000000000..4c2bbcca1ca --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.expected @@ -0,0 +1,4 @@ +| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'Secure' is not set to true. | +| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | +| Program.cs:35:29:35:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | +| Program.cs:42:29:42:92 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs new file mode 100644 index 00000000000..733e2d71fcc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/NoPolicy/Program.cs @@ -0,0 +1,75 @@ +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("name", "value"); // $Alert // BAD: Secure is set to false by default + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + Response.Cookies.Append("name", "value", cookieOptions); // BAD: Secure is set to false by default + } + + public void CookieDelete() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Delete("name", cookieOptions); // GOOD: Delete call + } + + void CookieDirectTrue() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + cookieOptions.Secure = true; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD + } + + void CookieDirectTrueInitializer() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD + } + + void CookieDirectFalse() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + cookieOptions.Secure = false; + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + } + + void CookieDirectFalseInitializer() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = false }; // $Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + } + + void CookieIntermediateTrue() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + bool v = true; + cookieOptions.Secure = v; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow + } + + void CookieIntermediateTrueInitializer() + { + bool v = true; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow + } + + void CookieIntermediateFalse() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $MISSING:Alert + bool v = false; + cookieOptions.Secure = v; + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected + } + + void CookieIntermediateFalseInitializer() + { + bool v = false; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; // $MISSING:Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.expected @@ -0,0 +1 @@ + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs new file mode 100644 index 00000000000..7c125f9265d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyAlways/Program.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // GOOD: Secure is set in policy + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in policy + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() { Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.expected @@ -0,0 +1 @@ + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs new file mode 100644 index 00000000000..85bd3bedd6d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyCallback/Program.cs @@ -0,0 +1,41 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // GOOD: Secure is set in callback + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in callback + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(); + } + + public void ConfigureServices(IServiceCollection services) + { + services.Configure(options => + { + options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); + }); + } + + private void SetCookies(CookieOptions options) + { + options.Secure = true; + options.HttpOnly = true; + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected new file mode 100644 index 00000000000..030293f7b7e --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.expected @@ -0,0 +1,2 @@ +| Program.cs:8:9:8:49 | call to method Append | Cookie attribute 'Secure' is not set to true. | +| Program.cs:13:29:13:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs new file mode 100644 index 00000000000..989412e3d02 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/PolicyNone/Program.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // $ Alert // Bad: Secure policy set to None + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $ Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: Secure policy set to None + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() { Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.None }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options new file mode 100644 index 00000000000..3282ecf48f6 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/AspNetCore/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj From a9b97f7065d76f2ae985dae444bc6ba34c18e29d Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 11:09:01 +0100 Subject: [PATCH 646/965] Add tests for insecure cookie using system.web --- .../RequireSSLSystemWeb/FormsTrue/Program.cs | 24 -------- .../CookieWithoutSecure.expected | 3 + .../RequireSSLFalse/CookieWithoutSecure.qlref | 2 + .../SystemWeb/RequireSSLFalse/Program.cs | 55 +++++++++++++++++++ .../SystemWeb/RequireSSLFalse/Web.config | 6 ++ .../SystemWeb/RequireSSLFalse/options | 3 + .../FormsTrue/CookieWithoutSecure.expected | 0 .../FormsTrue/CookieWithoutSecure.qlref | 2 + .../RequireSSLTrue/FormsTrue/Program.cs | 7 +++ .../RequireSSLTrue/FormsTrue/Web.config | 9 +++ .../CookieWithoutSecure.expected | 0 .../HttpCookiesTrue/CookieWithoutSecure.qlref | 2 + .../RequireSSLTrue/HttpCookiesTrue/Program.cs | 7 +++ .../RequireSSLTrue/HttpCookiesTrue/Web.config | 6 ++ .../SystemWeb/RequireSSLTrue/options | 3 + 15 files changed, 105 insertions(+), 24 deletions(-) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs index be53a64ae6e..8f2c4cce0a4 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs +++ b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs @@ -4,28 +4,4 @@ class Program { var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected new file mode 100644 index 00000000000..4ef56f10d55 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.expected @@ -0,0 +1,3 @@ +| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | +| Program.cs:34:22:34:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | +| Program.cs:40:22:40:79 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs new file mode 100644 index 00000000000..250b1f7780e --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Program.cs @@ -0,0 +1,55 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // $Alert // BAD: requireSSL is set to false by default + } + + void CookieDirectTrue() + { + var cookie = new System.Web.HttpCookie("cookieName"); + cookie.Secure = true; // GOOD + } + + void CookieDirectTrueInitializer() + { + var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD + } + + void CookieIntermediateTrue() + { + var cookie = new System.Web.HttpCookie("cookieName"); + bool v = true; + cookie.Secure = v; // GOOD: should track local data flow + } + + void CookieIntermediateTrueInitializer() + { + bool v = true; + var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow + } + + void CookieDirectFalse() + { + var cookie = new System.Web.HttpCookie("cookieName"); // $Alert + cookie.Secure = false; // BAD + } + + void CookieDirectFalseInitializer() + { + var cookie = new System.Web.HttpCookie("cookieName") { Secure = false }; // $Alert // BAD + } + + void CookieIntermediateFalse() + { + var cookie = new System.Web.HttpCookie("cookieName"); // $MISSING:Alert + bool v = false; + cookie.Secure = v; // BAD, but not detected + } + + void CookieIntermediateFalseInitializer() + { + bool v = false; + var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // $MISSING:Alert // BAD, but not detected + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config new file mode 100644 index 00000000000..96fd10c05b7 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/Web.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options new file mode 100644 index 00000000000..9414f8d8ef8 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLFalse/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs new file mode 100644 index 00000000000..8f2c4cce0a4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config new file mode 100644 index 00000000000..c65c506b512 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/FormsTrue/Web.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.expected b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..bb0094e7d8f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs new file mode 100644 index 00000000000..8f2c4cce0a4 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config new file mode 100644 index 00000000000..831693f0931 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/HttpCookiesTrue/Web.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options new file mode 100644 index 00000000000..488c2bc3705 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/InsecureCookie/SystemWeb/RequireSSLTrue/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../../resources/stubs/System.Web.cs From ae0b997c3150615b219b13549252d85a743c0f69 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 11:28:20 +0100 Subject: [PATCH 647/965] Add system.web tests for httponly cookie --- .../SystemWeb/CookieWithoutHttpOnly.expected | 3 + .../SystemWeb/CookieWithoutHttpOnly.qlref | 2 + .../HttpOnlyCookie/SystemWeb/Program.cs | 66 +++++++++++++++++++ .../HttpOnlyCookie/SystemWeb/Web.config | 6 ++ .../CWE-1004/HttpOnlyCookie/SystemWeb/options | 3 + 5 files changed, 80 insertions(+) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..3a3d027e1f9 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected @@ -0,0 +1,3 @@ +| Program.cs:16:22:16:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:32:22:32:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:38:22:38:80 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs new file mode 100644 index 00000000000..3e63963712f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs @@ -0,0 +1,66 @@ +class Program +{ + void CookieDirectTrue() + { + var cookie = new System.Web.HttpCookie("sessionID"); + cookie.HttpOnly = true; // GOOD + } + + void CookieDirectTrueInitializer() + { + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD + } + + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("sessionID"); // $Alert // BAD: httpOnlyCookies is set to false by default + } + + void CookieDefaultForgery() + { + var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie + } + + void CookieForgeryDirectFalse() + { + var cookie = new System.Web.HttpCookie("antiforgerytoken"); + cookie.HttpOnly = false; // GOOD: not an auth cookie + } + + void CookieDirectFalse() + { + var cookie = new System.Web.HttpCookie("sessionID"); // $Alert + cookie.HttpOnly = false; // BAD + } + + void CookieDirectFalseInitializer() + { + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = false }; // $Alert // BAD + } + + void CookieIntermediateTrue() + { + var cookie = new System.Web.HttpCookie("sessionID"); + bool v = true; + cookie.HttpOnly = v; // GOOD: should track local data flow + } + + void CookieIntermediateTrueInitializer() + { + bool v = true; + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow + } + + void CookieIntermediateFalse() + { + var cookie = new System.Web.HttpCookie("sessionID"); // MISSING:Alert + bool v = false; + cookie.HttpOnly = v; // BAD + } + + void CookieIntermediateFalseInitializer() + { + bool v = false; + var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // $MISSING:Alert // BAD + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config new file mode 100644 index 00000000000..96fd10c05b7 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options new file mode 100644 index 00000000000..9d05f9bf06d --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs From 6ba7ece2f06d66a731651e26b8a6b964da419551 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 13:09:19 +0100 Subject: [PATCH 648/965] Add httponly tests for aspnet core + fixes --- .../CWE-1004/CookieWithoutHttpOnly.ql | 6 +- .../CookieWithoutHttpOnly.expected | 2 + .../CookieBuilder/CookieWithoutHttpOnly.qlref | 2 + .../AspNetCore/CookieBuilder/Program.cs | 23 ++++++ .../NoPolicy/CookieWithoutHttpOnly.expected | 4 + .../NoPolicy/CookieWithoutHttpOnly.qlref | 2 + .../AspNetCore/NoPolicy/Program.cs | 82 +++++++++++++++++++ .../CookieWithoutHttpOnly.expected | 0 .../PolicyAlways/CookieWithoutHttpOnly.qlref | 2 + .../AspNetCore/PolicyAlways/Program.cs | 25 ++++++ .../CookieWithoutHttpOnly.expected | 0 .../CookieWithoutHttpOnly.qlref | 2 + .../AspNetCore/PolicyCallback/Program.cs | 41 ++++++++++ .../PolicyNone/CookieWithoutHttpOnly.expected | 2 + .../PolicyNone/CookieWithoutHttpOnly.qlref | 2 + .../AspNetCore/PolicyNone/Program.cs | 25 ++++++ .../HttpOnlyCookie/AspNetCore/options | 3 + 17 files changed, 220 insertions(+), 3 deletions(-) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index 6f52503d3ea..4205fb4f70c 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -22,7 +22,7 @@ predicate cookieAppendHttpOnlyByDefault() { getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" or // there is an `OnAppendCookie` callback that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) + OnAppendCookieHttpOnlyTracking::flowTo(_) } predicate httpOnlyFalse(ObjectCreation oc) { @@ -90,7 +90,7 @@ predicate nonHttpOnlyCookieCall(Call c) { ) } -predicate nonHttpOnlyPolicyAssignment(Assignment a, Expr val) { +predicate nonHttpOnlyCookieBuilderAssignment(Assignment a, Expr val) { val.getValue() = "false" and exists(PropertyWrite pw | ( @@ -111,7 +111,7 @@ where or exists(Assignment a | httpOnlySink = a.getRValue() and - nonHttpOnlyPolicyAssignment(a, _) + nonHttpOnlyCookieBuilderAssignment(a, _) ) ) select httpOnlySink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..cf0986a446c --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.expected @@ -0,0 +1,2 @@ +| Program.cs:13:33:13:37 | false | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:20:39:20:43 | false | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs new file mode 100644 index 00000000000..ba92978ec49 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/CookieBuilder/Program.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authentication; + +public class Startup +{ + public void ConfigureServices(IServiceCollection services) + { + services.AddAuthentication().AddCookie(o => + { + o.Cookie.HttpOnly = false; // $ Alert + o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + }); + + services.AddSession(options => + { + options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; + options.Cookie.HttpOnly = false; // $ Alert + }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..1e71f06bfb6 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.expected @@ -0,0 +1,4 @@ +| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:42:29:42:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:49:29:49:94 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs new file mode 100644 index 00000000000..4df46f20c8c --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/NoPolicy/Program.cs @@ -0,0 +1,82 @@ +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "value"); // $Alert // BAD: HttpOnly is set to false by default + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + Response.Cookies.Append("auth", "value", cookieOptions); // BAD: HttpOnly is set to false by default + } + + public void CookieDelete() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Delete("auth", cookieOptions); // GOOD: Delete call + } + + void CookieDirectFalseForgery() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + cookieOptions.HttpOnly = false; + Response.Cookies.Append("antiforgerytoken", "secret", cookieOptions); // GOOD: not an auth cookie + } + + void CookieDirectTrue() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + cookieOptions.HttpOnly = true; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD + } + + void CookieDirectTrueInitializer() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD + } + + void CookieDirectFalse() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $Alert + cookieOptions.HttpOnly = false; + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + } + + void CookieDirectFalseInitializer() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = false }; // $Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD + } + + void CookieIntermediateTrue() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + bool v = true; + cookieOptions.HttpOnly = v; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow + } + + void CookieIntermediateTrueInitializer() + { + bool v = true; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow + } + + void CookieIntermediateFalse() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $MISSING:Alert + bool v = false; + cookieOptions.HttpOnly = v; + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected + } + + void CookieIntermediateFalseInitializer() + { + bool v = false; + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; // $MISSING:Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // BAD, but not detected + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs new file mode 100644 index 00000000000..cdb8a9081d1 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyAlways/Program.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // GOOD: HttpOnly is set in policy + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in policy + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs new file mode 100644 index 00000000000..6d44521e85f --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyCallback/Program.cs @@ -0,0 +1,41 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // GOOD: HttpOnly is set in callback + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); + Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in callback + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(); + } + + public void ConfigureServices(IServiceCollection services) + { + services.Configure(options => + { + options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); + }); + } + + private void SetCookies(CookieOptions options) + { + options.Secure = true; + options.HttpOnly = true; + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..adfb1ab3efa --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.expected @@ -0,0 +1,2 @@ +| Program.cs:8:9:8:49 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | +| Program.cs:13:29:13:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs new file mode 100644 index 00000000000..187a02e71dc --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/PolicyNone/Program.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; + +public class MyController : Microsoft.AspNetCore.Mvc.Controller +{ + public void CookieDefault() + { + Response.Cookies.Append("auth", "secret"); // $ Alert // Bad: HttpOnly policy set to None + } + + public void CookieDefault2() + { + var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); // $ Alert + Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: HttpOnly policy set to None + } +} + +public class Startup +{ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None }); + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options new file mode 100644 index 00000000000..3282ecf48f6 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/AspNetCore/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj From cdd1edd53b2968734f692c5f57ff08c1d16c8791 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 14:51:02 +0100 Subject: [PATCH 649/965] Remove experimental versions --- .../CWE-1004/CookieWithoutHttpOnly.qhelp | 51 ----- .../CWE-1004/CookieWithoutHttpOnly.ql | 119 ----------- .../CWE-1004/cookiepolicyoptions.cs | 12 -- .../CWE-1004/httponlyflag.cs | 7 - .../CWE-1004/httponlyflagcore.cs | 8 - .../CWE-614/CookieWithoutSecure.qhelp | 55 ----- .../CWE-614/CookieWithoutSecure.ql | 117 ----------- .../Security Features/CWE-614/Web.config | 13 -- .../CWE-614/cookiepolicyoptions.cs | 12 -- .../Security Features/CWE-614/secureflag.cs | 7 - .../CWE-614/secureflagcore.cs | 8 - .../dataflow/flowsources/AuthCookie.qll | 196 ------------------ .../CookieBuilder/HttpOnly.expected | 2 - .../CookieBuilder/HttpOnly.qlref | 1 - .../CookieBuilder/Program.cs | 23 -- .../NoPolicy/HttpOnly.expected | 4 - .../NoPolicy/HttpOnly.qlref | 1 - .../NoPolicy/Program.cs | 71 ------- .../UseCookiePolicyCallback/HttpOnly.expected | 0 .../UseCookiePolicyCallback/HttpOnly.qlref | 1 - .../UseCookiePolicyCallback/Program.cs | 37 ---- .../CookieHttpOnlyFalseAspNetCore/options | 3 - .../HttpOnly.expected | 4 - .../HttpOnly.qlref | 1 - .../CookieHttpOnlyFalseSystemWeb/Program.cs | 56 ----- .../CookieHttpOnlyFalseSystemWeb/Web.config | 6 - .../CookieHttpOnlyFalseSystemWeb/options | 3 - .../NoPolicy/HttpOnly.expected | 2 - .../NoPolicy/HttpOnly.qlref | 1 - .../NoPolicy/Program.cs | 52 ----- .../UseCookiePolicyAlways/HttpOnly.expected | 0 .../UseCookiePolicyAlways/HttpOnly.qlref | 1 - .../UseCookiePolicyAlways/Program.cs | 25 --- .../UseCookiePolicyCallback/HttpOnly.expected | 0 .../UseCookiePolicyCallback/HttpOnly.qlref | 1 - .../UseCookiePolicyCallback/Program.cs | 36 ---- .../UseCookiePolicyNone/HttpOnly.expected | 2 - .../UseCookiePolicyNone/HttpOnly.qlref | 1 - .../UseCookiePolicyNone/Program.cs | 25 --- .../CookieWithoutHttpOnlyAspNetCore/options | 3 - .../ConfigEmpty/HttpOnly.expected | 1 - .../ConfigEmpty/HttpOnly.qlref | 1 - .../ConfigEmpty/Program.cs | 36 ---- .../ConfigEmpty/Web.config | 6 - .../ConfigEmpty/options | 3 - .../ConfigFalse/HttpOnly.expected | 1 - .../ConfigFalse/HttpOnly.qlref | 1 - .../ConfigFalse/Program.cs | 36 ---- .../ConfigFalse/Web.config | 6 - .../ConfigFalse/options | 3 - .../HttpCookiesTrue/HttpOnly.expected | 0 .../HttpCookiesTrue/HttpOnly.qlref | 1 - .../HttpCookiesTrue/Program.cs | 36 ---- .../HttpCookiesTrue/Web.config | 6 - .../HttpCookiesTrue/options | 3 - .../RequireSSLAspNetCore/NoPolicy/Program.cs | 47 ----- .../NoPolicy/RequireSSL.expected | 2 - .../NoPolicy/RequireSSL.qlref | 1 - .../UseCookiePolicyAlways/Program.cs | 25 --- .../UseCookiePolicyAlways/RequireSSL.expected | 0 .../UseCookiePolicyAlways/RequireSSL.qlref | 1 - .../UseCookiePolicyCallback/Program.cs | 41 ---- .../RequireSSL.expected | 0 .../UseCookiePolicyCallback/RequireSSL.qlref | 1 - .../UseCookiePolicyNone/Program.cs | 25 --- .../UseCookiePolicyNone/RequireSSL.expected | 2 - .../UseCookiePolicyNone/RequireSSL.qlref | 1 - .../CWE-614/RequireSSLAspNetCore/options | 3 - .../CookieBuilder/Program.cs | 23 -- .../CookieBuilder/RequireSSL.expected | 2 - .../CookieBuilder/RequireSSL.qlref | 1 - .../NoPolicy/Program.cs | 64 ------ .../NoPolicy/RequireSSL.expected | 4 - .../NoPolicy/RequireSSL.qlref | 1 - .../UseCookiePolicyCallback/Program.cs | 37 ---- .../RequireSSL.expected | 0 .../UseCookiePolicyCallback/RequireSSL.qlref | 1 - .../CWE-614/RequireSSLFalseAspNetCore/options | 3 - .../RequireSSLFalseSystemWeb/Program.cs | 50 ----- .../RequireSSL.expected | 4 - .../RequireSSLFalseSystemWeb/RequireSSL.qlref | 1 - .../RequireSSLFalseSystemWeb/Web.config | 6 - .../CWE-614/RequireSSLFalseSystemWeb/options | 3 - .../ConfigEmpty/Program.cs | 31 --- .../ConfigEmpty/RequireSSL.expected | 1 - .../ConfigEmpty/RequireSSL.qlref | 1 - .../ConfigEmpty/Web.config | 6 - .../RequireSSLSystemWeb/ConfigEmpty/options | 3 - .../ConfigFalse/Program.cs | 31 --- .../ConfigFalse/RequireSSL.expected | 1 - .../ConfigFalse/RequireSSL.qlref | 1 - .../ConfigFalse/Web.config | 6 - .../RequireSSLSystemWeb/ConfigFalse/options | 3 - .../RequireSSLSystemWeb/FormsTrue/Program.cs | 7 - .../FormsTrue/RequireSSL.expected | 0 .../FormsTrue/RequireSSL.qlref | 1 - .../RequireSSLSystemWeb/FormsTrue/Web.config | 9 - .../RequireSSLSystemWeb/FormsTrue/options | 3 - .../HttpCookiesTrue/Program.cs | 31 --- .../HttpCookiesTrue/RequireSSL.expected | 0 .../HttpCookiesTrue/RequireSSL.qlref | 1 - .../HttpCookiesTrue/Web.config | 6 - .../HttpCookiesTrue/options | 3 - 103 files changed, 1601 deletions(-) delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/Web.config delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs delete mode 100644 csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs delete mode 100644 csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.expected delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config delete mode 100644 csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp deleted file mode 100644 index c7c10a3af9e..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp +++ /dev/null @@ -1,51 +0,0 @@ - - - - -

    -Cookies without HttpOnly flag are accessible to JavaScript running in the same origin. In case of -Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. -

    -
    - - -

    -Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make -them not accessible to JavaScript. In ASP.NET case it is also possible to set the attribute via <httpCookies> element -of web.config with the attribute httpOnlyCookies="true". -

    -
    - - - -

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true. -

    - - - -

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. -

    - - - -

    -In the example below System.Web.HttpCookie.HttpOnly is set to true. -

    - - - -
    - - - -
  • CookieOptions.HttpOnly Property,
  • -
  • Set-Cookie Header,
  • -
  • HttpCookie.HttpOnly Property,
  • -
  • httpCookies Element,
  • - -
    -
    diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql deleted file mode 100644 index e6fb24fa8a8..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. - * @kind problem - * @problem.severity warning - * @precision high - * @id cs/web/cookie-httponly-not-set - * @tags security - * experimental - * external/cwe/cwe-1004 - */ - -import csharp -import semmle.code.asp.WebConfig -import semmle.code.csharp.frameworks.system.Web -import semmle.code.csharp.frameworks.microsoft.AspNetCore -import experimental.dataflow.flowsources.AuthCookie - -predicate cookieAppendHttpOnlyByDefault() { - // default is set to `Always` - getAValueForCookiePolicyProp("HttpOnly").getValue() = "1" - or - // there is an `OnAppendCookie` callback that sets `HttpOnly` to true - not OnAppendCookieHttpOnlyTracking::flowTo(_) -} - -predicate httpOnlyFalse(ObjectCreation oc) { - exists(Assignment a | - getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and - a.getRValue().getValue() = "false" - ) -} - -predicate httpOnlyFalseOrNotSet(ObjectCreation oc) { - httpOnlyFalse(oc) - or - not isPropertySet(oc, "HttpOnly") -} - -predicate nonHttpOnlyCookieOptionsCreation(ObjectCreation oc, MethodCall append) { - // `HttpOnly` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - httpOnlyFalseOrNotSet(oc) and - exists(DataFlow::Node creation, DataFlow::Node sink | - CookieOptionsTracking::flow(creation, sink) and - creation.asExpr() = oc and - sink.asExpr() = append.getArgument(2) - ) -} - -predicate nonHttpOnlySensitiveCookieCreation(ObjectCreation oc) { - oc.getType() instanceof SystemWebHttpCookie and - isCookieWithSensitiveName(oc.getArgument(0)) and - ( - httpOnlyFalse(oc) - or - // the property wasn't explicitly set, so a default value from config is used - not isPropertySet(oc, "HttpOnly") and - // the default in config is not set to `true` - not exists(XmlElement element | - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isHttpOnlyCookies() - ) - ) -} - -predicate sensitiveCookieAppend(MethodCall mc) { - exists(MicrosoftAspNetCoreHttpResponseCookies iResponse | - iResponse.getAppendMethod() = mc.getTarget() and - isCookieWithSensitiveName(mc.getArgument(0)) - ) -} - -predicate nonHttpOnlyCookieCall(Call c) { - ( - not cookieAppendHttpOnlyByDefault() and - exists(MethodCall mc | - sensitiveCookieAppend(mc) and - ( - nonHttpOnlyCookieOptionsCreation(c, mc) - or - // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default - mc = c and - mc.getNumberOfArguments() < 3 - ) - ) - or - nonHttpOnlySensitiveCookieCreation(c) - ) -} - -predicate nonHttpOnlyPolicyAssignment(Assignment a, Expr val) { - val.getValue() = "false" and - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "HttpOnly" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) - ) -} - -from Expr httpOnlySink -where - ( - nonHttpOnlyCookieCall(httpOnlySink) - or - exists(Assignment a | - httpOnlySink = a.getRValue() and - nonHttpOnlyPolicyAssignment(a, _) - ) - ) -select httpOnlySink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs b/csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs deleted file mode 100644 index a9adf0d9982..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/cookiepolicyoptions.cs +++ /dev/null @@ -1,12 +0,0 @@ -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() - { - Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always, - HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always - }); - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs b/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs deleted file mode 100644 index 09f8dd8b1fa..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflag.cs +++ /dev/null @@ -1,7 +0,0 @@ -class MyController : Controller -{ - void Login() - { - var cookie = new System.Web.HttpCookie("cookieName") { HttpOnly = true }; - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs b/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs deleted file mode 100644 index 455675b5ba9..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-1004/httponlyflagcore.cs +++ /dev/null @@ -1,8 +0,0 @@ -class MyController : Controller -{ - void Login() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp deleted file mode 100644 index ddf825aed26..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.qhelp +++ /dev/null @@ -1,55 +0,0 @@ - - - - -

    -Sensitive data that is transmitted using HTTP is vulnerable to being read by a third party. By default, -cookies are sent via HTTP, not HTTPS. -

    -
    - - -

    -In ASP.NET case when using cookies ensure that HTTPS is used by setting the property Microsoft.AspNetCore.Http.CookieOptions.Secure to true. -

    -

    -In ASP.NET Core case when using cookies, ensure that HTTPS is used, either via the <forms> attribute above, or -the <httpCookies> element, with the attribute requireSSL="true". It is also possible to require cookies -to use HTTPS programmatically, by setting the property System.Web.HttpCookie.Secure to true. -

    -
    - - - -

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true programmatically. -

    - - - -

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. -

    - - - -

    -In the example below System.Web.HttpCookie.Secure is set to true programmatically. -

    - - - -
    - - - -
  • CookieOptions.Secure Property,
  • -
  • Set-Cookie Header,
  • -
  • FormsAuthentication.RequireSSL Property,
  • -
  • forms Element for authentication,
  • -
  • httpCookies Element,
  • - -
    -
    diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql deleted file mode 100644 index 210c1f9b1c0..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql +++ /dev/null @@ -1,117 +0,0 @@ -/** - * @name 'Secure' attribute is not set to true - * @description Omitting the 'Secure' attribute allows data to be transmitted insecurely - * using HTTP. Always set 'Secure' to 'true' to ensure that HTTPS - * is used at all times. - * @kind problem - * @problem.severity error - * @precision high - * @id cs/web/cookie-secure-not-set - * @tags security - * experimental - * external/cwe/cwe-319 - * external/cwe/cwe-614 - */ - -import csharp -import semmle.code.asp.WebConfig -import semmle.code.csharp.frameworks.system.Web -import semmle.code.csharp.frameworks.microsoft.AspNetCore -import experimental.dataflow.flowsources.AuthCookie - -predicate cookieAppendSecureByDefault() { - // default is set to `Always` or `SameAsRequest` - ( - getAValueForCookiePolicyProp("Secure").getValue() = "0" or - getAValueForCookiePolicyProp("Secure").getValue() = "1" - ) - or - //callback `OnAppendCookie` that sets `Secure` to true - OnAppendCookieSecureTracking::flowTo(_) -} - -predicate secureFalse(ObjectCreation oc) { - exists(Assignment a | - getAValueForProp(oc, a, "Secure") = a.getRValue() and - a.getRValue().getValue() = "false" - ) -} - -predicate secureFalseOrNotSet(ObjectCreation oc) { - secureFalse(oc) - or - not isPropertySet(oc, "Secure") -} - -predicate insecureCookieOptionsCreation(ObjectCreation oc) { - // `Secure` property in `CookieOptions` passed to IResponseCookies.Append(...) wasn't set - oc.getType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - secureFalseOrNotSet(oc) and - exists(DataFlow::Node creation | - CookieOptionsTracking::flow(creation, _) and - creation.asExpr() = oc - ) -} - -predicate insecureCookieAppend(Expr sink) { - // IResponseCookies.Append(String, String) was called, `Secure` is set to `false` by default - exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | - mc = sink and - iResponse.getAppendMethod() = mc.getTarget() and - mc.getNumberOfArguments() < 3 - ) -} - -predicate insecureCookieCreation(ObjectCreation oc) { - oc.getType() instanceof SystemWebHttpCookie and - ( - secureFalse(oc) - or - // `Secure` property in `System.Web.HttpCookie` wasn't set, so a default value from config is used - isPropertySet(oc, "Secure") and - // the default in config is not set to `true` - // the `exists` below covers the `cs/web/requiressl-not-set` - not exists(XmlElement element | - element instanceof FormsElement and - element.(FormsElement).isRequireSsl() - or - element instanceof HttpCookiesElement and - element.(HttpCookiesElement).isRequireSsl() - ) - ) -} - -predicate insecureCookieCall(Call c) { - not cookieAppendSecureByDefault() and - ( - insecureCookieOptionsCreation(c) - or - insecureCookieAppend(c) - ) - or - insecureCookieCreation(c) -} - -predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { - exists(PropertyWrite pw | - ( - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieBuilder or - pw.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions - ) and - pw.getProperty().getName() = "SecurePolicy" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) and - val.getValue() = "2" // None - ) -} - -from Expr secureSink -where - insecureCookieCall(secureSink) - or - exists(Assignment a | - secureSink = a.getRValue() and - insecureSecurePolicyAssignment(a, _) - ) -select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/Web.config b/csharp/ql/src/experimental/Security Features/CWE-614/Web.config deleted file mode 100644 index 89d4561cd62..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/Web.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs b/csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs deleted file mode 100644 index a9adf0d9982..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/cookiepolicyoptions.cs +++ /dev/null @@ -1,12 +0,0 @@ -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() - { - Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always, - HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always - }); - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs b/csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs deleted file mode 100644 index 4542d8630e2..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/secureflag.cs +++ /dev/null @@ -1,7 +0,0 @@ -class MyController : Controller -{ - void Login() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs b/csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs deleted file mode 100644 index 5d8163cdf8d..00000000000 --- a/csharp/ql/src/experimental/Security Features/CWE-614/secureflagcore.cs +++ /dev/null @@ -1,8 +0,0 @@ -class MyController : Controller -{ - void Login() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); - } -} \ No newline at end of file diff --git a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll b/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll deleted file mode 100644 index e91ae9de538..00000000000 --- a/csharp/ql/src/experimental/dataflow/flowsources/AuthCookie.qll +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Provides classes and predicates for detecting insecure cookies. - */ -deprecated module; - -import csharp -import semmle.code.csharp.frameworks.microsoft.AspNetCore - -/** - * Holds if the expression is a variable with a sensitive name. - */ -predicate isCookieWithSensitiveName(Expr cookieExpr) { - exists(DataFlow::Node sink | - AuthCookieName::flowTo(sink) and - sink.asExpr() = cookieExpr - ) -} - -/** - * Configuration for tracking if a variable with a sensitive name is used as an argument. - */ -private module AuthCookieNameConfig implements DataFlow::ConfigSig { - private predicate isAuthVariable(Expr expr) { - exists(string val | - ( - val = expr.getValue() or - val = expr.(Access).getTarget().getName() - ) and - val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and - not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") - ) - } - - predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { exists(Call c | sink.asExpr() = c.getAnArgument()) } -} - -/** - * Tracks if a variable with a sensitive name is used as an argument. - */ -private module AuthCookieName = DataFlow::Global; - -/** - * Configuration module tracking creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` - * calls as a third parameter. - */ -private module CookieOptionsTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.asExpr().(ObjectCreation).getType() instanceof MicrosoftAspNetCoreHttpCookieOptions - } - - predicate isSink(DataFlow::Node sink) { - exists(MicrosoftAspNetCoreHttpResponseCookies iResponse, MethodCall mc | - iResponse.getAppendMethod() = mc.getTarget() and - mc.getArgument(2) = sink.asExpr() - ) - } -} - -/** - * Tracking creation of `CookieOptions` to `IResponseCookies.Append(String, String, CookieOptions)` - * calls as a third parameter. - */ -module CookieOptionsTracking = DataFlow::Global; - -/** - * Looks for property value of `CookiePolicyOptions` passed to `app.UseCookiePolicy` in `Startup.Configure`. - */ -Expr getAValueForCookiePolicyProp(string prop) { - exists(Method m, MethodCall mc, ObjectCreation oc, Expr val | - m.getName() = "Configure" and - m.getDeclaringType().getName() = "Startup" and - m.getBody().getAChild+() = mc and - mc.getTarget() = - any(MicrosoftAspNetCoreBuilderCookiePolicyAppBuilderExtensions e).getUseCookiePolicyMethod() and - oc.getType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and - getAValueForProp(oc, _, prop) = val and - result = val - ) -} - -/** - * A simplistic points-to alternative: given an object creation and a property name, get the values that property can be assigned. - * - * Assumptions: - * - we don't reassign the variable that the creation is stored in - * - we always access the creation through the same variable it is initially assigned to - * - * This should cover most typical patterns... - */ -Expr getAValueForProp(ObjectCreation create, Assignment a, string prop) { - // values set in object init - exists(MemberInitializer init, Expr src, PropertyAccess pa | - a.getLValue() = pa and - pa.getTarget().hasName(prop) and - init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and - init.getLValue() = pa and - DataFlow::localExprFlow(src, init.getRValue()) and - result = src - ) - or - // values set on var that create is assigned to - exists(Expr src, PropertyAccess pa | - a.getLValue() = pa and - pa.getTarget().hasName(prop) and - DataFlow::localExprFlow(create, pa.getQualifier()) and - DataFlow::localExprFlow(src, a.getRValue()) and - result = src - ) -} - -/** - * Checks if the given property was explicitly set to a value. - */ -predicate isPropertySet(ObjectCreation oc, string prop) { exists(getAValueForProp(oc, _, prop)) } - -private signature string propertyName(); - -/** - * Configuration for tracking if a callback used in `OnAppendCookie` sets a cookie property to `true`. - */ -private module OnAppendCookieTrackingConfig implements - DataFlow::ConfigSig -{ - /** - * Specifies the cookie property name to track. - */ - predicate isSource(DataFlow::Node source) { - exists(PropertyWrite pw, Assignment delegateAssign, Callable c | - pw.getProperty().getName() = "OnAppendCookie" and - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and - delegateAssign.getLValue() = pw and - ( - exists(LambdaExpr lambda | - delegateAssign.getRValue() = lambda and - lambda = c - ) - or - exists(DelegateCreation delegate | - delegateAssign.getRValue() = delegate and - delegate.getArgument().(CallableAccess).getTarget() = c - ) - ) and - c.getParameter(0) = source.asParameter() - ) - } - - predicate isSink(DataFlow::Node sink) { - exists(PropertyWrite pw, Assignment a | - pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and - pw.getProperty().getName() = getPropertyName() and - a.getLValue() = pw and - exists(Expr val | - DataFlow::localExprFlow(val, a.getRValue()) and - val.getValue() = "true" - ) and - sink.asExpr() = pw.getQualifier() - ) - } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - node2.asExpr() = - any(PropertyRead pr | - pr.getQualifier() = node1.asExpr() and - pr.getProperty().getDeclaringType() instanceof - MicrosoftAspNetCoreCookiePolicyAppendCookieContext - ) - } -} - -private string getPropertyNameSecure() { result = "Secure" } - -/** - * Configuration module for tracking if a callback used in `OnAppendCookie` sets `Secure` to `true`. - */ -private module OnAppendCookieSecureTrackingConfig = - OnAppendCookieTrackingConfig; - -/** - * Tracks if a callback used in `OnAppendCookie` sets `Secure` to `true`. - */ -module OnAppendCookieSecureTracking = DataFlow::Global; - -private string getPropertyNameHttpOnly() { result = "HttpOnly" } - -/** - * Configuration module for tracking if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. - */ -private module OnAppendCookieHttpOnlyTrackingConfig = - OnAppendCookieTrackingConfig; - -/** - * Tracks if a callback used in `OnAppendCookie` sets `HttpOnly` to `true`. - */ -module OnAppendCookieHttpOnlyTracking = DataFlow::Global; diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected deleted file mode 100644 index cf0986a446c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:13:33:13:37 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:20:39:20:43 | false | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs deleted file mode 100644 index 4f51bdb5bc5..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/CookieBuilder/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Authentication; - -public class Startup -{ - public void ConfigureServices(IServiceCollection services) - { - services.AddAuthentication().AddCookie(o => - { - o.Cookie.HttpOnly = false; - o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; - }); - - services.AddSession(options => - { - options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; - options.Cookie.HttpOnly = false; - }); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected deleted file mode 100644 index 968e28976a8..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:25:34:25:38 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:38:88:38:92 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:61:34:61:34 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:68:88:68:88 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index 6f12958fba7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,71 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("auth", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectFalse() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = false; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieDirectFalseForgery() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = false; - Response.Cookies.Append("antiforgerytoken", "secret", cookieOptions); // GOOD: not an auth cookie - } - - void CookieDirectFalseInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = false }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.HttpOnly = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateFalse() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = false; - cookieOptions.HttpOnly = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieIntermediateFalseInitializer() - { - bool v = false; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 60f217eff20..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = false; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options deleted file mode 100644 index ce3f295ed11..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected deleted file mode 100644 index 28844595859..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:23:27:23:31 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:28:74:28:78 | false | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:48:27:48:27 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:54:74:54:74 | access to local variable v | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs deleted file mode 100644 index 6ab389f63cc..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Program.cs +++ /dev/null @@ -1,56 +0,0 @@ -class Program -{ - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieForgeryDirectFalse() - { - var cookie = new System.Web.HttpCookie("antiforgerytoken"); - cookie.HttpOnly = false; // GOOD: not an auth cookie - } - - void CookieDirectFalse() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = false; // BAD - } - - void CookieDirectFalseInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = false }; // BAD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } - - void CookieIntermediateFalse() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = false; - cookie.HttpOnly = v; // BAD - } - - void CookieIntermediateFalseInitializer() - { - bool v = false; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // BAD - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config deleted file mode 100644 index 96fd10c05b7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options deleted file mode 100644 index 9290f65d5b2..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieHttpOnlyFalseSystemWeb/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected deleted file mode 100644 index aac50988302..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:5:9:5:49 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:15:29:15:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index 945c5be55db..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,52 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // BAD: HttpOnly is set to false by default - } - - public void CookieDefaultForgery() - { - Response.Cookies.Append("antiforgerytoken", "secret"); // GOOD: not an auth cookie - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD: HttpOnly is set to false by default - } - - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("auth", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.HttpOnly = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.HttpOnly = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { HttpOnly = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs deleted file mode 100644 index 115f448a39b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyAlways/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // GOOD: HttpOnly is set in policy - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in policy - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always}); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 417b1f77277..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: HttpOnly is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected deleted file mode 100644 index adfb1ab3efa..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:8:9:8:49 | call to method Append | Cookie attribute 'HttpOnly' is not set to true. | -| Program.cs:13:29:13:73 | object creation of type CookieOptions | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs deleted file mode 100644 index 7be845aadfe..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/UseCookiePolicyNone/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // Bad: HttpOnly policy set to None - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: HttpOnly policy set to None - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() { HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None }); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options deleted file mode 100644 index ce3f295ed11..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlyAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected deleted file mode 100644 index 85b07c94e9e..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs deleted file mode 100644 index bc66b526fa5..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // BAD: httpOnlyCookies is set to false by default - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config deleted file mode 100644 index 96fd10c05b7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigEmpty/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected deleted file mode 100644 index 85b07c94e9e..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:59 | object creation of type HttpCookie | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs deleted file mode 100644 index 52ef13373f7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // BAD: httpOnlyCookies is set to false in config - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config deleted file mode 100644 index d6202a55188..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/ConfigFalse/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.expected b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref deleted file mode 100644 index 91ce226003c..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/HttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs deleted file mode 100644 index 6eeb4f6d334..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Program.cs +++ /dev/null @@ -1,36 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("sessionID"); // GOOD: httpOnlyCookies is set to true in config - } - - void CookieDefaultForgery() - { - var cookie = new System.Web.HttpCookie("anticsrftoken"); // GOOD: not an auth cookie - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - cookie.HttpOnly = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("sessionID"); - bool v = true; - cookie.HttpOnly = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("sessionID") { HttpOnly = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config deleted file mode 100644 index fc262149211..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options b/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-1004/CookieWithoutHttpOnlySystemWeb/HttpCookiesTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index 9c21416940b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("name", "value"); // BAD: requireSSL is set to false by default - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("name", "value", cookieOptions); // BAD: requireSSL is set to false by default - } - - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("name", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.Secure = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected deleted file mode 100644 index f96df31ad21..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:5:9:5:48 | call to method Append | Cookie attribute 'Secure' is not set to true. | -| Program.cs:10:29:10:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/NoPolicy/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs deleted file mode 100644 index 7c125f9265d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // GOOD: Secure is set in policy - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in policy - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() { Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always }); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyAlways/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 85bd3bedd6d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // GOOD: Secure is set in callback - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs deleted file mode 100644 index 9db1f5380d4..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - Response.Cookies.Append("auth", "secret"); // Bad: Secure policy set to None - } - - public void CookieDefault2() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Append("auth", "secret", cookieOptions); // Bad: Secure policy set to None - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(new CookiePolicyOptions() { Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.None }); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected deleted file mode 100644 index 030293f7b7e..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:8:9:8:49 | call to method Append | Cookie attribute 'Secure' is not set to true. | -| Program.cs:13:29:13:73 | object creation of type CookieOptions | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/UseCookiePolicyNone/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options deleted file mode 100644 index ce3f295ed11..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs deleted file mode 100644 index 4f51bdb5bc5..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Authentication; - -public class Startup -{ - public void ConfigureServices(IServiceCollection services) - { - services.AddAuthentication().AddCookie(o => - { - o.Cookie.HttpOnly = false; - o.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; - }); - - services.AddSession(options => - { - options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None; - options.Cookie.HttpOnly = false; - }); - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected deleted file mode 100644 index fdddb5357bd..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Program.cs:14:37:14:85 | access to constant None | Cookie attribute 'Secure' is not set to true. | -| Program.cs:19:43:19:91 | access to constant None | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/CookieBuilder/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs deleted file mode 100644 index b1ad1aede91..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDelete() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - Response.Cookies.Delete("name", cookieOptions); // GOOD: Delete call - } - - void CookieDirectTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = true; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = true }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD - } - - void CookieDirectFalse() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = false; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieDirectFalseInitializer() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = false }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieIntermediateTrue() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = true; - cookieOptions.Secure = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: should track local data flow - } - - void CookieIntermediateFalse() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - bool v = false; - cookieOptions.Secure = v; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } - - void CookieIntermediateFalseInitializer() - { - bool v = false; - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions() { Secure = v }; - Response.Cookies.Append("auth", "secret", cookieOptions); // BAD - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected deleted file mode 100644 index 7b7bc343942..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:25:32:25:36 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:31:86:31:90 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:54:32:54:32 | access to local variable v | Cookie attribute 'Secure' is not set to true. | -| Program.cs:61:86:61:86 | access to local variable v | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/NoPolicy/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs deleted file mode 100644 index 542b1a298fa..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/Program.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.AspNetCore.Http; - -public class MyController : Microsoft.AspNetCore.Mvc.Controller -{ - public void CookieDefault() - { - var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions(); - cookieOptions.Secure = false; - Response.Cookies.Append("auth", "secret", cookieOptions); // GOOD: Secure is set in callback - } -} - -public class Startup -{ - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseCookiePolicy(); - } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.OnAppendCookie = cookieContext => SetCookies(cookieContext.CookieOptions); - }); - } - - private void SetCookies(CookieOptions options) - { - options.Secure = true; - options.HttpOnly = true; - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/UseCookiePolicyCallback/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options deleted file mode 100644 index ce3f295ed11..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseAspNetCore/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs deleted file mode 100644 index 3a6d80b50c9..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Program.cs +++ /dev/null @@ -1,50 +0,0 @@ -class Program -{ - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieDirectFalse() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = false; // BAD - } - - void CookieDirectFalseInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = false }; // BAD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } - - void CookieIntermediateFalse() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = false; - cookie.Secure = v; // BAD - } - - void CookieIntermediateFalseInitializer() - { - bool v = false; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // BAD - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected deleted file mode 100644 index fb6b5e842e2..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:17:25:17:29 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:22:73:22:77 | false | Cookie attribute 'Secure' is not set to true. | -| Program.cs:42:25:42:25 | access to local variable v | Cookie attribute 'Secure' is not set to true. | -| Program.cs:48:73:48:73 | access to local variable v | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config deleted file mode 100644 index 96fd10c05b7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options deleted file mode 100644 index 9290f65d5b2..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLFalseSystemWeb/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs deleted file mode 100644 index 4011a7d1a63..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // BAD: requireSSL is set to false by default - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected deleted file mode 100644 index 6c224aab89d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config deleted file mode 100644 index 96fd10c05b7..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigEmpty/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs deleted file mode 100644 index 392366a72d2..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // BAD: requireSSL is set to false in config - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected deleted file mode 100644 index 6c224aab89d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.expected +++ /dev/null @@ -1 +0,0 @@ -| Program.cs:5:22:5:60 | object creation of type HttpCookie | Cookie attribute 'Secure' is not set to true. | diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config deleted file mode 100644 index ec7b88761ca..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/ConfigFalse/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs deleted file mode 100644 index 8f2c4cce0a4..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Program.cs +++ /dev/null @@ -1,7 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config deleted file mode 100644 index c65c506b512..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/Web.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/FormsTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs deleted file mode 100644 index be53a64ae6e..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -class Program -{ - void CookieDefault() - { - var cookie = new System.Web.HttpCookie("cookieName"); // GOOD: requireSSL is set to true in config - } - - void CookieDirectTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - cookie.Secure = true; // GOOD - } - - void CookieDirectTrueInitializer() - { - var cookie = new System.Web.HttpCookie("cookieName") { Secure = true }; // GOOD - } - - void CookieIntermediateTrue() - { - var cookie = new System.Web.HttpCookie("cookieName"); - bool v = true; - cookie.Secure = v; // GOOD: should track local data flow - } - - void CookieIntermediateTrueInitializer() - { - bool v = true; - var cookie = new System.Web.HttpCookie("cookieName") { Secure = v }; // GOOD: should track local data flow - } -} diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.expected b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.expected deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref deleted file mode 100644 index f76146a862b..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/RequireSSL.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security Features/CWE-614/CookieWithoutSecure.ql \ No newline at end of file diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config deleted file mode 100644 index 831693f0931..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/Web.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options b/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options deleted file mode 100644 index 9d05f9bf06d..00000000000 --- a/csharp/ql/test/experimental/Security Features/CWE-614/RequireSSLSystemWeb/HttpCookiesTrue/options +++ /dev/null @@ -1,3 +0,0 @@ -semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs From c734e74c762fed97a7c1af411cc3f13397490689 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 15:50:57 +0100 Subject: [PATCH 650/965] Update qhelp --- .../CWE-1004/CookieWithoutHttpOnly.qhelp | 37 ++++++++++++------- .../src/Security Features/CWE-1004/Web.config | 6 +++ .../CWE-614/CookieWithoutSecure.qhelp | 36 ++++++++++-------- 3 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 csharp/ql/src/Security Features/CWE-1004/Web.config diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp index c7c10a3af9e..06bd1e336f5 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -4,48 +4,57 @@ -

    -Cookies without HttpOnly flag are accessible to JavaScript running in the same origin. In case of -Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. -

    +

    Cookies without the HttpOnly flag set are accessible to client-side scripts such as JavaScript running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a sensitive cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

    -Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make -them not accessible to JavaScript. In ASP.NET case it is also possible to set the attribute via <httpCookies> element -of web.config with the attribute httpOnlyCookies="true". +Set the HttpOnly flag to true for authentication cookies to ensure they are not accessible to client-side scripts. +

    +

    +When using ASP.NET Core, CookiePolicyOptions can be used to set a default policy for cookies. + +When using ASP.NET Web Forms, a default may also be configured in the Web.config file, using the httpOnlyCookies attribute of the +the <httpCookies> element.

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true. +In the example below, Microsoft.AspNetCore.Http.CookieOptions.HttpOnly is set to true.

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. +In the following example, CookiePolicyOptions are set programmatically to configure defaults.

    -In the example below System.Web.HttpCookie.HttpOnly is set to true. +In the example below, System.Web.HttpCookie.HttpOnly is set to true.

    +

    +In the example below, the httpOnlyCookies attribute is set to true in the Web.config file. +

    + +
    -
  • CookieOptions.HttpOnly Property,
  • -
  • Set-Cookie Header,
  • -
  • HttpCookie.HttpOnly Property,
  • -
  • httpCookies Element,
  • +
  • ASP.Net Core docs: CookieOptions.HttpOnly Property.
  • +
  • MDN: Set-Cookie Header
  • . +
  • Web Forms docs: HttpCookie.HttpOnly Property.
  • +
  • Web Forms docs: httpCookies Element.
  • +
  • PortSwigger: Cookie without HttpOnly flag set
  • diff --git a/csharp/ql/src/Security Features/CWE-1004/Web.config b/csharp/ql/src/Security Features/CWE-1004/Web.config new file mode 100644 index 00000000000..8f4cf5ba777 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-1004/Web.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp index ddf825aed26..f122c4d881b 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.qhelp @@ -4,33 +4,32 @@ -

    -Sensitive data that is transmitted using HTTP is vulnerable to being read by a third party. By default, -cookies are sent via HTTP, not HTTPS. -

    +

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS. +This leaves them vulnerable to being read by a third party attacker. If a sensitive cookie such as a session +key is intercepted this way, it would allow the attacker to perform actions on a user's behalf.

    -In ASP.NET case when using cookies ensure that HTTPS is used by setting the property Microsoft.AspNetCore.Http.CookieOptions.Secure to true. +When using ASP.NET Core, ensure cookies have the secure flag set by setting Microsoft.AspNetCore.Http.CookieOptions.Secure to true, or +using CookiePolicyOptions to set a default security policy.

    -In ASP.NET Core case when using cookies, ensure that HTTPS is used, either via the <forms> attribute above, or -the <httpCookies> element, with the attribute requireSSL="true". It is also possible to require cookies -to use HTTPS programmatically, by setting the property System.Web.HttpCookie.Secure to true. +When using ASP.NET Web Forms, cookies can be configured as secure by default in the Web.config file, setting the requireSSL attribute to true in the forms or httpCookies element. +Cookies may also be set to be secure programmatically by setting the System.Web.HttpCookie.Secure attribute to true.

    -In the example below Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true programmatically. +In the example below, Microsoft.AspNetCore.Http.CookieOptions.Secure is set to true.

    -In the following example CookiePolicyOptions are set programmatically to configure defaults. +In the following example, CookiePolicyOptions are set programmatically to configure defaults.

    @@ -41,15 +40,22 @@ In the example below System.Web.HttpCookie.Secure is set to t +

    +In the example below, the requireSSL attribute is set to true in the forms element of the Web.config file. +

    + +
    -
  • CookieOptions.Secure Property,
  • -
  • Set-Cookie Header,
  • -
  • FormsAuthentication.RequireSSL Property,
  • -
  • forms Element for authentication,
  • -
  • httpCookies Element,
  • +
  • ASP.NET Core docs: CookieOptions.Secure Property.
  • +
  • MDN: Set-Cookie Header.
  • +
  • Web Forms docs: FormsAuthentication.RequireSSL Property.
  • +
  • Web Forms docs: forms Element for authentication.
  • +
  • Web Forms docs: httpCookies Element.
  • +
  • Detectify: Cookie lack Secure flag.
  • +
  • PortSwigger: TLS cookie without secure flag set.
  • From a6fda6ba7347eb5b85a86035b84f1c1db7a6227e Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 11:27:55 +0100 Subject: [PATCH 651/965] CI: make `build-ripunzip.yml` auto-create update PR --- .github/workflows/build-ripunzip.yml | 107 ++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 5f037d08aa3..136870d9450 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -4,20 +4,43 @@ on: workflow_dispatch: inputs: ripunzip-version: - description: "what reference to checktout from google/runzip" + description: What reference to checktout from google/runzip. Latest by default required: false openssl-version: - description: "what reference to checkout from openssl/openssl for Linux" + description: What reference to checkout from openssl/openssl for Linux. Latest by default required: false + open-pr: + description: Open a pull request updating the ripunzip versions committed to lfs + required: false + default: true # will be false on PRs pull_request: paths: - .github/workflows/build-ripunzip.yml -env: - RIPUNZIP_DEFAULT: v2.0.3 - OPENSSL_DEFAULT: openssl-3.6.0 jobs: + versions: + runs-on: ubuntu-slim + outputs: + ripunzip-version: ${{ inputs.ripunzip-version || steps.fetch-ripunzip-version.outputs.version }} + openssl-version: ${{ inputs.openssl-version || steps.fetch-openssl-version.outputs.version }} + steps: + - name: Fetch latest ripunzip version + id: fetch-ripunzip-version + if: "!inputs.ripunzip-version" + run: &fetch-version + echo "version=$(gh release view --repo $REPO --json tagName --jq .tagName)" | tee -a $GITHUB_OUTPUT + env: + REPO: "google/ripunzip" + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Fetch latest openssl version + id: fetch-openssl-version + if: "!inputs.openssl-version" + run: *fetch-version + env: + REPO: "openssl/openssl" + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} build: + needs: versions strategy: fail-fast: false matrix: @@ -27,7 +50,7 @@ jobs: - uses: actions/checkout@v5 with: repository: google/ripunzip - ref: ${{ inputs.ripunzip-version || env.RIPUNZIP_DEFAULT }} + ref: ${{ needs.versions.outputs.ripunzip-version }} # we need to avoid ripunzip dynamically linking into libssl # see https://github.com/sfackler/rust-openssl/issues/183 - if: runner.os == 'Linux' @@ -36,7 +59,7 @@ jobs: with: repository: openssl/openssl path: openssl - ref: ${{ inputs.openssl-version || env.OPENSSL_DEFAULT }} + ref: ${{ needs.versions.outputs.openssl-version }} - if: runner.os == 'Linux' name: build and install openssl with fPIC shell: bash @@ -68,11 +91,77 @@ jobs: lipo -create -output ripunzip-macos \ -arch x86_64 target/x86_64-apple-darwin/release/ripunzip \ -arch arm64 target/aarch64-apple-darwin/release/ripunzip - - uses: actions/upload-artifact@v4 + - name: Archive (POSIX) + if: runner.os != 'Windows' + shell: bash + run: | + zip -j ripunzip-${{ runner.os }}.zip ripunzip-* + - name: Archive (Windows) + if: runner.os == 'Windows' + shell: powershell + run: | + Compress-Archive -Path ripunzip-* -DestinationPath ripunzip-${{ runner.os }}.zip -Force + - name: Upload built binary + uses: actions/upload-artifact@v4 with: name: ripunzip-${{ runner.os }} - path: ripunzip-* + path: ripunzip-${{ runner.os }}.zip + retention-days: 5 + compression: 0 - name: Check built binary shell: bash run: | + rm -f ripunzip-*.zip ./ripunzip-* --version + publish: + needs: [versions, build] + if: inputs.open-pr == 'true' + runs-on: ubuntu-slim + steps: + # workaround for git-lfs not being installed yet on ubuntu-slim runners + - name: Ensure git-lfs is installed + shell: bash + run: | + if which git-lfs &>/dev/null; then + echo "git-lfs is already installed" + exit 0 + fi + cd $TMP + gh release download --repo git-lfs/git-lfs --pattern "git-lfs-linux-amd64-*.tar.gz" --clobber + tar xzf git-lfs-linux-amd64-*.tar.gz + rm git-lfs-linux-amd64-*.tar.gz + cd git-lfs-* + pwd | tee -a $GITHUB_PATH + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v5 + with: + sparse-checkout: | + .github + misc/ripunzip + lfs: true + - name: Download built binaries + uses: actions/download-artifact@v4 + with: + merge-multiple: true + path: misc/ripunzip + - name: Open PR + shell: bash + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git switch -c update-ripunzip + git add misc/ripunzip + git commit -m "Update ripunzip binaries to version $VERSION" + git push --set-upstream origin update-ripunzip --force + TITLE="Update ripunzip binaries to version $VERSION" + gh pr create \ + --draft \ + --title "$TITLE" \ + --body "Automated update of ripunzip binaries." \ + --assignee "$ACTOR" || + (gh pr edit --title "$TITLE" --add-assignee "$ACTOR" && gh pr ready --undo) + env: + ACTOR: ${{ github.actor }} + VERSION: ${{ needs.versions.outputs.ripunzip-version }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From d8eeae781be7b3949327ca75b3e3d24dadf3c6fd Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 16:00:25 +0100 Subject: [PATCH 652/965] Add additional test case for httponly cookies set to true --- .../CookieWithoutHttpOnly.expected | 0 .../{ => HttpOnlyCookiesFalse}/CookieWithoutHttpOnly.qlref | 0 .../SystemWeb/{ => HttpOnlyCookiesFalse}/Program.cs | 0 .../SystemWeb/{ => HttpOnlyCookiesFalse}/Web.config | 0 .../HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected | 0 .../HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref | 2 ++ .../SystemWeb/HttpOnlyCookiesTrue/Program.cs | 7 +++++++ .../SystemWeb/HttpOnlyCookiesTrue/Web.config | 6 ++++++ .../CWE-1004/HttpOnlyCookie/SystemWeb/options | 4 ++-- 9 files changed, 17 insertions(+), 2 deletions(-) rename csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/{ => HttpOnlyCookiesFalse}/CookieWithoutHttpOnly.expected (100%) rename csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/{ => HttpOnlyCookiesFalse}/CookieWithoutHttpOnly.qlref (100%) rename csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/{ => HttpOnlyCookiesFalse}/Program.cs (100%) rename csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/{ => HttpOnlyCookiesFalse}/Web.config (100%) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.expected similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.expected rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.expected diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.qlref similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/CookieWithoutHttpOnly.qlref rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/CookieWithoutHttpOnly.qlref diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Program.cs similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Program.cs rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Program.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Web.config similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/Web.config rename to csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesFalse/Web.config diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..9cfe2cba268 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: Security Features/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs new file mode 100644 index 00000000000..cd60e4df262 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Program.cs @@ -0,0 +1,7 @@ +class Program +{ + void CookieDefault() + { + var cookie = new System.Web.HttpCookie("auth"); // GOOD: httpOnlyCookies is set to true in config + } +} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config new file mode 100644 index 00000000000..8bb37742741 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/HttpOnlyCookiesTrue/Web.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options index 9d05f9bf06d..9414f8d8ef8 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-1004/HttpOnlyCookie/SystemWeb/options @@ -1,3 +1,3 @@ semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../../resources/stubs/System.Web.cs From d29fc9d2d056c4646af091e243b91ac7355b6a61 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 24 Oct 2025 16:06:15 +0100 Subject: [PATCH 653/965] Add changenote --- .../change-notes/2025-10-24-insecure-cookie-query-promote.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md diff --git a/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md b/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md new file mode 100644 index 00000000000..1a15c0494bd --- /dev/null +++ b/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. \ No newline at end of file From 0a085dccbeaaa1d838c6ceefe602cbe6300ef2c2 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 28 Oct 2025 10:18:17 +0000 Subject: [PATCH 654/965] Fix qhelp --- .../src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp index 06bd1e336f5..01bcc8c81da 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -51,7 +51,7 @@ In the example below, the httpOnlyCookies attribute is set to
  • ASP.Net Core docs: CookieOptions.HttpOnly Property.
  • -
  • MDN: Set-Cookie Header
  • . +
  • MDN: Set-Cookie Header.
  • Web Forms docs: HttpCookie.HttpOnly Property.
  • Web Forms docs: httpCookies Element.
  • PortSwigger: Cookie without HttpOnly flag set
  • From 544446bb819c61fff26300f1c24367df8f4b9037 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 28 Oct 2025 10:22:43 +0000 Subject: [PATCH 655/965] Minor comment update --- .../ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index 8a0f08a4675..a34191a7086 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -1,9 +1,9 @@ /** - * Definitions for detecting insecure and non-httponly cookies. + * Definitions for detecting insecure and non-HttpOnly cookies. */ import csharp -import semmle.code.csharp.frameworks.microsoft.AspNetCore +private import semmle.code.csharp.frameworks.microsoft.AspNetCore /** * Holds if the expression is a sensitive string literal or a variable with a sensitive name. From 7d5388fb6829e32c1e5429d5423f28a671e0e160 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 28 Oct 2025 10:30:26 +0000 Subject: [PATCH 656/965] Update integration tests --- .../posix/query-suite/csharp-code-scanning.qls.expected | 2 ++ .../posix/query-suite/csharp-security-and-quality.qls.expected | 2 ++ .../posix/query-suite/csharp-security-extended.qls.expected | 2 ++ .../posix/query-suite/not_included_in_qls.expected | 2 -- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected index c0ff79af1c1..4ffd875fda3 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-scanning.qls.expected @@ -16,6 +16,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql ql/csharp/ql/src/Security Features/CWE-119/LocalUnvalidatedArithmetic.ql @@ -33,6 +34,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql ql/csharp/ql/src/Security Features/CWE-730/ReDoS.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected index d4d145986c1..b520a571fc8 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-security-and-quality.qls.expected @@ -120,6 +120,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-112/MissingXMLValidation.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql @@ -140,6 +141,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-639/InsecureDirectObjectReference.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected index 48f7ad304a0..13b578d7b52 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-security-extended.qls.expected @@ -23,6 +23,7 @@ ql/csharp/ql/src/Security Features/CWE-090/LDAPInjection.ql ql/csharp/ql/src/Security Features/CWE-091/XMLInjection.ql ql/csharp/ql/src/Security Features/CWE-094/CodeInjection.ql ql/csharp/ql/src/Security Features/CWE-099/ResourceInjection.ql +ql/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/Security Features/CWE-112/MissingXMLValidation.ql ql/csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql ql/csharp/ql/src/Security Features/CWE-117/LogForging.ql @@ -43,6 +44,7 @@ ql/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.q ql/csharp/ql/src/Security Features/CWE-548/ASPNetDirectoryListing.ql ql/csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql ql/csharp/ql/src/Security Features/CWE-611/UntrustedDataInsecureXml.ql +ql/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/Security Features/CWE-614/RequireSSL.ql ql/csharp/ql/src/Security Features/CWE-639/InsecureDirectObjectReference.ql ql/csharp/ql/src/Security Features/CWE-643/XPathInjection.ql diff --git a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected index 4c8d4d42e98..4776a36a6a9 100644 --- a/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/not_included_in_qls.expected @@ -84,9 +84,7 @@ ql/csharp/ql/src/Security Features/CWE-838/InappropriateEncoding.ql ql/csharp/ql/src/definitions.ql ql/csharp/ql/src/experimental/CWE-099/TaintedWebClient.ql ql/csharp/ql/src/experimental/CWE-918/RequestForgery.ql -ql/csharp/ql/src/experimental/Security Features/CWE-1004/CookieWithoutHttpOnly.ql ql/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql -ql/csharp/ql/src/experimental/Security Features/CWE-614/CookieWithoutSecure.ql ql/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql ql/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/delegated-security-validations-always-return-true.ql ql/csharp/ql/src/experimental/Security Features/JsonWebTokenHandler/security-validation-disabled.ql From b813c13462e9279d7051c59e707ee3c54bf11e97 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 29 Oct 2025 10:53:00 +0000 Subject: [PATCH 657/965] Restrict sinks to fix performance --- .../code/csharp/security/auth/SecureCookies.qll | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index a34191a7086..56b6294949b 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -3,6 +3,7 @@ */ import csharp +private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.microsoft.AspNetCore /** @@ -32,7 +33,15 @@ private module AuthCookieNameConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - predicate isSink(DataFlow::Node sink) { exists(Call c | sink.asExpr() = c.getAnArgument()) } + predicate isSink(DataFlow::Node sink) { + exists(Call c | + sink.asExpr() = c.getAnArgument() and + ( + c.getTarget() = any(MicrosoftAspNetCoreHttpResponseCookies cls).getAppendMethod() or + c.(ObjectCreation).getType() instanceof SystemWebHttpCookie + ) + ) + } } /** From c9a559a6d8c6fe06fc67a90da6ae809355457167 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 09:57:40 +0000 Subject: [PATCH 658/965] Restrict Append calls to string arguments --- .../ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql | 3 ++- csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index 4205fb4f70c..dcc520540bb 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -82,7 +82,8 @@ predicate nonHttpOnlyCookieCall(Call c) { or // IResponseCookies.Append(String, String) was called, `HttpOnly` is set to `false` by default mc = c and - mc.getNumberOfArguments() < 3 + mc.getNumberOfArguments() < 3 and + mc.getTarget().getParameter(0).getType() instanceof StringType ) ) or diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql index c52a5cd992b..2a90698ed27 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -57,7 +57,8 @@ predicate insecureCookieAppend(Expr sink) { exists(MethodCall mc, MicrosoftAspNetCoreHttpResponseCookies iResponse | mc = sink and iResponse.getAppendMethod() = mc.getTarget() and - mc.getNumberOfArguments() < 3 + mc.getNumberOfArguments() < 3 and + mc.getTarget().getParameter(0).getType() instanceof StringType ) } From d6b7424e2c5999ef2aebc08dcb2661b79f444c68 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 15:06:28 +0100 Subject: [PATCH 659/965] C#: Add the same strategy in as in Java for XML element discarding. --- .../semmle/code/csharp/internal/Overlay.qll | 58 +++++++++++++++---- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll index 59b5359a1de..4d519bf15da 100644 --- a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll @@ -15,13 +15,28 @@ private string getLocationFilePath(@location_default loc) { exists(@file file | locations_default(loc, file, _, _, _, _) | files(file, result)) } +overlay[local] +private class DiscardableEntityBase extends @locatable { + /** Gets the path to the file in which this element occurs. */ + abstract string getFilePath(); + + /** Holds if this element exists in the base variant. */ + predicate existsInBase() { not isOverlay() } + + /** Holds if this element exists in the overlay variant. */ + predicate existsInOverlay() { isOverlay() } + + /** Gets a textual representation of this discardable element. */ + string toString() { none() } +} + /** * A class of elements that can be discarded from the base. */ overlay[local] -private class DiscardableEntity extends @locatable { +private class DiscardableEntity extends DiscardableEntityBase { /** Gets the path to the file in which this element occurs. */ - string getFilePath() { + override string getFilePath() { exists(@location_default loc | result = getLocationFilePath(loc) | expr_location(this, loc) or stmt_location(this, loc) or @@ -50,15 +65,6 @@ private class DiscardableEntity extends @locatable { extractor_messages(this, _, _, _, _, loc, _) ) } - - /** Holds if this element exists in the base variant. */ - predicate existsInBase() { not isOverlay() } - - /** Holds if this element exists in the overlay variant. */ - predicate existsInOverlay() { isOverlay() } - - /** Gets a textual representation of this discardable element. */ - string toString() { none() } } /** @@ -103,3 +109,33 @@ overlay[discard_entity] private predicate discardLocation(@location_default loc) { exists(string path | discardableLocation(loc, path) | overlayChangedFiles(path)) } + +/** + * A class of Xml locatables that can be discarded from the base. + */ +overlay[local] +private class DiscardableXmlEntity extends DiscardableEntityBase instanceof @xmllocatable { + /** Gets the path to the file in which this element occurs. */ + override string getFilePath() { + exists(@location_default loc | result = getLocationFilePath(loc) | xmllocations(this, loc)) + } +} + +overlay[local] +private predicate overlayXmlExtracted(string file) { + exists(DiscardableXmlEntity dxe | + dxe.existsInOverlay() and + file = dxe.getFilePath() and + not files(dxe, _) and + not xmlNs(dxe, _, _, _) + ) +} + +overlay[discard_entity] +private predicate discardXmlEntity(@xmllocatable xml) { + overlayChangedFiles(xml.(DiscardableXmlEntity).getFilePath()) + or + // The XML extractor is not incremental and may extract more + // XML files than those included in overlayChangedFiles. + overlayXmlExtracted(xml.(DiscardableXmlEntity).getFilePath()) +} From 3492811cda23c0063a53a56b7a7554cf8b6b02e9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 15:09:28 +0100 Subject: [PATCH 660/965] C#: Add XML overlay tests. --- .../test/library-tests/overlay/base/test.expected | 13 +++++++++++++ .../library-tests/overlay/base/web.changed.config | 12 ++++++++++++ .../library-tests/overlay/base/web.unchanged.config | 6 ++++++ .../library-tests/overlay/overlay/test.expected | 7 +++++++ .../overlay/overlay/web.changed.config | 5 +++++ .../overlay/overlay/web.unchanged.config | 6 ++++++ csharp/ql/test/library-tests/overlay/test.ql | 2 ++ 7 files changed, 51 insertions(+) create mode 100644 csharp/ql/test/library-tests/overlay/base/web.changed.config create mode 100644 csharp/ql/test/library-tests/overlay/base/web.unchanged.config create mode 100644 csharp/ql/test/library-tests/overlay/overlay/web.changed.config create mode 100644 csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config diff --git a/csharp/ql/test/library-tests/overlay/base/test.expected b/csharp/ql/test/library-tests/overlay/base/test.expected index 93c15eacc92..0c2b5750f2c 100644 --- a/csharp/ql/test/library-tests/overlay/base/test.expected +++ b/csharp/ql/test/library-tests/overlay/base/test.expected @@ -261,3 +261,16 @@ typeMentions | Program.cs:60:10:60:16 | ProgramAttribute | | Program.cs:61:16:61:19 | Void | | Program.cs:64:37:64:45 | Attribute | +xmlLocatables +| web.changed.config:2:1:12:17 | configuration | +| web.changed.config:3:3:4:16 | system.web | +| web.changed.config:5:3:11:22 | system.webServer | +| web.changed.config:6:5:10:20 | httpProtocol | +| web.changed.config:7:7:9:23 | customHeaders | +| web.changed.config:8:9:8:42 | add | +| web.changed.config:8:9:8:42 | name=MyOption | +| web.changed.config:8:9:8:42 | value=1 | +| web.unchanged.config:2:1:6:17 | configuration | +| web.unchanged.config:3:3:5:16 | system.web | +| web.unchanged.config:4:5:4:37 | httpCookies | +| web.unchanged.config:4:5:4:37 | requireSSL=true | diff --git a/csharp/ql/test/library-tests/overlay/base/web.changed.config b/csharp/ql/test/library-tests/overlay/base/web.changed.config new file mode 100644 index 00000000000..a678c32c5a0 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/web.changed.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/csharp/ql/test/library-tests/overlay/base/web.unchanged.config b/csharp/ql/test/library-tests/overlay/base/web.unchanged.config new file mode 100644 index 00000000000..e4dc561c53f --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/base/web.unchanged.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/library-tests/overlay/overlay/test.expected b/csharp/ql/test/library-tests/overlay/overlay/test.expected index f6fb9a2ce1f..d9d4d0ec6fe 100644 --- a/csharp/ql/test/library-tests/overlay/overlay/test.expected +++ b/csharp/ql/test/library-tests/overlay/overlay/test.expected @@ -265,3 +265,10 @@ typeMentions | Program.cs:60:10:60:16 | ProgramAttribute | | Program.cs:61:16:61:19 | Void | | Program.cs:64:37:64:45 | Attribute | +xmlLocatables +| web.changed.config:2:1:5:17 | configuration | +| web.changed.config:3:3:4:16 | system.web | +| web.unchanged.config:2:1:6:17 | configuration | +| web.unchanged.config:3:3:5:16 | system.web | +| web.unchanged.config:4:5:4:37 | httpCookies | +| web.unchanged.config:4:5:4:37 | requireSSL=true | diff --git a/csharp/ql/test/library-tests/overlay/overlay/web.changed.config b/csharp/ql/test/library-tests/overlay/overlay/web.changed.config new file mode 100644 index 00000000000..8f0b996a024 --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/web.changed.config @@ -0,0 +1,5 @@ + + + + + diff --git a/csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config b/csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config new file mode 100644 index 00000000000..e4dc561c53f --- /dev/null +++ b/csharp/ql/test/library-tests/overlay/overlay/web.unchanged.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/test/library-tests/overlay/test.ql b/csharp/ql/test/library-tests/overlay/test.ql index adbed2f6e3b..91f3c6a3aab 100644 --- a/csharp/ql/test/library-tests/overlay/test.ql +++ b/csharp/ql/test/library-tests/overlay/test.ql @@ -37,3 +37,5 @@ query predicate commentLines(CommentLine cl) { any() } query predicate commentBlocks(CommentBlock cb) { any() } query predicate typeMentions(TypeMention tm) { any() } + +query predicate xmlLocatables(XmlLocatable xl) { any() } From 0541dccc786e75b7490eae451966c7b79ea63ed4 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 10 Nov 2025 15:44:17 +0100 Subject: [PATCH 661/965] C#: Add discarding for ASP elements. --- .../semmle/code/csharp/internal/Overlay.qll | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll index 4d519bf15da..a44d82c92ad 100644 --- a/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll +++ b/csharp/ql/lib/semmle/code/csharp/internal/Overlay.qll @@ -139,3 +139,28 @@ private predicate discardXmlEntity(@xmllocatable xml) { // XML files than those included in overlayChangedFiles. overlayXmlExtracted(xml.(DiscardableXmlEntity).getFilePath()) } + +overlay[local] +private class DiscardableAspEntity extends DiscardableEntityBase instanceof @asp_element { + /** Gets the path to the file in which this element occurs. */ + override string getFilePath() { + exists(@location_default loc | result = getLocationFilePath(loc) | asp_elements(this, _, loc)) + } +} + +overlay[local] +private predicate overlayAspExtracted(string file) { + exists(DiscardableAspEntity dae | + dae.existsInOverlay() and + file = dae.getFilePath() + ) +} + +overlay[discard_entity] +private predicate discardAspEntity(@asp_element asp) { + overlayChangedFiles(asp.(DiscardableAspEntity).getFilePath()) + or + // The ASP extractor is not incremental and may extract more + // ASP files than those included in overlayChangedFiles. + overlayAspExtracted(asp.(DiscardableAspEntity).getFilePath()) +} From 02e696d9ccaf8b5ad31595b4469cd14ef69552fd Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 10 Nov 2025 15:58:43 +0100 Subject: [PATCH 662/965] Update .github/workflows/build-ripunzip.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 136870d9450..8ce04c47dde 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: ripunzip-version: - description: What reference to checktout from google/runzip. Latest by default + description: What reference to checkout from google/ripunzip. Latest by default required: false openssl-version: description: What reference to checkout from openssl/openssl for Linux. Latest by default From 8ba29a7821a81adb6ff077cf22bf43d05579b7dc Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Mon, 10 Nov 2025 17:13:28 +0000 Subject: [PATCH 663/965] Revert "Release preparation for version 2.23.4" --- actions/ql/lib/CHANGELOG.md | 4 --- .../ql/lib/change-notes/released/0.4.20.md | 3 -- actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 --- .../ql/src/change-notes/released/0.6.12.md | 3 -- actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 24 ++++++------- .../2025-10-16-range-analysis-performance.md | 4 +++ cpp/ql/lib/change-notes/released/6.0.1.md | 3 -- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 --- cpp/ql/src/change-notes/released/1.5.3.md | 3 -- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 --- .../lib/change-notes/released/1.7.51.md | 3 -- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 --- .../src/change-notes/released/1.7.51.md | 3 -- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 35 ++++++------------- .../5.3.0.md => 2025-10-03-nullness.md} | 16 ++------- .../2025-10-10-starid-locations.md | 4 +++ .../2025-10-21-dotnet-rc2-tracing.md | 4 +++ .../2025-10-31-deprecate-abstractvalue.md | 4 +++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 10 ++---- ...d => 2025-10-17-location-in-web-config.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/1.0.34.md | 3 -- .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 --- go/ql/lib/change-notes/released/5.0.1.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/1.4.8.md | 3 -- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 --- java/ql/lib/change-notes/released/7.7.3.md | 3 -- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 13 ------- .../change-notes/2025-06-22-query-escaping.md | 4 +++ .../2025-06-22-query-not-thread-safe.md | 4 +++ .../2025-06-22-query-safe-publication.md | 4 +++ .../2025-10-02-http-only-cookie-promote.md | 4 +++ ...10-24-request-forgery-matches-sanitizer.md | 4 +++ java/ql/src/change-notes/released/1.9.0.md | 12 ------- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 --- .../ql/lib/change-notes/released/2.6.14.md | 3 -- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 --- .../ql/src/change-notes/released/2.1.3.md | 3 -- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ---- ...hon-overlay-compilation-plus-extractor.md} | 6 ++-- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ---- ...1.6.8.md => 2025-09-19-insecure-cookie.md} | 9 +++-- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 --- ruby/ql/lib/change-notes/released/5.1.2.md | 3 -- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 --- ruby/ql/src/change-notes/released/1.4.8.md | 3 -- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 13 ------- .../2025-09-29-actix-web-model.md | 4 +++ .../2025-10-06-call-resolution.md | 4 +++ rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 +++ rust/ql/lib/change-notes/2025-10-15-models.md | 4 +++ .../2025-10-16-new-extracted-file-methods.md | 4 +++ rust/ql/lib/change-notes/released/0.1.19.md | 12 ------- rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ---- ...2025-10-21-database-quality-diagnostic.md} | 7 ++-- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 --- .../concepts/change-notes/released/0.0.8.md | 3 -- shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 --- .../change-notes/released/2.0.18.md | 3 -- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 --- .../dataflow/change-notes/released/2.0.18.md | 3 -- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 --- shared/mad/change-notes/released/1.0.34.md | 3 -- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 --- .../quantum/change-notes/released/0.0.12.md | 3 -- shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 --- shared/regex/change-notes/released/1.0.34.md | 3 -- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 --- shared/ssa/change-notes/released/2.0.10.md | 3 -- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 --- .../change-notes/released/1.0.34.md | 3 -- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 --- .../tutorial/change-notes/released/1.0.34.md | 3 -- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 --- .../typeflow/change-notes/released/1.0.34.md | 3 -- shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 --- .../change-notes/released/0.0.15.md | 3 -- shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 --- .../change-notes/released/2.0.18.md | 3 -- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 --- shared/typos/change-notes/released/1.0.34.md | 3 -- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 --- shared/util/change-notes/released/2.0.21.md | 3 -- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 --- shared/xml/change-notes/released/1.0.34.md | 3 -- shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 --- shared/yaml/change-notes/released/1.0.34.md | 3 -- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 19 ---------- .../2025-10-22-swift-6.2-class-changes.md | 6 ++++ .../lib/change-notes/2025-10-22-swift-6.2.md | 5 +++ .../change-notes/2025-10-31-swift-6.2-ast.md | 6 ++++ swift/ql/lib/change-notes/released/6.0.0.md | 18 ---------- 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/1.2.8.md | 3 -- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 181 files changed, 193 insertions(+), 490 deletions(-) delete mode 100644 actions/ql/lib/change-notes/released/0.4.20.md delete mode 100644 actions/ql/src/change-notes/released/0.6.12.md create mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md delete mode 100644 cpp/ql/lib/change-notes/released/6.0.1.md delete mode 100644 cpp/ql/src/change-notes/released/1.5.3.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md rename csharp/ql/lib/change-notes/{released/5.3.0.md => 2025-10-03-nullness.md} (55%) create mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md create mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md create mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md rename csharp/ql/src/change-notes/{released/1.4.3.md => 2025-10-17-location-in-web-config.md} (73%) delete mode 100644 go/ql/consistency-queries/change-notes/released/1.0.34.md delete mode 100644 go/ql/lib/change-notes/released/5.0.1.md delete mode 100644 go/ql/src/change-notes/released/1.4.8.md delete mode 100644 java/ql/lib/change-notes/released/7.7.3.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md create mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md create mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md create mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md delete mode 100644 java/ql/src/change-notes/released/1.9.0.md delete mode 100644 javascript/ql/lib/change-notes/released/2.6.14.md delete mode 100644 javascript/ql/src/change-notes/released/2.1.3.md delete mode 100644 misc/suite-helpers/change-notes/released/1.0.34.md rename python/ql/lib/change-notes/{released/4.1.0.md => 2025-10-02-python-overlay-compilation-plus-extractor.md} (81%) rename python/ql/src/change-notes/{released/1.6.8.md => 2025-09-19-insecure-cookie.md} (78%) delete mode 100644 ruby/ql/lib/change-notes/released/5.1.2.md delete mode 100644 ruby/ql/src/change-notes/released/1.4.8.md create mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md create mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md create mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md create mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md create mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md delete mode 100644 rust/ql/lib/change-notes/released/0.1.19.md rename rust/ql/src/change-notes/{released/0.1.19.md => 2025-10-21-database-quality-diagnostic.md} (79%) delete mode 100644 shared/concepts/change-notes/released/0.0.8.md delete mode 100644 shared/controlflow/change-notes/released/2.0.18.md delete mode 100644 shared/dataflow/change-notes/released/2.0.18.md delete mode 100644 shared/mad/change-notes/released/1.0.34.md delete mode 100644 shared/quantum/change-notes/released/0.0.12.md delete mode 100644 shared/rangeanalysis/change-notes/released/1.0.34.md delete mode 100644 shared/regex/change-notes/released/1.0.34.md delete mode 100644 shared/ssa/change-notes/released/2.0.10.md delete mode 100644 shared/threat-models/change-notes/released/1.0.34.md delete mode 100644 shared/tutorial/change-notes/released/1.0.34.md delete mode 100644 shared/typeflow/change-notes/released/1.0.34.md delete mode 100644 shared/typeinference/change-notes/released/0.0.15.md delete mode 100644 shared/typetracking/change-notes/released/2.0.18.md delete mode 100644 shared/typos/change-notes/released/1.0.34.md delete mode 100644 shared/util/change-notes/released/2.0.21.md delete mode 100644 shared/xml/change-notes/released/1.0.34.md delete mode 100644 shared/yaml/change-notes/released/1.0.34.md create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md create mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md delete mode 100644 swift/ql/lib/change-notes/released/6.0.0.md delete mode 100644 swift/ql/src/change-notes/released/1.2.8.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index ffe1cba8281..3de5d186721 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.4.20 - -No user-facing changes. - ## 0.4.19 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.20.md b/actions/ql/lib/change-notes/released/0.4.20.md deleted file mode 100644 index 874725a8c2d..00000000000 --- a/actions/ql/lib/change-notes/released/0.4.20.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.4.20 - -No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index 380b2d09423..abf63707906 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.20 +lastReleaseVersion: 0.4.19 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182b..6423894239d 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.20-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index c7253227b7c..4592fbb66da 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.6.12 - -No user-facing changes. - ## 0.6.11 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.12.md b/actions/ql/src/change-notes/released/0.6.12.md deleted file mode 100644 index da7e7709ef7..00000000000 --- a/actions/ql/src/change-notes/released/0.6.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.6.12 - -No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 28c22ccab7c..b73e74898d0 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.12 +lastReleaseVersion: 0.6.11 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a9172..553e579ceac 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.12-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 0f158cd3fb5..093b31078e0 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 6.0.1 - -No user-facing changes. - ## 6.0.0 ### Breaking Changes @@ -259,8 +255,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. * Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. * Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. @@ -294,7 +290,7 @@ No user-facing changes. * A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide. * An `isExplicit` predicate was added to the `Function` class that determines whether the function was declared as explicit. * A `getExplicitExpr` predicate was added to the `Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. -* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. +* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. ### Minor Analysis Improvements @@ -372,9 +368,9 @@ No user-facing changes. ### New Features * Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. * Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. @@ -490,7 +486,7 @@ No user-facing changes. * Functions that do not return due to calling functions that don't return (e.g. `exit`) are now detected as non-returning in the IR and dataflow. * Treat functions that reach the end of the function as returning in the IR. - They used to be treated as unreachable but it is allowed in C. + They used to be treated as unreachable but it is allowed in C. * The `DataFlow::asDefiningArgument` predicate now takes its argument from the range starting at `1` instead of `2`. Queries that depend on the single-parameter version of `DataFlow::asDefiningArgument` should have their arguments updated accordingly. ## 0.9.3 @@ -539,7 +535,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -733,7 +729,7 @@ No user-facing changes. ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -750,7 +746,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -849,7 +845,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md new file mode 100644 index 00000000000..f24ab4b87fe --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md deleted file mode 100644 index 35b17912c81..00000000000 --- a/cpp/ql/lib/change-notes/released/6.0.1.md +++ /dev/null @@ -1,3 +0,0 @@ -## 6.0.1 - -No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index d1f3c68c812..f8c4fa43ccb 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.1 +lastReleaseVersion: 6.0.0 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da..8712e400897 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 880cab8a58d..4b876310708 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.5.3 - -No user-facing changes. - ## 1.5.2 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.3.md b/cpp/ql/src/change-notes/released/1.5.3.md deleted file mode 100644 index 2e9bcb5e663..00000000000 --- a/cpp/ql/src/change-notes/released/1.5.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.5.3 - -No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 232224b0e26..7eb901bae56 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.3 +lastReleaseVersion: 1.5.2 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549..71aa95bed9e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.3-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index a25c349e35e..7b4887608d9 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.51 - -No user-facing changes. - ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md deleted file mode 100644 index ec2d4e2bdcc..00000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.51 - -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 26376c0cebb..dab079d6644 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.51 +lastReleaseVersion: 1.7.50 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7..a569cf6a5c4 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.51 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index a25c349e35e..7b4887608d9 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.51 - -No user-facing changes. - ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md deleted file mode 100644 index ec2d4e2bdcc..00000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.51 - -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 26376c0cebb..dab079d6644 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.51 +lastReleaseVersion: 1.7.50 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72..d91f21b0e90 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.51 +version: 1.7.51-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 20b1c03d722..a722d924f3b 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,18 +1,3 @@ -## 5.3.0 - -### Deprecated APIs - -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. - -### Major Analysis Improvements - -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. - -### Minor Analysis Improvements - -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. - ## 5.2.6 ### Minor Analysis Improvements @@ -143,7 +128,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +148,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +186,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +436,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +571,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +611,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +630,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +677,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/lib/change-notes/released/5.3.0.md b/csharp/ql/lib/change-notes/2025-10-03-nullness.md similarity index 55% rename from csharp/ql/lib/change-notes/released/5.3.0.md rename to csharp/ql/lib/change-notes/2025-10-03-nullness.md index 144f8bf2633..0d44c1e98c1 100644 --- a/csharp/ql/lib/change-notes/released/5.3.0.md +++ b/csharp/ql/lib/change-notes/2025-10-03-nullness.md @@ -1,14 +1,4 @@ -## 5.3.0 - -### Deprecated APIs - -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. - -### Major Analysis Improvements - +--- +category: majorAnalysis +--- * The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. - -### Minor Analysis Improvements - -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md new file mode 100644 index 00000000000..a258abcf3ab --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md new file mode 100644 index 00000000000..b54f1e7d1b5 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md new file mode 100644 index 00000000000..65bb9032b12 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index b0a1c83e5bc..1ac2b5309f2 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.3.0 +lastReleaseVersion: 5.2.6 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4e..92a08088be7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.2.7-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 8993b453543..40ea9e3693a 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 1.4.3 - -### Minor Analysis Improvements - -* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. - ## 1.4.2 No user-facing changes. @@ -170,7 +164,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +278,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 diff --git a/csharp/ql/src/change-notes/released/1.4.3.md b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md similarity index 73% rename from csharp/ql/src/change-notes/released/1.4.3.md rename to csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md index 1a022f2462d..5df97b9d28a 100644 --- a/csharp/ql/src/change-notes/released/1.4.3.md +++ b/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md @@ -1,5 +1,4 @@ -## 1.4.3 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 08f88b689fb..a76cacdf799 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.3 +lastReleaseVersion: 1.4.2 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899e..a9776d058b9 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.3-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 870695d684c..102463df544 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.34.md b/go/ql/consistency-queries/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/go/ql/consistency-queries/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -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 b736654032c..914c722b5d9 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc..e44457e4570 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: 1.0.34 +version: 1.0.34-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e2d2a71f6bd..71d6bfdc60f 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 5.0.1 - -No user-facing changes. - ## 5.0.0 ### Breaking Changes diff --git a/go/ql/lib/change-notes/released/5.0.1.md b/go/ql/lib/change-notes/released/5.0.1.md deleted file mode 100644 index b99e1ae0268..00000000000 --- a/go/ql/lib/change-notes/released/5.0.1.md +++ /dev/null @@ -1,3 +0,0 @@ -## 5.0.1 - -No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index ae7df5e18b7..c9e54136ca5 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.1 +lastReleaseVersion: 5.0.0 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e..bf2586d9089 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.1-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 786164b5fe4..eb370a8cddd 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.4.8 - -No user-facing changes. - ## 1.4.7 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.8.md b/go/ql/src/change-notes/released/1.4.8.md deleted file mode 100644 index 06976d05e75..00000000000 --- a/go/ql/src/change-notes/released/1.4.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.4.8 - -No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 16e6425ae7e..163362bd632 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.4.7 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e375703..3133d392d89 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.8-dev groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index e261dbee59e..5d6fcbde336 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 7.7.3 - -No user-facing changes. - ## 7.7.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/7.7.3.md b/java/ql/lib/change-notes/released/7.7.3.md deleted file mode 100644 index d03e3181a52..00000000000 --- a/java/ql/lib/change-notes/released/7.7.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 7.7.3 - -No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 6856106e771..25c09b25d21 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.3 +lastReleaseVersion: 7.7.2 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed..7f8860bc632 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.3-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ed02fdc5bb2..06133dffeba 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,16 +1,3 @@ -## 1.9.0 - -### New Queries - -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. - -### Minor Analysis Improvements - -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. - ## 1.8.2 No user-facing changes. diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md new file mode 100644 index 00000000000..f33de2e8556 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-escaping.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md new file mode 100644 index 00000000000..d5dd0744609 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md new file mode 100644 index 00000000000..23b64c970b3 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md new file mode 100644 index 00000000000..ee9fe7527bd --- /dev/null +++ b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md new file mode 100644 index 00000000000..a38c43dd730 --- /dev/null +++ b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.9.0.md b/java/ql/src/change-notes/released/1.9.0.md deleted file mode 100644 index 82977276fe2..00000000000 --- a/java/ql/src/change-notes/released/1.9.0.md +++ /dev/null @@ -1,12 +0,0 @@ -## 1.9.0 - -### New Queries - -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. - -### Minor Analysis Improvements - -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index df17dc3a366..559af8348bb 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.9.0 +lastReleaseVersion: 1.8.2 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67d..faf088b7a4a 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.8.3-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 9f27fdae99c..1e874227c37 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.6.14 - -No user-facing changes. - ## 2.6.13 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.14.md b/javascript/ql/lib/change-notes/released/2.6.14.md deleted file mode 100644 index 49a00b95efc..00000000000 --- a/javascript/ql/lib/change-notes/released/2.6.14.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.6.14 - -No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 022aeff4e02..9240f755da8 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.14 +lastReleaseVersion: 2.6.13 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216..d8d53ef1c7e 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.14-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 4a453506818..f03b3a66e4d 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.1.3 - -No user-facing changes. - ## 2.1.2 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.1.3.md b/javascript/ql/src/change-notes/released/2.1.3.md deleted file mode 100644 index a1338012fcd..00000000000 --- a/javascript/ql/src/change-notes/released/2.1.3.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.1.3 - -No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 345fb0c73a4..1a4e53e8772 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.3 +lastReleaseVersion: 2.1.2 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71..df854af7e2b 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.3-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 203d289a673..a6f9fcd2377 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.34.md b/misc/suite-helpers/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/misc/suite-helpers/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d..daf9a60662d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.34-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index df8a66ca0e6..cb18c48a051 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 4.1.0 - -### New Features - -* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. - ## 4.0.17 ### Bug Fixes diff --git a/python/ql/lib/change-notes/released/4.1.0.md b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md similarity index 81% rename from python/ql/lib/change-notes/released/4.1.0.md rename to python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md index 51c7ea24f1b..5eb698354c1 100644 --- a/python/ql/lib/change-notes/released/4.1.0.md +++ b/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md @@ -1,5 +1,5 @@ -## 4.1.0 - -### New Features +--- +category: feature +--- * Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d5b1bf88d10..d1339a1f762 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.0 +lastReleaseVersion: 4.0.17 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fba..34d03dc0fad 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.0.18-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 65fd05e047b..aef1a87136d 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 1.6.8 - -### Minor Analysis Improvements - -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. - ## 1.6.7 No user-facing changes. diff --git a/python/ql/src/change-notes/released/1.6.8.md b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md similarity index 78% rename from python/ql/src/change-notes/released/1.6.8.md rename to python/ql/src/change-notes/2025-09-19-insecure-cookie.md index d1b510e542a..51c6dc6ce30 100644 --- a/python/ql/src/change-notes/released/1.6.8.md +++ b/python/ql/src/change-notes/2025-09-19-insecure-cookie.md @@ -1,5 +1,4 @@ -## 1.6.8 - -### Minor Analysis Improvements - -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. +--- +category: minorAnalysis +--- +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index fbc11aa62b7..0b49adeac7d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.8 +lastReleaseVersion: 1.6.7 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2..d01829a9de2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.8-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a99e4017789..32e1dd3538b 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 5.1.2 - -No user-facing changes. - ## 5.1.1 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.2.md b/ruby/ql/lib/change-notes/released/5.1.2.md deleted file mode 100644 index 86e21502e26..00000000000 --- a/ruby/ql/lib/change-notes/released/5.1.2.md +++ /dev/null @@ -1,3 +0,0 @@ -## 5.1.2 - -No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index d21c12fbe7f..dcb83eca6a3 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.2 +lastReleaseVersion: 5.1.1 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f0..77d07910f48 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.2-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 282fd284635..29a0f89236d 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.4.8 - -No user-facing changes. - ## 1.4.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.8.md b/ruby/ql/src/change-notes/released/1.4.8.md deleted file mode 100644 index 06976d05e75..00000000000 --- a/ruby/ql/src/change-notes/released/1.4.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.4.8 - -No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 16e6425ae7e..163362bd632 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.4.7 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522..b35ffb5c411 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.8-dev groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 7e8575b03be..228d9c21637 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,16 +1,3 @@ -## 0.1.19 - -### Major Analysis Improvements - -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. -* Added basic models for the `actix-web` web framework. - -### Minor Analysis Improvements - -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. -* Generalized some existing models to improve data flow. -* Added models for the `mysql` and `mysql_async` libraries. - ## 0.1.18 ### New Features diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md new file mode 100644 index 00000000000..7bf9ce8a7d5 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added basic models for the `actix-web` web framework. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md new file mode 100644 index 00000000000..ffaf449bb8a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md new file mode 100644 index 00000000000..037f813a856 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-10-mysql.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md new file mode 100644 index 00000000000..fab2cab639a --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-15-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Generalized some existing models to improve data flow. diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md new file mode 100644 index 00000000000..63fbbe38899 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/change-notes/released/0.1.19.md b/rust/ql/lib/change-notes/released/0.1.19.md deleted file mode 100644 index b75ad4257c5..00000000000 --- a/rust/ql/lib/change-notes/released/0.1.19.md +++ /dev/null @@ -1,12 +0,0 @@ -## 0.1.19 - -### Major Analysis Improvements - -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. -* Added basic models for the `actix-web` web framework. - -### Minor Analysis Improvements - -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. -* Generalized some existing models to improve data flow. -* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index de6e4c49068..a9893ce82c4 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.18 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c421..b5dea62349a 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.19-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 2b0c54fc057..df1c4e49856 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.1.19 - -### Minor Analysis Improvements - -* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. - ## 0.1.18 ### New Queries diff --git a/rust/ql/src/change-notes/released/0.1.19.md b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md similarity index 79% rename from rust/ql/src/change-notes/released/0.1.19.md rename to rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md index 67ccce578c8..322bdb7c5ab 100644 --- a/rust/ql/src/change-notes/released/0.1.19.md +++ b/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md @@ -1,5 +1,4 @@ -## 0.1.19 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index de6e4c49068..a9893ce82c4 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.18 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a02..e72c44676d5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.19-dev groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index 4d0898b90e4..f7d8dfad907 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.8 - -No user-facing changes. - ## 0.0.7 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.8.md b/shared/concepts/change-notes/released/0.0.8.md deleted file mode 100644 index 6af2d954c09..00000000000 --- a/shared/concepts/change-notes/released/0.0.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.8 - -No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index 58fdc6b45de..a2a5484910b 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.7 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e7..c765cb33734 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index c5b9b9d696a..cb14761bb38 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.18.md b/shared/controlflow/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/controlflow/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42b..c4f39f17484 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index f963117ea88..99ee484c731 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.18.md b/shared/dataflow/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/dataflow/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0..afe273133cb 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index b0b444f8c41..eda9cf4ddb2 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.34.md b/shared/mad/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/mad/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c..a132a76336b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 83a42fb0551..d9dd6b6f2e2 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.12 - -No user-facing changes. - ## 0.0.11 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.12.md b/shared/quantum/change-notes/released/0.0.12.md deleted file mode 100644 index 0e206033bc4..00000000000 --- a/shared/quantum/change-notes/released/0.0.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.12 - -No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 997fb8da83c..e679dc42092 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.11 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a8630..201689efa51 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.12-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 640d26270e1..7a0776cf53c 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.34.md b/shared/rangeanalysis/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/rangeanalysis/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e3..90efb8ebbf3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 1e3fb3c306c..2507f237ec0 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.34.md b/shared/regex/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/regex/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d3..2019d2dcb2e 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 2d8087cd96c..cb33a2dd613 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.10 - -No user-facing changes. - ## 2.0.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.10.md b/shared/ssa/change-notes/released/2.0.10.md deleted file mode 100644 index 37310f107aa..00000000000 --- a/shared/ssa/change-notes/released/2.0.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.10 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 96ea0220a69..ce305265e33 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.10 +lastReleaseVersion: 2.0.9 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a1..f1aa89319bd 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 870695d684c..102463df544 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.34.md b/shared/threat-models/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/threat-models/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a..69963387a05 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.34-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 23fd78f42e5..e982f144f9c 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.34.md b/shared/tutorial/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/tutorial/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a5984..efe3820754f 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: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index d95faf69864..32d26faa9f4 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.34.md b/shared/typeflow/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/typeflow/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff6..70066fa9bd8 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 4f4b3189bb4..ad4781e2cbd 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.15 - -No user-facing changes. - ## 0.0.14 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.15.md b/shared/typeinference/change-notes/released/0.0.15.md deleted file mode 100644 index 7af9c05f23f..00000000000 --- a/shared/typeinference/change-notes/released/0.0.15.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.15 - -No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index dff35216fc6..ca29e45d0a6 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.15 +lastReleaseVersion: 0.0.14 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9..ae0880ec7ea 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.15-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 4edafe87290..a536c707303 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.18 - -No user-facing changes. - ## 2.0.17 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.18.md b/shared/typetracking/change-notes/released/2.0.18.md deleted file mode 100644 index 11e398dac31..00000000000 --- a/shared/typetracking/change-notes/released/2.0.18.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.18 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 16342205c73..a5f7c15c020 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.17 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8..9a68b0ae750 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.18-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 9fbdb39d493..979e0c24d1e 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.34.md b/shared/typos/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/typos/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19..71a4826016e 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 88679dd6846..0f0cdcc36ca 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 2.0.21 - -No user-facing changes. - ## 2.0.20 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.21.md b/shared/util/change-notes/released/2.0.21.md deleted file mode 100644 index bdc5029b70b..00000000000 --- a/shared/util/change-notes/released/2.0.21.md +++ /dev/null @@ -1,3 +0,0 @@ -## 2.0.21 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a572e88bffd..cde101f3516 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.21 +lastReleaseVersion: 2.0.20 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b78..69e188136fa 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.21-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index ff67592d22b..f0d7c829bfb 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.34.md b/shared/xml/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/xml/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa76..25135f830c6 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index fb623a1f26c..2ca0a52f636 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.0.34 - -No user-facing changes. - ## 1.0.33 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.34.md b/shared/yaml/change-notes/released/1.0.34.md deleted file mode 100644 index 7e097cfe937..00000000000 --- a/shared/yaml/change-notes/released/1.0.34.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.34 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index b736654032c..914c722b5d9 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.33 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b8269..4ba9cb06c57 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.34-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b1b958708e0..4b8852b6711 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,22 +1,3 @@ -## 6.0.0 - -### Breaking Changes - -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. - -### New Features - -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. - -### Major Analysis Improvements - -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. - ## 5.0.9 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md new file mode 100644 index 00000000000..114f91eed8c --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md @@ -0,0 +1,6 @@ +--- +category: breaking +--- +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md new file mode 100644 index 00000000000..97f3e45d6f8 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md new file mode 100644 index 00000000000..f227bc71c65 --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md @@ -0,0 +1,6 @@ +--- +category: feature +--- +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/swift/ql/lib/change-notes/released/6.0.0.md b/swift/ql/lib/change-notes/released/6.0.0.md deleted file mode 100644 index 8fe348b6db5..00000000000 --- a/swift/ql/lib/change-notes/released/6.0.0.md +++ /dev/null @@ -1,18 +0,0 @@ -## 6.0.0 - -### Breaking Changes - -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. - -### New Features - -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. - -### Major Analysis Improvements - -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..2b650f0b340 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 5.0.9 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198..18bddfe30bb 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 5.0.10-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 99b5491b9db..f3fe65f7bd8 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.2.8 - -No user-facing changes. - ## 1.2.7 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.8.md b/swift/ql/src/change-notes/released/1.2.8.md deleted file mode 100644 index 533ed7761e4..00000000000 --- a/swift/ql/src/change-notes/released/1.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.2.8 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index a49a92ee5ab..950e0645d4a 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.8 +lastReleaseVersion: 1.2.7 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec49400609..9e050de61b9 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.8-dev groups: - swift - queries From 109abddc36d4ef6c12a049427d7bfced6a3b7be0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:32:14 +0000 Subject: [PATCH 664/965] Apply suggestions from code review Co-authored-by: Simon Friis Vindum --- rust/ql/examples/snippets/empty_if.ql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/examples/snippets/empty_if.ql b/rust/ql/examples/snippets/empty_if.ql index 90df6b95b22..f2183945979 100644 --- a/rust/ql/examples/snippets/empty_if.ql +++ b/rust/ql/examples/snippets/empty_if.ql @@ -1,6 +1,6 @@ /** - * @name Empty 'if' statement - * @description Finds 'if' statements where the "then" branch is empty and no + * @name Empty 'if' expression + * @description Finds 'if' expressions where the "then" branch is empty and no * "else" branch exists. * @id rust/examples/empty-if * @tags example @@ -8,11 +8,11 @@ import rust -// find 'if' statements... +// find 'if' expressions... from IfExpr ifExpr where // where the 'then' branch is empty ifExpr.getThen().getStmtList().getNumberOfStmtOrExpr() = 0 and // and no 'else' branch exists - not exists(ifExpr.getElse()) + not ifExpr.hasElse() select ifExpr, "This 'if' expression is redundant." From 6ef314ed03dce071eea0f3cf8272059ef020e4ea Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 11:52:36 +0100 Subject: [PATCH 665/965] Javascript: fix errors from upcoming `rules_java` update --- javascript/extractor/src/com/semmle/jcorn/Parser.java | 3 ++- .../extractor/src/com/semmle/jcorn/flow/FlowParser.java | 1 + .../src/com/semmle/js/ast/AFunctionExpression.java | 4 ++-- .../extractor/src/com/semmle/js/ast/ComprehensionBlock.java | 2 +- .../src/com/semmle/js/ast/ComprehensionExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/ForInStatement.java | 2 +- .../extractor/src/com/semmle/js/ast/InvokeExpression.java | 4 ++-- javascript/extractor/src/com/semmle/js/ast/Literal.java | 2 +- .../extractor/src/com/semmle/js/ast/MemberExpression.java | 6 +++--- javascript/extractor/src/com/semmle/js/ast/Property.java | 4 ++-- .../extractor/src/com/semmle/js/ast/TemplateElement.java | 2 +- .../extractor/src/com/semmle/js/ast/UnaryExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/UpdateExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/YieldExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java | 2 +- .../src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java | 2 +- .../src/com/semmle/js/ast/regexp/CharacterClass.java | 2 +- .../extractor/src/com/semmle/js/ast/regexp/Quantifier.java | 2 +- 18 files changed, 24 insertions(+), 22 deletions(-) diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index 63f49e14891..0fb07bb5433 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -286,6 +286,7 @@ public class Parser { raise(pos, msg, false); } + @SuppressWarnings("ReturnValueIgnored") protected void raise(Position loc, String msg, boolean recoverable) { msg += " (" + loc.getLine() + ":" + loc.getColumn() + ")"; SyntaxError err = new SyntaxError(msg, loc, this.pos); @@ -3114,7 +3115,7 @@ public class Parser { } first = false; } - if (oldStrict == Boolean.FALSE) this.setStrict(false); + if (oldStrict.equals(Boolean.FALSE)) this.setStrict(false); return this.finishNode(new BlockStatement(new SourceLocation(startLoc), body)); } diff --git a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java index cb2dad0f978..7475994c27e 100644 --- a/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java +++ b/javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java @@ -141,6 +141,7 @@ public class FlowParser extends ESNextParser { options.onRecoverableError(this.onRecoverableError); } + @SuppressWarnings("ReturnValueIgnored") private void commit() { // commit buffered tokens options.onToken(this.onToken); diff --git a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java index e097be125cf..5efe85d4bc5 100644 --- a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java @@ -35,8 +35,8 @@ public abstract class AFunctionExpression extends Expression implements IFunctio id, params, body, - generator == Boolean.TRUE, - async == Boolean.TRUE, + generator.equals(Boolean.TRUE), + async.equals(Boolean.TRUE), typeParameters, parameterTypes, parameterDecorators, diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java index 4c767c5fbed..9b635098f8d 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java @@ -10,7 +10,7 @@ public class ComprehensionBlock extends Expression { super("ComprehensionBlock", loc); this.left = left; this.right = right; - this.of = of != Boolean.FALSE; + this.of = !of.equals(Boolean.FALSE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java index b95d9ead5ff..d604d0f7454 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java @@ -19,7 +19,7 @@ public class ComprehensionExpression extends Expression { this.body = body; this.blocks = blocks; this.filter = filter; - this.generator = generator == Boolean.TRUE; + this.generator = generator.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java index 579a6198fe1..30b99f53e0e 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java +++ b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java @@ -16,7 +16,7 @@ public class ForInStatement extends EnhancedForStatement { public ForInStatement( SourceLocation loc, Node left, Expression right, Statement body, Boolean each) { super("ForInStatement", loc, left, right, body); - this.each = each == Boolean.TRUE; + this.each = each.equals(Boolean.TRUE); } public boolean isEach() { diff --git a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java index 534f9ffb212..02de600cbdc 100644 --- a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java @@ -27,8 +27,8 @@ public abstract class InvokeExpression extends Expression implements INodeWithSy this.callee = callee; this.typeArguments = typeArguments; this.arguments = arguments; - this.optional = optional == Boolean.TRUE; - this.onOptionalChain = onOptionalChain == Boolean.TRUE; + this.optional = optional.equals(Boolean.TRUE); + this.onOptionalChain = onOptionalChain.equals(Boolean.TRUE); } /** The callee expression of this invocation. */ diff --git a/javascript/extractor/src/com/semmle/js/ast/Literal.java b/javascript/extractor/src/com/semmle/js/ast/Literal.java index 3c53798b851..c3feb64ccfd 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Literal.java +++ b/javascript/extractor/src/com/semmle/js/ast/Literal.java @@ -76,7 +76,7 @@ public class Literal extends Expression implements ITypeExpression { if (isRegExp()) return false; return value == null || value instanceof Number && ((Number) value).intValue() == 0 - || value == Boolean.FALSE + || value.equals(Boolean.FALSE) || value instanceof String && ((String) value).isEmpty(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java index b540decd48e..14453dabf3d 100644 --- a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java @@ -22,9 +22,9 @@ public class MemberExpression extends Expression super("MemberExpression", loc); this.object = object; this.property = property; - this.computed = computed == Boolean.TRUE; - this.optional = optional == Boolean.TRUE; - this.onOptionalChain = onOptionalChain == Boolean.TRUE; + this.computed = computed.equals(Boolean.TRUE); + this.optional = optional.equals(Boolean.TRUE); + this.onOptionalChain = onOptionalChain.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/Property.java b/javascript/extractor/src/com/semmle/js/ast/Property.java index b4da797e76d..4e2b118aedf 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Property.java +++ b/javascript/extractor/src/com/semmle/js/ast/Property.java @@ -59,8 +59,8 @@ public class Property extends Node { } this.rawValue = rawValue; this.kind = Kind.valueOf(StringUtil.uc(kind)); - this.computed = computed == Boolean.TRUE; - this.method = method == Boolean.TRUE; + this.computed = computed.equals(Boolean.TRUE); + this.method = method.equals(Boolean.TRUE); this.decorators = new ArrayList(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java index afebf51e7ee..343596cb808 100644 --- a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java +++ b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java @@ -10,7 +10,7 @@ public class TemplateElement extends Expression { super("TemplateElement", loc); this.cooked = cooked; this.raw = raw; - this.tail = tail == Boolean.TRUE; + this.tail = tail.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java index c0a77e3bc77..7dc0789a520 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java @@ -14,7 +14,7 @@ public class UnaryExpression extends Expression { super("UnaryExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix == Boolean.TRUE; + this.prefix = prefix.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java index 59a3880a3ee..2178151a12f 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java @@ -11,7 +11,7 @@ public class UpdateExpression extends Expression { super("UpdateExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix == Boolean.TRUE; + this.prefix = prefix.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java index c8c681d2493..d9f83cbc4da 100644 --- a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java @@ -8,7 +8,7 @@ public class YieldExpression extends Expression { public YieldExpression(SourceLocation loc, Expression argument, Boolean delegating) { super("YieldExpression", loc); this.argument = argument; - this.delegating = delegating == Boolean.TRUE; + this.delegating = delegating.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java index d9298243be0..5b577713956 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java @@ -18,7 +18,7 @@ public class FunctionType extends JSDocTypeExpression { JSDocTypeExpression result) { super(loc, "FunctionType"); this._this = _this; - this._new = _new == Boolean.TRUE; + this._new = _new.equals(Boolean.TRUE); this.params = params; this.result = result; } diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java index dcded09e66d..79b4d144603 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java @@ -19,7 +19,7 @@ public abstract class UnaryTypeConstructor extends JSDocTypeExpression { String operator) { super(loc, type); this.expression = expression; - this.prefix = prefix == Boolean.TRUE; + this.prefix = prefix.equals(Boolean.TRUE); this.operator = operator; } diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java index 6a46830d851..6abf2dce9e0 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java @@ -11,7 +11,7 @@ public class CharacterClass extends RegExpTerm { public CharacterClass(SourceLocation loc, List elements, Boolean inverted) { super(loc, "CharacterClass"); this.elements = elements; - this.inverted = inverted == Boolean.TRUE; + this.inverted = inverted.equals(Boolean.TRUE); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java index 54fd40168d2..49cf765a37c 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java @@ -10,7 +10,7 @@ public abstract class Quantifier extends RegExpTerm { public Quantifier(SourceLocation loc, String type, RegExpTerm operand, Boolean greedy) { super(loc, type); this.operand = operand; - this.greedy = greedy == Boolean.TRUE; + this.greedy = greedy.equals(Boolean.TRUE); } /** The quantified term. */ From 295744eb36631870fca79093530fd14449e37141 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:00:30 +0100 Subject: [PATCH 666/965] Set permissions --- .github/workflows/build-ripunzip.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 8ce04c47dde..07e00bff811 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -17,6 +17,8 @@ on: paths: - .github/workflows/build-ripunzip.yml +permissions: {} + jobs: versions: runs-on: ubuntu-slim @@ -116,6 +118,9 @@ jobs: publish: needs: [versions, build] if: inputs.open-pr == 'true' + permissions: + contents: write + pull-requests: write runs-on: ubuntu-slim steps: # workaround for git-lfs not being installed yet on ubuntu-slim runners From 47f2617b4db35516bacfd67434034e496b012d12 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:07:19 +0100 Subject: [PATCH 667/965] Use other compression method for ripunzip --- .github/workflows/build-ripunzip.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 07e00bff811..a8868adad98 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -93,21 +93,14 @@ jobs: lipo -create -output ripunzip-macos \ -arch x86_64 target/x86_64-apple-darwin/release/ripunzip \ -arch arm64 target/aarch64-apple-darwin/release/ripunzip - - name: Archive (POSIX) - if: runner.os != 'Windows' - shell: bash + - name: Archive run: | - zip -j ripunzip-${{ runner.os }}.zip ripunzip-* - - name: Archive (Windows) - if: runner.os == 'Windows' - shell: powershell - run: | - Compress-Archive -Path ripunzip-* -DestinationPath ripunzip-${{ runner.os }}.zip -Force + tar acf ripunzip-${{ runner.os }}.tar.zst ripunzip-* - name: Upload built binary uses: actions/upload-artifact@v4 with: name: ripunzip-${{ runner.os }} - path: ripunzip-${{ runner.os }}.zip + path: ripunzip-${{ runner.os }}.tar.zst retention-days: 5 compression: 0 - name: Check built binary From ff62c65cdf95657f5c9eef161444d1dcd59047ca Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:11:49 +0100 Subject: [PATCH 668/965] Javascript: avoid null pointer exception on boolean values --- javascript/extractor/src/com/semmle/jcorn/Parser.java | 2 +- .../src/com/semmle/js/ast/AFunctionExpression.java | 4 ++-- .../extractor/src/com/semmle/js/ast/ComprehensionBlock.java | 2 +- .../src/com/semmle/js/ast/ComprehensionExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/ForInStatement.java | 2 +- .../extractor/src/com/semmle/js/ast/InvokeExpression.java | 4 ++-- javascript/extractor/src/com/semmle/js/ast/Literal.java | 2 +- .../extractor/src/com/semmle/js/ast/MemberExpression.java | 6 +++--- javascript/extractor/src/com/semmle/js/ast/Property.java | 4 ++-- .../extractor/src/com/semmle/js/ast/TemplateElement.java | 2 +- .../extractor/src/com/semmle/js/ast/UnaryExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/UpdateExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/YieldExpression.java | 2 +- .../extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java | 2 +- .../src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java | 2 +- .../src/com/semmle/js/ast/regexp/CharacterClass.java | 2 +- .../extractor/src/com/semmle/js/ast/regexp/Quantifier.java | 2 +- 17 files changed, 22 insertions(+), 22 deletions(-) diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index 0fb07bb5433..b0bc8964559 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -3115,7 +3115,7 @@ public class Parser { } first = false; } - if (oldStrict.equals(Boolean.FALSE)) this.setStrict(false); + if (Boolean.FALSE.equals(oldStrict)) this.setStrict(false); return this.finishNode(new BlockStatement(new SourceLocation(startLoc), body)); } diff --git a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java index 5efe85d4bc5..1546d6f3b1f 100644 --- a/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java @@ -35,8 +35,8 @@ public abstract class AFunctionExpression extends Expression implements IFunctio id, params, body, - generator.equals(Boolean.TRUE), - async.equals(Boolean.TRUE), + Boolean.TRUE.equals(generator), + Boolean.TRUE.equals(async), typeParameters, parameterTypes, parameterDecorators, diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java index 9b635098f8d..4fcf9421a74 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java @@ -10,7 +10,7 @@ public class ComprehensionBlock extends Expression { super("ComprehensionBlock", loc); this.left = left; this.right = right; - this.of = !of.equals(Boolean.FALSE); + this.of = !Boolean.FALSE.equals(of); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java index d604d0f7454..3aa9feb1b31 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java @@ -19,7 +19,7 @@ public class ComprehensionExpression extends Expression { this.body = body; this.blocks = blocks; this.filter = filter; - this.generator = generator.equals(Boolean.TRUE); + this.generator = Boolean.TRUE.equals(generator); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java index 30b99f53e0e..cffba4781a9 100644 --- a/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java +++ b/javascript/extractor/src/com/semmle/js/ast/ForInStatement.java @@ -16,7 +16,7 @@ public class ForInStatement extends EnhancedForStatement { public ForInStatement( SourceLocation loc, Node left, Expression right, Statement body, Boolean each) { super("ForInStatement", loc, left, right, body); - this.each = each.equals(Boolean.TRUE); + this.each = Boolean.TRUE.equals(each); } public boolean isEach() { diff --git a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java index 02de600cbdc..5d59be92f1b 100644 --- a/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java @@ -27,8 +27,8 @@ public abstract class InvokeExpression extends Expression implements INodeWithSy this.callee = callee; this.typeArguments = typeArguments; this.arguments = arguments; - this.optional = optional.equals(Boolean.TRUE); - this.onOptionalChain = onOptionalChain.equals(Boolean.TRUE); + this.optional = Boolean.TRUE.equals(optional); + this.onOptionalChain = Boolean.TRUE.equals(onOptionalChain); } /** The callee expression of this invocation. */ diff --git a/javascript/extractor/src/com/semmle/js/ast/Literal.java b/javascript/extractor/src/com/semmle/js/ast/Literal.java index c3feb64ccfd..f513adc14b5 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Literal.java +++ b/javascript/extractor/src/com/semmle/js/ast/Literal.java @@ -76,7 +76,7 @@ public class Literal extends Expression implements ITypeExpression { if (isRegExp()) return false; return value == null || value instanceof Number && ((Number) value).intValue() == 0 - || value.equals(Boolean.FALSE) + || Boolean.FALSE.equals(value) || value instanceof String && ((String) value).isEmpty(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java index 14453dabf3d..342fe4c1fd2 100644 --- a/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/MemberExpression.java @@ -22,9 +22,9 @@ public class MemberExpression extends Expression super("MemberExpression", loc); this.object = object; this.property = property; - this.computed = computed.equals(Boolean.TRUE); - this.optional = optional.equals(Boolean.TRUE); - this.onOptionalChain = onOptionalChain.equals(Boolean.TRUE); + this.computed = Boolean.TRUE.equals(computed); + this.optional = Boolean.TRUE.equals(optional); + this.onOptionalChain = Boolean.TRUE.equals(onOptionalChain); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/Property.java b/javascript/extractor/src/com/semmle/js/ast/Property.java index 4e2b118aedf..7f986161fde 100644 --- a/javascript/extractor/src/com/semmle/js/ast/Property.java +++ b/javascript/extractor/src/com/semmle/js/ast/Property.java @@ -59,8 +59,8 @@ public class Property extends Node { } this.rawValue = rawValue; this.kind = Kind.valueOf(StringUtil.uc(kind)); - this.computed = computed.equals(Boolean.TRUE); - this.method = method.equals(Boolean.TRUE); + this.computed = Boolean.TRUE.equals(computed); + this.method = Boolean.TRUE.equals(method); this.decorators = new ArrayList(); } diff --git a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java index 343596cb808..3fb8556e273 100644 --- a/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java +++ b/javascript/extractor/src/com/semmle/js/ast/TemplateElement.java @@ -10,7 +10,7 @@ public class TemplateElement extends Expression { super("TemplateElement", loc); this.cooked = cooked; this.raw = raw; - this.tail = tail.equals(Boolean.TRUE); + this.tail = Boolean.TRUE.equals(tail); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java index 7dc0789a520..32f43bad123 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java @@ -14,7 +14,7 @@ public class UnaryExpression extends Expression { super("UnaryExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix.equals(Boolean.TRUE); + this.prefix = Boolean.TRUE.equals(prefix); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java index 2178151a12f..1c69a1dd150 100644 --- a/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java @@ -11,7 +11,7 @@ public class UpdateExpression extends Expression { super("UpdateExpression", loc); this.operator = operator; this.argument = argument; - this.prefix = prefix.equals(Boolean.TRUE); + this.prefix = Boolean.TRUE.equals(prefix); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java index d9f83cbc4da..abd5fd13d11 100644 --- a/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java +++ b/javascript/extractor/src/com/semmle/js/ast/YieldExpression.java @@ -8,7 +8,7 @@ public class YieldExpression extends Expression { public YieldExpression(SourceLocation loc, Expression argument, Boolean delegating) { super("YieldExpression", loc); this.argument = argument; - this.delegating = delegating.equals(Boolean.TRUE); + this.delegating = Boolean.TRUE.equals(delegating); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java index 5b577713956..b6dc97cb96b 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java @@ -18,7 +18,7 @@ public class FunctionType extends JSDocTypeExpression { JSDocTypeExpression result) { super(loc, "FunctionType"); this._this = _this; - this._new = _new.equals(Boolean.TRUE); + this._new = _Boolean.TRUE.equals(new); this.params = params; this.result = result; } diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java index 79b4d144603..1489f924251 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java @@ -19,7 +19,7 @@ public abstract class UnaryTypeConstructor extends JSDocTypeExpression { String operator) { super(loc, type); this.expression = expression; - this.prefix = prefix.equals(Boolean.TRUE); + this.prefix = Boolean.TRUE.equals(prefix); this.operator = operator; } diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java index 6abf2dce9e0..a0d5812efe6 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java @@ -11,7 +11,7 @@ public class CharacterClass extends RegExpTerm { public CharacterClass(SourceLocation loc, List elements, Boolean inverted) { super(loc, "CharacterClass"); this.elements = elements; - this.inverted = inverted.equals(Boolean.TRUE); + this.inverted = Boolean.TRUE.equals(inverted); } @Override diff --git a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java index 49cf765a37c..18058c73fb1 100644 --- a/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java +++ b/javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java @@ -10,7 +10,7 @@ public abstract class Quantifier extends RegExpTerm { public Quantifier(SourceLocation loc, String type, RegExpTerm operand, Boolean greedy) { super(loc, type); this.operand = operand; - this.greedy = greedy.equals(Boolean.TRUE); + this.greedy = Boolean.TRUE.equals(greedy); } /** The quantified term. */ From e4f25c9a133f95bb7a10ff4d04a2af7bbff076cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Nov 2025 11:33:33 +0000 Subject: [PATCH 669/965] Release preparation for version 2.23.5 --- actions/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/0.4.20.md | 3 +++ actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/0.6.12.md | 3 +++ actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../2025-10-16-range-analysis-performance.md | 4 ---- cpp/ql/lib/change-notes/released/6.0.1.md | 5 +++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 ++++ cpp/ql/src/change-notes/released/1.5.3.md | 3 +++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../lib/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/1.7.51.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 15 +++++++++++++++ .../2025-10-10-starid-locations.md | 4 ---- .../2025-10-21-dotnet-rc2-tracing.md | 4 ---- .../2025-10-31-deprecate-abstractvalue.md | 4 ---- .../5.3.0.md} | 16 +++++++++++++--- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../1.4.3.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/1.0.34.md | 3 +++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/5.0.1.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/1.4.8.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 ++++ java/ql/lib/change-notes/released/7.7.3.md | 3 +++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 13 +++++++++++++ .../change-notes/2025-06-22-query-escaping.md | 4 ---- .../2025-06-22-query-not-thread-safe.md | 4 ---- .../2025-06-22-query-safe-publication.md | 4 ---- .../2025-10-02-http-only-cookie-promote.md | 4 ---- ...10-24-request-forgery-matches-sanitizer.md | 4 ---- java/ql/src/change-notes/released/1.9.0.md | 12 ++++++++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ .../ql/lib/change-notes/released/2.6.14.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ .../ql/src/change-notes/released/2.1.3.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ++++++ .../4.1.0.md} | 6 +++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../1.6.8.md} | 9 +++++---- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 ++++ ruby/ql/lib/change-notes/released/5.1.2.md | 3 +++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/1.4.8.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 13 +++++++++++++ .../2025-09-29-actix-web-model.md | 4 ---- .../2025-10-06-call-resolution.md | 4 ---- rust/ql/lib/change-notes/2025-10-10-mysql.md | 4 ---- rust/ql/lib/change-notes/2025-10-15-models.md | 4 ---- .../2025-10-16-new-extracted-file-methods.md | 4 ---- rust/ql/lib/change-notes/released/0.1.19.md | 12 ++++++++++++ rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ++++++ .../0.1.19.md} | 7 ++++--- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 ++++ .../concepts/change-notes/released/0.0.8.md | 3 +++ shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ .../dataflow/change-notes/released/2.0.18.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/1.0.34.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 ++++ .../quantum/change-notes/released/0.0.12.md | 3 +++ shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/1.0.34.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/2.0.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../change-notes/released/1.0.34.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ .../tutorial/change-notes/released/1.0.34.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 ++++ .../typeflow/change-notes/released/1.0.34.md | 3 +++ shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.15.md | 3 +++ shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../change-notes/released/2.0.18.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/1.0.34.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/2.0.21.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 ++++ shared/xml/change-notes/released/1.0.34.md | 3 +++ shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/1.0.34.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 19 +++++++++++++++++++ .../2025-10-22-swift-6.2-class-changes.md | 6 ------ .../lib/change-notes/2025-10-22-swift-6.2.md | 5 ----- .../change-notes/2025-10-31-swift-6.2-ast.md | 6 ------ swift/ql/lib/change-notes/released/6.0.0.md | 18 ++++++++++++++++++ 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/1.2.8.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 181 files changed, 472 insertions(+), 171 deletions(-) create mode 100644 actions/ql/lib/change-notes/released/0.4.20.md create mode 100644 actions/ql/src/change-notes/released/0.6.12.md delete mode 100644 cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md create mode 100644 cpp/ql/lib/change-notes/released/6.0.1.md create mode 100644 cpp/ql/src/change-notes/released/1.5.3.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-10-starid-locations.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md rename csharp/ql/lib/change-notes/{2025-10-03-nullness.md => released/5.3.0.md} (55%) rename csharp/ql/src/change-notes/{2025-10-17-location-in-web-config.md => released/1.4.3.md} (73%) create mode 100644 go/ql/consistency-queries/change-notes/released/1.0.34.md create mode 100644 go/ql/lib/change-notes/released/5.0.1.md create mode 100644 go/ql/src/change-notes/released/1.4.8.md create mode 100644 java/ql/lib/change-notes/released/7.7.3.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-escaping.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md delete mode 100644 java/ql/src/change-notes/2025-06-22-query-safe-publication.md delete mode 100644 java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md delete mode 100644 java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md create mode 100644 java/ql/src/change-notes/released/1.9.0.md create mode 100644 javascript/ql/lib/change-notes/released/2.6.14.md create mode 100644 javascript/ql/src/change-notes/released/2.1.3.md create mode 100644 misc/suite-helpers/change-notes/released/1.0.34.md rename python/ql/lib/change-notes/{2025-10-02-python-overlay-compilation-plus-extractor.md => released/4.1.0.md} (81%) rename python/ql/src/change-notes/{2025-09-19-insecure-cookie.md => released/1.6.8.md} (78%) create mode 100644 ruby/ql/lib/change-notes/released/5.1.2.md create mode 100644 ruby/ql/src/change-notes/released/1.4.8.md delete mode 100644 rust/ql/lib/change-notes/2025-09-29-actix-web-model.md delete mode 100644 rust/ql/lib/change-notes/2025-10-06-call-resolution.md delete mode 100644 rust/ql/lib/change-notes/2025-10-10-mysql.md delete mode 100644 rust/ql/lib/change-notes/2025-10-15-models.md delete mode 100644 rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md create mode 100644 rust/ql/lib/change-notes/released/0.1.19.md rename rust/ql/src/change-notes/{2025-10-21-database-quality-diagnostic.md => released/0.1.19.md} (79%) create mode 100644 shared/concepts/change-notes/released/0.0.8.md create mode 100644 shared/controlflow/change-notes/released/2.0.18.md create mode 100644 shared/dataflow/change-notes/released/2.0.18.md create mode 100644 shared/mad/change-notes/released/1.0.34.md create mode 100644 shared/quantum/change-notes/released/0.0.12.md create mode 100644 shared/rangeanalysis/change-notes/released/1.0.34.md create mode 100644 shared/regex/change-notes/released/1.0.34.md create mode 100644 shared/ssa/change-notes/released/2.0.10.md create mode 100644 shared/threat-models/change-notes/released/1.0.34.md create mode 100644 shared/tutorial/change-notes/released/1.0.34.md create mode 100644 shared/typeflow/change-notes/released/1.0.34.md create mode 100644 shared/typeinference/change-notes/released/0.0.15.md create mode 100644 shared/typetracking/change-notes/released/2.0.18.md create mode 100644 shared/typos/change-notes/released/1.0.34.md create mode 100644 shared/util/change-notes/released/2.0.21.md create mode 100644 shared/xml/change-notes/released/1.0.34.md create mode 100644 shared/yaml/change-notes/released/1.0.34.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md delete mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.md delete mode 100644 swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md create mode 100644 swift/ql/lib/change-notes/released/6.0.0.md create mode 100644 swift/ql/src/change-notes/released/1.2.8.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index 3de5d186721..ffe1cba8281 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.20 + +No user-facing changes. + ## 0.4.19 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.20.md b/actions/ql/lib/change-notes/released/0.4.20.md new file mode 100644 index 00000000000..874725a8c2d --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.20.md @@ -0,0 +1,3 @@ +## 0.4.20 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index abf63707906..380b2d09423 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.19 +lastReleaseVersion: 0.4.20 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 6423894239d..3217afc182b 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20-dev +version: 0.4.20 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 4592fbb66da..c7253227b7c 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.12 + +No user-facing changes. + ## 0.6.11 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.12.md b/actions/ql/src/change-notes/released/0.6.12.md new file mode 100644 index 00000000000..da7e7709ef7 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.12.md @@ -0,0 +1,3 @@ +## 0.6.12 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index b73e74898d0..28c22ccab7c 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.11 +lastReleaseVersion: 0.6.12 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 553e579ceac..7c14b3a9172 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12-dev +version: 0.6.12 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 093b31078e0..390e3d4653b 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + ## 6.0.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md deleted file mode 100644 index f24ab4b87fe..00000000000 --- a/cpp/ql/lib/change-notes/2025-10-16-range-analysis-performance.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md new file mode 100644 index 00000000000..7e8cfdb2562 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/6.0.1.md @@ -0,0 +1,5 @@ +## 6.0.1 + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..d1f3c68c812 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 6.0.1 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8712e400897..9ce21e2a8da 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1-dev +version: 6.0.1 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 4b876310708..880cab8a58d 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.3 + +No user-facing changes. + ## 1.5.2 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.3.md b/cpp/ql/src/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 7eb901bae56..232224b0e26 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.2 +lastReleaseVersion: 1.5.3 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 71aa95bed9e..178947f2549 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3-dev +version: 1.5.3 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index a569cf6a5c4..649b7e60de7 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 7b4887608d9..a25c349e35e 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.51 + +No user-facing changes. + ## 1.7.50 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md new file mode 100644 index 00000000000..ec2d4e2bdcc --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.51.md @@ -0,0 +1,3 @@ +## 1.7.51 + +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 dab079d6644..26376c0cebb 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.50 +lastReleaseVersion: 1.7.51 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index d91f21b0e90..b3977a0ef72 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.51-dev +version: 1.7.51 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index a722d924f3b..e7c0ac3cc88 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,18 @@ +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + ## 5.2.6 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md b/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md deleted file mode 100644 index a258abcf3ab..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-10-starid-locations.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md b/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md deleted file mode 100644 index b54f1e7d1b5..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-21-dotnet-rc2-tracing.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. diff --git a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md b/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md deleted file mode 100644 index 65bb9032b12..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-31-deprecate-abstractvalue.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: deprecated ---- -* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. diff --git a/csharp/ql/lib/change-notes/2025-10-03-nullness.md b/csharp/ql/lib/change-notes/released/5.3.0.md similarity index 55% rename from csharp/ql/lib/change-notes/2025-10-03-nullness.md rename to csharp/ql/lib/change-notes/released/5.3.0.md index 0d44c1e98c1..144f8bf2633 100644 --- a/csharp/ql/lib/change-notes/2025-10-03-nullness.md +++ b/csharp/ql/lib/change-notes/released/5.3.0.md @@ -1,4 +1,14 @@ ---- -category: majorAnalysis ---- +## 5.3.0 + +### Deprecated APIs + +* The class `AbstractValue` in the `Guards` library has been deprecated and replaced with the class `GuardValue`. + +### Major Analysis Improvements + * The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. + +### Minor Analysis Improvements + +* Added tracer support for macOS and Linux when the .NET CLI (`dotnet`) directly invokes the C# compiler (`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 1ac2b5309f2..b0a1c83e5bc 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.2.6 +lastReleaseVersion: 5.3.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 92a08088be7..7d6d2e1ed4e 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.2.7-dev +version: 5.3.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 40ea9e3693a..edbfcdc3969 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.4.3 + +### Minor Analysis Improvements + +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. + ## 1.4.2 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md b/csharp/ql/src/change-notes/released/1.4.3.md similarity index 73% rename from csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md rename to csharp/ql/src/change-notes/released/1.4.3.md index 5df97b9d28a..1a022f2462d 100644 --- a/csharp/ql/src/change-notes/2025-10-17-location-in-web-config.md +++ b/csharp/ql/src/change-notes/released/1.4.3.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.4.3 + +### Minor Analysis Improvements + * the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index a76cacdf799..08f88b689fb 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.2 +lastReleaseVersion: 1.4.3 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a9776d058b9..4305c1d899e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3-dev +version: 1.4.3 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.34.md b/go/ql/consistency-queries/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +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 914c722b5d9..b736654032c 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index e44457e4570..f8a661692dc 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: 1.0.34-dev +version: 1.0.34 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 71d6bfdc60f..e2d2a71f6bd 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.1 + +No user-facing changes. + ## 5.0.0 ### Breaking Changes diff --git a/go/ql/lib/change-notes/released/5.0.1.md b/go/ql/lib/change-notes/released/5.0.1.md new file mode 100644 index 00000000000..b99e1ae0268 --- /dev/null +++ b/go/ql/lib/change-notes/released/5.0.1.md @@ -0,0 +1,3 @@ +## 5.0.1 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index c9e54136ca5..ae7df5e18b7 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.0 +lastReleaseVersion: 5.0.1 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index bf2586d9089..fba4fc5f83e 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1-dev +version: 5.0.1 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index eb370a8cddd..786164b5fe4 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.8.md b/go/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 3133d392d89..4a68e375703 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8-dev +version: 1.4.8 groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 5d6fcbde336..e261dbee59e 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.7.3 + +No user-facing changes. + ## 7.7.2 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/7.7.3.md b/java/ql/lib/change-notes/released/7.7.3.md new file mode 100644 index 00000000000..d03e3181a52 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.3.md @@ -0,0 +1,3 @@ +## 7.7.3 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 25c09b25d21..6856106e771 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.2 +lastReleaseVersion: 7.7.3 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 7f8860bc632..b1c5cbb54ed 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3-dev +version: 7.7.3 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 06133dffeba..ed02fdc5bb2 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,16 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. + ## 1.8.2 No user-facing changes. diff --git a/java/ql/src/change-notes/2025-06-22-query-escaping.md b/java/ql/src/change-notes/2025-06-22-query-escaping.md deleted file mode 100644 index f33de2e8556..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-escaping.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md b/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md deleted file mode 100644 index d5dd0744609..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-not-thread-safe.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md b/java/ql/src/change-notes/2025-06-22-query-safe-publication.md deleted file mode 100644 index 23b64c970b3..00000000000 --- a/java/ql/src/change-notes/2025-06-22-query-safe-publication.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md b/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md deleted file mode 100644 index ee9fe7527bd..00000000000 --- a/java/ql/src/change-notes/2025-10-02-http-only-cookie-promote.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. \ No newline at end of file diff --git a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md b/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md deleted file mode 100644 index a38c43dd730..00000000000 --- a/java/ql/src/change-notes/2025-10-24-request-forgery-matches-sanitizer.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/1.9.0.md b/java/ql/src/change-notes/released/1.9.0.md new file mode 100644 index 00000000000..82977276fe2 --- /dev/null +++ b/java/ql/src/change-notes/released/1.9.0.md @@ -0,0 +1,12 @@ +## 1.9.0 + +### New Queries + +* The `java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, `java/escaping`, to detect values escaping from classes marked as `@ThreadSafe`. +* Added a new query, `java/not-threadsafe`, to detect data races in classes marked as `@ThreadSafe`. +* Added a new query, `java/safe-publication`, to detect unsafe publication in classes marked as `@ThreadSafe`. + +### Minor Analysis Improvements + +* Calls to `String.matches` are now treated as sanitizers for the `java/ssrf` query. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 559af8348bb..df17dc3a366 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.8.2 +lastReleaseVersion: 1.9.0 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index faf088b7a4a..198798cf67d 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.8.3-dev +version: 1.9.0 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 1e874227c37..9f27fdae99c 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.6.14 + +No user-facing changes. + ## 2.6.13 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.14.md b/javascript/ql/lib/change-notes/released/2.6.14.md new file mode 100644 index 00000000000..49a00b95efc --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.14.md @@ -0,0 +1,3 @@ +## 2.6.14 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 9240f755da8..022aeff4e02 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.13 +lastReleaseVersion: 2.6.14 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index d8d53ef1c7e..46e5661f216 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14-dev +version: 2.6.14 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index f03b3a66e4d..4a453506818 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.3 + +No user-facing changes. + ## 2.1.2 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/2.1.3.md b/javascript/ql/src/change-notes/released/2.1.3.md new file mode 100644 index 00000000000..a1338012fcd --- /dev/null +++ b/javascript/ql/src/change-notes/released/2.1.3.md @@ -0,0 +1,3 @@ +## 2.1.3 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1a4e53e8772..345fb0c73a4 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.2 +lastReleaseVersion: 2.1.3 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index df854af7e2b..8a50977ba71 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3-dev +version: 2.1.3 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index a6f9fcd2377..203d289a673 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.34.md b/misc/suite-helpers/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index daf9a60662d..5aad5f4b49d 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34-dev +version: 1.0.34 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index cb18c48a051..df8a66ca0e6 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.1.0 + +### New Features + +* Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. + ## 4.0.17 ### Bug Fixes diff --git a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md b/python/ql/lib/change-notes/released/4.1.0.md similarity index 81% rename from python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md rename to python/ql/lib/change-notes/released/4.1.0.md index 5eb698354c1..51c7ea24f1b 100644 --- a/python/ql/lib/change-notes/2025-10-02-python-overlay-compilation-plus-extractor.md +++ b/python/ql/lib/change-notes/released/4.1.0.md @@ -1,5 +1,5 @@ ---- -category: feature ---- +## 4.1.0 + +### New Features * Initial support for incremental Python databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d1339a1f762..d5b1bf88d10 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.17 +lastReleaseVersion: 4.1.0 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 34d03dc0fad..88b85332fba 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.18-dev +version: 4.1.0 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index aef1a87136d..65fd05e047b 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + ## 1.6.7 No user-facing changes. diff --git a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md b/python/ql/src/change-notes/released/1.6.8.md similarity index 78% rename from python/ql/src/change-notes/2025-09-19-insecure-cookie.md rename to python/ql/src/change-notes/released/1.6.8.md index 51c6dc6ce30..d1b510e542a 100644 --- a/python/ql/src/change-notes/2025-09-19-insecure-cookie.md +++ b/python/ql/src/change-notes/released/1.6.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. \ No newline at end of file +## 1.6.8 + +### Minor Analysis Improvements + +* The `py/insecure-cookie` query has been split into multiple queries; with `py/insecure-cookie` checking for cases in which `Secure` flag is not set, `py/client-exposed-cookie` checking for cases in which the `HttpOnly` flag is not set, and the `py/samesite-none` query checking for cases in which the `SameSite` attribute is set to `None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 0b49adeac7d..fbc11aa62b7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.7 +lastReleaseVersion: 1.6.8 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d01829a9de2..dd29d5c31a2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8-dev +version: 1.6.8 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 32e1dd3538b..a99e4017789 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.2 + +No user-facing changes. + ## 5.1.1 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.2.md b/ruby/ql/lib/change-notes/released/5.1.2.md new file mode 100644 index 00000000000..86e21502e26 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.2.md @@ -0,0 +1,3 @@ +## 5.1.2 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index dcb83eca6a3..d21c12fbe7f 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.1 +lastReleaseVersion: 5.1.2 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 77d07910f48..eec414da0f0 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2-dev +version: 5.1.2 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 29a0f89236d..282fd284635 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.8 + +No user-facing changes. + ## 1.4.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/1.4.8.md b/ruby/ql/src/change-notes/released/1.4.8.md new file mode 100644 index 00000000000..06976d05e75 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.4.8.md @@ -0,0 +1,3 @@ +## 1.4.8 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 163362bd632..16e6425ae7e 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.7 +lastReleaseVersion: 1.4.8 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index b35ffb5c411..aaac6c00522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8-dev +version: 1.4.8 groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 228d9c21637..7e8575b03be 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,16 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. + ## 0.1.18 ### New Features diff --git a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md b/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md deleted file mode 100644 index 7bf9ce8a7d5..00000000000 --- a/rust/ql/lib/change-notes/2025-09-29-actix-web-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added basic models for the `actix-web` web framework. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md b/rust/ql/lib/change-notes/2025-10-06-call-resolution.md deleted file mode 100644 index ffaf449bb8a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-06-call-resolution.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. \ No newline at end of file diff --git a/rust/ql/lib/change-notes/2025-10-10-mysql.md b/rust/ql/lib/change-notes/2025-10-10-mysql.md deleted file mode 100644 index 037f813a856..00000000000 --- a/rust/ql/lib/change-notes/2025-10-10-mysql.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/change-notes/2025-10-15-models.md b/rust/ql/lib/change-notes/2025-10-15-models.md deleted file mode 100644 index fab2cab639a..00000000000 --- a/rust/ql/lib/change-notes/2025-10-15-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Generalized some existing models to improve data flow. diff --git a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md b/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md deleted file mode 100644 index 63fbbe38899..00000000000 --- a/rust/ql/lib/change-notes/2025-10-16-new-extracted-file-methods.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. diff --git a/rust/ql/lib/change-notes/released/0.1.19.md b/rust/ql/lib/change-notes/released/0.1.19.md new file mode 100644 index 00000000000..b75ad4257c5 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.19.md @@ -0,0 +1,12 @@ +## 0.1.19 + +### Major Analysis Improvements + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the `actix-web` web framework. + +### Minor Analysis Improvements + +* Added `ExtractedFile::hasSemantics` and `ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the `mysql` and `mysql_async` libraries. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b5dea62349a..b46b494c421 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19-dev +version: 0.1.19 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index df1c4e49856..2b0c54fc057 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.19 + +### Minor Analysis Improvements + +* The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + ## 0.1.18 ### New Queries diff --git a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md b/rust/ql/src/change-notes/released/0.1.19.md similarity index 79% rename from rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md rename to rust/ql/src/change-notes/released/0.1.19.md index 322bdb7c5ab..67ccce578c8 100644 --- a/rust/ql/src/change-notes/2025-10-21-database-quality-diagnostic.md +++ b/rust/ql/src/change-notes/released/0.1.19.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.19 + +### Minor Analysis Improvements + * The "Low Rust analysis quality" query (`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index a9893ce82c4..de6e4c49068 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.18 +lastReleaseVersion: 0.1.19 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index e72c44676d5..da14aa08a02 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19-dev +version: 0.1.19 groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index f7d8dfad907..4d0898b90e4 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.8 + +No user-facing changes. + ## 0.0.7 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.8.md b/shared/concepts/change-notes/released/0.0.8.md new file mode 100644 index 00000000000..6af2d954c09 --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.8.md @@ -0,0 +1,3 @@ +## 0.0.8 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index a2a5484910b..58fdc6b45de 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.8 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index c765cb33734..a9fd8ce78e7 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8-dev +version: 0.0.8 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index cb14761bb38..c5b9b9d696a 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.18.md b/shared/controlflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index c4f39f17484..565ff51c42b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 99ee484c731..f963117ea88 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.18.md b/shared/dataflow/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index afe273133cb..75920f8f5a0 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index eda9cf4ddb2..b0b444f8c41 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.34.md b/shared/mad/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index a132a76336b..290eedf639c 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index d9dd6b6f2e2..83a42fb0551 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.12.md b/shared/quantum/change-notes/released/0.0.12.md new file mode 100644 index 00000000000..0e206033bc4 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index e679dc42092..997fb8da83c 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 201689efa51..8aaa96a8630 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12-dev +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7a0776cf53c..640d26270e1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.34.md b/shared/rangeanalysis/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 90efb8ebbf3..2769814d3e3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 2507f237ec0..1e3fb3c306c 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.34.md b/shared/regex/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 2019d2dcb2e..f06235bc4d3 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index cb33a2dd613..2d8087cd96c 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.10 + +No user-facing changes. + ## 2.0.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.10.md b/shared/ssa/change-notes/released/2.0.10.md new file mode 100644 index 00000000000..37310f107aa --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.10.md @@ -0,0 +1,3 @@ +## 2.0.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index ce305265e33..96ea0220a69 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.9 +lastReleaseVersion: 2.0.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f1aa89319bd..dcf19c605a1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10-dev +version: 2.0.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 102463df544..870695d684c 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.34.md b/shared/threat-models/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 69963387a05..48d215a1d9a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34-dev +version: 1.0.34 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index e982f144f9c..23fd78f42e5 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.34.md b/shared/tutorial/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index efe3820754f..51e6e2a5984 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: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index 32d26faa9f4..d95faf69864 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.34.md b/shared/typeflow/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 70066fa9bd8..6c01f40eff6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index ad4781e2cbd..4f4b3189bb4 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.15 + +No user-facing changes. + ## 0.0.14 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.15.md b/shared/typeinference/change-notes/released/0.0.15.md new file mode 100644 index 00000000000..7af9c05f23f --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.15.md @@ -0,0 +1,3 @@ +## 0.0.15 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index ca29e45d0a6..dff35216fc6 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.14 +lastReleaseVersion: 0.0.15 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index ae0880ec7ea..b09de2187e9 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15-dev +version: 0.0.15 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index a536c707303..4edafe87290 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.18 + +No user-facing changes. + ## 2.0.17 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.18.md b/shared/typetracking/change-notes/released/2.0.18.md new file mode 100644 index 00000000000..11e398dac31 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.18.md @@ -0,0 +1,3 @@ +## 2.0.18 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a5f7c15c020..16342205c73 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.17 +lastReleaseVersion: 2.0.18 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 9a68b0ae750..14ca67d8ba8 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18-dev +version: 2.0.18 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 979e0c24d1e..9fbdb39d493 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.34.md b/shared/typos/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 71a4826016e..5675b883f19 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 0f0cdcc36ca..88679dd6846 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.21 + +No user-facing changes. + ## 2.0.20 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.21.md b/shared/util/change-notes/released/2.0.21.md new file mode 100644 index 00000000000..bdc5029b70b --- /dev/null +++ b/shared/util/change-notes/released/2.0.21.md @@ -0,0 +1,3 @@ +## 2.0.21 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index cde101f3516..a572e88bffd 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.20 +lastReleaseVersion: 2.0.21 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 69e188136fa..155a5b33b78 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21-dev +version: 2.0.21 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index f0d7c829bfb..ff67592d22b 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.34.md b/shared/xml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 25135f830c6..2bdbef9aa76 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 2ca0a52f636..fb623a1f26c 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.34 + +No user-facing changes. + ## 1.0.33 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.34.md b/shared/yaml/change-notes/released/1.0.34.md new file mode 100644 index 00000000000..7e097cfe937 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.34.md @@ -0,0 +1,3 @@ +## 1.0.34 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 914c722b5d9..b736654032c 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.33 +lastReleaseVersion: 1.0.34 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4ba9cb06c57..7dcc28b8269 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34-dev +version: 1.0.34 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 4b8852b6711..b1b958708e0 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,22 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + ## 5.0.9 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md deleted file mode 100644 index 114f91eed8c..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2-class-changes.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: breaking ---- -* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. -* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. -* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md deleted file mode 100644 index 97f3e45d6f8..00000000000 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: majorAnalysis ---- -* Upgraded to allow analysis of Swift 6.2. -* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md b/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md deleted file mode 100644 index f227bc71c65..00000000000 --- a/swift/ql/lib/change-notes/2025-10-31-swift-6.2-ast.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: feature ---- -* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. -* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. -* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/swift/ql/lib/change-notes/released/6.0.0.md b/swift/ql/lib/change-notes/released/6.0.0.md new file mode 100644 index 00000000000..8fe348b6db5 --- /dev/null +++ b/swift/ql/lib/change-notes/released/6.0.0.md @@ -0,0 +1,18 @@ +## 6.0.0 + +### Breaking Changes + +* The `OpenedArchetypeType` class has been renamed as `ExistentialArchetypeType`. +* The `OtherAvailabilitySpec` class has been removed. Use `AvailabilitySpec::isWildcard` instead. +* The `PlatformVersionAvailabilitySpec` has been removed. Use `AvailabilitySpec::getPlatform` and `AvailabilitySpec::getVersion` instead. + +### New Features + +* Added AST nodes `UsingDecl`, `UnsafeExpr`, and `InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates `isDistributedGet`, `isRead2`, `isModify2`, and `isInit` to the `Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate `isApply` to the `KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 2b650f0b340..f8c4fa43ccb 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.9 +lastReleaseVersion: 6.0.0 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 18bddfe30bb..2f395ceb198 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 5.0.10-dev +version: 6.0.0 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index f3fe65f7bd8..99b5491b9db 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.8 + +No user-facing changes. + ## 1.2.7 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.8.md b/swift/ql/src/change-notes/released/1.2.8.md new file mode 100644 index 00000000000..533ed7761e4 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.8.md @@ -0,0 +1,3 @@ +## 1.2.8 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 950e0645d4a..a49a92ee5ab 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.7 +lastReleaseVersion: 1.2.8 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 9e050de61b9..bec49400609 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8-dev +version: 1.2.8 groups: - swift - queries From ac9a29701e7d075a8dc2182d03fac579fff826ab Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Mon, 3 Nov 2025 15:03:46 +0000 Subject: [PATCH 670/965] C#: Minor changelog improvements --- csharp/ql/lib/CHANGELOG.md | 22 +++++++++++----------- csharp/ql/src/CHANGELOG.md | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index e7c0ac3cc88..20b1c03d722 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -6,7 +6,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements @@ -143,7 +143,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +163,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +201,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +451,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +586,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +626,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +645,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +692,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index edbfcdc3969..8993b453543 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -2,7 +2,7 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. ## 1.4.2 @@ -170,7 +170,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +284,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 From b4fed5bf5836d138369c249d9092a249c1afc904 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 7 Nov 2025 17:09:02 +0000 Subject: [PATCH 671/965] Revert C++ range analysis change note --- cpp/ql/lib/CHANGELOG.md | 24 +++++++++++------------ cpp/ql/lib/change-notes/released/6.0.1.md | 4 +--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 390e3d4653b..0f158cd3fb5 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,8 +1,6 @@ ## 6.0.1 -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. +No user-facing changes. ## 6.0.0 @@ -261,8 +259,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. * Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. * Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. @@ -296,7 +294,7 @@ No user-facing changes. * A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide. * An `isExplicit` predicate was added to the `Function` class that determines whether the function was declared as explicit. * A `getExplicitExpr` predicate was added to the `Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. -* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. +* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. ### Minor Analysis Improvements @@ -374,9 +372,9 @@ No user-facing changes. ### New Features * Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. * Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. @@ -492,7 +490,7 @@ No user-facing changes. * Functions that do not return due to calling functions that don't return (e.g. `exit`) are now detected as non-returning in the IR and dataflow. * Treat functions that reach the end of the function as returning in the IR. - They used to be treated as unreachable but it is allowed in C. + They used to be treated as unreachable but it is allowed in C. * The `DataFlow::asDefiningArgument` predicate now takes its argument from the range starting at `1` instead of `2`. Queries that depend on the single-parameter version of `DataFlow::asDefiningArgument` should have their arguments updated accordingly. ## 0.9.3 @@ -541,7 +539,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -735,7 +733,7 @@ No user-facing changes. ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -752,7 +750,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -851,7 +849,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/cpp/ql/lib/change-notes/released/6.0.1.md b/cpp/ql/lib/change-notes/released/6.0.1.md index 7e8cfdb2562..35b17912c81 100644 --- a/cpp/ql/lib/change-notes/released/6.0.1.md +++ b/cpp/ql/lib/change-notes/released/6.0.1.md @@ -1,5 +1,3 @@ ## 6.0.1 -### Bug Fixes - -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. +No user-facing changes. From 82435218dc771b5861c10240fe405963d7f0702a Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:44:33 +0100 Subject: [PATCH 672/965] Javascript: fix compilation error after scripted replacement --- .../extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java index b6dc97cb96b..c344f943720 100644 --- a/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java +++ b/javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java @@ -18,7 +18,7 @@ public class FunctionType extends JSDocTypeExpression { JSDocTypeExpression result) { super(loc, "FunctionType"); this._this = _this; - this._new = _Boolean.TRUE.equals(new); + this._new = Boolean.TRUE.equals(_new); this.params = params; this.result = result; } From 0a4406dec97496c5cf59bd3be89ea7af0e8de9a4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 11 Nov 2025 12:45:46 +0100 Subject: [PATCH 673/965] Guards: Push forex-range constraint in. --- .../controlflow/codeql/controlflow/Guards.qll | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 17aee2a7cae..a9998c0e65e 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -1024,16 +1024,34 @@ module Make< ReturnImplies::guardControls(call, val, _, _) } - predicate relevantReturnValue(NonOverridableMethod m, GuardValue val) { + /** + * Holds if a call to `m` having a return value of `retval` is reachable + * by a chain of implications. + */ + predicate relevantReturnValue(NonOverridableMethod m, GuardValue retval) { exists(NonOverridableMethodCall call | - relevantCallValue(call, val) and + relevantCallValue(call, retval) and call.getMethod() = m and - not val instanceof TException + not retval instanceof TException + ) + } + + /** + * Holds if a call to `m` having a return value of `retval` is reachable + * by a chain of implications, and `ret` is a return expression in `m` + * that could possibly have the value `retval`. + */ + predicate relevantReturnExprValue(NonOverridableMethod m, ReturnExpr ret, GuardValue retval) { + relevantReturnValue(m, retval) and + ret = m.getAReturnExpr() and + not exists(GuardValue notRetval | + exprHasValue(ret, notRetval) and + disjointValues(notRetval, retval) ) } private predicate returnGuard(Guard guard, GuardValue val) { - relevantReturnValue(guard.(ReturnExpr).getMethod(), val) + relevantReturnExprValue(_, guard, val) } module ReturnImplies = ImpliesTC; @@ -1058,7 +1076,7 @@ module Make< exists(Guard g0, GuardValue v0 | directlyControlsReturn(g0, v0, ret) and BranchImplies::ssaControls(param, val, g0, v0) and - relevantReturnValue(m, retval) + relevantReturnExprValue(m, ret, retval) ) or ReturnImplies::ssaControls(param, val, ret, retval) @@ -1166,7 +1184,7 @@ module Make< guardChecksDef(guard, param, val, state) | guard.valueControls(ret.getBasicBlock(), val) and - relevantReturnValue(m, retval) + relevantReturnExprValue(m, ret, retval) or ReturnImplies::guardControls(guard, val, ret, retval) ) From 99baf98897c42403897b53b06319a28144dabadc Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:46:28 +0100 Subject: [PATCH 674/965] Fix `build-ripunzip.yml` --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index a8868adad98..2982cf3099f 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -106,7 +106,7 @@ jobs: - name: Check built binary shell: bash run: | - rm -f ripunzip-*.zip + rm -f ripunzip-*.tar.zst ./ripunzip-* --version publish: needs: [versions, build] From 104f0e3a0232c137e34cbc22e22ab0eb32440296 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 12:51:30 +0100 Subject: [PATCH 675/965] Fix `build-ripunzip.yml` archive step on windows --- .github/workflows/build-ripunzip.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 2982cf3099f..2bf932d9c14 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -94,8 +94,9 @@ jobs: -arch x86_64 target/x86_64-apple-darwin/release/ripunzip \ -arch arm64 target/aarch64-apple-darwin/release/ripunzip - name: Archive + shell: bash run: | - tar acf ripunzip-${{ runner.os }}.tar.zst ripunzip-* + tar acf ripunzip-$RUNNER_OS.tar.zst ripunzip-${RUNNER_OS,,} - name: Upload built binary uses: actions/upload-artifact@v4 with: From a5279ec420c5aacb8d827d71dc09b5bd600fe784 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 11 Nov 2025 12:52:07 +0100 Subject: [PATCH 676/965] Guards: Rank return expressions. --- .../controlflow/codeql/controlflow/Guards.qll | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index a9998c0e65e..4729878d928 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -1008,6 +1008,8 @@ module Make< * wrappers. */ private module WrapperGuard { + private import codeql.util.DenseRank + final private class FinalExpr = Expr; class ReturnExpr extends FinalExpr { @@ -1019,6 +1021,25 @@ module Make< BasicBlock getBasicBlock() { result = super.getBasicBlock() } } + private module DenseRankInput implements DenseRankInputSig1 { + class C = NonOverridableMethod; + + class Ranked = ReturnExpr; + + int getRank(NonOverridableMethod m, ReturnExpr ret) { + m.getAReturnExpr() = ret and + result = ret.getLocation().getStartLine() + } + } + + private module ReturnExprRank = DenseRank1; + + private predicate rankedReturnExpr = ReturnExprRank::denseRank/2; + + private int maxRank(NonOverridableMethod m) { + result = max(int rnk | exists(rankedReturnExpr(m, rnk))) + } + private predicate relevantCallValue(NonOverridableMethodCall call, GuardValue val) { BranchImplies::guardControls(call, val, _, _) or ReturnImplies::guardControls(call, val, _, _) From e2671da05fcbe7e512ebbfe3f3e2d31f8bf79364 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 13:00:50 +0100 Subject: [PATCH 677/965] Fix `build-ripunzip.yml` archive step on macos --- .github/workflows/build-ripunzip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 2bf932d9c14..08547268e3b 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -96,7 +96,7 @@ jobs: - name: Archive shell: bash run: | - tar acf ripunzip-$RUNNER_OS.tar.zst ripunzip-${RUNNER_OS,,} + tar acf ripunzip-$RUNNER_OS.tar.zst ripunzip-$(echo $RUNNER_OS | tr '[:upper:]' '[:lower:]') - name: Upload built binary uses: actions/upload-artifact@v4 with: From 3c7522ca7d6cbc09f53d2fdbbb2cdac5a1efc3cc Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 11 Nov 2025 13:03:05 +0100 Subject: [PATCH 678/965] Guards: Replace recursion through universal quantification with rank-iteration. --- .../controlflow/codeql/controlflow/Guards.qll | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 4729878d928..2f964258b41 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -1088,10 +1088,11 @@ module Make< * parameter has the value `val`. */ private predicate validReturnInCustomGuard( - ReturnExpr ret, ParameterPosition ppos, GuardValue retval, GuardValue val + ReturnExpr ret, int rnk, NonOverridableMethod m, ParameterPosition ppos, GuardValue retval, + GuardValue val ) { - exists(NonOverridableMethod m, SsaParameterInit param | - m.getAReturnExpr() = ret and + exists(SsaParameterInit param | + ret = rankedReturnExpr(m, rnk) and param.getParameter() = m.getParameter(ppos) | exists(Guard g0, GuardValue v0 | @@ -1104,6 +1105,24 @@ module Make< ) } + private predicate validReturnInCustomGuardToRank( + int rnk, NonOverridableMethod m, ParameterPosition ppos, GuardValue retval, GuardValue val + ) { + validReturnInCustomGuard(_, _, m, ppos, retval, val) and rnk = 0 + or + validReturnInCustomGuardToRank(rnk - 1, m, ppos, retval, val) and + rnk <= maxRank(m) and + forall(ReturnExpr ret | + ret = rankedReturnExpr(m, rnk) and + not exists(GuardValue notRetval | + exprHasValue(ret, notRetval) and + disjointValues(notRetval, retval) + ) + | + validReturnInCustomGuard(ret, rnk, m, ppos, retval, val) + ) + } + private predicate guardDirectlyControlsExit(Guard guard, GuardValue val) { exists(BasicBlock bb | guard.directlyValueControls(bb, val) and @@ -1119,15 +1138,7 @@ module Make< private NonOverridableMethod wrapperGuard( ParameterPosition ppos, GuardValue retval, GuardValue val ) { - forex(ReturnExpr ret | - result.getAReturnExpr() = ret and - not exists(GuardValue notRetval | - exprHasValue(ret, notRetval) and - disjointValues(notRetval, retval) - ) - | - validReturnInCustomGuard(ret, ppos, retval, val) - ) + validReturnInCustomGuardToRank(maxRank(result), result, ppos, retval, val) or exists(SsaParameterInit param, Guard g0, GuardValue v0 | param.getParameter() = result.getParameter(ppos) and From 466a6f330a35a1791ad04d709351f4ffe7d6f5f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Nov 2025 12:21:57 +0000 Subject: [PATCH 679/965] Post-release preparation for codeql-cli-2.23.5 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 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/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 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/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/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182b..295d925c318 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.21-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a9172..b612696b816 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.13-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da..8b211353323 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.2-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549..39cdb717ca7 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.4-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7..7877ad717e2 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72..6427ecbb935 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.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4e..a19e72b95ec 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.3.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899e..2597e99f55b 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.4-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc..be82fc786d2 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: 1.0.34 +version: 1.0.35-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e..f4f9d02faed 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.2-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e375703..4a0baaa7836 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.9-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed..bcfc194a4cb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67d..98f0bdd5710 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.9.1-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216..bd19febdfaa 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.15-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71..93dd9cf7ae7 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.4-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d..e3283b5dc3f 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.35-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fba..bb28a8f6315 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.1.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2..7280bbcb67c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f0..3a400018dec 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.3-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522..37c9e4be522 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.9-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c421..3c045cd83e5 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.20-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a02..a26c9d35de5 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.20-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e7..f76c1f2ae45 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42b..fdf7de8e6a7 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0..7f969fdef42 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c..13a5b8507b3 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a8630..0cc0fbad906 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e3..24b697d1f49 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d3..f66b9d743f6 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a1..0aada9508ee 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a..4bb9cb4cb5f 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.35-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a5984..fa53c0be99f 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: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff6..94cae6f26a6 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9..00008849702 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.16-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8..0c588182911 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19..b876c84bbe3 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b78..4d4b671071e 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.22-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa76..40a7eadd828 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b8269..a1af32ac079 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198..ba8c8aac044 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 6.0.1-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec49400609..d5a55b365f1 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.9-dev groups: - swift - queries From 62e28d2dcfec0d49360182da8d8a9de508088290 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 11 Nov 2025 13:34:47 +0100 Subject: [PATCH 680/965] Guards: Simplify non-linear join. --- shared/controlflow/codeql/controlflow/Guards.qll | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 2f964258b41..db81aa8443a 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -1082,6 +1082,15 @@ module Make< guard.directlyValueControls(ret.getBasicBlock(), val) } + private predicate parameterControlsReturnExpr( + SsaParameterInit param, GuardValue val, ReturnExpr ret + ) { + exists(Guard g0, GuardValue v0 | + directlyControlsReturn(g0, v0, ret) and + BranchImplies::ssaControls(param, val, g0, v0) + ) + } + /** * Holds if `ret` is a return expression in a non-overridable method that * on a return value of `retval` allows the conclusion that the `ppos`th @@ -1095,11 +1104,8 @@ module Make< ret = rankedReturnExpr(m, rnk) and param.getParameter() = m.getParameter(ppos) | - exists(Guard g0, GuardValue v0 | - directlyControlsReturn(g0, v0, ret) and - BranchImplies::ssaControls(param, val, g0, v0) and - relevantReturnExprValue(m, ret, retval) - ) + parameterControlsReturnExpr(param, val, ret) and + relevantReturnExprValue(m, ret, retval) or ReturnImplies::ssaControls(param, val, ret, retval) ) From d5734af555079843082dc0c77ae7c31949bc3064 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Nov 2025 13:40:02 +0000 Subject: [PATCH 681/965] Update ripunzip binaries to version v2.0.3 --- misc/ripunzip/ripunzip-Linux.tar.zst | 3 +++ misc/ripunzip/ripunzip-Windows.tar.zst | 3 +++ misc/ripunzip/ripunzip-macOS.tar.zst | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 misc/ripunzip/ripunzip-Linux.tar.zst create mode 100644 misc/ripunzip/ripunzip-Windows.tar.zst create mode 100644 misc/ripunzip/ripunzip-macOS.tar.zst diff --git a/misc/ripunzip/ripunzip-Linux.tar.zst b/misc/ripunzip/ripunzip-Linux.tar.zst new file mode 100644 index 00000000000..94530212daf --- /dev/null +++ b/misc/ripunzip/ripunzip-Linux.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6df3e70fa425f5640aba1b319ed21f0a12d3e5d39d5da8cb4820396149c95bd +size 4740396 diff --git a/misc/ripunzip/ripunzip-Windows.tar.zst b/misc/ripunzip/ripunzip-Windows.tar.zst new file mode 100644 index 00000000000..81f156c41b5 --- /dev/null +++ b/misc/ripunzip/ripunzip-Windows.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a85c91867649a0ca0bbfddd2c88a3f3da7e0a44edd293571d72ee8492bc9b81b +size 1765497 diff --git a/misc/ripunzip/ripunzip-macOS.tar.zst b/misc/ripunzip/ripunzip-macOS.tar.zst new file mode 100644 index 00000000000..2f5e111c78e --- /dev/null +++ b/misc/ripunzip/ripunzip-macOS.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fbc5326b12fa6b9e06d48c60fb9cd363fff9a0c87a81ed93c29facbe9d2e4f2 +size 3796231 From e5ba4143ff078a52da6cb6e2ed03632c5cc9ed2c Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Tue, 11 Nov 2025 15:43:38 +0000 Subject: [PATCH 682/965] Go: add change-note for path transformer fixes --- go/ql/lib/change-notes/2025-11-11-path-transformer.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 go/ql/lib/change-notes/2025-11-11-path-transformer.md diff --git a/go/ql/lib/change-notes/2025-11-11-path-transformer.md b/go/ql/lib/change-notes/2025-11-11-path-transformer.md new file mode 100644 index 00000000000..c36cf8fb83e --- /dev/null +++ b/go/ql/lib/change-notes/2025-11-11-path-transformer.md @@ -0,0 +1,7 @@ +--- +category: fix +--- +* Some fixes relating to use of path transformers when extracting a database: + * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. + * The environment variable `CODEQL_PATH_TRANSFORMER` is now recognized, in addition to `SEMMLE_PATH_TRANSFORMER`. + * Fixed some cases where the extractor emitted paths without applying the path transformer. From f6b7aeaaca57ea933b34be1735d259c1e6dc7d94 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 11 Nov 2025 16:01:10 +0000 Subject: [PATCH 683/965] Rust: Add prototype query. --- .../CWE-295/DisabledCertificateCheck.ql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql new file mode 100644 index 00000000000..65b1d85f216 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -0,0 +1,22 @@ +/** + * @name Disabled TLS certificate check + * @description If an application disables TLS certificate checking, it may be vulnerable to + * man-in-the-middle attacks. + * @kind problem + * @problem.severity warning + * @security-severity 7.5 + * @precision high + * @id rust/disabled-certificate-check + * @tags security + * external/cwe/cwe-295 + */ + +import rust + +from CallExprBase fc +where + fc.getStaticTarget().(Function).getName().getText() = ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and + fc.getArg(0).(BooleanLiteralExpr).getTextValue() = "true" +select + fc, + "Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks." // TODO: proper message. From 3483007b2abcbef0917db29091fcb641b65b7f4c Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 11 Nov 2025 17:44:12 +0100 Subject: [PATCH 684/965] Ripunzip: use new archives --- MODULE.bazel | 6 +++--- misc/ripunzip/ripunzip-Linux.zip | 3 --- misc/ripunzip/ripunzip-Windows.zip | 3 --- misc/ripunzip/ripunzip-macOS.zip | 3 --- 4 files changed, 3 insertions(+), 12 deletions(-) delete mode 100644 misc/ripunzip/ripunzip-Linux.zip delete mode 100644 misc/ripunzip/ripunzip-Windows.zip delete mode 100644 misc/ripunzip/ripunzip-macOS.zip diff --git a/MODULE.bazel b/MODULE.bazel index 58ff750253b..dfd2c469a5e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -273,19 +273,19 @@ lfs_archive = use_repo_rule("//misc/bazel:lfs.bzl", "lfs_archive") lfs_archive( name = "ripunzip-linux", - src = "//misc/ripunzip:ripunzip-Linux.zip", + src = "//misc/ripunzip:ripunzip-Linux.tar.zst", build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) lfs_archive( name = "ripunzip-windows", - src = "//misc/ripunzip:ripunzip-Windows.zip", + src = "//misc/ripunzip:ripunzip-Windows.tar.zst", build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) lfs_archive( name = "ripunzip-macos", - src = "//misc/ripunzip:ripunzip-macOS.zip", + src = "//misc/ripunzip:ripunzip-macOS.tar.zst", build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) diff --git a/misc/ripunzip/ripunzip-Linux.zip b/misc/ripunzip/ripunzip-Linux.zip deleted file mode 100644 index d5535b1f17f..00000000000 --- a/misc/ripunzip/ripunzip-Linux.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:411e5578af004e7be449b6945d50b0984efc3308fe42a0b5c9e82d4be38425e1 -size 4888352 diff --git a/misc/ripunzip/ripunzip-Windows.zip b/misc/ripunzip/ripunzip-Windows.zip deleted file mode 100644 index 7ef76bfbb0d..00000000000 --- a/misc/ripunzip/ripunzip-Windows.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c0bfe3d9c8a2236ecdb574839e83d54c50a019656d26d4d870e8ca26be083dd -size 1860383 diff --git a/misc/ripunzip/ripunzip-macOS.zip b/misc/ripunzip/ripunzip-macOS.zip deleted file mode 100644 index c47a54d2c07..00000000000 --- a/misc/ripunzip/ripunzip-macOS.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1edacc510b44d35f926e7a682ea8efc1a7f28028cacf31f432e5b4b409a2d2b -size 4140891 From c88952423edb5e0c99f1e420b3ed7cd27da95af6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 03:08:31 +0000 Subject: [PATCH 685/965] Bump golang.org/x/mod Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod). Updates `golang.org/x/mod` from 0.29.0 to 0.30.0 - [Commits](https://github.com/golang/mod/compare/v0.29.0...v0.30.0) --- updated-dependencies: - dependency-name: golang.org/x/mod dependency-version: 0.30.0 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 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index e8cdde572e1..b73963c45cf 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,7 +9,7 @@ toolchain go1.25.0 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.29.0 + golang.org/x/mod v0.30.0 golang.org/x/tools v0.38.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 9b34f09461c..71824432ff5 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,7 +1,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= From 6b890eaf94c232e336b7424a31b1b8a6ac7b9aaf Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 9 Oct 2025 14:05:11 +0200 Subject: [PATCH 686/965] Java: Add test for multi-module projects with different Java versions --- .../main-module/pom.xml | 10 ++++++++++ .../src/main/java/com/example/App.java | 7 +++++++ .../maven-multimodule-test-java-version/pom.xml | 17 +++++++++++++++++ .../source_archive.expected | 7 +++++++ .../test-module/pom.xml | 14 ++++++++++++++ .../main/java/com/example/tests/TestUtils.java | 12 ++++++++++++ .../maven-multimodule-test-java-version/test.py | 2 ++ 7 files changed, 69 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java create mode 100644 java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml new file mode 100644 index 00000000000..39586e4e0ab --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/pom.xml @@ -0,0 +1,10 @@ + + + 4.0.0 + + com.example + maven-multimodule-test-java-version + 1.0 + + main-module + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java new file mode 100644 index 00000000000..d2397803d55 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/main-module/src/main/java/com/example/App.java @@ -0,0 +1,7 @@ +package com.example; + +public class App { + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} \ No newline at end of file diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml new file mode 100644 index 00000000000..ea5f8b5b03b --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + com.example + maven-multimodule-test-java-version + 1.0 + pom + + + 17 + + + + main-module + test-module + + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected b/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected new file mode 100644 index 00000000000..08385ca91a0 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/source_archive.expected @@ -0,0 +1,7 @@ +main-module/pom.xml +main-module/src/main/java/com/example/App.java +main-module/target/maven-archiver/pom.properties +pom.xml +test-module/pom.xml +test-module/src/main/java/com/example/tests/TestUtils.java +test-module/target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml new file mode 100644 index 00000000000..5895a91b2c1 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + + com.example + maven-multimodule-test-java-version + 1.0 + + test-module + + + 21 + + diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java new file mode 100644 index 00000000000..30e83856200 --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test-module/src/main/java/com/example/tests/TestUtils.java @@ -0,0 +1,12 @@ +package com.example.tests; + +// Requires Java 21: switch with pattern matching and guards +public class TestUtils { + public static String analyze(Object obj) { + return switch (obj) { + case String s when s.length() > 5 -> "long"; + case String s -> "short"; + default -> "other"; + }; + } +} \ No newline at end of file diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() From 5247c88da142e16cbc2db2f4c0ed64e86a6429a2 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 15 Oct 2025 13:18:09 +0200 Subject: [PATCH 687/965] Java: Add test for pom targeting Java 8 but rquiring Java 11 --- .../maven-java8-java11-dependency/pom.xml | 41 +++++++++++++++++++ .../source_archive.expected | 4 ++ .../src/main/java/com/example/Calculator.java | 11 +++++ .../test/java/com/example/CalculatorTest.java | 21 ++++++++++ .../maven-java8-java11-dependency/test.py | 2 + 5 files changed, 79 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml create mode 100644 java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java create mode 100644 java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java create mode 100644 java/ql/integration-tests/java/maven-java8-java11-dependency/test.py diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml b/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml new file mode 100644 index 00000000000..f50a3aadd23 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + com.example + maven-java8-java11-dependency + 1.0-SNAPSHOT + + maven-java8-java11-dependency + Test case: Java 8 project with dependency requiring Java 11+ + + + UTF-8 + 1.8 + 1.8 + + + + + + org.testng + testng + 7.7.0 + test + + + + + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + + diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected b/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected new file mode 100644 index 00000000000..5088f76cc38 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/source_archive.expected @@ -0,0 +1,4 @@ +pom.xml +src/main/java/com/example/Calculator.java +src/test/java/com/example/CalculatorTest.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java new file mode 100644 index 00000000000..4cc529e4f0f --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/main/java/com/example/Calculator.java @@ -0,0 +1,11 @@ +package com.example; + +public class Calculator { + public int add(int a, int b) { + return a + b; + } + + public int multiply(int a, int b) { + return a * b; + } +} diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java new file mode 100644 index 00000000000..821330a32cc --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/src/test/java/com/example/CalculatorTest.java @@ -0,0 +1,21 @@ +package com.example; + +import org.testng.Assert; +import org.testng.annotations.Test; + +/** + * Test class using TestNG 7.7.0 which requires Java 11+. + */ +public class CalculatorTest { + @Test + public void testAdd() { + Calculator calc = new Calculator(); + Assert.assertEquals(calc.add(2, 3), 5); + } + + @Test + public void testMultiply() { + Calculator calc = new Calculator(); + Assert.assertEquals(calc.multiply(3, 4), 12); + } +} diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() From fcc54c1470a5e4fb1d672a90454b3d39c7b2c3f3 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 30 Oct 2025 09:22:56 +0100 Subject: [PATCH 688/965] Java: Add test for detecting `--add-exports` in poms --- .../maven-add-exports-module-flags/pom.xml | 41 +++++++++++++++++++ .../source_archive.expected | 3 ++ .../main/java/com/example/CompilerUser.java | 15 +++++++ .../maven-add-exports-module-flags/test.py | 2 + 4 files changed, 61 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml create mode 100644 java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java create mode 100644 java/ql/integration-tests/java/maven-add-exports-module-flags/test.py diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml b/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml new file mode 100644 index 00000000000..94f5f90981e --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + com.example + maven-add-exports-module-flags + 1.0-SNAPSHOT + + maven-add-exports-module-flags + Test case: Project using --add-exports. Autobuilder should detect this and use --source/--target. + + + UTF-8 + 11 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + ${java.version} + + --add-exports + jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + --add-exports + jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + + + + + + diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected b/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected new file mode 100644 index 00000000000..3d84bfa09ab --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/source_archive.expected @@ -0,0 +1,3 @@ +pom.xml +src/main/java/com/example/CompilerUser.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java b/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java new file mode 100644 index 00000000000..13685d097a4 --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/src/main/java/com/example/CompilerUser.java @@ -0,0 +1,15 @@ +package com.example; + +import com.sun.tools.javac.api.JavacTool; + +/** + * Simple class that uses JDK compiler internals. + * This requires --add-exports flags to compile. + */ +public class CompilerUser { + public static void main(String[] args) { + // Use JavacTool from jdk.compiler module + JavacTool tool = JavacTool.create(); + System.out.println("Compiler tool: " + tool.getClass().getName()); + } +} diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() From 7dab2bef69d54d371c2d849ccc9d0d2fc2645cf7 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 30 Oct 2025 09:23:50 +0100 Subject: [PATCH 689/965] Java: Add test for Java 16 target when only Java 17+ is available --- .../java/maven-java16-with-higher-jdk/pom.xml | 30 +++++++++++++++++++ .../source_archive.expected | 3 ++ .../src/main/java/com/example/App.java | 15 ++++++++++ .../java/maven-java16-with-higher-jdk/test.py | 2 ++ 4 files changed, 50 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml create mode 100644 java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml new file mode 100644 index 00000000000..e6a09518d8f --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/pom.xml @@ -0,0 +1,30 @@ + + + + 4.0.0 + + com.example + maven-java16-with-higher-jdk + 1.0-SNAPSHOT + + maven-java16-with-higher-jdk + Test case: Java 16 target when only Java 17+ is available. + + + UTF-8 + 16 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + + + + + diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected new file mode 100644 index 00000000000..eb5dbc368ee --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/source_archive.expected @@ -0,0 +1,3 @@ +pom.xml +src/main/java/com/example/App.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java new file mode 100644 index 00000000000..707e579ad68 --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/src/main/java/com/example/App.java @@ -0,0 +1,15 @@ +package com.example; + +import java.util.List; + +/** + * Simple class using Java 16 features (e.g.,records). + */ +public class App { + public static void main(String[] args) { + Person person = new Person("Bob", 42); + System.out.println(person); + } +} + +record Person(String name, int age) {} diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() From a82b5e7aa1ce11890305cc60bbda05fdf9421ea8 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 30 Oct 2025 09:26:44 +0100 Subject: [PATCH 690/965] Java: Add test for selecting the highest compiler release in a pom --- .../pom.xml | 51 +++++++++++++++++++ .../source_archive.expected | 4 ++ .../src/main/java/com/example/App.java | 12 +++++ .../src/test/java/com/example/AppTest.java | 11 ++++ .../test.py | 2 + 5 files changed, 80 insertions(+) create mode 100644 java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml create mode 100644 java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected create mode 100644 java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java create mode 100644 java/ql/integration-tests/java/maven-execution-specific-java-version/test.py diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml b/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml new file mode 100644 index 00000000000..fca47a5ba6d --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/pom.xml @@ -0,0 +1,51 @@ + + + + 4.0.0 + + com.example + maven-execution-specific-java-version + 1.0-SNAPSHOT + + maven-execution-specific-java-version + Test case: Project with execution-specific Java versions (Java 11 for main, Java 17 for test). Maven.java should detect the highest version (17) and use it for compilation. + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + default-compile + compile + + compile + + + 11 + + + + + + default-testCompile + test-compile + + testCompile + + + 17 + + + + + + + diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected b/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected new file mode 100644 index 00000000000..16e83f3a7f6 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/source_archive.expected @@ -0,0 +1,4 @@ +pom.xml +src/main/java/com/example/App.java +src/test/java/com/example/AppTest.java +target/maven-archiver/pom.properties diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java new file mode 100644 index 00000000000..74ddfe58348 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/main/java/com/example/App.java @@ -0,0 +1,12 @@ +package com.example; + +public class App { + public static void main(String[] args) { + var message = "Hello World! Running on Java " + System.getProperty("java.version"); + System.out.println(message); + } + + public String getMessage() { + return "Hello from App"; + } +} diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java new file mode 100644 index 00000000000..4f8e04f7d78 --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/src/test/java/com/example/AppTest.java @@ -0,0 +1,11 @@ +package com.example; + +public class AppTest { + public static void main(String[] args) { + var text = """ + Hello + World + """; + System.out.println(text.strip()); + } +} diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py new file mode 100644 index 00000000000..eb49efe6a2a --- /dev/null +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py @@ -0,0 +1,2 @@ +def test(codeql, java): + codeql.database.create() From 3b7f2f4eda3cf65c852ab160ed2693fd2732f356 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 12 Nov 2025 08:30:46 +0100 Subject: [PATCH 691/965] Java: Add `LGTM_INDEX_ MAVEN_TOLLCHAINS_FILE` for new Maven integration tests --- .../java/maven-add-exports-module-flags/test.py | 4 ++-- .../java/maven-execution-specific-java-version/test.py | 4 ++-- .../java/maven-java16-with-higher-jdk/test.py | 4 ++-- .../java/maven-java8-java11-dependency/test.py | 4 ++-- .../java/maven-multimodule-test-java-version/test.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py index eb49efe6a2a..73c4b1415a1 100644 --- a/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py +++ b/java/ql/integration-tests/java/maven-add-exports-module-flags/test.py @@ -1,2 +1,2 @@ -def test(codeql, java): - codeql.database.create() +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py index eb49efe6a2a..73c4b1415a1 100644 --- a/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py +++ b/java/ql/integration-tests/java/maven-execution-specific-java-version/test.py @@ -1,2 +1,2 @@ -def test(codeql, java): - codeql.database.create() +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py index eb49efe6a2a..73c4b1415a1 100644 --- a/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py +++ b/java/ql/integration-tests/java/maven-java16-with-higher-jdk/test.py @@ -1,2 +1,2 @@ -def test(codeql, java): - codeql.database.create() +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py index eb49efe6a2a..73c4b1415a1 100644 --- a/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py +++ b/java/ql/integration-tests/java/maven-java8-java11-dependency/test.py @@ -1,2 +1,2 @@ -def test(codeql, java): - codeql.database.create() +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) diff --git a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py index eb49efe6a2a..73c4b1415a1 100644 --- a/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py +++ b/java/ql/integration-tests/java/maven-multimodule-test-java-version/test.py @@ -1,2 +1,2 @@ -def test(codeql, java): - codeql.database.create() +def test(codeql, java, actions_toolchains_file): + codeql.database.create(_env={"LGTM_INDEX_MAVEN_TOOLCHAINS_FILE": str(actions_toolchains_file)}) From c4f0868844caf68ad4676178d3363e6290a7dffb Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 14:16:06 +0200 Subject: [PATCH 692/965] Java: Move SSA entry defs to index -1. --- java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll | 4 ++-- java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 5a818d18b85..8097ec3dee2 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -169,7 +169,7 @@ private module SsaInput implements SsaImplCommon::InputSig certain = true or hasEntryDef(v, bb) and - i = 0 and + i = -1 and certain = true } @@ -232,7 +232,7 @@ private module Cached { exists(BaseSsaSourceVariable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and hasEntryDef(v, bb) and - i = 0 + i = -1 ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 275a0afafc0..b6c26f2c4d4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -188,7 +188,7 @@ private module SsaInput implements SsaImplCommon::InputSig certain = true or hasEntryDef(v, bb) and - i = 0 and + i = -1 and certain = true or uncertainVariableUpdate(v, _, bb, i) and @@ -502,7 +502,7 @@ private module Cached { exists(SsaSourceVariable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and hasEntryDef(v, bb) and - i = 0 + i = -1 ) } From f2181ece4f987fe6e795694332a810368875f02c Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 14:54:36 +0200 Subject: [PATCH 693/965] Java: Get rid of untracked SSA definitions. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 10 ++---- .../code/java/dataflow/internal/SsaImpl.qll | 34 +++---------------- 2 files changed, 6 insertions(+), 38 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 40da9a4e94d..999b02cce77 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -148,12 +148,10 @@ class SsaVariable extends Definition { /** Gets the `ControlFlowNode` at which this SSA variable is defined. */ pragma[nomagic] ControlFlowNode getCfgNode() { - exists(BasicBlock bb, int i, int j | + exists(BasicBlock bb, int i | this.definesAt(_, bb, i) and - // untracked definitions are inserted just before reads - (if this instanceof UntrackedDef then j = i + 1 else j = i) and // phi nodes are inserted at position `-1` - result = bb.getNode(0.maximum(j)) + result = bb.getNode(0.maximum(i)) ) } @@ -246,8 +244,6 @@ class SsaImplicitUpdate extends SsaUpdate { } private string getKind() { - this instanceof UntrackedDef and result = "untracked" - or this.hasExplicitQualifierUpdate() and result = "explicit qualifier" or @@ -280,8 +276,6 @@ class SsaImplicitUpdate extends SsaUpdate { * of its qualifiers is volatile. */ predicate assignsUnknownValue() { - this instanceof UntrackedDef - or this.hasExplicitQualifierUpdate() or this.hasImplicitQualifierUpdate() diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index b6c26f2c4d4..579da78b31e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -82,13 +82,6 @@ private module TrackedVariablesImpl { private import TrackedVariablesImpl -private predicate untrackedFieldWrite(BasicBlock bb, int i, SsaSourceVariable v) { - v = - any(SsaSourceField nf | - bb.getNode(i + 1) = nf.getAnAccess().(FieldRead).getControlFlowNode() and not trackField(nf) - ) -} - /** Gets the definition point of a nested class in the parent scope. */ private ControlFlowNode parentDef(NestedClass nc) { nc.(AnonymousClass).getClassInstanceExpr().getControlFlowNode() = result or @@ -184,9 +177,6 @@ private module SsaInput implements SsaImplCommon::InputSig certainVariableUpdate(v, _, bb, i) and certain = true or - untrackedFieldWrite(bb, i, v) and - certain = true - or hasEntryDef(v, bb) and i = -1 and certain = true @@ -204,7 +194,10 @@ private module SsaInput implements SsaImplCommon::InputSig hasDominanceInformation(bb) and ( exists(VarRead use | - v.getAnAccess() = use and bb.getNode(i) = use.getControlFlowNode() and certain = true + v instanceof TrackedVar and + v.getAnAccess() = use and + bb.getNode(i) = use.getControlFlowNode() and + certain = true ) or variableCapture(v, _, bb, i) and @@ -223,16 +216,6 @@ final class UncertainWriteDefinition = Impl::UncertainWriteDefinition; final class PhiNode = Impl::PhiNode; -class UntrackedDef extends Definition { - private VarRead read; - - UntrackedDef() { ssaUntrackedDef(this, read) } - - string toString() { result = read.toString() } - - Location getLocation() { result = read.getLocation() } -} - cached private module Cached { /** Gets the destination variable of an update of a tracked variable. */ @@ -256,15 +239,6 @@ private module Cached { ) } - cached - predicate ssaUntrackedDef(Definition def, VarRead read) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - untrackedFieldWrite(bb, i, v) and - read.getControlFlowNode() = bb.getNode(i + 1) - ) - } - /* * The SSA construction for a field `f` relies on implicit update nodes at * every call site that conceivably could reach an update of the field. From 374c77213ff594042137eb3d6ba0df64a23c6245 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 21 Oct 2025 15:06:14 +0200 Subject: [PATCH 694/965] Java: Remove getAFirstUse in BaseSSA. --- .../code/java/dataflow/internal/BaseSSA.qll | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 8097ec3dee2..4c41e828da0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -210,14 +210,6 @@ private module Cached { Impl::ssaDefReachesEndOfBlock(bb, def, _) } - cached - predicate firstUse(Impl::Definition def, VarRead use) { - exists(BasicBlock bb, int i | - Impl::firstUse(def, bb, i, _) and - use.getControlFlowNode() = bb.getNode(i) - ) - } - cached predicate ssaUpdate(Impl::Definition def, VariableUpdate upd) { exists(BaseSsaSourceVariable v, BasicBlock bb, int i | @@ -297,16 +289,6 @@ class BaseSsaVariable extends Impl::Definition { /** Gets an access of this SSA variable. */ VarRead getAUse() { result = getAUse(this) } - /** - * Gets an access of the SSA source variable underlying this SSA variable - * that can be reached from this SSA variable without passing through any - * other uses, but potentially through phi nodes. - * - * Subsequent uses can be found by following the steps defined by - * `baseSsaAdjacentUseUse`. - */ - VarRead getAFirstUse() { firstUse(this, result) } - /** Holds if this SSA variable is live at the end of `b`. */ predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } From 79b2f21b0714e16f004170a02d260f8055b83d19 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 11:22:18 +0100 Subject: [PATCH 695/965] SSA: Fix phi defs. --- shared/ssa/codeql/ssa/Ssa.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 5edf51127b8..35a6fc8148e 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1761,7 +1761,7 @@ module Make< * ``` * a phi definition for `x` is inserted just before the call `puts x`. */ - class SsaPhiDefinition extends SsaDefinition { + class SsaPhiDefinition extends SsaDefinition instanceof PhiNode { /** Holds if `inp` is an input to this phi definition along the edge originating in `bb`. */ predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { phiHasInputFromBlockCached(this, inp, bb) From 289d3374ef8c36bf7e9af64ca78dc8681806c35f Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 11:23:17 +0100 Subject: [PATCH 696/965] SSA: Improve toString. --- shared/ssa/codeql/ssa/Ssa.qll | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 35a6fc8148e..26f3d9f9771 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1617,6 +1617,9 @@ module Make< /** A static single assignment (SSA) definition. */ class SsaDefinition extends FinalDefinition { + /** Gets a textual representation of this SSA definition. */ + string toString() { result = super.toString() } + /** * Gets the control flow node of this SSA definition. * @@ -1708,6 +1711,8 @@ module Make< class SsaParameterInit extends SsaExplicitWrite { SsaParameterInit() { parameterInit(this, _) } + override string toString() { result = "SSA param(" + this.getSourceVariable() + ")" } + /** * Gets the parameter that this definition represents. This is equivalent * to `getDefinition().isParameterInit(result)` @@ -1725,6 +1730,8 @@ module Make< */ class SsaImplicitWrite extends SsaWriteDefinition { SsaImplicitWrite() { not explicitWrite(this, _) } + + override string toString() { result = "SSA implicit def(" + this.getSourceVariable() + ")" } } /** @@ -1734,6 +1741,8 @@ module Make< */ class SsaImplicitEntryDefinition extends SsaImplicitWrite { SsaImplicitEntryDefinition() { this.definesAt(_, any(EntryBasicBlock bb), -1) } + + override string toString() { result = "SSA entry def(" + this.getSourceVariable() + ")" } } /** An SSA definition that represents an uncertain variable update. */ From 551944bacb11065d7382a7f314ad630a90ec764d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 24 Oct 2025 14:31:20 +0200 Subject: [PATCH 697/965] Java: Add VariableWrite class. --- java/ql/lib/semmle/code/java/Expr.qll | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 282d90eaeee..4b03375c69e 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1808,6 +1808,52 @@ class VariableAssign extends VariableUpdate { } } +private newtype TVariableWrite = + TParamInit(Parameter p) or + TVarWriteExpr(VariableUpdate u) + +/** + * A write to a variable. This is either a local variable declaration, + * including parameter declarations, or an update to a variable. + */ +class VariableWrite extends TVariableWrite { + /** Gets the expression representing this write, if any. */ + Expr asExpr() { this = TVarWriteExpr(result) } + + /** + * Gets the expression with the value being written, if any. + * + * This can be the same expression as returned by `asExpr()`, which is the + * case for, for example, `++x` and `x += e`. For simple assignments like + * `x = e`, `asExpr()` gets the whole assignment expression while + * `getValue()` gets the right-hand side `e`. Post-crement operations like + * `x++` do not have an expression with the value being written. + */ + Expr getValue() { + this.asExpr().(VariableAssign).getSource() = result or + this.asExpr().(AssignOp) = result or + this.asExpr().(PreIncExpr) = result or + this.asExpr().(PreDecExpr) = result + } + + /** Holds if this write is an initialization of parameter `p`. */ + predicate isParameterInit(Parameter p) { this = TParamInit(p) } + + /** Gets a textual representation of this write. */ + string toString() { + exists(Parameter p | this = TParamInit(p) and result = p.toString()) + or + result = this.asExpr().toString() + } + + /** Gets the location of this write. */ + Location getLocation() { + exists(Parameter p | this = TParamInit(p) and result = p.getLocation()) + or + result = this.asExpr().getLocation() + } +} + /** A type literal. For example, `String.class`. */ class TypeLiteral extends Expr, @typeliteral { /** Gets the access to the type whose class is accessed. */ From 942dc2b89e0e26279c5b82ee9e7fa367e6ce3f77 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 23 Oct 2025 13:54:27 +0200 Subject: [PATCH 698/965] Java: Replace BaseSSA class wrappers with shared code. --- .../semmle/code/java/controlflow/Guards.qll | 32 +-- .../semmle/code/java/dataflow/TypeFlow.qll | 60 +++--- .../code/java/dataflow/internal/BaseSSA.qll | 188 ++++++++++++------ .../code/java/dispatch/DispatchFlow.qll | 44 ++-- .../lib/semmle/code/java/dispatch/ObjFlow.qll | 19 +- .../code/java/dispatch/VirtualDispatch.qll | 8 +- .../code/java/frameworks/android/Intent.qll | 6 +- .../security/ListOfConstantsSanitizer.qll | 4 +- 8 files changed, 206 insertions(+), 155 deletions(-) diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index 7bc53226b81..e68c9fbab0b 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -141,7 +141,7 @@ private predicate isNonFallThroughPredecessor(SwitchCase sc, ControlFlowNode pre private module GuardsInput implements SharedGuards::InputSig { private import java as J - private import semmle.code.java.dataflow.internal.BaseSSA + private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.NullGuards as NullGuards class NormalExitNode = ControlFlow::NormalExitNode; @@ -211,10 +211,10 @@ private module GuardsInput implements SharedGuards::InputSig { private newtype TFlowNode = TField(Field f) { not f.getType() instanceof PrimitiveType } or - TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or + TSsa(Base::SsaDefinition ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or TExpr(Expr e) or TMethod(Method m) { not m.getReturnType() instanceof PrimitiveType } @@ -55,7 +55,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { Field asField() { this = TField(result) } /** Gets the SSA variable corresponding to this node, if any. */ - BaseSsaVariable asSsa() { this = TSsa(result) } + Base::SsaDefinition asSsa() { this = TSsa(result) } /** Gets the expression corresponding to this node, if any. */ Expr asExpr() { this = TExpr(result) } @@ -107,7 +107,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { not e.(FieldAccess).getField() = f ) or - n2.asSsa().(BaseSsaPhiNode).getAnUltimateLocalDefinition() = n1.asSsa() + n2.asSsa().(Base::SsaPhiDefinition).getAnUltimateDefinition() = n1.asSsa() or exists(ReturnStmt ret | n2.asMethod() = ret.getEnclosingCallable() and ret.getResult() = n1.asExpr() @@ -118,14 +118,14 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { exists(Argument arg, Parameter p | privateParamArg(p, arg) and n1.asExpr() = arg and - n2.asSsa().(BaseSsaImplicitInit).isParameterDefinition(p) and + n2.asSsa().(Base::SsaParameterInit).getParameter() = p and // skip trivial recursion - not arg = n2.asSsa().getAUse() + not arg = n2.asSsa().getARead() ) or n2.asExpr() = n1.asField().getAnAccess() or - n2.asExpr() = n1.asSsa().getAUse() + n2.asExpr() = n1.asSsa().getARead() or n2.asExpr().(CastingExpr).getExpr() = n1.asExpr() and not n2.asExpr().getType() instanceof PrimitiveType @@ -133,9 +133,9 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { n2.asExpr().(AssignExpr).getSource() = n1.asExpr() and not n2.asExpr().getType() instanceof PrimitiveType or - n2.asSsa().(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + n2.asSsa().(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() or - n2.asSsa().(BaseSsaImplicitInit).captures(n1.asSsa()) + n2.asSsa().(Base::SsaCapturedDefinition).captures(n1.asSsa()) or n2.asExpr().(NotNullExpr).getExpr() = n1.asExpr() } @@ -147,7 +147,7 @@ module FlowStepsInput implements UniversalFlow::UniversalFlowInput { n.asExpr() instanceof NullLiteral or exists(LocalVariableDeclExpr decl | - n.asSsa().(BaseSsaUpdate).getDefiningExpr() = decl and + n.asSsa().(Base::SsaExplicitWrite).getDefiningExpr() = decl and not decl.hasImplicitInit() and not exists(decl.getInitOrPatternSource()) ) @@ -216,7 +216,9 @@ private module Input implements TypeFlowInput { ) } - private predicate upcastEnhancedForStmtAux(BaseSsaUpdate v, RefType t, RefType t1, RefType t2) { + private predicate upcastEnhancedForStmtAux( + Base::SsaExplicitWrite v, RefType t, RefType t1, RefType t2 + ) { exists(EnhancedForStmt for | for.getVariable() = v.getDefiningExpr() and v.getSourceVariable().getType().getErasure() = t2 and @@ -230,7 +232,7 @@ private module Input implements TypeFlowInput { * the type of the elements being iterated over, and this type is more precise * than the type of `v`. */ - private predicate upcastEnhancedForStmt(BaseSsaUpdate v, RefType t) { + private predicate upcastEnhancedForStmt(Base::SsaExplicitWrite v, RefType t) { exists(RefType t1, RefType t2 | upcastEnhancedForStmtAux(v, t, t1, t2) and t1.getASourceSupertype+() = t2 @@ -238,9 +240,9 @@ private module Input implements TypeFlowInput { } private predicate downcastSuccessorAux( - CastingExpr cast, BaseSsaVariable v, RefType t, RefType t1, RefType t2 + CastingExpr cast, Base::SsaDefinition v, RefType t, RefType t1, RefType t2 ) { - cast.getExpr() = v.getAUse() and + cast.getExpr() = v.getARead() and t = cast.getType() and t1 = t.getErasure() and t2 = v.getSourceVariable().getType().getErasure() @@ -250,10 +252,10 @@ private module Input implements TypeFlowInput { * Holds if `va` is an access to a value that has previously been downcast to `t`. */ private predicate downcastSuccessor(VarAccess va, RefType t) { - exists(CastingExpr cast, BaseSsaVariable v, RefType t1, RefType t2 | + exists(CastingExpr cast, Base::SsaDefinition v, RefType t1, RefType t2 | downcastSuccessorAux(pragma[only_bind_into](cast), v, t, t1, t2) and t1.getASourceSupertype+() = t2 and - va = v.getAUse() and + va = v.getARead() and dominates(cast.getControlFlowNode(), va.getControlFlowNode()) and dominates(cast.getControlFlowNode().getANormalSuccessor(), va.getControlFlowNode()) ) @@ -263,9 +265,9 @@ private module Input implements TypeFlowInput { * Holds if `va` is an access to a value that is guarded by `instanceof t` or `case e t`. */ private predicate typeTestGuarded(VarAccess va, RefType t) { - exists(Guard typeTest, BaseSsaVariable v | - typeTest.appliesTypeTest(v.getAUse(), t, _) and - va = v.getAUse() and + exists(Guard typeTest, Base::SsaDefinition v | + typeTest.appliesTypeTest(v.getARead(), t, _) and + va = v.getARead() and guardControls_v1(typeTest, va.getBasicBlock(), true) ) } @@ -274,12 +276,12 @@ private module Input implements TypeFlowInput { * Holds if `aa` is an access to a value that is guarded by `instanceof t` or `case e t`. */ private predicate arrayTypeTestGuarded(ArrayAccess aa, RefType t) { - exists(Guard typeTest, BaseSsaVariable v1, BaseSsaVariable v2, ArrayAccess aa1 | + exists(Guard typeTest, Base::SsaDefinition v1, Base::SsaDefinition v2, ArrayAccess aa1 | typeTest.appliesTypeTest(aa1, t, _) and - aa1.getArray() = v1.getAUse() and - aa1.getIndexExpr() = v2.getAUse() and - aa.getArray() = v1.getAUse() and - aa.getIndexExpr() = v2.getAUse() and + aa1.getArray() = v1.getARead() and + aa1.getIndexExpr() = v2.getARead() and + aa.getArray() = v1.getARead() and + aa.getIndexExpr() = v2.getARead() and guardControls_v1(typeTest, aa.getBasicBlock(), true) ) } @@ -321,14 +323,14 @@ private module Input implements TypeFlowInput { * Holds if `ioe` checks `v`, its true-successor is `bb`, and `bb` has multiple * predecessors. */ - private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, BaseSsaVariable v) { - ioe.getExpr() = v.getAUse() and + private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, Base::SsaDefinition v) { + ioe.getExpr() = v.getARead() and strictcount(bb.getAPredecessor()) > 1 and exists(ConditionBlock cb | cb.getCondition() = ioe and cb.getTestSuccessor(true) = bb) } /** Holds if `bb` is disjunctively guarded by multiple `instanceof` tests on `v`. */ - private predicate instanceofDisjunction(BasicBlock bb, BaseSsaVariable v) { + private predicate instanceofDisjunction(BasicBlock bb, Base::SsaDefinition v) { strictcount(InstanceOfExpr ioe | instanceofDisjunct(ioe, bb, v)) = strictcount(bb.getAPredecessor()) } @@ -338,10 +340,10 @@ private module Input implements TypeFlowInput { * `instanceof t_i` where `t` is one of those `t_i`. */ predicate instanceofDisjunctionGuarded(TypeFlowNode n, RefType t) { - exists(BasicBlock bb, InstanceOfExpr ioe, BaseSsaVariable v, VarAccess va | + exists(BasicBlock bb, InstanceOfExpr ioe, Base::SsaDefinition v, VarAccess va | instanceofDisjunction(bb, v) and bb.dominates(va.getBasicBlock()) and - va = v.getAUse() and + va = v.getARead() and instanceofDisjunct(ioe, bb, v) and t = ioe.getSyntacticCheckedType() and n.asExpr() = va diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 4c41e828da0..e373340d7d7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -25,7 +25,8 @@ private module BaseSsaStage { predicate backref() { (exists(TLocalVar(_, _)) implies any()) and (exists(any(BaseSsaSourceVariable v).getAnAccess()) implies any()) and - (exists(getAUse(_)) implies any()) + (exists(any(SsaDefinition def).getARead()) implies any()) and + (captures(_, _) implies any()) } } @@ -157,7 +158,7 @@ private module BaseSsaImpl { private import BaseSsaImpl -private module SsaInput implements SsaImplCommon::InputSig { +private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = BaseSsaSourceVariable; /** @@ -189,59 +190,46 @@ private module SsaInput implements SsaImplCommon::InputSig } } -private module Impl = SsaImplCommon::Make; +private module Impl = SsaImplCommon::Make; +private module SsaInput implements Impl::SsaInputSig { + private import java as J + + class Expr = J::Expr; + + class Parameter = J::Parameter; + + class VariableWrite = J::VariableWrite; + + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, BaseSsaSourceVariable v) { + variableUpdate(v, w.asExpr().getControlFlowNode(), bb, i) + or + exists(Parameter p, Callable c | + c = p.getCallable() and + v = TLocalVar(c, p) and + w.isParameterInit(p) and + c.getBody().getBasicBlock() = bb and + i = -1 + ) + } +} + +module Ssa = Impl::MakeSsa; + +import Ssa private import Cached cached private module Cached { - cached - VarRead getAUse(Impl::Definition def) { - BaseSsaStage::ref() and - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - Impl::ssaDefReachesRead(v, def, bb, i) and - result.getControlFlowNode() = bb.getNode(i) and - result = v.getAnAccess() - ) - } - - cached - predicate ssaDefReachesEndOfBlock(BasicBlock bb, Impl::Definition def) { - Impl::ssaDefReachesEndOfBlock(bb, def, _) - } - - cached - predicate ssaUpdate(Impl::Definition def, VariableUpdate upd) { - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - variableUpdate(v, upd.getControlFlowNode(), bb, i) and - getDestVar(upd) = v - ) - } - - cached - predicate ssaImplicitInit(Impl::WriteDefinition def) { - exists(BaseSsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - hasEntryDef(v, bb) and - i = -1 - ) - } - /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ cached - predicate captures(BaseSsaImplicitInit init, BaseSsaVariable capturedvar) { + predicate captures(SsaImplicitEntryDefinition init, SsaDefinition capturedvar) { exists(BasicBlock bb, int i | - Impl::ssaDefReachesRead(_, capturedvar, bb, i) and + Ssa::ssaDefReachesUncertainRead(_, capturedvar, bb, i) and variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) ) } - cached - predicate phiHasInputFromBlock(Impl::PhiNode phi, Impl::Definition inp, BasicBlock bb) { - Impl::phiHasInputFromBlock(phi, inp, bb) - } - cached module SsaPublic { /** @@ -277,26 +265,73 @@ private module Cached { import SsaPublic +/** An SSA definition in a closure that captures a variable. */ +class SsaCapturedDefinition extends SsaImplicitEntryDefinition { + SsaCapturedDefinition() { captures(this, _) } + + override string toString() { result = "SSA capture def(" + this.getSourceVariable() + ")" } + + /** Holds if this definition captures the value of `capturedvar`. */ + predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } + + /** + * Gets a definition that ultimately defines the captured variable and is not itself a phi node. + */ + SsaDefinition getAnUltimateCapturedDefinition() { + exists(SsaDefinition capturedvar | + captures(this, capturedvar) and result = capturedvar.getAnUltimateDefinition() + ) + } +} + +deprecated private predicate ssaUpdate(Impl::Definition def, VariableUpdate upd) { + exists(BaseSsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + variableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = v + ) +} + +deprecated private predicate ssaImplicitInit(Impl::WriteDefinition def) { + exists(BaseSsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + hasEntryDef(v, bb) and + i = -1 + ) +} + /** + * DEPRECATED: Use `SsaDefinition` instead. + * * An SSA variable. */ -class BaseSsaVariable extends Impl::Definition { - /** Gets the `ControlFlowNode` at which this SSA variable is defined. */ - ControlFlowNode getCfgNode() { - exists(BasicBlock bb, int i | this.definesAt(_, bb, i) and result = bb.getNode(0.maximum(i))) - } +deprecated class BaseSsaVariable extends Impl::Definition { + /** + * DEPRECATED: Use `getControlFlowNode()` instead. + * + * Gets the `ControlFlowNode` at which this SSA variable is defined. + */ + deprecated ControlFlowNode getCfgNode() { result = this.(SsaDefinition).getControlFlowNode() } - /** Gets an access of this SSA variable. */ - VarRead getAUse() { result = getAUse(this) } + /** + * DEPRECATED: Use `getARead()` instead. + * + * Gets an access of this SSA variable. + */ + deprecated VarRead getAUse() { result = this.(SsaDefinition).getARead() } /** Holds if this SSA variable is live at the end of `b`. */ - predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } + predicate isLiveAtEndOfBlock(BasicBlock b) { this.(SsaDefinition).isLiveAtEndOfBlock(b) } /** Gets an input to the phi node defining the SSA variable. */ - private BaseSsaVariable getAPhiInput() { result = this.(BaseSsaPhiNode).getAPhiInput() } + private BaseSsaVariable getAPhiInput() { result = this.(BaseSsaPhiNode).getAnInput() } - /** Gets a definition in the same callable that ultimately defines this variable and is not itself a phi node. */ - BaseSsaVariable getAnUltimateLocalDefinition() { + /** + * DEPRECATED: Use `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition in the same callable that ultimately defines this variable and is not itself a phi node. + */ + deprecated BaseSsaVariable getAnUltimateLocalDefinition() { result = this.getAPhiInput*() and not result instanceof BaseSsaPhiNode } @@ -306,18 +341,27 @@ class BaseSsaVariable extends Impl::Definition { * variable. */ private BaseSsaVariable getAPhiInputOrCapturedVar() { - result = this.(BaseSsaPhiNode).getAPhiInput() or + result = this.(BaseSsaPhiNode).getAnInput() or this.(BaseSsaImplicitInit).captures(result) } - /** Gets a definition that ultimately defines this variable and is not itself a phi node. */ - BaseSsaVariable getAnUltimateDefinition() { + /** + * DEPRECATED: Use `SsaCapturedDefinition::getAnUltimateCapturedDefinition()` + * and/or `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition that ultimately defines this variable and is not itself a phi node. + */ + deprecated BaseSsaVariable getAnUltimateDefinition() { result = this.getAPhiInputOrCapturedVar*() and not result instanceof BaseSsaPhiNode } } -/** An SSA variable that is defined by a `VariableUpdate`. */ -class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { +/** + * DEPRECATED: Use `SsaExplicitWrite` instead. + * + * An SSA variable that is defined by a `VariableUpdate`. + */ +deprecated class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { BaseSsaUpdate() { ssaUpdate(this, _) } /** Gets the `VariableUpdate` defining the SSA variable. */ @@ -325,34 +369,46 @@ class BaseSsaUpdate extends BaseSsaVariable instanceof Impl::WriteDefinition { } /** + * DEPRECATED: Use `SsaParameterInit` or `SsaCapturedDefinition` instead. + * * An SSA variable that is defined by its initial value in the callable. This * includes initial values of parameters, fields, and closure variables. */ -class BaseSsaImplicitInit extends BaseSsaVariable instanceof Impl::WriteDefinition { +deprecated class BaseSsaImplicitInit extends BaseSsaVariable instanceof Impl::WriteDefinition { BaseSsaImplicitInit() { ssaImplicitInit(this) } /** Holds if this is a closure variable that captures the value of `capturedvar`. */ predicate captures(BaseSsaVariable capturedvar) { captures(this, capturedvar) } /** + * DEPRECATED: Use `SsaParameterInit::getParameter()` instead. + * * Holds if the SSA variable is a parameter defined by its initial value in the callable. */ - predicate isParameterDefinition(Parameter p) { + deprecated predicate isParameterDefinition(Parameter p) { this.getSourceVariable() = TLocalVar(p.getCallable(), p) and p.getCallable().getBody().getControlFlowNode() = this.getCfgNode() } } -/** An SSA phi node. */ -class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { - /** Gets an input to the phi node defining the SSA variable. */ - BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } +/** + * DEPRECATED: Use `SsaPhiDefinition` instead. + * + * An SSA phi node. + */ +deprecated class BaseSsaPhiNode extends BaseSsaVariable instanceof Impl::PhiNode { + /** + * DEPRECATED: Use `getAnInput()` instead. + * + * Gets an input to the phi node defining the SSA variable. + */ + deprecated BaseSsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } /** Gets an input to the phi node defining the SSA variable. */ BaseSsaVariable getAnInput() { this.hasInputFromBlock(result, _) } /** Holds if `inp` is an input to the phi node along the edge originating in `bb`. */ predicate hasInputFromBlock(BaseSsaVariable inp, BasicBlock bb) { - phiHasInputFromBlock(this, inp, bb) + this.(SsaPhiDefinition).hasInputFromBlock(inp, bb) } } diff --git a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll index bd293eed6b3..2af5df28107 100644 --- a/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll @@ -8,7 +8,7 @@ import java private import VirtualDispatch -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.internal.DataFlowUtil as DataFlow private import semmle.code.java.dataflow.internal.DataFlowPrivate as DataFlowPrivate private import semmle.code.java.dataflow.InstanceAccess @@ -162,14 +162,28 @@ private module TypeTrackingSteps { storeContents = loadContents } - predicate simpleLocalSmallStep(Node n1, Node n2) { - exists(BaseSsaVariable v, BaseSsaVariable def | - def.(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() - or - def.(BaseSsaImplicitInit).isParameterDefinition(n1.asParameter()) + /** + * Holds if `n` is a read of an SSA variable that is ultimately defined by `def`. + * + * This includes reads of captured variables even though they are not technically + * local steps, but treating them as local is useful for type tracking purposes. + */ + private predicate readsSsa(Node n, Base::SsaDefinition def) { + exists(Base::SsaDefinition v | + v.getAnUltimateDefinition() = def or + v.(Base::SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + v.getARead() = n.asExpr() + ) + } + + predicate simpleLocalSmallStep(Node n1, Node n2) { + exists(Base::SsaDefinition def | + def.(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + or + def.(Base::SsaParameterInit).getParameter() = n1.asParameter() + | + readsSsa(n2, def) ) or exists(Callable c | n1.(DataFlow::InstanceParameterNode).getCallable() = c | @@ -220,11 +234,10 @@ private module TypeTrackingSteps { n2.asExpr() = get ) or - exists(EnhancedForStmt for, BaseSsaVariable ssa, BaseSsaVariable def | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + exists(EnhancedForStmt for, Base::SsaDefinition def | + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = v.getAnAccess() and - ssa.getAnUltimateDefinition() = def and - ssa.getAUse() = n2.asExpr() + readsSsa(n2, def) ) ) } @@ -259,16 +272,15 @@ private module TypeTrackingSteps { } predicate loadStep(Node n1, LocalSourceNode n2, Content f) { - exists(BaseSsaVariable v, BaseSsaVariable def | + exists(Base::SsaDefinition def | exists(EnhancedForStmt for | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = n1.asExpr() and n1.getType() instanceof Array and f = ContentArray() ) | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + readsSsa(n2, def) ) or n2.asExpr().(ArrayAccess).getArray() = n1.asExpr() diff --git a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll index a3da9118acc..239f4dd0fbc 100644 --- a/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll +++ b/java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll @@ -10,7 +10,7 @@ import java private import VirtualDispatch private import semmle.code.java.controlflow.Guards -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.internal.DataFlowUtil private import semmle.code.java.dataflow.internal.DataFlowPrivate private import semmle.code.java.dataflow.internal.ContainerFlow @@ -71,21 +71,24 @@ private predicate callFlowStep(Node n1, Node n2) { * flow, calls, returns, fields, array reads or writes, or container taint steps. */ private predicate step(Node n1, Node n2) { - exists(BaseSsaVariable v, BaseSsaVariable def | - def.(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + exists(Base::SsaDefinition v, Base::SsaDefinition def | + def.(Base::SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() or - def.(BaseSsaImplicitInit).isParameterDefinition(n1.asParameter()) + def.(Base::SsaParameterInit).getParameter() = n1.asParameter() or exists(EnhancedForStmt for | - for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and + for.getVariable() = def.(Base::SsaExplicitWrite).getDefiningExpr() and for.getExpr() = n1.asExpr() ) | - v.getAnUltimateDefinition() = def and - v.getAUse() = n2.asExpr() + ( + v.(Base::SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def or + v.getAnUltimateDefinition() = def + ) and + v.getARead() = n2.asExpr() ) or - baseSsaAdjacentUseUse(n1.asExpr(), n2.asExpr()) + Base::baseSsaAdjacentUseUse(n1.asExpr(), n2.asExpr()) or exists(Callable c | n1.(InstanceParameterNode).getCallable() = c | exists(InstanceAccess ia | diff --git a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll index 78bf1ad0bdc..0119930caf4 100644 --- a/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll +++ b/java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll @@ -7,7 +7,7 @@ import java import semmle.code.java.dataflow.TypeFlow private import DispatchFlow as DispatchFlow private import ObjFlow as ObjFlow -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.controlflow.Guards private import semmle.code.java.dispatch.internal.Unification @@ -194,10 +194,10 @@ private module Dispatch { */ private predicate impossibleDispatchTarget(MethodCall source, Method tgt) { tgt = viableImpl_v1_cand(source) and - exists(Guard typeTest, BaseSsaVariable v, Expr q, RefType t | + exists(Guard typeTest, Base::SsaDefinition v, Expr q, RefType t | source.getQualifier() = q and - v.getAUse() = q and - typeTest.appliesTypeTest(v.getAUse(), t, false) and + v.getARead() = q and + typeTest.appliesTypeTest(v.getARead(), t, false) and guardControls_v1(typeTest, q.getBasicBlock(), false) and tgt.getDeclaringType().getSourceDeclaration().getASourceSupertype*() = t.getErasure() ) diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll index c3b58873d1f..3df890c95f4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Intent.qll @@ -262,10 +262,10 @@ private predicate reaches(Expr src, Argument arg) { any(StartComponentMethodCall ma).getIntentArg() = arg and src = arg or - exists(Expr mid, BaseSsa::BaseSsaVariable ssa, BaseSsa::BaseSsaUpdate upd | + exists(Expr mid, BaseSsa::SsaDefinition ssa, BaseSsa::SsaExplicitWrite upd | reaches(mid, arg) and - mid = ssa.getAUse() and - upd = ssa.getAnUltimateLocalDefinition() and + mid = ssa.getARead() and + upd = ssa.getAnUltimateDefinition() and src = upd.getDefiningExpr().(VariableAssign).getSource() ) or diff --git a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll index 4294ac84f68..c8d52f4191c 100644 --- a/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/ListOfConstantsSanitizer.qll @@ -9,7 +9,7 @@ import java private import codeql.typeflow.UniversalFlow as UniversalFlow private import semmle.code.java.Collections private import semmle.code.java.controlflow.Guards -private import semmle.code.java.dataflow.internal.BaseSSA +private import semmle.code.java.dataflow.internal.BaseSSA as Base private import semmle.code.java.dataflow.TaintTracking private import semmle.code.java.dataflow.TypeFlow private import semmle.code.java.dispatch.VirtualDispatch @@ -115,7 +115,7 @@ private predicate nodeWithAddition(FlowNode n, Variable v) { n.asField() = v or n.asSsa().getSourceVariable().getVariable() = v and - (n.asSsa() instanceof BaseSsaUpdate or n.asSsa().(BaseSsaImplicitInit).isParameterDefinition(_)) + n.asSsa() instanceof Base::SsaExplicitWrite ) } From d5708fdd4ef9753e42abf406b1db30bd39267925 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 5 Nov 2025 14:09:55 +0100 Subject: [PATCH 699/965] Java: Instantiate shared SSA wrappers for main SSA. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 2 ++ .../code/java/dataflow/internal/SsaImpl.qll | 32 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 999b02cce77..4c7372998c2 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -15,6 +15,8 @@ module; import java private import internal.SsaImpl +import internal.SsaImpl::Ssa as Ssa +import Ssa /** * A fully qualified variable in the context of a `Callable` in which it is diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 579da78b31e..17870093ca2 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -164,7 +164,7 @@ private predicate uncertainVariableUpdateImpl(TrackedVar v, ControlFlowNode n, B predicate uncertainVariableUpdate(TrackedVar v, ControlFlowNode n, BasicBlock b, int i) = forceLocal(uncertainVariableUpdateImpl/4)(v, n, b, i) -private module SsaInput implements SsaImplCommon::InputSig { +private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = SsaSourceVariable; /** @@ -206,7 +206,35 @@ private module SsaInput implements SsaImplCommon::InputSig } } -import SsaImplCommon::Make as Impl +import SsaImplCommon::Make as Impl + +private module SsaInput implements Impl::SsaInputSig { + private import java as J + + class Expr = J::Expr; + + class Parameter = J::Parameter; + + class VariableWrite = J::VariableWrite; + + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SsaSourceVariable v) { + exists(VariableUpdate upd | + upd = w.asExpr() and + certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = v + ) + or + exists(Parameter p, Callable c | + c = p.getCallable() and + v = TLocalVar(c, p) and + w.isParameterInit(p) and + c.getBody().getBasicBlock() = bb and + i = -1 + ) + } +} + +module Ssa = Impl::MakeSsa; final class Definition = Impl::Definition; From 154f0770de7f8f0f8add9911ca325bed217f840d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 6 Nov 2025 14:37:05 +0100 Subject: [PATCH 700/965] Java: Simplify instantiation of Guards and ControlFlowReachability. --- .../controlflow/ControlFlowReachability.qll | 20 ++------------ .../semmle/code/java/controlflow/Guards.qll | 26 ++----------------- .../semmle/code/java/dataflow/Nullness.qll | 4 +-- 3 files changed, 6 insertions(+), 44 deletions(-) diff --git a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll index 9fe6b9b0b1d..2b8353a6b07 100644 --- a/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll +++ b/java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll @@ -6,11 +6,12 @@ module; import java private import codeql.controlflow.ControlFlowReachability -private import semmle.code.java.dataflow.SSA as SSA +private import semmle.code.java.dataflow.SSA private import semmle.code.java.controlflow.Guards as Guards private module ControlFlowInput implements InputSig { private import java as J + import Ssa AstNode getEnclosingAstNode(ControlFlowNode node) { node.getAstNode() = result } @@ -27,23 +28,6 @@ private module ControlFlowInput implements InputSig Date: Thu, 6 Nov 2025 16:18:37 +0100 Subject: [PATCH 701/965] Java: Replace usages of isParameterDefinition. --- java/ql/lib/semmle/code/java/dataflow/DefUse.qll | 2 +- java/ql/lib/semmle/code/java/dataflow/Nullness.qll | 2 +- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 2 ++ .../semmle/code/java/dataflow/internal/DataFlowNodes.qll | 2 +- .../semmle/code/java/dataflow/internal/DataFlowPrivate.qll | 6 +++--- java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll | 2 +- .../internal/rangeanalysis/SignAnalysisSpecific.qll | 2 +- java/ql/lib/semmle/code/java/frameworks/InputStream.qll | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll index a93f2e30b46..ea4df94d6c1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll @@ -47,6 +47,6 @@ predicate defUsePair(VariableUpdate def, VarRead use) { */ predicate parameterDefUsePair(Parameter p, VarRead use) { exists(SsaVariable v | - v.getAUse() = use and v.getAnUltimateDefinition().(SsaImplicitInit).isParameterDefinition(p) + v.getAUse() = use and v.getAnUltimateDefinition().(SsaParameterInit).getParameter() = p ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index ff93b8d64ee..7802dc9d280 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -156,7 +156,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, or // A parameter might be null if there is a null argument somewhere. exists(Parameter p, Expr arg | - v.(SsaImplicitInit).isParameterDefinition(p) and + v.(SsaParameterInit).getParameter() = p and node = v.getCfgNode() and p.getAnArgument() = arg and reason = arg and diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 4c7372998c2..94f48bf8dc0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -317,6 +317,8 @@ class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { predicate captures(SsaVariable capturedvar) { captures(this, capturedvar) } /** + * DEPRECATED: Use `SsaParameterInit::getParameter()` instead. + * * Holds if the SSA variable is a parameter defined by its initial value in the callable. */ predicate isParameterDefinition(Parameter p) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 674c2380a5f..5dfa83f6f7e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -46,7 +46,7 @@ module SsaFlow { or exists(Parameter p | n = TExplicitParameterNode(p) and - result.(Impl::WriteDefSourceNode).getDefinition().(SsaImplicitInit).isParameterDefinition(p) + result.(Impl::WriteDefSourceNode).getDefinition().(SsaParameterInit).getParameter() = p ) or ssaDefAssigns(result.(Impl::WriteDefSourceNode).getDefinition(), n.asExpr()) 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 1721569e45a..83021f2b7f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -551,15 +551,15 @@ private class ConstantBooleanArgumentNode extends ArgumentNode, ExprNode { */ predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { exists( - ExplicitParameterNode paramNode, ConstantBooleanArgumentNode arg, SsaImplicitInit param, + ExplicitParameterNode paramNode, ConstantBooleanArgumentNode arg, SsaParameterInit param, Guard guard | // get constant bool argument and parameter for this call viableParamArg(call, pragma[only_bind_into](paramNode), arg) and // get the ssa variable definition for this parameter - param.isParameterDefinition(paramNode.getParameter()) and + param.getParameter() = paramNode.getParameter() and // which is used in a guard - param.getAUse() = guard and + param.getARead() = guard and // which controls `n` with the opposite value of `arg` guard .controls(nr, diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 17870093ca2..438c3f336d7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -669,7 +669,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu Expr getARead(Definition def) { result = getAUse(def) } predicate ssaDefHasSource(WriteDefinition def) { - def instanceof SsaExplicitUpdate or def.(SsaImplicitInit).isParameterDefinition(_) + def instanceof SsaExplicitUpdate or def instanceof SsaParameterInit } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 6363b8f7ed3..85fbde65684 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -273,7 +273,7 @@ private module Impl { } /** Holds if the variable underlying the implicit SSA variable `v` is not a field. */ - predicate nonFieldImplicitSsaDefinition(SsaImplicitInit v) { v.isParameterDefinition(_) } + predicate nonFieldImplicitSsaDefinition(SsaParameterInit v) { any() } /** Returned an expression that is assigned to `f`. */ Expr getAssignedValueToField(Field f) { diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index f6097e8c449..979e1587244 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -57,7 +57,7 @@ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { | n1.asExpr() = captured.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() or - captured.(SsaImplicitInit).isParameterDefinition(n1.asParameter()) + captured.(SsaParameterInit).getParameter() = n1.asParameter() ) } } From 07e635636cc0067e4a0aaf431ceda909b00f81f6 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 09:11:25 +0100 Subject: [PATCH 702/965] Java: Replace getAFirstUse with top-level predicate. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 12 +++++++++++- .../code/java/dataflow/internal/ContainerFlow.qll | 2 +- .../code/java/dataflow/internal/DataFlowPrivate.qll | 2 +- .../lib/semmle/code/java/frameworks/InputStream.qll | 2 +- .../semmle/code/java/security/CommandArguments.qll | 4 ++-- .../utils/modelgenerator/internal/CaptureModels.qll | 2 +- java/ql/test/library-tests/ssa/firstUse.ql | 4 ++-- 7 files changed, 19 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 94f48bf8dc0..e673dae65d6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -140,6 +140,14 @@ class SsaSourceField extends SsaSourceVariable { } } +/** + * Gets an access of the SSA source variable underlying this SSA variable + * that can be reached from this SSA variable without passing through any + * other uses, but potentially through phi nodes and uncertain implicit + * updates. + */ +VarRead ssaGetAFirstUse(SsaDefinition def) { firstUse(def, result) } + /** * An SSA variable. */ @@ -170,6 +178,8 @@ class SsaVariable extends Definition { VarRead getAUse() { result = getAUse(this) } /** + * DEPRECATED: Use `ssaGetAFirstUse(SsaDefinition)` instead. + * * Gets an access of the SSA source variable underlying this SSA variable * that can be reached from this SSA variable without passing through any * other uses, but potentially through phi nodes and uncertain implicit @@ -178,7 +188,7 @@ class SsaVariable extends Definition { * Subsequent uses can be found by following the steps defined by * `adjacentUseUse`. */ - VarRead getAFirstUse() { firstUse(this, result) } + deprecated VarRead getAFirstUse() { firstUse(this, result) } /** Holds if this SSA variable is live at the end of `b`. */ predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll index 5af24642477..4ddaa398ea4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll @@ -465,7 +465,7 @@ private predicate enhancedForStmtStep(Node node1, Node node2, Type containerType node1.asExpr() = e and containerType = e.getType() and v.getDefiningExpr() = for.getVariable() and - v.getAFirstUse() = node2.asExpr() + ssaGetAFirstUse(v) = node2.asExpr() ) } 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 83021f2b7f1..5fa1a845af8 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -401,7 +401,7 @@ class CastNode extends ExprNode { any(SwitchStmt ss).getExpr(), any(SwitchExpr se).getExpr(), any(InstanceOfExpr ioe).getExpr() ] and - this.asExpr() = upd.getAFirstUse() + this.asExpr() = ssaGetAFirstUse(upd) ) } } diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index 979e1587244..770f92583b4 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -45,7 +45,7 @@ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { wrapper.getASourceSupertype+() instanceof TypeInputStream and m.getDeclaringType() = wrapper and capturer.captures(captured) and - TaintTracking::localTaint(DataFlow::exprNode(capturer.getAFirstUse()), + TaintTracking::localTaint(DataFlow::exprNode(ssaGetAFirstUse(capturer)), any(DataFlow::PostUpdateNode pun | pun.getPreUpdateNode().asExpr() = m.getParameter(0).getAnAccess() )) and diff --git a/java/ql/lib/semmle/code/java/security/CommandArguments.qll b/java/ql/lib/semmle/code/java/security/CommandArguments.qll index f161a83d17b..cb5e3ca6563 100644 --- a/java/ql/lib/semmle/code/java/security/CommandArguments.qll +++ b/java/ql/lib/semmle/code/java/security/CommandArguments.qll @@ -71,7 +71,7 @@ private class CommandArgumentList extends SsaExplicitUpdate { /** Gets a use of the variable for which the list could be empty. */ private VarRead getAUseBeforeFirstAdd() { - result = this.getAFirstUse() + result = ssaGetAFirstUse(this) or exists(VarRead mid | mid = this.getAUseBeforeFirstAdd() and @@ -150,7 +150,7 @@ private class CommandArgumentArray extends SsaExplicitUpdate { private class CommandArgArrayImmutableFirst extends CommandArgumentArray { CommandArgArrayImmutableFirst() { (exists(this.getAWrite(0)) or exists(firstElementOf(this.getDefiningExpr()))) and - forall(VarRead use | exists(this.getAWrite(0, use)) | use = this.getAFirstUse()) + forall(VarRead use | exists(this.getAWrite(0, use)) | use = ssaGetAFirstUse(this)) } /** Gets the first element of this array. */ diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll index aa68a433291..71b0eac57e1 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -279,7 +279,7 @@ private module SinkModelGeneratorInput implements SinkModelGeneratorInputSig { // exclude variable capture jump steps exists(Ssa::SsaImplicitInit closure | closure.captures(_) and - node.asExpr() = closure.getAFirstUse() + node.asExpr() = Ssa::ssaGetAFirstUse(closure) ) } diff --git a/java/ql/test/library-tests/ssa/firstUse.ql b/java/ql/test/library-tests/ssa/firstUse.ql index bbb5c2d3e38..d3857074435 100644 --- a/java/ql/test/library-tests/ssa/firstUse.ql +++ b/java/ql/test/library-tests/ssa/firstUse.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, VarRead use -where use = ssa.getAFirstUse() +from SsaDefinition ssa, VarRead use +where use = ssaGetAFirstUse(ssa) select ssa, use From 483b2d89a7b5717cf82a60c44016369465e82705 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 09:16:41 +0100 Subject: [PATCH 703/965] Java: Replace uses of SsaExplicitUpdate. --- .../lib/semmle/code/java/dataflow/DefUse.qll | 2 +- .../semmle/code/java/dataflow/NullGuards.qll | 4 ++-- .../semmle/code/java/dataflow/Nullness.qll | 8 +++---- .../code/java/dataflow/RangeAnalysis.qll | 2 +- .../semmle/code/java/dataflow/RangeUtils.qll | 24 +++++++++---------- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 8 +++++-- .../java/dataflow/internal/ContainerFlow.qll | 2 +- .../java/dataflow/internal/DataFlowNodes.qll | 2 +- .../dataflow/internal/DataFlowPrivate.qll | 11 ++++----- .../code/java/dataflow/internal/SsaImpl.qll | 4 +--- .../rangeanalysis/SignAnalysisSpecific.qll | 4 ++-- .../code/java/frameworks/InputStream.qll | 2 +- .../code/java/security/CommandArguments.qll | 18 +++++++------- .../Comparison/UselessComparisonTest.ql | 6 ++--- .../Concurrency/DoubleCheckedLocking.qll | 6 ++--- .../Likely Bugs/Concurrency/UnreleasedLock.ql | 6 ++--- .../Dead Code/DeadLocals.qll | 2 +- 17 files changed, 57 insertions(+), 54 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll index ea4df94d6c1..dad54e13e2e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll @@ -35,7 +35,7 @@ predicate useUsePair(VarRead use1, VarRead use2) { adjacentUseUse+(use1, use2) } */ predicate defUsePair(VariableUpdate def, VarRead use) { exists(SsaVariable v | - v.getAUse() = use and v.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr() = def + v.getAUse() = use and v.getAnUltimateDefinition().(SsaExplicitWrite).getDefiningExpr() = def ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index bf9a166e048..c29f406f21a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -110,13 +110,13 @@ Expr clearlyNotNullExpr(Expr reason) { /** Holds if `v` is an SSA variable that is provably not `null`. */ predicate clearlyNotNull(SsaVariable v, Expr reason) { exists(Expr src | - src = v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() and + src = v.(SsaExplicitWrite).getValue() and src = clearlyNotNullExpr(reason) ) or exists(CatchClause cc, LocalVariableDeclExpr decl | decl = cc.getVariable() and - decl = v.(SsaExplicitUpdate).getDefiningExpr() and + decl = v.(SsaExplicitWrite).getDefiningExpr() and reason = decl ) or diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 7802dc9d280..9e9a75399e0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -151,7 +151,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, not exists(MethodCall ma | ma.getAnArgument().getAChildExpr*() = e) ) and // Don't use a guard as reason if there is a null assignment. - not v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = nullExpr() + not v.(SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() = nullExpr() ) or // A parameter might be null if there is a null argument somewhere. @@ -167,7 +167,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, or // If the source of a variable is null then the variable may be null. exists(VariableAssign def | - v.(SsaExplicitUpdate).getDefiningExpr() = def and + v.(SsaExplicitWrite).getDefiningExpr() = def and def.getSource() = nullExpr(node.asExpr()) and reason = def and msg = "because of $@ assignment" @@ -185,7 +185,7 @@ private Expr nonEmptyExpr() { v.getSourceVariable().getType() instanceof Array | // ...its definition is non-empty... - v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = nonEmptyExpr() + v.(SsaExplicitWrite).getValue() = nonEmptyExpr() or // ...or it is guarded by a condition proving its length to be non-zero. exists(ConditionBlock cond, boolean branch, FieldAccess length | @@ -280,7 +280,7 @@ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason) predicate alwaysNullDeref(SsaSourceVariable v, VarAccess va) { exists(BasicBlock bb, SsaVariable ssa | forall(SsaVariable def | def = ssa.getAnUltimateDefinition() | - def.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = alwaysNullExpr() + def.(SsaExplicitWrite).getValue() = alwaysNullExpr() ) or nullGuardControls(ssa, true, bb) and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index f65e15d1c61..95d9e90aaa6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -252,7 +252,7 @@ module Sem implements Semantic { predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } - class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitUpdate { + class SsaExplicitUpdate extends SsaVariable instanceof SSA::SsaExplicitWrite { Expr getDefiningExpr() { result = super.getDefiningExpr() } } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index efd7bcd8088..2a0f840eca6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -34,13 +34,13 @@ predicate eqFlowCond = U::eqFlowCond/5; * have non-`SsaPhiNode` results. */ private predicate nonNullSsaFwdStep(SsaVariable v, SsaVariable phi) { - exists(SsaExplicitUpdate vnull, SsaPhiNode phi0 | phi0 = phi | + exists(SsaExplicitWrite vnull, SsaPhiNode phi0 | phi0 = phi | 2 = strictcount(phi0.getAPhiInput()) and vnull = phi0.getAPhiInput() and v = phi0.getAPhiInput() and not backEdge(phi0, v, _) and vnull != v and - vnull.getDefiningExpr().(VariableAssign).getSource() instanceof NullLiteral + vnull.getValue() instanceof NullLiteral ) } @@ -58,7 +58,7 @@ private predicate nonNullDefStep(Expr e1, Expr e2) { */ ArrayCreationExpr getArrayDef(SsaVariable v) { exists(Expr src | - v.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = src and + v.(SsaExplicitWrite).getValue() = src and nonNullDefStep*(result, src) ) or @@ -86,9 +86,9 @@ pragma[nomagic] private predicate constantIntegerExpr(Expr e, int val) { e.(CompileTimeConstantExpr).getIntValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantIntegerExpr(src, val) ) or @@ -112,9 +112,9 @@ pragma[nomagic] private predicate constantBooleanExpr(Expr e, boolean val) { e.(CompileTimeConstantExpr).getBooleanValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantBooleanExpr(src, val) ) or @@ -125,9 +125,9 @@ pragma[nomagic] private predicate constantStringExpr(Expr e, string val) { e.(CompileTimeConstantExpr).getStringValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantStringExpr(src, val) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index e673dae65d6..8ef43ff3c34 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -215,7 +215,11 @@ class SsaUpdate extends SsaVariable instanceof WriteDefinition { SsaUpdate() { not this instanceof SsaImplicitInit } } -/** An SSA variable that is defined by a `VariableUpdate`. */ +/** + * DEPRECATED: Use `SsaExplicitWrite` instead. + * + * An SSA variable that is defined by a `VariableUpdate`. + */ class SsaExplicitUpdate extends SsaUpdate { private VariableUpdate upd; @@ -368,7 +372,7 @@ private class RefTypeCastingExpr extends CastingExpr { Expr sameValue(SsaVariable v, VarAccess va) { result = v.getAUse() and result = va or - result.(AssignExpr).getDest() = va and result = v.(SsaExplicitUpdate).getDefiningExpr() + result.(AssignExpr).getDest() = va and result = v.(SsaExplicitWrite).getDefiningExpr() or result.(AssignExpr).getSource() = sameValue(v, va) or diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll index 4ddaa398ea4..1e6156aaa6f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/ContainerFlow.qll @@ -460,7 +460,7 @@ predicate arrayStoreStep(Node node1, Node node2) { } private predicate enhancedForStmtStep(Node node1, Node node2, Type containerType) { - exists(EnhancedForStmt for, Expr e, SsaExplicitUpdate v | + exists(EnhancedForStmt for, Expr e, SsaExplicitWrite v | for.getExpr() = e and node1.asExpr() = e and containerType = e.getType() and diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 5dfa83f6f7e..9786286389c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -29,7 +29,7 @@ private predicate deadcode(Expr e) { module SsaFlow { module Impl = SsaImpl::DataFlowIntegration; - private predicate ssaDefAssigns(SsaExplicitUpdate def, Expr value) { + private predicate ssaDefAssigns(SsaExplicitWrite def, Expr value) { exists(VariableUpdate upd | upd = def.getDefiningExpr() | value = upd.(VariableAssign).getSource() or value = upd.(AssignOp) or 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 5fa1a845af8..178a5560d04 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -64,8 +64,7 @@ private predicate closureFlowStep(Expr e1, Expr e2) { or exists(SsaVariable v | v.getAUse() = e2 and - v.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() = - e1 + v.getAnUltimateDefinition().(SsaExplicitWrite).getValue() = e1 ) } @@ -395,7 +394,7 @@ class CastNode extends ExprNode { CastNode() { this.getExpr() instanceof CastingExpr or - exists(SsaExplicitUpdate upd | + exists(SsaExplicitWrite upd | upd.getDefiningExpr().(VariableAssign).getSource() = [ any(SwitchStmt ss).getExpr(), any(SwitchExpr se).getExpr(), @@ -531,9 +530,9 @@ class NodeRegion instanceof BasicBlock { private predicate constantBooleanExpr(Expr e, boolean val) { e.(CompileTimeConstantExpr).getBooleanValue() = val or - exists(SsaExplicitUpdate v, Expr src | - e = v.getAUse() and - src = v.getDefiningExpr().(VariableAssign).getSource() and + exists(SsaExplicitWrite v, Expr src | + e = v.getARead() and + src = v.getValue() and constantBooleanExpr(src, val) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 438c3f336d7..9e2853cdefa 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -668,9 +668,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu Expr getARead(Definition def) { result = getAUse(def) } - predicate ssaDefHasSource(WriteDefinition def) { - def instanceof SsaExplicitUpdate or def instanceof SsaParameterInit - } + predicate ssaDefHasSource(WriteDefinition def) { def instanceof SsaExplicitWrite } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { def instanceof SsaUncertainImplicitUpdate diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 85fbde65684..48222b40227 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -240,8 +240,8 @@ private module Impl { } /** Returns the underlying variable update of the explicit SSA variable `v`. */ - VariableUpdate getExplicitSsaAssignment(SsaVariable v) { - result = v.(SsaExplicitUpdate).getDefiningExpr() + VariableUpdate getExplicitSsaAssignment(SsaDefinition v) { + result = v.(SsaExplicitWrite).getDefiningExpr() } /** Returns the assignment of the variable update `def`. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index 770f92583b4..3af44bbb546 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -55,7 +55,7 @@ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { .getASourceSupertype*() .getSourceDeclaration() = wrapper | - n1.asExpr() = captured.(SsaExplicitUpdate).getDefiningExpr().(VariableAssign).getSource() + n1.asExpr() = captured.(SsaExplicitWrite).getDefiningExpr().(VariableAssign).getSource() or captured.(SsaParameterInit).getParameter() = n1.asParameter() ) diff --git a/java/ql/lib/semmle/code/java/security/CommandArguments.qll b/java/ql/lib/semmle/code/java/security/CommandArguments.qll index cb5e3ca6563..cd2c9cf5428 100644 --- a/java/ql/lib/semmle/code/java/security/CommandArguments.qll +++ b/java/ql/lib/semmle/code/java/security/CommandArguments.qll @@ -40,7 +40,7 @@ private predicate isShell(Expr ex) { or exists(SsaVariable ssa | ex = ssa.getAUse() and - isShell(ssa.getAnUltimateDefinition().(SsaExplicitUpdate).getDefiningExpr()) + isShell(ssa.getAnUltimateDefinition().(SsaExplicitWrite).getDefiningExpr()) ) or isShell(ex.(Assignment).getRhs()) @@ -61,10 +61,10 @@ private class ListOfStringType extends CollectionType { /** * A variable that could be used as a list of arguments to a command. */ -private class CommandArgumentList extends SsaExplicitUpdate { +private class CommandArgumentList extends SsaExplicitWrite { CommandArgumentList() { this.getSourceVariable().getType() instanceof ListOfStringType and - forex(CollectionMutation ma | ma.getQualifier() = this.getAUse() | + forex(CollectionMutation ma | ma.getQualifier() = this.getARead() | ma.getMethod().getName().matches("add%") ) } @@ -87,7 +87,7 @@ private class CommandArgumentList extends SsaExplicitUpdate { * Gets an addition to this list, i.e. a call to an `add` or `addAll` method. */ MethodCall getAnAdd() { - result.getQualifier() = this.getAUse() and + result.getQualifier() = this.getARead() and result.getMethod().getName().matches("add%") } @@ -121,10 +121,10 @@ private predicate arrayVarWrite(ArrayAccess acc) { exists(Assignment a | a.getDe /** * A variable that could be an array of arguments to a command. */ -private class CommandArgumentArray extends SsaExplicitUpdate { +private class CommandArgumentArray extends SsaExplicitWrite { CommandArgumentArray() { this.getSourceVariable().getType() instanceof ArrayOfStringType and - forall(ArrayAccess a | a.getArray() = this.getAUse() and arrayVarWrite(a) | + forall(ArrayAccess a | a.getArray() = this.getARead() and arrayVarWrite(a) | a.getIndexExpr() instanceof CompileTimeConstantExpr ) } @@ -133,7 +133,7 @@ private class CommandArgumentArray extends SsaExplicitUpdate { Expr getAWrite(int index, VarRead use) { exists(Assignment a, ArrayAccess acc | acc.getArray() = use and - use = this.getAUse() and + use = this.getARead() and index = acc.getIndexExpr().(CompileTimeConstantExpr).getIntValue() and acc = a.getDest() and result = a.getRhs() @@ -173,7 +173,9 @@ private Expr firstElementOf(Expr arr) { or result = firstElementOf(arr.(LocalVariableDeclExpr).getInit()) or - exists(CommandArgArrayImmutableFirst caa | arr = caa.getAUse() | result = caa.getFirstElement()) + exists(CommandArgArrayImmutableFirst caa | arr = caa.getARead() | + result = caa.getFirstElement() + ) or exists(MethodCall ma, Method m | arr = ma and diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql index e60c65953d1..32bd1ef20bd 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql @@ -127,7 +127,7 @@ Expr overFlowCand() { c.getIntValue() >= 0 ) or - exists(SsaExplicitUpdate x | result = x.getAUse() and x.getDefiningExpr() = overFlowCand()) + exists(SsaExplicitWrite x | result = x.getARead() and x.getDefiningExpr() = overFlowCand()) or result.(AssignExpr).getRhs() = overFlowCand() or @@ -161,8 +161,8 @@ Expr increaseOrDecreaseOfVar(SsaVariable v) { positiveOrNegative(sub.getRightOperand()) ) or - exists(SsaExplicitUpdate x | - result = x.getAUse() and x.getDefiningExpr() = increaseOrDecreaseOfVar(v) + exists(SsaExplicitWrite x | + result = x.getARead() and x.getDefiningExpr() = increaseOrDecreaseOfVar(v) ) or result.(AssignExpr).getRhs() = increaseOrDecreaseOfVar(v) diff --git a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll index ac279049ed1..19c2dbc783e 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll +++ b/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.qll @@ -8,9 +8,9 @@ import semmle.code.java.dataflow.SSA private Expr getAFieldRead(Field f) { result = f.getAnAccess() or - exists(SsaExplicitUpdate v | v.getSourceVariable().getVariable() instanceof LocalScopeVariable | - result = v.getAUse() and - v.getDefiningExpr().(VariableAssign).getSource() = getAFieldRead(f) + exists(SsaExplicitWrite v | v.getSourceVariable().getVariable() instanceof LocalScopeVariable | + result = v.getARead() and + v.getValue() = getAFieldRead(f) ) or result.(AssignExpr).getSource() = getAFieldRead(f) diff --git a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql index c7d33eff4a9..4a4be748a28 100644 --- a/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql +++ b/java/ql/src/Likely Bugs/Concurrency/UnreleasedLock.ql @@ -52,10 +52,10 @@ predicate failedLock(LockType t, BasicBlock lockblock, BasicBlock exblock) { ( lock.asExpr() = t.getLockAccess() or - exists(SsaExplicitUpdate lockbool | + exists(SsaExplicitWrite lockbool | // Using the value of `t.getLockAccess()` ensures that it is a `tryLock` call. - lock.asExpr() = lockbool.getAUse() and - lockbool.getDefiningExpr().(VariableAssign).getSource() = t.getLockAccess() + lock.asExpr() = lockbool.getARead() and + lockbool.getValue() = t.getLockAccess() ) ) and ( diff --git a/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll b/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll index 5afab52c37e..f0b1ab85c60 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll +++ b/java/ql/src/Violations of Best Practice/Dead Code/DeadLocals.qll @@ -14,7 +14,7 @@ private predicate emptyDecl(LocalVariableDeclExpr decl) { /** A dead variable update. */ predicate deadLocal(VariableUpdate upd) { upd.getDestVar() instanceof LocalScopeVariable and - not exists(SsaExplicitUpdate ssa | upd = ssa.getDefiningExpr()) and + not exists(SsaExplicitWrite ssa | upd = ssa.getDefiningExpr()) and not emptyDecl(upd) and not readImplicitly(upd, _) } From 06df5c0bd1f555afca43252929b585b95b114913 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 10:14:22 +0100 Subject: [PATCH 704/965] Java: Introduce SsaCapturedDefinition and replace uses of getAnUltimateDefinition. --- .../lib/semmle/code/java/dataflow/DefUse.qll | 14 +++++--- .../semmle/code/java/dataflow/NullGuards.qll | 4 +-- .../semmle/code/java/dataflow/Nullness.qll | 4 +-- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 34 +++++++++++++++++-- .../dataflow/internal/DataFlowPrivate.qll | 7 ++-- .../java/dataflow/internal/DataFlowUtil.qll | 4 ++- .../code/java/frameworks/InputStream.qll | 4 ++- .../code/java/security/CommandArguments.qll | 10 ++++-- .../modelgenerator/internal/CaptureModels.qll | 5 +-- java/ql/test/library-tests/ssa/captures.ql | 2 +- 10 files changed, 64 insertions(+), 24 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll index dad54e13e2e..b0ce62f935c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DefUse.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DefUse.qll @@ -34,8 +34,12 @@ predicate useUsePair(VarRead use1, VarRead use2) { adjacentUseUse+(use1, use2) } * Other paths may also exist, so the SSA variables in `def` and `use` can be different. */ predicate defUsePair(VariableUpdate def, VarRead use) { - exists(SsaVariable v | - v.getAUse() = use and v.getAnUltimateDefinition().(SsaExplicitWrite).getDefiningExpr() = def + exists(SsaDefinition v, SsaExplicitWrite write | + v.getARead() = use and write.getDefiningExpr() = def + | + v.getAnUltimateDefinition() = write + or + v.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = write ) } @@ -46,7 +50,9 @@ predicate defUsePair(VariableUpdate def, VarRead use) { * Other paths may also exist, so the SSA variables can be different. */ predicate parameterDefUsePair(Parameter p, VarRead use) { - exists(SsaVariable v | - v.getAUse() = use and v.getAnUltimateDefinition().(SsaParameterInit).getParameter() = p + exists(SsaDefinition v, SsaParameterInit init | v.getARead() = use and init.getParameter() = p | + v.getAnUltimateDefinition() = init + or + v.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = init ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index c29f406f21a..8bf95a6a40c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -120,8 +120,8 @@ predicate clearlyNotNull(SsaVariable v, Expr reason) { reason = decl ) or - exists(SsaVariable captured | - v.(SsaImplicitInit).captures(captured) and + exists(SsaDefinition captured | + v.(SsaCapturedDefinition).captures(captured) and clearlyNotNull(captured, reason) ) or diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 9e9a75399e0..0350f532e1e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -278,8 +278,8 @@ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason) * A dereference of a variable that is always `null`. */ predicate alwaysNullDeref(SsaSourceVariable v, VarAccess va) { - exists(BasicBlock bb, SsaVariable ssa | - forall(SsaVariable def | def = ssa.getAnUltimateDefinition() | + exists(BasicBlock bb, SsaDefinition ssa | + forall(SsaDefinition def | def = ssa.getAnUltimateDefinition() | def.(SsaExplicitWrite).getValue() = alwaysNullExpr() ) or diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 8ef43ff3c34..58b5ea780f2 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -140,6 +140,25 @@ class SsaSourceField extends SsaSourceVariable { } } +/** An SSA definition in a closure that captures a variable. */ +class SsaCapturedDefinition extends SsaImplicitEntryDefinition { + SsaCapturedDefinition() { captures(this, _) } + + override string toString() { result = "SSA capture def(" + this.getSourceVariable() + ")" } + + /** Holds if this definition captures the value of `capturedvar`. */ + predicate captures(SsaDefinition capturedvar) { captures(this, capturedvar) } + + /** + * Gets a definition that ultimately defines the captured variable and is not itself a phi node. + */ + SsaDefinition getAnUltimateCapturedDefinition() { + exists(SsaDefinition capturedvar | + captures(this, capturedvar) and result = capturedvar.getAnUltimateDefinition() + ) + } +} + /** * Gets an access of the SSA source variable underlying this SSA variable * that can be reached from this SSA variable without passing through any @@ -194,18 +213,25 @@ class SsaVariable extends Definition { predicate isLiveAtEndOfBlock(BasicBlock b) { ssaDefReachesEndOfBlock(b, this) } /** + * DEPRECATED. + * * Gets an SSA variable whose value can flow to this one in one step. This * includes inputs to phi nodes, the prior definition of uncertain updates, * and the captured ssa variable for a closure variable. */ - SsaVariable getAPhiInputOrPriorDef() { + deprecated SsaVariable getAPhiInputOrPriorDef() { result = this.(SsaPhiNode).getAPhiInput() or result = this.(SsaUncertainImplicitUpdate).getPriorDef() or this.(SsaImplicitInit).captures(result) } - /** Gets a definition that ultimately defines this variable and is not itself a phi node. */ - SsaVariable getAnUltimateDefinition() { + /** + * DEPRECATED: Use `SsaCapturedDefinition::getAnUltimateCapturedDefinition()` + * and/or `SsaDefinition::getAnUltimateDefinition()` instead. + * + * Gets a definition that ultimately defines this variable and is not itself a phi node. + */ + deprecated SsaVariable getAnUltimateDefinition() { result = this.getAPhiInputOrPriorDef*() and not result instanceof SsaPhiNode } } @@ -319,6 +345,8 @@ class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { } /** + * DEPRECATED: Use `SsaParameterInit`, `SsaImplicitEntryDefinition`, or `SsaCapturedDefinition` instead. + * * An SSA variable that is defined by its initial value in the callable. This * includes initial values of parameters, fields, and closure variables. */ 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 178a5560d04..3dcdc188761 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -62,9 +62,10 @@ private predicate fieldStep(Node node1, Node node2) { private predicate closureFlowStep(Expr e1, Expr e2) { simpleAstFlowStep(e1, e2) or - exists(SsaVariable v | - v.getAUse() = e2 and - v.getAnUltimateDefinition().(SsaExplicitWrite).getValue() = e1 + exists(SsaDefinition v, SsaExplicitWrite def | v.getARead() = e2 and def.getValue() = e1 | + v.getAnUltimateDefinition() = def + or + v.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 23e9f680c97..32307de49ce 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -101,7 +101,9 @@ predicate localExprFlow(Expr e1, Expr e2) { localFlow(exprNode(e1), exprNode(e2) predicate hasNonlocalValue(FieldRead fr) { not exists(SsaVariable v | v.getAUse() = fr) or - exists(SsaVariable v, SsaVariable def | v.getAUse() = fr and def = v.getAnUltimateDefinition() | + exists(SsaDefinition v, SsaDefinition def | + v.getARead() = fr and def = v.getAnUltimateDefinition() + | def instanceof SsaImplicitInit or def instanceof SsaImplicitUpdate ) diff --git a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll index 3af44bbb546..782d46df89d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/InputStream.qll +++ b/java/ql/lib/semmle/code/java/frameworks/InputStream.qll @@ -41,7 +41,9 @@ private class InputStreamWrapperCapturedJumpStep extends AdditionalTaintStep { */ private class InputStreamWrapperCapturedLocalStep extends AdditionalTaintStep { override predicate step(DataFlow::Node n1, DataFlow::Node n2) { - exists(InputStreamRead m, NestedClass wrapper, SsaVariable captured, SsaImplicitInit capturer | + exists( + InputStreamRead m, NestedClass wrapper, SsaDefinition captured, SsaCapturedDefinition capturer + | wrapper.getASourceSupertype+() instanceof TypeInputStream and m.getDeclaringType() = wrapper and capturer.captures(captured) and diff --git a/java/ql/lib/semmle/code/java/security/CommandArguments.qll b/java/ql/lib/semmle/code/java/security/CommandArguments.qll index cd2c9cf5428..1ac42192e04 100644 --- a/java/ql/lib/semmle/code/java/security/CommandArguments.qll +++ b/java/ql/lib/semmle/code/java/security/CommandArguments.qll @@ -38,9 +38,13 @@ private predicate isShell(Expr ex) { cmd.regexpMatch(".*(sh|javac?|python[23]?|osascript|cmd)(\\.exe)?$") ) or - exists(SsaVariable ssa | - ex = ssa.getAUse() and - isShell(ssa.getAnUltimateDefinition().(SsaExplicitWrite).getDefiningExpr()) + exists(SsaDefinition ssa, SsaExplicitWrite def | + ex = ssa.getARead() and + isShell(def.getDefiningExpr()) + | + ssa.getAnUltimateDefinition() = def + or + ssa.(SsaCapturedDefinition).getAnUltimateCapturedDefinition() = def ) or isShell(ex.(Assignment).getRhs()) diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 71b0eac57e1..b86a4c54246 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -277,10 +277,7 @@ private module SinkModelGeneratorInput implements SinkModelGeneratorInputSig { predicate sinkModelSanitizer(DataFlow::Node node) { // exclude variable capture jump steps - exists(Ssa::SsaImplicitInit closure | - closure.captures(_) and - node.asExpr() = Ssa::ssaGetAFirstUse(closure) - ) + exists(Ssa::SsaCapturedDefinition closure | node.asExpr() = Ssa::ssaGetAFirstUse(closure)) } predicate apiSource(DataFlow::Node source) { diff --git a/java/ql/test/library-tests/ssa/captures.ql b/java/ql/test/library-tests/ssa/captures.ql index ae89b91c43a..1b621759866 100644 --- a/java/ql/test/library-tests/ssa/captures.ql +++ b/java/ql/test/library-tests/ssa/captures.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaImplicitInit closure, SsaVariable captured +from SsaCapturedDefinition closure, SsaDefinition captured where closure.captures(captured) select closure, captured From 3e43c53b9d6cb54869236230e373131d1c1e374f Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 10:23:36 +0100 Subject: [PATCH 705/965] Java: Update some qldoc deprecation notices. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 58b5ea780f2..f99c7c1590a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -5,10 +5,8 @@ * `ControlFlowNode` at which it is defined. Each SSA variable is defined * either by a phi node, an implicit initial value (for parameters and fields), * an explicit update, or an implicit update (for fields). - * An implicit update occurs either at a `Call` that might modify a field, at - * another update that can update the qualifier of a field, or at a `FieldRead` - * of the field in case the field is not amenable to a non-trivial SSA - * representation. + * An implicit update occurs either at a `Call` that might modify a field, or + * at another update that can update the qualifier of a field. */ overlay[local?] module; @@ -168,13 +166,19 @@ class SsaCapturedDefinition extends SsaImplicitEntryDefinition { VarRead ssaGetAFirstUse(SsaDefinition def) { firstUse(def, result) } /** + * DEPRECATED: use `SsaDefinition` instead. + * * An SSA variable. */ class SsaVariable extends Definition { /** Gets the SSA source variable underlying this SSA variable. */ SsaSourceVariable getSourceVariable() { result = super.getSourceVariable() } - /** Gets the `ControlFlowNode` at which this SSA variable is defined. */ + /** + * DEPRECATED: Use `getControlFlowNode()` instead. + * + * Gets the `ControlFlowNode` at which this SSA variable is defined. + */ pragma[nomagic] ControlFlowNode getCfgNode() { exists(BasicBlock bb, int i | @@ -193,7 +197,11 @@ class SsaVariable extends Definition { /** Gets the `BasicBlock` in which this SSA variable is defined. */ BasicBlock getBasicBlock() { result = super.getBasicBlock() } - /** Gets an access of this SSA variable. */ + /** + * DEPRECATED: Use `getARead()` instead. + * + * Gets an access of this SSA variable. + */ VarRead getAUse() { result = getAUse(this) } /** @@ -236,7 +244,11 @@ class SsaVariable extends Definition { } } -/** An SSA variable that either explicitly or implicitly updates the variable. */ +/** + * DEPRECATED: use `SsaWriteDefinition` instead. + * + * An SSA variable that either explicitly or implicitly updates the variable. + */ class SsaUpdate extends SsaVariable instanceof WriteDefinition { SsaUpdate() { not this instanceof SsaImplicitInit } } From 35caede859ba7d8b51a5259ef8a85ec96d72b54e Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 10:32:36 +0100 Subject: [PATCH 706/965] Java: Replace SsaPhiNode with SsaPhiDefinition. --- .../lib/semmle/code/java/dataflow/Nullness.qll | 2 +- .../semmle/code/java/dataflow/RangeAnalysis.qll | 2 +- .../lib/semmle/code/java/dataflow/RangeUtils.qll | 12 ++++++------ java/ql/lib/semmle/code/java/dataflow/SSA.qll | 16 ++++++++++++---- .../rangeanalysis/ModulusAnalysisSpecific.qll | 2 +- .../rangeanalysis/SignAnalysisSpecific.qll | 2 +- .../rangeanalysis/SsaReadPositionSpecific.qll | 2 +- java/ql/test/library-tests/ssa/ssaPhi.ql | 6 +++--- 8 files changed, 26 insertions(+), 18 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 0350f532e1e..29ba9dbe0a3 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -142,7 +142,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, msg = "as suggested by $@ null guard" and guardSuggestsVarMaybeNull(e, v) and node = v.getCfgNode() and - not v instanceof SsaPhiNode and + not v instanceof SsaPhiDefinition and not clearlyNotNull(v) and // Comparisons in finally blocks are excluded since missing exception edges in the CFG could otherwise yield FPs. not exists(TryStmt try | try.getFinally() = e.getEnclosingStmt().getEnclosingStmt*()) and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index 95d9e90aaa6..72ce0e1947e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -248,7 +248,7 @@ module Sem implements Semantic { Expr getAUse() { result = super.getAUse() } } - class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiNode { + class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiDefinition { predicate hasInputFromBlock(SsaVariable inp, BasicBlock bb) { super.hasInputFromBlock(inp, bb) } } diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 2a0f840eca6..ea1ccb424c5 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -30,14 +30,14 @@ predicate eqFlowCond = U::eqFlowCond/5; * only other input to `phi` is a `null` value. * * Note that the declared type of `phi` is `SsaVariable` instead of - * `SsaPhiNode` in order for the reflexive case of `nonNullSsaFwdStep*(..)` to - * have non-`SsaPhiNode` results. + * `SsaPhiDefinition` in order for the reflexive case of `nonNullSsaFwdStep*(..)` to + * have non-`SsaPhiDefinition` results. */ private predicate nonNullSsaFwdStep(SsaVariable v, SsaVariable phi) { - exists(SsaExplicitWrite vnull, SsaPhiNode phi0 | phi0 = phi | - 2 = strictcount(phi0.getAPhiInput()) and - vnull = phi0.getAPhiInput() and - v = phi0.getAPhiInput() and + exists(SsaExplicitWrite vnull, SsaPhiDefinition phi0 | phi0 = phi | + 2 = strictcount(phi0.getAnInput()) and + vnull = phi0.getAnInput() and + v = phi0.getAnInput() and not backEdge(phi0, v, _) and vnull != v and vnull.getValue() instanceof NullLiteral diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index f99c7c1590a..520f2a294f4 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -381,12 +381,20 @@ class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { } } -/** An SSA phi node. */ -class SsaPhiNode extends SsaVariable instanceof PhiNode { +/** + * DEPRECATED: Use `SsaPhiDefinition` instead. + * + * An SSA phi node. + */ +deprecated class SsaPhiNode extends SsaVariable instanceof PhiNode { override string toString() { result = "SSA phi(" + this.getSourceVariable() + ")" } - /** Gets an input to the phi node defining the SSA variable. */ - SsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } + /** + * DEPRECATED: Use `getAnInput()` instead. + * + * Gets an input to the phi node defining the SSA variable. + */ + deprecated SsaVariable getAPhiInput() { this.hasInputFromBlock(result, _) } /** Gets an input to the phi node defining the SSA variable. */ SsaVariable getAnInput() { this.hasInputFromBlock(result, _) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index e124b8f7137..bb084b46917 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -13,7 +13,7 @@ module Private { class SsaVariable = Ssa::SsaVariable; - class SsaPhiNode = Ssa::SsaPhiNode; + class SsaPhiNode = Ssa::SsaPhiDefinition; class Expr = J::Expr; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 48222b40227..292dfb9e2fa 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -19,7 +19,7 @@ module Private { class SsaVariable = Ssa::SsaVariable; - class SsaPhiNode = Ssa::SsaPhiNode; + class SsaPhiNode = Ssa::SsaPhiDefinition; class VarAccess = J::VarAccess; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll index dbd7736acde..6bf768da44b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll @@ -10,7 +10,7 @@ private import SsaReadPositionCommon class SsaVariable = Ssa::SsaVariable; -class SsaPhiNode = Ssa::SsaPhiNode; +class SsaPhiNode = Ssa::SsaPhiDefinition; class BasicBlock = BB::BasicBlock; diff --git a/java/ql/test/library-tests/ssa/ssaPhi.ql b/java/ql/test/library-tests/ssa/ssaPhi.ql index 8aa0942e90a..c896c26b015 100644 --- a/java/ql/test/library-tests/ssa/ssaPhi.ql +++ b/java/ql/test/library-tests/ssa/ssaPhi.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaPhiNode ssa, SsaSourceVariable v, SsaVariable phiInput -where ssa.getAPhiInput() = phiInput and ssa.getSourceVariable() = v -select v, ssa.getCfgNode(), phiInput.getCfgNode() +from SsaPhiDefinition ssa, SsaSourceVariable v, SsaDefinition phiInput +where ssa.getAnInput() = phiInput and ssa.getSourceVariable() = v +select v, ssa.getControlFlowNode(), phiInput.getControlFlowNode() From f4b9efcdce2a1479377bbc683031e00cc872966a Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 10:52:38 +0100 Subject: [PATCH 707/965] Java: Replace getAUse with getARead. --- .../lib/semmle/code/java/dataflow/NullGuards.qll | 16 ++++++++-------- .../lib/semmle/code/java/dataflow/Nullness.qll | 14 +++++++------- .../semmle/code/java/dataflow/RangeAnalysis.qll | 4 ++-- .../lib/semmle/code/java/dataflow/RangeUtils.qll | 4 ++-- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 4 ++-- .../code/java/dataflow/internal/DataFlowUtil.qll | 2 +- .../internal/rangeanalysis/BoundSpecific.qll | 4 +++- .../rangeanalysis/ModulusAnalysisSpecific.qll | 4 +++- .../rangeanalysis/SignAnalysisSpecific.qll | 2 +- .../rangeanalysis/SsaReadPositionSpecific.qll | 4 ++-- .../java/security/NumericCastTaintedQuery.qll | 8 ++++---- .../lib/semmle/code/java/security/Validation.qll | 6 +++--- .../Collections/ArrayIndexOutOfBounds.ql | 8 ++++---- .../Comparison/UselessComparisonTest.ql | 16 ++++++++-------- .../Comparison/UselessComparisonTest.qll | 14 +++++++------- .../Likely Typos/ContradictoryTypeChecks.ql | 6 +++--- .../Termination/ConstantLoopCondition.ql | 6 +++--- .../CWE/CWE-470/LoadClassNoSignatureCheck.ql | 6 +++--- java/ql/test/library-tests/ssa-large/countssa.ql | 4 ++-- java/ql/test/library-tests/ssa/ssaUse.ql | 6 +++--- 20 files changed, 71 insertions(+), 67 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index 8bf95a6a40c..5928960ea24 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -26,9 +26,9 @@ Expr enumConstEquality(Expr e, boolean polarity, EnumConstant c) { } /** Gets an instanceof expression of `v` with type `type` */ -InstanceOfExpr instanceofExpr(SsaVariable v, RefType type) { +InstanceOfExpr instanceofExpr(SsaDefinition v, RefType type) { result.getCheckedType() = type and - result.getExpr() = v.getAUse() + result.getExpr() = v.getARead() } /** @@ -37,8 +37,8 @@ InstanceOfExpr instanceofExpr(SsaVariable v, RefType type) { * * Note this includes Kotlin's `==` and `!=` operators, which are value-equality tests. */ -EqualityTest varEqualityTestExpr(SsaVariable v1, SsaVariable v2, boolean isEqualExpr) { - result.hasOperands(v1.getAUse(), v2.getAUse()) and +EqualityTest varEqualityTestExpr(SsaDefinition v1, SsaDefinition v2, boolean isEqualExpr) { + result.hasOperands(v1.getARead(), v2.getARead()) and isEqualExpr = result.polarity() } @@ -91,18 +91,18 @@ Expr clearlyNotNullExpr(Expr reason) { (reason = r1 or reason = r2) ) or - exists(SsaVariable v, boolean branch, VarRead rval, Guard guard | + exists(SsaDefinition v, boolean branch, VarRead rval, Guard guard | guard = directNullGuard(v, branch, false) and guard.controls(rval.getBasicBlock(), branch) and reason = guard and - rval = v.getAUse() and + rval = v.getARead() and result = rval and not result = baseNotNullExpr() ) or - exists(SsaVariable v | + exists(SsaDefinition v | clearlyNotNull(v, reason) and - result = v.getAUse() and + result = v.getARead() and not result = baseNotNullExpr() ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index 29ba9dbe0a3..f2b8f336d09 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -179,9 +179,9 @@ private Expr nonEmptyExpr() { // An array creation with a known positive size is trivially non-empty. result.(ArrayCreationExpr).getFirstDimensionSize() > 0 or - exists(SsaVariable v | + exists(SsaDefinition v | // A use of an array variable is non-empty if... - result = v.getAUse() and + result = v.getARead() and v.getSourceVariable().getType() instanceof Array | // ...its definition is non-empty... @@ -192,13 +192,13 @@ private Expr nonEmptyExpr() { cond.controls(result.getBasicBlock(), branch) and cond.getCondition() = nonZeroGuard(length, branch) and length.getField().hasName("length") and - length.getQualifier() = v.getAUse() + length.getQualifier() = v.getARead() ) ) or - exists(SsaVariable v | + exists(SsaDefinition v | // A use of a Collection variable is non-empty if... - result = v.getAUse() and + result = v.getARead() and v.getSourceVariable().getType() instanceof CollectionType and exists(ConditionBlock cond, boolean branch, Expr c | // ...it is guarded by a condition... @@ -216,13 +216,13 @@ private Expr nonEmptyExpr() { // ...and the condition proves that it is non-empty, either by using the `isEmpty` method... c.(MethodCall).getMethod().hasName("isEmpty") and branch = false and - c.(MethodCall).getQualifier() = v.getAUse() + c.(MethodCall).getQualifier() = v.getARead() or // ...or a check on its `size`. exists(MethodCall size | c = nonZeroGuard(size, branch) and size.getMethod().hasName("size") and - size.getQualifier() = v.getAUse() + size.getQualifier() = v.getARead() ) ) ) diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll index 72ce0e1947e..ac43590e4dc 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeAnalysis.qll @@ -242,10 +242,10 @@ module Sem implements Semantic { Type getSsaType(SsaVariable var) { result = var.getSourceVariable().getType() } - final private class FinalSsaVariable = SSA::SsaVariable; + final private class FinalSsaVariable = SSA::SsaDefinition; class SsaVariable extends FinalSsaVariable { - Expr getAUse() { result = super.getAUse() } + Expr getAUse() { result = super.getARead() } } class SsaPhiNode extends SsaVariable instanceof SSA::SsaPhiDefinition { diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index ea1ccb424c5..14b4292db38 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -74,9 +74,9 @@ ArrayCreationExpr getArrayDef(SsaVariable v) { * `arrlen` without going through a back edge. */ private predicate arrayLengthDef(FieldRead arrlen, ArrayCreationExpr def) { - exists(SsaVariable arr | + exists(SsaDefinition arr | arrlen.getField() instanceof ArrayLengthField and - arrlen.getQualifier() = arr.getAUse() and + arrlen.getQualifier() = arr.getARead() and def = getArrayDef(arr) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 520f2a294f4..5d0214b6357 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -417,8 +417,8 @@ private class RefTypeCastingExpr extends CastingExpr { * * The `VarAccess` represents the access to `v` that `result` has the same value as. */ -Expr sameValue(SsaVariable v, VarAccess va) { - result = v.getAUse() and result = va +Expr sameValue(SsaDefinition v, VarAccess va) { + result = v.getARead() and result = va or result.(AssignExpr).getDest() = va and result = v.(SsaExplicitWrite).getDefiningExpr() or diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 32307de49ce..a06ca9a6a3f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -99,7 +99,7 @@ predicate localExprFlow(Expr e1, Expr e2) { localFlow(exprNode(e1), exprNode(e2) * updates. */ predicate hasNonlocalValue(FieldRead fr) { - not exists(SsaVariable v | v.getAUse() = fr) + not exists(SsaDefinition v | v.getARead() = fr) or exists(SsaDefinition v, SsaDefinition def | v.getARead() = fr and def = v.getAnUltimateDefinition() diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll index a1c690b7df4..3ed92f4c551 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll @@ -8,7 +8,9 @@ private import java as J private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.dataflow.RangeUtils as RU -class SsaVariable = Ssa::SsaVariable; +class SsaVariable extends Ssa::SsaDefinition { + Expr getAUse() { result = super.getARead() } +} class Expr = J::Expr; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index bb084b46917..e0968c9cf17 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -11,7 +11,9 @@ module Private { class BasicBlock = BB::BasicBlock; - class SsaVariable = Ssa::SsaVariable; + class SsaVariable extends Ssa::SsaDefinition { + Expr getAUse() { result = super.getARead() } + } class SsaPhiNode = Ssa::SsaPhiDefinition; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 292dfb9e2fa..8abbabe6d7a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -324,7 +324,7 @@ private module Impl { result = e.(CastingExpr).getExpr() } - Expr getARead(SsaVariable v) { result = v.getAUse() } + Expr getARead(SsaDefinition v) { result = v.getARead() } Field getField(FieldAccess fa) { result = fa.getField() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll index 6bf768da44b..f826f192dca 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll @@ -8,14 +8,14 @@ private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.controlflow.BasicBlocks as BB private import SsaReadPositionCommon -class SsaVariable = Ssa::SsaVariable; +class SsaVariable = Ssa::SsaDefinition; class SsaPhiNode = Ssa::SsaPhiDefinition; class BasicBlock = BB::BasicBlock; /** Gets a basic block in which SSA variable `v` is read. */ -BasicBlock getAReadBasicBlock(SsaVariable v) { result = v.getAUse().getBasicBlock() } +BasicBlock getAReadBasicBlock(SsaVariable v) { result = v.getARead().getBasicBlock() } private predicate id(BB::ExprParent x, BB::ExprParent y) { x = y } diff --git a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll index 841ff4f8515..4b2d7709fbd 100644 --- a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll @@ -46,14 +46,14 @@ class RightShiftOp extends Expr { } private predicate boundedRead(VarRead read) { - exists(SsaVariable v, ConditionBlock cb, ComparisonExpr comp, boolean testIsTrue | - read = v.getAUse() and + exists(SsaDefinition v, ConditionBlock cb, ComparisonExpr comp, boolean testIsTrue | + read = v.getARead() and cb.controls(read.getBasicBlock(), testIsTrue) and cb.getCondition() = comp | - comp.getLesserOperand() = v.getAUse() and testIsTrue = true + comp.getLesserOperand() = v.getARead() and testIsTrue = true or - comp.getGreaterOperand() = v.getAUse() and testIsTrue = false + comp.getGreaterOperand() = v.getARead() and testIsTrue = false ) } diff --git a/java/ql/lib/semmle/code/java/security/Validation.qll b/java/ql/lib/semmle/code/java/security/Validation.qll index 69f57474317..51b8defb5ec 100644 --- a/java/ql/lib/semmle/code/java/security/Validation.qll +++ b/java/ql/lib/semmle/code/java/security/Validation.qll @@ -32,9 +32,9 @@ private predicate validationCall(MethodCall ma, VarAccess va) { } private predicate validatedAccess(VarAccess va) { - exists(SsaVariable v, MethodCall guardcall | - va = v.getAUse() and - validationCall(guardcall, v.getAUse()) + exists(SsaDefinition v, MethodCall guardcall | + va = v.getARead() and + validationCall(guardcall, v.getARead()) | guardcall.(Guard).controls(va.getBasicBlock(), _) or diff --git a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql index 845aae01a3e..701084ac794 100644 --- a/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql +++ b/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql @@ -19,10 +19,10 @@ import semmle.code.java.dataflow.RangeUtils import semmle.code.java.dataflow.RangeAnalysis pragma[nomagic] -predicate ssaArrayLengthBound(SsaVariable arr, Bound b) { +predicate ssaArrayLengthBound(SsaDefinition arr, Bound b) { exists(FieldAccess len | len.getField() instanceof ArrayLengthField and - len.getQualifier() = arr.getAUse() and + len.getQualifier() = arr.getARead() and b.getExpr() = len ) } @@ -31,9 +31,9 @@ predicate ssaArrayLengthBound(SsaVariable arr, Bound b) { * Holds if the index expression of `aa` is less than or equal to the array length plus `k`. */ predicate boundedArrayAccess(ArrayAccess aa, int k) { - exists(SsaVariable arr, Expr index, Bound b, int delta | + exists(SsaDefinition arr, Expr index, Bound b, int delta | aa.getIndexExpr() = index and - aa.getArray() = arr.getAUse() and + aa.getArray() = arr.getARead() and bounded(index, b, delta, true, _) | ssaArrayLengthBound(arr, b) and diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql index 32bd1ef20bd..5c2fd94a917 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql @@ -142,22 +142,22 @@ Expr overFlowCand() { predicate positiveOrNegative(Expr e) { positive(e) or negative(e) } /** Gets an expression that equals `v` plus a positive or negative value. */ -Expr increaseOrDecreaseOfVar(SsaVariable v) { +Expr increaseOrDecreaseOfVar(SsaDefinition v) { exists(AssignAddExpr add | result = add and positiveOrNegative(add.getDest()) and - add.getRhs() = v.getAUse() + add.getRhs() = v.getARead() ) or exists(AddExpr add, Expr e | result = add and - add.hasOperands(v.getAUse(), e) and + add.hasOperands(v.getARead(), e) and positiveOrNegative(e) ) or exists(SubExpr sub | result = sub and - sub.getLeftOperand() = v.getAUse() and + sub.getLeftOperand() = v.getARead() and positiveOrNegative(sub.getRightOperand()) ) or @@ -172,7 +172,7 @@ Expr increaseOrDecreaseOfVar(SsaVariable v) { predicate overFlowTest(ComparisonExpr comp) { ( - exists(SsaVariable v | comp.hasOperands(increaseOrDecreaseOfVar(v), v.getAUse())) + exists(SsaDefinition v | comp.hasOperands(increaseOrDecreaseOfVar(v), v.getARead())) or comp.getLesserOperand() = overFlowCand() and comp.getGreaterOperand().(IntegerLiteral).getIntValue() = 0 @@ -195,9 +195,9 @@ predicate concurrentModificationTest(BinaryExpr test) { */ pragma[nomagic] predicate guardedTest(EqualityTest test, Guard guard, boolean isEq, int i1, int i2) { - exists(SsaVariable v, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | - guard.isEquality(v.getAUse(), c1, isEq) and - test.hasOperands(v.getAUse(), c2) and + exists(SsaDefinition v, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | + guard.isEquality(v.getARead(), c1, isEq) and + test.hasOperands(v.getARead(), c2) and i1 = c1.getIntValue() and i2 = c2.getIntValue() and v.getSourceVariable().getType() instanceof IntegralType diff --git a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll index 2933ae5305e..787cda44807 100644 --- a/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll +++ b/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.qll @@ -27,14 +27,14 @@ class BoundKind extends string { */ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { exists( - ConditionBlock cb, SsaVariable v, BinaryExpr cond, boolean condIsTrue, int k1, int k2, + ConditionBlock cb, SsaDefinition v, BinaryExpr cond, boolean condIsTrue, int k1, int k2, CompileTimeConstantExpr c1, CompileTimeConstantExpr c2 | s1.getCondition() = cond and cb.getCondition() = cond and - cond.hasOperands(v.getAUse(), c1) and + cond.hasOperands(v.getARead(), c1) and c1.getIntValue() = k1 and - test.hasOperands(v.getAUse(), c2) and + test.hasOperands(v.getARead(), c2) and c2.getIntValue() = k2 and v.getSourceVariable().getVariable() instanceof LocalScopeVariable and cb.controls(test.getBasicBlock(), condIsTrue) and @@ -49,7 +49,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) or exists(ComparisonExpr comp | comp = cond | - comp.getLesserOperand() = v.getAUse() and + comp.getLesserOperand() = v.getARead() and ( condIsTrue = true and boundKind.isUpper() and @@ -60,7 +60,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { (if comp.isStrict() then bound = k1 else bound = k1 + 1) ) or - comp.getGreaterOperand() = v.getAUse() and + comp.getGreaterOperand() = v.getARead() and ( condIsTrue = true and boundKind.isLower() and @@ -88,7 +88,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) or exists(ComparisonExpr comp | comp = test | - comp.getLesserOperand() = v.getAUse() and + comp.getLesserOperand() = v.getARead() and ( boundKind.providesLowerBound() and testIsTrue = false and @@ -107,7 +107,7 @@ predicate uselessTest(ConditionNode s1, BinaryExpr test, boolean testIsTrue) { ) ) or - comp.getGreaterOperand() = v.getAUse() and + comp.getGreaterOperand() = v.getARead() and ( boundKind.providesLowerBound() and testIsTrue = true and diff --git a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql index e48eb1f5ce6..8f8d04e6eb2 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql @@ -37,11 +37,11 @@ predicate requiresInstanceOf(Expr e, VarAccess va, RefType t) { * `v` is not of type `sup`, which is a supertype of `t`. */ predicate contradictoryTypeCheck(Expr e, Variable v, RefType t, RefType sup, Expr cond) { - exists(SsaVariable ssa | + exists(SsaDefinition ssa | ssa.getSourceVariable().getVariable() = v and - requiresInstanceOf(e, ssa.getAUse(), t) and + requiresInstanceOf(e, ssa.getARead(), t) and sup = t.getAnAncestor() and - instanceOfCheck(cond, ssa.getAUse(), sup) and + instanceOfCheck(cond, ssa.getARead(), sup) and cond.(Guard).controls(e.getBasicBlock(), false) and not t instanceof ErrorType and not sup instanceof ErrorType diff --git a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql index d4fbc480e1b..bf03191bdac 100644 --- a/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +++ b/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql @@ -75,9 +75,9 @@ where loopWhileTrue(loop) and loopExitGuard(loop, cond) ) and // None of the ssa variables in `cond` are updated inside the loop. - forex(SsaVariable ssa, VarRead use | ssa.getAUse() = use and use.getParent*() = cond | - not ssa.getCfgNode().getEnclosingStmt().getEnclosingStmt*() = loop or - ssa.getCfgNode().asExpr().getParent*() = loop.(ForStmt).getAnInit() + forex(SsaDefinition ssa, VarRead use | ssa.getARead() = use and use.getParent*() = cond | + not ssa.getControlFlowNode().getEnclosingStmt().getEnclosingStmt*() = loop or + ssa.getControlFlowNode().asExpr().getParent*() = loop.(ForStmt).getAnInit() ) and // And `cond` does not use method calls, field reads, or array reads. not exists(MethodCall ma | ma.getParent*() = cond) and diff --git a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql index d328b79f5b1..ddf00714f40 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-470/LoadClassNoSignatureCheck.ql @@ -42,9 +42,9 @@ class CheckSignaturesGuard extends Guard instanceof EqualityTest { } predicate signatureChecked(Expr safe) { - exists(CheckSignaturesGuard g, SsaVariable v | - v.getAUse() = g.getCheckedExpr() and - safe = v.getAUse() and + exists(CheckSignaturesGuard g, SsaDefinition v | + v.getARead() = g.getCheckedExpr() and + safe = v.getARead() and g.controls(safe.getBasicBlock(), g.(EqualityTest).polarity()) ) } diff --git a/java/ql/test/library-tests/ssa-large/countssa.ql b/java/ql/test/library-tests/ssa-large/countssa.ql index 8d7b5939c5c..3d07a8dad29 100644 --- a/java/ql/test/library-tests/ssa-large/countssa.ql +++ b/java/ql/test/library-tests/ssa-large/countssa.ql @@ -3,6 +3,6 @@ import semmle.code.java.dataflow.SSA from int uses, int live where - uses = strictcount(SsaVariable ssa, VarRead use | use = ssa.getAUse()) and - live = strictcount(SsaVariable ssa, BasicBlock b | ssa.isLiveAtEndOfBlock(b)) + uses = strictcount(SsaDefinition ssa, VarRead use | use = ssa.getARead()) and + live = strictcount(SsaDefinition ssa, BasicBlock b | ssa.isLiveAtEndOfBlock(b)) select uses, live diff --git a/java/ql/test/library-tests/ssa/ssaUse.ql b/java/ql/test/library-tests/ssa/ssaUse.ql index cab6f47c955..7bcec95cab8 100644 --- a/java/ql/test/library-tests/ssa/ssaUse.ql +++ b/java/ql/test/library-tests/ssa/ssaUse.ql @@ -1,6 +1,6 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, SsaSourceVariable v, Expr use -where use = ssa.getAUse() and ssa.getSourceVariable() = v -select v, ssa.getCfgNode(), ssa.toString(), use +from SsaDefinition ssa, SsaSourceVariable v, Expr use +where use = ssa.getARead() and ssa.getSourceVariable() = v +select v, ssa.getControlFlowNode(), ssa.toString(), use From 8594ae03df8c57a398b86fa83408e07cb6fe39d4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 10:58:46 +0100 Subject: [PATCH 708/965] Java: Replace remaining SsaImplicitInit. --- .../semmle/code/java/dataflow/internal/DataFlowUtil.qll | 7 +++---- java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll | 4 ++-- .../internal/rangeanalysis/SignAnalysisSpecific.qll | 5 ++--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index a06ca9a6a3f..00e7d15ee8b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -102,10 +102,9 @@ predicate hasNonlocalValue(FieldRead fr) { not exists(SsaDefinition v | v.getARead() = fr) or exists(SsaDefinition v, SsaDefinition def | - v.getARead() = fr and def = v.getAnUltimateDefinition() - | - def instanceof SsaImplicitInit or - def instanceof SsaImplicitUpdate + v.getARead() = fr and + def = v.getAnUltimateDefinition() and + def instanceof SsaImplicitWrite ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 9e2853cdefa..28f7b300d32 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -510,9 +510,9 @@ private module Cached { /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ cached - predicate captures(SsaImplicitInit init, SsaVariable capturedvar) { + predicate captures(SsaImplicitEntryDefinition init, SsaVariable capturedvar) { exists(BasicBlock bb, int i | - Impl::ssaDefReachesRead(_, capturedvar, bb, i) and + Ssa::ssaDefReachesUncertainRead(_, capturedvar, bb, i) and variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 8abbabe6d7a..554ad6a9348 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -267,9 +267,8 @@ private module Impl { } /** Gets the variable underlying the implicit SSA variable `v`. */ - Variable getImplicitSsaDeclaration(SsaVariable v) { - result = v.(SsaImplicitUpdate).getSourceVariable().getVariable() or - result = v.(SsaImplicitInit).getSourceVariable().getVariable() + Variable getImplicitSsaDeclaration(SsaDefinition v) { + result = v.(SsaImplicitWrite).getSourceVariable().getVariable() } /** Holds if the variable underlying the implicit SSA variable `v` is not a field. */ From f0bd0346f08f9fedb2dc7bd64331b5ba6d7883a1 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 11:03:46 +0100 Subject: [PATCH 709/965] Java: Replace usages of SsaVariable. --- .../lib/semmle/code/java/dataflow/NullGuards.qll | 16 +++++++++------- .../lib/semmle/code/java/dataflow/Nullness.qll | 12 ++++++------ .../lib/semmle/code/java/dataflow/RangeUtils.qll | 6 +++--- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 2 +- .../code/java/dataflow/internal/SsaImpl.qll | 2 +- .../rangeanalysis/SignAnalysisSpecific.qll | 2 +- java/ql/test/library-tests/ssa/ssaDef.ql | 4 ++-- 7 files changed, 23 insertions(+), 21 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index 5928960ea24..b165d1516d6 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -108,7 +108,7 @@ Expr clearlyNotNullExpr(Expr reason) { } /** Holds if `v` is an SSA variable that is provably not `null`. */ -predicate clearlyNotNull(SsaVariable v, Expr reason) { +predicate clearlyNotNull(SsaDefinition v, Expr reason) { exists(Expr src | src = v.(SsaExplicitWrite).getValue() and src = clearlyNotNullExpr(reason) @@ -136,7 +136,7 @@ predicate clearlyNotNull(SsaVariable v, Expr reason) { Expr clearlyNotNullExpr() { result = clearlyNotNullExpr(_) } /** Holds if `v` is an SSA variable that is provably not `null`. */ -predicate clearlyNotNull(SsaVariable v) { clearlyNotNull(v, _) } +predicate clearlyNotNull(SsaDefinition v) { clearlyNotNull(v, _) } /** * Holds if the evaluation of a call to `m` resulting in the value `branch` @@ -207,7 +207,7 @@ deprecated Expr basicOrCustomNullGuard(Expr e, boolean branch, boolean isnull) { * If `result` evaluates to `branch`, then `v` is guaranteed to be null if `isnull` * is true, and non-null if `isnull` is false. */ -Expr directNullGuard(SsaVariable v, boolean branch, boolean isnull) { +Expr directNullGuard(SsaDefinition v, boolean branch, boolean isnull) { result = basicNullGuard(sameValue(v, _), branch, isnull) } @@ -219,7 +219,7 @@ Expr directNullGuard(SsaVariable v, boolean branch, boolean isnull) { * If `result` evaluates to `branch`, then `v` is guaranteed to be null if `isnull` * is true, and non-null if `isnull` is false. */ -deprecated Guard nullGuard(SsaVariable v, boolean branch, boolean isnull) { +deprecated Guard nullGuard(SsaDefinition v, boolean branch, boolean isnull) { result = directNullGuard(v, branch, isnull) } @@ -228,7 +228,9 @@ deprecated Guard nullGuard(SsaVariable v, boolean branch, boolean isnull) { * from `bb1` to `bb2` implies that `v` is guaranteed to be null if `isnull` is * true, and non-null if `isnull` is false. */ -predicate nullGuardControlsBranchEdge(SsaVariable v, boolean isnull, BasicBlock bb1, BasicBlock bb2) { +predicate nullGuardControlsBranchEdge( + SsaDefinition v, boolean isnull, BasicBlock bb1, BasicBlock bb2 +) { exists(GuardValue gv | Guards_v3::ssaControlsBranchEdge(v, bb1, bb2, gv) and gv.isNullness(isnull) @@ -240,7 +242,7 @@ predicate nullGuardControlsBranchEdge(SsaVariable v, boolean isnull, BasicBlock * `bb` `v` is guaranteed to be null if `isnull` is true, and non-null if * `isnull` is false. */ -predicate nullGuardControls(SsaVariable v, boolean isnull, BasicBlock bb) { +predicate nullGuardControls(SsaDefinition v, boolean isnull, BasicBlock bb) { exists(GuardValue gv | Guards_v3::ssaControls(v, bb, gv) and gv.isNullness(isnull) @@ -263,6 +265,6 @@ predicate guardSuggestsExprMaybeNull(Expr guard, Expr e) { /** * Holds if `guard` is a guard expression that suggests that `v` might be null. */ -predicate guardSuggestsVarMaybeNull(Expr guard, SsaVariable v) { +predicate guardSuggestsVarMaybeNull(Expr guard, SsaDefinition v) { guardSuggestsExprMaybeNull(guard, sameValue(v, _)) } diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll index f2b8f336d09..d8b1c19b07f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll +++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll @@ -113,7 +113,7 @@ predicate dereference(Expr e) { * * The `VarAccess` is included for nicer error reporting. */ -private ControlFlowNode varDereference(SsaVariable v, VarAccess va) { +private ControlFlowNode varDereference(SsaDefinition v, VarAccess va) { dereference(result.asExpr()) and result.asExpr() = sameValue(v, va) } @@ -121,7 +121,7 @@ private ControlFlowNode varDereference(SsaVariable v, VarAccess va) { /** * The first dereference of a variable in a given `BasicBlock`. */ -private predicate firstVarDereferenceInBlock(BasicBlock bb, SsaVariable v, VarAccess va) { +private predicate firstVarDereferenceInBlock(BasicBlock bb, SsaDefinition v, VarAccess va) { exists(ControlFlowNode n | varDereference(v, va) = n and n.getBasicBlock() = bb and @@ -135,13 +135,13 @@ private predicate firstVarDereferenceInBlock(BasicBlock bb, SsaVariable v, VarAc } /** A variable suspected of being `null`. */ -private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, Expr reason) { +private predicate varMaybeNull(SsaDefinition v, ControlFlowNode node, string msg, Expr reason) { // A variable compared to null might be null. exists(Expr e | reason = e and msg = "as suggested by $@ null guard" and guardSuggestsVarMaybeNull(e, v) and - node = v.getCfgNode() and + node = v.getControlFlowNode() and not v instanceof SsaPhiDefinition and not clearlyNotNull(v) and // Comparisons in finally blocks are excluded since missing exception edges in the CFG could otherwise yield FPs. @@ -157,7 +157,7 @@ private predicate varMaybeNull(SsaVariable v, ControlFlowNode node, string msg, // A parameter might be null if there is a null argument somewhere. exists(Parameter p, Expr arg | v.(SsaParameterInit).getParameter() = p and - node = v.getCfgNode() and + node = v.getControlFlowNode() and p.getAnArgument() = arg and reason = arg and msg = "because of $@ null argument" and @@ -266,7 +266,7 @@ private module NullnessFlow = ControlFlowReachability::Flow; * Holds if the dereference of `v` at `va` might be `null`. */ predicate nullDeref(SsaSourceVariable v, VarAccess va, string msg, Expr reason) { - exists(SsaVariable origin, SsaVariable ssa, ControlFlowNode src, ControlFlowNode sink | + exists(SsaDefinition origin, SsaDefinition ssa, ControlFlowNode src, ControlFlowNode sink | varMaybeNull(origin, src, msg, reason) and NullnessFlow::flow(src, origin, sink, ssa) and ssa.getSourceVariable() = v and diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 14b4292db38..269c47dc3b7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -33,7 +33,7 @@ predicate eqFlowCond = U::eqFlowCond/5; * `SsaPhiDefinition` in order for the reflexive case of `nonNullSsaFwdStep*(..)` to * have non-`SsaPhiDefinition` results. */ -private predicate nonNullSsaFwdStep(SsaVariable v, SsaVariable phi) { +private predicate nonNullSsaFwdStep(SsaDefinition v, SsaDefinition phi) { exists(SsaExplicitWrite vnull, SsaPhiDefinition phi0 | phi0 = phi | 2 = strictcount(phi0.getAnInput()) and vnull = phi0.getAnInput() and @@ -56,13 +56,13 @@ private predicate nonNullDefStep(Expr e1, Expr e2) { * explicit `ArrayCreationExpr` definition and that the definition does not go * through a back edge. */ -ArrayCreationExpr getArrayDef(SsaVariable v) { +ArrayCreationExpr getArrayDef(SsaDefinition v) { exists(Expr src | v.(SsaExplicitWrite).getValue() = src and nonNullDefStep*(result, src) ) or - exists(SsaVariable mid | + exists(SsaDefinition mid | result = getArrayDef(mid) and nonNullSsaFwdStep(mid, v) ) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 5d0214b6357..1f7dce589f7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -105,7 +105,7 @@ class SsaSourceVariable extends TSsaSourceVariable { SsaSourceVariable getQualifier() { this = TQualifiedField(_, result, _) } /** Gets an SSA variable that has this variable as its underlying source variable. */ - SsaVariable getAnSsaVariable() { result.getSourceVariable() = this } + SsaDefinition getAnSsaVariable() { result.getSourceVariable() = this } } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 28f7b300d32..1a60b1c7966 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -510,7 +510,7 @@ private module Cached { /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ cached - predicate captures(SsaImplicitEntryDefinition init, SsaVariable capturedvar) { + predicate captures(SsaImplicitEntryDefinition init, SsaDefinition capturedvar) { exists(BasicBlock bb, int i | Ssa::ssaDefReachesUncertainRead(_, capturedvar, bb, i) and variableCapture(capturedvar.getSourceVariable(), init.getSourceVariable(), bb, i) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index 554ad6a9348..4a418160477 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -17,7 +17,7 @@ module Private { class Guard = G::Guards_v2::Guard; - class SsaVariable = Ssa::SsaVariable; + class SsaVariable = Ssa::SsaDefinition; class SsaPhiNode = Ssa::SsaPhiDefinition; diff --git a/java/ql/test/library-tests/ssa/ssaDef.ql b/java/ql/test/library-tests/ssa/ssaDef.ql index c487c539e78..a0702d58e0b 100644 --- a/java/ql/test/library-tests/ssa/ssaDef.ql +++ b/java/ql/test/library-tests/ssa/ssaDef.ql @@ -1,7 +1,7 @@ import java import semmle.code.java.dataflow.SSA -from SsaVariable ssa, SsaSourceVariable v, string s +from SsaDefinition ssa, SsaSourceVariable v, string s where ssa.getSourceVariable() = v and ( @@ -9,4 +9,4 @@ where or not exists(ssa.toString()) and s = "error" ) -select v, ssa.getCfgNode(), s +select v, ssa.getControlFlowNode(), s From ee5d65eba17aa3fc597fbabbc1ac49da47d0a52b Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 11:12:43 +0100 Subject: [PATCH 710/965] Java: Update toString for implicit writes. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 69 +++++++++++++++---- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 1f7dce589f7..68887cc2b80 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -157,6 +157,29 @@ class SsaCapturedDefinition extends SsaImplicitEntryDefinition { } } +/** + * An SSA definition representing the potential definition of a variable + * via a call. + */ +class SsaImplicitCallDefinition extends SsaImplicitWrite { + SsaImplicitCallDefinition() { isNonLocal(this) and not hasQualifierUpdate(this) } + + override string toString() { result = "SSA call def(" + this.getSourceVariable() + ")" } + + /** + * Gets a reachable `FieldWrite` that might represent this ssa update, if any. + */ + overlay[global] + FieldWrite getANonLocalUpdate() { result = getANonLocalUpdate(this) } +} + +/** An SSA definition due to an update of the qualifier. */ +class SsaImplicitQualifierDefinition extends SsaImplicitWrite { + SsaImplicitQualifierDefinition() { hasQualifierUpdate(this) } + + override string toString() { result = "SSA qualifier def(" + this.getSourceVariable() + ")" } +} + /** * Gets an access of the SSA source variable underlying this SSA variable * that can be reached from this SSA variable without passing through any @@ -299,47 +322,65 @@ class SsaImplicitUpdate extends SsaUpdate { private string getKind() { this.hasExplicitQualifierUpdate() and - result = "explicit qualifier" + result = "explicit qualifier" // -> SSA qualifier def or if this.hasImplicitQualifierUpdate() then if isNonLocal(this) - then result = "nonlocal + nonlocal qualifier" - else result = "nonlocal qualifier" + then result = "nonlocal + nonlocal qualifier" // -> SSA qualifier def + else result = "nonlocal qualifier" // -> SSA qualifier def else ( - isNonLocal(this) and result = "nonlocal" + isNonLocal(this) and result = "nonlocal" // -> SSA call def ) } /** + * DEPRECATED: Use `SsaImplicitCallDefinition.getANonLocalUpdate()` instead. + * * Gets a reachable `FieldWrite` that might represent this ssa update, if any. */ overlay[global] - FieldWrite getANonLocalUpdate() { - exists(SsaSourceField f, Callable setter | - relevantFieldUpdate(setter, f.getField(), result) and - defUpdatesNamedField(this, f, setter) - ) - } + deprecated FieldWrite getANonLocalUpdate() { result = getANonLocalUpdate(this) } /** + * DEPRECATED: Use `SsaImplicitQualifierDefinition` instead. + * * Holds if this ssa variable might change the value to something unknown. * * Examples include updates that might change the value of the qualifier, or * reads from untracked variables, for example those where the field or one * of its qualifiers is volatile. */ - predicate assignsUnknownValue() { + deprecated predicate assignsUnknownValue() { this.hasExplicitQualifierUpdate() or this.hasImplicitQualifierUpdate() } } -overlay[global] -private predicate isNonLocalImpl(SsaImplicitUpdate su) { exists(su.getANonLocalUpdate()) } +private predicate hasQualifierUpdate(SsaImplicitWrite def) { + exists(SsaWriteDefinition qdef, BasicBlock bb, int i | + qdef.definesAt(def.getSourceVariable().getQualifier(), bb, i) and + def.definesAt(_, bb, i) and + not qdef instanceof SsaImplicitEntryDefinition + ) +} -private predicate isNonLocal(SsaImplicitUpdate su) = forceLocal(isNonLocalImpl/1)(su) +/** + * Gets a reachable `FieldWrite` that might represent this ssa update, if any. + */ +overlay[global] +private FieldWrite getANonLocalUpdate(SsaImplicitWrite calldef) { + exists(SsaSourceField f, Callable setter | + relevantFieldUpdate(setter, f.getField(), result) and + defUpdatesNamedField(calldef, f, setter) + ) +} + +overlay[global] +private predicate isNonLocalImpl(SsaImplicitWrite calldef) { exists(getANonLocalUpdate(calldef)) } + +private predicate isNonLocal(SsaImplicitWrite calldef) = forceLocal(isNonLocalImpl/1)(calldef) /** * An SSA variable that represents an uncertain implicit update of the value. From 5849d85f1f5263ceb5445dc08309a298a1a67f0e Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 11:24:20 +0100 Subject: [PATCH 711/965] Java: Deprecate two more SSA classes. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 12 +++++++++--- .../semmle/code/java/dataflow/internal/SsaImpl.qll | 10 +++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 68887cc2b80..233b083a4eb 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -293,12 +293,14 @@ class SsaExplicitUpdate extends SsaUpdate { } /** + * DEPRECATED: Use `SsaImplicitWrite` instead. + * * An SSA variable that represents any sort of implicit update. This can be a * `Call` that might reach a non-local update of the field, an explicit or * implicit update of the qualifier of the field, or the implicit update that * occurs just prior to a `FieldRead` of an untracked field. */ -class SsaImplicitUpdate extends SsaUpdate { +deprecated class SsaImplicitUpdate extends SsaUpdate { SsaImplicitUpdate() { not this instanceof SsaExplicitUpdate } override string toString() { @@ -383,18 +385,22 @@ private predicate isNonLocalImpl(SsaImplicitWrite calldef) { exists(getANonLocal private predicate isNonLocal(SsaImplicitWrite calldef) = forceLocal(isNonLocalImpl/1)(calldef) /** + * DEPRECATED: Use `SsaUncertainWrite` instead. + * * An SSA variable that represents an uncertain implicit update of the value. * This is a `Call` that might reach a non-local update of the field or one of * its qualifiers. */ -class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { +deprecated class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { SsaUncertainImplicitUpdate() { ssaUncertainImplicitUpdate(this) } /** + * DEPRECATED: Use `getPriorDefinition()` instead. + * * Gets the immediately preceding definition. Since this update is uncertain * the value from the preceding definition might still be valid. */ - SsaVariable getPriorDef() { ssaDefReachesUncertainDef(result, this) } + deprecated SsaVariable getPriorDef() { ssaDefReachesUncertainDef(result, this) } } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 1a60b1c7966..34bb39a8509 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -486,13 +486,13 @@ private module Cached { overlay[global] cached - predicate defUpdatesNamedField(SsaImplicitUpdate def, TrackedField f, Callable setter) { + predicate defUpdatesNamedField(SsaImplicitWrite def, TrackedField f, Callable setter) { f = def.getSourceVariable() and - updatesNamedField0(def.getCfgNode().asCall(), f, setter) + updatesNamedField0(def.getControlFlowNode().asCall(), f, setter) } cached - predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { + deprecated predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { exists(SsaSourceVariable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and uncertainVariableUpdate(v, _, bb, i) @@ -522,7 +522,7 @@ private module Cached { * SSA definition of `v`. */ cached - predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { + deprecated predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { Impl::uncertainWriteDefinitionInput(redef, def) } @@ -671,7 +671,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu predicate ssaDefHasSource(WriteDefinition def) { def instanceof SsaExplicitWrite } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { - def instanceof SsaUncertainImplicitUpdate + def instanceof SsaUncertainWrite } class GuardValue = Guards::GuardValue; From 95ac61df42be5d5b18a479cd216f07d990d84011 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 27 Oct 2025 12:50:11 +0100 Subject: [PATCH 712/965] Java: Drop caching of deprecated predicates. --- .../code/java/dataflow/internal/SsaImpl.qll | 109 ++++++++---------- 1 file changed, 51 insertions(+), 58 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 34bb39a8509..21843f3e93b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -244,6 +244,53 @@ final class UncertainWriteDefinition = Impl::UncertainWriteDefinition; final class PhiNode = Impl::PhiNode; +predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and + getDestVar(upd) = def.getSourceVariable() + ) +} + +deprecated predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + uncertainVariableUpdate(v, _, bb, i) + ) +} + +predicate ssaImplicitInit(WriteDefinition def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + def.definesAt(v, bb, i) and + hasEntryDef(v, bb) and + i = -1 + ) +} + +/** + * Holds if the SSA definition of `v` at `def` reaches `redef` without crossing another + * SSA definition of `v`. + */ +deprecated predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { + Impl::uncertainWriteDefinitionInput(redef, def) +} + +VarRead getAUse(Definition def) { + exists(SsaSourceVariable v, BasicBlock bb, int i | + Impl::ssaDefReachesRead(v, def, bb, i) and + result.getControlFlowNode() = bb.getNode(i) and + result = v.getAnAccess() + ) +} + +predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { + Impl::ssaDefReachesEndOfBlock(bb, def, _) +} + +deprecated predicate phiHasInputFromBlock(PhiNode phi, Definition inp, BasicBlock bb) { + Impl::phiHasInputFromBlock(phi, inp, bb) +} + cached private module Cached { /** Gets the destination variable of an update of a tracked variable. */ @@ -258,15 +305,6 @@ private module Cached { result.getAnAccess() = upd.(UnaryAssignExpr).getExpr() } - cached - predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and - getDestVar(upd) = def.getSourceVariable() - ) - } - /* * The SSA construction for a field `f` relies on implicit update nodes at * every call site that conceivably could reach an update of the field. @@ -486,26 +524,9 @@ private module Cached { overlay[global] cached - predicate defUpdatesNamedField(SsaImplicitWrite def, TrackedField f, Callable setter) { - f = def.getSourceVariable() and - updatesNamedField0(def.getControlFlowNode().asCall(), f, setter) - } - - cached - deprecated predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - uncertainVariableUpdate(v, _, bb, i) - ) - } - - cached - predicate ssaImplicitInit(WriteDefinition def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - def.definesAt(v, bb, i) and - hasEntryDef(v, bb) and - i = -1 - ) + predicate defUpdatesNamedField(SsaImplicitWrite calldef, TrackedField f, Callable setter) { + f = calldef.getSourceVariable() and + updatesNamedField0(calldef.getControlFlowNode().asCall(), f, setter) } /** Holds if `init` is a closure variable that captures the value of `capturedvar`. */ @@ -517,15 +538,6 @@ private module Cached { ) } - /** - * Holds if the SSA definition of `v` at `def` reaches `redef` without crossing another - * SSA definition of `v`. - */ - cached - deprecated predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainImplicitUpdate redef) { - Impl::uncertainWriteDefinitionInput(redef, def) - } - /** * Holds if the value defined at `def` can reach `use` without passing through * any other uses, but possibly through phi nodes and uncertain implicit updates. @@ -538,25 +550,6 @@ private module Cached { ) } - cached - VarRead getAUse(Definition def) { - exists(SsaSourceVariable v, BasicBlock bb, int i | - Impl::ssaDefReachesRead(v, def, bb, i) and - result.getControlFlowNode() = bb.getNode(i) and - result = v.getAnAccess() - ) - } - - cached - predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { - Impl::ssaDefReachesEndOfBlock(bb, def, _) - } - - cached - predicate phiHasInputFromBlock(PhiNode phi, Definition inp, BasicBlock bb) { - Impl::phiHasInputFromBlock(phi, inp, bb) - } - cached module DataFlowIntegration { import DataFlowIntegrationImpl @@ -666,7 +659,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } } - Expr getARead(Definition def) { result = getAUse(def) } + Expr getARead(Definition def) { result = def.(SsaDefinition).getARead() } predicate ssaDefHasSource(WriteDefinition def) { def instanceof SsaExplicitWrite } From e059ded1339b7f100a94e9b8ad20a0ba26bcdc7b Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 6 Nov 2025 15:31:06 +0100 Subject: [PATCH 713/965] Java: Accept toString changes in qltest. --- .../modulus-analysis/ModulusAnalysis.expected | 58 ++-- .../range-analysis/RangeAnalysis.expected | 304 +++++++++--------- .../test/library-tests/ssa/captures.expected | 18 +- .../test/library-tests/ssa/firstUse.expected | 66 ++-- .../ql/test/library-tests/ssa/ssaDef.expected | 66 ++-- .../ql/test/library-tests/ssa/ssaUse.expected | 66 ++-- 6 files changed, 289 insertions(+), 289 deletions(-) diff --git a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected index 953283d79db..45430971424 100644 --- a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected +++ b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected @@ -4,17 +4,17 @@ | ModulusAnalysis.java:4:5:4:22 | ...=... | 0 | 43 | 0 | | ModulusAnalysis.java:4:5:4:22 | c2 | 0 | 43 | 0 | | ModulusAnalysis.java:4:20:4:21 | 43 | 0 | 43 | 0 | -| ModulusAnalysis.java:7:13:7:22 | eq | SSA init(i) | 3 | 0 | -| ModulusAnalysis.java:7:18:7:18 | i | SSA init(i) | 0 | 0 | -| ModulusAnalysis.java:7:18:7:22 | ... + ... | SSA init(i) | 3 | 0 | +| ModulusAnalysis.java:7:13:7:22 | eq | SSA param(i) | 3 | 0 | +| ModulusAnalysis.java:7:18:7:18 | i | SSA param(i) | 0 | 0 | +| ModulusAnalysis.java:7:18:7:22 | ... + ... | SSA param(i) | 3 | 0 | | ModulusAnalysis.java:7:22:7:22 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:9:13:9:29 | mul | 0 | 3 | 42 | | ModulusAnalysis.java:9:19:9:20 | eq | SSA def(eq) | 0 | 0 | -| ModulusAnalysis.java:9:19:9:20 | eq | SSA init(i) | 3 | 0 | +| ModulusAnalysis.java:9:19:9:20 | eq | SSA param(i) | 3 | 0 | | ModulusAnalysis.java:9:19:9:25 | ... * ... | 0 | 0 | 42 | | ModulusAnalysis.java:9:19:9:29 | ... + ... | 0 | 3 | 42 | | ModulusAnalysis.java:9:24:9:25 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:9:24:9:25 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:9:24:9:25 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:9:29:9:29 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:11:13:11:21 | seven | 0 | 7 | 0 | | ModulusAnalysis.java:11:21:11:21 | 7 | 0 | 7 | 0 | @@ -29,47 +29,47 @@ | ModulusAnalysis.java:13:32:13:34 | mul | SSA def(mul) | 0 | 0 | | ModulusAnalysis.java:16:13:18:23 | j | 0 | 3 | 4 | | ModulusAnalysis.java:16:17:18:23 | ...?...:... | 0 | 3 | 4 | -| ModulusAnalysis.java:17:15:17:15 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:17:15:17:15 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:17:15:17:19 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:17:15:17:23 | ... + ... | 0 | 3 | 4 | | ModulusAnalysis.java:17:19:17:19 | 4 | 0 | 4 | 0 | | ModulusAnalysis.java:17:23:17:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:18:15:18:15 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:18:15:18:15 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:18:15:18:19 | ... * ... | 0 | 0 | 8 | | ModulusAnalysis.java:18:15:18:23 | ... + ... | 0 | 7 | 8 | | ModulusAnalysis.java:18:19:18:19 | 8 | 0 | 8 | 0 | | ModulusAnalysis.java:18:23:18:23 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:19:28:19:28 | j | 0 | 3 | 4 | | ModulusAnalysis.java:19:28:19:28 | j | SSA def(j) | 0 | 0 | -| ModulusAnalysis.java:21:13:21:13 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:21:13:21:13 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:21:17:21:18 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:21:17:21:18 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:21:17:21:18 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:21:23:21:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:21:28:21:28 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:21:28:21:28 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:21:32:21:33 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:21:32:21:33 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:21:32:21:33 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:21:38:21:38 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:22:32:22:32 | x | 0 | 3 | 42 | -| ModulusAnalysis.java:22:32:22:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:22:32:22:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:22:32:22:36 | ... + ... | 0 | 10 | 42 | -| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA init(x) | 7 | 42 | -| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA init(y) | 3 | 42 | +| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA param(x) | 7 | 42 | +| ModulusAnalysis.java:22:32:22:36 | ... + ... | SSA param(y) | 3 | 42 | | ModulusAnalysis.java:22:36:22:36 | y | 0 | 7 | 42 | -| ModulusAnalysis.java:22:36:22:36 | y | SSA init(y) | 0 | 0 | -| ModulusAnalysis.java:25:13:25:13 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:22:36:22:36 | y | SSA param(y) | 0 | 0 | +| ModulusAnalysis.java:25:13:25:13 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:25:17:25:18 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:25:17:25:18 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:25:17:25:18 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:25:23:25:23 | 3 | 0 | 3 | 0 | -| ModulusAnalysis.java:25:28:25:28 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:25:28:25:28 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:25:32:25:33 | c1 | 0 | 42 | 0 | -| ModulusAnalysis.java:25:32:25:33 | c1 | SSA init(this.c1) | 0 | 0 | +| ModulusAnalysis.java:25:32:25:33 | c1 | SSA entry def(this.c1) | 0 | 0 | | ModulusAnalysis.java:25:38:25:38 | 7 | 0 | 7 | 0 | | ModulusAnalysis.java:26:32:26:32 | x | 0 | 3 | 42 | -| ModulusAnalysis.java:26:32:26:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:26:32:26:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:26:32:26:36 | ... - ... | 0 | 38 | 42 | -| ModulusAnalysis.java:26:32:26:36 | ... - ... | SSA init(x) | 35 | 42 | +| ModulusAnalysis.java:26:32:26:36 | ... - ... | SSA param(x) | 35 | 42 | | ModulusAnalysis.java:26:36:26:36 | y | 0 | 7 | 42 | -| ModulusAnalysis.java:26:36:26:36 | y | SSA init(y) | 0 | 0 | +| ModulusAnalysis.java:26:36:26:36 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:29:13:29:35 | l | 0 | 1 | 4 | | ModulusAnalysis.java:29:17:29:26 | arr.length | SSA impl upd[untracked](arr.length) | 0 | 0 | | ModulusAnalysis.java:29:17:29:30 | ... * ... | 0 | 0 | 4 | @@ -87,13 +87,13 @@ | ModulusAnalysis.java:33:28:33:28 | l | 0 | 1 | 4 | | ModulusAnalysis.java:33:28:33:28 | l | SSA def(l) | 0 | 0 | | ModulusAnalysis.java:36:13:36:25 | ...=... | 0 | 3 | 4 | -| ModulusAnalysis.java:36:17:36:17 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:36:17:36:17 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:36:17:36:21 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:36:17:36:25 | ... + ... | 0 | 3 | 4 | | ModulusAnalysis.java:36:21:36:21 | 4 | 0 | 4 | 0 | | ModulusAnalysis.java:36:25:36:25 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:39:13:39:25 | ...=... | 0 | 7 | 8 | -| ModulusAnalysis.java:39:17:39:17 | i | SSA init(i) | 0 | 0 | +| ModulusAnalysis.java:39:17:39:17 | i | SSA param(i) | 0 | 0 | | ModulusAnalysis.java:39:17:39:21 | ... * ... | 0 | 0 | 8 | | ModulusAnalysis.java:39:17:39:25 | ... + ... | 0 | 7 | 8 | | ModulusAnalysis.java:39:21:39:21 | 8 | 0 | 8 | 0 | @@ -104,22 +104,22 @@ | ModulusAnalysis.java:44:32:44:32 | j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.java:46:32:46:32 | j | 0 | 3 | 4 | | ModulusAnalysis.java:46:32:46:32 | j | SSA phi(j) | 0 | 0 | -| ModulusAnalysis.java:49:14:49:14 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:49:14:49:14 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:49:18:49:19 | 15 | 0 | 15 | 0 | | ModulusAnalysis.java:49:25:49:25 | 3 | 0 | 3 | 0 | | ModulusAnalysis.java:50:32:50:32 | x | 0 | 3 | 16 | -| ModulusAnalysis.java:50:32:50:32 | x | SSA init(x) | 0 | 0 | +| ModulusAnalysis.java:50:32:50:32 | x | SSA param(x) | 0 | 0 | | ModulusAnalysis.java:56:18:56:22 | i | 0 | 0 | 0 | | ModulusAnalysis.java:56:22:56:22 | 0 | 0 | 0 | 0 | | ModulusAnalysis.java:56:25:56:25 | i | SSA phi(i) | 0 | 0 | -| ModulusAnalysis.java:56:29:56:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:56:29:56:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:56:34:56:34 | i | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:56:34:56:36 | ...++ | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:57:32:57:32 | i | SSA phi(i) | 0 | 0 | | ModulusAnalysis.java:59:18:59:22 | j | 0 | 0 | 0 | | ModulusAnalysis.java:59:22:59:22 | 0 | 0 | 0 | 0 | | ModulusAnalysis.java:59:25:59:25 | j | SSA phi(j) | 0 | 0 | -| ModulusAnalysis.java:59:29:59:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:59:29:59:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:59:34:59:34 | j | SSA phi(j) | 0 | 0 | | ModulusAnalysis.java:59:34:59:39 | ...+=... | SSA phi(j) | 1 | 0 | | ModulusAnalysis.java:59:39:59:39 | 1 | 0 | 1 | 0 | @@ -129,7 +129,7 @@ | ModulusAnalysis.java:62:25:62:25 | k | 0 | 0 | 3 | | ModulusAnalysis.java:62:25:62:25 | k | SSA def(k) | 0 | 3 | | ModulusAnalysis.java:62:25:62:25 | k | SSA phi(k) | 0 | 0 | -| ModulusAnalysis.java:62:29:62:31 | cap | SSA init(cap) | 0 | 0 | +| ModulusAnalysis.java:62:29:62:31 | cap | SSA param(cap) | 0 | 0 | | ModulusAnalysis.java:62:34:62:34 | k | 0 | 0 | 3 | | ModulusAnalysis.java:62:34:62:34 | k | SSA def(k) | 0 | 3 | | ModulusAnalysis.java:62:34:62:34 | k | SSA phi(k) | 0 | 0 | diff --git a/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected b/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected index 6b9d75a8bc7..2648fd92686 100644 --- a/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected +++ b/java/ql/test/library-tests/dataflow/range-analysis/RangeAnalysis.expected @@ -1,232 +1,232 @@ -| A.java:3:9:3:9 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:3:9:3:9 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:3:9:3:9 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:3:9:3:9 | x | SSA param(x) | 0 | upper | NoReason | | A.java:3:13:3:15 | 500 | 0 | 500 | lower | NoReason | | A.java:3:13:3:15 | 500 | 0 | 500 | upper | NoReason | | A.java:4:11:4:11 | x | 0 | 499 | upper | ... < ... | -| A.java:4:11:4:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:4:11:4:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:4:11:4:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:4:11:4:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:4:15:4:17 | 400 | 0 | 400 | lower | NoReason | | A.java:4:15:4:17 | 400 | 0 | 400 | upper | NoReason | | A.java:5:16:5:16 | x | 0 | 401 | lower | ... > ... | | A.java:5:16:5:16 | x | 0 | 499 | upper | ... < ... | -| A.java:5:16:5:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:5:16:5:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:8:11:8:11 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:8:11:8:11 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:8:11:8:15 | ... - ... | SSA init(y) | -2 | lower | NoReason | -| A.java:8:11:8:15 | ... - ... | SSA init(y) | -2 | upper | NoReason | +| A.java:5:16:5:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:5:16:5:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:8:11:8:11 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:8:11:8:11 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:8:11:8:15 | ... - ... | SSA param(y) | -2 | lower | NoReason | +| A.java:8:11:8:15 | ... - ... | SSA param(y) | -2 | upper | NoReason | | A.java:8:15:8:15 | 2 | 0 | 2 | lower | NoReason | | A.java:8:15:8:15 | 2 | 0 | 2 | upper | NoReason | | A.java:8:20:8:20 | x | 0 | 400 | upper | ... > ... | -| A.java:8:20:8:20 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:8:20:8:20 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:8:20:8:20 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:8:20:8:20 | x | SSA param(x) | 0 | upper | NoReason | | A.java:8:25:8:25 | y | 0 | 402 | upper | ... == ... | -| A.java:8:25:8:25 | y | SSA init(x) | 2 | lower | ... == ... | -| A.java:8:25:8:25 | y | SSA init(x) | 2 | upper | ... == ... | -| A.java:8:25:8:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:8:25:8:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:8:25:8:25 | y | SSA param(x) | 2 | lower | ... == ... | +| A.java:8:25:8:25 | y | SSA param(x) | 2 | upper | ... == ... | +| A.java:8:25:8:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:8:25:8:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:8:29:8:31 | 300 | 0 | 300 | lower | NoReason | | A.java:8:29:8:31 | 300 | 0 | 300 | upper | NoReason | | A.java:9:16:9:16 | x | 0 | 299 | lower | ... > ... | | A.java:9:16:9:16 | x | 0 | 400 | upper | ... > ... | -| A.java:9:16:9:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:9:16:9:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:9:16:9:16 | x | SSA init(y) | -2 | lower | ... == ... | -| A.java:9:16:9:16 | x | SSA init(y) | -2 | upper | ... == ... | +| A.java:9:16:9:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:9:16:9:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:9:16:9:16 | x | SSA param(y) | -2 | lower | ... == ... | +| A.java:9:16:9:16 | x | SSA param(y) | -2 | upper | ... == ... | | A.java:9:16:9:20 | ... + ... | 0 | 600 | lower | ... > ... | | A.java:9:16:9:20 | ... + ... | 0 | 802 | upper | ... == ... | | A.java:9:16:9:20 | ... + ... | 0 | 802 | upper | ... > ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 301 | lower | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 301 | lower | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 402 | upper | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(x) | 402 | upper | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 299 | lower | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 299 | lower | NoReason | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 400 | upper | ... == ... | -| A.java:9:16:9:20 | ... + ... | SSA init(y) | 400 | upper | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 301 | lower | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 301 | lower | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 402 | upper | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(x) | 402 | upper | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 299 | lower | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 299 | lower | NoReason | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 400 | upper | ... == ... | +| A.java:9:16:9:20 | ... + ... | SSA param(y) | 400 | upper | NoReason | | A.java:9:20:9:20 | y | 0 | 301 | lower | ... > ... | | A.java:9:20:9:20 | y | 0 | 402 | upper | ... == ... | -| A.java:9:20:9:20 | y | SSA init(x) | 2 | lower | ... == ... | -| A.java:9:20:9:20 | y | SSA init(x) | 2 | upper | ... == ... | -| A.java:9:20:9:20 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:9:20:9:20 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:9:20:9:20 | y | SSA param(x) | 2 | lower | ... == ... | +| A.java:9:20:9:20 | y | SSA param(x) | 2 | upper | ... == ... | +| A.java:9:20:9:20 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:9:20:9:20 | y | SSA param(y) | 0 | upper | NoReason | | A.java:12:11:12:11 | x | 0 | 400 | upper | ... > ... | -| A.java:12:11:12:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:12:11:12:11 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:12:16:12:16 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:12:16:12:16 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:12:16:12:20 | ... + ... | SSA init(y) | 1 | lower | NoReason | -| A.java:12:16:12:20 | ... + ... | SSA init(y) | 1 | upper | NoReason | +| A.java:12:11:12:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:12:11:12:11 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:12:16:12:16 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:12:16:12:16 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:12:16:12:20 | ... + ... | SSA param(y) | 1 | lower | NoReason | +| A.java:12:16:12:20 | ... + ... | SSA param(y) | 1 | upper | NoReason | | A.java:12:20:12:20 | 1 | 0 | 1 | lower | NoReason | | A.java:12:20:12:20 | 1 | 0 | 1 | upper | NoReason | -| A.java:13:13:13:23 | sum | SSA init(y) | 400 | upper | NoReason | +| A.java:13:13:13:23 | sum | SSA param(y) | 400 | upper | NoReason | | A.java:13:19:13:19 | x | 0 | 400 | upper | ... > ... | -| A.java:13:19:13:19 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:13:19:13:19 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:13:19:13:23 | ... + ... | SSA init(y) | 400 | upper | NoReason | -| A.java:13:23:13:23 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:13:23:13:23 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:13:19:13:19 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:13:19:13:19 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:13:19:13:23 | ... + ... | SSA param(y) | 400 | upper | NoReason | +| A.java:13:23:13:23 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:13:23:13:23 | y | SSA param(y) | 0 | upper | NoReason | | A.java:15:13:15:13 | y | 0 | 399 | upper | ... != ... | -| A.java:15:13:15:13 | y | SSA init(x) | -1 | lower | ... != ... | -| A.java:15:13:15:13 | y | SSA init(x) | -1 | upper | ... != ... | -| A.java:15:13:15:13 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:15:13:15:13 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:15:13:15:13 | y | SSA param(x) | -1 | lower | ... != ... | +| A.java:15:13:15:13 | y | SSA param(x) | -1 | upper | ... != ... | +| A.java:15:13:15:13 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:15:13:15:13 | y | SSA param(y) | 0 | upper | NoReason | | A.java:15:17:15:19 | 300 | 0 | 300 | lower | NoReason | | A.java:15:17:15:19 | 300 | 0 | 300 | upper | NoReason | | A.java:16:15:16:25 | sum | 0 | 603 | lower | ... > ... | | A.java:16:15:16:25 | sum | 0 | 799 | upper | ... != ... | | A.java:16:15:16:25 | sum | 0 | 799 | upper | ... > ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 301 | lower | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 301 | lower | NoReason | -| A.java:16:15:16:25 | sum | SSA init(x) | 399 | upper | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(x) | 399 | upper | NoReason | -| A.java:16:15:16:25 | sum | SSA init(y) | 302 | lower | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(y) | 302 | lower | NoReason | -| A.java:16:15:16:25 | sum | SSA init(y) | 400 | upper | ... != ... | -| A.java:16:15:16:25 | sum | SSA init(y) | 400 | upper | NoReason | +| A.java:16:15:16:25 | sum | SSA param(x) | 301 | lower | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(x) | 301 | lower | NoReason | +| A.java:16:15:16:25 | sum | SSA param(x) | 399 | upper | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(x) | 399 | upper | NoReason | +| A.java:16:15:16:25 | sum | SSA param(y) | 302 | lower | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(y) | 302 | lower | NoReason | +| A.java:16:15:16:25 | sum | SSA param(y) | 400 | upper | ... != ... | +| A.java:16:15:16:25 | sum | SSA param(y) | 400 | upper | NoReason | | A.java:16:21:16:21 | x | 0 | 302 | lower | ... > ... | | A.java:16:21:16:21 | x | 0 | 400 | upper | ... > ... | -| A.java:16:21:16:21 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:16:21:16:21 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:16:21:16:21 | x | SSA init(y) | 1 | lower | ... != ... | -| A.java:16:21:16:21 | x | SSA init(y) | 1 | upper | ... != ... | +| A.java:16:21:16:21 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:16:21:16:21 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:16:21:16:21 | x | SSA param(y) | 1 | lower | ... != ... | +| A.java:16:21:16:21 | x | SSA param(y) | 1 | upper | ... != ... | | A.java:16:21:16:25 | ... + ... | 0 | 603 | lower | ... > ... | | A.java:16:21:16:25 | ... + ... | 0 | 799 | upper | ... != ... | | A.java:16:21:16:25 | ... + ... | 0 | 799 | upper | ... > ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 301 | lower | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 301 | lower | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 399 | upper | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(x) | 399 | upper | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 302 | lower | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 302 | lower | NoReason | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 400 | upper | ... != ... | -| A.java:16:21:16:25 | ... + ... | SSA init(y) | 400 | upper | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 301 | lower | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 301 | lower | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 399 | upper | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(x) | 399 | upper | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 302 | lower | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 302 | lower | NoReason | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 400 | upper | ... != ... | +| A.java:16:21:16:25 | ... + ... | SSA param(y) | 400 | upper | NoReason | | A.java:16:25:16:25 | y | 0 | 301 | lower | ... > ... | | A.java:16:25:16:25 | y | 0 | 399 | upper | ... != ... | -| A.java:16:25:16:25 | y | SSA init(x) | -1 | lower | ... != ... | -| A.java:16:25:16:25 | y | SSA init(x) | -1 | upper | ... != ... | -| A.java:16:25:16:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:16:25:16:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:16:25:16:25 | y | SSA param(x) | -1 | lower | ... != ... | +| A.java:16:25:16:25 | y | SSA param(x) | -1 | upper | ... != ... | +| A.java:16:25:16:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:16:25:16:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:20:11:20:11 | x | 0 | 400 | upper | ... > ... | -| A.java:20:11:20:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:20:11:20:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:20:11:20:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:20:11:20:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:20:15:20:17 | 500 | 0 | 500 | lower | NoReason | | A.java:20:15:20:17 | 500 | 0 | 500 | upper | NoReason | | A.java:21:16:21:16 | x | 0 | 400 | upper | ... > ... | | A.java:21:16:21:16 | x | 0 | 501 | lower | ... > ... | -| A.java:21:16:21:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:21:16:21:16 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:21:16:21:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:21:16:21:16 | x | SSA param(x) | 0 | upper | NoReason | | A.java:25:12:25:12 | 0 | 0 | 0 | lower | NoReason | | A.java:25:12:25:12 | 0 | 0 | 0 | upper | NoReason | -| A.java:29:9:29:9 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:29:9:29:9 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:29:9:29:9 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:29:9:29:9 | x | SSA param(x) | 0 | upper | NoReason | | A.java:29:13:29:15 | 500 | 0 | 500 | lower | NoReason | | A.java:29:13:29:15 | 500 | 0 | 500 | upper | NoReason | | A.java:30:11:30:11 | x | 0 | 499 | upper | ... < ... | -| A.java:30:11:30:11 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:30:11:30:11 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:30:11:30:11 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:30:11:30:11 | x | SSA param(x) | 0 | upper | NoReason | | A.java:30:15:30:17 | 400 | 0 | 400 | lower | NoReason | | A.java:30:15:30:17 | 400 | 0 | 400 | upper | NoReason | | A.java:31:16:31:16 | x | 0 | 401 | lower | ... > ... | | A.java:31:16:31:16 | x | 0 | 499 | upper | ... < ... | -| A.java:31:16:31:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:31:16:31:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:34:11:34:11 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:11:34:11 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:31:16:31:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:31:16:31:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:34:11:34:11 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:11:34:11 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:16:34:16 | x | 0 | 400 | upper | ... > ... | -| A.java:34:16:34:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:34:16:34:16 | x | SSA init(x) | 0 | upper | NoReason | +| A.java:34:16:34:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:34:16:34:16 | x | SSA param(x) | 0 | upper | NoReason | | A.java:34:16:34:20 | ... - ... | 0 | 399 | upper | ... > ... | -| A.java:34:16:34:20 | ... - ... | SSA init(x) | -1 | lower | NoReason | -| A.java:34:16:34:20 | ... - ... | SSA init(x) | -1 | upper | NoReason | +| A.java:34:16:34:20 | ... - ... | SSA param(x) | -1 | lower | NoReason | +| A.java:34:16:34:20 | ... - ... | SSA param(x) | -1 | upper | NoReason | | A.java:34:20:34:20 | 1 | 0 | 1 | lower | NoReason | | A.java:34:20:34:20 | 1 | 0 | 1 | upper | NoReason | | A.java:34:25:34:25 | y | 0 | 399 | upper | ... == ... | -| A.java:34:25:34:25 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:34:25:34:25 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:34:25:34:25 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:25:34:25 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:34:25:34:25 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:34:25:34:25 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:34:25:34:25 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:25:34:25 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:29:34:31 | 300 | 0 | 300 | lower | NoReason | | A.java:34:29:34:31 | 300 | 0 | 300 | upper | NoReason | | A.java:34:36:34:36 | y | 0 | 301 | lower | ... > ... | | A.java:34:36:34:36 | y | 0 | 399 | upper | ... == ... | -| A.java:34:36:34:36 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:34:36:34:36 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:34:36:34:36 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:34:36:34:36 | y | SSA init(y) | 0 | upper | NoReason | +| A.java:34:36:34:36 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:34:36:34:36 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:34:36:34:36 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:34:36:34:36 | y | SSA param(y) | 0 | upper | NoReason | | A.java:34:36:34:40 | ... + ... | 0 | 303 | lower | ... > ... | | A.java:34:36:34:40 | ... + ... | 0 | 401 | upper | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(x) | 1 | lower | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(x) | 1 | upper | ... == ... | -| A.java:34:36:34:40 | ... + ... | SSA init(y) | 2 | lower | NoReason | -| A.java:34:36:34:40 | ... + ... | SSA init(y) | 2 | upper | NoReason | +| A.java:34:36:34:40 | ... + ... | SSA param(x) | 1 | lower | ... == ... | +| A.java:34:36:34:40 | ... + ... | SSA param(x) | 1 | upper | ... == ... | +| A.java:34:36:34:40 | ... + ... | SSA param(y) | 2 | lower | NoReason | +| A.java:34:36:34:40 | ... + ... | SSA param(y) | 2 | upper | NoReason | | A.java:34:40:34:40 | 2 | 0 | 2 | lower | NoReason | | A.java:34:40:34:40 | 2 | 0 | 2 | upper | NoReason | -| A.java:34:45:34:45 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:34:45:34:45 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:34:45:34:45 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:34:45:34:45 | z | SSA param(z) | 0 | upper | NoReason | | A.java:34:50:34:50 | z | 0 | 303 | lower | ... == ... | | A.java:34:50:34:50 | z | 0 | 401 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(x) | 1 | lower | ... == ... | -| A.java:34:50:34:50 | z | SSA init(x) | 1 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(y) | 2 | lower | ... == ... | -| A.java:34:50:34:50 | z | SSA init(y) | 2 | upper | ... == ... | -| A.java:34:50:34:50 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:34:50:34:50 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:34:50:34:50 | z | SSA param(x) | 1 | lower | ... == ... | +| A.java:34:50:34:50 | z | SSA param(x) | 1 | upper | ... == ... | +| A.java:34:50:34:50 | z | SSA param(y) | 2 | lower | ... == ... | +| A.java:34:50:34:50 | z | SSA param(y) | 2 | upper | ... == ... | +| A.java:34:50:34:50 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:34:50:34:50 | z | SSA param(z) | 0 | upper | NoReason | | A.java:34:55:34:57 | 350 | 0 | 350 | lower | NoReason | | A.java:34:55:34:57 | 350 | 0 | 350 | upper | NoReason | | A.java:35:16:35:16 | x | 0 | 349 | lower | ... == ... | | A.java:35:16:35:16 | x | 0 | 349 | upper | ... == ... | -| A.java:35:16:35:16 | x | SSA init(x) | 0 | lower | NoReason | -| A.java:35:16:35:16 | x | SSA init(x) | 0 | upper | NoReason | -| A.java:35:16:35:16 | x | SSA init(y) | 1 | lower | ... == ... | -| A.java:35:16:35:16 | x | SSA init(y) | 1 | upper | ... == ... | -| A.java:35:16:35:16 | x | SSA init(z) | -1 | lower | ... == ... | -| A.java:35:16:35:16 | x | SSA init(z) | -1 | upper | ... == ... | +| A.java:35:16:35:16 | x | SSA param(x) | 0 | lower | NoReason | +| A.java:35:16:35:16 | x | SSA param(x) | 0 | upper | NoReason | +| A.java:35:16:35:16 | x | SSA param(y) | 1 | lower | ... == ... | +| A.java:35:16:35:16 | x | SSA param(y) | 1 | upper | ... == ... | +| A.java:35:16:35:16 | x | SSA param(z) | -1 | lower | ... == ... | +| A.java:35:16:35:16 | x | SSA param(z) | -1 | upper | ... == ... | | A.java:35:16:35:20 | ... + ... | 0 | 697 | lower | ... == ... | | A.java:35:16:35:20 | ... + ... | 0 | 697 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | lower | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(x) | 348 | upper | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | lower | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | upper | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(y) | 349 | upper | NoReason | -| A.java:35:16:35:20 | ... + ... | SSA init(z) | 347 | lower | ... == ... | -| A.java:35:16:35:20 | ... + ... | SSA init(z) | 347 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | lower | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(x) | 348 | upper | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | lower | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | upper | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(y) | 349 | upper | NoReason | +| A.java:35:16:35:20 | ... + ... | SSA param(z) | 347 | lower | ... == ... | +| A.java:35:16:35:20 | ... + ... | SSA param(z) | 347 | upper | ... == ... | | A.java:35:16:35:24 | ... + ... | 0 | 1047 | lower | ... == ... | | A.java:35:16:35:24 | ... + ... | 0 | 1047 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(x) | 698 | upper | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(y) | 699 | upper | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | lower | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | lower | NoReason | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | upper | ... == ... | -| A.java:35:16:35:24 | ... + ... | SSA init(z) | 697 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(x) | 698 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(y) | 699 | upper | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | lower | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | lower | NoReason | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | upper | ... == ... | +| A.java:35:16:35:24 | ... + ... | SSA param(z) | 697 | upper | NoReason | | A.java:35:20:35:20 | y | 0 | 348 | lower | ... == ... | | A.java:35:20:35:20 | y | 0 | 348 | upper | ... == ... | -| A.java:35:20:35:20 | y | SSA init(x) | -1 | lower | ... == ... | -| A.java:35:20:35:20 | y | SSA init(x) | -1 | upper | ... == ... | -| A.java:35:20:35:20 | y | SSA init(y) | 0 | lower | NoReason | -| A.java:35:20:35:20 | y | SSA init(y) | 0 | upper | NoReason | -| A.java:35:20:35:20 | y | SSA init(z) | -2 | lower | ... == ... | -| A.java:35:20:35:20 | y | SSA init(z) | -2 | upper | ... == ... | +| A.java:35:20:35:20 | y | SSA param(x) | -1 | lower | ... == ... | +| A.java:35:20:35:20 | y | SSA param(x) | -1 | upper | ... == ... | +| A.java:35:20:35:20 | y | SSA param(y) | 0 | lower | NoReason | +| A.java:35:20:35:20 | y | SSA param(y) | 0 | upper | NoReason | +| A.java:35:20:35:20 | y | SSA param(z) | -2 | lower | ... == ... | +| A.java:35:20:35:20 | y | SSA param(z) | -2 | upper | ... == ... | | A.java:35:24:35:24 | z | 0 | 350 | lower | ... == ... | | A.java:35:24:35:24 | z | 0 | 350 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(x) | 1 | lower | ... == ... | -| A.java:35:24:35:24 | z | SSA init(x) | 1 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(y) | 2 | lower | ... == ... | -| A.java:35:24:35:24 | z | SSA init(y) | 2 | upper | ... == ... | -| A.java:35:24:35:24 | z | SSA init(z) | 0 | lower | NoReason | -| A.java:35:24:35:24 | z | SSA init(z) | 0 | upper | NoReason | +| A.java:35:24:35:24 | z | SSA param(x) | 1 | lower | ... == ... | +| A.java:35:24:35:24 | z | SSA param(x) | 1 | upper | ... == ... | +| A.java:35:24:35:24 | z | SSA param(y) | 2 | lower | ... == ... | +| A.java:35:24:35:24 | z | SSA param(y) | 2 | upper | ... == ... | +| A.java:35:24:35:24 | z | SSA param(z) | 0 | lower | NoReason | +| A.java:35:24:35:24 | z | SSA param(z) | 0 | upper | NoReason | | A.java:39:12:39:12 | 0 | 0 | 0 | lower | NoReason | | A.java:39:12:39:12 | 0 | 0 | 0 | upper | NoReason | diff --git a/java/ql/test/library-tests/ssa/captures.expected b/java/ql/test/library-tests/ssa/captures.expected index 2ec18f4880d..3d8b8e13602 100644 --- a/java/ql/test/library-tests/ssa/captures.expected +++ b/java/ql/test/library-tests/ssa/captures.expected @@ -1,9 +1,9 @@ -| Nested.java:8:29:8:57 | SSA init(next(..).p1) | Nested.java:4:34:10:3 | SSA init(p1) | -| Nested.java:8:29:8:57 | SSA init(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) | -| Nested.java:16:22:16:34 | SSA init(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | -| Nested.java:19:27:22:7 | SSA init(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) | -| Nested.java:19:27:22:7 | SSA init(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) | -| Nested.java:20:27:20:39 | SSA init(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | -| Nested.java:30:23:30:36 | SSA init(getInt(..).obj2) | Nested.java:30:5:30:37 | SSA phi(obj2) | -| Nested.java:37:20:37:25 | SSA init(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) | -| Nested.java:40:20:40:25 | SSA init(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) | +| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:4:34:10:3 | SSA param(p1) | +| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) | +| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) | +| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) | +| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:5:30:37 | SSA phi(obj2) | +| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) | +| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) | diff --git a/java/ql/test/library-tests/ssa/firstUse.expected b/java/ql/test/library-tests/ssa/firstUse.expected index 2d86e6ed117..4fd2a78bb89 100644 --- a/java/ql/test/library-tests/ssa/firstUse.expected +++ b/java/ql/test/library-tests/ssa/firstUse.expected @@ -1,43 +1,43 @@ -| Fields.java:12:19:21:3 | SSA init(this.xs) | Fields.java:13:15:13:16 | xs | -| Fields.java:14:5:14:9 | SSA impl upd[nonlocal](this.xs) | Fields.java:15:9:15:10 | xs | +| Fields.java:12:19:21:3 | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs | +| Fields.java:14:5:14:9 | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs | | Fields.java:15:5:15:10 | SSA def(x) | Fields.java:16:9:16:9 | x | -| Fields.java:17:7:17:11 | SSA impl upd[nonlocal](this.xs) | Fields.java:18:9:18:15 | this.xs | +| Fields.java:17:7:17:11 | SSA call def(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:18:5:18:16 | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:19:5:19:19 | SSA def(this.xs) | Fields.java:20:9:20:10 | xs | -| Fields.java:23:19:49:3 | SSA init(Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:23:19:49:3 | SSA init(this.xs) | Fields.java:26:15:26:16 | xs | +| Fields.java:23:19:49:3 | SSA entry def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:23:19:49:3 | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs | | Fields.java:24:12:24:27 | SSA def(f) | Fields.java:25:15:25:15 | f | -| Fields.java:24:12:24:27 | SSA impl upd[explicit qualifier](f.xs) | Fields.java:25:15:25:18 | f.xs | -| Fields.java:24:16:24:27 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:31:9:31:12 | stat | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](f.xs) | Fields.java:29:9:29:12 | f.xs | -| Fields.java:28:5:28:12 | SSA impl upd[nonlocal](this.xs) | Fields.java:30:9:30:10 | xs | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:35:9:35:12 | stat | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](f.xs) | Fields.java:33:9:33:12 | f.xs | -| Fields.java:32:5:32:9 | SSA impl upd[nonlocal](this.xs) | Fields.java:34:9:34:10 | xs | +| Fields.java:24:12:24:27 | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs | +| Fields.java:24:16:24:27 | SSA call def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:28:5:28:12 | SSA call def(Fields.stat) | Fields.java:31:9:31:12 | stat | +| Fields.java:28:5:28:12 | SSA call def(f.xs) | Fields.java:29:9:29:12 | f.xs | +| Fields.java:28:5:28:12 | SSA call def(this.xs) | Fields.java:30:9:30:10 | xs | +| Fields.java:32:5:32:9 | SSA call def(Fields.stat) | Fields.java:35:9:35:12 | stat | +| Fields.java:32:5:32:9 | SSA call def(f.xs) | Fields.java:33:9:33:12 | f.xs | +| Fields.java:32:5:32:9 | SSA call def(this.xs) | Fields.java:34:9:34:10 | xs | | Fields.java:36:5:36:19 | SSA def(this.xs) | Fields.java:38:9:38:10 | xs | | Fields.java:39:5:39:21 | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs | | Fields.java:41:5:41:10 | SSA def(z) | Fields.java:42:9:42:9 | z | | Fields.java:43:7:43:22 | SSA def(f) | Fields.java:44:9:44:9 | f | -| Fields.java:43:7:43:22 | SSA impl upd[explicit qualifier](f.xs) | Fields.java:44:9:44:12 | f.xs | -| Fields.java:43:11:43:22 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | +| Fields.java:43:7:43:22 | SSA qualifier def(f.xs) | Fields.java:44:9:44:12 | f.xs | +| Fields.java:43:11:43:22 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | | Fields.java:44:5:44:13 | SSA phi(Fields.stat) | Fields.java:48:9:48:12 | stat | | Fields.java:44:5:44:13 | SSA phi(f) | Fields.java:44:9:44:9 | f | | Fields.java:44:5:44:13 | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs | -| Fields.java:45:5:45:16 | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | -| Nested.java:8:29:8:57 | SSA init(next(..).p1) | Nested.java:8:38:8:39 | p1 | -| Nested.java:8:29:8:57 | SSA init(next(..).x1) | Nested.java:8:43:8:44 | x1 | -| Nested.java:16:22:16:34 | SSA init(getInt(..).obj) | Nested.java:16:22:16:24 | obj | +| Fields.java:45:5:45:16 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | +| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 | +| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 | +| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj | | Nested.java:18:15:23:5 | SSA def(h2) | Nested.java:25:9:25:10 | h2 | -| Nested.java:19:27:22:7 | SSA init(getInt(..).hash) | Nested.java:21:21:21:24 | hash | -| Nested.java:19:27:22:7 | SSA init(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash | +| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | | Nested.java:20:19:20:39 | SSA def(hnest) | Nested.java:21:37:21:41 | hnest | -| Nested.java:20:27:20:39 | SSA init(getInt(..).obj) | Nested.java:20:27:20:29 | obj | -| Nested.java:30:23:30:36 | SSA init(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | -| Nested.java:33:29:42:3 | SSA init(p3) | Nested.java:35:9:35:10 | p3 | -| Nested.java:37:20:37:25 | SSA init(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | -| Nested.java:40:20:40:25 | SSA init(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | -| Test.java:4:19:32:2 | SSA init(param) | Test.java:9:7:9:11 | param | +| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj | +| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | +| Nested.java:33:29:42:3 | SSA param(p3) | Nested.java:35:9:35:10 | p3 | +| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | +| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | +| Test.java:4:19:32:2 | SSA param(param) | Test.java:9:7:9:11 | param | | Test.java:6:7:6:11 | SSA def(x) | Test.java:10:4:10:4 | x | | Test.java:6:7:6:11 | SSA def(x) | Test.java:20:10:20:10 | x | | Test.java:10:4:10:6 | SSA def(x) | Test.java:11:10:11:10 | x | @@ -58,15 +58,15 @@ | Test.java:27:25:27:27 | SSA def(i) | Test.java:27:19:27:19 | i | | Test.java:28:4:28:9 | SSA def(x) | Test.java:28:4:28:4 | x | | Test.java:28:4:28:9 | SSA def(x) | Test.java:31:10:31:10 | x | -| TestInstanceOfPattern.java:3:24:9:2 | SSA init(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | +| TestInstanceOfPattern.java:3:24:9:2 | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:29:4:29 | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | | TestInstanceOfPattern.java:7:8:7:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | -| TestInstanceOfPattern.java:10:25:16:2 | SSA init(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | +| TestInstanceOfPattern.java:10:25:16:2 | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:31:11:31 | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | | TestInstanceOfPattern.java:12:8:12:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | -| TestInstanceOfPattern.java:17:25:23:2 | SSA init(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | +| TestInstanceOfPattern.java:17:25:23:2 | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:29:18:29 | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | | TestInstanceOfPattern.java:21:8:21:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | -| TestInstanceOfPattern.java:24:25:30:2 | SSA init(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:24:25:30:2 | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | diff --git a/java/ql/test/library-tests/ssa/ssaDef.expected b/java/ql/test/library-tests/ssa/ssaDef.expected index cac2ada3c51..12aaf49a650 100644 --- a/java/ql/test/library-tests/ssa/ssaDef.expected +++ b/java/ql/test/library-tests/ssa/ssaDef.expected @@ -1,53 +1,53 @@ | Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA init(this.xs) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA impl upd[nonlocal](this.xs) | -| Fields.java:13:15:13:16 | this.xs | Fields.java:17:7:17:11 | upd(...) | SSA impl upd[nonlocal](this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) | +| Fields.java:13:15:13:16 | this.xs | Fields.java:17:7:17:11 | upd(...) | SSA call def(this.xs) | | Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | ; | SSA phi(this.xs) | | Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) | | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | | Fields.java:24:5:24:28 | f | Fields.java:43:7:43:22 | ...=... | SSA def(f) | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA impl upd[explicit qualifier](f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | | Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) | -| Fields.java:25:15:25:18 | f.xs | Fields.java:43:7:43:22 | ...=... | SSA impl upd[explicit qualifier](f.xs) | +| Fields.java:25:15:25:18 | f.xs | Fields.java:43:7:43:22 | ...=... | SSA qualifier def(f.xs) | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | | Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA init(this.xs) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](this.xs) | -| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) | +| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:19:49:3 | { ... } | SSA init(Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:43:11:43:22 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:19:49:3 | { ... } | SSA entry def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:43:11:43:22 | new Fields(...) | SSA call def(Fields.stat) | | Fields.java:27:15:27:18 | Fields.stat | Fields.java:44:5:44:13 | ; | SSA phi(Fields.stat) | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | -| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).p1) | -| Nested.java:4:26:4:31 | p1 | Nested.java:4:34:10:3 | { ... } | SSA init(p1) | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) | +| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) | +| Nested.java:4:26:4:31 | p1 | Nested.java:4:34:10:3 | { ... } | SSA param(p1) | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | | Nested.java:5:5:5:15 | x1 | Nested.java:5:9:5:14 | x1 | SSA def(x1) | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA init(getInt(..).obj) | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA init(getInt(..).obj) | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) | | Nested.java:15:5:15:30 | obj | Nested.java:15:12:15:29 | obj | SSA def(obj) | -| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).hash) | +| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) | | Nested.java:16:5:16:35 | hash | Nested.java:16:15:16:34 | hash | SSA def(hash) | -| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).x2) | +| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) | | Nested.java:17:5:17:16 | x2 | Nested.java:17:9:17:15 | x2 | SSA def(x2) | | Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) | | Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) | -| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA init(getInt(..).obj2) | +| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:26:7:26:25 | ...=... | SSA def(obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:28:7:28:25 | ...=... | SSA def(obj2) | | Nested.java:24:5:24:31 | obj2 | Nested.java:30:5:30:37 | var ...; | SSA phi(obj2) | -| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA init(p3) | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA init(getInt(..).x3) | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA init(getInt(..).x3) | +| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) | | Nested.java:34:5:34:11 | x3 | Nested.java:36:7:36:12 | ...=... | SSA def(x3) | | Nested.java:34:5:34:11 | x3 | Nested.java:39:7:39:12 | ...=... | SSA def(x3) | -| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA init(param) | +| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) | | Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) | | Test.java:4:8:4:16 | param | Test.java:21:8:21:14 | ...++ | SSA def(param) | | Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) | @@ -65,14 +65,14 @@ | Test.java:27:8:27:16 | i | Test.java:27:12:27:16 | i | SSA def(i) | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | | Test.java:27:8:27:16 | i | Test.java:27:25:27:27 | ...++ | SSA def(i) | -| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | | TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | | TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA init(obj) | +| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | | TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | -| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(obj) | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | +| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | diff --git a/java/ql/test/library-tests/ssa/ssaUse.expected b/java/ql/test/library-tests/ssa/ssaUse.expected index f55797b309b..7544aa76d55 100644 --- a/java/ql/test/library-tests/ssa/ssaUse.expected +++ b/java/ql/test/library-tests/ssa/ssaUse.expected @@ -1,6 +1,6 @@ | Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) | Fields.java:16:9:16:9 | x | -| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA init(this.xs) | Fields.java:13:15:13:16 | xs | -| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:15:9:15:10 | xs | +| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs | +| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs | | Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | ; | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs | | Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) | Fields.java:20:9:20:10 | xs | | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:25:15:25:15 | f | @@ -12,39 +12,39 @@ | Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:40:9:40:9 | f | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | Fields.java:44:9:44:9 | f | | Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | ; | SSA phi(f) | Fields.java:46:9:46:9 | f | -| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA impl upd[explicit qualifier](f.xs) | Fields.java:25:15:25:18 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:29:9:29:12 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:33:9:33:12 | f.xs | -| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](f.xs) | Fields.java:37:9:37:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) | Fields.java:29:9:29:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:33:9:33:12 | f.xs | +| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:37:9:37:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs | | Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | ; | SSA phi(f.xs) | Fields.java:46:9:46:12 | f.xs | | Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) | Fields.java:42:9:42:9 | z | -| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA init(this.xs) | Fields.java:26:15:26:16 | xs | -| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:30:9:30:10 | xs | -| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](this.xs) | Fields.java:34:9:34:10 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) | Fields.java:30:9:30:10 | xs | +| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) | Fields.java:34:9:34:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:38:9:38:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:41:9:41:10 | xs | | Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:47:9:47:10 | xs | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:27:15:27:18 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:31:9:31:12 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:35:9:35:12 | stat | -| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA impl upd[nonlocal](Fields.stat) | Fields.java:48:9:48:12 | stat | -| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).p1) | Nested.java:8:38:8:39 | p1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:43:8:44 | x1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:48:8:49 | x1 | -| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA init(next(..).x1) | Nested.java:8:53:8:54 | x1 | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA init(getInt(..).obj) | Nested.java:16:22:16:24 | obj | -| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA init(getInt(..).obj) | Nested.java:20:27:20:29 | obj | -| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).hash) | Nested.java:21:21:21:24 | hash | -| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA init(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA call def(Fields.stat) | Fields.java:27:15:27:18 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) | Fields.java:31:9:31:12 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) | Fields.java:35:9:35:12 | stat | +| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat | +| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:48:8:49 | x1 | +| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:53:8:54 | x1 | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj | +| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj | +| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash | +| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 | | Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) | Nested.java:25:9:25:10 | h2 | | Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) | Nested.java:21:37:21:41 | hnest | -| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA init(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | -| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA init(p3) | Nested.java:35:9:35:10 | p3 | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA init(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | -| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA init(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | -| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA init(param) | Test.java:9:7:9:11 | param | +| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 | +| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) | Nested.java:35:9:35:10 | p3 | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 | +| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 | +| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) | Test.java:9:7:9:11 | param | | Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) | Test.java:21:8:21:12 | param | | Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) | Test.java:10:4:10:4 | x | | Test.java:6:3:6:12 | x | Test.java:10:4:10:6 | ...++ | SSA def(x) | Test.java:11:10:11:10 | x | @@ -58,17 +58,17 @@ | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:19:27:19 | i | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:25:27:25 | i | | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:28:9:28:9 | i | -| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | +| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | | TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | -| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | +| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | | TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | -| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | +| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:19:8:19:8 | s | | TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | -| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | -| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA init(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s | +| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | +| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s | From 109a5eb7e785061d4738809e4c1f280fa7c399f7 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 6 Nov 2025 15:55:06 +0100 Subject: [PATCH 714/965] Java: Accept qltest changes due to dropped UntrackedDef. --- .../dataflow/modulus-analysis/ModulusAnalysis.expected | 3 +-- java/ql/test/library-tests/ssa/firstUse.expected | 3 --- java/ql/test/library-tests/ssa/ssaDef.expected | 3 --- java/ql/test/library-tests/ssa/ssaUse.expected | 3 --- 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected index 45430971424..7750e18b747 100644 --- a/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected +++ b/java/ql/test/library-tests/dataflow/modulus-analysis/ModulusAnalysis.expected @@ -21,7 +21,6 @@ | ModulusAnalysis.java:12:13:12:15 | mul | 0 | 3 | 42 | | ModulusAnalysis.java:12:13:12:15 | mul | SSA def(mul) | 0 | 0 | | ModulusAnalysis.java:12:19:12:20 | c2 | 0 | 43 | 0 | -| ModulusAnalysis.java:12:19:12:20 | c2 | SSA impl upd[untracked](this.c2) | 0 | 0 | | ModulusAnalysis.java:12:25:12:29 | seven | 0 | 7 | 0 | | ModulusAnalysis.java:12:25:12:29 | seven | SSA def(seven) | 0 | 0 | | ModulusAnalysis.java:13:32:13:34 | mul | 0 | 3 | 42 | @@ -71,7 +70,7 @@ | ModulusAnalysis.java:26:36:26:36 | y | 0 | 7 | 42 | | ModulusAnalysis.java:26:36:26:36 | y | SSA param(y) | 0 | 0 | | ModulusAnalysis.java:29:13:29:35 | l | 0 | 1 | 4 | -| ModulusAnalysis.java:29:17:29:26 | arr.length | SSA impl upd[untracked](arr.length) | 0 | 0 | +| ModulusAnalysis.java:29:17:29:26 | arr.length | arr.length | 0 | 0 | | ModulusAnalysis.java:29:17:29:30 | ... * ... | 0 | 0 | 4 | | ModulusAnalysis.java:29:17:29:35 | ... - ... | 0 | 1 | 4 | | ModulusAnalysis.java:29:30:29:30 | 4 | 0 | 4 | 0 | diff --git a/java/ql/test/library-tests/ssa/firstUse.expected b/java/ql/test/library-tests/ssa/firstUse.expected index 4fd2a78bb89..6494791be34 100644 --- a/java/ql/test/library-tests/ssa/firstUse.expected +++ b/java/ql/test/library-tests/ssa/firstUse.expected @@ -60,13 +60,10 @@ | Test.java:28:4:28:9 | SSA def(x) | Test.java:31:10:31:10 | x | | TestInstanceOfPattern.java:3:24:9:2 | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:29:4:29 | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | -| TestInstanceOfPattern.java:7:8:7:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | | TestInstanceOfPattern.java:10:25:16:2 | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:31:11:31 | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | -| TestInstanceOfPattern.java:12:8:12:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | | TestInstanceOfPattern.java:17:25:23:2 | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:29:18:29 | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | -| TestInstanceOfPattern.java:21:8:21:8 | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | | TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | | TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | | TestInstanceOfPattern.java:24:25:30:2 | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | diff --git a/java/ql/test/library-tests/ssa/ssaDef.expected b/java/ql/test/library-tests/ssa/ssaDef.expected index 12aaf49a650..a10b9d327b2 100644 --- a/java/ql/test/library-tests/ssa/ssaDef.expected +++ b/java/ql/test/library-tests/ssa/ssaDef.expected @@ -67,12 +67,9 @@ | Test.java:27:8:27:16 | i | Test.java:27:25:27:27 | ...++ | SSA def(i) | | TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | -| TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | | TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | -| TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | | TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | -| TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | | TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | | TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | diff --git a/java/ql/test/library-tests/ssa/ssaUse.expected b/java/ql/test/library-tests/ssa/ssaUse.expected index 7544aa76d55..8525f62a883 100644 --- a/java/ql/test/library-tests/ssa/ssaUse.expected +++ b/java/ql/test/library-tests/ssa/ssaUse.expected @@ -60,14 +60,11 @@ | Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:28:9:28:9 | i | | TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj | | TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s | -| TestInstanceOfPattern.java:7:8:7:8 | this.s | TestInstanceOfPattern.java:7:8:7:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:7:8:7:8 | s | | TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj | | TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s | -| TestInstanceOfPattern.java:12:8:12:8 | this.s | TestInstanceOfPattern.java:12:8:12:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:12:8:12:8 | s | | TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s | | TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:19:8:19:8 | s | -| TestInstanceOfPattern.java:21:8:21:8 | this.s | TestInstanceOfPattern.java:21:8:21:8 | s | SSA impl upd[untracked](this.s) | TestInstanceOfPattern.java:21:8:21:8 | s | | TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj | | TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s | | TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s | From 437ca58e3f7cf8f73e8f04f1d327c5e84f605312 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 12:49:27 +0100 Subject: [PATCH 715/965] Java: Add change note. --- java/ql/lib/change-notes/2025-10-07-ssa-api-updates.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2025-10-07-ssa-api-updates.md diff --git a/java/ql/lib/change-notes/2025-10-07-ssa-api-updates.md b/java/ql/lib/change-notes/2025-10-07-ssa-api-updates.md new file mode 100644 index 00000000000..c8388ef086d --- /dev/null +++ b/java/ql/lib/change-notes/2025-10-07-ssa-api-updates.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The SSA interface has been updated and all classes and several predicates have been renamed. See the qldoc for more specific migration information. From 4a58a0158a5e717f3d3a741c61cd4c3876e6de02 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 11 Nov 2025 15:28:45 +0100 Subject: [PATCH 716/965] Java: Reinstate useless null check results for fields that are no longer tracked as SSA variables. --- java/ql/lib/semmle/code/java/dataflow/NullGuards.qll | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll index b165d1516d6..709bb1e3d47 100644 --- a/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll +++ b/java/ql/lib/semmle/code/java/dataflow/NullGuards.qll @@ -105,6 +105,13 @@ Expr clearlyNotNullExpr(Expr reason) { result = v.getARead() and not result = baseNotNullExpr() ) + or + exists(Field f | + result = f.getAnAccess() and + f.isFinal() and + f.getInitializer() = clearlyNotNullExpr(reason) and + not result = baseNotNullExpr() + ) } /** Holds if `v` is an SSA variable that is provably not `null`. */ From 2192d752869be2ede306161d3d5cceb5736d3445 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 12 Nov 2025 14:08:18 +0100 Subject: [PATCH 717/965] Java: Add test for a known FP. --- java/ql/test/query-tests/Nullness/C.java | 11 +++++++++++ java/ql/test/query-tests/Nullness/NullMaybe.expected | 1 + 2 files changed, 12 insertions(+) diff --git a/java/ql/test/query-tests/Nullness/C.java b/java/ql/test/query-tests/Nullness/C.java index 881185abd23..42b6ed550a5 100644 --- a/java/ql/test/query-tests/Nullness/C.java +++ b/java/ql/test/query-tests/Nullness/C.java @@ -254,4 +254,15 @@ public class C { xs[0] = 42; // OK } } + + public void ex19(Object t, Object x) { + boolean b = t != null || x != null; + if (b) { + if (t != null) { + t.hashCode(); // OK + } else { + x.hashCode(); // NPE - false positive + } + } + } } diff --git a/java/ql/test/query-tests/Nullness/NullMaybe.expected b/java/ql/test/query-tests/Nullness/NullMaybe.expected index 89209bd3a71..f583c0f80b3 100644 --- a/java/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/java/ql/test/query-tests/Nullness/NullMaybe.expected @@ -35,6 +35,7 @@ | C.java:144:15:144:15 | a | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:141:20:141:26 | a | a | C.java:142:13:142:21 | ... == ... | this | | C.java:219:9:219:10 | o1 | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:212:20:212:28 | o1 | o1 | C.java:213:9:213:18 | ... == ... | this | | C.java:233:7:233:8 | xs | Variable $@ may be null at this access because of $@ assignment. | C.java:231:5:231:56 | int[] xs | xs | C.java:231:11:231:55 | xs | this | +| C.java:264:9:264:9 | x | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:258:30:258:37 | x | x | C.java:259:30:259:38 | ... != ... | this | | F.java:11:5:11:7 | obj | Variable $@ may be null at this access as suggested by $@ null guard. | F.java:8:18:8:27 | obj | obj | F.java:9:9:9:19 | ... == ... | this | | F.java:17:5:17:7 | obj | Variable $@ may be null at this access as suggested by $@ null guard. | F.java:14:18:14:27 | obj | obj | F.java:15:9:15:19 | ... == ... | this | | G.java:20:12:20:12 | s | Variable $@ may be null at this access as suggested by $@ null guard. | G.java:3:27:3:34 | s | s | G.java:5:9:5:17 | ... == ... | this | From d6800394fa32b0df4b07546ea578caea7aad7459 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 12 Nov 2025 14:14:32 +0100 Subject: [PATCH 718/965] Guards: Support disjunctive implications. --- java/ql/test/query-tests/Nullness/C.java | 2 +- .../query-tests/Nullness/NullMaybe.expected | 1 - .../controlflow/codeql/controlflow/Guards.qll | 104 +++++++++++++++++- 3 files changed, 104 insertions(+), 3 deletions(-) diff --git a/java/ql/test/query-tests/Nullness/C.java b/java/ql/test/query-tests/Nullness/C.java index 42b6ed550a5..edd64cfa79b 100644 --- a/java/ql/test/query-tests/Nullness/C.java +++ b/java/ql/test/query-tests/Nullness/C.java @@ -261,7 +261,7 @@ public class C { if (t != null) { t.hashCode(); // OK } else { - x.hashCode(); // NPE - false positive + x.hashCode(); // OK } } } diff --git a/java/ql/test/query-tests/Nullness/NullMaybe.expected b/java/ql/test/query-tests/Nullness/NullMaybe.expected index f583c0f80b3..89209bd3a71 100644 --- a/java/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/java/ql/test/query-tests/Nullness/NullMaybe.expected @@ -35,7 +35,6 @@ | C.java:144:15:144:15 | a | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:141:20:141:26 | a | a | C.java:142:13:142:21 | ... == ... | this | | C.java:219:9:219:10 | o1 | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:212:20:212:28 | o1 | o1 | C.java:213:9:213:18 | ... == ... | this | | C.java:233:7:233:8 | xs | Variable $@ may be null at this access because of $@ assignment. | C.java:231:5:231:56 | int[] xs | xs | C.java:231:11:231:55 | xs | this | -| C.java:264:9:264:9 | x | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:258:30:258:37 | x | x | C.java:259:30:259:38 | ... != ... | this | | F.java:11:5:11:7 | obj | Variable $@ may be null at this access as suggested by $@ null guard. | F.java:8:18:8:27 | obj | obj | F.java:9:9:9:19 | ... == ... | this | | F.java:17:5:17:7 | obj | Variable $@ may be null at this access as suggested by $@ null guard. | F.java:14:18:14:27 | obj | obj | F.java:15:9:15:19 | ... == ... | this | | G.java:20:12:20:12 | s | Variable $@ may be null at this access as suggested by $@ null guard. | G.java:3:27:3:34 | s | s | G.java:5:9:5:17 | ... == ... | this | diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index 17aee2a7cae..8490d0622a7 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -926,6 +926,9 @@ module Make< guardControls(g0, v0, tgtGuard, tgtVal) and additionalImpliesStep(g0, v0, guard, v) ) + or + baseGuardValue(tgtGuard, tgtVal) and + disjunctiveGuardControls(guard, v, tgtGuard, tgtVal) } /** @@ -1003,6 +1006,104 @@ module Make< ) } + private import DisjunctiveGuard + + private module DisjunctiveGuard { + /** + * Holds if `disjunction` evaluating to `val` means that either + * `disjunct1` or `disjunct2` is `val`. + */ + private predicate disjunction( + Guard disjunction, GuardValue val, Guard disjunct1, Guard disjunct2 + ) { + 2 = + strictcount(Guard op | + disjunction.(OrExpr).getAnOperand() = op or disjunction.(AndExpr).getAnOperand() = op + ) and + disjunct1 != disjunct2 and + ( + exists(OrExpr d | d = disjunction | + d.getAnOperand() = disjunct1 and + d.getAnOperand() = disjunct2 and + val.asBooleanValue() = true + ) + or + exists(AndExpr d | d = disjunction | + d.getAnOperand() = disjunct1 and + d.getAnOperand() = disjunct2 and + val.asBooleanValue() = false + ) + ) + } + + private predicate disjunct(Guard guard, GuardValue val) { disjunction(_, val, guard, _) } + + module DisjunctImplies = ImpliesTC; + + /** + * Holds if one of the disjuncts in `disjunction` evaluating to `dv` implies that `def` + * evaluates to `v`. The other disjunct is `otherDisjunct`. + */ + pragma[nomagic] + private predicate ssaControlsDisjunct( + SsaDefinition def, GuardValue v, Guard disjunction, Guard otherDisjunct, GuardValue dv + ) { + exists(Guard disjunct | + disjunction(disjunction, dv, disjunct, otherDisjunct) and + DisjunctImplies::ssaControls(def, v, disjunct, dv) + ) + } + + /** + * Holds if the disjunction of `def` evaluating to `v` and + * `otherDisjunct` evaluating to `dv` controls `bb`. + */ + pragma[nomagic] + private predicate ssaDisjunctionControls( + SsaDefinition def, GuardValue v, Guard otherDisjunct, GuardValue dv, BasicBlock bb + ) { + exists(Guard disjunction | + ssaControlsDisjunct(def, v, disjunction, otherDisjunct, dv) and + disjunction.valueControls(bb, dv) + ) + } + + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `def` + * evaluates to `v`. The basic block of `tgtGuard` is `bb`. + */ + pragma[nomagic] + private predicate ssaControlsGuard( + SsaDefinition def, GuardValue v, Guard tgtGuard, GuardValue tgtVal, BasicBlock bb + ) { + ( + BranchImplies::ssaControls(def, v, tgtGuard, tgtVal) or + WrapperGuard::ReturnImplies::ssaControls(def, v, tgtGuard, tgtVal) + ) and + tgtGuard.getBasicBlock() = bb + } + + /** + * Holds if `tgtGuard` evaluating to `tgtVal` implies that `guard` + * evaluates to `v`. + */ + pragma[nomagic] + predicate disjunctiveGuardControls( + Guard guard, GuardValue v, Guard tgtGuard, GuardValue tgtVal + ) { + exists(SsaDefinition def, GuardValue v1, GuardValue v2, BasicBlock bb | + // If `def==v1 || guard==v` controls `bb`, + ssaDisjunctionControls(def, v1, guard, v, bb) and + // and `tgtGuard==tgtVal` in `bb` implies `def==v2`, + ssaControlsGuard(def, v2, tgtGuard, tgtVal, bb) and + // and `v1` and `v2` are disjoint, + disjointValues(v1, v2) + // then assuming `tgtGuard==tgtVal` it follows that `def` cannot be `v1` + // and therefore we must have `guard==v`. + ) + } + } + /** * Provides an implementation of guard implication logic for guard * wrappers. @@ -1021,7 +1122,8 @@ module Make< private predicate relevantCallValue(NonOverridableMethodCall call, GuardValue val) { BranchImplies::guardControls(call, val, _, _) or - ReturnImplies::guardControls(call, val, _, _) + ReturnImplies::guardControls(call, val, _, _) or + DisjunctImplies::guardControls(call, val, _, _) } predicate relevantReturnValue(NonOverridableMethod m, GuardValue val) { From 95987724773aed10a41d99eff43b87425e571ee0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 14:37:45 +0000 Subject: [PATCH 719/965] Update rust/ql/examples/snippets/simple_constant_password.ql Co-authored-by: Tom Hvitved --- rust/ql/examples/snippets/simple_constant_password.ql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rust/ql/examples/snippets/simple_constant_password.ql b/rust/ql/examples/snippets/simple_constant_password.ql index 202029994f4..1f0e0a8e101 100644 --- a/rust/ql/examples/snippets/simple_constant_password.ql +++ b/rust/ql/examples/snippets/simple_constant_password.ql @@ -30,9 +30,10 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node node) { // `node` is an argument whose corresponding parameter name matches the pattern "pass%" - exists(CallExpr call, Function target, int argIndex | + exists(CallExpr call, Function target, int argIndex, Variable v | call.getStaticTarget() = target and - target.getParam(argIndex).getPat().(IdentPat).getName().getText().matches("pass%") and + v.getParameter() = target.getParam(argIndex) and + v.getText().matches("pass%") and call.getArg(argIndex) = node.asExpr().getExpr() ) } From f8ef48b9244b0e2ac06111d7e122a1692d85313a Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 11 Nov 2025 16:22:40 +0000 Subject: [PATCH 720/965] Rust: Add query test. --- .../query-tests/security/CWE-295/Cargo.lock | 1596 +++++++++++++++++ .../CWE-295/DisabledCertificateCheck.expected | 10 + .../CWE-295/DisabledCertificateCheck.qlref | 4 + .../test/query-tests/security/CWE-295/main.rs | 108 ++ .../query-tests/security/CWE-295/options.yml | 5 + 5 files changed, 1723 insertions(+) create mode 100644 rust/ql/test/query-tests/security/CWE-295/Cargo.lock create mode 100644 rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected create mode 100644 rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref create mode 100644 rust/ql/test/query-tests/security/CWE-295/main.rs create mode 100644 rust/ql/test/query-tests/security/CWE-295/options.yml diff --git a/rust/ql/test/query-tests/security/CWE-295/Cargo.lock b/rust/ql/test/query-tests/security/CWE-295/Cargo.lock new file mode 100644 index 00000000000..43943439edd --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/Cargo.lock @@ -0,0 +1,1596 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "reqwest" +version = "0.12.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "native-tls", + "rand", + "reqwest", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected new file mode 100644 index 00000000000..5c10ff87316 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -0,0 +1,10 @@ +| main.rs:3:16:4:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:8:16:9:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:13:16:16:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:13:16:17:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:36:16:37:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:41:16:42:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:46:16:47:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:46:16:48:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:52:16:55:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:52:16:56:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref new file mode 100644 index 00000000000..cc99c2b151c --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.qlref @@ -0,0 +1,4 @@ +query: queries/security/CWE-295/DisabledCertificateCheck.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs new file mode 100644 index 00000000000..9c603c45c43 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -0,0 +1,108 @@ +fn test_native_tls() { + // unsafe + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .min_protocol_version(Some(native_tls::Protocol::Tlsv12)) + .use_sni(true) + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + // safe + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(false) // good + .danger_accept_invalid_hostnames(false) // good + .build() + .unwrap(); + + // default (safe) + let _client = native_tls::TlsConnector::builder() + .build() + .unwrap(); +} + +fn test_reqwest() { + // unsafe + let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::blocking::ClientBuilder::new() + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::ClientBuilder::new() + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = reqwest::blocking::Client::builder() + .tcp_keepalive(std::time::Duration::from_secs(30)) + .https_only(true) + .danger_accept_invalid_certs(true) // $ Alert[rust/disabled-certificate-check] + .danger_accept_invalid_hostnames(true) // $ Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + // safe + let _client = reqwest::blocking::Client::builder() + .danger_accept_invalid_certs(false) // good + .danger_accept_invalid_hostnames(false) // good + .build() + .unwrap(); + + // default (safe) + let _client = reqwest::blocking::Client::builder() + .build() + .unwrap(); +} + +fn test_data_flow(sometimes_global: bool) { + let always = true; + let mut sometimes = true; + let never = false; + + if rand::random_range(0 .. 2) == 0 { + sometimes = false; + } + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(always) // $ MISSING: Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(sometimes) // $ MISSING: Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(sometimes_global) // $ MISSING: Alert[rust/disabled-certificate-check] + .build() + .unwrap(); + + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(never) // good + .build() + .unwrap(); +} + +fn main() { + test_native_tls(); + test_reqwest(); + test_data_flow(true); + test_data_flow(false); +} diff --git a/rust/ql/test/query-tests/security/CWE-295/options.yml b/rust/ql/test/query-tests/security/CWE-295/options.yml new file mode 100644 index 00000000000..711dfe71f8b --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-295/options.yml @@ -0,0 +1,5 @@ +qltest_cargo_check: true +qltest_dependencies: + - reqwest = { version = "0.12.9", features = ["blocking"] } + - native-tls = { version = "0.2.14" } + - rand = { version = "0.9.2" } From 209f394b5effa32d9c740f64ed58a25cbf6a2ad7 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 11 Nov 2025 18:10:32 +0000 Subject: [PATCH 721/965] Rust: Fix the alert message. --- .../CWE-295/DisabledCertificateCheck.ql | 10 +++++----- .../CWE-295/DisabledCertificateCheck.expected | 20 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index 65b1d85f216..9a8ee245e2c 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -15,8 +15,8 @@ import rust from CallExprBase fc where - fc.getStaticTarget().(Function).getName().getText() = ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and - fc.getArg(0).(BooleanLiteralExpr).getTextValue() = "true" -select - fc, - "Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks." // TODO: proper message. + fc.getStaticTarget().(Function).getName().getText() = + ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and + fc.getArg(0).(BooleanLiteralExpr).getTextValue() = "true" +select fc, + "Disabling TLS certificate validation can expose the application to man-in-the-middle attacks." diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index 5c10ff87316..113f41731c4 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,10 +1,10 @@ -| main.rs:3:16:4:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:8:16:9:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:13:16:16:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:13:16:17:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:36:16:37:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:41:16:42:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:46:16:47:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:46:16:48:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:52:16:55:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | -| main.rs:52:16:56:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation with 'danger_accept_invalid_certs(true)' can expose the application to man-in-the-middle attacks. | +| main.rs:3:16:4:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:8:16:9:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:13:16:16:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:13:16:17:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:36:16:37:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:41:16:42:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:46:16:47:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:46:16:48:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:52:16:55:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:52:16:56:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | From c77eef39e2806273ea6a3b66eaad36e085caf847 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 11 Nov 2025 17:55:29 +0000 Subject: [PATCH 722/965] Rust: Convert the query to a path-problem with global data flow. --- .../DisabledCertificateCheckExtensions.qll | 42 +++++++++++++++ .../CWE-295/DisabledCertificateCheck.ql | 34 +++++++++--- rust/ql/src/queries/summary/Stats.qll | 1 + .../CWE-295/DisabledCertificateCheck.expected | 52 +++++++++++++++---- .../test/query-tests/security/CWE-295/main.rs | 12 ++--- 5 files changed, 118 insertions(+), 23 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll new file mode 100644 index 00000000000..984dc0f1de1 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -0,0 +1,42 @@ +/** + * Provides classes and predicates for reasoning about disabled certificate + * check vulnerabilities. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.dataflow.FlowSink +private import codeql.rust.Concepts + +/** + * Provides default sinks for detecting disabled certificate check + * vulnerabilities, as well as extension points for adding your own. + */ +module DisabledCertificateCheckExtensions { + /** + * A data flow sink for disabled certificate check vulnerabilities. + */ + abstract class Sink extends QuerySink::Range { + override string getSinkType() { result = "DisabledCertificateCheck" } + } + + /** + * A default sink for disabled certificate check based on function names. + */ + private class DefaultSink extends Sink { + DefaultSink() { + exists(CallExprBase fc | + fc.getStaticTarget().(Function).getName().getText() = + ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and + fc.getArg(0) = this.asExpr().getExpr() + ) + } + } + + /** + * A sink for disabled certificate check from model data. + */ + private class ModelsAsDataSink extends Sink { + ModelsAsDataSink() { sinkNode(this, "disable-certificate") } + } +} diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index 9a8ee245e2c..0e5f8daea61 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -2,7 +2,7 @@ * @name Disabled TLS certificate check * @description If an application disables TLS certificate checking, it may be vulnerable to * man-in-the-middle attacks. - * @kind problem + * @kind path-problem * @problem.severity warning * @security-severity 7.5 * @precision high @@ -12,11 +12,31 @@ */ import rust +import codeql.rust.dataflow.DataFlow +import codeql.rust.security.DisabledCertificateCheckExtensions -from CallExprBase fc -where - fc.getStaticTarget().(Function).getName().getText() = - ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and - fc.getArg(0).(BooleanLiteralExpr).getTextValue() = "true" -select fc, +/** + * A taint configuration for disabling TLS certificate checks. + */ +module LogInjectionConfig implements DataFlow::ConfigSig { + import DisabledCertificateCheckExtensions + + predicate isSource(DataFlow::Node node) { + node.asExpr().getExpr().(BooleanLiteralExpr).getTextValue() = "true" + } + + predicate isSink(DataFlow::Node node) { node instanceof Sink } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +module DisabledCertificateCheckExtensionFlow = DataFlow::Global; + +import DisabledCertificateCheckExtensionFlow::PathGraph + +from + DisabledCertificateCheckExtensionFlow::PathNode sourceNode, + DisabledCertificateCheckExtensionFlow::PathNode sinkNode +where DisabledCertificateCheckExtensionFlow::flowPath(sourceNode, sinkNode) +select sinkNode.getNode(), sourceNode, sinkNode, "Disabling TLS certificate validation can expose the application to man-in-the-middle attacks." diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll index 7cd4fd67e24..e62f8ca9c5b 100644 --- a/rust/ql/src/queries/summary/Stats.qll +++ b/rust/ql/src/queries/summary/Stats.qll @@ -22,6 +22,7 @@ private import codeql.rust.security.AccessInvalidPointerExtensions private import codeql.rust.security.CleartextLoggingExtensions private import codeql.rust.security.CleartextStorageDatabaseExtensions private import codeql.rust.security.CleartextTransmissionExtensions +private import codeql.rust.security.DisabledCertificateCheckExtensions private import codeql.rust.security.HardcodedCryptographicValueExtensions private import codeql.rust.security.InsecureCookieExtensions private import codeql.rust.security.LogInjectionExtensions diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index 113f41731c4..e060b50494d 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,10 +1,42 @@ -| main.rs:3:16:4:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:8:16:9:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:13:16:16:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:13:16:17:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:36:16:37:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:41:16:42:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:46:16:47:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:46:16:48:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:52:16:55:36 | ... .danger_accept_invalid_certs(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:52:16:56:40 | ... .danger_accept_invalid_hostnames(...) | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +#select +| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:32:93:47 | sometimes_global | main.rs:106:17:106:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +edges +| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | +| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | +| main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | +| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | +| main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | +| main.rs:106:17:106:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | +nodes +| main.rs:4:32:4:35 | true | semmle.label | true | +| main.rs:9:36:9:39 | true | semmle.label | true | +| main.rs:16:32:16:35 | true | semmle.label | true | +| main.rs:17:36:17:39 | true | semmle.label | true | +| main.rs:37:32:37:35 | true | semmle.label | true | +| main.rs:42:36:42:39 | true | semmle.label | true | +| main.rs:47:32:47:35 | true | semmle.label | true | +| main.rs:48:36:48:39 | true | semmle.label | true | +| main.rs:55:32:55:35 | true | semmle.label | true | +| main.rs:56:36:56:39 | true | semmle.label | true | +| main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | +| main.rs:74:6:74:11 | always | semmle.label | always | +| main.rs:74:15:74:18 | true | semmle.label | true | +| main.rs:75:6:75:18 | mut sometimes | semmle.label | mut sometimes | +| main.rs:75:22:75:25 | true | semmle.label | true | +| main.rs:83:32:83:37 | always | semmle.label | always | +| main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | +| main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | +| main.rs:106:17:106:20 | true | semmle.label | true | +subpaths diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs index 9c603c45c43..02bd61976e5 100644 --- a/rust/ql/test/query-tests/security/CWE-295/main.rs +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -71,8 +71,8 @@ fn test_reqwest() { } fn test_data_flow(sometimes_global: bool) { - let always = true; - let mut sometimes = true; + let always = true; // $ Source=always + let mut sometimes = true; // $ Source=sometimes let never = false; if rand::random_range(0 .. 2) == 0 { @@ -80,17 +80,17 @@ fn test_data_flow(sometimes_global: bool) { } let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_certs(always) // $ MISSING: Alert[rust/disabled-certificate-check] + .danger_accept_invalid_certs(always) // $ Alert[rust/disabled-certificate-check]=always .build() .unwrap(); let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_certs(sometimes) // $ MISSING: Alert[rust/disabled-certificate-check] + .danger_accept_invalid_certs(sometimes) // $ Alert[rust/disabled-certificate-check]=sometimes .build() .unwrap(); let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_certs(sometimes_global) // $ MISSING: Alert[rust/disabled-certificate-check] + .danger_accept_invalid_certs(sometimes_global) // $ Alert[rust/disabled-certificate-check]=arg .build() .unwrap(); @@ -103,6 +103,6 @@ fn test_data_flow(sometimes_global: bool) { fn main() { test_native_tls(); test_reqwest(); - test_data_flow(true); + test_data_flow(true); // $ Source=arg test_data_flow(false); } From bb78fdf1509458a8ef2aaffec75e14644b46f0b0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 16:50:50 +0000 Subject: [PATCH 723/965] Rust: Add qhelp and examples (translated from Go, by Copilot). --- .../CWE-295/DisabledCertificateCheck.qhelp | 39 +++++++++++++++++++ .../CWE-295/DisabledCertificateCheckBad.rs | 13 +++++++ .../CWE-295/DisabledCertificateCheckGood.rs | 18 +++++++++ 3 files changed, 70 insertions(+) create mode 100644 rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp create mode 100644 rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs create mode 100644 rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp new file mode 100644 index 00000000000..f00a5295f36 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -0,0 +1,39 @@ + + + + +

    +In Rust, the danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification are performed. If set to true, the client will accept any certificate and any host name, making it susceptible to man-in-the-middle attacks. +

    +
    + + +

    +Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true except in tests or controlled environments. In production, always ensure certificate and hostname verification are enabled to prevent security risks. +

    +
    + + +

    +The following code snippet shows a function that creates a TLS or HTTP client with certificate verification disabled: +

    + +

    +While this may be acceptable in a test, it should not be used in production code. Instead, always configure clients to verify certificates and hostnames: +

    + +
    + +
  • +Rust native-tls crate: TlsConnectorBuilder. +
  • +
  • +Rust reqwest crate: ClientBuilder. +
  • +
  • +Mozilla: Web Security Guidelines: HTTPS. +
  • +
    +
    diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs new file mode 100644 index 00000000000..67546a8a2ab --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs @@ -0,0 +1,13 @@ +// BAD: Disabling certificate validation in Rust + +// Using native_tls +let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(true) // disables certificate validation + .build() + .unwrap(); + +// Using reqwest +let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(true) // disables certificate validation + .build() + .unwrap(); diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs new file mode 100644 index 00000000000..525d7e98549 --- /dev/null +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs @@ -0,0 +1,18 @@ +// GOOD: Certificate validation is enabled (default) + +// Using native_tls +let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_certs(false) // certificate validation enabled + .build() + .unwrap(); + +// Using reqwest +let _client = reqwest::Client::builder() + .danger_accept_invalid_certs(false) // certificate validation enabled + .build() + .unwrap(); + +// Or simply use the default builder (safe) +let _client = native_tls::TlsConnector::builder() + .build() + .unwrap(); From 87d66c69a363784d5358e33578dae33a2e7e4168 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:10:02 +0000 Subject: [PATCH 724/965] Rust: Clean up the .qhelp a little. --- .../queries/security/CWE-295/DisabledCertificateCheck.qhelp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index f00a5295f36..25eb25af643 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -5,13 +5,13 @@

    -In Rust, the danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification are performed. If set to true, the client will accept any certificate and any host name, making it susceptible to man-in-the-middle attacks. +The danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification are performed. If set to true, the client will accept any certificate or any host name, making it susceptible to man-in-the-middle attacks.

    -Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true except in tests or controlled environments. In production, always ensure certificate and hostname verification are enabled to prevent security risks. +Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true except in controlled environments such as tests. In production, always ensure certificate and hostname verification are enabled to prevent security risks.

    @@ -21,7 +21,7 @@ The following code snippet shows a function that creates a TLS or HTTP client wi

    -While this may be acceptable in a test, it should not be used in production code. Instead, always configure clients to verify certificates and hostnames: +In production code, always configure clients to verify certificates and hostnames:

    From dcae0ef9750fc3c44e0fd5606c470ad348da82a1 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:10:44 +0000 Subject: [PATCH 725/965] Rust: I prefer the original certificates reference from the Go .qhelp. --- .../src/queries/security/CWE-295/DisabledCertificateCheck.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index 25eb25af643..c100c01786a 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -33,7 +33,7 @@ Rust native-tls crate: ClientBuilder.
  • -Mozilla: Web Security Guidelines: HTTPS. +SSL.com: Browsers and Certificate Validation.
  • From 49063ac8a9072671dbdccc75bef4ccf464b29b11 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:13:02 +0000 Subject: [PATCH 726/965] Rust: Cut down the example for readability. --- .../security/CWE-295/DisabledCertificateCheck.qhelp | 4 ++-- .../security/CWE-295/DisabledCertificateCheckBad.rs | 7 ------- .../security/CWE-295/DisabledCertificateCheckGood.rs | 12 ++---------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index c100c01786a..dfb0c1f4db1 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -17,11 +17,11 @@ Do not set danger_accept_invalid_certs or danger_accept_inval

    -The following code snippet shows a function that creates a TLS or HTTP client with certificate verification disabled: +The following code snippet shows a function that creates an HTTP client with certificate verification disabled:

    -In production code, always configure clients to verify certificates and hostnames: +In production code, always configure clients to verify certificates:

    diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs index 67546a8a2ab..9e4102c64cc 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckBad.rs @@ -1,12 +1,5 @@ // BAD: Disabling certificate validation in Rust -// Using native_tls -let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_certs(true) // disables certificate validation - .build() - .unwrap(); - -// Using reqwest let _client = reqwest::Client::builder() .danger_accept_invalid_certs(true) // disables certificate validation .build() diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs index 525d7e98549..c726a756c38 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheckGood.rs @@ -1,18 +1,10 @@ // GOOD: Certificate validation is enabled (default) -// Using native_tls -let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_certs(false) // certificate validation enabled - .build() - .unwrap(); - -// Using reqwest let _client = reqwest::Client::builder() - .danger_accept_invalid_certs(false) // certificate validation enabled + .danger_accept_invalid_certs(false) // certificate validation enabled explicitly .build() .unwrap(); -// Or simply use the default builder (safe) -let _client = native_tls::TlsConnector::builder() +let _client = native_tls::TlsConnector::builder() // certificate validation enabled by default .build() .unwrap(); From 7a62642ed7a4561ffe3182a1c65aeb132536ab3f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:17:12 +0000 Subject: [PATCH 727/965] Rust: Change note. --- .../src/change-notes/2025-11-12-disabled-certificate-check.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md diff --git a/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md b/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md new file mode 100644 index 00000000000..43211d9c5e0 --- /dev/null +++ b/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query `rust/disabled-certificate-check, to detect disabled TLS certificate checks. From 0675a29ae690f88b7be87b3203c94e05a3c64ddf Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:26:45 +0000 Subject: [PATCH 728/965] Rust: Minor corrections. --- .../security/DisabledCertificateCheckExtensions.qll | 4 ++-- .../2025-11-12-disabled-certificate-check.md | 2 +- .../security/CWE-295/DisabledCertificateCheck.qhelp | 2 +- .../security/CWE-295/DisabledCertificateCheck.ql | 13 ++++++------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index 984dc0f1de1..cfc988ae37f 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -21,7 +21,7 @@ module DisabledCertificateCheckExtensions { } /** - * A default sink for disabled certificate check based on function names. + * A default sink for disabled certificate check vulnerabilities based on function names. */ private class DefaultSink extends Sink { DefaultSink() { @@ -34,7 +34,7 @@ module DisabledCertificateCheckExtensions { } /** - * A sink for disabled certificate check from model data. + * A sink for disabled certificate check vulnerabilities from model data. */ private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "disable-certificate") } diff --git a/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md b/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md index 43211d9c5e0..001102eb9d6 100644 --- a/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md +++ b/rust/ql/src/change-notes/2025-11-12-disabled-certificate-check.md @@ -1,4 +1,4 @@ --- category: newQuery --- -* Added a new query `rust/disabled-certificate-check, to detect disabled TLS certificate checks. +* Added a new query `rust/disabled-certificate-check`, to detect disabled TLS certificate checks. diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index dfb0c1f4db1..4e9ce164f26 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -11,7 +11,7 @@ The danger_accept_invalid_certs and danger_accept_invalid_hos

    -Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true except in controlled environments such as tests. In production, always ensure certificate and hostname verification are enabled to prevent security risks. +Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true, except in controlled environments such as tests. In production, always ensure certificate and hostname verification are enabled to prevent security risks.

    diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index 0e5f8daea61..b054ec306f7 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -16,9 +16,9 @@ import codeql.rust.dataflow.DataFlow import codeql.rust.security.DisabledCertificateCheckExtensions /** - * A taint configuration for disabling TLS certificate checks. + * A taint configuration for disabled TLS certificate checks. */ -module LogInjectionConfig implements DataFlow::ConfigSig { +module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { import DisabledCertificateCheckExtensions predicate isSource(DataFlow::Node node) { @@ -30,13 +30,12 @@ module LogInjectionConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } } -module DisabledCertificateCheckExtensionFlow = DataFlow::Global; +module DisabledCertificateCheckFlow = DataFlow::Global; -import DisabledCertificateCheckExtensionFlow::PathGraph +import DisabledCertificateCheckFlow::PathGraph from - DisabledCertificateCheckExtensionFlow::PathNode sourceNode, - DisabledCertificateCheckExtensionFlow::PathNode sinkNode -where DisabledCertificateCheckExtensionFlow::flowPath(sourceNode, sinkNode) + DisabledCertificateCheckFlow::PathNode sourceNode, DisabledCertificateCheckFlow::PathNode sinkNode +where DisabledCertificateCheckFlow::flowPath(sourceNode, sinkNode) select sinkNode.getNode(), sourceNode, sinkNode, "Disabling TLS certificate validation can expose the application to man-in-the-middle attacks." From e6d4e515b03ef7cd5b9310aadb01f10dc01d0970 Mon Sep 17 00:00:00 2001 From: idrissrio Date: Thu, 13 Nov 2025 09:41:32 +0100 Subject: [PATCH 729/965] Java: Add change note for Maven Java version auto-detection --- java/ql/src/change-notes/2025-11-13-maven-default-java-17 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2025-11-13-maven-default-java-17 diff --git a/java/ql/src/change-notes/2025-11-13-maven-default-java-17 b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 new file mode 100644 index 00000000000..59a2f1c3dfc --- /dev/null +++ b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Autobuild now auto-detects the Java version from Maven POM files across all project modules, defaulting to Java 17 or higher for improved build compatibility. \ No newline at end of file From 23e42c89ee4ae90c125ac9ef7063b0ade765d4e3 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 29 Aug 2025 11:56:15 +0200 Subject: [PATCH 730/965] JS: Overlay annotations for AST layer --- .../ql/lib/Expressions/ExprHasNoEffect.qll | 6 ++ javascript/ql/lib/semmle/javascript/AMD.qll | 20 ++++-- javascript/ql/lib/semmle/javascript/AST.qll | 5 ++ javascript/ql/lib/semmle/javascript/CFG.qll | 2 + .../ql/lib/semmle/javascript/Classes.qll | 5 ++ .../ql/lib/semmle/javascript/Closure.qll | 23 +++++++ .../ql/lib/semmle/javascript/Comments.qll | 2 + .../ql/lib/semmle/javascript/Constants.qll | 2 + .../ql/lib/semmle/javascript/DefUse.qll | 4 ++ javascript/ql/lib/semmle/javascript/E4X.qll | 2 + .../lib/semmle/javascript/ES2015Modules.qll | 27 ++++++++ .../ql/lib/semmle/javascript/Errors.qll | 2 + javascript/ql/lib/semmle/javascript/Expr.qll | 37 +++++++++++ .../ql/lib/semmle/javascript/Externs.qll | 2 + javascript/ql/lib/semmle/javascript/Files.qll | 8 +++ .../ql/lib/semmle/javascript/Functions.qll | 4 ++ javascript/ql/lib/semmle/javascript/HTML.qll | 3 + javascript/ql/lib/semmle/javascript/JSDoc.qll | 3 + javascript/ql/lib/semmle/javascript/JSON.qll | 2 + javascript/ql/lib/semmle/javascript/JSX.qll | 2 + javascript/ql/lib/semmle/javascript/Lines.qll | 2 + .../ql/lib/semmle/javascript/Locations.qll | 2 + .../ql/lib/semmle/javascript/Modules.qll | 16 +++++ javascript/ql/lib/semmle/javascript/NPM.qll | 2 + .../ql/lib/semmle/javascript/NodeJS.qll | 15 +++++ .../ql/lib/semmle/javascript/Promises.qll | 2 + .../ql/lib/semmle/javascript/Regexp.qll | 16 +++++ javascript/ql/lib/semmle/javascript/SSA.qll | 2 + javascript/ql/lib/semmle/javascript/Stmt.qll | 2 + .../ql/lib/semmle/javascript/Templates.qll | 3 + .../ql/lib/semmle/javascript/Tokens.qll | 2 + .../lib/semmle/javascript/TypeAnnotations.qll | 9 +++ .../ql/lib/semmle/javascript/TypeScript.qll | 63 +++++++++++++++++++ .../ql/lib/semmle/javascript/Variables.qll | 8 +++ javascript/ql/lib/semmle/javascript/XML.qll | 2 + javascript/ql/lib/semmle/javascript/YAML.qll | 2 + .../javascript/dataflow/AbstractValues.qll | 3 + .../dataflow/AdditionalFlowSteps.qll | 5 ++ .../javascript/dataflow/Configuration.qll | 8 +++ .../CustomAbstractValueDefinitions.qll | 5 ++ .../semmle/javascript/dataflow/DataFlow.qll | 16 +++++ .../javascript/dataflow/FlowSummary.qll | 2 + .../javascript/dataflow/InferredTypes.qll | 3 + .../lib/semmle/javascript/dataflow/Nodes.qll | 24 ++++++- .../javascript/dataflow/Refinements.qll | 21 +++++++ .../semmle/javascript/dataflow/Sources.qll | 4 ++ .../dataflow/internal/AbstractValuesImpl.qll | 2 + .../dataflow/internal/AccessPaths.qll | 2 + .../internal/AdditionalFlowInternal.qll | 4 ++ .../javascript/dataflow/internal/Contents.qll | 9 +++ .../dataflow/internal/DataFlowNode.qll | 2 + .../dataflow/internal/DataFlowPrivate.qll | 52 +++++++++++++++ .../dataflow/internal/FlowSteps.qll | 25 ++++---- .../dataflow/internal/FlowSummaryPrivate.qll | 3 + .../dataflow/internal/VariableCapture.qll | 3 + .../dataflow/internal/VariableOrThis.qll | 3 + .../dataflow/internal/sharedlib/Ssa.qll | 2 + .../javascript/frameworks/LazyCache.qll | 3 + .../frameworks/LodashUnderscore.qll | 20 ++++++ .../javascript/frameworks/NodeJSLib.qll | 4 ++ .../javascript/frameworks/Templating.qll | 38 +++++++++++ .../javascript/frameworks/UriLibraries.qll | 2 + .../frameworks/data/ModelsAsData.qll | 2 + .../data/internal/ApiGraphModels.qll | 2 + .../internal/ApiGraphModelsExtensions.qll | 2 + .../data/internal/ApiGraphModelsSpecific.qll | 5 ++ .../internal/BasicBlockInternal.qll | 2 + .../javascript/internal/CachedStages.qll | 10 +-- .../javascript/internal/StmtContainers.qll | 2 + .../flow_summaries/AmbiguousCoreMethods.qll | 2 + .../internal/flow_summaries/Arrays.qll | 2 + .../internal/flow_summaries/AsyncAwait.qll | 2 + .../internal/flow_summaries/Decoders.qll | 3 + .../flow_summaries/DynamicImportStep.qll | 2 + .../internal/flow_summaries/ExceptionFlow.qll | 2 + .../flow_summaries/FlowSummaryUtil.qll | 3 + .../internal/flow_summaries/ForOfLoops.qll | 2 + .../internal/flow_summaries/Generators.qll | 2 + .../internal/flow_summaries/Iterators.qll | 2 + .../internal/flow_summaries/JsonStringify.qll | 2 + .../internal/flow_summaries/Maps.qll | 2 + .../internal/flow_summaries/Promises.qll | 2 + .../internal/flow_summaries/Sets.qll | 2 + .../internal/flow_summaries/Strings.qll | 2 + .../internal/flow_summaries/TypedArrays.qll | 3 + .../flow_summaries/UrlSearchParams.qll | 2 + 86 files changed, 615 insertions(+), 21 deletions(-) diff --git a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll index 9813d9b32ed..5e194b3fc3a 100644 --- a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll +++ b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for the 'js/useless-expression' query. */ +overlay[local] +module; import javascript import DOMProperties @@ -60,6 +62,7 @@ predicate isDeclaration(Expr e) { /** * Holds if there exists a getter for a property called `name` anywhere in the program. */ +overlay[global] predicate isGetterProperty(string name) { // there is a call of the form `Object.defineProperty(..., name, descriptor)` ... exists(CallToObjectDefineProperty defProp | name = defProp.getPropertyName() | @@ -85,6 +88,7 @@ predicate isGetterProperty(string name) { /** * A property access that may invoke a getter. */ +overlay[global] class GetterPropertyAccess extends PropAccess { override predicate isImpure() { isGetterProperty(this.getPropertyName()) } } @@ -123,6 +127,7 @@ predicate isReceiverSuppressingCall(CallExpr c, Expr dummy, PropAccess callee) { * even if they do, the call itself is useless and should be flagged by this * query. */ +overlay[global] predicate noSideEffects(Expr e) { e.isPure() or @@ -148,6 +153,7 @@ predicate isCompoundExpression(Expr e) { /** * Holds if the expression `e` should be reported as having no effect. */ +overlay[global] predicate hasNoEffect(Expr e) { noSideEffects(e) and inVoidContext(e) and diff --git a/javascript/ql/lib/semmle/javascript/AMD.qll b/javascript/ql/lib/semmle/javascript/AMD.qll index 4828aff27cc..e66a04ce4ec 100644 --- a/javascript/ql/lib/semmle/javascript/AMD.qll +++ b/javascript/ql/lib/semmle/javascript/AMD.qll @@ -2,6 +2,8 @@ * Provides classes for working with * [Asynchronous Module Definitions](https://github.com/amdjs/amdjs-api/wiki/AMD). */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -62,9 +64,11 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range } /** DEPRECATED. Use `getDependencyExpr` instead. */ + overlay[global] deprecated PathExpr getDependency(int i) { result = this.getDependencyExpr(i) } /** DEPRECATED. Use `getADependencyExpr` instead. */ + overlay[global] deprecated PathExpr getADependency() { result = this.getADependencyExpr() } /** Gets the `i`th dependency of this module definition. */ @@ -194,16 +198,19 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range * Gets an abstract value representing one or more values that may flow * into this module's `module.exports` property. */ + overlay[global] DefiniteAbstractValue getAModuleExportsValue() { result = [this.getAnImplicitExportsValue(), this.getAnExplicitExportsValue()] } + overlay[global] pragma[noinline, nomagic] private AbstractValue getAnImplicitExportsValue() { // implicit exports: anything that is returned from the factory function result = this.getModuleExpr().analyze().getAValue() } + overlay[global] pragma[noinline] private AbstractValue getAnExplicitExportsValue() { // explicit exports: anything assigned to `module.exports` @@ -227,6 +234,7 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range private predicate isPseudoDependency(string s) { s = ["exports", "require", "module"] } /** An AMD dependency, considered as a path expression. */ +overlay[global] private class AmdDependencyPath extends PathExprCandidate { AmdDependencyPath() { exists(AmdModuleDefinition amd | @@ -239,6 +247,7 @@ private class AmdDependencyPath extends PathExprCandidate { } /** A constant path element appearing in an AMD dependency expression. */ +overlay[global] deprecated private class ConstantAmdDependencyPathElement extends PathExpr, ConstantString { ConstantAmdDependencyPathElement() { this = any(AmdDependencyPath amd).getAPart() } @@ -281,6 +290,7 @@ private class AmdDependencyImport extends Import { * Specifically, we look for files whose absolute path ends with the imported path, possibly * adding well-known JavaScript file extensions like `.js`. */ + overlay[global] private File guessTarget() { exists(FilePath imported, string abspath, string dirname, string basename | this.targetCandidate(result, abspath, imported, dirname, basename) @@ -303,6 +313,7 @@ private class AmdDependencyImport extends Import { * Additionally, `abspath` is bound to the absolute path of `f`, `imported` to the imported path, and * `dirname` and `basename` to the dirname and basename (respectively) of `imported`. */ + overlay[global] private predicate targetCandidate( File f, string abspath, FilePath imported, string dirname, string basename ) { @@ -316,10 +327,12 @@ private class AmdDependencyImport extends Import { /** * Gets the module whose absolute path matches this import, if there is only a single such module. */ + overlay[global] private Module resolveByAbsolutePath() { result.getFile() = unique(File file | file = this.guessTarget()) } + overlay[global] override Module getImportedModule() { result = super.getImportedModule() or @@ -348,14 +361,12 @@ private class AmdDependencyImport extends Import { */ class AmdModule extends Module { cached - AmdModule() { - Stages::DataFlowStage::ref() and - exists(unique(AmdModuleDefinition def | amdModuleTopLevel(def, this))) - } + AmdModule() { exists(unique(AmdModuleDefinition def | amdModuleTopLevel(def, this))) } /** Gets the definition of this module. */ AmdModuleDefinition getDefine() { amdModuleTopLevel(result, this) } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(DataFlow::PropWrite pwn | result = pwn.getRhs() | pwn.getBase().analyze().getAValue() = this.getDefine().getAModuleExportsValue() and @@ -363,6 +374,7 @@ class AmdModule extends Module { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { // Assigned to `module.exports` via the factory's `module` parameter exists(AbstractModuleObject m, DataFlow::PropWrite write | diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index db0a2e153d5..6a0d35abea5 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the AST-based representation of JavaScript programs. */ +overlay[local] +module; import javascript private import internal.StmtContainers @@ -470,6 +472,7 @@ module AST { */ class ValueNode extends AstNode, @dataflownode { /** Gets type inference results for this element. */ + overlay[global] DataFlow::AnalyzedNode analyze() { result = DataFlow::valueNode(this).analyze() } /** Gets the data flow node associated with this program element. */ @@ -481,6 +484,7 @@ module AST { * This can be used to map an expression to the class it refers to, or * associate it with a named value coming from an dependency. */ + overlay[global] ExprNameBindingNode getNameBinding() { result = this } /** @@ -490,6 +494,7 @@ module AST { * (according to the type system), or to associate it with a named type coming * from a dependency. */ + overlay[global] TypeNameBindingNode getTypeBinding() { TypeResolution::valueHasType(this, result) } } } diff --git a/javascript/ql/lib/semmle/javascript/CFG.qll b/javascript/ql/lib/semmle/javascript/CFG.qll index 95e1e9aef72..2270ddfeaaf 100644 --- a/javascript/ql/lib/semmle/javascript/CFG.qll +++ b/javascript/ql/lib/semmle/javascript/CFG.qll @@ -272,6 +272,8 @@ * Note that the `import` statement as a whole is part of the CFG of the body, while its single * import specifier `x as y` forms part of the preamble. */ +overlay[local] +module; import javascript private import internal.StmtContainers diff --git a/javascript/ql/lib/semmle/javascript/Classes.qll b/javascript/ql/lib/semmle/javascript/Classes.qll index 394ab791027..2485553370c 100644 --- a/javascript/ql/lib/semmle/javascript/Classes.qll +++ b/javascript/ql/lib/semmle/javascript/Classes.qll @@ -4,6 +4,8 @@ * Class declarations and class expressions are modeled by (QL) classes `ClassDeclaration` * and `ClassExpression`, respectively, which are both subclasses of `ClassDefinition`. */ +overlay[local] +module; import javascript @@ -119,6 +121,7 @@ class ClassOrInterface extends @class_or_interface, TypeParameterized { * * Anonymous classes and interfaces do not have a canonical name. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } /** @@ -253,6 +256,7 @@ class ClassDefinition extends @class_definition, ClassOrInterface, AST::ValueNod /** * Gets the definition of the super class of this class, if it can be determined. */ + overlay[global] ClassDefinition getSuperClassDefinition() { result = this.getSuperClass().analyze().getAValue().(AbstractClass).getClass() } @@ -580,6 +584,7 @@ class MemberDeclaration extends @property, Documentable { int getMemberIndex() { properties(this, _, result, _, _) } /** Holds if the name of this member is computed by an impure expression. */ + overlay[global] predicate hasImpureNameExpr() { this.isComputed() and this.getNameExpr().isImpure() } /** diff --git a/javascript/ql/lib/semmle/javascript/Closure.qll b/javascript/ql/lib/semmle/javascript/Closure.qll index c3169833339..fd13023b2e6 100644 --- a/javascript/ql/lib/semmle/javascript/Closure.qll +++ b/javascript/ql/lib/semmle/javascript/Closure.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the Closure-Library module system. */ +overlay[local] +module; import javascript @@ -40,6 +42,7 @@ module Closure { /** * A reference to a Closure namespace. */ + overlay[global] deprecated class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range { /** * Gets the namespace being referenced. @@ -47,6 +50,7 @@ module Closure { string getClosureNamespace() { result = super.getClosureNamespace() } } + overlay[global] deprecated module ClosureNamespaceRef { /** * A reference to a Closure namespace. @@ -64,9 +68,11 @@ module Closure { /** * A data flow node that returns the value of a closure namespace. */ + overlay[global] deprecated class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range { } + overlay[global] deprecated module ClosureNamespaceAccess { /** * A data flow node that returns the value of a closure namespace. @@ -79,6 +85,7 @@ module Closure { /** * A call to a method on the `goog.` namespace, as a closure reference. */ + overlay[global] abstract deprecated private class DefaultNamespaceRef extends DataFlow::MethodCallNode, ClosureNamespaceRef::Range { @@ -91,6 +98,7 @@ module Closure { * Holds if `node` is the data flow node corresponding to the expression in * a top-level expression statement. */ + overlay[global] deprecated private predicate isTopLevelExpr(DataFlow::Node node) { any(TopLevel tl).getAChildStmt().(ExprStmt).getExpr().flow() = node } @@ -98,6 +106,7 @@ module Closure { /** * A top-level call to `goog.provide`. */ + overlay[global] deprecated private class DefaultClosureProvideCall extends DefaultNamespaceRef { DefaultClosureProvideCall() { this.getMethodName() = "provide" and @@ -108,12 +117,14 @@ module Closure { /** * A top-level call to `goog.provide`. */ + overlay[global] deprecated class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall { } /** * A call to `goog.require`. */ + overlay[global] deprecated private class DefaultClosureRequireCall extends DefaultNamespaceRef, ClosureNamespaceAccess::Range { @@ -123,12 +134,14 @@ module Closure { /** * A call to `goog.require`. */ + overlay[global] deprecated class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall { } /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ + overlay[global] deprecated private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef { DefaultClosureModuleDeclaration() { (this.getMethodName() = "module" or this.getMethodName() = "declareModuleId") and @@ -139,6 +152,7 @@ module Closure { /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ + overlay[global] deprecated class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration { } @@ -156,6 +170,7 @@ module Closure { /** * Gets the call to `goog.module` or `goog.declareModuleId` in this module. */ + overlay[global] deprecated ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this } /** @@ -181,6 +196,7 @@ module Closure { result = this.getScope().getVariable("exports") } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(DataFlow::PropWrite write, Expr base | result = write.getRhs() and @@ -193,6 +209,7 @@ module Closure { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { result = this.getExportsVariable().getAnAssignedExpr().flow() } @@ -232,6 +249,7 @@ module Closure { /** * Holds if `name` is a closure namespace, including proper namespace prefixes. */ + overlay[global] pragma[noinline] predicate isClosureNamespace(string name) { exists(string namespace | @@ -253,6 +271,7 @@ module Closure { * Holds if a prefix of `name` is a closure namespace. */ bindingset[name] + overlay[global] private predicate hasClosureNamespacePrefix(string name) { isClosureNamespace(name.substring(0, name.indexOf("."))) or @@ -262,6 +281,7 @@ module Closure { /** * Gets the closure namespace path addressed by the given data flow node, if any. */ + overlay[global] string getClosureNamespaceFromSourceNode(DataFlow::SourceNode node) { node = AccessPath::getAReferenceOrAssignmentTo(result) and hasClosureNamespacePrefix(result) @@ -270,6 +290,7 @@ module Closure { /** * Gets the closure namespace path written to by the given property write, if any. */ + overlay[global] string getWrittenClosureNamespace(DataFlow::PropWrite node) { node.getRhs() = AccessPath::getAnAssignmentTo(result) and hasClosureNamespacePrefix(result) @@ -278,6 +299,7 @@ module Closure { /** * Gets a data flow node that refers to the given value exported from a Closure module. */ + overlay[global] DataFlow::SourceNode moduleImport(string moduleName) { getClosureNamespaceFromSourceNode(result) = moduleName } @@ -285,6 +307,7 @@ module Closure { /** * A call to `goog.bind`, as a partial function invocation. */ + overlay[global] private class BindCall extends DataFlow::PartialInvokeNode::Range, DataFlow::CallNode { BindCall() { this = moduleImport("goog.bind").getACall() } diff --git a/javascript/ql/lib/semmle/javascript/Comments.qll b/javascript/ql/lib/semmle/javascript/Comments.qll index 889843728a2..46ce8b8a4ba 100644 --- a/javascript/ql/lib/semmle/javascript/Comments.qll +++ b/javascript/ql/lib/semmle/javascript/Comments.qll @@ -1,4 +1,6 @@ /** Provides classes for working with JavaScript comments. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Constants.qll b/javascript/ql/lib/semmle/javascript/Constants.qll index 21e70869c67..b0b4a6c03ee 100644 --- a/javascript/ql/lib/semmle/javascript/Constants.qll +++ b/javascript/ql/lib/semmle/javascript/Constants.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with expressions that evaluate to constant values. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages diff --git a/javascript/ql/lib/semmle/javascript/DefUse.qll b/javascript/ql/lib/semmle/javascript/DefUse.qll index a9d021f939e..95cf57d543d 100644 --- a/javascript/ql/lib/semmle/javascript/DefUse.qll +++ b/javascript/ql/lib/semmle/javascript/DefUse.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for working with variable definitions and uses. */ +overlay[local] +module; import javascript @@ -231,6 +233,7 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { * * For global variables, each definition is considered to reach each use. */ + overlay[global] VarDef getADef() { result = this.getSsaVariable().getDefinition().getAContributingVarDef() or result.getAVariable() = this.getVariable().(GlobalVariable) @@ -241,5 +244,6 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { * * This predicate is only defined for variables that can be SSA-converted. */ + overlay[global] SsaVariable getSsaVariable() { result.getAUse() = this } } diff --git a/javascript/ql/lib/semmle/javascript/E4X.qll b/javascript/ql/lib/semmle/javascript/E4X.qll index cd112d60664..ce917c48cff 100644 --- a/javascript/ql/lib/semmle/javascript/E4X.qll +++ b/javascript/ql/lib/semmle/javascript/E4X.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with E4X. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index e584697c1e4..6eee9ea56e5 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -1,4 +1,6 @@ /** Provides classes for working with ECMAScript 2015 modules. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -29,11 +31,13 @@ class ES2015Module extends Module { /** Gets an export declaration in this module. */ ExportDeclaration getAnExport() { result.getTopLevel() = this } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { exists(ExportDeclaration ed | ed = this.getAnExport() and result = ed.getSourceNode(name)) } /** Holds if this module exports variable `v` under the name `name`. */ + overlay[global] predicate exportsAs(LexicalName v, string name) { this.getAnExport().exportsAs(v, name) } override predicate isStrict() { @@ -50,6 +54,7 @@ class ES2015Module extends Module { * When a module has both named and `default` exports, the non-standard interpretation can lead to * ambiguities, so we only allow the standard interpretation in that case. */ + overlay[global] predicate hasBothNamedAndDefaultExports() { hasNamedExports(this) and hasDefaultExport(this) @@ -59,6 +64,7 @@ class ES2015Module extends Module { /** * Holds if `mod` contains one or more named export declarations other than `default`. */ +overlay[global] private predicate hasNamedExports(ES2015Module mod) { mod.getAnExport().(ExportNamedDeclaration).getASpecifier().getExportedName() != "default" or @@ -71,6 +77,7 @@ private predicate hasNamedExports(ES2015Module mod) { /** * Holds if this module contains a default export. */ +overlay[global] private predicate hasDefaultExport(ES2015Module mod) { // export default foo; mod.getAnExport() instanceof ExportDefaultDeclaration @@ -172,6 +179,7 @@ class ImportDeclaration extends Stmt, Import, @import_declaration { } /** A literal path expression appearing in an `import` declaration. */ +overlay[global] deprecated private class LiteralImportPath extends PathExpr, ConstantString { LiteralImportPath() { exists(ImportDeclaration req | this = req.getChildExpr(-1)) } @@ -198,6 +206,7 @@ deprecated private class LiteralImportPath extends PathExpr, ConstantString { */ class ImportSpecifier extends Expr, @import_specifier { /** Gets the import declaration in which this specifier appears. */ + overlay[global] ImportDeclaration getImportDeclaration() { result.getASpecifier() = this } /** Gets the imported symbol; undefined for default and namespace import specifiers. */ @@ -297,6 +306,7 @@ class BulkImportDeclaration extends ImportDeclaration { * import console, { log } from 'console'; * ``` */ +overlay[global] class SelectiveImportDeclaration extends ImportDeclaration { SelectiveImportDeclaration() { not this instanceof BulkImportDeclaration } @@ -330,9 +340,11 @@ class SelectiveImportDeclaration extends ImportDeclaration { */ abstract class ExportDeclaration extends Stmt, @export_declaration { /** Gets the module to which this export declaration belongs. */ + overlay[global] ES2015Module getEnclosingModule() { this = result.getAnExport() } /** Holds if this export declaration exports variable `v` under the name `name`. */ + overlay[global] abstract predicate exportsAs(LexicalName v, string name); /** @@ -356,6 +368,7 @@ abstract class ExportDeclaration extends Stmt, @export_declaration { * exports under the same name. In particular, its source node belongs * to module `a` or possibly to some other module from which `a` re-exports. */ + overlay[global] abstract DataFlow::Node getSourceNode(string name); /** Holds if is declared with the `type` keyword, so only types are exported. */ @@ -407,11 +420,13 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati /** Gets the name of the module from which this declaration re-exports. */ override ConstantString getImportedPath() { result = this.getChildExpr(0) } + overlay[global] override predicate exportsAs(LexicalName v, string name) { this.getReExportedES2015Module().exportsAs(v, name) and not isShadowedFromBulkExport(this, name) } + overlay[global] override DataFlow::Node getSourceNode(string name) { result = this.getReExportedES2015Module().getAnExport().getSourceNode(name) } @@ -430,6 +445,7 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati * At runtime, the interface `X` will have been removed, so `X` is actually re-exported anyway, * but we ignore this subtlety. */ +overlay[global] private predicate isShadowedFromBulkExport(BulkReExportDeclaration reExport, string name) { exists(ExportNamedDeclaration other | other.getTopLevel() = reExport.getEnclosingModule() | other.getAnExportedDecl().getName() = name @@ -452,6 +468,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar /** Gets the operand statement or expression that is exported by this declaration. */ ExprOrStmt getOperand() { result = this.getChild(0) } + overlay[global] override predicate exportsAs(LexicalName v, string name) { name = "default" and v = this.getADecl().getVariable() } @@ -464,6 +481,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar ) } + overlay[global] override DataFlow::Node getSourceNode(string name) { name = "default" and result = DataFlow::valueNode(this.getOperand()) } @@ -506,6 +524,7 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio /** Gets the variable declaration, if any, exported by this named export. */ VarDecl getADecl() { result = this.getAnExportedDecl() } + overlay[global] override predicate exportsAs(LexicalName v, string name) { exists(LexicalDecl vd | vd = this.getAnExportedDecl() | name = vd.getName() and v = vd.getALexicalName() @@ -518,6 +537,7 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio ) } + overlay[global] override DataFlow::Node getSourceNode(string name) { exists(VarDef d | d.getTarget() = this.getADecl() | name = d.getTarget().(VarDecl).getName() and @@ -555,6 +575,7 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio private import semmle.javascript.dataflow.internal.PreCallGraphStep +overlay[global] private class ExportNamespaceStep extends PreCallGraphStep { override predicate storeStep(DataFlow::Node pred, DataFlow::SourceNode succ, string prop) { exists(ExportNamedDeclaration exprt, ExportNamespaceSpecifier spec | @@ -572,6 +593,7 @@ private class ExportNamespaceStep extends PreCallGraphStep { private class TypeOnlyExportDeclaration extends ExportNamedDeclaration { TypeOnlyExportDeclaration() { this.isTypeOnly() } + overlay[global] override predicate exportsAs(LexicalName v, string name) { super.exportsAs(v, name) and not v instanceof Variable @@ -745,9 +767,11 @@ abstract class ReExportDeclaration extends ExportDeclaration { abstract ConstantString getImportedPath(); /** Gets the module from which this declaration re-exports, if it is an ES2015 module. */ + overlay[global] ES2015Module getReExportedES2015Module() { result = this.getReExportedModule() } /** Gets the module from which this declaration re-exports. */ + overlay[global] cached Module getReExportedModule() { Stages::Imports::ref() and @@ -756,6 +780,7 @@ abstract class ReExportDeclaration extends ExportDeclaration { } /** A literal path expression appearing in a re-export declaration. */ +overlay[global] deprecated private class LiteralReExportPath extends PathExpr, ConstantString { LiteralReExportPath() { exists(ReExportDeclaration bred | this = bred.getImportedPath()) } @@ -795,11 +820,13 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla class OriginalExportDeclaration extends ExportDeclaration { OriginalExportDeclaration() { not this instanceof ReExportDeclaration } + overlay[global] override predicate exportsAs(LexicalName v, string name) { this.(ExportDefaultDeclaration).exportsAs(v, name) or this.(ExportNamedDeclaration).exportsAs(v, name) } + overlay[global] override DataFlow::Node getSourceNode(string name) { result = this.(ExportDefaultDeclaration).getSourceNode(name) or result = this.(ExportNamedDeclaration).getSourceNode(name) diff --git a/javascript/ql/lib/semmle/javascript/Errors.qll b/javascript/ql/lib/semmle/javascript/Errors.qll index 6a5d73566a4..518b76b5346 100644 --- a/javascript/ql/lib/semmle/javascript/Errors.qll +++ b/javascript/ql/lib/semmle/javascript/Errors.qll @@ -1,4 +1,6 @@ /** Provides classes for working with syntax errors. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll index ae02511ba41..177ef6991ce 100644 --- a/javascript/ql/lib/semmle/javascript/Expr.qll +++ b/javascript/ql/lib/semmle/javascript/Expr.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with expressions. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -115,12 +117,14 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { string getStringValue() { Stages::Ast::ref() and result = getStringValue(this) } /** Holds if this expression is impure, that is, its evaluation could have side effects. */ + overlay[global] predicate isImpure() { any() } /** * Holds if this expression is pure, that is, its evaluation is guaranteed * to be side-effect free. */ + overlay[global] predicate isPure() { not this.isImpure() } /** @@ -153,21 +157,25 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { * Holds if this expression accesses the global variable `g`, either directly * or through the `window` object. */ + overlay[global] predicate accessesGlobal(string g) { this.flow().accessesGlobal(g) } /** * Holds if this expression may evaluate to `s`. */ + overlay[global] predicate mayHaveStringValue(string s) { this.flow().mayHaveStringValue(s) } /** * Holds if this expression may evaluate to `b`. */ + overlay[global] predicate mayHaveBooleanValue(boolean b) { this.flow().mayHaveBooleanValue(b) } /** * Holds if this expression may refer to the initial value of parameter `p`. */ + overlay[global] predicate mayReferToParameter(Parameter p) { DataFlow::parameterNode(p).flowsToExpr(this) } /** @@ -178,6 +186,7 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { * Has no result if the expression is in a JavaScript file or in a TypeScript * file that was extracted without type information. */ + overlay[global] deprecated Type getType() { ast_node_type(this, result) } /** @@ -250,6 +259,7 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { * Gets the data-flow node where exceptions thrown by this expression will * propagate if this expression causes an exception to be thrown. */ + overlay[caller] pragma[inline] DataFlow::Node getExceptionTarget() { result = getCatchParameterFromStmt(this.getRawEnclosingStmt(this)) @@ -301,6 +311,7 @@ class Identifier extends @identifier, ExprOrType { * ``` */ class Label extends @label, Identifier, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "Label" } @@ -330,6 +341,7 @@ class Literal extends @literal, Expr { */ string getRawValue() { literals(_, result, this) } + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "Literal" } @@ -352,6 +364,7 @@ class ParExpr extends @par_expr, Expr { override int getIntValue() { result = this.getExpression().getIntValue() } + overlay[global] override predicate isImpure() { this.getExpression().isImpure() } override Expr getUnderlyingValue() { result = this.getExpression().getUnderlyingValue() } @@ -500,6 +513,7 @@ class RegExpLiteral extends @regexp_literal, Literal, RegExpParent { * ``` */ class ThisExpr extends @this_expr, Expr { + overlay[global] override predicate isImpure() { none() } /** @@ -555,6 +569,7 @@ class ArrayExpr extends @array_expr, Expr { /** Holds if this array literal has an omitted element. */ predicate hasOmittedElement() { this.elementIsOmitted(_) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override string getAPrimaryQlClass() { result = "ArrayExpr" } @@ -597,6 +612,7 @@ class ObjectExpr extends @obj_expr, Expr { */ predicate hasTrailingComma() { this.getLastToken().getPreviousToken().getValue() = "," } + overlay[global] override predicate isImpure() { this.getAProperty().isImpure() } override string getAPrimaryQlClass() { result = "ObjectExpr" } @@ -664,6 +680,7 @@ class Property extends @property, Documentable { * Holds if this property is impure, that is, the evaluation of its name or * its initializer expression could have side effects. */ + overlay[global] predicate isImpure() { this.isComputed() and this.getNameExpr().isImpure() or @@ -826,6 +843,7 @@ class FunctionExpr extends @function_expr, Expr, Function { Stages::Ast::ref() and result = Expr.super.getContainer() } + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "FunctionExpr" } @@ -846,6 +864,7 @@ class ArrowFunctionExpr extends @arrow_function_expr, Expr, Function { override StmtContainer getEnclosingContainer() { result = Expr.super.getContainer() } + overlay[global] override predicate isImpure() { none() } override Function getThisBinder() { @@ -877,6 +896,7 @@ class SeqExpr extends @seq_expr, Expr { /** Gets the last expression in this sequence. */ Expr getLastOperand() { result = this.getOperand(this.getNumOperands() - 1) } + overlay[global] override predicate isImpure() { this.getAnOperand().isImpure() } override Expr getUnderlyingValue() { result = this.getLastOperand().getUnderlyingValue() } @@ -906,6 +926,7 @@ class ConditionalExpr extends @conditional_expr, Expr { /** Gets either the 'then' or the 'else' expression of this conditional. */ Expr getABranch() { result = this.getConsequent() or result = this.getAlternate() } + overlay[global] override predicate isImpure() { this.getCondition().isImpure() or this.getABranch().isImpure() @@ -985,6 +1006,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is an approximation, computed using only local data flow. */ + overlay[global] predicate hasOptionArgument(int i, string name, Expr value) { value = this.flow().(DataFlow::InvokeNode).getOptionArgument(i, name).asExpr() } @@ -997,6 +1019,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CallSignatureType getResolvedSignature() { invoke_expr_signature(this, result) } /** @@ -1014,6 +1037,7 @@ class InvokeExpr extends @invokeexpr, Expr { * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CanonicalFunctionName getResolvedCalleeName() { ast_node_symbol(this, result) } /** @@ -1022,6 +1046,7 @@ class InvokeExpr extends @invokeexpr, Expr { * Note that the resolved function may be overridden in a subclass and thus is not * necessarily the actual target of this invocation at runtime. */ + overlay[global] Function getResolvedCallee() { TypeResolution::callTarget(this, result) } } @@ -1156,6 +1181,7 @@ class DotExpr extends @dot_expr, PropAccess { /** Gets the identifier specifying the name of the accessed property. */ Identifier getProperty() { result = this.getChildExpr(1) } + overlay[global] override predicate isImpure() { this.getBase().isImpure() } override string getAPrimaryQlClass() { result = "DotExpr" } @@ -1176,6 +1202,7 @@ class IndexExpr extends @index_expr, PropAccess { override string getPropertyName() { result = this.getIndex().(Literal).getValue() } + overlay[global] override predicate isImpure() { this.getBase().isImpure() or this.getIndex().isImpure() @@ -1201,6 +1228,7 @@ class UnaryExpr extends @unaryexpr, Expr { /** Gets the operator of this expression. */ string getOperator() { none() } + overlay[global] override predicate isImpure() { this.getOperand().isImpure() } override ControlFlowNode getFirstControlFlowNode() { @@ -1302,6 +1330,7 @@ class VoidExpr extends @void_expr, UnaryExpr { class DeleteExpr extends @delete_expr, UnaryExpr { override string getOperator() { result = "delete" } + overlay[global] override predicate isImpure() { any() } } @@ -1352,6 +1381,7 @@ class BinaryExpr extends @binaryexpr, Expr { /** Gets the operator of this expression. */ string getOperator() { none() } + overlay[global] override predicate isImpure() { this.getAnOperand().isImpure() } override ControlFlowNode getFirstControlFlowNode() { @@ -2233,6 +2263,7 @@ class YieldExpr extends @yield_expr, Expr { /** Holds if this is a `yield*` expression. */ predicate isDelegating() { is_delegating(this) } + overlay[global] override predicate isImpure() { any() } override ControlFlowNode getFirstControlFlowNode() { @@ -2289,6 +2320,7 @@ class ComprehensionExpr extends @comprehension_expr, Expr { /** Gets the body expression of this comprehension. */ Expr getBody() { result = this.getChildExpr(0) } + overlay[global] override predicate isImpure() { this.getABlock().isImpure() or this.getAFilter().isImpure() or @@ -2349,6 +2381,7 @@ class ComprehensionBlock extends @comprehension_block, Expr { /** Gets the domain over which this comprehension block iterates. */ Expr getDomain() { result = this.getChildExpr(1) } + overlay[global] override predicate isImpure() { this.getIterator().isImpure() or this.getDomain().isImpure() @@ -2675,6 +2708,7 @@ class AwaitExpr extends @await_expr, Expr { /** Gets the operand of this `await` expression. */ Expr getOperand() { result = this.getChildExpr(0) } + overlay[global] override predicate isImpure() { any() } override ControlFlowNode getFirstControlFlowNode() { @@ -2698,6 +2732,7 @@ class AwaitExpr extends @await_expr, Expr { * ``` */ class FunctionSentExpr extends @function_sent_expr, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "FunctionSentExpr" } @@ -2857,6 +2892,7 @@ class DynamicImportExpr extends @dynamic_import, Expr, Import { } /** A literal path expression appearing in a dynamic import. */ +overlay[global] deprecated private class LiteralDynamicImportPath extends PathExpr, ConstantString { LiteralDynamicImportPath() { exists(DynamicImportExpr di | this.getParentExpr*() = di.getSource()) @@ -2919,6 +2955,7 @@ class OptionalChainRoot extends ChainElem { * ``` */ class ImportMetaExpr extends @import_meta_expr, Expr { + overlay[global] override predicate isImpure() { none() } override string getAPrimaryQlClass() { result = "ImportMetaExpr" } diff --git a/javascript/ql/lib/semmle/javascript/Externs.qll b/javascript/ql/lib/semmle/javascript/Externs.qll index a2a2533d849..f894107528c 100644 --- a/javascript/ql/lib/semmle/javascript/Externs.qll +++ b/javascript/ql/lib/semmle/javascript/Externs.qll @@ -36,6 +36,8 @@ * Array.prototype.length; * */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Files.qll b/javascript/ql/lib/semmle/javascript/Files.qll index b9274d92eba..8cc14ca0492 100644 --- a/javascript/ql/lib/semmle/javascript/Files.qll +++ b/javascript/ql/lib/semmle/javascript/Files.qll @@ -1,4 +1,6 @@ /** Provides classes for working with files and folders. */ +overlay[local] +module; import javascript private import NodeModuleResolutionImpl @@ -33,12 +35,14 @@ module Folder = Impl::Folder; /** A folder. */ class Folder extends Container, Impl::Folder { /** Gets the file or subfolder in this folder that has the given `name`, if any. */ + overlay[global] Container getChildContainer(string name) { result = this.getAChildContainer() and result.getBaseName() = name } /** Gets the file in this folder that has the given `stem` and `extension`, if any. */ + overlay[global] File getFile(string stem, string extension) { result = this.getAChildContainer() and result.getStem() = stem and @@ -46,6 +50,7 @@ class Folder extends Container, Impl::Folder { } /** Like `getFile` except `d.ts` is treated as a single extension. */ + overlay[global] private File getFileLongExtension(string stem, string extension) { not (stem.matches("%.d") and extension = "ts") and result = this.getFile(stem, extension) @@ -65,6 +70,7 @@ class Folder extends Container, Impl::Folder { * * HTML files will not be found by this method. */ + overlay[global] File getJavaScriptFile(string stem) { result = min(int p, string ext | @@ -78,6 +84,7 @@ class Folder extends Container, Impl::Folder { * Gets an implementation file and/or a typings file from this folder that has the given `stem`. * This could be a single `.ts` file or a pair of `.js` and `.d.ts` files. */ + overlay[global] File getJavaScriptFileOrTypings(string stem) { exists(File jsFile | jsFile = this.getJavaScriptFile(stem) | result = jsFile @@ -88,6 +95,7 @@ class Folder extends Container, Impl::Folder { } /** Gets a subfolder contained in this folder. */ + overlay[global] Folder getASubFolder() { result = this.getAChildContainer() } } diff --git a/javascript/ql/lib/semmle/javascript/Functions.qll b/javascript/ql/lib/semmle/javascript/Functions.qll index b72bfbc888e..9b1f98c3d0b 100644 --- a/javascript/ql/lib/semmle/javascript/Functions.qll +++ b/javascript/ql/lib/semmle/javascript/Functions.qll @@ -1,4 +1,6 @@ /** Provides classes for working with functions. */ +overlay[local] +module; import javascript @@ -434,11 +436,13 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine * * This predicate is only populated for files extracted with full TypeScript extraction. */ + overlay[global] deprecated CanonicalFunctionName getCanonicalName() { ast_node_symbol(this, result) } /** * Gets the call signature of this function, as determined by the TypeScript compiler, if any. */ + overlay[global] deprecated CallSignatureType getCallSignature() { declared_function_signature(this, result) } } diff --git a/javascript/ql/lib/semmle/javascript/HTML.qll b/javascript/ql/lib/semmle/javascript/HTML.qll index 43b66db459f..8f70150963e 100644 --- a/javascript/ql/lib/semmle/javascript/HTML.qll +++ b/javascript/ql/lib/semmle/javascript/HTML.qll @@ -1,4 +1,6 @@ /** Provides classes for working with HTML documents. */ +overlay[local] +module; import javascript @@ -283,6 +285,7 @@ module HTML { /** * A path string arising from the `src` attribute of a `script` tag. */ + overlay[global] deprecated private class ScriptSrcPath extends PathString { ScriptSrcPath() { scriptSrc(this, _) } diff --git a/javascript/ql/lib/semmle/javascript/JSDoc.qll b/javascript/ql/lib/semmle/javascript/JSDoc.qll index 85b7695cd70..f63e24d9c6c 100644 --- a/javascript/ql/lib/semmle/javascript/JSDoc.qll +++ b/javascript/ql/lib/semmle/javascript/JSDoc.qll @@ -1,4 +1,6 @@ /** Provides classes for working with JSDoc comments. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -627,6 +629,7 @@ module JSDoc { /** * A statement container which may declare JSDoc name aliases. */ + overlay[global] deprecated class Environment extends StmtContainer { /** * Gets the fully qualified name aliased by the given unqualified name diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index 19fc3ec84d7..ca322bacd46 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with JSON data. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/JSX.qll b/javascript/ql/lib/semmle/javascript/JSX.qll index ed8a7b097a6..d182f155354 100644 --- a/javascript/ql/lib/semmle/javascript/JSX.qll +++ b/javascript/ql/lib/semmle/javascript/JSX.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with JSX code. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Lines.qll b/javascript/ql/lib/semmle/javascript/Lines.qll index 1db9187008a..272be691498 100644 --- a/javascript/ql/lib/semmle/javascript/Lines.qll +++ b/javascript/ql/lib/semmle/javascript/Lines.qll @@ -4,6 +4,8 @@ * This information is only available for snapshots that have been extracted with * the `--extract-program-text` flag. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index a3ad79ef93e..87b41c2cb43 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -1,4 +1,6 @@ /** Provides classes for working with locations and program elements that have locations. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Modules.qll b/javascript/ql/lib/semmle/javascript/Modules.qll index 8b0330b708b..bc69695121e 100644 --- a/javascript/ql/lib/semmle/javascript/Modules.qll +++ b/javascript/ql/lib/semmle/javascript/Modules.qll @@ -3,6 +3,8 @@ * ECMAScript 2015-style modules, and the older CommonJS and AMD-style * modules. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages @@ -23,9 +25,11 @@ abstract class Module extends TopLevel { Import getAnImport() { result.getTopLevel() = this } /** Gets a module from which this module imports. */ + overlay[global] Module getAnImportedModule() { result = this.getAnImport().getImportedModule() } /** Gets a symbol exported by this module. */ + overlay[global] string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) } /** @@ -39,12 +43,14 @@ abstract class Module extends TopLevel { * Symbols defined in another module that are re-exported by * this module are only sometimes considered. */ + overlay[global] cached abstract DataFlow::Node getAnExportedValue(string name); /** * Gets a value that is exported as the whole exports object of this module. */ + overlay[global] cached DataFlow::Node getABulkExportedNode() { none() } // overridden in subclasses @@ -55,6 +61,7 @@ abstract class Module extends TopLevel { * This can be used to determine which value a default-import will likely refer to, * as the interaction between different module types is not standardized. */ + overlay[global] DataFlow::Node getDefaultOrBulkExport() { result = [this.getAnExportedValue("default"), this.getABulkExportedNode()] } @@ -69,6 +76,7 @@ abstract class Module extends TopLevel { * This predicate is not part of the public API, it is only exposed to allow * overriding by subclasses. */ + overlay[global] deprecated predicate searchRoot(PathExpr path, Folder searchRoot, int priority) { path.getEnclosingModule() = this and priority = 0 and @@ -90,6 +98,7 @@ abstract class Module extends TopLevel { * resolves to a folder containing a main module (such as `index.js`), then * that file is the result. */ + overlay[global] deprecated File resolve(PathExpr path) { path.getEnclosingModule() = this and ( @@ -124,6 +133,7 @@ abstract class Import extends AstNode { abstract Module getEnclosingModule(); /** DEPRECATED. Use `getImportedPathExpr` instead. */ + overlay[global] deprecated PathExpr getImportedPath() { result = this.getImportedPathExpr() } /** Gets the (unresolved) path that this import refers to. */ @@ -138,6 +148,7 @@ abstract class Import extends AstNode { * Any externs module whose name exactly matches the imported * path is assumed to be a possible target of the import. */ + overlay[global] Module resolveExternsImport() { result.isExterns() and result.getName() = this.getImportedPathString() } @@ -145,16 +156,19 @@ abstract class Import extends AstNode { /** * Gets the module the path of this import resolves to. */ + overlay[global] Module resolveImportedPath() { result.getFile() = this.getImportedFile() } /** * Gets the module the path of this import resolves to. */ + overlay[global] File getImportedFile() { result = ImportPathResolver::resolveExpr(this.getImportedPathExpr()) } /** * DEPRECATED. Use `getImportedModule()` instead. */ + overlay[global] deprecated Module resolveFromTypeScriptSymbol() { exists(CanonicalName symbol | ast_node_symbol(this, symbol) and @@ -170,6 +184,7 @@ abstract class Import extends AstNode { * behavior of Node.js imports, which prefer core modules such as `fs` over any * source module of the same name. */ + overlay[global] cached Module getImportedModule() { Stages::Imports::ref() and @@ -210,6 +225,7 @@ abstract class Import extends AstNode { * in cases where it would cause ambiguity between named exports and properties * of a default export. */ + overlay[global] final DataFlow::Node getImportedModuleNodeStrict() { result = this.getImportedModuleNode() and not ( diff --git a/javascript/ql/lib/semmle/javascript/NPM.qll b/javascript/ql/lib/semmle/javascript/NPM.qll index cbe580b4568..857fc163804 100644 --- a/javascript/ql/lib/semmle/javascript/NPM.qll +++ b/javascript/ql/lib/semmle/javascript/NPM.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with NPM module definitions and dependencies. */ +overlay[local?] +module; import javascript private import NodeModuleResolutionImpl diff --git a/javascript/ql/lib/semmle/javascript/NodeJS.qll b/javascript/ql/lib/semmle/javascript/NodeJS.qll index 7e9e2fdea90..dfc2dd15ad3 100644 --- a/javascript/ql/lib/semmle/javascript/NodeJS.qll +++ b/javascript/ql/lib/semmle/javascript/NodeJS.qll @@ -17,6 +17,7 @@ private import semmle.javascript.dataflow.internal.DataFlowNode * process.stdout.write(fs.readFileSync(process.argv[i], 'utf8')); * ``` */ +overlay[local] class NodeModule extends Module { NodeModule() { is_module(this) and @@ -36,11 +37,13 @@ class NodeModule extends Module { * Gets an abstract value representing one or more values that may flow * into this module's `module.exports` property. */ + overlay[global] pragma[noinline] DefiniteAbstractValue getAModuleExportsValue() { result = this.getAModuleExportsProperty().getAValue() } + overlay[global] pragma[noinline] private AbstractProperty getAModuleExportsProperty() { result.getBase().(AbstractModuleObject).getModule() = this and @@ -52,12 +55,14 @@ class NodeModule extends Module { * For performance this predicate only computes relevant expressions (in `getAModuleExportsCandidate`). * So if using this predicate - consider expanding the list of relevant expressions. */ + overlay[global] DataFlow::AnalyzedNode getAModuleExportsNode() { result = getAModuleExportsCandidate() and result.getAValue() = this.getAModuleExportsValue() } /** Gets a symbol exported by this module. */ + overlay[global] override string getAnExportedSymbol() { result = super.getAnExportedSymbol() or @@ -70,6 +75,7 @@ class NodeModule extends Module { ) } + overlay[global] override DataFlow::Node getAnExportedValue(string name) { // a property write whose base is `exports` or `module.exports` exists(DataFlow::PropWrite pwn | result = pwn.getRhs() | @@ -114,6 +120,7 @@ class NodeModule extends Module { ) } + overlay[global] override DataFlow::Node getABulkExportedNode() { Stages::Imports::ref() and exists(DataFlow::PropWrite write | @@ -124,6 +131,7 @@ class NodeModule extends Module { } /** Gets a symbol that the module object inherits from its prototypes. */ + overlay[global] private string getAnImplicitlyExportedSymbol() { exists(ExternalConstructor ec | ec = this.getPrototypeOfExportedExpr() | result = ec.getAMember().getName() @@ -136,6 +144,7 @@ class NodeModule extends Module { } /** Gets an externs declaration of the prototype object of a value exported by this module. */ + overlay[global] private ExternalConstructor getPrototypeOfExportedExpr() { exists(AbstractValue exported | exported = this.getAModuleExportsValue() | result instanceof ObjectExternal @@ -146,6 +155,7 @@ class NodeModule extends Module { ) } + overlay[global] deprecated override predicate searchRoot(PathExpr path, Folder searchRoot, int priority) { path.getEnclosingModule() = this and exists(string pathval | pathval = path.getValue() | @@ -224,6 +234,7 @@ predicate findNodeModulesFolder(Folder f, Folder nodeModules, int distance) { /** * A Node.js `require` variable. */ +overlay[local] private class RequireVariable extends Variable { RequireVariable() { this = any(ModuleScope m).getVariable("require") @@ -236,6 +247,7 @@ private class RequireVariable extends Variable { } } +overlay[local] private predicate isModuleModule(EarlyStageNode nd) { exists(ImportDeclaration imp | imp.getRawImportPath() = "module" | nd = TDestructuredModuleImportNode(imp) @@ -249,6 +261,7 @@ private predicate isModuleModule(EarlyStageNode nd) { ) } +overlay[local] private predicate isCreateRequire(EarlyStageNode nd) { exists(PropAccess prop | isModuleModule(TValueNode(prop.getBase())) and @@ -278,6 +291,7 @@ private predicate isCreateRequire(EarlyStageNode nd) { /** * Holds if `nd` may refer to `require`, either directly or modulo local data flow. */ +overlay[local] cached private predicate isRequire(EarlyStageNode nd) { exists(VarAccess access | @@ -320,6 +334,7 @@ private predicate isRequire(EarlyStageNode nd) { * require('fs') * ``` */ +overlay[local] class Require extends CallExpr, Import { Require() { isRequire(TValueNode(this.getCallee())) } diff --git a/javascript/ql/lib/semmle/javascript/Promises.qll b/javascript/ql/lib/semmle/javascript/Promises.qll index 2feb92e2e55..dfdcdfd632c 100644 --- a/javascript/ql/lib/semmle/javascript/Promises.qll +++ b/javascript/ql/lib/semmle/javascript/Promises.qll @@ -186,11 +186,13 @@ module Promises { /** * Gets the pseudo-field used to describe resolved values in a promise. */ + overlay[local] string valueProp() { result = "$PromiseResolveField$" } /** * Gets the pseudo-field used to describe rejected values in a promise. */ + overlay[local] string errorProp() { result = "$PromiseRejectField$" } /** A property set containing the pseudo-properites of a promise object. */ diff --git a/javascript/ql/lib/semmle/javascript/Regexp.qll b/javascript/ql/lib/semmle/javascript/Regexp.qll index ea2993ae7da..dba2c853008 100644 --- a/javascript/ql/lib/semmle/javascript/Regexp.qll +++ b/javascript/ql/lib/semmle/javascript/Regexp.qll @@ -4,6 +4,8 @@ * Regular expression literals are represented as an abstract syntax tree of regular expression * terms. */ +overlay[local] +module; import javascript private import semmle.javascript.dataflow.InferredTypes @@ -150,6 +152,7 @@ class RegExpTerm extends Locatable, @regexpterm { * /[a-z]+/g; // YES - Regexp literals are always used as regexp * ``` */ + overlay[global] predicate isUsedAsRegExp() { exists(RegExpParent parent | parent = this.getRootTerm().getParent() | parent instanceof RegExpLiteral @@ -964,6 +967,7 @@ class RegExpParseError extends Error, @regexp_parse_error { /** * Holds if `func` is a method defined on `String.prototype` with name `name`. */ +overlay[global] private predicate isNativeStringMethod(Function func, string name) { exists(ExternalInstanceMemberDecl decl | decl.hasQualifiedName("String", name) and @@ -975,6 +979,7 @@ private predicate isNativeStringMethod(Function func, string name) { * Holds if `name` is the name of a property on a Match object returned by `String.prototype.match`, * not including array indices. */ +overlay[global] private predicate isMatchObjectProperty(string name) { any(ExternalInstanceMemberDecl decl).hasQualifiedName("Array", name) or @@ -982,6 +987,7 @@ private predicate isMatchObjectProperty(string name) { } /** Holds if `call` is a call to `match` whose result is used in a way that is incompatible with Match objects. */ +overlay[global] private predicate isUsedAsNonMatchObject(DataFlow::MethodCallNode call) { call.getMethodName() = ["match", "matchAll"] and call.getNumArgument() = 1 and @@ -1006,6 +1012,7 @@ private predicate isUsedAsNonMatchObject(DataFlow::MethodCallNode call) { /** * Holds if `value` is used in a way that suggests it returns a number. */ +overlay[global] pragma[inline] private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { any(Comparison compare) @@ -1027,6 +1034,7 @@ private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { /** * Holds if `source` may be interpreted as a regular expression. */ +overlay[global] cached predicate isInterpretedAsRegExp(DataFlow::Node source) { Stages::Taint::ref() and @@ -1073,6 +1081,7 @@ predicate isInterpretedAsRegExp(DataFlow::Node source) { * Gets a node whose value may flow (inter-procedurally) to `re`, where it is interpreted * as a part of a regular expression. */ +overlay[global] private DataFlow::Node regExpSource(DataFlow::Node re, DataFlow::TypeBackTracker t) { t.start() and re = result and @@ -1090,6 +1099,7 @@ private DataFlow::Node regExpSource(DataFlow::Node re, DataFlow::TypeBackTracker * Gets a node whose value may flow (inter-procedurally) to `re`, where it is interpreted * as a part of a regular expression. */ +overlay[global] private DataFlow::Node regExpSource(DataFlow::Node re) { result = regExpSource(re, DataFlow::TypeBackTracker::end()) } @@ -1098,6 +1108,7 @@ private DataFlow::Node regExpSource(DataFlow::Node re) { * A node whose value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] abstract class RegExpPatternSource extends DataFlow::Node { /** * Gets a node where the pattern of this node is parsed as a part of @@ -1126,6 +1137,7 @@ abstract class RegExpPatternSource extends DataFlow::Node { /** * A regular expression literal, viewed as the pattern source for itself. */ +overlay[global] private class RegExpLiteralPatternSource extends RegExpPatternSource, DataFlow::ValueNode { override RegExpLiteral astNode; @@ -1145,6 +1157,7 @@ private class RegExpLiteralPatternSource extends RegExpPatternSource, DataFlow:: * A node whose string value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] private class StringRegExpPatternSource extends RegExpPatternSource { DataFlow::Node parse; @@ -1169,6 +1182,7 @@ private class StringRegExpPatternSource extends RegExpPatternSource { * A node whose string value may flow to a position where it is interpreted * as a part of a regular expression. */ +overlay[global] private class StringConcatRegExpPatternSource extends RegExpPatternSource { DataFlow::Node parse; @@ -1331,6 +1345,7 @@ module RegExp { /** * Gets the AST of a regular expression object that can flow to `node`. */ + overlay[global] RegExpTerm getRegExpObjectFromNode(DataFlow::Node node) { exists(DataFlow::RegExpCreationNode regexp | regexp.getAReference().flowsTo(node) and @@ -1342,6 +1357,7 @@ module RegExp { * Gets the AST of a regular expression that can flow to `node`, * including `RegExp` objects as well as strings interpreted as regular expressions. */ + overlay[global] RegExpTerm getRegExpFromNode(DataFlow::Node node) { result = getRegExpObjectFromNode(node) or diff --git a/javascript/ql/lib/semmle/javascript/SSA.qll b/javascript/ql/lib/semmle/javascript/SSA.qll index a2c5bf1d34e..52486a7b7e3 100644 --- a/javascript/ql/lib/semmle/javascript/SSA.qll +++ b/javascript/ql/lib/semmle/javascript/SSA.qll @@ -73,6 +73,8 @@ * expression in `k` induces a re-capture of `x` to reflect the fact that `x` * is incremented between the two `console.log` calls. */ +overlay[local] +module; import javascript private import semmle.javascript.dataflow.Refinements diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index 93eb1d1dea0..f97b07ac8e9 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -1,4 +1,6 @@ /** Provides classes for working with statements. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/Templates.qll b/javascript/ql/lib/semmle/javascript/Templates.qll index 5e2b4a2d8aa..1b3db059226 100644 --- a/javascript/ql/lib/semmle/javascript/Templates.qll +++ b/javascript/ql/lib/semmle/javascript/Templates.qll @@ -1,4 +1,6 @@ /** Provides classes for working with ECMAScript 2015-style template expressions. */ +overlay[local] +module; import javascript @@ -58,6 +60,7 @@ class TemplateLiteral extends Expr, @template_literal { */ int getNumElement() { result = count(this.getAnElement()) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override string getAPrimaryQlClass() { result = "TemplateLiteral" } diff --git a/javascript/ql/lib/semmle/javascript/Tokens.qll b/javascript/ql/lib/semmle/javascript/Tokens.qll index c9eeef69dfb..4e1c63440b5 100644 --- a/javascript/ql/lib/semmle/javascript/Tokens.qll +++ b/javascript/ql/lib/semmle/javascript/Tokens.qll @@ -1,6 +1,8 @@ /** * Provides classes for working with the token-based representation of JavaScript programs. */ +overlay[local] +module; import javascript diff --git a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll index 6d0a13c4a38..50201363bea 100644 --- a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll +++ b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll @@ -1,6 +1,8 @@ /** * Provides classes for reasoning about type annotations independently of dialect. */ +overlay[local] +module; import javascript private import internal.StmtContainers @@ -18,6 +20,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * This can be used to map a type name to the class/interface it refers to, or * associate it with a named type coming from an dependency. */ + overlay[global] TypeNameBindingNode getTypeBinding() { result = this } /** Holds if this is the `any` type. */ @@ -90,6 +93,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope. */ + overlay[global] deprecated predicate hasQualifiedName(string globalName) { UnderlyingTypes::nodeHasUnderlyingType(this, globalName) } @@ -99,6 +103,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`. */ + overlay[global] deprecated predicate hasQualifiedName(string moduleName, string exportedName) { UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) } @@ -107,6 +112,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] final predicate hasUnderlyingType(string globalName) { UnderlyingTypes::nodeHasUnderlyingType(this, globalName) } @@ -115,6 +121,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] final predicate hasUnderlyingType(string moduleName, string exportedName) { UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) } @@ -135,6 +142,7 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * Note that this has no result for JSDoc type annotations. */ + overlay[global] deprecated Type getType() { none() } /** @@ -142,5 +150,6 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * This unfolds nullability modifiers and generic type applications. */ + overlay[global] final DataFlow::ClassNode getClass() { UnderlyingTypes::nodeHasUnderlyingClassType(this, result) } } diff --git a/javascript/ql/lib/semmle/javascript/TypeScript.qll b/javascript/ql/lib/semmle/javascript/TypeScript.qll index 79b71fcd8c0..b9d6ea0af98 100644 --- a/javascript/ql/lib/semmle/javascript/TypeScript.qll +++ b/javascript/ql/lib/semmle/javascript/TypeScript.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + import javascript /** @@ -31,6 +34,7 @@ class NamespaceDefinition extends Stmt, @namespace_definition, AST::ValueNode { /** * Gets the canonical name of the namespace being defined. */ + overlay[global] deprecated Namespace getNamespace() { result.getADefinition() = this } } @@ -111,11 +115,13 @@ class TypeDefinition extends AstNode, @type_definition { /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } /** * Gets the type defined by this declaration. */ + overlay[global] deprecated Type getType() { ast_node_type(this.getIdentifier(), result) } override string getAPrimaryQlClass() { result = "TypeDefinition" } @@ -221,6 +227,7 @@ class ExternalModuleReference extends Expr, Import, @external_module_reference { } /** A literal path expression appearing in an external module reference. */ +overlay[global] deprecated private class LiteralExternalModulePath extends PathExpr, ConstantString { LiteralExternalModulePath() { exists(ExternalModuleReference emr | this.getParentExpr*() = emr.getExpression()) @@ -268,6 +275,7 @@ class TypeAliasDeclaration extends @type_alias_declaration, TypeParameterized, S /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { result.getADefinition() = this } override string getAPrimaryQlClass() { result = "TypeAliasDeclaration" } @@ -548,6 +556,7 @@ class LocalNamespaceName extends @local_namespace_name, LexicalName { /** * Gets the canonical name of the namespace referenced by this name. */ + overlay[global] deprecated Namespace getNamespace() { result = this.getADeclaration().getNamespace() } override DeclarationSpace getDeclarationSpace() { result = "namespace" } @@ -568,6 +577,7 @@ class TypeExpr extends ExprOrType, @typeexpr, TypeAnnotation { * Has no result if this occurs in a TypeScript file that was extracted * without type information. */ + overlay[global] deprecated override Type getType() { ast_node_type(this, result) } override Stmt getEnclosingStmt() { result = ExprOrType.super.getEnclosingStmt() } @@ -692,6 +702,7 @@ class TypeAccess extends @typeaccess, TypeExpr, TypeRef { /** * Gets the canonical name of the type being accessed. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "TypeAccess" } @@ -1379,6 +1390,7 @@ class LocalNamespaceDecl extends VarDecl, NamespaceRef { /** * Gets the canonical name of the namespace being defined or aliased by this name. */ + overlay[global] deprecated Namespace getNamespace() { ast_node_symbol(this, result) } } @@ -1397,6 +1409,7 @@ class NamespaceAccess extends TypeExpr, NamespaceRef, @namespace_access { /** * Gets the canonical name of the namespace being accessed. */ + overlay[global] deprecated Namespace getNamespace() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "NamespaceAccess" } @@ -1506,6 +1519,7 @@ class EnumDeclaration extends NamespaceDefinition, @enum_declaration, AST::Value /** * Gets the canonical name of the type being defined. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } /** @@ -1594,6 +1608,7 @@ class EnumMember extends AstNode, @enum_member { /** * Gets the canonical name of the type defined by this enum member. */ + overlay[global] deprecated TypeName getTypeName() { ast_node_symbol(this, result) } override string getAPrimaryQlClass() { result = "EnumMember" } @@ -1762,6 +1777,7 @@ class TypeRootFolder extends Folder { /** * Gets the priority with which this type root folder should be used from within the given search root. */ + overlay[global] int getSearchPriority(Folder searchRoot) { findNodeModulesFolder(searchRoot, this.getNodeModulesFolder(), result) } @@ -1780,6 +1796,7 @@ class TypeRootFolder extends Folder { * For instance, there may be many AST nodes representing different uses of the * `number` keyword, but there only exists one `number` type. */ +overlay[global] deprecated class Type extends @type { /** * Gets a string representation of this type. @@ -1984,6 +2001,7 @@ deprecated class Type extends @type { * * A union type or intersection type, such as `string | number` or `T & U`. */ +overlay[global] deprecated class UnionOrIntersectionType extends Type, @union_or_intersection_type { /** * Gets the `i`th member of this union or intersection, starting at 0. @@ -2012,6 +2030,7 @@ deprecated class UnionOrIntersectionType extends Type, @union_or_intersection_ty * Note that the `boolean` type is represented as the union `true | false`, * but is still displayed as `boolean` in string representations. */ +overlay[global] deprecated class UnionType extends UnionOrIntersectionType, @union_type { } /** @@ -2022,6 +2041,7 @@ deprecated class UnionType extends UnionOrIntersectionType, @union_type { } * * An intersection type, such as `T & {x: number}`. */ +overlay[global] deprecated class IntersectionType extends UnionOrIntersectionType, @intersection_type { } /** @@ -2040,6 +2060,7 @@ deprecated class IntersectionType extends UnionOrIntersectionType, @intersection * Foreign array-like objects such as `HTMLCollection` are not normal JavaScript arrays, * and their corresponding types are not considered array types either. */ +overlay[global] deprecated class ArrayType extends Type { ArrayType() { this instanceof @tuple_type or @@ -2061,6 +2082,7 @@ deprecated class ArrayType extends Type { * * An array type such as `Array`, or equivalently, `string[]`. */ +overlay[global] deprecated class PlainArrayType extends ArrayType, TypeReference { PlainArrayType() { this.hasQualifiedName("Array") } @@ -2075,6 +2097,7 @@ deprecated class PlainArrayType extends ArrayType, TypeReference { * * A read-only array type such as `ReadonlyArray`. */ +overlay[global] deprecated class ReadonlyArrayType extends ArrayType, TypeReference { ReadonlyArrayType() { this.hasQualifiedName("ReadonlyArray") } } @@ -2087,6 +2110,7 @@ deprecated class ReadonlyArrayType extends ArrayType, TypeReference { * * A tuple type, such as `[number, string]`. */ +overlay[global] deprecated class TupleType extends ArrayType, @tuple_type { /** * Gets the `i`th member of this tuple type, starting at 0. @@ -2148,6 +2172,7 @@ deprecated class TupleType extends ArrayType, @tuple_type { * * The predefined `any` type. */ +overlay[global] deprecated class AnyType extends Type, @any_type { } /** @@ -2158,6 +2183,7 @@ deprecated class AnyType extends Type, @any_type { } * * The predefined `unknown` type. */ +overlay[global] deprecated class UnknownType extends Type, @unknown_type { } /** @@ -2168,6 +2194,7 @@ deprecated class UnknownType extends Type, @unknown_type { } * * The predefined `string` type. */ +overlay[global] deprecated class StringType extends Type, @string_type { } /** @@ -2178,6 +2205,7 @@ deprecated class StringType extends Type, @string_type { } * * The predefined `number` type. */ +overlay[global] deprecated class NumberType extends Type, @number_type { } /** @@ -2188,6 +2216,7 @@ deprecated class NumberType extends Type, @number_type { } * * The predefined `bigint` type. */ +overlay[global] deprecated class BigIntType extends Type, @bigint_type { } /** @@ -2198,6 +2227,7 @@ deprecated class BigIntType extends Type, @bigint_type { } * * A boolean, number, or string literal type. */ +overlay[global] deprecated class LiteralType extends Type, @literal_type { /** * Gets the string value of this literal. @@ -2213,6 +2243,7 @@ deprecated class LiteralType extends Type, @literal_type { * * The boolean literal type `true` or `false`. */ +overlay[global] deprecated class BooleanLiteralType extends LiteralType, @boolean_literal_type { /** * Gets the boolean value represented by this type. @@ -2227,6 +2258,7 @@ deprecated class BooleanLiteralType extends LiteralType, @boolean_literal_type { /** * A number literal as a static type. */ +overlay[global] deprecated class NumberLiteralType extends LiteralType, @number_literal_type { override string getStringValue() { type_literal_value(this, result) } @@ -2249,6 +2281,7 @@ deprecated class NumberLiteralType extends LiteralType, @number_literal_type { * * A string literal as a static type. */ +overlay[global] deprecated class StringLiteralType extends LiteralType, @string_literal_type { override string getStringValue() { type_literal_value(this, result) } } @@ -2261,6 +2294,7 @@ deprecated class StringLiteralType extends LiteralType, @string_literal_type { * * A bigint literal as a static type. */ +overlay[global] deprecated class BigIntLiteralType extends LiteralType { override string getStringValue() { type_literal_value(this, result) } @@ -2283,6 +2317,7 @@ deprecated class BigIntLiteralType extends LiteralType { * * The `boolean` type, internally represented as the union type `true | false`. */ +overlay[global] deprecated class BooleanType extends UnionType { BooleanType() { this.getAnElementType() instanceof @true_type and @@ -2299,6 +2334,7 @@ deprecated class BooleanType extends UnionType { * * The `string` type or a string literal type. */ +overlay[global] deprecated class StringLikeType extends Type { StringLikeType() { this instanceof StringType or @@ -2314,6 +2350,7 @@ deprecated class StringLikeType extends Type { * * The `number` type or a number literal type. */ +overlay[global] deprecated class NumberLikeType extends Type { NumberLikeType() { this instanceof NumberType or @@ -2329,6 +2366,7 @@ deprecated class NumberLikeType extends Type { * * The `boolean`, `true,` or `false` type. */ +overlay[global] deprecated class BooleanLikeType extends Type { BooleanLikeType() { this instanceof BooleanType or @@ -2344,6 +2382,7 @@ deprecated class BooleanLikeType extends Type { * * The `void` type. */ +overlay[global] deprecated class VoidType extends Type, @void_type { } /** @@ -2354,6 +2393,7 @@ deprecated class VoidType extends Type, @void_type { } * * The `undefined` type. */ +overlay[global] deprecated class UndefinedType extends Type, @undefined_type { } /** @@ -2364,6 +2404,7 @@ deprecated class UndefinedType extends Type, @undefined_type { } * * The `null` type. */ +overlay[global] deprecated class NullType extends Type, @null_type { } /** @@ -2374,6 +2415,7 @@ deprecated class NullType extends Type, @null_type { } * * The `never` type. */ +overlay[global] deprecated class NeverType extends Type, @never_type { } /** @@ -2384,6 +2426,7 @@ deprecated class NeverType extends Type, @never_type { } * * The `symbol` type or a specific `unique symbol` type. */ +overlay[global] deprecated class SymbolType extends Type, @symbol_type { } /** @@ -2394,6 +2437,7 @@ deprecated class SymbolType extends Type, @symbol_type { } * * The `symbol` type. */ +overlay[global] deprecated class PlainSymbolType extends SymbolType, @plain_symbol_type { } /** @@ -2404,6 +2448,7 @@ deprecated class PlainSymbolType extends SymbolType, @plain_symbol_type { } * * A `unique symbol` type. */ +overlay[global] deprecated class UniqueSymbolType extends SymbolType, @unique_symbol_type { /** * Gets the canonical name of the variable exposing the symbol. @@ -2438,6 +2483,7 @@ deprecated class UniqueSymbolType extends SymbolType, @unique_symbol_type { * * The `object` type. */ +overlay[global] deprecated class ObjectKeywordType extends Type, @objectkeyword_type { } /** @@ -2448,6 +2494,7 @@ deprecated class ObjectKeywordType extends Type, @objectkeyword_type { } * * A type that refers to a class, interface, enum, or enum member. */ +overlay[global] deprecated class TypeReference extends Type, @type_reference { /** * Gets the canonical name of the type being referenced. @@ -2506,6 +2553,7 @@ deprecated class TypeReference extends Type, @type_reference { * * A type that refers to a class, possibly with type arguments. */ +overlay[global] deprecated class ClassType extends TypeReference { ClassDefinition declaration; @@ -2525,6 +2573,7 @@ deprecated class ClassType extends TypeReference { * * A type that refers to an interface, possibly with type arguents. */ +overlay[global] deprecated class InterfaceType extends TypeReference { InterfaceDeclaration declaration; @@ -2544,6 +2593,7 @@ deprecated class InterfaceType extends TypeReference { * * A type that refers to an enum. */ +overlay[global] deprecated class EnumType extends TypeReference { EnumDeclaration declaration; @@ -2563,6 +2613,7 @@ deprecated class EnumType extends TypeReference { * * A type that refers to the value of an enum member. */ +overlay[global] deprecated class EnumLiteralType extends TypeReference { EnumMember declaration; @@ -2582,6 +2633,7 @@ deprecated class EnumLiteralType extends TypeReference { * * A type that refers to a type alias. */ +overlay[global] deprecated class TypeAliasReference extends TypeReference { TypeAliasReference() { type_alias(this, _) } @@ -2601,6 +2653,7 @@ deprecated class TypeAliasReference extends TypeReference { * * An anonymous interface type, such as `{ x: number }`. */ +overlay[global] deprecated class AnonymousInterfaceType extends Type, @object_type { } /** @@ -2611,6 +2664,7 @@ deprecated class AnonymousInterfaceType extends Type, @object_type { } * * A type that refers to a type variable. */ +overlay[global] deprecated class TypeVariableType extends Type, @typevariable_type { /** * Gets a syntactic declaration of this type variable. @@ -2656,6 +2710,7 @@ deprecated class TypeVariableType extends Type, @typevariable_type { * * A type that refers to a type variable declared on a class, interface or function. */ +overlay[global] deprecated class CanonicalTypeVariableType extends TypeVariableType, @canonical_type_variable_type { override TypeName getHostType() { result = this.getCanonicalName().getParent() } @@ -2681,6 +2736,7 @@ deprecated class CanonicalTypeVariableType extends TypeVariableType, @canonical_ * - `(x: T) => T` * - `(x: S, y: T) => T`. */ +overlay[global] deprecated class LexicalTypeVariableType extends TypeVariableType, @lexical_type_variable_type { override string getName() { types(this, _, result) // The toString value contains the name. @@ -2703,6 +2759,7 @@ deprecated class LexicalTypeVariableType extends TypeVariableType, @lexical_type * } * ``` */ +overlay[global] deprecated class ThisType extends Type, @this_type { /** * Gets the type containing the `this` type. @@ -2721,6 +2778,7 @@ deprecated class ThisType extends Type, @this_type { * The type of a named value, `typeof X`, typically denoting the type of * a class constructor, namespace object, enum object, or module object. */ +overlay[global] deprecated class TypeofType extends Type, @typeof_type { /** * Gets the canonical name of the named value. @@ -2801,6 +2859,7 @@ module SignatureKind { * * A function or constructor signature in a TypeScript type. */ +overlay[global] deprecated class CallSignatureType extends @signature_type { /** * Gets a value indicating if this is a function or constructor signature. @@ -2955,6 +3014,7 @@ deprecated class CallSignatureType extends @signature_type { * * A function call signature in a type, that is, a signature without the `new` keyword. */ +overlay[global] deprecated class FunctionCallSignatureType extends CallSignatureType, @function_signature_type { } /** @@ -2965,6 +3025,7 @@ deprecated class FunctionCallSignatureType extends CallSignatureType, @function_ * * A constructor call signature in a type, that is, a signature with the `new` keyword. */ +overlay[global] deprecated class ConstructorCallSignatureType extends CallSignatureType, @constructor_signature_type { } @@ -2976,6 +3037,7 @@ deprecated class ConstructorCallSignatureType extends CallSignatureType, @constr * - It has one type parameter, say, `T` * - It has a `then` method whose first argument is a callback that takes a `T` as argument. */ +overlay[global] deprecated private class PromiseTypeName extends TypeName { PromiseTypeName() { // The name must suggest it is a promise. @@ -3005,6 +3067,7 @@ deprecated private class PromiseTypeName extends TypeName { * This includes types whose name and `then` method signature suggest it is a promise, * such as `PromiseLike` and `Thenable`. */ +overlay[global] deprecated class PromiseType extends TypeReference { PromiseType() { this.getNumTypeArgument() = 1 and diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll index adc0ad5b9c8..5fa7473c304 100644 --- a/javascript/ql/lib/semmle/javascript/Variables.qll +++ b/javascript/ql/lib/semmle/javascript/Variables.qll @@ -1,4 +1,6 @@ /** Provides classes for modeling program variables. */ +overlay[local] +module; import javascript @@ -62,6 +64,7 @@ class LocalScope extends Scope { */ class ModuleScope extends Scope, @module_scope { /** Gets the module that induces this scope. */ + overlay[global] Module getModule() { result = this.getScopeElement() } override string toString() { result = "module scope" } @@ -256,6 +259,7 @@ class VarRef extends @varref, Identifier, BindingPattern, LexicalRef { override VarRef getABindingVarRef() { result = this } + overlay[global] override predicate isImpure() { none() } override Expr getUnderlyingReference() { result = this } @@ -543,6 +547,7 @@ class ArrayPattern extends DestructuringPattern, @array_pattern { /** Holds if this array pattern has an omitted element. */ predicate hasOmittedElement() { this.elementIsOmitted(_) } + overlay[global] override predicate isImpure() { this.getAnElement().isImpure() } override VarRef getABindingVarRef() { @@ -583,6 +588,7 @@ class ObjectPattern extends DestructuringPattern, @object_pattern { /** Gets the rest property pattern of this object pattern, if any. */ override Expr getRest() { result = this.getChildExpr(-1) } + overlay[global] override predicate isImpure() { this.getAPropertyPattern().isImpure() } override VarRef getABindingVarRef() { @@ -640,6 +646,7 @@ class PropertyPattern extends @property, AstNode { ObjectPattern getObjectPattern() { properties(this, result, _, _, _) } /** Holds if this pattern is impure, that is, if its evaluation could have side effects. */ + overlay[global] predicate isImpure() { this.isComputed() and this.getNameExpr().isImpure() or @@ -844,6 +851,7 @@ class SimpleParameter extends Parameter, VarDecl { * Gets a use of this parameter that refers to its initial value as * passed in from the caller. */ + overlay[global] VarUse getAnInitialUse() { exists(SsaDefinition ssa | ssa.getAContributingVarDef() = this and diff --git a/javascript/ql/lib/semmle/javascript/XML.qll b/javascript/ql/lib/semmle/javascript/XML.qll index 54157809260..ca401bd3f4b 100644 --- a/javascript/ql/lib/semmle/javascript/XML.qll +++ b/javascript/ql/lib/semmle/javascript/XML.qll @@ -1,6 +1,8 @@ /** * Provides classes and predicates for working with XML files and their content. */ +overlay[local] +module; import semmle.files.FileSystem private import codeql.xml.Xml diff --git a/javascript/ql/lib/semmle/javascript/YAML.qll b/javascript/ql/lib/semmle/javascript/YAML.qll index a312d78b6fb..01473226b44 100644 --- a/javascript/ql/lib/semmle/javascript/YAML.qll +++ b/javascript/ql/lib/semmle/javascript/YAML.qll @@ -4,6 +4,8 @@ * YAML documents are represented as abstract syntax trees whose nodes * are either YAML values or alias nodes referring to another YAML value. */ +overlay[local] +module; import javascript private import codeql.yaml.Yaml as LibYaml diff --git a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll index 41509516cc1..17908c0b67f 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll @@ -37,6 +37,8 @@ * they represent; additionally, indefinite abstract values record * the source of imprecision that caused them to arise. */ +overlay[local] +module; private import javascript private import semmle.javascript.dataflow.internal.AbstractValuesImpl @@ -97,6 +99,7 @@ class AbstractValue extends TAbstractValue { * In all cases, purely local flow tracking is used to find prototype objects, so * this predicate cannot be relied on to compute all possible prototype objects. */ + overlay[global] DefiniteAbstractValue getAPrototype() { exists(AbstractProtoProperty proto | proto.getBase() = this and diff --git a/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll index d0deff8788c..83d523e0709 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/AdditionalFlowSteps.qll @@ -33,21 +33,25 @@ private import semmle.javascript.internal.CachedStages * Note: For performance reasons, all subclasses of this class should be part * of the standard library. Use `isAdditionalFlowStep` for query-specific flow steps. */ +overlay[local] class AdditionalFlowStep extends Unit { /** * Holds if `pred` → `succ` should be considered a value-preserving data flow edge.f */ + overlay[global] predicate step(DataFlow::Node pred, DataFlow::Node succ) { none() } /** * Holds if `pred` → `succ` should be considered a value-preserving data flow edge that * crosses calling contexts. */ + overlay[global] predicate jumpStep(DataFlow::Node pred, DataFlow::Node succ) { none() } /** * Holds if `pred` should be stored in the given `content` of the object `succ`. */ + overlay[global] predicate storeStep(DataFlow::Node pred, DataFlow::ContentSet contents, DataFlow::Node succ) { none() } @@ -55,6 +59,7 @@ class AdditionalFlowStep extends Unit { /** * Holds if the given `content` of the object in `pred` should be read into `succ`. */ + overlay[global] predicate readStep(DataFlow::Node pred, DataFlow::ContentSet contents, DataFlow::Node succ) { none() } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll index f773000c8cc..3b4a6be84d0 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll @@ -625,15 +625,19 @@ abstract deprecated class LabeledBarrierGuardNode extends BarrierGuardNode { * * For use with load/store steps in `DataFlow::SharedFlowStep` and TypeTracking. */ +overlay[local] module PseudoProperties { /** Holds if `s` is a pseudo-property. */ bindingset[s] + overlay[caller] predicate isPseudoProperty(string s) { s.matches("$%$") } bindingset[s] + overlay[caller] private string pseudoProperty(string s) { result = "$" + s + "$" } bindingset[s, v] + overlay[caller] private string pseudoProperty(string s, string v) { result = "$" + s + "|" + v + "$" } /** @@ -680,6 +684,7 @@ module PseudoProperties { * Gets a pseudo-property for the location of a map value where the key is `key`. * The string value of the `key` is encoded in the result, and there is only a result if the string value of `key` is known. */ + overlay[caller] pragma[inline] string mapValueKnownKey(DataFlow::Node key) { result = mapValueKey(any(string s | key.mayHaveStringValue(s))) @@ -689,17 +694,20 @@ module PseudoProperties { * Gets a pseudo-property for the location of a map value where the key is `key`. */ bindingset[key] + overlay[caller] string mapValueKey(string key) { result = pseudoProperty("mapValue", key) } /** * Holds if `prop` equals `mapValueKey(key)` for some value of `key`. */ bindingset[prop] + overlay[caller] predicate isMapValueKey(string prop) { prop.matches("$mapValue|%$") } /** * Gets a pseudo-property for the location of a map value where the key is `key`. */ + overlay[caller] pragma[inline] string mapValue(DataFlow::Node key) { result = mapValueKnownKey(key) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll b/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll index 5a762f4aa1b..3c12284d77b 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/CustomAbstractValueDefinitions.qll @@ -7,6 +7,8 @@ * For performance reasons, all subclasses of `CustomAbstractValueDefinition` * should be part of the standard library. */ +overlay[local] +module; private import javascript private import internal.AbstractValuesImpl @@ -32,6 +34,7 @@ class CustomAbstractValueFromDefinition extends AbstractValue, TCustomAbstractVa override predicate isIndefinite(DataFlow::Incompleteness cause) { def.isIndefinite(cause) } + overlay[global] override DefiniteAbstractValue getAPrototype() { result = def.getAPrototype() } override predicate hasLocationInfo( @@ -98,6 +101,7 @@ abstract class CustomAbstractValueDefinition extends Locatable { * Gets an abstract value that represents a prototype object of the * induced abstract value. */ + overlay[global] AbstractValue getAPrototype() { exists(AbstractProtoProperty proto | proto.getBase() = this.getAbstractValue() and @@ -119,6 +123,7 @@ abstract class CustomAbstractValueDefinition extends Locatable { /** * Flow analysis for custom abstract values. */ +overlay[global] class CustomAbstractValueFromDefinitionNode extends DataFlow::AnalyzedNode, DataFlow::ValueNode { CustomAbstractValueFromDefinition val; diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 071d6d08433..a61b67e643f 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -17,6 +17,8 @@ * Flow through global variables, object properties or function calls is not * modeled (except for immediately invoked functions as explained above). */ +overlay[local] +module; import javascript private import internal.CallGraphs @@ -64,9 +66,11 @@ module DataFlow { * `p.getALocalSource()` does _not_ return the corresponding argument, and * `p.isIncomplete("call")` holds. */ + overlay[global] predicate isIncomplete(Incompleteness cause) { isIncomplete(this, cause) } /** Gets type inference results for this data flow node. */ + overlay[global] AnalyzedNode analyze() { result = this } /** Gets the expression corresponding to this data flow node, if any. */ @@ -98,6 +102,7 @@ module DataFlow { * Holds if this data flow node accesses the global variable `g`, either directly * or through the `window` object. */ + overlay[global] predicate accessesGlobal(string g) { globalVarRef(g).flowsTo(this) } /** Holds if this node may evaluate to the string `s`, possibly through local data flow. */ @@ -124,11 +129,13 @@ module DataFlow { int getIntValue() { result = this.asExpr().getIntValue() } /** Gets a function value that may reach this node. */ + overlay[global] final FunctionNode getAFunctionValue() { CallGraph::getAFunctionReference(result, 0).flowsTo(this) } /** Gets a function value that may reach this node with the given `imprecision` level. */ + overlay[global] final FunctionNode getAFunctionValue(int imprecision) { CallGraph::getAFunctionReference(result, imprecision).flowsTo(this) } @@ -137,6 +144,7 @@ module DataFlow { * Gets a function value that may reach this node, * possibly derived from a partial function invocation. */ + overlay[global] final FunctionNode getABoundFunctionValue(int boundArgs) { result = this.getAFunctionValue() and boundArgs = 0 or @@ -192,6 +200,7 @@ module DataFlow { FlowSteps::identityFunctionStep(result, this) } + overlay[global] private NameResolution::Node getNameResolutionNode() { this = valueNode(result) or @@ -205,6 +214,7 @@ module DataFlow { * Holds if this node is annotated with the given named type, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] cached predicate hasUnderlyingType(string globalName) { Stages::TypeTracking::ref() and @@ -218,6 +228,7 @@ module DataFlow { * Holds if this node is annotated with the given named type, * or is declared as a subtype thereof, or is a union or intersection containing such a type. */ + overlay[global] cached predicate hasUnderlyingType(string moduleName, string typeName) { Stages::TypeTracking::ref() and @@ -466,6 +477,7 @@ module DataFlow { /** * Gets an accessor (`get` or `set` method) that may be invoked by this property reference. */ + overlay[global] final DataFlow::FunctionNode getAnAccessorCallee() { result = CallGraph::getAnAccessorCallee(this) } @@ -1762,6 +1774,7 @@ module DataFlow { ) } + overlay[global] private class ReflectiveParamsStep extends LegacyPreCallGraphStep { override predicate loadStep(DataFlow::Node obj, DataFlow::Node element, string prop) { exists(DataFlow::ReflectiveParametersNode params, DataFlow::FunctionNode f, int i | @@ -1774,6 +1787,7 @@ module DataFlow { } /** A taint step from the reflective parameters node to any parameter. */ + overlay[global] private class ReflectiveParamsTaintStep extends TaintTracking::LegacyTaintStep { override predicate step(DataFlow::Node obj, DataFlow::Node element) { exists(DataFlow::ReflectiveParametersNode params, DataFlow::FunctionNode f | @@ -1787,6 +1801,7 @@ module DataFlow { /** * Holds if there is a step from `pred` to `succ` through a field accessed through `this` in a class. */ + overlay[global] predicate localFieldStep(DataFlow::Node pred, DataFlow::Node succ) { exists(ClassNode cls, string prop | pred = AccessPath::getAnAssignmentTo(cls.getADirectSuperClass*().getAReceiverNode(), prop) or @@ -1819,6 +1834,7 @@ module DataFlow { * `p.getALocalSource()` does _not_ return the corresponding argument, and * `p.isIncomplete("call")` holds. */ + overlay[global] predicate isIncomplete(Node nd, Incompleteness cause) { exists(SsaVariable ssa | nd = TSsaDefNode(ssa.getDefinition()) | defIsIncomplete(ssa.(SsaExplicitDefinition).getDef(), cause) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll b/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll index eb7160683a7..13aa5628111 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/FlowSummary.qll @@ -1,4 +1,6 @@ /** Provides classes and predicates for defining flow summaries. */ +overlay[local] +module; private import javascript private import semmle.javascript.dataflow.internal.sharedlib.FlowSummaryImpl as Impl diff --git a/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll b/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll index b7b2b9ba1e5..48c21d41d75 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/InferredTypes.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + /** * Types inferred by the flow analysis, represented as type tags. * diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll index 0e6394a6f55..c4c7b1d7d18 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll @@ -3,6 +3,8 @@ * as nodes corresponding to function definitions or nodes corresponding to * parameters. */ +overlay[local] +module; private import javascript private import semmle.javascript.dependencies.Dependencies @@ -158,6 +160,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * addEventHandler("click", foo.bind(this, "value of x")) * ``` */ + overlay[global] ParameterNode getABoundCallbackParameter(int callback, int param) { exists(int boundArgs | result = @@ -178,6 +181,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN private ObjectLiteralNode getOptionsArgument(int i) { result.flowsTo(this.getArgument(i)) } /** Gets an abstract value representing possible callees of this call site. */ + overlay[global] final AbstractValue getACalleeValue() { exists(DataFlow::Node callee, DataFlow::AnalyzedNode analyzed | pragma[only_bind_into](callee) = this.getCalleeNode() and @@ -192,6 +196,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * To alter the call graph as seen by the interprocedural data flow libraries, override * the `getACallee(int imprecision)` predicate instead. */ + overlay[global] final Function getACallee() { result = this.getACallee(0) } /** @@ -206,6 +211,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * This predicate can be overridden to alter the call graph used by the interprocedural * data flow libraries. */ + overlay[global] Function getACallee(int imprecision) { result = CallGraph::getACallee(this, imprecision).getFunction() } @@ -214,6 +220,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if the approximation of possible callees for this call site is * affected by the given analysis incompleteness `cause`. */ + overlay[global] predicate isIndefinite(DataFlow::Incompleteness cause) { this.getACalleeValue().isIndefinite(cause) } @@ -229,6 +236,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * independent contexts, so tracking flow through it leads to * imprecision. */ + overlay[global] predicate isImprecise() { this.isIndefinite("global") and exists(DefiniteAbstractValue v | v = this.getACalleeValue() | not v instanceof AbstractCallable) @@ -238,6 +246,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if our approximation of possible callees for this call site is * likely to be incomplete. */ + overlay[global] predicate isIncomplete() { // the flow analysis identifies a source of incompleteness other than // global flow (which usually leads to imprecision rather than incompleteness) @@ -248,6 +257,7 @@ class InvokeNode extends DataFlow::SourceNode instanceof DataFlow::Impl::InvokeN * Holds if our approximation of possible callees for this call site is * likely to be imprecise or incomplete. */ + overlay[global] predicate isUncertain() { this.isImprecise() or this.isIncomplete() } /** @@ -763,7 +773,7 @@ module ModuleImportNode { cached ModuleImportNode moduleImport(string path) { // NB. internal modules may be imported with a "node:" prefix - Stages::Imports::ref() and result.getPath() = ["node:" + path, path] + result.getPath() = ["node:" + path, path] } /** @@ -771,6 +781,7 @@ ModuleImportNode moduleImport(string path) { * `require("lodash")` in a context where a package.json file includes * `"lodash"` as a dependency. */ +overlay[global] ModuleImportNode dependencyModuleImport(Dependency dep) { result = dep.getAUse("import").(Import).getImportedModuleNode() } @@ -780,6 +791,7 @@ ModuleImportNode dependencyModuleImport(Dependency dep) { * the given `path`, or accesses `m` as a member on a default or * namespace import from `path`. */ +overlay[global] DataFlow::SourceNode moduleMember(string path, string m) { result = moduleImport(path).getAPropertyRead(m) } @@ -861,6 +873,7 @@ module MemberKind { * * Additional patterns can be recognized as class nodes, by extending `DataFlow::ClassNode::Range`. */ +overlay[global] class ClassNode extends DataFlow::ValueNode, DataFlow::SourceNode { override AST::ValueNode astNode; AbstractCallable function; @@ -1329,6 +1342,7 @@ class ClassNode extends DataFlow::ValueNode, DataFlow::SourceNode { /** * Helper predicate to get a prototype reference in a file. */ +overlay[global] private DataFlow::PropRef getAPrototypeReferenceInFile(string name, File f) { result.getBase() = AccessPath::getAReferenceOrAssignmentTo(name) and result.getPropertyName() = "prototype" and @@ -1338,6 +1352,7 @@ private DataFlow::PropRef getAPrototypeReferenceInFile(string name, File f) { /** * Helper predicate to get an instantiation in a file. */ +overlay[global] private DataFlow::NewNode getAnInstantiationInFile(string name, File f) { result = AccessPath::getAReferenceTo(name).(DataFlow::LocalSourceNode).getAnInstantiation() and result.getFile() = f @@ -1346,6 +1361,7 @@ private DataFlow::NewNode getAnInstantiationInFile(string name, File f) { /** * Gets a reference to the function `func`, where there exists a read/write of the "prototype" property on that reference. */ +overlay[global] pragma[noinline] private DataFlow::SourceNode getAFunctionValueWithPrototype(AbstractValue func) { exists(result.getAPropertyReference("prototype")) and @@ -1353,6 +1369,7 @@ private DataFlow::SourceNode getAFunctionValueWithPrototype(AbstractValue func) func instanceof AbstractCallable // the join-order goes bad if `func` has type `AbstractFunction`. } +overlay[global] module ClassNode { /** * A dataflow node that should be considered a class node. @@ -1435,6 +1452,7 @@ module ClassNode { * _.partial(fn, x, y, z) * ``` */ +overlay[global] class PartialInvokeNode extends DataFlow::Node instanceof PartialInvokeNode::Range { /** Gets a node holding a callback invoked by this partial invocation node. */ DataFlow::Node getACallbackNode() { @@ -1470,6 +1488,7 @@ class PartialInvokeNode extends DataFlow::Node instanceof PartialInvokeNode::Ran } } +overlay[global] module PartialInvokeNode { /** * A data flow node that performs a partial function application. @@ -1717,6 +1736,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { predicate maybeGlobal() { RegExp::maybeGlobal(this.tryGetFlags()) } /** Gets a data flow node referring to this regular expression. */ + overlay[global] private DataFlow::SourceNode getAReference(DataFlow::TypeTracker t) { t.start() and result = this @@ -1725,6 +1745,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { } /** Gets a data flow node referring to this regular expression. */ + overlay[global] cached DataFlow::SourceNode getAReference() { Stages::FlowSteps::ref() and @@ -1736,6 +1757,7 @@ class RegExpCreationNode extends DataFlow::SourceNode { * A guard node for a variable in a negative condition, such as `x` in `if(!x)`. * Can be added to a `isBarrier` in a data-flow configuration to block flow through such checks. */ +overlay[global] class VarAccessBarrier extends DataFlow::Node { VarAccessBarrier() { exists(ConditionGuardNode guard, SsaRefinementNode refinement | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll b/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll index feb0187487e..b1302df6fbc 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Refinements.qll @@ -27,6 +27,8 @@ * so the refinement can evaluate to both `true` and `false` for the same * candidate value. */ +overlay[local] +module; import javascript private import AbstractValues @@ -45,6 +47,7 @@ abstract class RefinementCandidate extends Expr { /** * Gets a refinement value inferred for this expression in context `ctxt`. */ + overlay[global] pragma[nomagic] abstract RefinementValue eval(RefinementContext ctxt); } @@ -64,6 +67,7 @@ class Refinement extends Expr instanceof RefinementCandidate { /** * Gets a refinement value inferred for this expression in context `ctxt`. */ + overlay[global] RefinementValue eval(RefinementContext ctxt) { result = super.eval(ctxt) } } @@ -71,6 +75,7 @@ class Refinement extends Expr instanceof RefinementCandidate { abstract private class LiteralRefinement extends RefinementCandidate, Literal { override SsaSourceVariable getARefinedVar() { none() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = this.eval() } @@ -78,16 +83,19 @@ abstract private class LiteralRefinement extends RefinementCandidate, Literal { /** * Gets the refinement value that represents this literal. */ + overlay[global] RefinementValue eval() { result = TAny() } } /** A `null` literal, viewed as a refinement expression. */ private class NullLiteralRefinement extends LiteralRefinement, NullLiteral { + overlay[global] override RefinementValue eval() { result = TValueWithType(TTNull()) } } /** A Boolean literal, viewed as a refinement expression. */ private class BoolRefinement extends LiteralRefinement, BooleanLiteral { + overlay[global] override RefinementValue eval() { exists(boolean b | b.toString() = this.getValue() | result = TBoolConstant(b)) } @@ -95,11 +103,13 @@ private class BoolRefinement extends LiteralRefinement, BooleanLiteral { /** A constant string, viewed as a refinement expression. */ private class StringRefinement extends LiteralRefinement, ConstantString { + overlay[global] override RefinementValue eval() { result = TStringConstant(this.getStringValue()) } } /** A numeric literal, viewed as a refinement expression. */ abstract private class NumberRefinement extends LiteralRefinement, NumberLiteral { + overlay[global] override RefinementValue eval() { result = TValueWithType(TTNumber()) } } @@ -112,6 +122,7 @@ abstract private class NumberRefinement extends LiteralRefinement, NumberLiteral private class IntRefinement extends NumberRefinement, NumberLiteral { IntRefinement() { this.getValue().toInt() = 0 } + overlay[global] override RefinementValue eval() { result = TIntConstant(this.getValue().toInt()) } } @@ -123,6 +134,7 @@ private class UndefinedInRefinement extends RefinementCandidate, { override SsaSourceVariable getARefinedVar() { none() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = TValueWithType(TTUndefined()) @@ -135,6 +147,7 @@ private class VariableRefinement extends RefinementCandidate, VarUse { override SsaSourceVariable getARefinedVar() { result = this.getVariable() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { ctxt.appliesTo(this) and result = ctxt.(VarRefinementContext).getAValue() @@ -149,6 +162,7 @@ private class ParRefinement extends RefinementCandidate, ParExpr { result = this.getExpression().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { result = this.getExpression().(RefinementCandidate).eval(ctxt) } @@ -162,6 +176,7 @@ private class TypeofRefinement extends RefinementCandidate, TypeofExpr { result = this.getOperand().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists(RefinementValue opVal | opVal = this.getOperand().(RefinementCandidate).eval(ctxt) and @@ -182,6 +197,7 @@ private class EqRefinement extends RefinementCandidate, EqualityTest { result = this.getRightOperand().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists(RefinementCandidate l, RefinementValue lv, RefinementCandidate r, RefinementValue rv | l = this.getLeftOperand() and @@ -220,6 +236,7 @@ private class IndexRefinement extends RefinementCandidate, IndexExpr { result = this.getIndex().(RefinementCandidate).getARefinedVar() } + overlay[global] override RefinementValue eval(RefinementContext ctxt) { exists( RefinementCandidate base, RefinementValue baseVal, RefinementCandidate index, @@ -242,6 +259,7 @@ private class IndexRefinement extends RefinementCandidate, IndexExpr { * if any. */ bindingset[s, i] +overlay[global] private RefinementValue evalIndex(StringConstant s, IntConstant i) { result = TStringConstant(s.getValue().charAt(i.getValue())) } @@ -249,6 +267,7 @@ private RefinementValue evalIndex(StringConstant s, IntConstant i) { /** * A context in which a refinement expression is analyzed. */ +overlay[global] newtype TRefinementContext = /** * A refinement context associated with refinement `ref`, specifying that variable `var` @@ -266,6 +285,7 @@ newtype TRefinementContext = /** * A context in which a refinement expression is analyzed. */ +overlay[global] class RefinementContext extends TRefinementContext { /** * Holds if refinement expression `cand` might be analyzed in this context. @@ -280,6 +300,7 @@ class RefinementContext extends TRefinementContext { * A refinement context specifying that some variable is assumed to have one particular * abstract value. */ +overlay[global] class VarRefinementContext extends RefinementContext, TVarRefinementContext { override predicate appliesTo(RefinementCandidate cand) { exists(AnalyzedRefinement ref, SsaSourceVariable var | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll index 7503e5001e0..85a8a163cba 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll @@ -5,6 +5,8 @@ * Note that unlike `TypeTracking.qll`, this library only performs * local tracking within a function. */ +overlay[local] +module; private import javascript private import semmle.javascript.dataflow.TypeTracking @@ -192,6 +194,7 @@ class SourceNode extends DataFlow::Node instanceof SourceNode::Range { * * See `TypeTracker` for more details about how to use this. */ + overlay[global] pragma[inline] DataFlow::SourceNode track(TypeTracker t2, TypeTracker t) { t = t2.step(this, result) } @@ -200,6 +203,7 @@ class SourceNode extends DataFlow::Node instanceof SourceNode::Range { * * See `TypeBackTracker` for more details about how to use this. */ + overlay[global] pragma[inline] DataFlow::SourceNode backtrack(TypeBackTracker t2, TypeBackTracker t) { t2 = t.step(result, this) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll index 6bcef1dc412..97daed1f30a 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AbstractValuesImpl.qll @@ -3,6 +3,8 @@ * * Provides a representation for abstract values. */ +overlay[local] +module; private import javascript import semmle.javascript.dataflow.AbstractValues diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll index 3bcc36a6577..b7538c7ffbf 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AccessPaths.qll @@ -14,6 +14,8 @@ * to the same value have the same access paths, so access paths are neither sound nor * complete as an approximation of expression semantics. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.CachedStages diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll index d7f92ce8dd3..dfa924699ba 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/AdditionalFlowInternal.qll @@ -5,6 +5,7 @@ private import semmle.javascript.dataflow.internal.DataFlowPrivate /** * Gets a data-flow node synthesized using `AdditionalFlowInternal#needsSynthesizedNode`. */ +overlay[local] DataFlow::Node getSynthesizedNode(AstNode node, string tag) { result = TGenericSynthesizedNode(node, tag, _) } @@ -12,6 +13,7 @@ DataFlow::Node getSynthesizedNode(AstNode node, string tag) { /** * An extension to `AdditionalFlowStep` with additional internal-only predicates. */ +overlay[local] class AdditionalFlowInternal extends DataFlow::AdditionalFlowStep { /** * Holds if a data-flow node should be synthesized for the pair `(node, tag)`. @@ -25,10 +27,12 @@ class AdditionalFlowInternal extends DataFlow::AdditionalFlowStep { /** * Holds if `node` should only permit flow of values stored in `contents`. */ + overlay[global] predicate expectsContent(DataFlow::Node node, DataFlow::ContentSet contents) { none() } /** * Holds if `node` should not permit flow of values stored in `contents`. */ + overlay[global] predicate clearsContent(DataFlow::Node node, DataFlow::ContentSet contents) { none() } } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll index a5af2737c18..be9bc2c81a3 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + private import javascript private import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels private import semmle.javascript.dataflow.internal.FlowSummaryPrivate as FlowSummaryPrivate @@ -333,12 +336,14 @@ module Public { /** * A content set containing only the given content. */ + overlay[caller] pragma[inline] ContentSet singleton(Content content) { result.asSingleton() = content } /** * A content set corresponding to the given property name. */ + overlay[caller] pragma[inline] ContentSet property(PropertyName name) { result.asSingleton().asPropertyName() = name } @@ -399,6 +404,7 @@ module Public { * If `bound` is too large, it is truncated to the greatest lower bound we can represent. */ bindingset[bound] + overlay[caller] ContentSet arrayElementLowerBoundFromInt(int bound) { result = arrayElementLowerBound(bound.minimum(getMaxPreciseArrayIndex() + 1)) } @@ -409,6 +415,7 @@ module Public { * If `n` is too large, it is truncated to the greatest lower bound we can represent. */ bindingset[n] + overlay[caller] ContentSet arrayElementFromInt(int n) { result = arrayElementKnown(n) or @@ -448,6 +455,7 @@ module Public { * If `key` is not one of the keys we track precisely, this is mapped to the unknown key instead. */ bindingset[key] + overlay[caller] ContentSet mapValueFromKey(string key) { result = mapValueWithKnownKey(key) or @@ -510,6 +518,7 @@ module Public { * are mapped to their corresponding content sets (which are no longer seen as property names). */ bindingset[propertyName] + overlay[caller] ContentSet fromLegacyProperty(string propertyName) { result = fromLegacyPseudoProperty(propertyName) or diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll index 8d54f639cb0..4a354e1f759 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowNode.qll @@ -3,6 +3,8 @@ * * Contains the raw data type underlying `DataFlow::Node`. */ +overlay[local] +module; private import javascript private import codeql.util.Boolean diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index 1a4051ccdf6..68cf0aa4287 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + private import javascript private import semmle.javascript.dataflow.internal.CallGraphs private import semmle.javascript.dataflow.internal.DataFlowNode @@ -310,6 +313,7 @@ private predicate returnNodeImpl(DataFlow::Node node, ReturnKind kind) { kind = MkExceptionalReturnKind() } +overlay[global] private DataFlow::Node getAnOutNodeImpl(DataFlowCall call, ReturnKind kind) { kind = MkNormalReturnKind() and result = call.asOrdinaryCall() or @@ -336,10 +340,12 @@ class ReturnNode extends DataFlow::Node { } /** A node that receives an output from a call. */ +overlay[global] class OutNode extends DataFlow::Node { OutNode() { this = getAnOutNodeImpl(_, _) } } +overlay[global] OutNode getAnOutNode(DataFlowCall call, ReturnKind kind) { result = getAnOutNodeImpl(call, kind) } cached @@ -416,9 +422,11 @@ abstract class LibraryCallable extends string { LibraryCallable() { any() } /** Gets a call to this library callable. */ + overlay[global] DataFlow::InvokeNode getACall() { none() } /** Same as `getACall()` except this does not depend on the call graph or API graph. */ + overlay[global] DataFlow::InvokeNode getACallSimple() { none() } } @@ -432,6 +440,7 @@ abstract class LibraryCallableInternal extends LibraryCallable { * * Same as `getACall()` but is evaluated later and may depend negatively on `getACall()`. */ + overlay[global] DataFlow::InvokeNode getACallStage2() { none() } } @@ -467,6 +476,7 @@ predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition isParameterNodeImpl(p, c, pos) } +overlay[global] private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition pos) { n = call.asOrdinaryCall().getArgument(pos.asPositional()) or @@ -523,6 +533,7 @@ private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition ) } +overlay[global] predicate isArgumentNode(ArgumentNode n, DataFlowCall call, ArgumentPosition pos) { isArgumentNodeImpl(n, call, pos) } @@ -545,11 +556,13 @@ DataFlowCallable nodeGetEnclosingCallable(Node node) { node instanceof DataFlow::XmlAttributeNode and result.asFileCallable() = node.getFile() } +overlay[global] newtype TDataFlowType = TFunctionType(Function f) or TInstanceType(DataFlow::ClassNode cls) or TAnyType() +overlay[global] class DataFlowType extends TDataFlowType { string toDebugString() { result = @@ -575,6 +588,7 @@ class DataFlowType extends TDataFlowType { /** * Holds if `t1` is strictly stronger than `t2`. */ +overlay[global] predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { // 't1' is a subclass of 't2' t1.asInstanceOfClass() = t2.asInstanceOfClass().getADirectSubClass+() @@ -584,6 +598,7 @@ predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { t2 = TAnyType() } +overlay[global] private DataFlowType getPreciseType(Node node) { exists(Function f | (node = TValueNode(f) or node = TFunctionSelfReferenceNode(f)) and @@ -598,6 +613,7 @@ private DataFlowType getPreciseType(Node node) { result = getPreciseType(node.(PostUpdateNode).getPreUpdateNode()) } +overlay[global] DataFlowType getNodeType(Node node) { result = getPreciseType(node) or @@ -681,19 +697,23 @@ predicate neverSkipInPathGraph(Node node) { node.asExpr() instanceof VarRef } +overlay[global] string ppReprType(DataFlowType t) { none() } +overlay[global] pragma[inline] private predicate compatibleTypesWithAny(DataFlowType t1, DataFlowType t2) { t1 != TAnyType() and t2 = TAnyType() } +overlay[global] pragma[nomagic] private predicate compatibleTypes1(DataFlowType t1, DataFlowType t2) { t1.asInstanceOfClass().getADirectSubClass+() = t2.asInstanceOfClass() } +overlay[global] pragma[inline] predicate compatibleTypes(DataFlowType t1, DataFlowType t2) { t1 = t2 @@ -767,6 +787,7 @@ ContentApprox getContentApprox(Content c) { c instanceof MkCapturedContent and result = TApproxCapturedContent() } +overlay[global] cached private newtype TDataFlowCall = MkOrdinaryCall(DataFlow::InvokeNode node) or @@ -791,6 +812,7 @@ private newtype TDataFlowCall = FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } +overlay[global] class DataFlowCall extends TDataFlowCall { DataFlowCallable getEnclosingCallable() { none() } // Overridden in subclass @@ -816,6 +838,7 @@ class DataFlowCall extends TDataFlowCall { Location getLocation() { none() } // Overridden in subclass } +overlay[global] private class OrdinaryCall extends DataFlowCall, MkOrdinaryCall { private DataFlow::InvokeNode node; @@ -832,6 +855,7 @@ private class OrdinaryCall extends DataFlowCall, MkOrdinaryCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class PartialCall extends DataFlowCall, MkPartialCall { private DataFlow::PartialInvokeNode node; private DataFlow::Node callback; @@ -851,6 +875,7 @@ private class PartialCall extends DataFlowCall, MkPartialCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class BoundCall extends DataFlowCall, MkBoundCall { private DataFlow::InvokeNode node; private int boundArgs; @@ -868,6 +893,7 @@ private class BoundCall extends DataFlowCall, MkBoundCall { override Location getLocation() { result = node.getLocation() } } +overlay[global] private class AccessorCall extends DataFlowCall, MkAccessorCall { private DataFlow::PropRef ref; @@ -882,6 +908,7 @@ private class AccessorCall extends DataFlowCall, MkAccessorCall { override Location getLocation() { result = ref.getLocation() } } +overlay[global] class SummaryCall extends DataFlowCall, MkSummaryCall { private FlowSummaryImpl::Public::SummarizedCallable enclosingCallable; private FlowSummaryImpl::Private::SummaryNode receiver; @@ -908,6 +935,7 @@ class SummaryCall extends DataFlowCall, MkSummaryCall { * This is to help ensure captured variables can flow into the lambda in cases where * we can't find its call sites. */ +overlay[global] private class ImpliedLambdaCall extends DataFlowCall, MkImpliedLambdaCall { private Function function; @@ -981,6 +1009,7 @@ class DataFlowExpr = Expr; Node exprNode(DataFlowExpr expr) { result = DataFlow::exprNode(expr) } +overlay[global] pragma[nomagic] predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { ppos = apos @@ -993,6 +1022,7 @@ predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { // are only using these in cases where either the call or callee is generated by a flow summary. } +overlay[global] pragma[inline] DataFlowCallable viableCallable(DataFlowCall node) { // Note: we never include call edges externs here, as it negatively affects the field-flow branch limit, @@ -1021,6 +1051,7 @@ DataFlowCallable viableCallable(DataFlowCall node) { result.asSourceCallableNotExterns() = node.asImpliedLambdaCall() } +overlay[global] private DataFlowCall getACallOnThis(DataFlow::ClassNode cls) { result.asOrdinaryCall() = cls.getAReceiverNode().getAPropertyRead().getACall() or @@ -1029,6 +1060,7 @@ private DataFlowCall getACallOnThis(DataFlow::ClassNode cls) { result.asPartialCall().getACallbackNode() = cls.getAReceiverNode().getAPropertyRead() } +overlay[global] private predicate downwardCall(DataFlowCall call) { exists(DataFlow::ClassNode cls | call = getACallOnThis(cls) and @@ -1041,9 +1073,11 @@ private predicate downwardCall(DataFlowCall call) { * Holds if the set of viable implementations that can be called by `call` * might be improved by knowing the call context. */ +overlay[global] predicate mayBenefitFromCallContext(DataFlowCall call) { downwardCall(call) } /** Gets the type of the receiver of `call`. */ +overlay[global] private DataFlowType getThisArgumentType(DataFlowCall call) { exists(DataFlow::Node node | isArgumentNodeImpl(node, call, MkThisParameter()) and @@ -1052,6 +1086,7 @@ private DataFlowType getThisArgumentType(DataFlowCall call) { } /** Gets the type of the 'this' parameter of `call`. */ +overlay[global] private DataFlowType getThisParameterType(DataFlowCallable callable) { exists(DataFlow::Node node | isParameterNodeImpl(node, callable, MkThisParameter()) and @@ -1063,6 +1098,7 @@ private DataFlowType getThisParameterType(DataFlowCallable callable) { * Gets a viable dispatch target of `call` in the context `ctx`. This is * restricted to those `call`s for which a context might make a difference. */ +overlay[global] DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { mayBenefitFromCallContext(call) and result = viableCallable(call) and @@ -1071,16 +1107,19 @@ DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) { } bindingset[node, fun] +overlay[caller] pragma[inline_late] private predicate sameContainerAsEnclosingContainer(Node node, Function fun) { node.getContainer() = fun.getEnclosingContainer() } +overlay[global] abstract private class BarrierGuardAdapter extends DataFlow::Node { // Note: avoid depending on DataFlow::FlowLabel here as it will cause these barriers to be re-evaluated predicate blocksExpr(boolean outcome, Expr e) { none() } } +overlay[global] deprecated private class BarrierGuardAdapterSubclass extends BarrierGuardAdapter instanceof DataFlow::AdditionalBarrierGuardNode { override predicate blocksExpr(boolean outcome, Expr e) { super.blocks(outcome, e) } @@ -1092,6 +1131,7 @@ deprecated private class BarrierGuardAdapterSubclass extends BarrierGuardAdapter * * The standard library contains no subclasses of that class; this is for backwards compatibility only. */ +overlay[global] pragma[nomagic] private predicate legacyBarrier(DataFlow::Node node) { node = MakeBarrierGuard::getABarrierNode() @@ -1100,6 +1140,7 @@ private predicate legacyBarrier(DataFlow::Node node) { /** * Holds if `node` should be removed from the local data flow graph, for compatibility with legacy code. */ +overlay[global] pragma[nomagic] private predicate isBlockedLegacyNode(Node node) { // Ignore captured variable nodes for those variables that are handled by the captured-variable library. @@ -1155,6 +1196,7 @@ private predicate imprecisePostUpdateStep(DataFlow::PostUpdateNode postUpdate, D * Holds if there is a value-preserving steps `node1` -> `node2` that might * be cross function boundaries. */ +overlay[global] private predicate valuePreservingStep(Node node1, Node node2) { node1.getASuccessor() = node2 and not isBlockedLegacyNode(node1) and @@ -1223,10 +1265,12 @@ private predicate useUseFlow(Node node1, Node node2) { ) } +overlay[global] predicate simpleLocalFlowStep(Node node1, Node node2, string model) { simpleLocalFlowStep(node1, node2) and model = "" } +overlay[global] predicate simpleLocalFlowStep(Node node1, Node node2) { valuePreservingStep(node1, node2) and nodeGetEnclosingCallable(pragma[only_bind_out](node1)) = @@ -1314,6 +1358,7 @@ private predicate excludedJumpStep(Node node1, Node node2) { * that does not follow a call edge. For example, a step through a global * variable. */ +overlay[global] predicate jumpStep(Node node1, Node node2) { valuePreservingStep(node1, node2) and node1.getContainer() != node2.getContainer() and @@ -1330,6 +1375,7 @@ predicate jumpStep(Node node1, Node node2) { * `node1` references an object with a content `c.getAReadContent()` whose * value ends up in `node2`. */ +overlay[global] predicate readStep(Node node1, ContentSet c, Node node2) { exists(DataFlow::PropRead read | node1 = read.getBase() and @@ -1487,6 +1533,7 @@ private int firstSpreadArgumentIndex(InvokeExpr expr) { * `node2` references an object with a content `c.getAStoreContent()` that * contains the value of `node1`. */ +overlay[global] predicate storeStep(Node node1, ContentSet c, Node node2) { exists(DataFlow::PropWrite write | node1 = write.getRhs() and @@ -1545,6 +1592,7 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { * any value stored inside `f` is cleared at the pre-update node associated with `x` * in `x.f = newValue`. */ +overlay[global] predicate clearsContent(Node n, ContentSet c) { FlowSummaryPrivate::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) or @@ -1578,6 +1626,7 @@ predicate clearsContent(Node n, ContentSet c) { * Holds if the value that is being tracked is expected to be stored inside content `c` * at node `n`. */ +overlay[global] predicate expectsContent(Node n, ContentSet c) { FlowSummaryPrivate::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) or @@ -1602,6 +1651,7 @@ abstract class NodeRegion extends Unit { /** * Holds if the node `n` is unreachable when the call context is `call`. */ +overlay[global] predicate isUnreachableInCall(NodeRegion n, DataFlowCall call) { none() // TODO: could be useful, but not currently implemented for JS } @@ -1635,6 +1685,7 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) } /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ +overlay[global] predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { call.isSummaryCall(_, receiver.(FlowSummaryNode).getSummaryNode()) and exists(kind) or @@ -1646,6 +1697,7 @@ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { /** Extra data-flow steps needed for lambda flow analysis. */ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { none() } +overlay[global] class ArgumentNode extends DataFlow::Node { ArgumentNode() { isArgumentNodeImpl(this, _, _) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll index 1711faa4ade..9595ef935ce 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll @@ -519,22 +519,23 @@ private module CachedSteps { predicate receiverPropWrite(Function f, string prop, DataFlow::Node rhs) { DataFlow::thisNode(f).hasPropertyWrite(prop, rhs) } - - /** - * Holds if there is a step from `pred` to `succ` through a call to an identity function. - */ - cached - predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { - exists(DataFlow::GlobalVarRefNode global | - global.getName() = "Object" and - succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and - pred = succ.getArgument(0) - ) - } } import CachedSteps +/** + * Holds if there is a step from `pred` to `succ` through a call to an identity function. + */ +overlay[local] +cached +predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { + exists(DataFlow::GlobalVarRefNode global | + global.getName() = "Object" and + succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and + pred = succ.getArgument(0) + ) +} + /** * A utility class that is equivalent to `boolean` but does not require type joining. */ diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index a5131e4fd64..509aa79eda8 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -1,6 +1,8 @@ /** * Provides JS specific classes and predicates for defining flow summaries. */ +overlay[local] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowPrivate @@ -140,6 +142,7 @@ string encodeArgumentPosition(ArgumentPosition pos) { ReturnKind getStandardReturnValueKind() { result = MkNormalReturnKind() and Stage::ref() } private module FlowSummaryStepInput implements Private::StepsInputSig { + overlay[global] DataFlowCall getACall(SummarizedCallable sc) { exists(LibraryCallable callable | callable = sc | result.asOrdinaryCall() = diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll index 8edacdc2f0f..62892d7e5db 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableCapture.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + private import javascript as js private import semmle.javascript.dataflow.internal.DataFlowNode private import semmle.javascript.dataflow.internal.VariableOrThis diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll index a517e0d91fd..8a3b79a420f 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/VariableOrThis.qll @@ -1,3 +1,6 @@ +overlay[local] +module; + private import javascript private import DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll index 7e610c3c23c..1dd06c23638 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll @@ -3,6 +3,8 @@ * * JavaScript's old SSA library is still responsible for the ordinary SSA flow. */ +overlay[local] +module; private import javascript as js private import codeql.ssa.Ssa diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll index 2c460fcc345..aec8c82247f 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll @@ -1,6 +1,8 @@ /** * Models imports through the NPM `lazy-cache` package. */ +overlay[local] +module; import javascript @@ -58,6 +60,7 @@ module LazyCache { } /** A constant path element appearing in a call to a lazy-cache object. */ + overlay[global] deprecated private class LazyCachePathExpr extends PathExpr, ConstantString { LazyCachePathExpr() { this = any(LazyCacheImport rp).getArgument(0) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll index 20258622737..c6de3dd7316 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll @@ -181,9 +181,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashEach extends DataFlow::SummarizedCallable { LodashEach() { this = "_.each-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["each", "eachRight", "forEach", "forEachRight", "every", "some"]).getACall() } @@ -195,9 +197,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashMap extends DataFlow::SummarizedCallable { LodashMap() { this = "_.map" } + overlay[global] override DataFlow::CallNode getACall() { result = member("map").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -212,9 +216,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashFlatMap extends DataFlow::SummarizedCallable { LodashFlatMap() { this = "_.flatMap" } + overlay[global] override DataFlow::CallNode getACall() { result = member("flatMap").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -232,9 +238,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashFlatMapDeep extends DataFlow::SummarizedCallable { LodashFlatMapDeep() { this = "_.flatMapDeep" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["flatMapDeep", "flatMapDepth"]).getACall() } @@ -254,9 +262,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashReduce extends DataFlow::SummarizedCallable { LodashReduce() { this = "_.reduce-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["reduce", "reduceRight"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -271,9 +281,11 @@ module LodashUnderscore { } } + overlay[local] private class LoashSortBy extends DataFlow::SummarizedCallable { LoashSortBy() { this = "_.sortBy-like" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["sortBy", "orderBy"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -287,9 +299,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashMinMaxBy extends DataFlow::SummarizedCallable { LodashMinMaxBy() { this = "_.minBy / _.maxBy" } + overlay[global] override DataFlow::CallNode getACall() { result = member(["minBy", "maxBy"]).getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -299,9 +313,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashPartition extends DataFlow::SummarizedCallable { LodashPartition() { this = "_.partition" } + overlay[global] override DataFlow::CallNode getACall() { result = member("partition").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -311,9 +327,11 @@ module LodashUnderscore { } } + overlay[local] private class UnderscoreMapObject extends DataFlow::SummarizedCallable { UnderscoreMapObject() { this = "_.mapObject" } + overlay[global] override DataFlow::CallNode getACall() { result = member("mapObject").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { @@ -330,9 +348,11 @@ module LodashUnderscore { } } + overlay[local] private class LodashTap extends DataFlow::SummarizedCallable { LodashTap() { this = "_.tap" } + overlay[global] override DataFlow::CallNode getACall() { result = member("tap").getACall() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll index c5f8c3d14f1..89d436bb64c 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll @@ -8,14 +8,17 @@ import semmle.javascript.security.SensitiveActions private import semmle.javascript.dataflow.internal.PreCallGraphStep module NodeJSLib { + overlay[local] private GlobalVariable processVariable() { variables(result, "process", any(GlobalScope sc)) } + overlay[local] pragma[nomagic] private GlobalVarAccess processExprInTopLevel(TopLevel tl) { result = processVariable().getAnAccess() and tl = result.getTopLevel() } + overlay[local] pragma[nomagic] private GlobalVarAccess processExprInNodeModule() { result = processExprInTopLevel(any(NodeModule m)) @@ -25,6 +28,7 @@ module NodeJSLib { * An access to the global `process` variable in a Node.js module, interpreted as * an import of the `process` module. */ + overlay[local] private class ImplicitProcessImport extends DataFlow::ModuleImportNode::Range { ImplicitProcessImport() { this = DataFlow::exprNode(processExprInNodeModule()) } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll index a7286c7a199..f1f91785329 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll @@ -1,6 +1,8 @@ /** * Provides predicates for working with templating libraries. */ +overlay[local] +module; import javascript @@ -45,6 +47,7 @@ module Templating { Locatable getParent() { template_placeholder_tag_info(this, result, _) } /** Gets a data flow node representing the value plugged into this placeholder. */ + overlay[global] DataFlow::TemplatePlaceholderTagNode asDataFlowNode() { result.getTag() = this } /** Gets the top-level containing the template expression to be inserted at this placeholder. */ @@ -54,6 +57,7 @@ module Templating { * Holds if this performs raw interpolation, that is, inserts its result * in the output without escaping it. */ + overlay[global] predicate isRawInterpolation() { this.getRawText() .regexpMatch(getLikelyTemplateSyntax(this.getFile()).getRawInterpolationRegexp()) @@ -62,6 +66,7 @@ module Templating { /** * Holds if this performs HTML escaping on the result before inserting it in the template. */ + overlay[global] predicate isEscapingInterpolation() { this.getRawText() .regexpMatch(getLikelyTemplateSyntax(this.getFile()).getEscapingInterpolationRegexp()) @@ -93,6 +98,7 @@ module Templating { * Holds if this placeholder occurs in the definition of another template, which means the output * is susceptible to code injection. */ + overlay[global] predicate isInNestedTemplateContext(string templateType) { templateType = "AngularJS" and AngularJS::isInterpretedByAngularJS(this.getParent()) and @@ -135,6 +141,7 @@ module Templating { * * For example, the call generated from `items | async` would be found by `getAPipeCall("async")`. */ + overlay[global] DataFlow::CallNode getAPipeCall(string name) { result.getCalleeNode().asExpr().(PipeRefExpr).getName() = name } @@ -153,16 +160,19 @@ module Templating { Expr getExpression() { result = this.getChildStmt(0).(ExprStmt).getExpr() } /** Gets the data flow node representing the initialization of the given variable in this scope. */ + overlay[global] DataFlow::Node getVariableInit(string name) { result = DataFlow::ssaDefinitionNode(Ssa::implicitInit(this.getScope().getVariable(name))) } /** Gets a data flow node corresponding to a use of the given template variable within this top-level. */ + overlay[global] DataFlow::SourceNode getAVariableUse(string name) { result = this.getScope().getVariable(name).getAnAccess().flow() } /** Gets a data flow node corresponding to a use of the given template variable within this top-level. */ + overlay[global] DataFlow::SourceNode getAnAccessPathUse(string accessPath) { result = this.getAVariableUse(accessPath) or @@ -177,6 +187,7 @@ module Templating { /** * A place where a template is instantiated or rendered. */ + overlay[global] class TemplateInstantiation extends DataFlow::Node instanceof TemplateInstantiation::Range { /** Gets a data flow node that refers to the instantiated template string, if any. */ DataFlow::SourceNode getOutput() { result = super.getOutput() } @@ -206,6 +217,7 @@ module Templating { } /** Companion module to the `TemplateInstantiation` class. */ + overlay[global] module TemplateInstantiation { abstract class Range extends DataFlow::Node { /** Gets a data flow node that refers to the instantiated template, if any. */ @@ -230,6 +242,7 @@ module Templating { } /** Gets an API node that may flow to `succ` through a template instantiation. */ + overlay[global] private API::Node getTemplateInput(DataFlow::SourceNode succ) { exists(TemplateInstantiation inst, API::Node base, string name | base.asSink() = inst.getTemplateParamsNode() and @@ -258,6 +271,7 @@ module Templating { ) } + overlay[global] private class TemplateInputStep extends DataFlow::SharedFlowStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { getTemplateInput(succ).asSink() = pred @@ -268,6 +282,7 @@ module Templating { * A data flow step from the expression in a placeholder tag to the tag itself, * representing the value plugged into the template. */ + overlay[global] private class TemplatePlaceholderStep extends DataFlow::SharedFlowStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(TemplatePlaceholderTag tag | @@ -281,6 +296,7 @@ module Templating { * A taint step from a `TemplatePlaceholderTag` to the enclosing expression in the * surrounding JavaScript program. */ + overlay[global] private class PlaceholderToGeneratedCodeStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(TemplatePlaceholderTag tag | @@ -296,6 +312,7 @@ module Templating { final TemplatePlaceholderTag getAPlaceholder() { result.getFile() = this } /** Gets a template file referenced by this one via a template inclusion tag, such as `{% include foo %}` */ + overlay[global] TemplateFile getAnImportedFile() { result = this.getAPlaceholder().(TemplateInclusionTag).getImportedFile() } @@ -314,6 +331,7 @@ module Templating { * - The root folder is considered unknown, and so a heuristic is used to guess the most * likely template file being referenced. */ + overlay[global] abstract class TemplateFileReference extends DataFlow::Node { /** Gets the value that identifies the template. */ string getValue() { @@ -335,6 +353,7 @@ module Templating { } /** Get file argument of a template instantiation, seen as a template file reference. */ + overlay[global] private class DefaultTemplateFileReference extends TemplateFileReference { DefaultTemplateFileReference() { this = any(TemplateInstantiation inst).getTemplateFileNode() } } @@ -352,6 +371,7 @@ module Templating { * - The root folder is considered unknown, and so a heuristic is used to guess the most * likely template file being referenced. */ + overlay[global] abstract class TemplateFileReferenceString extends string { bindingset[this] TemplateFileReferenceString() { this = this } @@ -382,6 +402,7 @@ module Templating { } /** The value of a template reference node, as a template reference string. */ + overlay[global] private class DefaultTemplateReferenceString extends TemplateFileReferenceString { TemplateFileReference r; @@ -397,6 +418,7 @@ module Templating { } /** The `X` in a path of form `../X`, treated as a separate path string with a different context folder. */ + overlay[global] private class UpwardTraversalSuffix extends TemplateFileReferenceString { TemplateFileReferenceString original; @@ -412,6 +434,7 @@ module Templating { * Gets a "fingerprint" for the given template file, which is used to references * that might refer to it (for pruning purposes only). */ + overlay[global] pragma[nomagic] private string getTemplateFileFingerprint(TemplateFile file) { result = file.getStem() @@ -424,6 +447,7 @@ module Templating { * Gets a "fingerprint" for the given string, which must match one of the fingerprints of * the referenced file (for pruning purposes only). */ + overlay[global] pragma[nomagic] private string getTemplateRefFingerprint(TemplateFileReferenceString ref) { result = ref.getStem() and not result = ["index", ""] @@ -442,6 +466,7 @@ module Templating { * * This is only used to speed up `getAMatchingTarget` by pruning out pairs that can't match. */ + overlay[global] pragma[nomagic] private TemplateFile getAPotentialTarget(TemplateFileReferenceString ref) { getTemplateFileFingerprint(result) = getTemplateRefFingerprint(ref) @@ -467,6 +492,7 @@ module Templating { * Additionally, a file whose stem is `index` matches if `ref` would match the parent folder by * the above rules. For example: `bar` matches `src/bar/index.html`. */ + overlay[global] pragma[nomagic] private TemplateFile getAMatchingTarget(TemplateFileReferenceString ref) { result = getAPotentialTarget(ref) and @@ -491,6 +517,7 @@ module Templating { * The string `list` in `A/components/foo.js` will resolve to `A/views/list.html`, * and vice versa in `B/components/foo.js`. */ + overlay[global] pragma[nomagic] private int getRankOfMatchingTarget( TemplateFile file, Folder baseFolder, TemplateFileReferenceString ref @@ -508,6 +535,7 @@ module Templating { /** * Gets the template file referred to by `ref` when resolved from `baseFolder`. */ + overlay[global] private TemplateFile getBestMatchingTarget(Folder baseFolder, TemplateFileReferenceString ref) { result = max(getAMatchingTarget(ref) as f order by getRankOfMatchingTarget(f, baseFolder, ref)) } @@ -599,6 +627,7 @@ module Templating { override string getAPackageName() { result = "dot" } } + overlay[global] private TemplateSyntax getOwnTemplateSyntaxInFolder(Folder f) { exists(PackageDependencies deps | deps.getADependency(result.getAPackageName(), _) and @@ -606,6 +635,7 @@ module Templating { ) } + overlay[global] private TemplateSyntax getTemplateSyntaxInFolder(Folder f) { result = getOwnTemplateSyntaxInFolder(f) or @@ -613,6 +643,7 @@ module Templating { result = getTemplateSyntaxInFolder(f.getParentContainer()) } + overlay[global] private TemplateSyntax getTemplateSyntaxFromInstantiation(TemplateFile file) { result = any(TemplateInstantiation inst | inst.getTemplateFile() = file).getTemplateSyntax() } @@ -620,6 +651,7 @@ module Templating { /** * Gets a template syntax likely to be used in the given file. */ + overlay[global] TemplateSyntax getLikelyTemplateSyntax(TemplateFile file) { result = getTemplateSyntaxFromInstantiation(file) or @@ -632,6 +664,7 @@ module Templating { } /** A step through the `safe` pipe, which bypasses HTML escaping. */ + overlay[global] private class SafePipeStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(DataFlow::CallNode call | @@ -645,6 +678,7 @@ module Templating { /** * An EJS-style `include` call within a template tag, such as `<%- include(file, { params }) %>`. */ + overlay[global] private class EjsIncludeCallInTemplate extends TemplateInstantiation::Range, DataFlow::CallNode { EjsIncludeCallInTemplate() { exists(TemplatePlaceholderTag tag | @@ -669,6 +703,7 @@ module Templating { * * These API nodes are used in the `getTemplateInput` predicate. */ + overlay[global] private class IncludeFunctionAsEntryPoint extends API::EntryPoint { IncludeFunctionAsEntryPoint() { this = "IncludeFunctionAsEntryPoint" } @@ -703,6 +738,7 @@ module Templating { string getPath() { result = rawPath.trim().replaceAll("\\", "/").regexpReplaceAll("^\\./", "") } /** Gets the file referenced by this inclusion tag. */ + overlay[global] TemplateFile getImportedFile() { result = this.getPath() @@ -712,6 +748,7 @@ module Templating { } /** The imported string from a template inclusion tag. */ + overlay[global] private class TemplateInclusionPathString extends TemplateFileReferenceString { TemplateInclusionTag tag; @@ -723,6 +760,7 @@ module Templating { /** * A call to a member of the `consolidate` library, seen as a template instantiation. */ + overlay[global] private class ConsolidateCall extends TemplateInstantiation::Range, API::CallNode { string engine; diff --git a/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll b/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll index 90dcc886ed4..9097497b4f0 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/UriLibraries.qll @@ -422,9 +422,11 @@ private module ClosureLibraryUri { } } +overlay[local] private class QueryStringStringification extends DataFlow::SummarizedCallable { QueryStringStringification() { this = "query-string stringification" } + overlay[global] override DataFlow::InvokeNode getACall() { result = API::moduleImport(["querystring", "query-string", "querystringify", "qs"]) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll index 82deb735c62..9e7f94c139b 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/ModelsAsData.qll @@ -48,6 +48,7 @@ private class ThreatModelSourceFromDataExtension extends ThreatModelSource::Rang } } +overlay[local] private class SummarizedCallableFromModel extends DataFlow::SummarizedCallable { string type; string path; @@ -57,6 +58,7 @@ private class SummarizedCallableFromModel extends DataFlow::SummarizedCallable { this = type + ";" + path } + overlay[global] override DataFlow::InvokeNode getACall() { ModelOutput::resolvedSummaryBase(type, path, result) } override predicate propagatesFlow( diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll index c04a85487ac..80ec45a3cf1 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be3..3f38c498f32 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll index f0d751ad31b..a6ab3d691b5 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll @@ -41,6 +41,7 @@ class Location = JS::Location; * The model generator must explicitly generate the step between `(package)` and `(package).foo`, for example. */ bindingset[rawType] +overlay[caller] predicate parseTypeString(string rawType, string package, string qualifiedName) { exists(string regexp | regexp = "('[^']+'|[^.]+)(.*)" and @@ -55,6 +56,7 @@ predicate parseTypeString(string rawType, string package, string qualifiedName) /** * Holds if models describing `package` may be relevant for the analysis of this database. */ +overlay[local] predicate isPackageUsed(string package) { package = "global" or @@ -68,6 +70,7 @@ predicate isPackageUsed(string package) { } bindingset[type] +overlay[local] predicate isTypeUsed(string type) { exists(string package | parseTypeString(type, package, _) and @@ -79,8 +82,10 @@ predicate isTypeUsed(string type) { * Holds if `type` can be obtained from an instance of `otherType` due to * language semantics modeled by `getExtraNodeFromType`. */ +overlay[local] predicate hasImplicitTypeModel(string type, string otherType) { none() } +overlay[local] pragma[nomagic] private predicate parseRelevantTypeString(string rawType, string package, string qualifiedName) { isRelevantFullPath(rawType, _) and diff --git a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll index d8e4a18dfc1..cf34b6bdb16 100644 --- a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll +++ b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll @@ -2,6 +2,8 @@ * Provides classes for working with basic blocks, and predicates for computing * liveness information for local variables. */ +overlay[local] +module; import javascript private import semmle.javascript.internal.StmtContainers diff --git a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll index 98a35692822..ae9fe0bce27 100644 --- a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll +++ b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll @@ -40,6 +40,7 @@ module Stages { /** * The `ast` stage. */ + overlay[local] cached module Ast { /** @@ -84,6 +85,7 @@ module Stages { /** * The `basicblocks` stage. */ + overlay[local] cached module BasicBlocks { /** @@ -110,6 +112,7 @@ module Stages { /** * The part of data flow computed before flow summary nodes. */ + overlay[local] cached module EarlyDataFlowStage { /** @@ -134,6 +137,7 @@ module Stages { /** * The `dataflow` stage. */ + overlay[local] cached module DataFlowStage { /** @@ -167,8 +171,8 @@ module Stages { or exists(any(DataFlow::PropRef ref).getBase()) or - exists(any(DataFlow::ClassNode cls)) - or + // exists(any(DataFlow::ClassNode cls)) // Depends on AnalyzedNode + // or exists(any(DataFlow::CallNode node).getArgument(_)) or exists(any(DataFlow::CallNode node).getAnArgument()) @@ -202,8 +206,6 @@ module Stages { or exists(any(Import i).getImportedModule()) or - exists(DataFlow::moduleImport(_)) - or exists(any(ReExportDeclaration d).getReExportedModule()) or exists(any(Module m).getABulkExportedNode()) diff --git a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll index a1df0504ce8..ab867be307b 100644 --- a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll +++ b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll @@ -4,6 +4,8 @@ * Provides predicates and classes for relating nodes to their * enclosing `StmtContainer`. */ +overlay[local] +module; private import javascript private import semmle.javascript.internal.CachedStages diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll index 45ad9cf7a9c..4e1c9ee6884 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AmbiguousCoreMethods.qll @@ -20,6 +20,8 @@ * * (Promise is absent in the table above as there currently are no name clashes with Promise methods) */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll index 6754d3db307..1196ffdbac9 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Arrays.qll @@ -3,6 +3,8 @@ * * Note that some of Array methods are modeled in `AmbiguousCoreMethods.qll`, and `toString` is special-cased elsewhere. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll index 246ac0f19d0..6a33c9a5c4f 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/AsyncAwait.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through `async` functions and the `await` operator. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll index 2866c892608..80e43fdfcd8 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Decoders.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.InferredTypes diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll index 2976b467315..2661802b97e 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/DynamicImportStep.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow from a module into a dynamic `import()` expression. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll index 252baab207b..3dff015d9f3 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ExceptionFlow.qll @@ -1,6 +1,8 @@ /** * Contains a summary for propagating exceptions out of callbacks */ +overlay[local?] +module; private import javascript private import FlowSummaryUtil diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll index 33f891935f4..290567efbd9 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/FlowSummaryUtil.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.internal.Contents::Private diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll index ecc84170026..68298c3fb55 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through `for..of` loops. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll index 75815d00341..4f0868db519 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Generators.qll @@ -1,6 +1,8 @@ /** * Contains flow steps to model flow through generator functions. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll index 6b1a182a49b..7f9c13c63df 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Iterators.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through iterators. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.internal.DataFlowNode diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll index ecd2dcdfc79..4b8ecdeb4f2 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/JsonStringify.qll @@ -1,6 +1,8 @@ /** * Contains implicit read steps at the input to any function that converts a deep object to a string, such as `JSON.stringify`. */ +overlay[local?] +module; private import javascript private import FlowSummaryUtil diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll index d9649d407c6..645e36941dc 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Maps.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Map` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll index 74048f0e397..10292958df2 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Promises.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Promise` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll index 6b4f089b38e..e4d0951764f 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Sets.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through `Set` objects. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll index bf9442219a7..b5ecc8ef603 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/Strings.qll @@ -1,6 +1,8 @@ /** * Contains flow summaries and steps modeling flow through string methods. */ +overlay[local?] +module; private import javascript private import semmle.javascript.dataflow.FlowSummary diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll index 19a28036db4..0ac2307c81a 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/TypedArrays.qll @@ -1,3 +1,6 @@ +overlay[local?] +module; + private import javascript private import semmle.javascript.dataflow.FlowSummary private import semmle.javascript.dataflow.InferredTypes diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll index 0a47b6fcf9f..3d8d88d8ae4 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/UrlSearchParams.qll @@ -3,6 +3,8 @@ * * For now, the `URLSearchParams` object is modeled as a `Map` object. */ +overlay[local?] +module; private import javascript From 2b338fc1d9fe23b8722f98c1c892e695b408056c Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 3 Oct 2025 10:43:49 +0200 Subject: [PATCH 731/965] JS: Fix getRawEnclosingStmt call --- javascript/ql/lib/semmle/javascript/Expr.qll | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll index 177ef6991ce..ede0e7094ab 100644 --- a/javascript/ql/lib/semmle/javascript/Expr.qll +++ b/javascript/ql/lib/semmle/javascript/Expr.qll @@ -249,12 +249,6 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { ) } - pragma[inline] - private Stmt getRawEnclosingStmt(Expr e) { - // For performance reasons, we need the enclosing statement without overrides - enclosing_stmt(e, result) - } - /** * Gets the data-flow node where exceptions thrown by this expression will * propagate if this expression causes an exception to be thrown. @@ -262,9 +256,9 @@ class Expr extends @expr, ExprOrStmt, ExprOrType, AST::ValueNode { overlay[caller] pragma[inline] DataFlow::Node getExceptionTarget() { - result = getCatchParameterFromStmt(this.getRawEnclosingStmt(this)) + result = getCatchParameterFromStmt(getRawEnclosingStmt(this)) or - not exists(getCatchParameterFromStmt(this.getRawEnclosingStmt(this))) and + not exists(getCatchParameterFromStmt(getRawEnclosingStmt(this))) and result = any(DataFlow::FunctionNode f | f.getFunction() = this.getContainer()).getExceptionalReturn() } @@ -277,6 +271,13 @@ private DataFlow::Node getCatchParameterFromStmt(Stmt stmt) { DataFlow::parameterNode(stmt.getEnclosingTryCatchStmt().getACatchClause().getAParameter()) } +overlay[caller] +pragma[inline] +private Stmt getRawEnclosingStmt(Expr e) { + // For performance reasons, we need the enclosing statement without overrides + enclosing_stmt(e, result) +} + /** * An identifier. * From b1418e1d700e82d0b5e01f321a2b0ef236616de1 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 10 Oct 2025 13:27:46 +0200 Subject: [PATCH 732/965] JS: Add overlay[local?] to new summaries after rebasing --- javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll | 2 ++ .../ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll | 1 + 2 files changed, 3 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll b/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll index db2487ce46a..c95b7a8dc6a 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/AsyncPackage.qll @@ -172,6 +172,7 @@ module AsyncPackage { DataFlow::FunctionNode getFinalCallback() { result = this.getCallback(finalCallbackIndex) } } + overlay[local?] private class IterationCallFlowSummary extends DataFlow::SummarizedCallable { private int callbackArgIndex; @@ -219,6 +220,7 @@ module AsyncPackage { * * For example: `data -> result` in `async.sortBy(data, orderingFn, (err, result) => {})`. */ + overlay[local?] private class IterationPreserveTaintStepFlowSummary extends DataFlow::SummarizedCallable { IterationPreserveTaintStepFlowSummary() { this = "async.sortBy" } diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll index c6de3dd7316..3c6c4511f5b 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll @@ -362,6 +362,7 @@ module LodashUnderscore { } } + overlay[local?] private class LodashGroupBy extends DataFlow::SummarizedCallable { LodashGroupBy() { this = "_.groupBy" } From c09563f7755fc30bb05e5c4dae35dc16ff542a9b Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 10 Oct 2025 09:46:49 +0200 Subject: [PATCH 733/965] JS: Make more general-purpose data flow things local --- javascript/ql/lib/semmle/javascript/Extend.qll | 4 ++++ javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll | 4 +++- .../semmle/javascript/frameworks/AngularJS/AngularJSCore.qll | 1 + .../ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll | 4 ++++ .../lib/semmle/javascript/frameworks/PropertyProjection.qll | 3 +++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/Extend.qll b/javascript/ql/lib/semmle/javascript/Extend.qll index d0eeade5892..e59c11d225e 100644 --- a/javascript/ql/lib/semmle/javascript/Extend.qll +++ b/javascript/ql/lib/semmle/javascript/Extend.qll @@ -1,6 +1,8 @@ /** * Provides classes for reasoning about `extend`-like functions. */ +overlay[local] +module; import javascript @@ -169,6 +171,7 @@ private class FunctionalExtendCallShallow extends ExtendCall { * * Since all object properties are preserved, we model this as a value-preserving step. */ +overlay[global] private class ExtendCallStep extends PreCallGraphStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(ExtendCall extend | @@ -184,6 +187,7 @@ private import semmle.javascript.dataflow.internal.PreCallGraphStep /** * A step through a cloning library, such as `clone` or `fclone`. */ +overlay[global] private class CloneStep extends PreCallGraphStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(DataFlow::CallNode call | diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index 4a461961f8a..32fe6f709ca 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -1,6 +1,8 @@ /** * Provides predicates for associating qualified names with data flow nodes. */ +overlay[local] +module; import javascript private import semmle.javascript.dataflow.InferredTypes @@ -657,7 +659,7 @@ module AccessPath { */ cached predicate hasDominatingWrite(DataFlow::PropRead read) { - Stages::TypeTracking::ref() and + Stages::DataFlowStage::ref() and // within the same basic block. exists(ReachableBasicBlock bb, Root root, string path, int ranking | read.asExpr() = rankedAccessPath(bb, root, path, ranking, AccessPathRead()) and diff --git a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll index 41d14c1e3be..beb601dcfb9 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll @@ -15,6 +15,7 @@ private import AngularJS /** * Holds if `nd` is a reference to the `angular` variable. */ +overlay[local] DataFlow::SourceNode angular() { // either as a global result = DataFlow::globalVarRef("angular") diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll index 3c6c4511f5b..fe07e4f1967 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LodashUnderscore.qll @@ -9,6 +9,7 @@ module LodashUnderscore { /** * A data flow node that accesses a given member of `lodash` or `underscore`. */ + overlay[local] abstract class Member extends DataFlow::SourceNode { /** Gets the name of the accessed member. */ abstract string getName(); @@ -17,6 +18,7 @@ module LodashUnderscore { /** * An import of `lodash` or `underscore` accessing a given member of that package. */ + overlay[local] private class DefaultMember extends Member { string name; @@ -39,12 +41,14 @@ module LodashUnderscore { * In addition to normal imports, this supports per-method imports such as `require("lodash.map")` and `require("lodash/map")`. * In addition, the global variable `_` is assumed to refer to `lodash` or `underscore`. */ + overlay[local] DataFlow::SourceNode member(string name) { result.(Member).getName() = name } /** * Holds if `name` is the name of a member exported from the `lodash` package * which has a corresponding `lodash.xxx` NPM package. */ + overlay[local] private predicate isLodashMember(string name) { // Can be generated using Object.keys(require('lodash')) name = diff --git a/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll b/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll index 11fb0f5ceba..c0188361e72 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/PropertyProjection.qll @@ -4,6 +4,8 @@ * Subclass `PropertyProjection` to refine the behavior of the analysis on existing property projections. * Subclass `CustomPropertyProjection` to introduce new kinds of property projections. */ +overlay[local] +module; import javascript @@ -137,6 +139,7 @@ private class VarArgsPropertyProjection extends PropertyProjection::Range { /** * A taint step for a property projection. */ +overlay[global] private class PropertyProjectionTaintStep extends TaintTracking::SharedTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { // reading from a tainted object yields a tainted result From 889209719b6ec844b28f62f6e03a1f3476002d26 Mon Sep 17 00:00:00 2001 From: Taus Date: Fri, 10 Oct 2025 15:10:17 +0000 Subject: [PATCH 734/965] JS: Overlay annotations for some failing tests Locally these seem to get rid of the compilation warnings, but of course CI is the true arbiter here. --- javascript/ql/lib/utils/test/InlineSummaries.qll | 1 + javascript/ql/test/library-tests/AMD/tests.ql | 1 + .../CustomAbstractValueDefinitions.ql | 1 + .../CustomAbstractValueDefinitionsFlow.ql | 1 + .../ql/test/library-tests/FlowCustomisation/customValues.ql | 2 ++ .../ql/test/library-tests/ModuleImportNodes/CustomImport.ql | 1 + .../test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql | 1 + javascript/ql/test/library-tests/frameworks/data/test.ql | 1 + javascript/ql/test/library-tests/frameworks/data/warnings.ql | 1 + 9 files changed, 10 insertions(+) diff --git a/javascript/ql/lib/utils/test/InlineSummaries.qll b/javascript/ql/lib/utils/test/InlineSummaries.qll index 559f1360977..0366736eaf6 100644 --- a/javascript/ql/lib/utils/test/InlineSummaries.qll +++ b/javascript/ql/lib/utils/test/InlineSummaries.qll @@ -1,6 +1,7 @@ import javascript import semmle.javascript.dataflow.FlowSummary +overlay[local] class MkSummary extends SummarizedCallable { private CallExpr mkSummary; diff --git a/javascript/ql/test/library-tests/AMD/tests.ql b/javascript/ql/test/library-tests/AMD/tests.ql index e71ae089f2d..150c5e9a294 100644 --- a/javascript/ql/test/library-tests/AMD/tests.ql +++ b/javascript/ql/test/library-tests/AMD/tests.ql @@ -1,5 +1,6 @@ import javascript +overlay[local] class TestAmdModuleRange extends AmdModuleDefinition::Range { TestAmdModuleRange() { this.getCallee().(PropAccess).getQualifiedName() = "test.amd.range" } } diff --git a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql index a2d69f55ce8..c0571921fba 100644 --- a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql +++ b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitions.ql @@ -4,6 +4,7 @@ import semmle.javascript.dataflow.internal.FlowSteps as FlowSteps import semmle.javascript.dataflow.internal.AbstractPropertiesImpl as AbstractPropertiesImpl import semmle.javascript.dataflow.CustomAbstractValueDefinitions +overlay[local] class MyCustomAbstractValueDefinition extends CustomAbstractValueDefinition { DataFlow::ValueNode node; diff --git a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql index 0308ad6bf45..0f34b14b48c 100644 --- a/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql +++ b/javascript/ql/test/library-tests/CustomAbstractValueDefinitions/CustomAbstractValueDefinitionsFlow.ql @@ -2,6 +2,7 @@ import javascript import semmle.javascript.dataflow.InferredTypes import semmle.javascript.dataflow.CustomAbstractValueDefinitions +overlay[local] class MyCustomAbstractValueDefinition extends CustomAbstractValueDefinition, AST::ValueNode { MyCustomAbstractValueDefinition() { this.flow() instanceof DataFlow::ObjectLiteralNode and diff --git a/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql b/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql index 0b3f87f1b8d..75c4af21ed7 100644 --- a/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql +++ b/javascript/ql/test/library-tests/FlowCustomisation/customValues.ql @@ -4,6 +4,7 @@ private import semmle.javascript.dataflow.InferredTypes /** * A custom abstract value representing the DOM object `document`. */ +overlay[local] class Document extends CustomAbstractValueTag { Document() { this = "document" } @@ -25,6 +26,7 @@ class Document extends CustomAbstractValueTag { * Note that `getType()` isn't quite right, since `typeof document.all === 'undefined'`, * but that's fine for the purposes of this test. */ +overlay[local] class DocumentAll extends CustomAbstractValueTag { DocumentAll() { this = "document.all" } diff --git a/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql b/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql index abc8c4e1755..c118e36e606 100644 --- a/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql +++ b/javascript/ql/test/library-tests/ModuleImportNodes/CustomImport.ql @@ -1,5 +1,6 @@ import javascript +overlay[local] class CustomImport extends DataFlow::ModuleImportNode::Range, DataFlow::CallNode { CustomImport() { this.getCalleeName() = "customImport" } diff --git a/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql b/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql index 9a5350948fe..a9d27450aee 100644 --- a/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql +++ b/javascript/ql/test/library-tests/RecursionPrevention/SourceNodeFlowsTo.ql @@ -7,6 +7,7 @@ import javascript +overlay[local] class BadSourceNode extends DataFlow::SourceNode { BadSourceNode() { this.(DataFlow::PropRead).getPropertyName() = "foo" } diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ql b/javascript/ql/test/library-tests/frameworks/data/test.ql index 6a1d571351b..6ba504e921f 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.ql +++ b/javascript/ql/test/library-tests/frameworks/data/test.ql @@ -2,6 +2,7 @@ import javascript deprecated import utils.test.ConsistencyChecking import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels +overlay[local] class TypeModelFromCodeQL extends ModelInput::TypeModel { override predicate isTypeUsed(string type) { type = "danger-constant" } diff --git a/javascript/ql/test/library-tests/frameworks/data/warnings.ql b/javascript/ql/test/library-tests/frameworks/data/warnings.ql index 1ede8e08bcc..2c3c044ef69 100644 --- a/javascript/ql/test/library-tests/frameworks/data/warnings.ql +++ b/javascript/ql/test/library-tests/frameworks/data/warnings.ql @@ -1,6 +1,7 @@ import javascript import semmle.javascript.frameworks.data.internal.ApiGraphModels as ApiGraphModels +overlay[local] class IsTesting extends ApiGraphModels::TestAllModels { IsTesting() { this = this } } From 66febb263da8f499184563b49e4246cd788f089f Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 15 Oct 2025 10:46:42 +0200 Subject: [PATCH 735/965] JS: Add some overlay[caller] and a pragma[nomagic] annotations --- .../ql/lib/semmle/javascript/GlobalAccessPaths.qll | 9 +++++++++ .../javascript/dataflow/internal/DataFlowPrivate.qll | 2 ++ .../semmle/javascript/internal/BasicBlockInternal.qll | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index 32fe6f709ca..804542b0dc5 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -356,6 +356,7 @@ module AccessPath { * Gets a variable that is relevant for the computations in the `GetLaterAccess` module. * This predicate restricts as much as it can, but without depending on `getAVariableRef`. */ + overlay[caller] pragma[inline] private SsaVariable getARelevantVariableSimple() { // The variable might be used where `getLaterBaseAccess()` is called. @@ -407,6 +408,7 @@ module AccessPath { * } * ``` */ + overlay[caller] pragma[inline] DataFlow::Node getAReferenceTo(Root root, string path) { path = fromReference(result, root) and @@ -430,6 +432,7 @@ module AccessPath { * })(NS = NS || {}); * ``` */ + overlay[caller] pragma[inline] DataFlow::Node getAReferenceTo(string path) { path = fromReference(result, DataFlow::globalAccessPathRootPseudoNode()) @@ -451,6 +454,7 @@ module AccessPath { * } * ``` */ + overlay[caller] pragma[inline] DataFlow::Node getAnAssignmentTo(Root root, string path) { path = fromRhs(result, root) and @@ -472,6 +476,7 @@ module AccessPath { * })(foo = foo || {}); * ``` */ + overlay[caller] pragma[inline] DataFlow::Node getAnAssignmentTo(string path) { path = fromRhs(result, DataFlow::globalAccessPathRootPseudoNode()) @@ -482,6 +487,7 @@ module AccessPath { * * See `getAReferenceTo` and `getAnAssignmentTo` for more details. */ + overlay[caller] pragma[inline] DataFlow::Node getAReferenceOrAssignmentTo(string path) { result = getAReferenceTo(path) @@ -494,6 +500,7 @@ module AccessPath { * * See `getAReferenceTo` and `getAnAssignmentTo` for more details. */ + overlay[caller] pragma[inline] DataFlow::Node getAReferenceOrAssignmentTo(Root root, string path) { result = getAReferenceTo(root, path) @@ -504,6 +511,7 @@ module AccessPath { /** * Holds if there is a step from `pred` to `succ` through an assignment to an access path. */ + overlay[caller] pragma[inline] predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(string name, Root root | @@ -521,6 +529,7 @@ module AccessPath { /** * Gets a `SourceNode` that refers to the same value or access path as the given node. */ + overlay[caller] pragma[inline] DataFlow::SourceNode getAnAliasedSourceNode(DataFlow::Node node) { exists(DataFlow::SourceNode root, string accessPath | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index 68cf0aa4287..88217800f48 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -1493,6 +1493,7 @@ private predicate stringifiedNode(Node node) { } /** Gets the post-update node for which `node` is the corresponding pre-update node. */ +pragma[nomagic] private Node getPostUpdateForStore(Node base) { exists(Expr expr | base = TValueNode(expr) and @@ -1515,6 +1516,7 @@ private Node getPostUpdateForStore(Node base) { } /** Gets node to target with a store to the given `base` object.. */ +overlay[caller] pragma[inline] private Node getStoreTarget(DataFlow::Node base) { result = getPostUpdateForStore(base) diff --git a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll index cf34b6bdb16..d422c960a8f 100644 --- a/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll +++ b/javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll @@ -320,6 +320,7 @@ module Public { /** * Holds if this basic block strictly dominates `bb`. */ + overlay[caller] pragma[inline] predicate strictlyDominates(ReachableBasicBlock bb) { this = immediateDominator+(bb) } @@ -328,12 +329,14 @@ module Public { * * This predicate is reflexive: each reachable basic block dominates itself. */ + overlay[caller] pragma[inline] predicate dominates(ReachableBasicBlock bb) { this = immediateDominator*(bb) } /** * Holds if this basic block strictly post-dominates `bb`. */ + overlay[caller] pragma[inline] predicate strictlyPostDominates(ReachableBasicBlock bb) { this = immediatePostDominator+(bb) } @@ -342,6 +345,7 @@ module Public { * * This predicate is reflexive: each reachable basic block post-dominates itself. */ + overlay[caller] pragma[inline] predicate postDominates(ReachableBasicBlock bb) { this = immediatePostDominator*(bb) } } From e72232fd1d3d9d8b2a2fe2c9a4f80d7bd961ccd1 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 15 Oct 2025 11:05:22 +0200 Subject: [PATCH 736/965] JS: Add more overlay[caller?] annotations --- javascript/ql/lib/semmle/javascript/AST.qll | 1 + javascript/ql/lib/semmle/javascript/Locations.qll | 2 ++ javascript/ql/lib/semmle/javascript/Promises.qll | 2 ++ javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll | 1 + .../ql/lib/semmle/javascript/dataflow/internal/Contents.qll | 1 + .../lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll | 1 + .../ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll | 1 + .../lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll | 1 + .../frameworks/data/internal/ApiGraphModelsSpecific.qll | 2 ++ javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll | 1 + 10 files changed, 13 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index 6a0d35abea5..0467847a9a0 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -174,6 +174,7 @@ class AstNode extends @ast_node, NodeInStmtContainer { * The TypeScript compiler emits no code for ambient declarations, but they * can affect name resolution and type checking at compile-time. */ + overlay[caller?] pragma[inline] predicate isAmbient() { this.isAmbientInternal() diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index 87b41c2cb43..1c48a3adbd3 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -32,6 +32,7 @@ final class Location extends @location_default { int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } /** Holds if this location starts before location `that`. */ + overlay[caller] pragma[inline] predicate startsBefore(Location that) { exists(string f, int sl1, int sc1, int sl2, int sc2 | @@ -45,6 +46,7 @@ final class Location extends @location_default { } /** Holds if this location ends after location `that`. */ + overlay[caller] pragma[inline] predicate endsAfter(Location that) { exists(string f, int el1, int ec1, int el2, int ec2 | diff --git a/javascript/ql/lib/semmle/javascript/Promises.qll b/javascript/ql/lib/semmle/javascript/Promises.qll index dfdcdfd632c..f373ca87d39 100644 --- a/javascript/ql/lib/semmle/javascript/Promises.qll +++ b/javascript/ql/lib/semmle/javascript/Promises.qll @@ -238,6 +238,7 @@ module PromiseTypeTracking { * * These type-tracking steps are already included in the default type-tracking steps (through `PreCallGraphStep`). */ + overlay[caller?] pragma[inline] DataFlow::Node promiseStep(DataFlow::Node pred, StepSummary summary) { exists(string field | field = Promises::valueProp() | @@ -256,6 +257,7 @@ module PromiseTypeTracking { * Gets the result from a single step through a promise, from `pred` with tracker `t2` to `result` with tracker `t`. * This can be loading a resolved value from a promise, storing a value in a promise, or copying a resolved value from one promise to another. */ + overlay[caller?] pragma[inline] DataFlow::SourceNode promiseStep( DataFlow::SourceNode pred, DataFlow::TypeTracker t, DataFlow::TypeTracker t2 diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index a61b67e643f..9d4bda428b5 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -1436,6 +1436,7 @@ module DataFlow { /** * Gets the data flow node corresponding to `e`. */ + overlay[caller?] pragma[inline] ExprNode exprNode(Expr e) { result = valueNode(e) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll index be9bc2c81a3..d29a450274e 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll @@ -197,6 +197,7 @@ module Public { */ class ContentSet extends TContentSet { /** Gets a content that may be stored into when storing into this set. */ + overlay[caller?] pragma[inline] Content getAStoreContent() { result = this.asSingleton() diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index 88217800f48..24549e7f1e6 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -762,6 +762,7 @@ class ContentApprox extends TContentApprox { } } +overlay[global] pragma[inline] ContentApprox getContentApprox(Content c) { c instanceof MkPropertyContent and result = TApproxPropertyContent() diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll index 9595ef935ce..0f5eff53258 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll @@ -48,6 +48,7 @@ private predicate legacyPostUpdateStep(DataFlow::Node pred, DataFlow::Node succ) * Holds if data can flow in one step from `pred` to `succ`, taking * additional steps from the configuration into account. */ +overlay[caller?] pragma[inline] deprecated predicate localFlowStep( DataFlow::Node pred, DataFlow::Node succ, DataFlow::Configuration configuration, diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll index 1dd06c23638..edea8ed6c38 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll @@ -96,6 +96,7 @@ module SsaDataflowInput implements DataFlowIntegrationInputSig { } } + overlay[caller?] pragma[inline] predicate guardDirectlyControlsBlock(Guard guard, js::Cfg::BasicBlock bb, GuardValue branch) { exists(js::ConditionGuardNode g | diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll index a6ab3d691b5..2074b18600d 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll @@ -195,6 +195,7 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathTokenBase token) { } bindingset[node] +overlay[caller?] pragma[inline_late] private API::Node getAGuardedRouteHandlerApprox(API::Node node) { // For now just get any routing node with the same root (i.e. the same web app), as @@ -235,6 +236,7 @@ private predicate blockFuzzyCall(DataFlow::CallNode call) { isCommonBuiltinMethodName(call.getCalleeName()) } +overlay[caller?] pragma[inline] API::Node getAFuzzySuccessor(API::Node node) { result = node.getAMember() and diff --git a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll index ab867be307b..741575c3242 100644 --- a/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll +++ b/javascript/ql/lib/semmle/javascript/internal/StmtContainers.qll @@ -48,6 +48,7 @@ class NodeInStmtContainer extends Locatable, @node_in_stmt_container { /** * Gets the function or toplevel to which this node belongs. */ + overlay[caller] pragma[inline] final StmtContainer getContainer() { result = getStmtContainer(this) } } From ac3913e7dbef51c6c6b72bdd7e053b033e698268 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 16 Oct 2025 12:01:57 +0200 Subject: [PATCH 737/965] JS: Fix bad join in DuplicateProperty.ql --- .../ql/src/Expressions/DuplicateProperty.ql | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/javascript/ql/src/Expressions/DuplicateProperty.ql b/javascript/ql/src/Expressions/DuplicateProperty.ql index febdfe5b882..b13f1a93ec0 100644 --- a/javascript/ql/src/Expressions/DuplicateProperty.ql +++ b/javascript/ql/src/Expressions/DuplicateProperty.ql @@ -14,12 +14,26 @@ import Clones +bindingset[init] +pragma[inline_late] +private Property getPropertyFromInitializerStrict(Expr init) { result.getInit() = init } + +pragma[nomagic] +private predicate duplicateProperties( + DuplicatePropertyInitDetector dup, Property prop1, Property prop2 +) { + exists(Expr init2 | + dup.same(init2) and + prop1 = getPropertyFromInitializerStrict(dup) and + prop2 = getPropertyFromInitializerStrict(init2) + ) +} + from ObjectExpr oe, int i, int j, Property p, Property q, DuplicatePropertyInitDetector dpid where + duplicateProperties(dpid, p, q) and p = oe.getProperty(i) and q = oe.getProperty(j) and - dpid = p.getInit() and - dpid.same(q.getInit()) and i < j and // only report the next duplicate not exists(int mid | mid in [i + 1 .. j - 1] | dpid.same(oe.getProperty(mid).getInit())) From 5dd87e379b2d25b9402e689f64c073409dc90222 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 16 Oct 2025 12:22:18 +0200 Subject: [PATCH 738/965] JS: Add overlay[local] to restore magic in unwrap() predicate In this case we actually want magic to apply, but was prevented by locality. --- javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll b/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll index ed53158d51c..e8b235eca9b 100644 --- a/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll +++ b/javascript/ql/lib/LanguageFeatures/UnusedIndexVariable.qll @@ -1,6 +1,8 @@ /** * Provides a predicate for identifying unused index variables in loops. */ +overlay[local] +module; import javascript From 269489e8172ef9a1b1ebc524e712243665e9bd54 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 16 Oct 2025 12:22:45 +0200 Subject: [PATCH 739/965] JS: Avoid bad join in shared predicate induced by 'forex'. Use manual recursion instead. --- javascript/ql/lib/semmle/javascript/Expr.qll | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll index ede0e7094ab..b46faf7e2b7 100644 --- a/javascript/ql/lib/semmle/javascript/Expr.qll +++ b/javascript/ql/lib/semmle/javascript/Expr.qll @@ -1648,13 +1648,19 @@ private string getConstantString(Expr e) { result = e.(TemplateElement).getValue() } +pragma[nomagic] +private predicate hasConstantStringValue(Expr e) { + exists(getConstantString(e)) + or + hasAllConstantLeafs(e.getUnderlyingValue()) +} + /** * Holds if `add` is a string-concatenation where all the transitive leafs have a constant string value. */ private predicate hasAllConstantLeafs(AddExpr add) { - forex(Expr leaf | leaf = getAnAddOperand*(add) and not exists(getAnAddOperand(leaf)) | - exists(getConstantString(leaf)) - ) + hasConstantStringValue(add.getLeftOperand()) and + hasConstantStringValue(add.getRightOperand()) } /** From 4645f327a59dce81388798f90364c6a5887618ef Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 20 Oct 2025 11:57:39 +0200 Subject: [PATCH 740/965] JS: Avoid more bad joins due to locality --- javascript/ql/lib/semmle/javascript/AST.qll | 2 ++ javascript/ql/lib/semmle/javascript/Regexp.qll | 16 +++++++++++++--- .../lib/semmle/javascript/dataflow/DataFlow.qll | 1 + .../semmle/javascript/frameworks/LazyCache.qll | 4 ++-- .../internal/flow_summaries/ForOfLoops.qll | 10 ++++++++-- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index 0467847a9a0..0e6330605ba 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -477,6 +477,8 @@ module AST { DataFlow::AnalyzedNode analyze() { result = DataFlow::valueNode(this).analyze() } /** Gets the data flow node associated with this program element. */ + overlay[caller] + pragma[inline] DataFlow::ValueNode flow() { result = DataFlow::valueNode(this) } /** diff --git a/javascript/ql/lib/semmle/javascript/Regexp.qll b/javascript/ql/lib/semmle/javascript/Regexp.qll index dba2c853008..db779e600d6 100644 --- a/javascript/ql/lib/semmle/javascript/Regexp.qll +++ b/javascript/ql/lib/semmle/javascript/Regexp.qll @@ -1016,7 +1016,7 @@ overlay[global] pragma[inline] private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { any(Comparison compare) - .hasOperands(value.getALocalUse().asExpr(), any(Expr e | e.analyze().getAType() = TTNumber())) + .hasOperands(value.getALocalUse().asExpr(), any(Expr e | canBeNumber(e.analyze()))) or value.flowsToExpr(any(ArithmeticExpr e).getAnOperand()) or @@ -1031,6 +1031,16 @@ private predicate isUsedAsNumber(DataFlow::LocalSourceNode value) { ) } +bindingset[node] +overlay[global] +pragma[inline_late] +private predicate canBeString(DataFlow::AnalyzedNode node) { node.getAType() = TTString() } + +bindingset[node] +overlay[global] +pragma[inline_late] +private predicate canBeNumber(DataFlow::AnalyzedNode node) { node.getAType() = TTNumber() } + /** * Holds if `source` may be interpreted as a regular expression. */ @@ -1038,14 +1048,14 @@ overlay[global] cached predicate isInterpretedAsRegExp(DataFlow::Node source) { Stages::Taint::ref() and - source.analyze().getAType() = TTString() and + canBeString(source) and ( // The first argument to an invocation of `RegExp` (with or without `new`). source = DataFlow::globalVarRef("RegExp").getAnInvocation().getArgument(0) or // The argument of a call that coerces the argument to a regular expression. exists(DataFlow::MethodCallNode mce, string methodName | - mce.getReceiver().analyze().getAType() = TTString() and + canBeString(mce.getReceiver()) and mce.getMethodName() = methodName and not exists(Function func | func = mce.getACallee() | not isNativeStringMethod(func, methodName) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 9d4bda428b5..a5fb31df57e 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -1431,6 +1431,7 @@ module DataFlow { * This predicate is only defined for expressions, properties, and for statements that declare * a function, a class, or a TypeScript namespace or enum. */ + pragma[nomagic] ValueNode valueNode(AstNode nd) { result.getAstNode() = nd } /** diff --git a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll index aec8c82247f..e8b389e91ad 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/LazyCache.qll @@ -45,7 +45,7 @@ module LazyCache { pragma[noopt] override DataFlow::Node getImportedModuleNode() { this instanceof LazyCacheImport and - result = this.flow() + result = DataFlow::valueNode(this) or exists(LazyCacheVariable variable, Expr base, PropAccess access, string localName | // To avoid recursion, this should not depend on `SourceNode`. @@ -54,7 +54,7 @@ module LazyCache { access.getBase() = base and localName = this.getLocalAlias() and access.getPropertyName() = localName and - result = access.flow() + result = DataFlow::valueNode(access) ) } } diff --git a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll index 68298c3fb55..d8460f7d729 100644 --- a/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll +++ b/javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll @@ -50,12 +50,18 @@ class ForOfLoopStep extends AdditionalFlowInternal { ) { exists(ForOfStmt stmt | pred = getSynthesizedNode(stmt, "for-of-map-key") and - contents.asSingleton().asArrayIndex() = 0 + contents = arrayIndex0() or pred = getSynthesizedNode(stmt, "for-of-map-value") and - contents.asSingleton().asArrayIndex() = 1 + contents = arrayIndex1() | succ = DataFlow::lvalueNode(stmt.getLValue()) ) } } + +pragma[nomagic] +private DataFlow::ContentSet arrayIndex0() { result.asSingleton().asArrayIndex() = 0 } + +pragma[nomagic] +private DataFlow::ContentSet arrayIndex1() { result.asSingleton().asArrayIndex() = 1 } From 0594f84dfc31b9d8d7b8fcc4d8975d3e421a086b Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 22 Oct 2025 12:24:23 +0200 Subject: [PATCH 741/965] JS: Improve join orders related to getABooleanValue() --- .../ql/lib/semmle/javascript/dataflow/AbstractValues.qll | 1 + .../ql/lib/semmle/javascript/dataflow/TypeInference.qll | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll index 17908c0b67f..c5d9993dbb7 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/AbstractValues.qll @@ -59,6 +59,7 @@ class AbstractValue extends TAbstractValue { * Gets the Boolean value some concrete value represented by this * abstract value coerces to. */ + pragma[nomagic] abstract boolean getBooleanValue(); /** diff --git a/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll b/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll index 32ad78eb2c6..a5e686a90c2 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/TypeInference.qll @@ -92,10 +92,15 @@ class AnalyzedNode extends DataFlow::Node { PrimitiveType getAPrimitiveType() { result = this.getAValue().toPrimitive().getType() } /** Gets a Boolean value that this node evaluates to. */ + bindingset[this] + overlay[caller?] + pragma[inline_late] boolean getABooleanValue() { result = this.getAValue().getBooleanValue() } /** Gets the unique Boolean value that this node evaluates to, if any. */ - boolean getTheBooleanValue() { forex(boolean bv | bv = this.getABooleanValue() | result = bv) } + overlay[caller?] + pragma[inline] + boolean getTheBooleanValue() { result = unique( | | this.getABooleanValue()) } /** Gets the unique type inferred for this node, if any. */ InferredType getTheType() { result = unique(InferredType t | t = this.getAType()) } From 6498cd1b0725e74aecaa008f4dc9eb62db013886 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 31 Oct 2025 09:35:40 +0100 Subject: [PATCH 742/965] JS: Remove obsolete overlay[global] annotations --- javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll | 1 - javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll | 1 - 2 files changed, 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index a5fb31df57e..d7fa6ba2762 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -102,7 +102,6 @@ module DataFlow { * Holds if this data flow node accesses the global variable `g`, either directly * or through the `window` object. */ - overlay[global] predicate accessesGlobal(string g) { globalVarRef(g).flowsTo(this) } /** Holds if this node may evaluate to the string `s`, possibly through local data flow. */ diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll index c4c7b1d7d18..d4244ec3cbc 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll @@ -791,7 +791,6 @@ ModuleImportNode dependencyModuleImport(Dependency dep) { * the given `path`, or accesses `m` as a member on a default or * namespace import from `path`. */ -overlay[global] DataFlow::SourceNode moduleMember(string path, string m) { result = moduleImport(path).getAPropertyRead(m) } From 46b13878469d806c9d9d23030ad870123b08ef75 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 3 Nov 2025 10:05:39 +0100 Subject: [PATCH 743/965] JS: Make isAssignedInUniqueFile global, as it should be --- javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index 804542b0dc5..53e5a779a9b 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -206,6 +206,7 @@ module AccessPath { * Holds if the global `accessPath` is only assigned to from one file, not counting * self-assignments. */ + overlay[global] predicate isAssignedInUniqueFile(string accessPath) { strictcount(File f | isAssignedInFile(accessPath, f)) = 1 } @@ -511,7 +512,7 @@ module AccessPath { /** * Holds if there is a step from `pred` to `succ` through an assignment to an access path. */ - overlay[caller] + overlay[caller?] pragma[inline] predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists(string name, Root root | From 16e7dc1b8ab078b01ef750670338fb70077b7ed9 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 3 Nov 2025 11:42:52 +0100 Subject: [PATCH 744/965] Sync ApiGraphModelsExtensions.qll --- .../frameworks/data/internal/ApiGraphModelsExtensions.qll | 2 ++ .../ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll | 2 ++ 2 files changed, 4 insertions(+) diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be3..3f38c498f32 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll index 4969da43be3..3f38c498f32 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModelsExtensions.qll @@ -1,6 +1,8 @@ /** * Defines extensible predicates for contributing library models from data extensions. */ +overlay[local] +module; /** * Holds if the value at `(type, path)` should be seen as a flow From ecfa94600f34100f687230aece19c2b6af05a94e Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 3 Nov 2025 11:43:16 +0100 Subject: [PATCH 745/965] Sync ApiGraphModels.qll --- .../semmle/python/frameworks/data/internal/ApiGraphModels.qll | 2 ++ .../lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll | 2 ++ 2 files changed, 4 insertions(+) diff --git a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll index c04a85487ac..80ec45a3cf1 100644 --- a/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll +++ b/python/ql/lib/semmle/python/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific diff --git a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll index c04a85487ac..80ec45a3cf1 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/data/internal/ApiGraphModels.qll @@ -62,6 +62,8 @@ * should be prefixed with a tilde character (`~`). For example, `~Bar` can be used to indicate that * the type is not intended to match a static type. */ +overlay[local?] +module; private import codeql.util.Unit private import ApiGraphModelsSpecific as Specific From 578355ac27965e3a730e75d2813b5320a8591d5c Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 11 Nov 2025 14:47:09 +0100 Subject: [PATCH 746/965] JS: Fix bad join in CallGraphs.qll --- .../javascript/dataflow/internal/CallGraphs.qll | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll index cc4c883381e..67f4e55a5bb 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll @@ -97,9 +97,14 @@ module CallGraph { not exists(read.getPropertyName()) and result = read and // there exists only local reads of the object, nothing else. - forex(DataFlow::Node ref | ref = obj.getALocalUse() and exists(ref.asExpr()) | - ref = [obj, any(DataFlow::PropRead r).getBase()] - ) + objectOnlyUsedForPropRead(obj) + ) + } + + pragma[nomagic] + private predicate objectOnlyUsedForPropRead(DataFlow::ObjectLiteralNode obj) { + forex(DataFlow::Node ref | ref = obj.getALocalUse() and exists(ref.asExpr()) | + ref = [obj, any(DataFlow::PropRead r).getBase()] ) } From c7341f295dc19abfa4531d2b99de9ce180ae41c8 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 11 Nov 2025 14:47:20 +0100 Subject: [PATCH 747/965] JS: Fix bad join in BarrierGuards.qll --- .../dataflow/internal/BarrierGuards.qll | 33 +++++-------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll index 6dd0ebf0bb1..371fbce77a9 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/BarrierGuards.qll @@ -358,25 +358,18 @@ module MakeStateBarrierGuard< } /** - * Gets a logical `and` expression, or parenthesized expression, that contains `guard`. + * Gets any of the ancestors of `guard` that preserves the value of `possibleOutcome`. Includes the guard itself. */ - private Expr getALogicalAndParent(BarrierGuard guard) { - barrierGuardIsRelevant(guard) and result = guard.asExpr() + private Expr getALogicalOperatorParent(BarrierGuard guard, boolean possibleOutcome) { + barrierGuardIsRelevant(guard) and result = guard.asExpr() and possibleOutcome = [true, false] or - result.(LogAndExpr).getAnOperand() = getALogicalAndParent(guard) + result.(LogOrExpr).getAnOperand() = getALogicalOperatorParent(guard, possibleOutcome) and + possibleOutcome = false or - result.getUnderlyingValue() = getALogicalAndParent(guard) - } - - /** - * Gets a logical `or` expression, or parenthesized expression, that contains `guard`. - */ - private Expr getALogicalOrParent(BarrierGuard guard) { - barrierGuardIsRelevant(guard) and result = guard.asExpr() + result.(LogAndExpr).getAnOperand() = getALogicalOperatorParent(guard, possibleOutcome) and + possibleOutcome = true or - result.(LogOrExpr).getAnOperand() = getALogicalOrParent(guard) - or - result.getUnderlyingValue() = getALogicalOrParent(guard) + result.getUnderlyingValue() = getALogicalOperatorParent(guard, possibleOutcome) } final private class FinalFunction = Function; @@ -394,15 +387,7 @@ module MakeStateBarrierGuard< exists(BarrierGuard guard | barrierGuardIsRelevant(guard) and exists(Expr e | - exists(Expr returnExpr | - returnExpr = guard.asExpr() - or - // ad hoc support for conjunctions: - getALogicalAndParent(guard) = returnExpr and guardOutcome = true - or - // ad hoc support for disjunctions: - getALogicalOrParent(guard) = returnExpr and guardOutcome = false - | + exists(Expr returnExpr | returnExpr = getALogicalOperatorParent(guard, guardOutcome) | exists(SsaExplicitDefinition ssa | ssa.getDef().getSource() = returnExpr and ssa.getVariable().getAUse() = this.getAReturnedExpr() From 42aca4a171c844c6e6c08c3c26c2a411e28e3dad Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 08:51:41 +0000 Subject: [PATCH 748/965] Apply suggestions from code review Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../queries/security/CWE-295/DisabledCertificateCheck.qhelp | 4 ++-- .../src/queries/security/CWE-295/DisabledCertificateCheck.ql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index 4e9ce164f26..7284a7da407 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -5,13 +5,13 @@

    -The danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification are performed. If set to true, the client will accept any certificate or any host name, making it susceptible to man-in-the-middle attacks. +The danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification is performed. If set to true, the client will accept any certificate or any host name, making it susceptible to man-in-the-middle attacks.

    -Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true, except in controlled environments such as tests. In production, always ensure certificate and hostname verification are enabled to prevent security risks. +Do not set danger_accept_invalid_certs or danger_accept_invalid_hostnames to true, except in controlled environments such as tests. In production, always ensure certificate and hostname verification is enabled to prevent security risks.

    diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index b054ec306f7..d08ca32bb25 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -1,6 +1,6 @@ /** * @name Disabled TLS certificate check - * @description If an application disables TLS certificate checking, it may be vulnerable to + * @description An application that disables TLS certificate checking is more vulnerable to * man-in-the-middle attacks. * @kind path-problem * @problem.severity warning From 15fa99a288dba86b8bca7919963505d66fbd4587 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 09:00:46 +0000 Subject: [PATCH 749/965] Rust: Clarify some confusing text in the .qhelp. --- .../queries/security/CWE-295/DisabledCertificateCheck.qhelp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp index 7284a7da407..1824f6e78df 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.qhelp @@ -5,7 +5,10 @@

    -The danger_accept_invalid_certs and danger_accept_invalid_hostnames options on TLS connectors and HTTP clients control whether certificate and hostname verification is performed. If set to true, the client will accept any certificate or any host name, making it susceptible to man-in-the-middle attacks. +The danger_accept_invalid_certs option on TLS connectors and HTTP clients controls whether certificate verification is performed. If this option is set to true, the client will accept any certificate, making it susceptible to man-in-the-middle attacks. +

    +

    +Similarly, the danger_accept_invalid_hostnames option controls whether hostname verification is performed. If this option is set to true, the client will accept any valid certificate regardless of the site that certificate is for, again making it susceptible to man-in-the-middle attacks.

    From 12cbb64ef849da634bc13cc076d40bb82f3416ba Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 08:38:07 +0000 Subject: [PATCH 750/965] Rust: Add query to suite .expected lists. --- .../query-suite/rust-code-scanning.qls.expected | 1 + .../query-suite/rust-security-and-quality.qls.expected | 1 + .../query-suite/rust-security-extended.qls.expected | 1 + 3 files changed, 3 insertions(+) diff --git a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected index 70e1bcb1064..ea26dc63664 100644 --- a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected @@ -19,6 +19,7 @@ ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql ql/rust/ql/src/queries/security/CWE-918/RequestForgery.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index 596fdef3b20..81594574519 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -21,6 +21,7 @@ ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index 102c63e7942..3809a9fe01b 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -20,6 +20,7 @@ ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql From e43000f7cf1c19c7b76307f97583d78855b5ac50 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 09:21:04 +0000 Subject: [PATCH 751/965] Rust: Correct ordering in query suite .expected lists. --- .../query-suite/rust-code-scanning.qls.expected | 2 +- .../query-suite/rust-security-and-quality.qls.expected | 2 +- .../query-suite/rust-security-extended.qls.expected | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected index ea26dc63664..aa197cebd2e 100644 --- a/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-code-scanning.qls.expected @@ -11,6 +11,7 @@ ql/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql @@ -19,7 +20,6 @@ ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql -ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql ql/rust/ql/src/queries/security/CWE-918/RequestForgery.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected index 81594574519..30167696554 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-and-quality.qls.expected @@ -12,6 +12,7 @@ ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql @@ -21,7 +22,6 @@ ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-696/BadCtorInitialization.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql -ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql diff --git a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected index 3809a9fe01b..ebbf9511387 100644 --- a/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected +++ b/rust/ql/integration-tests/query-suite/rust-security-extended.qls.expected @@ -12,6 +12,7 @@ ql/rust/ql/src/queries/security/CWE-020/RegexInjection.ql ql/rust/ql/src/queries/security/CWE-022/TaintedPath.ql ql/rust/ql/src/queries/security/CWE-089/SqlInjection.ql ql/rust/ql/src/queries/security/CWE-117/LogInjection.ql +ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-311/CleartextTransmission.ql ql/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql ql/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql @@ -20,7 +21,6 @@ ql/rust/ql/src/queries/security/CWE-327/BrokenCryptoAlgorithm.ql ql/rust/ql/src/queries/security/CWE-327/WeakSensitiveDataHashing.ql ql/rust/ql/src/queries/security/CWE-614/InsecureCookie.ql ql/rust/ql/src/queries/security/CWE-770/UncontrolledAllocationSize.ql -ql/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql ql/rust/ql/src/queries/security/CWE-798/HardcodedCryptographicValue.ql ql/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql ql/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql From c6164b33e5e3afb764d0ff693acfac349cb8691c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 10:47:04 +0100 Subject: [PATCH 752/965] Address review comment --- rust/ql/lib/codeql/rust/internal/PathResolution.qll | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 568ff23aaf1..eebbc2b30f0 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -2033,10 +2033,7 @@ private ItemNode resolveUseTreeListItemQualifier( private UseTree getAUseUseTree(Use use) { exists(UseTree root | root = use.getUseTree() | - result = root - or - not root.hasPath() and - result = getAUseTreeUseTree(root) + if root.hasPath() then result = root else result = getAUseTreeUseTree(root) ) } From b31dfdd5f4d30bd0c163c7955a6b7a9d9d024aaf Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 13 Nov 2025 13:09:44 +0100 Subject: [PATCH 753/965] Guards: Add elaborating comment. --- shared/controlflow/codeql/controlflow/Guards.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared/controlflow/codeql/controlflow/Guards.qll b/shared/controlflow/codeql/controlflow/Guards.qll index db81aa8443a..8fd39279ff6 100644 --- a/shared/controlflow/codeql/controlflow/Guards.qll +++ b/shared/controlflow/codeql/controlflow/Guards.qll @@ -1114,6 +1114,11 @@ module Make< private predicate validReturnInCustomGuardToRank( int rnk, NonOverridableMethod m, ParameterPosition ppos, GuardValue retval, GuardValue val ) { + // The forall-range has been pushed all the way into + // `relevantReturnExprValue` and `validReturnInCustomGuard`. This means + // that this base case ensures that at least one return expression + // non-vacuously satisfies that it's a valid implication from return + // value to parameter value. validReturnInCustomGuard(_, _, m, ppos, retval, val) and rnk = 0 or validReturnInCustomGuardToRank(rnk - 1, m, ppos, retval, val) and From 1b6b1e56ed5f24be95412bff49d4d7ed0106f4f6 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 15:21:04 +0100 Subject: [PATCH 754/965] Rust: Fix bad join Before ``` Pipeline standard for ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18@7580bdbj was evaluated in 205 iterations totaling 49106ms (delta sizes total: 1254645). 8014745124 ~4% {1} r1 = AstNodeImpl::Impl::AstNode#22e758cf AND NOT `ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18#prev`(FIRST 1) 822416474 ~0% {2} | JOIN WITH `ElementImpl::Impl::MacroExpansion::getImmediatelyEnclosingMacroInvocation/1#1eb32ecc` ON FIRST 1 OUTPUT Rhs.1, Lhs.0 1254645 ~0% {1} | JOIN WITH `ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18#prev_delta` ON FIRST 1 OUTPUT Lhs.1 return r1 ``` After ``` Pipeline standard for ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18@f39b84ka was evaluated in 205 iterations totaling 138ms (delta sizes total: 1254645). 4675568 ~0% {1} r1 = JOIN `ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18#prev_delta` WITH `ElementImpl::Impl::MacroExpansion::getImmediatelyEnclosingMacroInvocation/1#1eb32ecc_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1 4672186 ~0% {1} | JOIN WITH AstNodeImpl::Impl::AstNode#22e758cf ON FIRST 1 OUTPUT Lhs.0 1254645 ~0% {1} | AND NOT `ElementImpl::Impl::MacroExpansion::isFromMacroExpansion/1#69965d18#prev`(FIRST 1) return r1 ``` --- rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index f8aaf597ca2..158a5ee9670 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -105,7 +105,7 @@ module Impl { not isAttributeMacroExpansionSourceLocation(macro, n.getLocation()) ) or - isFromMacroExpansion(getImmediatelyEnclosingMacroInvocation(n)) + isFromMacroExpansion(pragma[only_bind_into](getImmediatelyEnclosingMacroInvocation(n))) } cached From e0f0305ace1a07a38802607bd43e6bdf356cb689 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 11:55:34 +0000 Subject: [PATCH 755/965] Rust: Add test cases for rust/access-invalid-pointer based on real world FPs. --- .../CWE-825/AccessAfterLifetime.expected | 94 +++++++++---------- .../CWE-825/AccessInvalidPointer.expected | 36 +++---- .../security/CWE-825/deallocation.rs | 72 ++++++++++++++ .../test/query-tests/security/CWE-825/main.rs | 5 + 4 files changed, 142 insertions(+), 65 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected index f58c58bc896..8b521239978 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -24,27 +24,27 @@ | lifetime.rs:808:23:808:25 | ptr | lifetime.rs:798:9:798:12 | &val | lifetime.rs:808:23:808:25 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:796:6:796:8 | val | val | | main.rs:64:23:64:24 | p2 | main.rs:44:26:44:28 | &b2 | main.rs:64:23:64:24 | p2 | Access of a pointer to $@ after its lifetime has ended. | main.rs:43:13:43:14 | b2 | b2 | edges -| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:151:14:151:15 | p1 | provenance | | -| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:158:14:158:15 | p1 | provenance | | -| deallocation.rs:148:30:148:38 | &raw const my_buffer | deallocation.rs:148:6:148:7 | p1 | provenance | | -| deallocation.rs:228:28:228:43 | ...: ... | deallocation.rs:230:18:230:20 | ptr | provenance | | -| deallocation.rs:240:27:240:42 | ...: ... | deallocation.rs:248:18:248:20 | ptr | provenance | | -| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | -| deallocation.rs:257:7:257:10 | ptr1 | deallocation.rs:260:4:260:7 | ptr1 | provenance | | -| deallocation.rs:257:14:257:33 | &raw mut ... | deallocation.rs:257:7:257:10 | ptr1 | provenance | | -| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | -| deallocation.rs:258:7:258:10 | ptr2 | deallocation.rs:261:4:261:7 | ptr2 | provenance | | -| deallocation.rs:258:14:258:33 | &raw mut ... | deallocation.rs:258:7:258:10 | ptr2 | provenance | | -| deallocation.rs:260:4:260:7 | ptr1 | deallocation.rs:263:27:263:30 | ptr1 | provenance | | -| deallocation.rs:261:4:261:7 | ptr2 | deallocation.rs:265:26:265:29 | ptr2 | provenance | | -| deallocation.rs:263:27:263:30 | ptr1 | deallocation.rs:228:28:228:43 | ...: ... | provenance | | -| deallocation.rs:265:26:265:29 | ptr2 | deallocation.rs:240:27:240:42 | ...: ... | provenance | | -| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:279:13:279:16 | ptr1 | provenance | | -| deallocation.rs:276:6:276:9 | ptr1 | deallocation.rs:287:13:287:16 | ptr1 | provenance | | -| deallocation.rs:276:13:276:28 | &raw mut ... | deallocation.rs:276:6:276:9 | ptr1 | provenance | | -| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:298:13:298:16 | ptr2 | provenance | | -| deallocation.rs:295:6:295:9 | ptr2 | deallocation.rs:308:13:308:16 | ptr2 | provenance | | -| deallocation.rs:295:13:295:28 | &raw mut ... | deallocation.rs:295:6:295:9 | ptr2 | provenance | | +| deallocation.rs:220:6:220:7 | p1 | deallocation.rs:223:14:223:15 | p1 | provenance | | +| deallocation.rs:220:6:220:7 | p1 | deallocation.rs:230:14:230:15 | p1 | provenance | | +| deallocation.rs:220:30:220:38 | &raw const my_buffer | deallocation.rs:220:6:220:7 | p1 | provenance | | +| deallocation.rs:300:28:300:43 | ...: ... | deallocation.rs:302:18:302:20 | ptr | provenance | | +| deallocation.rs:312:27:312:42 | ...: ... | deallocation.rs:320:18:320:20 | ptr | provenance | | +| deallocation.rs:329:7:329:10 | ptr1 | deallocation.rs:332:4:332:7 | ptr1 | provenance | | +| deallocation.rs:329:7:329:10 | ptr1 | deallocation.rs:332:4:332:7 | ptr1 | provenance | | +| deallocation.rs:329:14:329:33 | &raw mut ... | deallocation.rs:329:7:329:10 | ptr1 | provenance | | +| deallocation.rs:330:7:330:10 | ptr2 | deallocation.rs:333:4:333:7 | ptr2 | provenance | | +| deallocation.rs:330:7:330:10 | ptr2 | deallocation.rs:333:4:333:7 | ptr2 | provenance | | +| deallocation.rs:330:14:330:33 | &raw mut ... | deallocation.rs:330:7:330:10 | ptr2 | provenance | | +| deallocation.rs:332:4:332:7 | ptr1 | deallocation.rs:335:27:335:30 | ptr1 | provenance | | +| deallocation.rs:333:4:333:7 | ptr2 | deallocation.rs:337:26:337:29 | ptr2 | provenance | | +| deallocation.rs:335:27:335:30 | ptr1 | deallocation.rs:300:28:300:43 | ...: ... | provenance | | +| deallocation.rs:337:26:337:29 | ptr2 | deallocation.rs:312:27:312:42 | ...: ... | provenance | | +| deallocation.rs:348:6:348:9 | ptr1 | deallocation.rs:351:13:351:16 | ptr1 | provenance | | +| deallocation.rs:348:6:348:9 | ptr1 | deallocation.rs:359:13:359:16 | ptr1 | provenance | | +| deallocation.rs:348:13:348:28 | &raw mut ... | deallocation.rs:348:6:348:9 | ptr1 | provenance | | +| deallocation.rs:367:6:367:9 | ptr2 | deallocation.rs:370:13:370:16 | ptr2 | provenance | | +| deallocation.rs:367:6:367:9 | ptr2 | deallocation.rs:380:13:380:16 | ptr2 | provenance | | +| deallocation.rs:367:13:367:28 | &raw mut ... | deallocation.rs:367:6:367:9 | ptr2 | provenance | | | lifetime.rs:21:2:21:18 | return ... | lifetime.rs:54:11:54:30 | get_local_dangling(...) | provenance | | | lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:21:2:21:18 | return ... | provenance | | | lifetime.rs:27:2:27:22 | return ... | lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | provenance | | @@ -234,32 +234,32 @@ models | 4 | Summary: ::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | | 5 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | nodes -| deallocation.rs:148:6:148:7 | p1 | semmle.label | p1 | -| deallocation.rs:148:30:148:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | -| deallocation.rs:151:14:151:15 | p1 | semmle.label | p1 | -| deallocation.rs:158:14:158:15 | p1 | semmle.label | p1 | -| deallocation.rs:228:28:228:43 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:230:18:230:20 | ptr | semmle.label | ptr | -| deallocation.rs:240:27:240:42 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:248:18:248:20 | ptr | semmle.label | ptr | -| deallocation.rs:257:7:257:10 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:257:14:257:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:258:7:258:10 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:258:14:258:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:260:4:260:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:261:4:261:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:263:27:263:30 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:265:26:265:29 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:276:6:276:9 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:276:13:276:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:279:13:279:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:287:13:287:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:295:6:295:9 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:295:13:295:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:298:13:298:16 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:308:13:308:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:220:6:220:7 | p1 | semmle.label | p1 | +| deallocation.rs:220:30:220:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | +| deallocation.rs:223:14:223:15 | p1 | semmle.label | p1 | +| deallocation.rs:230:14:230:15 | p1 | semmle.label | p1 | +| deallocation.rs:300:28:300:43 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:302:18:302:20 | ptr | semmle.label | ptr | +| deallocation.rs:312:27:312:42 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:320:18:320:20 | ptr | semmle.label | ptr | +| deallocation.rs:329:7:329:10 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:329:14:329:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:330:7:330:10 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:330:14:330:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:332:4:332:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:332:4:332:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:333:4:333:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:333:4:333:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:335:27:335:30 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:337:26:337:29 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:348:6:348:9 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:348:13:348:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:351:13:351:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:359:13:359:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:367:6:367:9 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:367:13:367:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:370:13:370:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:380:13:380:16 | ptr2 | semmle.label | ptr2 | | lifetime.rs:21:2:21:18 | return ... | semmle.label | return ... | | lifetime.rs:21:9:21:18 | &my_local1 | semmle.label | &my_local1 | | lifetime.rs:27:2:27:22 | return ... | semmle.label | return ... | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index 1e9bdb3c8bb..2ee4afddf2e 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -13,10 +13,10 @@ | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | -| deallocation.rs:180:15:180:16 | p1 | deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:180:15:180:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:176:3:176:25 | ...::drop_in_place | invalid | -| deallocation.rs:180:15:180:16 | p1 | deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:180:15:180:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:176:3:176:25 | ...::drop_in_place | invalid | -| deallocation.rs:248:18:248:20 | ptr | deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:248:18:248:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:242:3:242:25 | ...::drop_in_place | invalid | -| deallocation.rs:248:18:248:20 | ptr | deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:248:18:248:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:242:3:242:25 | ...::drop_in_place | invalid | +| deallocation.rs:252:15:252:16 | p1 | deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:252:15:252:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:248:3:248:25 | ...::drop_in_place | invalid | +| deallocation.rs:252:15:252:16 | p1 | deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:252:15:252:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:248:3:248:25 | ...::drop_in_place | invalid | +| deallocation.rs:320:18:320:20 | ptr | deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:320:18:320:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:314:3:314:25 | ...::drop_in_place | invalid | +| deallocation.rs:320:18:320:20 | ptr | deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:320:18:320:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:314:3:314:25 | ...::drop_in_place | invalid | edges | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:26:15:26:16 | m1 | provenance | | @@ -44,12 +44,12 @@ edges | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | | deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:176:27:176:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | deallocation.rs:176:27:176:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:176:27:176:28 | [post] p1 | deallocation.rs:180:15:180:16 | p1 | provenance | | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | deallocation.rs:242:27:242:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:242:27:242:29 | [post] ptr | deallocation.rs:248:18:248:20 | ptr | provenance | | +| deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:248:27:248:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:248:27:248:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:248:27:248:28 | [post] p1 | deallocation.rs:252:15:252:16 | p1 | provenance | | +| deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:314:27:314:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:314:27:314:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:314:27:314:29 | [post] ptr | deallocation.rs:320:18:320:20 | ptr | provenance | | models | 1 | Sink: core::ptr::read; Argument[0]; pointer-access | | 2 | Sink: core::ptr::write; Argument[0]; pointer-access | @@ -92,12 +92,12 @@ nodes | deallocation.rs:130:14:130:15 | p1 | semmle.label | p1 | | deallocation.rs:131:14:131:15 | p2 | semmle.label | p2 | | deallocation.rs:132:14:132:15 | p3 | semmle.label | p3 | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:176:3:176:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:176:27:176:28 | [post] p1 | semmle.label | [post] p1 | -| deallocation.rs:180:15:180:16 | p1 | semmle.label | p1 | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:242:3:242:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:242:27:242:29 | [post] ptr | semmle.label | [post] ptr | -| deallocation.rs:248:18:248:20 | ptr | semmle.label | ptr | +| deallocation.rs:248:3:248:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:248:3:248:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:248:27:248:28 | [post] p1 | semmle.label | [post] p1 | +| deallocation.rs:252:15:252:16 | p1 | semmle.label | p1 | +| deallocation.rs:314:3:314:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:314:3:314:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:314:27:314:29 | [post] ptr | semmle.label | [post] ptr | +| deallocation.rs:320:18:320:20 | ptr | semmle.label | ptr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index 89ef0470e99..ab4b1e73a2b 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -137,6 +137,78 @@ pub fn test_ptr_invalid(mode: i32) { } } +struct MyObject { + value: i64 +} + +impl MyObject { + fn is_zero(&self) -> bool { + self.value == 0 + } +} + +pub unsafe fn test_ptr_invalid_conditions(mode: i32) { + let layout = std::alloc::Layout::new::(); + let mut ptr = std::alloc::alloc(layout) as *mut MyObject; + (*ptr).value = 0; // good + + if mode == 121 { + ptr = std::ptr::null_mut(); // (causes a panic below) + } + + if ptr.is_null() { + let v = (*ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond1 v = {v}"); + } else { + let v = (*ptr).value; // good - unreachable with null pointer + println!(" cond2 v = {v}"); + } + + if mode == 122 { + ptr = std::ptr::null_mut(); // (causes a panic below) + } + + if !(ptr.is_null()) { + let v = (*ptr).value; // good - unreachable with null pointer + println!(" cond3 v = {v}"); + } else { + let v = (*ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond4 v = {v}"); + } + + if mode == 123 { + ptr = std::ptr::null_mut(); // (causes a panic below) + } + + if ptr.is_null() || (*ptr).value == 0 { // good - deref is protected by short-circuiting + println!(" cond5"); + } + + if ptr.is_null() || (*ptr).is_zero() { // good - deref is protected by short-circuiting + println!(" cond6"); + } + + if !ptr.is_null() || (*ptr).value == 0 { // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond7"); + } + + if mode == 124 { + ptr = std::ptr::null_mut(); // (causes a panic below) + } + + if ptr.is_null() && (*ptr).is_zero() { // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond8"); + } + + if mode == 125 { + ptr = std::ptr::null_mut(); // (causes a panic below) + } + + if (*ptr).is_zero() || ptr.is_null() { // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond9"); + } +} + // --- drop --- struct MyBuffer { diff --git a/rust/ql/test/query-tests/security/CWE-825/main.rs b/rust/ql/test/query-tests/security/CWE-825/main.rs index 8d1f2a42146..d15f595e13c 100644 --- a/rust/ql/test/query-tests/security/CWE-825/main.rs +++ b/rust/ql/test/query-tests/security/CWE-825/main.rs @@ -126,6 +126,11 @@ fn main() { println!("test_ptr_invalid:"); test_ptr_invalid(mode); + println!("test_ptr_invalid_conditions:"); + unsafe { + test_ptr_invalid_conditions(mode); + } + println!("test_drop:"); test_drop(); From f926a076b8cb451cc38815c7aa328bbf023154a5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 21:26:30 +0100 Subject: [PATCH 756/965] Rust: Fix bad join Before ``` Evaluated relational algebra for predicate TypeMention::NonAliasPathTypeMention.getTypeMentionForTypeParameter/1#f0c507c8@d7d71dnu with tuple counts: 12496 ~2% {3} r1 = SCAN `TypeMention::NonAliasPathTypeMention.getAnAssocTypeArgument/1#c61d1deb` OUTPUT In.2, In.0, In.1 12421 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.0 12421 ~0% {3} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2 12421 ~0% {3} | JOIN WITH cached_Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 12421 ~0% {3} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2 1 ~0% {2} r2 = SCAN `Stdlib::FnOnceTrait.getTypeParam/0#dispred#93f20bbc` OUTPUT In.1, In.0 1 ~0% {2} | JOIN WITH cached_Type::TTypeParamTypeParameter#868c69a5 ON FIRST 1 OUTPUT Rhs.1, Lhs.1 1 ~0% {2} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0 3216 ~0% {2} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 3216 ~0% {3} | JOIN WITH `Path::Generated::Path.getSegment/0#dispred#1c7ef50f` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 3201 ~0% {3} | JOIN WITH `PathSegment::Generated::PathSegment.getParenthesizedArgList/0#dispred#cd573956` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 3201 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.0 1 ~0% {2} r3 = SCAN `Stdlib::FnOnceTrait.getOutputType/0#0d2e9ef1` OUTPUT In.1, In.0 1 ~0% {2} | JOIN WITH cached_Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1 1 ~0% {2} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0 3216 ~3% {2} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 3216 ~0% {3} | JOIN WITH `Path::Generated::Path.getSegment/0#dispred#1c7ef50f` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 2958 ~0% {3} | JOIN WITH `PathSegment::Generated::PathSegment.getRetType/0#dispred#9d400241` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 2958 ~0% {3} | JOIN WITH `RetTypeRepr::Generated::RetTypeRepr.getTypeRepr/0#dispred#fd85a980` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 2944 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.0 54186 ~3% {2} r4 = JOIN `TypeAlias::Generated::TypeAlias.getTypeRepr/0#dispred#5fd7e521_10#join_rhs` WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.1, Lhs.0 1446369 ~12% {3} | JOIN WITH `PathResolution::ItemNode.getASuccessor/1#8f430f71_201#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Rhs.2 36945 ~0% {3} | JOIN WITH `PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6` ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Rhs.1 377232832 ~1% {4} | JOIN WITH `Name::Generated::Name.getText/0#dispred#107a5a39_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.0 370815806 ~5% {4} | JOIN WITH `TypeAlias::Generated::TypeAlias.getName/0#dispred#bf886045_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3 1490317 ~0% {4} | JOIN WITH cached_Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3 1490317 ~0% {4} | JOIN WITH `Type::AssociatedTypeTypeParameter.getTrait/0#dispred#41eb3020` ON FIRST 1 OUTPUT Lhs.2, Rhs.1, Lhs.1, Lhs.3 36413 ~1% {4} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e ON FIRST 2 OUTPUT Lhs.1, Lhs.3, Lhs.2, Lhs.0 36413 ~1% {3} | JOIN WITH `PathResolution::ImplOrTraitItemNode.getAssocItem/1#f77bb9ed` ON FIRST 2 OUTPUT Rhs.2, Lhs.2, Lhs.3 36413 ~0% {3} | JOIN WITH cached_Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 36413 ~0% {3} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.2, Lhs.0, Lhs.1 54979 ~3% {3} r5 = r1 UNION r2 UNION r3 UNION r4 return r5 ``` After ``` Evaluated relational algebra for predicate TypeMention::NonAliasPathTypeMention.getTypeMentionForTypeParameter/1#f0c507c8@a37ac19m with tuple counts: 12496 ~2% {3} r1 = SCAN `TypeMention::NonAliasPathTypeMention.getAnAssocTypeArgument/1#c61d1deb` OUTPUT In.2, In.0, In.1 12421 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.0 12421 ~0% {3} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2 12421 ~0% {3} | JOIN WITH Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 12421 ~0% {3} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Lhs.2 1 ~0% {2} r2 = SCAN `Stdlib::FnOnceTrait.getTypeParam/0#dispred#93f20bbc` OUTPUT In.1, In.0 1 ~0% {2} | JOIN WITH Type::TTypeParamTypeParameter#868c69a5 ON FIRST 1 OUTPUT Rhs.1, Lhs.1 1 ~0% {2} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0 3216 ~0% {2} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 3216 ~0% {3} | JOIN WITH `Path::Generated::Path.getSegment/0#dispred#1c7ef50f` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 3201 ~0% {3} | JOIN WITH `PathSegment::Generated::PathSegment.getParenthesizedArgList/0#dispred#cd573956` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 3201 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.0 1 ~0% {2} r3 = SCAN `Stdlib::FnOnceTrait.getOutputType/0#0d2e9ef1` OUTPUT In.1, In.0 1 ~0% {2} | JOIN WITH Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1 1 ~0% {2} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.1, Lhs.0 3216 ~3% {2} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 3216 ~0% {3} | JOIN WITH `Path::Generated::Path.getSegment/0#dispred#1c7ef50f` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0 2958 ~0% {3} | JOIN WITH `PathSegment::Generated::PathSegment.getRetType/0#dispred#9d400241` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 2958 ~0% {3} | JOIN WITH `RetTypeRepr::Generated::RetTypeRepr.getTypeRepr/0#dispred#fd85a980` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 2944 ~0% {3} | JOIN WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.0 54186 ~3% {2} r4 = JOIN `TypeAlias::Generated::TypeAlias.getTypeRepr/0#dispred#5fd7e521_10#join_rhs` WITH TypeMention::TypeMention#3ab935d1 ON FIRST 1 OUTPUT Lhs.1, Lhs.0 1446369 ~12% {3} | JOIN WITH `PathResolution::ItemNode.getASuccessor/1#8f430f71_201#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Rhs.2 36945 ~2% {3} | JOIN WITH `PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 36398 ~3% {3} | JOIN WITH TypeMention::NonAliasPathTypeMention#9123dc7e ON FIRST 1 OUTPUT Lhs.0, Lhs.2, Lhs.1 36413 ~1% {3} | JOIN WITH `TypeMention::NonAliasPathTypeMention.getResolvedAlias/1#c48b878e` ON FIRST 2 OUTPUT Rhs.2, Lhs.2, Lhs.0 36413 ~0% {3} | JOIN WITH Type::TAssociatedTypeTypeParameter#14a276f6 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 36413 ~0% {3} | JOIN WITH Type::TypeParameter#f85657da ON FIRST 1 OUTPUT Lhs.2, Lhs.0, Lhs.1 54979 ~3% {3} r5 = r1 UNION r2 UNION r3 UNION r4 return r5 ``` --- rust/ql/lib/codeql/rust/internal/TypeMention.qll | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index c4185efc91f..d9ff8ff974e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -207,6 +207,11 @@ class NonAliasPathTypeMention extends PathTypeMention { ) } + pragma[nomagic] + private TypeAlias getResolvedAlias(string name) { + result = resolved.(TraitItemNode).getAssocItem(name) + } + /** Gets the type mention in this path for the type parameter `tp`, if any. */ pragma[nomagic] private TypeMention getTypeMentionForTypeParameter(TypeParameter tp) { @@ -228,16 +233,11 @@ class NonAliasPathTypeMention extends PathTypeMention { // } // ``` // the rhs. of the type alias is a type argument to the trait. - exists(ImplItemNode impl, AssociatedTypeTypeParameter param, TypeAlias alias, string name | + exists(ImplItemNode impl, TypeAlias alias, string name | this = impl.getTraitPath() and - param.getTrait() = resolved and - name = param.getTypeAlias().getName().getText() and alias = impl.getASuccessor(pragma[only_bind_into](name)) and result = alias.getTypeRepr() and - tp = - TAssociatedTypeTypeParameter(resolved - .(TraitItemNode) - .getAssocItem(pragma[only_bind_into](name))) + tp = TAssociatedTypeTypeParameter(this.getResolvedAlias(pragma[only_bind_into](name))) ) or // Handle the special syntactic sugar for function traits. For now we only From acfca601bc4653b5847e4563c0aedb10430b1f5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 03:08:48 +0000 Subject: [PATCH 757/965] Bump golang.org/x/tools 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.38.0 to 0.39.0 - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.38.0...v0.39.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-version: 0.39.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 4 ++-- go/extractor/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index b73963c45cf..e581fdb652c 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -10,7 +10,7 @@ toolchain go1.25.0 // bazel mod tidy require ( golang.org/x/mod v0.30.0 - golang.org/x/tools v0.38.0 + golang.org/x/tools v0.39.0 ) -require golang.org/x/sync v0.17.0 // indirect +require golang.org/x/sync v0.18.0 // indirect diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 71824432ff5..6579b482848 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -2,7 +2,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= From 72b7dd89553052d58a1e4c062ed7e25db5c865a8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 23 Oct 2025 15:17:30 +0200 Subject: [PATCH 758/965] Rust: Add more type inference tests --- .../PathResolutionConsistency.expected | 12 +- .../test/library-tests/type-inference/main.rs | 29 + .../type-inference/type-inference.expected | 8331 +++++++++-------- 3 files changed, 4226 insertions(+), 4146 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index e1585e2e0d3..11ad8e8069d 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -9,9 +9,9 @@ multipleCallTargets | main.rs:590:9:590:18 | ...::m(...) | | main.rs:591:9:591:20 | ... .m() | | main.rs:592:9:592:24 | ...::m(...) | -| main.rs:2524:13:2524:31 | ...::from(...) | -| main.rs:2525:13:2525:31 | ...::from(...) | -| main.rs:2526:13:2526:31 | ...::from(...) | -| main.rs:2532:13:2532:31 | ...::from(...) | -| main.rs:2533:13:2533:31 | ...::from(...) | -| main.rs:2534:13:2534:31 | ...::from(...) | +| main.rs:2553:13:2553:31 | ...::from(...) | +| main.rs:2554:13:2554:31 | ...::from(...) | +| main.rs:2555:13:2555:31 | ...::from(...) | +| main.rs:2561:13:2561:31 | ...::from(...) | +| main.rs:2562:13:2562:31 | ...::from(...) | +| main.rs:2563:13:2563:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index d99d178ba8d..f1c56392849 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -758,6 +758,26 @@ mod function_trait_bounds { fn assoc(x: Self) -> A; } + impl MyTrait for S2 { + fn m1(self) -> T { + Default::default() // $ target=default + } + + fn assoc(x: Self) -> T { + Default::default() // $ target=default + } + } + + impl MyTrait for S1 { + fn m1(self) -> i32 { + 0 + } + + fn assoc(x: Self) -> i32 { + 0 + } + } + // Type parameter with bound occurs in the root of a parameter type. fn call_trait_m1 + Copy>(x: T2) -> T1 { @@ -863,6 +883,8 @@ mod function_trait_bounds { println!("{:?}", b); let b = call_trait_thing_m1_3(y3); // $ type=b:S2 target=call_trait_thing_m1_3 println!("{:?}", b); + let x = S1::m2(S1); // $ target=m2 $ type=x:i32 + let y: i32 = S2::m2(S2); // $ target=m2 } } @@ -1576,11 +1598,18 @@ mod implicit_self_borrow { fn foo(&self) -> &Self { self } + + fn bar(&self, x: &Self) -> &Self { + self + } } pub fn f() { let x = MyStruct(S); x.foo(); // $ target=foo + let x = MyStruct(S); + // `&&x` below is Deref coerced to `&x` (see https://doc.rust-lang.org/std/ops/trait.Deref.html#deref-coercion) + x.bar(&&x); // $ target=bar } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index d9b5e5782ab..327edad33ef 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2342,301 +2342,226 @@ inferType | main.rs:755:13:755:16 | self | | main.rs:748:5:759:5 | Self [trait MyTrait] | | main.rs:755:13:755:21 | self.m1() | | main.rs:748:19:748:19 | A | | main.rs:758:18:758:18 | x | | main.rs:748:5:759:5 | Self [trait MyTrait] | -| main.rs:763:50:763:50 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:763:63:766:5 | { ... } | | main.rs:763:22:763:23 | T1 | -| main.rs:764:9:764:9 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:764:9:764:14 | x.m1() | | main.rs:763:22:763:23 | T1 | -| main.rs:765:9:765:9 | x | | main.rs:763:26:763:47 | T2 | -| main.rs:765:9:765:14 | x.m1() | | main.rs:763:22:763:23 | T1 | -| main.rs:767:52:767:52 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:767:65:771:5 | { ... } | | main.rs:767:24:767:25 | T1 | -| main.rs:768:13:768:13 | y | | main.rs:767:24:767:25 | T1 | -| main.rs:768:17:768:25 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | -| main.rs:768:24:768:24 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:769:9:769:9 | y | | main.rs:767:24:767:25 | T1 | -| main.rs:770:9:770:17 | ...::m1(...) | | main.rs:767:24:767:25 | T1 | -| main.rs:770:16:770:16 | x | | main.rs:767:28:767:49 | T2 | -| main.rs:772:52:772:52 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:772:65:776:5 | { ... } | | main.rs:772:24:772:25 | T1 | -| main.rs:773:13:773:13 | y | | main.rs:772:24:772:25 | T1 | -| main.rs:773:17:773:30 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | -| main.rs:773:29:773:29 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:774:9:774:9 | y | | main.rs:772:24:772:25 | T1 | -| main.rs:775:9:775:22 | ...::m1(...) | | main.rs:772:24:772:25 | T1 | -| main.rs:775:21:775:21 | x | | main.rs:772:28:772:49 | T2 | -| main.rs:777:55:777:55 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:777:68:781:5 | { ... } | | main.rs:777:27:777:28 | T1 | -| main.rs:778:13:778:13 | y | | main.rs:777:27:777:28 | T1 | -| main.rs:778:17:778:28 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | -| main.rs:778:27:778:27 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:779:9:779:9 | y | | main.rs:777:27:777:28 | T1 | -| main.rs:780:9:780:20 | ...::assoc(...) | | main.rs:777:27:777:28 | T1 | -| main.rs:780:19:780:19 | x | | main.rs:777:31:777:52 | T2 | -| main.rs:782:55:782:55 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:782:68:786:5 | { ... } | | main.rs:782:27:782:28 | T1 | -| main.rs:783:13:783:13 | y | | main.rs:782:27:782:28 | T1 | -| main.rs:783:17:783:33 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | -| main.rs:783:32:783:32 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:784:9:784:9 | y | | main.rs:782:27:782:28 | T1 | -| main.rs:785:9:785:25 | ...::assoc(...) | | main.rs:782:27:782:28 | T1 | -| main.rs:785:24:785:24 | x | | main.rs:782:31:782:52 | T2 | -| main.rs:790:49:790:49 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:790:49:790:49 | x | T | main.rs:790:32:790:46 | T2 | -| main.rs:790:71:792:5 | { ... } | | main.rs:790:28:790:29 | T1 | -| main.rs:791:9:791:9 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:791:9:791:9 | x | T | main.rs:790:32:790:46 | T2 | -| main.rs:791:9:791:11 | x.a | | main.rs:790:32:790:46 | T2 | -| main.rs:791:9:791:16 | ... .m1() | | main.rs:790:28:790:29 | T1 | -| main.rs:793:51:793:51 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:793:51:793:51 | x | T | main.rs:793:34:793:48 | T2 | -| main.rs:793:73:795:5 | { ... } | | main.rs:793:30:793:31 | T1 | -| main.rs:794:9:794:19 | ...::m1(...) | | main.rs:793:30:793:31 | T1 | -| main.rs:794:16:794:16 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:794:16:794:16 | x | T | main.rs:793:34:793:48 | T2 | -| main.rs:794:16:794:18 | x.a | | main.rs:793:34:793:48 | T2 | -| main.rs:796:51:796:51 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:796:51:796:51 | x | T | main.rs:796:34:796:48 | T2 | -| main.rs:796:73:798:5 | { ... } | | main.rs:796:30:796:31 | T1 | -| main.rs:797:9:797:24 | ...::m1(...) | | main.rs:796:30:796:31 | T1 | -| main.rs:797:21:797:21 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:797:21:797:21 | x | T | main.rs:796:34:796:48 | T2 | -| main.rs:797:21:797:23 | x.a | | main.rs:796:34:796:48 | T2 | -| main.rs:801:15:801:18 | SelfParam | | main.rs:738:5:741:5 | MyThing | -| main.rs:801:15:801:18 | SelfParam | T | main.rs:800:10:800:10 | T | -| main.rs:801:26:803:9 | { ... } | | main.rs:800:10:800:10 | T | -| main.rs:802:13:802:16 | self | | main.rs:738:5:741:5 | MyThing | -| main.rs:802:13:802:16 | self | T | main.rs:800:10:800:10 | T | -| main.rs:802:13:802:18 | self.a | | main.rs:800:10:800:10 | T | -| main.rs:805:18:805:18 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:805:18:805:18 | x | T | main.rs:800:10:800:10 | T | -| main.rs:805:32:807:9 | { ... } | | main.rs:800:10:800:10 | T | -| main.rs:806:13:806:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:806:13:806:13 | x | T | main.rs:800:10:800:10 | T | -| main.rs:806:13:806:15 | x.a | | main.rs:800:10:800:10 | T | -| main.rs:810:16:866:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:811:13:811:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:811:13:811:13 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:811:17:811:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:811:17:811:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:811:30:811:31 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:812:13:812:13 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:812:13:812:13 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:812:17:812:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:812:17:812:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:812:30:812:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:814:18:814:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:814:18:814:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:814:18:814:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:814:18:814:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:814:18:814:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:814:18:814:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:814:26:814:26 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:814:26:814:26 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:814:26:814:31 | x.m1() | | main.rs:743:5:744:14 | S1 | -| main.rs:815:18:815:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:815:18:815:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:815:18:815:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:815:18:815:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:815:18:815:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:815:18:815:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:815:26:815:26 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:815:26:815:26 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:815:26:815:31 | y.m1() | | main.rs:745:5:746:14 | S2 | -| main.rs:817:13:817:13 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:817:13:817:13 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:817:17:817:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:817:17:817:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:817:30:817:31 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:818:13:818:13 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:818:13:818:13 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:818:17:818:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:818:17:818:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:818:30:818:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:820:18:820:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:820:18:820:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:820:18:820:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:820:18:820:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:18:820:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:820:18:820:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:820:26:820:26 | x | | main.rs:738:5:741:5 | MyThing | -| main.rs:820:26:820:26 | x | T | main.rs:743:5:744:14 | S1 | -| main.rs:820:26:820:31 | x.m2() | | main.rs:743:5:744:14 | S1 | -| main.rs:821:18:821:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:821:18:821:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:821:18:821:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:821:18:821:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:18:821:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:821:18:821:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:821:26:821:26 | y | | main.rs:738:5:741:5 | MyThing | -| main.rs:821:26:821:26 | y | T | main.rs:745:5:746:14 | S2 | -| main.rs:821:26:821:31 | y.m2() | | main.rs:745:5:746:14 | S2 | -| main.rs:823:13:823:14 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:823:13:823:14 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:823:18:823:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:823:18:823:34 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:823:31:823:32 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:824:13:824:14 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:824:13:824:14 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:824:18:824:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:824:18:824:34 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:824:31:824:32 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:826:13:826:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:826:17:826:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:826:31:826:32 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:826:31:826:32 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:827:18:827:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:827:18:827:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:827:18:827:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:827:18:827:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:827:18:827:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:827:18:827:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:827:26:827:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:828:13:828:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:828:17:828:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:828:33:828:34 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:828:33:828:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:829:18:829:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:829:18:829:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:829:18:829:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:829:18:829:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:829:18:829:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:829:18:829:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:829:26:829:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:830:13:830:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:830:17:830:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:830:33:830:34 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:830:33:830:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:831:18:831:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:831:18:831:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:831:18:831:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:831:18:831:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:831:18:831:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:831:18:831:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:831:26:831:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:832:13:832:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:832:17:832:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:832:31:832:32 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:832:31:832:32 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:833:18:833:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:833:18:833:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:833:18:833:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:833:18:833:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:833:18:833:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:833:18:833:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:833:26:833:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:834:13:834:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:834:17:834:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:834:33:834:34 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:834:33:834:34 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:762:15:762:18 | SelfParam | | main.rs:745:5:746:14 | S2 | +| main.rs:762:26:764:9 | { ... } | | main.rs:761:10:761:19 | T | +| main.rs:763:13:763:30 | ...::default(...) | | main.rs:761:10:761:19 | T | +| main.rs:766:18:766:18 | x | | main.rs:745:5:746:14 | S2 | +| main.rs:766:32:768:9 | { ... } | | main.rs:761:10:761:19 | T | +| main.rs:767:13:767:30 | ...::default(...) | | main.rs:761:10:761:19 | T | +| main.rs:772:15:772:18 | SelfParam | | main.rs:743:5:744:14 | S1 | +| main.rs:772:28:774:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:773:13:773:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:776:18:776:18 | x | | main.rs:743:5:744:14 | S1 | +| main.rs:776:34:778:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:777:13:777:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:783:50:783:50 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:783:63:786:5 | { ... } | | main.rs:783:22:783:23 | T1 | +| main.rs:784:9:784:9 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:784:9:784:14 | x.m1() | | main.rs:783:22:783:23 | T1 | +| main.rs:785:9:785:9 | x | | main.rs:783:26:783:47 | T2 | +| main.rs:785:9:785:14 | x.m1() | | main.rs:783:22:783:23 | T1 | +| main.rs:787:52:787:52 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:787:65:791:5 | { ... } | | main.rs:787:24:787:25 | T1 | +| main.rs:788:13:788:13 | y | | main.rs:787:24:787:25 | T1 | +| main.rs:788:17:788:25 | ...::m1(...) | | main.rs:787:24:787:25 | T1 | +| main.rs:788:24:788:24 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:789:9:789:9 | y | | main.rs:787:24:787:25 | T1 | +| main.rs:790:9:790:17 | ...::m1(...) | | main.rs:787:24:787:25 | T1 | +| main.rs:790:16:790:16 | x | | main.rs:787:28:787:49 | T2 | +| main.rs:792:52:792:52 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:792:65:796:5 | { ... } | | main.rs:792:24:792:25 | T1 | +| main.rs:793:13:793:13 | y | | main.rs:792:24:792:25 | T1 | +| main.rs:793:17:793:30 | ...::m1(...) | | main.rs:792:24:792:25 | T1 | +| main.rs:793:29:793:29 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:794:9:794:9 | y | | main.rs:792:24:792:25 | T1 | +| main.rs:795:9:795:22 | ...::m1(...) | | main.rs:792:24:792:25 | T1 | +| main.rs:795:21:795:21 | x | | main.rs:792:28:792:49 | T2 | +| main.rs:797:55:797:55 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:797:68:801:5 | { ... } | | main.rs:797:27:797:28 | T1 | +| main.rs:798:13:798:13 | y | | main.rs:797:27:797:28 | T1 | +| main.rs:798:17:798:28 | ...::assoc(...) | | main.rs:797:27:797:28 | T1 | +| main.rs:798:27:798:27 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:799:9:799:9 | y | | main.rs:797:27:797:28 | T1 | +| main.rs:800:9:800:20 | ...::assoc(...) | | main.rs:797:27:797:28 | T1 | +| main.rs:800:19:800:19 | x | | main.rs:797:31:797:52 | T2 | +| main.rs:802:55:802:55 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:802:68:806:5 | { ... } | | main.rs:802:27:802:28 | T1 | +| main.rs:803:13:803:13 | y | | main.rs:802:27:802:28 | T1 | +| main.rs:803:17:803:33 | ...::assoc(...) | | main.rs:802:27:802:28 | T1 | +| main.rs:803:32:803:32 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:804:9:804:9 | y | | main.rs:802:27:802:28 | T1 | +| main.rs:805:9:805:25 | ...::assoc(...) | | main.rs:802:27:802:28 | T1 | +| main.rs:805:24:805:24 | x | | main.rs:802:31:802:52 | T2 | +| main.rs:810:49:810:49 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:810:49:810:49 | x | T | main.rs:810:32:810:46 | T2 | +| main.rs:810:71:812:5 | { ... } | | main.rs:810:28:810:29 | T1 | +| main.rs:811:9:811:9 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:811:9:811:9 | x | T | main.rs:810:32:810:46 | T2 | +| main.rs:811:9:811:11 | x.a | | main.rs:810:32:810:46 | T2 | +| main.rs:811:9:811:16 | ... .m1() | | main.rs:810:28:810:29 | T1 | +| main.rs:813:51:813:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:813:51:813:51 | x | T | main.rs:813:34:813:48 | T2 | +| main.rs:813:73:815:5 | { ... } | | main.rs:813:30:813:31 | T1 | +| main.rs:814:9:814:19 | ...::m1(...) | | main.rs:813:30:813:31 | T1 | +| main.rs:814:16:814:16 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:814:16:814:16 | x | T | main.rs:813:34:813:48 | T2 | +| main.rs:814:16:814:18 | x.a | | main.rs:813:34:813:48 | T2 | +| main.rs:816:51:816:51 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:816:51:816:51 | x | T | main.rs:816:34:816:48 | T2 | +| main.rs:816:73:818:5 | { ... } | | main.rs:816:30:816:31 | T1 | +| main.rs:817:9:817:24 | ...::m1(...) | | main.rs:816:30:816:31 | T1 | +| main.rs:817:21:817:21 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:817:21:817:21 | x | T | main.rs:816:34:816:48 | T2 | +| main.rs:817:21:817:23 | x.a | | main.rs:816:34:816:48 | T2 | +| main.rs:821:15:821:18 | SelfParam | | main.rs:738:5:741:5 | MyThing | +| main.rs:821:15:821:18 | SelfParam | T | main.rs:820:10:820:10 | T | +| main.rs:821:26:823:9 | { ... } | | main.rs:820:10:820:10 | T | +| main.rs:822:13:822:16 | self | | main.rs:738:5:741:5 | MyThing | +| main.rs:822:13:822:16 | self | T | main.rs:820:10:820:10 | T | +| main.rs:822:13:822:18 | self.a | | main.rs:820:10:820:10 | T | +| main.rs:825:18:825:18 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:825:18:825:18 | x | T | main.rs:820:10:820:10 | T | +| main.rs:825:32:827:9 | { ... } | | main.rs:820:10:820:10 | T | +| main.rs:826:13:826:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:826:13:826:13 | x | T | main.rs:820:10:820:10 | T | +| main.rs:826:13:826:15 | x.a | | main.rs:820:10:820:10 | T | +| main.rs:830:16:888:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:831:13:831:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:831:13:831:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:831:17:831:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:831:17:831:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:831:30:831:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:832:13:832:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:832:13:832:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:832:17:832:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:832:17:832:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:832:30:832:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:834:18:834:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:834:18:834:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:834:18:834:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:834:18:834:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:834:18:834:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:834:18:834:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:834:26:834:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:834:26:834:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:834:26:834:31 | x.m1() | | main.rs:743:5:744:14 | S1 | | main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:835:18:835:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:835:18:835:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:835:18:835:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:835:18:835:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:835:26:835:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:836:13:836:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:836:17:836:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:836:33:836:34 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:836:33:836:34 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:837:18:837:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:837:18:837:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:837:18:837:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:837:18:837:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:837:18:837:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:837:18:837:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:837:26:837:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:838:13:838:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:838:17:838:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:838:36:838:37 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:838:36:838:37 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:839:18:839:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:839:18:839:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:839:18:839:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:839:18:839:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:839:18:839:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:839:18:839:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:839:26:839:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:840:13:840:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:840:17:840:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:840:36:840:37 | x2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:840:36:840:37 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:835:18:835:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:835:18:835:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:18:835:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:18:835:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:835:26:835:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:835:26:835:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:835:26:835:31 | y.m1() | | main.rs:745:5:746:14 | S2 | +| main.rs:837:13:837:13 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:837:13:837:13 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:837:17:837:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:837:17:837:33 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:837:30:837:31 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:838:13:838:13 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:838:13:838:13 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:838:17:838:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:838:17:838:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:838:30:838:31 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:840:18:840:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:840:18:840:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:840:18:840:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:840:18:840:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:840:18:840:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:840:18:840:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:840:26:840:26 | x | | main.rs:738:5:741:5 | MyThing | +| main.rs:840:26:840:26 | x | T | main.rs:743:5:744:14 | S1 | +| main.rs:840:26:840:31 | x.m2() | | main.rs:743:5:744:14 | S1 | | main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:841:18:841:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:841:18:841:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:841:18:841:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:841:18:841:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:841:26:841:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:842:13:842:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:842:17:842:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:842:36:842:37 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:842:36:842:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:843:18:843:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:843:18:843:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:843:18:843:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:843:18:843:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:843:18:843:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:843:18:843:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:843:26:843:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:844:13:844:13 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:844:17:844:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:844:36:844:37 | y2 | | main.rs:738:5:741:5 | MyThing | -| main.rs:844:36:844:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:845:18:845:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:845:18:845:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:845:18:845:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:845:18:845:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:845:18:845:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:845:18:845:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:845:26:845:26 | a | | main.rs:745:5:746:14 | S2 | -| main.rs:847:13:847:14 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:847:13:847:14 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:847:13:847:14 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:847:18:849:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:847:18:849:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | -| main.rs:847:18:849:9 | MyThing {...} | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:848:16:848:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:848:16:848:32 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | -| main.rs:848:29:848:30 | S1 | | main.rs:743:5:744:14 | S1 | -| main.rs:850:13:850:14 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:850:13:850:14 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:850:13:850:14 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:850:18:852:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:850:18:852:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | -| main.rs:850:18:852:9 | MyThing {...} | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:851:16:851:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | -| main.rs:851:16:851:32 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | -| main.rs:851:29:851:30 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:854:13:854:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:854:17:854:39 | call_trait_thing_m1(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:854:37:854:38 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:854:37:854:38 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:854:37:854:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:841:18:841:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:841:18:841:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:18:841:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:18:841:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:841:26:841:26 | y | | main.rs:738:5:741:5 | MyThing | +| main.rs:841:26:841:26 | y | T | main.rs:745:5:746:14 | S2 | +| main.rs:841:26:841:31 | y.m2() | | main.rs:745:5:746:14 | S2 | +| main.rs:843:13:843:14 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:843:13:843:14 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:843:18:843:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:843:18:843:34 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:843:31:843:32 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:844:13:844:14 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:844:13:844:14 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:844:18:844:34 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:844:18:844:34 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:844:31:844:32 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:846:13:846:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:846:17:846:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:846:31:846:32 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:846:31:846:32 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:847:18:847:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:847:18:847:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:847:18:847:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:847:18:847:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:847:18:847:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:847:18:847:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:847:26:847:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:848:13:848:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:848:17:848:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:848:33:848:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:848:33:848:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:849:18:849:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:849:18:849:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:849:18:849:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:849:18:849:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:849:18:849:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:849:18:849:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:849:26:849:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:850:13:850:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:850:17:850:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:850:33:850:34 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:850:33:850:34 | x2 | T | main.rs:743:5:744:14 | S1 | +| main.rs:851:18:851:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:851:18:851:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:851:18:851:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:851:18:851:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:851:18:851:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:851:18:851:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:851:26:851:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:852:13:852:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:852:17:852:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:852:31:852:32 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:852:31:852:32 | y2 | T | main.rs:745:5:746:14 | S2 | +| main.rs:853:18:853:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:853:18:853:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:853:18:853:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:853:18:853:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:853:18:853:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:853:18:853:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:853:26:853:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:854:13:854:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:854:17:854:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:854:33:854:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:854:33:854:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:855:18:855:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:855:18:855:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:855:18:855:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:855:18:855:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:855:26:855:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:856:13:856:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:856:17:856:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:856:39:856:40 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:856:39:856:40 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:856:39:856:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:855:26:855:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:856:13:856:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:856:17:856:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:856:33:856:34 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:856:33:856:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:857:18:857:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:857:18:857:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:857:18:857:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:857:18:857:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:857:26:857:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:857:26:857:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:858:17:858:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | -| main.rs:858:39:858:40 | x3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:858:39:858:40 | x3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:858:39:858:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:858:17:858:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:858:36:858:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:858:36:858:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:859:18:859:26 | ...::_print(...) | | file://:0:0:0:0 | () | @@ -2644,3894 +2569,4020 @@ inferType | main.rs:859:18:859:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:859:18:859:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | -| main.rs:860:13:860:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:860:17:860:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:860:37:860:38 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:860:37:860:38 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:860:37:860:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:860:13:860:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:860:17:860:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:860:36:860:37 | x2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:860:36:860:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:861:18:861:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:861:18:861:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:861:18:861:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:861:18:861:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:861:26:861:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:862:13:862:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:862:17:862:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:862:39:862:40 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:862:39:862:40 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:862:39:862:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:861:26:861:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:862:13:862:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:862:17:862:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:862:36:862:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:862:36:862:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:863:18:863:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:863:18:863:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:863:18:863:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:863:18:863:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:863:26:863:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:864:13:864:13 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:864:17:864:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | -| main.rs:864:39:864:40 | y3 | | main.rs:738:5:741:5 | MyThing | -| main.rs:864:39:864:40 | y3 | T | main.rs:738:5:741:5 | MyThing | -| main.rs:864:39:864:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:863:26:863:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:864:13:864:13 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:864:17:864:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:864:36:864:37 | y2 | | main.rs:738:5:741:5 | MyThing | +| main.rs:864:36:864:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:865:18:865:26 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:865:18:865:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:865:18:865:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:865:18:865:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:865:26:865:26 | b | | main.rs:745:5:746:14 | S2 | -| main.rs:876:19:876:22 | SelfParam | | main.rs:870:5:873:5 | Wrapper | -| main.rs:876:19:876:22 | SelfParam | A | main.rs:875:10:875:10 | A | -| main.rs:876:30:878:9 | { ... } | | main.rs:875:10:875:10 | A | -| main.rs:877:13:877:16 | self | | main.rs:870:5:873:5 | Wrapper | -| main.rs:877:13:877:16 | self | A | main.rs:875:10:875:10 | A | -| main.rs:877:13:877:22 | self.field | | main.rs:875:10:875:10 | A | -| main.rs:885:15:885:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:887:15:887:18 | SelfParam | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:891:9:894:9 | { ... } | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:892:13:892:16 | self | | main.rs:881:5:895:5 | Self [trait MyTrait] | -| main.rs:892:13:892:21 | self.m1() | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:893:13:893:43 | ...::default(...) | | main.rs:882:9:882:28 | AssociatedType | -| main.rs:901:19:901:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:901:19:901:23 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:901:26:901:26 | a | | main.rs:901:16:901:16 | A | -| main.rs:903:22:903:26 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:903:22:903:26 | SelfParam | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:903:29:903:29 | a | | main.rs:903:19:903:19 | A | -| main.rs:903:35:903:35 | b | | main.rs:903:19:903:19 | A | -| main.rs:903:75:906:9 | { ... } | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:904:13:904:16 | self | | file://:0:0:0:0 | & | -| main.rs:904:13:904:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:904:13:904:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:904:22:904:22 | a | | main.rs:903:19:903:19 | A | -| main.rs:905:13:905:16 | self | | file://:0:0:0:0 | & | -| main.rs:905:13:905:16 | self | &T | main.rs:897:5:907:5 | Self [trait MyTraitAssoc2] | -| main.rs:905:13:905:23 | self.put(...) | | main.rs:898:9:898:52 | GenericAssociatedType | -| main.rs:905:22:905:22 | b | | main.rs:903:19:903:19 | A | -| main.rs:914:21:914:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:914:21:914:25 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:916:20:916:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:916:20:916:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:918:20:918:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:918:20:918:24 | SelfParam | &T | main.rs:909:5:919:5 | Self [trait TraitMultipleAssoc] | -| main.rs:934:15:934:18 | SelfParam | | main.rs:921:5:922:13 | S | -| main.rs:934:45:936:9 | { ... } | | main.rs:927:5:928:14 | AT | -| main.rs:935:13:935:14 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:944:19:944:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:944:19:944:23 | SelfParam | &T | main.rs:921:5:922:13 | S | -| main.rs:944:26:944:26 | a | | main.rs:944:16:944:16 | A | -| main.rs:944:46:946:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:944:46:946:9 | { ... } | A | main.rs:944:16:944:16 | A | -| main.rs:945:13:945:32 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:945:13:945:32 | Wrapper {...} | A | main.rs:944:16:944:16 | A | -| main.rs:945:30:945:30 | a | | main.rs:944:16:944:16 | A | -| main.rs:953:15:953:18 | SelfParam | | main.rs:924:5:925:14 | S2 | -| main.rs:953:45:955:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:953:45:955:9 | { ... } | A | main.rs:924:5:925:14 | S2 | -| main.rs:954:13:954:35 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:954:13:954:35 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | -| main.rs:954:30:954:33 | self | | main.rs:924:5:925:14 | S2 | -| main.rs:960:30:962:9 | { ... } | | main.rs:870:5:873:5 | Wrapper | -| main.rs:960:30:962:9 | { ... } | A | main.rs:924:5:925:14 | S2 | -| main.rs:961:13:961:33 | Wrapper {...} | | main.rs:870:5:873:5 | Wrapper | -| main.rs:961:13:961:33 | Wrapper {...} | A | main.rs:924:5:925:14 | S2 | -| main.rs:961:30:961:31 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:967:22:967:26 | thing | | main.rs:967:10:967:19 | T | -| main.rs:968:9:968:13 | thing | | main.rs:967:10:967:19 | T | -| main.rs:975:21:975:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:975:21:975:25 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:975:34:977:9 | { ... } | | main.rs:927:5:928:14 | AT | -| main.rs:976:13:976:14 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:979:20:979:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:979:20:979:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:979:43:981:9 | { ... } | | main.rs:921:5:922:13 | S | -| main.rs:980:13:980:13 | S | | main.rs:921:5:922:13 | S | -| main.rs:983:20:983:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:983:20:983:24 | SelfParam | &T | main.rs:927:5:928:14 | AT | -| main.rs:983:43:985:9 | { ... } | | main.rs:924:5:925:14 | S2 | -| main.rs:984:13:984:14 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:988:16:1016:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:989:13:989:14 | x1 | | main.rs:921:5:922:13 | S | -| main.rs:989:18:989:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:991:18:991:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:991:18:991:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:991:18:991:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:991:18:991:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:991:18:991:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:991:18:991:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:991:26:991:27 | x1 | | main.rs:921:5:922:13 | S | -| main.rs:991:26:991:32 | x1.m1() | | main.rs:927:5:928:14 | AT | -| main.rs:993:13:993:14 | x2 | | main.rs:921:5:922:13 | S | -| main.rs:993:18:993:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:995:13:995:13 | y | | main.rs:927:5:928:14 | AT | -| main.rs:995:17:995:18 | x2 | | main.rs:921:5:922:13 | S | -| main.rs:995:17:995:23 | x2.m2() | | main.rs:927:5:928:14 | AT | -| main.rs:996:18:996:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:996:18:996:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:996:18:996:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:996:18:996:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:996:18:996:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:996:18:996:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:996:26:996:26 | y | | main.rs:927:5:928:14 | AT | -| main.rs:998:13:998:14 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:998:18:998:18 | S | | main.rs:921:5:922:13 | S | -| main.rs:1000:18:1000:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1000:18:1000:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1000:18:1000:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1000:18:1000:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1000:18:1000:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1000:18:1000:43 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1000:26:1000:27 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:1000:26:1000:34 | x3.put(...) | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1000:26:1000:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | -| main.rs:1000:26:1000:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1000:33:1000:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1003:18:1003:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1003:18:1003:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1003:18:1003:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1003:18:1003:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1003:18:1003:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1003:18:1003:49 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1003:26:1003:27 | x3 | | main.rs:921:5:922:13 | S | -| main.rs:1003:26:1003:40 | x3.putTwo(...) | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1003:26:1003:40 | x3.putTwo(...) | A | main.rs:941:36:941:50 | AssociatedParam | -| main.rs:1003:26:1003:49 | ... .unwrap() | | main.rs:941:36:941:50 | AssociatedParam | -| main.rs:1003:36:1003:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1003:39:1003:39 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1005:20:1005:20 | S | | main.rs:921:5:922:13 | S | -| main.rs:1006:18:1006:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1006:18:1006:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1006:18:1006:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1006:18:1006:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1006:18:1006:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1006:18:1006:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1008:13:1008:14 | x5 | | main.rs:924:5:925:14 | S2 | -| main.rs:1008:18:1008:19 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:1009:18:1009:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1009:18:1009:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1009:18:1009:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1009:18:1009:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1009:18:1009:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1009:18:1009:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1009:26:1009:27 | x5 | | main.rs:924:5:925:14 | S2 | -| main.rs:1009:26:1009:32 | x5.m1() | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1009:26:1009:32 | x5.m1() | A | main.rs:924:5:925:14 | S2 | -| main.rs:1010:13:1010:14 | x6 | | main.rs:924:5:925:14 | S2 | -| main.rs:1010:18:1010:19 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:1011:18:1011:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1011:18:1011:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1011:18:1011:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1011:18:1011:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1011:18:1011:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1011:18:1011:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1011:26:1011:27 | x6 | | main.rs:924:5:925:14 | S2 | -| main.rs:1011:26:1011:32 | x6.m2() | | main.rs:870:5:873:5 | Wrapper | -| main.rs:1011:26:1011:32 | x6.m2() | A | main.rs:924:5:925:14 | S2 | -| main.rs:1013:13:1013:22 | assoc_zero | | main.rs:927:5:928:14 | AT | -| main.rs:1013:26:1013:27 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1013:26:1013:38 | AT.get_zero() | | main.rs:927:5:928:14 | AT | -| main.rs:1014:13:1014:21 | assoc_one | | main.rs:921:5:922:13 | S | -| main.rs:1014:25:1014:26 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1014:25:1014:36 | AT.get_one() | | main.rs:921:5:922:13 | S | -| main.rs:1015:13:1015:21 | assoc_two | | main.rs:924:5:925:14 | S2 | -| main.rs:1015:25:1015:26 | AT | | main.rs:927:5:928:14 | AT | -| main.rs:1015:25:1015:36 | AT.get_two() | | main.rs:924:5:925:14 | S2 | -| main.rs:1023:19:1023:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1023:19:1023:23 | SelfParam | &T | main.rs:1020:5:1024:5 | Self [trait Supertrait] | -| main.rs:1023:26:1023:32 | content | | main.rs:1021:9:1021:21 | Content | -| main.rs:1028:24:1028:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1028:24:1028:28 | SelfParam | &T | main.rs:1026:5:1029:5 | Self [trait Subtrait] | -| main.rs:1037:23:1037:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1037:23:1037:27 | SelfParam | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1037:30:1037:31 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1037:49:1037:50 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1037:68:1040:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1038:13:1038:16 | self | | file://:0:0:0:0 | & | -| main.rs:1038:13:1038:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1038:13:1038:27 | self.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1038:25:1038:26 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1039:13:1039:16 | self | | file://:0:0:0:0 | & | -| main.rs:1039:13:1039:16 | self | &T | main.rs:1031:5:1041:5 | Self [trait Subtrait2] | -| main.rs:1039:13:1039:27 | self.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1039:25:1039:26 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1047:19:1047:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1047:19:1047:23 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1047:19:1047:23 | SelfParam | &T.T | main.rs:1045:10:1045:10 | T | -| main.rs:1047:26:1047:33 | _content | | main.rs:1045:10:1045:10 | T | -| main.rs:1047:51:1049:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1048:22:1048:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | -| main.rs:1048:22:1048:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1048:22:1048:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1048:22:1048:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1048:22:1048:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1048:22:1048:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1054:24:1054:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1054:24:1054:28 | SelfParam | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1054:24:1054:28 | SelfParam | &T.T | main.rs:1052:10:1052:17 | T | -| main.rs:1054:48:1056:9 | { ... } | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:19 | (...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:13:1055:19 | (...) | T | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:21 | ... .0 | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:13:1055:29 | ... .clone() | | main.rs:1052:10:1052:17 | T | -| main.rs:1055:14:1055:18 | * ... | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:14:1055:18 | * ... | T | main.rs:1052:10:1052:17 | T | -| main.rs:1055:15:1055:18 | self | | file://:0:0:0:0 | & | -| main.rs:1055:15:1055:18 | self | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1055:15:1055:18 | self | &T.T | main.rs:1052:10:1052:17 | T | -| main.rs:1059:33:1059:36 | item | | file://:0:0:0:0 | & | -| main.rs:1059:33:1059:36 | item | &T | main.rs:1059:20:1059:30 | T | -| main.rs:1059:57:1061:5 | { ... } | | main.rs:1021:9:1021:21 | Content | -| main.rs:1060:9:1060:12 | item | | file://:0:0:0:0 | & | -| main.rs:1060:9:1060:12 | item | &T | main.rs:1059:20:1059:30 | T | -| main.rs:1060:9:1060:26 | item.get_content() | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:35:1063:38 | item | | file://:0:0:0:0 | & | -| main.rs:1063:35:1063:38 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1063:45:1063:46 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:61:1063:62 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:77:1063:78 | c3 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1063:93:1066:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1064:9:1064:12 | item | | file://:0:0:0:0 | & | -| main.rs:1064:9:1064:12 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1064:9:1064:23 | item.insert(...) | | file://:0:0:0:0 | () | -| main.rs:1064:21:1064:22 | c1 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1065:9:1065:12 | item | | file://:0:0:0:0 | & | -| main.rs:1065:9:1065:12 | item | &T | main.rs:1063:21:1063:32 | T | -| main.rs:1065:9:1065:31 | item.insert_two(...) | | file://:0:0:0:0 | () | -| main.rs:1065:25:1065:26 | c2 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1065:29:1065:30 | c3 | | main.rs:1021:9:1021:21 | Content | -| main.rs:1068:15:1074:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1069:13:1069:17 | item1 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1069:13:1069:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1069:21:1069:33 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1069:21:1069:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1069:28:1069:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1070:25:1070:29 | item1 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1070:25:1070:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| main.rs:1072:13:1072:17 | item2 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1072:13:1072:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1072:21:1072:32 | MyType(...) | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1072:21:1072:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| main.rs:1072:28:1072:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1073:37:1073:42 | &item2 | | file://:0:0:0:0 | & | -| main.rs:1073:37:1073:42 | &item2 | &T | main.rs:1043:5:1043:24 | MyType | -| main.rs:1073:37:1073:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | -| main.rs:1073:38:1073:42 | item2 | | main.rs:1043:5:1043:24 | MyType | -| main.rs:1073:38:1073:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| main.rs:1090:15:1090:18 | SelfParam | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1090:15:1090:18 | SelfParam | A | main.rs:1089:10:1089:10 | T | -| main.rs:1090:26:1095:9 | { ... } | | main.rs:1089:10:1089:10 | T | -| main.rs:1091:13:1094:13 | match self { ... } | | main.rs:1089:10:1089:10 | T | -| main.rs:1091:19:1091:22 | self | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1091:19:1091:22 | self | A | main.rs:1089:10:1089:10 | T | -| main.rs:1092:17:1092:29 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1092:17:1092:29 | ...::C1(...) | A | main.rs:1089:10:1089:10 | T | -| main.rs:1092:28:1092:28 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1092:34:1092:34 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1093:17:1093:32 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1093:17:1093:32 | ...::C2 {...} | A | main.rs:1089:10:1089:10 | T | -| main.rs:1093:30:1093:30 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1093:37:1093:37 | a | | main.rs:1089:10:1089:10 | T | -| main.rs:1098:16:1104:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1099:13:1099:13 | x | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1099:13:1099:13 | x | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1099:17:1099:30 | ...::C1(...) | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1099:17:1099:30 | ...::C1(...) | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1099:28:1099:29 | S1 | | main.rs:1084:5:1085:14 | S1 | -| main.rs:1100:13:1100:13 | y | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1100:13:1100:13 | y | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1100:17:1100:36 | ...::C2 {...} | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1100:17:1100:36 | ...::C2 {...} | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1100:33:1100:34 | S2 | | main.rs:1086:5:1087:14 | S2 | -| main.rs:1102:18:1102:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1102:18:1102:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1102:18:1102:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1102:18:1102:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1102:18:1102:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1102:18:1102:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1102:26:1102:26 | x | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1102:26:1102:26 | x | A | main.rs:1084:5:1085:14 | S1 | -| main.rs:1102:26:1102:31 | x.m1() | | main.rs:1084:5:1085:14 | S1 | -| main.rs:1103:18:1103:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1103:18:1103:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1103:18:1103:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1103:18:1103:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1103:18:1103:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1103:18:1103:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1103:26:1103:26 | y | | main.rs:1078:5:1082:5 | MyEnum | -| main.rs:1103:26:1103:26 | y | A | main.rs:1086:5:1087:14 | S2 | -| main.rs:1103:26:1103:31 | y.m1() | | main.rs:1086:5:1087:14 | S2 | -| main.rs:1125:15:1125:18 | SelfParam | | main.rs:1123:5:1126:5 | Self [trait MyTrait1] | -| main.rs:1130:15:1130:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1130:15:1130:19 | SelfParam | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1133:9:1139:9 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1134:13:1138:13 | if ... {...} else {...} | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1134:16:1134:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1134:16:1134:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1134:20:1134:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1134:22:1136:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1135:17:1135:20 | self | | file://:0:0:0:0 | & | -| main.rs:1135:17:1135:20 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1135:17:1135:25 | self.m1() | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1136:20:1138:13 | { ... } | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1137:17:1137:31 | ...::m1(...) | | main.rs:1128:20:1128:22 | Tr2 | -| main.rs:1137:26:1137:30 | * ... | | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1137:27:1137:30 | self | | file://:0:0:0:0 | & | -| main.rs:1137:27:1137:30 | self | &T | main.rs:1128:5:1140:5 | Self [trait MyTrait2] | -| main.rs:1144:15:1144:18 | SelfParam | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1147:9:1153:9 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1148:13:1152:13 | if ... {...} else {...} | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1148:16:1148:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1148:16:1148:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1148:20:1148:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1148:22:1150:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1149:17:1149:20 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1149:17:1149:25 | self.m2() | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1149:17:1149:25 | self.m2() | A | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1149:17:1149:27 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1150:20:1152:13 | { ... } | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:17:1151:31 | ...::m2(...) | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1151:17:1151:31 | ...::m2(...) | A | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:17:1151:33 | ... .a | | main.rs:1142:20:1142:22 | Tr3 | -| main.rs:1151:26:1151:30 | &self | | file://:0:0:0:0 | & | -| main.rs:1151:26:1151:30 | &self | &T | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1151:27:1151:30 | self | | main.rs:1142:5:1154:5 | Self [trait MyTrait3] | -| main.rs:1158:15:1158:18 | SelfParam | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1158:15:1158:18 | SelfParam | A | main.rs:1156:10:1156:10 | T | -| main.rs:1158:26:1160:9 | { ... } | | main.rs:1156:10:1156:10 | T | -| main.rs:1159:13:1159:16 | self | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1159:13:1159:16 | self | A | main.rs:1156:10:1156:10 | T | -| main.rs:1159:13:1159:18 | self.a | | main.rs:1156:10:1156:10 | T | -| main.rs:1167:15:1167:18 | SelfParam | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1167:15:1167:18 | SelfParam | A | main.rs:1165:10:1165:10 | T | -| main.rs:1167:35:1169:9 | { ... } | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1167:35:1169:9 | { ... } | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:13:1168:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1168:13:1168:33 | MyThing {...} | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:26:1168:29 | self | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1168:26:1168:29 | self | A | main.rs:1165:10:1165:10 | T | -| main.rs:1168:26:1168:31 | self.a | | main.rs:1165:10:1165:10 | T | -| main.rs:1176:44:1176:44 | x | | main.rs:1176:26:1176:41 | T2 | -| main.rs:1176:57:1178:5 | { ... } | | main.rs:1176:22:1176:23 | T1 | -| main.rs:1177:9:1177:9 | x | | main.rs:1176:26:1176:41 | T2 | -| main.rs:1177:9:1177:14 | x.m1() | | main.rs:1176:22:1176:23 | T1 | -| main.rs:1180:56:1180:56 | x | | main.rs:1180:39:1180:53 | T | -| main.rs:1180:62:1184:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1182:13:1182:13 | a | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1182:13:1182:13 | a | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1182:17:1182:17 | x | | main.rs:1180:39:1180:53 | T | -| main.rs:1182:17:1182:22 | x.m1() | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1182:17:1182:22 | x.m1() | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1183:18:1183:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1183:18:1183:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1183:18:1183:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1183:18:1183:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1183:18:1183:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1183:18:1183:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1183:26:1183:26 | a | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1183:26:1183:26 | a | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1186:16:1210:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1187:13:1187:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1187:13:1187:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1187:17:1187:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1187:17:1187:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1187:30:1187:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1188:13:1188:13 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1188:13:1188:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1188:17:1188:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1188:17:1188:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1188:30:1188:31 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1190:18:1190:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1190:18:1190:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1190:18:1190:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1190:18:1190:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1190:18:1190:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1190:18:1190:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1190:26:1190:26 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1190:26:1190:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1190:26:1190:31 | x.m1() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1191:18:1191:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1191:18:1191:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1191:18:1191:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1191:18:1191:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1191:18:1191:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1191:18:1191:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1191:26:1191:26 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1191:26:1191:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1191:26:1191:31 | y.m1() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1193:13:1193:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1193:13:1193:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1193:17:1193:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1193:17:1193:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1193:30:1193:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1194:13:1194:13 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1194:13:1194:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1194:17:1194:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1194:17:1194:33 | MyThing {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1194:30:1194:31 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1196:18:1196:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1196:18:1196:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1196:18:1196:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1196:18:1196:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1196:18:1196:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1196:18:1196:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1196:26:1196:26 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1196:26:1196:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1196:26:1196:31 | x.m2() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1197:18:1197:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1197:18:1197:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1197:18:1197:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1197:18:1197:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:18:1197:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1197:18:1197:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1197:26:1197:26 | y | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1197:26:1197:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1197:26:1197:31 | y.m2() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1199:13:1199:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1199:13:1199:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1199:17:1199:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1199:17:1199:34 | MyThing2 {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1199:31:1199:32 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1200:13:1200:13 | y | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1200:13:1200:13 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1200:17:1200:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1200:17:1200:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1200:31:1200:32 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1202:18:1202:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1202:18:1202:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1202:18:1202:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1202:18:1202:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1202:18:1202:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1202:18:1202:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1202:26:1202:26 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1202:26:1202:26 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1202:26:1202:31 | x.m3() | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1203:18:1203:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1203:18:1203:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1203:18:1203:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1203:18:1203:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1203:18:1203:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1203:18:1203:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1203:26:1203:26 | y | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1203:26:1203:26 | y | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1203:26:1203:31 | y.m3() | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1205:13:1205:13 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1205:13:1205:13 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1205:17:1205:33 | MyThing {...} | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1205:17:1205:33 | MyThing {...} | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1205:30:1205:31 | S1 | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:13:1206:13 | s | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:17:1206:32 | call_trait_m1(...) | | main.rs:1118:5:1119:14 | S1 | -| main.rs:1206:31:1206:31 | x | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1206:31:1206:31 | x | A | main.rs:1118:5:1119:14 | S1 | -| main.rs:1208:13:1208:13 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1208:13:1208:13 | x | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1208:17:1208:34 | MyThing2 {...} | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1208:17:1208:34 | MyThing2 {...} | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1208:31:1208:32 | S2 | | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:13:1209:13 | s | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1209:13:1209:13 | s | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:17:1209:32 | call_trait_m1(...) | | main.rs:1108:5:1111:5 | MyThing | -| main.rs:1209:17:1209:32 | call_trait_m1(...) | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1209:31:1209:31 | x | | main.rs:1113:5:1116:5 | MyThing2 | -| main.rs:1209:31:1209:31 | x | A | main.rs:1120:5:1121:14 | S2 | -| main.rs:1226:22:1226:22 | x | | file://:0:0:0:0 | & | -| main.rs:1226:22:1226:22 | x | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1226:35:1228:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1226:35:1228:5 | { ... } | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1227:9:1227:9 | x | | file://:0:0:0:0 | & | -| main.rs:1227:9:1227:9 | x | &T | main.rs:1226:11:1226:19 | T | -| main.rs:1231:17:1231:20 | SelfParam | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1231:29:1233:9 | { ... } | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1232:13:1232:14 | S2 | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1236:21:1236:21 | x | | main.rs:1236:13:1236:14 | T1 | -| main.rs:1239:5:1241:5 | { ... } | | main.rs:1236:17:1236:18 | T2 | -| main.rs:1240:9:1240:9 | x | | main.rs:1236:13:1236:14 | T1 | -| main.rs:1240:9:1240:16 | x.into() | | main.rs:1236:17:1236:18 | T2 | -| main.rs:1243:16:1259:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1244:13:1244:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1244:17:1244:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:18:1245:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1245:18:1245:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1245:18:1245:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1245:18:1245:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1245:18:1245:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1245:18:1245:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1245:26:1245:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:1245:26:1245:31 | id(...) | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:29:1245:30 | &x | | file://:0:0:0:0 | & | -| main.rs:1245:29:1245:30 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1245:30:1245:30 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1247:13:1247:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1247:17:1247:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:18:1248:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1248:18:1248:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1248:18:1248:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1248:18:1248:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1248:18:1248:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1248:18:1248:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1248:26:1248:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1248:26:1248:37 | id::<...>(...) | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:35:1248:36 | &x | | file://:0:0:0:0 | & | -| main.rs:1248:35:1248:36 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1248:36:1248:36 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:13:1250:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:13:1250:13 | x | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1250:17:1250:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1250:17:1250:18 | S1 | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:18:1252:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1252:18:1252:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1252:18:1252:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1252:18:1252:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:18:1252:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1252:18:1252:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1252:26:1252:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:1252:26:1252:44 | id::<...>(...) | &T | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:42:1252:43 | &x | | file://:0:0:0:0 | & | -| main.rs:1252:42:1252:43 | &x | &T | main.rs:1216:5:1217:14 | S1 | -| main.rs:1252:42:1252:43 | &x | &T | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1252:43:1252:43 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1252:43:1252:43 | x | | main.rs:1222:5:1222:25 | dyn Trait | -| main.rs:1254:13:1254:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1254:17:1254:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1255:9:1255:25 | into::<...>(...) | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1255:24:1255:24 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1257:13:1257:13 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1257:17:1257:18 | S1 | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1258:13:1258:13 | y | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1258:21:1258:27 | into(...) | | main.rs:1219:5:1220:14 | S2 | -| main.rs:1258:26:1258:26 | x | | main.rs:1216:5:1217:14 | S1 | -| main.rs:1272:22:1272:25 | SelfParam | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1272:22:1272:25 | SelfParam | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1272:22:1272:25 | SelfParam | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1272:35:1279:9 | { ... } | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1273:13:1278:13 | match self { ... } | | file://:0:0:0:0 | ! | -| main.rs:1273:13:1278:13 | match self { ... } | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1273:19:1273:22 | self | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1273:19:1273:22 | self | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1273:19:1273:22 | self | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1274:17:1274:38 | ...::PairNone(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1274:43:1274:82 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | -| main.rs:1274:50:1274:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1274:50:1274:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1274:50:1274:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1274:50:1274:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1274:50:1274:81 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1274:50:1274:81 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1275:17:1275:38 | ...::PairFst(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1275:37:1275:37 | _ | | main.rs:1271:10:1271:12 | Fst | -| main.rs:1275:43:1275:81 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1275:50:1275:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | -| main.rs:1275:50:1275:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | -| main.rs:1275:50:1275:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1275:50:1275:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1275:50:1275:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1275:50:1275:80 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1275:50:1275:80 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1276:17:1276:40 | ...::PairSnd(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1276:37:1276:39 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1276:45:1276:47 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Fst | main.rs:1271:10:1271:12 | Fst | -| main.rs:1277:17:1277:44 | ...::PairBoth(...) | Snd | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:38:1277:38 | _ | | main.rs:1271:10:1271:12 | Fst | -| main.rs:1277:41:1277:43 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1277:49:1277:51 | snd | | main.rs:1271:15:1271:17 | Snd | -| main.rs:1303:10:1303:10 | t | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1303:10:1303:10 | t | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1303:10:1303:10 | t | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1303:10:1303:10 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1303:10:1303:10 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1303:30:1306:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1304:13:1304:13 | x | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:17 | t | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:17 | t | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:17 | t | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:17 | t | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:17 | t | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1304:17:1304:29 | t.unwrapSnd() | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1304:17:1304:41 | ... .unwrapSnd() | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1305:18:1305:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1305:18:1305:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1305:18:1305:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1305:18:1305:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1305:18:1305:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1305:18:1305:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1305:26:1305:26 | x | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1320:22:1320:25 | SelfParam | | main.rs:1318:5:1321:5 | Self [trait TraitWithAssocType] | -| main.rs:1328:22:1328:25 | SelfParam | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1328:22:1328:25 | SelfParam | GenT | main.rs:1323:10:1323:15 | Output | -| main.rs:1328:44:1330:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1328:44:1330:9 | { ... } | E | main.rs:1323:10:1323:15 | Output | -| main.rs:1328:44:1330:9 | { ... } | T | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:13:1329:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1329:13:1329:22 | Ok(...) | E | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:13:1329:22 | Ok(...) | T | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:16:1329:19 | self | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1329:16:1329:19 | self | GenT | main.rs:1323:10:1323:15 | Output | -| main.rs:1329:16:1329:21 | self.0 | | main.rs:1323:10:1323:15 | Output | -| main.rs:1333:16:1355:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1335:13:1335:14 | p1 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1335:13:1335:14 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:13:1335:14 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:26:1335:53 | ...::PairBoth(...) | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1335:47:1335:48 | S1 | | main.rs:1282:5:1283:14 | S1 | -| main.rs:1335:51:1335:52 | S2 | | main.rs:1285:5:1286:14 | S2 | -| main.rs:1336:18:1336:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1336:18:1336:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1336:18:1336:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1336:18:1336:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:18:1336:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1336:18:1336:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1336:26:1336:27 | p1 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1336:26:1336:27 | p1 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1336:26:1336:27 | p1 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1339:13:1339:14 | p2 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1339:13:1339:14 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1339:13:1339:14 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1339:26:1339:47 | ...::PairNone(...) | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1340:18:1340:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1340:18:1340:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1340:18:1340:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1340:18:1340:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1340:18:1340:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1340:18:1340:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1340:26:1340:27 | p2 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1340:26:1340:27 | p2 | Fst | main.rs:1282:5:1283:14 | S1 | -| main.rs:1340:26:1340:27 | p2 | Snd | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:13:1343:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1343:13:1343:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:13:1343:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1343:34:1343:56 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1343:54:1343:55 | S3 | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1344:18:1344:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1344:18:1344:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1344:18:1344:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1344:18:1344:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:18:1344:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1344:18:1344:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1344:26:1344:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1344:26:1344:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1344:26:1344:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1347:13:1347:14 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1347:13:1347:14 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1347:13:1347:14 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1347:35:1347:56 | ...::PairNone(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1348:18:1348:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1348:18:1348:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1348:18:1348:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1348:18:1348:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1348:18:1348:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1348:18:1348:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1348:26:1348:27 | p3 | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1348:26:1348:27 | p3 | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1348:26:1348:27 | p3 | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:9:1350:55 | g(...) | | file://:0:0:0:0 | () | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:11:1350:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | | main.rs:1263:5:1269:5 | PairOption | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Fst | main.rs:1285:5:1286:14 | S2 | -| main.rs:1350:31:1350:53 | ...::PairSnd(...) | Snd | main.rs:1288:5:1289:14 | S3 | -| main.rs:1350:51:1350:52 | S3 | | main.rs:1288:5:1289:14 | S3 | -| main.rs:1352:13:1352:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1352:13:1352:13 | x | E | main.rs:1282:5:1283:14 | S1 | -| main.rs:1352:13:1352:13 | x | T | main.rs:1308:5:1308:34 | S4 | -| main.rs:1352:13:1352:13 | x | T.T41 | main.rs:1285:5:1286:14 | S2 | -| main.rs:1352:13:1352:13 | x | T.T42 | main.rs:1310:5:1310:22 | S5 | -| main.rs:1352:13:1352:13 | x | T.T42.T5 | main.rs:1285:5:1286:14 | S2 | -| main.rs:1354:13:1354:13 | y | | {EXTERNAL LOCATION} | Result | -| main.rs:1354:13:1354:13 | y | E | {EXTERNAL LOCATION} | bool | -| main.rs:1354:13:1354:13 | y | T | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:26 | GenS(...) | | main.rs:1316:5:1316:28 | GenS | -| main.rs:1354:17:1354:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | -| main.rs:1354:17:1354:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | -| main.rs:1354:17:1354:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | -| main.rs:1354:22:1354:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1367:16:1367:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1367:16:1367:24 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1367:27:1367:31 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1369:21:1369:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1369:21:1369:29 | SelfParam | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1369:32:1369:36 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1369:42:1371:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | -| main.rs:1370:13:1370:16 | self | &T | main.rs:1365:5:1372:5 | Self [trait MyTrait] | -| main.rs:1370:13:1370:27 | self.set(...) | | file://:0:0:0:0 | () | -| main.rs:1370:22:1370:26 | value | | main.rs:1365:19:1365:19 | S | -| main.rs:1376:16:1376:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1376:16:1376:24 | SelfParam | &T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1376:16:1376:24 | SelfParam | &T.T | main.rs:1374:10:1374:10 | T | -| main.rs:1376:27:1376:31 | value | | main.rs:1374:10:1374:10 | T | -| main.rs:1376:37:1376:38 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1380:26:1382:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1380:26:1382:9 | { ... } | T | main.rs:1379:10:1379:10 | T | -| main.rs:1381:13:1381:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1381:13:1381:30 | ...::MyNone(...) | T | main.rs:1379:10:1379:10 | T | -| main.rs:1386:20:1386:23 | SelfParam | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:20:1386:23 | SelfParam | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:20:1386:23 | SelfParam | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1386:41:1391:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1386:41:1391:9 | { ... } | T | main.rs:1385:10:1385:10 | T | -| main.rs:1387:13:1390:13 | match self { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:13:1390:13 | match self { ... } | T | main.rs:1385:10:1385:10 | T | -| main.rs:1387:19:1387:22 | self | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:19:1387:22 | self | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1387:19:1387:22 | self | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:17:1388:34 | ...::MyNone(...) | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1388:39:1388:56 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1388:39:1388:56 | ...::MyNone(...) | T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:17:1389:35 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:17:1389:35 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:17:1389:35 | ...::MySome(...) | T.T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:34:1389:34 | x | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:34:1389:34 | x | T | main.rs:1385:10:1385:10 | T | -| main.rs:1389:40:1389:40 | x | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1389:40:1389:40 | x | T | main.rs:1385:10:1385:10 | T | -| main.rs:1397:16:1443:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1398:13:1398:14 | x1 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1398:13:1398:14 | x1 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1398:18:1398:37 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1398:18:1398:37 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1399:18:1399:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1399:18:1399:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1399:18:1399:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1399:18:1399:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1399:18:1399:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1399:18:1399:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1399:26:1399:27 | x1 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1399:26:1399:27 | x1 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1401:17:1401:18 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1401:17:1401:18 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1401:22:1401:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1401:22:1401:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1402:9:1402:10 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1402:9:1402:10 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1402:9:1402:17 | x2.set(...) | | file://:0:0:0:0 | () | -| main.rs:1402:16:1402:16 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1403:18:1403:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1403:18:1403:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1403:18:1403:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1403:18:1403:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1403:18:1403:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1403:18:1403:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1403:26:1403:27 | x2 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1403:26:1403:27 | x2 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1406:17:1406:18 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1406:22:1406:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1407:9:1407:10 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1407:9:1407:22 | x3.call_set(...) | | file://:0:0:0:0 | () | -| main.rs:1407:21:1407:21 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1408:18:1408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1408:18:1408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1408:18:1408:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1408:18:1408:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1408:18:1408:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1408:18:1408:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1408:26:1408:27 | x3 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:17:1410:18 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:17:1410:18 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1410:22:1410:36 | ...::new(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1410:22:1410:36 | ...::new(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:9:1411:33 | ...::set(...) | | file://:0:0:0:0 | () | -| main.rs:1411:23:1411:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:1411:23:1411:29 | &mut x4 | &T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1411:23:1411:29 | &mut x4 | &T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:28:1411:29 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1411:28:1411:29 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1411:32:1411:32 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1412:18:1412:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1412:18:1412:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1412:18:1412:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1412:18:1412:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1412:18:1412:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1412:18:1412:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1412:26:1412:27 | x4 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1412:26:1412:27 | x4 | T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:13:1414:14 | x5 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:13:1414:14 | x5 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:13:1414:14 | x5 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:18:1414:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:18:1414:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:18:1414:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1414:35:1414:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1414:35:1414:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1415:18:1415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1415:18:1415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1415:18:1415:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1415:18:1415:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:18:1415:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1415:18:1415:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1415:26:1415:27 | x5 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:27 | x5 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:27 | x5 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1415:26:1415:37 | x5.flatten() | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1415:26:1415:37 | x5.flatten() | T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:13:1417:14 | x6 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:13:1417:14 | x6 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:13:1417:14 | x6 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:18:1417:58 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:18:1417:58 | ...::MySome(...) | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:18:1417:58 | ...::MySome(...) | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1417:35:1417:57 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1417:35:1417:57 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1418:18:1418:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1418:18:1418:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1418:18:1418:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1418:18:1418:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1418:18:1418:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1418:18:1418:61 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1418:26:1418:61 | ...::flatten(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:26:1418:61 | ...::flatten(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1418:59:1418:60 | x6 | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:59:1418:60 | x6 | T | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1418:59:1418:60 | x6 | T.T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:13:1421:19 | from_if | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:13:1421:19 | from_if | T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:23:1425:9 | if ... {...} else {...} | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:23:1425:9 | if ... {...} else {...} | T | main.rs:1394:5:1395:13 | S | -| main.rs:1421:26:1421:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:26:1421:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1421:30:1421:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:32:1423:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1421:32:1423:9 | { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1422:13:1422:30 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1422:13:1422:30 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1423:16:1425:9 | { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1423:16:1425:9 | { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1424:13:1424:31 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1424:13:1424:31 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1424:30:1424:30 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1426:18:1426:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1426:18:1426:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1426:18:1426:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1426:18:1426:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:18:1426:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1426:18:1426:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1426:26:1426:32 | from_if | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1426:26:1426:32 | from_if | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:13:1429:22 | from_match | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1429:13:1429:22 | from_match | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:26:1432:9 | match ... { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1429:26:1432:9 | match ... { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1429:32:1429:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1429:32:1429:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1429:36:1429:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1430:13:1430:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1430:21:1430:38 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1430:21:1430:38 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1431:13:1431:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1431:22:1431:40 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1431:22:1431:40 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1431:39:1431:39 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1433:18:1433:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1433:18:1433:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1433:18:1433:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1433:18:1433:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1433:18:1433:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1433:18:1433:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1433:26:1433:35 | from_match | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1433:26:1433:35 | from_match | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:13:1436:21 | from_loop | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1436:13:1436:21 | from_loop | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:25:1441:9 | loop { ... } | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1436:25:1441:9 | loop { ... } | T | main.rs:1394:5:1395:13 | S | -| main.rs:1436:30:1441:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1437:13:1439:13 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1437:16:1437:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:16:1437:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1437:20:1437:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:22:1439:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1438:23:1438:40 | ...::MyNone(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1438:23:1438:40 | ...::MyNone(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1440:19:1440:37 | ...::MySome(...) | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1440:19:1440:37 | ...::MySome(...) | T | main.rs:1394:5:1395:13 | S | -| main.rs:1440:36:1440:36 | S | | main.rs:1394:5:1395:13 | S | -| main.rs:1442:18:1442:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1442:18:1442:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1442:18:1442:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1442:18:1442:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:18:1442:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1442:18:1442:34 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1442:26:1442:34 | from_loop | | main.rs:1359:5:1363:5 | MyOption | -| main.rs:1442:26:1442:34 | from_loop | T | main.rs:1394:5:1395:13 | S | -| main.rs:1460:15:1460:18 | SelfParam | | main.rs:1448:5:1449:19 | S | -| main.rs:1460:15:1460:18 | SelfParam | T | main.rs:1459:10:1459:10 | T | -| main.rs:1460:26:1462:9 | { ... } | | main.rs:1459:10:1459:10 | T | -| main.rs:1461:13:1461:16 | self | | main.rs:1448:5:1449:19 | S | -| main.rs:1461:13:1461:16 | self | T | main.rs:1459:10:1459:10 | T | -| main.rs:1461:13:1461:18 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1464:15:1464:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1464:15:1464:19 | SelfParam | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1464:15:1464:19 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1464:28:1466:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1464:28:1466:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:13:1465:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1465:13:1465:19 | &... | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:14:1465:17 | self | | file://:0:0:0:0 | & | -| main.rs:1465:14:1465:17 | self | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1465:14:1465:17 | self | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1465:14:1465:19 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1468:15:1468:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1468:15:1468:25 | SelfParam | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1468:15:1468:25 | SelfParam | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1468:34:1470:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1468:34:1470:9 | { ... } | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:13:1469:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1469:13:1469:19 | &... | &T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:14:1469:17 | self | | file://:0:0:0:0 | & | -| main.rs:1469:14:1469:17 | self | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1469:14:1469:17 | self | &T.T | main.rs:1459:10:1459:10 | T | -| main.rs:1469:14:1469:19 | self.0 | | main.rs:1459:10:1459:10 | T | -| main.rs:1474:29:1474:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1474:29:1474:33 | SelfParam | &T | main.rs:1473:5:1476:5 | Self [trait ATrait] | -| main.rs:1475:33:1475:36 | SelfParam | | main.rs:1473:5:1476:5 | Self [trait ATrait] | -| main.rs:1481:29:1481:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1481:29:1481:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1481:29:1481:33 | SelfParam | &T.&T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1481:43:1483:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:13:1482:22 | (...) | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:13:1482:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1482:14:1482:21 | * ... | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:15:1482:21 | (...) | | file://:0:0:0:0 | & | -| main.rs:1482:15:1482:21 | (...) | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:16:1482:20 | * ... | | file://:0:0:0:0 | & | -| main.rs:1482:16:1482:20 | * ... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1482:17:1482:20 | self | | file://:0:0:0:0 | & | -| main.rs:1482:17:1482:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1482:17:1482:20 | self | &T.&T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1486:33:1486:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1486:33:1486:36 | SelfParam | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1486:46:1488:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:13:1487:19 | (...) | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1487:13:1487:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1487:14:1487:18 | * ... | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1487:15:1487:18 | self | | file://:0:0:0:0 | & | -| main.rs:1487:15:1487:18 | self | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1491:16:1541:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1492:13:1492:14 | x1 | | main.rs:1448:5:1449:19 | S | -| main.rs:1492:13:1492:14 | x1 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1492:18:1492:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1492:18:1492:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1492:20:1492:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1493:18:1493:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1493:18:1493:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1493:18:1493:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1493:18:1493:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1493:18:1493:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1493:18:1493:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1493:26:1493:27 | x1 | | main.rs:1448:5:1449:19 | S | -| main.rs:1493:26:1493:27 | x1 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1493:26:1493:32 | x1.m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:13:1495:14 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1495:13:1495:14 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:18:1495:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1495:18:1495:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1495:20:1495:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1497:18:1497:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1497:18:1497:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1497:18:1497:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1497:18:1497:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:18:1497:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1497:18:1497:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1497:26:1497:27 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1497:26:1497:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1497:26:1497:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1497:26:1497:32 | x2.m2() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1498:18:1498:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1498:18:1498:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1498:18:1498:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1498:18:1498:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:18:1498:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1498:18:1498:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1498:26:1498:27 | x2 | | main.rs:1448:5:1449:19 | S | -| main.rs:1498:26:1498:27 | x2 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1498:26:1498:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1498:26:1498:32 | x2.m3() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:13:1500:14 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1500:13:1500:14 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:18:1500:22 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1500:18:1500:22 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1500:20:1500:21 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:18:1502:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1502:18:1502:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1502:18:1502:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1502:18:1502:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:18:1502:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1502:18:1502:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1502:26:1502:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1502:26:1502:41 | ...::m2(...) | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:38:1502:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1502:38:1502:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1502:38:1502:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1502:39:1502:40 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1502:39:1502:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:18:1503:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1503:18:1503:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1503:18:1503:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1503:18:1503:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:18:1503:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1503:18:1503:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1503:26:1503:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1503:26:1503:41 | ...::m3(...) | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:38:1503:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1503:38:1503:40 | &x3 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1503:38:1503:40 | &x3 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1503:39:1503:40 | x3 | | main.rs:1448:5:1449:19 | S | -| main.rs:1503:39:1503:40 | x3 | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:13:1505:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1505:13:1505:14 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1505:13:1505:14 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:18:1505:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1505:18:1505:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1505:18:1505:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:19:1505:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1505:19:1505:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1505:21:1505:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1507:18:1507:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1507:18:1507:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1507:18:1507:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1507:18:1507:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1507:18:1507:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1507:18:1507:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1507:26:1507:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1507:26:1507:27 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1507:26:1507:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1507:26:1507:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1507:26:1507:32 | x4.m2() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1508:18:1508:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1508:18:1508:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1508:18:1508:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1508:18:1508:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1508:18:1508:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1508:18:1508:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1508:26:1508:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1508:26:1508:27 | x4 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1508:26:1508:27 | x4 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1508:26:1508:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1508:26:1508:32 | x4.m3() | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:13:1510:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1510:13:1510:14 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1510:13:1510:14 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:18:1510:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1510:18:1510:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1510:18:1510:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:19:1510:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1510:19:1510:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1510:21:1510:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1512:18:1512:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1512:18:1512:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1512:18:1512:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1512:18:1512:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1512:18:1512:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1512:18:1512:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1512:26:1512:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1512:26:1512:27 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1512:26:1512:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1512:26:1512:32 | x5.m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1513:18:1513:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1513:18:1513:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1513:18:1513:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1513:18:1513:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1513:18:1513:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1513:18:1513:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1513:26:1513:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1513:26:1513:27 | x5 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1513:26:1513:27 | x5 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1513:26:1513:29 | x5.0 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:13:1515:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1515:13:1515:14 | x6 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1515:13:1515:14 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:18:1515:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1515:18:1515:23 | &... | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1515:18:1515:23 | &... | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:19:1515:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1515:19:1515:23 | S(...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1515:21:1515:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:18:1518:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1518:18:1518:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1518:18:1518:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1518:18:1518:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1518:18:1518:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1518:18:1518:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1518:26:1518:30 | (...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1518:26:1518:30 | (...) | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:26:1518:35 | ... .m1() | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:27:1518:29 | * ... | | main.rs:1448:5:1449:19 | S | -| main.rs:1518:27:1518:29 | * ... | T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1518:28:1518:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1518:28:1518:29 | x6 | &T | main.rs:1448:5:1449:19 | S | -| main.rs:1518:28:1518:29 | x6 | &T.T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:13:1520:14 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1520:13:1520:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1520:13:1520:14 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:18:1520:23 | S(...) | | main.rs:1448:5:1449:19 | S | -| main.rs:1520:18:1520:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1520:18:1520:23 | S(...) | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:20:1520:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1520:20:1520:22 | &S2 | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1520:21:1520:22 | S2 | | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:13:1523:13 | t | | file://:0:0:0:0 | & | -| main.rs:1523:13:1523:13 | t | &T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:17:1523:18 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1523:17:1523:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1523:17:1523:18 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1523:17:1523:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1523:17:1523:23 | x7.m1() | &T | main.rs:1451:5:1452:14 | S2 | +| main.rs:865:26:865:26 | a | | main.rs:745:5:746:14 | S2 | +| main.rs:867:13:867:14 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:867:13:867:14 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:867:13:867:14 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:867:18:869:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:867:18:869:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:867:18:869:9 | MyThing {...} | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:868:16:868:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:868:16:868:32 | MyThing {...} | T | main.rs:743:5:744:14 | S1 | +| main.rs:868:29:868:30 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:870:13:870:14 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:870:13:870:14 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:870:13:870:14 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:870:18:872:9 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:870:18:872:9 | MyThing {...} | T | main.rs:738:5:741:5 | MyThing | +| main.rs:870:18:872:9 | MyThing {...} | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:871:16:871:32 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | +| main.rs:871:16:871:32 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | +| main.rs:871:29:871:30 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:874:13:874:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:874:17:874:39 | call_trait_thing_m1(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:874:37:874:38 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:874:37:874:38 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:874:37:874:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:875:18:875:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:875:18:875:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:875:18:875:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:875:18:875:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:875:18:875:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:875:18:875:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:875:26:875:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:876:13:876:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:876:17:876:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:876:39:876:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:876:39:876:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:876:39:876:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:877:18:877:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:877:18:877:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:877:18:877:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:877:18:877:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:877:18:877:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:877:18:877:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:877:26:877:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:878:13:878:13 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:878:17:878:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | +| main.rs:878:39:878:40 | x3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:878:39:878:40 | x3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:878:39:878:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | +| main.rs:879:18:879:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:879:18:879:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:879:18:879:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:879:18:879:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:879:18:879:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:879:18:879:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:879:26:879:26 | a | | main.rs:743:5:744:14 | S1 | +| main.rs:880:13:880:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:880:17:880:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:880:37:880:38 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:880:37:880:38 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:880:37:880:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:881:18:881:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:881:18:881:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:881:18:881:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:881:18:881:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:881:18:881:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:881:18:881:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:881:26:881:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:882:13:882:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:882:17:882:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:882:39:882:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:882:39:882:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:882:39:882:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:883:18:883:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:883:18:883:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:883:18:883:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:883:18:883:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:883:18:883:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:883:18:883:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:883:26:883:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:884:13:884:13 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:884:17:884:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | +| main.rs:884:39:884:40 | y3 | | main.rs:738:5:741:5 | MyThing | +| main.rs:884:39:884:40 | y3 | T | main.rs:738:5:741:5 | MyThing | +| main.rs:884:39:884:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | +| main.rs:885:18:885:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:885:18:885:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:885:18:885:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:885:18:885:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:885:18:885:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:885:18:885:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:885:26:885:26 | b | | main.rs:745:5:746:14 | S2 | +| main.rs:886:13:886:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:886:17:886:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:886:24:886:25 | S1 | | main.rs:743:5:744:14 | S1 | +| main.rs:887:13:887:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:887:22:887:31 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:887:29:887:30 | S2 | | main.rs:745:5:746:14 | S2 | +| main.rs:898:19:898:22 | SelfParam | | main.rs:892:5:895:5 | Wrapper | +| main.rs:898:19:898:22 | SelfParam | A | main.rs:897:10:897:10 | A | +| main.rs:898:30:900:9 | { ... } | | main.rs:897:10:897:10 | A | +| main.rs:899:13:899:16 | self | | main.rs:892:5:895:5 | Wrapper | +| main.rs:899:13:899:16 | self | A | main.rs:897:10:897:10 | A | +| main.rs:899:13:899:22 | self.field | | main.rs:897:10:897:10 | A | +| main.rs:907:15:907:18 | SelfParam | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:909:15:909:18 | SelfParam | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:913:9:916:9 | { ... } | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:914:13:914:16 | self | | main.rs:903:5:917:5 | Self [trait MyTrait] | +| main.rs:914:13:914:21 | self.m1() | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:915:13:915:43 | ...::default(...) | | main.rs:904:9:904:28 | AssociatedType | +| main.rs:923:19:923:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:923:19:923:23 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:923:26:923:26 | a | | main.rs:923:16:923:16 | A | +| main.rs:925:22:925:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:925:22:925:26 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:925:29:925:29 | a | | main.rs:925:19:925:19 | A | +| main.rs:925:35:925:35 | b | | main.rs:925:19:925:19 | A | +| main.rs:925:75:928:9 | { ... } | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:926:13:926:16 | self | | file://:0:0:0:0 | & | +| main.rs:926:13:926:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:926:13:926:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:926:22:926:22 | a | | main.rs:925:19:925:19 | A | +| main.rs:927:13:927:16 | self | | file://:0:0:0:0 | & | +| main.rs:927:13:927:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:927:13:927:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | +| main.rs:927:22:927:22 | b | | main.rs:925:19:925:19 | A | +| main.rs:936:21:936:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:936:21:936:25 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:938:20:938:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:938:20:938:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:940:20:940:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:940:20:940:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:956:15:956:18 | SelfParam | | main.rs:943:5:944:13 | S | +| main.rs:956:45:958:9 | { ... } | | main.rs:949:5:950:14 | AT | +| main.rs:957:13:957:14 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:966:19:966:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:966:19:966:23 | SelfParam | &T | main.rs:943:5:944:13 | S | +| main.rs:966:26:966:26 | a | | main.rs:966:16:966:16 | A | +| main.rs:966:46:968:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:966:46:968:9 | { ... } | A | main.rs:966:16:966:16 | A | +| main.rs:967:13:967:32 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:967:13:967:32 | Wrapper {...} | A | main.rs:966:16:966:16 | A | +| main.rs:967:30:967:30 | a | | main.rs:966:16:966:16 | A | +| main.rs:975:15:975:18 | SelfParam | | main.rs:946:5:947:14 | S2 | +| main.rs:975:45:977:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:975:45:977:9 | { ... } | A | main.rs:946:5:947:14 | S2 | +| main.rs:976:13:976:35 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:976:13:976:35 | Wrapper {...} | A | main.rs:946:5:947:14 | S2 | +| main.rs:976:30:976:33 | self | | main.rs:946:5:947:14 | S2 | +| main.rs:982:30:984:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | +| main.rs:982:30:984:9 | { ... } | A | main.rs:946:5:947:14 | S2 | +| main.rs:983:13:983:33 | Wrapper {...} | | main.rs:892:5:895:5 | Wrapper | +| main.rs:983:13:983:33 | Wrapper {...} | A | main.rs:946:5:947:14 | S2 | +| main.rs:983:30:983:31 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:989:22:989:26 | thing | | main.rs:989:10:989:19 | T | +| main.rs:990:9:990:13 | thing | | main.rs:989:10:989:19 | T | +| main.rs:997:21:997:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:997:21:997:25 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:997:34:999:9 | { ... } | | main.rs:949:5:950:14 | AT | +| main.rs:998:13:998:14 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1001:20:1001:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1001:20:1001:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:1001:43:1003:9 | { ... } | | main.rs:943:5:944:13 | S | +| main.rs:1002:13:1002:13 | S | | main.rs:943:5:944:13 | S | +| main.rs:1005:20:1005:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1005:20:1005:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:1005:43:1007:9 | { ... } | | main.rs:946:5:947:14 | S2 | +| main.rs:1006:13:1006:14 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1010:16:1038:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1011:13:1011:14 | x1 | | main.rs:943:5:944:13 | S | +| main.rs:1011:18:1011:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1013:18:1013:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1013:18:1013:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1013:18:1013:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1013:18:1013:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1013:18:1013:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1013:18:1013:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1013:26:1013:27 | x1 | | main.rs:943:5:944:13 | S | +| main.rs:1013:26:1013:32 | x1.m1() | | main.rs:949:5:950:14 | AT | +| main.rs:1015:13:1015:14 | x2 | | main.rs:943:5:944:13 | S | +| main.rs:1015:18:1015:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1017:13:1017:13 | y | | main.rs:949:5:950:14 | AT | +| main.rs:1017:17:1017:18 | x2 | | main.rs:943:5:944:13 | S | +| main.rs:1017:17:1017:23 | x2.m2() | | main.rs:949:5:950:14 | AT | +| main.rs:1018:18:1018:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1018:18:1018:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1018:18:1018:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1018:18:1018:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1018:18:1018:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1018:18:1018:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1018:26:1018:26 | y | | main.rs:949:5:950:14 | AT | +| main.rs:1020:13:1020:14 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1020:18:1020:18 | S | | main.rs:943:5:944:13 | S | +| main.rs:1022:18:1022:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1022:18:1022:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1022:18:1022:43 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1022:18:1022:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1022:18:1022:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1022:18:1022:43 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1022:26:1022:27 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1022:26:1022:34 | x3.put(...) | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1022:26:1022:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:1022:26:1022:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1022:33:1022:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1025:18:1025:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1025:18:1025:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1025:18:1025:49 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1025:18:1025:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1025:18:1025:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1025:18:1025:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1025:26:1025:27 | x3 | | main.rs:943:5:944:13 | S | +| main.rs:1025:26:1025:40 | x3.putTwo(...) | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1025:26:1025:40 | x3.putTwo(...) | A | main.rs:963:36:963:50 | AssociatedParam | +| main.rs:1025:26:1025:49 | ... .unwrap() | | main.rs:963:36:963:50 | AssociatedParam | +| main.rs:1025:36:1025:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1025:39:1025:39 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1027:20:1027:20 | S | | main.rs:943:5:944:13 | S | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1028:18:1028:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1028:18:1028:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1028:18:1028:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1028:18:1028:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1028:18:1028:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1030:13:1030:14 | x5 | | main.rs:946:5:947:14 | S2 | +| main.rs:1030:18:1030:19 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1031:18:1031:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1031:18:1031:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1031:18:1031:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1031:18:1031:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1031:18:1031:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1031:18:1031:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1031:26:1031:27 | x5 | | main.rs:946:5:947:14 | S2 | +| main.rs:1031:26:1031:32 | x5.m1() | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1031:26:1031:32 | x5.m1() | A | main.rs:946:5:947:14 | S2 | +| main.rs:1032:13:1032:14 | x6 | | main.rs:946:5:947:14 | S2 | +| main.rs:1032:18:1032:19 | S2 | | main.rs:946:5:947:14 | S2 | +| main.rs:1033:18:1033:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1033:18:1033:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1033:18:1033:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1033:18:1033:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1033:18:1033:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1033:18:1033:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1033:26:1033:27 | x6 | | main.rs:946:5:947:14 | S2 | +| main.rs:1033:26:1033:32 | x6.m2() | | main.rs:892:5:895:5 | Wrapper | +| main.rs:1033:26:1033:32 | x6.m2() | A | main.rs:946:5:947:14 | S2 | +| main.rs:1035:13:1035:22 | assoc_zero | | main.rs:949:5:950:14 | AT | +| main.rs:1035:26:1035:27 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1035:26:1035:38 | AT.get_zero() | | main.rs:949:5:950:14 | AT | +| main.rs:1036:13:1036:21 | assoc_one | | main.rs:943:5:944:13 | S | +| main.rs:1036:25:1036:26 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1036:25:1036:36 | AT.get_one() | | main.rs:943:5:944:13 | S | +| main.rs:1037:13:1037:21 | assoc_two | | main.rs:946:5:947:14 | S2 | +| main.rs:1037:25:1037:26 | AT | | main.rs:949:5:950:14 | AT | +| main.rs:1037:25:1037:36 | AT.get_two() | | main.rs:946:5:947:14 | S2 | +| main.rs:1045:19:1045:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1045:19:1045:23 | SelfParam | &T | main.rs:1042:5:1046:5 | Self [trait Supertrait] | +| main.rs:1045:26:1045:32 | content | | main.rs:1043:9:1043:21 | Content | +| main.rs:1050:24:1050:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1050:24:1050:28 | SelfParam | &T | main.rs:1048:5:1051:5 | Self [trait Subtrait] | +| main.rs:1059:23:1059:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1059:23:1059:27 | SelfParam | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1059:30:1059:31 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1059:49:1059:50 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1059:68:1062:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1060:13:1060:16 | self | | file://:0:0:0:0 | & | +| main.rs:1060:13:1060:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1060:13:1060:27 | self.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1060:25:1060:26 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1061:13:1061:16 | self | | file://:0:0:0:0 | & | +| main.rs:1061:13:1061:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1061:13:1061:27 | self.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1061:25:1061:26 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1069:19:1069:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1069:19:1069:23 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | +| main.rs:1069:19:1069:23 | SelfParam | &T.T | main.rs:1067:10:1067:10 | T | +| main.rs:1069:26:1069:33 | _content | | main.rs:1067:10:1067:10 | T | +| main.rs:1069:51:1071:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1070:22:1070:42 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1070:22:1070:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1070:22:1070:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1070:22:1070:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1076:24:1076:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1076:24:1076:28 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | +| main.rs:1076:24:1076:28 | SelfParam | &T.T | main.rs:1074:10:1074:17 | T | +| main.rs:1076:48:1078:9 | { ... } | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:19 | (...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:13:1077:19 | (...) | T | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:21 | ... .0 | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:13:1077:29 | ... .clone() | | main.rs:1074:10:1074:17 | T | +| main.rs:1077:14:1077:18 | * ... | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:14:1077:18 | * ... | T | main.rs:1074:10:1074:17 | T | +| main.rs:1077:15:1077:18 | self | | file://:0:0:0:0 | & | +| main.rs:1077:15:1077:18 | self | &T | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:15:1077:18 | self | &T.T | main.rs:1074:10:1074:17 | T | +| main.rs:1081:33:1081:36 | item | | file://:0:0:0:0 | & | +| main.rs:1081:33:1081:36 | item | &T | main.rs:1081:20:1081:30 | T | +| main.rs:1081:57:1083:5 | { ... } | | main.rs:1043:9:1043:21 | Content | +| main.rs:1082:9:1082:12 | item | | file://:0:0:0:0 | & | +| main.rs:1082:9:1082:12 | item | &T | main.rs:1081:20:1081:30 | T | +| main.rs:1082:9:1082:26 | item.get_content() | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:35:1085:38 | item | | file://:0:0:0:0 | & | +| main.rs:1085:35:1085:38 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1085:45:1085:46 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:61:1085:62 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:77:1085:78 | c3 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1085:93:1088:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1086:9:1086:12 | item | | file://:0:0:0:0 | & | +| main.rs:1086:9:1086:12 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1086:9:1086:23 | item.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1086:21:1086:22 | c1 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1087:9:1087:12 | item | | file://:0:0:0:0 | & | +| main.rs:1087:9:1087:12 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1087:9:1087:31 | item.insert_two(...) | | file://:0:0:0:0 | () | +| main.rs:1087:25:1087:26 | c2 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1087:29:1087:30 | c3 | | main.rs:1043:9:1043:21 | Content | +| main.rs:1090:15:1096:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1091:13:1091:17 | item1 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1091:13:1091:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1091:21:1091:33 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1091:21:1091:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1091:28:1091:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1092:25:1092:29 | item1 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1092:25:1092:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| main.rs:1094:13:1094:17 | item2 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1094:13:1094:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1094:21:1094:32 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1094:21:1094:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| main.rs:1094:28:1094:31 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1095:37:1095:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:1095:37:1095:42 | &item2 | &T | main.rs:1065:5:1065:24 | MyType | +| main.rs:1095:37:1095:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:1095:38:1095:42 | item2 | | main.rs:1065:5:1065:24 | MyType | +| main.rs:1095:38:1095:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| main.rs:1112:15:1112:18 | SelfParam | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1112:15:1112:18 | SelfParam | A | main.rs:1111:10:1111:10 | T | +| main.rs:1112:26:1117:9 | { ... } | | main.rs:1111:10:1111:10 | T | +| main.rs:1113:13:1116:13 | match self { ... } | | main.rs:1111:10:1111:10 | T | +| main.rs:1113:19:1113:22 | self | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1113:19:1113:22 | self | A | main.rs:1111:10:1111:10 | T | +| main.rs:1114:17:1114:29 | ...::C1(...) | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1114:17:1114:29 | ...::C1(...) | A | main.rs:1111:10:1111:10 | T | +| main.rs:1114:28:1114:28 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1114:34:1114:34 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1115:17:1115:32 | ...::C2 {...} | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1115:17:1115:32 | ...::C2 {...} | A | main.rs:1111:10:1111:10 | T | +| main.rs:1115:30:1115:30 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1115:37:1115:37 | a | | main.rs:1111:10:1111:10 | T | +| main.rs:1120:16:1126:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1121:13:1121:13 | x | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1121:13:1121:13 | x | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1121:17:1121:30 | ...::C1(...) | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1121:17:1121:30 | ...::C1(...) | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1121:28:1121:29 | S1 | | main.rs:1106:5:1107:14 | S1 | +| main.rs:1122:13:1122:13 | y | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1122:13:1122:13 | y | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1122:17:1122:36 | ...::C2 {...} | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1122:17:1122:36 | ...::C2 {...} | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1122:33:1122:34 | S2 | | main.rs:1108:5:1109:14 | S2 | +| main.rs:1124:18:1124:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1124:18:1124:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1124:18:1124:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1124:18:1124:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1124:18:1124:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1124:18:1124:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1124:26:1124:26 | x | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1124:26:1124:26 | x | A | main.rs:1106:5:1107:14 | S1 | +| main.rs:1124:26:1124:31 | x.m1() | | main.rs:1106:5:1107:14 | S1 | +| main.rs:1125:18:1125:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1125:18:1125:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1125:18:1125:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1125:18:1125:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1125:18:1125:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1125:18:1125:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1125:26:1125:26 | y | | main.rs:1100:5:1104:5 | MyEnum | +| main.rs:1125:26:1125:26 | y | A | main.rs:1108:5:1109:14 | S2 | +| main.rs:1125:26:1125:31 | y.m1() | | main.rs:1108:5:1109:14 | S2 | +| main.rs:1147:15:1147:18 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait MyTrait1] | +| main.rs:1152:15:1152:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1152:15:1152:19 | SelfParam | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1155:9:1161:9 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1156:13:1160:13 | if ... {...} else {...} | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1156:16:1156:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1156:16:1156:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1156:20:1156:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1156:22:1158:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1157:17:1157:20 | self | | file://:0:0:0:0 | & | +| main.rs:1157:17:1157:20 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1157:17:1157:25 | self.m1() | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1158:20:1160:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1159:17:1159:31 | ...::m1(...) | | main.rs:1150:20:1150:22 | Tr2 | +| main.rs:1159:26:1159:30 | * ... | | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1159:27:1159:30 | self | | file://:0:0:0:0 | & | +| main.rs:1159:27:1159:30 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1166:15:1166:18 | SelfParam | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1169:9:1175:9 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1170:13:1174:13 | if ... {...} else {...} | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1170:16:1170:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1170:16:1170:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1170:20:1170:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1170:22:1172:13 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1171:17:1171:20 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1171:17:1171:25 | self.m2() | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1171:17:1171:25 | self.m2() | A | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1171:17:1171:27 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1172:20:1174:13 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:17:1173:31 | ...::m2(...) | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1173:17:1173:31 | ...::m2(...) | A | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:17:1173:33 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | +| main.rs:1173:26:1173:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1173:26:1173:30 | &self | &T | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1173:27:1173:30 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1180:15:1180:18 | SelfParam | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1180:15:1180:18 | SelfParam | A | main.rs:1178:10:1178:10 | T | +| main.rs:1180:26:1182:9 | { ... } | | main.rs:1178:10:1178:10 | T | +| main.rs:1181:13:1181:16 | self | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1181:13:1181:16 | self | A | main.rs:1178:10:1178:10 | T | +| main.rs:1181:13:1181:18 | self.a | | main.rs:1178:10:1178:10 | T | +| main.rs:1189:15:1189:18 | SelfParam | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1189:15:1189:18 | SelfParam | A | main.rs:1187:10:1187:10 | T | +| main.rs:1189:35:1191:9 | { ... } | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1189:35:1191:9 | { ... } | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:13:1190:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1190:13:1190:33 | MyThing {...} | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:26:1190:29 | self | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1190:26:1190:29 | self | A | main.rs:1187:10:1187:10 | T | +| main.rs:1190:26:1190:31 | self.a | | main.rs:1187:10:1187:10 | T | +| main.rs:1198:44:1198:44 | x | | main.rs:1198:26:1198:41 | T2 | +| main.rs:1198:57:1200:5 | { ... } | | main.rs:1198:22:1198:23 | T1 | +| main.rs:1199:9:1199:9 | x | | main.rs:1198:26:1198:41 | T2 | +| main.rs:1199:9:1199:14 | x.m1() | | main.rs:1198:22:1198:23 | T1 | +| main.rs:1202:56:1202:56 | x | | main.rs:1202:39:1202:53 | T | +| main.rs:1202:62:1206:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1204:13:1204:13 | a | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1204:13:1204:13 | a | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1204:17:1204:17 | x | | main.rs:1202:39:1202:53 | T | +| main.rs:1204:17:1204:22 | x.m1() | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1204:17:1204:22 | x.m1() | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1205:18:1205:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1205:18:1205:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1205:18:1205:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1205:18:1205:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1205:18:1205:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1205:18:1205:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1205:26:1205:26 | a | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1205:26:1205:26 | a | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1208:16:1232:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1209:13:1209:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1209:13:1209:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1209:17:1209:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1209:17:1209:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1209:30:1209:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1210:13:1210:13 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1210:13:1210:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1210:17:1210:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1210:17:1210:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1210:30:1210:31 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1212:18:1212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1212:18:1212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1212:18:1212:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1212:18:1212:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1212:18:1212:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1212:18:1212:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1212:26:1212:26 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1212:26:1212:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1212:26:1212:31 | x.m1() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1213:18:1213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1213:18:1213:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1213:18:1213:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1213:18:1213:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1213:18:1213:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1213:26:1213:26 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1213:26:1213:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1213:26:1213:31 | y.m1() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1215:13:1215:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1215:13:1215:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1215:17:1215:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1215:17:1215:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1215:30:1215:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1216:13:1216:13 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1216:13:1216:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1216:17:1216:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1216:17:1216:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1216:30:1216:31 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1218:18:1218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1218:18:1218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1218:18:1218:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1218:18:1218:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1218:18:1218:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1218:18:1218:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1218:26:1218:26 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1218:26:1218:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1218:26:1218:31 | x.m2() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1219:18:1219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1219:18:1219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1219:18:1219:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1219:18:1219:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1219:18:1219:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1219:18:1219:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1219:26:1219:26 | y | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1219:26:1219:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1219:26:1219:31 | y.m2() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1221:13:1221:13 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1221:13:1221:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1221:17:1221:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1221:17:1221:34 | MyThing2 {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1221:31:1221:32 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1222:13:1222:13 | y | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1222:13:1222:13 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1222:17:1222:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1222:17:1222:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1222:31:1222:32 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1224:18:1224:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1224:18:1224:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1224:18:1224:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1224:18:1224:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1224:18:1224:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1224:26:1224:26 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1224:26:1224:26 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1224:26:1224:31 | x.m3() | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1225:18:1225:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1225:18:1225:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1225:18:1225:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1225:18:1225:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1225:18:1225:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1225:18:1225:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1225:26:1225:26 | y | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1225:26:1225:26 | y | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1225:26:1225:31 | y.m3() | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1227:13:1227:13 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1227:13:1227:13 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1227:17:1227:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1227:17:1227:33 | MyThing {...} | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1227:30:1227:31 | S1 | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:13:1228:13 | s | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:17:1228:32 | call_trait_m1(...) | | main.rs:1140:5:1141:14 | S1 | +| main.rs:1228:31:1228:31 | x | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1228:31:1228:31 | x | A | main.rs:1140:5:1141:14 | S1 | +| main.rs:1230:13:1230:13 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1230:13:1230:13 | x | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1230:17:1230:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1230:17:1230:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1230:31:1230:32 | S2 | | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:13:1231:13 | s | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1231:13:1231:13 | s | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:17:1231:32 | call_trait_m1(...) | | main.rs:1130:5:1133:5 | MyThing | +| main.rs:1231:17:1231:32 | call_trait_m1(...) | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1231:31:1231:31 | x | | main.rs:1135:5:1138:5 | MyThing2 | +| main.rs:1231:31:1231:31 | x | A | main.rs:1142:5:1143:14 | S2 | +| main.rs:1248:22:1248:22 | x | | file://:0:0:0:0 | & | +| main.rs:1248:22:1248:22 | x | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1248:35:1250:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1248:35:1250:5 | { ... } | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1249:9:1249:9 | x | | file://:0:0:0:0 | & | +| main.rs:1249:9:1249:9 | x | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1253:17:1253:20 | SelfParam | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1253:29:1255:9 | { ... } | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1254:13:1254:14 | S2 | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1258:21:1258:21 | x | | main.rs:1258:13:1258:14 | T1 | +| main.rs:1261:5:1263:5 | { ... } | | main.rs:1258:17:1258:18 | T2 | +| main.rs:1262:9:1262:9 | x | | main.rs:1258:13:1258:14 | T1 | +| main.rs:1262:9:1262:16 | x.into() | | main.rs:1258:17:1258:18 | T2 | +| main.rs:1265:16:1281:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1266:13:1266:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1266:17:1266:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:18:1267:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1267:18:1267:31 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1267:18:1267:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1267:18:1267:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1267:18:1267:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1267:26:1267:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1267:26:1267:31 | id(...) | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:29:1267:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1267:29:1267:30 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:30:1267:30 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1269:13:1269:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1269:17:1269:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:18:1270:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1270:18:1270:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1270:18:1270:37 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1270:18:1270:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1270:18:1270:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1270:18:1270:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1270:26:1270:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1270:26:1270:37 | id::<...>(...) | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:35:1270:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1270:35:1270:36 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:36:1270:36 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1272:13:1272:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1272:13:1272:13 | x | | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1272:17:1272:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1272:17:1272:18 | S1 | | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1274:18:1274:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1274:18:1274:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1274:18:1274:44 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1274:18:1274:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1274:18:1274:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1274:18:1274:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1274:26:1274:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1274:26:1274:44 | id::<...>(...) | &T | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1274:42:1274:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1274:42:1274:43 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1274:42:1274:43 | &x | &T | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1274:43:1274:43 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1274:43:1274:43 | x | | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1276:13:1276:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1276:17:1276:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1277:9:1277:25 | into::<...>(...) | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1277:24:1277:24 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1279:13:1279:13 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1279:17:1279:18 | S1 | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1280:13:1280:13 | y | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1280:21:1280:27 | into(...) | | main.rs:1241:5:1242:14 | S2 | +| main.rs:1280:26:1280:26 | x | | main.rs:1238:5:1239:14 | S1 | +| main.rs:1294:22:1294:25 | SelfParam | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1294:22:1294:25 | SelfParam | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1294:22:1294:25 | SelfParam | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1294:35:1301:9 | { ... } | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1295:13:1300:13 | match self { ... } | | file://:0:0:0:0 | ! | +| main.rs:1295:13:1300:13 | match self { ... } | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1295:19:1295:22 | self | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1295:19:1295:22 | self | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1295:19:1295:22 | self | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1296:17:1296:38 | ...::PairNone(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1296:43:1296:82 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1296:50:1296:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1296:50:1296:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1296:50:1296:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1296:50:1296:81 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:1296:50:1296:81 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1297:17:1297:38 | ...::PairFst(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1297:37:1297:37 | _ | | main.rs:1293:10:1293:12 | Fst | +| main.rs:1297:43:1297:81 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1297:50:1297:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:1297:50:1297:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1297:50:1297:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1297:50:1297:80 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:1297:50:1297:80 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1298:17:1298:40 | ...::PairSnd(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1298:37:1298:39 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1298:45:1298:47 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | Fst | main.rs:1293:10:1293:12 | Fst | +| main.rs:1299:17:1299:44 | ...::PairBoth(...) | Snd | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:38:1299:38 | _ | | main.rs:1293:10:1293:12 | Fst | +| main.rs:1299:41:1299:43 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1299:49:1299:51 | snd | | main.rs:1293:15:1293:17 | Snd | +| main.rs:1325:10:1325:10 | t | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1325:10:1325:10 | t | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1325:10:1325:10 | t | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1325:10:1325:10 | t | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1325:10:1325:10 | t | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1325:30:1328:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1326:13:1326:13 | x | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:17 | t | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:17 | t | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:17 | t | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:17 | t | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:17 | t | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1326:17:1326:29 | t.unwrapSnd() | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1326:17:1326:41 | ... .unwrapSnd() | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1327:18:1327:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1327:18:1327:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1327:18:1327:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1327:18:1327:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1327:18:1327:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1327:26:1327:26 | x | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1342:22:1342:25 | SelfParam | | main.rs:1340:5:1343:5 | Self [trait TraitWithAssocType] | +| main.rs:1350:22:1350:25 | SelfParam | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1350:22:1350:25 | SelfParam | GenT | main.rs:1345:10:1345:15 | Output | +| main.rs:1350:44:1352:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1350:44:1352:9 | { ... } | E | main.rs:1345:10:1345:15 | Output | +| main.rs:1350:44:1352:9 | { ... } | T | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:13:1351:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1351:13:1351:22 | Ok(...) | E | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:13:1351:22 | Ok(...) | T | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:16:1351:19 | self | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1351:16:1351:19 | self | GenT | main.rs:1345:10:1345:15 | Output | +| main.rs:1351:16:1351:21 | self.0 | | main.rs:1345:10:1345:15 | Output | +| main.rs:1355:16:1377:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1357:13:1357:14 | p1 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1357:13:1357:14 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:13:1357:14 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:26:1357:53 | ...::PairBoth(...) | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1357:47:1357:48 | S1 | | main.rs:1304:5:1305:14 | S1 | +| main.rs:1357:51:1357:52 | S2 | | main.rs:1307:5:1308:14 | S2 | +| main.rs:1358:18:1358:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1358:18:1358:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1358:18:1358:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1358:18:1358:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1358:18:1358:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1358:18:1358:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1358:26:1358:27 | p1 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1358:26:1358:27 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1358:26:1358:27 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1361:13:1361:14 | p2 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1361:13:1361:14 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1361:13:1361:14 | p2 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1361:26:1361:47 | ...::PairNone(...) | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1362:18:1362:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1362:18:1362:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1362:18:1362:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1362:18:1362:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1362:18:1362:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1362:26:1362:27 | p2 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1362:26:1362:27 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | +| main.rs:1362:26:1362:27 | p2 | Snd | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:13:1365:14 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1365:13:1365:14 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:13:1365:14 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1365:34:1365:56 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1365:54:1365:55 | S3 | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1366:18:1366:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1366:18:1366:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1366:18:1366:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1366:18:1366:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1366:26:1366:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1366:26:1366:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1366:26:1366:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1369:13:1369:14 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1369:13:1369:14 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1369:13:1369:14 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1369:35:1369:56 | ...::PairNone(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1370:18:1370:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1370:18:1370:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1370:18:1370:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1370:18:1370:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1370:18:1370:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1370:26:1370:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1370:26:1370:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1370:26:1370:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:9:1372:55 | g(...) | | file://:0:0:0:0 | () | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | +| main.rs:1372:51:1372:52 | S3 | | main.rs:1310:5:1311:14 | S3 | +| main.rs:1374:13:1374:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1374:13:1374:13 | x | E | main.rs:1304:5:1305:14 | S1 | +| main.rs:1374:13:1374:13 | x | T | main.rs:1330:5:1330:34 | S4 | +| main.rs:1374:13:1374:13 | x | T.T41 | main.rs:1307:5:1308:14 | S2 | +| main.rs:1374:13:1374:13 | x | T.T42 | main.rs:1332:5:1332:22 | S5 | +| main.rs:1374:13:1374:13 | x | T.T42.T5 | main.rs:1307:5:1308:14 | S2 | +| main.rs:1376:13:1376:13 | y | | {EXTERNAL LOCATION} | Result | +| main.rs:1376:13:1376:13 | y | E | {EXTERNAL LOCATION} | bool | +| main.rs:1376:13:1376:13 | y | T | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:26 | GenS(...) | | main.rs:1338:5:1338:28 | GenS | +| main.rs:1376:17:1376:26 | GenS(...) | GenT | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:38 | ... .get_input() | | {EXTERNAL LOCATION} | Result | +| main.rs:1376:17:1376:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | +| main.rs:1376:17:1376:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | +| main.rs:1376:22:1376:25 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1389:16:1389:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1389:16:1389:24 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1389:27:1389:31 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1391:21:1391:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1391:21:1391:29 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1391:32:1391:36 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1391:42:1393:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1392:13:1392:16 | self | | file://:0:0:0:0 | & | +| main.rs:1392:13:1392:16 | self | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1392:13:1392:27 | self.set(...) | | file://:0:0:0:0 | () | +| main.rs:1392:22:1392:26 | value | | main.rs:1387:19:1387:19 | S | +| main.rs:1398:16:1398:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1398:16:1398:24 | SelfParam | &T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1398:16:1398:24 | SelfParam | &T.T | main.rs:1396:10:1396:10 | T | +| main.rs:1398:27:1398:31 | value | | main.rs:1396:10:1396:10 | T | +| main.rs:1398:37:1398:38 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1402:26:1404:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1402:26:1404:9 | { ... } | T | main.rs:1401:10:1401:10 | T | +| main.rs:1403:13:1403:30 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1403:13:1403:30 | ...::MyNone(...) | T | main.rs:1401:10:1401:10 | T | +| main.rs:1408:20:1408:23 | SelfParam | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:20:1408:23 | SelfParam | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:20:1408:23 | SelfParam | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1408:41:1413:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1408:41:1413:9 | { ... } | T | main.rs:1407:10:1407:10 | T | +| main.rs:1409:13:1412:13 | match self { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:13:1412:13 | match self { ... } | T | main.rs:1407:10:1407:10 | T | +| main.rs:1409:19:1409:22 | self | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:19:1409:22 | self | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1409:19:1409:22 | self | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:17:1410:34 | ...::MyNone(...) | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1410:39:1410:56 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1410:39:1410:56 | ...::MyNone(...) | T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:17:1411:35 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:17:1411:35 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:17:1411:35 | ...::MySome(...) | T.T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:34:1411:34 | x | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:34:1411:34 | x | T | main.rs:1407:10:1407:10 | T | +| main.rs:1411:40:1411:40 | x | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1411:40:1411:40 | x | T | main.rs:1407:10:1407:10 | T | +| main.rs:1419:16:1465:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1420:13:1420:14 | x1 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1420:13:1420:14 | x1 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1420:18:1420:37 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1420:18:1420:37 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1421:18:1421:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1421:18:1421:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1421:18:1421:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1421:18:1421:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1421:18:1421:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1421:26:1421:27 | x1 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1421:26:1421:27 | x1 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1423:17:1423:18 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1423:17:1423:18 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1423:22:1423:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1423:22:1423:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1424:9:1424:10 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1424:9:1424:10 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1424:9:1424:17 | x2.set(...) | | file://:0:0:0:0 | () | +| main.rs:1424:16:1424:16 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1425:18:1425:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1425:18:1425:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1425:18:1425:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1425:18:1425:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1425:18:1425:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1425:26:1425:27 | x2 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1425:26:1425:27 | x2 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1428:17:1428:18 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1428:22:1428:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1429:9:1429:10 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1429:9:1429:22 | x3.call_set(...) | | file://:0:0:0:0 | () | +| main.rs:1429:21:1429:21 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1430:18:1430:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1430:18:1430:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1430:18:1430:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1430:18:1430:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1430:18:1430:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1430:26:1430:27 | x3 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:17:1432:18 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:17:1432:18 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1432:22:1432:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1432:22:1432:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:9:1433:33 | ...::set(...) | | file://:0:0:0:0 | () | +| main.rs:1433:23:1433:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1433:23:1433:29 | &mut x4 | &T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1433:23:1433:29 | &mut x4 | &T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:28:1433:29 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1433:28:1433:29 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:32:1433:32 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1434:18:1434:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1434:18:1434:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1434:18:1434:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1434:18:1434:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1434:18:1434:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1434:18:1434:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1434:26:1434:27 | x4 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1434:26:1434:27 | x4 | T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:13:1436:14 | x5 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:13:1436:14 | x5 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:13:1436:14 | x5 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:18:1436:58 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:18:1436:58 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:18:1436:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1436:35:1436:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1436:35:1436:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1437:18:1437:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1437:18:1437:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1437:18:1437:37 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1437:18:1437:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1437:18:1437:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1437:18:1437:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1437:26:1437:27 | x5 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:27 | x5 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:27 | x5 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1437:26:1437:37 | x5.flatten() | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1437:26:1437:37 | x5.flatten() | T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:13:1439:14 | x6 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:13:1439:14 | x6 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:13:1439:14 | x6 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:18:1439:58 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:18:1439:58 | ...::MySome(...) | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:18:1439:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1439:35:1439:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1439:35:1439:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1440:18:1440:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1440:18:1440:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1440:18:1440:61 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1440:18:1440:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1440:18:1440:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1440:18:1440:61 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1440:26:1440:61 | ...::flatten(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:26:1440:61 | ...::flatten(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1440:59:1440:60 | x6 | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:59:1440:60 | x6 | T | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1440:59:1440:60 | x6 | T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:13:1443:19 | from_if | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:13:1443:19 | from_if | T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:23:1447:9 | if ... {...} else {...} | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:23:1447:9 | if ... {...} else {...} | T | main.rs:1416:5:1417:13 | S | +| main.rs:1443:26:1443:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:26:1443:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1443:30:1443:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:32:1445:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1443:32:1445:9 | { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1444:13:1444:30 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1444:13:1444:30 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1445:16:1447:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1445:16:1447:9 | { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1446:13:1446:31 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1446:13:1446:31 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1446:30:1446:30 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1448:18:1448:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1448:18:1448:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1448:18:1448:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1448:18:1448:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1448:18:1448:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1448:18:1448:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1448:26:1448:32 | from_if | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1448:26:1448:32 | from_if | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:13:1451:22 | from_match | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1451:13:1451:22 | from_match | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:26:1454:9 | match ... { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1451:26:1454:9 | match ... { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1451:32:1451:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1451:32:1451:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1451:36:1451:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:13:1452:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1452:21:1452:38 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1452:21:1452:38 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1453:13:1453:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1453:22:1453:40 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1453:22:1453:40 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1453:39:1453:39 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1455:18:1455:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1455:18:1455:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1455:18:1455:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1455:18:1455:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1455:18:1455:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1455:26:1455:35 | from_match | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1455:26:1455:35 | from_match | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:13:1458:21 | from_loop | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1458:13:1458:21 | from_loop | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:25:1463:9 | loop { ... } | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1458:25:1463:9 | loop { ... } | T | main.rs:1416:5:1417:13 | S | +| main.rs:1458:30:1463:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1459:13:1461:13 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1459:16:1459:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1459:16:1459:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1459:20:1459:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1459:22:1461:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1460:23:1460:40 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1460:23:1460:40 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1462:19:1462:37 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1462:19:1462:37 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | +| main.rs:1462:36:1462:36 | S | | main.rs:1416:5:1417:13 | S | +| main.rs:1464:18:1464:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1464:18:1464:34 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1464:18:1464:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1464:18:1464:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1464:18:1464:34 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1464:26:1464:34 | from_loop | | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1464:26:1464:34 | from_loop | T | main.rs:1416:5:1417:13 | S | +| main.rs:1482:15:1482:18 | SelfParam | | main.rs:1470:5:1471:19 | S | +| main.rs:1482:15:1482:18 | SelfParam | T | main.rs:1481:10:1481:10 | T | +| main.rs:1482:26:1484:9 | { ... } | | main.rs:1481:10:1481:10 | T | +| main.rs:1483:13:1483:16 | self | | main.rs:1470:5:1471:19 | S | +| main.rs:1483:13:1483:16 | self | T | main.rs:1481:10:1481:10 | T | +| main.rs:1483:13:1483:18 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1486:15:1486:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1486:15:1486:19 | SelfParam | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1486:15:1486:19 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1486:28:1488:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1486:28:1488:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:13:1487:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1487:13:1487:19 | &... | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:14:1487:17 | self | | file://:0:0:0:0 | & | +| main.rs:1487:14:1487:17 | self | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1487:14:1487:17 | self | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:14:1487:19 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1490:15:1490:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1490:15:1490:25 | SelfParam | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1490:15:1490:25 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1490:34:1492:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1490:34:1492:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:13:1491:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1491:13:1491:19 | &... | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:14:1491:17 | self | | file://:0:0:0:0 | & | +| main.rs:1491:14:1491:17 | self | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1491:14:1491:17 | self | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:14:1491:19 | self.0 | | main.rs:1481:10:1481:10 | T | +| main.rs:1496:29:1496:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1496:29:1496:33 | SelfParam | &T | main.rs:1495:5:1498:5 | Self [trait ATrait] | +| main.rs:1497:33:1497:36 | SelfParam | | main.rs:1495:5:1498:5 | Self [trait ATrait] | +| main.rs:1503:29:1503:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1503:29:1503:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1503:29:1503:33 | SelfParam | &T.&T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1503:43:1505:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:13:1504:22 | (...) | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:13:1504:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1504:14:1504:21 | * ... | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:15:1504:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1504:15:1504:21 | (...) | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:16:1504:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1504:16:1504:20 | * ... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:17:1504:20 | self | | file://:0:0:0:0 | & | +| main.rs:1504:17:1504:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1504:17:1504:20 | self | &T.&T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1508:33:1508:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1508:33:1508:36 | SelfParam | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1508:46:1510:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:13:1509:19 | (...) | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1509:13:1509:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:14:1509:18 | * ... | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1509:15:1509:18 | self | | file://:0:0:0:0 | & | +| main.rs:1509:15:1509:18 | self | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1513:16:1563:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1514:13:1514:14 | x1 | | main.rs:1470:5:1471:19 | S | +| main.rs:1514:13:1514:14 | x1 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1514:18:1514:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1514:18:1514:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1514:20:1514:21 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1515:18:1515:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1515:18:1515:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1515:18:1515:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1515:18:1515:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1515:18:1515:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1515:18:1515:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1515:26:1515:27 | x1 | | main.rs:1470:5:1471:19 | S | +| main.rs:1515:26:1515:27 | x1 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1515:26:1515:32 | x1.m1() | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:13:1517:14 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1517:13:1517:14 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:18:1517:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1517:18:1517:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1517:20:1517:21 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1519:18:1519:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1519:18:1519:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1519:18:1519:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1519:18:1519:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1519:18:1519:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1519:18:1519:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1519:26:1519:27 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1519:26:1519:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1519:26:1519:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1519:26:1519:32 | x2.m2() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1520:18:1520:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1520:18:1520:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1520:18:1520:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1520:18:1520:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1520:18:1520:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1520:18:1520:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1520:26:1520:27 | x2 | | main.rs:1470:5:1471:19 | S | +| main.rs:1520:26:1520:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1520:26:1520:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1520:26:1520:32 | x2.m3() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:13:1522:14 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1522:13:1522:14 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:18:1522:22 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1522:18:1522:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1522:20:1522:21 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1524:18:1524:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1524:18:1524:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1524:18:1524:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1524:18:1524:27 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1524:26:1524:27 | x7 | | main.rs:1448:5:1449:19 | S | -| main.rs:1524:26:1524:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1524:26:1524:27 | x7 | T.&T | main.rs:1451:5:1452:14 | S2 | -| main.rs:1526:13:1526:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1526:26:1526:32 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1526:26:1526:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1526:26:1526:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1530:13:1530:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1530:13:1530:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1530:17:1530:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1530:17:1530:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1530:17:1530:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1532:13:1532:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1532:13:1532:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:24:1532:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1532:24:1532:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:25:1532:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1532:36:1532:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:13:1534:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1534:17:1534:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1534:17:1534:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1534:17:1534:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1524:18:1524:41 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1524:18:1524:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1524:18:1524:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1524:18:1524:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1524:26:1524:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1524:26:1524:41 | ...::m2(...) | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:38:1524:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1524:38:1524:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1524:38:1524:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:39:1524:40 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1524:39:1524:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:18:1525:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1525:18:1525:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1525:18:1525:41 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1525:18:1525:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1525:18:1525:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1525:18:1525:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1525:26:1525:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1525:26:1525:41 | ...::m3(...) | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:38:1525:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1525:38:1525:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1525:38:1525:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:39:1525:40 | x3 | | main.rs:1470:5:1471:19 | S | +| main.rs:1525:39:1525:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:13:1527:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1527:13:1527:14 | x4 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1527:13:1527:14 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:18:1527:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1527:18:1527:23 | &... | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1527:18:1527:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:19:1527:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1527:19:1527:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:21:1527:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:18:1529:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1529:18:1529:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1529:18:1529:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1529:18:1529:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1529:18:1529:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1529:18:1529:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1529:26:1529:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1529:26:1529:27 | x4 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1529:26:1529:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:26:1529:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1529:26:1529:32 | x4.m2() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:18:1530:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1530:18:1530:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1530:18:1530:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1530:18:1530:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1530:18:1530:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1530:18:1530:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1530:26:1530:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1530:26:1530:27 | x4 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1530:26:1530:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:26:1530:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1530:26:1530:32 | x4.m3() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:13:1532:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1532:13:1532:14 | x5 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1532:13:1532:14 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:18:1532:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1532:18:1532:23 | &... | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1532:18:1532:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:19:1532:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1532:19:1532:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:21:1532:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1534:18:1534:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1534:18:1534:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1534:18:1534:32 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1534:18:1534:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1534:18:1534:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1534:18:1534:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1534:26:1534:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1534:26:1534:27 | x5 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1534:26:1534:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1534:26:1534:32 | x5.m1() | | main.rs:1473:5:1474:14 | S2 | | main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1535:18:1535:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1535:18:1535:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:18:1535:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:18:1535:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1535:26:1535:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1538:13:1538:20 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:24:1538:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1538:24:1538:39 | &... | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:25:1538:39 | MyInt {...} | | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1538:36:1538:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:13:1539:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:17:1539:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1539:17:1539:24 | my_thing | &T | main.rs:1454:5:1457:5 | MyInt | -| main.rs:1539:17:1539:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:18:1535:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1535:18:1535:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1535:18:1535:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1535:18:1535:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1535:26:1535:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1535:26:1535:27 | x5 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1535:26:1535:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1535:26:1535:29 | x5.0 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:13:1537:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1537:13:1537:14 | x6 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1537:13:1537:14 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:18:1537:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1537:18:1537:23 | &... | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1537:18:1537:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:19:1537:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1537:19:1537:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:21:1537:22 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1540:18:1540:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1540:18:1540:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1540:18:1540:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1540:18:1540:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1540:26:1540:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:16:1547:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1547:16:1547:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1550:16:1550:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1550:16:1550:20 | SelfParam | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1550:32:1552:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1550:32:1552:9 | { ... } | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1551:13:1551:16 | self | | file://:0:0:0:0 | & | -| main.rs:1551:13:1551:16 | self | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1551:13:1551:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1551:13:1551:22 | self.foo() | &T | main.rs:1545:5:1553:5 | Self [trait MyTrait] | -| main.rs:1559:16:1559:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1559:16:1559:20 | SelfParam | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1559:36:1561:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1559:36:1561:9 | { ... } | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1560:13:1560:16 | self | | file://:0:0:0:0 | & | -| main.rs:1560:13:1560:16 | self | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1564:16:1567:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1565:13:1565:13 | x | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1565:17:1565:24 | MyStruct | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1566:9:1566:9 | x | | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1566:9:1566:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1566:9:1566:15 | x.bar() | &T | main.rs:1555:5:1555:20 | MyStruct | -| main.rs:1576:16:1576:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1576:16:1576:20 | SelfParam | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1576:16:1576:20 | SelfParam | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1576:32:1578:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1576:32:1578:9 | { ... } | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1576:32:1578:9 | { ... } | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1577:13:1577:16 | self | | file://:0:0:0:0 | & | -| main.rs:1577:13:1577:16 | self | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1577:13:1577:16 | self | &T.T | main.rs:1575:10:1575:10 | T | -| main.rs:1581:16:1584:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1582:13:1582:13 | x | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1582:13:1582:13 | x | T | main.rs:1571:5:1571:13 | S | -| main.rs:1582:17:1582:27 | MyStruct(...) | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1582:17:1582:27 | MyStruct(...) | T | main.rs:1571:5:1571:13 | S | -| main.rs:1582:26:1582:26 | S | | main.rs:1571:5:1571:13 | S | -| main.rs:1583:9:1583:9 | x | | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1583:9:1583:9 | x | T | main.rs:1571:5:1571:13 | S | -| main.rs:1583:9:1583:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1583:9:1583:15 | x.foo() | &T | main.rs:1573:5:1573:26 | MyStruct | -| main.rs:1583:9:1583:15 | x.foo() | &T.T | main.rs:1571:5:1571:13 | S | -| main.rs:1594:17:1594:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1594:17:1594:25 | SelfParam | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1594:28:1596:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1595:13:1595:16 | self | | file://:0:0:0:0 | & | -| main.rs:1595:13:1595:16 | self | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1595:13:1595:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:13:1595:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1595:25:1595:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1595:26:1595:29 | self | | file://:0:0:0:0 | & | -| main.rs:1595:26:1595:29 | self | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1595:26:1595:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1602:15:1602:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1602:15:1602:19 | SelfParam | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1602:31:1604:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1602:31:1604:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:13:1603:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:13:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1603:13:1603:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:14:1603:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1603:14:1603:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:15:1603:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1603:15:1603:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1603:15:1603:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1603:16:1603:19 | self | | file://:0:0:0:0 | & | -| main.rs:1603:16:1603:19 | self | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1606:15:1606:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1606:15:1606:25 | SelfParam | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1606:37:1608:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1606:37:1608:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:13:1607:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:13:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1607:13:1607:19 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:14:1607:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1607:14:1607:19 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:15:1607:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1607:15:1607:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1607:15:1607:19 | &self | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1607:16:1607:19 | self | | file://:0:0:0:0 | & | -| main.rs:1607:16:1607:19 | self | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1610:15:1610:15 | x | | file://:0:0:0:0 | & | -| main.rs:1610:15:1610:15 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1610:34:1612:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1610:34:1612:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1611:13:1611:13 | x | | file://:0:0:0:0 | & | -| main.rs:1611:13:1611:13 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1614:15:1614:15 | x | | file://:0:0:0:0 | & | -| main.rs:1614:15:1614:15 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1614:34:1616:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1614:34:1616:9 | { ... } | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:13:1615:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:13:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1615:13:1615:16 | &... | &T.&T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:14:1615:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1615:14:1615:16 | &... | &T.&T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:15:1615:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1615:15:1615:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1615:15:1615:16 | &x | &T.&T | main.rs:1599:5:1599:13 | S | -| main.rs:1615:16:1615:16 | x | | file://:0:0:0:0 | & | -| main.rs:1615:16:1615:16 | x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1619:16:1632:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1620:13:1620:13 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1620:17:1620:20 | S {...} | | main.rs:1599:5:1599:13 | S | -| main.rs:1621:9:1621:9 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1621:9:1621:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1621:9:1621:14 | x.f1() | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1622:9:1622:9 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1622:9:1622:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1622:9:1622:14 | x.f2() | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:9:1623:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1623:9:1623:17 | ...::f3(...) | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:15:1623:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1623:15:1623:16 | &x | &T | main.rs:1599:5:1599:13 | S | -| main.rs:1623:16:1623:16 | x | | main.rs:1599:5:1599:13 | S | -| main.rs:1625:13:1625:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:17:1625:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:18:1625:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1625:18:1625:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:19:1625:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1625:19:1625:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1625:19:1625:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:20:1625:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1625:20:1625:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1625:21:1625:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1629:17:1629:20 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1629:24:1629:41 | ...::default(...) | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1630:9:1630:31 | ...::flip(...) | | file://:0:0:0:0 | () | -| main.rs:1630:22:1630:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1630:22:1630:30 | &mut flag | &T | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1630:27:1630:30 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1631:18:1631:23 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1631:18:1631:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1631:18:1631:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1631:18:1631:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1631:18:1631:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1631:18:1631:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1631:26:1631:29 | flag | | main.rs:1588:5:1591:5 | MyFlag | -| main.rs:1646:43:1649:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1646:43:1649:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1646:43:1649:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:13:1647:13 | x | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:17:1647:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1647:17:1647:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:17:1647:31 | TryExpr | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1647:28:1647:29 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:9:1648:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1648:9:1648:22 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:9:1648:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1648:20:1648:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1653:46:1657:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1653:46:1657:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1653:46:1657:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:13:1654:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1654:13:1654:13 | x | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:17:1654:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1654:17:1654:30 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1654:28:1654:29 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:13:1655:13 | y | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:17:1655:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1655:17:1655:17 | x | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1655:17:1655:18 | TryExpr | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1656:9:1656:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1656:9:1656:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1656:9:1656:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1656:20:1656:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1661:40:1666:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1661:40:1666:5 | { ... } | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1661:40:1666:5 | { ... } | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:13:1662:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:13:1662:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1662:13:1662:13 | x | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:17:1662:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:17:1662:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1662:17:1662:42 | ...::Ok(...) | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:28:1662:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1662:28:1662:41 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1662:39:1662:40 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:17 | x | T.T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:17:1664:18 | TryExpr | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1664:17:1664:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1664:24:1664:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1664:24:1664:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1665:9:1665:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1665:9:1665:22 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1665:9:1665:22 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1665:20:1665:21 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:30:1670:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1670:30:1670:34 | input | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:30:1670:34 | input | T | main.rs:1670:20:1670:27 | T | -| main.rs:1670:69:1677:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1670:69:1677:5 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1670:69:1677:5 | { ... } | T | main.rs:1670:20:1670:27 | T | -| main.rs:1671:13:1671:17 | value | | main.rs:1670:20:1670:27 | T | -| main.rs:1671:21:1671:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1671:21:1671:25 | input | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1671:21:1671:25 | input | T | main.rs:1670:20:1670:27 | T | -| main.rs:1671:21:1671:26 | TryExpr | | main.rs:1670:20:1670:27 | T | -| main.rs:1672:22:1672:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:22:1672:38 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:22:1672:38 | ...::Ok(...) | T | main.rs:1670:20:1670:27 | T | -| main.rs:1672:22:1675:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:22:1675:10 | ... .and_then(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:33:1672:37 | value | | main.rs:1670:20:1670:27 | T | -| main.rs:1672:49:1675:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1672:49:1675:9 | \|...\| ... | dyn(Output).E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1672:53:1675:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1672:53:1675:9 | { ... } | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1673:22:1673:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1673:22:1673:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1673:22:1673:30 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1673:22:1673:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1673:22:1673:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1673:22:1673:30 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1674:13:1674:34 | ...::Ok::<...>(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1676:9:1676:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1676:9:1676:23 | ...::Err(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1676:9:1676:23 | ...::Err(...) | T | main.rs:1670:20:1670:27 | T | -| main.rs:1676:21:1676:22 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1680:16:1696:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1681:9:1683:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1681:16:1681:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1681:16:1681:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:16:1681:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:27:1681:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:37:1681:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1681:37:1681:52 | try_same_error(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:37:1681:52 | try_same_error(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1681:54:1683:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1682:22:1682:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1682:22:1682:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1682:22:1682:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1682:22:1682:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1682:22:1682:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1682:22:1682:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1682:30:1682:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:9:1687:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1685:16:1685:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1685:16:1685:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1685:16:1685:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:27:1685:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:37:1685:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1685:37:1685:55 | try_convert_error(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1685:37:1685:55 | try_convert_error(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1685:57:1687:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1686:22:1686:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1686:22:1686:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1686:22:1686:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1686:22:1686:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1686:22:1686:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1686:22:1686:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1686:30:1686:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:9:1691:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1689:16:1689:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1689:16:1689:33 | ...::Ok(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1689:16:1689:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:27:1689:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:37:1689:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1689:37:1689:49 | try_chained(...) | E | main.rs:1641:5:1642:14 | S2 | -| main.rs:1689:37:1689:49 | try_chained(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1689:51:1691:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1690:22:1690:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1690:22:1690:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1690:22:1690:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1690:22:1690:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1690:22:1690:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1690:22:1690:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1690:30:1690:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:9:1695:9 | if ... {...} | | file://:0:0:0:0 | () | -| main.rs:1693:16:1693:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:16:1693:33 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:16:1693:33 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:27:1693:32 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:37:1693:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:37:1693:63 | try_complex(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:37:1693:63 | try_complex(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:49:1693:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1693:49:1693:62 | ...::Ok(...) | E | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:49:1693:62 | ...::Ok(...) | T | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:60:1693:61 | S1 | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1693:65:1695:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1694:22:1694:27 | "{:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:1694:22:1694:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1694:22:1694:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1694:22:1694:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1694:22:1694:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1694:22:1694:35 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1694:30:1694:35 | result | | main.rs:1638:5:1639:14 | S1 | -| main.rs:1700:16:1710:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1701:13:1701:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1701:22:1701:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1702:13:1702:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1702:17:1702:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:13:1703:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:17:1703:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:17:1703:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1703:21:1703:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:13:1704:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:17:1704:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1704:17:1704:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1705:13:1705:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1705:17:1705:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1706:13:1706:17 | hello | | file://:0:0:0:0 | & | -| main.rs:1706:13:1706:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1706:21:1706:27 | "Hello" | | file://:0:0:0:0 | & | -| main.rs:1706:21:1706:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1707:13:1707:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1707:17:1707:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1708:13:1708:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1708:17:1708:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1709:13:1709:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1709:17:1709:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1715:16:1727:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1716:13:1716:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:17:1716:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:17:1716:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1716:25:1716:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:13:1717:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:17:1717:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:17:1717:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1717:25:1717:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1719:17:1719:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1720:13:1720:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1720:20:1720:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1720:20:1720:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1720:26:1720:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1721:9:1725:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | -| main.rs:1721:12:1721:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1721:17:1723:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1722:17:1722:17 | z | | file://:0:0:0:0 | () | -| main.rs:1722:21:1722:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1722:22:1722:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1722:22:1722:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1722:26:1722:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1723:16:1725:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1724:13:1724:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1724:13:1724:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1724:17:1724:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1726:9:1726:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1740:30:1742:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1741:13:1741:31 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1741:23:1741:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1741:29:1741:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:16:1748:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1748:22:1748:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1748:41:1753:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1749:13:1752:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:20:1750:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:20:1750:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:20:1750:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:29:1750:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1750:29:1750:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:20:1751:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1751:20:1751:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:20:1751:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:29:1751:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1751:29:1751:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:23:1758:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1758:23:1758:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1758:34:1758:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1758:45:1761:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1759:13:1759:16 | self | | file://:0:0:0:0 | & | -| main.rs:1759:13:1759:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1759:13:1759:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1759:13:1759:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1759:23:1759:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1759:23:1759:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:13:1760:16 | self | | file://:0:0:0:0 | & | -| main.rs:1760:13:1760:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1760:13:1760:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:13:1760:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1760:23:1760:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1760:23:1760:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:16:1766:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1766:22:1766:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1766:41:1771:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1767:13:1770:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:20:1768:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:20:1768:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1768:20:1768:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1768:29:1768:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1768:29:1768:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:20:1769:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1769:20:1769:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:20:1769:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1769:29:1769:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1769:29:1769:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1776:23:1776:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1776:23:1776:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1776:34:1776:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1776:45:1779:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1777:13:1777:16 | self | | file://:0:0:0:0 | & | -| main.rs:1777:13:1777:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1777:13:1777:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:13:1777:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1777:23:1777:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1777:23:1777:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:13:1778:16 | self | | file://:0:0:0:0 | & | -| main.rs:1778:13:1778:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1778:13:1778:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:13:1778:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1778:23:1778:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1778:23:1778:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:16:1784:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1784:22:1784:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1784:41:1789:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1785:13:1788:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:20:1786:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:20:1786:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:20:1786:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:29:1786:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1786:29:1786:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:20:1787:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1787:20:1787:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:20:1787:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:29:1787:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1787:29:1787:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:23:1793:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1793:23:1793:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1793:34:1793:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1793:45:1796:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1794:13:1794:16 | self | | file://:0:0:0:0 | & | -| main.rs:1794:13:1794:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1794:13:1794:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1794:13:1794:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1794:23:1794:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1794:23:1794:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1795:13:1795:16 | self | | file://:0:0:0:0 | & | -| main.rs:1795:13:1795:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1795:13:1795:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1795:13:1795:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1795:23:1795:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1795:23:1795:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1801:16:1801:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1801:22:1801:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1801:41:1806:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1802:13:1805:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:20:1803:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:20:1803:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:20:1803:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1803:29:1803:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1803:29:1803:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:20:1804:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1804:20:1804:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:20:1804:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1804:29:1804:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1804:29:1804:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1810:23:1810:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1810:23:1810:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1810:34:1810:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1810:45:1813:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | -| main.rs:1811:13:1811:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1811:13:1811:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1811:13:1811:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1811:23:1811:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1811:23:1811:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1812:13:1812:16 | self | | file://:0:0:0:0 | & | -| main.rs:1812:13:1812:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1812:13:1812:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1812:13:1812:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1812:23:1812:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1812:23:1812:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1818:16:1818:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1818:22:1818:24 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1818:41:1823:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1819:13:1822:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:20:1820:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:20:1820:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1820:20:1820:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1820:29:1820:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1820:29:1820:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:20:1821:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1821:20:1821:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:20:1821:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1821:29:1821:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1821:29:1821:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1827:23:1827:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1827:23:1827:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1827:34:1827:36 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1827:45:1830:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1828:13:1828:16 | self | | file://:0:0:0:0 | & | -| main.rs:1828:13:1828:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1828:13:1828:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1828:13:1828:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1828:23:1828:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1828:23:1828:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:13:1829:16 | self | | file://:0:0:0:0 | & | -| main.rs:1829:13:1829:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1829:13:1829:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1829:13:1829:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1829:23:1829:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1829:23:1829:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1835:19:1835:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1835:25:1835:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1835:44:1840:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1836:13:1839:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:20:1837:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:20:1837:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:20:1837:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1837:29:1837:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1837:29:1837:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:20:1838:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1838:20:1838:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:20:1838:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1838:29:1838:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1838:29:1838:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1844:26:1844:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1844:26:1844:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1844:37:1844:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1844:48:1847:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | -| main.rs:1845:13:1845:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1845:13:1845:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1845:13:1845:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1845:23:1845:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1845:23:1845:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1846:13:1846:16 | self | | file://:0:0:0:0 | & | -| main.rs:1846:13:1846:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1846:13:1846:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1846:13:1846:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1846:23:1846:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1846:23:1846:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1852:18:1852:21 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1852:24:1852:26 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1852:43:1857:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1853:13:1856:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:20:1854:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:20:1854:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:20:1854:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:29:1854:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1854:29:1854:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:20:1855:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1855:20:1855:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:20:1855:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1855:29:1855:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1855:29:1855:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:25:1861:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1861:25:1861:33 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1861:36:1861:38 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1861:47:1864:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1862:13:1862:16 | self | | file://:0:0:0:0 | & | -| main.rs:1862:13:1862:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1862:13:1862:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1862:13:1862:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1862:23:1862:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1862:23:1862:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1863:13:1863:16 | self | | file://:0:0:0:0 | & | -| main.rs:1863:13:1863:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1863:13:1863:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1863:13:1863:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1863:23:1863:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1863:23:1863:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:19:1869:22 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1869:25:1869:27 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1869:44:1874:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1870:13:1873:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:20:1871:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:20:1871:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:20:1871:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:29:1871:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1871:29:1871:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:20:1872:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1872:20:1872:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:20:1872:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1872:29:1872:31 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1872:29:1872:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1878:26:1878:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1878:26:1878:34 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1878:37:1878:39 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1878:48:1881:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1879:13:1879:16 | self | | file://:0:0:0:0 | & | -| main.rs:1879:13:1879:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1879:13:1879:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:13:1879:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1879:23:1879:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1879:23:1879:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:16 | self | | file://:0:0:0:0 | & | -| main.rs:1880:13:1880:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1880:13:1880:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:13:1880:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1880:23:1880:25 | rhs | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1880:23:1880:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1886:16:1886:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1886:22:1886:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1886:40:1891:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1887:13:1890:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1888:20:1888:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1888:20:1888:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:20:1888:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:30:1888:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1889:20:1889:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1889:20:1889:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1889:20:1889:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1889:30:1889:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1895:23:1895:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1895:23:1895:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1895:34:1895:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1895:44:1898:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1896:13:1896:16 | self | | file://:0:0:0:0 | & | -| main.rs:1896:13:1896:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1896:13:1896:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1896:13:1896:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1896:24:1896:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1897:13:1897:16 | self | | file://:0:0:0:0 | & | -| main.rs:1897:13:1897:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1897:13:1897:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1897:13:1897:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1897:24:1897:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1903:16:1903:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1903:22:1903:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1903:40:1908:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1904:13:1907:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1905:20:1905:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1905:20:1905:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:20:1905:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:30:1905:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1906:20:1906:23 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1906:20:1906:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:20:1906:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1906:30:1906:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1912:23:1912:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1912:23:1912:31 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1912:34:1912:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1912:44:1915:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1913:13:1913:16 | self | | file://:0:0:0:0 | & | -| main.rs:1913:13:1913:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1913:13:1913:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:13:1913:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1913:24:1913:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1914:13:1914:16 | self | | file://:0:0:0:0 | & | -| main.rs:1914:13:1914:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1914:13:1914:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1914:13:1914:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1914:24:1914:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1920:16:1920:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1920:30:1925:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1921:13:1924:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1922:20:1922:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:21:1922:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1922:21:1922:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1923:20:1923:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1923:21:1923:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1923:21:1923:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1930:16:1930:19 | SelfParam | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1930:30:1935:9 | { ... } | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1931:13:1934:13 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1932:20:1932:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1932:21:1932:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1932:21:1932:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1933:20:1933:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1933:21:1933:24 | self | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1933:21:1933:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:15:1939:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1939:15:1939:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1939:22:1939:26 | other | | file://:0:0:0:0 | & | -| main.rs:1939:22:1939:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1939:44:1941:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:13:1940:16 | self | | file://:0:0:0:0 | & | -| main.rs:1940:13:1940:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:13:1940:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:13:1940:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:13:1940:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:23:1940:27 | other | | file://:0:0:0:0 | & | -| main.rs:1940:23:1940:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:23:1940:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:34:1940:37 | self | | file://:0:0:0:0 | & | -| main.rs:1940:34:1940:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:34:1940:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1940:34:1940:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1940:44:1940:48 | other | | file://:0:0:0:0 | & | -| main.rs:1940:44:1940:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1940:44:1940:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:15:1943:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1943:15:1943:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1943:22:1943:26 | other | | file://:0:0:0:0 | & | -| main.rs:1943:22:1943:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1943:44:1945:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:13:1944:16 | self | | file://:0:0:0:0 | & | -| main.rs:1944:13:1944:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:13:1944:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:13:1944:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:13:1944:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:23:1944:27 | other | | file://:0:0:0:0 | & | -| main.rs:1944:23:1944:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:23:1944:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:34:1944:37 | self | | file://:0:0:0:0 | & | -| main.rs:1944:34:1944:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:34:1944:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1944:34:1944:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1944:44:1944:48 | other | | file://:0:0:0:0 | & | -| main.rs:1944:44:1944:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1944:44:1944:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1949:24:1949:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1949:24:1949:28 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1949:31:1949:35 | other | | file://:0:0:0:0 | & | -| main.rs:1949:31:1949:35 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1949:75:1951:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1949:75:1951:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1950:13:1950:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1950:13:1950:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1950:14:1950:17 | self | | file://:0:0:0:0 | & | -| main.rs:1950:14:1950:17 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:14:1950:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:14:1950:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:23:1950:26 | self | | file://:0:0:0:0 | & | -| main.rs:1950:23:1950:26 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:23:1950:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:43:1950:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1950:43:1950:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:44:1950:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:45:1950:49 | other | | file://:0:0:0:0 | & | -| main.rs:1950:45:1950:49 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:45:1950:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:45:1950:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1950:55:1950:59 | other | | file://:0:0:0:0 | & | -| main.rs:1950:55:1950:59 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1950:55:1950:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1953:15:1953:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1953:15:1953:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1953:22:1953:26 | other | | file://:0:0:0:0 | & | -| main.rs:1953:22:1953:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1953:44:1955:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:13:1954:16 | self | | file://:0:0:0:0 | & | -| main.rs:1954:13:1954:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:13:1954:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:13:1954:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:13:1954:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:22:1954:26 | other | | file://:0:0:0:0 | & | -| main.rs:1954:22:1954:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:22:1954:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:33:1954:36 | self | | file://:0:0:0:0 | & | -| main.rs:1954:33:1954:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:33:1954:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:33:1954:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1954:42:1954:46 | other | | file://:0:0:0:0 | & | -| main.rs:1954:42:1954:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1954:42:1954:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1957:15:1957:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1957:15:1957:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1957:22:1957:26 | other | | file://:0:0:0:0 | & | -| main.rs:1957:22:1957:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1957:44:1959:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:13:1958:16 | self | | file://:0:0:0:0 | & | -| main.rs:1958:13:1958:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:13:1958:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:13:1958:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:13:1958:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:23:1958:27 | other | | file://:0:0:0:0 | & | -| main.rs:1958:23:1958:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:23:1958:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:34:1958:37 | self | | file://:0:0:0:0 | & | -| main.rs:1958:34:1958:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:34:1958:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1958:34:1958:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1958:44:1958:48 | other | | file://:0:0:0:0 | & | -| main.rs:1958:44:1958:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1958:44:1958:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1961:15:1961:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1961:15:1961:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1961:22:1961:26 | other | | file://:0:0:0:0 | & | -| main.rs:1961:22:1961:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1961:44:1963:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:13:1962:16 | self | | file://:0:0:0:0 | & | -| main.rs:1962:13:1962:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:13:1962:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:13:1962:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:13:1962:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:22:1962:26 | other | | file://:0:0:0:0 | & | -| main.rs:1962:22:1962:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:22:1962:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:33:1962:36 | self | | file://:0:0:0:0 | & | -| main.rs:1962:33:1962:36 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:33:1962:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:33:1962:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1962:42:1962:46 | other | | file://:0:0:0:0 | & | -| main.rs:1962:42:1962:46 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1962:42:1962:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1965:15:1965:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1965:15:1965:19 | SelfParam | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1965:22:1965:26 | other | | file://:0:0:0:0 | & | -| main.rs:1965:22:1965:26 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1965:44:1967:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:13:1966:16 | self | | file://:0:0:0:0 | & | -| main.rs:1966:13:1966:16 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:13:1966:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:13:1966:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:13:1966:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:23:1966:27 | other | | file://:0:0:0:0 | & | -| main.rs:1966:23:1966:27 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:23:1966:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:34:1966:37 | self | | file://:0:0:0:0 | & | -| main.rs:1966:34:1966:37 | self | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:34:1966:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1966:34:1966:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1966:44:1966:48 | other | | file://:0:0:0:0 | & | -| main.rs:1966:44:1966:48 | other | &T | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:1966:44:1966:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1970:26:1970:26 | a | | main.rs:1970:18:1970:23 | T | -| main.rs:1970:32:1970:32 | b | | main.rs:1970:18:1970:23 | T | -| main.rs:1970:51:1972:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:1971:9:1971:9 | a | | main.rs:1970:18:1970:23 | T | -| main.rs:1971:9:1971:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:1971:13:1971:13 | b | | main.rs:1970:18:1970:23 | T | -| main.rs:1974:16:2105:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1978:13:1978:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:22:1978:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:23:1978:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1978:23:1978:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1978:31:1978:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:13:1979:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:22:1979:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:23:1979:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:23:1979:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1979:31:1979:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:13:1980:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:22:1980:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:23:1980:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1980:23:1980:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1980:30:1980:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:13:1981:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:22:1981:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:23:1981:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1981:23:1981:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1981:31:1981:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:13:1982:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:22:1982:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:23:1982:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:23:1982:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1982:30:1982:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:13:1983:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:22:1983:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:23:1983:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:23:1983:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:32:1983:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:13:1986:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:23:1986:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:23:1986:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:31:1986:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:13:1987:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:23:1987:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:23:1987:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:31:1987:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:13:1988:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:23:1988:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:23:1988:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:31:1988:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:13:1989:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:23:1989:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:23:1989:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:31:1989:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:13:1990:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:23:1990:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:23:1990:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:31:1990:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:39:1991:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:45:1991:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:17:1994:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:34:1994:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:9:1995:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:9:1995:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1995:27:1995:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1997:17:1997:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1997:34:1997:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:9:1998:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1998:9:1998:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1998:27:1998:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:17:2000:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2000:34:2000:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2001:9:2001:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2001:9:2001:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2001:27:2001:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2003:17:2003:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2003:34:2003:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2004:9:2004:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2004:9:2004:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2004:27:2004:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2006:17:2006:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2006:34:2006:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:9:2007:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:9:2007:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2007:27:2007:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:13:2010:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:26:2010:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:26:2010:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:34:2010:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:13:2011:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:25:2011:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:25:2011:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:33:2011:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:13:2012:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:26:2012:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:26:2012:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:34:2012:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:13:2013:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:23:2013:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:23:2013:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2013:32:2013:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:13:2014:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:23:2014:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:23:2014:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2014:32:2014:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:17:2017:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:37:2017:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:9:2018:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:9:2018:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2018:30:2018:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:17:2020:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:36:2020:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2021:9:2021:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2021:9:2021:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2021:29:2021:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:17:2023:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:37:2023:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2024:30:2024:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:17:2026:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:34:2026:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2027:28:2027:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:17:2029:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:34:2029:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2030:28:2030:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:13:2032:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:23:2032:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:24:2032:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:13:2033:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:23:2033:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:24:2033:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:13:2036:14 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2036:18:2036:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2036:28:2036:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2036:34:2036:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2037:13:2037:14 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2037:18:2037:36 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2037:28:2037:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2037:34:2037:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:13:2040:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2040:23:2040:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2040:23:2040:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2040:29:2040:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2041:13:2041:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2041:23:2041:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2041:23:2041:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2041:29:2041:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2042:13:2042:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2042:23:2042:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2042:23:2042:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2042:28:2042:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2043:13:2043:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2043:23:2043:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2043:23:2043:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2043:29:2043:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2044:13:2044:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2044:23:2044:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2044:23:2044:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2044:28:2044:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2045:13:2045:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2045:23:2045:24 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2045:23:2045:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2045:29:2045:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:13:2048:20 | vec2_add | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:24:2048:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:24:2048:30 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2048:29:2048:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:13:2049:20 | vec2_sub | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:24:2049:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:24:2049:30 | ... - ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2049:29:2049:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:13:2050:20 | vec2_mul | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:24:2050:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:24:2050:30 | ... * ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2050:29:2050:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:13:2051:20 | vec2_div | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:24:2051:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:24:2051:30 | ... / ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2051:29:2051:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:13:2052:20 | vec2_rem | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:24:2052:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:24:2052:30 | ... % ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2052:29:2052:30 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2055:17:2055:31 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2055:35:2055:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2056:9:2056:23 | vec2_add_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2056:9:2056:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2056:28:2056:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2058:17:2058:31 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2058:35:2058:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2059:9:2059:23 | vec2_sub_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2059:9:2059:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2059:28:2059:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2061:17:2061:31 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2061:35:2061:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2062:9:2062:23 | vec2_mul_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2062:9:2062:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2062:28:2062:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2064:17:2064:31 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2064:35:2064:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2065:9:2065:23 | vec2_div_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2065:9:2065:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2065:28:2065:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2067:17:2067:31 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2067:35:2067:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2068:9:2068:23 | vec2_rem_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2068:9:2068:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2068:28:2068:29 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:13:2071:23 | vec2_bitand | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:27:2071:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:27:2071:33 | ... & ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2071:32:2071:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:13:2072:22 | vec2_bitor | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:26:2072:27 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:26:2072:32 | ... \| ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2072:31:2072:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:13:2073:23 | vec2_bitxor | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:27:2073:28 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:27:2073:33 | ... ^ ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2073:32:2073:33 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:13:2074:20 | vec2_shl | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:24:2074:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:24:2074:33 | ... << ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2074:30:2074:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2075:13:2075:20 | vec2_shr | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:24:2075:25 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:24:2075:33 | ... >> ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2075:30:2075:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2078:17:2078:34 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2078:38:2078:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2079:9:2079:26 | vec2_bitand_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2079:9:2079:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2079:31:2079:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2081:17:2081:33 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2081:37:2081:38 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2082:9:2082:25 | vec2_bitor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2082:9:2082:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2082:30:2082:31 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2084:17:2084:34 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2084:38:2084:39 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2085:9:2085:26 | vec2_bitxor_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2085:9:2085:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2085:31:2085:32 | v2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2087:17:2087:31 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2087:35:2087:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2088:9:2088:23 | vec2_shl_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2088:9:2088:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2088:29:2088:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2090:17:2090:31 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2090:35:2090:36 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2091:9:2091:23 | vec2_shr_assign | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2091:9:2091:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2091:29:2091:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2094:13:2094:20 | vec2_neg | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2094:24:2094:26 | - ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2094:25:2094:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:13:2095:20 | vec2_not | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:24:2095:26 | ! ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2095:25:2095:26 | v1 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2098:13:2098:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2098:28:2098:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:13:2099:26 | vec2_zero_plus | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:30:2099:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:30:2099:63 | ... + ... | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:40:2099:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:46:2099:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:52:2099:63 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2103:13:2103:24 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2103:28:2103:45 | ...::default(...) | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2104:13:2104:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2104:30:2104:48 | Vec2 {...} | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2104:30:2104:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2104:40:2104:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2104:46:2104:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2104:53:2104:64 | default_vec2 | | main.rs:1733:5:1738:5 | Vec2 | -| main.rs:2114:18:2114:21 | SelfParam | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2114:24:2114:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2117:25:2119:5 | { ... } | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2118:9:2118:10 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2121:41:2123:5 | { ... } | | main.rs:2121:16:2121:39 | impl ... | -| main.rs:2122:9:2122:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2122:9:2122:20 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2122:17:2122:18 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2125:41:2127:5 | { ... } | | main.rs:2125:16:2125:39 | impl ... | -| main.rs:2126:9:2126:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2126:9:2126:16 | { ... } | Output | file://:0:0:0:0 | () | -| main.rs:2135:13:2135:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2135:13:2135:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2135:13:2135:42 | SelfParam | Ptr.&T | main.rs:2129:5:2129:14 | S2 | -| main.rs:2136:13:2136:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2136:13:2136:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2137:44:2139:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2137:44:2139:9 | { ... } | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2138:13:2138:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2138:13:2138:38 | ...::Ready(...) | T | main.rs:2111:5:2111:14 | S1 | -| main.rs:2138:36:2138:37 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2142:41:2144:5 | { ... } | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2143:9:2143:10 | S2 | | main.rs:2129:5:2129:14 | S2 | -| main.rs:2143:9:2143:10 | S2 | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2146:22:2154:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2147:9:2147:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2147:9:2147:12 | f1(...) | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:9:2147:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2147:9:2147:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2148:9:2148:12 | f2(...) | | main.rs:2121:16:2121:39 | impl ... | -| main.rs:2148:9:2148:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2148:9:2148:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2149:9:2149:12 | f3(...) | | main.rs:2125:16:2125:39 | impl ... | -| main.rs:2149:9:2149:18 | await ... | | file://:0:0:0:0 | () | -| main.rs:2150:9:2150:12 | f4(...) | | main.rs:2142:16:2142:39 | impl ... | -| main.rs:2150:9:2150:18 | await ... | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2150:9:2150:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2151:9:2151:10 | S2 | | main.rs:2129:5:2129:14 | S2 | -| main.rs:2151:9:2151:16 | await S2 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2151:9:2151:20 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2152:13:2152:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2152:13:2152:13 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2152:17:2152:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2152:17:2152:28 | { ... } | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2152:25:2152:26 | S1 | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2153:9:2153:9 | b | Output | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:15 | await b | | main.rs:2111:5:2111:14 | S1 | -| main.rs:2153:9:2153:19 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2164:15:2164:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2164:15:2164:19 | SelfParam | &T | main.rs:2163:5:2165:5 | Self [trait Trait1] | -| main.rs:2164:22:2164:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2168:15:2168:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2168:15:2168:19 | SelfParam | &T | main.rs:2167:5:2169:5 | Self [trait Trait2] | -| main.rs:2168:22:2168:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2172:15:2172:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2172:15:2172:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2172:22:2172:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2176:15:2176:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2176:15:2176:19 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2176:22:2176:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2179:37:2181:5 | { ... } | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2180:9:2180:10 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2180:9:2180:10 | S1 | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2184:18:2184:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2184:18:2184:22 | SelfParam | &T | main.rs:2183:5:2185:5 | Self [trait MyTrait] | -| main.rs:2188:18:2188:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2188:18:2188:22 | SelfParam | &T | main.rs:2158:5:2159:14 | S1 | -| main.rs:2188:31:2190:9 | { ... } | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2189:13:2189:14 | S2 | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2194:18:2194:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2194:18:2194:22 | SelfParam | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2194:18:2194:22 | SelfParam | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2194:30:2197:9 | { ... } | | main.rs:2193:10:2193:17 | T | -| main.rs:2195:17:2195:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2195:17:2195:21 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:17:2195:21 | S3(...) | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:17:2195:21 | S3(...) | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2195:25:2195:28 | self | | file://:0:0:0:0 | & | -| main.rs:2195:25:2195:28 | self | &T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2195:25:2195:28 | self | &T.T3 | main.rs:2193:10:2193:17 | T | -| main.rs:2196:13:2196:21 | t.clone() | | main.rs:2193:10:2193:17 | T | -| main.rs:2200:45:2202:5 | { ... } | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2201:9:2201:10 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2201:9:2201:10 | S1 | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2204:41:2204:41 | t | | main.rs:2204:26:2204:38 | B | -| main.rs:2204:52:2206:5 | { ... } | | main.rs:2204:23:2204:23 | A | -| main.rs:2205:9:2205:9 | t | | main.rs:2204:26:2204:38 | B | -| main.rs:2205:9:2205:17 | t.get_a() | | main.rs:2204:23:2204:23 | A | -| main.rs:2208:34:2208:34 | x | | main.rs:2208:24:2208:31 | T | -| main.rs:2208:59:2210:5 | { ... } | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2208:59:2210:5 | { ... } | impl(T) | main.rs:2208:24:2208:31 | T | -| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2209:9:2209:13 | S3(...) | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2209:9:2209:13 | S3(...) | T3 | main.rs:2208:24:2208:31 | T | -| main.rs:2209:9:2209:13 | S3(...) | impl(T) | main.rs:2208:24:2208:31 | T | -| main.rs:2209:12:2209:12 | x | | main.rs:2208:24:2208:31 | T | -| main.rs:2212:34:2212:34 | x | | main.rs:2212:24:2212:31 | T | -| main.rs:2212:67:2214:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2212:67:2214:5 | { ... } | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2212:67:2214:5 | { ... } | T.impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:9:2213:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2161:5:2161:22 | S3 | -| main.rs:2213:9:2213:19 | Some(...) | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2213:9:2213:19 | Some(...) | T.T3 | main.rs:2212:24:2212:31 | T | -| main.rs:2213:9:2213:19 | Some(...) | T.impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2213:14:2213:18 | S3(...) | | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2213:14:2213:18 | S3(...) | T3 | main.rs:2212:24:2212:31 | T | -| main.rs:2213:14:2213:18 | S3(...) | impl(T) | main.rs:2212:24:2212:31 | T | -| main.rs:2213:17:2213:17 | x | | main.rs:2212:24:2212:31 | T | -| main.rs:2216:34:2216:34 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2216:78:2218:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2216:78:2218:5 | { ... } | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2216:78:2218:5 | { ... } | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2216:78:2218:5 | { ... } | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2216:78:2218:5 | { ... } | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2).T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 0(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2).T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:9:2217:30 | TupleExpr | 1(2).impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:10:2217:22 | S3(...) | | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2217:10:2217:22 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:10:2217:22 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:13:2217:13 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2217:13:2217:21 | x.clone() | | main.rs:2216:24:2216:31 | T | -| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2161:5:2161:22 | S3 | -| main.rs:2217:25:2217:29 | S3(...) | | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2217:25:2217:29 | S3(...) | T3 | main.rs:2216:24:2216:31 | T | -| main.rs:2217:25:2217:29 | S3(...) | impl(T) | main.rs:2216:24:2216:31 | T | -| main.rs:2217:28:2217:28 | x | | main.rs:2216:24:2216:31 | T | -| main.rs:2220:26:2220:26 | t | | main.rs:2220:29:2220:43 | impl ... | -| main.rs:2220:51:2222:5 | { ... } | | main.rs:2220:23:2220:23 | A | -| main.rs:2221:9:2221:9 | t | | main.rs:2220:29:2220:43 | impl ... | -| main.rs:2221:9:2221:17 | t.get_a() | | main.rs:2220:23:2220:23 | A | -| main.rs:2224:16:2238:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2225:13:2225:13 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2225:17:2225:20 | f1(...) | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2226:9:2226:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2226:9:2226:14 | x.f1() | | file://:0:0:0:0 | () | -| main.rs:2227:9:2227:9 | x | | main.rs:2179:16:2179:35 | impl ... + ... | -| main.rs:2227:9:2227:14 | x.f2() | | file://:0:0:0:0 | () | -| main.rs:2228:13:2228:13 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2228:17:2228:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2229:13:2229:13 | b | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2229:17:2229:33 | uses_my_trait1(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2229:32:2229:32 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2230:13:2230:13 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2230:17:2230:32 | get_a_my_trait(...) | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2231:13:2231:13 | c | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2231:17:2231:33 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2231:32:2231:32 | a | | main.rs:2200:28:2200:43 | impl ... | -| main.rs:2232:13:2232:13 | d | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2232:17:2232:34 | uses_my_trait2(...) | | main.rs:2160:5:2160:14 | S2 | -| main.rs:2232:32:2232:33 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:13:2233:13 | e | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | | main.rs:2208:43:2208:57 | impl ... | -| main.rs:2233:17:2233:35 | get_a_my_trait2(...) | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:17:2233:43 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2233:33:2233:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:13:2236:13 | f | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2236:17:2236:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:44 | ... .unwrap() | | main.rs:2212:50:2212:64 | impl ... | -| main.rs:2236:17:2236:44 | ... .unwrap() | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:17:2236:52 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2236:33:2236:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:13:2237:13 | g | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2) | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2) | main.rs:2216:61:2216:75 | impl ... | -| main.rs:2237:17:2237:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:37 | ... .0 | | main.rs:2216:44:2216:58 | impl ... | -| main.rs:2237:17:2237:37 | ... .0 | impl(T) | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:17:2237:45 | ... .get_a() | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2237:33:2237:34 | S1 | | main.rs:2158:5:2159:14 | S1 | -| main.rs:2248:16:2248:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2248:16:2248:20 | SelfParam | &T | main.rs:2244:5:2245:13 | S | -| main.rs:2248:31:2250:9 | { ... } | | main.rs:2244:5:2245:13 | S | -| main.rs:2249:13:2249:13 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2259:26:2261:9 | { ... } | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2259:26:2261:9 | { ... } | T | main.rs:2258:10:2258:10 | T | -| main.rs:2260:13:2260:38 | MyVec {...} | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2260:13:2260:38 | MyVec {...} | T | main.rs:2258:10:2258:10 | T | -| main.rs:2260:27:2260:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2260:27:2260:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2260:27:2260:36 | ...::new(...) | T | main.rs:2258:10:2258:10 | T | -| main.rs:2263:17:2263:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2263:17:2263:25 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2263:17:2263:25 | SelfParam | &T.T | main.rs:2258:10:2258:10 | T | -| main.rs:2263:28:2263:32 | value | | main.rs:2258:10:2258:10 | T | -| main.rs:2263:38:2265:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2264:13:2264:16 | self | | file://:0:0:0:0 | & | -| main.rs:2264:13:2264:16 | self | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2264:13:2264:16 | self | &T.T | main.rs:2258:10:2258:10 | T | -| main.rs:2264:13:2264:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2264:13:2264:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2264:13:2264:21 | self.data | T | main.rs:2258:10:2258:10 | T | -| main.rs:2264:13:2264:33 | ... .push(...) | | file://:0:0:0:0 | () | -| main.rs:2264:28:2264:32 | value | | main.rs:2258:10:2258:10 | T | -| main.rs:2272:18:2272:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2272:18:2272:22 | SelfParam | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2272:18:2272:22 | SelfParam | &T.T | main.rs:2268:10:2268:10 | T | -| main.rs:2272:25:2272:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2272:56:2274:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2272:56:2274:9 | { ... } | &T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:13:2273:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2273:13:2273:29 | &... | &T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:17 | self | | file://:0:0:0:0 | & | -| main.rs:2273:14:2273:17 | self | &T | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2273:14:2273:17 | self | &T.T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2273:14:2273:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2273:14:2273:22 | self.data | T | main.rs:2268:10:2268:10 | T | -| main.rs:2273:14:2273:29 | ...[index] | | main.rs:2268:10:2268:10 | T | -| main.rs:2273:24:2273:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2277:22:2277:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2277:22:2277:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2277:22:2277:26 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2277:35:2279:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2278:13:2278:13 | x | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2278:17:2278:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2278:17:2278:21 | slice | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:24 | slice[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:17:2278:30 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2278:23:2278:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2281:37:2281:37 | a | | main.rs:2281:20:2281:34 | T | -| main.rs:2281:43:2281:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2284:5:2286:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2285:9:2285:9 | a | | main.rs:2281:20:2281:34 | T | -| main.rs:2285:9:2285:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2285:11:2285:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2288:16:2299:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2289:17:2289:19 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2289:17:2289:19 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2289:23:2289:34 | ...::new(...) | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2289:23:2289:34 | ...::new(...) | T | main.rs:2244:5:2245:13 | S | -| main.rs:2290:9:2290:11 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2290:9:2290:11 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2290:9:2290:19 | vec.push(...) | | file://:0:0:0:0 | () | -| main.rs:2290:18:2290:18 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:11 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2291:9:2291:11 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:14 | vec[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:9:2291:20 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2291:13:2291:13 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2293:13:2293:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2293:13:2293:14 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2293:21:2293:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2293:26:2293:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2293:26:2293:28 | [...] | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2293:27:2293:27 | S | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:13:2294:13 | x | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2294:17:2294:18 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:21 | xs[0] | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:17:2294:27 | ... .foo() | | main.rs:2244:5:2245:13 | S | -| main.rs:2294:20:2294:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:29:2296:31 | vec | | main.rs:2253:5:2256:5 | MyVec | -| main.rs:2296:29:2296:31 | vec | T | main.rs:2244:5:2245:13 | S | -| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2296:34:2296:34 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2298:9:2298:26 | analyze_slice(...) | | file://:0:0:0:0 | () | -| main.rs:2298:23:2298:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2298:23:2298:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2298:23:2298:25 | &xs | &T.[T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2298:23:2298:25 | &xs | &T.[T] | main.rs:2244:5:2245:13 | S | -| main.rs:2298:24:2298:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2298:24:2298:25 | xs | [T;...] | main.rs:2244:5:2245:13 | S | -| main.rs:2303:16:2305:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2304:13:2304:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2304:17:2304:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2304:25:2304:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2304:25:2304:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2304:25:2304:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2304:25:2304:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2304:25:2304:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2304:38:2304:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2304:38:2304:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2313:19:2313:22 | SelfParam | | main.rs:2309:5:2314:5 | Self [trait MyAdd] | -| main.rs:2313:25:2313:27 | rhs | | main.rs:2309:17:2309:26 | Rhs | -| main.rs:2320:19:2320:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2320:25:2320:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2320:45:2322:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2321:13:2321:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:19:2329:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:25:2329:29 | value | | file://:0:0:0:0 | & | -| main.rs:2329:25:2329:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2329:46:2331:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2330:13:2330:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2330:14:2330:18 | value | | file://:0:0:0:0 | & | -| main.rs:2330:14:2330:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2338:19:2338:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2338:25:2338:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2338:46:2344:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:13:2343:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2339:16:2339:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2339:22:2341:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2340:17:2340:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2341:20:2343:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:17:2342:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2353:19:2353:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:19:2353:22 | SelfParam | T | main.rs:2349:10:2349:17 | T | -| main.rs:2353:25:2353:29 | other | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:25:2353:29 | other | T | main.rs:2349:10:2349:17 | T | -| main.rs:2353:54:2355:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2353:54:2355:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:13:2354:39 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:13:2354:39 | S(...) | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:15:2354:22 | (...) | | main.rs:2349:10:2349:17 | T | -| main.rs:2354:15:2354:38 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | -| main.rs:2354:16:2354:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:16:2354:19 | self | T | main.rs:2349:10:2349:17 | T | -| main.rs:2354:16:2354:21 | self.0 | | main.rs:2349:10:2349:17 | T | -| main.rs:2354:31:2354:35 | other | | main.rs:2347:5:2347:19 | S | -| main.rs:2354:31:2354:35 | other | T | main.rs:2349:10:2349:17 | T | -| main.rs:2354:31:2354:37 | other.0 | | main.rs:2349:10:2349:17 | T | -| main.rs:2362:19:2362:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2362:19:2362:22 | SelfParam | T | main.rs:2358:10:2358:17 | T | -| main.rs:2362:25:2362:29 | other | | main.rs:2358:10:2358:17 | T | -| main.rs:2362:51:2364:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2362:51:2364:9 | { ... } | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:13:2363:37 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2363:13:2363:37 | S(...) | T | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:15:2363:22 | (...) | | main.rs:2358:10:2358:17 | T | -| main.rs:2363:15:2363:36 | ... .my_add(...) | | main.rs:2310:9:2310:20 | Output | -| main.rs:2363:16:2363:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2363:16:2363:19 | self | T | main.rs:2358:10:2358:17 | T | -| main.rs:2363:16:2363:21 | self.0 | | main.rs:2358:10:2358:17 | T | -| main.rs:2363:31:2363:35 | other | | main.rs:2358:10:2358:17 | T | -| main.rs:2374:19:2374:22 | SelfParam | | main.rs:2347:5:2347:19 | S | -| main.rs:2374:19:2374:22 | SelfParam | T | main.rs:2367:14:2367:14 | T | -| main.rs:2374:25:2374:29 | other | | file://:0:0:0:0 | & | -| main.rs:2374:25:2374:29 | other | &T | main.rs:2367:14:2367:14 | T | -| main.rs:2374:55:2376:9 | { ... } | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:13:2375:37 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:15:2375:22 | (...) | | main.rs:2367:14:2367:14 | T | -| main.rs:2375:16:2375:19 | self | | main.rs:2347:5:2347:19 | S | -| main.rs:2375:16:2375:19 | self | T | main.rs:2367:14:2367:14 | T | -| main.rs:2375:16:2375:21 | self.0 | | main.rs:2367:14:2367:14 | T | -| main.rs:2375:31:2375:35 | other | | file://:0:0:0:0 | & | -| main.rs:2375:31:2375:35 | other | &T | main.rs:2367:14:2367:14 | T | -| main.rs:2381:20:2381:24 | value | | main.rs:2379:18:2379:18 | T | -| main.rs:2386:20:2386:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2386:40:2388:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2387:13:2387:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2393:20:2393:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2393:41:2399:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:13:2398:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2394:16:2394:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:22:2396:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2395:17:2395:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2396:20:2398:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2397:17:2397:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2404:21:2404:25 | value | | main.rs:2402:19:2402:19 | T | -| main.rs:2404:31:2404:31 | x | | main.rs:2402:5:2405:5 | Self [trait MyFrom2] | -| main.rs:2409:21:2409:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2409:33:2409:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2409:48:2411:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2410:13:2410:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:21:2416:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2416:34:2416:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:49:2422:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2417:13:2421:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2417:16:2417:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2417:22:2419:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:17:2418:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2419:20:2421:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:17:2420:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2427:15:2427:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | -| main.rs:2430:15:2430:15 | x | | main.rs:2425:5:2431:5 | Self [trait MySelfTrait] | -| main.rs:2435:15:2435:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2435:31:2437:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:13:2436:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2436:17:2436:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2440:15:2440:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2440:32:2442:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:13:2441:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:13:2441:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2441:17:2441:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2447:15:2447:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2447:31:2449:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2448:13:2448:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2452:15:2452:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2452:32:2454:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2453:13:2453:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2457:16:2482:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2458:13:2458:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:22:2458:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:9:2459:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:9:2459:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:18:2459:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:9:2460:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:18:2460:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2460:18:2460:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2460:19:2460:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:9:2461:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:9:2461:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2461:18:2461:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2463:9:2463:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:9:2463:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:9:2463:31 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:11:2463:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:24:2463:30 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2463:24:2463:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2463:26:2463:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:9:2464:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2464:9:2464:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:11:2464:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:24:2464:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:9:2465:15 | S(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2465:9:2465:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:9:2465:29 | ... .my_add(...) | | main.rs:2347:5:2347:19 | S | -| main.rs:2465:11:2465:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:24:2465:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2465:24:2465:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:25:2465:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:13:2467:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:17:2467:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2467:30:2467:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:13:2468:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:17:2468:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2468:30:2468:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2469:13:2469:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:22:2469:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:38:2469:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:9:2470:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2470:23:2470:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:30:2470:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2471:9:2471:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2471:23:2471:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2471:29:2471:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2472:9:2472:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2472:27:2472:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2472:34:2472:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:9:2474:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2474:17:2474:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:9:2475:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2475:17:2475:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2476:9:2476:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2476:18:2476:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2477:9:2477:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2477:18:2477:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2478:9:2478:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2478:25:2478:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2479:9:2479:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2479:25:2479:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2480:9:2480:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2480:25:2480:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2481:9:2481:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2481:25:2481:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2489:26:2491:9 | { ... } | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2490:13:2490:25 | MyCallable {...} | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2493:17:2493:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2493:17:2493:21 | SelfParam | &T | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2493:31:2495:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2494:13:2494:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2498:16:2605:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2501:9:2501:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2501:13:2501:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:18:2501:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2501:18:2501:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:19:2501:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:22:2501:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:25:2501:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2501:28:2501:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2502:9:2502:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2502:18:2502:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2502:18:2502:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:18:2502:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2502:19:2502:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:22:2502:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:25:2502:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:32:2502:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2502:32:2502:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2502:40:2502:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2502:43:2502:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2503:9:2503:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2503:13:2503:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:18:2503:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2503:18:2503:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:18:2503:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2503:18:2503:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:19:2503:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:22:2503:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:25:2503:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2503:40:2503:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2505:13:2505:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:13:2505:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:21:2505:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:21:2505:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:22:2505:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:27:2505:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2505:30:2505:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:9:2506:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:13:2506:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:18:2506:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2506:18:2506:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2506:24:2506:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2508:13:2508:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2508:13:2508:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:21:2508:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2508:21:2508:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:22:2508:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2508:28:2508:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2509:9:2509:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2509:13:2509:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2509:18:2509:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2509:18:2509:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2509:24:2509:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2511:13:2511:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2511:13:2511:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:26:2511:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:31:2511:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:31:2511:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:32:2511:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:35:2511:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2511:38:2511:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:9:2512:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2512:13:2512:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:18:2512:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2512:18:2512:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2512:24:2512:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2514:13:2514:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2514:13:2514:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:26:2514:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:31:2514:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:31:2514:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2514:32:2514:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2514:35:2514:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2515:9:2515:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2515:13:2515:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2515:18:2515:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2515:18:2515:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2515:24:2515:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2517:17:2517:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2517:17:2517:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2517:17:2517:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2517:28:2517:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2517:28:2517:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2517:28:2517:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2517:29:2517:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2517:29:2517:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2517:36:2517:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2517:36:2517:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2517:43:2517:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2517:43:2517:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2518:9:2518:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2518:13:2518:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2518:13:2518:13 | s | | file://:0:0:0:0 | & | -| main.rs:2518:13:2518:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2518:13:2518:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:18:2518:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2518:18:2518:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2518:18:2518:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:19:2518:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2518:19:2518:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2518:19:2518:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2518:28:2518:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2519:9:2519:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2519:13:2519:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2519:13:2519:13 | s | | file://:0:0:0:0 | & | -| main.rs:2519:13:2519:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2519:13:2519:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:18:2519:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2519:18:2519:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2519:18:2519:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:23:2519:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2519:23:2519:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2519:23:2519:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2519:32:2519:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2520:9:2520:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2520:13:2520:13 | s | | file://:0:0:0:0 | & | -| main.rs:2520:13:2520:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2520:18:2520:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2520:18:2520:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2520:18:2520:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2520:27:2520:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2522:13:2522:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2522:13:2522:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2523:9:2527:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2523:9:2527:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2524:13:2524:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2524:26:2524:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2524:26:2524:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2525:13:2525:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2525:26:2525:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2525:26:2525:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2526:13:2526:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2526:26:2526:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2526:26:2526:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2528:9:2528:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2528:13:2528:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2528:18:2528:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2528:18:2528:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2528:27:2528:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2530:13:2530:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2530:13:2530:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2530:13:2530:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2531:9:2535:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2531:9:2535:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2531:9:2535:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2531:10:2535:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2531:10:2535:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2532:13:2532:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2532:26:2532:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2532:26:2532:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2533:13:2533:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2533:26:2533:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2533:26:2533:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2534:13:2534:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2534:26:2534:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2534:26:2534:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2536:9:2536:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2536:13:2536:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2536:13:2536:13 | s | | file://:0:0:0:0 | & | -| main.rs:2536:13:2536:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2536:18:2536:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2536:18:2536:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2536:18:2536:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2536:27:2536:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2538:13:2538:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2538:13:2538:21 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:25:2538:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2538:25:2538:81 | [...] | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:26:2538:42 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:45:2538:61 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2538:64:2538:80 | ...::new(...) | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2539:9:2543:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2539:13:2539:13 | c | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2540:12:2540:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2540:12:2540:20 | callables | [T;...] | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2541:9:2543:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2542:17:2542:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2542:26:2542:26 | c | | main.rs:2486:5:2486:24 | MyCallable | -| main.rs:2542:26:2542:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2547:9:2547:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2547:13:2547:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:18:2547:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:18:2547:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2547:18:2547:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:21:2547:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2547:24:2547:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:9:2548:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:13:2548:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:13:2548:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:18:2548:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2548:18:2548:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:18:2548:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:19:2548:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:19:2548:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:19:2548:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2548:24:2548:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2548:28:2548:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2549:13:2549:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2549:13:2549:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:21:2549:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:21:2549:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2549:21:2549:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2549:24:2549:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:9:2550:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2550:13:2550:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:18:2550:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2550:18:2550:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2550:24:2550:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2551:13:2551:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2551:26:2551:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2552:9:2552:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2552:13:2552:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2552:18:2552:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2552:19:2552:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2552:19:2552:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:20:2552:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:26:2552:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:32:2552:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2552:38:2552:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2552:50:2552:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2554:13:2554:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2554:13:2554:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2555:9:2558:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2555:9:2558:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2556:20:2556:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2557:18:2557:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:9:2559:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2559:13:2559:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:18:2559:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2559:18:2559:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2559:25:2559:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2563:26:2563:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2563:29:2563:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2563:32:2563:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2564:9:2564:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2564:24:2564:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2566:13:2566:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2566:13:2566:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2566:13:2566:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:32:2566:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2566:32:2566:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:32:2566:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2566:32:2566:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2566:32:2566:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:33:2566:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2566:39:2566:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2566:42:2566:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:9:2567:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2567:13:2567:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2567:13:2567:13 | u | | file://:0:0:0:0 | & | -| main.rs:2567:18:2567:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2567:18:2567:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2567:18:2567:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2567:25:2567:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2569:22:2569:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2569:22:2569:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2569:23:2569:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2569:29:2569:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2569:32:2569:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2570:9:2570:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2570:25:2570:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2572:13:2572:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2572:13:2572:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:13:2572:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:21:2572:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2572:21:2572:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:21:2572:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:31:2572:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:31:2572:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:32:2572:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2572:38:2572:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2572:41:2572:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:9:2573:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:13:2573:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2573:13:2573:13 | u | | file://:0:0:0:0 | & | -| main.rs:2573:18:2573:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2573:18:2573:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:18:2573:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2573:24:2573:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2575:13:2575:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2575:13:2575:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2575:13:2575:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2575:13:2575:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:32:2575:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2575:32:2575:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:32:2575:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2575:32:2575:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2575:32:2575:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2575:32:2575:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:33:2575:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2575:39:2575:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2575:42:2575:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1540:18:1540:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1540:18:1540:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1540:18:1540:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1540:18:1540:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1540:26:1540:30 | (...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1540:26:1540:30 | (...) | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:26:1540:35 | ... .m1() | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:27:1540:29 | * ... | | main.rs:1470:5:1471:19 | S | +| main.rs:1540:27:1540:29 | * ... | T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:28:1540:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1540:28:1540:29 | x6 | &T | main.rs:1470:5:1471:19 | S | +| main.rs:1540:28:1540:29 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:13:1542:14 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1542:13:1542:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1542:13:1542:14 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:18:1542:23 | S(...) | | main.rs:1470:5:1471:19 | S | +| main.rs:1542:18:1542:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1542:18:1542:23 | S(...) | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:20:1542:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1542:20:1542:22 | &S2 | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:21:1542:22 | S2 | | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:13:1545:13 | t | | file://:0:0:0:0 | & | +| main.rs:1545:13:1545:13 | t | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:18 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1545:17:1545:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1545:17:1545:18 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1545:17:1545:23 | x7.m1() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1546:18:1546:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1546:18:1546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1546:18:1546:27 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1546:18:1546:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1546:18:1546:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1546:18:1546:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1546:26:1546:27 | x7 | | main.rs:1470:5:1471:19 | S | +| main.rs:1546:26:1546:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1546:26:1546:27 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1548:13:1548:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1548:26:1548:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1548:26:1548:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1548:26:1548:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1552:13:1552:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1552:13:1552:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1552:17:1552:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1552:17:1552:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1552:17:1552:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1554:13:1554:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1554:13:1554:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:24:1554:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1554:24:1554:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:25:1554:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:13:1556:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:17:1556:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1556:17:1556:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1556:17:1556:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:18:1557:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1557:18:1557:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1557:18:1557:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1557:18:1557:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1557:18:1557:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1557:18:1557:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1557:26:1557:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:13:1560:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1560:13:1560:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:24:1560:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1560:24:1560:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:25:1560:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:13:1561:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1561:17:1561:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1561:17:1561:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1561:17:1561:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:18:1562:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1562:18:1562:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1562:18:1562:26 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1562:18:1562:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1562:18:1562:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1562:18:1562:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1562:26:1562:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1569:16:1569:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1569:16:1569:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:16:1572:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1572:16:1572:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:32:1574:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1572:32:1574:9 | { ... } | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:16 | self | | file://:0:0:0:0 | & | +| main.rs:1573:13:1573:16 | self | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1573:13:1573:22 | self.foo() | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1581:16:1581:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1581:16:1581:20 | SelfParam | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1581:36:1583:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1581:36:1583:9 | { ... } | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1582:13:1582:16 | self | | file://:0:0:0:0 | & | +| main.rs:1582:13:1582:16 | self | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1586:16:1589:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1587:13:1587:13 | x | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1587:17:1587:24 | MyStruct | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1588:9:1588:9 | x | | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1588:9:1588:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1588:9:1588:15 | x.bar() | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1598:16:1598:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1598:16:1598:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:16:1598:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1598:32:1600:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1598:32:1600:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:32:1600:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1599:13:1599:16 | self | | file://:0:0:0:0 | & | +| main.rs:1599:13:1599:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1599:13:1599:16 | self | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:16:1602:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1602:16:1602:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:16:1602:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:23:1602:23 | x | | file://:0:0:0:0 | & | +| main.rs:1602:23:1602:23 | x | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:23:1602:23 | x | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:42:1604:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1602:42:1604:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:42:1604:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1603:13:1603:16 | self | | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1603:13:1603:16 | self | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1607:16:1613:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1608:13:1608:13 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1608:13:1608:13 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1608:17:1608:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1608:17:1608:27 | MyStruct(...) | T | main.rs:1593:5:1593:13 | S | +| main.rs:1608:26:1608:26 | S | | main.rs:1593:5:1593:13 | S | +| main.rs:1609:9:1609:9 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1609:9:1609:9 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1609:9:1609:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1609:9:1609:15 | x.foo() | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1609:9:1609:15 | x.foo() | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:13:1610:13 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1610:13:1610:13 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:17:1610:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1610:17:1610:27 | MyStruct(...) | T | main.rs:1593:5:1593:13 | S | +| main.rs:1610:26:1610:26 | S | | main.rs:1593:5:1593:13 | S | +| main.rs:1612:9:1612:9 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:9:1612:9 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:9:1612:18 | x.bar(...) | | file://:0:0:0:0 | & | +| main.rs:1612:9:1612:18 | x.bar(...) | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:9:1612:18 | x.bar(...) | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:15:1612:17 | &... | | file://:0:0:0:0 | & | +| main.rs:1612:15:1612:17 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1612:15:1612:17 | &... | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:15:1612:17 | &... | &T.&T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:15:1612:17 | &... | &T.&T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:15:1612:17 | &... | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:16:1612:17 | &x | | file://:0:0:0:0 | & | +| main.rs:1612:16:1612:17 | &x | &T | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:16:1612:17 | &x | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:17:1612:17 | x | | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:17:1612:17 | x | T | main.rs:1593:5:1593:13 | S | +| main.rs:1623:17:1623:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1623:17:1623:25 | SelfParam | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1623:28:1625:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1624:13:1624:16 | self | | file://:0:0:0:0 | & | +| main.rs:1624:13:1624:16 | self | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:13:1624:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1624:13:1624:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1624:25:1624:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1624:26:1624:29 | self | | file://:0:0:0:0 | & | +| main.rs:1624:26:1624:29 | self | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:26:1624:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1631:15:1631:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1631:15:1631:19 | SelfParam | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1631:31:1633:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1631:31:1633:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:14:1632:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1632:14:1632:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1632:14:1632:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1632:14:1632:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:15:1632:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1632:15:1632:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1632:15:1632:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:16:1632:19 | self | | file://:0:0:0:0 | & | +| main.rs:1632:16:1632:19 | self | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1635:15:1635:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1635:15:1635:25 | SelfParam | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1635:37:1637:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1635:37:1637:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:14:1636:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1636:14:1636:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1636:14:1636:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1636:14:1636:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:15:1636:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1636:15:1636:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1636:15:1636:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:16:1636:19 | self | | file://:0:0:0:0 | & | +| main.rs:1636:16:1636:19 | self | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1639:15:1639:15 | x | | file://:0:0:0:0 | & | +| main.rs:1639:15:1639:15 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1639:34:1641:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1639:34:1641:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1640:13:1640:13 | x | | file://:0:0:0:0 | & | +| main.rs:1640:13:1640:13 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1643:15:1643:15 | x | | file://:0:0:0:0 | & | +| main.rs:1643:15:1643:15 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1643:34:1645:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1643:34:1645:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:14:1644:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1644:14:1644:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1644:14:1644:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1644:14:1644:16 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:15:1644:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1644:15:1644:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1644:15:1644:16 | &x | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:16:1644:16 | x | | file://:0:0:0:0 | & | +| main.rs:1644:16:1644:16 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1648:16:1661:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1649:13:1649:13 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1649:17:1649:20 | S {...} | | main.rs:1628:5:1628:13 | S | +| main.rs:1650:9:1650:9 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1650:9:1650:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1650:9:1650:14 | x.f1() | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1651:9:1651:9 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1651:9:1651:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1651:9:1651:14 | x.f2() | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1652:9:1652:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1652:9:1652:17 | ...::f3(...) | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1652:15:1652:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1652:15:1652:16 | &x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1652:16:1652:16 | x | | main.rs:1628:5:1628:13 | S | +| main.rs:1654:13:1654:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1654:17:1654:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1654:18:1654:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1654:18:1654:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:19:1654:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1654:19:1654:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1654:19:1654:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:20:1654:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1654:20:1654:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:21:1654:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1658:17:1658:20 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1658:24:1658:41 | ...::default(...) | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1659:9:1659:31 | ...::flip(...) | | file://:0:0:0:0 | () | +| main.rs:1659:22:1659:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1659:22:1659:30 | &mut flag | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1659:27:1659:30 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1660:18:1660:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1660:18:1660:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1660:18:1660:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1660:18:1660:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1660:18:1660:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1660:18:1660:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1660:26:1660:29 | flag | | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1675:43:1678:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1675:43:1678:5 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1675:43:1678:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:13:1676:13 | x | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:17:1676:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1676:17:1676:30 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:17:1676:31 | TryExpr | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1676:28:1676:29 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:9:1677:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1677:9:1677:22 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:9:1677:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1677:20:1677:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1682:46:1686:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1682:46:1686:5 | { ... } | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1682:46:1686:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:13:1683:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1683:13:1683:13 | x | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:17:1683:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1683:17:1683:30 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1683:28:1683:29 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:13:1684:13 | y | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:17:1684:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1684:17:1684:17 | x | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1684:17:1684:18 | TryExpr | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1685:9:1685:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1685:9:1685:22 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1685:9:1685:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1685:20:1685:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1690:40:1695:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1690:40:1695:5 | { ... } | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1690:40:1695:5 | { ... } | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:13:1691:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:13:1691:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1691:13:1691:13 | x | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:17:1691:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:17:1691:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1691:17:1691:42 | ...::Ok(...) | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:28:1691:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1691:28:1691:41 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1691:39:1691:40 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:17 | x | T.T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:17:1693:18 | TryExpr | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1693:17:1693:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1693:24:1693:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1693:24:1693:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1694:9:1694:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1694:9:1694:22 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1694:9:1694:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1694:20:1694:21 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:30:1699:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1699:30:1699:34 | input | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:30:1699:34 | input | T | main.rs:1699:20:1699:27 | T | +| main.rs:1699:69:1706:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1699:69:1706:5 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1699:69:1706:5 | { ... } | T | main.rs:1699:20:1699:27 | T | +| main.rs:1700:13:1700:17 | value | | main.rs:1699:20:1699:27 | T | +| main.rs:1700:21:1700:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1700:21:1700:25 | input | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1700:21:1700:25 | input | T | main.rs:1699:20:1699:27 | T | +| main.rs:1700:21:1700:26 | TryExpr | | main.rs:1699:20:1699:27 | T | +| main.rs:1701:22:1701:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:22:1701:38 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:22:1701:38 | ...::Ok(...) | T | main.rs:1699:20:1699:27 | T | +| main.rs:1701:22:1704:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:22:1704:10 | ... .and_then(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:33:1701:37 | value | | main.rs:1699:20:1699:27 | T | +| main.rs:1701:49:1704:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output).E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1701:53:1704:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:53:1704:9 | { ... } | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1702:22:1702:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1702:22:1702:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1702:22:1702:30 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1702:22:1702:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1702:22:1702:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1702:22:1702:30 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1705:9:1705:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1705:9:1705:23 | ...::Err(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1705:9:1705:23 | ...::Err(...) | T | main.rs:1699:20:1699:27 | T | +| main.rs:1705:21:1705:22 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1709:16:1725:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1710:9:1712:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1710:16:1710:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1710:16:1710:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:16:1710:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:27:1710:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:37:1710:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1710:37:1710:52 | try_same_error(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:37:1710:52 | try_same_error(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1710:54:1712:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1711:22:1711:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1711:22:1711:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1711:22:1711:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1711:22:1711:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1711:22:1711:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1711:22:1711:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1711:30:1711:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:9:1716:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1714:16:1714:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1714:16:1714:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1714:16:1714:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:27:1714:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:37:1714:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1714:37:1714:55 | try_convert_error(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1714:37:1714:55 | try_convert_error(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1714:57:1716:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1715:22:1715:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1715:22:1715:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1715:22:1715:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1715:22:1715:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1715:22:1715:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1715:22:1715:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1715:30:1715:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:9:1720:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1718:16:1718:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1718:16:1718:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1718:16:1718:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:27:1718:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:37:1718:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1718:37:1718:49 | try_chained(...) | E | main.rs:1670:5:1671:14 | S2 | +| main.rs:1718:37:1718:49 | try_chained(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1718:51:1720:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1719:22:1719:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1719:22:1719:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1719:22:1719:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1719:22:1719:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1719:22:1719:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1719:22:1719:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1719:30:1719:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:9:1724:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1722:16:1722:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:16:1722:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:16:1722:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:27:1722:32 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:37:1722:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:37:1722:63 | try_complex(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:37:1722:63 | try_complex(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:49:1722:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:49:1722:62 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:49:1722:62 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1722:65:1724:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1723:22:1723:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1723:22:1723:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1723:22:1723:35 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:1723:22:1723:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1723:22:1723:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1723:22:1723:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | +| main.rs:1729:16:1739:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1730:13:1730:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1730:22:1730:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1731:13:1731:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1731:17:1731:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:13:1732:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:17:1732:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:17:1732:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1732:21:1732:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:13:1733:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:17:1733:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1733:17:1733:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1734:13:1734:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1734:17:1734:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1735:13:1735:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1735:13:1735:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1735:21:1735:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1735:21:1735:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1736:13:1736:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1736:17:1736:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1737:13:1737:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1737:17:1737:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1738:13:1738:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1738:17:1738:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1744:16:1756:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1745:13:1745:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1745:17:1745:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1745:17:1745:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1745:25:1745:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1746:13:1746:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1746:17:1746:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1746:17:1746:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1746:25:1746:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1748:17:1748:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1749:13:1749:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1749:20:1749:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1749:20:1749:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1749:26:1749:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1750:9:1754:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | +| main.rs:1750:12:1750:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1750:17:1752:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1751:17:1751:17 | z | | file://:0:0:0:0 | () | +| main.rs:1751:21:1751:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1751:22:1751:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1751:22:1751:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1751:26:1751:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1752:16:1754:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1753:13:1753:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1753:13:1753:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1753:17:1753:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1755:9:1755:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1769:30:1771:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1770:13:1770:31 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1770:23:1770:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:23:1770:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1770:29:1770:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:29:1770:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:16:1777:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1777:22:1777:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1777:41:1782:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1778:13:1781:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1779:20:1779:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1779:20:1779:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1779:20:1779:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1779:29:1779:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1779:29:1779:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:20:1780:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1780:20:1780:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:20:1780:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:29:1780:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1780:29:1780:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:23:1787:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1787:23:1787:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1787:34:1787:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1787:45:1790:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1788:13:1788:16 | self | | file://:0:0:0:0 | & | +| main.rs:1788:13:1788:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1788:13:1788:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:13:1788:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1788:23:1788:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1788:23:1788:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:13:1789:16 | self | | file://:0:0:0:0 | & | +| main.rs:1789:13:1789:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1789:13:1789:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:13:1789:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1789:23:1789:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1789:23:1789:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:16:1795:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1795:22:1795:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1795:41:1800:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1796:13:1799:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1797:20:1797:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1797:20:1797:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:20:1797:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:29:1797:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1797:29:1797:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:20:1798:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1798:20:1798:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:20:1798:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:29:1798:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1798:29:1798:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1805:23:1805:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1805:23:1805:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1805:34:1805:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1805:45:1808:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1806:13:1806:16 | self | | file://:0:0:0:0 | & | +| main.rs:1806:13:1806:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1806:13:1806:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:13:1806:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1806:23:1806:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1806:23:1806:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:13:1807:16 | self | | file://:0:0:0:0 | & | +| main.rs:1807:13:1807:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1807:13:1807:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:13:1807:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1807:23:1807:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1807:23:1807:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1813:16:1813:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1813:22:1813:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1813:41:1818:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1814:13:1817:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1815:20:1815:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1815:20:1815:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1815:20:1815:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1815:29:1815:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1815:29:1815:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1816:20:1816:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1816:20:1816:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1816:20:1816:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1816:29:1816:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1816:29:1816:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1822:23:1822:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1822:23:1822:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1822:34:1822:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1822:45:1825:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1823:13:1823:16 | self | | file://:0:0:0:0 | & | +| main.rs:1823:13:1823:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1823:13:1823:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1823:13:1823:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1823:23:1823:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1823:23:1823:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:13:1824:16 | self | | file://:0:0:0:0 | & | +| main.rs:1824:13:1824:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1824:13:1824:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1824:13:1824:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1824:23:1824:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1824:23:1824:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1830:16:1830:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1830:22:1830:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1830:41:1835:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1831:13:1834:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1832:20:1832:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1832:20:1832:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:20:1832:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1832:29:1832:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1832:29:1832:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:20:1833:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1833:20:1833:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:20:1833:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1833:29:1833:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1833:29:1833:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1839:23:1839:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1839:23:1839:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1839:34:1839:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1839:45:1842:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1840:13:1840:16 | self | | file://:0:0:0:0 | & | +| main.rs:1840:13:1840:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1840:13:1840:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1840:13:1840:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1840:23:1840:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1840:23:1840:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:13:1841:16 | self | | file://:0:0:0:0 | & | +| main.rs:1841:13:1841:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1841:13:1841:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1841:13:1841:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1841:23:1841:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1841:23:1841:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1847:16:1847:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1847:22:1847:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1847:41:1852:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1848:13:1851:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1849:20:1849:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1849:20:1849:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1849:20:1849:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1849:29:1849:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1849:29:1849:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:20:1850:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1850:20:1850:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:20:1850:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1850:29:1850:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1850:29:1850:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1856:23:1856:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1856:23:1856:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1856:34:1856:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1856:45:1859:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1857:13:1857:16 | self | | file://:0:0:0:0 | & | +| main.rs:1857:13:1857:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1857:13:1857:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1857:13:1857:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1857:23:1857:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1857:23:1857:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | +| main.rs:1858:13:1858:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1858:13:1858:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1858:13:1858:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1858:23:1858:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1858:23:1858:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1864:19:1864:22 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1864:25:1864:27 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1864:44:1869:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1865:13:1868:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1866:20:1866:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1866:20:1866:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1866:20:1866:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1866:29:1866:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1866:29:1866:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:20:1867:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1867:20:1867:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:20:1867:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1867:29:1867:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1867:29:1867:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1873:26:1873:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1873:26:1873:34 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1873:37:1873:39 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1873:48:1876:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1874:13:1874:16 | self | | file://:0:0:0:0 | & | +| main.rs:1874:13:1874:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1874:13:1874:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1874:13:1874:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1874:23:1874:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1874:23:1874:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1875:13:1875:16 | self | | file://:0:0:0:0 | & | +| main.rs:1875:13:1875:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1875:13:1875:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1875:13:1875:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1875:23:1875:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1875:23:1875:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1881:18:1881:21 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1881:24:1881:26 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1881:43:1886:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1882:13:1885:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1883:20:1883:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1883:20:1883:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1883:20:1883:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1883:29:1883:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1883:29:1883:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:20:1884:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1884:20:1884:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:20:1884:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1884:29:1884:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1884:29:1884:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1890:25:1890:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1890:25:1890:33 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1890:36:1890:38 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1890:47:1893:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1891:13:1891:16 | self | | file://:0:0:0:0 | & | +| main.rs:1891:13:1891:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1891:13:1891:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1891:13:1891:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1891:23:1891:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1891:23:1891:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1892:13:1892:16 | self | | file://:0:0:0:0 | & | +| main.rs:1892:13:1892:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1892:13:1892:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1892:13:1892:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1892:23:1892:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1892:23:1892:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1898:19:1898:22 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1898:25:1898:27 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1898:44:1903:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1899:13:1902:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1900:20:1900:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1900:20:1900:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:20:1900:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:29:1900:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1900:29:1900:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:20:1901:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1901:20:1901:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:20:1901:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:29:1901:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1901:29:1901:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:26:1907:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1907:26:1907:34 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1907:37:1907:39 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1907:48:1910:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1908:13:1908:16 | self | | file://:0:0:0:0 | & | +| main.rs:1908:13:1908:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1908:13:1908:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:13:1908:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1908:23:1908:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1908:23:1908:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1909:13:1909:16 | self | | file://:0:0:0:0 | & | +| main.rs:1909:13:1909:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1909:13:1909:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1909:13:1909:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1909:23:1909:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1909:23:1909:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1915:16:1915:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1915:22:1915:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1915:40:1920:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1916:13:1919:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1917:20:1917:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1917:20:1917:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:20:1917:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:30:1917:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1918:20:1918:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1918:20:1918:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:20:1918:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:30:1918:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1924:23:1924:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1924:23:1924:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1924:34:1924:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1924:44:1927:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1925:13:1925:16 | self | | file://:0:0:0:0 | & | +| main.rs:1925:13:1925:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1925:13:1925:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1925:13:1925:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1925:24:1925:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1926:13:1926:16 | self | | file://:0:0:0:0 | & | +| main.rs:1926:13:1926:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1926:13:1926:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1926:13:1926:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1926:24:1926:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1932:16:1932:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1932:22:1932:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1932:40:1937:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1933:13:1936:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1934:20:1934:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1934:20:1934:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1934:20:1934:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1934:30:1934:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1935:20:1935:23 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1935:20:1935:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1935:20:1935:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1935:30:1935:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1941:23:1941:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1941:23:1941:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1941:34:1941:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1941:44:1944:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1942:13:1942:16 | self | | file://:0:0:0:0 | & | +| main.rs:1942:13:1942:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1942:13:1942:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1942:13:1942:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1942:24:1942:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1943:13:1943:16 | self | | file://:0:0:0:0 | & | +| main.rs:1943:13:1943:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1943:13:1943:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1943:13:1943:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1943:24:1943:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1949:16:1949:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1949:30:1954:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1950:13:1953:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1951:20:1951:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1951:21:1951:24 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1951:21:1951:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:20:1952:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1952:21:1952:24 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1952:21:1952:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1959:16:1959:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1959:30:1964:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1960:13:1963:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1961:20:1961:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1961:21:1961:24 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1961:21:1961:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:20:1962:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:21:1962:24 | self | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1962:21:1962:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1968:15:1968:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1968:15:1968:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1968:22:1968:26 | other | | file://:0:0:0:0 | & | +| main.rs:1968:22:1968:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1968:44:1970:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1969:13:1969:16 | self | | file://:0:0:0:0 | & | +| main.rs:1969:13:1969:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1969:13:1969:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:13:1969:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1969:13:1969:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1969:23:1969:27 | other | | file://:0:0:0:0 | & | +| main.rs:1969:23:1969:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1969:23:1969:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:34:1969:37 | self | | file://:0:0:0:0 | & | +| main.rs:1969:34:1969:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1969:34:1969:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1969:34:1969:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1969:44:1969:48 | other | | file://:0:0:0:0 | & | +| main.rs:1969:44:1969:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1969:44:1969:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:15:1972:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1972:15:1972:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1972:22:1972:26 | other | | file://:0:0:0:0 | & | +| main.rs:1972:22:1972:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1972:44:1974:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1973:13:1973:16 | self | | file://:0:0:0:0 | & | +| main.rs:1973:13:1973:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1973:13:1973:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1973:13:1973:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1973:23:1973:27 | other | | file://:0:0:0:0 | & | +| main.rs:1973:23:1973:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1973:23:1973:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:34:1973:37 | self | | file://:0:0:0:0 | & | +| main.rs:1973:34:1973:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1973:34:1973:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:34:1973:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1973:44:1973:48 | other | | file://:0:0:0:0 | & | +| main.rs:1973:44:1973:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1973:44:1973:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1978:24:1978:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1978:24:1978:28 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1978:31:1978:35 | other | | file://:0:0:0:0 | & | +| main.rs:1978:31:1978:35 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1978:75:1980:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1978:75:1980:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1979:13:1979:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:13:1979:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1979:13:1979:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1979:14:1979:17 | self | | file://:0:0:0:0 | & | +| main.rs:1979:14:1979:17 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1979:14:1979:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:14:1979:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:23:1979:26 | self | | file://:0:0:0:0 | & | +| main.rs:1979:23:1979:26 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1979:23:1979:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:43:1979:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1979:43:1979:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:44:1979:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:45:1979:49 | other | | file://:0:0:0:0 | & | +| main.rs:1979:45:1979:49 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1979:45:1979:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:45:1979:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:55:1979:59 | other | | file://:0:0:0:0 | & | +| main.rs:1979:55:1979:59 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1979:55:1979:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:15:1982:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1982:15:1982:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1982:22:1982:26 | other | | file://:0:0:0:0 | & | +| main.rs:1982:22:1982:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1982:44:1984:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:13:1983:16 | self | | file://:0:0:0:0 | & | +| main.rs:1983:13:1983:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1983:13:1983:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:13:1983:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:13:1983:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:22:1983:26 | other | | file://:0:0:0:0 | & | +| main.rs:1983:22:1983:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1983:22:1983:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:33:1983:36 | self | | file://:0:0:0:0 | & | +| main.rs:1983:33:1983:36 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1983:33:1983:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1983:33:1983:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1983:42:1983:46 | other | | file://:0:0:0:0 | & | +| main.rs:1983:42:1983:46 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1983:42:1983:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1986:15:1986:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1986:15:1986:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1986:22:1986:26 | other | | file://:0:0:0:0 | & | +| main.rs:1986:22:1986:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1986:44:1988:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1987:13:1987:16 | self | | file://:0:0:0:0 | & | +| main.rs:1987:13:1987:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1987:13:1987:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:13:1987:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1987:13:1987:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1987:23:1987:27 | other | | file://:0:0:0:0 | & | +| main.rs:1987:23:1987:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1987:23:1987:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:34:1987:37 | self | | file://:0:0:0:0 | & | +| main.rs:1987:34:1987:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1987:34:1987:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1987:34:1987:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1987:44:1987:48 | other | | file://:0:0:0:0 | & | +| main.rs:1987:44:1987:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1987:44:1987:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:15:1990:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1990:15:1990:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1990:22:1990:26 | other | | file://:0:0:0:0 | & | +| main.rs:1990:22:1990:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1990:44:1992:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1991:13:1991:16 | self | | file://:0:0:0:0 | & | +| main.rs:1991:13:1991:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1991:13:1991:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:13:1991:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1991:13:1991:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1991:22:1991:26 | other | | file://:0:0:0:0 | & | +| main.rs:1991:22:1991:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1991:22:1991:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:33:1991:36 | self | | file://:0:0:0:0 | & | +| main.rs:1991:33:1991:36 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1991:33:1991:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1991:33:1991:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1991:42:1991:46 | other | | file://:0:0:0:0 | & | +| main.rs:1991:42:1991:46 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1991:42:1991:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1994:15:1994:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1994:15:1994:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1994:22:1994:26 | other | | file://:0:0:0:0 | & | +| main.rs:1994:22:1994:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1994:44:1996:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1995:13:1995:16 | self | | file://:0:0:0:0 | & | +| main.rs:1995:13:1995:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1995:13:1995:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:13:1995:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1995:13:1995:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1995:23:1995:27 | other | | file://:0:0:0:0 | & | +| main.rs:1995:23:1995:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1995:23:1995:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:34:1995:37 | self | | file://:0:0:0:0 | & | +| main.rs:1995:34:1995:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1995:34:1995:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1995:34:1995:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1995:44:1995:48 | other | | file://:0:0:0:0 | & | +| main.rs:1995:44:1995:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:1995:44:1995:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:26:1999:26 | a | | main.rs:1999:18:1999:23 | T | +| main.rs:1999:32:1999:32 | b | | main.rs:1999:18:1999:23 | T | +| main.rs:1999:51:2001:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2000:9:2000:9 | a | | main.rs:1999:18:1999:23 | T | +| main.rs:2000:9:2000:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:2000:13:2000:13 | b | | main.rs:1999:18:1999:23 | T | +| main.rs:2003:16:2134:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2007:13:2007:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:22:2007:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:23:2007:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2007:23:2007:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2007:31:2007:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2008:13:2008:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2008:22:2008:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2008:23:2008:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2008:23:2008:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2008:31:2008:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2009:13:2009:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2009:22:2009:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2009:23:2009:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2009:23:2009:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2009:30:2009:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:13:2010:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2010:22:2010:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2010:23:2010:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2010:23:2010:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2010:31:2010:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:13:2011:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2011:22:2011:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2011:23:2011:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2011:23:2011:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2011:30:2011:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:13:2012:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2012:22:2012:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2012:23:2012:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2012:23:2012:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2012:32:2012:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:13:2015:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:23:2015:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:23:2015:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:31:2015:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:13:2016:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:23:2016:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:23:2016:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:31:2016:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:13:2017:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:23:2017:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:23:2017:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2017:31:2017:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:13:2018:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:23:2018:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:23:2018:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2018:31:2018:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2019:13:2019:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:2019:23:2019:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2019:23:2019:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2019:31:2019:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2020:39:2020:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2020:45:2020:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:17:2023:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:34:2023:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:9:2024:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:9:2024:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2024:27:2024:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2026:17:2026:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2026:34:2026:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2027:9:2027:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2027:9:2027:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2027:27:2027:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2029:17:2029:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2029:34:2029:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2030:9:2030:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2030:9:2030:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2030:27:2030:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:17:2032:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:34:2032:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:9:2033:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:9:2033:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2033:27:2033:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2035:17:2035:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2035:34:2035:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2036:9:2036:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2036:9:2036:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2036:27:2036:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2039:13:2039:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:2039:26:2039:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2039:26:2039:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2039:34:2039:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:13:2040:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:25:2040:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:25:2040:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:33:2040:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2041:13:2041:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2041:26:2041:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2041:26:2041:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2041:34:2041:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:13:2042:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:23:2042:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:23:2042:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:32:2042:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:13:2043:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:23:2043:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:23:2043:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:32:2043:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2046:17:2046:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2046:37:2046:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2047:9:2047:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2047:9:2047:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2047:30:2047:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2049:17:2049:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2049:36:2049:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:9:2050:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:9:2050:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2050:29:2050:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2052:17:2052:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2052:37:2052:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2053:9:2053:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2053:9:2053:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2053:30:2053:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2055:17:2055:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2055:34:2055:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2056:9:2056:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2056:9:2056:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2056:28:2056:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2058:17:2058:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2058:34:2058:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2059:9:2059:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2059:9:2059:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2059:28:2059:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2061:13:2061:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:2061:23:2061:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2061:24:2061:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2062:13:2062:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:2062:23:2062:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2062:24:2062:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2065:13:2065:14 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2065:18:2065:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2065:28:2065:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2065:28:2065:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2065:34:2065:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2065:34:2065:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2066:13:2066:14 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2066:18:2066:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2066:28:2066:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2066:28:2066:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2066:34:2066:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2066:34:2066:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2069:13:2069:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2069:23:2069:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2069:23:2069:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2069:29:2069:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2070:13:2070:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2070:23:2070:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2070:23:2070:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2070:29:2070:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2071:13:2071:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2071:23:2071:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2071:23:2071:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2071:28:2071:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2072:13:2072:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:23:2072:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2072:23:2072:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:29:2072:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2073:13:2073:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2073:23:2073:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2073:23:2073:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2073:28:2073:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2074:13:2074:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2074:23:2074:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2074:23:2074:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2074:29:2074:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2077:13:2077:20 | vec2_add | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2077:24:2077:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2077:24:2077:30 | ... + ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2077:29:2077:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2078:13:2078:20 | vec2_sub | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2078:24:2078:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2078:24:2078:30 | ... - ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2078:29:2078:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2079:13:2079:20 | vec2_mul | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2079:24:2079:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2079:24:2079:30 | ... * ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2079:29:2079:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2080:13:2080:20 | vec2_div | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2080:24:2080:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2080:24:2080:30 | ... / ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2080:29:2080:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2081:13:2081:20 | vec2_rem | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2081:24:2081:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2081:24:2081:30 | ... % ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2081:29:2081:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2084:17:2084:31 | vec2_add_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2084:35:2084:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2085:9:2085:23 | vec2_add_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2085:9:2085:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2085:28:2085:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2087:17:2087:31 | vec2_sub_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2087:35:2087:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2088:9:2088:23 | vec2_sub_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2088:9:2088:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2088:28:2088:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2090:17:2090:31 | vec2_mul_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2090:35:2090:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2091:9:2091:23 | vec2_mul_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2091:9:2091:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2091:28:2091:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2093:17:2093:31 | vec2_div_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2093:35:2093:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2094:9:2094:23 | vec2_div_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2094:9:2094:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2094:28:2094:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2096:17:2096:31 | vec2_rem_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2096:35:2096:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2097:9:2097:23 | vec2_rem_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2097:9:2097:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2097:28:2097:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2100:13:2100:23 | vec2_bitand | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2100:27:2100:28 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2100:27:2100:33 | ... & ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2100:32:2100:33 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2101:13:2101:22 | vec2_bitor | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2101:26:2101:27 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2101:26:2101:32 | ... \| ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2101:31:2101:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2102:13:2102:23 | vec2_bitxor | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2102:27:2102:28 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2102:27:2102:33 | ... ^ ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2102:32:2102:33 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2103:13:2103:20 | vec2_shl | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2103:24:2103:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2103:24:2103:33 | ... << ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2103:30:2103:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2104:13:2104:20 | vec2_shr | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2104:24:2104:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2104:24:2104:33 | ... >> ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2104:30:2104:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2107:17:2107:34 | vec2_bitand_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2107:38:2107:39 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2108:9:2108:26 | vec2_bitand_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2108:9:2108:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2108:31:2108:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2110:17:2110:33 | vec2_bitor_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2110:37:2110:38 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2111:9:2111:25 | vec2_bitor_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2111:9:2111:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2111:30:2111:31 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2113:17:2113:34 | vec2_bitxor_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2113:38:2113:39 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2114:9:2114:26 | vec2_bitxor_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2114:9:2114:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2114:31:2114:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2116:17:2116:31 | vec2_shl_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2116:35:2116:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2117:9:2117:23 | vec2_shl_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2117:9:2117:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2117:29:2117:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2119:17:2119:31 | vec2_shr_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2119:35:2119:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2120:9:2120:23 | vec2_shr_assign | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2120:9:2120:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2120:29:2120:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2123:13:2123:20 | vec2_neg | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2123:24:2123:26 | - ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2123:25:2123:26 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2124:13:2124:20 | vec2_not | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2124:24:2124:26 | ! ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2124:25:2124:26 | v1 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2127:13:2127:24 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2127:28:2127:45 | ...::default(...) | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2128:13:2128:26 | vec2_zero_plus | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2128:30:2128:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2128:30:2128:63 | ... + ... | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2128:40:2128:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2128:40:2128:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:46:2128:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2128:46:2128:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:52:2128:63 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2132:13:2132:24 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2132:28:2132:45 | ...::default(...) | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2133:13:2133:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2133:30:2133:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2133:30:2133:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2133:40:2133:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2133:40:2133:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:46:2133:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2133:46:2133:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:53:2133:64 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | +| main.rs:2143:18:2143:21 | SelfParam | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2143:24:2143:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2146:25:2148:5 | { ... } | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2147:9:2147:10 | S1 | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2150:41:2152:5 | { ... } | | main.rs:2150:16:2150:39 | impl ... | +| main.rs:2151:9:2151:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2151:9:2151:20 | { ... } | Output | main.rs:2140:5:2140:14 | S1 | +| main.rs:2151:17:2151:18 | S1 | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2154:41:2156:5 | { ... } | | main.rs:2154:16:2154:39 | impl ... | +| main.rs:2155:9:2155:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2155:9:2155:16 | { ... } | Output | file://:0:0:0:0 | () | +| main.rs:2164:13:2164:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2164:13:2164:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2164:13:2164:42 | SelfParam | Ptr.&T | main.rs:2158:5:2158:14 | S2 | +| main.rs:2165:13:2165:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2165:13:2165:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2166:44:2168:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2166:44:2168:9 | { ... } | T | main.rs:2140:5:2140:14 | S1 | +| main.rs:2167:13:2167:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2167:13:2167:38 | ...::Ready(...) | T | main.rs:2140:5:2140:14 | S1 | +| main.rs:2167:36:2167:37 | S1 | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2171:41:2173:5 | { ... } | | main.rs:2171:16:2171:39 | impl ... | +| main.rs:2172:9:2172:10 | S2 | | main.rs:2158:5:2158:14 | S2 | +| main.rs:2172:9:2172:10 | S2 | | main.rs:2171:16:2171:39 | impl ... | +| main.rs:2175:22:2183:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2176:9:2176:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2176:9:2176:12 | f1(...) | Output | main.rs:2140:5:2140:14 | S1 | +| main.rs:2176:9:2176:18 | await ... | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2176:9:2176:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2177:9:2177:12 | f2(...) | | main.rs:2150:16:2150:39 | impl ... | +| main.rs:2177:9:2177:18 | await ... | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2177:9:2177:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2178:9:2178:12 | f3(...) | | main.rs:2154:16:2154:39 | impl ... | +| main.rs:2178:9:2178:18 | await ... | | file://:0:0:0:0 | () | +| main.rs:2179:9:2179:12 | f4(...) | | main.rs:2171:16:2171:39 | impl ... | +| main.rs:2179:9:2179:18 | await ... | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2179:9:2179:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2180:9:2180:10 | S2 | | main.rs:2158:5:2158:14 | S2 | +| main.rs:2180:9:2180:16 | await S2 | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2180:9:2180:20 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2181:13:2181:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2181:13:2181:13 | b | Output | main.rs:2140:5:2140:14 | S1 | +| main.rs:2181:17:2181:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2181:17:2181:28 | { ... } | Output | main.rs:2140:5:2140:14 | S1 | +| main.rs:2181:25:2181:26 | S1 | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2182:9:2182:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2182:9:2182:9 | b | Output | main.rs:2140:5:2140:14 | S1 | +| main.rs:2182:9:2182:15 | await b | | main.rs:2140:5:2140:14 | S1 | +| main.rs:2182:9:2182:19 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2193:15:2193:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2193:15:2193:19 | SelfParam | &T | main.rs:2192:5:2194:5 | Self [trait Trait1] | +| main.rs:2193:22:2193:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2197:15:2197:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2197:15:2197:19 | SelfParam | &T | main.rs:2196:5:2198:5 | Self [trait Trait2] | +| main.rs:2197:22:2197:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2201:15:2201:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2201:15:2201:19 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | +| main.rs:2201:22:2201:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2205:15:2205:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2205:15:2205:19 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | +| main.rs:2205:22:2205:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2208:37:2210:5 | { ... } | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2209:9:2209:10 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2209:9:2209:10 | S1 | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2213:18:2213:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2213:18:2213:22 | SelfParam | &T | main.rs:2212:5:2214:5 | Self [trait MyTrait] | +| main.rs:2217:18:2217:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2217:18:2217:22 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | +| main.rs:2217:31:2219:9 | { ... } | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2218:13:2218:14 | S2 | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2223:18:2223:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2223:18:2223:22 | SelfParam | &T | main.rs:2190:5:2190:22 | S3 | +| main.rs:2223:18:2223:22 | SelfParam | &T.T3 | main.rs:2222:10:2222:17 | T | +| main.rs:2223:30:2226:9 | { ... } | | main.rs:2222:10:2222:17 | T | +| main.rs:2224:17:2224:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2224:17:2224:21 | S3(...) | | main.rs:2190:5:2190:22 | S3 | +| main.rs:2224:17:2224:21 | S3(...) | &T | main.rs:2190:5:2190:22 | S3 | +| main.rs:2224:17:2224:21 | S3(...) | &T.T3 | main.rs:2222:10:2222:17 | T | +| main.rs:2224:25:2224:28 | self | | file://:0:0:0:0 | & | +| main.rs:2224:25:2224:28 | self | &T | main.rs:2190:5:2190:22 | S3 | +| main.rs:2224:25:2224:28 | self | &T.T3 | main.rs:2222:10:2222:17 | T | +| main.rs:2225:13:2225:21 | t.clone() | | main.rs:2222:10:2222:17 | T | +| main.rs:2229:45:2231:5 | { ... } | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2230:9:2230:10 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2230:9:2230:10 | S1 | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2233:41:2233:41 | t | | main.rs:2233:26:2233:38 | B | +| main.rs:2233:52:2235:5 | { ... } | | main.rs:2233:23:2233:23 | A | +| main.rs:2234:9:2234:9 | t | | main.rs:2233:26:2233:38 | B | +| main.rs:2234:9:2234:17 | t.get_a() | | main.rs:2233:23:2233:23 | A | +| main.rs:2237:34:2237:34 | x | | main.rs:2237:24:2237:31 | T | +| main.rs:2237:59:2239:5 | { ... } | | main.rs:2237:43:2237:57 | impl ... | +| main.rs:2237:59:2239:5 | { ... } | impl(T) | main.rs:2237:24:2237:31 | T | +| main.rs:2238:9:2238:13 | S3(...) | | main.rs:2190:5:2190:22 | S3 | +| main.rs:2238:9:2238:13 | S3(...) | | main.rs:2237:43:2237:57 | impl ... | +| main.rs:2238:9:2238:13 | S3(...) | T3 | main.rs:2237:24:2237:31 | T | +| main.rs:2238:9:2238:13 | S3(...) | impl(T) | main.rs:2237:24:2237:31 | T | +| main.rs:2238:12:2238:12 | x | | main.rs:2237:24:2237:31 | T | +| main.rs:2241:34:2241:34 | x | | main.rs:2241:24:2241:31 | T | +| main.rs:2241:67:2243:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2241:67:2243:5 | { ... } | T | main.rs:2241:50:2241:64 | impl ... | +| main.rs:2241:67:2243:5 | { ... } | T.impl(T) | main.rs:2241:24:2241:31 | T | +| main.rs:2242:9:2242:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2242:9:2242:19 | Some(...) | T | main.rs:2190:5:2190:22 | S3 | +| main.rs:2242:9:2242:19 | Some(...) | T | main.rs:2241:50:2241:64 | impl ... | +| main.rs:2242:9:2242:19 | Some(...) | T.T3 | main.rs:2241:24:2241:31 | T | +| main.rs:2242:9:2242:19 | Some(...) | T.impl(T) | main.rs:2241:24:2241:31 | T | +| main.rs:2242:14:2242:18 | S3(...) | | main.rs:2190:5:2190:22 | S3 | +| main.rs:2242:14:2242:18 | S3(...) | | main.rs:2241:50:2241:64 | impl ... | +| main.rs:2242:14:2242:18 | S3(...) | T3 | main.rs:2241:24:2241:31 | T | +| main.rs:2242:14:2242:18 | S3(...) | impl(T) | main.rs:2241:24:2241:31 | T | +| main.rs:2242:17:2242:17 | x | | main.rs:2241:24:2241:31 | T | +| main.rs:2245:34:2245:34 | x | | main.rs:2245:24:2245:31 | T | +| main.rs:2245:78:2247:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2245:78:2247:5 | { ... } | 0(2) | main.rs:2245:44:2245:58 | impl ... | +| main.rs:2245:78:2247:5 | { ... } | 0(2).impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2245:78:2247:5 | { ... } | 1(2) | main.rs:2245:61:2245:75 | impl ... | +| main.rs:2245:78:2247:5 | { ... } | 1(2).impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2246:9:2246:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2246:9:2246:30 | TupleExpr | 0(2) | main.rs:2190:5:2190:22 | S3 | +| main.rs:2246:9:2246:30 | TupleExpr | 0(2) | main.rs:2245:44:2245:58 | impl ... | +| main.rs:2246:9:2246:30 | TupleExpr | 0(2).T3 | main.rs:2245:24:2245:31 | T | +| main.rs:2246:9:2246:30 | TupleExpr | 0(2).impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2246:9:2246:30 | TupleExpr | 1(2) | main.rs:2190:5:2190:22 | S3 | +| main.rs:2246:9:2246:30 | TupleExpr | 1(2) | main.rs:2245:61:2245:75 | impl ... | +| main.rs:2246:9:2246:30 | TupleExpr | 1(2).T3 | main.rs:2245:24:2245:31 | T | +| main.rs:2246:9:2246:30 | TupleExpr | 1(2).impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2246:10:2246:22 | S3(...) | | main.rs:2190:5:2190:22 | S3 | +| main.rs:2246:10:2246:22 | S3(...) | | main.rs:2245:44:2245:58 | impl ... | +| main.rs:2246:10:2246:22 | S3(...) | T3 | main.rs:2245:24:2245:31 | T | +| main.rs:2246:10:2246:22 | S3(...) | impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2246:13:2246:13 | x | | main.rs:2245:24:2245:31 | T | +| main.rs:2246:13:2246:21 | x.clone() | | main.rs:2245:24:2245:31 | T | +| main.rs:2246:25:2246:29 | S3(...) | | main.rs:2190:5:2190:22 | S3 | +| main.rs:2246:25:2246:29 | S3(...) | | main.rs:2245:61:2245:75 | impl ... | +| main.rs:2246:25:2246:29 | S3(...) | T3 | main.rs:2245:24:2245:31 | T | +| main.rs:2246:25:2246:29 | S3(...) | impl(T) | main.rs:2245:24:2245:31 | T | +| main.rs:2246:28:2246:28 | x | | main.rs:2245:24:2245:31 | T | +| main.rs:2249:26:2249:26 | t | | main.rs:2249:29:2249:43 | impl ... | +| main.rs:2249:51:2251:5 | { ... } | | main.rs:2249:23:2249:23 | A | +| main.rs:2250:9:2250:9 | t | | main.rs:2249:29:2249:43 | impl ... | +| main.rs:2250:9:2250:17 | t.get_a() | | main.rs:2249:23:2249:23 | A | +| main.rs:2253:16:2267:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2254:13:2254:13 | x | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2254:17:2254:20 | f1(...) | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2255:9:2255:9 | x | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2255:9:2255:14 | x.f1() | | file://:0:0:0:0 | () | +| main.rs:2256:9:2256:9 | x | | main.rs:2208:16:2208:35 | impl ... + ... | +| main.rs:2256:9:2256:14 | x.f2() | | file://:0:0:0:0 | () | +| main.rs:2257:13:2257:13 | a | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2257:17:2257:32 | get_a_my_trait(...) | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2258:13:2258:13 | b | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2258:17:2258:33 | uses_my_trait1(...) | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2258:32:2258:32 | a | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2259:13:2259:13 | a | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2259:17:2259:32 | get_a_my_trait(...) | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2260:13:2260:13 | c | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2260:17:2260:33 | uses_my_trait2(...) | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2260:32:2260:32 | a | | main.rs:2229:28:2229:43 | impl ... | +| main.rs:2261:13:2261:13 | d | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2261:17:2261:34 | uses_my_trait2(...) | | main.rs:2189:5:2189:14 | S2 | +| main.rs:2261:32:2261:33 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2262:13:2262:13 | e | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2262:17:2262:35 | get_a_my_trait2(...) | | main.rs:2237:43:2237:57 | impl ... | +| main.rs:2262:17:2262:35 | get_a_my_trait2(...) | impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2262:17:2262:43 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2262:33:2262:34 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2265:13:2265:13 | f | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | T | main.rs:2241:50:2241:64 | impl ... | +| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2265:17:2265:44 | ... .unwrap() | | main.rs:2241:50:2241:64 | impl ... | +| main.rs:2265:17:2265:44 | ... .unwrap() | impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2265:17:2265:52 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2265:33:2265:34 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:13:2266:13 | g | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 0(2) | main.rs:2245:44:2245:58 | impl ... | +| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 1(2) | main.rs:2245:61:2245:75 | impl ... | +| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:17:2266:37 | ... .0 | | main.rs:2245:44:2245:58 | impl ... | +| main.rs:2266:17:2266:37 | ... .0 | impl(T) | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:17:2266:45 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2266:33:2266:34 | S1 | | main.rs:2187:5:2188:14 | S1 | +| main.rs:2277:16:2277:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2277:16:2277:20 | SelfParam | &T | main.rs:2273:5:2274:13 | S | +| main.rs:2277:31:2279:9 | { ... } | | main.rs:2273:5:2274:13 | S | +| main.rs:2278:13:2278:13 | S | | main.rs:2273:5:2274:13 | S | +| main.rs:2288:26:2290:9 | { ... } | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2288:26:2290:9 | { ... } | T | main.rs:2287:10:2287:10 | T | +| main.rs:2289:13:2289:38 | MyVec {...} | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2289:13:2289:38 | MyVec {...} | T | main.rs:2287:10:2287:10 | T | +| main.rs:2289:27:2289:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2289:27:2289:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2289:27:2289:36 | ...::new(...) | T | main.rs:2287:10:2287:10 | T | +| main.rs:2292:17:2292:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2292:17:2292:25 | SelfParam | &T | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2292:17:2292:25 | SelfParam | &T.T | main.rs:2287:10:2287:10 | T | +| main.rs:2292:28:2292:32 | value | | main.rs:2287:10:2287:10 | T | +| main.rs:2292:38:2294:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2293:13:2293:16 | self | | file://:0:0:0:0 | & | +| main.rs:2293:13:2293:16 | self | &T | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2293:13:2293:16 | self | &T.T | main.rs:2287:10:2287:10 | T | +| main.rs:2293:13:2293:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2293:13:2293:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2293:13:2293:21 | self.data | T | main.rs:2287:10:2287:10 | T | +| main.rs:2293:13:2293:33 | ... .push(...) | | file://:0:0:0:0 | () | +| main.rs:2293:28:2293:32 | value | | main.rs:2287:10:2287:10 | T | +| main.rs:2301:18:2301:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2301:18:2301:22 | SelfParam | &T | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2301:18:2301:22 | SelfParam | &T.T | main.rs:2297:10:2297:10 | T | +| main.rs:2301:25:2301:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2301:56:2303:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2301:56:2303:9 | { ... } | &T | main.rs:2297:10:2297:10 | T | +| main.rs:2302:13:2302:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2302:13:2302:29 | &... | &T | main.rs:2297:10:2297:10 | T | +| main.rs:2302:14:2302:17 | self | | file://:0:0:0:0 | & | +| main.rs:2302:14:2302:17 | self | &T | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2302:14:2302:17 | self | &T.T | main.rs:2297:10:2297:10 | T | +| main.rs:2302:14:2302:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2302:14:2302:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2302:14:2302:22 | self.data | T | main.rs:2297:10:2297:10 | T | +| main.rs:2302:14:2302:29 | ...[index] | | main.rs:2297:10:2297:10 | T | +| main.rs:2302:24:2302:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2306:22:2306:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2306:22:2306:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2306:22:2306:26 | slice | &T.[T] | main.rs:2273:5:2274:13 | S | +| main.rs:2306:35:2308:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2307:13:2307:13 | x | | main.rs:2273:5:2274:13 | S | +| main.rs:2307:17:2307:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2307:17:2307:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2307:17:2307:21 | slice | &T.[T] | main.rs:2273:5:2274:13 | S | +| main.rs:2307:17:2307:24 | slice[0] | | main.rs:2273:5:2274:13 | S | +| main.rs:2307:17:2307:30 | ... .foo() | | main.rs:2273:5:2274:13 | S | +| main.rs:2307:23:2307:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2310:37:2310:37 | a | | main.rs:2310:20:2310:34 | T | +| main.rs:2310:43:2310:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2313:5:2315:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2314:9:2314:9 | a | | main.rs:2310:20:2310:34 | T | +| main.rs:2314:9:2314:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2314:11:2314:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2317:16:2328:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2318:17:2318:19 | vec | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2318:17:2318:19 | vec | T | main.rs:2273:5:2274:13 | S | +| main.rs:2318:23:2318:34 | ...::new(...) | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2318:23:2318:34 | ...::new(...) | T | main.rs:2273:5:2274:13 | S | +| main.rs:2319:9:2319:11 | vec | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2319:9:2319:11 | vec | T | main.rs:2273:5:2274:13 | S | +| main.rs:2319:9:2319:19 | vec.push(...) | | file://:0:0:0:0 | () | +| main.rs:2319:18:2319:18 | S | | main.rs:2273:5:2274:13 | S | +| main.rs:2320:9:2320:11 | vec | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2320:9:2320:11 | vec | T | main.rs:2273:5:2274:13 | S | +| main.rs:2320:9:2320:14 | vec[0] | | main.rs:2273:5:2274:13 | S | +| main.rs:2320:9:2320:20 | ... .foo() | | main.rs:2273:5:2274:13 | S | +| main.rs:2320:13:2320:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2320:13:2320:13 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2322:13:2322:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2322:13:2322:14 | xs | [T;...] | main.rs:2273:5:2274:13 | S | +| main.rs:2322:21:2322:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2322:26:2322:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2322:26:2322:28 | [...] | [T;...] | main.rs:2273:5:2274:13 | S | +| main.rs:2322:27:2322:27 | S | | main.rs:2273:5:2274:13 | S | +| main.rs:2323:13:2323:13 | x | | main.rs:2273:5:2274:13 | S | +| main.rs:2323:17:2323:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2323:17:2323:18 | xs | [T;...] | main.rs:2273:5:2274:13 | S | +| main.rs:2323:17:2323:21 | xs[0] | | main.rs:2273:5:2274:13 | S | +| main.rs:2323:17:2323:27 | ... .foo() | | main.rs:2273:5:2274:13 | S | +| main.rs:2323:20:2323:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:29:2325:31 | vec | | main.rs:2282:5:2285:5 | MyVec | +| main.rs:2325:29:2325:31 | vec | T | main.rs:2273:5:2274:13 | S | +| main.rs:2325:34:2325:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:34:2325:34 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2327:9:2327:26 | analyze_slice(...) | | file://:0:0:0:0 | () | +| main.rs:2327:23:2327:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2327:23:2327:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2327:23:2327:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2327:23:2327:25 | &xs | &T.[T;...] | main.rs:2273:5:2274:13 | S | +| main.rs:2327:23:2327:25 | &xs | &T.[T] | main.rs:2273:5:2274:13 | S | +| main.rs:2327:24:2327:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2327:24:2327:25 | xs | [T;...] | main.rs:2273:5:2274:13 | S | +| main.rs:2332:16:2334:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2333:13:2333:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2333:17:2333:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2333:25:2333:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2333:25:2333:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2333:25:2333:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2333:25:2333:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2333:25:2333:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2333:25:2333:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2333:25:2333:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2333:38:2333:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2333:38:2333:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2342:19:2342:22 | SelfParam | | main.rs:2338:5:2343:5 | Self [trait MyAdd] | +| main.rs:2342:25:2342:27 | rhs | | main.rs:2338:17:2338:26 | Rhs | +| main.rs:2349:19:2349:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2349:25:2349:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2349:45:2351:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2350:13:2350:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2358:19:2358:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2358:25:2358:29 | value | | file://:0:0:0:0 | & | +| main.rs:2358:25:2358:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2358:46:2360:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2359:13:2359:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2359:14:2359:18 | value | | file://:0:0:0:0 | & | +| main.rs:2359:14:2359:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2367:19:2367:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2367:25:2367:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2367:46:2373:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2368:13:2372:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2368:13:2372:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2368:16:2368:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2368:22:2370:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2368:22:2370:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2369:17:2369:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2369:17:2369:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2370:20:2372:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2370:20:2372:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2371:17:2371:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:17:2371:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:19:2382:22 | SelfParam | | main.rs:2376:5:2376:19 | S | +| main.rs:2382:19:2382:22 | SelfParam | T | main.rs:2378:10:2378:17 | T | +| main.rs:2382:25:2382:29 | other | | main.rs:2376:5:2376:19 | S | +| main.rs:2382:25:2382:29 | other | T | main.rs:2378:10:2378:17 | T | +| main.rs:2382:54:2384:9 | { ... } | | main.rs:2376:5:2376:19 | S | +| main.rs:2382:54:2384:9 | { ... } | T | main.rs:2339:9:2339:20 | Output | +| main.rs:2383:13:2383:39 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2383:13:2383:39 | S(...) | T | main.rs:2339:9:2339:20 | Output | +| main.rs:2383:15:2383:22 | (...) | | main.rs:2378:10:2378:17 | T | +| main.rs:2383:15:2383:38 | ... .my_add(...) | | main.rs:2339:9:2339:20 | Output | +| main.rs:2383:16:2383:19 | self | | main.rs:2376:5:2376:19 | S | +| main.rs:2383:16:2383:19 | self | T | main.rs:2378:10:2378:17 | T | +| main.rs:2383:16:2383:21 | self.0 | | main.rs:2378:10:2378:17 | T | +| main.rs:2383:31:2383:35 | other | | main.rs:2376:5:2376:19 | S | +| main.rs:2383:31:2383:35 | other | T | main.rs:2378:10:2378:17 | T | +| main.rs:2383:31:2383:37 | other.0 | | main.rs:2378:10:2378:17 | T | +| main.rs:2391:19:2391:22 | SelfParam | | main.rs:2376:5:2376:19 | S | +| main.rs:2391:19:2391:22 | SelfParam | T | main.rs:2387:10:2387:17 | T | +| main.rs:2391:25:2391:29 | other | | main.rs:2387:10:2387:17 | T | +| main.rs:2391:51:2393:9 | { ... } | | main.rs:2376:5:2376:19 | S | +| main.rs:2391:51:2393:9 | { ... } | T | main.rs:2339:9:2339:20 | Output | +| main.rs:2392:13:2392:37 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2392:13:2392:37 | S(...) | T | main.rs:2339:9:2339:20 | Output | +| main.rs:2392:15:2392:22 | (...) | | main.rs:2387:10:2387:17 | T | +| main.rs:2392:15:2392:36 | ... .my_add(...) | | main.rs:2339:9:2339:20 | Output | +| main.rs:2392:16:2392:19 | self | | main.rs:2376:5:2376:19 | S | +| main.rs:2392:16:2392:19 | self | T | main.rs:2387:10:2387:17 | T | +| main.rs:2392:16:2392:21 | self.0 | | main.rs:2387:10:2387:17 | T | +| main.rs:2392:31:2392:35 | other | | main.rs:2387:10:2387:17 | T | +| main.rs:2403:19:2403:22 | SelfParam | | main.rs:2376:5:2376:19 | S | +| main.rs:2403:19:2403:22 | SelfParam | T | main.rs:2396:14:2396:14 | T | +| main.rs:2403:25:2403:29 | other | | file://:0:0:0:0 | & | +| main.rs:2403:25:2403:29 | other | &T | main.rs:2396:14:2396:14 | T | +| main.rs:2403:55:2405:9 | { ... } | | main.rs:2376:5:2376:19 | S | +| main.rs:2404:13:2404:37 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2404:15:2404:22 | (...) | | main.rs:2396:14:2396:14 | T | +| main.rs:2404:16:2404:19 | self | | main.rs:2376:5:2376:19 | S | +| main.rs:2404:16:2404:19 | self | T | main.rs:2396:14:2396:14 | T | +| main.rs:2404:16:2404:21 | self.0 | | main.rs:2396:14:2396:14 | T | +| main.rs:2404:31:2404:35 | other | | file://:0:0:0:0 | & | +| main.rs:2404:31:2404:35 | other | &T | main.rs:2396:14:2396:14 | T | +| main.rs:2410:20:2410:24 | value | | main.rs:2408:18:2408:18 | T | +| main.rs:2415:20:2415:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2415:40:2417:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2416:13:2416:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2422:20:2422:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2422:41:2428:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:13:2427:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2423:13:2427:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2423:16:2423:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2423:22:2425:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2423:22:2425:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2424:17:2424:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2424:17:2424:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2425:20:2427:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2425:20:2427:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2426:17:2426:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2426:17:2426:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2433:21:2433:25 | value | | main.rs:2431:19:2431:19 | T | +| main.rs:2433:31:2433:31 | x | | main.rs:2431:5:2434:5 | Self [trait MyFrom2] | +| main.rs:2438:21:2438:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2438:33:2438:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2438:48:2440:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2439:13:2439:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2445:21:2445:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2445:34:2445:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2445:49:2451:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2446:13:2450:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2446:16:2446:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2446:22:2448:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2447:17:2447:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2448:20:2450:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2449:17:2449:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2456:15:2456:15 | x | | main.rs:2454:5:2460:5 | Self [trait MySelfTrait] | +| main.rs:2459:15:2459:15 | x | | main.rs:2454:5:2460:5 | Self [trait MySelfTrait] | +| main.rs:2464:15:2464:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2464:31:2466:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:13:2465:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:13:2465:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2465:17:2465:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2469:15:2469:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2469:32:2471:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:13:2470:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:13:2470:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2470:17:2470:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2476:15:2476:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2476:31:2478:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2477:13:2477:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2477:13:2477:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2481:15:2481:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2481:32:2483:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2482:13:2482:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2486:16:2511:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2487:13:2487:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2487:22:2487:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2487:22:2487:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2488:9:2488:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2488:9:2488:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2488:18:2488:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2489:9:2489:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2489:9:2489:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2489:18:2489:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2489:18:2489:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2489:19:2489:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2490:9:2490:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2490:9:2490:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2490:18:2490:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2492:9:2492:15 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2492:9:2492:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2492:9:2492:31 | ... .my_add(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2492:11:2492:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2492:24:2492:30 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2492:24:2492:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2492:26:2492:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2493:9:2493:15 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2493:9:2493:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2493:11:2493:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2493:24:2493:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2494:9:2494:15 | S(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2494:9:2494:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2494:9:2494:29 | ... .my_add(...) | | main.rs:2376:5:2376:19 | S | +| main.rs:2494:11:2494:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2494:24:2494:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2494:24:2494:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2494:25:2494:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:13:2496:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:17:2496:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:30:2496:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2497:13:2497:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2497:17:2497:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2497:30:2497:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2498:13:2498:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2498:22:2498:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2498:38:2498:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2499:9:2499:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2499:23:2499:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2499:30:2499:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2500:9:2500:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2500:23:2500:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2500:29:2500:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2501:9:2501:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2501:27:2501:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2501:34:2501:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2503:9:2503:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2503:17:2503:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:9:2504:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:17:2504:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2505:9:2505:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2505:18:2505:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2506:9:2506:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2506:18:2506:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2507:9:2507:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2507:25:2507:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2508:9:2508:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2508:25:2508:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:9:2509:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2509:25:2509:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2510:9:2510:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2510:25:2510:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2518:26:2520:9 | { ... } | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2519:13:2519:25 | MyCallable {...} | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2522:17:2522:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2522:17:2522:21 | SelfParam | &T | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2522:31:2524:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2523:13:2523:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2523:13:2523:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2527:16:2634:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2530:9:2530:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2530:13:2530:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:18:2530:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2530:18:2530:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:19:2530:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:22:2530:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:25:2530:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:28:2530:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2531:9:2531:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2531:18:2531:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2531:18:2531:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:18:2531:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2531:19:2531:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:22:2531:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:25:2531:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:32:2531:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2531:32:2531:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2531:40:2531:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2531:43:2531:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2532:9:2532:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2532:13:2532:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2532:13:2532:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:18:2532:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2532:18:2532:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:18:2532:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2532:18:2532:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:19:2532:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:22:2532:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:25:2532:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2532:40:2532:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2534:13:2534:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2534:13:2534:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2534:13:2534:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2534:21:2534:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2534:21:2534:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2534:21:2534:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2534:22:2534:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2534:27:2534:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2534:27:2534:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2534:30:2534:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2534:30:2534:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2535:9:2535:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2535:13:2535:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2535:13:2535:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2535:18:2535:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2535:18:2535:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2535:18:2535:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2535:24:2535:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2537:13:2537:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2537:13:2537:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2537:21:2537:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2537:21:2537:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2537:22:2537:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2537:28:2537:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2538:9:2538:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2538:13:2538:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2538:18:2538:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2538:18:2538:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2538:24:2538:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2540:13:2540:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2540:13:2540:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2540:26:2540:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:31:2540:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2540:31:2540:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:31:2540:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2540:32:2540:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:32:2540:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2540:35:2540:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:35:2540:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2540:38:2540:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2540:38:2540:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2541:9:2541:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2541:13:2541:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2541:18:2541:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2541:18:2541:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2541:24:2541:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2543:13:2543:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2543:13:2543:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2543:26:2543:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:31:2543:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2543:31:2543:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:31:2543:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2543:32:2543:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2543:32:2543:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2543:35:2543:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2544:9:2544:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2544:13:2544:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2544:18:2544:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2544:18:2544:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2544:24:2544:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2546:17:2546:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2546:17:2546:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2546:17:2546:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2546:28:2546:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2546:28:2546:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2546:28:2546:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2546:29:2546:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2546:29:2546:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2546:36:2546:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2546:36:2546:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2546:43:2546:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2546:43:2546:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2547:9:2547:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2547:13:2547:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2547:13:2547:13 | s | | file://:0:0:0:0 | & | +| main.rs:2547:13:2547:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2547:13:2547:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:18:2547:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2547:18:2547:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2547:18:2547:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2547:18:2547:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:19:2547:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2547:19:2547:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2547:19:2547:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2547:28:2547:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2548:9:2548:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2548:13:2548:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2548:13:2548:13 | s | | file://:0:0:0:0 | & | +| main.rs:2548:13:2548:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2548:13:2548:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:18:2548:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2548:18:2548:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2548:18:2548:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2548:18:2548:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:23:2548:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2548:23:2548:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2548:23:2548:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2548:32:2548:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2549:9:2549:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2549:13:2549:13 | s | | file://:0:0:0:0 | & | +| main.rs:2549:13:2549:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2549:18:2549:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2549:18:2549:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2549:18:2549:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2549:27:2549:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2551:13:2551:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2551:13:2551:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2552:9:2556:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2552:9:2556:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2553:13:2553:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2553:26:2553:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2553:26:2553:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2554:13:2554:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2554:26:2554:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2554:26:2554:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2555:13:2555:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2555:26:2555:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2555:26:2555:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2557:9:2557:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2557:13:2557:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2557:18:2557:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2557:18:2557:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2557:27:2557:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2559:13:2559:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2559:13:2559:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2559:13:2559:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2560:9:2564:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2560:9:2564:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2560:9:2564:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2560:10:2564:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2560:10:2564:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2561:13:2561:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2561:26:2561:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2561:26:2561:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2562:13:2562:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2562:26:2562:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2562:26:2562:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2563:13:2563:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2563:26:2563:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2563:26:2563:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2565:9:2565:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2565:13:2565:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2565:13:2565:13 | s | | file://:0:0:0:0 | & | +| main.rs:2565:13:2565:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2565:18:2565:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2565:18:2565:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2565:18:2565:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2565:27:2565:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2567:13:2567:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2567:13:2567:21 | callables | [T;...] | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2567:25:2567:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2567:25:2567:81 | [...] | [T;...] | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2567:26:2567:42 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2567:45:2567:61 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2567:64:2567:80 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2568:9:2572:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2568:13:2568:13 | c | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2569:12:2569:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2569:12:2569:20 | callables | [T;...] | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2570:9:2572:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2571:17:2571:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:26:2571:26 | c | | main.rs:2515:5:2515:24 | MyCallable | +| main.rs:2571:26:2571:33 | c.call() | | {EXTERNAL LOCATION} | i64 | | main.rs:2576:9:2576:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2576:13:2576:13 | u | | file://:0:0:0:0 | & | -| main.rs:2576:13:2576:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2576:18:2576:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2576:18:2576:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2576:18:2576:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2576:18:2576:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2576:13:2576:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2576:13:2576:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2576:18:2576:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2576:18:2576:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2576:18:2576:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2576:21:2576:22 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2576:24:2576:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2578:17:2578:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2578:17:2578:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2578:17:2578:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2578:25:2578:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2578:25:2578:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2578:25:2578:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2579:9:2579:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2579:9:2579:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2579:9:2579:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2579:9:2579:23 | vals7.push(...) | | file://:0:0:0:0 | () | -| main.rs:2579:20:2579:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:9:2580:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2580:13:2580:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:13:2580:13 | u | | file://:0:0:0:0 | & | -| main.rs:2580:18:2580:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2580:18:2580:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2580:18:2580:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2580:24:2580:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2582:33:2582:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:36:2582:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:45:2582:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:48:2582:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:13:2584:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2584:17:2587:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2584:36:2587:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2585:13:2586:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2585:29:2586:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2589:17:2589:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2589:17:2589:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:17:2589:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2589:17:2589:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:17:2589:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:17:2589:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2589:17:2589:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2589:24:2589:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2589:24:2589:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2589:24:2589:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2589:24:2589:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2589:24:2589:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2589:24:2589:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2589:24:2589:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:9:2590:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2590:9:2590:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:9:2590:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2590:9:2590:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2590:9:2590:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:9:2590:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2590:9:2590:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:9:2590:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2590:9:2590:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2590:9:2590:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:21:2590:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2590:24:2590:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2590:24:2590:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2590:24:2590:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2590:24:2590:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2590:33:2590:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2590:33:2590:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2591:9:2591:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2591:9:2591:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2591:9:2591:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2591:9:2591:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2591:9:2591:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:9:2591:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2591:9:2591:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:9:2591:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2591:9:2591:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2591:9:2591:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:21:2591:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2591:24:2591:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2591:24:2591:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2591:24:2591:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2591:24:2591:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2591:33:2591:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2591:33:2591:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2592:9:2592:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2592:13:2592:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2592:13:2592:15 | key | | file://:0:0:0:0 | & | -| main.rs:2592:13:2592:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2592:20:2592:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2592:20:2592:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2592:20:2592:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2592:20:2592:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2592:20:2592:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2592:20:2592:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2592:20:2592:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:20:2592:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2592:20:2592:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2592:20:2592:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2592:20:2592:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2592:32:2592:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2593:9:2593:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2593:13:2593:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2593:13:2593:17 | value | | file://:0:0:0:0 | & | -| main.rs:2593:13:2593:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2593:13:2593:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:13:2593:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2593:13:2593:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:22:2593:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2593:22:2593:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:22:2593:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2593:22:2593:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2593:22:2593:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:22:2593:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2593:22:2593:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:22:2593:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2593:22:2593:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:22:2593:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2593:22:2593:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:22:2593:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2593:22:2593:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2593:36:2593:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2594:9:2594:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2594:13:2594:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2594:13:2594:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:13:2594:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2594:13:2594:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:14:2594:16 | key | | file://:0:0:0:0 | & | -| main.rs:2594:14:2594:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:19:2594:23 | value | | file://:0:0:0:0 | & | -| main.rs:2594:19:2594:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2594:19:2594:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:19:2594:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2594:19:2594:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:29:2594:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2594:29:2594:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:29:2594:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2594:29:2594:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2594:29:2594:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:29:2594:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2594:29:2594:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:29:2594:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2594:29:2594:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:29:2594:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2594:29:2594:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2594:29:2594:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2594:29:2594:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2594:41:2594:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2595:9:2595:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2595:13:2595:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2595:13:2595:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:13:2595:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2595:13:2595:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:14:2595:16 | key | | file://:0:0:0:0 | & | -| main.rs:2595:14:2595:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:19:2595:23 | value | | file://:0:0:0:0 | & | -| main.rs:2595:19:2595:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2595:19:2595:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:19:2595:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2595:19:2595:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:29:2595:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2595:29:2595:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2595:29:2595:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:29:2595:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2595:29:2595:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2595:29:2595:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:29:2595:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2595:29:2595:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:30:2595:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2595:30:2595:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:30:2595:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2595:30:2595:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2595:30:2595:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:30:2595:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2595:30:2595:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2595:35:2595:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2599:17:2599:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2599:26:2599:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2601:13:2601:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2601:17:2604:9 | while ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2601:23:2601:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2601:23:2601:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:27:2601:28 | 10 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2602:9:2604:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2603:13:2603:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2603:13:2603:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2603:18:2603:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:40:2617:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2615:40:2617:9 | { ... } | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2615:40:2617:9 | { ... } | T.T | main.rs:2614:10:2614:19 | T | -| main.rs:2616:13:2616:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2616:13:2616:16 | None | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2616:13:2616:16 | None | T.T | main.rs:2614:10:2614:19 | T | -| main.rs:2619:30:2621:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2619:30:2621:9 | { ... } | T | main.rs:2614:10:2614:19 | T | -| main.rs:2620:13:2620:28 | S1(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2620:13:2620:28 | S1(...) | T | main.rs:2614:10:2614:19 | T | -| main.rs:2620:16:2620:27 | ...::default(...) | | main.rs:2614:10:2614:19 | T | -| main.rs:2623:19:2623:22 | SelfParam | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2623:19:2623:22 | SelfParam | T | main.rs:2614:10:2614:19 | T | -| main.rs:2623:33:2625:9 | { ... } | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2623:33:2625:9 | { ... } | T | main.rs:2614:10:2614:19 | T | -| main.rs:2624:13:2624:16 | self | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2624:13:2624:16 | self | T | main.rs:2614:10:2614:19 | T | -| main.rs:2636:15:2636:15 | x | | main.rs:2636:12:2636:12 | T | -| main.rs:2636:26:2638:5 | { ... } | | main.rs:2636:12:2636:12 | T | -| main.rs:2637:9:2637:9 | x | | main.rs:2636:12:2636:12 | T | -| main.rs:2640:16:2662:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2641:13:2641:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2641:13:2641:14 | x1 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2641:13:2641:14 | x1 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2641:34:2641:48 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2642:13:2642:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2642:13:2642:14 | x2 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2642:13:2642:14 | x2 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2642:18:2642:38 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2643:13:2643:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2643:13:2643:14 | x3 | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2643:13:2643:14 | x3 | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T | main.rs:2609:5:2609:20 | S1 | -| main.rs:2643:18:2643:32 | ...::assoc_fun(...) | T.T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:13:2644:14 | x4 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:13:2644:14 | x4 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:18:2644:48 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:18:2644:48 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2644:35:2644:47 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2644:35:2644:47 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:13:2645:14 | x5 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:13:2645:14 | x5 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:18:2645:42 | ...::method(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:18:2645:42 | ...::method(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2645:29:2645:41 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2645:29:2645:41 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:13:2646:14 | x6 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2646:13:2646:14 | x6 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:18:2646:45 | S4::<...>(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2646:18:2646:45 | S4::<...>(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2646:27:2646:44 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:13:2647:14 | x7 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2647:13:2647:14 | x7 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:18:2647:23 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2647:18:2647:23 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2647:21:2647:22 | S2 | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2648:13:2648:14 | x8 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2648:13:2648:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:18:2648:22 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2648:18:2648:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2648:21:2648:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2649:13:2649:14 | x9 | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2649:13:2649:14 | x9 | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2649:18:2649:34 | S4(...) | | main.rs:2630:5:2630:27 | S4 | -| main.rs:2649:18:2649:34 | S4(...) | T4 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2649:21:2649:33 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2650:13:2650:15 | x10 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2650:13:2650:15 | x10 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2650:19:2653:9 | S5::<...> {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2650:19:2653:9 | S5::<...> {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2652:20:2652:37 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:13:2654:15 | x11 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2654:13:2654:15 | x11 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:19:2654:34 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2654:19:2654:34 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2654:31:2654:32 | S2 | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2655:13:2655:15 | x12 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2655:13:2655:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:19:2655:33 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2655:19:2655:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2655:31:2655:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2656:13:2656:15 | x13 | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2656:13:2656:15 | x13 | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2656:19:2659:9 | S5 {...} | | main.rs:2632:5:2634:5 | S5 | -| main.rs:2656:19:2659:9 | S5 {...} | T5 | main.rs:2611:5:2612:14 | S2 | -| main.rs:2658:20:2658:32 | ...::default(...) | | main.rs:2611:5:2612:14 | S2 | -| main.rs:2660:13:2660:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:19:2660:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:30:2660:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2661:13:2661:15 | x15 | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2661:13:2661:15 | x15 | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2661:19:2661:37 | ...::default(...) | | main.rs:2609:5:2609:20 | S1 | -| main.rs:2661:19:2661:37 | ...::default(...) | T | main.rs:2611:5:2612:14 | S2 | -| main.rs:2670:35:2672:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2670:35:2672:9 | { ... } | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2670:35:2672:9 | { ... } | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:13:2671:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2671:13:2671:26 | TupleExpr | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:13:2671:26 | TupleExpr | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:14:2671:18 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2671:21:2671:25 | S1 {...} | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2673:16:2673:19 | SelfParam | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2673:22:2673:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2676:16:2710:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2677:13:2677:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2677:13:2677:13 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:13:2677:13 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2677:17:2677:30 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:17:2678:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2678:17:2678:17 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:17:2678:17 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2678:21:2678:34 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:13:2679:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2679:13:2679:18 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:13:2679:18 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:14:2679:14 | c | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:17:2679:17 | d | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2679:22:2679:35 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:13:2680:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2680:13:2680:22 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:13:2680:22 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:18:2680:18 | e | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:21:2680:21 | f | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2680:26:2680:39 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:13:2681:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2681:13:2681:26 | TuplePat | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:13:2681:26 | TuplePat | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:18:2681:18 | g | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:25:2681:25 | h | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2681:30:2681:43 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2683:9:2683:9 | a | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:9 | a | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:11 | a.0 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2683:9:2683:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2684:9:2684:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2684:9:2684:9 | b | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:9 | b | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:11 | b.1 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2684:9:2684:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2685:9:2685:9 | c | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2685:9:2685:15 | c.foo() | | file://:0:0:0:0 | () | -| main.rs:2686:9:2686:9 | d | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2686:9:2686:15 | d.foo() | | file://:0:0:0:0 | () | -| main.rs:2687:9:2687:9 | e | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2687:9:2687:15 | e.foo() | | file://:0:0:0:0 | () | -| main.rs:2688:9:2688:9 | f | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2688:9:2688:15 | f.foo() | | file://:0:0:0:0 | () | -| main.rs:2689:9:2689:9 | g | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2689:9:2689:15 | g.foo() | | file://:0:0:0:0 | () | -| main.rs:2690:9:2690:9 | h | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2690:9:2690:15 | h.foo() | | file://:0:0:0:0 | () | -| main.rs:2695:13:2695:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2696:13:2696:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2696:17:2696:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2697:13:2697:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2697:13:2697:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:13:2697:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2697:20:2697:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2697:20:2697:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:20:2697:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2697:21:2697:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2697:24:2697:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2698:13:2698:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2698:22:2698:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2698:22:2698:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2698:22:2698:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2698:22:2698:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2699:13:2699:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2699:23:2699:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2699:23:2699:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2699:23:2699:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2699:23:2699:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2701:13:2701:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2701:13:2701:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:13:2701:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2701:20:2701:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2701:20:2701:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:20:2701:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:21:2701:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:24:2701:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:9:2705:9 | match pair { ... } | | file://:0:0:0:0 | () | -| main.rs:2702:15:2702:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2702:15:2702:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:15:2702:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:13:2703:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2703:13:2703:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:13:2703:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:14:2703:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:17:2703:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2703:23:2703:42 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2703:30:2703:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2703:30:2703:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2703:30:2703:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2703:30:2703:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2703:30:2703:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2703:30:2703:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2704:13:2704:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2704:13:2704:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:13:2704:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:18:2704:35 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2704:25:2704:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2704:25:2704:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2704:25:2704:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2704:25:2704:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2704:25:2704:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2704:25:2704:34 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2706:13:2706:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2706:17:2706:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2706:17:2706:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2708:13:2708:13 | y | | file://:0:0:0:0 | & | -| main.rs:2708:13:2708:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2708:13:2708:13 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:13:2708:13 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:17:2708:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2708:17:2708:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2708:17:2708:31 | &... | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:17:2708:31 | &... | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | 0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2708:18:2708:31 | ...::get_pair(...) | 1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:9 | y | | file://:0:0:0:0 | & | -| main.rs:2709:9:2709:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2709:9:2709:9 | y | &T.0(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:9 | y | &T.1(2) | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:11 | y.0 | | main.rs:2666:5:2667:16 | S1 | -| main.rs:2709:9:2709:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2715:27:2737:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2716:13:2716:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2716:13:2716:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2716:13:2716:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2716:27:2716:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2716:27:2716:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2716:27:2716:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2716:36:2716:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:9:2727:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | -| main.rs:2719:15:2719:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2719:15:2719:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2719:15:2719:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:13:2720:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2720:13:2720:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2720:13:2720:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:17:2720:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:24:2722:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2721:26:2721:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2721:26:2721:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2721:26:2721:36 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2721:26:2721:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2721:26:2721:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2721:26:2721:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2723:13:2723:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2723:13:2723:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2723:13:2723:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2723:22:2726:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2725:26:2725:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2725:26:2725:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2725:26:2725:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2725:26:2725:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2725:26:2725:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2730:13:2730:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:13:2730:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:13:2730:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2730:13:2730:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:13:2730:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:26:2730:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:26:2730:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:26:2730:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2730:26:2730:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:26:2730:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:35:2730:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2730:35:2730:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2730:35:2730:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:44:2730:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2731:9:2736:9 | match nested_box { ... } | | file://:0:0:0:0 | () | -| main.rs:2731:15:2731:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2731:15:2731:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2731:15:2731:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2731:15:2731:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2731:15:2731:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:13:2732:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2732:13:2732:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2732:13:2732:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2732:13:2732:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2732:13:2732:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:26:2735:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2734:26:2734:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2734:26:2734:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2734:26:2734:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2734:26:2734:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2734:26:2734:59 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2746:36:2748:9 | { ... } | | main.rs:2743:5:2743:22 | Path | -| main.rs:2747:13:2747:19 | Path {...} | | main.rs:2743:5:2743:22 | Path | -| main.rs:2750:29:2750:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2750:29:2750:33 | SelfParam | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2750:59:2752:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2750:59:2752:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2750:59:2752:9 | { ... } | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2751:13:2751:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2751:13:2751:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2751:13:2751:30 | Ok(...) | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2751:16:2751:29 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2758:39:2760:9 | { ... } | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2759:13:2759:22 | PathBuf {...} | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2768:18:2768:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2768:18:2768:22 | SelfParam | &T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2768:34:2772:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2768:34:2772:9 | { ... } | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2770:33:2770:43 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | -| main.rs:2771:13:2771:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2771:13:2771:17 | &path | &T | main.rs:2743:5:2743:22 | Path | -| main.rs:2771:14:2771:17 | path | | main.rs:2743:5:2743:22 | Path | -| main.rs:2775:16:2783:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2776:13:2776:17 | path1 | | main.rs:2743:5:2743:22 | Path | -| main.rs:2776:21:2776:31 | ...::new(...) | | main.rs:2743:5:2743:22 | Path | -| main.rs:2777:13:2777:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2777:13:2777:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2777:13:2777:17 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2777:21:2777:25 | path1 | | main.rs:2743:5:2743:22 | Path | -| main.rs:2777:21:2777:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2777:21:2777:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2777:21:2777:40 | path1.canonicalize() | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:13:2778:17 | path3 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:21:2778:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2778:21:2778:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2778:21:2778:25 | path2 | T | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2778:21:2778:34 | path2.unwrap() | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2780:13:2780:20 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2780:24:2780:37 | ...::new(...) | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2781:24:2781:31 | pathbuf1 | | main.rs:2755:5:2755:25 | PathBuf | -| main.rs:2788:14:2788:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2788:14:2788:18 | SelfParam | &T | main.rs:2787:5:2789:5 | Self [trait MyTrait] | -| main.rs:2795:14:2795:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2795:14:2795:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2795:14:2795:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2795:28:2797:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:13:2796:16 | self | | file://:0:0:0:0 | & | -| main.rs:2796:13:2796:16 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2796:13:2796:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2796:13:2796:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2801:14:2801:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2801:14:2801:18 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2801:14:2801:18 | SelfParam | &T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2801:14:2801:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2801:28:2803:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:16 | self | | file://:0:0:0:0 | & | -| main.rs:2802:13:2802:16 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:16 | self | &T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:18 | self.0 | | main.rs:2791:5:2792:19 | S | -| main.rs:2802:13:2802:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2802:13:2802:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2807:15:2807:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2807:15:2807:19 | SelfParam | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2807:15:2807:19 | SelfParam | &T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2807:33:2809:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2807:33:2809:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2807:33:2809:9 | { ... } | T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:13:2808:24 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2808:13:2808:24 | S(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2808:13:2808:24 | S(...) | T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:15:2808:23 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2808:15:2808:23 | S(...) | T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:17:2808:20 | self | | file://:0:0:0:0 | & | -| main.rs:2808:17:2808:20 | self | &T | main.rs:2791:5:2792:19 | S | -| main.rs:2808:17:2808:20 | self | &T.T | main.rs:2806:10:2806:16 | T | -| main.rs:2808:17:2808:22 | self.0 | | main.rs:2806:10:2806:16 | T | -| main.rs:2812:14:2812:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2812:48:2829:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2812:48:2829:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2812:48:2829:5 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2812:48:2829:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:13:2813:13 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:13:2813:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:17:2818:9 | if b {...} else {...} | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:17:2818:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:20:2813:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2813:22:2816:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2813:22:2816:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:17:2814:17 | y | | main.rs:2791:5:2792:19 | S | -| main.rs:2814:17:2814:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:21:2814:38 | ...::default(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2814:21:2814:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2815:13:2815:13 | y | | main.rs:2791:5:2792:19 | S | -| main.rs:2815:13:2815:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2816:16:2818:9 | { ... } | | main.rs:2791:5:2792:19 | S | -| main.rs:2816:16:2818:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:13:2817:16 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2817:13:2817:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2817:15:2817:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:13 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2822:13:2822:13 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2822:13:2822:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:13:2822:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:17:2822:20 | S(...) | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2822:17:2822:20 | S(...) | | main.rs:2791:5:2792:19 | S | -| main.rs:2822:17:2822:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:17:2822:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2822:19:2822:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2823:9:2828:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:9:2828:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:12:2823:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2823:14:2826:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2823:14:2826:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2823:14:2826:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:14:2826:9 | { ... } | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2823:14:2826:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2823:14:2826:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:17:2824:17 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:17:2824:17 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:17:2824:17 | x | T | main.rs:2791:5:2792:19 | S | -| main.rs:2824:17:2824:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:17:2824:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:21 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:21:2824:21 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2824:21:2824:26 | x.m2() | | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:26 | x.m2() | T | main.rs:2791:5:2792:19 | S | -| main.rs:2824:21:2824:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:21:2824:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2825:13:2825:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2825:13:2825:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:13:2825:23 | ...::new(...) | T.T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:13:2825:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:22:2825:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2825:22:2825:22 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2825:22:2825:22 | x | T | main.rs:2791:5:2792:19 | S | -| main.rs:2825:22:2825:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:22:2825:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2826:16:2828:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2826:16:2828:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2826:16:2828:9 | { ... } | T | main.rs:2791:5:2792:19 | S | -| main.rs:2826:16:2828:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2826:16:2828:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:13:2827:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2827:13:2827:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2827:13:2827:23 | ...::new(...) | T | main.rs:2791:5:2792:19 | S | -| main.rs:2827:13:2827:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:13:2827:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:22:2827:22 | x | | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2827:22:2827:22 | x | | main.rs:2791:5:2792:19 | S | -| main.rs:2827:22:2827:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2827:22:2827:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2833:22:2837:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2834:18:2834:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2834:33:2836:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:13:2835:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:13:2835:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:2835:17:2835:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:11:2842:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2842:30:2850:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2844:13:2844:13 | a | | file://:0:0:0:0 | () | -| main.rs:2844:17:2848:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2845:13:2847:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2845:16:2845:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2845:21:2847:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2846:24:2846:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2849:9:2849:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:20:2860:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:26:2856:27 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2858:18:2858:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2858:18:2858:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2858:18:2858:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2858:18:2858:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2858:18:2858:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2858:18:2858:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2867:11:2867:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2867:30:2875:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2868:13:2868:13 | a | | file://:0:0:0:0 | () | -| main.rs:2868:17:2872:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2869:13:2871:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2869:16:2869:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2869:21:2871:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2870:24:2870:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2873:18:2873:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2873:18:2873:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2873:18:2873:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2873:18:2873:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2873:18:2873:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2873:18:2873:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2873:29:2873:29 | a | | file://:0:0:0:0 | () | -| main.rs:2874:9:2874:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2883:11:2918:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2884:5:2884:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2885:5:2885:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:5:2886:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:20:2886:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2886:41:2886:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2887:5:2887:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2888:5:2888:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2889:5:2889:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2890:5:2890:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2891:5:2891:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2892:5:2892:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2893:5:2893:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2894:5:2894:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2895:5:2895:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2896:5:2896:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2897:5:2897:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2898:5:2898:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2899:5:2899:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2900:5:2900:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2901:5:2901:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2902:5:2902:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2903:5:2903:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2903:5:2903:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2904:5:2904:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2905:5:2905:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2906:5:2906:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2907:5:2907:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2908:5:2908:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2909:5:2909:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2910:5:2910:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2911:5:2911:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2912:5:2912:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2913:5:2913:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2914:5:2914:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2915:5:2915:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2916:5:2916:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2916:5:2916:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2916:5:2916:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait | -| main.rs:2916:5:2916:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2916:16:2916:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2917:5:2917:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2577:9:2577:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2577:13:2577:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2577:13:2577:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:13:2577:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:18:2577:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2577:18:2577:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2577:18:2577:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:18:2577:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:19:2577:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:19:2577:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2577:19:2577:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:19:2577:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:24:2577:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2577:24:2577:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2577:28:2577:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2578:13:2578:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2578:13:2578:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:21:2578:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:21:2578:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2578:21:2578:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:24:2578:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:9:2579:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2579:13:2579:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2579:13:2579:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:18:2579:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2579:18:2579:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:24:2579:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2580:13:2580:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2580:26:2580:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2581:9:2581:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2581:13:2581:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2581:18:2581:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2581:19:2581:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2581:19:2581:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:20:2581:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:26:2581:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:32:2581:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:38:2581:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2581:50:2581:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2583:13:2583:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2583:13:2583:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2584:9:2587:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2584:9:2587:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2585:20:2585:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2586:18:2586:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2588:9:2588:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2588:13:2588:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2588:13:2588:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2588:18:2588:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2588:18:2588:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2588:25:2588:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2592:26:2592:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:29:2592:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:32:2592:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2593:9:2593:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2593:24:2593:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2595:13:2595:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2595:13:2595:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:13:2595:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2595:32:2595:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2595:32:2595:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:32:2595:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2595:32:2595:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2595:32:2595:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2595:32:2595:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2595:33:2595:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2595:39:2595:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2595:42:2595:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2596:9:2596:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2596:13:2596:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2596:13:2596:13 | u | | file://:0:0:0:0 | & | +| main.rs:2596:18:2596:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2596:18:2596:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2596:18:2596:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2596:25:2596:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2598:22:2598:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2598:22:2598:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2598:22:2598:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2598:23:2598:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2598:29:2598:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2598:32:2598:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2599:9:2599:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2599:25:2599:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2601:13:2601:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2601:13:2601:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2601:13:2601:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:13:2601:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2601:21:2601:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2601:21:2601:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2601:21:2601:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:21:2601:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2601:31:2601:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2601:31:2601:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:31:2601:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2601:32:2601:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2601:38:2601:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:41:2601:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:9:2602:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2602:13:2602:13 | u | | file://:0:0:0:0 | & | +| main.rs:2602:18:2602:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2602:18:2602:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2602:18:2602:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:18:2602:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2602:24:2602:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2604:13:2604:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2604:13:2604:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2604:13:2604:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2604:13:2604:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2604:32:2604:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2604:32:2604:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:32:2604:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2604:32:2604:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2604:32:2604:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2604:32:2604:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2604:32:2604:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2604:33:2604:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2604:39:2604:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:42:2604:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2605:9:2605:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2605:13:2605:13 | u | | file://:0:0:0:0 | & | +| main.rs:2605:13:2605:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2605:18:2605:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2605:18:2605:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2605:18:2605:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2605:18:2605:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2605:24:2605:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2607:17:2607:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2607:17:2607:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2607:17:2607:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2607:25:2607:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2607:25:2607:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2607:25:2607:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2608:9:2608:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2608:9:2608:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2608:9:2608:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2608:9:2608:23 | vals7.push(...) | | file://:0:0:0:0 | () | +| main.rs:2608:20:2608:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2609:9:2609:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2609:13:2609:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2609:13:2609:13 | u | | file://:0:0:0:0 | & | +| main.rs:2609:18:2609:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2609:18:2609:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2609:18:2609:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2609:24:2609:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2611:33:2611:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:36:2611:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:45:2611:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:48:2611:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:13:2613:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2613:17:2616:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2613:36:2616:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2614:13:2615:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2614:29:2615:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2618:17:2618:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2618:17:2618:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2618:17:2618:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2618:17:2618:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2618:17:2618:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2618:17:2618:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2618:17:2618:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2618:24:2618:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2618:24:2618:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2618:24:2618:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2618:24:2618:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2618:24:2618:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2618:24:2618:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2618:24:2618:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2619:9:2619:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2619:9:2619:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:9:2619:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2619:9:2619:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2619:9:2619:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2619:9:2619:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2619:9:2619:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2619:9:2619:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2619:9:2619:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2619:9:2619:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2619:9:2619:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2619:9:2619:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2619:21:2619:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:24:2619:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2619:24:2619:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2619:24:2619:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2619:24:2619:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2619:33:2619:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2619:33:2619:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2620:9:2620:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2620:9:2620:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2620:9:2620:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2620:9:2620:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2620:9:2620:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2620:9:2620:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2620:9:2620:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2620:9:2620:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2620:9:2620:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2620:9:2620:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2620:9:2620:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2620:9:2620:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2620:21:2620:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2620:24:2620:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2620:24:2620:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2620:24:2620:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2620:24:2620:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2620:33:2620:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2620:33:2620:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2621:9:2621:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2621:13:2621:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2621:13:2621:15 | key | | file://:0:0:0:0 | & | +| main.rs:2621:13:2621:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:20:2621:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2621:20:2621:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:20:2621:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2621:20:2621:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2621:20:2621:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2621:20:2621:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2621:20:2621:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2621:20:2621:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2621:20:2621:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:20:2621:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2621:20:2621:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2621:20:2621:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2621:20:2621:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2621:32:2621:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2622:9:2622:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2622:13:2622:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2622:13:2622:17 | value | | file://:0:0:0:0 | & | +| main.rs:2622:13:2622:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2622:13:2622:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2622:13:2622:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2622:13:2622:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2622:22:2622:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2622:22:2622:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2622:22:2622:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2622:22:2622:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2622:22:2622:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2622:22:2622:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2622:22:2622:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2622:22:2622:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2622:22:2622:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2622:22:2622:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2622:22:2622:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2622:22:2622:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2622:22:2622:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2622:36:2622:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2623:9:2623:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2623:13:2623:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2623:13:2623:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2623:13:2623:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2623:13:2623:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2623:14:2623:16 | key | | file://:0:0:0:0 | & | +| main.rs:2623:14:2623:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2623:19:2623:23 | value | | file://:0:0:0:0 | & | +| main.rs:2623:19:2623:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2623:19:2623:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2623:19:2623:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2623:19:2623:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2623:29:2623:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2623:29:2623:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2623:29:2623:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2623:29:2623:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2623:29:2623:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2623:29:2623:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2623:29:2623:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2623:29:2623:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2623:29:2623:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2623:29:2623:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2623:29:2623:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2623:29:2623:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2623:29:2623:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2623:41:2623:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2624:9:2624:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2624:13:2624:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2624:13:2624:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2624:13:2624:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:13:2624:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2624:14:2624:16 | key | | file://:0:0:0:0 | & | +| main.rs:2624:14:2624:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:19:2624:23 | value | | file://:0:0:0:0 | & | +| main.rs:2624:19:2624:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2624:19:2624:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2624:19:2624:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2624:19:2624:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2624:29:2624:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2624:29:2624:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2624:29:2624:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:29:2624:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2624:29:2624:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2624:29:2624:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2624:29:2624:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2624:29:2624:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2624:30:2624:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2624:30:2624:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:30:2624:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2624:30:2624:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2624:30:2624:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2624:30:2624:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2624:30:2624:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2624:35:2624:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2628:17:2628:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2628:26:2628:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2628:26:2628:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2630:13:2630:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2630:17:2633:9 | while ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2630:23:2630:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2630:23:2630:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2630:27:2630:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2630:27:2630:28 | 10 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2631:9:2633:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2632:13:2632:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2632:13:2632:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2632:18:2632:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2644:40:2646:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2644:40:2646:9 | { ... } | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2644:40:2646:9 | { ... } | T.T | main.rs:2643:10:2643:19 | T | +| main.rs:2645:13:2645:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2645:13:2645:16 | None | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2645:13:2645:16 | None | T.T | main.rs:2643:10:2643:19 | T | +| main.rs:2648:30:2650:9 | { ... } | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2648:30:2650:9 | { ... } | T | main.rs:2643:10:2643:19 | T | +| main.rs:2649:13:2649:28 | S1(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2649:13:2649:28 | S1(...) | T | main.rs:2643:10:2643:19 | T | +| main.rs:2649:16:2649:27 | ...::default(...) | | main.rs:2643:10:2643:19 | T | +| main.rs:2652:19:2652:22 | SelfParam | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2652:19:2652:22 | SelfParam | T | main.rs:2643:10:2643:19 | T | +| main.rs:2652:33:2654:9 | { ... } | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2652:33:2654:9 | { ... } | T | main.rs:2643:10:2643:19 | T | +| main.rs:2653:13:2653:16 | self | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2653:13:2653:16 | self | T | main.rs:2643:10:2643:19 | T | +| main.rs:2665:15:2665:15 | x | | main.rs:2665:12:2665:12 | T | +| main.rs:2665:26:2667:5 | { ... } | | main.rs:2665:12:2665:12 | T | +| main.rs:2666:9:2666:9 | x | | main.rs:2665:12:2665:12 | T | +| main.rs:2669:16:2691:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2670:13:2670:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2670:13:2670:14 | x1 | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2670:13:2670:14 | x1 | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2671:13:2671:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2671:13:2671:14 | x2 | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2671:13:2671:14 | x2 | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2672:13:2672:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2672:13:2672:14 | x3 | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2672:13:2672:14 | x3 | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | +| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2673:13:2673:14 | x4 | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2673:13:2673:14 | x4 | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2673:18:2673:48 | ...::method(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2673:18:2673:48 | ...::method(...) | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2673:35:2673:47 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2673:35:2673:47 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2674:13:2674:14 | x5 | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2674:13:2674:14 | x5 | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2674:18:2674:42 | ...::method(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2674:18:2674:42 | ...::method(...) | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2674:29:2674:41 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2674:29:2674:41 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2675:13:2675:14 | x6 | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2675:13:2675:14 | x6 | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2675:18:2675:45 | S4::<...>(...) | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2675:18:2675:45 | S4::<...>(...) | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2675:27:2675:44 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2676:13:2676:14 | x7 | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2676:13:2676:14 | x7 | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2676:18:2676:23 | S4(...) | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2676:18:2676:23 | S4(...) | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2676:21:2676:22 | S2 | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2677:13:2677:14 | x8 | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2677:13:2677:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:18:2677:22 | S4(...) | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2677:18:2677:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:21:2677:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2678:13:2678:14 | x9 | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2678:13:2678:14 | x9 | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2678:18:2678:34 | S4(...) | | main.rs:2659:5:2659:27 | S4 | +| main.rs:2678:18:2678:34 | S4(...) | T4 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2678:21:2678:33 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2679:13:2679:15 | x10 | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2679:13:2679:15 | x10 | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2679:19:2682:9 | S5::<...> {...} | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2679:19:2682:9 | S5::<...> {...} | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2681:20:2681:37 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2683:13:2683:15 | x11 | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2683:13:2683:15 | x11 | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2683:19:2683:34 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2683:19:2683:34 | S5 {...} | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2683:31:2683:32 | S2 | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2684:13:2684:15 | x12 | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2684:13:2684:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:19:2684:33 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2684:19:2684:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:31:2684:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:13:2685:15 | x13 | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2685:13:2685:15 | x13 | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2685:19:2688:9 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | +| main.rs:2685:19:2688:9 | S5 {...} | T5 | main.rs:2640:5:2641:14 | S2 | +| main.rs:2687:20:2687:32 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | +| main.rs:2689:13:2689:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:19:2689:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2689:30:2689:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2690:13:2690:15 | x15 | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2690:13:2690:15 | x15 | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2690:19:2690:37 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | +| main.rs:2690:19:2690:37 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | +| main.rs:2699:35:2701:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2699:35:2701:9 | { ... } | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2699:35:2701:9 | { ... } | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2700:13:2700:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2700:13:2700:26 | TupleExpr | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2700:13:2700:26 | TupleExpr | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2700:14:2700:18 | S1 {...} | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2700:21:2700:25 | S1 {...} | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2702:16:2702:19 | SelfParam | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2702:22:2702:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2705:16:2739:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2706:13:2706:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2706:13:2706:13 | a | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2706:13:2706:13 | a | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2706:17:2706:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2706:17:2706:30 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2706:17:2706:30 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2707:17:2707:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2707:17:2707:17 | b | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2707:17:2707:17 | b | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2707:21:2707:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2707:21:2707:34 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2707:21:2707:34 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:13:2708:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2708:13:2708:18 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:13:2708:18 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:14:2708:14 | c | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:17:2708:17 | d | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:22:2708:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2708:22:2708:35 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2708:22:2708:35 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:13:2709:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2709:13:2709:22 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:13:2709:22 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:18:2709:18 | e | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:21:2709:21 | f | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:26:2709:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2709:26:2709:39 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2709:26:2709:39 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:13:2710:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2710:13:2710:26 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:13:2710:26 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:18:2710:18 | g | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:25:2710:25 | h | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:30:2710:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2710:30:2710:43 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2710:30:2710:43 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2712:9:2712:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2712:9:2712:9 | a | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2712:9:2712:9 | a | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2712:9:2712:11 | a.0 | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2712:9:2712:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2713:9:2713:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2713:9:2713:9 | b | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2713:9:2713:9 | b | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2713:9:2713:11 | b.1 | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2713:9:2713:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2714:9:2714:9 | c | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2714:9:2714:15 | c.foo() | | file://:0:0:0:0 | () | +| main.rs:2715:9:2715:9 | d | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2715:9:2715:15 | d.foo() | | file://:0:0:0:0 | () | +| main.rs:2716:9:2716:9 | e | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2716:9:2716:15 | e.foo() | | file://:0:0:0:0 | () | +| main.rs:2717:9:2717:9 | f | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2717:9:2717:15 | f.foo() | | file://:0:0:0:0 | () | +| main.rs:2718:9:2718:9 | g | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2718:9:2718:15 | g.foo() | | file://:0:0:0:0 | () | +| main.rs:2719:9:2719:9 | h | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2719:9:2719:15 | h.foo() | | file://:0:0:0:0 | () | +| main.rs:2724:13:2724:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2724:17:2724:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2725:13:2725:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2725:17:2725:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2726:13:2726:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2726:13:2726:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2726:13:2726:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2726:20:2726:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2726:20:2726:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2726:20:2726:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2726:21:2726:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2726:24:2726:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2727:13:2727:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2727:22:2727:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2727:22:2727:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2727:22:2727:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2727:22:2727:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2728:13:2728:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2728:23:2728:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2728:23:2728:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2728:23:2728:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2728:23:2728:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2730:13:2730:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2730:13:2730:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:13:2730:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:20:2730:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2730:20:2730:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:20:2730:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2730:20:2730:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:20:2730:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:21:2730:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2730:24:2730:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2731:9:2734:9 | match pair { ... } | | file://:0:0:0:0 | () | +| main.rs:2731:15:2731:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2731:15:2731:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2731:15:2731:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:13:2732:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2732:13:2732:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:13:2732:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:14:2732:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:17:2732:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2732:23:2732:42 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:2732:30:2732:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2732:30:2732:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2732:30:2732:41 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2732:30:2732:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2732:30:2732:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2732:30:2732:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2733:13:2733:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2733:13:2733:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2733:13:2733:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2733:18:2733:35 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:2733:25:2733:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2733:25:2733:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2733:25:2733:34 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2733:25:2733:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2733:25:2733:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2733:25:2733:34 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2735:13:2735:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2735:17:2735:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2735:17:2735:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:13:2737:13 | y | | file://:0:0:0:0 | & | +| main.rs:2737:13:2737:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2737:13:2737:13 | y | &T.0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2737:13:2737:13 | y | &T.1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2737:17:2737:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2737:17:2737:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2737:17:2737:31 | &... | &T.0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2737:17:2737:31 | &... | &T.1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2737:18:2737:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2737:18:2737:31 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2737:18:2737:31 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2738:9:2738:9 | y | | file://:0:0:0:0 | & | +| main.rs:2738:9:2738:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2738:9:2738:9 | y | &T.0(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2738:9:2738:9 | y | &T.1(2) | main.rs:2695:5:2696:16 | S1 | +| main.rs:2738:9:2738:11 | y.0 | | main.rs:2695:5:2696:16 | S1 | +| main.rs:2738:9:2738:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2744:27:2766:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2745:13:2745:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2745:13:2745:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2745:13:2745:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2745:27:2745:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2745:27:2745:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2745:27:2745:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2745:36:2745:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2748:9:2756:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | +| main.rs:2748:15:2748:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2748:15:2748:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2748:15:2748:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2749:13:2749:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2749:13:2749:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2749:13:2749:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2749:17:2749:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2749:24:2751:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2750:26:2750:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2750:26:2750:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2750:26:2750:36 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2750:26:2750:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2750:26:2750:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2750:26:2750:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2752:13:2752:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2752:13:2752:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2752:13:2752:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2752:22:2755:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2754:26:2754:51 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2754:26:2754:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2754:26:2754:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2754:26:2754:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2759:13:2759:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2759:13:2759:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2759:13:2759:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2759:13:2759:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2759:13:2759:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:26:2759:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2759:26:2759:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2759:26:2759:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2759:26:2759:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2759:26:2759:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:35:2759:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2759:35:2759:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2759:35:2759:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:44:2759:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2760:9:2765:9 | match nested_box { ... } | | file://:0:0:0:0 | () | +| main.rs:2760:15:2760:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2760:15:2760:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2760:15:2760:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2760:15:2760:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2760:15:2760:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2761:13:2761:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2761:13:2761:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2761:13:2761:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2761:13:2761:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2761:13:2761:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2761:26:2764:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2763:26:2763:59 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2763:26:2763:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2763:26:2763:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2763:26:2763:59 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2775:36:2777:9 | { ... } | | main.rs:2772:5:2772:22 | Path | +| main.rs:2776:13:2776:19 | Path {...} | | main.rs:2772:5:2772:22 | Path | +| main.rs:2779:29:2779:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2779:29:2779:33 | SelfParam | &T | main.rs:2772:5:2772:22 | Path | +| main.rs:2779:59:2781:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2779:59:2781:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2779:59:2781:9 | { ... } | T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2780:13:2780:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2780:13:2780:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2780:13:2780:30 | Ok(...) | T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2780:16:2780:29 | ...::new(...) | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2787:39:2789:9 | { ... } | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2788:13:2788:22 | PathBuf {...} | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2797:18:2797:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2797:18:2797:22 | SelfParam | &T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2797:34:2801:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2797:34:2801:9 | { ... } | &T | main.rs:2772:5:2772:22 | Path | +| main.rs:2799:33:2799:43 | ...::new(...) | | main.rs:2772:5:2772:22 | Path | +| main.rs:2800:13:2800:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2800:13:2800:17 | &path | &T | main.rs:2772:5:2772:22 | Path | +| main.rs:2800:14:2800:17 | path | | main.rs:2772:5:2772:22 | Path | +| main.rs:2804:16:2812:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2805:13:2805:17 | path1 | | main.rs:2772:5:2772:22 | Path | +| main.rs:2805:21:2805:31 | ...::new(...) | | main.rs:2772:5:2772:22 | Path | +| main.rs:2806:13:2806:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2806:13:2806:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2806:13:2806:17 | path2 | T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2806:21:2806:25 | path1 | | main.rs:2772:5:2772:22 | Path | +| main.rs:2806:21:2806:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2806:21:2806:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2806:21:2806:40 | path1.canonicalize() | T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2807:13:2807:17 | path3 | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2807:21:2807:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2807:21:2807:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2807:21:2807:25 | path2 | T | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2807:21:2807:34 | path2.unwrap() | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2809:13:2809:20 | pathbuf1 | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2809:24:2809:37 | ...::new(...) | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2810:24:2810:31 | pathbuf1 | | main.rs:2784:5:2784:25 | PathBuf | +| main.rs:2817:14:2817:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2817:14:2817:18 | SelfParam | &T | main.rs:2816:5:2818:5 | Self [trait MyTrait] | +| main.rs:2824:14:2824:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2824:14:2824:18 | SelfParam | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2824:14:2824:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2824:28:2826:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:13:2825:16 | self | | file://:0:0:0:0 | & | +| main.rs:2825:13:2825:16 | self | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2825:13:2825:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2825:13:2825:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:14:2830:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2830:14:2830:18 | SelfParam | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2830:14:2830:18 | SelfParam | &T.T | main.rs:2820:5:2821:19 | S | +| main.rs:2830:14:2830:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:28:2832:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2831:13:2831:16 | self | | file://:0:0:0:0 | & | +| main.rs:2831:13:2831:16 | self | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2831:13:2831:16 | self | &T.T | main.rs:2820:5:2821:19 | S | +| main.rs:2831:13:2831:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2831:13:2831:18 | self.0 | | main.rs:2820:5:2821:19 | S | +| main.rs:2831:13:2831:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2831:13:2831:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2836:15:2836:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2836:15:2836:19 | SelfParam | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2836:15:2836:19 | SelfParam | &T.T | main.rs:2835:10:2835:16 | T | +| main.rs:2836:33:2838:9 | { ... } | | main.rs:2820:5:2821:19 | S | +| main.rs:2836:33:2838:9 | { ... } | T | main.rs:2820:5:2821:19 | S | +| main.rs:2836:33:2838:9 | { ... } | T.T | main.rs:2835:10:2835:16 | T | +| main.rs:2837:13:2837:24 | S(...) | | main.rs:2820:5:2821:19 | S | +| main.rs:2837:13:2837:24 | S(...) | T | main.rs:2820:5:2821:19 | S | +| main.rs:2837:13:2837:24 | S(...) | T.T | main.rs:2835:10:2835:16 | T | +| main.rs:2837:15:2837:23 | S(...) | | main.rs:2820:5:2821:19 | S | +| main.rs:2837:15:2837:23 | S(...) | T | main.rs:2835:10:2835:16 | T | +| main.rs:2837:17:2837:20 | self | | file://:0:0:0:0 | & | +| main.rs:2837:17:2837:20 | self | &T | main.rs:2820:5:2821:19 | S | +| main.rs:2837:17:2837:20 | self | &T.T | main.rs:2835:10:2835:16 | T | +| main.rs:2837:17:2837:22 | self.0 | | main.rs:2835:10:2835:16 | T | +| main.rs:2841:14:2841:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2841:48:2858:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2841:48:2858:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2841:48:2858:5 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2841:48:2858:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:13:2842:13 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2842:13:2842:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:17:2847:9 | if b {...} else {...} | | main.rs:2820:5:2821:19 | S | +| main.rs:2842:17:2847:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:20:2842:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2842:22:2845:9 | { ... } | | main.rs:2820:5:2821:19 | S | +| main.rs:2842:22:2845:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2843:17:2843:17 | y | | main.rs:2820:5:2821:19 | S | +| main.rs:2843:17:2843:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2843:21:2843:38 | ...::default(...) | | main.rs:2820:5:2821:19 | S | +| main.rs:2843:21:2843:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2844:13:2844:13 | y | | main.rs:2820:5:2821:19 | S | +| main.rs:2844:13:2844:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2845:16:2847:9 | { ... } | | main.rs:2820:5:2821:19 | S | +| main.rs:2845:16:2847:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2846:13:2846:16 | S(...) | | main.rs:2820:5:2821:19 | S | +| main.rs:2846:13:2846:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2846:15:2846:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2851:13:2851:13 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2851:13:2851:13 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2851:13:2851:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2851:13:2851:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2851:17:2851:20 | S(...) | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2851:17:2851:20 | S(...) | | main.rs:2820:5:2821:19 | S | +| main.rs:2851:17:2851:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2851:17:2851:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2851:19:2851:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2852:9:2857:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2852:9:2857:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T | main.rs:2820:5:2821:19 | S | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T | main.rs:2820:5:2821:19 | S | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2852:9:2857:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2852:12:2852:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2852:14:2855:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2852:14:2855:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2852:14:2855:9 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2852:14:2855:9 | { ... } | T | main.rs:2820:5:2821:19 | S | +| main.rs:2852:14:2855:9 | { ... } | T.T | main.rs:2820:5:2821:19 | S | +| main.rs:2852:14:2855:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2852:14:2855:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:17:2853:17 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2853:17:2853:17 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2853:17:2853:17 | x | T | main.rs:2820:5:2821:19 | S | +| main.rs:2853:17:2853:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:17:2853:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:21:2853:21 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2853:21:2853:21 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2853:21:2853:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:21:2853:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:21:2853:26 | x.m2() | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2853:21:2853:26 | x.m2() | | main.rs:2820:5:2821:19 | S | +| main.rs:2853:21:2853:26 | x.m2() | T | main.rs:2820:5:2821:19 | S | +| main.rs:2853:21:2853:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2853:21:2853:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2854:13:2854:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2854:13:2854:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2854:13:2854:23 | ...::new(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2854:13:2854:23 | ...::new(...) | T | main.rs:2820:5:2821:19 | S | +| main.rs:2854:13:2854:23 | ...::new(...) | T.T | main.rs:2820:5:2821:19 | S | +| main.rs:2854:13:2854:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2854:13:2854:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2854:22:2854:22 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2854:22:2854:22 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2854:22:2854:22 | x | T | main.rs:2820:5:2821:19 | S | +| main.rs:2854:22:2854:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2854:22:2854:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2855:16:2857:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2855:16:2857:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2855:16:2857:9 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2855:16:2857:9 | { ... } | T | main.rs:2820:5:2821:19 | S | +| main.rs:2855:16:2857:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2855:16:2857:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2856:13:2856:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2856:13:2856:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2856:13:2856:23 | ...::new(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2856:13:2856:23 | ...::new(...) | T | main.rs:2820:5:2821:19 | S | +| main.rs:2856:13:2856:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2856:13:2856:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2856:22:2856:22 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2856:22:2856:22 | x | | main.rs:2820:5:2821:19 | S | +| main.rs:2856:22:2856:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2856:22:2856:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2862:22:2866:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2863:18:2863:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2863:33:2865:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2864:13:2864:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2864:13:2864:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2864:17:2864:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2871:11:2871:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2871:30:2879:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2873:13:2873:13 | a | | file://:0:0:0:0 | () | +| main.rs:2873:17:2877:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2874:13:2876:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2874:16:2874:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2874:21:2876:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2875:24:2875:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2878:9:2878:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2882:20:2889:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2885:26:2885:27 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2887:18:2887:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2887:18:2887:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2887:18:2887:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2887:18:2887:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2887:18:2887:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2887:18:2887:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2888:9:2888:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2891:20:2893:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2892:16:2892:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2896:11:2896:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2896:30:2904:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2897:13:2897:13 | a | | file://:0:0:0:0 | () | +| main.rs:2897:17:2901:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2898:13:2900:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2898:16:2898:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2898:21:2900:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2899:24:2899:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2902:18:2902:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2902:18:2902:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2902:18:2902:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2902:18:2902:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2902:18:2902:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2902:18:2902:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2902:29:2902:29 | a | | file://:0:0:0:0 | () | +| main.rs:2903:9:2903:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:11:2947:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2913:5:2913:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2914:5:2914:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2915:5:2915:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2915:20:2915:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2915:41:2915:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2916:5:2916:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2917:5:2917:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2918:5:2918:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2919:5:2919:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2920:5:2920:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2921:5:2921:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2922:5:2922:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2923:5:2923:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2924:5:2924:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2925:5:2925:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2926:5:2926:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2927:5:2927:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2928:5:2928:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2929:5:2929:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2930:5:2930:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2931:5:2931:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2932:5:2932:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2932:5:2932:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:2933:5:2933:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2934:5:2934:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2935:5:2935:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2936:5:2936:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2937:5:2937:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2938:5:2938:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2939:5:2939:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2940:5:2940:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2941:5:2941:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2942:5:2942:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2943:5:2943:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2944:5:2944:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2945:5:2945:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2945:5:2945:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2945:5:2945:20 | ...::f(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2945:5:2945:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:16:2945:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2946:5:2946:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From e69ff0d5e873a7768907ae215bad6564ab039f76 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 23 Oct 2025 16:02:56 +0200 Subject: [PATCH 759/965] Rust: Restrict type propagation into arguments --- rust/ql/lib/codeql/rust/internal/Type.qll | 25 + .../codeql/rust/internal/TypeInference.qll | 244 ++++++-- .../typeinference/BlanketImplementation.qll | 3 +- .../internal/typeinference/FunctionType.qll | 3 +- .../PathResolutionConsistency.expected | 2 + .../type-inference/type-inference.expected | 519 ------------------ .../type-inference/type-inference.ql | 2 + .../PathResolutionConsistency.expected | 21 - .../security/CWE-089/SqlInjection.expected | 23 +- .../PathResolutionConsistency.expected | 1 - .../PathResolutionConsistency.expected | 2 - 11 files changed, 242 insertions(+), 603 deletions(-) create mode 100644 rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 4ce224ec610..c02e372ef67 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -51,6 +51,7 @@ newtype TType = TSliceType() or TNeverType() or TPtrType() or + TContextType() or TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or @@ -371,6 +372,30 @@ class PtrType extends Type, TPtrType { override Location getLocation() { result instanceof EmptyLocation } } +/** + * A special pseudo type used to indicate that the actual type may have to be + * inferred from a context. + * + * For example, a call like `Default::default()` is assigned this type, which + * means that the actual type is to be inferred from the context in which the call + * occurs. + * + * Context types are not restricted to root types, for example in a call like + * `Vec::new()` we assign this type at the type path corresponding to the type + * parameter of `Vec`. + * + * Context types are used to restrict when type information is allowed to flow + * into call arguments (including method call receivers), in order to avoid + * combinatorial explosions. + */ +class ContextType extends Type, TContextType { + override TypeParameter getPositionalTypeParameter(int i) { none() } + + override string toString() { result = "(context typed)" } + + override Location getLocation() { result instanceof EmptyLocation } +} + /** A type parameter. */ abstract class TypeParameter extends Type { override TypeParameter getPositionalTypeParameter(int i) { none() } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 905175803a2..2c2d0e5f752 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -909,6 +909,118 @@ private Type getCallExprTypeQualifier(CallExpr ce, TypePath path) { ) } +/** + * Provides functionality related to context-based typing of calls. + */ +private module ContextTyping { + /** + * Holds if the return type of the function `f` inside `i` at `path` is type + * parameter `tp`, and `tp` does not appear in the type of any parameter of + * `f`. + * + * In this case, the context in which `f` is called may be needed to infer + * the instantiation of `tp`. + * + * This covers functions like `Default::default` and `Vec::new`. + */ + pragma[nomagic] + private predicate assocFunctionReturnContextTypedAt( + ImplOrTraitItemNode i, Function f, FunctionPosition pos, TypePath path, TypeParameter tp + ) { + pos.isReturn() and + tp = getAssocFunctionTypeAt(f, i, pos, path) and + not exists(FunctionPosition nonResPos | not nonResPos.isReturn() | + tp = getAssocFunctionTypeAt(f, i, nonResPos, _) + or + // `Self` types in traits implicitly mention all type parameters of the trait + getAssocFunctionTypeAt(f, i, nonResPos, _) = TSelfTypeParameter(i) + ) + } + + /** + * A call where the type of the result may have to be inferred from the + * context in which the call appears, for example a call like + * `Default::default()`. + */ + abstract class ContextTypedCallCand extends AstNode { + abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path); + + private predicate hasTypeArgument(TypeArgumentPosition apos) { + exists(this.getTypeArgument(apos, _)) + } + + /** + * Holds if this call resolves to `target` inside `i`, and the return type + * at `pos` and `path` may have to be inferred from the context. + */ + bindingset[this, i, target] + predicate isContextTypedAt( + ImplOrTraitItemNode i, Function target, TypePath path, FunctionPosition pos + ) { + exists(TypeParameter tp | + assocFunctionReturnContextTypedAt(i, target, pos, path, tp) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | this.hasTypeArgument(tapos) | + exists(int j | + j = tapos.asMethodTypeArgumentPosition() and + tp = TTypeParamTypeParameter(target.getGenericParamList().getTypeParam(j)) + ) + or + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) and + not ( + tp instanceof TSelfTypeParameter and + exists(getCallExprTypeQualifier(this, _)) + ) + ) + } + } + + pragma[nomagic] + private predicate isContextTyped(AstNode n, TypePath path) { inferType(n, path) = TContextType() } + + pragma[nomagic] + private predicate isContextTyped(AstNode n) { isContextTyped(n, _) } + + signature Type inferCallTypeSig(AstNode n, FunctionPosition pos, TypePath path); + + /** + * Given a predicate `inferCallType` for inferring the type of a call at a given + * position, this module exposes the predicate `check`, which wraps the input + * predicate and checks that types are only propagated into arguments when they + * are context-typed. + */ + module CheckContextTyping { + pragma[nomagic] + private Type inferCallTypeFromContextCand( + AstNode n, FunctionPosition pos, TypePath path, TypePath prefix + ) { + result = inferCallType(n, pos, path) and + not pos.isReturn() and + isContextTyped(n) and + prefix = path + or + exists(TypePath mid | + result = inferCallTypeFromContextCand(n, pos, path, mid) and + mid.isSnoc(prefix, _) + ) + } + + pragma[nomagic] + Type check(AstNode n, TypePath path) { + exists(FunctionPosition pos | + result = inferCallType(n, pos, path) and + pos.isReturn() + or + exists(TypePath prefix | + result = inferCallTypeFromContextCand(n, pos, path, prefix) and + isContextTyped(n, prefix) + ) + ) + } + } +} + /** * Holds if function `f` with the name `name` and the arity `arity` exists in * `i`, and the type at position `pos` is `t`. @@ -1418,20 +1530,20 @@ private module MethodResolution { * `derefChain` and the Boolean `borrow`. */ pragma[nomagic] - Method resolveCallTarget(string derefChain, boolean borrow) { + Method resolveCallTarget(ImplOrTraitItemNode i, string derefChain, boolean borrow) { exists(MethodCallCand mcc | mcc = MkMethodCallCand(this, derefChain, borrow) and - result = mcc.resolveCallTarget() + result = mcc.resolveCallTarget(i) ) } predicate receiverHasImplicitDeref(AstNode receiver) { - exists(this.resolveCallTarget(".ref", false)) and + exists(this.resolveCallTarget(_, ".ref", false)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } predicate receiverHasImplicitBorrow(AstNode receiver) { - exists(this.resolveCallTarget("", true)) and + exists(this.resolveCallTarget(_, "", true)) and receiver = this.getArgument(CallImpl::TSelfArgumentPosition()) } } @@ -1569,7 +1681,8 @@ private module MethodResolution { Type getTypeAt(TypePath path) { result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) and - not result = TNeverType() + not result = TNeverType() and + not result = TContextType() } pragma[nomagic] @@ -1642,13 +1755,11 @@ private module MethodResolution { /** Gets a method that matches this method call. */ pragma[nomagic] - Method resolveCallTarget() { - exists(ImplOrTraitItemNode i | - result = this.resolveCallTargetCand(i) and - not FunctionOverloading::functionResolutionDependsOnArgument(i, _, _, _, _) - ) + Method resolveCallTarget(ImplOrTraitItemNode i) { + result = this.resolveCallTargetCand(i) and + not FunctionOverloading::functionResolutionDependsOnArgument(i, _, _, _, _) or - MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) + MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } predicate hasNoBorrow() { borrow = false } @@ -1918,14 +2029,14 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi final private class MethodCallFinal = MethodResolution::MethodCall; - class Access extends MethodCallFinal { + class Access extends MethodCallFinal, ContextTyping::ContextTypedCallCand { Access() { // handled in the `OperationMatchingInput` module not this instanceof Operation } pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { exists(TypeMention arg | result = arg.resolveTypeAt(path) | arg = this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) @@ -1971,12 +2082,14 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi result = this.getInferredNonSelfType(apos, path) } - Declaration getTarget(string derefChainBorrow) { + Declaration getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { exists(string derefChain, boolean borrow | derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and - result = this.resolveCallTarget(derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa + result = this.resolveCallTarget(i, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa ) } + + Declaration getTarget(string derefChainBorrow) { result = this.getTarget(_, derefChainBorrow) } } } @@ -1989,7 +2102,14 @@ private Type inferMethodCallType0( ) { exists(TypePath path0 | n = a.getNodeAt(apos) and - result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + ( + result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) + or + exists(ImplOrTraitItemNode i | + a.isContextTypedAt(i, a.getTarget(i, derefChainBorrow), path0, apos) and + result = TContextType() + ) + ) | if // index expression `x[i]` desugars to `*x.index(i)`, so we must account for @@ -2001,16 +2121,11 @@ private Type inferMethodCallType0( ) } -/** - * Gets the type of `n` at `path`, where `n` is either a method call or an - * argument/receiver of a method call. - */ pragma[nomagic] -private Type inferMethodCallType(AstNode n, TypePath path) { - exists( - MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, - string derefChainBorrow, TypePath path0 - | +private Type inferMethodCallType1( + AstNode n, MethodCallMatchingInput::AccessPosition apos, TypePath path +) { + exists(MethodCallMatchingInput::Access a, string derefChainBorrow, TypePath path0 | result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) | ( @@ -2032,6 +2147,13 @@ private Type inferMethodCallType(AstNode n, TypePath path) { ) } +/** + * Gets the type of `n` at `path`, where `n` is either a method call or an + * argument/receiver of a method call. + */ +private predicate inferMethodCallType = + ContextTyping::CheckContextTyping::check/2; + /** * Provides logic for resolving calls to non-method items. This includes * "calls" to tuple variants and tuple structs. @@ -2178,26 +2300,39 @@ private module NonMethodResolution { trait = this.(Call).getTrait() } + /** + * Gets the target of this call, which can be resolved using only path resolution. + */ pragma[nomagic] - private NonMethodFunction resolveCallTargetRec() { - result = this.resolveCallTargetBlanketCand(_) and - not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) - or - NonMethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, _, result) - } - - pragma[nomagic] - ItemNode resolveCallTargetNonRec() { + ItemNode resolveCallTargetViaPathResolution() { not this.(Call).hasTrait() and result = this.getPathResolutionResolved() and not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) } + /** + * Gets the target of this call, which can be resolved using type inference. + */ + pragma[nomagic] + NonMethodFunction resolveCallTargetViaTypeInference(ImplOrTraitItemNode i) { + result = this.resolveCallTargetBlanketCand(i) and + not FunctionOverloading::functionResolutionDependsOnArgument(_, result, _, _, _) + or + NonMethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) + } + pragma[inline] ItemNode resolveCallTarget() { - result = this.resolveCallTargetNonRec() + result = this.resolveCallTargetViaPathResolution() or - result = this.resolveCallTargetRec() + result = this.resolveCallTargetViaTypeInference(_) + } + + pragma[nomagic] + NonMethodFunction resolveTraitFunctionViaPathResolution(TraitItemNode trait) { + this.(Call).hasTrait() and + result = this.getPathResolutionResolved() and + result = trait.getASuccessor(_) } } @@ -2433,9 +2568,9 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { } } - class Access extends NonMethodResolution::NonMethodCall { + class Access extends NonMethodResolution::NonMethodCall, ContextTyping::ContextTypedCallCand { pragma[nomagic] - Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { result = getCallExprTypeArgument(this, apos).resolveTypeAt(path) } @@ -2456,13 +2591,27 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { private module NonMethodCallMatching = Matching; pragma[nomagic] -private Type inferNonMethodCallType(AstNode n, TypePath path) { - exists(NonMethodCallMatchingInput::Access a, NonMethodCallMatchingInput::AccessPosition apos | - n = a.getNodeAt(apos) and +private Type inferNonMethodCallType0( + AstNode n, NonMethodCallMatchingInput::AccessPosition apos, TypePath path +) { + exists(NonMethodCallMatchingInput::Access a | n = a.getNodeAt(apos) | result = NonMethodCallMatching::inferAccessType(a, apos, path) + or + exists(ImplOrTraitItemNode i | + a.isContextTypedAt(i, + [ + a.resolveCallTargetViaPathResolution().(NonMethodFunction), + a.resolveCallTargetViaTypeInference(i), + a.resolveTraitFunctionViaPathResolution(i) + ], path, apos) and + result = TContextType() + ) ) } +private predicate inferNonMethodCallType = + ContextTyping::CheckContextTyping::check/2; + /** * A matching configuration for resolving types of operations like `a + b`. */ @@ -2527,7 +2676,7 @@ private module OperationMatchingInput implements MatchingInputSig { } Declaration getTarget() { - result = this.resolveCallTarget(_, _) // mutual recursion + result = this.resolveCallTarget(_, _, _) // mutual recursion } } } @@ -2535,13 +2684,18 @@ private module OperationMatchingInput implements MatchingInputSig { private module OperationMatching = Matching; pragma[nomagic] -private Type inferOperationType(AstNode n, TypePath path) { - exists(OperationMatchingInput::Access a, OperationMatchingInput::AccessPosition apos | +private Type inferOperationType0( + AstNode n, OperationMatchingInput::AccessPosition apos, TypePath path +) { + exists(OperationMatchingInput::Access a | n = a.getNodeAt(apos) and result = OperationMatching::inferAccessType(a, apos, path) ) } +private predicate inferOperationType = + ContextTyping::CheckContextTyping::check/2; + pragma[nomagic] private Type getFieldExprLookupType(FieldExpr fe, string name) { exists(TypePath path | @@ -3215,7 +3369,7 @@ private module Cached { /** Gets an item (function or tuple struct/variant) that `call` resolves to, if any. */ cached Addressable resolveCallTarget(Call call) { - result = call.(MethodResolution::MethodCall).resolveCallTarget(_, _) + result = call.(MethodResolution::MethodCall).resolveCallTarget(_, _, _) or result = call.(NonMethodResolution::NonMethodCall).resolveCallTarget() } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 6ddb7ee3be0..3382037d8ab 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -92,7 +92,8 @@ module SatisfiesBlanketConstraint< Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) and - not result = TNeverType() + not result = TNeverType() and + not result = TContextType() } string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 10c007a9d72..b92d7f0caa1 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -229,7 +229,8 @@ module ArgIsInstantiationOf< private class ArgSubst extends ArgFinal { Type getTypeAt(TypePath path) { result = substituteLookupTraits(super.getTypeAt(path)) and - not result = TNeverType() + not result = TNeverType() and + not result = TContextType() } } diff --git a/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..ce79c75327a --- /dev/null +++ b/rust/ql/test/library-tests/sensitivedata/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,2 @@ +multipleCallTargets +| test.rs:288:7:288:36 | ... .as_str() | diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 327edad33ef..b515aaccb31 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -29,8 +29,6 @@ inferType | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -43,8 +41,6 @@ inferType | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:49:18:49:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:49:18:49:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:49:18:49:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:49:18:49:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:13:50:14 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -53,8 +49,6 @@ inferType | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:51:18:51:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:51:18:51:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:51:18:51:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:51:18:51:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -67,8 +61,6 @@ inferType | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:53:18:53:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:53:18:53:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:53:18:53:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:53:18:53:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -79,16 +71,12 @@ inferType | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:55:18:55:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:55:18:55:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:55:18:55:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:55:18:55:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:57:18:57:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:57:18:57:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:57:18:57:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:57:18:57:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:58:18:58:22 | (...) | | file://:0:0:0:0 | & | | blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | @@ -98,8 +86,6 @@ inferType | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:59:18:59:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:59:18:59:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:59:18:59:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:59:18:59:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | @@ -119,49 +105,37 @@ inferType | blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:91:18:91:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:91:18:91:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:91:18:91:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:91:18:91:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:13:92:14 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:18:92:43 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:93:18:93:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:93:18:93:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:93:18:93:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:93:18:93:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:13:94:14 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:18:94:39 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:95:18:95:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:95:18:95:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:95:18:95:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:95:18:95:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | -| blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:97:18:97:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:97:18:97:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:97:18:97:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:97:18:97:25 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | @@ -315,8 +289,6 @@ inferType | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:278:22:278:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:278:22:278:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:278:22:278:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:278:22:278:41 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:281:24:281:28 | SelfParam | | file://:0:0:0:0 | & | | blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | @@ -325,8 +297,6 @@ inferType | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:282:22:282:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:282:22:282:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| blanket_impl.rs:282:22:282:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | blanket_impl.rs:282:22:282:41 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:290:16:300:5 | { ... } | | file://:0:0:0:0 | () | | blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | @@ -570,7 +540,6 @@ inferType | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:12:14:12:18 | SelfParam | | file://:0:0:0:0 | & | | dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:12:29:14:5 | { ... } | | file://:0:0:0:0 | & | @@ -902,9 +871,7 @@ inferType | dereference.rs:202:22:202:38 | "In struct impl!\\n" | | file://:0:0:0:0 | & | | dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | | dereference.rs:202:22:202:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | dereference.rs:202:22:202:38 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | dereference.rs:202:22:202:38 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:208:16:208:20 | SelfParam | | file://:0:0:0:0 | & | | dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | @@ -913,9 +880,7 @@ inferType | dereference.rs:209:22:209:37 | "In trait impl!\\n" | | file://:0:0:0:0 | & | | dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | | dereference.rs:209:22:209:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | dereference.rs:209:22:209:37 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | dereference.rs:209:22:209:37 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:213:19:216:5 | { ... } | | file://:0:0:0:0 | () | | dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | @@ -945,9 +910,7 @@ inferType | dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | &T | {EXTERNAL LOCATION} | str | | dyn_type.rs:29:17:29:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | dyn_type.rs:29:17:29:42 | MacroBlockExpr | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | dyn_type.rs:29:17:29:42 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:33:29:36 | self | | file://:0:0:0:0 | & | | dyn_type.rs:29:33:29:36 | self | &T | dyn_type.rs:21:1:24:1 | MyStruct | @@ -1117,16 +1080,13 @@ inferType | dyn_type.rs:101:15:108:1 | { ... } | | file://:0:0:0:0 | () | | dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | file://:0:0:0:0 | () | | dyn_type.rs:102:26:102:48 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:45:102:46 | 42 | | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | file://:0:0:0:0 | () | | dyn_type.rs:103:28:105:5 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:28:105:5 | &... | &T.A | {EXTERNAL LOCATION} | String | -| dyn_type.rs:103:28:105:5 | &... | &T.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:103:29:105:5 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:29:105:5 | GenStruct {...} | A | {EXTERNAL LOCATION} | String | | dyn_type.rs:104:16:104:17 | "" | | file://:0:0:0:0 | & | @@ -1135,11 +1095,8 @@ inferType | dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | file://:0:0:0:0 | () | | dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | file://:0:0:0:0 | () | | dyn_type.rs:107:21:107:45 | &... | | file://:0:0:0:0 | & | -| dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:21:107:45 | &... | &T.A | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:107:21:107:45 | &... | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:107:21:107:45 | &... | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | @@ -1210,8 +1167,6 @@ inferType | main.rs:27:18:27:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:27:18:27:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:27:18:27:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:27:18:27:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:27:18:27:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1225,8 +1180,6 @@ inferType | main.rs:32:18:32:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:32:18:32:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:32:18:32:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:32:18:32:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:32:18:32:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:32:18:32:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | | main.rs:35:31:63:5 | { ... } | | file://:0:0:0:0 | () | @@ -1238,8 +1191,6 @@ inferType | main.rs:38:18:38:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:38:18:38:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:38:18:38:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:38:18:38:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:38:18:38:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | @@ -1252,8 +1203,6 @@ inferType | main.rs:42:18:42:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:42:18:42:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:42:18:42:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:42:18:42:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:42:18:42:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | @@ -1265,8 +1214,6 @@ inferType | main.rs:49:18:49:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:49:18:49:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:49:18:49:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:49:18:49:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:49:18:49:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | @@ -1282,8 +1229,6 @@ inferType | main.rs:55:18:55:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:55:18:55:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:55:18:55:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:55:18:55:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:55:18:55:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | @@ -1308,8 +1253,6 @@ inferType | main.rs:62:18:62:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:62:18:62:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:62:18:62:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:62:18:62:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:62:18:62:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | @@ -1326,8 +1269,6 @@ inferType | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | file://:0:0:0:0 | & | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:85:18:85:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:85:18:85:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:85:18:85:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:85:18:85:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | | main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | @@ -1340,8 +1281,6 @@ inferType | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | file://:0:0:0:0 | & | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:92:18:92:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:92:18:92:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:92:18:92:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:92:18:92:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | | main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | @@ -1371,8 +1310,6 @@ inferType | main.rs:131:26:131:31 | "foo!\\n" | | file://:0:0:0:0 | & | | main.rs:131:26:131:31 | "foo!\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:131:26:131:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:131:26:131:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:131:26:131:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:131:26:131:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:137:25:137:29 | SelfParam | | file://:0:0:0:0 | & | | main.rs:137:25:137:29 | SelfParam | &T | main.rs:135:9:140:9 | Self [trait Bar] | @@ -1380,8 +1317,6 @@ inferType | main.rs:138:26:138:31 | "bar!\\n" | | file://:0:0:0:0 | & | | main.rs:138:26:138:31 | "bar!\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:138:26:138:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:138:26:138:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:138:26:138:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:138:26:138:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:149:15:170:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:150:13:150:13 | x | | main.rs:142:9:142:21 | X | @@ -1439,8 +1374,6 @@ inferType | main.rs:209:18:209:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:209:18:209:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:209:18:209:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:209:18:209:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:209:18:209:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:209:18:209:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:209:26:209:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:209:26:209:26 | x | A | main.rs:179:5:180:14 | S1 | @@ -1448,8 +1381,6 @@ inferType | main.rs:210:18:210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:210:18:210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:210:18:210:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:210:18:210:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:210:18:210:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:210:18:210:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:210:26:210:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:210:26:210:26 | y | A | main.rs:181:5:182:14 | S2 | @@ -1457,8 +1388,6 @@ inferType | main.rs:212:18:212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:212:18:212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:212:18:212:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:212:18:212:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:212:18:212:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:212:18:212:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:212:26:212:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:212:26:212:26 | x | A | main.rs:179:5:180:14 | S1 | @@ -1466,8 +1395,6 @@ inferType | main.rs:213:18:213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:213:18:213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:213:18:213:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:213:18:213:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:213:18:213:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:213:18:213:33 | { ... } | | file://:0:0:0:0 | () | | main.rs:213:26:213:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:213:26:213:26 | y | A | main.rs:181:5:182:14 | S2 | @@ -1487,8 +1414,6 @@ inferType | main.rs:218:18:218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:218:18:218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:218:18:218:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:218:18:218:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:218:18:218:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:218:18:218:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:218:26:218:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:218:26:218:26 | x | A | main.rs:179:5:180:14 | S1 | @@ -1496,8 +1421,6 @@ inferType | main.rs:219:18:219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:219:18:219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:219:18:219:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:219:18:219:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:219:18:219:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:219:18:219:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:219:26:219:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:219:26:219:26 | y | A | main.rs:181:5:182:14 | S2 | @@ -1641,8 +1564,6 @@ inferType | main.rs:378:18:378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:378:18:378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:378:18:378:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:378:18:378:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:378:18:378:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:378:18:378:38 | { ... } | | file://:0:0:0:0 | () | | main.rs:378:26:378:33 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:378:26:378:33 | thing_s1 | A | main.rs:235:5:236:14 | S1 | @@ -1650,8 +1571,6 @@ inferType | main.rs:379:18:379:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:379:18:379:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:379:18:379:40 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:379:18:379:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:379:18:379:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:379:18:379:40 | { ... } | | file://:0:0:0:0 | () | | main.rs:379:26:379:33 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:379:26:379:33 | thing_s2 | A | main.rs:237:5:238:14 | S2 | @@ -1665,8 +1584,6 @@ inferType | main.rs:381:18:381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:381:18:381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:381:18:381:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:381:18:381:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:381:18:381:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:381:18:381:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:381:26:381:27 | s3 | | main.rs:239:5:240:14 | S3 | | main.rs:383:13:383:14 | p1 | | main.rs:229:5:233:5 | MyPair | @@ -1680,8 +1597,6 @@ inferType | main.rs:384:18:384:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:384:18:384:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:384:18:384:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:384:18:384:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:384:18:384:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:384:18:384:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:384:26:384:27 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:384:26:384:27 | p1 | P1 | main.rs:235:5:236:14 | S1 | @@ -1698,8 +1613,6 @@ inferType | main.rs:387:18:387:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:387:18:387:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:387:18:387:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:387:18:387:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:387:18:387:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:387:18:387:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:387:26:387:27 | p2 | | main.rs:229:5:233:5 | MyPair | | main.rs:387:26:387:27 | p2 | P1 | main.rs:235:5:236:14 | S1 | @@ -1720,8 +1633,6 @@ inferType | main.rs:393:18:393:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:393:18:393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:393:18:393:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:393:18:393:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:393:18:393:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:393:18:393:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:393:26:393:27 | p3 | | main.rs:229:5:233:5 | MyPair | | main.rs:393:26:393:27 | p3 | P1 | main.rs:224:5:227:5 | MyThing | @@ -1744,8 +1655,6 @@ inferType | main.rs:398:18:398:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:398:18:398:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:398:18:398:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:398:18:398:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:398:18:398:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:398:18:398:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:398:26:398:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:399:13:399:13 | y | | main.rs:235:5:236:14 | S1 | @@ -1756,8 +1665,6 @@ inferType | main.rs:400:18:400:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:400:18:400:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:400:18:400:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:400:18:400:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:400:18:400:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:400:18:400:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:400:26:400:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:406:13:406:13 | b | | main.rs:229:5:233:5 | MyPair | @@ -1776,8 +1683,6 @@ inferType | main.rs:408:18:408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:408:18:408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:408:18:408:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:408:18:408:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:408:18:408:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:408:18:408:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:408:26:408:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:409:13:409:13 | y | | main.rs:237:5:238:14 | S2 | @@ -1788,8 +1693,6 @@ inferType | main.rs:410:18:410:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:410:18:410:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:410:18:410:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:410:18:410:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:410:18:410:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:410:18:410:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:410:26:410:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:414:13:414:13 | x | | main.rs:235:5:236:14 | S1 | @@ -1799,8 +1702,6 @@ inferType | main.rs:415:18:415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:415:18:415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:415:18:415:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:415:18:415:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:415:18:415:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:415:18:415:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:415:26:415:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:416:13:416:13 | y | | main.rs:224:5:227:5 | MyThing | @@ -1812,8 +1713,6 @@ inferType | main.rs:417:18:417:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:417:18:417:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:417:18:417:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:417:18:417:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:417:18:417:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:417:18:417:28 | { ... } | | file://:0:0:0:0 | () | | main.rs:417:26:417:26 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:417:26:417:26 | y | A | main.rs:237:5:238:14 | S2 | @@ -1834,8 +1733,6 @@ inferType | main.rs:422:18:422:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:422:18:422:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:422:18:422:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:422:18:422:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:422:18:422:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:422:18:422:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:422:26:422:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:423:13:423:13 | y | | main.rs:235:5:236:14 | S1 | @@ -1846,8 +1743,6 @@ inferType | main.rs:424:18:424:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:424:18:424:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:424:18:424:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:424:18:424:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:424:18:424:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:424:18:424:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:424:26:424:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:427:13:427:13 | b | | main.rs:229:5:233:5 | MyPair | @@ -1866,8 +1761,6 @@ inferType | main.rs:429:18:429:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:429:18:429:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:429:18:429:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:429:18:429:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:429:18:429:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:429:18:429:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:429:26:429:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:430:13:430:13 | y | | main.rs:237:5:238:14 | S2 | @@ -1878,8 +1771,6 @@ inferType | main.rs:431:18:431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:431:18:431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:431:18:431:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:431:18:431:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:431:18:431:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:431:18:431:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:431:26:431:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:433:13:433:13 | c | | main.rs:229:5:233:5 | MyPair | @@ -2001,32 +1892,24 @@ inferType | main.rs:571:18:571:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:571:18:571:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:571:18:571:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:571:18:571:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:571:18:571:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:572:18:572:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:572:18:572:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:572:18:572:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:572:18:572:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:572:18:572:45 | { ... } | | file://:0:0:0:0 | () | | main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:18:573:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:573:18:573:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:573:18:573:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:573:18:573:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:573:18:573:44 | { ... } | | file://:0:0:0:0 | () | | main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | | main.rs:574:18:574:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:574:18:574:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:574:18:574:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:574:18:574:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:574:18:574:47 | { ... } | | file://:0:0:0:0 | () | | main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | | main.rs:574:46:574:46 | x | | main.rs:446:5:447:14 | S1 | @@ -2038,8 +1921,6 @@ inferType | main.rs:577:18:577:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:577:18:577:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:577:18:577:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:577:18:577:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:577:18:577:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | | main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | @@ -2047,8 +1928,6 @@ inferType | main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:578:18:578:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:578:18:578:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:578:18:578:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:578:18:578:56 | { ... } | | file://:0:0:0:0 | () | | main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:578:50:578:55 | S2(...) | | main.rs:479:5:479:22 | S2 | @@ -2062,8 +1941,6 @@ inferType | main.rs:581:18:581:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:581:18:581:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:581:18:581:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:581:18:581:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:581:18:581:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | | main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | @@ -2071,8 +1948,6 @@ inferType | main.rs:582:18:582:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:582:18:582:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:582:18:582:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:582:18:582:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:582:18:582:49 | { ... } | | file://:0:0:0:0 | () | | main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:582:44:582:48 | S2(...) | | main.rs:479:5:479:22 | S2 | @@ -2081,8 +1956,6 @@ inferType | main.rs:583:18:583:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:583:18:583:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:583:18:583:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:583:18:583:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:583:18:583:56 | { ... } | | file://:0:0:0:0 | () | | main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:583:51:583:55 | S2(...) | | main.rs:479:5:479:22 | S2 | @@ -2096,8 +1969,6 @@ inferType | main.rs:586:18:586:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:586:18:586:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:586:18:586:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:586:18:586:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:586:18:586:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | @@ -2108,8 +1979,6 @@ inferType | main.rs:587:18:587:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:587:18:587:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:587:18:587:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:587:18:587:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:587:18:587:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:587:26:587:37 | ...::m(...) | | file://:0:0:0:0 | & | | main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | @@ -2158,8 +2027,6 @@ inferType | main.rs:622:18:622:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:622:18:622:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:622:18:622:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:622:18:622:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:622:18:622:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | | main.rs:625:65:625:65 | x | | main.rs:625:46:625:62 | T | @@ -2170,8 +2037,6 @@ inferType | main.rs:628:18:628:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:628:18:628:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:628:18:628:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:628:18:628:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:628:18:628:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | | main.rs:631:49:631:49 | x | | main.rs:631:30:631:46 | T | @@ -2182,8 +2047,6 @@ inferType | main.rs:633:18:633:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:633:18:633:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:633:18:633:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:633:18:633:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:633:18:633:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:636:53:636:53 | x | | main.rs:636:34:636:50 | T | @@ -2194,8 +2057,6 @@ inferType | main.rs:638:18:638:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:638:18:638:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:638:18:638:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:638:18:638:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:638:18:638:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:641:43:641:43 | x | | main.rs:641:40:641:40 | T | @@ -2206,8 +2067,6 @@ inferType | main.rs:646:18:646:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:646:18:646:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:646:18:646:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:646:18:646:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:646:18:646:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:650:16:650:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | @@ -2233,8 +2092,6 @@ inferType | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:668:18:668:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:668:18:668:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:668:18:668:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:668:18:668:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:668:36:668:37 | s2 | | main.rs:604:5:605:14 | S2 | @@ -2250,8 +2107,6 @@ inferType | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:675:18:675:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:675:18:675:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:675:18:675:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:675:18:675:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:675:36:675:37 | s2 | | main.rs:671:41:671:49 | T2 | @@ -2267,8 +2122,6 @@ inferType | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:682:18:682:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:682:18:682:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:682:18:682:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:682:18:682:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:682:36:682:37 | s2 | | {EXTERNAL LOCATION} | i64 | @@ -2284,8 +2137,6 @@ inferType | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:689:18:689:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:689:18:689:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:689:18:689:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:689:18:689:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | @@ -2439,8 +2290,6 @@ inferType | main.rs:834:18:834:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:834:18:834:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:834:18:834:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:834:18:834:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:834:18:834:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:834:18:834:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:834:26:834:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:834:26:834:26 | x | T | main.rs:743:5:744:14 | S1 | @@ -2448,8 +2297,6 @@ inferType | main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:835:18:835:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:835:18:835:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:835:18:835:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:835:18:835:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:835:26:835:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:835:26:835:26 | y | T | main.rs:745:5:746:14 | S2 | @@ -2467,8 +2314,6 @@ inferType | main.rs:840:18:840:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:840:18:840:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:840:18:840:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:840:18:840:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:840:18:840:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:840:18:840:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:840:26:840:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:840:26:840:26 | x | T | main.rs:743:5:744:14 | S1 | @@ -2476,8 +2321,6 @@ inferType | main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:841:18:841:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:841:18:841:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:841:18:841:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:841:18:841:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:841:26:841:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:841:26:841:26 | y | T | main.rs:745:5:746:14 | S2 | @@ -2499,8 +2342,6 @@ inferType | main.rs:847:18:847:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:847:18:847:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:847:18:847:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:847:18:847:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:847:18:847:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:847:18:847:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:847:26:847:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:848:13:848:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2510,8 +2351,6 @@ inferType | main.rs:849:18:849:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:849:18:849:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:849:18:849:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:849:18:849:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:849:18:849:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:849:18:849:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:849:26:849:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:850:13:850:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2521,8 +2360,6 @@ inferType | main.rs:851:18:851:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:851:18:851:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:851:18:851:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:851:18:851:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:851:18:851:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:851:18:851:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:851:26:851:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:852:13:852:13 | a | | main.rs:745:5:746:14 | S2 | @@ -2532,8 +2369,6 @@ inferType | main.rs:853:18:853:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:853:18:853:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:853:18:853:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:853:18:853:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:853:18:853:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:853:18:853:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:853:26:853:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:854:13:854:13 | a | | main.rs:745:5:746:14 | S2 | @@ -2543,8 +2378,6 @@ inferType | main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:855:18:855:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:855:18:855:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:855:18:855:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:855:18:855:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:855:26:855:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:856:13:856:13 | a | | main.rs:745:5:746:14 | S2 | @@ -2554,8 +2387,6 @@ inferType | main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:857:18:857:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:857:18:857:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:857:18:857:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:857:18:857:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:857:26:857:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2565,8 +2396,6 @@ inferType | main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:859:18:859:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:859:18:859:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:859:18:859:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:859:18:859:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:860:13:860:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2576,8 +2405,6 @@ inferType | main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:861:18:861:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:861:18:861:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:861:18:861:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:861:18:861:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:861:26:861:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:862:13:862:13 | a | | main.rs:745:5:746:14 | S2 | @@ -2587,8 +2414,6 @@ inferType | main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:863:18:863:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:863:18:863:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:863:18:863:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:863:18:863:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:863:26:863:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:864:13:864:13 | a | | main.rs:745:5:746:14 | S2 | @@ -2598,8 +2423,6 @@ inferType | main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:865:18:865:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:865:18:865:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:865:18:865:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:865:18:865:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:865:26:865:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:867:13:867:14 | x3 | | main.rs:738:5:741:5 | MyThing | @@ -2628,8 +2451,6 @@ inferType | main.rs:875:18:875:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:875:18:875:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:875:18:875:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:875:18:875:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:875:18:875:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:875:18:875:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:875:26:875:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:876:13:876:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2640,8 +2461,6 @@ inferType | main.rs:877:18:877:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:877:18:877:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:877:18:877:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:877:18:877:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:877:18:877:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:877:18:877:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:877:26:877:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:878:13:878:13 | a | | main.rs:743:5:744:14 | S1 | @@ -2652,8 +2471,6 @@ inferType | main.rs:879:18:879:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:879:18:879:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:879:18:879:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:879:18:879:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:879:18:879:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:879:18:879:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:879:26:879:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:880:13:880:13 | b | | main.rs:745:5:746:14 | S2 | @@ -2664,8 +2481,6 @@ inferType | main.rs:881:18:881:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:881:18:881:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:881:18:881:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:881:18:881:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:881:18:881:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:881:18:881:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:881:26:881:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:882:13:882:13 | b | | main.rs:745:5:746:14 | S2 | @@ -2676,8 +2491,6 @@ inferType | main.rs:883:18:883:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:883:18:883:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:883:18:883:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:883:18:883:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:883:18:883:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:883:18:883:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:883:26:883:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:884:13:884:13 | b | | main.rs:745:5:746:14 | S2 | @@ -2688,8 +2501,6 @@ inferType | main.rs:885:18:885:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:885:18:885:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:885:18:885:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:885:18:885:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:885:18:885:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:885:18:885:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:885:26:885:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:886:13:886:13 | x | | {EXTERNAL LOCATION} | i32 | @@ -2774,8 +2585,6 @@ inferType | main.rs:1013:18:1013:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1013:18:1013:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1013:18:1013:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1013:18:1013:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1013:18:1013:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1013:18:1013:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1013:26:1013:27 | x1 | | main.rs:943:5:944:13 | S | | main.rs:1013:26:1013:32 | x1.m1() | | main.rs:949:5:950:14 | AT | @@ -2787,8 +2596,6 @@ inferType | main.rs:1018:18:1018:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1018:18:1018:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1018:18:1018:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1018:18:1018:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1018:18:1018:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1018:18:1018:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1018:26:1018:26 | y | | main.rs:949:5:950:14 | AT | | main.rs:1020:13:1020:14 | x3 | | main.rs:943:5:944:13 | S | @@ -2796,8 +2603,6 @@ inferType | main.rs:1022:18:1022:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1022:18:1022:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1022:18:1022:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1022:18:1022:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1022:18:1022:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1022:18:1022:43 | { ... } | | file://:0:0:0:0 | () | | main.rs:1022:26:1022:27 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1022:26:1022:34 | x3.put(...) | | main.rs:892:5:895:5 | Wrapper | @@ -2807,8 +2612,6 @@ inferType | main.rs:1025:18:1025:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1025:18:1025:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1025:18:1025:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1025:18:1025:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1025:18:1025:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1025:18:1025:49 | { ... } | | file://:0:0:0:0 | () | | main.rs:1025:26:1025:27 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1025:26:1025:40 | x3.putTwo(...) | | main.rs:892:5:895:5 | Wrapper | @@ -2820,16 +2623,12 @@ inferType | main.rs:1028:18:1028:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1028:18:1028:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1028:18:1028:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1028:18:1028:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1028:18:1028:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1028:18:1028:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1030:13:1030:14 | x5 | | main.rs:946:5:947:14 | S2 | | main.rs:1030:18:1030:19 | S2 | | main.rs:946:5:947:14 | S2 | | main.rs:1031:18:1031:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1031:18:1031:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1031:18:1031:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1031:18:1031:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1031:18:1031:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1031:18:1031:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1031:26:1031:27 | x5 | | main.rs:946:5:947:14 | S2 | | main.rs:1031:26:1031:32 | x5.m1() | | main.rs:892:5:895:5 | Wrapper | @@ -2839,8 +2638,6 @@ inferType | main.rs:1033:18:1033:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1033:18:1033:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1033:18:1033:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1033:18:1033:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1033:18:1033:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1033:18:1033:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1033:26:1033:27 | x6 | | main.rs:946:5:947:14 | S2 | | main.rs:1033:26:1033:32 | x6.m2() | | main.rs:892:5:895:5 | Wrapper | @@ -2880,8 +2677,6 @@ inferType | main.rs:1070:22:1070:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | | main.rs:1070:22:1070:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1070:22:1070:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1070:22:1070:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1070:22:1070:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1070:22:1070:42 | { ... } | | file://:0:0:0:0 | () | | main.rs:1076:24:1076:28 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1076:24:1076:28 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | @@ -2963,8 +2758,6 @@ inferType | main.rs:1124:18:1124:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1124:18:1124:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1124:18:1124:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1124:18:1124:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1124:18:1124:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1124:18:1124:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1124:26:1124:26 | x | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1124:26:1124:26 | x | A | main.rs:1106:5:1107:14 | S1 | @@ -2972,8 +2765,6 @@ inferType | main.rs:1125:18:1125:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1125:18:1125:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1125:18:1125:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1125:18:1125:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1125:18:1125:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1125:18:1125:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1125:26:1125:26 | y | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1125:26:1125:26 | y | A | main.rs:1108:5:1109:14 | S2 | @@ -3042,8 +2833,6 @@ inferType | main.rs:1205:18:1205:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1205:18:1205:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1205:18:1205:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1205:18:1205:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1205:18:1205:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1205:18:1205:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1205:26:1205:26 | a | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1205:26:1205:26 | a | A | main.rs:1140:5:1141:14 | S1 | @@ -3061,8 +2850,6 @@ inferType | main.rs:1212:18:1212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1212:18:1212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1212:18:1212:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1212:18:1212:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1212:18:1212:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1212:18:1212:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1212:26:1212:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1212:26:1212:26 | x | A | main.rs:1140:5:1141:14 | S1 | @@ -3070,8 +2857,6 @@ inferType | main.rs:1213:18:1213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1213:18:1213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1213:18:1213:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1213:18:1213:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1213:18:1213:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1213:18:1213:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1213:26:1213:26 | y | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1213:26:1213:26 | y | A | main.rs:1142:5:1143:14 | S2 | @@ -3089,8 +2874,6 @@ inferType | main.rs:1218:18:1218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1218:18:1218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1218:18:1218:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1218:18:1218:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1218:18:1218:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1218:18:1218:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1218:26:1218:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1218:26:1218:26 | x | A | main.rs:1140:5:1141:14 | S1 | @@ -3098,8 +2881,6 @@ inferType | main.rs:1219:18:1219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1219:18:1219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1219:18:1219:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1219:18:1219:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1219:18:1219:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1219:18:1219:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1219:26:1219:26 | y | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1219:26:1219:26 | y | A | main.rs:1142:5:1143:14 | S2 | @@ -3117,8 +2898,6 @@ inferType | main.rs:1224:18:1224:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1224:18:1224:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1224:18:1224:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1224:18:1224:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1224:18:1224:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1224:18:1224:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1224:26:1224:26 | x | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1224:26:1224:26 | x | A | main.rs:1140:5:1141:14 | S1 | @@ -3126,8 +2905,6 @@ inferType | main.rs:1225:18:1225:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1225:18:1225:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1225:18:1225:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1225:18:1225:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1225:18:1225:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1225:18:1225:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1225:26:1225:26 | y | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1225:26:1225:26 | y | A | main.rs:1142:5:1143:14 | S2 | @@ -3171,8 +2948,6 @@ inferType | main.rs:1267:18:1267:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1267:18:1267:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1267:18:1267:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1267:18:1267:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1267:18:1267:31 | { ... } | | file://:0:0:0:0 | () | | main.rs:1267:26:1267:31 | id(...) | | file://:0:0:0:0 | & | | main.rs:1267:26:1267:31 | id(...) | &T | main.rs:1238:5:1239:14 | S1 | @@ -3184,8 +2959,6 @@ inferType | main.rs:1270:18:1270:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1270:18:1270:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1270:18:1270:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1270:18:1270:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1270:18:1270:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1270:18:1270:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:1270:26:1270:37 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:1270:26:1270:37 | id::<...>(...) | &T | main.rs:1238:5:1239:14 | S1 | @@ -3193,22 +2966,16 @@ inferType | main.rs:1270:35:1270:36 | &x | &T | main.rs:1238:5:1239:14 | S1 | | main.rs:1270:36:1270:36 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1272:13:1272:13 | x | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1272:13:1272:13 | x | | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1272:17:1272:18 | S1 | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1272:17:1272:18 | S1 | | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1274:18:1274:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1274:18:1274:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1274:18:1274:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1274:18:1274:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1274:18:1274:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1274:18:1274:44 | { ... } | | file://:0:0:0:0 | () | | main.rs:1274:26:1274:44 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:1274:26:1274:44 | id::<...>(...) | &T | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1274:42:1274:43 | &x | | file://:0:0:0:0 | & | | main.rs:1274:42:1274:43 | &x | &T | main.rs:1238:5:1239:14 | S1 | -| main.rs:1274:42:1274:43 | &x | &T | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1274:43:1274:43 | x | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1274:43:1274:43 | x | | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1276:13:1276:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1276:17:1276:18 | S1 | | main.rs:1238:5:1239:14 | S1 | | main.rs:1277:9:1277:25 | into::<...>(...) | | main.rs:1241:5:1242:14 | S2 | @@ -3234,8 +3001,6 @@ inferType | main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | | main.rs:1296:50:1296:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | | main.rs:1296:50:1296:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1296:50:1296:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1296:50:1296:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1296:50:1296:81 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1296:50:1296:81 | { ... } | | file://:0:0:0:0 | () | | main.rs:1297:17:1297:38 | ...::PairFst(...) | | main.rs:1285:5:1291:5 | PairOption | @@ -3246,8 +3011,6 @@ inferType | main.rs:1297:50:1297:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | | main.rs:1297:50:1297:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | | main.rs:1297:50:1297:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1297:50:1297:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1297:50:1297:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1297:50:1297:80 | MacroExpr | | file://:0:0:0:0 | () | | main.rs:1297:50:1297:80 | { ... } | | file://:0:0:0:0 | () | | main.rs:1298:17:1298:40 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | @@ -3280,8 +3043,6 @@ inferType | main.rs:1327:18:1327:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1327:18:1327:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1327:18:1327:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1327:18:1327:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1327:18:1327:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1327:18:1327:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1327:26:1327:26 | x | | main.rs:1310:5:1311:14 | S3 | | main.rs:1342:22:1342:25 | SelfParam | | main.rs:1340:5:1343:5 | Self [trait TraitWithAssocType] | @@ -3308,8 +3069,6 @@ inferType | main.rs:1358:18:1358:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1358:18:1358:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1358:18:1358:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1358:18:1358:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1358:18:1358:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1358:18:1358:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1358:26:1358:27 | p1 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1358:26:1358:27 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | @@ -3323,8 +3082,6 @@ inferType | main.rs:1362:18:1362:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1362:18:1362:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1362:18:1362:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1362:18:1362:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1362:18:1362:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1362:26:1362:27 | p2 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1362:26:1362:27 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | @@ -3339,8 +3096,6 @@ inferType | main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1366:18:1366:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1366:18:1366:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1366:18:1366:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1366:18:1366:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1366:26:1366:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1366:26:1366:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | @@ -3354,20 +3109,15 @@ inferType | main.rs:1370:18:1370:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1370:18:1370:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1370:18:1370:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1370:18:1370:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1370:18:1370:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1370:26:1370:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1370:26:1370:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1370:26:1370:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:9:1372:55 | g(...) | | file://:0:0:0:0 | () | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | -| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd | main.rs:1285:5:1291:5 | PairOption | -| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:31:1372:53 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | -| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:31:1372:53 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:51:1372:52 | S3 | | main.rs:1310:5:1311:14 | S3 | | main.rs:1374:13:1374:13 | x | | {EXTERNAL LOCATION} | Result | @@ -3435,8 +3185,6 @@ inferType | main.rs:1421:18:1421:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1421:18:1421:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1421:18:1421:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1421:18:1421:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1421:18:1421:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1421:26:1421:27 | x1 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1421:26:1421:27 | x1 | T | main.rs:1416:5:1417:13 | S | @@ -3451,8 +3199,6 @@ inferType | main.rs:1425:18:1425:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1425:18:1425:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1425:18:1425:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1425:18:1425:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1425:18:1425:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1425:26:1425:27 | x2 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1425:26:1425:27 | x2 | T | main.rs:1416:5:1417:13 | S | @@ -3464,8 +3210,6 @@ inferType | main.rs:1430:18:1430:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1430:18:1430:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1430:18:1430:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1430:18:1430:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1430:18:1430:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1430:26:1430:27 | x3 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1432:17:1432:18 | x4 | | main.rs:1381:5:1385:5 | MyOption | @@ -3482,8 +3226,6 @@ inferType | main.rs:1434:18:1434:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1434:18:1434:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1434:18:1434:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1434:18:1434:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1434:18:1434:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1434:18:1434:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1434:26:1434:27 | x4 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1434:26:1434:27 | x4 | T | main.rs:1416:5:1417:13 | S | @@ -3498,8 +3240,6 @@ inferType | main.rs:1437:18:1437:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1437:18:1437:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1437:18:1437:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1437:18:1437:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1437:18:1437:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1437:18:1437:37 | { ... } | | file://:0:0:0:0 | () | | main.rs:1437:26:1437:27 | x5 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1437:26:1437:27 | x5 | T | main.rs:1381:5:1385:5 | MyOption | @@ -3517,8 +3257,6 @@ inferType | main.rs:1440:18:1440:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1440:18:1440:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1440:18:1440:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1440:18:1440:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1440:18:1440:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1440:18:1440:61 | { ... } | | file://:0:0:0:0 | () | | main.rs:1440:26:1440:61 | ...::flatten(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1440:26:1440:61 | ...::flatten(...) | T | main.rs:1416:5:1417:13 | S | @@ -3544,8 +3282,6 @@ inferType | main.rs:1448:18:1448:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1448:18:1448:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1448:18:1448:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1448:18:1448:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1448:18:1448:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1448:18:1448:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1448:26:1448:32 | from_if | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1448:26:1448:32 | from_if | T | main.rs:1416:5:1417:13 | S | @@ -3566,8 +3302,6 @@ inferType | main.rs:1455:18:1455:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1455:18:1455:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1455:18:1455:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1455:18:1455:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1455:18:1455:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1455:26:1455:35 | from_match | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1455:26:1455:35 | from_match | T | main.rs:1416:5:1417:13 | S | @@ -3589,8 +3323,6 @@ inferType | main.rs:1464:18:1464:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1464:18:1464:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1464:18:1464:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1464:18:1464:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1464:18:1464:34 | { ... } | | file://:0:0:0:0 | () | | main.rs:1464:26:1464:34 | from_loop | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1464:26:1464:34 | from_loop | T | main.rs:1416:5:1417:13 | S | @@ -3656,8 +3388,6 @@ inferType | main.rs:1515:18:1515:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1515:18:1515:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1515:18:1515:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1515:18:1515:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1515:18:1515:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1515:18:1515:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1515:26:1515:27 | x1 | | main.rs:1470:5:1471:19 | S | | main.rs:1515:26:1515:27 | x1 | T | main.rs:1473:5:1474:14 | S2 | @@ -3670,8 +3400,6 @@ inferType | main.rs:1519:18:1519:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1519:18:1519:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1519:18:1519:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1519:18:1519:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1519:18:1519:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1519:18:1519:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1519:26:1519:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1519:26:1519:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | @@ -3680,8 +3408,6 @@ inferType | main.rs:1520:18:1520:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1520:18:1520:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1520:18:1520:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1520:18:1520:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1520:18:1520:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1520:18:1520:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1520:26:1520:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1520:26:1520:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | @@ -3695,8 +3421,6 @@ inferType | main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1524:18:1524:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1524:18:1524:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1524:18:1524:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1524:18:1524:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:1524:26:1524:41 | ...::m2(...) | | file://:0:0:0:0 | & | | main.rs:1524:26:1524:41 | ...::m2(...) | &T | main.rs:1473:5:1474:14 | S2 | @@ -3708,8 +3432,6 @@ inferType | main.rs:1525:18:1525:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1525:18:1525:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1525:18:1525:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1525:18:1525:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1525:18:1525:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1525:18:1525:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:1525:26:1525:41 | ...::m3(...) | | file://:0:0:0:0 | & | | main.rs:1525:26:1525:41 | ...::m3(...) | &T | main.rs:1473:5:1474:14 | S2 | @@ -3730,8 +3452,6 @@ inferType | main.rs:1529:18:1529:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1529:18:1529:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1529:18:1529:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1529:18:1529:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1529:18:1529:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1529:18:1529:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1529:26:1529:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1529:26:1529:27 | x4 | &T | main.rs:1470:5:1471:19 | S | @@ -3741,8 +3461,6 @@ inferType | main.rs:1530:18:1530:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1530:18:1530:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1530:18:1530:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1530:18:1530:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1530:18:1530:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1530:18:1530:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1530:26:1530:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1530:26:1530:27 | x4 | &T | main.rs:1470:5:1471:19 | S | @@ -3761,8 +3479,6 @@ inferType | main.rs:1534:18:1534:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1534:18:1534:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1534:18:1534:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1534:18:1534:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1534:18:1534:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1534:18:1534:32 | { ... } | | file://:0:0:0:0 | () | | main.rs:1534:26:1534:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1534:26:1534:27 | x5 | &T | main.rs:1470:5:1471:19 | S | @@ -3771,8 +3487,6 @@ inferType | main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1535:18:1535:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1535:18:1535:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1535:18:1535:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1535:18:1535:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:1535:26:1535:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1535:26:1535:27 | x5 | &T | main.rs:1470:5:1471:19 | S | @@ -3790,8 +3504,6 @@ inferType | main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1540:18:1540:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1540:18:1540:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1540:18:1540:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1540:18:1540:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1540:26:1540:30 | (...) | | main.rs:1470:5:1471:19 | S | | main.rs:1540:26:1540:30 | (...) | T | main.rs:1473:5:1474:14 | S2 | @@ -3820,8 +3532,6 @@ inferType | main.rs:1546:18:1546:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1546:18:1546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1546:18:1546:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1546:18:1546:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1546:18:1546:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1546:18:1546:27 | { ... } | | file://:0:0:0:0 | () | | main.rs:1546:26:1546:27 | x7 | | main.rs:1470:5:1471:19 | S | | main.rs:1546:26:1546:27 | x7 | T | file://:0:0:0:0 | & | @@ -3849,8 +3559,6 @@ inferType | main.rs:1557:18:1557:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1557:18:1557:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1557:18:1557:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1557:18:1557:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1557:18:1557:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1557:18:1557:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1557:26:1557:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1560:13:1560:20 | my_thing | | file://:0:0:0:0 | & | @@ -3867,8 +3575,6 @@ inferType | main.rs:1562:18:1562:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1562:18:1562:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1562:18:1562:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1562:18:1562:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1562:18:1562:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1562:18:1562:26 | { ... } | | file://:0:0:0:0 | () | | main.rs:1562:26:1562:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1569:16:1569:20 | SelfParam | | file://:0:0:0:0 | & | @@ -3937,10 +3643,8 @@ inferType | main.rs:1612:9:1612:18 | x.bar(...) | &T.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:15:1612:17 | &... | | file://:0:0:0:0 | & | | main.rs:1612:15:1612:17 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1612:15:1612:17 | &... | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:15:1612:17 | &... | &T.&T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:15:1612:17 | &... | &T.&T.T | main.rs:1593:5:1593:13 | S | -| main.rs:1612:15:1612:17 | &... | &T.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:16:1612:17 | &x | | file://:0:0:0:0 | & | | main.rs:1612:16:1612:17 | &x | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:16:1612:17 | &x | &T.T | main.rs:1593:5:1593:13 | S | @@ -4053,8 +3757,6 @@ inferType | main.rs:1660:18:1660:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1660:18:1660:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1660:18:1660:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1660:18:1660:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1660:18:1660:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1660:18:1660:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:1660:26:1660:29 | flag | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1675:43:1678:5 | { ... } | | {EXTERNAL LOCATION} | Result | @@ -4121,7 +3823,6 @@ inferType | main.rs:1700:21:1700:25 | input | T | main.rs:1699:20:1699:27 | T | | main.rs:1700:21:1700:26 | TryExpr | | main.rs:1699:20:1699:27 | T | | main.rs:1701:22:1701:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1701:22:1701:38 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1701:22:1701:38 | ...::Ok(...) | T | main.rs:1699:20:1699:27 | T | | main.rs:1701:22:1704:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1701:22:1704:10 | ... .and_then(...) | E | main.rs:1667:5:1668:14 | S1 | @@ -4135,8 +3836,6 @@ inferType | main.rs:1702:22:1702:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1702:22:1702:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1702:22:1702:30 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1702:22:1702:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1702:22:1702:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1702:22:1702:30 | { ... } | | file://:0:0:0:0 | () | | main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | E | main.rs:1667:5:1668:14 | S1 | @@ -4157,8 +3856,6 @@ inferType | main.rs:1711:22:1711:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1711:22:1711:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1711:22:1711:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1711:22:1711:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1711:22:1711:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1711:22:1711:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1711:30:1711:35 | result | | main.rs:1667:5:1668:14 | S1 | | main.rs:1714:9:1716:9 | if ... {...} | | file://:0:0:0:0 | () | @@ -4173,8 +3870,6 @@ inferType | main.rs:1715:22:1715:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1715:22:1715:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1715:22:1715:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1715:22:1715:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1715:22:1715:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1715:22:1715:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1715:30:1715:35 | result | | main.rs:1667:5:1668:14 | S1 | | main.rs:1718:9:1720:9 | if ... {...} | | file://:0:0:0:0 | () | @@ -4189,8 +3884,6 @@ inferType | main.rs:1719:22:1719:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1719:22:1719:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1719:22:1719:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1719:22:1719:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1719:22:1719:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1719:22:1719:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1719:30:1719:35 | result | | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:9:1724:9 | if ... {...} | | file://:0:0:0:0 | () | @@ -4202,15 +3895,12 @@ inferType | main.rs:1722:37:1722:63 | try_complex(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:37:1722:63 | try_complex(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:49:1722:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1722:49:1722:62 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:49:1722:62 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:65:1724:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:1723:22:1723:27 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:1723:22:1723:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:1723:22:1723:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1723:22:1723:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:1723:22:1723:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1723:22:1723:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | | main.rs:1729:16:1739:5 | { ... } | | file://:0:0:0:0 | () | @@ -5120,9 +4810,7 @@ inferType | main.rs:2242:9:2242:19 | Some(...) | T.T3 | main.rs:2241:24:2241:31 | T | | main.rs:2242:9:2242:19 | Some(...) | T.impl(T) | main.rs:2241:24:2241:31 | T | | main.rs:2242:14:2242:18 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2242:14:2242:18 | S3(...) | | main.rs:2241:50:2241:64 | impl ... | | main.rs:2242:14:2242:18 | S3(...) | T3 | main.rs:2241:24:2241:31 | T | -| main.rs:2242:14:2242:18 | S3(...) | impl(T) | main.rs:2241:24:2241:31 | T | | main.rs:2242:17:2242:17 | x | | main.rs:2241:24:2241:31 | T | | main.rs:2245:34:2245:34 | x | | main.rs:2245:24:2245:31 | T | | main.rs:2245:78:2247:5 | { ... } | | file://:0:0:0:0 | (T_2) | @@ -5268,7 +4956,6 @@ inferType | main.rs:2320:9:2320:14 | vec[0] | | main.rs:2273:5:2274:13 | S | | main.rs:2320:9:2320:20 | ... .foo() | | main.rs:2273:5:2274:13 | S | | main.rs:2320:13:2320:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2320:13:2320:13 | 0 | | {EXTERNAL LOCATION} | usize | | main.rs:2322:13:2322:14 | xs | | file://:0:0:0:0 | [] | | main.rs:2322:13:2322:14 | xs | [T;...] | main.rs:2273:5:2274:13 | S | | main.rs:2322:21:2322:21 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -5284,13 +4971,10 @@ inferType | main.rs:2325:29:2325:31 | vec | | main.rs:2282:5:2285:5 | MyVec | | main.rs:2325:29:2325:31 | vec | T | main.rs:2273:5:2274:13 | S | | main.rs:2325:34:2325:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2325:34:2325:34 | 0 | | {EXTERNAL LOCATION} | usize | | main.rs:2327:9:2327:26 | analyze_slice(...) | | file://:0:0:0:0 | () | | main.rs:2327:23:2327:25 | &xs | | file://:0:0:0:0 | & | | main.rs:2327:23:2327:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2327:23:2327:25 | &xs | &T | file://:0:0:0:0 | [] | | main.rs:2327:23:2327:25 | &xs | &T.[T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2327:23:2327:25 | &xs | &T.[T] | main.rs:2273:5:2274:13 | S | | main.rs:2327:24:2327:25 | xs | | file://:0:0:0:0 | [] | | main.rs:2327:24:2327:25 | xs | [T;...] | main.rs:2273:5:2274:13 | S | | main.rs:2332:16:2334:5 | { ... } | | file://:0:0:0:0 | () | @@ -5300,8 +4984,6 @@ inferType | main.rs:2333:25:2333:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | | main.rs:2333:25:2333:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | | main.rs:2333:25:2333:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2333:25:2333:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2333:25:2333:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2333:25:2333:45 | { ... } | | {EXTERNAL LOCATION} | String | | main.rs:2333:38:2333:45 | "World!" | | file://:0:0:0:0 | & | | main.rs:2333:38:2333:45 | "World!" | &T | {EXTERNAL LOCATION} | str | @@ -5341,7 +5023,6 @@ inferType | main.rs:2383:13:2383:39 | S(...) | | main.rs:2376:5:2376:19 | S | | main.rs:2383:13:2383:39 | S(...) | T | main.rs:2339:9:2339:20 | Output | | main.rs:2383:15:2383:22 | (...) | | main.rs:2378:10:2378:17 | T | -| main.rs:2383:15:2383:38 | ... .my_add(...) | | main.rs:2339:9:2339:20 | Output | | main.rs:2383:16:2383:19 | self | | main.rs:2376:5:2376:19 | S | | main.rs:2383:16:2383:19 | self | T | main.rs:2378:10:2378:17 | T | | main.rs:2383:16:2383:21 | self.0 | | main.rs:2378:10:2378:17 | T | @@ -5356,7 +5037,6 @@ inferType | main.rs:2392:13:2392:37 | S(...) | | main.rs:2376:5:2376:19 | S | | main.rs:2392:13:2392:37 | S(...) | T | main.rs:2339:9:2339:20 | Output | | main.rs:2392:15:2392:22 | (...) | | main.rs:2387:10:2387:17 | T | -| main.rs:2392:15:2392:36 | ... .my_add(...) | | main.rs:2339:9:2339:20 | Output | | main.rs:2392:16:2392:19 | self | | main.rs:2376:5:2376:19 | S | | main.rs:2392:16:2392:19 | self | T | main.rs:2387:10:2387:17 | T | | main.rs:2392:16:2392:21 | self.0 | | main.rs:2387:10:2387:17 | T | @@ -6016,7 +5696,6 @@ inferType | main.rs:2630:23:2630:23 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2630:23:2630:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2630:27:2630:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2630:27:2630:28 | 10 | | {EXTERNAL LOCATION} | i64 | | main.rs:2631:9:2633:9 | { ... } | | file://:0:0:0:0 | () | | main.rs:2632:13:2632:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2632:13:2632:18 | ... += ... | | file://:0:0:0:0 | () | @@ -6233,8 +5912,6 @@ inferType | main.rs:2732:30:2732:41 | "unexpected" | | file://:0:0:0:0 | & | | main.rs:2732:30:2732:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | | main.rs:2732:30:2732:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2732:30:2732:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2732:30:2732:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2732:30:2732:41 | { ... } | | file://:0:0:0:0 | () | | main.rs:2733:13:2733:13 | _ | | file://:0:0:0:0 | (T_2) | | main.rs:2733:13:2733:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | @@ -6243,8 +5920,6 @@ inferType | main.rs:2733:25:2733:34 | "expected" | | file://:0:0:0:0 | & | | main.rs:2733:25:2733:34 | "expected" | &T | {EXTERNAL LOCATION} | str | | main.rs:2733:25:2733:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2733:25:2733:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2733:25:2733:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2733:25:2733:34 | { ... } | | file://:0:0:0:0 | () | | main.rs:2735:13:2735:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2735:17:2735:20 | pair | | file://:0:0:0:0 | (T_2) | @@ -6288,8 +5963,6 @@ inferType | main.rs:2750:26:2750:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | | main.rs:2750:26:2750:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2750:26:2750:36 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2750:26:2750:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2750:26:2750:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2750:26:2750:36 | { ... } | | file://:0:0:0:0 | () | | main.rs:2752:13:2752:17 | box ... | | {EXTERNAL LOCATION} | Box | | main.rs:2752:13:2752:17 | box ... | A | {EXTERNAL LOCATION} | Global | @@ -6298,8 +5971,6 @@ inferType | main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | | main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2754:26:2754:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2754:26:2754:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2754:26:2754:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2754:26:2754:51 | { ... } | | file://:0:0:0:0 | () | | main.rs:2759:13:2759:22 | nested_box | | {EXTERNAL LOCATION} | Box | | main.rs:2759:13:2759:22 | nested_box | A | {EXTERNAL LOCATION} | Global | @@ -6330,8 +6001,6 @@ inferType | main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | | main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2763:26:2763:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2763:26:2763:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2763:26:2763:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2763:26:2763:59 | { ... } | | file://:0:0:0:0 | () | | main.rs:2775:36:2777:9 | { ... } | | main.rs:2772:5:2772:22 | Path | | main.rs:2776:13:2776:19 | Path {...} | | main.rs:2772:5:2772:22 | Path | @@ -6432,14 +6101,10 @@ inferType | main.rs:2846:13:2846:16 | S(...) | | main.rs:2820:5:2821:19 | S | | main.rs:2846:13:2846:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2846:15:2846:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:13:2851:13 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2851:13:2851:13 | x | | main.rs:2820:5:2821:19 | S | | main.rs:2851:13:2851:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:13:2851:13 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:17:2851:20 | S(...) | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2851:17:2851:20 | S(...) | | main.rs:2820:5:2821:19 | S | | main.rs:2851:17:2851:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:17:2851:20 | S(...) | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2851:19:2851:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2852:9:2857:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | | main.rs:2852:9:2857:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | @@ -6457,20 +6122,14 @@ inferType | main.rs:2852:14:2855:9 | { ... } | T.T | main.rs:2820:5:2821:19 | S | | main.rs:2852:14:2855:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2852:14:2855:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:17:2853:17 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2853:17:2853:17 | x | | main.rs:2820:5:2821:19 | S | | main.rs:2853:17:2853:17 | x | T | main.rs:2820:5:2821:19 | S | | main.rs:2853:17:2853:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:17:2853:17 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:21 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2853:21:2853:21 | x | | main.rs:2820:5:2821:19 | S | | main.rs:2853:21:2853:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:21 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:26 | x.m2() | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2853:21:2853:26 | x.m2() | | main.rs:2820:5:2821:19 | S | | main.rs:2853:21:2853:26 | x.m2() | T | main.rs:2820:5:2821:19 | S | | main.rs:2853:21:2853:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:26 | x.m2() | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2854:13:2854:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2854:13:2854:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2854:13:2854:23 | ...::new(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | @@ -6478,11 +6137,9 @@ inferType | main.rs:2854:13:2854:23 | ...::new(...) | T.T | main.rs:2820:5:2821:19 | S | | main.rs:2854:13:2854:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2854:13:2854:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2854:22:2854:22 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2854:22:2854:22 | x | | main.rs:2820:5:2821:19 | S | | main.rs:2854:22:2854:22 | x | T | main.rs:2820:5:2821:19 | S | | main.rs:2854:22:2854:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2854:22:2854:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2855:16:2857:9 | { ... } | | {EXTERNAL LOCATION} | Box | | main.rs:2855:16:2857:9 | { ... } | A | {EXTERNAL LOCATION} | Global | | main.rs:2855:16:2857:9 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | @@ -6495,10 +6152,8 @@ inferType | main.rs:2856:13:2856:23 | ...::new(...) | T | main.rs:2820:5:2821:19 | S | | main.rs:2856:13:2856:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2856:13:2856:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:22:2856:22 | x | | main.rs:2816:5:2818:5 | dyn MyTrait | | main.rs:2856:22:2856:22 | x | | main.rs:2820:5:2821:19 | S | | main.rs:2856:22:2856:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:22:2856:22 | x | dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2862:22:2866:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:2863:18:2863:18 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2863:33:2865:9 | { ... } | | {EXTERNAL LOCATION} | i32 | @@ -6519,8 +6174,6 @@ inferType | main.rs:2887:18:2887:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:2887:18:2887:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2887:18:2887:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2887:18:2887:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2887:18:2887:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2887:18:2887:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2888:9:2888:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2891:20:2893:5 | { ... } | | {EXTERNAL LOCATION} | i32 | @@ -6536,8 +6189,6 @@ inferType | main.rs:2902:18:2902:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | | main.rs:2902:18:2902:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2902:18:2902:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2902:18:2902:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2902:18:2902:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2902:18:2902:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2902:29:2902:29 | a | | file://:0:0:0:0 | () | | main.rs:2903:9:2903:9 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -6602,8 +6253,6 @@ inferType | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:17:18:17:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:17:18:17:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:17:18:17:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:17:18:17:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:19:5:25:5 | match value { ... } | | file://:0:0:0:0 | () | @@ -6618,8 +6267,6 @@ inferType | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:22:22:22:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:22:22:22:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:22:22:22:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:22:22:22:29 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:24:9:24:12 | None | | {EXTERNAL LOCATION} | Option | @@ -6634,8 +6281,6 @@ inferType | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:28:14:28:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:28:14:28:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:28:14:28:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:28:14:28:21 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:9:29:12 | mesg | | {EXTERNAL LOCATION} | i32 | @@ -6645,8 +6290,6 @@ inferType | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:30:14:30:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:30:14:30:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:30:14:30:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:30:14:30:21 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:9:32:14 | value2 | | file://:0:0:0:0 | & | @@ -6674,8 +6317,6 @@ inferType | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:35:18:35:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:35:18:35:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:35:18:35:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:35:18:35:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:9:38:14 | value3 | | {EXTERNAL LOCATION} | i32 | @@ -6692,8 +6333,6 @@ inferType | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:41:18:41:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:41:18:41:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:41:18:41:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:41:18:41:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:41:20:41:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | @@ -6717,8 +6356,6 @@ inferType | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:47:20:47:23 | mesg | | file://:0:0:0:0 | & | | pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | @@ -6923,8 +6560,6 @@ inferType | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:175:22:175:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:175:22:175:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:175:22:175:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:175:22:175:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:177:10:177:10 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -6934,8 +6569,6 @@ inferType | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:179:22:179:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:179:22:179:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:179:22:179:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:179:22:179:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:181:9:181:9 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -6945,8 +6578,6 @@ inferType | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:183:22:183:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:183:22:183:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:183:22:183:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:183:22:183:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:185:9:185:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -6962,8 +6593,6 @@ inferType | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:192:22:192:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:192:22:192:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:192:22:192:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:192:22:192:47 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | @@ -6985,8 +6614,6 @@ inferType | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:201:22:201:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:201:22:201:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:201:22:201:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:201:22:201:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:201:44:201:54 | hello_match | | file://:0:0:0:0 | & | | pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | @@ -7004,8 +6631,6 @@ inferType | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:210:22:210:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:210:22:210:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:210:22:210:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:210:22:210:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | @@ -7015,8 +6640,6 @@ inferType | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:214:22:214:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:214:22:214:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:214:22:214:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:214:22:214:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:219:30:277:1 | { ... } | | file://:0:0:0:0 | () | @@ -7031,8 +6654,6 @@ inferType | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:226:22:226:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:226:22:226:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:226:22:226:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:226:22:226:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:5:236:5 | match ... { ... } | | file://:0:0:0:0 | () | @@ -7052,8 +6673,6 @@ inferType | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:234:22:234:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:234:22:234:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:234:22:234:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:234:22:234:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:234:52:234:60 | ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:234:52:234:60 | ref_bound | &T | file://:0:0:0:0 | & | @@ -7072,8 +6691,6 @@ inferType | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:244:22:244:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:244:22:244:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:244:22:244:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:244:22:244:56 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:9:249:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7094,8 +6711,6 @@ inferType | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:253:22:253:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:253:22:253:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:253:22:253:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:253:22:253:59 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7109,8 +6724,6 @@ inferType | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:257:22:257:63 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:257:22:257:63 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:257:22:257:63 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:257:22:257:63 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7122,8 +6735,6 @@ inferType | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:261:22:261:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:261:22:261:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:261:22:261:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:261:22:261:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:263:9:263:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7132,8 +6743,6 @@ inferType | pattern_matching.rs:264:22:264:33 | "None value\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:264:22:264:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:264:22:264:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:264:22:264:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:264:22:264:33 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | @@ -7162,8 +6771,6 @@ inferType | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:274:22:274:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:274:22:274:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:274:22:274:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:274:22:274:38 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:279:28:290:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | @@ -7175,8 +6782,6 @@ inferType | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:283:24:283:39 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:283:24:283:39 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:283:24:283:39 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:283:24:283:39 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:285:14:288:9 | { ... } | | file://:0:0:0:0 | () | @@ -7185,8 +6790,6 @@ inferType | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:287:22:287:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:287:22:287:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:287:22:287:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:287:22:287:65 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:292:25:324:1 | { ... } | | file://:0:0:0:0 | () | @@ -7203,8 +6806,6 @@ inferType | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:299:22:299:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:299:22:299:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:299:22:299:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:299:22:299:59 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:10 | 11 | | {EXTERNAL LOCATION} | i32 | @@ -7215,8 +6816,6 @@ inferType | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:303:22:303:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:303:22:303:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:303:22:303:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:303:22:303:52 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:9:305:12 | RangePat | | {EXTERNAL LOCATION} | i32 | @@ -7227,8 +6826,6 @@ inferType | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:307:22:307:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:307:22:307:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:307:22:307:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:307:22:307:67 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:309:9:309:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -7246,8 +6843,6 @@ inferType | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:316:22:316:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:316:22:316:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:316:22:316:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:316:22:316:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | @@ -7259,8 +6854,6 @@ inferType | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:320:22:320:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:320:22:320:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:320:22:320:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:320:22:320:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:322:9:322:9 | _ | | {EXTERNAL LOCATION} | char | @@ -7283,8 +6876,6 @@ inferType | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:334:22:334:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:334:22:334:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:334:22:334:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:334:22:334:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:9:336:10 | &... | | file://:0:0:0:0 | & | @@ -7296,8 +6887,6 @@ inferType | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:338:22:338:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:338:22:338:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:338:22:338:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:338:22:338:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:5:347:5 | match ... { ... } | | file://:0:0:0:0 | () | @@ -7316,8 +6905,6 @@ inferType | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:345:22:345:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:345:22:345:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:345:22:345:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:345:22:345:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | | file://:0:0:0:0 | & | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | @@ -7338,8 +6925,6 @@ inferType | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:352:22:352:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:352:22:352:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:352:22:352:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:352:22:352:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:352:47:352:57 | ref_pattern | | file://:0:0:0:0 | & | | pattern_matching.rs:352:47:352:57 | ref_pattern | &T | file://:0:0:0:0 | & | @@ -7360,8 +6945,6 @@ inferType | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:364:22:364:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:364:22:364:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:364:22:364:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:364:22:364:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -7375,8 +6958,6 @@ inferType | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | file://:0:0:0:0 | & | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:369:22:369:80 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:369:22:369:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:369:22:369:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:369:22:369:80 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | @@ -7388,8 +6969,6 @@ inferType | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:373:22:373:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:373:22:373:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:373:22:373:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:373:22:373:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -7403,8 +6982,6 @@ inferType | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:378:22:378:68 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:378:22:378:68 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:378:22:378:68 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:378:22:378:68 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:60:378:68 | general_y | | {EXTERNAL LOCATION} | i32 | @@ -7425,8 +7002,6 @@ inferType | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:394:22:394:64 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:394:22:394:64 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:394:22:394:64 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:394:22:394:64 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:54:394:64 | rect_height | | {EXTERNAL LOCATION} | f64 | @@ -7436,11 +7011,8 @@ inferType | pattern_matching.rs:401:9:401:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:17:401:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:404:5:418:5 | match color { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:404:11:404:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:9:405:24 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -7456,8 +7028,6 @@ inferType | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:407:22:407:48 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:407:22:407:48 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:407:22:407:48 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:407:22:407:48 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:9:409:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -7474,8 +7044,6 @@ inferType | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:414:17:415:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:414:17:415:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:414:17:415:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:414:17:415:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:32:415:46 | green_component | | {EXTERNAL LOCATION} | u8 | @@ -7492,8 +7060,6 @@ inferType | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:424:22:424:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:424:22:424:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:424:22:424:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:424:22:424:57 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:9:426:20 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -7505,8 +7071,6 @@ inferType | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:428:22:428:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:428:22:428:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:428:22:428:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:428:22:428:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:434:9:434:15 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | @@ -7522,8 +7086,6 @@ inferType | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:438:22:438:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:438:22:438:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:438:22:438:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:438:22:438:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:443:25:498:1 | { ... } | | file://:0:0:0:0 | () | @@ -7576,8 +7138,6 @@ inferType | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:450:22:450:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:450:22:450:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:450:22:450:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:450:22:450:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:450:43:450:53 | exact_tuple | | file://:0:0:0:0 | (T_3) | | pattern_matching.rs:450:43:450:53 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | @@ -7610,8 +7170,6 @@ inferType | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:456:22:456:79 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:456:22:456:79 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:456:22:456:79 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:456:22:456:79 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i32 | @@ -7635,8 +7193,6 @@ inferType | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:464:22:464:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:464:22:464:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:464:22:464:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:464:22:464:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:469:9:469:12 | unit | | file://:0:0:0:0 | () | | pattern_matching.rs:469:16:469:17 | TupleExpr | | file://:0:0:0:0 | () | @@ -7649,8 +7205,6 @@ inferType | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:473:22:473:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:22:473:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:473:22:473:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:473:22:473:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:473:42:473:51 | unit_value | | file://:0:0:0:0 | () | | pattern_matching.rs:478:9:478:14 | single | | file://:0:0:0:0 | (T_1) | @@ -7670,8 +7224,6 @@ inferType | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:482:22:482:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:482:22:482:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:482:22:482:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:482:22:482:60 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:482:50:482:60 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | | file://:0:0:0:0 | & | @@ -7697,14 +7249,10 @@ inferType | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:489:18:489:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:489:18:489:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:489:18:489:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:489:18:489:27 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:490:18:490:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:490:18:490:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:490:18:490:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:490:18:490:27 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | | file://:0:0:0:0 | & | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | @@ -7727,14 +7275,10 @@ inferType | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:496:14:496:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:496:14:496:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:496:14:496:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:496:14:496:23 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:497:14:497:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:497:14:497:23 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:497:14:497:23 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:497:14:497:23 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:500:33:520:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:501:9:501:13 | value | | {EXTERNAL LOCATION} | i32 | @@ -7749,8 +7293,6 @@ inferType | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:507:22:507:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:507:22:507:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:507:22:507:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:507:22:507:61 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:507:51:507:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:9:512:13 | tuple | | file://:0:0:0:0 | (T_2) | @@ -7779,8 +7321,6 @@ inferType | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | file://:0:0:0:0 | & | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:517:22:517:71 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:517:22:517:71 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:517:22:517:71 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:517:22:517:71 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:517:56:517:62 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:65:517:71 | paren_y | | {EXTERNAL LOCATION} | i32 | @@ -7817,8 +7357,6 @@ inferType | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:529:22:529:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:529:22:529:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:529:22:529:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:529:22:529:53 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:529:43:529:53 | empty_slice | | file://:0:0:0:0 | & | | pattern_matching.rs:529:43:529:53 | empty_slice | &T | file://:0:0:0:0 | [] | @@ -7830,8 +7368,6 @@ inferType | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:533:22:533:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:533:22:533:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:533:22:533:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:533:22:533:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:535:9:535:23 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:535:9:535:23 | SlicePat | &T | file://:0:0:0:0 | [] | @@ -7840,8 +7376,6 @@ inferType | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:538:22:538:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:538:22:538:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:538:22:538:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:538:22:538:70 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:540:9:540:34 | SlicePat | | file://:0:0:0:0 | & | | pattern_matching.rs:540:9:540:34 | SlicePat | &T | file://:0:0:0:0 | [] | @@ -7850,8 +7384,6 @@ inferType | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | file://:0:0:0:0 | & | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:545:17:548:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:545:17:548:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:545:17:548:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:545:17:548:34 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:554:9:554:13 | array | | file://:0:0:0:0 | [] | | pattern_matching.rs:554:9:554:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | @@ -7869,8 +7401,6 @@ inferType | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:560:22:560:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:560:22:560:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:560:22:560:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:560:22:560:70 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:565:24:601:1 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:567:27:567:28 | 42 | | {EXTERNAL LOCATION} | i32 | @@ -7885,8 +7415,6 @@ inferType | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:573:22:573:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:573:22:573:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:573:22:573:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:573:22:573:56 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:575:9:575:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -7905,8 +7433,6 @@ inferType | pattern_matching.rs:582:22:582:35 | "None variant\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:582:22:582:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:582:22:582:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:582:22:582:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:582:22:582:35 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | @@ -7917,8 +7443,6 @@ inferType | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:586:22:586:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:586:22:586:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:586:22:586:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:586:22:586:49 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:586:40:586:49 | some_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:591:5:600:5 | match ... { ... } | | file://:0:0:0:0 | () | @@ -7936,8 +7460,6 @@ inferType | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:594:22:594:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:594:22:594:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:594:22:594:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:594:22:594:45 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:594:38:594:45 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | @@ -7950,8 +7472,6 @@ inferType | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:598:22:598:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:598:22:598:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:598:22:598:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:598:22:598:43 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:598:35:598:43 | err_value | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:603:22:638:1 | { ... } | | file://:0:0:0:0 | () | @@ -7969,8 +7489,6 @@ inferType | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:610:22:610:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:610:22:610:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:610:22:610:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:610:22:610:50 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:10 | 10 | | {EXTERNAL LOCATION} | i32 | @@ -7982,8 +7500,6 @@ inferType | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:614:22:614:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:614:22:614:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:614:22:614:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:614:22:614:50 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:616:9:616:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -8011,8 +7527,6 @@ inferType | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:625:22:625:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:625:22:625:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:625:22:625:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:625:22:625:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:625:49:625:54 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:57:625:62 | axis_y | | {EXTERNAL LOCATION} | i32 | @@ -8033,8 +7547,6 @@ inferType | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:634:22:634:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:634:22:634:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:634:22:634:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:634:22:634:51 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:636:9:636:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -8069,8 +7581,6 @@ inferType | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:647:22:647:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:647:22:647:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:647:22:647:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:647:22:647:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:651:5:656:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:651:11:651:15 | tuple | | file://:0:0:0:0 | (T_4) | @@ -8087,8 +7597,6 @@ inferType | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:654:22:654:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:654:22:654:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:654:22:654:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:654:22:654:52 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:658:5:664:5 | match tuple { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:658:11:658:15 | tuple | | file://:0:0:0:0 | (T_4) | @@ -8105,8 +7613,6 @@ inferType | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:662:22:662:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:662:22:662:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:662:22:662:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:662:22:662:67 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:17:667:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -8122,8 +7628,6 @@ inferType | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:671:22:671:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:671:22:671:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:671:22:671:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:671:22:671:47 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:671:42:671:47 | rest_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:676:25:696:1 | { ... } | | file://:0:0:0:0 | () | @@ -8157,11 +7661,8 @@ inferType | pattern_matching.rs:700:47:700:78 | ...::Some(...) | T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:62:700:77 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:68:700:70 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:68:700:70 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:702:11:702:22 | complex_data | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:702:11:702:22 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | @@ -8191,8 +7692,6 @@ inferType | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | file://:0:0:0:0 | & | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:709:17:710:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:709:17:710:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:709:17:710:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:709:17:710:44 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:710:17:710:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:710:27:710:34 | nested_g | | {EXTERNAL LOCATION} | u8 | @@ -8224,8 +7723,6 @@ inferType | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | file://:0:0:0:0 | & | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:716:22:716:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:716:22:716:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:716:22:716:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:716:22:716:65 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:716:53:716:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:719:9:719:13 | other | | file://:0:0:0:0 | (T_2) | @@ -8244,8 +7741,6 @@ inferType | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:721:22:721:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:721:22:721:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:721:22:721:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:721:22:721:62 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:721:50:721:62 | other_complex | | file://:0:0:0:0 | (T_2) | | pattern_matching.rs:721:50:721:62 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | @@ -8308,11 +7803,8 @@ inferType | pattern_matching.rs:744:9:744:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:17:744:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:23:744:25 | 255 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:23:744:25 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:744:28:744:30 | 128 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:28:744:30 | 128 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:744:33:744:33 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:744:33:744:33 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:745:9:745:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:745:15:745:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:745:18:745:18 | g | | {EXTERNAL LOCATION} | u8 | @@ -8394,11 +7886,8 @@ inferType | pattern_matching.rs:784:9:784:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:784:17:784:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:784:23:784:25 | 200 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:23:784:25 | 200 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:784:28:784:30 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:28:784:30 | 100 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:784:33:784:34 | 50 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:784:33:784:34 | 50 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:9:785:11 | red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:15:785:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:29:785:33 | color | | pattern_matching.rs:142:1:143:25 | Color | @@ -8444,8 +7933,6 @@ inferType | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:798:18:798:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:798:18:798:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:798:18:798:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:798:18:798:58 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:798:45:798:50 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:53:798:58 | loop_y | | {EXTERNAL LOCATION} | i32 | @@ -8467,8 +7954,6 @@ inferType | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:805:18:805:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:805:18:805:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:805:18:805:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:805:18:805:54 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:805:47:805:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:13:809:17 | stack | | {EXTERNAL LOCATION} | Vec | @@ -8495,8 +7980,6 @@ inferType | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:812:18:812:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:812:18:812:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:812:18:812:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:812:18:812:42 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:812:32:812:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:9:816:13 | value | | {EXTERNAL LOCATION} | i32 | @@ -8513,8 +7996,6 @@ inferType | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | file://:0:0:0:0 | & | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:820:22:820:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:820:22:820:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| pattern_matching.rs:820:22:820:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | pattern_matching.rs:820:22:820:44 | { ... } | | file://:0:0:0:0 | () | | pattern_matching.rs:820:38:820:44 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:822:9:822:9 | _ | | {EXTERNAL LOCATION} | i32 | diff --git a/rust/ql/test/library-tests/type-inference/type-inference.ql b/rust/ql/test/library-tests/type-inference/type-inference.ql index 059cc7848a0..2d0b6e5e55d 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -1,10 +1,12 @@ import rust import utils.test.InlineExpectationsTest +import codeql.rust.internal.Type import codeql.rust.internal.TypeInference as TypeInference import TypeInference query predicate inferType(AstNode n, TypePath path, Type t) { t = TypeInference::inferType(n, path) and + t != TContextType() and n.fromSource() and not n.isFromMacroExpansion() and not n instanceof IdentPat and // avoid overlap in the output with the underlying `Name` node diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index e86f261a249..34a867e0917 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -3,29 +3,10 @@ multipleCallTargets | mysql.rs:16:26:16:85 | ...::from(...) | | mysql.rs:18:13:18:66 | ...::from(...) | | mysql.rs:19:30:19:83 | ...::from(...) | -| mysql.rs:46:45:46:66 | remote_string.as_str() | -| mysql.rs:47:71:47:92 | remote_string.as_str() | -| mysql.rs:48:46:48:67 | remote_string.as_str() | -| mysql.rs:49:33:49:54 | remote_string.as_str() | -| mysql.rs:50:46:50:67 | remote_string.as_str() | -| mysql.rs:52:37:52:58 | remote_string.as_str() | -| mysql.rs:56:14:56:35 | remote_string.as_str() | -| mysql.rs:62:14:62:35 | remote_string.as_str() | -| mysql.rs:66:40:66:61 | remote_string.as_str() | -| mysql.rs:67:39:67:60 | remote_string.as_str() | -| mysql.rs:70:14:70:35 | remote_string.as_str() | | mysql.rs:100:24:100:39 | ...::from(...) | | mysql.rs:101:26:101:85 | ...::from(...) | | mysql.rs:103:13:103:66 | ...::from(...) | | mysql.rs:104:30:104:83 | ...::from(...) | -| mysql.rs:126:45:126:66 | remote_string.as_str() | -| mysql.rs:128:38:128:59 | remote_string.as_str() | -| mysql.rs:130:33:130:54 | remote_string.as_str() | -| mysql.rs:131:54:131:75 | remote_string.as_str() | -| mysql.rs:135:18:135:39 | remote_string.as_str() | -| mysql.rs:140:40:140:61 | remote_string.as_str() | -| mysql.rs:142:62:142:83 | remote_string.as_str() | -| mysql.rs:145:31:145:52 | remote_string.as_str() | | sqlx.rs:46:24:46:44 | ...::from(...) | | sqlx.rs:47:56:47:76 | ...::from(...) | | sqlx.rs:48:97:48:117 | ...::from(...) | @@ -33,8 +14,6 @@ multipleCallTargets | sqlx.rs:51:24:51:77 | ...::from(...) | | sqlx.rs:55:26:55:79 | ...::from(...) | | sqlx.rs:61:28:61:81 | ...::from(...) | -| sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | -| sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | | sqlx.rs:99:24:99:44 | ...::from(...) | | sqlx.rs:100:97:100:117 | ...::from(...) | | sqlx.rs:101:24:101:77 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index e1024e4ad72..d699ca4a389 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -36,7 +36,7 @@ edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | | mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:33 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | @@ -113,7 +113,7 @@ edges | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | | mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:34 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:33 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | @@ -177,15 +177,13 @@ edges | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | @@ -200,8 +198,8 @@ edges | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:35 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:36 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:34 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:35 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | @@ -213,7 +211,7 @@ edges | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | @@ -255,7 +253,7 @@ edges | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:34 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:33 | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | @@ -302,10 +300,9 @@ models | 30 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 36 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 35 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected index c84f3becf1f..078bce75133 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -13,7 +13,6 @@ multipleCallTargets | test_storage.rs:73:25:73:67 | ...::from(...) | | test_storage.rs:75:25:75:65 | ...::from(...) | | test_storage.rs:76:25:76:65 | ...::from(...) | -| test_storage.rs:77:14:77:24 | s1.as_str() | | test_storage.rs:78:25:78:65 | ...::from(...) | | test_storage.rs:79:25:79:65 | ...::from(...) | | test_storage.rs:80:25:80:70 | ...::from(...) | diff --git a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 821f75cee26..00000000000 --- a/rust/ql/test/query-tests/security/CWE-918/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| request_forgery_tests.rs:30:36:30:52 | user_url.as_str() | From c16b42119dbc6b23226186b9e2afa52389e29d1e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 4 Nov 2025 09:39:18 +0100 Subject: [PATCH 760/965] Rust: More type inference tests --- .../test/library-tests/type-inference/main.rs | 51 +++++ .../type-inference/type-inference.expected | 206 ++++++++++++++---- 2 files changed, 215 insertions(+), 42 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index f1c56392849..fd70ce30dd1 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2904,6 +2904,57 @@ mod block_types { } } +mod context_typed { + pub fn f() { + let x = None; // $ type=x:T.i32 + let x: Option = x; + let x = Option::::None; // $ MISSING: type=x:T.i32 + let x = Option::None::; // $ MISSING: type=x:T.i32 + + fn pin_option(opt: Option, x: T) {} + + let x = None; // $ MISSING: type=x:T.i32 + pin_option(x, 0); // $ target=pin_option + + enum MyEither { + A { left: T1 }, + B { right: T2 }, + } + + let x = MyEither::A { left: 0 }; // $ type=x:T1.i32 type=x:T2.String + let x: MyEither = x; + let x = MyEither::<_, String>::A { left: 0 }; // $ type=x:T1.i32 certainType=x:T2.String + #[rustfmt::skip] + let x = MyEither::B:: { // $ certainType=x:T1.i32 type=x:T2.String + right: String::new(), // $ target=new + }; + + fn pin_my_either(e: MyEither, x: T) {} + + #[rustfmt::skip] + let x = MyEither::B { // $ type=x:T2.String $ MISSING: type=x:T1.i32 + right: String::new(), // $ target=new + }; + pin_my_either(x, 0); // $ target=pin_my_either + + let x = Result::Ok(0); // $ type=x:E.String + let x: Result = x; + let x = Result::::Ok(0); // $ type=x:E.String + let x = Result::Ok::(0); // $ type=x:E.String + + fn pin_result(res: Result, x: E) {} + + let x = Result::Ok(0); // $ type=x:T.i32 $ MISSING: type=x:E.bool + pin_result(x, false); // $ target=pin_result + + let mut x = Vec::new(); // $ type=x:T.i32 target=new + x.push(0); // $ target=push + + let y = Default::default(); // $ type=y:i32 target=default + x.push(y); // $ target=push + } +} + mod blanket_impl; mod closure; mod dereference; diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index b515aaccb31..1212fcda7f1 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -6192,48 +6192,170 @@ inferType | main.rs:2902:18:2902:29 | { ... } | | file://:0:0:0:0 | () | | main.rs:2902:29:2902:29 | a | | file://:0:0:0:0 | () | | main.rs:2903:9:2903:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2912:11:2947:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2913:5:2913:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2914:5:2914:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2915:5:2915:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2915:20:2915:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2915:41:2915:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2916:5:2916:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2917:5:2917:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2918:5:2918:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2919:5:2919:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2920:5:2920:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2921:5:2921:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2922:5:2922:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2923:5:2923:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2924:5:2924:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2925:5:2925:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2926:5:2926:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2927:5:2927:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2928:5:2928:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2929:5:2929:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2930:5:2930:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2931:5:2931:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2932:5:2932:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2932:5:2932:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2933:5:2933:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2934:5:2934:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2935:5:2935:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2936:5:2936:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2937:5:2937:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2938:5:2938:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2939:5:2939:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2940:5:2940:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2941:5:2941:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2942:5:2942:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2943:5:2943:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2944:5:2944:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2945:5:2945:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2945:5:2945:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2945:5:2945:20 | ...::f(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2945:5:2945:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2945:16:2945:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2946:5:2946:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2908:16:2955:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2909:13:2909:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2909:13:2909:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2909:17:2909:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2909:17:2909:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2910:13:2910:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2910:13:2910:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2910:30:2910:30 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2910:30:2910:30 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:13:2911:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2911:17:2911:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2912:13:2912:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2912:17:2912:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2914:26:2914:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2914:26:2914:28 | opt | T | main.rs:2914:23:2914:23 | T | +| main.rs:2914:42:2914:42 | x | | main.rs:2914:23:2914:23 | T | +| main.rs:2914:48:2914:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2916:13:2916:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2916:17:2916:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2917:9:2917:24 | pin_option(...) | | file://:0:0:0:0 | () | +| main.rs:2917:20:2917:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2917:23:2917:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:13:2924:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2924:13:2924:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:13:2924:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2924:17:2924:39 | ...::A {...} | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2924:17:2924:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:17:2924:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2924:37:2924:37 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2925:13:2925:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2925:13:2925:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2925:13:2925:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2925:40:2925:40 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2925:40:2925:40 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2925:40:2925:40 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2926:13:2926:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2926:13:2926:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2926:13:2926:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2926:17:2926:52 | ...::A {...} | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2926:17:2926:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2926:17:2926:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2926:50:2926:50 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2928:13:2928:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2928:13:2928:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2928:13:2928:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2928:17:2930:9 | ...::B::<...> {...} | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2928:17:2930:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2928:17:2930:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2929:20:2929:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2932:29:2932:29 | e | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2932:29:2932:29 | e | T1 | main.rs:2932:26:2932:26 | T | +| main.rs:2932:29:2932:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2932:53:2932:53 | x | | main.rs:2932:26:2932:26 | T | +| main.rs:2932:59:2932:60 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2935:13:2935:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2935:13:2935:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2935:17:2937:9 | ...::B {...} | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2935:17:2937:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2936:20:2936:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2938:9:2938:27 | pin_my_either(...) | | file://:0:0:0:0 | () | +| main.rs:2938:23:2938:23 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2938:23:2938:23 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2938:26:2938:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2940:13:2940:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2940:13:2940:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2940:13:2940:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2940:17:2940:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2940:17:2940:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2940:17:2940:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2940:28:2940:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2941:13:2941:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2941:13:2941:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2941:13:2941:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2941:38:2941:38 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2941:38:2941:38 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2941:38:2941:38 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2942:13:2942:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2942:13:2942:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2942:13:2942:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2942:17:2942:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2942:17:2942:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2942:17:2942:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2942:43:2942:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2943:13:2943:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2943:13:2943:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2943:13:2943:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2943:43:2943:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:29:2945:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:2945:29:2945:31 | res | E | main.rs:2945:26:2945:26 | E | +| main.rs:2945:29:2945:31 | res | T | main.rs:2945:23:2945:23 | T | +| main.rs:2945:48:2945:48 | x | | main.rs:2945:26:2945:26 | E | +| main.rs:2945:54:2945:55 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2947:13:2947:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2947:13:2947:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2947:17:2947:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2947:17:2947:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2947:28:2947:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2948:9:2948:28 | pin_result(...) | | file://:0:0:0:0 | () | +| main.rs:2948:20:2948:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2948:20:2948:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2948:23:2948:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:2950:17:2950:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2950:17:2950:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2950:17:2950:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2950:21:2950:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2950:21:2950:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2950:21:2950:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2951:9:2951:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2951:9:2951:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2951:9:2951:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2951:9:2951:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:2951:16:2951:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2953:13:2953:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2953:17:2953:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2954:9:2954:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2954:9:2954:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2954:9:2954:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2954:9:2954:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:2954:16:2954:16 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2963:11:2998:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2964:5:2964:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2965:5:2965:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2966:5:2966:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2966:20:2966:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2966:41:2966:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2967:5:2967:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2968:5:2968:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2969:5:2969:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2970:5:2970:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2971:5:2971:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2972:5:2972:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2973:5:2973:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2974:5:2974:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2975:5:2975:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2976:5:2976:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2977:5:2977:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2978:5:2978:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2979:5:2979:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2980:5:2980:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2981:5:2981:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2982:5:2982:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2983:5:2983:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2983:5:2983:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:2984:5:2984:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2985:5:2985:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2986:5:2986:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2987:5:2987:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2988:5:2988:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2989:5:2989:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2990:5:2990:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2991:5:2991:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:2992:5:2992:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2993:5:2993:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2994:5:2994:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:2995:5:2995:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:2996:5:2996:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2996:5:2996:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2996:5:2996:20 | ...::f(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | +| main.rs:2996:5:2996:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2996:16:2996:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2997:5:2997:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 79bdf897d7d127020936fd3db2affee75a4d8d67 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 3 Nov 2025 19:09:37 +0100 Subject: [PATCH 761/965] Rust: Context typing for constructors --- .../codeql/rust/internal/TypeInference.qll | 262 ++++++++++++------ .../lib/codeql/rust/internal/TypeMention.qll | 30 +- .../test/library-tests/type-inference/main.rs | 10 +- .../type-inference/type-inference.expected | 30 +- 4 files changed, 219 insertions(+), 113 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 2c2d0e5f752..c768d258ada 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -260,11 +260,22 @@ private class NonMethodFunction extends Function { } pragma[nomagic] -private TypeMention getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos) { - exists(Path p, int i | +private TypeMention getCallExprTypeMentionArgument(CallExpr ce, TypeArgumentPosition apos) { + exists(Path p, int i | p = CallExprImpl::getFunctionPath(ce) | + apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) and + result = getPathTypeArgument(p, pragma[only_bind_into](i)) + ) +} + +pragma[nomagic] +private Type getCallExprTypeArgument(CallExpr ce, TypeArgumentPosition apos, TypePath path) { + result = getCallExprTypeMentionArgument(ce, apos).resolveTypeAt(path) + or + // Handle constructions that use `Self(...)` syntax + exists(Path p, TypePath path0 | p = CallExprImpl::getFunctionPath(ce) and - result = p.getSegment().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and - apos.asTypeParam() = resolvePath(p).getTypeParam(pragma[only_bind_into](i)) + result = p.(TypeMention).resolveTypeAt(path0) and + path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) ) } @@ -356,8 +367,7 @@ module CertainTypeInference { // For type parameters of the function we must resolve their // instantiation from the path. For instance, for `fn bar(a: A) -> A` // and the path `bar`, we must resolve `A` to `i64`. - result = - getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp)).resolveTypeAt(suffix) + result = getCallExprTypeArgument(ce, TTypeParamTypeArgumentPosition(tp), suffix) ) or not ty instanceof TypeParameter and @@ -748,6 +758,8 @@ private Type inferTypeEquality(AstNode n, TypePath path) { /** * A matching configuration for resolving types of struct expressions * like `Foo { bar = baz }`. + * + * This also includes nullary struct expressions like `None`. */ private module StructExprMatchingInput implements MatchingInputSig { private newtype TPos = @@ -830,26 +842,86 @@ private module StructExprMatchingInput implements MatchingInputSig { class AccessPosition = DeclarationPosition; - class Access extends StructExpr { + abstract class Access extends AstNode { + pragma[nomagic] + abstract AstNode getNodeAt(AccessPosition apos); + + pragma[nomagic] + Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) + } + + pragma[nomagic] + abstract Path getStructPath(); + + pragma[nomagic] + Declaration getTarget() { result = resolvePath(this.getStructPath()) } + + pragma[nomagic] Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + // Handle constructions that use `Self{...}` syntax + exists(TypeMention tm, TypePath path0 | + tm = this.getStructPath() and + result = tm.resolveTypeAt(path0) and + path0.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) + ) + } + + /** + * Holds if the return type of this struct expression at `path` may have to + * be inferred from the context. + */ + pragma[nomagic] + predicate isContextTypedAt(DeclarationPosition pos, TypePath path) { + exists(Declaration d, TypeParameter tp | + d = this.getTarget() and + pos.isStructPos() and + tp = d.getDeclaredType(pos, path) and + not exists(DeclarationPosition fieldPos | + not fieldPos.isStructPos() and + tp = d.getDeclaredType(fieldPos, _) + ) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | + exists(this.getTypeArgument(tapos, _)) and + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) + ) + } + } + + private class StructExprAccess extends Access, StructExpr { + override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { + result = super.getTypeArgument(apos, path) + or exists(TypePath suffix | suffix.isCons(TTypeParamTypeParameter(apos.asTypeParam()), path) and result = CertainTypeInference::inferCertainType(this, suffix) ) } - AstNode getNodeAt(AccessPosition apos) { + override AstNode getNodeAt(AccessPosition apos) { result = this.getFieldExpr(apos.asFieldPos()).getExpr() or result = this and apos.isStructPos() } - Type getInferredType(AccessPosition apos, TypePath path) { - result = inferType(this.getNodeAt(apos), path) + override Path getStructPath() { result = this.getPath() } + } + + /** + * A potential nullary struct/variant construction such as `None`. + */ + private class PathExprAccess extends Access, PathExpr { + PathExprAccess() { not exists(CallExpr ce | this = ce.getFunction()) } + + override AstNode getNodeAt(AccessPosition apos) { + result = this and + apos.isStructPos() } - Declaration getTarget() { result = resolvePath(this.getPath()) } + override Path getStructPath() { result = this.getPath() } } predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { @@ -859,17 +931,25 @@ private module StructExprMatchingInput implements MatchingInputSig { private module StructExprMatching = Matching; +pragma[nomagic] +private Type inferStructExprType0(AstNode n, boolean isReturn, TypePath path) { + exists(StructExprMatchingInput::Access a, StructExprMatchingInput::AccessPosition apos | + n = a.getNodeAt(apos) and + if apos.isStructPos() then isReturn = true else isReturn = false + | + result = StructExprMatching::inferAccessType(a, apos, path) + or + a.isContextTypedAt(apos, path) and + result = TContextType() + ) +} + /** * Gets the type of `n` at `path`, where `n` is either a struct expression or * a field expression of a struct expression. */ -pragma[nomagic] -private Type inferStructExprType(AstNode n, TypePath path) { - exists(StructExprMatchingInput::Access a, StructExprMatchingInput::AccessPosition apos | - n = a.getNodeAt(apos) and - result = StructExprMatching::inferAccessType(a, apos, path) - ) -} +private predicate inferStructExprType = + ContextTyping::CheckContextTyping::check/2; pragma[nomagic] private Type inferTupleRootType(AstNode n) { @@ -877,18 +957,6 @@ private Type inferTupleRootType(AstNode n) { result = TTuple([n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()]) } -pragma[nomagic] -private Type inferPathExprType(PathExpr pe, TypePath path) { - // nullary struct/variant constructors - not exists(CallExpr ce | pe = ce.getFunction()) and - path.isEmpty() and - exists(ItemNode i | i = resolvePath(pe.getPath()) | - result = TEnum(i.(Variant).getEnum()) - or - result = TStruct(i) - ) -} - pragma[nomagic] private Path getCallExprPathQualifier(CallExpr ce) { result = CallExprImpl::getFunctionPath(ce).getQualifier() @@ -955,7 +1023,7 @@ private module ContextTyping { */ bindingset[this, i, target] predicate isContextTypedAt( - ImplOrTraitItemNode i, Function target, TypePath path, FunctionPosition pos + ImplOrTraitItemNode i, Function target, FunctionPosition pos, TypePath path ) { exists(TypeParameter tp | assocFunctionReturnContextTypedAt(i, target, pos, path, tp) and @@ -982,7 +1050,7 @@ private module ContextTyping { pragma[nomagic] private predicate isContextTyped(AstNode n) { isContextTyped(n, _) } - signature Type inferCallTypeSig(AstNode n, FunctionPosition pos, TypePath path); + signature Type inferCallTypeSig(AstNode n, boolean isReturn, TypePath path); /** * Given a predicate `inferCallType` for inferring the type of a call at a given @@ -992,30 +1060,24 @@ private module ContextTyping { */ module CheckContextTyping { pragma[nomagic] - private Type inferCallTypeFromContextCand( - AstNode n, FunctionPosition pos, TypePath path, TypePath prefix - ) { - result = inferCallType(n, pos, path) and - not pos.isReturn() and + private Type inferCallTypeFromContextCand(AstNode n, TypePath path, TypePath prefix) { + result = inferCallType(n, false, path) and isContextTyped(n) and prefix = path or exists(TypePath mid | - result = inferCallTypeFromContextCand(n, pos, path, mid) and + result = inferCallTypeFromContextCand(n, path, mid) and mid.isSnoc(prefix, _) ) } pragma[nomagic] Type check(AstNode n, TypePath path) { - exists(FunctionPosition pos | - result = inferCallType(n, pos, path) and - pos.isReturn() - or - exists(TypePath prefix | - result = inferCallTypeFromContextCand(n, pos, path, prefix) and - isContextTyped(n, prefix) - ) + result = inferCallType(n, true, path) + or + exists(TypePath prefix | + result = inferCallTypeFromContextCand(n, path, prefix) and + isContextTyped(n, prefix) ) } } @@ -2037,12 +2099,14 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi pragma[nomagic] override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - exists(TypeMention arg | result = arg.resolveTypeAt(path) | - arg = - this.(MethodCallExpr).getGenericArgList().getTypeArg(apos.asMethodTypeArgumentPosition()) - or - arg = getCallExprTypeArgument(this, apos) - ) + result = + this.(MethodCallExpr) + .getGenericArgList() + .getTypeArg(apos.asMethodTypeArgumentPosition()) + .(TypeMention) + .resolveTypeAt(path) + or + result = getCallExprTypeArgument(this, apos, path) } pragma[nomagic] @@ -2090,6 +2154,17 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi } Declaration getTarget(string derefChainBorrow) { result = this.getTarget(_, derefChainBorrow) } + + /** + * Holds if the return type of this call at `path` may have to be inferred + * from the context. + */ + pragma[nomagic] + predicate isContextTypedAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { + exists(ImplOrTraitItemNode i | + this.isContextTypedAt(i, this.getTarget(i, derefChainBorrow), pos, path) + ) + } } } @@ -2105,10 +2180,8 @@ private Type inferMethodCallType0( ( result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) or - exists(ImplOrTraitItemNode i | - a.isContextTypedAt(i, a.getTarget(i, derefChainBorrow), path0, apos) and - result = TContextType() - ) + a.isContextTypedAt(derefChainBorrow, apos, path0) and + result = TContextType() ) | if @@ -2122,11 +2195,13 @@ private Type inferMethodCallType0( } pragma[nomagic] -private Type inferMethodCallType1( - AstNode n, MethodCallMatchingInput::AccessPosition apos, TypePath path -) { - exists(MethodCallMatchingInput::Access a, string derefChainBorrow, TypePath path0 | - result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) +private Type inferMethodCallType1(AstNode n, boolean isReturn, TypePath path) { + exists( + MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, + string derefChainBorrow, TypePath path0 + | + result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) and + if apos.isReturn() then isReturn = true else isReturn = false | ( not apos.isSelf() @@ -2451,6 +2526,9 @@ private module NonMethodResolution { /** * A matching configuration for resolving types of calls like * `foo::bar(baz)` where the target is not a method. + * + * This also includes "calls" to tuple variants and tuple structs such + * as `Result::Ok(42)`. */ private module NonMethodCallMatchingInput implements MatchingInputSig { import FunctionPositionMatchingInput @@ -2571,7 +2649,7 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { class Access extends NonMethodResolution::NonMethodCall, ContextTyping::ContextTypedCallCand { pragma[nomagic] override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - result = getCallExprTypeArgument(this, apos).resolveTypeAt(path) + result = getCallExprTypeArgument(this, apos, path) } pragma[nomagic] @@ -2585,27 +2663,50 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { Declaration getTarget() { result = this.resolveCallTarget() // potential mutual recursion; resolving some associated function calls requires resolving types } + + /** + * Holds if the return type of this call at `path` may have to be inferred + * from the context. + */ + pragma[nomagic] + predicate isContextTypedAt(FunctionPosition pos, TypePath path) { + exists(ImplOrTraitItemNode i | + this.isContextTypedAt(i, + [ + this.resolveCallTargetViaPathResolution().(NonMethodFunction), + this.resolveCallTargetViaTypeInference(i), + this.resolveTraitFunctionViaPathResolution(i) + ], pos, path) + ) + or + // Tuple declarations, such as `Result::Ok(...)`, may also be context typed + exists(TupleDeclaration td, TypeParameter tp | + td = this.resolveCallTargetViaPathResolution() and + pos.isReturn() and + tp = td.getReturnType(path) and + not tp = td.getParameterType(_, _) and + // check that no explicit type arguments have been supplied for `tp` + not exists(TypeArgumentPosition tapos | + exists(this.getTypeArgument(tapos, _)) and + TTypeParamTypeParameter(tapos.asTypeParam()) = tp + ) + ) + } } } private module NonMethodCallMatching = Matching; pragma[nomagic] -private Type inferNonMethodCallType0( - AstNode n, NonMethodCallMatchingInput::AccessPosition apos, TypePath path -) { - exists(NonMethodCallMatchingInput::Access a | n = a.getNodeAt(apos) | +private Type inferNonMethodCallType0(AstNode n, boolean isReturn, TypePath path) { + exists(NonMethodCallMatchingInput::Access a, NonMethodCallMatchingInput::AccessPosition apos | + n = a.getNodeAt(apos) and + if apos.isReturn() then isReturn = true else isReturn = false + | result = NonMethodCallMatching::inferAccessType(a, apos, path) or - exists(ImplOrTraitItemNode i | - a.isContextTypedAt(i, - [ - a.resolveCallTargetViaPathResolution().(NonMethodFunction), - a.resolveCallTargetViaTypeInference(i), - a.resolveTraitFunctionViaPathResolution(i) - ], path, apos) and - result = TContextType() - ) + a.isContextTypedAt(apos, path) and + result = TContextType() ) } @@ -2684,12 +2785,11 @@ private module OperationMatchingInput implements MatchingInputSig { private module OperationMatching = Matching; pragma[nomagic] -private Type inferOperationType0( - AstNode n, OperationMatchingInput::AccessPosition apos, TypePath path -) { - exists(OperationMatchingInput::Access a | +private Type inferOperationType0(AstNode n, boolean isReturn, TypePath path) { + exists(OperationMatchingInput::Access a, OperationMatchingInput::AccessPosition apos | n = a.getNodeAt(apos) and - result = OperationMatching::inferAccessType(a, apos, path) + result = OperationMatching::inferAccessType(a, apos, path) and + if apos.isReturn() then isReturn = true else isReturn = false ) } @@ -3457,8 +3557,6 @@ private module Cached { or result = inferStructExprType(n, path) or - result = inferPathExprType(n, path) - or result = inferMethodCallType(n, path) or result = inferNonMethodCallType(n, path) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index c4185efc91f..405777439e4 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -108,6 +108,20 @@ class AliasPathTypeMention extends PathTypeMention { } } +/** + * Gets the `i`th type argument of `p`. + * + * Takes into account that variants can have type arguments applied to both the + * enum and the variant itself, e.g. `Option::::Some` is valid in addition + * to `Option::Some::`. + */ +TypeMention getPathTypeArgument(Path p, int i) { + result = p.getSegment().getGenericArgList().getTypeArg(i) + or + resolvePath(p) instanceof Variant and + result = p.getQualifier().getSegment().getGenericArgList().getTypeArg(i) +} + class NonAliasPathTypeMention extends PathTypeMention { TypeItemNode resolved; @@ -143,18 +157,6 @@ class NonAliasPathTypeMention extends PathTypeMention { ) } - /** - * Gets the positional type argument at index `i` that occurs in this path, if - * any. - */ - private TypeMention getPathPositionalTypeArgument(int i) { - result = this.getSegment().getGenericArgList().getTypeArg(i) - or - // `Option::::Some` is valid in addition to `Option::Some::` - resolvePath(this) instanceof Variant and - result = this.getQualifier().getSegment().getGenericArgList().getTypeArg(i) - } - /** * Gets the type mention that instantiates the implicit `Self` type parameter * for this path, if it occurs in the position of a trait bound. @@ -173,7 +175,7 @@ class NonAliasPathTypeMention extends PathTypeMention { private Type getDefaultPositionalTypeArgument(int i, TypePath path) { // If a type argument is not given in the path, then we use the default for // the type parameter if one exists for the type. - not exists(this.getPathPositionalTypeArgument(i)) and + not exists(getPathTypeArgument(this, i)) and // Defaults only apply to type mentions in type annotations this = any(PathTypeRepr ptp).getPath().getQualifier*() and exists(Type ty, TypePath prefix | @@ -191,7 +193,7 @@ class NonAliasPathTypeMention extends PathTypeMention { } private Type getPositionalTypeArgument(int i, TypePath path) { - result = this.getPathPositionalTypeArgument(i).resolveTypeAt(path) + result = getPathTypeArgument(this, i).resolveTypeAt(path) or result = this.getDefaultPositionalTypeArgument(i, path) } diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index fd70ce30dd1..1cac4e2d3e2 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2908,12 +2908,12 @@ mod context_typed { pub fn f() { let x = None; // $ type=x:T.i32 let x: Option = x; - let x = Option::::None; // $ MISSING: type=x:T.i32 - let x = Option::None::; // $ MISSING: type=x:T.i32 + let x = Option::::None; // $ type=x:T.i32 + let x = Option::None::; // $ type=x:T.i32 fn pin_option(opt: Option, x: T) {} - let x = None; // $ MISSING: type=x:T.i32 + let x = None; // $ type=x:T.i32 pin_option(x, 0); // $ target=pin_option enum MyEither { @@ -2932,7 +2932,7 @@ mod context_typed { fn pin_my_either(e: MyEither, x: T) {} #[rustfmt::skip] - let x = MyEither::B { // $ type=x:T2.String $ MISSING: type=x:T1.i32 + let x = MyEither::B { // $ type=x:T1.i32 type=x:T2.String right: String::new(), // $ target=new }; pin_my_either(x, 0); // $ target=pin_my_either @@ -2944,7 +2944,7 @@ mod context_typed { fn pin_result(res: Result, x: E) {} - let x = Result::Ok(0); // $ type=x:T.i32 $ MISSING: type=x:E.bool + let x = Result::Ok(0); // $ type=x:T.i32 type=x:E.bool pin_result(x, false); // $ target=pin_result let mut x = Vec::new(); // $ type=x:T.i32 target=new diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 1212fcda7f1..99ab4b1e770 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -3115,9 +3115,12 @@ inferType | main.rs:1370:26:1370:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:9:1372:55 | g(...) | | file://:0:0:0:0 | () | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd.Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:31:1372:53 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | +| main.rs:1372:31:1372:53 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:31:1372:53 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1372:51:1372:52 | S3 | | main.rs:1310:5:1311:14 | S3 | | main.rs:1374:13:1374:13 | x | | {EXTERNAL LOCATION} | Result | @@ -3551,7 +3554,6 @@ inferType | main.rs:1554:24:1554:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:25:1554:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i64 | | main.rs:1556:13:1556:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1556:17:1556:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1556:17:1556:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | @@ -3567,7 +3569,6 @@ inferType | main.rs:1560:24:1560:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:25:1560:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i64 | | main.rs:1561:13:1561:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1561:17:1561:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1561:17:1561:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | @@ -3823,6 +3824,7 @@ inferType | main.rs:1700:21:1700:25 | input | T | main.rs:1699:20:1699:27 | T | | main.rs:1700:21:1700:26 | TryExpr | | main.rs:1699:20:1699:27 | T | | main.rs:1701:22:1701:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1701:22:1701:38 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1701:22:1701:38 | ...::Ok(...) | T | main.rs:1699:20:1699:27 | T | | main.rs:1701:22:1704:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1701:22:1704:10 | ... .and_then(...) | E | main.rs:1667:5:1668:14 | S1 | @@ -3895,6 +3897,7 @@ inferType | main.rs:1722:37:1722:63 | try_complex(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:37:1722:63 | try_complex(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:49:1722:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1722:49:1722:62 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:49:1722:62 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:65:1724:9 | { ... } | | file://:0:0:0:0 | () | @@ -3957,9 +3960,7 @@ inferType | main.rs:1769:30:1771:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:1770:13:1770:31 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:1770:23:1770:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:23:1770:23 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:1770:29:1770:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:29:1770:29 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:1777:16:1777:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:1777:22:1777:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:1777:41:1782:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | @@ -4554,15 +4555,11 @@ inferType | main.rs:2065:13:2065:14 | v1 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2065:18:2065:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2065:28:2065:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2065:28:2065:28 | 1 | | {EXTERNAL LOCATION} | i64 | | main.rs:2065:34:2065:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2065:34:2065:34 | 2 | | {EXTERNAL LOCATION} | i64 | | main.rs:2066:13:2066:14 | v2 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2066:18:2066:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2066:28:2066:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:28:2066:28 | 3 | | {EXTERNAL LOCATION} | i64 | | main.rs:2066:34:2066:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:34:2066:34 | 4 | | {EXTERNAL LOCATION} | i64 | | main.rs:2069:13:2069:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | | main.rs:2069:23:2069:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2069:23:2069:30 | ... == ... | | {EXTERNAL LOCATION} | bool | @@ -4689,9 +4686,7 @@ inferType | main.rs:2128:30:2128:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2128:30:2128:63 | ... + ... | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2128:40:2128:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2128:40:2128:40 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2128:46:2128:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2128:46:2128:46 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2128:52:2128:63 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2132:13:2132:24 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2132:28:2132:45 | ...::default(...) | | main.rs:1762:5:1767:5 | Vec2 | @@ -4699,9 +4694,7 @@ inferType | main.rs:2133:30:2133:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2133:30:2133:64 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:2133:40:2133:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2133:40:2133:40 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2133:46:2133:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2133:46:2133:46 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2133:53:2133:64 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | | main.rs:2143:18:2143:21 | SelfParam | | main.rs:2140:5:2140:14 | S1 | | main.rs:2143:24:2143:25 | { ... } | | file://:0:0:0:0 | () | @@ -6202,17 +6195,24 @@ inferType | main.rs:2910:30:2910:30 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2910:30:2910:30 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2911:13:2911:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2911:13:2911:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2911:17:2911:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2911:17:2911:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2912:13:2912:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:17:2912:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2912:17:2912:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | | main.rs:2914:26:2914:28 | opt | | {EXTERNAL LOCATION} | Option | | main.rs:2914:26:2914:28 | opt | T | main.rs:2914:23:2914:23 | T | | main.rs:2914:42:2914:42 | x | | main.rs:2914:23:2914:23 | T | | main.rs:2914:48:2914:49 | { ... } | | file://:0:0:0:0 | () | | main.rs:2916:13:2916:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2916:13:2916:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2916:17:2916:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2916:17:2916:20 | None | T | {EXTERNAL LOCATION} | i32 | | main.rs:2917:9:2917:24 | pin_option(...) | | file://:0:0:0:0 | () | | main.rs:2917:20:2917:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2917:20:2917:20 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2917:23:2917:23 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2924:13:2924:13 | x | | main.rs:2919:9:2922:9 | MyEither | | main.rs:2924:13:2924:13 | x | T1 | {EXTERNAL LOCATION} | i32 | @@ -6247,12 +6247,15 @@ inferType | main.rs:2932:53:2932:53 | x | | main.rs:2932:26:2932:26 | T | | main.rs:2932:59:2932:60 | { ... } | | file://:0:0:0:0 | () | | main.rs:2935:13:2935:13 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2935:13:2935:13 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2935:13:2935:13 | x | T2 | {EXTERNAL LOCATION} | String | | main.rs:2935:17:2937:9 | ...::B {...} | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2935:17:2937:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2935:17:2937:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | | main.rs:2936:20:2936:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | | main.rs:2938:9:2938:27 | pin_my_either(...) | | file://:0:0:0:0 | () | | main.rs:2938:23:2938:23 | x | | main.rs:2919:9:2922:9 | MyEither | +| main.rs:2938:23:2938:23 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2938:23:2938:23 | x | T2 | {EXTERNAL LOCATION} | String | | main.rs:2938:26:2938:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2940:13:2940:13 | x | | {EXTERNAL LOCATION} | Result | @@ -6288,12 +6291,15 @@ inferType | main.rs:2945:48:2945:48 | x | | main.rs:2945:26:2945:26 | E | | main.rs:2945:54:2945:55 | { ... } | | file://:0:0:0:0 | () | | main.rs:2947:13:2947:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2947:13:2947:13 | x | E | {EXTERNAL LOCATION} | bool | | main.rs:2947:13:2947:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2947:17:2947:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2947:17:2947:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | | main.rs:2947:17:2947:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2947:28:2947:28 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2948:9:2948:28 | pin_result(...) | | file://:0:0:0:0 | () | | main.rs:2948:20:2948:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2948:20:2948:20 | x | E | {EXTERNAL LOCATION} | bool | | main.rs:2948:20:2948:20 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2948:23:2948:27 | false | | {EXTERNAL LOCATION} | bool | | main.rs:2950:17:2950:17 | x | | {EXTERNAL LOCATION} | Vec | From d916ebdc240a7fb51dfc0527949acfe1fb05fac3 Mon Sep 17 00:00:00 2001 From: Idriss Riouak Date: Fri, 14 Nov 2025 09:53:09 +0100 Subject: [PATCH 762/965] Java: Address review comments. Improve Change note Co-authored-by: Chris Smowton --- java/ql/src/change-notes/2025-11-13-maven-default-java-17 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/change-notes/2025-11-13-maven-default-java-17 b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 index 59a2f1c3dfc..26425b103ab 100644 --- a/java/ql/src/change-notes/2025-11-13-maven-default-java-17 +++ b/java/ql/src/change-notes/2025-11-13-maven-default-java-17 @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Autobuild now auto-detects the Java version from Maven POM files across all project modules, defaulting to Java 17 or higher for improved build compatibility. \ No newline at end of file +* Java analysis now selects the Java version to use informed by Maven POM files across all project modules. It also tries to use Java 17 or higher for all Maven projects if possible, for improved build compatibility. \ No newline at end of file From 4c7f9c0144ccdb1a92a75be6a5e2557866331e55 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 14 Nov 2025 10:16:21 +0100 Subject: [PATCH 763/965] Rust: Rename `ContextType` -> `UnknownType` --- rust/ql/lib/codeql/rust/internal/Type.qll | 22 +++++++---- .../codeql/rust/internal/TypeInference.qll | 38 ++++++++++--------- .../typeinference/BlanketImplementation.qll | 2 +- .../internal/typeinference/FunctionType.qll | 2 +- .../type-inference/type-inference.ql | 2 +- 5 files changed, 37 insertions(+), 29 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index c02e372ef67..4b3f6e6ccb9 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -51,7 +51,7 @@ newtype TType = TSliceType() or TNeverType() or TPtrType() or - TContextType() or + TUnknownType() or TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or @@ -374,21 +374,27 @@ class PtrType extends Type, TPtrType { /** * A special pseudo type used to indicate that the actual type may have to be - * inferred from a context. + * inferred by propagating type information back into call arguments. * - * For example, a call like `Default::default()` is assigned this type, which - * means that the actual type is to be inferred from the context in which the call - * occurs. + * For example, in * - * Context types are not restricted to root types, for example in a call like + * ```rust + * let x = Default::default(); + * foo(x); + * ``` + * + * `Default::default()` is assigned this type, which allows us to infer the actual + * type from the type of `foo`'s first parameter. + * + * Unknown types are not restricted to root types, for example in a call like * `Vec::new()` we assign this type at the type path corresponding to the type * parameter of `Vec`. * - * Context types are used to restrict when type information is allowed to flow + * Unknown types are used to restrict when type information is allowed to flow * into call arguments (including method call receivers), in order to avoid * combinatorial explosions. */ -class ContextType extends Type, TContextType { +class UnknownType extends Type, TUnknownType { override TypeParameter getPositionalTypeParameter(int i) { none() } override string toString() { result = "(context typed)" } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index c768d258ada..804fc017194 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -859,7 +859,7 @@ private module StructExprMatchingInput implements MatchingInputSig { pragma[nomagic] Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { - // Handle constructions that use `Self{...}` syntax + // Handle constructions that use `Self {...}` syntax exists(TypeMention tm, TypePath path0 | tm = this.getStructPath() and result = tm.resolveTypeAt(path0) and @@ -872,7 +872,7 @@ private module StructExprMatchingInput implements MatchingInputSig { * be inferred from the context. */ pragma[nomagic] - predicate isContextTypedAt(DeclarationPosition pos, TypePath path) { + predicate hasUnknownTypeAt(DeclarationPosition pos, TypePath path) { exists(Declaration d, TypeParameter tp | d = this.getTarget() and pos.isStructPos() and @@ -939,8 +939,8 @@ private Type inferStructExprType0(AstNode n, boolean isReturn, TypePath path) { | result = StructExprMatching::inferAccessType(a, apos, path) or - a.isContextTypedAt(apos, path) and - result = TContextType() + a.hasUnknownTypeAt(apos, path) and + result = TUnknownType() ) } @@ -1022,7 +1022,7 @@ private module ContextTyping { * at `pos` and `path` may have to be inferred from the context. */ bindingset[this, i, target] - predicate isContextTypedAt( + predicate hasUnknownTypeAt( ImplOrTraitItemNode i, Function target, FunctionPosition pos, TypePath path ) { exists(TypeParameter tp | @@ -1045,10 +1045,12 @@ private module ContextTyping { } pragma[nomagic] - private predicate isContextTyped(AstNode n, TypePath path) { inferType(n, path) = TContextType() } + private predicate hasUnknownTypeAt(AstNode n, TypePath path) { + inferType(n, path) = TUnknownType() + } pragma[nomagic] - private predicate isContextTyped(AstNode n) { isContextTyped(n, _) } + private predicate hasUnknownType(AstNode n) { hasUnknownTypeAt(n, _) } signature Type inferCallTypeSig(AstNode n, boolean isReturn, TypePath path); @@ -1062,7 +1064,7 @@ private module ContextTyping { pragma[nomagic] private Type inferCallTypeFromContextCand(AstNode n, TypePath path, TypePath prefix) { result = inferCallType(n, false, path) and - isContextTyped(n) and + hasUnknownType(n) and prefix = path or exists(TypePath mid | @@ -1077,7 +1079,7 @@ private module ContextTyping { or exists(TypePath prefix | result = inferCallTypeFromContextCand(n, path, prefix) and - isContextTyped(n, prefix) + hasUnknownTypeAt(n, prefix) ) } } @@ -1744,7 +1746,7 @@ private module MethodResolution { Type getTypeAt(TypePath path) { result = mc_.getACandidateReceiverTypeAtSubstituteLookupTraits(derefChain, borrow, path) and not result = TNeverType() and - not result = TContextType() + not result = TUnknownType() } pragma[nomagic] @@ -2160,9 +2162,9 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi * from the context. */ pragma[nomagic] - predicate isContextTypedAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { + predicate hasUnknownTypeAt(string derefChainBorrow, FunctionPosition pos, TypePath path) { exists(ImplOrTraitItemNode i | - this.isContextTypedAt(i, this.getTarget(i, derefChainBorrow), pos, path) + this.hasUnknownTypeAt(i, this.getTarget(i, derefChainBorrow), pos, path) ) } } @@ -2180,8 +2182,8 @@ private Type inferMethodCallType0( ( result = MethodCallMatching::inferAccessType(a, derefChainBorrow, apos, path0) or - a.isContextTypedAt(derefChainBorrow, apos, path0) and - result = TContextType() + a.hasUnknownTypeAt(derefChainBorrow, apos, path0) and + result = TUnknownType() ) | if @@ -2669,9 +2671,9 @@ private module NonMethodCallMatchingInput implements MatchingInputSig { * from the context. */ pragma[nomagic] - predicate isContextTypedAt(FunctionPosition pos, TypePath path) { + predicate hasUnknownTypeAt(FunctionPosition pos, TypePath path) { exists(ImplOrTraitItemNode i | - this.isContextTypedAt(i, + this.hasUnknownTypeAt(i, [ this.resolveCallTargetViaPathResolution().(NonMethodFunction), this.resolveCallTargetViaTypeInference(i), @@ -2705,8 +2707,8 @@ private Type inferNonMethodCallType0(AstNode n, boolean isReturn, TypePath path) | result = NonMethodCallMatching::inferAccessType(a, apos, path) or - a.isContextTypedAt(apos, path) and - result = TContextType() + a.hasUnknownTypeAt(apos, path) and + result = TUnknownType() ) } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 3382037d8ab..c60ad3f6ae3 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll @@ -93,7 +93,7 @@ module SatisfiesBlanketConstraint< Type getTypeAt(TypePath path) { result = at.getTypeAt(blanketPath.appendInverse(path)) and not result = TNeverType() and - not result = TContextType() + not result = TUnknownType() } string toString() { result = at.toString() + " [blanket at " + blanketPath.toString() + "]" } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index b92d7f0caa1..727c99fa810 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -230,7 +230,7 @@ module ArgIsInstantiationOf< Type getTypeAt(TypePath path) { result = substituteLookupTraits(super.getTypeAt(path)) and not result = TNeverType() and - not result = TContextType() + not result = TUnknownType() } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.ql b/rust/ql/test/library-tests/type-inference/type-inference.ql index 2d0b6e5e55d..0843b2fa6ab 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -6,7 +6,7 @@ import TypeInference query predicate inferType(AstNode n, TypePath path, Type t) { t = TypeInference::inferType(n, path) and - t != TContextType() and + t != TUnknownType() and n.fromSource() and not n.isFromMacroExpansion() and not n instanceof IdentPat and // avoid overlap in the output with the underlying `Name` node From 59ac2d3d3e18ed34a34291cb00e6d475aa14dc5f Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 14 Nov 2025 10:24:22 +0000 Subject: [PATCH 764/965] Move `TransformPath` into `FileLabelFor` This way we don't have to remember to transform it at all call sites. --- go/extractor/extractor.go | 4 ++-- go/extractor/trap/labels.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 09dd1b3f575..314fb8a56c1 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -815,12 +815,12 @@ func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string, isDu displayPath = rawPath } if i == len(components)-1 { - lbl := tw.Labeler.FileLabelFor(path) + lbl := tw.Labeler.FileLabelFor(file) dbscheme.FilesTable.Emit(tw, lbl, displayPath) dbscheme.ContainerParentTable.Emit(tw, parentLbl, lbl) dbscheme.HasLocationTable.Emit(tw, lbl, emitLocation(tw, lbl, 0, 0, 0, 0)) extraction.Lock.Lock() - slbl := extraction.StatWriter.Labeler.FileLabelFor(path) + slbl := extraction.StatWriter.Labeler.FileLabelFor(file) if !isDummy { dbscheme.CompilationCompilingFilesTable.Emit(extraction.StatWriter, extraction.Label, extraction.GetFileIdx(file), slbl) } diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 3fc02d066cf..473e2e761f2 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -69,14 +69,14 @@ func (l *Labeler) GlobalID(key string) Label { // FileLabel returns the label for a file with path `path`. func (l *Labeler) FileLabel() Label { if l.fileLabel == InvalidLabel { - l.fileLabel = l.FileLabelFor(srcarchive.TransformPath(l.tw.path)) + l.fileLabel = l.FileLabelFor(l.tw.path) } return l.fileLabel } // FileLabelFor returns the label for the file for which the trap writer `tw` is associated func (l *Labeler) FileLabelFor(path string) Label { - return l.GlobalID(util.EscapeTrapSpecialChars(filepath.ToSlash(path)) + ";sourcefile") + return l.GlobalID(util.EscapeTrapSpecialChars(filepath.ToSlash(srcarchive.TransformPath(path))) + ";sourcefile") } // LocalID associates a label with the given AST node `nd` and returns it From dc029e8da9e18502046952af6f39596b1161ce94 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 14 Nov 2025 11:38:13 +0100 Subject: [PATCH 765/965] C#: Accept qltest weirdness. --- .../controlflow/guards/BooleanGuardedExpr.expected | 4 ++++ .../controlflow/guards/GuardedControlFlowNode.expected | 8 ++++++++ .../library-tests/controlflow/guards/GuardedExpr.expected | 8 ++++++++ csharp/ql/test/library-tests/controlflow/guards/Guards.cs | 4 ++-- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 649e8362370..ac260924d10 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -27,8 +27,12 @@ | Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:21 | ... == ... | Guards.cs:35:13:35:13 | access to parameter x | false | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | | Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:13 | access to parameter g | false | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index b34cae88b80..d322431b1df 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -64,12 +64,20 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index b34cae88b80..d322431b1df 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -64,12 +64,20 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | +| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | +| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | +| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | +| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs index 045967d6134..8c4abb815e8 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs +++ b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs @@ -35,10 +35,10 @@ public class Guards if (x == null || y == null) { } else Console.WriteLine(x + y); // null guarded - if (!(x == null || y == null)) + if (!(x == null || y == null)) // MISHANDLED, likely due to splitting Console.WriteLine(x + y); // null guarded - if (!!!(x != null && y != null)) { } + if (!!!(x != null && y != null)) { } // MISHANDLED, likely due to splitting else Console.WriteLine(x + y); // null guarded if (Field != null) From 4867306b5ea361065c50dbe39eeac6c82a1c4468 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 14 Nov 2025 11:44:27 +0100 Subject: [PATCH 766/965] C#: Add change note. --- csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md diff --git a/csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md b/csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md new file mode 100644 index 00000000000..015f16f8d09 --- /dev/null +++ b/csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* An improvement to the Guards library for recognizing disjunctions means improved precision for `cs/constant-condition`, `cs/inefficient-containskey`, and `cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. From 69e70d7cbc3fd0dd810b80ac54cb8b3aa6f84ff9 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 11 Nov 2025 14:56:28 +0100 Subject: [PATCH 767/965] Reapply "Merge pull request #20645 from paldepind/cpp/range-analysis-measure" This reverts commit e7c029ae7d2cf0eec4f515ff8cedddf97b16cdd1. --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 428 +- .../SimpleRangeAnalysis/lowerBound.expected | 704 ++- .../SimpleRangeAnalysis/nrOfBounds.expected | 4605 +++++++++++++++++ .../SimpleRangeAnalysis/nrOfBounds.ql | 5 + .../SimpleRangeAnalysis/ternaryLower.expected | 75 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 75 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 214 + .../SimpleRangeAnalysis/upperBound.expected | 704 ++- 8 files changed, 6392 insertions(+), 418 deletions(-) create mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected create mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 95cdb2624b5..fcb99487d2a 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -93,6 +93,18 @@ private float wideningUpperBounds(ArithmeticType t) { result = 1.0 / 0.0 // +Inf } +/** Gets the widened lower bound for a given type and lower bound. */ +bindingset[type, lb] +float widenLowerBound(Type type, float lb) { + result = max(float widenLB | widenLB = wideningLowerBounds(type) and widenLB <= lb | widenLB) +} + +/** Gets the widened upper bound for a given type and upper bound. */ +bindingset[type, ub] +float widenUpperBound(Type type, float ub) { + result = min(float widenUB | widenUB = wideningUpperBounds(type) and widenUB >= ub | widenUB) +} + /** * Gets the value of the expression `e`, if it is a constant. * This predicate also handles the case of constant variables initialized in different @@ -504,6 +516,328 @@ private predicate isRecursiveExpr(Expr e) { ) } +/** + * Provides predicates that estimate the number of bounds that the range + * analysis might produce. + */ +private module BoundsEstimate { + /** + * Gets the limit beyond which we enable widening. That is, if the estimated + * number of bounds exceeds this limit, we enable widening such that the limit + * will not be reached. + */ + float getBoundsLimit() { + // This limit is arbitrary, but low enough that it prevents timeouts on + // specific observed customer databases (and the in the tests). + result = 2.0.pow(40) + } + + /** Gets the maximum number of bounds possible for `t` when widening is used. */ + private int getNrOfWideningBounds(ArithmeticType t) { + result = strictcount(wideningLowerBounds(t)).maximum(strictcount(wideningUpperBounds(t))) + } + + /** + * Holds if `boundFromGuard(guard, v, _, branch)` holds, but without + * relying on range analysis (which would cause non-monotonic recursion + * elsewhere). + */ + private predicate hasBoundFromGuard(Expr guard, VariableAccess v, boolean branch) { + exists(Expr lhs | linearAccess(lhs, v, _, _) | + relOpWithSwapAndNegate(guard, lhs, _, _, _, branch) + or + eqOpWithSwapAndNegate(guard, lhs, _, true, branch) + or + eqZeroWithNegate(guard, lhs, true, branch) + ) + } + + /** Holds if `def` is a guard phi node for `v` with a bound from a guard. */ + predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { + exists(Expr guard, boolean branch | + def.isGuardPhi(v, access, guard, branch) and + hasBoundFromGuard(guard, access, branch) + ) + } + + /** + * Gets the number of bounds for `def` when `def` is a guard phi node for the + * variable `v`. + */ + language[monotonicAggregates] + private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { + // If we have + // + // if (x < c) { e1 } + // e2 + // + // then `e2` is both a guard phi node (guarded by `x < c`) and a normal + // phi node (control is merged after the `if` statement). + // + // Assume `x` has `n` bounds. Then `n` bounds are propagated to the guard + // phi node `{ e1 }` and, since `{ e1 }` is input to `e2` as a normal phi + // node, `n` bounds are propagated to `e2`. If we also propagate the `n` + // bounds to `e2` as a guard phi node, then we square the number of + // bounds. + // + // However in practice `x < c` is going to cut down the number of bounds: + // The tracked bounds can't flow to both branches as that would require + // them to simultaneously be greater and smaller than `c`. To approximate + // this better, the contribution from a guard phi node that is also a + // normal phi node is 1. + exists(def.getAPhiInput(v)) and + isGuardPhiWithBound(def, v, _) and + result = 1 + or + not exists(def.getAPhiInput(v)) and + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = + max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isGuardPhiWithBound(def, v, _) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is a normal phi node for the + * variable `v`. + */ + language[monotonicAggregates] + private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { + result = + strictsum(RangeSsaDefinition inputDef | + inputDef = def.getAPhiInput(v) + | + nrOfBoundsDef(inputDef, v) + ) + or + def.isPhiNode(v) and + not exists(def.getAPhiInput(v)) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is an NE phi node for the + * variable `v`. + */ + private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { + exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) + or + def.isPhiNode(v) and + not isNEPhi(v, def, _, _) and + result = 0 + } + + /** + * Gets the number of bounds for `def` when `def` is an unsupported guard phi + * node for the variable `v`. + */ + private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { + exists(VariableAccess access | + isUnsupportedGuardPhi(v, def, access) and + result = nrOfBoundsExpr(access) + ) + or + def.isPhiNode(v) and + not isUnsupportedGuardPhi(v, def, _) and + result = 0 + } + + private float nrOfBoundsPhi(RangeSsaDefinition def, StackVariable v) { + // The cases for phi nodes are not mutually exclusive. For instance a phi + // node can be both a guard phi node and a normal phi node. To handle this + // we sum the contributions from the different cases. + result = + nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + + nrOfBoundsUnsupportedGuardPhi(def, v) + } + + /** Gets the estimated number of bounds for `def` and `v`. */ + float nrOfBoundsDef(RangeSsaDefinition def, StackVariable v) { + // Recursive definitions are already widened, so we simply estimate them as + // having the number of widening bounds available. This is crucial as it + // ensures that we don't follow recursive cycles when calculating the + // estimate. Had that not been the case the estimate itself would be at risk + // of causing performance issues and being non-functional. + if isRecursiveDef(def, v) + then result = getNrOfWideningBounds(getVariableRangeType(v)) + else ( + // Definitions with a defining value + exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) + or + // Assignment operations with a defining value + exists(AssignOperation assignOp | + def = assignOp and + assignOp.getLValue() = v.getAnAccess() and + result = nrOfBoundsExpr(assignOp) + ) + or + // Phi nodes + result = nrOfBoundsPhi(def, v) + or + unanalyzableDefBounds(def, v, _, _) and result = 1 + ) + } + + /** + * Gets a naive estimate of the number of bounds for `e`. + * + * The estimate is like an abstract interpretation of the range analysis, + * where the abstract value is the number of bounds. For instance, + * `nrOfBoundsExpr(12) = 1` and `nrOfBoundsExpr(x + y) = nrOfBoundsExpr(x) * + * nrOfBoundsExpr(y)`. + * + * The estimated number of bounds will usually be greater than the actual + * number of bounds, as the estimate can not detect cases where bounds are cut + * down when tracked precisely. For instance, in + * ```c + * int x = 1; + * if (cond) { x = 1; } + * int y = x + x; + * ``` + * the actual number of bounds for `y` is 1. However, the estimate will be 4 + * as the conditional assignment to `x` gives two bounds for `x` on the last + * line and the addition gives 2 * 2 bounds. There are two sources of anncuracies: + * + * 1. Without tracking the lower bounds we can't see that `x` is assigned a + * value that is equal to its lower bound. + * 2. Had the conditional assignment been `x = 2` then the estimate of two + * bounds for `x` would have been correct. However, the estimate of 4 for `y` + * would still be incorrect. Summing the actual bounds `{1,2}` with itself + * gives `{2,3,4}` which is only three bounds. Again, we can't realise this + * without tracking the bounds. + * + * Since these inaccuracies compound the estimated number of bounds can often + * be _much_ greater than the actual number of bounds. Do note though that the + * estimate is not _guaranteed_ to be an upper bound. In some cases the + * approximations might underestimate the number of bounds. + * + * This predicate is functional. This is crucial as: + * + * - It ensures that the computing the estimate itself is fast. + * - Our use of monotonic aggregates assumes functionality. + * + * Any non-functional case should be considered a bug. + */ + float nrOfBoundsExpr(Expr e) { + // Similarly to what we do for definitions, we do not attempt to measure the + // number of bounds for recursive expressions. + if isRecursiveExpr(e) + then result = getNrOfWideningBounds(e.getUnspecifiedType()) + else + if analyzableExpr(e) + then + // The cases here are an abstraction of and mirrors the cases inside + // `getLowerBoundsImpl`/`getUpperBoundsImpl`. + result = 1 and exists(getValue(e).toFloat()) + or + exists(Expr operand | result = nrOfBoundsExpr(operand) | + effectivelyMultipliesByPositive(e, operand, _) + or + effectivelyMultipliesByNegative(e, operand, _) + ) + or + exists(ConditionalExpr condExpr | + e = condExpr and + result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) + ) + or + exists(BinaryOperation binop | + e = binop and + result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) + | + e instanceof MaxExpr or + e instanceof MinExpr or + e instanceof AddExpr or + e instanceof SubExpr or + e instanceof UnsignedMulExpr or + e instanceof UnsignedBitwiseAndExpr + ) + or + exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) + or + exists(AssignArithmeticOperation assignOp | + e = assignOp and + result = nrOfBoundsExpr(assignOp.getLValue()) * nrOfBoundsExpr(assignOp.getRValue()) + | + e instanceof AssignAddExpr or + e instanceof AssignSubExpr or + e instanceof UnsignedAssignMulExpr + ) + or + // Handles `AssignMulByPositiveConstantExpr` and `AssignMulByNegativeConstantExpr` + exists(AssignMulByConstantExpr mulExpr | + e = mulExpr and + result = nrOfBoundsExpr(mulExpr.getLValue()) + ) + or + // Handles the prefix and postfix increment and decrement operators. + exists(CrementOperation crementOp | + e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) + ) + or + exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getRightOperand())) + or + exists(Conversion convExpr | + e = convExpr and + if convExpr.getUnspecifiedType() instanceof BoolType + then result = 1 + else result = nrOfBoundsExpr(convExpr.getExpr()) + ) + or + exists(RangeSsaDefinition def, StackVariable v | + e = def.getAUse(v) and + result = nrOfBoundsDef(def, v) and + // Avoid returning two numbers when `e` is a use with a constant value. + not exists(getValue(e).toFloat()) + ) + or + exists(RShiftExpr rsExpr | + e = rsExpr and + exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and + result = nrOfBoundsExpr(rsExpr.getLeftOperand()) + ) + else ( + exists(exprMinVal(e)) and result = 1 + ) + } +} + +/** + * Holds if `v` is a variable for which widening should be used, as otherwise a + * very large number of bounds might be generated during the range analysis for + * `v`. + */ +private predicate varHasTooManyBounds(StackVariable v) { + exists(RangeSsaDefinition def | + def.getAVariable() = v and + BoundsEstimate::nrOfBoundsDef(def, v) > BoundsEstimate::getBoundsLimit() + ) +} + +/** + * Holds if `e` is an expression for which widening should be used, as otherwise + * a very large number of bounds might be generated during the range analysis + * for `e`. + */ +private predicate exprHasTooManyBounds(Expr e) { + BoundsEstimate::nrOfBoundsExpr(e) > BoundsEstimate::getBoundsLimit() + or + // A subexpressions of an expression with too many bounds may itself not have + // to many bounds. For instance, `x + y` can have too many bounds without `x` + // having as well. But in these cases, still want to consider `e` as having + // too many bounds since: + // - The overall result is widened anyway, so widening `e` as well is unlikely + // to cause further precision loss. + // - The number of bounds could be very large but still below the arbitrary + // limit. Hence widening `e` can improve performance. + exists(Expr pe | exprHasTooManyBounds(pe) and e.getParent() = pe) +} + /** * Holds if `binop` is a binary operation that's likely to be assigned a * quadratic (or more) number of candidate bounds during the analysis. This can @@ -654,13 +988,8 @@ private float getTruncatedLowerBounds(Expr expr) { if exprMinVal(expr) <= newLB and newLB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) - then - result = - max(float widenLB | - widenLB = wideningLowerBounds(expr.getUnspecifiedType()) and - not widenLB > newLB - ) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) + then result = widenLowerBound(expr.getUnspecifiedType(), newLB) else result = newLB else result = exprMinVal(expr) ) and @@ -713,13 +1042,8 @@ private float getTruncatedUpperBounds(Expr expr) { if exprMinVal(expr) <= newUB and newUB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) - then - result = - min(float widenUB | - widenUB = wideningUpperBounds(expr.getUnspecifiedType()) and - not widenUB < newUB - ) + if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) + then result = widenUpperBound(expr.getUnspecifiedType(), newUB) else result = newUB else result = exprMaxVal(expr) ) @@ -1796,18 +2120,12 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new lower bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the // recursion from exploding. - result = - max(float widenLB | - widenLB = wideningLowerBounds(getVariableRangeType(v)) and - not widenLB > truncatedLB - | - widenLB - ) + result = widenLowerBound(getVariableRangeType(v), truncatedLB) else result = truncatedLB ) or @@ -1826,18 +2144,12 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new upper bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) + if isRecursiveDef(def, v) or varHasTooManyBounds(v) then // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion // from exploding. - result = - min(float widenUB | - widenUB = wideningUpperBounds(getVariableRangeType(v)) and - not widenUB < truncatedUB - | - widenUB - ) + result = widenUpperBound(getVariableRangeType(v), truncatedUB) else result = truncatedUB ) or @@ -1845,4 +2157,60 @@ module SimpleRangeAnalysisInternal { // bound is `typeUpperBound`. defMightOverflowNegatively(def, v) and result = varMaxVal(v) } + + /** Gets the estimate of the number of bounds for `e`. */ + float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } +} + +/** Provides predicates for debugging the simple range analysis library. */ +private module Debug { + Locatable getRelevantLocatable() { + exists(string filepath, int startline | + result.getLocation().hasLocationInfo(filepath, startline, _, _, _) and + filepath.matches("%/test.c") and + startline = [621 .. 639] + ) + } + + float debugGetLowerBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getLowerBoundsImpl(e) + } + + float debugGetUpperBoundsImpl(Expr e) { + e = getRelevantLocatable() and + result = getUpperBoundsImpl(e) + } + + /** + * Counts the number of lower bounds for a given expression. This predicate is + * useful for identifying performance issues in the range analysis. + */ + predicate countGetLowerBoundsImpl(Expr e, int n) { + e = getRelevantLocatable() and + n = strictcount(float lb | lb = getLowerBoundsImpl(e) | lb) + } + + float debugNrOfBounds(Expr e) { + e = getRelevantLocatable() and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Finds any expressions for which `nrOfBounds` is not functional. The result + * should be empty, so this predicate is useful to debug non-functional cases. + */ + int nonFunctionalNrOfBounds(Expr e) { + strictcount(BoundsEstimate::nrOfBoundsExpr(e)) > 1 and + result = BoundsEstimate::nrOfBoundsExpr(e) + } + + /** + * Holds if `e` is an expression that has a lower bound, but where + * `nrOfBounds` does not compute an estimate. + */ + predicate missingNrOfBounds(Expr e, float n) { + n = lowerBound(e) and + not exists(BoundsEstimate::nrOfBoundsExpr(e)) + } } diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index bc8f42dafc3..10e31040b5a 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,197 +485,519 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:418:20:418:20 | x | 0 | -| test.c:418:30:418:30 | x | 0 | -| test.c:421:3:421:4 | y1 | 0 | -| test.c:421:11:421:11 | y | 0 | -| test.c:421:14:421:14 | y | 1 | -| test.c:422:3:422:4 | y2 | 0 | -| test.c:422:9:422:9 | y | 1 | -| test.c:422:14:422:14 | y | 2 | -| test.c:422:22:422:22 | y | 5 | -| test.c:423:10:423:11 | y1 | 1 | -| test.c:423:15:423:16 | y2 | 5 | -| test.c:431:3:431:3 | i | -2147483648 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | -2147483648 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | -2147483648 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | -2147483648 | -| test.c:442:7:442:7 | j | -2147483648 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | -2147483648 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | -2147483648 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 0 | -| test.c:456:17:456:17 | a | 3 | -| test.c:456:33:456:33 | b | 0 | -| test.c:456:38:456:38 | b | 5 | -| test.c:457:13:457:13 | a | 3 | -| test.c:457:15:457:15 | b | 5 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 15 | -| test.c:460:12:460:12 | a | 0 | -| test.c:460:17:460:17 | a | 3 | -| test.c:460:33:460:33 | b | 0 | -| test.c:460:38:460:38 | b | 0 | -| test.c:461:13:461:13 | a | 3 | -| test.c:461:15:461:15 | b | 0 | -| test.c:462:5:462:9 | total | 0 | -| test.c:462:14:462:14 | r | 0 | -| test.c:464:12:464:12 | a | 0 | -| test.c:464:17:464:17 | a | 3 | -| test.c:464:34:464:34 | b | 0 | -| test.c:464:39:464:39 | b | 13 | -| test.c:465:13:465:13 | a | 3 | -| test.c:465:15:465:15 | b | 13 | -| test.c:466:5:466:9 | total | 0 | -| test.c:466:14:466:14 | r | 39 | -| test.c:469:10:469:14 | total | 0 | -| test.c:475:12:475:12 | b | 0 | -| test.c:475:17:475:17 | b | 5 | -| test.c:476:16:476:16 | b | 5 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 55 | -| test.c:479:12:479:12 | b | 0 | -| test.c:479:17:479:17 | b | 0 | -| test.c:480:16:480:16 | b | 0 | -| test.c:481:5:481:9 | total | 0 | -| test.c:481:14:481:14 | r | 0 | -| test.c:483:13:483:13 | b | 0 | -| test.c:483:18:483:18 | b | 13 | -| test.c:484:16:484:16 | b | 13 | -| test.c:485:5:485:9 | total | 0 | -| test.c:485:14:485:14 | r | 143 | -| test.c:488:10:488:14 | total | 0 | -| test.c:493:3:493:3 | x | 0 | -| test.c:493:7:493:7 | y | 0 | -| test.c:494:3:494:4 | xy | 0 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 0 | -| test.c:501:3:501:3 | y | 0 | -| test.c:502:3:502:4 | xy | 0 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 0 | -| test.c:508:43:508:44 | ui | 10 | -| test.c:508:48:508:49 | ui | 10 | -| test.c:509:12:509:17 | result | 100 | -| test.c:511:7:511:8 | ul | 0 | -| test.c:512:28:512:29 | ul | 10 | -| test.c:512:33:512:34 | ul | 10 | -| test.c:513:12:513:17 | result | 0 | -| test.c:519:7:519:8 | ui | 0 | -| test.c:519:19:519:20 | ui | 0 | -| test.c:520:5:520:6 | ui | 2 | -| test.c:520:11:520:12 | ui | 2 | -| test.c:521:12:521:13 | ui | 4 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | -2147483648 | -| test.c:533:18:533:18 | i | -1 | -| test.c:534:5:534:5 | i | -2147483648 | -| test.c:534:13:534:13 | i | -1 | -| test.c:535:9:535:9 | i | -5 | -| test.c:537:5:537:5 | i | -2147483648 | -| test.c:537:9:537:9 | i | -5 | -| test.c:538:9:538:9 | i | -30 | -| test.c:540:5:540:5 | i | -30 | -| test.c:541:9:541:9 | i | -210 | -| test.c:543:5:543:5 | i | -210 | -| test.c:544:9:544:9 | i | -1155 | -| test.c:546:7:546:7 | i | -2147483648 | -| test.c:547:5:547:5 | i | -2147483648 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | -2147483648 | -| test.c:550:7:550:7 | i | -2147483648 | -| test.c:551:10:551:10 | i | -2147483648 | -| test.c:554:3:554:3 | i | -2147483648 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | -128 | -| test.c:563:7:563:7 | n | 0 | -| test.c:565:7:565:7 | n | 0 | -| test.c:566:9:566:9 | n | 1 | -| test.c:569:7:569:7 | n | 0 | -| test.c:570:9:570:9 | n | 1 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 0 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 1 | -| test.c:581:10:581:10 | n | 0 | -| test.c:582:5:582:5 | n | 1 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | -32768 | -| test.c:592:7:592:7 | n | 0 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 1 | -| test.c:598:7:598:7 | n | 0 | -| test.c:599:9:599:9 | n | 1 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 0 | -| test.c:605:5:605:5 | n | 1 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | -32768 | -| test.c:613:9:613:9 | n | -32768 | -| test.c:614:11:614:11 | n | 0 | -| test.c:618:7:618:7 | n | -32768 | -| test.c:619:13:619:13 | n | 5 | -| test.c:622:9:622:9 | n | 6 | -| test.c:625:7:625:7 | n | -32768 | -| test.c:625:22:625:22 | n | -32767 | -| test.c:626:9:626:9 | n | -32766 | -| test.c:629:7:629:7 | n | -32768 | -| test.c:630:5:630:5 | n | 0 | -| test.c:630:10:630:10 | n | 1 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 0 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 1 | -| test.c:642:7:642:8 | ss | -32768 | -| test.c:643:9:643:10 | ss | 0 | -| test.c:646:7:646:8 | ss | -32768 | -| test.c:647:9:647:10 | ss | -32768 | -| test.c:650:14:650:15 | us | 0 | -| test.c:651:9:651:10 | us | 0 | -| test.c:654:14:654:15 | us | 0 | -| test.c:655:9:655:10 | us | 0 | -| test.c:658:7:658:8 | ss | -32768 | -| test.c:659:9:659:10 | ss | -32768 | -| test.c:662:7:662:8 | ss | -32768 | -| test.c:663:9:663:10 | ss | -1 | -| test.c:669:8:669:8 | s | -2147483648 | -| test.c:669:15:669:15 | s | 0 | -| test.c:669:23:669:23 | s | 0 | -| test.c:670:18:670:18 | s | 0 | -| test.c:670:22:670:22 | s | 0 | -| test.c:671:9:671:14 | result | 0 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | -2147483648 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 0 | -| test.c:688:12:688:12 | s | -2147483648 | -| test.c:689:7:689:8 | s2 | -4 | -| test.c:694:7:694:7 | x | -2147483648 | -| test.c:695:9:695:9 | y | -2147483648 | -| test.c:699:7:699:7 | y | -2147483648 | -| test.c:708:7:708:7 | x | -2147483648 | -| test.c:713:7:713:7 | x | -2147483648 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:7:420:9 | rhs | 0 | +| test.c:420:19:420:21 | rhs | 0 | +| test.c:421:7:421:9 | rhs | 0 | +| test.c:421:19:421:21 | rhs | 0 | +| test.c:422:7:422:9 | rhs | 0 | +| test.c:422:19:422:21 | rhs | 0 | +| test.c:423:7:423:9 | rhs | 0 | +| test.c:423:19:423:21 | rhs | 0 | +| test.c:424:7:424:9 | rhs | 0 | +| test.c:424:19:424:21 | rhs | 0 | +| test.c:425:10:425:12 | rhs | 0 | +| test.c:432:10:432:11 | ip | 0 | +| test.c:432:20:432:21 | ip | 0 | +| test.c:432:40:432:41 | ip | 0 | +| test.c:433:14:433:15 | ip | 1 | +| test.c:434:14:434:15 | ip | 0 | +| test.c:434:34:434:35 | ip | 0 | +| test.c:435:11:435:12 | ip | 0 | +| test.c:436:13:436:14 | ip | 0 | +| test.c:437:14:437:15 | ip | 0 | +| test.c:438:14:438:15 | ip | 0 | +| test.c:439:15:439:16 | ip | 0 | +| test.c:439:41:439:42 | ip | 0 | +| test.c:439:52:439:53 | ip | 0 | +| test.c:439:67:439:68 | ip | 0 | +| test.c:439:78:439:79 | ip | 0 | +| test.c:440:18:440:19 | ip | 0 | +| test.c:441:23:441:24 | ip | 0 | +| test.c:441:34:441:35 | ip | 0 | +| test.c:442:25:442:26 | ip | 0 | +| test.c:443:20:443:21 | ip | 0 | +| test.c:444:11:444:12 | ip | 0 | +| test.c:444:26:444:27 | ip | 0 | +| test.c:445:16:445:17 | ip | 0 | +| test.c:446:16:446:17 | ip | 0 | +| test.c:447:16:447:17 | ip | 0 | +| test.c:448:17:448:18 | ip | 0 | +| test.c:449:22:449:23 | ip | 0 | +| test.c:449:33:449:34 | ip | 0 | +| test.c:449:48:449:49 | ip | 0 | +| test.c:449:59:449:60 | ip | 0 | +| test.c:450:20:450:21 | ip | 0 | +| test.c:451:25:451:26 | ip | 0 | +| test.c:451:36:451:37 | ip | 0 | +| test.c:452:27:452:28 | ip | 0 | +| test.c:453:22:453:23 | ip | 0 | +| test.c:454:15:454:16 | ip | 0 | +| test.c:454:30:454:31 | ip | 0 | +| test.c:455:11:455:12 | ip | 0 | +| test.c:456:12:456:13 | ip | 0 | +| test.c:457:12:457:13 | ip | 0 | +| test.c:458:13:458:14 | ip | 0 | +| test.c:458:39:458:40 | ip | 0 | +| test.c:458:50:458:51 | ip | 0 | +| test.c:458:65:458:66 | ip | 0 | +| test.c:458:76:458:77 | ip | 0 | +| test.c:459:16:459:17 | ip | 0 | +| test.c:460:21:460:22 | ip | 0 | +| test.c:460:32:460:33 | ip | 0 | +| test.c:461:23:461:24 | ip | 0 | +| test.c:462:18:462:19 | ip | 0 | +| test.c:463:11:463:12 | ip | 0 | +| test.c:463:17:463:18 | ip | 0 | +| test.c:463:37:463:38 | ip | 0 | +| test.c:463:43:463:44 | ip | 0 | +| test.c:464:14:464:15 | ip | 0 | +| test.c:465:14:465:15 | ip | 0 | +| test.c:466:14:466:15 | ip | 0 | +| test.c:467:15:467:16 | ip | 0 | +| test.c:467:41:467:42 | ip | 0 | +| test.c:467:52:467:53 | ip | 0 | +| test.c:467:67:467:68 | ip | 0 | +| test.c:467:78:467:79 | ip | 0 | +| test.c:468:18:468:19 | ip | 0 | +| test.c:469:23:469:24 | ip | 0 | +| test.c:469:34:469:35 | ip | 0 | +| test.c:470:25:470:26 | ip | 0 | +| test.c:471:20:471:21 | ip | 0 | +| test.c:472:14:472:15 | ip | 0 | +| test.c:472:20:472:21 | ip | 0 | +| test.c:473:16:473:17 | ip | 0 | +| test.c:474:12:474:13 | ip | 0 | +| test.c:475:14:475:15 | ip | 0 | +| test.c:476:15:476:16 | ip | 0 | +| test.c:477:16:477:17 | ip | 0 | +| test.c:478:16:478:17 | ip | 0 | +| test.c:479:17:479:18 | ip | 0 | +| test.c:480:22:480:23 | ip | 0 | +| test.c:480:33:480:34 | ip | 0 | +| test.c:480:48:480:49 | ip | 0 | +| test.c:480:59:480:60 | ip | 0 | +| test.c:481:20:481:21 | ip | 0 | +| test.c:482:25:482:26 | ip | 0 | +| test.c:482:36:482:37 | ip | 0 | +| test.c:483:27:483:28 | ip | 0 | +| test.c:484:22:484:23 | ip | 0 | +| test.c:485:13:485:14 | ip | 0 | +| test.c:485:28:485:29 | ip | 0 | +| test.c:486:18:486:19 | ip | 0 | +| test.c:487:18:487:19 | ip | 0 | +| test.c:488:18:488:19 | ip | 0 | +| test.c:489:19:489:20 | ip | 0 | +| test.c:490:24:490:25 | ip | 0 | +| test.c:490:35:490:36 | ip | 0 | +| test.c:490:50:490:51 | ip | 0 | +| test.c:490:61:490:62 | ip | 0 | +| test.c:491:22:491:23 | ip | 0 | +| test.c:492:27:492:28 | ip | 0 | +| test.c:492:38:492:39 | ip | 0 | +| test.c:493:29:493:30 | ip | 0 | +| test.c:494:24:494:25 | ip | 0 | +| test.c:495:17:495:18 | ip | 0 | +| test.c:495:32:495:33 | ip | 0 | +| test.c:496:14:496:15 | ip | 0 | +| test.c:497:18:497:19 | ip | 0 | +| test.c:498:18:498:19 | ip | 0 | +| test.c:499:19:499:20 | ip | 0 | +| test.c:500:24:500:25 | ip | 0 | +| test.c:500:35:500:36 | ip | 0 | +| test.c:500:50:500:51 | ip | 0 | +| test.c:500:61:500:62 | ip | 0 | +| test.c:501:22:501:23 | ip | 0 | +| test.c:502:27:502:28 | ip | 0 | +| test.c:502:38:502:39 | ip | 0 | +| test.c:503:29:503:30 | ip | 0 | +| test.c:504:24:504:25 | ip | 0 | +| test.c:505:17:505:18 | ip | 0 | +| test.c:505:23:505:24 | ip | 0 | +| test.c:505:43:505:44 | ip | 0 | +| test.c:505:49:505:50 | ip | 0 | +| test.c:506:16:506:17 | ip | 0 | +| test.c:507:16:507:17 | ip | 0 | +| test.c:508:16:508:17 | ip | 0 | +| test.c:509:17:509:18 | ip | 0 | +| test.c:510:22:510:23 | ip | 0 | +| test.c:510:33:510:34 | ip | 0 | +| test.c:510:48:510:49 | ip | 0 | +| test.c:510:59:510:60 | ip | 0 | +| test.c:511:20:511:21 | ip | 0 | +| test.c:512:25:512:26 | ip | 0 | +| test.c:512:36:512:37 | ip | 0 | +| test.c:513:27:513:28 | ip | 0 | +| test.c:514:22:514:23 | ip | 0 | +| test.c:515:16:515:17 | ip | 0 | +| test.c:515:22:515:23 | ip | 0 | +| test.c:516:18:516:19 | ip | 0 | +| test.c:517:14:517:15 | ip | 0 | +| test.c:518:14:518:15 | ip | 0 | +| test.c:518:24:518:25 | ip | 0 | +| test.c:518:44:518:45 | ip | 0 | +| test.c:519:16:519:17 | ip | 1 | +| test.c:520:16:520:17 | ip | 0 | +| test.c:520:36:520:37 | ip | 0 | +| test.c:521:14:521:15 | ip | 0 | +| test.c:522:19:522:20 | ip | 0 | +| test.c:523:20:523:21 | ip | 0 | +| test.c:524:20:524:21 | ip | 0 | +| test.c:525:21:525:22 | ip | 0 | +| test.c:526:26:526:27 | ip | 0 | +| test.c:526:37:526:38 | ip | 0 | +| test.c:526:52:526:53 | ip | 0 | +| test.c:526:63:526:64 | ip | 0 | +| test.c:527:24:527:25 | ip | 0 | +| test.c:528:29:528:30 | ip | 0 | +| test.c:528:40:528:41 | ip | 0 | +| test.c:529:31:529:32 | ip | 0 | +| test.c:530:26:530:27 | ip | 0 | +| test.c:531:17:531:18 | ip | 0 | +| test.c:531:32:531:33 | ip | 0 | +| test.c:532:22:532:23 | ip | 0 | +| test.c:533:22:533:23 | ip | 0 | +| test.c:534:22:534:23 | ip | 0 | +| test.c:535:23:535:24 | ip | 0 | +| test.c:536:28:536:29 | ip | 0 | +| test.c:536:39:536:40 | ip | 0 | +| test.c:536:54:536:55 | ip | 0 | +| test.c:536:65:536:66 | ip | 0 | +| test.c:537:26:537:27 | ip | 0 | +| test.c:538:31:538:32 | ip | 0 | +| test.c:538:42:538:43 | ip | 0 | +| test.c:539:33:539:34 | ip | 0 | +| test.c:540:28:540:29 | ip | 0 | +| test.c:541:21:541:22 | ip | 0 | +| test.c:541:36:541:37 | ip | 0 | +| test.c:542:17:542:18 | ip | 0 | +| test.c:543:18:543:19 | ip | 0 | +| test.c:544:18:544:19 | ip | 0 | +| test.c:545:19:545:20 | ip | 0 | +| test.c:546:24:546:25 | ip | 0 | +| test.c:546:35:546:36 | ip | 0 | +| test.c:546:50:546:51 | ip | 0 | +| test.c:546:61:546:62 | ip | 0 | +| test.c:547:22:547:23 | ip | 0 | +| test.c:548:27:548:28 | ip | 0 | +| test.c:548:38:548:39 | ip | 0 | +| test.c:549:29:549:30 | ip | 0 | +| test.c:550:24:550:25 | ip | 0 | +| test.c:551:17:551:18 | ip | 0 | +| test.c:551:23:551:24 | ip | 0 | +| test.c:551:43:551:44 | ip | 0 | +| test.c:551:49:551:50 | ip | 0 | +| test.c:552:20:552:21 | ip | 0 | +| test.c:553:20:553:21 | ip | 0 | +| test.c:554:20:554:21 | ip | 0 | +| test.c:555:21:555:22 | ip | 0 | +| test.c:556:26:556:27 | ip | 0 | +| test.c:556:37:556:38 | ip | 0 | +| test.c:556:52:556:53 | ip | 0 | +| test.c:556:63:556:64 | ip | 0 | +| test.c:557:24:557:25 | ip | 0 | +| test.c:558:29:558:30 | ip | 0 | +| test.c:558:40:558:41 | ip | 0 | +| test.c:559:31:559:32 | ip | 0 | +| test.c:560:26:560:27 | ip | 0 | +| test.c:561:20:561:21 | ip | 0 | +| test.c:561:26:561:27 | ip | 0 | +| test.c:562:22:562:23 | ip | 0 | +| test.c:563:18:563:19 | ip | 0 | +| test.c:564:16:564:17 | ip | 0 | +| test.c:565:17:565:18 | ip | 0 | +| test.c:566:18:566:19 | ip | 0 | +| test.c:567:18:567:19 | ip | 0 | +| test.c:568:19:568:20 | ip | 0 | +| test.c:569:24:569:25 | ip | 0 | +| test.c:569:35:569:36 | ip | 0 | +| test.c:569:50:569:51 | ip | 0 | +| test.c:569:61:569:62 | ip | 0 | +| test.c:570:22:570:23 | ip | 0 | +| test.c:571:27:571:28 | ip | 0 | +| test.c:571:38:571:39 | ip | 0 | +| test.c:572:29:572:30 | ip | 0 | +| test.c:573:24:573:25 | ip | 0 | +| test.c:574:15:574:16 | ip | 0 | +| test.c:574:30:574:31 | ip | 0 | +| test.c:575:20:575:21 | ip | 0 | +| test.c:576:20:576:21 | ip | 0 | +| test.c:577:20:577:21 | ip | 0 | +| test.c:578:21:578:22 | ip | 0 | +| test.c:579:26:579:27 | ip | 0 | +| test.c:579:37:579:38 | ip | 0 | +| test.c:579:52:579:53 | ip | 0 | +| test.c:579:63:579:64 | ip | 0 | +| test.c:580:24:580:25 | ip | 0 | +| test.c:581:29:581:30 | ip | 0 | +| test.c:581:40:581:41 | ip | 0 | +| test.c:582:31:582:32 | ip | 0 | +| test.c:583:26:583:27 | ip | 0 | +| test.c:584:19:584:20 | ip | 0 | +| test.c:584:34:584:35 | ip | 0 | +| test.c:585:16:585:17 | ip | 0 | +| test.c:586:20:586:21 | ip | 0 | +| test.c:587:20:587:21 | ip | 0 | +| test.c:588:21:588:22 | ip | 0 | +| test.c:589:26:589:27 | ip | 0 | +| test.c:589:37:589:38 | ip | 0 | +| test.c:589:52:589:53 | ip | 0 | +| test.c:589:63:589:64 | ip | 0 | +| test.c:590:24:590:25 | ip | 0 | +| test.c:591:29:591:30 | ip | 0 | +| test.c:591:40:591:41 | ip | 0 | +| test.c:592:31:592:32 | ip | 0 | +| test.c:593:26:593:27 | ip | 0 | +| test.c:594:19:594:20 | ip | 0 | +| test.c:594:25:594:26 | ip | 0 | +| test.c:594:45:594:46 | ip | 0 | +| test.c:594:51:594:52 | ip | 0 | +| test.c:595:18:595:19 | ip | 0 | +| test.c:596:18:596:19 | ip | 0 | +| test.c:597:18:597:19 | ip | 0 | +| test.c:598:19:598:20 | ip | 0 | +| test.c:599:24:599:25 | ip | 0 | +| test.c:599:35:599:36 | ip | 0 | +| test.c:599:50:599:51 | ip | 0 | +| test.c:599:61:599:62 | ip | 0 | +| test.c:600:22:600:23 | ip | 0 | +| test.c:601:27:601:28 | ip | 0 | +| test.c:601:38:601:39 | ip | 0 | +| test.c:602:29:602:30 | ip | 0 | +| test.c:603:24:603:25 | ip | 0 | +| test.c:604:18:604:19 | ip | 0 | +| test.c:604:24:604:25 | ip | 0 | +| test.c:605:20:605:21 | ip | 0 | +| test.c:606:16:606:17 | ip | 0 | +| test.c:607:10:607:23 | special_number | 0 | +| test.c:615:7:615:8 | c1 | -2147483648 | +| test.c:615:13:615:13 | x | 0 | +| test.c:616:7:616:8 | c2 | -2147483648 | +| test.c:616:13:616:13 | x | 0 | +| test.c:617:7:617:8 | c3 | -2147483648 | +| test.c:617:13:617:13 | x | 0 | +| test.c:618:7:618:8 | c4 | -2147483648 | +| test.c:618:13:618:13 | x | 0 | +| test.c:619:7:619:8 | c5 | -2147483648 | +| test.c:619:13:619:13 | x | 0 | +| test.c:620:7:620:8 | c1 | -2147483648 | +| test.c:620:13:620:14 | c2 | -2147483648 | +| test.c:620:19:620:19 | x | 0 | +| test.c:621:7:621:8 | c1 | -2147483648 | +| test.c:621:13:621:14 | c3 | -2147483648 | +| test.c:621:19:621:19 | x | 0 | +| test.c:622:7:622:8 | c1 | -2147483648 | +| test.c:622:13:622:14 | c4 | -2147483648 | +| test.c:622:19:622:19 | x | 0 | +| test.c:623:7:623:8 | c1 | -2147483648 | +| test.c:623:13:623:14 | c5 | -2147483648 | +| test.c:623:19:623:19 | x | 0 | +| test.c:624:7:624:8 | c2 | -2147483648 | +| test.c:624:13:624:14 | c3 | -2147483648 | +| test.c:624:19:624:19 | x | 0 | +| test.c:626:11:626:11 | x | 0 | +| test.c:626:15:626:15 | x | 0 | +| test.c:626:19:626:19 | x | 0 | +| test.c:626:23:626:23 | x | 0 | +| test.c:626:27:626:27 | x | 0 | +| test.c:626:31:626:31 | x | 0 | +| test.c:626:35:626:35 | x | 0 | +| test.c:626:39:626:39 | x | 0 | +| test.c:626:43:626:43 | x | 0 | +| test.c:626:47:626:47 | x | 0 | +| test.c:626:51:626:51 | x | 0 | +| test.c:626:55:626:55 | x | 0 | +| test.c:627:10:627:10 | y | -2147483648 | +| test.c:632:20:632:20 | x | 0 | +| test.c:632:30:632:30 | x | 0 | +| test.c:635:3:635:4 | y1 | 0 | +| test.c:635:11:635:11 | y | 0 | +| test.c:635:14:635:14 | y | 1 | +| test.c:636:3:636:4 | y2 | 0 | +| test.c:636:9:636:9 | y | 1 | +| test.c:636:14:636:14 | y | 2 | +| test.c:636:22:636:22 | y | 5 | +| test.c:637:10:637:11 | y1 | 1 | +| test.c:637:15:637:16 | y2 | 5 | +| test.c:645:3:645:3 | i | -2147483648 | +| test.c:646:7:646:7 | i | 10 | +| test.c:648:3:648:3 | i | -2147483648 | +| test.c:649:3:649:3 | i | 10 | +| test.c:650:7:650:7 | i | 20 | +| test.c:652:3:652:3 | i | -2147483648 | +| test.c:653:3:653:3 | i | 40 | +| test.c:654:7:654:7 | i | 30 | +| test.c:656:3:656:3 | i | -2147483648 | +| test.c:656:7:656:7 | j | -2147483648 | +| test.c:657:7:657:7 | i | 40 | +| test.c:659:3:659:3 | i | -2147483648 | +| test.c:659:8:659:8 | j | 40 | +| test.c:660:7:660:7 | i | 50 | +| test.c:662:3:662:3 | i | -2147483648 | +| test.c:662:13:662:13 | j | 50 | +| test.c:663:7:663:7 | i | 60 | +| test.c:670:12:670:12 | a | 0 | +| test.c:670:17:670:17 | a | 3 | +| test.c:670:33:670:33 | b | 0 | +| test.c:670:38:670:38 | b | 5 | +| test.c:671:13:671:13 | a | 3 | +| test.c:671:15:671:15 | b | 5 | +| test.c:672:5:672:9 | total | 0 | +| test.c:672:14:672:14 | r | 15 | +| test.c:674:12:674:12 | a | 0 | +| test.c:674:17:674:17 | a | 3 | +| test.c:674:33:674:33 | b | 0 | +| test.c:674:38:674:38 | b | 0 | +| test.c:675:13:675:13 | a | 3 | +| test.c:675:15:675:15 | b | 0 | +| test.c:676:5:676:9 | total | 0 | +| test.c:676:14:676:14 | r | 0 | +| test.c:678:12:678:12 | a | 0 | +| test.c:678:17:678:17 | a | 3 | +| test.c:678:34:678:34 | b | 0 | +| test.c:678:39:678:39 | b | 13 | +| test.c:679:13:679:13 | a | 3 | +| test.c:679:15:679:15 | b | 13 | +| test.c:680:5:680:9 | total | 0 | +| test.c:680:14:680:14 | r | 39 | +| test.c:683:10:683:14 | total | 0 | +| test.c:689:12:689:12 | b | 0 | +| test.c:689:17:689:17 | b | 5 | +| test.c:690:16:690:16 | b | 5 | +| test.c:691:5:691:9 | total | 0 | +| test.c:691:14:691:14 | r | 55 | +| test.c:693:12:693:12 | b | 0 | +| test.c:693:17:693:17 | b | 0 | +| test.c:694:16:694:16 | b | 0 | +| test.c:695:5:695:9 | total | 0 | +| test.c:695:14:695:14 | r | 0 | +| test.c:697:13:697:13 | b | 0 | +| test.c:697:18:697:18 | b | 13 | +| test.c:698:16:698:16 | b | 13 | +| test.c:699:5:699:9 | total | 0 | +| test.c:699:14:699:14 | r | 143 | +| test.c:702:10:702:14 | total | 0 | +| test.c:707:3:707:3 | x | 0 | +| test.c:707:7:707:7 | y | 0 | +| test.c:708:3:708:4 | xy | 0 | +| test.c:708:8:708:8 | x | 1000000003 | +| test.c:708:12:708:12 | y | 1000000003 | +| test.c:709:10:709:11 | xy | 1000000006000000000 | +| test.c:714:3:714:3 | x | 0 | +| test.c:715:3:715:3 | y | 0 | +| test.c:716:3:716:4 | xy | 0 | +| test.c:716:8:716:8 | x | 274177 | +| test.c:716:12:716:12 | y | 67280421310721 | +| test.c:717:10:717:11 | xy | 18446744073709551616 | +| test.c:721:7:721:8 | ui | 0 | +| test.c:722:43:722:44 | ui | 10 | +| test.c:722:48:722:49 | ui | 10 | +| test.c:723:12:723:17 | result | 100 | +| test.c:725:7:725:8 | ul | 0 | +| test.c:726:28:726:29 | ul | 10 | +| test.c:726:33:726:34 | ul | 10 | +| test.c:727:12:727:17 | result | 0 | +| test.c:733:7:733:8 | ui | 0 | +| test.c:733:19:733:20 | ui | 0 | +| test.c:734:5:734:6 | ui | 2 | +| test.c:734:11:734:12 | ui | 2 | +| test.c:735:12:735:13 | ui | 4 | +| test.c:739:3:739:9 | uiconst | 10 | +| test.c:742:3:742:9 | ulconst | 10 | +| test.c:743:10:743:16 | uiconst | 40 | +| test.c:743:20:743:26 | ulconst | 40 | +| test.c:747:7:747:7 | i | -2147483648 | +| test.c:747:18:747:18 | i | -1 | +| test.c:748:5:748:5 | i | -2147483648 | +| test.c:748:13:748:13 | i | -1 | +| test.c:749:9:749:9 | i | -5 | +| test.c:751:5:751:5 | i | -2147483648 | +| test.c:751:9:751:9 | i | -5 | +| test.c:752:9:752:9 | i | -30 | +| test.c:754:5:754:5 | i | -30 | +| test.c:755:9:755:9 | i | -210 | +| test.c:757:5:757:5 | i | -210 | +| test.c:758:9:758:9 | i | -1155 | +| test.c:760:7:760:7 | i | -2147483648 | +| test.c:761:5:761:5 | i | -2147483648 | +| test.c:761:9:761:9 | i | -1 | +| test.c:762:9:762:9 | i | 1 | +| test.c:764:3:764:3 | i | -2147483648 | +| test.c:764:7:764:7 | i | -2147483648 | +| test.c:765:10:765:10 | i | -2147483648 | +| test.c:768:3:768:3 | i | -2147483648 | +| test.c:768:10:768:11 | sc | 1 | +| test.c:770:7:770:7 | i | -128 | +| test.c:777:7:777:7 | n | 0 | +| test.c:779:7:779:7 | n | 0 | +| test.c:780:9:780:9 | n | 1 | +| test.c:783:7:783:7 | n | 0 | +| test.c:784:9:784:9 | n | 1 | +| test.c:786:9:786:9 | n | 0 | +| test.c:789:8:789:8 | n | 0 | +| test.c:790:9:790:9 | n | 0 | +| test.c:792:9:792:9 | n | 1 | +| test.c:795:10:795:10 | n | 0 | +| test.c:796:5:796:5 | n | 1 | +| test.c:799:7:799:7 | n | 0 | +| test.c:803:7:803:7 | n | -32768 | +| test.c:806:7:806:7 | n | 0 | +| test.c:807:9:807:9 | n | 0 | +| test.c:809:9:809:9 | n | 1 | +| test.c:812:7:812:7 | n | 0 | +| test.c:813:9:813:9 | n | 1 | +| test.c:815:9:815:9 | n | 0 | +| test.c:818:10:818:10 | n | 0 | +| test.c:819:5:819:5 | n | 1 | +| test.c:822:7:822:7 | n | 0 | +| test.c:826:7:826:7 | n | -32768 | +| test.c:827:9:827:9 | n | -32768 | +| test.c:828:11:828:11 | n | 0 | +| test.c:832:7:832:7 | n | -32768 | +| test.c:833:13:833:13 | n | 5 | +| test.c:836:9:836:9 | n | 6 | +| test.c:839:7:839:7 | n | -32768 | +| test.c:839:22:839:22 | n | -32767 | +| test.c:840:9:840:9 | n | -32766 | +| test.c:843:7:843:7 | n | -32768 | +| test.c:844:5:844:5 | n | 0 | +| test.c:844:10:844:10 | n | 1 | +| test.c:844:14:844:14 | n | 0 | +| test.c:845:6:845:6 | n | 0 | +| test.c:845:10:845:10 | n | 0 | +| test.c:845:14:845:14 | n | 1 | +| test.c:856:7:856:8 | ss | -32768 | +| test.c:857:9:857:10 | ss | 0 | +| test.c:860:7:860:8 | ss | -32768 | +| test.c:861:9:861:10 | ss | -32768 | +| test.c:864:14:864:15 | us | 0 | +| test.c:865:9:865:10 | us | 0 | +| test.c:868:14:868:15 | us | 0 | +| test.c:869:9:869:10 | us | 0 | +| test.c:872:7:872:8 | ss | -32768 | +| test.c:873:9:873:10 | ss | -32768 | +| test.c:876:7:876:8 | ss | -32768 | +| test.c:877:9:877:10 | ss | -1 | +| test.c:883:8:883:8 | s | -2147483648 | +| test.c:883:15:883:15 | s | 0 | +| test.c:883:23:883:23 | s | 0 | +| test.c:884:18:884:18 | s | 0 | +| test.c:884:22:884:22 | s | 0 | +| test.c:885:9:885:14 | result | 0 | +| test.c:891:7:891:7 | i | 0 | +| test.c:892:9:892:9 | i | -2147483648 | +| test.c:896:7:896:7 | u | 0 | +| test.c:897:9:897:9 | u | 0 | +| test.c:902:12:902:12 | s | -2147483648 | +| test.c:903:7:903:8 | s2 | -4 | +| test.c:908:7:908:7 | x | -2147483648 | +| test.c:909:9:909:9 | y | -2147483648 | +| test.c:913:7:913:7 | y | -2147483648 | +| test.c:922:7:922:7 | x | -2147483648 | +| test.c:927:7:927:7 | x | -2147483648 | +| test.c:934:8:934:8 | x | 2147483647 | +| test.c:934:12:934:12 | y | 256 | +| test.c:935:9:935:9 | x | 2147483647 | +| test.c:936:9:936:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected new file mode 100644 index 00000000000..c5905117615 --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -0,0 +1,4605 @@ +| inline_assembly.c:9:20:9:20 | 0 | 1.0 | +| inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | +| inline_assembly.c:10:3:10:3 | y | 1.0 | +| inline_assembly.c:10:3:10:7 | ... = ... | 1.0 | +| inline_assembly.c:10:7:10:7 | 1 | 1.0 | +| inline_assembly.c:10:7:10:7 | (unsigned int)... | 1.0 | +| inline_assembly.c:12:3:12:8 | call to printf | 1.0 | +| inline_assembly.c:12:29:12:29 | x | 1.0 | +| inline_assembly.c:12:32:12:32 | y | 1.0 | +| inline_assembly.c:16:25:16:25 | x | 1.0 | +| inline_assembly.c:16:35:16:35 | y | 1.0 | +| inline_assembly.c:21:3:21:8 | call to printf | 1.0 | +| inline_assembly.c:21:29:21:29 | x | 1.0 | +| inline_assembly.c:21:32:21:32 | y | 1.0 | +| inline_assembly.c:23:10:23:10 | 0 | 1.0 | +| minmax.c:16:9:16:10 | 1 | 1.0 | +| minmax.c:16:16:16:17 | 2 | 1.0 | +| minmax.c:16:23:16:24 | 3 | 1.0 | +| minmax.c:18:2:18:7 | call to printf | 1.0 | +| minmax.c:18:37:18:37 | x | 1.0 | +| minmax.c:18:40:18:40 | y | 1.0 | +| minmax.c:18:43:18:43 | z | 1.0 | +| minmax.c:20:2:20:2 | z | 1.0 | +| minmax.c:20:2:24:3 | ... = ... | 2.0 | +| minmax.c:20:6:24:3 | (statement expression) | 2.0 | +| minmax.c:21:10:21:11 | 0 | 1.0 | +| minmax.c:22:7:22:14 | ... != ... | 1.0 | +| minmax.c:22:8:22:8 | x | 1.0 | +| minmax.c:22:14:22:14 | y | 1.0 | +| minmax.c:22:18:22:18 | t | 1.0 | +| minmax.c:22:18:22:22 | ... = ... | 1.0 | +| minmax.c:22:22:22:22 | x | 1.0 | +| minmax.c:23:3:23:3 | t | 2.0 | +| minmax.c:26:2:26:7 | call to printf | 1.0 | +| minmax.c:26:37:26:37 | x | 1.0 | +| minmax.c:26:40:26:40 | y | 1.0 | +| minmax.c:26:43:26:43 | z | 2.0 | +| test.c:6:14:6:15 | 0 | 1.0 | +| test.c:8:5:8:9 | count | 1.0 | +| test.c:8:5:8:19 | ... = ... | 13.0 | +| test.c:8:13:8:17 | count | 13.0 | +| test.c:8:13:8:19 | ... + ... | 13.0 | +| test.c:8:19:8:19 | 1 | 1.0 | +| test.c:10:10:10:14 | count | 13.0 | +| test.c:14:14:14:15 | 0 | 1.0 | +| test.c:16:5:16:9 | count | 1.0 | +| test.c:16:5:16:26 | ... = ... | 13.0 | +| test.c:16:13:16:21 | (...) | 13.0 | +| test.c:16:13:16:26 | ... % ... | 13.0 | +| test.c:16:14:16:18 | count | 13.0 | +| test.c:16:14:16:20 | ... + ... | 13.0 | +| test.c:16:20:16:20 | 1 | 1.0 | +| test.c:16:25:16:26 | 10 | 1.0 | +| test.c:18:10:18:14 | count | 13.0 | +| test.c:22:14:22:15 | 0 | 1.0 | +| test.c:24:5:24:9 | count | 13.0 | +| test.c:24:5:24:11 | ... ++ | 13.0 | +| test.c:25:5:25:9 | count | 1.0 | +| test.c:25:5:25:22 | ... = ... | 13.0 | +| test.c:25:13:25:17 | count | 13.0 | +| test.c:25:13:25:22 | ... % ... | 13.0 | +| test.c:25:21:25:22 | 10 | 1.0 | +| test.c:27:10:27:14 | count | 13.0 | +| test.c:31:10:31:11 | 0 | 1.0 | +| test.c:32:14:32:15 | 0 | 1.0 | +| test.c:33:8:33:8 | i | 1.0 | +| test.c:33:8:33:12 | ... = ... | 1.0 | +| test.c:33:12:33:12 | 0 | 1.0 | +| test.c:33:15:33:15 | i | 13.0 | +| test.c:33:15:33:19 | ... < ... | 1.0 | +| test.c:33:19:33:19 | 2 | 1.0 | +| test.c:33:22:33:22 | i | 1.0 | +| test.c:33:22:33:28 | ... = ... | 13.0 | +| test.c:33:26:33:26 | i | 13.0 | +| test.c:33:26:33:28 | ... + ... | 13.0 | +| test.c:33:28:33:28 | 1 | 1.0 | +| test.c:34:5:34:9 | total | 13.0 | +| test.c:34:5:34:14 | ... += ... | 13.0 | +| test.c:34:14:34:14 | i | 13.0 | +| test.c:36:10:36:14 | total | 13.0 | +| test.c:36:10:36:18 | ... + ... | 13.0 | +| test.c:36:18:36:18 | i | 13.0 | +| test.c:40:10:40:11 | 0 | 1.0 | +| test.c:41:14:41:15 | 0 | 1.0 | +| test.c:42:8:42:8 | i | 1.0 | +| test.c:42:8:42:12 | ... = ... | 1.0 | +| test.c:42:12:42:12 | 0 | 1.0 | +| test.c:42:15:42:15 | i | 13.0 | +| test.c:42:15:42:19 | ... < ... | 1.0 | +| test.c:42:19:42:19 | 2 | 1.0 | +| test.c:42:22:42:22 | i | 13.0 | +| test.c:42:22:42:24 | ... ++ | 13.0 | +| test.c:43:5:43:9 | total | 13.0 | +| test.c:43:5:43:14 | ... += ... | 13.0 | +| test.c:43:14:43:14 | i | 13.0 | +| test.c:45:10:45:14 | total | 13.0 | +| test.c:45:10:45:18 | ... + ... | 13.0 | +| test.c:45:18:45:18 | i | 13.0 | +| test.c:49:10:49:11 | 0 | 1.0 | +| test.c:50:14:50:15 | 0 | 1.0 | +| test.c:51:8:51:8 | i | 1.0 | +| test.c:51:8:51:12 | ... = ... | 1.0 | +| test.c:51:12:51:12 | 0 | 1.0 | +| test.c:51:15:51:15 | i | 13.0 | +| test.c:51:15:51:17 | ... + ... | 13.0 | +| test.c:51:15:51:21 | ... < ... | 1.0 | +| test.c:51:17:51:17 | 2 | 1.0 | +| test.c:51:21:51:21 | 4 | 1.0 | +| test.c:51:24:51:24 | i | 1.0 | +| test.c:51:24:51:30 | ... = ... | 13.0 | +| test.c:51:28:51:28 | i | 13.0 | +| test.c:51:28:51:30 | ... + ... | 13.0 | +| test.c:51:30:51:30 | 1 | 1.0 | +| test.c:52:5:52:9 | total | 13.0 | +| test.c:52:5:52:14 | ... += ... | 13.0 | +| test.c:52:14:52:14 | i | 13.0 | +| test.c:54:10:54:14 | total | 13.0 | +| test.c:54:10:54:18 | ... + ... | 13.0 | +| test.c:54:18:54:18 | i | 13.0 | +| test.c:58:7:58:7 | i | 1.0 | +| test.c:58:7:58:11 | ... < ... | 1.0 | +| test.c:58:11:58:11 | 4 | 1.0 | +| test.c:59:9:59:9 | i | 1.0 | +| test.c:59:9:59:13 | ... < ... | 1.0 | +| test.c:59:13:59:13 | 5 | 1.0 | +| test.c:60:14:60:14 | i | 1.0 | +| test.c:63:10:63:10 | 1 | 1.0 | +| test.c:67:7:67:11 | - ... | 1.0 | +| test.c:67:7:67:15 | ... < ... | 1.0 | +| test.c:67:7:67:25 | ... && ... | 1.0 | +| test.c:67:8:67:11 | 1000 | 1.0 | +| test.c:67:15:67:15 | y | 1.0 | +| test.c:67:20:67:20 | y | 1.0 | +| test.c:67:20:67:25 | ... < ... | 1.0 | +| test.c:67:24:67:25 | 10 | 1.0 | +| test.c:68:9:68:9 | x | 1.0 | +| test.c:68:9:68:15 | ... < ... | 1.0 | +| test.c:68:13:68:13 | y | 1.0 | +| test.c:68:13:68:15 | ... - ... | 1.0 | +| test.c:68:15:68:15 | 2 | 1.0 | +| test.c:69:14:69:14 | x | 1.0 | +| test.c:72:10:72:10 | y | 1.0 | +| test.c:76:7:76:7 | y | 1.0 | +| test.c:76:7:76:12 | ... == ... | 1.0 | +| test.c:76:12:76:12 | 0 | 1.0 | +| test.c:77:9:77:9 | x | 1.0 | +| test.c:77:9:77:13 | ... < ... | 1.0 | +| test.c:77:13:77:13 | 4 | 1.0 | +| test.c:78:14:78:14 | 0 | 1.0 | +| test.c:81:9:81:9 | x | 1.0 | +| test.c:81:9:81:13 | ... < ... | 1.0 | +| test.c:81:13:81:13 | 4 | 1.0 | +| test.c:82:14:82:14 | 1 | 1.0 | +| test.c:85:10:85:10 | x | 1.0 | +| test.c:89:7:89:7 | y | 1.0 | +| test.c:89:7:89:11 | ... > ... | 1.0 | +| test.c:89:11:89:11 | 7 | 1.0 | +| test.c:90:9:90:9 | x | 1.0 | +| test.c:90:9:90:13 | ... < ... | 1.0 | +| test.c:90:13:90:13 | y | 1.0 | +| test.c:91:14:91:14 | 0 | 1.0 | +| test.c:93:12:93:12 | x | 1.0 | +| test.c:95:10:95:10 | 1 | 1.0 | +| test.c:100:3:100:3 | c | 1.0 | +| test.c:100:3:100:8 | ... = ... | 1.0 | +| test.c:100:7:100:8 | * ... | 1.0 | +| test.c:101:7:101:7 | (int)... | 1.0 | +| test.c:101:7:101:7 | c | 1.0 | +| test.c:101:7:101:15 | ... != ... | 1.0 | +| test.c:101:12:101:15 | 0 | 1.0 | +| test.c:102:5:102:8 | * ... | 1.0 | +| test.c:102:5:102:15 | ... = ... | 1.0 | +| test.c:102:12:102:15 | 0 | 1.0 | +| test.c:102:12:102:15 | (char)... | 1.0 | +| test.c:104:7:104:7 | (int)... | 2.0 | +| test.c:104:7:104:7 | c | 2.0 | +| test.c:104:7:104:14 | ... == ... | 1.0 | +| test.c:104:12:104:14 | 58 | 1.0 | +| test.c:105:5:105:5 | c | 1.0 | +| test.c:105:5:105:10 | ... = ... | 1.0 | +| test.c:105:9:105:10 | * ... | 1.0 | +| test.c:106:9:106:9 | (int)... | 1.0 | +| test.c:106:9:106:9 | c | 1.0 | +| test.c:106:9:106:17 | ... != ... | 1.0 | +| test.c:106:14:106:17 | 0 | 1.0 | +| test.c:107:7:107:10 | * ... | 1.0 | +| test.c:107:7:107:17 | ... = ... | 1.0 | +| test.c:107:14:107:17 | 0 | 1.0 | +| test.c:107:14:107:17 | (char)... | 1.0 | +| test.c:109:9:109:9 | (int)... | 2.0 | +| test.c:109:9:109:9 | c | 2.0 | +| test.c:109:9:109:16 | ... != ... | 1.0 | +| test.c:109:14:109:16 | 44 | 1.0 | +| test.c:110:14:110:14 | 1 | 1.0 | +| test.c:112:10:112:10 | 0 | 1.0 | +| test.c:118:24:118:24 | 0 | 1.0 | +| test.c:118:24:118:24 | (size_type)... | 1.0 | +| test.c:119:10:119:10 | n | 1.0 | +| test.c:119:10:119:12 | ... ++ | 1.0 | +| test.c:123:22:123:22 | 0 | 1.0 | +| test.c:123:22:123:22 | (size_type)... | 1.0 | +| test.c:124:11:124:15 | Start | 13.0 | +| test.c:124:11:124:36 | ... <= ... | 1.0 | +| test.c:124:20:124:32 | call to test12_helper | 1.0 | +| test.c:124:20:124:36 | ... - ... | 1.0 | +| test.c:124:36:124:36 | 1 | 1.0 | +| test.c:124:36:124:36 | (unsigned long long)... | 1.0 | +| test.c:126:31:126:43 | call to test12_helper | 1.0 | +| test.c:127:6:127:10 | Start | 13.0 | +| test.c:127:6:127:24 | ... += ... | 13.0 | +| test.c:127:15:127:20 | Length | 1.0 | +| test.c:127:15:127:24 | ... + ... | 1.0 | +| test.c:127:24:127:24 | 1 | 1.0 | +| test.c:127:24:127:24 | (unsigned long long)... | 1.0 | +| test.c:130:11:130:11 | 1 | 1.0 | +| test.c:135:22:135:22 | (unsigned char)... | 1.0 | +| test.c:135:22:135:22 | c | 1.0 | +| test.c:136:20:136:20 | 0 | 1.0 | +| test.c:136:20:136:20 | (unsigned int)... | 1.0 | +| test.c:137:20:137:20 | x | 1.0 | +| test.c:137:20:137:22 | ... - ... | 1.0 | +| test.c:137:22:137:22 | 1 | 1.0 | +| test.c:137:22:137:22 | (unsigned int)... | 1.0 | +| test.c:138:11:138:11 | i | 1.0 | +| test.c:138:11:138:13 | ... + ... | 1.0 | +| test.c:138:13:138:13 | 1 | 1.0 | +| test.c:139:10:139:41 | (double)... | 1.0 | +| test.c:139:10:139:41 | (int)... | 1.0 | +| test.c:139:18:139:41 | (...) | 1.0 | +| test.c:139:19:139:19 | (int)... | 1.0 | +| test.c:139:19:139:19 | c | 1.0 | +| test.c:139:19:139:23 | ... + ... | 1.0 | +| test.c:139:19:139:28 | (unsigned int)... | 1.0 | +| test.c:139:19:139:28 | ... + ... | 1.0 | +| test.c:139:19:139:32 | ... + ... | 1.0 | +| test.c:139:19:139:36 | ... + ... | 1.0 | +| test.c:139:19:139:40 | ... + ... | 1.0 | +| test.c:139:23:139:23 | i | 1.0 | +| test.c:139:27:139:28 | (int)... | 1.0 | +| test.c:139:27:139:28 | uc | 1.0 | +| test.c:139:32:139:32 | x | 1.0 | +| test.c:139:36:139:36 | y | 1.0 | +| test.c:139:40:139:40 | (unsigned int)... | 1.0 | +| test.c:139:40:139:40 | z | 1.0 | +| test.c:144:12:144:23 | (int)... | 1.0 | +| test.c:144:17:144:23 | (char)... | 1.0 | +| test.c:144:23:144:23 | x | 1.0 | +| test.c:145:12:145:32 | (int)... | 1.0 | +| test.c:145:17:145:32 | (unsigned char)... | 1.0 | +| test.c:145:32:145:32 | x | 1.0 | +| test.c:146:12:146:33 | (int)... | 1.0 | +| test.c:146:17:146:33 | (unsigned short)... | 1.0 | +| test.c:146:33:146:33 | x | 1.0 | +| test.c:147:12:147:31 | (int)... | 1.0 | +| test.c:147:17:147:31 | (unsigned int)... | 1.0 | +| test.c:147:31:147:31 | x | 1.0 | +| test.c:148:13:148:13 | (char)... | 1.0 | +| test.c:148:13:148:13 | x | 1.0 | +| test.c:149:23:149:23 | (unsigned short)... | 1.0 | +| test.c:149:23:149:23 | x | 1.0 | +| test.c:150:10:150:11 | x0 | 1.0 | +| test.c:150:10:150:16 | ... + ... | 1.0 | +| test.c:150:10:150:21 | ... + ... | 1.0 | +| test.c:150:10:150:26 | ... + ... | 1.0 | +| test.c:150:10:150:31 | ... + ... | 1.0 | +| test.c:150:10:150:36 | ... + ... | 1.0 | +| test.c:150:15:150:16 | x1 | 1.0 | +| test.c:150:20:150:21 | x2 | 1.0 | +| test.c:150:25:150:26 | x3 | 1.0 | +| test.c:150:30:150:31 | (int)... | 1.0 | +| test.c:150:30:150:31 | c0 | 1.0 | +| test.c:150:35:150:36 | (int)... | 1.0 | +| test.c:150:35:150:36 | s0 | 1.0 | +| test.c:154:10:154:31 | (...) | 1.0 | +| test.c:154:10:154:40 | ... ? ... : ... | 1.0 | +| test.c:154:11:154:11 | x | 1.0 | +| test.c:154:11:154:15 | ... > ... | 1.0 | +| test.c:154:11:154:30 | ... && ... | 1.0 | +| test.c:154:15:154:15 | 0 | 1.0 | +| test.c:154:15:154:15 | (long long)... | 1.0 | +| test.c:154:20:154:20 | x | 1.0 | +| test.c:154:20:154:30 | ... == ... | 1.0 | +| test.c:154:25:154:30 | (int)... | 1.0 | +| test.c:154:25:154:30 | (long long)... | 1.0 | +| test.c:154:30:154:30 | x | 1.0 | +| test.c:154:35:154:35 | x | 1.0 | +| test.c:154:39:154:40 | (long long)... | 1.0 | +| test.c:154:39:154:40 | - ... | 1.0 | +| test.c:154:40:154:40 | 1 | 1.0 | +| test.c:159:14:159:15 | 0 | 1.0 | +| test.c:161:7:161:7 | 3 | 1.0 | +| test.c:161:7:161:12 | ... <= ... | 1.0 | +| test.c:161:7:161:23 | ... && ... | 1.0 | +| test.c:161:12:161:12 | a | 1.0 | +| test.c:161:17:161:17 | a | 1.0 | +| test.c:161:17:161:23 | ... <= ... | 1.0 | +| test.c:161:22:161:23 | 11 | 1.0 | +| test.c:162:13:162:14 | + ... | 1.0 | +| test.c:162:14:162:14 | a | 1.0 | +| test.c:163:13:163:14 | - ... | 1.0 | +| test.c:163:14:163:14 | a | 1.0 | +| test.c:164:5:164:9 | total | 1.0 | +| test.c:164:5:164:16 | ... += ... | 1.0 | +| test.c:164:14:164:14 | b | 1.0 | +| test.c:164:14:164:16 | ... + ... | 1.0 | +| test.c:164:16:164:16 | c | 1.0 | +| test.c:166:7:166:7 | 0 | 1.0 | +| test.c:166:7:166:12 | ... <= ... | 1.0 | +| test.c:166:7:166:23 | ... && ... | 1.0 | +| test.c:166:12:166:12 | a | 2.0 | +| test.c:166:17:166:17 | a | 2.0 | +| test.c:166:17:166:23 | ... <= ... | 1.0 | +| test.c:166:22:166:23 | 11 | 1.0 | +| test.c:167:13:167:14 | + ... | 2.0 | +| test.c:167:14:167:14 | a | 2.0 | +| test.c:168:13:168:14 | - ... | 2.0 | +| test.c:168:14:168:14 | a | 2.0 | +| test.c:169:5:169:9 | total | 2.0 | +| test.c:169:5:169:16 | ... += ... | 8.0 | +| test.c:169:14:169:14 | b | 2.0 | +| test.c:169:14:169:16 | ... + ... | 4.0 | +| test.c:169:16:169:16 | c | 2.0 | +| test.c:171:7:171:8 | - ... | 1.0 | +| test.c:171:7:171:13 | ... <= ... | 1.0 | +| test.c:171:7:171:24 | ... && ... | 1.0 | +| test.c:171:8:171:8 | 7 | 1.0 | +| test.c:171:13:171:13 | a | 3.0 | +| test.c:171:18:171:18 | a | 3.0 | +| test.c:171:18:171:24 | ... <= ... | 1.0 | +| test.c:171:23:171:24 | 11 | 1.0 | +| test.c:172:13:172:14 | + ... | 3.0 | +| test.c:172:14:172:14 | a | 3.0 | +| test.c:173:13:173:14 | - ... | 3.0 | +| test.c:173:14:173:14 | a | 3.0 | +| test.c:174:5:174:9 | total | 10.0 | +| test.c:174:5:174:16 | ... += ... | 90.0 | +| test.c:174:14:174:14 | b | 3.0 | +| test.c:174:14:174:16 | ... + ... | 9.0 | +| test.c:174:16:174:16 | c | 3.0 | +| test.c:176:7:176:8 | - ... | 1.0 | +| test.c:176:7:176:13 | ... <= ... | 1.0 | +| test.c:176:7:176:23 | ... && ... | 1.0 | +| test.c:176:8:176:8 | 7 | 1.0 | +| test.c:176:13:176:13 | a | 4.0 | +| test.c:176:18:176:18 | a | 4.0 | +| test.c:176:18:176:23 | ... <= ... | 1.0 | +| test.c:176:23:176:23 | 1 | 1.0 | +| test.c:177:13:177:14 | + ... | 4.0 | +| test.c:177:14:177:14 | a | 4.0 | +| test.c:178:13:178:14 | - ... | 4.0 | +| test.c:178:14:178:14 | a | 4.0 | +| test.c:179:5:179:9 | total | 100.0 | +| test.c:179:5:179:16 | ... += ... | 1600.0 | +| test.c:179:14:179:14 | b | 4.0 | +| test.c:179:14:179:16 | ... + ... | 16.0 | +| test.c:179:16:179:16 | c | 4.0 | +| test.c:181:7:181:8 | - ... | 1.0 | +| test.c:181:7:181:13 | ... <= ... | 1.0 | +| test.c:181:7:181:23 | ... && ... | 1.0 | +| test.c:181:8:181:8 | 7 | 1.0 | +| test.c:181:13:181:13 | a | 5.0 | +| test.c:181:18:181:18 | a | 5.0 | +| test.c:181:18:181:23 | ... <= ... | 1.0 | +| test.c:181:23:181:23 | 0 | 1.0 | +| test.c:182:13:182:14 | + ... | 5.0 | +| test.c:182:14:182:14 | a | 5.0 | +| test.c:183:13:183:14 | - ... | 5.0 | +| test.c:183:14:183:14 | a | 5.0 | +| test.c:184:5:184:9 | total | 1700.0 | +| test.c:184:5:184:16 | ... += ... | 42500.0 | +| test.c:184:14:184:14 | b | 5.0 | +| test.c:184:14:184:16 | ... + ... | 25.0 | +| test.c:184:16:184:16 | c | 5.0 | +| test.c:186:7:186:8 | - ... | 1.0 | +| test.c:186:7:186:13 | ... <= ... | 1.0 | +| test.c:186:7:186:24 | ... && ... | 1.0 | +| test.c:186:8:186:8 | 7 | 1.0 | +| test.c:186:13:186:13 | a | 6.0 | +| test.c:186:18:186:18 | a | 6.0 | +| test.c:186:18:186:24 | ... <= ... | 1.0 | +| test.c:186:23:186:24 | - ... | 1.0 | +| test.c:186:24:186:24 | 2 | 1.0 | +| test.c:187:13:187:14 | + ... | 6.0 | +| test.c:187:14:187:14 | a | 6.0 | +| test.c:188:13:188:14 | - ... | 6.0 | +| test.c:188:14:188:14 | a | 6.0 | +| test.c:189:5:189:9 | total | 44200.0 | +| test.c:189:5:189:16 | ... += ... | 1591200.0 | +| test.c:189:14:189:14 | b | 6.0 | +| test.c:189:14:189:16 | ... + ... | 36.0 | +| test.c:189:16:189:16 | c | 6.0 | +| test.c:192:10:192:14 | total | 1635400.0 | +| test.c:198:14:198:15 | 0 | 1.0 | +| test.c:200:7:200:7 | 3 | 1.0 | +| test.c:200:7:200:12 | ... <= ... | 1.0 | +| test.c:200:7:200:23 | ... && ... | 1.0 | +| test.c:200:7:200:33 | ... && ... | 1.0 | +| test.c:200:7:200:44 | ... && ... | 1.0 | +| test.c:200:12:200:12 | a | 1.0 | +| test.c:200:17:200:17 | a | 1.0 | +| test.c:200:17:200:23 | ... <= ... | 1.0 | +| test.c:200:22:200:23 | 11 | 1.0 | +| test.c:200:28:200:28 | 5 | 1.0 | +| test.c:200:28:200:33 | ... <= ... | 1.0 | +| test.c:200:33:200:33 | b | 1.0 | +| test.c:200:38:200:38 | b | 1.0 | +| test.c:200:38:200:44 | ... <= ... | 1.0 | +| test.c:200:43:200:44 | 23 | 1.0 | +| test.c:201:13:201:13 | a | 1.0 | +| test.c:201:13:201:15 | ... * ... | 1.0 | +| test.c:201:15:201:15 | b | 1.0 | +| test.c:202:5:202:9 | total | 1.0 | +| test.c:202:5:202:14 | ... += ... | 1.0 | +| test.c:202:14:202:14 | r | 1.0 | +| test.c:204:7:204:7 | 3 | 1.0 | +| test.c:204:7:204:12 | ... <= ... | 1.0 | +| test.c:204:7:204:23 | ... && ... | 1.0 | +| test.c:204:7:204:33 | ... && ... | 1.0 | +| test.c:204:7:204:44 | ... && ... | 1.0 | +| test.c:204:12:204:12 | a | 2.0 | +| test.c:204:17:204:17 | a | 2.0 | +| test.c:204:17:204:23 | ... <= ... | 1.0 | +| test.c:204:22:204:23 | 11 | 1.0 | +| test.c:204:28:204:28 | 0 | 1.0 | +| test.c:204:28:204:33 | ... <= ... | 1.0 | +| test.c:204:33:204:33 | b | 3.0 | +| test.c:204:38:204:38 | b | 3.0 | +| test.c:204:38:204:44 | ... <= ... | 1.0 | +| test.c:204:43:204:44 | 23 | 1.0 | +| test.c:205:13:205:13 | a | 2.0 | +| test.c:205:13:205:15 | ... * ... | 1.0 | +| test.c:205:15:205:15 | b | 3.0 | +| test.c:206:5:206:9 | total | 2.0 | +| test.c:206:5:206:14 | ... += ... | 2.0 | +| test.c:206:14:206:14 | r | 1.0 | +| test.c:208:7:208:7 | 3 | 1.0 | +| test.c:208:7:208:12 | ... <= ... | 1.0 | +| test.c:208:7:208:23 | ... && ... | 1.0 | +| test.c:208:7:208:35 | ... && ... | 1.0 | +| test.c:208:7:208:46 | ... && ... | 1.0 | +| test.c:208:12:208:12 | a | 3.0 | +| test.c:208:17:208:17 | a | 3.0 | +| test.c:208:17:208:23 | ... <= ... | 1.0 | +| test.c:208:22:208:23 | 11 | 1.0 | +| test.c:208:28:208:30 | - ... | 1.0 | +| test.c:208:28:208:35 | ... <= ... | 1.0 | +| test.c:208:29:208:30 | 13 | 1.0 | +| test.c:208:35:208:35 | b | 7.0 | +| test.c:208:40:208:40 | b | 7.0 | +| test.c:208:40:208:46 | ... <= ... | 1.0 | +| test.c:208:45:208:46 | 23 | 1.0 | +| test.c:209:13:209:13 | a | 3.0 | +| test.c:209:13:209:15 | ... * ... | 1.0 | +| test.c:209:15:209:15 | b | 7.0 | +| test.c:210:5:210:9 | total | 4.0 | +| test.c:210:5:210:14 | ... += ... | 4.0 | +| test.c:210:14:210:14 | r | 1.0 | +| test.c:212:7:212:7 | 3 | 1.0 | +| test.c:212:7:212:12 | ... <= ... | 1.0 | +| test.c:212:7:212:23 | ... && ... | 1.0 | +| test.c:212:7:212:35 | ... && ... | 1.0 | +| test.c:212:7:212:45 | ... && ... | 1.0 | +| test.c:212:12:212:12 | a | 4.0 | +| test.c:212:17:212:17 | a | 4.0 | +| test.c:212:17:212:23 | ... <= ... | 1.0 | +| test.c:212:22:212:23 | 11 | 1.0 | +| test.c:212:28:212:30 | - ... | 1.0 | +| test.c:212:28:212:35 | ... <= ... | 1.0 | +| test.c:212:29:212:30 | 13 | 1.0 | +| test.c:212:35:212:35 | b | 15.0 | +| test.c:212:40:212:40 | b | 15.0 | +| test.c:212:40:212:45 | ... <= ... | 1.0 | +| test.c:212:45:212:45 | 0 | 1.0 | +| test.c:213:13:213:13 | a | 4.0 | +| test.c:213:13:213:15 | ... * ... | 1.0 | +| test.c:213:15:213:15 | b | 15.0 | +| test.c:214:5:214:9 | total | 8.0 | +| test.c:214:5:214:14 | ... += ... | 8.0 | +| test.c:214:14:214:14 | r | 1.0 | +| test.c:216:7:216:7 | 3 | 1.0 | +| test.c:216:7:216:12 | ... <= ... | 1.0 | +| test.c:216:7:216:23 | ... && ... | 1.0 | +| test.c:216:7:216:35 | ... && ... | 1.0 | +| test.c:216:7:216:46 | ... && ... | 1.0 | +| test.c:216:12:216:12 | a | 5.0 | +| test.c:216:17:216:17 | a | 5.0 | +| test.c:216:17:216:23 | ... <= ... | 1.0 | +| test.c:216:22:216:23 | 11 | 1.0 | +| test.c:216:28:216:30 | - ... | 1.0 | +| test.c:216:28:216:35 | ... <= ... | 1.0 | +| test.c:216:29:216:30 | 13 | 1.0 | +| test.c:216:35:216:35 | b | 31.0 | +| test.c:216:40:216:40 | b | 31.0 | +| test.c:216:40:216:46 | ... <= ... | 1.0 | +| test.c:216:45:216:46 | - ... | 1.0 | +| test.c:216:46:216:46 | 7 | 1.0 | +| test.c:217:13:217:13 | a | 5.0 | +| test.c:217:13:217:15 | ... * ... | 1.0 | +| test.c:217:15:217:15 | b | 31.0 | +| test.c:218:5:218:9 | total | 16.0 | +| test.c:218:5:218:14 | ... += ... | 16.0 | +| test.c:218:14:218:14 | r | 1.0 | +| test.c:221:10:221:14 | total | 32.0 | +| test.c:226:14:226:15 | 0 | 1.0 | +| test.c:228:7:228:7 | 0 | 1.0 | +| test.c:228:7:228:12 | ... <= ... | 1.0 | +| test.c:228:7:228:23 | ... && ... | 1.0 | +| test.c:228:7:228:33 | ... && ... | 1.0 | +| test.c:228:7:228:44 | ... && ... | 1.0 | +| test.c:228:12:228:12 | a | 1.0 | +| test.c:228:17:228:17 | a | 1.0 | +| test.c:228:17:228:23 | ... <= ... | 1.0 | +| test.c:228:22:228:23 | 11 | 1.0 | +| test.c:228:28:228:28 | 5 | 1.0 | +| test.c:228:28:228:33 | ... <= ... | 1.0 | +| test.c:228:33:228:33 | b | 1.0 | +| test.c:228:38:228:38 | b | 1.0 | +| test.c:228:38:228:44 | ... <= ... | 1.0 | +| test.c:228:43:228:44 | 23 | 1.0 | +| test.c:229:13:229:13 | a | 1.0 | +| test.c:229:13:229:15 | ... * ... | 1.0 | +| test.c:229:15:229:15 | b | 1.0 | +| test.c:230:5:230:9 | total | 1.0 | +| test.c:230:5:230:14 | ... += ... | 1.0 | +| test.c:230:14:230:14 | r | 1.0 | +| test.c:232:7:232:7 | 0 | 1.0 | +| test.c:232:7:232:12 | ... <= ... | 1.0 | +| test.c:232:7:232:23 | ... && ... | 1.0 | +| test.c:232:7:232:33 | ... && ... | 1.0 | +| test.c:232:7:232:44 | ... && ... | 1.0 | +| test.c:232:12:232:12 | a | 2.0 | +| test.c:232:17:232:17 | a | 2.0 | +| test.c:232:17:232:23 | ... <= ... | 1.0 | +| test.c:232:22:232:23 | 11 | 1.0 | +| test.c:232:28:232:28 | 0 | 1.0 | +| test.c:232:28:232:33 | ... <= ... | 1.0 | +| test.c:232:33:232:33 | b | 3.0 | +| test.c:232:38:232:38 | b | 3.0 | +| test.c:232:38:232:44 | ... <= ... | 1.0 | +| test.c:232:43:232:44 | 23 | 1.0 | +| test.c:233:13:233:13 | a | 2.0 | +| test.c:233:13:233:15 | ... * ... | 1.0 | +| test.c:233:15:233:15 | b | 3.0 | +| test.c:234:5:234:9 | total | 2.0 | +| test.c:234:5:234:14 | ... += ... | 2.0 | +| test.c:234:14:234:14 | r | 1.0 | +| test.c:236:7:236:7 | 0 | 1.0 | +| test.c:236:7:236:12 | ... <= ... | 1.0 | +| test.c:236:7:236:23 | ... && ... | 1.0 | +| test.c:236:7:236:35 | ... && ... | 1.0 | +| test.c:236:7:236:46 | ... && ... | 1.0 | +| test.c:236:12:236:12 | a | 3.0 | +| test.c:236:17:236:17 | a | 3.0 | +| test.c:236:17:236:23 | ... <= ... | 1.0 | +| test.c:236:22:236:23 | 11 | 1.0 | +| test.c:236:28:236:30 | - ... | 1.0 | +| test.c:236:28:236:35 | ... <= ... | 1.0 | +| test.c:236:29:236:30 | 13 | 1.0 | +| test.c:236:35:236:35 | b | 7.0 | +| test.c:236:40:236:40 | b | 7.0 | +| test.c:236:40:236:46 | ... <= ... | 1.0 | +| test.c:236:45:236:46 | 23 | 1.0 | +| test.c:237:13:237:13 | a | 3.0 | +| test.c:237:13:237:15 | ... * ... | 1.0 | +| test.c:237:15:237:15 | b | 7.0 | +| test.c:238:5:238:9 | total | 4.0 | +| test.c:238:5:238:14 | ... += ... | 4.0 | +| test.c:238:14:238:14 | r | 1.0 | +| test.c:240:7:240:7 | 0 | 1.0 | +| test.c:240:7:240:12 | ... <= ... | 1.0 | +| test.c:240:7:240:23 | ... && ... | 1.0 | +| test.c:240:7:240:35 | ... && ... | 1.0 | +| test.c:240:7:240:45 | ... && ... | 1.0 | +| test.c:240:12:240:12 | a | 4.0 | +| test.c:240:17:240:17 | a | 4.0 | +| test.c:240:17:240:23 | ... <= ... | 1.0 | +| test.c:240:22:240:23 | 11 | 1.0 | +| test.c:240:28:240:30 | - ... | 1.0 | +| test.c:240:28:240:35 | ... <= ... | 1.0 | +| test.c:240:29:240:30 | 13 | 1.0 | +| test.c:240:35:240:35 | b | 15.0 | +| test.c:240:40:240:40 | b | 15.0 | +| test.c:240:40:240:45 | ... <= ... | 1.0 | +| test.c:240:45:240:45 | 0 | 1.0 | +| test.c:241:13:241:13 | a | 4.0 | +| test.c:241:13:241:15 | ... * ... | 1.0 | +| test.c:241:15:241:15 | b | 15.0 | +| test.c:242:5:242:9 | total | 8.0 | +| test.c:242:5:242:14 | ... += ... | 8.0 | +| test.c:242:14:242:14 | r | 1.0 | +| test.c:244:7:244:7 | 0 | 1.0 | +| test.c:244:7:244:12 | ... <= ... | 1.0 | +| test.c:244:7:244:23 | ... && ... | 1.0 | +| test.c:244:7:244:35 | ... && ... | 1.0 | +| test.c:244:7:244:46 | ... && ... | 1.0 | +| test.c:244:12:244:12 | a | 5.0 | +| test.c:244:17:244:17 | a | 5.0 | +| test.c:244:17:244:23 | ... <= ... | 1.0 | +| test.c:244:22:244:23 | 11 | 1.0 | +| test.c:244:28:244:30 | - ... | 1.0 | +| test.c:244:28:244:35 | ... <= ... | 1.0 | +| test.c:244:29:244:30 | 13 | 1.0 | +| test.c:244:35:244:35 | b | 31.0 | +| test.c:244:40:244:40 | b | 31.0 | +| test.c:244:40:244:46 | ... <= ... | 1.0 | +| test.c:244:45:244:46 | - ... | 1.0 | +| test.c:244:46:244:46 | 7 | 1.0 | +| test.c:245:13:245:13 | a | 5.0 | +| test.c:245:13:245:15 | ... * ... | 1.0 | +| test.c:245:15:245:15 | b | 31.0 | +| test.c:246:5:246:9 | total | 16.0 | +| test.c:246:5:246:14 | ... += ... | 16.0 | +| test.c:246:14:246:14 | r | 1.0 | +| test.c:249:10:249:14 | total | 32.0 | +| test.c:254:14:254:15 | 0 | 1.0 | +| test.c:256:7:256:9 | - ... | 1.0 | +| test.c:256:7:256:14 | ... <= ... | 1.0 | +| test.c:256:7:256:25 | ... && ... | 1.0 | +| test.c:256:7:256:35 | ... && ... | 1.0 | +| test.c:256:7:256:46 | ... && ... | 1.0 | +| test.c:256:8:256:9 | 17 | 1.0 | +| test.c:256:14:256:14 | a | 1.0 | +| test.c:256:19:256:19 | a | 1.0 | +| test.c:256:19:256:25 | ... <= ... | 1.0 | +| test.c:256:24:256:25 | 11 | 1.0 | +| test.c:256:30:256:30 | 5 | 1.0 | +| test.c:256:30:256:35 | ... <= ... | 1.0 | +| test.c:256:35:256:35 | b | 1.0 | +| test.c:256:40:256:40 | b | 1.0 | +| test.c:256:40:256:46 | ... <= ... | 1.0 | +| test.c:256:45:256:46 | 23 | 1.0 | +| test.c:257:13:257:13 | a | 1.0 | +| test.c:257:13:257:15 | ... * ... | 1.0 | +| test.c:257:15:257:15 | b | 1.0 | +| test.c:258:5:258:9 | total | 1.0 | +| test.c:258:5:258:14 | ... += ... | 1.0 | +| test.c:258:14:258:14 | r | 1.0 | +| test.c:260:7:260:9 | - ... | 1.0 | +| test.c:260:7:260:14 | ... <= ... | 1.0 | +| test.c:260:7:260:25 | ... && ... | 1.0 | +| test.c:260:7:260:35 | ... && ... | 1.0 | +| test.c:260:7:260:46 | ... && ... | 1.0 | +| test.c:260:8:260:9 | 17 | 1.0 | +| test.c:260:14:260:14 | a | 2.0 | +| test.c:260:19:260:19 | a | 2.0 | +| test.c:260:19:260:25 | ... <= ... | 1.0 | +| test.c:260:24:260:25 | 11 | 1.0 | +| test.c:260:30:260:30 | 0 | 1.0 | +| test.c:260:30:260:35 | ... <= ... | 1.0 | +| test.c:260:35:260:35 | b | 3.0 | +| test.c:260:40:260:40 | b | 3.0 | +| test.c:260:40:260:46 | ... <= ... | 1.0 | +| test.c:260:45:260:46 | 23 | 1.0 | +| test.c:261:13:261:13 | a | 2.0 | +| test.c:261:13:261:15 | ... * ... | 1.0 | +| test.c:261:15:261:15 | b | 3.0 | +| test.c:262:5:262:9 | total | 2.0 | +| test.c:262:5:262:14 | ... += ... | 2.0 | +| test.c:262:14:262:14 | r | 1.0 | +| test.c:264:7:264:9 | - ... | 1.0 | +| test.c:264:7:264:14 | ... <= ... | 1.0 | +| test.c:264:7:264:25 | ... && ... | 1.0 | +| test.c:264:7:264:37 | ... && ... | 1.0 | +| test.c:264:7:264:48 | ... && ... | 1.0 | +| test.c:264:8:264:9 | 17 | 1.0 | +| test.c:264:14:264:14 | a | 3.0 | +| test.c:264:19:264:19 | a | 3.0 | +| test.c:264:19:264:25 | ... <= ... | 1.0 | +| test.c:264:24:264:25 | 11 | 1.0 | +| test.c:264:30:264:32 | - ... | 1.0 | +| test.c:264:30:264:37 | ... <= ... | 1.0 | +| test.c:264:31:264:32 | 13 | 1.0 | +| test.c:264:37:264:37 | b | 7.0 | +| test.c:264:42:264:42 | b | 7.0 | +| test.c:264:42:264:48 | ... <= ... | 1.0 | +| test.c:264:47:264:48 | 23 | 1.0 | +| test.c:265:13:265:13 | a | 3.0 | +| test.c:265:13:265:15 | ... * ... | 1.0 | +| test.c:265:15:265:15 | b | 7.0 | +| test.c:266:5:266:9 | total | 4.0 | +| test.c:266:5:266:14 | ... += ... | 4.0 | +| test.c:266:14:266:14 | r | 1.0 | +| test.c:268:7:268:9 | - ... | 1.0 | +| test.c:268:7:268:14 | ... <= ... | 1.0 | +| test.c:268:7:268:25 | ... && ... | 1.0 | +| test.c:268:7:268:37 | ... && ... | 1.0 | +| test.c:268:7:268:47 | ... && ... | 1.0 | +| test.c:268:8:268:9 | 17 | 1.0 | +| test.c:268:14:268:14 | a | 4.0 | +| test.c:268:19:268:19 | a | 4.0 | +| test.c:268:19:268:25 | ... <= ... | 1.0 | +| test.c:268:24:268:25 | 11 | 1.0 | +| test.c:268:30:268:32 | - ... | 1.0 | +| test.c:268:30:268:37 | ... <= ... | 1.0 | +| test.c:268:31:268:32 | 13 | 1.0 | +| test.c:268:37:268:37 | b | 15.0 | +| test.c:268:42:268:42 | b | 15.0 | +| test.c:268:42:268:47 | ... <= ... | 1.0 | +| test.c:268:47:268:47 | 0 | 1.0 | +| test.c:269:13:269:13 | a | 4.0 | +| test.c:269:13:269:15 | ... * ... | 1.0 | +| test.c:269:15:269:15 | b | 15.0 | +| test.c:270:5:270:9 | total | 8.0 | +| test.c:270:5:270:14 | ... += ... | 8.0 | +| test.c:270:14:270:14 | r | 1.0 | +| test.c:272:7:272:9 | - ... | 1.0 | +| test.c:272:7:272:14 | ... <= ... | 1.0 | +| test.c:272:7:272:25 | ... && ... | 1.0 | +| test.c:272:7:272:37 | ... && ... | 1.0 | +| test.c:272:7:272:48 | ... && ... | 1.0 | +| test.c:272:8:272:9 | 17 | 1.0 | +| test.c:272:14:272:14 | a | 5.0 | +| test.c:272:19:272:19 | a | 5.0 | +| test.c:272:19:272:25 | ... <= ... | 1.0 | +| test.c:272:24:272:25 | 11 | 1.0 | +| test.c:272:30:272:32 | - ... | 1.0 | +| test.c:272:30:272:37 | ... <= ... | 1.0 | +| test.c:272:31:272:32 | 13 | 1.0 | +| test.c:272:37:272:37 | b | 31.0 | +| test.c:272:42:272:42 | b | 31.0 | +| test.c:272:42:272:48 | ... <= ... | 1.0 | +| test.c:272:47:272:48 | - ... | 1.0 | +| test.c:272:48:272:48 | 7 | 1.0 | +| test.c:273:13:273:13 | a | 5.0 | +| test.c:273:13:273:15 | ... * ... | 1.0 | +| test.c:273:15:273:15 | b | 31.0 | +| test.c:274:5:274:9 | total | 16.0 | +| test.c:274:5:274:14 | ... += ... | 16.0 | +| test.c:274:14:274:14 | r | 1.0 | +| test.c:277:10:277:14 | total | 32.0 | +| test.c:282:14:282:15 | 0 | 1.0 | +| test.c:284:7:284:9 | - ... | 1.0 | +| test.c:284:7:284:14 | ... <= ... | 1.0 | +| test.c:284:7:284:24 | ... && ... | 1.0 | +| test.c:284:7:284:34 | ... && ... | 1.0 | +| test.c:284:7:284:45 | ... && ... | 1.0 | +| test.c:284:8:284:9 | 17 | 1.0 | +| test.c:284:14:284:14 | a | 1.0 | +| test.c:284:19:284:19 | a | 1.0 | +| test.c:284:19:284:24 | ... <= ... | 1.0 | +| test.c:284:24:284:24 | 0 | 1.0 | +| test.c:284:29:284:29 | 5 | 1.0 | +| test.c:284:29:284:34 | ... <= ... | 1.0 | +| test.c:284:34:284:34 | b | 1.0 | +| test.c:284:39:284:39 | b | 1.0 | +| test.c:284:39:284:45 | ... <= ... | 1.0 | +| test.c:284:44:284:45 | 23 | 1.0 | +| test.c:285:13:285:13 | a | 1.0 | +| test.c:285:13:285:15 | ... * ... | 1.0 | +| test.c:285:15:285:15 | b | 1.0 | +| test.c:286:5:286:9 | total | 1.0 | +| test.c:286:5:286:14 | ... += ... | 1.0 | +| test.c:286:14:286:14 | r | 1.0 | +| test.c:288:7:288:9 | - ... | 1.0 | +| test.c:288:7:288:14 | ... <= ... | 1.0 | +| test.c:288:7:288:24 | ... && ... | 1.0 | +| test.c:288:7:288:34 | ... && ... | 1.0 | +| test.c:288:7:288:45 | ... && ... | 1.0 | +| test.c:288:8:288:9 | 17 | 1.0 | +| test.c:288:14:288:14 | a | 2.0 | +| test.c:288:19:288:19 | a | 2.0 | +| test.c:288:19:288:24 | ... <= ... | 1.0 | +| test.c:288:24:288:24 | 0 | 1.0 | +| test.c:288:29:288:29 | 0 | 1.0 | +| test.c:288:29:288:34 | ... <= ... | 1.0 | +| test.c:288:34:288:34 | b | 3.0 | +| test.c:288:39:288:39 | b | 3.0 | +| test.c:288:39:288:45 | ... <= ... | 1.0 | +| test.c:288:44:288:45 | 23 | 1.0 | +| test.c:289:13:289:13 | a | 2.0 | +| test.c:289:13:289:15 | ... * ... | 1.0 | +| test.c:289:15:289:15 | b | 3.0 | +| test.c:290:5:290:9 | total | 2.0 | +| test.c:290:5:290:14 | ... += ... | 2.0 | +| test.c:290:14:290:14 | r | 1.0 | +| test.c:292:7:292:9 | - ... | 1.0 | +| test.c:292:7:292:14 | ... <= ... | 1.0 | +| test.c:292:7:292:24 | ... && ... | 1.0 | +| test.c:292:7:292:36 | ... && ... | 1.0 | +| test.c:292:7:292:47 | ... && ... | 1.0 | +| test.c:292:8:292:9 | 17 | 1.0 | +| test.c:292:14:292:14 | a | 3.0 | +| test.c:292:19:292:19 | a | 3.0 | +| test.c:292:19:292:24 | ... <= ... | 1.0 | +| test.c:292:24:292:24 | 0 | 1.0 | +| test.c:292:29:292:31 | - ... | 1.0 | +| test.c:292:29:292:36 | ... <= ... | 1.0 | +| test.c:292:30:292:31 | 13 | 1.0 | +| test.c:292:36:292:36 | b | 7.0 | +| test.c:292:41:292:41 | b | 7.0 | +| test.c:292:41:292:47 | ... <= ... | 1.0 | +| test.c:292:46:292:47 | 23 | 1.0 | +| test.c:293:13:293:13 | a | 3.0 | +| test.c:293:13:293:15 | ... * ... | 1.0 | +| test.c:293:15:293:15 | b | 7.0 | +| test.c:294:5:294:9 | total | 4.0 | +| test.c:294:5:294:14 | ... += ... | 4.0 | +| test.c:294:14:294:14 | r | 1.0 | +| test.c:296:7:296:9 | - ... | 1.0 | +| test.c:296:7:296:14 | ... <= ... | 1.0 | +| test.c:296:7:296:24 | ... && ... | 1.0 | +| test.c:296:7:296:36 | ... && ... | 1.0 | +| test.c:296:7:296:46 | ... && ... | 1.0 | +| test.c:296:8:296:9 | 17 | 1.0 | +| test.c:296:14:296:14 | a | 4.0 | +| test.c:296:19:296:19 | a | 4.0 | +| test.c:296:19:296:24 | ... <= ... | 1.0 | +| test.c:296:24:296:24 | 0 | 1.0 | +| test.c:296:29:296:31 | - ... | 1.0 | +| test.c:296:29:296:36 | ... <= ... | 1.0 | +| test.c:296:30:296:31 | 13 | 1.0 | +| test.c:296:36:296:36 | b | 15.0 | +| test.c:296:41:296:41 | b | 15.0 | +| test.c:296:41:296:46 | ... <= ... | 1.0 | +| test.c:296:46:296:46 | 0 | 1.0 | +| test.c:297:13:297:13 | a | 4.0 | +| test.c:297:13:297:15 | ... * ... | 1.0 | +| test.c:297:15:297:15 | b | 15.0 | +| test.c:298:5:298:9 | total | 8.0 | +| test.c:298:5:298:14 | ... += ... | 8.0 | +| test.c:298:14:298:14 | r | 1.0 | +| test.c:300:7:300:9 | - ... | 1.0 | +| test.c:300:7:300:14 | ... <= ... | 1.0 | +| test.c:300:7:300:24 | ... && ... | 1.0 | +| test.c:300:7:300:36 | ... && ... | 1.0 | +| test.c:300:7:300:47 | ... && ... | 1.0 | +| test.c:300:8:300:9 | 17 | 1.0 | +| test.c:300:14:300:14 | a | 5.0 | +| test.c:300:19:300:19 | a | 5.0 | +| test.c:300:19:300:24 | ... <= ... | 1.0 | +| test.c:300:24:300:24 | 0 | 1.0 | +| test.c:300:29:300:31 | - ... | 1.0 | +| test.c:300:29:300:36 | ... <= ... | 1.0 | +| test.c:300:30:300:31 | 13 | 1.0 | +| test.c:300:36:300:36 | b | 31.0 | +| test.c:300:41:300:41 | b | 31.0 | +| test.c:300:41:300:47 | ... <= ... | 1.0 | +| test.c:300:46:300:47 | - ... | 1.0 | +| test.c:300:47:300:47 | 7 | 1.0 | +| test.c:301:13:301:13 | a | 5.0 | +| test.c:301:13:301:15 | ... * ... | 1.0 | +| test.c:301:15:301:15 | b | 31.0 | +| test.c:302:5:302:9 | total | 16.0 | +| test.c:302:5:302:14 | ... += ... | 16.0 | +| test.c:302:14:302:14 | r | 1.0 | +| test.c:305:10:305:14 | total | 32.0 | +| test.c:310:14:310:15 | 0 | 1.0 | +| test.c:312:7:312:9 | - ... | 1.0 | +| test.c:312:7:312:14 | ... <= ... | 1.0 | +| test.c:312:7:312:25 | ... && ... | 1.0 | +| test.c:312:7:312:35 | ... && ... | 1.0 | +| test.c:312:7:312:46 | ... && ... | 1.0 | +| test.c:312:8:312:9 | 17 | 1.0 | +| test.c:312:14:312:14 | a | 1.0 | +| test.c:312:19:312:19 | a | 1.0 | +| test.c:312:19:312:25 | ... <= ... | 1.0 | +| test.c:312:24:312:25 | - ... | 1.0 | +| test.c:312:25:312:25 | 2 | 1.0 | +| test.c:312:30:312:30 | 5 | 1.0 | +| test.c:312:30:312:35 | ... <= ... | 1.0 | +| test.c:312:35:312:35 | b | 1.0 | +| test.c:312:40:312:40 | b | 1.0 | +| test.c:312:40:312:46 | ... <= ... | 1.0 | +| test.c:312:45:312:46 | 23 | 1.0 | +| test.c:313:13:313:13 | a | 1.0 | +| test.c:313:13:313:15 | ... * ... | 1.0 | +| test.c:313:15:313:15 | b | 1.0 | +| test.c:314:5:314:9 | total | 1.0 | +| test.c:314:5:314:14 | ... += ... | 1.0 | +| test.c:314:14:314:14 | r | 1.0 | +| test.c:316:7:316:9 | - ... | 1.0 | +| test.c:316:7:316:14 | ... <= ... | 1.0 | +| test.c:316:7:316:25 | ... && ... | 1.0 | +| test.c:316:7:316:35 | ... && ... | 1.0 | +| test.c:316:7:316:46 | ... && ... | 1.0 | +| test.c:316:8:316:9 | 17 | 1.0 | +| test.c:316:14:316:14 | a | 2.0 | +| test.c:316:19:316:19 | a | 2.0 | +| test.c:316:19:316:25 | ... <= ... | 1.0 | +| test.c:316:24:316:25 | - ... | 1.0 | +| test.c:316:25:316:25 | 2 | 1.0 | +| test.c:316:30:316:30 | 0 | 1.0 | +| test.c:316:30:316:35 | ... <= ... | 1.0 | +| test.c:316:35:316:35 | b | 3.0 | +| test.c:316:40:316:40 | b | 3.0 | +| test.c:316:40:316:46 | ... <= ... | 1.0 | +| test.c:316:45:316:46 | 23 | 1.0 | +| test.c:317:13:317:13 | a | 2.0 | +| test.c:317:13:317:15 | ... * ... | 1.0 | +| test.c:317:15:317:15 | b | 3.0 | +| test.c:318:5:318:9 | total | 2.0 | +| test.c:318:5:318:14 | ... += ... | 2.0 | +| test.c:318:14:318:14 | r | 1.0 | +| test.c:320:7:320:9 | - ... | 1.0 | +| test.c:320:7:320:14 | ... <= ... | 1.0 | +| test.c:320:7:320:25 | ... && ... | 1.0 | +| test.c:320:7:320:37 | ... && ... | 1.0 | +| test.c:320:7:320:48 | ... && ... | 1.0 | +| test.c:320:8:320:9 | 17 | 1.0 | +| test.c:320:14:320:14 | a | 3.0 | +| test.c:320:19:320:19 | a | 3.0 | +| test.c:320:19:320:25 | ... <= ... | 1.0 | +| test.c:320:24:320:25 | - ... | 1.0 | +| test.c:320:25:320:25 | 2 | 1.0 | +| test.c:320:30:320:32 | - ... | 1.0 | +| test.c:320:30:320:37 | ... <= ... | 1.0 | +| test.c:320:31:320:32 | 13 | 1.0 | +| test.c:320:37:320:37 | b | 7.0 | +| test.c:320:42:320:42 | b | 7.0 | +| test.c:320:42:320:48 | ... <= ... | 1.0 | +| test.c:320:47:320:48 | 23 | 1.0 | +| test.c:321:13:321:13 | a | 3.0 | +| test.c:321:13:321:15 | ... * ... | 1.0 | +| test.c:321:15:321:15 | b | 7.0 | +| test.c:322:5:322:9 | total | 4.0 | +| test.c:322:5:322:14 | ... += ... | 4.0 | +| test.c:322:14:322:14 | r | 1.0 | +| test.c:324:7:324:9 | - ... | 1.0 | +| test.c:324:7:324:14 | ... <= ... | 1.0 | +| test.c:324:7:324:25 | ... && ... | 1.0 | +| test.c:324:7:324:37 | ... && ... | 1.0 | +| test.c:324:7:324:47 | ... && ... | 1.0 | +| test.c:324:8:324:9 | 17 | 1.0 | +| test.c:324:14:324:14 | a | 4.0 | +| test.c:324:19:324:19 | a | 4.0 | +| test.c:324:19:324:25 | ... <= ... | 1.0 | +| test.c:324:24:324:25 | - ... | 1.0 | +| test.c:324:25:324:25 | 2 | 1.0 | +| test.c:324:30:324:32 | - ... | 1.0 | +| test.c:324:30:324:37 | ... <= ... | 1.0 | +| test.c:324:31:324:32 | 13 | 1.0 | +| test.c:324:37:324:37 | b | 15.0 | +| test.c:324:42:324:42 | b | 15.0 | +| test.c:324:42:324:47 | ... <= ... | 1.0 | +| test.c:324:47:324:47 | 0 | 1.0 | +| test.c:325:13:325:13 | a | 4.0 | +| test.c:325:13:325:15 | ... * ... | 1.0 | +| test.c:325:15:325:15 | b | 15.0 | +| test.c:326:5:326:9 | total | 8.0 | +| test.c:326:5:326:14 | ... += ... | 8.0 | +| test.c:326:14:326:14 | r | 1.0 | +| test.c:328:7:328:9 | - ... | 1.0 | +| test.c:328:7:328:14 | ... <= ... | 1.0 | +| test.c:328:7:328:25 | ... && ... | 1.0 | +| test.c:328:7:328:37 | ... && ... | 1.0 | +| test.c:328:7:328:48 | ... && ... | 1.0 | +| test.c:328:8:328:9 | 17 | 1.0 | +| test.c:328:14:328:14 | a | 5.0 | +| test.c:328:19:328:19 | a | 5.0 | +| test.c:328:19:328:25 | ... <= ... | 1.0 | +| test.c:328:24:328:25 | - ... | 1.0 | +| test.c:328:25:328:25 | 2 | 1.0 | +| test.c:328:30:328:32 | - ... | 1.0 | +| test.c:328:30:328:37 | ... <= ... | 1.0 | +| test.c:328:31:328:32 | 13 | 1.0 | +| test.c:328:37:328:37 | b | 31.0 | +| test.c:328:42:328:42 | b | 31.0 | +| test.c:328:42:328:48 | ... <= ... | 1.0 | +| test.c:328:47:328:48 | - ... | 1.0 | +| test.c:328:48:328:48 | 7 | 1.0 | +| test.c:329:13:329:13 | a | 5.0 | +| test.c:329:13:329:15 | ... * ... | 1.0 | +| test.c:329:15:329:15 | b | 31.0 | +| test.c:330:5:330:9 | total | 16.0 | +| test.c:330:5:330:14 | ... += ... | 16.0 | +| test.c:330:14:330:14 | r | 1.0 | +| test.c:333:10:333:14 | total | 32.0 | +| test.c:337:13:337:14 | 0 | 1.0 | +| test.c:338:7:338:7 | x | 1.0 | +| test.c:338:7:338:11 | ... < ... | 1.0 | +| test.c:338:11:338:11 | 0 | 1.0 | +| test.c:339:12:339:13 | - ... | 1.0 | +| test.c:339:13:339:13 | 1 | 1.0 | +| test.c:342:10:342:10 | i | 13.0 | +| test.c:342:10:342:14 | ... < ... | 1.0 | +| test.c:342:14:342:14 | 3 | 1.0 | +| test.c:343:5:343:5 | i | 13.0 | +| test.c:343:5:343:7 | ... ++ | 13.0 | +| test.c:345:3:345:3 | d | 1.0 | +| test.c:345:3:345:7 | ... = ... | 13.0 | +| test.c:345:7:345:7 | i | 13.0 | +| test.c:346:7:346:7 | x | 1.0 | +| test.c:346:7:346:11 | ... < ... | 1.0 | +| test.c:346:11:346:11 | 0 | 1.0 | +| test.c:347:9:347:9 | d | 13.0 | +| test.c:347:9:347:14 | ... > ... | 1.0 | +| test.c:347:13:347:14 | - ... | 1.0 | +| test.c:347:14:347:14 | x | 1.0 | +| test.c:348:14:348:14 | 1 | 1.0 | +| test.c:351:10:351:10 | 0 | 1.0 | +| test.c:357:3:357:4 | y1 | 1.0 | +| test.c:357:3:357:23 | ... = ... | 1.0 | +| test.c:357:8:357:8 | x | 1.0 | +| test.c:357:8:357:14 | ... < ... | 1.0 | +| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | +| test.c:357:12:357:14 | 100 | 1.0 | +| test.c:357:12:357:14 | (unsigned int)... | 1.0 | +| test.c:357:18:357:18 | x | 1.0 | +| test.c:357:22:357:23 | 10 | 1.0 | +| test.c:357:22:357:23 | (unsigned int)... | 1.0 | +| test.c:358:3:358:4 | y2 | 1.0 | +| test.c:358:3:358:24 | ... = ... | 2.0 | +| test.c:358:8:358:8 | x | 2.0 | +| test.c:358:8:358:15 | ... >= ... | 1.0 | +| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | +| test.c:358:13:358:15 | 100 | 1.0 | +| test.c:358:13:358:15 | (unsigned int)... | 1.0 | +| test.c:358:19:358:20 | 10 | 1.0 | +| test.c:358:19:358:20 | (unsigned int)... | 1.0 | +| test.c:358:24:358:24 | x | 2.0 | +| test.c:359:3:359:4 | y3 | 1.0 | +| test.c:359:3:359:8 | ... = ... | 1.0 | +| test.c:359:8:359:8 | 0 | 1.0 | +| test.c:359:8:359:8 | (unsigned int)... | 1.0 | +| test.c:360:3:360:4 | y4 | 1.0 | +| test.c:360:3:360:8 | ... = ... | 1.0 | +| test.c:360:8:360:8 | 0 | 1.0 | +| test.c:360:8:360:8 | (unsigned int)... | 1.0 | +| test.c:361:3:361:4 | y5 | 1.0 | +| test.c:361:3:361:8 | ... = ... | 1.0 | +| test.c:361:8:361:8 | 0 | 1.0 | +| test.c:361:8:361:8 | (unsigned int)... | 1.0 | +| test.c:362:3:362:4 | y6 | 1.0 | +| test.c:362:3:362:8 | ... = ... | 1.0 | +| test.c:362:8:362:8 | 0 | 1.0 | +| test.c:362:8:362:8 | (unsigned int)... | 1.0 | +| test.c:363:3:363:4 | y7 | 1.0 | +| test.c:363:3:363:8 | ... = ... | 1.0 | +| test.c:363:8:363:8 | 0 | 1.0 | +| test.c:363:8:363:8 | (unsigned int)... | 1.0 | +| test.c:364:3:364:4 | y8 | 1.0 | +| test.c:364:3:364:8 | ... = ... | 1.0 | +| test.c:364:8:364:8 | 0 | 1.0 | +| test.c:364:8:364:8 | (unsigned int)... | 1.0 | +| test.c:365:7:365:7 | x | 4.0 | +| test.c:365:7:365:13 | ... < ... | 1.0 | +| test.c:365:11:365:13 | 300 | 1.0 | +| test.c:365:11:365:13 | (unsigned int)... | 1.0 | +| test.c:366:5:366:6 | y3 | 1.0 | +| test.c:366:5:366:15 | ... = ... | 4.0 | +| test.c:366:10:366:10 | x | 4.0 | +| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | +| test.c:366:15:366:15 | 5 | 1.0 | +| test.c:366:15:366:15 | (unsigned int)... | 1.0 | +| test.c:367:5:367:6 | y4 | 1.0 | +| test.c:367:5:367:17 | ... = ... | 4.0 | +| test.c:367:10:367:10 | x | 4.0 | +| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | +| test.c:367:15:367:17 | 500 | 1.0 | +| test.c:367:15:367:17 | (unsigned int)... | 1.0 | +| test.c:368:5:368:6 | y5 | 1.0 | +| test.c:368:5:368:21 | ... = ... | 4.0 | +| test.c:368:10:368:14 | (...) | 4.0 | +| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | +| test.c:368:11:368:11 | x | 4.0 | +| test.c:368:11:368:13 | ... + ... | 4.0 | +| test.c:368:13:368:13 | 1 | 1.0 | +| test.c:368:13:368:13 | (unsigned int)... | 1.0 | +| test.c:368:19:368:21 | 500 | 1.0 | +| test.c:368:19:368:21 | (unsigned int)... | 1.0 | +| test.c:369:5:369:6 | y6 | 1.0 | +| test.c:369:5:369:36 | ... = ... | 4.0 | +| test.c:369:10:369:31 | (...) | 4.0 | +| test.c:369:10:369:36 | (unsigned int)... | 4.0 | +| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | +| test.c:369:11:369:30 | (unsigned char)... | 4.0 | +| test.c:369:26:369:30 | (...) | 4.0 | +| test.c:369:27:369:27 | x | 4.0 | +| test.c:369:27:369:29 | ... + ... | 4.0 | +| test.c:369:29:369:29 | 1 | 1.0 | +| test.c:369:29:369:29 | (unsigned int)... | 1.0 | +| test.c:369:36:369:36 | 5 | 1.0 | +| test.c:370:5:370:6 | y7 | 1.0 | +| test.c:370:5:370:38 | ... = ... | 4.0 | +| test.c:370:10:370:31 | (...) | 4.0 | +| test.c:370:10:370:38 | (unsigned int)... | 4.0 | +| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | +| test.c:370:11:370:30 | (unsigned char)... | 4.0 | +| test.c:370:26:370:30 | (...) | 4.0 | +| test.c:370:27:370:27 | x | 4.0 | +| test.c:370:27:370:29 | ... + ... | 4.0 | +| test.c:370:29:370:29 | 1 | 1.0 | +| test.c:370:29:370:29 | (unsigned int)... | 1.0 | +| test.c:370:36:370:38 | 500 | 1.0 | +| test.c:371:5:371:6 | y8 | 1.0 | +| test.c:371:5:371:39 | ... = ... | 4.0 | +| test.c:371:10:371:32 | (...) | 4.0 | +| test.c:371:10:371:39 | (unsigned int)... | 4.0 | +| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | +| test.c:371:11:371:31 | (unsigned short)... | 4.0 | +| test.c:371:27:371:31 | (...) | 4.0 | +| test.c:371:28:371:28 | x | 4.0 | +| test.c:371:28:371:30 | ... + ... | 4.0 | +| test.c:371:30:371:30 | 1 | 1.0 | +| test.c:371:30:371:30 | (unsigned int)... | 1.0 | +| test.c:371:37:371:39 | 500 | 1.0 | +| test.c:373:10:373:11 | y1 | 1.0 | +| test.c:373:10:373:16 | ... + ... | 2.0 | +| test.c:373:10:373:21 | ... + ... | 10.0 | +| test.c:373:10:373:26 | ... + ... | 50.0 | +| test.c:373:10:373:31 | ... + ... | 250.0 | +| test.c:373:10:373:36 | ... + ... | 1250.0 | +| test.c:373:10:373:41 | ... + ... | 6250.0 | +| test.c:373:10:373:46 | ... + ... | 31250.0 | +| test.c:373:15:373:16 | y2 | 2.0 | +| test.c:373:20:373:21 | y3 | 5.0 | +| test.c:373:25:373:26 | y4 | 5.0 | +| test.c:373:30:373:31 | y5 | 5.0 | +| test.c:373:35:373:36 | y6 | 5.0 | +| test.c:373:40:373:41 | y7 | 5.0 | +| test.c:373:45:373:46 | y8 | 5.0 | +| test.c:379:3:379:4 | y1 | 1.0 | +| test.c:379:3:379:24 | ... = ... | 1.0 | +| test.c:379:8:379:8 | x | 1.0 | +| test.c:379:8:379:14 | ... > ... | 1.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | +| test.c:379:12:379:14 | 100 | 1.0 | +| test.c:379:12:379:14 | (unsigned int)... | 1.0 | +| test.c:379:18:379:18 | x | 1.0 | +| test.c:379:22:379:24 | 110 | 1.0 | +| test.c:379:22:379:24 | (unsigned int)... | 1.0 | +| test.c:380:3:380:4 | y2 | 1.0 | +| test.c:380:3:380:25 | ... = ... | 2.0 | +| test.c:380:8:380:8 | x | 2.0 | +| test.c:380:8:380:15 | ... <= ... | 1.0 | +| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | +| test.c:380:13:380:15 | 100 | 1.0 | +| test.c:380:13:380:15 | (unsigned int)... | 1.0 | +| test.c:380:19:380:21 | 110 | 1.0 | +| test.c:380:19:380:21 | (unsigned int)... | 1.0 | +| test.c:380:25:380:25 | x | 2.0 | +| test.c:381:3:381:4 | y3 | 1.0 | +| test.c:381:3:381:11 | ... = ... | 1.0 | +| test.c:381:8:381:11 | 1000 | 1.0 | +| test.c:381:8:381:11 | (unsigned int)... | 1.0 | +| test.c:382:3:382:4 | y4 | 1.0 | +| test.c:382:3:382:11 | ... = ... | 1.0 | +| test.c:382:8:382:11 | 1000 | 1.0 | +| test.c:382:8:382:11 | (unsigned int)... | 1.0 | +| test.c:383:3:383:4 | y5 | 1.0 | +| test.c:383:3:383:11 | ... = ... | 1.0 | +| test.c:383:8:383:11 | 1000 | 1.0 | +| test.c:383:8:383:11 | (unsigned int)... | 1.0 | +| test.c:384:7:384:7 | x | 4.0 | +| test.c:384:7:384:14 | ... >= ... | 1.0 | +| test.c:384:12:384:14 | 300 | 1.0 | +| test.c:384:12:384:14 | (unsigned int)... | 1.0 | +| test.c:385:5:385:6 | y3 | 1.0 | +| test.c:385:5:385:21 | ... = ... | 4.0 | +| test.c:385:10:385:16 | (...) | 4.0 | +| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | +| test.c:385:11:385:11 | x | 4.0 | +| test.c:385:11:385:15 | ... - ... | 4.0 | +| test.c:385:13:385:15 | 300 | 1.0 | +| test.c:385:13:385:15 | (unsigned int)... | 1.0 | +| test.c:385:21:385:21 | 5 | 1.0 | +| test.c:385:21:385:21 | (unsigned int)... | 1.0 | +| test.c:386:5:386:6 | y4 | 1.0 | +| test.c:386:5:386:21 | ... = ... | 4.0 | +| test.c:386:10:386:16 | (...) | 4.0 | +| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | +| test.c:386:11:386:11 | x | 4.0 | +| test.c:386:11:386:15 | ... - ... | 4.0 | +| test.c:386:13:386:15 | 200 | 1.0 | +| test.c:386:13:386:15 | (unsigned int)... | 1.0 | +| test.c:386:21:386:21 | 5 | 1.0 | +| test.c:386:21:386:21 | (unsigned int)... | 1.0 | +| test.c:387:5:387:6 | y5 | 1.0 | +| test.c:387:5:387:38 | ... = ... | 4.0 | +| test.c:387:10:387:33 | (...) | 4.0 | +| test.c:387:10:387:38 | (unsigned int)... | 4.0 | +| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | +| test.c:387:11:387:32 | (unsigned char)... | 4.0 | +| test.c:387:26:387:32 | (...) | 4.0 | +| test.c:387:27:387:27 | x | 4.0 | +| test.c:387:27:387:31 | ... - ... | 4.0 | +| test.c:387:29:387:31 | 200 | 1.0 | +| test.c:387:29:387:31 | (unsigned int)... | 1.0 | +| test.c:387:38:387:38 | 5 | 1.0 | +| test.c:389:10:389:11 | y1 | 1.0 | +| test.c:389:10:389:16 | ... + ... | 2.0 | +| test.c:389:10:389:21 | ... + ... | 10.0 | +| test.c:389:10:389:26 | ... + ... | 50.0 | +| test.c:389:10:389:31 | ... + ... | 250.0 | +| test.c:389:15:389:16 | y2 | 2.0 | +| test.c:389:20:389:21 | y3 | 5.0 | +| test.c:389:25:389:26 | y4 | 5.0 | +| test.c:389:30:389:31 | y5 | 5.0 | +| test.c:394:14:394:14 | m | 1.0 | +| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | +| test.c:394:18:394:18 | n | 1.0 | +| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | +| test.c:394:22:394:22 | o | 1.0 | +| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | +| test.c:394:26:394:26 | p | 1.0 | +| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | +| test.c:394:30:394:30 | q | 1.0 | +| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | +| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | +| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | +| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | +| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | +| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | +| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | +| test.c:395:14:395:14 | m | 2.0 | +| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | +| test.c:395:18:395:18 | n | 3.0 | +| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | +| test.c:395:22:395:22 | o | 3.0 | +| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | +| test.c:395:26:395:26 | p | 3.0 | +| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | +| test.c:395:30:395:30 | q | 3.0 | +| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | +| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | +| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | +| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | +| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | +| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | +| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | +| test.c:396:14:396:14 | m | 4.0 | +| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | +| test.c:396:18:396:18 | n | 9.0 | +| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | +| test.c:396:22:396:22 | o | 9.0 | +| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | +| test.c:396:26:396:26 | p | 9.0 | +| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | +| test.c:396:30:396:30 | q | 9.0 | +| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | +| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | +| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | +| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | +| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | +| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | +| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | +| test.c:397:14:397:14 | m | 8.0 | +| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | +| test.c:397:18:397:18 | n | 27.0 | +| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | +| test.c:397:22:397:22 | o | 27.0 | +| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | +| test.c:397:26:397:26 | p | 27.0 | +| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | +| test.c:397:30:397:30 | q | 27.0 | +| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | +| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | +| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | +| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | +| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | +| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | +| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | +| test.c:398:14:398:14 | m | 16.0 | +| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | +| test.c:398:18:398:18 | n | 81.0 | +| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | +| test.c:398:22:398:22 | o | 81.0 | +| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | +| test.c:398:26:398:26 | p | 81.0 | +| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | +| test.c:398:30:398:30 | q | 81.0 | +| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | +| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | +| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | +| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | +| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | +| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | +| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | +| test.c:399:14:399:14 | m | 32.0 | +| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | +| test.c:399:18:399:18 | n | 243.0 | +| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | +| test.c:399:22:399:22 | o | 243.0 | +| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | +| test.c:399:26:399:26 | p | 243.0 | +| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | +| test.c:399:30:399:30 | q | 243.0 | +| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | +| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | +| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | +| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | +| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | +| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | +| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | +| test.c:400:14:400:14 | m | 64.0 | +| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | +| test.c:400:18:400:18 | n | 729.0 | +| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | +| test.c:400:22:400:22 | o | 729.0 | +| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | +| test.c:400:26:400:26 | p | 729.0 | +| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | +| test.c:400:30:400:30 | q | 729.0 | +| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | +| test.c:400:34:400:43 | 0.02524326 | 1.0 | +| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | +| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | +| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | +| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | +| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | +| test.c:401:14:401:14 | m | 128.0 | +| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | +| test.c:401:18:401:18 | n | 2187.0 | +| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | +| test.c:401:22:401:22 | o | 2187.0 | +| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | +| test.c:401:26:401:26 | p | 2187.0 | +| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | +| test.c:401:30:401:30 | q | 2187.0 | +| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | +| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | +| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | +| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | +| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | +| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | +| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | +| test.c:402:14:402:14 | m | 256.0 | +| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | +| test.c:402:18:402:18 | n | 6561.0 | +| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | +| test.c:402:22:402:22 | o | 6561.0 | +| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | +| test.c:402:26:402:26 | p | 6561.0 | +| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | +| test.c:402:30:402:30 | q | 6561.0 | +| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | +| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | +| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | +| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | +| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | +| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | +| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | +| test.c:403:14:403:14 | m | 512.0 | +| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | +| test.c:403:18:403:18 | n | 19683.0 | +| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | +| test.c:403:22:403:22 | o | 19683.0 | +| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | +| test.c:403:26:403:26 | p | 19683.0 | +| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | +| test.c:403:30:403:30 | q | 19683.0 | +| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | +| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | +| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | +| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | +| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | +| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | +| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | +| test.c:404:14:404:14 | m | 1024.0 | +| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | +| test.c:404:18:404:18 | n | 59049.0 | +| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | +| test.c:404:22:404:22 | o | 59049.0 | +| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | +| test.c:404:26:404:26 | p | 59049.0 | +| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | +| test.c:404:30:404:30 | q | 59049.0 | +| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | +| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | +| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | +| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | +| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | +| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | +| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | +| test.c:405:14:405:14 | m | 2048.0 | +| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | +| test.c:405:18:405:18 | n | 177147.0 | +| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | +| test.c:405:22:405:22 | o | 177147.0 | +| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | +| test.c:405:26:405:26 | p | 177147.0 | +| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | +| test.c:405:30:405:30 | q | 177147.0 | +| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | +| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | +| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | +| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | +| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | +| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | +| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | +| test.c:411:19:411:19 | a | 1.0 | +| test.c:411:19:411:23 | ... + ... | 1.0 | +| test.c:411:19:411:27 | ... + ... | 1.0 | +| test.c:411:19:411:31 | ... + ... | 1.0 | +| test.c:411:19:411:35 | ... + ... | 1.0 | +| test.c:411:19:411:39 | ... + ... | 1.0 | +| test.c:411:19:411:43 | ... + ... | 1.0 | +| test.c:411:19:411:47 | ... + ... | 1.0 | +| test.c:411:19:411:51 | ... + ... | 1.0 | +| test.c:411:19:411:55 | ... + ... | 1.0 | +| test.c:411:19:411:59 | ... + ... | 1.0 | +| test.c:411:19:411:63 | ... + ... | 1.0 | +| test.c:411:23:411:23 | b | 1.0 | +| test.c:411:27:411:27 | c | 1.0 | +| test.c:411:31:411:31 | d | 1.0 | +| test.c:411:35:411:35 | e | 1.0 | +| test.c:411:39:411:39 | f | 1.0 | +| test.c:411:43:411:43 | g | 1.0 | +| test.c:411:47:411:47 | h | 1.0 | +| test.c:411:51:411:51 | i | 1.0 | +| test.c:411:55:411:55 | j | 1.0 | +| test.c:411:59:411:59 | k | 1.0 | +| test.c:411:63:411:63 | l | 1.0 | +| test.c:413:10:413:15 | output | 1.0 | +| test.c:420:7:420:9 | rhs | 1.0 | +| test.c:420:7:420:14 | ... < ... | 1.0 | +| test.c:420:13:420:14 | 12 | 1.0 | +| test.c:420:13:420:14 | (unsigned int)... | 1.0 | +| test.c:420:19:420:21 | rhs | 1.0 | +| test.c:420:19:420:26 | ... << ... | 1.0 | +| test.c:420:26:420:26 | 1 | 1.0 | +| test.c:421:7:421:9 | rhs | 2.0 | +| test.c:421:7:421:14 | ... < ... | 1.0 | +| test.c:421:13:421:14 | 13 | 1.0 | +| test.c:421:13:421:14 | (unsigned int)... | 1.0 | +| test.c:421:19:421:21 | rhs | 2.0 | +| test.c:421:19:421:26 | ... << ... | 1.0 | +| test.c:421:26:421:26 | 1 | 1.0 | +| test.c:422:7:422:9 | rhs | 3.0 | +| test.c:422:7:422:14 | ... < ... | 1.0 | +| test.c:422:13:422:14 | 14 | 1.0 | +| test.c:422:13:422:14 | (unsigned int)... | 1.0 | +| test.c:422:19:422:21 | rhs | 3.0 | +| test.c:422:19:422:26 | ... << ... | 1.0 | +| test.c:422:26:422:26 | 1 | 1.0 | +| test.c:423:7:423:9 | rhs | 4.0 | +| test.c:423:7:423:14 | ... < ... | 1.0 | +| test.c:423:13:423:14 | 15 | 1.0 | +| test.c:423:13:423:14 | (unsigned int)... | 1.0 | +| test.c:423:19:423:21 | rhs | 4.0 | +| test.c:423:19:423:26 | ... << ... | 1.0 | +| test.c:423:26:423:26 | 1 | 1.0 | +| test.c:424:7:424:9 | rhs | 5.0 | +| test.c:424:7:424:14 | ... < ... | 1.0 | +| test.c:424:13:424:14 | 16 | 1.0 | +| test.c:424:13:424:14 | (unsigned int)... | 1.0 | +| test.c:424:19:424:21 | rhs | 5.0 | +| test.c:424:19:424:26 | ... << ... | 1.0 | +| test.c:424:26:424:26 | 1 | 1.0 | +| test.c:425:10:425:12 | (int)... | 6.0 | +| test.c:425:10:425:12 | rhs | 6.0 | +| test.c:432:4:434:50 | (...) | 1.0 | +| test.c:432:4:517:26 | ... > ... | 1.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 1.297918419127476E201 | +| test.c:432:5:432:6 | 14 | 1.0 | +| test.c:432:5:432:6 | (unsigned int)... | 1.0 | +| test.c:432:5:432:11 | ... * ... | 1.0 | +| test.c:432:5:432:55 | ... > ... | 1.0 | +| test.c:432:5:434:49 | ... ? ... : ... | 1.0 | +| test.c:432:10:432:11 | ip | 1.0 | +| test.c:432:15:432:26 | (...) | 1.0 | +| test.c:432:15:432:31 | ... * ... | 1.0 | +| test.c:432:15:432:55 | ... + ... | 1.0 | +| test.c:432:16:432:16 | 2 | 1.0 | +| test.c:432:16:432:16 | (unsigned int)... | 1.0 | +| test.c:432:16:432:21 | ... * ... | 1.0 | +| test.c:432:16:432:25 | ... + ... | 1.0 | +| test.c:432:20:432:21 | ip | 1.0 | +| test.c:432:25:432:25 | 1 | 1.0 | +| test.c:432:25:432:25 | (unsigned int)... | 1.0 | +| test.c:432:30:432:31 | 17 | 1.0 | +| test.c:432:30:432:31 | (unsigned int)... | 1.0 | +| test.c:432:35:432:50 | (...) | 1.0 | +| test.c:432:35:432:55 | ... * ... | 1.0 | +| test.c:432:36:432:36 | 2 | 1.0 | +| test.c:432:36:432:36 | (unsigned int)... | 1.0 | +| test.c:432:36:432:41 | ... * ... | 1.0 | +| test.c:432:36:432:45 | ... + ... | 1.0 | +| test.c:432:36:432:49 | ... + ... | 1.0 | +| test.c:432:40:432:41 | ip | 1.0 | +| test.c:432:45:432:45 | 1 | 1.0 | +| test.c:432:45:432:45 | (unsigned int)... | 1.0 | +| test.c:432:49:432:49 | 1 | 1.0 | +| test.c:432:49:432:49 | (unsigned int)... | 1.0 | +| test.c:432:54:432:55 | 17 | 1.0 | +| test.c:432:54:432:55 | (unsigned int)... | 1.0 | +| test.c:433:9:433:10 | 14 | 1.0 | +| test.c:433:9:433:10 | (unsigned int)... | 1.0 | +| test.c:433:9:433:15 | ... * ... | 1.0 | +| test.c:433:14:433:15 | ip | 1.0 | +| test.c:434:9:434:20 | (...) | 1.0 | +| test.c:434:9:434:25 | ... * ... | 1.0 | +| test.c:434:9:434:49 | ... + ... | 1.0 | +| test.c:434:10:434:10 | 2 | 1.0 | +| test.c:434:10:434:10 | (unsigned int)... | 1.0 | +| test.c:434:10:434:15 | ... * ... | 1.0 | +| test.c:434:10:434:19 | ... + ... | 1.0 | +| test.c:434:14:434:15 | ip | 1.0 | +| test.c:434:19:434:19 | 1 | 1.0 | +| test.c:434:19:434:19 | (unsigned int)... | 1.0 | +| test.c:434:24:434:25 | 14 | 1.0 | +| test.c:434:24:434:25 | (unsigned int)... | 1.0 | +| test.c:434:29:434:44 | (...) | 1.0 | +| test.c:434:29:434:49 | ... * ... | 1.0 | +| test.c:434:30:434:30 | 2 | 1.0 | +| test.c:434:30:434:30 | (unsigned int)... | 1.0 | +| test.c:434:30:434:35 | ... * ... | 1.0 | +| test.c:434:30:434:39 | ... + ... | 1.0 | +| test.c:434:30:434:43 | ... + ... | 1.0 | +| test.c:434:34:434:35 | ip | 1.0 | +| test.c:434:39:434:39 | 1 | 1.0 | +| test.c:434:39:434:39 | (unsigned int)... | 1.0 | +| test.c:434:43:434:43 | 1 | 1.0 | +| test.c:434:43:434:43 | (unsigned int)... | 1.0 | +| test.c:434:48:434:49 | 17 | 1.0 | +| test.c:434:48:434:49 | (unsigned int)... | 1.0 | +| test.c:435:5:517:26 | (...) | 9.29462083211502E84 | +| test.c:435:6:435:6 | 2 | 1.0 | +| test.c:435:6:435:6 | (unsigned int)... | 1.0 | +| test.c:435:6:435:23 | ... * ... | 2.0 | +| test.c:435:6:454:42 | ... + ... | 4.524508125E10 | +| test.c:435:6:474:24 | ... > ... | 1.0 | +| test.c:435:6:517:25 | ... ? ... : ... | 9.29462083211502E84 | +| test.c:435:10:435:23 | (...) | 2.0 | +| test.c:435:11:435:12 | ip | 2.0 | +| test.c:435:11:435:17 | ... * ... | 2.0 | +| test.c:435:11:435:22 | ... + ... | 2.0 | +| test.c:435:16:435:17 | 14 | 1.0 | +| test.c:435:16:435:17 | (unsigned int)... | 1.0 | +| test.c:435:21:435:22 | 32 | 1.0 | +| test.c:435:21:435:22 | (unsigned int)... | 1.0 | +| test.c:436:7:454:42 | (...) | 2.2622540625E10 | +| test.c:436:8:436:8 | 4 | 1.0 | +| test.c:436:8:436:8 | (unsigned int)... | 1.0 | +| test.c:436:8:436:25 | ... * ... | 2.0 | +| test.c:436:8:437:26 | ... + ... | 4.0 | +| test.c:436:8:438:26 | ... + ... | 8.0 | +| test.c:436:8:443:22 | ... + ... | 1000.0 | +| test.c:436:8:444:37 | ... > ... | 1.0 | +| test.c:436:8:454:41 | ... ? ... : ... | 2.2622540625E10 | +| test.c:436:12:436:25 | (...) | 2.0 | +| test.c:436:13:436:14 | ip | 2.0 | +| test.c:436:13:436:19 | ... * ... | 2.0 | +| test.c:436:13:436:24 | ... + ... | 2.0 | +| test.c:436:18:436:19 | 14 | 1.0 | +| test.c:436:18:436:19 | (unsigned int)... | 1.0 | +| test.c:436:23:436:24 | 32 | 1.0 | +| test.c:436:23:436:24 | (unsigned int)... | 1.0 | +| test.c:437:9:437:26 | (...) | 2.0 | +| test.c:437:10:437:10 | 2 | 1.0 | +| test.c:437:10:437:10 | (unsigned int)... | 1.0 | +| test.c:437:10:437:15 | ... * ... | 2.0 | +| test.c:437:10:437:20 | ... * ... | 2.0 | +| test.c:437:10:437:25 | ... + ... | 2.0 | +| test.c:437:14:437:15 | ip | 2.0 | +| test.c:437:19:437:20 | 14 | 1.0 | +| test.c:437:19:437:20 | (unsigned int)... | 1.0 | +| test.c:437:24:437:25 | 32 | 1.0 | +| test.c:437:24:437:25 | (unsigned int)... | 1.0 | +| test.c:438:9:438:9 | 2 | 1.0 | +| test.c:438:9:438:9 | (unsigned int)... | 1.0 | +| test.c:438:9:438:26 | ... * ... | 2.0 | +| test.c:438:13:438:26 | (...) | 2.0 | +| test.c:438:14:438:15 | ip | 2.0 | +| test.c:438:14:438:20 | ... * ... | 2.0 | +| test.c:438:14:438:25 | ... + ... | 2.0 | +| test.c:438:19:438:20 | 14 | 1.0 | +| test.c:438:19:438:20 | (unsigned int)... | 1.0 | +| test.c:438:24:438:25 | 64 | 1.0 | +| test.c:438:24:438:25 | (unsigned int)... | 1.0 | +| test.c:439:9:443:22 | (...) | 125.0 | +| test.c:439:10:439:21 | (...) | 2.0 | +| test.c:439:10:439:26 | ... * ... | 2.0 | +| test.c:439:10:439:80 | ... > ... | 1.0 | +| test.c:439:10:443:21 | ... ? ... : ... | 125.0 | +| test.c:439:11:439:11 | 2 | 1.0 | +| test.c:439:11:439:11 | (unsigned int)... | 1.0 | +| test.c:439:11:439:16 | ... * ... | 2.0 | +| test.c:439:11:439:20 | ... + ... | 2.0 | +| test.c:439:15:439:16 | ip | 2.0 | +| test.c:439:20:439:20 | 1 | 1.0 | +| test.c:439:20:439:20 | (unsigned int)... | 1.0 | +| test.c:439:25:439:26 | 14 | 1.0 | +| test.c:439:25:439:26 | (unsigned int)... | 1.0 | +| test.c:439:30:439:80 | (...) | 4.0 | +| test.c:439:31:439:32 | 17 | 1.0 | +| test.c:439:31:439:32 | (unsigned int)... | 1.0 | +| test.c:439:31:439:43 | ... * ... | 2.0 | +| test.c:439:31:439:53 | ... > ... | 1.0 | +| test.c:439:31:439:79 | ... ? ... : ... | 4.0 | +| test.c:439:36:439:43 | (...) | 2.0 | +| test.c:439:37:439:37 | 2 | 1.0 | +| test.c:439:37:439:37 | (unsigned int)... | 1.0 | +| test.c:439:37:439:42 | ... * ... | 2.0 | +| test.c:439:41:439:42 | ip | 2.0 | +| test.c:439:47:439:48 | 17 | 1.0 | +| test.c:439:47:439:48 | (unsigned int)... | 1.0 | +| test.c:439:47:439:53 | ... * ... | 2.0 | +| test.c:439:52:439:53 | ip | 2.0 | +| test.c:439:57:439:58 | 17 | 1.0 | +| test.c:439:57:439:58 | (unsigned int)... | 1.0 | +| test.c:439:57:439:69 | ... * ... | 2.0 | +| test.c:439:62:439:69 | (...) | 2.0 | +| test.c:439:63:439:63 | 2 | 1.0 | +| test.c:439:63:439:63 | (unsigned int)... | 1.0 | +| test.c:439:63:439:68 | ... * ... | 2.0 | +| test.c:439:67:439:68 | ip | 2.0 | +| test.c:439:73:439:74 | 17 | 1.0 | +| test.c:439:73:439:74 | (unsigned int)... | 1.0 | +| test.c:439:73:439:79 | ... * ... | 2.0 | +| test.c:439:78:439:79 | ip | 2.0 | +| test.c:440:13:440:24 | (...) | 5.0 | +| test.c:440:13:440:29 | ... * ... | 5.0 | +| test.c:440:14:440:14 | 2 | 1.0 | +| test.c:440:14:440:14 | (unsigned int)... | 1.0 | +| test.c:440:14:440:19 | ... * ... | 5.0 | +| test.c:440:14:440:23 | ... + ... | 5.0 | +| test.c:440:18:440:19 | ip | 5.0 | +| test.c:440:23:440:23 | 1 | 1.0 | +| test.c:440:23:440:23 | (unsigned int)... | 1.0 | +| test.c:440:28:440:29 | 14 | 1.0 | +| test.c:440:28:440:29 | (unsigned int)... | 1.0 | +| test.c:441:13:441:14 | 14 | 1.0 | +| test.c:441:13:441:14 | (unsigned int)... | 1.0 | +| test.c:441:13:441:25 | ... * ... | 5.0 | +| test.c:441:13:441:35 | ... > ... | 1.0 | +| test.c:441:13:443:21 | ... ? ... : ... | 25.0 | +| test.c:441:18:441:25 | (...) | 5.0 | +| test.c:441:19:441:19 | 2 | 1.0 | +| test.c:441:19:441:19 | (unsigned int)... | 1.0 | +| test.c:441:19:441:24 | ... * ... | 5.0 | +| test.c:441:23:441:24 | ip | 5.0 | +| test.c:441:29:441:30 | 17 | 1.0 | +| test.c:441:29:441:30 | (unsigned int)... | 1.0 | +| test.c:441:29:441:35 | ... * ... | 5.0 | +| test.c:441:34:441:35 | ip | 5.0 | +| test.c:442:15:442:16 | 14 | 1.0 | +| test.c:442:15:442:16 | (unsigned int)... | 1.0 | +| test.c:442:15:442:27 | ... * ... | 5.0 | +| test.c:442:20:442:27 | (...) | 5.0 | +| test.c:442:21:442:21 | 2 | 1.0 | +| test.c:442:21:442:21 | (unsigned int)... | 1.0 | +| test.c:442:21:442:26 | ... * ... | 5.0 | +| test.c:442:25:442:26 | ip | 5.0 | +| test.c:443:15:443:16 | 14 | 1.0 | +| test.c:443:15:443:16 | (unsigned int)... | 1.0 | +| test.c:443:15:443:21 | ... * ... | 5.0 | +| test.c:443:20:443:21 | ip | 5.0 | +| test.c:444:7:444:7 | 2 | 1.0 | +| test.c:444:7:444:7 | (unsigned int)... | 1.0 | +| test.c:444:7:444:12 | ... * ... | 15.0 | +| test.c:444:7:444:17 | ... * ... | 15.0 | +| test.c:444:7:444:37 | ... + ... | 225.0 | +| test.c:444:11:444:12 | ip | 15.0 | +| test.c:444:16:444:17 | 14 | 1.0 | +| test.c:444:16:444:17 | (unsigned int)... | 1.0 | +| test.c:444:21:444:32 | (...) | 15.0 | +| test.c:444:21:444:37 | ... * ... | 15.0 | +| test.c:444:22:444:22 | 2 | 1.0 | +| test.c:444:22:444:22 | (unsigned int)... | 1.0 | +| test.c:444:22:444:27 | ... * ... | 15.0 | +| test.c:444:22:444:31 | ... + ... | 15.0 | +| test.c:444:26:444:27 | ip | 15.0 | +| test.c:444:31:444:31 | 1 | 1.0 | +| test.c:444:31:444:31 | (unsigned int)... | 1.0 | +| test.c:444:36:444:37 | 17 | 1.0 | +| test.c:444:36:444:37 | (unsigned int)... | 1.0 | +| test.c:445:11:445:11 | 4 | 1.0 | +| test.c:445:11:445:11 | (unsigned int)... | 1.0 | +| test.c:445:11:445:28 | ... * ... | 15.0 | +| test.c:445:11:446:28 | ... + ... | 225.0 | +| test.c:445:11:447:28 | ... + ... | 3375.0 | +| test.c:445:11:453:24 | ... + ... | 1.00544625E8 | +| test.c:445:15:445:28 | (...) | 15.0 | +| test.c:445:16:445:17 | ip | 15.0 | +| test.c:445:16:445:22 | ... * ... | 15.0 | +| test.c:445:16:445:27 | ... + ... | 15.0 | +| test.c:445:21:445:22 | 14 | 1.0 | +| test.c:445:21:445:22 | (unsigned int)... | 1.0 | +| test.c:445:26:445:27 | 32 | 1.0 | +| test.c:445:26:445:27 | (unsigned int)... | 1.0 | +| test.c:446:11:446:28 | (...) | 15.0 | +| test.c:446:12:446:12 | 2 | 1.0 | +| test.c:446:12:446:12 | (unsigned int)... | 1.0 | +| test.c:446:12:446:17 | ... * ... | 15.0 | +| test.c:446:12:446:22 | ... * ... | 15.0 | +| test.c:446:12:446:27 | ... + ... | 15.0 | +| test.c:446:16:446:17 | ip | 15.0 | +| test.c:446:21:446:22 | 14 | 1.0 | +| test.c:446:21:446:22 | (unsigned int)... | 1.0 | +| test.c:446:26:446:27 | 32 | 1.0 | +| test.c:446:26:446:27 | (unsigned int)... | 1.0 | +| test.c:447:11:447:11 | 2 | 1.0 | +| test.c:447:11:447:11 | (unsigned int)... | 1.0 | +| test.c:447:11:447:28 | ... * ... | 15.0 | +| test.c:447:15:447:28 | (...) | 15.0 | +| test.c:447:16:447:17 | ip | 15.0 | +| test.c:447:16:447:22 | ... * ... | 15.0 | +| test.c:447:16:447:27 | ... + ... | 15.0 | +| test.c:447:21:447:22 | 14 | 1.0 | +| test.c:447:21:447:22 | (unsigned int)... | 1.0 | +| test.c:447:26:447:27 | 64 | 1.0 | +| test.c:447:26:447:27 | (unsigned int)... | 1.0 | +| test.c:448:11:453:24 | (...) | 29791.0 | +| test.c:448:12:448:23 | (...) | 15.0 | +| test.c:448:12:448:28 | ... * ... | 15.0 | +| test.c:448:12:449:61 | ... > ... | 1.0 | +| test.c:448:12:453:23 | ... ? ... : ... | 29791.0 | +| test.c:448:13:448:13 | 2 | 1.0 | +| test.c:448:13:448:13 | (unsigned int)... | 1.0 | +| test.c:448:13:448:18 | ... * ... | 15.0 | +| test.c:448:13:448:22 | ... + ... | 15.0 | +| test.c:448:17:448:18 | ip | 15.0 | +| test.c:448:22:448:22 | 1 | 1.0 | +| test.c:448:22:448:22 | (unsigned int)... | 1.0 | +| test.c:448:27:448:28 | 14 | 1.0 | +| test.c:448:27:448:28 | (unsigned int)... | 1.0 | +| test.c:449:11:449:61 | (...) | 225.0 | +| test.c:449:12:449:13 | 14 | 1.0 | +| test.c:449:12:449:13 | (unsigned int)... | 1.0 | +| test.c:449:12:449:24 | ... * ... | 15.0 | +| test.c:449:12:449:34 | ... > ... | 1.0 | +| test.c:449:12:449:60 | ... ? ... : ... | 225.0 | +| test.c:449:17:449:24 | (...) | 15.0 | +| test.c:449:18:449:18 | 2 | 1.0 | +| test.c:449:18:449:18 | (unsigned int)... | 1.0 | +| test.c:449:18:449:23 | ... * ... | 15.0 | +| test.c:449:22:449:23 | ip | 15.0 | +| test.c:449:28:449:29 | 17 | 1.0 | +| test.c:449:28:449:29 | (unsigned int)... | 1.0 | +| test.c:449:28:449:34 | ... * ... | 15.0 | +| test.c:449:33:449:34 | ip | 15.0 | +| test.c:449:38:449:39 | 17 | 1.0 | +| test.c:449:38:449:39 | (unsigned int)... | 1.0 | +| test.c:449:38:449:50 | ... * ... | 15.0 | +| test.c:449:43:449:50 | (...) | 15.0 | +| test.c:449:44:449:44 | 2 | 1.0 | +| test.c:449:44:449:44 | (unsigned int)... | 1.0 | +| test.c:449:44:449:49 | ... * ... | 15.0 | +| test.c:449:48:449:49 | ip | 15.0 | +| test.c:449:54:449:55 | 17 | 1.0 | +| test.c:449:54:449:55 | (unsigned int)... | 1.0 | +| test.c:449:54:449:60 | ... * ... | 15.0 | +| test.c:449:59:449:60 | ip | 15.0 | +| test.c:450:15:450:26 | (...) | 31.0 | +| test.c:450:15:450:31 | ... * ... | 31.0 | +| test.c:450:16:450:16 | 2 | 1.0 | +| test.c:450:16:450:16 | (unsigned int)... | 1.0 | +| test.c:450:16:450:21 | ... * ... | 31.0 | +| test.c:450:16:450:25 | ... + ... | 31.0 | +| test.c:450:20:450:21 | ip | 31.0 | +| test.c:450:25:450:25 | 1 | 1.0 | +| test.c:450:25:450:25 | (unsigned int)... | 1.0 | +| test.c:450:30:450:31 | 14 | 1.0 | +| test.c:450:30:450:31 | (unsigned int)... | 1.0 | +| test.c:451:15:451:16 | 14 | 1.0 | +| test.c:451:15:451:16 | (unsigned int)... | 1.0 | +| test.c:451:15:451:27 | ... * ... | 31.0 | +| test.c:451:15:451:37 | ... > ... | 1.0 | +| test.c:451:15:453:23 | ... ? ... : ... | 961.0 | +| test.c:451:20:451:27 | (...) | 31.0 | +| test.c:451:21:451:21 | 2 | 1.0 | +| test.c:451:21:451:21 | (unsigned int)... | 1.0 | +| test.c:451:21:451:26 | ... * ... | 31.0 | +| test.c:451:25:451:26 | ip | 31.0 | +| test.c:451:31:451:32 | 17 | 1.0 | +| test.c:451:31:451:32 | (unsigned int)... | 1.0 | +| test.c:451:31:451:37 | ... * ... | 31.0 | +| test.c:451:36:451:37 | ip | 31.0 | +| test.c:452:17:452:18 | 14 | 1.0 | +| test.c:452:17:452:18 | (unsigned int)... | 1.0 | +| test.c:452:17:452:29 | ... * ... | 31.0 | +| test.c:452:22:452:29 | (...) | 31.0 | +| test.c:452:23:452:23 | 2 | 1.0 | +| test.c:452:23:452:23 | (unsigned int)... | 1.0 | +| test.c:452:23:452:28 | ... * ... | 31.0 | +| test.c:452:27:452:28 | ip | 31.0 | +| test.c:453:17:453:18 | 14 | 1.0 | +| test.c:453:17:453:18 | (unsigned int)... | 1.0 | +| test.c:453:17:453:23 | ... * ... | 31.0 | +| test.c:453:22:453:23 | ip | 31.0 | +| test.c:454:11:454:11 | 2 | 1.0 | +| test.c:454:11:454:11 | (unsigned int)... | 1.0 | +| test.c:454:11:454:16 | ... * ... | 15.0 | +| test.c:454:11:454:21 | ... * ... | 15.0 | +| test.c:454:11:454:41 | ... + ... | 225.0 | +| test.c:454:15:454:16 | ip | 15.0 | +| test.c:454:20:454:21 | 14 | 1.0 | +| test.c:454:20:454:21 | (unsigned int)... | 1.0 | +| test.c:454:25:454:36 | (...) | 15.0 | +| test.c:454:25:454:41 | ... * ... | 15.0 | +| test.c:454:26:454:26 | 2 | 1.0 | +| test.c:454:26:454:26 | (unsigned int)... | 1.0 | +| test.c:454:26:454:31 | ... * ... | 15.0 | +| test.c:454:26:454:35 | ... + ... | 15.0 | +| test.c:454:30:454:31 | ip | 15.0 | +| test.c:454:35:454:35 | 1 | 1.0 | +| test.c:454:35:454:35 | (unsigned int)... | 1.0 | +| test.c:454:40:454:41 | 17 | 1.0 | +| test.c:454:40:454:41 | (unsigned int)... | 1.0 | +| test.c:455:5:474:24 | (...) | 6.6142118960740864E25 | +| test.c:455:6:455:6 | 4 | 1.0 | +| test.c:455:6:455:6 | (unsigned int)... | 1.0 | +| test.c:455:6:455:23 | ... * ... | 108.0 | +| test.c:455:6:456:24 | ... + ... | 11664.0 | +| test.c:455:6:457:24 | ... + ... | 1259712.0 | +| test.c:455:6:462:20 | ... + ... | 1.2872131505856E13 | +| test.c:455:6:463:55 | ... > ... | 1.0 | +| test.c:455:6:474:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:455:10:455:23 | (...) | 108.0 | +| test.c:455:11:455:12 | ip | 108.0 | +| test.c:455:11:455:17 | ... * ... | 108.0 | +| test.c:455:11:455:22 | ... + ... | 108.0 | +| test.c:455:16:455:17 | 14 | 1.0 | +| test.c:455:16:455:17 | (unsigned int)... | 1.0 | +| test.c:455:21:455:22 | 32 | 1.0 | +| test.c:455:21:455:22 | (unsigned int)... | 1.0 | +| test.c:456:7:456:24 | (...) | 108.0 | +| test.c:456:8:456:8 | 2 | 1.0 | +| test.c:456:8:456:8 | (unsigned int)... | 1.0 | +| test.c:456:8:456:13 | ... * ... | 108.0 | +| test.c:456:8:456:18 | ... * ... | 108.0 | +| test.c:456:8:456:23 | ... + ... | 108.0 | +| test.c:456:12:456:13 | ip | 108.0 | +| test.c:456:17:456:18 | 14 | 1.0 | +| test.c:456:17:456:18 | (unsigned int)... | 1.0 | +| test.c:456:22:456:23 | 32 | 1.0 | +| test.c:456:22:456:23 | (unsigned int)... | 1.0 | +| test.c:457:7:457:7 | 2 | 1.0 | +| test.c:457:7:457:7 | (unsigned int)... | 1.0 | +| test.c:457:7:457:24 | ... * ... | 108.0 | +| test.c:457:11:457:24 | (...) | 108.0 | +| test.c:457:12:457:13 | ip | 108.0 | +| test.c:457:12:457:18 | ... * ... | 108.0 | +| test.c:457:12:457:23 | ... + ... | 108.0 | +| test.c:457:17:457:18 | 14 | 1.0 | +| test.c:457:17:457:18 | (unsigned int)... | 1.0 | +| test.c:457:22:457:23 | 64 | 1.0 | +| test.c:457:22:457:23 | (unsigned int)... | 1.0 | +| test.c:458:7:462:20 | (...) | 1.0218313E7 | +| test.c:458:8:458:19 | (...) | 108.0 | +| test.c:458:8:458:24 | ... * ... | 108.0 | +| test.c:458:8:458:78 | ... > ... | 1.0 | +| test.c:458:8:462:19 | ... ? ... : ... | 1.0218313E7 | +| test.c:458:9:458:9 | 2 | 1.0 | +| test.c:458:9:458:9 | (unsigned int)... | 1.0 | +| test.c:458:9:458:14 | ... * ... | 108.0 | +| test.c:458:9:458:18 | ... + ... | 108.0 | +| test.c:458:13:458:14 | ip | 108.0 | +| test.c:458:18:458:18 | 1 | 1.0 | +| test.c:458:18:458:18 | (unsigned int)... | 1.0 | +| test.c:458:23:458:24 | 14 | 1.0 | +| test.c:458:23:458:24 | (unsigned int)... | 1.0 | +| test.c:458:28:458:78 | (...) | 11664.0 | +| test.c:458:29:458:30 | 17 | 1.0 | +| test.c:458:29:458:30 | (unsigned int)... | 1.0 | +| test.c:458:29:458:41 | ... * ... | 108.0 | +| test.c:458:29:458:51 | ... > ... | 1.0 | +| test.c:458:29:458:77 | ... ? ... : ... | 11664.0 | +| test.c:458:34:458:41 | (...) | 108.0 | +| test.c:458:35:458:35 | 2 | 1.0 | +| test.c:458:35:458:35 | (unsigned int)... | 1.0 | +| test.c:458:35:458:40 | ... * ... | 108.0 | +| test.c:458:39:458:40 | ip | 108.0 | +| test.c:458:45:458:46 | 17 | 1.0 | +| test.c:458:45:458:46 | (unsigned int)... | 1.0 | +| test.c:458:45:458:51 | ... * ... | 108.0 | +| test.c:458:50:458:51 | ip | 108.0 | +| test.c:458:55:458:56 | 17 | 1.0 | +| test.c:458:55:458:56 | (unsigned int)... | 1.0 | +| test.c:458:55:458:67 | ... * ... | 108.0 | +| test.c:458:60:458:67 | (...) | 108.0 | +| test.c:458:61:458:61 | 2 | 1.0 | +| test.c:458:61:458:61 | (unsigned int)... | 1.0 | +| test.c:458:61:458:66 | ... * ... | 108.0 | +| test.c:458:65:458:66 | ip | 108.0 | +| test.c:458:71:458:72 | 17 | 1.0 | +| test.c:458:71:458:72 | (unsigned int)... | 1.0 | +| test.c:458:71:458:77 | ... * ... | 108.0 | +| test.c:458:76:458:77 | ip | 108.0 | +| test.c:459:11:459:22 | (...) | 217.0 | +| test.c:459:11:459:27 | ... * ... | 217.0 | +| test.c:459:12:459:12 | 2 | 1.0 | +| test.c:459:12:459:12 | (unsigned int)... | 1.0 | +| test.c:459:12:459:17 | ... * ... | 217.0 | +| test.c:459:12:459:21 | ... + ... | 217.0 | +| test.c:459:16:459:17 | ip | 217.0 | +| test.c:459:21:459:21 | 1 | 1.0 | +| test.c:459:21:459:21 | (unsigned int)... | 1.0 | +| test.c:459:26:459:27 | 14 | 1.0 | +| test.c:459:26:459:27 | (unsigned int)... | 1.0 | +| test.c:460:11:460:12 | 14 | 1.0 | +| test.c:460:11:460:12 | (unsigned int)... | 1.0 | +| test.c:460:11:460:23 | ... * ... | 217.0 | +| test.c:460:11:460:33 | ... > ... | 1.0 | +| test.c:460:11:462:19 | ... ? ... : ... | 47089.0 | +| test.c:460:16:460:23 | (...) | 217.0 | +| test.c:460:17:460:17 | 2 | 1.0 | +| test.c:460:17:460:17 | (unsigned int)... | 1.0 | +| test.c:460:17:460:22 | ... * ... | 217.0 | +| test.c:460:21:460:22 | ip | 217.0 | +| test.c:460:27:460:28 | 17 | 1.0 | +| test.c:460:27:460:28 | (unsigned int)... | 1.0 | +| test.c:460:27:460:33 | ... * ... | 217.0 | +| test.c:460:32:460:33 | ip | 217.0 | +| test.c:461:13:461:14 | 14 | 1.0 | +| test.c:461:13:461:14 | (unsigned int)... | 1.0 | +| test.c:461:13:461:25 | ... * ... | 217.0 | +| test.c:461:18:461:25 | (...) | 217.0 | +| test.c:461:19:461:19 | 2 | 1.0 | +| test.c:461:19:461:19 | (unsigned int)... | 1.0 | +| test.c:461:19:461:24 | ... * ... | 217.0 | +| test.c:461:23:461:24 | ip | 217.0 | +| test.c:462:13:462:14 | 14 | 1.0 | +| test.c:462:13:462:14 | (unsigned int)... | 1.0 | +| test.c:462:13:462:19 | ... * ... | 217.0 | +| test.c:462:18:462:19 | ip | 217.0 | +| test.c:463:5:463:55 | (...) | 423801.0 | +| test.c:463:6:463:7 | 14 | 1.0 | +| test.c:463:6:463:7 | (unsigned int)... | 1.0 | +| test.c:463:6:463:12 | ... * ... | 651.0 | +| test.c:463:6:463:28 | ... > ... | 1.0 | +| test.c:463:6:463:54 | ... ? ... : ... | 423801.0 | +| test.c:463:11:463:12 | ip | 651.0 | +| test.c:463:16:463:23 | (...) | 651.0 | +| test.c:463:16:463:28 | ... * ... | 651.0 | +| test.c:463:17:463:18 | ip | 651.0 | +| test.c:463:17:463:22 | ... + ... | 651.0 | +| test.c:463:22:463:22 | 1 | 1.0 | +| test.c:463:22:463:22 | (unsigned int)... | 1.0 | +| test.c:463:27:463:28 | 17 | 1.0 | +| test.c:463:27:463:28 | (unsigned int)... | 1.0 | +| test.c:463:32:463:33 | 17 | 1.0 | +| test.c:463:32:463:33 | (unsigned int)... | 1.0 | +| test.c:463:32:463:38 | ... * ... | 651.0 | +| test.c:463:37:463:38 | ip | 651.0 | +| test.c:463:42:463:49 | (...) | 651.0 | +| test.c:463:42:463:54 | ... * ... | 651.0 | +| test.c:463:43:463:44 | ip | 651.0 | +| test.c:463:43:463:48 | ... + ... | 651.0 | +| test.c:463:48:463:48 | 1 | 1.0 | +| test.c:463:48:463:48 | (unsigned int)... | 1.0 | +| test.c:463:53:463:54 | 17 | 1.0 | +| test.c:463:53:463:54 | (unsigned int)... | 1.0 | +| test.c:464:9:464:9 | 4 | 1.0 | +| test.c:464:9:464:9 | (unsigned int)... | 1.0 | +| test.c:464:9:464:26 | ... * ... | 1302.0 | +| test.c:464:9:465:26 | ... + ... | 1695204.0 | +| test.c:464:9:466:26 | ... + ... | 2.207155608E9 | +| test.c:464:9:471:22 | ... + ... | 3.9017203216097214E19 | +| test.c:464:13:464:26 | (...) | 1302.0 | +| test.c:464:14:464:15 | ip | 1302.0 | +| test.c:464:14:464:20 | ... * ... | 1302.0 | +| test.c:464:14:464:25 | ... + ... | 1302.0 | +| test.c:464:19:464:20 | 14 | 1.0 | +| test.c:464:19:464:20 | (unsigned int)... | 1.0 | +| test.c:464:24:464:25 | 32 | 1.0 | +| test.c:464:24:464:25 | (unsigned int)... | 1.0 | +| test.c:465:9:465:26 | (...) | 1302.0 | +| test.c:465:10:465:10 | 2 | 1.0 | +| test.c:465:10:465:10 | (unsigned int)... | 1.0 | +| test.c:465:10:465:15 | ... * ... | 1302.0 | +| test.c:465:10:465:20 | ... * ... | 1302.0 | +| test.c:465:10:465:25 | ... + ... | 1302.0 | +| test.c:465:14:465:15 | ip | 1302.0 | +| test.c:465:19:465:20 | 14 | 1.0 | +| test.c:465:19:465:20 | (unsigned int)... | 1.0 | +| test.c:465:24:465:25 | 32 | 1.0 | +| test.c:465:24:465:25 | (unsigned int)... | 1.0 | +| test.c:466:9:466:9 | 2 | 1.0 | +| test.c:466:9:466:9 | (unsigned int)... | 1.0 | +| test.c:466:9:466:26 | ... * ... | 1302.0 | +| test.c:466:13:466:26 | (...) | 1302.0 | +| test.c:466:14:466:15 | ip | 1302.0 | +| test.c:466:14:466:20 | ... * ... | 1302.0 | +| test.c:466:14:466:25 | ... + ... | 1302.0 | +| test.c:466:19:466:20 | 14 | 1.0 | +| test.c:466:19:466:20 | (unsigned int)... | 1.0 | +| test.c:466:24:466:25 | 64 | 1.0 | +| test.c:466:24:466:25 | (unsigned int)... | 1.0 | +| test.c:467:9:471:22 | (...) | 1.7677595125E10 | +| test.c:467:10:467:21 | (...) | 1302.0 | +| test.c:467:10:467:26 | ... * ... | 1302.0 | +| test.c:467:10:467:80 | ... > ... | 1.0 | +| test.c:467:10:471:21 | ... ? ... : ... | 1.7677595125E10 | +| test.c:467:11:467:11 | 2 | 1.0 | +| test.c:467:11:467:11 | (unsigned int)... | 1.0 | +| test.c:467:11:467:16 | ... * ... | 1302.0 | +| test.c:467:11:467:20 | ... + ... | 1302.0 | +| test.c:467:15:467:16 | ip | 1302.0 | +| test.c:467:20:467:20 | 1 | 1.0 | +| test.c:467:20:467:20 | (unsigned int)... | 1.0 | +| test.c:467:25:467:26 | 14 | 1.0 | +| test.c:467:25:467:26 | (unsigned int)... | 1.0 | +| test.c:467:30:467:80 | (...) | 1695204.0 | +| test.c:467:31:467:32 | 17 | 1.0 | +| test.c:467:31:467:32 | (unsigned int)... | 1.0 | +| test.c:467:31:467:43 | ... * ... | 1302.0 | +| test.c:467:31:467:53 | ... > ... | 1.0 | +| test.c:467:31:467:79 | ... ? ... : ... | 1695204.0 | +| test.c:467:36:467:43 | (...) | 1302.0 | +| test.c:467:37:467:37 | 2 | 1.0 | +| test.c:467:37:467:37 | (unsigned int)... | 1.0 | +| test.c:467:37:467:42 | ... * ... | 1302.0 | +| test.c:467:41:467:42 | ip | 1302.0 | +| test.c:467:47:467:48 | 17 | 1.0 | +| test.c:467:47:467:48 | (unsigned int)... | 1.0 | +| test.c:467:47:467:53 | ... * ... | 1302.0 | +| test.c:467:52:467:53 | ip | 1302.0 | +| test.c:467:57:467:58 | 17 | 1.0 | +| test.c:467:57:467:58 | (unsigned int)... | 1.0 | +| test.c:467:57:467:69 | ... * ... | 1302.0 | +| test.c:467:62:467:69 | (...) | 1302.0 | +| test.c:467:63:467:63 | 2 | 1.0 | +| test.c:467:63:467:63 | (unsigned int)... | 1.0 | +| test.c:467:63:467:68 | ... * ... | 1302.0 | +| test.c:467:67:467:68 | ip | 1302.0 | +| test.c:467:73:467:74 | 17 | 1.0 | +| test.c:467:73:467:74 | (unsigned int)... | 1.0 | +| test.c:467:73:467:79 | ... * ... | 1302.0 | +| test.c:467:78:467:79 | ip | 1302.0 | +| test.c:468:13:468:24 | (...) | 2605.0 | +| test.c:468:13:468:29 | ... * ... | 2605.0 | +| test.c:468:14:468:14 | 2 | 1.0 | +| test.c:468:14:468:14 | (unsigned int)... | 1.0 | +| test.c:468:14:468:19 | ... * ... | 2605.0 | +| test.c:468:14:468:23 | ... + ... | 2605.0 | +| test.c:468:18:468:19 | ip | 2605.0 | +| test.c:468:23:468:23 | 1 | 1.0 | +| test.c:468:23:468:23 | (unsigned int)... | 1.0 | +| test.c:468:28:468:29 | 14 | 1.0 | +| test.c:468:28:468:29 | (unsigned int)... | 1.0 | +| test.c:469:13:469:14 | 14 | 1.0 | +| test.c:469:13:469:14 | (unsigned int)... | 1.0 | +| test.c:469:13:469:25 | ... * ... | 2605.0 | +| test.c:469:13:469:35 | ... > ... | 1.0 | +| test.c:469:13:471:21 | ... ? ... : ... | 6786025.0 | +| test.c:469:18:469:25 | (...) | 2605.0 | +| test.c:469:19:469:19 | 2 | 1.0 | +| test.c:469:19:469:19 | (unsigned int)... | 1.0 | +| test.c:469:19:469:24 | ... * ... | 2605.0 | +| test.c:469:23:469:24 | ip | 2605.0 | +| test.c:469:29:469:30 | 17 | 1.0 | +| test.c:469:29:469:30 | (unsigned int)... | 1.0 | +| test.c:469:29:469:35 | ... * ... | 2605.0 | +| test.c:469:34:469:35 | ip | 2605.0 | +| test.c:470:15:470:16 | 14 | 1.0 | +| test.c:470:15:470:16 | (unsigned int)... | 1.0 | +| test.c:470:15:470:27 | ... * ... | 2605.0 | +| test.c:470:20:470:27 | (...) | 2605.0 | +| test.c:470:21:470:21 | 2 | 1.0 | +| test.c:470:21:470:21 | (unsigned int)... | 1.0 | +| test.c:470:21:470:26 | ... * ... | 2605.0 | +| test.c:470:25:470:26 | ip | 2605.0 | +| test.c:471:15:471:16 | 14 | 1.0 | +| test.c:471:15:471:16 | (unsigned int)... | 1.0 | +| test.c:471:15:471:21 | ... * ... | 2605.0 | +| test.c:471:20:471:21 | ip | 2605.0 | +| test.c:472:9:472:10 | 14 | 1.0 | +| test.c:472:9:472:10 | (unsigned int)... | 1.0 | +| test.c:472:9:472:15 | ... * ... | 1302.0 | +| test.c:472:9:472:31 | ... > ... | 1.0 | +| test.c:472:9:474:23 | ... ? ... : ... | 1695204.0 | +| test.c:472:14:472:15 | ip | 1302.0 | +| test.c:472:19:472:26 | (...) | 1302.0 | +| test.c:472:19:472:31 | ... * ... | 1302.0 | +| test.c:472:20:472:21 | ip | 1302.0 | +| test.c:472:20:472:25 | ... + ... | 1302.0 | +| test.c:472:25:472:25 | 1 | 1.0 | +| test.c:472:25:472:25 | (unsigned int)... | 1.0 | +| test.c:472:30:472:31 | 17 | 1.0 | +| test.c:472:30:472:31 | (unsigned int)... | 1.0 | +| test.c:473:11:473:12 | 14 | 1.0 | +| test.c:473:11:473:12 | (unsigned int)... | 1.0 | +| test.c:473:11:473:17 | ... * ... | 1302.0 | +| test.c:473:16:473:17 | ip | 1302.0 | +| test.c:474:11:474:18 | (...) | 1302.0 | +| test.c:474:11:474:23 | ... * ... | 1302.0 | +| test.c:474:12:474:13 | ip | 1302.0 | +| test.c:474:12:474:17 | ... + ... | 1302.0 | +| test.c:474:17:474:17 | 1 | 1.0 | +| test.c:474:17:474:17 | (unsigned int)... | 1.0 | +| test.c:474:22:474:23 | 14 | 1.0 | +| test.c:474:22:474:23 | (unsigned int)... | 1.0 | +| test.c:475:9:475:9 | 2 | 1.0 | +| test.c:475:9:475:9 | (unsigned int)... | 1.0 | +| test.c:475:9:475:26 | ... * ... | 10419.0 | +| test.c:475:9:495:44 | ... + ... | 1.9449636104972528E43 | +| test.c:475:13:475:26 | (...) | 10419.0 | +| test.c:475:14:475:15 | ip | 10419.0 | +| test.c:475:14:475:20 | ... * ... | 10419.0 | +| test.c:475:14:475:25 | ... + ... | 10419.0 | +| test.c:475:19:475:20 | 14 | 1.0 | +| test.c:475:19:475:20 | (unsigned int)... | 1.0 | +| test.c:475:24:475:25 | 32 | 1.0 | +| test.c:475:24:475:25 | (unsigned int)... | 1.0 | +| test.c:476:9:495:44 | (...) | 1.8667469147684545E39 | +| test.c:476:10:476:10 | 4 | 1.0 | +| test.c:476:10:476:10 | (unsigned int)... | 1.0 | +| test.c:476:10:476:27 | ... * ... | 10419.0 | +| test.c:476:10:477:28 | ... + ... | 1.08555561E8 | +| test.c:476:10:478:28 | ... + ... | 1.131040390059E12 | +| test.c:476:10:484:24 | ... + ... | 1.0235492350954187E25 | +| test.c:476:10:485:39 | ... > ... | 1.0 | +| test.c:476:10:495:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:476:14:476:27 | (...) | 10419.0 | +| test.c:476:15:476:16 | ip | 10419.0 | +| test.c:476:15:476:21 | ... * ... | 10419.0 | +| test.c:476:15:476:26 | ... + ... | 10419.0 | +| test.c:476:20:476:21 | 14 | 1.0 | +| test.c:476:20:476:21 | (unsigned int)... | 1.0 | +| test.c:476:25:476:26 | 32 | 1.0 | +| test.c:476:25:476:26 | (unsigned int)... | 1.0 | +| test.c:477:11:477:28 | (...) | 10419.0 | +| test.c:477:12:477:12 | 2 | 1.0 | +| test.c:477:12:477:12 | (unsigned int)... | 1.0 | +| test.c:477:12:477:17 | ... * ... | 10419.0 | +| test.c:477:12:477:22 | ... * ... | 10419.0 | +| test.c:477:12:477:27 | ... + ... | 10419.0 | +| test.c:477:16:477:17 | ip | 10419.0 | +| test.c:477:21:477:22 | 14 | 1.0 | +| test.c:477:21:477:22 | (unsigned int)... | 1.0 | +| test.c:477:26:477:27 | 32 | 1.0 | +| test.c:477:26:477:27 | (unsigned int)... | 1.0 | +| test.c:478:11:478:11 | 2 | 1.0 | +| test.c:478:11:478:11 | (unsigned int)... | 1.0 | +| test.c:478:11:478:28 | ... * ... | 10419.0 | +| test.c:478:15:478:28 | (...) | 10419.0 | +| test.c:478:16:478:17 | ip | 10419.0 | +| test.c:478:16:478:22 | ... * ... | 10419.0 | +| test.c:478:16:478:27 | ... + ... | 10419.0 | +| test.c:478:21:478:22 | 14 | 1.0 | +| test.c:478:21:478:22 | (unsigned int)... | 1.0 | +| test.c:478:26:478:27 | 64 | 1.0 | +| test.c:478:26:478:27 | (unsigned int)... | 1.0 | +| test.c:479:11:484:24 | (...) | 9.049625849719E12 | +| test.c:479:12:479:23 | (...) | 10419.0 | +| test.c:479:12:479:28 | ... * ... | 10419.0 | +| test.c:479:12:480:61 | ... > ... | 1.0 | +| test.c:479:12:484:23 | ... ? ... : ... | 9.049625849719E12 | +| test.c:479:13:479:13 | 2 | 1.0 | +| test.c:479:13:479:13 | (unsigned int)... | 1.0 | +| test.c:479:13:479:18 | ... * ... | 10419.0 | +| test.c:479:13:479:22 | ... + ... | 10419.0 | +| test.c:479:17:479:18 | ip | 10419.0 | +| test.c:479:22:479:22 | 1 | 1.0 | +| test.c:479:22:479:22 | (unsigned int)... | 1.0 | +| test.c:479:27:479:28 | 14 | 1.0 | +| test.c:479:27:479:28 | (unsigned int)... | 1.0 | +| test.c:480:11:480:61 | (...) | 1.08555561E8 | +| test.c:480:12:480:13 | 14 | 1.0 | +| test.c:480:12:480:13 | (unsigned int)... | 1.0 | +| test.c:480:12:480:24 | ... * ... | 10419.0 | +| test.c:480:12:480:34 | ... > ... | 1.0 | +| test.c:480:12:480:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:480:17:480:24 | (...) | 10419.0 | +| test.c:480:18:480:18 | 2 | 1.0 | +| test.c:480:18:480:18 | (unsigned int)... | 1.0 | +| test.c:480:18:480:23 | ... * ... | 10419.0 | +| test.c:480:22:480:23 | ip | 10419.0 | +| test.c:480:28:480:29 | 17 | 1.0 | +| test.c:480:28:480:29 | (unsigned int)... | 1.0 | +| test.c:480:28:480:34 | ... * ... | 10419.0 | +| test.c:480:33:480:34 | ip | 10419.0 | +| test.c:480:38:480:39 | 17 | 1.0 | +| test.c:480:38:480:39 | (unsigned int)... | 1.0 | +| test.c:480:38:480:50 | ... * ... | 10419.0 | +| test.c:480:43:480:50 | (...) | 10419.0 | +| test.c:480:44:480:44 | 2 | 1.0 | +| test.c:480:44:480:44 | (unsigned int)... | 1.0 | +| test.c:480:44:480:49 | ... * ... | 10419.0 | +| test.c:480:48:480:49 | ip | 10419.0 | +| test.c:480:54:480:55 | 17 | 1.0 | +| test.c:480:54:480:55 | (unsigned int)... | 1.0 | +| test.c:480:54:480:60 | ... * ... | 10419.0 | +| test.c:480:59:480:60 | ip | 10419.0 | +| test.c:481:15:481:26 | (...) | 20839.0 | +| test.c:481:15:481:31 | ... * ... | 20839.0 | +| test.c:481:16:481:16 | 2 | 1.0 | +| test.c:481:16:481:16 | (unsigned int)... | 1.0 | +| test.c:481:16:481:21 | ... * ... | 20839.0 | +| test.c:481:16:481:25 | ... + ... | 20839.0 | +| test.c:481:20:481:21 | ip | 20839.0 | +| test.c:481:25:481:25 | 1 | 1.0 | +| test.c:481:25:481:25 | (unsigned int)... | 1.0 | +| test.c:481:30:481:31 | 14 | 1.0 | +| test.c:481:30:481:31 | (unsigned int)... | 1.0 | +| test.c:482:15:482:16 | 14 | 1.0 | +| test.c:482:15:482:16 | (unsigned int)... | 1.0 | +| test.c:482:15:482:27 | ... * ... | 20839.0 | +| test.c:482:15:482:37 | ... > ... | 1.0 | +| test.c:482:15:484:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:482:20:482:27 | (...) | 20839.0 | +| test.c:482:21:482:21 | 2 | 1.0 | +| test.c:482:21:482:21 | (unsigned int)... | 1.0 | +| test.c:482:21:482:26 | ... * ... | 20839.0 | +| test.c:482:25:482:26 | ip | 20839.0 | +| test.c:482:31:482:32 | 17 | 1.0 | +| test.c:482:31:482:32 | (unsigned int)... | 1.0 | +| test.c:482:31:482:37 | ... * ... | 20839.0 | +| test.c:482:36:482:37 | ip | 20839.0 | +| test.c:483:17:483:18 | 14 | 1.0 | +| test.c:483:17:483:18 | (unsigned int)... | 1.0 | +| test.c:483:17:483:29 | ... * ... | 20839.0 | +| test.c:483:22:483:29 | (...) | 20839.0 | +| test.c:483:23:483:23 | 2 | 1.0 | +| test.c:483:23:483:23 | (unsigned int)... | 1.0 | +| test.c:483:23:483:28 | ... * ... | 20839.0 | +| test.c:483:27:483:28 | ip | 20839.0 | +| test.c:484:17:484:18 | 14 | 1.0 | +| test.c:484:17:484:18 | (unsigned int)... | 1.0 | +| test.c:484:17:484:23 | ... * ... | 20839.0 | +| test.c:484:22:484:23 | ip | 20839.0 | +| test.c:485:9:485:9 | 2 | 1.0 | +| test.c:485:9:485:9 | (unsigned int)... | 1.0 | +| test.c:485:9:485:14 | ... * ... | 62517.0 | +| test.c:485:9:485:19 | ... * ... | 62517.0 | +| test.c:485:9:485:39 | ... + ... | 3.908375289E9 | +| test.c:485:13:485:14 | ip | 62517.0 | +| test.c:485:18:485:19 | 14 | 1.0 | +| test.c:485:18:485:19 | (unsigned int)... | 1.0 | +| test.c:485:23:485:34 | (...) | 62517.0 | +| test.c:485:23:485:39 | ... * ... | 62517.0 | +| test.c:485:24:485:24 | 2 | 1.0 | +| test.c:485:24:485:24 | (unsigned int)... | 1.0 | +| test.c:485:24:485:29 | ... * ... | 62517.0 | +| test.c:485:24:485:33 | ... + ... | 62517.0 | +| test.c:485:28:485:29 | ip | 62517.0 | +| test.c:485:33:485:33 | 1 | 1.0 | +| test.c:485:33:485:33 | (unsigned int)... | 1.0 | +| test.c:485:38:485:39 | 17 | 1.0 | +| test.c:485:38:485:39 | (unsigned int)... | 1.0 | +| test.c:486:13:486:13 | 4 | 1.0 | +| test.c:486:13:486:13 | (unsigned int)... | 1.0 | +| test.c:486:13:486:30 | ... * ... | 62517.0 | +| test.c:486:13:487:30 | ... + ... | 3.908375289E9 | +| test.c:486:13:488:30 | ... + ... | 2.44339897942413E14 | +| test.c:486:13:494:26 | ... + ... | 4.7762734556795386E29 | +| test.c:486:17:486:30 | (...) | 62517.0 | +| test.c:486:18:486:19 | ip | 62517.0 | +| test.c:486:18:486:24 | ... * ... | 62517.0 | +| test.c:486:18:486:29 | ... + ... | 62517.0 | +| test.c:486:23:486:24 | 14 | 1.0 | +| test.c:486:23:486:24 | (unsigned int)... | 1.0 | +| test.c:486:28:486:29 | 32 | 1.0 | +| test.c:486:28:486:29 | (unsigned int)... | 1.0 | +| test.c:487:13:487:30 | (...) | 62517.0 | +| test.c:487:14:487:14 | 2 | 1.0 | +| test.c:487:14:487:14 | (unsigned int)... | 1.0 | +| test.c:487:14:487:19 | ... * ... | 62517.0 | +| test.c:487:14:487:24 | ... * ... | 62517.0 | +| test.c:487:14:487:29 | ... + ... | 62517.0 | +| test.c:487:18:487:19 | ip | 62517.0 | +| test.c:487:23:487:24 | 14 | 1.0 | +| test.c:487:23:487:24 | (unsigned int)... | 1.0 | +| test.c:487:28:487:29 | 32 | 1.0 | +| test.c:487:28:487:29 | (unsigned int)... | 1.0 | +| test.c:488:13:488:13 | 2 | 1.0 | +| test.c:488:13:488:13 | (unsigned int)... | 1.0 | +| test.c:488:13:488:30 | ... * ... | 62517.0 | +| test.c:488:17:488:30 | (...) | 62517.0 | +| test.c:488:18:488:19 | ip | 62517.0 | +| test.c:488:18:488:24 | ... * ... | 62517.0 | +| test.c:488:18:488:29 | ... + ... | 62517.0 | +| test.c:488:23:488:24 | 14 | 1.0 | +| test.c:488:23:488:24 | (unsigned int)... | 1.0 | +| test.c:488:28:488:29 | 64 | 1.0 | +| test.c:488:28:488:29 | (unsigned int)... | 1.0 | +| test.c:489:13:494:26 | (...) | 1.954766084417875E15 | +| test.c:489:14:489:25 | (...) | 62517.0 | +| test.c:489:14:489:30 | ... * ... | 62517.0 | +| test.c:489:14:490:63 | ... > ... | 1.0 | +| test.c:489:14:494:25 | ... ? ... : ... | 1.954766084417875E15 | +| test.c:489:15:489:15 | 2 | 1.0 | +| test.c:489:15:489:15 | (unsigned int)... | 1.0 | +| test.c:489:15:489:20 | ... * ... | 62517.0 | +| test.c:489:15:489:24 | ... + ... | 62517.0 | +| test.c:489:19:489:20 | ip | 62517.0 | +| test.c:489:24:489:24 | 1 | 1.0 | +| test.c:489:24:489:24 | (unsigned int)... | 1.0 | +| test.c:489:29:489:30 | 14 | 1.0 | +| test.c:489:29:489:30 | (unsigned int)... | 1.0 | +| test.c:490:13:490:63 | (...) | 3.908375289E9 | +| test.c:490:14:490:15 | 14 | 1.0 | +| test.c:490:14:490:15 | (unsigned int)... | 1.0 | +| test.c:490:14:490:26 | ... * ... | 62517.0 | +| test.c:490:14:490:36 | ... > ... | 1.0 | +| test.c:490:14:490:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:490:19:490:26 | (...) | 62517.0 | +| test.c:490:20:490:20 | 2 | 1.0 | +| test.c:490:20:490:20 | (unsigned int)... | 1.0 | +| test.c:490:20:490:25 | ... * ... | 62517.0 | +| test.c:490:24:490:25 | ip | 62517.0 | +| test.c:490:30:490:31 | 17 | 1.0 | +| test.c:490:30:490:31 | (unsigned int)... | 1.0 | +| test.c:490:30:490:36 | ... * ... | 62517.0 | +| test.c:490:35:490:36 | ip | 62517.0 | +| test.c:490:40:490:41 | 17 | 1.0 | +| test.c:490:40:490:41 | (unsigned int)... | 1.0 | +| test.c:490:40:490:52 | ... * ... | 62517.0 | +| test.c:490:45:490:52 | (...) | 62517.0 | +| test.c:490:46:490:46 | 2 | 1.0 | +| test.c:490:46:490:46 | (unsigned int)... | 1.0 | +| test.c:490:46:490:51 | ... * ... | 62517.0 | +| test.c:490:50:490:51 | ip | 62517.0 | +| test.c:490:56:490:57 | 17 | 1.0 | +| test.c:490:56:490:57 | (unsigned int)... | 1.0 | +| test.c:490:56:490:62 | ... * ... | 62517.0 | +| test.c:490:61:490:62 | ip | 62517.0 | +| test.c:491:17:491:28 | (...) | 125035.0 | +| test.c:491:17:491:33 | ... * ... | 125035.0 | +| test.c:491:18:491:18 | 2 | 1.0 | +| test.c:491:18:491:18 | (unsigned int)... | 1.0 | +| test.c:491:18:491:23 | ... * ... | 125035.0 | +| test.c:491:18:491:27 | ... + ... | 125035.0 | +| test.c:491:22:491:23 | ip | 125035.0 | +| test.c:491:27:491:27 | 1 | 1.0 | +| test.c:491:27:491:27 | (unsigned int)... | 1.0 | +| test.c:491:32:491:33 | 14 | 1.0 | +| test.c:491:32:491:33 | (unsigned int)... | 1.0 | +| test.c:492:17:492:18 | 14 | 1.0 | +| test.c:492:17:492:18 | (unsigned int)... | 1.0 | +| test.c:492:17:492:29 | ... * ... | 125035.0 | +| test.c:492:17:492:39 | ... > ... | 1.0 | +| test.c:492:17:494:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:492:22:492:29 | (...) | 125035.0 | +| test.c:492:23:492:23 | 2 | 1.0 | +| test.c:492:23:492:23 | (unsigned int)... | 1.0 | +| test.c:492:23:492:28 | ... * ... | 125035.0 | +| test.c:492:27:492:28 | ip | 125035.0 | +| test.c:492:33:492:34 | 17 | 1.0 | +| test.c:492:33:492:34 | (unsigned int)... | 1.0 | +| test.c:492:33:492:39 | ... * ... | 125035.0 | +| test.c:492:38:492:39 | ip | 125035.0 | +| test.c:493:19:493:20 | 14 | 1.0 | +| test.c:493:19:493:20 | (unsigned int)... | 1.0 | +| test.c:493:19:493:31 | ... * ... | 125035.0 | +| test.c:493:24:493:31 | (...) | 125035.0 | +| test.c:493:25:493:25 | 2 | 1.0 | +| test.c:493:25:493:25 | (unsigned int)... | 1.0 | +| test.c:493:25:493:30 | ... * ... | 125035.0 | +| test.c:493:29:493:30 | ip | 125035.0 | +| test.c:494:19:494:20 | 14 | 1.0 | +| test.c:494:19:494:20 | (unsigned int)... | 1.0 | +| test.c:494:19:494:25 | ... * ... | 125035.0 | +| test.c:494:24:494:25 | ip | 125035.0 | +| test.c:495:13:495:13 | 2 | 1.0 | +| test.c:495:13:495:13 | (unsigned int)... | 1.0 | +| test.c:495:13:495:18 | ... * ... | 62517.0 | +| test.c:495:13:495:23 | ... * ... | 62517.0 | +| test.c:495:13:495:43 | ... + ... | 3.908375289E9 | +| test.c:495:17:495:18 | ip | 62517.0 | +| test.c:495:22:495:23 | 14 | 1.0 | +| test.c:495:22:495:23 | (unsigned int)... | 1.0 | +| test.c:495:27:495:38 | (...) | 62517.0 | +| test.c:495:27:495:43 | ... * ... | 62517.0 | +| test.c:495:28:495:28 | 2 | 1.0 | +| test.c:495:28:495:28 | (unsigned int)... | 1.0 | +| test.c:495:28:495:33 | ... * ... | 62517.0 | +| test.c:495:28:495:37 | ... + ... | 62517.0 | +| test.c:495:32:495:33 | ip | 62517.0 | +| test.c:495:37:495:37 | 1 | 1.0 | +| test.c:495:37:495:37 | (unsigned int)... | 1.0 | +| test.c:495:42:495:43 | 17 | 1.0 | +| test.c:495:42:495:43 | (unsigned int)... | 1.0 | +| test.c:496:9:496:9 | 4 | 1.0 | +| test.c:496:9:496:9 | (unsigned int)... | 1.0 | +| test.c:496:9:496:26 | ... * ... | 10419.0 | +| test.c:496:9:497:30 | ... + ... | 1.08555561E8 | +| test.c:496:9:498:30 | ... + ... | 1.131040390059E12 | +| test.c:496:9:504:26 | ... + ... | 1.0235492350954187E25 | +| test.c:496:9:505:61 | ... > ... | 1.0 | +| test.c:496:9:517:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:496:13:496:26 | (...) | 10419.0 | +| test.c:496:14:496:15 | ip | 10419.0 | +| test.c:496:14:496:20 | ... * ... | 10419.0 | +| test.c:496:14:496:25 | ... + ... | 10419.0 | +| test.c:496:19:496:20 | 14 | 1.0 | +| test.c:496:19:496:20 | (unsigned int)... | 1.0 | +| test.c:496:24:496:25 | 32 | 1.0 | +| test.c:496:24:496:25 | (unsigned int)... | 1.0 | +| test.c:497:13:497:30 | (...) | 10419.0 | +| test.c:497:14:497:14 | 2 | 1.0 | +| test.c:497:14:497:14 | (unsigned int)... | 1.0 | +| test.c:497:14:497:19 | ... * ... | 10419.0 | +| test.c:497:14:497:24 | ... * ... | 10419.0 | +| test.c:497:14:497:29 | ... + ... | 10419.0 | +| test.c:497:18:497:19 | ip | 10419.0 | +| test.c:497:23:497:24 | 14 | 1.0 | +| test.c:497:23:497:24 | (unsigned int)... | 1.0 | +| test.c:497:28:497:29 | 32 | 1.0 | +| test.c:497:28:497:29 | (unsigned int)... | 1.0 | +| test.c:498:13:498:13 | 2 | 1.0 | +| test.c:498:13:498:13 | (unsigned int)... | 1.0 | +| test.c:498:13:498:30 | ... * ... | 10419.0 | +| test.c:498:17:498:30 | (...) | 10419.0 | +| test.c:498:18:498:19 | ip | 10419.0 | +| test.c:498:18:498:24 | ... * ... | 10419.0 | +| test.c:498:18:498:29 | ... + ... | 10419.0 | +| test.c:498:23:498:24 | 14 | 1.0 | +| test.c:498:23:498:24 | (unsigned int)... | 1.0 | +| test.c:498:28:498:29 | 64 | 1.0 | +| test.c:498:28:498:29 | (unsigned int)... | 1.0 | +| test.c:499:13:504:26 | (...) | 9.049625849719E12 | +| test.c:499:14:499:25 | (...) | 10419.0 | +| test.c:499:14:499:30 | ... * ... | 10419.0 | +| test.c:499:14:500:63 | ... > ... | 1.0 | +| test.c:499:14:504:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:499:15:499:15 | 2 | 1.0 | +| test.c:499:15:499:15 | (unsigned int)... | 1.0 | +| test.c:499:15:499:20 | ... * ... | 10419.0 | +| test.c:499:15:499:24 | ... + ... | 10419.0 | +| test.c:499:19:499:20 | ip | 10419.0 | +| test.c:499:24:499:24 | 1 | 1.0 | +| test.c:499:24:499:24 | (unsigned int)... | 1.0 | +| test.c:499:29:499:30 | 14 | 1.0 | +| test.c:499:29:499:30 | (unsigned int)... | 1.0 | +| test.c:500:13:500:63 | (...) | 1.08555561E8 | +| test.c:500:14:500:15 | 14 | 1.0 | +| test.c:500:14:500:15 | (unsigned int)... | 1.0 | +| test.c:500:14:500:26 | ... * ... | 10419.0 | +| test.c:500:14:500:36 | ... > ... | 1.0 | +| test.c:500:14:500:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:500:19:500:26 | (...) | 10419.0 | +| test.c:500:20:500:20 | 2 | 1.0 | +| test.c:500:20:500:20 | (unsigned int)... | 1.0 | +| test.c:500:20:500:25 | ... * ... | 10419.0 | +| test.c:500:24:500:25 | ip | 10419.0 | +| test.c:500:30:500:31 | 17 | 1.0 | +| test.c:500:30:500:31 | (unsigned int)... | 1.0 | +| test.c:500:30:500:36 | ... * ... | 10419.0 | +| test.c:500:35:500:36 | ip | 10419.0 | +| test.c:500:40:500:41 | 17 | 1.0 | +| test.c:500:40:500:41 | (unsigned int)... | 1.0 | +| test.c:500:40:500:52 | ... * ... | 10419.0 | +| test.c:500:45:500:52 | (...) | 10419.0 | +| test.c:500:46:500:46 | 2 | 1.0 | +| test.c:500:46:500:46 | (unsigned int)... | 1.0 | +| test.c:500:46:500:51 | ... * ... | 10419.0 | +| test.c:500:50:500:51 | ip | 10419.0 | +| test.c:500:56:500:57 | 17 | 1.0 | +| test.c:500:56:500:57 | (unsigned int)... | 1.0 | +| test.c:500:56:500:62 | ... * ... | 10419.0 | +| test.c:500:61:500:62 | ip | 10419.0 | +| test.c:501:17:501:28 | (...) | 20839.0 | +| test.c:501:17:501:33 | ... * ... | 20839.0 | +| test.c:501:18:501:18 | 2 | 1.0 | +| test.c:501:18:501:18 | (unsigned int)... | 1.0 | +| test.c:501:18:501:23 | ... * ... | 20839.0 | +| test.c:501:18:501:27 | ... + ... | 20839.0 | +| test.c:501:22:501:23 | ip | 20839.0 | +| test.c:501:27:501:27 | 1 | 1.0 | +| test.c:501:27:501:27 | (unsigned int)... | 1.0 | +| test.c:501:32:501:33 | 14 | 1.0 | +| test.c:501:32:501:33 | (unsigned int)... | 1.0 | +| test.c:502:17:502:18 | 14 | 1.0 | +| test.c:502:17:502:18 | (unsigned int)... | 1.0 | +| test.c:502:17:502:29 | ... * ... | 20839.0 | +| test.c:502:17:502:39 | ... > ... | 1.0 | +| test.c:502:17:504:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:502:22:502:29 | (...) | 20839.0 | +| test.c:502:23:502:23 | 2 | 1.0 | +| test.c:502:23:502:23 | (unsigned int)... | 1.0 | +| test.c:502:23:502:28 | ... * ... | 20839.0 | +| test.c:502:27:502:28 | ip | 20839.0 | +| test.c:502:33:502:34 | 17 | 1.0 | +| test.c:502:33:502:34 | (unsigned int)... | 1.0 | +| test.c:502:33:502:39 | ... * ... | 20839.0 | +| test.c:502:38:502:39 | ip | 20839.0 | +| test.c:503:19:503:20 | 14 | 1.0 | +| test.c:503:19:503:20 | (unsigned int)... | 1.0 | +| test.c:503:19:503:31 | ... * ... | 20839.0 | +| test.c:503:24:503:31 | (...) | 20839.0 | +| test.c:503:25:503:25 | 2 | 1.0 | +| test.c:503:25:503:25 | (unsigned int)... | 1.0 | +| test.c:503:25:503:30 | ... * ... | 20839.0 | +| test.c:503:29:503:30 | ip | 20839.0 | +| test.c:504:19:504:20 | 14 | 1.0 | +| test.c:504:19:504:20 | (unsigned int)... | 1.0 | +| test.c:504:19:504:25 | ... * ... | 20839.0 | +| test.c:504:24:504:25 | ip | 20839.0 | +| test.c:505:11:505:61 | (...) | 3.908375289E9 | +| test.c:505:12:505:13 | 14 | 1.0 | +| test.c:505:12:505:13 | (unsigned int)... | 1.0 | +| test.c:505:12:505:18 | ... * ... | 62517.0 | +| test.c:505:12:505:34 | ... > ... | 1.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:505:17:505:18 | ip | 62517.0 | +| test.c:505:22:505:29 | (...) | 62517.0 | +| test.c:505:22:505:34 | ... * ... | 62517.0 | +| test.c:505:23:505:24 | ip | 62517.0 | +| test.c:505:23:505:28 | ... + ... | 62517.0 | +| test.c:505:28:505:28 | 1 | 1.0 | +| test.c:505:28:505:28 | (unsigned int)... | 1.0 | +| test.c:505:33:505:34 | 17 | 1.0 | +| test.c:505:33:505:34 | (unsigned int)... | 1.0 | +| test.c:505:38:505:39 | 17 | 1.0 | +| test.c:505:38:505:39 | (unsigned int)... | 1.0 | +| test.c:505:38:505:44 | ... * ... | 62517.0 | +| test.c:505:43:505:44 | ip | 62517.0 | +| test.c:505:48:505:55 | (...) | 62517.0 | +| test.c:505:48:505:60 | ... * ... | 62517.0 | +| test.c:505:49:505:50 | ip | 62517.0 | +| test.c:505:49:505:54 | ... + ... | 62517.0 | +| test.c:505:54:505:54 | 1 | 1.0 | +| test.c:505:54:505:54 | (unsigned int)... | 1.0 | +| test.c:505:59:505:60 | 17 | 1.0 | +| test.c:505:59:505:60 | (unsigned int)... | 1.0 | +| test.c:506:11:506:11 | 4 | 1.0 | +| test.c:506:11:506:11 | (unsigned int)... | 1.0 | +| test.c:506:11:506:28 | ... * ... | 125034.0 | +| test.c:506:11:507:28 | ... + ... | 1.5633501156E10 | +| test.c:506:11:508:28 | ... + ... | 1.954719183539304E15 | +| test.c:506:11:514:24 | ... + ... | 3.056778340269433E31 | +| test.c:506:15:506:28 | (...) | 125034.0 | +| test.c:506:16:506:17 | ip | 125034.0 | +| test.c:506:16:506:22 | ... * ... | 125034.0 | +| test.c:506:16:506:27 | ... + ... | 125034.0 | +| test.c:506:21:506:22 | 14 | 1.0 | +| test.c:506:21:506:22 | (unsigned int)... | 1.0 | +| test.c:506:26:506:27 | 32 | 1.0 | +| test.c:506:26:506:27 | (unsigned int)... | 1.0 | +| test.c:507:11:507:28 | (...) | 125034.0 | +| test.c:507:12:507:12 | 2 | 1.0 | +| test.c:507:12:507:12 | (unsigned int)... | 1.0 | +| test.c:507:12:507:17 | ... * ... | 125034.0 | +| test.c:507:12:507:22 | ... * ... | 125034.0 | +| test.c:507:12:507:27 | ... + ... | 125034.0 | +| test.c:507:16:507:17 | ip | 125034.0 | +| test.c:507:21:507:22 | 14 | 1.0 | +| test.c:507:21:507:22 | (unsigned int)... | 1.0 | +| test.c:507:26:507:27 | 32 | 1.0 | +| test.c:507:26:507:27 | (unsigned int)... | 1.0 | +| test.c:508:11:508:11 | 2 | 1.0 | +| test.c:508:11:508:11 | (unsigned int)... | 1.0 | +| test.c:508:11:508:28 | ... * ... | 125034.0 | +| test.c:508:15:508:28 | (...) | 125034.0 | +| test.c:508:16:508:17 | ip | 125034.0 | +| test.c:508:16:508:22 | ... * ... | 125034.0 | +| test.c:508:16:508:27 | ... + ... | 125034.0 | +| test.c:508:21:508:22 | 14 | 1.0 | +| test.c:508:21:508:22 | (unsigned int)... | 1.0 | +| test.c:508:26:508:27 | 64 | 1.0 | +| test.c:508:26:508:27 | (unsigned int)... | 1.0 | +| test.c:509:11:514:24 | (...) | 1.5637941071078508E16 | +| test.c:509:12:509:23 | (...) | 125034.0 | +| test.c:509:12:509:28 | ... * ... | 125034.0 | +| test.c:509:12:510:61 | ... > ... | 1.0 | +| test.c:509:12:514:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:509:13:509:13 | 2 | 1.0 | +| test.c:509:13:509:13 | (unsigned int)... | 1.0 | +| test.c:509:13:509:18 | ... * ... | 125034.0 | +| test.c:509:13:509:22 | ... + ... | 125034.0 | +| test.c:509:17:509:18 | ip | 125034.0 | +| test.c:509:22:509:22 | 1 | 1.0 | +| test.c:509:22:509:22 | (unsigned int)... | 1.0 | +| test.c:509:27:509:28 | 14 | 1.0 | +| test.c:509:27:509:28 | (unsigned int)... | 1.0 | +| test.c:510:11:510:61 | (...) | 1.5633501156E10 | +| test.c:510:12:510:13 | 14 | 1.0 | +| test.c:510:12:510:13 | (unsigned int)... | 1.0 | +| test.c:510:12:510:24 | ... * ... | 125034.0 | +| test.c:510:12:510:34 | ... > ... | 1.0 | +| test.c:510:12:510:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:510:17:510:24 | (...) | 125034.0 | +| test.c:510:18:510:18 | 2 | 1.0 | +| test.c:510:18:510:18 | (unsigned int)... | 1.0 | +| test.c:510:18:510:23 | ... * ... | 125034.0 | +| test.c:510:22:510:23 | ip | 125034.0 | +| test.c:510:28:510:29 | 17 | 1.0 | +| test.c:510:28:510:29 | (unsigned int)... | 1.0 | +| test.c:510:28:510:34 | ... * ... | 125034.0 | +| test.c:510:33:510:34 | ip | 125034.0 | +| test.c:510:38:510:39 | 17 | 1.0 | +| test.c:510:38:510:39 | (unsigned int)... | 1.0 | +| test.c:510:38:510:50 | ... * ... | 125034.0 | +| test.c:510:43:510:50 | (...) | 125034.0 | +| test.c:510:44:510:44 | 2 | 1.0 | +| test.c:510:44:510:44 | (unsigned int)... | 1.0 | +| test.c:510:44:510:49 | ... * ... | 125034.0 | +| test.c:510:48:510:49 | ip | 125034.0 | +| test.c:510:54:510:55 | 17 | 1.0 | +| test.c:510:54:510:55 | (unsigned int)... | 1.0 | +| test.c:510:54:510:60 | ... * ... | 125034.0 | +| test.c:510:59:510:60 | ip | 125034.0 | +| test.c:511:15:511:26 | (...) | 250069.0 | +| test.c:511:15:511:31 | ... * ... | 250069.0 | +| test.c:511:16:511:16 | 2 | 1.0 | +| test.c:511:16:511:16 | (unsigned int)... | 1.0 | +| test.c:511:16:511:21 | ... * ... | 250069.0 | +| test.c:511:16:511:25 | ... + ... | 250069.0 | +| test.c:511:20:511:21 | ip | 250069.0 | +| test.c:511:25:511:25 | 1 | 1.0 | +| test.c:511:25:511:25 | (unsigned int)... | 1.0 | +| test.c:511:30:511:31 | 14 | 1.0 | +| test.c:511:30:511:31 | (unsigned int)... | 1.0 | +| test.c:512:15:512:16 | 14 | 1.0 | +| test.c:512:15:512:16 | (unsigned int)... | 1.0 | +| test.c:512:15:512:27 | ... * ... | 250069.0 | +| test.c:512:15:512:37 | ... > ... | 1.0 | +| test.c:512:15:514:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:512:20:512:27 | (...) | 250069.0 | +| test.c:512:21:512:21 | 2 | 1.0 | +| test.c:512:21:512:21 | (unsigned int)... | 1.0 | +| test.c:512:21:512:26 | ... * ... | 250069.0 | +| test.c:512:25:512:26 | ip | 250069.0 | +| test.c:512:31:512:32 | 17 | 1.0 | +| test.c:512:31:512:32 | (unsigned int)... | 1.0 | +| test.c:512:31:512:37 | ... * ... | 250069.0 | +| test.c:512:36:512:37 | ip | 250069.0 | +| test.c:513:17:513:18 | 14 | 1.0 | +| test.c:513:17:513:18 | (unsigned int)... | 1.0 | +| test.c:513:17:513:29 | ... * ... | 250069.0 | +| test.c:513:22:513:29 | (...) | 250069.0 | +| test.c:513:23:513:23 | 2 | 1.0 | +| test.c:513:23:513:23 | (unsigned int)... | 1.0 | +| test.c:513:23:513:28 | ... * ... | 250069.0 | +| test.c:513:27:513:28 | ip | 250069.0 | +| test.c:514:17:514:18 | 14 | 1.0 | +| test.c:514:17:514:18 | (unsigned int)... | 1.0 | +| test.c:514:17:514:23 | ... * ... | 250069.0 | +| test.c:514:22:514:23 | ip | 250069.0 | +| test.c:515:11:515:12 | 14 | 1.0 | +| test.c:515:11:515:12 | (unsigned int)... | 1.0 | +| test.c:515:11:515:17 | ... * ... | 125034.0 | +| test.c:515:11:515:33 | ... > ... | 1.0 | +| test.c:515:11:517:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:515:16:515:17 | ip | 125034.0 | +| test.c:515:21:515:28 | (...) | 125034.0 | +| test.c:515:21:515:33 | ... * ... | 125034.0 | +| test.c:515:22:515:23 | ip | 125034.0 | +| test.c:515:22:515:27 | ... + ... | 125034.0 | +| test.c:515:27:515:27 | 1 | 1.0 | +| test.c:515:27:515:27 | (unsigned int)... | 1.0 | +| test.c:515:32:515:33 | 17 | 1.0 | +| test.c:515:32:515:33 | (unsigned int)... | 1.0 | +| test.c:516:13:516:14 | 14 | 1.0 | +| test.c:516:13:516:14 | (unsigned int)... | 1.0 | +| test.c:516:13:516:19 | ... * ... | 125034.0 | +| test.c:516:18:516:19 | ip | 125034.0 | +| test.c:517:13:517:20 | (...) | 125034.0 | +| test.c:517:13:517:25 | ... * ... | 125034.0 | +| test.c:517:14:517:15 | ip | 125034.0 | +| test.c:517:14:517:19 | ... + ... | 125034.0 | +| test.c:517:19:517:19 | 1 | 1.0 | +| test.c:517:19:517:19 | (unsigned int)... | 1.0 | +| test.c:517:24:517:25 | 14 | 1.0 | +| test.c:517:24:517:25 | (unsigned int)... | 1.0 | +| test.c:518:9:518:10 | 14 | 1.0 | +| test.c:518:9:518:10 | (unsigned int)... | 1.0 | +| test.c:518:9:518:15 | ... * ... | 1437897.0 | +| test.c:518:9:518:59 | ... > ... | 1.0 | +| test.c:518:9:520:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:518:14:518:15 | ip | 1437897.0 | +| test.c:518:19:518:30 | (...) | 1437897.0 | +| test.c:518:19:518:35 | ... * ... | 1437897.0 | +| test.c:518:19:518:59 | ... + ... | 2.067547782609E12 | +| test.c:518:20:518:20 | 2 | 1.0 | +| test.c:518:20:518:20 | (unsigned int)... | 1.0 | +| test.c:518:20:518:25 | ... * ... | 1437897.0 | +| test.c:518:20:518:29 | ... + ... | 1437897.0 | +| test.c:518:24:518:25 | ip | 1437897.0 | +| test.c:518:29:518:29 | 1 | 1.0 | +| test.c:518:29:518:29 | (unsigned int)... | 1.0 | +| test.c:518:34:518:35 | 17 | 1.0 | +| test.c:518:34:518:35 | (unsigned int)... | 1.0 | +| test.c:518:39:518:54 | (...) | 1437897.0 | +| test.c:518:39:518:59 | ... * ... | 1437897.0 | +| test.c:518:40:518:40 | 2 | 1.0 | +| test.c:518:40:518:40 | (unsigned int)... | 1.0 | +| test.c:518:40:518:45 | ... * ... | 1437897.0 | +| test.c:518:40:518:49 | ... + ... | 1437897.0 | +| test.c:518:40:518:53 | ... + ... | 1437897.0 | +| test.c:518:44:518:45 | ip | 1437897.0 | +| test.c:518:49:518:49 | 1 | 1.0 | +| test.c:518:49:518:49 | (unsigned int)... | 1.0 | +| test.c:518:53:518:53 | 1 | 1.0 | +| test.c:518:53:518:53 | (unsigned int)... | 1.0 | +| test.c:518:58:518:59 | 17 | 1.0 | +| test.c:518:58:518:59 | (unsigned int)... | 1.0 | +| test.c:519:11:519:12 | 14 | 1.0 | +| test.c:519:11:519:12 | (unsigned int)... | 1.0 | +| test.c:519:11:519:17 | ... * ... | 1437897.0 | +| test.c:519:16:519:17 | ip | 1437897.0 | +| test.c:520:11:520:22 | (...) | 1437897.0 | +| test.c:520:11:520:27 | ... * ... | 1437897.0 | +| test.c:520:11:520:51 | ... + ... | 2.067547782609E12 | +| test.c:520:12:520:12 | 2 | 1.0 | +| test.c:520:12:520:12 | (unsigned int)... | 1.0 | +| test.c:520:12:520:17 | ... * ... | 1437897.0 | +| test.c:520:12:520:21 | ... + ... | 1437897.0 | +| test.c:520:16:520:17 | ip | 1437897.0 | +| test.c:520:21:520:21 | 1 | 1.0 | +| test.c:520:21:520:21 | (unsigned int)... | 1.0 | +| test.c:520:26:520:27 | 14 | 1.0 | +| test.c:520:26:520:27 | (unsigned int)... | 1.0 | +| test.c:520:31:520:46 | (...) | 1437897.0 | +| test.c:520:31:520:51 | ... * ... | 1437897.0 | +| test.c:520:32:520:32 | 2 | 1.0 | +| test.c:520:32:520:32 | (unsigned int)... | 1.0 | +| test.c:520:32:520:37 | ... * ... | 1437897.0 | +| test.c:520:32:520:41 | ... + ... | 1437897.0 | +| test.c:520:32:520:45 | ... + ... | 1437897.0 | +| test.c:520:36:520:37 | ip | 1437897.0 | +| test.c:520:41:520:41 | 1 | 1.0 | +| test.c:520:41:520:41 | (unsigned int)... | 1.0 | +| test.c:520:45:520:45 | 1 | 1.0 | +| test.c:520:45:520:45 | (unsigned int)... | 1.0 | +| test.c:520:50:520:51 | 17 | 1.0 | +| test.c:520:50:520:51 | (unsigned int)... | 1.0 | +| test.c:521:9:521:9 | 2 | 1.0 | +| test.c:521:9:521:9 | (unsigned int)... | 1.0 | +| test.c:521:9:521:26 | ... * ... | 1437897.0 | +| test.c:521:9:541:48 | ... + ... | 3.5306223994138077E62 | +| test.c:521:9:563:30 | ... > ... | 1.0 | +| test.c:521:9:606:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:521:13:521:26 | (...) | 1437897.0 | +| test.c:521:14:521:15 | ip | 1437897.0 | +| test.c:521:14:521:20 | ... * ... | 1437897.0 | +| test.c:521:14:521:25 | ... + ... | 1437897.0 | +| test.c:521:19:521:20 | 14 | 1.0 | +| test.c:521:19:521:20 | (unsigned int)... | 1.0 | +| test.c:521:24:521:25 | 32 | 1.0 | +| test.c:521:24:521:25 | (unsigned int)... | 1.0 | +| test.c:522:13:541:48 | (...) | 2.4554070280512497E56 | +| test.c:522:14:522:14 | 4 | 1.0 | +| test.c:522:14:522:14 | (unsigned int)... | 1.0 | +| test.c:522:14:522:31 | ... * ... | 1437897.0 | +| test.c:522:14:523:32 | ... + ... | 2.067547782609E12 | +| test.c:522:14:524:32 | ... + ... | 2.9729207539701335E18 | +| test.c:522:14:530:28 | ... + ... | 7.070613623498497E37 | +| test.c:522:14:531:43 | ... > ... | 1.0 | +| test.c:522:14:541:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:522:18:522:31 | (...) | 1437897.0 | +| test.c:522:19:522:20 | ip | 1437897.0 | +| test.c:522:19:522:25 | ... * ... | 1437897.0 | +| test.c:522:19:522:30 | ... + ... | 1437897.0 | +| test.c:522:24:522:25 | 14 | 1.0 | +| test.c:522:24:522:25 | (unsigned int)... | 1.0 | +| test.c:522:29:522:30 | 32 | 1.0 | +| test.c:522:29:522:30 | (unsigned int)... | 1.0 | +| test.c:523:15:523:32 | (...) | 1437897.0 | +| test.c:523:16:523:16 | 2 | 1.0 | +| test.c:523:16:523:16 | (unsigned int)... | 1.0 | +| test.c:523:16:523:21 | ... * ... | 1437897.0 | +| test.c:523:16:523:26 | ... * ... | 1437897.0 | +| test.c:523:16:523:31 | ... + ... | 1437897.0 | +| test.c:523:20:523:21 | ip | 1437897.0 | +| test.c:523:25:523:26 | 14 | 1.0 | +| test.c:523:25:523:26 | (unsigned int)... | 1.0 | +| test.c:523:30:523:31 | 32 | 1.0 | +| test.c:523:30:523:31 | (unsigned int)... | 1.0 | +| test.c:524:15:524:15 | 2 | 1.0 | +| test.c:524:15:524:15 | (unsigned int)... | 1.0 | +| test.c:524:15:524:32 | ... * ... | 1437897.0 | +| test.c:524:19:524:32 | (...) | 1437897.0 | +| test.c:524:20:524:21 | ip | 1437897.0 | +| test.c:524:20:524:26 | ... * ... | 1437897.0 | +| test.c:524:20:524:31 | ... + ... | 1437897.0 | +| test.c:524:25:524:26 | 14 | 1.0 | +| test.c:524:25:524:26 | (unsigned int)... | 1.0 | +| test.c:524:30:524:31 | 64 | 1.0 | +| test.c:524:30:524:31 | (unsigned int)... | 1.0 | +| test.c:525:15:530:28 | (...) | 2.3783390842343084E19 | +| test.c:525:16:525:27 | (...) | 1437897.0 | +| test.c:525:16:525:32 | ... * ... | 1437897.0 | +| test.c:525:16:526:65 | ... > ... | 1.0 | +| test.c:525:16:530:27 | ... ? ... : ... | 2.3783390842343084E19 | +| test.c:525:17:525:17 | 2 | 1.0 | +| test.c:525:17:525:17 | (unsigned int)... | 1.0 | +| test.c:525:17:525:22 | ... * ... | 1437897.0 | +| test.c:525:17:525:26 | ... + ... | 1437897.0 | +| test.c:525:21:525:22 | ip | 1437897.0 | +| test.c:525:26:525:26 | 1 | 1.0 | +| test.c:525:26:525:26 | (unsigned int)... | 1.0 | +| test.c:525:31:525:32 | 14 | 1.0 | +| test.c:525:31:525:32 | (unsigned int)... | 1.0 | +| test.c:526:15:526:65 | (...) | 2.067547782609E12 | +| test.c:526:16:526:17 | 14 | 1.0 | +| test.c:526:16:526:17 | (unsigned int)... | 1.0 | +| test.c:526:16:526:28 | ... * ... | 1437897.0 | +| test.c:526:16:526:38 | ... > ... | 1.0 | +| test.c:526:16:526:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:526:21:526:28 | (...) | 1437897.0 | +| test.c:526:22:526:22 | 2 | 1.0 | +| test.c:526:22:526:22 | (unsigned int)... | 1.0 | +| test.c:526:22:526:27 | ... * ... | 1437897.0 | +| test.c:526:26:526:27 | ip | 1437897.0 | +| test.c:526:32:526:33 | 17 | 1.0 | +| test.c:526:32:526:33 | (unsigned int)... | 1.0 | +| test.c:526:32:526:38 | ... * ... | 1437897.0 | +| test.c:526:37:526:38 | ip | 1437897.0 | +| test.c:526:42:526:43 | 17 | 1.0 | +| test.c:526:42:526:43 | (unsigned int)... | 1.0 | +| test.c:526:42:526:54 | ... * ... | 1437897.0 | +| test.c:526:47:526:54 | (...) | 1437897.0 | +| test.c:526:48:526:48 | 2 | 1.0 | +| test.c:526:48:526:48 | (unsigned int)... | 1.0 | +| test.c:526:48:526:53 | ... * ... | 1437897.0 | +| test.c:526:52:526:53 | ip | 1437897.0 | +| test.c:526:58:526:59 | 17 | 1.0 | +| test.c:526:58:526:59 | (unsigned int)... | 1.0 | +| test.c:526:58:526:64 | ... * ... | 1437897.0 | +| test.c:526:63:526:64 | ip | 1437897.0 | +| test.c:527:19:527:30 | (...) | 2875795.0 | +| test.c:527:19:527:35 | ... * ... | 2875795.0 | +| test.c:527:20:527:20 | 2 | 1.0 | +| test.c:527:20:527:20 | (unsigned int)... | 1.0 | +| test.c:527:20:527:25 | ... * ... | 2875795.0 | +| test.c:527:20:527:29 | ... + ... | 2875795.0 | +| test.c:527:24:527:25 | ip | 2875795.0 | +| test.c:527:29:527:29 | 1 | 1.0 | +| test.c:527:29:527:29 | (unsigned int)... | 1.0 | +| test.c:527:34:527:35 | 14 | 1.0 | +| test.c:527:34:527:35 | (unsigned int)... | 1.0 | +| test.c:528:19:528:20 | 14 | 1.0 | +| test.c:528:19:528:20 | (unsigned int)... | 1.0 | +| test.c:528:19:528:31 | ... * ... | 2875795.0 | +| test.c:528:19:528:41 | ... > ... | 1.0 | +| test.c:528:19:530:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:528:24:528:31 | (...) | 2875795.0 | +| test.c:528:25:528:25 | 2 | 1.0 | +| test.c:528:25:528:25 | (unsigned int)... | 1.0 | +| test.c:528:25:528:30 | ... * ... | 2875795.0 | +| test.c:528:29:528:30 | ip | 2875795.0 | +| test.c:528:35:528:36 | 17 | 1.0 | +| test.c:528:35:528:36 | (unsigned int)... | 1.0 | +| test.c:528:35:528:41 | ... * ... | 2875795.0 | +| test.c:528:40:528:41 | ip | 2875795.0 | +| test.c:529:21:529:22 | 14 | 1.0 | +| test.c:529:21:529:22 | (unsigned int)... | 1.0 | +| test.c:529:21:529:33 | ... * ... | 2875795.0 | +| test.c:529:26:529:33 | (...) | 2875795.0 | +| test.c:529:27:529:27 | 2 | 1.0 | +| test.c:529:27:529:27 | (unsigned int)... | 1.0 | +| test.c:529:27:529:32 | ... * ... | 2875795.0 | +| test.c:529:31:529:32 | ip | 2875795.0 | +| test.c:530:21:530:22 | 14 | 1.0 | +| test.c:530:21:530:22 | (unsigned int)... | 1.0 | +| test.c:530:21:530:27 | ... * ... | 2875795.0 | +| test.c:530:26:530:27 | ip | 2875795.0 | +| test.c:531:13:531:13 | 2 | 1.0 | +| test.c:531:13:531:13 | (unsigned int)... | 1.0 | +| test.c:531:13:531:18 | ... * ... | 8627385.0 | +| test.c:531:13:531:23 | ... * ... | 8627385.0 | +| test.c:531:13:531:43 | ... + ... | 7.4431771938225E13 | +| test.c:531:17:531:18 | ip | 8627385.0 | +| test.c:531:22:531:23 | 14 | 1.0 | +| test.c:531:22:531:23 | (unsigned int)... | 1.0 | +| test.c:531:27:531:38 | (...) | 8627385.0 | +| test.c:531:27:531:43 | ... * ... | 8627385.0 | +| test.c:531:28:531:28 | 2 | 1.0 | +| test.c:531:28:531:28 | (unsigned int)... | 1.0 | +| test.c:531:28:531:33 | ... * ... | 8627385.0 | +| test.c:531:28:531:37 | ... + ... | 8627385.0 | +| test.c:531:32:531:33 | ip | 8627385.0 | +| test.c:531:37:531:37 | 1 | 1.0 | +| test.c:531:37:531:37 | (unsigned int)... | 1.0 | +| test.c:531:42:531:43 | 17 | 1.0 | +| test.c:531:42:531:43 | (unsigned int)... | 1.0 | +| test.c:532:17:532:17 | 4 | 1.0 | +| test.c:532:17:532:17 | (unsigned int)... | 1.0 | +| test.c:532:17:532:34 | ... * ... | 8627385.0 | +| test.c:532:17:533:34 | ... + ... | 7.4431771938225E13 | +| test.c:532:17:534:34 | ... + ... | 6.421515527432633E20 | +| test.c:532:17:540:30 | ... + ... | 3.298869507082441E42 | +| test.c:532:21:532:34 | (...) | 8627385.0 | +| test.c:532:22:532:23 | ip | 8627385.0 | +| test.c:532:22:532:28 | ... * ... | 8627385.0 | +| test.c:532:22:532:33 | ... + ... | 8627385.0 | +| test.c:532:27:532:28 | 14 | 1.0 | +| test.c:532:27:532:28 | (unsigned int)... | 1.0 | +| test.c:532:32:532:33 | 32 | 1.0 | +| test.c:532:32:532:33 | (unsigned int)... | 1.0 | +| test.c:533:17:533:34 | (...) | 8627385.0 | +| test.c:533:18:533:18 | 2 | 1.0 | +| test.c:533:18:533:18 | (unsigned int)... | 1.0 | +| test.c:533:18:533:23 | ... * ... | 8627385.0 | +| test.c:533:18:533:28 | ... * ... | 8627385.0 | +| test.c:533:18:533:33 | ... + ... | 8627385.0 | +| test.c:533:22:533:23 | ip | 8627385.0 | +| test.c:533:27:533:28 | 14 | 1.0 | +| test.c:533:27:533:28 | (unsigned int)... | 1.0 | +| test.c:533:32:533:33 | 32 | 1.0 | +| test.c:533:32:533:33 | (unsigned int)... | 1.0 | +| test.c:534:17:534:17 | 2 | 1.0 | +| test.c:534:17:534:17 | (unsigned int)... | 1.0 | +| test.c:534:17:534:34 | ... * ... | 8627385.0 | +| test.c:534:21:534:34 | (...) | 8627385.0 | +| test.c:534:22:534:23 | ip | 8627385.0 | +| test.c:534:22:534:28 | ... * ... | 8627385.0 | +| test.c:534:22:534:33 | ... + ... | 8627385.0 | +| test.c:534:27:534:28 | 14 | 1.0 | +| test.c:534:27:534:28 | (unsigned int)... | 1.0 | +| test.c:534:32:534:33 | 64 | 1.0 | +| test.c:534:32:534:33 | (unsigned int)... | 1.0 | +| test.c:535:17:540:30 | (...) | 5.137213315127421E21 | +| test.c:535:18:535:29 | (...) | 8627385.0 | +| test.c:535:18:535:34 | ... * ... | 8627385.0 | +| test.c:535:18:536:67 | ... > ... | 1.0 | +| test.c:535:18:540:29 | ... ? ... : ... | 5.137213315127421E21 | +| test.c:535:19:535:19 | 2 | 1.0 | +| test.c:535:19:535:19 | (unsigned int)... | 1.0 | +| test.c:535:19:535:24 | ... * ... | 8627385.0 | +| test.c:535:19:535:28 | ... + ... | 8627385.0 | +| test.c:535:23:535:24 | ip | 8627385.0 | +| test.c:535:28:535:28 | 1 | 1.0 | +| test.c:535:28:535:28 | (unsigned int)... | 1.0 | +| test.c:535:33:535:34 | 14 | 1.0 | +| test.c:535:33:535:34 | (unsigned int)... | 1.0 | +| test.c:536:17:536:67 | (...) | 7.4431771938225E13 | +| test.c:536:18:536:19 | 14 | 1.0 | +| test.c:536:18:536:19 | (unsigned int)... | 1.0 | +| test.c:536:18:536:30 | ... * ... | 8627385.0 | +| test.c:536:18:536:40 | ... > ... | 1.0 | +| test.c:536:18:536:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:536:23:536:30 | (...) | 8627385.0 | +| test.c:536:24:536:24 | 2 | 1.0 | +| test.c:536:24:536:24 | (unsigned int)... | 1.0 | +| test.c:536:24:536:29 | ... * ... | 8627385.0 | +| test.c:536:28:536:29 | ip | 8627385.0 | +| test.c:536:34:536:35 | 17 | 1.0 | +| test.c:536:34:536:35 | (unsigned int)... | 1.0 | +| test.c:536:34:536:40 | ... * ... | 8627385.0 | +| test.c:536:39:536:40 | ip | 8627385.0 | +| test.c:536:44:536:45 | 17 | 1.0 | +| test.c:536:44:536:45 | (unsigned int)... | 1.0 | +| test.c:536:44:536:56 | ... * ... | 8627385.0 | +| test.c:536:49:536:56 | (...) | 8627385.0 | +| test.c:536:50:536:50 | 2 | 1.0 | +| test.c:536:50:536:50 | (unsigned int)... | 1.0 | +| test.c:536:50:536:55 | ... * ... | 8627385.0 | +| test.c:536:54:536:55 | ip | 8627385.0 | +| test.c:536:60:536:61 | 17 | 1.0 | +| test.c:536:60:536:61 | (unsigned int)... | 1.0 | +| test.c:536:60:536:66 | ... * ... | 8627385.0 | +| test.c:536:65:536:66 | ip | 8627385.0 | +| test.c:537:21:537:32 | (...) | 1.7254771E7 | +| test.c:537:21:537:37 | ... * ... | 1.7254771E7 | +| test.c:537:22:537:22 | 2 | 1.0 | +| test.c:537:22:537:22 | (unsigned int)... | 1.0 | +| test.c:537:22:537:27 | ... * ... | 1.7254771E7 | +| test.c:537:22:537:31 | ... + ... | 1.7254771E7 | +| test.c:537:26:537:27 | ip | 1.7254771E7 | +| test.c:537:31:537:31 | 1 | 1.0 | +| test.c:537:31:537:31 | (unsigned int)... | 1.0 | +| test.c:537:36:537:37 | 14 | 1.0 | +| test.c:537:36:537:37 | (unsigned int)... | 1.0 | +| test.c:538:21:538:22 | 14 | 1.0 | +| test.c:538:21:538:22 | (unsigned int)... | 1.0 | +| test.c:538:21:538:33 | ... * ... | 1.7254771E7 | +| test.c:538:21:538:43 | ... > ... | 1.0 | +| test.c:538:21:540:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:538:26:538:33 | (...) | 1.7254771E7 | +| test.c:538:27:538:27 | 2 | 1.0 | +| test.c:538:27:538:27 | (unsigned int)... | 1.0 | +| test.c:538:27:538:32 | ... * ... | 1.7254771E7 | +| test.c:538:31:538:32 | ip | 1.7254771E7 | +| test.c:538:37:538:38 | 17 | 1.0 | +| test.c:538:37:538:38 | (unsigned int)... | 1.0 | +| test.c:538:37:538:43 | ... * ... | 1.7254771E7 | +| test.c:538:42:538:43 | ip | 1.7254771E7 | +| test.c:539:23:539:24 | 14 | 1.0 | +| test.c:539:23:539:24 | (unsigned int)... | 1.0 | +| test.c:539:23:539:35 | ... * ... | 1.7254771E7 | +| test.c:539:28:539:35 | (...) | 1.7254771E7 | +| test.c:539:29:539:29 | 2 | 1.0 | +| test.c:539:29:539:29 | (unsigned int)... | 1.0 | +| test.c:539:29:539:34 | ... * ... | 1.7254771E7 | +| test.c:539:33:539:34 | ip | 1.7254771E7 | +| test.c:540:23:540:24 | 14 | 1.0 | +| test.c:540:23:540:24 | (unsigned int)... | 1.0 | +| test.c:540:23:540:29 | ... * ... | 1.7254771E7 | +| test.c:540:28:540:29 | ip | 1.7254771E7 | +| test.c:541:17:541:17 | 2 | 1.0 | +| test.c:541:17:541:17 | (unsigned int)... | 1.0 | +| test.c:541:17:541:22 | ... * ... | 8627385.0 | +| test.c:541:17:541:27 | ... * ... | 8627385.0 | +| test.c:541:17:541:47 | ... + ... | 7.4431771938225E13 | +| test.c:541:21:541:22 | ip | 8627385.0 | +| test.c:541:26:541:27 | 14 | 1.0 | +| test.c:541:26:541:27 | (unsigned int)... | 1.0 | +| test.c:541:31:541:42 | (...) | 8627385.0 | +| test.c:541:31:541:47 | ... * ... | 8627385.0 | +| test.c:541:32:541:32 | 2 | 1.0 | +| test.c:541:32:541:32 | (unsigned int)... | 1.0 | +| test.c:541:32:541:37 | ... * ... | 8627385.0 | +| test.c:541:32:541:41 | ... + ... | 8627385.0 | +| test.c:541:36:541:37 | ip | 8627385.0 | +| test.c:541:41:541:41 | 1 | 1.0 | +| test.c:541:41:541:41 | (unsigned int)... | 1.0 | +| test.c:541:46:541:47 | 17 | 1.0 | +| test.c:541:46:541:47 | (unsigned int)... | 1.0 | +| test.c:542:11:563:30 | (...) | 6.08636382738973E71 | +| test.c:542:12:542:12 | 4 | 1.0 | +| test.c:542:12:542:12 | (unsigned int)... | 1.0 | +| test.c:542:12:542:29 | ... * ... | 6.0391698E7 | +| test.c:542:12:543:30 | ... + ... | 3.647157187323204E15 | +| test.c:542:12:544:30 | ... + ... | 2.2025801541535236E23 | +| test.c:542:12:550:26 | ... + ... | 3.881087564774641E47 | +| test.c:542:12:551:61 | ... > ... | 1.0 | +| test.c:542:12:563:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:542:16:542:29 | (...) | 6.0391698E7 | +| test.c:542:17:542:18 | ip | 6.0391698E7 | +| test.c:542:17:542:23 | ... * ... | 6.0391698E7 | +| test.c:542:17:542:28 | ... + ... | 6.0391698E7 | +| test.c:542:22:542:23 | 14 | 1.0 | +| test.c:542:22:542:23 | (unsigned int)... | 1.0 | +| test.c:542:27:542:28 | 32 | 1.0 | +| test.c:542:27:542:28 | (unsigned int)... | 1.0 | +| test.c:543:13:543:30 | (...) | 6.0391698E7 | +| test.c:543:14:543:14 | 2 | 1.0 | +| test.c:543:14:543:14 | (unsigned int)... | 1.0 | +| test.c:543:14:543:19 | ... * ... | 6.0391698E7 | +| test.c:543:14:543:24 | ... * ... | 6.0391698E7 | +| test.c:543:14:543:29 | ... + ... | 6.0391698E7 | +| test.c:543:18:543:19 | ip | 6.0391698E7 | +| test.c:543:23:543:24 | 14 | 1.0 | +| test.c:543:23:543:24 | (unsigned int)... | 1.0 | +| test.c:543:28:543:29 | 32 | 1.0 | +| test.c:543:28:543:29 | (unsigned int)... | 1.0 | +| test.c:544:13:544:13 | 2 | 1.0 | +| test.c:544:13:544:13 | (unsigned int)... | 1.0 | +| test.c:544:13:544:30 | ... * ... | 6.0391698E7 | +| test.c:544:17:544:30 | (...) | 6.0391698E7 | +| test.c:544:18:544:19 | ip | 6.0391698E7 | +| test.c:544:18:544:24 | ... * ... | 6.0391698E7 | +| test.c:544:18:544:29 | ... + ... | 6.0391698E7 | +| test.c:544:23:544:24 | 14 | 1.0 | +| test.c:544:23:544:24 | (unsigned int)... | 1.0 | +| test.c:544:28:544:29 | 64 | 1.0 | +| test.c:544:28:544:29 | (unsigned int)... | 1.0 | +| test.c:545:13:550:26 | (...) | 1.7620641670887053E24 | +| test.c:545:14:545:25 | (...) | 6.0391698E7 | +| test.c:545:14:545:30 | ... * ... | 6.0391698E7 | +| test.c:545:14:546:63 | ... > ... | 1.0 | +| test.c:545:14:550:25 | ... ? ... : ... | 1.7620641670887053E24 | +| test.c:545:15:545:15 | 2 | 1.0 | +| test.c:545:15:545:15 | (unsigned int)... | 1.0 | +| test.c:545:15:545:20 | ... * ... | 6.0391698E7 | +| test.c:545:15:545:24 | ... + ... | 6.0391698E7 | +| test.c:545:19:545:20 | ip | 6.0391698E7 | +| test.c:545:24:545:24 | 1 | 1.0 | +| test.c:545:24:545:24 | (unsigned int)... | 1.0 | +| test.c:545:29:545:30 | 14 | 1.0 | +| test.c:545:29:545:30 | (unsigned int)... | 1.0 | +| test.c:546:13:546:63 | (...) | 3.647157187323204E15 | +| test.c:546:14:546:15 | 14 | 1.0 | +| test.c:546:14:546:15 | (unsigned int)... | 1.0 | +| test.c:546:14:546:26 | ... * ... | 6.0391698E7 | +| test.c:546:14:546:36 | ... > ... | 1.0 | +| test.c:546:14:546:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:546:19:546:26 | (...) | 6.0391698E7 | +| test.c:546:20:546:20 | 2 | 1.0 | +| test.c:546:20:546:20 | (unsigned int)... | 1.0 | +| test.c:546:20:546:25 | ... * ... | 6.0391698E7 | +| test.c:546:24:546:25 | ip | 6.0391698E7 | +| test.c:546:30:546:31 | 17 | 1.0 | +| test.c:546:30:546:31 | (unsigned int)... | 1.0 | +| test.c:546:30:546:36 | ... * ... | 6.0391698E7 | +| test.c:546:35:546:36 | ip | 6.0391698E7 | +| test.c:546:40:546:41 | 17 | 1.0 | +| test.c:546:40:546:41 | (unsigned int)... | 1.0 | +| test.c:546:40:546:52 | ... * ... | 6.0391698E7 | +| test.c:546:45:546:52 | (...) | 6.0391698E7 | +| test.c:546:46:546:46 | 2 | 1.0 | +| test.c:546:46:546:46 | (unsigned int)... | 1.0 | +| test.c:546:46:546:51 | ... * ... | 6.0391698E7 | +| test.c:546:50:546:51 | ip | 6.0391698E7 | +| test.c:546:56:546:57 | 17 | 1.0 | +| test.c:546:56:546:57 | (unsigned int)... | 1.0 | +| test.c:546:56:546:62 | ... * ... | 6.0391698E7 | +| test.c:546:61:546:62 | ip | 6.0391698E7 | +| test.c:547:17:547:28 | (...) | 1.20783397E8 | +| test.c:547:17:547:33 | ... * ... | 1.20783397E8 | +| test.c:547:18:547:18 | 2 | 1.0 | +| test.c:547:18:547:18 | (unsigned int)... | 1.0 | +| test.c:547:18:547:23 | ... * ... | 1.20783397E8 | +| test.c:547:18:547:27 | ... + ... | 1.20783397E8 | +| test.c:547:22:547:23 | ip | 1.20783397E8 | +| test.c:547:27:547:27 | 1 | 1.0 | +| test.c:547:27:547:27 | (unsigned int)... | 1.0 | +| test.c:547:32:547:33 | 14 | 1.0 | +| test.c:547:32:547:33 | (unsigned int)... | 1.0 | +| test.c:548:17:548:18 | 14 | 1.0 | +| test.c:548:17:548:18 | (unsigned int)... | 1.0 | +| test.c:548:17:548:29 | ... * ... | 1.20783397E8 | +| test.c:548:17:548:39 | ... > ... | 1.0 | +| test.c:548:17:550:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:548:22:548:29 | (...) | 1.20783397E8 | +| test.c:548:23:548:23 | 2 | 1.0 | +| test.c:548:23:548:23 | (unsigned int)... | 1.0 | +| test.c:548:23:548:28 | ... * ... | 1.20783397E8 | +| test.c:548:27:548:28 | ip | 1.20783397E8 | +| test.c:548:33:548:34 | 17 | 1.0 | +| test.c:548:33:548:34 | (unsigned int)... | 1.0 | +| test.c:548:33:548:39 | ... * ... | 1.20783397E8 | +| test.c:548:38:548:39 | ip | 1.20783397E8 | +| test.c:549:19:549:20 | 14 | 1.0 | +| test.c:549:19:549:20 | (unsigned int)... | 1.0 | +| test.c:549:19:549:31 | ... * ... | 1.20783397E8 | +| test.c:549:24:549:31 | (...) | 1.20783397E8 | +| test.c:549:25:549:25 | 2 | 1.0 | +| test.c:549:25:549:25 | (unsigned int)... | 1.0 | +| test.c:549:25:549:30 | ... * ... | 1.20783397E8 | +| test.c:549:29:549:30 | ip | 1.20783397E8 | +| test.c:550:19:550:20 | 14 | 1.0 | +| test.c:550:19:550:20 | (unsigned int)... | 1.0 | +| test.c:550:19:550:25 | ... * ... | 1.20783397E8 | +| test.c:550:24:550:25 | ip | 1.20783397E8 | +| test.c:551:11:551:61 | (...) | 1.3129766091773648E17 | +| test.c:551:12:551:13 | 14 | 1.0 | +| test.c:551:12:551:13 | (unsigned int)... | 1.0 | +| test.c:551:12:551:18 | ... * ... | 3.62350191E8 | +| test.c:551:12:551:34 | ... > ... | 1.0 | +| test.c:551:12:551:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:551:17:551:18 | ip | 3.62350191E8 | +| test.c:551:22:551:29 | (...) | 3.62350191E8 | +| test.c:551:22:551:34 | ... * ... | 3.62350191E8 | +| test.c:551:23:551:24 | ip | 3.62350191E8 | +| test.c:551:23:551:28 | ... + ... | 3.62350191E8 | +| test.c:551:28:551:28 | 1 | 1.0 | +| test.c:551:28:551:28 | (unsigned int)... | 1.0 | +| test.c:551:33:551:34 | 17 | 1.0 | +| test.c:551:33:551:34 | (unsigned int)... | 1.0 | +| test.c:551:38:551:39 | 17 | 1.0 | +| test.c:551:38:551:39 | (unsigned int)... | 1.0 | +| test.c:551:38:551:44 | ... * ... | 3.62350191E8 | +| test.c:551:43:551:44 | ip | 3.62350191E8 | +| test.c:551:48:551:55 | (...) | 3.62350191E8 | +| test.c:551:48:551:60 | ... * ... | 3.62350191E8 | +| test.c:551:49:551:50 | ip | 3.62350191E8 | +| test.c:551:49:551:54 | ... + ... | 3.62350191E8 | +| test.c:551:54:551:54 | 1 | 1.0 | +| test.c:551:54:551:54 | (unsigned int)... | 1.0 | +| test.c:551:59:551:60 | 17 | 1.0 | +| test.c:551:59:551:60 | (unsigned int)... | 1.0 | +| test.c:552:15:552:15 | 4 | 1.0 | +| test.c:552:15:552:15 | (unsigned int)... | 1.0 | +| test.c:552:15:552:32 | ... * ... | 7.24700382E8 | +| test.c:552:15:553:32 | ... + ... | 5.251906436709459E17 | +| test.c:552:15:554:32 | ... + ... | 3.806058600911604E26 | +| test.c:552:15:560:28 | ... + ... | 1.1588865682845433E54 | +| test.c:552:19:552:32 | (...) | 7.24700382E8 | +| test.c:552:20:552:21 | ip | 7.24700382E8 | +| test.c:552:20:552:26 | ... * ... | 7.24700382E8 | +| test.c:552:20:552:31 | ... + ... | 7.24700382E8 | +| test.c:552:25:552:26 | 14 | 1.0 | +| test.c:552:25:552:26 | (unsigned int)... | 1.0 | +| test.c:552:30:552:31 | 32 | 1.0 | +| test.c:552:30:552:31 | (unsigned int)... | 1.0 | +| test.c:553:15:553:32 | (...) | 7.24700382E8 | +| test.c:553:16:553:16 | 2 | 1.0 | +| test.c:553:16:553:16 | (unsigned int)... | 1.0 | +| test.c:553:16:553:21 | ... * ... | 7.24700382E8 | +| test.c:553:16:553:26 | ... * ... | 7.24700382E8 | +| test.c:553:16:553:31 | ... + ... | 7.24700382E8 | +| test.c:553:20:553:21 | ip | 7.24700382E8 | +| test.c:553:25:553:26 | 14 | 1.0 | +| test.c:553:25:553:26 | (unsigned int)... | 1.0 | +| test.c:553:30:553:31 | 32 | 1.0 | +| test.c:553:30:553:31 | (unsigned int)... | 1.0 | +| test.c:554:15:554:15 | 2 | 1.0 | +| test.c:554:15:554:15 | (unsigned int)... | 1.0 | +| test.c:554:15:554:32 | ... * ... | 7.24700382E8 | +| test.c:554:19:554:32 | (...) | 7.24700382E8 | +| test.c:554:20:554:21 | ip | 7.24700382E8 | +| test.c:554:20:554:26 | ... * ... | 7.24700382E8 | +| test.c:554:20:554:31 | ... + ... | 7.24700382E8 | +| test.c:554:25:554:26 | 14 | 1.0 | +| test.c:554:25:554:26 | (unsigned int)... | 1.0 | +| test.c:554:30:554:31 | 64 | 1.0 | +| test.c:554:30:554:31 | (unsigned int)... | 1.0 | +| test.c:555:15:560:28 | (...) | 3.044846887031571E27 | +| test.c:555:16:555:27 | (...) | 7.24700382E8 | +| test.c:555:16:555:32 | ... * ... | 7.24700382E8 | +| test.c:555:16:556:65 | ... > ... | 1.0 | +| test.c:555:16:560:27 | ... ? ... : ... | 3.044846887031571E27 | +| test.c:555:17:555:17 | 2 | 1.0 | +| test.c:555:17:555:17 | (unsigned int)... | 1.0 | +| test.c:555:17:555:22 | ... * ... | 7.24700382E8 | +| test.c:555:17:555:26 | ... + ... | 7.24700382E8 | +| test.c:555:21:555:22 | ip | 7.24700382E8 | +| test.c:555:26:555:26 | 1 | 1.0 | +| test.c:555:26:555:26 | (unsigned int)... | 1.0 | +| test.c:555:31:555:32 | 14 | 1.0 | +| test.c:555:31:555:32 | (unsigned int)... | 1.0 | +| test.c:556:15:556:65 | (...) | 5.251906436709459E17 | +| test.c:556:16:556:17 | 14 | 1.0 | +| test.c:556:16:556:17 | (unsigned int)... | 1.0 | +| test.c:556:16:556:28 | ... * ... | 7.24700382E8 | +| test.c:556:16:556:38 | ... > ... | 1.0 | +| test.c:556:16:556:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:556:21:556:28 | (...) | 7.24700382E8 | +| test.c:556:22:556:22 | 2 | 1.0 | +| test.c:556:22:556:22 | (unsigned int)... | 1.0 | +| test.c:556:22:556:27 | ... * ... | 7.24700382E8 | +| test.c:556:26:556:27 | ip | 7.24700382E8 | +| test.c:556:32:556:33 | 17 | 1.0 | +| test.c:556:32:556:33 | (unsigned int)... | 1.0 | +| test.c:556:32:556:38 | ... * ... | 7.24700382E8 | +| test.c:556:37:556:38 | ip | 7.24700382E8 | +| test.c:556:42:556:43 | 17 | 1.0 | +| test.c:556:42:556:43 | (unsigned int)... | 1.0 | +| test.c:556:42:556:54 | ... * ... | 7.24700382E8 | +| test.c:556:47:556:54 | (...) | 7.24700382E8 | +| test.c:556:48:556:48 | 2 | 1.0 | +| test.c:556:48:556:48 | (unsigned int)... | 1.0 | +| test.c:556:48:556:53 | ... * ... | 7.24700382E8 | +| test.c:556:52:556:53 | ip | 7.24700382E8 | +| test.c:556:58:556:59 | 17 | 1.0 | +| test.c:556:58:556:59 | (unsigned int)... | 1.0 | +| test.c:556:58:556:64 | ... * ... | 7.24700382E8 | +| test.c:556:63:556:64 | ip | 7.24700382E8 | +| test.c:557:19:557:30 | (...) | 1.449400765E9 | +| test.c:557:19:557:35 | ... * ... | 1.449400765E9 | +| test.c:557:20:557:20 | 2 | 1.0 | +| test.c:557:20:557:20 | (unsigned int)... | 1.0 | +| test.c:557:20:557:25 | ... * ... | 1.449400765E9 | +| test.c:557:20:557:29 | ... + ... | 1.449400765E9 | +| test.c:557:24:557:25 | ip | 1.449400765E9 | +| test.c:557:29:557:29 | 1 | 1.0 | +| test.c:557:29:557:29 | (unsigned int)... | 1.0 | +| test.c:557:34:557:35 | 14 | 1.0 | +| test.c:557:34:557:35 | (unsigned int)... | 1.0 | +| test.c:558:19:558:20 | 14 | 1.0 | +| test.c:558:19:558:20 | (unsigned int)... | 1.0 | +| test.c:558:19:558:31 | ... * ... | 1.449400765E9 | +| test.c:558:19:558:41 | ... > ... | 1.0 | +| test.c:558:19:560:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:558:24:558:31 | (...) | 1.449400765E9 | +| test.c:558:25:558:25 | 2 | 1.0 | +| test.c:558:25:558:25 | (unsigned int)... | 1.0 | +| test.c:558:25:558:30 | ... * ... | 1.449400765E9 | +| test.c:558:29:558:30 | ip | 1.449400765E9 | +| test.c:558:35:558:36 | 17 | 1.0 | +| test.c:558:35:558:36 | (unsigned int)... | 1.0 | +| test.c:558:35:558:41 | ... * ... | 1.449400765E9 | +| test.c:558:40:558:41 | ip | 1.449400765E9 | +| test.c:559:21:559:22 | 14 | 1.0 | +| test.c:559:21:559:22 | (unsigned int)... | 1.0 | +| test.c:559:21:559:33 | ... * ... | 1.449400765E9 | +| test.c:559:26:559:33 | (...) | 1.449400765E9 | +| test.c:559:27:559:27 | 2 | 1.0 | +| test.c:559:27:559:27 | (unsigned int)... | 1.0 | +| test.c:559:27:559:32 | ... * ... | 1.449400765E9 | +| test.c:559:31:559:32 | ip | 1.449400765E9 | +| test.c:560:21:560:22 | 14 | 1.0 | +| test.c:560:21:560:22 | (unsigned int)... | 1.0 | +| test.c:560:21:560:27 | ... * ... | 1.449400765E9 | +| test.c:560:26:560:27 | ip | 1.449400765E9 | +| test.c:561:15:561:16 | 14 | 1.0 | +| test.c:561:15:561:16 | (unsigned int)... | 1.0 | +| test.c:561:15:561:21 | ... * ... | 7.24700382E8 | +| test.c:561:15:561:37 | ... > ... | 1.0 | +| test.c:561:15:563:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:561:20:561:21 | ip | 7.24700382E8 | +| test.c:561:25:561:32 | (...) | 7.24700382E8 | +| test.c:561:25:561:37 | ... * ... | 7.24700382E8 | +| test.c:561:26:561:27 | ip | 7.24700382E8 | +| test.c:561:26:561:31 | ... + ... | 7.24700382E8 | +| test.c:561:31:561:31 | 1 | 1.0 | +| test.c:561:31:561:31 | (unsigned int)... | 1.0 | +| test.c:561:36:561:37 | 17 | 1.0 | +| test.c:561:36:561:37 | (unsigned int)... | 1.0 | +| test.c:562:17:562:18 | 14 | 1.0 | +| test.c:562:17:562:18 | (unsigned int)... | 1.0 | +| test.c:562:17:562:23 | ... * ... | 7.24700382E8 | +| test.c:562:22:562:23 | ip | 7.24700382E8 | +| test.c:563:17:563:24 | (...) | 7.24700382E8 | +| test.c:563:17:563:29 | ... * ... | 7.24700382E8 | +| test.c:563:18:563:19 | ip | 7.24700382E8 | +| test.c:563:18:563:23 | ... + ... | 7.24700382E8 | +| test.c:563:23:563:23 | 1 | 1.0 | +| test.c:563:23:563:23 | (unsigned int)... | 1.0 | +| test.c:563:28:563:29 | 14 | 1.0 | +| test.c:563:28:563:29 | (unsigned int)... | 1.0 | +| test.c:564:11:564:11 | 2 | 1.0 | +| test.c:564:11:564:11 | (unsigned int)... | 1.0 | +| test.c:564:11:564:28 | ... * ... | 5.797603059E9 | +| test.c:564:11:584:46 | ... + ... | 9.943431528813442E94 | +| test.c:564:15:564:28 | (...) | 5.797603059E9 | +| test.c:564:16:564:17 | ip | 5.797603059E9 | +| test.c:564:16:564:22 | ... * ... | 5.797603059E9 | +| test.c:564:16:564:27 | ... + ... | 5.797603059E9 | +| test.c:564:21:564:22 | 14 | 1.0 | +| test.c:564:21:564:22 | (unsigned int)... | 1.0 | +| test.c:564:26:564:27 | 32 | 1.0 | +| test.c:564:26:564:27 | (unsigned int)... | 1.0 | +| test.c:565:11:584:46 | (...) | 1.715093535659983E85 | +| test.c:565:12:565:12 | 4 | 1.0 | +| test.c:565:12:565:12 | (unsigned int)... | 1.0 | +| test.c:565:12:565:29 | ... * ... | 5.797603059E9 | +| test.c:565:12:566:30 | ... + ... | 3.361220122972616E19 | +| test.c:565:12:567:30 | ... + ... | 1.9487020066918396E29 | +| test.c:565:12:573:26 | ... + ... | 3.0379516094938436E59 | +| test.c:565:12:574:41 | ... > ... | 1.0 | +| test.c:565:12:584:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:565:16:565:29 | (...) | 5.797603059E9 | +| test.c:565:17:565:18 | ip | 5.797603059E9 | +| test.c:565:17:565:23 | ... * ... | 5.797603059E9 | +| test.c:565:17:565:28 | ... + ... | 5.797603059E9 | +| test.c:565:22:565:23 | 14 | 1.0 | +| test.c:565:22:565:23 | (unsigned int)... | 1.0 | +| test.c:565:27:565:28 | 32 | 1.0 | +| test.c:565:27:565:28 | (unsigned int)... | 1.0 | +| test.c:566:13:566:30 | (...) | 5.797603059E9 | +| test.c:566:14:566:14 | 2 | 1.0 | +| test.c:566:14:566:14 | (unsigned int)... | 1.0 | +| test.c:566:14:566:19 | ... * ... | 5.797603059E9 | +| test.c:566:14:566:24 | ... * ... | 5.797603059E9 | +| test.c:566:14:566:29 | ... + ... | 5.797603059E9 | +| test.c:566:18:566:19 | ip | 5.797603059E9 | +| test.c:566:23:566:24 | 14 | 1.0 | +| test.c:566:23:566:24 | (unsigned int)... | 1.0 | +| test.c:566:28:566:29 | 32 | 1.0 | +| test.c:566:28:566:29 | (unsigned int)... | 1.0 | +| test.c:567:13:567:13 | 2 | 1.0 | +| test.c:567:13:567:13 | (unsigned int)... | 1.0 | +| test.c:567:13:567:30 | ... * ... | 5.797603059E9 | +| test.c:567:17:567:30 | (...) | 5.797603059E9 | +| test.c:567:18:567:19 | ip | 5.797603059E9 | +| test.c:567:18:567:24 | ... * ... | 5.797603059E9 | +| test.c:567:18:567:29 | ... + ... | 5.797603059E9 | +| test.c:567:23:567:24 | 14 | 1.0 | +| test.c:567:23:567:24 | (unsigned int)... | 1.0 | +| test.c:567:28:567:29 | 64 | 1.0 | +| test.c:567:28:567:29 | (unsigned int)... | 1.0 | +| test.c:568:13:573:26 | (...) | 1.558961605756818E30 | +| test.c:568:14:568:25 | (...) | 5.797603059E9 | +| test.c:568:14:568:30 | ... * ... | 5.797603059E9 | +| test.c:568:14:569:63 | ... > ... | 1.0 | +| test.c:568:14:573:25 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:568:15:568:15 | 2 | 1.0 | +| test.c:568:15:568:15 | (unsigned int)... | 1.0 | +| test.c:568:15:568:20 | ... * ... | 5.797603059E9 | +| test.c:568:15:568:24 | ... + ... | 5.797603059E9 | +| test.c:568:19:568:20 | ip | 5.797603059E9 | +| test.c:568:24:568:24 | 1 | 1.0 | +| test.c:568:24:568:24 | (unsigned int)... | 1.0 | +| test.c:568:29:568:30 | 14 | 1.0 | +| test.c:568:29:568:30 | (unsigned int)... | 1.0 | +| test.c:569:13:569:63 | (...) | 3.361220122972616E19 | +| test.c:569:14:569:15 | 14 | 1.0 | +| test.c:569:14:569:15 | (unsigned int)... | 1.0 | +| test.c:569:14:569:26 | ... * ... | 5.797603059E9 | +| test.c:569:14:569:36 | ... > ... | 1.0 | +| test.c:569:14:569:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:569:19:569:26 | (...) | 5.797603059E9 | +| test.c:569:20:569:20 | 2 | 1.0 | +| test.c:569:20:569:20 | (unsigned int)... | 1.0 | +| test.c:569:20:569:25 | ... * ... | 5.797603059E9 | +| test.c:569:24:569:25 | ip | 5.797603059E9 | +| test.c:569:30:569:31 | 17 | 1.0 | +| test.c:569:30:569:31 | (unsigned int)... | 1.0 | +| test.c:569:30:569:36 | ... * ... | 5.797603059E9 | +| test.c:569:35:569:36 | ip | 5.797603059E9 | +| test.c:569:40:569:41 | 17 | 1.0 | +| test.c:569:40:569:41 | (unsigned int)... | 1.0 | +| test.c:569:40:569:52 | ... * ... | 5.797603059E9 | +| test.c:569:45:569:52 | (...) | 5.797603059E9 | +| test.c:569:46:569:46 | 2 | 1.0 | +| test.c:569:46:569:46 | (unsigned int)... | 1.0 | +| test.c:569:46:569:51 | ... * ... | 5.797603059E9 | +| test.c:569:50:569:51 | ip | 5.797603059E9 | +| test.c:569:56:569:57 | 17 | 1.0 | +| test.c:569:56:569:57 | (unsigned int)... | 1.0 | +| test.c:569:56:569:62 | ... * ... | 5.797603059E9 | +| test.c:569:61:569:62 | ip | 5.797603059E9 | +| test.c:570:17:570:28 | (...) | 1.1595206119E10 | +| test.c:570:17:570:33 | ... * ... | 1.1595206119E10 | +| test.c:570:18:570:18 | 2 | 1.0 | +| test.c:570:18:570:18 | (unsigned int)... | 1.0 | +| test.c:570:18:570:23 | ... * ... | 1.1595206119E10 | +| test.c:570:18:570:27 | ... + ... | 1.1595206119E10 | +| test.c:570:22:570:23 | ip | 1.1595206119E10 | +| test.c:570:27:570:27 | 1 | 1.0 | +| test.c:570:27:570:27 | (unsigned int)... | 1.0 | +| test.c:570:32:570:33 | 14 | 1.0 | +| test.c:570:32:570:33 | (unsigned int)... | 1.0 | +| test.c:571:17:571:18 | 14 | 1.0 | +| test.c:571:17:571:18 | (unsigned int)... | 1.0 | +| test.c:571:17:571:29 | ... * ... | 1.1595206119E10 | +| test.c:571:17:571:39 | ... > ... | 1.0 | +| test.c:571:17:573:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:571:22:571:29 | (...) | 1.1595206119E10 | +| test.c:571:23:571:23 | 2 | 1.0 | +| test.c:571:23:571:23 | (unsigned int)... | 1.0 | +| test.c:571:23:571:28 | ... * ... | 1.1595206119E10 | +| test.c:571:27:571:28 | ip | 1.1595206119E10 | +| test.c:571:33:571:34 | 17 | 1.0 | +| test.c:571:33:571:34 | (unsigned int)... | 1.0 | +| test.c:571:33:571:39 | ... * ... | 1.1595206119E10 | +| test.c:571:38:571:39 | ip | 1.1595206119E10 | +| test.c:572:19:572:20 | 14 | 1.0 | +| test.c:572:19:572:20 | (unsigned int)... | 1.0 | +| test.c:572:19:572:31 | ... * ... | 1.1595206119E10 | +| test.c:572:24:572:31 | (...) | 1.1595206119E10 | +| test.c:572:25:572:25 | 2 | 1.0 | +| test.c:572:25:572:25 | (unsigned int)... | 1.0 | +| test.c:572:25:572:30 | ... * ... | 1.1595206119E10 | +| test.c:572:29:572:30 | ip | 1.1595206119E10 | +| test.c:573:19:573:20 | 14 | 1.0 | +| test.c:573:19:573:20 | (unsigned int)... | 1.0 | +| test.c:573:19:573:25 | ... * ... | 1.1595206119E10 | +| test.c:573:24:573:25 | ip | 1.1595206119E10 | +| test.c:574:11:574:11 | 2 | 1.0 | +| test.c:574:11:574:11 | (unsigned int)... | 1.0 | +| test.c:574:11:574:16 | ... * ... | 3.4785618357E10 | +| test.c:574:11:574:21 | ... * ... | 3.4785618357E10 | +| test.c:574:11:574:41 | ... + ... | 1.2100392444788552E21 | +| test.c:574:15:574:16 | ip | 3.4785618357E10 | +| test.c:574:20:574:21 | 14 | 1.0 | +| test.c:574:20:574:21 | (unsigned int)... | 1.0 | +| test.c:574:25:574:36 | (...) | 3.4785618357E10 | +| test.c:574:25:574:41 | ... * ... | 3.4785618357E10 | +| test.c:574:26:574:26 | 2 | 1.0 | +| test.c:574:26:574:26 | (unsigned int)... | 1.0 | +| test.c:574:26:574:31 | ... * ... | 3.4785618357E10 | +| test.c:574:26:574:35 | ... + ... | 3.4785618357E10 | +| test.c:574:30:574:31 | ip | 3.4785618357E10 | +| test.c:574:35:574:35 | 1 | 1.0 | +| test.c:574:35:574:35 | (unsigned int)... | 1.0 | +| test.c:574:40:574:41 | 17 | 1.0 | +| test.c:574:40:574:41 | (unsigned int)... | 1.0 | +| test.c:575:15:575:15 | 4 | 1.0 | +| test.c:575:15:575:15 | (unsigned int)... | 1.0 | +| test.c:575:15:575:32 | ... * ... | 3.4785618357E10 | +| test.c:575:15:576:32 | ... + ... | 1.2100392444788552E21 | +| test.c:575:15:577:32 | ... + ... | 4.209196335543408E31 | +| test.c:575:15:583:28 | ... + ... | 1.417386703353284E64 | +| test.c:575:19:575:32 | (...) | 3.4785618357E10 | +| test.c:575:20:575:21 | ip | 3.4785618357E10 | +| test.c:575:20:575:26 | ... * ... | 3.4785618357E10 | +| test.c:575:20:575:31 | ... + ... | 3.4785618357E10 | +| test.c:575:25:575:26 | 14 | 1.0 | +| test.c:575:25:575:26 | (unsigned int)... | 1.0 | +| test.c:575:30:575:31 | 32 | 1.0 | +| test.c:575:30:575:31 | (unsigned int)... | 1.0 | +| test.c:576:15:576:32 | (...) | 3.4785618357E10 | +| test.c:576:16:576:16 | 2 | 1.0 | +| test.c:576:16:576:16 | (unsigned int)... | 1.0 | +| test.c:576:16:576:21 | ... * ... | 3.4785618357E10 | +| test.c:576:16:576:26 | ... * ... | 3.4785618357E10 | +| test.c:576:16:576:31 | ... + ... | 3.4785618357E10 | +| test.c:576:20:576:21 | ip | 3.4785618357E10 | +| test.c:576:25:576:26 | 14 | 1.0 | +| test.c:576:25:576:26 | (unsigned int)... | 1.0 | +| test.c:576:30:576:31 | 32 | 1.0 | +| test.c:576:30:576:31 | (unsigned int)... | 1.0 | +| test.c:577:15:577:15 | 2 | 1.0 | +| test.c:577:15:577:15 | (unsigned int)... | 1.0 | +| test.c:577:15:577:32 | ... * ... | 3.4785618357E10 | +| test.c:577:19:577:32 | (...) | 3.4785618357E10 | +| test.c:577:20:577:21 | ip | 3.4785618357E10 | +| test.c:577:20:577:26 | ... * ... | 3.4785618357E10 | +| test.c:577:20:577:31 | ... + ... | 3.4785618357E10 | +| test.c:577:25:577:26 | 14 | 1.0 | +| test.c:577:25:577:26 | (unsigned int)... | 1.0 | +| test.c:577:30:577:31 | 64 | 1.0 | +| test.c:577:30:577:31 | (unsigned int)... | 1.0 | +| test.c:578:15:583:28 | (...) | 3.367357068579931E32 | +| test.c:578:16:578:27 | (...) | 3.4785618357E10 | +| test.c:578:16:578:32 | ... * ... | 3.4785618357E10 | +| test.c:578:16:579:65 | ... > ... | 1.0 | +| test.c:578:16:583:27 | ... ? ... : ... | 3.367357068579931E32 | +| test.c:578:17:578:17 | 2 | 1.0 | +| test.c:578:17:578:17 | (unsigned int)... | 1.0 | +| test.c:578:17:578:22 | ... * ... | 3.4785618357E10 | +| test.c:578:17:578:26 | ... + ... | 3.4785618357E10 | +| test.c:578:21:578:22 | ip | 3.4785618357E10 | +| test.c:578:26:578:26 | 1 | 1.0 | +| test.c:578:26:578:26 | (unsigned int)... | 1.0 | +| test.c:578:31:578:32 | 14 | 1.0 | +| test.c:578:31:578:32 | (unsigned int)... | 1.0 | +| test.c:579:15:579:65 | (...) | 1.2100392444788552E21 | +| test.c:579:16:579:17 | 14 | 1.0 | +| test.c:579:16:579:17 | (unsigned int)... | 1.0 | +| test.c:579:16:579:28 | ... * ... | 3.4785618357E10 | +| test.c:579:16:579:38 | ... > ... | 1.0 | +| test.c:579:16:579:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:579:21:579:28 | (...) | 3.4785618357E10 | +| test.c:579:22:579:22 | 2 | 1.0 | +| test.c:579:22:579:22 | (unsigned int)... | 1.0 | +| test.c:579:22:579:27 | ... * ... | 3.4785618357E10 | +| test.c:579:26:579:27 | ip | 3.4785618357E10 | +| test.c:579:32:579:33 | 17 | 1.0 | +| test.c:579:32:579:33 | (unsigned int)... | 1.0 | +| test.c:579:32:579:38 | ... * ... | 3.4785618357E10 | +| test.c:579:37:579:38 | ip | 3.4785618357E10 | +| test.c:579:42:579:43 | 17 | 1.0 | +| test.c:579:42:579:43 | (unsigned int)... | 1.0 | +| test.c:579:42:579:54 | ... * ... | 3.4785618357E10 | +| test.c:579:47:579:54 | (...) | 3.4785618357E10 | +| test.c:579:48:579:48 | 2 | 1.0 | +| test.c:579:48:579:48 | (unsigned int)... | 1.0 | +| test.c:579:48:579:53 | ... * ... | 3.4785618357E10 | +| test.c:579:52:579:53 | ip | 3.4785618357E10 | +| test.c:579:58:579:59 | 17 | 1.0 | +| test.c:579:58:579:59 | (unsigned int)... | 1.0 | +| test.c:579:58:579:64 | ... * ... | 3.4785618357E10 | +| test.c:579:63:579:64 | ip | 3.4785618357E10 | +| test.c:580:19:580:30 | (...) | 6.9571236715E10 | +| test.c:580:19:580:35 | ... * ... | 6.9571236715E10 | +| test.c:580:20:580:20 | 2 | 1.0 | +| test.c:580:20:580:20 | (unsigned int)... | 1.0 | +| test.c:580:20:580:25 | ... * ... | 6.9571236715E10 | +| test.c:580:20:580:29 | ... + ... | 6.9571236715E10 | +| test.c:580:24:580:25 | ip | 6.9571236715E10 | +| test.c:580:29:580:29 | 1 | 1.0 | +| test.c:580:29:580:29 | (unsigned int)... | 1.0 | +| test.c:580:34:580:35 | 14 | 1.0 | +| test.c:580:34:580:35 | (unsigned int)... | 1.0 | +| test.c:581:19:581:20 | 14 | 1.0 | +| test.c:581:19:581:20 | (unsigned int)... | 1.0 | +| test.c:581:19:581:31 | ... * ... | 6.9571236715E10 | +| test.c:581:19:581:41 | ... > ... | 1.0 | +| test.c:581:19:583:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:581:24:581:31 | (...) | 6.9571236715E10 | +| test.c:581:25:581:25 | 2 | 1.0 | +| test.c:581:25:581:25 | (unsigned int)... | 1.0 | +| test.c:581:25:581:30 | ... * ... | 6.9571236715E10 | +| test.c:581:29:581:30 | ip | 6.9571236715E10 | +| test.c:581:35:581:36 | 17 | 1.0 | +| test.c:581:35:581:36 | (unsigned int)... | 1.0 | +| test.c:581:35:581:41 | ... * ... | 6.9571236715E10 | +| test.c:581:40:581:41 | ip | 6.9571236715E10 | +| test.c:582:21:582:22 | 14 | 1.0 | +| test.c:582:21:582:22 | (unsigned int)... | 1.0 | +| test.c:582:21:582:33 | ... * ... | 6.9571236715E10 | +| test.c:582:26:582:33 | (...) | 6.9571236715E10 | +| test.c:582:27:582:27 | 2 | 1.0 | +| test.c:582:27:582:27 | (unsigned int)... | 1.0 | +| test.c:582:27:582:32 | ... * ... | 6.9571236715E10 | +| test.c:582:31:582:32 | ip | 6.9571236715E10 | +| test.c:583:21:583:22 | 14 | 1.0 | +| test.c:583:21:583:22 | (unsigned int)... | 1.0 | +| test.c:583:21:583:27 | ... * ... | 6.9571236715E10 | +| test.c:583:26:583:27 | ip | 6.9571236715E10 | +| test.c:584:15:584:15 | 2 | 1.0 | +| test.c:584:15:584:15 | (unsigned int)... | 1.0 | +| test.c:584:15:584:20 | ... * ... | 3.4785618357E10 | +| test.c:584:15:584:25 | ... * ... | 3.4785618357E10 | +| test.c:584:15:584:45 | ... + ... | 1.2100392444788552E21 | +| test.c:584:19:584:20 | ip | 3.4785618357E10 | +| test.c:584:24:584:25 | 14 | 1.0 | +| test.c:584:24:584:25 | (unsigned int)... | 1.0 | +| test.c:584:29:584:40 | (...) | 3.4785618357E10 | +| test.c:584:29:584:45 | ... * ... | 3.4785618357E10 | +| test.c:584:30:584:30 | 2 | 1.0 | +| test.c:584:30:584:30 | (unsigned int)... | 1.0 | +| test.c:584:30:584:35 | ... * ... | 3.4785618357E10 | +| test.c:584:30:584:39 | ... + ... | 3.4785618357E10 | +| test.c:584:34:584:35 | ip | 3.4785618357E10 | +| test.c:584:39:584:39 | 1 | 1.0 | +| test.c:584:39:584:39 | (unsigned int)... | 1.0 | +| test.c:584:44:584:45 | 17 | 1.0 | +| test.c:584:44:584:45 | (unsigned int)... | 1.0 | +| test.c:585:11:585:11 | 4 | 1.0 | +| test.c:585:11:585:11 | (unsigned int)... | 1.0 | +| test.c:585:11:585:28 | ... * ... | 5.797603059E9 | +| test.c:585:11:586:32 | ... + ... | 3.361220122972616E19 | +| test.c:585:11:587:32 | ... + ... | 1.9487020066918396E29 | +| test.c:585:11:593:28 | ... + ... | 3.0379516094938436E59 | +| test.c:585:11:594:63 | ... > ... | 1.0 | +| test.c:585:11:606:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:585:15:585:28 | (...) | 5.797603059E9 | +| test.c:585:16:585:17 | ip | 5.797603059E9 | +| test.c:585:16:585:22 | ... * ... | 5.797603059E9 | +| test.c:585:16:585:27 | ... + ... | 5.797603059E9 | +| test.c:585:21:585:22 | 14 | 1.0 | +| test.c:585:21:585:22 | (unsigned int)... | 1.0 | +| test.c:585:26:585:27 | 32 | 1.0 | +| test.c:585:26:585:27 | (unsigned int)... | 1.0 | +| test.c:586:15:586:32 | (...) | 5.797603059E9 | +| test.c:586:16:586:16 | 2 | 1.0 | +| test.c:586:16:586:16 | (unsigned int)... | 1.0 | +| test.c:586:16:586:21 | ... * ... | 5.797603059E9 | +| test.c:586:16:586:26 | ... * ... | 5.797603059E9 | +| test.c:586:16:586:31 | ... + ... | 5.797603059E9 | +| test.c:586:20:586:21 | ip | 5.797603059E9 | +| test.c:586:25:586:26 | 14 | 1.0 | +| test.c:586:25:586:26 | (unsigned int)... | 1.0 | +| test.c:586:30:586:31 | 32 | 1.0 | +| test.c:586:30:586:31 | (unsigned int)... | 1.0 | +| test.c:587:15:587:15 | 2 | 1.0 | +| test.c:587:15:587:15 | (unsigned int)... | 1.0 | +| test.c:587:15:587:32 | ... * ... | 5.797603059E9 | +| test.c:587:19:587:32 | (...) | 5.797603059E9 | +| test.c:587:20:587:21 | ip | 5.797603059E9 | +| test.c:587:20:587:26 | ... * ... | 5.797603059E9 | +| test.c:587:20:587:31 | ... + ... | 5.797603059E9 | +| test.c:587:25:587:26 | 14 | 1.0 | +| test.c:587:25:587:26 | (unsigned int)... | 1.0 | +| test.c:587:30:587:31 | 64 | 1.0 | +| test.c:587:30:587:31 | (unsigned int)... | 1.0 | +| test.c:588:15:593:28 | (...) | 1.558961605756818E30 | +| test.c:588:16:588:27 | (...) | 5.797603059E9 | +| test.c:588:16:588:32 | ... * ... | 5.797603059E9 | +| test.c:588:16:589:65 | ... > ... | 1.0 | +| test.c:588:16:593:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:588:17:588:17 | 2 | 1.0 | +| test.c:588:17:588:17 | (unsigned int)... | 1.0 | +| test.c:588:17:588:22 | ... * ... | 5.797603059E9 | +| test.c:588:17:588:26 | ... + ... | 5.797603059E9 | +| test.c:588:21:588:22 | ip | 5.797603059E9 | +| test.c:588:26:588:26 | 1 | 1.0 | +| test.c:588:26:588:26 | (unsigned int)... | 1.0 | +| test.c:588:31:588:32 | 14 | 1.0 | +| test.c:588:31:588:32 | (unsigned int)... | 1.0 | +| test.c:589:15:589:65 | (...) | 3.361220122972616E19 | +| test.c:589:16:589:17 | 14 | 1.0 | +| test.c:589:16:589:17 | (unsigned int)... | 1.0 | +| test.c:589:16:589:28 | ... * ... | 5.797603059E9 | +| test.c:589:16:589:38 | ... > ... | 1.0 | +| test.c:589:16:589:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:589:21:589:28 | (...) | 5.797603059E9 | +| test.c:589:22:589:22 | 2 | 1.0 | +| test.c:589:22:589:22 | (unsigned int)... | 1.0 | +| test.c:589:22:589:27 | ... * ... | 5.797603059E9 | +| test.c:589:26:589:27 | ip | 5.797603059E9 | +| test.c:589:32:589:33 | 17 | 1.0 | +| test.c:589:32:589:33 | (unsigned int)... | 1.0 | +| test.c:589:32:589:38 | ... * ... | 5.797603059E9 | +| test.c:589:37:589:38 | ip | 5.797603059E9 | +| test.c:589:42:589:43 | 17 | 1.0 | +| test.c:589:42:589:43 | (unsigned int)... | 1.0 | +| test.c:589:42:589:54 | ... * ... | 5.797603059E9 | +| test.c:589:47:589:54 | (...) | 5.797603059E9 | +| test.c:589:48:589:48 | 2 | 1.0 | +| test.c:589:48:589:48 | (unsigned int)... | 1.0 | +| test.c:589:48:589:53 | ... * ... | 5.797603059E9 | +| test.c:589:52:589:53 | ip | 5.797603059E9 | +| test.c:589:58:589:59 | 17 | 1.0 | +| test.c:589:58:589:59 | (unsigned int)... | 1.0 | +| test.c:589:58:589:64 | ... * ... | 5.797603059E9 | +| test.c:589:63:589:64 | ip | 5.797603059E9 | +| test.c:590:19:590:30 | (...) | 1.1595206119E10 | +| test.c:590:19:590:35 | ... * ... | 1.1595206119E10 | +| test.c:590:20:590:20 | 2 | 1.0 | +| test.c:590:20:590:20 | (unsigned int)... | 1.0 | +| test.c:590:20:590:25 | ... * ... | 1.1595206119E10 | +| test.c:590:20:590:29 | ... + ... | 1.1595206119E10 | +| test.c:590:24:590:25 | ip | 1.1595206119E10 | +| test.c:590:29:590:29 | 1 | 1.0 | +| test.c:590:29:590:29 | (unsigned int)... | 1.0 | +| test.c:590:34:590:35 | 14 | 1.0 | +| test.c:590:34:590:35 | (unsigned int)... | 1.0 | +| test.c:591:19:591:20 | 14 | 1.0 | +| test.c:591:19:591:20 | (unsigned int)... | 1.0 | +| test.c:591:19:591:31 | ... * ... | 1.1595206119E10 | +| test.c:591:19:591:41 | ... > ... | 1.0 | +| test.c:591:19:593:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:591:24:591:31 | (...) | 1.1595206119E10 | +| test.c:591:25:591:25 | 2 | 1.0 | +| test.c:591:25:591:25 | (unsigned int)... | 1.0 | +| test.c:591:25:591:30 | ... * ... | 1.1595206119E10 | +| test.c:591:29:591:30 | ip | 1.1595206119E10 | +| test.c:591:35:591:36 | 17 | 1.0 | +| test.c:591:35:591:36 | (unsigned int)... | 1.0 | +| test.c:591:35:591:41 | ... * ... | 1.1595206119E10 | +| test.c:591:40:591:41 | ip | 1.1595206119E10 | +| test.c:592:21:592:22 | 14 | 1.0 | +| test.c:592:21:592:22 | (unsigned int)... | 1.0 | +| test.c:592:21:592:33 | ... * ... | 1.1595206119E10 | +| test.c:592:26:592:33 | (...) | 1.1595206119E10 | +| test.c:592:27:592:27 | 2 | 1.0 | +| test.c:592:27:592:27 | (unsigned int)... | 1.0 | +| test.c:592:27:592:32 | ... * ... | 1.1595206119E10 | +| test.c:592:31:592:32 | ip | 1.1595206119E10 | +| test.c:593:21:593:22 | 14 | 1.0 | +| test.c:593:21:593:22 | (unsigned int)... | 1.0 | +| test.c:593:21:593:27 | ... * ... | 1.1595206119E10 | +| test.c:593:26:593:27 | ip | 1.1595206119E10 | +| test.c:594:13:594:63 | (...) | 1.2100392444788552E21 | +| test.c:594:14:594:15 | 14 | 1.0 | +| test.c:594:14:594:15 | (unsigned int)... | 1.0 | +| test.c:594:14:594:20 | ... * ... | 3.4785618357E10 | +| test.c:594:14:594:36 | ... > ... | 1.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:594:19:594:20 | ip | 3.4785618357E10 | +| test.c:594:24:594:31 | (...) | 3.4785618357E10 | +| test.c:594:24:594:36 | ... * ... | 3.4785618357E10 | +| test.c:594:25:594:26 | ip | 3.4785618357E10 | +| test.c:594:25:594:30 | ... + ... | 3.4785618357E10 | +| test.c:594:30:594:30 | 1 | 1.0 | +| test.c:594:30:594:30 | (unsigned int)... | 1.0 | +| test.c:594:35:594:36 | 17 | 1.0 | +| test.c:594:35:594:36 | (unsigned int)... | 1.0 | +| test.c:594:40:594:41 | 17 | 1.0 | +| test.c:594:40:594:41 | (unsigned int)... | 1.0 | +| test.c:594:40:594:46 | ... * ... | 3.4785618357E10 | +| test.c:594:45:594:46 | ip | 3.4785618357E10 | +| test.c:594:50:594:57 | (...) | 3.4785618357E10 | +| test.c:594:50:594:62 | ... * ... | 3.4785618357E10 | +| test.c:594:51:594:52 | ip | 3.4785618357E10 | +| test.c:594:51:594:56 | ... + ... | 3.4785618357E10 | +| test.c:594:56:594:56 | 1 | 1.0 | +| test.c:594:56:594:56 | (unsigned int)... | 1.0 | +| test.c:594:61:594:62 | 17 | 1.0 | +| test.c:594:61:594:62 | (unsigned int)... | 1.0 | +| test.c:595:13:595:13 | 4 | 1.0 | +| test.c:595:13:595:13 | (unsigned int)... | 1.0 | +| test.c:595:13:595:30 | ... * ... | 6.9571236714E10 | +| test.c:595:13:596:30 | ... + ... | 4.840156977915421E21 | +| test.c:595:13:597:30 | ... + ... | 3.3673570684347266E32 | +| test.c:595:13:603:26 | ... + ... | 9.071274901265435E65 | +| test.c:595:17:595:30 | (...) | 6.9571236714E10 | +| test.c:595:18:595:19 | ip | 6.9571236714E10 | +| test.c:595:18:595:24 | ... * ... | 6.9571236714E10 | +| test.c:595:18:595:29 | ... + ... | 6.9571236714E10 | +| test.c:595:23:595:24 | 14 | 1.0 | +| test.c:595:23:595:24 | (unsigned int)... | 1.0 | +| test.c:595:28:595:29 | 32 | 1.0 | +| test.c:595:28:595:29 | (unsigned int)... | 1.0 | +| test.c:596:13:596:30 | (...) | 6.9571236714E10 | +| test.c:596:14:596:14 | 2 | 1.0 | +| test.c:596:14:596:14 | (unsigned int)... | 1.0 | +| test.c:596:14:596:19 | ... * ... | 6.9571236714E10 | +| test.c:596:14:596:24 | ... * ... | 6.9571236714E10 | +| test.c:596:14:596:29 | ... + ... | 6.9571236714E10 | +| test.c:596:18:596:19 | ip | 6.9571236714E10 | +| test.c:596:23:596:24 | 14 | 1.0 | +| test.c:596:23:596:24 | (unsigned int)... | 1.0 | +| test.c:596:28:596:29 | 32 | 1.0 | +| test.c:596:28:596:29 | (unsigned int)... | 1.0 | +| test.c:597:13:597:13 | 2 | 1.0 | +| test.c:597:13:597:13 | (unsigned int)... | 1.0 | +| test.c:597:13:597:30 | ... * ... | 6.9571236714E10 | +| test.c:597:17:597:30 | (...) | 6.9571236714E10 | +| test.c:597:18:597:19 | ip | 6.9571236714E10 | +| test.c:597:18:597:24 | ... * ... | 6.9571236714E10 | +| test.c:597:18:597:29 | ... + ... | 6.9571236714E10 | +| test.c:597:23:597:24 | 14 | 1.0 | +| test.c:597:23:597:24 | (unsigned int)... | 1.0 | +| test.c:597:28:597:29 | 64 | 1.0 | +| test.c:597:28:597:29 | (unsigned int)... | 1.0 | +| test.c:598:13:603:26 | (...) | 2.693885654805863E33 | +| test.c:598:14:598:25 | (...) | 6.9571236714E10 | +| test.c:598:14:598:30 | ... * ... | 6.9571236714E10 | +| test.c:598:14:599:63 | ... > ... | 1.0 | +| test.c:598:14:603:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:598:15:598:15 | 2 | 1.0 | +| test.c:598:15:598:15 | (unsigned int)... | 1.0 | +| test.c:598:15:598:20 | ... * ... | 6.9571236714E10 | +| test.c:598:15:598:24 | ... + ... | 6.9571236714E10 | +| test.c:598:19:598:20 | ip | 6.9571236714E10 | +| test.c:598:24:598:24 | 1 | 1.0 | +| test.c:598:24:598:24 | (unsigned int)... | 1.0 | +| test.c:598:29:598:30 | 14 | 1.0 | +| test.c:598:29:598:30 | (unsigned int)... | 1.0 | +| test.c:599:13:599:63 | (...) | 4.840156977915421E21 | +| test.c:599:14:599:15 | 14 | 1.0 | +| test.c:599:14:599:15 | (unsigned int)... | 1.0 | +| test.c:599:14:599:26 | ... * ... | 6.9571236714E10 | +| test.c:599:14:599:36 | ... > ... | 1.0 | +| test.c:599:14:599:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:599:19:599:26 | (...) | 6.9571236714E10 | +| test.c:599:20:599:20 | 2 | 1.0 | +| test.c:599:20:599:20 | (unsigned int)... | 1.0 | +| test.c:599:20:599:25 | ... * ... | 6.9571236714E10 | +| test.c:599:24:599:25 | ip | 6.9571236714E10 | +| test.c:599:30:599:31 | 17 | 1.0 | +| test.c:599:30:599:31 | (unsigned int)... | 1.0 | +| test.c:599:30:599:36 | ... * ... | 6.9571236714E10 | +| test.c:599:35:599:36 | ip | 6.9571236714E10 | +| test.c:599:40:599:41 | 17 | 1.0 | +| test.c:599:40:599:41 | (unsigned int)... | 1.0 | +| test.c:599:40:599:52 | ... * ... | 6.9571236714E10 | +| test.c:599:45:599:52 | (...) | 6.9571236714E10 | +| test.c:599:46:599:46 | 2 | 1.0 | +| test.c:599:46:599:46 | (unsigned int)... | 1.0 | +| test.c:599:46:599:51 | ... * ... | 6.9571236714E10 | +| test.c:599:50:599:51 | ip | 6.9571236714E10 | +| test.c:599:56:599:57 | 17 | 1.0 | +| test.c:599:56:599:57 | (unsigned int)... | 1.0 | +| test.c:599:56:599:62 | ... * ... | 6.9571236714E10 | +| test.c:599:61:599:62 | ip | 6.9571236714E10 | +| test.c:600:17:600:28 | (...) | 1.39142473429E11 | +| test.c:600:17:600:33 | ... * ... | 1.39142473429E11 | +| test.c:600:18:600:18 | 2 | 1.0 | +| test.c:600:18:600:18 | (unsigned int)... | 1.0 | +| test.c:600:18:600:23 | ... * ... | 1.39142473429E11 | +| test.c:600:18:600:27 | ... + ... | 1.39142473429E11 | +| test.c:600:22:600:23 | ip | 1.39142473429E11 | +| test.c:600:27:600:27 | 1 | 1.0 | +| test.c:600:27:600:27 | (unsigned int)... | 1.0 | +| test.c:600:32:600:33 | 14 | 1.0 | +| test.c:600:32:600:33 | (unsigned int)... | 1.0 | +| test.c:601:17:601:18 | 14 | 1.0 | +| test.c:601:17:601:18 | (unsigned int)... | 1.0 | +| test.c:601:17:601:29 | ... * ... | 1.39142473429E11 | +| test.c:601:17:601:39 | ... > ... | 1.0 | +| test.c:601:17:603:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:601:22:601:29 | (...) | 1.39142473429E11 | +| test.c:601:23:601:23 | 2 | 1.0 | +| test.c:601:23:601:23 | (unsigned int)... | 1.0 | +| test.c:601:23:601:28 | ... * ... | 1.39142473429E11 | +| test.c:601:27:601:28 | ip | 1.39142473429E11 | +| test.c:601:33:601:34 | 17 | 1.0 | +| test.c:601:33:601:34 | (unsigned int)... | 1.0 | +| test.c:601:33:601:39 | ... * ... | 1.39142473429E11 | +| test.c:601:38:601:39 | ip | 1.39142473429E11 | +| test.c:602:19:602:20 | 14 | 1.0 | +| test.c:602:19:602:20 | (unsigned int)... | 1.0 | +| test.c:602:19:602:31 | ... * ... | 1.39142473429E11 | +| test.c:602:24:602:31 | (...) | 1.39142473429E11 | +| test.c:602:25:602:25 | 2 | 1.0 | +| test.c:602:25:602:25 | (unsigned int)... | 1.0 | +| test.c:602:25:602:30 | ... * ... | 1.39142473429E11 | +| test.c:602:29:602:30 | ip | 1.39142473429E11 | +| test.c:603:19:603:20 | 14 | 1.0 | +| test.c:603:19:603:20 | (unsigned int)... | 1.0 | +| test.c:603:19:603:25 | ... * ... | 1.39142473429E11 | +| test.c:603:24:603:25 | ip | 1.39142473429E11 | +| test.c:604:13:604:14 | 14 | 1.0 | +| test.c:604:13:604:14 | (unsigned int)... | 1.0 | +| test.c:604:13:604:19 | ... * ... | 6.9571236714E10 | +| test.c:604:13:604:35 | ... > ... | 1.0 | +| test.c:604:13:606:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:604:18:604:19 | ip | 6.9571236714E10 | +| test.c:604:23:604:30 | (...) | 6.9571236714E10 | +| test.c:604:23:604:35 | ... * ... | 6.9571236714E10 | +| test.c:604:24:604:25 | ip | 6.9571236714E10 | +| test.c:604:24:604:29 | ... + ... | 6.9571236714E10 | +| test.c:604:29:604:29 | 1 | 1.0 | +| test.c:604:29:604:29 | (unsigned int)... | 1.0 | +| test.c:604:34:604:35 | 17 | 1.0 | +| test.c:604:34:604:35 | (unsigned int)... | 1.0 | +| test.c:605:15:605:16 | 14 | 1.0 | +| test.c:605:15:605:16 | (unsigned int)... | 1.0 | +| test.c:605:15:605:21 | ... * ... | 6.9571236714E10 | +| test.c:605:20:605:21 | ip | 6.9571236714E10 | +| test.c:606:15:606:22 | (...) | 6.9571236714E10 | +| test.c:606:15:606:27 | ... * ... | 6.9571236714E10 | +| test.c:606:16:606:17 | ip | 6.9571236714E10 | +| test.c:606:16:606:21 | ... + ... | 6.9571236714E10 | +| test.c:606:21:606:21 | 1 | 1.0 | +| test.c:606:21:606:21 | (unsigned int)... | 1.0 | +| test.c:606:26:606:27 | 14 | 1.0 | +| test.c:606:26:606:27 | (unsigned int)... | 1.0 | +| test.c:607:10:607:23 | special_number | 1.297918419127476E201 | +| test.c:614:10:614:11 | 0 | 1.0 | +| test.c:615:7:615:8 | c1 | 1.0 | +| test.c:615:13:615:13 | x | 1.0 | +| test.c:615:13:615:23 | ... += ... | 1.0 | +| test.c:615:18:615:23 | 748596 | 1.0 | +| test.c:616:7:616:8 | c2 | 1.0 | +| test.c:616:13:616:13 | x | 2.0 | +| test.c:616:13:616:25 | ... += ... | 2.0 | +| test.c:616:18:616:25 | 84652395 | 1.0 | +| test.c:617:7:617:8 | c3 | 1.0 | +| test.c:617:13:617:13 | x | 4.0 | +| test.c:617:13:617:24 | ... += ... | 4.0 | +| test.c:617:18:617:24 | 3675895 | 1.0 | +| test.c:618:7:618:8 | c4 | 1.0 | +| test.c:618:13:618:13 | x | 8.0 | +| test.c:618:13:618:22 | ... += ... | 8.0 | +| test.c:618:18:618:22 | 98634 | 1.0 | +| test.c:619:7:619:8 | c5 | 1.0 | +| test.c:619:13:619:13 | x | 16.0 | +| test.c:619:13:619:24 | ... += ... | 16.0 | +| test.c:619:18:619:24 | 7834985 | 1.0 | +| test.c:620:7:620:8 | c1 | 2.0 | +| test.c:620:7:620:14 | ... && ... | 1.0 | +| test.c:620:13:620:14 | c2 | 2.0 | +| test.c:620:19:620:19 | x | 32.0 | +| test.c:620:19:620:32 | ... += ... | 32.0 | +| test.c:620:24:620:32 | 938457398 | 1.0 | +| test.c:621:7:621:8 | c1 | 3.0 | +| test.c:621:7:621:14 | ... && ... | 1.0 | +| test.c:621:13:621:14 | c3 | 2.0 | +| test.c:621:19:621:19 | x | 64.0 | +| test.c:621:19:621:31 | ... += ... | 64.0 | +| test.c:621:24:621:31 | 73895648 | 1.0 | +| test.c:622:7:622:8 | c1 | 4.0 | +| test.c:622:7:622:14 | ... && ... | 1.0 | +| test.c:622:13:622:14 | c4 | 2.0 | +| test.c:622:19:622:19 | x | 128.0 | +| test.c:622:19:622:31 | ... += ... | 128.0 | +| test.c:622:24:622:31 | 12345432 | 1.0 | +| test.c:623:7:623:8 | c1 | 5.0 | +| test.c:623:7:623:14 | ... && ... | 1.0 | +| test.c:623:13:623:14 | c5 | 2.0 | +| test.c:623:19:623:19 | x | 256.0 | +| test.c:623:19:623:28 | ... += ... | 256.0 | +| test.c:623:24:623:28 | 38847 | 1.0 | +| test.c:624:7:624:8 | c2 | 5.0 | +| test.c:624:7:624:14 | ... && ... | 1.0 | +| test.c:624:13:624:14 | c3 | 5.0 | +| test.c:624:19:624:19 | x | 512.0 | +| test.c:624:19:624:26 | ... += ... | 512.0 | +| test.c:624:24:624:26 | 234 | 1.0 | +| test.c:626:11:626:11 | x | 1024.0 | +| test.c:626:11:626:15 | ... + ... | 1048576.0 | +| test.c:626:11:626:19 | ... + ... | 1.073741824E9 | +| test.c:626:11:626:23 | ... + ... | 1.099511627776E12 | +| test.c:626:11:626:27 | ... + ... | 1.125899906842624E15 | +| test.c:626:11:626:31 | ... + ... | 1.152921504606847E18 | +| test.c:626:11:626:35 | ... + ... | 1.1805916207174113E21 | +| test.c:626:11:626:39 | ... + ... | 1.2089258196146292E24 | +| test.c:626:11:626:43 | ... + ... | 1.2379400392853803E27 | +| test.c:626:11:626:47 | ... + ... | 1.2676506002282294E30 | +| test.c:626:11:626:51 | ... + ... | 1.298074214633707E33 | +| test.c:626:11:626:55 | ... + ... | 1.329227995784916E36 | +| test.c:626:15:626:15 | x | 1024.0 | +| test.c:626:19:626:19 | x | 1024.0 | +| test.c:626:23:626:23 | x | 1024.0 | +| test.c:626:27:626:27 | x | 1024.0 | +| test.c:626:31:626:31 | x | 1024.0 | +| test.c:626:35:626:35 | x | 1024.0 | +| test.c:626:39:626:39 | x | 1024.0 | +| test.c:626:43:626:43 | x | 1024.0 | +| test.c:626:47:626:47 | x | 1024.0 | +| test.c:626:51:626:51 | x | 1024.0 | +| test.c:626:55:626:55 | x | 1024.0 | +| test.c:627:10:627:10 | y | 1.329227995784916E36 | +| test.c:632:20:632:20 | x | 1.0 | +| test.c:632:20:632:26 | ... < ... | 1.0 | +| test.c:632:20:632:36 | ... ? ... : ... | 1.0 | +| test.c:632:24:632:26 | 100 | 1.0 | +| test.c:632:24:632:26 | (unsigned int)... | 1.0 | +| test.c:632:30:632:30 | x | 1.0 | +| test.c:632:34:632:36 | 100 | 1.0 | +| test.c:632:34:632:36 | (unsigned int)... | 1.0 | +| test.c:635:3:635:4 | y1 | 1.0 | +| test.c:635:9:635:11 | ++ ... | 1.0 | +| test.c:635:11:635:11 | y | 1.0 | +| test.c:636:3:636:4 | y2 | 1.0 | +| test.c:636:19:636:19 | 3 | 1.0 | +| test.c:636:19:636:19 | (unsigned int)... | 1.0 | +| test.c:645:3:645:3 | i | 1.0 | +| test.c:645:3:645:8 | ... = ... | 1.0 | +| test.c:645:7:645:8 | 10 | 1.0 | +| test.c:646:7:646:7 | i | 1.0 | +| test.c:648:3:648:3 | i | 1.0 | +| test.c:648:3:648:8 | ... = ... | 1.0 | +| test.c:648:7:648:8 | 10 | 1.0 | +| test.c:649:3:649:3 | i | 1.0 | +| test.c:649:3:649:9 | ... += ... | 1.0 | +| test.c:649:8:649:9 | 10 | 1.0 | +| test.c:650:7:650:7 | i | 1.0 | +| test.c:652:3:652:3 | i | 1.0 | +| test.c:652:3:652:8 | ... = ... | 1.0 | +| test.c:652:7:652:8 | 40 | 1.0 | +| test.c:653:3:653:3 | i | 1.0 | +| test.c:653:3:653:9 | ... -= ... | 1.0 | +| test.c:653:8:653:9 | 10 | 1.0 | +| test.c:654:7:654:7 | i | 1.0 | +| test.c:656:3:656:3 | i | 1.0 | +| test.c:656:3:656:12 | ... = ... | 1.0 | +| test.c:656:7:656:7 | j | 1.0 | +| test.c:656:7:656:12 | ... = ... | 1.0 | +| test.c:656:11:656:12 | 40 | 1.0 | +| test.c:657:7:657:7 | i | 1.0 | +| test.c:659:3:659:3 | i | 1.0 | +| test.c:659:3:659:15 | ... = ... | 1.0 | +| test.c:659:7:659:15 | (...) | 1.0 | +| test.c:659:8:659:8 | j | 1.0 | +| test.c:659:8:659:14 | ... += ... | 1.0 | +| test.c:659:13:659:14 | 10 | 1.0 | +| test.c:660:7:660:7 | i | 1.0 | +| test.c:662:3:662:3 | i | 1.0 | +| test.c:662:3:662:20 | ... = ... | 1.0 | +| test.c:662:7:662:8 | 20 | 1.0 | +| test.c:662:7:662:20 | ... + ... | 1.0 | +| test.c:662:12:662:20 | (...) | 1.0 | +| test.c:662:13:662:13 | j | 1.0 | +| test.c:662:13:662:19 | ... -= ... | 1.0 | +| test.c:662:18:662:19 | 10 | 1.0 | +| test.c:663:7:663:7 | i | 1.0 | +| test.c:668:14:668:15 | 0 | 1.0 | +| test.c:670:7:670:7 | 3 | 1.0 | +| test.c:670:7:670:7 | (unsigned int)... | 1.0 | +| test.c:670:7:670:12 | ... <= ... | 1.0 | +| test.c:670:7:670:23 | ... && ... | 1.0 | +| test.c:670:7:670:33 | ... && ... | 1.0 | +| test.c:670:7:670:44 | ... && ... | 1.0 | +| test.c:670:12:670:12 | a | 1.0 | +| test.c:670:17:670:17 | a | 1.0 | +| test.c:670:17:670:23 | ... <= ... | 1.0 | +| test.c:670:22:670:23 | 11 | 1.0 | +| test.c:670:22:670:23 | (unsigned int)... | 1.0 | +| test.c:670:28:670:28 | 5 | 1.0 | +| test.c:670:28:670:28 | (unsigned int)... | 1.0 | +| test.c:670:28:670:33 | ... <= ... | 1.0 | +| test.c:670:33:670:33 | b | 1.0 | +| test.c:670:38:670:38 | b | 1.0 | +| test.c:670:38:670:44 | ... <= ... | 1.0 | +| test.c:670:43:670:44 | 23 | 1.0 | +| test.c:670:43:670:44 | (unsigned int)... | 1.0 | +| test.c:671:13:671:13 | a | 1.0 | +| test.c:671:13:671:15 | (int)... | 1.0 | +| test.c:671:13:671:15 | ... * ... | 1.0 | +| test.c:671:15:671:15 | b | 1.0 | +| test.c:672:5:672:9 | total | 1.0 | +| test.c:672:5:672:14 | ... += ... | 1.0 | +| test.c:672:14:672:14 | r | 1.0 | +| test.c:674:7:674:7 | 3 | 1.0 | +| test.c:674:7:674:7 | (unsigned int)... | 1.0 | +| test.c:674:7:674:12 | ... <= ... | 1.0 | +| test.c:674:7:674:23 | ... && ... | 1.0 | +| test.c:674:7:674:33 | ... && ... | 1.0 | +| test.c:674:7:674:44 | ... && ... | 1.0 | +| test.c:674:12:674:12 | a | 2.0 | +| test.c:674:17:674:17 | a | 2.0 | +| test.c:674:17:674:23 | ... <= ... | 1.0 | +| test.c:674:22:674:23 | 11 | 1.0 | +| test.c:674:22:674:23 | (unsigned int)... | 1.0 | +| test.c:674:28:674:28 | 0 | 1.0 | +| test.c:674:28:674:28 | (unsigned int)... | 1.0 | +| test.c:674:28:674:33 | ... <= ... | 1.0 | +| test.c:674:33:674:33 | b | 3.0 | +| test.c:674:38:674:38 | b | 3.0 | +| test.c:674:38:674:44 | ... <= ... | 1.0 | +| test.c:674:43:674:44 | 23 | 1.0 | +| test.c:674:43:674:44 | (unsigned int)... | 1.0 | +| test.c:675:13:675:13 | a | 2.0 | +| test.c:675:13:675:15 | (int)... | 6.0 | +| test.c:675:13:675:15 | ... * ... | 6.0 | +| test.c:675:15:675:15 | b | 3.0 | +| test.c:676:5:676:9 | total | 2.0 | +| test.c:676:5:676:14 | ... += ... | 12.0 | +| test.c:676:14:676:14 | r | 6.0 | +| test.c:678:7:678:7 | 3 | 1.0 | +| test.c:678:7:678:7 | (unsigned int)... | 1.0 | +| test.c:678:7:678:12 | ... <= ... | 1.0 | +| test.c:678:7:678:23 | ... && ... | 1.0 | +| test.c:678:7:678:34 | ... && ... | 1.0 | +| test.c:678:7:678:45 | ... && ... | 1.0 | +| test.c:678:12:678:12 | a | 3.0 | +| test.c:678:17:678:17 | a | 3.0 | +| test.c:678:17:678:23 | ... <= ... | 1.0 | +| test.c:678:22:678:23 | 11 | 1.0 | +| test.c:678:22:678:23 | (unsigned int)... | 1.0 | +| test.c:678:28:678:29 | 13 | 1.0 | +| test.c:678:28:678:29 | (unsigned int)... | 1.0 | +| test.c:678:28:678:34 | ... <= ... | 1.0 | +| test.c:678:34:678:34 | b | 7.0 | +| test.c:678:39:678:39 | b | 7.0 | +| test.c:678:39:678:45 | ... <= ... | 1.0 | +| test.c:678:44:678:45 | 23 | 1.0 | +| test.c:678:44:678:45 | (unsigned int)... | 1.0 | +| test.c:679:13:679:13 | a | 3.0 | +| test.c:679:13:679:15 | (int)... | 21.0 | +| test.c:679:13:679:15 | ... * ... | 21.0 | +| test.c:679:15:679:15 | b | 7.0 | +| test.c:680:5:680:9 | total | 14.0 | +| test.c:680:5:680:14 | ... += ... | 294.0 | +| test.c:680:14:680:14 | r | 21.0 | +| test.c:683:10:683:14 | total | 308.0 | +| test.c:687:14:687:15 | 0 | 1.0 | +| test.c:689:7:689:7 | 5 | 1.0 | +| test.c:689:7:689:7 | (unsigned int)... | 1.0 | +| test.c:689:7:689:12 | ... <= ... | 1.0 | +| test.c:689:7:689:23 | ... && ... | 1.0 | +| test.c:689:12:689:12 | b | 1.0 | +| test.c:689:17:689:17 | b | 1.0 | +| test.c:689:17:689:23 | ... <= ... | 1.0 | +| test.c:689:22:689:23 | 23 | 1.0 | +| test.c:689:22:689:23 | (unsigned int)... | 1.0 | +| test.c:690:13:690:14 | 11 | 1.0 | +| test.c:690:13:690:14 | (unsigned int)... | 1.0 | +| test.c:690:13:690:16 | (int)... | 1.0 | +| test.c:690:13:690:16 | ... * ... | 1.0 | +| test.c:690:16:690:16 | b | 1.0 | +| test.c:691:5:691:9 | total | 1.0 | +| test.c:691:5:691:14 | ... += ... | 1.0 | +| test.c:691:14:691:14 | r | 1.0 | +| test.c:693:7:693:7 | 0 | 1.0 | +| test.c:693:7:693:7 | (unsigned int)... | 1.0 | +| test.c:693:7:693:12 | ... <= ... | 1.0 | +| test.c:693:7:693:23 | ... && ... | 1.0 | +| test.c:693:12:693:12 | b | 2.0 | +| test.c:693:17:693:17 | b | 2.0 | +| test.c:693:17:693:23 | ... <= ... | 1.0 | +| test.c:693:22:693:23 | 23 | 1.0 | +| test.c:693:22:693:23 | (unsigned int)... | 1.0 | +| test.c:694:13:694:14 | 11 | 1.0 | +| test.c:694:13:694:14 | (unsigned int)... | 1.0 | +| test.c:694:13:694:16 | (int)... | 2.0 | +| test.c:694:13:694:16 | ... * ... | 2.0 | +| test.c:694:16:694:16 | b | 2.0 | +| test.c:695:5:695:9 | total | 2.0 | +| test.c:695:5:695:14 | ... += ... | 4.0 | +| test.c:695:14:695:14 | r | 2.0 | +| test.c:697:7:697:8 | 13 | 1.0 | +| test.c:697:7:697:8 | (unsigned int)... | 1.0 | +| test.c:697:7:697:13 | ... <= ... | 1.0 | +| test.c:697:7:697:24 | ... && ... | 1.0 | +| test.c:697:13:697:13 | b | 3.0 | +| test.c:697:18:697:18 | b | 3.0 | +| test.c:697:18:697:24 | ... <= ... | 1.0 | +| test.c:697:23:697:24 | 23 | 1.0 | +| test.c:697:23:697:24 | (unsigned int)... | 1.0 | +| test.c:698:13:698:14 | 11 | 1.0 | +| test.c:698:13:698:14 | (unsigned int)... | 1.0 | +| test.c:698:13:698:16 | (int)... | 3.0 | +| test.c:698:13:698:16 | ... * ... | 3.0 | +| test.c:698:16:698:16 | b | 3.0 | +| test.c:699:5:699:9 | total | 6.0 | +| test.c:699:5:699:14 | ... += ... | 18.0 | +| test.c:699:14:699:14 | r | 3.0 | +| test.c:702:10:702:14 | total | 24.0 | +| test.c:707:3:707:3 | x | 1.0 | +| test.c:707:3:707:22 | ... = ... | 1.0 | +| test.c:707:7:707:7 | y | 1.0 | +| test.c:707:7:707:22 | ... = ... | 1.0 | +| test.c:707:11:707:22 | 1000000003 | 1.0 | +| test.c:708:3:708:4 | xy | 1.0 | +| test.c:708:3:708:12 | ... = ... | 1.0 | +| test.c:708:8:708:8 | x | 1.0 | +| test.c:708:8:708:12 | ... * ... | 1.0 | +| test.c:708:12:708:12 | y | 1.0 | +| test.c:709:10:709:11 | xy | 1.0 | +| test.c:714:3:714:3 | x | 1.0 | +| test.c:714:3:714:14 | ... = ... | 1.0 | +| test.c:714:7:714:14 | 274177 | 1.0 | +| test.c:715:3:715:3 | y | 1.0 | +| test.c:715:3:715:22 | ... = ... | 1.0 | +| test.c:715:7:715:22 | 67280421310721 | 1.0 | +| test.c:716:3:716:4 | xy | 1.0 | +| test.c:716:3:716:12 | ... = ... | 1.0 | +| test.c:716:8:716:8 | x | 1.0 | +| test.c:716:8:716:12 | ... * ... | 1.0 | +| test.c:716:12:716:12 | y | 1.0 | +| test.c:717:10:717:11 | xy | 1.0 | +| test.c:721:7:721:8 | ui | 1.0 | +| test.c:721:7:721:14 | ... >= ... | 1.0 | +| test.c:721:13:721:14 | 10 | 1.0 | +| test.c:721:13:721:14 | (unsigned int)... | 1.0 | +| test.c:722:28:722:44 | (unsigned long)... | 1.0 | +| test.c:722:28:722:49 | ... * ... | 1.0 | +| test.c:722:43:722:44 | ui | 1.0 | +| test.c:722:48:722:49 | (unsigned long)... | 1.0 | +| test.c:722:48:722:49 | ui | 1.0 | +| test.c:723:12:723:17 | result | 1.0 | +| test.c:725:7:725:8 | ul | 1.0 | +| test.c:725:7:725:14 | ... >= ... | 1.0 | +| test.c:725:13:725:14 | 10 | 1.0 | +| test.c:725:13:725:14 | (unsigned long)... | 1.0 | +| test.c:726:28:726:29 | ul | 1.0 | +| test.c:726:28:726:34 | ... * ... | 1.0 | +| test.c:726:33:726:34 | ul | 1.0 | +| test.c:727:12:727:17 | result | 1.0 | +| test.c:729:10:729:10 | 0 | 1.0 | +| test.c:729:10:729:10 | (unsigned long)... | 1.0 | +| test.c:733:7:733:8 | ui | 1.0 | +| test.c:733:7:733:14 | ... <= ... | 1.0 | +| test.c:733:7:733:25 | ... && ... | 1.0 | +| test.c:733:13:733:14 | 10 | 1.0 | +| test.c:733:13:733:14 | (unsigned int)... | 1.0 | +| test.c:733:19:733:20 | ui | 1.0 | +| test.c:733:19:733:25 | ... >= ... | 1.0 | +| test.c:733:25:733:25 | 2 | 1.0 | +| test.c:733:25:733:25 | (unsigned int)... | 1.0 | +| test.c:734:5:734:6 | ui | 1.0 | +| test.c:734:5:734:16 | ... *= ... | 1.0 | +| test.c:734:11:734:12 | ui | 1.0 | +| test.c:734:11:734:16 | ... + ... | 1.0 | +| test.c:734:16:734:16 | 0 | 1.0 | +| test.c:734:16:734:16 | (unsigned int)... | 1.0 | +| test.c:735:12:735:13 | (unsigned long)... | 1.0 | +| test.c:735:12:735:13 | ui | 1.0 | +| test.c:738:26:738:27 | 10 | 1.0 | +| test.c:738:26:738:27 | (unsigned int)... | 1.0 | +| test.c:739:3:739:9 | uiconst | 1.0 | +| test.c:739:3:739:14 | ... *= ... | 1.0 | +| test.c:739:14:739:14 | 4 | 1.0 | +| test.c:739:14:739:14 | (unsigned int)... | 1.0 | +| test.c:741:27:741:28 | 10 | 1.0 | +| test.c:741:27:741:28 | (unsigned long)... | 1.0 | +| test.c:742:3:742:9 | ulconst | 1.0 | +| test.c:742:3:742:14 | ... *= ... | 1.0 | +| test.c:742:14:742:14 | 4 | 1.0 | +| test.c:742:14:742:14 | (unsigned long)... | 1.0 | +| test.c:743:10:743:16 | (unsigned long)... | 1.0 | +| test.c:743:10:743:16 | uiconst | 1.0 | +| test.c:743:10:743:26 | ... + ... | 1.0 | +| test.c:743:20:743:26 | ulconst | 1.0 | +| test.c:747:7:747:7 | i | 1.0 | +| test.c:747:7:747:13 | ... >= ... | 1.0 | +| test.c:747:7:747:23 | ... && ... | 1.0 | +| test.c:747:12:747:13 | - ... | 1.0 | +| test.c:747:13:747:13 | 1 | 1.0 | +| test.c:747:18:747:18 | i | 1.0 | +| test.c:747:18:747:23 | ... <= ... | 1.0 | +| test.c:747:23:747:23 | 2 | 1.0 | +| test.c:748:5:748:5 | i | 1.0 | +| test.c:748:5:748:13 | ... = ... | 1.0 | +| test.c:748:9:748:9 | 5 | 1.0 | +| test.c:748:9:748:13 | ... * ... | 1.0 | +| test.c:748:13:748:13 | i | 1.0 | +| test.c:749:9:749:9 | i | 1.0 | +| test.c:751:5:751:5 | i | 1.0 | +| test.c:751:5:751:14 | ... = ... | 1.0 | +| test.c:751:9:751:9 | i | 1.0 | +| test.c:751:9:751:14 | ... * ... | 1.0 | +| test.c:751:13:751:14 | - ... | 1.0 | +| test.c:751:14:751:14 | 3 | 1.0 | +| test.c:752:9:752:9 | i | 1.0 | +| test.c:754:5:754:5 | i | 1.0 | +| test.c:754:5:754:10 | ... *= ... | 1.0 | +| test.c:754:10:754:10 | 7 | 1.0 | +| test.c:755:9:755:9 | i | 1.0 | +| test.c:757:5:757:5 | i | 1.0 | +| test.c:757:5:757:12 | ... *= ... | 1.0 | +| test.c:757:10:757:12 | - ... | 1.0 | +| test.c:757:11:757:12 | 11 | 1.0 | +| test.c:758:9:758:9 | i | 1.0 | +| test.c:760:7:760:7 | i | 2.0 | +| test.c:760:7:760:13 | ... == ... | 1.0 | +| test.c:760:12:760:13 | - ... | 1.0 | +| test.c:760:13:760:13 | 1 | 1.0 | +| test.c:761:5:761:5 | i | 1.0 | +| test.c:761:5:761:27 | ... = ... | 2.0 | +| test.c:761:9:761:9 | i | 2.0 | +| test.c:761:9:761:27 | ... * ... | 2.0 | +| test.c:761:13:761:27 | (int)... | 1.0 | +| test.c:761:18:761:27 | 4294967295 | 1.0 | +| test.c:762:9:762:9 | i | 2.0 | +| test.c:764:3:764:3 | i | 1.0 | +| test.c:764:3:764:12 | ... = ... | 4.0 | +| test.c:764:7:764:7 | i | 4.0 | +| test.c:764:7:764:12 | ... * ... | 4.0 | +| test.c:764:11:764:12 | - ... | 1.0 | +| test.c:764:12:764:12 | 1 | 1.0 | +| test.c:765:10:765:10 | i | 4.0 | +| test.c:767:20:767:20 | 1 | 1.0 | +| test.c:767:20:767:20 | (signed char)... | 1.0 | +| test.c:768:3:768:3 | i | 1.0 | +| test.c:768:3:768:17 | ... = ... | 1.0 | +| test.c:768:7:768:17 | (...) | 1.0 | +| test.c:768:7:768:17 | (int)... | 1.0 | +| test.c:768:8:768:11 | * ... | 1.0 | +| test.c:768:8:768:16 | ... *= ... | 1.0 | +| test.c:768:10:768:11 | sc | 1.0 | +| test.c:768:16:768:16 | 2 | 1.0 | +| test.c:770:7:770:7 | i | 1.0 | +| test.c:772:10:772:10 | 0 | 1.0 | +| test.c:777:7:777:7 | (int)... | 1.0 | +| test.c:777:7:777:7 | n | 1.0 | +| test.c:779:7:779:7 | n | 1.0 | +| test.c:779:7:779:11 | ... > ... | 1.0 | +| test.c:779:11:779:11 | 0 | 1.0 | +| test.c:779:11:779:11 | (unsigned int)... | 1.0 | +| test.c:780:9:780:9 | (int)... | 1.0 | +| test.c:780:9:780:9 | n | 1.0 | +| test.c:783:7:783:7 | n | 2.0 | +| test.c:783:7:783:12 | ... != ... | 1.0 | +| test.c:783:12:783:12 | 0 | 1.0 | +| test.c:783:12:783:12 | (unsigned int)... | 1.0 | +| test.c:784:9:784:9 | (int)... | 2.0 | +| test.c:784:9:784:9 | n | 2.0 | +| test.c:786:9:786:9 | (int)... | 2.0 | +| test.c:786:9:786:9 | n | 2.0 | +| test.c:789:7:789:8 | ! ... | 1.0 | +| test.c:789:8:789:8 | n | 4.0 | +| test.c:790:9:790:9 | (int)... | 4.0 | +| test.c:790:9:790:9 | n | 4.0 | +| test.c:792:9:792:9 | (int)... | 4.0 | +| test.c:792:9:792:9 | n | 4.0 | +| test.c:795:10:795:10 | n | 13.0 | +| test.c:795:10:795:15 | ... != ... | 1.0 | +| test.c:795:15:795:15 | 0 | 1.0 | +| test.c:795:15:795:15 | (unsigned int)... | 1.0 | +| test.c:796:5:796:5 | n | 13.0 | +| test.c:796:5:796:7 | ... -- | 13.0 | +| test.c:799:7:799:7 | (int)... | 13.0 | +| test.c:799:7:799:7 | n | 13.0 | +| test.c:803:7:803:7 | (int)... | 1.0 | +| test.c:803:7:803:7 | n | 1.0 | +| test.c:803:7:803:11 | ... < ... | 1.0 | +| test.c:803:11:803:11 | 0 | 1.0 | +| test.c:806:7:806:7 | (int)... | 1.0 | +| test.c:806:7:806:7 | n | 1.0 | +| test.c:806:7:806:12 | ... == ... | 1.0 | +| test.c:806:12:806:12 | 0 | 1.0 | +| test.c:807:9:807:9 | (int)... | 1.0 | +| test.c:807:9:807:9 | n | 1.0 | +| test.c:809:9:809:9 | (int)... | 1.0 | +| test.c:809:9:809:9 | n | 1.0 | +| test.c:812:7:812:7 | n | 2.0 | +| test.c:813:9:813:9 | (int)... | 2.0 | +| test.c:813:9:813:9 | n | 2.0 | +| test.c:815:9:815:9 | (int)... | 2.0 | +| test.c:815:9:815:9 | n | 2.0 | +| test.c:818:10:818:10 | (int)... | 13.0 | +| test.c:818:10:818:10 | n | 12.0 | +| test.c:818:10:818:15 | ... != ... | 1.0 | +| test.c:818:15:818:15 | 0 | 1.0 | +| test.c:819:5:819:5 | n | 12.0 | +| test.c:819:5:819:7 | ... -- | 12.0 | +| test.c:822:7:822:7 | (int)... | 12.0 | +| test.c:822:7:822:7 | n | 12.0 | +| test.c:826:7:826:7 | (int)... | 1.0 | +| test.c:826:7:826:7 | n | 1.0 | +| test.c:826:7:826:12 | ... != ... | 1.0 | +| test.c:826:12:826:12 | 0 | 1.0 | +| test.c:827:9:827:9 | (int)... | 1.0 | +| test.c:827:9:827:9 | n | 1.0 | +| test.c:827:9:827:14 | ... >= ... | 1.0 | +| test.c:827:14:827:14 | 0 | 1.0 | +| test.c:828:11:828:11 | (int)... | 1.0 | +| test.c:828:11:828:11 | n | 1.0 | +| test.c:832:7:832:7 | (int)... | 2.0 | +| test.c:832:7:832:7 | n | 2.0 | +| test.c:832:7:832:12 | ... >= ... | 1.0 | +| test.c:832:12:832:12 | 5 | 1.0 | +| test.c:833:9:833:9 | 2 | 1.0 | +| test.c:833:9:833:13 | ... * ... | 2.0 | +| test.c:833:9:833:18 | ... - ... | 2.0 | +| test.c:833:9:833:23 | ... == ... | 1.0 | +| test.c:833:13:833:13 | (int)... | 2.0 | +| test.c:833:13:833:13 | n | 2.0 | +| test.c:833:17:833:18 | 10 | 1.0 | +| test.c:833:23:833:23 | 0 | 1.0 | +| test.c:836:9:836:9 | (int)... | 2.0 | +| test.c:836:9:836:9 | n | 2.0 | +| test.c:839:7:839:7 | (int)... | 3.0 | +| test.c:839:7:839:7 | n | 3.0 | +| test.c:839:7:839:17 | ... != ... | 1.0 | +| test.c:839:7:839:32 | ... && ... | 1.0 | +| test.c:839:12:839:17 | - ... | 1.0 | +| test.c:839:13:839:17 | 32768 | 1.0 | +| test.c:839:22:839:22 | (int)... | 3.0 | +| test.c:839:22:839:22 | n | 3.0 | +| test.c:839:22:839:32 | ... != ... | 1.0 | +| test.c:839:27:839:32 | - ... | 1.0 | +| test.c:839:28:839:32 | 32767 | 1.0 | +| test.c:840:9:840:9 | (int)... | 3.0 | +| test.c:840:9:840:9 | n | 3.0 | +| test.c:843:7:843:7 | (int)... | 4.0 | +| test.c:843:7:843:7 | n | 4.0 | +| test.c:843:7:843:12 | ... >= ... | 1.0 | +| test.c:843:12:843:12 | 0 | 1.0 | +| test.c:844:5:844:5 | n | 4.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 16.0 | +| test.c:844:10:844:10 | (int)... | 4.0 | +| test.c:844:10:844:10 | n | 4.0 | +| test.c:844:14:844:14 | (int)... | 4.0 | +| test.c:844:14:844:14 | n | 4.0 | +| test.c:845:5:845:6 | ! ... | 1.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 64.0 | +| test.c:845:6:845:6 | n | 8.0 | +| test.c:845:10:845:10 | (int)... | 8.0 | +| test.c:845:10:845:10 | n | 8.0 | +| test.c:845:14:845:14 | (int)... | 8.0 | +| test.c:845:14:845:14 | n | 8.0 | +| test.c:856:7:856:8 | (unsigned long)... | 1.0 | +| test.c:856:7:856:8 | ss | 1.0 | +| test.c:856:7:856:22 | ... < ... | 1.0 | +| test.c:856:12:856:22 | sizeof(int) | 1.0 | +| test.c:857:9:857:10 | (int)... | 1.0 | +| test.c:857:9:857:10 | ss | 1.0 | +| test.c:860:7:860:8 | (int)... | 2.0 | +| test.c:860:7:860:8 | ss | 2.0 | +| test.c:860:7:860:17 | ... < ... | 1.0 | +| test.c:860:12:860:17 | 32769 | 1.0 | +| test.c:861:9:861:10 | (int)... | 2.0 | +| test.c:861:9:861:10 | ss | 2.0 | +| test.c:864:7:864:15 | (int)... | 1.0 | +| test.c:864:7:864:15 | (short)... | 1.0 | +| test.c:864:7:864:20 | ... >= ... | 1.0 | +| test.c:864:14:864:15 | us | 1.0 | +| test.c:864:20:864:20 | 0 | 1.0 | +| test.c:865:9:865:10 | (int)... | 1.0 | +| test.c:865:9:865:10 | us | 1.0 | +| test.c:868:7:868:15 | (int)... | 2.0 | +| test.c:868:7:868:15 | (short)... | 2.0 | +| test.c:868:7:868:21 | ... >= ... | 1.0 | +| test.c:868:14:868:15 | us | 2.0 | +| test.c:868:20:868:21 | - ... | 1.0 | +| test.c:868:21:868:21 | 1 | 1.0 | +| test.c:869:9:869:10 | (int)... | 2.0 | +| test.c:869:9:869:10 | us | 2.0 | +| test.c:872:7:872:8 | (unsigned long)... | 3.0 | +| test.c:872:7:872:8 | ss | 3.0 | +| test.c:872:7:872:23 | ... >= ... | 1.0 | +| test.c:872:13:872:23 | sizeof(int) | 1.0 | +| test.c:873:9:873:10 | (int)... | 3.0 | +| test.c:873:9:873:10 | ss | 3.0 | +| test.c:876:7:876:8 | (int)... | 4.0 | +| test.c:876:7:876:8 | ss | 4.0 | +| test.c:876:7:876:12 | (unsigned long)... | 4.0 | +| test.c:876:7:876:12 | ... + ... | 4.0 | +| test.c:876:7:876:26 | ... < ... | 1.0 | +| test.c:876:12:876:12 | 1 | 1.0 | +| test.c:876:16:876:26 | sizeof(int) | 1.0 | +| test.c:877:9:877:10 | (int)... | 4.0 | +| test.c:877:9:877:10 | ss | 4.0 | +| test.c:883:8:883:8 | s | 1.0 | +| test.c:883:8:883:12 | ... = ... | 1.0 | +| test.c:883:12:883:12 | 0 | 1.0 | +| test.c:883:15:883:15 | s | 13.0 | +| test.c:883:15:883:20 | ... < ... | 1.0 | +| test.c:883:19:883:20 | 10 | 1.0 | +| test.c:883:23:883:23 | s | 13.0 | +| test.c:883:23:883:25 | ... ++ | 13.0 | +| test.c:884:18:884:18 | s | 13.0 | +| test.c:884:18:884:22 | ... + ... | 13.0 | +| test.c:884:22:884:22 | s | 13.0 | +| test.c:885:9:885:14 | result | 13.0 | +| test.c:890:10:890:11 | 0 | 1.0 | +| test.c:891:7:891:7 | i | 1.0 | +| test.c:891:7:891:11 | ... < ... | 1.0 | +| test.c:891:11:891:11 | 0 | 1.0 | +| test.c:892:9:892:9 | i | 1.0 | +| test.c:895:20:895:20 | 0 | 1.0 | +| test.c:895:20:895:20 | (unsigned int)... | 1.0 | +| test.c:896:7:896:7 | u | 1.0 | +| test.c:896:7:896:11 | ... < ... | 1.0 | +| test.c:896:11:896:11 | 0 | 1.0 | +| test.c:896:11:896:11 | (unsigned int)... | 1.0 | +| test.c:897:9:897:9 | (int)... | 1.0 | +| test.c:897:9:897:9 | u | 1.0 | +| test.c:902:12:902:12 | s | 1.0 | +| test.c:902:12:902:16 | ... % ... | 1.0 | +| test.c:902:16:902:16 | 5 | 1.0 | +| test.c:903:7:903:8 | s2 | 1.0 | +| test.c:908:7:908:7 | x | 1.0 | +| test.c:909:9:909:9 | y | 1.0 | +| test.c:909:9:909:14 | ... != ... | 1.0 | +| test.c:909:14:909:14 | 0 | 1.0 | +| test.c:910:12:910:12 | 0 | 1.0 | +| test.c:913:7:913:7 | y | 2.0 | +| test.c:922:7:922:7 | x | 1.0 | +| test.c:922:7:922:13 | ... >= ... | 1.0 | +| test.c:922:12:922:13 | 10 | 1.0 | +| test.c:927:7:927:7 | x | 13.0 | +| test.c:932:16:932:26 | 2147483647 | 1.0 | +| test.c:933:16:933:19 | 256 | 1.0 | +| test.c:934:7:934:13 | (...) | 1.0 | +| test.c:934:7:934:20 | ... <= ... | 1.0 | +| test.c:934:8:934:8 | x | 1.0 | +| test.c:934:8:934:12 | ... + ... | 1.0 | +| test.c:934:12:934:12 | y | 1.0 | +| test.c:934:18:934:20 | 512 | 1.0 | +| test.c:935:9:935:9 | x | 1.0 | +| test.c:936:9:936:9 | y | 1.0 | +| test.cpp:9:11:9:12 | - ... | 1.0 | +| test.cpp:9:12:9:12 | 1 | 1.0 | +| test.cpp:10:7:10:7 | (bool)... | 1.0 | +| test.cpp:10:7:10:7 | b | 1.0 | +| test.cpp:11:5:11:5 | x | 1.0 | +| test.cpp:11:5:11:14 | ... = ... | 1.0 | +| test.cpp:11:12:11:12 | call to operator[] | 1.0 | +| test.cpp:11:12:11:14 | (reference dereference) | 1.0 | +| test.cpp:11:13:11:13 | 3 | 1.0 | +| test.cpp:13:10:13:10 | x | 2.0 | +| test.cpp:18:12:18:31 | (int)... | 1.0 | +| test.cpp:18:12:18:31 | static_cast... | 1.0 | +| test.cpp:18:30:18:30 | x | 1.0 | +| test.cpp:19:10:19:11 | x0 | 1.0 | +| test.cpp:27:7:27:7 | y | 1.0 | +| test.cpp:27:7:27:12 | ... == ... | 1.0 | +| test.cpp:27:12:27:12 | 0 | 1.0 | +| test.cpp:28:5:28:5 | x | 1.0 | +| test.cpp:28:5:28:9 | ... = ... | 1.0 | +| test.cpp:28:9:28:9 | 0 | 1.0 | +| test.cpp:30:7:30:7 | y | 2.0 | +| test.cpp:30:7:30:13 | ... == ... | 1.0 | +| test.cpp:30:12:30:13 | - ... | 1.0 | +| test.cpp:30:13:30:13 | 1 | 1.0 | +| test.cpp:31:5:31:5 | x | 1.0 | +| test.cpp:31:5:31:10 | ... = ... | 1.0 | +| test.cpp:31:9:31:10 | - ... | 1.0 | +| test.cpp:31:10:31:10 | 1 | 1.0 | +| test.cpp:33:7:33:7 | y | 4.0 | +| test.cpp:33:7:33:12 | ... == ... | 1.0 | +| test.cpp:33:12:33:12 | 1 | 1.0 | +| test.cpp:34:5:34:5 | x | 1.0 | +| test.cpp:34:5:34:9 | ... = ... | 1.0 | +| test.cpp:34:9:34:9 | 1 | 1.0 | +| test.cpp:36:7:36:7 | y | 8.0 | +| test.cpp:36:7:36:15 | ... == ... | 1.0 | +| test.cpp:36:12:36:15 | - ... | 1.0 | +| test.cpp:36:13:36:15 | 128 | 1.0 | +| test.cpp:37:5:37:5 | x | 1.0 | +| test.cpp:37:5:37:12 | ... = ... | 1.0 | +| test.cpp:37:9:37:12 | - ... | 1.0 | +| test.cpp:37:10:37:12 | 128 | 1.0 | +| test.cpp:39:7:39:7 | y | 16.0 | +| test.cpp:39:7:39:14 | ... == ... | 1.0 | +| test.cpp:39:12:39:14 | 128 | 1.0 | +| test.cpp:40:5:40:5 | x | 1.0 | +| test.cpp:40:5:40:11 | ... = ... | 1.0 | +| test.cpp:40:9:40:11 | 128 | 1.0 | +| test.cpp:42:7:42:7 | y | 32.0 | +| test.cpp:42:7:42:16 | ... == ... | 1.0 | +| test.cpp:42:12:42:16 | - ... | 1.0 | +| test.cpp:42:13:42:16 | 1024 | 1.0 | +| test.cpp:43:5:43:5 | x | 1.0 | +| test.cpp:43:5:43:13 | ... = ... | 1.0 | +| test.cpp:43:9:43:13 | - ... | 1.0 | +| test.cpp:43:10:43:13 | 1024 | 1.0 | +| test.cpp:45:7:45:7 | y | 64.0 | +| test.cpp:45:7:45:15 | ... == ... | 1.0 | +| test.cpp:45:12:45:15 | 1024 | 1.0 | +| test.cpp:46:5:46:5 | x | 1.0 | +| test.cpp:46:5:46:12 | ... = ... | 1.0 | +| test.cpp:46:9:46:12 | 1024 | 1.0 | +| test.cpp:49:10:49:11 | 0 | 1.0 | +| test.cpp:51:7:51:7 | x | 8.0 | +| test.cpp:51:7:51:12 | ... == ... | 1.0 | +| test.cpp:51:12:51:12 | 0 | 1.0 | +| test.cpp:52:15:52:21 | (bool)... | 1.0 | +| test.cpp:52:21:52:21 | x | 8.0 | +| test.cpp:53:5:53:5 | t | 1.0 | +| test.cpp:53:5:53:16 | ... += ... | 8.0 | +| test.cpp:53:10:53:16 | (int)... | 8.0 | +| test.cpp:53:15:53:16 | xb | 8.0 | +| test.cpp:56:7:56:7 | x | 16.0 | +| test.cpp:56:7:56:11 | ... > ... | 1.0 | +| test.cpp:56:11:56:11 | 0 | 1.0 | +| test.cpp:57:15:57:21 | (bool)... | 1.0 | +| test.cpp:57:21:57:21 | x | 16.0 | +| test.cpp:58:5:58:5 | t | 9.0 | +| test.cpp:58:5:58:16 | ... += ... | 144.0 | +| test.cpp:58:10:58:16 | (int)... | 16.0 | +| test.cpp:58:15:58:16 | xb | 16.0 | +| test.cpp:61:7:61:7 | x | 17.0 | +| test.cpp:61:7:61:11 | ... < ... | 1.0 | +| test.cpp:61:11:61:11 | 0 | 1.0 | +| test.cpp:62:15:62:21 | (bool)... | 1.0 | +| test.cpp:62:21:62:21 | x | 17.0 | +| test.cpp:63:5:63:5 | t | 153.0 | +| test.cpp:63:5:63:16 | ... += ... | 2601.0 | +| test.cpp:63:10:63:16 | (int)... | 17.0 | +| test.cpp:63:15:63:16 | xb | 17.0 | +| test.cpp:66:13:66:19 | (bool)... | 1.0 | +| test.cpp:66:19:66:19 | x | 18.0 | +| test.cpp:67:3:67:3 | t | 2754.0 | +| test.cpp:67:3:67:14 | ... += ... | 49572.0 | +| test.cpp:67:8:67:14 | (int)... | 18.0 | +| test.cpp:67:13:67:14 | xb | 18.0 | +| test.cpp:69:10:69:10 | b | 1.0 | +| test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | +| test.cpp:69:15:69:21 | (bool)... | 1.0 | +| test.cpp:69:21:69:21 | t | 49572.0 | +| test.cpp:74:30:74:30 | (int)... | 1.0 | +| test.cpp:74:30:74:30 | c | 1.0 | +| test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | +| test.cpp:74:30:74:34 | ... + ... | 1.0 | +| test.cpp:74:34:74:34 | (int)... | 1.0 | +| test.cpp:74:34:74:34 | c | 1.0 | +| test.cpp:75:7:75:30 | (int)... | 1.0 | +| test.cpp:75:7:75:30 | (unsigned char)... | 1.0 | +| test.cpp:75:7:75:35 | ... == ... | 1.0 | +| test.cpp:75:22:75:30 | c_times_2 | 1.0 | +| test.cpp:75:35:75:35 | 0 | 1.0 | +| test.cpp:77:5:77:13 | c_times_2 | 1.0 | +| test.cpp:79:3:79:11 | c_times_2 | 1.0 | +| test.cpp:83:16:83:22 | (reference dereference) | 1.0 | +| test.cpp:83:16:83:22 | (reference to) | 1.0 | +| test.cpp:83:16:83:22 | aliased | 1.0 | +| test.cpp:85:7:85:7 | (reference dereference) | 1.0 | +| test.cpp:85:7:85:7 | i | 1.0 | +| test.cpp:85:7:85:12 | ... >= ... | 1.0 | +| test.cpp:85:12:85:12 | 2 | 1.0 | +| test.cpp:86:12:86:12 | (reference dereference) | 1.0 | +| test.cpp:86:12:86:12 | i | 1.0 | +| test.cpp:88:7:88:8 | (reference dereference) | 1.0 | +| test.cpp:88:7:88:8 | ci | 1.0 | +| test.cpp:88:7:88:13 | ... >= ... | 1.0 | +| test.cpp:88:13:88:13 | 2 | 1.0 | +| test.cpp:89:12:89:13 | (reference dereference) | 1.0 | +| test.cpp:89:12:89:13 | ci | 1.0 | +| test.cpp:91:7:91:13 | (reference dereference) | 1.0 | +| test.cpp:91:7:91:13 | aliased | 1.0 | +| test.cpp:91:7:91:18 | ... >= ... | 1.0 | +| test.cpp:91:18:91:18 | 2 | 1.0 | +| test.cpp:92:12:92:18 | (reference dereference) | 1.0 | +| test.cpp:92:12:92:18 | aliased | 1.0 | +| test.cpp:94:7:94:11 | (reference dereference) | 1.0 | +| test.cpp:94:7:94:11 | alias | 1.0 | +| test.cpp:94:7:94:16 | ... >= ... | 1.0 | +| test.cpp:94:16:94:16 | 2 | 1.0 | +| test.cpp:95:12:95:16 | (reference dereference) | 1.0 | +| test.cpp:95:12:95:16 | alias | 1.0 | +| test.cpp:97:10:97:10 | (reference dereference) | 13.0 | +| test.cpp:97:10:97:19 | ... <= ... | 1.0 | +| test.cpp:97:15:97:19 | 12345 | 1.0 | +| test.cpp:97:22:97:22 | (reference dereference) | 13.0 | +| test.cpp:97:22:97:24 | ... ++ | 13.0 | +| test.cpp:98:5:98:5 | (reference dereference) | 1.0 | +| test.cpp:98:5:98:5 | i | 1.0 | +| test.cpp:98:5:98:9 | ... = ... | 13.0 | +| test.cpp:98:9:98:9 | (reference dereference) | 13.0 | +| test.cpp:99:5:99:5 | (reference dereference) | 13.0 | +| test.cpp:102:10:102:10 | 0 | 1.0 | +| test.cpp:106:7:106:7 | (int)... | 1.0 | +| test.cpp:106:7:106:7 | n | 1.0 | +| test.cpp:106:7:106:11 | ... < ... | 1.0 | +| test.cpp:106:11:106:11 | 0 | 1.0 | +| test.cpp:109:7:109:7 | (bool)... | 1.0 | +| test.cpp:109:7:109:7 | n | 1.0 | +| test.cpp:110:5:110:5 | n | 1.0 | +| test.cpp:112:5:112:5 | n | 1.0 | +| test.cpp:115:7:115:8 | ! ... | 1.0 | +| test.cpp:115:8:115:8 | (bool)... | 1.0 | +| test.cpp:115:8:115:8 | n | 2.0 | +| test.cpp:116:5:116:5 | n | 2.0 | +| test.cpp:118:5:118:5 | n | 2.0 | +| test.cpp:121:3:121:3 | (bool)... | 1.0 | +| test.cpp:121:3:121:3 | n | 4.0 | +| test.cpp:121:3:121:12 | ... ? ... : ... | 16.0 | +| test.cpp:121:8:121:8 | n | 4.0 | +| test.cpp:121:12:121:12 | n | 4.0 | +| test.cpp:122:3:122:4 | ! ... | 1.0 | +| test.cpp:122:3:122:12 | ... ? ... : ... | 64.0 | +| test.cpp:122:4:122:4 | (bool)... | 1.0 | +| test.cpp:122:4:122:4 | n | 8.0 | +| test.cpp:122:8:122:8 | n | 8.0 | +| test.cpp:122:12:122:12 | n | 8.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql new file mode 100644 index 00000000000..ec82c44ef82 --- /dev/null +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql @@ -0,0 +1,5 @@ +import cpp +import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis + +from Expr e +select e, SimpleRangeAnalysisInternal::estimateNrOfBounds(e) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 0cd2437e073..1d0415e7a78 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:432:5:434:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:435:6:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:436:8:454:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:439:10:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:439:31:439:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:441:13:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:448:12:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:449:12:449:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:451:15:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:455:6:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:458:8:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:458:29:458:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:460:11:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:463:6:463:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:467:10:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:467:31:467:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:469:13:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:472:9:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:476:10:495:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:479:12:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:480:12:480:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:15:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:489:14:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:490:14:490:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:492:17:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:496:9:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:499:14:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:500:14:500:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:502:17:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:509:12:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:510:12:510:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:512:15:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:515:11:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:518:9:520:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:521:9:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:522:14:541:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:16:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:526:16:526:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:528:19:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:535:18:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:18:536:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:538:21:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:542:12:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:545:14:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:546:14:546:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:548:17:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:12:551:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:555:16:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:556:16:556:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:558:19:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:15:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:565:12:584:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:568:14:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:569:14:569:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:17:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:578:16:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:579:16:579:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:581:19:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:585:11:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:588:16:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:589:16:589:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:591:19:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:598:14:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:599:14:599:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:601:17:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:604:13:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:632:20:632:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index b34beda10d4..4e7d05d9c08 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,8 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:418:20:418:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:630:5:630:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:631:5:631:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:432:4:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:432:5:434:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:435:6:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:436:8:454:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:439:10:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:439:31:439:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:441:13:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:448:12:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:449:12:449:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:451:15:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:455:6:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:458:8:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:458:29:458:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:460:11:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:463:6:463:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:467:10:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:467:31:467:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:469:13:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:472:9:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:476:10:495:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:479:12:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:480:12:480:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:15:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:489:14:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:490:14:490:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:492:17:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:496:9:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:499:14:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:500:14:500:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:502:17:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:509:12:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:510:12:510:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:512:15:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:515:11:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:518:9:520:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:521:9:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:522:14:541:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:16:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:526:16:526:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:528:19:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:535:18:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:18:536:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:538:21:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:542:12:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:545:14:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:546:14:546:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:548:17:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:12:551:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:555:16:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:556:16:556:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:558:19:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:15:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:565:12:584:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:568:14:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:569:14:569:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:17:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:578:16:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:579:16:579:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:581:19:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:585:11:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:588:16:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:589:16:589:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:591:19:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:598:14:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:599:14:599:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:601:17:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:604:13:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:632:20:632:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:844:5:844:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:845:5:845:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index 26e6a49e6f6..c161dcdbb05 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,6 +413,220 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } +int repeated_if_statements(unsigned int rhs) { + // Test how many bounds we estimate for `if` statements without `else` + // branches where the following node is both a normal phi node and a guard phi + // node. + if (rhs < 12) { rhs << 1; } + if (rhs < 13) { rhs << 1; } + if (rhs < 14) { rhs << 1; } + if (rhs < 15) { rhs << 1; } + if (rhs < 16) { rhs << 1; } + return rhs; // rhs has 6 bounds +} + +unsigned int conditional_nested_guards(unsigned int ip) { + // This tests a combinatorial explosion that can happen from a large number of + // nested linear guards. + unsigned int special_number = + (14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17) > + (2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 + ? 14 * ip + : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17 + : 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) > + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14) + ? 2 * (ip * 14 + 32) + + (4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + 2 * ip * 14 + (2 * ip + 1) * 17 + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 2 * ip * 14 + (2 * ip + 1) * 17) + : 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) > + (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) + ? 4 * (ip * 14 + 32) + + (2 * ip * 14 + 32) + + 2 * (ip * 14 + 64) + + ((2 * ip + 1) * 14 > + (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) + ? (2 * ip + 1) * 14 + : 14 * (2 * ip) > 17 * ip + ? 14 * (2 * ip) + : 14 * ip) + : 14 * ip > (ip + 1) * 17 + ? 14 * ip + : (ip + 1) * 14; + return special_number; +} + +int many_conditional_assignments(int c1, int c2, int c3, int c4, int c5) { + // This tests a combinatorial explosion that can happen from many conditional + // assignments, since each conditional assignment doubles the number of + // bounds. + int x = 0; + if (c1) { x += 748596; } + if (c2) { x += 84652395; } + if (c3) { x += 3675895; } + if (c4) { x += 98634; } + if (c5) { x += 7834985; } + if (c1 && c2) { x += 938457398; } + if (c1 && c3) { x += 73895648; } + if (c1 && c4) { x += 12345432; } + if (c1 && c5) { x += 38847; } + if (c2 && c3) { x += 234; } + // x now has 2^10 bounds, the 10 additions below give (2^10)^10 bounds + int y = x + x + x + x + x + x + x + x + x + x + x + x; + return y; +} + // Test the comma expression. unsigned int test_comma01(unsigned int x) { unsigned int y = x < 100 ? x : 100; diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 8696ecfe8d0..d4c776a065d 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,197 +485,519 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:418:20:418:20 | x | 4294967295 | -| test.c:418:30:418:30 | x | 99 | -| test.c:421:3:421:4 | y1 | 4294967295 | -| test.c:421:11:421:11 | y | 100 | -| test.c:421:14:421:14 | y | 101 | -| test.c:422:3:422:4 | y2 | 4294967295 | -| test.c:422:9:422:9 | y | 101 | -| test.c:422:14:422:14 | y | 102 | -| test.c:422:22:422:22 | y | 105 | -| test.c:423:10:423:11 | y1 | 101 | -| test.c:423:15:423:16 | y2 | 105 | -| test.c:431:3:431:3 | i | 2147483647 | -| test.c:432:7:432:7 | i | 10 | -| test.c:434:3:434:3 | i | 2147483647 | -| test.c:435:3:435:3 | i | 10 | -| test.c:436:7:436:7 | i | 20 | -| test.c:438:3:438:3 | i | 2147483647 | -| test.c:439:3:439:3 | i | 40 | -| test.c:440:7:440:7 | i | 30 | -| test.c:442:3:442:3 | i | 2147483647 | -| test.c:442:7:442:7 | j | 2147483647 | -| test.c:443:7:443:7 | i | 40 | -| test.c:445:3:445:3 | i | 2147483647 | -| test.c:445:8:445:8 | j | 40 | -| test.c:446:7:446:7 | i | 50 | -| test.c:448:3:448:3 | i | 2147483647 | -| test.c:448:13:448:13 | j | 50 | -| test.c:449:7:449:7 | i | 60 | -| test.c:456:12:456:12 | a | 4294967295 | -| test.c:456:17:456:17 | a | 4294967295 | -| test.c:456:33:456:33 | b | 4294967295 | -| test.c:456:38:456:38 | b | 4294967295 | -| test.c:457:13:457:13 | a | 11 | -| test.c:457:15:457:15 | b | 23 | -| test.c:458:5:458:9 | total | 0 | -| test.c:458:14:458:14 | r | 253 | -| test.c:460:12:460:12 | a | 4294967295 | -| test.c:460:17:460:17 | a | 4294967295 | -| test.c:460:33:460:33 | b | 4294967295 | -| test.c:460:38:460:38 | b | 4294967295 | -| test.c:461:13:461:13 | a | 11 | -| test.c:461:15:461:15 | b | 23 | -| test.c:462:5:462:9 | total | 253 | -| test.c:462:14:462:14 | r | 253 | -| test.c:464:12:464:12 | a | 4294967295 | -| test.c:464:17:464:17 | a | 4294967295 | -| test.c:464:34:464:34 | b | 4294967295 | -| test.c:464:39:464:39 | b | 4294967295 | -| test.c:465:13:465:13 | a | 11 | -| test.c:465:15:465:15 | b | 23 | -| test.c:466:5:466:9 | total | 506 | -| test.c:466:14:466:14 | r | 253 | -| test.c:469:10:469:14 | total | 759 | -| test.c:475:12:475:12 | b | 4294967295 | -| test.c:475:17:475:17 | b | 4294967295 | -| test.c:476:16:476:16 | b | 23 | -| test.c:477:5:477:9 | total | 0 | -| test.c:477:14:477:14 | r | 253 | -| test.c:479:12:479:12 | b | 4294967295 | -| test.c:479:17:479:17 | b | 4294967295 | -| test.c:480:16:480:16 | b | 23 | -| test.c:481:5:481:9 | total | 253 | -| test.c:481:14:481:14 | r | 253 | -| test.c:483:13:483:13 | b | 4294967295 | -| test.c:483:18:483:18 | b | 4294967295 | -| test.c:484:16:484:16 | b | 23 | -| test.c:485:5:485:9 | total | 506 | -| test.c:485:14:485:14 | r | 253 | -| test.c:488:10:488:14 | total | 759 | -| test.c:493:3:493:3 | x | 18446744073709551616 | -| test.c:493:7:493:7 | y | 18446744073709551616 | -| test.c:494:3:494:4 | xy | 18446744073709551616 | -| test.c:494:8:494:8 | x | 1000000003 | -| test.c:494:12:494:12 | y | 1000000003 | -| test.c:495:10:495:11 | xy | 1000000006000000000 | -| test.c:500:3:500:3 | x | 18446744073709551616 | -| test.c:501:3:501:3 | y | 18446744073709551616 | -| test.c:502:3:502:4 | xy | 18446744073709551616 | -| test.c:502:8:502:8 | x | 274177 | -| test.c:502:12:502:12 | y | 67280421310721 | -| test.c:503:10:503:11 | xy | 18446744073709551616 | -| test.c:507:7:507:8 | ui | 4294967295 | -| test.c:508:43:508:44 | ui | 4294967295 | -| test.c:508:48:508:49 | ui | 4294967295 | -| test.c:509:12:509:17 | result | 18446744065119617024 | -| test.c:511:7:511:8 | ul | 18446744073709551616 | -| test.c:512:28:512:29 | ul | 18446744073709551616 | -| test.c:512:33:512:34 | ul | 18446744073709551616 | -| test.c:513:12:513:17 | result | 18446744073709551616 | -| test.c:519:7:519:8 | ui | 4294967295 | -| test.c:519:19:519:20 | ui | 10 | -| test.c:520:5:520:6 | ui | 10 | -| test.c:520:11:520:12 | ui | 10 | -| test.c:521:12:521:13 | ui | 100 | -| test.c:525:3:525:9 | uiconst | 10 | -| test.c:528:3:528:9 | ulconst | 10 | -| test.c:529:10:529:16 | uiconst | 40 | -| test.c:529:20:529:26 | ulconst | 40 | -| test.c:533:7:533:7 | i | 2147483647 | -| test.c:533:18:533:18 | i | 2147483647 | -| test.c:534:5:534:5 | i | 2147483647 | -| test.c:534:13:534:13 | i | 2 | -| test.c:535:9:535:9 | i | 10 | -| test.c:537:5:537:5 | i | 2147483647 | -| test.c:537:9:537:9 | i | 10 | -| test.c:538:9:538:9 | i | 15 | -| test.c:540:5:540:5 | i | 15 | -| test.c:541:9:541:9 | i | 105 | -| test.c:543:5:543:5 | i | 105 | -| test.c:544:9:544:9 | i | 2310 | -| test.c:546:7:546:7 | i | 2147483647 | -| test.c:547:5:547:5 | i | 2147483647 | -| test.c:547:9:547:9 | i | -1 | -| test.c:548:9:548:9 | i | 1 | -| test.c:550:3:550:3 | i | 2147483647 | -| test.c:550:7:550:7 | i | 2147483647 | -| test.c:551:10:551:10 | i | 2147483647 | -| test.c:554:3:554:3 | i | 2147483647 | -| test.c:554:10:554:11 | sc | 1 | -| test.c:556:7:556:7 | i | 127 | -| test.c:563:7:563:7 | n | 4294967295 | -| test.c:565:7:565:7 | n | 4294967295 | -| test.c:566:9:566:9 | n | 4294967295 | -| test.c:569:7:569:7 | n | 4294967295 | -| test.c:570:9:570:9 | n | 4294967295 | -| test.c:572:9:572:9 | n | 0 | -| test.c:575:8:575:8 | n | 4294967295 | -| test.c:576:9:576:9 | n | 0 | -| test.c:578:9:578:9 | n | 4294967295 | -| test.c:581:10:581:10 | n | 4294967295 | -| test.c:582:5:582:5 | n | 4294967295 | -| test.c:585:7:585:7 | n | 0 | -| test.c:589:7:589:7 | n | 32767 | -| test.c:592:7:592:7 | n | 32767 | -| test.c:593:9:593:9 | n | 0 | -| test.c:595:9:595:9 | n | 32767 | -| test.c:598:7:598:7 | n | 32767 | -| test.c:599:9:599:9 | n | 32767 | -| test.c:601:9:601:9 | n | 0 | -| test.c:604:10:604:10 | n | 32767 | -| test.c:605:5:605:5 | n | 32767 | -| test.c:608:7:608:7 | n | 0 | -| test.c:612:7:612:7 | n | 32767 | -| test.c:613:9:613:9 | n | 32767 | -| test.c:614:11:614:11 | n | 32767 | -| test.c:618:7:618:7 | n | 32767 | -| test.c:619:13:619:13 | n | 32767 | -| test.c:622:9:622:9 | n | 32767 | -| test.c:625:7:625:7 | n | 32767 | -| test.c:625:22:625:22 | n | 32767 | -| test.c:626:9:626:9 | n | 32767 | -| test.c:629:7:629:7 | n | 32767 | -| test.c:630:5:630:5 | n | 32767 | -| test.c:630:10:630:10 | n | 32767 | -| test.c:630:14:630:14 | n | 0 | -| test.c:631:6:631:6 | n | 32767 | -| test.c:631:10:631:10 | n | 0 | -| test.c:631:14:631:14 | n | 32767 | -| test.c:642:7:642:8 | ss | 32767 | -| test.c:643:9:643:10 | ss | 3 | -| test.c:646:7:646:8 | ss | 32767 | -| test.c:647:9:647:10 | ss | 32767 | -| test.c:650:14:650:15 | us | 65535 | -| test.c:651:9:651:10 | us | 32767 | -| test.c:654:14:654:15 | us | 65535 | -| test.c:655:9:655:10 | us | 65535 | -| test.c:658:7:658:8 | ss | 32767 | -| test.c:659:9:659:10 | ss | 32767 | -| test.c:662:7:662:8 | ss | 32767 | -| test.c:663:9:663:10 | ss | 2 | -| test.c:669:8:669:8 | s | 2147483647 | -| test.c:669:15:669:15 | s | 127 | -| test.c:669:23:669:23 | s | 9 | -| test.c:670:18:670:18 | s | 9 | -| test.c:670:22:670:22 | s | 9 | -| test.c:671:9:671:14 | result | 127 | -| test.c:677:7:677:7 | i | 0 | -| test.c:678:9:678:9 | i | 2147483647 | -| test.c:682:7:682:7 | u | 0 | -| test.c:683:9:683:9 | u | 4294967295 | -| test.c:688:12:688:12 | s | 2147483647 | -| test.c:689:7:689:8 | s2 | 4 | -| test.c:694:7:694:7 | x | 2147483647 | -| test.c:695:9:695:9 | y | 2147483647 | -| test.c:699:7:699:7 | y | 2147483647 | -| test.c:708:7:708:7 | x | 2147483647 | -| test.c:713:7:713:7 | x | 15 | -| test.c:720:8:720:8 | x | 2147483647 | -| test.c:720:12:720:12 | y | 256 | -| test.c:721:9:721:9 | x | 2147483647 | -| test.c:722:9:722:9 | y | 256 | +| test.c:420:7:420:9 | rhs | 4294967295 | +| test.c:420:19:420:21 | rhs | 11 | +| test.c:421:7:421:9 | rhs | 4294967295 | +| test.c:421:19:421:21 | rhs | 12 | +| test.c:422:7:422:9 | rhs | 4294967295 | +| test.c:422:19:422:21 | rhs | 13 | +| test.c:423:7:423:9 | rhs | 4294967295 | +| test.c:423:19:423:21 | rhs | 14 | +| test.c:424:7:424:9 | rhs | 4294967295 | +| test.c:424:19:424:21 | rhs | 15 | +| test.c:425:10:425:12 | rhs | 4294967295 | +| test.c:432:10:432:11 | ip | 4294967295 | +| test.c:432:20:432:21 | ip | 4294967295 | +| test.c:432:40:432:41 | ip | 4294967295 | +| test.c:433:14:433:15 | ip | 4294967295 | +| test.c:434:14:434:15 | ip | 4294967295 | +| test.c:434:34:434:35 | ip | 4294967295 | +| test.c:435:11:435:12 | ip | 4294967295 | +| test.c:436:13:436:14 | ip | 4294967295 | +| test.c:437:14:437:15 | ip | 4294967295 | +| test.c:438:14:438:15 | ip | 4294967295 | +| test.c:439:15:439:16 | ip | 4294967295 | +| test.c:439:41:439:42 | ip | 4294967295 | +| test.c:439:52:439:53 | ip | 4294967295 | +| test.c:439:67:439:68 | ip | 4294967295 | +| test.c:439:78:439:79 | ip | 4294967295 | +| test.c:440:18:440:19 | ip | 4294967295 | +| test.c:441:23:441:24 | ip | 4294967295 | +| test.c:441:34:441:35 | ip | 4294967295 | +| test.c:442:25:442:26 | ip | 4294967295 | +| test.c:443:20:443:21 | ip | 4294967295 | +| test.c:444:11:444:12 | ip | 4294967295 | +| test.c:444:26:444:27 | ip | 4294967295 | +| test.c:445:16:445:17 | ip | 4294967295 | +| test.c:446:16:446:17 | ip | 4294967295 | +| test.c:447:16:447:17 | ip | 4294967295 | +| test.c:448:17:448:18 | ip | 4294967295 | +| test.c:449:22:449:23 | ip | 4294967295 | +| test.c:449:33:449:34 | ip | 4294967295 | +| test.c:449:48:449:49 | ip | 4294967295 | +| test.c:449:59:449:60 | ip | 4294967295 | +| test.c:450:20:450:21 | ip | 4294967295 | +| test.c:451:25:451:26 | ip | 4294967295 | +| test.c:451:36:451:37 | ip | 4294967295 | +| test.c:452:27:452:28 | ip | 4294967295 | +| test.c:453:22:453:23 | ip | 4294967295 | +| test.c:454:15:454:16 | ip | 4294967295 | +| test.c:454:30:454:31 | ip | 4294967295 | +| test.c:455:11:455:12 | ip | 4294967295 | +| test.c:456:12:456:13 | ip | 4294967295 | +| test.c:457:12:457:13 | ip | 4294967295 | +| test.c:458:13:458:14 | ip | 4294967295 | +| test.c:458:39:458:40 | ip | 4294967295 | +| test.c:458:50:458:51 | ip | 4294967295 | +| test.c:458:65:458:66 | ip | 4294967295 | +| test.c:458:76:458:77 | ip | 4294967295 | +| test.c:459:16:459:17 | ip | 4294967295 | +| test.c:460:21:460:22 | ip | 4294967295 | +| test.c:460:32:460:33 | ip | 4294967295 | +| test.c:461:23:461:24 | ip | 4294967295 | +| test.c:462:18:462:19 | ip | 4294967295 | +| test.c:463:11:463:12 | ip | 4294967295 | +| test.c:463:17:463:18 | ip | 4294967295 | +| test.c:463:37:463:38 | ip | 4294967295 | +| test.c:463:43:463:44 | ip | 4294967295 | +| test.c:464:14:464:15 | ip | 4294967295 | +| test.c:465:14:465:15 | ip | 4294967295 | +| test.c:466:14:466:15 | ip | 4294967295 | +| test.c:467:15:467:16 | ip | 4294967295 | +| test.c:467:41:467:42 | ip | 4294967295 | +| test.c:467:52:467:53 | ip | 4294967295 | +| test.c:467:67:467:68 | ip | 4294967295 | +| test.c:467:78:467:79 | ip | 4294967295 | +| test.c:468:18:468:19 | ip | 4294967295 | +| test.c:469:23:469:24 | ip | 4294967295 | +| test.c:469:34:469:35 | ip | 4294967295 | +| test.c:470:25:470:26 | ip | 4294967295 | +| test.c:471:20:471:21 | ip | 4294967295 | +| test.c:472:14:472:15 | ip | 4294967295 | +| test.c:472:20:472:21 | ip | 4294967295 | +| test.c:473:16:473:17 | ip | 4294967295 | +| test.c:474:12:474:13 | ip | 4294967295 | +| test.c:475:14:475:15 | ip | 4294967295 | +| test.c:476:15:476:16 | ip | 4294967295 | +| test.c:477:16:477:17 | ip | 4294967295 | +| test.c:478:16:478:17 | ip | 4294967295 | +| test.c:479:17:479:18 | ip | 4294967295 | +| test.c:480:22:480:23 | ip | 4294967295 | +| test.c:480:33:480:34 | ip | 4294967295 | +| test.c:480:48:480:49 | ip | 4294967295 | +| test.c:480:59:480:60 | ip | 4294967295 | +| test.c:481:20:481:21 | ip | 4294967295 | +| test.c:482:25:482:26 | ip | 4294967295 | +| test.c:482:36:482:37 | ip | 4294967295 | +| test.c:483:27:483:28 | ip | 4294967295 | +| test.c:484:22:484:23 | ip | 4294967295 | +| test.c:485:13:485:14 | ip | 4294967295 | +| test.c:485:28:485:29 | ip | 4294967295 | +| test.c:486:18:486:19 | ip | 4294967295 | +| test.c:487:18:487:19 | ip | 4294967295 | +| test.c:488:18:488:19 | ip | 4294967295 | +| test.c:489:19:489:20 | ip | 4294967295 | +| test.c:490:24:490:25 | ip | 4294967295 | +| test.c:490:35:490:36 | ip | 4294967295 | +| test.c:490:50:490:51 | ip | 4294967295 | +| test.c:490:61:490:62 | ip | 4294967295 | +| test.c:491:22:491:23 | ip | 4294967295 | +| test.c:492:27:492:28 | ip | 4294967295 | +| test.c:492:38:492:39 | ip | 4294967295 | +| test.c:493:29:493:30 | ip | 4294967295 | +| test.c:494:24:494:25 | ip | 4294967295 | +| test.c:495:17:495:18 | ip | 4294967295 | +| test.c:495:32:495:33 | ip | 4294967295 | +| test.c:496:14:496:15 | ip | 4294967295 | +| test.c:497:18:497:19 | ip | 4294967295 | +| test.c:498:18:498:19 | ip | 4294967295 | +| test.c:499:19:499:20 | ip | 4294967295 | +| test.c:500:24:500:25 | ip | 4294967295 | +| test.c:500:35:500:36 | ip | 4294967295 | +| test.c:500:50:500:51 | ip | 4294967295 | +| test.c:500:61:500:62 | ip | 4294967295 | +| test.c:501:22:501:23 | ip | 4294967295 | +| test.c:502:27:502:28 | ip | 4294967295 | +| test.c:502:38:502:39 | ip | 4294967295 | +| test.c:503:29:503:30 | ip | 4294967295 | +| test.c:504:24:504:25 | ip | 4294967295 | +| test.c:505:17:505:18 | ip | 4294967295 | +| test.c:505:23:505:24 | ip | 4294967295 | +| test.c:505:43:505:44 | ip | 4294967295 | +| test.c:505:49:505:50 | ip | 4294967295 | +| test.c:506:16:506:17 | ip | 4294967295 | +| test.c:507:16:507:17 | ip | 4294967295 | +| test.c:508:16:508:17 | ip | 4294967295 | +| test.c:509:17:509:18 | ip | 4294967295 | +| test.c:510:22:510:23 | ip | 4294967295 | +| test.c:510:33:510:34 | ip | 4294967295 | +| test.c:510:48:510:49 | ip | 4294967295 | +| test.c:510:59:510:60 | ip | 4294967295 | +| test.c:511:20:511:21 | ip | 4294967295 | +| test.c:512:25:512:26 | ip | 4294967295 | +| test.c:512:36:512:37 | ip | 4294967295 | +| test.c:513:27:513:28 | ip | 4294967295 | +| test.c:514:22:514:23 | ip | 4294967295 | +| test.c:515:16:515:17 | ip | 4294967295 | +| test.c:515:22:515:23 | ip | 4294967295 | +| test.c:516:18:516:19 | ip | 4294967295 | +| test.c:517:14:517:15 | ip | 4294967295 | +| test.c:518:14:518:15 | ip | 4294967295 | +| test.c:518:24:518:25 | ip | 4294967295 | +| test.c:518:44:518:45 | ip | 4294967295 | +| test.c:519:16:519:17 | ip | 4294967295 | +| test.c:520:16:520:17 | ip | 4294967295 | +| test.c:520:36:520:37 | ip | 4294967295 | +| test.c:521:14:521:15 | ip | 4294967295 | +| test.c:522:19:522:20 | ip | 4294967295 | +| test.c:523:20:523:21 | ip | 4294967295 | +| test.c:524:20:524:21 | ip | 4294967295 | +| test.c:525:21:525:22 | ip | 4294967295 | +| test.c:526:26:526:27 | ip | 4294967295 | +| test.c:526:37:526:38 | ip | 4294967295 | +| test.c:526:52:526:53 | ip | 4294967295 | +| test.c:526:63:526:64 | ip | 4294967295 | +| test.c:527:24:527:25 | ip | 4294967295 | +| test.c:528:29:528:30 | ip | 4294967295 | +| test.c:528:40:528:41 | ip | 4294967295 | +| test.c:529:31:529:32 | ip | 4294967295 | +| test.c:530:26:530:27 | ip | 4294967295 | +| test.c:531:17:531:18 | ip | 4294967295 | +| test.c:531:32:531:33 | ip | 4294967295 | +| test.c:532:22:532:23 | ip | 4294967295 | +| test.c:533:22:533:23 | ip | 4294967295 | +| test.c:534:22:534:23 | ip | 4294967295 | +| test.c:535:23:535:24 | ip | 4294967295 | +| test.c:536:28:536:29 | ip | 4294967295 | +| test.c:536:39:536:40 | ip | 4294967295 | +| test.c:536:54:536:55 | ip | 4294967295 | +| test.c:536:65:536:66 | ip | 4294967295 | +| test.c:537:26:537:27 | ip | 4294967295 | +| test.c:538:31:538:32 | ip | 4294967295 | +| test.c:538:42:538:43 | ip | 4294967295 | +| test.c:539:33:539:34 | ip | 4294967295 | +| test.c:540:28:540:29 | ip | 4294967295 | +| test.c:541:21:541:22 | ip | 4294967295 | +| test.c:541:36:541:37 | ip | 4294967295 | +| test.c:542:17:542:18 | ip | 4294967295 | +| test.c:543:18:543:19 | ip | 4294967295 | +| test.c:544:18:544:19 | ip | 4294967295 | +| test.c:545:19:545:20 | ip | 4294967295 | +| test.c:546:24:546:25 | ip | 4294967295 | +| test.c:546:35:546:36 | ip | 4294967295 | +| test.c:546:50:546:51 | ip | 4294967295 | +| test.c:546:61:546:62 | ip | 4294967295 | +| test.c:547:22:547:23 | ip | 4294967295 | +| test.c:548:27:548:28 | ip | 4294967295 | +| test.c:548:38:548:39 | ip | 4294967295 | +| test.c:549:29:549:30 | ip | 4294967295 | +| test.c:550:24:550:25 | ip | 4294967295 | +| test.c:551:17:551:18 | ip | 4294967295 | +| test.c:551:23:551:24 | ip | 4294967295 | +| test.c:551:43:551:44 | ip | 4294967295 | +| test.c:551:49:551:50 | ip | 4294967295 | +| test.c:552:20:552:21 | ip | 4294967295 | +| test.c:553:20:553:21 | ip | 4294967295 | +| test.c:554:20:554:21 | ip | 4294967295 | +| test.c:555:21:555:22 | ip | 4294967295 | +| test.c:556:26:556:27 | ip | 4294967295 | +| test.c:556:37:556:38 | ip | 4294967295 | +| test.c:556:52:556:53 | ip | 4294967295 | +| test.c:556:63:556:64 | ip | 4294967295 | +| test.c:557:24:557:25 | ip | 4294967295 | +| test.c:558:29:558:30 | ip | 4294967295 | +| test.c:558:40:558:41 | ip | 4294967295 | +| test.c:559:31:559:32 | ip | 4294967295 | +| test.c:560:26:560:27 | ip | 4294967295 | +| test.c:561:20:561:21 | ip | 4294967295 | +| test.c:561:26:561:27 | ip | 4294967295 | +| test.c:562:22:562:23 | ip | 4294967295 | +| test.c:563:18:563:19 | ip | 4294967295 | +| test.c:564:16:564:17 | ip | 4294967295 | +| test.c:565:17:565:18 | ip | 4294967295 | +| test.c:566:18:566:19 | ip | 4294967295 | +| test.c:567:18:567:19 | ip | 4294967295 | +| test.c:568:19:568:20 | ip | 4294967295 | +| test.c:569:24:569:25 | ip | 4294967295 | +| test.c:569:35:569:36 | ip | 4294967295 | +| test.c:569:50:569:51 | ip | 4294967295 | +| test.c:569:61:569:62 | ip | 4294967295 | +| test.c:570:22:570:23 | ip | 4294967295 | +| test.c:571:27:571:28 | ip | 4294967295 | +| test.c:571:38:571:39 | ip | 4294967295 | +| test.c:572:29:572:30 | ip | 4294967295 | +| test.c:573:24:573:25 | ip | 4294967295 | +| test.c:574:15:574:16 | ip | 4294967295 | +| test.c:574:30:574:31 | ip | 4294967295 | +| test.c:575:20:575:21 | ip | 4294967295 | +| test.c:576:20:576:21 | ip | 4294967295 | +| test.c:577:20:577:21 | ip | 4294967295 | +| test.c:578:21:578:22 | ip | 4294967295 | +| test.c:579:26:579:27 | ip | 4294967295 | +| test.c:579:37:579:38 | ip | 4294967295 | +| test.c:579:52:579:53 | ip | 4294967295 | +| test.c:579:63:579:64 | ip | 4294967295 | +| test.c:580:24:580:25 | ip | 4294967295 | +| test.c:581:29:581:30 | ip | 4294967295 | +| test.c:581:40:581:41 | ip | 4294967295 | +| test.c:582:31:582:32 | ip | 4294967295 | +| test.c:583:26:583:27 | ip | 4294967295 | +| test.c:584:19:584:20 | ip | 4294967295 | +| test.c:584:34:584:35 | ip | 4294967295 | +| test.c:585:16:585:17 | ip | 4294967295 | +| test.c:586:20:586:21 | ip | 4294967295 | +| test.c:587:20:587:21 | ip | 4294967295 | +| test.c:588:21:588:22 | ip | 4294967295 | +| test.c:589:26:589:27 | ip | 4294967295 | +| test.c:589:37:589:38 | ip | 4294967295 | +| test.c:589:52:589:53 | ip | 4294967295 | +| test.c:589:63:589:64 | ip | 4294967295 | +| test.c:590:24:590:25 | ip | 4294967295 | +| test.c:591:29:591:30 | ip | 4294967295 | +| test.c:591:40:591:41 | ip | 4294967295 | +| test.c:592:31:592:32 | ip | 4294967295 | +| test.c:593:26:593:27 | ip | 4294967295 | +| test.c:594:19:594:20 | ip | 4294967295 | +| test.c:594:25:594:26 | ip | 4294967295 | +| test.c:594:45:594:46 | ip | 4294967295 | +| test.c:594:51:594:52 | ip | 4294967295 | +| test.c:595:18:595:19 | ip | 4294967295 | +| test.c:596:18:596:19 | ip | 4294967295 | +| test.c:597:18:597:19 | ip | 4294967295 | +| test.c:598:19:598:20 | ip | 4294967295 | +| test.c:599:24:599:25 | ip | 4294967295 | +| test.c:599:35:599:36 | ip | 4294967295 | +| test.c:599:50:599:51 | ip | 4294967295 | +| test.c:599:61:599:62 | ip | 4294967295 | +| test.c:600:22:600:23 | ip | 4294967295 | +| test.c:601:27:601:28 | ip | 4294967295 | +| test.c:601:38:601:39 | ip | 4294967295 | +| test.c:602:29:602:30 | ip | 4294967295 | +| test.c:603:24:603:25 | ip | 4294967295 | +| test.c:604:18:604:19 | ip | 4294967295 | +| test.c:604:24:604:25 | ip | 4294967295 | +| test.c:605:20:605:21 | ip | 4294967295 | +| test.c:606:16:606:17 | ip | 4294967295 | +| test.c:607:10:607:23 | special_number | 4294967295 | +| test.c:615:7:615:8 | c1 | 2147483647 | +| test.c:615:13:615:13 | x | 0 | +| test.c:616:7:616:8 | c2 | 2147483647 | +| test.c:616:13:616:13 | x | 748596 | +| test.c:617:7:617:8 | c3 | 2147483647 | +| test.c:617:13:617:13 | x | 85400991 | +| test.c:618:7:618:8 | c4 | 2147483647 | +| test.c:618:13:618:13 | x | 89076886 | +| test.c:619:7:619:8 | c5 | 2147483647 | +| test.c:619:13:619:13 | x | 89175520 | +| test.c:620:7:620:8 | c1 | 2147483647 | +| test.c:620:13:620:14 | c2 | 2147483647 | +| test.c:620:19:620:19 | x | 97010505 | +| test.c:621:7:621:8 | c1 | 2147483647 | +| test.c:621:13:621:14 | c3 | 2147483647 | +| test.c:621:19:621:19 | x | 1035467903 | +| test.c:622:7:622:8 | c1 | 2147483647 | +| test.c:622:13:622:14 | c4 | 2147483647 | +| test.c:622:19:622:19 | x | 1109363551 | +| test.c:623:7:623:8 | c1 | 2147483647 | +| test.c:623:13:623:14 | c5 | 2147483647 | +| test.c:623:19:623:19 | x | 1121708983 | +| test.c:624:7:624:8 | c2 | 2147483647 | +| test.c:624:13:624:14 | c3 | 2147483647 | +| test.c:624:19:624:19 | x | 1121747830 | +| test.c:626:11:626:11 | x | 2147483647 | +| test.c:626:15:626:15 | x | 2147483647 | +| test.c:626:19:626:19 | x | 2147483647 | +| test.c:626:23:626:23 | x | 2147483647 | +| test.c:626:27:626:27 | x | 2147483647 | +| test.c:626:31:626:31 | x | 2147483647 | +| test.c:626:35:626:35 | x | 2147483647 | +| test.c:626:39:626:39 | x | 2147483647 | +| test.c:626:43:626:43 | x | 2147483647 | +| test.c:626:47:626:47 | x | 2147483647 | +| test.c:626:51:626:51 | x | 2147483647 | +| test.c:626:55:626:55 | x | 2147483647 | +| test.c:627:10:627:10 | y | 2147483647 | +| test.c:632:20:632:20 | x | 4294967295 | +| test.c:632:30:632:30 | x | 99 | +| test.c:635:3:635:4 | y1 | 4294967295 | +| test.c:635:11:635:11 | y | 100 | +| test.c:635:14:635:14 | y | 101 | +| test.c:636:3:636:4 | y2 | 4294967295 | +| test.c:636:9:636:9 | y | 101 | +| test.c:636:14:636:14 | y | 102 | +| test.c:636:22:636:22 | y | 105 | +| test.c:637:10:637:11 | y1 | 101 | +| test.c:637:15:637:16 | y2 | 105 | +| test.c:645:3:645:3 | i | 2147483647 | +| test.c:646:7:646:7 | i | 10 | +| test.c:648:3:648:3 | i | 2147483647 | +| test.c:649:3:649:3 | i | 10 | +| test.c:650:7:650:7 | i | 20 | +| test.c:652:3:652:3 | i | 2147483647 | +| test.c:653:3:653:3 | i | 40 | +| test.c:654:7:654:7 | i | 30 | +| test.c:656:3:656:3 | i | 2147483647 | +| test.c:656:7:656:7 | j | 2147483647 | +| test.c:657:7:657:7 | i | 40 | +| test.c:659:3:659:3 | i | 2147483647 | +| test.c:659:8:659:8 | j | 40 | +| test.c:660:7:660:7 | i | 50 | +| test.c:662:3:662:3 | i | 2147483647 | +| test.c:662:13:662:13 | j | 50 | +| test.c:663:7:663:7 | i | 60 | +| test.c:670:12:670:12 | a | 4294967295 | +| test.c:670:17:670:17 | a | 4294967295 | +| test.c:670:33:670:33 | b | 4294967295 | +| test.c:670:38:670:38 | b | 4294967295 | +| test.c:671:13:671:13 | a | 11 | +| test.c:671:15:671:15 | b | 23 | +| test.c:672:5:672:9 | total | 0 | +| test.c:672:14:672:14 | r | 253 | +| test.c:674:12:674:12 | a | 4294967295 | +| test.c:674:17:674:17 | a | 4294967295 | +| test.c:674:33:674:33 | b | 4294967295 | +| test.c:674:38:674:38 | b | 4294967295 | +| test.c:675:13:675:13 | a | 11 | +| test.c:675:15:675:15 | b | 23 | +| test.c:676:5:676:9 | total | 253 | +| test.c:676:14:676:14 | r | 253 | +| test.c:678:12:678:12 | a | 4294967295 | +| test.c:678:17:678:17 | a | 4294967295 | +| test.c:678:34:678:34 | b | 4294967295 | +| test.c:678:39:678:39 | b | 4294967295 | +| test.c:679:13:679:13 | a | 11 | +| test.c:679:15:679:15 | b | 23 | +| test.c:680:5:680:9 | total | 506 | +| test.c:680:14:680:14 | r | 253 | +| test.c:683:10:683:14 | total | 759 | +| test.c:689:12:689:12 | b | 4294967295 | +| test.c:689:17:689:17 | b | 4294967295 | +| test.c:690:16:690:16 | b | 23 | +| test.c:691:5:691:9 | total | 0 | +| test.c:691:14:691:14 | r | 253 | +| test.c:693:12:693:12 | b | 4294967295 | +| test.c:693:17:693:17 | b | 4294967295 | +| test.c:694:16:694:16 | b | 23 | +| test.c:695:5:695:9 | total | 253 | +| test.c:695:14:695:14 | r | 253 | +| test.c:697:13:697:13 | b | 4294967295 | +| test.c:697:18:697:18 | b | 4294967295 | +| test.c:698:16:698:16 | b | 23 | +| test.c:699:5:699:9 | total | 506 | +| test.c:699:14:699:14 | r | 253 | +| test.c:702:10:702:14 | total | 759 | +| test.c:707:3:707:3 | x | 18446744073709551616 | +| test.c:707:7:707:7 | y | 18446744073709551616 | +| test.c:708:3:708:4 | xy | 18446744073709551616 | +| test.c:708:8:708:8 | x | 1000000003 | +| test.c:708:12:708:12 | y | 1000000003 | +| test.c:709:10:709:11 | xy | 1000000006000000000 | +| test.c:714:3:714:3 | x | 18446744073709551616 | +| test.c:715:3:715:3 | y | 18446744073709551616 | +| test.c:716:3:716:4 | xy | 18446744073709551616 | +| test.c:716:8:716:8 | x | 274177 | +| test.c:716:12:716:12 | y | 67280421310721 | +| test.c:717:10:717:11 | xy | 18446744073709551616 | +| test.c:721:7:721:8 | ui | 4294967295 | +| test.c:722:43:722:44 | ui | 4294967295 | +| test.c:722:48:722:49 | ui | 4294967295 | +| test.c:723:12:723:17 | result | 18446744065119617024 | +| test.c:725:7:725:8 | ul | 18446744073709551616 | +| test.c:726:28:726:29 | ul | 18446744073709551616 | +| test.c:726:33:726:34 | ul | 18446744073709551616 | +| test.c:727:12:727:17 | result | 18446744073709551616 | +| test.c:733:7:733:8 | ui | 4294967295 | +| test.c:733:19:733:20 | ui | 10 | +| test.c:734:5:734:6 | ui | 10 | +| test.c:734:11:734:12 | ui | 10 | +| test.c:735:12:735:13 | ui | 100 | +| test.c:739:3:739:9 | uiconst | 10 | +| test.c:742:3:742:9 | ulconst | 10 | +| test.c:743:10:743:16 | uiconst | 40 | +| test.c:743:20:743:26 | ulconst | 40 | +| test.c:747:7:747:7 | i | 2147483647 | +| test.c:747:18:747:18 | i | 2147483647 | +| test.c:748:5:748:5 | i | 2147483647 | +| test.c:748:13:748:13 | i | 2 | +| test.c:749:9:749:9 | i | 10 | +| test.c:751:5:751:5 | i | 2147483647 | +| test.c:751:9:751:9 | i | 10 | +| test.c:752:9:752:9 | i | 15 | +| test.c:754:5:754:5 | i | 15 | +| test.c:755:9:755:9 | i | 105 | +| test.c:757:5:757:5 | i | 105 | +| test.c:758:9:758:9 | i | 2310 | +| test.c:760:7:760:7 | i | 2147483647 | +| test.c:761:5:761:5 | i | 2147483647 | +| test.c:761:9:761:9 | i | -1 | +| test.c:762:9:762:9 | i | 1 | +| test.c:764:3:764:3 | i | 2147483647 | +| test.c:764:7:764:7 | i | 2147483647 | +| test.c:765:10:765:10 | i | 2147483647 | +| test.c:768:3:768:3 | i | 2147483647 | +| test.c:768:10:768:11 | sc | 1 | +| test.c:770:7:770:7 | i | 127 | +| test.c:777:7:777:7 | n | 4294967295 | +| test.c:779:7:779:7 | n | 4294967295 | +| test.c:780:9:780:9 | n | 4294967295 | +| test.c:783:7:783:7 | n | 4294967295 | +| test.c:784:9:784:9 | n | 4294967295 | +| test.c:786:9:786:9 | n | 0 | +| test.c:789:8:789:8 | n | 4294967295 | +| test.c:790:9:790:9 | n | 0 | +| test.c:792:9:792:9 | n | 4294967295 | +| test.c:795:10:795:10 | n | 4294967295 | +| test.c:796:5:796:5 | n | 4294967295 | +| test.c:799:7:799:7 | n | 0 | +| test.c:803:7:803:7 | n | 32767 | +| test.c:806:7:806:7 | n | 32767 | +| test.c:807:9:807:9 | n | 0 | +| test.c:809:9:809:9 | n | 32767 | +| test.c:812:7:812:7 | n | 32767 | +| test.c:813:9:813:9 | n | 32767 | +| test.c:815:9:815:9 | n | 0 | +| test.c:818:10:818:10 | n | 32767 | +| test.c:819:5:819:5 | n | 32767 | +| test.c:822:7:822:7 | n | 0 | +| test.c:826:7:826:7 | n | 32767 | +| test.c:827:9:827:9 | n | 32767 | +| test.c:828:11:828:11 | n | 32767 | +| test.c:832:7:832:7 | n | 32767 | +| test.c:833:13:833:13 | n | 32767 | +| test.c:836:9:836:9 | n | 32767 | +| test.c:839:7:839:7 | n | 32767 | +| test.c:839:22:839:22 | n | 32767 | +| test.c:840:9:840:9 | n | 32767 | +| test.c:843:7:843:7 | n | 32767 | +| test.c:844:5:844:5 | n | 32767 | +| test.c:844:10:844:10 | n | 32767 | +| test.c:844:14:844:14 | n | 0 | +| test.c:845:6:845:6 | n | 32767 | +| test.c:845:10:845:10 | n | 0 | +| test.c:845:14:845:14 | n | 32767 | +| test.c:856:7:856:8 | ss | 32767 | +| test.c:857:9:857:10 | ss | 3 | +| test.c:860:7:860:8 | ss | 32767 | +| test.c:861:9:861:10 | ss | 32767 | +| test.c:864:14:864:15 | us | 65535 | +| test.c:865:9:865:10 | us | 32767 | +| test.c:868:14:868:15 | us | 65535 | +| test.c:869:9:869:10 | us | 65535 | +| test.c:872:7:872:8 | ss | 32767 | +| test.c:873:9:873:10 | ss | 32767 | +| test.c:876:7:876:8 | ss | 32767 | +| test.c:877:9:877:10 | ss | 2 | +| test.c:883:8:883:8 | s | 2147483647 | +| test.c:883:15:883:15 | s | 127 | +| test.c:883:23:883:23 | s | 9 | +| test.c:884:18:884:18 | s | 9 | +| test.c:884:22:884:22 | s | 9 | +| test.c:885:9:885:14 | result | 127 | +| test.c:891:7:891:7 | i | 0 | +| test.c:892:9:892:9 | i | 2147483647 | +| test.c:896:7:896:7 | u | 0 | +| test.c:897:9:897:9 | u | 4294967295 | +| test.c:902:12:902:12 | s | 2147483647 | +| test.c:903:7:903:8 | s2 | 4 | +| test.c:908:7:908:7 | x | 2147483647 | +| test.c:909:9:909:9 | y | 2147483647 | +| test.c:913:7:913:7 | y | 2147483647 | +| test.c:922:7:922:7 | x | 2147483647 | +| test.c:927:7:927:7 | x | 15 | +| test.c:934:8:934:8 | x | 2147483647 | +| test.c:934:12:934:12 | y | 256 | +| test.c:935:9:935:9 | x | 2147483647 | +| test.c:936:9:936:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From 74b433ef594362e8e18dd9ee595ee6a108874a56 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 11 Nov 2025 15:23:49 +0100 Subject: [PATCH 768/965] C++: Add range analysis tests --- .../SimpleRangeAnalysis/lowerBound.expected | 1000 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 5959 +++++++++-------- .../SimpleRangeAnalysis/nrOfBounds.ql | 30 +- .../SimpleRangeAnalysis/ternaryLower.expected | 144 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 144 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 15 + .../SimpleRangeAnalysis/upperBound.expected | 1000 +-- 7 files changed, 4190 insertions(+), 4102 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 10e31040b5a..cfebbd974c0 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -496,508 +496,518 @@ | test.c:424:7:424:9 | rhs | 0 | | test.c:424:19:424:21 | rhs | 0 | | test.c:425:10:425:12 | rhs | 0 | -| test.c:432:10:432:11 | ip | 0 | -| test.c:432:20:432:21 | ip | 0 | -| test.c:432:40:432:41 | ip | 0 | -| test.c:433:14:433:15 | ip | 1 | -| test.c:434:14:434:15 | ip | 0 | -| test.c:434:34:434:35 | ip | 0 | -| test.c:435:11:435:12 | ip | 0 | -| test.c:436:13:436:14 | ip | 0 | -| test.c:437:14:437:15 | ip | 0 | -| test.c:438:14:438:15 | ip | 0 | -| test.c:439:15:439:16 | ip | 0 | -| test.c:439:41:439:42 | ip | 0 | -| test.c:439:52:439:53 | ip | 0 | -| test.c:439:67:439:68 | ip | 0 | -| test.c:439:78:439:79 | ip | 0 | -| test.c:440:18:440:19 | ip | 0 | -| test.c:441:23:441:24 | ip | 0 | -| test.c:441:34:441:35 | ip | 0 | -| test.c:442:25:442:26 | ip | 0 | -| test.c:443:20:443:21 | ip | 0 | -| test.c:444:11:444:12 | ip | 0 | -| test.c:444:26:444:27 | ip | 0 | -| test.c:445:16:445:17 | ip | 0 | -| test.c:446:16:446:17 | ip | 0 | -| test.c:447:16:447:17 | ip | 0 | -| test.c:448:17:448:18 | ip | 0 | -| test.c:449:22:449:23 | ip | 0 | -| test.c:449:33:449:34 | ip | 0 | -| test.c:449:48:449:49 | ip | 0 | -| test.c:449:59:449:60 | ip | 0 | -| test.c:450:20:450:21 | ip | 0 | -| test.c:451:25:451:26 | ip | 0 | -| test.c:451:36:451:37 | ip | 0 | -| test.c:452:27:452:28 | ip | 0 | -| test.c:453:22:453:23 | ip | 0 | +| test.c:429:7:429:7 | a | -2147483648 | +| test.c:430:9:430:9 | b | -2147483648 | +| test.c:431:7:431:7 | a | 17 | +| test.c:431:12:431:12 | b | 23 | +| test.c:433:9:433:9 | a | 17 | +| test.c:434:7:434:7 | b | -2147483648 | +| test.c:439:11:439:11 | a | -2147483648 | +| test.c:439:15:439:15 | b | -2147483648 | +| test.c:440:10:440:10 | a | -2147483648 | +| test.c:440:14:440:14 | b | -2147483648 | +| test.c:447:10:447:11 | ip | 0 | +| test.c:447:20:447:21 | ip | 0 | +| test.c:447:40:447:41 | ip | 0 | +| test.c:448:14:448:15 | ip | 1 | +| test.c:449:14:449:15 | ip | 0 | +| test.c:449:34:449:35 | ip | 0 | +| test.c:450:11:450:12 | ip | 0 | +| test.c:451:13:451:14 | ip | 0 | +| test.c:452:14:452:15 | ip | 0 | +| test.c:453:14:453:15 | ip | 0 | | test.c:454:15:454:16 | ip | 0 | -| test.c:454:30:454:31 | ip | 0 | -| test.c:455:11:455:12 | ip | 0 | -| test.c:456:12:456:13 | ip | 0 | -| test.c:457:12:457:13 | ip | 0 | -| test.c:458:13:458:14 | ip | 0 | -| test.c:458:39:458:40 | ip | 0 | -| test.c:458:50:458:51 | ip | 0 | -| test.c:458:65:458:66 | ip | 0 | -| test.c:458:76:458:77 | ip | 0 | -| test.c:459:16:459:17 | ip | 0 | -| test.c:460:21:460:22 | ip | 0 | -| test.c:460:32:460:33 | ip | 0 | -| test.c:461:23:461:24 | ip | 0 | -| test.c:462:18:462:19 | ip | 0 | -| test.c:463:11:463:12 | ip | 0 | +| test.c:454:41:454:42 | ip | 0 | +| test.c:454:52:454:53 | ip | 0 | +| test.c:454:67:454:68 | ip | 0 | +| test.c:454:78:454:79 | ip | 0 | +| test.c:455:18:455:19 | ip | 0 | +| test.c:456:23:456:24 | ip | 0 | +| test.c:456:34:456:35 | ip | 0 | +| test.c:457:25:457:26 | ip | 0 | +| test.c:458:20:458:21 | ip | 0 | +| test.c:459:11:459:12 | ip | 0 | +| test.c:459:26:459:27 | ip | 0 | +| test.c:460:16:460:17 | ip | 0 | +| test.c:461:16:461:17 | ip | 0 | +| test.c:462:16:462:17 | ip | 0 | | test.c:463:17:463:18 | ip | 0 | -| test.c:463:37:463:38 | ip | 0 | -| test.c:463:43:463:44 | ip | 0 | -| test.c:464:14:464:15 | ip | 0 | -| test.c:465:14:465:15 | ip | 0 | -| test.c:466:14:466:15 | ip | 0 | -| test.c:467:15:467:16 | ip | 0 | -| test.c:467:41:467:42 | ip | 0 | -| test.c:467:52:467:53 | ip | 0 | -| test.c:467:67:467:68 | ip | 0 | -| test.c:467:78:467:79 | ip | 0 | -| test.c:468:18:468:19 | ip | 0 | -| test.c:469:23:469:24 | ip | 0 | -| test.c:469:34:469:35 | ip | 0 | -| test.c:470:25:470:26 | ip | 0 | -| test.c:471:20:471:21 | ip | 0 | -| test.c:472:14:472:15 | ip | 0 | -| test.c:472:20:472:21 | ip | 0 | -| test.c:473:16:473:17 | ip | 0 | -| test.c:474:12:474:13 | ip | 0 | -| test.c:475:14:475:15 | ip | 0 | -| test.c:476:15:476:16 | ip | 0 | -| test.c:477:16:477:17 | ip | 0 | -| test.c:478:16:478:17 | ip | 0 | -| test.c:479:17:479:18 | ip | 0 | -| test.c:480:22:480:23 | ip | 0 | -| test.c:480:33:480:34 | ip | 0 | -| test.c:480:48:480:49 | ip | 0 | -| test.c:480:59:480:60 | ip | 0 | -| test.c:481:20:481:21 | ip | 0 | -| test.c:482:25:482:26 | ip | 0 | -| test.c:482:36:482:37 | ip | 0 | -| test.c:483:27:483:28 | ip | 0 | -| test.c:484:22:484:23 | ip | 0 | -| test.c:485:13:485:14 | ip | 0 | -| test.c:485:28:485:29 | ip | 0 | -| test.c:486:18:486:19 | ip | 0 | -| test.c:487:18:487:19 | ip | 0 | -| test.c:488:18:488:19 | ip | 0 | -| test.c:489:19:489:20 | ip | 0 | -| test.c:490:24:490:25 | ip | 0 | -| test.c:490:35:490:36 | ip | 0 | -| test.c:490:50:490:51 | ip | 0 | -| test.c:490:61:490:62 | ip | 0 | -| test.c:491:22:491:23 | ip | 0 | -| test.c:492:27:492:28 | ip | 0 | -| test.c:492:38:492:39 | ip | 0 | -| test.c:493:29:493:30 | ip | 0 | -| test.c:494:24:494:25 | ip | 0 | -| test.c:495:17:495:18 | ip | 0 | -| test.c:495:32:495:33 | ip | 0 | -| test.c:496:14:496:15 | ip | 0 | -| test.c:497:18:497:19 | ip | 0 | -| test.c:498:18:498:19 | ip | 0 | -| test.c:499:19:499:20 | ip | 0 | -| test.c:500:24:500:25 | ip | 0 | -| test.c:500:35:500:36 | ip | 0 | -| test.c:500:50:500:51 | ip | 0 | -| test.c:500:61:500:62 | ip | 0 | -| test.c:501:22:501:23 | ip | 0 | -| test.c:502:27:502:28 | ip | 0 | -| test.c:502:38:502:39 | ip | 0 | -| test.c:503:29:503:30 | ip | 0 | -| test.c:504:24:504:25 | ip | 0 | -| test.c:505:17:505:18 | ip | 0 | -| test.c:505:23:505:24 | ip | 0 | -| test.c:505:43:505:44 | ip | 0 | -| test.c:505:49:505:50 | ip | 0 | -| test.c:506:16:506:17 | ip | 0 | -| test.c:507:16:507:17 | ip | 0 | -| test.c:508:16:508:17 | ip | 0 | -| test.c:509:17:509:18 | ip | 0 | -| test.c:510:22:510:23 | ip | 0 | -| test.c:510:33:510:34 | ip | 0 | -| test.c:510:48:510:49 | ip | 0 | -| test.c:510:59:510:60 | ip | 0 | -| test.c:511:20:511:21 | ip | 0 | -| test.c:512:25:512:26 | ip | 0 | -| test.c:512:36:512:37 | ip | 0 | -| test.c:513:27:513:28 | ip | 0 | -| test.c:514:22:514:23 | ip | 0 | -| test.c:515:16:515:17 | ip | 0 | -| test.c:515:22:515:23 | ip | 0 | -| test.c:516:18:516:19 | ip | 0 | -| test.c:517:14:517:15 | ip | 0 | -| test.c:518:14:518:15 | ip | 0 | -| test.c:518:24:518:25 | ip | 0 | -| test.c:518:44:518:45 | ip | 0 | -| test.c:519:16:519:17 | ip | 1 | -| test.c:520:16:520:17 | ip | 0 | -| test.c:520:36:520:37 | ip | 0 | -| test.c:521:14:521:15 | ip | 0 | -| test.c:522:19:522:20 | ip | 0 | -| test.c:523:20:523:21 | ip | 0 | -| test.c:524:20:524:21 | ip | 0 | -| test.c:525:21:525:22 | ip | 0 | -| test.c:526:26:526:27 | ip | 0 | -| test.c:526:37:526:38 | ip | 0 | -| test.c:526:52:526:53 | ip | 0 | -| test.c:526:63:526:64 | ip | 0 | -| test.c:527:24:527:25 | ip | 0 | -| test.c:528:29:528:30 | ip | 0 | -| test.c:528:40:528:41 | ip | 0 | -| test.c:529:31:529:32 | ip | 0 | -| test.c:530:26:530:27 | ip | 0 | -| test.c:531:17:531:18 | ip | 0 | -| test.c:531:32:531:33 | ip | 0 | -| test.c:532:22:532:23 | ip | 0 | -| test.c:533:22:533:23 | ip | 0 | -| test.c:534:22:534:23 | ip | 0 | -| test.c:535:23:535:24 | ip | 0 | -| test.c:536:28:536:29 | ip | 0 | -| test.c:536:39:536:40 | ip | 0 | -| test.c:536:54:536:55 | ip | 0 | -| test.c:536:65:536:66 | ip | 0 | -| test.c:537:26:537:27 | ip | 0 | -| test.c:538:31:538:32 | ip | 0 | -| test.c:538:42:538:43 | ip | 0 | -| test.c:539:33:539:34 | ip | 0 | -| test.c:540:28:540:29 | ip | 0 | -| test.c:541:21:541:22 | ip | 0 | -| test.c:541:36:541:37 | ip | 0 | -| test.c:542:17:542:18 | ip | 0 | -| test.c:543:18:543:19 | ip | 0 | -| test.c:544:18:544:19 | ip | 0 | -| test.c:545:19:545:20 | ip | 0 | -| test.c:546:24:546:25 | ip | 0 | -| test.c:546:35:546:36 | ip | 0 | -| test.c:546:50:546:51 | ip | 0 | -| test.c:546:61:546:62 | ip | 0 | +| test.c:464:22:464:23 | ip | 0 | +| test.c:464:33:464:34 | ip | 0 | +| test.c:464:48:464:49 | ip | 0 | +| test.c:464:59:464:60 | ip | 0 | +| test.c:465:20:465:21 | ip | 0 | +| test.c:466:25:466:26 | ip | 0 | +| test.c:466:36:466:37 | ip | 0 | +| test.c:467:27:467:28 | ip | 0 | +| test.c:468:22:468:23 | ip | 0 | +| test.c:469:15:469:16 | ip | 0 | +| test.c:469:30:469:31 | ip | 0 | +| test.c:470:11:470:12 | ip | 0 | +| test.c:471:12:471:13 | ip | 0 | +| test.c:472:12:472:13 | ip | 0 | +| test.c:473:13:473:14 | ip | 0 | +| test.c:473:39:473:40 | ip | 0 | +| test.c:473:50:473:51 | ip | 0 | +| test.c:473:65:473:66 | ip | 0 | +| test.c:473:76:473:77 | ip | 0 | +| test.c:474:16:474:17 | ip | 0 | +| test.c:475:21:475:22 | ip | 0 | +| test.c:475:32:475:33 | ip | 0 | +| test.c:476:23:476:24 | ip | 0 | +| test.c:477:18:477:19 | ip | 0 | +| test.c:478:11:478:12 | ip | 0 | +| test.c:478:17:478:18 | ip | 0 | +| test.c:478:37:478:38 | ip | 0 | +| test.c:478:43:478:44 | ip | 0 | +| test.c:479:14:479:15 | ip | 0 | +| test.c:480:14:480:15 | ip | 0 | +| test.c:481:14:481:15 | ip | 0 | +| test.c:482:15:482:16 | ip | 0 | +| test.c:482:41:482:42 | ip | 0 | +| test.c:482:52:482:53 | ip | 0 | +| test.c:482:67:482:68 | ip | 0 | +| test.c:482:78:482:79 | ip | 0 | +| test.c:483:18:483:19 | ip | 0 | +| test.c:484:23:484:24 | ip | 0 | +| test.c:484:34:484:35 | ip | 0 | +| test.c:485:25:485:26 | ip | 0 | +| test.c:486:20:486:21 | ip | 0 | +| test.c:487:14:487:15 | ip | 0 | +| test.c:487:20:487:21 | ip | 0 | +| test.c:488:16:488:17 | ip | 0 | +| test.c:489:12:489:13 | ip | 0 | +| test.c:490:14:490:15 | ip | 0 | +| test.c:491:15:491:16 | ip | 0 | +| test.c:492:16:492:17 | ip | 0 | +| test.c:493:16:493:17 | ip | 0 | +| test.c:494:17:494:18 | ip | 0 | +| test.c:495:22:495:23 | ip | 0 | +| test.c:495:33:495:34 | ip | 0 | +| test.c:495:48:495:49 | ip | 0 | +| test.c:495:59:495:60 | ip | 0 | +| test.c:496:20:496:21 | ip | 0 | +| test.c:497:25:497:26 | ip | 0 | +| test.c:497:36:497:37 | ip | 0 | +| test.c:498:27:498:28 | ip | 0 | +| test.c:499:22:499:23 | ip | 0 | +| test.c:500:13:500:14 | ip | 0 | +| test.c:500:28:500:29 | ip | 0 | +| test.c:501:18:501:19 | ip | 0 | +| test.c:502:18:502:19 | ip | 0 | +| test.c:503:18:503:19 | ip | 0 | +| test.c:504:19:504:20 | ip | 0 | +| test.c:505:24:505:25 | ip | 0 | +| test.c:505:35:505:36 | ip | 0 | +| test.c:505:50:505:51 | ip | 0 | +| test.c:505:61:505:62 | ip | 0 | +| test.c:506:22:506:23 | ip | 0 | +| test.c:507:27:507:28 | ip | 0 | +| test.c:507:38:507:39 | ip | 0 | +| test.c:508:29:508:30 | ip | 0 | +| test.c:509:24:509:25 | ip | 0 | +| test.c:510:17:510:18 | ip | 0 | +| test.c:510:32:510:33 | ip | 0 | +| test.c:511:14:511:15 | ip | 0 | +| test.c:512:18:512:19 | ip | 0 | +| test.c:513:18:513:19 | ip | 0 | +| test.c:514:19:514:20 | ip | 0 | +| test.c:515:24:515:25 | ip | 0 | +| test.c:515:35:515:36 | ip | 0 | +| test.c:515:50:515:51 | ip | 0 | +| test.c:515:61:515:62 | ip | 0 | +| test.c:516:22:516:23 | ip | 0 | +| test.c:517:27:517:28 | ip | 0 | +| test.c:517:38:517:39 | ip | 0 | +| test.c:518:29:518:30 | ip | 0 | +| test.c:519:24:519:25 | ip | 0 | +| test.c:520:17:520:18 | ip | 0 | +| test.c:520:23:520:24 | ip | 0 | +| test.c:520:43:520:44 | ip | 0 | +| test.c:520:49:520:50 | ip | 0 | +| test.c:521:16:521:17 | ip | 0 | +| test.c:522:16:522:17 | ip | 0 | +| test.c:523:16:523:17 | ip | 0 | +| test.c:524:17:524:18 | ip | 0 | +| test.c:525:22:525:23 | ip | 0 | +| test.c:525:33:525:34 | ip | 0 | +| test.c:525:48:525:49 | ip | 0 | +| test.c:525:59:525:60 | ip | 0 | +| test.c:526:20:526:21 | ip | 0 | +| test.c:527:25:527:26 | ip | 0 | +| test.c:527:36:527:37 | ip | 0 | +| test.c:528:27:528:28 | ip | 0 | +| test.c:529:22:529:23 | ip | 0 | +| test.c:530:16:530:17 | ip | 0 | +| test.c:530:22:530:23 | ip | 0 | +| test.c:531:18:531:19 | ip | 0 | +| test.c:532:14:532:15 | ip | 0 | +| test.c:533:14:533:15 | ip | 0 | +| test.c:533:24:533:25 | ip | 0 | +| test.c:533:44:533:45 | ip | 0 | +| test.c:534:16:534:17 | ip | 1 | +| test.c:535:16:535:17 | ip | 0 | +| test.c:535:36:535:37 | ip | 0 | +| test.c:536:14:536:15 | ip | 0 | +| test.c:537:19:537:20 | ip | 0 | +| test.c:538:20:538:21 | ip | 0 | +| test.c:539:20:539:21 | ip | 0 | +| test.c:540:21:540:22 | ip | 0 | +| test.c:541:26:541:27 | ip | 0 | +| test.c:541:37:541:38 | ip | 0 | +| test.c:541:52:541:53 | ip | 0 | +| test.c:541:63:541:64 | ip | 0 | +| test.c:542:24:542:25 | ip | 0 | +| test.c:543:29:543:30 | ip | 0 | +| test.c:543:40:543:41 | ip | 0 | +| test.c:544:31:544:32 | ip | 0 | +| test.c:545:26:545:27 | ip | 0 | +| test.c:546:17:546:18 | ip | 0 | +| test.c:546:32:546:33 | ip | 0 | | test.c:547:22:547:23 | ip | 0 | -| test.c:548:27:548:28 | ip | 0 | -| test.c:548:38:548:39 | ip | 0 | -| test.c:549:29:549:30 | ip | 0 | -| test.c:550:24:550:25 | ip | 0 | -| test.c:551:17:551:18 | ip | 0 | -| test.c:551:23:551:24 | ip | 0 | -| test.c:551:43:551:44 | ip | 0 | -| test.c:551:49:551:50 | ip | 0 | -| test.c:552:20:552:21 | ip | 0 | -| test.c:553:20:553:21 | ip | 0 | -| test.c:554:20:554:21 | ip | 0 | -| test.c:555:21:555:22 | ip | 0 | -| test.c:556:26:556:27 | ip | 0 | -| test.c:556:37:556:38 | ip | 0 | -| test.c:556:52:556:53 | ip | 0 | -| test.c:556:63:556:64 | ip | 0 | -| test.c:557:24:557:25 | ip | 0 | -| test.c:558:29:558:30 | ip | 0 | -| test.c:558:40:558:41 | ip | 0 | -| test.c:559:31:559:32 | ip | 0 | -| test.c:560:26:560:27 | ip | 0 | -| test.c:561:20:561:21 | ip | 0 | -| test.c:561:26:561:27 | ip | 0 | +| test.c:548:22:548:23 | ip | 0 | +| test.c:549:22:549:23 | ip | 0 | +| test.c:550:23:550:24 | ip | 0 | +| test.c:551:28:551:29 | ip | 0 | +| test.c:551:39:551:40 | ip | 0 | +| test.c:551:54:551:55 | ip | 0 | +| test.c:551:65:551:66 | ip | 0 | +| test.c:552:26:552:27 | ip | 0 | +| test.c:553:31:553:32 | ip | 0 | +| test.c:553:42:553:43 | ip | 0 | +| test.c:554:33:554:34 | ip | 0 | +| test.c:555:28:555:29 | ip | 0 | +| test.c:556:21:556:22 | ip | 0 | +| test.c:556:36:556:37 | ip | 0 | +| test.c:557:17:557:18 | ip | 0 | +| test.c:558:18:558:19 | ip | 0 | +| test.c:559:18:559:19 | ip | 0 | +| test.c:560:19:560:20 | ip | 0 | +| test.c:561:24:561:25 | ip | 0 | +| test.c:561:35:561:36 | ip | 0 | +| test.c:561:50:561:51 | ip | 0 | +| test.c:561:61:561:62 | ip | 0 | | test.c:562:22:562:23 | ip | 0 | -| test.c:563:18:563:19 | ip | 0 | -| test.c:564:16:564:17 | ip | 0 | -| test.c:565:17:565:18 | ip | 0 | -| test.c:566:18:566:19 | ip | 0 | -| test.c:567:18:567:19 | ip | 0 | -| test.c:568:19:568:20 | ip | 0 | -| test.c:569:24:569:25 | ip | 0 | -| test.c:569:35:569:36 | ip | 0 | -| test.c:569:50:569:51 | ip | 0 | -| test.c:569:61:569:62 | ip | 0 | -| test.c:570:22:570:23 | ip | 0 | -| test.c:571:27:571:28 | ip | 0 | -| test.c:571:38:571:39 | ip | 0 | -| test.c:572:29:572:30 | ip | 0 | -| test.c:573:24:573:25 | ip | 0 | -| test.c:574:15:574:16 | ip | 0 | -| test.c:574:30:574:31 | ip | 0 | -| test.c:575:20:575:21 | ip | 0 | +| test.c:563:27:563:28 | ip | 0 | +| test.c:563:38:563:39 | ip | 0 | +| test.c:564:29:564:30 | ip | 0 | +| test.c:565:24:565:25 | ip | 0 | +| test.c:566:17:566:18 | ip | 0 | +| test.c:566:23:566:24 | ip | 0 | +| test.c:566:43:566:44 | ip | 0 | +| test.c:566:49:566:50 | ip | 0 | +| test.c:567:20:567:21 | ip | 0 | +| test.c:568:20:568:21 | ip | 0 | +| test.c:569:20:569:21 | ip | 0 | +| test.c:570:21:570:22 | ip | 0 | +| test.c:571:26:571:27 | ip | 0 | +| test.c:571:37:571:38 | ip | 0 | +| test.c:571:52:571:53 | ip | 0 | +| test.c:571:63:571:64 | ip | 0 | +| test.c:572:24:572:25 | ip | 0 | +| test.c:573:29:573:30 | ip | 0 | +| test.c:573:40:573:41 | ip | 0 | +| test.c:574:31:574:32 | ip | 0 | +| test.c:575:26:575:27 | ip | 0 | | test.c:576:20:576:21 | ip | 0 | -| test.c:577:20:577:21 | ip | 0 | -| test.c:578:21:578:22 | ip | 0 | -| test.c:579:26:579:27 | ip | 0 | -| test.c:579:37:579:38 | ip | 0 | -| test.c:579:52:579:53 | ip | 0 | -| test.c:579:63:579:64 | ip | 0 | -| test.c:580:24:580:25 | ip | 0 | -| test.c:581:29:581:30 | ip | 0 | -| test.c:581:40:581:41 | ip | 0 | -| test.c:582:31:582:32 | ip | 0 | -| test.c:583:26:583:27 | ip | 0 | -| test.c:584:19:584:20 | ip | 0 | -| test.c:584:34:584:35 | ip | 0 | -| test.c:585:16:585:17 | ip | 0 | -| test.c:586:20:586:21 | ip | 0 | -| test.c:587:20:587:21 | ip | 0 | -| test.c:588:21:588:22 | ip | 0 | -| test.c:589:26:589:27 | ip | 0 | -| test.c:589:37:589:38 | ip | 0 | -| test.c:589:52:589:53 | ip | 0 | -| test.c:589:63:589:64 | ip | 0 | -| test.c:590:24:590:25 | ip | 0 | -| test.c:591:29:591:30 | ip | 0 | -| test.c:591:40:591:41 | ip | 0 | -| test.c:592:31:592:32 | ip | 0 | -| test.c:593:26:593:27 | ip | 0 | -| test.c:594:19:594:20 | ip | 0 | -| test.c:594:25:594:26 | ip | 0 | -| test.c:594:45:594:46 | ip | 0 | -| test.c:594:51:594:52 | ip | 0 | -| test.c:595:18:595:19 | ip | 0 | -| test.c:596:18:596:19 | ip | 0 | -| test.c:597:18:597:19 | ip | 0 | -| test.c:598:19:598:20 | ip | 0 | -| test.c:599:24:599:25 | ip | 0 | -| test.c:599:35:599:36 | ip | 0 | -| test.c:599:50:599:51 | ip | 0 | -| test.c:599:61:599:62 | ip | 0 | -| test.c:600:22:600:23 | ip | 0 | -| test.c:601:27:601:28 | ip | 0 | -| test.c:601:38:601:39 | ip | 0 | -| test.c:602:29:602:30 | ip | 0 | -| test.c:603:24:603:25 | ip | 0 | -| test.c:604:18:604:19 | ip | 0 | -| test.c:604:24:604:25 | ip | 0 | -| test.c:605:20:605:21 | ip | 0 | -| test.c:606:16:606:17 | ip | 0 | -| test.c:607:10:607:23 | special_number | 0 | -| test.c:615:7:615:8 | c1 | -2147483648 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | -2147483648 | -| test.c:616:13:616:13 | x | 0 | -| test.c:617:7:617:8 | c3 | -2147483648 | -| test.c:617:13:617:13 | x | 0 | -| test.c:618:7:618:8 | c4 | -2147483648 | -| test.c:618:13:618:13 | x | 0 | -| test.c:619:7:619:8 | c5 | -2147483648 | -| test.c:619:13:619:13 | x | 0 | -| test.c:620:7:620:8 | c1 | -2147483648 | -| test.c:620:13:620:14 | c2 | -2147483648 | -| test.c:620:19:620:19 | x | 0 | -| test.c:621:7:621:8 | c1 | -2147483648 | -| test.c:621:13:621:14 | c3 | -2147483648 | -| test.c:621:19:621:19 | x | 0 | -| test.c:622:7:622:8 | c1 | -2147483648 | -| test.c:622:13:622:14 | c4 | -2147483648 | -| test.c:622:19:622:19 | x | 0 | -| test.c:623:7:623:8 | c1 | -2147483648 | -| test.c:623:13:623:14 | c5 | -2147483648 | -| test.c:623:19:623:19 | x | 0 | -| test.c:624:7:624:8 | c2 | -2147483648 | -| test.c:624:13:624:14 | c3 | -2147483648 | -| test.c:624:19:624:19 | x | 0 | -| test.c:626:11:626:11 | x | 0 | -| test.c:626:15:626:15 | x | 0 | -| test.c:626:19:626:19 | x | 0 | -| test.c:626:23:626:23 | x | 0 | -| test.c:626:27:626:27 | x | 0 | -| test.c:626:31:626:31 | x | 0 | -| test.c:626:35:626:35 | x | 0 | -| test.c:626:39:626:39 | x | 0 | -| test.c:626:43:626:43 | x | 0 | -| test.c:626:47:626:47 | x | 0 | -| test.c:626:51:626:51 | x | 0 | -| test.c:626:55:626:55 | x | 0 | -| test.c:627:10:627:10 | y | -2147483648 | -| test.c:632:20:632:20 | x | 0 | -| test.c:632:30:632:30 | x | 0 | -| test.c:635:3:635:4 | y1 | 0 | -| test.c:635:11:635:11 | y | 0 | -| test.c:635:14:635:14 | y | 1 | -| test.c:636:3:636:4 | y2 | 0 | -| test.c:636:9:636:9 | y | 1 | -| test.c:636:14:636:14 | y | 2 | -| test.c:636:22:636:22 | y | 5 | -| test.c:637:10:637:11 | y1 | 1 | -| test.c:637:15:637:16 | y2 | 5 | -| test.c:645:3:645:3 | i | -2147483648 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | -2147483648 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | -2147483648 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | -2147483648 | -| test.c:656:7:656:7 | j | -2147483648 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | -2147483648 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | -2147483648 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 0 | -| test.c:670:17:670:17 | a | 3 | -| test.c:670:33:670:33 | b | 0 | -| test.c:670:38:670:38 | b | 5 | -| test.c:671:13:671:13 | a | 3 | -| test.c:671:15:671:15 | b | 5 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 15 | -| test.c:674:12:674:12 | a | 0 | -| test.c:674:17:674:17 | a | 3 | -| test.c:674:33:674:33 | b | 0 | -| test.c:674:38:674:38 | b | 0 | -| test.c:675:13:675:13 | a | 3 | -| test.c:675:15:675:15 | b | 0 | -| test.c:676:5:676:9 | total | 0 | -| test.c:676:14:676:14 | r | 0 | -| test.c:678:12:678:12 | a | 0 | -| test.c:678:17:678:17 | a | 3 | -| test.c:678:34:678:34 | b | 0 | -| test.c:678:39:678:39 | b | 13 | -| test.c:679:13:679:13 | a | 3 | -| test.c:679:15:679:15 | b | 13 | -| test.c:680:5:680:9 | total | 0 | -| test.c:680:14:680:14 | r | 39 | -| test.c:683:10:683:14 | total | 0 | -| test.c:689:12:689:12 | b | 0 | -| test.c:689:17:689:17 | b | 5 | -| test.c:690:16:690:16 | b | 5 | +| test.c:576:26:576:27 | ip | 0 | +| test.c:577:22:577:23 | ip | 0 | +| test.c:578:18:578:19 | ip | 0 | +| test.c:579:16:579:17 | ip | 0 | +| test.c:580:17:580:18 | ip | 0 | +| test.c:581:18:581:19 | ip | 0 | +| test.c:582:18:582:19 | ip | 0 | +| test.c:583:19:583:20 | ip | 0 | +| test.c:584:24:584:25 | ip | 0 | +| test.c:584:35:584:36 | ip | 0 | +| test.c:584:50:584:51 | ip | 0 | +| test.c:584:61:584:62 | ip | 0 | +| test.c:585:22:585:23 | ip | 0 | +| test.c:586:27:586:28 | ip | 0 | +| test.c:586:38:586:39 | ip | 0 | +| test.c:587:29:587:30 | ip | 0 | +| test.c:588:24:588:25 | ip | 0 | +| test.c:589:15:589:16 | ip | 0 | +| test.c:589:30:589:31 | ip | 0 | +| test.c:590:20:590:21 | ip | 0 | +| test.c:591:20:591:21 | ip | 0 | +| test.c:592:20:592:21 | ip | 0 | +| test.c:593:21:593:22 | ip | 0 | +| test.c:594:26:594:27 | ip | 0 | +| test.c:594:37:594:38 | ip | 0 | +| test.c:594:52:594:53 | ip | 0 | +| test.c:594:63:594:64 | ip | 0 | +| test.c:595:24:595:25 | ip | 0 | +| test.c:596:29:596:30 | ip | 0 | +| test.c:596:40:596:41 | ip | 0 | +| test.c:597:31:597:32 | ip | 0 | +| test.c:598:26:598:27 | ip | 0 | +| test.c:599:19:599:20 | ip | 0 | +| test.c:599:34:599:35 | ip | 0 | +| test.c:600:16:600:17 | ip | 0 | +| test.c:601:20:601:21 | ip | 0 | +| test.c:602:20:602:21 | ip | 0 | +| test.c:603:21:603:22 | ip | 0 | +| test.c:604:26:604:27 | ip | 0 | +| test.c:604:37:604:38 | ip | 0 | +| test.c:604:52:604:53 | ip | 0 | +| test.c:604:63:604:64 | ip | 0 | +| test.c:605:24:605:25 | ip | 0 | +| test.c:606:29:606:30 | ip | 0 | +| test.c:606:40:606:41 | ip | 0 | +| test.c:607:31:607:32 | ip | 0 | +| test.c:608:26:608:27 | ip | 0 | +| test.c:609:19:609:20 | ip | 0 | +| test.c:609:25:609:26 | ip | 0 | +| test.c:609:45:609:46 | ip | 0 | +| test.c:609:51:609:52 | ip | 0 | +| test.c:610:18:610:19 | ip | 0 | +| test.c:611:18:611:19 | ip | 0 | +| test.c:612:18:612:19 | ip | 0 | +| test.c:613:19:613:20 | ip | 0 | +| test.c:614:24:614:25 | ip | 0 | +| test.c:614:35:614:36 | ip | 0 | +| test.c:614:50:614:51 | ip | 0 | +| test.c:614:61:614:62 | ip | 0 | +| test.c:615:22:615:23 | ip | 0 | +| test.c:616:27:616:28 | ip | 0 | +| test.c:616:38:616:39 | ip | 0 | +| test.c:617:29:617:30 | ip | 0 | +| test.c:618:24:618:25 | ip | 0 | +| test.c:619:18:619:19 | ip | 0 | +| test.c:619:24:619:25 | ip | 0 | +| test.c:620:20:620:21 | ip | 0 | +| test.c:621:16:621:17 | ip | 0 | +| test.c:622:10:622:23 | special_number | 0 | +| test.c:630:7:630:8 | c1 | -2147483648 | +| test.c:630:13:630:13 | x | 0 | +| test.c:631:7:631:8 | c2 | -2147483648 | +| test.c:631:13:631:13 | x | 0 | +| test.c:632:7:632:8 | c3 | -2147483648 | +| test.c:632:13:632:13 | x | 0 | +| test.c:633:7:633:8 | c4 | -2147483648 | +| test.c:633:13:633:13 | x | 0 | +| test.c:634:7:634:8 | c5 | -2147483648 | +| test.c:634:13:634:13 | x | 0 | +| test.c:635:7:635:8 | c1 | -2147483648 | +| test.c:635:13:635:14 | c2 | -2147483648 | +| test.c:635:19:635:19 | x | 0 | +| test.c:636:7:636:8 | c1 | -2147483648 | +| test.c:636:13:636:14 | c3 | -2147483648 | +| test.c:636:19:636:19 | x | 0 | +| test.c:637:7:637:8 | c1 | -2147483648 | +| test.c:637:13:637:14 | c4 | -2147483648 | +| test.c:637:19:637:19 | x | 0 | +| test.c:638:7:638:8 | c1 | -2147483648 | +| test.c:638:13:638:14 | c5 | -2147483648 | +| test.c:638:19:638:19 | x | 0 | +| test.c:639:7:639:8 | c2 | -2147483648 | +| test.c:639:13:639:14 | c3 | -2147483648 | +| test.c:639:19:639:19 | x | 0 | +| test.c:641:11:641:11 | x | 0 | +| test.c:641:15:641:15 | x | 0 | +| test.c:641:19:641:19 | x | 0 | +| test.c:641:23:641:23 | x | 0 | +| test.c:641:27:641:27 | x | 0 | +| test.c:641:31:641:31 | x | 0 | +| test.c:641:35:641:35 | x | 0 | +| test.c:641:39:641:39 | x | 0 | +| test.c:641:43:641:43 | x | 0 | +| test.c:641:47:641:47 | x | 0 | +| test.c:641:51:641:51 | x | 0 | +| test.c:641:55:641:55 | x | 0 | +| test.c:642:10:642:10 | y | -2147483648 | +| test.c:647:20:647:20 | x | 0 | +| test.c:647:30:647:30 | x | 0 | +| test.c:650:3:650:4 | y1 | 0 | +| test.c:650:11:650:11 | y | 0 | +| test.c:650:14:650:14 | y | 1 | +| test.c:651:3:651:4 | y2 | 0 | +| test.c:651:9:651:9 | y | 1 | +| test.c:651:14:651:14 | y | 2 | +| test.c:651:22:651:22 | y | 5 | +| test.c:652:10:652:11 | y1 | 1 | +| test.c:652:15:652:16 | y2 | 5 | +| test.c:660:3:660:3 | i | -2147483648 | +| test.c:661:7:661:7 | i | 10 | +| test.c:663:3:663:3 | i | -2147483648 | +| test.c:664:3:664:3 | i | 10 | +| test.c:665:7:665:7 | i | 20 | +| test.c:667:3:667:3 | i | -2147483648 | +| test.c:668:3:668:3 | i | 40 | +| test.c:669:7:669:7 | i | 30 | +| test.c:671:3:671:3 | i | -2147483648 | +| test.c:671:7:671:7 | j | -2147483648 | +| test.c:672:7:672:7 | i | 40 | +| test.c:674:3:674:3 | i | -2147483648 | +| test.c:674:8:674:8 | j | 40 | +| test.c:675:7:675:7 | i | 50 | +| test.c:677:3:677:3 | i | -2147483648 | +| test.c:677:13:677:13 | j | 50 | +| test.c:678:7:678:7 | i | 60 | +| test.c:685:12:685:12 | a | 0 | +| test.c:685:17:685:17 | a | 3 | +| test.c:685:33:685:33 | b | 0 | +| test.c:685:38:685:38 | b | 5 | +| test.c:686:13:686:13 | a | 3 | +| test.c:686:15:686:15 | b | 5 | +| test.c:687:5:687:9 | total | 0 | +| test.c:687:14:687:14 | r | 15 | +| test.c:689:12:689:12 | a | 0 | +| test.c:689:17:689:17 | a | 3 | +| test.c:689:33:689:33 | b | 0 | +| test.c:689:38:689:38 | b | 0 | +| test.c:690:13:690:13 | a | 3 | +| test.c:690:15:690:15 | b | 0 | | test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 55 | -| test.c:693:12:693:12 | b | 0 | -| test.c:693:17:693:17 | b | 0 | -| test.c:694:16:694:16 | b | 0 | +| test.c:691:14:691:14 | r | 0 | +| test.c:693:12:693:12 | a | 0 | +| test.c:693:17:693:17 | a | 3 | +| test.c:693:34:693:34 | b | 0 | +| test.c:693:39:693:39 | b | 13 | +| test.c:694:13:694:13 | a | 3 | +| test.c:694:15:694:15 | b | 13 | | test.c:695:5:695:9 | total | 0 | -| test.c:695:14:695:14 | r | 0 | -| test.c:697:13:697:13 | b | 0 | -| test.c:697:18:697:18 | b | 13 | -| test.c:698:16:698:16 | b | 13 | -| test.c:699:5:699:9 | total | 0 | -| test.c:699:14:699:14 | r | 143 | -| test.c:702:10:702:14 | total | 0 | -| test.c:707:3:707:3 | x | 0 | -| test.c:707:7:707:7 | y | 0 | -| test.c:708:3:708:4 | xy | 0 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 0 | -| test.c:715:3:715:3 | y | 0 | -| test.c:716:3:716:4 | xy | 0 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 0 | -| test.c:722:43:722:44 | ui | 10 | -| test.c:722:48:722:49 | ui | 10 | -| test.c:723:12:723:17 | result | 100 | -| test.c:725:7:725:8 | ul | 0 | -| test.c:726:28:726:29 | ul | 10 | -| test.c:726:33:726:34 | ul | 10 | -| test.c:727:12:727:17 | result | 0 | -| test.c:733:7:733:8 | ui | 0 | -| test.c:733:19:733:20 | ui | 0 | -| test.c:734:5:734:6 | ui | 2 | -| test.c:734:11:734:12 | ui | 2 | -| test.c:735:12:735:13 | ui | 4 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | -2147483648 | -| test.c:747:18:747:18 | i | -1 | -| test.c:748:5:748:5 | i | -2147483648 | -| test.c:748:13:748:13 | i | -1 | -| test.c:749:9:749:9 | i | -5 | -| test.c:751:5:751:5 | i | -2147483648 | -| test.c:751:9:751:9 | i | -5 | -| test.c:752:9:752:9 | i | -30 | -| test.c:754:5:754:5 | i | -30 | -| test.c:755:9:755:9 | i | -210 | -| test.c:757:5:757:5 | i | -210 | -| test.c:758:9:758:9 | i | -1155 | -| test.c:760:7:760:7 | i | -2147483648 | -| test.c:761:5:761:5 | i | -2147483648 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | -2147483648 | -| test.c:764:7:764:7 | i | -2147483648 | -| test.c:765:10:765:10 | i | -2147483648 | -| test.c:768:3:768:3 | i | -2147483648 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | -128 | -| test.c:777:7:777:7 | n | 0 | -| test.c:779:7:779:7 | n | 0 | -| test.c:780:9:780:9 | n | 1 | -| test.c:783:7:783:7 | n | 0 | -| test.c:784:9:784:9 | n | 1 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 0 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 1 | -| test.c:795:10:795:10 | n | 0 | -| test.c:796:5:796:5 | n | 1 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | -32768 | -| test.c:806:7:806:7 | n | 0 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 1 | -| test.c:812:7:812:7 | n | 0 | -| test.c:813:9:813:9 | n | 1 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 0 | -| test.c:819:5:819:5 | n | 1 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | -32768 | -| test.c:827:9:827:9 | n | -32768 | -| test.c:828:11:828:11 | n | 0 | -| test.c:832:7:832:7 | n | -32768 | -| test.c:833:13:833:13 | n | 5 | -| test.c:836:9:836:9 | n | 6 | -| test.c:839:7:839:7 | n | -32768 | -| test.c:839:22:839:22 | n | -32767 | -| test.c:840:9:840:9 | n | -32766 | -| test.c:843:7:843:7 | n | -32768 | -| test.c:844:5:844:5 | n | 0 | -| test.c:844:10:844:10 | n | 1 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 0 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 1 | -| test.c:856:7:856:8 | ss | -32768 | -| test.c:857:9:857:10 | ss | 0 | -| test.c:860:7:860:8 | ss | -32768 | -| test.c:861:9:861:10 | ss | -32768 | -| test.c:864:14:864:15 | us | 0 | -| test.c:865:9:865:10 | us | 0 | -| test.c:868:14:868:15 | us | 0 | -| test.c:869:9:869:10 | us | 0 | -| test.c:872:7:872:8 | ss | -32768 | -| test.c:873:9:873:10 | ss | -32768 | -| test.c:876:7:876:8 | ss | -32768 | -| test.c:877:9:877:10 | ss | -1 | -| test.c:883:8:883:8 | s | -2147483648 | -| test.c:883:15:883:15 | s | 0 | -| test.c:883:23:883:23 | s | 0 | -| test.c:884:18:884:18 | s | 0 | -| test.c:884:22:884:22 | s | 0 | -| test.c:885:9:885:14 | result | 0 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | -2147483648 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 0 | -| test.c:902:12:902:12 | s | -2147483648 | -| test.c:903:7:903:8 | s2 | -4 | -| test.c:908:7:908:7 | x | -2147483648 | -| test.c:909:9:909:9 | y | -2147483648 | -| test.c:913:7:913:7 | y | -2147483648 | -| test.c:922:7:922:7 | x | -2147483648 | -| test.c:927:7:927:7 | x | -2147483648 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:695:14:695:14 | r | 39 | +| test.c:698:10:698:14 | total | 0 | +| test.c:704:12:704:12 | b | 0 | +| test.c:704:17:704:17 | b | 5 | +| test.c:705:16:705:16 | b | 5 | +| test.c:706:5:706:9 | total | 0 | +| test.c:706:14:706:14 | r | 55 | +| test.c:708:12:708:12 | b | 0 | +| test.c:708:17:708:17 | b | 0 | +| test.c:709:16:709:16 | b | 0 | +| test.c:710:5:710:9 | total | 0 | +| test.c:710:14:710:14 | r | 0 | +| test.c:712:13:712:13 | b | 0 | +| test.c:712:18:712:18 | b | 13 | +| test.c:713:16:713:16 | b | 13 | +| test.c:714:5:714:9 | total | 0 | +| test.c:714:14:714:14 | r | 143 | +| test.c:717:10:717:14 | total | 0 | +| test.c:722:3:722:3 | x | 0 | +| test.c:722:7:722:7 | y | 0 | +| test.c:723:3:723:4 | xy | 0 | +| test.c:723:8:723:8 | x | 1000000003 | +| test.c:723:12:723:12 | y | 1000000003 | +| test.c:724:10:724:11 | xy | 1000000006000000000 | +| test.c:729:3:729:3 | x | 0 | +| test.c:730:3:730:3 | y | 0 | +| test.c:731:3:731:4 | xy | 0 | +| test.c:731:8:731:8 | x | 274177 | +| test.c:731:12:731:12 | y | 67280421310721 | +| test.c:732:10:732:11 | xy | 18446744073709551616 | +| test.c:736:7:736:8 | ui | 0 | +| test.c:737:43:737:44 | ui | 10 | +| test.c:737:48:737:49 | ui | 10 | +| test.c:738:12:738:17 | result | 100 | +| test.c:740:7:740:8 | ul | 0 | +| test.c:741:28:741:29 | ul | 10 | +| test.c:741:33:741:34 | ul | 10 | +| test.c:742:12:742:17 | result | 0 | +| test.c:748:7:748:8 | ui | 0 | +| test.c:748:19:748:20 | ui | 0 | +| test.c:749:5:749:6 | ui | 2 | +| test.c:749:11:749:12 | ui | 2 | +| test.c:750:12:750:13 | ui | 4 | +| test.c:754:3:754:9 | uiconst | 10 | +| test.c:757:3:757:9 | ulconst | 10 | +| test.c:758:10:758:16 | uiconst | 40 | +| test.c:758:20:758:26 | ulconst | 40 | +| test.c:762:7:762:7 | i | -2147483648 | +| test.c:762:18:762:18 | i | -1 | +| test.c:763:5:763:5 | i | -2147483648 | +| test.c:763:13:763:13 | i | -1 | +| test.c:764:9:764:9 | i | -5 | +| test.c:766:5:766:5 | i | -2147483648 | +| test.c:766:9:766:9 | i | -5 | +| test.c:767:9:767:9 | i | -30 | +| test.c:769:5:769:5 | i | -30 | +| test.c:770:9:770:9 | i | -210 | +| test.c:772:5:772:5 | i | -210 | +| test.c:773:9:773:9 | i | -1155 | +| test.c:775:7:775:7 | i | -2147483648 | +| test.c:776:5:776:5 | i | -2147483648 | +| test.c:776:9:776:9 | i | -1 | +| test.c:777:9:777:9 | i | 1 | +| test.c:779:3:779:3 | i | -2147483648 | +| test.c:779:7:779:7 | i | -2147483648 | +| test.c:780:10:780:10 | i | -2147483648 | +| test.c:783:3:783:3 | i | -2147483648 | +| test.c:783:10:783:11 | sc | 1 | +| test.c:785:7:785:7 | i | -128 | +| test.c:792:7:792:7 | n | 0 | +| test.c:794:7:794:7 | n | 0 | +| test.c:795:9:795:9 | n | 1 | +| test.c:798:7:798:7 | n | 0 | +| test.c:799:9:799:9 | n | 1 | +| test.c:801:9:801:9 | n | 0 | +| test.c:804:8:804:8 | n | 0 | +| test.c:805:9:805:9 | n | 0 | +| test.c:807:9:807:9 | n | 1 | +| test.c:810:10:810:10 | n | 0 | +| test.c:811:5:811:5 | n | 1 | +| test.c:814:7:814:7 | n | 0 | +| test.c:818:7:818:7 | n | -32768 | +| test.c:821:7:821:7 | n | 0 | +| test.c:822:9:822:9 | n | 0 | +| test.c:824:9:824:9 | n | 1 | +| test.c:827:7:827:7 | n | 0 | +| test.c:828:9:828:9 | n | 1 | +| test.c:830:9:830:9 | n | 0 | +| test.c:833:10:833:10 | n | 0 | +| test.c:834:5:834:5 | n | 1 | +| test.c:837:7:837:7 | n | 0 | +| test.c:841:7:841:7 | n | -32768 | +| test.c:842:9:842:9 | n | -32768 | +| test.c:843:11:843:11 | n | 0 | +| test.c:847:7:847:7 | n | -32768 | +| test.c:848:13:848:13 | n | 5 | +| test.c:851:9:851:9 | n | 6 | +| test.c:854:7:854:7 | n | -32768 | +| test.c:854:22:854:22 | n | -32767 | +| test.c:855:9:855:9 | n | -32766 | +| test.c:858:7:858:7 | n | -32768 | +| test.c:859:5:859:5 | n | 0 | +| test.c:859:10:859:10 | n | 1 | +| test.c:859:14:859:14 | n | 0 | +| test.c:860:6:860:6 | n | 0 | +| test.c:860:10:860:10 | n | 0 | +| test.c:860:14:860:14 | n | 1 | +| test.c:871:7:871:8 | ss | -32768 | +| test.c:872:9:872:10 | ss | 0 | +| test.c:875:7:875:8 | ss | -32768 | +| test.c:876:9:876:10 | ss | -32768 | +| test.c:879:14:879:15 | us | 0 | +| test.c:880:9:880:10 | us | 0 | +| test.c:883:14:883:15 | us | 0 | +| test.c:884:9:884:10 | us | 0 | +| test.c:887:7:887:8 | ss | -32768 | +| test.c:888:9:888:10 | ss | -32768 | +| test.c:891:7:891:8 | ss | -32768 | +| test.c:892:9:892:10 | ss | -1 | +| test.c:898:8:898:8 | s | -2147483648 | +| test.c:898:15:898:15 | s | 0 | +| test.c:898:23:898:23 | s | 0 | +| test.c:899:18:899:18 | s | 0 | +| test.c:899:22:899:22 | s | 0 | +| test.c:900:9:900:14 | result | 0 | +| test.c:906:7:906:7 | i | 0 | +| test.c:907:9:907:9 | i | -2147483648 | +| test.c:911:7:911:7 | u | 0 | +| test.c:912:9:912:9 | u | 0 | +| test.c:917:12:917:12 | s | -2147483648 | +| test.c:918:7:918:8 | s2 | -4 | +| test.c:923:7:923:7 | x | -2147483648 | +| test.c:924:9:924:9 | y | -2147483648 | +| test.c:928:7:928:7 | y | -2147483648 | +| test.c:937:7:937:7 | x | -2147483648 | +| test.c:942:7:942:7 | x | -2147483648 | +| test.c:949:8:949:8 | x | 2147483647 | +| test.c:949:12:949:12 | y | 256 | +| test.c:950:9:950:9 | x | 2147483647 | +| test.c:951:9:951:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index c5905117615..0644c82d188 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -1,3 +1,5 @@ +testFailures +estimateNrOfBounds | inline_assembly.c:9:20:9:20 | 0 | 1.0 | | inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | | inline_assembly.c:10:3:10:3 | y | 1.0 | @@ -1439,2995 +1441,3020 @@ | test.c:424:26:424:26 | 1 | 1.0 | | test.c:425:10:425:12 | (int)... | 6.0 | | test.c:425:10:425:12 | rhs | 6.0 | -| test.c:432:4:434:50 | (...) | 1.0 | -| test.c:432:4:517:26 | ... > ... | 1.0 | -| test.c:432:4:606:27 | ... ? ... : ... | 1.297918419127476E201 | -| test.c:432:5:432:6 | 14 | 1.0 | -| test.c:432:5:432:6 | (unsigned int)... | 1.0 | -| test.c:432:5:432:11 | ... * ... | 1.0 | -| test.c:432:5:432:55 | ... > ... | 1.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 1.0 | -| test.c:432:10:432:11 | ip | 1.0 | -| test.c:432:15:432:26 | (...) | 1.0 | -| test.c:432:15:432:31 | ... * ... | 1.0 | -| test.c:432:15:432:55 | ... + ... | 1.0 | -| test.c:432:16:432:16 | 2 | 1.0 | -| test.c:432:16:432:16 | (unsigned int)... | 1.0 | -| test.c:432:16:432:21 | ... * ... | 1.0 | -| test.c:432:16:432:25 | ... + ... | 1.0 | -| test.c:432:20:432:21 | ip | 1.0 | -| test.c:432:25:432:25 | 1 | 1.0 | -| test.c:432:25:432:25 | (unsigned int)... | 1.0 | -| test.c:432:30:432:31 | 17 | 1.0 | -| test.c:432:30:432:31 | (unsigned int)... | 1.0 | -| test.c:432:35:432:50 | (...) | 1.0 | -| test.c:432:35:432:55 | ... * ... | 1.0 | -| test.c:432:36:432:36 | 2 | 1.0 | -| test.c:432:36:432:36 | (unsigned int)... | 1.0 | -| test.c:432:36:432:41 | ... * ... | 1.0 | -| test.c:432:36:432:45 | ... + ... | 1.0 | -| test.c:432:36:432:49 | ... + ... | 1.0 | -| test.c:432:40:432:41 | ip | 1.0 | -| test.c:432:45:432:45 | 1 | 1.0 | -| test.c:432:45:432:45 | (unsigned int)... | 1.0 | -| test.c:432:49:432:49 | 1 | 1.0 | -| test.c:432:49:432:49 | (unsigned int)... | 1.0 | -| test.c:432:54:432:55 | 17 | 1.0 | -| test.c:432:54:432:55 | (unsigned int)... | 1.0 | -| test.c:433:9:433:10 | 14 | 1.0 | -| test.c:433:9:433:10 | (unsigned int)... | 1.0 | -| test.c:433:9:433:15 | ... * ... | 1.0 | -| test.c:433:14:433:15 | ip | 1.0 | -| test.c:434:9:434:20 | (...) | 1.0 | -| test.c:434:9:434:25 | ... * ... | 1.0 | -| test.c:434:9:434:49 | ... + ... | 1.0 | -| test.c:434:10:434:10 | 2 | 1.0 | -| test.c:434:10:434:10 | (unsigned int)... | 1.0 | -| test.c:434:10:434:15 | ... * ... | 1.0 | -| test.c:434:10:434:19 | ... + ... | 1.0 | -| test.c:434:14:434:15 | ip | 1.0 | -| test.c:434:19:434:19 | 1 | 1.0 | -| test.c:434:19:434:19 | (unsigned int)... | 1.0 | -| test.c:434:24:434:25 | 14 | 1.0 | -| test.c:434:24:434:25 | (unsigned int)... | 1.0 | -| test.c:434:29:434:44 | (...) | 1.0 | -| test.c:434:29:434:49 | ... * ... | 1.0 | -| test.c:434:30:434:30 | 2 | 1.0 | -| test.c:434:30:434:30 | (unsigned int)... | 1.0 | -| test.c:434:30:434:35 | ... * ... | 1.0 | -| test.c:434:30:434:39 | ... + ... | 1.0 | -| test.c:434:30:434:43 | ... + ... | 1.0 | -| test.c:434:34:434:35 | ip | 1.0 | -| test.c:434:39:434:39 | 1 | 1.0 | -| test.c:434:39:434:39 | (unsigned int)... | 1.0 | -| test.c:434:43:434:43 | 1 | 1.0 | -| test.c:434:43:434:43 | (unsigned int)... | 1.0 | -| test.c:434:48:434:49 | 17 | 1.0 | -| test.c:434:48:434:49 | (unsigned int)... | 1.0 | -| test.c:435:5:517:26 | (...) | 9.29462083211502E84 | -| test.c:435:6:435:6 | 2 | 1.0 | -| test.c:435:6:435:6 | (unsigned int)... | 1.0 | -| test.c:435:6:435:23 | ... * ... | 2.0 | -| test.c:435:6:454:42 | ... + ... | 4.524508125E10 | -| test.c:435:6:474:24 | ... > ... | 1.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 9.29462083211502E84 | -| test.c:435:10:435:23 | (...) | 2.0 | -| test.c:435:11:435:12 | ip | 2.0 | -| test.c:435:11:435:17 | ... * ... | 2.0 | -| test.c:435:11:435:22 | ... + ... | 2.0 | -| test.c:435:16:435:17 | 14 | 1.0 | -| test.c:435:16:435:17 | (unsigned int)... | 1.0 | -| test.c:435:21:435:22 | 32 | 1.0 | -| test.c:435:21:435:22 | (unsigned int)... | 1.0 | -| test.c:436:7:454:42 | (...) | 2.2622540625E10 | -| test.c:436:8:436:8 | 4 | 1.0 | -| test.c:436:8:436:8 | (unsigned int)... | 1.0 | -| test.c:436:8:436:25 | ... * ... | 2.0 | -| test.c:436:8:437:26 | ... + ... | 4.0 | -| test.c:436:8:438:26 | ... + ... | 8.0 | -| test.c:436:8:443:22 | ... + ... | 1000.0 | -| test.c:436:8:444:37 | ... > ... | 1.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 2.2622540625E10 | -| test.c:436:12:436:25 | (...) | 2.0 | -| test.c:436:13:436:14 | ip | 2.0 | -| test.c:436:13:436:19 | ... * ... | 2.0 | -| test.c:436:13:436:24 | ... + ... | 2.0 | -| test.c:436:18:436:19 | 14 | 1.0 | -| test.c:436:18:436:19 | (unsigned int)... | 1.0 | -| test.c:436:23:436:24 | 32 | 1.0 | -| test.c:436:23:436:24 | (unsigned int)... | 1.0 | -| test.c:437:9:437:26 | (...) | 2.0 | -| test.c:437:10:437:10 | 2 | 1.0 | -| test.c:437:10:437:10 | (unsigned int)... | 1.0 | -| test.c:437:10:437:15 | ... * ... | 2.0 | -| test.c:437:10:437:20 | ... * ... | 2.0 | -| test.c:437:10:437:25 | ... + ... | 2.0 | -| test.c:437:14:437:15 | ip | 2.0 | -| test.c:437:19:437:20 | 14 | 1.0 | -| test.c:437:19:437:20 | (unsigned int)... | 1.0 | -| test.c:437:24:437:25 | 32 | 1.0 | -| test.c:437:24:437:25 | (unsigned int)... | 1.0 | -| test.c:438:9:438:9 | 2 | 1.0 | -| test.c:438:9:438:9 | (unsigned int)... | 1.0 | -| test.c:438:9:438:26 | ... * ... | 2.0 | -| test.c:438:13:438:26 | (...) | 2.0 | -| test.c:438:14:438:15 | ip | 2.0 | -| test.c:438:14:438:20 | ... * ... | 2.0 | -| test.c:438:14:438:25 | ... + ... | 2.0 | -| test.c:438:19:438:20 | 14 | 1.0 | -| test.c:438:19:438:20 | (unsigned int)... | 1.0 | -| test.c:438:24:438:25 | 64 | 1.0 | -| test.c:438:24:438:25 | (unsigned int)... | 1.0 | -| test.c:439:9:443:22 | (...) | 125.0 | -| test.c:439:10:439:21 | (...) | 2.0 | -| test.c:439:10:439:26 | ... * ... | 2.0 | -| test.c:439:10:439:80 | ... > ... | 1.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 125.0 | -| test.c:439:11:439:11 | 2 | 1.0 | -| test.c:439:11:439:11 | (unsigned int)... | 1.0 | -| test.c:439:11:439:16 | ... * ... | 2.0 | -| test.c:439:11:439:20 | ... + ... | 2.0 | -| test.c:439:15:439:16 | ip | 2.0 | -| test.c:439:20:439:20 | 1 | 1.0 | -| test.c:439:20:439:20 | (unsigned int)... | 1.0 | -| test.c:439:25:439:26 | 14 | 1.0 | -| test.c:439:25:439:26 | (unsigned int)... | 1.0 | -| test.c:439:30:439:80 | (...) | 4.0 | -| test.c:439:31:439:32 | 17 | 1.0 | -| test.c:439:31:439:32 | (unsigned int)... | 1.0 | -| test.c:439:31:439:43 | ... * ... | 2.0 | -| test.c:439:31:439:53 | ... > ... | 1.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.0 | -| test.c:439:36:439:43 | (...) | 2.0 | -| test.c:439:37:439:37 | 2 | 1.0 | -| test.c:439:37:439:37 | (unsigned int)... | 1.0 | -| test.c:439:37:439:42 | ... * ... | 2.0 | -| test.c:439:41:439:42 | ip | 2.0 | -| test.c:439:47:439:48 | 17 | 1.0 | -| test.c:439:47:439:48 | (unsigned int)... | 1.0 | -| test.c:439:47:439:53 | ... * ... | 2.0 | -| test.c:439:52:439:53 | ip | 2.0 | -| test.c:439:57:439:58 | 17 | 1.0 | -| test.c:439:57:439:58 | (unsigned int)... | 1.0 | -| test.c:439:57:439:69 | ... * ... | 2.0 | -| test.c:439:62:439:69 | (...) | 2.0 | -| test.c:439:63:439:63 | 2 | 1.0 | -| test.c:439:63:439:63 | (unsigned int)... | 1.0 | -| test.c:439:63:439:68 | ... * ... | 2.0 | -| test.c:439:67:439:68 | ip | 2.0 | -| test.c:439:73:439:74 | 17 | 1.0 | -| test.c:439:73:439:74 | (unsigned int)... | 1.0 | -| test.c:439:73:439:79 | ... * ... | 2.0 | -| test.c:439:78:439:79 | ip | 2.0 | -| test.c:440:13:440:24 | (...) | 5.0 | -| test.c:440:13:440:29 | ... * ... | 5.0 | -| test.c:440:14:440:14 | 2 | 1.0 | -| test.c:440:14:440:14 | (unsigned int)... | 1.0 | -| test.c:440:14:440:19 | ... * ... | 5.0 | -| test.c:440:14:440:23 | ... + ... | 5.0 | -| test.c:440:18:440:19 | ip | 5.0 | -| test.c:440:23:440:23 | 1 | 1.0 | -| test.c:440:23:440:23 | (unsigned int)... | 1.0 | -| test.c:440:28:440:29 | 14 | 1.0 | -| test.c:440:28:440:29 | (unsigned int)... | 1.0 | -| test.c:441:13:441:14 | 14 | 1.0 | -| test.c:441:13:441:14 | (unsigned int)... | 1.0 | -| test.c:441:13:441:25 | ... * ... | 5.0 | -| test.c:441:13:441:35 | ... > ... | 1.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 25.0 | -| test.c:441:18:441:25 | (...) | 5.0 | -| test.c:441:19:441:19 | 2 | 1.0 | -| test.c:441:19:441:19 | (unsigned int)... | 1.0 | -| test.c:441:19:441:24 | ... * ... | 5.0 | -| test.c:441:23:441:24 | ip | 5.0 | -| test.c:441:29:441:30 | 17 | 1.0 | -| test.c:441:29:441:30 | (unsigned int)... | 1.0 | -| test.c:441:29:441:35 | ... * ... | 5.0 | -| test.c:441:34:441:35 | ip | 5.0 | -| test.c:442:15:442:16 | 14 | 1.0 | -| test.c:442:15:442:16 | (unsigned int)... | 1.0 | -| test.c:442:15:442:27 | ... * ... | 5.0 | -| test.c:442:20:442:27 | (...) | 5.0 | -| test.c:442:21:442:21 | 2 | 1.0 | -| test.c:442:21:442:21 | (unsigned int)... | 1.0 | -| test.c:442:21:442:26 | ... * ... | 5.0 | -| test.c:442:25:442:26 | ip | 5.0 | -| test.c:443:15:443:16 | 14 | 1.0 | -| test.c:443:15:443:16 | (unsigned int)... | 1.0 | -| test.c:443:15:443:21 | ... * ... | 5.0 | -| test.c:443:20:443:21 | ip | 5.0 | -| test.c:444:7:444:7 | 2 | 1.0 | -| test.c:444:7:444:7 | (unsigned int)... | 1.0 | -| test.c:444:7:444:12 | ... * ... | 15.0 | -| test.c:444:7:444:17 | ... * ... | 15.0 | -| test.c:444:7:444:37 | ... + ... | 225.0 | -| test.c:444:11:444:12 | ip | 15.0 | -| test.c:444:16:444:17 | 14 | 1.0 | -| test.c:444:16:444:17 | (unsigned int)... | 1.0 | -| test.c:444:21:444:32 | (...) | 15.0 | -| test.c:444:21:444:37 | ... * ... | 15.0 | -| test.c:444:22:444:22 | 2 | 1.0 | -| test.c:444:22:444:22 | (unsigned int)... | 1.0 | -| test.c:444:22:444:27 | ... * ... | 15.0 | -| test.c:444:22:444:31 | ... + ... | 15.0 | -| test.c:444:26:444:27 | ip | 15.0 | -| test.c:444:31:444:31 | 1 | 1.0 | -| test.c:444:31:444:31 | (unsigned int)... | 1.0 | -| test.c:444:36:444:37 | 17 | 1.0 | -| test.c:444:36:444:37 | (unsigned int)... | 1.0 | -| test.c:445:11:445:11 | 4 | 1.0 | -| test.c:445:11:445:11 | (unsigned int)... | 1.0 | -| test.c:445:11:445:28 | ... * ... | 15.0 | -| test.c:445:11:446:28 | ... + ... | 225.0 | -| test.c:445:11:447:28 | ... + ... | 3375.0 | -| test.c:445:11:453:24 | ... + ... | 1.00544625E8 | -| test.c:445:15:445:28 | (...) | 15.0 | -| test.c:445:16:445:17 | ip | 15.0 | -| test.c:445:16:445:22 | ... * ... | 15.0 | -| test.c:445:16:445:27 | ... + ... | 15.0 | -| test.c:445:21:445:22 | 14 | 1.0 | -| test.c:445:21:445:22 | (unsigned int)... | 1.0 | -| test.c:445:26:445:27 | 32 | 1.0 | -| test.c:445:26:445:27 | (unsigned int)... | 1.0 | -| test.c:446:11:446:28 | (...) | 15.0 | -| test.c:446:12:446:12 | 2 | 1.0 | -| test.c:446:12:446:12 | (unsigned int)... | 1.0 | -| test.c:446:12:446:17 | ... * ... | 15.0 | -| test.c:446:12:446:22 | ... * ... | 15.0 | -| test.c:446:12:446:27 | ... + ... | 15.0 | -| test.c:446:16:446:17 | ip | 15.0 | -| test.c:446:21:446:22 | 14 | 1.0 | -| test.c:446:21:446:22 | (unsigned int)... | 1.0 | -| test.c:446:26:446:27 | 32 | 1.0 | -| test.c:446:26:446:27 | (unsigned int)... | 1.0 | -| test.c:447:11:447:11 | 2 | 1.0 | -| test.c:447:11:447:11 | (unsigned int)... | 1.0 | -| test.c:447:11:447:28 | ... * ... | 15.0 | -| test.c:447:15:447:28 | (...) | 15.0 | -| test.c:447:16:447:17 | ip | 15.0 | -| test.c:447:16:447:22 | ... * ... | 15.0 | -| test.c:447:16:447:27 | ... + ... | 15.0 | -| test.c:447:21:447:22 | 14 | 1.0 | -| test.c:447:21:447:22 | (unsigned int)... | 1.0 | -| test.c:447:26:447:27 | 64 | 1.0 | -| test.c:447:26:447:27 | (unsigned int)... | 1.0 | -| test.c:448:11:453:24 | (...) | 29791.0 | -| test.c:448:12:448:23 | (...) | 15.0 | -| test.c:448:12:448:28 | ... * ... | 15.0 | -| test.c:448:12:449:61 | ... > ... | 1.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 29791.0 | -| test.c:448:13:448:13 | 2 | 1.0 | -| test.c:448:13:448:13 | (unsigned int)... | 1.0 | -| test.c:448:13:448:18 | ... * ... | 15.0 | -| test.c:448:13:448:22 | ... + ... | 15.0 | -| test.c:448:17:448:18 | ip | 15.0 | -| test.c:448:22:448:22 | 1 | 1.0 | -| test.c:448:22:448:22 | (unsigned int)... | 1.0 | -| test.c:448:27:448:28 | 14 | 1.0 | -| test.c:448:27:448:28 | (unsigned int)... | 1.0 | -| test.c:449:11:449:61 | (...) | 225.0 | -| test.c:449:12:449:13 | 14 | 1.0 | -| test.c:449:12:449:13 | (unsigned int)... | 1.0 | -| test.c:449:12:449:24 | ... * ... | 15.0 | -| test.c:449:12:449:34 | ... > ... | 1.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 225.0 | -| test.c:449:17:449:24 | (...) | 15.0 | -| test.c:449:18:449:18 | 2 | 1.0 | -| test.c:449:18:449:18 | (unsigned int)... | 1.0 | -| test.c:449:18:449:23 | ... * ... | 15.0 | -| test.c:449:22:449:23 | ip | 15.0 | -| test.c:449:28:449:29 | 17 | 1.0 | -| test.c:449:28:449:29 | (unsigned int)... | 1.0 | -| test.c:449:28:449:34 | ... * ... | 15.0 | -| test.c:449:33:449:34 | ip | 15.0 | -| test.c:449:38:449:39 | 17 | 1.0 | -| test.c:449:38:449:39 | (unsigned int)... | 1.0 | -| test.c:449:38:449:50 | ... * ... | 15.0 | -| test.c:449:43:449:50 | (...) | 15.0 | -| test.c:449:44:449:44 | 2 | 1.0 | -| test.c:449:44:449:44 | (unsigned int)... | 1.0 | -| test.c:449:44:449:49 | ... * ... | 15.0 | -| test.c:449:48:449:49 | ip | 15.0 | -| test.c:449:54:449:55 | 17 | 1.0 | -| test.c:449:54:449:55 | (unsigned int)... | 1.0 | -| test.c:449:54:449:60 | ... * ... | 15.0 | -| test.c:449:59:449:60 | ip | 15.0 | -| test.c:450:15:450:26 | (...) | 31.0 | -| test.c:450:15:450:31 | ... * ... | 31.0 | -| test.c:450:16:450:16 | 2 | 1.0 | -| test.c:450:16:450:16 | (unsigned int)... | 1.0 | -| test.c:450:16:450:21 | ... * ... | 31.0 | -| test.c:450:16:450:25 | ... + ... | 31.0 | -| test.c:450:20:450:21 | ip | 31.0 | -| test.c:450:25:450:25 | 1 | 1.0 | -| test.c:450:25:450:25 | (unsigned int)... | 1.0 | -| test.c:450:30:450:31 | 14 | 1.0 | -| test.c:450:30:450:31 | (unsigned int)... | 1.0 | -| test.c:451:15:451:16 | 14 | 1.0 | -| test.c:451:15:451:16 | (unsigned int)... | 1.0 | -| test.c:451:15:451:27 | ... * ... | 31.0 | -| test.c:451:15:451:37 | ... > ... | 1.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 961.0 | -| test.c:451:20:451:27 | (...) | 31.0 | -| test.c:451:21:451:21 | 2 | 1.0 | -| test.c:451:21:451:21 | (unsigned int)... | 1.0 | -| test.c:451:21:451:26 | ... * ... | 31.0 | -| test.c:451:25:451:26 | ip | 31.0 | -| test.c:451:31:451:32 | 17 | 1.0 | -| test.c:451:31:451:32 | (unsigned int)... | 1.0 | -| test.c:451:31:451:37 | ... * ... | 31.0 | -| test.c:451:36:451:37 | ip | 31.0 | -| test.c:452:17:452:18 | 14 | 1.0 | -| test.c:452:17:452:18 | (unsigned int)... | 1.0 | -| test.c:452:17:452:29 | ... * ... | 31.0 | -| test.c:452:22:452:29 | (...) | 31.0 | -| test.c:452:23:452:23 | 2 | 1.0 | -| test.c:452:23:452:23 | (unsigned int)... | 1.0 | -| test.c:452:23:452:28 | ... * ... | 31.0 | -| test.c:452:27:452:28 | ip | 31.0 | -| test.c:453:17:453:18 | 14 | 1.0 | -| test.c:453:17:453:18 | (unsigned int)... | 1.0 | -| test.c:453:17:453:23 | ... * ... | 31.0 | -| test.c:453:22:453:23 | ip | 31.0 | +| test.c:429:7:429:7 | a | 1.0 | +| test.c:429:7:429:13 | ... == ... | 1.0 | +| test.c:429:12:429:13 | 17 | 1.0 | +| test.c:430:9:430:9 | b | 1.0 | +| test.c:430:9:430:15 | ... == ... | 1.0 | +| test.c:430:14:430:15 | 23 | 1.0 | +| test.c:431:7:431:7 | a | 1.0 | +| test.c:431:7:431:12 | ... += ... | 1.0 | +| test.c:431:12:431:12 | b | 1.0 | +| test.c:433:9:433:9 | a | 2.0 | +| test.c:433:9:433:15 | ... == ... | 1.0 | +| test.c:433:14:433:15 | 18 | 1.0 | +| test.c:434:7:434:7 | b | 1.0 | +| test.c:434:7:434:12 | ... = ... | 1.0 | +| test.c:434:11:434:12 | 10 | 1.0 | +| test.c:439:11:439:11 | a | 3.0 | +| test.c:439:11:439:11 | a | 4.0 | +| test.c:439:11:439:15 | ... + ... | 12.0 | +| test.c:439:11:439:15 | ... + ... | 16.0 | +| test.c:439:15:439:15 | b | 4.0 | +| test.c:440:10:440:10 | a | 3.0 | +| test.c:440:10:440:10 | a | 4.0 | +| test.c:440:10:440:14 | ... + ... | 12.0 | +| test.c:440:10:440:14 | ... + ... | 16.0 | +| test.c:440:14:440:14 | b | 4.0 | +| test.c:447:4:449:50 | (...) | 1.0 | +| test.c:447:4:532:26 | ... > ... | 1.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 1.297918419127476E201 | +| test.c:447:5:447:6 | 14 | 1.0 | +| test.c:447:5:447:6 | (unsigned int)... | 1.0 | +| test.c:447:5:447:11 | ... * ... | 1.0 | +| test.c:447:5:447:55 | ... > ... | 1.0 | +| test.c:447:5:449:49 | ... ? ... : ... | 1.0 | +| test.c:447:10:447:11 | ip | 1.0 | +| test.c:447:15:447:26 | (...) | 1.0 | +| test.c:447:15:447:31 | ... * ... | 1.0 | +| test.c:447:15:447:55 | ... + ... | 1.0 | +| test.c:447:16:447:16 | 2 | 1.0 | +| test.c:447:16:447:16 | (unsigned int)... | 1.0 | +| test.c:447:16:447:21 | ... * ... | 1.0 | +| test.c:447:16:447:25 | ... + ... | 1.0 | +| test.c:447:20:447:21 | ip | 1.0 | +| test.c:447:25:447:25 | 1 | 1.0 | +| test.c:447:25:447:25 | (unsigned int)... | 1.0 | +| test.c:447:30:447:31 | 17 | 1.0 | +| test.c:447:30:447:31 | (unsigned int)... | 1.0 | +| test.c:447:35:447:50 | (...) | 1.0 | +| test.c:447:35:447:55 | ... * ... | 1.0 | +| test.c:447:36:447:36 | 2 | 1.0 | +| test.c:447:36:447:36 | (unsigned int)... | 1.0 | +| test.c:447:36:447:41 | ... * ... | 1.0 | +| test.c:447:36:447:45 | ... + ... | 1.0 | +| test.c:447:36:447:49 | ... + ... | 1.0 | +| test.c:447:40:447:41 | ip | 1.0 | +| test.c:447:45:447:45 | 1 | 1.0 | +| test.c:447:45:447:45 | (unsigned int)... | 1.0 | +| test.c:447:49:447:49 | 1 | 1.0 | +| test.c:447:49:447:49 | (unsigned int)... | 1.0 | +| test.c:447:54:447:55 | 17 | 1.0 | +| test.c:447:54:447:55 | (unsigned int)... | 1.0 | +| test.c:448:9:448:10 | 14 | 1.0 | +| test.c:448:9:448:10 | (unsigned int)... | 1.0 | +| test.c:448:9:448:15 | ... * ... | 1.0 | +| test.c:448:14:448:15 | ip | 1.0 | +| test.c:449:9:449:20 | (...) | 1.0 | +| test.c:449:9:449:25 | ... * ... | 1.0 | +| test.c:449:9:449:49 | ... + ... | 1.0 | +| test.c:449:10:449:10 | 2 | 1.0 | +| test.c:449:10:449:10 | (unsigned int)... | 1.0 | +| test.c:449:10:449:15 | ... * ... | 1.0 | +| test.c:449:10:449:19 | ... + ... | 1.0 | +| test.c:449:14:449:15 | ip | 1.0 | +| test.c:449:19:449:19 | 1 | 1.0 | +| test.c:449:19:449:19 | (unsigned int)... | 1.0 | +| test.c:449:24:449:25 | 14 | 1.0 | +| test.c:449:24:449:25 | (unsigned int)... | 1.0 | +| test.c:449:29:449:44 | (...) | 1.0 | +| test.c:449:29:449:49 | ... * ... | 1.0 | +| test.c:449:30:449:30 | 2 | 1.0 | +| test.c:449:30:449:30 | (unsigned int)... | 1.0 | +| test.c:449:30:449:35 | ... * ... | 1.0 | +| test.c:449:30:449:39 | ... + ... | 1.0 | +| test.c:449:30:449:43 | ... + ... | 1.0 | +| test.c:449:34:449:35 | ip | 1.0 | +| test.c:449:39:449:39 | 1 | 1.0 | +| test.c:449:39:449:39 | (unsigned int)... | 1.0 | +| test.c:449:43:449:43 | 1 | 1.0 | +| test.c:449:43:449:43 | (unsigned int)... | 1.0 | +| test.c:449:48:449:49 | 17 | 1.0 | +| test.c:449:48:449:49 | (unsigned int)... | 1.0 | +| test.c:450:5:532:26 | (...) | 9.29462083211502E84 | +| test.c:450:6:450:6 | 2 | 1.0 | +| test.c:450:6:450:6 | (unsigned int)... | 1.0 | +| test.c:450:6:450:23 | ... * ... | 2.0 | +| test.c:450:6:469:42 | ... + ... | 4.524508125E10 | +| test.c:450:6:489:24 | ... > ... | 1.0 | +| test.c:450:6:532:25 | ... ? ... : ... | 9.29462083211502E84 | +| test.c:450:10:450:23 | (...) | 2.0 | +| test.c:450:11:450:12 | ip | 2.0 | +| test.c:450:11:450:17 | ... * ... | 2.0 | +| test.c:450:11:450:22 | ... + ... | 2.0 | +| test.c:450:16:450:17 | 14 | 1.0 | +| test.c:450:16:450:17 | (unsigned int)... | 1.0 | +| test.c:450:21:450:22 | 32 | 1.0 | +| test.c:450:21:450:22 | (unsigned int)... | 1.0 | +| test.c:451:7:469:42 | (...) | 2.2622540625E10 | +| test.c:451:8:451:8 | 4 | 1.0 | +| test.c:451:8:451:8 | (unsigned int)... | 1.0 | +| test.c:451:8:451:25 | ... * ... | 2.0 | +| test.c:451:8:452:26 | ... + ... | 4.0 | +| test.c:451:8:453:26 | ... + ... | 8.0 | +| test.c:451:8:458:22 | ... + ... | 1000.0 | +| test.c:451:8:459:37 | ... > ... | 1.0 | +| test.c:451:8:469:41 | ... ? ... : ... | 2.2622540625E10 | +| test.c:451:12:451:25 | (...) | 2.0 | +| test.c:451:13:451:14 | ip | 2.0 | +| test.c:451:13:451:19 | ... * ... | 2.0 | +| test.c:451:13:451:24 | ... + ... | 2.0 | +| test.c:451:18:451:19 | 14 | 1.0 | +| test.c:451:18:451:19 | (unsigned int)... | 1.0 | +| test.c:451:23:451:24 | 32 | 1.0 | +| test.c:451:23:451:24 | (unsigned int)... | 1.0 | +| test.c:452:9:452:26 | (...) | 2.0 | +| test.c:452:10:452:10 | 2 | 1.0 | +| test.c:452:10:452:10 | (unsigned int)... | 1.0 | +| test.c:452:10:452:15 | ... * ... | 2.0 | +| test.c:452:10:452:20 | ... * ... | 2.0 | +| test.c:452:10:452:25 | ... + ... | 2.0 | +| test.c:452:14:452:15 | ip | 2.0 | +| test.c:452:19:452:20 | 14 | 1.0 | +| test.c:452:19:452:20 | (unsigned int)... | 1.0 | +| test.c:452:24:452:25 | 32 | 1.0 | +| test.c:452:24:452:25 | (unsigned int)... | 1.0 | +| test.c:453:9:453:9 | 2 | 1.0 | +| test.c:453:9:453:9 | (unsigned int)... | 1.0 | +| test.c:453:9:453:26 | ... * ... | 2.0 | +| test.c:453:13:453:26 | (...) | 2.0 | +| test.c:453:14:453:15 | ip | 2.0 | +| test.c:453:14:453:20 | ... * ... | 2.0 | +| test.c:453:14:453:25 | ... + ... | 2.0 | +| test.c:453:19:453:20 | 14 | 1.0 | +| test.c:453:19:453:20 | (unsigned int)... | 1.0 | +| test.c:453:24:453:25 | 64 | 1.0 | +| test.c:453:24:453:25 | (unsigned int)... | 1.0 | +| test.c:454:9:458:22 | (...) | 125.0 | +| test.c:454:10:454:21 | (...) | 2.0 | +| test.c:454:10:454:26 | ... * ... | 2.0 | +| test.c:454:10:454:80 | ... > ... | 1.0 | +| test.c:454:10:458:21 | ... ? ... : ... | 125.0 | | test.c:454:11:454:11 | 2 | 1.0 | | test.c:454:11:454:11 | (unsigned int)... | 1.0 | -| test.c:454:11:454:16 | ... * ... | 15.0 | -| test.c:454:11:454:21 | ... * ... | 15.0 | -| test.c:454:11:454:41 | ... + ... | 225.0 | -| test.c:454:15:454:16 | ip | 15.0 | -| test.c:454:20:454:21 | 14 | 1.0 | -| test.c:454:20:454:21 | (unsigned int)... | 1.0 | -| test.c:454:25:454:36 | (...) | 15.0 | -| test.c:454:25:454:41 | ... * ... | 15.0 | -| test.c:454:26:454:26 | 2 | 1.0 | -| test.c:454:26:454:26 | (unsigned int)... | 1.0 | -| test.c:454:26:454:31 | ... * ... | 15.0 | -| test.c:454:26:454:35 | ... + ... | 15.0 | -| test.c:454:30:454:31 | ip | 15.0 | -| test.c:454:35:454:35 | 1 | 1.0 | -| test.c:454:35:454:35 | (unsigned int)... | 1.0 | -| test.c:454:40:454:41 | 17 | 1.0 | -| test.c:454:40:454:41 | (unsigned int)... | 1.0 | -| test.c:455:5:474:24 | (...) | 6.6142118960740864E25 | -| test.c:455:6:455:6 | 4 | 1.0 | -| test.c:455:6:455:6 | (unsigned int)... | 1.0 | -| test.c:455:6:455:23 | ... * ... | 108.0 | -| test.c:455:6:456:24 | ... + ... | 11664.0 | -| test.c:455:6:457:24 | ... + ... | 1259712.0 | -| test.c:455:6:462:20 | ... + ... | 1.2872131505856E13 | -| test.c:455:6:463:55 | ... > ... | 1.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 6.6142118960740864E25 | -| test.c:455:10:455:23 | (...) | 108.0 | -| test.c:455:11:455:12 | ip | 108.0 | -| test.c:455:11:455:17 | ... * ... | 108.0 | -| test.c:455:11:455:22 | ... + ... | 108.0 | -| test.c:455:16:455:17 | 14 | 1.0 | -| test.c:455:16:455:17 | (unsigned int)... | 1.0 | -| test.c:455:21:455:22 | 32 | 1.0 | -| test.c:455:21:455:22 | (unsigned int)... | 1.0 | -| test.c:456:7:456:24 | (...) | 108.0 | -| test.c:456:8:456:8 | 2 | 1.0 | -| test.c:456:8:456:8 | (unsigned int)... | 1.0 | -| test.c:456:8:456:13 | ... * ... | 108.0 | -| test.c:456:8:456:18 | ... * ... | 108.0 | -| test.c:456:8:456:23 | ... + ... | 108.0 | -| test.c:456:12:456:13 | ip | 108.0 | -| test.c:456:17:456:18 | 14 | 1.0 | -| test.c:456:17:456:18 | (unsigned int)... | 1.0 | -| test.c:456:22:456:23 | 32 | 1.0 | -| test.c:456:22:456:23 | (unsigned int)... | 1.0 | -| test.c:457:7:457:7 | 2 | 1.0 | -| test.c:457:7:457:7 | (unsigned int)... | 1.0 | -| test.c:457:7:457:24 | ... * ... | 108.0 | -| test.c:457:11:457:24 | (...) | 108.0 | -| test.c:457:12:457:13 | ip | 108.0 | -| test.c:457:12:457:18 | ... * ... | 108.0 | -| test.c:457:12:457:23 | ... + ... | 108.0 | -| test.c:457:17:457:18 | 14 | 1.0 | -| test.c:457:17:457:18 | (unsigned int)... | 1.0 | -| test.c:457:22:457:23 | 64 | 1.0 | -| test.c:457:22:457:23 | (unsigned int)... | 1.0 | -| test.c:458:7:462:20 | (...) | 1.0218313E7 | -| test.c:458:8:458:19 | (...) | 108.0 | -| test.c:458:8:458:24 | ... * ... | 108.0 | -| test.c:458:8:458:78 | ... > ... | 1.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 1.0218313E7 | -| test.c:458:9:458:9 | 2 | 1.0 | -| test.c:458:9:458:9 | (unsigned int)... | 1.0 | -| test.c:458:9:458:14 | ... * ... | 108.0 | -| test.c:458:9:458:18 | ... + ... | 108.0 | -| test.c:458:13:458:14 | ip | 108.0 | -| test.c:458:18:458:18 | 1 | 1.0 | -| test.c:458:18:458:18 | (unsigned int)... | 1.0 | -| test.c:458:23:458:24 | 14 | 1.0 | -| test.c:458:23:458:24 | (unsigned int)... | 1.0 | -| test.c:458:28:458:78 | (...) | 11664.0 | -| test.c:458:29:458:30 | 17 | 1.0 | -| test.c:458:29:458:30 | (unsigned int)... | 1.0 | -| test.c:458:29:458:41 | ... * ... | 108.0 | -| test.c:458:29:458:51 | ... > ... | 1.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 11664.0 | -| test.c:458:34:458:41 | (...) | 108.0 | -| test.c:458:35:458:35 | 2 | 1.0 | -| test.c:458:35:458:35 | (unsigned int)... | 1.0 | -| test.c:458:35:458:40 | ... * ... | 108.0 | -| test.c:458:39:458:40 | ip | 108.0 | -| test.c:458:45:458:46 | 17 | 1.0 | -| test.c:458:45:458:46 | (unsigned int)... | 1.0 | -| test.c:458:45:458:51 | ... * ... | 108.0 | -| test.c:458:50:458:51 | ip | 108.0 | -| test.c:458:55:458:56 | 17 | 1.0 | -| test.c:458:55:458:56 | (unsigned int)... | 1.0 | -| test.c:458:55:458:67 | ... * ... | 108.0 | -| test.c:458:60:458:67 | (...) | 108.0 | -| test.c:458:61:458:61 | 2 | 1.0 | -| test.c:458:61:458:61 | (unsigned int)... | 1.0 | -| test.c:458:61:458:66 | ... * ... | 108.0 | -| test.c:458:65:458:66 | ip | 108.0 | -| test.c:458:71:458:72 | 17 | 1.0 | -| test.c:458:71:458:72 | (unsigned int)... | 1.0 | -| test.c:458:71:458:77 | ... * ... | 108.0 | -| test.c:458:76:458:77 | ip | 108.0 | -| test.c:459:11:459:22 | (...) | 217.0 | -| test.c:459:11:459:27 | ... * ... | 217.0 | -| test.c:459:12:459:12 | 2 | 1.0 | -| test.c:459:12:459:12 | (unsigned int)... | 1.0 | -| test.c:459:12:459:17 | ... * ... | 217.0 | -| test.c:459:12:459:21 | ... + ... | 217.0 | -| test.c:459:16:459:17 | ip | 217.0 | -| test.c:459:21:459:21 | 1 | 1.0 | -| test.c:459:21:459:21 | (unsigned int)... | 1.0 | -| test.c:459:26:459:27 | 14 | 1.0 | -| test.c:459:26:459:27 | (unsigned int)... | 1.0 | -| test.c:460:11:460:12 | 14 | 1.0 | -| test.c:460:11:460:12 | (unsigned int)... | 1.0 | -| test.c:460:11:460:23 | ... * ... | 217.0 | -| test.c:460:11:460:33 | ... > ... | 1.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 47089.0 | -| test.c:460:16:460:23 | (...) | 217.0 | -| test.c:460:17:460:17 | 2 | 1.0 | -| test.c:460:17:460:17 | (unsigned int)... | 1.0 | -| test.c:460:17:460:22 | ... * ... | 217.0 | -| test.c:460:21:460:22 | ip | 217.0 | -| test.c:460:27:460:28 | 17 | 1.0 | -| test.c:460:27:460:28 | (unsigned int)... | 1.0 | -| test.c:460:27:460:33 | ... * ... | 217.0 | -| test.c:460:32:460:33 | ip | 217.0 | -| test.c:461:13:461:14 | 14 | 1.0 | -| test.c:461:13:461:14 | (unsigned int)... | 1.0 | -| test.c:461:13:461:25 | ... * ... | 217.0 | -| test.c:461:18:461:25 | (...) | 217.0 | -| test.c:461:19:461:19 | 2 | 1.0 | -| test.c:461:19:461:19 | (unsigned int)... | 1.0 | -| test.c:461:19:461:24 | ... * ... | 217.0 | -| test.c:461:23:461:24 | ip | 217.0 | -| test.c:462:13:462:14 | 14 | 1.0 | -| test.c:462:13:462:14 | (unsigned int)... | 1.0 | -| test.c:462:13:462:19 | ... * ... | 217.0 | -| test.c:462:18:462:19 | ip | 217.0 | -| test.c:463:5:463:55 | (...) | 423801.0 | -| test.c:463:6:463:7 | 14 | 1.0 | -| test.c:463:6:463:7 | (unsigned int)... | 1.0 | -| test.c:463:6:463:12 | ... * ... | 651.0 | -| test.c:463:6:463:28 | ... > ... | 1.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 423801.0 | -| test.c:463:11:463:12 | ip | 651.0 | -| test.c:463:16:463:23 | (...) | 651.0 | -| test.c:463:16:463:28 | ... * ... | 651.0 | -| test.c:463:17:463:18 | ip | 651.0 | -| test.c:463:17:463:22 | ... + ... | 651.0 | +| test.c:454:11:454:16 | ... * ... | 2.0 | +| test.c:454:11:454:20 | ... + ... | 2.0 | +| test.c:454:15:454:16 | ip | 2.0 | +| test.c:454:20:454:20 | 1 | 1.0 | +| test.c:454:20:454:20 | (unsigned int)... | 1.0 | +| test.c:454:25:454:26 | 14 | 1.0 | +| test.c:454:25:454:26 | (unsigned int)... | 1.0 | +| test.c:454:30:454:80 | (...) | 4.0 | +| test.c:454:31:454:32 | 17 | 1.0 | +| test.c:454:31:454:32 | (unsigned int)... | 1.0 | +| test.c:454:31:454:43 | ... * ... | 2.0 | +| test.c:454:31:454:53 | ... > ... | 1.0 | +| test.c:454:31:454:79 | ... ? ... : ... | 4.0 | +| test.c:454:36:454:43 | (...) | 2.0 | +| test.c:454:37:454:37 | 2 | 1.0 | +| test.c:454:37:454:37 | (unsigned int)... | 1.0 | +| test.c:454:37:454:42 | ... * ... | 2.0 | +| test.c:454:41:454:42 | ip | 2.0 | +| test.c:454:47:454:48 | 17 | 1.0 | +| test.c:454:47:454:48 | (unsigned int)... | 1.0 | +| test.c:454:47:454:53 | ... * ... | 2.0 | +| test.c:454:52:454:53 | ip | 2.0 | +| test.c:454:57:454:58 | 17 | 1.0 | +| test.c:454:57:454:58 | (unsigned int)... | 1.0 | +| test.c:454:57:454:69 | ... * ... | 2.0 | +| test.c:454:62:454:69 | (...) | 2.0 | +| test.c:454:63:454:63 | 2 | 1.0 | +| test.c:454:63:454:63 | (unsigned int)... | 1.0 | +| test.c:454:63:454:68 | ... * ... | 2.0 | +| test.c:454:67:454:68 | ip | 2.0 | +| test.c:454:73:454:74 | 17 | 1.0 | +| test.c:454:73:454:74 | (unsigned int)... | 1.0 | +| test.c:454:73:454:79 | ... * ... | 2.0 | +| test.c:454:78:454:79 | ip | 2.0 | +| test.c:455:13:455:24 | (...) | 5.0 | +| test.c:455:13:455:29 | ... * ... | 5.0 | +| test.c:455:14:455:14 | 2 | 1.0 | +| test.c:455:14:455:14 | (unsigned int)... | 1.0 | +| test.c:455:14:455:19 | ... * ... | 5.0 | +| test.c:455:14:455:23 | ... + ... | 5.0 | +| test.c:455:18:455:19 | ip | 5.0 | +| test.c:455:23:455:23 | 1 | 1.0 | +| test.c:455:23:455:23 | (unsigned int)... | 1.0 | +| test.c:455:28:455:29 | 14 | 1.0 | +| test.c:455:28:455:29 | (unsigned int)... | 1.0 | +| test.c:456:13:456:14 | 14 | 1.0 | +| test.c:456:13:456:14 | (unsigned int)... | 1.0 | +| test.c:456:13:456:25 | ... * ... | 5.0 | +| test.c:456:13:456:35 | ... > ... | 1.0 | +| test.c:456:13:458:21 | ... ? ... : ... | 25.0 | +| test.c:456:18:456:25 | (...) | 5.0 | +| test.c:456:19:456:19 | 2 | 1.0 | +| test.c:456:19:456:19 | (unsigned int)... | 1.0 | +| test.c:456:19:456:24 | ... * ... | 5.0 | +| test.c:456:23:456:24 | ip | 5.0 | +| test.c:456:29:456:30 | 17 | 1.0 | +| test.c:456:29:456:30 | (unsigned int)... | 1.0 | +| test.c:456:29:456:35 | ... * ... | 5.0 | +| test.c:456:34:456:35 | ip | 5.0 | +| test.c:457:15:457:16 | 14 | 1.0 | +| test.c:457:15:457:16 | (unsigned int)... | 1.0 | +| test.c:457:15:457:27 | ... * ... | 5.0 | +| test.c:457:20:457:27 | (...) | 5.0 | +| test.c:457:21:457:21 | 2 | 1.0 | +| test.c:457:21:457:21 | (unsigned int)... | 1.0 | +| test.c:457:21:457:26 | ... * ... | 5.0 | +| test.c:457:25:457:26 | ip | 5.0 | +| test.c:458:15:458:16 | 14 | 1.0 | +| test.c:458:15:458:16 | (unsigned int)... | 1.0 | +| test.c:458:15:458:21 | ... * ... | 5.0 | +| test.c:458:20:458:21 | ip | 5.0 | +| test.c:459:7:459:7 | 2 | 1.0 | +| test.c:459:7:459:7 | (unsigned int)... | 1.0 | +| test.c:459:7:459:12 | ... * ... | 15.0 | +| test.c:459:7:459:17 | ... * ... | 15.0 | +| test.c:459:7:459:37 | ... + ... | 225.0 | +| test.c:459:11:459:12 | ip | 15.0 | +| test.c:459:16:459:17 | 14 | 1.0 | +| test.c:459:16:459:17 | (unsigned int)... | 1.0 | +| test.c:459:21:459:32 | (...) | 15.0 | +| test.c:459:21:459:37 | ... * ... | 15.0 | +| test.c:459:22:459:22 | 2 | 1.0 | +| test.c:459:22:459:22 | (unsigned int)... | 1.0 | +| test.c:459:22:459:27 | ... * ... | 15.0 | +| test.c:459:22:459:31 | ... + ... | 15.0 | +| test.c:459:26:459:27 | ip | 15.0 | +| test.c:459:31:459:31 | 1 | 1.0 | +| test.c:459:31:459:31 | (unsigned int)... | 1.0 | +| test.c:459:36:459:37 | 17 | 1.0 | +| test.c:459:36:459:37 | (unsigned int)... | 1.0 | +| test.c:460:11:460:11 | 4 | 1.0 | +| test.c:460:11:460:11 | (unsigned int)... | 1.0 | +| test.c:460:11:460:28 | ... * ... | 15.0 | +| test.c:460:11:461:28 | ... + ... | 225.0 | +| test.c:460:11:462:28 | ... + ... | 3375.0 | +| test.c:460:11:468:24 | ... + ... | 1.00544625E8 | +| test.c:460:15:460:28 | (...) | 15.0 | +| test.c:460:16:460:17 | ip | 15.0 | +| test.c:460:16:460:22 | ... * ... | 15.0 | +| test.c:460:16:460:27 | ... + ... | 15.0 | +| test.c:460:21:460:22 | 14 | 1.0 | +| test.c:460:21:460:22 | (unsigned int)... | 1.0 | +| test.c:460:26:460:27 | 32 | 1.0 | +| test.c:460:26:460:27 | (unsigned int)... | 1.0 | +| test.c:461:11:461:28 | (...) | 15.0 | +| test.c:461:12:461:12 | 2 | 1.0 | +| test.c:461:12:461:12 | (unsigned int)... | 1.0 | +| test.c:461:12:461:17 | ... * ... | 15.0 | +| test.c:461:12:461:22 | ... * ... | 15.0 | +| test.c:461:12:461:27 | ... + ... | 15.0 | +| test.c:461:16:461:17 | ip | 15.0 | +| test.c:461:21:461:22 | 14 | 1.0 | +| test.c:461:21:461:22 | (unsigned int)... | 1.0 | +| test.c:461:26:461:27 | 32 | 1.0 | +| test.c:461:26:461:27 | (unsigned int)... | 1.0 | +| test.c:462:11:462:11 | 2 | 1.0 | +| test.c:462:11:462:11 | (unsigned int)... | 1.0 | +| test.c:462:11:462:28 | ... * ... | 15.0 | +| test.c:462:15:462:28 | (...) | 15.0 | +| test.c:462:16:462:17 | ip | 15.0 | +| test.c:462:16:462:22 | ... * ... | 15.0 | +| test.c:462:16:462:27 | ... + ... | 15.0 | +| test.c:462:21:462:22 | 14 | 1.0 | +| test.c:462:21:462:22 | (unsigned int)... | 1.0 | +| test.c:462:26:462:27 | 64 | 1.0 | +| test.c:462:26:462:27 | (unsigned int)... | 1.0 | +| test.c:463:11:468:24 | (...) | 29791.0 | +| test.c:463:12:463:23 | (...) | 15.0 | +| test.c:463:12:463:28 | ... * ... | 15.0 | +| test.c:463:12:464:61 | ... > ... | 1.0 | +| test.c:463:12:468:23 | ... ? ... : ... | 29791.0 | +| test.c:463:13:463:13 | 2 | 1.0 | +| test.c:463:13:463:13 | (unsigned int)... | 1.0 | +| test.c:463:13:463:18 | ... * ... | 15.0 | +| test.c:463:13:463:22 | ... + ... | 15.0 | +| test.c:463:17:463:18 | ip | 15.0 | | test.c:463:22:463:22 | 1 | 1.0 | | test.c:463:22:463:22 | (unsigned int)... | 1.0 | -| test.c:463:27:463:28 | 17 | 1.0 | +| test.c:463:27:463:28 | 14 | 1.0 | | test.c:463:27:463:28 | (unsigned int)... | 1.0 | -| test.c:463:32:463:33 | 17 | 1.0 | -| test.c:463:32:463:33 | (unsigned int)... | 1.0 | -| test.c:463:32:463:38 | ... * ... | 651.0 | -| test.c:463:37:463:38 | ip | 651.0 | -| test.c:463:42:463:49 | (...) | 651.0 | -| test.c:463:42:463:54 | ... * ... | 651.0 | -| test.c:463:43:463:44 | ip | 651.0 | -| test.c:463:43:463:48 | ... + ... | 651.0 | -| test.c:463:48:463:48 | 1 | 1.0 | -| test.c:463:48:463:48 | (unsigned int)... | 1.0 | -| test.c:463:53:463:54 | 17 | 1.0 | -| test.c:463:53:463:54 | (unsigned int)... | 1.0 | -| test.c:464:9:464:9 | 4 | 1.0 | -| test.c:464:9:464:9 | (unsigned int)... | 1.0 | -| test.c:464:9:464:26 | ... * ... | 1302.0 | -| test.c:464:9:465:26 | ... + ... | 1695204.0 | -| test.c:464:9:466:26 | ... + ... | 2.207155608E9 | -| test.c:464:9:471:22 | ... + ... | 3.9017203216097214E19 | -| test.c:464:13:464:26 | (...) | 1302.0 | -| test.c:464:14:464:15 | ip | 1302.0 | -| test.c:464:14:464:20 | ... * ... | 1302.0 | -| test.c:464:14:464:25 | ... + ... | 1302.0 | -| test.c:464:19:464:20 | 14 | 1.0 | -| test.c:464:19:464:20 | (unsigned int)... | 1.0 | -| test.c:464:24:464:25 | 32 | 1.0 | -| test.c:464:24:464:25 | (unsigned int)... | 1.0 | -| test.c:465:9:465:26 | (...) | 1302.0 | -| test.c:465:10:465:10 | 2 | 1.0 | -| test.c:465:10:465:10 | (unsigned int)... | 1.0 | -| test.c:465:10:465:15 | ... * ... | 1302.0 | -| test.c:465:10:465:20 | ... * ... | 1302.0 | -| test.c:465:10:465:25 | ... + ... | 1302.0 | -| test.c:465:14:465:15 | ip | 1302.0 | -| test.c:465:19:465:20 | 14 | 1.0 | -| test.c:465:19:465:20 | (unsigned int)... | 1.0 | -| test.c:465:24:465:25 | 32 | 1.0 | -| test.c:465:24:465:25 | (unsigned int)... | 1.0 | -| test.c:466:9:466:9 | 2 | 1.0 | -| test.c:466:9:466:9 | (unsigned int)... | 1.0 | -| test.c:466:9:466:26 | ... * ... | 1302.0 | -| test.c:466:13:466:26 | (...) | 1302.0 | -| test.c:466:14:466:15 | ip | 1302.0 | -| test.c:466:14:466:20 | ... * ... | 1302.0 | -| test.c:466:14:466:25 | ... + ... | 1302.0 | -| test.c:466:19:466:20 | 14 | 1.0 | -| test.c:466:19:466:20 | (unsigned int)... | 1.0 | -| test.c:466:24:466:25 | 64 | 1.0 | -| test.c:466:24:466:25 | (unsigned int)... | 1.0 | -| test.c:467:9:471:22 | (...) | 1.7677595125E10 | -| test.c:467:10:467:21 | (...) | 1302.0 | -| test.c:467:10:467:26 | ... * ... | 1302.0 | -| test.c:467:10:467:80 | ... > ... | 1.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 1.7677595125E10 | -| test.c:467:11:467:11 | 2 | 1.0 | -| test.c:467:11:467:11 | (unsigned int)... | 1.0 | -| test.c:467:11:467:16 | ... * ... | 1302.0 | -| test.c:467:11:467:20 | ... + ... | 1302.0 | -| test.c:467:15:467:16 | ip | 1302.0 | -| test.c:467:20:467:20 | 1 | 1.0 | -| test.c:467:20:467:20 | (unsigned int)... | 1.0 | -| test.c:467:25:467:26 | 14 | 1.0 | -| test.c:467:25:467:26 | (unsigned int)... | 1.0 | -| test.c:467:30:467:80 | (...) | 1695204.0 | -| test.c:467:31:467:32 | 17 | 1.0 | -| test.c:467:31:467:32 | (unsigned int)... | 1.0 | -| test.c:467:31:467:43 | ... * ... | 1302.0 | -| test.c:467:31:467:53 | ... > ... | 1.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 1695204.0 | -| test.c:467:36:467:43 | (...) | 1302.0 | -| test.c:467:37:467:37 | 2 | 1.0 | -| test.c:467:37:467:37 | (unsigned int)... | 1.0 | -| test.c:467:37:467:42 | ... * ... | 1302.0 | -| test.c:467:41:467:42 | ip | 1302.0 | -| test.c:467:47:467:48 | 17 | 1.0 | -| test.c:467:47:467:48 | (unsigned int)... | 1.0 | -| test.c:467:47:467:53 | ... * ... | 1302.0 | -| test.c:467:52:467:53 | ip | 1302.0 | -| test.c:467:57:467:58 | 17 | 1.0 | -| test.c:467:57:467:58 | (unsigned int)... | 1.0 | -| test.c:467:57:467:69 | ... * ... | 1302.0 | -| test.c:467:62:467:69 | (...) | 1302.0 | -| test.c:467:63:467:63 | 2 | 1.0 | -| test.c:467:63:467:63 | (unsigned int)... | 1.0 | -| test.c:467:63:467:68 | ... * ... | 1302.0 | -| test.c:467:67:467:68 | ip | 1302.0 | -| test.c:467:73:467:74 | 17 | 1.0 | -| test.c:467:73:467:74 | (unsigned int)... | 1.0 | -| test.c:467:73:467:79 | ... * ... | 1302.0 | -| test.c:467:78:467:79 | ip | 1302.0 | -| test.c:468:13:468:24 | (...) | 2605.0 | -| test.c:468:13:468:29 | ... * ... | 2605.0 | -| test.c:468:14:468:14 | 2 | 1.0 | -| test.c:468:14:468:14 | (unsigned int)... | 1.0 | -| test.c:468:14:468:19 | ... * ... | 2605.0 | -| test.c:468:14:468:23 | ... + ... | 2605.0 | -| test.c:468:18:468:19 | ip | 2605.0 | -| test.c:468:23:468:23 | 1 | 1.0 | -| test.c:468:23:468:23 | (unsigned int)... | 1.0 | -| test.c:468:28:468:29 | 14 | 1.0 | -| test.c:468:28:468:29 | (unsigned int)... | 1.0 | -| test.c:469:13:469:14 | 14 | 1.0 | -| test.c:469:13:469:14 | (unsigned int)... | 1.0 | -| test.c:469:13:469:25 | ... * ... | 2605.0 | -| test.c:469:13:469:35 | ... > ... | 1.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 6786025.0 | -| test.c:469:18:469:25 | (...) | 2605.0 | -| test.c:469:19:469:19 | 2 | 1.0 | -| test.c:469:19:469:19 | (unsigned int)... | 1.0 | -| test.c:469:19:469:24 | ... * ... | 2605.0 | -| test.c:469:23:469:24 | ip | 2605.0 | -| test.c:469:29:469:30 | 17 | 1.0 | -| test.c:469:29:469:30 | (unsigned int)... | 1.0 | -| test.c:469:29:469:35 | ... * ... | 2605.0 | -| test.c:469:34:469:35 | ip | 2605.0 | -| test.c:470:15:470:16 | 14 | 1.0 | -| test.c:470:15:470:16 | (unsigned int)... | 1.0 | -| test.c:470:15:470:27 | ... * ... | 2605.0 | -| test.c:470:20:470:27 | (...) | 2605.0 | -| test.c:470:21:470:21 | 2 | 1.0 | -| test.c:470:21:470:21 | (unsigned int)... | 1.0 | -| test.c:470:21:470:26 | ... * ... | 2605.0 | -| test.c:470:25:470:26 | ip | 2605.0 | -| test.c:471:15:471:16 | 14 | 1.0 | -| test.c:471:15:471:16 | (unsigned int)... | 1.0 | -| test.c:471:15:471:21 | ... * ... | 2605.0 | -| test.c:471:20:471:21 | ip | 2605.0 | -| test.c:472:9:472:10 | 14 | 1.0 | -| test.c:472:9:472:10 | (unsigned int)... | 1.0 | -| test.c:472:9:472:15 | ... * ... | 1302.0 | -| test.c:472:9:472:31 | ... > ... | 1.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 1695204.0 | -| test.c:472:14:472:15 | ip | 1302.0 | -| test.c:472:19:472:26 | (...) | 1302.0 | -| test.c:472:19:472:31 | ... * ... | 1302.0 | -| test.c:472:20:472:21 | ip | 1302.0 | -| test.c:472:20:472:25 | ... + ... | 1302.0 | -| test.c:472:25:472:25 | 1 | 1.0 | -| test.c:472:25:472:25 | (unsigned int)... | 1.0 | -| test.c:472:30:472:31 | 17 | 1.0 | -| test.c:472:30:472:31 | (unsigned int)... | 1.0 | -| test.c:473:11:473:12 | 14 | 1.0 | -| test.c:473:11:473:12 | (unsigned int)... | 1.0 | -| test.c:473:11:473:17 | ... * ... | 1302.0 | -| test.c:473:16:473:17 | ip | 1302.0 | -| test.c:474:11:474:18 | (...) | 1302.0 | -| test.c:474:11:474:23 | ... * ... | 1302.0 | -| test.c:474:12:474:13 | ip | 1302.0 | -| test.c:474:12:474:17 | ... + ... | 1302.0 | -| test.c:474:17:474:17 | 1 | 1.0 | -| test.c:474:17:474:17 | (unsigned int)... | 1.0 | -| test.c:474:22:474:23 | 14 | 1.0 | -| test.c:474:22:474:23 | (unsigned int)... | 1.0 | -| test.c:475:9:475:9 | 2 | 1.0 | -| test.c:475:9:475:9 | (unsigned int)... | 1.0 | -| test.c:475:9:475:26 | ... * ... | 10419.0 | -| test.c:475:9:495:44 | ... + ... | 1.9449636104972528E43 | -| test.c:475:13:475:26 | (...) | 10419.0 | -| test.c:475:14:475:15 | ip | 10419.0 | -| test.c:475:14:475:20 | ... * ... | 10419.0 | -| test.c:475:14:475:25 | ... + ... | 10419.0 | -| test.c:475:19:475:20 | 14 | 1.0 | -| test.c:475:19:475:20 | (unsigned int)... | 1.0 | -| test.c:475:24:475:25 | 32 | 1.0 | -| test.c:475:24:475:25 | (unsigned int)... | 1.0 | -| test.c:476:9:495:44 | (...) | 1.8667469147684545E39 | -| test.c:476:10:476:10 | 4 | 1.0 | -| test.c:476:10:476:10 | (unsigned int)... | 1.0 | -| test.c:476:10:476:27 | ... * ... | 10419.0 | -| test.c:476:10:477:28 | ... + ... | 1.08555561E8 | -| test.c:476:10:478:28 | ... + ... | 1.131040390059E12 | -| test.c:476:10:484:24 | ... + ... | 1.0235492350954187E25 | -| test.c:476:10:485:39 | ... > ... | 1.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 1.8667469147684545E39 | -| test.c:476:14:476:27 | (...) | 10419.0 | -| test.c:476:15:476:16 | ip | 10419.0 | -| test.c:476:15:476:21 | ... * ... | 10419.0 | -| test.c:476:15:476:26 | ... + ... | 10419.0 | -| test.c:476:20:476:21 | 14 | 1.0 | -| test.c:476:20:476:21 | (unsigned int)... | 1.0 | -| test.c:476:25:476:26 | 32 | 1.0 | -| test.c:476:25:476:26 | (unsigned int)... | 1.0 | -| test.c:477:11:477:28 | (...) | 10419.0 | -| test.c:477:12:477:12 | 2 | 1.0 | -| test.c:477:12:477:12 | (unsigned int)... | 1.0 | -| test.c:477:12:477:17 | ... * ... | 10419.0 | -| test.c:477:12:477:22 | ... * ... | 10419.0 | -| test.c:477:12:477:27 | ... + ... | 10419.0 | -| test.c:477:16:477:17 | ip | 10419.0 | -| test.c:477:21:477:22 | 14 | 1.0 | -| test.c:477:21:477:22 | (unsigned int)... | 1.0 | -| test.c:477:26:477:27 | 32 | 1.0 | -| test.c:477:26:477:27 | (unsigned int)... | 1.0 | -| test.c:478:11:478:11 | 2 | 1.0 | -| test.c:478:11:478:11 | (unsigned int)... | 1.0 | -| test.c:478:11:478:28 | ... * ... | 10419.0 | -| test.c:478:15:478:28 | (...) | 10419.0 | -| test.c:478:16:478:17 | ip | 10419.0 | -| test.c:478:16:478:22 | ... * ... | 10419.0 | -| test.c:478:16:478:27 | ... + ... | 10419.0 | -| test.c:478:21:478:22 | 14 | 1.0 | -| test.c:478:21:478:22 | (unsigned int)... | 1.0 | -| test.c:478:26:478:27 | 64 | 1.0 | -| test.c:478:26:478:27 | (unsigned int)... | 1.0 | -| test.c:479:11:484:24 | (...) | 9.049625849719E12 | -| test.c:479:12:479:23 | (...) | 10419.0 | -| test.c:479:12:479:28 | ... * ... | 10419.0 | -| test.c:479:12:480:61 | ... > ... | 1.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 9.049625849719E12 | -| test.c:479:13:479:13 | 2 | 1.0 | -| test.c:479:13:479:13 | (unsigned int)... | 1.0 | -| test.c:479:13:479:18 | ... * ... | 10419.0 | -| test.c:479:13:479:22 | ... + ... | 10419.0 | -| test.c:479:17:479:18 | ip | 10419.0 | -| test.c:479:22:479:22 | 1 | 1.0 | -| test.c:479:22:479:22 | (unsigned int)... | 1.0 | -| test.c:479:27:479:28 | 14 | 1.0 | -| test.c:479:27:479:28 | (unsigned int)... | 1.0 | -| test.c:480:11:480:61 | (...) | 1.08555561E8 | -| test.c:480:12:480:13 | 14 | 1.0 | -| test.c:480:12:480:13 | (unsigned int)... | 1.0 | -| test.c:480:12:480:24 | ... * ... | 10419.0 | -| test.c:480:12:480:34 | ... > ... | 1.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 1.08555561E8 | -| test.c:480:17:480:24 | (...) | 10419.0 | -| test.c:480:18:480:18 | 2 | 1.0 | -| test.c:480:18:480:18 | (unsigned int)... | 1.0 | -| test.c:480:18:480:23 | ... * ... | 10419.0 | -| test.c:480:22:480:23 | ip | 10419.0 | -| test.c:480:28:480:29 | 17 | 1.0 | -| test.c:480:28:480:29 | (unsigned int)... | 1.0 | -| test.c:480:28:480:34 | ... * ... | 10419.0 | -| test.c:480:33:480:34 | ip | 10419.0 | -| test.c:480:38:480:39 | 17 | 1.0 | -| test.c:480:38:480:39 | (unsigned int)... | 1.0 | -| test.c:480:38:480:50 | ... * ... | 10419.0 | -| test.c:480:43:480:50 | (...) | 10419.0 | -| test.c:480:44:480:44 | 2 | 1.0 | -| test.c:480:44:480:44 | (unsigned int)... | 1.0 | -| test.c:480:44:480:49 | ... * ... | 10419.0 | -| test.c:480:48:480:49 | ip | 10419.0 | -| test.c:480:54:480:55 | 17 | 1.0 | -| test.c:480:54:480:55 | (unsigned int)... | 1.0 | -| test.c:480:54:480:60 | ... * ... | 10419.0 | -| test.c:480:59:480:60 | ip | 10419.0 | -| test.c:481:15:481:26 | (...) | 20839.0 | -| test.c:481:15:481:31 | ... * ... | 20839.0 | -| test.c:481:16:481:16 | 2 | 1.0 | -| test.c:481:16:481:16 | (unsigned int)... | 1.0 | -| test.c:481:16:481:21 | ... * ... | 20839.0 | -| test.c:481:16:481:25 | ... + ... | 20839.0 | -| test.c:481:20:481:21 | ip | 20839.0 | -| test.c:481:25:481:25 | 1 | 1.0 | -| test.c:481:25:481:25 | (unsigned int)... | 1.0 | -| test.c:481:30:481:31 | 14 | 1.0 | -| test.c:481:30:481:31 | (unsigned int)... | 1.0 | -| test.c:482:15:482:16 | 14 | 1.0 | -| test.c:482:15:482:16 | (unsigned int)... | 1.0 | -| test.c:482:15:482:27 | ... * ... | 20839.0 | -| test.c:482:15:482:37 | ... > ... | 1.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.34263921E8 | -| test.c:482:20:482:27 | (...) | 20839.0 | -| test.c:482:21:482:21 | 2 | 1.0 | -| test.c:482:21:482:21 | (unsigned int)... | 1.0 | -| test.c:482:21:482:26 | ... * ... | 20839.0 | -| test.c:482:25:482:26 | ip | 20839.0 | +| test.c:464:11:464:61 | (...) | 225.0 | +| test.c:464:12:464:13 | 14 | 1.0 | +| test.c:464:12:464:13 | (unsigned int)... | 1.0 | +| test.c:464:12:464:24 | ... * ... | 15.0 | +| test.c:464:12:464:34 | ... > ... | 1.0 | +| test.c:464:12:464:60 | ... ? ... : ... | 225.0 | +| test.c:464:17:464:24 | (...) | 15.0 | +| test.c:464:18:464:18 | 2 | 1.0 | +| test.c:464:18:464:18 | (unsigned int)... | 1.0 | +| test.c:464:18:464:23 | ... * ... | 15.0 | +| test.c:464:22:464:23 | ip | 15.0 | +| test.c:464:28:464:29 | 17 | 1.0 | +| test.c:464:28:464:29 | (unsigned int)... | 1.0 | +| test.c:464:28:464:34 | ... * ... | 15.0 | +| test.c:464:33:464:34 | ip | 15.0 | +| test.c:464:38:464:39 | 17 | 1.0 | +| test.c:464:38:464:39 | (unsigned int)... | 1.0 | +| test.c:464:38:464:50 | ... * ... | 15.0 | +| test.c:464:43:464:50 | (...) | 15.0 | +| test.c:464:44:464:44 | 2 | 1.0 | +| test.c:464:44:464:44 | (unsigned int)... | 1.0 | +| test.c:464:44:464:49 | ... * ... | 15.0 | +| test.c:464:48:464:49 | ip | 15.0 | +| test.c:464:54:464:55 | 17 | 1.0 | +| test.c:464:54:464:55 | (unsigned int)... | 1.0 | +| test.c:464:54:464:60 | ... * ... | 15.0 | +| test.c:464:59:464:60 | ip | 15.0 | +| test.c:465:15:465:26 | (...) | 31.0 | +| test.c:465:15:465:31 | ... * ... | 31.0 | +| test.c:465:16:465:16 | 2 | 1.0 | +| test.c:465:16:465:16 | (unsigned int)... | 1.0 | +| test.c:465:16:465:21 | ... * ... | 31.0 | +| test.c:465:16:465:25 | ... + ... | 31.0 | +| test.c:465:20:465:21 | ip | 31.0 | +| test.c:465:25:465:25 | 1 | 1.0 | +| test.c:465:25:465:25 | (unsigned int)... | 1.0 | +| test.c:465:30:465:31 | 14 | 1.0 | +| test.c:465:30:465:31 | (unsigned int)... | 1.0 | +| test.c:466:15:466:16 | 14 | 1.0 | +| test.c:466:15:466:16 | (unsigned int)... | 1.0 | +| test.c:466:15:466:27 | ... * ... | 31.0 | +| test.c:466:15:466:37 | ... > ... | 1.0 | +| test.c:466:15:468:23 | ... ? ... : ... | 961.0 | +| test.c:466:20:466:27 | (...) | 31.0 | +| test.c:466:21:466:21 | 2 | 1.0 | +| test.c:466:21:466:21 | (unsigned int)... | 1.0 | +| test.c:466:21:466:26 | ... * ... | 31.0 | +| test.c:466:25:466:26 | ip | 31.0 | +| test.c:466:31:466:32 | 17 | 1.0 | +| test.c:466:31:466:32 | (unsigned int)... | 1.0 | +| test.c:466:31:466:37 | ... * ... | 31.0 | +| test.c:466:36:466:37 | ip | 31.0 | +| test.c:467:17:467:18 | 14 | 1.0 | +| test.c:467:17:467:18 | (unsigned int)... | 1.0 | +| test.c:467:17:467:29 | ... * ... | 31.0 | +| test.c:467:22:467:29 | (...) | 31.0 | +| test.c:467:23:467:23 | 2 | 1.0 | +| test.c:467:23:467:23 | (unsigned int)... | 1.0 | +| test.c:467:23:467:28 | ... * ... | 31.0 | +| test.c:467:27:467:28 | ip | 31.0 | +| test.c:468:17:468:18 | 14 | 1.0 | +| test.c:468:17:468:18 | (unsigned int)... | 1.0 | +| test.c:468:17:468:23 | ... * ... | 31.0 | +| test.c:468:22:468:23 | ip | 31.0 | +| test.c:469:11:469:11 | 2 | 1.0 | +| test.c:469:11:469:11 | (unsigned int)... | 1.0 | +| test.c:469:11:469:16 | ... * ... | 15.0 | +| test.c:469:11:469:21 | ... * ... | 15.0 | +| test.c:469:11:469:41 | ... + ... | 225.0 | +| test.c:469:15:469:16 | ip | 15.0 | +| test.c:469:20:469:21 | 14 | 1.0 | +| test.c:469:20:469:21 | (unsigned int)... | 1.0 | +| test.c:469:25:469:36 | (...) | 15.0 | +| test.c:469:25:469:41 | ... * ... | 15.0 | +| test.c:469:26:469:26 | 2 | 1.0 | +| test.c:469:26:469:26 | (unsigned int)... | 1.0 | +| test.c:469:26:469:31 | ... * ... | 15.0 | +| test.c:469:26:469:35 | ... + ... | 15.0 | +| test.c:469:30:469:31 | ip | 15.0 | +| test.c:469:35:469:35 | 1 | 1.0 | +| test.c:469:35:469:35 | (unsigned int)... | 1.0 | +| test.c:469:40:469:41 | 17 | 1.0 | +| test.c:469:40:469:41 | (unsigned int)... | 1.0 | +| test.c:470:5:489:24 | (...) | 6.6142118960740864E25 | +| test.c:470:6:470:6 | 4 | 1.0 | +| test.c:470:6:470:6 | (unsigned int)... | 1.0 | +| test.c:470:6:470:23 | ... * ... | 108.0 | +| test.c:470:6:471:24 | ... + ... | 11664.0 | +| test.c:470:6:472:24 | ... + ... | 1259712.0 | +| test.c:470:6:477:20 | ... + ... | 1.2872131505856E13 | +| test.c:470:6:478:55 | ... > ... | 1.0 | +| test.c:470:6:489:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:470:10:470:23 | (...) | 108.0 | +| test.c:470:11:470:12 | ip | 108.0 | +| test.c:470:11:470:17 | ... * ... | 108.0 | +| test.c:470:11:470:22 | ... + ... | 108.0 | +| test.c:470:16:470:17 | 14 | 1.0 | +| test.c:470:16:470:17 | (unsigned int)... | 1.0 | +| test.c:470:21:470:22 | 32 | 1.0 | +| test.c:470:21:470:22 | (unsigned int)... | 1.0 | +| test.c:471:7:471:24 | (...) | 108.0 | +| test.c:471:8:471:8 | 2 | 1.0 | +| test.c:471:8:471:8 | (unsigned int)... | 1.0 | +| test.c:471:8:471:13 | ... * ... | 108.0 | +| test.c:471:8:471:18 | ... * ... | 108.0 | +| test.c:471:8:471:23 | ... + ... | 108.0 | +| test.c:471:12:471:13 | ip | 108.0 | +| test.c:471:17:471:18 | 14 | 1.0 | +| test.c:471:17:471:18 | (unsigned int)... | 1.0 | +| test.c:471:22:471:23 | 32 | 1.0 | +| test.c:471:22:471:23 | (unsigned int)... | 1.0 | +| test.c:472:7:472:7 | 2 | 1.0 | +| test.c:472:7:472:7 | (unsigned int)... | 1.0 | +| test.c:472:7:472:24 | ... * ... | 108.0 | +| test.c:472:11:472:24 | (...) | 108.0 | +| test.c:472:12:472:13 | ip | 108.0 | +| test.c:472:12:472:18 | ... * ... | 108.0 | +| test.c:472:12:472:23 | ... + ... | 108.0 | +| test.c:472:17:472:18 | 14 | 1.0 | +| test.c:472:17:472:18 | (unsigned int)... | 1.0 | +| test.c:472:22:472:23 | 64 | 1.0 | +| test.c:472:22:472:23 | (unsigned int)... | 1.0 | +| test.c:473:7:477:20 | (...) | 1.0218313E7 | +| test.c:473:8:473:19 | (...) | 108.0 | +| test.c:473:8:473:24 | ... * ... | 108.0 | +| test.c:473:8:473:78 | ... > ... | 1.0 | +| test.c:473:8:477:19 | ... ? ... : ... | 1.0218313E7 | +| test.c:473:9:473:9 | 2 | 1.0 | +| test.c:473:9:473:9 | (unsigned int)... | 1.0 | +| test.c:473:9:473:14 | ... * ... | 108.0 | +| test.c:473:9:473:18 | ... + ... | 108.0 | +| test.c:473:13:473:14 | ip | 108.0 | +| test.c:473:18:473:18 | 1 | 1.0 | +| test.c:473:18:473:18 | (unsigned int)... | 1.0 | +| test.c:473:23:473:24 | 14 | 1.0 | +| test.c:473:23:473:24 | (unsigned int)... | 1.0 | +| test.c:473:28:473:78 | (...) | 11664.0 | +| test.c:473:29:473:30 | 17 | 1.0 | +| test.c:473:29:473:30 | (unsigned int)... | 1.0 | +| test.c:473:29:473:41 | ... * ... | 108.0 | +| test.c:473:29:473:51 | ... > ... | 1.0 | +| test.c:473:29:473:77 | ... ? ... : ... | 11664.0 | +| test.c:473:34:473:41 | (...) | 108.0 | +| test.c:473:35:473:35 | 2 | 1.0 | +| test.c:473:35:473:35 | (unsigned int)... | 1.0 | +| test.c:473:35:473:40 | ... * ... | 108.0 | +| test.c:473:39:473:40 | ip | 108.0 | +| test.c:473:45:473:46 | 17 | 1.0 | +| test.c:473:45:473:46 | (unsigned int)... | 1.0 | +| test.c:473:45:473:51 | ... * ... | 108.0 | +| test.c:473:50:473:51 | ip | 108.0 | +| test.c:473:55:473:56 | 17 | 1.0 | +| test.c:473:55:473:56 | (unsigned int)... | 1.0 | +| test.c:473:55:473:67 | ... * ... | 108.0 | +| test.c:473:60:473:67 | (...) | 108.0 | +| test.c:473:61:473:61 | 2 | 1.0 | +| test.c:473:61:473:61 | (unsigned int)... | 1.0 | +| test.c:473:61:473:66 | ... * ... | 108.0 | +| test.c:473:65:473:66 | ip | 108.0 | +| test.c:473:71:473:72 | 17 | 1.0 | +| test.c:473:71:473:72 | (unsigned int)... | 1.0 | +| test.c:473:71:473:77 | ... * ... | 108.0 | +| test.c:473:76:473:77 | ip | 108.0 | +| test.c:474:11:474:22 | (...) | 217.0 | +| test.c:474:11:474:27 | ... * ... | 217.0 | +| test.c:474:12:474:12 | 2 | 1.0 | +| test.c:474:12:474:12 | (unsigned int)... | 1.0 | +| test.c:474:12:474:17 | ... * ... | 217.0 | +| test.c:474:12:474:21 | ... + ... | 217.0 | +| test.c:474:16:474:17 | ip | 217.0 | +| test.c:474:21:474:21 | 1 | 1.0 | +| test.c:474:21:474:21 | (unsigned int)... | 1.0 | +| test.c:474:26:474:27 | 14 | 1.0 | +| test.c:474:26:474:27 | (unsigned int)... | 1.0 | +| test.c:475:11:475:12 | 14 | 1.0 | +| test.c:475:11:475:12 | (unsigned int)... | 1.0 | +| test.c:475:11:475:23 | ... * ... | 217.0 | +| test.c:475:11:475:33 | ... > ... | 1.0 | +| test.c:475:11:477:19 | ... ? ... : ... | 47089.0 | +| test.c:475:16:475:23 | (...) | 217.0 | +| test.c:475:17:475:17 | 2 | 1.0 | +| test.c:475:17:475:17 | (unsigned int)... | 1.0 | +| test.c:475:17:475:22 | ... * ... | 217.0 | +| test.c:475:21:475:22 | ip | 217.0 | +| test.c:475:27:475:28 | 17 | 1.0 | +| test.c:475:27:475:28 | (unsigned int)... | 1.0 | +| test.c:475:27:475:33 | ... * ... | 217.0 | +| test.c:475:32:475:33 | ip | 217.0 | +| test.c:476:13:476:14 | 14 | 1.0 | +| test.c:476:13:476:14 | (unsigned int)... | 1.0 | +| test.c:476:13:476:25 | ... * ... | 217.0 | +| test.c:476:18:476:25 | (...) | 217.0 | +| test.c:476:19:476:19 | 2 | 1.0 | +| test.c:476:19:476:19 | (unsigned int)... | 1.0 | +| test.c:476:19:476:24 | ... * ... | 217.0 | +| test.c:476:23:476:24 | ip | 217.0 | +| test.c:477:13:477:14 | 14 | 1.0 | +| test.c:477:13:477:14 | (unsigned int)... | 1.0 | +| test.c:477:13:477:19 | ... * ... | 217.0 | +| test.c:477:18:477:19 | ip | 217.0 | +| test.c:478:5:478:55 | (...) | 423801.0 | +| test.c:478:6:478:7 | 14 | 1.0 | +| test.c:478:6:478:7 | (unsigned int)... | 1.0 | +| test.c:478:6:478:12 | ... * ... | 651.0 | +| test.c:478:6:478:28 | ... > ... | 1.0 | +| test.c:478:6:478:54 | ... ? ... : ... | 423801.0 | +| test.c:478:11:478:12 | ip | 651.0 | +| test.c:478:16:478:23 | (...) | 651.0 | +| test.c:478:16:478:28 | ... * ... | 651.0 | +| test.c:478:17:478:18 | ip | 651.0 | +| test.c:478:17:478:22 | ... + ... | 651.0 | +| test.c:478:22:478:22 | 1 | 1.0 | +| test.c:478:22:478:22 | (unsigned int)... | 1.0 | +| test.c:478:27:478:28 | 17 | 1.0 | +| test.c:478:27:478:28 | (unsigned int)... | 1.0 | +| test.c:478:32:478:33 | 17 | 1.0 | +| test.c:478:32:478:33 | (unsigned int)... | 1.0 | +| test.c:478:32:478:38 | ... * ... | 651.0 | +| test.c:478:37:478:38 | ip | 651.0 | +| test.c:478:42:478:49 | (...) | 651.0 | +| test.c:478:42:478:54 | ... * ... | 651.0 | +| test.c:478:43:478:44 | ip | 651.0 | +| test.c:478:43:478:48 | ... + ... | 651.0 | +| test.c:478:48:478:48 | 1 | 1.0 | +| test.c:478:48:478:48 | (unsigned int)... | 1.0 | +| test.c:478:53:478:54 | 17 | 1.0 | +| test.c:478:53:478:54 | (unsigned int)... | 1.0 | +| test.c:479:9:479:9 | 4 | 1.0 | +| test.c:479:9:479:9 | (unsigned int)... | 1.0 | +| test.c:479:9:479:26 | ... * ... | 1302.0 | +| test.c:479:9:480:26 | ... + ... | 1695204.0 | +| test.c:479:9:481:26 | ... + ... | 2.207155608E9 | +| test.c:479:9:486:22 | ... + ... | 3.9017203216097214E19 | +| test.c:479:13:479:26 | (...) | 1302.0 | +| test.c:479:14:479:15 | ip | 1302.0 | +| test.c:479:14:479:20 | ... * ... | 1302.0 | +| test.c:479:14:479:25 | ... + ... | 1302.0 | +| test.c:479:19:479:20 | 14 | 1.0 | +| test.c:479:19:479:20 | (unsigned int)... | 1.0 | +| test.c:479:24:479:25 | 32 | 1.0 | +| test.c:479:24:479:25 | (unsigned int)... | 1.0 | +| test.c:480:9:480:26 | (...) | 1302.0 | +| test.c:480:10:480:10 | 2 | 1.0 | +| test.c:480:10:480:10 | (unsigned int)... | 1.0 | +| test.c:480:10:480:15 | ... * ... | 1302.0 | +| test.c:480:10:480:20 | ... * ... | 1302.0 | +| test.c:480:10:480:25 | ... + ... | 1302.0 | +| test.c:480:14:480:15 | ip | 1302.0 | +| test.c:480:19:480:20 | 14 | 1.0 | +| test.c:480:19:480:20 | (unsigned int)... | 1.0 | +| test.c:480:24:480:25 | 32 | 1.0 | +| test.c:480:24:480:25 | (unsigned int)... | 1.0 | +| test.c:481:9:481:9 | 2 | 1.0 | +| test.c:481:9:481:9 | (unsigned int)... | 1.0 | +| test.c:481:9:481:26 | ... * ... | 1302.0 | +| test.c:481:13:481:26 | (...) | 1302.0 | +| test.c:481:14:481:15 | ip | 1302.0 | +| test.c:481:14:481:20 | ... * ... | 1302.0 | +| test.c:481:14:481:25 | ... + ... | 1302.0 | +| test.c:481:19:481:20 | 14 | 1.0 | +| test.c:481:19:481:20 | (unsigned int)... | 1.0 | +| test.c:481:24:481:25 | 64 | 1.0 | +| test.c:481:24:481:25 | (unsigned int)... | 1.0 | +| test.c:482:9:486:22 | (...) | 1.7677595125E10 | +| test.c:482:10:482:21 | (...) | 1302.0 | +| test.c:482:10:482:26 | ... * ... | 1302.0 | +| test.c:482:10:482:80 | ... > ... | 1.0 | +| test.c:482:10:486:21 | ... ? ... : ... | 1.7677595125E10 | +| test.c:482:11:482:11 | 2 | 1.0 | +| test.c:482:11:482:11 | (unsigned int)... | 1.0 | +| test.c:482:11:482:16 | ... * ... | 1302.0 | +| test.c:482:11:482:20 | ... + ... | 1302.0 | +| test.c:482:15:482:16 | ip | 1302.0 | +| test.c:482:20:482:20 | 1 | 1.0 | +| test.c:482:20:482:20 | (unsigned int)... | 1.0 | +| test.c:482:25:482:26 | 14 | 1.0 | +| test.c:482:25:482:26 | (unsigned int)... | 1.0 | +| test.c:482:30:482:80 | (...) | 1695204.0 | | test.c:482:31:482:32 | 17 | 1.0 | | test.c:482:31:482:32 | (unsigned int)... | 1.0 | -| test.c:482:31:482:37 | ... * ... | 20839.0 | -| test.c:482:36:482:37 | ip | 20839.0 | -| test.c:483:17:483:18 | 14 | 1.0 | -| test.c:483:17:483:18 | (unsigned int)... | 1.0 | -| test.c:483:17:483:29 | ... * ... | 20839.0 | -| test.c:483:22:483:29 | (...) | 20839.0 | -| test.c:483:23:483:23 | 2 | 1.0 | +| test.c:482:31:482:43 | ... * ... | 1302.0 | +| test.c:482:31:482:53 | ... > ... | 1.0 | +| test.c:482:31:482:79 | ... ? ... : ... | 1695204.0 | +| test.c:482:36:482:43 | (...) | 1302.0 | +| test.c:482:37:482:37 | 2 | 1.0 | +| test.c:482:37:482:37 | (unsigned int)... | 1.0 | +| test.c:482:37:482:42 | ... * ... | 1302.0 | +| test.c:482:41:482:42 | ip | 1302.0 | +| test.c:482:47:482:48 | 17 | 1.0 | +| test.c:482:47:482:48 | (unsigned int)... | 1.0 | +| test.c:482:47:482:53 | ... * ... | 1302.0 | +| test.c:482:52:482:53 | ip | 1302.0 | +| test.c:482:57:482:58 | 17 | 1.0 | +| test.c:482:57:482:58 | (unsigned int)... | 1.0 | +| test.c:482:57:482:69 | ... * ... | 1302.0 | +| test.c:482:62:482:69 | (...) | 1302.0 | +| test.c:482:63:482:63 | 2 | 1.0 | +| test.c:482:63:482:63 | (unsigned int)... | 1.0 | +| test.c:482:63:482:68 | ... * ... | 1302.0 | +| test.c:482:67:482:68 | ip | 1302.0 | +| test.c:482:73:482:74 | 17 | 1.0 | +| test.c:482:73:482:74 | (unsigned int)... | 1.0 | +| test.c:482:73:482:79 | ... * ... | 1302.0 | +| test.c:482:78:482:79 | ip | 1302.0 | +| test.c:483:13:483:24 | (...) | 2605.0 | +| test.c:483:13:483:29 | ... * ... | 2605.0 | +| test.c:483:14:483:14 | 2 | 1.0 | +| test.c:483:14:483:14 | (unsigned int)... | 1.0 | +| test.c:483:14:483:19 | ... * ... | 2605.0 | +| test.c:483:14:483:23 | ... + ... | 2605.0 | +| test.c:483:18:483:19 | ip | 2605.0 | +| test.c:483:23:483:23 | 1 | 1.0 | | test.c:483:23:483:23 | (unsigned int)... | 1.0 | -| test.c:483:23:483:28 | ... * ... | 20839.0 | -| test.c:483:27:483:28 | ip | 20839.0 | -| test.c:484:17:484:18 | 14 | 1.0 | -| test.c:484:17:484:18 | (unsigned int)... | 1.0 | -| test.c:484:17:484:23 | ... * ... | 20839.0 | -| test.c:484:22:484:23 | ip | 20839.0 | -| test.c:485:9:485:9 | 2 | 1.0 | -| test.c:485:9:485:9 | (unsigned int)... | 1.0 | -| test.c:485:9:485:14 | ... * ... | 62517.0 | -| test.c:485:9:485:19 | ... * ... | 62517.0 | -| test.c:485:9:485:39 | ... + ... | 3.908375289E9 | -| test.c:485:13:485:14 | ip | 62517.0 | -| test.c:485:18:485:19 | 14 | 1.0 | -| test.c:485:18:485:19 | (unsigned int)... | 1.0 | -| test.c:485:23:485:34 | (...) | 62517.0 | -| test.c:485:23:485:39 | ... * ... | 62517.0 | -| test.c:485:24:485:24 | 2 | 1.0 | -| test.c:485:24:485:24 | (unsigned int)... | 1.0 | -| test.c:485:24:485:29 | ... * ... | 62517.0 | -| test.c:485:24:485:33 | ... + ... | 62517.0 | -| test.c:485:28:485:29 | ip | 62517.0 | -| test.c:485:33:485:33 | 1 | 1.0 | -| test.c:485:33:485:33 | (unsigned int)... | 1.0 | -| test.c:485:38:485:39 | 17 | 1.0 | -| test.c:485:38:485:39 | (unsigned int)... | 1.0 | -| test.c:486:13:486:13 | 4 | 1.0 | -| test.c:486:13:486:13 | (unsigned int)... | 1.0 | -| test.c:486:13:486:30 | ... * ... | 62517.0 | -| test.c:486:13:487:30 | ... + ... | 3.908375289E9 | -| test.c:486:13:488:30 | ... + ... | 2.44339897942413E14 | -| test.c:486:13:494:26 | ... + ... | 4.7762734556795386E29 | -| test.c:486:17:486:30 | (...) | 62517.0 | -| test.c:486:18:486:19 | ip | 62517.0 | -| test.c:486:18:486:24 | ... * ... | 62517.0 | -| test.c:486:18:486:29 | ... + ... | 62517.0 | -| test.c:486:23:486:24 | 14 | 1.0 | -| test.c:486:23:486:24 | (unsigned int)... | 1.0 | -| test.c:486:28:486:29 | 32 | 1.0 | -| test.c:486:28:486:29 | (unsigned int)... | 1.0 | -| test.c:487:13:487:30 | (...) | 62517.0 | -| test.c:487:14:487:14 | 2 | 1.0 | -| test.c:487:14:487:14 | (unsigned int)... | 1.0 | -| test.c:487:14:487:19 | ... * ... | 62517.0 | -| test.c:487:14:487:24 | ... * ... | 62517.0 | -| test.c:487:14:487:29 | ... + ... | 62517.0 | -| test.c:487:18:487:19 | ip | 62517.0 | -| test.c:487:23:487:24 | 14 | 1.0 | -| test.c:487:23:487:24 | (unsigned int)... | 1.0 | -| test.c:487:28:487:29 | 32 | 1.0 | -| test.c:487:28:487:29 | (unsigned int)... | 1.0 | -| test.c:488:13:488:13 | 2 | 1.0 | -| test.c:488:13:488:13 | (unsigned int)... | 1.0 | -| test.c:488:13:488:30 | ... * ... | 62517.0 | -| test.c:488:17:488:30 | (...) | 62517.0 | -| test.c:488:18:488:19 | ip | 62517.0 | -| test.c:488:18:488:24 | ... * ... | 62517.0 | -| test.c:488:18:488:29 | ... + ... | 62517.0 | -| test.c:488:23:488:24 | 14 | 1.0 | -| test.c:488:23:488:24 | (unsigned int)... | 1.0 | -| test.c:488:28:488:29 | 64 | 1.0 | -| test.c:488:28:488:29 | (unsigned int)... | 1.0 | -| test.c:489:13:494:26 | (...) | 1.954766084417875E15 | -| test.c:489:14:489:25 | (...) | 62517.0 | -| test.c:489:14:489:30 | ... * ... | 62517.0 | -| test.c:489:14:490:63 | ... > ... | 1.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 1.954766084417875E15 | -| test.c:489:15:489:15 | 2 | 1.0 | -| test.c:489:15:489:15 | (unsigned int)... | 1.0 | -| test.c:489:15:489:20 | ... * ... | 62517.0 | -| test.c:489:15:489:24 | ... + ... | 62517.0 | -| test.c:489:19:489:20 | ip | 62517.0 | -| test.c:489:24:489:24 | 1 | 1.0 | -| test.c:489:24:489:24 | (unsigned int)... | 1.0 | -| test.c:489:29:489:30 | 14 | 1.0 | -| test.c:489:29:489:30 | (unsigned int)... | 1.0 | -| test.c:490:13:490:63 | (...) | 3.908375289E9 | -| test.c:490:14:490:15 | 14 | 1.0 | -| test.c:490:14:490:15 | (unsigned int)... | 1.0 | -| test.c:490:14:490:26 | ... * ... | 62517.0 | -| test.c:490:14:490:36 | ... > ... | 1.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 3.908375289E9 | -| test.c:490:19:490:26 | (...) | 62517.0 | -| test.c:490:20:490:20 | 2 | 1.0 | -| test.c:490:20:490:20 | (unsigned int)... | 1.0 | -| test.c:490:20:490:25 | ... * ... | 62517.0 | -| test.c:490:24:490:25 | ip | 62517.0 | -| test.c:490:30:490:31 | 17 | 1.0 | -| test.c:490:30:490:31 | (unsigned int)... | 1.0 | -| test.c:490:30:490:36 | ... * ... | 62517.0 | -| test.c:490:35:490:36 | ip | 62517.0 | -| test.c:490:40:490:41 | 17 | 1.0 | -| test.c:490:40:490:41 | (unsigned int)... | 1.0 | -| test.c:490:40:490:52 | ... * ... | 62517.0 | -| test.c:490:45:490:52 | (...) | 62517.0 | -| test.c:490:46:490:46 | 2 | 1.0 | -| test.c:490:46:490:46 | (unsigned int)... | 1.0 | -| test.c:490:46:490:51 | ... * ... | 62517.0 | -| test.c:490:50:490:51 | ip | 62517.0 | -| test.c:490:56:490:57 | 17 | 1.0 | -| test.c:490:56:490:57 | (unsigned int)... | 1.0 | -| test.c:490:56:490:62 | ... * ... | 62517.0 | -| test.c:490:61:490:62 | ip | 62517.0 | -| test.c:491:17:491:28 | (...) | 125035.0 | -| test.c:491:17:491:33 | ... * ... | 125035.0 | -| test.c:491:18:491:18 | 2 | 1.0 | -| test.c:491:18:491:18 | (unsigned int)... | 1.0 | -| test.c:491:18:491:23 | ... * ... | 125035.0 | -| test.c:491:18:491:27 | ... + ... | 125035.0 | -| test.c:491:22:491:23 | ip | 125035.0 | -| test.c:491:27:491:27 | 1 | 1.0 | -| test.c:491:27:491:27 | (unsigned int)... | 1.0 | -| test.c:491:32:491:33 | 14 | 1.0 | -| test.c:491:32:491:33 | (unsigned int)... | 1.0 | -| test.c:492:17:492:18 | 14 | 1.0 | -| test.c:492:17:492:18 | (unsigned int)... | 1.0 | -| test.c:492:17:492:29 | ... * ... | 125035.0 | -| test.c:492:17:492:39 | ... > ... | 1.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 1.5633751225E10 | -| test.c:492:22:492:29 | (...) | 125035.0 | -| test.c:492:23:492:23 | 2 | 1.0 | -| test.c:492:23:492:23 | (unsigned int)... | 1.0 | -| test.c:492:23:492:28 | ... * ... | 125035.0 | -| test.c:492:27:492:28 | ip | 125035.0 | -| test.c:492:33:492:34 | 17 | 1.0 | -| test.c:492:33:492:34 | (unsigned int)... | 1.0 | -| test.c:492:33:492:39 | ... * ... | 125035.0 | -| test.c:492:38:492:39 | ip | 125035.0 | -| test.c:493:19:493:20 | 14 | 1.0 | -| test.c:493:19:493:20 | (unsigned int)... | 1.0 | -| test.c:493:19:493:31 | ... * ... | 125035.0 | -| test.c:493:24:493:31 | (...) | 125035.0 | -| test.c:493:25:493:25 | 2 | 1.0 | -| test.c:493:25:493:25 | (unsigned int)... | 1.0 | -| test.c:493:25:493:30 | ... * ... | 125035.0 | -| test.c:493:29:493:30 | ip | 125035.0 | -| test.c:494:19:494:20 | 14 | 1.0 | -| test.c:494:19:494:20 | (unsigned int)... | 1.0 | -| test.c:494:19:494:25 | ... * ... | 125035.0 | -| test.c:494:24:494:25 | ip | 125035.0 | -| test.c:495:13:495:13 | 2 | 1.0 | -| test.c:495:13:495:13 | (unsigned int)... | 1.0 | -| test.c:495:13:495:18 | ... * ... | 62517.0 | -| test.c:495:13:495:23 | ... * ... | 62517.0 | -| test.c:495:13:495:43 | ... + ... | 3.908375289E9 | -| test.c:495:17:495:18 | ip | 62517.0 | -| test.c:495:22:495:23 | 14 | 1.0 | -| test.c:495:22:495:23 | (unsigned int)... | 1.0 | -| test.c:495:27:495:38 | (...) | 62517.0 | -| test.c:495:27:495:43 | ... * ... | 62517.0 | -| test.c:495:28:495:28 | 2 | 1.0 | -| test.c:495:28:495:28 | (unsigned int)... | 1.0 | -| test.c:495:28:495:33 | ... * ... | 62517.0 | -| test.c:495:28:495:37 | ... + ... | 62517.0 | -| test.c:495:32:495:33 | ip | 62517.0 | -| test.c:495:37:495:37 | 1 | 1.0 | -| test.c:495:37:495:37 | (unsigned int)... | 1.0 | -| test.c:495:42:495:43 | 17 | 1.0 | -| test.c:495:42:495:43 | (unsigned int)... | 1.0 | -| test.c:496:9:496:9 | 4 | 1.0 | -| test.c:496:9:496:9 | (unsigned int)... | 1.0 | -| test.c:496:9:496:26 | ... * ... | 10419.0 | -| test.c:496:9:497:30 | ... + ... | 1.08555561E8 | -| test.c:496:9:498:30 | ... + ... | 1.131040390059E12 | -| test.c:496:9:504:26 | ... + ... | 1.0235492350954187E25 | -| test.c:496:9:505:61 | ... > ... | 1.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.778814771623795E41 | -| test.c:496:13:496:26 | (...) | 10419.0 | -| test.c:496:14:496:15 | ip | 10419.0 | -| test.c:496:14:496:20 | ... * ... | 10419.0 | -| test.c:496:14:496:25 | ... + ... | 10419.0 | -| test.c:496:19:496:20 | 14 | 1.0 | -| test.c:496:19:496:20 | (unsigned int)... | 1.0 | -| test.c:496:24:496:25 | 32 | 1.0 | -| test.c:496:24:496:25 | (unsigned int)... | 1.0 | -| test.c:497:13:497:30 | (...) | 10419.0 | -| test.c:497:14:497:14 | 2 | 1.0 | -| test.c:497:14:497:14 | (unsigned int)... | 1.0 | -| test.c:497:14:497:19 | ... * ... | 10419.0 | -| test.c:497:14:497:24 | ... * ... | 10419.0 | -| test.c:497:14:497:29 | ... + ... | 10419.0 | -| test.c:497:18:497:19 | ip | 10419.0 | -| test.c:497:23:497:24 | 14 | 1.0 | -| test.c:497:23:497:24 | (unsigned int)... | 1.0 | -| test.c:497:28:497:29 | 32 | 1.0 | -| test.c:497:28:497:29 | (unsigned int)... | 1.0 | -| test.c:498:13:498:13 | 2 | 1.0 | -| test.c:498:13:498:13 | (unsigned int)... | 1.0 | -| test.c:498:13:498:30 | ... * ... | 10419.0 | -| test.c:498:17:498:30 | (...) | 10419.0 | -| test.c:498:18:498:19 | ip | 10419.0 | -| test.c:498:18:498:24 | ... * ... | 10419.0 | -| test.c:498:18:498:29 | ... + ... | 10419.0 | -| test.c:498:23:498:24 | 14 | 1.0 | -| test.c:498:23:498:24 | (unsigned int)... | 1.0 | -| test.c:498:28:498:29 | 64 | 1.0 | -| test.c:498:28:498:29 | (unsigned int)... | 1.0 | -| test.c:499:13:504:26 | (...) | 9.049625849719E12 | -| test.c:499:14:499:25 | (...) | 10419.0 | -| test.c:499:14:499:30 | ... * ... | 10419.0 | -| test.c:499:14:500:63 | ... > ... | 1.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 9.049625849719E12 | -| test.c:499:15:499:15 | 2 | 1.0 | -| test.c:499:15:499:15 | (unsigned int)... | 1.0 | -| test.c:499:15:499:20 | ... * ... | 10419.0 | -| test.c:499:15:499:24 | ... + ... | 10419.0 | -| test.c:499:19:499:20 | ip | 10419.0 | -| test.c:499:24:499:24 | 1 | 1.0 | -| test.c:499:24:499:24 | (unsigned int)... | 1.0 | -| test.c:499:29:499:30 | 14 | 1.0 | -| test.c:499:29:499:30 | (unsigned int)... | 1.0 | -| test.c:500:13:500:63 | (...) | 1.08555561E8 | -| test.c:500:14:500:15 | 14 | 1.0 | -| test.c:500:14:500:15 | (unsigned int)... | 1.0 | -| test.c:500:14:500:26 | ... * ... | 10419.0 | -| test.c:500:14:500:36 | ... > ... | 1.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 1.08555561E8 | -| test.c:500:19:500:26 | (...) | 10419.0 | -| test.c:500:20:500:20 | 2 | 1.0 | -| test.c:500:20:500:20 | (unsigned int)... | 1.0 | -| test.c:500:20:500:25 | ... * ... | 10419.0 | -| test.c:500:24:500:25 | ip | 10419.0 | -| test.c:500:30:500:31 | 17 | 1.0 | -| test.c:500:30:500:31 | (unsigned int)... | 1.0 | -| test.c:500:30:500:36 | ... * ... | 10419.0 | -| test.c:500:35:500:36 | ip | 10419.0 | -| test.c:500:40:500:41 | 17 | 1.0 | -| test.c:500:40:500:41 | (unsigned int)... | 1.0 | -| test.c:500:40:500:52 | ... * ... | 10419.0 | -| test.c:500:45:500:52 | (...) | 10419.0 | -| test.c:500:46:500:46 | 2 | 1.0 | -| test.c:500:46:500:46 | (unsigned int)... | 1.0 | -| test.c:500:46:500:51 | ... * ... | 10419.0 | -| test.c:500:50:500:51 | ip | 10419.0 | -| test.c:500:56:500:57 | 17 | 1.0 | -| test.c:500:56:500:57 | (unsigned int)... | 1.0 | -| test.c:500:56:500:62 | ... * ... | 10419.0 | -| test.c:500:61:500:62 | ip | 10419.0 | -| test.c:501:17:501:28 | (...) | 20839.0 | -| test.c:501:17:501:33 | ... * ... | 20839.0 | -| test.c:501:18:501:18 | 2 | 1.0 | -| test.c:501:18:501:18 | (unsigned int)... | 1.0 | -| test.c:501:18:501:23 | ... * ... | 20839.0 | -| test.c:501:18:501:27 | ... + ... | 20839.0 | -| test.c:501:22:501:23 | ip | 20839.0 | -| test.c:501:27:501:27 | 1 | 1.0 | -| test.c:501:27:501:27 | (unsigned int)... | 1.0 | -| test.c:501:32:501:33 | 14 | 1.0 | -| test.c:501:32:501:33 | (unsigned int)... | 1.0 | -| test.c:502:17:502:18 | 14 | 1.0 | -| test.c:502:17:502:18 | (unsigned int)... | 1.0 | -| test.c:502:17:502:29 | ... * ... | 20839.0 | -| test.c:502:17:502:39 | ... > ... | 1.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.34263921E8 | -| test.c:502:22:502:29 | (...) | 20839.0 | -| test.c:502:23:502:23 | 2 | 1.0 | -| test.c:502:23:502:23 | (unsigned int)... | 1.0 | -| test.c:502:23:502:28 | ... * ... | 20839.0 | -| test.c:502:27:502:28 | ip | 20839.0 | -| test.c:502:33:502:34 | 17 | 1.0 | -| test.c:502:33:502:34 | (unsigned int)... | 1.0 | -| test.c:502:33:502:39 | ... * ... | 20839.0 | -| test.c:502:38:502:39 | ip | 20839.0 | -| test.c:503:19:503:20 | 14 | 1.0 | -| test.c:503:19:503:20 | (unsigned int)... | 1.0 | -| test.c:503:19:503:31 | ... * ... | 20839.0 | -| test.c:503:24:503:31 | (...) | 20839.0 | -| test.c:503:25:503:25 | 2 | 1.0 | -| test.c:503:25:503:25 | (unsigned int)... | 1.0 | -| test.c:503:25:503:30 | ... * ... | 20839.0 | -| test.c:503:29:503:30 | ip | 20839.0 | -| test.c:504:19:504:20 | 14 | 1.0 | -| test.c:504:19:504:20 | (unsigned int)... | 1.0 | -| test.c:504:19:504:25 | ... * ... | 20839.0 | -| test.c:504:24:504:25 | ip | 20839.0 | -| test.c:505:11:505:61 | (...) | 3.908375289E9 | -| test.c:505:12:505:13 | 14 | 1.0 | -| test.c:505:12:505:13 | (unsigned int)... | 1.0 | -| test.c:505:12:505:18 | ... * ... | 62517.0 | -| test.c:505:12:505:34 | ... > ... | 1.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 3.908375289E9 | -| test.c:505:17:505:18 | ip | 62517.0 | -| test.c:505:22:505:29 | (...) | 62517.0 | -| test.c:505:22:505:34 | ... * ... | 62517.0 | -| test.c:505:23:505:24 | ip | 62517.0 | -| test.c:505:23:505:28 | ... + ... | 62517.0 | -| test.c:505:28:505:28 | 1 | 1.0 | -| test.c:505:28:505:28 | (unsigned int)... | 1.0 | -| test.c:505:33:505:34 | 17 | 1.0 | -| test.c:505:33:505:34 | (unsigned int)... | 1.0 | -| test.c:505:38:505:39 | 17 | 1.0 | -| test.c:505:38:505:39 | (unsigned int)... | 1.0 | -| test.c:505:38:505:44 | ... * ... | 62517.0 | -| test.c:505:43:505:44 | ip | 62517.0 | -| test.c:505:48:505:55 | (...) | 62517.0 | -| test.c:505:48:505:60 | ... * ... | 62517.0 | -| test.c:505:49:505:50 | ip | 62517.0 | -| test.c:505:49:505:54 | ... + ... | 62517.0 | -| test.c:505:54:505:54 | 1 | 1.0 | -| test.c:505:54:505:54 | (unsigned int)... | 1.0 | -| test.c:505:59:505:60 | 17 | 1.0 | -| test.c:505:59:505:60 | (unsigned int)... | 1.0 | -| test.c:506:11:506:11 | 4 | 1.0 | -| test.c:506:11:506:11 | (unsigned int)... | 1.0 | -| test.c:506:11:506:28 | ... * ... | 125034.0 | -| test.c:506:11:507:28 | ... + ... | 1.5633501156E10 | -| test.c:506:11:508:28 | ... + ... | 1.954719183539304E15 | -| test.c:506:11:514:24 | ... + ... | 3.056778340269433E31 | -| test.c:506:15:506:28 | (...) | 125034.0 | -| test.c:506:16:506:17 | ip | 125034.0 | -| test.c:506:16:506:22 | ... * ... | 125034.0 | -| test.c:506:16:506:27 | ... + ... | 125034.0 | -| test.c:506:21:506:22 | 14 | 1.0 | -| test.c:506:21:506:22 | (unsigned int)... | 1.0 | -| test.c:506:26:506:27 | 32 | 1.0 | -| test.c:506:26:506:27 | (unsigned int)... | 1.0 | -| test.c:507:11:507:28 | (...) | 125034.0 | -| test.c:507:12:507:12 | 2 | 1.0 | -| test.c:507:12:507:12 | (unsigned int)... | 1.0 | -| test.c:507:12:507:17 | ... * ... | 125034.0 | -| test.c:507:12:507:22 | ... * ... | 125034.0 | -| test.c:507:12:507:27 | ... + ... | 125034.0 | -| test.c:507:16:507:17 | ip | 125034.0 | -| test.c:507:21:507:22 | 14 | 1.0 | -| test.c:507:21:507:22 | (unsigned int)... | 1.0 | -| test.c:507:26:507:27 | 32 | 1.0 | -| test.c:507:26:507:27 | (unsigned int)... | 1.0 | -| test.c:508:11:508:11 | 2 | 1.0 | -| test.c:508:11:508:11 | (unsigned int)... | 1.0 | -| test.c:508:11:508:28 | ... * ... | 125034.0 | -| test.c:508:15:508:28 | (...) | 125034.0 | -| test.c:508:16:508:17 | ip | 125034.0 | -| test.c:508:16:508:22 | ... * ... | 125034.0 | -| test.c:508:16:508:27 | ... + ... | 125034.0 | -| test.c:508:21:508:22 | 14 | 1.0 | -| test.c:508:21:508:22 | (unsigned int)... | 1.0 | -| test.c:508:26:508:27 | 64 | 1.0 | -| test.c:508:26:508:27 | (unsigned int)... | 1.0 | -| test.c:509:11:514:24 | (...) | 1.5637941071078508E16 | -| test.c:509:12:509:23 | (...) | 125034.0 | -| test.c:509:12:509:28 | ... * ... | 125034.0 | -| test.c:509:12:510:61 | ... > ... | 1.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 1.5637941071078508E16 | -| test.c:509:13:509:13 | 2 | 1.0 | -| test.c:509:13:509:13 | (unsigned int)... | 1.0 | -| test.c:509:13:509:18 | ... * ... | 125034.0 | -| test.c:509:13:509:22 | ... + ... | 125034.0 | -| test.c:509:17:509:18 | ip | 125034.0 | -| test.c:509:22:509:22 | 1 | 1.0 | -| test.c:509:22:509:22 | (unsigned int)... | 1.0 | -| test.c:509:27:509:28 | 14 | 1.0 | -| test.c:509:27:509:28 | (unsigned int)... | 1.0 | -| test.c:510:11:510:61 | (...) | 1.5633501156E10 | -| test.c:510:12:510:13 | 14 | 1.0 | -| test.c:510:12:510:13 | (unsigned int)... | 1.0 | -| test.c:510:12:510:24 | ... * ... | 125034.0 | -| test.c:510:12:510:34 | ... > ... | 1.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 1.5633501156E10 | -| test.c:510:17:510:24 | (...) | 125034.0 | -| test.c:510:18:510:18 | 2 | 1.0 | -| test.c:510:18:510:18 | (unsigned int)... | 1.0 | -| test.c:510:18:510:23 | ... * ... | 125034.0 | -| test.c:510:22:510:23 | ip | 125034.0 | -| test.c:510:28:510:29 | 17 | 1.0 | -| test.c:510:28:510:29 | (unsigned int)... | 1.0 | -| test.c:510:28:510:34 | ... * ... | 125034.0 | -| test.c:510:33:510:34 | ip | 125034.0 | -| test.c:510:38:510:39 | 17 | 1.0 | -| test.c:510:38:510:39 | (unsigned int)... | 1.0 | -| test.c:510:38:510:50 | ... * ... | 125034.0 | -| test.c:510:43:510:50 | (...) | 125034.0 | -| test.c:510:44:510:44 | 2 | 1.0 | -| test.c:510:44:510:44 | (unsigned int)... | 1.0 | -| test.c:510:44:510:49 | ... * ... | 125034.0 | -| test.c:510:48:510:49 | ip | 125034.0 | -| test.c:510:54:510:55 | 17 | 1.0 | -| test.c:510:54:510:55 | (unsigned int)... | 1.0 | -| test.c:510:54:510:60 | ... * ... | 125034.0 | -| test.c:510:59:510:60 | ip | 125034.0 | -| test.c:511:15:511:26 | (...) | 250069.0 | -| test.c:511:15:511:31 | ... * ... | 250069.0 | -| test.c:511:16:511:16 | 2 | 1.0 | -| test.c:511:16:511:16 | (unsigned int)... | 1.0 | -| test.c:511:16:511:21 | ... * ... | 250069.0 | -| test.c:511:16:511:25 | ... + ... | 250069.0 | -| test.c:511:20:511:21 | ip | 250069.0 | -| test.c:511:25:511:25 | 1 | 1.0 | -| test.c:511:25:511:25 | (unsigned int)... | 1.0 | -| test.c:511:30:511:31 | 14 | 1.0 | -| test.c:511:30:511:31 | (unsigned int)... | 1.0 | -| test.c:512:15:512:16 | 14 | 1.0 | -| test.c:512:15:512:16 | (unsigned int)... | 1.0 | -| test.c:512:15:512:27 | ... * ... | 250069.0 | -| test.c:512:15:512:37 | ... > ... | 1.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 6.2534504761E10 | -| test.c:512:20:512:27 | (...) | 250069.0 | -| test.c:512:21:512:21 | 2 | 1.0 | -| test.c:512:21:512:21 | (unsigned int)... | 1.0 | -| test.c:512:21:512:26 | ... * ... | 250069.0 | -| test.c:512:25:512:26 | ip | 250069.0 | -| test.c:512:31:512:32 | 17 | 1.0 | -| test.c:512:31:512:32 | (unsigned int)... | 1.0 | -| test.c:512:31:512:37 | ... * ... | 250069.0 | -| test.c:512:36:512:37 | ip | 250069.0 | -| test.c:513:17:513:18 | 14 | 1.0 | -| test.c:513:17:513:18 | (unsigned int)... | 1.0 | -| test.c:513:17:513:29 | ... * ... | 250069.0 | -| test.c:513:22:513:29 | (...) | 250069.0 | -| test.c:513:23:513:23 | 2 | 1.0 | -| test.c:513:23:513:23 | (unsigned int)... | 1.0 | -| test.c:513:23:513:28 | ... * ... | 250069.0 | -| test.c:513:27:513:28 | ip | 250069.0 | -| test.c:514:17:514:18 | 14 | 1.0 | -| test.c:514:17:514:18 | (unsigned int)... | 1.0 | -| test.c:514:17:514:23 | ... * ... | 250069.0 | -| test.c:514:22:514:23 | ip | 250069.0 | -| test.c:515:11:515:12 | 14 | 1.0 | -| test.c:515:11:515:12 | (unsigned int)... | 1.0 | -| test.c:515:11:515:17 | ... * ... | 125034.0 | -| test.c:515:11:515:33 | ... > ... | 1.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 1.5633501156E10 | -| test.c:515:16:515:17 | ip | 125034.0 | -| test.c:515:21:515:28 | (...) | 125034.0 | -| test.c:515:21:515:33 | ... * ... | 125034.0 | -| test.c:515:22:515:23 | ip | 125034.0 | -| test.c:515:22:515:27 | ... + ... | 125034.0 | -| test.c:515:27:515:27 | 1 | 1.0 | -| test.c:515:27:515:27 | (unsigned int)... | 1.0 | -| test.c:515:32:515:33 | 17 | 1.0 | -| test.c:515:32:515:33 | (unsigned int)... | 1.0 | -| test.c:516:13:516:14 | 14 | 1.0 | -| test.c:516:13:516:14 | (unsigned int)... | 1.0 | -| test.c:516:13:516:19 | ... * ... | 125034.0 | -| test.c:516:18:516:19 | ip | 125034.0 | -| test.c:517:13:517:20 | (...) | 125034.0 | -| test.c:517:13:517:25 | ... * ... | 125034.0 | -| test.c:517:14:517:15 | ip | 125034.0 | -| test.c:517:14:517:19 | ... + ... | 125034.0 | -| test.c:517:19:517:19 | 1 | 1.0 | -| test.c:517:19:517:19 | (unsigned int)... | 1.0 | -| test.c:517:24:517:25 | 14 | 1.0 | -| test.c:517:24:517:25 | (unsigned int)... | 1.0 | -| test.c:518:9:518:10 | 14 | 1.0 | -| test.c:518:9:518:10 | (unsigned int)... | 1.0 | -| test.c:518:9:518:15 | ... * ... | 1437897.0 | -| test.c:518:9:518:59 | ... > ... | 1.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 2.9729207539701335E18 | -| test.c:518:14:518:15 | ip | 1437897.0 | -| test.c:518:19:518:30 | (...) | 1437897.0 | -| test.c:518:19:518:35 | ... * ... | 1437897.0 | -| test.c:518:19:518:59 | ... + ... | 2.067547782609E12 | -| test.c:518:20:518:20 | 2 | 1.0 | -| test.c:518:20:518:20 | (unsigned int)... | 1.0 | -| test.c:518:20:518:25 | ... * ... | 1437897.0 | -| test.c:518:20:518:29 | ... + ... | 1437897.0 | -| test.c:518:24:518:25 | ip | 1437897.0 | -| test.c:518:29:518:29 | 1 | 1.0 | -| test.c:518:29:518:29 | (unsigned int)... | 1.0 | -| test.c:518:34:518:35 | 17 | 1.0 | -| test.c:518:34:518:35 | (unsigned int)... | 1.0 | -| test.c:518:39:518:54 | (...) | 1437897.0 | -| test.c:518:39:518:59 | ... * ... | 1437897.0 | -| test.c:518:40:518:40 | 2 | 1.0 | -| test.c:518:40:518:40 | (unsigned int)... | 1.0 | -| test.c:518:40:518:45 | ... * ... | 1437897.0 | -| test.c:518:40:518:49 | ... + ... | 1437897.0 | -| test.c:518:40:518:53 | ... + ... | 1437897.0 | -| test.c:518:44:518:45 | ip | 1437897.0 | -| test.c:518:49:518:49 | 1 | 1.0 | -| test.c:518:49:518:49 | (unsigned int)... | 1.0 | -| test.c:518:53:518:53 | 1 | 1.0 | -| test.c:518:53:518:53 | (unsigned int)... | 1.0 | -| test.c:518:58:518:59 | 17 | 1.0 | -| test.c:518:58:518:59 | (unsigned int)... | 1.0 | -| test.c:519:11:519:12 | 14 | 1.0 | -| test.c:519:11:519:12 | (unsigned int)... | 1.0 | -| test.c:519:11:519:17 | ... * ... | 1437897.0 | -| test.c:519:16:519:17 | ip | 1437897.0 | -| test.c:520:11:520:22 | (...) | 1437897.0 | -| test.c:520:11:520:27 | ... * ... | 1437897.0 | -| test.c:520:11:520:51 | ... + ... | 2.067547782609E12 | -| test.c:520:12:520:12 | 2 | 1.0 | -| test.c:520:12:520:12 | (unsigned int)... | 1.0 | -| test.c:520:12:520:17 | ... * ... | 1437897.0 | -| test.c:520:12:520:21 | ... + ... | 1437897.0 | -| test.c:520:16:520:17 | ip | 1437897.0 | -| test.c:520:21:520:21 | 1 | 1.0 | -| test.c:520:21:520:21 | (unsigned int)... | 1.0 | -| test.c:520:26:520:27 | 14 | 1.0 | -| test.c:520:26:520:27 | (unsigned int)... | 1.0 | -| test.c:520:31:520:46 | (...) | 1437897.0 | -| test.c:520:31:520:51 | ... * ... | 1437897.0 | -| test.c:520:32:520:32 | 2 | 1.0 | -| test.c:520:32:520:32 | (unsigned int)... | 1.0 | -| test.c:520:32:520:37 | ... * ... | 1437897.0 | -| test.c:520:32:520:41 | ... + ... | 1437897.0 | -| test.c:520:32:520:45 | ... + ... | 1437897.0 | -| test.c:520:36:520:37 | ip | 1437897.0 | -| test.c:520:41:520:41 | 1 | 1.0 | -| test.c:520:41:520:41 | (unsigned int)... | 1.0 | -| test.c:520:45:520:45 | 1 | 1.0 | -| test.c:520:45:520:45 | (unsigned int)... | 1.0 | -| test.c:520:50:520:51 | 17 | 1.0 | -| test.c:520:50:520:51 | (unsigned int)... | 1.0 | -| test.c:521:9:521:9 | 2 | 1.0 | -| test.c:521:9:521:9 | (unsigned int)... | 1.0 | -| test.c:521:9:521:26 | ... * ... | 1437897.0 | -| test.c:521:9:541:48 | ... + ... | 3.5306223994138077E62 | -| test.c:521:9:563:30 | ... > ... | 1.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.3658022750663434E182 | -| test.c:521:13:521:26 | (...) | 1437897.0 | -| test.c:521:14:521:15 | ip | 1437897.0 | -| test.c:521:14:521:20 | ... * ... | 1437897.0 | -| test.c:521:14:521:25 | ... + ... | 1437897.0 | -| test.c:521:19:521:20 | 14 | 1.0 | -| test.c:521:19:521:20 | (unsigned int)... | 1.0 | -| test.c:521:24:521:25 | 32 | 1.0 | -| test.c:521:24:521:25 | (unsigned int)... | 1.0 | -| test.c:522:13:541:48 | (...) | 2.4554070280512497E56 | -| test.c:522:14:522:14 | 4 | 1.0 | -| test.c:522:14:522:14 | (unsigned int)... | 1.0 | -| test.c:522:14:522:31 | ... * ... | 1437897.0 | -| test.c:522:14:523:32 | ... + ... | 2.067547782609E12 | -| test.c:522:14:524:32 | ... + ... | 2.9729207539701335E18 | -| test.c:522:14:530:28 | ... + ... | 7.070613623498497E37 | -| test.c:522:14:531:43 | ... > ... | 1.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 2.4554070280512497E56 | -| test.c:522:18:522:31 | (...) | 1437897.0 | -| test.c:522:19:522:20 | ip | 1437897.0 | -| test.c:522:19:522:25 | ... * ... | 1437897.0 | -| test.c:522:19:522:30 | ... + ... | 1437897.0 | -| test.c:522:24:522:25 | 14 | 1.0 | -| test.c:522:24:522:25 | (unsigned int)... | 1.0 | -| test.c:522:29:522:30 | 32 | 1.0 | -| test.c:522:29:522:30 | (unsigned int)... | 1.0 | -| test.c:523:15:523:32 | (...) | 1437897.0 | -| test.c:523:16:523:16 | 2 | 1.0 | -| test.c:523:16:523:16 | (unsigned int)... | 1.0 | -| test.c:523:16:523:21 | ... * ... | 1437897.0 | -| test.c:523:16:523:26 | ... * ... | 1437897.0 | -| test.c:523:16:523:31 | ... + ... | 1437897.0 | -| test.c:523:20:523:21 | ip | 1437897.0 | -| test.c:523:25:523:26 | 14 | 1.0 | -| test.c:523:25:523:26 | (unsigned int)... | 1.0 | -| test.c:523:30:523:31 | 32 | 1.0 | -| test.c:523:30:523:31 | (unsigned int)... | 1.0 | -| test.c:524:15:524:15 | 2 | 1.0 | -| test.c:524:15:524:15 | (unsigned int)... | 1.0 | -| test.c:524:15:524:32 | ... * ... | 1437897.0 | -| test.c:524:19:524:32 | (...) | 1437897.0 | -| test.c:524:20:524:21 | ip | 1437897.0 | -| test.c:524:20:524:26 | ... * ... | 1437897.0 | -| test.c:524:20:524:31 | ... + ... | 1437897.0 | -| test.c:524:25:524:26 | 14 | 1.0 | -| test.c:524:25:524:26 | (unsigned int)... | 1.0 | -| test.c:524:30:524:31 | 64 | 1.0 | -| test.c:524:30:524:31 | (unsigned int)... | 1.0 | -| test.c:525:15:530:28 | (...) | 2.3783390842343084E19 | -| test.c:525:16:525:27 | (...) | 1437897.0 | -| test.c:525:16:525:32 | ... * ... | 1437897.0 | -| test.c:525:16:526:65 | ... > ... | 1.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 2.3783390842343084E19 | -| test.c:525:17:525:17 | 2 | 1.0 | -| test.c:525:17:525:17 | (unsigned int)... | 1.0 | -| test.c:525:17:525:22 | ... * ... | 1437897.0 | -| test.c:525:17:525:26 | ... + ... | 1437897.0 | -| test.c:525:21:525:22 | ip | 1437897.0 | -| test.c:525:26:525:26 | 1 | 1.0 | -| test.c:525:26:525:26 | (unsigned int)... | 1.0 | -| test.c:525:31:525:32 | 14 | 1.0 | -| test.c:525:31:525:32 | (unsigned int)... | 1.0 | -| test.c:526:15:526:65 | (...) | 2.067547782609E12 | -| test.c:526:16:526:17 | 14 | 1.0 | -| test.c:526:16:526:17 | (unsigned int)... | 1.0 | -| test.c:526:16:526:28 | ... * ... | 1437897.0 | -| test.c:526:16:526:38 | ... > ... | 1.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 2.067547782609E12 | -| test.c:526:21:526:28 | (...) | 1437897.0 | -| test.c:526:22:526:22 | 2 | 1.0 | -| test.c:526:22:526:22 | (unsigned int)... | 1.0 | -| test.c:526:22:526:27 | ... * ... | 1437897.0 | -| test.c:526:26:526:27 | ip | 1437897.0 | -| test.c:526:32:526:33 | 17 | 1.0 | -| test.c:526:32:526:33 | (unsigned int)... | 1.0 | -| test.c:526:32:526:38 | ... * ... | 1437897.0 | -| test.c:526:37:526:38 | ip | 1437897.0 | -| test.c:526:42:526:43 | 17 | 1.0 | -| test.c:526:42:526:43 | (unsigned int)... | 1.0 | -| test.c:526:42:526:54 | ... * ... | 1437897.0 | -| test.c:526:47:526:54 | (...) | 1437897.0 | -| test.c:526:48:526:48 | 2 | 1.0 | -| test.c:526:48:526:48 | (unsigned int)... | 1.0 | -| test.c:526:48:526:53 | ... * ... | 1437897.0 | -| test.c:526:52:526:53 | ip | 1437897.0 | -| test.c:526:58:526:59 | 17 | 1.0 | -| test.c:526:58:526:59 | (unsigned int)... | 1.0 | -| test.c:526:58:526:64 | ... * ... | 1437897.0 | -| test.c:526:63:526:64 | ip | 1437897.0 | -| test.c:527:19:527:30 | (...) | 2875795.0 | -| test.c:527:19:527:35 | ... * ... | 2875795.0 | -| test.c:527:20:527:20 | 2 | 1.0 | -| test.c:527:20:527:20 | (unsigned int)... | 1.0 | -| test.c:527:20:527:25 | ... * ... | 2875795.0 | -| test.c:527:20:527:29 | ... + ... | 2875795.0 | -| test.c:527:24:527:25 | ip | 2875795.0 | -| test.c:527:29:527:29 | 1 | 1.0 | -| test.c:527:29:527:29 | (unsigned int)... | 1.0 | -| test.c:527:34:527:35 | 14 | 1.0 | -| test.c:527:34:527:35 | (unsigned int)... | 1.0 | -| test.c:528:19:528:20 | 14 | 1.0 | -| test.c:528:19:528:20 | (unsigned int)... | 1.0 | -| test.c:528:19:528:31 | ... * ... | 2875795.0 | -| test.c:528:19:528:41 | ... > ... | 1.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 8.270196882025E12 | -| test.c:528:24:528:31 | (...) | 2875795.0 | -| test.c:528:25:528:25 | 2 | 1.0 | -| test.c:528:25:528:25 | (unsigned int)... | 1.0 | -| test.c:528:25:528:30 | ... * ... | 2875795.0 | -| test.c:528:29:528:30 | ip | 2875795.0 | -| test.c:528:35:528:36 | 17 | 1.0 | -| test.c:528:35:528:36 | (unsigned int)... | 1.0 | -| test.c:528:35:528:41 | ... * ... | 2875795.0 | -| test.c:528:40:528:41 | ip | 2875795.0 | -| test.c:529:21:529:22 | 14 | 1.0 | -| test.c:529:21:529:22 | (unsigned int)... | 1.0 | -| test.c:529:21:529:33 | ... * ... | 2875795.0 | -| test.c:529:26:529:33 | (...) | 2875795.0 | -| test.c:529:27:529:27 | 2 | 1.0 | -| test.c:529:27:529:27 | (unsigned int)... | 1.0 | -| test.c:529:27:529:32 | ... * ... | 2875795.0 | -| test.c:529:31:529:32 | ip | 2875795.0 | -| test.c:530:21:530:22 | 14 | 1.0 | -| test.c:530:21:530:22 | (unsigned int)... | 1.0 | -| test.c:530:21:530:27 | ... * ... | 2875795.0 | -| test.c:530:26:530:27 | ip | 2875795.0 | -| test.c:531:13:531:13 | 2 | 1.0 | -| test.c:531:13:531:13 | (unsigned int)... | 1.0 | -| test.c:531:13:531:18 | ... * ... | 8627385.0 | -| test.c:531:13:531:23 | ... * ... | 8627385.0 | -| test.c:531:13:531:43 | ... + ... | 7.4431771938225E13 | -| test.c:531:17:531:18 | ip | 8627385.0 | -| test.c:531:22:531:23 | 14 | 1.0 | -| test.c:531:22:531:23 | (unsigned int)... | 1.0 | -| test.c:531:27:531:38 | (...) | 8627385.0 | -| test.c:531:27:531:43 | ... * ... | 8627385.0 | -| test.c:531:28:531:28 | 2 | 1.0 | -| test.c:531:28:531:28 | (unsigned int)... | 1.0 | -| test.c:531:28:531:33 | ... * ... | 8627385.0 | -| test.c:531:28:531:37 | ... + ... | 8627385.0 | -| test.c:531:32:531:33 | ip | 8627385.0 | -| test.c:531:37:531:37 | 1 | 1.0 | -| test.c:531:37:531:37 | (unsigned int)... | 1.0 | -| test.c:531:42:531:43 | 17 | 1.0 | -| test.c:531:42:531:43 | (unsigned int)... | 1.0 | -| test.c:532:17:532:17 | 4 | 1.0 | -| test.c:532:17:532:17 | (unsigned int)... | 1.0 | -| test.c:532:17:532:34 | ... * ... | 8627385.0 | -| test.c:532:17:533:34 | ... + ... | 7.4431771938225E13 | -| test.c:532:17:534:34 | ... + ... | 6.421515527432633E20 | -| test.c:532:17:540:30 | ... + ... | 3.298869507082441E42 | -| test.c:532:21:532:34 | (...) | 8627385.0 | -| test.c:532:22:532:23 | ip | 8627385.0 | -| test.c:532:22:532:28 | ... * ... | 8627385.0 | -| test.c:532:22:532:33 | ... + ... | 8627385.0 | -| test.c:532:27:532:28 | 14 | 1.0 | -| test.c:532:27:532:28 | (unsigned int)... | 1.0 | -| test.c:532:32:532:33 | 32 | 1.0 | -| test.c:532:32:532:33 | (unsigned int)... | 1.0 | -| test.c:533:17:533:34 | (...) | 8627385.0 | -| test.c:533:18:533:18 | 2 | 1.0 | -| test.c:533:18:533:18 | (unsigned int)... | 1.0 | -| test.c:533:18:533:23 | ... * ... | 8627385.0 | -| test.c:533:18:533:28 | ... * ... | 8627385.0 | -| test.c:533:18:533:33 | ... + ... | 8627385.0 | -| test.c:533:22:533:23 | ip | 8627385.0 | -| test.c:533:27:533:28 | 14 | 1.0 | -| test.c:533:27:533:28 | (unsigned int)... | 1.0 | -| test.c:533:32:533:33 | 32 | 1.0 | -| test.c:533:32:533:33 | (unsigned int)... | 1.0 | -| test.c:534:17:534:17 | 2 | 1.0 | -| test.c:534:17:534:17 | (unsigned int)... | 1.0 | -| test.c:534:17:534:34 | ... * ... | 8627385.0 | -| test.c:534:21:534:34 | (...) | 8627385.0 | -| test.c:534:22:534:23 | ip | 8627385.0 | -| test.c:534:22:534:28 | ... * ... | 8627385.0 | -| test.c:534:22:534:33 | ... + ... | 8627385.0 | -| test.c:534:27:534:28 | 14 | 1.0 | -| test.c:534:27:534:28 | (unsigned int)... | 1.0 | -| test.c:534:32:534:33 | 64 | 1.0 | -| test.c:534:32:534:33 | (unsigned int)... | 1.0 | -| test.c:535:17:540:30 | (...) | 5.137213315127421E21 | -| test.c:535:18:535:29 | (...) | 8627385.0 | -| test.c:535:18:535:34 | ... * ... | 8627385.0 | -| test.c:535:18:536:67 | ... > ... | 1.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 5.137213315127421E21 | -| test.c:535:19:535:19 | 2 | 1.0 | -| test.c:535:19:535:19 | (unsigned int)... | 1.0 | -| test.c:535:19:535:24 | ... * ... | 8627385.0 | -| test.c:535:19:535:28 | ... + ... | 8627385.0 | -| test.c:535:23:535:24 | ip | 8627385.0 | -| test.c:535:28:535:28 | 1 | 1.0 | -| test.c:535:28:535:28 | (unsigned int)... | 1.0 | -| test.c:535:33:535:34 | 14 | 1.0 | -| test.c:535:33:535:34 | (unsigned int)... | 1.0 | -| test.c:536:17:536:67 | (...) | 7.4431771938225E13 | -| test.c:536:18:536:19 | 14 | 1.0 | -| test.c:536:18:536:19 | (unsigned int)... | 1.0 | -| test.c:536:18:536:30 | ... * ... | 8627385.0 | -| test.c:536:18:536:40 | ... > ... | 1.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 7.4431771938225E13 | -| test.c:536:23:536:30 | (...) | 8627385.0 | -| test.c:536:24:536:24 | 2 | 1.0 | -| test.c:536:24:536:24 | (unsigned int)... | 1.0 | -| test.c:536:24:536:29 | ... * ... | 8627385.0 | -| test.c:536:28:536:29 | ip | 8627385.0 | -| test.c:536:34:536:35 | 17 | 1.0 | -| test.c:536:34:536:35 | (unsigned int)... | 1.0 | -| test.c:536:34:536:40 | ... * ... | 8627385.0 | -| test.c:536:39:536:40 | ip | 8627385.0 | -| test.c:536:44:536:45 | 17 | 1.0 | -| test.c:536:44:536:45 | (unsigned int)... | 1.0 | -| test.c:536:44:536:56 | ... * ... | 8627385.0 | -| test.c:536:49:536:56 | (...) | 8627385.0 | -| test.c:536:50:536:50 | 2 | 1.0 | -| test.c:536:50:536:50 | (unsigned int)... | 1.0 | -| test.c:536:50:536:55 | ... * ... | 8627385.0 | -| test.c:536:54:536:55 | ip | 8627385.0 | -| test.c:536:60:536:61 | 17 | 1.0 | -| test.c:536:60:536:61 | (unsigned int)... | 1.0 | -| test.c:536:60:536:66 | ... * ... | 8627385.0 | -| test.c:536:65:536:66 | ip | 8627385.0 | -| test.c:537:21:537:32 | (...) | 1.7254771E7 | -| test.c:537:21:537:37 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:22 | 2 | 1.0 | -| test.c:537:22:537:22 | (unsigned int)... | 1.0 | -| test.c:537:22:537:27 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:31 | ... + ... | 1.7254771E7 | -| test.c:537:26:537:27 | ip | 1.7254771E7 | -| test.c:537:31:537:31 | 1 | 1.0 | -| test.c:537:31:537:31 | (unsigned int)... | 1.0 | -| test.c:537:36:537:37 | 14 | 1.0 | -| test.c:537:36:537:37 | (unsigned int)... | 1.0 | -| test.c:538:21:538:22 | 14 | 1.0 | -| test.c:538:21:538:22 | (unsigned int)... | 1.0 | -| test.c:538:21:538:33 | ... * ... | 1.7254771E7 | -| test.c:538:21:538:43 | ... > ... | 1.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 2.97727122262441E14 | -| test.c:538:26:538:33 | (...) | 1.7254771E7 | -| test.c:538:27:538:27 | 2 | 1.0 | -| test.c:538:27:538:27 | (unsigned int)... | 1.0 | -| test.c:538:27:538:32 | ... * ... | 1.7254771E7 | -| test.c:538:31:538:32 | ip | 1.7254771E7 | -| test.c:538:37:538:38 | 17 | 1.0 | -| test.c:538:37:538:38 | (unsigned int)... | 1.0 | -| test.c:538:37:538:43 | ... * ... | 1.7254771E7 | -| test.c:538:42:538:43 | ip | 1.7254771E7 | -| test.c:539:23:539:24 | 14 | 1.0 | -| test.c:539:23:539:24 | (unsigned int)... | 1.0 | -| test.c:539:23:539:35 | ... * ... | 1.7254771E7 | -| test.c:539:28:539:35 | (...) | 1.7254771E7 | -| test.c:539:29:539:29 | 2 | 1.0 | -| test.c:539:29:539:29 | (unsigned int)... | 1.0 | -| test.c:539:29:539:34 | ... * ... | 1.7254771E7 | -| test.c:539:33:539:34 | ip | 1.7254771E7 | -| test.c:540:23:540:24 | 14 | 1.0 | -| test.c:540:23:540:24 | (unsigned int)... | 1.0 | -| test.c:540:23:540:29 | ... * ... | 1.7254771E7 | -| test.c:540:28:540:29 | ip | 1.7254771E7 | -| test.c:541:17:541:17 | 2 | 1.0 | -| test.c:541:17:541:17 | (unsigned int)... | 1.0 | -| test.c:541:17:541:22 | ... * ... | 8627385.0 | -| test.c:541:17:541:27 | ... * ... | 8627385.0 | -| test.c:541:17:541:47 | ... + ... | 7.4431771938225E13 | -| test.c:541:21:541:22 | ip | 8627385.0 | -| test.c:541:26:541:27 | 14 | 1.0 | -| test.c:541:26:541:27 | (unsigned int)... | 1.0 | -| test.c:541:31:541:42 | (...) | 8627385.0 | -| test.c:541:31:541:47 | ... * ... | 8627385.0 | -| test.c:541:32:541:32 | 2 | 1.0 | -| test.c:541:32:541:32 | (unsigned int)... | 1.0 | -| test.c:541:32:541:37 | ... * ... | 8627385.0 | -| test.c:541:32:541:41 | ... + ... | 8627385.0 | -| test.c:541:36:541:37 | ip | 8627385.0 | -| test.c:541:41:541:41 | 1 | 1.0 | -| test.c:541:41:541:41 | (unsigned int)... | 1.0 | -| test.c:541:46:541:47 | 17 | 1.0 | -| test.c:541:46:541:47 | (unsigned int)... | 1.0 | -| test.c:542:11:563:30 | (...) | 6.08636382738973E71 | -| test.c:542:12:542:12 | 4 | 1.0 | -| test.c:542:12:542:12 | (unsigned int)... | 1.0 | -| test.c:542:12:542:29 | ... * ... | 6.0391698E7 | -| test.c:542:12:543:30 | ... + ... | 3.647157187323204E15 | -| test.c:542:12:544:30 | ... + ... | 2.2025801541535236E23 | -| test.c:542:12:550:26 | ... + ... | 3.881087564774641E47 | -| test.c:542:12:551:61 | ... > ... | 1.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 6.08636382738973E71 | -| test.c:542:16:542:29 | (...) | 6.0391698E7 | -| test.c:542:17:542:18 | ip | 6.0391698E7 | -| test.c:542:17:542:23 | ... * ... | 6.0391698E7 | -| test.c:542:17:542:28 | ... + ... | 6.0391698E7 | -| test.c:542:22:542:23 | 14 | 1.0 | -| test.c:542:22:542:23 | (unsigned int)... | 1.0 | -| test.c:542:27:542:28 | 32 | 1.0 | -| test.c:542:27:542:28 | (unsigned int)... | 1.0 | -| test.c:543:13:543:30 | (...) | 6.0391698E7 | -| test.c:543:14:543:14 | 2 | 1.0 | -| test.c:543:14:543:14 | (unsigned int)... | 1.0 | -| test.c:543:14:543:19 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:24 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:29 | ... + ... | 6.0391698E7 | -| test.c:543:18:543:19 | ip | 6.0391698E7 | -| test.c:543:23:543:24 | 14 | 1.0 | -| test.c:543:23:543:24 | (unsigned int)... | 1.0 | -| test.c:543:28:543:29 | 32 | 1.0 | -| test.c:543:28:543:29 | (unsigned int)... | 1.0 | -| test.c:544:13:544:13 | 2 | 1.0 | -| test.c:544:13:544:13 | (unsigned int)... | 1.0 | -| test.c:544:13:544:30 | ... * ... | 6.0391698E7 | -| test.c:544:17:544:30 | (...) | 6.0391698E7 | -| test.c:544:18:544:19 | ip | 6.0391698E7 | -| test.c:544:18:544:24 | ... * ... | 6.0391698E7 | -| test.c:544:18:544:29 | ... + ... | 6.0391698E7 | -| test.c:544:23:544:24 | 14 | 1.0 | -| test.c:544:23:544:24 | (unsigned int)... | 1.0 | -| test.c:544:28:544:29 | 64 | 1.0 | -| test.c:544:28:544:29 | (unsigned int)... | 1.0 | -| test.c:545:13:550:26 | (...) | 1.7620641670887053E24 | -| test.c:545:14:545:25 | (...) | 6.0391698E7 | -| test.c:545:14:545:30 | ... * ... | 6.0391698E7 | -| test.c:545:14:546:63 | ... > ... | 1.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 1.7620641670887053E24 | -| test.c:545:15:545:15 | 2 | 1.0 | -| test.c:545:15:545:15 | (unsigned int)... | 1.0 | -| test.c:545:15:545:20 | ... * ... | 6.0391698E7 | -| test.c:545:15:545:24 | ... + ... | 6.0391698E7 | -| test.c:545:19:545:20 | ip | 6.0391698E7 | -| test.c:545:24:545:24 | 1 | 1.0 | -| test.c:545:24:545:24 | (unsigned int)... | 1.0 | -| test.c:545:29:545:30 | 14 | 1.0 | -| test.c:545:29:545:30 | (unsigned int)... | 1.0 | -| test.c:546:13:546:63 | (...) | 3.647157187323204E15 | -| test.c:546:14:546:15 | 14 | 1.0 | -| test.c:546:14:546:15 | (unsigned int)... | 1.0 | -| test.c:546:14:546:26 | ... * ... | 6.0391698E7 | -| test.c:546:14:546:36 | ... > ... | 1.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 3.647157187323204E15 | -| test.c:546:19:546:26 | (...) | 6.0391698E7 | -| test.c:546:20:546:20 | 2 | 1.0 | -| test.c:546:20:546:20 | (unsigned int)... | 1.0 | -| test.c:546:20:546:25 | ... * ... | 6.0391698E7 | -| test.c:546:24:546:25 | ip | 6.0391698E7 | -| test.c:546:30:546:31 | 17 | 1.0 | -| test.c:546:30:546:31 | (unsigned int)... | 1.0 | -| test.c:546:30:546:36 | ... * ... | 6.0391698E7 | -| test.c:546:35:546:36 | ip | 6.0391698E7 | -| test.c:546:40:546:41 | 17 | 1.0 | -| test.c:546:40:546:41 | (unsigned int)... | 1.0 | -| test.c:546:40:546:52 | ... * ... | 6.0391698E7 | -| test.c:546:45:546:52 | (...) | 6.0391698E7 | -| test.c:546:46:546:46 | 2 | 1.0 | -| test.c:546:46:546:46 | (unsigned int)... | 1.0 | -| test.c:546:46:546:51 | ... * ... | 6.0391698E7 | -| test.c:546:50:546:51 | ip | 6.0391698E7 | -| test.c:546:56:546:57 | 17 | 1.0 | -| test.c:546:56:546:57 | (unsigned int)... | 1.0 | -| test.c:546:56:546:62 | ... * ... | 6.0391698E7 | -| test.c:546:61:546:62 | ip | 6.0391698E7 | -| test.c:547:17:547:28 | (...) | 1.20783397E8 | -| test.c:547:17:547:33 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:18 | 2 | 1.0 | -| test.c:547:18:547:18 | (unsigned int)... | 1.0 | -| test.c:547:18:547:23 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:27 | ... + ... | 1.20783397E8 | -| test.c:547:22:547:23 | ip | 1.20783397E8 | -| test.c:547:27:547:27 | 1 | 1.0 | -| test.c:547:27:547:27 | (unsigned int)... | 1.0 | -| test.c:547:32:547:33 | 14 | 1.0 | +| test.c:483:28:483:29 | 14 | 1.0 | +| test.c:483:28:483:29 | (unsigned int)... | 1.0 | +| test.c:484:13:484:14 | 14 | 1.0 | +| test.c:484:13:484:14 | (unsigned int)... | 1.0 | +| test.c:484:13:484:25 | ... * ... | 2605.0 | +| test.c:484:13:484:35 | ... > ... | 1.0 | +| test.c:484:13:486:21 | ... ? ... : ... | 6786025.0 | +| test.c:484:18:484:25 | (...) | 2605.0 | +| test.c:484:19:484:19 | 2 | 1.0 | +| test.c:484:19:484:19 | (unsigned int)... | 1.0 | +| test.c:484:19:484:24 | ... * ... | 2605.0 | +| test.c:484:23:484:24 | ip | 2605.0 | +| test.c:484:29:484:30 | 17 | 1.0 | +| test.c:484:29:484:30 | (unsigned int)... | 1.0 | +| test.c:484:29:484:35 | ... * ... | 2605.0 | +| test.c:484:34:484:35 | ip | 2605.0 | +| test.c:485:15:485:16 | 14 | 1.0 | +| test.c:485:15:485:16 | (unsigned int)... | 1.0 | +| test.c:485:15:485:27 | ... * ... | 2605.0 | +| test.c:485:20:485:27 | (...) | 2605.0 | +| test.c:485:21:485:21 | 2 | 1.0 | +| test.c:485:21:485:21 | (unsigned int)... | 1.0 | +| test.c:485:21:485:26 | ... * ... | 2605.0 | +| test.c:485:25:485:26 | ip | 2605.0 | +| test.c:486:15:486:16 | 14 | 1.0 | +| test.c:486:15:486:16 | (unsigned int)... | 1.0 | +| test.c:486:15:486:21 | ... * ... | 2605.0 | +| test.c:486:20:486:21 | ip | 2605.0 | +| test.c:487:9:487:10 | 14 | 1.0 | +| test.c:487:9:487:10 | (unsigned int)... | 1.0 | +| test.c:487:9:487:15 | ... * ... | 1302.0 | +| test.c:487:9:487:31 | ... > ... | 1.0 | +| test.c:487:9:489:23 | ... ? ... : ... | 1695204.0 | +| test.c:487:14:487:15 | ip | 1302.0 | +| test.c:487:19:487:26 | (...) | 1302.0 | +| test.c:487:19:487:31 | ... * ... | 1302.0 | +| test.c:487:20:487:21 | ip | 1302.0 | +| test.c:487:20:487:25 | ... + ... | 1302.0 | +| test.c:487:25:487:25 | 1 | 1.0 | +| test.c:487:25:487:25 | (unsigned int)... | 1.0 | +| test.c:487:30:487:31 | 17 | 1.0 | +| test.c:487:30:487:31 | (unsigned int)... | 1.0 | +| test.c:488:11:488:12 | 14 | 1.0 | +| test.c:488:11:488:12 | (unsigned int)... | 1.0 | +| test.c:488:11:488:17 | ... * ... | 1302.0 | +| test.c:488:16:488:17 | ip | 1302.0 | +| test.c:489:11:489:18 | (...) | 1302.0 | +| test.c:489:11:489:23 | ... * ... | 1302.0 | +| test.c:489:12:489:13 | ip | 1302.0 | +| test.c:489:12:489:17 | ... + ... | 1302.0 | +| test.c:489:17:489:17 | 1 | 1.0 | +| test.c:489:17:489:17 | (unsigned int)... | 1.0 | +| test.c:489:22:489:23 | 14 | 1.0 | +| test.c:489:22:489:23 | (unsigned int)... | 1.0 | +| test.c:490:9:490:9 | 2 | 1.0 | +| test.c:490:9:490:9 | (unsigned int)... | 1.0 | +| test.c:490:9:490:26 | ... * ... | 10419.0 | +| test.c:490:9:510:44 | ... + ... | 1.9449636104972528E43 | +| test.c:490:13:490:26 | (...) | 10419.0 | +| test.c:490:14:490:15 | ip | 10419.0 | +| test.c:490:14:490:20 | ... * ... | 10419.0 | +| test.c:490:14:490:25 | ... + ... | 10419.0 | +| test.c:490:19:490:20 | 14 | 1.0 | +| test.c:490:19:490:20 | (unsigned int)... | 1.0 | +| test.c:490:24:490:25 | 32 | 1.0 | +| test.c:490:24:490:25 | (unsigned int)... | 1.0 | +| test.c:491:9:510:44 | (...) | 1.8667469147684545E39 | +| test.c:491:10:491:10 | 4 | 1.0 | +| test.c:491:10:491:10 | (unsigned int)... | 1.0 | +| test.c:491:10:491:27 | ... * ... | 10419.0 | +| test.c:491:10:492:28 | ... + ... | 1.08555561E8 | +| test.c:491:10:493:28 | ... + ... | 1.131040390059E12 | +| test.c:491:10:499:24 | ... + ... | 1.0235492350954187E25 | +| test.c:491:10:500:39 | ... > ... | 1.0 | +| test.c:491:10:510:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:491:14:491:27 | (...) | 10419.0 | +| test.c:491:15:491:16 | ip | 10419.0 | +| test.c:491:15:491:21 | ... * ... | 10419.0 | +| test.c:491:15:491:26 | ... + ... | 10419.0 | +| test.c:491:20:491:21 | 14 | 1.0 | +| test.c:491:20:491:21 | (unsigned int)... | 1.0 | +| test.c:491:25:491:26 | 32 | 1.0 | +| test.c:491:25:491:26 | (unsigned int)... | 1.0 | +| test.c:492:11:492:28 | (...) | 10419.0 | +| test.c:492:12:492:12 | 2 | 1.0 | +| test.c:492:12:492:12 | (unsigned int)... | 1.0 | +| test.c:492:12:492:17 | ... * ... | 10419.0 | +| test.c:492:12:492:22 | ... * ... | 10419.0 | +| test.c:492:12:492:27 | ... + ... | 10419.0 | +| test.c:492:16:492:17 | ip | 10419.0 | +| test.c:492:21:492:22 | 14 | 1.0 | +| test.c:492:21:492:22 | (unsigned int)... | 1.0 | +| test.c:492:26:492:27 | 32 | 1.0 | +| test.c:492:26:492:27 | (unsigned int)... | 1.0 | +| test.c:493:11:493:11 | 2 | 1.0 | +| test.c:493:11:493:11 | (unsigned int)... | 1.0 | +| test.c:493:11:493:28 | ... * ... | 10419.0 | +| test.c:493:15:493:28 | (...) | 10419.0 | +| test.c:493:16:493:17 | ip | 10419.0 | +| test.c:493:16:493:22 | ... * ... | 10419.0 | +| test.c:493:16:493:27 | ... + ... | 10419.0 | +| test.c:493:21:493:22 | 14 | 1.0 | +| test.c:493:21:493:22 | (unsigned int)... | 1.0 | +| test.c:493:26:493:27 | 64 | 1.0 | +| test.c:493:26:493:27 | (unsigned int)... | 1.0 | +| test.c:494:11:499:24 | (...) | 9.049625849719E12 | +| test.c:494:12:494:23 | (...) | 10419.0 | +| test.c:494:12:494:28 | ... * ... | 10419.0 | +| test.c:494:12:495:61 | ... > ... | 1.0 | +| test.c:494:12:499:23 | ... ? ... : ... | 9.049625849719E12 | +| test.c:494:13:494:13 | 2 | 1.0 | +| test.c:494:13:494:13 | (unsigned int)... | 1.0 | +| test.c:494:13:494:18 | ... * ... | 10419.0 | +| test.c:494:13:494:22 | ... + ... | 10419.0 | +| test.c:494:17:494:18 | ip | 10419.0 | +| test.c:494:22:494:22 | 1 | 1.0 | +| test.c:494:22:494:22 | (unsigned int)... | 1.0 | +| test.c:494:27:494:28 | 14 | 1.0 | +| test.c:494:27:494:28 | (unsigned int)... | 1.0 | +| test.c:495:11:495:61 | (...) | 1.08555561E8 | +| test.c:495:12:495:13 | 14 | 1.0 | +| test.c:495:12:495:13 | (unsigned int)... | 1.0 | +| test.c:495:12:495:24 | ... * ... | 10419.0 | +| test.c:495:12:495:34 | ... > ... | 1.0 | +| test.c:495:12:495:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:495:17:495:24 | (...) | 10419.0 | +| test.c:495:18:495:18 | 2 | 1.0 | +| test.c:495:18:495:18 | (unsigned int)... | 1.0 | +| test.c:495:18:495:23 | ... * ... | 10419.0 | +| test.c:495:22:495:23 | ip | 10419.0 | +| test.c:495:28:495:29 | 17 | 1.0 | +| test.c:495:28:495:29 | (unsigned int)... | 1.0 | +| test.c:495:28:495:34 | ... * ... | 10419.0 | +| test.c:495:33:495:34 | ip | 10419.0 | +| test.c:495:38:495:39 | 17 | 1.0 | +| test.c:495:38:495:39 | (unsigned int)... | 1.0 | +| test.c:495:38:495:50 | ... * ... | 10419.0 | +| test.c:495:43:495:50 | (...) | 10419.0 | +| test.c:495:44:495:44 | 2 | 1.0 | +| test.c:495:44:495:44 | (unsigned int)... | 1.0 | +| test.c:495:44:495:49 | ... * ... | 10419.0 | +| test.c:495:48:495:49 | ip | 10419.0 | +| test.c:495:54:495:55 | 17 | 1.0 | +| test.c:495:54:495:55 | (unsigned int)... | 1.0 | +| test.c:495:54:495:60 | ... * ... | 10419.0 | +| test.c:495:59:495:60 | ip | 10419.0 | +| test.c:496:15:496:26 | (...) | 20839.0 | +| test.c:496:15:496:31 | ... * ... | 20839.0 | +| test.c:496:16:496:16 | 2 | 1.0 | +| test.c:496:16:496:16 | (unsigned int)... | 1.0 | +| test.c:496:16:496:21 | ... * ... | 20839.0 | +| test.c:496:16:496:25 | ... + ... | 20839.0 | +| test.c:496:20:496:21 | ip | 20839.0 | +| test.c:496:25:496:25 | 1 | 1.0 | +| test.c:496:25:496:25 | (unsigned int)... | 1.0 | +| test.c:496:30:496:31 | 14 | 1.0 | +| test.c:496:30:496:31 | (unsigned int)... | 1.0 | +| test.c:497:15:497:16 | 14 | 1.0 | +| test.c:497:15:497:16 | (unsigned int)... | 1.0 | +| test.c:497:15:497:27 | ... * ... | 20839.0 | +| test.c:497:15:497:37 | ... > ... | 1.0 | +| test.c:497:15:499:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:497:20:497:27 | (...) | 20839.0 | +| test.c:497:21:497:21 | 2 | 1.0 | +| test.c:497:21:497:21 | (unsigned int)... | 1.0 | +| test.c:497:21:497:26 | ... * ... | 20839.0 | +| test.c:497:25:497:26 | ip | 20839.0 | +| test.c:497:31:497:32 | 17 | 1.0 | +| test.c:497:31:497:32 | (unsigned int)... | 1.0 | +| test.c:497:31:497:37 | ... * ... | 20839.0 | +| test.c:497:36:497:37 | ip | 20839.0 | +| test.c:498:17:498:18 | 14 | 1.0 | +| test.c:498:17:498:18 | (unsigned int)... | 1.0 | +| test.c:498:17:498:29 | ... * ... | 20839.0 | +| test.c:498:22:498:29 | (...) | 20839.0 | +| test.c:498:23:498:23 | 2 | 1.0 | +| test.c:498:23:498:23 | (unsigned int)... | 1.0 | +| test.c:498:23:498:28 | ... * ... | 20839.0 | +| test.c:498:27:498:28 | ip | 20839.0 | +| test.c:499:17:499:18 | 14 | 1.0 | +| test.c:499:17:499:18 | (unsigned int)... | 1.0 | +| test.c:499:17:499:23 | ... * ... | 20839.0 | +| test.c:499:22:499:23 | ip | 20839.0 | +| test.c:500:9:500:9 | 2 | 1.0 | +| test.c:500:9:500:9 | (unsigned int)... | 1.0 | +| test.c:500:9:500:14 | ... * ... | 62517.0 | +| test.c:500:9:500:19 | ... * ... | 62517.0 | +| test.c:500:9:500:39 | ... + ... | 3.908375289E9 | +| test.c:500:13:500:14 | ip | 62517.0 | +| test.c:500:18:500:19 | 14 | 1.0 | +| test.c:500:18:500:19 | (unsigned int)... | 1.0 | +| test.c:500:23:500:34 | (...) | 62517.0 | +| test.c:500:23:500:39 | ... * ... | 62517.0 | +| test.c:500:24:500:24 | 2 | 1.0 | +| test.c:500:24:500:24 | (unsigned int)... | 1.0 | +| test.c:500:24:500:29 | ... * ... | 62517.0 | +| test.c:500:24:500:33 | ... + ... | 62517.0 | +| test.c:500:28:500:29 | ip | 62517.0 | +| test.c:500:33:500:33 | 1 | 1.0 | +| test.c:500:33:500:33 | (unsigned int)... | 1.0 | +| test.c:500:38:500:39 | 17 | 1.0 | +| test.c:500:38:500:39 | (unsigned int)... | 1.0 | +| test.c:501:13:501:13 | 4 | 1.0 | +| test.c:501:13:501:13 | (unsigned int)... | 1.0 | +| test.c:501:13:501:30 | ... * ... | 62517.0 | +| test.c:501:13:502:30 | ... + ... | 3.908375289E9 | +| test.c:501:13:503:30 | ... + ... | 2.44339897942413E14 | +| test.c:501:13:509:26 | ... + ... | 4.7762734556795386E29 | +| test.c:501:17:501:30 | (...) | 62517.0 | +| test.c:501:18:501:19 | ip | 62517.0 | +| test.c:501:18:501:24 | ... * ... | 62517.0 | +| test.c:501:18:501:29 | ... + ... | 62517.0 | +| test.c:501:23:501:24 | 14 | 1.0 | +| test.c:501:23:501:24 | (unsigned int)... | 1.0 | +| test.c:501:28:501:29 | 32 | 1.0 | +| test.c:501:28:501:29 | (unsigned int)... | 1.0 | +| test.c:502:13:502:30 | (...) | 62517.0 | +| test.c:502:14:502:14 | 2 | 1.0 | +| test.c:502:14:502:14 | (unsigned int)... | 1.0 | +| test.c:502:14:502:19 | ... * ... | 62517.0 | +| test.c:502:14:502:24 | ... * ... | 62517.0 | +| test.c:502:14:502:29 | ... + ... | 62517.0 | +| test.c:502:18:502:19 | ip | 62517.0 | +| test.c:502:23:502:24 | 14 | 1.0 | +| test.c:502:23:502:24 | (unsigned int)... | 1.0 | +| test.c:502:28:502:29 | 32 | 1.0 | +| test.c:502:28:502:29 | (unsigned int)... | 1.0 | +| test.c:503:13:503:13 | 2 | 1.0 | +| test.c:503:13:503:13 | (unsigned int)... | 1.0 | +| test.c:503:13:503:30 | ... * ... | 62517.0 | +| test.c:503:17:503:30 | (...) | 62517.0 | +| test.c:503:18:503:19 | ip | 62517.0 | +| test.c:503:18:503:24 | ... * ... | 62517.0 | +| test.c:503:18:503:29 | ... + ... | 62517.0 | +| test.c:503:23:503:24 | 14 | 1.0 | +| test.c:503:23:503:24 | (unsigned int)... | 1.0 | +| test.c:503:28:503:29 | 64 | 1.0 | +| test.c:503:28:503:29 | (unsigned int)... | 1.0 | +| test.c:504:13:509:26 | (...) | 1.954766084417875E15 | +| test.c:504:14:504:25 | (...) | 62517.0 | +| test.c:504:14:504:30 | ... * ... | 62517.0 | +| test.c:504:14:505:63 | ... > ... | 1.0 | +| test.c:504:14:509:25 | ... ? ... : ... | 1.954766084417875E15 | +| test.c:504:15:504:15 | 2 | 1.0 | +| test.c:504:15:504:15 | (unsigned int)... | 1.0 | +| test.c:504:15:504:20 | ... * ... | 62517.0 | +| test.c:504:15:504:24 | ... + ... | 62517.0 | +| test.c:504:19:504:20 | ip | 62517.0 | +| test.c:504:24:504:24 | 1 | 1.0 | +| test.c:504:24:504:24 | (unsigned int)... | 1.0 | +| test.c:504:29:504:30 | 14 | 1.0 | +| test.c:504:29:504:30 | (unsigned int)... | 1.0 | +| test.c:505:13:505:63 | (...) | 3.908375289E9 | +| test.c:505:14:505:15 | 14 | 1.0 | +| test.c:505:14:505:15 | (unsigned int)... | 1.0 | +| test.c:505:14:505:26 | ... * ... | 62517.0 | +| test.c:505:14:505:36 | ... > ... | 1.0 | +| test.c:505:14:505:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:505:19:505:26 | (...) | 62517.0 | +| test.c:505:20:505:20 | 2 | 1.0 | +| test.c:505:20:505:20 | (unsigned int)... | 1.0 | +| test.c:505:20:505:25 | ... * ... | 62517.0 | +| test.c:505:24:505:25 | ip | 62517.0 | +| test.c:505:30:505:31 | 17 | 1.0 | +| test.c:505:30:505:31 | (unsigned int)... | 1.0 | +| test.c:505:30:505:36 | ... * ... | 62517.0 | +| test.c:505:35:505:36 | ip | 62517.0 | +| test.c:505:40:505:41 | 17 | 1.0 | +| test.c:505:40:505:41 | (unsigned int)... | 1.0 | +| test.c:505:40:505:52 | ... * ... | 62517.0 | +| test.c:505:45:505:52 | (...) | 62517.0 | +| test.c:505:46:505:46 | 2 | 1.0 | +| test.c:505:46:505:46 | (unsigned int)... | 1.0 | +| test.c:505:46:505:51 | ... * ... | 62517.0 | +| test.c:505:50:505:51 | ip | 62517.0 | +| test.c:505:56:505:57 | 17 | 1.0 | +| test.c:505:56:505:57 | (unsigned int)... | 1.0 | +| test.c:505:56:505:62 | ... * ... | 62517.0 | +| test.c:505:61:505:62 | ip | 62517.0 | +| test.c:506:17:506:28 | (...) | 125035.0 | +| test.c:506:17:506:33 | ... * ... | 125035.0 | +| test.c:506:18:506:18 | 2 | 1.0 | +| test.c:506:18:506:18 | (unsigned int)... | 1.0 | +| test.c:506:18:506:23 | ... * ... | 125035.0 | +| test.c:506:18:506:27 | ... + ... | 125035.0 | +| test.c:506:22:506:23 | ip | 125035.0 | +| test.c:506:27:506:27 | 1 | 1.0 | +| test.c:506:27:506:27 | (unsigned int)... | 1.0 | +| test.c:506:32:506:33 | 14 | 1.0 | +| test.c:506:32:506:33 | (unsigned int)... | 1.0 | +| test.c:507:17:507:18 | 14 | 1.0 | +| test.c:507:17:507:18 | (unsigned int)... | 1.0 | +| test.c:507:17:507:29 | ... * ... | 125035.0 | +| test.c:507:17:507:39 | ... > ... | 1.0 | +| test.c:507:17:509:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:507:22:507:29 | (...) | 125035.0 | +| test.c:507:23:507:23 | 2 | 1.0 | +| test.c:507:23:507:23 | (unsigned int)... | 1.0 | +| test.c:507:23:507:28 | ... * ... | 125035.0 | +| test.c:507:27:507:28 | ip | 125035.0 | +| test.c:507:33:507:34 | 17 | 1.0 | +| test.c:507:33:507:34 | (unsigned int)... | 1.0 | +| test.c:507:33:507:39 | ... * ... | 125035.0 | +| test.c:507:38:507:39 | ip | 125035.0 | +| test.c:508:19:508:20 | 14 | 1.0 | +| test.c:508:19:508:20 | (unsigned int)... | 1.0 | +| test.c:508:19:508:31 | ... * ... | 125035.0 | +| test.c:508:24:508:31 | (...) | 125035.0 | +| test.c:508:25:508:25 | 2 | 1.0 | +| test.c:508:25:508:25 | (unsigned int)... | 1.0 | +| test.c:508:25:508:30 | ... * ... | 125035.0 | +| test.c:508:29:508:30 | ip | 125035.0 | +| test.c:509:19:509:20 | 14 | 1.0 | +| test.c:509:19:509:20 | (unsigned int)... | 1.0 | +| test.c:509:19:509:25 | ... * ... | 125035.0 | +| test.c:509:24:509:25 | ip | 125035.0 | +| test.c:510:13:510:13 | 2 | 1.0 | +| test.c:510:13:510:13 | (unsigned int)... | 1.0 | +| test.c:510:13:510:18 | ... * ... | 62517.0 | +| test.c:510:13:510:23 | ... * ... | 62517.0 | +| test.c:510:13:510:43 | ... + ... | 3.908375289E9 | +| test.c:510:17:510:18 | ip | 62517.0 | +| test.c:510:22:510:23 | 14 | 1.0 | +| test.c:510:22:510:23 | (unsigned int)... | 1.0 | +| test.c:510:27:510:38 | (...) | 62517.0 | +| test.c:510:27:510:43 | ... * ... | 62517.0 | +| test.c:510:28:510:28 | 2 | 1.0 | +| test.c:510:28:510:28 | (unsigned int)... | 1.0 | +| test.c:510:28:510:33 | ... * ... | 62517.0 | +| test.c:510:28:510:37 | ... + ... | 62517.0 | +| test.c:510:32:510:33 | ip | 62517.0 | +| test.c:510:37:510:37 | 1 | 1.0 | +| test.c:510:37:510:37 | (unsigned int)... | 1.0 | +| test.c:510:42:510:43 | 17 | 1.0 | +| test.c:510:42:510:43 | (unsigned int)... | 1.0 | +| test.c:511:9:511:9 | 4 | 1.0 | +| test.c:511:9:511:9 | (unsigned int)... | 1.0 | +| test.c:511:9:511:26 | ... * ... | 10419.0 | +| test.c:511:9:512:30 | ... + ... | 1.08555561E8 | +| test.c:511:9:513:30 | ... + ... | 1.131040390059E12 | +| test.c:511:9:519:26 | ... + ... | 1.0235492350954187E25 | +| test.c:511:9:520:61 | ... > ... | 1.0 | +| test.c:511:9:532:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:511:13:511:26 | (...) | 10419.0 | +| test.c:511:14:511:15 | ip | 10419.0 | +| test.c:511:14:511:20 | ... * ... | 10419.0 | +| test.c:511:14:511:25 | ... + ... | 10419.0 | +| test.c:511:19:511:20 | 14 | 1.0 | +| test.c:511:19:511:20 | (unsigned int)... | 1.0 | +| test.c:511:24:511:25 | 32 | 1.0 | +| test.c:511:24:511:25 | (unsigned int)... | 1.0 | +| test.c:512:13:512:30 | (...) | 10419.0 | +| test.c:512:14:512:14 | 2 | 1.0 | +| test.c:512:14:512:14 | (unsigned int)... | 1.0 | +| test.c:512:14:512:19 | ... * ... | 10419.0 | +| test.c:512:14:512:24 | ... * ... | 10419.0 | +| test.c:512:14:512:29 | ... + ... | 10419.0 | +| test.c:512:18:512:19 | ip | 10419.0 | +| test.c:512:23:512:24 | 14 | 1.0 | +| test.c:512:23:512:24 | (unsigned int)... | 1.0 | +| test.c:512:28:512:29 | 32 | 1.0 | +| test.c:512:28:512:29 | (unsigned int)... | 1.0 | +| test.c:513:13:513:13 | 2 | 1.0 | +| test.c:513:13:513:13 | (unsigned int)... | 1.0 | +| test.c:513:13:513:30 | ... * ... | 10419.0 | +| test.c:513:17:513:30 | (...) | 10419.0 | +| test.c:513:18:513:19 | ip | 10419.0 | +| test.c:513:18:513:24 | ... * ... | 10419.0 | +| test.c:513:18:513:29 | ... + ... | 10419.0 | +| test.c:513:23:513:24 | 14 | 1.0 | +| test.c:513:23:513:24 | (unsigned int)... | 1.0 | +| test.c:513:28:513:29 | 64 | 1.0 | +| test.c:513:28:513:29 | (unsigned int)... | 1.0 | +| test.c:514:13:519:26 | (...) | 9.049625849719E12 | +| test.c:514:14:514:25 | (...) | 10419.0 | +| test.c:514:14:514:30 | ... * ... | 10419.0 | +| test.c:514:14:515:63 | ... > ... | 1.0 | +| test.c:514:14:519:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:514:15:514:15 | 2 | 1.0 | +| test.c:514:15:514:15 | (unsigned int)... | 1.0 | +| test.c:514:15:514:20 | ... * ... | 10419.0 | +| test.c:514:15:514:24 | ... + ... | 10419.0 | +| test.c:514:19:514:20 | ip | 10419.0 | +| test.c:514:24:514:24 | 1 | 1.0 | +| test.c:514:24:514:24 | (unsigned int)... | 1.0 | +| test.c:514:29:514:30 | 14 | 1.0 | +| test.c:514:29:514:30 | (unsigned int)... | 1.0 | +| test.c:515:13:515:63 | (...) | 1.08555561E8 | +| test.c:515:14:515:15 | 14 | 1.0 | +| test.c:515:14:515:15 | (unsigned int)... | 1.0 | +| test.c:515:14:515:26 | ... * ... | 10419.0 | +| test.c:515:14:515:36 | ... > ... | 1.0 | +| test.c:515:14:515:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:515:19:515:26 | (...) | 10419.0 | +| test.c:515:20:515:20 | 2 | 1.0 | +| test.c:515:20:515:20 | (unsigned int)... | 1.0 | +| test.c:515:20:515:25 | ... * ... | 10419.0 | +| test.c:515:24:515:25 | ip | 10419.0 | +| test.c:515:30:515:31 | 17 | 1.0 | +| test.c:515:30:515:31 | (unsigned int)... | 1.0 | +| test.c:515:30:515:36 | ... * ... | 10419.0 | +| test.c:515:35:515:36 | ip | 10419.0 | +| test.c:515:40:515:41 | 17 | 1.0 | +| test.c:515:40:515:41 | (unsigned int)... | 1.0 | +| test.c:515:40:515:52 | ... * ... | 10419.0 | +| test.c:515:45:515:52 | (...) | 10419.0 | +| test.c:515:46:515:46 | 2 | 1.0 | +| test.c:515:46:515:46 | (unsigned int)... | 1.0 | +| test.c:515:46:515:51 | ... * ... | 10419.0 | +| test.c:515:50:515:51 | ip | 10419.0 | +| test.c:515:56:515:57 | 17 | 1.0 | +| test.c:515:56:515:57 | (unsigned int)... | 1.0 | +| test.c:515:56:515:62 | ... * ... | 10419.0 | +| test.c:515:61:515:62 | ip | 10419.0 | +| test.c:516:17:516:28 | (...) | 20839.0 | +| test.c:516:17:516:33 | ... * ... | 20839.0 | +| test.c:516:18:516:18 | 2 | 1.0 | +| test.c:516:18:516:18 | (unsigned int)... | 1.0 | +| test.c:516:18:516:23 | ... * ... | 20839.0 | +| test.c:516:18:516:27 | ... + ... | 20839.0 | +| test.c:516:22:516:23 | ip | 20839.0 | +| test.c:516:27:516:27 | 1 | 1.0 | +| test.c:516:27:516:27 | (unsigned int)... | 1.0 | +| test.c:516:32:516:33 | 14 | 1.0 | +| test.c:516:32:516:33 | (unsigned int)... | 1.0 | +| test.c:517:17:517:18 | 14 | 1.0 | +| test.c:517:17:517:18 | (unsigned int)... | 1.0 | +| test.c:517:17:517:29 | ... * ... | 20839.0 | +| test.c:517:17:517:39 | ... > ... | 1.0 | +| test.c:517:17:519:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:517:22:517:29 | (...) | 20839.0 | +| test.c:517:23:517:23 | 2 | 1.0 | +| test.c:517:23:517:23 | (unsigned int)... | 1.0 | +| test.c:517:23:517:28 | ... * ... | 20839.0 | +| test.c:517:27:517:28 | ip | 20839.0 | +| test.c:517:33:517:34 | 17 | 1.0 | +| test.c:517:33:517:34 | (unsigned int)... | 1.0 | +| test.c:517:33:517:39 | ... * ... | 20839.0 | +| test.c:517:38:517:39 | ip | 20839.0 | +| test.c:518:19:518:20 | 14 | 1.0 | +| test.c:518:19:518:20 | (unsigned int)... | 1.0 | +| test.c:518:19:518:31 | ... * ... | 20839.0 | +| test.c:518:24:518:31 | (...) | 20839.0 | +| test.c:518:25:518:25 | 2 | 1.0 | +| test.c:518:25:518:25 | (unsigned int)... | 1.0 | +| test.c:518:25:518:30 | ... * ... | 20839.0 | +| test.c:518:29:518:30 | ip | 20839.0 | +| test.c:519:19:519:20 | 14 | 1.0 | +| test.c:519:19:519:20 | (unsigned int)... | 1.0 | +| test.c:519:19:519:25 | ... * ... | 20839.0 | +| test.c:519:24:519:25 | ip | 20839.0 | +| test.c:520:11:520:61 | (...) | 3.908375289E9 | +| test.c:520:12:520:13 | 14 | 1.0 | +| test.c:520:12:520:13 | (unsigned int)... | 1.0 | +| test.c:520:12:520:18 | ... * ... | 62517.0 | +| test.c:520:12:520:34 | ... > ... | 1.0 | +| test.c:520:12:520:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:520:17:520:18 | ip | 62517.0 | +| test.c:520:22:520:29 | (...) | 62517.0 | +| test.c:520:22:520:34 | ... * ... | 62517.0 | +| test.c:520:23:520:24 | ip | 62517.0 | +| test.c:520:23:520:28 | ... + ... | 62517.0 | +| test.c:520:28:520:28 | 1 | 1.0 | +| test.c:520:28:520:28 | (unsigned int)... | 1.0 | +| test.c:520:33:520:34 | 17 | 1.0 | +| test.c:520:33:520:34 | (unsigned int)... | 1.0 | +| test.c:520:38:520:39 | 17 | 1.0 | +| test.c:520:38:520:39 | (unsigned int)... | 1.0 | +| test.c:520:38:520:44 | ... * ... | 62517.0 | +| test.c:520:43:520:44 | ip | 62517.0 | +| test.c:520:48:520:55 | (...) | 62517.0 | +| test.c:520:48:520:60 | ... * ... | 62517.0 | +| test.c:520:49:520:50 | ip | 62517.0 | +| test.c:520:49:520:54 | ... + ... | 62517.0 | +| test.c:520:54:520:54 | 1 | 1.0 | +| test.c:520:54:520:54 | (unsigned int)... | 1.0 | +| test.c:520:59:520:60 | 17 | 1.0 | +| test.c:520:59:520:60 | (unsigned int)... | 1.0 | +| test.c:521:11:521:11 | 4 | 1.0 | +| test.c:521:11:521:11 | (unsigned int)... | 1.0 | +| test.c:521:11:521:28 | ... * ... | 125034.0 | +| test.c:521:11:522:28 | ... + ... | 1.5633501156E10 | +| test.c:521:11:523:28 | ... + ... | 1.954719183539304E15 | +| test.c:521:11:529:24 | ... + ... | 3.056778340269433E31 | +| test.c:521:15:521:28 | (...) | 125034.0 | +| test.c:521:16:521:17 | ip | 125034.0 | +| test.c:521:16:521:22 | ... * ... | 125034.0 | +| test.c:521:16:521:27 | ... + ... | 125034.0 | +| test.c:521:21:521:22 | 14 | 1.0 | +| test.c:521:21:521:22 | (unsigned int)... | 1.0 | +| test.c:521:26:521:27 | 32 | 1.0 | +| test.c:521:26:521:27 | (unsigned int)... | 1.0 | +| test.c:522:11:522:28 | (...) | 125034.0 | +| test.c:522:12:522:12 | 2 | 1.0 | +| test.c:522:12:522:12 | (unsigned int)... | 1.0 | +| test.c:522:12:522:17 | ... * ... | 125034.0 | +| test.c:522:12:522:22 | ... * ... | 125034.0 | +| test.c:522:12:522:27 | ... + ... | 125034.0 | +| test.c:522:16:522:17 | ip | 125034.0 | +| test.c:522:21:522:22 | 14 | 1.0 | +| test.c:522:21:522:22 | (unsigned int)... | 1.0 | +| test.c:522:26:522:27 | 32 | 1.0 | +| test.c:522:26:522:27 | (unsigned int)... | 1.0 | +| test.c:523:11:523:11 | 2 | 1.0 | +| test.c:523:11:523:11 | (unsigned int)... | 1.0 | +| test.c:523:11:523:28 | ... * ... | 125034.0 | +| test.c:523:15:523:28 | (...) | 125034.0 | +| test.c:523:16:523:17 | ip | 125034.0 | +| test.c:523:16:523:22 | ... * ... | 125034.0 | +| test.c:523:16:523:27 | ... + ... | 125034.0 | +| test.c:523:21:523:22 | 14 | 1.0 | +| test.c:523:21:523:22 | (unsigned int)... | 1.0 | +| test.c:523:26:523:27 | 64 | 1.0 | +| test.c:523:26:523:27 | (unsigned int)... | 1.0 | +| test.c:524:11:529:24 | (...) | 1.5637941071078508E16 | +| test.c:524:12:524:23 | (...) | 125034.0 | +| test.c:524:12:524:28 | ... * ... | 125034.0 | +| test.c:524:12:525:61 | ... > ... | 1.0 | +| test.c:524:12:529:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:524:13:524:13 | 2 | 1.0 | +| test.c:524:13:524:13 | (unsigned int)... | 1.0 | +| test.c:524:13:524:18 | ... * ... | 125034.0 | +| test.c:524:13:524:22 | ... + ... | 125034.0 | +| test.c:524:17:524:18 | ip | 125034.0 | +| test.c:524:22:524:22 | 1 | 1.0 | +| test.c:524:22:524:22 | (unsigned int)... | 1.0 | +| test.c:524:27:524:28 | 14 | 1.0 | +| test.c:524:27:524:28 | (unsigned int)... | 1.0 | +| test.c:525:11:525:61 | (...) | 1.5633501156E10 | +| test.c:525:12:525:13 | 14 | 1.0 | +| test.c:525:12:525:13 | (unsigned int)... | 1.0 | +| test.c:525:12:525:24 | ... * ... | 125034.0 | +| test.c:525:12:525:34 | ... > ... | 1.0 | +| test.c:525:12:525:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:525:17:525:24 | (...) | 125034.0 | +| test.c:525:18:525:18 | 2 | 1.0 | +| test.c:525:18:525:18 | (unsigned int)... | 1.0 | +| test.c:525:18:525:23 | ... * ... | 125034.0 | +| test.c:525:22:525:23 | ip | 125034.0 | +| test.c:525:28:525:29 | 17 | 1.0 | +| test.c:525:28:525:29 | (unsigned int)... | 1.0 | +| test.c:525:28:525:34 | ... * ... | 125034.0 | +| test.c:525:33:525:34 | ip | 125034.0 | +| test.c:525:38:525:39 | 17 | 1.0 | +| test.c:525:38:525:39 | (unsigned int)... | 1.0 | +| test.c:525:38:525:50 | ... * ... | 125034.0 | +| test.c:525:43:525:50 | (...) | 125034.0 | +| test.c:525:44:525:44 | 2 | 1.0 | +| test.c:525:44:525:44 | (unsigned int)... | 1.0 | +| test.c:525:44:525:49 | ... * ... | 125034.0 | +| test.c:525:48:525:49 | ip | 125034.0 | +| test.c:525:54:525:55 | 17 | 1.0 | +| test.c:525:54:525:55 | (unsigned int)... | 1.0 | +| test.c:525:54:525:60 | ... * ... | 125034.0 | +| test.c:525:59:525:60 | ip | 125034.0 | +| test.c:526:15:526:26 | (...) | 250069.0 | +| test.c:526:15:526:31 | ... * ... | 250069.0 | +| test.c:526:16:526:16 | 2 | 1.0 | +| test.c:526:16:526:16 | (unsigned int)... | 1.0 | +| test.c:526:16:526:21 | ... * ... | 250069.0 | +| test.c:526:16:526:25 | ... + ... | 250069.0 | +| test.c:526:20:526:21 | ip | 250069.0 | +| test.c:526:25:526:25 | 1 | 1.0 | +| test.c:526:25:526:25 | (unsigned int)... | 1.0 | +| test.c:526:30:526:31 | 14 | 1.0 | +| test.c:526:30:526:31 | (unsigned int)... | 1.0 | +| test.c:527:15:527:16 | 14 | 1.0 | +| test.c:527:15:527:16 | (unsigned int)... | 1.0 | +| test.c:527:15:527:27 | ... * ... | 250069.0 | +| test.c:527:15:527:37 | ... > ... | 1.0 | +| test.c:527:15:529:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:527:20:527:27 | (...) | 250069.0 | +| test.c:527:21:527:21 | 2 | 1.0 | +| test.c:527:21:527:21 | (unsigned int)... | 1.0 | +| test.c:527:21:527:26 | ... * ... | 250069.0 | +| test.c:527:25:527:26 | ip | 250069.0 | +| test.c:527:31:527:32 | 17 | 1.0 | +| test.c:527:31:527:32 | (unsigned int)... | 1.0 | +| test.c:527:31:527:37 | ... * ... | 250069.0 | +| test.c:527:36:527:37 | ip | 250069.0 | +| test.c:528:17:528:18 | 14 | 1.0 | +| test.c:528:17:528:18 | (unsigned int)... | 1.0 | +| test.c:528:17:528:29 | ... * ... | 250069.0 | +| test.c:528:22:528:29 | (...) | 250069.0 | +| test.c:528:23:528:23 | 2 | 1.0 | +| test.c:528:23:528:23 | (unsigned int)... | 1.0 | +| test.c:528:23:528:28 | ... * ... | 250069.0 | +| test.c:528:27:528:28 | ip | 250069.0 | +| test.c:529:17:529:18 | 14 | 1.0 | +| test.c:529:17:529:18 | (unsigned int)... | 1.0 | +| test.c:529:17:529:23 | ... * ... | 250069.0 | +| test.c:529:22:529:23 | ip | 250069.0 | +| test.c:530:11:530:12 | 14 | 1.0 | +| test.c:530:11:530:12 | (unsigned int)... | 1.0 | +| test.c:530:11:530:17 | ... * ... | 125034.0 | +| test.c:530:11:530:33 | ... > ... | 1.0 | +| test.c:530:11:532:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:530:16:530:17 | ip | 125034.0 | +| test.c:530:21:530:28 | (...) | 125034.0 | +| test.c:530:21:530:33 | ... * ... | 125034.0 | +| test.c:530:22:530:23 | ip | 125034.0 | +| test.c:530:22:530:27 | ... + ... | 125034.0 | +| test.c:530:27:530:27 | 1 | 1.0 | +| test.c:530:27:530:27 | (unsigned int)... | 1.0 | +| test.c:530:32:530:33 | 17 | 1.0 | +| test.c:530:32:530:33 | (unsigned int)... | 1.0 | +| test.c:531:13:531:14 | 14 | 1.0 | +| test.c:531:13:531:14 | (unsigned int)... | 1.0 | +| test.c:531:13:531:19 | ... * ... | 125034.0 | +| test.c:531:18:531:19 | ip | 125034.0 | +| test.c:532:13:532:20 | (...) | 125034.0 | +| test.c:532:13:532:25 | ... * ... | 125034.0 | +| test.c:532:14:532:15 | ip | 125034.0 | +| test.c:532:14:532:19 | ... + ... | 125034.0 | +| test.c:532:19:532:19 | 1 | 1.0 | +| test.c:532:19:532:19 | (unsigned int)... | 1.0 | +| test.c:532:24:532:25 | 14 | 1.0 | +| test.c:532:24:532:25 | (unsigned int)... | 1.0 | +| test.c:533:9:533:10 | 14 | 1.0 | +| test.c:533:9:533:10 | (unsigned int)... | 1.0 | +| test.c:533:9:533:15 | ... * ... | 1437897.0 | +| test.c:533:9:533:59 | ... > ... | 1.0 | +| test.c:533:9:535:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:533:14:533:15 | ip | 1437897.0 | +| test.c:533:19:533:30 | (...) | 1437897.0 | +| test.c:533:19:533:35 | ... * ... | 1437897.0 | +| test.c:533:19:533:59 | ... + ... | 2.067547782609E12 | +| test.c:533:20:533:20 | 2 | 1.0 | +| test.c:533:20:533:20 | (unsigned int)... | 1.0 | +| test.c:533:20:533:25 | ... * ... | 1437897.0 | +| test.c:533:20:533:29 | ... + ... | 1437897.0 | +| test.c:533:24:533:25 | ip | 1437897.0 | +| test.c:533:29:533:29 | 1 | 1.0 | +| test.c:533:29:533:29 | (unsigned int)... | 1.0 | +| test.c:533:34:533:35 | 17 | 1.0 | +| test.c:533:34:533:35 | (unsigned int)... | 1.0 | +| test.c:533:39:533:54 | (...) | 1437897.0 | +| test.c:533:39:533:59 | ... * ... | 1437897.0 | +| test.c:533:40:533:40 | 2 | 1.0 | +| test.c:533:40:533:40 | (unsigned int)... | 1.0 | +| test.c:533:40:533:45 | ... * ... | 1437897.0 | +| test.c:533:40:533:49 | ... + ... | 1437897.0 | +| test.c:533:40:533:53 | ... + ... | 1437897.0 | +| test.c:533:44:533:45 | ip | 1437897.0 | +| test.c:533:49:533:49 | 1 | 1.0 | +| test.c:533:49:533:49 | (unsigned int)... | 1.0 | +| test.c:533:53:533:53 | 1 | 1.0 | +| test.c:533:53:533:53 | (unsigned int)... | 1.0 | +| test.c:533:58:533:59 | 17 | 1.0 | +| test.c:533:58:533:59 | (unsigned int)... | 1.0 | +| test.c:534:11:534:12 | 14 | 1.0 | +| test.c:534:11:534:12 | (unsigned int)... | 1.0 | +| test.c:534:11:534:17 | ... * ... | 1437897.0 | +| test.c:534:16:534:17 | ip | 1437897.0 | +| test.c:535:11:535:22 | (...) | 1437897.0 | +| test.c:535:11:535:27 | ... * ... | 1437897.0 | +| test.c:535:11:535:51 | ... + ... | 2.067547782609E12 | +| test.c:535:12:535:12 | 2 | 1.0 | +| test.c:535:12:535:12 | (unsigned int)... | 1.0 | +| test.c:535:12:535:17 | ... * ... | 1437897.0 | +| test.c:535:12:535:21 | ... + ... | 1437897.0 | +| test.c:535:16:535:17 | ip | 1437897.0 | +| test.c:535:21:535:21 | 1 | 1.0 | +| test.c:535:21:535:21 | (unsigned int)... | 1.0 | +| test.c:535:26:535:27 | 14 | 1.0 | +| test.c:535:26:535:27 | (unsigned int)... | 1.0 | +| test.c:535:31:535:46 | (...) | 1437897.0 | +| test.c:535:31:535:51 | ... * ... | 1437897.0 | +| test.c:535:32:535:32 | 2 | 1.0 | +| test.c:535:32:535:32 | (unsigned int)... | 1.0 | +| test.c:535:32:535:37 | ... * ... | 1437897.0 | +| test.c:535:32:535:41 | ... + ... | 1437897.0 | +| test.c:535:32:535:45 | ... + ... | 1437897.0 | +| test.c:535:36:535:37 | ip | 1437897.0 | +| test.c:535:41:535:41 | 1 | 1.0 | +| test.c:535:41:535:41 | (unsigned int)... | 1.0 | +| test.c:535:45:535:45 | 1 | 1.0 | +| test.c:535:45:535:45 | (unsigned int)... | 1.0 | +| test.c:535:50:535:51 | 17 | 1.0 | +| test.c:535:50:535:51 | (unsigned int)... | 1.0 | +| test.c:536:9:536:9 | 2 | 1.0 | +| test.c:536:9:536:9 | (unsigned int)... | 1.0 | +| test.c:536:9:536:26 | ... * ... | 1437897.0 | +| test.c:536:9:556:48 | ... + ... | 3.5306223994138077E62 | +| test.c:536:9:578:30 | ... > ... | 1.0 | +| test.c:536:9:621:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:536:13:536:26 | (...) | 1437897.0 | +| test.c:536:14:536:15 | ip | 1437897.0 | +| test.c:536:14:536:20 | ... * ... | 1437897.0 | +| test.c:536:14:536:25 | ... + ... | 1437897.0 | +| test.c:536:19:536:20 | 14 | 1.0 | +| test.c:536:19:536:20 | (unsigned int)... | 1.0 | +| test.c:536:24:536:25 | 32 | 1.0 | +| test.c:536:24:536:25 | (unsigned int)... | 1.0 | +| test.c:537:13:556:48 | (...) | 2.4554070280512497E56 | +| test.c:537:14:537:14 | 4 | 1.0 | +| test.c:537:14:537:14 | (unsigned int)... | 1.0 | +| test.c:537:14:537:31 | ... * ... | 1437897.0 | +| test.c:537:14:538:32 | ... + ... | 2.067547782609E12 | +| test.c:537:14:539:32 | ... + ... | 2.9729207539701335E18 | +| test.c:537:14:545:28 | ... + ... | 7.070613623498497E37 | +| test.c:537:14:546:43 | ... > ... | 1.0 | +| test.c:537:14:556:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:537:18:537:31 | (...) | 1437897.0 | +| test.c:537:19:537:20 | ip | 1437897.0 | +| test.c:537:19:537:25 | ... * ... | 1437897.0 | +| test.c:537:19:537:30 | ... + ... | 1437897.0 | +| test.c:537:24:537:25 | 14 | 1.0 | +| test.c:537:24:537:25 | (unsigned int)... | 1.0 | +| test.c:537:29:537:30 | 32 | 1.0 | +| test.c:537:29:537:30 | (unsigned int)... | 1.0 | +| test.c:538:15:538:32 | (...) | 1437897.0 | +| test.c:538:16:538:16 | 2 | 1.0 | +| test.c:538:16:538:16 | (unsigned int)... | 1.0 | +| test.c:538:16:538:21 | ... * ... | 1437897.0 | +| test.c:538:16:538:26 | ... * ... | 1437897.0 | +| test.c:538:16:538:31 | ... + ... | 1437897.0 | +| test.c:538:20:538:21 | ip | 1437897.0 | +| test.c:538:25:538:26 | 14 | 1.0 | +| test.c:538:25:538:26 | (unsigned int)... | 1.0 | +| test.c:538:30:538:31 | 32 | 1.0 | +| test.c:538:30:538:31 | (unsigned int)... | 1.0 | +| test.c:539:15:539:15 | 2 | 1.0 | +| test.c:539:15:539:15 | (unsigned int)... | 1.0 | +| test.c:539:15:539:32 | ... * ... | 1437897.0 | +| test.c:539:19:539:32 | (...) | 1437897.0 | +| test.c:539:20:539:21 | ip | 1437897.0 | +| test.c:539:20:539:26 | ... * ... | 1437897.0 | +| test.c:539:20:539:31 | ... + ... | 1437897.0 | +| test.c:539:25:539:26 | 14 | 1.0 | +| test.c:539:25:539:26 | (unsigned int)... | 1.0 | +| test.c:539:30:539:31 | 64 | 1.0 | +| test.c:539:30:539:31 | (unsigned int)... | 1.0 | +| test.c:540:15:545:28 | (...) | 2.3783390842343084E19 | +| test.c:540:16:540:27 | (...) | 1437897.0 | +| test.c:540:16:540:32 | ... * ... | 1437897.0 | +| test.c:540:16:541:65 | ... > ... | 1.0 | +| test.c:540:16:545:27 | ... ? ... : ... | 2.3783390842343084E19 | +| test.c:540:17:540:17 | 2 | 1.0 | +| test.c:540:17:540:17 | (unsigned int)... | 1.0 | +| test.c:540:17:540:22 | ... * ... | 1437897.0 | +| test.c:540:17:540:26 | ... + ... | 1437897.0 | +| test.c:540:21:540:22 | ip | 1437897.0 | +| test.c:540:26:540:26 | 1 | 1.0 | +| test.c:540:26:540:26 | (unsigned int)... | 1.0 | +| test.c:540:31:540:32 | 14 | 1.0 | +| test.c:540:31:540:32 | (unsigned int)... | 1.0 | +| test.c:541:15:541:65 | (...) | 2.067547782609E12 | +| test.c:541:16:541:17 | 14 | 1.0 | +| test.c:541:16:541:17 | (unsigned int)... | 1.0 | +| test.c:541:16:541:28 | ... * ... | 1437897.0 | +| test.c:541:16:541:38 | ... > ... | 1.0 | +| test.c:541:16:541:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:541:21:541:28 | (...) | 1437897.0 | +| test.c:541:22:541:22 | 2 | 1.0 | +| test.c:541:22:541:22 | (unsigned int)... | 1.0 | +| test.c:541:22:541:27 | ... * ... | 1437897.0 | +| test.c:541:26:541:27 | ip | 1437897.0 | +| test.c:541:32:541:33 | 17 | 1.0 | +| test.c:541:32:541:33 | (unsigned int)... | 1.0 | +| test.c:541:32:541:38 | ... * ... | 1437897.0 | +| test.c:541:37:541:38 | ip | 1437897.0 | +| test.c:541:42:541:43 | 17 | 1.0 | +| test.c:541:42:541:43 | (unsigned int)... | 1.0 | +| test.c:541:42:541:54 | ... * ... | 1437897.0 | +| test.c:541:47:541:54 | (...) | 1437897.0 | +| test.c:541:48:541:48 | 2 | 1.0 | +| test.c:541:48:541:48 | (unsigned int)... | 1.0 | +| test.c:541:48:541:53 | ... * ... | 1437897.0 | +| test.c:541:52:541:53 | ip | 1437897.0 | +| test.c:541:58:541:59 | 17 | 1.0 | +| test.c:541:58:541:59 | (unsigned int)... | 1.0 | +| test.c:541:58:541:64 | ... * ... | 1437897.0 | +| test.c:541:63:541:64 | ip | 1437897.0 | +| test.c:542:19:542:30 | (...) | 2875795.0 | +| test.c:542:19:542:35 | ... * ... | 2875795.0 | +| test.c:542:20:542:20 | 2 | 1.0 | +| test.c:542:20:542:20 | (unsigned int)... | 1.0 | +| test.c:542:20:542:25 | ... * ... | 2875795.0 | +| test.c:542:20:542:29 | ... + ... | 2875795.0 | +| test.c:542:24:542:25 | ip | 2875795.0 | +| test.c:542:29:542:29 | 1 | 1.0 | +| test.c:542:29:542:29 | (unsigned int)... | 1.0 | +| test.c:542:34:542:35 | 14 | 1.0 | +| test.c:542:34:542:35 | (unsigned int)... | 1.0 | +| test.c:543:19:543:20 | 14 | 1.0 | +| test.c:543:19:543:20 | (unsigned int)... | 1.0 | +| test.c:543:19:543:31 | ... * ... | 2875795.0 | +| test.c:543:19:543:41 | ... > ... | 1.0 | +| test.c:543:19:545:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:543:24:543:31 | (...) | 2875795.0 | +| test.c:543:25:543:25 | 2 | 1.0 | +| test.c:543:25:543:25 | (unsigned int)... | 1.0 | +| test.c:543:25:543:30 | ... * ... | 2875795.0 | +| test.c:543:29:543:30 | ip | 2875795.0 | +| test.c:543:35:543:36 | 17 | 1.0 | +| test.c:543:35:543:36 | (unsigned int)... | 1.0 | +| test.c:543:35:543:41 | ... * ... | 2875795.0 | +| test.c:543:40:543:41 | ip | 2875795.0 | +| test.c:544:21:544:22 | 14 | 1.0 | +| test.c:544:21:544:22 | (unsigned int)... | 1.0 | +| test.c:544:21:544:33 | ... * ... | 2875795.0 | +| test.c:544:26:544:33 | (...) | 2875795.0 | +| test.c:544:27:544:27 | 2 | 1.0 | +| test.c:544:27:544:27 | (unsigned int)... | 1.0 | +| test.c:544:27:544:32 | ... * ... | 2875795.0 | +| test.c:544:31:544:32 | ip | 2875795.0 | +| test.c:545:21:545:22 | 14 | 1.0 | +| test.c:545:21:545:22 | (unsigned int)... | 1.0 | +| test.c:545:21:545:27 | ... * ... | 2875795.0 | +| test.c:545:26:545:27 | ip | 2875795.0 | +| test.c:546:13:546:13 | 2 | 1.0 | +| test.c:546:13:546:13 | (unsigned int)... | 1.0 | +| test.c:546:13:546:18 | ... * ... | 8627385.0 | +| test.c:546:13:546:23 | ... * ... | 8627385.0 | +| test.c:546:13:546:43 | ... + ... | 7.4431771938225E13 | +| test.c:546:17:546:18 | ip | 8627385.0 | +| test.c:546:22:546:23 | 14 | 1.0 | +| test.c:546:22:546:23 | (unsigned int)... | 1.0 | +| test.c:546:27:546:38 | (...) | 8627385.0 | +| test.c:546:27:546:43 | ... * ... | 8627385.0 | +| test.c:546:28:546:28 | 2 | 1.0 | +| test.c:546:28:546:28 | (unsigned int)... | 1.0 | +| test.c:546:28:546:33 | ... * ... | 8627385.0 | +| test.c:546:28:546:37 | ... + ... | 8627385.0 | +| test.c:546:32:546:33 | ip | 8627385.0 | +| test.c:546:37:546:37 | 1 | 1.0 | +| test.c:546:37:546:37 | (unsigned int)... | 1.0 | +| test.c:546:42:546:43 | 17 | 1.0 | +| test.c:546:42:546:43 | (unsigned int)... | 1.0 | +| test.c:547:17:547:17 | 4 | 1.0 | +| test.c:547:17:547:17 | (unsigned int)... | 1.0 | +| test.c:547:17:547:34 | ... * ... | 8627385.0 | +| test.c:547:17:548:34 | ... + ... | 7.4431771938225E13 | +| test.c:547:17:549:34 | ... + ... | 6.421515527432633E20 | +| test.c:547:17:555:30 | ... + ... | 3.298869507082441E42 | +| test.c:547:21:547:34 | (...) | 8627385.0 | +| test.c:547:22:547:23 | ip | 8627385.0 | +| test.c:547:22:547:28 | ... * ... | 8627385.0 | +| test.c:547:22:547:33 | ... + ... | 8627385.0 | +| test.c:547:27:547:28 | 14 | 1.0 | +| test.c:547:27:547:28 | (unsigned int)... | 1.0 | +| test.c:547:32:547:33 | 32 | 1.0 | | test.c:547:32:547:33 | (unsigned int)... | 1.0 | -| test.c:548:17:548:18 | 14 | 1.0 | -| test.c:548:17:548:18 | (unsigned int)... | 1.0 | -| test.c:548:17:548:29 | ... * ... | 1.20783397E8 | -| test.c:548:17:548:39 | ... > ... | 1.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 1.4588628990859608E16 | -| test.c:548:22:548:29 | (...) | 1.20783397E8 | -| test.c:548:23:548:23 | 2 | 1.0 | -| test.c:548:23:548:23 | (unsigned int)... | 1.0 | -| test.c:548:23:548:28 | ... * ... | 1.20783397E8 | -| test.c:548:27:548:28 | ip | 1.20783397E8 | -| test.c:548:33:548:34 | 17 | 1.0 | -| test.c:548:33:548:34 | (unsigned int)... | 1.0 | -| test.c:548:33:548:39 | ... * ... | 1.20783397E8 | -| test.c:548:38:548:39 | ip | 1.20783397E8 | -| test.c:549:19:549:20 | 14 | 1.0 | -| test.c:549:19:549:20 | (unsigned int)... | 1.0 | -| test.c:549:19:549:31 | ... * ... | 1.20783397E8 | -| test.c:549:24:549:31 | (...) | 1.20783397E8 | -| test.c:549:25:549:25 | 2 | 1.0 | -| test.c:549:25:549:25 | (unsigned int)... | 1.0 | -| test.c:549:25:549:30 | ... * ... | 1.20783397E8 | -| test.c:549:29:549:30 | ip | 1.20783397E8 | -| test.c:550:19:550:20 | 14 | 1.0 | -| test.c:550:19:550:20 | (unsigned int)... | 1.0 | -| test.c:550:19:550:25 | ... * ... | 1.20783397E8 | -| test.c:550:24:550:25 | ip | 1.20783397E8 | -| test.c:551:11:551:61 | (...) | 1.3129766091773648E17 | -| test.c:551:12:551:13 | 14 | 1.0 | -| test.c:551:12:551:13 | (unsigned int)... | 1.0 | -| test.c:551:12:551:18 | ... * ... | 3.62350191E8 | -| test.c:551:12:551:34 | ... > ... | 1.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 1.3129766091773648E17 | -| test.c:551:17:551:18 | ip | 3.62350191E8 | -| test.c:551:22:551:29 | (...) | 3.62350191E8 | -| test.c:551:22:551:34 | ... * ... | 3.62350191E8 | -| test.c:551:23:551:24 | ip | 3.62350191E8 | -| test.c:551:23:551:28 | ... + ... | 3.62350191E8 | -| test.c:551:28:551:28 | 1 | 1.0 | -| test.c:551:28:551:28 | (unsigned int)... | 1.0 | -| test.c:551:33:551:34 | 17 | 1.0 | -| test.c:551:33:551:34 | (unsigned int)... | 1.0 | -| test.c:551:38:551:39 | 17 | 1.0 | -| test.c:551:38:551:39 | (unsigned int)... | 1.0 | -| test.c:551:38:551:44 | ... * ... | 3.62350191E8 | -| test.c:551:43:551:44 | ip | 3.62350191E8 | -| test.c:551:48:551:55 | (...) | 3.62350191E8 | -| test.c:551:48:551:60 | ... * ... | 3.62350191E8 | -| test.c:551:49:551:50 | ip | 3.62350191E8 | -| test.c:551:49:551:54 | ... + ... | 3.62350191E8 | -| test.c:551:54:551:54 | 1 | 1.0 | -| test.c:551:54:551:54 | (unsigned int)... | 1.0 | -| test.c:551:59:551:60 | 17 | 1.0 | -| test.c:551:59:551:60 | (unsigned int)... | 1.0 | -| test.c:552:15:552:15 | 4 | 1.0 | -| test.c:552:15:552:15 | (unsigned int)... | 1.0 | -| test.c:552:15:552:32 | ... * ... | 7.24700382E8 | -| test.c:552:15:553:32 | ... + ... | 5.251906436709459E17 | -| test.c:552:15:554:32 | ... + ... | 3.806058600911604E26 | -| test.c:552:15:560:28 | ... + ... | 1.1588865682845433E54 | -| test.c:552:19:552:32 | (...) | 7.24700382E8 | -| test.c:552:20:552:21 | ip | 7.24700382E8 | -| test.c:552:20:552:26 | ... * ... | 7.24700382E8 | -| test.c:552:20:552:31 | ... + ... | 7.24700382E8 | -| test.c:552:25:552:26 | 14 | 1.0 | -| test.c:552:25:552:26 | (unsigned int)... | 1.0 | -| test.c:552:30:552:31 | 32 | 1.0 | -| test.c:552:30:552:31 | (unsigned int)... | 1.0 | -| test.c:553:15:553:32 | (...) | 7.24700382E8 | -| test.c:553:16:553:16 | 2 | 1.0 | -| test.c:553:16:553:16 | (unsigned int)... | 1.0 | -| test.c:553:16:553:21 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:26 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:31 | ... + ... | 7.24700382E8 | -| test.c:553:20:553:21 | ip | 7.24700382E8 | -| test.c:553:25:553:26 | 14 | 1.0 | -| test.c:553:25:553:26 | (unsigned int)... | 1.0 | -| test.c:553:30:553:31 | 32 | 1.0 | -| test.c:553:30:553:31 | (unsigned int)... | 1.0 | -| test.c:554:15:554:15 | 2 | 1.0 | -| test.c:554:15:554:15 | (unsigned int)... | 1.0 | -| test.c:554:15:554:32 | ... * ... | 7.24700382E8 | -| test.c:554:19:554:32 | (...) | 7.24700382E8 | -| test.c:554:20:554:21 | ip | 7.24700382E8 | -| test.c:554:20:554:26 | ... * ... | 7.24700382E8 | -| test.c:554:20:554:31 | ... + ... | 7.24700382E8 | -| test.c:554:25:554:26 | 14 | 1.0 | -| test.c:554:25:554:26 | (unsigned int)... | 1.0 | -| test.c:554:30:554:31 | 64 | 1.0 | -| test.c:554:30:554:31 | (unsigned int)... | 1.0 | -| test.c:555:15:560:28 | (...) | 3.044846887031571E27 | -| test.c:555:16:555:27 | (...) | 7.24700382E8 | -| test.c:555:16:555:32 | ... * ... | 7.24700382E8 | -| test.c:555:16:556:65 | ... > ... | 1.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 3.044846887031571E27 | -| test.c:555:17:555:17 | 2 | 1.0 | -| test.c:555:17:555:17 | (unsigned int)... | 1.0 | -| test.c:555:17:555:22 | ... * ... | 7.24700382E8 | -| test.c:555:17:555:26 | ... + ... | 7.24700382E8 | -| test.c:555:21:555:22 | ip | 7.24700382E8 | -| test.c:555:26:555:26 | 1 | 1.0 | -| test.c:555:26:555:26 | (unsigned int)... | 1.0 | -| test.c:555:31:555:32 | 14 | 1.0 | -| test.c:555:31:555:32 | (unsigned int)... | 1.0 | -| test.c:556:15:556:65 | (...) | 5.251906436709459E17 | -| test.c:556:16:556:17 | 14 | 1.0 | -| test.c:556:16:556:17 | (unsigned int)... | 1.0 | -| test.c:556:16:556:28 | ... * ... | 7.24700382E8 | -| test.c:556:16:556:38 | ... > ... | 1.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:556:21:556:28 | (...) | 7.24700382E8 | -| test.c:556:22:556:22 | 2 | 1.0 | -| test.c:556:22:556:22 | (unsigned int)... | 1.0 | -| test.c:556:22:556:27 | ... * ... | 7.24700382E8 | -| test.c:556:26:556:27 | ip | 7.24700382E8 | -| test.c:556:32:556:33 | 17 | 1.0 | -| test.c:556:32:556:33 | (unsigned int)... | 1.0 | -| test.c:556:32:556:38 | ... * ... | 7.24700382E8 | -| test.c:556:37:556:38 | ip | 7.24700382E8 | -| test.c:556:42:556:43 | 17 | 1.0 | -| test.c:556:42:556:43 | (unsigned int)... | 1.0 | -| test.c:556:42:556:54 | ... * ... | 7.24700382E8 | -| test.c:556:47:556:54 | (...) | 7.24700382E8 | -| test.c:556:48:556:48 | 2 | 1.0 | -| test.c:556:48:556:48 | (unsigned int)... | 1.0 | -| test.c:556:48:556:53 | ... * ... | 7.24700382E8 | -| test.c:556:52:556:53 | ip | 7.24700382E8 | -| test.c:556:58:556:59 | 17 | 1.0 | -| test.c:556:58:556:59 | (unsigned int)... | 1.0 | -| test.c:556:58:556:64 | ... * ... | 7.24700382E8 | -| test.c:556:63:556:64 | ip | 7.24700382E8 | -| test.c:557:19:557:30 | (...) | 1.449400765E9 | -| test.c:557:19:557:35 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:20 | 2 | 1.0 | -| test.c:557:20:557:20 | (unsigned int)... | 1.0 | -| test.c:557:20:557:25 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:29 | ... + ... | 1.449400765E9 | -| test.c:557:24:557:25 | ip | 1.449400765E9 | -| test.c:557:29:557:29 | 1 | 1.0 | -| test.c:557:29:557:29 | (unsigned int)... | 1.0 | -| test.c:557:34:557:35 | 14 | 1.0 | -| test.c:557:34:557:35 | (unsigned int)... | 1.0 | -| test.c:558:19:558:20 | 14 | 1.0 | -| test.c:558:19:558:20 | (unsigned int)... | 1.0 | -| test.c:558:19:558:31 | ... * ... | 1.449400765E9 | -| test.c:558:19:558:41 | ... > ... | 1.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 2.1007625775825853E18 | -| test.c:558:24:558:31 | (...) | 1.449400765E9 | -| test.c:558:25:558:25 | 2 | 1.0 | -| test.c:558:25:558:25 | (unsigned int)... | 1.0 | -| test.c:558:25:558:30 | ... * ... | 1.449400765E9 | -| test.c:558:29:558:30 | ip | 1.449400765E9 | -| test.c:558:35:558:36 | 17 | 1.0 | -| test.c:558:35:558:36 | (unsigned int)... | 1.0 | -| test.c:558:35:558:41 | ... * ... | 1.449400765E9 | -| test.c:558:40:558:41 | ip | 1.449400765E9 | -| test.c:559:21:559:22 | 14 | 1.0 | -| test.c:559:21:559:22 | (unsigned int)... | 1.0 | -| test.c:559:21:559:33 | ... * ... | 1.449400765E9 | -| test.c:559:26:559:33 | (...) | 1.449400765E9 | -| test.c:559:27:559:27 | 2 | 1.0 | -| test.c:559:27:559:27 | (unsigned int)... | 1.0 | -| test.c:559:27:559:32 | ... * ... | 1.449400765E9 | -| test.c:559:31:559:32 | ip | 1.449400765E9 | -| test.c:560:21:560:22 | 14 | 1.0 | -| test.c:560:21:560:22 | (unsigned int)... | 1.0 | -| test.c:560:21:560:27 | ... * ... | 1.449400765E9 | -| test.c:560:26:560:27 | ip | 1.449400765E9 | -| test.c:561:15:561:16 | 14 | 1.0 | -| test.c:561:15:561:16 | (unsigned int)... | 1.0 | -| test.c:561:15:561:21 | ... * ... | 7.24700382E8 | -| test.c:561:15:561:37 | ... > ... | 1.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:561:20:561:21 | ip | 7.24700382E8 | -| test.c:561:25:561:32 | (...) | 7.24700382E8 | -| test.c:561:25:561:37 | ... * ... | 7.24700382E8 | -| test.c:561:26:561:27 | ip | 7.24700382E8 | -| test.c:561:26:561:31 | ... + ... | 7.24700382E8 | -| test.c:561:31:561:31 | 1 | 1.0 | -| test.c:561:31:561:31 | (unsigned int)... | 1.0 | -| test.c:561:36:561:37 | 17 | 1.0 | -| test.c:561:36:561:37 | (unsigned int)... | 1.0 | -| test.c:562:17:562:18 | 14 | 1.0 | -| test.c:562:17:562:18 | (unsigned int)... | 1.0 | -| test.c:562:17:562:23 | ... * ... | 7.24700382E8 | -| test.c:562:22:562:23 | ip | 7.24700382E8 | -| test.c:563:17:563:24 | (...) | 7.24700382E8 | -| test.c:563:17:563:29 | ... * ... | 7.24700382E8 | -| test.c:563:18:563:19 | ip | 7.24700382E8 | -| test.c:563:18:563:23 | ... + ... | 7.24700382E8 | -| test.c:563:23:563:23 | 1 | 1.0 | +| test.c:548:17:548:34 | (...) | 8627385.0 | +| test.c:548:18:548:18 | 2 | 1.0 | +| test.c:548:18:548:18 | (unsigned int)... | 1.0 | +| test.c:548:18:548:23 | ... * ... | 8627385.0 | +| test.c:548:18:548:28 | ... * ... | 8627385.0 | +| test.c:548:18:548:33 | ... + ... | 8627385.0 | +| test.c:548:22:548:23 | ip | 8627385.0 | +| test.c:548:27:548:28 | 14 | 1.0 | +| test.c:548:27:548:28 | (unsigned int)... | 1.0 | +| test.c:548:32:548:33 | 32 | 1.0 | +| test.c:548:32:548:33 | (unsigned int)... | 1.0 | +| test.c:549:17:549:17 | 2 | 1.0 | +| test.c:549:17:549:17 | (unsigned int)... | 1.0 | +| test.c:549:17:549:34 | ... * ... | 8627385.0 | +| test.c:549:21:549:34 | (...) | 8627385.0 | +| test.c:549:22:549:23 | ip | 8627385.0 | +| test.c:549:22:549:28 | ... * ... | 8627385.0 | +| test.c:549:22:549:33 | ... + ... | 8627385.0 | +| test.c:549:27:549:28 | 14 | 1.0 | +| test.c:549:27:549:28 | (unsigned int)... | 1.0 | +| test.c:549:32:549:33 | 64 | 1.0 | +| test.c:549:32:549:33 | (unsigned int)... | 1.0 | +| test.c:550:17:555:30 | (...) | 5.137213315127421E21 | +| test.c:550:18:550:29 | (...) | 8627385.0 | +| test.c:550:18:550:34 | ... * ... | 8627385.0 | +| test.c:550:18:551:67 | ... > ... | 1.0 | +| test.c:550:18:555:29 | ... ? ... : ... | 5.137213315127421E21 | +| test.c:550:19:550:19 | 2 | 1.0 | +| test.c:550:19:550:19 | (unsigned int)... | 1.0 | +| test.c:550:19:550:24 | ... * ... | 8627385.0 | +| test.c:550:19:550:28 | ... + ... | 8627385.0 | +| test.c:550:23:550:24 | ip | 8627385.0 | +| test.c:550:28:550:28 | 1 | 1.0 | +| test.c:550:28:550:28 | (unsigned int)... | 1.0 | +| test.c:550:33:550:34 | 14 | 1.0 | +| test.c:550:33:550:34 | (unsigned int)... | 1.0 | +| test.c:551:17:551:67 | (...) | 7.4431771938225E13 | +| test.c:551:18:551:19 | 14 | 1.0 | +| test.c:551:18:551:19 | (unsigned int)... | 1.0 | +| test.c:551:18:551:30 | ... * ... | 8627385.0 | +| test.c:551:18:551:40 | ... > ... | 1.0 | +| test.c:551:18:551:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:551:23:551:30 | (...) | 8627385.0 | +| test.c:551:24:551:24 | 2 | 1.0 | +| test.c:551:24:551:24 | (unsigned int)... | 1.0 | +| test.c:551:24:551:29 | ... * ... | 8627385.0 | +| test.c:551:28:551:29 | ip | 8627385.0 | +| test.c:551:34:551:35 | 17 | 1.0 | +| test.c:551:34:551:35 | (unsigned int)... | 1.0 | +| test.c:551:34:551:40 | ... * ... | 8627385.0 | +| test.c:551:39:551:40 | ip | 8627385.0 | +| test.c:551:44:551:45 | 17 | 1.0 | +| test.c:551:44:551:45 | (unsigned int)... | 1.0 | +| test.c:551:44:551:56 | ... * ... | 8627385.0 | +| test.c:551:49:551:56 | (...) | 8627385.0 | +| test.c:551:50:551:50 | 2 | 1.0 | +| test.c:551:50:551:50 | (unsigned int)... | 1.0 | +| test.c:551:50:551:55 | ... * ... | 8627385.0 | +| test.c:551:54:551:55 | ip | 8627385.0 | +| test.c:551:60:551:61 | 17 | 1.0 | +| test.c:551:60:551:61 | (unsigned int)... | 1.0 | +| test.c:551:60:551:66 | ... * ... | 8627385.0 | +| test.c:551:65:551:66 | ip | 8627385.0 | +| test.c:552:21:552:32 | (...) | 1.7254771E7 | +| test.c:552:21:552:37 | ... * ... | 1.7254771E7 | +| test.c:552:22:552:22 | 2 | 1.0 | +| test.c:552:22:552:22 | (unsigned int)... | 1.0 | +| test.c:552:22:552:27 | ... * ... | 1.7254771E7 | +| test.c:552:22:552:31 | ... + ... | 1.7254771E7 | +| test.c:552:26:552:27 | ip | 1.7254771E7 | +| test.c:552:31:552:31 | 1 | 1.0 | +| test.c:552:31:552:31 | (unsigned int)... | 1.0 | +| test.c:552:36:552:37 | 14 | 1.0 | +| test.c:552:36:552:37 | (unsigned int)... | 1.0 | +| test.c:553:21:553:22 | 14 | 1.0 | +| test.c:553:21:553:22 | (unsigned int)... | 1.0 | +| test.c:553:21:553:33 | ... * ... | 1.7254771E7 | +| test.c:553:21:553:43 | ... > ... | 1.0 | +| test.c:553:21:555:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:553:26:553:33 | (...) | 1.7254771E7 | +| test.c:553:27:553:27 | 2 | 1.0 | +| test.c:553:27:553:27 | (unsigned int)... | 1.0 | +| test.c:553:27:553:32 | ... * ... | 1.7254771E7 | +| test.c:553:31:553:32 | ip | 1.7254771E7 | +| test.c:553:37:553:38 | 17 | 1.0 | +| test.c:553:37:553:38 | (unsigned int)... | 1.0 | +| test.c:553:37:553:43 | ... * ... | 1.7254771E7 | +| test.c:553:42:553:43 | ip | 1.7254771E7 | +| test.c:554:23:554:24 | 14 | 1.0 | +| test.c:554:23:554:24 | (unsigned int)... | 1.0 | +| test.c:554:23:554:35 | ... * ... | 1.7254771E7 | +| test.c:554:28:554:35 | (...) | 1.7254771E7 | +| test.c:554:29:554:29 | 2 | 1.0 | +| test.c:554:29:554:29 | (unsigned int)... | 1.0 | +| test.c:554:29:554:34 | ... * ... | 1.7254771E7 | +| test.c:554:33:554:34 | ip | 1.7254771E7 | +| test.c:555:23:555:24 | 14 | 1.0 | +| test.c:555:23:555:24 | (unsigned int)... | 1.0 | +| test.c:555:23:555:29 | ... * ... | 1.7254771E7 | +| test.c:555:28:555:29 | ip | 1.7254771E7 | +| test.c:556:17:556:17 | 2 | 1.0 | +| test.c:556:17:556:17 | (unsigned int)... | 1.0 | +| test.c:556:17:556:22 | ... * ... | 8627385.0 | +| test.c:556:17:556:27 | ... * ... | 8627385.0 | +| test.c:556:17:556:47 | ... + ... | 7.4431771938225E13 | +| test.c:556:21:556:22 | ip | 8627385.0 | +| test.c:556:26:556:27 | 14 | 1.0 | +| test.c:556:26:556:27 | (unsigned int)... | 1.0 | +| test.c:556:31:556:42 | (...) | 8627385.0 | +| test.c:556:31:556:47 | ... * ... | 8627385.0 | +| test.c:556:32:556:32 | 2 | 1.0 | +| test.c:556:32:556:32 | (unsigned int)... | 1.0 | +| test.c:556:32:556:37 | ... * ... | 8627385.0 | +| test.c:556:32:556:41 | ... + ... | 8627385.0 | +| test.c:556:36:556:37 | ip | 8627385.0 | +| test.c:556:41:556:41 | 1 | 1.0 | +| test.c:556:41:556:41 | (unsigned int)... | 1.0 | +| test.c:556:46:556:47 | 17 | 1.0 | +| test.c:556:46:556:47 | (unsigned int)... | 1.0 | +| test.c:557:11:578:30 | (...) | 6.08636382738973E71 | +| test.c:557:12:557:12 | 4 | 1.0 | +| test.c:557:12:557:12 | (unsigned int)... | 1.0 | +| test.c:557:12:557:29 | ... * ... | 6.0391698E7 | +| test.c:557:12:558:30 | ... + ... | 3.647157187323204E15 | +| test.c:557:12:559:30 | ... + ... | 2.2025801541535236E23 | +| test.c:557:12:565:26 | ... + ... | 3.881087564774641E47 | +| test.c:557:12:566:61 | ... > ... | 1.0 | +| test.c:557:12:578:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:557:16:557:29 | (...) | 6.0391698E7 | +| test.c:557:17:557:18 | ip | 6.0391698E7 | +| test.c:557:17:557:23 | ... * ... | 6.0391698E7 | +| test.c:557:17:557:28 | ... + ... | 6.0391698E7 | +| test.c:557:22:557:23 | 14 | 1.0 | +| test.c:557:22:557:23 | (unsigned int)... | 1.0 | +| test.c:557:27:557:28 | 32 | 1.0 | +| test.c:557:27:557:28 | (unsigned int)... | 1.0 | +| test.c:558:13:558:30 | (...) | 6.0391698E7 | +| test.c:558:14:558:14 | 2 | 1.0 | +| test.c:558:14:558:14 | (unsigned int)... | 1.0 | +| test.c:558:14:558:19 | ... * ... | 6.0391698E7 | +| test.c:558:14:558:24 | ... * ... | 6.0391698E7 | +| test.c:558:14:558:29 | ... + ... | 6.0391698E7 | +| test.c:558:18:558:19 | ip | 6.0391698E7 | +| test.c:558:23:558:24 | 14 | 1.0 | +| test.c:558:23:558:24 | (unsigned int)... | 1.0 | +| test.c:558:28:558:29 | 32 | 1.0 | +| test.c:558:28:558:29 | (unsigned int)... | 1.0 | +| test.c:559:13:559:13 | 2 | 1.0 | +| test.c:559:13:559:13 | (unsigned int)... | 1.0 | +| test.c:559:13:559:30 | ... * ... | 6.0391698E7 | +| test.c:559:17:559:30 | (...) | 6.0391698E7 | +| test.c:559:18:559:19 | ip | 6.0391698E7 | +| test.c:559:18:559:24 | ... * ... | 6.0391698E7 | +| test.c:559:18:559:29 | ... + ... | 6.0391698E7 | +| test.c:559:23:559:24 | 14 | 1.0 | +| test.c:559:23:559:24 | (unsigned int)... | 1.0 | +| test.c:559:28:559:29 | 64 | 1.0 | +| test.c:559:28:559:29 | (unsigned int)... | 1.0 | +| test.c:560:13:565:26 | (...) | 1.7620641670887053E24 | +| test.c:560:14:560:25 | (...) | 6.0391698E7 | +| test.c:560:14:560:30 | ... * ... | 6.0391698E7 | +| test.c:560:14:561:63 | ... > ... | 1.0 | +| test.c:560:14:565:25 | ... ? ... : ... | 1.7620641670887053E24 | +| test.c:560:15:560:15 | 2 | 1.0 | +| test.c:560:15:560:15 | (unsigned int)... | 1.0 | +| test.c:560:15:560:20 | ... * ... | 6.0391698E7 | +| test.c:560:15:560:24 | ... + ... | 6.0391698E7 | +| test.c:560:19:560:20 | ip | 6.0391698E7 | +| test.c:560:24:560:24 | 1 | 1.0 | +| test.c:560:24:560:24 | (unsigned int)... | 1.0 | +| test.c:560:29:560:30 | 14 | 1.0 | +| test.c:560:29:560:30 | (unsigned int)... | 1.0 | +| test.c:561:13:561:63 | (...) | 3.647157187323204E15 | +| test.c:561:14:561:15 | 14 | 1.0 | +| test.c:561:14:561:15 | (unsigned int)... | 1.0 | +| test.c:561:14:561:26 | ... * ... | 6.0391698E7 | +| test.c:561:14:561:36 | ... > ... | 1.0 | +| test.c:561:14:561:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:561:19:561:26 | (...) | 6.0391698E7 | +| test.c:561:20:561:20 | 2 | 1.0 | +| test.c:561:20:561:20 | (unsigned int)... | 1.0 | +| test.c:561:20:561:25 | ... * ... | 6.0391698E7 | +| test.c:561:24:561:25 | ip | 6.0391698E7 | +| test.c:561:30:561:31 | 17 | 1.0 | +| test.c:561:30:561:31 | (unsigned int)... | 1.0 | +| test.c:561:30:561:36 | ... * ... | 6.0391698E7 | +| test.c:561:35:561:36 | ip | 6.0391698E7 | +| test.c:561:40:561:41 | 17 | 1.0 | +| test.c:561:40:561:41 | (unsigned int)... | 1.0 | +| test.c:561:40:561:52 | ... * ... | 6.0391698E7 | +| test.c:561:45:561:52 | (...) | 6.0391698E7 | +| test.c:561:46:561:46 | 2 | 1.0 | +| test.c:561:46:561:46 | (unsigned int)... | 1.0 | +| test.c:561:46:561:51 | ... * ... | 6.0391698E7 | +| test.c:561:50:561:51 | ip | 6.0391698E7 | +| test.c:561:56:561:57 | 17 | 1.0 | +| test.c:561:56:561:57 | (unsigned int)... | 1.0 | +| test.c:561:56:561:62 | ... * ... | 6.0391698E7 | +| test.c:561:61:561:62 | ip | 6.0391698E7 | +| test.c:562:17:562:28 | (...) | 1.20783397E8 | +| test.c:562:17:562:33 | ... * ... | 1.20783397E8 | +| test.c:562:18:562:18 | 2 | 1.0 | +| test.c:562:18:562:18 | (unsigned int)... | 1.0 | +| test.c:562:18:562:23 | ... * ... | 1.20783397E8 | +| test.c:562:18:562:27 | ... + ... | 1.20783397E8 | +| test.c:562:22:562:23 | ip | 1.20783397E8 | +| test.c:562:27:562:27 | 1 | 1.0 | +| test.c:562:27:562:27 | (unsigned int)... | 1.0 | +| test.c:562:32:562:33 | 14 | 1.0 | +| test.c:562:32:562:33 | (unsigned int)... | 1.0 | +| test.c:563:17:563:18 | 14 | 1.0 | +| test.c:563:17:563:18 | (unsigned int)... | 1.0 | +| test.c:563:17:563:29 | ... * ... | 1.20783397E8 | +| test.c:563:17:563:39 | ... > ... | 1.0 | +| test.c:563:17:565:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:563:22:563:29 | (...) | 1.20783397E8 | +| test.c:563:23:563:23 | 2 | 1.0 | | test.c:563:23:563:23 | (unsigned int)... | 1.0 | -| test.c:563:28:563:29 | 14 | 1.0 | -| test.c:563:28:563:29 | (unsigned int)... | 1.0 | -| test.c:564:11:564:11 | 2 | 1.0 | -| test.c:564:11:564:11 | (unsigned int)... | 1.0 | -| test.c:564:11:564:28 | ... * ... | 5.797603059E9 | -| test.c:564:11:584:46 | ... + ... | 9.943431528813442E94 | -| test.c:564:15:564:28 | (...) | 5.797603059E9 | -| test.c:564:16:564:17 | ip | 5.797603059E9 | -| test.c:564:16:564:22 | ... * ... | 5.797603059E9 | -| test.c:564:16:564:27 | ... + ... | 5.797603059E9 | -| test.c:564:21:564:22 | 14 | 1.0 | -| test.c:564:21:564:22 | (unsigned int)... | 1.0 | -| test.c:564:26:564:27 | 32 | 1.0 | -| test.c:564:26:564:27 | (unsigned int)... | 1.0 | -| test.c:565:11:584:46 | (...) | 1.715093535659983E85 | -| test.c:565:12:565:12 | 4 | 1.0 | -| test.c:565:12:565:12 | (unsigned int)... | 1.0 | -| test.c:565:12:565:29 | ... * ... | 5.797603059E9 | -| test.c:565:12:566:30 | ... + ... | 3.361220122972616E19 | -| test.c:565:12:567:30 | ... + ... | 1.9487020066918396E29 | -| test.c:565:12:573:26 | ... + ... | 3.0379516094938436E59 | -| test.c:565:12:574:41 | ... > ... | 1.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 1.715093535659983E85 | -| test.c:565:16:565:29 | (...) | 5.797603059E9 | -| test.c:565:17:565:18 | ip | 5.797603059E9 | -| test.c:565:17:565:23 | ... * ... | 5.797603059E9 | -| test.c:565:17:565:28 | ... + ... | 5.797603059E9 | -| test.c:565:22:565:23 | 14 | 1.0 | -| test.c:565:22:565:23 | (unsigned int)... | 1.0 | -| test.c:565:27:565:28 | 32 | 1.0 | -| test.c:565:27:565:28 | (unsigned int)... | 1.0 | -| test.c:566:13:566:30 | (...) | 5.797603059E9 | -| test.c:566:14:566:14 | 2 | 1.0 | -| test.c:566:14:566:14 | (unsigned int)... | 1.0 | -| test.c:566:14:566:19 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:24 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:29 | ... + ... | 5.797603059E9 | -| test.c:566:18:566:19 | ip | 5.797603059E9 | -| test.c:566:23:566:24 | 14 | 1.0 | -| test.c:566:23:566:24 | (unsigned int)... | 1.0 | -| test.c:566:28:566:29 | 32 | 1.0 | -| test.c:566:28:566:29 | (unsigned int)... | 1.0 | -| test.c:567:13:567:13 | 2 | 1.0 | -| test.c:567:13:567:13 | (unsigned int)... | 1.0 | -| test.c:567:13:567:30 | ... * ... | 5.797603059E9 | -| test.c:567:17:567:30 | (...) | 5.797603059E9 | -| test.c:567:18:567:19 | ip | 5.797603059E9 | -| test.c:567:18:567:24 | ... * ... | 5.797603059E9 | -| test.c:567:18:567:29 | ... + ... | 5.797603059E9 | -| test.c:567:23:567:24 | 14 | 1.0 | -| test.c:567:23:567:24 | (unsigned int)... | 1.0 | -| test.c:567:28:567:29 | 64 | 1.0 | -| test.c:567:28:567:29 | (unsigned int)... | 1.0 | -| test.c:568:13:573:26 | (...) | 1.558961605756818E30 | -| test.c:568:14:568:25 | (...) | 5.797603059E9 | -| test.c:568:14:568:30 | ... * ... | 5.797603059E9 | -| test.c:568:14:569:63 | ... > ... | 1.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:568:15:568:15 | 2 | 1.0 | -| test.c:568:15:568:15 | (unsigned int)... | 1.0 | -| test.c:568:15:568:20 | ... * ... | 5.797603059E9 | -| test.c:568:15:568:24 | ... + ... | 5.797603059E9 | -| test.c:568:19:568:20 | ip | 5.797603059E9 | -| test.c:568:24:568:24 | 1 | 1.0 | -| test.c:568:24:568:24 | (unsigned int)... | 1.0 | -| test.c:568:29:568:30 | 14 | 1.0 | -| test.c:568:29:568:30 | (unsigned int)... | 1.0 | -| test.c:569:13:569:63 | (...) | 3.361220122972616E19 | -| test.c:569:14:569:15 | 14 | 1.0 | -| test.c:569:14:569:15 | (unsigned int)... | 1.0 | -| test.c:569:14:569:26 | ... * ... | 5.797603059E9 | -| test.c:569:14:569:36 | ... > ... | 1.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:569:19:569:26 | (...) | 5.797603059E9 | -| test.c:569:20:569:20 | 2 | 1.0 | -| test.c:569:20:569:20 | (unsigned int)... | 1.0 | -| test.c:569:20:569:25 | ... * ... | 5.797603059E9 | -| test.c:569:24:569:25 | ip | 5.797603059E9 | -| test.c:569:30:569:31 | 17 | 1.0 | +| test.c:563:23:563:28 | ... * ... | 1.20783397E8 | +| test.c:563:27:563:28 | ip | 1.20783397E8 | +| test.c:563:33:563:34 | 17 | 1.0 | +| test.c:563:33:563:34 | (unsigned int)... | 1.0 | +| test.c:563:33:563:39 | ... * ... | 1.20783397E8 | +| test.c:563:38:563:39 | ip | 1.20783397E8 | +| test.c:564:19:564:20 | 14 | 1.0 | +| test.c:564:19:564:20 | (unsigned int)... | 1.0 | +| test.c:564:19:564:31 | ... * ... | 1.20783397E8 | +| test.c:564:24:564:31 | (...) | 1.20783397E8 | +| test.c:564:25:564:25 | 2 | 1.0 | +| test.c:564:25:564:25 | (unsigned int)... | 1.0 | +| test.c:564:25:564:30 | ... * ... | 1.20783397E8 | +| test.c:564:29:564:30 | ip | 1.20783397E8 | +| test.c:565:19:565:20 | 14 | 1.0 | +| test.c:565:19:565:20 | (unsigned int)... | 1.0 | +| test.c:565:19:565:25 | ... * ... | 1.20783397E8 | +| test.c:565:24:565:25 | ip | 1.20783397E8 | +| test.c:566:11:566:61 | (...) | 1.3129766091773648E17 | +| test.c:566:12:566:13 | 14 | 1.0 | +| test.c:566:12:566:13 | (unsigned int)... | 1.0 | +| test.c:566:12:566:18 | ... * ... | 3.62350191E8 | +| test.c:566:12:566:34 | ... > ... | 1.0 | +| test.c:566:12:566:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:566:17:566:18 | ip | 3.62350191E8 | +| test.c:566:22:566:29 | (...) | 3.62350191E8 | +| test.c:566:22:566:34 | ... * ... | 3.62350191E8 | +| test.c:566:23:566:24 | ip | 3.62350191E8 | +| test.c:566:23:566:28 | ... + ... | 3.62350191E8 | +| test.c:566:28:566:28 | 1 | 1.0 | +| test.c:566:28:566:28 | (unsigned int)... | 1.0 | +| test.c:566:33:566:34 | 17 | 1.0 | +| test.c:566:33:566:34 | (unsigned int)... | 1.0 | +| test.c:566:38:566:39 | 17 | 1.0 | +| test.c:566:38:566:39 | (unsigned int)... | 1.0 | +| test.c:566:38:566:44 | ... * ... | 3.62350191E8 | +| test.c:566:43:566:44 | ip | 3.62350191E8 | +| test.c:566:48:566:55 | (...) | 3.62350191E8 | +| test.c:566:48:566:60 | ... * ... | 3.62350191E8 | +| test.c:566:49:566:50 | ip | 3.62350191E8 | +| test.c:566:49:566:54 | ... + ... | 3.62350191E8 | +| test.c:566:54:566:54 | 1 | 1.0 | +| test.c:566:54:566:54 | (unsigned int)... | 1.0 | +| test.c:566:59:566:60 | 17 | 1.0 | +| test.c:566:59:566:60 | (unsigned int)... | 1.0 | +| test.c:567:15:567:15 | 4 | 1.0 | +| test.c:567:15:567:15 | (unsigned int)... | 1.0 | +| test.c:567:15:567:32 | ... * ... | 7.24700382E8 | +| test.c:567:15:568:32 | ... + ... | 5.251906436709459E17 | +| test.c:567:15:569:32 | ... + ... | 3.806058600911604E26 | +| test.c:567:15:575:28 | ... + ... | 1.1588865682845433E54 | +| test.c:567:19:567:32 | (...) | 7.24700382E8 | +| test.c:567:20:567:21 | ip | 7.24700382E8 | +| test.c:567:20:567:26 | ... * ... | 7.24700382E8 | +| test.c:567:20:567:31 | ... + ... | 7.24700382E8 | +| test.c:567:25:567:26 | 14 | 1.0 | +| test.c:567:25:567:26 | (unsigned int)... | 1.0 | +| test.c:567:30:567:31 | 32 | 1.0 | +| test.c:567:30:567:31 | (unsigned int)... | 1.0 | +| test.c:568:15:568:32 | (...) | 7.24700382E8 | +| test.c:568:16:568:16 | 2 | 1.0 | +| test.c:568:16:568:16 | (unsigned int)... | 1.0 | +| test.c:568:16:568:21 | ... * ... | 7.24700382E8 | +| test.c:568:16:568:26 | ... * ... | 7.24700382E8 | +| test.c:568:16:568:31 | ... + ... | 7.24700382E8 | +| test.c:568:20:568:21 | ip | 7.24700382E8 | +| test.c:568:25:568:26 | 14 | 1.0 | +| test.c:568:25:568:26 | (unsigned int)... | 1.0 | +| test.c:568:30:568:31 | 32 | 1.0 | +| test.c:568:30:568:31 | (unsigned int)... | 1.0 | +| test.c:569:15:569:15 | 2 | 1.0 | +| test.c:569:15:569:15 | (unsigned int)... | 1.0 | +| test.c:569:15:569:32 | ... * ... | 7.24700382E8 | +| test.c:569:19:569:32 | (...) | 7.24700382E8 | +| test.c:569:20:569:21 | ip | 7.24700382E8 | +| test.c:569:20:569:26 | ... * ... | 7.24700382E8 | +| test.c:569:20:569:31 | ... + ... | 7.24700382E8 | +| test.c:569:25:569:26 | 14 | 1.0 | +| test.c:569:25:569:26 | (unsigned int)... | 1.0 | +| test.c:569:30:569:31 | 64 | 1.0 | | test.c:569:30:569:31 | (unsigned int)... | 1.0 | -| test.c:569:30:569:36 | ... * ... | 5.797603059E9 | -| test.c:569:35:569:36 | ip | 5.797603059E9 | -| test.c:569:40:569:41 | 17 | 1.0 | -| test.c:569:40:569:41 | (unsigned int)... | 1.0 | -| test.c:569:40:569:52 | ... * ... | 5.797603059E9 | -| test.c:569:45:569:52 | (...) | 5.797603059E9 | -| test.c:569:46:569:46 | 2 | 1.0 | -| test.c:569:46:569:46 | (unsigned int)... | 1.0 | -| test.c:569:46:569:51 | ... * ... | 5.797603059E9 | -| test.c:569:50:569:51 | ip | 5.797603059E9 | -| test.c:569:56:569:57 | 17 | 1.0 | -| test.c:569:56:569:57 | (unsigned int)... | 1.0 | -| test.c:569:56:569:62 | ... * ... | 5.797603059E9 | -| test.c:569:61:569:62 | ip | 5.797603059E9 | -| test.c:570:17:570:28 | (...) | 1.1595206119E10 | -| test.c:570:17:570:33 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:18 | 2 | 1.0 | -| test.c:570:18:570:18 | (unsigned int)... | 1.0 | -| test.c:570:18:570:23 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:27 | ... + ... | 1.1595206119E10 | -| test.c:570:22:570:23 | ip | 1.1595206119E10 | -| test.c:570:27:570:27 | 1 | 1.0 | -| test.c:570:27:570:27 | (unsigned int)... | 1.0 | -| test.c:570:32:570:33 | 14 | 1.0 | -| test.c:570:32:570:33 | (unsigned int)... | 1.0 | -| test.c:571:17:571:18 | 14 | 1.0 | -| test.c:571:17:571:18 | (unsigned int)... | 1.0 | -| test.c:571:17:571:29 | ... * ... | 1.1595206119E10 | -| test.c:571:17:571:39 | ... > ... | 1.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:571:22:571:29 | (...) | 1.1595206119E10 | -| test.c:571:23:571:23 | 2 | 1.0 | -| test.c:571:23:571:23 | (unsigned int)... | 1.0 | -| test.c:571:23:571:28 | ... * ... | 1.1595206119E10 | -| test.c:571:27:571:28 | ip | 1.1595206119E10 | -| test.c:571:33:571:34 | 17 | 1.0 | -| test.c:571:33:571:34 | (unsigned int)... | 1.0 | -| test.c:571:33:571:39 | ... * ... | 1.1595206119E10 | -| test.c:571:38:571:39 | ip | 1.1595206119E10 | -| test.c:572:19:572:20 | 14 | 1.0 | -| test.c:572:19:572:20 | (unsigned int)... | 1.0 | -| test.c:572:19:572:31 | ... * ... | 1.1595206119E10 | -| test.c:572:24:572:31 | (...) | 1.1595206119E10 | -| test.c:572:25:572:25 | 2 | 1.0 | -| test.c:572:25:572:25 | (unsigned int)... | 1.0 | -| test.c:572:25:572:30 | ... * ... | 1.1595206119E10 | -| test.c:572:29:572:30 | ip | 1.1595206119E10 | +| test.c:570:15:575:28 | (...) | 3.044846887031571E27 | +| test.c:570:16:570:27 | (...) | 7.24700382E8 | +| test.c:570:16:570:32 | ... * ... | 7.24700382E8 | +| test.c:570:16:571:65 | ... > ... | 1.0 | +| test.c:570:16:575:27 | ... ? ... : ... | 3.044846887031571E27 | +| test.c:570:17:570:17 | 2 | 1.0 | +| test.c:570:17:570:17 | (unsigned int)... | 1.0 | +| test.c:570:17:570:22 | ... * ... | 7.24700382E8 | +| test.c:570:17:570:26 | ... + ... | 7.24700382E8 | +| test.c:570:21:570:22 | ip | 7.24700382E8 | +| test.c:570:26:570:26 | 1 | 1.0 | +| test.c:570:26:570:26 | (unsigned int)... | 1.0 | +| test.c:570:31:570:32 | 14 | 1.0 | +| test.c:570:31:570:32 | (unsigned int)... | 1.0 | +| test.c:571:15:571:65 | (...) | 5.251906436709459E17 | +| test.c:571:16:571:17 | 14 | 1.0 | +| test.c:571:16:571:17 | (unsigned int)... | 1.0 | +| test.c:571:16:571:28 | ... * ... | 7.24700382E8 | +| test.c:571:16:571:38 | ... > ... | 1.0 | +| test.c:571:16:571:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:571:21:571:28 | (...) | 7.24700382E8 | +| test.c:571:22:571:22 | 2 | 1.0 | +| test.c:571:22:571:22 | (unsigned int)... | 1.0 | +| test.c:571:22:571:27 | ... * ... | 7.24700382E8 | +| test.c:571:26:571:27 | ip | 7.24700382E8 | +| test.c:571:32:571:33 | 17 | 1.0 | +| test.c:571:32:571:33 | (unsigned int)... | 1.0 | +| test.c:571:32:571:38 | ... * ... | 7.24700382E8 | +| test.c:571:37:571:38 | ip | 7.24700382E8 | +| test.c:571:42:571:43 | 17 | 1.0 | +| test.c:571:42:571:43 | (unsigned int)... | 1.0 | +| test.c:571:42:571:54 | ... * ... | 7.24700382E8 | +| test.c:571:47:571:54 | (...) | 7.24700382E8 | +| test.c:571:48:571:48 | 2 | 1.0 | +| test.c:571:48:571:48 | (unsigned int)... | 1.0 | +| test.c:571:48:571:53 | ... * ... | 7.24700382E8 | +| test.c:571:52:571:53 | ip | 7.24700382E8 | +| test.c:571:58:571:59 | 17 | 1.0 | +| test.c:571:58:571:59 | (unsigned int)... | 1.0 | +| test.c:571:58:571:64 | ... * ... | 7.24700382E8 | +| test.c:571:63:571:64 | ip | 7.24700382E8 | +| test.c:572:19:572:30 | (...) | 1.449400765E9 | +| test.c:572:19:572:35 | ... * ... | 1.449400765E9 | +| test.c:572:20:572:20 | 2 | 1.0 | +| test.c:572:20:572:20 | (unsigned int)... | 1.0 | +| test.c:572:20:572:25 | ... * ... | 1.449400765E9 | +| test.c:572:20:572:29 | ... + ... | 1.449400765E9 | +| test.c:572:24:572:25 | ip | 1.449400765E9 | +| test.c:572:29:572:29 | 1 | 1.0 | +| test.c:572:29:572:29 | (unsigned int)... | 1.0 | +| test.c:572:34:572:35 | 14 | 1.0 | +| test.c:572:34:572:35 | (unsigned int)... | 1.0 | | test.c:573:19:573:20 | 14 | 1.0 | | test.c:573:19:573:20 | (unsigned int)... | 1.0 | -| test.c:573:19:573:25 | ... * ... | 1.1595206119E10 | -| test.c:573:24:573:25 | ip | 1.1595206119E10 | -| test.c:574:11:574:11 | 2 | 1.0 | -| test.c:574:11:574:11 | (unsigned int)... | 1.0 | -| test.c:574:11:574:16 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:21 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:41 | ... + ... | 1.2100392444788552E21 | -| test.c:574:15:574:16 | ip | 3.4785618357E10 | -| test.c:574:20:574:21 | 14 | 1.0 | -| test.c:574:20:574:21 | (unsigned int)... | 1.0 | -| test.c:574:25:574:36 | (...) | 3.4785618357E10 | -| test.c:574:25:574:41 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:26 | 2 | 1.0 | -| test.c:574:26:574:26 | (unsigned int)... | 1.0 | -| test.c:574:26:574:31 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:35 | ... + ... | 3.4785618357E10 | -| test.c:574:30:574:31 | ip | 3.4785618357E10 | -| test.c:574:35:574:35 | 1 | 1.0 | -| test.c:574:35:574:35 | (unsigned int)... | 1.0 | -| test.c:574:40:574:41 | 17 | 1.0 | -| test.c:574:40:574:41 | (unsigned int)... | 1.0 | -| test.c:575:15:575:15 | 4 | 1.0 | -| test.c:575:15:575:15 | (unsigned int)... | 1.0 | -| test.c:575:15:575:32 | ... * ... | 3.4785618357E10 | -| test.c:575:15:576:32 | ... + ... | 1.2100392444788552E21 | -| test.c:575:15:577:32 | ... + ... | 4.209196335543408E31 | -| test.c:575:15:583:28 | ... + ... | 1.417386703353284E64 | -| test.c:575:19:575:32 | (...) | 3.4785618357E10 | -| test.c:575:20:575:21 | ip | 3.4785618357E10 | -| test.c:575:20:575:26 | ... * ... | 3.4785618357E10 | -| test.c:575:20:575:31 | ... + ... | 3.4785618357E10 | -| test.c:575:25:575:26 | 14 | 1.0 | -| test.c:575:25:575:26 | (unsigned int)... | 1.0 | -| test.c:575:30:575:31 | 32 | 1.0 | -| test.c:575:30:575:31 | (unsigned int)... | 1.0 | -| test.c:576:15:576:32 | (...) | 3.4785618357E10 | -| test.c:576:16:576:16 | 2 | 1.0 | -| test.c:576:16:576:16 | (unsigned int)... | 1.0 | -| test.c:576:16:576:21 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:26 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:31 | ... + ... | 3.4785618357E10 | -| test.c:576:20:576:21 | ip | 3.4785618357E10 | -| test.c:576:25:576:26 | 14 | 1.0 | -| test.c:576:25:576:26 | (unsigned int)... | 1.0 | -| test.c:576:30:576:31 | 32 | 1.0 | -| test.c:576:30:576:31 | (unsigned int)... | 1.0 | -| test.c:577:15:577:15 | 2 | 1.0 | -| test.c:577:15:577:15 | (unsigned int)... | 1.0 | -| test.c:577:15:577:32 | ... * ... | 3.4785618357E10 | -| test.c:577:19:577:32 | (...) | 3.4785618357E10 | -| test.c:577:20:577:21 | ip | 3.4785618357E10 | -| test.c:577:20:577:26 | ... * ... | 3.4785618357E10 | -| test.c:577:20:577:31 | ... + ... | 3.4785618357E10 | -| test.c:577:25:577:26 | 14 | 1.0 | -| test.c:577:25:577:26 | (unsigned int)... | 1.0 | -| test.c:577:30:577:31 | 64 | 1.0 | -| test.c:577:30:577:31 | (unsigned int)... | 1.0 | -| test.c:578:15:583:28 | (...) | 3.367357068579931E32 | -| test.c:578:16:578:27 | (...) | 3.4785618357E10 | -| test.c:578:16:578:32 | ... * ... | 3.4785618357E10 | -| test.c:578:16:579:65 | ... > ... | 1.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 3.367357068579931E32 | -| test.c:578:17:578:17 | 2 | 1.0 | -| test.c:578:17:578:17 | (unsigned int)... | 1.0 | -| test.c:578:17:578:22 | ... * ... | 3.4785618357E10 | -| test.c:578:17:578:26 | ... + ... | 3.4785618357E10 | -| test.c:578:21:578:22 | ip | 3.4785618357E10 | -| test.c:578:26:578:26 | 1 | 1.0 | -| test.c:578:26:578:26 | (unsigned int)... | 1.0 | -| test.c:578:31:578:32 | 14 | 1.0 | -| test.c:578:31:578:32 | (unsigned int)... | 1.0 | -| test.c:579:15:579:65 | (...) | 1.2100392444788552E21 | -| test.c:579:16:579:17 | 14 | 1.0 | -| test.c:579:16:579:17 | (unsigned int)... | 1.0 | -| test.c:579:16:579:28 | ... * ... | 3.4785618357E10 | -| test.c:579:16:579:38 | ... > ... | 1.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:579:21:579:28 | (...) | 3.4785618357E10 | -| test.c:579:22:579:22 | 2 | 1.0 | -| test.c:579:22:579:22 | (unsigned int)... | 1.0 | -| test.c:579:22:579:27 | ... * ... | 3.4785618357E10 | -| test.c:579:26:579:27 | ip | 3.4785618357E10 | -| test.c:579:32:579:33 | 17 | 1.0 | -| test.c:579:32:579:33 | (unsigned int)... | 1.0 | -| test.c:579:32:579:38 | ... * ... | 3.4785618357E10 | -| test.c:579:37:579:38 | ip | 3.4785618357E10 | -| test.c:579:42:579:43 | 17 | 1.0 | -| test.c:579:42:579:43 | (unsigned int)... | 1.0 | -| test.c:579:42:579:54 | ... * ... | 3.4785618357E10 | -| test.c:579:47:579:54 | (...) | 3.4785618357E10 | -| test.c:579:48:579:48 | 2 | 1.0 | -| test.c:579:48:579:48 | (unsigned int)... | 1.0 | -| test.c:579:48:579:53 | ... * ... | 3.4785618357E10 | -| test.c:579:52:579:53 | ip | 3.4785618357E10 | -| test.c:579:58:579:59 | 17 | 1.0 | -| test.c:579:58:579:59 | (unsigned int)... | 1.0 | -| test.c:579:58:579:64 | ... * ... | 3.4785618357E10 | -| test.c:579:63:579:64 | ip | 3.4785618357E10 | -| test.c:580:19:580:30 | (...) | 6.9571236715E10 | -| test.c:580:19:580:35 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:20 | 2 | 1.0 | -| test.c:580:20:580:20 | (unsigned int)... | 1.0 | -| test.c:580:20:580:25 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:29 | ... + ... | 6.9571236715E10 | -| test.c:580:24:580:25 | ip | 6.9571236715E10 | -| test.c:580:29:580:29 | 1 | 1.0 | -| test.c:580:29:580:29 | (unsigned int)... | 1.0 | -| test.c:580:34:580:35 | 14 | 1.0 | -| test.c:580:34:580:35 | (unsigned int)... | 1.0 | -| test.c:581:19:581:20 | 14 | 1.0 | -| test.c:581:19:581:20 | (unsigned int)... | 1.0 | -| test.c:581:19:581:31 | ... * ... | 6.9571236715E10 | -| test.c:581:19:581:41 | ... > ... | 1.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.840156978054564E21 | -| test.c:581:24:581:31 | (...) | 6.9571236715E10 | -| test.c:581:25:581:25 | 2 | 1.0 | -| test.c:581:25:581:25 | (unsigned int)... | 1.0 | -| test.c:581:25:581:30 | ... * ... | 6.9571236715E10 | -| test.c:581:29:581:30 | ip | 6.9571236715E10 | -| test.c:581:35:581:36 | 17 | 1.0 | -| test.c:581:35:581:36 | (unsigned int)... | 1.0 | -| test.c:581:35:581:41 | ... * ... | 6.9571236715E10 | -| test.c:581:40:581:41 | ip | 6.9571236715E10 | -| test.c:582:21:582:22 | 14 | 1.0 | -| test.c:582:21:582:22 | (unsigned int)... | 1.0 | -| test.c:582:21:582:33 | ... * ... | 6.9571236715E10 | -| test.c:582:26:582:33 | (...) | 6.9571236715E10 | -| test.c:582:27:582:27 | 2 | 1.0 | -| test.c:582:27:582:27 | (unsigned int)... | 1.0 | -| test.c:582:27:582:32 | ... * ... | 6.9571236715E10 | -| test.c:582:31:582:32 | ip | 6.9571236715E10 | -| test.c:583:21:583:22 | 14 | 1.0 | -| test.c:583:21:583:22 | (unsigned int)... | 1.0 | -| test.c:583:21:583:27 | ... * ... | 6.9571236715E10 | -| test.c:583:26:583:27 | ip | 6.9571236715E10 | -| test.c:584:15:584:15 | 2 | 1.0 | -| test.c:584:15:584:15 | (unsigned int)... | 1.0 | -| test.c:584:15:584:20 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:25 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:45 | ... + ... | 1.2100392444788552E21 | -| test.c:584:19:584:20 | ip | 3.4785618357E10 | -| test.c:584:24:584:25 | 14 | 1.0 | -| test.c:584:24:584:25 | (unsigned int)... | 1.0 | -| test.c:584:29:584:40 | (...) | 3.4785618357E10 | -| test.c:584:29:584:45 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:30 | 2 | 1.0 | -| test.c:584:30:584:30 | (unsigned int)... | 1.0 | -| test.c:584:30:584:35 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:39 | ... + ... | 3.4785618357E10 | -| test.c:584:34:584:35 | ip | 3.4785618357E10 | -| test.c:584:39:584:39 | 1 | 1.0 | -| test.c:584:39:584:39 | (unsigned int)... | 1.0 | -| test.c:584:44:584:45 | 17 | 1.0 | -| test.c:584:44:584:45 | (unsigned int)... | 1.0 | -| test.c:585:11:585:11 | 4 | 1.0 | -| test.c:585:11:585:11 | (unsigned int)... | 1.0 | -| test.c:585:11:585:28 | ... * ... | 5.797603059E9 | -| test.c:585:11:586:32 | ... + ... | 3.361220122972616E19 | -| test.c:585:11:587:32 | ... + ... | 1.9487020066918396E29 | -| test.c:585:11:593:28 | ... + ... | 3.0379516094938436E59 | -| test.c:585:11:594:63 | ... > ... | 1.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.390639451194891E87 | -| test.c:585:15:585:28 | (...) | 5.797603059E9 | -| test.c:585:16:585:17 | ip | 5.797603059E9 | -| test.c:585:16:585:22 | ... * ... | 5.797603059E9 | -| test.c:585:16:585:27 | ... + ... | 5.797603059E9 | -| test.c:585:21:585:22 | 14 | 1.0 | -| test.c:585:21:585:22 | (unsigned int)... | 1.0 | -| test.c:585:26:585:27 | 32 | 1.0 | -| test.c:585:26:585:27 | (unsigned int)... | 1.0 | -| test.c:586:15:586:32 | (...) | 5.797603059E9 | -| test.c:586:16:586:16 | 2 | 1.0 | -| test.c:586:16:586:16 | (unsigned int)... | 1.0 | -| test.c:586:16:586:21 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:26 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:31 | ... + ... | 5.797603059E9 | -| test.c:586:20:586:21 | ip | 5.797603059E9 | -| test.c:586:25:586:26 | 14 | 1.0 | -| test.c:586:25:586:26 | (unsigned int)... | 1.0 | -| test.c:586:30:586:31 | 32 | 1.0 | -| test.c:586:30:586:31 | (unsigned int)... | 1.0 | -| test.c:587:15:587:15 | 2 | 1.0 | -| test.c:587:15:587:15 | (unsigned int)... | 1.0 | -| test.c:587:15:587:32 | ... * ... | 5.797603059E9 | -| test.c:587:19:587:32 | (...) | 5.797603059E9 | -| test.c:587:20:587:21 | ip | 5.797603059E9 | -| test.c:587:20:587:26 | ... * ... | 5.797603059E9 | -| test.c:587:20:587:31 | ... + ... | 5.797603059E9 | -| test.c:587:25:587:26 | 14 | 1.0 | -| test.c:587:25:587:26 | (unsigned int)... | 1.0 | -| test.c:587:30:587:31 | 64 | 1.0 | -| test.c:587:30:587:31 | (unsigned int)... | 1.0 | -| test.c:588:15:593:28 | (...) | 1.558961605756818E30 | -| test.c:588:16:588:27 | (...) | 5.797603059E9 | -| test.c:588:16:588:32 | ... * ... | 5.797603059E9 | -| test.c:588:16:589:65 | ... > ... | 1.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:588:17:588:17 | 2 | 1.0 | -| test.c:588:17:588:17 | (unsigned int)... | 1.0 | -| test.c:588:17:588:22 | ... * ... | 5.797603059E9 | -| test.c:588:17:588:26 | ... + ... | 5.797603059E9 | -| test.c:588:21:588:22 | ip | 5.797603059E9 | -| test.c:588:26:588:26 | 1 | 1.0 | -| test.c:588:26:588:26 | (unsigned int)... | 1.0 | -| test.c:588:31:588:32 | 14 | 1.0 | -| test.c:588:31:588:32 | (unsigned int)... | 1.0 | -| test.c:589:15:589:65 | (...) | 3.361220122972616E19 | -| test.c:589:16:589:17 | 14 | 1.0 | -| test.c:589:16:589:17 | (unsigned int)... | 1.0 | -| test.c:589:16:589:28 | ... * ... | 5.797603059E9 | -| test.c:589:16:589:38 | ... > ... | 1.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:589:21:589:28 | (...) | 5.797603059E9 | -| test.c:589:22:589:22 | 2 | 1.0 | -| test.c:589:22:589:22 | (unsigned int)... | 1.0 | -| test.c:589:22:589:27 | ... * ... | 5.797603059E9 | -| test.c:589:26:589:27 | ip | 5.797603059E9 | -| test.c:589:32:589:33 | 17 | 1.0 | -| test.c:589:32:589:33 | (unsigned int)... | 1.0 | -| test.c:589:32:589:38 | ... * ... | 5.797603059E9 | -| test.c:589:37:589:38 | ip | 5.797603059E9 | -| test.c:589:42:589:43 | 17 | 1.0 | -| test.c:589:42:589:43 | (unsigned int)... | 1.0 | -| test.c:589:42:589:54 | ... * ... | 5.797603059E9 | -| test.c:589:47:589:54 | (...) | 5.797603059E9 | -| test.c:589:48:589:48 | 2 | 1.0 | -| test.c:589:48:589:48 | (unsigned int)... | 1.0 | -| test.c:589:48:589:53 | ... * ... | 5.797603059E9 | -| test.c:589:52:589:53 | ip | 5.797603059E9 | -| test.c:589:58:589:59 | 17 | 1.0 | -| test.c:589:58:589:59 | (unsigned int)... | 1.0 | -| test.c:589:58:589:64 | ... * ... | 5.797603059E9 | -| test.c:589:63:589:64 | ip | 5.797603059E9 | -| test.c:590:19:590:30 | (...) | 1.1595206119E10 | -| test.c:590:19:590:35 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:20 | 2 | 1.0 | -| test.c:590:20:590:20 | (unsigned int)... | 1.0 | -| test.c:590:20:590:25 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:29 | ... + ... | 1.1595206119E10 | -| test.c:590:24:590:25 | ip | 1.1595206119E10 | -| test.c:590:29:590:29 | 1 | 1.0 | -| test.c:590:29:590:29 | (unsigned int)... | 1.0 | -| test.c:590:34:590:35 | 14 | 1.0 | -| test.c:590:34:590:35 | (unsigned int)... | 1.0 | -| test.c:591:19:591:20 | 14 | 1.0 | -| test.c:591:19:591:20 | (unsigned int)... | 1.0 | -| test.c:591:19:591:31 | ... * ... | 1.1595206119E10 | -| test.c:591:19:591:41 | ... > ... | 1.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:591:24:591:31 | (...) | 1.1595206119E10 | -| test.c:591:25:591:25 | 2 | 1.0 | -| test.c:591:25:591:25 | (unsigned int)... | 1.0 | -| test.c:591:25:591:30 | ... * ... | 1.1595206119E10 | -| test.c:591:29:591:30 | ip | 1.1595206119E10 | -| test.c:591:35:591:36 | 17 | 1.0 | -| test.c:591:35:591:36 | (unsigned int)... | 1.0 | -| test.c:591:35:591:41 | ... * ... | 1.1595206119E10 | -| test.c:591:40:591:41 | ip | 1.1595206119E10 | -| test.c:592:21:592:22 | 14 | 1.0 | -| test.c:592:21:592:22 | (unsigned int)... | 1.0 | -| test.c:592:21:592:33 | ... * ... | 1.1595206119E10 | -| test.c:592:26:592:33 | (...) | 1.1595206119E10 | -| test.c:592:27:592:27 | 2 | 1.0 | -| test.c:592:27:592:27 | (unsigned int)... | 1.0 | -| test.c:592:27:592:32 | ... * ... | 1.1595206119E10 | -| test.c:592:31:592:32 | ip | 1.1595206119E10 | -| test.c:593:21:593:22 | 14 | 1.0 | -| test.c:593:21:593:22 | (unsigned int)... | 1.0 | -| test.c:593:21:593:27 | ... * ... | 1.1595206119E10 | -| test.c:593:26:593:27 | ip | 1.1595206119E10 | -| test.c:594:13:594:63 | (...) | 1.2100392444788552E21 | -| test.c:594:14:594:15 | 14 | 1.0 | -| test.c:594:14:594:15 | (unsigned int)... | 1.0 | -| test.c:594:14:594:20 | ... * ... | 3.4785618357E10 | -| test.c:594:14:594:36 | ... > ... | 1.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:594:19:594:20 | ip | 3.4785618357E10 | -| test.c:594:24:594:31 | (...) | 3.4785618357E10 | -| test.c:594:24:594:36 | ... * ... | 3.4785618357E10 | -| test.c:594:25:594:26 | ip | 3.4785618357E10 | -| test.c:594:25:594:30 | ... + ... | 3.4785618357E10 | -| test.c:594:30:594:30 | 1 | 1.0 | -| test.c:594:30:594:30 | (unsigned int)... | 1.0 | -| test.c:594:35:594:36 | 17 | 1.0 | -| test.c:594:35:594:36 | (unsigned int)... | 1.0 | -| test.c:594:40:594:41 | 17 | 1.0 | -| test.c:594:40:594:41 | (unsigned int)... | 1.0 | -| test.c:594:40:594:46 | ... * ... | 3.4785618357E10 | -| test.c:594:45:594:46 | ip | 3.4785618357E10 | -| test.c:594:50:594:57 | (...) | 3.4785618357E10 | -| test.c:594:50:594:62 | ... * ... | 3.4785618357E10 | -| test.c:594:51:594:52 | ip | 3.4785618357E10 | -| test.c:594:51:594:56 | ... + ... | 3.4785618357E10 | -| test.c:594:56:594:56 | 1 | 1.0 | -| test.c:594:56:594:56 | (unsigned int)... | 1.0 | -| test.c:594:61:594:62 | 17 | 1.0 | -| test.c:594:61:594:62 | (unsigned int)... | 1.0 | -| test.c:595:13:595:13 | 4 | 1.0 | -| test.c:595:13:595:13 | (unsigned int)... | 1.0 | -| test.c:595:13:595:30 | ... * ... | 6.9571236714E10 | -| test.c:595:13:596:30 | ... + ... | 4.840156977915421E21 | -| test.c:595:13:597:30 | ... + ... | 3.3673570684347266E32 | -| test.c:595:13:603:26 | ... + ... | 9.071274901265435E65 | -| test.c:595:17:595:30 | (...) | 6.9571236714E10 | -| test.c:595:18:595:19 | ip | 6.9571236714E10 | -| test.c:595:18:595:24 | ... * ... | 6.9571236714E10 | -| test.c:595:18:595:29 | ... + ... | 6.9571236714E10 | -| test.c:595:23:595:24 | 14 | 1.0 | -| test.c:595:23:595:24 | (unsigned int)... | 1.0 | -| test.c:595:28:595:29 | 32 | 1.0 | -| test.c:595:28:595:29 | (unsigned int)... | 1.0 | -| test.c:596:13:596:30 | (...) | 6.9571236714E10 | -| test.c:596:14:596:14 | 2 | 1.0 | -| test.c:596:14:596:14 | (unsigned int)... | 1.0 | -| test.c:596:14:596:19 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:24 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:29 | ... + ... | 6.9571236714E10 | -| test.c:596:18:596:19 | ip | 6.9571236714E10 | -| test.c:596:23:596:24 | 14 | 1.0 | -| test.c:596:23:596:24 | (unsigned int)... | 1.0 | -| test.c:596:28:596:29 | 32 | 1.0 | -| test.c:596:28:596:29 | (unsigned int)... | 1.0 | -| test.c:597:13:597:13 | 2 | 1.0 | -| test.c:597:13:597:13 | (unsigned int)... | 1.0 | -| test.c:597:13:597:30 | ... * ... | 6.9571236714E10 | -| test.c:597:17:597:30 | (...) | 6.9571236714E10 | -| test.c:597:18:597:19 | ip | 6.9571236714E10 | -| test.c:597:18:597:24 | ... * ... | 6.9571236714E10 | -| test.c:597:18:597:29 | ... + ... | 6.9571236714E10 | -| test.c:597:23:597:24 | 14 | 1.0 | -| test.c:597:23:597:24 | (unsigned int)... | 1.0 | -| test.c:597:28:597:29 | 64 | 1.0 | -| test.c:597:28:597:29 | (unsigned int)... | 1.0 | -| test.c:598:13:603:26 | (...) | 2.693885654805863E33 | -| test.c:598:14:598:25 | (...) | 6.9571236714E10 | -| test.c:598:14:598:30 | ... * ... | 6.9571236714E10 | -| test.c:598:14:599:63 | ... > ... | 1.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 2.693885654805863E33 | -| test.c:598:15:598:15 | 2 | 1.0 | -| test.c:598:15:598:15 | (unsigned int)... | 1.0 | -| test.c:598:15:598:20 | ... * ... | 6.9571236714E10 | -| test.c:598:15:598:24 | ... + ... | 6.9571236714E10 | -| test.c:598:19:598:20 | ip | 6.9571236714E10 | -| test.c:598:24:598:24 | 1 | 1.0 | -| test.c:598:24:598:24 | (unsigned int)... | 1.0 | -| test.c:598:29:598:30 | 14 | 1.0 | -| test.c:598:29:598:30 | (unsigned int)... | 1.0 | -| test.c:599:13:599:63 | (...) | 4.840156977915421E21 | -| test.c:599:14:599:15 | 14 | 1.0 | -| test.c:599:14:599:15 | (unsigned int)... | 1.0 | -| test.c:599:14:599:26 | ... * ... | 6.9571236714E10 | -| test.c:599:14:599:36 | ... > ... | 1.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:599:19:599:26 | (...) | 6.9571236714E10 | -| test.c:599:20:599:20 | 2 | 1.0 | -| test.c:599:20:599:20 | (unsigned int)... | 1.0 | -| test.c:599:20:599:25 | ... * ... | 6.9571236714E10 | -| test.c:599:24:599:25 | ip | 6.9571236714E10 | -| test.c:599:30:599:31 | 17 | 1.0 | -| test.c:599:30:599:31 | (unsigned int)... | 1.0 | -| test.c:599:30:599:36 | ... * ... | 6.9571236714E10 | -| test.c:599:35:599:36 | ip | 6.9571236714E10 | -| test.c:599:40:599:41 | 17 | 1.0 | -| test.c:599:40:599:41 | (unsigned int)... | 1.0 | -| test.c:599:40:599:52 | ... * ... | 6.9571236714E10 | -| test.c:599:45:599:52 | (...) | 6.9571236714E10 | -| test.c:599:46:599:46 | 2 | 1.0 | -| test.c:599:46:599:46 | (unsigned int)... | 1.0 | -| test.c:599:46:599:51 | ... * ... | 6.9571236714E10 | -| test.c:599:50:599:51 | ip | 6.9571236714E10 | -| test.c:599:56:599:57 | 17 | 1.0 | -| test.c:599:56:599:57 | (unsigned int)... | 1.0 | -| test.c:599:56:599:62 | ... * ... | 6.9571236714E10 | -| test.c:599:61:599:62 | ip | 6.9571236714E10 | -| test.c:600:17:600:28 | (...) | 1.39142473429E11 | -| test.c:600:17:600:33 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:18 | 2 | 1.0 | -| test.c:600:18:600:18 | (unsigned int)... | 1.0 | -| test.c:600:18:600:23 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:27 | ... + ... | 1.39142473429E11 | -| test.c:600:22:600:23 | ip | 1.39142473429E11 | -| test.c:600:27:600:27 | 1 | 1.0 | -| test.c:600:27:600:27 | (unsigned int)... | 1.0 | -| test.c:600:32:600:33 | 14 | 1.0 | -| test.c:600:32:600:33 | (unsigned int)... | 1.0 | -| test.c:601:17:601:18 | 14 | 1.0 | -| test.c:601:17:601:18 | (unsigned int)... | 1.0 | -| test.c:601:17:601:29 | ... * ... | 1.39142473429E11 | -| test.c:601:17:601:39 | ... > ... | 1.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 1.936062791193997E22 | -| test.c:601:22:601:29 | (...) | 1.39142473429E11 | -| test.c:601:23:601:23 | 2 | 1.0 | -| test.c:601:23:601:23 | (unsigned int)... | 1.0 | -| test.c:601:23:601:28 | ... * ... | 1.39142473429E11 | -| test.c:601:27:601:28 | ip | 1.39142473429E11 | -| test.c:601:33:601:34 | 17 | 1.0 | -| test.c:601:33:601:34 | (unsigned int)... | 1.0 | -| test.c:601:33:601:39 | ... * ... | 1.39142473429E11 | -| test.c:601:38:601:39 | ip | 1.39142473429E11 | -| test.c:602:19:602:20 | 14 | 1.0 | -| test.c:602:19:602:20 | (unsigned int)... | 1.0 | -| test.c:602:19:602:31 | ... * ... | 1.39142473429E11 | -| test.c:602:24:602:31 | (...) | 1.39142473429E11 | -| test.c:602:25:602:25 | 2 | 1.0 | -| test.c:602:25:602:25 | (unsigned int)... | 1.0 | -| test.c:602:25:602:30 | ... * ... | 1.39142473429E11 | -| test.c:602:29:602:30 | ip | 1.39142473429E11 | -| test.c:603:19:603:20 | 14 | 1.0 | -| test.c:603:19:603:20 | (unsigned int)... | 1.0 | -| test.c:603:19:603:25 | ... * ... | 1.39142473429E11 | -| test.c:603:24:603:25 | ip | 1.39142473429E11 | -| test.c:604:13:604:14 | 14 | 1.0 | -| test.c:604:13:604:14 | (unsigned int)... | 1.0 | -| test.c:604:13:604:19 | ... * ... | 6.9571236714E10 | -| test.c:604:13:604:35 | ... > ... | 1.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:604:18:604:19 | ip | 6.9571236714E10 | -| test.c:604:23:604:30 | (...) | 6.9571236714E10 | -| test.c:604:23:604:35 | ... * ... | 6.9571236714E10 | -| test.c:604:24:604:25 | ip | 6.9571236714E10 | -| test.c:604:24:604:29 | ... + ... | 6.9571236714E10 | -| test.c:604:29:604:29 | 1 | 1.0 | -| test.c:604:29:604:29 | (unsigned int)... | 1.0 | -| test.c:604:34:604:35 | 17 | 1.0 | -| test.c:604:34:604:35 | (unsigned int)... | 1.0 | -| test.c:605:15:605:16 | 14 | 1.0 | -| test.c:605:15:605:16 | (unsigned int)... | 1.0 | -| test.c:605:15:605:21 | ... * ... | 6.9571236714E10 | -| test.c:605:20:605:21 | ip | 6.9571236714E10 | -| test.c:606:15:606:22 | (...) | 6.9571236714E10 | -| test.c:606:15:606:27 | ... * ... | 6.9571236714E10 | -| test.c:606:16:606:17 | ip | 6.9571236714E10 | -| test.c:606:16:606:21 | ... + ... | 6.9571236714E10 | -| test.c:606:21:606:21 | 1 | 1.0 | -| test.c:606:21:606:21 | (unsigned int)... | 1.0 | -| test.c:606:26:606:27 | 14 | 1.0 | -| test.c:606:26:606:27 | (unsigned int)... | 1.0 | -| test.c:607:10:607:23 | special_number | 1.297918419127476E201 | -| test.c:614:10:614:11 | 0 | 1.0 | -| test.c:615:7:615:8 | c1 | 1.0 | -| test.c:615:13:615:13 | x | 1.0 | -| test.c:615:13:615:23 | ... += ... | 1.0 | -| test.c:615:18:615:23 | 748596 | 1.0 | -| test.c:616:7:616:8 | c2 | 1.0 | -| test.c:616:13:616:13 | x | 2.0 | -| test.c:616:13:616:25 | ... += ... | 2.0 | -| test.c:616:18:616:25 | 84652395 | 1.0 | -| test.c:617:7:617:8 | c3 | 1.0 | -| test.c:617:13:617:13 | x | 4.0 | -| test.c:617:13:617:24 | ... += ... | 4.0 | -| test.c:617:18:617:24 | 3675895 | 1.0 | -| test.c:618:7:618:8 | c4 | 1.0 | -| test.c:618:13:618:13 | x | 8.0 | -| test.c:618:13:618:22 | ... += ... | 8.0 | -| test.c:618:18:618:22 | 98634 | 1.0 | -| test.c:619:7:619:8 | c5 | 1.0 | -| test.c:619:13:619:13 | x | 16.0 | -| test.c:619:13:619:24 | ... += ... | 16.0 | -| test.c:619:18:619:24 | 7834985 | 1.0 | -| test.c:620:7:620:8 | c1 | 2.0 | -| test.c:620:7:620:14 | ... && ... | 1.0 | -| test.c:620:13:620:14 | c2 | 2.0 | -| test.c:620:19:620:19 | x | 32.0 | -| test.c:620:19:620:32 | ... += ... | 32.0 | -| test.c:620:24:620:32 | 938457398 | 1.0 | -| test.c:621:7:621:8 | c1 | 3.0 | -| test.c:621:7:621:14 | ... && ... | 1.0 | -| test.c:621:13:621:14 | c3 | 2.0 | -| test.c:621:19:621:19 | x | 64.0 | -| test.c:621:19:621:31 | ... += ... | 64.0 | -| test.c:621:24:621:31 | 73895648 | 1.0 | -| test.c:622:7:622:8 | c1 | 4.0 | -| test.c:622:7:622:14 | ... && ... | 1.0 | -| test.c:622:13:622:14 | c4 | 2.0 | -| test.c:622:19:622:19 | x | 128.0 | -| test.c:622:19:622:31 | ... += ... | 128.0 | -| test.c:622:24:622:31 | 12345432 | 1.0 | -| test.c:623:7:623:8 | c1 | 5.0 | -| test.c:623:7:623:14 | ... && ... | 1.0 | -| test.c:623:13:623:14 | c5 | 2.0 | -| test.c:623:19:623:19 | x | 256.0 | -| test.c:623:19:623:28 | ... += ... | 256.0 | -| test.c:623:24:623:28 | 38847 | 1.0 | -| test.c:624:7:624:8 | c2 | 5.0 | -| test.c:624:7:624:14 | ... && ... | 1.0 | -| test.c:624:13:624:14 | c3 | 5.0 | -| test.c:624:19:624:19 | x | 512.0 | -| test.c:624:19:624:26 | ... += ... | 512.0 | -| test.c:624:24:624:26 | 234 | 1.0 | -| test.c:626:11:626:11 | x | 1024.0 | -| test.c:626:11:626:15 | ... + ... | 1048576.0 | -| test.c:626:11:626:19 | ... + ... | 1.073741824E9 | -| test.c:626:11:626:23 | ... + ... | 1.099511627776E12 | -| test.c:626:11:626:27 | ... + ... | 1.125899906842624E15 | -| test.c:626:11:626:31 | ... + ... | 1.152921504606847E18 | -| test.c:626:11:626:35 | ... + ... | 1.1805916207174113E21 | -| test.c:626:11:626:39 | ... + ... | 1.2089258196146292E24 | -| test.c:626:11:626:43 | ... + ... | 1.2379400392853803E27 | -| test.c:626:11:626:47 | ... + ... | 1.2676506002282294E30 | -| test.c:626:11:626:51 | ... + ... | 1.298074214633707E33 | -| test.c:626:11:626:55 | ... + ... | 1.329227995784916E36 | -| test.c:626:15:626:15 | x | 1024.0 | -| test.c:626:19:626:19 | x | 1024.0 | -| test.c:626:23:626:23 | x | 1024.0 | -| test.c:626:27:626:27 | x | 1024.0 | -| test.c:626:31:626:31 | x | 1024.0 | -| test.c:626:35:626:35 | x | 1024.0 | -| test.c:626:39:626:39 | x | 1024.0 | -| test.c:626:43:626:43 | x | 1024.0 | -| test.c:626:47:626:47 | x | 1024.0 | -| test.c:626:51:626:51 | x | 1024.0 | -| test.c:626:55:626:55 | x | 1024.0 | -| test.c:627:10:627:10 | y | 1.329227995784916E36 | -| test.c:632:20:632:20 | x | 1.0 | -| test.c:632:20:632:26 | ... < ... | 1.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 1.0 | -| test.c:632:24:632:26 | 100 | 1.0 | -| test.c:632:24:632:26 | (unsigned int)... | 1.0 | -| test.c:632:30:632:30 | x | 1.0 | -| test.c:632:34:632:36 | 100 | 1.0 | -| test.c:632:34:632:36 | (unsigned int)... | 1.0 | -| test.c:635:3:635:4 | y1 | 1.0 | -| test.c:635:9:635:11 | ++ ... | 1.0 | -| test.c:635:11:635:11 | y | 1.0 | -| test.c:636:3:636:4 | y2 | 1.0 | -| test.c:636:19:636:19 | 3 | 1.0 | -| test.c:636:19:636:19 | (unsigned int)... | 1.0 | -| test.c:645:3:645:3 | i | 1.0 | -| test.c:645:3:645:8 | ... = ... | 1.0 | -| test.c:645:7:645:8 | 10 | 1.0 | -| test.c:646:7:646:7 | i | 1.0 | -| test.c:648:3:648:3 | i | 1.0 | -| test.c:648:3:648:8 | ... = ... | 1.0 | -| test.c:648:7:648:8 | 10 | 1.0 | -| test.c:649:3:649:3 | i | 1.0 | -| test.c:649:3:649:9 | ... += ... | 1.0 | -| test.c:649:8:649:9 | 10 | 1.0 | -| test.c:650:7:650:7 | i | 1.0 | -| test.c:652:3:652:3 | i | 1.0 | -| test.c:652:3:652:8 | ... = ... | 1.0 | -| test.c:652:7:652:8 | 40 | 1.0 | -| test.c:653:3:653:3 | i | 1.0 | -| test.c:653:3:653:9 | ... -= ... | 1.0 | -| test.c:653:8:653:9 | 10 | 1.0 | -| test.c:654:7:654:7 | i | 1.0 | -| test.c:656:3:656:3 | i | 1.0 | -| test.c:656:3:656:12 | ... = ... | 1.0 | -| test.c:656:7:656:7 | j | 1.0 | -| test.c:656:7:656:12 | ... = ... | 1.0 | -| test.c:656:11:656:12 | 40 | 1.0 | -| test.c:657:7:657:7 | i | 1.0 | -| test.c:659:3:659:3 | i | 1.0 | -| test.c:659:3:659:15 | ... = ... | 1.0 | -| test.c:659:7:659:15 | (...) | 1.0 | -| test.c:659:8:659:8 | j | 1.0 | -| test.c:659:8:659:14 | ... += ... | 1.0 | -| test.c:659:13:659:14 | 10 | 1.0 | -| test.c:660:7:660:7 | i | 1.0 | -| test.c:662:3:662:3 | i | 1.0 | -| test.c:662:3:662:20 | ... = ... | 1.0 | -| test.c:662:7:662:8 | 20 | 1.0 | -| test.c:662:7:662:20 | ... + ... | 1.0 | -| test.c:662:12:662:20 | (...) | 1.0 | -| test.c:662:13:662:13 | j | 1.0 | -| test.c:662:13:662:19 | ... -= ... | 1.0 | -| test.c:662:18:662:19 | 10 | 1.0 | -| test.c:663:7:663:7 | i | 1.0 | -| test.c:668:14:668:15 | 0 | 1.0 | -| test.c:670:7:670:7 | 3 | 1.0 | -| test.c:670:7:670:7 | (unsigned int)... | 1.0 | -| test.c:670:7:670:12 | ... <= ... | 1.0 | -| test.c:670:7:670:23 | ... && ... | 1.0 | -| test.c:670:7:670:33 | ... && ... | 1.0 | -| test.c:670:7:670:44 | ... && ... | 1.0 | -| test.c:670:12:670:12 | a | 1.0 | -| test.c:670:17:670:17 | a | 1.0 | -| test.c:670:17:670:23 | ... <= ... | 1.0 | -| test.c:670:22:670:23 | 11 | 1.0 | -| test.c:670:22:670:23 | (unsigned int)... | 1.0 | -| test.c:670:28:670:28 | 5 | 1.0 | -| test.c:670:28:670:28 | (unsigned int)... | 1.0 | -| test.c:670:28:670:33 | ... <= ... | 1.0 | -| test.c:670:33:670:33 | b | 1.0 | -| test.c:670:38:670:38 | b | 1.0 | -| test.c:670:38:670:44 | ... <= ... | 1.0 | -| test.c:670:43:670:44 | 23 | 1.0 | -| test.c:670:43:670:44 | (unsigned int)... | 1.0 | -| test.c:671:13:671:13 | a | 1.0 | -| test.c:671:13:671:15 | (int)... | 1.0 | -| test.c:671:13:671:15 | ... * ... | 1.0 | -| test.c:671:15:671:15 | b | 1.0 | -| test.c:672:5:672:9 | total | 1.0 | -| test.c:672:5:672:14 | ... += ... | 1.0 | -| test.c:672:14:672:14 | r | 1.0 | -| test.c:674:7:674:7 | 3 | 1.0 | -| test.c:674:7:674:7 | (unsigned int)... | 1.0 | -| test.c:674:7:674:12 | ... <= ... | 1.0 | -| test.c:674:7:674:23 | ... && ... | 1.0 | -| test.c:674:7:674:33 | ... && ... | 1.0 | -| test.c:674:7:674:44 | ... && ... | 1.0 | -| test.c:674:12:674:12 | a | 2.0 | -| test.c:674:17:674:17 | a | 2.0 | -| test.c:674:17:674:23 | ... <= ... | 1.0 | -| test.c:674:22:674:23 | 11 | 1.0 | -| test.c:674:22:674:23 | (unsigned int)... | 1.0 | -| test.c:674:28:674:28 | 0 | 1.0 | -| test.c:674:28:674:28 | (unsigned int)... | 1.0 | -| test.c:674:28:674:33 | ... <= ... | 1.0 | -| test.c:674:33:674:33 | b | 3.0 | -| test.c:674:38:674:38 | b | 3.0 | -| test.c:674:38:674:44 | ... <= ... | 1.0 | -| test.c:674:43:674:44 | 23 | 1.0 | -| test.c:674:43:674:44 | (unsigned int)... | 1.0 | -| test.c:675:13:675:13 | a | 2.0 | -| test.c:675:13:675:15 | (int)... | 6.0 | -| test.c:675:13:675:15 | ... * ... | 6.0 | -| test.c:675:15:675:15 | b | 3.0 | -| test.c:676:5:676:9 | total | 2.0 | -| test.c:676:5:676:14 | ... += ... | 12.0 | -| test.c:676:14:676:14 | r | 6.0 | -| test.c:678:7:678:7 | 3 | 1.0 | -| test.c:678:7:678:7 | (unsigned int)... | 1.0 | -| test.c:678:7:678:12 | ... <= ... | 1.0 | -| test.c:678:7:678:23 | ... && ... | 1.0 | -| test.c:678:7:678:34 | ... && ... | 1.0 | -| test.c:678:7:678:45 | ... && ... | 1.0 | -| test.c:678:12:678:12 | a | 3.0 | -| test.c:678:17:678:17 | a | 3.0 | -| test.c:678:17:678:23 | ... <= ... | 1.0 | -| test.c:678:22:678:23 | 11 | 1.0 | -| test.c:678:22:678:23 | (unsigned int)... | 1.0 | -| test.c:678:28:678:29 | 13 | 1.0 | -| test.c:678:28:678:29 | (unsigned int)... | 1.0 | -| test.c:678:28:678:34 | ... <= ... | 1.0 | -| test.c:678:34:678:34 | b | 7.0 | -| test.c:678:39:678:39 | b | 7.0 | -| test.c:678:39:678:45 | ... <= ... | 1.0 | -| test.c:678:44:678:45 | 23 | 1.0 | -| test.c:678:44:678:45 | (unsigned int)... | 1.0 | -| test.c:679:13:679:13 | a | 3.0 | -| test.c:679:13:679:15 | (int)... | 21.0 | -| test.c:679:13:679:15 | ... * ... | 21.0 | -| test.c:679:15:679:15 | b | 7.0 | -| test.c:680:5:680:9 | total | 14.0 | -| test.c:680:5:680:14 | ... += ... | 294.0 | -| test.c:680:14:680:14 | r | 21.0 | -| test.c:683:10:683:14 | total | 308.0 | -| test.c:687:14:687:15 | 0 | 1.0 | -| test.c:689:7:689:7 | 5 | 1.0 | +| test.c:573:19:573:31 | ... * ... | 1.449400765E9 | +| test.c:573:19:573:41 | ... > ... | 1.0 | +| test.c:573:19:575:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:573:24:573:31 | (...) | 1.449400765E9 | +| test.c:573:25:573:25 | 2 | 1.0 | +| test.c:573:25:573:25 | (unsigned int)... | 1.0 | +| test.c:573:25:573:30 | ... * ... | 1.449400765E9 | +| test.c:573:29:573:30 | ip | 1.449400765E9 | +| test.c:573:35:573:36 | 17 | 1.0 | +| test.c:573:35:573:36 | (unsigned int)... | 1.0 | +| test.c:573:35:573:41 | ... * ... | 1.449400765E9 | +| test.c:573:40:573:41 | ip | 1.449400765E9 | +| test.c:574:21:574:22 | 14 | 1.0 | +| test.c:574:21:574:22 | (unsigned int)... | 1.0 | +| test.c:574:21:574:33 | ... * ... | 1.449400765E9 | +| test.c:574:26:574:33 | (...) | 1.449400765E9 | +| test.c:574:27:574:27 | 2 | 1.0 | +| test.c:574:27:574:27 | (unsigned int)... | 1.0 | +| test.c:574:27:574:32 | ... * ... | 1.449400765E9 | +| test.c:574:31:574:32 | ip | 1.449400765E9 | +| test.c:575:21:575:22 | 14 | 1.0 | +| test.c:575:21:575:22 | (unsigned int)... | 1.0 | +| test.c:575:21:575:27 | ... * ... | 1.449400765E9 | +| test.c:575:26:575:27 | ip | 1.449400765E9 | +| test.c:576:15:576:16 | 14 | 1.0 | +| test.c:576:15:576:16 | (unsigned int)... | 1.0 | +| test.c:576:15:576:21 | ... * ... | 7.24700382E8 | +| test.c:576:15:576:37 | ... > ... | 1.0 | +| test.c:576:15:578:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:576:20:576:21 | ip | 7.24700382E8 | +| test.c:576:25:576:32 | (...) | 7.24700382E8 | +| test.c:576:25:576:37 | ... * ... | 7.24700382E8 | +| test.c:576:26:576:27 | ip | 7.24700382E8 | +| test.c:576:26:576:31 | ... + ... | 7.24700382E8 | +| test.c:576:31:576:31 | 1 | 1.0 | +| test.c:576:31:576:31 | (unsigned int)... | 1.0 | +| test.c:576:36:576:37 | 17 | 1.0 | +| test.c:576:36:576:37 | (unsigned int)... | 1.0 | +| test.c:577:17:577:18 | 14 | 1.0 | +| test.c:577:17:577:18 | (unsigned int)... | 1.0 | +| test.c:577:17:577:23 | ... * ... | 7.24700382E8 | +| test.c:577:22:577:23 | ip | 7.24700382E8 | +| test.c:578:17:578:24 | (...) | 7.24700382E8 | +| test.c:578:17:578:29 | ... * ... | 7.24700382E8 | +| test.c:578:18:578:19 | ip | 7.24700382E8 | +| test.c:578:18:578:23 | ... + ... | 7.24700382E8 | +| test.c:578:23:578:23 | 1 | 1.0 | +| test.c:578:23:578:23 | (unsigned int)... | 1.0 | +| test.c:578:28:578:29 | 14 | 1.0 | +| test.c:578:28:578:29 | (unsigned int)... | 1.0 | +| test.c:579:11:579:11 | 2 | 1.0 | +| test.c:579:11:579:11 | (unsigned int)... | 1.0 | +| test.c:579:11:579:28 | ... * ... | 5.797603059E9 | +| test.c:579:11:599:46 | ... + ... | 9.943431528813442E94 | +| test.c:579:15:579:28 | (...) | 5.797603059E9 | +| test.c:579:16:579:17 | ip | 5.797603059E9 | +| test.c:579:16:579:22 | ... * ... | 5.797603059E9 | +| test.c:579:16:579:27 | ... + ... | 5.797603059E9 | +| test.c:579:21:579:22 | 14 | 1.0 | +| test.c:579:21:579:22 | (unsigned int)... | 1.0 | +| test.c:579:26:579:27 | 32 | 1.0 | +| test.c:579:26:579:27 | (unsigned int)... | 1.0 | +| test.c:580:11:599:46 | (...) | 1.715093535659983E85 | +| test.c:580:12:580:12 | 4 | 1.0 | +| test.c:580:12:580:12 | (unsigned int)... | 1.0 | +| test.c:580:12:580:29 | ... * ... | 5.797603059E9 | +| test.c:580:12:581:30 | ... + ... | 3.361220122972616E19 | +| test.c:580:12:582:30 | ... + ... | 1.9487020066918396E29 | +| test.c:580:12:588:26 | ... + ... | 3.0379516094938436E59 | +| test.c:580:12:589:41 | ... > ... | 1.0 | +| test.c:580:12:599:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:580:16:580:29 | (...) | 5.797603059E9 | +| test.c:580:17:580:18 | ip | 5.797603059E9 | +| test.c:580:17:580:23 | ... * ... | 5.797603059E9 | +| test.c:580:17:580:28 | ... + ... | 5.797603059E9 | +| test.c:580:22:580:23 | 14 | 1.0 | +| test.c:580:22:580:23 | (unsigned int)... | 1.0 | +| test.c:580:27:580:28 | 32 | 1.0 | +| test.c:580:27:580:28 | (unsigned int)... | 1.0 | +| test.c:581:13:581:30 | (...) | 5.797603059E9 | +| test.c:581:14:581:14 | 2 | 1.0 | +| test.c:581:14:581:14 | (unsigned int)... | 1.0 | +| test.c:581:14:581:19 | ... * ... | 5.797603059E9 | +| test.c:581:14:581:24 | ... * ... | 5.797603059E9 | +| test.c:581:14:581:29 | ... + ... | 5.797603059E9 | +| test.c:581:18:581:19 | ip | 5.797603059E9 | +| test.c:581:23:581:24 | 14 | 1.0 | +| test.c:581:23:581:24 | (unsigned int)... | 1.0 | +| test.c:581:28:581:29 | 32 | 1.0 | +| test.c:581:28:581:29 | (unsigned int)... | 1.0 | +| test.c:582:13:582:13 | 2 | 1.0 | +| test.c:582:13:582:13 | (unsigned int)... | 1.0 | +| test.c:582:13:582:30 | ... * ... | 5.797603059E9 | +| test.c:582:17:582:30 | (...) | 5.797603059E9 | +| test.c:582:18:582:19 | ip | 5.797603059E9 | +| test.c:582:18:582:24 | ... * ... | 5.797603059E9 | +| test.c:582:18:582:29 | ... + ... | 5.797603059E9 | +| test.c:582:23:582:24 | 14 | 1.0 | +| test.c:582:23:582:24 | (unsigned int)... | 1.0 | +| test.c:582:28:582:29 | 64 | 1.0 | +| test.c:582:28:582:29 | (unsigned int)... | 1.0 | +| test.c:583:13:588:26 | (...) | 1.558961605756818E30 | +| test.c:583:14:583:25 | (...) | 5.797603059E9 | +| test.c:583:14:583:30 | ... * ... | 5.797603059E9 | +| test.c:583:14:584:63 | ... > ... | 1.0 | +| test.c:583:14:588:25 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:583:15:583:15 | 2 | 1.0 | +| test.c:583:15:583:15 | (unsigned int)... | 1.0 | +| test.c:583:15:583:20 | ... * ... | 5.797603059E9 | +| test.c:583:15:583:24 | ... + ... | 5.797603059E9 | +| test.c:583:19:583:20 | ip | 5.797603059E9 | +| test.c:583:24:583:24 | 1 | 1.0 | +| test.c:583:24:583:24 | (unsigned int)... | 1.0 | +| test.c:583:29:583:30 | 14 | 1.0 | +| test.c:583:29:583:30 | (unsigned int)... | 1.0 | +| test.c:584:13:584:63 | (...) | 3.361220122972616E19 | +| test.c:584:14:584:15 | 14 | 1.0 | +| test.c:584:14:584:15 | (unsigned int)... | 1.0 | +| test.c:584:14:584:26 | ... * ... | 5.797603059E9 | +| test.c:584:14:584:36 | ... > ... | 1.0 | +| test.c:584:14:584:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:584:19:584:26 | (...) | 5.797603059E9 | +| test.c:584:20:584:20 | 2 | 1.0 | +| test.c:584:20:584:20 | (unsigned int)... | 1.0 | +| test.c:584:20:584:25 | ... * ... | 5.797603059E9 | +| test.c:584:24:584:25 | ip | 5.797603059E9 | +| test.c:584:30:584:31 | 17 | 1.0 | +| test.c:584:30:584:31 | (unsigned int)... | 1.0 | +| test.c:584:30:584:36 | ... * ... | 5.797603059E9 | +| test.c:584:35:584:36 | ip | 5.797603059E9 | +| test.c:584:40:584:41 | 17 | 1.0 | +| test.c:584:40:584:41 | (unsigned int)... | 1.0 | +| test.c:584:40:584:52 | ... * ... | 5.797603059E9 | +| test.c:584:45:584:52 | (...) | 5.797603059E9 | +| test.c:584:46:584:46 | 2 | 1.0 | +| test.c:584:46:584:46 | (unsigned int)... | 1.0 | +| test.c:584:46:584:51 | ... * ... | 5.797603059E9 | +| test.c:584:50:584:51 | ip | 5.797603059E9 | +| test.c:584:56:584:57 | 17 | 1.0 | +| test.c:584:56:584:57 | (unsigned int)... | 1.0 | +| test.c:584:56:584:62 | ... * ... | 5.797603059E9 | +| test.c:584:61:584:62 | ip | 5.797603059E9 | +| test.c:585:17:585:28 | (...) | 1.1595206119E10 | +| test.c:585:17:585:33 | ... * ... | 1.1595206119E10 | +| test.c:585:18:585:18 | 2 | 1.0 | +| test.c:585:18:585:18 | (unsigned int)... | 1.0 | +| test.c:585:18:585:23 | ... * ... | 1.1595206119E10 | +| test.c:585:18:585:27 | ... + ... | 1.1595206119E10 | +| test.c:585:22:585:23 | ip | 1.1595206119E10 | +| test.c:585:27:585:27 | 1 | 1.0 | +| test.c:585:27:585:27 | (unsigned int)... | 1.0 | +| test.c:585:32:585:33 | 14 | 1.0 | +| test.c:585:32:585:33 | (unsigned int)... | 1.0 | +| test.c:586:17:586:18 | 14 | 1.0 | +| test.c:586:17:586:18 | (unsigned int)... | 1.0 | +| test.c:586:17:586:29 | ... * ... | 1.1595206119E10 | +| test.c:586:17:586:39 | ... > ... | 1.0 | +| test.c:586:17:588:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:586:22:586:29 | (...) | 1.1595206119E10 | +| test.c:586:23:586:23 | 2 | 1.0 | +| test.c:586:23:586:23 | (unsigned int)... | 1.0 | +| test.c:586:23:586:28 | ... * ... | 1.1595206119E10 | +| test.c:586:27:586:28 | ip | 1.1595206119E10 | +| test.c:586:33:586:34 | 17 | 1.0 | +| test.c:586:33:586:34 | (unsigned int)... | 1.0 | +| test.c:586:33:586:39 | ... * ... | 1.1595206119E10 | +| test.c:586:38:586:39 | ip | 1.1595206119E10 | +| test.c:587:19:587:20 | 14 | 1.0 | +| test.c:587:19:587:20 | (unsigned int)... | 1.0 | +| test.c:587:19:587:31 | ... * ... | 1.1595206119E10 | +| test.c:587:24:587:31 | (...) | 1.1595206119E10 | +| test.c:587:25:587:25 | 2 | 1.0 | +| test.c:587:25:587:25 | (unsigned int)... | 1.0 | +| test.c:587:25:587:30 | ... * ... | 1.1595206119E10 | +| test.c:587:29:587:30 | ip | 1.1595206119E10 | +| test.c:588:19:588:20 | 14 | 1.0 | +| test.c:588:19:588:20 | (unsigned int)... | 1.0 | +| test.c:588:19:588:25 | ... * ... | 1.1595206119E10 | +| test.c:588:24:588:25 | ip | 1.1595206119E10 | +| test.c:589:11:589:11 | 2 | 1.0 | +| test.c:589:11:589:11 | (unsigned int)... | 1.0 | +| test.c:589:11:589:16 | ... * ... | 3.4785618357E10 | +| test.c:589:11:589:21 | ... * ... | 3.4785618357E10 | +| test.c:589:11:589:41 | ... + ... | 1.2100392444788552E21 | +| test.c:589:15:589:16 | ip | 3.4785618357E10 | +| test.c:589:20:589:21 | 14 | 1.0 | +| test.c:589:20:589:21 | (unsigned int)... | 1.0 | +| test.c:589:25:589:36 | (...) | 3.4785618357E10 | +| test.c:589:25:589:41 | ... * ... | 3.4785618357E10 | +| test.c:589:26:589:26 | 2 | 1.0 | +| test.c:589:26:589:26 | (unsigned int)... | 1.0 | +| test.c:589:26:589:31 | ... * ... | 3.4785618357E10 | +| test.c:589:26:589:35 | ... + ... | 3.4785618357E10 | +| test.c:589:30:589:31 | ip | 3.4785618357E10 | +| test.c:589:35:589:35 | 1 | 1.0 | +| test.c:589:35:589:35 | (unsigned int)... | 1.0 | +| test.c:589:40:589:41 | 17 | 1.0 | +| test.c:589:40:589:41 | (unsigned int)... | 1.0 | +| test.c:590:15:590:15 | 4 | 1.0 | +| test.c:590:15:590:15 | (unsigned int)... | 1.0 | +| test.c:590:15:590:32 | ... * ... | 3.4785618357E10 | +| test.c:590:15:591:32 | ... + ... | 1.2100392444788552E21 | +| test.c:590:15:592:32 | ... + ... | 4.209196335543408E31 | +| test.c:590:15:598:28 | ... + ... | 1.417386703353284E64 | +| test.c:590:19:590:32 | (...) | 3.4785618357E10 | +| test.c:590:20:590:21 | ip | 3.4785618357E10 | +| test.c:590:20:590:26 | ... * ... | 3.4785618357E10 | +| test.c:590:20:590:31 | ... + ... | 3.4785618357E10 | +| test.c:590:25:590:26 | 14 | 1.0 | +| test.c:590:25:590:26 | (unsigned int)... | 1.0 | +| test.c:590:30:590:31 | 32 | 1.0 | +| test.c:590:30:590:31 | (unsigned int)... | 1.0 | +| test.c:591:15:591:32 | (...) | 3.4785618357E10 | +| test.c:591:16:591:16 | 2 | 1.0 | +| test.c:591:16:591:16 | (unsigned int)... | 1.0 | +| test.c:591:16:591:21 | ... * ... | 3.4785618357E10 | +| test.c:591:16:591:26 | ... * ... | 3.4785618357E10 | +| test.c:591:16:591:31 | ... + ... | 3.4785618357E10 | +| test.c:591:20:591:21 | ip | 3.4785618357E10 | +| test.c:591:25:591:26 | 14 | 1.0 | +| test.c:591:25:591:26 | (unsigned int)... | 1.0 | +| test.c:591:30:591:31 | 32 | 1.0 | +| test.c:591:30:591:31 | (unsigned int)... | 1.0 | +| test.c:592:15:592:15 | 2 | 1.0 | +| test.c:592:15:592:15 | (unsigned int)... | 1.0 | +| test.c:592:15:592:32 | ... * ... | 3.4785618357E10 | +| test.c:592:19:592:32 | (...) | 3.4785618357E10 | +| test.c:592:20:592:21 | ip | 3.4785618357E10 | +| test.c:592:20:592:26 | ... * ... | 3.4785618357E10 | +| test.c:592:20:592:31 | ... + ... | 3.4785618357E10 | +| test.c:592:25:592:26 | 14 | 1.0 | +| test.c:592:25:592:26 | (unsigned int)... | 1.0 | +| test.c:592:30:592:31 | 64 | 1.0 | +| test.c:592:30:592:31 | (unsigned int)... | 1.0 | +| test.c:593:15:598:28 | (...) | 3.367357068579931E32 | +| test.c:593:16:593:27 | (...) | 3.4785618357E10 | +| test.c:593:16:593:32 | ... * ... | 3.4785618357E10 | +| test.c:593:16:594:65 | ... > ... | 1.0 | +| test.c:593:16:598:27 | ... ? ... : ... | 3.367357068579931E32 | +| test.c:593:17:593:17 | 2 | 1.0 | +| test.c:593:17:593:17 | (unsigned int)... | 1.0 | +| test.c:593:17:593:22 | ... * ... | 3.4785618357E10 | +| test.c:593:17:593:26 | ... + ... | 3.4785618357E10 | +| test.c:593:21:593:22 | ip | 3.4785618357E10 | +| test.c:593:26:593:26 | 1 | 1.0 | +| test.c:593:26:593:26 | (unsigned int)... | 1.0 | +| test.c:593:31:593:32 | 14 | 1.0 | +| test.c:593:31:593:32 | (unsigned int)... | 1.0 | +| test.c:594:15:594:65 | (...) | 1.2100392444788552E21 | +| test.c:594:16:594:17 | 14 | 1.0 | +| test.c:594:16:594:17 | (unsigned int)... | 1.0 | +| test.c:594:16:594:28 | ... * ... | 3.4785618357E10 | +| test.c:594:16:594:38 | ... > ... | 1.0 | +| test.c:594:16:594:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:594:21:594:28 | (...) | 3.4785618357E10 | +| test.c:594:22:594:22 | 2 | 1.0 | +| test.c:594:22:594:22 | (unsigned int)... | 1.0 | +| test.c:594:22:594:27 | ... * ... | 3.4785618357E10 | +| test.c:594:26:594:27 | ip | 3.4785618357E10 | +| test.c:594:32:594:33 | 17 | 1.0 | +| test.c:594:32:594:33 | (unsigned int)... | 1.0 | +| test.c:594:32:594:38 | ... * ... | 3.4785618357E10 | +| test.c:594:37:594:38 | ip | 3.4785618357E10 | +| test.c:594:42:594:43 | 17 | 1.0 | +| test.c:594:42:594:43 | (unsigned int)... | 1.0 | +| test.c:594:42:594:54 | ... * ... | 3.4785618357E10 | +| test.c:594:47:594:54 | (...) | 3.4785618357E10 | +| test.c:594:48:594:48 | 2 | 1.0 | +| test.c:594:48:594:48 | (unsigned int)... | 1.0 | +| test.c:594:48:594:53 | ... * ... | 3.4785618357E10 | +| test.c:594:52:594:53 | ip | 3.4785618357E10 | +| test.c:594:58:594:59 | 17 | 1.0 | +| test.c:594:58:594:59 | (unsigned int)... | 1.0 | +| test.c:594:58:594:64 | ... * ... | 3.4785618357E10 | +| test.c:594:63:594:64 | ip | 3.4785618357E10 | +| test.c:595:19:595:30 | (...) | 6.9571236715E10 | +| test.c:595:19:595:35 | ... * ... | 6.9571236715E10 | +| test.c:595:20:595:20 | 2 | 1.0 | +| test.c:595:20:595:20 | (unsigned int)... | 1.0 | +| test.c:595:20:595:25 | ... * ... | 6.9571236715E10 | +| test.c:595:20:595:29 | ... + ... | 6.9571236715E10 | +| test.c:595:24:595:25 | ip | 6.9571236715E10 | +| test.c:595:29:595:29 | 1 | 1.0 | +| test.c:595:29:595:29 | (unsigned int)... | 1.0 | +| test.c:595:34:595:35 | 14 | 1.0 | +| test.c:595:34:595:35 | (unsigned int)... | 1.0 | +| test.c:596:19:596:20 | 14 | 1.0 | +| test.c:596:19:596:20 | (unsigned int)... | 1.0 | +| test.c:596:19:596:31 | ... * ... | 6.9571236715E10 | +| test.c:596:19:596:41 | ... > ... | 1.0 | +| test.c:596:19:598:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:596:24:596:31 | (...) | 6.9571236715E10 | +| test.c:596:25:596:25 | 2 | 1.0 | +| test.c:596:25:596:25 | (unsigned int)... | 1.0 | +| test.c:596:25:596:30 | ... * ... | 6.9571236715E10 | +| test.c:596:29:596:30 | ip | 6.9571236715E10 | +| test.c:596:35:596:36 | 17 | 1.0 | +| test.c:596:35:596:36 | (unsigned int)... | 1.0 | +| test.c:596:35:596:41 | ... * ... | 6.9571236715E10 | +| test.c:596:40:596:41 | ip | 6.9571236715E10 | +| test.c:597:21:597:22 | 14 | 1.0 | +| test.c:597:21:597:22 | (unsigned int)... | 1.0 | +| test.c:597:21:597:33 | ... * ... | 6.9571236715E10 | +| test.c:597:26:597:33 | (...) | 6.9571236715E10 | +| test.c:597:27:597:27 | 2 | 1.0 | +| test.c:597:27:597:27 | (unsigned int)... | 1.0 | +| test.c:597:27:597:32 | ... * ... | 6.9571236715E10 | +| test.c:597:31:597:32 | ip | 6.9571236715E10 | +| test.c:598:21:598:22 | 14 | 1.0 | +| test.c:598:21:598:22 | (unsigned int)... | 1.0 | +| test.c:598:21:598:27 | ... * ... | 6.9571236715E10 | +| test.c:598:26:598:27 | ip | 6.9571236715E10 | +| test.c:599:15:599:15 | 2 | 1.0 | +| test.c:599:15:599:15 | (unsigned int)... | 1.0 | +| test.c:599:15:599:20 | ... * ... | 3.4785618357E10 | +| test.c:599:15:599:25 | ... * ... | 3.4785618357E10 | +| test.c:599:15:599:45 | ... + ... | 1.2100392444788552E21 | +| test.c:599:19:599:20 | ip | 3.4785618357E10 | +| test.c:599:24:599:25 | 14 | 1.0 | +| test.c:599:24:599:25 | (unsigned int)... | 1.0 | +| test.c:599:29:599:40 | (...) | 3.4785618357E10 | +| test.c:599:29:599:45 | ... * ... | 3.4785618357E10 | +| test.c:599:30:599:30 | 2 | 1.0 | +| test.c:599:30:599:30 | (unsigned int)... | 1.0 | +| test.c:599:30:599:35 | ... * ... | 3.4785618357E10 | +| test.c:599:30:599:39 | ... + ... | 3.4785618357E10 | +| test.c:599:34:599:35 | ip | 3.4785618357E10 | +| test.c:599:39:599:39 | 1 | 1.0 | +| test.c:599:39:599:39 | (unsigned int)... | 1.0 | +| test.c:599:44:599:45 | 17 | 1.0 | +| test.c:599:44:599:45 | (unsigned int)... | 1.0 | +| test.c:600:11:600:11 | 4 | 1.0 | +| test.c:600:11:600:11 | (unsigned int)... | 1.0 | +| test.c:600:11:600:28 | ... * ... | 5.797603059E9 | +| test.c:600:11:601:32 | ... + ... | 3.361220122972616E19 | +| test.c:600:11:602:32 | ... + ... | 1.9487020066918396E29 | +| test.c:600:11:608:28 | ... + ... | 3.0379516094938436E59 | +| test.c:600:11:609:63 | ... > ... | 1.0 | +| test.c:600:11:621:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:600:15:600:28 | (...) | 5.797603059E9 | +| test.c:600:16:600:17 | ip | 5.797603059E9 | +| test.c:600:16:600:22 | ... * ... | 5.797603059E9 | +| test.c:600:16:600:27 | ... + ... | 5.797603059E9 | +| test.c:600:21:600:22 | 14 | 1.0 | +| test.c:600:21:600:22 | (unsigned int)... | 1.0 | +| test.c:600:26:600:27 | 32 | 1.0 | +| test.c:600:26:600:27 | (unsigned int)... | 1.0 | +| test.c:601:15:601:32 | (...) | 5.797603059E9 | +| test.c:601:16:601:16 | 2 | 1.0 | +| test.c:601:16:601:16 | (unsigned int)... | 1.0 | +| test.c:601:16:601:21 | ... * ... | 5.797603059E9 | +| test.c:601:16:601:26 | ... * ... | 5.797603059E9 | +| test.c:601:16:601:31 | ... + ... | 5.797603059E9 | +| test.c:601:20:601:21 | ip | 5.797603059E9 | +| test.c:601:25:601:26 | 14 | 1.0 | +| test.c:601:25:601:26 | (unsigned int)... | 1.0 | +| test.c:601:30:601:31 | 32 | 1.0 | +| test.c:601:30:601:31 | (unsigned int)... | 1.0 | +| test.c:602:15:602:15 | 2 | 1.0 | +| test.c:602:15:602:15 | (unsigned int)... | 1.0 | +| test.c:602:15:602:32 | ... * ... | 5.797603059E9 | +| test.c:602:19:602:32 | (...) | 5.797603059E9 | +| test.c:602:20:602:21 | ip | 5.797603059E9 | +| test.c:602:20:602:26 | ... * ... | 5.797603059E9 | +| test.c:602:20:602:31 | ... + ... | 5.797603059E9 | +| test.c:602:25:602:26 | 14 | 1.0 | +| test.c:602:25:602:26 | (unsigned int)... | 1.0 | +| test.c:602:30:602:31 | 64 | 1.0 | +| test.c:602:30:602:31 | (unsigned int)... | 1.0 | +| test.c:603:15:608:28 | (...) | 1.558961605756818E30 | +| test.c:603:16:603:27 | (...) | 5.797603059E9 | +| test.c:603:16:603:32 | ... * ... | 5.797603059E9 | +| test.c:603:16:604:65 | ... > ... | 1.0 | +| test.c:603:16:608:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:603:17:603:17 | 2 | 1.0 | +| test.c:603:17:603:17 | (unsigned int)... | 1.0 | +| test.c:603:17:603:22 | ... * ... | 5.797603059E9 | +| test.c:603:17:603:26 | ... + ... | 5.797603059E9 | +| test.c:603:21:603:22 | ip | 5.797603059E9 | +| test.c:603:26:603:26 | 1 | 1.0 | +| test.c:603:26:603:26 | (unsigned int)... | 1.0 | +| test.c:603:31:603:32 | 14 | 1.0 | +| test.c:603:31:603:32 | (unsigned int)... | 1.0 | +| test.c:604:15:604:65 | (...) | 3.361220122972616E19 | +| test.c:604:16:604:17 | 14 | 1.0 | +| test.c:604:16:604:17 | (unsigned int)... | 1.0 | +| test.c:604:16:604:28 | ... * ... | 5.797603059E9 | +| test.c:604:16:604:38 | ... > ... | 1.0 | +| test.c:604:16:604:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:604:21:604:28 | (...) | 5.797603059E9 | +| test.c:604:22:604:22 | 2 | 1.0 | +| test.c:604:22:604:22 | (unsigned int)... | 1.0 | +| test.c:604:22:604:27 | ... * ... | 5.797603059E9 | +| test.c:604:26:604:27 | ip | 5.797603059E9 | +| test.c:604:32:604:33 | 17 | 1.0 | +| test.c:604:32:604:33 | (unsigned int)... | 1.0 | +| test.c:604:32:604:38 | ... * ... | 5.797603059E9 | +| test.c:604:37:604:38 | ip | 5.797603059E9 | +| test.c:604:42:604:43 | 17 | 1.0 | +| test.c:604:42:604:43 | (unsigned int)... | 1.0 | +| test.c:604:42:604:54 | ... * ... | 5.797603059E9 | +| test.c:604:47:604:54 | (...) | 5.797603059E9 | +| test.c:604:48:604:48 | 2 | 1.0 | +| test.c:604:48:604:48 | (unsigned int)... | 1.0 | +| test.c:604:48:604:53 | ... * ... | 5.797603059E9 | +| test.c:604:52:604:53 | ip | 5.797603059E9 | +| test.c:604:58:604:59 | 17 | 1.0 | +| test.c:604:58:604:59 | (unsigned int)... | 1.0 | +| test.c:604:58:604:64 | ... * ... | 5.797603059E9 | +| test.c:604:63:604:64 | ip | 5.797603059E9 | +| test.c:605:19:605:30 | (...) | 1.1595206119E10 | +| test.c:605:19:605:35 | ... * ... | 1.1595206119E10 | +| test.c:605:20:605:20 | 2 | 1.0 | +| test.c:605:20:605:20 | (unsigned int)... | 1.0 | +| test.c:605:20:605:25 | ... * ... | 1.1595206119E10 | +| test.c:605:20:605:29 | ... + ... | 1.1595206119E10 | +| test.c:605:24:605:25 | ip | 1.1595206119E10 | +| test.c:605:29:605:29 | 1 | 1.0 | +| test.c:605:29:605:29 | (unsigned int)... | 1.0 | +| test.c:605:34:605:35 | 14 | 1.0 | +| test.c:605:34:605:35 | (unsigned int)... | 1.0 | +| test.c:606:19:606:20 | 14 | 1.0 | +| test.c:606:19:606:20 | (unsigned int)... | 1.0 | +| test.c:606:19:606:31 | ... * ... | 1.1595206119E10 | +| test.c:606:19:606:41 | ... > ... | 1.0 | +| test.c:606:19:608:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:606:24:606:31 | (...) | 1.1595206119E10 | +| test.c:606:25:606:25 | 2 | 1.0 | +| test.c:606:25:606:25 | (unsigned int)... | 1.0 | +| test.c:606:25:606:30 | ... * ... | 1.1595206119E10 | +| test.c:606:29:606:30 | ip | 1.1595206119E10 | +| test.c:606:35:606:36 | 17 | 1.0 | +| test.c:606:35:606:36 | (unsigned int)... | 1.0 | +| test.c:606:35:606:41 | ... * ... | 1.1595206119E10 | +| test.c:606:40:606:41 | ip | 1.1595206119E10 | +| test.c:607:21:607:22 | 14 | 1.0 | +| test.c:607:21:607:22 | (unsigned int)... | 1.0 | +| test.c:607:21:607:33 | ... * ... | 1.1595206119E10 | +| test.c:607:26:607:33 | (...) | 1.1595206119E10 | +| test.c:607:27:607:27 | 2 | 1.0 | +| test.c:607:27:607:27 | (unsigned int)... | 1.0 | +| test.c:607:27:607:32 | ... * ... | 1.1595206119E10 | +| test.c:607:31:607:32 | ip | 1.1595206119E10 | +| test.c:608:21:608:22 | 14 | 1.0 | +| test.c:608:21:608:22 | (unsigned int)... | 1.0 | +| test.c:608:21:608:27 | ... * ... | 1.1595206119E10 | +| test.c:608:26:608:27 | ip | 1.1595206119E10 | +| test.c:609:13:609:63 | (...) | 1.2100392444788552E21 | +| test.c:609:14:609:15 | 14 | 1.0 | +| test.c:609:14:609:15 | (unsigned int)... | 1.0 | +| test.c:609:14:609:20 | ... * ... | 3.4785618357E10 | +| test.c:609:14:609:36 | ... > ... | 1.0 | +| test.c:609:14:609:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:609:19:609:20 | ip | 3.4785618357E10 | +| test.c:609:24:609:31 | (...) | 3.4785618357E10 | +| test.c:609:24:609:36 | ... * ... | 3.4785618357E10 | +| test.c:609:25:609:26 | ip | 3.4785618357E10 | +| test.c:609:25:609:30 | ... + ... | 3.4785618357E10 | +| test.c:609:30:609:30 | 1 | 1.0 | +| test.c:609:30:609:30 | (unsigned int)... | 1.0 | +| test.c:609:35:609:36 | 17 | 1.0 | +| test.c:609:35:609:36 | (unsigned int)... | 1.0 | +| test.c:609:40:609:41 | 17 | 1.0 | +| test.c:609:40:609:41 | (unsigned int)... | 1.0 | +| test.c:609:40:609:46 | ... * ... | 3.4785618357E10 | +| test.c:609:45:609:46 | ip | 3.4785618357E10 | +| test.c:609:50:609:57 | (...) | 3.4785618357E10 | +| test.c:609:50:609:62 | ... * ... | 3.4785618357E10 | +| test.c:609:51:609:52 | ip | 3.4785618357E10 | +| test.c:609:51:609:56 | ... + ... | 3.4785618357E10 | +| test.c:609:56:609:56 | 1 | 1.0 | +| test.c:609:56:609:56 | (unsigned int)... | 1.0 | +| test.c:609:61:609:62 | 17 | 1.0 | +| test.c:609:61:609:62 | (unsigned int)... | 1.0 | +| test.c:610:13:610:13 | 4 | 1.0 | +| test.c:610:13:610:13 | (unsigned int)... | 1.0 | +| test.c:610:13:610:30 | ... * ... | 6.9571236714E10 | +| test.c:610:13:611:30 | ... + ... | 4.840156977915421E21 | +| test.c:610:13:612:30 | ... + ... | 3.3673570684347266E32 | +| test.c:610:13:618:26 | ... + ... | 9.071274901265435E65 | +| test.c:610:17:610:30 | (...) | 6.9571236714E10 | +| test.c:610:18:610:19 | ip | 6.9571236714E10 | +| test.c:610:18:610:24 | ... * ... | 6.9571236714E10 | +| test.c:610:18:610:29 | ... + ... | 6.9571236714E10 | +| test.c:610:23:610:24 | 14 | 1.0 | +| test.c:610:23:610:24 | (unsigned int)... | 1.0 | +| test.c:610:28:610:29 | 32 | 1.0 | +| test.c:610:28:610:29 | (unsigned int)... | 1.0 | +| test.c:611:13:611:30 | (...) | 6.9571236714E10 | +| test.c:611:14:611:14 | 2 | 1.0 | +| test.c:611:14:611:14 | (unsigned int)... | 1.0 | +| test.c:611:14:611:19 | ... * ... | 6.9571236714E10 | +| test.c:611:14:611:24 | ... * ... | 6.9571236714E10 | +| test.c:611:14:611:29 | ... + ... | 6.9571236714E10 | +| test.c:611:18:611:19 | ip | 6.9571236714E10 | +| test.c:611:23:611:24 | 14 | 1.0 | +| test.c:611:23:611:24 | (unsigned int)... | 1.0 | +| test.c:611:28:611:29 | 32 | 1.0 | +| test.c:611:28:611:29 | (unsigned int)... | 1.0 | +| test.c:612:13:612:13 | 2 | 1.0 | +| test.c:612:13:612:13 | (unsigned int)... | 1.0 | +| test.c:612:13:612:30 | ... * ... | 6.9571236714E10 | +| test.c:612:17:612:30 | (...) | 6.9571236714E10 | +| test.c:612:18:612:19 | ip | 6.9571236714E10 | +| test.c:612:18:612:24 | ... * ... | 6.9571236714E10 | +| test.c:612:18:612:29 | ... + ... | 6.9571236714E10 | +| test.c:612:23:612:24 | 14 | 1.0 | +| test.c:612:23:612:24 | (unsigned int)... | 1.0 | +| test.c:612:28:612:29 | 64 | 1.0 | +| test.c:612:28:612:29 | (unsigned int)... | 1.0 | +| test.c:613:13:618:26 | (...) | 2.693885654805863E33 | +| test.c:613:14:613:25 | (...) | 6.9571236714E10 | +| test.c:613:14:613:30 | ... * ... | 6.9571236714E10 | +| test.c:613:14:614:63 | ... > ... | 1.0 | +| test.c:613:14:618:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:613:15:613:15 | 2 | 1.0 | +| test.c:613:15:613:15 | (unsigned int)... | 1.0 | +| test.c:613:15:613:20 | ... * ... | 6.9571236714E10 | +| test.c:613:15:613:24 | ... + ... | 6.9571236714E10 | +| test.c:613:19:613:20 | ip | 6.9571236714E10 | +| test.c:613:24:613:24 | 1 | 1.0 | +| test.c:613:24:613:24 | (unsigned int)... | 1.0 | +| test.c:613:29:613:30 | 14 | 1.0 | +| test.c:613:29:613:30 | (unsigned int)... | 1.0 | +| test.c:614:13:614:63 | (...) | 4.840156977915421E21 | +| test.c:614:14:614:15 | 14 | 1.0 | +| test.c:614:14:614:15 | (unsigned int)... | 1.0 | +| test.c:614:14:614:26 | ... * ... | 6.9571236714E10 | +| test.c:614:14:614:36 | ... > ... | 1.0 | +| test.c:614:14:614:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:614:19:614:26 | (...) | 6.9571236714E10 | +| test.c:614:20:614:20 | 2 | 1.0 | +| test.c:614:20:614:20 | (unsigned int)... | 1.0 | +| test.c:614:20:614:25 | ... * ... | 6.9571236714E10 | +| test.c:614:24:614:25 | ip | 6.9571236714E10 | +| test.c:614:30:614:31 | 17 | 1.0 | +| test.c:614:30:614:31 | (unsigned int)... | 1.0 | +| test.c:614:30:614:36 | ... * ... | 6.9571236714E10 | +| test.c:614:35:614:36 | ip | 6.9571236714E10 | +| test.c:614:40:614:41 | 17 | 1.0 | +| test.c:614:40:614:41 | (unsigned int)... | 1.0 | +| test.c:614:40:614:52 | ... * ... | 6.9571236714E10 | +| test.c:614:45:614:52 | (...) | 6.9571236714E10 | +| test.c:614:46:614:46 | 2 | 1.0 | +| test.c:614:46:614:46 | (unsigned int)... | 1.0 | +| test.c:614:46:614:51 | ... * ... | 6.9571236714E10 | +| test.c:614:50:614:51 | ip | 6.9571236714E10 | +| test.c:614:56:614:57 | 17 | 1.0 | +| test.c:614:56:614:57 | (unsigned int)... | 1.0 | +| test.c:614:56:614:62 | ... * ... | 6.9571236714E10 | +| test.c:614:61:614:62 | ip | 6.9571236714E10 | +| test.c:615:17:615:28 | (...) | 1.39142473429E11 | +| test.c:615:17:615:33 | ... * ... | 1.39142473429E11 | +| test.c:615:18:615:18 | 2 | 1.0 | +| test.c:615:18:615:18 | (unsigned int)... | 1.0 | +| test.c:615:18:615:23 | ... * ... | 1.39142473429E11 | +| test.c:615:18:615:27 | ... + ... | 1.39142473429E11 | +| test.c:615:22:615:23 | ip | 1.39142473429E11 | +| test.c:615:27:615:27 | 1 | 1.0 | +| test.c:615:27:615:27 | (unsigned int)... | 1.0 | +| test.c:615:32:615:33 | 14 | 1.0 | +| test.c:615:32:615:33 | (unsigned int)... | 1.0 | +| test.c:616:17:616:18 | 14 | 1.0 | +| test.c:616:17:616:18 | (unsigned int)... | 1.0 | +| test.c:616:17:616:29 | ... * ... | 1.39142473429E11 | +| test.c:616:17:616:39 | ... > ... | 1.0 | +| test.c:616:17:618:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:616:22:616:29 | (...) | 1.39142473429E11 | +| test.c:616:23:616:23 | 2 | 1.0 | +| test.c:616:23:616:23 | (unsigned int)... | 1.0 | +| test.c:616:23:616:28 | ... * ... | 1.39142473429E11 | +| test.c:616:27:616:28 | ip | 1.39142473429E11 | +| test.c:616:33:616:34 | 17 | 1.0 | +| test.c:616:33:616:34 | (unsigned int)... | 1.0 | +| test.c:616:33:616:39 | ... * ... | 1.39142473429E11 | +| test.c:616:38:616:39 | ip | 1.39142473429E11 | +| test.c:617:19:617:20 | 14 | 1.0 | +| test.c:617:19:617:20 | (unsigned int)... | 1.0 | +| test.c:617:19:617:31 | ... * ... | 1.39142473429E11 | +| test.c:617:24:617:31 | (...) | 1.39142473429E11 | +| test.c:617:25:617:25 | 2 | 1.0 | +| test.c:617:25:617:25 | (unsigned int)... | 1.0 | +| test.c:617:25:617:30 | ... * ... | 1.39142473429E11 | +| test.c:617:29:617:30 | ip | 1.39142473429E11 | +| test.c:618:19:618:20 | 14 | 1.0 | +| test.c:618:19:618:20 | (unsigned int)... | 1.0 | +| test.c:618:19:618:25 | ... * ... | 1.39142473429E11 | +| test.c:618:24:618:25 | ip | 1.39142473429E11 | +| test.c:619:13:619:14 | 14 | 1.0 | +| test.c:619:13:619:14 | (unsigned int)... | 1.0 | +| test.c:619:13:619:19 | ... * ... | 6.9571236714E10 | +| test.c:619:13:619:35 | ... > ... | 1.0 | +| test.c:619:13:621:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:619:18:619:19 | ip | 6.9571236714E10 | +| test.c:619:23:619:30 | (...) | 6.9571236714E10 | +| test.c:619:23:619:35 | ... * ... | 6.9571236714E10 | +| test.c:619:24:619:25 | ip | 6.9571236714E10 | +| test.c:619:24:619:29 | ... + ... | 6.9571236714E10 | +| test.c:619:29:619:29 | 1 | 1.0 | +| test.c:619:29:619:29 | (unsigned int)... | 1.0 | +| test.c:619:34:619:35 | 17 | 1.0 | +| test.c:619:34:619:35 | (unsigned int)... | 1.0 | +| test.c:620:15:620:16 | 14 | 1.0 | +| test.c:620:15:620:16 | (unsigned int)... | 1.0 | +| test.c:620:15:620:21 | ... * ... | 6.9571236714E10 | +| test.c:620:20:620:21 | ip | 6.9571236714E10 | +| test.c:621:15:621:22 | (...) | 6.9571236714E10 | +| test.c:621:15:621:27 | ... * ... | 6.9571236714E10 | +| test.c:621:16:621:17 | ip | 6.9571236714E10 | +| test.c:621:16:621:21 | ... + ... | 6.9571236714E10 | +| test.c:621:21:621:21 | 1 | 1.0 | +| test.c:621:21:621:21 | (unsigned int)... | 1.0 | +| test.c:621:26:621:27 | 14 | 1.0 | +| test.c:621:26:621:27 | (unsigned int)... | 1.0 | +| test.c:622:10:622:23 | special_number | 1.297918419127476E201 | +| test.c:629:10:629:11 | 0 | 1.0 | +| test.c:630:7:630:8 | c1 | 1.0 | +| test.c:630:13:630:13 | x | 1.0 | +| test.c:630:13:630:23 | ... += ... | 1.0 | +| test.c:630:18:630:23 | 748596 | 1.0 | +| test.c:631:7:631:8 | c2 | 1.0 | +| test.c:631:13:631:13 | x | 2.0 | +| test.c:631:13:631:25 | ... += ... | 2.0 | +| test.c:631:18:631:25 | 84652395 | 1.0 | +| test.c:632:7:632:8 | c3 | 1.0 | +| test.c:632:13:632:13 | x | 4.0 | +| test.c:632:13:632:24 | ... += ... | 4.0 | +| test.c:632:18:632:24 | 3675895 | 1.0 | +| test.c:633:7:633:8 | c4 | 1.0 | +| test.c:633:13:633:13 | x | 8.0 | +| test.c:633:13:633:22 | ... += ... | 8.0 | +| test.c:633:18:633:22 | 98634 | 1.0 | +| test.c:634:7:634:8 | c5 | 1.0 | +| test.c:634:13:634:13 | x | 16.0 | +| test.c:634:13:634:24 | ... += ... | 16.0 | +| test.c:634:18:634:24 | 7834985 | 1.0 | +| test.c:635:7:635:8 | c1 | 2.0 | +| test.c:635:7:635:14 | ... && ... | 1.0 | +| test.c:635:13:635:14 | c2 | 2.0 | +| test.c:635:19:635:19 | x | 32.0 | +| test.c:635:19:635:32 | ... += ... | 32.0 | +| test.c:635:24:635:32 | 938457398 | 1.0 | +| test.c:636:7:636:8 | c1 | 3.0 | +| test.c:636:7:636:14 | ... && ... | 1.0 | +| test.c:636:13:636:14 | c3 | 2.0 | +| test.c:636:19:636:19 | x | 64.0 | +| test.c:636:19:636:31 | ... += ... | 64.0 | +| test.c:636:24:636:31 | 73895648 | 1.0 | +| test.c:637:7:637:8 | c1 | 4.0 | +| test.c:637:7:637:14 | ... && ... | 1.0 | +| test.c:637:13:637:14 | c4 | 2.0 | +| test.c:637:19:637:19 | x | 128.0 | +| test.c:637:19:637:31 | ... += ... | 128.0 | +| test.c:637:24:637:31 | 12345432 | 1.0 | +| test.c:638:7:638:8 | c1 | 5.0 | +| test.c:638:7:638:14 | ... && ... | 1.0 | +| test.c:638:13:638:14 | c5 | 2.0 | +| test.c:638:19:638:19 | x | 256.0 | +| test.c:638:19:638:28 | ... += ... | 256.0 | +| test.c:638:24:638:28 | 38847 | 1.0 | +| test.c:639:7:639:8 | c2 | 5.0 | +| test.c:639:7:639:14 | ... && ... | 1.0 | +| test.c:639:13:639:14 | c3 | 5.0 | +| test.c:639:19:639:19 | x | 512.0 | +| test.c:639:19:639:26 | ... += ... | 512.0 | +| test.c:639:24:639:26 | 234 | 1.0 | +| test.c:641:11:641:11 | x | 1024.0 | +| test.c:641:11:641:15 | ... + ... | 1048576.0 | +| test.c:641:11:641:19 | ... + ... | 1.073741824E9 | +| test.c:641:11:641:23 | ... + ... | 1.099511627776E12 | +| test.c:641:11:641:27 | ... + ... | 1.125899906842624E15 | +| test.c:641:11:641:31 | ... + ... | 1.152921504606847E18 | +| test.c:641:11:641:35 | ... + ... | 1.1805916207174113E21 | +| test.c:641:11:641:39 | ... + ... | 1.2089258196146292E24 | +| test.c:641:11:641:43 | ... + ... | 1.2379400392853803E27 | +| test.c:641:11:641:47 | ... + ... | 1.2676506002282294E30 | +| test.c:641:11:641:51 | ... + ... | 1.298074214633707E33 | +| test.c:641:11:641:55 | ... + ... | 1.329227995784916E36 | +| test.c:641:15:641:15 | x | 1024.0 | +| test.c:641:19:641:19 | x | 1024.0 | +| test.c:641:23:641:23 | x | 1024.0 | +| test.c:641:27:641:27 | x | 1024.0 | +| test.c:641:31:641:31 | x | 1024.0 | +| test.c:641:35:641:35 | x | 1024.0 | +| test.c:641:39:641:39 | x | 1024.0 | +| test.c:641:43:641:43 | x | 1024.0 | +| test.c:641:47:641:47 | x | 1024.0 | +| test.c:641:51:641:51 | x | 1024.0 | +| test.c:641:55:641:55 | x | 1024.0 | +| test.c:642:10:642:10 | y | 1.329227995784916E36 | +| test.c:647:20:647:20 | x | 1.0 | +| test.c:647:20:647:26 | ... < ... | 1.0 | +| test.c:647:20:647:36 | ... ? ... : ... | 1.0 | +| test.c:647:24:647:26 | 100 | 1.0 | +| test.c:647:24:647:26 | (unsigned int)... | 1.0 | +| test.c:647:30:647:30 | x | 1.0 | +| test.c:647:34:647:36 | 100 | 1.0 | +| test.c:647:34:647:36 | (unsigned int)... | 1.0 | +| test.c:650:3:650:4 | y1 | 1.0 | +| test.c:650:9:650:11 | ++ ... | 1.0 | +| test.c:650:11:650:11 | y | 1.0 | +| test.c:651:3:651:4 | y2 | 1.0 | +| test.c:651:19:651:19 | 3 | 1.0 | +| test.c:651:19:651:19 | (unsigned int)... | 1.0 | +| test.c:660:3:660:3 | i | 1.0 | +| test.c:660:3:660:8 | ... = ... | 1.0 | +| test.c:660:7:660:8 | 10 | 1.0 | +| test.c:661:7:661:7 | i | 1.0 | +| test.c:663:3:663:3 | i | 1.0 | +| test.c:663:3:663:8 | ... = ... | 1.0 | +| test.c:663:7:663:8 | 10 | 1.0 | +| test.c:664:3:664:3 | i | 1.0 | +| test.c:664:3:664:9 | ... += ... | 1.0 | +| test.c:664:8:664:9 | 10 | 1.0 | +| test.c:665:7:665:7 | i | 1.0 | +| test.c:667:3:667:3 | i | 1.0 | +| test.c:667:3:667:8 | ... = ... | 1.0 | +| test.c:667:7:667:8 | 40 | 1.0 | +| test.c:668:3:668:3 | i | 1.0 | +| test.c:668:3:668:9 | ... -= ... | 1.0 | +| test.c:668:8:668:9 | 10 | 1.0 | +| test.c:669:7:669:7 | i | 1.0 | +| test.c:671:3:671:3 | i | 1.0 | +| test.c:671:3:671:12 | ... = ... | 1.0 | +| test.c:671:7:671:7 | j | 1.0 | +| test.c:671:7:671:12 | ... = ... | 1.0 | +| test.c:671:11:671:12 | 40 | 1.0 | +| test.c:672:7:672:7 | i | 1.0 | +| test.c:674:3:674:3 | i | 1.0 | +| test.c:674:3:674:15 | ... = ... | 1.0 | +| test.c:674:7:674:15 | (...) | 1.0 | +| test.c:674:8:674:8 | j | 1.0 | +| test.c:674:8:674:14 | ... += ... | 1.0 | +| test.c:674:13:674:14 | 10 | 1.0 | +| test.c:675:7:675:7 | i | 1.0 | +| test.c:677:3:677:3 | i | 1.0 | +| test.c:677:3:677:20 | ... = ... | 1.0 | +| test.c:677:7:677:8 | 20 | 1.0 | +| test.c:677:7:677:20 | ... + ... | 1.0 | +| test.c:677:12:677:20 | (...) | 1.0 | +| test.c:677:13:677:13 | j | 1.0 | +| test.c:677:13:677:19 | ... -= ... | 1.0 | +| test.c:677:18:677:19 | 10 | 1.0 | +| test.c:678:7:678:7 | i | 1.0 | +| test.c:683:14:683:15 | 0 | 1.0 | +| test.c:685:7:685:7 | 3 | 1.0 | +| test.c:685:7:685:7 | (unsigned int)... | 1.0 | +| test.c:685:7:685:12 | ... <= ... | 1.0 | +| test.c:685:7:685:23 | ... && ... | 1.0 | +| test.c:685:7:685:33 | ... && ... | 1.0 | +| test.c:685:7:685:44 | ... && ... | 1.0 | +| test.c:685:12:685:12 | a | 1.0 | +| test.c:685:17:685:17 | a | 1.0 | +| test.c:685:17:685:23 | ... <= ... | 1.0 | +| test.c:685:22:685:23 | 11 | 1.0 | +| test.c:685:22:685:23 | (unsigned int)... | 1.0 | +| test.c:685:28:685:28 | 5 | 1.0 | +| test.c:685:28:685:28 | (unsigned int)... | 1.0 | +| test.c:685:28:685:33 | ... <= ... | 1.0 | +| test.c:685:33:685:33 | b | 1.0 | +| test.c:685:38:685:38 | b | 1.0 | +| test.c:685:38:685:44 | ... <= ... | 1.0 | +| test.c:685:43:685:44 | 23 | 1.0 | +| test.c:685:43:685:44 | (unsigned int)... | 1.0 | +| test.c:686:13:686:13 | a | 1.0 | +| test.c:686:13:686:15 | (int)... | 1.0 | +| test.c:686:13:686:15 | ... * ... | 1.0 | +| test.c:686:15:686:15 | b | 1.0 | +| test.c:687:5:687:9 | total | 1.0 | +| test.c:687:5:687:14 | ... += ... | 1.0 | +| test.c:687:14:687:14 | r | 1.0 | +| test.c:689:7:689:7 | 3 | 1.0 | | test.c:689:7:689:7 | (unsigned int)... | 1.0 | | test.c:689:7:689:12 | ... <= ... | 1.0 | | test.c:689:7:689:23 | ... && ... | 1.0 | -| test.c:689:12:689:12 | b | 1.0 | -| test.c:689:17:689:17 | b | 1.0 | +| test.c:689:7:689:33 | ... && ... | 1.0 | +| test.c:689:7:689:44 | ... && ... | 1.0 | +| test.c:689:12:689:12 | a | 2.0 | +| test.c:689:17:689:17 | a | 2.0 | | test.c:689:17:689:23 | ... <= ... | 1.0 | -| test.c:689:22:689:23 | 23 | 1.0 | +| test.c:689:22:689:23 | 11 | 1.0 | | test.c:689:22:689:23 | (unsigned int)... | 1.0 | -| test.c:690:13:690:14 | 11 | 1.0 | -| test.c:690:13:690:14 | (unsigned int)... | 1.0 | -| test.c:690:13:690:16 | (int)... | 1.0 | -| test.c:690:13:690:16 | ... * ... | 1.0 | -| test.c:690:16:690:16 | b | 1.0 | -| test.c:691:5:691:9 | total | 1.0 | -| test.c:691:5:691:14 | ... += ... | 1.0 | -| test.c:691:14:691:14 | r | 1.0 | -| test.c:693:7:693:7 | 0 | 1.0 | +| test.c:689:28:689:28 | 0 | 1.0 | +| test.c:689:28:689:28 | (unsigned int)... | 1.0 | +| test.c:689:28:689:33 | ... <= ... | 1.0 | +| test.c:689:33:689:33 | b | 3.0 | +| test.c:689:38:689:38 | b | 3.0 | +| test.c:689:38:689:44 | ... <= ... | 1.0 | +| test.c:689:43:689:44 | 23 | 1.0 | +| test.c:689:43:689:44 | (unsigned int)... | 1.0 | +| test.c:690:13:690:13 | a | 2.0 | +| test.c:690:13:690:15 | (int)... | 6.0 | +| test.c:690:13:690:15 | ... * ... | 6.0 | +| test.c:690:15:690:15 | b | 3.0 | +| test.c:691:5:691:9 | total | 2.0 | +| test.c:691:5:691:14 | ... += ... | 12.0 | +| test.c:691:14:691:14 | r | 6.0 | +| test.c:693:7:693:7 | 3 | 1.0 | | test.c:693:7:693:7 | (unsigned int)... | 1.0 | | test.c:693:7:693:12 | ... <= ... | 1.0 | | test.c:693:7:693:23 | ... && ... | 1.0 | -| test.c:693:12:693:12 | b | 2.0 | -| test.c:693:17:693:17 | b | 2.0 | +| test.c:693:7:693:34 | ... && ... | 1.0 | +| test.c:693:7:693:45 | ... && ... | 1.0 | +| test.c:693:12:693:12 | a | 3.0 | +| test.c:693:17:693:17 | a | 3.0 | | test.c:693:17:693:23 | ... <= ... | 1.0 | -| test.c:693:22:693:23 | 23 | 1.0 | +| test.c:693:22:693:23 | 11 | 1.0 | | test.c:693:22:693:23 | (unsigned int)... | 1.0 | -| test.c:694:13:694:14 | 11 | 1.0 | -| test.c:694:13:694:14 | (unsigned int)... | 1.0 | -| test.c:694:13:694:16 | (int)... | 2.0 | -| test.c:694:13:694:16 | ... * ... | 2.0 | -| test.c:694:16:694:16 | b | 2.0 | -| test.c:695:5:695:9 | total | 2.0 | -| test.c:695:5:695:14 | ... += ... | 4.0 | -| test.c:695:14:695:14 | r | 2.0 | -| test.c:697:7:697:8 | 13 | 1.0 | -| test.c:697:7:697:8 | (unsigned int)... | 1.0 | -| test.c:697:7:697:13 | ... <= ... | 1.0 | -| test.c:697:7:697:24 | ... && ... | 1.0 | -| test.c:697:13:697:13 | b | 3.0 | -| test.c:697:18:697:18 | b | 3.0 | -| test.c:697:18:697:24 | ... <= ... | 1.0 | -| test.c:697:23:697:24 | 23 | 1.0 | -| test.c:697:23:697:24 | (unsigned int)... | 1.0 | -| test.c:698:13:698:14 | 11 | 1.0 | -| test.c:698:13:698:14 | (unsigned int)... | 1.0 | -| test.c:698:13:698:16 | (int)... | 3.0 | -| test.c:698:13:698:16 | ... * ... | 3.0 | -| test.c:698:16:698:16 | b | 3.0 | -| test.c:699:5:699:9 | total | 6.0 | -| test.c:699:5:699:14 | ... += ... | 18.0 | -| test.c:699:14:699:14 | r | 3.0 | -| test.c:702:10:702:14 | total | 24.0 | -| test.c:707:3:707:3 | x | 1.0 | -| test.c:707:3:707:22 | ... = ... | 1.0 | -| test.c:707:7:707:7 | y | 1.0 | -| test.c:707:7:707:22 | ... = ... | 1.0 | -| test.c:707:11:707:22 | 1000000003 | 1.0 | -| test.c:708:3:708:4 | xy | 1.0 | -| test.c:708:3:708:12 | ... = ... | 1.0 | -| test.c:708:8:708:8 | x | 1.0 | -| test.c:708:8:708:12 | ... * ... | 1.0 | -| test.c:708:12:708:12 | y | 1.0 | -| test.c:709:10:709:11 | xy | 1.0 | -| test.c:714:3:714:3 | x | 1.0 | -| test.c:714:3:714:14 | ... = ... | 1.0 | -| test.c:714:7:714:14 | 274177 | 1.0 | -| test.c:715:3:715:3 | y | 1.0 | -| test.c:715:3:715:22 | ... = ... | 1.0 | -| test.c:715:7:715:22 | 67280421310721 | 1.0 | -| test.c:716:3:716:4 | xy | 1.0 | -| test.c:716:3:716:12 | ... = ... | 1.0 | -| test.c:716:8:716:8 | x | 1.0 | -| test.c:716:8:716:12 | ... * ... | 1.0 | -| test.c:716:12:716:12 | y | 1.0 | -| test.c:717:10:717:11 | xy | 1.0 | -| test.c:721:7:721:8 | ui | 1.0 | -| test.c:721:7:721:14 | ... >= ... | 1.0 | -| test.c:721:13:721:14 | 10 | 1.0 | -| test.c:721:13:721:14 | (unsigned int)... | 1.0 | -| test.c:722:28:722:44 | (unsigned long)... | 1.0 | -| test.c:722:28:722:49 | ... * ... | 1.0 | -| test.c:722:43:722:44 | ui | 1.0 | -| test.c:722:48:722:49 | (unsigned long)... | 1.0 | -| test.c:722:48:722:49 | ui | 1.0 | -| test.c:723:12:723:17 | result | 1.0 | -| test.c:725:7:725:8 | ul | 1.0 | -| test.c:725:7:725:14 | ... >= ... | 1.0 | -| test.c:725:13:725:14 | 10 | 1.0 | -| test.c:725:13:725:14 | (unsigned long)... | 1.0 | -| test.c:726:28:726:29 | ul | 1.0 | -| test.c:726:28:726:34 | ... * ... | 1.0 | -| test.c:726:33:726:34 | ul | 1.0 | -| test.c:727:12:727:17 | result | 1.0 | -| test.c:729:10:729:10 | 0 | 1.0 | -| test.c:729:10:729:10 | (unsigned long)... | 1.0 | -| test.c:733:7:733:8 | ui | 1.0 | -| test.c:733:7:733:14 | ... <= ... | 1.0 | -| test.c:733:7:733:25 | ... && ... | 1.0 | -| test.c:733:13:733:14 | 10 | 1.0 | -| test.c:733:13:733:14 | (unsigned int)... | 1.0 | -| test.c:733:19:733:20 | ui | 1.0 | -| test.c:733:19:733:25 | ... >= ... | 1.0 | -| test.c:733:25:733:25 | 2 | 1.0 | -| test.c:733:25:733:25 | (unsigned int)... | 1.0 | -| test.c:734:5:734:6 | ui | 1.0 | -| test.c:734:5:734:16 | ... *= ... | 1.0 | -| test.c:734:11:734:12 | ui | 1.0 | -| test.c:734:11:734:16 | ... + ... | 1.0 | -| test.c:734:16:734:16 | 0 | 1.0 | -| test.c:734:16:734:16 | (unsigned int)... | 1.0 | -| test.c:735:12:735:13 | (unsigned long)... | 1.0 | -| test.c:735:12:735:13 | ui | 1.0 | -| test.c:738:26:738:27 | 10 | 1.0 | -| test.c:738:26:738:27 | (unsigned int)... | 1.0 | -| test.c:739:3:739:9 | uiconst | 1.0 | -| test.c:739:3:739:14 | ... *= ... | 1.0 | -| test.c:739:14:739:14 | 4 | 1.0 | -| test.c:739:14:739:14 | (unsigned int)... | 1.0 | -| test.c:741:27:741:28 | 10 | 1.0 | -| test.c:741:27:741:28 | (unsigned long)... | 1.0 | -| test.c:742:3:742:9 | ulconst | 1.0 | -| test.c:742:3:742:14 | ... *= ... | 1.0 | -| test.c:742:14:742:14 | 4 | 1.0 | -| test.c:742:14:742:14 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | uiconst | 1.0 | -| test.c:743:10:743:26 | ... + ... | 1.0 | -| test.c:743:20:743:26 | ulconst | 1.0 | -| test.c:747:7:747:7 | i | 1.0 | -| test.c:747:7:747:13 | ... >= ... | 1.0 | -| test.c:747:7:747:23 | ... && ... | 1.0 | -| test.c:747:12:747:13 | - ... | 1.0 | -| test.c:747:13:747:13 | 1 | 1.0 | -| test.c:747:18:747:18 | i | 1.0 | -| test.c:747:18:747:23 | ... <= ... | 1.0 | -| test.c:747:23:747:23 | 2 | 1.0 | -| test.c:748:5:748:5 | i | 1.0 | -| test.c:748:5:748:13 | ... = ... | 1.0 | -| test.c:748:9:748:9 | 5 | 1.0 | -| test.c:748:9:748:13 | ... * ... | 1.0 | -| test.c:748:13:748:13 | i | 1.0 | -| test.c:749:9:749:9 | i | 1.0 | -| test.c:751:5:751:5 | i | 1.0 | -| test.c:751:5:751:14 | ... = ... | 1.0 | -| test.c:751:9:751:9 | i | 1.0 | -| test.c:751:9:751:14 | ... * ... | 1.0 | -| test.c:751:13:751:14 | - ... | 1.0 | -| test.c:751:14:751:14 | 3 | 1.0 | -| test.c:752:9:752:9 | i | 1.0 | -| test.c:754:5:754:5 | i | 1.0 | -| test.c:754:5:754:10 | ... *= ... | 1.0 | -| test.c:754:10:754:10 | 7 | 1.0 | -| test.c:755:9:755:9 | i | 1.0 | -| test.c:757:5:757:5 | i | 1.0 | -| test.c:757:5:757:12 | ... *= ... | 1.0 | -| test.c:757:10:757:12 | - ... | 1.0 | -| test.c:757:11:757:12 | 11 | 1.0 | -| test.c:758:9:758:9 | i | 1.0 | -| test.c:760:7:760:7 | i | 2.0 | -| test.c:760:7:760:13 | ... == ... | 1.0 | -| test.c:760:12:760:13 | - ... | 1.0 | -| test.c:760:13:760:13 | 1 | 1.0 | -| test.c:761:5:761:5 | i | 1.0 | -| test.c:761:5:761:27 | ... = ... | 2.0 | -| test.c:761:9:761:9 | i | 2.0 | -| test.c:761:9:761:27 | ... * ... | 2.0 | -| test.c:761:13:761:27 | (int)... | 1.0 | -| test.c:761:18:761:27 | 4294967295 | 1.0 | -| test.c:762:9:762:9 | i | 2.0 | -| test.c:764:3:764:3 | i | 1.0 | -| test.c:764:3:764:12 | ... = ... | 4.0 | -| test.c:764:7:764:7 | i | 4.0 | -| test.c:764:7:764:12 | ... * ... | 4.0 | -| test.c:764:11:764:12 | - ... | 1.0 | -| test.c:764:12:764:12 | 1 | 1.0 | -| test.c:765:10:765:10 | i | 4.0 | -| test.c:767:20:767:20 | 1 | 1.0 | -| test.c:767:20:767:20 | (signed char)... | 1.0 | -| test.c:768:3:768:3 | i | 1.0 | -| test.c:768:3:768:17 | ... = ... | 1.0 | -| test.c:768:7:768:17 | (...) | 1.0 | -| test.c:768:7:768:17 | (int)... | 1.0 | -| test.c:768:8:768:11 | * ... | 1.0 | -| test.c:768:8:768:16 | ... *= ... | 1.0 | -| test.c:768:10:768:11 | sc | 1.0 | -| test.c:768:16:768:16 | 2 | 1.0 | -| test.c:770:7:770:7 | i | 1.0 | -| test.c:772:10:772:10 | 0 | 1.0 | -| test.c:777:7:777:7 | (int)... | 1.0 | -| test.c:777:7:777:7 | n | 1.0 | -| test.c:779:7:779:7 | n | 1.0 | -| test.c:779:7:779:11 | ... > ... | 1.0 | -| test.c:779:11:779:11 | 0 | 1.0 | -| test.c:779:11:779:11 | (unsigned int)... | 1.0 | -| test.c:780:9:780:9 | (int)... | 1.0 | -| test.c:780:9:780:9 | n | 1.0 | -| test.c:783:7:783:7 | n | 2.0 | -| test.c:783:7:783:12 | ... != ... | 1.0 | -| test.c:783:12:783:12 | 0 | 1.0 | -| test.c:783:12:783:12 | (unsigned int)... | 1.0 | -| test.c:784:9:784:9 | (int)... | 2.0 | -| test.c:784:9:784:9 | n | 2.0 | -| test.c:786:9:786:9 | (int)... | 2.0 | -| test.c:786:9:786:9 | n | 2.0 | -| test.c:789:7:789:8 | ! ... | 1.0 | -| test.c:789:8:789:8 | n | 4.0 | -| test.c:790:9:790:9 | (int)... | 4.0 | -| test.c:790:9:790:9 | n | 4.0 | -| test.c:792:9:792:9 | (int)... | 4.0 | -| test.c:792:9:792:9 | n | 4.0 | -| test.c:795:10:795:10 | n | 13.0 | -| test.c:795:10:795:15 | ... != ... | 1.0 | -| test.c:795:15:795:15 | 0 | 1.0 | -| test.c:795:15:795:15 | (unsigned int)... | 1.0 | -| test.c:796:5:796:5 | n | 13.0 | -| test.c:796:5:796:7 | ... -- | 13.0 | -| test.c:799:7:799:7 | (int)... | 13.0 | -| test.c:799:7:799:7 | n | 13.0 | -| test.c:803:7:803:7 | (int)... | 1.0 | -| test.c:803:7:803:7 | n | 1.0 | -| test.c:803:7:803:11 | ... < ... | 1.0 | -| test.c:803:11:803:11 | 0 | 1.0 | -| test.c:806:7:806:7 | (int)... | 1.0 | -| test.c:806:7:806:7 | n | 1.0 | -| test.c:806:7:806:12 | ... == ... | 1.0 | -| test.c:806:12:806:12 | 0 | 1.0 | -| test.c:807:9:807:9 | (int)... | 1.0 | -| test.c:807:9:807:9 | n | 1.0 | -| test.c:809:9:809:9 | (int)... | 1.0 | -| test.c:809:9:809:9 | n | 1.0 | -| test.c:812:7:812:7 | n | 2.0 | -| test.c:813:9:813:9 | (int)... | 2.0 | -| test.c:813:9:813:9 | n | 2.0 | -| test.c:815:9:815:9 | (int)... | 2.0 | -| test.c:815:9:815:9 | n | 2.0 | -| test.c:818:10:818:10 | (int)... | 13.0 | -| test.c:818:10:818:10 | n | 12.0 | -| test.c:818:10:818:15 | ... != ... | 1.0 | -| test.c:818:15:818:15 | 0 | 1.0 | -| test.c:819:5:819:5 | n | 12.0 | -| test.c:819:5:819:7 | ... -- | 12.0 | -| test.c:822:7:822:7 | (int)... | 12.0 | -| test.c:822:7:822:7 | n | 12.0 | -| test.c:826:7:826:7 | (int)... | 1.0 | -| test.c:826:7:826:7 | n | 1.0 | -| test.c:826:7:826:12 | ... != ... | 1.0 | -| test.c:826:12:826:12 | 0 | 1.0 | -| test.c:827:9:827:9 | (int)... | 1.0 | -| test.c:827:9:827:9 | n | 1.0 | -| test.c:827:9:827:14 | ... >= ... | 1.0 | -| test.c:827:14:827:14 | 0 | 1.0 | -| test.c:828:11:828:11 | (int)... | 1.0 | -| test.c:828:11:828:11 | n | 1.0 | -| test.c:832:7:832:7 | (int)... | 2.0 | -| test.c:832:7:832:7 | n | 2.0 | -| test.c:832:7:832:12 | ... >= ... | 1.0 | -| test.c:832:12:832:12 | 5 | 1.0 | -| test.c:833:9:833:9 | 2 | 1.0 | -| test.c:833:9:833:13 | ... * ... | 2.0 | -| test.c:833:9:833:18 | ... - ... | 2.0 | -| test.c:833:9:833:23 | ... == ... | 1.0 | -| test.c:833:13:833:13 | (int)... | 2.0 | -| test.c:833:13:833:13 | n | 2.0 | -| test.c:833:17:833:18 | 10 | 1.0 | -| test.c:833:23:833:23 | 0 | 1.0 | -| test.c:836:9:836:9 | (int)... | 2.0 | -| test.c:836:9:836:9 | n | 2.0 | -| test.c:839:7:839:7 | (int)... | 3.0 | -| test.c:839:7:839:7 | n | 3.0 | -| test.c:839:7:839:17 | ... != ... | 1.0 | -| test.c:839:7:839:32 | ... && ... | 1.0 | -| test.c:839:12:839:17 | - ... | 1.0 | -| test.c:839:13:839:17 | 32768 | 1.0 | -| test.c:839:22:839:22 | (int)... | 3.0 | -| test.c:839:22:839:22 | n | 3.0 | -| test.c:839:22:839:32 | ... != ... | 1.0 | -| test.c:839:27:839:32 | - ... | 1.0 | -| test.c:839:28:839:32 | 32767 | 1.0 | -| test.c:840:9:840:9 | (int)... | 3.0 | -| test.c:840:9:840:9 | n | 3.0 | -| test.c:843:7:843:7 | (int)... | 4.0 | -| test.c:843:7:843:7 | n | 4.0 | -| test.c:843:7:843:12 | ... >= ... | 1.0 | -| test.c:843:12:843:12 | 0 | 1.0 | -| test.c:844:5:844:5 | n | 4.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 16.0 | -| test.c:844:10:844:10 | (int)... | 4.0 | -| test.c:844:10:844:10 | n | 4.0 | -| test.c:844:14:844:14 | (int)... | 4.0 | -| test.c:844:14:844:14 | n | 4.0 | -| test.c:845:5:845:6 | ! ... | 1.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 64.0 | -| test.c:845:6:845:6 | n | 8.0 | -| test.c:845:10:845:10 | (int)... | 8.0 | -| test.c:845:10:845:10 | n | 8.0 | -| test.c:845:14:845:14 | (int)... | 8.0 | -| test.c:845:14:845:14 | n | 8.0 | -| test.c:856:7:856:8 | (unsigned long)... | 1.0 | -| test.c:856:7:856:8 | ss | 1.0 | -| test.c:856:7:856:22 | ... < ... | 1.0 | -| test.c:856:12:856:22 | sizeof(int) | 1.0 | -| test.c:857:9:857:10 | (int)... | 1.0 | -| test.c:857:9:857:10 | ss | 1.0 | -| test.c:860:7:860:8 | (int)... | 2.0 | -| test.c:860:7:860:8 | ss | 2.0 | -| test.c:860:7:860:17 | ... < ... | 1.0 | -| test.c:860:12:860:17 | 32769 | 1.0 | -| test.c:861:9:861:10 | (int)... | 2.0 | -| test.c:861:9:861:10 | ss | 2.0 | -| test.c:864:7:864:15 | (int)... | 1.0 | -| test.c:864:7:864:15 | (short)... | 1.0 | -| test.c:864:7:864:20 | ... >= ... | 1.0 | -| test.c:864:14:864:15 | us | 1.0 | -| test.c:864:20:864:20 | 0 | 1.0 | -| test.c:865:9:865:10 | (int)... | 1.0 | -| test.c:865:9:865:10 | us | 1.0 | -| test.c:868:7:868:15 | (int)... | 2.0 | -| test.c:868:7:868:15 | (short)... | 2.0 | -| test.c:868:7:868:21 | ... >= ... | 1.0 | -| test.c:868:14:868:15 | us | 2.0 | -| test.c:868:20:868:21 | - ... | 1.0 | -| test.c:868:21:868:21 | 1 | 1.0 | -| test.c:869:9:869:10 | (int)... | 2.0 | -| test.c:869:9:869:10 | us | 2.0 | -| test.c:872:7:872:8 | (unsigned long)... | 3.0 | -| test.c:872:7:872:8 | ss | 3.0 | -| test.c:872:7:872:23 | ... >= ... | 1.0 | -| test.c:872:13:872:23 | sizeof(int) | 1.0 | -| test.c:873:9:873:10 | (int)... | 3.0 | -| test.c:873:9:873:10 | ss | 3.0 | -| test.c:876:7:876:8 | (int)... | 4.0 | -| test.c:876:7:876:8 | ss | 4.0 | -| test.c:876:7:876:12 | (unsigned long)... | 4.0 | -| test.c:876:7:876:12 | ... + ... | 4.0 | -| test.c:876:7:876:26 | ... < ... | 1.0 | -| test.c:876:12:876:12 | 1 | 1.0 | -| test.c:876:16:876:26 | sizeof(int) | 1.0 | -| test.c:877:9:877:10 | (int)... | 4.0 | -| test.c:877:9:877:10 | ss | 4.0 | -| test.c:883:8:883:8 | s | 1.0 | -| test.c:883:8:883:12 | ... = ... | 1.0 | -| test.c:883:12:883:12 | 0 | 1.0 | -| test.c:883:15:883:15 | s | 13.0 | -| test.c:883:15:883:20 | ... < ... | 1.0 | -| test.c:883:19:883:20 | 10 | 1.0 | -| test.c:883:23:883:23 | s | 13.0 | -| test.c:883:23:883:25 | ... ++ | 13.0 | -| test.c:884:18:884:18 | s | 13.0 | -| test.c:884:18:884:22 | ... + ... | 13.0 | -| test.c:884:22:884:22 | s | 13.0 | -| test.c:885:9:885:14 | result | 13.0 | -| test.c:890:10:890:11 | 0 | 1.0 | -| test.c:891:7:891:7 | i | 1.0 | -| test.c:891:7:891:11 | ... < ... | 1.0 | -| test.c:891:11:891:11 | 0 | 1.0 | -| test.c:892:9:892:9 | i | 1.0 | -| test.c:895:20:895:20 | 0 | 1.0 | -| test.c:895:20:895:20 | (unsigned int)... | 1.0 | -| test.c:896:7:896:7 | u | 1.0 | -| test.c:896:7:896:11 | ... < ... | 1.0 | -| test.c:896:11:896:11 | 0 | 1.0 | -| test.c:896:11:896:11 | (unsigned int)... | 1.0 | -| test.c:897:9:897:9 | (int)... | 1.0 | -| test.c:897:9:897:9 | u | 1.0 | -| test.c:902:12:902:12 | s | 1.0 | -| test.c:902:12:902:16 | ... % ... | 1.0 | -| test.c:902:16:902:16 | 5 | 1.0 | -| test.c:903:7:903:8 | s2 | 1.0 | -| test.c:908:7:908:7 | x | 1.0 | -| test.c:909:9:909:9 | y | 1.0 | -| test.c:909:9:909:14 | ... != ... | 1.0 | -| test.c:909:14:909:14 | 0 | 1.0 | -| test.c:910:12:910:12 | 0 | 1.0 | -| test.c:913:7:913:7 | y | 2.0 | -| test.c:922:7:922:7 | x | 1.0 | -| test.c:922:7:922:13 | ... >= ... | 1.0 | -| test.c:922:12:922:13 | 10 | 1.0 | -| test.c:927:7:927:7 | x | 13.0 | -| test.c:932:16:932:26 | 2147483647 | 1.0 | -| test.c:933:16:933:19 | 256 | 1.0 | -| test.c:934:7:934:13 | (...) | 1.0 | -| test.c:934:7:934:20 | ... <= ... | 1.0 | -| test.c:934:8:934:8 | x | 1.0 | -| test.c:934:8:934:12 | ... + ... | 1.0 | -| test.c:934:12:934:12 | y | 1.0 | -| test.c:934:18:934:20 | 512 | 1.0 | -| test.c:935:9:935:9 | x | 1.0 | -| test.c:936:9:936:9 | y | 1.0 | +| test.c:693:28:693:29 | 13 | 1.0 | +| test.c:693:28:693:29 | (unsigned int)... | 1.0 | +| test.c:693:28:693:34 | ... <= ... | 1.0 | +| test.c:693:34:693:34 | b | 7.0 | +| test.c:693:39:693:39 | b | 7.0 | +| test.c:693:39:693:45 | ... <= ... | 1.0 | +| test.c:693:44:693:45 | 23 | 1.0 | +| test.c:693:44:693:45 | (unsigned int)... | 1.0 | +| test.c:694:13:694:13 | a | 3.0 | +| test.c:694:13:694:15 | (int)... | 21.0 | +| test.c:694:13:694:15 | ... * ... | 21.0 | +| test.c:694:15:694:15 | b | 7.0 | +| test.c:695:5:695:9 | total | 14.0 | +| test.c:695:5:695:14 | ... += ... | 294.0 | +| test.c:695:14:695:14 | r | 21.0 | +| test.c:698:10:698:14 | total | 308.0 | +| test.c:702:14:702:15 | 0 | 1.0 | +| test.c:704:7:704:7 | 5 | 1.0 | +| test.c:704:7:704:7 | (unsigned int)... | 1.0 | +| test.c:704:7:704:12 | ... <= ... | 1.0 | +| test.c:704:7:704:23 | ... && ... | 1.0 | +| test.c:704:12:704:12 | b | 1.0 | +| test.c:704:17:704:17 | b | 1.0 | +| test.c:704:17:704:23 | ... <= ... | 1.0 | +| test.c:704:22:704:23 | 23 | 1.0 | +| test.c:704:22:704:23 | (unsigned int)... | 1.0 | +| test.c:705:13:705:14 | 11 | 1.0 | +| test.c:705:13:705:14 | (unsigned int)... | 1.0 | +| test.c:705:13:705:16 | (int)... | 1.0 | +| test.c:705:13:705:16 | ... * ... | 1.0 | +| test.c:705:16:705:16 | b | 1.0 | +| test.c:706:5:706:9 | total | 1.0 | +| test.c:706:5:706:14 | ... += ... | 1.0 | +| test.c:706:14:706:14 | r | 1.0 | +| test.c:708:7:708:7 | 0 | 1.0 | +| test.c:708:7:708:7 | (unsigned int)... | 1.0 | +| test.c:708:7:708:12 | ... <= ... | 1.0 | +| test.c:708:7:708:23 | ... && ... | 1.0 | +| test.c:708:12:708:12 | b | 2.0 | +| test.c:708:17:708:17 | b | 2.0 | +| test.c:708:17:708:23 | ... <= ... | 1.0 | +| test.c:708:22:708:23 | 23 | 1.0 | +| test.c:708:22:708:23 | (unsigned int)... | 1.0 | +| test.c:709:13:709:14 | 11 | 1.0 | +| test.c:709:13:709:14 | (unsigned int)... | 1.0 | +| test.c:709:13:709:16 | (int)... | 2.0 | +| test.c:709:13:709:16 | ... * ... | 2.0 | +| test.c:709:16:709:16 | b | 2.0 | +| test.c:710:5:710:9 | total | 2.0 | +| test.c:710:5:710:14 | ... += ... | 4.0 | +| test.c:710:14:710:14 | r | 2.0 | +| test.c:712:7:712:8 | 13 | 1.0 | +| test.c:712:7:712:8 | (unsigned int)... | 1.0 | +| test.c:712:7:712:13 | ... <= ... | 1.0 | +| test.c:712:7:712:24 | ... && ... | 1.0 | +| test.c:712:13:712:13 | b | 3.0 | +| test.c:712:18:712:18 | b | 3.0 | +| test.c:712:18:712:24 | ... <= ... | 1.0 | +| test.c:712:23:712:24 | 23 | 1.0 | +| test.c:712:23:712:24 | (unsigned int)... | 1.0 | +| test.c:713:13:713:14 | 11 | 1.0 | +| test.c:713:13:713:14 | (unsigned int)... | 1.0 | +| test.c:713:13:713:16 | (int)... | 3.0 | +| test.c:713:13:713:16 | ... * ... | 3.0 | +| test.c:713:16:713:16 | b | 3.0 | +| test.c:714:5:714:9 | total | 6.0 | +| test.c:714:5:714:14 | ... += ... | 18.0 | +| test.c:714:14:714:14 | r | 3.0 | +| test.c:717:10:717:14 | total | 24.0 | +| test.c:722:3:722:3 | x | 1.0 | +| test.c:722:3:722:22 | ... = ... | 1.0 | +| test.c:722:7:722:7 | y | 1.0 | +| test.c:722:7:722:22 | ... = ... | 1.0 | +| test.c:722:11:722:22 | 1000000003 | 1.0 | +| test.c:723:3:723:4 | xy | 1.0 | +| test.c:723:3:723:12 | ... = ... | 1.0 | +| test.c:723:8:723:8 | x | 1.0 | +| test.c:723:8:723:12 | ... * ... | 1.0 | +| test.c:723:12:723:12 | y | 1.0 | +| test.c:724:10:724:11 | xy | 1.0 | +| test.c:729:3:729:3 | x | 1.0 | +| test.c:729:3:729:14 | ... = ... | 1.0 | +| test.c:729:7:729:14 | 274177 | 1.0 | +| test.c:730:3:730:3 | y | 1.0 | +| test.c:730:3:730:22 | ... = ... | 1.0 | +| test.c:730:7:730:22 | 67280421310721 | 1.0 | +| test.c:731:3:731:4 | xy | 1.0 | +| test.c:731:3:731:12 | ... = ... | 1.0 | +| test.c:731:8:731:8 | x | 1.0 | +| test.c:731:8:731:12 | ... * ... | 1.0 | +| test.c:731:12:731:12 | y | 1.0 | +| test.c:732:10:732:11 | xy | 1.0 | +| test.c:736:7:736:8 | ui | 1.0 | +| test.c:736:7:736:14 | ... >= ... | 1.0 | +| test.c:736:13:736:14 | 10 | 1.0 | +| test.c:736:13:736:14 | (unsigned int)... | 1.0 | +| test.c:737:28:737:44 | (unsigned long)... | 1.0 | +| test.c:737:28:737:49 | ... * ... | 1.0 | +| test.c:737:43:737:44 | ui | 1.0 | +| test.c:737:48:737:49 | (unsigned long)... | 1.0 | +| test.c:737:48:737:49 | ui | 1.0 | +| test.c:738:12:738:17 | result | 1.0 | +| test.c:740:7:740:8 | ul | 1.0 | +| test.c:740:7:740:14 | ... >= ... | 1.0 | +| test.c:740:13:740:14 | 10 | 1.0 | +| test.c:740:13:740:14 | (unsigned long)... | 1.0 | +| test.c:741:28:741:29 | ul | 1.0 | +| test.c:741:28:741:34 | ... * ... | 1.0 | +| test.c:741:33:741:34 | ul | 1.0 | +| test.c:742:12:742:17 | result | 1.0 | +| test.c:744:10:744:10 | 0 | 1.0 | +| test.c:744:10:744:10 | (unsigned long)... | 1.0 | +| test.c:748:7:748:8 | ui | 1.0 | +| test.c:748:7:748:14 | ... <= ... | 1.0 | +| test.c:748:7:748:25 | ... && ... | 1.0 | +| test.c:748:13:748:14 | 10 | 1.0 | +| test.c:748:13:748:14 | (unsigned int)... | 1.0 | +| test.c:748:19:748:20 | ui | 1.0 | +| test.c:748:19:748:25 | ... >= ... | 1.0 | +| test.c:748:25:748:25 | 2 | 1.0 | +| test.c:748:25:748:25 | (unsigned int)... | 1.0 | +| test.c:749:5:749:6 | ui | 1.0 | +| test.c:749:5:749:16 | ... *= ... | 1.0 | +| test.c:749:11:749:12 | ui | 1.0 | +| test.c:749:11:749:16 | ... + ... | 1.0 | +| test.c:749:16:749:16 | 0 | 1.0 | +| test.c:749:16:749:16 | (unsigned int)... | 1.0 | +| test.c:750:12:750:13 | (unsigned long)... | 1.0 | +| test.c:750:12:750:13 | ui | 1.0 | +| test.c:753:26:753:27 | 10 | 1.0 | +| test.c:753:26:753:27 | (unsigned int)... | 1.0 | +| test.c:754:3:754:9 | uiconst | 1.0 | +| test.c:754:3:754:14 | ... *= ... | 1.0 | +| test.c:754:14:754:14 | 4 | 1.0 | +| test.c:754:14:754:14 | (unsigned int)... | 1.0 | +| test.c:756:27:756:28 | 10 | 1.0 | +| test.c:756:27:756:28 | (unsigned long)... | 1.0 | +| test.c:757:3:757:9 | ulconst | 1.0 | +| test.c:757:3:757:14 | ... *= ... | 1.0 | +| test.c:757:14:757:14 | 4 | 1.0 | +| test.c:757:14:757:14 | (unsigned long)... | 1.0 | +| test.c:758:10:758:16 | (unsigned long)... | 1.0 | +| test.c:758:10:758:16 | uiconst | 1.0 | +| test.c:758:10:758:26 | ... + ... | 1.0 | +| test.c:758:20:758:26 | ulconst | 1.0 | +| test.c:762:7:762:7 | i | 1.0 | +| test.c:762:7:762:13 | ... >= ... | 1.0 | +| test.c:762:7:762:23 | ... && ... | 1.0 | +| test.c:762:12:762:13 | - ... | 1.0 | +| test.c:762:13:762:13 | 1 | 1.0 | +| test.c:762:18:762:18 | i | 1.0 | +| test.c:762:18:762:23 | ... <= ... | 1.0 | +| test.c:762:23:762:23 | 2 | 1.0 | +| test.c:763:5:763:5 | i | 1.0 | +| test.c:763:5:763:13 | ... = ... | 1.0 | +| test.c:763:9:763:9 | 5 | 1.0 | +| test.c:763:9:763:13 | ... * ... | 1.0 | +| test.c:763:13:763:13 | i | 1.0 | +| test.c:764:9:764:9 | i | 1.0 | +| test.c:766:5:766:5 | i | 1.0 | +| test.c:766:5:766:14 | ... = ... | 1.0 | +| test.c:766:9:766:9 | i | 1.0 | +| test.c:766:9:766:14 | ... * ... | 1.0 | +| test.c:766:13:766:14 | - ... | 1.0 | +| test.c:766:14:766:14 | 3 | 1.0 | +| test.c:767:9:767:9 | i | 1.0 | +| test.c:769:5:769:5 | i | 1.0 | +| test.c:769:5:769:10 | ... *= ... | 1.0 | +| test.c:769:10:769:10 | 7 | 1.0 | +| test.c:770:9:770:9 | i | 1.0 | +| test.c:772:5:772:5 | i | 1.0 | +| test.c:772:5:772:12 | ... *= ... | 1.0 | +| test.c:772:10:772:12 | - ... | 1.0 | +| test.c:772:11:772:12 | 11 | 1.0 | +| test.c:773:9:773:9 | i | 1.0 | +| test.c:775:7:775:7 | i | 2.0 | +| test.c:775:7:775:13 | ... == ... | 1.0 | +| test.c:775:12:775:13 | - ... | 1.0 | +| test.c:775:13:775:13 | 1 | 1.0 | +| test.c:776:5:776:5 | i | 1.0 | +| test.c:776:5:776:27 | ... = ... | 2.0 | +| test.c:776:9:776:9 | i | 2.0 | +| test.c:776:9:776:27 | ... * ... | 2.0 | +| test.c:776:13:776:27 | (int)... | 1.0 | +| test.c:776:18:776:27 | 4294967295 | 1.0 | +| test.c:777:9:777:9 | i | 2.0 | +| test.c:779:3:779:3 | i | 1.0 | +| test.c:779:3:779:12 | ... = ... | 4.0 | +| test.c:779:7:779:7 | i | 4.0 | +| test.c:779:7:779:12 | ... * ... | 4.0 | +| test.c:779:11:779:12 | - ... | 1.0 | +| test.c:779:12:779:12 | 1 | 1.0 | +| test.c:780:10:780:10 | i | 4.0 | +| test.c:782:20:782:20 | 1 | 1.0 | +| test.c:782:20:782:20 | (signed char)... | 1.0 | +| test.c:783:3:783:3 | i | 1.0 | +| test.c:783:3:783:17 | ... = ... | 1.0 | +| test.c:783:7:783:17 | (...) | 1.0 | +| test.c:783:7:783:17 | (int)... | 1.0 | +| test.c:783:8:783:11 | * ... | 1.0 | +| test.c:783:8:783:16 | ... *= ... | 1.0 | +| test.c:783:10:783:11 | sc | 1.0 | +| test.c:783:16:783:16 | 2 | 1.0 | +| test.c:785:7:785:7 | i | 1.0 | +| test.c:787:10:787:10 | 0 | 1.0 | +| test.c:792:7:792:7 | (int)... | 1.0 | +| test.c:792:7:792:7 | n | 1.0 | +| test.c:794:7:794:7 | n | 1.0 | +| test.c:794:7:794:11 | ... > ... | 1.0 | +| test.c:794:11:794:11 | 0 | 1.0 | +| test.c:794:11:794:11 | (unsigned int)... | 1.0 | +| test.c:795:9:795:9 | (int)... | 1.0 | +| test.c:795:9:795:9 | n | 1.0 | +| test.c:798:7:798:7 | n | 2.0 | +| test.c:798:7:798:12 | ... != ... | 1.0 | +| test.c:798:12:798:12 | 0 | 1.0 | +| test.c:798:12:798:12 | (unsigned int)... | 1.0 | +| test.c:799:9:799:9 | (int)... | 2.0 | +| test.c:799:9:799:9 | n | 2.0 | +| test.c:801:9:801:9 | (int)... | 2.0 | +| test.c:801:9:801:9 | n | 2.0 | +| test.c:804:7:804:8 | ! ... | 1.0 | +| test.c:804:8:804:8 | n | 4.0 | +| test.c:805:9:805:9 | (int)... | 4.0 | +| test.c:805:9:805:9 | n | 4.0 | +| test.c:807:9:807:9 | (int)... | 4.0 | +| test.c:807:9:807:9 | n | 4.0 | +| test.c:810:10:810:10 | n | 13.0 | +| test.c:810:10:810:15 | ... != ... | 1.0 | +| test.c:810:15:810:15 | 0 | 1.0 | +| test.c:810:15:810:15 | (unsigned int)... | 1.0 | +| test.c:811:5:811:5 | n | 13.0 | +| test.c:811:5:811:7 | ... -- | 13.0 | +| test.c:814:7:814:7 | (int)... | 13.0 | +| test.c:814:7:814:7 | n | 13.0 | +| test.c:818:7:818:7 | (int)... | 1.0 | +| test.c:818:7:818:7 | n | 1.0 | +| test.c:818:7:818:11 | ... < ... | 1.0 | +| test.c:818:11:818:11 | 0 | 1.0 | +| test.c:821:7:821:7 | (int)... | 1.0 | +| test.c:821:7:821:7 | n | 1.0 | +| test.c:821:7:821:12 | ... == ... | 1.0 | +| test.c:821:12:821:12 | 0 | 1.0 | +| test.c:822:9:822:9 | (int)... | 1.0 | +| test.c:822:9:822:9 | n | 1.0 | +| test.c:824:9:824:9 | (int)... | 1.0 | +| test.c:824:9:824:9 | n | 1.0 | +| test.c:827:7:827:7 | n | 2.0 | +| test.c:828:9:828:9 | (int)... | 2.0 | +| test.c:828:9:828:9 | n | 2.0 | +| test.c:830:9:830:9 | (int)... | 2.0 | +| test.c:830:9:830:9 | n | 2.0 | +| test.c:833:10:833:10 | (int)... | 13.0 | +| test.c:833:10:833:10 | n | 12.0 | +| test.c:833:10:833:15 | ... != ... | 1.0 | +| test.c:833:15:833:15 | 0 | 1.0 | +| test.c:834:5:834:5 | n | 12.0 | +| test.c:834:5:834:7 | ... -- | 12.0 | +| test.c:837:7:837:7 | (int)... | 12.0 | +| test.c:837:7:837:7 | n | 12.0 | +| test.c:841:7:841:7 | (int)... | 1.0 | +| test.c:841:7:841:7 | n | 1.0 | +| test.c:841:7:841:12 | ... != ... | 1.0 | +| test.c:841:12:841:12 | 0 | 1.0 | +| test.c:842:9:842:9 | (int)... | 1.0 | +| test.c:842:9:842:9 | n | 1.0 | +| test.c:842:9:842:14 | ... >= ... | 1.0 | +| test.c:842:14:842:14 | 0 | 1.0 | +| test.c:843:11:843:11 | (int)... | 1.0 | +| test.c:843:11:843:11 | n | 1.0 | +| test.c:847:7:847:7 | (int)... | 2.0 | +| test.c:847:7:847:7 | n | 2.0 | +| test.c:847:7:847:12 | ... >= ... | 1.0 | +| test.c:847:12:847:12 | 5 | 1.0 | +| test.c:848:9:848:9 | 2 | 1.0 | +| test.c:848:9:848:13 | ... * ... | 2.0 | +| test.c:848:9:848:18 | ... - ... | 2.0 | +| test.c:848:9:848:23 | ... == ... | 1.0 | +| test.c:848:13:848:13 | (int)... | 2.0 | +| test.c:848:13:848:13 | n | 2.0 | +| test.c:848:17:848:18 | 10 | 1.0 | +| test.c:848:23:848:23 | 0 | 1.0 | +| test.c:851:9:851:9 | (int)... | 2.0 | +| test.c:851:9:851:9 | n | 2.0 | +| test.c:854:7:854:7 | (int)... | 3.0 | +| test.c:854:7:854:7 | n | 3.0 | +| test.c:854:7:854:17 | ... != ... | 1.0 | +| test.c:854:7:854:32 | ... && ... | 1.0 | +| test.c:854:12:854:17 | - ... | 1.0 | +| test.c:854:13:854:17 | 32768 | 1.0 | +| test.c:854:22:854:22 | (int)... | 3.0 | +| test.c:854:22:854:22 | n | 3.0 | +| test.c:854:22:854:32 | ... != ... | 1.0 | +| test.c:854:27:854:32 | - ... | 1.0 | +| test.c:854:28:854:32 | 32767 | 1.0 | +| test.c:855:9:855:9 | (int)... | 3.0 | +| test.c:855:9:855:9 | n | 3.0 | +| test.c:858:7:858:7 | (int)... | 4.0 | +| test.c:858:7:858:7 | n | 4.0 | +| test.c:858:7:858:12 | ... >= ... | 1.0 | +| test.c:858:12:858:12 | 0 | 1.0 | +| test.c:859:5:859:5 | n | 4.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 16.0 | +| test.c:859:10:859:10 | (int)... | 4.0 | +| test.c:859:10:859:10 | n | 4.0 | +| test.c:859:14:859:14 | (int)... | 4.0 | +| test.c:859:14:859:14 | n | 4.0 | +| test.c:860:5:860:6 | ! ... | 1.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 64.0 | +| test.c:860:6:860:6 | n | 8.0 | +| test.c:860:10:860:10 | (int)... | 8.0 | +| test.c:860:10:860:10 | n | 8.0 | +| test.c:860:14:860:14 | (int)... | 8.0 | +| test.c:860:14:860:14 | n | 8.0 | +| test.c:871:7:871:8 | (unsigned long)... | 1.0 | +| test.c:871:7:871:8 | ss | 1.0 | +| test.c:871:7:871:22 | ... < ... | 1.0 | +| test.c:871:12:871:22 | sizeof(int) | 1.0 | +| test.c:872:9:872:10 | (int)... | 1.0 | +| test.c:872:9:872:10 | ss | 1.0 | +| test.c:875:7:875:8 | (int)... | 2.0 | +| test.c:875:7:875:8 | ss | 2.0 | +| test.c:875:7:875:17 | ... < ... | 1.0 | +| test.c:875:12:875:17 | 32769 | 1.0 | +| test.c:876:9:876:10 | (int)... | 2.0 | +| test.c:876:9:876:10 | ss | 2.0 | +| test.c:879:7:879:15 | (int)... | 1.0 | +| test.c:879:7:879:15 | (short)... | 1.0 | +| test.c:879:7:879:20 | ... >= ... | 1.0 | +| test.c:879:14:879:15 | us | 1.0 | +| test.c:879:20:879:20 | 0 | 1.0 | +| test.c:880:9:880:10 | (int)... | 1.0 | +| test.c:880:9:880:10 | us | 1.0 | +| test.c:883:7:883:15 | (int)... | 2.0 | +| test.c:883:7:883:15 | (short)... | 2.0 | +| test.c:883:7:883:21 | ... >= ... | 1.0 | +| test.c:883:14:883:15 | us | 2.0 | +| test.c:883:20:883:21 | - ... | 1.0 | +| test.c:883:21:883:21 | 1 | 1.0 | +| test.c:884:9:884:10 | (int)... | 2.0 | +| test.c:884:9:884:10 | us | 2.0 | +| test.c:887:7:887:8 | (unsigned long)... | 3.0 | +| test.c:887:7:887:8 | ss | 3.0 | +| test.c:887:7:887:23 | ... >= ... | 1.0 | +| test.c:887:13:887:23 | sizeof(int) | 1.0 | +| test.c:888:9:888:10 | (int)... | 3.0 | +| test.c:888:9:888:10 | ss | 3.0 | +| test.c:891:7:891:8 | (int)... | 4.0 | +| test.c:891:7:891:8 | ss | 4.0 | +| test.c:891:7:891:12 | (unsigned long)... | 4.0 | +| test.c:891:7:891:12 | ... + ... | 4.0 | +| test.c:891:7:891:26 | ... < ... | 1.0 | +| test.c:891:12:891:12 | 1 | 1.0 | +| test.c:891:16:891:26 | sizeof(int) | 1.0 | +| test.c:892:9:892:10 | (int)... | 4.0 | +| test.c:892:9:892:10 | ss | 4.0 | +| test.c:898:8:898:8 | s | 1.0 | +| test.c:898:8:898:12 | ... = ... | 1.0 | +| test.c:898:12:898:12 | 0 | 1.0 | +| test.c:898:15:898:15 | s | 13.0 | +| test.c:898:15:898:20 | ... < ... | 1.0 | +| test.c:898:19:898:20 | 10 | 1.0 | +| test.c:898:23:898:23 | s | 13.0 | +| test.c:898:23:898:25 | ... ++ | 13.0 | +| test.c:899:18:899:18 | s | 13.0 | +| test.c:899:18:899:22 | ... + ... | 13.0 | +| test.c:899:22:899:22 | s | 13.0 | +| test.c:900:9:900:14 | result | 13.0 | +| test.c:905:10:905:11 | 0 | 1.0 | +| test.c:906:7:906:7 | i | 1.0 | +| test.c:906:7:906:11 | ... < ... | 1.0 | +| test.c:906:11:906:11 | 0 | 1.0 | +| test.c:907:9:907:9 | i | 1.0 | +| test.c:910:20:910:20 | 0 | 1.0 | +| test.c:910:20:910:20 | (unsigned int)... | 1.0 | +| test.c:911:7:911:7 | u | 1.0 | +| test.c:911:7:911:11 | ... < ... | 1.0 | +| test.c:911:11:911:11 | 0 | 1.0 | +| test.c:911:11:911:11 | (unsigned int)... | 1.0 | +| test.c:912:9:912:9 | (int)... | 1.0 | +| test.c:912:9:912:9 | u | 1.0 | +| test.c:917:12:917:12 | s | 1.0 | +| test.c:917:12:917:16 | ... % ... | 1.0 | +| test.c:917:16:917:16 | 5 | 1.0 | +| test.c:918:7:918:8 | s2 | 1.0 | +| test.c:923:7:923:7 | x | 1.0 | +| test.c:924:9:924:9 | y | 1.0 | +| test.c:924:9:924:14 | ... != ... | 1.0 | +| test.c:924:14:924:14 | 0 | 1.0 | +| test.c:925:12:925:12 | 0 | 1.0 | +| test.c:928:7:928:7 | y | 2.0 | +| test.c:937:7:937:7 | x | 1.0 | +| test.c:937:7:937:13 | ... >= ... | 1.0 | +| test.c:937:12:937:13 | 10 | 1.0 | +| test.c:942:7:942:7 | x | 13.0 | +| test.c:947:16:947:26 | 2147483647 | 1.0 | +| test.c:948:16:948:19 | 256 | 1.0 | +| test.c:949:7:949:13 | (...) | 1.0 | +| test.c:949:7:949:20 | ... <= ... | 1.0 | +| test.c:949:8:949:8 | x | 1.0 | +| test.c:949:8:949:12 | ... + ... | 1.0 | +| test.c:949:12:949:12 | y | 1.0 | +| test.c:949:18:949:20 | 512 | 1.0 | +| test.c:950:9:950:9 | x | 1.0 | +| test.c:951:9:951:9 | y | 1.0 | | test.cpp:9:11:9:12 | - ... | 1.0 | | test.cpp:9:12:9:12 | 1 | 1.0 | | test.cpp:10:7:10:7 | (bool)... | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql index ec82c44ef82..efafcf6e684 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql @@ -1,5 +1,31 @@ import cpp +import utils.test.InlineExpectationsTest import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis -from Expr e -select e, SimpleRangeAnalysisInternal::estimateNrOfBounds(e) +query predicate estimateNrOfBounds(Expr e, float nrOfBounds) { + nrOfBounds = SimpleRangeAnalysisInternal::estimateNrOfBounds(e) +} + +/** + * Finds any expressions for which `nrOfBounds` is not functional. The result + * should be empty, so this predicate is useful to debug non-functional cases. + */ +private predicate nonFunctionalNrOfBounds(Expr e) { + strictcount(SimpleRangeAnalysisInternal::estimateNrOfBounds(e)) > 1 +} + +module FunctionalityTest implements TestSig { + string getARelevantTag() { result = "nonFunctionalNrOfBounds" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(Expr e | + nonFunctionalNrOfBounds(e) and + location = e.getLocation() and + element = e.toString() and + tag = "nonFunctionalNrOfBounds" and + value = "" + ) + } +} + +import MakeTest diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 1d0415e7a78..48925507106 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,77 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:447:5:449:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:450:6:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:451:8:469:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:454:10:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:454:31:454:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:456:13:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:463:12:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:464:12:464:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:466:15:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:470:6:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:473:8:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:473:29:473:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:475:11:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:478:6:478:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:10:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:482:31:482:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:484:13:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:487:9:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:491:10:510:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:494:12:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:495:12:495:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:497:15:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:504:14:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:14:505:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:507:17:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:511:9:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:514:14:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:515:14:515:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:517:17:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:520:12:520:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:524:12:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:12:525:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:527:15:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:530:11:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:533:9:535:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:9:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:537:14:556:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:540:16:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:541:16:541:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:543:19:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:550:18:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:18:551:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:553:21:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:557:12:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:560:14:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:14:561:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:563:17:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:566:12:566:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:570:16:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:16:571:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:573:19:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:576:15:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:580:12:599:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:583:14:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:584:14:584:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:586:17:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:593:16:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:16:594:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:596:19:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:600:11:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:603:16:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:604:16:604:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:606:19:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:609:14:609:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:613:14:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:614:14:614:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:616:17:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:619:13:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:647:20:647:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 4e7d05d9c08..9c5dec067a6 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,77 +72,77 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:432:5:434:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:435:6:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:436:8:454:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:10:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:441:13:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:448:12:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:449:12:449:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:451:15:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:455:6:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:8:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:29:458:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:460:11:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:463:6:463:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:10:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:31:467:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:469:13:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:472:9:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:476:10:495:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:479:12:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:480:12:480:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:489:14:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:490:14:490:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:492:17:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:499:14:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:500:14:500:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:509:12:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:510:12:510:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:512:15:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:515:11:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:518:9:520:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:522:14:541:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:525:16:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:526:16:526:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:528:19:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:535:18:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:536:18:536:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:538:21:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:542:12:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:545:14:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:546:14:546:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:548:17:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:551:12:551:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:555:16:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:556:16:556:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:558:19:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:561:15:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:565:12:584:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:568:14:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:569:14:569:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:571:17:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:578:16:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:579:16:579:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:588:16:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:589:16:589:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:591:19:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:598:14:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:601:17:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:632:20:632:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:447:4:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:447:5:449:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:450:6:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:451:8:469:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:454:10:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:454:31:454:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:456:13:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:463:12:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:464:12:464:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:466:15:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:470:6:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:473:8:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:473:29:473:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:475:11:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:478:6:478:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:10:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:482:31:482:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:484:13:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:487:9:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:491:10:510:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:494:12:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:495:12:495:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:497:15:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:504:14:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:14:505:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:507:17:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:511:9:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:514:14:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:515:14:515:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:517:17:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:520:12:520:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:524:12:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:12:525:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:527:15:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:530:11:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:533:9:535:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:9:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:537:14:556:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:540:16:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:541:16:541:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:543:19:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:550:18:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:18:551:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:553:21:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:557:12:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:560:14:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:14:561:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:563:17:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:566:12:566:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:570:16:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:16:571:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:573:19:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:576:15:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:580:12:599:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:583:14:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:584:14:584:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:586:17:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:593:16:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:16:594:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:596:19:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:600:11:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:603:16:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:604:16:604:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:606:19:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:609:14:609:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:613:14:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:614:14:614:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:616:17:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:619:13:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:647:20:647:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:859:5:859:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:860:5:860:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index c161dcdbb05..d84107df473 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -425,6 +425,21 @@ int repeated_if_statements(unsigned int rhs) { return rhs; // rhs has 6 bounds } +int ne_phi_nodes(int a, int b) { + if (a == 17) { + if (b == 23) { + a += b; + } + if (a == 18) { + b = 10; + } + } + // The statement below is an NE phi node for the access `a` in both `a == 17` + // and `a == 18`. + int c = a + b; // $ nonFunctionalNrOfBounds + return a + b; // $ nonFunctionalNrOfBounds +} + unsigned int conditional_nested_guards(unsigned int ip) { // This tests a combinatorial explosion that can happen from a large number of // nested linear guards. diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index d4c776a065d..7b056a8a3ee 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -496,508 +496,518 @@ | test.c:424:7:424:9 | rhs | 4294967295 | | test.c:424:19:424:21 | rhs | 15 | | test.c:425:10:425:12 | rhs | 4294967295 | -| test.c:432:10:432:11 | ip | 4294967295 | -| test.c:432:20:432:21 | ip | 4294967295 | -| test.c:432:40:432:41 | ip | 4294967295 | -| test.c:433:14:433:15 | ip | 4294967295 | -| test.c:434:14:434:15 | ip | 4294967295 | -| test.c:434:34:434:35 | ip | 4294967295 | -| test.c:435:11:435:12 | ip | 4294967295 | -| test.c:436:13:436:14 | ip | 4294967295 | -| test.c:437:14:437:15 | ip | 4294967295 | -| test.c:438:14:438:15 | ip | 4294967295 | -| test.c:439:15:439:16 | ip | 4294967295 | -| test.c:439:41:439:42 | ip | 4294967295 | -| test.c:439:52:439:53 | ip | 4294967295 | -| test.c:439:67:439:68 | ip | 4294967295 | -| test.c:439:78:439:79 | ip | 4294967295 | -| test.c:440:18:440:19 | ip | 4294967295 | -| test.c:441:23:441:24 | ip | 4294967295 | -| test.c:441:34:441:35 | ip | 4294967295 | -| test.c:442:25:442:26 | ip | 4294967295 | -| test.c:443:20:443:21 | ip | 4294967295 | -| test.c:444:11:444:12 | ip | 4294967295 | -| test.c:444:26:444:27 | ip | 4294967295 | -| test.c:445:16:445:17 | ip | 4294967295 | -| test.c:446:16:446:17 | ip | 4294967295 | -| test.c:447:16:447:17 | ip | 4294967295 | -| test.c:448:17:448:18 | ip | 4294967295 | -| test.c:449:22:449:23 | ip | 4294967295 | -| test.c:449:33:449:34 | ip | 4294967295 | -| test.c:449:48:449:49 | ip | 4294967295 | -| test.c:449:59:449:60 | ip | 4294967295 | -| test.c:450:20:450:21 | ip | 4294967295 | -| test.c:451:25:451:26 | ip | 4294967295 | -| test.c:451:36:451:37 | ip | 4294967295 | -| test.c:452:27:452:28 | ip | 4294967295 | -| test.c:453:22:453:23 | ip | 4294967295 | +| test.c:429:7:429:7 | a | 2147483647 | +| test.c:430:9:430:9 | b | 2147483647 | +| test.c:431:7:431:7 | a | 17 | +| test.c:431:12:431:12 | b | 23 | +| test.c:433:9:433:9 | a | 40 | +| test.c:434:7:434:7 | b | 2147483647 | +| test.c:439:11:439:11 | a | 2147483647 | +| test.c:439:15:439:15 | b | 2147483647 | +| test.c:440:10:440:10 | a | 2147483647 | +| test.c:440:14:440:14 | b | 2147483647 | +| test.c:447:10:447:11 | ip | 4294967295 | +| test.c:447:20:447:21 | ip | 4294967295 | +| test.c:447:40:447:41 | ip | 4294967295 | +| test.c:448:14:448:15 | ip | 4294967295 | +| test.c:449:14:449:15 | ip | 4294967295 | +| test.c:449:34:449:35 | ip | 4294967295 | +| test.c:450:11:450:12 | ip | 4294967295 | +| test.c:451:13:451:14 | ip | 4294967295 | +| test.c:452:14:452:15 | ip | 4294967295 | +| test.c:453:14:453:15 | ip | 4294967295 | | test.c:454:15:454:16 | ip | 4294967295 | -| test.c:454:30:454:31 | ip | 4294967295 | -| test.c:455:11:455:12 | ip | 4294967295 | -| test.c:456:12:456:13 | ip | 4294967295 | -| test.c:457:12:457:13 | ip | 4294967295 | -| test.c:458:13:458:14 | ip | 4294967295 | -| test.c:458:39:458:40 | ip | 4294967295 | -| test.c:458:50:458:51 | ip | 4294967295 | -| test.c:458:65:458:66 | ip | 4294967295 | -| test.c:458:76:458:77 | ip | 4294967295 | -| test.c:459:16:459:17 | ip | 4294967295 | -| test.c:460:21:460:22 | ip | 4294967295 | -| test.c:460:32:460:33 | ip | 4294967295 | -| test.c:461:23:461:24 | ip | 4294967295 | -| test.c:462:18:462:19 | ip | 4294967295 | -| test.c:463:11:463:12 | ip | 4294967295 | +| test.c:454:41:454:42 | ip | 4294967295 | +| test.c:454:52:454:53 | ip | 4294967295 | +| test.c:454:67:454:68 | ip | 4294967295 | +| test.c:454:78:454:79 | ip | 4294967295 | +| test.c:455:18:455:19 | ip | 4294967295 | +| test.c:456:23:456:24 | ip | 4294967295 | +| test.c:456:34:456:35 | ip | 4294967295 | +| test.c:457:25:457:26 | ip | 4294967295 | +| test.c:458:20:458:21 | ip | 4294967295 | +| test.c:459:11:459:12 | ip | 4294967295 | +| test.c:459:26:459:27 | ip | 4294967295 | +| test.c:460:16:460:17 | ip | 4294967295 | +| test.c:461:16:461:17 | ip | 4294967295 | +| test.c:462:16:462:17 | ip | 4294967295 | | test.c:463:17:463:18 | ip | 4294967295 | -| test.c:463:37:463:38 | ip | 4294967295 | -| test.c:463:43:463:44 | ip | 4294967295 | -| test.c:464:14:464:15 | ip | 4294967295 | -| test.c:465:14:465:15 | ip | 4294967295 | -| test.c:466:14:466:15 | ip | 4294967295 | -| test.c:467:15:467:16 | ip | 4294967295 | -| test.c:467:41:467:42 | ip | 4294967295 | -| test.c:467:52:467:53 | ip | 4294967295 | -| test.c:467:67:467:68 | ip | 4294967295 | -| test.c:467:78:467:79 | ip | 4294967295 | -| test.c:468:18:468:19 | ip | 4294967295 | -| test.c:469:23:469:24 | ip | 4294967295 | -| test.c:469:34:469:35 | ip | 4294967295 | -| test.c:470:25:470:26 | ip | 4294967295 | -| test.c:471:20:471:21 | ip | 4294967295 | -| test.c:472:14:472:15 | ip | 4294967295 | -| test.c:472:20:472:21 | ip | 4294967295 | -| test.c:473:16:473:17 | ip | 4294967295 | -| test.c:474:12:474:13 | ip | 4294967295 | -| test.c:475:14:475:15 | ip | 4294967295 | -| test.c:476:15:476:16 | ip | 4294967295 | -| test.c:477:16:477:17 | ip | 4294967295 | -| test.c:478:16:478:17 | ip | 4294967295 | -| test.c:479:17:479:18 | ip | 4294967295 | -| test.c:480:22:480:23 | ip | 4294967295 | -| test.c:480:33:480:34 | ip | 4294967295 | -| test.c:480:48:480:49 | ip | 4294967295 | -| test.c:480:59:480:60 | ip | 4294967295 | -| test.c:481:20:481:21 | ip | 4294967295 | -| test.c:482:25:482:26 | ip | 4294967295 | -| test.c:482:36:482:37 | ip | 4294967295 | -| test.c:483:27:483:28 | ip | 4294967295 | -| test.c:484:22:484:23 | ip | 4294967295 | -| test.c:485:13:485:14 | ip | 4294967295 | -| test.c:485:28:485:29 | ip | 4294967295 | -| test.c:486:18:486:19 | ip | 4294967295 | -| test.c:487:18:487:19 | ip | 4294967295 | -| test.c:488:18:488:19 | ip | 4294967295 | -| test.c:489:19:489:20 | ip | 4294967295 | -| test.c:490:24:490:25 | ip | 4294967295 | -| test.c:490:35:490:36 | ip | 4294967295 | -| test.c:490:50:490:51 | ip | 4294967295 | -| test.c:490:61:490:62 | ip | 4294967295 | -| test.c:491:22:491:23 | ip | 4294967295 | -| test.c:492:27:492:28 | ip | 4294967295 | -| test.c:492:38:492:39 | ip | 4294967295 | -| test.c:493:29:493:30 | ip | 4294967295 | -| test.c:494:24:494:25 | ip | 4294967295 | -| test.c:495:17:495:18 | ip | 4294967295 | -| test.c:495:32:495:33 | ip | 4294967295 | -| test.c:496:14:496:15 | ip | 4294967295 | -| test.c:497:18:497:19 | ip | 4294967295 | -| test.c:498:18:498:19 | ip | 4294967295 | -| test.c:499:19:499:20 | ip | 4294967295 | -| test.c:500:24:500:25 | ip | 4294967295 | -| test.c:500:35:500:36 | ip | 4294967295 | -| test.c:500:50:500:51 | ip | 4294967295 | -| test.c:500:61:500:62 | ip | 4294967295 | -| test.c:501:22:501:23 | ip | 4294967295 | -| test.c:502:27:502:28 | ip | 4294967295 | -| test.c:502:38:502:39 | ip | 4294967295 | -| test.c:503:29:503:30 | ip | 4294967295 | -| test.c:504:24:504:25 | ip | 4294967295 | -| test.c:505:17:505:18 | ip | 4294967295 | -| test.c:505:23:505:24 | ip | 4294967295 | -| test.c:505:43:505:44 | ip | 4294967295 | -| test.c:505:49:505:50 | ip | 4294967295 | -| test.c:506:16:506:17 | ip | 4294967295 | -| test.c:507:16:507:17 | ip | 4294967295 | -| test.c:508:16:508:17 | ip | 4294967295 | -| test.c:509:17:509:18 | ip | 4294967295 | -| test.c:510:22:510:23 | ip | 4294967295 | -| test.c:510:33:510:34 | ip | 4294967295 | -| test.c:510:48:510:49 | ip | 4294967295 | -| test.c:510:59:510:60 | ip | 4294967295 | -| test.c:511:20:511:21 | ip | 4294967295 | -| test.c:512:25:512:26 | ip | 4294967295 | -| test.c:512:36:512:37 | ip | 4294967295 | -| test.c:513:27:513:28 | ip | 4294967295 | -| test.c:514:22:514:23 | ip | 4294967295 | -| test.c:515:16:515:17 | ip | 4294967295 | -| test.c:515:22:515:23 | ip | 4294967295 | -| test.c:516:18:516:19 | ip | 4294967295 | -| test.c:517:14:517:15 | ip | 4294967295 | -| test.c:518:14:518:15 | ip | 4294967295 | -| test.c:518:24:518:25 | ip | 4294967295 | -| test.c:518:44:518:45 | ip | 4294967295 | -| test.c:519:16:519:17 | ip | 4294967295 | -| test.c:520:16:520:17 | ip | 4294967295 | -| test.c:520:36:520:37 | ip | 4294967295 | -| test.c:521:14:521:15 | ip | 4294967295 | -| test.c:522:19:522:20 | ip | 4294967295 | -| test.c:523:20:523:21 | ip | 4294967295 | -| test.c:524:20:524:21 | ip | 4294967295 | -| test.c:525:21:525:22 | ip | 4294967295 | -| test.c:526:26:526:27 | ip | 4294967295 | -| test.c:526:37:526:38 | ip | 4294967295 | -| test.c:526:52:526:53 | ip | 4294967295 | -| test.c:526:63:526:64 | ip | 4294967295 | -| test.c:527:24:527:25 | ip | 4294967295 | -| test.c:528:29:528:30 | ip | 4294967295 | -| test.c:528:40:528:41 | ip | 4294967295 | -| test.c:529:31:529:32 | ip | 4294967295 | -| test.c:530:26:530:27 | ip | 4294967295 | -| test.c:531:17:531:18 | ip | 4294967295 | -| test.c:531:32:531:33 | ip | 4294967295 | -| test.c:532:22:532:23 | ip | 4294967295 | -| test.c:533:22:533:23 | ip | 4294967295 | -| test.c:534:22:534:23 | ip | 4294967295 | -| test.c:535:23:535:24 | ip | 4294967295 | -| test.c:536:28:536:29 | ip | 4294967295 | -| test.c:536:39:536:40 | ip | 4294967295 | -| test.c:536:54:536:55 | ip | 4294967295 | -| test.c:536:65:536:66 | ip | 4294967295 | -| test.c:537:26:537:27 | ip | 4294967295 | -| test.c:538:31:538:32 | ip | 4294967295 | -| test.c:538:42:538:43 | ip | 4294967295 | -| test.c:539:33:539:34 | ip | 4294967295 | -| test.c:540:28:540:29 | ip | 4294967295 | -| test.c:541:21:541:22 | ip | 4294967295 | -| test.c:541:36:541:37 | ip | 4294967295 | -| test.c:542:17:542:18 | ip | 4294967295 | -| test.c:543:18:543:19 | ip | 4294967295 | -| test.c:544:18:544:19 | ip | 4294967295 | -| test.c:545:19:545:20 | ip | 4294967295 | -| test.c:546:24:546:25 | ip | 4294967295 | -| test.c:546:35:546:36 | ip | 4294967295 | -| test.c:546:50:546:51 | ip | 4294967295 | -| test.c:546:61:546:62 | ip | 4294967295 | +| test.c:464:22:464:23 | ip | 4294967295 | +| test.c:464:33:464:34 | ip | 4294967295 | +| test.c:464:48:464:49 | ip | 4294967295 | +| test.c:464:59:464:60 | ip | 4294967295 | +| test.c:465:20:465:21 | ip | 4294967295 | +| test.c:466:25:466:26 | ip | 4294967295 | +| test.c:466:36:466:37 | ip | 4294967295 | +| test.c:467:27:467:28 | ip | 4294967295 | +| test.c:468:22:468:23 | ip | 4294967295 | +| test.c:469:15:469:16 | ip | 4294967295 | +| test.c:469:30:469:31 | ip | 4294967295 | +| test.c:470:11:470:12 | ip | 4294967295 | +| test.c:471:12:471:13 | ip | 4294967295 | +| test.c:472:12:472:13 | ip | 4294967295 | +| test.c:473:13:473:14 | ip | 4294967295 | +| test.c:473:39:473:40 | ip | 4294967295 | +| test.c:473:50:473:51 | ip | 4294967295 | +| test.c:473:65:473:66 | ip | 4294967295 | +| test.c:473:76:473:77 | ip | 4294967295 | +| test.c:474:16:474:17 | ip | 4294967295 | +| test.c:475:21:475:22 | ip | 4294967295 | +| test.c:475:32:475:33 | ip | 4294967295 | +| test.c:476:23:476:24 | ip | 4294967295 | +| test.c:477:18:477:19 | ip | 4294967295 | +| test.c:478:11:478:12 | ip | 4294967295 | +| test.c:478:17:478:18 | ip | 4294967295 | +| test.c:478:37:478:38 | ip | 4294967295 | +| test.c:478:43:478:44 | ip | 4294967295 | +| test.c:479:14:479:15 | ip | 4294967295 | +| test.c:480:14:480:15 | ip | 4294967295 | +| test.c:481:14:481:15 | ip | 4294967295 | +| test.c:482:15:482:16 | ip | 4294967295 | +| test.c:482:41:482:42 | ip | 4294967295 | +| test.c:482:52:482:53 | ip | 4294967295 | +| test.c:482:67:482:68 | ip | 4294967295 | +| test.c:482:78:482:79 | ip | 4294967295 | +| test.c:483:18:483:19 | ip | 4294967295 | +| test.c:484:23:484:24 | ip | 4294967295 | +| test.c:484:34:484:35 | ip | 4294967295 | +| test.c:485:25:485:26 | ip | 4294967295 | +| test.c:486:20:486:21 | ip | 4294967295 | +| test.c:487:14:487:15 | ip | 4294967295 | +| test.c:487:20:487:21 | ip | 4294967295 | +| test.c:488:16:488:17 | ip | 4294967295 | +| test.c:489:12:489:13 | ip | 4294967295 | +| test.c:490:14:490:15 | ip | 4294967295 | +| test.c:491:15:491:16 | ip | 4294967295 | +| test.c:492:16:492:17 | ip | 4294967295 | +| test.c:493:16:493:17 | ip | 4294967295 | +| test.c:494:17:494:18 | ip | 4294967295 | +| test.c:495:22:495:23 | ip | 4294967295 | +| test.c:495:33:495:34 | ip | 4294967295 | +| test.c:495:48:495:49 | ip | 4294967295 | +| test.c:495:59:495:60 | ip | 4294967295 | +| test.c:496:20:496:21 | ip | 4294967295 | +| test.c:497:25:497:26 | ip | 4294967295 | +| test.c:497:36:497:37 | ip | 4294967295 | +| test.c:498:27:498:28 | ip | 4294967295 | +| test.c:499:22:499:23 | ip | 4294967295 | +| test.c:500:13:500:14 | ip | 4294967295 | +| test.c:500:28:500:29 | ip | 4294967295 | +| test.c:501:18:501:19 | ip | 4294967295 | +| test.c:502:18:502:19 | ip | 4294967295 | +| test.c:503:18:503:19 | ip | 4294967295 | +| test.c:504:19:504:20 | ip | 4294967295 | +| test.c:505:24:505:25 | ip | 4294967295 | +| test.c:505:35:505:36 | ip | 4294967295 | +| test.c:505:50:505:51 | ip | 4294967295 | +| test.c:505:61:505:62 | ip | 4294967295 | +| test.c:506:22:506:23 | ip | 4294967295 | +| test.c:507:27:507:28 | ip | 4294967295 | +| test.c:507:38:507:39 | ip | 4294967295 | +| test.c:508:29:508:30 | ip | 4294967295 | +| test.c:509:24:509:25 | ip | 4294967295 | +| test.c:510:17:510:18 | ip | 4294967295 | +| test.c:510:32:510:33 | ip | 4294967295 | +| test.c:511:14:511:15 | ip | 4294967295 | +| test.c:512:18:512:19 | ip | 4294967295 | +| test.c:513:18:513:19 | ip | 4294967295 | +| test.c:514:19:514:20 | ip | 4294967295 | +| test.c:515:24:515:25 | ip | 4294967295 | +| test.c:515:35:515:36 | ip | 4294967295 | +| test.c:515:50:515:51 | ip | 4294967295 | +| test.c:515:61:515:62 | ip | 4294967295 | +| test.c:516:22:516:23 | ip | 4294967295 | +| test.c:517:27:517:28 | ip | 4294967295 | +| test.c:517:38:517:39 | ip | 4294967295 | +| test.c:518:29:518:30 | ip | 4294967295 | +| test.c:519:24:519:25 | ip | 4294967295 | +| test.c:520:17:520:18 | ip | 4294967295 | +| test.c:520:23:520:24 | ip | 4294967295 | +| test.c:520:43:520:44 | ip | 4294967295 | +| test.c:520:49:520:50 | ip | 4294967295 | +| test.c:521:16:521:17 | ip | 4294967295 | +| test.c:522:16:522:17 | ip | 4294967295 | +| test.c:523:16:523:17 | ip | 4294967295 | +| test.c:524:17:524:18 | ip | 4294967295 | +| test.c:525:22:525:23 | ip | 4294967295 | +| test.c:525:33:525:34 | ip | 4294967295 | +| test.c:525:48:525:49 | ip | 4294967295 | +| test.c:525:59:525:60 | ip | 4294967295 | +| test.c:526:20:526:21 | ip | 4294967295 | +| test.c:527:25:527:26 | ip | 4294967295 | +| test.c:527:36:527:37 | ip | 4294967295 | +| test.c:528:27:528:28 | ip | 4294967295 | +| test.c:529:22:529:23 | ip | 4294967295 | +| test.c:530:16:530:17 | ip | 4294967295 | +| test.c:530:22:530:23 | ip | 4294967295 | +| test.c:531:18:531:19 | ip | 4294967295 | +| test.c:532:14:532:15 | ip | 4294967295 | +| test.c:533:14:533:15 | ip | 4294967295 | +| test.c:533:24:533:25 | ip | 4294967295 | +| test.c:533:44:533:45 | ip | 4294967295 | +| test.c:534:16:534:17 | ip | 4294967295 | +| test.c:535:16:535:17 | ip | 4294967295 | +| test.c:535:36:535:37 | ip | 4294967295 | +| test.c:536:14:536:15 | ip | 4294967295 | +| test.c:537:19:537:20 | ip | 4294967295 | +| test.c:538:20:538:21 | ip | 4294967295 | +| test.c:539:20:539:21 | ip | 4294967295 | +| test.c:540:21:540:22 | ip | 4294967295 | +| test.c:541:26:541:27 | ip | 4294967295 | +| test.c:541:37:541:38 | ip | 4294967295 | +| test.c:541:52:541:53 | ip | 4294967295 | +| test.c:541:63:541:64 | ip | 4294967295 | +| test.c:542:24:542:25 | ip | 4294967295 | +| test.c:543:29:543:30 | ip | 4294967295 | +| test.c:543:40:543:41 | ip | 4294967295 | +| test.c:544:31:544:32 | ip | 4294967295 | +| test.c:545:26:545:27 | ip | 4294967295 | +| test.c:546:17:546:18 | ip | 4294967295 | +| test.c:546:32:546:33 | ip | 4294967295 | | test.c:547:22:547:23 | ip | 4294967295 | -| test.c:548:27:548:28 | ip | 4294967295 | -| test.c:548:38:548:39 | ip | 4294967295 | -| test.c:549:29:549:30 | ip | 4294967295 | -| test.c:550:24:550:25 | ip | 4294967295 | -| test.c:551:17:551:18 | ip | 4294967295 | -| test.c:551:23:551:24 | ip | 4294967295 | -| test.c:551:43:551:44 | ip | 4294967295 | -| test.c:551:49:551:50 | ip | 4294967295 | -| test.c:552:20:552:21 | ip | 4294967295 | -| test.c:553:20:553:21 | ip | 4294967295 | -| test.c:554:20:554:21 | ip | 4294967295 | -| test.c:555:21:555:22 | ip | 4294967295 | -| test.c:556:26:556:27 | ip | 4294967295 | -| test.c:556:37:556:38 | ip | 4294967295 | -| test.c:556:52:556:53 | ip | 4294967295 | -| test.c:556:63:556:64 | ip | 4294967295 | -| test.c:557:24:557:25 | ip | 4294967295 | -| test.c:558:29:558:30 | ip | 4294967295 | -| test.c:558:40:558:41 | ip | 4294967295 | -| test.c:559:31:559:32 | ip | 4294967295 | -| test.c:560:26:560:27 | ip | 4294967295 | -| test.c:561:20:561:21 | ip | 4294967295 | -| test.c:561:26:561:27 | ip | 4294967295 | +| test.c:548:22:548:23 | ip | 4294967295 | +| test.c:549:22:549:23 | ip | 4294967295 | +| test.c:550:23:550:24 | ip | 4294967295 | +| test.c:551:28:551:29 | ip | 4294967295 | +| test.c:551:39:551:40 | ip | 4294967295 | +| test.c:551:54:551:55 | ip | 4294967295 | +| test.c:551:65:551:66 | ip | 4294967295 | +| test.c:552:26:552:27 | ip | 4294967295 | +| test.c:553:31:553:32 | ip | 4294967295 | +| test.c:553:42:553:43 | ip | 4294967295 | +| test.c:554:33:554:34 | ip | 4294967295 | +| test.c:555:28:555:29 | ip | 4294967295 | +| test.c:556:21:556:22 | ip | 4294967295 | +| test.c:556:36:556:37 | ip | 4294967295 | +| test.c:557:17:557:18 | ip | 4294967295 | +| test.c:558:18:558:19 | ip | 4294967295 | +| test.c:559:18:559:19 | ip | 4294967295 | +| test.c:560:19:560:20 | ip | 4294967295 | +| test.c:561:24:561:25 | ip | 4294967295 | +| test.c:561:35:561:36 | ip | 4294967295 | +| test.c:561:50:561:51 | ip | 4294967295 | +| test.c:561:61:561:62 | ip | 4294967295 | | test.c:562:22:562:23 | ip | 4294967295 | -| test.c:563:18:563:19 | ip | 4294967295 | -| test.c:564:16:564:17 | ip | 4294967295 | -| test.c:565:17:565:18 | ip | 4294967295 | -| test.c:566:18:566:19 | ip | 4294967295 | -| test.c:567:18:567:19 | ip | 4294967295 | -| test.c:568:19:568:20 | ip | 4294967295 | -| test.c:569:24:569:25 | ip | 4294967295 | -| test.c:569:35:569:36 | ip | 4294967295 | -| test.c:569:50:569:51 | ip | 4294967295 | -| test.c:569:61:569:62 | ip | 4294967295 | -| test.c:570:22:570:23 | ip | 4294967295 | -| test.c:571:27:571:28 | ip | 4294967295 | -| test.c:571:38:571:39 | ip | 4294967295 | -| test.c:572:29:572:30 | ip | 4294967295 | -| test.c:573:24:573:25 | ip | 4294967295 | -| test.c:574:15:574:16 | ip | 4294967295 | -| test.c:574:30:574:31 | ip | 4294967295 | -| test.c:575:20:575:21 | ip | 4294967295 | +| test.c:563:27:563:28 | ip | 4294967295 | +| test.c:563:38:563:39 | ip | 4294967295 | +| test.c:564:29:564:30 | ip | 4294967295 | +| test.c:565:24:565:25 | ip | 4294967295 | +| test.c:566:17:566:18 | ip | 4294967295 | +| test.c:566:23:566:24 | ip | 4294967295 | +| test.c:566:43:566:44 | ip | 4294967295 | +| test.c:566:49:566:50 | ip | 4294967295 | +| test.c:567:20:567:21 | ip | 4294967295 | +| test.c:568:20:568:21 | ip | 4294967295 | +| test.c:569:20:569:21 | ip | 4294967295 | +| test.c:570:21:570:22 | ip | 4294967295 | +| test.c:571:26:571:27 | ip | 4294967295 | +| test.c:571:37:571:38 | ip | 4294967295 | +| test.c:571:52:571:53 | ip | 4294967295 | +| test.c:571:63:571:64 | ip | 4294967295 | +| test.c:572:24:572:25 | ip | 4294967295 | +| test.c:573:29:573:30 | ip | 4294967295 | +| test.c:573:40:573:41 | ip | 4294967295 | +| test.c:574:31:574:32 | ip | 4294967295 | +| test.c:575:26:575:27 | ip | 4294967295 | | test.c:576:20:576:21 | ip | 4294967295 | -| test.c:577:20:577:21 | ip | 4294967295 | -| test.c:578:21:578:22 | ip | 4294967295 | -| test.c:579:26:579:27 | ip | 4294967295 | -| test.c:579:37:579:38 | ip | 4294967295 | -| test.c:579:52:579:53 | ip | 4294967295 | -| test.c:579:63:579:64 | ip | 4294967295 | -| test.c:580:24:580:25 | ip | 4294967295 | -| test.c:581:29:581:30 | ip | 4294967295 | -| test.c:581:40:581:41 | ip | 4294967295 | -| test.c:582:31:582:32 | ip | 4294967295 | -| test.c:583:26:583:27 | ip | 4294967295 | -| test.c:584:19:584:20 | ip | 4294967295 | -| test.c:584:34:584:35 | ip | 4294967295 | -| test.c:585:16:585:17 | ip | 4294967295 | -| test.c:586:20:586:21 | ip | 4294967295 | -| test.c:587:20:587:21 | ip | 4294967295 | -| test.c:588:21:588:22 | ip | 4294967295 | -| test.c:589:26:589:27 | ip | 4294967295 | -| test.c:589:37:589:38 | ip | 4294967295 | -| test.c:589:52:589:53 | ip | 4294967295 | -| test.c:589:63:589:64 | ip | 4294967295 | -| test.c:590:24:590:25 | ip | 4294967295 | -| test.c:591:29:591:30 | ip | 4294967295 | -| test.c:591:40:591:41 | ip | 4294967295 | -| test.c:592:31:592:32 | ip | 4294967295 | -| test.c:593:26:593:27 | ip | 4294967295 | -| test.c:594:19:594:20 | ip | 4294967295 | -| test.c:594:25:594:26 | ip | 4294967295 | -| test.c:594:45:594:46 | ip | 4294967295 | -| test.c:594:51:594:52 | ip | 4294967295 | -| test.c:595:18:595:19 | ip | 4294967295 | -| test.c:596:18:596:19 | ip | 4294967295 | -| test.c:597:18:597:19 | ip | 4294967295 | -| test.c:598:19:598:20 | ip | 4294967295 | -| test.c:599:24:599:25 | ip | 4294967295 | -| test.c:599:35:599:36 | ip | 4294967295 | -| test.c:599:50:599:51 | ip | 4294967295 | -| test.c:599:61:599:62 | ip | 4294967295 | -| test.c:600:22:600:23 | ip | 4294967295 | -| test.c:601:27:601:28 | ip | 4294967295 | -| test.c:601:38:601:39 | ip | 4294967295 | -| test.c:602:29:602:30 | ip | 4294967295 | -| test.c:603:24:603:25 | ip | 4294967295 | -| test.c:604:18:604:19 | ip | 4294967295 | -| test.c:604:24:604:25 | ip | 4294967295 | -| test.c:605:20:605:21 | ip | 4294967295 | -| test.c:606:16:606:17 | ip | 4294967295 | -| test.c:607:10:607:23 | special_number | 4294967295 | -| test.c:615:7:615:8 | c1 | 2147483647 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | 2147483647 | -| test.c:616:13:616:13 | x | 748596 | -| test.c:617:7:617:8 | c3 | 2147483647 | -| test.c:617:13:617:13 | x | 85400991 | -| test.c:618:7:618:8 | c4 | 2147483647 | -| test.c:618:13:618:13 | x | 89076886 | -| test.c:619:7:619:8 | c5 | 2147483647 | -| test.c:619:13:619:13 | x | 89175520 | -| test.c:620:7:620:8 | c1 | 2147483647 | -| test.c:620:13:620:14 | c2 | 2147483647 | -| test.c:620:19:620:19 | x | 97010505 | -| test.c:621:7:621:8 | c1 | 2147483647 | -| test.c:621:13:621:14 | c3 | 2147483647 | -| test.c:621:19:621:19 | x | 1035467903 | -| test.c:622:7:622:8 | c1 | 2147483647 | -| test.c:622:13:622:14 | c4 | 2147483647 | -| test.c:622:19:622:19 | x | 1109363551 | -| test.c:623:7:623:8 | c1 | 2147483647 | -| test.c:623:13:623:14 | c5 | 2147483647 | -| test.c:623:19:623:19 | x | 1121708983 | -| test.c:624:7:624:8 | c2 | 2147483647 | -| test.c:624:13:624:14 | c3 | 2147483647 | -| test.c:624:19:624:19 | x | 1121747830 | -| test.c:626:11:626:11 | x | 2147483647 | -| test.c:626:15:626:15 | x | 2147483647 | -| test.c:626:19:626:19 | x | 2147483647 | -| test.c:626:23:626:23 | x | 2147483647 | -| test.c:626:27:626:27 | x | 2147483647 | -| test.c:626:31:626:31 | x | 2147483647 | -| test.c:626:35:626:35 | x | 2147483647 | -| test.c:626:39:626:39 | x | 2147483647 | -| test.c:626:43:626:43 | x | 2147483647 | -| test.c:626:47:626:47 | x | 2147483647 | -| test.c:626:51:626:51 | x | 2147483647 | -| test.c:626:55:626:55 | x | 2147483647 | -| test.c:627:10:627:10 | y | 2147483647 | -| test.c:632:20:632:20 | x | 4294967295 | -| test.c:632:30:632:30 | x | 99 | -| test.c:635:3:635:4 | y1 | 4294967295 | -| test.c:635:11:635:11 | y | 100 | -| test.c:635:14:635:14 | y | 101 | -| test.c:636:3:636:4 | y2 | 4294967295 | -| test.c:636:9:636:9 | y | 101 | -| test.c:636:14:636:14 | y | 102 | -| test.c:636:22:636:22 | y | 105 | -| test.c:637:10:637:11 | y1 | 101 | -| test.c:637:15:637:16 | y2 | 105 | -| test.c:645:3:645:3 | i | 2147483647 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | 2147483647 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | 2147483647 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | 2147483647 | -| test.c:656:7:656:7 | j | 2147483647 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | 2147483647 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | 2147483647 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 4294967295 | -| test.c:670:17:670:17 | a | 4294967295 | -| test.c:670:33:670:33 | b | 4294967295 | -| test.c:670:38:670:38 | b | 4294967295 | -| test.c:671:13:671:13 | a | 11 | -| test.c:671:15:671:15 | b | 23 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 253 | -| test.c:674:12:674:12 | a | 4294967295 | -| test.c:674:17:674:17 | a | 4294967295 | -| test.c:674:33:674:33 | b | 4294967295 | -| test.c:674:38:674:38 | b | 4294967295 | -| test.c:675:13:675:13 | a | 11 | -| test.c:675:15:675:15 | b | 23 | -| test.c:676:5:676:9 | total | 253 | -| test.c:676:14:676:14 | r | 253 | -| test.c:678:12:678:12 | a | 4294967295 | -| test.c:678:17:678:17 | a | 4294967295 | -| test.c:678:34:678:34 | b | 4294967295 | -| test.c:678:39:678:39 | b | 4294967295 | -| test.c:679:13:679:13 | a | 11 | -| test.c:679:15:679:15 | b | 23 | -| test.c:680:5:680:9 | total | 506 | -| test.c:680:14:680:14 | r | 253 | -| test.c:683:10:683:14 | total | 759 | -| test.c:689:12:689:12 | b | 4294967295 | -| test.c:689:17:689:17 | b | 4294967295 | -| test.c:690:16:690:16 | b | 23 | -| test.c:691:5:691:9 | total | 0 | +| test.c:576:26:576:27 | ip | 4294967295 | +| test.c:577:22:577:23 | ip | 4294967295 | +| test.c:578:18:578:19 | ip | 4294967295 | +| test.c:579:16:579:17 | ip | 4294967295 | +| test.c:580:17:580:18 | ip | 4294967295 | +| test.c:581:18:581:19 | ip | 4294967295 | +| test.c:582:18:582:19 | ip | 4294967295 | +| test.c:583:19:583:20 | ip | 4294967295 | +| test.c:584:24:584:25 | ip | 4294967295 | +| test.c:584:35:584:36 | ip | 4294967295 | +| test.c:584:50:584:51 | ip | 4294967295 | +| test.c:584:61:584:62 | ip | 4294967295 | +| test.c:585:22:585:23 | ip | 4294967295 | +| test.c:586:27:586:28 | ip | 4294967295 | +| test.c:586:38:586:39 | ip | 4294967295 | +| test.c:587:29:587:30 | ip | 4294967295 | +| test.c:588:24:588:25 | ip | 4294967295 | +| test.c:589:15:589:16 | ip | 4294967295 | +| test.c:589:30:589:31 | ip | 4294967295 | +| test.c:590:20:590:21 | ip | 4294967295 | +| test.c:591:20:591:21 | ip | 4294967295 | +| test.c:592:20:592:21 | ip | 4294967295 | +| test.c:593:21:593:22 | ip | 4294967295 | +| test.c:594:26:594:27 | ip | 4294967295 | +| test.c:594:37:594:38 | ip | 4294967295 | +| test.c:594:52:594:53 | ip | 4294967295 | +| test.c:594:63:594:64 | ip | 4294967295 | +| test.c:595:24:595:25 | ip | 4294967295 | +| test.c:596:29:596:30 | ip | 4294967295 | +| test.c:596:40:596:41 | ip | 4294967295 | +| test.c:597:31:597:32 | ip | 4294967295 | +| test.c:598:26:598:27 | ip | 4294967295 | +| test.c:599:19:599:20 | ip | 4294967295 | +| test.c:599:34:599:35 | ip | 4294967295 | +| test.c:600:16:600:17 | ip | 4294967295 | +| test.c:601:20:601:21 | ip | 4294967295 | +| test.c:602:20:602:21 | ip | 4294967295 | +| test.c:603:21:603:22 | ip | 4294967295 | +| test.c:604:26:604:27 | ip | 4294967295 | +| test.c:604:37:604:38 | ip | 4294967295 | +| test.c:604:52:604:53 | ip | 4294967295 | +| test.c:604:63:604:64 | ip | 4294967295 | +| test.c:605:24:605:25 | ip | 4294967295 | +| test.c:606:29:606:30 | ip | 4294967295 | +| test.c:606:40:606:41 | ip | 4294967295 | +| test.c:607:31:607:32 | ip | 4294967295 | +| test.c:608:26:608:27 | ip | 4294967295 | +| test.c:609:19:609:20 | ip | 4294967295 | +| test.c:609:25:609:26 | ip | 4294967295 | +| test.c:609:45:609:46 | ip | 4294967295 | +| test.c:609:51:609:52 | ip | 4294967295 | +| test.c:610:18:610:19 | ip | 4294967295 | +| test.c:611:18:611:19 | ip | 4294967295 | +| test.c:612:18:612:19 | ip | 4294967295 | +| test.c:613:19:613:20 | ip | 4294967295 | +| test.c:614:24:614:25 | ip | 4294967295 | +| test.c:614:35:614:36 | ip | 4294967295 | +| test.c:614:50:614:51 | ip | 4294967295 | +| test.c:614:61:614:62 | ip | 4294967295 | +| test.c:615:22:615:23 | ip | 4294967295 | +| test.c:616:27:616:28 | ip | 4294967295 | +| test.c:616:38:616:39 | ip | 4294967295 | +| test.c:617:29:617:30 | ip | 4294967295 | +| test.c:618:24:618:25 | ip | 4294967295 | +| test.c:619:18:619:19 | ip | 4294967295 | +| test.c:619:24:619:25 | ip | 4294967295 | +| test.c:620:20:620:21 | ip | 4294967295 | +| test.c:621:16:621:17 | ip | 4294967295 | +| test.c:622:10:622:23 | special_number | 4294967295 | +| test.c:630:7:630:8 | c1 | 2147483647 | +| test.c:630:13:630:13 | x | 0 | +| test.c:631:7:631:8 | c2 | 2147483647 | +| test.c:631:13:631:13 | x | 748596 | +| test.c:632:7:632:8 | c3 | 2147483647 | +| test.c:632:13:632:13 | x | 85400991 | +| test.c:633:7:633:8 | c4 | 2147483647 | +| test.c:633:13:633:13 | x | 89076886 | +| test.c:634:7:634:8 | c5 | 2147483647 | +| test.c:634:13:634:13 | x | 89175520 | +| test.c:635:7:635:8 | c1 | 2147483647 | +| test.c:635:13:635:14 | c2 | 2147483647 | +| test.c:635:19:635:19 | x | 97010505 | +| test.c:636:7:636:8 | c1 | 2147483647 | +| test.c:636:13:636:14 | c3 | 2147483647 | +| test.c:636:19:636:19 | x | 1035467903 | +| test.c:637:7:637:8 | c1 | 2147483647 | +| test.c:637:13:637:14 | c4 | 2147483647 | +| test.c:637:19:637:19 | x | 1109363551 | +| test.c:638:7:638:8 | c1 | 2147483647 | +| test.c:638:13:638:14 | c5 | 2147483647 | +| test.c:638:19:638:19 | x | 1121708983 | +| test.c:639:7:639:8 | c2 | 2147483647 | +| test.c:639:13:639:14 | c3 | 2147483647 | +| test.c:639:19:639:19 | x | 1121747830 | +| test.c:641:11:641:11 | x | 2147483647 | +| test.c:641:15:641:15 | x | 2147483647 | +| test.c:641:19:641:19 | x | 2147483647 | +| test.c:641:23:641:23 | x | 2147483647 | +| test.c:641:27:641:27 | x | 2147483647 | +| test.c:641:31:641:31 | x | 2147483647 | +| test.c:641:35:641:35 | x | 2147483647 | +| test.c:641:39:641:39 | x | 2147483647 | +| test.c:641:43:641:43 | x | 2147483647 | +| test.c:641:47:641:47 | x | 2147483647 | +| test.c:641:51:641:51 | x | 2147483647 | +| test.c:641:55:641:55 | x | 2147483647 | +| test.c:642:10:642:10 | y | 2147483647 | +| test.c:647:20:647:20 | x | 4294967295 | +| test.c:647:30:647:30 | x | 99 | +| test.c:650:3:650:4 | y1 | 4294967295 | +| test.c:650:11:650:11 | y | 100 | +| test.c:650:14:650:14 | y | 101 | +| test.c:651:3:651:4 | y2 | 4294967295 | +| test.c:651:9:651:9 | y | 101 | +| test.c:651:14:651:14 | y | 102 | +| test.c:651:22:651:22 | y | 105 | +| test.c:652:10:652:11 | y1 | 101 | +| test.c:652:15:652:16 | y2 | 105 | +| test.c:660:3:660:3 | i | 2147483647 | +| test.c:661:7:661:7 | i | 10 | +| test.c:663:3:663:3 | i | 2147483647 | +| test.c:664:3:664:3 | i | 10 | +| test.c:665:7:665:7 | i | 20 | +| test.c:667:3:667:3 | i | 2147483647 | +| test.c:668:3:668:3 | i | 40 | +| test.c:669:7:669:7 | i | 30 | +| test.c:671:3:671:3 | i | 2147483647 | +| test.c:671:7:671:7 | j | 2147483647 | +| test.c:672:7:672:7 | i | 40 | +| test.c:674:3:674:3 | i | 2147483647 | +| test.c:674:8:674:8 | j | 40 | +| test.c:675:7:675:7 | i | 50 | +| test.c:677:3:677:3 | i | 2147483647 | +| test.c:677:13:677:13 | j | 50 | +| test.c:678:7:678:7 | i | 60 | +| test.c:685:12:685:12 | a | 4294967295 | +| test.c:685:17:685:17 | a | 4294967295 | +| test.c:685:33:685:33 | b | 4294967295 | +| test.c:685:38:685:38 | b | 4294967295 | +| test.c:686:13:686:13 | a | 11 | +| test.c:686:15:686:15 | b | 23 | +| test.c:687:5:687:9 | total | 0 | +| test.c:687:14:687:14 | r | 253 | +| test.c:689:12:689:12 | a | 4294967295 | +| test.c:689:17:689:17 | a | 4294967295 | +| test.c:689:33:689:33 | b | 4294967295 | +| test.c:689:38:689:38 | b | 4294967295 | +| test.c:690:13:690:13 | a | 11 | +| test.c:690:15:690:15 | b | 23 | +| test.c:691:5:691:9 | total | 253 | | test.c:691:14:691:14 | r | 253 | -| test.c:693:12:693:12 | b | 4294967295 | -| test.c:693:17:693:17 | b | 4294967295 | -| test.c:694:16:694:16 | b | 23 | -| test.c:695:5:695:9 | total | 253 | +| test.c:693:12:693:12 | a | 4294967295 | +| test.c:693:17:693:17 | a | 4294967295 | +| test.c:693:34:693:34 | b | 4294967295 | +| test.c:693:39:693:39 | b | 4294967295 | +| test.c:694:13:694:13 | a | 11 | +| test.c:694:15:694:15 | b | 23 | +| test.c:695:5:695:9 | total | 506 | | test.c:695:14:695:14 | r | 253 | -| test.c:697:13:697:13 | b | 4294967295 | -| test.c:697:18:697:18 | b | 4294967295 | -| test.c:698:16:698:16 | b | 23 | -| test.c:699:5:699:9 | total | 506 | -| test.c:699:14:699:14 | r | 253 | -| test.c:702:10:702:14 | total | 759 | -| test.c:707:3:707:3 | x | 18446744073709551616 | -| test.c:707:7:707:7 | y | 18446744073709551616 | -| test.c:708:3:708:4 | xy | 18446744073709551616 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 18446744073709551616 | -| test.c:715:3:715:3 | y | 18446744073709551616 | -| test.c:716:3:716:4 | xy | 18446744073709551616 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 4294967295 | -| test.c:722:43:722:44 | ui | 4294967295 | -| test.c:722:48:722:49 | ui | 4294967295 | -| test.c:723:12:723:17 | result | 18446744065119617024 | -| test.c:725:7:725:8 | ul | 18446744073709551616 | -| test.c:726:28:726:29 | ul | 18446744073709551616 | -| test.c:726:33:726:34 | ul | 18446744073709551616 | -| test.c:727:12:727:17 | result | 18446744073709551616 | -| test.c:733:7:733:8 | ui | 4294967295 | -| test.c:733:19:733:20 | ui | 10 | -| test.c:734:5:734:6 | ui | 10 | -| test.c:734:11:734:12 | ui | 10 | -| test.c:735:12:735:13 | ui | 100 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | 2147483647 | -| test.c:747:18:747:18 | i | 2147483647 | -| test.c:748:5:748:5 | i | 2147483647 | -| test.c:748:13:748:13 | i | 2 | -| test.c:749:9:749:9 | i | 10 | -| test.c:751:5:751:5 | i | 2147483647 | -| test.c:751:9:751:9 | i | 10 | -| test.c:752:9:752:9 | i | 15 | -| test.c:754:5:754:5 | i | 15 | -| test.c:755:9:755:9 | i | 105 | -| test.c:757:5:757:5 | i | 105 | -| test.c:758:9:758:9 | i | 2310 | -| test.c:760:7:760:7 | i | 2147483647 | -| test.c:761:5:761:5 | i | 2147483647 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | 2147483647 | -| test.c:764:7:764:7 | i | 2147483647 | -| test.c:765:10:765:10 | i | 2147483647 | -| test.c:768:3:768:3 | i | 2147483647 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | 127 | -| test.c:777:7:777:7 | n | 4294967295 | -| test.c:779:7:779:7 | n | 4294967295 | -| test.c:780:9:780:9 | n | 4294967295 | -| test.c:783:7:783:7 | n | 4294967295 | -| test.c:784:9:784:9 | n | 4294967295 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 4294967295 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 4294967295 | -| test.c:795:10:795:10 | n | 4294967295 | -| test.c:796:5:796:5 | n | 4294967295 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | 32767 | -| test.c:806:7:806:7 | n | 32767 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 32767 | -| test.c:812:7:812:7 | n | 32767 | -| test.c:813:9:813:9 | n | 32767 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 32767 | -| test.c:819:5:819:5 | n | 32767 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | 32767 | -| test.c:827:9:827:9 | n | 32767 | -| test.c:828:11:828:11 | n | 32767 | -| test.c:832:7:832:7 | n | 32767 | -| test.c:833:13:833:13 | n | 32767 | -| test.c:836:9:836:9 | n | 32767 | -| test.c:839:7:839:7 | n | 32767 | -| test.c:839:22:839:22 | n | 32767 | -| test.c:840:9:840:9 | n | 32767 | -| test.c:843:7:843:7 | n | 32767 | -| test.c:844:5:844:5 | n | 32767 | -| test.c:844:10:844:10 | n | 32767 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 32767 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 32767 | -| test.c:856:7:856:8 | ss | 32767 | -| test.c:857:9:857:10 | ss | 3 | -| test.c:860:7:860:8 | ss | 32767 | -| test.c:861:9:861:10 | ss | 32767 | -| test.c:864:14:864:15 | us | 65535 | -| test.c:865:9:865:10 | us | 32767 | -| test.c:868:14:868:15 | us | 65535 | -| test.c:869:9:869:10 | us | 65535 | -| test.c:872:7:872:8 | ss | 32767 | -| test.c:873:9:873:10 | ss | 32767 | -| test.c:876:7:876:8 | ss | 32767 | -| test.c:877:9:877:10 | ss | 2 | -| test.c:883:8:883:8 | s | 2147483647 | -| test.c:883:15:883:15 | s | 127 | -| test.c:883:23:883:23 | s | 9 | -| test.c:884:18:884:18 | s | 9 | -| test.c:884:22:884:22 | s | 9 | -| test.c:885:9:885:14 | result | 127 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | 2147483647 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 4294967295 | -| test.c:902:12:902:12 | s | 2147483647 | -| test.c:903:7:903:8 | s2 | 4 | -| test.c:908:7:908:7 | x | 2147483647 | -| test.c:909:9:909:9 | y | 2147483647 | -| test.c:913:7:913:7 | y | 2147483647 | -| test.c:922:7:922:7 | x | 2147483647 | -| test.c:927:7:927:7 | x | 15 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:698:10:698:14 | total | 759 | +| test.c:704:12:704:12 | b | 4294967295 | +| test.c:704:17:704:17 | b | 4294967295 | +| test.c:705:16:705:16 | b | 23 | +| test.c:706:5:706:9 | total | 0 | +| test.c:706:14:706:14 | r | 253 | +| test.c:708:12:708:12 | b | 4294967295 | +| test.c:708:17:708:17 | b | 4294967295 | +| test.c:709:16:709:16 | b | 23 | +| test.c:710:5:710:9 | total | 253 | +| test.c:710:14:710:14 | r | 253 | +| test.c:712:13:712:13 | b | 4294967295 | +| test.c:712:18:712:18 | b | 4294967295 | +| test.c:713:16:713:16 | b | 23 | +| test.c:714:5:714:9 | total | 506 | +| test.c:714:14:714:14 | r | 253 | +| test.c:717:10:717:14 | total | 759 | +| test.c:722:3:722:3 | x | 18446744073709551616 | +| test.c:722:7:722:7 | y | 18446744073709551616 | +| test.c:723:3:723:4 | xy | 18446744073709551616 | +| test.c:723:8:723:8 | x | 1000000003 | +| test.c:723:12:723:12 | y | 1000000003 | +| test.c:724:10:724:11 | xy | 1000000006000000000 | +| test.c:729:3:729:3 | x | 18446744073709551616 | +| test.c:730:3:730:3 | y | 18446744073709551616 | +| test.c:731:3:731:4 | xy | 18446744073709551616 | +| test.c:731:8:731:8 | x | 274177 | +| test.c:731:12:731:12 | y | 67280421310721 | +| test.c:732:10:732:11 | xy | 18446744073709551616 | +| test.c:736:7:736:8 | ui | 4294967295 | +| test.c:737:43:737:44 | ui | 4294967295 | +| test.c:737:48:737:49 | ui | 4294967295 | +| test.c:738:12:738:17 | result | 18446744065119617024 | +| test.c:740:7:740:8 | ul | 18446744073709551616 | +| test.c:741:28:741:29 | ul | 18446744073709551616 | +| test.c:741:33:741:34 | ul | 18446744073709551616 | +| test.c:742:12:742:17 | result | 18446744073709551616 | +| test.c:748:7:748:8 | ui | 4294967295 | +| test.c:748:19:748:20 | ui | 10 | +| test.c:749:5:749:6 | ui | 10 | +| test.c:749:11:749:12 | ui | 10 | +| test.c:750:12:750:13 | ui | 100 | +| test.c:754:3:754:9 | uiconst | 10 | +| test.c:757:3:757:9 | ulconst | 10 | +| test.c:758:10:758:16 | uiconst | 40 | +| test.c:758:20:758:26 | ulconst | 40 | +| test.c:762:7:762:7 | i | 2147483647 | +| test.c:762:18:762:18 | i | 2147483647 | +| test.c:763:5:763:5 | i | 2147483647 | +| test.c:763:13:763:13 | i | 2 | +| test.c:764:9:764:9 | i | 10 | +| test.c:766:5:766:5 | i | 2147483647 | +| test.c:766:9:766:9 | i | 10 | +| test.c:767:9:767:9 | i | 15 | +| test.c:769:5:769:5 | i | 15 | +| test.c:770:9:770:9 | i | 105 | +| test.c:772:5:772:5 | i | 105 | +| test.c:773:9:773:9 | i | 2310 | +| test.c:775:7:775:7 | i | 2147483647 | +| test.c:776:5:776:5 | i | 2147483647 | +| test.c:776:9:776:9 | i | -1 | +| test.c:777:9:777:9 | i | 1 | +| test.c:779:3:779:3 | i | 2147483647 | +| test.c:779:7:779:7 | i | 2147483647 | +| test.c:780:10:780:10 | i | 2147483647 | +| test.c:783:3:783:3 | i | 2147483647 | +| test.c:783:10:783:11 | sc | 1 | +| test.c:785:7:785:7 | i | 127 | +| test.c:792:7:792:7 | n | 4294967295 | +| test.c:794:7:794:7 | n | 4294967295 | +| test.c:795:9:795:9 | n | 4294967295 | +| test.c:798:7:798:7 | n | 4294967295 | +| test.c:799:9:799:9 | n | 4294967295 | +| test.c:801:9:801:9 | n | 0 | +| test.c:804:8:804:8 | n | 4294967295 | +| test.c:805:9:805:9 | n | 0 | +| test.c:807:9:807:9 | n | 4294967295 | +| test.c:810:10:810:10 | n | 4294967295 | +| test.c:811:5:811:5 | n | 4294967295 | +| test.c:814:7:814:7 | n | 0 | +| test.c:818:7:818:7 | n | 32767 | +| test.c:821:7:821:7 | n | 32767 | +| test.c:822:9:822:9 | n | 0 | +| test.c:824:9:824:9 | n | 32767 | +| test.c:827:7:827:7 | n | 32767 | +| test.c:828:9:828:9 | n | 32767 | +| test.c:830:9:830:9 | n | 0 | +| test.c:833:10:833:10 | n | 32767 | +| test.c:834:5:834:5 | n | 32767 | +| test.c:837:7:837:7 | n | 0 | +| test.c:841:7:841:7 | n | 32767 | +| test.c:842:9:842:9 | n | 32767 | +| test.c:843:11:843:11 | n | 32767 | +| test.c:847:7:847:7 | n | 32767 | +| test.c:848:13:848:13 | n | 32767 | +| test.c:851:9:851:9 | n | 32767 | +| test.c:854:7:854:7 | n | 32767 | +| test.c:854:22:854:22 | n | 32767 | +| test.c:855:9:855:9 | n | 32767 | +| test.c:858:7:858:7 | n | 32767 | +| test.c:859:5:859:5 | n | 32767 | +| test.c:859:10:859:10 | n | 32767 | +| test.c:859:14:859:14 | n | 0 | +| test.c:860:6:860:6 | n | 32767 | +| test.c:860:10:860:10 | n | 0 | +| test.c:860:14:860:14 | n | 32767 | +| test.c:871:7:871:8 | ss | 32767 | +| test.c:872:9:872:10 | ss | 3 | +| test.c:875:7:875:8 | ss | 32767 | +| test.c:876:9:876:10 | ss | 32767 | +| test.c:879:14:879:15 | us | 65535 | +| test.c:880:9:880:10 | us | 32767 | +| test.c:883:14:883:15 | us | 65535 | +| test.c:884:9:884:10 | us | 65535 | +| test.c:887:7:887:8 | ss | 32767 | +| test.c:888:9:888:10 | ss | 32767 | +| test.c:891:7:891:8 | ss | 32767 | +| test.c:892:9:892:10 | ss | 2 | +| test.c:898:8:898:8 | s | 2147483647 | +| test.c:898:15:898:15 | s | 127 | +| test.c:898:23:898:23 | s | 9 | +| test.c:899:18:899:18 | s | 9 | +| test.c:899:22:899:22 | s | 9 | +| test.c:900:9:900:14 | result | 127 | +| test.c:906:7:906:7 | i | 0 | +| test.c:907:9:907:9 | i | 2147483647 | +| test.c:911:7:911:7 | u | 0 | +| test.c:912:9:912:9 | u | 4294967295 | +| test.c:917:12:917:12 | s | 2147483647 | +| test.c:918:7:918:8 | s2 | 4 | +| test.c:923:7:923:7 | x | 2147483647 | +| test.c:924:9:924:9 | y | 2147483647 | +| test.c:928:7:928:7 | y | 2147483647 | +| test.c:937:7:937:7 | x | 2147483647 | +| test.c:942:7:942:7 | x | 15 | +| test.c:949:8:949:8 | x | 2147483647 | +| test.c:949:12:949:12 | y | 256 | +| test.c:950:9:950:9 | x | 2147483647 | +| test.c:951:9:951:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From 5da73f32329e5c112d8850e86d00532fbefd5164 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 11 Nov 2025 15:29:07 +0100 Subject: [PATCH 769/965] C++: Make sure that nrOfBoundsNEPhi is functional --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 22 +++++++++++++------ .../SimpleRangeAnalysis/nrOfBounds.expected | 4 ---- .../rangeanalysis/SimpleRangeAnalysis/test.c | 4 ++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index fcb99487d2a..bacafb21a6e 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -592,7 +592,7 @@ private module BoundsEstimate { not exists(def.getAPhiInput(v)) and // If there's different `access`es, then they refer to the same variable // with the same lower bounds. Hence adding these guards make no sense (the - // implementation will take the union but they'll be removed by + // implementation will take the union, but they'll be removed by // deduplication). Hence we use `max` as an approximation. result = max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) @@ -624,8 +624,13 @@ private module BoundsEstimate { * Gets the number of bounds for `def` when `def` is an NE phi node for the * variable `v`. */ - private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) + language[monotonicAggregates] + float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union, but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = max(VariableAccess access | isNEPhi(v, def, access, _) | nrOfBoundsExpr(access)) or def.isPhiNode(v) and not isNEPhi(v, def, _, _) and @@ -636,11 +641,14 @@ private module BoundsEstimate { * Gets the number of bounds for `def` when `def` is an unsupported guard phi * node for the variable `v`. */ + language[monotonicAggregates] private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | - isUnsupportedGuardPhi(v, def, access) and - result = nrOfBoundsExpr(access) - ) + // If there's different `access`es, then they refer to the same variable + // with the same lower bounds. Hence adding these guards make no sense (the + // implementation will take the union, but they'll be removed by + // deduplication). Hence we use `max` as an approximation. + result = + max(VariableAccess access | isUnsupportedGuardPhi(v, def, access) | nrOfBoundsExpr(access)) or def.isPhiNode(v) and not isUnsupportedGuardPhi(v, def, _) and diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index 0644c82d188..0d30eb30f75 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -1456,14 +1456,10 @@ estimateNrOfBounds | test.c:434:7:434:7 | b | 1.0 | | test.c:434:7:434:12 | ... = ... | 1.0 | | test.c:434:11:434:12 | 10 | 1.0 | -| test.c:439:11:439:11 | a | 3.0 | | test.c:439:11:439:11 | a | 4.0 | -| test.c:439:11:439:15 | ... + ... | 12.0 | | test.c:439:11:439:15 | ... + ... | 16.0 | | test.c:439:15:439:15 | b | 4.0 | -| test.c:440:10:440:10 | a | 3.0 | | test.c:440:10:440:10 | a | 4.0 | -| test.c:440:10:440:14 | ... + ... | 12.0 | | test.c:440:10:440:14 | ... + ... | 16.0 | | test.c:440:14:440:14 | b | 4.0 | | test.c:447:4:449:50 | (...) | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index d84107df473..3cb3c761f47 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -436,8 +436,8 @@ int ne_phi_nodes(int a, int b) { } // The statement below is an NE phi node for the access `a` in both `a == 17` // and `a == 18`. - int c = a + b; // $ nonFunctionalNrOfBounds - return a + b; // $ nonFunctionalNrOfBounds + int c = a + b; + return a + b; } unsigned int conditional_nested_guards(unsigned int ip) { From 1dd78e2f4bb9fbcb935acb3b35927a447dc1952d Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 11 Nov 2025 15:34:29 +0100 Subject: [PATCH 770/965] C++: Add change note --- .../lib/change-notes/2025-11-11-range-analysis-performance.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md diff --git a/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md new file mode 100644 index 00000000000..f24ab4b87fe --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file From 792ac7a772b841697ea186fcdc4711cee782decc Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 14 Nov 2025 12:59:41 +0100 Subject: [PATCH 771/965] C++: Fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index bacafb21a6e..722866c512f 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -709,7 +709,7 @@ private module BoundsEstimate { * ``` * the actual number of bounds for `y` is 1. However, the estimate will be 4 * as the conditional assignment to `x` gives two bounds for `x` on the last - * line and the addition gives 2 * 2 bounds. There are two sources of anncuracies: + * line and the addition gives 2 * 2 bounds. There are two sources of inaccuracies: * * 1. Without tracking the lower bounds we can't see that `x` is assigned a * value that is equal to its lower bound. From fa703e3e6040b276b96cb708683dd26985dc0bf8 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Fri, 14 Nov 2025 16:53:46 +0000 Subject: [PATCH 772/965] Test cases for sensitive logging sanitizer --- java/ql/test/query-tests/security/CWE-532/Test.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/test/query-tests/security/CWE-532/Test.java b/java/ql/test/query-tests/security/CWE-532/Test.java index cf983afc287..77086bf31d5 100644 --- a/java/ql/test/query-tests/security/CWE-532/Test.java +++ b/java/ql/test/query-tests/security/CWE-532/Test.java @@ -9,5 +9,7 @@ class Test { logger.error("Auth failed for: " + username); // Safe logger.error("Auth failed for: " + nullToken); // Safe logger.error("Auth failed for: " + stringTokenizer); // Safe + logger.error("Auth failed for: " + authToken.substring(4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(0,4) + "..."); // Safe } } From 0c0fbc1457afb525885d18f0c48daebec0851318 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Fri, 14 Nov 2025 18:12:05 +0000 Subject: [PATCH 773/965] Fixed sensitive logging barriers for substring to allow single-arg use --- .../code/java/security/SensitiveLoggingQuery.qll | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 4692427f1cd..f8692902d02 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -61,13 +61,19 @@ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { m.hasQualifiedName("java.lang", "StringBuffer", "substring") or m.hasQualifiedName("java.lang", "StringBuilder", "substring") ) and - twoArgLimit(mc, limit, false) and + ( + twoArgLimit(mc, limit, false) or + singleArgLimit(mc, limit, false) + ) and this.asExpr() = mc.getQualifier() or // Kotlin string operations, which use extension methods (so the string is the first argument) ( m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and - twoArgLimit(mc, limit, true) + ( + twoArgLimit(mc, limit, true) or + singleArgLimit(mc, limit, true) + ) or m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and singleArgLimit(mc, limit, true) From 8455663255050166c9f241016f2edc4dcf42bbfa Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sat, 15 Nov 2025 15:17:33 +0100 Subject: [PATCH 774/965] Rust: Speedup `AccessAfterLifetime.ql` --- .../security/CWE-825/AccessAfterLifetime.ql | 35 +++++++------ .../CWE-825/AccessAfterLifetime.expected | 51 ------------------- 2 files changed, 17 insertions(+), 69 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql index 65c6d861638..fa8d9765d7c 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql @@ -23,9 +23,22 @@ import AccessAfterLifetimeFlow::PathGraph * lifetime has ended. */ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof AccessAfterLifetime::Source } + predicate isSource(DataFlow::Node node) { + node instanceof AccessAfterLifetime::Source and + // exclude cases with sources in macros, since these results are difficult to interpret + not node.asExpr().getExpr().isFromMacroExpansion() + } - predicate isSink(DataFlow::Node node) { node instanceof AccessAfterLifetime::Sink } + predicate isSink(DataFlow::Node node) { + node instanceof AccessAfterLifetime::Sink and + // exclude cases with sinks in macros, since these results are difficult to interpret + not node.asExpr().getExpr().isFromMacroExpansion() and + // include only results inside `unsafe` blocks, as other results tend to be false positives + ( + node.asExpr().getExpr().getEnclosingBlock*().isUnsafe() or + node.asExpr().getExpr().getEnclosingCallable().(Function).isUnsafe() + ) + } predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessAfterLifetime::Barrier } @@ -36,27 +49,13 @@ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { result = [target.getLocation(), source.getLocation()] | isSink(sink) and - narrowDereferenceAfterLifetime(source, sink, target) + AccessAfterLifetime::dereferenceAfterLifetime(source, sink, target) ) } } module AccessAfterLifetimeFlow = TaintTracking::Global; -pragma[inline] -predicate narrowDereferenceAfterLifetime(DataFlow::Node source, DataFlow::Node sink, Variable target) { - // check that the dereference is outside the lifetime of the target - AccessAfterLifetime::dereferenceAfterLifetime(source, sink, target) and - // include only results inside `unsafe` blocks, as other results tend to be false positives - ( - sink.asExpr().getExpr().getEnclosingBlock*().isUnsafe() or - sink.asExpr().getExpr().getEnclosingCallable().(Function).isUnsafe() - ) and - // exclude cases with sources / sinks in macros, since these results are difficult to interpret - not source.asExpr().getExpr().isFromMacroExpansion() and - not sink.asExpr().getExpr().isFromMacroExpansion() -} - from AccessAfterLifetimeFlow::PathNode sourceNode, AccessAfterLifetimeFlow::PathNode sinkNode, Variable target @@ -64,6 +63,6 @@ where // flow from a pointer or reference to the dereference AccessAfterLifetimeFlow::flowPath(sourceNode, sinkNode) and // check that the dereference is outside the lifetime of the target - narrowDereferenceAfterLifetime(sourceNode.getNode(), sinkNode.getNode(), target) + AccessAfterLifetime::dereferenceAfterLifetime(sourceNode.getNode(), sinkNode.getNode(), target) select sinkNode.getNode(), sourceNode, sinkNode, "Access of a pointer to $@ after its lifetime has ended.", target, target.toString() diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected index f58c58bc896..10fa2c751a1 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -186,28 +186,6 @@ edges | lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:655:4:655:7 | ref1 | provenance | | | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | lifetime.rs:655:4:655:7 | ref1 [&ref] | provenance | | | lifetime.rs:655:22:655:25 | str2 | lifetime.rs:655:11:655:25 | &raw const str2 [&ref] | provenance | | -| lifetime.rs:680:7:680:8 | r1 | lifetime.rs:692:13:692:14 | r1 | provenance | | -| lifetime.rs:682:4:682:12 | &... | lifetime.rs:680:7:680:8 | r1 | provenance | | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | lifetime.rs:684:8:684:9 | r2 | provenance | | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | lifetime.rs:684:12:684:13 | r3 | provenance | | -| lifetime.rs:684:8:684:9 | r2 | lifetime.rs:693:13:693:14 | r2 | provenance | | -| lifetime.rs:684:12:684:13 | r3 | lifetime.rs:694:13:694:14 | r3 | provenance | | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | provenance | | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | provenance | | -| lifetime.rs:686:5:686:13 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | provenance | | -| lifetime.rs:687:5:687:15 | &... | lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | provenance | | -| lifetime.rs:717:35:723:2 | { ... } | lifetime.rs:730:11:730:25 | e1.test_match() | provenance | | -| lifetime.rs:718:7:718:8 | r1 | lifetime.rs:717:35:723:2 | { ... } | provenance | | -| lifetime.rs:719:26:719:34 | &... | lifetime.rs:718:7:718:8 | r1 | provenance | | -| lifetime.rs:730:6:730:7 | r1 | lifetime.rs:734:12:734:13 | r1 | provenance | | -| lifetime.rs:730:11:730:25 | e1.test_match() | lifetime.rs:730:6:730:7 | r1 | provenance | | -| lifetime.rs:766:2:766:11 | &val | lifetime.rs:766:2:766:11 | ptr | provenance | | -| lifetime.rs:766:2:766:11 | ptr | lifetime.rs:766:2:766:11 | ptr | provenance | | -| lifetime.rs:767:2:767:11 | &val | lifetime.rs:767:2:767:11 | ptr | provenance | | -| lifetime.rs:767:2:767:11 | ptr | lifetime.rs:767:2:767:11 | ptr | provenance | | -| lifetime.rs:769:6:769:8 | ptr | lifetime.rs:771:12:771:14 | ptr | provenance | | -| lifetime.rs:769:12:769:21 | &val | lifetime.rs:769:12:769:21 | ptr | provenance | | -| lifetime.rs:769:12:769:21 | ptr | lifetime.rs:769:6:769:8 | ptr | provenance | | | lifetime.rs:781:2:781:19 | return ... | lifetime.rs:785:11:785:41 | get_local_for_unsafe_function(...) | provenance | | | lifetime.rs:781:9:781:19 | &my_local10 | lifetime.rs:781:2:781:19 | return ... | provenance | | | lifetime.rs:785:6:785:7 | p1 | lifetime.rs:789:12:789:13 | p1 | provenance | | @@ -421,35 +399,6 @@ nodes | lifetime.rs:655:22:655:25 | str2 | semmle.label | str2 | | lifetime.rs:659:15:659:18 | ref1 | semmle.label | ref1 | | lifetime.rs:667:14:667:17 | ref1 | semmle.label | ref1 | -| lifetime.rs:680:7:680:8 | r1 | semmle.label | r1 | -| lifetime.rs:682:4:682:12 | &... | semmle.label | &... | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.0] | semmle.label | TuplePat [tuple.0] | -| lifetime.rs:684:7:684:14 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | -| lifetime.rs:684:8:684:9 | r2 | semmle.label | r2 | -| lifetime.rs:684:12:684:13 | r3 | semmle.label | r3 | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| lifetime.rs:686:4:687:16 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | -| lifetime.rs:686:5:686:13 | &... | semmle.label | &... | -| lifetime.rs:687:5:687:15 | &... | semmle.label | &... | -| lifetime.rs:692:13:692:14 | r1 | semmle.label | r1 | -| lifetime.rs:693:13:693:14 | r2 | semmle.label | r2 | -| lifetime.rs:694:13:694:14 | r3 | semmle.label | r3 | -| lifetime.rs:717:35:723:2 | { ... } | semmle.label | { ... } | -| lifetime.rs:718:7:718:8 | r1 | semmle.label | r1 | -| lifetime.rs:719:26:719:34 | &... | semmle.label | &... | -| lifetime.rs:730:6:730:7 | r1 | semmle.label | r1 | -| lifetime.rs:730:11:730:25 | e1.test_match() | semmle.label | e1.test_match() | -| lifetime.rs:734:12:734:13 | r1 | semmle.label | r1 | -| lifetime.rs:766:2:766:11 | &val | semmle.label | &val | -| lifetime.rs:766:2:766:11 | ptr | semmle.label | ptr | -| lifetime.rs:766:2:766:11 | ptr | semmle.label | ptr | -| lifetime.rs:767:2:767:11 | &val | semmle.label | &val | -| lifetime.rs:767:2:767:11 | ptr | semmle.label | ptr | -| lifetime.rs:767:2:767:11 | ptr | semmle.label | ptr | -| lifetime.rs:769:6:769:8 | ptr | semmle.label | ptr | -| lifetime.rs:769:12:769:21 | &val | semmle.label | &val | -| lifetime.rs:769:12:769:21 | ptr | semmle.label | ptr | -| lifetime.rs:771:12:771:14 | ptr | semmle.label | ptr | | lifetime.rs:781:2:781:19 | return ... | semmle.label | return ... | | lifetime.rs:781:9:781:19 | &my_local10 | semmle.label | &my_local10 | | lifetime.rs:785:6:785:7 | p1 | semmle.label | p1 | From 19ff5c09d233c1ade20cc56b3d4d40a74f742b05 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 17 Nov 2025 09:30:20 +0100 Subject: [PATCH 775/965] Rust: Cache `inferCertainType` Ideally, this shouldn't be needed, as we already cache `inferType`. However, since we have consistency checks that directly call `inferCertainType`, we need to cache it as well to avoid recomputation. --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 804fc017194..080bac5d1b7 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -9,6 +9,7 @@ private import TypeMention private import typeinference.FunctionType private import typeinference.FunctionOverloading as FunctionOverloading private import typeinference.BlanketImplementation as BlanketImplementation +private import codeql.rust.internal.CachedStages private import codeql.typeinference.internal.TypeInference private import codeql.rust.frameworks.stdlib.Stdlib private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -437,9 +438,10 @@ module CertainTypeInference { * Holds if `n` has complete and certain type information and if `n` has the * resulting type at `path`. */ - pragma[nomagic] + cached Type inferCertainType(AstNode n, TypePath path) { - result = inferAnnotatedType(n, path) + result = inferAnnotatedType(n, path) and + Stages::TypeInferenceStage::ref() or result = inferCertainCallExprType(n, path) or @@ -3454,8 +3456,6 @@ private Type inferCastExprType(CastExpr ce, TypePath path) { cached private module Cached { - private import codeql.rust.internal.CachedStages - /** Holds if `receiver` is the receiver of a method call with an implicit dereference. */ cached predicate receiverHasImplicitDeref(AstNode receiver) { From 089bffff944cc7040ce826a6bc64abdd8df449ed Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 30 Oct 2025 15:50:03 +0100 Subject: [PATCH 776/965] Rust: Make impl blocks only give rise to direct trait implementation --- .../codeql/rust/internal/TypeInference.qll | 76 ++++++++++--------- .../internal/typeinference/FunctionType.qll | 67 ++++++++-------- .../test/library-tests/type-inference/main.rs | 6 +- .../type-inference/type-inference.expected | 3 - .../typeinference/internal/TypeInference.qll | 12 +-- 5 files changed, 84 insertions(+), 80 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 804fc017194..0ff39fdde78 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -179,48 +179,52 @@ private module Input2 implements InputSig2 { * inference module for more information. */ predicate conditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ) { // `impl` blocks implementing traits + transitive = false and exists(Impl impl | abs = impl and condition = impl.getSelfTy() and constraint = impl.getTrait() ) or - // supertraits - exists(Trait trait | - abs = trait and - condition = trait and - constraint = trait.getATypeBound().getTypeRepr() - ) - or - // trait bounds on type parameters - exists(TypeParam param | - abs = param.getATypeBound() and - condition = param and - constraint = abs.(TypeBound).getTypeRepr() - ) - or - // the implicit `Self` type parameter satisfies the trait - exists(SelfTypeParameterMention self | - abs = self and - condition = self and - constraint = self.getTrait() - ) - or - exists(ImplTraitTypeRepr impl | - abs = impl and - condition = impl and - constraint = impl.getTypeBoundList().getABound().getTypeRepr() - ) - or - // a `dyn Trait` type implements `Trait`. See the comment on - // `DynTypeBoundListMention` for further details. - exists(DynTraitTypeRepr object | - abs = object and - condition = object.getTypeBoundList() and - constraint = object.getTrait() + transitive = true and + ( + // supertraits + exists(Trait trait | + abs = trait and + condition = trait and + constraint = trait.getATypeBound().getTypeRepr() + ) + or + // trait bounds on type parameters + exists(TypeParam param | + abs = param.getATypeBound() and + condition = param and + constraint = abs.(TypeBound).getTypeRepr() + ) + or + // the implicit `Self` type parameter satisfies the trait + exists(SelfTypeParameterMention self | + abs = self and + condition = self and + constraint = self.getTrait() + ) + or + exists(ImplTraitTypeRepr impl | + abs = impl and + condition = impl and + constraint = impl.getTypeBoundList().getABound().getTypeRepr() + ) + or + // a `dyn Trait` type implements `Trait`. See the comment on + // `DynTypeBoundListMention` for further details. + exists(DynTraitTypeRepr object | + abs = object and + condition = object.getTypeBoundList() and + constraint = object.getTrait() + ) ) } } @@ -3616,10 +3620,10 @@ private module Debug { } predicate debugConditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ) { abs = getRelevantLocatable() and - Input2::conditionSatisfiesConstraint(abs, condition, constraint) + Input2::conditionSatisfiesConstraint(abs, condition, constraint, transitive) } predicate debugInferShorthandSelfType(ShorthandSelfParameterMention self, TypePath path, Type t) { diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 727c99fa810..35ba7562658 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -72,16 +72,24 @@ module FunctionPositionMatchingInput { } private newtype TAssocFunctionType = - /** An associated function `f` that should be specialized for `i` at `pos`. */ - MkAssocFunctionType(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { - f = i.getASuccessor(_) and exists(pos.getTypeMention(f)) + /** An associated function `f` in `parent` should be specialized for `i` at `pos`. */ + MkAssocFunctionType( + ImplOrTraitItemNode parent, Function f, ImplOrTraitItemNode i, FunctionPosition pos + ) { + parent.getAnAssocItem() = f and + i.getASuccessor(_) = f and + // When `f` is not directly in `i`, the `parent` should be satisfiable + // through `i`. This ensures that `parent` is either a supertrait of `i` or + // `i` in an `impl` block implementing `parent`. + (parent = i or BaseTypes::rootTypesSatisfaction(_, TTrait(parent), i, _, _)) and + exists(pos.getTypeMention(f)) } -bindingset[condition, constraint, tp] +bindingset[abs, constraint, tp] private Type getTraitConstraintTypeAt( - TypeMention condition, TypeMention constraint, TypeParameter tp, TypePath path + TypeAbstraction abs, TypeMention constraint, TypeParameter tp, TypePath path ) { - BaseTypes::conditionSatisfiesConstraintTypeAt(_, condition, constraint, + BaseTypes::conditionSatisfiesConstraintTypeAt(abs, _, constraint, TypePath::singleton(tp).appendInverse(path), result) } @@ -91,28 +99,19 @@ private Type getTraitConstraintTypeAt( */ pragma[nomagic] Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition pos, TypePath path) { - exists(MkAssocFunctionType(f, i, pos)) and - ( + exists(ImplOrTraitItemNode parent | exists(MkAssocFunctionType(parent, f, i, pos)) | // No specialization needed when the function is directly in the trait or // impl block or the declared type is not a type parameter - (i.getAnAssocItem() = f or not result instanceof TypeParameter) and + (parent = i or not result instanceof TypeParameter) and result = pos.getTypeMention(f).resolveTypeAt(path) or - not i.getAnAssocItem() = f and - exists(TypePath prefix, TypePath suffix, TypeParameter tp | + exists(TypePath prefix, TypePath suffix, TypeParameter tp, TypeMention constraint | + BaseTypes::rootTypesSatisfaction(_, TTrait(parent), i, _, constraint) and path = prefix.append(suffix) and - tp = pos.getTypeMention(f).resolveTypeAt(prefix) - | + tp = pos.getTypeMention(f).resolveTypeAt(prefix) and if tp = TSelfTypeParameter(_) then result = resolveImplOrTraitType(i, suffix) - else - exists(TraitItemNode trait, TypeMention condition, TypeMention constraint | - trait.getAnAssocItem() = f and - BaseTypes::rootTypesSatisfaction(_, TTrait(trait), _, condition, constraint) and - result = getTraitConstraintTypeAt(condition, constraint, tp, suffix) - | - condition = i.(Trait) or condition = i.(Impl).getSelfTy() - ) + else result = getTraitConstraintTypeAt(i, constraint, tp, suffix) ) ) } @@ -134,23 +133,25 @@ Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition * fn m3(self); // self3 * } * - * impl T2 for X { + * impl T1 for X { * fn m1(self) { ... } // self4 + * } * + * impl T2 for X { * fn m3(self) { ... } // self5 * } * ``` * - * param | `impl` or trait | type - * ------- | --------------- | ---- - * `self1` | `trait T1` | `T1` - * `self1` | `trait T2` | `T2` - * `self2` | `trait T1` | `T1` - * `self2` | `trait T2` | `T2` - * `self2` | `impl T2 for X` | `X` - * `self3` | `trait T2` | `T2` - * `self4` | `impl T2 for X` | `X` - * `self5` | `impl T2 for X` | `X` + * f | `impl` or trait | pos | type + * ---- | --------------- | ------ | ---- + * `m1` | `trait T1` | `self` | `T1` + * `m1` | `trait T2` | `self` | `T2` + * `m2` | `trait T1` | `self` | `T1` + * `m2` | `trait T2` | `self` | `T2` + * `m2` | `impl T1 for X` | `self` | `X` + * `m3` | `trait T2` | `self` | `T2` + * `m4` | `impl T2 for X` | `self` | `X` + * `m5` | `impl T2 for X` | `self` | `X` */ class AssocFunctionType extends MkAssocFunctionType { /** @@ -158,7 +159,7 @@ class AssocFunctionType extends MkAssocFunctionType { * when viewed as a member of the `impl` or trait item `i`. */ predicate appliesTo(Function f, ImplOrTraitItemNode i, FunctionPosition pos) { - this = MkAssocFunctionType(f, i, pos) + this = MkAssocFunctionType(_, f, i, pos) } /** diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 1cac4e2d3e2..d3209ccbfdf 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -586,10 +586,10 @@ mod impl_overlap { println!("{:?}", w.m(x)); // $ target=S3::m println!("{:?}", S3::m(&w, x)); // $ target=S3::m - S4.m(); // $ target=::m $ SPURIOUS: target=MyTrait1::m + S4.m(); // $ target=::m S4::m(&S4); // $ target=::m $ SPURIOUS: target=MyTrait1::m - S5(0i32).m(); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m - S5::m(&S5(0i32)); // $ target=_as_MyTrait1>::m $ SPURIOUS: target=MyTrait1::m + S5(0i32).m(); // $ target=_as_MyTrait1>::m + S5::m(&S5(0i32)); // $ target=_as_MyTrait1>::m S5(true).m(); // $ target=MyTrait1::m S5::m(&S5(true)); // $ target=MyTrait1::m } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 99ab4b1e770..1e69c775a8c 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -5443,7 +5443,6 @@ inferType | main.rs:2595:42:2595:42 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2596:9:2596:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2596:13:2596:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2596:13:2596:13 | u | | file://:0:0:0:0 | & | | main.rs:2596:18:2596:23 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2596:18:2596:23 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2596:18:2596:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | @@ -5473,7 +5472,6 @@ inferType | main.rs:2602:9:2602:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2602:13:2602:13 | u | | file://:0:0:0:0 | & | | main.rs:2602:18:2602:22 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2602:18:2602:22 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2602:18:2602:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | @@ -5514,7 +5512,6 @@ inferType | main.rs:2608:20:2608:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2609:9:2609:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | | main.rs:2609:13:2609:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2609:13:2609:13 | u | | file://:0:0:0:0 | & | | main.rs:2609:18:2609:22 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2609:18:2609:22 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2609:18:2609:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index a827ef3cd79..260f78344ed 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -450,6 +450,8 @@ module Make1 Input1> { * free in `condition` and `constraint`, * - and for every instantiation of the type parameters from `abs` the * resulting `condition` satisifies the constraint given by `constraint`. + * - `transitive` corresponds to wether any further constraints satisifed + * through `constraint` also applies to `condition`. * * Example in C#: * ```csharp @@ -487,7 +489,7 @@ module Make1 Input1> { * should be empty. */ predicate conditionSatisfiesConstraint( - TypeAbstraction abs, TypeMention condition, TypeMention constraint + TypeAbstraction abs, TypeMention condition, TypeMention constraint, boolean transitive ); } @@ -754,13 +756,13 @@ module Make1 Input1> { private predicate typeCondition( Type type, TypeAbstraction abs, TypeMentionTypeTree condition ) { - conditionSatisfiesConstraint(abs, condition, _) and + conditionSatisfiesConstraint(abs, condition, _, _) and type = resolveTypeMentionRoot(condition) } pragma[nomagic] private predicate typeConstraint(Type type, TypeMentionTypeTree constraint) { - conditionSatisfiesConstraint(_, _, constraint) and + conditionSatisfiesConstraint(_, _, constraint, _) and type = resolveTypeMentionRoot(constraint) } @@ -781,12 +783,12 @@ module Make1 Input1> { TypeAbstraction abs, TypeMention condition, TypeMention constraint, TypePath path, Type t ) { // base case - conditionSatisfiesConstraint(abs, condition, constraint) and + conditionSatisfiesConstraint(abs, condition, constraint, _) and constraint.resolveTypeAt(path) = t or // recursive case exists(TypeAbstraction midAbs, TypeMention midConstraint, TypeMention midCondition | - conditionSatisfiesConstraint(abs, condition, midConstraint) and + conditionSatisfiesConstraint(abs, condition, midConstraint, true) and // NOTE: `midAbs` describe the free type variables in `midCondition`, hence // we use that for instantiation check. IsInstantiationOf::isInstantiationOf(midConstraint, From a405b7b3e05969795428cada93d119560d919b37 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 17 Nov 2025 10:47:37 +0100 Subject: [PATCH 777/965] JS: Add discard predicates for locations --- .../semmle/javascript/internal/Overlay.qll | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll index a20ac1868e6..43a4a07df47 100644 --- a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll +++ b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll @@ -28,3 +28,23 @@ overlay[discard_entity] private predicate discardEntity(@locatable node) { exists(string file | discardableEntity(file, node) and discardFile(file)) } + +overlay[local] +private string getFileFromLocation(@location loc) { + exists(@file file | + locations_default(loc, file, _, _, _, _) and + files(file, result) + ) +} + +/** Holds if `loc` is in the `file` and is part of the overlay base database. */ +overlay[local] +private predicate discardableLocation(string file, @location node) { + not isOverlay() and file = getFileFromLocation(node) +} + +/** Holds if `loc` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ +overlay[discard_entity] +private predicate discardLocation(@location loc) { + exists(string file | discardableLocation(file, loc) and discardFile(file)) +} From 4b57b4418fbc1b87db2201257cdd0744ac230b61 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 17 Nov 2025 10:48:15 +0100 Subject: [PATCH 778/965] JS: Factor out some code --- javascript/ql/lib/semmle/javascript/internal/Overlay.qll | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll index 43a4a07df47..f3eed619f0d 100644 --- a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll +++ b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll @@ -6,10 +6,9 @@ private predicate isOverlay() { databaseMetadata("isOverlay", "true") } overlay[local] private string getFileFromEntity(@locatable node) { - exists(@location loc, @file file | + exists(@location loc | hasLocation(node, loc) and - locations_default(loc, file, _, _, _, _) and - files(file, result) + result = getFileFromLocation(loc) ) } From 861c236daef3ba9ce36f723381e5888b8fe527ff Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 12 Nov 2025 11:44:12 +0100 Subject: [PATCH 779/965] C++: Add table for expanded compilation arguments --- cpp/ql/lib/semmlecode.cpp.dbscheme | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 2121ffec11f..1a6854060d5 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -47,6 +47,19 @@ compilation_args( string arg : string ref ); +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + /** * Optionally, record the build mode for each compilation. */ From ee97d6f46189b21fb81d12f0bebdc20b5ef22e02 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 12 Nov 2025 11:47:29 +0100 Subject: [PATCH 780/965] C++: Expose the expanded compilation arguments --- cpp/ql/lib/semmle/code/cpp/Compilation.qll | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index 407dc31e05f..716156acb44 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -94,6 +94,19 @@ class Compilation extends @compilation { */ string getArgument(int i) { compilation_args(this, i, result) } + /** + * Gets an expanded argument passed to the extractor on this invocation. + */ + string getAnExpandedArgument() { result = this.getArgument(_) } + + /** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `getArgument`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ + string getExpandedArgument(int i) { compilation_expanded_args(this, i, result) } + /** * Gets the total amount of CPU time spent processing all the files in the * front-end and extractor. From a8d488fa29688404400422e8dd02166bd494eacf Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 12 Nov 2025 15:32:20 +0100 Subject: [PATCH 781/965] C++: Add upgrade and downgrade scripts --- .../old.dbscheme | 2450 +++++++++++++++++ .../semmlecode.cpp.dbscheme | 2437 ++++++++++++++++ .../upgrade.properties | 3 + .../old.dbscheme | 2437 ++++++++++++++++ .../semmlecode.cpp.dbscheme | 2450 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 9779 insertions(+) create mode 100644 cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme create mode 100644 cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties diff --git a/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme new file mode 100644 index 00000000000..1a6854060d5 --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme @@ -0,0 +1,2450 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..2121ffec11f --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme @@ -0,0 +1,2437 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties new file mode 100644 index 00000000000..6fa192fc000 --- /dev/null +++ b/cpp/downgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties @@ -0,0 +1,3 @@ +description: Support expanded compilation argument lists +compatibility: full +compilation_expanded_args.rel: delete diff --git a/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme new file mode 100644 index 00000000000..2121ffec11f --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/old.dbscheme @@ -0,0 +1,2437 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..1a6854060d5 --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/semmlecode.cpp.dbscheme @@ -0,0 +1,2450 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties new file mode 100644 index 00000000000..046b67dcbf3 --- /dev/null +++ b/cpp/ql/lib/upgrades/2121ffec11fac265524955fee1775217364d4ca4/upgrade.properties @@ -0,0 +1,2 @@ +description: Support expanded compilation argument lists +compatibility: backwards From 61b7eb3d5c87b387129faa427246850edfe8ff7f Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 13 Nov 2025 10:41:18 +0100 Subject: [PATCH 782/965] C++: Update dbscheme stats file --- cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 5866 ++++++++++++---------- 1 file changed, 3191 insertions(+), 2675 deletions(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 42cff5d8d16..1d796c9aa9a 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 12643 + 12640 @externalDataElement @@ -10,19 +10,19 @@ @file - 65212 + 65198 @folder - 12389 + 12387 @diagnostic - 1484 + 359 @location_default - 46945087 + 46943795 @pch @@ -30,15 +30,15 @@ @macro_expansion - 40256583 + 40272403 @other_macro_reference - 300694 + 300697 @normal_function - 2738022 + 2737947 @unknown_function @@ -46,11 +46,11 @@ @constructor - 698728 + 698677 @destructor - 86202 + 86200 @conversion_function @@ -58,11 +58,11 @@ @operator - 652444 + 652426 @user_defined_literal - 998 + 997 @deduction_guide @@ -70,27 +70,27 @@ @fun_decl - 4202967 + 4202851 @var_decl - 9383104 + 9383095 @type_decl - 1633482 + 1633437 @namespace_decl - 407775 + 407917 @using_declaration - 267822 + 267880 @using_directive - 6473 + 6472 @using_enum_declaration @@ -98,27 +98,27 @@ @static_assert - 173262 + 172982 @parameter - 7019832 + 7019638 @membervariable - 1497674 + 1499493 @globalvariable - 488148 + 488384 @localvariable - 726300 + 725806 @enumconstant - 347816 + 347930 @errortype @@ -366,23 +366,23 @@ @pointer - 452469 + 452457 @type_with_specifiers - 693238 + 693219 @array - 90319 + 90316 @routineptr - 684112 + 684266 @reference - 967314 + 967288 @gnu_vector @@ -394,7 +394,7 @@ @rvalue_reference - 291042 + 291034 @block @@ -404,10 +404,6 @@ @scalable_vector 1 - - @decltype - 102349 - @typeof 816 @@ -458,7 +454,7 @@ @remove_cv - 2065 + 2062 @remove_cvref @@ -486,27 +482,31 @@ @remove_reference - 5723 + 5715 + + + @decltype + 102350 @struct - 979892 + 979711 @union - 20958 + 20957 @enum - 41550 + 41551 @template_parameter - 867095 + 866907 @alias - 1762360 + 1762011 @unknown_usertype @@ -514,15 +514,15 @@ @class - 324974 + 324965 @template_template_parameter - 6115 + 6114 @proxy_class - 48439 + 48429 @scoped_enum @@ -530,11 +530,11 @@ @template_struct - 212084 + 212038 @template_class - 29316 + 29315 @template_union @@ -542,23 +542,23 @@ @mangledname - 6364268 + 6364342 @type_mention - 5903894 + 5907627 @concept_template - 3614 + 3610 @routinetype - 604322 + 604482 @ptrtomember - 9728 + 9725 @specifier @@ -570,11 +570,11 @@ @stdattribute - 352794 + 352784 @declspec - 330281 + 330286 @msattribute @@ -582,15 +582,15 @@ @alignas - 2164 + 2163 @attribute_arg_token - 16693 + 16692 @attribute_arg_constant_expr - 71856 + 71883 @attribute_arg_expr @@ -606,23 +606,23 @@ @attribute_arg_type - 460 + 459 @derivation - 476902 + 476867 @frienddecl - 700465 + 699835 @comment - 11233402 + 11233093 @namespace - 8650 + 8648 @specialnamequalifyingelement @@ -630,15 +630,15 @@ @namequalifier - 3041979 + 3037999 @value - 13474601 + 13474763 @initialiser - 2251321 + 2247635 @address_of @@ -646,43 +646,43 @@ @indirect - 404153 + 404158 @array_to_pointer - 1953750 + 1953766 @parexpr - 4915206 + 4915246 @arithnegexpr - 586534 + 586538 @unaryplusexpr - 4069 + 4067 @complementexpr - 38199 + 38200 @notexpr - 355764 + 355767 @postincrexpr - 84571 + 84572 @postdecrexpr - 57394 + 57395 @preincrexpr - 96714 + 96715 @predecrexpr @@ -690,87 +690,87 @@ @conditionalexpr - 897879 + 897887 @addexpr - 571552 + 571559 @subexpr - 466799 + 466802 @mulexpr - 435793 + 435798 @divexpr - 52387 + 52388 @remexpr - 16012 + 16011 @paddexpr - 118669 + 118671 @psubexpr - 68016 + 68017 @pdiffexpr - 43912 + 43910 @lshiftexpr - 551696 + 551703 @rshiftexpr - 200554 + 200557 @andexpr - 481218 + 481223 @orexpr - 194055 + 194057 @xorexpr - 73952 + 73953 @eqexpr - 643372 + 643379 @neexpr - 411870 + 411873 @gtexpr - 111149 + 111150 @ltexpr - 139429 + 139430 @geexpr - 81358 + 81359 @leexpr - 292036 + 292039 @assignexpr - 1281144 + 1281159 @assignaddexpr @@ -782,7 +782,7 @@ @assignmulexpr - 11185 + 11183 @assigndivexpr @@ -806,11 +806,11 @@ @assignorexpr - 19606 + 19607 @assignxorexpr - 29909 + 29910 @assignpaddexpr @@ -822,27 +822,27 @@ @andlogicalexpr - 346589 + 346593 @orlogicalexpr - 1103522 + 1103536 @commaexpr - 168288 + 168283 @subscriptexpr - 435142 + 435148 @callexpr - 239780 + 239762 @vastartexpr - 4979 + 4970 @vaargexpr @@ -858,63 +858,63 @@ @varaccess - 8254629 + 8254728 @runtime_sizeof - 402047 + 402052 @runtime_alignof - 49877 + 49873 @expr_stmt - 148364 + 148366 @routineexpr - 5732444 + 5730574 @type_operand - 1405362 + 1405379 @offsetofexpr - 149024 + 149026 @typescompexpr - 701934 + 701942 @literal - 7966299 + 7966636 @aggregateliteral - 1397521 + 1397522 @c_style_cast - 6026987 + 6026984 @temp_init - 992173 + 991871 @errorexpr - 45686 + 45479 @reference_to - 1903138 + 1902179 @ref_indirect - 2107325 + 2107171 @vacuous_destructor_call @@ -922,7 +922,7 @@ @assume - 4151 + 4143 @conjugation @@ -974,23 +974,23 @@ @thisaccess - 1558277 + 1555763 @new_expr - 46198 + 46194 @delete_expr - 11481 + 11480 @throw_expr - 24178 + 24145 @condition_decl - 408920 + 408385 @braced_init_list @@ -998,7 +998,7 @@ @type_id - 47901 + 47898 @sizeof_pack @@ -1050,11 +1050,11 @@ @isbaseofexpr - 258 + 257 @isclassexpr - 2388 + 2384 @isconvtoexpr @@ -1066,7 +1066,7 @@ @isenumexpr - 2994 + 2993 @ispodexpr @@ -1090,7 +1090,7 @@ @uuidof - 26677 + 26695 @delete_array_expr @@ -1098,23 +1098,23 @@ @new_array_expr - 6653 + 6641 @foldexpr - 1247 + 1246 @ctordirectinit - 112837 + 112829 @ctorvirtualinit - 4020 + 4019 @ctorfieldinit - 206212 + 206206 @ctordelegatinginit @@ -1122,27 +1122,27 @@ @dtordirectdestruct - 39452 + 39449 @dtorvirtualdestruct - 3986 + 3985 @dtorfielddestruct - 39827 + 39824 @static_cast - 348053 + 348044 @reinterpret_cast - 40088 + 40018 @const_cast - 24461 + 24460 @dynamic_cast @@ -1150,15 +1150,15 @@ @lambdaexpr - 19057 + 19023 @param_ref - 164066 + 163939 @noopexpr - 48 + 64 @istriviallyconstructibleexpr @@ -1174,7 +1174,7 @@ @istriviallydestructibleexpr - 998 + 997 @istriviallyassignableexpr @@ -1254,11 +1254,11 @@ @isfinalexpr - 9403 + 9402 @noexceptexpr - 28465 + 28343 @builtinshufflevector @@ -1270,7 +1270,7 @@ @builtinaddressof - 15469 + 15468 @vec_fill @@ -1286,7 +1286,7 @@ @spaceshipexpr - 1312 + 1310 @co_await @@ -1306,7 +1306,7 @@ @hasuniqueobjectrepresentations - 43 + 42 @builtinbitcast @@ -1322,7 +1322,7 @@ @issame - 4539 + 4534 @isfunction @@ -1430,7 +1430,7 @@ @reuseexpr - 847039 + 845931 @istriviallycopyassignable @@ -1486,7 +1486,7 @@ @referenceconstructsfromtemporary - 43 + 42 @referenceconvertsfromtemporary @@ -1494,7 +1494,7 @@ @isconvertible - 129 + 128 @isvalidwinrttype @@ -1530,67 +1530,67 @@ @requires_expr - 16503 + 16481 @nested_requirement - 688 + 687 @compound_requirement - 10951 + 10937 @concept_id - 90433 + 90315 @lambdacapture - 31965 + 31909 @stmt_expr - 2031613 + 2031638 @stmt_if - 990214 + 990226 @stmt_while - 39647 + 39648 @stmt_goto - 157909 + 157874 @stmt_label - 78025 + 78008 @stmt_return - 1241788 + 1241721 @stmt_block - 1728666 + 1728619 @stmt_end_test_while - 233641 + 233643 @stmt_for - 84389 + 84390 @stmt_switch_case - 836152 + 835058 @stmt_switch - 411868 + 411329 @stmt_asm @@ -1598,11 +1598,11 @@ @stmt_decl - 772425 + 771065 @stmt_empty - 429404 + 428842 @stmt_continue @@ -1610,15 +1610,15 @@ @stmt_break - 137934 + 137691 @stmt_try_block - 26740 + 26736 @stmt_microsoft_try - 211 + 210 @stmt_set_vla_size @@ -1630,7 +1630,7 @@ @stmt_assigned_goto - 12426 + 12427 @stmt_range_based_for @@ -1638,11 +1638,11 @@ @stmt_handler - 43781 + 43770 @stmt_constexpr_if - 106037 + 106034 @stmt_co_return @@ -1662,43 +1662,43 @@ @ppd_if - 590942 + 590926 @ppd_ifdef - 214363 + 214366 @ppd_ifndef - 158633 + 160377 @ppd_elif - 21917 + 21912 @ppd_else - 234905 + 234898 @ppd_endif - 888971 + 888947 @ppd_plain_include - 318564 + 318495 @ppd_define - 2750123 + 2750047 @ppd_undef - 100424 + 100421 @ppd_pragma - 406187 + 406176 @ppd_include_next @@ -1706,7 +1706,7 @@ @ppd_line - 18812 + 18799 @ppd_error @@ -1764,11 +1764,11 @@ compilations - 12643 + 12640 id - 12643 + 12640 cwd @@ -1786,7 +1786,7 @@ 1 2 - 12643 + 12640 @@ -1812,19 +1812,19 @@ compilation_args - 1012213 + 1011994 id - 12643 + 12640 num - 1468 + 1467 arg - 29268 + 29262 @@ -1893,7 +1893,7 @@ 103 104 - 1996 + 1995 104 @@ -1944,7 +1944,7 @@ 42 53 - 602 + 601 53 @@ -1984,7 +1984,7 @@ 79 89 - 1130 + 1129 89 @@ -2152,12 +2152,12 @@ 1 2 - 13403 + 13400 2 3 - 12685 + 12682 3 @@ -2183,12 +2183,403 @@ 1 2 - 19382 + 19377 2 3 - 8724 + 8722 + + + 3 + 62 + 1161 + + + + + + + + + compilation_expanded_args + 1011994 + + + id + 12640 + + + num + 1467 + + + arg + 29262 + + + + + id + num + + + 12 + + + 36 + 42 + 1003 + + + 42 + 43 + 1098 + + + 43 + 44 + 718 + + + 44 + 45 + 506 + + + 45 + 51 + 950 + + + 51 + 70 + 485 + + + 71 + 72 + 707 + + + 72 + 90 + 897 + + + 94 + 96 + 390 + + + 98 + 99 + 1341 + + + 100 + 102 + 95 + + + 103 + 104 + 1995 + + + 104 + 119 + 1066 + + + 120 + 138 + 929 + + + 139 + 140 + 454 + + + + + + + id + arg + + + 12 + + + 34 + 38 + 591 + + + 38 + 39 + 1499 + + + 39 + 40 + 982 + + + 40 + 42 + 1087 + + + 42 + 53 + 601 + + + 53 + 54 + 707 + + + 54 + 63 + 897 + + + 64 + 67 + 401 + + + 67 + 68 + 1404 + + + 68 + 70 + 971 + + + 70 + 71 + 1404 + + + 73 + 79 + 950 + + + 79 + 89 + 1129 + + + 89 + 90 + 10 + + + + + + + num + id + + + 12 + + + 43 + 90 + 63 + + + 90 + 108 + 116 + + + 108 + 183 + 105 + + + 198 + 422 + 116 + + + 422 + 595 + 126 + + + 595 + 605 + 126 + + + 605 + 749 + 116 + + + 750 + 778 + 116 + + + 781 + 883 + 116 + + + 930 + 1190 + 84 + + + 1197 + 1198 + 380 + + + + + + + num + arg + + + 12 + + + 1 + 5 + 126 + + + 5 + 7 + 116 + + + 9 + 12 + 73 + + + 12 + 15 + 116 + + + 15 + 18 + 95 + + + 18 + 22 + 116 + + + 22 + 27 + 126 + + + 27 + 29 + 84 + + + 29 + 34 + 116 + + + 34 + 44 + 126 + + + 45 + 63 + 116 + + + 67 + 94 + 116 + + + 94 + 164 + 116 + + + 171 + 199 + 21 + + + + + + + arg + id + + + 12 + + + 1 + 2 + 13400 + + + 2 + 3 + 12682 + + + 3 + 103 + 2196 + + + 104 + 1198 + 982 + + + + + + + arg + num + + + 12 + + + 1 + 2 + 19377 + + + 2 + 3 + 8722 3 @@ -2497,7 +2888,7 @@ compilation_time - 62952 + 62953 id @@ -2513,7 +2904,7 @@ seconds - 13396 + 14485 @@ -2594,12 +2985,12 @@ 3 4 - 816 + 544 4 5 - 544 + 816 6 @@ -2608,33 +2999,33 @@ 8 - 9 - 163 + 10 + 217 10 11 - 217 + 108 11 - 15 + 12 217 - 15 - 19 + 13 + 18 217 - 19 - 26 + 18 + 22 217 - 42 - 92 - 163 + 25 + 98 + 217 @@ -2707,46 +3098,46 @@ 3 4 - 1361 + 1089 4 5 - 980 + 1306 5 6 - 272 + 163 6 7 - 544 + 599 7 8 - 163 + 217 8 9 - 272 + 217 9 - 14 + 13 381 17 - 44 + 46 381 - 49 - 87 + 50 + 90 108 @@ -2792,24 +3183,19 @@ 12 - - 3 - 4 - 54 - 4 5 + 108 + + + 154 + 155 54 - 144 - 145 - 54 - - - 149 - 150 + 171 + 172 54 @@ -2826,7 +3212,7 @@ 1 2 - 6807 + 7732 2 @@ -2836,18 +3222,13 @@ 3 4 - 1633 + 2341 4 - 5 + 46 1034 - - 5 - 45 - 544 - @@ -2862,32 +3243,27 @@ 1 2 - 6208 + 7242 2 3 - 2668 + 3158 3 4 - 2069 + 1960 4 - 5 - 925 + 6 + 1306 - 5 - 8 - 1198 - - - 8 - 74 - 326 + 6 + 77 + 816 @@ -2903,17 +3279,12 @@ 1 2 - 10510 + 10837 2 3 - 2831 - - - 3 - 4 - 54 + 3648 @@ -2923,23 +3294,23 @@ diagnostic_for - 4152 + 506 diagnostic - 1484 + 359 compilation - 1355 + 190 file_number - 21 + 10 file_number_diagnostic_number - 107 + 52 @@ -2953,12 +3324,12 @@ 1 2 - 1441 + 211 - 63 - 64 - 43 + 2 + 3 + 147 @@ -2974,7 +3345,7 @@ 1 2 - 1484 + 359 @@ -2990,7 +3361,7 @@ 1 2 - 1484 + 359 @@ -3003,15 +3374,20 @@ 12 + + 2 + 3 + 105 + 3 4 - 1312 + 63 5 6 - 43 + 21 @@ -3027,7 +3403,7 @@ 1 2 - 1355 + 190 @@ -3040,15 +3416,20 @@ 12 + + 2 + 3 + 105 + 3 4 - 1312 + 63 5 6 - 43 + 21 @@ -3062,9 +3443,9 @@ 12 - 69 - 70 - 21 + 34 + 35 + 10 @@ -3078,9 +3459,9 @@ 12 - 63 - 64 - 21 + 18 + 19 + 10 @@ -3096,7 +3477,7 @@ 5 6 - 21 + 10 @@ -3112,18 +3493,23 @@ 1 2 - 43 - - - 2 - 3 - 43 - - - 63 - 64 21 + + 4 + 5 + 10 + + + 10 + 11 + 10 + + + 18 + 19 + 10 + @@ -3138,12 +3524,17 @@ 2 3 - 43 + 21 - 63 - 64 - 64 + 8 + 9 + 10 + + + 18 + 19 + 21 @@ -3159,7 +3550,7 @@ 1 2 - 107 + 52 @@ -3169,19 +3560,19 @@ compilation_finished - 12643 + 12640 id - 12643 + 12640 cpu_seconds - 9379 + 9630 elapsed_seconds - 232 + 221 @@ -3195,7 +3586,7 @@ 1 2 - 12643 + 12640 @@ -3211,7 +3602,7 @@ 1 2 - 12643 + 12640 @@ -3227,17 +3618,17 @@ 1 2 - 7763 + 8268 2 3 - 1172 + 1013 3 - 29 - 443 + 37 + 348 @@ -3253,12 +3644,12 @@ 1 2 - 8735 + 8923 2 3 - 644 + 707 @@ -3277,43 +3668,68 @@ 63 - 2 - 3 + 3 + 4 21 - 3 + 4 5 - 21 + 10 8 9 - 31 + 10 + + + 11 + 12 + 21 12 - 15 - 21 + 13 + 10 - 15 - 37 - 21 + 13 + 14 + 10 - 51 - 177 - 21 + 20 + 21 + 10 - 241 - 286 - 21 + 29 + 30 + 10 - 326 - 327 + 59 + 60 + 10 + + + 150 + 151 + 10 + + + 247 + 248 + 10 + + + 302 + 303 + 10 + + + 319 + 320 10 @@ -3333,45 +3749,70 @@ 63 - 2 - 3 + 3 + 4 21 - 3 + 4 5 - 21 + 10 8 9 - 31 + 10 + + + 11 + 12 + 21 12 - 15 - 21 + 13 + 10 - 15 - 37 - 21 + 13 + 14 + 10 - 48 - 162 - 21 + 20 + 21 + 10 - 165 - 221 - 21 + 29 + 30 + 10 + + + 59 + 60 + 10 + + + 148 + 149 + 10 + + + 159 + 160 + 10 237 238 10 + + 256 + 257 + 10 + @@ -3607,31 +4048,31 @@ locations_default - 46945087 + 46943795 id - 46945087 + 46943795 file - 40918 + 40917 beginLine - 7500620 + 7500413 beginColumn - 21956 + 21955 endLine - 7501742 + 7501536 endColumn - 53393 + 53391 @@ -3645,7 +4086,7 @@ 1 2 - 46945087 + 46943795 @@ -3661,7 +4102,7 @@ 1 2 - 46945087 + 46943795 @@ -3677,7 +4118,7 @@ 1 2 - 46945087 + 46943795 @@ -3693,7 +4134,7 @@ 1 2 - 46945087 + 46943795 @@ -3709,7 +4150,7 @@ 1 2 - 46945087 + 46943795 @@ -3942,7 +4383,7 @@ 112 156 - 1996 + 1995 @@ -4039,7 +4480,7 @@ 13 26 - 3493 + 3492 26 @@ -4069,7 +4510,7 @@ 67 76 - 3493 + 3492 76 @@ -4084,7 +4525,7 @@ 102 116 - 3493 + 3492 116 @@ -4094,7 +4535,7 @@ 136 363 - 1497 + 1496 @@ -4110,32 +4551,32 @@ 1 2 - 4957457 + 4957321 2 3 - 779066 + 779045 3 4 - 543911 + 543896 4 12 - 570359 + 570343 12 97 - 563372 + 563357 97 637 - 86452 + 86449 @@ -4151,27 +4592,27 @@ 1 2 - 5019458 + 5019320 2 3 - 1221306 + 1221273 3 6 - 639969 + 639952 6 57 - 563248 + 563232 57 329 - 56636 + 56635 @@ -4187,27 +4628,27 @@ 1 2 - 5641339 + 5641184 2 3 - 483158 + 483145 3 7 - 582085 + 582069 7 25 - 565244 + 565228 25 94 - 228792 + 228786 @@ -4223,12 +4664,12 @@ 1 2 - 7034552 + 7034358 2 85 - 466067 + 466054 @@ -4244,32 +4685,32 @@ 1 2 - 5026444 + 5026306 2 3 - 739395 + 739375 3 4 - 539795 + 539780 4 12 - 586950 + 586934 12 72 - 564121 + 564105 72 250 - 43912 + 43910 @@ -4290,7 +4731,7 @@ 2 6 - 1996 + 1995 6 @@ -4361,7 +4802,7 @@ 1 2 - 1996 + 1995 2 @@ -4421,7 +4862,7 @@ 243 329 - 499 + 498 @@ -4594,7 +5035,7 @@ 2 5 - 1497 + 1496 5 @@ -4609,7 +5050,7 @@ 13 23 - 1996 + 1995 23 @@ -4629,7 +5070,7 @@ 58 73 - 1497 + 1496 73 @@ -4665,32 +5106,32 @@ 1 2 - 4955336 + 4955200 2 3 - 781561 + 781539 3 4 - 544785 + 544770 4 12 - 567864 + 567848 12 95 - 563497 + 563482 95 620 - 88697 + 88695 @@ -4706,27 +5147,27 @@ 1 2 - 5016589 + 5016451 2 3 - 1223801 + 1223768 3 6 - 633357 + 633340 6 52 - 564121 + 564105 52 329 - 63872 + 63870 @@ -4742,12 +5183,12 @@ 1 2 - 7051643 + 7051449 2 15 - 450099 + 450087 @@ -4763,27 +5204,27 @@ 1 2 - 5640466 + 5640311 2 3 - 480538 + 480525 3 7 - 587075 + 587059 7 25 - 568862 + 568846 25 89 - 224800 + 224794 @@ -4799,32 +5240,32 @@ 1 2 - 5025072 + 5024934 2 3 - 743762 + 743741 3 4 - 539545 + 539530 4 12 - 587574 + 587558 12 72 - 562749 + 562733 72 250 - 43038 + 43037 @@ -4962,12 +5403,12 @@ 1 2 - 15968 + 15967 2 3 - 5988 + 5987 3 @@ -5048,7 +5489,7 @@ 14 28 - 4491 + 4490 28 @@ -5084,12 +5525,12 @@ 1 2 - 15968 + 15967 2 3 - 5988 + 5987 3 @@ -5139,15 +5580,15 @@ files - 65212 + 65198 id - 65212 + 65198 name - 65212 + 65198 @@ -5161,7 +5602,7 @@ 1 2 - 65212 + 65198 @@ -5177,7 +5618,7 @@ 1 2 - 65212 + 65198 @@ -5187,15 +5628,15 @@ folders - 12389 + 12387 id - 12389 + 12387 name - 12389 + 12387 @@ -5209,7 +5650,7 @@ 1 2 - 12389 + 12387 @@ -5225,7 +5666,7 @@ 1 2 - 12389 + 12387 @@ -5235,15 +5676,15 @@ containerparent - 77581 + 77564 parent - 12389 + 12387 child - 77581 + 77564 @@ -5257,7 +5698,7 @@ 1 2 - 6031 + 6029 2 @@ -5308,7 +5749,7 @@ 1 2 - 77581 + 77564 @@ -5318,23 +5759,23 @@ numlines - 807883 + 807861 element_id - 806761 + 806738 num_lines - 39421 + 39420 num_code - 34056 + 34055 num_comment - 18338 + 18337 @@ -5348,7 +5789,7 @@ 1 2 - 805638 + 805616 2 @@ -5369,7 +5810,7 @@ 1 2 - 805638 + 805616 2 @@ -5390,7 +5831,7 @@ 1 2 - 806511 + 806489 2 @@ -5411,7 +5852,7 @@ 1 2 - 26696 + 26695 2 @@ -5426,7 +5867,7 @@ 5 35 - 2994 + 2993 39 @@ -5447,7 +5888,7 @@ 1 2 - 27195 + 27194 2 @@ -5457,12 +5898,12 @@ 3 4 - 2495 + 2494 4 7 - 3493 + 3492 7 @@ -5483,7 +5924,7 @@ 1 2 - 26821 + 26820 2 @@ -5519,7 +5960,7 @@ 1 2 - 21831 + 21830 2 @@ -5560,7 +6001,7 @@ 1 2 - 22205 + 22204 2 @@ -5585,7 +6026,7 @@ 9 13 - 1497 + 1496 @@ -5601,7 +6042,7 @@ 1 2 - 21956 + 21955 2 @@ -5637,12 +6078,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5652,12 +6093,12 @@ 4 7 - 1497 + 1496 8 22 - 1497 + 1496 42 @@ -5678,12 +6119,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5698,7 +6139,7 @@ 8 27 - 1497 + 1496 30 @@ -5719,12 +6160,12 @@ 1 2 - 11352 + 11351 2 3 - 1996 + 1995 3 @@ -5734,12 +6175,12 @@ 4 8 - 1497 + 1496 8 31 - 1497 + 1496 35 @@ -5754,11 +6195,11 @@ diagnostics - 1484 + 359 id - 1484 + 359 severity @@ -5766,19 +6207,19 @@ error_tag - 43 + 73 error_message - 150 + 147 full_error_message - 150 + 179 location - 64 + 179 @@ -5792,7 +6233,7 @@ 1 2 - 1484 + 359 @@ -5808,7 +6249,7 @@ 1 2 - 1484 + 359 @@ -5824,7 +6265,7 @@ 1 2 - 1484 + 359 @@ -5840,7 +6281,7 @@ 1 2 - 1484 + 359 @@ -5856,7 +6297,7 @@ 1 2 - 1484 + 359 @@ -5870,9 +6311,14 @@ 12 - 69 - 70 - 21 + 3 + 4 + 10 + + + 31 + 32 + 10 @@ -5881,6 +6327,27 @@ severity error_tag + + + 12 + + + 1 + 2 + 10 + + + 6 + 7 + 10 + + + + + + + severity + error_message 12 @@ -5888,23 +6355,12 @@ 2 3 - 21 + 10 - - - - - - severity - error_message - - - 12 - - 7 - 8 - 21 + 12 + 13 + 10 @@ -5918,9 +6374,14 @@ 12 - 7 - 8 - 21 + 3 + 4 + 10 + + + 14 + 15 + 10 @@ -5936,7 +6397,12 @@ 3 4 - 21 + 10 + + + 14 + 15 + 10 @@ -5950,14 +6416,24 @@ 12 - 6 - 7 - 21 + 1 + 2 + 42 - 63 - 64 - 21 + 3 + 4 + 10 + + + 9 + 10 + 10 + + + 18 + 19 + 10 @@ -5973,7 +6449,7 @@ 1 2 - 43 + 73 @@ -5989,54 +6465,69 @@ 1 2 - 21 - - - 6 - 7 - 21 - - - - - - - error_tag - full_error_message - - - 12 - - - 1 - 2 - 21 - - - 6 - 7 - 21 - - - - - - - error_tag - location - - - 12 - - - 1 - 2 - 21 + 52 2 3 - 21 + 10 + + + 7 + 8 + 10 + + + + + + + error_tag + full_error_message + + + 12 + + + 1 + 2 + 52 + + + 3 + 4 + 10 + + + 9 + 10 + 10 + + + + + + + error_tag + location + + + 12 + + + 1 + 2 + 52 + + + 3 + 4 + 10 + + + 9 + 10 + 10 @@ -6052,12 +6543,17 @@ 1 2 - 129 + 105 - 63 - 64 - 21 + 2 + 3 + 31 + + + 18 + 19 + 10 @@ -6073,7 +6569,7 @@ 1 2 - 150 + 147 @@ -6089,7 +6585,7 @@ 1 2 - 150 + 147 @@ -6105,7 +6601,12 @@ 1 2 - 150 + 116 + + + 2 + 3 + 31 @@ -6121,7 +6622,12 @@ 1 2 - 150 + 116 + + + 2 + 3 + 31 @@ -6137,12 +6643,12 @@ 1 2 - 129 + 168 - 63 - 64 - 21 + 18 + 19 + 10 @@ -6158,7 +6664,7 @@ 1 2 - 150 + 179 @@ -6174,7 +6680,7 @@ 1 2 - 150 + 179 @@ -6190,7 +6696,7 @@ 1 2 - 150 + 179 @@ -6206,7 +6712,7 @@ 1 2 - 150 + 179 @@ -6220,14 +6726,14 @@ 12 - 3 - 4 - 43 + 1 + 2 + 168 - 63 - 64 - 21 + 18 + 19 + 10 @@ -6243,7 +6749,7 @@ 1 2 - 64 + 179 @@ -6259,7 +6765,7 @@ 1 2 - 64 + 179 @@ -6275,12 +6781,7 @@ 1 2 - 21 - - - 3 - 4 - 43 + 179 @@ -6296,12 +6797,7 @@ 1 2 - 21 - - - 3 - 4 - 43 + 179 @@ -6359,7 +6855,7 @@ pch_uses - 4134 + 4127 pch @@ -6367,11 +6863,11 @@ compilation - 4134 + 4127 id - 4134 + 4127 @@ -6567,7 +7063,7 @@ 1 2 - 4134 + 4127 @@ -6583,7 +7079,7 @@ 1 2 - 4134 + 4127 @@ -6599,7 +7095,7 @@ 1 2 - 4134 + 4127 @@ -6615,7 +7111,7 @@ 1 2 - 4134 + 4127 @@ -6741,11 +7237,11 @@ fileannotations - 4200551 + 4199643 id - 5767 + 5765 kind @@ -6753,11 +7249,11 @@ name - 58716 + 58704 value - 39514 + 39505 @@ -6776,7 +7272,7 @@ 2 3 - 5566 + 5565 @@ -6792,12 +7288,12 @@ 1 86 - 433 + 432 88 206 - 433 + 432 212 @@ -6807,17 +7303,17 @@ 291 359 - 433 + 432 362 401 - 433 + 432 402 479 - 433 + 432 480 @@ -6832,7 +7328,7 @@ 553 628 - 433 + 432 631 @@ -6863,17 +7359,17 @@ 1 98 - 433 + 432 102 244 - 433 + 432 244 351 - 433 + 432 352 @@ -6888,7 +7384,7 @@ 490 628 - 433 + 432 632 @@ -6903,22 +7399,22 @@ 710 939 - 433 + 432 939 1038 - 433 + 432 1066 1853 - 433 + 432 1853 3292 - 433 + 432 3423 @@ -7002,62 +7498,62 @@ 1 2 - 11027 + 11024 2 3 - 4362 + 4361 3 5 - 5059 + 5058 5 7 - 4098 + 4097 7 9 - 4594 + 4593 9 16 - 4330 + 4329 16 19 - 4890 + 4889 19 27 - 4256 + 4255 27 47 - 4837 + 4836 47 128 - 4922 + 4921 128 459 - 4626 + 4625 459 546 - 1711 + 1710 @@ -7073,7 +7569,7 @@ 1 2 - 58716 + 58704 @@ -7089,52 +7585,52 @@ 1 2 - 11587 + 11584 2 3 - 7689 + 7687 3 4 - 4098 + 4097 4 6 - 4066 + 4065 6 8 - 3422 + 3421 8 11 - 4742 + 4741 11 17 - 5397 + 5396 17 23 - 4700 + 4699 23 41 - 4679 + 4678 41 95 - 4467 + 4466 95 @@ -7160,7 +7656,7 @@ 2 4 - 1637 + 1636 4 @@ -7170,12 +7666,12 @@ 5 8 - 2461 + 2460 8 14 - 2968 + 2967 14 @@ -7190,27 +7686,27 @@ 24 51 - 3538 + 3537 51 58 - 3031 + 3030 58 80 - 2978 + 2977 81 151 - 3084 + 3083 151 334 - 2978 + 2977 334 @@ -7220,7 +7716,7 @@ 473 547 - 2313 + 2312 @@ -7236,7 +7732,7 @@ 1 2 - 39503 + 39495 2 @@ -7257,7 +7753,7 @@ 1 2 - 3401 + 3400 2 @@ -7267,17 +7763,17 @@ 4 5 - 3052 + 3051 5 8 - 2482 + 2481 8 14 - 3485 + 3484 14 @@ -7287,22 +7783,22 @@ 18 28 - 3200 + 3199 28 34 - 3147 + 3146 34 41 - 3200 + 3199 41 66 - 2989 + 2988 66 @@ -7312,12 +7808,12 @@ 92 113 - 2989 + 2988 113 145 - 3031 + 3030 145 @@ -7332,15 +7828,15 @@ inmacroexpansion - 149995903 + 149997201 id - 24670868 + 24671160 inv - 3705270 + 3705370 @@ -7354,37 +7850,37 @@ 1 3 - 2209399 + 2209511 3 5 - 1474977 + 1474989 5 6 - 1620368 + 1620381 6 7 - 6582542 + 6582595 7 8 - 8718997 + 8719067 8 9 - 3557047 + 3557076 9 22 - 507534 + 507538 @@ -7400,32 +7896,32 @@ 1 2 - 531661 + 531711 2 3 - 743208 + 743238 3 4 - 481512 + 481516 4 7 - 275303 + 275305 7 8 - 282152 + 282155 8 9 - 330246 + 330249 9 @@ -7435,22 +7931,22 @@ 10 11 - 444650 + 444653 11 337 - 307798 + 307800 339 423 - 281755 + 281757 423 7616 - 23934 + 23935 @@ -7460,15 +7956,15 @@ affectedbymacroexpansion - 48735823 + 48736214 id - 7044739 + 7044796 inv - 3803120 + 3803150 @@ -7482,37 +7978,37 @@ 1 2 - 3846709 + 3846740 2 3 - 766304 + 766310 3 4 - 361841 + 361844 4 5 - 772736 + 772742 5 12 - 535160 + 535164 12 50 - 556267 + 556271 50 9900 - 205719 + 205721 @@ -7528,62 +8024,62 @@ 1 4 - 313248 + 313251 4 7 - 316607 + 316610 7 9 - 301087 + 301090 9 12 - 342938 + 342941 12 13 - 456004 + 456008 13 14 - 226099 + 226101 14 15 - 408038 + 408041 15 16 - 166429 + 166430 16 17 - 377677 + 377680 17 18 - 200636 + 200638 18 20 - 344255 + 344258 20 25 - 285393 + 285395 25 @@ -7598,19 +8094,19 @@ macroinvocations - 40337724 + 40354035 id - 40337724 + 40354035 macro_id - 182049 + 182487 location - 5912934 + 5919825 kind @@ -7628,7 +8124,7 @@ 1 2 - 40337724 + 40354035 @@ -7644,7 +8140,7 @@ 1 2 - 40337724 + 40354035 @@ -7660,7 +8156,7 @@ 1 2 - 40337724 + 40354035 @@ -7676,17 +8172,17 @@ 1 2 - 60773 + 61156 2 3 - 27555 + 27610 3 4 - 17970 + 17971 4 @@ -7710,13 +8206,13 @@ 33 - 180 - 13668 + 182 + 13723 - 181 + 185 72152 - 9802 + 9747 @@ -7732,12 +8228,12 @@ 1 2 - 77274 + 77656 2 3 - 30550 + 30605 3 @@ -7757,17 +8253,17 @@ 8 18 - 14158 + 14213 18 - 88 - 13668 + 90 + 13723 - 89 + 90 12187 - 7678 + 7569 @@ -7783,12 +8279,12 @@ 1 2 - 177475 + 177858 2 3 - 4574 + 4628 @@ -7804,17 +8300,17 @@ 1 2 - 5256183 + 5256857 2 4 - 422313 + 428527 4 72152 - 234437 + 234440 @@ -7830,12 +8326,12 @@ 1 2 - 5890770 + 5897661 2 37 - 22163 + 22164 @@ -7851,7 +8347,7 @@ 1 2 - 5912934 + 5919825 @@ -7865,13 +8361,13 @@ 12 - 1490 - 1491 + 1499 + 1500 54 - 739237 - 739238 + 739517 + 739518 54 @@ -7886,8 +8382,8 @@ 12 - 282 - 283 + 291 + 292 54 @@ -7907,13 +8403,13 @@ 12 - 1069 - 1070 + 1078 + 1079 54 - 107511 - 107512 + 107627 + 107628 54 @@ -7924,15 +8420,15 @@ macroparent - 33655149 + 33658296 id - 33655149 + 33658296 parent_id - 15926203 + 15929098 @@ -7946,7 +8442,7 @@ 1 2 - 33655149 + 33658296 @@ -7962,27 +8458,27 @@ 1 2 - 7806456 + 7809235 2 3 - 1595479 + 1595502 3 4 - 4702955 + 4703022 4 5 - 1295312 + 1295331 5 205 - 525999 + 526007 @@ -7992,15 +8488,15 @@ macrolocationbind - 6040022 + 6032778 id - 4221190 + 4216419 location - 2279306 + 2276207 @@ -8014,27 +8510,27 @@ 1 2 - 3294948 + 3291436 2 3 - 491264 + 490596 3 4 - 7896 + 7885 4 5 - 413891 + 413328 5 17 - 13189 + 13171 @@ -8050,27 +8546,27 @@ 1 2 - 1337013 + 1335195 2 3 - 482141 + 481486 3 4 - 7810 + 7799 4 5 - 428221 + 427639 5 522 - 24119 + 24087 @@ -8080,19 +8576,19 @@ macro_argument_unexpanded - 82495572 + 82481176 invocation - 26282637 + 26280397 argument_index - 697 + 696 text - 343270 + 343195 @@ -8106,22 +8602,22 @@ 1 2 - 9679766 + 9681115 2 3 - 9770635 + 9768522 3 4 - 5002265 + 5001183 4 67 - 1829971 + 1829575 @@ -8137,22 +8633,22 @@ 1 2 - 9862401 + 9863712 2 3 - 9788179 + 9786062 3 4 - 4845602 + 4844554 4 67 - 1786453 + 1786067 @@ -8177,7 +8673,7 @@ 646840 - 2488302 + 2488628 31 @@ -8220,57 +8716,57 @@ 1 2 - 39704 + 39695 2 3 - 62329 + 62315 3 4 - 21029 + 21025 4 5 - 34581 + 34574 5 6 - 39250 + 39241 6 9 - 30874 + 30867 9 15 - 28983 + 28977 15 26 - 25888 + 25883 26 57 - 27145 + 27139 57 517 - 25994 + 25988 518 486610 - 7488 + 7487 @@ -8286,17 +8782,17 @@ 1 2 - 243180 + 243127 2 3 - 89876 + 89856 3 9 - 10213 + 10211 @@ -8306,19 +8802,19 @@ macro_argument_expanded - 82495572 + 82481176 invocation - 26282637 + 26280397 argument_index - 697 + 696 text - 207933 + 207888 @@ -8332,22 +8828,22 @@ 1 2 - 9679766 + 9681115 2 3 - 9770635 + 9768522 3 4 - 5002265 + 5001183 4 67 - 1829971 + 1829575 @@ -8363,22 +8859,22 @@ 1 2 - 12638444 + 12639154 2 3 - 8428470 + 8426648 3 4 - 4225331 + 4224417 4 9 - 990391 + 990177 @@ -8403,7 +8899,7 @@ 646840 - 2488302 + 2488628 31 @@ -8420,7 +8916,7 @@ 1 2 - 602 + 601 2 @@ -8446,22 +8942,22 @@ 1 2 - 21832 + 21827 2 3 - 26860 + 26854 3 4 - 43496 + 43486 4 5 - 15907 + 15903 5 @@ -8471,32 +8967,32 @@ 6 7 - 18399 + 18395 7 10 - 18970 + 18966 10 19 - 18325 + 18321 19 51 - 15780 + 15776 51 252 - 15600 + 15597 252 - 1169205 - 9495 + 1169531 + 9493 @@ -8512,17 +9008,17 @@ 1 2 - 105086 + 105063 2 3 - 88914 + 88895 3 66 - 13931 + 13928 @@ -8532,15 +9028,15 @@ functions - 4049399 + 4049287 id - 4049399 + 4049287 name - 1693362 + 1693315 kind @@ -8558,7 +9054,7 @@ 1 2 - 4049399 + 4049287 @@ -8574,7 +9070,7 @@ 1 2 - 4049399 + 4049287 @@ -8590,17 +9086,17 @@ 1 2 - 1447229 + 1447190 2 4 - 138971 + 138968 4 3162 - 107160 + 107157 @@ -8616,7 +9112,7 @@ 1 2 - 1690493 + 1690446 2 @@ -8723,26 +9219,26 @@ builtin_functions - 30926 + 30920 id - 30926 + 30920 function_entry_point - 1141561 + 1141750 id - 1137813 + 1138003 entry_point - 1141561 + 1141750 @@ -8756,7 +9252,7 @@ 1 2 - 1134611 + 1134801 2 @@ -8777,7 +9273,7 @@ 1 2 - 1141561 + 1141750 @@ -8787,15 +9283,15 @@ function_return_type - 4066864 + 4066752 id - 4049399 + 4049287 return_type - 619261 + 619244 @@ -8809,12 +9305,12 @@ 1 2 - 4031934 + 4031823 2 3 - 17465 + 17464 @@ -8830,22 +9326,22 @@ 1 2 - 309880 + 309871 2 3 - 213697 + 213691 3 5 - 48028 + 48027 5 365 - 46531 + 46530 432 @@ -9130,44 +9626,44 @@ purefunctions - 131703 + 131626 id - 131703 + 131626 function_deleted - 88088 + 87973 id - 88088 + 87973 function_defaulted - 51682 + 51614 id - 51682 + 51614 function_prototyped - 4047902 + 4047790 id - 4047902 + 4047790 @@ -9247,15 +9743,15 @@ member_function_this_type - 674151 + 674132 id - 674151 + 674132 this_type - 176022 + 176018 @@ -9269,7 +9765,7 @@ 1 2 - 674151 + 674132 @@ -9285,17 +9781,17 @@ 1 2 - 47155 + 47154 2 3 - 36926 + 36925 3 4 - 32684 + 32683 4 @@ -9305,17 +9801,17 @@ 5 6 - 12849 + 12848 6 10 - 14471 + 14470 10 65 - 11851 + 11850 @@ -9325,27 +9821,27 @@ fun_decls - 4208955 + 4208839 id - 4202967 + 4202851 function - 4024823 + 4024712 type_id - 611277 + 611260 name - 1691865 + 1691818 location - 2813247 + 2813169 @@ -9359,7 +9855,7 @@ 1 2 - 4202967 + 4202851 @@ -9375,12 +9871,12 @@ 1 2 - 4196979 + 4196863 2 3 - 5988 + 5987 @@ -9396,7 +9892,7 @@ 1 2 - 4202967 + 4202851 @@ -9412,7 +9908,7 @@ 1 2 - 4202967 + 4202851 @@ -9428,12 +9924,12 @@ 1 2 - 3861275 + 3861169 2 5 - 163547 + 163543 @@ -9449,12 +9945,12 @@ 1 2 - 4006360 + 4006250 2 3 - 18463 + 18462 @@ -9470,7 +9966,7 @@ 1 2 - 4024823 + 4024712 @@ -9486,12 +9982,12 @@ 1 2 - 3881734 + 3881627 2 4 - 143088 + 143084 @@ -9507,22 +10003,22 @@ 1 2 - 295159 + 295151 2 3 - 220558 + 220552 3 5 - 48403 + 48401 5 364 - 45908 + 45906 364 @@ -9543,22 +10039,22 @@ 1 2 - 305264 + 305255 2 3 - 211826 + 211820 3 5 - 48028 + 48027 5 1163 - 45908 + 45906 1483 @@ -9579,17 +10075,17 @@ 1 2 - 491516 + 491503 2 3 - 52894 + 52892 3 7 - 50149 + 50148 7 @@ -9610,22 +10106,22 @@ 1 2 - 454964 + 454952 2 3 - 69485 + 69484 3 6 - 56012 + 56011 6 4756 - 30813 + 30812 @@ -9641,22 +10137,22 @@ 1 2 - 1331336 + 1331300 2 3 - 194485 + 194480 3 11 - 129490 + 129487 11 3169 - 36551 + 36550 @@ -9672,17 +10168,17 @@ 1 2 - 1446730 + 1446691 2 4 - 139470 + 139467 4 3162 - 105663 + 105660 @@ -9698,12 +10194,12 @@ 1 2 - 1602045 + 1602001 2 1596 - 89820 + 89817 @@ -9719,17 +10215,17 @@ 1 2 - 1367264 + 1367227 2 3 - 208333 + 208327 3 1592 - 116267 + 116264 @@ -9745,17 +10241,17 @@ 1 2 - 2420283 + 2420216 2 3 - 251496 + 251489 3 211 - 141466 + 141463 @@ -9771,17 +10267,17 @@ 1 2 - 2438995 + 2438928 2 3 - 233283 + 233276 3 211 - 140967 + 140964 @@ -9797,12 +10293,12 @@ 1 2 - 2698851 + 2698776 2 211 - 114396 + 114393 @@ -9818,12 +10314,12 @@ 1 2 - 2774075 + 2773999 2 8 - 39171 + 39170 @@ -9833,22 +10329,22 @@ fun_def - 1422279 + 1422240 id - 1422279 + 1422240 fun_specialized - 7936 + 7922 id - 7936 + 7922 @@ -9866,11 +10362,11 @@ fun_decl_specifiers - 4279688 + 4279570 id - 1748252 + 1748204 name @@ -9888,22 +10384,22 @@ 1 2 - 362899 + 362889 2 3 - 262225 + 262218 3 4 - 1100174 + 1100143 4 5 - 22954 + 22953 @@ -10100,26 +10596,26 @@ fun_decl_empty_throws - 420911 + 421168 fun_decl - 420911 + 421168 fun_decl_noexcept - 141830 + 141820 fun_decl - 141830 + 141820 constant - 141353 + 141343 @@ -10133,7 +10629,7 @@ 1 2 - 141830 + 141820 @@ -10149,7 +10645,7 @@ 1 2 - 140910 + 140900 2 @@ -10164,26 +10660,26 @@ fun_decl_empty_noexcept - 1163672 + 1163640 fun_decl - 1163672 + 1163640 fun_decl_typedef_type - 2761 + 2759 fun_decl - 2761 + 2759 typedeftype_id - 124 + 123 @@ -10197,7 +10693,7 @@ 1 2 - 2761 + 2759 @@ -10213,57 +10709,57 @@ 1 2 - 40 + 39 2 3 - 12 + 11 3 4 - 12 + 11 5 13 - 8 + 7 16 17 - 12 + 11 17 18 - 4 + 3 21 22 - 8 + 7 25 43 - 8 + 7 46 55 - 8 + 7 89 128 - 8 + 7 158 159 - 4 + 3 @@ -10273,19 +10769,19 @@ fun_requires - 29111 + 29073 id - 10112 + 10099 kind - 43 + 42 constraint - 28875 + 28837 @@ -10299,7 +10795,7 @@ 1 2 - 10048 + 10035 2 @@ -10320,7 +10816,7 @@ 1 2 - 7272 + 7263 2 @@ -10330,7 +10826,7 @@ 3 6 - 860 + 859 6 @@ -10340,7 +10836,7 @@ 13 14 - 1140 + 1138 19 @@ -10403,7 +10899,7 @@ 1 2 - 28638 + 28600 2 @@ -10424,7 +10920,7 @@ 1 2 - 28875 + 28837 @@ -10434,19 +10930,19 @@ param_decl_bind - 7310375 + 7310174 id - 7310375 + 7310174 index - 7984 + 7983 fun_decl - 3531684 + 3531587 @@ -10460,7 +10956,7 @@ 1 2 - 7310375 + 7310174 @@ -10476,7 +10972,7 @@ 1 2 - 7310375 + 7310174 @@ -10492,12 +10988,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 16 @@ -10533,12 +11029,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 16 @@ -10574,27 +11070,27 @@ 1 2 - 1508981 + 1508939 2 3 - 976296 + 976270 3 4 - 602045 + 602029 4 5 - 290668 + 290660 5 65 - 153692 + 153688 @@ -10610,27 +11106,27 @@ 1 2 - 1508981 + 1508939 2 3 - 976296 + 976270 3 4 - 602045 + 602029 4 5 - 290668 + 290660 5 65 - 153692 + 153688 @@ -10640,27 +11136,27 @@ var_decls - 9389965 + 9389956 id - 9383104 + 9383095 variable - 9034676 + 9034677 type_id - 1456461 + 1456421 name - 852544 + 852521 location - 6274572 + 6274400 @@ -10674,7 +11170,7 @@ 1 2 - 9383104 + 9383095 @@ -10690,7 +11186,7 @@ 1 2 - 9376243 + 9376234 2 @@ -10711,7 +11207,7 @@ 1 2 - 9383104 + 9383095 @@ -10727,7 +11223,7 @@ 1 2 - 9383104 + 9383095 @@ -10743,12 +11239,12 @@ 1 2 - 8703713 + 8703723 2 5 - 330962 + 330953 @@ -10764,12 +11260,12 @@ 1 2 - 8981158 + 8981160 2 3 - 53517 + 53516 @@ -10785,12 +11281,12 @@ 1 2 - 8929262 + 8929265 2 4 - 105414 + 105411 @@ -10806,12 +11302,12 @@ 1 2 - 8783054 + 8783062 2 4 - 251621 + 251614 @@ -10827,27 +11323,27 @@ 1 2 - 849924 + 849901 2 3 - 284056 + 284048 3 5 - 127370 + 127366 5 11 - 113148 + 113145 11 2944 - 81961 + 81958 @@ -10863,27 +11359,27 @@ 1 2 - 870758 + 870734 2 3 - 269086 + 269079 3 5 - 122754 + 122751 5 11 - 113023 + 113020 11 2860 - 80838 + 80836 @@ -10899,17 +11395,17 @@ 1 2 - 1119510 + 1119479 2 3 - 192614 + 192609 3 7 - 115269 + 115266 7 @@ -10930,22 +11426,22 @@ 1 2 - 985403 + 985376 2 3 - 219061 + 219055 3 6 - 133607 + 133604 6 95 - 109281 + 109278 97 @@ -10966,32 +11462,32 @@ 1 2 - 465942 + 465930 2 3 - 165793 + 165788 3 4 - 59630 + 59629 4 7 - 65868 + 65866 7 25 - 64121 + 64119 25 27139 - 31187 + 31186 @@ -11007,27 +11503,27 @@ 1 2 - 478916 + 478903 2 3 - 165044 + 165040 3 4 - 54640 + 54639 4 8 - 71606 + 71604 8 45 - 64246 + 64244 45 @@ -11048,17 +11544,17 @@ 1 2 - 654690 + 654672 2 3 - 110778 + 110775 3 11 - 65493 + 65492 11 @@ -11079,27 +11575,27 @@ 1 2 - 493762 + 493748 2 3 - 183258 + 183253 3 4 - 51646 + 51645 4 8 - 64994 + 64993 8 22619 - 58882 + 58880 @@ -11115,17 +11611,17 @@ 1 2 - 5774822 + 5774663 2 21 - 472305 + 472292 21 2943 - 27445 + 27444 @@ -11141,12 +11637,12 @@ 1 2 - 5855660 + 5855499 2 2935 - 418911 + 418900 @@ -11162,12 +11658,12 @@ 1 2 - 5976045 + 5975880 2 2555 - 298527 + 298519 @@ -11183,12 +11679,12 @@ 1 2 - 6262222 + 6262050 2 5 - 12350 + 12349 @@ -11198,37 +11694,37 @@ var_def - 3766964 + 3766860 id - 3766964 + 3766860 var_specialized - 645 + 644 id - 645 + 644 var_decl_specifiers - 489894 + 489881 id - 489894 + 489881 name - 499 + 498 @@ -11242,7 +11738,7 @@ 1 2 - 489894 + 489881 @@ -11283,18 +11779,18 @@ is_structured_binding - 946 + 945 id - 946 + 945 var_requires - 387 + 386 id @@ -11302,7 +11798,7 @@ constraint - 387 + 386 @@ -11342,7 +11838,7 @@ 1 2 - 387 + 386 @@ -11352,19 +11848,19 @@ type_decls - 1633482 + 1633437 id - 1633482 + 1633437 type_id - 1614520 + 1614475 location - 1547404 + 1547361 @@ -11378,7 +11874,7 @@ 1 2 - 1633482 + 1633437 @@ -11394,7 +11890,7 @@ 1 2 - 1633482 + 1633437 @@ -11410,12 +11906,12 @@ 1 2 - 1598177 + 1598133 2 10 - 16342 + 16341 @@ -11431,7 +11927,7 @@ 1 2 - 1598302 + 1598258 2 @@ -11452,7 +11948,7 @@ 1 2 - 1525323 + 1525281 2 @@ -11473,12 +11969,12 @@ 1 2 - 1525448 + 1525406 2 64 - 21956 + 21955 @@ -11488,37 +11984,37 @@ type_def - 1095558 + 1095528 id - 1095558 + 1095528 type_decl_top - 673959 + 675275 type_decl - 673959 + 675275 type_requires - 7681 + 7671 id - 2044 + 2041 constraint - 7659 + 7649 @@ -11532,7 +12028,7 @@ 1 2 - 1011 + 1009 2 @@ -11542,12 +12038,12 @@ 5 6 - 602 + 601 6 13 - 172 + 171 13 @@ -11568,7 +12064,7 @@ 1 2 - 7638 + 7628 2 @@ -11583,23 +12079,23 @@ namespace_decls - 407775 + 407917 id - 407775 + 407917 namespace_id - 1844 + 1840 location - 407775 + 407917 bodylocation - 407775 + 407917 @@ -11613,7 +12109,7 @@ 1 2 - 407775 + 407917 @@ -11629,7 +12125,7 @@ 1 2 - 407775 + 407917 @@ -11645,7 +12141,7 @@ 1 2 - 407775 + 407917 @@ -11666,7 +12162,7 @@ 2 3 - 203 + 202 3 @@ -11681,36 +12177,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11732,7 +12228,7 @@ 2 3 - 203 + 202 3 @@ -11747,36 +12243,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11798,7 +12294,7 @@ 2 3 - 203 + 202 3 @@ -11813,36 +12309,36 @@ 15 34 - 146 + 145 35 62 - 154 + 145 63 - 87 - 146 + 81 + 145 - 90 + 86 144 - 154 + 162 - 146 + 151 264 - 146 + 145 270 1870 - 146 + 145 2205 - 12461 + 12488 32 @@ -11859,7 +12355,7 @@ 1 2 - 407775 + 407917 @@ -11875,7 +12371,7 @@ 1 2 - 407775 + 407917 @@ -11891,7 +12387,7 @@ 1 2 - 407775 + 407917 @@ -11907,7 +12403,7 @@ 1 2 - 407775 + 407917 @@ -11923,7 +12419,7 @@ 1 2 - 407775 + 407917 @@ -11939,7 +12435,7 @@ 1 2 - 407775 + 407917 @@ -11949,19 +12445,19 @@ usings - 271973 + 272030 id - 271973 + 272030 element_id - 58938 + 59042 location - 26849 + 26844 kind @@ -11979,7 +12475,7 @@ 1 2 - 271973 + 272030 @@ -11995,7 +12491,7 @@ 1 2 - 271973 + 272030 @@ -12011,7 +12507,7 @@ 1 2 - 271973 + 272030 @@ -12027,12 +12523,12 @@ 1 2 - 51206 + 51312 2 5 - 5386 + 5385 5 @@ -12053,12 +12549,12 @@ 1 2 - 51206 + 51312 2 5 - 5386 + 5385 5 @@ -12079,7 +12575,7 @@ 1 2 - 58938 + 59042 @@ -12095,17 +12591,17 @@ 1 2 - 21177 + 21173 2 4 - 2292 + 2302 4 132 - 1954 + 1943 145 @@ -12126,17 +12622,17 @@ 1 2 - 21177 + 21173 2 4 - 2292 + 2302 4 132 - 1954 + 1943 145 @@ -12157,7 +12653,7 @@ 1 2 - 26849 + 26844 @@ -12176,8 +12672,8 @@ 10 - 25356 - 25357 + 25367 + 25368 10 @@ -12197,8 +12693,8 @@ 10 - 5366 - 5367 + 5377 + 5378 10 @@ -12230,15 +12726,15 @@ using_container - 580049 + 580040 parent - 21874 + 21891 child - 271973 + 272030 @@ -12252,12 +12748,12 @@ 1 2 - 10372 + 10370 2 3 - 1616 + 1615 3 @@ -12267,7 +12763,7 @@ 6 7 - 2270 + 2291 7 @@ -12282,7 +12778,7 @@ 145 146 - 2619 + 2618 146 @@ -12303,27 +12799,27 @@ 1 2 - 96488 + 96583 2 3 - 120285 + 120259 3 4 - 20100 + 20096 4 5 - 26712 + 26706 5 65 - 8386 + 8384 @@ -12333,27 +12829,27 @@ static_asserts - 173262 + 172982 id - 173262 + 172982 condition - 173262 + 172982 message - 38764 + 38704 location - 22647 + 22616 enclosing - 6807 + 6819 @@ -12367,7 +12863,7 @@ 1 2 - 173262 + 172982 @@ -12383,7 +12879,7 @@ 1 2 - 173262 + 172982 @@ -12399,7 +12895,7 @@ 1 2 - 173262 + 172982 @@ -12415,7 +12911,7 @@ 1 2 - 173262 + 172982 @@ -12431,7 +12927,7 @@ 1 2 - 173262 + 172982 @@ -12447,7 +12943,7 @@ 1 2 - 173262 + 172982 @@ -12463,7 +12959,7 @@ 1 2 - 173262 + 172982 @@ -12479,7 +12975,7 @@ 1 2 - 173262 + 172982 @@ -12495,32 +12991,32 @@ 1 2 - 28504 + 28454 2 3 - 641 + 640 3 4 - 3623 + 3624 4 12 - 2087 + 2084 12 17 - 3135 + 3130 17 513 - 771 + 770 @@ -12536,32 +13032,32 @@ 1 2 - 28504 + 28454 2 3 - 641 + 640 3 4 - 3623 + 3624 4 12 - 2087 + 2084 12 17 - 3135 + 3130 17 513 - 771 + 770 @@ -12577,12 +13073,12 @@ 1 2 - 35921 + 35866 2 33 - 2843 + 2838 @@ -12598,27 +13094,27 @@ 1 2 - 30316 + 30262 2 3 - 349 + 348 3 4 - 3387 + 3389 4 12 - 1908 + 1905 12 43 - 2802 + 2797 @@ -12634,17 +13130,17 @@ 1 2 - 4281 + 4273 2 3 - 3728 + 3722 3 4 - 1738 + 1743 4 @@ -12654,17 +13150,17 @@ 5 6 - 4735 + 4727 6 13 - 430 + 429 14 15 - 2648 + 2643 16 @@ -12674,12 +13170,12 @@ 17 18 - 4394 + 4386 19 52 - 503 + 502 @@ -12695,17 +13191,17 @@ 1 2 - 4281 + 4273 2 3 - 3728 + 3722 3 4 - 1738 + 1743 4 @@ -12715,17 +13211,17 @@ 5 6 - 4735 + 4727 6 13 - 430 + 429 14 15 - 2648 + 2643 16 @@ -12735,12 +13231,12 @@ 17 18 - 4394 + 4386 19 52 - 503 + 502 @@ -12756,17 +13252,17 @@ 1 2 - 6953 + 6949 2 3 - 7676 + 7663 3 4 - 7782 + 7768 4 @@ -12787,32 +13283,32 @@ 1 2 - 5068 + 5060 2 3 - 8098 + 8084 3 4 - 1478 + 1483 4 5 - 4760 + 4751 5 13 - 495 + 494 13 14 - 2648 + 2643 16 @@ -12833,17 +13329,17 @@ 1 2 - 5702 + 5716 2 3 - 528 + 527 3 228 - 528 + 527 229 @@ -12864,17 +13360,17 @@ 1 2 - 5702 + 5716 2 3 - 528 + 527 3 228 - 528 + 527 229 @@ -12895,17 +13391,17 @@ 1 2 - 5856 + 5870 2 3 - 519 + 518 3 2936 - 430 + 429 @@ -12921,17 +13417,17 @@ 1 2 - 5840 + 5854 2 3 - 536 + 535 3 1929 - 430 + 429 @@ -12941,23 +13437,23 @@ params - 7060750 + 7060555 id - 7019832 + 7019638 function - 3404938 + 3404844 index - 7984 + 7983 type_id - 1220308 + 1220275 @@ -12971,7 +13467,7 @@ 1 2 - 7019832 + 7019638 @@ -12987,7 +13483,7 @@ 1 2 - 7019832 + 7019638 @@ -13003,12 +13499,12 @@ 1 2 - 6978913 + 6978721 2 3 - 40918 + 40917 @@ -13024,27 +13520,27 @@ 1 2 - 1473177 + 1473137 2 3 - 926272 + 926246 3 4 - 578717 + 578701 4 5 - 280813 + 280805 5 65 - 145958 + 145953 @@ -13060,27 +13556,27 @@ 1 2 - 1473177 + 1473137 2 3 - 926272 + 926246 3 4 - 578717 + 578701 4 5 - 280813 + 280805 5 65 - 145958 + 145953 @@ -13096,22 +13592,22 @@ 1 2 - 1781685 + 1781636 2 3 - 1030688 + 1030659 3 4 - 437499 + 437487 4 11 - 155064 + 155060 @@ -13127,12 +13623,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 14 @@ -13168,12 +13664,12 @@ 2 3 - 3992 + 3991 6 7 - 1996 + 1995 14 @@ -13209,12 +13705,12 @@ 1 2 - 3992 + 3991 2 3 - 1996 + 1995 4 @@ -13250,27 +13746,27 @@ 1 2 - 737524 + 737504 2 3 - 240394 + 240387 3 5 - 93188 + 93186 5 13 - 93812 + 93809 13 2574 - 55389 + 55387 @@ -13286,27 +13782,27 @@ 1 2 - 819610 + 819587 2 3 - 179640 + 179635 3 6 - 106162 + 106159 6 27 - 92190 + 92188 27 2562 - 22704 + 22703 @@ -13322,17 +13818,17 @@ 1 2 - 995134 + 995106 2 3 - 166791 + 166786 3 65 - 58383 + 58381 @@ -13342,15 +13838,15 @@ overrides - 159778 + 159497 new - 151069 + 150804 old - 17993 + 17961 @@ -13364,12 +13860,12 @@ 1 2 - 142369 + 142119 2 4 - 8700 + 8684 @@ -13385,32 +13881,32 @@ 1 2 - 9845 + 9828 2 3 - 2437 + 2432 3 4 - 1632 + 1629 4 6 - 1486 + 1483 6 18 - 1356 + 1354 18 230 - 1234 + 1232 @@ -13420,19 +13916,19 @@ membervariables - 1500125 + 1501943 id - 1497674 + 1499493 type_id - 456185 + 457553 name - 642156 + 642219 @@ -13446,7 +13942,7 @@ 1 2 - 1495333 + 1497151 2 @@ -13467,7 +13963,7 @@ 1 2 - 1497674 + 1499493 @@ -13483,12 +13979,12 @@ 1 2 - 338449 + 339380 2 3 - 72155 + 72592 3 @@ -13498,7 +13994,7 @@ 10 4445 - 10128 + 10129 @@ -13514,22 +14010,22 @@ 1 2 - 356039 + 356970 2 3 - 64313 + 64750 3 - 49 - 34253 + 57 + 34362 - 49 + 60 2186 - 1579 + 1470 @@ -13545,12 +14041,12 @@ 1 2 - 421496 + 421557 2 3 - 122419 + 122420 3 @@ -13559,7 +14055,7 @@ 5 - 656 + 664 40189 @@ -13576,17 +14072,17 @@ 1 2 - 524420 + 524482 2 3 - 73190 + 73191 3 - 660 - 44545 + 668 + 44546 @@ -13596,11 +14092,11 @@ globalvariables - 488148 + 488384 id - 488148 + 488384 type_id @@ -13608,7 +14104,7 @@ name - 112524 + 112521 @@ -13622,7 +14118,7 @@ 1 2 - 488148 + 488384 @@ -13638,7 +14134,7 @@ 1 2 - 488148 + 488384 @@ -13654,7 +14150,7 @@ 1 2 - 6986 + 6985 2 @@ -13679,7 +14175,7 @@ 152 2216 - 499 + 498 @@ -13720,7 +14216,7 @@ 125 228 - 499 + 498 @@ -13736,7 +14232,7 @@ 1 2 - 95309 + 95306 2 @@ -13762,12 +14258,12 @@ 1 2 - 96931 + 96928 2 3 - 15344 + 15343 3 @@ -13782,19 +14278,19 @@ localvariables - 726300 + 725806 id - 726300 + 725806 type_id - 53440 + 53403 name - 101634 + 101564 @@ -13808,7 +14304,7 @@ 1 2 - 726300 + 725806 @@ -13824,7 +14320,7 @@ 1 2 - 726300 + 725806 @@ -13840,37 +14336,37 @@ 1 2 - 28865 + 28845 2 3 - 7843 + 7838 3 4 - 4029 + 4027 4 6 - 4065 + 4063 6 12 - 4133 + 4131 12 162 - 4009 + 4007 162 19347 - 492 + 491 @@ -13886,22 +14382,22 @@ 1 2 - 38369 + 38343 2 3 - 6707 + 6702 3 5 - 4478 + 4474 5 3509 - 3885 + 3883 @@ -13917,32 +14413,32 @@ 1 2 - 62540 + 62497 2 3 - 16039 + 16028 3 4 - 6530 + 6526 4 8 - 8147 + 8142 8 134 - 7623 + 7618 134 7549 - 752 + 751 @@ -13958,22 +14454,22 @@ 1 2 - 84586 + 84528 2 3 - 8411 + 8406 3 15 - 7683 + 7678 15 1509 - 952 + 951 @@ -13983,11 +14479,11 @@ autoderivation - 229166 + 229160 var - 229166 + 229160 derivation_type @@ -14005,7 +14501,7 @@ 1 2 - 229166 + 229160 @@ -14051,15 +14547,15 @@ orphaned_variables - 44324 + 44320 var - 44324 + 44320 function - 41053 + 41050 @@ -14073,7 +14569,7 @@ 1 2 - 44324 + 44320 @@ -14089,7 +14585,7 @@ 1 2 - 40201 + 40198 2 @@ -14104,19 +14600,19 @@ enumconstants - 347816 + 347930 id - 347816 + 347930 parent - 41550 + 41551 index - 13940 + 13941 type_id @@ -14124,11 +14620,11 @@ name - 347435 + 347549 location - 320424 + 320538 @@ -14142,7 +14638,7 @@ 1 2 - 347816 + 347930 @@ -14158,7 +14654,7 @@ 1 2 - 347816 + 347930 @@ -14174,7 +14670,7 @@ 1 2 - 347816 + 347930 @@ -14190,7 +14686,7 @@ 1 2 - 347816 + 347930 @@ -14206,7 +14702,7 @@ 1 2 - 347816 + 347930 @@ -14354,7 +14850,7 @@ 1 2 - 41550 + 41551 @@ -14471,12 +14967,12 @@ 8 11 - 3811 + 3812 11 17 - 3212 + 3213 17 @@ -14614,7 +15110,7 @@ 1 2 - 13940 + 13941 @@ -14740,8 +15236,8 @@ 12 - 6387 - 6388 + 6389 + 6390 54 @@ -14788,8 +15284,8 @@ 12 - 6380 - 6381 + 6382 + 6383 54 @@ -14804,8 +15300,8 @@ 12 - 5884 - 5885 + 5886 + 5887 54 @@ -14822,7 +15318,7 @@ 1 2 - 347054 + 347167 2 @@ -14843,7 +15339,7 @@ 1 2 - 347054 + 347167 2 @@ -14864,7 +15360,7 @@ 1 2 - 347435 + 347549 @@ -14880,7 +15376,7 @@ 1 2 - 347435 + 347549 @@ -14896,7 +15392,7 @@ 1 2 - 347054 + 347167 2 @@ -14917,7 +15413,7 @@ 1 2 - 319389 + 319503 2 @@ -14938,7 +15434,7 @@ 1 2 - 320424 + 320538 @@ -14954,7 +15450,7 @@ 1 2 - 319389 + 319503 2 @@ -14975,7 +15471,7 @@ 1 2 - 320424 + 320538 @@ -14991,7 +15487,7 @@ 1 2 - 319389 + 319503 2 @@ -15428,7 +15924,7 @@ 1 2 - 499 + 498 2 @@ -15683,15 +16179,15 @@ derivedtypes - 3030936 + 3030853 id - 3030936 + 3030853 name - 1460578 + 1460537 kind @@ -15699,7 +16195,7 @@ type_id - 1946730 + 1946677 @@ -15713,7 +16209,7 @@ 1 2 - 3030936 + 3030853 @@ -15729,7 +16225,7 @@ 1 2 - 3030936 + 3030853 @@ -15745,7 +16241,7 @@ 1 2 - 3030936 + 3030853 @@ -15761,12 +16257,12 @@ 1 2 - 1344061 + 1344024 2 28 - 109905 + 109902 29 @@ -15787,7 +16283,7 @@ 1 2 - 1460578 + 1460537 @@ -15803,12 +16299,12 @@ 1 2 - 1344185 + 1344148 2 28 - 109780 + 109777 29 @@ -15952,22 +16448,22 @@ 1 2 - 1317489 + 1317453 2 3 - 375873 + 375862 3 4 - 123253 + 123250 4 137 - 130114 + 130111 @@ -15983,22 +16479,22 @@ 1 2 - 1318986 + 1318950 2 3 - 375873 + 375862 3 4 - 121756 + 121753 4 137 - 130114 + 130111 @@ -16014,22 +16510,22 @@ 1 2 - 1319360 + 1319324 2 3 - 376496 + 376486 3 4 - 123502 + 123499 4 6 - 127370 + 127366 @@ -16039,11 +16535,11 @@ pointerishsize - 2247379 + 2247317 id - 2247379 + 2247317 size @@ -16065,7 +16561,7 @@ 1 2 - 2247379 + 2247317 @@ -16081,7 +16577,7 @@ 1 2 - 2247379 + 2247317 @@ -16165,15 +16661,15 @@ arraysizes - 80588 + 80586 id - 80588 + 80586 num_elements - 17839 + 17838 bytesize @@ -16195,7 +16691,7 @@ 1 2 - 80588 + 80586 @@ -16211,7 +16707,7 @@ 1 2 - 80588 + 80586 @@ -16227,7 +16723,7 @@ 1 2 - 80588 + 80586 @@ -16248,7 +16744,7 @@ 2 3 - 10853 + 10852 3 @@ -16258,12 +16754,12 @@ 4 5 - 3493 + 3492 5 9 - 1497 + 1496 9 @@ -16294,12 +16790,12 @@ 2 3 - 3992 + 3991 3 5 - 998 + 997 5 @@ -16325,7 +16821,7 @@ 2 3 - 3992 + 3991 3 @@ -16361,7 +16857,7 @@ 3 4 - 499 + 498 4 @@ -16371,7 +16867,7 @@ 5 7 - 1497 + 1496 7 @@ -16381,7 +16877,7 @@ 24 45 - 499 + 498 @@ -16428,7 +16924,7 @@ 1 2 - 14845 + 14844 2 @@ -16604,15 +17100,15 @@ typedefbase - 1762360 + 1762011 id - 1762360 + 1762011 type_id - 838037 + 837877 @@ -16626,7 +17122,7 @@ 1 2 - 1762360 + 1762011 @@ -16642,22 +17138,22 @@ 1 2 - 662552 + 662420 2 3 - 80940 + 80933 3 6 - 64177 + 64163 6 4526 - 30367 + 30360 @@ -16667,15 +17163,15 @@ decltypes - 814475 + 814485 id - 27563 + 27564 expr - 814475 + 814485 kind @@ -16757,7 +17253,7 @@ 1 2 - 27563 + 27564 @@ -16773,7 +17269,7 @@ 1 2 - 27563 + 27564 @@ -16789,7 +17285,7 @@ 1 2 - 27563 + 27564 @@ -16805,7 +17301,7 @@ 1 2 - 814475 + 814485 @@ -16821,7 +17317,7 @@ 1 2 - 814475 + 814485 @@ -16837,7 +17333,7 @@ 1 2 - 814475 + 814485 @@ -16853,7 +17349,7 @@ 1 2 - 814475 + 814485 @@ -17115,23 +17611,23 @@ type_operators - 7961 + 7950 id - 7961 + 7950 arg_type - 7186 + 7177 kind - 86 + 85 base_type - 5250 + 5243 @@ -17145,7 +17641,7 @@ 1 2 - 7961 + 7950 @@ -17161,7 +17657,7 @@ 1 2 - 7961 + 7950 @@ -17177,7 +17673,7 @@ 1 2 - 7961 + 7950 @@ -17193,12 +17689,12 @@ 1 2 - 6411 + 6403 2 3 - 774 + 773 @@ -17214,12 +17710,12 @@ 1 2 - 6411 + 6403 2 3 - 774 + 773 @@ -17235,7 +17731,7 @@ 1 2 - 7164 + 7155 2 @@ -17349,17 +17845,17 @@ 1 2 - 3636 + 3631 2 3 - 903 + 902 3 4 - 344 + 343 4 @@ -17380,12 +17876,12 @@ 1 2 - 3786 + 3781 2 3 - 989 + 988 3 @@ -17411,12 +17907,12 @@ 1 2 - 4088 + 4082 2 3 - 1140 + 1138 3 @@ -17431,15 +17927,15 @@ usertypes - 4151710 + 4150876 id - 4151710 + 4150876 name - 918534 + 918367 kind @@ -17457,7 +17953,7 @@ 1 2 - 4151710 + 4150876 @@ -17473,7 +17969,7 @@ 1 2 - 4151710 + 4150876 @@ -17489,22 +17985,22 @@ 1 2 - 654261 + 654151 2 3 - 158669 + 158635 3 8 - 70567 + 70552 8 - 32669 - 35035 + 32672 + 35028 @@ -17520,12 +18016,12 @@ 1 2 - 866789 + 866633 2 10 - 51745 + 51734 @@ -17589,13 +18085,13 @@ 10 - 92771 - 92772 + 92774 + 92775 10 - 166851 - 166852 + 166854 + 166855 10 @@ -17665,8 +18161,8 @@ 10 - 57608 - 57609 + 57611 + 57612 10 @@ -17677,11 +18173,11 @@ usertypesize - 1363817 + 1363554 id - 1363817 + 1363554 size @@ -17703,7 +18199,7 @@ 1 2 - 1363817 + 1363554 @@ -17719,7 +18215,7 @@ 1 2 - 1363817 + 1363554 @@ -17779,7 +18275,7 @@ 1839 - 99774 + 99777 52 @@ -17796,7 +18292,7 @@ 1 2 - 1204 + 1203 2 @@ -17855,8 +18351,8 @@ 10 - 114969 - 114970 + 114972 + 114973 10 @@ -17913,26 +18409,26 @@ usertype_final - 11477 + 11476 id - 11477 + 11476 usertype_uuid - 47716 + 47827 id - 47716 + 47827 uuid - 47237 + 47283 @@ -17946,7 +18442,7 @@ 1 2 - 47716 + 47827 @@ -17962,12 +18458,12 @@ 1 2 - 46758 + 46740 2 3 - 479 + 543 @@ -17977,11 +18473,11 @@ usertype_alias_kind - 1762360 + 1762011 id - 1762360 + 1762011 alias_kind @@ -17999,7 +18495,7 @@ 1 2 - 1762360 + 1762011 @@ -18018,8 +18514,8 @@ 10 - 129944 - 129945 + 129947 + 129948 10 @@ -18030,26 +18526,26 @@ nontype_template_parameters - 766287 + 766231 id - 766287 + 766231 type_template_type_constraint - 27153 + 27118 id - 13383 + 13365 constraint - 26013 + 25979 @@ -18063,22 +18559,22 @@ 1 2 - 10220 + 10206 2 3 - 903 + 902 3 5 - 1032 + 1031 5 14 - 1118 + 1117 14 @@ -18099,12 +18595,12 @@ 1 2 - 24873 + 24840 2 3 - 1140 + 1138 @@ -18114,15 +18610,15 @@ mangled_name - 7852416 + 7853946 id - 7852416 + 7853946 mangled_name - 6364268 + 6364342 is_complete @@ -18140,7 +18636,7 @@ 1 2 - 7852416 + 7853946 @@ -18156,7 +18652,7 @@ 1 2 - 7852416 + 7853946 @@ -18172,12 +18668,12 @@ 1 2 - 6036174 + 6036258 2 1120 - 328093 + 328084 @@ -18193,7 +18689,7 @@ 1 2 - 6364268 + 6364342 @@ -18212,8 +18708,8 @@ 124 - 62939 - 62940 + 62953 + 62954 124 @@ -18233,8 +18729,8 @@ 124 - 51010 - 51011 + 51012 + 51013 124 @@ -18245,59 +18741,59 @@ is_pod_class - 593760 + 593785 id - 593760 + 593785 is_standard_layout_class - 1124418 + 1124207 id - 1124418 + 1124207 is_complete - 1346294 + 1346034 id - 1346294 + 1346034 is_class_template - 232173 + 232123 id - 232173 + 232123 class_instantiation - 1126076 + 1125875 to - 1123034 + 1122823 from - 71803 + 71788 @@ -18311,12 +18807,12 @@ 1 2 - 1120901 + 1120680 2 8 - 2133 + 2143 @@ -18332,47 +18828,47 @@ 1 2 - 20501 + 20497 2 3 - 12886 + 12883 3 4 - 7108 + 7107 4 5 - 4658 + 4657 5 7 - 6073 + 6061 7 10 - 5714 + 5723 10 17 - 5904 + 5913 17 51 - 5397 + 5385 51 4223 - 3559 + 3558 @@ -18382,11 +18878,11 @@ class_template_argument - 2898672 + 2898088 type_id - 1367112 + 1366848 index @@ -18394,7 +18890,7 @@ arg_type - 822099 + 821942 @@ -18408,27 +18904,27 @@ 1 2 - 579362 + 579258 2 3 - 410289 + 410210 3 4 - 251049 + 250994 4 7 - 103100 + 103078 7 113 - 23311 + 23306 @@ -18444,22 +18940,22 @@ 1 2 - 607902 + 607792 2 3 - 424294 + 424213 3 4 - 251883 + 251829 4 113 - 83031 + 83013 @@ -18504,7 +19000,7 @@ 11968 - 129429 + 129432 42 @@ -18550,7 +19046,7 @@ 10413 - 44533 + 44535 31 @@ -18567,27 +19063,27 @@ 1 2 - 513716 + 513626 2 3 - 167647 + 167611 3 5 - 75088 + 75072 5 47 - 61737 + 61724 47 - 12618 - 3908 + 12619 + 3907 @@ -18603,17 +19099,17 @@ 1 2 - 723815 + 723679 2 3 - 79915 + 79898 3 22 - 18368 + 18364 @@ -18623,11 +19119,11 @@ class_template_argument_value - 510086 + 510048 type_id - 205812 + 205797 index @@ -18635,7 +19131,7 @@ arg_value - 509949 + 509912 @@ -18649,12 +19145,12 @@ 1 2 - 155799 + 155787 2 3 - 43370 + 43367 3 @@ -18675,17 +19171,17 @@ 1 2 - 147929 + 147918 2 3 - 40474 + 40471 3 45 - 15535 + 15534 45 @@ -18818,7 +19314,7 @@ 1 2 - 509813 + 509776 2 @@ -18839,7 +19335,7 @@ 1 2 - 509949 + 509912 @@ -18849,15 +19345,15 @@ is_proxy_class_for - 48439 + 48429 id - 48439 + 48429 templ_param_id - 45767 + 45757 @@ -18871,7 +19367,7 @@ 1 2 - 48439 + 48429 @@ -18887,7 +19383,7 @@ 1 2 - 45048 + 45039 2 @@ -18902,19 +19398,19 @@ type_mentions - 5903894 + 5907627 id - 5903894 + 5907627 type_id - 276913 + 277788 location - 5847585 + 5851317 kind @@ -18932,7 +19428,7 @@ 1 2 - 5903894 + 5907627 @@ -18948,7 +19444,7 @@ 1 2 - 5903894 + 5907627 @@ -18964,7 +19460,7 @@ 1 2 - 5903894 + 5907627 @@ -18980,22 +19476,22 @@ 1 2 - 136795 + 137233 2 3 - 31203 + 31204 3 4 - 11272 + 11653 4 5 - 14921 + 14975 5 @@ -19010,12 +19506,12 @@ 12 28 - 21074 + 21075 28 8941 - 19876 + 19877 @@ -19031,22 +19527,22 @@ 1 2 - 136795 + 137233 2 3 - 31203 + 31204 3 4 - 11272 + 11653 4 5 - 14921 + 14975 5 @@ -19061,12 +19557,12 @@ 12 28 - 21074 + 21075 28 8941 - 19876 + 19877 @@ -19082,7 +19578,7 @@ 1 2 - 276913 + 277788 @@ -19098,12 +19594,12 @@ 1 2 - 5801896 + 5805627 2 4 - 45689 + 45690 @@ -19119,12 +19615,12 @@ 1 2 - 5801896 + 5805627 2 4 - 45689 + 45690 @@ -19140,7 +19636,7 @@ 1 2 - 5847585 + 5851317 @@ -19154,8 +19650,8 @@ 12 - 108414 - 108415 + 108481 + 108482 54 @@ -19170,8 +19666,8 @@ 12 - 5085 - 5086 + 5101 + 5102 54 @@ -19186,8 +19682,8 @@ 12 - 107380 - 107381 + 107447 + 107448 54 @@ -19198,26 +19694,26 @@ is_function_template - 1331336 + 1331300 id - 1331336 + 1331300 function_instantiation - 973633 + 973767 to - 973633 + 973767 from - 182645 + 182700 @@ -19231,7 +19727,7 @@ 1 2 - 973633 + 973767 @@ -19247,22 +19743,22 @@ 1 2 - 110589 + 110581 2 3 - 42791 + 42787 3 9 - 14377 + 14444 9 104 - 13729 + 13728 119 @@ -19277,11 +19773,11 @@ function_template_argument - 2484813 + 2484632 function_id - 1453296 + 1453189 index @@ -19289,7 +19785,7 @@ arg_type - 298004 + 297982 @@ -19303,22 +19799,22 @@ 1 2 - 783015 + 782958 2 3 - 413158 + 413128 3 4 - 171811 + 171799 4 15 - 85309 + 85303 @@ -19334,22 +19830,22 @@ 1 2 - 802162 + 802104 2 3 - 411251 + 411221 3 4 - 169631 + 169618 4 9 - 70250 + 70245 @@ -19487,37 +19983,37 @@ 1 2 - 174775 + 174762 2 3 - 26335 + 26333 3 4 - 19998 + 19997 4 6 - 22656 + 22654 6 11 - 23235 + 23233 11 76 - 23371 + 23369 79 2452 - 7631 + 7630 @@ -19533,17 +20029,17 @@ 1 2 - 256814 + 256795 2 3 - 32127 + 32125 3 15 - 9062 + 9061 @@ -19553,11 +20049,11 @@ function_template_argument_value - 452781 + 452748 function_id - 196784 + 196770 index @@ -19565,7 +20061,7 @@ arg_value - 450090 + 450057 @@ -19579,17 +20075,17 @@ 1 2 - 151404 + 151393 2 3 - 42893 + 42890 3 8 - 2487 + 2486 @@ -19605,17 +20101,17 @@ 1 2 - 144488 + 144477 2 3 - 36692 + 36690 3 54 - 14854 + 14853 54 @@ -19758,7 +20254,7 @@ 1 2 - 447398 + 447365 2 @@ -19779,7 +20275,7 @@ 1 2 - 450090 + 450057 @@ -19789,26 +20285,26 @@ is_variable_template - 58632 + 58631 id - 58632 + 58631 variable_instantiation - 422779 + 423017 to - 422779 + 423017 from - 35304 + 35303 @@ -19822,7 +20318,7 @@ 1 2 - 422779 + 423017 @@ -19853,7 +20349,7 @@ 4 6 - 2994 + 2993 6 @@ -19883,19 +20379,19 @@ variable_template_argument - 768462 + 768940 variable_id - 400947 + 401186 index - 1996 + 1995 arg_type - 256112 + 256355 @@ -19909,17 +20405,17 @@ 1 2 - 156561 + 156557 2 3 - 189745 + 189989 3 4 - 36427 + 36426 4 @@ -19940,22 +20436,22 @@ 1 2 - 171407 + 171402 2 3 - 180014 + 180259 3 4 - 33682 + 33681 4 17 - 15843 + 15842 @@ -19999,13 +20495,13 @@ 124 - 1959 - 1960 + 1961 + 1962 124 - 3214 - 3215 + 3216 + 3217 124 @@ -20050,8 +20546,8 @@ 124 - 745 - 746 + 747 + 748 124 @@ -20073,12 +20569,12 @@ 1 2 - 175399 + 175519 2 3 - 44660 + 44784 3 @@ -20088,7 +20584,7 @@ 6 206 - 14471 + 14470 @@ -20104,12 +20600,12 @@ 1 2 - 227794 + 228037 2 3 - 24700 + 24699 3 @@ -20124,19 +20620,19 @@ variable_template_argument_value - 19960 + 19959 variable_id - 14845 + 14844 index - 499 + 498 arg_value - 19960 + 19959 @@ -20150,12 +20646,12 @@ 1 2 - 13348 + 13347 2 3 - 1497 + 1496 @@ -20171,12 +20667,12 @@ 1 2 - 10479 + 10478 2 3 - 3992 + 3991 4 @@ -20259,7 +20755,7 @@ 1 2 - 19960 + 19959 @@ -20275,7 +20771,7 @@ 1 2 - 19960 + 19959 @@ -20289,7 +20785,7 @@ to - 4990 + 4989 from @@ -20353,11 +20849,11 @@ template_template_argument - 9675 + 9673 type_id - 6115 + 6114 index @@ -20365,7 +20861,7 @@ arg_type - 9083 + 9081 @@ -20379,7 +20875,7 @@ 1 2 - 5017 + 5016 2 @@ -20410,7 +20906,7 @@ 1 2 - 5038 + 5037 2 @@ -20563,7 +21059,7 @@ 1 2 - 9052 + 9050 3 @@ -20584,7 +21080,7 @@ 1 2 - 9062 + 9060 2 @@ -20735,19 +21231,19 @@ concept_templates - 3614 + 3610 concept_id - 3614 + 3610 name - 3614 + 3610 location - 3614 + 3610 @@ -20761,7 +21257,7 @@ 1 2 - 3614 + 3610 @@ -20777,7 +21273,7 @@ 1 2 - 3614 + 3610 @@ -20793,7 +21289,7 @@ 1 2 - 3614 + 3610 @@ -20809,7 +21305,7 @@ 1 2 - 3614 + 3610 @@ -20825,7 +21321,7 @@ 1 2 - 3614 + 3610 @@ -20841,7 +21337,7 @@ 1 2 - 3614 + 3610 @@ -20851,15 +21347,15 @@ concept_instantiation - 90433 + 90315 to - 90433 + 90315 from - 3442 + 3438 @@ -20873,7 +21369,7 @@ 1 2 - 90433 + 90315 @@ -20904,12 +21400,12 @@ 4 5 - 129 + 128 5 6 - 301 + 300 6 @@ -20929,37 +21425,37 @@ 12 15 - 215 + 214 15 19 - 215 + 214 19 25 - 258 + 257 25 37 - 258 + 257 38 49 - 258 + 257 50 72 - 258 + 257 78 387 - 215 + 214 @@ -20969,30 +21465,30 @@ is_type_constraint - 36900 + 36852 concept_id - 36900 + 36852 concept_template_argument - 113047 + 112899 concept_id - 76383 + 76283 index - 129 + 128 arg_type - 21430 + 21402 @@ -21006,17 +21502,17 @@ 1 2 - 46475 + 46414 2 3 - 24679 + 24647 3 7 - 5228 + 5221 @@ -21032,17 +21528,17 @@ 1 2 - 50090 + 50024 2 3 - 22377 + 22347 3 7 - 3916 + 3910 @@ -21140,42 +21636,42 @@ 1 2 - 10392 + 10378 2 3 - 2969 + 2965 3 4 - 1054 + 1052 4 5 - 1355 + 1353 5 6 - 1161 + 1160 6 9 - 1613 + 1611 9 14 - 1979 + 1976 14 259 - 903 + 902 @@ -21191,17 +21687,17 @@ 1 2 - 18030 + 18007 2 3 - 3270 + 3266 3 4 - 129 + 128 @@ -21342,15 +21838,15 @@ routinetypes - 604322 + 604482 id - 604322 + 604482 return_type - 283865 + 283845 @@ -21364,7 +21860,7 @@ 1 2 - 604322 + 604482 @@ -21380,17 +21876,17 @@ 1 2 - 234226 + 234073 2 3 - 35091 + 35225 3 - 4676 - 14547 + 4677 + 14546 @@ -21400,11 +21896,11 @@ routinetypeargs - 1176651 + 1178519 routine - 415070 + 416002 index @@ -21412,7 +21908,7 @@ type_id - 111582 + 112073 @@ -21426,22 +21922,22 @@ 1 2 - 82502 + 82939 2 3 - 126013 + 126069 3 4 - 107443 + 107880 4 5 - 49283 + 49284 5 @@ -21451,7 +21947,7 @@ 7 19 - 16663 + 16664 @@ -21467,27 +21963,27 @@ 1 2 - 88492 + 88929 2 3 - 138647 + 138703 3 4 - 114196 + 114633 4 5 - 40733 + 40734 5 10 - 32891 + 32892 10 @@ -21571,18 +22067,18 @@ 54 - 3793 - 3794 + 3801 + 3802 54 - 6107 - 6108 + 6116 + 6117 54 - 7622 - 7623 + 7639 + 7640 54 @@ -21662,13 +22158,13 @@ 54 - 787 - 788 + 788 + 789 54 - 1174 - 1175 + 1182 + 1183 54 @@ -21685,17 +22181,17 @@ 1 2 - 33218 + 33273 2 3 - 15193 + 15574 3 4 - 13233 + 13287 4 @@ -21715,7 +22211,7 @@ 8 13 - 9529 + 9530 13 @@ -21724,7 +22220,7 @@ 26 - 918 + 926 6099 @@ -21741,7 +22237,7 @@ 1 2 - 78908 + 79399 2 @@ -21766,19 +22262,19 @@ ptrtomembers - 9728 + 9725 id - 9728 + 9725 type_id - 7974 + 7972 class_id - 4869 + 4868 @@ -21792,7 +22288,7 @@ 1 2 - 9728 + 9725 @@ -21808,7 +22304,7 @@ 1 2 - 9728 + 9725 @@ -21824,7 +22320,7 @@ 1 2 - 7752 + 7751 2 @@ -21845,7 +22341,7 @@ 1 2 - 7752 + 7751 2 @@ -21866,7 +22362,7 @@ 1 2 - 3897 + 3896 2 @@ -21897,7 +22393,7 @@ 1 2 - 3897 + 3896 2 @@ -21970,15 +22466,15 @@ typespecifiers - 854272 + 854142 type_id - 849128 + 846657 spec_id - 95 + 1621 @@ -21992,12 +22488,12 @@ 1 2 - 843984 + 839173 2 3 - 5143 + 7484 @@ -22011,49 +22507,69 @@ 12 - 168 - 169 - 10 + 1 + 2 + 124 - 215 - 216 - 10 + 2 + 3 + 124 - 225 - 226 - 10 + 16 + 17 + 124 - 533 - 534 - 10 + 17 + 18 + 124 - 821 - 822 - 10 + 24 + 25 + 124 - 1568 - 1569 - 10 + 44 + 45 + 124 - 4195 - 4196 - 10 + 49 + 50 + 124 - 18295 - 18296 - 10 + 51 + 52 + 124 - 54858 - 54859 - 10 + 112 + 113 + 124 + + + 199 + 200 + 124 + + + 325 + 326 + 124 + + + 545 + 546 + 124 + + + 5462 + 5463 + 124 @@ -22063,11 +22579,11 @@ funspecifiers - 9714441 + 9714174 func_id - 4008855 + 4008745 spec_id @@ -22085,27 +22601,27 @@ 1 2 - 1527070 + 1527028 2 3 - 506237 + 506223 3 4 - 1036925 + 1036897 4 5 - 692863 + 692844 5 8 - 245758 + 245751 @@ -22221,11 +22737,11 @@ varspecifiers - 3075347 + 3075512 var_id - 2314869 + 2315054 spec_id @@ -22243,17 +22759,17 @@ 1 2 - 1658058 + 1658261 2 3 - 553642 + 553627 3 5 - 103168 + 103165 @@ -22282,8 +22798,8 @@ 124 - 1332 - 1333 + 1334 + 1335 124 @@ -22319,15 +22835,15 @@ explicit_specifier_exprs - 41292 + 41291 func_id - 41292 + 41291 constant - 41292 + 41291 @@ -22341,7 +22857,7 @@ 1 2 - 41292 + 41291 @@ -22357,7 +22873,7 @@ 1 2 - 41292 + 41291 @@ -22367,11 +22883,11 @@ attributes - 653817 + 653799 id - 653817 + 653799 kind @@ -22387,7 +22903,7 @@ location - 647704 + 647686 @@ -22401,7 +22917,7 @@ 1 2 - 653817 + 653799 @@ -22417,7 +22933,7 @@ 1 2 - 653817 + 653799 @@ -22433,7 +22949,7 @@ 1 2 - 653817 + 653799 @@ -22449,7 +22965,7 @@ 1 2 - 653817 + 653799 @@ -22852,7 +23368,7 @@ 1 2 - 641841 + 641823 2 @@ -22873,7 +23389,7 @@ 1 2 - 647704 + 647686 @@ -22889,7 +23405,7 @@ 1 2 - 642589 + 642571 2 @@ -22910,7 +23426,7 @@ 1 2 - 647704 + 647686 @@ -22920,11 +23436,11 @@ attribute_args - 82562 + 82563 id - 82562 + 82563 kind @@ -22932,7 +23448,7 @@ attribute - 71259 + 71260 index @@ -22940,7 +23456,7 @@ location - 57184 + 57185 @@ -22954,7 +23470,7 @@ 1 2 - 82562 + 82563 @@ -22970,7 +23486,7 @@ 1 2 - 82562 + 82563 @@ -22986,7 +23502,7 @@ 1 2 - 82562 + 82563 @@ -23002,7 +23518,7 @@ 1 2 - 82562 + 82563 @@ -23122,7 +23638,7 @@ 1 2 - 65790 + 65791 2 @@ -23148,7 +23664,7 @@ 1 2 - 69743 + 69744 2 @@ -23169,7 +23685,7 @@ 1 2 - 68215 + 68216 2 @@ -23190,7 +23706,7 @@ 1 2 - 68747 + 68748 2 @@ -23375,7 +23891,7 @@ 1 2 - 41506 + 41507 2 @@ -23448,7 +23964,7 @@ 1 2 - 56935 + 56936 2 @@ -23463,11 +23979,11 @@ attribute_arg_value - 16693 + 16692 arg - 16693 + 16692 value @@ -23485,7 +24001,7 @@ 1 2 - 16693 + 16692 @@ -23556,15 +24072,15 @@ attribute_arg_type - 460 + 459 arg - 460 + 459 type_id - 84 + 83 @@ -23578,7 +24094,7 @@ 1 2 - 460 + 459 @@ -23594,22 +24110,22 @@ 1 2 - 72 + 71 2 3 - 4 + 3 35 36 - 4 + 3 60 61 - 4 + 3 @@ -23619,15 +24135,15 @@ attribute_arg_constant - 71856 + 71883 arg - 71856 + 71883 constant - 71856 + 71883 @@ -23641,7 +24157,7 @@ 1 2 - 71856 + 71883 @@ -23657,7 +24173,7 @@ 1 2 - 71856 + 71883 @@ -23768,15 +24284,15 @@ typeattributes - 96307 + 96304 type_id - 94560 + 94558 spec_id - 32435 + 32434 @@ -23790,7 +24306,7 @@ 1 2 - 92814 + 92811 2 @@ -23811,17 +24327,17 @@ 1 2 - 27944 + 27943 2 9 - 2495 + 2494 11 58 - 1996 + 1995 @@ -23831,15 +24347,15 @@ funcattributes - 843562 + 843539 func_id - 799026 + 799004 spec_id - 616766 + 616749 @@ -23853,12 +24369,12 @@ 1 2 - 758981 + 758960 2 7 - 40044 + 40043 @@ -23874,12 +24390,12 @@ 1 2 - 571731 + 571715 2 213 - 45034 + 45033 @@ -23952,7 +24468,7 @@ namespaceattributes - 5996 + 5995 namespace_id @@ -23960,7 +24476,7 @@ spec_id - 5996 + 5995 @@ -24000,7 +24516,7 @@ 1 2 - 5996 + 5995 @@ -24010,15 +24526,15 @@ stmtattributes - 2216 + 2213 stmt_id - 2216 + 2213 spec_id - 559 + 558 @@ -24032,7 +24548,7 @@ 1 2 - 2216 + 2213 @@ -24048,7 +24564,7 @@ 1 2 - 215 + 214 2 @@ -24058,7 +24574,7 @@ 3 4 - 43 + 42 9 @@ -24068,7 +24584,7 @@ 13 16 - 43 + 42 @@ -24078,15 +24594,15 @@ unspecifiedtype - 7172900 + 7174200 type_id - 7172900 + 7174200 unspecified_type_id - 3962323 + 3962838 @@ -24100,7 +24616,7 @@ 1 2 - 7172900 + 7174200 @@ -24116,22 +24632,22 @@ 1 2 - 2480537 + 2481093 2 3 - 1116765 + 1116610 3 7 - 302644 + 302636 7 537 - 62375 + 62498 @@ -24141,19 +24657,19 @@ member - 4189618 + 4189503 parent - 543288 + 543273 index - 29690 + 29689 child - 4185003 + 4184887 @@ -24167,52 +24683,52 @@ 1 2 - 128991 + 128988 2 3 - 83333 + 83331 3 4 - 32435 + 32434 4 5 - 44910 + 44908 5 6 - 42415 + 42413 6 7 - 33932 + 33931 7 9 - 42290 + 42289 9 13 - 41167 + 41166 13 18 - 41292 + 41291 18 42 - 40793 + 40792 42 @@ -24233,57 +24749,57 @@ 1 2 - 128742 + 128738 2 3 - 83458 + 83455 3 4 - 32185 + 32184 4 5 - 45034 + 45033 5 6 - 42539 + 42538 6 7 - 32809 + 32808 7 9 - 42664 + 42663 9 13 - 41541 + 41540 13 18 - 41417 + 41416 18 42 - 40918 + 40917 42 265 - 11976 + 11975 @@ -24299,7 +24815,7 @@ 1 2 - 6487 + 6486 2 @@ -24329,7 +24845,7 @@ 26 36 - 2495 + 2494 36 @@ -24365,7 +24881,7 @@ 1 2 - 5489 + 5488 2 @@ -24431,7 +24947,7 @@ 1 2 - 4185003 + 4184887 @@ -24447,7 +24963,7 @@ 1 2 - 4180387 + 4180272 2 @@ -24462,15 +24978,15 @@ enclosingfunction - 114813 + 114805 child - 114813 + 114805 parent - 71341 + 71335 @@ -24484,7 +25000,7 @@ 1 2 - 114813 + 114805 @@ -24500,7 +25016,7 @@ 1 2 - 49332 + 49328 2 @@ -24510,12 +25026,12 @@ 3 4 - 15365 + 15364 4 37 - 2010 + 2009 @@ -24525,15 +25041,15 @@ derivations - 476902 + 476867 derivation - 476902 + 476867 sub - 455166 + 455133 index @@ -24541,11 +25057,11 @@ super - 235555 + 235538 location - 35398 + 35395 @@ -24559,7 +25075,7 @@ 1 2 - 476902 + 476867 @@ -24575,7 +25091,7 @@ 1 2 - 476902 + 476867 @@ -24591,7 +25107,7 @@ 1 2 - 476902 + 476867 @@ -24607,7 +25123,7 @@ 1 2 - 476902 + 476867 @@ -24623,12 +25139,12 @@ 1 2 - 438642 + 438610 2 9 - 16523 + 16522 @@ -24644,12 +25160,12 @@ 1 2 - 438642 + 438610 2 8 - 16523 + 16522 @@ -24665,12 +25181,12 @@ 1 2 - 438642 + 438610 2 9 - 16523 + 16522 @@ -24686,12 +25202,12 @@ 1 2 - 438642 + 438610 2 8 - 16523 + 16522 @@ -24846,7 +25362,7 @@ 1 2 - 225743 + 225726 2 @@ -24867,7 +25383,7 @@ 1 2 - 225743 + 225726 2 @@ -24888,7 +25404,7 @@ 1 2 - 235112 + 235095 2 @@ -24909,7 +25425,7 @@ 1 2 - 230206 + 230189 2 @@ -24930,7 +25446,7 @@ 1 2 - 26505 + 26504 2 @@ -24966,7 +25482,7 @@ 1 2 - 26505 + 26504 2 @@ -25002,7 +25518,7 @@ 1 2 - 35398 + 35395 @@ -25018,7 +25534,7 @@ 1 2 - 28720 + 28718 2 @@ -25043,11 +25559,11 @@ derspecifiers - 478674 + 478639 der_id - 476459 + 476424 spec_id @@ -25065,7 +25581,7 @@ 1 2 - 474245 + 474210 2 @@ -25111,11 +25627,11 @@ direct_base_offsets - 449987 + 449955 der_id - 449987 + 449955 offset @@ -25133,7 +25649,7 @@ 1 2 - 449987 + 449955 @@ -25330,23 +25846,23 @@ frienddecls - 700465 + 699835 id - 700465 + 699835 type_id - 42416 + 42413 decl_id - 77848 + 77876 location - 6098 + 6097 @@ -25360,7 +25876,7 @@ 1 2 - 700465 + 699835 @@ -25376,7 +25892,7 @@ 1 2 - 700465 + 699835 @@ -25392,7 +25908,7 @@ 1 2 - 700465 + 699835 @@ -25408,12 +25924,12 @@ 1 2 - 6166 + 6200 2 3 - 13968 + 14001 3 @@ -25423,12 +25939,12 @@ 7 12 - 3441 + 3440 12 20 - 3645 + 3577 20 @@ -25464,12 +25980,12 @@ 1 2 - 6166 + 6200 2 3 - 13968 + 14001 3 @@ -25479,12 +25995,12 @@ 7 12 - 3441 + 3440 12 20 - 3645 + 3577 20 @@ -25520,7 +26036,7 @@ 1 2 - 41053 + 41050 2 @@ -25541,32 +26057,32 @@ 1 2 - 48071 + 48170 2 3 - 5962 + 5893 3 8 - 5996 + 5995 8 15 - 6064 + 5995 15 40 - 6064 + 6097 40 164 - 5689 + 5723 @@ -25582,32 +26098,32 @@ 1 2 - 48071 + 48170 2 3 - 5962 + 5893 3 8 - 5996 + 5995 8 15 - 6064 + 5995 15 40 - 6064 + 6097 40 164 - 5689 + 5723 @@ -25623,7 +26139,7 @@ 1 2 - 77167 + 77195 2 @@ -25648,7 +26164,7 @@ 2 - 20371 + 20354 374 @@ -25665,7 +26181,7 @@ 1 2 - 5962 + 5961 2 @@ -25690,7 +26206,7 @@ 2 - 2132 + 2133 340 @@ -25701,19 +26217,19 @@ comments - 11233402 + 11233093 id - 11233402 + 11233093 contents - 4303640 + 4303522 location - 11233402 + 11233093 @@ -25727,7 +26243,7 @@ 1 2 - 11233402 + 11233093 @@ -25743,7 +26259,7 @@ 1 2 - 11233402 + 11233093 @@ -25759,17 +26275,17 @@ 1 2 - 3928890 + 3928782 2 6 - 322978 + 322969 6 34447 - 51771 + 51770 @@ -25785,17 +26301,17 @@ 1 2 - 3928890 + 3928782 2 6 - 322978 + 322969 6 34447 - 51771 + 51770 @@ -25811,7 +26327,7 @@ 1 2 - 11233402 + 11233093 @@ -25827,7 +26343,7 @@ 1 2 - 11233402 + 11233093 @@ -25837,15 +26353,15 @@ commentbinding - 3914793 + 3914685 id - 3350796 + 3350704 element - 3749249 + 3749146 @@ -25859,12 +26375,12 @@ 1 2 - 3289170 + 3289079 2 1706 - 61626 + 61625 @@ -25880,12 +26396,12 @@ 1 2 - 3583705 + 3583607 2 3 - 165543 + 165539 @@ -25895,15 +26411,15 @@ exprconv - 9633084 + 9633161 converted - 9632979 + 9633056 conversion - 9633084 + 9633161 @@ -25917,7 +26433,7 @@ 1 2 - 9632873 + 9632950 2 @@ -25938,7 +26454,7 @@ 1 2 - 9633084 + 9633161 @@ -25948,30 +26464,30 @@ compgenerated - 9892394 + 9893081 id - 9892394 + 9893081 synthetic_destructor_call - 1671701 + 1669514 element - 1244965 + 1243336 i - 387 + 386 destructor_call - 1671701 + 1669514 @@ -25985,17 +26501,17 @@ 1 2 - 828685 + 827601 2 3 - 409480 + 408944 3 19 - 6799 + 6790 @@ -26011,17 +26527,17 @@ 1 2 - 828685 + 827601 2 3 - 409480 + 408944 3 19 - 6799 + 6790 @@ -26037,17 +26553,17 @@ 1 2 - 43 + 42 2 3 - 86 + 85 3 4 - 86 + 85 13 @@ -26103,17 +26619,17 @@ 1 2 - 43 + 42 2 3 - 86 + 85 3 4 - 86 + 85 13 @@ -26169,7 +26685,7 @@ 1 2 - 1671701 + 1669514 @@ -26185,7 +26701,7 @@ 1 2 - 1671701 + 1669514 @@ -26195,15 +26711,15 @@ namespaces - 8650 + 8648 id - 8650 + 8648 name - 4573 + 4572 @@ -26217,7 +26733,7 @@ 1 2 - 8650 + 8648 @@ -26233,7 +26749,7 @@ 1 2 - 3739 + 3738 2 @@ -26253,26 +26769,26 @@ namespace_inline - 499 + 498 id - 499 + 498 namespacembrs - 2037673 + 2038490 parentid - 3992 + 3991 memberid - 2037673 + 2038490 @@ -26286,7 +26802,7 @@ 1 2 - 499 + 498 2 @@ -26296,7 +26812,7 @@ 3 4 - 499 + 498 4 @@ -26344,8 +26860,8 @@ 249 - 15606 - 15607 + 15613 + 15614 124 @@ -26362,7 +26878,7 @@ 1 2 - 2037673 + 2038490 @@ -26372,11 +26888,11 @@ exprparents - 19454210 + 19454445 expr_id - 19454210 + 19454445 child_index @@ -26384,7 +26900,7 @@ parent_id - 12939983 + 12940139 @@ -26398,7 +26914,7 @@ 1 2 - 19454210 + 19454445 @@ -26414,7 +26930,7 @@ 1 2 - 19454210 + 19454445 @@ -26532,17 +27048,17 @@ 1 2 - 7394754 + 7394844 2 3 - 5082678 + 5082739 3 712 - 462550 + 462555 @@ -26558,17 +27074,17 @@ 1 2 - 7394754 + 7394844 2 3 - 5082678 + 5082739 3 712 - 462550 + 462555 @@ -26578,22 +27094,22 @@ expr_isload - 6909332 + 6899307 expr_id - 6909332 + 6899307 conversionkinds - 6050443 + 6050440 expr_id - 6050443 + 6050440 kind @@ -26611,7 +27127,7 @@ 1 2 - 6050443 + 6050440 @@ -26655,8 +27171,8 @@ 1 - 5831535 - 5831536 + 5831532 + 5831533 1 @@ -26667,11 +27183,11 @@ iscall - 5802824 + 5800862 caller - 5802824 + 5800862 kind @@ -26689,7 +27205,7 @@ 1 2 - 5802824 + 5800862 @@ -26713,8 +27229,8 @@ 21 - 268054 - 268055 + 268316 + 268317 21 @@ -26725,11 +27241,11 @@ numtemplatearguments - 627369 + 627726 expr_id - 627369 + 627726 num @@ -26747,7 +27263,7 @@ 1 2 - 627369 + 627726 @@ -26766,8 +27282,8 @@ 124 - 1263 - 1264 + 1266 + 1267 124 @@ -26831,23 +27347,23 @@ namequalifiers - 3041979 + 3037999 id - 3041979 + 3037999 qualifiableelement - 3041979 + 3037999 qualifyingelement - 47486 + 47424 location - 552457 + 551734 @@ -26861,7 +27377,7 @@ 1 2 - 3041979 + 3037999 @@ -26877,7 +27393,7 @@ 1 2 - 3041979 + 3037999 @@ -26893,7 +27409,7 @@ 1 2 - 3041979 + 3037999 @@ -26909,7 +27425,7 @@ 1 2 - 3041979 + 3037999 @@ -26925,7 +27441,7 @@ 1 2 - 3041979 + 3037999 @@ -26941,7 +27457,7 @@ 1 2 - 3041979 + 3037999 @@ -26957,27 +27473,27 @@ 1 2 - 31543 + 31501 2 3 - 8176 + 8165 3 5 - 4109 + 4104 5 6811 - 3571 + 3567 19018 41956 - 86 + 85 @@ -26993,27 +27509,27 @@ 1 2 - 31543 + 31501 2 3 - 8176 + 8165 3 5 - 4109 + 4104 5 6811 - 3571 + 3567 19018 41956 - 86 + 85 @@ -27029,22 +27545,22 @@ 1 2 - 34404 + 34359 2 3 - 7358 + 7349 3 6 - 3571 + 3567 6 20057 - 2151 + 2148 @@ -27060,22 +27576,22 @@ 1 2 - 79137 + 79034 2 6 - 38105 + 38055 6 7 - 399001 + 398479 7 192 - 36212 + 36164 @@ -27091,22 +27607,22 @@ 1 2 - 79137 + 79034 2 6 - 38105 + 38055 6 7 - 399001 + 398479 7 192 - 36212 + 36164 @@ -27122,22 +27638,22 @@ 1 2 - 111541 + 111395 2 4 - 13297 + 13279 4 5 - 415311 + 414767 5 33 - 12307 + 12291 @@ -27147,15 +27663,15 @@ varbind - 8254629 + 8254728 expr - 8254629 + 8254728 var - 1050375 + 1050388 @@ -27169,7 +27685,7 @@ 1 2 - 8254629 + 8254728 @@ -27185,52 +27701,52 @@ 1 2 - 171535 + 171537 2 3 - 188700 + 188702 3 4 - 145647 + 145649 4 5 - 116636 + 116637 5 6 - 83150 + 83152 6 7 - 65817 + 65818 7 9 - 80815 + 80816 9 13 - 81575 + 81576 13 27 - 79127 + 79128 27 5137 - 37368 + 37369 @@ -27240,15 +27756,15 @@ funbind - 5812528 + 5810554 expr - 5810054 + 5808083 fun - 275948 + 275716 @@ -27262,12 +27778,12 @@ 1 2 - 5807579 + 5805611 2 3 - 2474 + 2471 @@ -27283,27 +27799,27 @@ 1 2 - 181448 + 181318 2 3 - 38837 + 38786 3 4 - 17191 + 17169 4 8 - 22742 + 22713 8 37798 - 15728 + 15729 @@ -27313,11 +27829,11 @@ expr_allocator - 45244 + 45240 expr - 45244 + 45240 func @@ -27339,7 +27855,7 @@ 1 2 - 45244 + 45240 @@ -27355,7 +27871,7 @@ 1 2 - 45244 + 45240 @@ -27439,11 +27955,11 @@ expr_deallocator - 53829 + 53825 expr - 53829 + 53825 func @@ -27465,7 +27981,7 @@ 1 2 - 53829 + 53825 @@ -27481,7 +27997,7 @@ 1 2 - 53829 + 53825 @@ -27586,15 +28102,15 @@ expr_cond_guard - 897879 + 897887 cond - 897879 + 897887 guard - 897879 + 897887 @@ -27608,7 +28124,7 @@ 1 2 - 897879 + 897887 @@ -27624,7 +28140,7 @@ 1 2 - 897879 + 897887 @@ -27634,15 +28150,15 @@ expr_cond_true - 897876 + 897883 cond - 897876 + 897883 true - 897876 + 897883 @@ -27656,7 +28172,7 @@ 1 2 - 897876 + 897883 @@ -27672,7 +28188,7 @@ 1 2 - 897876 + 897883 @@ -27682,15 +28198,15 @@ expr_cond_false - 897879 + 897887 cond - 897879 + 897887 false - 897879 + 897887 @@ -27704,7 +28220,7 @@ 1 2 - 897879 + 897887 @@ -27720,7 +28236,7 @@ 1 2 - 897879 + 897887 @@ -27730,15 +28246,15 @@ values - 13474601 + 13474763 id - 13474601 + 13474763 str - 114566 + 114567 @@ -27752,7 +28268,7 @@ 1 2 - 13474601 + 13474763 @@ -27768,7 +28284,7 @@ 1 2 - 78302 + 78303 2 @@ -27783,7 +28299,7 @@ 6 52 - 8628 + 8629 52 @@ -27798,11 +28314,11 @@ valuetext - 6647456 + 6647515 id - 6647456 + 6647515 text @@ -27820,7 +28336,7 @@ 1 2 - 6647456 + 6647515 @@ -27861,15 +28377,15 @@ valuebind - 13583183 + 13583347 val - 13474601 + 13474763 expr - 13583183 + 13583347 @@ -27883,12 +28399,12 @@ 1 2 - 13384046 + 13384208 2 6 - 90554 + 90555 @@ -27904,7 +28420,7 @@ 1 2 - 13583183 + 13583347 @@ -27914,11 +28430,11 @@ fieldoffsets - 1497674 + 1499493 id - 1497674 + 1499493 byteoffset @@ -27940,7 +28456,7 @@ 1 2 - 1497674 + 1499493 @@ -27956,7 +28472,7 @@ 1 2 - 1497674 + 1499493 @@ -28001,7 +28517,7 @@ 250 - 5950 + 5966 1089 @@ -28018,7 +28534,7 @@ 1 2 - 30386 + 30387 2 @@ -28072,8 +28588,8 @@ 54 - 27146 - 27147 + 27179 + 27180 54 @@ -28115,19 +28631,19 @@ bitfield - 30314 + 30313 id - 30314 + 30313 bits - 3493 + 3492 declared_bits - 3493 + 3492 @@ -28141,7 +28657,7 @@ 1 2 - 30314 + 30313 @@ -28157,7 +28673,7 @@ 1 2 - 30314 + 30313 @@ -28173,7 +28689,7 @@ 1 2 - 998 + 997 2 @@ -28188,7 +28704,7 @@ 4 5 - 499 + 498 5 @@ -28224,7 +28740,7 @@ 1 2 - 3493 + 3492 @@ -28240,7 +28756,7 @@ 1 2 - 998 + 997 2 @@ -28255,7 +28771,7 @@ 4 5 - 499 + 498 5 @@ -28291,7 +28807,7 @@ 1 2 - 3493 + 3492 @@ -28301,23 +28817,23 @@ initialisers - 2251321 + 2247635 init - 2251321 + 2247635 var - 981178 + 979695 expr - 2251321 + 2247635 location - 516961 + 516295 @@ -28331,7 +28847,7 @@ 1 2 - 2251321 + 2247635 @@ -28347,7 +28863,7 @@ 1 2 - 2251321 + 2247635 @@ -28363,7 +28879,7 @@ 1 2 - 2251321 + 2247635 @@ -28379,17 +28895,17 @@ 1 2 - 870758 + 869453 2 15 - 37448 + 37398 16 25 - 72972 + 72843 @@ -28405,17 +28921,17 @@ 1 2 - 870758 + 869453 2 15 - 37448 + 37398 16 25 - 72972 + 72843 @@ -28431,7 +28947,7 @@ 1 2 - 981170 + 979687 2 @@ -28452,7 +28968,7 @@ 1 2 - 2251321 + 2247635 @@ -28468,7 +28984,7 @@ 1 2 - 2251321 + 2247635 @@ -28484,7 +29000,7 @@ 1 2 - 2251321 + 2247635 @@ -28500,22 +29016,22 @@ 1 2 - 415111 + 414607 2 3 - 33614 + 33555 3 13 - 42070 + 42013 13 111925 - 26165 + 26119 @@ -28531,17 +29047,17 @@ 1 2 - 444412 + 443873 2 3 - 34524 + 34463 3 12238 - 38025 + 37958 @@ -28557,22 +29073,22 @@ 1 2 - 415111 + 414607 2 3 - 33614 + 33555 3 13 - 42070 + 42013 13 111925 - 26165 + 26119 @@ -28582,26 +29098,26 @@ braced_initialisers - 68438 + 68436 init - 68438 + 68436 expr_ancestor - 1677683 + 1675488 exp - 1677683 + 1675488 ancestor - 839659 + 838560 @@ -28615,7 +29131,7 @@ 1 2 - 1677683 + 1675488 @@ -28631,17 +29147,17 @@ 1 2 - 17084 + 17061 2 3 - 812505 + 811442 3 19 - 10069 + 10056 @@ -28651,11 +29167,11 @@ exprs - 25210567 + 25210871 id - 25210567 + 25210871 kind @@ -28663,7 +29179,7 @@ location - 10585854 + 10585982 @@ -28677,7 +29193,7 @@ 1 2 - 25210567 + 25210871 @@ -28693,7 +29209,7 @@ 1 2 - 25210567 + 25210871 @@ -28871,22 +29387,22 @@ 1 2 - 8903885 + 8903992 2 3 - 820608 + 820618 3 16 - 797198 + 797208 16 71733 - 64161 + 64162 @@ -28902,17 +29418,17 @@ 1 2 - 9043287 + 9043396 2 3 - 774272 + 774282 3 32 - 768294 + 768303 @@ -28922,19 +29438,19 @@ expr_reuse - 847039 + 845931 reuse - 847039 + 845931 original - 847039 + 845931 value_category - 43 + 42 @@ -28948,7 +29464,7 @@ 1 2 - 847039 + 845931 @@ -28964,7 +29480,7 @@ 1 2 - 847039 + 845931 @@ -28980,7 +29496,7 @@ 1 2 - 847039 + 845931 @@ -28996,7 +29512,7 @@ 1 2 - 847039 + 845931 @@ -29048,15 +29564,15 @@ expr_types - 25210567 + 25210871 id - 25210567 + 25210871 typeid - 214202 + 214205 value_category @@ -29074,7 +29590,7 @@ 1 2 - 25210567 + 25210871 @@ -29090,7 +29606,7 @@ 1 2 - 25210567 + 25210871 @@ -29131,7 +29647,7 @@ 8 14 - 17386 + 17387 14 @@ -29141,17 +29657,17 @@ 24 49 - 16067 + 16068 49 134 - 16177 + 16178 134 441505 - 13825 + 13826 @@ -29167,7 +29683,7 @@ 1 2 - 185913 + 185915 2 @@ -29235,15 +29751,15 @@ new_allocated_type - 46198 + 46194 expr - 46198 + 46194 type_id - 27391 + 27389 @@ -29257,7 +29773,7 @@ 1 2 - 46198 + 46194 @@ -29273,12 +29789,12 @@ 1 2 - 11515 + 11514 2 3 - 14479 + 14478 3 @@ -29293,15 +29809,15 @@ new_array_allocated_type - 6653 + 6641 expr - 6653 + 6641 type_id - 2843 + 2838 @@ -29315,7 +29831,7 @@ 1 2 - 6653 + 6641 @@ -29336,17 +29852,17 @@ 2 3 - 2510 + 2505 3 5 - 219 + 218 6 15 - 73 + 72 @@ -29356,19 +29872,19 @@ aggregate_field_init - 5717380 + 5717381 aggregate - 1243068 + 1243069 initializer - 5717202 + 5717203 field - 3227 + 3228 position @@ -29390,7 +29906,7 @@ 1 2 - 19690 + 19691 2 @@ -29441,7 +29957,7 @@ 1 2 - 19686 + 19687 2 @@ -29492,7 +30008,7 @@ 1 2 - 19690 + 19691 2 @@ -29543,7 +30059,7 @@ 1 2 - 1242986 + 1242987 2 @@ -29564,7 +30080,7 @@ 1 2 - 5717202 + 5717203 @@ -29580,7 +30096,7 @@ 1 2 - 5717024 + 5717025 2 @@ -29601,7 +30117,7 @@ 1 2 - 5717202 + 5717203 @@ -29617,7 +30133,7 @@ 1 2 - 5717202 + 5717203 @@ -29633,7 +30149,7 @@ 1 2 - 1433 + 1434 2 @@ -29689,7 +30205,7 @@ 1 2 - 1433 + 1434 2 @@ -29745,7 +30261,7 @@ 1 2 - 3213 + 3214 2 @@ -29766,7 +30282,7 @@ 1 2 - 3201 + 3202 2 @@ -29840,8 +30356,8 @@ 2 - 1243068 - 1243069 + 1243069 + 1243070 1 @@ -29911,8 +30427,8 @@ 2 - 1243068 - 1243069 + 1243069 + 1243070 1 @@ -29982,8 +30498,8 @@ 2 - 1283 - 1284 + 1284 + 1285 1 @@ -30024,8 +30540,8 @@ 1 - 1242670 - 1242671 + 1242671 + 1242672 1 @@ -30045,8 +30561,8 @@ 1 - 5716492 - 5716493 + 5716493 + 5716494 1 @@ -30066,8 +30582,8 @@ 1 - 3035 - 3036 + 3036 + 3037 1 @@ -30099,15 +30615,15 @@ aggregate_array_init - 1349246 + 1349502 aggregate - 152356 + 152357 initializer - 1349246 + 1349502 element_index @@ -30168,7 +30684,7 @@ 58 62923 - 1762 + 1763 @@ -30219,7 +30735,7 @@ 58 62923 - 1762 + 1763 @@ -30270,7 +30786,7 @@ 58 62923 - 1762 + 1763 @@ -30286,7 +30802,7 @@ 1 2 - 152356 + 152357 @@ -30302,7 +30818,7 @@ 1 2 - 1349246 + 1349502 @@ -30318,7 +30834,7 @@ 1 2 - 1349246 + 1349502 @@ -30334,7 +30850,7 @@ 1 2 - 1349246 + 1349502 @@ -30350,7 +30866,7 @@ 1 2 - 1349246 + 1349502 @@ -30390,7 +30906,7 @@ 37 - 152356 + 152357 2151 @@ -30431,7 +30947,7 @@ 37 - 152356 + 152357 2151 @@ -30514,7 +31030,7 @@ 37 - 152357 + 152358 2151 @@ -30555,7 +31071,7 @@ 37 - 152357 + 152358 2151 @@ -30617,8 +31133,8 @@ 1 - 152353 - 152354 + 152354 + 152355 1 @@ -30638,8 +31154,8 @@ 1 - 1349230 - 1349231 + 1349486 + 1349487 1 @@ -30692,15 +31208,15 @@ condition_decl_bind - 408920 + 408385 expr - 408920 + 408385 decl - 408920 + 408385 @@ -30714,7 +31230,7 @@ 1 2 - 408920 + 408385 @@ -30730,7 +31246,7 @@ 1 2 - 408920 + 408385 @@ -30740,15 +31256,15 @@ typeid_bind - 47901 + 47898 expr - 47901 + 47898 type_id - 15944 + 15943 @@ -30762,7 +31278,7 @@ 1 2 - 47901 + 47898 @@ -30778,12 +31294,12 @@ 1 2 - 2964 + 2963 2 3 - 12571 + 12570 3 @@ -30798,15 +31314,15 @@ uuidof_bind - 26677 + 26695 expr - 26677 + 26695 type_id - 26425 + 26443 @@ -30820,7 +31336,7 @@ 1 2 - 26677 + 26695 @@ -30836,12 +31352,12 @@ 1 2 - 26214 + 26232 2 4 - 211 + 210 @@ -30851,11 +31367,11 @@ sizeof_bind - 242026 + 242029 expr - 242026 + 242029 type_id @@ -30873,7 +31389,7 @@ 1 2 - 242026 + 242029 @@ -30982,11 +31498,11 @@ lambdas - 19057 + 19023 expr - 19057 + 19023 default_capture @@ -31012,7 +31528,7 @@ 1 2 - 19057 + 19023 @@ -31028,7 +31544,7 @@ 1 2 - 19057 + 19023 @@ -31044,7 +31560,7 @@ 1 2 - 19057 + 19023 @@ -31228,23 +31744,23 @@ lambda_capture - 31965 + 31909 id - 31965 + 31909 lambda - 15491 + 15463 index - 138 + 137 field - 31965 + 31909 captured_by_reference @@ -31256,7 +31772,7 @@ location - 17944 + 17912 @@ -31270,7 +31786,7 @@ 1 2 - 31965 + 31909 @@ -31286,7 +31802,7 @@ 1 2 - 31965 + 31909 @@ -31302,7 +31818,7 @@ 1 2 - 31965 + 31909 @@ -31318,7 +31834,7 @@ 1 2 - 31965 + 31909 @@ -31334,7 +31850,7 @@ 1 2 - 31965 + 31909 @@ -31350,7 +31866,7 @@ 1 2 - 31965 + 31909 @@ -31366,27 +31882,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31402,27 +31918,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31438,27 +31954,27 @@ 1 2 - 8212 + 8198 2 3 - 3541 + 3535 3 4 - 1657 + 1654 4 6 - 1259 + 1256 6 18 - 820 + 819 @@ -31474,12 +31990,12 @@ 1 2 - 14248 + 14223 2 3 - 1242 + 1240 @@ -31495,7 +32011,7 @@ 1 2 - 15369 + 15342 2 @@ -31516,22 +32032,22 @@ 1 2 - 8805 + 8790 2 3 - 3696 + 3689 3 4 - 1389 + 1386 4 7 - 1291 + 1289 7 @@ -31978,7 +32494,7 @@ 1 2 - 31965 + 31909 @@ -31994,7 +32510,7 @@ 1 2 - 31965 + 31909 @@ -32010,7 +32526,7 @@ 1 2 - 31965 + 31909 @@ -32026,7 +32542,7 @@ 1 2 - 31965 + 31909 @@ -32042,7 +32558,7 @@ 1 2 - 31965 + 31909 @@ -32058,7 +32574,7 @@ 1 2 - 31965 + 31909 @@ -32316,17 +32832,17 @@ 1 2 - 15694 + 15666 2 6 - 1437 + 1435 6 68 - 812 + 810 @@ -32342,17 +32858,17 @@ 1 2 - 16271 + 16242 2 13 - 1470 + 1467 13 68 - 203 + 202 @@ -32368,12 +32884,12 @@ 1 2 - 17253 + 17223 2 8 - 690 + 689 @@ -32389,17 +32905,17 @@ 1 2 - 15694 + 15666 2 6 - 1437 + 1435 6 68 - 812 + 810 @@ -32415,7 +32931,7 @@ 1 2 - 17920 + 17888 2 @@ -32436,7 +32952,7 @@ 1 2 - 17944 + 17912 @@ -32446,15 +32962,15 @@ fold - 1247 + 1246 expr - 1247 + 1246 operator - 86 + 85 is_left_fold @@ -32472,7 +32988,7 @@ 1 2 - 1247 + 1246 @@ -32488,7 +33004,7 @@ 1 2 - 1247 + 1246 @@ -32504,7 +33020,7 @@ 1 2 - 43 + 42 2 @@ -32530,7 +33046,7 @@ 1 2 - 86 + 85 @@ -32572,11 +33088,11 @@ stmts - 6368836 + 6358197 id - 6368836 + 6358197 kind @@ -32584,7 +33100,7 @@ location - 2684483 + 2679767 @@ -32598,7 +33114,7 @@ 1 2 - 6368836 + 6358197 @@ -32614,7 +33130,7 @@ 1 2 - 6368836 + 6358197 @@ -32713,13 +33229,13 @@ 8 - 119871 - 119872 + 119906 + 119907 8 - 200105 - 200106 + 200140 + 200141 8 @@ -32824,13 +33340,13 @@ 8 - 49039 - 49040 + 49040 + 49041 8 - 86405 - 86406 + 86406 + 86407 8 @@ -32852,22 +33368,22 @@ 1 2 - 2224993 + 2221078 2 3 - 182231 + 181910 3 10 - 202173 + 201818 10 1789 - 75084 + 74960 @@ -32883,12 +33399,12 @@ 1 2 - 2601527 + 2596949 2 10 - 82955 + 82817 @@ -32898,15 +33414,15 @@ type_vla - 1 + 3 type_id - 1 + 3 decl - 1 + 3 @@ -32920,7 +33436,7 @@ 1 2 - 1 + 3 @@ -32936,7 +33452,7 @@ 1 2 - 1 + 3 @@ -33053,15 +33569,15 @@ if_then - 990214 + 990226 if_stmt - 990214 + 990226 then_id - 990214 + 990226 @@ -33075,7 +33591,7 @@ 1 2 - 990214 + 990226 @@ -33091,7 +33607,7 @@ 1 2 - 990214 + 990226 @@ -33101,15 +33617,15 @@ if_else - 437107 + 436535 if_stmt - 437107 + 436535 else_id - 437107 + 436535 @@ -33123,7 +33639,7 @@ 1 2 - 437107 + 436535 @@ -33139,7 +33655,7 @@ 1 2 - 437107 + 436535 @@ -33197,15 +33713,15 @@ constexpr_if_then - 106037 + 106034 constexpr_if_stmt - 106037 + 106034 then_id - 106037 + 106034 @@ -33219,7 +33735,7 @@ 1 2 - 106037 + 106034 @@ -33235,7 +33751,7 @@ 1 2 - 106037 + 106034 @@ -33245,15 +33761,15 @@ constexpr_if_else - 76097 + 76095 constexpr_if_stmt - 76097 + 76095 else_id - 76097 + 76095 @@ -33267,7 +33783,7 @@ 1 2 - 76097 + 76095 @@ -33283,7 +33799,7 @@ 1 2 - 76097 + 76095 @@ -33389,15 +33905,15 @@ while_body - 39647 + 39648 while_stmt - 39647 + 39648 body_id - 39647 + 39648 @@ -33411,7 +33927,7 @@ 1 2 - 39647 + 39648 @@ -33427,7 +33943,7 @@ 1 2 - 39647 + 39648 @@ -33437,15 +33953,15 @@ do_body - 233641 + 233643 do_stmt - 233641 + 233643 body_id - 233641 + 233643 @@ -33459,7 +33975,7 @@ 1 2 - 233641 + 233643 @@ -33475,7 +33991,7 @@ 1 2 - 233641 + 233643 @@ -33533,19 +34049,19 @@ switch_case - 836152 + 835058 switch_stmt - 411868 + 411329 index - 387 + 386 case_id - 836152 + 835058 @@ -33564,12 +34080,12 @@ 2 3 - 408985 + 408450 3 19 - 2861 + 2857 @@ -33590,12 +34106,12 @@ 2 3 - 408985 + 408450 3 19 - 2861 + 2857 @@ -33753,7 +34269,7 @@ 1 2 - 836152 + 835058 @@ -33769,7 +34285,7 @@ 1 2 - 836152 + 835058 @@ -33779,15 +34295,15 @@ switch_body - 411868 + 411329 switch_stmt - 411868 + 411329 body_id - 411868 + 411329 @@ -33801,7 +34317,7 @@ 1 2 - 411868 + 411329 @@ -33817,7 +34333,7 @@ 1 2 - 411868 + 411329 @@ -33875,15 +34391,15 @@ for_condition - 76341 + 76342 for_stmt - 76341 + 76342 condition_id - 76341 + 76342 @@ -33897,7 +34413,7 @@ 1 2 - 76341 + 76342 @@ -33913,7 +34429,7 @@ 1 2 - 76341 + 76342 @@ -33923,15 +34439,15 @@ for_update - 73386 + 73387 for_stmt - 73386 + 73387 update_id - 73386 + 73387 @@ -33945,7 +34461,7 @@ 1 2 - 73386 + 73387 @@ -33961,7 +34477,7 @@ 1 2 - 73386 + 73387 @@ -33971,15 +34487,15 @@ for_body - 84389 + 84390 for_stmt - 84389 + 84390 body_id - 84389 + 84390 @@ -33993,7 +34509,7 @@ 1 2 - 84389 + 84390 @@ -34009,7 +34525,7 @@ 1 2 - 84389 + 84390 @@ -34019,19 +34535,19 @@ stmtparents - 5628263 + 5618643 id - 5628263 + 5618643 index - 15775 + 15747 parent - 2381441 + 2377534 @@ -34045,7 +34561,7 @@ 1 2 - 5628263 + 5618643 @@ -34061,7 +34577,7 @@ 1 2 - 5628263 + 5618643 @@ -34077,52 +34593,52 @@ 1 2 - 5182 + 5173 2 3 - 1291 + 1289 3 4 - 284 + 283 4 5 - 2006 + 2002 7 8 - 1315 + 1313 8 12 - 1023 + 1021 12 29 - 1389 + 1386 29 39 - 1186 + 1183 42 78 - 1194 + 1192 78 - 209668 - 901 + 209703 + 900 @@ -34138,52 +34654,52 @@ 1 2 - 5182 + 5173 2 3 - 1291 + 1289 3 4 - 284 + 283 4 5 - 2006 + 2002 7 8 - 1315 + 1313 8 12 - 1023 + 1021 12 29 - 1389 + 1386 29 39 - 1186 + 1183 42 78 - 1194 + 1192 78 - 209668 - 901 + 209703 + 900 @@ -34199,32 +34715,32 @@ 1 2 - 1358987 + 1356880 2 3 - 517368 + 516457 3 4 - 151516 + 151250 4 6 - 155724 + 155450 6 16 - 178868 + 178553 16 1943 - 18976 + 18942 @@ -34240,32 +34756,32 @@ 1 2 - 1358987 + 1356880 2 3 - 517368 + 516457 3 4 - 151516 + 151250 4 6 - 155724 + 155450 6 16 - 178868 + 178553 16 1943 - 18976 + 18942 @@ -34275,30 +34791,30 @@ ishandler - 43781 + 43770 block - 43781 + 43770 stmt_decl_bind - 725870 + 724592 stmt - 715301 + 714042 num - 73 + 72 decl - 725870 + 724592 @@ -34312,12 +34828,12 @@ 1 2 - 707836 + 706590 2 10 - 7465 + 7452 @@ -34333,12 +34849,12 @@ 1 2 - 707836 + 706590 2 10 - 7465 + 7452 @@ -34466,7 +34982,7 @@ 1 2 - 725870 + 724592 @@ -34482,7 +34998,7 @@ 1 2 - 725870 + 724592 @@ -34492,19 +35008,19 @@ stmt_decl_entry_bind - 725870 + 724592 stmt - 715301 + 714042 num - 73 + 72 decl_entry - 725870 + 724592 @@ -34518,12 +35034,12 @@ 1 2 - 707836 + 706590 2 10 - 7465 + 7452 @@ -34539,12 +35055,12 @@ 1 2 - 707836 + 706590 2 10 - 7465 + 7452 @@ -34672,7 +35188,7 @@ 1 2 - 725870 + 724592 @@ -34688,7 +35204,7 @@ 1 2 - 725870 + 724592 @@ -34698,15 +35214,15 @@ blockscope - 1644335 + 1644290 block - 1644335 + 1644290 enclosing - 1427145 + 1427105 @@ -34720,7 +35236,7 @@ 1 2 - 1644335 + 1644290 @@ -34736,17 +35252,17 @@ 1 2 - 1294535 + 1294499 2 4 - 117265 + 117262 4 29 - 15344 + 15343 @@ -34756,15 +35272,15 @@ jumpinfo - 348320 + 348324 id - 348320 + 348324 str - 28948 + 28949 target @@ -34782,7 +35298,7 @@ 1 2 - 348320 + 348324 @@ -34798,7 +35314,7 @@ 1 2 - 348320 + 348324 @@ -34814,7 +35330,7 @@ 2 3 - 13596 + 13597 3 @@ -34860,7 +35376,7 @@ 1 2 - 23190 + 23191 2 @@ -34891,7 +35407,7 @@ 2 3 - 36210 + 36211 3 @@ -34937,11 +35453,11 @@ preprocdirects - 5408430 + 5408281 id - 5408430 + 5408281 kind @@ -34949,7 +35465,7 @@ location - 5405187 + 5405038 @@ -34963,7 +35479,7 @@ 1 2 - 5408430 + 5408281 @@ -34979,7 +35495,7 @@ 1 2 - 5408430 + 5408281 @@ -35127,7 +35643,7 @@ 1 2 - 5405062 + 5404913 27 @@ -35148,7 +35664,7 @@ 1 2 - 5405187 + 5405038 @@ -35158,15 +35674,15 @@ preprocpair - 1141217 + 1141185 begin - 888971 + 888947 elseelifend - 1141217 + 1141185 @@ -35180,17 +35696,17 @@ 1 2 - 649575 + 649557 2 3 - 230414 + 230407 3 9 - 8982 + 8981 @@ -35206,7 +35722,7 @@ 1 2 - 1141217 + 1141185 @@ -35216,41 +35732,41 @@ preproctrue - 439371 + 439358 branch - 439371 + 439358 preprocfalse - 285304 + 285296 branch - 285304 + 285296 preproctext - 4352418 + 4352298 id - 4352418 + 4352298 head - 2955088 + 2955007 body - 1683382 + 1683336 @@ -35264,7 +35780,7 @@ 1 2 - 4352418 + 4352298 @@ -35280,7 +35796,7 @@ 1 2 - 4352418 + 4352298 @@ -35296,12 +35812,12 @@ 1 2 - 2756485 + 2756409 2 798 - 198602 + 198597 @@ -35317,12 +35833,12 @@ 1 2 - 2873875 + 2873796 2 5 - 81212 + 81210 @@ -35338,17 +35854,17 @@ 1 2 - 1535178 + 1535136 2 10 - 127245 + 127241 10 13606 - 20958 + 20957 @@ -35364,12 +35880,12 @@ 1 2 - 1539420 + 1539378 2 12 - 126871 + 126867 12 @@ -35384,15 +35900,15 @@ includes - 318638 + 318569 id - 318638 + 318569 included - 58695 + 58683 @@ -35406,7 +35922,7 @@ 1 2 - 318638 + 318569 @@ -35422,32 +35938,32 @@ 1 2 - 29046 + 29040 2 3 - 9442 + 9440 3 4 - 4953 + 4952 4 6 - 5355 + 5354 6 11 - 4520 + 4519 11 47 - 4404 + 4403 47 @@ -35510,11 +36026,11 @@ link_parent - 30398238 + 30400377 element - 3866121 + 3866383 link_target @@ -35532,17 +36048,17 @@ 1 2 - 530459 + 530489 2 9 - 26948 + 26946 9 10 - 3308712 + 3308947 @@ -35561,48 +36077,48 @@ 34 - 97375 - 97376 + 97389 + 97390 34 - 97494 - 97495 + 97508 + 97509 34 - 97547 - 97548 + 97561 + 97562 34 - 97574 - 97575 + 97588 + 97589 34 - 97596 - 97597 + 97610 + 97611 34 - 97628 - 97629 + 97642 + 97643 34 - 99635 - 99636 + 99649 + 99650 34 - 103015 - 103016 + 103029 + 103030 34 - 104379 - 104380 + 104395 + 104396 34 From 15393ae62135eadff82963c9a4d4ad02c246c666 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 13 Nov 2025 13:15:03 +0100 Subject: [PATCH 783/965] C++: Add change note --- cpp/ql/lib/change-notes/2025-11-13-expanded.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-11-13-expanded.md diff --git a/cpp/ql/lib/change-notes/2025-11-13-expanded.md b/cpp/ql/lib/change-notes/2025-11-13-expanded.md new file mode 100644 index 00000000000..82d0a1f5105 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-11-13-expanded.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* New predicates `getAnExpandedArgument` and `getExpandedArgument` were added to the `Compilation` class, yielding compilation arguments after expansion of response files. From 1df47cc747cce7eee04cae90c7e1b2790496f24f Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 13 Nov 2025 13:32:06 +0100 Subject: [PATCH 784/965] C++: Fix QL-for-QL warning --- cpp/ql/lib/semmle/code/cpp/Compilation.qll | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index 716156acb44..c4b3796dec8 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -100,10 +100,12 @@ class Compilation extends @compilation { string getAnExpandedArgument() { result = this.getArgument(_) } /** - * The expanded arguments that were passed to the extractor for a - * compiler invocation. This is similar to `getArgument`, but - * for a `@someFile` argument, it includes the arguments from that - * file, rather than just taking the argument literally. + * Gets the `i`th expanded argument passed to the extractor on this + * invocation. + * + * This is similar to `getArgument`, but for a `@someFile` argument, it + * includes the arguments from that file, rather than just taking the + * argument literally. */ string getExpandedArgument(int i) { compilation_expanded_args(this, i, result) } From 528c451007838bc4b071204605d3c5a4ae737681 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:02:59 +0000 Subject: [PATCH 785/965] Added change note, adjusted spacing in comment --- .../lib/semmle/code/java/security/SensitiveLoggingQuery.qll | 2 +- .../2025-11-17-sensitive-logging-new-sanitizers.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index f8692902d02..243fc71ea32 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -47,7 +47,7 @@ private class TypeType extends RefType { /** * A sanitizer that may remove sensitive information from a string before logging. * - * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. + * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. */ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { SensitiveLoggerSanitizerCalled() { diff --git a/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md b/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md new file mode 100644 index 00000000000..2e744e2ab2c --- /dev/null +++ b/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `substring` (for Java), `take` (for Kotlin) and similar functions, when called with a fixed length less than or equal to 7, are now treated as sanitizers for the `java/sensitive-log` query. \ No newline at end of file From 3419c00bc0f398e439665c9a384483ee2b226254 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 17 Nov 2025 12:27:53 +0100 Subject: [PATCH 786/965] Rust: Use `ToIndex` instead of `FromIndex` in ranked `forex` predicates `ToIndex` makes more sense, since we start the recursion from `0`. --- .../internal/typeinference/FunctionType.qll | 10 ++++----- .../typeinference/internal/TypeInference.qll | 22 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 727c99fa810..e8b44336e76 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -351,7 +351,7 @@ module ArgsAreInstantiationsOf { | rnk = 0 or - argsAreInstantiationsOfFromIndex(call, abs, f, rnk - 1) + argsAreInstantiationsOfToIndex(call, abs, f, rnk - 1) ) } @@ -360,15 +360,15 @@ module ArgsAreInstantiationsOf { } } - private module ArgIsInstantiationOfFromIndex = + private module ArgIsInstantiationOfToIndex = ArgIsInstantiationOf; pragma[nomagic] - private predicate argsAreInstantiationsOfFromIndex( + private predicate argsAreInstantiationsOfToIndex( Input::Call call, ImplOrTraitItemNode i, Function f, int rnk ) { exists(FunctionPosition pos | - ArgIsInstantiationOfFromIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and + ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and call.hasTargetCand(i, f) and toCheckRanked(i, f, pos, rnk) ) @@ -381,7 +381,7 @@ module ArgsAreInstantiationsOf { pragma[nomagic] predicate argsAreInstantiationsOf(Input::Call call, ImplOrTraitItemNode i, Function f) { exists(int rnk | - argsAreInstantiationsOfFromIndex(call, i, f, rnk) and + argsAreInstantiationsOfToIndex(call, i, f, rnk) and rnk = max(int r | toCheckRanked(i, f, _, r)) ) } diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index a827ef3cd79..47b80b9dc18 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -578,7 +578,7 @@ module Make1 Input1> { } pragma[nomagic] - private predicate satisfiesConcreteTypesFromIndex( + private predicate satisfiesConcreteTypesToIndex( App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(Type t, TypePath path | @@ -586,13 +586,13 @@ module Make1 Input1> { if t = abs.getATypeParameter() then any() else app.getTypeAt(path) = t ) and // Recurse unless we are at the first path - if i = 0 then any() else satisfiesConcreteTypesFromIndex(app, abs, constraint, i - 1) + if i = 0 then any() else satisfiesConcreteTypesToIndex(app, abs, constraint, i - 1) } /** Holds if all the concrete types in `constraint` also occur in `app`. */ pragma[nomagic] private predicate satisfiesConcreteTypes(App app, TypeAbstraction abs, Constraint constraint) { - satisfiesConcreteTypesFromIndex(app, abs, constraint, + satisfiesConcreteTypesToIndex(app, abs, constraint, max(int i | exists(getNthPath(constraint, i)))) } @@ -620,7 +620,7 @@ module Make1 Input1> { } pragma[nomagic] - private predicate typeParametersEqualFromIndexBase( + private predicate typeParametersEqualToIndexBase( App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, TypePath path ) { path = getNthTypeParameterPath(constraint, tp, 0) and @@ -630,15 +630,15 @@ module Make1 Input1> { } pragma[nomagic] - private predicate typeParametersEqualFromIndex( + private predicate typeParametersEqualToIndex( App app, TypeAbstraction abs, Constraint constraint, TypeParameter tp, Type t, int i ) { exists(TypePath path | t = app.getTypeAt(path) and if i = 0 - then typeParametersEqualFromIndexBase(app, abs, constraint, tp, path) + then typeParametersEqualToIndexBase(app, abs, constraint, tp, path) else ( - typeParametersEqualFromIndex(app, abs, constraint, tp, t, i - 1) and + typeParametersEqualToIndex(app, abs, constraint, tp, t, i - 1) and path = getNthTypeParameterPath(constraint, tp, i) ) ) @@ -655,19 +655,19 @@ module Make1 Input1> { exists(int n | n = max(int i | exists(getNthTypeParameterPath(constraint, tp, i))) | // If the largest index is 0, then there are no equalities to check as // the type parameter only occurs once. - if n = 0 then any() else typeParametersEqualFromIndex(app, abs, constraint, tp, _, n) + if n = 0 then any() else typeParametersEqualToIndex(app, abs, constraint, tp, _, n) ) ) } - private predicate typeParametersHaveEqualInstantiationFromIndex( + private predicate typeParametersHaveEqualInstantiationToIndex( App app, TypeAbstraction abs, Constraint constraint, int i ) { exists(TypeParameter tp | tp = getNthTypeParameter(abs, i) | typeParametersEqual(app, abs, constraint, tp) and if i = 0 then any() - else typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, i - 1) + else typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, i - 1) ) } @@ -697,7 +697,7 @@ module Make1 Input1> { not exists(getNthTypeParameter(abs, _)) or exists(int n | n = max(int i | exists(getNthTypeParameter(abs, i))) | - typeParametersHaveEqualInstantiationFromIndex(app, abs, constraint, n) + typeParametersHaveEqualInstantiationToIndex(app, abs, constraint, n) ) ) } From a07f015d01aef602c726566c899ff01036370893 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 3 Nov 2025 09:55:34 +0100 Subject: [PATCH 787/965] Rust: Accept changes to expected files --- .../models/CONSISTENCY/PathResolutionConsistency.expected | 2 -- .../stdin/CONSISTENCY/PathResolutionConsistency.expected | 2 -- .../CONSISTENCY/PathResolutionConsistency.expected | 3 --- 3 files changed, 7 deletions(-) delete mode 100644 rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected delete mode 100644 rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 7db15783781..00000000000 --- a/rust/ql/test/library-tests/dataflow/models/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| main.rs:389:14:389:30 | ... .lt(...) | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected deleted file mode 100644 index 535b3f339b4..00000000000 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/CONSISTENCY/PathResolutionConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -multipleCallTargets -| test.rs:31:22:31:72 | ... .read_to_string(...) | diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 11ad8e8069d..076e4066f4f 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -5,10 +5,7 @@ multipleCallTargets | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | -| main.rs:589:9:589:14 | S4.m() | | main.rs:590:9:590:18 | ...::m(...) | -| main.rs:591:9:591:20 | ... .m() | -| main.rs:592:9:592:24 | ...::m(...) | | main.rs:2553:13:2553:31 | ...::from(...) | | main.rs:2554:13:2554:31 | ...::from(...) | | main.rs:2555:13:2555:31 | ...::from(...) | From 9971936036dd67cc633e05cc0da767867a8aa773 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 3 Nov 2025 10:21:19 +0100 Subject: [PATCH 788/965] Rust: Improvements to docs from review comments --- .../internal/typeinference/FunctionType.qll | 30 +++++++++---------- .../typeinference/internal/TypeInference.qll | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll index 35ba7562658..53420cc7be6 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/FunctionType.qll @@ -124,34 +124,34 @@ Type getAssocFunctionTypeAt(Function f, ImplOrTraitItemNode i, FunctionPosition * * ```rust * trait T1 { - * fn m1(self); // self1 + * fn m1(self); // T1::m1 * - * fn m2(self) { ... } // self2 + * fn m2(self) { ... } // T1::m2 * } * * trait T2 : T1 { - * fn m3(self); // self3 + * fn m3(self); // T2::m3 * } * * impl T1 for X { - * fn m1(self) { ... } // self4 + * fn m1(self) { ... } // X::m1 * } * * impl T2 for X { - * fn m3(self) { ... } // self5 + * fn m3(self) { ... } // X::m3 * } * ``` * - * f | `impl` or trait | pos | type - * ---- | --------------- | ------ | ---- - * `m1` | `trait T1` | `self` | `T1` - * `m1` | `trait T2` | `self` | `T2` - * `m2` | `trait T1` | `self` | `T1` - * `m2` | `trait T2` | `self` | `T2` - * `m2` | `impl T1 for X` | `self` | `X` - * `m3` | `trait T2` | `self` | `T2` - * `m4` | `impl T2 for X` | `self` | `X` - * `m5` | `impl T2 for X` | `self` | `X` + * f | `impl` or trait | pos | type + * -------- | --------------- | ------ | ---- + * `T1::m1` | `trait T1` | `self` | `T1` + * `T1::m1` | `trait T2` | `self` | `T2` + * `T1::m2` | `trait T1` | `self` | `T1` + * `T1::m2` | `trait T2` | `self` | `T2` + * `T1::m2` | `impl T1 for X` | `self` | `X` + * `T2::m3` | `trait T2` | `self` | `T2` + * `X::m1` | `impl T1 for X` | `self` | `X` + * `X::m3` | `impl T2 for X` | `self` | `X` */ class AssocFunctionType extends MkAssocFunctionType { /** diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 260f78344ed..9b9d60abb67 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -449,8 +449,8 @@ module Make1 Input1> { * - `abs` is a type abstraction that introduces type variables that are * free in `condition` and `constraint`, * - and for every instantiation of the type parameters from `abs` the - * resulting `condition` satisifies the constraint given by `constraint`. - * - `transitive` corresponds to wether any further constraints satisifed + * resulting `condition` satisfies the constraint given by `constraint`. + * - `transitive` corresponds to whether any further constraints satisfied * through `constraint` also applies to `condition`. * * Example in C#: From 4eb22a7e5524547979c16ed91a1c68d0d66643de Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Mon, 17 Nov 2025 10:29:48 +0100 Subject: [PATCH 789/965] Rust: Fix grammar --- .../codeql/typeinference/internal/TypeInference.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 9b9d60abb67..a03af8f4ffe 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -451,7 +451,7 @@ module Make1 Input1> { * - and for every instantiation of the type parameters from `abs` the * resulting `condition` satisfies the constraint given by `constraint`. * - `transitive` corresponds to whether any further constraints satisfied - * through `constraint` also applies to `condition`. + * through `constraint` should also apply to `condition`. * * Example in C#: * ```csharp From 39720a17efb31d6d226178a6eafdc1209f84daf9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 13:00:31 +0100 Subject: [PATCH 790/965] Rust: More type inference tests --- .../PathResolutionConsistency.expected | 12 +- .../test/library-tests/type-inference/main.rs | 81 + .../type-inference/type-inference.expected | 5055 +++++++++-------- 3 files changed, 2713 insertions(+), 2435 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected index 076e4066f4f..7ee176a136f 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -6,9 +6,9 @@ multipleCallTargets | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:187:17:187:29 | S.bar(...) | | main.rs:590:9:590:18 | ...::m(...) | -| main.rs:2553:13:2553:31 | ...::from(...) | -| main.rs:2554:13:2554:31 | ...::from(...) | -| main.rs:2555:13:2555:31 | ...::from(...) | -| main.rs:2561:13:2561:31 | ...::from(...) | -| main.rs:2562:13:2562:31 | ...::from(...) | -| main.rs:2563:13:2563:31 | ...::from(...) | +| main.rs:2634:13:2634:31 | ...::from(...) | +| main.rs:2635:13:2635:31 | ...::from(...) | +| main.rs:2636:13:2636:31 | ...::from(...) | +| main.rs:2642:13:2642:31 | ...::from(...) | +| main.rs:2643:13:2643:31 | ...::from(...) | +| main.rs:2644:13:2644:31 | ...::from(...) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index d3209ccbfdf..a8568116afb 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1736,6 +1736,87 @@ mod builtins { let f = 123.0f64; // $ certainType=f:f64 let t = true; // $ certainType=t:bool let f = false; // $ certainType=f:bool + + trait MyTrait { + fn my_method(&self) -> &T; + + fn my_func() -> T; + } + + impl MyTrait for [T; N] { + fn my_method(&self) -> &T { + self.get(0).unwrap() // $ MISSING: target=get target=unwrap + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let x = [1, 2, 3].my_method(); // $ target=my_method type=x:&T.i32 + let x = <[_; 3]>::my_method(&[1, 2, 3]); // $ target=my_method type=x:&T.i32 + let x = <[i32; 3]>::my_func(); // $ MISSING: target=my_func type=x:i32 + + impl MyTrait for [T] { + fn my_method(&self) -> &T { + self.get(0).unwrap() // $ target=get target=unwrap + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let s: &[i32] = &[1, 2, 3]; + let x = s.my_method(); // $ target=my_method type=x:&T.i32 + let x = <[_]>::my_method(s); // $ target=my_method type=x:&T.i32 + let x = <[i32]>::my_func(); // $ MISSING: target=my_func type=x:i32 + + impl MyTrait for (T, i32) { + fn my_method(&self) -> &T { + &self.0 + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let p = (42, 7); + let x = p.my_method(); // $ target=my_method type=x:&T.i32 + let x = <(_, _)>::my_method(&p); // $ target=my_method type=x:&T.i32 + let x = <(i32, i32)>::my_func(); // $ MISSING: target=my_func type=x:i32 + + impl MyTrait for &T { + fn my_method(&self) -> &T { + *self // $ target=deref + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let r = &42; + let x = r.my_method(); // $ target=my_method type=x:&T.i32 + let x = <&_>::my_method(&r); // $ target=my_method type=x:&T.i32 + let x = <&i32>::my_func(); // $ MISSING: target=my_func type=x:i32 + + impl MyTrait for *mut T { + fn my_method(&self) -> &T { + unsafe { &**self } // $ target=deref target=deref + } + + fn my_func() -> T { + T::default() // $ target=default + } + } + + let mut v = 42; + let p: *mut i32 = &mut v; + let x = unsafe { p.my_method() }; // $ target=my_method type=x:&T.i32 + let x = unsafe { <*mut _>::my_method(&p) }; // $ target=my_method type=x:&T.i32 + let x = <*mut i32>::my_func(); // $ MISSING: target=my_func type=x:i32 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 1e69c775a8c..8e8465ae5f6 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -3906,7 +3906,7 @@ inferType | main.rs:1723:22:1723:35 | ...::_print(...) | | file://:0:0:0:0 | () | | main.rs:1723:22:1723:35 | { ... } | | file://:0:0:0:0 | () | | main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1729:16:1739:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1729:16:1820:5 | { ... } | | file://:0:0:0:0 | () | | main.rs:1730:13:1730:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1730:22:1730:22 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1731:13:1731:13 | y | | {EXTERNAL LOCATION} | i32 | @@ -3930,2435 +3930,2632 @@ inferType | main.rs:1737:17:1737:20 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1738:13:1738:13 | f | | {EXTERNAL LOCATION} | bool | | main.rs:1738:17:1738:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1744:16:1756:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1745:13:1745:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1745:17:1745:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1745:17:1745:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1745:25:1745:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1746:13:1746:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1746:17:1746:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1746:17:1746:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1746:25:1746:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1748:17:1748:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1749:13:1749:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1749:20:1749:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1749:20:1749:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1749:26:1749:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1750:9:1754:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | -| main.rs:1750:12:1750:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1750:17:1752:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1751:17:1751:17 | z | | file://:0:0:0:0 | () | -| main.rs:1751:21:1751:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1751:22:1751:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1751:22:1751:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1751:26:1751:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1752:16:1754:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1753:13:1753:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1753:13:1753:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1753:17:1753:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1755:9:1755:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1769:30:1771:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1770:13:1770:31 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1770:23:1770:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:29:1770:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1777:16:1777:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1777:22:1777:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1777:41:1782:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1778:13:1781:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1779:20:1779:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1779:20:1779:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1779:20:1779:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1779:29:1779:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1779:29:1779:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:20:1780:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1780:20:1780:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:20:1780:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:29:1780:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1780:29:1780:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:23:1787:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1787:23:1787:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1787:34:1787:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1787:45:1790:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1788:13:1788:16 | self | | file://:0:0:0:0 | & | -| main.rs:1788:13:1788:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1788:13:1788:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1788:13:1788:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1788:23:1788:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1788:23:1788:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:13:1789:16 | self | | file://:0:0:0:0 | & | -| main.rs:1789:13:1789:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1789:13:1789:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:13:1789:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1789:23:1789:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1789:23:1789:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1795:16:1795:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1795:22:1795:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1795:41:1800:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1796:13:1799:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1797:20:1797:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1797:20:1797:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:20:1797:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1797:29:1797:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1797:29:1797:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:20:1798:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1798:20:1798:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:20:1798:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1798:29:1798:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1798:29:1798:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1805:23:1805:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1805:23:1805:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1805:34:1805:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1805:45:1808:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1806:13:1806:16 | self | | file://:0:0:0:0 | & | -| main.rs:1806:13:1806:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1806:13:1806:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1806:13:1806:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1806:23:1806:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1806:23:1806:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:13:1807:16 | self | | file://:0:0:0:0 | & | -| main.rs:1807:13:1807:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1807:13:1807:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1807:13:1807:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1807:23:1807:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1807:23:1807:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1813:16:1813:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1813:22:1813:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1813:41:1818:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1814:13:1817:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1815:20:1815:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1815:20:1815:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:20:1815:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1815:29:1815:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1815:29:1815:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1816:20:1816:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1816:20:1816:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1816:20:1816:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1816:29:1816:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1816:29:1816:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1822:23:1822:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1822:23:1822:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1822:34:1822:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1822:45:1825:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1823:13:1823:16 | self | | file://:0:0:0:0 | & | -| main.rs:1823:13:1823:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1823:13:1823:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1823:13:1823:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1823:23:1823:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1823:23:1823:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:13:1824:16 | self | | file://:0:0:0:0 | & | -| main.rs:1824:13:1824:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1824:13:1824:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1824:13:1824:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1824:23:1824:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1824:23:1824:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1830:16:1830:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1830:22:1830:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1830:41:1835:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1831:13:1834:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1832:20:1832:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1832:20:1832:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:20:1832:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1832:29:1832:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1832:29:1832:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:20:1833:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1833:20:1833:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:20:1833:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1833:29:1833:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1833:29:1833:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1839:23:1839:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1839:23:1839:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1839:34:1839:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1839:45:1842:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1840:13:1840:16 | self | | file://:0:0:0:0 | & | -| main.rs:1840:13:1840:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1840:13:1840:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1840:13:1840:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1840:23:1840:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1840:23:1840:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:13:1841:16 | self | | file://:0:0:0:0 | & | -| main.rs:1841:13:1841:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1841:13:1841:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1841:13:1841:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1841:23:1841:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1841:23:1841:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1847:16:1847:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1847:22:1847:24 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1847:41:1852:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1848:13:1851:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1849:20:1849:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1849:20:1849:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1849:20:1849:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1849:29:1849:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1849:29:1849:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:20:1850:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1850:20:1850:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:20:1850:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1850:29:1850:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1850:29:1850:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1856:23:1856:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1856:23:1856:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1856:34:1856:36 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1856:45:1859:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1857:13:1857:16 | self | | file://:0:0:0:0 | & | -| main.rs:1857:13:1857:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1857:13:1857:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1857:13:1857:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1857:23:1857:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1857:23:1857:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:16 | self | | file://:0:0:0:0 | & | -| main.rs:1858:13:1858:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1858:13:1858:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1858:13:1858:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1858:23:1858:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1858:23:1858:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1864:19:1864:22 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1864:25:1864:27 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1864:44:1869:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1865:13:1868:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1866:20:1866:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1866:20:1866:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1866:20:1866:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1866:29:1866:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1866:29:1866:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:20:1867:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1867:20:1867:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:20:1867:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:29:1867:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1867:29:1867:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1873:26:1873:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1873:26:1873:34 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1873:37:1873:39 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1873:48:1876:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1874:13:1874:16 | self | | file://:0:0:0:0 | & | -| main.rs:1874:13:1874:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1874:13:1874:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1874:13:1874:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1874:23:1874:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1874:23:1874:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1875:13:1875:16 | self | | file://:0:0:0:0 | & | -| main.rs:1875:13:1875:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1875:13:1875:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1875:13:1875:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1875:23:1875:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1875:23:1875:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1881:18:1881:21 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1881:24:1881:26 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1881:43:1886:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1882:13:1885:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1883:20:1883:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1883:20:1883:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1883:20:1883:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1883:29:1883:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1883:29:1883:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:20:1884:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1884:20:1884:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:20:1884:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1884:29:1884:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1884:29:1884:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1890:25:1890:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1890:25:1890:33 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1890:36:1890:38 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1890:47:1893:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1891:13:1891:16 | self | | file://:0:0:0:0 | & | -| main.rs:1891:13:1891:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1891:13:1891:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1891:13:1891:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1891:23:1891:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1891:23:1891:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1892:13:1892:16 | self | | file://:0:0:0:0 | & | -| main.rs:1892:13:1892:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1892:13:1892:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1892:13:1892:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1892:23:1892:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1892:23:1892:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1898:19:1898:22 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1898:25:1898:27 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1898:44:1903:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1899:13:1902:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1900:20:1900:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1900:20:1900:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1900:20:1900:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1900:29:1900:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1900:29:1900:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:20:1901:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1901:20:1901:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:20:1901:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:29:1901:31 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1901:29:1901:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1907:26:1907:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1907:26:1907:34 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1907:37:1907:39 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1907:48:1910:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1908:13:1908:16 | self | | file://:0:0:0:0 | & | -| main.rs:1908:13:1908:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1908:13:1908:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1908:13:1908:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1908:23:1908:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1908:23:1908:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1909:13:1909:16 | self | | file://:0:0:0:0 | & | -| main.rs:1909:13:1909:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1909:13:1909:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1909:13:1909:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1909:23:1909:25 | rhs | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1909:23:1909:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1915:16:1915:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1915:22:1915:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1915:40:1920:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1916:13:1919:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1917:20:1917:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1917:20:1917:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1917:20:1917:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1917:30:1917:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1918:20:1918:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1918:20:1918:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1918:20:1918:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1918:30:1918:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1924:23:1924:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1924:23:1924:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1924:34:1924:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1924:44:1927:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1925:13:1925:16 | self | | file://:0:0:0:0 | & | -| main.rs:1925:13:1925:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1925:13:1925:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1925:13:1925:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1925:24:1925:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1926:13:1926:16 | self | | file://:0:0:0:0 | & | -| main.rs:1926:13:1926:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1926:13:1926:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1926:13:1926:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1926:24:1926:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1932:16:1932:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1932:22:1932:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1932:40:1937:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1933:13:1936:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1934:20:1934:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1934:20:1934:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1934:20:1934:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1934:30:1934:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1935:20:1935:23 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1935:20:1935:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1935:20:1935:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1935:30:1935:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1941:23:1941:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1941:23:1941:31 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1941:34:1941:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1941:44:1944:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1942:13:1942:16 | self | | file://:0:0:0:0 | & | -| main.rs:1942:13:1942:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1942:13:1942:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1942:13:1942:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1942:24:1942:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1943:13:1943:16 | self | | file://:0:0:0:0 | & | -| main.rs:1943:13:1943:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1943:13:1943:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1943:13:1943:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1943:24:1943:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1949:16:1949:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1949:30:1954:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1950:13:1953:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1951:20:1951:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1951:21:1951:24 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1951:21:1951:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:20:1952:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1952:21:1952:24 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1952:21:1952:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1959:16:1959:19 | SelfParam | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1959:30:1964:9 | { ... } | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1960:13:1963:13 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1961:20:1961:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1961:21:1961:24 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1961:21:1961:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:20:1962:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1962:21:1962:24 | self | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1962:21:1962:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1968:15:1968:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1968:15:1968:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1968:22:1968:26 | other | | file://:0:0:0:0 | & | -| main.rs:1968:22:1968:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1968:44:1970:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1969:13:1969:16 | self | | file://:0:0:0:0 | & | -| main.rs:1969:13:1969:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1969:13:1969:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:13:1969:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1969:13:1969:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1969:23:1969:27 | other | | file://:0:0:0:0 | & | -| main.rs:1969:23:1969:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1969:23:1969:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:34:1969:37 | self | | file://:0:0:0:0 | & | -| main.rs:1969:34:1969:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1969:34:1969:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1969:34:1969:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1969:44:1969:48 | other | | file://:0:0:0:0 | & | -| main.rs:1969:44:1969:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1969:44:1969:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:15:1972:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1972:15:1972:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1972:22:1972:26 | other | | file://:0:0:0:0 | & | -| main.rs:1972:22:1972:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1972:44:1974:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1741:26:1741:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1741:26:1741:30 | SelfParam | &T | main.rs:1740:9:1744:9 | Self [trait MyTrait] | +| main.rs:1747:26:1747:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1747:26:1747:30 | SelfParam | &T | file://:0:0:0:0 | [] | +| main.rs:1747:26:1747:30 | SelfParam | &T.[T;...] | main.rs:1746:14:1746:23 | T | +| main.rs:1747:39:1749:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1747:39:1749:13 | { ... } | &T | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:20 | self | | file://:0:0:0:0 | & | +| main.rs:1748:17:1748:20 | self | &T | file://:0:0:0:0 | [] | +| main.rs:1748:17:1748:20 | self | &T.[T;...] | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:36 | ... .unwrap() | | file://:0:0:0:0 | & | +| main.rs:1748:17:1748:36 | ... .unwrap() | &T | main.rs:1746:14:1746:23 | T | +| main.rs:1748:26:1748:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1751:31:1753:13 | { ... } | | main.rs:1746:14:1746:23 | T | +| main.rs:1752:17:1752:28 | ...::default(...) | | main.rs:1746:14:1746:23 | T | +| main.rs:1756:13:1756:13 | x | | file://:0:0:0:0 | & | +| main.rs:1756:13:1756:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1756:17:1756:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:37 | ... .my_method() | | file://:0:0:0:0 | & | +| main.rs:1756:17:1756:37 | ... .my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:18:1756:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:21:1756:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:24:1756:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:13:1757:13 | x | | file://:0:0:0:0 | & | +| main.rs:1757:13:1757:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:17:1757:47 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1757:17:1757:47 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:22:1757:22 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:37:1757:46 | &... | | file://:0:0:0:0 | & | +| main.rs:1757:37:1757:46 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:1757:37:1757:46 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:38:1757:46 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1757:38:1757:46 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:39:1757:39 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:42:1757:42 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:45:1757:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:24:1758:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1761:26:1761:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1761:26:1761:30 | SelfParam | &T | file://:0:0:0:0 | [] | +| main.rs:1761:26:1761:30 | SelfParam | &T.[T] | main.rs:1760:14:1760:23 | T | +| main.rs:1761:39:1763:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1761:39:1763:13 | { ... } | &T | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:20 | self | | file://:0:0:0:0 | & | +| main.rs:1762:17:1762:20 | self | &T | file://:0:0:0:0 | [] | +| main.rs:1762:17:1762:20 | self | &T.[T] | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1762:17:1762:27 | self.get(...) | T | file://:0:0:0:0 | & | +| main.rs:1762:17:1762:27 | self.get(...) | T.&T | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:36 | ... .unwrap() | | file://:0:0:0:0 | & | +| main.rs:1762:17:1762:36 | ... .unwrap() | &T | main.rs:1760:14:1760:23 | T | +| main.rs:1762:26:1762:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1765:31:1767:13 | { ... } | | main.rs:1760:14:1760:23 | T | +| main.rs:1766:17:1766:28 | ...::default(...) | | main.rs:1760:14:1760:23 | T | +| main.rs:1770:13:1770:13 | s | | file://:0:0:0:0 | & | +| main.rs:1770:13:1770:13 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1770:13:1770:13 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | | file://:0:0:0:0 | & | +| main.rs:1770:25:1770:34 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:1770:25:1770:34 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:1770:25:1770:34 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:26:1770:34 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1770:26:1770:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:27:1770:27 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:30:1770:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:33:1770:33 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:13:1771:13 | x | | file://:0:0:0:0 | & | +| main.rs:1771:13:1771:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:17 | s | | file://:0:0:0:0 | & | +| main.rs:1771:17:1771:17 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1771:17:1771:17 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:29 | s.my_method() | | file://:0:0:0:0 | & | +| main.rs:1771:17:1771:29 | s.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:13:1772:13 | x | | file://:0:0:0:0 | & | +| main.rs:1772:13:1772:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:17:1772:35 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1772:17:1772:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:34:1772:34 | s | | file://:0:0:0:0 | & | +| main.rs:1772:34:1772:34 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1772:34:1772:34 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:26:1776:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1776:26:1776:30 | SelfParam | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1776:26:1776:30 | SelfParam | &T.0(2) | main.rs:1775:14:1775:23 | T | +| main.rs:1776:26:1776:30 | SelfParam | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:39:1778:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1776:39:1778:13 | { ... } | &T | main.rs:1775:14:1775:23 | T | +| main.rs:1777:17:1777:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1777:17:1777:23 | &... | &T | main.rs:1775:14:1775:23 | T | +| main.rs:1777:18:1777:21 | self | | file://:0:0:0:0 | & | +| main.rs:1777:18:1777:21 | self | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1777:18:1777:21 | self | &T.0(2) | main.rs:1775:14:1775:23 | T | +| main.rs:1777:18:1777:21 | self | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1777:18:1777:23 | self.0 | | main.rs:1775:14:1775:23 | T | +| main.rs:1780:31:1782:13 | { ... } | | main.rs:1775:14:1775:23 | T | +| main.rs:1781:17:1781:28 | ...::default(...) | | main.rs:1775:14:1775:23 | T | +| main.rs:1785:13:1785:13 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1785:13:1785:13 | p | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:13:1785:13 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:1785:17:1785:23 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:18:1785:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:22:1785:22 | 7 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:13:1786:13 | x | | file://:0:0:0:0 | & | +| main.rs:1786:13:1786:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1786:17:1786:17 | p | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:29 | p.my_method() | | file://:0:0:0:0 | & | +| main.rs:1786:17:1786:29 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:13:1787:13 | x | | file://:0:0:0:0 | & | +| main.rs:1787:13:1787:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:17:1787:39 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1787:17:1787:39 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | | file://:0:0:0:0 | & | +| main.rs:1787:37:1787:38 | &p | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1787:37:1787:38 | &p | &T.0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1787:38:1787:38 | p | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1791:26:1791:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1791:26:1791:30 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1791:26:1791:30 | SelfParam | &T.&T | main.rs:1790:14:1790:23 | T | +| main.rs:1791:39:1793:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1791:39:1793:13 | { ... } | &T | main.rs:1790:14:1790:23 | T | +| main.rs:1792:17:1792:21 | * ... | | file://:0:0:0:0 | & | +| main.rs:1792:17:1792:21 | * ... | &T | main.rs:1790:14:1790:23 | T | +| main.rs:1792:18:1792:21 | self | | file://:0:0:0:0 | & | +| main.rs:1792:18:1792:21 | self | &T | file://:0:0:0:0 | & | +| main.rs:1792:18:1792:21 | self | &T.&T | main.rs:1790:14:1790:23 | T | +| main.rs:1795:31:1797:13 | { ... } | | main.rs:1790:14:1790:23 | T | +| main.rs:1796:17:1796:28 | ...::default(...) | | main.rs:1790:14:1790:23 | T | +| main.rs:1800:13:1800:13 | r | | file://:0:0:0:0 | & | +| main.rs:1800:13:1800:13 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:17:1800:19 | &42 | | file://:0:0:0:0 | & | +| main.rs:1800:17:1800:19 | &42 | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:18:1800:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:13:1801:13 | x | | file://:0:0:0:0 | & | +| main.rs:1801:13:1801:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:17 | r | | file://:0:0:0:0 | & | +| main.rs:1801:17:1801:17 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:29 | r.my_method() | | file://:0:0:0:0 | & | +| main.rs:1801:17:1801:29 | r.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:13:1802:13 | x | | file://:0:0:0:0 | & | +| main.rs:1802:13:1802:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:17:1802:35 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1802:17:1802:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:33:1802:34 | &r | | file://:0:0:0:0 | & | +| main.rs:1802:33:1802:34 | &r | &T | file://:0:0:0:0 | & | +| main.rs:1802:33:1802:34 | &r | &T.&T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:34:1802:34 | r | | file://:0:0:0:0 | & | +| main.rs:1802:34:1802:34 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1806:26:1806:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1806:26:1806:30 | SelfParam | &T | file://:0:0:0:0 | * | +| main.rs:1806:26:1806:30 | SelfParam | &T.*T | main.rs:1805:14:1805:23 | T | +| main.rs:1806:39:1808:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1806:39:1808:13 | { ... } | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:17:1807:34 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1807:17:1807:34 | { ... } | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:26:1807:32 | &... | | file://:0:0:0:0 | & | +| main.rs:1807:26:1807:32 | &... | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:27:1807:32 | * ... | | main.rs:1805:14:1805:23 | T | +| main.rs:1807:28:1807:32 | * ... | | file://:0:0:0:0 | * | +| main.rs:1807:28:1807:32 | * ... | *T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:29:1807:32 | self | | file://:0:0:0:0 | & | +| main.rs:1807:29:1807:32 | self | &T | file://:0:0:0:0 | * | +| main.rs:1807:29:1807:32 | self | &T.*T | main.rs:1805:14:1805:23 | T | +| main.rs:1810:31:1812:13 | { ... } | | main.rs:1805:14:1805:23 | T | +| main.rs:1811:17:1811:28 | ...::default(...) | | main.rs:1805:14:1805:23 | T | +| main.rs:1815:17:1815:17 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1815:21:1815:22 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:13:1816:13 | p | | file://:0:0:0:0 | * | +| main.rs:1816:13:1816:13 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:27:1816:32 | &mut v | | file://:0:0:0:0 | & | +| main.rs:1816:27:1816:32 | &mut v | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:32:1816:32 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:13:1817:13 | x | | file://:0:0:0:0 | & | +| main.rs:1817:13:1817:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:17:1817:40 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1817:17:1817:40 | { ... } | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:26 | p | | file://:0:0:0:0 | * | +| main.rs:1817:26:1817:26 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:38 | p.my_method() | | file://:0:0:0:0 | & | +| main.rs:1817:26:1817:38 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:13:1818:13 | x | | file://:0:0:0:0 | & | +| main.rs:1818:13:1818:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:17:1818:50 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1818:17:1818:50 | { ... } | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:26:1818:48 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1818:26:1818:48 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:46:1818:47 | &p | | file://:0:0:0:0 | & | +| main.rs:1818:46:1818:47 | &p | &T | file://:0:0:0:0 | * | +| main.rs:1818:46:1818:47 | &p | &T.*T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:47:1818:47 | p | | file://:0:0:0:0 | * | +| main.rs:1818:47:1818:47 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1825:16:1837:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1826:13:1826:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:17:1826:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:17:1826:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1826:25:1826:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:13:1827:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:17:1827:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:17:1827:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1827:25:1827:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1829:17:1829:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1830:13:1830:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1830:20:1830:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1830:20:1830:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1830:26:1830:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1831:9:1835:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | +| main.rs:1831:12:1831:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1831:17:1833:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1832:17:1832:17 | z | | file://:0:0:0:0 | () | +| main.rs:1832:21:1832:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1832:22:1832:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1832:22:1832:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1832:26:1832:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1833:16:1835:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1834:13:1834:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1834:13:1834:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1834:17:1834:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1836:9:1836:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1850:30:1852:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1851:13:1851:31 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1851:23:1851:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1851:29:1851:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1858:16:1858:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1858:22:1858:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1858:41:1863:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1859:13:1862:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:20:1860:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:20:1860:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:20:1860:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1860:29:1860:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1860:29:1860:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:20:1861:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1861:20:1861:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:20:1861:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1861:29:1861:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1861:29:1861:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1868:23:1868:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1868:23:1868:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1868:34:1868:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1868:45:1871:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1869:13:1869:16 | self | | file://:0:0:0:0 | & | +| main.rs:1869:13:1869:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1869:13:1869:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1869:13:1869:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1869:23:1869:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1869:23:1869:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:13:1870:16 | self | | file://:0:0:0:0 | & | +| main.rs:1870:13:1870:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1870:13:1870:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1870:13:1870:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1870:23:1870:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1870:23:1870:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1876:16:1876:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1876:22:1876:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1876:41:1881:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1877:13:1880:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:20:1878:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:20:1878:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1878:20:1878:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1878:29:1878:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1878:29:1878:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:20:1879:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1879:20:1879:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:20:1879:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1879:29:1879:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1879:29:1879:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1886:23:1886:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1886:23:1886:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1886:34:1886:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1886:45:1889:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1887:13:1887:16 | self | | file://:0:0:0:0 | & | +| main.rs:1887:13:1887:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1887:13:1887:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1887:13:1887:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1887:23:1887:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1887:23:1887:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:13:1888:16 | self | | file://:0:0:0:0 | & | +| main.rs:1888:13:1888:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1888:13:1888:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:13:1888:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1888:23:1888:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1888:23:1888:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:16:1894:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1894:22:1894:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1894:41:1899:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1895:13:1898:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:20:1896:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:20:1896:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:20:1896:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1896:29:1896:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1896:29:1896:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:20:1897:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1897:20:1897:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:20:1897:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1897:29:1897:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1897:29:1897:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:23:1903:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1903:23:1903:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1903:34:1903:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1903:45:1906:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1904:13:1904:16 | self | | file://:0:0:0:0 | & | +| main.rs:1904:13:1904:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1904:13:1904:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:13:1904:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1904:23:1904:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1904:23:1904:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:13:1905:16 | self | | file://:0:0:0:0 | & | +| main.rs:1905:13:1905:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1905:13:1905:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:13:1905:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1905:23:1905:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1905:23:1905:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1911:16:1911:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1911:22:1911:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1911:41:1916:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1912:13:1915:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:20:1913:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:20:1913:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:20:1913:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:29:1913:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1913:29:1913:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:20:1914:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1914:20:1914:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:20:1914:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:29:1914:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1914:29:1914:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1920:23:1920:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1920:23:1920:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1920:34:1920:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1920:45:1923:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1921:13:1921:16 | self | | file://:0:0:0:0 | & | +| main.rs:1921:13:1921:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1921:13:1921:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1921:23:1921:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1921:23:1921:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:13:1922:16 | self | | file://:0:0:0:0 | & | +| main.rs:1922:13:1922:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1922:13:1922:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1922:13:1922:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1922:23:1922:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1922:23:1922:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1928:16:1928:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1928:22:1928:24 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1928:41:1933:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1929:13:1932:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:20:1930:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:20:1930:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:20:1930:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1930:29:1930:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1930:29:1930:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:20:1931:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1931:20:1931:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:20:1931:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1931:29:1931:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1931:29:1931:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1937:23:1937:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1937:23:1937:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1937:34:1937:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1937:45:1940:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1938:13:1938:16 | self | | file://:0:0:0:0 | & | +| main.rs:1938:13:1938:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1938:13:1938:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1938:13:1938:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1938:23:1938:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1938:23:1938:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:13:1939:16 | self | | file://:0:0:0:0 | & | +| main.rs:1939:13:1939:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1939:13:1939:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1939:13:1939:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1939:23:1939:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1939:23:1939:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1945:19:1945:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1945:25:1945:27 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1945:44:1950:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1946:13:1949:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:20:1947:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:20:1947:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:20:1947:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1947:29:1947:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1947:29:1947:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:20:1948:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1948:20:1948:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:20:1948:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1948:29:1948:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1948:29:1948:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1954:26:1954:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1954:26:1954:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1954:37:1954:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1954:48:1957:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1955:13:1955:16 | self | | file://:0:0:0:0 | & | +| main.rs:1955:13:1955:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1955:13:1955:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1955:13:1955:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1955:23:1955:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1955:23:1955:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:13:1956:16 | self | | file://:0:0:0:0 | & | +| main.rs:1956:13:1956:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1956:13:1956:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1956:13:1956:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1956:23:1956:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1956:23:1956:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1962:18:1962:21 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1962:24:1962:26 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1962:43:1967:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1963:13:1966:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:20:1964:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:20:1964:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:20:1964:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1964:29:1964:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1964:29:1964:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:20:1965:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1965:20:1965:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:20:1965:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1965:29:1965:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1965:29:1965:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1971:25:1971:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1971:25:1971:33 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1971:36:1971:38 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1971:47:1974:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1972:13:1972:16 | self | | file://:0:0:0:0 | & | +| main.rs:1972:13:1972:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1972:13:1972:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1972:13:1972:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1972:23:1972:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1972:23:1972:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1973:13:1973:16 | self | | file://:0:0:0:0 | & | -| main.rs:1973:13:1973:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1973:13:1973:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:13:1973:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1973:13:1973:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1973:23:1973:27 | other | | file://:0:0:0:0 | & | -| main.rs:1973:23:1973:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1973:23:1973:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:34:1973:37 | self | | file://:0:0:0:0 | & | -| main.rs:1973:34:1973:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1973:34:1973:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:34:1973:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1973:44:1973:48 | other | | file://:0:0:0:0 | & | -| main.rs:1973:44:1973:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1973:44:1973:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1978:24:1978:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1978:24:1978:28 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1978:31:1978:35 | other | | file://:0:0:0:0 | & | -| main.rs:1978:31:1978:35 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1978:75:1980:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1978:75:1980:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1979:13:1979:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:13:1979:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1979:13:1979:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1979:14:1979:17 | self | | file://:0:0:0:0 | & | -| main.rs:1979:14:1979:17 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1979:14:1979:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:14:1979:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:23:1979:26 | self | | file://:0:0:0:0 | & | -| main.rs:1979:23:1979:26 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1979:23:1979:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:43:1979:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1979:43:1979:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:44:1979:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:45:1979:49 | other | | file://:0:0:0:0 | & | -| main.rs:1979:45:1979:49 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1979:45:1979:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:45:1979:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1979:55:1979:59 | other | | file://:0:0:0:0 | & | -| main.rs:1979:55:1979:59 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1979:55:1979:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1982:15:1982:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1982:15:1982:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1982:22:1982:26 | other | | file://:0:0:0:0 | & | -| main.rs:1982:22:1982:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1982:44:1984:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:13:1983:16 | self | | file://:0:0:0:0 | & | -| main.rs:1983:13:1983:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1983:13:1983:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:13:1983:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:13:1983:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:22:1983:26 | other | | file://:0:0:0:0 | & | -| main.rs:1983:22:1983:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1983:22:1983:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:33:1983:36 | self | | file://:0:0:0:0 | & | -| main.rs:1983:33:1983:36 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1983:33:1983:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1983:33:1983:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1983:42:1983:46 | other | | file://:0:0:0:0 | & | -| main.rs:1983:42:1983:46 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1983:42:1983:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1986:15:1986:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1986:15:1986:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1986:22:1986:26 | other | | file://:0:0:0:0 | & | -| main.rs:1986:22:1986:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1986:44:1988:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1987:13:1987:16 | self | | file://:0:0:0:0 | & | -| main.rs:1987:13:1987:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1987:13:1987:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:13:1987:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1987:13:1987:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1987:23:1987:27 | other | | file://:0:0:0:0 | & | -| main.rs:1987:23:1987:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1987:23:1987:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:34:1987:37 | self | | file://:0:0:0:0 | & | -| main.rs:1987:34:1987:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1987:34:1987:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1987:34:1987:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1987:44:1987:48 | other | | file://:0:0:0:0 | & | -| main.rs:1987:44:1987:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1987:44:1987:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:15:1990:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1990:15:1990:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1990:22:1990:26 | other | | file://:0:0:0:0 | & | -| main.rs:1990:22:1990:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1990:44:1992:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1991:13:1991:16 | self | | file://:0:0:0:0 | & | -| main.rs:1991:13:1991:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1991:13:1991:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:13:1991:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1991:13:1991:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1991:22:1991:26 | other | | file://:0:0:0:0 | & | -| main.rs:1991:22:1991:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1991:22:1991:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:33:1991:36 | self | | file://:0:0:0:0 | & | -| main.rs:1991:33:1991:36 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1991:33:1991:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1991:33:1991:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1991:42:1991:46 | other | | file://:0:0:0:0 | & | -| main.rs:1991:42:1991:46 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1991:42:1991:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1994:15:1994:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1994:15:1994:19 | SelfParam | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1994:22:1994:26 | other | | file://:0:0:0:0 | & | -| main.rs:1994:22:1994:26 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1994:44:1996:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1995:13:1995:16 | self | | file://:0:0:0:0 | & | -| main.rs:1995:13:1995:16 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1995:13:1995:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:13:1995:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1995:13:1995:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1995:23:1995:27 | other | | file://:0:0:0:0 | & | -| main.rs:1995:23:1995:27 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1995:23:1995:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:34:1995:37 | self | | file://:0:0:0:0 | & | -| main.rs:1995:34:1995:37 | self | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1995:34:1995:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1995:34:1995:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1995:44:1995:48 | other | | file://:0:0:0:0 | & | -| main.rs:1995:44:1995:48 | other | &T | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:1995:44:1995:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1999:26:1999:26 | a | | main.rs:1999:18:1999:23 | T | -| main.rs:1999:32:1999:32 | b | | main.rs:1999:18:1999:23 | T | -| main.rs:1999:51:2001:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2000:9:2000:9 | a | | main.rs:1999:18:1999:23 | T | -| main.rs:2000:9:2000:13 | ... + ... | | {EXTERNAL LOCATION} | Output | -| main.rs:2000:13:2000:13 | b | | main.rs:1999:18:1999:23 | T | -| main.rs:2003:16:2134:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2007:13:2007:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:22:2007:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:23:2007:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:23:2007:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2007:31:2007:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2008:13:2008:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2008:22:2008:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2008:23:2008:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2008:23:2008:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2008:31:2008:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2009:13:2009:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2009:22:2009:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2009:23:2009:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2009:23:2009:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2009:30:2009:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:13:2010:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2010:22:2010:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2010:23:2010:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2010:23:2010:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2010:31:2010:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:13:2011:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2011:22:2011:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2011:23:2011:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2011:23:2011:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2011:30:2011:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:13:2012:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2012:22:2012:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2012:23:2012:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2012:23:2012:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2012:32:2012:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2015:13:2015:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:2015:23:2015:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2015:23:2015:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2015:31:2015:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2016:13:2016:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:2016:23:2016:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2016:23:2016:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2016:31:2016:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:13:2017:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:23:2017:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:23:2017:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2017:31:2017:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:13:2018:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:23:2018:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:23:2018:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2018:31:2018:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2019:13:2019:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:2019:23:2019:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2019:23:2019:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2019:31:2019:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:39:2020:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2020:45:2020:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:17:2023:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:34:2023:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:9:2024:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2024:27:2024:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:17:2026:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2026:34:2026:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2027:9:2027:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2027:27:2027:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:17:2029:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2029:34:2029:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2030:9:2030:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2030:27:2030:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:17:2032:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2032:34:2032:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:9:2033:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2033:9:2033:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2033:27:2033:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2035:17:2035:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2035:34:2035:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:9:2036:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2036:9:2036:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2036:27:2036:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2039:13:2039:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:2039:26:2039:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2039:26:2039:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2039:34:2039:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:13:2040:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:25:2040:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:25:2040:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2040:33:2040:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2041:13:2041:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:2041:26:2041:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2041:26:2041:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2041:34:2041:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2042:13:2042:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:2042:23:2042:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2042:23:2042:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2042:32:2042:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2043:13:2043:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:2043:23:2043:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2043:23:2043:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2043:32:2043:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2046:17:2046:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2046:37:2046:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2047:9:2047:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2047:9:2047:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2047:30:2047:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2049:17:2049:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2049:36:2049:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2050:9:2050:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2050:9:2050:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2050:29:2050:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2052:17:2052:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2052:37:2052:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2053:9:2053:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2053:9:2053:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2053:30:2053:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2055:17:2055:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2055:34:2055:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2056:9:2056:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2056:9:2056:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2056:28:2056:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2058:17:2058:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2058:34:2058:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2059:9:2059:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2059:9:2059:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2059:28:2059:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2061:13:2061:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:2061:23:2061:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2061:24:2061:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2062:13:2062:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:2062:23:2062:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2062:24:2062:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2065:13:2065:14 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2065:18:2065:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2065:28:2065:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2065:34:2065:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:13:2066:14 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2066:18:2066:36 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2066:28:2066:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2066:34:2066:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2069:13:2069:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:2069:23:2069:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2069:23:2069:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2069:29:2069:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2070:13:2070:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:2070:23:2070:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2070:23:2070:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2070:29:2070:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2071:13:2071:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:2071:23:2071:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2071:23:2071:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2071:28:2071:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2072:13:2072:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:2072:23:2072:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2072:23:2072:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2072:29:2072:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2073:13:2073:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:2073:23:2073:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2073:23:2073:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2073:28:2073:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2074:13:2074:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:2074:23:2074:24 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2074:23:2074:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2074:29:2074:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2077:13:2077:20 | vec2_add | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2077:24:2077:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2077:24:2077:30 | ... + ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2077:29:2077:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2078:13:2078:20 | vec2_sub | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2078:24:2078:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2078:24:2078:30 | ... - ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2078:29:2078:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2079:13:2079:20 | vec2_mul | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2079:24:2079:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2079:24:2079:30 | ... * ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2079:29:2079:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2080:13:2080:20 | vec2_div | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2080:24:2080:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2080:24:2080:30 | ... / ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2080:29:2080:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2081:13:2081:20 | vec2_rem | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2081:24:2081:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2081:24:2081:30 | ... % ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2081:29:2081:30 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2084:17:2084:31 | vec2_add_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2084:35:2084:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2085:9:2085:23 | vec2_add_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2085:9:2085:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2085:28:2085:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2087:17:2087:31 | vec2_sub_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2087:35:2087:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2088:9:2088:23 | vec2_sub_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2088:9:2088:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:2088:28:2088:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2090:17:2090:31 | vec2_mul_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2090:35:2090:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2091:9:2091:23 | vec2_mul_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2091:9:2091:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:2091:28:2091:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2093:17:2093:31 | vec2_div_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2093:35:2093:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2094:9:2094:23 | vec2_div_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2094:9:2094:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:2094:28:2094:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2096:17:2096:31 | vec2_rem_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2096:35:2096:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2097:9:2097:23 | vec2_rem_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2097:9:2097:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:2097:28:2097:29 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2100:13:2100:23 | vec2_bitand | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2100:27:2100:28 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2100:27:2100:33 | ... & ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2100:32:2100:33 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2101:13:2101:22 | vec2_bitor | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2101:26:2101:27 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2101:26:2101:32 | ... \| ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2101:31:2101:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2102:13:2102:23 | vec2_bitxor | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2102:27:2102:28 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2102:27:2102:33 | ... ^ ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2102:32:2102:33 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2103:13:2103:20 | vec2_shl | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2103:24:2103:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2103:24:2103:33 | ... << ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2103:30:2103:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2104:13:2104:20 | vec2_shr | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2104:24:2104:25 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2104:24:2104:33 | ... >> ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2104:30:2104:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2107:17:2107:34 | vec2_bitand_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2107:38:2107:39 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2108:9:2108:26 | vec2_bitand_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2108:9:2108:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:2108:31:2108:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2110:17:2110:33 | vec2_bitor_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2110:37:2110:38 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2111:9:2111:25 | vec2_bitor_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2111:9:2111:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:2111:30:2111:31 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2113:17:2113:34 | vec2_bitxor_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2113:38:2113:39 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2114:9:2114:26 | vec2_bitxor_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2114:9:2114:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:2114:31:2114:32 | v2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2116:17:2116:31 | vec2_shl_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2116:35:2116:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2117:9:2117:23 | vec2_shl_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2117:9:2117:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:2117:29:2117:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2119:17:2119:31 | vec2_shr_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2119:35:2119:36 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2120:9:2120:23 | vec2_shr_assign | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2120:9:2120:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:2120:29:2120:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2123:13:2123:20 | vec2_neg | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2123:24:2123:26 | - ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2123:25:2123:26 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2124:13:2124:20 | vec2_not | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2124:24:2124:26 | ! ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2124:25:2124:26 | v1 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2127:13:2127:24 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2127:28:2127:45 | ...::default(...) | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2128:13:2128:26 | vec2_zero_plus | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2128:30:2128:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2128:30:2128:63 | ... + ... | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2128:40:2128:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2128:46:2128:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2128:52:2128:63 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2132:13:2132:24 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2132:28:2132:45 | ...::default(...) | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2133:13:2133:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:2133:30:2133:48 | Vec2 {...} | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2133:30:2133:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2133:40:2133:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2133:46:2133:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2133:53:2133:64 | default_vec2 | | main.rs:1762:5:1767:5 | Vec2 | -| main.rs:2143:18:2143:21 | SelfParam | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2143:24:2143:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2146:25:2148:5 | { ... } | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2147:9:2147:10 | S1 | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2150:41:2152:5 | { ... } | | main.rs:2150:16:2150:39 | impl ... | -| main.rs:2151:9:2151:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2151:9:2151:20 | { ... } | Output | main.rs:2140:5:2140:14 | S1 | -| main.rs:2151:17:2151:18 | S1 | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2154:41:2156:5 | { ... } | | main.rs:2154:16:2154:39 | impl ... | -| main.rs:2155:9:2155:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2155:9:2155:16 | { ... } | Output | file://:0:0:0:0 | () | -| main.rs:2164:13:2164:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2164:13:2164:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:2164:13:2164:42 | SelfParam | Ptr.&T | main.rs:2158:5:2158:14 | S2 | -| main.rs:2165:13:2165:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:2165:13:2165:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:2166:44:2168:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:2166:44:2168:9 | { ... } | T | main.rs:2140:5:2140:14 | S1 | -| main.rs:2167:13:2167:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:2167:13:2167:38 | ...::Ready(...) | T | main.rs:2140:5:2140:14 | S1 | -| main.rs:2167:36:2167:37 | S1 | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2171:41:2173:5 | { ... } | | main.rs:2171:16:2171:39 | impl ... | -| main.rs:2172:9:2172:10 | S2 | | main.rs:2158:5:2158:14 | S2 | -| main.rs:2172:9:2172:10 | S2 | | main.rs:2171:16:2171:39 | impl ... | -| main.rs:2175:22:2183:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2176:9:2176:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2176:9:2176:12 | f1(...) | Output | main.rs:2140:5:2140:14 | S1 | -| main.rs:2176:9:2176:18 | await ... | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2176:9:2176:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2177:9:2177:12 | f2(...) | | main.rs:2150:16:2150:39 | impl ... | -| main.rs:2177:9:2177:18 | await ... | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2177:9:2177:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2178:9:2178:12 | f3(...) | | main.rs:2154:16:2154:39 | impl ... | -| main.rs:2178:9:2178:18 | await ... | | file://:0:0:0:0 | () | -| main.rs:2179:9:2179:12 | f4(...) | | main.rs:2171:16:2171:39 | impl ... | -| main.rs:2179:9:2179:18 | await ... | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2179:9:2179:22 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2180:9:2180:10 | S2 | | main.rs:2158:5:2158:14 | S2 | -| main.rs:2180:9:2180:16 | await S2 | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2180:9:2180:20 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2181:13:2181:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2181:13:2181:13 | b | Output | main.rs:2140:5:2140:14 | S1 | -| main.rs:2181:17:2181:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2181:17:2181:28 | { ... } | Output | main.rs:2140:5:2140:14 | S1 | -| main.rs:2181:25:2181:26 | S1 | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2182:9:2182:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2182:9:2182:9 | b | Output | main.rs:2140:5:2140:14 | S1 | -| main.rs:2182:9:2182:15 | await b | | main.rs:2140:5:2140:14 | S1 | -| main.rs:2182:9:2182:19 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2193:15:2193:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2193:15:2193:19 | SelfParam | &T | main.rs:2192:5:2194:5 | Self [trait Trait1] | -| main.rs:2193:22:2193:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2197:15:2197:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2197:15:2197:19 | SelfParam | &T | main.rs:2196:5:2198:5 | Self [trait Trait2] | -| main.rs:2197:22:2197:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2201:15:2201:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2201:15:2201:19 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | -| main.rs:2201:22:2201:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2205:15:2205:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2205:15:2205:19 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | -| main.rs:2205:22:2205:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2208:37:2210:5 | { ... } | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2209:9:2209:10 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2209:9:2209:10 | S1 | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2213:18:2213:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2213:18:2213:22 | SelfParam | &T | main.rs:2212:5:2214:5 | Self [trait MyTrait] | -| main.rs:2217:18:2217:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2217:18:2217:22 | SelfParam | &T | main.rs:2187:5:2188:14 | S1 | -| main.rs:2217:31:2219:9 | { ... } | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2218:13:2218:14 | S2 | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2223:18:2223:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2223:18:2223:22 | SelfParam | &T | main.rs:2190:5:2190:22 | S3 | -| main.rs:2223:18:2223:22 | SelfParam | &T.T3 | main.rs:2222:10:2222:17 | T | -| main.rs:2223:30:2226:9 | { ... } | | main.rs:2222:10:2222:17 | T | -| main.rs:2224:17:2224:21 | S3(...) | | file://:0:0:0:0 | & | -| main.rs:2224:17:2224:21 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2224:17:2224:21 | S3(...) | &T | main.rs:2190:5:2190:22 | S3 | -| main.rs:2224:17:2224:21 | S3(...) | &T.T3 | main.rs:2222:10:2222:17 | T | -| main.rs:2224:25:2224:28 | self | | file://:0:0:0:0 | & | -| main.rs:2224:25:2224:28 | self | &T | main.rs:2190:5:2190:22 | S3 | -| main.rs:2224:25:2224:28 | self | &T.T3 | main.rs:2222:10:2222:17 | T | -| main.rs:2225:13:2225:21 | t.clone() | | main.rs:2222:10:2222:17 | T | -| main.rs:2229:45:2231:5 | { ... } | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2230:9:2230:10 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2230:9:2230:10 | S1 | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2233:41:2233:41 | t | | main.rs:2233:26:2233:38 | B | -| main.rs:2233:52:2235:5 | { ... } | | main.rs:2233:23:2233:23 | A | -| main.rs:2234:9:2234:9 | t | | main.rs:2233:26:2233:38 | B | -| main.rs:2234:9:2234:17 | t.get_a() | | main.rs:2233:23:2233:23 | A | -| main.rs:2237:34:2237:34 | x | | main.rs:2237:24:2237:31 | T | -| main.rs:2237:59:2239:5 | { ... } | | main.rs:2237:43:2237:57 | impl ... | -| main.rs:2237:59:2239:5 | { ... } | impl(T) | main.rs:2237:24:2237:31 | T | -| main.rs:2238:9:2238:13 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2238:9:2238:13 | S3(...) | | main.rs:2237:43:2237:57 | impl ... | -| main.rs:2238:9:2238:13 | S3(...) | T3 | main.rs:2237:24:2237:31 | T | -| main.rs:2238:9:2238:13 | S3(...) | impl(T) | main.rs:2237:24:2237:31 | T | -| main.rs:2238:12:2238:12 | x | | main.rs:2237:24:2237:31 | T | -| main.rs:2241:34:2241:34 | x | | main.rs:2241:24:2241:31 | T | -| main.rs:2241:67:2243:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2241:67:2243:5 | { ... } | T | main.rs:2241:50:2241:64 | impl ... | -| main.rs:2241:67:2243:5 | { ... } | T.impl(T) | main.rs:2241:24:2241:31 | T | -| main.rs:2242:9:2242:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2242:9:2242:19 | Some(...) | T | main.rs:2190:5:2190:22 | S3 | -| main.rs:2242:9:2242:19 | Some(...) | T | main.rs:2241:50:2241:64 | impl ... | -| main.rs:2242:9:2242:19 | Some(...) | T.T3 | main.rs:2241:24:2241:31 | T | -| main.rs:2242:9:2242:19 | Some(...) | T.impl(T) | main.rs:2241:24:2241:31 | T | -| main.rs:2242:14:2242:18 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2242:14:2242:18 | S3(...) | T3 | main.rs:2241:24:2241:31 | T | -| main.rs:2242:17:2242:17 | x | | main.rs:2241:24:2241:31 | T | -| main.rs:2245:34:2245:34 | x | | main.rs:2245:24:2245:31 | T | -| main.rs:2245:78:2247:5 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2245:78:2247:5 | { ... } | 0(2) | main.rs:2245:44:2245:58 | impl ... | -| main.rs:2245:78:2247:5 | { ... } | 0(2).impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2245:78:2247:5 | { ... } | 1(2) | main.rs:2245:61:2245:75 | impl ... | -| main.rs:2245:78:2247:5 | { ... } | 1(2).impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2246:9:2246:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2246:9:2246:30 | TupleExpr | 0(2) | main.rs:2190:5:2190:22 | S3 | -| main.rs:2246:9:2246:30 | TupleExpr | 0(2) | main.rs:2245:44:2245:58 | impl ... | -| main.rs:2246:9:2246:30 | TupleExpr | 0(2).T3 | main.rs:2245:24:2245:31 | T | -| main.rs:2246:9:2246:30 | TupleExpr | 0(2).impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2246:9:2246:30 | TupleExpr | 1(2) | main.rs:2190:5:2190:22 | S3 | -| main.rs:2246:9:2246:30 | TupleExpr | 1(2) | main.rs:2245:61:2245:75 | impl ... | -| main.rs:2246:9:2246:30 | TupleExpr | 1(2).T3 | main.rs:2245:24:2245:31 | T | -| main.rs:2246:9:2246:30 | TupleExpr | 1(2).impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2246:10:2246:22 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2246:10:2246:22 | S3(...) | | main.rs:2245:44:2245:58 | impl ... | -| main.rs:2246:10:2246:22 | S3(...) | T3 | main.rs:2245:24:2245:31 | T | -| main.rs:2246:10:2246:22 | S3(...) | impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2246:13:2246:13 | x | | main.rs:2245:24:2245:31 | T | -| main.rs:2246:13:2246:21 | x.clone() | | main.rs:2245:24:2245:31 | T | -| main.rs:2246:25:2246:29 | S3(...) | | main.rs:2190:5:2190:22 | S3 | -| main.rs:2246:25:2246:29 | S3(...) | | main.rs:2245:61:2245:75 | impl ... | -| main.rs:2246:25:2246:29 | S3(...) | T3 | main.rs:2245:24:2245:31 | T | -| main.rs:2246:25:2246:29 | S3(...) | impl(T) | main.rs:2245:24:2245:31 | T | -| main.rs:2246:28:2246:28 | x | | main.rs:2245:24:2245:31 | T | -| main.rs:2249:26:2249:26 | t | | main.rs:2249:29:2249:43 | impl ... | -| main.rs:2249:51:2251:5 | { ... } | | main.rs:2249:23:2249:23 | A | -| main.rs:2250:9:2250:9 | t | | main.rs:2249:29:2249:43 | impl ... | -| main.rs:2250:9:2250:17 | t.get_a() | | main.rs:2249:23:2249:23 | A | -| main.rs:2253:16:2267:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2254:13:2254:13 | x | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2254:17:2254:20 | f1(...) | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2255:9:2255:9 | x | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2255:9:2255:14 | x.f1() | | file://:0:0:0:0 | () | -| main.rs:2256:9:2256:9 | x | | main.rs:2208:16:2208:35 | impl ... + ... | -| main.rs:2256:9:2256:14 | x.f2() | | file://:0:0:0:0 | () | -| main.rs:2257:13:2257:13 | a | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2257:17:2257:32 | get_a_my_trait(...) | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2258:13:2258:13 | b | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2258:17:2258:33 | uses_my_trait1(...) | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2258:32:2258:32 | a | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2259:13:2259:13 | a | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2259:17:2259:32 | get_a_my_trait(...) | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2260:13:2260:13 | c | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2260:17:2260:33 | uses_my_trait2(...) | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2260:32:2260:32 | a | | main.rs:2229:28:2229:43 | impl ... | -| main.rs:2261:13:2261:13 | d | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2261:17:2261:34 | uses_my_trait2(...) | | main.rs:2189:5:2189:14 | S2 | -| main.rs:2261:32:2261:33 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2262:13:2262:13 | e | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2262:17:2262:35 | get_a_my_trait2(...) | | main.rs:2237:43:2237:57 | impl ... | -| main.rs:2262:17:2262:35 | get_a_my_trait2(...) | impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2262:17:2262:43 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2262:33:2262:34 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2265:13:2265:13 | f | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | T | main.rs:2241:50:2241:64 | impl ... | -| main.rs:2265:17:2265:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2265:17:2265:44 | ... .unwrap() | | main.rs:2241:50:2241:64 | impl ... | -| main.rs:2265:17:2265:44 | ... .unwrap() | impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2265:17:2265:52 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2265:33:2265:34 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:13:2266:13 | g | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 0(2) | main.rs:2245:44:2245:58 | impl ... | -| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 1(2) | main.rs:2245:61:2245:75 | impl ... | -| main.rs:2266:17:2266:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:17:2266:37 | ... .0 | | main.rs:2245:44:2245:58 | impl ... | -| main.rs:2266:17:2266:37 | ... .0 | impl(T) | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:17:2266:45 | ... .get_a() | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2266:33:2266:34 | S1 | | main.rs:2187:5:2188:14 | S1 | -| main.rs:2277:16:2277:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2277:16:2277:20 | SelfParam | &T | main.rs:2273:5:2274:13 | S | -| main.rs:2277:31:2279:9 | { ... } | | main.rs:2273:5:2274:13 | S | -| main.rs:2278:13:2278:13 | S | | main.rs:2273:5:2274:13 | S | -| main.rs:2288:26:2290:9 | { ... } | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2288:26:2290:9 | { ... } | T | main.rs:2287:10:2287:10 | T | -| main.rs:2289:13:2289:38 | MyVec {...} | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2289:13:2289:38 | MyVec {...} | T | main.rs:2287:10:2287:10 | T | -| main.rs:2289:27:2289:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2289:27:2289:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2289:27:2289:36 | ...::new(...) | T | main.rs:2287:10:2287:10 | T | -| main.rs:2292:17:2292:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2292:17:2292:25 | SelfParam | &T | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2292:17:2292:25 | SelfParam | &T.T | main.rs:2287:10:2287:10 | T | -| main.rs:2292:28:2292:32 | value | | main.rs:2287:10:2287:10 | T | -| main.rs:2292:38:2294:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2293:13:2293:16 | self | | file://:0:0:0:0 | & | -| main.rs:2293:13:2293:16 | self | &T | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2293:13:2293:16 | self | &T.T | main.rs:2287:10:2287:10 | T | -| main.rs:2293:13:2293:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2293:13:2293:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2293:13:2293:21 | self.data | T | main.rs:2287:10:2287:10 | T | -| main.rs:2293:13:2293:33 | ... .push(...) | | file://:0:0:0:0 | () | -| main.rs:2293:28:2293:32 | value | | main.rs:2287:10:2287:10 | T | -| main.rs:2301:18:2301:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2301:18:2301:22 | SelfParam | &T | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2301:18:2301:22 | SelfParam | &T.T | main.rs:2297:10:2297:10 | T | -| main.rs:2301:25:2301:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2301:56:2303:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2301:56:2303:9 | { ... } | &T | main.rs:2297:10:2297:10 | T | -| main.rs:2302:13:2302:29 | &... | | file://:0:0:0:0 | & | -| main.rs:2302:13:2302:29 | &... | &T | main.rs:2297:10:2297:10 | T | -| main.rs:2302:14:2302:17 | self | | file://:0:0:0:0 | & | -| main.rs:2302:14:2302:17 | self | &T | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2302:14:2302:17 | self | &T.T | main.rs:2297:10:2297:10 | T | -| main.rs:2302:14:2302:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2302:14:2302:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2302:14:2302:22 | self.data | T | main.rs:2297:10:2297:10 | T | -| main.rs:2302:14:2302:29 | ...[index] | | main.rs:2297:10:2297:10 | T | -| main.rs:2302:24:2302:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2306:22:2306:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2306:22:2306:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2306:22:2306:26 | slice | &T.[T] | main.rs:2273:5:2274:13 | S | -| main.rs:2306:35:2308:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2307:13:2307:13 | x | | main.rs:2273:5:2274:13 | S | -| main.rs:2307:17:2307:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2307:17:2307:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:2307:17:2307:21 | slice | &T.[T] | main.rs:2273:5:2274:13 | S | -| main.rs:2307:17:2307:24 | slice[0] | | main.rs:2273:5:2274:13 | S | -| main.rs:2307:17:2307:30 | ... .foo() | | main.rs:2273:5:2274:13 | S | -| main.rs:2307:23:2307:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2310:37:2310:37 | a | | main.rs:2310:20:2310:34 | T | -| main.rs:2310:43:2310:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2313:5:2315:5 | { ... } | | {EXTERNAL LOCATION} | Output | -| main.rs:2314:9:2314:9 | a | | main.rs:2310:20:2310:34 | T | -| main.rs:2314:9:2314:12 | a[b] | | {EXTERNAL LOCATION} | Output | -| main.rs:2314:11:2314:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2317:16:2328:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2318:17:2318:19 | vec | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2318:17:2318:19 | vec | T | main.rs:2273:5:2274:13 | S | -| main.rs:2318:23:2318:34 | ...::new(...) | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2318:23:2318:34 | ...::new(...) | T | main.rs:2273:5:2274:13 | S | -| main.rs:2319:9:2319:11 | vec | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2319:9:2319:11 | vec | T | main.rs:2273:5:2274:13 | S | -| main.rs:2319:9:2319:19 | vec.push(...) | | file://:0:0:0:0 | () | -| main.rs:2319:18:2319:18 | S | | main.rs:2273:5:2274:13 | S | -| main.rs:2320:9:2320:11 | vec | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2320:9:2320:11 | vec | T | main.rs:2273:5:2274:13 | S | -| main.rs:2320:9:2320:14 | vec[0] | | main.rs:2273:5:2274:13 | S | -| main.rs:2320:9:2320:20 | ... .foo() | | main.rs:2273:5:2274:13 | S | -| main.rs:2320:13:2320:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2322:13:2322:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:2322:13:2322:14 | xs | [T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2322:21:2322:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2322:26:2322:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2322:26:2322:28 | [...] | [T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2322:27:2322:27 | S | | main.rs:2273:5:2274:13 | S | -| main.rs:2323:13:2323:13 | x | | main.rs:2273:5:2274:13 | S | -| main.rs:2323:17:2323:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:2323:17:2323:18 | xs | [T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2323:17:2323:21 | xs[0] | | main.rs:2273:5:2274:13 | S | -| main.rs:2323:17:2323:27 | ... .foo() | | main.rs:2273:5:2274:13 | S | -| main.rs:2323:20:2323:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2325:29:2325:31 | vec | | main.rs:2282:5:2285:5 | MyVec | -| main.rs:2325:29:2325:31 | vec | T | main.rs:2273:5:2274:13 | S | -| main.rs:2325:34:2325:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2327:9:2327:26 | analyze_slice(...) | | file://:0:0:0:0 | () | -| main.rs:2327:23:2327:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2327:23:2327:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:2327:23:2327:25 | &xs | &T.[T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2327:24:2327:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:2327:24:2327:25 | xs | [T;...] | main.rs:2273:5:2274:13 | S | -| main.rs:2332:16:2334:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2333:13:2333:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2333:17:2333:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2333:25:2333:35 | "Hello, {}" | | file://:0:0:0:0 | & | -| main.rs:2333:25:2333:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2333:25:2333:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2333:25:2333:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2333:25:2333:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2333:38:2333:45 | "World!" | | file://:0:0:0:0 | & | -| main.rs:2333:38:2333:45 | "World!" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2342:19:2342:22 | SelfParam | | main.rs:2338:5:2343:5 | Self [trait MyAdd] | -| main.rs:2342:25:2342:27 | rhs | | main.rs:2338:17:2338:26 | Rhs | -| main.rs:2349:19:2349:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2349:25:2349:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2349:45:2351:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2350:13:2350:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2358:19:2358:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2358:25:2358:29 | value | | file://:0:0:0:0 | & | -| main.rs:2358:25:2358:29 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2358:46:2360:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2359:13:2359:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2359:14:2359:18 | value | | file://:0:0:0:0 | & | -| main.rs:2359:14:2359:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2367:19:2367:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2367:25:2367:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2367:46:2373:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2368:13:2372:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2368:13:2372:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2368:16:2368:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2368:22:2370:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2368:22:2370:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2369:17:2369:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2369:17:2369:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2370:20:2372:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2370:20:2372:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2371:17:2371:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2371:17:2371:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2382:19:2382:22 | SelfParam | | main.rs:2376:5:2376:19 | S | -| main.rs:2382:19:2382:22 | SelfParam | T | main.rs:2378:10:2378:17 | T | -| main.rs:2382:25:2382:29 | other | | main.rs:2376:5:2376:19 | S | -| main.rs:2382:25:2382:29 | other | T | main.rs:2378:10:2378:17 | T | -| main.rs:2382:54:2384:9 | { ... } | | main.rs:2376:5:2376:19 | S | -| main.rs:2382:54:2384:9 | { ... } | T | main.rs:2339:9:2339:20 | Output | -| main.rs:2383:13:2383:39 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2383:13:2383:39 | S(...) | T | main.rs:2339:9:2339:20 | Output | -| main.rs:2383:15:2383:22 | (...) | | main.rs:2378:10:2378:17 | T | -| main.rs:2383:16:2383:19 | self | | main.rs:2376:5:2376:19 | S | -| main.rs:2383:16:2383:19 | self | T | main.rs:2378:10:2378:17 | T | -| main.rs:2383:16:2383:21 | self.0 | | main.rs:2378:10:2378:17 | T | -| main.rs:2383:31:2383:35 | other | | main.rs:2376:5:2376:19 | S | -| main.rs:2383:31:2383:35 | other | T | main.rs:2378:10:2378:17 | T | -| main.rs:2383:31:2383:37 | other.0 | | main.rs:2378:10:2378:17 | T | -| main.rs:2391:19:2391:22 | SelfParam | | main.rs:2376:5:2376:19 | S | -| main.rs:2391:19:2391:22 | SelfParam | T | main.rs:2387:10:2387:17 | T | -| main.rs:2391:25:2391:29 | other | | main.rs:2387:10:2387:17 | T | -| main.rs:2391:51:2393:9 | { ... } | | main.rs:2376:5:2376:19 | S | -| main.rs:2391:51:2393:9 | { ... } | T | main.rs:2339:9:2339:20 | Output | -| main.rs:2392:13:2392:37 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2392:13:2392:37 | S(...) | T | main.rs:2339:9:2339:20 | Output | -| main.rs:2392:15:2392:22 | (...) | | main.rs:2387:10:2387:17 | T | -| main.rs:2392:16:2392:19 | self | | main.rs:2376:5:2376:19 | S | -| main.rs:2392:16:2392:19 | self | T | main.rs:2387:10:2387:17 | T | -| main.rs:2392:16:2392:21 | self.0 | | main.rs:2387:10:2387:17 | T | -| main.rs:2392:31:2392:35 | other | | main.rs:2387:10:2387:17 | T | -| main.rs:2403:19:2403:22 | SelfParam | | main.rs:2376:5:2376:19 | S | -| main.rs:2403:19:2403:22 | SelfParam | T | main.rs:2396:14:2396:14 | T | -| main.rs:2403:25:2403:29 | other | | file://:0:0:0:0 | & | -| main.rs:2403:25:2403:29 | other | &T | main.rs:2396:14:2396:14 | T | -| main.rs:2403:55:2405:9 | { ... } | | main.rs:2376:5:2376:19 | S | -| main.rs:2404:13:2404:37 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2404:15:2404:22 | (...) | | main.rs:2396:14:2396:14 | T | -| main.rs:2404:16:2404:19 | self | | main.rs:2376:5:2376:19 | S | -| main.rs:2404:16:2404:19 | self | T | main.rs:2396:14:2396:14 | T | -| main.rs:2404:16:2404:21 | self.0 | | main.rs:2396:14:2396:14 | T | -| main.rs:2404:31:2404:35 | other | | file://:0:0:0:0 | & | -| main.rs:2404:31:2404:35 | other | &T | main.rs:2396:14:2396:14 | T | -| main.rs:2410:20:2410:24 | value | | main.rs:2408:18:2408:18 | T | -| main.rs:2415:20:2415:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2415:40:2417:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2416:13:2416:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2422:20:2422:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2422:41:2428:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:13:2427:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2423:13:2427:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2423:16:2423:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2423:22:2425:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2423:22:2425:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2424:17:2424:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:17:2424:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2425:20:2427:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2425:20:2427:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2426:17:2426:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2426:17:2426:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2433:21:2433:25 | value | | main.rs:2431:19:2431:19 | T | -| main.rs:2433:31:2433:31 | x | | main.rs:2431:5:2434:5 | Self [trait MyFrom2] | -| main.rs:2438:21:2438:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2438:33:2438:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2438:48:2440:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2439:13:2439:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2445:21:2445:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2445:34:2445:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2445:49:2451:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2446:13:2450:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2446:16:2446:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2446:22:2448:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2447:17:2447:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2448:20:2450:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2449:17:2449:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2456:15:2456:15 | x | | main.rs:2454:5:2460:5 | Self [trait MySelfTrait] | -| main.rs:2459:15:2459:15 | x | | main.rs:2454:5:2460:5 | Self [trait MySelfTrait] | -| main.rs:2464:15:2464:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2464:31:2466:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:13:2465:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:13:2465:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2465:17:2465:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:15:2469:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2469:32:2471:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:13:2470:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:13:2470:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2470:17:2470:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:15:2476:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2476:31:2478:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2477:13:2477:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2477:13:2477:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2481:15:2481:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2481:32:2483:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2482:13:2482:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2486:16:2511:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2487:13:2487:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2487:22:2487:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2487:22:2487:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2488:9:2488:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2488:9:2488:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2488:18:2488:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2489:9:2489:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2489:9:2489:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2489:18:2489:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:2489:18:2489:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2489:19:2489:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2490:9:2490:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2490:9:2490:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2490:18:2490:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2492:9:2492:15 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2492:9:2492:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2492:9:2492:31 | ... .my_add(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2492:11:2492:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2492:24:2492:30 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2492:24:2492:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2492:26:2492:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2493:9:2493:15 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2493:9:2493:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2493:11:2493:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2493:24:2493:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:9:2494:15 | S(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2494:9:2494:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:9:2494:29 | ... .my_add(...) | | main.rs:2376:5:2376:19 | S | -| main.rs:2494:11:2494:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:24:2494:28 | &3i64 | | file://:0:0:0:0 | & | -| main.rs:2494:24:2494:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:2494:25:2494:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2496:13:2496:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2496:17:2496:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2496:30:2496:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2497:13:2497:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2497:17:2497:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2497:30:2497:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2498:13:2498:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2498:22:2498:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2498:38:2498:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2499:9:2499:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2499:23:2499:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2499:30:2499:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2500:9:2500:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2500:23:2500:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2500:29:2500:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2501:9:2501:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | -| main.rs:2501:27:2501:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2501:34:2501:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2503:9:2503:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2503:17:2503:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2504:9:2504:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2504:17:2504:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2505:9:2505:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2505:18:2505:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2506:9:2506:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2506:18:2506:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2507:9:2507:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2507:25:2507:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2508:9:2508:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2508:25:2508:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:9:2509:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2509:25:2509:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2510:9:2510:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2510:25:2510:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2518:26:2520:9 | { ... } | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2519:13:2519:25 | MyCallable {...} | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2522:17:2522:21 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2522:17:2522:21 | SelfParam | &T | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2522:31:2524:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2523:13:2523:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2523:13:2523:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2527:16:2634:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2530:9:2530:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2530:13:2530:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:18:2530:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2530:18:2530:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:19:2530:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:22:2530:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:25:2530:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2530:28:2530:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2531:9:2531:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2531:18:2531:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2531:18:2531:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:18:2531:41 | ... .map(...) | | file://:0:0:0:0 | [] | -| main.rs:2531:19:2531:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:22:2531:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:25:2531:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:32:2531:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2531:32:2531:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | -| main.rs:2531:40:2531:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2531:43:2531:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2532:9:2532:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2532:13:2532:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2532:13:2532:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:18:2532:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2532:18:2532:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:18:2532:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2532:18:2532:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:19:2532:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:22:2532:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:25:2532:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2532:40:2532:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2534:13:2534:17 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2534:13:2534:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:13:2534:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2534:21:2534:31 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2534:21:2534:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:21:2534:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2534:22:2534:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2534:27:2534:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:27:2534:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2534:30:2534:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2534:30:2534:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2535:9:2535:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2535:13:2535:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:13:2535:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2535:18:2535:22 | vals1 | | file://:0:0:0:0 | [] | -| main.rs:2535:18:2535:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2535:18:2535:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2535:24:2535:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2537:13:2537:17 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2537:13:2537:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2537:21:2537:29 | [1u16; 3] | | file://:0:0:0:0 | [] | -| main.rs:2537:21:2537:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2537:22:2537:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2537:28:2537:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2538:9:2538:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2538:13:2538:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2538:18:2538:22 | vals2 | | file://:0:0:0:0 | [] | -| main.rs:2538:18:2538:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2538:24:2538:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2540:13:2540:17 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2540:13:2540:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2540:26:2540:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:31:2540:39 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2540:31:2540:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:31:2540:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2540:32:2540:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:32:2540:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2540:35:2540:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:35:2540:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2540:38:2540:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2540:38:2540:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2541:9:2541:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2541:13:2541:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2541:18:2541:22 | vals3 | | file://:0:0:0:0 | [] | -| main.rs:2541:18:2541:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2541:24:2541:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2543:13:2543:17 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2543:13:2543:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2543:26:2543:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:31:2543:36 | [1; 3] | | file://:0:0:0:0 | [] | -| main.rs:2543:31:2543:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:31:2543:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2543:32:2543:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2543:32:2543:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2543:35:2543:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2544:9:2544:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2544:13:2544:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2544:18:2544:22 | vals4 | | file://:0:0:0:0 | [] | -| main.rs:2544:18:2544:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2544:24:2544:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2546:17:2546:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2546:17:2546:24 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2546:17:2546:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2546:28:2546:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2546:28:2546:48 | [...] | [T;...] | file://:0:0:0:0 | & | -| main.rs:2546:28:2546:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2546:29:2546:33 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2546:29:2546:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2546:36:2546:40 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2546:36:2546:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2546:43:2546:47 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2546:43:2546:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2547:9:2547:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2547:13:2547:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2547:13:2547:13 | s | | file://:0:0:0:0 | & | -| main.rs:2547:13:2547:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2547:13:2547:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:18:2547:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2547:18:2547:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2547:18:2547:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2547:18:2547:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:19:2547:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2547:19:2547:26 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2547:19:2547:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2547:28:2547:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:9:2548:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2548:13:2548:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2548:13:2548:13 | s | | file://:0:0:0:0 | & | -| main.rs:2548:13:2548:13 | s | &T | file://:0:0:0:0 | & | -| main.rs:2548:13:2548:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:18:2548:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2548:18:2548:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2548:18:2548:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | -| main.rs:2548:18:2548:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:23:2548:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2548:23:2548:30 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2548:23:2548:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2548:32:2548:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2549:9:2549:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2549:13:2549:13 | s | | file://:0:0:0:0 | & | -| main.rs:2549:13:2549:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2549:18:2549:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2549:18:2549:25 | strings1 | [T;...] | file://:0:0:0:0 | & | -| main.rs:2549:18:2549:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2549:27:2549:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2551:13:2551:20 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2551:13:2551:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2552:9:2556:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2552:9:2556:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2553:13:2553:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2553:26:2553:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2553:26:2553:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2554:13:2554:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2554:26:2554:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2554:26:2554:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2555:13:2555:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2555:26:2555:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2555:26:2555:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2557:9:2557:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2557:13:2557:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2557:18:2557:25 | strings2 | | file://:0:0:0:0 | [] | -| main.rs:2557:18:2557:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2557:27:2557:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2559:13:2559:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2559:13:2559:20 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2559:13:2559:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2560:9:2564:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2560:9:2564:9 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:2560:9:2564:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2560:10:2564:9 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2560:10:2564:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2561:13:2561:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2561:26:2561:30 | "foo" | | file://:0:0:0:0 | & | -| main.rs:2561:26:2561:30 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2562:13:2562:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2562:26:2562:30 | "bar" | | file://:0:0:0:0 | & | -| main.rs:2562:26:2562:30 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2563:13:2563:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2563:26:2563:30 | "baz" | | file://:0:0:0:0 | & | -| main.rs:2563:26:2563:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2565:9:2565:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2565:13:2565:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2565:13:2565:13 | s | | file://:0:0:0:0 | & | -| main.rs:2565:13:2565:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2565:18:2565:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2565:18:2565:25 | strings3 | &T | file://:0:0:0:0 | [] | -| main.rs:2565:18:2565:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2565:27:2565:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2567:13:2567:21 | callables | | file://:0:0:0:0 | [] | -| main.rs:2567:13:2567:21 | callables | [T;...] | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2567:25:2567:81 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2567:25:2567:81 | [...] | [T;...] | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2567:26:2567:42 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2567:45:2567:61 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2567:64:2567:80 | ...::new(...) | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2568:9:2572:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2568:13:2568:13 | c | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2569:12:2569:20 | callables | | file://:0:0:0:0 | [] | -| main.rs:2569:12:2569:20 | callables | [T;...] | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2570:9:2572:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2571:17:2571:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2571:26:2571:26 | c | | main.rs:2515:5:2515:24 | MyCallable | -| main.rs:2571:26:2571:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2576:9:2576:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2576:13:2576:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2576:13:2576:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:18:2576:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:18:2576:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2576:18:2576:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:21:2576:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:24:2576:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2577:9:2577:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2577:13:2577:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2577:13:2577:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:13:2577:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:18:2577:26 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2577:18:2577:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2577:18:2577:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:18:2577:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:19:2577:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:19:2577:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2577:19:2577:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:19:2577:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:24:2577:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:24:2577:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2577:28:2577:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2578:13:2578:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2578:13:2578:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2578:21:2578:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2578:21:2578:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2578:21:2578:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2578:24:2578:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2579:9:2579:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2579:13:2579:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2579:13:2579:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2579:18:2579:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2579:18:2579:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2579:24:2579:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2580:13:2580:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2580:26:2580:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2581:9:2581:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2581:13:2581:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2581:18:2581:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2581:19:2581:36 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2581:19:2581:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | -| main.rs:2581:20:2581:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2581:26:2581:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2581:32:2581:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2581:38:2581:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2581:50:2581:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2583:13:2583:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2583:13:2583:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2584:9:2587:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2584:9:2587:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2585:20:2585:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2586:18:2586:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2588:9:2588:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2588:13:2588:13 | u | | {EXTERNAL LOCATION} | Item | -| main.rs:2588:13:2588:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2588:18:2588:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2588:18:2588:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2588:25:2588:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2592:26:2592:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:29:2592:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2592:32:2592:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:9:2593:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2593:24:2593:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2595:13:2595:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2595:13:2595:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:13:2595:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2595:32:2595:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2595:32:2595:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:32:2595:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2595:32:2595:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2595:32:2595:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2595:32:2595:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2595:33:2595:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2595:39:2595:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:42:2595:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2596:9:2596:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2596:13:2596:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2596:18:2596:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2596:18:2596:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2596:18:2596:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2596:25:2596:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2598:22:2598:33 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2598:22:2598:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2598:22:2598:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2598:23:2598:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2598:29:2598:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2598:32:2598:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2599:9:2599:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2599:25:2599:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2601:13:2601:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2601:13:2601:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2601:13:2601:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:13:2601:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2601:21:2601:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2601:21:2601:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2601:21:2601:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:21:2601:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2601:31:2601:42 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2601:31:2601:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:31:2601:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2601:32:2601:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2601:38:2601:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2601:41:2601:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:9:2602:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:13:2602:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2602:18:2602:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2602:18:2602:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2602:18:2602:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:18:2602:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2602:24:2602:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2604:13:2604:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2604:13:2604:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2604:13:2604:17 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2604:13:2604:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2604:32:2604:43 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2604:32:2604:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2604:32:2604:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2604:32:2604:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2604:32:2604:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2604:32:2604:60 | ... .collect() | T | file://:0:0:0:0 | & | -| main.rs:2604:32:2604:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2604:33:2604:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2604:39:2604:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2604:42:2604:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2605:9:2605:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2605:13:2605:13 | u | | file://:0:0:0:0 | & | -| main.rs:2605:13:2605:13 | u | &T | {EXTERNAL LOCATION} | u64 | -| main.rs:2605:18:2605:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2605:18:2605:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2605:18:2605:22 | vals6 | T | file://:0:0:0:0 | & | -| main.rs:2605:18:2605:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2605:24:2605:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2607:17:2607:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2607:17:2607:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2607:17:2607:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2607:25:2607:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2607:25:2607:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2607:25:2607:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2608:9:2608:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2608:9:2608:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2608:9:2608:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2608:9:2608:23 | vals7.push(...) | | file://:0:0:0:0 | () | -| main.rs:2608:20:2608:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2609:9:2609:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2609:13:2609:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2609:18:2609:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2609:18:2609:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2609:18:2609:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2609:24:2609:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2611:33:2611:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:36:2611:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:45:2611:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:48:2611:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:13:2613:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2613:17:2616:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2613:36:2616:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2614:13:2615:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2614:29:2615:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2618:17:2618:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2618:17:2618:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:17:2618:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2618:17:2618:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2618:17:2618:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2618:17:2618:20 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2618:17:2618:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2618:24:2618:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2618:24:2618:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:24:2618:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2618:24:2618:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2618:24:2618:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2618:24:2618:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | -| main.rs:2618:24:2618:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2619:9:2619:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2619:9:2619:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:9:2619:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2619:9:2619:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2619:9:2619:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2619:9:2619:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2619:9:2619:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2619:9:2619:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2619:9:2619:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2619:9:2619:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2619:9:2619:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2619:9:2619:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2619:21:2619:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:24:2619:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2619:24:2619:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2619:24:2619:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2619:24:2619:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2619:33:2619:37 | "one" | | file://:0:0:0:0 | & | -| main.rs:2619:33:2619:37 | "one" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2620:9:2620:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2620:9:2620:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2620:9:2620:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2620:9:2620:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2620:9:2620:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2620:9:2620:12 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2620:9:2620:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2620:9:2620:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2620:9:2620:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2620:9:2620:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2620:9:2620:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | -| main.rs:2620:9:2620:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2620:21:2620:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2620:24:2620:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2620:24:2620:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2620:24:2620:38 | ...::new(...) | T | file://:0:0:0:0 | & | -| main.rs:2620:24:2620:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2620:33:2620:37 | "two" | | file://:0:0:0:0 | & | -| main.rs:2620:33:2620:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2621:9:2621:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2621:13:2621:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2621:13:2621:15 | key | | file://:0:0:0:0 | & | -| main.rs:2621:13:2621:15 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:20:2621:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2621:20:2621:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:20:2621:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2621:20:2621:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2621:20:2621:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2621:20:2621:23 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2621:20:2621:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2621:20:2621:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2621:20:2621:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:20:2621:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2621:20:2621:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2621:20:2621:30 | map1.keys() | V.T | file://:0:0:0:0 | & | -| main.rs:2621:20:2621:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2621:32:2621:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2622:9:2622:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2622:13:2622:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2622:13:2622:17 | value | | file://:0:0:0:0 | & | -| main.rs:2622:13:2622:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2622:13:2622:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2622:13:2622:17 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2622:13:2622:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2622:22:2622:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2622:22:2622:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2622:22:2622:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2622:22:2622:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2622:22:2622:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2622:22:2622:25 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2622:22:2622:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2622:22:2622:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2622:22:2622:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2622:22:2622:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2622:22:2622:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2622:22:2622:34 | map1.values() | V.T | file://:0:0:0:0 | & | -| main.rs:2622:22:2622:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2622:36:2622:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2623:9:2623:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2623:13:2623:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2623:13:2623:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2623:13:2623:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2623:13:2623:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2623:13:2623:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2623:14:2623:16 | key | | file://:0:0:0:0 | & | -| main.rs:2623:14:2623:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2623:19:2623:23 | value | | file://:0:0:0:0 | & | -| main.rs:2623:19:2623:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2623:19:2623:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2623:19:2623:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2623:19:2623:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2623:29:2623:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2623:29:2623:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2623:29:2623:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2623:29:2623:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2623:29:2623:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2623:29:2623:32 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2623:29:2623:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2623:29:2623:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2623:29:2623:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2623:29:2623:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2623:29:2623:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2623:29:2623:39 | map1.iter() | V.T | file://:0:0:0:0 | & | -| main.rs:2623:29:2623:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2623:41:2623:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2624:9:2624:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2624:13:2624:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2624:13:2624:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | -| main.rs:2624:13:2624:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:13:2624:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | -| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | -| main.rs:2624:13:2624:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2624:14:2624:16 | key | | file://:0:0:0:0 | & | -| main.rs:2624:14:2624:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:19:2624:23 | value | | file://:0:0:0:0 | & | -| main.rs:2624:19:2624:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2624:19:2624:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2624:19:2624:23 | value | &T.T | file://:0:0:0:0 | & | -| main.rs:2624:19:2624:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2624:29:2624:33 | &map1 | | file://:0:0:0:0 | & | -| main.rs:2624:29:2624:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2624:29:2624:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:29:2624:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2624:29:2624:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2624:29:2624:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2624:29:2624:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | -| main.rs:2624:29:2624:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2624:30:2624:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2624:30:2624:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:30:2624:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2624:30:2624:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2624:30:2624:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2624:30:2624:33 | map1 | V.T | file://:0:0:0:0 | & | -| main.rs:2624:30:2624:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2624:35:2624:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2628:17:2628:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2628:26:2628:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2628:26:2628:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2630:13:2630:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2630:17:2633:9 | while ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2630:23:2630:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2630:23:2630:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2630:27:2630:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2631:9:2633:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2632:13:2632:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2632:13:2632:18 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:2632:18:2632:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2644:40:2646:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2644:40:2646:9 | { ... } | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2644:40:2646:9 | { ... } | T.T | main.rs:2643:10:2643:19 | T | -| main.rs:2645:13:2645:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2645:13:2645:16 | None | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2645:13:2645:16 | None | T.T | main.rs:2643:10:2643:19 | T | -| main.rs:2648:30:2650:9 | { ... } | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2648:30:2650:9 | { ... } | T | main.rs:2643:10:2643:19 | T | -| main.rs:2649:13:2649:28 | S1(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2649:13:2649:28 | S1(...) | T | main.rs:2643:10:2643:19 | T | -| main.rs:2649:16:2649:27 | ...::default(...) | | main.rs:2643:10:2643:19 | T | -| main.rs:2652:19:2652:22 | SelfParam | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2652:19:2652:22 | SelfParam | T | main.rs:2643:10:2643:19 | T | -| main.rs:2652:33:2654:9 | { ... } | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2652:33:2654:9 | { ... } | T | main.rs:2643:10:2643:19 | T | -| main.rs:2653:13:2653:16 | self | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2653:13:2653:16 | self | T | main.rs:2643:10:2643:19 | T | -| main.rs:2665:15:2665:15 | x | | main.rs:2665:12:2665:12 | T | -| main.rs:2665:26:2667:5 | { ... } | | main.rs:2665:12:2665:12 | T | -| main.rs:2666:9:2666:9 | x | | main.rs:2665:12:2665:12 | T | -| main.rs:2669:16:2691:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2670:13:2670:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2670:13:2670:14 | x1 | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2670:13:2670:14 | x1 | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2670:34:2670:48 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2671:13:2671:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2671:13:2671:14 | x2 | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2671:13:2671:14 | x2 | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2671:18:2671:38 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2672:13:2672:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2672:13:2672:14 | x3 | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2672:13:2672:14 | x3 | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | T | main.rs:2638:5:2638:20 | S1 | -| main.rs:2672:18:2672:32 | ...::assoc_fun(...) | T.T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2673:13:2673:14 | x4 | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2673:13:2673:14 | x4 | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2673:18:2673:48 | ...::method(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2673:18:2673:48 | ...::method(...) | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2673:35:2673:47 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2673:35:2673:47 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2674:13:2674:14 | x5 | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2674:13:2674:14 | x5 | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2674:18:2674:42 | ...::method(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2674:18:2674:42 | ...::method(...) | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2674:29:2674:41 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2674:29:2674:41 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2675:13:2675:14 | x6 | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2675:13:2675:14 | x6 | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2675:18:2675:45 | S4::<...>(...) | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2675:18:2675:45 | S4::<...>(...) | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2675:27:2675:44 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2676:13:2676:14 | x7 | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2676:13:2676:14 | x7 | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2676:18:2676:23 | S4(...) | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2676:18:2676:23 | S4(...) | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2676:21:2676:22 | S2 | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2677:13:2677:14 | x8 | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2677:13:2677:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:18:2677:22 | S4(...) | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2677:18:2677:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:21:2677:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2678:13:2678:14 | x9 | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2678:13:2678:14 | x9 | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2678:18:2678:34 | S4(...) | | main.rs:2659:5:2659:27 | S4 | -| main.rs:2678:18:2678:34 | S4(...) | T4 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2678:21:2678:33 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2679:13:2679:15 | x10 | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2679:13:2679:15 | x10 | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2679:19:2682:9 | S5::<...> {...} | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2679:19:2682:9 | S5::<...> {...} | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2681:20:2681:37 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2683:13:2683:15 | x11 | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2683:13:2683:15 | x11 | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2683:19:2683:34 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2683:19:2683:34 | S5 {...} | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2683:31:2683:32 | S2 | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2684:13:2684:15 | x12 | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2684:13:2684:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2684:19:2684:33 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2684:19:2684:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2684:31:2684:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:13:2685:15 | x13 | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2685:13:2685:15 | x13 | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2685:19:2688:9 | S5 {...} | | main.rs:2661:5:2663:5 | S5 | -| main.rs:2685:19:2688:9 | S5 {...} | T5 | main.rs:2640:5:2641:14 | S2 | -| main.rs:2687:20:2687:32 | ...::default(...) | | main.rs:2640:5:2641:14 | S2 | -| main.rs:2689:13:2689:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:19:2689:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:30:2689:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2690:13:2690:15 | x15 | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2690:13:2690:15 | x15 | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2690:19:2690:37 | ...::default(...) | | main.rs:2638:5:2638:20 | S1 | -| main.rs:2690:19:2690:37 | ...::default(...) | T | main.rs:2640:5:2641:14 | S2 | -| main.rs:2699:35:2701:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2699:35:2701:9 | { ... } | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2699:35:2701:9 | { ... } | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2700:13:2700:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2700:13:2700:26 | TupleExpr | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2700:13:2700:26 | TupleExpr | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2700:14:2700:18 | S1 {...} | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2700:21:2700:25 | S1 {...} | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2702:16:2702:19 | SelfParam | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2702:22:2702:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2705:16:2739:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2706:13:2706:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2706:13:2706:13 | a | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2706:13:2706:13 | a | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2706:17:2706:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2706:17:2706:30 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2706:17:2706:30 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2707:17:2707:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2707:17:2707:17 | b | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2707:17:2707:17 | b | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2707:21:2707:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2707:21:2707:34 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2707:21:2707:34 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:13:2708:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2708:13:2708:18 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:13:2708:18 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:14:2708:14 | c | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:17:2708:17 | d | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:22:2708:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2708:22:2708:35 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2708:22:2708:35 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:13:2709:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2709:13:2709:22 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:13:2709:22 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:18:2709:18 | e | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:21:2709:21 | f | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:26:2709:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2709:26:2709:39 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2709:26:2709:39 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:13:2710:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2710:13:2710:26 | TuplePat | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:13:2710:26 | TuplePat | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:18:2710:18 | g | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:25:2710:25 | h | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:30:2710:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2710:30:2710:43 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2710:30:2710:43 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2712:9:2712:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2712:9:2712:9 | a | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2712:9:2712:9 | a | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2712:9:2712:11 | a.0 | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2712:9:2712:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2713:9:2713:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2713:9:2713:9 | b | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2713:9:2713:9 | b | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2713:9:2713:11 | b.1 | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2713:9:2713:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2714:9:2714:9 | c | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2714:9:2714:15 | c.foo() | | file://:0:0:0:0 | () | -| main.rs:2715:9:2715:9 | d | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2715:9:2715:15 | d.foo() | | file://:0:0:0:0 | () | -| main.rs:2716:9:2716:9 | e | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2716:9:2716:15 | e.foo() | | file://:0:0:0:0 | () | -| main.rs:2717:9:2717:9 | f | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2717:9:2717:15 | f.foo() | | file://:0:0:0:0 | () | -| main.rs:2718:9:2718:9 | g | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2718:9:2718:15 | g.foo() | | file://:0:0:0:0 | () | -| main.rs:2719:9:2719:9 | h | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2719:9:2719:15 | h.foo() | | file://:0:0:0:0 | () | -| main.rs:2724:13:2724:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2724:17:2724:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2725:13:2725:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2725:17:2725:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2726:13:2726:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2726:13:2726:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2726:13:2726:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2726:20:2726:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2726:20:2726:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2726:20:2726:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2726:21:2726:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2726:24:2726:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2727:13:2727:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2727:22:2727:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2727:22:2727:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2727:22:2727:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2727:22:2727:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2728:13:2728:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2728:23:2728:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2728:23:2728:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2728:23:2728:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2728:23:2728:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2730:13:2730:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2730:13:2730:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:13:2730:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:20:2730:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2730:20:2730:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:20:2730:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2730:20:2730:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:20:2730:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:21:2730:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2730:24:2730:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2731:9:2734:9 | match pair { ... } | | file://:0:0:0:0 | () | -| main.rs:2731:15:2731:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2731:15:2731:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2731:15:2731:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:13:2732:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2732:13:2732:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:13:2732:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:14:2732:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:17:2732:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2732:23:2732:42 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2732:30:2732:41 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2732:30:2732:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2732:30:2732:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2732:30:2732:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2733:13:2733:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2733:13:2733:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2733:13:2733:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2733:18:2733:35 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2733:25:2733:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2733:25:2733:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2733:25:2733:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2733:25:2733:34 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2735:13:2735:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2735:17:2735:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2735:17:2735:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2737:13:2737:13 | y | | file://:0:0:0:0 | & | -| main.rs:2737:13:2737:13 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2737:13:2737:13 | y | &T.0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2737:13:2737:13 | y | &T.1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2737:17:2737:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2737:17:2737:31 | &... | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2737:17:2737:31 | &... | &T.0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2737:17:2737:31 | &... | &T.1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2737:18:2737:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2737:18:2737:31 | ...::get_pair(...) | 0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2737:18:2737:31 | ...::get_pair(...) | 1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2738:9:2738:9 | y | | file://:0:0:0:0 | & | -| main.rs:2738:9:2738:9 | y | &T | file://:0:0:0:0 | (T_2) | -| main.rs:2738:9:2738:9 | y | &T.0(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2738:9:2738:9 | y | &T.1(2) | main.rs:2695:5:2696:16 | S1 | -| main.rs:2738:9:2738:11 | y.0 | | main.rs:2695:5:2696:16 | S1 | -| main.rs:2738:9:2738:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2744:27:2766:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2745:13:2745:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2745:13:2745:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2745:13:2745:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2745:27:2745:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2745:27:2745:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2745:27:2745:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2745:36:2745:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2748:9:2756:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | -| main.rs:2748:15:2748:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2748:15:2748:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2748:15:2748:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2749:13:2749:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2749:13:2749:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2749:13:2749:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2749:17:2749:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2749:24:2751:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2750:26:2750:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2750:26:2750:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2750:26:2750:36 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2750:26:2750:36 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2752:13:2752:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2752:13:2752:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2752:13:2752:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2752:22:2755:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2754:26:2754:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2754:26:2754:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2754:26:2754:51 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2759:13:2759:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2759:13:2759:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2759:13:2759:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2759:13:2759:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2759:13:2759:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:26:2759:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2759:26:2759:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2759:26:2759:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2759:26:2759:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2759:26:2759:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:35:2759:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2759:35:2759:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2759:35:2759:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2759:44:2759:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2760:9:2765:9 | match nested_box { ... } | | file://:0:0:0:0 | () | -| main.rs:2760:15:2760:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2760:15:2760:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2760:15:2760:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2760:15:2760:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2760:15:2760:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2761:13:2761:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2761:13:2761:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2761:13:2761:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2761:13:2761:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2761:13:2761:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2761:26:2764:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2763:26:2763:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2763:26:2763:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2763:26:2763:59 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2775:36:2777:9 | { ... } | | main.rs:2772:5:2772:22 | Path | -| main.rs:2776:13:2776:19 | Path {...} | | main.rs:2772:5:2772:22 | Path | -| main.rs:2779:29:2779:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2779:29:2779:33 | SelfParam | &T | main.rs:2772:5:2772:22 | Path | -| main.rs:2779:59:2781:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2779:59:2781:9 | { ... } | E | file://:0:0:0:0 | () | -| main.rs:2779:59:2781:9 | { ... } | T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2780:13:2780:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2780:13:2780:30 | Ok(...) | E | file://:0:0:0:0 | () | -| main.rs:2780:13:2780:30 | Ok(...) | T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2780:16:2780:29 | ...::new(...) | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2787:39:2789:9 | { ... } | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2788:13:2788:22 | PathBuf {...} | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2797:18:2797:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2797:18:2797:22 | SelfParam | &T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2797:34:2801:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:2797:34:2801:9 | { ... } | &T | main.rs:2772:5:2772:22 | Path | -| main.rs:2799:33:2799:43 | ...::new(...) | | main.rs:2772:5:2772:22 | Path | -| main.rs:2800:13:2800:17 | &path | | file://:0:0:0:0 | & | -| main.rs:2800:13:2800:17 | &path | &T | main.rs:2772:5:2772:22 | Path | -| main.rs:2800:14:2800:17 | path | | main.rs:2772:5:2772:22 | Path | -| main.rs:2804:16:2812:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2805:13:2805:17 | path1 | | main.rs:2772:5:2772:22 | Path | -| main.rs:2805:21:2805:31 | ...::new(...) | | main.rs:2772:5:2772:22 | Path | -| main.rs:2806:13:2806:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2806:13:2806:17 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2806:13:2806:17 | path2 | T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2806:21:2806:25 | path1 | | main.rs:2772:5:2772:22 | Path | -| main.rs:2806:21:2806:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2806:21:2806:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | -| main.rs:2806:21:2806:40 | path1.canonicalize() | T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2807:13:2807:17 | path3 | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2807:21:2807:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2807:21:2807:25 | path2 | E | file://:0:0:0:0 | () | -| main.rs:2807:21:2807:25 | path2 | T | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2807:21:2807:34 | path2.unwrap() | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2809:13:2809:20 | pathbuf1 | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2809:24:2809:37 | ...::new(...) | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2810:24:2810:31 | pathbuf1 | | main.rs:2784:5:2784:25 | PathBuf | -| main.rs:2817:14:2817:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2817:14:2817:18 | SelfParam | &T | main.rs:2816:5:2818:5 | Self [trait MyTrait] | -| main.rs:2824:14:2824:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2824:14:2824:18 | SelfParam | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2824:14:2824:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2824:28:2826:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:16 | self | | file://:0:0:0:0 | & | -| main.rs:2825:13:2825:16 | self | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2825:13:2825:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2825:13:2825:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2830:14:2830:18 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2830:14:2830:18 | SelfParam | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2830:14:2830:18 | SelfParam | &T.T | main.rs:2820:5:2821:19 | S | -| main.rs:2830:14:2830:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2830:28:2832:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2831:13:2831:16 | self | | file://:0:0:0:0 | & | -| main.rs:2831:13:2831:16 | self | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2831:13:2831:16 | self | &T.T | main.rs:2820:5:2821:19 | S | -| main.rs:2831:13:2831:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2831:13:2831:18 | self.0 | | main.rs:2820:5:2821:19 | S | -| main.rs:2831:13:2831:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2831:13:2831:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2836:15:2836:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2836:15:2836:19 | SelfParam | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2836:15:2836:19 | SelfParam | &T.T | main.rs:2835:10:2835:16 | T | -| main.rs:2836:33:2838:9 | { ... } | | main.rs:2820:5:2821:19 | S | -| main.rs:2836:33:2838:9 | { ... } | T | main.rs:2820:5:2821:19 | S | -| main.rs:2836:33:2838:9 | { ... } | T.T | main.rs:2835:10:2835:16 | T | -| main.rs:2837:13:2837:24 | S(...) | | main.rs:2820:5:2821:19 | S | -| main.rs:2837:13:2837:24 | S(...) | T | main.rs:2820:5:2821:19 | S | -| main.rs:2837:13:2837:24 | S(...) | T.T | main.rs:2835:10:2835:16 | T | -| main.rs:2837:15:2837:23 | S(...) | | main.rs:2820:5:2821:19 | S | -| main.rs:2837:15:2837:23 | S(...) | T | main.rs:2835:10:2835:16 | T | -| main.rs:2837:17:2837:20 | self | | file://:0:0:0:0 | & | -| main.rs:2837:17:2837:20 | self | &T | main.rs:2820:5:2821:19 | S | -| main.rs:2837:17:2837:20 | self | &T.T | main.rs:2835:10:2835:16 | T | -| main.rs:2837:17:2837:22 | self.0 | | main.rs:2835:10:2835:16 | T | -| main.rs:2841:14:2841:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2841:48:2858:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2841:48:2858:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2841:48:2858:5 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2841:48:2858:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:13:2842:13 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2842:13:2842:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:17:2847:9 | if b {...} else {...} | | main.rs:2820:5:2821:19 | S | -| main.rs:2842:17:2847:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:20:2842:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2842:22:2845:9 | { ... } | | main.rs:2820:5:2821:19 | S | -| main.rs:2842:22:2845:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2843:17:2843:17 | y | | main.rs:2820:5:2821:19 | S | -| main.rs:2843:17:2843:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2843:21:2843:38 | ...::default(...) | | main.rs:2820:5:2821:19 | S | -| main.rs:2843:21:2843:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2844:13:2844:13 | y | | main.rs:2820:5:2821:19 | S | -| main.rs:2844:13:2844:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2845:16:2847:9 | { ... } | | main.rs:2820:5:2821:19 | S | -| main.rs:2845:16:2847:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2846:13:2846:16 | S(...) | | main.rs:2820:5:2821:19 | S | -| main.rs:2846:13:2846:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2846:15:2846:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:13:2851:13 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2851:13:2851:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:17:2851:20 | S(...) | | main.rs:2820:5:2821:19 | S | -| main.rs:2851:17:2851:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2851:19:2851:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2852:9:2857:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2852:9:2857:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T | main.rs:2820:5:2821:19 | S | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T | main.rs:2820:5:2821:19 | S | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2852:9:2857:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2852:12:2852:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2852:14:2855:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2852:14:2855:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2852:14:2855:9 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2852:14:2855:9 | { ... } | T | main.rs:2820:5:2821:19 | S | -| main.rs:2852:14:2855:9 | { ... } | T.T | main.rs:2820:5:2821:19 | S | -| main.rs:2852:14:2855:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2852:14:2855:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:17:2853:17 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2853:17:2853:17 | x | T | main.rs:2820:5:2821:19 | S | -| main.rs:2853:17:2853:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:21 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2853:21:2853:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2853:21:2853:26 | x.m2() | | main.rs:2820:5:2821:19 | S | -| main.rs:2853:21:2853:26 | x.m2() | T | main.rs:2820:5:2821:19 | S | -| main.rs:2853:21:2853:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2854:13:2854:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2854:13:2854:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2854:13:2854:23 | ...::new(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2854:13:2854:23 | ...::new(...) | T | main.rs:2820:5:2821:19 | S | -| main.rs:2854:13:2854:23 | ...::new(...) | T.T | main.rs:2820:5:2821:19 | S | -| main.rs:2854:13:2854:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2854:13:2854:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2854:22:2854:22 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2854:22:2854:22 | x | T | main.rs:2820:5:2821:19 | S | -| main.rs:2854:22:2854:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2855:16:2857:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2855:16:2857:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2855:16:2857:9 | { ... } | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2855:16:2857:9 | { ... } | T | main.rs:2820:5:2821:19 | S | -| main.rs:2855:16:2857:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2855:16:2857:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:13:2856:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2856:13:2856:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2856:13:2856:23 | ...::new(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2856:13:2856:23 | ...::new(...) | T | main.rs:2820:5:2821:19 | S | -| main.rs:2856:13:2856:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:13:2856:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2856:22:2856:22 | x | | main.rs:2820:5:2821:19 | S | -| main.rs:2856:22:2856:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2862:22:2866:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2863:18:2863:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2863:33:2865:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2864:13:2864:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2864:13:2864:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:2864:17:2864:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2871:11:2871:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2871:30:2879:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2873:13:2873:13 | a | | file://:0:0:0:0 | () | -| main.rs:2873:17:2877:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2874:13:2876:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2874:16:2874:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2874:21:2876:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2875:24:2875:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2878:9:2878:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2882:20:2889:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2885:26:2885:27 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2887:18:2887:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2887:18:2887:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2887:18:2887:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2887:18:2887:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2888:9:2888:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2891:20:2893:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2892:16:2892:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2896:11:2896:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2896:30:2904:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2897:13:2897:13 | a | | file://:0:0:0:0 | () | -| main.rs:2897:17:2901:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2898:13:2900:13 | if cond {...} | | file://:0:0:0:0 | () | -| main.rs:2898:16:2898:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2898:21:2900:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2899:24:2899:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2902:18:2902:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | -| main.rs:2902:18:2902:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2902:18:2902:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2902:18:2902:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2902:29:2902:29 | a | | file://:0:0:0:0 | () | -| main.rs:2903:9:2903:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2908:16:2955:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2909:13:2909:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2909:13:2909:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2909:17:2909:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2909:17:2909:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2910:13:2910:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2910:13:2910:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2910:30:2910:30 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2910:30:2910:30 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2911:13:2911:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2911:13:2911:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2911:17:2911:35 | ...::None | | {EXTERNAL LOCATION} | Option | -| main.rs:2911:17:2911:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2912:13:2912:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2912:13:2912:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2912:17:2912:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | -| main.rs:2912:17:2912:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2914:26:2914:28 | opt | | {EXTERNAL LOCATION} | Option | -| main.rs:2914:26:2914:28 | opt | T | main.rs:2914:23:2914:23 | T | -| main.rs:2914:42:2914:42 | x | | main.rs:2914:23:2914:23 | T | -| main.rs:2914:48:2914:49 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2916:13:2916:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2916:13:2916:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2916:17:2916:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2916:17:2916:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2917:9:2917:24 | pin_option(...) | | file://:0:0:0:0 | () | -| main.rs:2917:20:2917:20 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2917:20:2917:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2917:23:2917:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2924:13:2924:13 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2924:13:2924:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2924:13:2924:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2924:17:2924:39 | ...::A {...} | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2924:17:2924:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2924:17:2924:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2924:37:2924:37 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2925:13:2925:13 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2925:13:2925:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2925:13:2925:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2925:40:2925:40 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2925:40:2925:40 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2925:40:2925:40 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2926:13:2926:13 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2926:13:2926:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2926:13:2926:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2926:17:2926:52 | ...::A {...} | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2926:17:2926:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2926:17:2926:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2926:50:2926:50 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2928:13:2928:13 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2928:13:2928:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2928:13:2928:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2928:17:2930:9 | ...::B::<...> {...} | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2928:17:2930:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2928:17:2930:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2929:20:2929:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2932:29:2932:29 | e | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2932:29:2932:29 | e | T1 | main.rs:2932:26:2932:26 | T | -| main.rs:2932:29:2932:29 | e | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2932:53:2932:53 | x | | main.rs:2932:26:2932:26 | T | -| main.rs:2932:59:2932:60 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2935:13:2935:13 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2935:13:2935:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2935:13:2935:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2935:17:2937:9 | ...::B {...} | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2935:17:2937:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2935:17:2937:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2936:20:2936:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2938:9:2938:27 | pin_my_either(...) | | file://:0:0:0:0 | () | -| main.rs:2938:23:2938:23 | x | | main.rs:2919:9:2922:9 | MyEither | -| main.rs:2938:23:2938:23 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2938:23:2938:23 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2938:26:2938:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2940:13:2940:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2940:13:2940:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2940:13:2940:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2940:17:2940:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2940:17:2940:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2940:17:2940:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2940:28:2940:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2941:13:2941:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2941:13:2941:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2941:13:2941:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2941:38:2941:38 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2941:38:2941:38 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2941:38:2941:38 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2942:13:2942:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2942:13:2942:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2942:13:2942:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2942:17:2942:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2942:17:2942:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2942:17:2942:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2942:43:2942:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2943:13:2943:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2943:13:2943:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2943:13:2943:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2943:17:2943:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2943:43:2943:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2945:29:2945:31 | res | | {EXTERNAL LOCATION} | Result | -| main.rs:2945:29:2945:31 | res | E | main.rs:2945:26:2945:26 | E | -| main.rs:2945:29:2945:31 | res | T | main.rs:2945:23:2945:23 | T | -| main.rs:2945:48:2945:48 | x | | main.rs:2945:26:2945:26 | E | -| main.rs:2945:54:2945:55 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2947:13:2947:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2947:13:2947:13 | x | E | {EXTERNAL LOCATION} | bool | -| main.rs:2947:13:2947:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2947:17:2947:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2947:17:2947:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | -| main.rs:2947:17:2947:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2947:28:2947:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2948:9:2948:28 | pin_result(...) | | file://:0:0:0:0 | () | -| main.rs:2948:20:2948:20 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2948:20:2948:20 | x | E | {EXTERNAL LOCATION} | bool | -| main.rs:2948:20:2948:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2948:23:2948:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2950:17:2950:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2950:17:2950:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2950:17:2950:17 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2950:21:2950:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2950:21:2950:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2950:21:2950:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2951:9:2951:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2951:9:2951:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2951:9:2951:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2951:9:2951:17 | x.push(...) | | file://:0:0:0:0 | () | -| main.rs:2951:16:2951:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2953:13:2953:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2953:17:2953:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2954:9:2954:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2954:9:2954:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2954:9:2954:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2954:9:2954:17 | x.push(...) | | file://:0:0:0:0 | () | -| main.rs:2954:16:2954:16 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2963:11:2998:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2964:5:2964:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2965:5:2965:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2966:5:2966:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2966:20:2966:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2966:41:2966:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2967:5:2967:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2968:5:2968:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2969:5:2969:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2970:5:2970:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2971:5:2971:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2972:5:2972:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2973:5:2973:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2974:5:2974:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2975:5:2975:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2976:5:2976:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2977:5:2977:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2978:5:2978:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2979:5:2979:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2980:5:2980:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2981:5:2981:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2982:5:2982:18 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2983:5:2983:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2983:5:2983:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:2984:5:2984:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2985:5:2985:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2986:5:2986:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2987:5:2987:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2988:5:2988:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2989:5:2989:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2990:5:2990:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2991:5:2991:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:2992:5:2992:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2993:5:2993:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2994:5:2994:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:2995:5:2995:20 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:2996:5:2996:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2996:5:2996:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2996:5:2996:20 | ...::f(...) | T | main.rs:2816:5:2818:5 | dyn MyTrait | -| main.rs:2996:5:2996:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2996:16:2996:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2997:5:2997:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:1973:13:1973:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1973:13:1973:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1973:13:1973:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1973:23:1973:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1973:23:1973:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1979:19:1979:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1979:25:1979:27 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1979:44:1984:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1980:13:1983:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:20:1981:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:20:1981:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:20:1981:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1981:29:1981:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1981:29:1981:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:20:1982:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1982:20:1982:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:20:1982:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1982:29:1982:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1982:29:1982:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1988:26:1988:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1988:26:1988:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1988:37:1988:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1988:48:1991:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1989:13:1989:16 | self | | file://:0:0:0:0 | & | +| main.rs:1989:13:1989:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1989:13:1989:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1989:13:1989:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1989:23:1989:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1989:23:1989:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:13:1990:16 | self | | file://:0:0:0:0 | & | +| main.rs:1990:13:1990:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1990:13:1990:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1990:13:1990:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1990:23:1990:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1990:23:1990:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1996:16:1996:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1996:22:1996:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1996:40:2001:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1997:13:2000:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1998:20:1998:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1998:20:1998:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:20:1998:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1998:30:1998:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1999:20:1999:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1999:20:1999:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:20:1999:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1999:30:1999:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2005:23:2005:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2005:23:2005:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2005:34:2005:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2005:44:2008:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2006:13:2006:16 | self | | file://:0:0:0:0 | & | +| main.rs:2006:13:2006:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2006:13:2006:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2006:13:2006:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2006:24:2006:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2007:13:2007:16 | self | | file://:0:0:0:0 | & | +| main.rs:2007:13:2007:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2007:13:2007:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2007:13:2007:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2007:24:2007:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2013:16:2013:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2013:22:2013:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2013:40:2018:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2014:13:2017:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2015:20:2015:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2015:20:2015:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:20:2015:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2015:30:2015:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2016:20:2016:23 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2016:20:2016:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:20:2016:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2016:30:2016:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2022:23:2022:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2022:23:2022:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2022:34:2022:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2022:44:2025:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2023:13:2023:16 | self | | file://:0:0:0:0 | & | +| main.rs:2023:13:2023:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2023:13:2023:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2023:13:2023:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2023:24:2023:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2024:13:2024:16 | self | | file://:0:0:0:0 | & | +| main.rs:2024:13:2024:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2024:13:2024:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2024:13:2024:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2024:24:2024:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:2030:16:2030:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2030:30:2035:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2031:13:2034:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2032:20:2032:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2032:21:2032:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2032:21:2032:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:20:2033:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2033:21:2033:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2033:21:2033:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2040:16:2040:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2040:30:2045:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2041:13:2044:13 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2042:20:2042:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2042:21:2042:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2042:21:2042:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:20:2043:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2043:21:2043:24 | self | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2043:21:2043:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2049:15:2049:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2049:15:2049:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:22:2049:26 | other | | file://:0:0:0:0 | & | +| main.rs:2049:22:2049:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:44:2051:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:13:2050:16 | self | | file://:0:0:0:0 | & | +| main.rs:2050:13:2050:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:13:2050:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:13:2050:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:13:2050:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:23:2050:27 | other | | file://:0:0:0:0 | & | +| main.rs:2050:23:2050:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:23:2050:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:34:2050:37 | self | | file://:0:0:0:0 | & | +| main.rs:2050:34:2050:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:34:2050:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2050:34:2050:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2050:44:2050:48 | other | | file://:0:0:0:0 | & | +| main.rs:2050:44:2050:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:44:2050:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2053:15:2053:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2053:15:2053:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:22:2053:26 | other | | file://:0:0:0:0 | & | +| main.rs:2053:22:2053:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:44:2055:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:13:2054:16 | self | | file://:0:0:0:0 | & | +| main.rs:2054:13:2054:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:13:2054:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:13:2054:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:13:2054:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:23:2054:27 | other | | file://:0:0:0:0 | & | +| main.rs:2054:23:2054:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:23:2054:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:34:2054:37 | self | | file://:0:0:0:0 | & | +| main.rs:2054:34:2054:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:34:2054:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2054:34:2054:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2054:44:2054:48 | other | | file://:0:0:0:0 | & | +| main.rs:2054:44:2054:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:44:2054:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2059:24:2059:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2059:24:2059:28 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:31:2059:35 | other | | file://:0:0:0:0 | & | +| main.rs:2059:31:2059:35 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:75:2061:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2059:75:2061:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:2060:13:2060:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:13:2060:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2060:13:2060:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:2060:14:2060:17 | self | | file://:0:0:0:0 | & | +| main.rs:2060:14:2060:17 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:14:2060:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:14:2060:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:23:2060:26 | self | | file://:0:0:0:0 | & | +| main.rs:2060:23:2060:26 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:23:2060:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:43:2060:62 | &... | | file://:0:0:0:0 | & | +| main.rs:2060:43:2060:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:44:2060:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:45:2060:49 | other | | file://:0:0:0:0 | & | +| main.rs:2060:45:2060:49 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:45:2060:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:45:2060:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:55:2060:59 | other | | file://:0:0:0:0 | & | +| main.rs:2060:55:2060:59 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:55:2060:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2063:15:2063:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2063:15:2063:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:22:2063:26 | other | | file://:0:0:0:0 | & | +| main.rs:2063:22:2063:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:44:2065:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:13:2064:16 | self | | file://:0:0:0:0 | & | +| main.rs:2064:13:2064:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:13:2064:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:13:2064:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:13:2064:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:22:2064:26 | other | | file://:0:0:0:0 | & | +| main.rs:2064:22:2064:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:22:2064:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:33:2064:36 | self | | file://:0:0:0:0 | & | +| main.rs:2064:33:2064:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:33:2064:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2064:33:2064:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2064:42:2064:46 | other | | file://:0:0:0:0 | & | +| main.rs:2064:42:2064:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:42:2064:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2067:15:2067:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2067:15:2067:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:22:2067:26 | other | | file://:0:0:0:0 | & | +| main.rs:2067:22:2067:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:44:2069:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:13:2068:16 | self | | file://:0:0:0:0 | & | +| main.rs:2068:13:2068:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:13:2068:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:13:2068:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:13:2068:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:23:2068:27 | other | | file://:0:0:0:0 | & | +| main.rs:2068:23:2068:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:23:2068:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:34:2068:37 | self | | file://:0:0:0:0 | & | +| main.rs:2068:34:2068:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:34:2068:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2068:34:2068:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2068:44:2068:48 | other | | file://:0:0:0:0 | & | +| main.rs:2068:44:2068:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:44:2068:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2071:15:2071:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2071:15:2071:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:22:2071:26 | other | | file://:0:0:0:0 | & | +| main.rs:2071:22:2071:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:44:2073:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:13:2072:16 | self | | file://:0:0:0:0 | & | +| main.rs:2072:13:2072:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:13:2072:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:13:2072:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:13:2072:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:22:2072:26 | other | | file://:0:0:0:0 | & | +| main.rs:2072:22:2072:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:22:2072:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:33:2072:36 | self | | file://:0:0:0:0 | & | +| main.rs:2072:33:2072:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:33:2072:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2072:33:2072:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2072:42:2072:46 | other | | file://:0:0:0:0 | & | +| main.rs:2072:42:2072:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:42:2072:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2075:15:2075:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2075:15:2075:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:22:2075:26 | other | | file://:0:0:0:0 | & | +| main.rs:2075:22:2075:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:44:2077:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:13:2076:16 | self | | file://:0:0:0:0 | & | +| main.rs:2076:13:2076:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:13:2076:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:13:2076:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:13:2076:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:23:2076:27 | other | | file://:0:0:0:0 | & | +| main.rs:2076:23:2076:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:23:2076:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:34:2076:37 | self | | file://:0:0:0:0 | & | +| main.rs:2076:34:2076:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:34:2076:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2076:34:2076:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2076:44:2076:48 | other | | file://:0:0:0:0 | & | +| main.rs:2076:44:2076:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:44:2076:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2080:26:2080:26 | a | | main.rs:2080:18:2080:23 | T | +| main.rs:2080:32:2080:32 | b | | main.rs:2080:18:2080:23 | T | +| main.rs:2080:51:2082:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2081:9:2081:9 | a | | main.rs:2080:18:2080:23 | T | +| main.rs:2081:9:2081:13 | ... + ... | | {EXTERNAL LOCATION} | Output | +| main.rs:2081:13:2081:13 | b | | main.rs:2080:18:2080:23 | T | +| main.rs:2084:16:2215:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2088:13:2088:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:22:2088:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:23:2088:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2088:23:2088:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2088:31:2088:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2089:13:2089:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:22:2089:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:23:2089:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2089:23:2089:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2089:31:2089:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2090:13:2090:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:22:2090:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:23:2090:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2090:23:2090:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2090:30:2090:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2091:13:2091:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:22:2091:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:23:2091:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2091:23:2091:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2091:31:2091:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2092:13:2092:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:22:2092:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:23:2092:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2092:23:2092:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2092:30:2092:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2093:13:2093:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:22:2093:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:23:2093:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2093:23:2093:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2093:32:2093:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:13:2096:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:23:2096:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:23:2096:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2096:31:2096:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:13:2097:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:23:2097:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:23:2097:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:31:2097:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:13:2098:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:23:2098:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:23:2098:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:31:2098:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:13:2099:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:23:2099:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:23:2099:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2099:31:2099:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:13:2100:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:23:2100:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:23:2100:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2100:31:2100:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2101:39:2101:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2101:45:2101:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:17:2104:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2104:34:2104:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2105:9:2105:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2105:9:2105:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2105:27:2105:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:17:2107:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:34:2107:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2108:9:2108:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2108:9:2108:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2108:27:2108:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2110:17:2110:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2110:34:2110:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2111:9:2111:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2111:9:2111:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2111:27:2111:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2113:17:2113:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2113:34:2113:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2114:9:2114:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2114:9:2114:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2114:27:2114:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:17:2116:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:34:2116:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2117:9:2117:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2117:9:2117:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2117:27:2117:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:13:2120:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:26:2120:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:26:2120:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2120:34:2120:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:13:2121:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:25:2121:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:25:2121:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2121:33:2121:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:13:2122:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:26:2122:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:26:2122:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2122:34:2122:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:13:2123:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:23:2123:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:23:2123:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2123:32:2123:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:13:2124:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:23:2124:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:23:2124:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2124:32:2124:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2127:17:2127:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2127:37:2127:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:9:2128:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2128:9:2128:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2128:30:2128:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2130:17:2130:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2130:36:2130:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2131:9:2131:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2131:9:2131:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2131:29:2131:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:17:2133:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2133:37:2133:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2134:9:2134:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2134:9:2134:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2134:30:2134:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2136:17:2136:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2136:34:2136:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2137:9:2137:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2137:9:2137:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2137:28:2137:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2139:17:2139:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2139:34:2139:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2140:9:2140:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:2140:9:2140:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2140:28:2140:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:13:2142:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:23:2142:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2142:24:2142:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:13:2143:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:23:2143:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2143:24:2143:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2146:13:2146:14 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2146:18:2146:36 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2146:28:2146:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2146:34:2146:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2147:13:2147:14 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2147:18:2147:36 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2147:28:2147:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2147:34:2147:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2150:13:2150:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:2150:23:2150:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2150:23:2150:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2150:29:2150:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2151:13:2151:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:2151:23:2151:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2151:23:2151:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2151:29:2151:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2152:13:2152:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:2152:23:2152:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2152:23:2152:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2152:28:2152:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2153:13:2153:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:2153:23:2153:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2153:23:2153:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2153:29:2153:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2154:13:2154:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:2154:23:2154:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2154:23:2154:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2154:28:2154:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2155:13:2155:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:2155:23:2155:24 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2155:23:2155:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2155:29:2155:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:13:2158:20 | vec2_add | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:24:2158:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:24:2158:30 | ... + ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2158:29:2158:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:13:2159:20 | vec2_sub | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:24:2159:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:24:2159:30 | ... - ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2159:29:2159:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:13:2160:20 | vec2_mul | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:24:2160:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:24:2160:30 | ... * ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2160:29:2160:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:13:2161:20 | vec2_div | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:24:2161:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:24:2161:30 | ... / ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2161:29:2161:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:13:2162:20 | vec2_rem | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:24:2162:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:24:2162:30 | ... % ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2162:29:2162:30 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2165:17:2165:31 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2165:35:2165:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2166:9:2166:23 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2166:9:2166:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2166:28:2166:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2168:17:2168:31 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2168:35:2168:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2169:9:2169:23 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2169:9:2169:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2169:28:2169:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2171:17:2171:31 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2171:35:2171:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2172:9:2172:23 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2172:9:2172:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2172:28:2172:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2174:17:2174:31 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2174:35:2174:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2175:9:2175:23 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2175:9:2175:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2175:28:2175:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2177:17:2177:31 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2177:35:2177:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2178:9:2178:23 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2178:9:2178:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2178:28:2178:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:13:2181:23 | vec2_bitand | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:27:2181:28 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:27:2181:33 | ... & ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2181:32:2181:33 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:13:2182:22 | vec2_bitor | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:26:2182:27 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:26:2182:32 | ... \| ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2182:31:2182:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:13:2183:23 | vec2_bitxor | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:27:2183:28 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:27:2183:33 | ... ^ ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2183:32:2183:33 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:13:2184:20 | vec2_shl | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:24:2184:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:24:2184:33 | ... << ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2184:30:2184:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2185:13:2185:20 | vec2_shr | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:24:2185:25 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:24:2185:33 | ... >> ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2185:30:2185:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2188:17:2188:34 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2188:38:2188:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2189:9:2189:26 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2189:9:2189:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2189:31:2189:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2191:17:2191:33 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2191:37:2191:38 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2192:9:2192:25 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2192:9:2192:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2192:30:2192:31 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2194:17:2194:34 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2194:38:2194:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2195:9:2195:26 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2195:9:2195:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2195:31:2195:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2197:17:2197:31 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2197:35:2197:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2198:9:2198:23 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2198:9:2198:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2198:29:2198:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2200:17:2200:31 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2200:35:2200:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2201:9:2201:23 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2201:9:2201:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2201:29:2201:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2204:13:2204:20 | vec2_neg | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2204:24:2204:26 | - ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2204:25:2204:26 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:13:2205:20 | vec2_not | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:24:2205:26 | ! ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2205:25:2205:26 | v1 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2208:13:2208:24 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2208:28:2208:45 | ...::default(...) | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:13:2209:26 | vec2_zero_plus | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:30:2209:48 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:30:2209:63 | ... + ... | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2209:40:2209:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:46:2209:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2209:52:2209:63 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2213:13:2213:24 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2213:28:2213:45 | ...::default(...) | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2214:13:2214:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:2214:30:2214:48 | Vec2 {...} | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2214:30:2214:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2214:40:2214:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2214:46:2214:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2214:53:2214:64 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2224:18:2224:21 | SelfParam | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2224:24:2224:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2227:25:2229:5 | { ... } | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2228:9:2228:10 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2231:41:2233:5 | { ... } | | main.rs:2231:16:2231:39 | impl ... | +| main.rs:2232:9:2232:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2232:9:2232:20 | { ... } | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2232:17:2232:18 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2235:41:2237:5 | { ... } | | main.rs:2235:16:2235:39 | impl ... | +| main.rs:2236:9:2236:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2236:9:2236:16 | { ... } | Output | file://:0:0:0:0 | () | +| main.rs:2245:13:2245:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:2245:13:2245:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2245:13:2245:42 | SelfParam | Ptr.&T | main.rs:2239:5:2239:14 | S2 | +| main.rs:2246:13:2246:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2246:13:2246:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2247:44:2249:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:2247:44:2249:9 | { ... } | T | main.rs:2221:5:2221:14 | S1 | +| main.rs:2248:13:2248:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:2248:13:2248:38 | ...::Ready(...) | T | main.rs:2221:5:2221:14 | S1 | +| main.rs:2248:36:2248:37 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2252:41:2254:5 | { ... } | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2253:9:2253:10 | S2 | | main.rs:2239:5:2239:14 | S2 | +| main.rs:2253:9:2253:10 | S2 | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2256:22:2264:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2257:9:2257:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2257:9:2257:12 | f1(...) | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2257:9:2257:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2257:9:2257:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2258:9:2258:12 | f2(...) | | main.rs:2231:16:2231:39 | impl ... | +| main.rs:2258:9:2258:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2258:9:2258:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2259:9:2259:12 | f3(...) | | main.rs:2235:16:2235:39 | impl ... | +| main.rs:2259:9:2259:18 | await ... | | file://:0:0:0:0 | () | +| main.rs:2260:9:2260:12 | f4(...) | | main.rs:2252:16:2252:39 | impl ... | +| main.rs:2260:9:2260:18 | await ... | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2260:9:2260:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2261:9:2261:10 | S2 | | main.rs:2239:5:2239:14 | S2 | +| main.rs:2261:9:2261:16 | await S2 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2261:9:2261:20 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2262:13:2262:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2262:13:2262:13 | b | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:17:2262:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2262:17:2262:28 | { ... } | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:25:2262:26 | S1 | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2263:9:2263:9 | b | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:15 | await b | | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:19 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2274:15:2274:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2274:15:2274:19 | SelfParam | &T | main.rs:2273:5:2275:5 | Self [trait Trait1] | +| main.rs:2274:22:2274:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2278:15:2278:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2278:15:2278:19 | SelfParam | &T | main.rs:2277:5:2279:5 | Self [trait Trait2] | +| main.rs:2278:22:2278:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2282:15:2282:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2282:15:2282:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2282:22:2282:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2286:15:2286:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2286:15:2286:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2286:22:2286:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2289:37:2291:5 | { ... } | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2290:9:2290:10 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2290:9:2290:10 | S1 | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2294:18:2294:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2294:18:2294:22 | SelfParam | &T | main.rs:2293:5:2295:5 | Self [trait MyTrait] | +| main.rs:2298:18:2298:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2298:18:2298:22 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2298:31:2300:9 | { ... } | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2299:13:2299:14 | S2 | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2304:18:2304:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2304:18:2304:22 | SelfParam | &T | main.rs:2271:5:2271:22 | S3 | +| main.rs:2304:18:2304:22 | SelfParam | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2304:30:2307:9 | { ... } | | main.rs:2303:10:2303:17 | T | +| main.rs:2305:17:2305:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2305:17:2305:21 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:17:2305:21 | S3(...) | &T | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:17:2305:21 | S3(...) | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2305:25:2305:28 | self | | file://:0:0:0:0 | & | +| main.rs:2305:25:2305:28 | self | &T | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:25:2305:28 | self | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2306:13:2306:21 | t.clone() | | main.rs:2303:10:2303:17 | T | +| main.rs:2310:45:2312:5 | { ... } | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2311:9:2311:10 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2311:9:2311:10 | S1 | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2314:41:2314:41 | t | | main.rs:2314:26:2314:38 | B | +| main.rs:2314:52:2316:5 | { ... } | | main.rs:2314:23:2314:23 | A | +| main.rs:2315:9:2315:9 | t | | main.rs:2314:26:2314:38 | B | +| main.rs:2315:9:2315:17 | t.get_a() | | main.rs:2314:23:2314:23 | A | +| main.rs:2318:34:2318:34 | x | | main.rs:2318:24:2318:31 | T | +| main.rs:2318:59:2320:5 | { ... } | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2318:59:2320:5 | { ... } | impl(T) | main.rs:2318:24:2318:31 | T | +| main.rs:2319:9:2319:13 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2319:9:2319:13 | S3(...) | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2319:9:2319:13 | S3(...) | T3 | main.rs:2318:24:2318:31 | T | +| main.rs:2319:9:2319:13 | S3(...) | impl(T) | main.rs:2318:24:2318:31 | T | +| main.rs:2319:12:2319:12 | x | | main.rs:2318:24:2318:31 | T | +| main.rs:2322:34:2322:34 | x | | main.rs:2322:24:2322:31 | T | +| main.rs:2322:67:2324:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2322:67:2324:5 | { ... } | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2322:67:2324:5 | { ... } | T.impl(T) | main.rs:2322:24:2322:31 | T | +| main.rs:2323:9:2323:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2323:9:2323:19 | Some(...) | T | main.rs:2271:5:2271:22 | S3 | +| main.rs:2323:9:2323:19 | Some(...) | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2323:9:2323:19 | Some(...) | T.T3 | main.rs:2322:24:2322:31 | T | +| main.rs:2323:9:2323:19 | Some(...) | T.impl(T) | main.rs:2322:24:2322:31 | T | +| main.rs:2323:14:2323:18 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2323:14:2323:18 | S3(...) | T3 | main.rs:2322:24:2322:31 | T | +| main.rs:2323:17:2323:17 | x | | main.rs:2322:24:2322:31 | T | +| main.rs:2326:34:2326:34 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2326:78:2328:5 | { ... } | 0(2) | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | 0(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | 1(2) | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | 1(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | 0(2).T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | 0(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | 1(2) | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | 1(2) | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | 1(2).T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | 1(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:10:2327:22 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:10:2327:22 | S3(...) | | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2327:10:2327:22 | S3(...) | T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:10:2327:22 | S3(...) | impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:13:2327:13 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2327:13:2327:21 | x.clone() | | main.rs:2326:24:2326:31 | T | +| main.rs:2327:25:2327:29 | S3(...) | | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:25:2327:29 | S3(...) | | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2327:25:2327:29 | S3(...) | T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:25:2327:29 | S3(...) | impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:28:2327:28 | x | | main.rs:2326:24:2326:31 | T | +| main.rs:2330:26:2330:26 | t | | main.rs:2330:29:2330:43 | impl ... | +| main.rs:2330:51:2332:5 | { ... } | | main.rs:2330:23:2330:23 | A | +| main.rs:2331:9:2331:9 | t | | main.rs:2330:29:2330:43 | impl ... | +| main.rs:2331:9:2331:17 | t.get_a() | | main.rs:2330:23:2330:23 | A | +| main.rs:2334:16:2348:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2335:13:2335:13 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2335:17:2335:20 | f1(...) | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2336:9:2336:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2336:9:2336:14 | x.f1() | | file://:0:0:0:0 | () | +| main.rs:2337:9:2337:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | +| main.rs:2337:9:2337:14 | x.f2() | | file://:0:0:0:0 | () | +| main.rs:2338:13:2338:13 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2338:17:2338:32 | get_a_my_trait(...) | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2339:13:2339:13 | b | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2339:17:2339:33 | uses_my_trait1(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2339:32:2339:32 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2340:13:2340:13 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2340:17:2340:32 | get_a_my_trait(...) | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2341:13:2341:13 | c | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2341:17:2341:33 | uses_my_trait2(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2341:32:2341:32 | a | | main.rs:2310:28:2310:43 | impl ... | +| main.rs:2342:13:2342:13 | d | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2342:17:2342:34 | uses_my_trait2(...) | | main.rs:2270:5:2270:14 | S2 | +| main.rs:2342:32:2342:33 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:13:2343:13 | e | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:17:2343:35 | get_a_my_trait2(...) | | main.rs:2318:43:2318:57 | impl ... | +| main.rs:2343:17:2343:35 | get_a_my_trait2(...) | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:17:2343:43 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2343:33:2343:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:13:2346:13 | f | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | T | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2346:17:2346:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:44 | ... .unwrap() | | main.rs:2322:50:2322:64 | impl ... | +| main.rs:2346:17:2346:44 | ... .unwrap() | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:17:2346:52 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2346:33:2346:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:13:2347:13 | g | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2) | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 1(2) | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:37 | ... .0 | | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2347:17:2347:37 | ... .0 | impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:45 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:33:2347:34 | S1 | | main.rs:2268:5:2269:14 | S1 | +| main.rs:2358:16:2358:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2358:16:2358:20 | SelfParam | &T | main.rs:2354:5:2355:13 | S | +| main.rs:2358:31:2360:9 | { ... } | | main.rs:2354:5:2355:13 | S | +| main.rs:2359:13:2359:13 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2369:26:2371:9 | { ... } | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2369:26:2371:9 | { ... } | T | main.rs:2368:10:2368:10 | T | +| main.rs:2370:13:2370:38 | MyVec {...} | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2370:13:2370:38 | MyVec {...} | T | main.rs:2368:10:2368:10 | T | +| main.rs:2370:27:2370:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2370:27:2370:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2370:27:2370:36 | ...::new(...) | T | main.rs:2368:10:2368:10 | T | +| main.rs:2373:17:2373:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2373:17:2373:25 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2373:17:2373:25 | SelfParam | &T.T | main.rs:2368:10:2368:10 | T | +| main.rs:2373:28:2373:32 | value | | main.rs:2368:10:2368:10 | T | +| main.rs:2373:38:2375:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2374:13:2374:16 | self | | file://:0:0:0:0 | & | +| main.rs:2374:13:2374:16 | self | &T | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2374:13:2374:16 | self | &T.T | main.rs:2368:10:2368:10 | T | +| main.rs:2374:13:2374:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2374:13:2374:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2374:13:2374:21 | self.data | T | main.rs:2368:10:2368:10 | T | +| main.rs:2374:13:2374:33 | ... .push(...) | | file://:0:0:0:0 | () | +| main.rs:2374:28:2374:32 | value | | main.rs:2368:10:2368:10 | T | +| main.rs:2382:18:2382:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2382:18:2382:22 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2382:18:2382:22 | SelfParam | &T.T | main.rs:2378:10:2378:10 | T | +| main.rs:2382:25:2382:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2382:56:2384:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2382:56:2384:9 | { ... } | &T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:13:2383:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2383:13:2383:29 | &... | &T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:17 | self | | file://:0:0:0:0 | & | +| main.rs:2383:14:2383:17 | self | &T | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2383:14:2383:17 | self | &T.T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2383:14:2383:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2383:14:2383:22 | self.data | T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:29 | ...[index] | | main.rs:2378:10:2378:10 | T | +| main.rs:2383:24:2383:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2387:22:2387:26 | slice | | file://:0:0:0:0 | & | +| main.rs:2387:22:2387:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2387:22:2387:26 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | +| main.rs:2387:35:2389:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2388:13:2388:13 | x | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:21 | slice | | file://:0:0:0:0 | & | +| main.rs:2388:17:2388:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2388:17:2388:21 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:24 | slice[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:30 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2388:23:2388:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:37:2391:37 | a | | main.rs:2391:20:2391:34 | T | +| main.rs:2391:43:2391:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2394:5:2396:5 | { ... } | | {EXTERNAL LOCATION} | Output | +| main.rs:2395:9:2395:9 | a | | main.rs:2391:20:2391:34 | T | +| main.rs:2395:9:2395:12 | a[b] | | {EXTERNAL LOCATION} | Output | +| main.rs:2395:11:2395:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2398:16:2409:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2399:17:2399:19 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2399:17:2399:19 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2399:23:2399:34 | ...::new(...) | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2399:23:2399:34 | ...::new(...) | T | main.rs:2354:5:2355:13 | S | +| main.rs:2400:9:2400:11 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2400:9:2400:11 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2400:9:2400:19 | vec.push(...) | | file://:0:0:0:0 | () | +| main.rs:2400:18:2400:18 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:11 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2401:9:2401:11 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:14 | vec[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:9:2401:20 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2401:13:2401:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2403:13:2403:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2403:13:2403:14 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2403:21:2403:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2403:26:2403:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2403:26:2403:28 | [...] | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2403:27:2403:27 | S | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:13:2404:13 | x | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2404:17:2404:18 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:21 | xs[0] | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:27 | ... .foo() | | main.rs:2354:5:2355:13 | S | +| main.rs:2404:20:2404:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2406:29:2406:31 | vec | | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2406:29:2406:31 | vec | T | main.rs:2354:5:2355:13 | S | +| main.rs:2406:34:2406:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2408:9:2408:26 | analyze_slice(...) | | file://:0:0:0:0 | () | +| main.rs:2408:23:2408:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:2408:23:2408:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2408:23:2408:25 | &xs | &T.[T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2408:24:2408:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2408:24:2408:25 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2413:16:2415:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2414:13:2414:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2414:17:2414:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2414:25:2414:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2414:25:2414:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2414:25:2414:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2414:38:2414:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2414:38:2414:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2423:19:2423:22 | SelfParam | | main.rs:2419:5:2424:5 | Self [trait MyAdd] | +| main.rs:2423:25:2423:27 | rhs | | main.rs:2419:17:2419:26 | Rhs | +| main.rs:2430:19:2430:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:25:2430:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2430:45:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2431:13:2431:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:19:2439:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:25:2439:29 | value | | file://:0:0:0:0 | & | +| main.rs:2439:25:2439:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:46:2441:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:13:2440:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:14:2440:18 | value | | file://:0:0:0:0 | & | +| main.rs:2440:14:2440:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:19:2448:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:25:2448:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2448:46:2454:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2449:13:2453:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2449:13:2453:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2449:16:2449:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2449:22:2451:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2449:22:2451:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2450:17:2450:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2450:17:2450:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2451:20:2453:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2451:20:2453:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2452:17:2452:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2452:17:2452:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2463:19:2463:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:19:2463:22 | SelfParam | T | main.rs:2459:10:2459:17 | T | +| main.rs:2463:25:2463:29 | other | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:25:2463:29 | other | T | main.rs:2459:10:2459:17 | T | +| main.rs:2463:54:2465:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2463:54:2465:9 | { ... } | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2464:13:2464:39 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:13:2464:39 | S(...) | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2464:15:2464:22 | (...) | | main.rs:2459:10:2459:17 | T | +| main.rs:2464:16:2464:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:16:2464:19 | self | T | main.rs:2459:10:2459:17 | T | +| main.rs:2464:16:2464:21 | self.0 | | main.rs:2459:10:2459:17 | T | +| main.rs:2464:31:2464:35 | other | | main.rs:2457:5:2457:19 | S | +| main.rs:2464:31:2464:35 | other | T | main.rs:2459:10:2459:17 | T | +| main.rs:2464:31:2464:37 | other.0 | | main.rs:2459:10:2459:17 | T | +| main.rs:2472:19:2472:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2472:19:2472:22 | SelfParam | T | main.rs:2468:10:2468:17 | T | +| main.rs:2472:25:2472:29 | other | | main.rs:2468:10:2468:17 | T | +| main.rs:2472:51:2474:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2472:51:2474:9 | { ... } | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2473:13:2473:37 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2473:13:2473:37 | S(...) | T | main.rs:2420:9:2420:20 | Output | +| main.rs:2473:15:2473:22 | (...) | | main.rs:2468:10:2468:17 | T | +| main.rs:2473:16:2473:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2473:16:2473:19 | self | T | main.rs:2468:10:2468:17 | T | +| main.rs:2473:16:2473:21 | self.0 | | main.rs:2468:10:2468:17 | T | +| main.rs:2473:31:2473:35 | other | | main.rs:2468:10:2468:17 | T | +| main.rs:2484:19:2484:22 | SelfParam | | main.rs:2457:5:2457:19 | S | +| main.rs:2484:19:2484:22 | SelfParam | T | main.rs:2477:14:2477:14 | T | +| main.rs:2484:25:2484:29 | other | | file://:0:0:0:0 | & | +| main.rs:2484:25:2484:29 | other | &T | main.rs:2477:14:2477:14 | T | +| main.rs:2484:55:2486:9 | { ... } | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:13:2485:37 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:15:2485:22 | (...) | | main.rs:2477:14:2477:14 | T | +| main.rs:2485:16:2485:19 | self | | main.rs:2457:5:2457:19 | S | +| main.rs:2485:16:2485:19 | self | T | main.rs:2477:14:2477:14 | T | +| main.rs:2485:16:2485:21 | self.0 | | main.rs:2477:14:2477:14 | T | +| main.rs:2485:31:2485:35 | other | | file://:0:0:0:0 | & | +| main.rs:2485:31:2485:35 | other | &T | main.rs:2477:14:2477:14 | T | +| main.rs:2491:20:2491:24 | value | | main.rs:2489:18:2489:18 | T | +| main.rs:2496:20:2496:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2496:40:2498:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2497:13:2497:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2503:20:2503:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2503:41:2509:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:13:2508:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:13:2508:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2504:16:2504:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2504:22:2506:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2504:22:2506:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2505:17:2505:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2505:17:2505:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2506:20:2508:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2506:20:2508:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2507:17:2507:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:17:2507:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2514:21:2514:25 | value | | main.rs:2512:19:2512:19 | T | +| main.rs:2514:31:2514:31 | x | | main.rs:2512:5:2515:5 | Self [trait MyFrom2] | +| main.rs:2519:21:2519:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2519:33:2519:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2519:48:2521:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2520:13:2520:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2526:21:2526:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2526:34:2526:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2526:49:2532:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2527:13:2531:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2527:16:2527:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2527:22:2529:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2528:17:2528:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2529:20:2531:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2530:17:2530:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2537:15:2537:15 | x | | main.rs:2535:5:2541:5 | Self [trait MySelfTrait] | +| main.rs:2540:15:2540:15 | x | | main.rs:2535:5:2541:5 | Self [trait MySelfTrait] | +| main.rs:2545:15:2545:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2545:31:2547:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:13:2546:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:13:2546:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2546:17:2546:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2550:15:2550:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2550:32:2552:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:13:2551:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:13:2551:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2551:17:2551:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2557:15:2557:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2557:31:2559:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2558:13:2558:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2558:13:2558:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2562:15:2562:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2562:32:2564:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2563:13:2563:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2567:16:2592:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2568:13:2568:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:9:2569:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:9:2569:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2569:18:2569:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:9:2570:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:9:2570:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:18:2570:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2570:18:2570:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:19:2570:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:9:2571:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:9:2571:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2571:18:2571:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2573:9:2573:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:9:2573:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:9:2573:31 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:11:2573:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:24:2573:30 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2573:24:2573:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2573:26:2573:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:9:2574:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2574:9:2574:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:11:2574:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2574:24:2574:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:9:2575:15 | S(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2575:9:2575:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:9:2575:29 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | +| main.rs:2575:11:2575:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:24:2575:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2575:24:2575:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:25:2575:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:13:2577:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:17:2577:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2577:30:2577:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:13:2578:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:17:2578:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2578:30:2578:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2579:13:2579:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2579:22:2579:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2579:38:2579:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2580:9:2580:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2580:23:2580:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2580:30:2580:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2581:9:2581:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2581:23:2581:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2581:29:2581:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2582:9:2582:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2582:27:2582:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2582:34:2582:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2584:9:2584:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2584:17:2584:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2585:9:2585:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2585:17:2585:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2586:9:2586:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2586:18:2586:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2587:9:2587:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2587:18:2587:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2588:9:2588:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2588:25:2588:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2589:9:2589:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2589:25:2589:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2590:9:2590:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2590:25:2590:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2591:9:2591:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2591:25:2591:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2599:26:2601:9 | { ... } | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2600:13:2600:25 | MyCallable {...} | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2603:17:2603:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2603:17:2603:21 | SelfParam | &T | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2603:31:2605:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2608:16:2715:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2611:9:2611:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:18:2611:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2611:18:2611:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:19:2611:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:22:2611:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:25:2611:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:28:2611:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2612:9:2612:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2612:18:2612:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2612:18:2612:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:18:2612:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2612:19:2612:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:22:2612:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:25:2612:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:32:2612:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| main.rs:2612:32:2612:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2612:40:2612:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:43:2612:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2613:9:2613:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:18:2613:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2613:18:2613:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:18:2613:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2613:18:2613:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:19:2613:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:22:2613:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:25:2613:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:40:2613:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2615:13:2615:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:21:2615:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:22:2615:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:9:2616:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:18:2616:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:24:2616:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2618:13:2618:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2618:13:2618:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:21:2618:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2618:21:2618:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:22:2618:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:28:2618:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:9:2619:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2619:18:2619:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2619:18:2619:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2619:24:2619:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2621:13:2621:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2621:13:2621:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:26:2621:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:31:2621:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:9:2622:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:18:2622:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2622:18:2622:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:24:2622:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2624:13:2624:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2624:13:2624:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:26:2624:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:31:2624:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:35:2624:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2625:9:2625:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2625:18:2625:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2625:18:2625:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2625:24:2625:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2627:17:2627:24 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2627:17:2627:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2627:17:2627:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2627:28:2627:48 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2627:28:2627:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2627:28:2627:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2627:29:2627:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2627:29:2627:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2627:36:2627:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2627:36:2627:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2627:43:2627:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2627:43:2627:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2628:9:2628:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2628:13:2628:13 | s | | file://:0:0:0:0 | & | +| main.rs:2628:13:2628:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2628:13:2628:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:18:2628:26 | &strings1 | | file://:0:0:0:0 | & | +| main.rs:2628:18:2628:26 | &strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:19:2628:26 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2628:19:2628:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2628:19:2628:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:28:2628:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2629:9:2629:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2629:13:2629:13 | s | | file://:0:0:0:0 | & | +| main.rs:2629:13:2629:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2629:13:2629:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:18:2629:30 | &mut strings1 | | file://:0:0:0:0 | & | +| main.rs:2629:18:2629:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | +| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:23:2629:30 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2629:23:2629:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2629:23:2629:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:32:2629:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2630:9:2630:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2630:13:2630:13 | s | | file://:0:0:0:0 | & | +| main.rs:2630:13:2630:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2630:18:2630:25 | strings1 | | file://:0:0:0:0 | [] | +| main.rs:2630:18:2630:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2630:18:2630:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2630:27:2630:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2632:13:2632:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2632:13:2632:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2633:9:2637:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2633:9:2637:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2634:13:2634:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2634:26:2634:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2634:26:2634:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2635:13:2635:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2635:26:2635:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2635:26:2635:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2636:13:2636:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2636:26:2636:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2636:26:2636:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2638:9:2638:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2638:18:2638:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2638:18:2638:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2638:27:2638:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2640:13:2640:20 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2640:13:2640:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2640:13:2640:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2641:9:2645:9 | &... | | file://:0:0:0:0 | & | +| main.rs:2641:9:2645:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2641:9:2645:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2641:10:2645:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2641:10:2645:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2642:13:2642:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2642:26:2642:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2642:26:2642:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2643:13:2643:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2643:26:2643:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2643:26:2643:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2644:13:2644:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2644:26:2644:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2644:26:2644:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2646:9:2646:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | Item | +| main.rs:2646:13:2646:13 | s | | file://:0:0:0:0 | & | +| main.rs:2646:13:2646:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2646:18:2646:25 | strings3 | | file://:0:0:0:0 | & | +| main.rs:2646:18:2646:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2646:18:2646:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2646:27:2646:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2648:13:2648:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2648:13:2648:21 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:25:2648:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2648:25:2648:81 | [...] | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:26:2648:42 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:45:2648:61 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:64:2648:80 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2649:9:2653:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2649:13:2649:13 | c | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2650:12:2650:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2650:12:2650:20 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2651:9:2653:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2652:17:2652:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2652:26:2652:33 | c.call() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2657:9:2657:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:18:2657:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:18:2657:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2657:18:2657:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:21:2657:22 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2657:24:2657:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2658:9:2658:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2658:13:2658:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:18:2658:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2658:18:2658:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | +| main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:19:2658:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:19:2658:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:28:2658:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2659:13:2659:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2659:13:2659:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:21:2659:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:21:2659:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2659:21:2659:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2659:24:2659:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:9:2660:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:18:2660:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2660:18:2660:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:24:2660:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2661:13:2661:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2661:26:2661:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2662:9:2662:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2662:13:2662:13 | i | | {EXTERNAL LOCATION} | Item | +| main.rs:2662:18:2662:48 | &... | | file://:0:0:0:0 | & | +| main.rs:2662:19:2662:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2662:19:2662:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:20:2662:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:26:2662:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:32:2662:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:38:2662:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2662:50:2662:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2664:13:2664:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2664:13:2664:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2665:9:2668:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2665:9:2668:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2666:20:2666:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2667:18:2667:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:9:2669:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | Item | +| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:18:2669:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2669:18:2669:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2669:25:2669:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2673:26:2673:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:29:2673:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:32:2673:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2674:9:2674:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2674:24:2674:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2676:13:2676:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2676:13:2676:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2676:13:2676:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:32:2676:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:32:2676:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2676:32:2676:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2676:32:2676:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:33:2676:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:39:2676:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:42:2676:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2677:9:2677:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2677:13:2677:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2677:18:2677:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2677:18:2677:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2677:18:2677:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2677:25:2677:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2679:22:2679:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2679:23:2679:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2679:29:2679:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:32:2679:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2680:9:2680:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2680:25:2680:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2682:13:2682:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2682:13:2682:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2682:13:2682:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:13:2682:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:21:2682:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2682:21:2682:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:31:2682:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:32:2682:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:38:2682:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:41:2682:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:9:2683:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2683:18:2683:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2683:18:2683:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2683:24:2683:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2685:13:2685:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2685:13:2685:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2685:13:2685:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2685:13:2685:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2685:32:2685:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2685:32:2685:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2685:32:2685:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:33:2685:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:39:2685:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:42:2685:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2686:9:2686:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2686:13:2686:13 | u | | file://:0:0:0:0 | & | +| main.rs:2686:13:2686:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:18:2686:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2686:18:2686:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2686:18:2686:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2686:18:2686:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:24:2686:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2688:17:2688:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2688:17:2688:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:17:2688:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2688:25:2688:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2688:25:2688:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2688:25:2688:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2689:9:2689:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2689:9:2689:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2689:9:2689:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2689:9:2689:23 | vals7.push(...) | | file://:0:0:0:0 | () | +| main.rs:2689:20:2689:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:9:2690:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2690:13:2690:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:18:2690:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2690:18:2690:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2690:18:2690:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2690:24:2690:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2692:33:2692:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:36:2692:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:45:2692:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:48:2692:48 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2694:13:2694:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2694:17:2697:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2694:36:2697:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2695:13:2696:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2695:29:2696:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2699:17:2699:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2699:17:2699:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:17:2699:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2699:17:2699:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2699:17:2699:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2699:17:2699:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2699:17:2699:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2699:24:2699:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2699:24:2699:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:24:2699:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2699:24:2699:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2699:24:2699:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2700:9:2700:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:9:2700:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2700:9:2700:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2700:9:2700:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:9:2700:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2700:9:2700:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2700:9:2700:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:21:2700:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:24:2700:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2700:24:2700:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2700:24:2700:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2700:24:2700:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:33:2700:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2700:33:2700:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2701:9:2701:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:9:2701:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2701:9:2701:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2701:9:2701:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:9:2701:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2701:9:2701:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2701:9:2701:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:21:2701:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:24:2701:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2701:24:2701:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2701:24:2701:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2701:24:2701:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:33:2701:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2701:33:2701:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2702:9:2702:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | Item | +| main.rs:2702:13:2702:15 | key | | file://:0:0:0:0 | & | +| main.rs:2702:13:2702:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2702:20:2702:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2702:20:2702:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2702:20:2702:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2702:20:2702:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2702:20:2702:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2702:20:2702:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2702:20:2702:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:20:2702:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2702:20:2702:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2702:20:2702:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2702:20:2702:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2702:32:2702:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2703:9:2703:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | Item | +| main.rs:2703:13:2703:17 | value | | file://:0:0:0:0 | & | +| main.rs:2703:13:2703:17 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2703:13:2703:17 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:13:2703:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2703:13:2703:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2703:22:2703:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:22:2703:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2703:22:2703:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2703:22:2703:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:22:2703:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2703:22:2703:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2703:22:2703:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2703:22:2703:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2703:22:2703:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:22:2703:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2703:22:2703:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:36:2703:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2704:9:2704:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2704:13:2704:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2704:13:2704:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2704:13:2704:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:13:2704:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:14:2704:16 | key | | file://:0:0:0:0 | & | +| main.rs:2704:14:2704:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:19:2704:23 | value | | file://:0:0:0:0 | & | +| main.rs:2704:19:2704:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2704:19:2704:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:19:2704:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2704:19:2704:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2704:29:2704:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2704:29:2704:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2704:29:2704:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:29:2704:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2704:29:2704:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2704:29:2704:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2704:29:2704:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:29:2704:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2704:29:2704:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:41:2704:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2705:9:2705:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2705:13:2705:24 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2705:13:2705:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2705:13:2705:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:13:2705:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | +| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:14:2705:16 | key | | file://:0:0:0:0 | & | +| main.rs:2705:14:2705:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:19:2705:23 | value | | file://:0:0:0:0 | & | +| main.rs:2705:19:2705:23 | value | &T | {EXTERNAL LOCATION} | Box | +| main.rs:2705:19:2705:23 | value | &T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:19:2705:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2705:19:2705:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:29:2705:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2705:29:2705:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | +| main.rs:2705:29:2705:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:29:2705:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2705:29:2705:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | +| main.rs:2705:29:2705:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:29:2705:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2705:29:2705:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:30:2705:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2705:30:2705:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:30:2705:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2705:30:2705:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2705:30:2705:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:30:2705:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2705:30:2705:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:35:2705:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2709:17:2709:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2711:13:2711:13 | _ | | file://:0:0:0:0 | () | +| main.rs:2711:17:2714:9 | while ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2711:23:2711:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2711:23:2711:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2711:27:2711:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2712:9:2714:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2713:13:2713:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2713:13:2713:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2713:18:2713:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2725:40:2727:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2725:40:2727:9 | { ... } | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2725:40:2727:9 | { ... } | T.T | main.rs:2724:10:2724:19 | T | +| main.rs:2726:13:2726:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2726:13:2726:16 | None | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2726:13:2726:16 | None | T.T | main.rs:2724:10:2724:19 | T | +| main.rs:2729:30:2731:9 | { ... } | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2729:30:2731:9 | { ... } | T | main.rs:2724:10:2724:19 | T | +| main.rs:2730:13:2730:28 | S1(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2730:13:2730:28 | S1(...) | T | main.rs:2724:10:2724:19 | T | +| main.rs:2730:16:2730:27 | ...::default(...) | | main.rs:2724:10:2724:19 | T | +| main.rs:2733:19:2733:22 | SelfParam | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2733:19:2733:22 | SelfParam | T | main.rs:2724:10:2724:19 | T | +| main.rs:2733:33:2735:9 | { ... } | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2733:33:2735:9 | { ... } | T | main.rs:2724:10:2724:19 | T | +| main.rs:2734:13:2734:16 | self | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2734:13:2734:16 | self | T | main.rs:2724:10:2724:19 | T | +| main.rs:2746:15:2746:15 | x | | main.rs:2746:12:2746:12 | T | +| main.rs:2746:26:2748:5 | { ... } | | main.rs:2746:12:2746:12 | T | +| main.rs:2747:9:2747:9 | x | | main.rs:2746:12:2746:12 | T | +| main.rs:2750:16:2772:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2751:13:2751:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2751:13:2751:14 | x1 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2751:13:2751:14 | x1 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2751:34:2751:48 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2752:13:2752:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2752:13:2752:14 | x2 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2752:13:2752:14 | x2 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2752:18:2752:38 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2753:13:2753:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2753:13:2753:14 | x3 | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2753:13:2753:14 | x3 | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | T | main.rs:2719:5:2719:20 | S1 | +| main.rs:2753:18:2753:32 | ...::assoc_fun(...) | T.T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:13:2754:14 | x4 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:13:2754:14 | x4 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:18:2754:48 | ...::method(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:18:2754:48 | ...::method(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2754:35:2754:47 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2754:35:2754:47 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:13:2755:14 | x5 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:13:2755:14 | x5 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:18:2755:42 | ...::method(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:18:2755:42 | ...::method(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2755:29:2755:41 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2755:29:2755:41 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:13:2756:14 | x6 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2756:13:2756:14 | x6 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:18:2756:45 | S4::<...>(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2756:18:2756:45 | S4::<...>(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2756:27:2756:44 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:13:2757:14 | x7 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2757:13:2757:14 | x7 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:18:2757:23 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2757:18:2757:23 | S4(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2757:21:2757:22 | S2 | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2758:13:2758:14 | x8 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2758:13:2758:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:18:2758:22 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2758:18:2758:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:21:2758:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2759:13:2759:14 | x9 | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2759:13:2759:14 | x9 | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2759:18:2759:34 | S4(...) | | main.rs:2740:5:2740:27 | S4 | +| main.rs:2759:18:2759:34 | S4(...) | T4 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2759:21:2759:33 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2760:13:2760:15 | x10 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2760:13:2760:15 | x10 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2760:19:2763:9 | S5::<...> {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2760:19:2763:9 | S5::<...> {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2762:20:2762:37 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:13:2764:15 | x11 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2764:13:2764:15 | x11 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:19:2764:34 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2764:19:2764:34 | S5 {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2764:31:2764:32 | S2 | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2765:13:2765:15 | x12 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2765:13:2765:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2765:19:2765:33 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2765:19:2765:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2765:31:2765:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2766:13:2766:15 | x13 | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2766:13:2766:15 | x13 | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2766:19:2769:9 | S5 {...} | | main.rs:2742:5:2744:5 | S5 | +| main.rs:2766:19:2769:9 | S5 {...} | T5 | main.rs:2721:5:2722:14 | S2 | +| main.rs:2768:20:2768:32 | ...::default(...) | | main.rs:2721:5:2722:14 | S2 | +| main.rs:2770:13:2770:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:19:2770:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2770:30:2770:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2771:13:2771:15 | x15 | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2771:13:2771:15 | x15 | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2771:19:2771:37 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | +| main.rs:2771:19:2771:37 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | +| main.rs:2780:35:2782:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2780:35:2782:9 | { ... } | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2780:35:2782:9 | { ... } | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2781:13:2781:26 | TupleExpr | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:14:2781:18 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:21:2781:25 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2783:16:2783:19 | SelfParam | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2783:22:2783:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2786:16:2820:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2787:13:2787:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2787:13:2787:13 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:13:2787:13 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2788:17:2788:17 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2789:13:2789:18 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:14:2789:14 | c | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:17:2789:17 | d | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2790:13:2790:22 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:18:2790:18 | e | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:21:2790:21 | f | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2791:13:2791:26 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:18:2791:18 | g | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:25:2791:25 | h | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2793:9:2793:9 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:11 | a.0 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2794:9:2794:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2794:9:2794:9 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:9 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:11 | b.1 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2795:9:2795:9 | c | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2795:9:2795:15 | c.foo() | | file://:0:0:0:0 | () | +| main.rs:2796:9:2796:9 | d | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2796:9:2796:15 | d.foo() | | file://:0:0:0:0 | () | +| main.rs:2797:9:2797:9 | e | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2797:9:2797:15 | e.foo() | | file://:0:0:0:0 | () | +| main.rs:2798:9:2798:9 | f | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2798:9:2798:15 | f.foo() | | file://:0:0:0:0 | () | +| main.rs:2799:9:2799:9 | g | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2799:9:2799:15 | g.foo() | | file://:0:0:0:0 | () | +| main.rs:2800:9:2800:9 | h | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2800:9:2800:15 | h.foo() | | file://:0:0:0:0 | () | +| main.rs:2805:13:2805:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2805:17:2805:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2806:13:2806:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2806:17:2806:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2807:13:2807:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2807:13:2807:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:13:2807:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2807:20:2807:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2807:20:2807:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:20:2807:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2807:21:2807:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:24:2807:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2808:13:2808:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2808:22:2808:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2808:22:2808:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2808:22:2808:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2808:22:2808:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2809:13:2809:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2809:23:2809:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2809:23:2809:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2809:23:2809:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2809:23:2809:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2811:13:2811:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2811:13:2811:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:13:2811:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2811:20:2811:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2811:20:2811:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:21:2811:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:24:2811:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:9:2815:9 | match pair { ... } | | file://:0:0:0:0 | () | +| main.rs:2812:15:2812:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2812:15:2812:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:15:2812:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2813:13:2813:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:14:2813:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:17:2813:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:23:2813:42 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:2813:30:2813:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2813:30:2813:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2813:30:2813:41 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2813:30:2813:41 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2814:13:2814:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2814:13:2814:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:13:2814:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:18:2814:35 | MacroExpr | | file://:0:0:0:0 | () | +| main.rs:2814:25:2814:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2814:25:2814:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2814:25:2814:34 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2814:25:2814:34 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2816:13:2816:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2816:17:2816:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2818:13:2818:13 | y | | file://:0:0:0:0 | & | +| main.rs:2818:13:2818:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2818:13:2818:13 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:13:2818:13 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | | file://:0:0:0:0 | & | +| main.rs:2818:17:2818:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2818:17:2818:31 | &... | &T.0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | | file://:0:0:0:0 | & | +| main.rs:2819:9:2819:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2819:9:2819:9 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:11 | y.0 | | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2825:27:2847:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2826:13:2826:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2826:13:2826:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2826:13:2826:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:27:2826:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2826:27:2826:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2826:27:2826:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2826:36:2826:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2829:9:2837:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | +| main.rs:2829:15:2829:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2829:15:2829:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2829:15:2829:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:13:2830:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2830:13:2830:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2830:13:2830:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:17:2830:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2830:24:2832:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2831:26:2831:36 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2831:26:2831:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2833:13:2833:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2833:13:2833:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2833:13:2833:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2833:22:2836:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2835:26:2835:51 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2835:26:2835:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2840:13:2840:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:13:2840:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:13:2840:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2840:13:2840:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:13:2840:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:26:2840:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:26:2840:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:26:2840:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2840:26:2840:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:26:2840:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:35:2840:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2840:35:2840:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2840:35:2840:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2840:44:2840:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2841:9:2846:9 | match nested_box { ... } | | file://:0:0:0:0 | () | +| main.rs:2841:15:2841:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2841:15:2841:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2841:15:2841:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2841:15:2841:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2841:15:2841:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:13:2842:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2842:13:2842:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2842:13:2842:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2842:13:2842:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2842:13:2842:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2842:26:2845:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2844:26:2844:59 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2844:26:2844:59 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2856:36:2858:9 | { ... } | | main.rs:2853:5:2853:22 | Path | +| main.rs:2857:13:2857:19 | Path {...} | | main.rs:2853:5:2853:22 | Path | +| main.rs:2860:29:2860:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2860:29:2860:33 | SelfParam | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2860:59:2862:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2860:59:2862:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2860:59:2862:9 | { ... } | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2861:13:2861:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2861:13:2861:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2861:13:2861:30 | Ok(...) | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2861:16:2861:29 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2868:39:2870:9 | { ... } | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2869:13:2869:22 | PathBuf {...} | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2878:18:2878:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2878:18:2878:22 | SelfParam | &T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2878:34:2882:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2878:34:2882:9 | { ... } | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2880:33:2880:43 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | +| main.rs:2881:13:2881:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2881:13:2881:17 | &path | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2881:14:2881:17 | path | | main.rs:2853:5:2853:22 | Path | +| main.rs:2885:16:2893:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2886:13:2886:17 | path1 | | main.rs:2853:5:2853:22 | Path | +| main.rs:2886:21:2886:31 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | +| main.rs:2887:13:2887:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2887:13:2887:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2887:13:2887:17 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2887:21:2887:25 | path1 | | main.rs:2853:5:2853:22 | Path | +| main.rs:2887:21:2887:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2887:21:2887:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2887:21:2887:40 | path1.canonicalize() | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:13:2888:17 | path3 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:21:2888:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2888:21:2888:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2888:21:2888:25 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2888:21:2888:34 | path2.unwrap() | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2890:13:2890:20 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2890:24:2890:37 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2891:24:2891:31 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2898:14:2898:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2898:14:2898:18 | SelfParam | &T | main.rs:2897:5:2899:5 | Self [trait MyTrait] | +| main.rs:2905:14:2905:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2905:14:2905:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2905:14:2905:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2905:28:2907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2906:13:2906:16 | self | | file://:0:0:0:0 | & | +| main.rs:2906:13:2906:16 | self | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2906:13:2906:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2906:13:2906:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:14:2911:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2911:14:2911:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | &T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:28:2913:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:16 | self | | file://:0:0:0:0 | & | +| main.rs:2912:13:2912:16 | self | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | &T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:18 | self.0 | | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2917:15:2917:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2917:15:2917:19 | SelfParam | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2917:15:2917:19 | SelfParam | &T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2917:33:2919:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2917:33:2919:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2917:33:2919:9 | { ... } | T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:13:2918:24 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2918:13:2918:24 | S(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2918:13:2918:24 | S(...) | T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:15:2918:23 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2918:15:2918:23 | S(...) | T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:17:2918:20 | self | | file://:0:0:0:0 | & | +| main.rs:2918:17:2918:20 | self | &T | main.rs:2901:5:2902:19 | S | +| main.rs:2918:17:2918:20 | self | &T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:17:2918:22 | self.0 | | main.rs:2916:10:2916:16 | T | +| main.rs:2922:14:2922:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2922:48:2939:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2922:48:2939:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2922:48:2939:5 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2922:48:2939:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:13:2923:13 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:13:2923:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:17:2928:9 | if b {...} else {...} | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:17:2928:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2923:20:2923:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2923:22:2926:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2923:22:2926:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:17:2924:17 | y | | main.rs:2901:5:2902:19 | S | +| main.rs:2924:17:2924:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2924:21:2924:38 | ...::default(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2924:21:2924:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2925:13:2925:13 | y | | main.rs:2901:5:2902:19 | S | +| main.rs:2925:13:2925:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2926:16:2928:9 | { ... } | | main.rs:2901:5:2902:19 | S | +| main.rs:2926:16:2928:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2927:13:2927:16 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2927:13:2927:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2927:15:2927:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:13:2932:13 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2932:13:2932:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:17:2932:20 | S(...) | | main.rs:2901:5:2902:19 | S | +| main.rs:2932:17:2932:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2932:19:2932:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2933:9:2938:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:9:2938:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:12:2933:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2933:14:2936:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2933:14:2936:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2933:14:2936:9 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2933:14:2936:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:14:2936:9 | { ... } | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2933:14:2936:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2933:14:2936:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:17:2934:17 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:17:2934:17 | x | T | main.rs:2901:5:2902:19 | S | +| main.rs:2934:17:2934:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:21:2934:21 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2934:21:2934:26 | x.m2() | | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:26 | x.m2() | T | main.rs:2901:5:2902:19 | S | +| main.rs:2934:21:2934:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:13:2935:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2935:13:2935:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2935:13:2935:23 | ...::new(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2935:13:2935:23 | ...::new(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:13:2935:23 | ...::new(...) | T.T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:13:2935:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:13:2935:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2935:22:2935:22 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2935:22:2935:22 | x | T | main.rs:2901:5:2902:19 | S | +| main.rs:2935:22:2935:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2936:16:2938:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2936:16:2938:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2936:16:2938:9 | { ... } | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2936:16:2938:9 | { ... } | T | main.rs:2901:5:2902:19 | S | +| main.rs:2936:16:2938:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2936:16:2938:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:13:2937:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2937:13:2937:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2937:13:2937:23 | ...::new(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:2937:13:2937:23 | ...::new(...) | T | main.rs:2901:5:2902:19 | S | +| main.rs:2937:13:2937:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:13:2937:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2937:22:2937:22 | x | | main.rs:2901:5:2902:19 | S | +| main.rs:2937:22:2937:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2943:22:2947:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2944:18:2944:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2944:33:2946:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:13:2945:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:13:2945:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2945:17:2945:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2952:11:2952:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2952:30:2960:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2954:13:2954:13 | a | | file://:0:0:0:0 | () | +| main.rs:2954:17:2958:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2955:13:2957:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2955:16:2955:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2955:21:2957:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2956:24:2956:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2959:9:2959:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2963:20:2970:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2966:26:2966:27 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2968:18:2968:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2968:18:2968:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2969:9:2969:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2972:20:2974:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2973:16:2973:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2977:11:2977:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2977:30:2985:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2978:13:2978:13 | a | | file://:0:0:0:0 | () | +| main.rs:2978:17:2982:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2979:13:2981:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2979:16:2979:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2979:21:2981:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2980:24:2980:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2983:18:2983:29 | ...::_print(...) | | file://:0:0:0:0 | () | +| main.rs:2983:18:2983:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2983:29:2983:29 | a | | file://:0:0:0:0 | () | +| main.rs:2984:9:2984:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2989:16:3036:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2990:13:2990:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2990:13:2990:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2990:17:2990:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2990:17:2990:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2991:13:2991:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2991:13:2991:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2991:30:2991:30 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2991:30:2991:30 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2992:13:2992:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2992:13:2992:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2992:17:2992:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2992:17:2992:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2993:13:2993:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2993:13:2993:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2993:17:2993:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2993:17:2993:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2995:26:2995:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2995:26:2995:28 | opt | T | main.rs:2995:23:2995:23 | T | +| main.rs:2995:42:2995:42 | x | | main.rs:2995:23:2995:23 | T | +| main.rs:2995:48:2995:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2997:13:2997:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2997:13:2997:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2997:17:2997:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2997:17:2997:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2998:9:2998:24 | pin_option(...) | | file://:0:0:0:0 | () | +| main.rs:2998:20:2998:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2998:20:2998:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2998:23:2998:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:13:3005:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3005:13:3005:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:13:3005:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3005:17:3005:39 | ...::A {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3005:17:3005:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3005:17:3005:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3005:37:3005:37 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:13:3006:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3006:13:3006:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:13:3006:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3006:40:3006:40 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3006:40:3006:40 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3006:40:3006:40 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:13:3007:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3007:13:3007:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3007:13:3007:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:17:3007:52 | ...::A {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3007:17:3007:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3007:17:3007:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3007:50:3007:50 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:13:3009:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3009:13:3009:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:13:3009:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3009:17:3011:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3010:20:3010:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:3013:29:3013:29 | e | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3013:29:3013:29 | e | T1 | main.rs:3013:26:3013:26 | T | +| main.rs:3013:29:3013:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3013:53:3013:53 | x | | main.rs:3013:26:3013:26 | T | +| main.rs:3013:59:3013:60 | { ... } | | file://:0:0:0:0 | () | +| main.rs:3016:13:3016:13 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3016:13:3016:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3016:13:3016:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3016:17:3018:9 | ...::B {...} | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3016:17:3018:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3016:17:3018:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3017:20:3017:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:3019:9:3019:27 | pin_my_either(...) | | file://:0:0:0:0 | () | +| main.rs:3019:23:3019:23 | x | | main.rs:3000:9:3003:9 | MyEither | +| main.rs:3019:23:3019:23 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:3019:23:3019:23 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:3019:26:3019:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:13:3021:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3021:13:3021:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3021:13:3021:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:17:3021:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3021:17:3021:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3021:17:3021:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3021:28:3021:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3022:13:3022:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3022:13:3022:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3022:13:3022:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3022:38:3022:38 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3022:38:3022:38 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3022:38:3022:38 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:13:3023:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3023:13:3023:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3023:13:3023:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:17:3023:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3023:17:3023:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3023:17:3023:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3023:43:3023:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:13:3024:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3024:13:3024:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:3024:13:3024:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:3024:17:3024:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3024:43:3024:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3026:29:3026:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:3026:29:3026:31 | res | E | main.rs:3026:26:3026:26 | E | +| main.rs:3026:29:3026:31 | res | T | main.rs:3026:23:3026:23 | T | +| main.rs:3026:48:3026:48 | x | | main.rs:3026:26:3026:26 | E | +| main.rs:3026:54:3026:55 | { ... } | | file://:0:0:0:0 | () | +| main.rs:3028:13:3028:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3028:13:3028:13 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:3028:13:3028:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3028:17:3028:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:3028:17:3028:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | +| main.rs:3028:17:3028:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3028:28:3028:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3029:9:3029:28 | pin_result(...) | | file://:0:0:0:0 | () | +| main.rs:3029:20:3029:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:3029:20:3029:20 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:3029:20:3029:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3029:23:3029:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:3031:17:3031:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3031:17:3031:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3031:17:3031:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3031:21:3031:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:3031:21:3031:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:3031:21:3031:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3032:9:3032:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3032:9:3032:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3032:9:3032:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3032:9:3032:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:3032:16:3032:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:3034:13:3034:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:3034:17:3034:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:3035:9:3035:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:3035:9:3035:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:3035:9:3035:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:3035:9:3035:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:3035:16:3035:16 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:3044:11:3079:1 | { ... } | | file://:0:0:0:0 | () | +| main.rs:3045:5:3045:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3046:5:3046:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:5:3047:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:20:3047:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:3047:41:3047:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:3048:5:3048:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3049:5:3049:41 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3050:5:3050:45 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:3051:5:3051:30 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3052:5:3052:33 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3053:5:3053:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3054:5:3054:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3055:5:3055:32 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3056:5:3056:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3057:5:3057:36 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3058:5:3058:35 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3059:5:3059:29 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3060:5:3060:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3061:5:3061:24 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3062:5:3062:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3063:5:3063:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3064:5:3064:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:3064:5:3064:15 | ...::f(...) | Output | file://:0:0:0:0 | () | +| main.rs:3065:5:3065:19 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3066:5:3066:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3067:5:3067:14 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3068:5:3068:27 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3069:5:3069:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3070:5:3070:43 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3071:5:3071:15 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3072:5:3072:17 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3073:5:3073:23 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:3074:5:3074:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:3075:5:3075:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | +| main.rs:3076:5:3076:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:3077:5:3077:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:3077:5:3077:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:3077:5:3077:20 | ...::f(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | +| main.rs:3077:5:3077:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:3077:16:3077:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:3078:5:3078:23 | ...::f(...) | | file://:0:0:0:0 | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | From 46f5d89674e895c5142f6bfec52abc3fbcde9a40 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 13:01:53 +0100 Subject: [PATCH 791/965] Rust: Handle builtin types in path resolution --- .../codeql/rust/dataflow/internal/Content.qll | 7 +- .../rust/elements/internal/StructImpl.qll | 6 + .../rust/frameworks/stdlib/Builtins.qll | 33 + .../codeql/rust/internal/PathResolution.qll | 38 +- rust/ql/lib/codeql/rust/internal/Type.qll | 172 +- .../codeql/rust/internal/TypeInference.qll | 145 +- .../lib/codeql/rust/internal/TypeMention.qll | 31 +- rust/ql/lib/codeql/rust/security/Barriers.qll | 10 +- .../builtintypes/BuiltinTypes.expected | 21 + .../elements/builtintypes/BuiltinTypes.ql | 1 - .../test/library-tests/type-inference/main.rs | 30 +- .../type-inference/type-inference.expected | 4473 +++++++++-------- .../type-inference/type-inference.ql | 7 +- rust/tools/builtins/types.rs | 122 + 14 files changed, 2618 insertions(+), 2478 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll index 95a5fa98bb4..9457a0a7a50 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll @@ -4,6 +4,7 @@ private import rust private import codeql.rust.controlflow.CfgNodes +private import codeql.rust.frameworks.stdlib.Builtins private import DataFlowImpl /** @@ -36,7 +37,11 @@ class TupleFieldContent extends FieldContent, TTupleFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, int pos) { field.isStructField(s, pos) } - override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getTupleField() } + override FieldExprCfgNode getAnAccess() { + field = result.getFieldExpr().getTupleField() and + // tuples are handled using the special `TupleContent` type + not field = any(TupleType tt).getATupleField() + } final override string toString() { exists(Variant v, int pos, string vname | diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index 3b6fc1ee4ea..e4414305ae8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -32,10 +32,16 @@ module Impl { result.getName().getText() = name } + /** Gets a record field, if any. */ + StructField getAStructField() { result = this.getStructField(_) } + /** Gets the `i`th tuple field, if any. */ pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } + /** Gets a tuple field, if any. */ + TupleField getATupleField() { result = this.getTupleField(_) } + /** Holds if this struct uses tuple fields. */ pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 9269aff2bdc..038bbeaece4 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -136,3 +136,36 @@ class F32 extends FloatingPointTypeImpl { class F64 extends FloatingPointTypeImpl { F64() { this.getName() = "f64" } } + +/** The builtin slice type `[T]`. */ +class SliceType extends BuiltinType { + SliceType() { this.getName() = "Slice" } +} + +/** The builtin array type `[T; N]`. */ +class ArrayType extends BuiltinType { + ArrayType() { this.getName() = "Array" } +} + +/** The builtin reference type `&T` or `&mut T`. */ +class RefType extends BuiltinType { + RefType() { this.getName() = "Ref" } +} + +/** The builtin pointer type `*const T` or `*mut T`. */ +class PtrType extends BuiltinType { + PtrType() { this.getName() = "Ptr" } +} + +/** A builtin tuple type `(T1, T2, ...)`. */ +class TupleType extends BuiltinType { + TupleType() { this.getName().matches("Tuple%") } + + /** Gets the arity of this tuple type. */ + int getArity() { + not this.hasGenericParamList() and + result = 0 + or + result = this.getGenericParamList().getNumberOfGenericParams() + } +} diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 0933f2dcd95..69874a6e570 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -713,12 +713,34 @@ abstract class ImplOrTraitItemNode extends ItemNode { predicate hasAssocItem(string name) { name = this.getAnAssocItem().getName() } } +private TypeItemNode resolveBuiltin(TypeRepr tr) { + tr instanceof SliceTypeRepr and + result instanceof Builtins::SliceType + or + tr instanceof ArrayTypeRepr and + result instanceof Builtins::ArrayType + or + tr instanceof RefTypeRepr and + result instanceof Builtins::RefType + or + tr instanceof PtrTypeRepr and + result instanceof Builtins::PtrType + or + result.(Builtins::TupleType).getArity() = tr.(TupleTypeRepr).getNumberOfFields() +} + final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { Path getSelfPath() { result = super.getSelfTy().(PathTypeRepr).getPath() } Path getTraitPath() { result = super.getTrait().(PathTypeRepr).getPath() } - TypeItemNode resolveSelfTy() { result = resolvePath(this.getSelfPath()) } + TypeItemNode resolveSelfTyBuiltin() { result = resolveBuiltin(this.(Impl).getSelfTy()) } + + TypeItemNode resolveSelfTy() { + result = resolvePath(this.getSelfPath()) + or + result = this.resolveSelfTyBuiltin() + } TraitItemNode resolveTraitTy() { result = resolvePath(this.getTraitPath()) } @@ -893,7 +915,11 @@ private class ModuleItemNode extends ModuleLikeNode instanceof Module { } private class ImplItemNodeImpl extends ImplItemNode { - TypeItemNode resolveSelfTyCand() { result = resolvePathCand(this.getSelfPath()) } + TypeItemNode resolveSelfTyCand() { + result = resolvePathCand(this.getSelfPath()) + or + result = this.resolveSelfTyBuiltin() + } TraitItemNode resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) } } @@ -1764,6 +1790,10 @@ private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { or result = resolveUseTreeListItem(_, _, path, _) and ns = result.getNamespace() + or + result = resolveBuiltin(path.getSegment().getTypeRepr()) and + not path.getSegment().hasTraitTypeRepr() and + ns.isType() } pragma[nomagic] @@ -2141,7 +2171,9 @@ pragma[nomagic] private predicate builtin(string name, ItemNode i) { exists(BuiltinSourceFile builtins | builtins.getFile().getBaseName() = "types.rs" and - i = builtins.getASuccessor(name) + i = builtins.getASuccessor(name) and + not name = ["Slice", "Array", "Ref", "Ptr"] and + not name.matches("Tuple%") ) } diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 4b3f6e6ccb9..c6b475b62d7 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -7,6 +7,7 @@ private import codeql.rust.internal.CachedStages private import codeql.rust.elements.internal.generated.Raw private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.frameworks.stdlib.Stdlib +private import codeql.rust.frameworks.stdlib.Builtins as Builtins /** * Holds if a dyn trait type should have a type parameter associated with `n`. A @@ -31,39 +32,21 @@ private predicate dynTraitTypeParameter(Trait trait, AstNode n) { cached newtype TType = - TTuple(int arity) { - arity = - [ - any(TupleTypeRepr t).getNumberOfFields(), - any(TupleExpr e).getNumberOfFields(), - any(TuplePat p).getNumberOfFields() - ] and - Stages::TypeInferenceStage::ref() - } or - TStruct(Struct s) or + TStruct(Struct s) { Stages::TypeInferenceStage::ref() } or TEnum(Enum e) or TTrait(Trait t) or TUnion(Union u) or - TArrayType() or // todo: add size? - TRefType() or // todo: add mut? TImplTraitType(ImplTraitTypeRepr impl) or TDynTraitType(Trait t) { t = any(DynTraitTypeRepr dt).getTrait() } or - TSliceType() or TNeverType() or - TPtrType() or TUnknownType() or - TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or - TArrayTypeParameter() or TDynTraitTypeParameter(AstNode n) { dynTraitTypeParameter(_, n) } or TImplTraitTypeParameter(ImplTraitTypeRepr implTrait, TypeParam tp) { implTraitTypeParam(implTrait, _, tp) } or - TRefTypeParameter() or - TSelfTypeParameter(Trait t) or - TSliceTypeParameter() or - TPtrTypeParameter() + TSelfTypeParameter(Trait t) private predicate implTraitTypeParam(ImplTraitTypeRepr implTrait, int i, TypeParam tp) { implTrait.isInReturnPos() and @@ -106,26 +89,25 @@ abstract class Type extends TType { } /** A tuple type `(T, ...)`. */ -class TupleType extends Type, TTuple { +class TupleType extends StructType { private int arity; - TupleType() { this = TTuple(arity) } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TTupleTypeParameter(arity, i) - } + TupleType() { arity = this.getStruct().(Builtins::TupleType).getArity() } /** Gets the arity of this tuple type. */ int getArity() { result = arity } override string toString() { result = "(T_" + arity + ")" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getTupleTypeParameter(int arity, int i) { + result = any(TupleType t | t.getArity() = arity).getPositionalTypeParameter(i) } /** The unit type `()`. */ class UnitType extends TupleType { - UnitType() { this = TTuple(0) } + UnitType() { this.getArity() = 0 } override string toString() { result = "()" } } @@ -229,17 +211,15 @@ class UnionType extends Type, TUnion { * Array types like `[i64; 5]` are modeled as normal generic types * with a single type argument. */ -class ArrayType extends Type, TArrayType { - ArrayType() { this = TArrayType() } +class ArrayType extends StructType { + ArrayType() { this.getStruct() instanceof Builtins::ArrayType } - override TypeParameter getPositionalTypeParameter(int i) { - result = TArrayTypeParameter() and - i = 0 - } + override string toString() { result = "[;]" } +} - override string toString() { result = "[]" } - - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getArrayTypeParameter() { + result = any(ArrayType t).getPositionalTypeParameter(0) } /** @@ -248,17 +228,15 @@ class ArrayType extends Type, TArrayType { * Reference types like `& i64` are modeled as normal generic types * with a single type argument. */ -class RefType extends Type, TRefType { - RefType() { this = TRefType() } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TRefTypeParameter() and - i = 0 - } +class RefType extends StructType { + RefType() { this.getStruct() instanceof Builtins::RefType } override string toString() { result = "&" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getRefTypeParameter() { + result = any(RefType t).getPositionalTypeParameter(0) } /** @@ -340,17 +318,15 @@ class ImplTraitReturnType extends ImplTraitType { * Slice types like `[i64]` are modeled as normal generic types * with a single type argument. */ -class SliceType extends Type, TSliceType { - SliceType() { this = TSliceType() } - - override TypeParameter getPositionalTypeParameter(int i) { - result = TSliceTypeParameter() and - i = 0 - } +class SliceType extends StructType { + SliceType() { this.getStruct() instanceof Builtins::SliceType } override string toString() { result = "[]" } +} - override Location getLocation() { result instanceof EmptyLocation } +pragma[nomagic] +TypeParamTypeParameter getSliceTypeParameter() { + result = any(SliceType t).getPositionalTypeParameter(0) } class NeverType extends Type, TNeverType { @@ -361,11 +337,8 @@ class NeverType extends Type, TNeverType { override Location getLocation() { result instanceof EmptyLocation } } -class PtrType extends Type, TPtrType { - override TypeParameter getPositionalTypeParameter(int i) { - i = 0 and - result = TPtrTypeParameter() - } +class PtrType extends StructType { + PtrType() { this.getStruct() instanceof Builtins::PtrType } override string toString() { result = "*" } @@ -402,6 +375,11 @@ class UnknownType extends Type, TUnknownType { override Location getLocation() { result instanceof EmptyLocation } } +pragma[nomagic] +TypeParamTypeParameter getPtrTypeParameter() { + result = any(PtrType t).getPositionalTypeParameter(0) +} + /** A type parameter. */ abstract class TypeParameter extends Type { override TypeParameter getPositionalTypeParameter(int i) { none() } @@ -423,7 +401,32 @@ class TypeParamTypeParameter extends TypeParameter, TTypeParamTypeParameter { TypeParam getTypeParam() { result = typeParam } - override string toString() { result = typeParam.toString() } + override string toString() { + this = any(SliceType st).getATypeParameter() and + result = "[T]" + or + this = any(ArrayType at).getATypeParameter() and + result = "[T;...]" + or + this = any(RefType rt).getATypeParameter() and + result = "&T" + or + this = any(PtrType pt).getATypeParameter() and + result = "*T" + or + exists(TupleType tt, int arity, int i | + this = tt.getPositionalTypeParameter(i) and + arity = tt.getArity() and + result = i + "(" + arity + ")" + ) + or + not this = any(SliceType st).getATypeParameter() and + not this = any(ArrayType at).getATypeParameter() and + not this = any(RefType rt).getATypeParameter() and + not this = any(PtrType pt).getATypeParameter() and + not this = any(TupleType tt).getATypeParameter() and + result = typeParam.toString() + } override Location getLocation() { result = typeParam.getLocation() } } @@ -461,37 +464,6 @@ class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypePara override Location getLocation() { result = typeAlias.getLocation() } } -/** - * A tuple type parameter. For instance the `T` in `(T, U)`. - * - * Since tuples are structural their type parameters can be represented as their - * positional index. The type inference library requires that type parameters - * belong to a single type, so we also include the arity of the tuple type. - */ -class TupleTypeParameter extends TypeParameter, TTupleTypeParameter { - private int arity; - private int index; - - TupleTypeParameter() { this = TTupleTypeParameter(arity, index) } - - override string toString() { result = index.toString() + "(" + arity + ")" } - - override Location getLocation() { result instanceof EmptyLocation } - - /** Gets the index of this tuple type parameter. */ - int getIndex() { result = index } - - /** Gets the tuple type that corresponds to this tuple type parameter. */ - TupleType getTupleType() { result = TTuple(arity) } -} - -/** An implicit array type parameter. */ -class ArrayTypeParameter extends TypeParameter, TArrayTypeParameter { - override string toString() { result = "[T;...]" } - - override Location getLocation() { result instanceof EmptyLocation } -} - class DynTraitTypeParameter extends TypeParameter, TDynTraitTypeParameter { private AstNode n; @@ -539,26 +511,6 @@ class ImplTraitTypeParameter extends TypeParameter, TImplTraitTypeParameter { override Location getLocation() { result = typeParam.getLocation() } } -/** An implicit reference type parameter. */ -class RefTypeParameter extends TypeParameter, TRefTypeParameter { - override string toString() { result = "&T" } - - override Location getLocation() { result instanceof EmptyLocation } -} - -/** An implicit slice type parameter. */ -class SliceTypeParameter extends TypeParameter, TSliceTypeParameter { - override string toString() { result = "[T]" } - - override Location getLocation() { result instanceof EmptyLocation } -} - -class PtrTypeParameter extends TypeParameter, TPtrTypeParameter { - override string toString() { result = "*T" } - - override Location getLocation() { result instanceof EmptyLocation } -} - /** * The implicit `Self` type parameter of a trait, that refers to the * implementing type of the trait. diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 0ff39fdde78..0c54481b504 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -87,26 +87,6 @@ private module Input1 implements InputSig1 { int getTypeParameterId(TypeParameter tp) { tp = rank[result](TypeParameter tp0, int kind, int id1, int id2 | - tp0 instanceof ArrayTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 0 - or - tp0 instanceof RefTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 1 - or - tp0 instanceof SliceTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 2 - or - tp0 instanceof PtrTypeParameter and - kind = 0 and - id1 = 0 and - id2 = 3 - or kind = 1 and id1 = 0 and id2 = @@ -127,10 +107,6 @@ private module Input1 implements InputSig1 { node = tp0.(SelfTypeParameter).getTrait() or node = tp0.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr() ) - or - kind = 4 and - id1 = tp0.(TupleTypeParameter).getTupleType().getArity() and - id2 = tp0.(TupleTypeParameter).getIndex() | tp0 order by kind, id1, id2 ) @@ -421,7 +397,9 @@ module CertainTypeInference { any(IdentPat ip | n2 = ip.getName() and prefix1.isEmpty() and - if ip.isRef() then prefix2 = TypePath::singleton(TRefTypeParameter()) else prefix2.isEmpty() + if ip.isRef() + then prefix2 = TypePath::singleton(getRefTypeParameter()) + else prefix2.isEmpty() ) } @@ -631,11 +609,11 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n1 = n2.(RefPat).getPat() ) and prefix1.isEmpty() and - prefix2 = TypePath::singleton(TRefTypeParameter()) + prefix2 = TypePath::singleton(getRefTypeParameter()) or exists(int i, int arity | prefix1.isEmpty() and - prefix2 = TypePath::singleton(TTupleTypeParameter(arity, i)) + prefix2 = TypePath::singleton(getTupleTypeParameter(arity, i)) | arity = n2.(TupleExpr).getNumberOfFields() and n1 = n2.(TupleExpr).getField(i) @@ -663,12 +641,12 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat ale.getAnExpr() = n2 and ale.getNumberOfExprs() = 1 ) and - prefix1 = TypePath::singleton(TArrayTypeParameter()) and + prefix1 = TypePath::singleton(getArrayTypeParameter()) and prefix2.isEmpty() or // an array repeat expression (`[1; 3]`) has the type of the repeat operand n1.(ArrayRepeatExpr).getRepeatOperand() = n2 and - prefix1 = TypePath::singleton(TArrayTypeParameter()) and + prefix1 = TypePath::singleton(getArrayTypeParameter()) and prefix2.isEmpty() or exists(Struct s | @@ -717,7 +695,7 @@ private predicate lubCoercion(AstNode parent, AstNode child, TypePath prefix) { child = ale.getAnExpr() and ale.getNumberOfExprs() > 1 ) and - prefix = TypePath::singleton(TArrayTypeParameter()) + prefix = TypePath::singleton(getArrayTypeParameter()) or bodyReturns(parent, child) and strictcount(Expr e | bodyReturns(parent, e)) > 1 and @@ -956,9 +934,9 @@ private predicate inferStructExprType = ContextTyping::CheckContextTyping::check/2; pragma[nomagic] -private Type inferTupleRootType(AstNode n) { +private TupleType inferTupleRootType(AstNode n) { // `typeEquality` handles the non-root cases - result = TTuple([n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()]) + result.getArity() = [n.(TupleExpr).getNumberOfFields(), n.(TuplePat).getTupleArity()] } pragma[nomagic] @@ -1191,7 +1169,7 @@ private module MethodResolution { * * `strippedTypePath` points to the type `strippedType` inside `selfType`, * which is the (possibly complex-stripped) root type of `selfType`. For example, - * if `m` has a `&self` parameter, then `strippedTypePath` is `TRefTypeParameter()` + * if `m` has a `&self` parameter, then `strippedTypePath` is `getRefTypeParameter()` * and `strippedType` is the type inside the reference. */ pragma[nomagic] @@ -1401,7 +1379,7 @@ private module MethodResolution { this.hasNoCompatibleTargetBorrow(derefChain0) and t0 = this.getACandidateReceiverTypeAtNoBorrow(derefChain0, path0) | - path0.isCons(TRefTypeParameter(), path) and + path0.isCons(getRefTypeParameter(), path) and result = t0 and derefChain = derefChain0 + ".ref" or @@ -1583,11 +1561,11 @@ private module MethodResolution { borrow = true and ( path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = this.getACandidateReceiverTypeAtNoBorrow(derefChain, suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) ) } @@ -1706,12 +1684,12 @@ private module MethodResolution { override Type getArgumentTypeAt(ArgumentPosition pos, TypePath path) { if this.(Call).implicitBorrowAt(pos, true) then - result = TRefType() and + result instanceof RefType and path.isEmpty() or exists(TypePath path0 | result = inferType(this.getArgument(pos), path0) and - path = TypePath::cons(TRefTypeParameter(), path0) + path = TypePath::cons(getRefTypeParameter(), path0) ) else result = inferType(this.getArgument(pos), path) } @@ -1854,7 +1832,7 @@ private module MethodResolution { | mcc.hasNoBorrow() or - blanketPath.getHead() = TRefTypeParameter() + blanketPath.getHead() = getRefTypeParameter() ) } } @@ -2133,11 +2111,11 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi this instanceof IndexExpr then path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = inferType(this.getNodeAt(apos), suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) else ( not apos.isSelf() and @@ -2195,7 +2173,7 @@ private Type inferMethodCallType0( // the implicit deref apos.isReturn() and a instanceof IndexExpr - then path0.isCons(TRefTypeParameter(), path) + then path0.isCons(getRefTypeParameter(), path) else path = path0 ) } @@ -2219,12 +2197,12 @@ private Type inferMethodCallType1(AstNode n, boolean isReturn, TypePath path) { // adjust for implicit deref apos.isSelf() and derefChainBorrow = ".ref;" and - path = TypePath::cons(TRefTypeParameter(), path0) + path = TypePath::cons(getRefTypeParameter(), path0) or // adjust for implicit borrow apos.isSelf() and derefChainBorrow = ";borrow" and - path0.isCons(TRefTypeParameter(), path) + path0.isCons(getRefTypeParameter(), path) ) } @@ -2751,7 +2729,7 @@ private module OperationMatchingInput implements MatchingInputSig { private Type getParameterType(DeclarationPosition dpos, TypePath path) { exists(TypePath path0 | result = super.getParameterType(dpos, path0) and - if this.borrowsAt(dpos) then path0.isCons(TRefTypeParameter(), path) else path0 = path + if this.borrowsAt(dpos) then path0.isCons(getRefTypeParameter(), path) else path0 = path ) } @@ -2762,7 +2740,7 @@ private module OperationMatchingInput implements MatchingInputSig { private Type getReturnType(TypePath path) { exists(TypePath path0 | result = super.getReturnType(path0) and - if this.derefsReturn() then path0.isCons(TRefTypeParameter(), path) else path0 = path + if this.derefsReturn() then path0.isCons(getRefTypeParameter(), path) else path0 = path ) } @@ -2819,14 +2797,6 @@ private Type getTupleFieldExprLookupType(FieldExpr fe, int pos) { ) } -pragma[nomagic] -private TupleTypeParameter resolveTupleTypeFieldExpr(FieldExpr fe) { - exists(int arity, int i | - TTuple(arity) = getTupleFieldExprLookupType(fe, i) and - result = TTupleTypeParameter(arity, i) - ) -} - /** * A matching configuration for resolving types of field expressions like `x.field`. */ @@ -2851,8 +2821,7 @@ private module FieldExprMatchingInput implements MatchingInputSig { private newtype TDeclaration = TStructFieldDecl(StructField sf) or - TTupleFieldDecl(TupleField tf) or - TTupleTypeParameterDecl(TupleTypeParameter ttp) + TTupleFieldDecl(TupleField tf) abstract class Declaration extends TDeclaration { TypeParameter getTypeParameter(TypeParameterPosition ppos) { none() } @@ -2909,31 +2878,6 @@ private module FieldExprMatchingInput implements MatchingInputSig { override TypeRepr getTypeRepr() { result = tf.getTypeRepr() } } - private class TupleTypeParameterDecl extends Declaration, TTupleTypeParameterDecl { - private TupleTypeParameter ttp; - - TupleTypeParameterDecl() { this = TTupleTypeParameterDecl(ttp) } - - override Type getDeclaredType(DeclarationPosition dpos, TypePath path) { - dpos.isSelf() and - ( - result = ttp.getTupleType() and - path.isEmpty() - or - result = ttp and - path = TypePath::singleton(ttp) - ) - or - dpos.isField() and - result = ttp and - path.isEmpty() - } - - override string toString() { result = ttp.toString() } - - override Location getLocation() { result = ttp.getLocation() } - } - class AccessPosition = DeclarationPosition; class Access extends FieldExpr { @@ -2952,10 +2896,10 @@ private module FieldExprMatchingInput implements MatchingInputSig { if apos.isSelf() then // adjust for implicit deref - path0.isCons(TRefTypeParameter(), path) + path0.isCons(getRefTypeParameter(), path) or - not path0.isCons(TRefTypeParameter(), _) and - not (result = TRefType() and path0.isEmpty()) and + not path0.isCons(getRefTypeParameter(), _) and + not (result instanceof RefType and path0.isEmpty()) and path = path0 else path = path0 ) @@ -2966,8 +2910,7 @@ private module FieldExprMatchingInput implements MatchingInputSig { result = [ TStructFieldDecl(resolveStructFieldExpr(this)).(TDeclaration), - TTupleFieldDecl(resolveTupleFieldExpr(this)), - TTupleTypeParameterDecl(resolveTupleTypeFieldExpr(this)) + TTupleFieldDecl(resolveTupleFieldExpr(this)) ] } } @@ -2994,12 +2937,12 @@ private Type inferFieldExprType(AstNode n, TypePath path) { if apos.isSelf() then exists(Type receiverType | receiverType = inferType(n) | - if receiverType = TRefType() + if receiverType instanceof RefType then // adjust for implicit deref - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = TypePath::cons(TRefTypeParameter(), path0) + not path0.isCons(getRefTypeParameter(), _) and + not (path0.isEmpty() and result instanceof RefType) and + path = TypePath::cons(getRefTypeParameter(), path0) else path = path0 ) else path = path0 @@ -3016,7 +2959,7 @@ private Type inferRefNodeType(AstNode ref) { or ref instanceof RefPat ) and - result = TRefType() + result instanceof RefType } pragma[nomagic] @@ -3070,9 +3013,9 @@ private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { or le instanceof StringLiteralExpr and ( - path.isEmpty() and result = TRefType() + path.isEmpty() and result instanceof RefType or - path = TypePath::singleton(TRefTypeParameter()) and + path = TypePath::singleton(getRefTypeParameter()) and result = getStrStruct() ) and certain = true @@ -3146,7 +3089,7 @@ private Type inferAwaitExprType(AstNode n, TypePath path) { * Gets the root type of the array expression `ae`. */ pragma[nomagic] -private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result = TArrayType() } +private Type inferArrayExprType(ArrayExpr ae) { exists(ae) and result instanceof ArrayType } /** * Gets the root type of the range expression `re`. @@ -3182,11 +3125,11 @@ private Type inferIndexExprType(IndexExpr ie, TypePath path) { // todo: remove? exprPath.isCons(TTypeParamTypeParameter(any(Vec v).getElementTypeParam()), path) or - exprPath.isCons(any(ArrayTypeParameter tp), path) + exprPath.isCons(getArrayTypeParameter(), path) or exists(TypePath path0 | - exprPath.isCons(any(RefTypeParameter tp), path0) and - path0.isCons(any(SliceTypeParameter tp), path) + exprPath.isCons(getRefTypeParameter(), path0) and + path0.isCons(getSliceTypeParameter(), path) ) ) } @@ -3331,7 +3274,7 @@ private Type inferForLoopExprType(AstNode n, TypePath path) { or // TODO: Remove once we can handle the `impl IntoIterator for I` implementation tp = getIteratorItemTypeParameter() and - inferType(fe.getIterable()) != TArrayType() + inferType(fe.getIterable()) != getArrayTypeParameter() ) } @@ -3378,7 +3321,7 @@ pragma[nomagic] private TypePath closureParameterPath(int arity, int index) { result = TypePath::cons(TDynTraitTypeParameter(any(FnOnceTrait t).getTypeParam()), - TypePath::singleton(TTupleTypeParameter(arity, index))) + TypePath::singleton(getTupleTypeParameter(arity, index))) } /** Gets the path to the return type of the `FnOnce` trait. */ @@ -3394,7 +3337,7 @@ pragma[nomagic] private TypePath fnParameterPath(int arity, int index) { result = TypePath::cons(TTypeParamTypeParameter(any(FnOnceTrait t).getTypeParam()), - TypePath::singleton(TTupleTypeParameter(arity, index))) + TypePath::singleton(getTupleTypeParameter(arity, index))) } pragma[nomagic] @@ -3443,7 +3386,7 @@ private Type inferClosureExprType(AstNode n, TypePath path) { or n = ce and path = TypePath::singleton(TDynTraitTypeParameter(any(FnOnceTrait t).getTypeParam())) and - result = TTuple(ce.getNumberOfParams()) + result.(TupleType).getArity() = ce.getNumberOfParams() or // Propagate return type annotation to body n = ce.getClosureBody() and diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 8a76caf7ba5..90de48035e3 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -20,11 +20,11 @@ abstract class TypeMention extends AstNode { class TupleTypeReprMention extends TypeMention instanceof TupleTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TTuple(super.getNumberOfFields()) + result.(TupleType).getArity() = super.getNumberOfFields() or exists(TypePath suffix, int i | result = super.getField(i).(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TTupleTypeParameter(super.getNumberOfFields(), i), suffix) + path = TypePath::cons(getTupleTypeParameter(super.getNumberOfFields(), i), suffix) ) } } @@ -32,11 +32,11 @@ class TupleTypeReprMention extends TypeMention instanceof TupleTypeRepr { class ParenthesizedArgListMention extends TypeMention instanceof ParenthesizedArgList { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TTuple(super.getNumberOfTypeArgs()) + result.(TupleType).getArity() = super.getNumberOfTypeArgs() or exists(TypePath suffix, int index | result = super.getTypeArg(index).getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TTupleTypeParameter(super.getNumberOfTypeArgs(), index), suffix) + path = TypePath::cons(getTupleTypeParameter(super.getNumberOfTypeArgs(), index), suffix) ) } } @@ -44,11 +44,11 @@ class ParenthesizedArgListMention extends TypeMention instanceof ParenthesizedAr class ArrayTypeReprMention extends TypeMention instanceof ArrayTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TArrayType() + result instanceof ArrayType or exists(TypePath suffix | result = super.getElementTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TArrayTypeParameter(), suffix) + path = TypePath::cons(getArrayTypeParameter(), suffix) ) } } @@ -56,11 +56,11 @@ class ArrayTypeReprMention extends TypeMention instanceof ArrayTypeRepr { class RefTypeReprMention extends TypeMention instanceof RefTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TRefTypeParameter(), suffix) + path = TypePath::cons(getRefTypeParameter(), suffix) ) } } @@ -68,11 +68,11 @@ class RefTypeReprMention extends TypeMention instanceof RefTypeRepr { class SliceTypeReprMention extends TypeMention instanceof SliceTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TSliceType() + result instanceof SliceType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TSliceTypeParameter(), suffix) + path = TypePath::cons(getSliceTypeParameter(), suffix) ) } } @@ -291,6 +291,9 @@ class NonAliasPathTypeMention extends PathTypeMention { result = this.getSelfTraitBoundArg().resolveTypeAt(suffix) and typePath = TypePath::cons(TSelfTypeParameter(resolved), suffix) ) + or + not this.getSegment().hasTraitTypeRepr() and + result = this.getSegment().getTypeRepr().(TypeMention).resolveTypeAt(typePath) } } @@ -426,11 +429,11 @@ class ShorthandSelfParameterMention extends TypeMention instanceof SelfParam { then // `fn f(&self, ...)` typePath.isEmpty() and - result = TRefType() + result instanceof RefType or exists(TypePath suffix | result = this.resolveSelfType(suffix) and - typePath = TypePath::cons(TRefTypeParameter(), suffix) + typePath = TypePath::cons(getRefTypeParameter(), suffix) ) else // `fn f(self, ...)` @@ -541,11 +544,11 @@ class NeverTypeReprMention extends TypeMention, NeverTypeRepr { class PtrTypeReprMention extends TypeMention instanceof PtrTypeRepr { override Type resolveTypeAt(TypePath path) { path.isEmpty() and - result = TPtrType() + result instanceof PtrType or exists(TypePath suffix | result = super.getTypeRepr().(TypeMention).resolveTypeAt(suffix) and - path = TypePath::cons(TPtrTypeParameter(), suffix) + path = TypePath::cons(getPtrTypeParameter(), suffix) ) } } diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 398e4f56712..cc5ac55fd1b 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -7,7 +7,7 @@ import rust private import codeql.rust.dataflow.DataFlow private import codeql.rust.internal.TypeInference as TypeInference private import codeql.rust.internal.Type -private import codeql.rust.frameworks.stdlib.Builtins +private import codeql.rust.frameworks.stdlib.Builtins as Builtins /** * A node whose type is a numeric or boolean type, which may be an appropriate @@ -19,8 +19,8 @@ class NumericTypeBarrier extends DataFlow::Node { t = TypeInference::inferType(this.asExpr().getExpr()) and s = t.getStruct() | - s instanceof NumericType or - s instanceof Bool + s instanceof Builtins::NumericType or + s instanceof Builtins::Bool ) } } @@ -35,8 +35,8 @@ class IntegralOrBooleanTypeBarrier extends DataFlow::Node { t = TypeInference::inferType(this.asExpr().getExpr()) and s = t.getStruct() | - s instanceof IntegralType or - s instanceof Bool + s instanceof Builtins::IntegralType or + s instanceof Builtins::Bool ) } } diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected index 2b0aecda049..0a993bf6842 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -1,3 +1,24 @@ +| struct Array | | +| struct Ptr | | +| struct Ref | | +| struct Slice | | +| struct Tuple0 | | +| struct Tuple1 | | +| struct Tuple2 | | +| struct Tuple3 | | +| struct Tuple4 | | +| struct Tuple5 | | +| struct Tuple6 | | +| struct Tuple7 | | +| struct Tuple8 | | +| struct Tuple9 | | +| struct Tuple10 | | +| struct Tuple11 | | +| struct Tuple12 | | +| struct Tuple13 | | +| struct Tuple14 | | +| struct Tuple15 | | +| struct Tuple16 | | | struct bool | | | struct char | | | struct f32 | FloatingPointType, NumericType | diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql index 4da1117a3fb..8dfd49bc137 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -1,6 +1,5 @@ import rust import codeql.rust.frameworks.stdlib.Builtins -import codeql.rust.internal.Type string describe(BuiltinType t) { t instanceof NumericType and result = "NumericType" diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index a8568116afb..c18c43330c1 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1755,7 +1755,7 @@ mod builtins { let x = [1, 2, 3].my_method(); // $ target=my_method type=x:&T.i32 let x = <[_; 3]>::my_method(&[1, 2, 3]); // $ target=my_method type=x:&T.i32 - let x = <[i32; 3]>::my_func(); // $ MISSING: target=my_func type=x:i32 + let x = <[i32; 3]>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for [T] { fn my_method(&self) -> &T { @@ -1770,11 +1770,11 @@ mod builtins { let s: &[i32] = &[1, 2, 3]; let x = s.my_method(); // $ target=my_method type=x:&T.i32 let x = <[_]>::my_method(s); // $ target=my_method type=x:&T.i32 - let x = <[i32]>::my_func(); // $ MISSING: target=my_func type=x:i32 + let x = <[i32]>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for (T, i32) { fn my_method(&self) -> &T { - &self.0 + &self.0 // $ fieldof=Tuple2 } fn my_func() -> T { @@ -1785,7 +1785,7 @@ mod builtins { let p = (42, 7); let x = p.my_method(); // $ target=my_method type=x:&T.i32 let x = <(_, _)>::my_method(&p); // $ target=my_method type=x:&T.i32 - let x = <(i32, i32)>::my_func(); // $ MISSING: target=my_func type=x:i32 + let x = <(i32, i32)>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for &T { fn my_method(&self) -> &T { @@ -1800,7 +1800,7 @@ mod builtins { let r = &42; let x = r.my_method(); // $ target=my_method type=x:&T.i32 let x = <&_>::my_method(&r); // $ target=my_method type=x:&T.i32 - let x = <&i32>::my_func(); // $ MISSING: target=my_func type=x:i32 + let x = <&i32>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for *mut T { fn my_method(&self) -> &T { @@ -1816,7 +1816,7 @@ mod builtins { let p: *mut i32 = &mut v; let x = unsafe { p.my_method() }; // $ target=my_method type=x:&T.i32 let x = unsafe { <*mut _>::my_method(&p) }; // $ target=my_method type=x:&T.i32 - let x = <*mut i32>::my_func(); // $ MISSING: target=my_func type=x:i32 + let x = <*mut i32>::my_func(); // $ target=my_func type=x:i32 } } @@ -2344,7 +2344,7 @@ mod impl_trait { // For this function the `impl` type does not appear in the root of the return type let f = get_a_my_trait3(S1).unwrap().get_a(); // $ target=get_a_my_trait3 target=unwrap target=MyTrait::get_a type=f:S1 - let g = get_a_my_trait4(S1).0.get_a(); // $ target=get_a_my_trait4 target=MyTrait::get_a type=g:S1 + let g = get_a_my_trait4(S1).0.get_a(); // $ target=get_a_my_trait4 target=MyTrait::get_a type=g:S1 fieldof=Tuple2 } } @@ -2670,7 +2670,7 @@ mod loops { // for loops with containers - let vals3 = vec![1, 2, 3]; // $ MISSING: type=vals3:Vec type=vals3:T.i32 + let vals3 = vec![1, 2, 3]; // $ type=vals3:Vec $ MISSING: type=vals3:T.i32 for i in vals3 {} // $ MISSING: type=i:i32 let vals4a: Vec = [1u16, 2, 3].to_vec(); // $ certainType=vals4a:Vec certainType=vals4a:T.u16 @@ -2689,7 +2689,7 @@ mod loops { vals7.push(1u8); // $ target=push for u in vals7 {} // $ type=u:u8 - let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ MISSING: type=matrix1:Vec type=matrix1:T.Vec type=matrix1:T.T.i32 + let matrix1 = vec![vec![1, 2], vec![3, 4]]; // $ type=matrix1:Vec $ MISSING: type=matrix1:T.Vec type=matrix1:T.T.i32 #[rustfmt::skip] let _ = for row in matrix1 { // $ MISSING: type=row:Vec type=row:T.i32 for cell in row { // $ MISSING: type=cell:i32 @@ -2790,8 +2790,8 @@ mod tuples { let (mut e, f) = S1::get_pair(); // $ target=get_pair type=e:S1 type=f:S1 let (mut g, mut h) = S1::get_pair(); // $ target=get_pair type=g:S1 type=h:S1 - a.0.foo(); // $ target=foo - b.1.foo(); // $ target=foo + a.0.foo(); // $ target=foo fieldof=Tuple2 + b.1.foo(); // $ target=foo fieldof=Tuple2 c.foo(); // $ target=foo d.foo(); // $ target=foo e.foo(); // $ target=foo @@ -2805,18 +2805,18 @@ mod tuples { let a = Default::default(); // $ target=default type=a:i64 let b = Default::default(); // $ target=default type=b:bool let pair = (a, b); // $ type=pair:0(2).i64 type=pair:1(2).bool - let i: i64 = pair.0; - let j: bool = pair.1; + let i: i64 = pair.0; // $ fieldof=Tuple2 + let j: bool = pair.1; // $ fieldof=Tuple2 let pair = [1, 1].into(); // $ type=pair:(T_2) type=pair:0(2).i32 type=pair:1(2).i32 MISSING: target=into match pair { (0, 0) => print!("unexpected"), _ => print!("expected"), } - let x = pair.0; // $ type=x:i32 + let x = pair.0; // $ type=x:i32 fieldof=Tuple2 let y = &S1::get_pair(); // $ target=get_pair - y.0.foo(); // $ target=foo + y.0.foo(); // $ target=foo fieldof=Tuple2 } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 8e8465ae5f6..5b73cb2e29d 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,92 +1,92 @@ inferType -| blanket_impl.rs:15:18:15:22 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:15:18:15:22 | SelfParam | &T | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:15:42:17:9 | { ... } | | file://:0:0:0:0 | & | +| blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:15:42:17:9 | { ... } | &T | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:16:13:16:15 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:16:13:16:15 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:16:13:16:15 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:16:14:16:15 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:21:19:21:23 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:21:19:21:23 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:21:19:21:23 | SelfParam | &T | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | -| blanket_impl.rs:25:22:25:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:25:22:25:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:25:22:25:26 | SelfParam | &T | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | -| blanket_impl.rs:32:19:32:23 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:32:19:32:23 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:32:19:32:23 | SelfParam | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:32:34:34:9 | { ... } | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:33:13:33:17 | * ... | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:33:14:33:17 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:33:14:33:17 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:33:14:33:17 | self | &T | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:40:22:40:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:40:22:40:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:40:22:40:26 | SelfParam | &T | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:40:37:42:9 | { ... } | | blanket_impl.rs:38:10:38:18 | T | -| blanket_impl.rs:41:13:41:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:41:13:41:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:41:13:41:16 | self | &T | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:25 | self.clone1() | | blanket_impl.rs:38:10:38:18 | T | -| blanket_impl.rs:45:33:60:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:45:33:60:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:46:13:46:14 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:28 | S1.clone1() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:48:18:48:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:48:18:48:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:48:18:48:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:18:48:31 | ... .clone1() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:48:19:48:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:48:19:48:21 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:48:19:48:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:20:48:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:49:18:49:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:49:18:49:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:49:18:49:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:13:50:14 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:31 | S1.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:51:18:51:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:51:18:51:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:51:18:51:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:52:18:52:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:52:18:52:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:52:18:52:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:18:52:34 | ... .duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:52:19:52:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:52:19:52:21 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:52:19:52:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:20:52:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:53:18:53:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:53:18:53:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:53:18:53:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:18:54:35 | ...::duplicate(...) | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:54:32:54:34 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:54:32:54:34 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:54:32:54:34 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | -| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:55:18:55:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:55:18:55:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:57:18:57:25 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:58:18:58:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:57:18:57:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:58:18:58:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:58:19:58:21 | &S2 | | file://:0:0:0:0 | & | +| blanket_impl.rs:58:19:58:21 | &S2 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:58:19:58:21 | &S2 | &T | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | -| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:59:18:59:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:59:18:59:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | | blanket_impl.rs:72:24:72:24 | x | | {EXTERNAL LOCATION} | i64 | @@ -101,91 +101,91 @@ inferType | blanket_impl.rs:85:13:85:32 | ...::assoc_func1(...) | | blanket_impl.rs:82:10:82:18 | T | | blanket_impl.rs:85:28:85:28 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:85:31:85:31 | y | | blanket_impl.rs:82:10:82:18 | T | -| blanket_impl.rs:89:33:98:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:89:33:98:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:90:13:90:14 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:18:90:39 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:91:18:91:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:91:18:91:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:91:18:91:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:13:92:14 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:18:92:43 | ...::assoc_func1(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:93:18:93:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:93:18:93:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:93:18:93:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:13:94:14 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:18:94:39 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:95:18:95:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:95:18:95:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:95:18:95:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:13:96:14 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:18:96:43 | ...::assoc_func2(...) | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:97:18:97:25 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:97:18:97:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:97:18:97:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | -| blanket_impl.rs:108:22:108:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:108:22:108:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | -| blanket_impl.rs:112:26:112:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:112:26:112:30 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:112:26:112:30 | SelfParam | &T | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | -| blanket_impl.rs:119:26:119:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:119:26:119:30 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:119:26:119:30 | SelfParam | &T | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:119:49:121:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:119:49:121:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:120:13:120:34 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:120:13:120:34 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:120:18:120:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:120:18:120:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:120:18:120:21 | self | &T | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:120:18:120:33 | self.read_flag() | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:126:32:126:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:126:32:126:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:126:32:126:36 | SelfParam | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:126:55:128:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:126:55:128:9 | { ... } | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:127:13:127:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:127:13:127:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:127:13:127:16 | self | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:135:32:135:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:135:32:135:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:135:32:135:36 | SelfParam | &T | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | -| blanket_impl.rs:144:26:144:30 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:144:26:144:30 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:144:26:144:30 | SelfParam | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:144:49:146:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:144:49:146:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:145:13:145:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:145:13:145:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:145:18:145:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:145:18:145:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:145:18:145:21 | self | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:145:18:145:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:155:22:155:26 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:155:22:155:26 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:155:22:155:26 | SelfParam | &T | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:155:37:157:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:156:13:156:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:156:13:156:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:156:13:156:16 | self | &T | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:156:13:156:21 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:166:32:166:36 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:166:32:166:36 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:166:32:166:36 | SelfParam | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:166:55:168:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:166:55:168:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:167:13:167:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:167:13:167:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:167:18:167:21 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:167:18:167:21 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:167:18:167:21 | self | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:167:18:167:26 | self.flag | | {EXTERNAL LOCATION} | bool | -| blanket_impl.rs:171:15:184:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:171:15:184:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:172:13:172:23 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:27:172:50 | MyTryFlag {...} | | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:172:45:172:48 | true | | {EXTERNAL LOCATION} | bool | @@ -212,129 +212,129 @@ inferType | blanket_impl.rs:211:15:211:18 | SelfParam | | blanket_impl.rs:209:5:212:5 | Self [trait MyTrait4a] | | blanket_impl.rs:216:15:216:18 | SelfParam | | blanket_impl.rs:214:5:217:5 | Self [trait MyTrait4b] | | blanket_impl.rs:221:15:221:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:221:21:221:22 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:221:21:221:22 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:226:15:226:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:226:21:226:22 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:231:15:231:18 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:226:21:226:22 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:231:15:231:18 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:231:15:231:18 | SelfParam | &T | blanket_impl.rs:229:10:229:27 | T | -| blanket_impl.rs:231:21:233:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:232:13:232:16 | self | | file://:0:0:0:0 | & | +| blanket_impl.rs:231:21:233:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:232:13:232:16 | self | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:232:13:232:16 | self | &T | blanket_impl.rs:229:10:229:27 | T | -| blanket_impl.rs:232:13:232:21 | self.m1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:238:15:238:18 | SelfParam | | file://:0:0:0:0 | & | -| blanket_impl.rs:238:15:238:18 | SelfParam | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:232:13:232:21 | self.m1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:238:15:238:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | &T | {EXTERNAL LOCATION} | & | | blanket_impl.rs:238:15:238:18 | SelfParam | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:238:21:240:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:239:13:239:16 | self | | file://:0:0:0:0 | & | -| blanket_impl.rs:239:13:239:16 | self | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:238:21:240:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:239:13:239:16 | self | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:239:13:239:16 | self | &T | {EXTERNAL LOCATION} | & | | blanket_impl.rs:239:13:239:16 | self | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:239:13:239:21 | self.m1() | | file://:0:0:0:0 | () | +| blanket_impl.rs:239:13:239:21 | self.m1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | -| blanket_impl.rs:245:21:247:9 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:245:21:247:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | -| blanket_impl.rs:246:13:246:21 | self.m3() | | file://:0:0:0:0 | () | -| blanket_impl.rs:252:15:252:18 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:246:13:246:21 | self.m3() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:252:15:252:18 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:252:15:252:18 | SelfParam | &T | blanket_impl.rs:250:10:250:10 | T | -| blanket_impl.rs:252:21:252:22 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:255:33:263:5 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:256:13:256:14 | x1 | | file://:0:0:0:0 | () | +| blanket_impl.rs:252:21:252:22 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:255:33:263:5 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:256:13:256:14 | x1 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:256:18:256:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:256:18:256:24 | S1.m1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:13:257:14 | x2 | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:18:257:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:256:18:256:24 | S1.m1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:13:257:14 | x2 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:18:257:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:257:18:257:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:257:18:257:27 | ... .m2() | | file://:0:0:0:0 | () | -| blanket_impl.rs:257:19:257:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:257:18:257:27 | ... .m2() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:257:19:257:21 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:257:19:257:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:257:20:257:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:13:258:14 | x3 | | file://:0:0:0:0 | () | -| blanket_impl.rs:258:18:258:23 | (...) | | file://:0:0:0:0 | & | -| blanket_impl.rs:258:18:258:23 | (...) | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:258:13:258:14 | x3 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:258:18:258:23 | (...) | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:18:258:23 | (...) | &T | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:18:258:23 | (...) | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:18:258:28 | ... .m2() | | file://:0:0:0:0 | () | -| blanket_impl.rs:258:19:258:22 | &... | | file://:0:0:0:0 | & | -| blanket_impl.rs:258:19:258:22 | &... | &T | file://:0:0:0:0 | & | +| blanket_impl.rs:258:18:258:28 | ... .m2() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:258:19:258:22 | &... | | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:19:258:22 | &... | &T | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:19:258:22 | &... | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:258:20:258:22 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:258:20:258:22 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:258:20:258:22 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:21:258:22 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:259:13:259:14 | x4 | | file://:0:0:0:0 | () | +| blanket_impl.rs:259:13:259:14 | x4 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:259:18:259:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:259:18:259:24 | S1.m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:13:260:14 | x5 | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:18:260:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:259:18:259:24 | S1.m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:13:260:14 | x5 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:18:260:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:260:18:260:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:260:18:260:27 | ... .m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:260:19:260:21 | &S1 | | file://:0:0:0:0 | & | +| blanket_impl.rs:260:18:260:27 | ... .m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:260:19:260:21 | &S1 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:260:19:260:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:260:20:260:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | -| blanket_impl.rs:261:13:261:14 | x6 | | file://:0:0:0:0 | () | +| blanket_impl.rs:261:13:261:14 | x6 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:261:18:261:19 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:261:18:261:24 | S2.m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:13:262:14 | x7 | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:18:262:22 | (...) | | file://:0:0:0:0 | & | +| blanket_impl.rs:261:18:261:24 | S2.m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:13:262:14 | x7 | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:18:262:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:262:18:262:22 | (...) | &T | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:262:18:262:27 | ... .m4() | | file://:0:0:0:0 | () | -| blanket_impl.rs:262:19:262:21 | &S2 | | file://:0:0:0:0 | & | +| blanket_impl.rs:262:18:262:27 | ... .m4() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:262:19:262:21 | &S2 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:262:19:262:21 | &S2 | &T | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:262:20:262:21 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | -| blanket_impl.rs:272:21:272:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:272:21:272:25 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:272:21:272:25 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | -| blanket_impl.rs:273:24:273:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:273:24:273:28 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:273:24:273:28 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | | blanket_impl.rs:273:31:273:35 | query | | blanket_impl.rs:273:21:273:21 | E | -| blanket_impl.rs:277:21:277:25 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:277:21:277:25 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:277:21:277:25 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | -| blanket_impl.rs:277:28:279:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:277:28:279:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:278:22:278:41 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:281:24:281:28 | SelfParam | | file://:0:0:0:0 | & | +| blanket_impl.rs:278:22:278:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:278:22:278:41 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:281:24:281:28 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | -| blanket_impl.rs:281:42:283:9 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | file://:0:0:0:0 | & | +| blanket_impl.rs:281:42:283:9 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:282:22:282:41 | { ... } | | file://:0:0:0:0 | () | -| blanket_impl.rs:290:16:300:5 | { ... } | | file://:0:0:0:0 | () | +| blanket_impl.rs:282:22:282:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:282:22:282:41 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:290:16:300:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:291:13:291:13 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:291:17:291:34 | MySqlConnection {...} | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:293:9:293:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:293:9:293:20 | c.execute1() | | file://:0:0:0:0 | () | -| blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:294:35:294:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:293:9:293:20 | c.execute1() | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:294:35:294:36 | &c | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:294:35:294:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:296:9:296:41 | c.execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:296:9:296:41 | c.execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | | blanket_impl.rs:297:9:297:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:297:9:297:49 | c.execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:297:9:297:49 | c.execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:298:35:298:36 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:298:35:298:36 | &c | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:298:35:298:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | file://:0:0:0:0 | () | -| blanket_impl.rs:299:43:299:44 | &c | | file://:0:0:0:0 | & | +| blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:299:43:299:44 | &c | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:299:43:299:44 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | -| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | file://:0:0:0:0 | & | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | -| closure.rs:4:19:31:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:6:13:6:22 | my_closure | dyn(Args) | file://:0:0:0:0 | (T_2) | +| closure.rs:6:13:6:22 | my_closure | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | | closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | | closure.rs:6:13:6:22 | my_closure | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | | closure.rs:6:13:6:22 | my_closure | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_2) | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | @@ -346,11 +346,11 @@ inferType | closure.rs:8:13:8:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:8:22:8:25 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:9:13:9:19 | add_one | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:9:13:9:19 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:9:13:9:19 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:9:23:9:34 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:24:9:24 | n | | {EXTERNAL LOCATION} | i64 | @@ -359,7 +359,7 @@ inferType | closure.rs:9:31:9:34 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:13:10:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:10:18:10:24 | add_one | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:10:18:10:24 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:10:18:10:24 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:27 | add_one(...) | | {EXTERNAL LOCATION} | i64 | @@ -367,55 +367,55 @@ inferType | closure.rs:13:13:13:13 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:13:17:13:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:14:13:14:20 | add_zero | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:14:13:14:20 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:14:13:14:20 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:14:24:14:33 | \|...\| n | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:25:14:25 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:33:14:33 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:13:15:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:15:18:15:25 | add_zero | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:15:18:15:25 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:15:18:15:25 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:28 | add_zero(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:27:15:27 | x | | {EXTERNAL LOCATION} | i64 | | closure.rs:17:13:17:21 | _get_bool | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:17:13:17:21 | _get_bool | dyn(Args) | file://:0:0:0:0 | () | +| closure.rs:17:13:17:21 | _get_bool | dyn(Args) | {EXTERNAL LOCATION} | () | | closure.rs:17:13:17:21 | _get_bool | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:17:25:21:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:17:25:21:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | () | +| closure.rs:17:25:21:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | () | | closure.rs:17:25:21:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:17:36:21:9 | { ... } | | {EXTERNAL LOCATION} | bool | | closure.rs:19:17:19:17 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:19:21:19:38 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:20:13:20:13 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:24:13:24:14 | id | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:24:13:24:14 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:24:13:24:14 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:24:18:24:22 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:19:24:19 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:22:24:22 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:13:25:14 | _b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:25:18:25:19 | id | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:25:18:25:19 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:25:18:25:19 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:25 | id(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:25:21:25:24 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:28:13:28:15 | id2 | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:28:13:28:15 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:28:13:28:15 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:28:19:28:23 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:20:28:20 | b | | {EXTERNAL LOCATION} | bool | @@ -424,19 +424,19 @@ inferType | closure.rs:29:19:29:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:13:30:15 | _b2 | | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:30:25:30:27 | id2 | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:30:25:30:27 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:30:25:30:27 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:32 | id2(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:29:30:31 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:35:44:35:44 | f | | closure.rs:35:20:35:41 | F | -| closure.rs:35:50:37:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:35:50:37:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:36:13:36:19 | _return | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | | closure.rs:36:23:36:29 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:39:46:39:46 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:39:52:42:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:39:52:42:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:40:13:40:15 | arg | | {EXTERNAL LOCATION} | bool | | closure.rs:40:19:40:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:41:9:41:9 | f | | closure.rs:39:22:39:43 | F | @@ -454,14 +454,14 @@ inferType | closure.rs:49:9:49:12 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i32 | | closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:52:15:64:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:52:15:64:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:53:13:53:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:13:53:13 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:53:13:53:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:53:13:53:13 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:53:17:59:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | @@ -484,20 +484,20 @@ inferType | closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | | closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:60:24:60:24 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:60:24:60:24 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:60:24:60:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:60:24:60:24 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:60:27:60:30 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:62:13:62:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:13:62:13 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:62:13:62:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:62:17:62:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:17:62:25 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:62:17:62:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:62:25:62:25 | 1 | | {EXTERNAL LOCATION} | i32 | | closure.rs:63:13:63:15 | _r2 | | {EXTERNAL LOCATION} | i64 | | closure.rs:63:19:63:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:63:29:63:29 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:63:29:63:29 | f | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:63:29:63:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:68:54:68:54 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:68:54:68:54 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:68:54:68:54 | f | T | closure.rs:68:26:68:51 | F | @@ -511,17 +511,17 @@ inferType | closure.rs:72:30:72:30 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:72:30:72:30 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:72:30:72:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:72:30:72:30 | f | T.dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:72:30:72:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:72:30:72:30 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | | closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:72:66:75:5 | { ... } | | file://:0:0:0:0 | () | +| closure.rs:72:66:75:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:73:13:73:15 | _r1 | | closure.rs:72:27:72:27 | B | | closure.rs:73:19:73:37 | apply_boxed(...) | | closure.rs:72:27:72:27 | B | | closure.rs:73:31:73:31 | f | | {EXTERNAL LOCATION} | Box | | closure.rs:73:31:73:31 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:73:31:73:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:73:31:73:31 | f | T.dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:73:31:73:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:73:31:73:31 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | | closure.rs:73:31:73:31 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:73:34:73:36 | arg | | closure.rs:72:24:72:24 | A | @@ -530,55 +530,55 @@ inferType | closure.rs:74:31:74:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | closure.rs:74:31:74:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:40:74:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | file://:0:0:0:0 | (T_1) | +| closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | closure.rs:74:40:74:52 | \|...\| true | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | | closure.rs:74:40:74:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:12:14:12:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:12:14:12:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:12:29:14:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:12:29:14:5 | { ... } | | {EXTERNAL LOCATION} | & | | dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:9:13:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:13:9:13:19 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:10:13:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:13:10:13:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:25:14:25:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:25:14:25:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:25:27:27:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:25:27:27:5 | { ... } | | {EXTERNAL LOCATION} | & | | dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:9:26:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:26:9:26:19 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:10:26:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:26:10:26:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | | dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | -| dereference.rs:33:12:33:16 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:33:12:33:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:33:12:33:16 | SelfParam | &T | dereference.rs:30:1:30:15 | S | | dereference.rs:33:12:33:16 | SelfParam | &T.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:33:25:35:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:33:25:35:5 | { ... } | | {EXTERNAL LOCATION} | & | | dereference.rs:33:25:35:5 | { ... } | &T | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:9:34:15 | &... | | file://:0:0:0:0 | & | +| dereference.rs:34:9:34:15 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:34:9:34:15 | &... | &T | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:10:34:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:34:10:34:13 | self | | {EXTERNAL LOCATION} | & | | dereference.rs:34:10:34:13 | self | &T | dereference.rs:30:1:30:15 | S | | dereference.rs:34:10:34:13 | self | &T.T | dereference.rs:32:6:32:6 | T | | dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | -| dereference.rs:38:39:50:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:38:39:50:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:9:41:11 | _b1 | | file://:0:0:0:0 | & | +| dereference.rs:41:9:41:11 | _b1 | | {EXTERNAL LOCATION} | & | | dereference.rs:41:9:41:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:41:15:41:24 | a1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:41:15:41:24 | a1.deref() | | {EXTERNAL LOCATION} | & | | dereference.rs:41:15:41:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | @@ -594,17 +594,17 @@ inferType | dereference.rs:49:15:49:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:49:16:49:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:52:39:64:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:52:39:64:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:54:9:54:10 | c1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:54:14:54:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:55:9:55:11 | _d1 | | file://:0:0:0:0 | & | +| dereference.rs:55:9:55:11 | _d1 | | {EXTERNAL LOCATION} | & | | dereference.rs:55:9:55:11 | _d1 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:55:15:55:16 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:55:15:55:24 | c1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:55:15:55:24 | c1.deref() | | {EXTERNAL LOCATION} | & | | dereference.rs:55:15:55:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | | dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:58:9:58:10 | c2 | T | {EXTERNAL LOCATION} | char | @@ -626,39 +626,39 @@ inferType | dereference.rs:63:16:63:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:66:31:78:1 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:68:9:68:10 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:66:31:78:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:68:9:68:10 | e1 | | {EXTERNAL LOCATION} | & | | dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:68:14:68:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:17 | &'a' | | {EXTERNAL LOCATION} | & | | dereference.rs:68:14:68:17 | &'a' | &T | {EXTERNAL LOCATION} | char | | dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:69:9:69:11 | _f1 | | file://:0:0:0:0 | & | +| dereference.rs:69:9:69:11 | _f1 | | {EXTERNAL LOCATION} | & | | dereference.rs:69:9:69:11 | _f1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:16 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:16 | e1 | | {EXTERNAL LOCATION} | & | | dereference.rs:69:15:69:16 | e1 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:24 | e1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:24 | e1.deref() | | {EXTERNAL LOCATION} | & | | dereference.rs:69:15:69:24 | e1.deref() | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:72:9:72:10 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:72:9:72:10 | e2 | | {EXTERNAL LOCATION} | & | | dereference.rs:72:9:72:10 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:72:14:72:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:72:14:72:17 | &'a' | | {EXTERNAL LOCATION} | & | | dereference.rs:72:14:72:17 | &'a' | &T | {EXTERNAL LOCATION} | char | | dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:73:9:73:11 | _f2 | | {EXTERNAL LOCATION} | char | | dereference.rs:73:15:73:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:16:73:17 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:73:16:73:17 | e2 | | {EXTERNAL LOCATION} | & | | dereference.rs:73:16:73:17 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:76:9:76:10 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:76:9:76:10 | e3 | | {EXTERNAL LOCATION} | & | | dereference.rs:76:9:76:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:76:14:76:19 | &34i64 | | file://:0:0:0:0 | & | +| dereference.rs:76:14:76:19 | &34i64 | | {EXTERNAL LOCATION} | & | | dereference.rs:76:14:76:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:9:77:11 | _f3 | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:15:77:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:15:77:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:17:77:18 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:77:17:77:18 | e3 | | {EXTERNAL LOCATION} | & | | dereference.rs:77:17:77:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:80:31:92:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:80:31:92:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | @@ -666,12 +666,12 @@ inferType | dereference.rs:82:25:82:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:25:82:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | | dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:83:9:83:11 | _h1 | | file://:0:0:0:0 | & | +| dereference.rs:83:9:83:11 | _h1 | | {EXTERNAL LOCATION} | & | | dereference.rs:83:9:83:11 | _h1 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:83:15:83:24 | g1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:83:15:83:24 | g1.deref() | | {EXTERNAL LOCATION} | & | | dereference.rs:83:15:83:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | | dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | | dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | @@ -699,7 +699,7 @@ inferType | dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | | dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:94:27:105:1 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:94:27:105:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -723,88 +723,88 @@ inferType | dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:104:14:104:14 | z | T | dereference.rs:30:1:30:15 | S | | dereference.rs:104:14:104:14 | z | T.T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:131:19:139:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:131:19:139:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:17:132:26 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:132:17:132:26 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:132:17:132:26 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:17:132:26 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:132:17:132:26 | key_to_key | V | {EXTERNAL LOCATION} | & | | dereference.rs:132:17:132:26 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:30:132:57 | ...::new(...) | K | file://:0:0:0:0 | & | +| dereference.rs:132:30:132:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | | dereference.rs:132:30:132:57 | ...::new(...) | K.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:30:132:57 | ...::new(...) | V | file://:0:0:0:0 | & | +| dereference.rs:132:30:132:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | | dereference.rs:132:30:132:57 | ...::new(...) | V.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | | file://:0:0:0:0 | & | +| dereference.rs:133:17:133:19 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:133:17:133:19 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:133:17:133:19 | key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:133:17:133:19 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | | file://:0:0:0:0 | & | +| dereference.rs:133:23:133:29 | &... | | {EXTERNAL LOCATION} | & | | dereference.rs:133:23:133:29 | &... | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | &T | file://:0:0:0:0 | & | +| dereference.rs:133:23:133:29 | &... | &T | {EXTERNAL LOCATION} | & | | dereference.rs:133:23:133:29 | &... | &T.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:9:137:9 | if ... {...} | | file://:0:0:0:0 | () | +| dereference.rs:134:9:137:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:16:134:28 | Some(...) | T | file://:0:0:0:0 | & | +| dereference.rs:134:16:134:28 | Some(...) | T | {EXTERNAL LOCATION} | & | | dereference.rs:134:16:134:28 | Some(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:16:134:28 | Some(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:134:16:134:28 | Some(...) | T.&T | {EXTERNAL LOCATION} | & | | dereference.rs:134:16:134:28 | Some(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | | file://:0:0:0:0 | & | +| dereference.rs:134:21:134:27 | ref_key | | {EXTERNAL LOCATION} | & | | dereference.rs:134:21:134:27 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | &T | file://:0:0:0:0 | & | +| dereference.rs:134:21:134:27 | ref_key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:134:21:134:27 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:134:32:134:41 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:41 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:134:32:134:41 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:134:32:134:41 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:41 | key_to_key | V | {EXTERNAL LOCATION} | & | | dereference.rs:134:32:134:41 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | | dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | {EXTERNAL LOCATION} | & | | dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | | file://:0:0:0:0 | & | +| dereference.rs:134:47:134:49 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:134:47:134:49 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:134:47:134:49 | key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:134:47:134:49 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:52:137:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:136:13:136:15 | key | | file://:0:0:0:0 | & | +| dereference.rs:134:52:137:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:136:13:136:15 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:136:13:136:15 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:15 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:136:13:136:15 | key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:136:13:136:15 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:25 | ... = ... | | file://:0:0:0:0 | () | -| dereference.rs:136:19:136:25 | ref_key | | file://:0:0:0:0 | & | +| dereference.rs:136:13:136:25 | ... = ... | | {EXTERNAL LOCATION} | () | +| dereference.rs:136:19:136:25 | ref_key | | {EXTERNAL LOCATION} | & | | dereference.rs:136:19:136:25 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:19:136:25 | ref_key | &T | file://:0:0:0:0 | & | +| dereference.rs:136:19:136:25 | ref_key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:136:19:136:25 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:138:9:138:18 | key_to_key | K | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:18 | key_to_key | K | {EXTERNAL LOCATION} | & | | dereference.rs:138:9:138:18 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:138:9:138:18 | key_to_key | V | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:18 | key_to_key | V | {EXTERNAL LOCATION} | & | | dereference.rs:138:9:138:18 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | file://:0:0:0:0 | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | {EXTERNAL LOCATION} | & | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | | file://:0:0:0:0 | & | +| dereference.rs:138:27:138:29 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:138:27:138:29 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:138:27:138:29 | key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:138:27:138:29 | key | &T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | | file://:0:0:0:0 | & | +| dereference.rs:138:32:138:34 | key | | {EXTERNAL LOCATION} | & | | dereference.rs:138:32:138:34 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | &T | file://:0:0:0:0 | & | +| dereference.rs:138:32:138:34 | key | &T | {EXTERNAL LOCATION} | & | | dereference.rs:138:32:138:34 | key | &T.&T | dereference.rs:110:5:111:21 | Key | | dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | -| dereference.rs:151:16:151:19 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:151:16:151:19 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:151:16:151:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:152:13:152:13 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:16:158:19 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:158:16:158:19 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:158:16:158:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i32 | @@ -812,24 +812,24 @@ inferType | dereference.rs:164:16:164:19 | SelfParam | | dereference.rs:163:5:165:5 | Self [trait MyTrait2] | | dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | | dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:22:169:24 | arg | | file://:0:0:0:0 | & | +| dereference.rs:169:22:169:24 | arg | | {EXTERNAL LOCATION} | & | | dereference.rs:169:22:169:24 | arg | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:170:13:170:13 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:22:176:24 | arg | | file://:0:0:0:0 | & | +| dereference.rs:176:22:176:24 | arg | | {EXTERNAL LOCATION} | & | | dereference.rs:176:22:176:24 | arg | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:181:19:188:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:181:19:188:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:13:182:13 | x | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:182:17:182:20 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:182:17:182:20 | (...) | | {EXTERNAL LOCATION} | & | | dereference.rs:182:17:182:20 | (...) | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:182:18:182:19 | &S | | file://:0:0:0:0 | & | +| dereference.rs:182:18:182:19 | &S | | {EXTERNAL LOCATION} | & | | dereference.rs:182:18:182:19 | &S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:183:13:183:13 | y | | dereference.rs:147:5:147:13 | S | @@ -839,11 +839,11 @@ inferType | dereference.rs:183:17:183:23 | S.foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:13:184:13 | z | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:13:184:13 | z | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:17:184:24 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:184:17:184:24 | (...) | | {EXTERNAL LOCATION} | & | | dereference.rs:184:17:184:24 | (...) | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:18:184:23 | &mut S | | file://:0:0:0:0 | & | +| dereference.rs:184:18:184:23 | &mut S | | {EXTERNAL LOCATION} | & | | dereference.rs:184:18:184:23 | &mut S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:13:186:13 | x | | dereference.rs:147:5:147:13 | S | @@ -851,7 +851,7 @@ inferType | dereference.rs:186:17:186:17 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:17:186:25 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:186:23:186:24 | &S | | file://:0:0:0:0 | & | +| dereference.rs:186:23:186:24 | &S | | {EXTERNAL LOCATION} | & | | dereference.rs:186:23:186:24 | &S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:186:24:186:24 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:13:187:13 | y | | dereference.rs:147:5:147:13 | S | @@ -859,90 +859,90 @@ inferType | dereference.rs:187:17:187:17 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:17:187:29 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:17:187:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:187:23:187:28 | &mut S | | file://:0:0:0:0 | & | +| dereference.rs:187:23:187:28 | &mut S | | {EXTERNAL LOCATION} | & | | dereference.rs:187:23:187:28 | &mut S | &T | dereference.rs:147:5:147:13 | S | | dereference.rs:187:28:187:28 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:196:16:196:20 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:196:16:196:20 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:196:16:196:20 | SelfParam | &T | dereference.rs:195:5:197:5 | Self [trait Bar] | -| dereference.rs:201:16:201:24 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:201:16:201:24 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:201:16:201:24 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:201:27:203:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:202:13:202:39 | MacroExpr | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | file://:0:0:0:0 | & | +| dereference.rs:201:27:203:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:13:202:39 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | | dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | -| dereference.rs:202:22:202:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:202:22:202:38 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:208:16:208:20 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:202:22:202:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:202:22:202:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:208:16:208:20 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:208:23:210:9 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:209:13:209:38 | MacroExpr | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | file://:0:0:0:0 | & | +| dereference.rs:208:23:210:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:13:209:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | | dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | -| dereference.rs:209:22:209:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | MacroBlockExpr | | file://:0:0:0:0 | () | -| dereference.rs:209:22:209:37 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:213:19:216:5 | { ... } | | file://:0:0:0:0 | () | +| dereference.rs:209:22:209:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:209:22:209:37 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:213:19:216:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | | dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:215:9:215:15 | f.bar() | | file://:0:0:0:0 | () | -| dereference.rs:219:15:228:1 | { ... } | | file://:0:0:0:0 | () | -| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:224:5:224:26 | implicit_dereference(...) | | file://:0:0:0:0 | () | -| dereference.rs:225:5:225:41 | ...::test(...) | | file://:0:0:0:0 | () | -| dereference.rs:226:5:226:26 | ...::test(...) | | file://:0:0:0:0 | () | -| dereference.rs:227:5:227:34 | ...::main(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:7:10:7:14 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:215:9:215:15 | f.bar() | | {EXTERNAL LOCATION} | () | +| dereference.rs:219:15:228:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:224:5:224:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:225:5:225:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:226:5:226:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:227:5:227:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | -| dyn_type.rs:12:12:12:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:12:12:12:16 | SelfParam | &T | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | -| dyn_type.rs:18:12:18:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:18:12:18:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:18:12:18:16 | SelfParam | &T | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | -| dyn_type.rs:28:10:28:14 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:28:10:28:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:28:10:28:14 | SelfParam | &T | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:28:27:30:5 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:9:29:43 | MacroExpr | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | file://:0:0:0:0 | & | +| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | {EXTERNAL LOCATION} | & | | dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | &T | {EXTERNAL LOCATION} | str | | dyn_type.rs:29:17:29:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | MacroBlockExpr | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | { ... } | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:29:33:29:36 | self | | file://:0:0:0:0 | & | +| dyn_type.rs:29:33:29:36 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:29:33:29:36 | self | &T | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:29:33:29:42 | self.value | | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:40:12:40:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:40:12:40:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:40:12:40:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:40:12:40:16 | SelfParam | &T.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:40:24:42:5 | { ... } | | dyn_type.rs:38:6:38:21 | A | -| dyn_type.rs:41:9:41:12 | self | | file://:0:0:0:0 | & | +| dyn_type.rs:41:9:41:12 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:41:9:41:12 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:41:9:41:12 | self | &T.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:18 | self.value | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:26 | ... .clone() | | dyn_type.rs:38:6:38:21 | A | -| dyn_type.rs:51:12:51:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:51:12:51:16 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:51:12:51:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:51:12:51:16 | SelfParam | &T.A | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:51:34:53:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:51:34:53:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:51:34:53:5 | { ... } | 0(2) | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:51:34:53:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:52:9:52:34 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:52:9:52:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:52:9:52:34 | TupleExpr | 0(2) | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:9:52:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:52:10:52:13 | self | | file://:0:0:0:0 | & | +| dyn_type.rs:52:10:52:13 | self | | {EXTERNAL LOCATION} | & | | dyn_type.rs:52:10:52:13 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:52:10:52:13 | self | &T.A | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:19 | self.value | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:27 | ... .clone() | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:30:52:33 | true | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:56:40:56:40 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:56:40:56:40 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:56:40:56:40 | a | &T | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:56:52:58:1 | { ... } | | dyn_type.rs:56:10:56:10 | A | -| dyn_type.rs:57:5:57:5 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:57:5:57:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:57:5:57:5 | a | &T | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:57:5:57:11 | a.get() | | dyn_type.rs:56:10:56:10 | A | | dyn_type.rs:60:46:60:46 | a | | dyn_type.rs:60:18:60:43 | A | @@ -959,34 +959,34 @@ inferType | dyn_type.rs:61:14:61:35 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:61:14:61:35 | GenStruct {...} | A | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | -| dyn_type.rs:64:25:64:27 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:64:25:64:27 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:64:25:64:27 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:64:45:66:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:64:45:66:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:65:9:65:15 | _result | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:19:65:24 | (...) | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:65:19:65:28 | ... .m() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:20:65:23 | * ... | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:65:21:65:23 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:65:21:65:23 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:65:21:65:23 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | -| dyn_type.rs:68:27:68:29 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:68:27:68:29 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:68:27:68:29 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:68:27:68:29 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:68:57:71:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:68:57:71:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:69:9:69:16 | _result1 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:25 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:20:69:25 | (...) | dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:31 | ... .get() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:21:69:24 | * ... | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:21:69:24 | * ... | dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:69:22:69:24 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:69:22:69:24 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:69:22:69:24 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:22:69:24 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:9:70:16 | _result2 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:20:70:29 | get_a(...) | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:70:26:70:28 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:70:26:70:28 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:70:26:70:28 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:70:26:70:28 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | -| dyn_type.rs:73:26:76:1 | { ... } | | file://:0:0:0:0 | () | +| dyn_type.rs:73:26:76:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:74:9:74:11 | obj | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:74:9:74:11 | obj | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:74:9:74:11 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | @@ -1006,36 +1006,36 @@ inferType | dyn_type.rs:75:21:75:23 | obj | A | {EXTERNAL LOCATION} | Global | | dyn_type.rs:75:21:75:23 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:75:21:75:23 | obj | T.dyn(A) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:78:24:78:24 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:78:24:78:24 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:78:24:78:24 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:78:24:78:24 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:78:24:78:24 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:78:65:80:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:78:65:80:1 | { ... } | 0(2) | dyn_type.rs:78:18:78:18 | A | | dyn_type.rs:78:65:80:1 | { ... } | 1(2) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:79:5:79:5 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:79:5:79:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:79:5:79:5 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:79:5:79:5 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:79:5:79:5 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:79:5:79:11 | a.get() | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:79:5:79:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:79:5:79:11 | a.get() | 0(2) | dyn_type.rs:78:18:78:18 | A | | dyn_type.rs:79:5:79:11 | a.get() | 1(2) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:82:55:82:55 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:82:55:82:55 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:82:55:82:55 | a | &T | dyn_type.rs:82:20:82:52 | T | -| dyn_type.rs:82:72:84:1 | { ... } | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:82:72:84:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:82:72:84:1 | { ... } | 0(2) | dyn_type.rs:82:14:82:14 | A | | dyn_type.rs:82:72:84:1 | { ... } | 1(2) | dyn_type.rs:82:17:82:17 | B | -| dyn_type.rs:83:5:83:5 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:83:5:83:5 | a | | {EXTERNAL LOCATION} | & | | dyn_type.rs:83:5:83:5 | a | &T | dyn_type.rs:82:20:82:52 | T | -| dyn_type.rs:83:5:83:11 | a.get() | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:83:5:83:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:83:5:83:11 | a.get() | 0(2) | dyn_type.rs:82:14:82:14 | A | | dyn_type.rs:83:5:83:11 | a.get() | 1(2) | dyn_type.rs:82:17:82:17 | B | -| dyn_type.rs:86:20:86:22 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:86:20:86:22 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:86:20:86:22 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:86:20:86:22 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:86:20:86:22 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:86:58:99:1 | { ... } | | file://:0:0:0:0 | () | -| dyn_type.rs:87:9:90:5 | TuplePat | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:86:58:99:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:87:9:90:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:87:9:90:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:87:9:90:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:88:9:88:11 | _gp | | {EXTERNAL LOCATION} | i64 | @@ -1043,69 +1043,69 @@ inferType | dyn_type.rs:90:9:90:14 | (...) | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:9:90:14 | (...) | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:9:90:14 | (...) | dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:9:90:20 | ... .get() | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:90:9:90:20 | ... .get() | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:90:9:90:20 | ... .get() | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:90:9:90:20 | ... .get() | 1(2) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:10:90:13 | * ... | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:11:90:13 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:90:11:90:13 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:90:11:90:13 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:11:90:13 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:11:90:13 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:91:9:94:5 | TuplePat | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:91:9:94:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:91:9:94:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:91:9:94:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:92:9:92:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:93:9:93:11 | _ap | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:23:94:25 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:94:23:94:25 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:94:23:94:25 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:94:23:94:25 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:94:23:94:25 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:95:9:98:5 | TuplePat | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:95:9:98:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:95:9:98:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:95:9:98:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:96:9:96:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:97:9:97:11 | _ap | | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | | file://:0:0:0:0 | (T_2) | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | | {EXTERNAL LOCATION} | (T_2) | | dyn_type.rs:98:9:98:22 | assoc_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:98:9:98:22 | assoc_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:19:98:21 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:98:19:98:21 | obj | | {EXTERNAL LOCATION} | & | | dyn_type.rs:98:19:98:21 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:98:19:98:21 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:98:19:98:21 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:101:15:108:1 | { ... } | | file://:0:0:0:0 | () | -| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:102:26:102:48 | &... | | file://:0:0:0:0 | & | +| dyn_type.rs:101:15:108:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:102:26:102:48 | &... | | {EXTERNAL LOCATION} | & | | dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:45:102:46 | 42 | | {EXTERNAL LOCATION} | i32 | -| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:103:28:105:5 | &... | | file://:0:0:0:0 | & | +| dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:103:28:105:5 | &... | | {EXTERNAL LOCATION} | & | | dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:28:105:5 | &... | &T.A | {EXTERNAL LOCATION} | String | | dyn_type.rs:103:29:105:5 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:29:105:5 | GenStruct {...} | A | {EXTERNAL LOCATION} | String | -| dyn_type.rs:104:16:104:17 | "" | | file://:0:0:0:0 | & | +| dyn_type.rs:104:16:104:17 | "" | | {EXTERNAL LOCATION} | & | | dyn_type.rs:104:16:104:17 | "" | &T | {EXTERNAL LOCATION} | str | | dyn_type.rs:104:16:104:29 | "".to_string() | | {EXTERNAL LOCATION} | String | -| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | file://:0:0:0:0 | () | -| dyn_type.rs:107:21:107:45 | &... | | file://:0:0:0:0 | & | +| dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | {EXTERNAL LOCATION} | () | +| dyn_type.rs:107:21:107:45 | &... | | {EXTERNAL LOCATION} | & | | dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:21:107:45 | &... | &T.A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | | invalid/main.rs:8:16:8:19 | SelfParam | | invalid/main.rs:7:5:9:5 | Self [trait T1] | -| invalid/main.rs:8:22:8:23 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:8:22:8:23 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:12:16:12:19 | SelfParam | | invalid/main.rs:11:5:15:5 | Self [trait T2] | -| invalid/main.rs:12:22:14:9 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:12:22:14:9 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:13:13:13:16 | self | | invalid/main.rs:11:5:15:5 | Self [trait T2] | -| invalid/main.rs:13:13:13:22 | self.foo() | | file://:0:0:0:0 | () | +| invalid/main.rs:13:13:13:22 | self.foo() | | {EXTERNAL LOCATION} | () | | invalid/main.rs:25:22:25:25 | SelfParam | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:25:28:25:32 | other | | invalid/main.rs:24:5:26:5 | Self [trait AddAlias] | | invalid/main.rs:29:22:29:25 | SelfParam | | invalid/main.rs:21:5:22:20 | Num | @@ -1123,7 +1123,7 @@ inferType | invalid/main.rs:40:13:40:16 | self | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:13:40:33 | self.add_alias(...) | | invalid/main.rs:35:10:35:20 | T | | invalid/main.rs:40:28:40:32 | other | | invalid/main.rs:35:10:35:20 | T | -| invalid/main.rs:44:30:49:5 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:44:30:49:5 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:45:13:45:13 | a | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:17:45:22 | Num(...) | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:45:21:45:21 | 5 | | {EXTERNAL LOCATION} | i32 | @@ -1134,64 +1134,64 @@ inferType | invalid/main.rs:47:17:47:17 | a | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:47:17:47:21 | ... + ... | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:47:21:47:21 | b | | invalid/main.rs:21:5:22:20 | Num | -| invalid/main.rs:57:19:57:23 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:57:19:57:23 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:57:19:57:23 | SelfParam | &T | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | -| invalid/main.rs:61:22:61:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:61:22:61:26 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:61:22:61:26 | SelfParam | &T | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | -| invalid/main.rs:68:19:68:23 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:68:19:68:23 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:68:19:68:23 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:68:34:70:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:69:13:69:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:69:14:69:17 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:69:14:69:17 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:69:14:69:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:75:22:75:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:75:22:75:26 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:75:22:75:26 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:75:37:77:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:76:13:76:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:76:14:76:17 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:76:14:76:17 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:76:14:76:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | -| invalid/main.rs:83:22:83:26 | SelfParam | | file://:0:0:0:0 | & | +| invalid/main.rs:83:22:83:26 | SelfParam | | {EXTERNAL LOCATION} | & | | invalid/main.rs:83:22:83:26 | SelfParam | &T | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:83:37:85:9 | { ... } | | invalid/main.rs:81:10:81:18 | T | -| invalid/main.rs:84:13:84:16 | self | | file://:0:0:0:0 | & | +| invalid/main.rs:84:13:84:16 | self | | {EXTERNAL LOCATION} | & | | invalid/main.rs:84:13:84:16 | self | &T | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:25 | self.clone1() | | invalid/main.rs:81:10:81:18 | T | -| invalid/main.rs:88:33:92:5 | { ... } | | file://:0:0:0:0 | () | +| invalid/main.rs:88:33:92:5 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:91:13:91:13 | x | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:18 | S1 | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:91:17:91:30 | S1.duplicate() | | invalid/main.rs:53:5:54:14 | S1 | -| main.rs:25:30:28:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:25:30:28:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | -| main.rs:27:18:27:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:27:18:27:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:27:18:27:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:27:18:27:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:27:18:27:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | -| main.rs:30:46:33:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:30:46:33:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:17 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | -| main.rs:32:18:32:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:32:18:32:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:32:18:32:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:32:18:32:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:32:18:32:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:32:18:32:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | -| main.rs:35:31:63:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:35:31:63:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:13:37:13 | x | A | main.rs:3:5:4:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:3:5:4:13 | S | | main.rs:37:40:37:40 | S | | main.rs:3:5:4:13 | S | -| main.rs:38:18:38:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:38:18:38:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:38:18:38:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:38:18:38:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:38:18:38:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:38:26:38:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1200,10 +1200,10 @@ inferType | main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:3:5:4:13 | S | | main.rs:41:35:41:35 | S | | main.rs:3:5:4:13 | S | -| main.rs:42:18:42:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:42:18:42:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:42:18:42:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:42:18:42:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:42:18:42:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | | main.rs:42:26:42:28 | x.a | | main.rs:3:5:4:13 | S | @@ -1211,10 +1211,10 @@ inferType | main.rs:46:17:48:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | | main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | -| main.rs:49:18:49:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:49:18:49:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:49:18:49:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:49:18:49:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:49:18:49:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:49:26:49:28 | x.a | T | main.rs:3:5:4:13 | S | @@ -1226,10 +1226,10 @@ inferType | main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:3:5:4:13 | S | | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | -| main.rs:55:18:55:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:55:18:55:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:55:18:55:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:55:18:55:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:55:18:55:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | | main.rs:55:26:55:26 | x | A.T | main.rs:3:5:4:13 | S | @@ -1250,15 +1250,15 @@ inferType | main.rs:61:30:61:30 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:61:30:61:32 | x.a | T | main.rs:3:5:4:13 | S | -| main.rs:62:18:62:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:62:18:62:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:62:18:62:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:62:18:62:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:62:18:62:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | -| main.rs:65:16:68:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:66:9:66:29 | simple_field_access(...) | | file://:0:0:0:0 | () | -| main.rs:67:9:67:30 | generic_field_access(...) | | file://:0:0:0:0 | () | +| main.rs:65:16:68:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:66:9:66:29 | simple_field_access(...) | | {EXTERNAL LOCATION} | () | +| main.rs:67:9:67:30 | generic_field_access(...) | | {EXTERNAL LOCATION} | () | | main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | | main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | @@ -1266,10 +1266,10 @@ inferType | main.rs:79:32:81:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:80:13:80:16 | self | | main.rs:72:5:72:21 | Foo | | main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | -| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | file://:0:0:0:0 | & | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | & | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:85:18:85:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:85:18:85:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:85:18:85:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:85:18:85:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | | main.rs:86:17:86:22 | Foo {...} | | main.rs:72:5:72:21 | Foo | | main.rs:87:13:87:13 | y | | main.rs:72:5:72:21 | Foo | @@ -1278,10 +1278,10 @@ inferType | main.rs:91:14:91:14 | x | | main.rs:72:5:72:21 | Foo | | main.rs:91:22:91:22 | y | | main.rs:72:5:72:21 | Foo | | main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | -| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | file://:0:0:0:0 | & | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | & | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:92:18:92:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:92:18:92:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:92:18:92:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:92:18:92:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | | main.rs:93:9:93:14 | x.m1() | | main.rs:72:5:72:21 | Foo | | main.rs:94:9:94:9 | y | | main.rs:72:5:72:21 | Foo | @@ -1291,7 +1291,7 @@ inferType | main.rs:110:39:112:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:111:13:111:16 | self | | main.rs:99:5:102:5 | MyThing | | main.rs:111:13:111:22 | self.field | | {EXTERNAL LOCATION} | bool | -| main.rs:115:16:121:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:115:16:121:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:116:13:116:13 | x | | main.rs:99:5:102:5 | MyThing | | main.rs:116:17:116:39 | MyThing {...} | | main.rs:99:5:102:5 | MyThing | | main.rs:116:34:116:37 | true | | {EXTERNAL LOCATION} | bool | @@ -1304,39 +1304,39 @@ inferType | main.rs:120:13:120:13 | b | | {EXTERNAL LOCATION} | bool | | main.rs:120:17:120:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | | main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | -| main.rs:130:25:130:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:130:25:130:29 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:130:25:130:29 | SelfParam | &T | main.rs:128:9:133:9 | Self [trait Foo] | -| main.rs:130:32:132:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:131:26:131:31 | "foo!\\n" | | file://:0:0:0:0 | & | +| main.rs:130:32:132:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:131:26:131:31 | "foo!\\n" | | {EXTERNAL LOCATION} | & | | main.rs:131:26:131:31 | "foo!\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:131:26:131:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:131:26:131:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:137:25:137:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:131:26:131:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:131:26:131:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:137:25:137:29 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:137:25:137:29 | SelfParam | &T | main.rs:135:9:140:9 | Self [trait Bar] | -| main.rs:137:32:139:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:138:26:138:31 | "bar!\\n" | | file://:0:0:0:0 | & | +| main.rs:137:32:139:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:138:26:138:31 | "bar!\\n" | | {EXTERNAL LOCATION} | & | | main.rs:138:26:138:31 | "bar!\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:138:26:138:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:138:26:138:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:149:15:170:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:138:26:138:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:138:26:138:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:149:15:170:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:150:13:150:13 | x | | main.rs:142:9:142:21 | X | | main.rs:150:17:150:17 | X | | main.rs:142:9:142:21 | X | -| main.rs:151:9:154:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:151:9:154:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:153:13:153:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:153:13:153:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:155:9:158:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:153:13:153:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:155:9:158:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:157:13:157:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:157:13:157:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:159:9:162:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:157:13:157:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:159:9:162:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:161:13:161:13 | x | | main.rs:142:9:142:21 | X | -| main.rs:161:13:161:24 | x.a_method() | | file://:0:0:0:0 | () | -| main.rs:163:9:169:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:167:13:167:29 | ...::a_method(...) | | file://:0:0:0:0 | () | -| main.rs:167:27:167:28 | &x | | file://:0:0:0:0 | & | +| main.rs:161:13:161:24 | x.a_method() | | {EXTERNAL LOCATION} | () | +| main.rs:163:9:169:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:167:13:167:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | +| main.rs:167:27:167:28 | &x | | {EXTERNAL LOCATION} | & | | main.rs:167:27:167:28 | &x | &T | main.rs:142:9:142:21 | X | | main.rs:167:28:167:28 | x | | main.rs:142:9:142:21 | X | -| main.rs:168:13:168:29 | ...::a_method(...) | | file://:0:0:0:0 | () | -| main.rs:168:27:168:28 | &x | | file://:0:0:0:0 | & | +| main.rs:168:13:168:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | +| main.rs:168:27:168:28 | &x | | {EXTERNAL LOCATION} | & | | main.rs:168:27:168:28 | &x | &T | main.rs:142:9:142:21 | X | | main.rs:168:28:168:28 | x | | main.rs:142:9:142:21 | X | | main.rs:186:15:186:18 | SelfParam | | main.rs:174:5:177:5 | MyThing | @@ -1360,7 +1360,7 @@ inferType | main.rs:200:13:200:16 | self | | main.rs:174:5:177:5 | MyThing | | main.rs:200:13:200:16 | self | A | main.rs:198:10:198:10 | T | | main.rs:200:13:200:18 | self.a | | main.rs:198:10:198:10 | T | -| main.rs:204:16:220:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:204:16:220:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:205:13:205:13 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:205:13:205:13 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:205:17:205:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | @@ -1371,31 +1371,31 @@ inferType | main.rs:206:17:206:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | | main.rs:206:17:206:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:206:30:206:31 | S2 | | main.rs:181:5:182:14 | S2 | -| main.rs:209:18:209:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:209:18:209:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:209:18:209:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:209:18:209:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:209:18:209:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:209:18:209:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:209:18:209:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:209:26:209:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:209:26:209:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:209:26:209:28 | x.a | | main.rs:179:5:180:14 | S1 | -| main.rs:210:18:210:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:210:18:210:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:210:18:210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:210:18:210:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:210:18:210:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:210:18:210:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:210:18:210:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:210:26:210:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:210:26:210:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:210:26:210:28 | y.a | | main.rs:181:5:182:14 | S2 | -| main.rs:212:18:212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:212:18:212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:212:18:212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:212:18:212:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:212:18:212:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:212:18:212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:212:18:212:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:212:26:212:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:212:26:212:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:212:26:212:31 | x.m1() | | main.rs:179:5:180:14 | S1 | -| main.rs:213:18:213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:213:18:213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:213:18:213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:213:18:213:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:213:18:213:33 | { ... } | | file://:0:0:0:0 | () | +| main.rs:213:18:213:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:213:18:213:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:213:26:213:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:213:26:213:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:213:26:213:31 | y.m1() | | main.rs:174:5:177:5 | MyThing | @@ -1411,17 +1411,17 @@ inferType | main.rs:216:17:216:33 | MyThing {...} | | main.rs:174:5:177:5 | MyThing | | main.rs:216:17:216:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:216:30:216:31 | S2 | | main.rs:181:5:182:14 | S2 | -| main.rs:218:18:218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:218:18:218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:218:18:218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:218:18:218:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:218:18:218:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:218:18:218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:218:18:218:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:218:26:218:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:218:26:218:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:218:26:218:31 | x.m2() | | main.rs:179:5:180:14 | S1 | -| main.rs:219:18:219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:219:18:219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:219:18:219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:219:18:219:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:219:18:219:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:219:18:219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:219:18:219:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:219:26:219:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:219:26:219:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:219:26:219:31 | y.m2() | | main.rs:181:5:182:14 | S2 | @@ -1545,7 +1545,7 @@ inferType | main.rs:366:73:369:5 | { ... } | | main.rs:235:5:236:14 | S1 | | main.rs:368:9:368:13 | thing | | main.rs:366:39:366:53 | TP | | main.rs:368:9:368:26 | thing.convert_to() | | main.rs:235:5:236:14 | S1 | -| main.rs:371:16:442:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:371:16:442:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:372:13:372:20 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:372:13:372:20 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:372:24:372:40 | MyThing {...} | | main.rs:224:5:227:5 | MyThing | @@ -1561,17 +1561,17 @@ inferType | main.rs:374:24:374:40 | MyThing {...} | | main.rs:224:5:227:5 | MyThing | | main.rs:374:24:374:40 | MyThing {...} | A | main.rs:239:5:240:14 | S3 | | main.rs:374:37:374:38 | S3 | | main.rs:239:5:240:14 | S3 | -| main.rs:378:18:378:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:378:18:378:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:378:18:378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:378:18:378:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:378:18:378:38 | { ... } | | file://:0:0:0:0 | () | +| main.rs:378:18:378:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:378:18:378:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:378:26:378:33 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:378:26:378:33 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:378:26:378:38 | thing_s1.m1() | | main.rs:235:5:236:14 | S1 | -| main.rs:379:18:379:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:379:18:379:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:379:18:379:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:379:18:379:40 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:379:18:379:40 | { ... } | | file://:0:0:0:0 | () | +| main.rs:379:18:379:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:379:18:379:40 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:379:26:379:33 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:379:26:379:33 | thing_s2 | A | main.rs:237:5:238:14 | S2 | | main.rs:379:26:379:38 | thing_s2.m1() | | main.rs:224:5:227:5 | MyThing | @@ -1581,10 +1581,10 @@ inferType | main.rs:380:22:380:29 | thing_s3 | | main.rs:224:5:227:5 | MyThing | | main.rs:380:22:380:29 | thing_s3 | A | main.rs:239:5:240:14 | S3 | | main.rs:380:22:380:34 | thing_s3.m1() | | main.rs:239:5:240:14 | S3 | -| main.rs:381:18:381:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:381:18:381:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:381:18:381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:381:18:381:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:381:18:381:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:381:18:381:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:381:18:381:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:381:26:381:27 | s3 | | main.rs:239:5:240:14 | S3 | | main.rs:383:13:383:14 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:383:13:383:14 | p1 | P1 | main.rs:235:5:236:14 | S1 | @@ -1594,10 +1594,10 @@ inferType | main.rs:383:18:383:42 | MyPair {...} | P2 | main.rs:235:5:236:14 | S1 | | main.rs:383:31:383:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:383:39:383:40 | S1 | | main.rs:235:5:236:14 | S1 | -| main.rs:384:18:384:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:384:18:384:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:384:18:384:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:384:18:384:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:384:18:384:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:384:18:384:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:384:18:384:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:384:26:384:27 | p1 | | main.rs:229:5:233:5 | MyPair | | main.rs:384:26:384:27 | p1 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:384:26:384:27 | p1 | P2 | main.rs:235:5:236:14 | S1 | @@ -1610,10 +1610,10 @@ inferType | main.rs:386:18:386:42 | MyPair {...} | P2 | main.rs:237:5:238:14 | S2 | | main.rs:386:31:386:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:386:39:386:40 | S2 | | main.rs:237:5:238:14 | S2 | -| main.rs:387:18:387:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:387:18:387:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:387:18:387:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:387:18:387:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:387:18:387:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:387:18:387:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:387:18:387:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:387:26:387:27 | p2 | | main.rs:229:5:233:5 | MyPair | | main.rs:387:26:387:27 | p2 | P1 | main.rs:235:5:236:14 | S1 | | main.rs:387:26:387:27 | p2 | P2 | main.rs:237:5:238:14 | S2 | @@ -1630,10 +1630,10 @@ inferType | main.rs:390:17:390:33 | MyThing {...} | A | main.rs:235:5:236:14 | S1 | | main.rs:390:30:390:31 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:391:17:391:18 | S3 | | main.rs:239:5:240:14 | S3 | -| main.rs:393:18:393:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:393:18:393:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:393:18:393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:393:18:393:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:393:18:393:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:393:18:393:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:393:18:393:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:393:26:393:27 | p3 | | main.rs:229:5:233:5 | MyPair | | main.rs:393:26:393:27 | p3 | P1 | main.rs:224:5:227:5 | MyThing | | main.rs:393:26:393:27 | p3 | P1.A | main.rs:235:5:236:14 | S1 | @@ -1652,20 +1652,20 @@ inferType | main.rs:397:17:397:17 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:397:17:397:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:397:17:397:23 | a.fst() | | main.rs:235:5:236:14 | S1 | -| main.rs:398:18:398:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:398:18:398:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:398:18:398:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:398:18:398:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:398:18:398:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:398:18:398:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:398:18:398:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:398:26:398:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:399:13:399:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:17 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:399:17:399:17 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:23 | a.snd() | | main.rs:235:5:236:14 | S1 | -| main.rs:400:18:400:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:400:18:400:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:400:18:400:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:400:18:400:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:400:18:400:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:400:18:400:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:400:18:400:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:400:26:400:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:406:13:406:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:406:13:406:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1680,29 +1680,29 @@ inferType | main.rs:407:17:407:17 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:407:17:407:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:407:17:407:23 | b.fst() | | main.rs:235:5:236:14 | S1 | -| main.rs:408:18:408:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:408:18:408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:408:18:408:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:408:18:408:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:408:18:408:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:408:26:408:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:409:13:409:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:409:17:409:17 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:409:17:409:17 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:409:17:409:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:409:17:409:23 | b.snd() | | main.rs:237:5:238:14 | S2 | -| main.rs:410:18:410:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:410:18:410:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:410:18:410:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:410:18:410:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:410:18:410:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:410:26:410:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:414:13:414:13 | x | | main.rs:235:5:236:14 | S1 | | main.rs:414:17:414:39 | call_trait_m1(...) | | main.rs:235:5:236:14 | S1 | | main.rs:414:31:414:38 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:414:31:414:38 | thing_s1 | A | main.rs:235:5:236:14 | S1 | -| main.rs:415:18:415:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:415:18:415:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:415:18:415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:415:18:415:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:415:18:415:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:415:18:415:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:415:18:415:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:415:26:415:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:416:13:416:13 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:416:13:416:13 | y | A | main.rs:237:5:238:14 | S2 | @@ -1710,10 +1710,10 @@ inferType | main.rs:416:17:416:39 | call_trait_m1(...) | A | main.rs:237:5:238:14 | S2 | | main.rs:416:31:416:38 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:416:31:416:38 | thing_s2 | A | main.rs:237:5:238:14 | S2 | -| main.rs:417:18:417:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:417:18:417:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:417:18:417:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:417:18:417:28 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:417:18:417:28 | { ... } | | file://:0:0:0:0 | () | +| main.rs:417:18:417:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:417:18:417:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:417:26:417:26 | y | | main.rs:224:5:227:5 | MyThing | | main.rs:417:26:417:26 | y | A | main.rs:237:5:238:14 | S2 | | main.rs:417:26:417:28 | y.a | | main.rs:237:5:238:14 | S2 | @@ -1730,20 +1730,20 @@ inferType | main.rs:421:25:421:25 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:421:25:421:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:421:25:421:25 | a | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:422:18:422:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:422:18:422:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:422:18:422:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:422:18:422:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:422:18:422:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:422:26:422:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:423:13:423:13 | y | | main.rs:235:5:236:14 | S1 | | main.rs:423:17:423:26 | get_snd(...) | | main.rs:235:5:236:14 | S1 | | main.rs:423:25:423:25 | a | | main.rs:229:5:233:5 | MyPair | | main.rs:423:25:423:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:423:25:423:25 | a | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:424:18:424:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:424:18:424:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:424:18:424:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:424:18:424:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:424:18:424:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:424:18:424:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:424:26:424:26 | y | | main.rs:235:5:236:14 | S1 | | main.rs:427:13:427:13 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:427:13:427:13 | b | P1 | main.rs:237:5:238:14 | S2 | @@ -1758,20 +1758,20 @@ inferType | main.rs:428:25:428:25 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:428:25:428:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:428:25:428:25 | b | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:429:18:429:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:429:18:429:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:429:18:429:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:429:18:429:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:429:26:429:26 | x | | main.rs:235:5:236:14 | S1 | | main.rs:430:13:430:13 | y | | main.rs:237:5:238:14 | S2 | | main.rs:430:17:430:26 | get_snd(...) | | main.rs:237:5:238:14 | S2 | | main.rs:430:25:430:25 | b | | main.rs:229:5:233:5 | MyPair | | main.rs:430:25:430:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:430:25:430:25 | b | P2 | main.rs:235:5:236:14 | S1 | -| main.rs:431:18:431:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:431:18:431:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:431:18:431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:431:18:431:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:431:18:431:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:431:18:431:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:431:18:431:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:431:26:431:26 | y | | main.rs:237:5:238:14 | S2 | | main.rs:433:13:433:13 | c | | main.rs:229:5:233:5 | MyPair | | main.rs:433:13:433:13 | c | P1 | main.rs:239:5:240:14 | S3 | @@ -1851,66 +1851,66 @@ inferType | main.rs:512:34:512:35 | s1 | | main.rs:446:5:447:14 | S1 | | main.rs:512:48:514:9 | { ... } | | main.rs:446:5:447:14 | S1 | | main.rs:513:13:513:14 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:521:14:521:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:521:14:521:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:521:14:521:18 | SelfParam | &T | main.rs:520:5:522:5 | Self [trait OverlappingTrait2] | -| main.rs:521:21:521:21 | x | | file://:0:0:0:0 | & | +| main.rs:521:21:521:21 | x | | {EXTERNAL LOCATION} | & | | main.rs:521:21:521:21 | x | &T | main.rs:520:29:520:29 | T | -| main.rs:526:14:526:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:526:14:526:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:526:14:526:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | | main.rs:526:14:526:18 | SelfParam | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:526:21:526:21 | x | | file://:0:0:0:0 | & | +| main.rs:526:21:526:21 | x | | {EXTERNAL LOCATION} | & | | main.rs:526:21:526:21 | x | &T | main.rs:524:10:524:10 | T | -| main.rs:526:37:528:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:526:37:528:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:526:37:528:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | | main.rs:526:37:528:9 | { ... } | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:527:13:527:16 | self | | file://:0:0:0:0 | & | +| main.rs:527:13:527:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:527:13:527:16 | self | &T | main.rs:517:5:518:22 | S3 | | main.rs:527:13:527:16 | self | &T.T3 | main.rs:524:10:524:10 | T | -| main.rs:533:14:533:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:533:14:533:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:533:14:533:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | | main.rs:533:14:533:18 | SelfParam | &T.T3 | main.rs:531:10:531:10 | T | | main.rs:533:21:533:21 | x | | main.rs:531:10:531:10 | T | -| main.rs:533:36:535:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:533:36:535:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:533:36:535:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | | main.rs:533:36:535:9 | { ... } | &T.T3 | main.rs:531:10:531:10 | T | -| main.rs:534:13:534:16 | self | | file://:0:0:0:0 | & | +| main.rs:534:13:534:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:534:13:534:16 | self | &T | main.rs:517:5:518:22 | S3 | | main.rs:534:13:534:16 | self | &T.T3 | main.rs:531:10:531:10 | T | -| main.rs:540:14:540:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:540:14:540:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:540:14:540:18 | SelfParam | &T | main.rs:538:5:541:5 | Self [trait MyTrait1] | -| main.rs:540:21:540:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:550:14:550:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:540:21:540:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:550:14:550:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:550:14:550:18 | SelfParam | &T | main.rs:545:5:546:14 | S4 | -| main.rs:550:21:550:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:560:14:560:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:550:21:550:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:560:14:560:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:560:14:560:18 | SelfParam | &T | main.rs:555:5:556:22 | S5 | | main.rs:560:14:560:18 | SelfParam | &T.T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:560:21:560:22 | { ... } | | file://:0:0:0:0 | () | -| main.rs:569:16:595:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:560:21:560:22 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:569:16:595:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:570:13:570:13 | x | | main.rs:446:5:447:14 | S1 | | main.rs:570:17:570:18 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:571:18:571:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:571:18:571:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:571:18:571:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:571:18:571:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:571:18:571:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:571:18:571:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:572:18:572:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:572:18:572:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:572:18:572:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:572:18:572:45 | { ... } | | file://:0:0:0:0 | () | +| main.rs:572:18:572:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:572:18:572:45 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:573:18:573:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:573:18:573:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:573:18:573:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:573:18:573:44 | { ... } | | file://:0:0:0:0 | () | +| main.rs:573:18:573:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:573:18:573:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | -| main.rs:574:18:574:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:574:18:574:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:574:18:574:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:574:18:574:47 | { ... } | | file://:0:0:0:0 | () | +| main.rs:574:18:574:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:574:18:574:47 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | | main.rs:574:46:574:46 | x | | main.rs:446:5:447:14 | S1 | | main.rs:576:13:576:13 | y | | main.rs:479:5:479:22 | S2 | @@ -1918,17 +1918,17 @@ inferType | main.rs:576:17:576:22 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:576:17:576:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | | main.rs:576:20:576:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:577:18:577:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:577:18:577:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:577:18:577:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:577:18:577:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:577:18:577:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:577:18:577:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | | main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | | main.rs:577:26:577:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:578:18:578:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:578:18:578:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:578:18:578:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:578:18:578:56 | { ... } | | file://:0:0:0:0 | () | +| main.rs:578:18:578:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:578:18:578:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:578:50:578:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:578:50:578:55 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | @@ -1938,25 +1938,25 @@ inferType | main.rs:580:17:580:21 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:580:17:580:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:580:20:580:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:581:18:581:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:581:18:581:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:581:18:581:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:581:18:581:42 | { ... } | | file://:0:0:0:0 | () | +| main.rs:581:18:581:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:581:18:581:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | | main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:581:26:581:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | -| main.rs:582:18:582:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:582:18:582:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:582:18:582:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:582:18:582:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:582:18:582:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:582:18:582:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:582:44:582:48 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:582:44:582:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:582:47:582:47 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:583:18:583:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:583:18:583:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:583:18:583:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:583:18:583:56 | { ... } | | file://:0:0:0:0 | () | +| main.rs:583:18:583:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:583:18:583:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:583:51:583:55 | S2(...) | | main.rs:479:5:479:22 | S2 | | main.rs:583:51:583:55 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | @@ -1966,41 +1966,41 @@ inferType | main.rs:585:17:585:22 | S3(...) | | main.rs:517:5:518:22 | S3 | | main.rs:585:17:585:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | | main.rs:585:20:585:21 | S1 | | main.rs:446:5:447:14 | S1 | -| main.rs:586:18:586:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:586:18:586:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:586:18:586:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:586:18:586:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:586:18:586:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:586:18:586:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | -| main.rs:586:26:586:31 | w.m(...) | | file://:0:0:0:0 | & | +| main.rs:586:26:586:31 | w.m(...) | | {EXTERNAL LOCATION} | & | | main.rs:586:26:586:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | | main.rs:586:30:586:30 | x | | main.rs:446:5:447:14 | S1 | -| main.rs:587:18:587:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:587:18:587:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:587:18:587:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:587:18:587:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:587:26:587:37 | ...::m(...) | | file://:0:0:0:0 | & | +| main.rs:587:18:587:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:587:18:587:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:587:26:587:37 | ...::m(...) | | {EXTERNAL LOCATION} | & | | main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | | main.rs:587:26:587:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | -| main.rs:587:32:587:33 | &w | | file://:0:0:0:0 | & | +| main.rs:587:32:587:33 | &w | | {EXTERNAL LOCATION} | & | | main.rs:587:32:587:33 | &w | &T | main.rs:517:5:518:22 | S3 | | main.rs:587:32:587:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:33:587:33 | w | | main.rs:517:5:518:22 | S3 | | main.rs:587:33:587:33 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:36:587:36 | x | | main.rs:446:5:447:14 | S1 | | main.rs:589:9:589:10 | S4 | | main.rs:545:5:546:14 | S4 | -| main.rs:589:9:589:14 | S4.m() | | file://:0:0:0:0 | () | -| main.rs:590:9:590:18 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:590:15:590:17 | &S4 | | file://:0:0:0:0 | & | +| main.rs:589:9:589:14 | S4.m() | | {EXTERNAL LOCATION} | () | +| main.rs:590:9:590:18 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:590:15:590:17 | &S4 | | {EXTERNAL LOCATION} | & | | main.rs:590:15:590:17 | &S4 | &T | main.rs:545:5:546:14 | S4 | | main.rs:590:16:590:17 | S4 | | main.rs:545:5:546:14 | S4 | | main.rs:591:9:591:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:591:9:591:16 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:591:9:591:20 | ... .m() | | file://:0:0:0:0 | () | +| main.rs:591:9:591:20 | ... .m() | | {EXTERNAL LOCATION} | () | | main.rs:591:12:591:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:592:9:592:24 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:592:15:592:23 | &... | | file://:0:0:0:0 | & | +| main.rs:592:9:592:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:592:15:592:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:592:15:592:23 | &... | &T | main.rs:555:5:556:22 | S5 | | main.rs:592:15:592:23 | &... | &T.T5 | {EXTERNAL LOCATION} | i32 | | main.rs:592:16:592:23 | S5(...) | | main.rs:555:5:556:22 | S5 | @@ -2008,10 +2008,10 @@ inferType | main.rs:592:19:592:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | | main.rs:593:9:593:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:593:9:593:16 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | -| main.rs:593:9:593:20 | ... .m() | | file://:0:0:0:0 | () | +| main.rs:593:9:593:20 | ... .m() | | {EXTERNAL LOCATION} | () | | main.rs:593:12:593:15 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:594:9:594:24 | ...::m(...) | | file://:0:0:0:0 | () | -| main.rs:594:15:594:23 | &... | | file://:0:0:0:0 | & | +| main.rs:594:9:594:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | +| main.rs:594:15:594:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:594:15:594:23 | &... | &T | main.rs:555:5:556:22 | S5 | | main.rs:594:15:594:23 | &... | &T.T5 | {EXTERNAL LOCATION} | bool | | main.rs:594:16:594:23 | S5(...) | | main.rs:555:5:556:22 | S5 | @@ -2020,60 +2020,60 @@ inferType | main.rs:611:19:611:22 | SelfParam | | main.rs:609:5:612:5 | Self [trait FirstTrait] | | main.rs:616:19:616:22 | SelfParam | | main.rs:614:5:617:5 | Self [trait SecondTrait] | | main.rs:619:64:619:64 | x | | main.rs:619:45:619:61 | T | -| main.rs:619:70:623:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:619:70:623:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:621:13:621:14 | s1 | | main.rs:619:35:619:42 | I | | main.rs:621:18:621:18 | x | | main.rs:619:45:619:61 | T | | main.rs:621:18:621:27 | x.method() | | main.rs:619:35:619:42 | I | -| main.rs:622:18:622:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:622:18:622:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:622:18:622:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:622:18:622:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:622:18:622:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:622:18:622:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | | main.rs:625:65:625:65 | x | | main.rs:625:46:625:62 | T | -| main.rs:625:71:629:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:625:71:629:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:627:13:627:14 | s2 | | main.rs:625:36:625:43 | I | | main.rs:627:18:627:18 | x | | main.rs:625:46:625:62 | T | | main.rs:627:18:627:27 | x.method() | | main.rs:625:36:625:43 | I | -| main.rs:628:18:628:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:628:18:628:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:628:18:628:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:628:18:628:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:628:18:628:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:628:18:628:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | | main.rs:631:49:631:49 | x | | main.rs:631:30:631:46 | T | -| main.rs:631:55:634:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:631:55:634:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:632:13:632:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:632:17:632:17 | x | | main.rs:631:30:631:46 | T | | main.rs:632:17:632:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:633:18:633:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:633:18:633:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:633:18:633:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:633:18:633:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:633:18:633:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:633:18:633:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:636:53:636:53 | x | | main.rs:636:34:636:50 | T | -| main.rs:636:59:639:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:636:59:639:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:637:13:637:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:637:17:637:17 | x | | main.rs:636:34:636:50 | T | | main.rs:637:17:637:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:638:18:638:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:638:18:638:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:638:18:638:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:638:18:638:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:638:18:638:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:638:18:638:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:641:43:641:43 | x | | main.rs:641:40:641:40 | T | -| main.rs:644:5:647:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:644:5:647:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:645:13:645:13 | s | | main.rs:601:5:602:14 | S1 | | main.rs:645:17:645:17 | x | | main.rs:641:40:641:40 | T | | main.rs:645:17:645:26 | x.method() | | main.rs:601:5:602:14 | S1 | -| main.rs:646:18:646:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:646:18:646:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:646:18:646:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:646:18:646:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:646:18:646:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:646:18:646:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | | main.rs:650:16:650:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:652:16:652:19 | SelfParam | | main.rs:649:5:653:5 | Self [trait Pair] | | main.rs:655:53:655:53 | x | | main.rs:655:50:655:50 | T | | main.rs:655:59:655:59 | y | | main.rs:655:50:655:50 | T | -| main.rs:659:5:662:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:659:5:662:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:660:13:660:13 | _ | | main.rs:601:5:602:14 | S1 | | main.rs:660:17:660:17 | x | | main.rs:655:50:655:50 | T | | main.rs:660:17:660:23 | x.fst() | | main.rs:601:5:602:14 | S1 | @@ -2082,70 +2082,70 @@ inferType | main.rs:661:17:661:26 | y.method() | | main.rs:601:5:602:14 | S1 | | main.rs:664:58:664:58 | x | | main.rs:664:41:664:55 | T | | main.rs:664:64:664:64 | y | | main.rs:664:41:664:55 | T | -| main.rs:664:70:669:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:664:70:669:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:666:13:666:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:666:18:666:18 | x | | main.rs:664:41:664:55 | T | | main.rs:666:18:666:24 | x.fst() | | main.rs:601:5:602:14 | S1 | | main.rs:667:13:667:14 | s2 | | main.rs:604:5:605:14 | S2 | | main.rs:667:18:667:18 | y | | main.rs:664:41:664:55 | T | | main.rs:667:18:667:24 | y.snd() | | main.rs:604:5:605:14 | S2 | -| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:668:18:668:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:668:18:668:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:668:18:668:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:668:18:668:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:668:36:668:37 | s2 | | main.rs:604:5:605:14 | S2 | | main.rs:671:69:671:69 | x | | main.rs:671:52:671:66 | T | | main.rs:671:75:671:75 | y | | main.rs:671:52:671:66 | T | -| main.rs:671:81:676:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:671:81:676:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:673:13:673:14 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:673:18:673:18 | x | | main.rs:671:52:671:66 | T | | main.rs:673:18:673:24 | x.fst() | | main.rs:601:5:602:14 | S1 | | main.rs:674:13:674:14 | s2 | | main.rs:671:41:671:49 | T2 | | main.rs:674:18:674:18 | y | | main.rs:671:52:671:66 | T | | main.rs:674:18:674:24 | y.snd() | | main.rs:671:41:671:49 | T2 | -| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:675:18:675:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:675:18:675:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:675:18:675:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:675:18:675:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | | main.rs:675:36:675:37 | s2 | | main.rs:671:41:671:49 | T2 | | main.rs:678:50:678:50 | x | | main.rs:678:41:678:47 | T | | main.rs:678:56:678:56 | y | | main.rs:678:41:678:47 | T | -| main.rs:678:62:683:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:678:62:683:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:680:13:680:14 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:680:18:680:18 | x | | main.rs:678:41:678:47 | T | | main.rs:680:18:680:24 | x.fst() | | {EXTERNAL LOCATION} | bool | | main.rs:681:13:681:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:681:18:681:18 | y | | main.rs:678:41:678:47 | T | | main.rs:681:18:681:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:682:18:682:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:682:18:682:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:682:18:682:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:682:18:682:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | | main.rs:682:36:682:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:685:54:685:54 | x | | main.rs:685:41:685:51 | T | | main.rs:685:60:685:60 | y | | main.rs:685:41:685:51 | T | -| main.rs:685:66:690:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:685:66:690:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:687:13:687:14 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:687:18:687:18 | x | | main.rs:685:41:685:51 | T | | main.rs:687:18:687:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | | main.rs:688:13:688:14 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:688:18:688:18 | y | | main.rs:685:41:685:51 | T | | main.rs:688:18:688:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:689:18:689:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:689:18:689:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:689:18:689:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:689:18:689:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:697:18:697:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:697:18:697:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:697:18:697:22 | SelfParam | &T | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | -| main.rs:700:40:700:44 | thing | | file://:0:0:0:0 | & | +| main.rs:700:40:700:44 | thing | | {EXTERNAL LOCATION} | & | | main.rs:700:40:700:44 | thing | &T | main.rs:700:17:700:37 | T | | main.rs:700:56:702:5 | { ... } | | main.rs:700:14:700:14 | A | -| main.rs:701:9:701:13 | thing | | file://:0:0:0:0 | & | +| main.rs:701:9:701:13 | thing | | {EXTERNAL LOCATION} | & | | main.rs:701:9:701:13 | thing | &T | main.rs:700:17:700:37 | T | | main.rs:701:9:701:21 | thing.get_a() | | main.rs:700:14:700:14 | A | | main.rs:705:44:705:48 | thing | | main.rs:705:24:705:41 | S | @@ -2157,26 +2157,26 @@ inferType | main.rs:706:19:706:31 | thing.get_a() | T | main.rs:705:24:705:41 | S | | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:713:55:713:59 | thing | | file://:0:0:0:0 | & | +| main.rs:713:55:713:59 | thing | | {EXTERNAL LOCATION} | & | | main.rs:713:55:713:59 | thing | &T | main.rs:713:25:713:52 | S | -| main.rs:713:66:716:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:713:66:716:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:715:13:715:15 | _ms | | {EXTERNAL LOCATION} | Option | | main.rs:715:13:715:15 | _ms | T | main.rs:713:25:713:52 | S | | main.rs:715:19:715:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:715:19:715:30 | get_a(...) | T | main.rs:713:25:713:52 | S | -| main.rs:715:25:715:29 | thing | | file://:0:0:0:0 | & | +| main.rs:715:25:715:29 | thing | | {EXTERNAL LOCATION} | & | | main.rs:715:25:715:29 | thing | &T | main.rs:713:25:713:52 | S | -| main.rs:724:18:724:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:724:18:724:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:724:18:724:22 | SelfParam | &T | main.rs:718:5:720:5 | MyStruct | | main.rs:724:41:726:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:724:41:726:9 | { ... } | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:13:725:48 | Some(...) | | {EXTERNAL LOCATION} | Option | | main.rs:725:13:725:48 | Some(...) | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:18:725:47 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | -| main.rs:725:36:725:39 | self | | file://:0:0:0:0 | & | +| main.rs:725:36:725:39 | self | | {EXTERNAL LOCATION} | & | | main.rs:725:36:725:39 | self | &T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:36:725:45 | self.value | | {EXTERNAL LOCATION} | i32 | -| main.rs:731:19:734:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:731:19:734:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:732:13:732:13 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:17:732:37 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | | main.rs:732:35:732:35 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -2184,7 +2184,7 @@ inferType | main.rs:733:13:733:15 | _ms | T | main.rs:718:5:720:5 | MyStruct | | main.rs:733:19:733:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:733:19:733:27 | get_a(...) | T | main.rs:718:5:720:5 | MyStruct | -| main.rs:733:25:733:26 | &s | | file://:0:0:0:0 | & | +| main.rs:733:25:733:26 | &s | | {EXTERNAL LOCATION} | & | | main.rs:733:25:733:26 | &s | &T | main.rs:718:5:720:5 | MyStruct | | main.rs:733:26:733:26 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:749:15:749:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | @@ -2276,7 +2276,7 @@ inferType | main.rs:826:13:826:13 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:826:13:826:13 | x | T | main.rs:820:10:820:10 | T | | main.rs:826:13:826:15 | x.a | | main.rs:820:10:820:10 | T | -| main.rs:830:16:888:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:830:16:888:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:831:13:831:13 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:831:13:831:13 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:831:17:831:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | @@ -2287,17 +2287,17 @@ inferType | main.rs:832:17:832:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | | main.rs:832:17:832:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | | main.rs:832:30:832:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:834:18:834:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:834:18:834:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:834:18:834:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:834:18:834:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:834:18:834:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:834:18:834:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:834:18:834:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:834:26:834:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:834:26:834:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:834:26:834:31 | x.m1() | | main.rs:743:5:744:14 | S1 | -| main.rs:835:18:835:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:835:18:835:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:835:18:835:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:835:18:835:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:835:18:835:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:835:26:835:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:835:26:835:26 | y | T | main.rs:745:5:746:14 | S2 | | main.rs:835:26:835:31 | y.m1() | | main.rs:745:5:746:14 | S2 | @@ -2311,17 +2311,17 @@ inferType | main.rs:838:17:838:33 | MyThing {...} | | main.rs:738:5:741:5 | MyThing | | main.rs:838:17:838:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | | main.rs:838:30:838:31 | S2 | | main.rs:745:5:746:14 | S2 | -| main.rs:840:18:840:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:840:18:840:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:840:18:840:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:840:18:840:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:840:18:840:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:840:18:840:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:840:18:840:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:840:26:840:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:840:26:840:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:840:26:840:31 | x.m2() | | main.rs:743:5:744:14 | S1 | -| main.rs:841:18:841:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:841:18:841:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:841:18:841:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:841:18:841:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:841:18:841:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:841:26:841:26 | y | | main.rs:738:5:741:5 | MyThing | | main.rs:841:26:841:26 | y | T | main.rs:745:5:746:14 | S2 | | main.rs:841:26:841:31 | y.m2() | | main.rs:745:5:746:14 | S2 | @@ -2339,91 +2339,91 @@ inferType | main.rs:846:17:846:33 | call_trait_m1(...) | | main.rs:743:5:744:14 | S1 | | main.rs:846:31:846:32 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:846:31:846:32 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:847:18:847:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:847:18:847:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:847:18:847:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:847:18:847:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:847:18:847:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:847:18:847:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:847:18:847:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:847:26:847:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:848:13:848:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:848:17:848:35 | call_trait_m1_2(...) | | main.rs:743:5:744:14 | S1 | | main.rs:848:33:848:34 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:848:33:848:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:849:18:849:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:849:18:849:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:849:18:849:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:849:18:849:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:849:18:849:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:849:18:849:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:849:18:849:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:849:26:849:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:850:13:850:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:850:17:850:35 | call_trait_m1_3(...) | | main.rs:743:5:744:14 | S1 | | main.rs:850:33:850:34 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:850:33:850:34 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:851:18:851:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:851:18:851:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:851:18:851:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:851:18:851:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:851:18:851:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:851:18:851:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:851:18:851:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:851:26:851:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:852:13:852:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:852:17:852:33 | call_trait_m1(...) | | main.rs:745:5:746:14 | S2 | | main.rs:852:31:852:32 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:852:31:852:32 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:853:18:853:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:853:18:853:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:853:18:853:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:853:18:853:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:853:18:853:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:853:18:853:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:853:18:853:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:853:26:853:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:854:13:854:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:854:17:854:35 | call_trait_m1_2(...) | | main.rs:745:5:746:14 | S2 | | main.rs:854:33:854:34 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:854:33:854:34 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:855:18:855:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:855:18:855:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:855:18:855:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:855:18:855:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:855:18:855:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:855:18:855:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:855:26:855:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:856:13:856:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:856:17:856:35 | call_trait_m1_3(...) | | main.rs:745:5:746:14 | S2 | | main.rs:856:33:856:34 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:856:33:856:34 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:857:18:857:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:857:18:857:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:857:18:857:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:857:18:857:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:857:18:857:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:857:18:857:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:857:26:857:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:858:13:858:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:858:17:858:38 | call_trait_assoc_1(...) | | main.rs:743:5:744:14 | S1 | | main.rs:858:36:858:37 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:858:36:858:37 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:859:18:859:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:859:18:859:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:859:18:859:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:859:18:859:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:859:18:859:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:859:18:859:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:860:13:860:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:860:17:860:38 | call_trait_assoc_2(...) | | main.rs:743:5:744:14 | S1 | | main.rs:860:36:860:37 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:860:36:860:37 | x2 | T | main.rs:743:5:744:14 | S1 | -| main.rs:861:18:861:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:861:18:861:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:861:18:861:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:861:18:861:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:861:18:861:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:861:18:861:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:861:26:861:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:862:13:862:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:862:17:862:38 | call_trait_assoc_1(...) | | main.rs:745:5:746:14 | S2 | | main.rs:862:36:862:37 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:862:36:862:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:863:18:863:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:863:18:863:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:863:18:863:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:863:18:863:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:863:18:863:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:863:18:863:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:863:26:863:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:864:13:864:13 | a | | main.rs:745:5:746:14 | S2 | | main.rs:864:17:864:38 | call_trait_assoc_2(...) | | main.rs:745:5:746:14 | S2 | | main.rs:864:36:864:37 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:864:36:864:37 | y2 | T | main.rs:745:5:746:14 | S2 | -| main.rs:865:18:865:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:865:18:865:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:865:18:865:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:865:18:865:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:865:18:865:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:865:18:865:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:865:26:865:26 | a | | main.rs:745:5:746:14 | S2 | | main.rs:867:13:867:14 | x3 | | main.rs:738:5:741:5 | MyThing | | main.rs:867:13:867:14 | x3 | T | main.rs:738:5:741:5 | MyThing | @@ -2448,60 +2448,60 @@ inferType | main.rs:874:37:874:38 | x3 | | main.rs:738:5:741:5 | MyThing | | main.rs:874:37:874:38 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:874:37:874:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:875:18:875:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:875:18:875:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:875:18:875:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:875:18:875:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:875:18:875:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:875:18:875:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:875:26:875:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:876:13:876:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:876:17:876:41 | call_trait_thing_m1_2(...) | | main.rs:743:5:744:14 | S1 | | main.rs:876:39:876:40 | x3 | | main.rs:738:5:741:5 | MyThing | | main.rs:876:39:876:40 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:876:39:876:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:877:18:877:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:877:18:877:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:877:18:877:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:877:18:877:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:877:18:877:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:877:18:877:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:877:18:877:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:877:26:877:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:878:13:878:13 | a | | main.rs:743:5:744:14 | S1 | | main.rs:878:17:878:41 | call_trait_thing_m1_3(...) | | main.rs:743:5:744:14 | S1 | | main.rs:878:39:878:40 | x3 | | main.rs:738:5:741:5 | MyThing | | main.rs:878:39:878:40 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:878:39:878:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | -| main.rs:879:18:879:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:879:18:879:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:879:18:879:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:879:18:879:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:879:18:879:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:879:18:879:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:879:18:879:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:879:26:879:26 | a | | main.rs:743:5:744:14 | S1 | | main.rs:880:13:880:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:880:17:880:39 | call_trait_thing_m1(...) | | main.rs:745:5:746:14 | S2 | | main.rs:880:37:880:38 | y3 | | main.rs:738:5:741:5 | MyThing | | main.rs:880:37:880:38 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:880:37:880:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:881:18:881:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:881:18:881:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:881:18:881:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:881:18:881:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:881:18:881:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:881:18:881:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:881:18:881:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:881:26:881:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:882:13:882:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:882:17:882:41 | call_trait_thing_m1_2(...) | | main.rs:745:5:746:14 | S2 | | main.rs:882:39:882:40 | y3 | | main.rs:738:5:741:5 | MyThing | | main.rs:882:39:882:40 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:882:39:882:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:883:18:883:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:883:18:883:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:883:18:883:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:883:18:883:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:883:18:883:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:883:18:883:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:883:18:883:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:883:26:883:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:884:13:884:13 | b | | main.rs:745:5:746:14 | S2 | | main.rs:884:17:884:41 | call_trait_thing_m1_3(...) | | main.rs:745:5:746:14 | S2 | | main.rs:884:39:884:40 | y3 | | main.rs:738:5:741:5 | MyThing | | main.rs:884:39:884:40 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:884:39:884:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | -| main.rs:885:18:885:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:885:18:885:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:885:18:885:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:885:18:885:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:885:18:885:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:885:18:885:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:885:26:885:26 | b | | main.rs:745:5:746:14 | S2 | | main.rs:886:13:886:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:886:17:886:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | @@ -2521,32 +2521,32 @@ inferType | main.rs:914:13:914:16 | self | | main.rs:903:5:917:5 | Self [trait MyTrait] | | main.rs:914:13:914:21 | self.m1() | | main.rs:904:9:904:28 | AssociatedType | | main.rs:915:13:915:43 | ...::default(...) | | main.rs:904:9:904:28 | AssociatedType | -| main.rs:923:19:923:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:923:19:923:23 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:923:19:923:23 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:923:26:923:26 | a | | main.rs:923:16:923:16 | A | -| main.rs:925:22:925:26 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:925:22:925:26 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:925:22:925:26 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:925:29:925:29 | a | | main.rs:925:19:925:19 | A | | main.rs:925:35:925:35 | b | | main.rs:925:19:925:19 | A | | main.rs:925:75:928:9 | { ... } | | main.rs:920:9:920:52 | GenericAssociatedType | -| main.rs:926:13:926:16 | self | | file://:0:0:0:0 | & | +| main.rs:926:13:926:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:926:13:926:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:926:13:926:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | | main.rs:926:22:926:22 | a | | main.rs:925:19:925:19 | A | -| main.rs:927:13:927:16 | self | | file://:0:0:0:0 | & | +| main.rs:927:13:927:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:927:13:927:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:927:13:927:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | | main.rs:927:22:927:22 | b | | main.rs:925:19:925:19 | A | -| main.rs:936:21:936:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:936:21:936:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:936:21:936:25 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | -| main.rs:938:20:938:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:938:20:938:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:938:20:938:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | -| main.rs:940:20:940:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:940:20:940:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:940:20:940:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | | main.rs:956:15:956:18 | SelfParam | | main.rs:943:5:944:13 | S | | main.rs:956:45:958:9 | { ... } | | main.rs:949:5:950:14 | AT | | main.rs:957:13:957:14 | AT | | main.rs:949:5:950:14 | AT | -| main.rs:966:19:966:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:966:19:966:23 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:966:19:966:23 | SelfParam | &T | main.rs:943:5:944:13 | S | | main.rs:966:26:966:26 | a | | main.rs:966:16:966:16 | A | | main.rs:966:46:968:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | @@ -2567,25 +2567,25 @@ inferType | main.rs:983:30:983:31 | S2 | | main.rs:946:5:947:14 | S2 | | main.rs:989:22:989:26 | thing | | main.rs:989:10:989:19 | T | | main.rs:990:9:990:13 | thing | | main.rs:989:10:989:19 | T | -| main.rs:997:21:997:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:997:21:997:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:997:21:997:25 | SelfParam | &T | main.rs:949:5:950:14 | AT | | main.rs:997:34:999:9 | { ... } | | main.rs:949:5:950:14 | AT | | main.rs:998:13:998:14 | AT | | main.rs:949:5:950:14 | AT | -| main.rs:1001:20:1001:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1001:20:1001:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1001:20:1001:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | | main.rs:1001:43:1003:9 | { ... } | | main.rs:943:5:944:13 | S | | main.rs:1002:13:1002:13 | S | | main.rs:943:5:944:13 | S | -| main.rs:1005:20:1005:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1005:20:1005:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1005:20:1005:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | | main.rs:1005:43:1007:9 | { ... } | | main.rs:946:5:947:14 | S2 | | main.rs:1006:13:1006:14 | S2 | | main.rs:946:5:947:14 | S2 | -| main.rs:1010:16:1038:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1010:16:1038:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1011:13:1011:14 | x1 | | main.rs:943:5:944:13 | S | | main.rs:1011:18:1011:18 | S | | main.rs:943:5:944:13 | S | -| main.rs:1013:18:1013:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1013:18:1013:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1013:18:1013:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1013:18:1013:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1013:18:1013:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1013:18:1013:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1013:26:1013:27 | x1 | | main.rs:943:5:944:13 | S | | main.rs:1013:26:1013:32 | x1.m1() | | main.rs:949:5:950:14 | AT | | main.rs:1015:13:1015:14 | x2 | | main.rs:943:5:944:13 | S | @@ -2593,26 +2593,26 @@ inferType | main.rs:1017:13:1017:13 | y | | main.rs:949:5:950:14 | AT | | main.rs:1017:17:1017:18 | x2 | | main.rs:943:5:944:13 | S | | main.rs:1017:17:1017:23 | x2.m2() | | main.rs:949:5:950:14 | AT | -| main.rs:1018:18:1018:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1018:18:1018:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1018:18:1018:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1018:18:1018:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1018:18:1018:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1018:18:1018:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1018:18:1018:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1018:26:1018:26 | y | | main.rs:949:5:950:14 | AT | | main.rs:1020:13:1020:14 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1020:18:1020:18 | S | | main.rs:943:5:944:13 | S | -| main.rs:1022:18:1022:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1022:18:1022:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1022:18:1022:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1022:18:1022:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1022:18:1022:43 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1022:18:1022:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1022:18:1022:43 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1022:26:1022:27 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1022:26:1022:34 | x3.put(...) | | main.rs:892:5:895:5 | Wrapper | | main.rs:1022:26:1022:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | | main.rs:1022:26:1022:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | | main.rs:1022:33:1022:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1025:18:1025:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1025:18:1025:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1025:18:1025:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1025:18:1025:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1025:18:1025:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1025:18:1025:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1025:18:1025:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1025:26:1025:27 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1025:26:1025:40 | x3.putTwo(...) | | main.rs:892:5:895:5 | Wrapper | | main.rs:1025:26:1025:40 | x3.putTwo(...) | A | main.rs:963:36:963:50 | AssociatedParam | @@ -2620,25 +2620,25 @@ inferType | main.rs:1025:36:1025:36 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1025:39:1025:39 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1027:20:1027:20 | S | | main.rs:943:5:944:13 | S | -| main.rs:1028:18:1028:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1028:18:1028:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1028:18:1028:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1028:18:1028:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1030:13:1030:14 | x5 | | main.rs:946:5:947:14 | S2 | | main.rs:1030:18:1030:19 | S2 | | main.rs:946:5:947:14 | S2 | -| main.rs:1031:18:1031:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1031:18:1031:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1031:18:1031:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1031:18:1031:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1031:18:1031:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1031:18:1031:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1031:18:1031:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1031:26:1031:27 | x5 | | main.rs:946:5:947:14 | S2 | | main.rs:1031:26:1031:32 | x5.m1() | | main.rs:892:5:895:5 | Wrapper | | main.rs:1031:26:1031:32 | x5.m1() | A | main.rs:946:5:947:14 | S2 | | main.rs:1032:13:1032:14 | x6 | | main.rs:946:5:947:14 | S2 | | main.rs:1032:18:1032:19 | S2 | | main.rs:946:5:947:14 | S2 | -| main.rs:1033:18:1033:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1033:18:1033:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1033:18:1033:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1033:18:1033:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1033:18:1033:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1033:18:1033:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1033:18:1033:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1033:26:1033:27 | x6 | | main.rs:946:5:947:14 | S2 | | main.rs:1033:26:1033:32 | x6.m2() | | main.rs:892:5:895:5 | Wrapper | | main.rs:1033:26:1033:32 | x6.m2() | A | main.rs:946:5:947:14 | S2 | @@ -2651,34 +2651,34 @@ inferType | main.rs:1037:13:1037:21 | assoc_two | | main.rs:946:5:947:14 | S2 | | main.rs:1037:25:1037:26 | AT | | main.rs:949:5:950:14 | AT | | main.rs:1037:25:1037:36 | AT.get_two() | | main.rs:946:5:947:14 | S2 | -| main.rs:1045:19:1045:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1045:19:1045:23 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1045:19:1045:23 | SelfParam | &T | main.rs:1042:5:1046:5 | Self [trait Supertrait] | | main.rs:1045:26:1045:32 | content | | main.rs:1043:9:1043:21 | Content | -| main.rs:1050:24:1050:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1050:24:1050:28 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1050:24:1050:28 | SelfParam | &T | main.rs:1048:5:1051:5 | Self [trait Subtrait] | -| main.rs:1059:23:1059:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1059:23:1059:27 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1059:23:1059:27 | SelfParam | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | | main.rs:1059:30:1059:31 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1059:49:1059:50 | c2 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1059:68:1062:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1060:13:1060:16 | self | | file://:0:0:0:0 | & | +| main.rs:1059:68:1062:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1060:13:1060:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1060:13:1060:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | -| main.rs:1060:13:1060:27 | self.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1060:13:1060:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1060:25:1060:26 | c1 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1061:13:1061:16 | self | | file://:0:0:0:0 | & | +| main.rs:1061:13:1061:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1061:13:1061:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | -| main.rs:1061:13:1061:27 | self.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1061:13:1061:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1061:25:1061:26 | c2 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1069:19:1069:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1069:19:1069:23 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1069:19:1069:23 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | | main.rs:1069:19:1069:23 | SelfParam | &T.T | main.rs:1067:10:1067:10 | T | | main.rs:1069:26:1069:33 | _content | | main.rs:1067:10:1067:10 | T | -| main.rs:1069:51:1071:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1070:22:1070:42 | "Inserting content: \\n" | | file://:0:0:0:0 | & | +| main.rs:1069:51:1071:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | | main.rs:1070:22:1070:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1070:22:1070:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1070:22:1070:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1076:24:1076:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1070:22:1070:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1070:22:1070:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1076:24:1076:28 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1076:24:1076:28 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | | main.rs:1076:24:1076:28 | SelfParam | &T.T | main.rs:1074:10:1074:17 | T | | main.rs:1076:48:1078:9 | { ... } | | main.rs:1074:10:1074:17 | T | @@ -2688,31 +2688,31 @@ inferType | main.rs:1077:13:1077:29 | ... .clone() | | main.rs:1074:10:1074:17 | T | | main.rs:1077:14:1077:18 | * ... | | main.rs:1065:5:1065:24 | MyType | | main.rs:1077:14:1077:18 | * ... | T | main.rs:1074:10:1074:17 | T | -| main.rs:1077:15:1077:18 | self | | file://:0:0:0:0 | & | +| main.rs:1077:15:1077:18 | self | | {EXTERNAL LOCATION} | & | | main.rs:1077:15:1077:18 | self | &T | main.rs:1065:5:1065:24 | MyType | | main.rs:1077:15:1077:18 | self | &T.T | main.rs:1074:10:1074:17 | T | -| main.rs:1081:33:1081:36 | item | | file://:0:0:0:0 | & | +| main.rs:1081:33:1081:36 | item | | {EXTERNAL LOCATION} | & | | main.rs:1081:33:1081:36 | item | &T | main.rs:1081:20:1081:30 | T | | main.rs:1081:57:1083:5 | { ... } | | main.rs:1043:9:1043:21 | Content | -| main.rs:1082:9:1082:12 | item | | file://:0:0:0:0 | & | +| main.rs:1082:9:1082:12 | item | | {EXTERNAL LOCATION} | & | | main.rs:1082:9:1082:12 | item | &T | main.rs:1081:20:1081:30 | T | | main.rs:1082:9:1082:26 | item.get_content() | | main.rs:1043:9:1043:21 | Content | -| main.rs:1085:35:1085:38 | item | | file://:0:0:0:0 | & | +| main.rs:1085:35:1085:38 | item | | {EXTERNAL LOCATION} | & | | main.rs:1085:35:1085:38 | item | &T | main.rs:1085:21:1085:32 | T | | main.rs:1085:45:1085:46 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:61:1085:62 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:77:1085:78 | c3 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1085:93:1088:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1086:9:1086:12 | item | | file://:0:0:0:0 | & | +| main.rs:1085:93:1088:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1086:9:1086:12 | item | | {EXTERNAL LOCATION} | & | | main.rs:1086:9:1086:12 | item | &T | main.rs:1085:21:1085:32 | T | -| main.rs:1086:9:1086:23 | item.insert(...) | | file://:0:0:0:0 | () | +| main.rs:1086:9:1086:23 | item.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1086:21:1086:22 | c1 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1087:9:1087:12 | item | | file://:0:0:0:0 | & | +| main.rs:1087:9:1087:12 | item | | {EXTERNAL LOCATION} | & | | main.rs:1087:9:1087:12 | item | &T | main.rs:1085:21:1085:32 | T | -| main.rs:1087:9:1087:31 | item.insert_two(...) | | file://:0:0:0:0 | () | +| main.rs:1087:9:1087:31 | item.insert_two(...) | | {EXTERNAL LOCATION} | () | | main.rs:1087:25:1087:26 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1087:29:1087:30 | c3 | | main.rs:1043:9:1043:21 | Content | -| main.rs:1090:15:1096:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1090:15:1096:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1091:13:1091:17 | item1 | | main.rs:1065:5:1065:24 | MyType | | main.rs:1091:13:1091:17 | item1 | T | {EXTERNAL LOCATION} | i64 | | main.rs:1091:21:1091:33 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | @@ -2725,7 +2725,7 @@ inferType | main.rs:1094:21:1094:32 | MyType(...) | | main.rs:1065:5:1065:24 | MyType | | main.rs:1094:21:1094:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | | main.rs:1094:28:1094:31 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1095:37:1095:42 | &item2 | | file://:0:0:0:0 | & | +| main.rs:1095:37:1095:42 | &item2 | | {EXTERNAL LOCATION} | & | | main.rs:1095:37:1095:42 | &item2 | &T | main.rs:1065:5:1065:24 | MyType | | main.rs:1095:37:1095:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | | main.rs:1095:38:1095:42 | item2 | | main.rs:1065:5:1065:24 | MyType | @@ -2744,7 +2744,7 @@ inferType | main.rs:1115:17:1115:32 | ...::C2 {...} | A | main.rs:1111:10:1111:10 | T | | main.rs:1115:30:1115:30 | a | | main.rs:1111:10:1111:10 | T | | main.rs:1115:37:1115:37 | a | | main.rs:1111:10:1111:10 | T | -| main.rs:1120:16:1126:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1120:16:1126:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1121:13:1121:13 | x | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1121:13:1121:13 | x | A | main.rs:1106:5:1107:14 | S1 | | main.rs:1121:17:1121:30 | ...::C1(...) | | main.rs:1100:5:1104:5 | MyEnum | @@ -2755,22 +2755,22 @@ inferType | main.rs:1122:17:1122:36 | ...::C2 {...} | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1122:17:1122:36 | ...::C2 {...} | A | main.rs:1108:5:1109:14 | S2 | | main.rs:1122:33:1122:34 | S2 | | main.rs:1108:5:1109:14 | S2 | -| main.rs:1124:18:1124:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1124:18:1124:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1124:18:1124:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1124:18:1124:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1124:18:1124:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1124:18:1124:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1124:18:1124:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1124:26:1124:26 | x | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1124:26:1124:26 | x | A | main.rs:1106:5:1107:14 | S1 | | main.rs:1124:26:1124:31 | x.m1() | | main.rs:1106:5:1107:14 | S1 | -| main.rs:1125:18:1125:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1125:18:1125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1125:18:1125:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1125:18:1125:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1125:18:1125:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1125:18:1125:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1125:18:1125:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1125:26:1125:26 | y | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1125:26:1125:26 | y | A | main.rs:1108:5:1109:14 | S2 | | main.rs:1125:26:1125:31 | y.m1() | | main.rs:1108:5:1109:14 | S2 | | main.rs:1147:15:1147:18 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait MyTrait1] | -| main.rs:1152:15:1152:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1152:15:1152:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1152:15:1152:19 | SelfParam | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1155:9:1161:9 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1156:13:1160:13 | if ... {...} else {...} | | main.rs:1150:20:1150:22 | Tr2 | @@ -2778,13 +2778,13 @@ inferType | main.rs:1156:16:1156:20 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:1156:20:1156:20 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1156:22:1158:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | -| main.rs:1157:17:1157:20 | self | | file://:0:0:0:0 | & | +| main.rs:1157:17:1157:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:1157:17:1157:20 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1157:17:1157:25 | self.m1() | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1158:20:1160:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1159:17:1159:31 | ...::m1(...) | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1159:26:1159:30 | * ... | | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | -| main.rs:1159:27:1159:30 | self | | file://:0:0:0:0 | & | +| main.rs:1159:27:1159:30 | self | | {EXTERNAL LOCATION} | & | | main.rs:1159:27:1159:30 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1166:15:1166:18 | SelfParam | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1169:9:1175:9 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | @@ -2801,7 +2801,7 @@ inferType | main.rs:1173:17:1173:31 | ...::m2(...) | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1173:17:1173:31 | ...::m2(...) | A | main.rs:1164:20:1164:22 | Tr3 | | main.rs:1173:17:1173:33 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | -| main.rs:1173:26:1173:30 | &self | | file://:0:0:0:0 | & | +| main.rs:1173:26:1173:30 | &self | | {EXTERNAL LOCATION} | & | | main.rs:1173:26:1173:30 | &self | &T | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1173:27:1173:30 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1180:15:1180:18 | SelfParam | | main.rs:1130:5:1133:5 | MyThing | @@ -2824,19 +2824,19 @@ inferType | main.rs:1199:9:1199:9 | x | | main.rs:1198:26:1198:41 | T2 | | main.rs:1199:9:1199:14 | x.m1() | | main.rs:1198:22:1198:23 | T1 | | main.rs:1202:56:1202:56 | x | | main.rs:1202:39:1202:53 | T | -| main.rs:1202:62:1206:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1202:62:1206:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1204:13:1204:13 | a | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1204:13:1204:13 | a | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1204:17:1204:17 | x | | main.rs:1202:39:1202:53 | T | | main.rs:1204:17:1204:22 | x.m1() | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1204:17:1204:22 | x.m1() | A | main.rs:1140:5:1141:14 | S1 | -| main.rs:1205:18:1205:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1205:18:1205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1205:18:1205:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1205:18:1205:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1205:18:1205:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1205:18:1205:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1205:18:1205:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1205:26:1205:26 | a | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1205:26:1205:26 | a | A | main.rs:1140:5:1141:14 | S1 | -| main.rs:1208:16:1232:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1208:16:1232:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1209:13:1209:13 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1209:13:1209:13 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1209:17:1209:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | @@ -2847,17 +2847,17 @@ inferType | main.rs:1210:17:1210:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1210:17:1210:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1210:30:1210:31 | S2 | | main.rs:1142:5:1143:14 | S2 | -| main.rs:1212:18:1212:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1212:18:1212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1212:18:1212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1212:18:1212:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1212:18:1212:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1212:18:1212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1212:18:1212:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1212:26:1212:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1212:26:1212:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1212:26:1212:31 | x.m1() | | main.rs:1140:5:1141:14 | S1 | -| main.rs:1213:18:1213:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1213:18:1213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1213:18:1213:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1213:18:1213:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1213:18:1213:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1213:26:1213:26 | y | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1213:26:1213:26 | y | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1213:26:1213:31 | y.m1() | | main.rs:1142:5:1143:14 | S2 | @@ -2871,17 +2871,17 @@ inferType | main.rs:1216:17:1216:33 | MyThing {...} | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1216:17:1216:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1216:30:1216:31 | S2 | | main.rs:1142:5:1143:14 | S2 | -| main.rs:1218:18:1218:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1218:18:1218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1218:18:1218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1218:18:1218:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1218:18:1218:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1218:18:1218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1218:18:1218:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1218:26:1218:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1218:26:1218:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1218:26:1218:31 | x.m2() | | main.rs:1140:5:1141:14 | S1 | -| main.rs:1219:18:1219:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1219:18:1219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1219:18:1219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1219:18:1219:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1219:18:1219:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1219:18:1219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1219:18:1219:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1219:26:1219:26 | y | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1219:26:1219:26 | y | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1219:26:1219:31 | y.m2() | | main.rs:1142:5:1143:14 | S2 | @@ -2895,17 +2895,17 @@ inferType | main.rs:1222:17:1222:34 | MyThing2 {...} | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1222:17:1222:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1222:31:1222:32 | S2 | | main.rs:1142:5:1143:14 | S2 | -| main.rs:1224:18:1224:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1224:18:1224:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1224:18:1224:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1224:18:1224:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1224:18:1224:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1224:26:1224:26 | x | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1224:26:1224:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1224:26:1224:31 | x.m3() | | main.rs:1140:5:1141:14 | S1 | -| main.rs:1225:18:1225:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1225:18:1225:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1225:18:1225:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1225:18:1225:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1225:18:1225:31 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1225:18:1225:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1225:18:1225:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1225:26:1225:26 | y | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1225:26:1225:26 | y | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1225:26:1225:31 | y.m3() | | main.rs:1142:5:1143:14 | S2 | @@ -2929,11 +2929,11 @@ inferType | main.rs:1231:17:1231:32 | call_trait_m1(...) | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1231:31:1231:31 | x | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1231:31:1231:31 | x | A | main.rs:1142:5:1143:14 | S2 | -| main.rs:1248:22:1248:22 | x | | file://:0:0:0:0 | & | +| main.rs:1248:22:1248:22 | x | | {EXTERNAL LOCATION} | & | | main.rs:1248:22:1248:22 | x | &T | main.rs:1248:11:1248:19 | T | -| main.rs:1248:35:1250:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1248:35:1250:5 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1248:35:1250:5 | { ... } | &T | main.rs:1248:11:1248:19 | T | -| main.rs:1249:9:1249:9 | x | | file://:0:0:0:0 | & | +| main.rs:1249:9:1249:9 | x | | {EXTERNAL LOCATION} | & | | main.rs:1249:9:1249:9 | x | &T | main.rs:1248:11:1248:19 | T | | main.rs:1253:17:1253:20 | SelfParam | | main.rs:1238:5:1239:14 | S1 | | main.rs:1253:29:1255:9 | { ... } | | main.rs:1241:5:1242:14 | S2 | @@ -2942,38 +2942,38 @@ inferType | main.rs:1261:5:1263:5 | { ... } | | main.rs:1258:17:1258:18 | T2 | | main.rs:1262:9:1262:9 | x | | main.rs:1258:13:1258:14 | T1 | | main.rs:1262:9:1262:16 | x.into() | | main.rs:1258:17:1258:18 | T2 | -| main.rs:1265:16:1281:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1265:16:1281:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1266:13:1266:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1266:17:1266:18 | S1 | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1267:18:1267:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1267:18:1267:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1267:18:1267:31 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1267:18:1267:31 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1267:26:1267:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:1267:18:1267:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1267:18:1267:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1267:26:1267:31 | id(...) | | {EXTERNAL LOCATION} | & | | main.rs:1267:26:1267:31 | id(...) | &T | main.rs:1238:5:1239:14 | S1 | -| main.rs:1267:29:1267:30 | &x | | file://:0:0:0:0 | & | +| main.rs:1267:29:1267:30 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1267:29:1267:30 | &x | &T | main.rs:1238:5:1239:14 | S1 | | main.rs:1267:30:1267:30 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1269:13:1269:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1269:17:1269:18 | S1 | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1270:18:1270:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1270:18:1270:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1270:18:1270:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1270:18:1270:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1270:18:1270:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1270:26:1270:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1270:18:1270:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1270:18:1270:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1270:26:1270:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | | main.rs:1270:26:1270:37 | id::<...>(...) | &T | main.rs:1238:5:1239:14 | S1 | -| main.rs:1270:35:1270:36 | &x | | file://:0:0:0:0 | & | +| main.rs:1270:35:1270:36 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1270:35:1270:36 | &x | &T | main.rs:1238:5:1239:14 | S1 | | main.rs:1270:36:1270:36 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1272:13:1272:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1272:17:1272:18 | S1 | | main.rs:1238:5:1239:14 | S1 | -| main.rs:1274:18:1274:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1274:18:1274:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1274:18:1274:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1274:18:1274:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1274:18:1274:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1274:26:1274:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:1274:18:1274:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1274:18:1274:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1274:26:1274:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | | main.rs:1274:26:1274:44 | id::<...>(...) | &T | main.rs:1244:5:1244:25 | dyn Trait | -| main.rs:1274:42:1274:43 | &x | | file://:0:0:0:0 | & | +| main.rs:1274:42:1274:43 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1274:42:1274:43 | &x | &T | main.rs:1238:5:1239:14 | S1 | | main.rs:1274:43:1274:43 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1276:13:1276:13 | x | | main.rs:1238:5:1239:14 | S1 | @@ -2998,21 +2998,21 @@ inferType | main.rs:1296:17:1296:38 | ...::PairNone(...) | Fst | main.rs:1293:10:1293:12 | Fst | | main.rs:1296:17:1296:38 | ...::PairNone(...) | Snd | main.rs:1293:15:1293:17 | Snd | | main.rs:1296:43:1296:82 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | file://:0:0:0:0 | & | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | | main.rs:1296:50:1296:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | | main.rs:1296:50:1296:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1296:50:1296:81 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1296:50:1296:81 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1296:50:1296:81 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1296:50:1296:81 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1297:17:1297:38 | ...::PairFst(...) | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1297:17:1297:38 | ...::PairFst(...) | Fst | main.rs:1293:10:1293:12 | Fst | | main.rs:1297:17:1297:38 | ...::PairFst(...) | Snd | main.rs:1293:15:1293:17 | Snd | | main.rs:1297:37:1297:37 | _ | | main.rs:1293:10:1293:12 | Fst | | main.rs:1297:43:1297:81 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:1297:50:1297:80 | "PairFst has no second element... | | file://:0:0:0:0 | & | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | | main.rs:1297:50:1297:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | | main.rs:1297:50:1297:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:1297:50:1297:80 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:1297:50:1297:80 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1297:50:1297:80 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1297:50:1297:80 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1298:17:1298:40 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1298:17:1298:40 | ...::PairSnd(...) | Fst | main.rs:1293:10:1293:12 | Fst | | main.rs:1298:17:1298:40 | ...::PairSnd(...) | Snd | main.rs:1293:15:1293:17 | Snd | @@ -3029,7 +3029,7 @@ inferType | main.rs:1325:10:1325:10 | t | Snd | main.rs:1285:5:1291:5 | PairOption | | main.rs:1325:10:1325:10 | t | Snd.Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1325:10:1325:10 | t | Snd.Snd | main.rs:1310:5:1311:14 | S3 | -| main.rs:1325:30:1328:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1325:30:1328:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1326:13:1326:13 | x | | main.rs:1310:5:1311:14 | S3 | | main.rs:1326:17:1326:17 | t | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1326:17:1326:17 | t | Fst | main.rs:1307:5:1308:14 | S2 | @@ -3040,10 +3040,10 @@ inferType | main.rs:1326:17:1326:29 | t.unwrapSnd() | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1326:17:1326:29 | t.unwrapSnd() | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1326:17:1326:41 | ... .unwrapSnd() | | main.rs:1310:5:1311:14 | S3 | -| main.rs:1327:18:1327:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1327:18:1327:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1327:18:1327:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1327:18:1327:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1327:18:1327:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1327:26:1327:26 | x | | main.rs:1310:5:1311:14 | S3 | | main.rs:1342:22:1342:25 | SelfParam | | main.rs:1340:5:1343:5 | Self [trait TraitWithAssocType] | | main.rs:1350:22:1350:25 | SelfParam | | main.rs:1338:5:1338:28 | GenS | @@ -3057,7 +3057,7 @@ inferType | main.rs:1351:16:1351:19 | self | | main.rs:1338:5:1338:28 | GenS | | main.rs:1351:16:1351:19 | self | GenT | main.rs:1345:10:1345:15 | Output | | main.rs:1351:16:1351:21 | self.0 | | main.rs:1345:10:1345:15 | Output | -| main.rs:1355:16:1377:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1355:16:1377:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1357:13:1357:14 | p1 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1357:13:1357:14 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | | main.rs:1357:13:1357:14 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | @@ -3066,10 +3066,10 @@ inferType | main.rs:1357:26:1357:53 | ...::PairBoth(...) | Snd | main.rs:1307:5:1308:14 | S2 | | main.rs:1357:47:1357:48 | S1 | | main.rs:1304:5:1305:14 | S1 | | main.rs:1357:51:1357:52 | S2 | | main.rs:1307:5:1308:14 | S2 | -| main.rs:1358:18:1358:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1358:18:1358:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1358:18:1358:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1358:18:1358:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1358:18:1358:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1358:18:1358:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1358:18:1358:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1358:26:1358:27 | p1 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1358:26:1358:27 | p1 | Fst | main.rs:1304:5:1305:14 | S1 | | main.rs:1358:26:1358:27 | p1 | Snd | main.rs:1307:5:1308:14 | S2 | @@ -3079,10 +3079,10 @@ inferType | main.rs:1361:26:1361:47 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1361:26:1361:47 | ...::PairNone(...) | Fst | main.rs:1304:5:1305:14 | S1 | | main.rs:1361:26:1361:47 | ...::PairNone(...) | Snd | main.rs:1307:5:1308:14 | S2 | -| main.rs:1362:18:1362:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1362:18:1362:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1362:18:1362:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1362:18:1362:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1362:18:1362:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1362:18:1362:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1362:26:1362:27 | p2 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1362:26:1362:27 | p2 | Fst | main.rs:1304:5:1305:14 | S1 | | main.rs:1362:26:1362:27 | p2 | Snd | main.rs:1307:5:1308:14 | S2 | @@ -3093,10 +3093,10 @@ inferType | main.rs:1365:34:1365:56 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1365:34:1365:56 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1365:54:1365:55 | S3 | | main.rs:1310:5:1311:14 | S3 | -| main.rs:1366:18:1366:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1366:18:1366:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1366:18:1366:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1366:18:1366:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1366:18:1366:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1366:18:1366:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1366:26:1366:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1366:26:1366:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1366:26:1366:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | @@ -3106,14 +3106,14 @@ inferType | main.rs:1369:35:1369:56 | ...::PairNone(...) | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1369:35:1369:56 | ...::PairNone(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1369:35:1369:56 | ...::PairNone(...) | Snd | main.rs:1310:5:1311:14 | S3 | -| main.rs:1370:18:1370:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1370:18:1370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1370:18:1370:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1370:18:1370:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1370:18:1370:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1370:18:1370:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1370:26:1370:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1370:26:1370:27 | p3 | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1370:26:1370:27 | p3 | Snd | main.rs:1310:5:1311:14 | S3 | -| main.rs:1372:9:1372:55 | g(...) | | file://:0:0:0:0 | () | +| main.rs:1372:9:1372:55 | g(...) | | {EXTERNAL LOCATION} | () | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | | main.rs:1285:5:1291:5 | PairOption | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1372:11:1372:54 | ...::PairSnd(...) | Snd | main.rs:1285:5:1291:5 | PairOption | @@ -3138,22 +3138,22 @@ inferType | main.rs:1376:17:1376:38 | ... .get_input() | E | {EXTERNAL LOCATION} | bool | | main.rs:1376:17:1376:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | | main.rs:1376:22:1376:25 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1389:16:1389:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1389:16:1389:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1389:16:1389:24 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | | main.rs:1389:27:1389:31 | value | | main.rs:1387:19:1387:19 | S | -| main.rs:1391:21:1391:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1391:21:1391:29 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1391:21:1391:29 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | | main.rs:1391:32:1391:36 | value | | main.rs:1387:19:1387:19 | S | -| main.rs:1391:42:1393:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1392:13:1392:16 | self | | file://:0:0:0:0 | & | +| main.rs:1391:42:1393:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1392:13:1392:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1392:13:1392:16 | self | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | -| main.rs:1392:13:1392:27 | self.set(...) | | file://:0:0:0:0 | () | +| main.rs:1392:13:1392:27 | self.set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1392:22:1392:26 | value | | main.rs:1387:19:1387:19 | S | -| main.rs:1398:16:1398:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1398:16:1398:24 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1398:16:1398:24 | SelfParam | &T | main.rs:1381:5:1385:5 | MyOption | | main.rs:1398:16:1398:24 | SelfParam | &T.T | main.rs:1396:10:1396:10 | T | | main.rs:1398:27:1398:31 | value | | main.rs:1396:10:1396:10 | T | -| main.rs:1398:37:1398:38 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1398:37:1398:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1402:26:1404:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1402:26:1404:9 | { ... } | T | main.rs:1401:10:1401:10 | T | | main.rs:1403:13:1403:30 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | @@ -3180,15 +3180,15 @@ inferType | main.rs:1411:34:1411:34 | x | T | main.rs:1407:10:1407:10 | T | | main.rs:1411:40:1411:40 | x | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1411:40:1411:40 | x | T | main.rs:1407:10:1407:10 | T | -| main.rs:1419:16:1465:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1419:16:1465:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1420:13:1420:14 | x1 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1420:13:1420:14 | x1 | T | main.rs:1416:5:1417:13 | S | | main.rs:1420:18:1420:37 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1420:18:1420:37 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | -| main.rs:1421:18:1421:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1421:18:1421:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1421:18:1421:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1421:18:1421:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1421:18:1421:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1421:18:1421:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1421:26:1421:27 | x1 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1421:26:1421:27 | x1 | T | main.rs:1416:5:1417:13 | S | | main.rs:1423:17:1423:18 | x2 | | main.rs:1381:5:1385:5 | MyOption | @@ -3197,39 +3197,39 @@ inferType | main.rs:1423:22:1423:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1424:9:1424:10 | x2 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1424:9:1424:10 | x2 | T | main.rs:1416:5:1417:13 | S | -| main.rs:1424:9:1424:17 | x2.set(...) | | file://:0:0:0:0 | () | +| main.rs:1424:9:1424:17 | x2.set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1424:16:1424:16 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1425:18:1425:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1425:18:1425:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1425:18:1425:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1425:18:1425:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1425:18:1425:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1425:18:1425:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1425:26:1425:27 | x2 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1425:26:1425:27 | x2 | T | main.rs:1416:5:1417:13 | S | | main.rs:1428:17:1428:18 | x3 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1428:22:1428:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1429:9:1429:10 | x3 | | main.rs:1381:5:1385:5 | MyOption | -| main.rs:1429:9:1429:22 | x3.call_set(...) | | file://:0:0:0:0 | () | +| main.rs:1429:9:1429:22 | x3.call_set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1429:21:1429:21 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1430:18:1430:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1430:18:1430:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1430:18:1430:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1430:18:1430:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1430:18:1430:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1430:18:1430:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1430:26:1430:27 | x3 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1432:17:1432:18 | x4 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1432:17:1432:18 | x4 | T | main.rs:1416:5:1417:13 | S | | main.rs:1432:22:1432:36 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1432:22:1432:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | -| main.rs:1433:9:1433:33 | ...::set(...) | | file://:0:0:0:0 | () | -| main.rs:1433:23:1433:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:1433:9:1433:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1433:23:1433:29 | &mut x4 | | {EXTERNAL LOCATION} | & | | main.rs:1433:23:1433:29 | &mut x4 | &T | main.rs:1381:5:1385:5 | MyOption | | main.rs:1433:23:1433:29 | &mut x4 | &T.T | main.rs:1416:5:1417:13 | S | | main.rs:1433:28:1433:29 | x4 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1433:28:1433:29 | x4 | T | main.rs:1416:5:1417:13 | S | | main.rs:1433:32:1433:32 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1434:18:1434:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1434:18:1434:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1434:18:1434:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1434:18:1434:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1434:18:1434:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1434:18:1434:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1434:18:1434:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1434:26:1434:27 | x4 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1434:26:1434:27 | x4 | T | main.rs:1416:5:1417:13 | S | | main.rs:1436:13:1436:14 | x5 | | main.rs:1381:5:1385:5 | MyOption | @@ -3240,10 +3240,10 @@ inferType | main.rs:1436:18:1436:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | | main.rs:1436:35:1436:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1436:35:1436:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | -| main.rs:1437:18:1437:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1437:18:1437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1437:18:1437:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1437:18:1437:37 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1437:18:1437:37 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1437:18:1437:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1437:18:1437:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1437:26:1437:27 | x5 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1437:26:1437:27 | x5 | T | main.rs:1381:5:1385:5 | MyOption | | main.rs:1437:26:1437:27 | x5 | T.T | main.rs:1416:5:1417:13 | S | @@ -3257,10 +3257,10 @@ inferType | main.rs:1439:18:1439:58 | ...::MySome(...) | T.T | main.rs:1416:5:1417:13 | S | | main.rs:1439:35:1439:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1439:35:1439:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | -| main.rs:1440:18:1440:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1440:18:1440:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1440:18:1440:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1440:18:1440:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1440:18:1440:61 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1440:18:1440:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1440:18:1440:61 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1440:26:1440:61 | ...::flatten(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1440:26:1440:61 | ...::flatten(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1440:59:1440:60 | x6 | | main.rs:1381:5:1385:5 | MyOption | @@ -3282,10 +3282,10 @@ inferType | main.rs:1446:13:1446:31 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1446:13:1446:31 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1446:30:1446:30 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1448:18:1448:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1448:18:1448:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1448:18:1448:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1448:18:1448:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1448:18:1448:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1448:18:1448:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1448:18:1448:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1448:26:1448:32 | from_if | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1448:26:1448:32 | from_if | T | main.rs:1416:5:1417:13 | S | | main.rs:1451:13:1451:22 | from_match | | main.rs:1381:5:1385:5 | MyOption | @@ -3302,31 +3302,31 @@ inferType | main.rs:1453:22:1453:40 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1453:22:1453:40 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1453:39:1453:39 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1455:18:1455:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1455:18:1455:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1455:18:1455:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1455:18:1455:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1455:18:1455:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1455:18:1455:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1455:26:1455:35 | from_match | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1455:26:1455:35 | from_match | T | main.rs:1416:5:1417:13 | S | | main.rs:1458:13:1458:21 | from_loop | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1458:13:1458:21 | from_loop | T | main.rs:1416:5:1417:13 | S | | main.rs:1458:25:1463:9 | loop { ... } | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1458:25:1463:9 | loop { ... } | T | main.rs:1416:5:1417:13 | S | -| main.rs:1458:30:1463:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1459:13:1461:13 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1458:30:1463:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1459:13:1461:13 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1459:16:1459:16 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1459:16:1459:20 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:1459:20:1459:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1459:22:1461:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1459:22:1461:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1460:23:1460:40 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1460:23:1460:40 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1462:19:1462:37 | ...::MySome(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1462:19:1462:37 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1462:36:1462:36 | S | | main.rs:1416:5:1417:13 | S | -| main.rs:1464:18:1464:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1464:18:1464:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1464:18:1464:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1464:18:1464:34 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1464:18:1464:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1464:18:1464:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1464:26:1464:34 | from_loop | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1464:26:1464:34 | from_loop | T | main.rs:1416:5:1417:13 | S | | main.rs:1482:15:1482:18 | SelfParam | | main.rs:1470:5:1471:19 | S | @@ -3335,63 +3335,63 @@ inferType | main.rs:1483:13:1483:16 | self | | main.rs:1470:5:1471:19 | S | | main.rs:1483:13:1483:16 | self | T | main.rs:1481:10:1481:10 | T | | main.rs:1483:13:1483:18 | self.0 | | main.rs:1481:10:1481:10 | T | -| main.rs:1486:15:1486:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1486:15:1486:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1486:15:1486:19 | SelfParam | &T | main.rs:1470:5:1471:19 | S | | main.rs:1486:15:1486:19 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | -| main.rs:1486:28:1488:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1486:28:1488:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1486:28:1488:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | -| main.rs:1487:13:1487:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1487:13:1487:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1487:13:1487:19 | &... | &T | main.rs:1481:10:1481:10 | T | -| main.rs:1487:14:1487:17 | self | | file://:0:0:0:0 | & | +| main.rs:1487:14:1487:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:1487:14:1487:17 | self | &T | main.rs:1470:5:1471:19 | S | | main.rs:1487:14:1487:17 | self | &T.T | main.rs:1481:10:1481:10 | T | | main.rs:1487:14:1487:19 | self.0 | | main.rs:1481:10:1481:10 | T | -| main.rs:1490:15:1490:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1490:15:1490:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1490:15:1490:25 | SelfParam | &T | main.rs:1470:5:1471:19 | S | | main.rs:1490:15:1490:25 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | -| main.rs:1490:34:1492:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1490:34:1492:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1490:34:1492:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | -| main.rs:1491:13:1491:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1491:13:1491:19 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1491:13:1491:19 | &... | &T | main.rs:1481:10:1481:10 | T | -| main.rs:1491:14:1491:17 | self | | file://:0:0:0:0 | & | +| main.rs:1491:14:1491:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:1491:14:1491:17 | self | &T | main.rs:1470:5:1471:19 | S | | main.rs:1491:14:1491:17 | self | &T.T | main.rs:1481:10:1481:10 | T | | main.rs:1491:14:1491:19 | self.0 | | main.rs:1481:10:1481:10 | T | -| main.rs:1496:29:1496:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1496:29:1496:33 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1496:29:1496:33 | SelfParam | &T | main.rs:1495:5:1498:5 | Self [trait ATrait] | | main.rs:1497:33:1497:36 | SelfParam | | main.rs:1495:5:1498:5 | Self [trait ATrait] | -| main.rs:1503:29:1503:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1503:29:1503:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1503:29:1503:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1503:29:1503:33 | SelfParam | &T | {EXTERNAL LOCATION} | & | | main.rs:1503:29:1503:33 | SelfParam | &T.&T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1503:43:1505:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1504:13:1504:22 | (...) | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1504:13:1504:24 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1504:14:1504:21 | * ... | | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1504:15:1504:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1504:15:1504:21 | (...) | | {EXTERNAL LOCATION} | & | | main.rs:1504:15:1504:21 | (...) | &T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1504:16:1504:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1504:16:1504:20 | * ... | | {EXTERNAL LOCATION} | & | | main.rs:1504:16:1504:20 | * ... | &T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1504:17:1504:20 | self | | file://:0:0:0:0 | & | -| main.rs:1504:17:1504:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1504:17:1504:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1504:17:1504:20 | self | &T | {EXTERNAL LOCATION} | & | | main.rs:1504:17:1504:20 | self | &T.&T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1508:33:1508:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1508:33:1508:36 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1508:33:1508:36 | SelfParam | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1508:46:1510:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1509:13:1509:19 | (...) | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1509:13:1509:21 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1509:14:1509:18 | * ... | | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1509:15:1509:18 | self | | file://:0:0:0:0 | & | +| main.rs:1509:15:1509:18 | self | | {EXTERNAL LOCATION} | & | | main.rs:1509:15:1509:18 | self | &T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1513:16:1563:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1513:16:1563:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1514:13:1514:14 | x1 | | main.rs:1470:5:1471:19 | S | | main.rs:1514:13:1514:14 | x1 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1514:18:1514:22 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1514:18:1514:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1514:20:1514:21 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1515:18:1515:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1515:18:1515:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1515:18:1515:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1515:18:1515:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1515:18:1515:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1515:18:1515:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1515:18:1515:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1515:26:1515:27 | x1 | | main.rs:1470:5:1471:19 | S | | main.rs:1515:26:1515:27 | x1 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1515:26:1515:32 | x1.m1() | | main.rs:1473:5:1474:14 | S2 | @@ -3400,147 +3400,147 @@ inferType | main.rs:1517:18:1517:22 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1517:18:1517:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1517:20:1517:21 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1519:18:1519:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1519:18:1519:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1519:18:1519:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1519:18:1519:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1519:18:1519:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1519:18:1519:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1519:18:1519:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1519:26:1519:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1519:26:1519:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1519:26:1519:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1519:26:1519:32 | x2.m2() | | {EXTERNAL LOCATION} | & | | main.rs:1519:26:1519:32 | x2.m2() | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1520:18:1520:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1520:18:1520:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1520:18:1520:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1520:18:1520:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1520:18:1520:32 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1520:18:1520:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1520:18:1520:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1520:26:1520:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1520:26:1520:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1520:26:1520:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1520:26:1520:32 | x2.m3() | | {EXTERNAL LOCATION} | & | | main.rs:1520:26:1520:32 | x2.m3() | &T | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:13:1522:14 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1522:13:1522:14 | x3 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:18:1522:22 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1522:18:1522:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:20:1522:21 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1524:18:1524:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1524:18:1524:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1524:18:1524:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1524:18:1524:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1524:26:1524:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1524:18:1524:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1524:18:1524:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1524:26:1524:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | | main.rs:1524:26:1524:41 | ...::m2(...) | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1524:38:1524:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1524:38:1524:40 | &x3 | | {EXTERNAL LOCATION} | & | | main.rs:1524:38:1524:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1524:38:1524:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1524:39:1524:40 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1524:39:1524:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1525:18:1525:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1525:18:1525:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1525:18:1525:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1525:18:1525:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1525:18:1525:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1525:26:1525:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1525:18:1525:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1525:18:1525:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1525:26:1525:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | | main.rs:1525:26:1525:41 | ...::m3(...) | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1525:38:1525:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1525:38:1525:40 | &x3 | | {EXTERNAL LOCATION} | & | | main.rs:1525:38:1525:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1525:38:1525:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1525:39:1525:40 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1525:39:1525:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1527:13:1527:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1527:13:1527:14 | x4 | | {EXTERNAL LOCATION} | & | | main.rs:1527:13:1527:14 | x4 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1527:13:1527:14 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1527:18:1527:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1527:18:1527:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1527:18:1527:23 | &... | &T | main.rs:1470:5:1471:19 | S | | main.rs:1527:18:1527:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:19:1527:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1527:19:1527:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:21:1527:22 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1529:18:1529:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1529:18:1529:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1529:18:1529:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1529:18:1529:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1529:18:1529:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1529:26:1529:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1529:18:1529:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1529:18:1529:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1529:26:1529:27 | x4 | | {EXTERNAL LOCATION} | & | | main.rs:1529:26:1529:27 | x4 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1529:26:1529:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1529:26:1529:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1529:26:1529:32 | x4.m2() | | {EXTERNAL LOCATION} | & | | main.rs:1529:26:1529:32 | x4.m2() | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1530:18:1530:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1530:18:1530:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1530:18:1530:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1530:18:1530:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1530:18:1530:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1530:26:1530:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1530:18:1530:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1530:18:1530:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1530:26:1530:27 | x4 | | {EXTERNAL LOCATION} | & | | main.rs:1530:26:1530:27 | x4 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1530:26:1530:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1530:26:1530:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1530:26:1530:32 | x4.m3() | | {EXTERNAL LOCATION} | & | | main.rs:1530:26:1530:32 | x4.m3() | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1532:13:1532:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1532:13:1532:14 | x5 | | {EXTERNAL LOCATION} | & | | main.rs:1532:13:1532:14 | x5 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1532:13:1532:14 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1532:18:1532:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1532:18:1532:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1532:18:1532:23 | &... | &T | main.rs:1470:5:1471:19 | S | | main.rs:1532:18:1532:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:19:1532:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1532:19:1532:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:21:1532:22 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1534:18:1534:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1534:18:1534:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1534:18:1534:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1534:18:1534:32 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1534:18:1534:32 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1534:26:1534:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1534:18:1534:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1534:18:1534:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1534:26:1534:27 | x5 | | {EXTERNAL LOCATION} | & | | main.rs:1534:26:1534:27 | x5 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1534:26:1534:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1534:26:1534:32 | x5.m1() | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1535:18:1535:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1535:18:1535:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1535:18:1535:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1535:18:1535:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1535:26:1535:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1535:18:1535:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1535:18:1535:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1535:26:1535:27 | x5 | | {EXTERNAL LOCATION} | & | | main.rs:1535:26:1535:27 | x5 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1535:26:1535:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1535:26:1535:29 | x5.0 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1537:13:1537:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1537:13:1537:14 | x6 | | {EXTERNAL LOCATION} | & | | main.rs:1537:13:1537:14 | x6 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1537:13:1537:14 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1537:18:1537:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1537:18:1537:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1537:18:1537:23 | &... | &T | main.rs:1470:5:1471:19 | S | | main.rs:1537:18:1537:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:19:1537:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1537:19:1537:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:21:1537:22 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1540:18:1540:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1540:18:1540:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1540:18:1540:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1540:18:1540:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1540:18:1540:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1540:18:1540:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1540:26:1540:30 | (...) | | main.rs:1470:5:1471:19 | S | | main.rs:1540:26:1540:30 | (...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1540:26:1540:35 | ... .m1() | | main.rs:1473:5:1474:14 | S2 | | main.rs:1540:27:1540:29 | * ... | | main.rs:1470:5:1471:19 | S | | main.rs:1540:27:1540:29 | * ... | T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1540:28:1540:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1540:28:1540:29 | x6 | | {EXTERNAL LOCATION} | & | | main.rs:1540:28:1540:29 | x6 | &T | main.rs:1470:5:1471:19 | S | | main.rs:1540:28:1540:29 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:13:1542:14 | x7 | | main.rs:1470:5:1471:19 | S | -| main.rs:1542:13:1542:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1542:13:1542:14 | x7 | T | {EXTERNAL LOCATION} | & | | main.rs:1542:13:1542:14 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:18:1542:23 | S(...) | | main.rs:1470:5:1471:19 | S | -| main.rs:1542:18:1542:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1542:18:1542:23 | S(...) | T | {EXTERNAL LOCATION} | & | | main.rs:1542:18:1542:23 | S(...) | T.&T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1542:20:1542:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1542:20:1542:22 | &S2 | | {EXTERNAL LOCATION} | & | | main.rs:1542:20:1542:22 | &S2 | &T | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:21:1542:22 | S2 | | main.rs:1473:5:1474:14 | S2 | -| main.rs:1545:13:1545:13 | t | | file://:0:0:0:0 | & | +| main.rs:1545:13:1545:13 | t | | {EXTERNAL LOCATION} | & | | main.rs:1545:13:1545:13 | t | &T | main.rs:1473:5:1474:14 | S2 | | main.rs:1545:17:1545:18 | x7 | | main.rs:1470:5:1471:19 | S | -| main.rs:1545:17:1545:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1545:17:1545:18 | x7 | T | {EXTERNAL LOCATION} | & | | main.rs:1545:17:1545:18 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1545:17:1545:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1545:17:1545:23 | x7.m1() | | {EXTERNAL LOCATION} | & | | main.rs:1545:17:1545:23 | x7.m1() | &T | main.rs:1473:5:1474:14 | S2 | -| main.rs:1546:18:1546:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1546:18:1546:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1546:18:1546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1546:18:1546:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1546:18:1546:27 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1546:18:1546:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1546:18:1546:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1546:26:1546:27 | x7 | | main.rs:1470:5:1471:19 | S | -| main.rs:1546:26:1546:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1546:26:1546:27 | x7 | T | {EXTERNAL LOCATION} | & | | main.rs:1546:26:1546:27 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | | main.rs:1548:13:1548:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1548:26:1548:32 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1548:26:1548:32 | "Hello" | | {EXTERNAL LOCATION} | & | | main.rs:1548:26:1548:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | | main.rs:1548:26:1548:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | | main.rs:1552:13:1552:13 | u | | {EXTERNAL LOCATION} | Result | @@ -3548,80 +3548,80 @@ inferType | main.rs:1552:17:1552:18 | x9 | | {EXTERNAL LOCATION} | String | | main.rs:1552:17:1552:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | | main.rs:1552:17:1552:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1554:13:1554:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1554:13:1554:20 | my_thing | | {EXTERNAL LOCATION} | & | | main.rs:1554:13:1554:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1554:24:1554:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1554:24:1554:39 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1554:24:1554:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:25:1554:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i32 | | main.rs:1556:13:1556:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1556:17:1556:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1556:17:1556:24 | my_thing | | {EXTERNAL LOCATION} | & | | main.rs:1556:17:1556:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1556:17:1556:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1557:18:1557:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1557:18:1557:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1557:18:1557:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1557:18:1557:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1557:18:1557:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1557:18:1557:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1557:18:1557:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1557:26:1557:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1560:13:1560:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1560:13:1560:20 | my_thing | | {EXTERNAL LOCATION} | & | | main.rs:1560:13:1560:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | -| main.rs:1560:24:1560:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1560:24:1560:39 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1560:24:1560:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:25:1560:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i32 | | main.rs:1561:13:1561:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:17:1561:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1561:17:1561:24 | my_thing | | {EXTERNAL LOCATION} | & | | main.rs:1561:17:1561:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | | main.rs:1561:17:1561:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:18:1562:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1562:18:1562:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1562:18:1562:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1562:18:1562:26 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1562:18:1562:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1562:18:1562:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1562:18:1562:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1562:26:1562:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1569:16:1569:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1569:16:1569:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1569:16:1569:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | -| main.rs:1572:16:1572:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1572:16:1572:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1572:16:1572:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | -| main.rs:1572:32:1574:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1572:32:1574:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1572:32:1574:9 | { ... } | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | -| main.rs:1573:13:1573:16 | self | | file://:0:0:0:0 | & | +| main.rs:1573:13:1573:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1573:13:1573:16 | self | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | -| main.rs:1573:13:1573:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1573:13:1573:22 | self.foo() | | {EXTERNAL LOCATION} | & | | main.rs:1573:13:1573:22 | self.foo() | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | -| main.rs:1581:16:1581:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1581:16:1581:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1581:16:1581:20 | SelfParam | &T | main.rs:1577:5:1577:20 | MyStruct | -| main.rs:1581:36:1583:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1581:36:1583:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1581:36:1583:9 | { ... } | &T | main.rs:1577:5:1577:20 | MyStruct | -| main.rs:1582:13:1582:16 | self | | file://:0:0:0:0 | & | +| main.rs:1582:13:1582:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1582:13:1582:16 | self | &T | main.rs:1577:5:1577:20 | MyStruct | -| main.rs:1586:16:1589:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1586:16:1589:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1587:13:1587:13 | x | | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1587:17:1587:24 | MyStruct | | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1588:9:1588:9 | x | | main.rs:1577:5:1577:20 | MyStruct | -| main.rs:1588:9:1588:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1588:9:1588:15 | x.bar() | | {EXTERNAL LOCATION} | & | | main.rs:1588:9:1588:15 | x.bar() | &T | main.rs:1577:5:1577:20 | MyStruct | -| main.rs:1598:16:1598:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1598:16:1598:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1598:16:1598:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1598:16:1598:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1598:32:1600:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1598:32:1600:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1598:32:1600:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1598:32:1600:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1599:13:1599:16 | self | | file://:0:0:0:0 | & | +| main.rs:1599:13:1599:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1599:13:1599:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1599:13:1599:16 | self | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1602:16:1602:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1602:16:1602:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1602:16:1602:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1602:16:1602:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1602:23:1602:23 | x | | file://:0:0:0:0 | & | +| main.rs:1602:23:1602:23 | x | | {EXTERNAL LOCATION} | & | | main.rs:1602:23:1602:23 | x | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1602:23:1602:23 | x | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1602:42:1604:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1602:42:1604:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1602:42:1604:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1602:42:1604:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1603:13:1603:16 | self | | file://:0:0:0:0 | & | +| main.rs:1603:13:1603:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1603:13:1603:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1603:13:1603:16 | self | &T.T | main.rs:1597:10:1597:10 | T | -| main.rs:1607:16:1613:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1607:16:1613:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1608:13:1608:13 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1608:13:1608:13 | x | T | main.rs:1593:5:1593:13 | S | | main.rs:1608:17:1608:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | @@ -3629,7 +3629,7 @@ inferType | main.rs:1608:26:1608:26 | S | | main.rs:1593:5:1593:13 | S | | main.rs:1609:9:1609:9 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1609:9:1609:9 | x | T | main.rs:1593:5:1593:13 | S | -| main.rs:1609:9:1609:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1609:9:1609:15 | x.foo() | | {EXTERNAL LOCATION} | & | | main.rs:1609:9:1609:15 | x.foo() | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1609:9:1609:15 | x.foo() | &T.T | main.rs:1593:5:1593:13 | S | | main.rs:1610:13:1610:13 | x | | main.rs:1595:5:1595:26 | MyStruct | @@ -3639,126 +3639,126 @@ inferType | main.rs:1610:26:1610:26 | S | | main.rs:1593:5:1593:13 | S | | main.rs:1612:9:1612:9 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:9:1612:9 | x | T | main.rs:1593:5:1593:13 | S | -| main.rs:1612:9:1612:18 | x.bar(...) | | file://:0:0:0:0 | & | +| main.rs:1612:9:1612:18 | x.bar(...) | | {EXTERNAL LOCATION} | & | | main.rs:1612:9:1612:18 | x.bar(...) | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:9:1612:18 | x.bar(...) | &T.T | main.rs:1593:5:1593:13 | S | -| main.rs:1612:15:1612:17 | &... | | file://:0:0:0:0 | & | -| main.rs:1612:15:1612:17 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1612:15:1612:17 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1612:15:1612:17 | &... | &T | {EXTERNAL LOCATION} | & | | main.rs:1612:15:1612:17 | &... | &T.&T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:15:1612:17 | &... | &T.&T.T | main.rs:1593:5:1593:13 | S | -| main.rs:1612:16:1612:17 | &x | | file://:0:0:0:0 | & | +| main.rs:1612:16:1612:17 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1612:16:1612:17 | &x | &T | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:16:1612:17 | &x | &T.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:17:1612:17 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:17:1612:17 | x | T | main.rs:1593:5:1593:13 | S | -| main.rs:1623:17:1623:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1623:17:1623:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1623:17:1623:25 | SelfParam | &T | main.rs:1617:5:1620:5 | MyFlag | -| main.rs:1623:28:1625:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1624:13:1624:16 | self | | file://:0:0:0:0 | & | +| main.rs:1623:28:1625:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1624:13:1624:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1624:13:1624:16 | self | &T | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1624:13:1624:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1624:13:1624:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1624:13:1624:34 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1624:25:1624:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1624:26:1624:29 | self | | file://:0:0:0:0 | & | +| main.rs:1624:26:1624:29 | self | | {EXTERNAL LOCATION} | & | | main.rs:1624:26:1624:29 | self | &T | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1624:26:1624:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1631:15:1631:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1631:15:1631:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1631:15:1631:19 | SelfParam | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1631:31:1633:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1631:31:1633:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1631:31:1633:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:13:1632:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1632:13:1632:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | &T | {EXTERNAL LOCATION} | & | | main.rs:1632:13:1632:19 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:13:1632:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1632:13:1632:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1632:13:1632:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | | main.rs:1632:13:1632:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:14:1632:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1632:14:1632:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1632:14:1632:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1632:14:1632:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | &T | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | | main.rs:1632:14:1632:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:15:1632:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1632:15:1632:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1632:15:1632:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1632:15:1632:19 | &self | &T | {EXTERNAL LOCATION} | & | | main.rs:1632:15:1632:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:16:1632:19 | self | | file://:0:0:0:0 | & | +| main.rs:1632:16:1632:19 | self | | {EXTERNAL LOCATION} | & | | main.rs:1632:16:1632:19 | self | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1635:15:1635:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1635:15:1635:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1635:15:1635:25 | SelfParam | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1635:37:1637:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1635:37:1637:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1635:37:1637:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:13:1636:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1636:13:1636:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | &T | {EXTERNAL LOCATION} | & | | main.rs:1636:13:1636:19 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:13:1636:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1636:13:1636:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1636:13:1636:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | | main.rs:1636:13:1636:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:14:1636:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1636:14:1636:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1636:14:1636:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1636:14:1636:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | &T | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | | main.rs:1636:14:1636:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:15:1636:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1636:15:1636:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1636:15:1636:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1636:15:1636:19 | &self | &T | {EXTERNAL LOCATION} | & | | main.rs:1636:15:1636:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:16:1636:19 | self | | file://:0:0:0:0 | & | +| main.rs:1636:16:1636:19 | self | | {EXTERNAL LOCATION} | & | | main.rs:1636:16:1636:19 | self | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1639:15:1639:15 | x | | file://:0:0:0:0 | & | +| main.rs:1639:15:1639:15 | x | | {EXTERNAL LOCATION} | & | | main.rs:1639:15:1639:15 | x | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1639:34:1641:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1639:34:1641:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1639:34:1641:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1640:13:1640:13 | x | | file://:0:0:0:0 | & | +| main.rs:1640:13:1640:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1640:13:1640:13 | x | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1643:15:1643:15 | x | | file://:0:0:0:0 | & | +| main.rs:1643:15:1643:15 | x | | {EXTERNAL LOCATION} | & | | main.rs:1643:15:1643:15 | x | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1643:34:1645:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1643:34:1645:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1643:34:1645:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:13:1644:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1644:13:1644:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | &T | {EXTERNAL LOCATION} | & | | main.rs:1644:13:1644:16 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:13:1644:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1644:13:1644:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1644:13:1644:16 | &... | &T.&T | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | | main.rs:1644:13:1644:16 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:14:1644:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1644:14:1644:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1644:14:1644:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1644:14:1644:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | &T | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | &T.&T | {EXTERNAL LOCATION} | & | | main.rs:1644:14:1644:16 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:15:1644:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1644:15:1644:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1644:15:1644:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1644:15:1644:16 | &x | &T | {EXTERNAL LOCATION} | & | | main.rs:1644:15:1644:16 | &x | &T.&T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:16:1644:16 | x | | file://:0:0:0:0 | & | +| main.rs:1644:16:1644:16 | x | | {EXTERNAL LOCATION} | & | | main.rs:1644:16:1644:16 | x | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1648:16:1661:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1648:16:1661:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1649:13:1649:13 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1649:17:1649:20 | S {...} | | main.rs:1628:5:1628:13 | S | | main.rs:1650:9:1650:9 | x | | main.rs:1628:5:1628:13 | S | -| main.rs:1650:9:1650:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1650:9:1650:14 | x.f1() | | {EXTERNAL LOCATION} | & | | main.rs:1650:9:1650:14 | x.f1() | &T | main.rs:1628:5:1628:13 | S | | main.rs:1651:9:1651:9 | x | | main.rs:1628:5:1628:13 | S | -| main.rs:1651:9:1651:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1651:9:1651:14 | x.f2() | | {EXTERNAL LOCATION} | & | | main.rs:1651:9:1651:14 | x.f2() | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1652:9:1652:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1652:9:1652:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | | main.rs:1652:9:1652:17 | ...::f3(...) | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1652:15:1652:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1652:15:1652:16 | &x | | {EXTERNAL LOCATION} | & | | main.rs:1652:15:1652:16 | &x | &T | main.rs:1628:5:1628:13 | S | | main.rs:1652:16:1652:16 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1654:13:1654:13 | n | | {EXTERNAL LOCATION} | bool | | main.rs:1654:17:1654:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1654:18:1654:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1654:18:1654:24 | * ... | | {EXTERNAL LOCATION} | & | | main.rs:1654:18:1654:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1654:19:1654:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1654:19:1654:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1654:19:1654:24 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1654:19:1654:24 | &... | &T | {EXTERNAL LOCATION} | & | | main.rs:1654:19:1654:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1654:20:1654:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1654:20:1654:24 | &true | | {EXTERNAL LOCATION} | & | | main.rs:1654:20:1654:24 | &true | &T | {EXTERNAL LOCATION} | bool | | main.rs:1654:21:1654:24 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1658:17:1658:20 | flag | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1658:24:1658:41 | ...::default(...) | | main.rs:1617:5:1620:5 | MyFlag | -| main.rs:1659:9:1659:31 | ...::flip(...) | | file://:0:0:0:0 | () | -| main.rs:1659:22:1659:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1659:9:1659:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1659:22:1659:30 | &mut flag | | {EXTERNAL LOCATION} | & | | main.rs:1659:22:1659:30 | &mut flag | &T | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1659:27:1659:30 | flag | | main.rs:1617:5:1620:5 | MyFlag | -| main.rs:1660:18:1660:23 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1660:18:1660:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1660:18:1660:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1660:18:1660:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1660:18:1660:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1660:18:1660:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1660:18:1660:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1660:26:1660:29 | flag | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1675:43:1678:5 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1675:43:1678:5 | { ... } | E | main.rs:1667:5:1668:14 | S1 | @@ -3807,7 +3807,7 @@ inferType | main.rs:1693:17:1693:18 | TryExpr | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1693:17:1693:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1693:24:1693:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1693:24:1693:28 | \|...\| s | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1693:24:1693:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | main.rs:1694:9:1694:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1694:9:1694:22 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | | main.rs:1694:9:1694:22 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | @@ -3830,23 +3830,23 @@ inferType | main.rs:1701:22:1704:10 | ... .and_then(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1701:33:1701:37 | value | | main.rs:1699:20:1699:27 | T | | main.rs:1701:49:1704:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:1701:49:1704:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | | main.rs:1701:49:1704:9 | \|...\| ... | dyn(Output).E | main.rs:1667:5:1668:14 | S1 | | main.rs:1701:53:1704:9 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1701:53:1704:9 | { ... } | E | main.rs:1667:5:1668:14 | S1 | -| main.rs:1702:22:1702:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1702:22:1702:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1702:22:1702:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1702:22:1702:30 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1702:22:1702:30 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1702:22:1702:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1702:22:1702:30 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1705:9:1705:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1705:9:1705:23 | ...::Err(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1705:9:1705:23 | ...::Err(...) | T | main.rs:1699:20:1699:27 | T | | main.rs:1705:21:1705:22 | S1 | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1709:16:1725:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1710:9:1712:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1709:16:1725:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1710:9:1712:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1710:16:1710:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1710:16:1710:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1710:16:1710:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | @@ -3854,13 +3854,13 @@ inferType | main.rs:1710:37:1710:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1710:37:1710:52 | try_same_error(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1710:37:1710:52 | try_same_error(...) | T | main.rs:1667:5:1668:14 | S1 | -| main.rs:1710:54:1712:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1711:22:1711:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1710:54:1712:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1711:22:1711:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1711:22:1711:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1711:22:1711:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1711:22:1711:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1711:22:1711:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1711:22:1711:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1711:30:1711:35 | result | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1714:9:1716:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1714:9:1716:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1714:16:1714:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1714:16:1714:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | | main.rs:1714:16:1714:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | @@ -3868,13 +3868,13 @@ inferType | main.rs:1714:37:1714:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1714:37:1714:55 | try_convert_error(...) | E | main.rs:1670:5:1671:14 | S2 | | main.rs:1714:37:1714:55 | try_convert_error(...) | T | main.rs:1667:5:1668:14 | S1 | -| main.rs:1714:57:1716:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1715:22:1715:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1714:57:1716:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1715:22:1715:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1715:22:1715:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1715:22:1715:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1715:22:1715:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1715:22:1715:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1715:22:1715:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1715:30:1715:35 | result | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1718:9:1720:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1718:9:1720:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1718:16:1718:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1718:16:1718:33 | ...::Ok(...) | E | main.rs:1670:5:1671:14 | S2 | | main.rs:1718:16:1718:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | @@ -3882,13 +3882,13 @@ inferType | main.rs:1718:37:1718:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1718:37:1718:49 | try_chained(...) | E | main.rs:1670:5:1671:14 | S2 | | main.rs:1718:37:1718:49 | try_chained(...) | T | main.rs:1667:5:1668:14 | S1 | -| main.rs:1718:51:1720:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1719:22:1719:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1718:51:1720:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1719:22:1719:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1719:22:1719:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1719:22:1719:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1719:22:1719:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1719:22:1719:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1719:22:1719:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1719:30:1719:35 | result | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1722:9:1724:9 | if ... {...} | | file://:0:0:0:0 | () | +| main.rs:1722:9:1724:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | main.rs:1722:16:1722:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1722:16:1722:33 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:16:1722:33 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | @@ -3900,13 +3900,13 @@ inferType | main.rs:1722:49:1722:62 | ...::Ok(...) | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:49:1722:62 | ...::Ok(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1722:65:1724:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1723:22:1723:27 | "{:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:1722:65:1724:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1723:22:1723:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1723:22:1723:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:1723:22:1723:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:1723:22:1723:35 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1723:22:1723:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1723:22:1723:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | -| main.rs:1729:16:1820:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1729:16:1820:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1730:13:1730:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1730:22:1730:22 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1731:13:1731:13 | y | | {EXTERNAL LOCATION} | i32 | @@ -3920,9 +3920,9 @@ inferType | main.rs:1733:17:1733:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | | main.rs:1734:13:1734:13 | c | | {EXTERNAL LOCATION} | char | | main.rs:1734:17:1734:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1735:13:1735:17 | hello | | file://:0:0:0:0 | & | +| main.rs:1735:13:1735:17 | hello | | {EXTERNAL LOCATION} | & | | main.rs:1735:13:1735:17 | hello | &T | {EXTERNAL LOCATION} | str | -| main.rs:1735:21:1735:27 | "Hello" | | file://:0:0:0:0 | & | +| main.rs:1735:21:1735:27 | "Hello" | | {EXTERNAL LOCATION} | & | | main.rs:1735:21:1735:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | | main.rs:1736:13:1736:13 | f | | {EXTERNAL LOCATION} | f64 | | main.rs:1736:17:1736:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | @@ -3930,173 +3930,181 @@ inferType | main.rs:1737:17:1737:20 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1738:13:1738:13 | f | | {EXTERNAL LOCATION} | bool | | main.rs:1738:17:1738:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1741:26:1741:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1741:26:1741:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1741:26:1741:30 | SelfParam | &T | main.rs:1740:9:1744:9 | Self [trait MyTrait] | -| main.rs:1747:26:1747:30 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1747:26:1747:30 | SelfParam | &T | file://:0:0:0:0 | [] | +| main.rs:1747:26:1747:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1747:26:1747:30 | SelfParam | &T | {EXTERNAL LOCATION} | [;] | | main.rs:1747:26:1747:30 | SelfParam | &T.[T;...] | main.rs:1746:14:1746:23 | T | -| main.rs:1747:39:1749:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1747:39:1749:13 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1747:39:1749:13 | { ... } | &T | main.rs:1746:14:1746:23 | T | -| main.rs:1748:17:1748:20 | self | | file://:0:0:0:0 | & | -| main.rs:1748:17:1748:20 | self | &T | file://:0:0:0:0 | [] | +| main.rs:1748:17:1748:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1748:17:1748:20 | self | &T | {EXTERNAL LOCATION} | [;] | | main.rs:1748:17:1748:20 | self | &T.[T;...] | main.rs:1746:14:1746:23 | T | -| main.rs:1748:17:1748:36 | ... .unwrap() | | file://:0:0:0:0 | & | +| main.rs:1748:17:1748:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | | main.rs:1748:17:1748:36 | ... .unwrap() | &T | main.rs:1746:14:1746:23 | T | | main.rs:1748:26:1748:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1751:31:1753:13 | { ... } | | main.rs:1746:14:1746:23 | T | | main.rs:1752:17:1752:28 | ...::default(...) | | main.rs:1746:14:1746:23 | T | -| main.rs:1756:13:1756:13 | x | | file://:0:0:0:0 | & | +| main.rs:1756:13:1756:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1756:13:1756:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1756:17:1756:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1756:17:1756:25 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:1756:17:1756:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:1756:17:1756:37 | ... .my_method() | | file://:0:0:0:0 | & | +| main.rs:1756:17:1756:37 | ... .my_method() | | {EXTERNAL LOCATION} | & | | main.rs:1756:17:1756:37 | ... .my_method() | &T | {EXTERNAL LOCATION} | i32 | | main.rs:1756:18:1756:18 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1756:21:1756:21 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1756:24:1756:24 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1757:13:1757:13 | x | | file://:0:0:0:0 | & | +| main.rs:1757:13:1757:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1757:13:1757:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1757:17:1757:47 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1757:17:1757:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1757:17:1757:47 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | | main.rs:1757:22:1757:22 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1757:37:1757:46 | &... | | file://:0:0:0:0 | & | -| main.rs:1757:37:1757:46 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:1757:37:1757:46 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1757:37:1757:46 | &... | &T | {EXTERNAL LOCATION} | [;] | | main.rs:1757:37:1757:46 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:1757:38:1757:46 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1757:38:1757:46 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:1757:38:1757:46 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:1757:39:1757:39 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:42:1757:42 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:45:1757:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:13:1758:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1758:17:1758:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1758:24:1758:24 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1761:26:1761:30 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1761:26:1761:30 | SelfParam | &T | file://:0:0:0:0 | [] | +| main.rs:1761:26:1761:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1761:26:1761:30 | SelfParam | &T | {EXTERNAL LOCATION} | [] | | main.rs:1761:26:1761:30 | SelfParam | &T.[T] | main.rs:1760:14:1760:23 | T | -| main.rs:1761:39:1763:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1761:39:1763:13 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1761:39:1763:13 | { ... } | &T | main.rs:1760:14:1760:23 | T | -| main.rs:1762:17:1762:20 | self | | file://:0:0:0:0 | & | -| main.rs:1762:17:1762:20 | self | &T | file://:0:0:0:0 | [] | +| main.rs:1762:17:1762:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1762:17:1762:20 | self | &T | {EXTERNAL LOCATION} | [] | | main.rs:1762:17:1762:20 | self | &T.[T] | main.rs:1760:14:1760:23 | T | | main.rs:1762:17:1762:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1762:17:1762:27 | self.get(...) | T | file://:0:0:0:0 | & | +| main.rs:1762:17:1762:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | | main.rs:1762:17:1762:27 | self.get(...) | T.&T | main.rs:1760:14:1760:23 | T | -| main.rs:1762:17:1762:36 | ... .unwrap() | | file://:0:0:0:0 | & | +| main.rs:1762:17:1762:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | | main.rs:1762:17:1762:36 | ... .unwrap() | &T | main.rs:1760:14:1760:23 | T | | main.rs:1762:26:1762:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1765:31:1767:13 | { ... } | | main.rs:1760:14:1760:23 | T | | main.rs:1766:17:1766:28 | ...::default(...) | | main.rs:1760:14:1760:23 | T | -| main.rs:1770:13:1770:13 | s | | file://:0:0:0:0 | & | -| main.rs:1770:13:1770:13 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1770:13:1770:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1770:13:1770:13 | s | &T | {EXTERNAL LOCATION} | [] | | main.rs:1770:13:1770:13 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:25:1770:34 | &... | | file://:0:0:0:0 | & | -| main.rs:1770:25:1770:34 | &... | &T | file://:0:0:0:0 | [] | -| main.rs:1770:25:1770:34 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:1770:25:1770:34 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1770:25:1770:34 | &... | &T | {EXTERNAL LOCATION} | [] | +| main.rs:1770:25:1770:34 | &... | &T | {EXTERNAL LOCATION} | [;] | | main.rs:1770:25:1770:34 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:1770:25:1770:34 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:26:1770:34 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1770:26:1770:34 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:1770:26:1770:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:1770:27:1770:27 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1770:30:1770:30 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1770:33:1770:33 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1771:13:1771:13 | x | | file://:0:0:0:0 | & | +| main.rs:1771:13:1771:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1771:13:1771:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1771:17:1771:17 | s | | file://:0:0:0:0 | & | -| main.rs:1771:17:1771:17 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1771:17:1771:17 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1771:17:1771:17 | s | &T | {EXTERNAL LOCATION} | [] | | main.rs:1771:17:1771:17 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | -| main.rs:1771:17:1771:29 | s.my_method() | | file://:0:0:0:0 | & | +| main.rs:1771:17:1771:29 | s.my_method() | | {EXTERNAL LOCATION} | & | | main.rs:1771:17:1771:29 | s.my_method() | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1772:13:1772:13 | x | | file://:0:0:0:0 | & | +| main.rs:1772:13:1772:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1772:13:1772:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1772:17:1772:35 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1772:17:1772:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1772:17:1772:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1772:34:1772:34 | s | | file://:0:0:0:0 | & | -| main.rs:1772:34:1772:34 | s | &T | file://:0:0:0:0 | [] | +| main.rs:1772:34:1772:34 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1772:34:1772:34 | s | &T | {EXTERNAL LOCATION} | [] | | main.rs:1772:34:1772:34 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | -| main.rs:1776:26:1776:30 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1776:26:1776:30 | SelfParam | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1773:13:1773:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1773:17:1773:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:26:1776:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1776:26:1776:30 | SelfParam | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:1776:26:1776:30 | SelfParam | &T.0(2) | main.rs:1775:14:1775:23 | T | | main.rs:1776:26:1776:30 | SelfParam | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1776:39:1778:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1776:39:1778:13 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1776:39:1778:13 | { ... } | &T | main.rs:1775:14:1775:23 | T | -| main.rs:1777:17:1777:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1777:17:1777:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1777:17:1777:23 | &... | &T | main.rs:1775:14:1775:23 | T | -| main.rs:1777:18:1777:21 | self | | file://:0:0:0:0 | & | -| main.rs:1777:18:1777:21 | self | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1777:18:1777:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1777:18:1777:21 | self | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:1777:18:1777:21 | self | &T.0(2) | main.rs:1775:14:1775:23 | T | | main.rs:1777:18:1777:21 | self | &T.1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1777:18:1777:23 | self.0 | | main.rs:1775:14:1775:23 | T | | main.rs:1780:31:1782:13 | { ... } | | main.rs:1775:14:1775:23 | T | | main.rs:1781:17:1781:28 | ...::default(...) | | main.rs:1775:14:1775:23 | T | -| main.rs:1785:13:1785:13 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1785:13:1785:13 | p | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1785:13:1785:13 | p | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1785:13:1785:13 | p | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1785:17:1785:23 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:1785:17:1785:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1785:17:1785:23 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1785:17:1785:23 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1785:18:1785:19 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1785:22:1785:22 | 7 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1786:13:1786:13 | x | | file://:0:0:0:0 | & | +| main.rs:1786:13:1786:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1786:13:1786:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1786:17:1786:17 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1786:17:1786:17 | p | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1786:17:1786:17 | p | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1786:17:1786:17 | p | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1786:17:1786:29 | p.my_method() | | file://:0:0:0:0 | & | +| main.rs:1786:17:1786:29 | p.my_method() | | {EXTERNAL LOCATION} | & | | main.rs:1786:17:1786:29 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:13:1787:13 | x | | file://:0:0:0:0 | & | +| main.rs:1787:13:1787:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1787:13:1787:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:17:1787:39 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1787:17:1787:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1787:17:1787:39 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:37:1787:38 | &p | | file://:0:0:0:0 | & | -| main.rs:1787:37:1787:38 | &p | &T | file://:0:0:0:0 | (T_2) | +| main.rs:1787:37:1787:38 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1787:37:1787:38 | &p | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:1787:37:1787:38 | &p | &T.0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1787:37:1787:38 | &p | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:38:1787:38 | p | | file://:0:0:0:0 | (T_2) | +| main.rs:1787:38:1787:38 | p | | {EXTERNAL LOCATION} | (T_2) | | main.rs:1787:38:1787:38 | p | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:1787:38:1787:38 | p | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1791:26:1791:30 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1791:26:1791:30 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1788:13:1788:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1788:17:1788:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1791:26:1791:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1791:26:1791:30 | SelfParam | &T | {EXTERNAL LOCATION} | & | | main.rs:1791:26:1791:30 | SelfParam | &T.&T | main.rs:1790:14:1790:23 | T | -| main.rs:1791:39:1793:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1791:39:1793:13 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1791:39:1793:13 | { ... } | &T | main.rs:1790:14:1790:23 | T | -| main.rs:1792:17:1792:21 | * ... | | file://:0:0:0:0 | & | +| main.rs:1792:17:1792:21 | * ... | | {EXTERNAL LOCATION} | & | | main.rs:1792:17:1792:21 | * ... | &T | main.rs:1790:14:1790:23 | T | -| main.rs:1792:18:1792:21 | self | | file://:0:0:0:0 | & | -| main.rs:1792:18:1792:21 | self | &T | file://:0:0:0:0 | & | +| main.rs:1792:18:1792:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1792:18:1792:21 | self | &T | {EXTERNAL LOCATION} | & | | main.rs:1792:18:1792:21 | self | &T.&T | main.rs:1790:14:1790:23 | T | | main.rs:1795:31:1797:13 | { ... } | | main.rs:1790:14:1790:23 | T | | main.rs:1796:17:1796:28 | ...::default(...) | | main.rs:1790:14:1790:23 | T | -| main.rs:1800:13:1800:13 | r | | file://:0:0:0:0 | & | +| main.rs:1800:13:1800:13 | r | | {EXTERNAL LOCATION} | & | | main.rs:1800:13:1800:13 | r | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1800:17:1800:19 | &42 | | file://:0:0:0:0 | & | +| main.rs:1800:17:1800:19 | &42 | | {EXTERNAL LOCATION} | & | | main.rs:1800:17:1800:19 | &42 | &T | {EXTERNAL LOCATION} | i32 | | main.rs:1800:18:1800:19 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:13:1801:13 | x | | file://:0:0:0:0 | & | +| main.rs:1801:13:1801:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1801:13:1801:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:17:1801:17 | r | | file://:0:0:0:0 | & | +| main.rs:1801:17:1801:17 | r | | {EXTERNAL LOCATION} | & | | main.rs:1801:17:1801:17 | r | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1801:17:1801:29 | r.my_method() | | file://:0:0:0:0 | & | +| main.rs:1801:17:1801:29 | r.my_method() | | {EXTERNAL LOCATION} | & | | main.rs:1801:17:1801:29 | r.my_method() | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1802:13:1802:13 | x | | file://:0:0:0:0 | & | +| main.rs:1802:13:1802:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1802:13:1802:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1802:17:1802:35 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1802:17:1802:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1802:17:1802:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1802:33:1802:34 | &r | | file://:0:0:0:0 | & | -| main.rs:1802:33:1802:34 | &r | &T | file://:0:0:0:0 | & | +| main.rs:1802:33:1802:34 | &r | | {EXTERNAL LOCATION} | & | +| main.rs:1802:33:1802:34 | &r | &T | {EXTERNAL LOCATION} | & | | main.rs:1802:33:1802:34 | &r | &T.&T | {EXTERNAL LOCATION} | i32 | -| main.rs:1802:34:1802:34 | r | | file://:0:0:0:0 | & | +| main.rs:1802:34:1802:34 | r | | {EXTERNAL LOCATION} | & | | main.rs:1802:34:1802:34 | r | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1806:26:1806:30 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1803:13:1803:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1803:17:1803:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1806:26:1806:30 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1806:26:1806:30 | SelfParam | &T | file://:0:0:0:0 | * | | main.rs:1806:26:1806:30 | SelfParam | &T.*T | main.rs:1805:14:1805:23 | T | -| main.rs:1806:39:1808:13 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1806:39:1808:13 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1806:39:1808:13 | { ... } | &T | main.rs:1805:14:1805:23 | T | -| main.rs:1807:17:1807:34 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1807:17:1807:34 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1807:17:1807:34 | { ... } | &T | main.rs:1805:14:1805:23 | T | -| main.rs:1807:26:1807:32 | &... | | file://:0:0:0:0 | & | +| main.rs:1807:26:1807:32 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1807:26:1807:32 | &... | &T | main.rs:1805:14:1805:23 | T | | main.rs:1807:27:1807:32 | * ... | | main.rs:1805:14:1805:23 | T | | main.rs:1807:28:1807:32 | * ... | | file://:0:0:0:0 | * | | main.rs:1807:28:1807:32 | * ... | *T | main.rs:1805:14:1805:23 | T | -| main.rs:1807:29:1807:32 | self | | file://:0:0:0:0 | & | +| main.rs:1807:29:1807:32 | self | | {EXTERNAL LOCATION} | & | | main.rs:1807:29:1807:32 | self | &T | file://:0:0:0:0 | * | | main.rs:1807:29:1807:32 | self | &T.*T | main.rs:1805:14:1805:23 | T | | main.rs:1810:31:1812:13 | { ... } | | main.rs:1805:14:1805:23 | T | @@ -4105,29 +4113,31 @@ inferType | main.rs:1815:21:1815:22 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1816:13:1816:13 | p | | file://:0:0:0:0 | * | | main.rs:1816:13:1816:13 | p | *T | {EXTERNAL LOCATION} | i32 | -| main.rs:1816:27:1816:32 | &mut v | | file://:0:0:0:0 | & | +| main.rs:1816:27:1816:32 | &mut v | | {EXTERNAL LOCATION} | & | | main.rs:1816:27:1816:32 | &mut v | &T | {EXTERNAL LOCATION} | i32 | | main.rs:1816:32:1816:32 | v | | {EXTERNAL LOCATION} | i32 | -| main.rs:1817:13:1817:13 | x | | file://:0:0:0:0 | & | +| main.rs:1817:13:1817:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1817:13:1817:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1817:17:1817:40 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1817:17:1817:40 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1817:17:1817:40 | { ... } | &T | {EXTERNAL LOCATION} | i32 | | main.rs:1817:26:1817:26 | p | | file://:0:0:0:0 | * | | main.rs:1817:26:1817:26 | p | *T | {EXTERNAL LOCATION} | i32 | -| main.rs:1817:26:1817:38 | p.my_method() | | file://:0:0:0:0 | & | +| main.rs:1817:26:1817:38 | p.my_method() | | {EXTERNAL LOCATION} | & | | main.rs:1817:26:1817:38 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1818:13:1818:13 | x | | file://:0:0:0:0 | & | +| main.rs:1818:13:1818:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1818:13:1818:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1818:17:1818:50 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1818:17:1818:50 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:1818:17:1818:50 | { ... } | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1818:26:1818:48 | ...::my_method(...) | | file://:0:0:0:0 | & | +| main.rs:1818:26:1818:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | | main.rs:1818:26:1818:48 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:1818:46:1818:47 | &p | | file://:0:0:0:0 | & | +| main.rs:1818:46:1818:47 | &p | | {EXTERNAL LOCATION} | & | | main.rs:1818:46:1818:47 | &p | &T | file://:0:0:0:0 | * | | main.rs:1818:46:1818:47 | &p | &T.*T | {EXTERNAL LOCATION} | i32 | | main.rs:1818:47:1818:47 | p | | file://:0:0:0:0 | * | | main.rs:1818:47:1818:47 | p | *T | {EXTERNAL LOCATION} | i32 | -| main.rs:1825:16:1837:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1819:13:1819:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1819:17:1819:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1825:16:1837:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1826:13:1826:13 | x | | {EXTERNAL LOCATION} | bool | | main.rs:1826:17:1826:20 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1826:17:1826:29 | ... && ... | | {EXTERNAL LOCATION} | bool | @@ -4141,17 +4151,17 @@ inferType | main.rs:1830:20:1830:21 | 34 | | {EXTERNAL LOCATION} | i32 | | main.rs:1830:20:1830:27 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:1830:26:1830:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1831:9:1835:9 | if cond {...} else {...} | | file://:0:0:0:0 | () | +| main.rs:1831:9:1835:9 | if cond {...} else {...} | | {EXTERNAL LOCATION} | () | | main.rs:1831:12:1831:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1831:17:1833:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1832:17:1832:17 | z | | file://:0:0:0:0 | () | -| main.rs:1832:21:1832:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1831:17:1833:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1832:17:1832:17 | z | | {EXTERNAL LOCATION} | () | +| main.rs:1832:21:1832:27 | (...) | | {EXTERNAL LOCATION} | () | | main.rs:1832:22:1832:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1832:22:1832:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1832:22:1832:26 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1832:26:1832:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1833:16:1835:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:1833:16:1835:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1834:13:1834:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1834:13:1834:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1834:13:1834:17 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1834:17:1834:17 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1836:9:1836:9 | a | | {EXTERNAL LOCATION} | i32 | | main.rs:1850:30:1852:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | @@ -4172,20 +4182,20 @@ inferType | main.rs:1861:20:1861:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1861:29:1861:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1861:29:1861:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:23:1868:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1868:23:1868:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1868:23:1868:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1868:34:1868:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1868:45:1871:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1869:13:1869:16 | self | | file://:0:0:0:0 | & | +| main.rs:1868:45:1871:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1869:13:1869:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1869:13:1869:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1869:13:1869:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:13:1869:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1869:13:1869:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1869:23:1869:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1869:23:1869:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1870:13:1870:16 | self | | file://:0:0:0:0 | & | +| main.rs:1870:13:1870:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1870:13:1870:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1870:13:1870:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1870:13:1870:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1870:13:1870:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1870:23:1870:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1870:23:1870:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1876:16:1876:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4202,20 +4212,20 @@ inferType | main.rs:1879:20:1879:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1879:29:1879:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1879:29:1879:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1886:23:1886:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1886:23:1886:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1886:23:1886:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1886:34:1886:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1886:45:1889:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1887:13:1887:16 | self | | file://:0:0:0:0 | & | +| main.rs:1886:45:1889:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1887:13:1887:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1887:13:1887:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1887:13:1887:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1887:13:1887:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1887:13:1887:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1887:23:1887:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1887:23:1887:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:13:1888:16 | self | | file://:0:0:0:0 | & | +| main.rs:1888:13:1888:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1888:13:1888:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1888:13:1888:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:13:1888:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1888:13:1888:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1888:23:1888:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1888:23:1888:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1894:16:1894:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4232,20 +4242,20 @@ inferType | main.rs:1897:20:1897:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1897:29:1897:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1897:29:1897:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1903:23:1903:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1903:23:1903:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1903:23:1903:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1903:34:1903:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1903:45:1906:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1904:13:1904:16 | self | | file://:0:0:0:0 | & | +| main.rs:1903:45:1906:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1904:13:1904:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1904:13:1904:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1904:13:1904:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:13:1904:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1904:13:1904:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1904:23:1904:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1904:23:1904:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:13:1905:16 | self | | file://:0:0:0:0 | & | +| main.rs:1905:13:1905:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1905:13:1905:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1905:13:1905:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:13:1905:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1905:13:1905:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1905:23:1905:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1905:23:1905:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1911:16:1911:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4262,20 +4272,20 @@ inferType | main.rs:1914:20:1914:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1914:29:1914:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1914:29:1914:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1920:23:1920:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1920:23:1920:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1920:23:1920:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1920:34:1920:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1920:45:1923:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1921:13:1921:16 | self | | file://:0:0:0:0 | & | +| main.rs:1920:45:1923:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1921:13:1921:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1921:13:1921:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1921:13:1921:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1921:13:1921:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1921:23:1921:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1921:23:1921:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:13:1922:16 | self | | file://:0:0:0:0 | & | +| main.rs:1922:13:1922:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1922:13:1922:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1922:13:1922:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1922:13:1922:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1922:13:1922:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1922:23:1922:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1922:23:1922:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1928:16:1928:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4292,20 +4302,20 @@ inferType | main.rs:1931:20:1931:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1931:29:1931:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1931:29:1931:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1937:23:1937:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1937:23:1937:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1937:23:1937:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1937:34:1937:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1937:45:1940:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1938:13:1938:16 | self | | file://:0:0:0:0 | & | +| main.rs:1937:45:1940:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1938:13:1938:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1938:13:1938:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1938:13:1938:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1938:13:1938:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1938:13:1938:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1938:23:1938:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1938:23:1938:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:13:1939:16 | self | | file://:0:0:0:0 | & | +| main.rs:1939:13:1939:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1939:13:1939:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1939:13:1939:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1939:13:1939:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1939:13:1939:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1939:23:1939:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1939:23:1939:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1945:19:1945:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4322,20 +4332,20 @@ inferType | main.rs:1948:20:1948:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1948:29:1948:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1948:29:1948:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1954:26:1954:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1954:26:1954:34 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1954:26:1954:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1954:37:1954:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1954:48:1957:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1955:13:1955:16 | self | | file://:0:0:0:0 | & | +| main.rs:1954:48:1957:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1955:13:1955:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1955:13:1955:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1955:13:1955:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1955:13:1955:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1955:13:1955:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1955:23:1955:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1955:23:1955:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1956:13:1956:16 | self | | file://:0:0:0:0 | & | +| main.rs:1956:13:1956:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1956:13:1956:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1956:13:1956:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1956:13:1956:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1956:13:1956:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1956:23:1956:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1956:23:1956:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1962:18:1962:21 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4352,20 +4362,20 @@ inferType | main.rs:1965:20:1965:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1965:29:1965:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1965:29:1965:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1971:25:1971:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1971:25:1971:33 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1971:25:1971:33 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1971:36:1971:38 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1971:47:1974:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1972:13:1972:16 | self | | file://:0:0:0:0 | & | +| main.rs:1971:47:1974:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1972:13:1972:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1972:13:1972:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1972:13:1972:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1972:13:1972:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1972:13:1972:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1972:23:1972:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1972:23:1972:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:13:1973:16 | self | | file://:0:0:0:0 | & | +| main.rs:1973:13:1973:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1973:13:1973:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1973:13:1973:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1973:13:1973:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1973:13:1973:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1973:23:1973:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1973:23:1973:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1979:19:1979:22 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4382,20 +4392,20 @@ inferType | main.rs:1982:20:1982:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1982:29:1982:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1982:29:1982:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1988:26:1988:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1988:26:1988:34 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:1988:26:1988:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1988:37:1988:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:1988:48:1991:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:1989:13:1989:16 | self | | file://:0:0:0:0 | & | +| main.rs:1988:48:1991:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1989:13:1989:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1989:13:1989:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1989:13:1989:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1989:13:1989:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1989:13:1989:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1989:23:1989:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1989:23:1989:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:13:1990:16 | self | | file://:0:0:0:0 | & | +| main.rs:1990:13:1990:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:1990:13:1990:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1990:13:1990:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1990:13:1990:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1990:13:1990:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1990:23:1990:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1990:23:1990:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1996:16:1996:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | @@ -4410,19 +4420,19 @@ inferType | main.rs:1999:20:1999:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1999:20:1999:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1999:30:1999:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2005:23:2005:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2005:23:2005:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2005:23:2005:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2005:34:2005:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2005:44:2008:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2006:13:2006:16 | self | | file://:0:0:0:0 | & | +| main.rs:2005:44:2008:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2006:13:2006:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2006:13:2006:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2006:13:2006:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2006:13:2006:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2006:13:2006:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2006:24:2006:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2007:13:2007:16 | self | | file://:0:0:0:0 | & | +| main.rs:2007:13:2007:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2007:13:2007:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2007:13:2007:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2007:13:2007:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2007:13:2007:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2007:24:2007:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2013:16:2013:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2013:22:2013:24 | rhs | | {EXTERNAL LOCATION} | u32 | @@ -4436,19 +4446,19 @@ inferType | main.rs:2016:20:2016:25 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2016:20:2016:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2016:30:2016:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2022:23:2022:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2022:23:2022:31 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2022:23:2022:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2022:34:2022:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2022:44:2025:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2023:13:2023:16 | self | | file://:0:0:0:0 | & | +| main.rs:2022:44:2025:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2023:13:2023:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2023:13:2023:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2023:13:2023:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2023:13:2023:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2023:13:2023:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2023:24:2023:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:2024:13:2024:16 | self | | file://:0:0:0:0 | & | +| main.rs:2024:13:2024:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2024:13:2024:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2024:13:2024:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2024:13:2024:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2024:13:2024:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2024:24:2024:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2030:16:2030:19 | SelfParam | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2030:30:2035:9 | { ... } | | main.rs:1843:5:1848:5 | Vec2 | @@ -4468,150 +4478,150 @@ inferType | main.rs:2043:20:2043:26 | ! ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2043:21:2043:24 | self | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2043:21:2043:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2049:15:2049:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2049:15:2049:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2049:15:2049:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2049:22:2049:26 | other | | file://:0:0:0:0 | & | +| main.rs:2049:22:2049:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2049:22:2049:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2049:44:2051:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2050:13:2050:16 | self | | file://:0:0:0:0 | & | +| main.rs:2050:13:2050:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2050:13:2050:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:13:2050:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2050:13:2050:29 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:2050:13:2050:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2050:23:2050:27 | other | | file://:0:0:0:0 | & | +| main.rs:2050:23:2050:27 | other | | {EXTERNAL LOCATION} | & | | main.rs:2050:23:2050:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:23:2050:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2050:34:2050:37 | self | | file://:0:0:0:0 | & | +| main.rs:2050:34:2050:37 | self | | {EXTERNAL LOCATION} | & | | main.rs:2050:34:2050:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:34:2050:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2050:34:2050:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2050:44:2050:48 | other | | file://:0:0:0:0 | & | +| main.rs:2050:44:2050:48 | other | | {EXTERNAL LOCATION} | & | | main.rs:2050:44:2050:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:44:2050:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2053:15:2053:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2053:15:2053:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2053:15:2053:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2053:22:2053:26 | other | | file://:0:0:0:0 | & | +| main.rs:2053:22:2053:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2053:22:2053:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2053:44:2055:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2054:13:2054:16 | self | | file://:0:0:0:0 | & | +| main.rs:2054:13:2054:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2054:13:2054:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:13:2054:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2054:13:2054:29 | ... != ... | | {EXTERNAL LOCATION} | bool | | main.rs:2054:13:2054:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2054:23:2054:27 | other | | file://:0:0:0:0 | & | +| main.rs:2054:23:2054:27 | other | | {EXTERNAL LOCATION} | & | | main.rs:2054:23:2054:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:23:2054:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2054:34:2054:37 | self | | file://:0:0:0:0 | & | +| main.rs:2054:34:2054:37 | self | | {EXTERNAL LOCATION} | & | | main.rs:2054:34:2054:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:34:2054:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2054:34:2054:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2054:44:2054:48 | other | | file://:0:0:0:0 | & | +| main.rs:2054:44:2054:48 | other | | {EXTERNAL LOCATION} | & | | main.rs:2054:44:2054:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:44:2054:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2059:24:2059:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2059:24:2059:28 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2059:24:2059:28 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2059:31:2059:35 | other | | file://:0:0:0:0 | & | +| main.rs:2059:31:2059:35 | other | | {EXTERNAL LOCATION} | & | | main.rs:2059:31:2059:35 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2059:75:2061:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:2059:75:2061:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | | main.rs:2060:13:2060:29 | (...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:13:2060:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2060:13:2060:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:2060:14:2060:17 | self | | file://:0:0:0:0 | & | +| main.rs:2060:14:2060:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:2060:14:2060:17 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:14:2060:19 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:14:2060:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2060:23:2060:26 | self | | file://:0:0:0:0 | & | +| main.rs:2060:23:2060:26 | self | | {EXTERNAL LOCATION} | & | | main.rs:2060:23:2060:26 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:23:2060:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2060:43:2060:62 | &... | | file://:0:0:0:0 | & | +| main.rs:2060:43:2060:62 | &... | | {EXTERNAL LOCATION} | & | | main.rs:2060:43:2060:62 | &... | &T | {EXTERNAL LOCATION} | i64 | | main.rs:2060:44:2060:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2060:45:2060:49 | other | | file://:0:0:0:0 | & | +| main.rs:2060:45:2060:49 | other | | {EXTERNAL LOCATION} | & | | main.rs:2060:45:2060:49 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:45:2060:51 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:45:2060:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2060:55:2060:59 | other | | file://:0:0:0:0 | & | +| main.rs:2060:55:2060:59 | other | | {EXTERNAL LOCATION} | & | | main.rs:2060:55:2060:59 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:55:2060:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2063:15:2063:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2063:15:2063:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2063:15:2063:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2063:22:2063:26 | other | | file://:0:0:0:0 | & | +| main.rs:2063:22:2063:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2063:22:2063:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2063:44:2065:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2064:13:2064:16 | self | | file://:0:0:0:0 | & | +| main.rs:2064:13:2064:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2064:13:2064:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:13:2064:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2064:13:2064:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2064:13:2064:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2064:22:2064:26 | other | | file://:0:0:0:0 | & | +| main.rs:2064:22:2064:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2064:22:2064:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:22:2064:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2064:33:2064:36 | self | | file://:0:0:0:0 | & | +| main.rs:2064:33:2064:36 | self | | {EXTERNAL LOCATION} | & | | main.rs:2064:33:2064:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:33:2064:38 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2064:33:2064:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2064:42:2064:46 | other | | file://:0:0:0:0 | & | +| main.rs:2064:42:2064:46 | other | | {EXTERNAL LOCATION} | & | | main.rs:2064:42:2064:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:42:2064:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2067:15:2067:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2067:15:2067:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2067:15:2067:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2067:22:2067:26 | other | | file://:0:0:0:0 | & | +| main.rs:2067:22:2067:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2067:22:2067:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2067:44:2069:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2068:13:2068:16 | self | | file://:0:0:0:0 | & | +| main.rs:2068:13:2068:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2068:13:2068:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:13:2068:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2068:13:2068:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2068:13:2068:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2068:23:2068:27 | other | | file://:0:0:0:0 | & | +| main.rs:2068:23:2068:27 | other | | {EXTERNAL LOCATION} | & | | main.rs:2068:23:2068:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:23:2068:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2068:34:2068:37 | self | | file://:0:0:0:0 | & | +| main.rs:2068:34:2068:37 | self | | {EXTERNAL LOCATION} | & | | main.rs:2068:34:2068:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:34:2068:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2068:34:2068:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2068:44:2068:48 | other | | file://:0:0:0:0 | & | +| main.rs:2068:44:2068:48 | other | | {EXTERNAL LOCATION} | & | | main.rs:2068:44:2068:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:44:2068:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2071:15:2071:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2071:15:2071:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2071:15:2071:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2071:22:2071:26 | other | | file://:0:0:0:0 | & | +| main.rs:2071:22:2071:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2071:22:2071:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2071:44:2073:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2072:13:2072:16 | self | | file://:0:0:0:0 | & | +| main.rs:2072:13:2072:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2072:13:2072:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:13:2072:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2072:13:2072:28 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:2072:13:2072:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2072:22:2072:26 | other | | file://:0:0:0:0 | & | +| main.rs:2072:22:2072:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2072:22:2072:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:22:2072:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2072:33:2072:36 | self | | file://:0:0:0:0 | & | +| main.rs:2072:33:2072:36 | self | | {EXTERNAL LOCATION} | & | | main.rs:2072:33:2072:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:33:2072:38 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2072:33:2072:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2072:42:2072:46 | other | | file://:0:0:0:0 | & | +| main.rs:2072:42:2072:46 | other | | {EXTERNAL LOCATION} | & | | main.rs:2072:42:2072:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:42:2072:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2075:15:2075:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2075:15:2075:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2075:15:2075:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2075:22:2075:26 | other | | file://:0:0:0:0 | & | +| main.rs:2075:22:2075:26 | other | | {EXTERNAL LOCATION} | & | | main.rs:2075:22:2075:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2075:44:2077:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2076:13:2076:16 | self | | file://:0:0:0:0 | & | +| main.rs:2076:13:2076:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2076:13:2076:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:13:2076:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2076:13:2076:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2076:13:2076:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2076:23:2076:27 | other | | file://:0:0:0:0 | & | +| main.rs:2076:23:2076:27 | other | | {EXTERNAL LOCATION} | & | | main.rs:2076:23:2076:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:23:2076:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2076:34:2076:37 | self | | file://:0:0:0:0 | & | +| main.rs:2076:34:2076:37 | self | | {EXTERNAL LOCATION} | & | | main.rs:2076:34:2076:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:34:2076:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2076:34:2076:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2076:44:2076:48 | other | | file://:0:0:0:0 | & | +| main.rs:2076:44:2076:48 | other | | {EXTERNAL LOCATION} | & | | main.rs:2076:44:2076:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:44:2076:50 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2080:26:2080:26 | a | | main.rs:2080:18:2080:23 | T | @@ -4620,7 +4630,7 @@ inferType | main.rs:2081:9:2081:9 | a | | main.rs:2080:18:2080:23 | T | | main.rs:2081:9:2081:13 | ... + ... | | {EXTERNAL LOCATION} | Output | | main.rs:2081:13:2081:13 | b | | main.rs:2080:18:2080:23 | T | -| main.rs:2084:16:2215:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2084:16:2215:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2088:13:2088:18 | i64_eq | | {EXTERNAL LOCATION} | bool | | main.rs:2088:22:2088:35 | (...) | | {EXTERNAL LOCATION} | bool | | main.rs:2088:23:2088:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | @@ -4676,27 +4686,27 @@ inferType | main.rs:2104:17:2104:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2104:34:2104:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2105:9:2105:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2105:9:2105:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2105:9:2105:31 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:2105:27:2105:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2107:17:2107:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2107:34:2107:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2108:9:2108:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2108:9:2108:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2108:9:2108:31 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:2108:27:2108:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2110:17:2110:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2110:34:2110:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2111:9:2111:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2111:9:2111:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2111:9:2111:31 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:2111:27:2111:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2113:17:2113:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2113:34:2113:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2114:9:2114:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2114:9:2114:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2114:9:2114:31 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:2114:27:2114:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2116:17:2116:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2116:34:2116:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2117:9:2117:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2117:9:2117:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2117:9:2117:31 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:2117:27:2117:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2120:13:2120:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | | main.rs:2120:26:2120:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | @@ -4721,27 +4731,27 @@ inferType | main.rs:2127:17:2127:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2127:37:2127:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2128:9:2128:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2128:9:2128:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2128:9:2128:34 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:2128:30:2128:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2130:17:2130:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2130:36:2130:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2131:9:2131:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2131:9:2131:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2131:9:2131:33 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:2131:29:2131:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2133:17:2133:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2133:37:2133:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2134:9:2134:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2134:9:2134:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2134:9:2134:34 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:2134:30:2134:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2136:17:2136:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2136:34:2136:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2137:9:2137:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2137:9:2137:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2137:9:2137:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2137:28:2137:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2139:17:2139:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | | main.rs:2139:34:2139:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2140:9:2140:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:2140:9:2140:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2140:9:2140:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2140:28:2140:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2142:13:2142:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | | main.rs:2142:23:2142:28 | - ... | | {EXTERNAL LOCATION} | i64 | @@ -4804,27 +4814,27 @@ inferType | main.rs:2165:17:2165:31 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2165:35:2165:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2166:9:2166:23 | vec2_add_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2166:9:2166:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2166:9:2166:29 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:2166:28:2166:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2168:17:2168:31 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2168:35:2168:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2169:9:2169:23 | vec2_sub_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2169:9:2169:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:2169:9:2169:29 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:2169:28:2169:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2171:17:2171:31 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2171:35:2171:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2172:9:2172:23 | vec2_mul_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2172:9:2172:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:2172:9:2172:29 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:2172:28:2172:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2174:17:2174:31 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2174:35:2174:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2175:9:2175:23 | vec2_div_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2175:9:2175:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:2175:9:2175:29 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:2175:28:2175:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2177:17:2177:31 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2177:35:2177:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2178:9:2178:23 | vec2_rem_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2178:9:2178:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:2178:9:2178:29 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:2178:28:2178:29 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2181:13:2181:23 | vec2_bitand | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2181:27:2181:28 | v1 | | main.rs:1843:5:1848:5 | Vec2 | @@ -4849,27 +4859,27 @@ inferType | main.rs:2188:17:2188:34 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2188:38:2188:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2189:9:2189:26 | vec2_bitand_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2189:9:2189:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:2189:9:2189:32 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:2189:31:2189:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2191:17:2191:33 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2191:37:2191:38 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2192:9:2192:25 | vec2_bitor_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2192:9:2192:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:2192:9:2192:31 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:2192:30:2192:31 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2194:17:2194:34 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2194:38:2194:39 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2195:9:2195:26 | vec2_bitxor_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2195:9:2195:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:2195:9:2195:32 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:2195:31:2195:32 | v2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2197:17:2197:31 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2197:35:2197:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2198:9:2198:23 | vec2_shl_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2198:9:2198:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:2198:9:2198:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2198:29:2198:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2200:17:2200:31 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2200:35:2200:36 | v1 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2201:9:2201:23 | vec2_shr_assign | | main.rs:1843:5:1848:5 | Vec2 | -| main.rs:2201:9:2201:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:2201:9:2201:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2201:29:2201:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2204:13:2204:20 | vec2_neg | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2204:24:2204:26 | - ... | | main.rs:1843:5:1848:5 | Vec2 | @@ -4894,7 +4904,7 @@ inferType | main.rs:2214:46:2214:46 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2214:53:2214:64 | default_vec2 | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2224:18:2224:21 | SelfParam | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2224:24:2224:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2224:24:2224:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2227:25:2229:5 | { ... } | | main.rs:2221:5:2221:14 | S1 | | main.rs:2228:9:2228:10 | S1 | | main.rs:2221:5:2221:14 | S1 | | main.rs:2231:41:2233:5 | { ... } | | main.rs:2231:16:2231:39 | impl ... | @@ -4903,11 +4913,11 @@ inferType | main.rs:2232:17:2232:18 | S1 | | main.rs:2221:5:2221:14 | S1 | | main.rs:2235:41:2237:5 | { ... } | | main.rs:2235:16:2235:39 | impl ... | | main.rs:2236:9:2236:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2236:9:2236:16 | { ... } | Output | file://:0:0:0:0 | () | +| main.rs:2236:9:2236:16 | { ... } | Output | {EXTERNAL LOCATION} | () | | main.rs:2245:13:2245:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:2245:13:2245:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:2245:13:2245:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | & | | main.rs:2245:13:2245:42 | SelfParam | Ptr.&T | main.rs:2239:5:2239:14 | S2 | -| main.rs:2246:13:2246:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:2246:13:2246:15 | _cx | | {EXTERNAL LOCATION} | & | | main.rs:2246:13:2246:15 | _cx | &T | {EXTERNAL LOCATION} | Context | | main.rs:2247:44:2249:9 | { ... } | | {EXTERNAL LOCATION} | Poll | | main.rs:2247:44:2249:9 | { ... } | T | main.rs:2221:5:2221:14 | S1 | @@ -4917,22 +4927,22 @@ inferType | main.rs:2252:41:2254:5 | { ... } | | main.rs:2252:16:2252:39 | impl ... | | main.rs:2253:9:2253:10 | S2 | | main.rs:2239:5:2239:14 | S2 | | main.rs:2253:9:2253:10 | S2 | | main.rs:2252:16:2252:39 | impl ... | -| main.rs:2256:22:2264:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2256:22:2264:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2257:9:2257:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | | main.rs:2257:9:2257:12 | f1(...) | Output | main.rs:2221:5:2221:14 | S1 | | main.rs:2257:9:2257:18 | await ... | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2257:9:2257:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2257:9:2257:22 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2258:9:2258:12 | f2(...) | | main.rs:2231:16:2231:39 | impl ... | | main.rs:2258:9:2258:18 | await ... | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2258:9:2258:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2258:9:2258:22 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2259:9:2259:12 | f3(...) | | main.rs:2235:16:2235:39 | impl ... | -| main.rs:2259:9:2259:18 | await ... | | file://:0:0:0:0 | () | +| main.rs:2259:9:2259:18 | await ... | | {EXTERNAL LOCATION} | () | | main.rs:2260:9:2260:12 | f4(...) | | main.rs:2252:16:2252:39 | impl ... | | main.rs:2260:9:2260:18 | await ... | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2260:9:2260:22 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2260:9:2260:22 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2261:9:2261:10 | S2 | | main.rs:2239:5:2239:14 | S2 | | main.rs:2261:9:2261:16 | await S2 | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2261:9:2261:20 | ... .f() | | file://:0:0:0:0 | () | +| main.rs:2261:9:2261:20 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2262:13:2262:13 | b | | {EXTERNAL LOCATION} | trait Future | | main.rs:2262:13:2262:13 | b | Output | main.rs:2221:5:2221:14 | S1 | | main.rs:2262:17:2262:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | @@ -4941,37 +4951,37 @@ inferType | main.rs:2263:9:2263:9 | b | | {EXTERNAL LOCATION} | trait Future | | main.rs:2263:9:2263:9 | b | Output | main.rs:2221:5:2221:14 | S1 | | main.rs:2263:9:2263:15 | await b | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2263:9:2263:19 | ... .f() | | file://:0:0:0:0 | () | -| main.rs:2274:15:2274:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2263:9:2263:19 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:2274:15:2274:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2274:15:2274:19 | SelfParam | &T | main.rs:2273:5:2275:5 | Self [trait Trait1] | -| main.rs:2274:22:2274:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2278:15:2278:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2274:22:2274:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2278:15:2278:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2278:15:2278:19 | SelfParam | &T | main.rs:2277:5:2279:5 | Self [trait Trait2] | -| main.rs:2278:22:2278:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2282:15:2282:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2278:22:2278:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2282:15:2282:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2282:15:2282:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | -| main.rs:2282:22:2282:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2286:15:2286:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2282:22:2282:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2286:15:2286:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2286:15:2286:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | -| main.rs:2286:22:2286:23 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2286:22:2286:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2289:37:2291:5 | { ... } | | main.rs:2289:16:2289:35 | impl ... + ... | | main.rs:2290:9:2290:10 | S1 | | main.rs:2268:5:2269:14 | S1 | | main.rs:2290:9:2290:10 | S1 | | main.rs:2289:16:2289:35 | impl ... + ... | -| main.rs:2294:18:2294:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2294:18:2294:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2294:18:2294:22 | SelfParam | &T | main.rs:2293:5:2295:5 | Self [trait MyTrait] | -| main.rs:2298:18:2298:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2298:18:2298:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2298:18:2298:22 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | | main.rs:2298:31:2300:9 | { ... } | | main.rs:2270:5:2270:14 | S2 | | main.rs:2299:13:2299:14 | S2 | | main.rs:2270:5:2270:14 | S2 | -| main.rs:2304:18:2304:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2304:18:2304:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2304:18:2304:22 | SelfParam | &T | main.rs:2271:5:2271:22 | S3 | | main.rs:2304:18:2304:22 | SelfParam | &T.T3 | main.rs:2303:10:2303:17 | T | | main.rs:2304:30:2307:9 | { ... } | | main.rs:2303:10:2303:17 | T | -| main.rs:2305:17:2305:21 | S3(...) | | file://:0:0:0:0 | & | +| main.rs:2305:17:2305:21 | S3(...) | | {EXTERNAL LOCATION} | & | | main.rs:2305:17:2305:21 | S3(...) | | main.rs:2271:5:2271:22 | S3 | | main.rs:2305:17:2305:21 | S3(...) | &T | main.rs:2271:5:2271:22 | S3 | | main.rs:2305:17:2305:21 | S3(...) | &T.T3 | main.rs:2303:10:2303:17 | T | -| main.rs:2305:25:2305:28 | self | | file://:0:0:0:0 | & | +| main.rs:2305:25:2305:28 | self | | {EXTERNAL LOCATION} | & | | main.rs:2305:25:2305:28 | self | &T | main.rs:2271:5:2271:22 | S3 | | main.rs:2305:25:2305:28 | self | &T.T3 | main.rs:2303:10:2303:17 | T | | main.rs:2306:13:2306:21 | t.clone() | | main.rs:2303:10:2303:17 | T | @@ -5003,12 +5013,12 @@ inferType | main.rs:2323:14:2323:18 | S3(...) | T3 | main.rs:2322:24:2322:31 | T | | main.rs:2323:17:2323:17 | x | | main.rs:2322:24:2322:31 | T | | main.rs:2326:34:2326:34 | x | | main.rs:2326:24:2326:31 | T | -| main.rs:2326:78:2328:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2326:78:2328:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2326:78:2328:5 | { ... } | 0(2) | main.rs:2326:44:2326:58 | impl ... | | main.rs:2326:78:2328:5 | { ... } | 0(2).impl(T) | main.rs:2326:24:2326:31 | T | | main.rs:2326:78:2328:5 | { ... } | 1(2) | main.rs:2326:61:2326:75 | impl ... | | main.rs:2326:78:2328:5 | { ... } | 1(2).impl(T) | main.rs:2326:24:2326:31 | T | -| main.rs:2327:9:2327:30 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2327:9:2327:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2271:5:2271:22 | S3 | | main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2326:44:2326:58 | impl ... | | main.rs:2327:9:2327:30 | TupleExpr | 0(2).T3 | main.rs:2326:24:2326:31 | T | @@ -5032,13 +5042,13 @@ inferType | main.rs:2330:51:2332:5 | { ... } | | main.rs:2330:23:2330:23 | A | | main.rs:2331:9:2331:9 | t | | main.rs:2330:29:2330:43 | impl ... | | main.rs:2331:9:2331:17 | t.get_a() | | main.rs:2330:23:2330:23 | A | -| main.rs:2334:16:2348:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2334:16:2348:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2335:13:2335:13 | x | | main.rs:2289:16:2289:35 | impl ... + ... | | main.rs:2335:17:2335:20 | f1(...) | | main.rs:2289:16:2289:35 | impl ... + ... | | main.rs:2336:9:2336:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | -| main.rs:2336:9:2336:14 | x.f1() | | file://:0:0:0:0 | () | +| main.rs:2336:9:2336:14 | x.f1() | | {EXTERNAL LOCATION} | () | | main.rs:2337:9:2337:9 | x | | main.rs:2289:16:2289:35 | impl ... + ... | -| main.rs:2337:9:2337:14 | x.f2() | | file://:0:0:0:0 | () | +| main.rs:2337:9:2337:14 | x.f2() | | {EXTERNAL LOCATION} | () | | main.rs:2338:13:2338:13 | a | | main.rs:2310:28:2310:43 | impl ... | | main.rs:2338:17:2338:32 | get_a_my_trait(...) | | main.rs:2310:28:2310:43 | impl ... | | main.rs:2339:13:2339:13 | b | | main.rs:2270:5:2270:14 | S2 | @@ -5066,7 +5076,7 @@ inferType | main.rs:2346:17:2346:52 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | | main.rs:2346:33:2346:34 | S1 | | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:13:2347:13 | g | | main.rs:2268:5:2269:14 | S1 | -| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2) | main.rs:2326:44:2326:58 | impl ... | | main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 1(2) | main.rs:2326:61:2326:75 | impl ... | @@ -5075,7 +5085,7 @@ inferType | main.rs:2347:17:2347:37 | ... .0 | impl(T) | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:17:2347:45 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:33:2347:34 | S1 | | main.rs:2268:5:2269:14 | S1 | -| main.rs:2358:16:2358:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2358:16:2358:20 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2358:16:2358:20 | SelfParam | &T | main.rs:2354:5:2355:13 | S | | main.rs:2358:31:2360:9 | { ... } | | main.rs:2354:5:2355:13 | S | | main.rs:2359:13:2359:13 | S | | main.rs:2354:5:2355:13 | S | @@ -5086,28 +5096,28 @@ inferType | main.rs:2370:27:2370:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | | main.rs:2370:27:2370:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2370:27:2370:36 | ...::new(...) | T | main.rs:2368:10:2368:10 | T | -| main.rs:2373:17:2373:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2373:17:2373:25 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2373:17:2373:25 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | | main.rs:2373:17:2373:25 | SelfParam | &T.T | main.rs:2368:10:2368:10 | T | | main.rs:2373:28:2373:32 | value | | main.rs:2368:10:2368:10 | T | -| main.rs:2373:38:2375:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2374:13:2374:16 | self | | file://:0:0:0:0 | & | +| main.rs:2373:38:2375:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2374:13:2374:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2374:13:2374:16 | self | &T | main.rs:2363:5:2366:5 | MyVec | | main.rs:2374:13:2374:16 | self | &T.T | main.rs:2368:10:2368:10 | T | | main.rs:2374:13:2374:21 | self.data | | {EXTERNAL LOCATION} | Vec | | main.rs:2374:13:2374:21 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:2374:13:2374:21 | self.data | T | main.rs:2368:10:2368:10 | T | -| main.rs:2374:13:2374:33 | ... .push(...) | | file://:0:0:0:0 | () | +| main.rs:2374:13:2374:33 | ... .push(...) | | {EXTERNAL LOCATION} | () | | main.rs:2374:28:2374:32 | value | | main.rs:2368:10:2368:10 | T | -| main.rs:2382:18:2382:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2382:18:2382:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2382:18:2382:22 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | | main.rs:2382:18:2382:22 | SelfParam | &T.T | main.rs:2378:10:2378:10 | T | | main.rs:2382:25:2382:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2382:56:2384:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2382:56:2384:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:2382:56:2384:9 | { ... } | &T | main.rs:2378:10:2378:10 | T | -| main.rs:2383:13:2383:29 | &... | | file://:0:0:0:0 | & | +| main.rs:2383:13:2383:29 | &... | | {EXTERNAL LOCATION} | & | | main.rs:2383:13:2383:29 | &... | &T | main.rs:2378:10:2378:10 | T | -| main.rs:2383:14:2383:17 | self | | file://:0:0:0:0 | & | +| main.rs:2383:14:2383:17 | self | | {EXTERNAL LOCATION} | & | | main.rs:2383:14:2383:17 | self | &T | main.rs:2363:5:2366:5 | MyVec | | main.rs:2383:14:2383:17 | self | &T.T | main.rs:2378:10:2378:10 | T | | main.rs:2383:14:2383:22 | self.data | | {EXTERNAL LOCATION} | Vec | @@ -5115,13 +5125,13 @@ inferType | main.rs:2383:14:2383:22 | self.data | T | main.rs:2378:10:2378:10 | T | | main.rs:2383:14:2383:29 | ...[index] | | main.rs:2378:10:2378:10 | T | | main.rs:2383:24:2383:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2387:22:2387:26 | slice | | file://:0:0:0:0 | & | -| main.rs:2387:22:2387:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2387:22:2387:26 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2387:22:2387:26 | slice | &T | {EXTERNAL LOCATION} | [] | | main.rs:2387:22:2387:26 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | -| main.rs:2387:35:2389:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2387:35:2389:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2388:13:2388:13 | x | | main.rs:2354:5:2355:13 | S | -| main.rs:2388:17:2388:21 | slice | | file://:0:0:0:0 | & | -| main.rs:2388:17:2388:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:2388:17:2388:21 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2388:17:2388:21 | slice | &T | {EXTERNAL LOCATION} | [] | | main.rs:2388:17:2388:21 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | | main.rs:2388:17:2388:24 | slice[0] | | main.rs:2354:5:2355:13 | S | | main.rs:2388:17:2388:30 | ... .foo() | | main.rs:2354:5:2355:13 | S | @@ -5132,28 +5142,28 @@ inferType | main.rs:2395:9:2395:9 | a | | main.rs:2391:20:2391:34 | T | | main.rs:2395:9:2395:12 | a[b] | | {EXTERNAL LOCATION} | Output | | main.rs:2395:11:2395:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2398:16:2409:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2398:16:2409:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2399:17:2399:19 | vec | | main.rs:2363:5:2366:5 | MyVec | | main.rs:2399:17:2399:19 | vec | T | main.rs:2354:5:2355:13 | S | | main.rs:2399:23:2399:34 | ...::new(...) | | main.rs:2363:5:2366:5 | MyVec | | main.rs:2399:23:2399:34 | ...::new(...) | T | main.rs:2354:5:2355:13 | S | | main.rs:2400:9:2400:11 | vec | | main.rs:2363:5:2366:5 | MyVec | | main.rs:2400:9:2400:11 | vec | T | main.rs:2354:5:2355:13 | S | -| main.rs:2400:9:2400:19 | vec.push(...) | | file://:0:0:0:0 | () | +| main.rs:2400:9:2400:19 | vec.push(...) | | {EXTERNAL LOCATION} | () | | main.rs:2400:18:2400:18 | S | | main.rs:2354:5:2355:13 | S | | main.rs:2401:9:2401:11 | vec | | main.rs:2363:5:2366:5 | MyVec | | main.rs:2401:9:2401:11 | vec | T | main.rs:2354:5:2355:13 | S | | main.rs:2401:9:2401:14 | vec[0] | | main.rs:2354:5:2355:13 | S | | main.rs:2401:9:2401:20 | ... .foo() | | main.rs:2354:5:2355:13 | S | | main.rs:2401:13:2401:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2403:13:2403:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:2403:13:2403:14 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2403:13:2403:14 | xs | [T;...] | main.rs:2354:5:2355:13 | S | | main.rs:2403:21:2403:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2403:26:2403:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2403:26:2403:28 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2403:26:2403:28 | [...] | [T;...] | main.rs:2354:5:2355:13 | S | | main.rs:2403:27:2403:27 | S | | main.rs:2354:5:2355:13 | S | | main.rs:2404:13:2404:13 | x | | main.rs:2354:5:2355:13 | S | -| main.rs:2404:17:2404:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:2404:17:2404:18 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2404:17:2404:18 | xs | [T;...] | main.rs:2354:5:2355:13 | S | | main.rs:2404:17:2404:21 | xs[0] | | main.rs:2354:5:2355:13 | S | | main.rs:2404:17:2404:27 | ... .foo() | | main.rs:2354:5:2355:13 | S | @@ -5161,21 +5171,21 @@ inferType | main.rs:2406:29:2406:31 | vec | | main.rs:2363:5:2366:5 | MyVec | | main.rs:2406:29:2406:31 | vec | T | main.rs:2354:5:2355:13 | S | | main.rs:2406:34:2406:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:9:2408:26 | analyze_slice(...) | | file://:0:0:0:0 | () | -| main.rs:2408:23:2408:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:2408:23:2408:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:2408:9:2408:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2408:23:2408:25 | &xs | | {EXTERNAL LOCATION} | & | +| main.rs:2408:23:2408:25 | &xs | &T | {EXTERNAL LOCATION} | [;] | | main.rs:2408:23:2408:25 | &xs | &T.[T;...] | main.rs:2354:5:2355:13 | S | -| main.rs:2408:24:2408:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:2408:24:2408:25 | xs | | {EXTERNAL LOCATION} | [;] | | main.rs:2408:24:2408:25 | xs | [T;...] | main.rs:2354:5:2355:13 | S | -| main.rs:2413:16:2415:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2413:16:2415:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2414:13:2414:13 | x | | {EXTERNAL LOCATION} | String | | main.rs:2414:17:2414:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2414:25:2414:35 | "Hello, {}" | | file://:0:0:0:0 | & | +| main.rs:2414:25:2414:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | | main.rs:2414:25:2414:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | | main.rs:2414:25:2414:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | | main.rs:2414:25:2414:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | | main.rs:2414:25:2414:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2414:38:2414:45 | "World!" | | file://:0:0:0:0 | & | +| main.rs:2414:38:2414:45 | "World!" | | {EXTERNAL LOCATION} | & | | main.rs:2414:38:2414:45 | "World!" | &T | {EXTERNAL LOCATION} | str | | main.rs:2423:19:2423:22 | SelfParam | | main.rs:2419:5:2424:5 | Self [trait MyAdd] | | main.rs:2423:25:2423:27 | rhs | | main.rs:2419:17:2419:26 | Rhs | @@ -5184,11 +5194,11 @@ inferType | main.rs:2430:45:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2431:13:2431:17 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2439:19:2439:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2439:25:2439:29 | value | | file://:0:0:0:0 | & | +| main.rs:2439:25:2439:29 | value | | {EXTERNAL LOCATION} | & | | main.rs:2439:25:2439:29 | value | &T | {EXTERNAL LOCATION} | i64 | | main.rs:2439:46:2441:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2440:13:2440:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2440:14:2440:18 | value | | file://:0:0:0:0 | & | +| main.rs:2440:14:2440:18 | value | | {EXTERNAL LOCATION} | & | | main.rs:2440:14:2440:18 | value | &T | {EXTERNAL LOCATION} | i64 | | main.rs:2448:19:2448:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2448:25:2448:29 | value | | {EXTERNAL LOCATION} | bool | @@ -5233,7 +5243,7 @@ inferType | main.rs:2473:31:2473:35 | other | | main.rs:2468:10:2468:17 | T | | main.rs:2484:19:2484:22 | SelfParam | | main.rs:2457:5:2457:19 | S | | main.rs:2484:19:2484:22 | SelfParam | T | main.rs:2477:14:2477:14 | T | -| main.rs:2484:25:2484:29 | other | | file://:0:0:0:0 | & | +| main.rs:2484:25:2484:29 | other | | {EXTERNAL LOCATION} | & | | main.rs:2484:25:2484:29 | other | &T | main.rs:2477:14:2477:14 | T | | main.rs:2484:55:2486:9 | { ... } | | main.rs:2457:5:2457:19 | S | | main.rs:2485:13:2485:37 | S(...) | | main.rs:2457:5:2457:19 | S | @@ -5241,7 +5251,7 @@ inferType | main.rs:2485:16:2485:19 | self | | main.rs:2457:5:2457:19 | S | | main.rs:2485:16:2485:19 | self | T | main.rs:2477:14:2477:14 | T | | main.rs:2485:16:2485:21 | self.0 | | main.rs:2477:14:2477:14 | T | -| main.rs:2485:31:2485:35 | other | | file://:0:0:0:0 | & | +| main.rs:2485:31:2485:35 | other | | {EXTERNAL LOCATION} | & | | main.rs:2485:31:2485:35 | other | &T | main.rs:2477:14:2477:14 | T | | main.rs:2491:20:2491:24 | value | | main.rs:2489:18:2489:18 | T | | main.rs:2496:20:2496:24 | value | | {EXTERNAL LOCATION} | i64 | @@ -5264,11 +5274,11 @@ inferType | main.rs:2514:31:2514:31 | x | | main.rs:2512:5:2515:5 | Self [trait MyFrom2] | | main.rs:2519:21:2519:25 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2519:33:2519:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2519:48:2521:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2519:48:2521:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2520:13:2520:17 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2526:21:2526:25 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2526:34:2526:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2526:49:2532:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2526:49:2532:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2527:13:2531:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | | main.rs:2527:16:2527:20 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2527:22:2529:13 | { ... } | | {EXTERNAL LOCATION} | i32 | @@ -5294,7 +5304,7 @@ inferType | main.rs:2562:15:2562:15 | x | | {EXTERNAL LOCATION} | bool | | main.rs:2562:32:2564:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2563:13:2563:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2567:16:2592:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2567:16:2592:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2568:13:2568:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i32 | | main.rs:2568:22:2568:23 | 73 | | {EXTERNAL LOCATION} | i64 | @@ -5303,7 +5313,7 @@ inferType | main.rs:2569:18:2569:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2570:9:2570:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2570:9:2570:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2570:18:2570:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:2570:18:2570:22 | &5i64 | | {EXTERNAL LOCATION} | & | | main.rs:2570:18:2570:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | | main.rs:2570:19:2570:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2571:9:2571:9 | x | | {EXTERNAL LOCATION} | i64 | @@ -5324,7 +5334,7 @@ inferType | main.rs:2575:9:2575:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | | main.rs:2575:9:2575:29 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | | main.rs:2575:11:2575:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2575:24:2575:28 | &3i64 | | file://:0:0:0:0 | & | +| main.rs:2575:24:2575:28 | &3i64 | | {EXTERNAL LOCATION} | & | | main.rs:2575:24:2575:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | | main.rs:2575:25:2575:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2577:13:2577:13 | x | | {EXTERNAL LOCATION} | i64 | @@ -5336,13 +5346,13 @@ inferType | main.rs:2579:13:2579:13 | z | | {EXTERNAL LOCATION} | i64 | | main.rs:2579:22:2579:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2579:38:2579:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2580:9:2580:34 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2580:9:2580:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2580:23:2580:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2580:30:2580:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2581:9:2581:33 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2581:9:2581:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2581:23:2581:26 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2581:29:2581:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2582:9:2582:38 | ...::my_from2(...) | | file://:0:0:0:0 | () | +| main.rs:2582:9:2582:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | | main.rs:2582:27:2582:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2582:34:2582:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2584:9:2584:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | @@ -5363,46 +5373,46 @@ inferType | main.rs:2591:25:2591:28 | true | | {EXTERNAL LOCATION} | bool | | main.rs:2599:26:2601:9 | { ... } | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2600:13:2600:25 | MyCallable {...} | | main.rs:2596:5:2596:24 | MyCallable | -| main.rs:2603:17:2603:21 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2603:17:2603:21 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2603:17:2603:21 | SelfParam | &T | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2603:31:2605:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2608:16:2715:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2611:9:2611:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2608:16:2715:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2611:9:2611:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:18:2611:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2611:18:2611:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2611:18:2611:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2611:19:2611:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:22:2611:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:25:2611:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2611:28:2611:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2612:9:2612:44 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2612:18:2612:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2611:28:2611:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2612:9:2612:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2612:18:2612:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2612:18:2612:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2612:18:2612:41 | ... .map(...) | | file://:0:0:0:0 | [] | +| main.rs:2612:18:2612:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | | main.rs:2612:19:2612:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:22:2612:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:25:2612:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:32:2612:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| main.rs:2612:32:2612:40 | \|...\| ... | dyn(Args) | file://:0:0:0:0 | (T_1) | +| main.rs:2612:32:2612:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | | main.rs:2612:40:2612:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2612:43:2612:44 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2613:9:2613:41 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2612:43:2612:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2613:9:2613:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:18:2613:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2613:18:2613:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2613:18:2613:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2613:18:2613:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | | main.rs:2613:18:2613:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | | main.rs:2613:19:2613:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2613:22:2613:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2613:25:2613:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:40:2613:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2615:13:2615:17 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2613:40:2613:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2615:13:2615:17 | vals1 | | {EXTERNAL LOCATION} | [;] | | main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2615:21:2615:31 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2615:21:2615:31 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | | main.rs:2615:22:2615:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | @@ -5410,28 +5420,28 @@ inferType | main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | u8 | | main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2615:30:2615:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2616:9:2616:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2616:9:2616:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2616:18:2616:22 | vals1 | | file://:0:0:0:0 | [] | +| main.rs:2616:18:2616:22 | vals1 | | {EXTERNAL LOCATION} | [;] | | main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | -| main.rs:2616:24:2616:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2618:13:2618:17 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2616:24:2616:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2618:13:2618:17 | vals2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2618:13:2618:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2618:21:2618:29 | [1u16; 3] | | file://:0:0:0:0 | [] | +| main.rs:2618:21:2618:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | | main.rs:2618:21:2618:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2618:22:2618:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2618:28:2618:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2619:9:2619:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2619:9:2619:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2619:18:2619:22 | vals2 | | file://:0:0:0:0 | [] | +| main.rs:2619:18:2619:22 | vals2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2619:18:2619:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | -| main.rs:2619:24:2619:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2621:13:2621:17 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2619:24:2619:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2621:13:2621:17 | vals3 | | {EXTERNAL LOCATION} | [;] | | main.rs:2621:13:2621:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | | main.rs:2621:26:2621:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:31:2621:39 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2621:31:2621:39 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | | main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -5440,141 +5450,141 @@ inferType | main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | u32 | | main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2621:38:2621:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2622:9:2622:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2622:9:2622:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2622:18:2622:22 | vals3 | | file://:0:0:0:0 | [] | +| main.rs:2622:18:2622:22 | vals3 | | {EXTERNAL LOCATION} | [;] | | main.rs:2622:18:2622:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | -| main.rs:2622:24:2622:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2624:13:2624:17 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2622:24:2622:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2624:13:2624:17 | vals4 | | {EXTERNAL LOCATION} | [;] | | main.rs:2624:13:2624:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | | main.rs:2624:26:2624:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:31:2624:36 | [1; 3] | | file://:0:0:0:0 | [] | +| main.rs:2624:31:2624:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | | main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | | main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | u64 | | main.rs:2624:35:2624:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2625:9:2625:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2625:9:2625:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2625:18:2625:22 | vals4 | | file://:0:0:0:0 | [] | +| main.rs:2625:18:2625:22 | vals4 | | {EXTERNAL LOCATION} | [;] | | main.rs:2625:18:2625:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | -| main.rs:2625:24:2625:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2627:17:2627:24 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2627:17:2627:24 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2625:24:2625:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2627:17:2627:24 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2627:17:2627:24 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | | main.rs:2627:17:2627:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2627:28:2627:48 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2627:28:2627:48 | [...] | [T;...] | file://:0:0:0:0 | & | +| main.rs:2627:28:2627:48 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2627:28:2627:48 | [...] | [T;...] | {EXTERNAL LOCATION} | & | | main.rs:2627:28:2627:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2627:29:2627:33 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2627:29:2627:33 | "foo" | | {EXTERNAL LOCATION} | & | | main.rs:2627:29:2627:33 | "foo" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2627:36:2627:40 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2627:36:2627:40 | "bar" | | {EXTERNAL LOCATION} | & | | main.rs:2627:36:2627:40 | "bar" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2627:43:2627:47 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2627:43:2627:47 | "baz" | | {EXTERNAL LOCATION} | & | | main.rs:2627:43:2627:47 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2628:9:2628:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2628:9:2628:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2628:13:2628:13 | s | | file://:0:0:0:0 | & | -| main.rs:2628:13:2628:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2628:13:2628:13 | s | &T | {EXTERNAL LOCATION} | & | | main.rs:2628:13:2628:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2628:18:2628:26 | &strings1 | | file://:0:0:0:0 | & | -| main.rs:2628:18:2628:26 | &strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2628:18:2628:26 | &strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2628:18:2628:26 | &strings1 | &T | {EXTERNAL LOCATION} | [;] | +| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...] | {EXTERNAL LOCATION} | & | | main.rs:2628:18:2628:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2628:19:2628:26 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2628:19:2628:26 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2628:19:2628:26 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2628:19:2628:26 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | | main.rs:2628:19:2628:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2628:28:2628:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2629:9:2629:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2628:28:2628:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2629:9:2629:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2629:13:2629:13 | s | | file://:0:0:0:0 | & | -| main.rs:2629:13:2629:13 | s | &T | file://:0:0:0:0 | & | +| main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2629:13:2629:13 | s | &T | {EXTERNAL LOCATION} | & | | main.rs:2629:13:2629:13 | s | &T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2629:18:2629:30 | &mut strings1 | | file://:0:0:0:0 | & | -| main.rs:2629:18:2629:30 | &mut strings1 | &T | file://:0:0:0:0 | [] | -| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...] | file://:0:0:0:0 | & | +| main.rs:2629:18:2629:30 | &mut strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2629:18:2629:30 | &mut strings1 | &T | {EXTERNAL LOCATION} | [;] | +| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...] | {EXTERNAL LOCATION} | & | | main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2629:23:2629:30 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2629:23:2629:30 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2629:23:2629:30 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2629:23:2629:30 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | | main.rs:2629:23:2629:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2629:32:2629:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2630:9:2630:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2630:13:2630:13 | s | | file://:0:0:0:0 | & | +| main.rs:2629:32:2629:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2630:9:2630:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2630:13:2630:13 | s | | {EXTERNAL LOCATION} | & | | main.rs:2630:13:2630:13 | s | &T | {EXTERNAL LOCATION} | str | -| main.rs:2630:18:2630:25 | strings1 | | file://:0:0:0:0 | [] | -| main.rs:2630:18:2630:25 | strings1 | [T;...] | file://:0:0:0:0 | & | +| main.rs:2630:18:2630:25 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2630:18:2630:25 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | | main.rs:2630:18:2630:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | -| main.rs:2630:27:2630:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2632:13:2632:20 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2630:27:2630:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2632:13:2632:20 | strings2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2632:13:2632:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2633:9:2637:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2633:9:2637:9 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2633:9:2637:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | | main.rs:2634:13:2634:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2634:26:2634:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2634:26:2634:30 | "foo" | | {EXTERNAL LOCATION} | & | | main.rs:2634:26:2634:30 | "foo" | &T | {EXTERNAL LOCATION} | str | | main.rs:2635:13:2635:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2635:26:2635:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2635:26:2635:30 | "bar" | | {EXTERNAL LOCATION} | & | | main.rs:2635:26:2635:30 | "bar" | &T | {EXTERNAL LOCATION} | str | | main.rs:2636:13:2636:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2636:26:2636:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2636:26:2636:30 | "baz" | | {EXTERNAL LOCATION} | & | | main.rs:2636:26:2636:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2638:9:2638:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2638:9:2638:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2638:18:2638:25 | strings2 | | file://:0:0:0:0 | [] | +| main.rs:2638:18:2638:25 | strings2 | | {EXTERNAL LOCATION} | [;] | | main.rs:2638:18:2638:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2638:27:2638:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2640:13:2640:20 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2640:13:2640:20 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2638:27:2638:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2640:13:2640:20 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2640:13:2640:20 | strings3 | &T | {EXTERNAL LOCATION} | [;] | | main.rs:2640:13:2640:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2641:9:2645:9 | &... | | file://:0:0:0:0 | & | -| main.rs:2641:9:2645:9 | &... | &T | file://:0:0:0:0 | [] | +| main.rs:2641:9:2645:9 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2641:9:2645:9 | &... | &T | {EXTERNAL LOCATION} | [;] | | main.rs:2641:9:2645:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2641:10:2645:9 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2641:10:2645:9 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2641:10:2645:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | | main.rs:2642:13:2642:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2642:26:2642:30 | "foo" | | file://:0:0:0:0 | & | +| main.rs:2642:26:2642:30 | "foo" | | {EXTERNAL LOCATION} | & | | main.rs:2642:26:2642:30 | "foo" | &T | {EXTERNAL LOCATION} | str | | main.rs:2643:13:2643:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2643:26:2643:30 | "bar" | | file://:0:0:0:0 | & | +| main.rs:2643:26:2643:30 | "bar" | | {EXTERNAL LOCATION} | & | | main.rs:2643:26:2643:30 | "bar" | &T | {EXTERNAL LOCATION} | str | | main.rs:2644:13:2644:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2644:26:2644:30 | "baz" | | file://:0:0:0:0 | & | +| main.rs:2644:26:2644:30 | "baz" | | {EXTERNAL LOCATION} | & | | main.rs:2644:26:2644:30 | "baz" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2646:9:2646:28 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2646:9:2646:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | Item | -| main.rs:2646:13:2646:13 | s | | file://:0:0:0:0 | & | +| main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | & | | main.rs:2646:13:2646:13 | s | &T | {EXTERNAL LOCATION} | String | -| main.rs:2646:18:2646:25 | strings3 | | file://:0:0:0:0 | & | -| main.rs:2646:18:2646:25 | strings3 | &T | file://:0:0:0:0 | [] | +| main.rs:2646:18:2646:25 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2646:18:2646:25 | strings3 | &T | {EXTERNAL LOCATION} | [;] | | main.rs:2646:18:2646:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | -| main.rs:2646:27:2646:28 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2648:13:2648:21 | callables | | file://:0:0:0:0 | [] | +| main.rs:2646:27:2646:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2648:13:2648:21 | callables | | {EXTERNAL LOCATION} | [;] | | main.rs:2648:13:2648:21 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | -| main.rs:2648:25:2648:81 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2648:25:2648:81 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2648:25:2648:81 | [...] | [T;...] | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:26:2648:42 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:45:2648:61 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:64:2648:80 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | -| main.rs:2649:9:2653:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2649:9:2653:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2649:13:2649:13 | c | | main.rs:2596:5:2596:24 | MyCallable | -| main.rs:2650:12:2650:20 | callables | | file://:0:0:0:0 | [] | +| main.rs:2650:12:2650:20 | callables | | {EXTERNAL LOCATION} | [;] | | main.rs:2650:12:2650:20 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | -| main.rs:2651:9:2653:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2651:9:2653:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2652:17:2652:22 | result | | {EXTERNAL LOCATION} | i64 | | main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2652:26:2652:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2657:9:2657:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2657:9:2657:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2657:18:2657:18 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2657:18:2657:22 | 0..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2657:18:2657:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2657:21:2657:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2657:24:2657:25 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2658:9:2658:29 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2657:24:2657:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2658:9:2658:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2658:13:2658:13 | u | | {EXTERNAL LOCATION} | Range | | main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2658:18:2658:26 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2658:18:2658:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2658:18:2658:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | | main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | @@ -5584,52 +5594,55 @@ inferType | main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | | main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2658:24:2658:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2658:28:2658:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2658:28:2658:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2659:13:2659:17 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2659:13:2659:17 | range | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2659:21:2659:21 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2659:21:2659:25 | 0..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2659:21:2659:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2659:24:2659:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:9:2660:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2660:9:2660:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2660:18:2660:22 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2660:18:2660:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2660:24:2660:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2660:24:2660:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2661:13:2661:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | | main.rs:2661:26:2661:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2662:9:2662:51 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2662:9:2662:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2662:13:2662:13 | i | | {EXTERNAL LOCATION} | Item | -| main.rs:2662:18:2662:48 | &... | | file://:0:0:0:0 | & | -| main.rs:2662:19:2662:36 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2662:18:2662:48 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2662:19:2662:36 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2662:19:2662:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | | main.rs:2662:20:2662:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2662:26:2662:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2662:32:2662:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2662:38:2662:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2662:50:2662:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2662:50:2662:51 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2664:13:2664:18 | range1 | | {EXTERNAL LOCATION} | Range | | main.rs:2664:13:2664:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | | main.rs:2665:9:2668:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | | main.rs:2665:9:2668:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | | main.rs:2666:20:2666:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2667:18:2667:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2669:9:2669:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2669:9:2669:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | Item | | main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2669:18:2669:23 | range1 | | {EXTERNAL LOCATION} | Range | | main.rs:2669:18:2669:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2669:25:2669:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2669:25:2669:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2673:13:2673:17 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2673:21:2673:33 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2673:26:2673:26 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2673:29:2673:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2673:32:2673:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2674:9:2674:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2674:24:2674:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2674:9:2674:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2674:18:2674:22 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2674:24:2674:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2676:13:2676:18 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2676:13:2676:18 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2676:13:2676:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2676:32:2676:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2676:32:2676:43 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2676:32:2676:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | @@ -5638,20 +5651,20 @@ inferType | main.rs:2676:33:2676:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2676:39:2676:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2676:42:2676:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:9:2677:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2677:9:2677:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2677:13:2677:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2677:18:2677:23 | vals4a | | {EXTERNAL LOCATION} | Vec | | main.rs:2677:18:2677:23 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2677:18:2677:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2677:25:2677:26 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2679:22:2679:33 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2677:25:2677:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2679:22:2679:33 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | | main.rs:2679:23:2679:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2679:29:2679:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2679:32:2679:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2680:9:2680:26 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2680:25:2680:26 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2680:9:2680:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2680:25:2680:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2682:13:2682:17 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2682:13:2682:17 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2682:13:2682:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | @@ -5660,42 +5673,42 @@ inferType | main.rs:2682:21:2682:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2682:31:2682:42 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2682:31:2682:42 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | | main.rs:2682:32:2682:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2682:38:2682:38 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2682:41:2682:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:9:2683:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2683:9:2683:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2683:13:2683:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2683:18:2683:22 | vals5 | | {EXTERNAL LOCATION} | Vec | | main.rs:2683:18:2683:22 | vals5 | A | {EXTERNAL LOCATION} | Global | | main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2683:18:2683:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2683:24:2683:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2683:24:2683:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2685:13:2685:17 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2685:13:2685:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2685:13:2685:17 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2685:13:2685:17 | vals6 | T | {EXTERNAL LOCATION} | & | | main.rs:2685:13:2685:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2685:32:2685:43 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2685:32:2685:43 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | | main.rs:2685:32:2685:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | | main.rs:2685:32:2685:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2685:32:2685:60 | ... .collect() | T | file://:0:0:0:0 | & | +| main.rs:2685:32:2685:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | | main.rs:2685:32:2685:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | | main.rs:2685:33:2685:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2685:39:2685:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2685:42:2685:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2686:9:2686:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2686:13:2686:13 | u | | file://:0:0:0:0 | & | +| main.rs:2686:9:2686:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2686:13:2686:13 | u | | {EXTERNAL LOCATION} | & | | main.rs:2686:13:2686:13 | u | &T | {EXTERNAL LOCATION} | u64 | | main.rs:2686:18:2686:22 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2686:18:2686:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2686:18:2686:22 | vals6 | T | file://:0:0:0:0 | & | +| main.rs:2686:18:2686:22 | vals6 | T | {EXTERNAL LOCATION} | & | | main.rs:2686:18:2686:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | -| main.rs:2686:24:2686:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2686:24:2686:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2688:17:2688:21 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2688:17:2688:21 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2688:17:2688:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | @@ -5705,187 +5718,194 @@ inferType | main.rs:2689:9:2689:13 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2689:9:2689:13 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2689:9:2689:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2689:9:2689:23 | vals7.push(...) | | file://:0:0:0:0 | () | +| main.rs:2689:9:2689:23 | vals7.push(...) | | {EXTERNAL LOCATION} | () | | main.rs:2689:20:2689:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2690:9:2690:25 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2690:9:2690:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2690:13:2690:13 | u | | {EXTERNAL LOCATION} | u8 | | main.rs:2690:18:2690:22 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2690:18:2690:22 | vals7 | A | {EXTERNAL LOCATION} | Global | | main.rs:2690:18:2690:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2690:24:2690:25 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2690:24:2690:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2692:13:2692:19 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:23:2692:50 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:28:2692:37 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:28:2692:37 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2692:33:2692:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2692:36:2692:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2692:40:2692:49 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2692:40:2692:49 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | main.rs:2692:45:2692:45 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2692:48:2692:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2694:13:2694:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2694:17:2697:9 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2694:36:2697:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2695:13:2696:13 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2695:29:2696:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2694:13:2694:13 | _ | | {EXTERNAL LOCATION} | () | +| main.rs:2694:17:2697:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2694:28:2694:34 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2694:36:2697:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2695:13:2696:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2695:29:2696:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2699:17:2699:20 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2699:17:2699:20 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2699:17:2699:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2699:17:2699:20 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2699:17:2699:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2699:17:2699:20 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2699:17:2699:20 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2699:17:2699:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2699:24:2699:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | | main.rs:2699:24:2699:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | | main.rs:2699:24:2699:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2699:24:2699:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | | main.rs:2699:24:2699:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2699:24:2699:55 | ...::new(...) | V.T | file://:0:0:0:0 | & | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | | main.rs:2699:24:2699:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2700:9:2700:12 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2700:9:2700:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2700:9:2700:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2700:9:2700:12 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2700:9:2700:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2700:9:2700:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2700:9:2700:12 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2700:9:2700:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2700:9:2700:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2700:9:2700:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | | main.rs:2700:9:2700:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2700:9:2700:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | | main.rs:2700:9:2700:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2700:21:2700:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2700:24:2700:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2700:24:2700:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2700:24:2700:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2700:24:2700:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | | main.rs:2700:24:2700:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2700:33:2700:37 | "one" | | file://:0:0:0:0 | & | +| main.rs:2700:33:2700:37 | "one" | | {EXTERNAL LOCATION} | & | | main.rs:2700:33:2700:37 | "one" | &T | {EXTERNAL LOCATION} | str | | main.rs:2701:9:2701:12 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2701:9:2701:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2701:9:2701:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2701:9:2701:12 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2701:9:2701:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2701:9:2701:12 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2701:9:2701:12 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2701:9:2701:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2701:9:2701:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2701:9:2701:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | | main.rs:2701:9:2701:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2701:9:2701:39 | map1.insert(...) | T.T | file://:0:0:0:0 | & | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | | main.rs:2701:9:2701:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2701:21:2701:21 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2701:24:2701:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2701:24:2701:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2701:24:2701:38 | ...::new(...) | T | file://:0:0:0:0 | & | +| main.rs:2701:24:2701:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | | main.rs:2701:24:2701:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2701:33:2701:37 | "two" | | file://:0:0:0:0 | & | +| main.rs:2701:33:2701:37 | "two" | | {EXTERNAL LOCATION} | & | | main.rs:2701:33:2701:37 | "two" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2702:9:2702:33 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2702:9:2702:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | Item | -| main.rs:2702:13:2702:15 | key | | file://:0:0:0:0 | & | +| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | & | | main.rs:2702:13:2702:15 | key | &T | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2702:20:2702:23 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2702:20:2702:23 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2702:20:2702:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2702:20:2702:23 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2702:20:2702:23 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2702:20:2702:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2702:20:2702:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | | main.rs:2702:20:2702:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | | main.rs:2702:20:2702:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2702:20:2702:30 | map1.keys() | V.T | file://:0:0:0:0 | & | +| main.rs:2702:20:2702:30 | map1.keys() | V.T | {EXTERNAL LOCATION} | & | | main.rs:2702:20:2702:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2702:32:2702:33 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2703:9:2703:37 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2702:32:2702:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2703:9:2703:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | Item | -| main.rs:2703:13:2703:17 | value | | file://:0:0:0:0 | & | +| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | & | | main.rs:2703:13:2703:17 | value | &T | {EXTERNAL LOCATION} | Box | | main.rs:2703:13:2703:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2703:13:2703:17 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2703:13:2703:17 | value | &T.T | {EXTERNAL LOCATION} | & | | main.rs:2703:13:2703:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2703:22:2703:25 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2703:22:2703:25 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2703:22:2703:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2703:22:2703:25 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2703:22:2703:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2703:22:2703:25 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2703:22:2703:25 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2703:22:2703:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2703:22:2703:34 | map1.values() | | {EXTERNAL LOCATION} | Values | | main.rs:2703:22:2703:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2703:22:2703:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | | main.rs:2703:22:2703:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2703:22:2703:34 | map1.values() | V.T | file://:0:0:0:0 | & | +| main.rs:2703:22:2703:34 | map1.values() | V.T | {EXTERNAL LOCATION} | & | | main.rs:2703:22:2703:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2703:36:2703:37 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2704:9:2704:42 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2704:13:2704:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2704:13:2704:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2703:36:2703:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2704:9:2704:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2704:13:2704:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2704:13:2704:24 | TuplePat | 0(2) | {EXTERNAL LOCATION} | & | | main.rs:2704:13:2704:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:13:2704:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2704:13:2704:24 | TuplePat | 1(2) | {EXTERNAL LOCATION} | & | | main.rs:2704:13:2704:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | | main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T | {EXTERNAL LOCATION} | & | | main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2704:14:2704:16 | key | | file://:0:0:0:0 | & | +| main.rs:2704:14:2704:16 | key | | {EXTERNAL LOCATION} | & | | main.rs:2704:14:2704:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:19:2704:23 | value | | file://:0:0:0:0 | & | +| main.rs:2704:19:2704:23 | value | | {EXTERNAL LOCATION} | & | | main.rs:2704:19:2704:23 | value | &T | {EXTERNAL LOCATION} | Box | | main.rs:2704:19:2704:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:19:2704:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2704:19:2704:23 | value | &T.T | {EXTERNAL LOCATION} | & | | main.rs:2704:19:2704:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2704:29:2704:32 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2704:29:2704:32 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2704:29:2704:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2704:29:2704:32 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2704:29:2704:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:29:2704:32 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2704:29:2704:32 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2704:29:2704:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2704:29:2704:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | | main.rs:2704:29:2704:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2704:29:2704:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | | main.rs:2704:29:2704:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:29:2704:39 | map1.iter() | V.T | file://:0:0:0:0 | & | +| main.rs:2704:29:2704:39 | map1.iter() | V.T | {EXTERNAL LOCATION} | & | | main.rs:2704:29:2704:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2704:41:2704:42 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2705:9:2705:36 | for ... in ... { ... } | | file://:0:0:0:0 | () | -| main.rs:2705:13:2705:24 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2705:13:2705:24 | TuplePat | 0(2) | file://:0:0:0:0 | & | +| main.rs:2704:41:2704:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2705:9:2705:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2705:13:2705:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2705:13:2705:24 | TuplePat | 0(2) | {EXTERNAL LOCATION} | & | | main.rs:2705:13:2705:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2705:13:2705:24 | TuplePat | 1(2) | file://:0:0:0:0 | & | +| main.rs:2705:13:2705:24 | TuplePat | 1(2) | {EXTERNAL LOCATION} | & | | main.rs:2705:13:2705:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | | main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T | file://:0:0:0:0 | & | +| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T | {EXTERNAL LOCATION} | & | | main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2705:14:2705:16 | key | | file://:0:0:0:0 | & | +| main.rs:2705:14:2705:16 | key | | {EXTERNAL LOCATION} | & | | main.rs:2705:14:2705:16 | key | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2705:19:2705:23 | value | | file://:0:0:0:0 | & | +| main.rs:2705:19:2705:23 | value | | {EXTERNAL LOCATION} | & | | main.rs:2705:19:2705:23 | value | &T | {EXTERNAL LOCATION} | Box | | main.rs:2705:19:2705:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:19:2705:23 | value | &T.T | file://:0:0:0:0 | & | +| main.rs:2705:19:2705:23 | value | &T.T | {EXTERNAL LOCATION} | & | | main.rs:2705:19:2705:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2705:29:2705:33 | &map1 | | file://:0:0:0:0 | & | +| main.rs:2705:29:2705:33 | &map1 | | {EXTERNAL LOCATION} | & | | main.rs:2705:29:2705:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | | main.rs:2705:29:2705:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | | main.rs:2705:29:2705:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | | main.rs:2705:29:2705:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | | main.rs:2705:29:2705:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:29:2705:33 | &map1 | &T.V.T | file://:0:0:0:0 | & | +| main.rs:2705:29:2705:33 | &map1 | &T.V.T | {EXTERNAL LOCATION} | & | | main.rs:2705:29:2705:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2705:30:2705:33 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2705:30:2705:33 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2705:30:2705:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2705:30:2705:33 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2705:30:2705:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:30:2705:33 | map1 | V.T | file://:0:0:0:0 | & | +| main.rs:2705:30:2705:33 | map1 | V.T | {EXTERNAL LOCATION} | & | | main.rs:2705:30:2705:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | -| main.rs:2705:35:2705:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2705:35:2705:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2709:17:2709:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2711:13:2711:13 | _ | | file://:0:0:0:0 | () | -| main.rs:2711:17:2714:9 | while ... { ... } | | file://:0:0:0:0 | () | +| main.rs:2711:13:2711:13 | _ | | {EXTERNAL LOCATION} | () | +| main.rs:2711:17:2714:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2711:23:2711:23 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2711:23:2711:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2711:27:2711:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2712:9:2714:9 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2712:9:2714:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2713:13:2713:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2713:13:2713:18 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:2713:13:2713:18 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:2713:18:2713:18 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2725:40:2727:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:2725:40:2727:9 | { ... } | T | main.rs:2719:5:2719:20 | S1 | @@ -5907,7 +5927,7 @@ inferType | main.rs:2746:15:2746:15 | x | | main.rs:2746:12:2746:12 | T | | main.rs:2746:26:2748:5 | { ... } | | main.rs:2746:12:2746:12 | T | | main.rs:2747:9:2747:9 | x | | main.rs:2746:12:2746:12 | T | -| main.rs:2750:16:2772:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2750:16:2772:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2751:13:2751:14 | x1 | | {EXTERNAL LOCATION} | Option | | main.rs:2751:13:2751:14 | x1 | T | main.rs:2719:5:2719:20 | S1 | | main.rs:2751:13:2751:14 | x1 | T.T | main.rs:2721:5:2722:14 | S2 | @@ -5985,152 +6005,152 @@ inferType | main.rs:2771:13:2771:15 | x15 | T | main.rs:2721:5:2722:14 | S2 | | main.rs:2771:19:2771:37 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | | main.rs:2771:19:2771:37 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | -| main.rs:2780:35:2782:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2780:35:2782:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2780:35:2782:9 | { ... } | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2780:35:2782:9 | { ... } | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2781:13:2781:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2781:13:2781:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2781:13:2781:26 | TupleExpr | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:13:2781:26 | TupleExpr | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:14:2781:18 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:21:2781:25 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | | main.rs:2783:16:2783:19 | SelfParam | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2783:22:2783:23 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2786:16:2820:5 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2787:13:2787:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2783:22:2783:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2786:16:2820:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2787:13:2787:13 | a | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2787:13:2787:13 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2787:13:2787:13 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2787:17:2787:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2787:17:2787:30 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2787:17:2787:30 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2788:17:2788:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2788:17:2788:17 | b | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2788:17:2788:17 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2788:17:2788:17 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2788:21:2788:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2788:21:2788:34 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2788:21:2788:34 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2789:13:2789:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2789:13:2789:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2789:13:2789:18 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:13:2789:18 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:14:2789:14 | c | | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:17:2789:17 | d | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2789:22:2789:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2789:22:2789:35 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:22:2789:35 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2790:13:2790:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2790:13:2790:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2790:13:2790:22 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:13:2790:22 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:18:2790:18 | e | | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:21:2790:21 | f | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2790:26:2790:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2790:26:2790:39 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:26:2790:39 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2791:13:2791:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2791:13:2791:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2791:13:2791:26 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:13:2791:26 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:18:2791:18 | g | | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:25:2791:25 | h | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2791:30:2791:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2791:30:2791:43 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:30:2791:43 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2793:9:2793:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2793:9:2793:9 | a | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2793:9:2793:9 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2793:9:2793:9 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2793:9:2793:11 | a.0 | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2793:9:2793:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2794:9:2794:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2793:9:2793:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2794:9:2794:9 | b | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2794:9:2794:9 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2794:9:2794:9 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2794:9:2794:11 | b.1 | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2794:9:2794:17 | ... .foo() | | file://:0:0:0:0 | () | +| main.rs:2794:9:2794:17 | ... .foo() | | {EXTERNAL LOCATION} | () | | main.rs:2795:9:2795:9 | c | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2795:9:2795:15 | c.foo() | | file://:0:0:0:0 | () | +| main.rs:2795:9:2795:15 | c.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2796:9:2796:9 | d | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2796:9:2796:15 | d.foo() | | file://:0:0:0:0 | () | +| main.rs:2796:9:2796:15 | d.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2797:9:2797:9 | e | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2797:9:2797:15 | e.foo() | | file://:0:0:0:0 | () | +| main.rs:2797:9:2797:15 | e.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2798:9:2798:9 | f | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2798:9:2798:15 | f.foo() | | file://:0:0:0:0 | () | +| main.rs:2798:9:2798:15 | f.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2799:9:2799:9 | g | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2799:9:2799:15 | g.foo() | | file://:0:0:0:0 | () | +| main.rs:2799:9:2799:15 | g.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2800:9:2800:9 | h | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2800:9:2800:15 | h.foo() | | file://:0:0:0:0 | () | +| main.rs:2800:9:2800:15 | h.foo() | | {EXTERNAL LOCATION} | () | | main.rs:2805:13:2805:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2805:17:2805:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2806:13:2806:13 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2806:17:2806:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2807:13:2807:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2807:13:2807:16 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2807:13:2807:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | | main.rs:2807:13:2807:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2807:20:2807:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2807:20:2807:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2807:20:2807:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | | main.rs:2807:20:2807:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | | main.rs:2807:21:2807:21 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2807:24:2807:24 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2808:13:2808:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2808:22:2808:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2808:22:2808:25 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2808:22:2808:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | | main.rs:2808:22:2808:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | | main.rs:2808:22:2808:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2809:13:2809:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2809:23:2809:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2809:23:2809:26 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2809:23:2809:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | | main.rs:2809:23:2809:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | | main.rs:2809:23:2809:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2811:13:2811:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2811:13:2811:16 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2811:13:2811:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2811:13:2811:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2811:20:2811:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2811:20:2811:25 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2811:20:2811:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2811:20:2811:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2811:20:2811:32 | ... .into() | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2811:20:2811:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2811:20:2811:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2811:21:2811:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2811:24:2811:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2812:9:2815:9 | match pair { ... } | | file://:0:0:0:0 | () | -| main.rs:2812:15:2812:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2812:9:2815:9 | match pair { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2812:15:2812:18 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2812:15:2812:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2812:15:2812:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:13:2813:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2813:13:2813:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2813:13:2813:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2813:13:2813:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2813:14:2813:14 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2813:17:2813:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:23:2813:42 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2813:30:2813:41 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2813:23:2813:42 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2813:30:2813:41 | "unexpected" | | {EXTERNAL LOCATION} | & | | main.rs:2813:30:2813:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2813:30:2813:41 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2813:30:2813:41 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2814:13:2814:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2813:30:2813:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:30:2813:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2814:13:2814:13 | _ | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2814:13:2814:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2814:13:2814:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:18:2814:35 | MacroExpr | | file://:0:0:0:0 | () | -| main.rs:2814:25:2814:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2814:18:2814:35 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2814:25:2814:34 | "expected" | | {EXTERNAL LOCATION} | & | | main.rs:2814:25:2814:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2814:25:2814:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2814:25:2814:34 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2814:25:2814:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:25:2814:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2816:13:2816:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2816:17:2816:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2816:17:2816:20 | pair | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2816:17:2816:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2816:17:2816:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | | main.rs:2816:17:2816:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2818:13:2818:13 | y | | file://:0:0:0:0 | & | -| main.rs:2818:13:2818:13 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2818:13:2818:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2818:13:2818:13 | y | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:2818:13:2818:13 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2818:13:2818:13 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2818:17:2818:31 | &... | | file://:0:0:0:0 | & | -| main.rs:2818:17:2818:31 | &... | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2818:17:2818:31 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2818:17:2818:31 | &... | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:2818:17:2818:31 | &... | &T.0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2818:17:2818:31 | &... | &T.1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2818:18:2818:31 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | | main.rs:2818:18:2818:31 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2818:18:2818:31 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2819:9:2819:9 | y | | file://:0:0:0:0 | & | -| main.rs:2819:9:2819:9 | y | &T | file://:0:0:0:0 | (T_2) | +| main.rs:2819:9:2819:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2819:9:2819:9 | y | &T | {EXTERNAL LOCATION} | (T_2) | | main.rs:2819:9:2819:9 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2819:9:2819:9 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | | main.rs:2819:9:2819:11 | y.0 | | main.rs:2776:5:2777:16 | S1 | -| main.rs:2819:9:2819:17 | ... .foo() | | file://:0:0:0:0 | () | -| main.rs:2825:27:2847:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2819:9:2819:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2825:27:2847:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2826:13:2826:23 | boxed_value | | {EXTERNAL LOCATION} | Box | | main.rs:2826:13:2826:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | | main.rs:2826:13:2826:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | @@ -6138,7 +6158,7 @@ inferType | main.rs:2826:27:2826:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2826:27:2826:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2826:36:2826:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2829:9:2837:9 | match boxed_value { ... } | | file://:0:0:0:0 | () | +| main.rs:2829:9:2837:9 | match boxed_value { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2829:15:2829:25 | boxed_value | | {EXTERNAL LOCATION} | Box | | main.rs:2829:15:2829:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | | main.rs:2829:15:2829:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | @@ -6146,19 +6166,19 @@ inferType | main.rs:2830:13:2830:19 | box 100 | A | {EXTERNAL LOCATION} | Global | | main.rs:2830:13:2830:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2830:17:2830:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2830:24:2832:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2831:26:2831:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2830:24:2832:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2831:26:2831:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2831:26:2831:36 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2831:26:2831:36 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2831:26:2831:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2831:26:2831:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2833:13:2833:17 | box ... | | {EXTERNAL LOCATION} | Box | | main.rs:2833:13:2833:17 | box ... | A | {EXTERNAL LOCATION} | Global | | main.rs:2833:13:2833:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2833:22:2836:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2833:22:2836:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2835:26:2835:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2835:26:2835:51 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2835:26:2835:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2835:26:2835:51 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2840:13:2840:22 | nested_box | | {EXTERNAL LOCATION} | Box | | main.rs:2840:13:2840:22 | nested_box | A | {EXTERNAL LOCATION} | Global | | main.rs:2840:13:2840:22 | nested_box | T | {EXTERNAL LOCATION} | Box | @@ -6173,7 +6193,7 @@ inferType | main.rs:2840:35:2840:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2840:35:2840:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2840:44:2840:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2841:9:2846:9 | match nested_box { ... } | | file://:0:0:0:0 | () | +| main.rs:2841:9:2846:9 | match nested_box { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2841:15:2841:24 | nested_box | | {EXTERNAL LOCATION} | Box | | main.rs:2841:15:2841:24 | nested_box | A | {EXTERNAL LOCATION} | Global | | main.rs:2841:15:2841:24 | nested_box | T | {EXTERNAL LOCATION} | Box | @@ -6184,73 +6204,73 @@ inferType | main.rs:2842:13:2842:21 | box ... | T | {EXTERNAL LOCATION} | Box | | main.rs:2842:13:2842:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | | main.rs:2842:13:2842:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2842:26:2845:13 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2842:26:2845:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2844:26:2844:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2844:26:2844:59 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2844:26:2844:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2844:26:2844:59 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2856:36:2858:9 | { ... } | | main.rs:2853:5:2853:22 | Path | | main.rs:2857:13:2857:19 | Path {...} | | main.rs:2853:5:2853:22 | Path | -| main.rs:2860:29:2860:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2860:29:2860:33 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2860:29:2860:33 | SelfParam | &T | main.rs:2853:5:2853:22 | Path | | main.rs:2860:59:2862:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2860:59:2862:9 | { ... } | E | file://:0:0:0:0 | () | +| main.rs:2860:59:2862:9 | { ... } | E | {EXTERNAL LOCATION} | () | | main.rs:2860:59:2862:9 | { ... } | T | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2861:13:2861:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2861:13:2861:30 | Ok(...) | E | file://:0:0:0:0 | () | +| main.rs:2861:13:2861:30 | Ok(...) | E | {EXTERNAL LOCATION} | () | | main.rs:2861:13:2861:30 | Ok(...) | T | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2861:16:2861:29 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2868:39:2870:9 | { ... } | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2869:13:2869:22 | PathBuf {...} | | main.rs:2865:5:2865:25 | PathBuf | -| main.rs:2878:18:2878:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2878:18:2878:22 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2878:18:2878:22 | SelfParam | &T | main.rs:2865:5:2865:25 | PathBuf | -| main.rs:2878:34:2882:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:2878:34:2882:9 | { ... } | | {EXTERNAL LOCATION} | & | | main.rs:2878:34:2882:9 | { ... } | &T | main.rs:2853:5:2853:22 | Path | | main.rs:2880:33:2880:43 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | -| main.rs:2881:13:2881:17 | &path | | file://:0:0:0:0 | & | +| main.rs:2881:13:2881:17 | &path | | {EXTERNAL LOCATION} | & | | main.rs:2881:13:2881:17 | &path | &T | main.rs:2853:5:2853:22 | Path | | main.rs:2881:14:2881:17 | path | | main.rs:2853:5:2853:22 | Path | -| main.rs:2885:16:2893:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2885:16:2893:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2886:13:2886:17 | path1 | | main.rs:2853:5:2853:22 | Path | | main.rs:2886:21:2886:31 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | | main.rs:2887:13:2887:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2887:13:2887:17 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2887:13:2887:17 | path2 | E | {EXTERNAL LOCATION} | () | | main.rs:2887:13:2887:17 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2887:21:2887:25 | path1 | | main.rs:2853:5:2853:22 | Path | | main.rs:2887:21:2887:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2887:21:2887:40 | path1.canonicalize() | E | file://:0:0:0:0 | () | +| main.rs:2887:21:2887:40 | path1.canonicalize() | E | {EXTERNAL LOCATION} | () | | main.rs:2887:21:2887:40 | path1.canonicalize() | T | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2888:13:2888:17 | path3 | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2888:21:2888:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2888:21:2888:25 | path2 | E | file://:0:0:0:0 | () | +| main.rs:2888:21:2888:25 | path2 | E | {EXTERNAL LOCATION} | () | | main.rs:2888:21:2888:25 | path2 | T | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2888:21:2888:34 | path2.unwrap() | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2890:13:2890:20 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2890:24:2890:37 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2891:24:2891:31 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | -| main.rs:2898:14:2898:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2898:14:2898:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2898:14:2898:18 | SelfParam | &T | main.rs:2897:5:2899:5 | Self [trait MyTrait] | -| main.rs:2905:14:2905:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2905:14:2905:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2905:14:2905:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | | main.rs:2905:14:2905:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2905:28:2907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2906:13:2906:16 | self | | file://:0:0:0:0 | & | +| main.rs:2906:13:2906:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2906:13:2906:16 | self | &T | main.rs:2901:5:2902:19 | S | | main.rs:2906:13:2906:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2906:13:2906:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2911:14:2911:18 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2911:14:2911:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2911:14:2911:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | | main.rs:2911:14:2911:18 | SelfParam | &T.T | main.rs:2901:5:2902:19 | S | | main.rs:2911:14:2911:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2911:28:2913:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2912:13:2912:16 | self | | file://:0:0:0:0 | & | +| main.rs:2912:13:2912:16 | self | | {EXTERNAL LOCATION} | & | | main.rs:2912:13:2912:16 | self | &T | main.rs:2901:5:2902:19 | S | | main.rs:2912:13:2912:16 | self | &T.T | main.rs:2901:5:2902:19 | S | | main.rs:2912:13:2912:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:18 | self.0 | | main.rs:2901:5:2902:19 | S | | main.rs:2912:13:2912:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2917:15:2917:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2917:15:2917:19 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2917:15:2917:19 | SelfParam | &T | main.rs:2901:5:2902:19 | S | | main.rs:2917:15:2917:19 | SelfParam | &T.T | main.rs:2916:10:2916:16 | T | | main.rs:2917:33:2919:9 | { ... } | | main.rs:2901:5:2902:19 | S | @@ -6261,7 +6281,7 @@ inferType | main.rs:2918:13:2918:24 | S(...) | T.T | main.rs:2916:10:2916:16 | T | | main.rs:2918:15:2918:23 | S(...) | | main.rs:2901:5:2902:19 | S | | main.rs:2918:15:2918:23 | S(...) | T | main.rs:2916:10:2916:16 | T | -| main.rs:2918:17:2918:20 | self | | file://:0:0:0:0 | & | +| main.rs:2918:17:2918:20 | self | | {EXTERNAL LOCATION} | & | | main.rs:2918:17:2918:20 | self | &T | main.rs:2901:5:2902:19 | S | | main.rs:2918:17:2918:20 | self | &T.T | main.rs:2916:10:2916:16 | T | | main.rs:2918:17:2918:22 | self.0 | | main.rs:2916:10:2916:16 | T | @@ -6341,7 +6361,7 @@ inferType | main.rs:2937:13:2937:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:2937:22:2937:22 | x | | main.rs:2901:5:2902:19 | S | | main.rs:2937:22:2937:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2943:22:2947:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2943:22:2947:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2944:18:2944:18 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2944:33:2946:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2945:13:2945:13 | x | | {EXTERNAL LOCATION} | i32 | @@ -6349,37 +6369,37 @@ inferType | main.rs:2945:17:2945:17 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2952:11:2952:14 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2952:30:2960:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2954:13:2954:13 | a | | file://:0:0:0:0 | () | -| main.rs:2954:17:2958:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2955:13:2957:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2954:13:2954:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2954:17:2958:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2955:13:2957:13 | if cond {...} | | {EXTERNAL LOCATION} | () | | main.rs:2955:16:2955:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2955:21:2957:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2955:21:2957:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2956:24:2956:25 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2959:9:2959:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2963:20:2970:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2966:26:2966:27 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2968:18:2968:26 | "b: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2968:18:2968:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2968:18:2968:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2968:18:2968:29 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2968:18:2968:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2968:18:2968:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2969:9:2969:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2972:20:2974:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2973:16:2973:16 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2977:11:2977:14 | cond | | {EXTERNAL LOCATION} | bool | | main.rs:2977:30:2985:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2978:13:2978:13 | a | | file://:0:0:0:0 | () | -| main.rs:2978:17:2982:9 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2979:13:2981:13 | if cond {...} | | file://:0:0:0:0 | () | +| main.rs:2978:13:2978:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2978:17:2982:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2979:13:2981:13 | if cond {...} | | {EXTERNAL LOCATION} | () | | main.rs:2979:16:2979:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2979:21:2981:13 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2979:21:2981:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2980:24:2980:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2983:18:2983:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:2983:18:2983:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2983:18:2983:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| main.rs:2983:18:2983:29 | { ... } | | file://:0:0:0:0 | () | -| main.rs:2983:29:2983:29 | a | | file://:0:0:0:0 | () | +| main.rs:2983:18:2983:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2983:18:2983:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2983:29:2983:29 | a | | {EXTERNAL LOCATION} | () | | main.rs:2984:9:2984:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2989:16:3036:5 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2989:16:3036:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2990:13:2990:13 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2990:13:2990:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2990:17:2990:20 | None | | {EXTERNAL LOCATION} | Option | @@ -6399,12 +6419,12 @@ inferType | main.rs:2995:26:2995:28 | opt | | {EXTERNAL LOCATION} | Option | | main.rs:2995:26:2995:28 | opt | T | main.rs:2995:23:2995:23 | T | | main.rs:2995:42:2995:42 | x | | main.rs:2995:23:2995:23 | T | -| main.rs:2995:48:2995:49 | { ... } | | file://:0:0:0:0 | () | +| main.rs:2995:48:2995:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2997:13:2997:13 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2997:13:2997:13 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2997:17:2997:20 | None | | {EXTERNAL LOCATION} | Option | | main.rs:2997:17:2997:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2998:9:2998:24 | pin_option(...) | | file://:0:0:0:0 | () | +| main.rs:2998:9:2998:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | | main.rs:2998:20:2998:20 | x | | {EXTERNAL LOCATION} | Option | | main.rs:2998:20:2998:20 | x | T | {EXTERNAL LOCATION} | i32 | | main.rs:2998:23:2998:23 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -6439,7 +6459,7 @@ inferType | main.rs:3013:29:3013:29 | e | T1 | main.rs:3013:26:3013:26 | T | | main.rs:3013:29:3013:29 | e | T2 | {EXTERNAL LOCATION} | String | | main.rs:3013:53:3013:53 | x | | main.rs:3013:26:3013:26 | T | -| main.rs:3013:59:3013:60 | { ... } | | file://:0:0:0:0 | () | +| main.rs:3013:59:3013:60 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:3016:13:3016:13 | x | | main.rs:3000:9:3003:9 | MyEither | | main.rs:3016:13:3016:13 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:3016:13:3016:13 | x | T2 | {EXTERNAL LOCATION} | String | @@ -6447,7 +6467,7 @@ inferType | main.rs:3016:17:3018:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:3016:17:3018:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | | main.rs:3017:20:3017:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:3019:9:3019:27 | pin_my_either(...) | | file://:0:0:0:0 | () | +| main.rs:3019:9:3019:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | | main.rs:3019:23:3019:23 | x | | main.rs:3000:9:3003:9 | MyEither | | main.rs:3019:23:3019:23 | x | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:3019:23:3019:23 | x | T2 | {EXTERNAL LOCATION} | String | @@ -6483,7 +6503,7 @@ inferType | main.rs:3026:29:3026:31 | res | E | main.rs:3026:26:3026:26 | E | | main.rs:3026:29:3026:31 | res | T | main.rs:3026:23:3026:23 | T | | main.rs:3026:48:3026:48 | x | | main.rs:3026:26:3026:26 | E | -| main.rs:3026:54:3026:55 | { ... } | | file://:0:0:0:0 | () | +| main.rs:3026:54:3026:55 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:3028:13:3028:13 | x | | {EXTERNAL LOCATION} | Result | | main.rs:3028:13:3028:13 | x | E | {EXTERNAL LOCATION} | bool | | main.rs:3028:13:3028:13 | x | T | {EXTERNAL LOCATION} | i32 | @@ -6491,7 +6511,7 @@ inferType | main.rs:3028:17:3028:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | | main.rs:3028:17:3028:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:3028:28:3028:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:3029:9:3029:28 | pin_result(...) | | file://:0:0:0:0 | () | +| main.rs:3029:9:3029:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | | main.rs:3029:20:3029:20 | x | | {EXTERNAL LOCATION} | Result | | main.rs:3029:20:3029:20 | x | E | {EXTERNAL LOCATION} | bool | | main.rs:3029:20:3029:20 | x | T | {EXTERNAL LOCATION} | i32 | @@ -6505,188 +6525,188 @@ inferType | main.rs:3032:9:3032:9 | x | | {EXTERNAL LOCATION} | Vec | | main.rs:3032:9:3032:9 | x | A | {EXTERNAL LOCATION} | Global | | main.rs:3032:9:3032:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:3032:9:3032:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:3032:9:3032:17 | x.push(...) | | {EXTERNAL LOCATION} | () | | main.rs:3032:16:3032:16 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:3034:13:3034:13 | y | | {EXTERNAL LOCATION} | i32 | | main.rs:3034:17:3034:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:3035:9:3035:9 | x | | {EXTERNAL LOCATION} | Vec | | main.rs:3035:9:3035:9 | x | A | {EXTERNAL LOCATION} | Global | | main.rs:3035:9:3035:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:3035:9:3035:17 | x.push(...) | | file://:0:0:0:0 | () | +| main.rs:3035:9:3035:17 | x.push(...) | | {EXTERNAL LOCATION} | () | | main.rs:3035:16:3035:16 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:3044:11:3079:1 | { ... } | | file://:0:0:0:0 | () | -| main.rs:3045:5:3045:21 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3044:11:3079:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:3045:5:3045:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3046:5:3046:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | | main.rs:3047:5:3047:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | | main.rs:3047:20:3047:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | | main.rs:3047:41:3047:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:3048:5:3048:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3049:5:3049:41 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3050:5:3050:45 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:3051:5:3051:30 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3052:5:3052:33 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3053:5:3053:21 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3054:5:3054:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3055:5:3055:32 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3056:5:3056:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3057:5:3057:36 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3058:5:3058:35 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3059:5:3059:29 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3060:5:3060:23 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3061:5:3061:24 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3062:5:3062:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3063:5:3063:18 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3048:5:3048:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3049:5:3049:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3050:5:3050:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3051:5:3051:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3052:5:3052:33 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3053:5:3053:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3054:5:3054:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3055:5:3055:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3056:5:3056:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3057:5:3057:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3058:5:3058:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3059:5:3059:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3060:5:3060:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3061:5:3061:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3062:5:3062:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3063:5:3063:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3064:5:3064:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:3064:5:3064:15 | ...::f(...) | Output | file://:0:0:0:0 | () | -| main.rs:3065:5:3065:19 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3066:5:3066:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3067:5:3067:14 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3068:5:3068:27 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3069:5:3069:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3070:5:3070:43 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3071:5:3071:15 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3072:5:3072:17 | ...::f(...) | | file://:0:0:0:0 | () | -| main.rs:3073:5:3073:23 | ...::test(...) | | file://:0:0:0:0 | () | -| main.rs:3074:5:3074:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:3075:5:3075:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () | -| main.rs:3076:5:3076:20 | ...::test(...) | | file://:0:0:0:0 | () | +| main.rs:3064:5:3064:15 | ...::f(...) | Output | {EXTERNAL LOCATION} | () | +| main.rs:3065:5:3065:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3066:5:3066:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3067:5:3067:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3068:5:3068:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3069:5:3069:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3070:5:3070:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3071:5:3071:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3072:5:3072:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3073:5:3073:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3074:5:3074:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3075:5:3075:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:3076:5:3076:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | | main.rs:3077:5:3077:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | | main.rs:3077:5:3077:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:3077:5:3077:20 | ...::f(...) | T | main.rs:2897:5:2899:5 | dyn MyTrait | | main.rs:3077:5:3077:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | | main.rs:3077:16:3077:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:3078:5:3078:23 | ...::f(...) | | file://:0:0:0:0 | () | +| main.rs:3078:5:3078:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | +| pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:9:14:13 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:14:17:14:24 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:17:14:24 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:14:22:14:23 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:15:5:18:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:15:5:18:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:15:12:15:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:12:15:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:17:15:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:15:25:15:29 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:15:25:15:29 | value | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:15:31:18:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:15:31:18:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:16:13:16:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:16:20:16:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:17:18:17:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:17:18:17:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:17:18:17:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:19:5:25:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:19:5:25:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:19:11:19:15 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:19:11:19:15 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:9:20:18 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:20:9:20:18 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:20:14:20:17 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:20:23:23:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:20:23:23:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:22:22:22:29 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:22:22:22:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:22:22:22:29 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:24:9:24:12 | None | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:24:9:24:12 | None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:24:17:24:18 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:24:17:24:18 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:26:9:26:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:26:16:26:20 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:26:16:26:20 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:26:16:26:29 | value.unwrap() | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:27:9:27:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:27:16:27:19 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:28:14:28:21 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:28:14:28:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:28:14:28:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:9:29:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:20 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:29:16:29:20 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:21 | TryExpr | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:30:14:30:21 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:30:14:30:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:30:14:30:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:32:9:32:14 | value2 | | file://:0:0:0:0 | & | +| pattern_matching.rs:32:9:32:14 | value2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:32:9:32:14 | value2 | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:9:32:14 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:32:18:32:26 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:32:18:32:26 | &... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:32:18:32:26 | &... | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:18:32:26 | &... | &T.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:19:32:26 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:19:32:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:24:32:25 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:5:36:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:33:12:33:22 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:33:5:36:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:33:12:33:22 | &... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:33:12:33:22 | &... | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:12:33:22 | &... | &T.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:13:33:22 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:13:33:22 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:18:33:21 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:26:33:31 | value2 | | file://:0:0:0:0 | & | +| pattern_matching.rs:33:26:33:31 | value2 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:33:26:33:31 | value2 | &T | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:26:33:31 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:33:33:36:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:33:33:36:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:34:13:34:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:34:20:34:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:35:18:35:25 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:35:18:35:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:35:18:35:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:9:38:14 | value3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:38:18:38:19 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:39:5:42:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:39:16:39:19 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:39:5:42:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:39:16:39:19 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:39:16:39:19 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:23:39:28 | value3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:39:30:42:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:40:13:40:16 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:39:30:42:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:40:13:40:16 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:40:13:40:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:40:20:40:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:40:20:40:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:40:20:40:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:41:18:41:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:41:20:41:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:41:18:41:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:41:18:41:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:41:20:41:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:9:44:14 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:9:44:14 | value4 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:18:44:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:18:44:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:23:44:24 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:5:48:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:45:5:48:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:45:12:45:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:12:45:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:21:45:24 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:45:21:45:24 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:45:21:45:24 | mesg | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:29:45:34 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:29:45:34 | value4 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:45:36:48:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:46:13:46:16 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:45:36:48:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:46:13:46:16 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:46:13:46:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:46:20:46:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:46:20:46:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:46:20:46:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:47:18:47:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:47:20:47:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:47:20:47:23 | mesg | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:50:13:50:18 | value5 | | file://:0:0:0:0 | & | +| pattern_matching.rs:50:13:50:18 | value5 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:50:13:50:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:50:22:50:23 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:51:9:51:9 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:51:9:51:9 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:51:9:51:9 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:51:13:51:18 | value5 | | file://:0:0:0:0 | & | +| pattern_matching.rs:51:13:51:18 | value5 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:51:13:51:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:53:9:53:24 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:53:9:53:24 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | @@ -6696,7 +6716,7 @@ inferType | pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:54:17:54:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:55:17:55:21 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:57:5:61:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:57:5:61:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | @@ -6705,12 +6725,12 @@ inferType | pattern_matching.rs:57:48:57:63 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:57:48:57:63 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:57:48:57:63 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:57:65:61:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:57:65:61:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:58:13:58:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:58:17:58:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:59:13:59:13 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:59:17:59:22 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:60:9:60:10 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:60:9:60:10 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:63:9:63:23 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | @@ -6719,7 +6739,7 @@ inferType | pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:63:41:63:42 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:63:45:63:49 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:64:5:68:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:64:5:68:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | @@ -6728,12 +6748,12 @@ inferType | pattern_matching.rs:64:44:64:58 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:64:44:64:58 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:64:60:68:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:64:60:68:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:65:13:65:13 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:65:17:65:22 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:66:13:66:13 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:66:17:66:22 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:67:9:67:10 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:67:9:67:10 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:70:9:70:16 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:70:9:70:16 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:70:9:70:16 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | @@ -6742,7 +6762,7 @@ inferType | pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:71:17:71:18 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:72:17:72:21 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:74:5:85:5 | match my_enum1 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:74:5:85:5 | match my_enum1 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:74:11:74:18 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:74:11:74:18 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:74:11:74:18 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | @@ -6751,591 +6771,591 @@ inferType | pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:75:28:75:33 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:75:36:75:41 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:75:48:79:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:75:48:79:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:76:17:76:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:76:21:76:26 | value1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:77:17:77:17 | y | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:77:21:77:26 | value2 | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:78:13:78:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:78:13:78:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:26:80:31 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:80:34:80:39 | value2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:80:45:84:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:80:45:84:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:81:17:81:17 | x | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:81:21:81:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:82:17:82:17 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:82:21:82:26 | value2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:83:13:83:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:83:13:83:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:87:9:87:22 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:88:9:88:13 | false | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:90:21:90:22 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:91:21:91:28 | "string" | | file://:0:0:0:0 | & | +| pattern_matching.rs:91:21:91:28 | "string" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:91:21:91:28 | "string" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:95:5:109:5 | match my_nested_enum { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:95:5:109:5 | match my_nested_enum { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:95:11:95:24 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:97:13:97:18 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:100:25:100:25 | y | | file://:0:0:0:0 | & | +| pattern_matching.rs:100:25:100:25 | y | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:102:14:107:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:102:14:107:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:104:21:104:21 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:105:17:105:17 | c | | file://:0:0:0:0 | & | +| pattern_matching.rs:105:17:105:17 | c | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:105:17:105:17 | c | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:105:21:105:21 | y | | file://:0:0:0:0 | & | +| pattern_matching.rs:105:21:105:21 | y | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:105:21:105:21 | y | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:106:13:106:14 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:106:13:106:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:108:9:108:9 | _ | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:108:9:108:9 | _ | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:108:9:108:9 | _ | T1.T1 | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:108:9:108:9 | _ | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2 | {EXTERNAL LOCATION} | & | | pattern_matching.rs:108:9:108:9 | _ | T1.T2.&T | {EXTERNAL LOCATION} | str | | pattern_matching.rs:108:9:108:9 | _ | T2 | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:108:14:108:15 | TupleExpr | | file://:0:0:0:0 | () | +| pattern_matching.rs:108:14:108:15 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:111:9:111:12 | opt1 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:111:9:111:12 | opt1 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:111:16:111:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:111:16:111:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:111:21:111:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:113:9:113:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:113:13:116:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:113:9:113:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:113:13:116:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:20:113:33 | Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:32:113:32 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:113:37:113:40 | opt1 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:113:37:113:40 | opt1 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:114:5:116:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:114:5:116:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:115:9:115:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:9:118:12 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:9:118:12 | opt2 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:16:118:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:118:16:118:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:118:21:118:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:120:9:120:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:120:13:123:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:120:9:120:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:120:13:123:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:40:120:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:120:45:120:48 | opt2 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:120:45:120:48 | opt2 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:121:5:123:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:121:5:123:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:122:9:122:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:9:125:12 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:9:125:12 | opt3 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:16:125:39 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:125:16:125:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:125:21:125:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:127:9:127:9 | _ | | file://:0:0:0:0 | () | -| pattern_matching.rs:127:13:130:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:127:9:127:9 | _ | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:127:13:130:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:20:127:41 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:40:127:40 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:127:45:127:48 | opt3 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:127:45:127:48 | opt3 | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:128:5:130:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:128:5:130:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:129:9:129:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:132:5:132:8 | None | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:132:5:132:8 | None | T | file://:0:0:0:0 | () | -| pattern_matching.rs:168:27:217:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:132:5:132:8 | None | T | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:168:27:217:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:169:9:169:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:169:17:169:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:171:5:186:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:171:5:186:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:171:11:171:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:173:9:173:10 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:173:15:176:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:173:15:176:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:175:22:175:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:175:22:175:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:175:22:175:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:177:10:177:10 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:177:15:180:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:177:15:180:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:179:22:179:61 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:179:22:179:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:179:22:179:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:181:9:181:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:181:14:184:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:181:14:184:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:183:22:183:53 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:183:22:183:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:183:22:183:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:185:9:185:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:185:14:185:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:185:14:185:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:188:9:188:17 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:188:21:188:27 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:189:5:195:5 | match float_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:189:5:195:5 | match float_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:189:11:189:19 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:190:9:190:12 | 3.14 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:190:17:193:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:190:17:193:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:192:22:192:47 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:192:22:192:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:192:22:192:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:194:14:194:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:197:9:197:18 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:194:14:194:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:197:9:197:18 | string_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:197:9:197:18 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:197:22:197:28 | "hello" | | file://:0:0:0:0 | & | +| pattern_matching.rs:197:22:197:28 | "hello" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:197:22:197:28 | "hello" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:198:5:204:5 | match string_val { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:198:11:198:20 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:198:5:204:5 | match string_val { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:198:11:198:20 | string_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:198:11:198:20 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:199:9:199:15 | "hello" | | file://:0:0:0:0 | & | +| pattern_matching.rs:199:9:199:15 | "hello" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:199:9:199:15 | "hello" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:199:20:202:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:200:17:200:27 | hello_match | | file://:0:0:0:0 | & | +| pattern_matching.rs:199:20:202:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:200:17:200:27 | hello_match | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:200:17:200:27 | hello_match | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:200:31:200:40 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:200:31:200:40 | string_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:200:31:200:40 | string_val | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:201:22:201:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:201:44:201:54 | hello_match | | file://:0:0:0:0 | & | +| pattern_matching.rs:201:22:201:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:201:22:201:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:201:44:201:54 | hello_match | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:203:9:203:9 | _ | | file://:0:0:0:0 | & | +| pattern_matching.rs:203:9:203:9 | _ | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:203:9:203:9 | _ | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:203:14:203:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:203:14:203:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:206:9:206:16 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:206:20:206:23 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:207:5:216:5 | match bool_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:207:5:216:5 | match bool_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:207:11:207:18 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:208:9:208:12 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:208:17:211:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:208:17:211:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:210:22:210:51 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:210:22:210:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:210:22:210:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:212:18:215:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:212:18:215:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:214:22:214:53 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:214:22:214:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:214:22:214:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:219:30:277:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:219:30:277:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:220:9:220:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:220:17:220:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:223:5:228:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:223:5:228:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:223:11:223:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:224:9:224:9 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:224:14:227:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:224:14:227:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:225:17:225:27 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:225:31:225:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:226:22:226:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:226:22:226:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:226:22:226:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:231:5:236:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:231:11:231:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:231:5:236:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:231:11:231:16 | &value | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:231:11:231:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:232:13:232:13 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:232:13:232:13 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:232:13:232:13 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:232:13:232:13 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:232:13:232:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:232:18:235:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:233:17:233:25 | ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:233:17:233:25 | ref_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:232:18:235:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:233:17:233:25 | ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:233:17:233:25 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:233:29:233:29 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:233:29:233:29 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:233:29:233:29 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:29:233:29 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:233:29:233:29 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:234:22:234:60 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:234:52:234:60 | ref_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:234:52:234:60 | ref_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:234:22:234:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:234:22:234:60 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:234:52:234:60 | ref_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:234:52:234:60 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:240:11:240:23 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:241:13:241:13 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:241:18:245:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:241:18:245:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:242:17:242:25 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:242:29:242:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:243:13:243:13 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:243:13:243:18 | ... += ... | | file://:0:0:0:0 | () | +| pattern_matching.rs:243:13:243:18 | ... += ... | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:243:18:243:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:244:22:244:56 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:244:22:244:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:244:22:244:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:9:249:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:9:249:20 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:249:24:249:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:249:39:249:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:250:5:266:5 | match option_value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:250:5:266:5 | match option_value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:250:11:250:22 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:250:11:250:22 | option_value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:251:9:251:30 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:24:251:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:251:28:251:29 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:251:35:254:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:251:35:254:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:252:17:252:24 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:252:28:252:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:253:22:253:59 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:253:22:253:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:253:22:253:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:255:9:255:35 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:24:255:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:28:255:28 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:255:32:255:34 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:255:40:258:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:255:40:258:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:256:17:256:30 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:256:34:256:34 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:257:22:257:63 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:257:22:257:63 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:257:22:257:63 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:259:9:259:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:259:24:259:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:259:30:262:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:259:30:262:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:260:17:260:26 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:260:30:260:30 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:261:22:261:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:261:22:261:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:261:22:261:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:263:9:263:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:263:9:263:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:263:27:265:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:264:22:264:33 | "None value\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:263:27:265:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:264:22:264:33 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:264:22:264:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:264:22:264:33 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:270:5:276:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:270:5:276:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:271:17:271:17 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:271:17:271:17 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:271:17:271:17 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:271:17:271:17 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:271:22:275:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:271:22:275:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:272:33:272:33 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:272:33:272:33 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:272:33:272:33 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:33:272:33 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:272:33:272:33 | x | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:273:13:273:32 | ... += ... | | file://:0:0:0:0 | () | -| pattern_matching.rs:273:14:273:27 | * ... | | file://:0:0:0:0 | & | +| pattern_matching.rs:273:13:273:32 | ... += ... | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:273:14:273:27 | * ... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:273:14:273:27 | * ... | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | | file://:0:0:0:0 | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:274:22:274:38 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:279:28:290:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:274:22:274:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:274:22:274:38 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:279:28:290:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:280:17:280:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:282:5:289:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:282:5:289:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:282:11:282:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:283:9:283:10 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:283:15:283:40 | MacroExpr | | file://:0:0:0:0 | () | -| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:283:15:283:40 | MacroExpr | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:283:24:283:39 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:283:24:283:39 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:283:24:283:39 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:285:14:288:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:285:14:288:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:287:22:287:65 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:287:22:287:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:287:22:287:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:292:25:324:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:292:25:324:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:293:9:293:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:293:17:293:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:295:5:310:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:295:5:310:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:295:11:295:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:9:297:14 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:297:13:297:14 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:297:19:300:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:297:19:300:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:299:22:299:59 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:299:22:299:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:299:22:299:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:10 | 11 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:301:9:301:12 | RangePat | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:301:17:304:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:301:17:304:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:303:22:303:52 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:303:22:303:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:303:22:303:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:9:305:12 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:305:12:305:12 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:305:17:308:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:305:17:308:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:307:22:307:67 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:307:22:307:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:307:22:307:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:309:9:309:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:309:14:309:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:309:14:309:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:312:9:312:16 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:312:20:312:22 | 'c' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:313:5:323:5 | match char_val { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:313:5:323:5 | match char_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:313:11:313:18 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:11 | 'a' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:9:314:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:314:15:314:17 | 'z' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:314:22:317:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:314:22:317:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:316:22:316:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:316:22:316:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:316:22:316:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:9:318:17 | RangePat | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:318:15:318:17 | 'Z' | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:318:22:321:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:318:22:321:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:320:22:320:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:320:22:320:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:320:22:320:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:322:9:322:9 | _ | | {EXTERNAL LOCATION} | char | -| pattern_matching.rs:322:14:322:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:326:29:355:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:322:14:322:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:326:29:355:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:327:9:327:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:327:17:327:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:13:328:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:331:5:340:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:331:11:331:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:331:5:340:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:331:11:331:16 | &value | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:331:11:331:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:332:9:332:11 | &42 | | file://:0:0:0:0 | & | +| pattern_matching.rs:332:9:332:11 | &42 | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:332:9:332:11 | &42 | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:10:332:11 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:332:16:335:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:332:16:335:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:334:22:334:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:334:22:334:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:334:22:334:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:336:9:336:10 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:336:9:336:10 | &... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:336:9:336:10 | &... | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:10:336:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:336:15:339:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:336:15:339:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:337:17:337:27 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:337:31:337:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:338:22:338:60 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:338:22:338:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:338:22:338:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:342:5:347:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:342:11:342:28 | &mut mutable_value | | file://:0:0:0:0 | & | +| pattern_matching.rs:342:5:347:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:342:11:342:28 | &mut mutable_value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:9:343:18 | &mut ... | | file://:0:0:0:0 | & | +| pattern_matching.rs:343:9:343:18 | &mut ... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:343:9:343:18 | &mut ... | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:18:343:18 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:343:18:343:18 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:343:18:343:18 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:343:23:346:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:344:17:344:29 | mut_ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:343:23:346:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:344:17:344:29 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:344:33:344:33 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:344:33:344:33 | x | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:344:33:344:33 | x | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:345:22:345:61 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:345:49:345:61 | mut_ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:345:22:345:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:345:22:345:61 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:349:5:354:5 | match ... { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:349:11:349:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:349:5:354:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:349:11:349:16 | &value | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:349:11:349:16 | &value | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:350:13:350:13 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:350:13:350:13 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:350:13:350:13 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:350:13:350:13 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:350:13:350:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:350:18:353:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:351:17:351:27 | ref_pattern | | file://:0:0:0:0 | & | -| pattern_matching.rs:351:17:351:27 | ref_pattern | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:350:18:353:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:351:17:351:27 | ref_pattern | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:351:17:351:27 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:351:31:351:31 | x | | file://:0:0:0:0 | & | -| pattern_matching.rs:351:31:351:31 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:351:31:351:31 | x | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:31:351:31 | x | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:351:31:351:31 | x | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:352:22:352:57 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:352:47:352:57 | ref_pattern | | file://:0:0:0:0 | & | -| pattern_matching.rs:352:47:352:57 | ref_pattern | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:352:22:352:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:352:22:352:57 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:352:47:352:57 | ref_pattern | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | &T | {EXTERNAL LOCATION} | & | | pattern_matching.rs:352:47:352:57 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:357:26:398:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:357:26:398:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:28:358:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:358:35:358:36 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:361:5:380:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:361:5:380:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:361:11:361:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:9:362:28 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:362:20:362:20 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:362:26:362:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:362:33:365:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:362:33:365:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:364:22:364:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:364:22:364:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:364:22:364:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:366:17:366:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:366:23:366:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:366:30:370:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:366:30:370:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:367:17:367:24 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:367:28:367:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | file://:0:0:0:0 | & | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:369:22:369:80 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:369:22:369:80 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:369:22:369:80 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:9:371:27 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:371:20:371:21 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:371:32:374:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:371:32:374:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:373:22:373:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:373:22:373:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:373:22:373:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:375:17:375:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:375:20:375:20 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:375:27:379:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:375:27:379:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:376:17:376:25 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:376:29:376:29 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:17:377:25 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:29:377:29 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:378:22:378:68 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:378:22:378:68 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:378:22:378:68 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:60:378:68 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:383:9:383:13 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:383:17:386:5 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:384:16:384:19 | 10.0 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:385:17:385:20 | 20.0 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:387:5:397:5 | match shape { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:387:5:397:5 | match shape { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:387:11:387:15 | shape | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:388:9:391:9 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | | pattern_matching.rs:389:20:389:20 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:390:21:390:21 | h | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:391:14:395:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:391:14:395:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:392:17:392:26 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:392:30:392:30 | w | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:17:393:27 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:31:393:31 | h | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:394:22:394:64 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:394:22:394:64 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:394:22:394:64 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:54:394:64 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:396:9:396:9 | _ | | pattern_matching.rs:145:1:150:1 | Shape | -| pattern_matching.rs:396:14:396:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:400:32:441:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:396:14:396:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:400:32:441:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:401:9:401:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:17:401:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:404:5:418:5 | match color { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:404:5:418:5 | match color { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:404:11:404:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:9:405:24 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:405:15:405:17 | 255 | | {EXTERNAL LOCATION} | i32 | @@ -7344,80 +7364,80 @@ inferType | pattern_matching.rs:405:20:405:20 | 0 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:405:29:408:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:405:29:408:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:406:17:406:25 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:406:29:406:33 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:407:22:407:48 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:407:22:407:48 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:407:22:407:48 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:9:409:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:409:15:409:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:18:409:18 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:409:21:409:21 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:409:27:417:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:409:27:417:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:410:17:410:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:410:33:410:33 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:411:17:411:31 | green_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:411:35:411:35 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:412:17:412:30 | blue_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:412:34:412:34 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:414:17:415:62 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:414:17:415:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:414:17:415:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:32:415:46 | green_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:415:49:415:62 | blue_component | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:421:5:430:5 | match color { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:421:5:430:5 | match color { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:421:11:421:15 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:9:422:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:422:20:422:21 | .. | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:422:27:425:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:422:27:425:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:423:17:423:29 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:423:33:423:37 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:424:22:424:57 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:424:22:424:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:424:22:424:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:9:426:20 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:426:15:426:15 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:426:18:426:19 | .. | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:426:25:429:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:426:25:429:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:427:17:427:23 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:427:27:427:27 | r | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:428:22:428:54 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:428:22:428:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:428:22:428:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:434:9:434:15 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:19:434:29 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:434:27:434:28 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:435:5:440:5 | match wrapper { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:435:5:440:5 | match wrapper { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:435:11:435:17 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:9:436:18 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | | pattern_matching.rs:436:17:436:17 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:436:23:439:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:436:23:439:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:437:17:437:29 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:437:33:437:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:438:22:438:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:438:22:438:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:438:22:438:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:443:25:498:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:444:9:444:13 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:443:25:498:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:444:9:444:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:444:9:444:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:444:17:444:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:444:17:444:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | @@ -7426,14 +7446,14 @@ inferType | pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:447:5:458:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:447:11:447:15 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:447:5:458:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:447:11:447:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:447:11:447:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:448:9:448:19 | TuplePat | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:448:9:448:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:448:9:448:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | @@ -7444,30 +7464,30 @@ inferType | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:448:24:451:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:449:17:449:27 | exact_tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:448:24:451:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:449:17:449:27 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:449:17:449:27 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:449:31:449:35 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:449:31:449:35 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:449:31:449:35 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:450:22:450:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:450:43:450:53 | exact_tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:450:22:450:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:450:43:450:53 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:450:43:450:53 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:452:9:452:17 | TuplePat | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:452:9:452:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:452:9:452:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | @@ -7478,7 +7498,7 @@ inferType | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:452:16:452:16 | c | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:452:22:457:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:452:22:457:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:453:17:453:26 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:453:30:453:30 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:454:17:454:27 | second_elem | | {EXTERNAL LOCATION} | i32 | @@ -7489,285 +7509,285 @@ inferType | pattern_matching.rs:455:17:455:26 | third_elem | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:456:22:456:79 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:456:22:456:79 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:456:57:456:67 | second_elem | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:461:5:466:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:461:11:461:15 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:461:5:466:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:461:11:461:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:461:11:461:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:462:9:462:19 | TuplePat | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:462:9:462:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:462:9:462:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:462:24:465:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:462:24:465:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:464:22:464:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:469:9:469:12 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:469:16:469:17 | TupleExpr | | file://:0:0:0:0 | () | -| pattern_matching.rs:470:5:475:5 | match unit { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:470:11:470:14 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:471:9:471:10 | TuplePat | | file://:0:0:0:0 | () | -| pattern_matching.rs:471:15:474:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:472:17:472:26 | unit_value | | file://:0:0:0:0 | () | -| pattern_matching.rs:472:30:472:33 | unit | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:464:22:464:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:464:22:464:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:469:9:469:12 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:469:16:469:17 | TupleExpr | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:470:5:475:5 | match unit { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:470:11:470:14 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:471:9:471:10 | TuplePat | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:471:15:474:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:472:17:472:26 | unit_value | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:472:30:472:33 | unit | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:22:473:51 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:473:42:473:51 | unit_value | | file://:0:0:0:0 | () | -| pattern_matching.rs:478:9:478:14 | single | | file://:0:0:0:0 | (T_1) | +| pattern_matching.rs:473:22:473:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:22:473:51 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:473:42:473:51 | unit_value | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:478:9:478:14 | single | | {EXTERNAL LOCATION} | (T_1) | | pattern_matching.rs:478:9:478:14 | single | 0(1) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:478:18:478:25 | TupleExpr | | file://:0:0:0:0 | (T_1) | +| pattern_matching.rs:478:18:478:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_1) | | pattern_matching.rs:478:18:478:25 | TupleExpr | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:479:5:484:5 | match single { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:479:11:479:16 | single | | file://:0:0:0:0 | (T_1) | +| pattern_matching.rs:479:5:484:5 | match single { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:479:11:479:16 | single | | {EXTERNAL LOCATION} | (T_1) | | pattern_matching.rs:479:11:479:16 | single | 0(1) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:480:9:480:12 | TuplePat | | file://:0:0:0:0 | (T_1) | +| pattern_matching.rs:480:9:480:12 | TuplePat | | {EXTERNAL LOCATION} | (T_1) | | pattern_matching.rs:480:9:480:12 | TuplePat | 0(1) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:10:480:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:480:17:483:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:480:17:483:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:481:17:481:27 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:481:31:481:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:482:22:482:60 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:482:22:482:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:482:22:482:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:50:482:60 | single_elem | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | | file://:0:0:0:0 | & | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:35:487:41 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:487:35:487:41 | &... | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:487:35:487:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:487:35:487:41 | &... | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:487:35:487:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:35:487:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:36:487:41 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:487:36:487:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:487:36:487:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:36:487:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:37:487:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:40:487:40 | 2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:5:491:5 | if ... {...} | | file://:0:0:0:0 | () | -| pattern_matching.rs:488:12:488:17 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | | file://:0:0:0:0 | & | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:488:5:491:5 | if ... {...} | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:488:12:488:17 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:32:491:5 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:488:32:491:5 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:489:18:489:27 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:489:18:489:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:489:18:489:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:490:18:490:27 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:490:18:490:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:490:18:490:27 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:35:494:41 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:494:35:494:41 | &... | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:494:35:494:41 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:494:35:494:41 | &... | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:494:35:494:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:35:494:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:36:494:41 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:494:36:494:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:494:36:494:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:36:494:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:37:494:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:40:494:40 | 2 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:495:9:495:14 | TuplePat | | file://:0:0:0:0 | (T_2) | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | | file://:0:0:0:0 | & | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:495:9:495:14 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:496:14:496:23 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:496:14:496:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:496:14:496:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:497:14:497:23 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:500:33:520:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:497:14:497:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:497:14:497:23 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:500:33:520:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:501:9:501:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:501:17:501:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:504:5:509:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:504:5:509:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:504:11:504:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:9:505:11 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:505:10:505:10 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:505:16:508:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:505:16:508:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:506:17:506:27 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:506:31:506:31 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:507:22:507:61 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:507:22:507:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:507:22:507:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:51:507:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:9:512:13 | tuple | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:512:9:512:13 | tuple | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:512:9:512:13 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:9:512:13 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:17:512:28 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:512:17:512:28 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:512:17:512:28 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:17:512:28 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:18:512:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:24:512:27 | 2i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:513:5:519:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:513:11:513:15 | tuple | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:513:5:519:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:513:11:513:15 | tuple | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:513:11:513:15 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:513:11:513:15 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:9:514:16 | TuplePat | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:514:9:514:16 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:514:9:514:16 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:9:514:16 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:10:514:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:13:514:15 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:14:514:14 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:21:518:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:514:21:518:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:515:17:515:23 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:515:27:515:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:17:516:23 | paren_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:27:516:27 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | file://:0:0:0:0 | & | +| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:517:22:517:71 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:517:22:517:71 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:517:22:517:71 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:56:517:62 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:65:517:71 | paren_y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:522:25:563:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:523:9:523:13 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:523:9:523:13 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:522:25:563:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:523:9:523:13 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:523:9:523:13 | slice | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:523:9:523:13 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:25:523:40 | &... | | file://:0:0:0:0 | & | -| pattern_matching.rs:523:25:523:40 | &... | &T | file://:0:0:0:0 | [] | -| pattern_matching.rs:523:25:523:40 | &... | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:523:25:523:40 | &... | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:523:25:523:40 | &... | &T | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:523:25:523:40 | &... | &T | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:523:25:523:40 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:25:523:40 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:26:523:40 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:523:26:523:40 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:523:26:523:40 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:27:523:27 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:30:523:30 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:33:523:33 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:36:523:36 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:39:523:39 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:526:5:551:5 | match slice { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:526:11:526:15 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:526:11:526:15 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:526:5:551:5 | match slice { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:526:11:526:15 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:526:11:526:15 | slice | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:526:11:526:15 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:527:9:527:10 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:527:9:527:10 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:527:9:527:10 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:527:9:527:10 | SlicePat | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:527:9:527:10 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:527:15:530:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:528:17:528:27 | empty_slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:528:17:528:27 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:527:15:530:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:528:17:528:27 | empty_slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:528:17:528:27 | empty_slice | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:528:17:528:27 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:528:31:528:35 | slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:528:31:528:35 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:528:31:528:35 | slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:528:31:528:35 | slice | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:528:31:528:35 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:529:22:529:53 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:529:43:529:53 | empty_slice | | file://:0:0:0:0 | & | -| pattern_matching.rs:529:43:529:53 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:529:22:529:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:529:22:529:53 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:529:43:529:53 | empty_slice | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:529:43:529:53 | empty_slice | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:529:43:529:53 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:531:9:531:11 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:531:9:531:11 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:531:9:531:11 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:531:9:531:11 | SlicePat | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:531:9:531:11 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:531:16:534:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:531:16:534:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:533:22:533:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:535:9:535:23 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:535:9:535:23 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:533:22:533:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:533:22:533:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:535:9:535:23 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:535:9:535:23 | SlicePat | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:535:9:535:23 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:535:28:539:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:535:28:539:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:538:22:538:70 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:540:9:540:34 | SlicePat | | file://:0:0:0:0 | & | -| pattern_matching.rs:540:9:540:34 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:538:22:538:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:538:22:538:70 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:540:9:540:34 | SlicePat | | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:540:9:540:34 | SlicePat | &T | {EXTERNAL LOCATION} | [] | | pattern_matching.rs:540:9:540:34 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:540:39:550:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | file://:0:0:0:0 | & | +| pattern_matching.rs:540:39:550:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:545:17:548:34 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:554:9:554:13 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:545:17:548:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:545:17:548:34 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:554:9:554:13 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:554:9:554:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:554:17:554:28 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:554:17:554:28 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:554:17:554:28 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:18:554:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:24:554:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:27:554:27 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:555:5:562:5 | match array { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:555:11:555:15 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:555:5:562:5 | match array { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:555:11:555:15 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:555:11:555:15 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:556:9:556:17 | SlicePat | | file://:0:0:0:0 | [] | +| pattern_matching.rs:556:9:556:17 | SlicePat | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:556:9:556:17 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:556:22:561:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:556:22:561:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:560:22:560:70 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:565:24:601:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:560:22:560:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:565:24:601:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:567:27:567:28 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:9:568:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:568:17:568:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:570:5:576:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:570:5:576:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:570:11:570:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:571:9:571:16 | CONSTANT | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:571:21:574:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:571:21:574:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:572:17:572:27 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:572:31:572:35 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:573:22:573:56 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:573:22:573:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:573:22:573:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:575:9:575:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:575:14:575:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:575:14:575:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:579:9:579:14 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:9:579:14 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:579:18:579:38 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:579:33:579:37 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:580:5:588:5 | match option { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:580:5:588:5 | match option { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:580:11:580:16 | option | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:580:11:580:16 | option | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:581:9:581:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:581:9:581:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:581:27:583:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:582:22:582:35 | "None variant\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:581:27:583:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:22:582:35 | "None variant\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:582:22:582:35 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:582:22:582:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:582:22:582:35 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:584:24:584:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:584:30:587:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:584:30:587:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:585:17:585:26 | some_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:585:30:585:30 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:586:22:586:49 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:586:22:586:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:586:22:586:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:40:586:49 | some_value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:591:5:600:5 | match ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:591:5:600:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:591:11:591:51 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | @@ -7776,61 +7796,61 @@ inferType | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:592:9:592:34 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:592:33:592:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:592:39:595:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:592:39:595:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:593:17:593:24 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:593:28:593:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:594:22:594:45 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:594:22:594:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:594:22:594:45 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:38:594:45 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | E | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:596:9:596:35 | ...::Err(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:596:34:596:34 | e | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:596:40:599:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:596:40:599:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:597:17:597:25 | err_value | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:597:29:597:29 | e | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:598:22:598:43 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:598:22:598:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:598:22:598:43 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:35:598:43 | err_value | | {EXTERNAL LOCATION} | usize | -| pattern_matching.rs:603:22:638:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:603:22:638:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:604:9:604:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:604:17:604:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:607:5:617:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:607:5:617:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:607:11:607:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:9:608:17 | 1 \| 2 \| 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:13:608:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:608:17:608:17 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:608:22:611:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:608:22:611:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:609:17:609:25 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:609:29:609:33 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:610:22:610:50 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:610:22:610:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:610:22:610:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:10 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:9:612:15 | 10 \| 20 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:612:14:612:15 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:612:20:615:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:612:20:615:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:613:17:613:25 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:613:29:613:33 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:614:22:614:50 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:614:22:614:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:614:22:614:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:616:9:616:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:616:14:616:15 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:616:14:616:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:620:9:620:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:17:620:36 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:620:28:620:28 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:620:34:620:34 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:621:5:628:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:621:5:628:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:621:11:621:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:29 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:622:9:622:53 | ... \| ... | | pattern_matching.rs:135:1:140:1 | Point | @@ -7841,20 +7861,20 @@ inferType | pattern_matching.rs:622:41:622:41 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:47:622:47 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:622:51:622:51 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:622:58:626:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:622:58:626:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:623:17:623:22 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:623:26:623:26 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:17:624:22 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:26:624:26 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:625:22:625:62 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:625:22:625:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:625:22:625:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:49:625:54 | axis_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:57:625:62 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:627:9:627:9 | _ | | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:627:14:627:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:631:5:637:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:627:14:627:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:631:5:637:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:631:11:631:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:9 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:9:632:14 | RangePat | | {EXTERNAL LOCATION} | i32 | @@ -7863,23 +7883,23 @@ inferType | pattern_matching.rs:632:18:632:19 | 90 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:18:632:25 | RangePat | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:632:23:632:25 | 100 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:632:30:635:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:632:30:635:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:633:17:633:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:633:34:633:38 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:634:22:634:51 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:634:22:634:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:634:22:634:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:636:9:636:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:636:14:636:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:640:24:674:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:641:9:641:13 | tuple | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:636:14:636:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:640:24:674:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:641:9:641:13 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:641:9:641:13 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:641:9:641:13 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:9:641:13 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:641:9:641:13 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:641:17:641:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:641:17:641:41 | TupleExpr | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:641:17:641:41 | TupleExpr | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:17:641:41 | TupleExpr | 2(4) | {EXTERNAL LOCATION} | f32 | @@ -7888,91 +7908,91 @@ inferType | pattern_matching.rs:641:24:641:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:30:641:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:641:38:641:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:644:5:649:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:644:11:644:15 | tuple | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:644:5:649:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:644:11:644:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:644:11:644:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:644:11:644:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:644:11:644:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:644:11:644:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:645:9:645:19 | TuplePat | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:645:9:645:19 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:645:9:645:19 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:645:9:645:19 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:645:9:645:19 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:645:9:645:19 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:645:24:648:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:645:24:648:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:647:22:647:54 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:651:5:656:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:651:11:651:15 | tuple | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:647:22:647:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:647:22:647:54 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:651:5:656:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:651:11:651:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:651:11:651:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:651:11:651:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:651:11:651:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:651:11:651:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:652:9:652:18 | TuplePat | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:652:9:652:18 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:652:9:652:18 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:652:9:652:18 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:652:9:652:18 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:652:9:652:18 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:652:23:655:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:652:23:655:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:654:22:654:52 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:658:5:664:5 | match tuple { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:658:11:658:15 | tuple | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:654:22:654:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:654:22:654:52 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:658:5:664:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:658:11:658:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:658:11:658:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:658:11:658:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:658:11:658:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:658:11:658:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:659:9:659:25 | TuplePat | | file://:0:0:0:0 | (T_4) | +| pattern_matching.rs:659:9:659:25 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | | pattern_matching.rs:659:9:659:25 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:659:9:659:25 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:659:9:659:25 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:659:9:659:25 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:659:30:663:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:659:30:663:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:662:22:662:67 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:662:22:662:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:662:22:662:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:17:667:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:667:28:667:29 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:667:35:667:36 | 20 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:668:5:673:5 | match point { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:668:5:673:5 | match point { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:668:11:668:15 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:9:669:23 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:669:17:669:17 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:669:28:672:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:669:28:672:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:670:17:670:22 | rest_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:670:26:670:26 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:671:22:671:47 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:671:22:671:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:671:22:671:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:42:671:47 | rest_x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:676:25:696:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:676:25:696:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:678:17:678:18 | 42 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:678:17:678:18 | match 42i32 { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:679:17:679:17 | match 42i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:678:17:678:18 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:679:17:679:17 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:679:17:679:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:694:21:694:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:694:21:694:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:694:21:694:29 | match 42i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:694:21:694:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:694:21:694:29 | match 42i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:694:28:694:29 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:695:21:695:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:695:21:695:25 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:695:21:695:28 | match 10i32 { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:695:21:695:25 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:695:21:695:28 | match 10i32 { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:695:28:695:28 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:698:34:724:1 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:700:9:700:20 | complex_data | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:698:34:724:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:700:9:700:20 | complex_data | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:700:9:700:20 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:700:9:700:20 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:700:9:700:20 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:700:24:700:79 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:700:24:700:79 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:700:24:700:79 | TupleExpr | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | @@ -7985,12 +8005,12 @@ inferType | pattern_matching.rs:700:68:700:70 | 255 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:700:73:700:73 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:702:11:702:22 | complex_data | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:702:11:702:22 | complex_data | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:702:11:702:22 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:702:11:702:22 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:702:11:702:22 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:704:9:704:61 | TuplePat | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:704:9:704:61 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:704:9:704:61 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:704:9:704:61 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:704:9:704:61 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | @@ -8004,25 +8024,25 @@ inferType | pattern_matching.rs:704:50:704:52 | 255 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:55:704:55 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:704:58:704:58 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:704:66:712:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:704:66:712:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:705:17:705:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:705:28:705:28 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:706:17:706:24 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:706:28:706:28 | g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:707:17:707:24 | nested_b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:707:28:707:28 | b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | file://:0:0:0:0 | & | +| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:709:17:710:44 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:709:17:710:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:709:17:710:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:710:17:710:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:710:27:710:34 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:710:37:710:44 | nested_b | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:714:9:714:41 | TuplePat | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:714:9:714:41 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:714:9:714:41 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:9:714:41 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:9:714:41 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:9:714:71 | ... \| ... | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:714:9:714:71 | ... \| ... | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:714:9:714:71 | ... \| ... | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | @@ -8030,7 +8050,7 @@ inferType | pattern_matching.rs:714:18:714:18 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:27:714:40 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:27:714:40 | ...::None | T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:45:714:71 | TuplePat | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:714:45:714:71 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:714:45:714:71 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:45:714:71 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:45:714:71 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | @@ -8039,36 +8059,36 @@ inferType | pattern_matching.rs:714:61:714:61 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:70:714:70 | _ | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:70:714:70 | _ | T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:714:76:717:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:714:76:717:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:715:17:715:29 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:715:33:715:33 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | file://:0:0:0:0 | & | +| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:716:22:716:65 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:716:22:716:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:716:22:716:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:53:716:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:719:9:719:13 | other | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:719:9:719:13 | other | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:719:9:719:13 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:719:9:719:13 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:719:9:719:13 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:719:18:722:9 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:720:17:720:29 | other_complex | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:719:18:722:9 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:720:17:720:29 | other_complex | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:720:17:720:29 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:720:17:720:29 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:720:17:720:29 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:720:33:720:37 | other | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:720:33:720:37 | other | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:720:33:720:37 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:720:33:720:37 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:720:33:720:37 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:721:22:721:62 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:721:50:721:62 | other_complex | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:721:22:721:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:22:721:62 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:721:50:721:62 | other_complex | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:721:50:721:62 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:721:50:721:62 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:721:50:721:62 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:726:37:758:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:726:37:758:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:728:9:728:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:17:728:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:28:728:29 | 10 | | {EXTERNAL LOCATION} | i32 | @@ -8081,25 +8101,25 @@ inferType | pattern_matching.rs:730:17:730:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:731:9:731:13 | let_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:731:17:731:17 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:9:733:13 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:733:9:733:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:733:9:733:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:9:733:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:733:9:733:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:733:17:733:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:733:17:733:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:17:733:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:733:17:733:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:733:18:733:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:24:733:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:733:30:733:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:734:9:734:17 | TuplePat | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:734:9:734:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:734:9:734:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:734:9:734:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:734:9:734:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:734:10:734:10 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:734:13:734:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:734:16:734:16 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:734:21:734:25 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:734:21:734:25 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:734:21:734:25 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:734:21:734:25 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:734:21:734:25 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | @@ -8109,18 +8129,18 @@ inferType | pattern_matching.rs:736:17:736:17 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:737:9:737:13 | let_c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:737:17:737:17 | c | | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:739:9:739:13 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:739:9:739:13 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:739:9:739:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:739:17:739:34 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:739:17:739:34 | [...] | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:739:17:739:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:18:739:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:24:739:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:27:739:27 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:30:739:30 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:33:739:33 | 5 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:740:9:740:25 | SlicePat | | file://:0:0:0:0 | [] | +| pattern_matching.rs:740:9:740:25 | SlicePat | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:740:9:740:25 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:740:29:740:33 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:740:29:740:33 | array | | {EXTERNAL LOCATION} | [;] | | pattern_matching.rs:740:29:740:33 | array | [T;...] | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:744:9:744:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:17:744:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -8140,29 +8160,29 @@ inferType | pattern_matching.rs:748:17:748:17 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:751:9:751:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:751:17:751:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:752:13:752:19 | ref_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:752:13:752:19 | ref_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:752:13:752:19 | ref_val | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:752:23:752:27 | value | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:753:9:753:15 | let_ref | | file://:0:0:0:0 | & | +| pattern_matching.rs:753:9:753:15 | let_ref | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:753:9:753:15 | let_ref | &T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:753:19:753:25 | ref_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:753:19:753:25 | ref_val | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:753:19:753:25 | ref_val | &T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:13:756:19 | mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:23:756:27 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:9:757:15 | let_mut | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:19:757:25 | mut_val | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:760:42:789:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:760:42:789:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:763:22:763:35 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:763:30:763:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:33:763:33 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:763:59:767:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:763:59:767:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:763:59:767:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:59:767:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:13:764:19 | param_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:23:764:23 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:13:765:19 | param_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:23:765:23 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:766:9:766:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:766:9:766:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:766:9:766:26 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:9:766:26 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:10:766:16 | param_x | | {EXTERNAL LOCATION} | i32 | @@ -8175,21 +8195,21 @@ inferType | pattern_matching.rs:770:13:770:19 | param_r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:770:23:770:23 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:771:9:771:15 | param_r | | {EXTERNAL LOCATION} | u8 | -| pattern_matching.rs:774:22:774:38 | TuplePat | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:774:22:774:38 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:774:22:774:38 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:22:774:38 | TuplePat | 1(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:774:22:774:38 | TuplePat | 2(3) | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:774:23:774:27 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:30:774:30 | _ | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:774:33:774:37 | third | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:774:74:778:5 | { ... } | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:774:74:778:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:774:74:778:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:74:778:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:775:13:775:23 | param_first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:775:27:775:31 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:776:13:776:23 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:776:27:776:31 | third | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:777:9:777:34 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:777:9:777:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:777:9:777:34 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:777:9:777:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:777:10:777:20 | param_first | | {EXTERNAL LOCATION} | i32 | @@ -8198,10 +8218,10 @@ inferType | pattern_matching.rs:781:17:781:37 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:781:28:781:28 | 5 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:781:34:781:35 | 10 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:9:782:17 | extracted | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:782:9:782:17 | extracted | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:782:9:782:17 | extracted | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:9:782:17 | extracted | 1(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:782:21:782:40 | extract_point(...) | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:21:782:40 | extract_point(...) | 1(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:35:782:39 | point | | pattern_matching.rs:135:1:140:1 | Point | @@ -8213,28 +8233,30 @@ inferType | pattern_matching.rs:785:9:785:11 | red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:15:785:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:29:785:33 | color | | pattern_matching.rs:142:1:143:25 | Color | -| pattern_matching.rs:787:9:787:13 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:787:9:787:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:787:9:787:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:9:787:13 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:9:787:13 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:787:17:787:38 | TupleExpr | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:787:17:787:38 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:787:17:787:38 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:17:787:38 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:17:787:38 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:787:18:787:22 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:25:787:31 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:34:787:37 | true | | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:788:9:788:23 | tuple_extracted | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:788:9:788:23 | tuple_extracted | 1(2) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | file://:0:0:0:0 | (T_2) | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 0(2) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 1(2) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:788:41:788:45 | tuple | | file://:0:0:0:0 | (T_3) | +| pattern_matching.rs:788:41:788:45 | tuple | | {EXTERNAL LOCATION} | (T_3) | | pattern_matching.rs:788:41:788:45 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:788:41:788:45 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:788:41:788:45 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | -| pattern_matching.rs:792:35:824:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:792:35:824:1 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:794:9:794:14 | points | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:794:18:794:65 | MacroExpr | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:794:23:794:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:23:794:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:34:794:34 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -8243,19 +8265,20 @@ inferType | pattern_matching.rs:794:45:794:64 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:794:56:794:56 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:794:62:794:62 | 4 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:795:5:799:5 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:795:9:795:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:795:17:795:17 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:795:20:795:20 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:795:34:799:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:795:27:795:32 | points | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:795:34:799:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:796:13:796:18 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:796:22:796:22 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:13:797:18 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:22:797:22 | y | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:798:18:798:58 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:798:18:798:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:798:18:798:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:45:798:50 | loop_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:53:798:58 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:9:802:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -8263,20 +8286,20 @@ inferType | pattern_matching.rs:802:24:802:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:802:24:802:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:802:39:802:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:803:5:806:5 | if ... {...} | | file://:0:0:0:0 | () | +| pattern_matching.rs:803:5:806:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:12:803:33 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:27:803:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:31:803:32 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:803:37:803:48 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:803:37:803:48 | option_value | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:803:50:806:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:803:50:806:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:804:13:804:20 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:804:24:804:24 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:805:18:805:54 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:805:18:805:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:805:18:805:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:47:805:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:13:809:17 | stack | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:809:13:809:17 | stack | A | {EXTERNAL LOCATION} | Global | @@ -8287,7 +8310,7 @@ inferType | pattern_matching.rs:809:36:809:39 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:42:809:42 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:809:45:809:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:810:5:813:5 | while ... { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:810:5:813:5 | while ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:810:15:810:21 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:15:810:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:20:810:20 | x | | {EXTERNAL LOCATION} | i32 | @@ -8296,51 +8319,51 @@ inferType | pattern_matching.rs:810:25:810:29 | stack | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:810:25:810:35 | stack.pop() | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:810:25:810:35 | stack.pop() | T | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:810:37:813:5 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:810:37:813:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:811:13:811:23 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:811:27:811:27 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:812:18:812:42 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:812:18:812:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:812:18:812:42 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:32:812:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:9:816:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:816:17:816:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:817:5:823:5 | match value { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:817:5:823:5 | match value { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:817:11:817:15 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:9:818:9 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:14 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:818:14:818:18 | ... > ... | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:818:18:818:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:818:23:821:9 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:818:23:821:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:819:17:819:23 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:819:27:819:27 | x | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | {EXTERNAL LOCATION} | & | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:820:22:820:44 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:820:22:820:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:820:22:820:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:38:820:44 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:822:9:822:9 | _ | | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:822:14:822:15 | { ... } | | file://:0:0:0:0 | () | -| pattern_matching.rs:826:28:846:1 | { ... } | | file://:0:0:0:0 | () | +| pattern_matching.rs:822:14:822:15 | { ... } | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:826:28:846:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:827:5:827:7 | f(...) | | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:827:5:827:7 | f(...) | T | file://:0:0:0:0 | () | -| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | file://:0:0:0:0 | () | -| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | file://:0:0:0:0 | () | +| pattern_matching.rs:827:5:827:7 | f(...) | T | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:828:5:828:22 | literal_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:829:5:829:25 | identifier_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:830:5:830:23 | wildcard_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:831:5:831:20 | range_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:832:5:832:24 | reference_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:833:5:833:21 | record_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:834:5:834:27 | tuple_struct_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:835:5:835:20 | tuple_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:836:5:836:28 | parenthesized_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:837:5:837:20 | slice_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:838:5:838:19 | path_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:839:5:839:17 | or_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:840:5:840:19 | rest_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:841:5:841:20 | macro_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:842:5:842:29 | complex_nested_patterns(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:843:5:843:32 | patterns_in_let_statements(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:844:5:844:37 | patterns_in_function_parameters(...) | | {EXTERNAL LOCATION} | () | +| pattern_matching.rs:845:5:845:30 | patterns_in_control_flow(...) | | {EXTERNAL LOCATION} | () | testFailures diff --git a/rust/ql/test/library-tests/type-inference/type-inference.ql b/rust/ql/test/library-tests/type-inference/type-inference.ql index 0843b2fa6ab..01af646007d 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -60,9 +60,10 @@ module TypeTest implements TestSig { exists(AstNode n, TypePath path, Type t | t = TypeInference::inferType(n, path) and ( - if t = TypeInference::CertainTypeInference::inferCertainType(n, path) - then tag = "certainType" - else tag = "type" + tag = "type" + or + t = TypeInference::CertainTypeInference::inferCertainType(n, path) and + tag = "certainType" ) and location = n.getLocation() and ( diff --git a/rust/tools/builtins/types.rs b/rust/tools/builtins/types.rs index 91989b5262b..56a8a502e4c 100644 --- a/rust/tools/builtins/types.rs +++ b/rust/tools/builtins/types.rs @@ -23,3 +23,125 @@ pub struct isize; // floating-point types pub struct f32; pub struct f64; + +pub struct Slice; +pub struct Array; +pub struct Ref; // todo: add mut variant +pub struct Ptr; // todo: add mut variant + +// tuples +pub struct Tuple0; +pub struct Tuple1(T); +pub struct Tuple2(T1, T2); +pub struct Tuple3(T1, T2, T3); +pub struct Tuple4(T1, T2, T3, T4); +pub struct Tuple5(T1, T2, T3, T4, T5); +pub struct Tuple6(T1, T2, T3, T4, T5, T6); +pub struct Tuple7(T1, T2, T3, T4, T5, T6, T7); +pub struct Tuple8(T1, T2, T3, T4, T5, T6, T7, T8); +pub struct Tuple9(T1, T2, T3, T4, T5, T6, T7, T8, T9); +pub struct Tuple10( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, +); +pub struct Tuple11( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, +); +pub struct Tuple12( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, +); +pub struct Tuple13( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, +); +pub struct Tuple14( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, +); +pub struct Tuple15( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, +); +pub struct Tuple16( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, +); From bf0dc3c4d17412761d6c0bec6de048d3a8848be1 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 13 Nov 2025 14:30:16 +0100 Subject: [PATCH 792/965] Rust: Use `useUniversalConditions() { none() }` --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 6 ++++++ .../library-tests/type-inference/type-inference.expected | 6 ------ .../codeql/typeinference/internal/TypeInference.qll | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 0c54481b504..46df7547b2e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -3074,6 +3074,8 @@ private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInput exists(term) and constraint.(TraitType).getTrait() instanceof FutureTrait } + + predicate useUniversalConditions() { none() } } pragma[nomagic] @@ -3249,6 +3251,8 @@ private module ForIterableSatisfiesConstraintInput implements t instanceof IntoIteratorTrait ) } + + predicate useUniversalConditions() { none() } } pragma[nomagic] @@ -3303,6 +3307,8 @@ private module InvokedClosureSatisfiesConstraintInput implements exists(term) and constraint.(TraitType).getTrait() instanceof FnOnceTrait } + + predicate useUniversalConditions() { none() } } /** Gets the type of `ce` when viewed as an implementation of `FnOnce`. */ diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 5b73cb2e29d..641294130b1 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -5399,7 +5399,6 @@ inferType | main.rs:2612:40:2612:40 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:43:2612:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2613:9:2613:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2613:18:2613:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2613:18:2613:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | @@ -5573,7 +5572,6 @@ inferType | main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2652:26:2652:33 | c.call() | | {EXTERNAL LOCATION} | i64 | | main.rs:2657:9:2657:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2657:13:2657:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2657:18:2657:18 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2657:18:2657:22 | 0..10 | | {EXTERNAL LOCATION} | Range | @@ -5602,7 +5600,6 @@ inferType | main.rs:2659:21:2659:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2659:24:2659:25 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2660:9:2660:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2660:13:2660:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2660:18:2660:22 | range | | {EXTERNAL LOCATION} | Range | | main.rs:2660:18:2660:22 | range | Idx | {EXTERNAL LOCATION} | i32 | @@ -5626,7 +5623,6 @@ inferType | main.rs:2666:20:2666:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2667:18:2667:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2669:9:2669:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | Item | | main.rs:2669:13:2669:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2669:18:2669:23 | range1 | | {EXTERNAL LOCATION} | Range | | main.rs:2669:18:2669:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | @@ -5795,7 +5791,6 @@ inferType | main.rs:2701:33:2701:37 | "two" | | {EXTERNAL LOCATION} | & | | main.rs:2701:33:2701:37 | "two" | &T | {EXTERNAL LOCATION} | str | | main.rs:2702:9:2702:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | Item | | main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | & | | main.rs:2702:13:2702:15 | key | &T | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap | @@ -5813,7 +5808,6 @@ inferType | main.rs:2702:20:2702:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | | main.rs:2702:32:2702:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2703:9:2703:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | Item | | main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | & | | main.rs:2703:13:2703:17 | value | &T | {EXTERNAL LOCATION} | Box | | main.rs:2703:13:2703:17 | value | &T.A | {EXTERNAL LOCATION} | Global | diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index a03af8f4ffe..7669c252c78 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -992,7 +992,7 @@ module Make1 Input1> { TypeMention constraintMention ) { exists(Type type | hasTypeConstraint(tt, type, constraint) | - useUniversalConditions() and + useUniversalConditions() and // todo: remove, and instead check constraints not exists(countConstraintImplementations(type, constraint)) and conditionSatisfiesConstraintTypeAt(abs, condition, constraintMention, _, _) and resolveTypeMentionRoot(condition) = abs.getATypeParameter() and From f1b12203f60dde4f2e1a14581a4b64879ac88857 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 17 Nov 2025 14:10:08 +0100 Subject: [PATCH 793/965] C#: Add compilation errors to the debug log in BMN. --- .../Extractor/Analyser.cs | 17 +++++++++++++++++ .../Extractor/StandaloneAnalyser.cs | 9 +++++++++ .../Extractor/TracingAnalyser.cs | 15 ++------------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 1ba8827c9d2..6701f993ac6 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -360,5 +360,22 @@ namespace Semmle.Extraction.CSharp return versionString.InformationalVersion; } } + + private static readonly HashSet errorsToIgnore = new HashSet + { + "CS7027", // Code signing failure + "CS1589", // XML referencing not supported + "CS1569" // Error writing XML documentation + }; + + /// + /// Retrieves the diagnostics from the compilation, filtering out those that should be ignored. + /// + protected List GetFilteredDiagnostics() => + compilation is not null + ? compilation.GetDiagnostics() + .Where(e => e.Severity >= DiagnosticSeverity.Error && !errorsToIgnore.Contains(e.Id)) + .ToList() + : []; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs index ff3c2889bc9..b940b02cb5c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/StandaloneAnalyser.cs @@ -13,6 +13,14 @@ namespace Semmle.Extraction.CSharp { } + private void LogDiagnostics() + { + foreach (var error in GetFilteredDiagnostics()) + { + Logger.LogDebug($" Compilation error: {error}"); + } + } + public void Initialize(string outputPath, IEnumerable<(string, string)> compilationInfos, CSharpCompilation compilationIn, CommonOptions options) { compilation = compilationIn; @@ -20,6 +28,7 @@ namespace Semmle.Extraction.CSharp this.options = options; LogExtractorInfo(); SetReferencePaths(); + LogDiagnostics(); } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs index 8a9856f1d31..9f2a1256f1a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TracingAnalyser.cs @@ -136,11 +136,7 @@ namespace Semmle.Extraction.CSharp private int LogDiagnostics() { - var filteredDiagnostics = compilation! - .GetDiagnostics() - .Where(e => e.Severity >= DiagnosticSeverity.Error && !errorsToIgnore.Contains(e.Id)) - .ToList(); - + var filteredDiagnostics = GetFilteredDiagnostics(); foreach (var error in filteredDiagnostics) { Logger.LogError($" Compilation error: {error}"); @@ -148,7 +144,7 @@ namespace Semmle.Extraction.CSharp if (filteredDiagnostics.Count != 0) { - foreach (var reference in compilation.References) + foreach (var reference in compilation!.References) { Logger.LogInfo($" Resolved reference {reference.Display}"); } @@ -156,12 +152,5 @@ namespace Semmle.Extraction.CSharp return filteredDiagnostics.Count; } - - private static readonly HashSet errorsToIgnore = new HashSet - { - "CS7027", // Code signing failure - "CS1589", // XML referencing not supported - "CS1569" // Error writing XML documentation - }; } } From 9f69ff22d324076dfd60b8b7bdf8382bb3915852 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 17 Nov 2025 14:12:19 +0100 Subject: [PATCH 794/965] C#: Add change-note. --- csharp/ql/lib/change-notes/2025-11-17-compiler-error-debug.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-11-17-compiler-error-debug.md diff --git a/csharp/ql/lib/change-notes/2025-11-17-compiler-error-debug.md b/csharp/ql/lib/change-notes/2025-11-17-compiler-error-debug.md new file mode 100644 index 00000000000..082f4562615 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-11-17-compiler-error-debug.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Compilation errors are now included in the debug log when using build-mode none. From 12f1bd8ffdce8a7bcce4530d033b9453ca3ec1fa Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Mon, 17 Nov 2025 15:00:30 +0100 Subject: [PATCH 795/965] C#: add missing `*` to change note --- .../change-notes/2025-10-24-insecure-cookie-query-promote.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md b/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md index 1a15c0494bd..6b3d8d5b259 100644 --- a/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md +++ b/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md @@ -1,4 +1,4 @@ --- category: newQuery --- -The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. \ No newline at end of file +* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. From 6c3566ab524ea06f91e85479bfbd13fe74fa1cc8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:45:36 +0000 Subject: [PATCH 796/965] Rust: It turns out we need test cases for immutable pointers as well. --- .../CWE-825/AccessAfterLifetime.expected | 94 +++++++++---------- .../CWE-825/AccessInvalidPointer.expected | 36 +++---- .../security/CWE-825/deallocation.rs | 22 +++++ 3 files changed, 87 insertions(+), 65 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected index 8b521239978..3d6c4d190af 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected @@ -24,27 +24,27 @@ | lifetime.rs:808:23:808:25 | ptr | lifetime.rs:798:9:798:12 | &val | lifetime.rs:808:23:808:25 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:796:6:796:8 | val | val | | main.rs:64:23:64:24 | p2 | main.rs:44:26:44:28 | &b2 | main.rs:64:23:64:24 | p2 | Access of a pointer to $@ after its lifetime has ended. | main.rs:43:13:43:14 | b2 | b2 | edges -| deallocation.rs:220:6:220:7 | p1 | deallocation.rs:223:14:223:15 | p1 | provenance | | -| deallocation.rs:220:6:220:7 | p1 | deallocation.rs:230:14:230:15 | p1 | provenance | | -| deallocation.rs:220:30:220:38 | &raw const my_buffer | deallocation.rs:220:6:220:7 | p1 | provenance | | -| deallocation.rs:300:28:300:43 | ...: ... | deallocation.rs:302:18:302:20 | ptr | provenance | | -| deallocation.rs:312:27:312:42 | ...: ... | deallocation.rs:320:18:320:20 | ptr | provenance | | -| deallocation.rs:329:7:329:10 | ptr1 | deallocation.rs:332:4:332:7 | ptr1 | provenance | | -| deallocation.rs:329:7:329:10 | ptr1 | deallocation.rs:332:4:332:7 | ptr1 | provenance | | -| deallocation.rs:329:14:329:33 | &raw mut ... | deallocation.rs:329:7:329:10 | ptr1 | provenance | | -| deallocation.rs:330:7:330:10 | ptr2 | deallocation.rs:333:4:333:7 | ptr2 | provenance | | -| deallocation.rs:330:7:330:10 | ptr2 | deallocation.rs:333:4:333:7 | ptr2 | provenance | | -| deallocation.rs:330:14:330:33 | &raw mut ... | deallocation.rs:330:7:330:10 | ptr2 | provenance | | -| deallocation.rs:332:4:332:7 | ptr1 | deallocation.rs:335:27:335:30 | ptr1 | provenance | | -| deallocation.rs:333:4:333:7 | ptr2 | deallocation.rs:337:26:337:29 | ptr2 | provenance | | -| deallocation.rs:335:27:335:30 | ptr1 | deallocation.rs:300:28:300:43 | ...: ... | provenance | | -| deallocation.rs:337:26:337:29 | ptr2 | deallocation.rs:312:27:312:42 | ...: ... | provenance | | -| deallocation.rs:348:6:348:9 | ptr1 | deallocation.rs:351:13:351:16 | ptr1 | provenance | | -| deallocation.rs:348:6:348:9 | ptr1 | deallocation.rs:359:13:359:16 | ptr1 | provenance | | -| deallocation.rs:348:13:348:28 | &raw mut ... | deallocation.rs:348:6:348:9 | ptr1 | provenance | | -| deallocation.rs:367:6:367:9 | ptr2 | deallocation.rs:370:13:370:16 | ptr2 | provenance | | -| deallocation.rs:367:6:367:9 | ptr2 | deallocation.rs:380:13:380:16 | ptr2 | provenance | | -| deallocation.rs:367:13:367:28 | &raw mut ... | deallocation.rs:367:6:367:9 | ptr2 | provenance | | +| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:245:14:245:15 | p1 | provenance | | +| deallocation.rs:242:6:242:7 | p1 | deallocation.rs:252:14:252:15 | p1 | provenance | | +| deallocation.rs:242:30:242:38 | &raw const my_buffer | deallocation.rs:242:6:242:7 | p1 | provenance | | +| deallocation.rs:322:28:322:43 | ...: ... | deallocation.rs:324:18:324:20 | ptr | provenance | | +| deallocation.rs:334:27:334:42 | ...: ... | deallocation.rs:342:18:342:20 | ptr | provenance | | +| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | | +| deallocation.rs:351:7:351:10 | ptr1 | deallocation.rs:354:4:354:7 | ptr1 | provenance | | +| deallocation.rs:351:14:351:33 | &raw mut ... | deallocation.rs:351:7:351:10 | ptr1 | provenance | | +| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | | +| deallocation.rs:352:7:352:10 | ptr2 | deallocation.rs:355:4:355:7 | ptr2 | provenance | | +| deallocation.rs:352:14:352:33 | &raw mut ... | deallocation.rs:352:7:352:10 | ptr2 | provenance | | +| deallocation.rs:354:4:354:7 | ptr1 | deallocation.rs:357:27:357:30 | ptr1 | provenance | | +| deallocation.rs:355:4:355:7 | ptr2 | deallocation.rs:359:26:359:29 | ptr2 | provenance | | +| deallocation.rs:357:27:357:30 | ptr1 | deallocation.rs:322:28:322:43 | ...: ... | provenance | | +| deallocation.rs:359:26:359:29 | ptr2 | deallocation.rs:334:27:334:42 | ...: ... | provenance | | +| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:373:13:373:16 | ptr1 | provenance | | +| deallocation.rs:370:6:370:9 | ptr1 | deallocation.rs:381:13:381:16 | ptr1 | provenance | | +| deallocation.rs:370:13:370:28 | &raw mut ... | deallocation.rs:370:6:370:9 | ptr1 | provenance | | +| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:392:13:392:16 | ptr2 | provenance | | +| deallocation.rs:389:6:389:9 | ptr2 | deallocation.rs:402:13:402:16 | ptr2 | provenance | | +| deallocation.rs:389:13:389:28 | &raw mut ... | deallocation.rs:389:6:389:9 | ptr2 | provenance | | | lifetime.rs:21:2:21:18 | return ... | lifetime.rs:54:11:54:30 | get_local_dangling(...) | provenance | | | lifetime.rs:21:9:21:18 | &my_local1 | lifetime.rs:21:2:21:18 | return ... | provenance | | | lifetime.rs:27:2:27:22 | return ... | lifetime.rs:55:11:55:34 | get_local_dangling_mut(...) | provenance | | @@ -234,32 +234,32 @@ models | 4 | Summary: ::as_ptr; Argument[0].Reference.Reference; ReturnValue.Reference; value | | 5 | Summary: core::ptr::from_ref; Argument[0]; ReturnValue; value | nodes -| deallocation.rs:220:6:220:7 | p1 | semmle.label | p1 | -| deallocation.rs:220:30:220:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | -| deallocation.rs:223:14:223:15 | p1 | semmle.label | p1 | -| deallocation.rs:230:14:230:15 | p1 | semmle.label | p1 | -| deallocation.rs:300:28:300:43 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:302:18:302:20 | ptr | semmle.label | ptr | -| deallocation.rs:312:27:312:42 | ...: ... | semmle.label | ...: ... | -| deallocation.rs:320:18:320:20 | ptr | semmle.label | ptr | -| deallocation.rs:329:7:329:10 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:329:14:329:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:330:7:330:10 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:330:14:330:33 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:332:4:332:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:332:4:332:7 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:333:4:333:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:333:4:333:7 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:335:27:335:30 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:337:26:337:29 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:348:6:348:9 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:348:13:348:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:351:13:351:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:359:13:359:16 | ptr1 | semmle.label | ptr1 | -| deallocation.rs:367:6:367:9 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:367:13:367:28 | &raw mut ... | semmle.label | &raw mut ... | -| deallocation.rs:370:13:370:16 | ptr2 | semmle.label | ptr2 | -| deallocation.rs:380:13:380:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:242:6:242:7 | p1 | semmle.label | p1 | +| deallocation.rs:242:30:242:38 | &raw const my_buffer | semmle.label | &raw const my_buffer | +| deallocation.rs:245:14:245:15 | p1 | semmle.label | p1 | +| deallocation.rs:252:14:252:15 | p1 | semmle.label | p1 | +| deallocation.rs:322:28:322:43 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:324:18:324:20 | ptr | semmle.label | ptr | +| deallocation.rs:334:27:334:42 | ...: ... | semmle.label | ...: ... | +| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr | +| deallocation.rs:351:7:351:10 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:351:14:351:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:352:7:352:10 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:352:14:352:33 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:354:4:354:7 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:355:4:355:7 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:357:27:357:30 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:359:26:359:29 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:370:6:370:9 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:370:13:370:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:373:13:373:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:381:13:381:16 | ptr1 | semmle.label | ptr1 | +| deallocation.rs:389:6:389:9 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:389:13:389:28 | &raw mut ... | semmle.label | &raw mut ... | +| deallocation.rs:392:13:392:16 | ptr2 | semmle.label | ptr2 | +| deallocation.rs:402:13:402:16 | ptr2 | semmle.label | ptr2 | | lifetime.rs:21:2:21:18 | return ... | semmle.label | return ... | | lifetime.rs:21:9:21:18 | &my_local1 | semmle.label | &my_local1 | | lifetime.rs:27:2:27:22 | return ... | semmle.label | return ... | diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index 2ee4afddf2e..b9d308b0572 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -13,10 +13,10 @@ | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | -| deallocation.rs:252:15:252:16 | p1 | deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:252:15:252:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:248:3:248:25 | ...::drop_in_place | invalid | -| deallocation.rs:252:15:252:16 | p1 | deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:252:15:252:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:248:3:248:25 | ...::drop_in_place | invalid | -| deallocation.rs:320:18:320:20 | ptr | deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:320:18:320:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:314:3:314:25 | ...::drop_in_place | invalid | -| deallocation.rs:320:18:320:20 | ptr | deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:320:18:320:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:314:3:314:25 | ...::drop_in_place | invalid | +| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | +| deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | +| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | +| deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | edges | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 | | deallocation.rs:20:23:20:24 | [post] m1 | deallocation.rs:26:15:26:16 | m1 | provenance | | @@ -44,12 +44,12 @@ edges | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | | deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | | -| deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:248:27:248:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:248:3:248:25 | ...::drop_in_place | deallocation.rs:248:27:248:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:248:27:248:28 | [post] p1 | deallocation.rs:252:15:252:16 | p1 | provenance | | -| deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:314:27:314:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:314:3:314:25 | ...::drop_in_place | deallocation.rs:314:27:314:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | -| deallocation.rs:314:27:314:29 | [post] ptr | deallocation.rs:320:18:320:20 | ptr | provenance | | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:270:27:270:28 | [post] p1 | deallocation.rs:274:15:274:16 | p1 | provenance | | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:336:27:336:29 | [post] ptr | provenance | Src:MaD:6 MaD:6 | +| deallocation.rs:336:27:336:29 | [post] ptr | deallocation.rs:342:18:342:20 | ptr | provenance | | models | 1 | Sink: core::ptr::read; Argument[0]; pointer-access | | 2 | Sink: core::ptr::write; Argument[0]; pointer-access | @@ -92,12 +92,12 @@ nodes | deallocation.rs:130:14:130:15 | p1 | semmle.label | p1 | | deallocation.rs:131:14:131:15 | p2 | semmle.label | p2 | | deallocation.rs:132:14:132:15 | p3 | semmle.label | p3 | -| deallocation.rs:248:3:248:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:248:3:248:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:248:27:248:28 | [post] p1 | semmle.label | [post] p1 | -| deallocation.rs:252:15:252:16 | p1 | semmle.label | p1 | -| deallocation.rs:314:3:314:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:314:3:314:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | -| deallocation.rs:314:27:314:29 | [post] ptr | semmle.label | [post] ptr | -| deallocation.rs:320:18:320:20 | ptr | semmle.label | ptr | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 | +| deallocation.rs:274:15:274:16 | p1 | semmle.label | p1 | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:336:3:336:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | +| deallocation.rs:336:27:336:29 | [post] ptr | semmle.label | [post] ptr | +| deallocation.rs:342:18:342:20 | ptr | semmle.label | ptr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index ab4b1e73a2b..bca375f2429 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -149,6 +149,9 @@ impl MyObject { pub unsafe fn test_ptr_invalid_conditions(mode: i32) { let layout = std::alloc::Layout::new::(); + + // --- mutable pointer --- + let mut ptr = std::alloc::alloc(layout) as *mut MyObject; (*ptr).value = 0; // good @@ -207,6 +210,25 @@ pub unsafe fn test_ptr_invalid_conditions(mode: i32) { if (*ptr).is_zero() || ptr.is_null() { // $ MISSING: Alert[rust/access-invalid-pointer] println!(" cond9"); } + + // --- immutable pointer --- + + let const_ptr; + + if mode == 126 { // (causes a panic below) + const_ptr = std::ptr::null_mut(); + } else { + const_ptr = std::alloc::alloc(layout) as *mut MyObject; + (*const_ptr).value = 0; // good + } + + if const_ptr.is_null() { + let v = (*const_ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + println!(" cond10 v = {v}"); + } else { + let v = (*const_ptr).value; // good - unreachable with null pointer + println!(" cond11 v = {v}"); + } } // --- drop --- From d80422915842d7b79fd8ba595e3151b6737c1217 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 16:15:25 +0000 Subject: [PATCH 797/965] Rust: Add missing model. --- .../rust/frameworks/stdlib/core.model.yml | 1 + .../CWE-825/AccessInvalidPointer.expected | 74 ++++++++++++++++++- .../security/CWE-825/deallocation.rs | 44 +++++------ 3 files changed, 95 insertions(+), 24 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 46eea8f9c4e..7d1761dd888 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -60,6 +60,7 @@ extensions: - ["core::ptr::dangling", "ReturnValue", "pointer-invalidate", "manual"] - ["core::ptr::dangling_mut", "ReturnValue", "pointer-invalidate", "manual"] - ["core::ptr::null", "ReturnValue", "pointer-invalidate", "manual"] + - ["core::ptr::null_mut", "ReturnValue", "pointer-invalidate", "manual"] - ["v8::primitives::null", "ReturnValue", "pointer-invalidate", "manual"] - addsTo: pack: codeql/rust-all diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index b9d308b0572..7abb53a2dfb 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -13,6 +13,20 @@ | deallocation.rs:130:14:130:15 | p1 | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:130:14:130:15 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:123:23:123:40 | ...::dangling | invalid | | deallocation.rs:131:14:131:15 | p2 | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:131:14:131:15 | p2 | This operation dereferences a pointer that may be $@. | deallocation.rs:124:21:124:42 | ...::dangling_mut | invalid | | deallocation.rs:132:14:132:15 | p3 | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:132:14:132:15 | p3 | This operation dereferences a pointer that may be $@. | deallocation.rs:125:23:125:36 | ...::null | invalid | +| deallocation.rs:163:13:163:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:163:13:163:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | +| deallocation.rs:166:13:166:15 | ptr | deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:166:13:166:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:159:9:159:26 | ...::null_mut | invalid | +| deallocation.rs:175:13:175:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:175:13:175:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | +| deallocation.rs:178:13:178:15 | ptr | deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:178:13:178:15 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:171:9:171:26 | ...::null_mut | invalid | +| deallocation.rs:186:24:186:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:186:24:186:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:190:24:190:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:190:24:190:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:194:25:194:27 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:194:25:194:27 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:202:24:202:26 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:202:24:202:26 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:183:9:183:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | +| deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:26 | ...::null_mut | invalid | +| deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | +| deallocation.rs:229:13:229:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:229:13:229:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | | deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | | deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | | deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | @@ -32,7 +46,7 @@ edges | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:90:7:90:8 | m2 | provenance | | | deallocation.rs:70:23:70:35 | [post] m2 as ... | deallocation.rs:95:33:95:34 | m2 | provenance | | | deallocation.rs:95:33:95:34 | m2 | deallocation.rs:95:5:95:31 | ...::write::<...> | provenance | MaD:2 Sink:MaD:2 | -| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | provenance | Src:MaD:9 MaD:9 | | deallocation.rs:112:14:112:40 | [post] my_ptr as ... | deallocation.rs:115:13:115:18 | my_ptr | provenance | | | deallocation.rs:123:6:123:7 | p1 | deallocation.rs:130:14:130:15 | p1 | provenance | | | deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | @@ -44,6 +58,32 @@ edges | deallocation.rs:125:6:125:7 | p3 | deallocation.rs:132:14:132:15 | p3 | provenance | | | deallocation.rs:125:23:125:36 | ...::null | deallocation.rs:125:23:125:38 | ...::null(...) | provenance | Src:MaD:7 MaD:7 | | deallocation.rs:125:23:125:38 | ...::null(...) | deallocation.rs:125:6:125:7 | p3 | provenance | | +| deallocation.rs:159:3:159:5 | ptr | deallocation.rs:163:13:163:15 | ptr | provenance | | +| deallocation.rs:159:3:159:5 | ptr | deallocation.rs:166:13:166:15 | ptr | provenance | | +| deallocation.rs:159:9:159:26 | ...::null_mut | deallocation.rs:159:9:159:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:159:9:159:28 | ...::null_mut(...) | deallocation.rs:159:3:159:5 | ptr | provenance | | +| deallocation.rs:171:3:171:5 | ptr | deallocation.rs:175:13:175:15 | ptr | provenance | | +| deallocation.rs:171:3:171:5 | ptr | deallocation.rs:178:13:178:15 | ptr | provenance | | +| deallocation.rs:171:9:171:26 | ...::null_mut | deallocation.rs:171:9:171:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:171:9:171:28 | ...::null_mut(...) | deallocation.rs:171:3:171:5 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:186:24:186:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:190:24:190:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:194:25:194:27 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | +| deallocation.rs:183:3:183:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:183:9:183:26 | ...::null_mut | deallocation.rs:183:9:183:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:183:9:183:28 | ...::null_mut(...) | deallocation.rs:183:3:183:5 | ptr | provenance | | +| deallocation.rs:199:3:199:5 | ptr | deallocation.rs:202:24:202:26 | ptr | provenance | | +| deallocation.rs:199:3:199:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:199:9:199:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:199:9:199:28 | ...::null_mut(...) | deallocation.rs:199:3:199:5 | ptr | provenance | | +| deallocation.rs:207:3:207:5 | ptr | deallocation.rs:210:7:210:9 | ptr | provenance | | +| deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:207:9:207:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:207:3:207:5 | ptr | provenance | | +| deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:226:13:226:21 | const_ptr | provenance | | +| deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:229:13:229:21 | const_ptr | provenance | | +| deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:219:15:219:34 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | +| deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | | | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | | deallocation.rs:270:27:270:28 | [post] p1 | deallocation.rs:274:15:274:16 | p1 | provenance | | @@ -58,7 +98,8 @@ models | 5 | Source: core::ptr::dangling_mut; ReturnValue; pointer-invalidate | | 6 | Source: core::ptr::drop_in_place; Argument[0]; pointer-invalidate | | 7 | Source: core::ptr::null; ReturnValue; pointer-invalidate | -| 8 | Source: libc::unix::free; Argument[0]; pointer-invalidate | +| 8 | Source: core::ptr::null_mut; ReturnValue; pointer-invalidate | +| 9 | Source: libc::unix::free; Argument[0]; pointer-invalidate | nodes | deallocation.rs:20:3:20:21 | ...::dealloc | semmle.label | ...::dealloc | | deallocation.rs:20:23:20:24 | [post] m1 | semmle.label | [post] m1 | @@ -92,6 +133,35 @@ nodes | deallocation.rs:130:14:130:15 | p1 | semmle.label | p1 | | deallocation.rs:131:14:131:15 | p2 | semmle.label | p2 | | deallocation.rs:132:14:132:15 | p3 | semmle.label | p3 | +| deallocation.rs:159:3:159:5 | ptr | semmle.label | ptr | +| deallocation.rs:159:9:159:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:159:9:159:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:163:13:163:15 | ptr | semmle.label | ptr | +| deallocation.rs:166:13:166:15 | ptr | semmle.label | ptr | +| deallocation.rs:171:3:171:5 | ptr | semmle.label | ptr | +| deallocation.rs:171:9:171:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:171:9:171:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:175:13:175:15 | ptr | semmle.label | ptr | +| deallocation.rs:178:13:178:15 | ptr | semmle.label | ptr | +| deallocation.rs:183:3:183:5 | ptr | semmle.label | ptr | +| deallocation.rs:183:9:183:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:183:9:183:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:186:24:186:26 | ptr | semmle.label | ptr | +| deallocation.rs:190:24:190:26 | ptr | semmle.label | ptr | +| deallocation.rs:194:25:194:27 | ptr | semmle.label | ptr | +| deallocation.rs:199:3:199:5 | ptr | semmle.label | ptr | +| deallocation.rs:199:9:199:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:199:9:199:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:202:24:202:26 | ptr | semmle.label | ptr | +| deallocation.rs:207:3:207:5 | ptr | semmle.label | ptr | +| deallocation.rs:207:9:207:26 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:207:9:207:28 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:210:7:210:9 | ptr | semmle.label | ptr | +| deallocation.rs:219:3:219:11 | const_ptr | semmle.label | const_ptr | +| deallocation.rs:219:15:219:32 | ...::null_mut | semmle.label | ...::null_mut | +| deallocation.rs:219:15:219:34 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | +| deallocation.rs:226:13:226:21 | const_ptr | semmle.label | const_ptr | +| deallocation.rs:229:13:229:21 | const_ptr | semmle.label | const_ptr | | deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | | deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | | deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 | diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index bca375f2429..a9199478a93 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -155,59 +155,59 @@ pub unsafe fn test_ptr_invalid_conditions(mode: i32) { let mut ptr = std::alloc::alloc(layout) as *mut MyObject; (*ptr).value = 0; // good - if mode == 121 { - ptr = std::ptr::null_mut(); // (causes a panic below) + if mode == 121 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } if ptr.is_null() { - let v = (*ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + let v = (*ptr).value; // $ Alert[rust/access-invalid-pointer] println!(" cond1 v = {v}"); } else { - let v = (*ptr).value; // good - unreachable with null pointer + let v = (*ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer println!(" cond2 v = {v}"); } - if mode == 122 { - ptr = std::ptr::null_mut(); // (causes a panic below) + if mode == 122 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } if !(ptr.is_null()) { - let v = (*ptr).value; // good - unreachable with null pointer + let v = (*ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer println!(" cond3 v = {v}"); } else { - let v = (*ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + let v = (*ptr).value; // $ Alert[rust/access-invalid-pointer] println!(" cond4 v = {v}"); } - if mode == 123 { - ptr = std::ptr::null_mut(); // (causes a panic below) + if mode == 123 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } - if ptr.is_null() || (*ptr).value == 0 { // good - deref is protected by short-circuiting + if ptr.is_null() || (*ptr).value == 0 { // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - deref is protected by short-circuiting println!(" cond5"); } - if ptr.is_null() || (*ptr).is_zero() { // good - deref is protected by short-circuiting + if ptr.is_null() || (*ptr).is_zero() { // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - deref is protected by short-circuiting println!(" cond6"); } - if !ptr.is_null() || (*ptr).value == 0 { // $ MISSING: Alert[rust/access-invalid-pointer] + if !ptr.is_null() || (*ptr).value == 0 { // $ Alert[rust/access-invalid-pointer] println!(" cond7"); } - if mode == 124 { - ptr = std::ptr::null_mut(); // (causes a panic below) + if mode == 124 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } - if ptr.is_null() && (*ptr).is_zero() { // $ MISSING: Alert[rust/access-invalid-pointer] + if ptr.is_null() && (*ptr).is_zero() { // $ Alert[rust/access-invalid-pointer] println!(" cond8"); } - if mode == 125 { - ptr = std::ptr::null_mut(); // (causes a panic below) + if mode == 125 { // (causes a panic below) + ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } - if (*ptr).is_zero() || ptr.is_null() { // $ MISSING: Alert[rust/access-invalid-pointer] + if (*ptr).is_zero() || ptr.is_null() { // $ Alert[rust/access-invalid-pointer] println!(" cond9"); } @@ -216,17 +216,17 @@ pub unsafe fn test_ptr_invalid_conditions(mode: i32) { let const_ptr; if mode == 126 { // (causes a panic below) - const_ptr = std::ptr::null_mut(); + const_ptr = std::ptr::null_mut(); // $ Source[rust/access-invalid-pointer] } else { const_ptr = std::alloc::alloc(layout) as *mut MyObject; (*const_ptr).value = 0; // good } if const_ptr.is_null() { - let v = (*const_ptr).value; // $ MISSING: Alert[rust/access-invalid-pointer] + let v = (*const_ptr).value; // $ Alert[rust/access-invalid-pointer] println!(" cond10 v = {v}"); } else { - let v = (*const_ptr).value; // good - unreachable with null pointer + let v = (*const_ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer println!(" cond11 v = {v}"); } } From 41a6bf079d0db669a3753a16c37cb372a0a0b7bd Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 13 Nov 2025 15:09:14 +0000 Subject: [PATCH 798/965] Rust: Add barrier for null pointer checks to the query. --- .../AccessInvalidPointerExtensions.qll | 7 ++++++ rust/ql/lib/codeql/rust/security/Barriers.qll | 24 +++++++++++++++++++ .../CWE-825/AccessInvalidPointer.expected | 3 --- .../security/CWE-825/deallocation.rs | 2 +- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll index 444db014209..034efd60b91 100644 --- a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.FlowSource private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.rust.dataflow.internal.Node +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting accesses to @@ -59,4 +60,10 @@ module AccessInvalidPointer { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "pointer-access") } } + + /** + * A barrier for invalid pointer access vulnerabilities for values found to be `null` in + * a comparison. + */ + private class NullCheckBarrier extends Barrier instanceof Barriers::NotNullCheckBarrier { } } diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 398e4f56712..edd97ec8519 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -8,6 +8,8 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.internal.TypeInference as TypeInference private import codeql.rust.internal.Type private import codeql.rust.frameworks.stdlib.Builtins +private import codeql.rust.controlflow.ControlFlowGraph as Cfg +private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * A node whose type is a numeric or boolean type, which may be an appropriate @@ -40,3 +42,25 @@ class IntegralOrBooleanTypeBarrier extends DataFlow::Node { ) } } + +/** + * Holds if guard expression `g` having result `branch` indicates that the + * sub-expression `node` is not null. For example when `ptr.is_null()` is + * `false`, we have that `ptr` is not null. + */ +private predicate notNullCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { + exists(MethodCallExpr call | + call.getStaticTarget().getName().getText() = "is_null" and + g = call.getACfgNode() and + node = call.getReceiver().getACfgNode() and + branch = false + ) +} + +/** + * A node representing a check that the value is not null, which may be an + * appropriate taint flow barrier for some queries. + */ +class NotNullCheckBarrier extends DataFlow::Node { + NotNullCheckBarrier() { this = DataFlow::BarrierGuard::getABarrierNode() } +} diff --git a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected index 7abb53a2dfb..6afe11ad012 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -26,7 +26,6 @@ | deallocation.rs:210:7:210:9 | ptr | deallocation.rs:199:9:199:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:199:9:199:26 | ...::null_mut | invalid | | deallocation.rs:210:7:210:9 | ptr | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:210:7:210:9 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:207:9:207:26 | ...::null_mut | invalid | | deallocation.rs:226:13:226:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:226:13:226:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | -| deallocation.rs:229:13:229:21 | const_ptr | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:229:13:229:21 | const_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:219:15:219:32 | ...::null_mut | invalid | | deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | | deallocation.rs:274:15:274:16 | p1 | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:274:15:274:16 | p1 | This operation dereferences a pointer that may be $@. | deallocation.rs:270:3:270:25 | ...::drop_in_place | invalid | | deallocation.rs:342:18:342:20 | ptr | deallocation.rs:336:3:336:25 | ...::drop_in_place | deallocation.rs:342:18:342:20 | ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:336:3:336:25 | ...::drop_in_place | invalid | @@ -81,7 +80,6 @@ edges | deallocation.rs:207:9:207:26 | ...::null_mut | deallocation.rs:207:9:207:28 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | | deallocation.rs:207:9:207:28 | ...::null_mut(...) | deallocation.rs:207:3:207:5 | ptr | provenance | | | deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:226:13:226:21 | const_ptr | provenance | | -| deallocation.rs:219:3:219:11 | const_ptr | deallocation.rs:229:13:229:21 | const_ptr | provenance | | | deallocation.rs:219:15:219:32 | ...::null_mut | deallocation.rs:219:15:219:34 | ...::null_mut(...) | provenance | Src:MaD:8 MaD:8 | | deallocation.rs:219:15:219:34 | ...::null_mut(...) | deallocation.rs:219:3:219:11 | const_ptr | provenance | | | deallocation.rs:270:3:270:25 | ...::drop_in_place | deallocation.rs:270:27:270:28 | [post] p1 | provenance | Src:MaD:6 MaD:6 | @@ -161,7 +159,6 @@ nodes | deallocation.rs:219:15:219:32 | ...::null_mut | semmle.label | ...::null_mut | | deallocation.rs:219:15:219:34 | ...::null_mut(...) | semmle.label | ...::null_mut(...) | | deallocation.rs:226:13:226:21 | const_ptr | semmle.label | const_ptr | -| deallocation.rs:229:13:229:21 | const_ptr | semmle.label | const_ptr | | deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | | deallocation.rs:270:3:270:25 | ...::drop_in_place | semmle.label | ...::drop_in_place | | deallocation.rs:270:27:270:28 | [post] p1 | semmle.label | [post] p1 | diff --git a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs index a9199478a93..073d03260b3 100644 --- a/rust/ql/test/query-tests/security/CWE-825/deallocation.rs +++ b/rust/ql/test/query-tests/security/CWE-825/deallocation.rs @@ -226,7 +226,7 @@ pub unsafe fn test_ptr_invalid_conditions(mode: i32) { let v = (*const_ptr).value; // $ Alert[rust/access-invalid-pointer] println!(" cond10 v = {v}"); } else { - let v = (*const_ptr).value; // $ SPURIOUS: Alert[rust/access-invalid-pointer] good - unreachable with null pointer + let v = (*const_ptr).value; // $ good - unreachable with null pointer println!(" cond11 v = {v}"); } } From 725899389bf2dfb8e7ccf92f2123d48731c2fc91 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:08:23 +0000 Subject: [PATCH 799/965] Rust: Clean up the query slightly. --- .../src/queries/security/CWE-825/AccessInvalidPointer.ql | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql b/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql index 5177e1fb0e0..3c10e2b197a 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessInvalidPointer.ql @@ -22,11 +22,13 @@ import AccessInvalidPointerFlow::PathGraph * A data flow configuration for accesses to invalid pointers. */ module AccessInvalidPointerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node node) { node instanceof AccessInvalidPointer::Source } + import AccessInvalidPointer - predicate isSink(DataFlow::Node node) { node instanceof AccessInvalidPointer::Sink } + predicate isSource(DataFlow::Node node) { node instanceof Source } - predicate isBarrier(DataFlow::Node barrier) { barrier instanceof AccessInvalidPointer::Barrier } + predicate isSink(DataFlow::Node node) { node instanceof Sink } + + predicate isBarrier(DataFlow::Node barrier) { barrier instanceof Barrier } predicate isBarrierOut(DataFlow::Node node) { // make sinks barriers so that we only report the closest instance From 7c8e44db8e2eae2820928b4ead6e9685be6f0572 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:09:57 +0000 Subject: [PATCH 800/965] Rust: Change note. --- rust/ql/src/change-notes/2025-17-11-access-invalid-pointer.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-17-11-access-invalid-pointer.md diff --git a/rust/ql/src/change-notes/2025-17-11-access-invalid-pointer.md b/rust/ql/src/change-notes/2025-17-11-access-invalid-pointer.md new file mode 100644 index 00000000000..bc7011dc98a --- /dev/null +++ b/rust/ql/src/change-notes/2025-17-11-access-invalid-pointer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `rust/access-invalid-pointer` query has been improved with new flow sources and barriers. From 81096131b6143a7580d42454125ef9c82ffd7ad8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:25:03 +0000 Subject: [PATCH 801/965] Rust: Correct + clarify qldoc. --- .../codeql/rust/security/AccessInvalidPointerExtensions.qll | 6 +++--- rust/ql/lib/codeql/rust/security/Barriers.qll | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll index 034efd60b91..7fb4e5d3615 100644 --- a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll @@ -62,8 +62,8 @@ module AccessInvalidPointer { } /** - * A barrier for invalid pointer access vulnerabilities for values found to be `null` in - * a comparison. + * A barrier for invalid pointer access vulnerabilities for values checked to + * be non-`null`. */ - private class NullCheckBarrier extends Barrier instanceof Barriers::NotNullCheckBarrier { } + private class NotNullCheckBarrier extends Barrier instanceof Barriers::NotNullCheckBarrier { } } diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index edd97ec8519..3323f729bb6 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -58,7 +58,7 @@ private predicate notNullCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolea } /** - * A node representing a check that the value is not null, which may be an + * A node representing a value checked to be non-null. This may be an * appropriate taint flow barrier for some queries. */ class NotNullCheckBarrier extends DataFlow::Node { From 18fa6799ce464a0f77f6ebeb573986eeea93967b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Nov 2025 16:38:07 +0000 Subject: [PATCH 802/965] Release preparation for version 2.23.6 --- actions/ql/lib/CHANGELOG.md | 4 +++ .../ql/lib/change-notes/released/0.4.21.md | 3 ++ actions/ql/lib/codeql-pack.release.yml | 2 +- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/CHANGELOG.md | 4 +++ .../ql/src/change-notes/released/0.6.13.md | 3 ++ actions/ql/src/codeql-pack.release.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/CHANGELOG.md | 30 ++++++++++------ .../2025-11-11-range-analysis-performance.md | 4 --- .../6.1.0.md} | 11 ++++-- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 +++ cpp/ql/src/change-notes/released/1.5.4.md | 3 ++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 +++ .../lib/change-notes/released/1.7.52.md | 3 ++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 +++ .../src/change-notes/released/1.7.52.md | 3 ++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 36 +++++++++++++------ .../2025-10-04-deprecate-controlsblock.md | 4 --- ...0-30-overlay-compilation-and-extraction.md | 5 --- .../2025-11-03-roslyn-and-binlog.md | 4 --- csharp/ql/lib/change-notes/released/5.4.0.md | 13 +++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 16 +++++++-- ...025-10-24-insecure-cookie-query-promote.md | 4 --- .../1.5.0.md} | 11 ++++-- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 +++ .../change-notes/released/1.0.35.md | 3 ++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 9 +++++ .../5.0.2.md} | 7 ++-- 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/1.4.9.md | 3 ++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 +++ java/ql/lib/change-notes/released/7.7.4.md | 3 ++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 7 ++++ .../1.10.0.md} | 9 ++--- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 +++ .../ql/lib/change-notes/released/2.6.15.md | 3 ++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 7 ++++ .../2.2.0.md} | 9 ++--- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 +++ .../change-notes/released/1.0.35.md | 3 ++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 6 ++++ .../5.0.0.md} | 6 ++-- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++ .../2025-10-22-adjust-query-severity.md | 4 --- python/ql/src/change-notes/released/1.7.0.md | 5 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 +++ ruby/ql/lib/change-notes/released/5.1.3.md | 3 ++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 6 ++++ .../2025-10-22-adjust-query-severity.md | 4 --- ruby/ql/src/change-notes/released/1.5.0.md | 5 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/CHANGELOG.md | 6 ++++ .../0.1.20.md} | 7 ++-- rust/ql/lib/codeql-pack.release.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/CHANGELOG.md | 6 ++++ .../0.1.20.md} | 7 ++-- rust/ql/src/codeql-pack.release.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/CHANGELOG.md | 4 +++ .../concepts/change-notes/released/0.0.9.md | 3 ++ shared/concepts/codeql-pack.release.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 +++ .../change-notes/released/2.0.19.md | 3 ++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 +++ .../dataflow/change-notes/released/2.0.19.md | 3 ++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 +++ shared/mad/change-notes/released/1.0.35.md | 3 ++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/CHANGELOG.md | 4 +++ .../quantum/change-notes/released/0.0.13.md | 3 ++ shared/quantum/codeql-pack.release.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 +++ .../change-notes/released/1.0.35.md | 3 ++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 +++ shared/regex/change-notes/released/1.0.35.md | 3 ++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 +++ shared/ssa/change-notes/released/2.0.11.md | 3 ++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 +++ .../change-notes/released/1.0.35.md | 3 ++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 +++ .../tutorial/change-notes/released/1.0.35.md | 3 ++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/CHANGELOG.md | 4 +++ .../typeflow/change-notes/released/1.0.35.md | 3 ++ shared/typeflow/codeql-pack.release.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/CHANGELOG.md | 4 +++ .../change-notes/released/0.0.16.md | 3 ++ shared/typeinference/codeql-pack.release.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 +++ .../change-notes/released/2.0.19.md | 3 ++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 +++ shared/typos/change-notes/released/1.0.35.md | 3 ++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 +++ shared/util/change-notes/released/2.0.22.md | 3 ++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/CHANGELOG.md | 4 +++ shared/xml/change-notes/released/1.0.35.md | 3 ++ shared/xml/codeql-pack.release.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 +++ shared/yaml/change-notes/released/1.0.35.md | 3 ++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ++++ .../6.1.0.md} | 7 ++-- 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/1.2.9.md | 3 ++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 171 files changed, 470 insertions(+), 164 deletions(-) create mode 100644 actions/ql/lib/change-notes/released/0.4.21.md create mode 100644 actions/ql/src/change-notes/released/0.6.13.md delete mode 100644 cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md rename cpp/ql/lib/change-notes/{2025-11-13-expanded.md => released/6.1.0.md} (52%) create mode 100644 cpp/ql/src/change-notes/released/1.5.4.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md delete mode 100644 csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md delete mode 100644 csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md create mode 100644 csharp/ql/lib/change-notes/released/5.4.0.md delete mode 100644 csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md rename csharp/ql/src/change-notes/{2025-11-14-guards-disjunctive.md => released/1.5.0.md} (58%) create mode 100644 go/ql/consistency-queries/change-notes/released/1.0.35.md rename go/ql/lib/change-notes/{2025-11-11-path-transformer.md => released/5.0.2.md} (94%) create mode 100644 go/ql/src/change-notes/released/1.4.9.md create mode 100644 java/ql/lib/change-notes/released/7.7.4.md rename java/ql/src/change-notes/{2025-10-22-adjust-query-severity.md => released/1.10.0.md} (66%) create mode 100644 javascript/ql/lib/change-notes/released/2.6.15.md rename javascript/ql/src/change-notes/{2025-10-22-adjust-query-severity.md => released/2.2.0.md} (66%) create mode 100644 misc/suite-helpers/change-notes/released/1.0.35.md rename python/ql/lib/change-notes/{2025-10-30-remove-points-to-from-cfg-and-expr.md => released/5.0.0.md} (87%) delete mode 100644 python/ql/src/change-notes/2025-10-22-adjust-query-severity.md create mode 100644 python/ql/src/change-notes/released/1.7.0.md create mode 100644 ruby/ql/lib/change-notes/released/5.1.3.md delete mode 100644 ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md create mode 100644 ruby/ql/src/change-notes/released/1.5.0.md rename rust/ql/lib/change-notes/{2025-11-05-poem.md => released/0.1.20.md} (55%) rename rust/ql/src/change-notes/{2025-10-31-barriers.md => released/0.1.20.md} (80%) create mode 100644 shared/concepts/change-notes/released/0.0.9.md create mode 100644 shared/controlflow/change-notes/released/2.0.19.md create mode 100644 shared/dataflow/change-notes/released/2.0.19.md create mode 100644 shared/mad/change-notes/released/1.0.35.md create mode 100644 shared/quantum/change-notes/released/0.0.13.md create mode 100644 shared/rangeanalysis/change-notes/released/1.0.35.md create mode 100644 shared/regex/change-notes/released/1.0.35.md create mode 100644 shared/ssa/change-notes/released/2.0.11.md create mode 100644 shared/threat-models/change-notes/released/1.0.35.md create mode 100644 shared/tutorial/change-notes/released/1.0.35.md create mode 100644 shared/typeflow/change-notes/released/1.0.35.md create mode 100644 shared/typeinference/change-notes/released/0.0.16.md create mode 100644 shared/typetracking/change-notes/released/2.0.19.md create mode 100644 shared/typos/change-notes/released/1.0.35.md create mode 100644 shared/util/change-notes/released/2.0.22.md create mode 100644 shared/xml/change-notes/released/1.0.35.md create mode 100644 shared/yaml/change-notes/released/1.0.35.md rename swift/ql/lib/change-notes/{2025-10-22-swift-6.2.1.md => released/6.1.0.md} (51%) create mode 100644 swift/ql/src/change-notes/released/1.2.9.md diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index ffe1cba8281..0ae66461fc7 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.21 + +No user-facing changes. + ## 0.4.20 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.21.md b/actions/ql/lib/change-notes/released/0.4.21.md new file mode 100644 index 00000000000..4457437acf2 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.21.md @@ -0,0 +1,3 @@ +## 0.4.21 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index 380b2d09423..eb3b038a715 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.20 +lastReleaseVersion: 0.4.21 diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 295d925c318..22e1d6db0fc 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.21-dev +version: 0.4.21 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index c7253227b7c..b26f2472b1d 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.13 + +No user-facing changes. + ## 0.6.12 No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.13.md b/actions/ql/src/change-notes/released/0.6.13.md new file mode 100644 index 00000000000..0dad2009c46 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.13.md @@ -0,0 +1,3 @@ +## 0.6.13 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 28c22ccab7c..4568aee7f4f 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.12 +lastReleaseVersion: 0.6.13 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index b612696b816..78ca2aa2073 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.13-dev +version: 0.6.13 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 0f158cd3fb5..450185adf89 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 6.1.0 + +### New Features + +* New predicates `getAnExpandedArgument` and `getExpandedArgument` were added to the `Compilation` class, yielding compilation arguments after expansion of response files. + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. + ## 6.0.1 No user-facing changes. @@ -259,8 +269,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `hasQualifiedName` and `isDefined` predicates from the `Declaration` class, use `hasGlobalName` and `hasDefinition` respectively instead. * Deleted the `getFullSignature` predicate from the `Function` class, use `getIdentityString(Declaration)` from `semmle.code.cpp.Print` instead. * Deleted the deprecated `freeCall` predicate from `Alloc.qll`. Use `DeallocationExpr` instead. @@ -294,7 +304,7 @@ No user-facing changes. * A `getTemplateClass` predicate was added to the `DeductionGuide` class to get the class template for which the deduction guide is a guide. * An `isExplicit` predicate was added to the `Function` class that determines whether the function was declared as explicit. * A `getExplicitExpr` predicate was added to the `Function` class that yields the constant boolean expression (if any) that conditionally determines whether the function is explicit. -* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. +* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete. ### Minor Analysis Improvements @@ -372,9 +382,9 @@ No user-facing changes. ### New Features * Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. * Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. * Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. @@ -490,7 +500,7 @@ No user-facing changes. * Functions that do not return due to calling functions that don't return (e.g. `exit`) are now detected as non-returning in the IR and dataflow. * Treat functions that reach the end of the function as returning in the IR. - They used to be treated as unreachable but it is allowed in C. + They used to be treated as unreachable but it is allowed in C. * The `DataFlow::asDefiningArgument` predicate now takes its argument from the range starting at `1` instead of `2`. Queries that depend on the single-parameter version of `DataFlow::asDefiningArgument` should have their arguments updated accordingly. ## 0.9.3 @@ -539,7 +549,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -733,7 +743,7 @@ No user-facing changes. ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -750,7 +760,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features @@ -849,7 +859,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md b/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md deleted file mode 100644 index f24ab4b87fe..00000000000 --- a/cpp/ql/lib/change-notes/2025-11-11-range-analysis-performance.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2025-11-13-expanded.md b/cpp/ql/lib/change-notes/released/6.1.0.md similarity index 52% rename from cpp/ql/lib/change-notes/2025-11-13-expanded.md rename to cpp/ql/lib/change-notes/released/6.1.0.md index 82d0a1f5105..a904793a03f 100644 --- a/cpp/ql/lib/change-notes/2025-11-13-expanded.md +++ b/cpp/ql/lib/change-notes/released/6.1.0.md @@ -1,4 +1,9 @@ ---- -category: feature ---- +## 6.1.0 + +### New Features + * New predicates `getAnExpandedArgument` and `getExpandedArgument` were added to the `Compilation` class, yielding compilation arguments after expansion of response files. + +### Bug Fixes + +* Improve performance of the range analysis in cases where it would otherwise take an exorbitant amount of time. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index d1f3c68c812..22247782f3e 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.1 +lastReleaseVersion: 6.1.0 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8b211353323..c2f8cc98819 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.2-dev +version: 6.1.0 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 880cab8a58d..58677d61a2a 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.4 + +No user-facing changes. + ## 1.5.3 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.5.4.md b/cpp/ql/src/change-notes/released/1.5.4.md new file mode 100644 index 00000000000..5ff5ac8ebb7 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.5.4.md @@ -0,0 +1,3 @@ +## 1.5.4 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 232224b0e26..c216828ee1c 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.3 +lastReleaseVersion: 1.5.4 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 39cdb717ca7..8e062d290b5 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.4-dev +version: 1.5.4 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index a25c349e35e..de67deb4d32 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.52 + +No user-facing changes. + ## 1.7.51 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md new file mode 100644 index 00000000000..07bec2a826a --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.52.md @@ -0,0 +1,3 @@ +## 1.7.52 + +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 26376c0cebb..31d9cd574dd 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.51 +lastReleaseVersion: 1.7.52 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 7877ad717e2..80e9343408f 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.52-dev +version: 1.7.52 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index a25c349e35e..de67deb4d32 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.52 + +No user-facing changes. + ## 1.7.51 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md new file mode 100644 index 00000000000..07bec2a826a --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.52.md @@ -0,0 +1,3 @@ +## 1.7.52 + +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 26376c0cebb..31d9cd574dd 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.51 +lastReleaseVersion: 1.7.52 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 6427ecbb935..f107eb7dee6 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.52-dev +version: 1.7.52 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 20b1c03d722..962b6ecd184 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 5.4.0 + +### Deprecated APIs + +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. + +### New Features + +* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. + +### Minor Analysis Improvements + +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. + ## 5.3.0 ### Deprecated APIs @@ -6,7 +20,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements @@ -143,7 +157,7 @@ No user-facing changes. * Added `remote` flow source models for properties of Blazor components annotated with any of the following attributes from `Microsoft.AspNetCore.Components`: - `[SupplyParameterFromForm]` - `[SupplyParameterFromQuery]` -* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. +* Added the constructor and explicit cast operator of `Microsoft.AspNetCore.Components.MarkupString` as an `html-injection` sink. This will help catch cross-site scripting resulting from using `MarkupString`. * Added flow summaries for the `Microsoft.AspNetCore.Mvc.Controller::View` method. * The data flow library has been updated to track types in a slightly different way: The type of the tainted data (which may be stored into fields, etc.) is tracked more precisely, while the types of intermediate containers for nested contents is tracked less precisely. This may have a slight effect on false positives for complex flow paths. * The C# extractor now supports *basic* extraction of .NET 9 projects. There might be limited support for extraction of code using the new C# 13 language features. @@ -163,7 +177,7 @@ No user-facing changes. - `System.Web.HttpUtility::ParseQueryString` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseQuery` - `Microsoft.AspNetCore.WebUtilities.QueryHelpers::ParseNullableQuery` -* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. +* Added `js-interop` sinks for the `InvokeAsync` and `InvokeVoidAsync` methods of `Microsoft.JSInterop.IJSRuntime`, which can run arbitrary JavaScript. ## 3.1.1 @@ -201,8 +215,8 @@ No user-facing changes. ### Breaking Changes -* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. -* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted many deprecated dataflow configurations based on `DataFlow::Configuration`. * Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. ### Minor Analysis Improvements @@ -451,7 +465,7 @@ No user-facing changes. ### New Features -* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. +* The `DataFlow::StateConfigSig` signature module has gained default implementations for `isBarrier/2` and `isAdditionalFlowStep/4`. Hence it is no longer needed to provide `none()` implementations of these predicates if they are not needed. ### Minor Analysis Improvements @@ -586,7 +600,7 @@ No user-facing changes. * Attributes on methods in CIL are now extracted (Bugfix). * Support for `static virtual` and `static abstract` interface members. -* Support for *operators* in interface definitions. +* Support for *operators* in interface definitions. * C# 11: Added support for the unsigned right shift `>>>` and unsigned right shift assignment `>>>=` operators. * Query id's have been aligned such that they are prefixed with `cs` instead of `csharp`. @@ -626,13 +640,13 @@ No user-facing changes. ### Minor Analysis Improvements * `DateTime` expressions are now considered simple type sanitizers. This affects a wide range of security queries. -* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. +* ASP.NET Core controller definition has been made more precise. The amount of introduced taint sources or eliminated false positives should be low though, since the most common pattern is to derive all user defined ASP.NET Core controllers from the standard Controller class, which is not affected. ## 0.4.0 ### Deprecated APIs -* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Some classes/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Bug Fixes @@ -645,7 +659,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. +* Many classes/predicates/modules with upper-case acronyms in their name have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### Minor Analysis Improvements @@ -692,7 +706,7 @@ No user-facing changes. ### Deprecated APIs -* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. +* Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias. ### New Features diff --git a/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md b/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md deleted file mode 100644 index a3c69932917..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: deprecated ---- -* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. diff --git a/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md b/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md deleted file mode 100644 index 0f5005a22a2..00000000000 --- a/csharp/ql/lib/change-notes/2025-10-30-overlay-compilation-and-extraction.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: feature ---- - -* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. diff --git a/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md b/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md deleted file mode 100644 index 92231d3be2f..00000000000 --- a/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. diff --git a/csharp/ql/lib/change-notes/released/5.4.0.md b/csharp/ql/lib/change-notes/released/5.4.0.md new file mode 100644 index 00000000000..478e6deb414 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.4.0.md @@ -0,0 +1,13 @@ +## 5.4.0 + +### Deprecated APIs + +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. + +### New Features + +* Initial support for incremental C# databases via `codeql database create --overlay-base`/`--overlay-changes`. + +### Minor Analysis Improvements + +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index b0a1c83e5bc..afb2156eaa2 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.3.0 +lastReleaseVersion: 5.4.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 3ecdad08291..3c3ae516a56 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.1-dev +version: 5.4.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 8993b453543..b7bef32f207 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,8 +1,18 @@ +## 1.5.0 + +### New Queries + +* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. + +### Minor Analysis Improvements + +* An improvement to the Guards library for recognizing disjunctions means improved precision for `cs/constant-condition`, `cs/inefficient-containskey`, and `cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. + ## 1.4.3 ### Minor Analysis Improvements -* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. ## 1.4.2 @@ -170,7 +180,7 @@ No user-facing changes. ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. ## 1.0.10 @@ -284,7 +294,7 @@ No user-facing changes. ### Minor Analysis Improvements -* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. +* Fixed a Log forging false positive when using `String.Replace` to sanitize the input. * Fixed a URL redirection from remote source false positive when guarding a redirect with `HttpRequestBase.IsUrlLocalToHost()` ## 0.8.5 diff --git a/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md b/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md deleted file mode 100644 index 6b3d8d5b259..00000000000 --- a/csharp/ql/src/change-notes/2025-10-24-insecure-cookie-query-promote.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. diff --git a/csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md b/csharp/ql/src/change-notes/released/1.5.0.md similarity index 58% rename from csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md rename to csharp/ql/src/change-notes/released/1.5.0.md index 015f16f8d09..16106aaca11 100644 --- a/csharp/ql/src/change-notes/2025-11-14-guards-disjunctive.md +++ b/csharp/ql/src/change-notes/released/1.5.0.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 1.5.0 + +### New Queries + +* The `cs/web/cookie-secure-not-set` and `cs/web/cookie-httponly-not-set` queries have been promoted from experimental to the main query pack. + +### Minor Analysis Improvements + * An improvement to the Guards library for recognizing disjunctions means improved precision for `cs/constant-condition`, `cs/inefficient-containskey`, and `cs/dereferenced-value-may-be-null`. The two former can have additional findings, and the latter will have fewer false positives. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 08f88b689fb..639f80c4341 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.3 +lastReleaseVersion: 1.5.0 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 2597e99f55b..4834c59d8fa 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.4-dev +version: 1.5.0 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 870695d684c..c27711a0c4c 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.35.md b/go/ql/consistency-queries/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +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 b736654032c..9493cf42a28 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index be82fc786d2..ce049f78027 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: 1.0.35-dev +version: 1.0.35 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e2d2a71f6bd..553cccf4eab 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,12 @@ +## 5.0.2 + +### Bug Fixes + +* Some fixes relating to use of path transformers when extracting a database: + * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. + * The environment variable `CODEQL_PATH_TRANSFORMER` is now recognized, in addition to `SEMMLE_PATH_TRANSFORMER`. + * Fixed some cases where the extractor emitted paths without applying the path transformer. + ## 5.0.1 No user-facing changes. diff --git a/go/ql/lib/change-notes/2025-11-11-path-transformer.md b/go/ql/lib/change-notes/released/5.0.2.md similarity index 94% rename from go/ql/lib/change-notes/2025-11-11-path-transformer.md rename to go/ql/lib/change-notes/released/5.0.2.md index c36cf8fb83e..1c95b433dac 100644 --- a/go/ql/lib/change-notes/2025-11-11-path-transformer.md +++ b/go/ql/lib/change-notes/released/5.0.2.md @@ -1,6 +1,7 @@ ---- -category: fix ---- +## 5.0.2 + +### Bug Fixes + * Some fixes relating to use of path transformers when extracting a database: * Fixed a problem where the path transformer would be ignored when extracting older codebases that predate the use of Go modules. * The environment variable `CODEQL_PATH_TRANSFORMER` is now recognized, in addition to `SEMMLE_PATH_TRANSFORMER`. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index ae7df5e18b7..3940dee0f32 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.0.1 +lastReleaseVersion: 5.0.2 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 058e65978f2..ec804b7aee5 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.2-dev +version: 5.0.2 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 786164b5fe4..82f6633fef9 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.9 + +No user-facing changes. + ## 1.4.8 No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.4.9.md b/go/ql/src/change-notes/released/1.4.9.md new file mode 100644 index 00000000000..23b8222662c --- /dev/null +++ b/go/ql/src/change-notes/released/1.4.9.md @@ -0,0 +1,3 @@ +## 1.4.9 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 16e6425ae7e..c1bf629045f 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.4.9 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a0baaa7836..d273ea1ddfc 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.9-dev +version: 1.4.9 groups: - go - queries diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index e261dbee59e..10dfe5ce35b 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 7.7.4 + +No user-facing changes. + ## 7.7.3 No user-facing changes. diff --git a/java/ql/lib/change-notes/released/7.7.4.md b/java/ql/lib/change-notes/released/7.7.4.md new file mode 100644 index 00000000000..47cd244f789 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.7.4.md @@ -0,0 +1,3 @@ +## 7.7.4 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 6856106e771..7b894469209 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.7.3 +lastReleaseVersion: 7.7.4 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index bcfc194a4cb..8a3414dcb12 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.4-dev +version: 7.7.4 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index ed02fdc5bb2..9e82554241e 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.10.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. +* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. + ## 1.9.0 ### New Queries diff --git a/java/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/java/ql/src/change-notes/released/1.10.0.md similarity index 66% rename from java/ql/src/change-notes/2025-10-22-adjust-query-severity.md rename to java/ql/src/change-notes/released/1.10.0.md index 61cc9402a78..6cfa49bc2c4 100644 --- a/java/ql/src/change-notes/2025-10-22-adjust-query-severity.md +++ b/java/ql/src/change-notes/released/1.10.0.md @@ -1,5 +1,6 @@ ---- -category: queryMetadata ---- +## 1.10.0 + +### Query Metadata Changes + * Reduced the `security-severity` score of the `java/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. -* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file +* Reduced the `security-severity` score of the `java/insecure-cookie` query from 5.0 to 4.0 to better reflect its impact. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index df17dc3a366..753e9ac2844 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.9.0 +lastReleaseVersion: 1.10.0 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 98f0bdd5710..3a4bf16b232 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.1-dev +version: 1.10.0 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 9f27fdae99c..7ec6b99fd99 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.6.15 + +No user-facing changes. + ## 2.6.14 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/2.6.15.md b/javascript/ql/lib/change-notes/released/2.6.15.md new file mode 100644 index 00000000000..f69028c6891 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/2.6.15.md @@ -0,0 +1,3 @@ +## 2.6.15 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 022aeff4e02..cafb64b8792 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.14 +lastReleaseVersion: 2.6.15 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index bd19febdfaa..de43ec0c7ad 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.15-dev +version: 2.6.15 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 4a453506818..f52156dc1b9 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2.2.0 + +### Query Metadata Changes + +* Increased the `security-severity` score of the `js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. +* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 2.1.3 No user-facing changes. diff --git a/javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/javascript/ql/src/change-notes/released/2.2.0.md similarity index 66% rename from javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md rename to javascript/ql/src/change-notes/released/2.2.0.md index ca81037f44b..6a60b337eef 100644 --- a/javascript/ql/src/change-notes/2025-10-22-adjust-query-severity.md +++ b/javascript/ql/src/change-notes/released/2.2.0.md @@ -1,5 +1,6 @@ ---- -category: queryMetadata ---- +## 2.2.0 + +### Query Metadata Changes + * Increased the `security-severity` score of the `js/xss-through-dom` query from 6.1 to 7.8 to align with other XSS queries. -* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file +* Reduced the `security-severity` score of the `js/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 345fb0c73a4..2f308354195 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.1.3 +lastReleaseVersion: 2.2.0 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 93dd9cf7ae7..d3adb5a5207 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.4-dev +version: 2.2.0 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 203d289a673..b273c2953fd 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.35.md b/misc/suite-helpers/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index e3283b5dc3f..b3316643de4 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.35-dev +version: 1.0.35 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index df8a66ca0e6..67b8cece821 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 5.0.0 + +### Breaking Changes + +- The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. + ## 4.1.0 ### New Features diff --git a/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md b/python/ql/lib/change-notes/released/5.0.0.md similarity index 87% rename from python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md rename to python/ql/lib/change-notes/released/5.0.0.md index 9b8eef6bcba..ae6a34880e0 100644 --- a/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md +++ b/python/ql/lib/change-notes/released/5.0.0.md @@ -1,5 +1,5 @@ ---- -category: breaking ---- +## 5.0.0 + +### Breaking Changes - The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index d5b1bf88d10..c9e54136ca5 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.0 +lastReleaseVersion: 5.0.0 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index bb28a8f6315..fd765f7c385 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.1-dev +version: 5.0.0 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 65fd05e047b..1496c93adc7 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.7.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 1.6.8 ### Minor Analysis Improvements diff --git a/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md deleted file mode 100644 index bc314358a6f..00000000000 --- a/python/ql/src/change-notes/2025-10-22-adjust-query-severity.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file diff --git a/python/ql/src/change-notes/released/1.7.0.md b/python/ql/src/change-notes/released/1.7.0.md new file mode 100644 index 00000000000..92850b2e464 --- /dev/null +++ b/python/ql/src/change-notes/released/1.7.0.md @@ -0,0 +1,5 @@ +## 1.7.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `py/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index fbc11aa62b7..d1184cc6750 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.8 +lastReleaseVersion: 1.7.0 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 7280bbcb67c..0c4bd654b0b 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.9-dev +version: 1.7.0 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a99e4017789..1a4f011d531 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.1.3 + +No user-facing changes. + ## 5.1.2 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/5.1.3.md b/ruby/ql/lib/change-notes/released/5.1.3.md new file mode 100644 index 00000000000..9af1eab14f3 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/5.1.3.md @@ -0,0 +1,3 @@ +## 5.1.3 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index d21c12fbe7f..8ffbc76d58a 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.2 +lastReleaseVersion: 5.1.3 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 3a400018dec..dba4b173bf2 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.3-dev +version: 5.1.3 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 282fd284635..300aa213b5d 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.5.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. + ## 1.4.8 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md b/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md deleted file mode 100644 index 4da73769e27..00000000000 --- a/ruby/ql/src/change-notes/2025-10-22-adjust-query-severity.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/released/1.5.0.md b/ruby/ql/src/change-notes/released/1.5.0.md new file mode 100644 index 00000000000..491a3bf9ee4 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.5.0.md @@ -0,0 +1,5 @@ +## 1.5.0 + +### Query Metadata Changes + +* Reduced the `security-severity` score of the `rb/overly-large-range` query from 5.0 to 4.0 to better reflect its impact. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 16e6425ae7e..639f80c4341 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.8 +lastReleaseVersion: 1.5.0 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 37c9e4be522..a581cc8866d 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.9-dev +version: 1.5.0 groups: - ruby - queries diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 7e8575b03be..7dd8b44f124 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.20 + +### Minor Analysis Improvements + +* Added models for cookie methods in the `poem` crate. + ## 0.1.19 ### Major Analysis Improvements diff --git a/rust/ql/lib/change-notes/2025-11-05-poem.md b/rust/ql/lib/change-notes/released/0.1.20.md similarity index 55% rename from rust/ql/lib/change-notes/2025-11-05-poem.md rename to rust/ql/lib/change-notes/released/0.1.20.md index b71e52a8139..12d4a7a3d5a 100644 --- a/rust/ql/lib/change-notes/2025-11-05-poem.md +++ b/rust/ql/lib/change-notes/released/0.1.20.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.20 + +### Minor Analysis Improvements + * Added models for cookie methods in the `poem` crate. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index de6e4c49068..9910e8d039f 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.20 diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index 3c045cd83e5..0a00fef81b0 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.20-dev +version: 0.1.20 groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index 2b0c54fc057..d292205bfdc 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.20 + +### Minor Analysis Improvements + +* Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. + ## 0.1.19 ### Minor Analysis Improvements diff --git a/rust/ql/src/change-notes/2025-10-31-barriers.md b/rust/ql/src/change-notes/released/0.1.20.md similarity index 80% rename from rust/ql/src/change-notes/2025-10-31-barriers.md rename to rust/ql/src/change-notes/released/0.1.20.md index 1504380d8d0..a29940bfb7c 100644 --- a/rust/ql/src/change-notes/2025-10-31-barriers.md +++ b/rust/ql/src/change-notes/released/0.1.20.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.1.20 + +### Minor Analysis Improvements + * Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index de6e4c49068..9910e8d039f 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.19 +lastReleaseVersion: 0.1.20 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index a26c9d35de5..fcf86c7e21f 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.20-dev +version: 0.1.20 groups: - rust - queries diff --git a/shared/concepts/CHANGELOG.md b/shared/concepts/CHANGELOG.md index 4d0898b90e4..ab7c158c25b 100644 --- a/shared/concepts/CHANGELOG.md +++ b/shared/concepts/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/concepts/change-notes/released/0.0.9.md b/shared/concepts/change-notes/released/0.0.9.md new file mode 100644 index 00000000000..c9e17c6d6cf --- /dev/null +++ b/shared/concepts/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/concepts/codeql-pack.release.yml b/shared/concepts/codeql-pack.release.yml index 58fdc6b45de..ecdd64fbab8 100644 --- a/shared/concepts/codeql-pack.release.yml +++ b/shared/concepts/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index f76c1f2ae45..289b9d531da 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.9-dev +version: 0.0.9 groups: shared library: true dependencies: diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index c5b9b9d696a..d2961b51483 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.19.md b/shared/controlflow/change-notes/released/2.0.19.md new file mode 100644 index 00000000000..b37b6798b12 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 16342205c73..4aecf1e1f86 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.19 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index fdf7de8e6a7..a046376584b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.19-dev +version: 2.0.19 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index f963117ea88..ff6b9243d64 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.19.md b/shared/dataflow/change-notes/released/2.0.19.md new file mode 100644 index 00000000000..b37b6798b12 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 16342205c73..4aecf1e1f86 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.19 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 7f969fdef42..d1cddb65806 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.19-dev +version: 2.0.19 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index b0b444f8c41..b5ca37028e4 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.35.md b/shared/mad/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 13a5b8507b3..54662518ac6 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 83a42fb0551..29ece641a7e 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.13 + +No user-facing changes. + ## 0.0.12 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.13.md b/shared/quantum/change-notes/released/0.0.13.md new file mode 100644 index 00000000000..f679eaf0313 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.13.md @@ -0,0 +1,3 @@ +## 0.0.13 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index 997fb8da83c..044e54e4f7e 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.13 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 0cc0fbad906..7aa341ed298 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.13-dev +version: 0.0.13 groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 640d26270e1..f433c424cfe 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.35.md b/shared/rangeanalysis/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 24b697d1f49..acfe26c3d74 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 1e3fb3c306c..69cf5cdad0e 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.35.md b/shared/regex/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f66b9d743f6..7c883c5a348 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 2d8087cd96c..5cbc5a2ebca 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.11 + +No user-facing changes. + ## 2.0.10 No user-facing changes. diff --git a/shared/ssa/change-notes/released/2.0.11.md b/shared/ssa/change-notes/released/2.0.11.md new file mode 100644 index 00000000000..b3d110bcba5 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.11.md @@ -0,0 +1,3 @@ +## 2.0.11 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 96ea0220a69..3cbe73b4cad 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.10 +lastReleaseVersion: 2.0.11 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 0aada9508ee..9c7f6f2ac2a 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.11-dev +version: 2.0.11 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 870695d684c..c27711a0c4c 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.35.md b/shared/threat-models/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 4bb9cb4cb5f..02bfe21bf76 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.35-dev +version: 1.0.35 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 23fd78f42e5..33db936cccc 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.35.md b/shared/tutorial/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index fa53c0be99f..658dbc8c816 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: 1.0.35-dev +version: 1.0.35 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index d95faf69864..04ce591c7d2 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.35.md b/shared/typeflow/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 94cae6f26a6..b0d79695965 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 4f4b3189bb4..28235d47f61 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.16 + +No user-facing changes. + ## 0.0.15 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.16.md b/shared/typeinference/change-notes/released/0.0.16.md new file mode 100644 index 00000000000..62b5521ea01 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.16.md @@ -0,0 +1,3 @@ +## 0.0.16 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index dff35216fc6..a49f7be4cff 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.15 +lastReleaseVersion: 0.0.16 diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 00008849702..485c6284030 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.16-dev +version: 0.0.16 groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 4edafe87290..0d3ff4a1df1 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.19 + +No user-facing changes. + ## 2.0.18 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.19.md b/shared/typetracking/change-notes/released/2.0.19.md new file mode 100644 index 00000000000..b37b6798b12 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.19.md @@ -0,0 +1,3 @@ +## 2.0.19 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 16342205c73..4aecf1e1f86 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.18 +lastReleaseVersion: 2.0.19 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 0c588182911..d804fa00748 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.19-dev +version: 2.0.19 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 9fbdb39d493..e38e1645eb5 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.35.md b/shared/typos/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index b876c84bbe3..94ec6653e8b 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 88679dd6846..13de50b7321 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.22 + +No user-facing changes. + ## 2.0.21 No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.22.md b/shared/util/change-notes/released/2.0.22.md new file mode 100644 index 00000000000..8a2611adad2 --- /dev/null +++ b/shared/util/change-notes/released/2.0.22.md @@ -0,0 +1,3 @@ +## 2.0.22 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a572e88bffd..980bdfe195b 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.21 +lastReleaseVersion: 2.0.22 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 4d4b671071e..aefbed94437 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.22-dev +version: 2.0.22 groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index ff67592d22b..25cba5db417 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.35.md b/shared/xml/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 40a7eadd828..7fa5e1d171e 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index fb623a1f26c..daf8d92d00a 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.35 + +No user-facing changes. + ## 1.0.34 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.35.md b/shared/yaml/change-notes/released/1.0.35.md new file mode 100644 index 00000000000..c539ed2d3b1 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.35.md @@ -0,0 +1,3 @@ +## 1.0.35 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index b736654032c..9493cf42a28 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.34 +lastReleaseVersion: 1.0.35 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index a1af32ac079..fd6a84b1693 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.35-dev +version: 1.0.35 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b1b958708e0..a1224ca4a8c 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 6.1.0 + +### Major Analysis Improvements + +* Upgraded to allow analysis of Swift 6.2.1. + ## 6.0.0 ### Breaking Changes diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md b/swift/ql/lib/change-notes/released/6.1.0.md similarity index 51% rename from swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md rename to swift/ql/lib/change-notes/released/6.1.0.md index 42a738ff746..2c16ed106e6 100644 --- a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md +++ b/swift/ql/lib/change-notes/released/6.1.0.md @@ -1,4 +1,5 @@ ---- -category: majorAnalysis ---- +## 6.1.0 + +### Major Analysis Improvements + * Upgraded to allow analysis of Swift 6.2.1. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index f8c4fa43ccb..22247782f3e 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 6.0.0 +lastReleaseVersion: 6.1.0 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index ba8c8aac044..84ff9e5061a 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.1-dev +version: 6.1.0 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 99b5491b9db..ac02b32dc56 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.9 + +No user-facing changes. + ## 1.2.8 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/1.2.9.md b/swift/ql/src/change-notes/released/1.2.9.md new file mode 100644 index 00000000000..a928703e4be --- /dev/null +++ b/swift/ql/src/change-notes/released/1.2.9.md @@ -0,0 +1,3 @@ +## 1.2.9 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index a49a92ee5ab..96443e87f0d 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.8 +lastReleaseVersion: 1.2.9 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index d5a55b365f1..cf2c5ccfc84 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.9-dev +version: 1.2.9 groups: - swift - queries From 47ac4dd1dcdaab4f6cbd0312a63df060225747e0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 17 Nov 2025 19:21:37 +0000 Subject: [PATCH 803/965] C++: Add 'nomagic' to 'getParameter'. --- cpp/ql/lib/semmle/code/cpp/Function.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/Function.qll b/cpp/ql/lib/semmle/code/cpp/Function.qll index 8ddb07a868e..10b156e3fb6 100644 --- a/cpp/ql/lib/semmle/code/cpp/Function.qll +++ b/cpp/ql/lib/semmle/code/cpp/Function.qll @@ -171,12 +171,14 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function { * Gets the nth parameter of this function. There is no result for the * implicit `this` parameter, and there is no `...` varargs pseudo-parameter. */ + pragma[nomagic] Parameter getParameter(int n) { params(unresolveElement(result), underlyingElement(this), n, _) } /** * Gets a parameter of this function. There is no result for the implicit * `this` parameter, and there is no `...` varargs pseudo-parameter. */ + pragma[nomagic] Parameter getAParameter() { params(unresolveElement(result), underlyingElement(this), _, _) } /** From 63390be18583b27cd03f47d09eedf5df87f113bc Mon Sep 17 00:00:00 2001 From: Jon Janego Date: Mon, 17 Nov 2025 14:24:35 -0600 Subject: [PATCH 804/965] Changedocs for 2.23.5 --- .../codeql-changelog/codeql-cli-2.23.1.rst | 4 +- .../codeql-changelog/codeql-cli-2.23.5.rst | 134 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 3 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst index ff22a3f647c..27f1eee84ed 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst @@ -88,7 +88,7 @@ JavaScript/TypeScript * Data flow is now tracked through the :code:`Promise.try` and :code:`Array.prototype.with` functions. * Query :code:`js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. * The query :code:`js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as :code:`Object.keys()`. -* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__! +* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__\ ! Python """""" @@ -126,7 +126,7 @@ Golang """""" * The second argument of the :code:`CreateTemp` function, from the :code:`os` package, is no longer a path-injection sink due to proper sanitization by Go. -* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or ``\`` to the beginning. +* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or :code:`\` to the beginning. Java/Kotlin """"""""""" diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst new file mode 100644 index 00000000000..9022a09444f --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst @@ -0,0 +1,134 @@ +.. _codeql-cli-2.23.5: + +========================== +CodeQL 2.23.5 (2025-11-13) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.5 runs a total of 483 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 3 security queries have been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* In order to make a :code:`@kind path-problem` query diff-informed, the :code:`getASelectedSourceLocation` and :code:`getASelectedSinkLocation` predicates in the dataflow configuration now need to be overridden to always return the location of the source/sink *in addition to* any other locations that are selected by the query. See the `QLdoc `__ for more details. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* the :code:`cs/web/missing-x-frame-options` query now correctly handles configuration nested in root :code:`` elements. + +Java/Kotlin +""""""""""" + +* Calls to :code:`String.matches` are now treated as sanitizers for the :code:`java/ssrf` query. + +Python +"""""" + +* The :code:`py/insecure-cookie` query has been split into multiple queries; with :code:`py/insecure-cookie` checking for cases in which :code:`Secure` flag is not set, :code:`py/client-exposed-cookie` checking for cases in which the :code:`HttpOnly` flag is not set, and the :code:`py/samesite-none` query checking for cases in which the :code:`SameSite` attribute is set to :code:`None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + +Rust +"""" + +* The "Low Rust analysis quality" query (:code:`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + +New Queries +~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The :code:`java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, :code:`java/escaping`, to detect values escaping from classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/not-threadsafe`, to detect data races in classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/safe-publication`, to detect unsafe publication in classes marked as :code:`@ThreadSafe`. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Swift +""""" + +* The :code:`OpenedArchetypeType` class has been renamed as :code:`ExistentialArchetypeType`. +* The :code:`OtherAvailabilitySpec` class has been removed. Use :code:`AvailabilitySpec::isWildcard` instead. +* The :code:`PlatformVersionAvailabilitySpec` has been removed. Use :code:`AvailabilitySpec::getPlatform` and :code:`AvailabilitySpec::getVersion` instead. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for :code:`cs/inefficient-containskey` and :code:`cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: :code:`cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, :code:`cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, :code:`cs/dereferenced-value-may-be-null` has been changed from a :code:`path-problem` query to a :code:`problem` query, so paths are no longer reported for this query. + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + +Rust +"""" + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the :code:`actix-web` web framework. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Added tracer support for macOS and Linux when the .NET CLI (:code:`dotnet`) directly invokes the C# compiler (:code:`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (:code:`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + +Rust +"""" + +* Added :code:`ExtractedFile::hasSemantics` and :code:`ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the :code:`mysql` and :code:`mysql_async` libraries. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* The class :code:`AbstractValue` in the :code:`Guards` library has been deprecated and replaced with the class :code:`GuardValue`. + +New Features +~~~~~~~~~~~~ + +Python +"""""" + +* Initial support for incremental Python databases via :code:`codeql database create --overlay-base`\ /\ :code:`--overlay-changes`. + +Swift +""""" + +* Added AST nodes :code:`UsingDecl`, :code:`UnsafeExpr`, and :code:`InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates :code:`isDistributedGet`, :code:`isRead2`, :code:`isModify2`, and :code:`isInit` to the :code:`Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate :code:`isApply` to the :code:`KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 4b3e1f5bb98..e48181dc026 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here Date: Mon, 17 Nov 2025 14:30:45 -0600 Subject: [PATCH 805/965] adding in 2.23.1 changes so they stay the same --- .../codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst index 27f1eee84ed..78e5e367bce 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst @@ -88,7 +88,7 @@ JavaScript/TypeScript * Data flow is now tracked through the :code:`Promise.try` and :code:`Array.prototype.with` functions. * Query :code:`js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. * The query :code:`js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as :code:`Object.keys()`. -* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__\ ! +* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__ ! Python """""" @@ -126,7 +126,7 @@ Golang """""" * The second argument of the :code:`CreateTemp` function, from the :code:`os` package, is no longer a path-injection sink due to proper sanitization by Go. -* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or :code:`\` to the beginning. +* The query "Uncontrolled data used in path expression" (:code:`go/path-injection`) now detects sanitizing a path by adding :code:`os.PathSeparator` or ``\`` to the beginning. Java/Kotlin """"""""""" From d685e666b4ee597daba921ae12c3a4e10a3a0640 Mon Sep 17 00:00:00 2001 From: Jon Janego Date: Mon, 17 Nov 2025 14:32:04 -0600 Subject: [PATCH 806/965] missing space --- .../codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst index 78e5e367bce..ff22a3f647c 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst @@ -88,7 +88,7 @@ JavaScript/TypeScript * Data flow is now tracked through the :code:`Promise.try` and :code:`Array.prototype.with` functions. * Query :code:`js/index-out-of-bounds` no longer produces a false-positive when a strictly-less-than check overrides a previous less-than-or-equal test. * The query :code:`js/remote-property-injection` now detects property injection vulnerabilities through object enumeration patterns such as :code:`Object.keys()`. -* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__ ! +* The query "Permissive CORS configuration" (:code:`js/cors-permissive-configuration`) has been promoted from experimental and is now part of the default security suite. Thank you to @maikypedia who `submitted the original experimental query `__! Python """""" From 1c81c4d4c9c8abfeb5e4c9d6adeeae729fd93d7c Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 18 Nov 2025 10:01:36 +0100 Subject: [PATCH 807/965] C#: make some tweaks to change logs --- csharp/ql/lib/CHANGELOG.md | 2 +- csharp/ql/lib/change-notes/released/5.3.0.md | 2 +- csharp/ql/src/change-notes/released/1.0.11.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 962b6ecd184..dbaa58119a4 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -20,7 +20,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/released/5.3.0.md b/csharp/ql/lib/change-notes/released/5.3.0.md index 144f8bf2633..fa305362575 100644 --- a/csharp/ql/lib/change-notes/released/5.3.0.md +++ b/csharp/ql/lib/change-notes/released/5.3.0.md @@ -6,7 +6,7 @@ ### Major Analysis Improvements -* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions. For example, improved precision has been observed for `cs/inefficient-containskey` and `cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: `cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, `cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, `cs/dereferenced-value-may-be-null` has been changed from a `path-problem` query to a `problem` query, so paths are no longer reported for this query. ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/released/1.0.11.md b/csharp/ql/src/change-notes/released/1.0.11.md index 9d2720380a0..d5c9f149c41 100644 --- a/csharp/ql/src/change-notes/released/1.0.11.md +++ b/csharp/ql/src/change-notes/released/1.0.11.md @@ -2,4 +2,4 @@ ### Minor Analysis Improvements -* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. +* C#: The method `string.ReplaceLineEndings(string)` is now considered a sanitizer for the `cs/log-forging` query. From 4c1f2b840eedfbfdf779147aec2cf6c0c9eecf13 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 18 Nov 2025 10:06:19 +0100 Subject: [PATCH 808/965] C#: change capitalization --- csharp/ql/src/CHANGELOG.md | 2 +- csharp/ql/src/change-notes/released/1.4.3.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index b7bef32f207..fcf727fac49 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -12,7 +12,7 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. ## 1.4.2 diff --git a/csharp/ql/src/change-notes/released/1.4.3.md b/csharp/ql/src/change-notes/released/1.4.3.md index 1a022f2462d..b3427ec8906 100644 --- a/csharp/ql/src/change-notes/released/1.4.3.md +++ b/csharp/ql/src/change-notes/released/1.4.3.md @@ -2,4 +2,4 @@ ### Minor Analysis Improvements -* the `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. +* The `cs/web/missing-x-frame-options` query now correctly handles configuration nested in root `` elements. From 5ee45af3aa96998305f2b97d03b74188040e10d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Nov 2025 09:53:12 +0000 Subject: [PATCH 809/965] Post-release preparation for codeql-cli-2.23.6 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 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/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 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/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/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 22e1d6db0fc..7671d59ddc0 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.21 +version: 0.4.22-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 78ca2aa2073..b11eab521eb 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.13 +version: 0.6.14-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index c2f8cc98819..febb297cb8d 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.1.0 +version: 6.1.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 8e062d290b5..1e30e25da03 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.4 +version: 1.5.5-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 80e9343408f..177b79ef6b8 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.52 +version: 1.7.53-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index f107eb7dee6..7b065e193b6 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.52 +version: 1.7.53-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 3c3ae516a56..7ea21611edc 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.4.0 +version: 5.4.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4834c59d8fa..a4033c362f0 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.5.0 +version: 1.5.1-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index ce049f78027..e7707ebbfe0 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: 1.0.35 +version: 1.0.36-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index ec804b7aee5..97c351dfe8a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.2 +version: 5.0.3-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index d273ea1ddfc..1a6c47319a2 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.9 +version: 1.4.10-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 8a3414dcb12..5d14d9b313a 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.4 +version: 7.7.5-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 3a4bf16b232..f1a422dcfa9 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.10.0 +version: 1.10.1-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index de43ec0c7ad..b0c7e2e1e12 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.15 +version: 2.6.16-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index d3adb5a5207..3716fa82c2f 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.2.0 +version: 2.2.1-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index b3316643de4..350d555bf57 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.35 +version: 1.0.36-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index fd765f7c385..7f4e67a5cbf 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 5.0.0 +version: 5.0.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 0c4bd654b0b..40cb22f102a 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.7.0 +version: 1.7.1-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index dba4b173bf2..99ffc1da075 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.3 +version: 5.1.4-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index a581cc8866d..81ee5e4f379 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.5.0 +version: 1.5.1-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index 0a00fef81b0..bbd3b4da4b5 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.20 +version: 0.1.21-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index fcf86c7e21f..557990e8f36 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.20 +version: 0.1.21-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index 289b9d531da..a6f2253b712 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.9 +version: 0.0.10-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index a046376584b..aa9beb00dc7 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.19 +version: 2.0.20-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index d1cddb65806..ba23cda97ca 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.19 +version: 2.0.20-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 54662518ac6..579802e08f3 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 7aa341ed298..bd398ce4e03 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.13 +version: 0.0.14-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index acfe26c3d74..1483733e8e3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 7c883c5a348..8d95fbccbda 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 9c7f6f2ac2a..4fa7f6e6422 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.11 +version: 2.0.12-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 02bfe21bf76..33680c17c7a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.35 +version: 1.0.36-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 658dbc8c816..225922fa95a 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: 1.0.35 +version: 1.0.36-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index b0d79695965..baec0554bd8 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index 485c6284030..4bd6beec446 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.16 +version: 0.0.17-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index d804fa00748..bd32acdd76e 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.19 +version: 2.0.20-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 94ec6653e8b..752d11a2bc8 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index aefbed94437..47b84b65ff2 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.22 +version: 2.0.23-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 7fa5e1d171e..744b7a72909 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index fd6a84b1693..f905e7abee4 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.35 +version: 1.0.36-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 84ff9e5061a..a35a1836ed1 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.1.0 +version: 6.1.1-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index cf2c5ccfc84..d7584e3ed16 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.9 +version: 1.2.10-dev groups: - swift - queries From 1ebc16e2d3700960a129e729a2cfb6da7feeb390 Mon Sep 17 00:00:00 2001 From: Jon Janego Date: Mon, 17 Nov 2025 14:39:35 -0600 Subject: [PATCH 810/965] Merge pull request #20855 from github/changedocs-2.23.5 Changedocs 2.23.5 (cherry picked from commit f27271d216a472339e38cdd62398220c97d068ef) --- .../codeql-changelog/codeql-cli-2.23.5.rst | 134 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 2 files changed, 135 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst new file mode 100644 index 00000000000..9022a09444f --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.5.rst @@ -0,0 +1,134 @@ +.. _codeql-cli-2.23.5: + +========================== +CodeQL 2.23.5 (2025-11-13) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.23.5 runs a total of 483 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 3 security queries have been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* In order to make a :code:`@kind path-problem` query diff-informed, the :code:`getASelectedSourceLocation` and :code:`getASelectedSinkLocation` predicates in the dataflow configuration now need to be overridden to always return the location of the source/sink *in addition to* any other locations that are selected by the query. See the `QLdoc `__ for more details. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* the :code:`cs/web/missing-x-frame-options` query now correctly handles configuration nested in root :code:`` elements. + +Java/Kotlin +""""""""""" + +* Calls to :code:`String.matches` are now treated as sanitizers for the :code:`java/ssrf` query. + +Python +"""""" + +* The :code:`py/insecure-cookie` query has been split into multiple queries; with :code:`py/insecure-cookie` checking for cases in which :code:`Secure` flag is not set, :code:`py/client-exposed-cookie` checking for cases in which the :code:`HttpOnly` flag is not set, and the :code:`py/samesite-none` query checking for cases in which the :code:`SameSite` attribute is set to :code:`None`. These queries also now only alert for cases in which the cookie is detected to contain sensitive data. + +Rust +"""" + +* The "Low Rust analysis quality" query (:code:`rust/diagnostic/database-quality`), used by the tool status page, has been extended with a measure of successful type inference. + +New Queries +~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The :code:`java/sensitive-cookie-not-httponly` query has been promoted from experimental to the main query pack. +* Added a new query, :code:`java/escaping`, to detect values escaping from classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/not-threadsafe`, to detect data races in classes marked as :code:`@ThreadSafe`. +* Added a new query, :code:`java/safe-publication`, to detect unsafe publication in classes marked as :code:`@ThreadSafe`. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Swift +""""" + +* The :code:`OpenedArchetypeType` class has been renamed as :code:`ExistentialArchetypeType`. +* The :code:`OtherAvailabilitySpec` class has been removed. Use :code:`AvailabilitySpec::isWildcard` instead. +* The :code:`PlatformVersionAvailabilitySpec` has been removed. Use :code:`AvailabilitySpec::getPlatform` and :code:`AvailabilitySpec::getVersion` instead. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The representation of the C# control-flow graph has been significantly changed. This has minor effects on a wide range of queries including both minor improvements and minor regressions, for example, improved precision has been observed for :code:`cs/inefficient-containskey` and :code:`cs/stringbuilder-creation-in-loop`. Two queries stand out as being significantly affected with great improvements: :code:`cs/dereferenced-value-may-be-null` has been completely rewritten which removes a very significant number of false positives. Furthermore, :code:`cs/constant-condition` has been updated to report many new results - these new results are primarily expected to be true positives, but a few new false positives are expected as well. As part of these changes, :code:`cs/dereferenced-value-may-be-null` has been changed from a :code:`path-problem` query to a :code:`problem` query, so paths are no longer reported for this query. + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.2. +* Support for experimental Embedded Swift has been dropped. + +Rust +"""" + +* Resolution of calls to functions has been improved in a number of ways, to make it more aligned with the behavior of the Rust compiler. This may impact queries that rely on call resolution, such as data flow queries. +* Added basic models for the :code:`actix-web` web framework. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Added tracer support for macOS and Linux when the .NET CLI (:code:`dotnet`) directly invokes the C# compiler (:code:`csc`). This enhancement provides basic tracing and extraction capabilities for .NET 10 RC2 on these platforms. +* The extraction of location information for source code entities has been updated to use star IDs (:code:`*` IDs). This change should be transparent to end-users but may improve extraction performance in some cases by reducing TRAP file size and eliminating overhead from location de-duplication. + +Rust +"""" + +* Added :code:`ExtractedFile::hasSemantics` and :code:`ExtractedFile::isSkippedByCompilation` predicates. +* Generalized some existing models to improve data flow. +* Added models for the :code:`mysql` and :code:`mysql_async` libraries. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* The class :code:`AbstractValue` in the :code:`Guards` library has been deprecated and replaced with the class :code:`GuardValue`. + +New Features +~~~~~~~~~~~~ + +Python +"""""" + +* Initial support for incremental Python databases via :code:`codeql database create --overlay-base`\ /\ :code:`--overlay-changes`. + +Swift +""""" + +* Added AST nodes :code:`UsingDecl`, :code:`UnsafeExpr`, and :code:`InlineArrayType` that correspond to new nodes in Swift 6.2. +* Added new predicates :code:`isDistributedGet`, :code:`isRead2`, :code:`isModify2`, and :code:`isInit` to the :code:`Accessor` class that correspond to new accessors in Swift 6.2. +* Added a new predicate :code:`isApply` to the :code:`KeyPathComponent` class that corresponds to method and initializer key path components in Swift 6.2. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 4b3e1f5bb98..e48181dc026 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here Date: Tue, 18 Nov 2025 13:20:07 +0100 Subject: [PATCH 811/965] Ripunzip: build on older ubuntu --- .github/workflows/build-ripunzip.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml index 08547268e3b..041d34bd046 100644 --- a/.github/workflows/build-ripunzip.yml +++ b/.github/workflows/build-ripunzip.yml @@ -46,7 +46,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-24.04, macos-15, windows-2025] + os: + - ubuntu-22.04 # keep at lowest supported ubuntu version for broader glibc compatibility + - macos-15 + - windows-2025 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v5 From a0965f33e3ed4bda3a46748933ee50c5f8167757 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 18 Nov 2025 13:29:00 +0100 Subject: [PATCH 812/965] JS: Also discard JSON, YAML, and XML --- javascript/ql/lib/semmle/javascript/internal/Overlay.qll | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll index f3eed619f0d..efba0daeca7 100644 --- a/javascript/ql/lib/semmle/javascript/internal/Overlay.qll +++ b/javascript/ql/lib/semmle/javascript/internal/Overlay.qll @@ -7,7 +7,14 @@ private predicate isOverlay() { databaseMetadata("isOverlay", "true") } overlay[local] private string getFileFromEntity(@locatable node) { exists(@location loc | - hasLocation(node, loc) and + hasLocation(node, loc) + or + json_locations(node, loc) + or + yaml_locations(node, loc) + or + xmllocations(node, loc) + | result = getFileFromLocation(loc) ) } From f3742008deccd551992b4d837a12c296ddbff888 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Nov 2025 12:35:31 +0000 Subject: [PATCH 813/965] Update ripunzip binaries to version v2.0.3 --- misc/ripunzip/ripunzip-Linux.tar.zst | 4 ++-- misc/ripunzip/ripunzip-Windows.tar.zst | 4 ++-- misc/ripunzip/ripunzip-macOS.tar.zst | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/misc/ripunzip/ripunzip-Linux.tar.zst b/misc/ripunzip/ripunzip-Linux.tar.zst index 94530212daf..c9a5ff1e590 100644 --- a/misc/ripunzip/ripunzip-Linux.tar.zst +++ b/misc/ripunzip/ripunzip-Linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6df3e70fa425f5640aba1b319ed21f0a12d3e5d39d5da8cb4820396149c95bd -size 4740396 +oid sha256:252a54114fde9932d2bf3e7a1592bc6767611682a913519585402b9c51d6e2c7 +size 4707184 diff --git a/misc/ripunzip/ripunzip-Windows.tar.zst b/misc/ripunzip/ripunzip-Windows.tar.zst index 81f156c41b5..80e41538135 100644 --- a/misc/ripunzip/ripunzip-Windows.tar.zst +++ b/misc/ripunzip/ripunzip-Windows.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a85c91867649a0ca0bbfddd2c88a3f3da7e0a44edd293571d72ee8492bc9b81b -size 1765497 +oid sha256:3a4388816c72e0bc8c30741aaae05dc91b46174db406133cad40c783acf4fad6 +size 1765498 diff --git a/misc/ripunzip/ripunzip-macOS.tar.zst b/misc/ripunzip/ripunzip-macOS.tar.zst index 2f5e111c78e..3ff3253ca5d 100644 --- a/misc/ripunzip/ripunzip-macOS.tar.zst +++ b/misc/ripunzip/ripunzip-macOS.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fbc5326b12fa6b9e06d48c60fb9cd363fff9a0c87a81ed93c29facbe9d2e4f2 +oid sha256:5a5d8ca7ed78b0da3a572b91556fbf03431c99770072060743c63e2d581d8580 size 3796231 From ec15085c34a66e23a9d87244b05aa60181a5d4c1 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 18 Nov 2025 13:18:29 +0100 Subject: [PATCH 814/965] Address review comments --- .../codeql/rust/dataflow/internal/Content.qll | 12 +- .../codeql/rust/internal/PathResolution.qll | 3 +- rust/ql/lib/codeql/rust/internal/Type.qll | 30 +- .../builtintypes/BuiltinTypes.expected | 4 - .../type-inference/dereference.rs | 10 +- .../test/library-tests/type-inference/main.rs | 68 +- .../type-inference/pattern_matching.rs | 30 +- .../type-inference/type-inference.expected | 2928 ++++++++--------- rust/tools/builtins/types.rs | 115 +- 9 files changed, 1546 insertions(+), 1654 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll index 9457a0a7a50..67fed2d2def 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll @@ -29,7 +29,11 @@ abstract class FieldContent extends Content { class TupleFieldContent extends FieldContent, TTupleFieldContent { private TupleField field; - TupleFieldContent() { this = TTupleFieldContent(field) } + TupleFieldContent() { + this = TTupleFieldContent(field) and + // tuples are handled using the special `TupleContent` type + not field = any(TupleType tt).getATupleField() + } /** Holds if this field belongs to an enum variant. */ predicate isVariantField(Variant v, int pos) { field.isVariantField(v, pos) } @@ -37,11 +41,7 @@ class TupleFieldContent extends FieldContent, TTupleFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, int pos) { field.isStructField(s, pos) } - override FieldExprCfgNode getAnAccess() { - field = result.getFieldExpr().getTupleField() and - // tuples are handled using the special `TupleContent` type - not field = any(TupleType tt).getATupleField() - } + override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getTupleField() } final override string toString() { exists(Variant v, int pos, string vname | diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 69874a6e570..54df4a3ca0c 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -2172,8 +2172,7 @@ private predicate builtin(string name, ItemNode i) { exists(BuiltinSourceFile builtins | builtins.getFile().getBaseName() = "types.rs" and i = builtins.getASuccessor(name) and - not name = ["Slice", "Array", "Ref", "Ptr"] and - not name.matches("Tuple%") + i.isPublic() ) } diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index c6b475b62d7..ccf5c754363 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -208,8 +208,7 @@ class UnionType extends Type, TUnion { /** * An array type. * - * Array types like `[i64; 5]` are modeled as normal generic types - * with a single type argument. + * Array types like `[i64; 5]` are modeled as normal generic types. */ class ArrayType extends StructType { ArrayType() { this.getStruct() instanceof Builtins::ArrayType } @@ -401,32 +400,7 @@ class TypeParamTypeParameter extends TypeParameter, TTypeParamTypeParameter { TypeParam getTypeParam() { result = typeParam } - override string toString() { - this = any(SliceType st).getATypeParameter() and - result = "[T]" - or - this = any(ArrayType at).getATypeParameter() and - result = "[T;...]" - or - this = any(RefType rt).getATypeParameter() and - result = "&T" - or - this = any(PtrType pt).getATypeParameter() and - result = "*T" - or - exists(TupleType tt, int arity, int i | - this = tt.getPositionalTypeParameter(i) and - arity = tt.getArity() and - result = i + "(" + arity + ")" - ) - or - not this = any(SliceType st).getATypeParameter() and - not this = any(ArrayType at).getATypeParameter() and - not this = any(RefType rt).getATypeParameter() and - not this = any(PtrType pt).getATypeParameter() and - not this = any(TupleType tt).getATypeParameter() and - result = typeParam.toString() - } + override string toString() { result = typeParam.toString() } override Location getLocation() { result = typeParam.getLocation() } } diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected index 0a993bf6842..cfab22cd61c 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -15,10 +15,6 @@ | struct Tuple10 | | | struct Tuple11 | | | struct Tuple12 | | -| struct Tuple13 | | -| struct Tuple14 | | -| struct Tuple15 | | -| struct Tuple16 | | | struct bool | | | struct char | | | struct f32 | FloatingPointType, NumericType | diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index bdc42180a63..f84d03a3a4e 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -38,7 +38,7 @@ impl S { fn explicit_monomorphic_dereference() { // Dereference with method call let a1 = MyIntPointer { value: 34i64 }; - let _b1 = a1.deref(); // $ target=MyIntPointer::deref type=_b1:&T.i64 + let _b1 = a1.deref(); // $ target=MyIntPointer::deref type=_b1:TRef.i64 // Dereference with overloaded dereference operator let a2 = MyIntPointer { value: 34i64 }; @@ -52,7 +52,7 @@ fn explicit_monomorphic_dereference() { fn explicit_polymorphic_dereference() { // Explicit dereference with type parameter let c1 = MySmartPointer { value: 'a' }; - let _d1 = c1.deref(); // $ target=MySmartPointer::deref type=_d1:&T.char + let _d1 = c1.deref(); // $ target=MySmartPointer::deref type=_d1:TRef.char // Explicit dereference with type parameter let c2 = MySmartPointer { value: 'a' }; @@ -66,7 +66,7 @@ fn explicit_polymorphic_dereference() { fn explicit_ref_dereference() { // Explicit dereference with type parameter let e1 = &'a'; - let _f1 = e1.deref(); // $ target=deref type=_f1:&T.char + let _f1 = e1.deref(); // $ target=deref type=_f1:TRef.char // Explicit dereference with type parameter let e2 = &'a'; @@ -80,7 +80,7 @@ fn explicit_ref_dereference() { fn explicit_box_dereference() { // Explicit dereference with type parameter let g1: Box = Box::new('a'); // $ target=new - let _h1 = g1.deref(); // $ target=deref type=_h1:&T.char + let _h1 = g1.deref(); // $ target=deref type=_h1:TRef.char // Explicit dereference with type parameter let g2: Box = Box::new('a'); // $ target=new @@ -101,7 +101,7 @@ fn implicit_dereference() { let _y = x.is_positive(); // $ MISSING: target=is_positive type=_y:bool let z = MySmartPointer { value: S(0i64) }; - let z_ = z.foo(); // $ MISSING: target=foo type=z_:&T.i64 + let z_ = z.foo(); // $ MISSING: target=foo type=z_:TRef.i64 } mod implicit_deref_coercion_cycle { diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index c18c43330c1..bf53c4906e3 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1542,7 +1542,7 @@ mod method_call_type_conversion { let x7 = S(&S2); // Non-implicit dereference with nested borrow in order to test that the // implicit dereference handling doesn't affect nested borrows. - let t = x7.m1(); // $ target=m1 type=t:& type=t:&T.S2 + let t = x7.m1(); // $ target=m1 type=t:& type=t:TRef.S2 println!("{:?}", x7); let x9: String = "Hello".to_string(); // $ certainType=x9:String target=to_string @@ -1732,7 +1732,7 @@ mod builtins { let z = x + y; // $ type=z:i32 target=add let z = x.abs(); // $ target=abs $ type=z:i32 let c = 'c'; // $ certainType=c:char - let hello = "Hello"; // $ certainType=hello:&T.str + let hello = "Hello"; // $ certainType=hello:TRef.str let f = 123.0f64; // $ certainType=f:f64 let t = true; // $ certainType=t:bool let f = false; // $ certainType=f:bool @@ -1753,8 +1753,8 @@ mod builtins { } } - let x = [1, 2, 3].my_method(); // $ target=my_method type=x:&T.i32 - let x = <[_; 3]>::my_method(&[1, 2, 3]); // $ target=my_method type=x:&T.i32 + let x = [1, 2, 3].my_method(); // $ target=my_method type=x:TRef.i32 + let x = <[_; 3]>::my_method(&[1, 2, 3]); // $ target=my_method type=x:TRef.i32 let x = <[i32; 3]>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for [T] { @@ -1768,8 +1768,8 @@ mod builtins { } let s: &[i32] = &[1, 2, 3]; - let x = s.my_method(); // $ target=my_method type=x:&T.i32 - let x = <[_]>::my_method(s); // $ target=my_method type=x:&T.i32 + let x = s.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <[_]>::my_method(s); // $ target=my_method type=x:TRef.i32 let x = <[i32]>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for (T, i32) { @@ -1783,8 +1783,8 @@ mod builtins { } let p = (42, 7); - let x = p.my_method(); // $ target=my_method type=x:&T.i32 - let x = <(_, _)>::my_method(&p); // $ target=my_method type=x:&T.i32 + let x = p.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <(_, _)>::my_method(&p); // $ target=my_method type=x:TRef.i32 let x = <(i32, i32)>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for &T { @@ -1798,8 +1798,8 @@ mod builtins { } let r = &42; - let x = r.my_method(); // $ target=my_method type=x:&T.i32 - let x = <&_>::my_method(&r); // $ target=my_method type=x:&T.i32 + let x = r.my_method(); // $ target=my_method type=x:TRef.i32 + let x = <&_>::my_method(&r); // $ target=my_method type=x:TRef.i32 let x = <&i32>::my_func(); // $ target=my_func type=x:i32 impl MyTrait for *mut T { @@ -1814,8 +1814,8 @@ mod builtins { let mut v = 42; let p: *mut i32 = &mut v; - let x = unsafe { p.my_method() }; // $ target=my_method type=x:&T.i32 - let x = unsafe { <*mut _>::my_method(&p) }; // $ target=my_method type=x:&T.i32 + let x = unsafe { p.my_method() }; // $ target=my_method type=x:TRef.i32 + let x = unsafe { <*mut _>::my_method(&p) }; // $ target=my_method type=x:TRef.i32 let x = <*mut i32>::my_func(); // $ target=my_func type=x:i32 } } @@ -2612,24 +2612,24 @@ mod loops { for i in [1, 2, 3].map(|x| x + 1) {} // $ target=map MISSING: type=i:i32 for i in [1, 2, 3].into_iter() {} // $ target=into_iter type=i:i32 - let vals1 = [1u8, 2, 3]; // $ type=vals1:[T;...].u8 + let vals1 = [1u8, 2, 3]; // $ type=vals1:TArray.u8 for u in vals1 {} // $ type=u:u8 - let vals2 = [1u16; 3]; // $ type=vals2:[T;...].u16 + let vals2 = [1u16; 3]; // $ type=vals2:TArray.u16 for u in vals2 {} // $ type=u:u16 - let vals3: [u32; 3] = [1, 2, 3]; // $ certainType=vals3:[T;...].u32 + let vals3: [u32; 3] = [1, 2, 3]; // $ certainType=vals3:TArray.u32 for u in vals3 {} // $ type=u:u32 - let vals4: [u64; 3] = [1; 3]; // $ certainType=vals4:[T;...].u64 + let vals4: [u64; 3] = [1; 3]; // $ certainType=vals4:TArray.u64 for u in vals4 {} // $ type=u:u64 - let mut strings1 = ["foo", "bar", "baz"]; // $ type=strings1:[T;...].&T.str - for s in &strings1 {} // $ type=s:&T.&T.str - for s in &mut strings1 {} // $ type=s:&T.&T.str - for s in strings1 {} // $ type=s:&T.str + let mut strings1 = ["foo", "bar", "baz"]; // $ type=strings1:TArray.TRef.str + for s in &strings1 {} // $ type=s:TRef.TRef.str + for s in &mut strings1 {} // $ type=s:TRef.TRef.str + for s in strings1 {} // $ type=s:TRef.str - let strings2 = // $ type=strings2:[T;...].String + let strings2 = // $ type=strings2:TArray.String [ String::from("foo"), // $ target=from String::from("bar"), // $ target=from @@ -2637,15 +2637,15 @@ mod loops { ]; for s in strings2 {} // $ type=s:String - let strings3 = // $ type=strings3:&T.[T;...].String + let strings3 = // $ type=strings3:TRef.TArray.String &[ String::from("foo"), // $ target=from String::from("bar"), // $ target=from String::from("baz"), // $ target=from ]; - for s in strings3 {} // $ type=s:&T.String + for s in strings3 {} // $ type=s:TRef.String - let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ type=callables:[T;...].MyCallable + let callables = [MyCallable::new(), MyCallable::new(), MyCallable::new()]; // $ target=new $ type=callables:TArray.MyCallable for c // $ type=c:MyCallable in callables { @@ -2659,7 +2659,7 @@ mod loops { let range = 0..10; // $ certainType=range:Range type=range:Idx.i32 for i in range {} // $ type=i:i32 let range_full = ..; // $ certainType=range_full:RangeFull - for i in &[1i64, 2i64, 3i64][range_full] {} // $ target=index MISSING: type=i:&T.i64 + for i in &[1i64, 2i64, 3i64][range_full] {} // $ target=index MISSING: type=i:TRef.i64 let range1 = // $ certainType=range1:Range type=range1:Idx.u16 std::ops::Range { @@ -2682,8 +2682,8 @@ mod loops { let vals5 = Vec::from([1u32, 2, 3]); // $ certainType=vals5:Vec target=from type=vals5:T.u32 for u in vals5 {} // $ type=u:u32 - let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6:Vec certainType=vals6:T.&T.u64 - for u in vals6 {} // $ type=u:&T.u64 + let vals6: Vec<&u64> = [1u64, 2, 3].iter().collect(); // $ certainType=vals6:Vec certainType=vals6:T.TRef.u64 + for u in vals6 {} // $ type=u:TRef.u64 let mut vals7 = Vec::new(); // $ target=new certainType=vals7:Vec type=vals7:T.u8 vals7.push(1u8); // $ target=push @@ -2696,13 +2696,13 @@ mod loops { } }; - let mut map1 = std::collections::HashMap::new(); // $ target=new type=map1:K.i32 type=map1:V.Box $ MISSING: type=map1:Hashmap type1=map1:V.T.&T.str + let mut map1 = std::collections::HashMap::new(); // $ target=new type=map1:K.i32 type=map1:V.Box $ MISSING: type=map1:Hashmap type1=map1:V.T.TRef.str map1.insert(1, Box::new("one")); // $ target=insert target=new map1.insert(2, Box::new("two")); // $ target=insert target=new - for key in map1.keys() {} // $ target=keys type=key:&T.i32 - for value in map1.values() {} // $ target=values type=value:&T.Box type=value:&T.T.&T.str - for (key, value) in map1.iter() {} // $ target=iter type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str - for (key, value) in &map1 {} // $ type=key:&T.i32 type=value:&T.Box type=value:&T.T.&T.str + for key in map1.keys() {} // $ target=keys type=key:TRef.i32 + for value in map1.values() {} // $ target=values type=value:TRef.Box type=value:TRef.T.TRef.str + for (key, value) in map1.iter() {} // $ target=iter type=key:TRef.i32 type=value:TRef.Box type=value:TRef.T.TRef.str + for (key, value) in &map1 {} // $ type=key:TRef.i32 type=value:TRef.Box type=value:TRef.T.TRef.str // while loops @@ -2804,11 +2804,11 @@ mod tuples { // `a` and `b` to be inferred. let a = Default::default(); // $ target=default type=a:i64 let b = Default::default(); // $ target=default type=b:bool - let pair = (a, b); // $ type=pair:0(2).i64 type=pair:1(2).bool + let pair = (a, b); // $ type=pair:T0.i64 type=pair:T1.bool let i: i64 = pair.0; // $ fieldof=Tuple2 let j: bool = pair.1; // $ fieldof=Tuple2 - let pair = [1, 1].into(); // $ type=pair:(T_2) type=pair:0(2).i32 type=pair:1(2).i32 MISSING: target=into + let pair = [1, 1].into(); // $ type=pair:(T_2) type=pair:T0.i32 type=pair:T1.i32 MISSING: target=into match pair { (0, 0) => print!("unexpected"), _ => print!("expected"), diff --git a/rust/ql/test/library-tests/type-inference/pattern_matching.rs b/rust/ql/test/library-tests/type-inference/pattern_matching.rs index 569b06ab9a7..b7f96cd555b 100755 --- a/rust/ql/test/library-tests/type-inference/pattern_matching.rs +++ b/rust/ql/test/library-tests/type-inference/pattern_matching.rs @@ -37,18 +37,18 @@ pub fn f() -> Option<()> { let value3 = 42; if let ref mesg = value3 { - let mesg = mesg; // $ type=mesg:&T.i32 + let mesg = mesg; // $ type=mesg:TRef.i32 println!("{mesg}"); } let value4 = Some(42); if let Some(ref mesg) = value4 { - let mesg = mesg; // $ type=mesg:&T.i32 + let mesg = mesg; // $ type=mesg:TRef.i32 println!("{mesg}"); } let ref value5 = 42; - let x = value5; // $ type=x:&T.i32 + let x = value5; // $ type=x:TRef.i32 let my_record_struct = MyRecordStruct { value1: 42, @@ -102,7 +102,7 @@ pub fn f() -> Option<()> { ) => { let a = value1; // $ type=a:bool let b = x; // $ type=b:i32 - let c = y; // $ type=c:&T.str + let c = y; // $ type=c:TRef.str (); } _ => (), @@ -197,7 +197,7 @@ pub fn literal_patterns() { let string_val = "hello"; match string_val { "hello" => { - let hello_match = string_val; // $ certainType=hello_match:&T.str + let hello_match = string_val; // $ certainType=hello_match:TRef.str println!("String literal: {}", hello_match); } _ => {} @@ -230,7 +230,7 @@ pub fn identifier_patterns() { // IdentPat with ref match &value { ref x => { - let ref_bound = x; // $ type=ref_bound:&T.&T.i32 + let ref_bound = x; // $ type=ref_bound:TRef.TRef.i32 println!("Reference identifier: {:?}", ref_bound); } } @@ -269,7 +269,7 @@ pub fn identifier_patterns() { let mut ref_mut_val = 5i32; match &mut ref_mut_val { ref mut x => { - let ref_mut_bound = x; // $ type=ref_mut_bound:&T.&T.i32 + let ref_mut_bound = x; // $ type=ref_mut_bound:TRef.TRef.i32 **ref_mut_bound += 1; // $ target=deref target=add_assign println!("Ref mut pattern"); } @@ -341,14 +341,14 @@ pub fn reference_patterns() { match &mut mutable_value { &mut ref x => { - let mut_ref_bound = x; // $ type=mut_ref_bound:&T.i32 + let mut_ref_bound = x; // $ type=mut_ref_bound:TRef.i32 println!("Mutable ref pattern: {}", mut_ref_bound); } } match &value { ref x => { - let ref_pattern = x; // $ type=ref_pattern:&T.&T.i32 + let ref_pattern = x; // $ type=ref_pattern:TRef.TRef.i32 println!("Reference pattern: {}", ref_pattern); } } @@ -525,7 +525,7 @@ pub fn slice_patterns() { // SlicePat - Slice patterns match slice { [] => { - let empty_slice = slice; // $ certainType=empty_slice:&T.[T].i32 + let empty_slice = slice; // $ certainType=empty_slice:TRef.TSlice.i32 println!("Empty slice: {:?}", empty_slice); } [x] => { @@ -540,7 +540,7 @@ pub fn slice_patterns() { [first, middle @ .., last] => { let slice_start = *first; // $ MISSING: type=slice_start:i32 let slice_end = *last; // $ MISSING: type=slice_end:i32 - let slice_middle = middle; // $ MISSING: type=slice_middle:&T.[T].i32 + let slice_middle = middle; // $ MISSING: type=slice_middle:TRef.TSlice.i32 println!( "First: {}, last: {}, middle len: {}", slice_start, @@ -717,7 +717,7 @@ pub fn complex_nested_patterns() { } // Catch-all with identifier pattern other => { - let other_complex = other; // $ type=other_complex:0(2).Point type=other_complex:1(2).MyOption + let other_complex = other; // $ type=other_complex:T0.Point type=other_complex:T1.MyOption println!("Other complex data: {:?}", other_complex); } } @@ -750,7 +750,7 @@ pub fn patterns_in_let_statements() { // Let with reference pattern let value = 42i32; let ref ref_val = value; - let let_ref = ref_val; // $ certainType=let_ref:&T.i32 + let let_ref = ref_val; // $ certainType=let_ref:TRef.i32 // Let with mutable pattern let mut mut_val = 10i32; @@ -779,13 +779,13 @@ pub fn patterns_in_function_parameters() { // Call the functions to use them let point = Point { x: 5, y: 10 }; - let extracted = extract_point(point); // $ target=extract_point certainType=extracted:0(2).i32 certainType=extracted:1(2).i32 + let extracted = extract_point(point); // $ target=extract_point certainType=extracted:T0.i32 certainType=extracted:T1.i32 let color = Color(200, 100, 50); let red = extract_color(color); // $ target=extract_color certainType=red:u8 let tuple = (42i32, 3.14f64, true); - let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple certainType=tuple_extracted:0(2).i32 certainType=tuple_extracted:1(2).bool + let tuple_extracted = extract_tuple(tuple); // $ target=extract_tuple certainType=tuple_extracted:T0.i32 certainType=tuple_extracted:T1.bool } #[rustfmt::skip] diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 641294130b1..a56b6b7c475 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,45 +1,45 @@ inferType | blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:15:18:15:22 | SelfParam | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:15:18:15:22 | SelfParam | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:15:42:17:9 | { ... } | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:15:42:17:9 | { ... } | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:16:13:16:15 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:16:13:16:15 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:16:13:16:15 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:16:14:16:15 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:21:19:21:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:21:19:21:23 | SelfParam | &T | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | +| blanket_impl.rs:21:19:21:23 | SelfParam | TRef | blanket_impl.rs:20:5:22:5 | Self [trait Clone1] | | blanket_impl.rs:25:22:25:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:25:22:25:26 | SelfParam | &T | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | +| blanket_impl.rs:25:22:25:26 | SelfParam | TRef | blanket_impl.rs:24:5:28:5 | Self [trait Duplicatable] | | blanket_impl.rs:32:19:32:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:32:19:32:23 | SelfParam | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:32:19:32:23 | SelfParam | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:32:34:34:9 | { ... } | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:33:13:33:17 | * ... | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:33:14:33:17 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:33:14:33:17 | self | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:33:14:33:17 | self | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:40:22:40:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:40:22:40:26 | SelfParam | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:40:22:40:26 | SelfParam | TRef | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:40:37:42:9 | { ... } | | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:16 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:41:13:41:16 | self | &T | blanket_impl.rs:38:10:38:18 | T | +| blanket_impl.rs:41:13:41:16 | self | TRef | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:41:13:41:25 | self.clone1() | | blanket_impl.rs:38:10:38:18 | T | | blanket_impl.rs:45:33:60:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:46:13:46:14 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:46:18:46:28 | S1.clone1() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:47:18:47:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:47:20:47:21 | x1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:13:48:14 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:18:48:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:48:18:48:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:18:48:22 | (...) | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:18:48:31 | ... .clone1() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:19:48:21 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:48:19:48:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:48:19:48:21 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:48:20:48:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:49:18:49:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:49:18:49:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:18:49:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:49:20:49:21 | x2 | | blanket_impl.rs:6:5:7:14 | S1 | @@ -47,44 +47,44 @@ inferType | blanket_impl.rs:50:18:50:19 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:50:18:50:31 | S1.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:51:18:51:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:51:18:51:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:18:51:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:51:20:51:21 | x3 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:13:52:14 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:18:52:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:52:18:52:22 | (...) | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:18:52:22 | (...) | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:18:52:34 | ... .duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:19:52:21 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:52:19:52:21 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:52:19:52:21 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:52:20:52:21 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:53:18:53:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:53:18:53:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:18:53:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:53:20:53:21 | x4 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:13:54:14 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:18:54:35 | ...::duplicate(...) | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:32:54:34 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:54:32:54:34 | &S1 | &T | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:54:32:54:34 | &S1 | TRef | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:54:33:54:34 | S1 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:55:18:55:25 | "{x5:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:55:18:55:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:57:18:57:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:58:18:58:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:58:18:58:22 | (...) | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:18:58:22 | (...) | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:19:58:21 | &S2 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:58:19:58:21 | &S2 | &T | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:19:58:21 | &S2 | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:59:18:59:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | @@ -107,7 +107,7 @@ inferType | blanket_impl.rs:90:34:90:34 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:90:37:90:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:91:18:91:25 | "{x1:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:91:18:91:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:18:91:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:91:20:91:21 | x1 | | blanket_impl.rs:64:5:65:14 | S1 | @@ -116,7 +116,7 @@ inferType | blanket_impl.rs:92:38:92:38 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:92:41:92:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:93:18:93:25 | "{x2:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:93:18:93:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:18:93:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:93:20:93:21 | x2 | | blanket_impl.rs:64:5:65:14 | S1 | @@ -125,7 +125,7 @@ inferType | blanket_impl.rs:94:34:94:34 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:94:37:94:38 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:95:18:95:25 | "{x3:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:95:18:95:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:18:95:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:95:20:95:21 | x3 | | blanket_impl.rs:64:5:65:14 | S1 | @@ -134,56 +134,56 @@ inferType | blanket_impl.rs:96:38:96:38 | 1 | | {EXTERNAL LOCATION} | i32 | | blanket_impl.rs:96:41:96:42 | S1 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:97:18:97:25 | "{x4:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:97:18:97:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:18:97:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:97:20:97:21 | x4 | | blanket_impl.rs:64:5:65:14 | S1 | | blanket_impl.rs:108:22:108:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:108:22:108:26 | SelfParam | &T | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | +| blanket_impl.rs:108:22:108:26 | SelfParam | TRef | blanket_impl.rs:107:5:109:5 | Self [trait Flag] | | blanket_impl.rs:112:26:112:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:112:26:112:30 | SelfParam | &T | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | +| blanket_impl.rs:112:26:112:30 | SelfParam | TRef | blanket_impl.rs:111:5:113:5 | Self [trait TryFlag] | | blanket_impl.rs:119:26:119:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:119:26:119:30 | SelfParam | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:119:26:119:30 | SelfParam | TRef | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:119:49:121:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:119:49:121:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:120:13:120:34 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:120:13:120:34 | Some(...) | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:120:18:120:21 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:120:18:120:21 | self | &T | blanket_impl.rs:115:10:115:11 | Fl | +| blanket_impl.rs:120:18:120:21 | self | TRef | blanket_impl.rs:115:10:115:11 | Fl | | blanket_impl.rs:120:18:120:33 | self.read_flag() | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:126:32:126:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:126:32:126:36 | SelfParam | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:126:32:126:36 | SelfParam | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:126:55:128:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:126:55:128:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:127:13:127:16 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:127:13:127:16 | self | &T | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | +| blanket_impl.rs:127:13:127:16 | self | TRef | blanket_impl.rs:124:5:129:5 | Self [trait TryFlagExt] | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:127:13:127:32 | self.try_read_flag() | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:135:32:135:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:135:32:135:36 | SelfParam | &T | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | +| blanket_impl.rs:135:32:135:36 | SelfParam | TRef | blanket_impl.rs:133:5:136:5 | Self [trait AnotherTryFlag] | | blanket_impl.rs:144:26:144:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:144:26:144:30 | SelfParam | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:144:26:144:30 | SelfParam | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:144:49:146:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:144:49:146:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:145:13:145:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:145:13:145:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:145:18:145:21 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:145:18:145:21 | self | &T | blanket_impl.rs:138:5:140:5 | MyTryFlag | +| blanket_impl.rs:145:18:145:21 | self | TRef | blanket_impl.rs:138:5:140:5 | MyTryFlag | | blanket_impl.rs:145:18:145:26 | self.flag | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:155:22:155:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:155:22:155:26 | SelfParam | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:155:22:155:26 | SelfParam | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:155:37:157:9 | { ... } | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:156:13:156:16 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:156:13:156:16 | self | &T | blanket_impl.rs:149:5:151:5 | MyFlag | +| blanket_impl.rs:156:13:156:16 | self | TRef | blanket_impl.rs:149:5:151:5 | MyFlag | | blanket_impl.rs:156:13:156:21 | self.flag | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:166:32:166:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:166:32:166:36 | SelfParam | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:166:32:166:36 | SelfParam | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:166:55:168:9 | { ... } | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:166:55:168:9 | { ... } | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:167:13:167:27 | Some(...) | | {EXTERNAL LOCATION} | Option | | blanket_impl.rs:167:13:167:27 | Some(...) | T | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:167:18:167:21 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:167:18:167:21 | self | &T | blanket_impl.rs:160:5:162:5 | MyOtherFlag | +| blanket_impl.rs:167:18:167:21 | self | TRef | blanket_impl.rs:160:5:162:5 | MyOtherFlag | | blanket_impl.rs:167:18:167:26 | self.flag | | {EXTERNAL LOCATION} | bool | | blanket_impl.rs:171:15:184:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:172:13:172:23 | my_try_flag | | blanket_impl.rs:138:5:140:5 | MyTryFlag | @@ -216,25 +216,25 @@ inferType | blanket_impl.rs:226:15:226:18 | SelfParam | | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:226:21:226:22 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:231:15:231:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:231:15:231:18 | SelfParam | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:231:15:231:18 | SelfParam | TRef | blanket_impl.rs:229:10:229:27 | T | | blanket_impl.rs:231:21:233:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:232:13:232:16 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:232:13:232:16 | self | &T | blanket_impl.rs:229:10:229:27 | T | +| blanket_impl.rs:232:13:232:16 | self | TRef | blanket_impl.rs:229:10:229:27 | T | | blanket_impl.rs:232:13:232:21 | self.m1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:238:15:238:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:238:15:238:18 | SelfParam | &T | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:238:15:238:18 | SelfParam | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:238:15:238:18 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:238:15:238:18 | SelfParam | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:238:21:240:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:239:13:239:16 | self | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:239:13:239:16 | self | &T | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:239:13:239:16 | self | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:239:13:239:16 | self | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:239:13:239:16 | self | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:239:13:239:21 | self.m1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:245:15:245:18 | SelfParam | | blanket_impl.rs:243:10:243:20 | T | | blanket_impl.rs:245:21:247:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:246:13:246:16 | self | | blanket_impl.rs:243:10:243:20 | T | | blanket_impl.rs:246:13:246:21 | self.m3() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:252:15:252:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:252:15:252:18 | SelfParam | &T | blanket_impl.rs:250:10:250:10 | T | +| blanket_impl.rs:252:15:252:18 | SelfParam | TRef | blanket_impl.rs:250:10:250:10 | T | | blanket_impl.rs:252:21:252:22 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:255:33:263:5 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:256:13:256:14 | x1 | | {EXTERNAL LOCATION} | () | @@ -242,60 +242,60 @@ inferType | blanket_impl.rs:256:18:256:24 | S1.m1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:257:13:257:14 | x2 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:257:18:257:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:257:18:257:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:18:257:22 | (...) | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:257:18:257:27 | ... .m2() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:257:19:257:21 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:257:19:257:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:257:19:257:21 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:257:20:257:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:13:258:14 | x3 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:258:18:258:23 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:258:18:258:23 | (...) | &T | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:258:18:258:23 | (...) | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:18:258:23 | (...) | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:18:258:23 | (...) | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:18:258:28 | ... .m2() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:258:19:258:22 | &... | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:258:19:258:22 | &... | &T | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:258:19:258:22 | &... | &T.&T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:19:258:22 | &... | TRef | {EXTERNAL LOCATION} | & | +| blanket_impl.rs:258:19:258:22 | &... | TRef.TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:20:258:22 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:258:20:258:22 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:258:20:258:22 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:258:21:258:22 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:259:13:259:14 | x4 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:259:18:259:19 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:259:18:259:24 | S1.m4() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:260:13:260:14 | x5 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:260:18:260:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:260:18:260:22 | (...) | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:18:260:22 | (...) | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:260:18:260:27 | ... .m4() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:260:19:260:21 | &S1 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:260:19:260:21 | &S1 | &T | blanket_impl.rs:188:5:189:14 | S1 | +| blanket_impl.rs:260:19:260:21 | &S1 | TRef | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:260:20:260:21 | S1 | | blanket_impl.rs:188:5:189:14 | S1 | | blanket_impl.rs:261:13:261:14 | x6 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:261:18:261:19 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:261:18:261:24 | S2.m4() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:262:13:262:14 | x7 | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:262:18:262:22 | (...) | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:262:18:262:22 | (...) | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:18:262:22 | (...) | TRef | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:262:18:262:27 | ... .m4() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:262:19:262:21 | &S2 | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:262:19:262:21 | &S2 | &T | blanket_impl.rs:191:5:192:14 | S2 | +| blanket_impl.rs:262:19:262:21 | &S2 | TRef | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:262:20:262:21 | S2 | | blanket_impl.rs:191:5:192:14 | S2 | | blanket_impl.rs:272:21:272:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:272:21:272:25 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:272:21:272:25 | SelfParam | TRef | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | | blanket_impl.rs:273:24:273:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:273:24:273:28 | SelfParam | &T | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | +| blanket_impl.rs:273:24:273:28 | SelfParam | TRef | blanket_impl.rs:271:5:274:5 | Self [trait Executor] | | blanket_impl.rs:273:31:273:35 | query | | blanket_impl.rs:273:21:273:21 | E | | blanket_impl.rs:277:21:277:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:277:21:277:25 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:277:21:277:25 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:277:28:279:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:278:22:278:41 | "Executor::execute1\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:278:22:278:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:278:22:278:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:281:24:281:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:281:24:281:28 | SelfParam | &T | blanket_impl.rs:276:10:276:22 | T | +| blanket_impl.rs:281:24:281:28 | SelfParam | TRef | blanket_impl.rs:276:10:276:22 | T | | blanket_impl.rs:281:31:281:36 | _query | | blanket_impl.rs:281:21:281:21 | E | | blanket_impl.rs:281:42:283:9 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:282:22:282:41 | "Executor::execute2\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:282:22:282:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:282:22:282:41 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:290:16:300:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -305,38 +305,38 @@ inferType | blanket_impl.rs:293:9:293:20 | c.execute1() | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:294:9:294:37 | ...::execute1(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:294:35:294:36 | &c | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:294:35:294:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:294:35:294:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:294:36:294:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:296:9:296:41 | c.execute2(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:296:20:296:40 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:297:9:297:9 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:297:9:297:49 | c.execute2(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:297:28:297:48 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:298:9:298:60 | ...::execute2(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:298:35:298:36 | &c | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:298:35:298:36 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:298:35:298:36 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:36:298:36 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:298:39:298:59 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:299:9:299:68 | ...::execute2::<...>(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:299:43:299:44 | &c | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:299:43:299:44 | &c | &T | blanket_impl.rs:286:5:286:29 | MySqlConnection | +| blanket_impl.rs:299:43:299:44 | &c | TRef | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:44:299:44 | c | | blanket_impl.rs:286:5:286:29 | MySqlConnection | | blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | | {EXTERNAL LOCATION} | & | -| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | &T | {EXTERNAL LOCATION} | str | +| blanket_impl.rs:299:47:299:67 | "SELECT * FROM users" | TRef | {EXTERNAL LOCATION} | str | | closure.rs:4:19:31:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:6:13:6:22 | my_closure | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:6:13:6:22 | my_closure | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | -| closure.rs:6:13:6:22 | my_closure | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | +| closure.rs:6:13:6:22 | my_closure | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:6:13:6:22 | my_closure | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | | closure.rs:6:13:6:22 | my_closure | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_2) | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).0(2) | {EXTERNAL LOCATION} | bool | -| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).1(2) | {EXTERNAL LOCATION} | bool | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:6:26:6:38 | \|...\| ... | dyn(Args).T1 | {EXTERNAL LOCATION} | bool | | closure.rs:6:26:6:38 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:6:27:6:27 | a | | {EXTERNAL LOCATION} | bool | | closure.rs:6:30:6:30 | b | | {EXTERNAL LOCATION} | bool | @@ -347,11 +347,11 @@ inferType | closure.rs:8:22:8:25 | 1i64 | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:9:13:9:19 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:9:13:9:19 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:9:13:9:19 | add_one | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:9:13:9:19 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:9:23:9:34 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:9:23:9:34 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:9:23:9:34 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:9:24:9:24 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:9:27:9:27 | n | | {EXTERNAL LOCATION} | i64 | @@ -360,7 +360,7 @@ inferType | closure.rs:10:13:10:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:10:18:10:24 | add_one | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:10:18:10:24 | add_one | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:10:18:10:24 | add_one | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:24 | add_one | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:10:18:10:27 | add_one(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:10:26:10:26 | x | | {EXTERNAL LOCATION} | i64 | @@ -368,18 +368,18 @@ inferType | closure.rs:13:17:13:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:14:13:14:20 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:14:13:14:20 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:14:13:14:20 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:14:13:14:20 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:14:24:14:33 | \|...\| n | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:14:24:14:33 | \|...\| n | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:14:24:14:33 | \|...\| n | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:14:24:14:33 | \|...\| n | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:14:25:14:25 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:14:33:14:33 | n | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:13:15:14 | _y | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:15:18:15:25 | add_zero | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:15:18:15:25 | add_zero | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:15:18:15:25 | add_zero | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:25 | add_zero | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:15:18:15:28 | add_zero(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:15:27:15:27 | x | | {EXTERNAL LOCATION} | i64 | @@ -395,28 +395,28 @@ inferType | closure.rs:20:13:20:13 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:24:13:24:14 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:24:13:24:14 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:24:13:24:14 | id | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:24:13:24:14 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:24:18:24:22 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:24:18:24:22 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:24:18:24:22 | \|...\| b | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:24:18:24:22 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:24:19:24:19 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:24:22:24:22 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:13:25:14 | _b | | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:25:18:25:19 | id | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:25:18:25:19 | id | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:25:18:25:19 | id | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:19 | id | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:25:18:25:25 | id(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:25:21:25:24 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:28:13:28:15 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:28:13:28:15 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:28:13:28:15 | id2 | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:28:13:28:15 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:28:19:28:23 | \|...\| b | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:28:19:28:23 | \|...\| b | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:28:19:28:23 | \|...\| b | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:28:19:28:23 | \|...\| b | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:28:20:28:20 | b | | {EXTERNAL LOCATION} | bool | | closure.rs:28:23:28:23 | b | | {EXTERNAL LOCATION} | bool | @@ -425,7 +425,7 @@ inferType | closure.rs:30:13:30:15 | _b2 | | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:30:25:30:27 | id2 | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:30:25:30:27 | id2 | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:30:25:30:27 | id2 | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:27 | id2 | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:30:25:30:32 | id2(...) | | {EXTERNAL LOCATION} | bool | | closure.rs:30:29:30:31 | arg | | {EXTERNAL LOCATION} | bool | @@ -457,12 +457,12 @@ inferType | closure.rs:52:15:64:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:53:13:53:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:53:13:53:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:53:13:53:13 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:53:13:53:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:53:17:59:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:53:18:53:18 | x | | {EXTERNAL LOCATION} | bool | @@ -485,7 +485,7 @@ inferType | closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:60:24:60:24 | f | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:60:24:60:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:60:24:60:24 | f | dyn(Args).0(1) | {EXTERNAL LOCATION} | bool | +| closure.rs:60:24:60:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | | closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | | closure.rs:60:27:60:30 | true | | {EXTERNAL LOCATION} | bool | @@ -512,7 +512,7 @@ inferType | closure.rs:72:30:72:30 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:72:30:72:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:72:30:72:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:72:30:72:30 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | +| closure.rs:72:30:72:30 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | | closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | | closure.rs:72:66:75:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -522,7 +522,7 @@ inferType | closure.rs:73:31:73:31 | f | A | {EXTERNAL LOCATION} | Global | | closure.rs:73:31:73:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:73:31:73:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:73:31:73:31 | f | T.dyn(Args).0(1) | closure.rs:72:24:72:24 | A | +| closure.rs:73:31:73:31 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | | closure.rs:73:31:73:31 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | | closure.rs:73:34:73:36 | arg | | closure.rs:72:24:72:24 | A | | closure.rs:74:13:74:15 | _r2 | | {EXTERNAL LOCATION} | bool | @@ -531,55 +531,55 @@ inferType | closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | closure.rs:74:31:74:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:40:74:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn FnOnce | | closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args).0(1) | {EXTERNAL LOCATION} | i64 | +| closure.rs:74:40:74:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | | closure.rs:74:40:74:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:12:14:12:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:12:14:12:18 | SelfParam | TRef | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:12:29:14:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:12:29:14:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:13:9:13:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:9:13:19 | &... | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:13:10:13:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:13:10:13:13 | self | TRef | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | | dereference.rs:25:14:25:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:14:25:18 | SelfParam | TRef | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:25:14:25:18 | SelfParam | TRef.T | dereference.rs:21:6:21:6 | T | | dereference.rs:25:27:27:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:27:27:5 | { ... } | TRef | dereference.rs:21:6:21:6 | T | | dereference.rs:26:9:26:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:9:26:19 | &... | TRef | dereference.rs:21:6:21:6 | T | | dereference.rs:26:10:26:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:13 | self | TRef | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:26:10:26:13 | self | TRef.T | dereference.rs:21:6:21:6 | T | | dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | | dereference.rs:33:12:33:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:12:33:16 | SelfParam | &T | dereference.rs:30:1:30:15 | S | -| dereference.rs:33:12:33:16 | SelfParam | &T.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:33:12:33:16 | SelfParam | TRef | dereference.rs:30:1:30:15 | S | +| dereference.rs:33:12:33:16 | SelfParam | TRef.T | dereference.rs:32:6:32:6 | T | | dereference.rs:33:25:35:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:25:35:5 | { ... } | &T | dereference.rs:32:6:32:6 | T | +| dereference.rs:33:25:35:5 | { ... } | TRef | dereference.rs:32:6:32:6 | T | | dereference.rs:34:9:34:15 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:9:34:15 | &... | &T | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:9:34:15 | &... | TRef | dereference.rs:32:6:32:6 | T | | dereference.rs:34:10:34:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:10:34:13 | self | &T | dereference.rs:30:1:30:15 | S | -| dereference.rs:34:10:34:13 | self | &T.T | dereference.rs:32:6:32:6 | T | +| dereference.rs:34:10:34:13 | self | TRef | dereference.rs:30:1:30:15 | S | +| dereference.rs:34:10:34:13 | self | TRef.T | dereference.rs:32:6:32:6 | T | | dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | | dereference.rs:38:39:50:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:9:41:11 | _b1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:41:9:41:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:9:41:11 | _b1 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:41:15:41:24 | a1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:41:15:41:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:15:41:24 | a1.deref() | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | | dereference.rs:44:36:44:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | @@ -601,11 +601,11 @@ inferType | dereference.rs:54:14:54:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:55:9:55:11 | _d1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:55:9:55:11 | _d1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:9:55:11 | _d1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:55:15:55:16 | c1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:55:15:55:24 | c1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:55:15:55:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:55:15:55:24 | c1.deref() | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:58:9:58:10 | c2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:58:14:58:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | @@ -628,36 +628,36 @@ inferType | dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:66:31:78:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:68:9:68:10 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:9:68:10 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:68:9:68:10 | e1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:68:14:68:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:14:68:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:68:14:68:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:69:9:69:11 | _f1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:9:69:11 | _f1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:69:9:69:11 | _f1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:69:15:69:16 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:15:69:16 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:69:15:69:16 | e1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:69:15:69:24 | e1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:15:69:24 | e1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:69:15:69:24 | e1.deref() | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:72:9:72:10 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:9:72:10 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:72:9:72:10 | e2 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:72:14:72:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:14:72:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:72:14:72:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:73:9:73:11 | _f2 | | {EXTERNAL LOCATION} | char | | dereference.rs:73:15:73:17 | * ... | | {EXTERNAL LOCATION} | char | | dereference.rs:73:16:73:17 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:73:16:73:17 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:73:16:73:17 | e2 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:76:9:76:10 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:9:76:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:76:9:76:10 | e3 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:76:14:76:19 | &34i64 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:14:76:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:76:14:76:19 | &34i64 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:9:77:11 | _f3 | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:15:77:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:15:77:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:77:17:77:18 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:77:17:77:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:77:17:77:18 | e3 | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:80:31:92:1 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | @@ -667,12 +667,12 @@ inferType | dereference.rs:82:25:82:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | | dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | | dereference.rs:83:9:83:11 | _h1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:83:9:83:11 | _h1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:9:83:11 | _h1 | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:83:15:83:24 | g1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:83:15:83:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:83:15:83:24 | g1.deref() | TRef | {EXTERNAL LOCATION} | char | | dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | | dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:86:9:86:10 | g2 | T | {EXTERNAL LOCATION} | char | @@ -726,86 +726,86 @@ inferType | dereference.rs:131:19:139:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | | dereference.rs:132:17:132:26 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:17:132:26 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | | dereference.rs:132:17:132:26 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:17:132:26 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | | dereference.rs:132:30:132:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | | dereference.rs:132:30:132:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:132:30:132:57 | ...::new(...) | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:17:133:19 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:17:133:19 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:133:17:133:19 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:17:133:19 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:133:17:133:19 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:23:133:29 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:23:133:29 | &... | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:133:23:133:29 | &... | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:133:23:133:29 | &... | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:133:23:133:29 | &... | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:9:137:9 | if ... {...} | | {EXTERNAL LOCATION} | () | | dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:134:16:134:28 | Some(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:16:134:28 | Some(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:16:134:28 | Some(...) | T.&T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:16:134:28 | Some(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:16:134:28 | Some(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:21:134:27 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:134:21:134:27 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:21:134:27 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:21:134:27 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:21:134:27 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | | dereference.rs:134:32:134:41 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | | dereference.rs:134:32:134:41 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:41 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:32:134:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:134:32:134:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:47:134:49 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:134:47:134:49 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:47:134:49 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:134:47:134:49 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:134:47:134:49 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:134:52:137:9 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:136:13:136:15 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:136:13:136:15 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:15 | key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:136:13:136:15 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:15 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:13:136:15 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:136:13:136:15 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:136:13:136:25 | ... = ... | | {EXTERNAL LOCATION} | () | | dereference.rs:136:19:136:25 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:136:19:136:25 | ref_key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:19:136:25 | ref_key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:136:19:136:25 | ref_key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:19:136:25 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:136:19:136:25 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:136:19:136:25 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | | dereference.rs:138:9:138:18 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | K.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | | dereference.rs:138:9:138:18 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | V.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:18 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | | dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.&T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:27:138:29 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:27:138:29 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:138:27:138:29 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:27:138:29 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:27:138:29 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:138:32:138:34 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:32:138:34 | key | &T | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | &T | {EXTERNAL LOCATION} | & | -| dereference.rs:138:32:138:34 | key | &T.&T | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | TRef | dereference.rs:110:5:111:21 | Key | +| dereference.rs:138:32:138:34 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:138:32:138:34 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | | dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | | dereference.rs:151:16:151:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:151:16:151:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:151:16:151:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:152:13:152:13 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:158:16:158:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:158:16:158:19 | SelfParam | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:158:16:158:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i64 | @@ -813,12 +813,12 @@ inferType | dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | | dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | | dereference.rs:169:22:169:24 | arg | | {EXTERNAL LOCATION} | & | -| dereference.rs:169:22:169:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:169:22:169:24 | arg | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | | dereference.rs:170:13:170:13 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | | dereference.rs:176:22:176:24 | arg | | {EXTERNAL LOCATION} | & | -| dereference.rs:176:22:176:24 | arg | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:176:22:176:24 | arg | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | @@ -826,11 +826,11 @@ inferType | dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:13:182:13 | x | | {EXTERNAL LOCATION} | i64 | | dereference.rs:182:17:182:20 | (...) | | {EXTERNAL LOCATION} | & | -| dereference.rs:182:17:182:20 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:17:182:20 | (...) | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:182:17:182:26 | ... .foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:182:18:182:19 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:182:18:182:19 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:182:18:182:19 | &S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:183:13:183:13 | y | | dereference.rs:147:5:147:13 | S | | dereference.rs:183:13:183:13 | y | | {EXTERNAL LOCATION} | i64 | @@ -840,11 +840,11 @@ inferType | dereference.rs:184:13:184:13 | z | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:13:184:13 | z | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:17:184:24 | (...) | | {EXTERNAL LOCATION} | & | -| dereference.rs:184:17:184:24 | (...) | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:17:184:24 | (...) | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | dereference.rs:147:5:147:13 | S | | dereference.rs:184:17:184:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | | dereference.rs:184:18:184:23 | &mut S | | {EXTERNAL LOCATION} | & | -| dereference.rs:184:18:184:23 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:184:18:184:23 | &mut S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:13:186:13 | x | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:13:186:13 | x | | {EXTERNAL LOCATION} | i64 | @@ -852,7 +852,7 @@ inferType | dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:186:17:186:25 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:186:23:186:24 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:186:23:186:24 | &S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:186:23:186:24 | &S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:186:24:186:24 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:13:187:13 | y | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:13:187:13 | y | | {EXTERNAL LOCATION} | i64 | @@ -860,25 +860,25 @@ inferType | dereference.rs:187:17:187:29 | S.bar(...) | | dereference.rs:147:5:147:13 | S | | dereference.rs:187:17:187:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:187:23:187:28 | &mut S | | {EXTERNAL LOCATION} | & | -| dereference.rs:187:23:187:28 | &mut S | &T | dereference.rs:147:5:147:13 | S | +| dereference.rs:187:23:187:28 | &mut S | TRef | dereference.rs:147:5:147:13 | S | | dereference.rs:187:28:187:28 | S | | dereference.rs:147:5:147:13 | S | | dereference.rs:196:16:196:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:196:16:196:20 | SelfParam | &T | dereference.rs:195:5:197:5 | Self [trait Bar] | +| dereference.rs:196:16:196:20 | SelfParam | TRef | dereference.rs:195:5:197:5 | Self [trait Bar] | | dereference.rs:201:16:201:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:201:16:201:24 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:201:16:201:24 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | | dereference.rs:201:27:203:9 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:202:13:202:39 | MacroExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:202:22:202:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:202:22:202:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | | dereference.rs:202:22:202:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | dereference.rs:202:22:202:38 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:202:22:202:38 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:208:16:208:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:208:16:208:20 | SelfParam | &T | dereference.rs:193:5:193:17 | Foo | +| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | | dereference.rs:208:23:210:9 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:209:13:209:38 | MacroExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:209:22:209:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | &T | {EXTERNAL LOCATION} | str | +| dereference.rs:209:22:209:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | | dereference.rs:209:22:209:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | dereference.rs:209:22:209:37 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | | dereference.rs:209:22:209:37 | { ... } | | {EXTERNAL LOCATION} | () | @@ -897,53 +897,53 @@ inferType | dereference.rs:226:5:226:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | | dereference.rs:227:5:227:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | +| dyn_type.rs:7:10:7:14 | SelfParam | TRef | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:12:12:12:16 | SelfParam | &T | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | +| dyn_type.rs:12:12:12:16 | SelfParam | TRef | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | | dyn_type.rs:18:12:18:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:18:12:18:16 | SelfParam | &T | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | +| dyn_type.rs:18:12:18:16 | SelfParam | TRef | dyn_type.rs:15:1:19:1 | Self [trait AssocTrait] | | dyn_type.rs:28:10:28:14 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:28:10:28:14 | SelfParam | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dyn_type.rs:28:10:28:14 | SelfParam | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:28:27:30:5 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:9:29:43 | MacroExpr | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | &T | {EXTERNAL LOCATION} | str | +| dyn_type.rs:29:17:29:30 | "MyTrait1: {}" | TRef | {EXTERNAL LOCATION} | str | | dyn_type.rs:29:17:29:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | MacroBlockExpr | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:17:29:42 | { ... } | | {EXTERNAL LOCATION} | String | | dyn_type.rs:29:33:29:36 | self | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:29:33:29:36 | self | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dyn_type.rs:29:33:29:36 | self | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:29:33:29:42 | self.value | | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:40:12:40:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:40:12:40:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:40:12:40:16 | SelfParam | &T.A | dyn_type.rs:38:6:38:21 | A | +| dyn_type.rs:40:12:40:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:40:12:40:16 | SelfParam | TRef.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:40:24:42:5 | { ... } | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:12 | self | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:41:9:41:12 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:41:9:41:12 | self | &T.A | dyn_type.rs:38:6:38:21 | A | +| dyn_type.rs:41:9:41:12 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:41:9:41:12 | self | TRef.A | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:18 | self.value | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:41:9:41:26 | ... .clone() | | dyn_type.rs:38:6:38:21 | A | | dyn_type.rs:51:12:51:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:51:12:51:16 | SelfParam | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:51:12:51:16 | SelfParam | &T.A | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:51:12:51:16 | SelfParam | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:51:12:51:16 | SelfParam | TRef.A | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:51:34:53:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:51:34:53:5 | { ... } | 0(2) | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:51:34:53:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:51:34:53:5 | { ... } | T0 | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:51:34:53:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:52:9:52:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:52:9:52:34 | TupleExpr | 0(2) | dyn_type.rs:45:6:45:8 | GGP | -| dyn_type.rs:52:9:52:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:52:9:52:34 | TupleExpr | T0 | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:52:9:52:34 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:52:10:52:13 | self | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:52:10:52:13 | self | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:52:10:52:13 | self | &T.A | dyn_type.rs:45:6:45:8 | GGP | +| dyn_type.rs:52:10:52:13 | self | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:52:10:52:13 | self | TRef.A | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:19 | self.value | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:10:52:27 | ... .clone() | | dyn_type.rs:45:6:45:8 | GGP | | dyn_type.rs:52:30:52:33 | true | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:56:40:56:40 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:56:40:56:40 | a | &T | dyn_type.rs:56:13:56:37 | G | +| dyn_type.rs:56:40:56:40 | a | TRef | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:56:52:58:1 | { ... } | | dyn_type.rs:56:10:56:10 | A | | dyn_type.rs:57:5:57:5 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:57:5:57:5 | a | &T | dyn_type.rs:56:13:56:37 | G | +| dyn_type.rs:57:5:57:5 | a | TRef | dyn_type.rs:56:13:56:37 | G | | dyn_type.rs:57:5:57:11 | a.get() | | dyn_type.rs:56:10:56:10 | A | | dyn_type.rs:60:46:60:46 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:60:78:62:1 | { ... } | | {EXTERNAL LOCATION} | Box | @@ -960,17 +960,17 @@ inferType | dyn_type.rs:61:14:61:35 | GenStruct {...} | A | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:61:33:61:33 | a | | dyn_type.rs:60:18:60:43 | A | | dyn_type.rs:64:25:64:27 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:64:25:64:27 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:64:25:64:27 | obj | TRef | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:64:45:66:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:65:9:65:15 | _result | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:19:65:24 | (...) | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:65:19:65:28 | ... .m() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:65:20:65:23 | * ... | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:65:21:65:23 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:65:21:65:23 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:65:21:65:23 | obj | TRef | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | | dyn_type.rs:68:27:68:29 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:68:27:68:29 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:68:27:68:29 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:68:27:68:29 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:68:27:68:29 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:68:57:71:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:69:9:69:16 | _result1 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:20:69:25 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | @@ -979,13 +979,13 @@ inferType | dyn_type.rs:69:21:69:24 | * ... | | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:69:21:69:24 | * ... | dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:69:22:69:24 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:69:22:69:24 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:69:22:69:24 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:69:22:69:24 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:69:22:69:24 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:9:70:16 | _result2 | | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:20:70:29 | get_a(...) | | {EXTERNAL LOCATION} | String | | dyn_type.rs:70:26:70:28 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:70:26:70:28 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | -| dyn_type.rs:70:26:70:28 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:70:26:70:28 | obj | TRef | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:70:26:70:28 | obj | TRef.dyn(A) | {EXTERNAL LOCATION} | String | | dyn_type.rs:73:26:76:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:74:9:74:11 | obj | | {EXTERNAL LOCATION} | Box | | dyn_type.rs:74:9:74:11 | obj | A | {EXTERNAL LOCATION} | Global | @@ -1007,96 +1007,96 @@ inferType | dyn_type.rs:75:21:75:23 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | | dyn_type.rs:75:21:75:23 | obj | T.dyn(A) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:78:24:78:24 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:78:24:78:24 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:78:24:78:24 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:78:24:78:24 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:78:24:78:24 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:78:24:78:24 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:78:24:78:24 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | | dyn_type.rs:78:65:80:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:78:65:80:1 | { ... } | 0(2) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:78:65:80:1 | { ... } | 1(2) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:78:65:80:1 | { ... } | T0 | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:78:65:80:1 | { ... } | T1 | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:79:5:79:5 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:79:5:79:5 | a | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:79:5:79:5 | a | &T.dyn(AP) | dyn_type.rs:78:21:78:21 | B | -| dyn_type.rs:79:5:79:5 | a | &T.dyn(GP) | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:79:5:79:5 | a | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:79:5:79:5 | a | TRef.dyn(AP) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:79:5:79:5 | a | TRef.dyn(GP) | dyn_type.rs:78:18:78:18 | A | | dyn_type.rs:79:5:79:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:79:5:79:11 | a.get() | 0(2) | dyn_type.rs:78:18:78:18 | A | -| dyn_type.rs:79:5:79:11 | a.get() | 1(2) | dyn_type.rs:78:21:78:21 | B | +| dyn_type.rs:79:5:79:11 | a.get() | T0 | dyn_type.rs:78:18:78:18 | A | +| dyn_type.rs:79:5:79:11 | a.get() | T1 | dyn_type.rs:78:21:78:21 | B | | dyn_type.rs:82:55:82:55 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:82:55:82:55 | a | &T | dyn_type.rs:82:20:82:52 | T | +| dyn_type.rs:82:55:82:55 | a | TRef | dyn_type.rs:82:20:82:52 | T | | dyn_type.rs:82:72:84:1 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:82:72:84:1 | { ... } | 0(2) | dyn_type.rs:82:14:82:14 | A | -| dyn_type.rs:82:72:84:1 | { ... } | 1(2) | dyn_type.rs:82:17:82:17 | B | +| dyn_type.rs:82:72:84:1 | { ... } | T0 | dyn_type.rs:82:14:82:14 | A | +| dyn_type.rs:82:72:84:1 | { ... } | T1 | dyn_type.rs:82:17:82:17 | B | | dyn_type.rs:83:5:83:5 | a | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:83:5:83:5 | a | &T | dyn_type.rs:82:20:82:52 | T | +| dyn_type.rs:83:5:83:5 | a | TRef | dyn_type.rs:82:20:82:52 | T | | dyn_type.rs:83:5:83:11 | a.get() | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:83:5:83:11 | a.get() | 0(2) | dyn_type.rs:82:14:82:14 | A | -| dyn_type.rs:83:5:83:11 | a.get() | 1(2) | dyn_type.rs:82:17:82:17 | B | +| dyn_type.rs:83:5:83:11 | a.get() | T0 | dyn_type.rs:82:14:82:14 | A | +| dyn_type.rs:83:5:83:11 | a.get() | T1 | dyn_type.rs:82:17:82:17 | B | | dyn_type.rs:86:20:86:22 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:86:20:86:22 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:86:20:86:22 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:86:20:86:22 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:86:20:86:22 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:86:20:86:22 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:86:20:86:22 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:86:58:99:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:87:9:90:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:87:9:90:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:87:9:90:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:87:9:90:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:87:9:90:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:88:9:88:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:89:9:89:11 | _ap | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:9:90:14 | (...) | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:9:90:14 | (...) | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:9:90:14 | (...) | dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:90:9:90:20 | ... .get() | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:90:9:90:20 | ... .get() | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:90:9:90:20 | ... .get() | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:90:9:90:20 | ... .get() | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:90:9:90:20 | ... .get() | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | | dyn_type.rs:15:1:19:1 | dyn AssocTrait | | dyn_type.rs:90:10:90:13 | * ... | dyn(AP) | {EXTERNAL LOCATION} | bool | | dyn_type.rs:90:10:90:13 | * ... | dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:90:11:90:13 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:90:11:90:13 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:90:11:90:13 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:90:11:90:13 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:90:11:90:13 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:90:11:90:13 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:90:11:90:13 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:91:9:94:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:91:9:94:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:91:9:94:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:91:9:94:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:91:9:94:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:92:9:92:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:93:9:93:11 | _ap | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:94:9:94:26 | assoc_dyn_get(...) | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:94:23:94:25 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:94:23:94:25 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:94:23:94:25 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:94:23:94:25 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:94:23:94:25 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:94:23:94:25 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:94:23:94:25 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:95:9:98:5 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:95:9:98:5 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:95:9:98:5 | TuplePat | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:95:9:98:5 | TuplePat | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:95:9:98:5 | TuplePat | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:96:9:96:11 | _gp | | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:97:9:97:11 | _ap | | {EXTERNAL LOCATION} | bool | | dyn_type.rs:98:9:98:22 | assoc_get(...) | | {EXTERNAL LOCATION} | (T_2) | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | 0(2) | {EXTERNAL LOCATION} | i64 | -| dyn_type.rs:98:9:98:22 | assoc_get(...) | 1(2) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | T0 | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:98:9:98:22 | assoc_get(...) | T1 | {EXTERNAL LOCATION} | bool | | dyn_type.rs:98:19:98:21 | obj | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:98:19:98:21 | obj | &T | dyn_type.rs:15:1:19:1 | dyn AssocTrait | -| dyn_type.rs:98:19:98:21 | obj | &T.dyn(AP) | {EXTERNAL LOCATION} | bool | -| dyn_type.rs:98:19:98:21 | obj | &T.dyn(GP) | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:98:19:98:21 | obj | TRef | dyn_type.rs:15:1:19:1 | dyn AssocTrait | +| dyn_type.rs:98:19:98:21 | obj | TRef.dyn(AP) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:98:19:98:21 | obj | TRef.dyn(GP) | {EXTERNAL LOCATION} | i64 | | dyn_type.rs:101:15:108:1 | { ... } | | {EXTERNAL LOCATION} | () | | dyn_type.rs:102:5:102:49 | test_basic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:102:26:102:48 | &... | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:102:26:102:48 | &... | &T | dyn_type.rs:21:1:24:1 | MyStruct | +| dyn_type.rs:102:26:102:48 | &... | TRef | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:27:102:48 | MyStruct {...} | | dyn_type.rs:21:1:24:1 | MyStruct | | dyn_type.rs:102:45:102:46 | 42 | | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:103:5:105:6 | test_generic_dyn_trait(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:103:28:105:5 | &... | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:103:28:105:5 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:103:28:105:5 | &... | &T.A | {EXTERNAL LOCATION} | String | +| dyn_type.rs:103:28:105:5 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:103:28:105:5 | &... | TRef.A | {EXTERNAL LOCATION} | String | | dyn_type.rs:103:29:105:5 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:103:29:105:5 | GenStruct {...} | A | {EXTERNAL LOCATION} | String | | dyn_type.rs:104:16:104:17 | "" | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:104:16:104:17 | "" | &T | {EXTERNAL LOCATION} | str | +| dyn_type.rs:104:16:104:17 | "" | TRef | {EXTERNAL LOCATION} | str | | dyn_type.rs:104:16:104:29 | "".to_string() | | {EXTERNAL LOCATION} | String | | dyn_type.rs:106:5:106:25 | test_poly_dyn_trait(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:107:5:107:46 | test_assoc_type(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:107:21:107:45 | &... | | {EXTERNAL LOCATION} | & | -| dyn_type.rs:107:21:107:45 | &... | &T | dyn_type.rs:33:1:36:1 | GenStruct | -| dyn_type.rs:107:21:107:45 | &... | &T.A | {EXTERNAL LOCATION} | i32 | +| dyn_type.rs:107:21:107:45 | &... | TRef | dyn_type.rs:33:1:36:1 | GenStruct | +| dyn_type.rs:107:21:107:45 | &... | TRef.A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:22:107:45 | GenStruct {...} | | dyn_type.rs:33:1:36:1 | GenStruct | | dyn_type.rs:107:22:107:45 | GenStruct {...} | A | {EXTERNAL LOCATION} | i32 | | dyn_type.rs:107:41:107:43 | 100 | | {EXTERNAL LOCATION} | i32 | @@ -1135,26 +1135,26 @@ inferType | invalid/main.rs:47:17:47:21 | ... + ... | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:47:21:47:21 | b | | invalid/main.rs:21:5:22:20 | Num | | invalid/main.rs:57:19:57:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:57:19:57:23 | SelfParam | &T | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | +| invalid/main.rs:57:19:57:23 | SelfParam | TRef | invalid/main.rs:56:5:58:5 | Self [trait Clone1] | | invalid/main.rs:61:22:61:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:61:22:61:26 | SelfParam | &T | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | +| invalid/main.rs:61:22:61:26 | SelfParam | TRef | invalid/main.rs:60:5:64:5 | Self [trait Duplicatable] | | invalid/main.rs:68:19:68:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:68:19:68:23 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:68:19:68:23 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:68:34:70:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:69:13:69:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:69:14:69:17 | self | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:69:14:69:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:69:14:69:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:75:22:75:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:75:22:75:26 | SelfParam | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:75:22:75:26 | SelfParam | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:75:37:77:9 | { ... } | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:76:13:76:17 | * ... | | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:76:14:76:17 | self | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:76:14:76:17 | self | &T | invalid/main.rs:53:5:54:14 | S1 | +| invalid/main.rs:76:14:76:17 | self | TRef | invalid/main.rs:53:5:54:14 | S1 | | invalid/main.rs:83:22:83:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:83:22:83:26 | SelfParam | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:83:22:83:26 | SelfParam | TRef | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:83:37:85:9 | { ... } | | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:16 | self | | {EXTERNAL LOCATION} | & | -| invalid/main.rs:84:13:84:16 | self | &T | invalid/main.rs:81:10:81:18 | T | +| invalid/main.rs:84:13:84:16 | self | TRef | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:84:13:84:25 | self.clone1() | | invalid/main.rs:81:10:81:18 | T | | invalid/main.rs:88:33:92:5 | { ... } | | {EXTERNAL LOCATION} | () | | invalid/main.rs:91:13:91:13 | x | | invalid/main.rs:53:5:54:14 | S1 | @@ -1165,7 +1165,7 @@ inferType | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | | main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:27:18:27:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:27:18:27:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:27:18:27:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | @@ -1178,7 +1178,7 @@ inferType | main.rs:31:17:31:17 | x | A | {EXTERNAL LOCATION} | bool | | main.rs:31:17:31:19 | x.a | | {EXTERNAL LOCATION} | bool | | main.rs:32:18:32:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:32:18:32:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:32:18:32:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:32:18:32:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:32:18:32:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | @@ -1189,7 +1189,7 @@ inferType | main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:3:5:4:13 | S | | main.rs:37:40:37:40 | S | | main.rs:3:5:4:13 | S | | main.rs:38:18:38:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:38:18:38:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:38:18:38:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:38:18:38:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | @@ -1201,7 +1201,7 @@ inferType | main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:3:5:4:13 | S | | main.rs:41:35:41:35 | S | | main.rs:3:5:4:13 | S | | main.rs:42:18:42:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:42:18:42:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:42:18:42:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:42:18:42:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | @@ -1212,7 +1212,7 @@ inferType | main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:49:18:49:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:49:18:49:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:49:18:49:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:49:18:49:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | @@ -1227,7 +1227,7 @@ inferType | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:55:18:55:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:55:18:55:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:55:18:55:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:55:18:55:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | @@ -1251,7 +1251,7 @@ inferType | main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:61:30:61:32 | x.a | T | main.rs:3:5:4:13 | S | | main.rs:62:18:62:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:62:18:62:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:62:18:62:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:62:18:62:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | @@ -1267,7 +1267,7 @@ inferType | main.rs:80:13:80:16 | self | | main.rs:72:5:72:21 | Foo | | main.rs:84:23:89:5 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:85:18:85:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:85:18:85:33 | "main.rs::m1::f\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:85:18:85:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:85:18:85:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:86:13:86:13 | x | | main.rs:72:5:72:21 | Foo | @@ -1279,7 +1279,7 @@ inferType | main.rs:91:22:91:22 | y | | main.rs:72:5:72:21 | Foo | | main.rs:91:37:95:5 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:92:18:92:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:92:18:92:33 | "main.rs::m1::g\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:92:18:92:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:92:18:92:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:93:9:93:9 | x | | main.rs:72:5:72:21 | Foo | @@ -1305,17 +1305,17 @@ inferType | main.rs:120:17:120:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | | main.rs:120:39:120:39 | y | | main.rs:99:5:102:5 | MyThing | | main.rs:130:25:130:29 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:130:25:130:29 | SelfParam | &T | main.rs:128:9:133:9 | Self [trait Foo] | +| main.rs:130:25:130:29 | SelfParam | TRef | main.rs:128:9:133:9 | Self [trait Foo] | | main.rs:130:32:132:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:131:26:131:31 | "foo!\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:131:26:131:31 | "foo!\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:131:26:131:31 | "foo!\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:131:26:131:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:131:26:131:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:137:25:137:29 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:137:25:137:29 | SelfParam | &T | main.rs:135:9:140:9 | Self [trait Bar] | +| main.rs:137:25:137:29 | SelfParam | TRef | main.rs:135:9:140:9 | Self [trait Bar] | | main.rs:137:32:139:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:138:26:138:31 | "bar!\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:138:26:138:31 | "bar!\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:138:26:138:31 | "bar!\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:138:26:138:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:138:26:138:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:149:15:170:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -1333,11 +1333,11 @@ inferType | main.rs:163:9:169:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:167:13:167:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | | main.rs:167:27:167:28 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:167:27:167:28 | &x | &T | main.rs:142:9:142:21 | X | +| main.rs:167:27:167:28 | &x | TRef | main.rs:142:9:142:21 | X | | main.rs:167:28:167:28 | x | | main.rs:142:9:142:21 | X | | main.rs:168:13:168:29 | ...::a_method(...) | | {EXTERNAL LOCATION} | () | | main.rs:168:27:168:28 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:168:27:168:28 | &x | &T | main.rs:142:9:142:21 | X | +| main.rs:168:27:168:28 | &x | TRef | main.rs:142:9:142:21 | X | | main.rs:168:28:168:28 | x | | main.rs:142:9:142:21 | X | | main.rs:186:15:186:18 | SelfParam | | main.rs:174:5:177:5 | MyThing | | main.rs:186:15:186:18 | SelfParam | A | main.rs:179:5:180:14 | S1 | @@ -1372,28 +1372,28 @@ inferType | main.rs:206:17:206:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:206:30:206:31 | S2 | | main.rs:181:5:182:14 | S2 | | main.rs:209:18:209:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:209:18:209:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:209:18:209:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:209:18:209:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:209:18:209:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:209:26:209:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:209:26:209:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:209:26:209:28 | x.a | | main.rs:179:5:180:14 | S1 | | main.rs:210:18:210:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:210:18:210:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:210:18:210:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:210:18:210:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:210:18:210:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:210:26:210:26 | y | | main.rs:174:5:177:5 | MyThing | | main.rs:210:26:210:26 | y | A | main.rs:181:5:182:14 | S2 | | main.rs:210:26:210:28 | y.a | | main.rs:181:5:182:14 | S2 | | main.rs:212:18:212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:212:18:212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:212:18:212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:212:18:212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:212:18:212:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:212:26:212:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:212:26:212:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:212:26:212:31 | x.m1() | | main.rs:179:5:180:14 | S1 | | main.rs:213:18:213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:213:18:213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:213:18:213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:213:18:213:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:213:18:213:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:213:26:213:26 | y | | main.rs:174:5:177:5 | MyThing | @@ -1412,14 +1412,14 @@ inferType | main.rs:216:17:216:33 | MyThing {...} | A | main.rs:181:5:182:14 | S2 | | main.rs:216:30:216:31 | S2 | | main.rs:181:5:182:14 | S2 | | main.rs:218:18:218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:218:18:218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:218:18:218:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:218:18:218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:218:18:218:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:218:26:218:26 | x | | main.rs:174:5:177:5 | MyThing | | main.rs:218:26:218:26 | x | A | main.rs:179:5:180:14 | S1 | | main.rs:218:26:218:31 | x.m2() | | main.rs:179:5:180:14 | S1 | | main.rs:219:18:219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:219:18:219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:219:18:219:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:219:18:219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:219:18:219:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:219:26:219:26 | y | | main.rs:174:5:177:5 | MyThing | @@ -1562,14 +1562,14 @@ inferType | main.rs:374:24:374:40 | MyThing {...} | A | main.rs:239:5:240:14 | S3 | | main.rs:374:37:374:38 | S3 | | main.rs:239:5:240:14 | S3 | | main.rs:378:18:378:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:378:18:378:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:378:18:378:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:378:18:378:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:378:18:378:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:378:26:378:33 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:378:26:378:33 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:378:26:378:38 | thing_s1.m1() | | main.rs:235:5:236:14 | S1 | | main.rs:379:18:379:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:379:18:379:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:379:18:379:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:379:18:379:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:379:18:379:40 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:379:26:379:33 | thing_s2 | | main.rs:224:5:227:5 | MyThing | @@ -1582,7 +1582,7 @@ inferType | main.rs:380:22:380:29 | thing_s3 | A | main.rs:239:5:240:14 | S3 | | main.rs:380:22:380:34 | thing_s3.m1() | | main.rs:239:5:240:14 | S3 | | main.rs:381:18:381:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:381:18:381:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:381:18:381:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:381:18:381:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:381:18:381:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:381:26:381:27 | s3 | | main.rs:239:5:240:14 | S3 | @@ -1595,7 +1595,7 @@ inferType | main.rs:383:31:383:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:383:39:383:40 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:384:18:384:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:384:18:384:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:384:18:384:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:384:18:384:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:384:18:384:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:384:26:384:27 | p1 | | main.rs:229:5:233:5 | MyPair | @@ -1611,7 +1611,7 @@ inferType | main.rs:386:31:386:32 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:386:39:386:40 | S2 | | main.rs:237:5:238:14 | S2 | | main.rs:387:18:387:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:387:18:387:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:387:18:387:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:387:18:387:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:387:18:387:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:387:26:387:27 | p2 | | main.rs:229:5:233:5 | MyPair | @@ -1631,7 +1631,7 @@ inferType | main.rs:390:30:390:31 | S1 | | main.rs:235:5:236:14 | S1 | | main.rs:391:17:391:18 | S3 | | main.rs:239:5:240:14 | S3 | | main.rs:393:18:393:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:393:18:393:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:393:18:393:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:393:18:393:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:393:18:393:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:393:26:393:27 | p3 | | main.rs:229:5:233:5 | MyPair | @@ -1653,7 +1653,7 @@ inferType | main.rs:397:17:397:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:397:17:397:23 | a.fst() | | main.rs:235:5:236:14 | S1 | | main.rs:398:18:398:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:398:18:398:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:398:18:398:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:398:18:398:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:398:18:398:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:398:26:398:26 | x | | main.rs:235:5:236:14 | S1 | @@ -1663,7 +1663,7 @@ inferType | main.rs:399:17:399:17 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:399:17:399:23 | a.snd() | | main.rs:235:5:236:14 | S1 | | main.rs:400:18:400:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:400:18:400:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:400:18:400:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:400:18:400:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:400:18:400:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:400:26:400:26 | y | | main.rs:235:5:236:14 | S1 | @@ -1681,7 +1681,7 @@ inferType | main.rs:407:17:407:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:407:17:407:23 | b.fst() | | main.rs:235:5:236:14 | S1 | | main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:408:18:408:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:408:18:408:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:408:18:408:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:408:18:408:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:408:26:408:26 | x | | main.rs:235:5:236:14 | S1 | @@ -1691,7 +1691,7 @@ inferType | main.rs:409:17:409:17 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:409:17:409:23 | b.snd() | | main.rs:237:5:238:14 | S2 | | main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:410:18:410:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:410:18:410:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:410:18:410:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:410:18:410:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:410:26:410:26 | y | | main.rs:237:5:238:14 | S2 | @@ -1700,7 +1700,7 @@ inferType | main.rs:414:31:414:38 | thing_s1 | | main.rs:224:5:227:5 | MyThing | | main.rs:414:31:414:38 | thing_s1 | A | main.rs:235:5:236:14 | S1 | | main.rs:415:18:415:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:415:18:415:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:415:18:415:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:415:18:415:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:415:18:415:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:415:26:415:26 | x | | main.rs:235:5:236:14 | S1 | @@ -1711,7 +1711,7 @@ inferType | main.rs:416:31:416:38 | thing_s2 | | main.rs:224:5:227:5 | MyThing | | main.rs:416:31:416:38 | thing_s2 | A | main.rs:237:5:238:14 | S2 | | main.rs:417:18:417:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:417:18:417:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:417:18:417:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:417:18:417:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:417:18:417:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:417:26:417:26 | y | | main.rs:224:5:227:5 | MyThing | @@ -1731,7 +1731,7 @@ inferType | main.rs:421:25:421:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:421:25:421:25 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:422:18:422:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:422:18:422:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:422:18:422:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:422:26:422:26 | x | | main.rs:235:5:236:14 | S1 | @@ -1741,7 +1741,7 @@ inferType | main.rs:423:25:423:25 | a | P1 | main.rs:235:5:236:14 | S1 | | main.rs:423:25:423:25 | a | P2 | main.rs:235:5:236:14 | S1 | | main.rs:424:18:424:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:424:18:424:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:424:18:424:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:424:18:424:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:424:26:424:26 | y | | main.rs:235:5:236:14 | S1 | @@ -1759,7 +1759,7 @@ inferType | main.rs:428:25:428:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:428:25:428:25 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:429:18:429:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:429:18:429:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:429:26:429:26 | x | | main.rs:235:5:236:14 | S1 | @@ -1769,7 +1769,7 @@ inferType | main.rs:430:25:430:25 | b | P1 | main.rs:237:5:238:14 | S2 | | main.rs:430:25:430:25 | b | P2 | main.rs:235:5:236:14 | S1 | | main.rs:431:18:431:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:431:18:431:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:431:18:431:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:431:18:431:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:431:18:431:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:431:26:431:26 | y | | main.rs:237:5:238:14 | S2 | @@ -1852,63 +1852,63 @@ inferType | main.rs:512:48:514:9 | { ... } | | main.rs:446:5:447:14 | S1 | | main.rs:513:13:513:14 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:521:14:521:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:521:14:521:18 | SelfParam | &T | main.rs:520:5:522:5 | Self [trait OverlappingTrait2] | +| main.rs:521:14:521:18 | SelfParam | TRef | main.rs:520:5:522:5 | Self [trait OverlappingTrait2] | | main.rs:521:21:521:21 | x | | {EXTERNAL LOCATION} | & | -| main.rs:521:21:521:21 | x | &T | main.rs:520:29:520:29 | T | +| main.rs:521:21:521:21 | x | TRef | main.rs:520:29:520:29 | T | | main.rs:526:14:526:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:526:14:526:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | -| main.rs:526:14:526:18 | SelfParam | &T.T3 | main.rs:524:10:524:10 | T | +| main.rs:526:14:526:18 | SelfParam | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:526:14:526:18 | SelfParam | TRef.T3 | main.rs:524:10:524:10 | T | | main.rs:526:21:526:21 | x | | {EXTERNAL LOCATION} | & | -| main.rs:526:21:526:21 | x | &T | main.rs:524:10:524:10 | T | +| main.rs:526:21:526:21 | x | TRef | main.rs:524:10:524:10 | T | | main.rs:526:37:528:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:526:37:528:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | -| main.rs:526:37:528:9 | { ... } | &T.T3 | main.rs:524:10:524:10 | T | +| main.rs:526:37:528:9 | { ... } | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:526:37:528:9 | { ... } | TRef.T3 | main.rs:524:10:524:10 | T | | main.rs:527:13:527:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:527:13:527:16 | self | &T | main.rs:517:5:518:22 | S3 | -| main.rs:527:13:527:16 | self | &T.T3 | main.rs:524:10:524:10 | T | +| main.rs:527:13:527:16 | self | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:527:13:527:16 | self | TRef.T3 | main.rs:524:10:524:10 | T | | main.rs:533:14:533:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:533:14:533:18 | SelfParam | &T | main.rs:517:5:518:22 | S3 | -| main.rs:533:14:533:18 | SelfParam | &T.T3 | main.rs:531:10:531:10 | T | +| main.rs:533:14:533:18 | SelfParam | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:533:14:533:18 | SelfParam | TRef.T3 | main.rs:531:10:531:10 | T | | main.rs:533:21:533:21 | x | | main.rs:531:10:531:10 | T | | main.rs:533:36:535:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:533:36:535:9 | { ... } | &T | main.rs:517:5:518:22 | S3 | -| main.rs:533:36:535:9 | { ... } | &T.T3 | main.rs:531:10:531:10 | T | +| main.rs:533:36:535:9 | { ... } | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:533:36:535:9 | { ... } | TRef.T3 | main.rs:531:10:531:10 | T | | main.rs:534:13:534:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:534:13:534:16 | self | &T | main.rs:517:5:518:22 | S3 | -| main.rs:534:13:534:16 | self | &T.T3 | main.rs:531:10:531:10 | T | +| main.rs:534:13:534:16 | self | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:534:13:534:16 | self | TRef.T3 | main.rs:531:10:531:10 | T | | main.rs:540:14:540:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:540:14:540:18 | SelfParam | &T | main.rs:538:5:541:5 | Self [trait MyTrait1] | +| main.rs:540:14:540:18 | SelfParam | TRef | main.rs:538:5:541:5 | Self [trait MyTrait1] | | main.rs:540:21:540:22 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:550:14:550:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:550:14:550:18 | SelfParam | &T | main.rs:545:5:546:14 | S4 | +| main.rs:550:14:550:18 | SelfParam | TRef | main.rs:545:5:546:14 | S4 | | main.rs:550:21:550:22 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:560:14:560:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:560:14:560:18 | SelfParam | &T | main.rs:555:5:556:22 | S5 | -| main.rs:560:14:560:18 | SelfParam | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:560:14:560:18 | SelfParam | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:560:14:560:18 | SelfParam | TRef.T5 | {EXTERNAL LOCATION} | i32 | | main.rs:560:21:560:22 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:569:16:595:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:570:13:570:13 | x | | main.rs:446:5:447:14 | S1 | | main.rs:570:17:570:18 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:571:18:571:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:571:18:571:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:571:18:571:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:571:18:571:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:571:18:571:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:571:26:571:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:571:26:571:42 | x.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:572:18:572:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:572:18:572:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:572:18:572:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:572:18:572:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:572:18:572:45 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:572:26:572:45 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | | main.rs:572:44:572:44 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:18:573:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:573:18:573:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:573:18:573:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:573:18:573:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:573:18:573:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:573:26:573:26 | x | | main.rs:446:5:447:14 | S1 | | main.rs:573:26:573:44 | x.common_method_2() | | main.rs:446:5:447:14 | S1 | | main.rs:574:18:574:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:574:18:574:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:574:18:574:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:574:18:574:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:574:18:574:47 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:574:26:574:47 | ...::common_method_2(...) | | main.rs:446:5:447:14 | S1 | @@ -1919,14 +1919,14 @@ inferType | main.rs:576:17:576:22 | S2(...) | T2 | main.rs:446:5:447:14 | S1 | | main.rs:576:20:576:21 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:577:18:577:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:577:18:577:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:577:18:577:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:577:18:577:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:577:18:577:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:577:26:577:26 | y | | main.rs:479:5:479:22 | S2 | | main.rs:577:26:577:26 | y | T2 | main.rs:446:5:447:14 | S1 | | main.rs:577:26:577:42 | y.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:578:18:578:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:578:18:578:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:578:18:578:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:578:18:578:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:578:18:578:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:578:26:578:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | @@ -1939,14 +1939,14 @@ inferType | main.rs:580:17:580:21 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:580:20:580:20 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:581:18:581:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:581:18:581:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:581:18:581:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:581:18:581:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:581:18:581:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:581:26:581:26 | z | | main.rs:479:5:479:22 | S2 | | main.rs:581:26:581:26 | z | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:581:26:581:42 | z.common_method() | | main.rs:446:5:447:14 | S1 | | main.rs:582:18:582:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:582:18:582:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:582:18:582:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:582:18:582:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:582:18:582:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:582:26:582:49 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | @@ -1954,7 +1954,7 @@ inferType | main.rs:582:44:582:48 | S2(...) | T2 | {EXTERNAL LOCATION} | i32 | | main.rs:582:47:582:47 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:583:18:583:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:583:18:583:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:583:18:583:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:583:18:583:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:583:18:583:56 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:583:26:583:56 | ...::common_method(...) | | main.rs:446:5:447:14 | S1 | @@ -1967,25 +1967,25 @@ inferType | main.rs:585:17:585:22 | S3(...) | T3 | main.rs:446:5:447:14 | S1 | | main.rs:585:20:585:21 | S1 | | main.rs:446:5:447:14 | S1 | | main.rs:586:18:586:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:586:18:586:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:586:18:586:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:586:18:586:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:586:18:586:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:586:26:586:26 | w | | main.rs:517:5:518:22 | S3 | | main.rs:586:26:586:26 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:586:26:586:31 | w.m(...) | | {EXTERNAL LOCATION} | & | -| main.rs:586:26:586:31 | w.m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:586:26:586:31 | w.m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:586:26:586:31 | w.m(...) | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:586:26:586:31 | w.m(...) | TRef.T3 | main.rs:446:5:447:14 | S1 | | main.rs:586:30:586:30 | x | | main.rs:446:5:447:14 | S1 | | main.rs:587:18:587:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:587:18:587:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:587:18:587:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:587:18:587:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:587:18:587:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:587:26:587:37 | ...::m(...) | | {EXTERNAL LOCATION} | & | -| main.rs:587:26:587:37 | ...::m(...) | &T | main.rs:517:5:518:22 | S3 | -| main.rs:587:26:587:37 | ...::m(...) | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:26:587:37 | ...::m(...) | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:587:26:587:37 | ...::m(...) | TRef.T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:32:587:33 | &w | | {EXTERNAL LOCATION} | & | -| main.rs:587:32:587:33 | &w | &T | main.rs:517:5:518:22 | S3 | -| main.rs:587:32:587:33 | &w | &T.T3 | main.rs:446:5:447:14 | S1 | +| main.rs:587:32:587:33 | &w | TRef | main.rs:517:5:518:22 | S3 | +| main.rs:587:32:587:33 | &w | TRef.T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:33:587:33 | w | | main.rs:517:5:518:22 | S3 | | main.rs:587:33:587:33 | w | T3 | main.rs:446:5:447:14 | S1 | | main.rs:587:36:587:36 | x | | main.rs:446:5:447:14 | S1 | @@ -1993,7 +1993,7 @@ inferType | main.rs:589:9:589:14 | S4.m() | | {EXTERNAL LOCATION} | () | | main.rs:590:9:590:18 | ...::m(...) | | {EXTERNAL LOCATION} | () | | main.rs:590:15:590:17 | &S4 | | {EXTERNAL LOCATION} | & | -| main.rs:590:15:590:17 | &S4 | &T | main.rs:545:5:546:14 | S4 | +| main.rs:590:15:590:17 | &S4 | TRef | main.rs:545:5:546:14 | S4 | | main.rs:590:16:590:17 | S4 | | main.rs:545:5:546:14 | S4 | | main.rs:591:9:591:16 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:591:9:591:16 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | @@ -2001,8 +2001,8 @@ inferType | main.rs:591:12:591:15 | 0i32 | | {EXTERNAL LOCATION} | i32 | | main.rs:592:9:592:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | | main.rs:592:15:592:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:592:15:592:23 | &... | &T | main.rs:555:5:556:22 | S5 | -| main.rs:592:15:592:23 | &... | &T.T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:592:15:592:23 | &... | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:592:15:592:23 | &... | TRef.T5 | {EXTERNAL LOCATION} | i32 | | main.rs:592:16:592:23 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:592:16:592:23 | S5(...) | T5 | {EXTERNAL LOCATION} | i32 | | main.rs:592:19:592:22 | 0i32 | | {EXTERNAL LOCATION} | i32 | @@ -2012,8 +2012,8 @@ inferType | main.rs:593:12:593:15 | true | | {EXTERNAL LOCATION} | bool | | main.rs:594:9:594:24 | ...::m(...) | | {EXTERNAL LOCATION} | () | | main.rs:594:15:594:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:594:15:594:23 | &... | &T | main.rs:555:5:556:22 | S5 | -| main.rs:594:15:594:23 | &... | &T.T5 | {EXTERNAL LOCATION} | bool | +| main.rs:594:15:594:23 | &... | TRef | main.rs:555:5:556:22 | S5 | +| main.rs:594:15:594:23 | &... | TRef.T5 | {EXTERNAL LOCATION} | bool | | main.rs:594:16:594:23 | S5(...) | | main.rs:555:5:556:22 | S5 | | main.rs:594:16:594:23 | S5(...) | T5 | {EXTERNAL LOCATION} | bool | | main.rs:594:19:594:22 | true | | {EXTERNAL LOCATION} | bool | @@ -2025,7 +2025,7 @@ inferType | main.rs:621:18:621:18 | x | | main.rs:619:45:619:61 | T | | main.rs:621:18:621:27 | x.method() | | main.rs:619:35:619:42 | I | | main.rs:622:18:622:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:622:18:622:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:622:18:622:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:622:18:622:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:622:18:622:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:622:26:622:27 | s1 | | main.rs:619:35:619:42 | I | @@ -2035,7 +2035,7 @@ inferType | main.rs:627:18:627:18 | x | | main.rs:625:46:625:62 | T | | main.rs:627:18:627:27 | x.method() | | main.rs:625:36:625:43 | I | | main.rs:628:18:628:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:628:18:628:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:628:18:628:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:628:18:628:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:628:18:628:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:628:26:628:27 | s2 | | main.rs:625:36:625:43 | I | @@ -2045,7 +2045,7 @@ inferType | main.rs:632:17:632:17 | x | | main.rs:631:30:631:46 | T | | main.rs:632:17:632:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:633:18:633:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:633:18:633:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:633:18:633:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:633:18:633:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:633:18:633:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:633:26:633:26 | s | | main.rs:601:5:602:14 | S1 | @@ -2055,7 +2055,7 @@ inferType | main.rs:637:17:637:17 | x | | main.rs:636:34:636:50 | T | | main.rs:637:17:637:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:638:18:638:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:638:18:638:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:638:18:638:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:638:18:638:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:638:18:638:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:638:26:638:26 | s | | main.rs:601:5:602:14 | S1 | @@ -2065,7 +2065,7 @@ inferType | main.rs:645:17:645:17 | x | | main.rs:641:40:641:40 | T | | main.rs:645:17:645:26 | x.method() | | main.rs:601:5:602:14 | S1 | | main.rs:646:18:646:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:646:18:646:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:646:18:646:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:646:18:646:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:646:18:646:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:646:26:646:26 | s | | main.rs:601:5:602:14 | S1 | @@ -2090,7 +2090,7 @@ inferType | main.rs:667:18:667:18 | y | | main.rs:664:41:664:55 | T | | main.rs:667:18:667:24 | y.snd() | | main.rs:604:5:605:14 | S2 | | main.rs:668:18:668:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:668:18:668:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:668:18:668:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:668:18:668:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:668:32:668:33 | s1 | | main.rs:601:5:602:14 | S1 | @@ -2105,7 +2105,7 @@ inferType | main.rs:674:18:674:18 | y | | main.rs:671:52:671:66 | T | | main.rs:674:18:674:24 | y.snd() | | main.rs:671:41:671:49 | T2 | | main.rs:675:18:675:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:675:18:675:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:675:18:675:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:675:18:675:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:675:32:675:33 | s1 | | main.rs:601:5:602:14 | S1 | @@ -2120,7 +2120,7 @@ inferType | main.rs:681:18:681:18 | y | | main.rs:678:41:678:47 | T | | main.rs:681:18:681:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:682:18:682:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:682:18:682:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:682:18:682:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:682:18:682:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:682:32:682:33 | s1 | | {EXTERNAL LOCATION} | bool | @@ -2135,18 +2135,18 @@ inferType | main.rs:688:18:688:18 | y | | main.rs:685:41:685:51 | T | | main.rs:688:18:688:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | | main.rs:689:18:689:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:689:18:689:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:689:18:689:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:689:18:689:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:689:32:689:33 | s1 | | {EXTERNAL LOCATION} | u8 | | main.rs:689:36:689:37 | s2 | | {EXTERNAL LOCATION} | i64 | | main.rs:697:18:697:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:697:18:697:22 | SelfParam | &T | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | +| main.rs:697:18:697:22 | SelfParam | TRef | main.rs:694:5:698:5 | Self [trait TraitWithSelfTp] | | main.rs:700:40:700:44 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:700:40:700:44 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:700:40:700:44 | thing | TRef | main.rs:700:17:700:37 | T | | main.rs:700:56:702:5 | { ... } | | main.rs:700:14:700:14 | A | | main.rs:701:9:701:13 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:701:9:701:13 | thing | &T | main.rs:700:17:700:37 | T | +| main.rs:701:9:701:13 | thing | TRef | main.rs:700:17:700:37 | T | | main.rs:701:9:701:21 | thing.get_a() | | main.rs:700:14:700:14 | A | | main.rs:705:44:705:48 | thing | | main.rs:705:24:705:41 | S | | main.rs:705:61:708:5 | { ... } | | {EXTERNAL LOCATION} | i64 | @@ -2158,23 +2158,23 @@ inferType | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:707:9:707:9 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:713:55:713:59 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:713:55:713:59 | thing | &T | main.rs:713:25:713:52 | S | +| main.rs:713:55:713:59 | thing | TRef | main.rs:713:25:713:52 | S | | main.rs:713:66:716:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:715:13:715:15 | _ms | | {EXTERNAL LOCATION} | Option | | main.rs:715:13:715:15 | _ms | T | main.rs:713:25:713:52 | S | | main.rs:715:19:715:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:715:19:715:30 | get_a(...) | T | main.rs:713:25:713:52 | S | | main.rs:715:25:715:29 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:715:25:715:29 | thing | &T | main.rs:713:25:713:52 | S | +| main.rs:715:25:715:29 | thing | TRef | main.rs:713:25:713:52 | S | | main.rs:724:18:724:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:724:18:724:22 | SelfParam | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:724:18:724:22 | SelfParam | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:724:41:726:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:724:41:726:9 | { ... } | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:13:725:48 | Some(...) | | {EXTERNAL LOCATION} | Option | | main.rs:725:13:725:48 | Some(...) | T | main.rs:718:5:720:5 | MyStruct | | main.rs:725:18:725:47 | MyStruct {...} | | main.rs:718:5:720:5 | MyStruct | | main.rs:725:36:725:39 | self | | {EXTERNAL LOCATION} | & | -| main.rs:725:36:725:39 | self | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:725:36:725:39 | self | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:725:36:725:45 | self.value | | {EXTERNAL LOCATION} | i32 | | main.rs:731:19:734:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:732:13:732:13 | s | | main.rs:718:5:720:5 | MyStruct | @@ -2185,7 +2185,7 @@ inferType | main.rs:733:19:733:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | | main.rs:733:19:733:27 | get_a(...) | T | main.rs:718:5:720:5 | MyStruct | | main.rs:733:25:733:26 | &s | | {EXTERNAL LOCATION} | & | -| main.rs:733:25:733:26 | &s | &T | main.rs:718:5:720:5 | MyStruct | +| main.rs:733:25:733:26 | &s | TRef | main.rs:718:5:720:5 | MyStruct | | main.rs:733:26:733:26 | s | | main.rs:718:5:720:5 | MyStruct | | main.rs:749:15:749:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | | main.rs:751:15:751:18 | SelfParam | | main.rs:748:5:759:5 | Self [trait MyTrait] | @@ -2288,14 +2288,14 @@ inferType | main.rs:832:17:832:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | | main.rs:832:30:832:31 | S2 | | main.rs:745:5:746:14 | S2 | | main.rs:834:18:834:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:834:18:834:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:834:18:834:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:834:18:834:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:834:18:834:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:834:26:834:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:834:26:834:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:834:26:834:31 | x.m1() | | main.rs:743:5:744:14 | S1 | | main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:835:18:835:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:835:18:835:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:835:18:835:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:835:18:835:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:835:26:835:26 | y | | main.rs:738:5:741:5 | MyThing | @@ -2312,14 +2312,14 @@ inferType | main.rs:838:17:838:33 | MyThing {...} | T | main.rs:745:5:746:14 | S2 | | main.rs:838:30:838:31 | S2 | | main.rs:745:5:746:14 | S2 | | main.rs:840:18:840:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:840:18:840:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:840:18:840:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:840:18:840:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:840:18:840:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:840:26:840:26 | x | | main.rs:738:5:741:5 | MyThing | | main.rs:840:26:840:26 | x | T | main.rs:743:5:744:14 | S1 | | main.rs:840:26:840:31 | x.m2() | | main.rs:743:5:744:14 | S1 | | main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:841:18:841:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:841:18:841:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:841:18:841:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:841:18:841:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:841:26:841:26 | y | | main.rs:738:5:741:5 | MyThing | @@ -2340,7 +2340,7 @@ inferType | main.rs:846:31:846:32 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:846:31:846:32 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:847:18:847:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:847:18:847:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:847:18:847:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:847:18:847:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:847:18:847:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:847:26:847:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2349,7 +2349,7 @@ inferType | main.rs:848:33:848:34 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:848:33:848:34 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:849:18:849:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:849:18:849:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:849:18:849:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:849:18:849:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:849:18:849:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:849:26:849:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2358,7 +2358,7 @@ inferType | main.rs:850:33:850:34 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:850:33:850:34 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:851:18:851:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:851:18:851:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:851:18:851:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:851:18:851:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:851:18:851:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:851:26:851:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2367,7 +2367,7 @@ inferType | main.rs:852:31:852:32 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:852:31:852:32 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:853:18:853:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:853:18:853:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:853:18:853:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:853:18:853:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:853:18:853:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:853:26:853:26 | a | | main.rs:745:5:746:14 | S2 | @@ -2376,7 +2376,7 @@ inferType | main.rs:854:33:854:34 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:854:33:854:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:855:18:855:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:855:18:855:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:855:18:855:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:855:18:855:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:855:18:855:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:855:26:855:26 | a | | main.rs:745:5:746:14 | S2 | @@ -2385,7 +2385,7 @@ inferType | main.rs:856:33:856:34 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:856:33:856:34 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:857:18:857:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:857:18:857:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:857:18:857:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:857:18:857:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:857:18:857:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:857:26:857:26 | a | | main.rs:745:5:746:14 | S2 | @@ -2394,7 +2394,7 @@ inferType | main.rs:858:36:858:37 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:858:36:858:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:859:18:859:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:859:18:859:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:859:18:859:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:859:18:859:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:859:18:859:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:859:26:859:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2403,7 +2403,7 @@ inferType | main.rs:860:36:860:37 | x2 | | main.rs:738:5:741:5 | MyThing | | main.rs:860:36:860:37 | x2 | T | main.rs:743:5:744:14 | S1 | | main.rs:861:18:861:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:861:18:861:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:861:18:861:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:861:18:861:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:861:18:861:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:861:26:861:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2412,7 +2412,7 @@ inferType | main.rs:862:36:862:37 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:862:36:862:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:863:18:863:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:863:18:863:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:863:18:863:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:863:18:863:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:863:18:863:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:863:26:863:26 | a | | main.rs:745:5:746:14 | S2 | @@ -2421,7 +2421,7 @@ inferType | main.rs:864:36:864:37 | y2 | | main.rs:738:5:741:5 | MyThing | | main.rs:864:36:864:37 | y2 | T | main.rs:745:5:746:14 | S2 | | main.rs:865:18:865:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:865:18:865:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:865:18:865:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:865:18:865:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:865:18:865:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:865:26:865:26 | a | | main.rs:745:5:746:14 | S2 | @@ -2449,7 +2449,7 @@ inferType | main.rs:874:37:874:38 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:874:37:874:38 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:875:18:875:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:875:18:875:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:875:18:875:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:875:18:875:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:875:26:875:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2459,7 +2459,7 @@ inferType | main.rs:876:39:876:40 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:876:39:876:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:877:18:877:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:877:18:877:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:877:18:877:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:877:18:877:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:877:18:877:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:877:26:877:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2469,7 +2469,7 @@ inferType | main.rs:878:39:878:40 | x3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:878:39:878:40 | x3 | T.T | main.rs:743:5:744:14 | S1 | | main.rs:879:18:879:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:879:18:879:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:879:18:879:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:879:18:879:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:879:18:879:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:879:26:879:26 | a | | main.rs:743:5:744:14 | S1 | @@ -2479,7 +2479,7 @@ inferType | main.rs:880:37:880:38 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:880:37:880:38 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:881:18:881:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:881:18:881:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:881:18:881:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:881:18:881:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:881:18:881:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:881:26:881:26 | b | | main.rs:745:5:746:14 | S2 | @@ -2489,7 +2489,7 @@ inferType | main.rs:882:39:882:40 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:882:39:882:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:883:18:883:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:883:18:883:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:883:18:883:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:883:18:883:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:883:18:883:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:883:26:883:26 | b | | main.rs:745:5:746:14 | S2 | @@ -2499,7 +2499,7 @@ inferType | main.rs:884:39:884:40 | y3 | T | main.rs:738:5:741:5 | MyThing | | main.rs:884:39:884:40 | y3 | T.T | main.rs:745:5:746:14 | S2 | | main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:885:18:885:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:885:18:885:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:885:18:885:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:885:18:885:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:885:26:885:26 | b | | main.rs:745:5:746:14 | S2 | @@ -2522,32 +2522,32 @@ inferType | main.rs:914:13:914:21 | self.m1() | | main.rs:904:9:904:28 | AssociatedType | | main.rs:915:13:915:43 | ...::default(...) | | main.rs:904:9:904:28 | AssociatedType | | main.rs:923:19:923:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:923:19:923:23 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:923:19:923:23 | SelfParam | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:923:26:923:26 | a | | main.rs:923:16:923:16 | A | | main.rs:925:22:925:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:925:22:925:26 | SelfParam | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:925:22:925:26 | SelfParam | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:925:29:925:29 | a | | main.rs:925:19:925:19 | A | | main.rs:925:35:925:35 | b | | main.rs:925:19:925:19 | A | | main.rs:925:75:928:9 | { ... } | | main.rs:920:9:920:52 | GenericAssociatedType | | main.rs:926:13:926:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:926:13:926:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:926:13:926:16 | self | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:926:13:926:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | | main.rs:926:22:926:22 | a | | main.rs:925:19:925:19 | A | | main.rs:927:13:927:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:927:13:927:16 | self | &T | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | +| main.rs:927:13:927:16 | self | TRef | main.rs:919:5:929:5 | Self [trait MyTraitAssoc2] | | main.rs:927:13:927:23 | self.put(...) | | main.rs:920:9:920:52 | GenericAssociatedType | | main.rs:927:22:927:22 | b | | main.rs:925:19:925:19 | A | | main.rs:936:21:936:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:936:21:936:25 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:936:21:936:25 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | | main.rs:938:20:938:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:938:20:938:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:938:20:938:24 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | | main.rs:940:20:940:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:940:20:940:24 | SelfParam | &T | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | +| main.rs:940:20:940:24 | SelfParam | TRef | main.rs:931:5:941:5 | Self [trait TraitMultipleAssoc] | | main.rs:956:15:956:18 | SelfParam | | main.rs:943:5:944:13 | S | | main.rs:956:45:958:9 | { ... } | | main.rs:949:5:950:14 | AT | | main.rs:957:13:957:14 | AT | | main.rs:949:5:950:14 | AT | | main.rs:966:19:966:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:966:19:966:23 | SelfParam | &T | main.rs:943:5:944:13 | S | +| main.rs:966:19:966:23 | SelfParam | TRef | main.rs:943:5:944:13 | S | | main.rs:966:26:966:26 | a | | main.rs:966:16:966:16 | A | | main.rs:966:46:968:9 | { ... } | | main.rs:892:5:895:5 | Wrapper | | main.rs:966:46:968:9 | { ... } | A | main.rs:966:16:966:16 | A | @@ -2568,22 +2568,22 @@ inferType | main.rs:989:22:989:26 | thing | | main.rs:989:10:989:19 | T | | main.rs:990:9:990:13 | thing | | main.rs:989:10:989:19 | T | | main.rs:997:21:997:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:997:21:997:25 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:997:21:997:25 | SelfParam | TRef | main.rs:949:5:950:14 | AT | | main.rs:997:34:999:9 | { ... } | | main.rs:949:5:950:14 | AT | | main.rs:998:13:998:14 | AT | | main.rs:949:5:950:14 | AT | | main.rs:1001:20:1001:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1001:20:1001:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:1001:20:1001:24 | SelfParam | TRef | main.rs:949:5:950:14 | AT | | main.rs:1001:43:1003:9 | { ... } | | main.rs:943:5:944:13 | S | | main.rs:1002:13:1002:13 | S | | main.rs:943:5:944:13 | S | | main.rs:1005:20:1005:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1005:20:1005:24 | SelfParam | &T | main.rs:949:5:950:14 | AT | +| main.rs:1005:20:1005:24 | SelfParam | TRef | main.rs:949:5:950:14 | AT | | main.rs:1005:43:1007:9 | { ... } | | main.rs:946:5:947:14 | S2 | | main.rs:1006:13:1006:14 | S2 | | main.rs:946:5:947:14 | S2 | | main.rs:1010:16:1038:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1011:13:1011:14 | x1 | | main.rs:943:5:944:13 | S | | main.rs:1011:18:1011:18 | S | | main.rs:943:5:944:13 | S | | main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1013:18:1013:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1013:18:1013:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1013:18:1013:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1013:18:1013:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1013:26:1013:27 | x1 | | main.rs:943:5:944:13 | S | @@ -2594,14 +2594,14 @@ inferType | main.rs:1017:17:1017:18 | x2 | | main.rs:943:5:944:13 | S | | main.rs:1017:17:1017:23 | x2.m2() | | main.rs:949:5:950:14 | AT | | main.rs:1018:18:1018:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1018:18:1018:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1018:18:1018:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1018:18:1018:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1018:18:1018:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1018:26:1018:26 | y | | main.rs:949:5:950:14 | AT | | main.rs:1020:13:1020:14 | x3 | | main.rs:943:5:944:13 | S | | main.rs:1020:18:1020:18 | S | | main.rs:943:5:944:13 | S | | main.rs:1022:18:1022:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1022:18:1022:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1022:18:1022:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1022:18:1022:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1022:18:1022:43 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1022:26:1022:27 | x3 | | main.rs:943:5:944:13 | S | @@ -2610,7 +2610,7 @@ inferType | main.rs:1022:26:1022:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | | main.rs:1022:33:1022:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1025:18:1025:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1025:18:1025:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1025:18:1025:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1025:18:1025:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1025:18:1025:49 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1025:26:1025:27 | x3 | | main.rs:943:5:944:13 | S | @@ -2621,13 +2621,13 @@ inferType | main.rs:1025:39:1025:39 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1027:20:1027:20 | S | | main.rs:943:5:944:13 | S | | main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1028:18:1028:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1028:18:1028:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1030:13:1030:14 | x5 | | main.rs:946:5:947:14 | S2 | | main.rs:1030:18:1030:19 | S2 | | main.rs:946:5:947:14 | S2 | | main.rs:1031:18:1031:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1031:18:1031:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1031:18:1031:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1031:18:1031:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1031:18:1031:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1031:26:1031:27 | x5 | | main.rs:946:5:947:14 | S2 | @@ -2636,7 +2636,7 @@ inferType | main.rs:1032:13:1032:14 | x6 | | main.rs:946:5:947:14 | S2 | | main.rs:1032:18:1032:19 | S2 | | main.rs:946:5:947:14 | S2 | | main.rs:1033:18:1033:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1033:18:1033:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1033:18:1033:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1033:18:1033:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1033:18:1033:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1033:26:1033:27 | x6 | | main.rs:946:5:947:14 | S2 | @@ -2652,35 +2652,35 @@ inferType | main.rs:1037:25:1037:26 | AT | | main.rs:949:5:950:14 | AT | | main.rs:1037:25:1037:36 | AT.get_two() | | main.rs:946:5:947:14 | S2 | | main.rs:1045:19:1045:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1045:19:1045:23 | SelfParam | &T | main.rs:1042:5:1046:5 | Self [trait Supertrait] | +| main.rs:1045:19:1045:23 | SelfParam | TRef | main.rs:1042:5:1046:5 | Self [trait Supertrait] | | main.rs:1045:26:1045:32 | content | | main.rs:1043:9:1043:21 | Content | | main.rs:1050:24:1050:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1050:24:1050:28 | SelfParam | &T | main.rs:1048:5:1051:5 | Self [trait Subtrait] | +| main.rs:1050:24:1050:28 | SelfParam | TRef | main.rs:1048:5:1051:5 | Self [trait Subtrait] | | main.rs:1059:23:1059:27 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1059:23:1059:27 | SelfParam | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1059:23:1059:27 | SelfParam | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | | main.rs:1059:30:1059:31 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1059:49:1059:50 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1059:68:1062:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1060:13:1060:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1060:13:1060:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1060:13:1060:16 | self | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | | main.rs:1060:13:1060:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1060:25:1060:26 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1061:13:1061:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1061:13:1061:16 | self | &T | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | +| main.rs:1061:13:1061:16 | self | TRef | main.rs:1053:5:1063:5 | Self [trait Subtrait2] | | main.rs:1061:13:1061:27 | self.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1061:25:1061:26 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1069:19:1069:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1069:19:1069:23 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | -| main.rs:1069:19:1069:23 | SelfParam | &T.T | main.rs:1067:10:1067:10 | T | +| main.rs:1069:19:1069:23 | SelfParam | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1069:19:1069:23 | SelfParam | TRef.T | main.rs:1067:10:1067:10 | T | | main.rs:1069:26:1069:33 | _content | | main.rs:1067:10:1067:10 | T | | main.rs:1069:51:1071:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1070:22:1070:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1070:22:1070:42 | "Inserting content: \\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1070:22:1070:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1070:22:1070:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1070:22:1070:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1076:24:1076:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1076:24:1076:28 | SelfParam | &T | main.rs:1065:5:1065:24 | MyType | -| main.rs:1076:24:1076:28 | SelfParam | &T.T | main.rs:1074:10:1074:17 | T | +| main.rs:1076:24:1076:28 | SelfParam | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1076:24:1076:28 | SelfParam | TRef.T | main.rs:1074:10:1074:17 | T | | main.rs:1076:48:1078:9 | { ... } | | main.rs:1074:10:1074:17 | T | | main.rs:1077:13:1077:19 | (...) | | main.rs:1065:5:1065:24 | MyType | | main.rs:1077:13:1077:19 | (...) | T | main.rs:1074:10:1074:17 | T | @@ -2689,26 +2689,26 @@ inferType | main.rs:1077:14:1077:18 | * ... | | main.rs:1065:5:1065:24 | MyType | | main.rs:1077:14:1077:18 | * ... | T | main.rs:1074:10:1074:17 | T | | main.rs:1077:15:1077:18 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1077:15:1077:18 | self | &T | main.rs:1065:5:1065:24 | MyType | -| main.rs:1077:15:1077:18 | self | &T.T | main.rs:1074:10:1074:17 | T | +| main.rs:1077:15:1077:18 | self | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1077:15:1077:18 | self | TRef.T | main.rs:1074:10:1074:17 | T | | main.rs:1081:33:1081:36 | item | | {EXTERNAL LOCATION} | & | -| main.rs:1081:33:1081:36 | item | &T | main.rs:1081:20:1081:30 | T | +| main.rs:1081:33:1081:36 | item | TRef | main.rs:1081:20:1081:30 | T | | main.rs:1081:57:1083:5 | { ... } | | main.rs:1043:9:1043:21 | Content | | main.rs:1082:9:1082:12 | item | | {EXTERNAL LOCATION} | & | -| main.rs:1082:9:1082:12 | item | &T | main.rs:1081:20:1081:30 | T | +| main.rs:1082:9:1082:12 | item | TRef | main.rs:1081:20:1081:30 | T | | main.rs:1082:9:1082:26 | item.get_content() | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:35:1085:38 | item | | {EXTERNAL LOCATION} | & | -| main.rs:1085:35:1085:38 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1085:35:1085:38 | item | TRef | main.rs:1085:21:1085:32 | T | | main.rs:1085:45:1085:46 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:61:1085:62 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:77:1085:78 | c3 | | main.rs:1043:9:1043:21 | Content | | main.rs:1085:93:1088:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1086:9:1086:12 | item | | {EXTERNAL LOCATION} | & | -| main.rs:1086:9:1086:12 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1086:9:1086:12 | item | TRef | main.rs:1085:21:1085:32 | T | | main.rs:1086:9:1086:23 | item.insert(...) | | {EXTERNAL LOCATION} | () | | main.rs:1086:21:1086:22 | c1 | | main.rs:1043:9:1043:21 | Content | | main.rs:1087:9:1087:12 | item | | {EXTERNAL LOCATION} | & | -| main.rs:1087:9:1087:12 | item | &T | main.rs:1085:21:1085:32 | T | +| main.rs:1087:9:1087:12 | item | TRef | main.rs:1085:21:1085:32 | T | | main.rs:1087:9:1087:31 | item.insert_two(...) | | {EXTERNAL LOCATION} | () | | main.rs:1087:25:1087:26 | c2 | | main.rs:1043:9:1043:21 | Content | | main.rs:1087:29:1087:30 | c3 | | main.rs:1043:9:1043:21 | Content | @@ -2726,8 +2726,8 @@ inferType | main.rs:1094:21:1094:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | | main.rs:1094:28:1094:31 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1095:37:1095:42 | &item2 | | {EXTERNAL LOCATION} | & | -| main.rs:1095:37:1095:42 | &item2 | &T | main.rs:1065:5:1065:24 | MyType | -| main.rs:1095:37:1095:42 | &item2 | &T.T | {EXTERNAL LOCATION} | bool | +| main.rs:1095:37:1095:42 | &item2 | TRef | main.rs:1065:5:1065:24 | MyType | +| main.rs:1095:37:1095:42 | &item2 | TRef.T | {EXTERNAL LOCATION} | bool | | main.rs:1095:38:1095:42 | item2 | | main.rs:1065:5:1065:24 | MyType | | main.rs:1095:38:1095:42 | item2 | T | {EXTERNAL LOCATION} | bool | | main.rs:1112:15:1112:18 | SelfParam | | main.rs:1100:5:1104:5 | MyEnum | @@ -2756,14 +2756,14 @@ inferType | main.rs:1122:17:1122:36 | ...::C2 {...} | A | main.rs:1108:5:1109:14 | S2 | | main.rs:1122:33:1122:34 | S2 | | main.rs:1108:5:1109:14 | S2 | | main.rs:1124:18:1124:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1124:18:1124:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1124:18:1124:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1124:18:1124:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1124:18:1124:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1124:26:1124:26 | x | | main.rs:1100:5:1104:5 | MyEnum | | main.rs:1124:26:1124:26 | x | A | main.rs:1106:5:1107:14 | S1 | | main.rs:1124:26:1124:31 | x.m1() | | main.rs:1106:5:1107:14 | S1 | | main.rs:1125:18:1125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1125:18:1125:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1125:18:1125:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1125:18:1125:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1125:18:1125:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1125:26:1125:26 | y | | main.rs:1100:5:1104:5 | MyEnum | @@ -2771,7 +2771,7 @@ inferType | main.rs:1125:26:1125:31 | y.m1() | | main.rs:1108:5:1109:14 | S2 | | main.rs:1147:15:1147:18 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait MyTrait1] | | main.rs:1152:15:1152:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1152:15:1152:19 | SelfParam | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1152:15:1152:19 | SelfParam | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1155:9:1161:9 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1156:13:1160:13 | if ... {...} else {...} | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1156:16:1156:16 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -2779,13 +2779,13 @@ inferType | main.rs:1156:20:1156:20 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1156:22:1158:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1157:17:1157:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1157:17:1157:20 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1157:17:1157:20 | self | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1157:17:1157:25 | self.m1() | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1158:20:1160:13 | { ... } | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1159:17:1159:31 | ...::m1(...) | | main.rs:1150:20:1150:22 | Tr2 | | main.rs:1159:26:1159:30 | * ... | | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1159:27:1159:30 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1159:27:1159:30 | self | &T | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | +| main.rs:1159:27:1159:30 | self | TRef | main.rs:1150:5:1162:5 | Self [trait MyTrait2] | | main.rs:1166:15:1166:18 | SelfParam | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1169:9:1175:9 | { ... } | | main.rs:1164:20:1164:22 | Tr3 | | main.rs:1170:13:1174:13 | if ... {...} else {...} | | main.rs:1164:20:1164:22 | Tr3 | @@ -2802,7 +2802,7 @@ inferType | main.rs:1173:17:1173:31 | ...::m2(...) | A | main.rs:1164:20:1164:22 | Tr3 | | main.rs:1173:17:1173:33 | ... .a | | main.rs:1164:20:1164:22 | Tr3 | | main.rs:1173:26:1173:30 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1173:26:1173:30 | &self | &T | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | +| main.rs:1173:26:1173:30 | &self | TRef | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1173:27:1173:30 | self | | main.rs:1164:5:1176:5 | Self [trait MyTrait3] | | main.rs:1180:15:1180:18 | SelfParam | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1180:15:1180:18 | SelfParam | A | main.rs:1178:10:1178:10 | T | @@ -2831,7 +2831,7 @@ inferType | main.rs:1204:17:1204:22 | x.m1() | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1204:17:1204:22 | x.m1() | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1205:18:1205:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1205:18:1205:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1205:18:1205:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1205:18:1205:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1205:18:1205:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1205:26:1205:26 | a | | main.rs:1130:5:1133:5 | MyThing | @@ -2848,14 +2848,14 @@ inferType | main.rs:1210:17:1210:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1210:30:1210:31 | S2 | | main.rs:1142:5:1143:14 | S2 | | main.rs:1212:18:1212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1212:18:1212:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1212:18:1212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1212:18:1212:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1212:18:1212:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1212:26:1212:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1212:26:1212:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1212:26:1212:31 | x.m1() | | main.rs:1140:5:1141:14 | S1 | | main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1213:18:1213:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1213:18:1213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1213:18:1213:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1213:18:1213:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1213:26:1213:26 | y | | main.rs:1130:5:1133:5 | MyThing | @@ -2872,14 +2872,14 @@ inferType | main.rs:1216:17:1216:33 | MyThing {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1216:30:1216:31 | S2 | | main.rs:1142:5:1143:14 | S2 | | main.rs:1218:18:1218:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1218:18:1218:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1218:18:1218:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1218:18:1218:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1218:18:1218:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1218:26:1218:26 | x | | main.rs:1130:5:1133:5 | MyThing | | main.rs:1218:26:1218:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1218:26:1218:31 | x.m2() | | main.rs:1140:5:1141:14 | S1 | | main.rs:1219:18:1219:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1219:18:1219:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1219:18:1219:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1219:18:1219:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1219:18:1219:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1219:26:1219:26 | y | | main.rs:1130:5:1133:5 | MyThing | @@ -2896,14 +2896,14 @@ inferType | main.rs:1222:17:1222:34 | MyThing2 {...} | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1222:31:1222:32 | S2 | | main.rs:1142:5:1143:14 | S2 | | main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1224:18:1224:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1224:18:1224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1224:18:1224:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1224:18:1224:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1224:26:1224:26 | x | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1224:26:1224:26 | x | A | main.rs:1140:5:1141:14 | S1 | | main.rs:1224:26:1224:31 | x.m3() | | main.rs:1140:5:1141:14 | S1 | | main.rs:1225:18:1225:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1225:18:1225:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1225:18:1225:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1225:18:1225:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1225:18:1225:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1225:26:1225:26 | y | | main.rs:1135:5:1138:5 | MyThing2 | @@ -2930,11 +2930,11 @@ inferType | main.rs:1231:31:1231:31 | x | | main.rs:1135:5:1138:5 | MyThing2 | | main.rs:1231:31:1231:31 | x | A | main.rs:1142:5:1143:14 | S2 | | main.rs:1248:22:1248:22 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1248:22:1248:22 | x | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1248:22:1248:22 | x | TRef | main.rs:1248:11:1248:19 | T | | main.rs:1248:35:1250:5 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1248:35:1250:5 | { ... } | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1248:35:1250:5 | { ... } | TRef | main.rs:1248:11:1248:19 | T | | main.rs:1249:9:1249:9 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1249:9:1249:9 | x | &T | main.rs:1248:11:1248:19 | T | +| main.rs:1249:9:1249:9 | x | TRef | main.rs:1248:11:1248:19 | T | | main.rs:1253:17:1253:20 | SelfParam | | main.rs:1238:5:1239:14 | S1 | | main.rs:1253:29:1255:9 | { ... } | | main.rs:1241:5:1242:14 | S2 | | main.rs:1254:13:1254:14 | S2 | | main.rs:1241:5:1242:14 | S2 | @@ -2946,35 +2946,35 @@ inferType | main.rs:1266:13:1266:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1266:17:1266:18 | S1 | | main.rs:1238:5:1239:14 | S1 | | main.rs:1267:18:1267:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1267:18:1267:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1267:18:1267:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1267:18:1267:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1267:18:1267:31 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1267:26:1267:31 | id(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1267:26:1267:31 | id(...) | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:26:1267:31 | id(...) | TRef | main.rs:1238:5:1239:14 | S1 | | main.rs:1267:29:1267:30 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1267:29:1267:30 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1267:29:1267:30 | &x | TRef | main.rs:1238:5:1239:14 | S1 | | main.rs:1267:30:1267:30 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1269:13:1269:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1269:17:1269:18 | S1 | | main.rs:1238:5:1239:14 | S1 | | main.rs:1270:18:1270:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1270:18:1270:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1270:18:1270:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1270:18:1270:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1270:18:1270:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1270:26:1270:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1270:26:1270:37 | id::<...>(...) | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:26:1270:37 | id::<...>(...) | TRef | main.rs:1238:5:1239:14 | S1 | | main.rs:1270:35:1270:36 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1270:35:1270:36 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1270:35:1270:36 | &x | TRef | main.rs:1238:5:1239:14 | S1 | | main.rs:1270:36:1270:36 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1272:13:1272:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1272:17:1272:18 | S1 | | main.rs:1238:5:1239:14 | S1 | | main.rs:1274:18:1274:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1274:18:1274:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1274:18:1274:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1274:18:1274:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1274:18:1274:44 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1274:26:1274:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1274:26:1274:44 | id::<...>(...) | &T | main.rs:1244:5:1244:25 | dyn Trait | +| main.rs:1274:26:1274:44 | id::<...>(...) | TRef | main.rs:1244:5:1244:25 | dyn Trait | | main.rs:1274:42:1274:43 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1274:42:1274:43 | &x | &T | main.rs:1238:5:1239:14 | S1 | +| main.rs:1274:42:1274:43 | &x | TRef | main.rs:1238:5:1239:14 | S1 | | main.rs:1274:43:1274:43 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1276:13:1276:13 | x | | main.rs:1238:5:1239:14 | S1 | | main.rs:1276:17:1276:18 | S1 | | main.rs:1238:5:1239:14 | S1 | @@ -2999,7 +2999,7 @@ inferType | main.rs:1296:17:1296:38 | ...::PairNone(...) | Snd | main.rs:1293:15:1293:17 | Snd | | main.rs:1296:43:1296:82 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:1296:50:1296:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | -| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1296:50:1296:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | | main.rs:1296:50:1296:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1296:50:1296:81 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1296:50:1296:81 | { ... } | | {EXTERNAL LOCATION} | () | @@ -3009,7 +3009,7 @@ inferType | main.rs:1297:37:1297:37 | _ | | main.rs:1293:10:1293:12 | Fst | | main.rs:1297:43:1297:81 | MacroExpr | | file://:0:0:0:0 | ! | | main.rs:1297:50:1297:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | -| main.rs:1297:50:1297:80 | "PairFst has no second element... | &T | {EXTERNAL LOCATION} | str | +| main.rs:1297:50:1297:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | | main.rs:1297:50:1297:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | | main.rs:1297:50:1297:80 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1297:50:1297:80 | { ... } | | {EXTERNAL LOCATION} | () | @@ -3041,7 +3041,7 @@ inferType | main.rs:1326:17:1326:29 | t.unwrapSnd() | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1326:17:1326:41 | ... .unwrapSnd() | | main.rs:1310:5:1311:14 | S3 | | main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1327:18:1327:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1327:18:1327:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1327:18:1327:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1327:18:1327:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1327:26:1327:26 | x | | main.rs:1310:5:1311:14 | S3 | @@ -3067,7 +3067,7 @@ inferType | main.rs:1357:47:1357:48 | S1 | | main.rs:1304:5:1305:14 | S1 | | main.rs:1357:51:1357:52 | S2 | | main.rs:1307:5:1308:14 | S2 | | main.rs:1358:18:1358:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1358:18:1358:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1358:18:1358:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1358:18:1358:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1358:18:1358:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1358:26:1358:27 | p1 | | main.rs:1285:5:1291:5 | PairOption | @@ -3080,7 +3080,7 @@ inferType | main.rs:1361:26:1361:47 | ...::PairNone(...) | Fst | main.rs:1304:5:1305:14 | S1 | | main.rs:1361:26:1361:47 | ...::PairNone(...) | Snd | main.rs:1307:5:1308:14 | S2 | | main.rs:1362:18:1362:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1362:18:1362:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1362:18:1362:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1362:18:1362:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1362:18:1362:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1362:26:1362:27 | p2 | | main.rs:1285:5:1291:5 | PairOption | @@ -3094,7 +3094,7 @@ inferType | main.rs:1365:34:1365:56 | ...::PairSnd(...) | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1365:54:1365:55 | S3 | | main.rs:1310:5:1311:14 | S3 | | main.rs:1366:18:1366:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1366:18:1366:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1366:18:1366:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1366:18:1366:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1366:18:1366:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1366:26:1366:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | @@ -3107,7 +3107,7 @@ inferType | main.rs:1369:35:1369:56 | ...::PairNone(...) | Fst | main.rs:1307:5:1308:14 | S2 | | main.rs:1369:35:1369:56 | ...::PairNone(...) | Snd | main.rs:1310:5:1311:14 | S3 | | main.rs:1370:18:1370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1370:18:1370:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1370:18:1370:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1370:18:1370:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1370:18:1370:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1370:26:1370:27 | p3 | | main.rs:1285:5:1291:5 | PairOption | @@ -3139,19 +3139,19 @@ inferType | main.rs:1376:17:1376:38 | ... .get_input() | T | {EXTERNAL LOCATION} | bool | | main.rs:1376:22:1376:25 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1389:16:1389:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1389:16:1389:24 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1389:16:1389:24 | SelfParam | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | | main.rs:1389:27:1389:31 | value | | main.rs:1387:19:1387:19 | S | | main.rs:1391:21:1391:29 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1391:21:1391:29 | SelfParam | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1391:21:1391:29 | SelfParam | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | | main.rs:1391:32:1391:36 | value | | main.rs:1387:19:1387:19 | S | | main.rs:1391:42:1393:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1392:13:1392:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1392:13:1392:16 | self | &T | main.rs:1387:5:1394:5 | Self [trait MyTrait] | +| main.rs:1392:13:1392:16 | self | TRef | main.rs:1387:5:1394:5 | Self [trait MyTrait] | | main.rs:1392:13:1392:27 | self.set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1392:22:1392:26 | value | | main.rs:1387:19:1387:19 | S | | main.rs:1398:16:1398:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1398:16:1398:24 | SelfParam | &T | main.rs:1381:5:1385:5 | MyOption | -| main.rs:1398:16:1398:24 | SelfParam | &T.T | main.rs:1396:10:1396:10 | T | +| main.rs:1398:16:1398:24 | SelfParam | TRef | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1398:16:1398:24 | SelfParam | TRef.T | main.rs:1396:10:1396:10 | T | | main.rs:1398:27:1398:31 | value | | main.rs:1396:10:1396:10 | T | | main.rs:1398:37:1398:38 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1402:26:1404:9 | { ... } | | main.rs:1381:5:1385:5 | MyOption | @@ -3186,7 +3186,7 @@ inferType | main.rs:1420:18:1420:37 | ...::new(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1420:18:1420:37 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1421:18:1421:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1421:18:1421:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1421:18:1421:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1421:18:1421:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1421:18:1421:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1421:26:1421:27 | x1 | | main.rs:1381:5:1385:5 | MyOption | @@ -3200,7 +3200,7 @@ inferType | main.rs:1424:9:1424:17 | x2.set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1424:16:1424:16 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1425:18:1425:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1425:18:1425:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1425:18:1425:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1425:18:1425:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1425:18:1425:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1425:26:1425:27 | x2 | | main.rs:1381:5:1385:5 | MyOption | @@ -3211,7 +3211,7 @@ inferType | main.rs:1429:9:1429:22 | x3.call_set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1429:21:1429:21 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1430:18:1430:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1430:18:1430:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1430:18:1430:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1430:18:1430:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1430:18:1430:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1430:26:1430:27 | x3 | | main.rs:1381:5:1385:5 | MyOption | @@ -3221,13 +3221,13 @@ inferType | main.rs:1432:22:1432:36 | ...::new(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1433:9:1433:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | | main.rs:1433:23:1433:29 | &mut x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1433:23:1433:29 | &mut x4 | &T | main.rs:1381:5:1385:5 | MyOption | -| main.rs:1433:23:1433:29 | &mut x4 | &T.T | main.rs:1416:5:1417:13 | S | +| main.rs:1433:23:1433:29 | &mut x4 | TRef | main.rs:1381:5:1385:5 | MyOption | +| main.rs:1433:23:1433:29 | &mut x4 | TRef.T | main.rs:1416:5:1417:13 | S | | main.rs:1433:28:1433:29 | x4 | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1433:28:1433:29 | x4 | T | main.rs:1416:5:1417:13 | S | | main.rs:1433:32:1433:32 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1434:18:1434:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1434:18:1434:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1434:18:1434:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1434:18:1434:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1434:18:1434:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1434:26:1434:27 | x4 | | main.rs:1381:5:1385:5 | MyOption | @@ -3241,7 +3241,7 @@ inferType | main.rs:1436:35:1436:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1436:35:1436:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1437:18:1437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1437:18:1437:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1437:18:1437:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1437:18:1437:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1437:18:1437:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1437:26:1437:27 | x5 | | main.rs:1381:5:1385:5 | MyOption | @@ -3258,7 +3258,7 @@ inferType | main.rs:1439:35:1439:57 | ...::MyNone(...) | | main.rs:1381:5:1385:5 | MyOption | | main.rs:1439:35:1439:57 | ...::MyNone(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1440:18:1440:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1440:18:1440:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1440:18:1440:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1440:18:1440:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1440:18:1440:61 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1440:26:1440:61 | ...::flatten(...) | | main.rs:1381:5:1385:5 | MyOption | @@ -3283,7 +3283,7 @@ inferType | main.rs:1446:13:1446:31 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1446:30:1446:30 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1448:18:1448:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1448:18:1448:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1448:18:1448:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1448:18:1448:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1448:18:1448:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1448:26:1448:32 | from_if | | main.rs:1381:5:1385:5 | MyOption | @@ -3303,7 +3303,7 @@ inferType | main.rs:1453:22:1453:40 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1453:39:1453:39 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1455:18:1455:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1455:18:1455:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1455:18:1455:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1455:18:1455:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1455:18:1455:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1455:26:1455:35 | from_match | | main.rs:1381:5:1385:5 | MyOption | @@ -3324,7 +3324,7 @@ inferType | main.rs:1462:19:1462:37 | ...::MySome(...) | T | main.rs:1416:5:1417:13 | S | | main.rs:1462:36:1462:36 | S | | main.rs:1416:5:1417:13 | S | | main.rs:1464:18:1464:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1464:18:1464:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1464:18:1464:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1464:18:1464:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1464:18:1464:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1464:26:1464:34 | from_loop | | main.rs:1381:5:1385:5 | MyOption | @@ -3336,52 +3336,52 @@ inferType | main.rs:1483:13:1483:16 | self | T | main.rs:1481:10:1481:10 | T | | main.rs:1483:13:1483:18 | self.0 | | main.rs:1481:10:1481:10 | T | | main.rs:1486:15:1486:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1486:15:1486:19 | SelfParam | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1486:15:1486:19 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1486:15:1486:19 | SelfParam | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1486:15:1486:19 | SelfParam | TRef.T | main.rs:1481:10:1481:10 | T | | main.rs:1486:28:1488:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1486:28:1488:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1486:28:1488:9 | { ... } | TRef | main.rs:1481:10:1481:10 | T | | main.rs:1487:13:1487:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1487:13:1487:19 | &... | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:13:1487:19 | &... | TRef | main.rs:1481:10:1481:10 | T | | main.rs:1487:14:1487:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1487:14:1487:17 | self | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1487:14:1487:17 | self | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1487:14:1487:17 | self | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1487:14:1487:17 | self | TRef.T | main.rs:1481:10:1481:10 | T | | main.rs:1487:14:1487:19 | self.0 | | main.rs:1481:10:1481:10 | T | | main.rs:1490:15:1490:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1490:15:1490:25 | SelfParam | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1490:15:1490:25 | SelfParam | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1490:15:1490:25 | SelfParam | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1490:15:1490:25 | SelfParam | TRef.T | main.rs:1481:10:1481:10 | T | | main.rs:1490:34:1492:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1490:34:1492:9 | { ... } | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1490:34:1492:9 | { ... } | TRef | main.rs:1481:10:1481:10 | T | | main.rs:1491:13:1491:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1491:13:1491:19 | &... | &T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:13:1491:19 | &... | TRef | main.rs:1481:10:1481:10 | T | | main.rs:1491:14:1491:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1491:14:1491:17 | self | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1491:14:1491:17 | self | &T.T | main.rs:1481:10:1481:10 | T | +| main.rs:1491:14:1491:17 | self | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1491:14:1491:17 | self | TRef.T | main.rs:1481:10:1481:10 | T | | main.rs:1491:14:1491:19 | self.0 | | main.rs:1481:10:1481:10 | T | | main.rs:1496:29:1496:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1496:29:1496:33 | SelfParam | &T | main.rs:1495:5:1498:5 | Self [trait ATrait] | +| main.rs:1496:29:1496:33 | SelfParam | TRef | main.rs:1495:5:1498:5 | Self [trait ATrait] | | main.rs:1497:33:1497:36 | SelfParam | | main.rs:1495:5:1498:5 | Self [trait ATrait] | | main.rs:1503:29:1503:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1503:29:1503:33 | SelfParam | &T | {EXTERNAL LOCATION} | & | -| main.rs:1503:29:1503:33 | SelfParam | &T.&T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1503:29:1503:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1503:29:1503:33 | SelfParam | TRef.TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1503:43:1505:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1504:13:1504:22 | (...) | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1504:13:1504:24 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1504:14:1504:21 | * ... | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1504:15:1504:21 | (...) | | {EXTERNAL LOCATION} | & | -| main.rs:1504:15:1504:21 | (...) | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:15:1504:21 | (...) | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1504:16:1504:20 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1504:16:1504:20 | * ... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:16:1504:20 | * ... | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1504:17:1504:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1504:17:1504:20 | self | &T | {EXTERNAL LOCATION} | & | -| main.rs:1504:17:1504:20 | self | &T.&T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1504:17:1504:20 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1504:17:1504:20 | self | TRef.TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1508:33:1508:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1508:33:1508:36 | SelfParam | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1508:33:1508:36 | SelfParam | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1508:46:1510:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1509:13:1509:19 | (...) | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1509:13:1509:21 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1509:14:1509:18 | * ... | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1509:15:1509:18 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1509:15:1509:18 | self | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1509:15:1509:18 | self | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1513:16:1563:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1514:13:1514:14 | x1 | | main.rs:1470:5:1471:19 | S | | main.rs:1514:13:1514:14 | x1 | T | main.rs:1473:5:1474:14 | S2 | @@ -3389,7 +3389,7 @@ inferType | main.rs:1514:18:1514:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1514:20:1514:21 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1515:18:1515:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1515:18:1515:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1515:18:1515:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1515:18:1515:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1515:18:1515:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1515:26:1515:27 | x1 | | main.rs:1470:5:1471:19 | S | @@ -3401,111 +3401,111 @@ inferType | main.rs:1517:18:1517:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1517:20:1517:21 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1519:18:1519:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1519:18:1519:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1519:18:1519:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1519:18:1519:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1519:18:1519:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1519:26:1519:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1519:26:1519:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1519:26:1519:32 | x2.m2() | | {EXTERNAL LOCATION} | & | -| main.rs:1519:26:1519:32 | x2.m2() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1519:26:1519:32 | x2.m2() | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1520:18:1520:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1520:18:1520:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1520:18:1520:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1520:18:1520:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1520:18:1520:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1520:26:1520:27 | x2 | | main.rs:1470:5:1471:19 | S | | main.rs:1520:26:1520:27 | x2 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1520:26:1520:32 | x2.m3() | | {EXTERNAL LOCATION} | & | -| main.rs:1520:26:1520:32 | x2.m3() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1520:26:1520:32 | x2.m3() | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:13:1522:14 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1522:13:1522:14 | x3 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:18:1522:22 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1522:18:1522:22 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1522:20:1522:21 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1524:18:1524:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1524:18:1524:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1524:18:1524:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1524:18:1524:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1524:18:1524:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1524:26:1524:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1524:26:1524:41 | ...::m2(...) | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:26:1524:41 | ...::m2(...) | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1524:38:1524:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1524:38:1524:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1524:38:1524:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1524:38:1524:40 | &x3 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1524:38:1524:40 | &x3 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1524:39:1524:40 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1524:39:1524:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1525:18:1525:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1525:18:1525:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1525:18:1525:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1525:18:1525:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1525:18:1525:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1525:26:1525:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1525:26:1525:41 | ...::m3(...) | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:26:1525:41 | ...::m3(...) | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1525:38:1525:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1525:38:1525:40 | &x3 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1525:38:1525:40 | &x3 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1525:38:1525:40 | &x3 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1525:38:1525:40 | &x3 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1525:39:1525:40 | x3 | | main.rs:1470:5:1471:19 | S | | main.rs:1525:39:1525:40 | x3 | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:13:1527:14 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1527:13:1527:14 | x4 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1527:13:1527:14 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:13:1527:14 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1527:13:1527:14 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:18:1527:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1527:18:1527:23 | &... | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1527:18:1527:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1527:18:1527:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1527:18:1527:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:19:1527:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1527:19:1527:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1527:21:1527:22 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1529:18:1529:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1529:18:1529:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1529:18:1529:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1529:18:1529:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1529:18:1529:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1529:26:1529:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1529:26:1529:27 | x4 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1529:26:1529:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:26:1529:27 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1529:26:1529:27 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1529:26:1529:32 | x4.m2() | | {EXTERNAL LOCATION} | & | -| main.rs:1529:26:1529:32 | x4.m2() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1529:26:1529:32 | x4.m2() | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1530:18:1530:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1530:18:1530:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1530:18:1530:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1530:18:1530:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1530:18:1530:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1530:26:1530:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1530:26:1530:27 | x4 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1530:26:1530:27 | x4 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:26:1530:27 | x4 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1530:26:1530:27 | x4 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1530:26:1530:32 | x4.m3() | | {EXTERNAL LOCATION} | & | -| main.rs:1530:26:1530:32 | x4.m3() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1530:26:1530:32 | x4.m3() | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:13:1532:14 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1532:13:1532:14 | x5 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1532:13:1532:14 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:13:1532:14 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1532:13:1532:14 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:18:1532:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1532:18:1532:23 | &... | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1532:18:1532:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1532:18:1532:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1532:18:1532:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:19:1532:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1532:19:1532:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1532:21:1532:22 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1534:18:1534:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1534:18:1534:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1534:18:1534:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1534:18:1534:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1534:18:1534:32 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1534:26:1534:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1534:26:1534:27 | x5 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1534:26:1534:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1534:26:1534:27 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1534:26:1534:27 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1534:26:1534:32 | x5.m1() | | main.rs:1473:5:1474:14 | S2 | | main.rs:1535:18:1535:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1535:18:1535:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1535:18:1535:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1535:18:1535:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1535:18:1535:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1535:26:1535:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1535:26:1535:27 | x5 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1535:26:1535:27 | x5 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1535:26:1535:27 | x5 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1535:26:1535:27 | x5 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1535:26:1535:29 | x5.0 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:13:1537:14 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1537:13:1537:14 | x6 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1537:13:1537:14 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:13:1537:14 | x6 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1537:13:1537:14 | x6 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:18:1537:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1537:18:1537:23 | &... | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1537:18:1537:23 | &... | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1537:18:1537:23 | &... | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1537:18:1537:23 | &... | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:19:1537:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1537:19:1537:23 | S(...) | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1537:21:1537:22 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1540:18:1540:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1540:18:1540:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1540:18:1540:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1540:18:1540:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1540:18:1540:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1540:26:1540:30 | (...) | | main.rs:1470:5:1471:19 | S | @@ -3514,34 +3514,34 @@ inferType | main.rs:1540:27:1540:29 | * ... | | main.rs:1470:5:1471:19 | S | | main.rs:1540:27:1540:29 | * ... | T | main.rs:1473:5:1474:14 | S2 | | main.rs:1540:28:1540:29 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1540:28:1540:29 | x6 | &T | main.rs:1470:5:1471:19 | S | -| main.rs:1540:28:1540:29 | x6 | &T.T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1540:28:1540:29 | x6 | TRef | main.rs:1470:5:1471:19 | S | +| main.rs:1540:28:1540:29 | x6 | TRef.T | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:13:1542:14 | x7 | | main.rs:1470:5:1471:19 | S | | main.rs:1542:13:1542:14 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1542:13:1542:14 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:13:1542:14 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:18:1542:23 | S(...) | | main.rs:1470:5:1471:19 | S | | main.rs:1542:18:1542:23 | S(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:1542:18:1542:23 | S(...) | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:18:1542:23 | S(...) | T.TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:20:1542:22 | &S2 | | {EXTERNAL LOCATION} | & | -| main.rs:1542:20:1542:22 | &S2 | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1542:20:1542:22 | &S2 | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1542:21:1542:22 | S2 | | main.rs:1473:5:1474:14 | S2 | | main.rs:1545:13:1545:13 | t | | {EXTERNAL LOCATION} | & | -| main.rs:1545:13:1545:13 | t | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:13:1545:13 | t | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1545:17:1545:18 | x7 | | main.rs:1470:5:1471:19 | S | | main.rs:1545:17:1545:18 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1545:17:1545:18 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:18 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1545:17:1545:23 | x7.m1() | | {EXTERNAL LOCATION} | & | -| main.rs:1545:17:1545:23 | x7.m1() | &T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1545:17:1545:23 | x7.m1() | TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1546:18:1546:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1546:18:1546:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1546:18:1546:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1546:18:1546:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1546:18:1546:27 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1546:26:1546:27 | x7 | | main.rs:1470:5:1471:19 | S | | main.rs:1546:26:1546:27 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1546:26:1546:27 | x7 | T.&T | main.rs:1473:5:1474:14 | S2 | +| main.rs:1546:26:1546:27 | x7 | T.TRef | main.rs:1473:5:1474:14 | S2 | | main.rs:1548:13:1548:14 | x9 | | {EXTERNAL LOCATION} | String | | main.rs:1548:26:1548:32 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1548:26:1548:32 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1548:26:1548:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1548:26:1548:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | | main.rs:1552:13:1552:13 | u | | {EXTERNAL LOCATION} | Result | | main.rs:1552:13:1552:13 | u | T | {EXTERNAL LOCATION} | u32 | @@ -3549,78 +3549,78 @@ inferType | main.rs:1552:17:1552:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | | main.rs:1552:17:1552:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | | main.rs:1554:13:1554:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1554:13:1554:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:13:1554:20 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:24:1554:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1554:24:1554:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1554:24:1554:39 | &... | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:25:1554:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1554:36:1554:37 | 37 | | {EXTERNAL LOCATION} | i32 | | main.rs:1556:13:1556:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1556:17:1556:24 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1556:17:1556:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1556:17:1556:24 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1556:17:1556:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1557:18:1557:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1557:18:1557:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1557:18:1557:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1557:18:1557:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1557:18:1557:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1557:26:1557:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1560:13:1560:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1560:13:1560:20 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:13:1560:20 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:24:1560:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1560:24:1560:39 | &... | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1560:24:1560:39 | &... | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:25:1560:39 | MyInt {...} | | main.rs:1476:5:1479:5 | MyInt | | main.rs:1560:36:1560:37 | 38 | | {EXTERNAL LOCATION} | i32 | | main.rs:1561:13:1561:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1561:17:1561:24 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1561:17:1561:24 | my_thing | &T | main.rs:1476:5:1479:5 | MyInt | +| main.rs:1561:17:1561:24 | my_thing | TRef | main.rs:1476:5:1479:5 | MyInt | | main.rs:1561:17:1561:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1562:18:1562:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1562:18:1562:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1562:18:1562:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1562:18:1562:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1562:18:1562:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1562:26:1562:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1569:16:1569:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1569:16:1569:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1569:16:1569:20 | SelfParam | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | | main.rs:1572:16:1572:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1572:16:1572:20 | SelfParam | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:16:1572:20 | SelfParam | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | | main.rs:1572:32:1574:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1572:32:1574:9 | { ... } | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1572:32:1574:9 | { ... } | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | | main.rs:1573:13:1573:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1573:13:1573:16 | self | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:16 | self | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | | main.rs:1573:13:1573:22 | self.foo() | | {EXTERNAL LOCATION} | & | -| main.rs:1573:13:1573:22 | self.foo() | &T | main.rs:1567:5:1575:5 | Self [trait MyTrait] | +| main.rs:1573:13:1573:22 | self.foo() | TRef | main.rs:1567:5:1575:5 | Self [trait MyTrait] | | main.rs:1581:16:1581:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1581:16:1581:20 | SelfParam | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1581:16:1581:20 | SelfParam | TRef | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1581:36:1583:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1581:36:1583:9 | { ... } | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1581:36:1583:9 | { ... } | TRef | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1582:13:1582:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1582:13:1582:16 | self | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1582:13:1582:16 | self | TRef | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1586:16:1589:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1587:13:1587:13 | x | | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1587:17:1587:24 | MyStruct | | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1588:9:1588:9 | x | | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1588:9:1588:15 | x.bar() | | {EXTERNAL LOCATION} | & | -| main.rs:1588:9:1588:15 | x.bar() | &T | main.rs:1577:5:1577:20 | MyStruct | +| main.rs:1588:9:1588:15 | x.bar() | TRef | main.rs:1577:5:1577:20 | MyStruct | | main.rs:1598:16:1598:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1598:16:1598:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1598:16:1598:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1598:16:1598:20 | SelfParam | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:16:1598:20 | SelfParam | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1598:32:1600:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1598:32:1600:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1598:32:1600:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1598:32:1600:9 | { ... } | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1598:32:1600:9 | { ... } | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1599:13:1599:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1599:13:1599:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1599:13:1599:16 | self | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1599:13:1599:16 | self | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1599:13:1599:16 | self | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1602:16:1602:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1602:16:1602:20 | SelfParam | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1602:16:1602:20 | SelfParam | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:16:1602:20 | SelfParam | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:16:1602:20 | SelfParam | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1602:23:1602:23 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1602:23:1602:23 | x | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1602:23:1602:23 | x | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:23:1602:23 | x | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:23:1602:23 | x | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1602:42:1604:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1602:42:1604:9 | { ... } | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1602:42:1604:9 | { ... } | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1602:42:1604:9 | { ... } | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1602:42:1604:9 | { ... } | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1603:13:1603:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1603:13:1603:16 | self | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1603:13:1603:16 | self | &T.T | main.rs:1597:10:1597:10 | T | +| main.rs:1603:13:1603:16 | self | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1603:13:1603:16 | self | TRef.T | main.rs:1597:10:1597:10 | T | | main.rs:1607:16:1613:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1608:13:1608:13 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1608:13:1608:13 | x | T | main.rs:1593:5:1593:13 | S | @@ -3630,8 +3630,8 @@ inferType | main.rs:1609:9:1609:9 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1609:9:1609:9 | x | T | main.rs:1593:5:1593:13 | S | | main.rs:1609:9:1609:15 | x.foo() | | {EXTERNAL LOCATION} | & | -| main.rs:1609:9:1609:15 | x.foo() | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1609:9:1609:15 | x.foo() | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1609:9:1609:15 | x.foo() | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1609:9:1609:15 | x.foo() | TRef.T | main.rs:1593:5:1593:13 | S | | main.rs:1610:13:1610:13 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1610:13:1610:13 | x | T | main.rs:1593:5:1593:13 | S | | main.rs:1610:17:1610:27 | MyStruct(...) | | main.rs:1595:5:1595:26 | MyStruct | @@ -3640,123 +3640,123 @@ inferType | main.rs:1612:9:1612:9 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:9:1612:9 | x | T | main.rs:1593:5:1593:13 | S | | main.rs:1612:9:1612:18 | x.bar(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1612:9:1612:18 | x.bar(...) | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1612:9:1612:18 | x.bar(...) | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:9:1612:18 | x.bar(...) | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:9:1612:18 | x.bar(...) | TRef.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:15:1612:17 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1612:15:1612:17 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1612:15:1612:17 | &... | &T.&T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1612:15:1612:17 | &... | &T.&T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:15:1612:17 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1612:15:1612:17 | &... | TRef.TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:15:1612:17 | &... | TRef.TRef.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:16:1612:17 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1612:16:1612:17 | &x | &T | main.rs:1595:5:1595:26 | MyStruct | -| main.rs:1612:16:1612:17 | &x | &T.T | main.rs:1593:5:1593:13 | S | +| main.rs:1612:16:1612:17 | &x | TRef | main.rs:1595:5:1595:26 | MyStruct | +| main.rs:1612:16:1612:17 | &x | TRef.T | main.rs:1593:5:1593:13 | S | | main.rs:1612:17:1612:17 | x | | main.rs:1595:5:1595:26 | MyStruct | | main.rs:1612:17:1612:17 | x | T | main.rs:1593:5:1593:13 | S | | main.rs:1623:17:1623:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1623:17:1623:25 | SelfParam | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1623:17:1623:25 | SelfParam | TRef | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1623:28:1625:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1624:13:1624:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1624:13:1624:16 | self | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:13:1624:16 | self | TRef | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1624:13:1624:21 | self.bool | | {EXTERNAL LOCATION} | bool | | main.rs:1624:13:1624:34 | ... = ... | | {EXTERNAL LOCATION} | () | | main.rs:1624:25:1624:34 | ! ... | | {EXTERNAL LOCATION} | bool | | main.rs:1624:26:1624:29 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1624:26:1624:29 | self | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1624:26:1624:29 | self | TRef | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1624:26:1624:34 | self.bool | | {EXTERNAL LOCATION} | bool | | main.rs:1631:15:1631:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1631:15:1631:19 | SelfParam | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1631:15:1631:19 | SelfParam | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1631:31:1633:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1631:31:1633:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1631:31:1633:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1632:13:1632:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1632:13:1632:19 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1632:13:1632:19 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1632:13:1632:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1632:13:1632:19 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1632:13:1632:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1632:13:1632:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:13:1632:19 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1632:14:1632:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1632:14:1632:19 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1632:14:1632:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1632:14:1632:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:14:1632:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:14:1632:19 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1632:15:1632:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1632:15:1632:19 | &self | &T | {EXTERNAL LOCATION} | & | -| main.rs:1632:15:1632:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:15:1632:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1632:15:1632:19 | &self | TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1632:16:1632:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1632:16:1632:19 | self | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1632:16:1632:19 | self | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1635:15:1635:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1635:15:1635:25 | SelfParam | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1635:15:1635:25 | SelfParam | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1635:37:1637:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1635:37:1637:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1635:37:1637:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1636:13:1636:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1636:13:1636:19 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1636:13:1636:19 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1636:13:1636:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1636:13:1636:19 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1636:13:1636:19 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1636:13:1636:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:13:1636:19 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1636:14:1636:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1636:14:1636:19 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1636:14:1636:19 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1636:14:1636:19 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:14:1636:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:14:1636:19 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1636:15:1636:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1636:15:1636:19 | &self | &T | {EXTERNAL LOCATION} | & | -| main.rs:1636:15:1636:19 | &self | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:15:1636:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1636:15:1636:19 | &self | TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1636:16:1636:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1636:16:1636:19 | self | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1636:16:1636:19 | self | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1639:15:1639:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1639:15:1639:15 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1639:15:1639:15 | x | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1639:34:1641:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1639:34:1641:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1639:34:1641:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1640:13:1640:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1640:13:1640:13 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1640:13:1640:13 | x | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1643:15:1643:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1643:15:1643:15 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1643:15:1643:15 | x | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1643:34:1645:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1643:34:1645:9 | { ... } | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1643:34:1645:9 | { ... } | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1644:13:1644:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1644:13:1644:16 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1644:13:1644:16 | &... | &T | main.rs:1628:5:1628:13 | S | -| main.rs:1644:13:1644:16 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1644:13:1644:16 | &... | &T.&T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1644:13:1644:16 | &... | &T.&T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef | main.rs:1628:5:1628:13 | S | +| main.rs:1644:13:1644:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:13:1644:16 | &... | TRef.TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1644:14:1644:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1644:14:1644:16 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1644:14:1644:16 | &... | &T.&T | {EXTERNAL LOCATION} | & | -| main.rs:1644:14:1644:16 | &... | &T.&T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:14:1644:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:14:1644:16 | &... | TRef.TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1644:15:1644:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1644:15:1644:16 | &x | &T | {EXTERNAL LOCATION} | & | -| main.rs:1644:15:1644:16 | &x | &T.&T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:15:1644:16 | &x | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1644:15:1644:16 | &x | TRef.TRef | main.rs:1628:5:1628:13 | S | | main.rs:1644:16:1644:16 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1644:16:1644:16 | x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1644:16:1644:16 | x | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1648:16:1661:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1649:13:1649:13 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1649:17:1649:20 | S {...} | | main.rs:1628:5:1628:13 | S | | main.rs:1650:9:1650:9 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1650:9:1650:14 | x.f1() | | {EXTERNAL LOCATION} | & | -| main.rs:1650:9:1650:14 | x.f1() | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1650:9:1650:14 | x.f1() | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1651:9:1651:9 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1651:9:1651:14 | x.f2() | | {EXTERNAL LOCATION} | & | -| main.rs:1651:9:1651:14 | x.f2() | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1651:9:1651:14 | x.f2() | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1652:9:1652:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1652:9:1652:17 | ...::f3(...) | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1652:9:1652:17 | ...::f3(...) | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1652:15:1652:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1652:15:1652:16 | &x | &T | main.rs:1628:5:1628:13 | S | +| main.rs:1652:15:1652:16 | &x | TRef | main.rs:1628:5:1628:13 | S | | main.rs:1652:16:1652:16 | x | | main.rs:1628:5:1628:13 | S | | main.rs:1654:13:1654:13 | n | | {EXTERNAL LOCATION} | bool | | main.rs:1654:17:1654:24 | * ... | | {EXTERNAL LOCATION} | bool | | main.rs:1654:18:1654:24 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1654:18:1654:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:18:1654:24 | * ... | TRef | {EXTERNAL LOCATION} | bool | | main.rs:1654:19:1654:24 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1654:19:1654:24 | &... | &T | {EXTERNAL LOCATION} | & | -| main.rs:1654:19:1654:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:19:1654:24 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1654:19:1654:24 | &... | TRef.TRef | {EXTERNAL LOCATION} | bool | | main.rs:1654:20:1654:24 | &true | | {EXTERNAL LOCATION} | & | -| main.rs:1654:20:1654:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1654:20:1654:24 | &true | TRef | {EXTERNAL LOCATION} | bool | | main.rs:1654:21:1654:24 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1658:17:1658:20 | flag | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1658:24:1658:41 | ...::default(...) | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1659:9:1659:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | | main.rs:1659:22:1659:30 | &mut flag | | {EXTERNAL LOCATION} | & | -| main.rs:1659:22:1659:30 | &mut flag | &T | main.rs:1617:5:1620:5 | MyFlag | +| main.rs:1659:22:1659:30 | &mut flag | TRef | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1659:27:1659:30 | flag | | main.rs:1617:5:1620:5 | MyFlag | | main.rs:1660:18:1660:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1660:18:1660:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1660:18:1660:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1660:18:1660:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1660:18:1660:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1660:26:1660:29 | flag | | main.rs:1617:5:1620:5 | MyFlag | @@ -3836,7 +3836,7 @@ inferType | main.rs:1701:53:1704:9 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1701:53:1704:9 | { ... } | E | main.rs:1667:5:1668:14 | S1 | | main.rs:1702:22:1702:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1702:22:1702:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1702:22:1702:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1702:22:1702:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1702:22:1702:30 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1703:13:1703:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | @@ -3856,7 +3856,7 @@ inferType | main.rs:1710:37:1710:52 | try_same_error(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1710:54:1712:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1711:22:1711:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1711:22:1711:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1711:22:1711:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1711:22:1711:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1711:22:1711:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1711:30:1711:35 | result | | main.rs:1667:5:1668:14 | S1 | @@ -3870,7 +3870,7 @@ inferType | main.rs:1714:37:1714:55 | try_convert_error(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1714:57:1716:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1715:22:1715:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1715:22:1715:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1715:22:1715:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1715:22:1715:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1715:22:1715:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1715:30:1715:35 | result | | main.rs:1667:5:1668:14 | S1 | @@ -3884,7 +3884,7 @@ inferType | main.rs:1718:37:1718:49 | try_chained(...) | T | main.rs:1667:5:1668:14 | S1 | | main.rs:1718:51:1720:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1719:22:1719:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1719:22:1719:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1719:22:1719:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1719:22:1719:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1719:22:1719:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1719:30:1719:35 | result | | main.rs:1667:5:1668:14 | S1 | @@ -3902,7 +3902,7 @@ inferType | main.rs:1722:60:1722:61 | S1 | | main.rs:1667:5:1668:14 | S1 | | main.rs:1722:65:1724:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1723:22:1723:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1723:22:1723:27 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1723:22:1723:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1723:22:1723:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:1723:22:1723:35 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1723:30:1723:35 | result | | main.rs:1667:5:1668:14 | S1 | @@ -3921,9 +3921,9 @@ inferType | main.rs:1734:13:1734:13 | c | | {EXTERNAL LOCATION} | char | | main.rs:1734:17:1734:19 | 'c' | | {EXTERNAL LOCATION} | char | | main.rs:1735:13:1735:17 | hello | | {EXTERNAL LOCATION} | & | -| main.rs:1735:13:1735:17 | hello | &T | {EXTERNAL LOCATION} | str | +| main.rs:1735:13:1735:17 | hello | TRef | {EXTERNAL LOCATION} | str | | main.rs:1735:21:1735:27 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1735:21:1735:27 | "Hello" | &T | {EXTERNAL LOCATION} | str | +| main.rs:1735:21:1735:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | | main.rs:1736:13:1736:13 | f | | {EXTERNAL LOCATION} | f64 | | main.rs:1736:17:1736:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | | main.rs:1737:13:1737:13 | t | | {EXTERNAL LOCATION} | bool | @@ -3931,39 +3931,39 @@ inferType | main.rs:1738:13:1738:13 | f | | {EXTERNAL LOCATION} | bool | | main.rs:1738:17:1738:21 | false | | {EXTERNAL LOCATION} | bool | | main.rs:1741:26:1741:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1741:26:1741:30 | SelfParam | &T | main.rs:1740:9:1744:9 | Self [trait MyTrait] | +| main.rs:1741:26:1741:30 | SelfParam | TRef | main.rs:1740:9:1744:9 | Self [trait MyTrait] | | main.rs:1747:26:1747:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1747:26:1747:30 | SelfParam | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:1747:26:1747:30 | SelfParam | &T.[T;...] | main.rs:1746:14:1746:23 | T | +| main.rs:1747:26:1747:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1747:26:1747:30 | SelfParam | TRef.TArray | main.rs:1746:14:1746:23 | T | | main.rs:1747:39:1749:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1747:39:1749:13 | { ... } | &T | main.rs:1746:14:1746:23 | T | +| main.rs:1747:39:1749:13 | { ... } | TRef | main.rs:1746:14:1746:23 | T | | main.rs:1748:17:1748:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1748:17:1748:20 | self | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:1748:17:1748:20 | self | &T.[T;...] | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:20 | self | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1748:17:1748:20 | self | TRef.TArray | main.rs:1746:14:1746:23 | T | | main.rs:1748:17:1748:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1748:17:1748:36 | ... .unwrap() | &T | main.rs:1746:14:1746:23 | T | +| main.rs:1748:17:1748:36 | ... .unwrap() | TRef | main.rs:1746:14:1746:23 | T | | main.rs:1748:26:1748:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1751:31:1753:13 | { ... } | | main.rs:1746:14:1746:23 | T | | main.rs:1752:17:1752:28 | ...::default(...) | | main.rs:1746:14:1746:23 | T | | main.rs:1756:13:1756:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1756:13:1756:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:13:1756:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1756:17:1756:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1756:17:1756:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:1756:17:1756:37 | ... .my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1756:17:1756:37 | ... .my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1756:17:1756:37 | ... .my_method() | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1756:18:1756:18 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1756:21:1756:21 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1756:24:1756:24 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:13:1757:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1757:13:1757:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:13:1757:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1757:17:1757:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1757:17:1757:47 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:17:1757:47 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1757:22:1757:22 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:37:1757:46 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1757:37:1757:46 | &... | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:1757:37:1757:46 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:37:1757:46 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1757:37:1757:46 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | | main.rs:1757:38:1757:46 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1757:38:1757:46 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1757:38:1757:46 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:1757:39:1757:39 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:42:1757:42 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1757:45:1757:45 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -3971,170 +3971,170 @@ inferType | main.rs:1758:17:1758:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1758:24:1758:24 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1761:26:1761:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1761:26:1761:30 | SelfParam | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1761:26:1761:30 | SelfParam | &T.[T] | main.rs:1760:14:1760:23 | T | +| main.rs:1761:26:1761:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1761:26:1761:30 | SelfParam | TRef.TSlice | main.rs:1760:14:1760:23 | T | | main.rs:1761:39:1763:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1761:39:1763:13 | { ... } | &T | main.rs:1760:14:1760:23 | T | +| main.rs:1761:39:1763:13 | { ... } | TRef | main.rs:1760:14:1760:23 | T | | main.rs:1762:17:1762:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1762:17:1762:20 | self | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1762:17:1762:20 | self | &T.[T] | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:20 | self | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1762:17:1762:20 | self | TRef.TSlice | main.rs:1760:14:1760:23 | T | | main.rs:1762:17:1762:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | | main.rs:1762:17:1762:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:1762:17:1762:27 | self.get(...) | T.&T | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:27 | self.get(...) | T.TRef | main.rs:1760:14:1760:23 | T | | main.rs:1762:17:1762:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1762:17:1762:36 | ... .unwrap() | &T | main.rs:1760:14:1760:23 | T | +| main.rs:1762:17:1762:36 | ... .unwrap() | TRef | main.rs:1760:14:1760:23 | T | | main.rs:1762:26:1762:26 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1765:31:1767:13 | { ... } | | main.rs:1760:14:1760:23 | T | | main.rs:1766:17:1766:28 | ...::default(...) | | main.rs:1760:14:1760:23 | T | | main.rs:1770:13:1770:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1770:13:1770:13 | s | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1770:13:1770:13 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:13:1770:13 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1770:13:1770:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1770:25:1770:34 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1770:25:1770:34 | &... | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1770:25:1770:34 | &... | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:1770:25:1770:34 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:1770:25:1770:34 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1770:25:1770:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1770:25:1770:34 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:25:1770:34 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1770:26:1770:34 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1770:26:1770:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:1770:26:1770:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:1770:27:1770:27 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1770:30:1770:30 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1770:33:1770:33 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:1771:13:1771:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1771:13:1771:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:13:1771:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1771:17:1771:17 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1771:17:1771:17 | s | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1771:17:1771:17 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:17 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1771:17:1771:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1771:17:1771:29 | s.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1771:17:1771:29 | s.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1771:17:1771:29 | s.my_method() | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1772:13:1772:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1772:13:1772:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:13:1772:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1772:17:1772:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1772:17:1772:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:17:1772:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1772:34:1772:34 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1772:34:1772:34 | s | &T | {EXTERNAL LOCATION} | [] | -| main.rs:1772:34:1772:34 | s | &T.[T] | {EXTERNAL LOCATION} | i32 | +| main.rs:1772:34:1772:34 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1772:34:1772:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | main.rs:1773:13:1773:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1773:17:1773:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1776:26:1776:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1776:26:1776:30 | SelfParam | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1776:26:1776:30 | SelfParam | &T.0(2) | main.rs:1775:14:1775:23 | T | -| main.rs:1776:26:1776:30 | SelfParam | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1776:26:1776:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1776:26:1776:30 | SelfParam | TRef.T0 | main.rs:1775:14:1775:23 | T | +| main.rs:1776:26:1776:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1776:39:1778:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1776:39:1778:13 | { ... } | &T | main.rs:1775:14:1775:23 | T | +| main.rs:1776:39:1778:13 | { ... } | TRef | main.rs:1775:14:1775:23 | T | | main.rs:1777:17:1777:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1777:17:1777:23 | &... | &T | main.rs:1775:14:1775:23 | T | +| main.rs:1777:17:1777:23 | &... | TRef | main.rs:1775:14:1775:23 | T | | main.rs:1777:18:1777:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1777:18:1777:21 | self | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1777:18:1777:21 | self | &T.0(2) | main.rs:1775:14:1775:23 | T | -| main.rs:1777:18:1777:21 | self | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1777:18:1777:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1777:18:1777:21 | self | TRef.T0 | main.rs:1775:14:1775:23 | T | +| main.rs:1777:18:1777:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1777:18:1777:23 | self.0 | | main.rs:1775:14:1775:23 | T | | main.rs:1780:31:1782:13 | { ... } | | main.rs:1775:14:1775:23 | T | | main.rs:1781:17:1781:28 | ...::default(...) | | main.rs:1775:14:1775:23 | T | | main.rs:1785:13:1785:13 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1785:13:1785:13 | p | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1785:13:1785:13 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:13:1785:13 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:13:1785:13 | p | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1785:17:1785:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1785:17:1785:23 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1785:17:1785:23 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1785:17:1785:23 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1785:18:1785:19 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1785:22:1785:22 | 7 | | {EXTERNAL LOCATION} | i32 | | main.rs:1786:13:1786:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1786:13:1786:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:13:1786:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1786:17:1786:17 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1786:17:1786:17 | p | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1786:17:1786:17 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:17 | p | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1786:17:1786:29 | p.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1786:17:1786:29 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1786:17:1786:29 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1787:13:1787:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1787:13:1787:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:13:1787:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1787:17:1787:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1787:17:1787:39 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:17:1787:39 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1787:37:1787:38 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1787:37:1787:38 | &p | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1787:37:1787:38 | &p | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:37:1787:38 | &p | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1787:37:1787:38 | &p | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:37:1787:38 | &p | TRef.T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1787:38:1787:38 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1787:38:1787:38 | p | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:1787:38:1787:38 | p | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1787:38:1787:38 | p | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:1788:13:1788:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1788:17:1788:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1791:26:1791:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1791:26:1791:30 | SelfParam | &T | {EXTERNAL LOCATION} | & | -| main.rs:1791:26:1791:30 | SelfParam | &T.&T | main.rs:1790:14:1790:23 | T | +| main.rs:1791:26:1791:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1791:26:1791:30 | SelfParam | TRef.TRef | main.rs:1790:14:1790:23 | T | | main.rs:1791:39:1793:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1791:39:1793:13 | { ... } | &T | main.rs:1790:14:1790:23 | T | +| main.rs:1791:39:1793:13 | { ... } | TRef | main.rs:1790:14:1790:23 | T | | main.rs:1792:17:1792:21 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1792:17:1792:21 | * ... | &T | main.rs:1790:14:1790:23 | T | +| main.rs:1792:17:1792:21 | * ... | TRef | main.rs:1790:14:1790:23 | T | | main.rs:1792:18:1792:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1792:18:1792:21 | self | &T | {EXTERNAL LOCATION} | & | -| main.rs:1792:18:1792:21 | self | &T.&T | main.rs:1790:14:1790:23 | T | +| main.rs:1792:18:1792:21 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1792:18:1792:21 | self | TRef.TRef | main.rs:1790:14:1790:23 | T | | main.rs:1795:31:1797:13 | { ... } | | main.rs:1790:14:1790:23 | T | | main.rs:1796:17:1796:28 | ...::default(...) | | main.rs:1790:14:1790:23 | T | | main.rs:1800:13:1800:13 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1800:13:1800:13 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:13:1800:13 | r | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1800:17:1800:19 | &42 | | {EXTERNAL LOCATION} | & | -| main.rs:1800:17:1800:19 | &42 | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1800:17:1800:19 | &42 | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1800:18:1800:19 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1801:13:1801:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1801:13:1801:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:13:1801:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1801:17:1801:17 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1801:17:1801:17 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:17 | r | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1801:17:1801:29 | r.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1801:17:1801:29 | r.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:17:1801:29 | r.my_method() | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1802:13:1802:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1802:13:1802:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:13:1802:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1802:17:1802:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1802:17:1802:35 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:17:1802:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1802:33:1802:34 | &r | | {EXTERNAL LOCATION} | & | -| main.rs:1802:33:1802:34 | &r | &T | {EXTERNAL LOCATION} | & | -| main.rs:1802:33:1802:34 | &r | &T.&T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:33:1802:34 | &r | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1802:33:1802:34 | &r | TRef.TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1802:34:1802:34 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1802:34:1802:34 | r | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1802:34:1802:34 | r | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1803:13:1803:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1803:17:1803:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1806:26:1806:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1806:26:1806:30 | SelfParam | &T | file://:0:0:0:0 | * | -| main.rs:1806:26:1806:30 | SelfParam | &T.*T | main.rs:1805:14:1805:23 | T | +| main.rs:1806:26:1806:30 | SelfParam | TRef | file://:0:0:0:0 | * | +| main.rs:1806:26:1806:30 | SelfParam | TRef.TPtr | main.rs:1805:14:1805:23 | T | | main.rs:1806:39:1808:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1806:39:1808:13 | { ... } | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1806:39:1808:13 | { ... } | TRef | main.rs:1805:14:1805:23 | T | | main.rs:1807:17:1807:34 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1807:17:1807:34 | { ... } | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:17:1807:34 | { ... } | TRef | main.rs:1805:14:1805:23 | T | | main.rs:1807:26:1807:32 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1807:26:1807:32 | &... | &T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:26:1807:32 | &... | TRef | main.rs:1805:14:1805:23 | T | | main.rs:1807:27:1807:32 | * ... | | main.rs:1805:14:1805:23 | T | | main.rs:1807:28:1807:32 | * ... | | file://:0:0:0:0 | * | -| main.rs:1807:28:1807:32 | * ... | *T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:28:1807:32 | * ... | TPtr | main.rs:1805:14:1805:23 | T | | main.rs:1807:29:1807:32 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1807:29:1807:32 | self | &T | file://:0:0:0:0 | * | -| main.rs:1807:29:1807:32 | self | &T.*T | main.rs:1805:14:1805:23 | T | +| main.rs:1807:29:1807:32 | self | TRef | file://:0:0:0:0 | * | +| main.rs:1807:29:1807:32 | self | TRef.TPtr | main.rs:1805:14:1805:23 | T | | main.rs:1810:31:1812:13 | { ... } | | main.rs:1805:14:1805:23 | T | | main.rs:1811:17:1811:28 | ...::default(...) | | main.rs:1805:14:1805:23 | T | | main.rs:1815:17:1815:17 | v | | {EXTERNAL LOCATION} | i32 | | main.rs:1815:21:1815:22 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1816:13:1816:13 | p | | file://:0:0:0:0 | * | -| main.rs:1816:13:1816:13 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:13:1816:13 | p | TPtr | {EXTERNAL LOCATION} | i32 | | main.rs:1816:27:1816:32 | &mut v | | {EXTERNAL LOCATION} | & | -| main.rs:1816:27:1816:32 | &mut v | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1816:27:1816:32 | &mut v | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1816:32:1816:32 | v | | {EXTERNAL LOCATION} | i32 | | main.rs:1817:13:1817:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1817:13:1817:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:13:1817:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1817:17:1817:40 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1817:17:1817:40 | { ... } | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:17:1817:40 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1817:26:1817:26 | p | | file://:0:0:0:0 | * | -| main.rs:1817:26:1817:26 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:26 | p | TPtr | {EXTERNAL LOCATION} | i32 | | main.rs:1817:26:1817:38 | p.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1817:26:1817:38 | p.my_method() | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:26:1817:38 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1818:13:1818:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1818:13:1818:13 | x | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:13:1818:13 | x | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1818:17:1818:50 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1818:17:1818:50 | { ... } | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:17:1818:50 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1818:26:1818:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1818:26:1818:48 | ...::my_method(...) | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:26:1818:48 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:1818:46:1818:47 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1818:46:1818:47 | &p | &T | file://:0:0:0:0 | * | -| main.rs:1818:46:1818:47 | &p | &T.*T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:46:1818:47 | &p | TRef | file://:0:0:0:0 | * | +| main.rs:1818:46:1818:47 | &p | TRef.TPtr | {EXTERNAL LOCATION} | i32 | | main.rs:1818:47:1818:47 | p | | file://:0:0:0:0 | * | -| main.rs:1818:47:1818:47 | p | *T | {EXTERNAL LOCATION} | i32 | +| main.rs:1818:47:1818:47 | p | TPtr | {EXTERNAL LOCATION} | i32 | | main.rs:1819:13:1819:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1819:17:1819:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | | main.rs:1825:16:1837:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -4183,17 +4183,17 @@ inferType | main.rs:1861:29:1861:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1861:29:1861:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1868:23:1868:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1868:23:1868:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1868:23:1868:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1868:34:1868:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1868:45:1871:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1869:13:1869:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1869:13:1869:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1869:13:1869:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1869:13:1869:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1869:13:1869:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1869:23:1869:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1869:23:1869:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1870:13:1870:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1870:13:1870:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1870:13:1870:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1870:13:1870:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1870:13:1870:27 | ... += ... | | {EXTERNAL LOCATION} | () | | main.rs:1870:23:1870:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4213,17 +4213,17 @@ inferType | main.rs:1879:29:1879:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1879:29:1879:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1886:23:1886:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1886:23:1886:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1886:23:1886:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1886:34:1886:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1886:45:1889:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1887:13:1887:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1887:13:1887:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1887:13:1887:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1887:13:1887:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1887:13:1887:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1887:23:1887:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1887:23:1887:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1888:13:1888:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1888:13:1888:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1888:13:1888:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1888:13:1888:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1888:13:1888:27 | ... -= ... | | {EXTERNAL LOCATION} | () | | main.rs:1888:23:1888:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4243,17 +4243,17 @@ inferType | main.rs:1897:29:1897:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1897:29:1897:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1903:23:1903:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1903:23:1903:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1903:23:1903:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1903:34:1903:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1903:45:1906:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1904:13:1904:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1904:13:1904:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1904:13:1904:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1904:13:1904:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1904:13:1904:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1904:23:1904:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1904:23:1904:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1905:13:1905:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1905:13:1905:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1905:13:1905:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1905:13:1905:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1905:13:1905:27 | ... *= ... | | {EXTERNAL LOCATION} | () | | main.rs:1905:23:1905:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4273,17 +4273,17 @@ inferType | main.rs:1914:29:1914:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1914:29:1914:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1920:23:1920:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1920:23:1920:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1920:23:1920:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1920:34:1920:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1920:45:1923:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1921:13:1921:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1921:13:1921:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1921:13:1921:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1921:13:1921:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1921:13:1921:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1921:23:1921:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1921:23:1921:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1922:13:1922:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1922:13:1922:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1922:13:1922:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1922:13:1922:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1922:13:1922:27 | ... /= ... | | {EXTERNAL LOCATION} | () | | main.rs:1922:23:1922:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4303,17 +4303,17 @@ inferType | main.rs:1931:29:1931:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1931:29:1931:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1937:23:1937:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1937:23:1937:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1937:23:1937:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1937:34:1937:36 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1937:45:1940:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1938:13:1938:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1938:13:1938:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1938:13:1938:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1938:13:1938:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1938:13:1938:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1938:23:1938:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1938:23:1938:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1939:13:1939:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1939:13:1939:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1939:13:1939:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1939:13:1939:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1939:13:1939:27 | ... %= ... | | {EXTERNAL LOCATION} | () | | main.rs:1939:23:1939:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4333,17 +4333,17 @@ inferType | main.rs:1948:29:1948:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1948:29:1948:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1954:26:1954:34 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1954:26:1954:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1954:26:1954:34 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1954:37:1954:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1954:48:1957:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1955:13:1955:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1955:13:1955:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1955:13:1955:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1955:13:1955:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1955:13:1955:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1955:23:1955:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1955:23:1955:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1956:13:1956:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1956:13:1956:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1956:13:1956:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1956:13:1956:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1956:13:1956:27 | ... &= ... | | {EXTERNAL LOCATION} | () | | main.rs:1956:23:1956:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4363,17 +4363,17 @@ inferType | main.rs:1965:29:1965:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1965:29:1965:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1971:25:1971:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1971:25:1971:33 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1971:25:1971:33 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1971:36:1971:38 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1971:47:1974:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1972:13:1972:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1972:13:1972:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1972:13:1972:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1972:13:1972:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1972:13:1972:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1972:23:1972:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1972:23:1972:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1973:13:1973:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1973:13:1973:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1973:13:1973:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1973:13:1973:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1973:13:1973:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | | main.rs:1973:23:1973:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4393,17 +4393,17 @@ inferType | main.rs:1982:29:1982:31 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1982:29:1982:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1988:26:1988:34 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1988:26:1988:34 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1988:26:1988:34 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1988:37:1988:39 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1988:48:1991:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1989:13:1989:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1989:13:1989:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1989:13:1989:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1989:13:1989:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1989:13:1989:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1989:23:1989:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1989:23:1989:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1990:13:1990:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1990:13:1990:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:1990:13:1990:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:1990:13:1990:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1990:13:1990:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | | main.rs:1990:23:1990:25 | rhs | | main.rs:1843:5:1848:5 | Vec2 | @@ -4421,16 +4421,16 @@ inferType | main.rs:1999:20:1999:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1999:30:1999:32 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2005:23:2005:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2005:23:2005:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2005:23:2005:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2005:34:2005:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2005:44:2008:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2006:13:2006:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2006:13:2006:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2006:13:2006:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2006:13:2006:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2006:13:2006:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2006:24:2006:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2007:13:2007:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2007:13:2007:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2007:13:2007:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2007:13:2007:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2007:13:2007:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:2007:24:2007:26 | rhs | | {EXTERNAL LOCATION} | u32 | @@ -4447,16 +4447,16 @@ inferType | main.rs:2016:20:2016:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2016:30:2016:32 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2022:23:2022:31 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2022:23:2022:31 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2022:23:2022:31 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2022:34:2022:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2022:44:2025:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2023:13:2023:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2023:13:2023:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2023:13:2023:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2023:13:2023:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2023:13:2023:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2023:24:2023:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:2024:13:2024:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2024:13:2024:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2024:13:2024:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2024:13:2024:18 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2024:13:2024:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | | main.rs:2024:24:2024:26 | rhs | | {EXTERNAL LOCATION} | u32 | @@ -4479,150 +4479,150 @@ inferType | main.rs:2043:21:2043:24 | self | | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2043:21:2043:26 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2049:15:2049:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2049:15:2049:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:15:2049:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2049:22:2049:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2049:22:2049:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2049:22:2049:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2049:44:2051:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2050:13:2050:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2050:13:2050:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:13:2050:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:13:2050:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2050:13:2050:29 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:2050:13:2050:50 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:2050:23:2050:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2050:23:2050:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:23:2050:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:23:2050:29 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2050:34:2050:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2050:34:2050:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:34:2050:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:34:2050:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2050:34:2050:50 | ... == ... | | {EXTERNAL LOCATION} | bool | | main.rs:2050:44:2050:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2050:44:2050:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2050:44:2050:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2050:44:2050:50 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2053:15:2053:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2053:15:2053:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:15:2053:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2053:22:2053:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2053:22:2053:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2053:22:2053:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2053:44:2055:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2054:13:2054:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2054:13:2054:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:13:2054:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:13:2054:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2054:13:2054:29 | ... != ... | | {EXTERNAL LOCATION} | bool | | main.rs:2054:13:2054:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | | main.rs:2054:23:2054:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2054:23:2054:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:23:2054:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:23:2054:29 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2054:34:2054:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2054:34:2054:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:34:2054:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:34:2054:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2054:34:2054:50 | ... != ... | | {EXTERNAL LOCATION} | bool | | main.rs:2054:44:2054:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2054:44:2054:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2054:44:2054:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2054:44:2054:50 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2059:24:2059:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2059:24:2059:28 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:24:2059:28 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2059:31:2059:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2059:31:2059:35 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2059:31:2059:35 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2059:75:2061:9 | { ... } | | {EXTERNAL LOCATION} | Option | | main.rs:2059:75:2061:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | | main.rs:2060:13:2060:29 | (...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:13:2060:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2060:13:2060:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | | main.rs:2060:14:2060:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2060:14:2060:17 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:14:2060:17 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:14:2060:19 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:14:2060:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:23:2060:26 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2060:23:2060:26 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:23:2060:26 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:23:2060:28 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:43:2060:62 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2060:43:2060:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2060:43:2060:62 | &... | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2060:44:2060:62 | (...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:45:2060:49 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2060:45:2060:49 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:45:2060:49 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:45:2060:51 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:45:2060:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2060:55:2060:59 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2060:55:2060:59 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2060:55:2060:59 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2060:55:2060:61 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2063:15:2063:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2063:15:2063:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:15:2063:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2063:22:2063:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2063:22:2063:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2063:22:2063:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2063:44:2065:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2064:13:2064:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2064:13:2064:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:13:2064:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:13:2064:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2064:13:2064:28 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2064:13:2064:48 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:2064:22:2064:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2064:22:2064:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:22:2064:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:22:2064:28 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2064:33:2064:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2064:33:2064:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:33:2064:36 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:33:2064:38 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2064:33:2064:48 | ... < ... | | {EXTERNAL LOCATION} | bool | | main.rs:2064:42:2064:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2064:42:2064:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2064:42:2064:46 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2064:42:2064:48 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2067:15:2067:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2067:15:2067:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:15:2067:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2067:22:2067:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2067:22:2067:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2067:22:2067:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2067:44:2069:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2068:13:2068:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2068:13:2068:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:13:2068:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:13:2068:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2068:13:2068:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2068:13:2068:50 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:2068:23:2068:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2068:23:2068:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:23:2068:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:23:2068:29 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2068:34:2068:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2068:34:2068:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:34:2068:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:34:2068:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2068:34:2068:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2068:44:2068:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2068:44:2068:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2068:44:2068:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2068:44:2068:50 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2071:15:2071:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2071:15:2071:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:15:2071:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2071:22:2071:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2071:22:2071:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2071:22:2071:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2071:44:2073:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2072:13:2072:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2072:13:2072:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:13:2072:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:13:2072:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2072:13:2072:28 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:2072:13:2072:48 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:2072:22:2072:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2072:22:2072:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:22:2072:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:22:2072:28 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2072:33:2072:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2072:33:2072:36 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:33:2072:36 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:33:2072:38 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2072:33:2072:48 | ... > ... | | {EXTERNAL LOCATION} | bool | | main.rs:2072:42:2072:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2072:42:2072:46 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2072:42:2072:46 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2072:42:2072:48 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2075:15:2075:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2075:15:2075:19 | SelfParam | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:15:2075:19 | SelfParam | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2075:22:2075:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2075:22:2075:26 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2075:22:2075:26 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2075:44:2077:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:2076:13:2076:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2076:13:2076:16 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:13:2076:16 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:13:2076:18 | self.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2076:13:2076:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2076:13:2076:50 | ... && ... | | {EXTERNAL LOCATION} | bool | | main.rs:2076:23:2076:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2076:23:2076:27 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:23:2076:27 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:23:2076:29 | other.x | | {EXTERNAL LOCATION} | i64 | | main.rs:2076:34:2076:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2076:34:2076:37 | self | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:34:2076:37 | self | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:34:2076:39 | self.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2076:34:2076:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | | main.rs:2076:44:2076:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2076:44:2076:48 | other | &T | main.rs:1843:5:1848:5 | Vec2 | +| main.rs:2076:44:2076:48 | other | TRef | main.rs:1843:5:1848:5 | Vec2 | | main.rs:2076:44:2076:50 | other.y | | {EXTERNAL LOCATION} | i64 | | main.rs:2080:26:2080:26 | a | | main.rs:2080:18:2080:23 | T | | main.rs:2080:32:2080:32 | b | | main.rs:2080:18:2080:23 | T | @@ -4916,9 +4916,9 @@ inferType | main.rs:2236:9:2236:16 | { ... } | Output | {EXTERNAL LOCATION} | () | | main.rs:2245:13:2245:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | | main.rs:2245:13:2245:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | & | -| main.rs:2245:13:2245:42 | SelfParam | Ptr.&T | main.rs:2239:5:2239:14 | S2 | +| main.rs:2245:13:2245:42 | SelfParam | Ptr.TRef | main.rs:2239:5:2239:14 | S2 | | main.rs:2246:13:2246:15 | _cx | | {EXTERNAL LOCATION} | & | -| main.rs:2246:13:2246:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:2246:13:2246:15 | _cx | TRef | {EXTERNAL LOCATION} | Context | | main.rs:2247:44:2249:9 | { ... } | | {EXTERNAL LOCATION} | Poll | | main.rs:2247:44:2249:9 | { ... } | T | main.rs:2221:5:2221:14 | S1 | | main.rs:2248:13:2248:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | @@ -4953,37 +4953,37 @@ inferType | main.rs:2263:9:2263:15 | await b | | main.rs:2221:5:2221:14 | S1 | | main.rs:2263:9:2263:19 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2274:15:2274:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2274:15:2274:19 | SelfParam | &T | main.rs:2273:5:2275:5 | Self [trait Trait1] | +| main.rs:2274:15:2274:19 | SelfParam | TRef | main.rs:2273:5:2275:5 | Self [trait Trait1] | | main.rs:2274:22:2274:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:15:2278:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2278:15:2278:19 | SelfParam | &T | main.rs:2277:5:2279:5 | Self [trait Trait2] | +| main.rs:2278:15:2278:19 | SelfParam | TRef | main.rs:2277:5:2279:5 | Self [trait Trait2] | | main.rs:2278:22:2278:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2282:15:2282:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2282:15:2282:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2282:15:2282:19 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | | main.rs:2282:22:2282:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2286:15:2286:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2286:15:2286:19 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2286:15:2286:19 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | | main.rs:2286:22:2286:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2289:37:2291:5 | { ... } | | main.rs:2289:16:2289:35 | impl ... + ... | | main.rs:2290:9:2290:10 | S1 | | main.rs:2268:5:2269:14 | S1 | | main.rs:2290:9:2290:10 | S1 | | main.rs:2289:16:2289:35 | impl ... + ... | | main.rs:2294:18:2294:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2294:18:2294:22 | SelfParam | &T | main.rs:2293:5:2295:5 | Self [trait MyTrait] | +| main.rs:2294:18:2294:22 | SelfParam | TRef | main.rs:2293:5:2295:5 | Self [trait MyTrait] | | main.rs:2298:18:2298:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2298:18:2298:22 | SelfParam | &T | main.rs:2268:5:2269:14 | S1 | +| main.rs:2298:18:2298:22 | SelfParam | TRef | main.rs:2268:5:2269:14 | S1 | | main.rs:2298:31:2300:9 | { ... } | | main.rs:2270:5:2270:14 | S2 | | main.rs:2299:13:2299:14 | S2 | | main.rs:2270:5:2270:14 | S2 | | main.rs:2304:18:2304:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2304:18:2304:22 | SelfParam | &T | main.rs:2271:5:2271:22 | S3 | -| main.rs:2304:18:2304:22 | SelfParam | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2304:18:2304:22 | SelfParam | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2304:18:2304:22 | SelfParam | TRef.T3 | main.rs:2303:10:2303:17 | T | | main.rs:2304:30:2307:9 | { ... } | | main.rs:2303:10:2303:17 | T | | main.rs:2305:17:2305:21 | S3(...) | | {EXTERNAL LOCATION} | & | | main.rs:2305:17:2305:21 | S3(...) | | main.rs:2271:5:2271:22 | S3 | -| main.rs:2305:17:2305:21 | S3(...) | &T | main.rs:2271:5:2271:22 | S3 | -| main.rs:2305:17:2305:21 | S3(...) | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2305:17:2305:21 | S3(...) | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:17:2305:21 | S3(...) | TRef.T3 | main.rs:2303:10:2303:17 | T | | main.rs:2305:25:2305:28 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2305:25:2305:28 | self | &T | main.rs:2271:5:2271:22 | S3 | -| main.rs:2305:25:2305:28 | self | &T.T3 | main.rs:2303:10:2303:17 | T | +| main.rs:2305:25:2305:28 | self | TRef | main.rs:2271:5:2271:22 | S3 | +| main.rs:2305:25:2305:28 | self | TRef.T3 | main.rs:2303:10:2303:17 | T | | main.rs:2306:13:2306:21 | t.clone() | | main.rs:2303:10:2303:17 | T | | main.rs:2310:45:2312:5 | { ... } | | main.rs:2310:28:2310:43 | impl ... | | main.rs:2311:9:2311:10 | S1 | | main.rs:2268:5:2269:14 | S1 | @@ -5014,19 +5014,19 @@ inferType | main.rs:2323:17:2323:17 | x | | main.rs:2322:24:2322:31 | T | | main.rs:2326:34:2326:34 | x | | main.rs:2326:24:2326:31 | T | | main.rs:2326:78:2328:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2326:78:2328:5 | { ... } | 0(2) | main.rs:2326:44:2326:58 | impl ... | -| main.rs:2326:78:2328:5 | { ... } | 0(2).impl(T) | main.rs:2326:24:2326:31 | T | -| main.rs:2326:78:2328:5 | { ... } | 1(2) | main.rs:2326:61:2326:75 | impl ... | -| main.rs:2326:78:2328:5 | { ... } | 1(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | T0.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2326:78:2328:5 | { ... } | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2326:78:2328:5 | { ... } | T1.impl(T) | main.rs:2326:24:2326:31 | T | | main.rs:2327:9:2327:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2271:5:2271:22 | S3 | -| main.rs:2327:9:2327:30 | TupleExpr | 0(2) | main.rs:2326:44:2326:58 | impl ... | -| main.rs:2327:9:2327:30 | TupleExpr | 0(2).T3 | main.rs:2326:24:2326:31 | T | -| main.rs:2327:9:2327:30 | TupleExpr | 0(2).impl(T) | main.rs:2326:24:2326:31 | T | -| main.rs:2327:9:2327:30 | TupleExpr | 1(2) | main.rs:2271:5:2271:22 | S3 | -| main.rs:2327:9:2327:30 | TupleExpr | 1(2) | main.rs:2326:61:2326:75 | impl ... | -| main.rs:2327:9:2327:30 | TupleExpr | 1(2).T3 | main.rs:2326:24:2326:31 | T | -| main.rs:2327:9:2327:30 | TupleExpr | 1(2).impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T0 | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | T0.T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T0.impl(T) | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T1 | main.rs:2271:5:2271:22 | S3 | +| main.rs:2327:9:2327:30 | TupleExpr | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2327:9:2327:30 | TupleExpr | T1.T3 | main.rs:2326:24:2326:31 | T | +| main.rs:2327:9:2327:30 | TupleExpr | T1.impl(T) | main.rs:2326:24:2326:31 | T | | main.rs:2327:10:2327:22 | S3(...) | | main.rs:2271:5:2271:22 | S3 | | main.rs:2327:10:2327:22 | S3(...) | | main.rs:2326:44:2326:58 | impl ... | | main.rs:2327:10:2327:22 | S3(...) | T3 | main.rs:2326:24:2326:31 | T | @@ -5077,16 +5077,16 @@ inferType | main.rs:2346:33:2346:34 | S1 | | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:13:2347:13 | g | | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:17:2347:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2) | main.rs:2326:44:2326:58 | impl ... | -| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 0(2).impl(T) | main.rs:2268:5:2269:14 | S1 | -| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 1(2) | main.rs:2326:61:2326:75 | impl ... | -| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | 1(2).impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T0 | main.rs:2326:44:2326:58 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T0.impl(T) | main.rs:2268:5:2269:14 | S1 | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T1 | main.rs:2326:61:2326:75 | impl ... | +| main.rs:2347:17:2347:35 | get_a_my_trait4(...) | T1.impl(T) | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:17:2347:37 | ... .0 | | main.rs:2326:44:2326:58 | impl ... | | main.rs:2347:17:2347:37 | ... .0 | impl(T) | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:17:2347:45 | ... .get_a() | | main.rs:2268:5:2269:14 | S1 | | main.rs:2347:33:2347:34 | S1 | | main.rs:2268:5:2269:14 | S1 | | main.rs:2358:16:2358:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2358:16:2358:20 | SelfParam | &T | main.rs:2354:5:2355:13 | S | +| main.rs:2358:16:2358:20 | SelfParam | TRef | main.rs:2354:5:2355:13 | S | | main.rs:2358:31:2360:9 | { ... } | | main.rs:2354:5:2355:13 | S | | main.rs:2359:13:2359:13 | S | | main.rs:2354:5:2355:13 | S | | main.rs:2369:26:2371:9 | { ... } | | main.rs:2363:5:2366:5 | MyVec | @@ -5097,42 +5097,42 @@ inferType | main.rs:2370:27:2370:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2370:27:2370:36 | ...::new(...) | T | main.rs:2368:10:2368:10 | T | | main.rs:2373:17:2373:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2373:17:2373:25 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | -| main.rs:2373:17:2373:25 | SelfParam | &T.T | main.rs:2368:10:2368:10 | T | +| main.rs:2373:17:2373:25 | SelfParam | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2373:17:2373:25 | SelfParam | TRef.T | main.rs:2368:10:2368:10 | T | | main.rs:2373:28:2373:32 | value | | main.rs:2368:10:2368:10 | T | | main.rs:2373:38:2375:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2374:13:2374:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2374:13:2374:16 | self | &T | main.rs:2363:5:2366:5 | MyVec | -| main.rs:2374:13:2374:16 | self | &T.T | main.rs:2368:10:2368:10 | T | +| main.rs:2374:13:2374:16 | self | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2374:13:2374:16 | self | TRef.T | main.rs:2368:10:2368:10 | T | | main.rs:2374:13:2374:21 | self.data | | {EXTERNAL LOCATION} | Vec | | main.rs:2374:13:2374:21 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:2374:13:2374:21 | self.data | T | main.rs:2368:10:2368:10 | T | | main.rs:2374:13:2374:33 | ... .push(...) | | {EXTERNAL LOCATION} | () | | main.rs:2374:28:2374:32 | value | | main.rs:2368:10:2368:10 | T | | main.rs:2382:18:2382:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2382:18:2382:22 | SelfParam | &T | main.rs:2363:5:2366:5 | MyVec | -| main.rs:2382:18:2382:22 | SelfParam | &T.T | main.rs:2378:10:2378:10 | T | +| main.rs:2382:18:2382:22 | SelfParam | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2382:18:2382:22 | SelfParam | TRef.T | main.rs:2378:10:2378:10 | T | | main.rs:2382:25:2382:29 | index | | {EXTERNAL LOCATION} | usize | | main.rs:2382:56:2384:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2382:56:2384:9 | { ... } | &T | main.rs:2378:10:2378:10 | T | +| main.rs:2382:56:2384:9 | { ... } | TRef | main.rs:2378:10:2378:10 | T | | main.rs:2383:13:2383:29 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2383:13:2383:29 | &... | &T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:13:2383:29 | &... | TRef | main.rs:2378:10:2378:10 | T | | main.rs:2383:14:2383:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2383:14:2383:17 | self | &T | main.rs:2363:5:2366:5 | MyVec | -| main.rs:2383:14:2383:17 | self | &T.T | main.rs:2378:10:2378:10 | T | +| main.rs:2383:14:2383:17 | self | TRef | main.rs:2363:5:2366:5 | MyVec | +| main.rs:2383:14:2383:17 | self | TRef.T | main.rs:2378:10:2378:10 | T | | main.rs:2383:14:2383:22 | self.data | | {EXTERNAL LOCATION} | Vec | | main.rs:2383:14:2383:22 | self.data | A | {EXTERNAL LOCATION} | Global | | main.rs:2383:14:2383:22 | self.data | T | main.rs:2378:10:2378:10 | T | | main.rs:2383:14:2383:29 | ...[index] | | main.rs:2378:10:2378:10 | T | | main.rs:2383:24:2383:28 | index | | {EXTERNAL LOCATION} | usize | | main.rs:2387:22:2387:26 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2387:22:2387:26 | slice | &T | {EXTERNAL LOCATION} | [] | -| main.rs:2387:22:2387:26 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | +| main.rs:2387:22:2387:26 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2387:22:2387:26 | slice | TRef.TSlice | main.rs:2354:5:2355:13 | S | | main.rs:2387:35:2389:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2388:13:2388:13 | x | | main.rs:2354:5:2355:13 | S | | main.rs:2388:17:2388:21 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2388:17:2388:21 | slice | &T | {EXTERNAL LOCATION} | [] | -| main.rs:2388:17:2388:21 | slice | &T.[T] | main.rs:2354:5:2355:13 | S | +| main.rs:2388:17:2388:21 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2388:17:2388:21 | slice | TRef.TSlice | main.rs:2354:5:2355:13 | S | | main.rs:2388:17:2388:24 | slice[0] | | main.rs:2354:5:2355:13 | S | | main.rs:2388:17:2388:30 | ... .foo() | | main.rs:2354:5:2355:13 | S | | main.rs:2388:23:2388:23 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -5157,14 +5157,14 @@ inferType | main.rs:2401:9:2401:20 | ... .foo() | | main.rs:2354:5:2355:13 | S | | main.rs:2401:13:2401:13 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2403:13:2403:14 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2403:13:2403:14 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2403:13:2403:14 | xs | TArray | main.rs:2354:5:2355:13 | S | | main.rs:2403:21:2403:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2403:26:2403:28 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2403:26:2403:28 | [...] | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2403:26:2403:28 | [...] | TArray | main.rs:2354:5:2355:13 | S | | main.rs:2403:27:2403:27 | S | | main.rs:2354:5:2355:13 | S | | main.rs:2404:13:2404:13 | x | | main.rs:2354:5:2355:13 | S | | main.rs:2404:17:2404:18 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2404:17:2404:18 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2404:17:2404:18 | xs | TArray | main.rs:2354:5:2355:13 | S | | main.rs:2404:17:2404:21 | xs[0] | | main.rs:2354:5:2355:13 | S | | main.rs:2404:17:2404:27 | ... .foo() | | main.rs:2354:5:2355:13 | S | | main.rs:2404:20:2404:20 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -5173,20 +5173,20 @@ inferType | main.rs:2406:34:2406:34 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2408:9:2408:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | | main.rs:2408:23:2408:25 | &xs | | {EXTERNAL LOCATION} | & | -| main.rs:2408:23:2408:25 | &xs | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2408:23:2408:25 | &xs | &T.[T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2408:23:2408:25 | &xs | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2408:23:2408:25 | &xs | TRef.TArray | main.rs:2354:5:2355:13 | S | | main.rs:2408:24:2408:25 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2408:24:2408:25 | xs | [T;...] | main.rs:2354:5:2355:13 | S | +| main.rs:2408:24:2408:25 | xs | TArray | main.rs:2354:5:2355:13 | S | | main.rs:2413:16:2415:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2414:13:2414:13 | x | | {EXTERNAL LOCATION} | String | | main.rs:2414:17:2414:46 | MacroExpr | | {EXTERNAL LOCATION} | String | | main.rs:2414:25:2414:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | -| main.rs:2414:25:2414:35 | "Hello, {}" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2414:25:2414:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2414:25:2414:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | | main.rs:2414:25:2414:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | | main.rs:2414:25:2414:45 | { ... } | | {EXTERNAL LOCATION} | String | | main.rs:2414:38:2414:45 | "World!" | | {EXTERNAL LOCATION} | & | -| main.rs:2414:38:2414:45 | "World!" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2414:38:2414:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2423:19:2423:22 | SelfParam | | main.rs:2419:5:2424:5 | Self [trait MyAdd] | | main.rs:2423:25:2423:27 | rhs | | main.rs:2419:17:2419:26 | Rhs | | main.rs:2430:19:2430:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | @@ -5195,11 +5195,11 @@ inferType | main.rs:2431:13:2431:17 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2439:19:2439:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2439:25:2439:29 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2439:25:2439:29 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2439:25:2439:29 | value | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2439:46:2441:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2440:13:2440:18 | * ... | | {EXTERNAL LOCATION} | i64 | | main.rs:2440:14:2440:18 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2440:14:2440:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2440:14:2440:18 | value | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2448:19:2448:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | | main.rs:2448:25:2448:29 | value | | {EXTERNAL LOCATION} | bool | | main.rs:2448:46:2454:9 | { ... } | | {EXTERNAL LOCATION} | i64 | @@ -5244,7 +5244,7 @@ inferType | main.rs:2484:19:2484:22 | SelfParam | | main.rs:2457:5:2457:19 | S | | main.rs:2484:19:2484:22 | SelfParam | T | main.rs:2477:14:2477:14 | T | | main.rs:2484:25:2484:29 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2484:25:2484:29 | other | &T | main.rs:2477:14:2477:14 | T | +| main.rs:2484:25:2484:29 | other | TRef | main.rs:2477:14:2477:14 | T | | main.rs:2484:55:2486:9 | { ... } | | main.rs:2457:5:2457:19 | S | | main.rs:2485:13:2485:37 | S(...) | | main.rs:2457:5:2457:19 | S | | main.rs:2485:15:2485:22 | (...) | | main.rs:2477:14:2477:14 | T | @@ -5252,7 +5252,7 @@ inferType | main.rs:2485:16:2485:19 | self | T | main.rs:2477:14:2477:14 | T | | main.rs:2485:16:2485:21 | self.0 | | main.rs:2477:14:2477:14 | T | | main.rs:2485:31:2485:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2485:31:2485:35 | other | &T | main.rs:2477:14:2477:14 | T | +| main.rs:2485:31:2485:35 | other | TRef | main.rs:2477:14:2477:14 | T | | main.rs:2491:20:2491:24 | value | | main.rs:2489:18:2489:18 | T | | main.rs:2496:20:2496:24 | value | | {EXTERNAL LOCATION} | i64 | | main.rs:2496:40:2498:9 | { ... } | | {EXTERNAL LOCATION} | i64 | @@ -5314,7 +5314,7 @@ inferType | main.rs:2570:9:2570:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2570:9:2570:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:2570:18:2570:22 | &5i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2570:18:2570:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2570:18:2570:22 | &5i64 | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2570:19:2570:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2571:9:2571:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2571:9:2571:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | @@ -5335,7 +5335,7 @@ inferType | main.rs:2575:9:2575:29 | ... .my_add(...) | | main.rs:2457:5:2457:19 | S | | main.rs:2575:11:2575:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2575:24:2575:28 | &3i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2575:24:2575:28 | &3i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:2575:24:2575:28 | &3i64 | TRef | {EXTERNAL LOCATION} | i64 | | main.rs:2575:25:2575:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2577:13:2577:13 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:2577:17:2577:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | @@ -5374,7 +5374,7 @@ inferType | main.rs:2599:26:2601:9 | { ... } | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2600:13:2600:25 | MyCallable {...} | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2603:17:2603:21 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2603:17:2603:21 | SelfParam | &T | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2603:17:2603:21 | SelfParam | TRef | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2603:31:2605:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2604:13:2604:13 | 1 | | {EXTERNAL LOCATION} | i64 | @@ -5382,14 +5382,14 @@ inferType | main.rs:2611:9:2611:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2611:13:2611:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:18:2611:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2611:18:2611:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:18:2611:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2611:19:2611:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:22:2611:22 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:25:2611:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2611:28:2611:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2612:9:2612:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2612:18:2612:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2612:18:2612:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:18:2612:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2612:18:2612:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | | main.rs:2612:19:2612:19 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2612:22:2612:22 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -5401,7 +5401,7 @@ inferType | main.rs:2613:9:2613:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2613:13:2613:13 | i | | {EXTERNAL LOCATION} | i32 | | main.rs:2613:18:2613:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2613:18:2613:26 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2613:18:2613:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2613:18:2613:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | | main.rs:2613:18:2613:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | | main.rs:2613:19:2613:19 | 1 | | {EXTERNAL LOCATION} | i32 | @@ -5409,11 +5409,11 @@ inferType | main.rs:2613:25:2613:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2613:40:2613:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2615:13:2615:17 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:13:2615:17 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:13:2615:17 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:13:2615:17 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | | main.rs:2615:21:2615:31 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2615:21:2615:31 | [...] | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2615:21:2615:31 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2615:21:2615:31 | [...] | TArray | {EXTERNAL LOCATION} | u8 | | main.rs:2615:22:2615:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2615:27:2615:27 | 2 | | {EXTERNAL LOCATION} | u8 | @@ -5423,26 +5423,26 @@ inferType | main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | i32 | | main.rs:2616:13:2616:13 | u | | {EXTERNAL LOCATION} | u8 | | main.rs:2616:18:2616:22 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:18:2616:22 | vals1 | [T;...] | {EXTERNAL LOCATION} | u8 | +| main.rs:2616:18:2616:22 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2616:18:2616:22 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | | main.rs:2616:24:2616:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2618:13:2618:17 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2618:13:2618:17 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:13:2618:17 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2618:21:2618:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2618:21:2618:29 | [1u16; 3] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2618:21:2618:29 | [1u16; 3] | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2618:22:2618:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2618:28:2618:28 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2619:9:2619:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2619:13:2619:13 | u | | {EXTERNAL LOCATION} | u16 | | main.rs:2619:18:2619:22 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2619:18:2619:22 | vals2 | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2619:18:2619:22 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2619:24:2619:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2621:13:2621:17 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2621:13:2621:17 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:13:2621:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | | main.rs:2621:26:2621:26 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2621:31:2621:39 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2621:31:2621:39 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2621:31:2621:39 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:31:2621:39 | [...] | TArray | {EXTERNAL LOCATION} | u32 | | main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2621:32:2621:32 | 1 | | {EXTERNAL LOCATION} | u32 | | main.rs:2621:35:2621:35 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -5452,121 +5452,121 @@ inferType | main.rs:2622:9:2622:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2622:13:2622:13 | u | | {EXTERNAL LOCATION} | u32 | | main.rs:2622:18:2622:22 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2622:18:2622:22 | vals3 | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2622:18:2622:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | | main.rs:2622:24:2622:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2624:13:2624:17 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2624:13:2624:17 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:13:2624:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | | main.rs:2624:26:2624:26 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2624:31:2624:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2624:31:2624:36 | [1; 3] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2624:31:2624:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2624:31:2624:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | u64 | | main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2624:32:2624:32 | 1 | | {EXTERNAL LOCATION} | u64 | | main.rs:2624:35:2624:35 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2625:9:2625:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2625:13:2625:13 | u | | {EXTERNAL LOCATION} | u64 | | main.rs:2625:18:2625:22 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2625:18:2625:22 | vals4 | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2625:18:2625:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | | main.rs:2625:24:2625:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2627:17:2627:24 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2627:17:2627:24 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2627:17:2627:24 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2627:17:2627:24 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2627:17:2627:24 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2627:28:2627:48 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2627:28:2627:48 | [...] | [T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2627:28:2627:48 | [...] | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2627:28:2627:48 | [...] | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2627:28:2627:48 | [...] | TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2627:29:2627:33 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2627:29:2627:33 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2627:29:2627:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2627:36:2627:40 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2627:36:2627:40 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2627:36:2627:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2627:43:2627:47 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2627:43:2627:47 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2627:43:2627:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2628:9:2628:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2628:13:2628:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2628:13:2628:13 | s | &T | {EXTERNAL LOCATION} | & | -| main.rs:2628:13:2628:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:13:2628:13 | s | TRef | {EXTERNAL LOCATION} | & | +| main.rs:2628:13:2628:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | | main.rs:2628:18:2628:26 | &strings1 | | {EXTERNAL LOCATION} | & | -| main.rs:2628:18:2628:26 | &strings1 | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2628:18:2628:26 | &strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:18:2628:26 | &strings1 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2628:18:2628:26 | &strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2628:18:2628:26 | &strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2628:19:2628:26 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2628:19:2628:26 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2628:19:2628:26 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2628:19:2628:26 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2628:19:2628:26 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2628:28:2628:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2629:9:2629:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2629:13:2629:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2629:13:2629:13 | s | &T | {EXTERNAL LOCATION} | & | -| main.rs:2629:13:2629:13 | s | &T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:13:2629:13 | s | TRef | {EXTERNAL LOCATION} | & | +| main.rs:2629:13:2629:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | | main.rs:2629:18:2629:30 | &mut strings1 | | {EXTERNAL LOCATION} | & | -| main.rs:2629:18:2629:30 | &mut strings1 | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2629:18:2629:30 | &mut strings1 | &T.[T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2629:18:2629:30 | &mut strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2629:23:2629:30 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2629:23:2629:30 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2629:23:2629:30 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2629:23:2629:30 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2629:23:2629:30 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2629:32:2629:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2630:9:2630:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2630:13:2630:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2630:13:2630:13 | s | &T | {EXTERNAL LOCATION} | str | +| main.rs:2630:13:2630:13 | s | TRef | {EXTERNAL LOCATION} | str | | main.rs:2630:18:2630:25 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2630:18:2630:25 | strings1 | [T;...] | {EXTERNAL LOCATION} | & | -| main.rs:2630:18:2630:25 | strings1 | [T;...].&T | {EXTERNAL LOCATION} | str | +| main.rs:2630:18:2630:25 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2630:18:2630:25 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | | main.rs:2630:27:2630:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2632:13:2632:20 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2632:13:2632:20 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2632:13:2632:20 | strings2 | TArray | {EXTERNAL LOCATION} | String | | main.rs:2633:9:2637:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2633:9:2637:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2633:9:2637:9 | [...] | TArray | {EXTERNAL LOCATION} | String | | main.rs:2634:13:2634:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2634:26:2634:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2634:26:2634:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2634:26:2634:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2635:13:2635:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2635:26:2635:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2635:26:2635:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2635:26:2635:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2636:13:2636:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2636:26:2636:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2636:26:2636:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2636:26:2636:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2638:9:2638:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2638:13:2638:13 | s | | {EXTERNAL LOCATION} | String | | main.rs:2638:18:2638:25 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2638:18:2638:25 | strings2 | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2638:18:2638:25 | strings2 | TArray | {EXTERNAL LOCATION} | String | | main.rs:2638:27:2638:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2640:13:2640:20 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2640:13:2640:20 | strings3 | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2640:13:2640:20 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2640:13:2640:20 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2640:13:2640:20 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | | main.rs:2641:9:2645:9 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2641:9:2645:9 | &... | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2641:9:2645:9 | &... | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2641:9:2645:9 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2641:9:2645:9 | &... | TRef.TArray | {EXTERNAL LOCATION} | String | | main.rs:2641:10:2645:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2641:10:2645:9 | [...] | [T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2641:10:2645:9 | [...] | TArray | {EXTERNAL LOCATION} | String | | main.rs:2642:13:2642:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2642:26:2642:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2642:26:2642:30 | "foo" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2642:26:2642:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2643:13:2643:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2643:26:2643:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2643:26:2643:30 | "bar" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2643:26:2643:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2644:13:2644:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | | main.rs:2644:26:2644:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2644:26:2644:30 | "baz" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2644:26:2644:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2646:9:2646:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | Item | | main.rs:2646:13:2646:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2646:13:2646:13 | s | &T | {EXTERNAL LOCATION} | String | +| main.rs:2646:13:2646:13 | s | TRef | {EXTERNAL LOCATION} | String | | main.rs:2646:18:2646:25 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2646:18:2646:25 | strings3 | &T | {EXTERNAL LOCATION} | [;] | -| main.rs:2646:18:2646:25 | strings3 | &T.[T;...] | {EXTERNAL LOCATION} | String | +| main.rs:2646:18:2646:25 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2646:18:2646:25 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | | main.rs:2646:27:2646:28 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2648:13:2648:21 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2648:13:2648:21 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:13:2648:21 | callables | TArray | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:25:2648:81 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2648:25:2648:81 | [...] | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2648:25:2648:81 | [...] | TArray | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:26:2648:42 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:45:2648:61 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2648:64:2648:80 | ...::new(...) | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2649:9:2653:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2649:13:2649:13 | c | | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2650:12:2650:20 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2650:12:2650:20 | callables | [T;...] | main.rs:2596:5:2596:24 | MyCallable | +| main.rs:2650:12:2650:20 | callables | TArray | main.rs:2596:5:2596:24 | MyCallable | | main.rs:2651:9:2653:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2652:17:2652:22 | result | | {EXTERNAL LOCATION} | i64 | | main.rs:2652:26:2652:26 | c | | main.rs:2596:5:2596:24 | MyCallable | @@ -5583,9 +5583,9 @@ inferType | main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | i32 | | main.rs:2658:13:2658:13 | u | Idx | {EXTERNAL LOCATION} | u8 | | main.rs:2658:18:2658:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2658:18:2658:26 | [...] | [T;...] | {EXTERNAL LOCATION} | Range | -| main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:18:2658:26 | [...] | [T;...].Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2658:18:2658:26 | [...] | TArray | {EXTERNAL LOCATION} | Range | +| main.rs:2658:18:2658:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2658:18:2658:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | u8 | | main.rs:2658:19:2658:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | | main.rs:2658:19:2658:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2658:19:2658:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | @@ -5610,7 +5610,7 @@ inferType | main.rs:2662:13:2662:13 | i | | {EXTERNAL LOCATION} | Item | | main.rs:2662:18:2662:48 | &... | | {EXTERNAL LOCATION} | & | | main.rs:2662:19:2662:36 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2662:19:2662:36 | [...] | [T;...] | {EXTERNAL LOCATION} | i64 | +| main.rs:2662:19:2662:36 | [...] | TArray | {EXTERNAL LOCATION} | i64 | | main.rs:2662:20:2662:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2662:26:2662:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | | main.rs:2662:32:2662:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | @@ -5639,8 +5639,8 @@ inferType | main.rs:2676:13:2676:18 | vals4a | A | {EXTERNAL LOCATION} | Global | | main.rs:2676:13:2676:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | | main.rs:2676:32:2676:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2676:32:2676:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2676:32:2676:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:32:2676:43 | [...] | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2676:32:2676:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | | main.rs:2676:32:2676:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | | main.rs:2676:32:2676:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | @@ -5654,8 +5654,8 @@ inferType | main.rs:2677:18:2677:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | | main.rs:2677:25:2677:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2679:22:2679:33 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2679:22:2679:33 | [...] | [T;...] | {EXTERNAL LOCATION} | u16 | +| main.rs:2679:22:2679:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2679:22:2679:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | | main.rs:2679:23:2679:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | | main.rs:2679:29:2679:29 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2679:32:2679:32 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -5670,8 +5670,8 @@ inferType | main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | | main.rs:2682:21:2682:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | | main.rs:2682:31:2682:42 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2682:31:2682:42 | [...] | [T;...] | {EXTERNAL LOCATION} | u32 | +| main.rs:2682:31:2682:42 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2682:31:2682:42 | [...] | TArray | {EXTERNAL LOCATION} | u32 | | main.rs:2682:32:2682:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | | main.rs:2682:38:2682:38 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2682:41:2682:41 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -5686,24 +5686,24 @@ inferType | main.rs:2685:13:2685:17 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2685:13:2685:17 | vals6 | A | {EXTERNAL LOCATION} | Global | | main.rs:2685:13:2685:17 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2685:13:2685:17 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:13:2685:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2685:32:2685:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:32:2685:43 | [...] | [T;...] | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:32:2685:43 | [...] | TArray | {EXTERNAL LOCATION} | u64 | | main.rs:2685:32:2685:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | | main.rs:2685:32:2685:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | | main.rs:2685:32:2685:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | -| main.rs:2685:32:2685:60 | ... .collect() | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2685:32:2685:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2685:33:2685:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | | main.rs:2685:39:2685:39 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2685:42:2685:42 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2686:9:2686:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2686:13:2686:13 | u | | {EXTERNAL LOCATION} | & | -| main.rs:2686:13:2686:13 | u | &T | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:13:2686:13 | u | TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2686:18:2686:22 | vals6 | | {EXTERNAL LOCATION} | Vec | | main.rs:2686:18:2686:22 | vals6 | A | {EXTERNAL LOCATION} | Global | | main.rs:2686:18:2686:22 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2686:18:2686:22 | vals6 | T.&T | {EXTERNAL LOCATION} | u64 | +| main.rs:2686:18:2686:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | | main.rs:2686:24:2686:25 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2688:17:2688:21 | vals7 | | {EXTERNAL LOCATION} | Vec | | main.rs:2688:17:2688:21 | vals7 | A | {EXTERNAL LOCATION} | Global | @@ -5744,150 +5744,150 @@ inferType | main.rs:2699:17:2699:20 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2699:17:2699:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2699:17:2699:20 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2699:17:2699:20 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2699:17:2699:20 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2699:24:2699:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | | main.rs:2699:24:2699:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | | main.rs:2699:24:2699:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2699:24:2699:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | | main.rs:2699:24:2699:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2699:24:2699:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2699:24:2699:55 | ...::new(...) | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2699:24:2699:55 | ...::new(...) | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2700:9:2700:12 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2700:9:2700:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2700:9:2700:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2700:9:2700:12 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2700:9:2700:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2700:9:2700:12 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2700:9:2700:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2700:9:2700:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2700:9:2700:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | | main.rs:2700:9:2700:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | | main.rs:2700:9:2700:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | -| main.rs:2700:9:2700:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:9:2700:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2700:21:2700:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2700:24:2700:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2700:24:2700:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2700:24:2700:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:2700:24:2700:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2700:24:2700:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2700:33:2700:37 | "one" | | {EXTERNAL LOCATION} | & | -| main.rs:2700:33:2700:37 | "one" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2700:33:2700:37 | "one" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2701:9:2701:12 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2701:9:2701:12 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2701:9:2701:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2701:9:2701:12 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2701:9:2701:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2701:9:2701:12 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2701:9:2701:12 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2701:9:2701:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | | main.rs:2701:9:2701:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | | main.rs:2701:9:2701:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | | main.rs:2701:9:2701:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | -| main.rs:2701:9:2701:39 | map1.insert(...) | T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:9:2701:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2701:21:2701:21 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:2701:24:2701:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | | main.rs:2701:24:2701:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | main.rs:2701:24:2701:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:2701:24:2701:38 | ...::new(...) | T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2701:24:2701:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2701:33:2701:37 | "two" | | {EXTERNAL LOCATION} | & | -| main.rs:2701:33:2701:37 | "two" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2701:33:2701:37 | "two" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2702:9:2702:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2702:13:2702:15 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2702:13:2702:15 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:13:2702:15 | key | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:23 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2702:20:2702:23 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2702:20:2702:23 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2702:20:2702:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2702:20:2702:23 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2702:20:2702:23 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2702:20:2702:23 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2702:20:2702:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | | main.rs:2702:20:2702:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2702:20:2702:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | | main.rs:2702:20:2702:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2702:20:2702:30 | map1.keys() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2702:20:2702:30 | map1.keys() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2702:20:2702:30 | map1.keys() | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2702:32:2702:33 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2703:9:2703:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2703:13:2703:17 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2703:13:2703:17 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2703:13:2703:17 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2703:13:2703:17 | value | &T.T | {EXTERNAL LOCATION} | & | -| main.rs:2703:13:2703:17 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:13:2703:17 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2703:13:2703:17 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2703:13:2703:17 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2703:13:2703:17 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2703:22:2703:25 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2703:22:2703:25 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2703:22:2703:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2703:22:2703:25 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2703:22:2703:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2703:22:2703:25 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2703:22:2703:25 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:25 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2703:22:2703:34 | map1.values() | | {EXTERNAL LOCATION} | Values | | main.rs:2703:22:2703:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2703:22:2703:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | | main.rs:2703:22:2703:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2703:22:2703:34 | map1.values() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2703:22:2703:34 | map1.values() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2703:22:2703:34 | map1.values() | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2703:36:2703:37 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2704:9:2704:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2704:13:2704:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2704:13:2704:24 | TuplePat | 0(2) | {EXTERNAL LOCATION} | & | -| main.rs:2704:13:2704:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2704:13:2704:24 | TuplePat | 1(2) | {EXTERNAL LOCATION} | & | -| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T | {EXTERNAL LOCATION} | & | -| main.rs:2704:13:2704:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:13:2704:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:13:2704:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:13:2704:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2704:14:2704:16 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2704:14:2704:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:14:2704:16 | key | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2704:19:2704:23 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2704:19:2704:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2704:19:2704:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2704:19:2704:23 | value | &T.T | {EXTERNAL LOCATION} | & | -| main.rs:2704:19:2704:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:19:2704:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2704:19:2704:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2704:19:2704:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2704:19:2704:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2704:29:2704:32 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2704:29:2704:32 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2704:29:2704:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2704:29:2704:32 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2704:29:2704:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2704:29:2704:32 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2704:29:2704:32 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:32 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2704:29:2704:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | | main.rs:2704:29:2704:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | | main.rs:2704:29:2704:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | | main.rs:2704:29:2704:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2704:29:2704:39 | map1.iter() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2704:29:2704:39 | map1.iter() | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2704:29:2704:39 | map1.iter() | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2704:41:2704:42 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2705:9:2705:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2705:13:2705:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2705:13:2705:24 | TuplePat | 0(2) | {EXTERNAL LOCATION} | & | -| main.rs:2705:13:2705:24 | TuplePat | 0(2).&T | {EXTERNAL LOCATION} | i32 | -| main.rs:2705:13:2705:24 | TuplePat | 1(2) | {EXTERNAL LOCATION} | & | -| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T | {EXTERNAL LOCATION} | Box | -| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T | {EXTERNAL LOCATION} | & | -| main.rs:2705:13:2705:24 | TuplePat | 1(2).&T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:13:2705:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:13:2705:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:13:2705:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2705:14:2705:16 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2705:14:2705:16 | key | &T | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:14:2705:16 | key | TRef | {EXTERNAL LOCATION} | i32 | | main.rs:2705:19:2705:23 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2705:19:2705:23 | value | &T | {EXTERNAL LOCATION} | Box | -| main.rs:2705:19:2705:23 | value | &T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:19:2705:23 | value | &T.T | {EXTERNAL LOCATION} | & | -| main.rs:2705:19:2705:23 | value | &T.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:19:2705:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2705:19:2705:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:19:2705:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:19:2705:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2705:29:2705:33 | &map1 | | {EXTERNAL LOCATION} | & | -| main.rs:2705:29:2705:33 | &map1 | &T | {EXTERNAL LOCATION} | HashMap | -| main.rs:2705:29:2705:33 | &map1 | &T.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2705:29:2705:33 | &map1 | &T.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2705:29:2705:33 | &map1 | &T.V | {EXTERNAL LOCATION} | Box | -| main.rs:2705:29:2705:33 | &map1 | &T.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2705:29:2705:33 | &map1 | &T.V.T | {EXTERNAL LOCATION} | & | -| main.rs:2705:29:2705:33 | &map1 | &T.V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:29:2705:33 | &map1 | TRef | {EXTERNAL LOCATION} | HashMap | +| main.rs:2705:29:2705:33 | &map1 | TRef.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2705:29:2705:33 | &map1 | TRef.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2705:29:2705:33 | &map1 | TRef.V | {EXTERNAL LOCATION} | Box | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.T | {EXTERNAL LOCATION} | & | +| main.rs:2705:29:2705:33 | &map1 | TRef.V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2705:30:2705:33 | map1 | | {EXTERNAL LOCATION} | HashMap | | main.rs:2705:30:2705:33 | map1 | K | {EXTERNAL LOCATION} | i32 | | main.rs:2705:30:2705:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | | main.rs:2705:30:2705:33 | map1 | V | {EXTERNAL LOCATION} | Box | | main.rs:2705:30:2705:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | | main.rs:2705:30:2705:33 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2705:30:2705:33 | map1 | V.T.&T | {EXTERNAL LOCATION} | str | +| main.rs:2705:30:2705:33 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | | main.rs:2705:35:2705:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2709:17:2709:17 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2709:26:2709:26 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -6000,60 +6000,60 @@ inferType | main.rs:2771:19:2771:37 | ...::default(...) | | main.rs:2719:5:2719:20 | S1 | | main.rs:2771:19:2771:37 | ...::default(...) | T | main.rs:2721:5:2722:14 | S2 | | main.rs:2780:35:2782:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2780:35:2782:9 | { ... } | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2780:35:2782:9 | { ... } | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2780:35:2782:9 | { ... } | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2780:35:2782:9 | { ... } | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:13:2781:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2781:13:2781:26 | TupleExpr | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2781:13:2781:26 | TupleExpr | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2781:13:2781:26 | TupleExpr | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:14:2781:18 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | | main.rs:2781:21:2781:25 | S1 {...} | | main.rs:2776:5:2777:16 | S1 | | main.rs:2783:16:2783:19 | SelfParam | | main.rs:2776:5:2777:16 | S1 | | main.rs:2783:22:2783:23 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2786:16:2820:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2787:13:2787:13 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2787:13:2787:13 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2787:13:2787:13 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:13:2787:13 | a | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:13:2787:13 | a | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2787:17:2787:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2787:17:2787:30 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2787:17:2787:30 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2787:17:2787:30 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2788:17:2788:17 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2788:17:2788:17 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2788:17:2788:17 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:17:2788:17 | b | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2788:21:2788:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2788:21:2788:34 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2788:21:2788:34 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2788:21:2788:34 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:13:2789:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2789:13:2789:18 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2789:13:2789:18 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:13:2789:18 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:14:2789:14 | c | | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:17:2789:17 | d | | main.rs:2776:5:2777:16 | S1 | | main.rs:2789:22:2789:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2789:22:2789:35 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2789:22:2789:35 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2789:22:2789:35 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:13:2790:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2790:13:2790:22 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2790:13:2790:22 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:13:2790:22 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:18:2790:18 | e | | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:21:2790:21 | f | | main.rs:2776:5:2777:16 | S1 | | main.rs:2790:26:2790:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2790:26:2790:39 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2790:26:2790:39 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2790:26:2790:39 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:13:2791:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2791:13:2791:26 | TuplePat | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2791:13:2791:26 | TuplePat | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:13:2791:26 | TuplePat | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:18:2791:18 | g | | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:25:2791:25 | h | | main.rs:2776:5:2777:16 | S1 | | main.rs:2791:30:2791:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2791:30:2791:43 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2791:30:2791:43 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2791:30:2791:43 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2793:9:2793:9 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2793:9:2793:9 | a | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2793:9:2793:9 | a | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2793:9:2793:9 | a | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2793:9:2793:11 | a.0 | | main.rs:2776:5:2777:16 | S1 | | main.rs:2793:9:2793:17 | ... .foo() | | {EXTERNAL LOCATION} | () | | main.rs:2794:9:2794:9 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2794:9:2794:9 | b | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2794:9:2794:9 | b | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:9 | b | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2794:9:2794:9 | b | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2794:9:2794:11 | b.1 | | main.rs:2776:5:2777:16 | S1 | | main.rs:2794:9:2794:17 | ... .foo() | | {EXTERNAL LOCATION} | () | | main.rs:2795:9:2795:9 | c | | main.rs:2776:5:2777:16 | S1 | @@ -6073,75 +6073,75 @@ inferType | main.rs:2806:13:2806:13 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2806:17:2806:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | | main.rs:2807:13:2807:16 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2807:13:2807:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2807:13:2807:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2807:13:2807:16 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:13:2807:16 | pair | T1 | {EXTERNAL LOCATION} | bool | | main.rs:2807:20:2807:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2807:20:2807:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2807:20:2807:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2807:20:2807:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2807:20:2807:25 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | | main.rs:2807:21:2807:21 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2807:24:2807:24 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2808:13:2808:13 | i | | {EXTERNAL LOCATION} | i64 | | main.rs:2808:22:2808:25 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2808:22:2808:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2808:22:2808:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2808:22:2808:25 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2808:22:2808:25 | pair | T1 | {EXTERNAL LOCATION} | bool | | main.rs:2808:22:2808:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | | main.rs:2809:13:2809:13 | j | | {EXTERNAL LOCATION} | bool | | main.rs:2809:23:2809:26 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2809:23:2809:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2809:23:2809:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2809:23:2809:26 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2809:23:2809:26 | pair | T1 | {EXTERNAL LOCATION} | bool | | main.rs:2809:23:2809:28 | pair.1 | | {EXTERNAL LOCATION} | bool | | main.rs:2811:13:2811:16 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2811:13:2811:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2811:13:2811:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:13:2811:16 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:13:2811:16 | pair | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2811:20:2811:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2811:20:2811:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | main.rs:2811:20:2811:32 | ... .into() | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2811:20:2811:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2811:20:2811:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2811:20:2811:32 | ... .into() | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2811:21:2811:21 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2811:24:2811:24 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:2812:9:2815:9 | match pair { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2812:15:2812:18 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2812:15:2812:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2812:15:2812:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:15:2812:18 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2812:15:2812:18 | pair | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2813:13:2813:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2813:13:2813:18 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2813:13:2813:18 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2813:13:2813:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2813:14:2813:14 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2813:17:2813:17 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2813:23:2813:42 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2813:30:2813:41 | "unexpected" | | {EXTERNAL LOCATION} | & | -| main.rs:2813:30:2813:41 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2813:30:2813:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2813:30:2813:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2813:30:2813:41 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2814:13:2814:13 | _ | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2814:13:2814:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2814:13:2814:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:13:2814:13 | _ | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2814:13:2814:13 | _ | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2814:18:2814:35 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:2814:25:2814:34 | "expected" | | {EXTERNAL LOCATION} | & | -| main.rs:2814:25:2814:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2814:25:2814:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2814:25:2814:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2814:25:2814:34 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2816:13:2816:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:2816:17:2816:20 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2816:17:2816:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2816:17:2816:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2816:17:2816:20 | pair | T1 | {EXTERNAL LOCATION} | i32 | | main.rs:2816:17:2816:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2818:13:2818:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2818:13:2818:13 | y | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2818:13:2818:13 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2818:13:2818:13 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:13:2818:13 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2818:13:2818:13 | y | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:13:2818:13 | y | TRef.T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2818:17:2818:31 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2818:17:2818:31 | &... | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2818:17:2818:31 | &... | &T.0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2818:17:2818:31 | &... | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2818:17:2818:31 | &... | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:17:2818:31 | &... | TRef.T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2818:18:2818:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2818:18:2818:31 | ...::get_pair(...) | 0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2818:18:2818:31 | ...::get_pair(...) | 1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2818:18:2818:31 | ...::get_pair(...) | T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2819:9:2819:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2819:9:2819:9 | y | &T | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2819:9:2819:9 | y | &T.0(2) | main.rs:2776:5:2777:16 | S1 | -| main.rs:2819:9:2819:9 | y | &T.1(2) | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2819:9:2819:9 | y | TRef.T0 | main.rs:2776:5:2777:16 | S1 | +| main.rs:2819:9:2819:9 | y | TRef.T1 | main.rs:2776:5:2777:16 | S1 | | main.rs:2819:9:2819:11 | y.0 | | main.rs:2776:5:2777:16 | S1 | | main.rs:2819:9:2819:17 | ... .foo() | | {EXTERNAL LOCATION} | () | | main.rs:2825:27:2847:5 | { ... } | | {EXTERNAL LOCATION} | () | @@ -6162,7 +6162,7 @@ inferType | main.rs:2830:17:2830:19 | 100 | | {EXTERNAL LOCATION} | i32 | | main.rs:2830:24:2832:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2831:26:2831:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2831:26:2831:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2831:26:2831:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2831:26:2831:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2831:26:2831:36 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2833:13:2833:17 | box ... | | {EXTERNAL LOCATION} | Box | @@ -6170,7 +6170,7 @@ inferType | main.rs:2833:13:2833:17 | box ... | T | {EXTERNAL LOCATION} | i32 | | main.rs:2833:22:2836:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2835:26:2835:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2835:26:2835:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2835:26:2835:51 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2840:13:2840:22 | nested_box | | {EXTERNAL LOCATION} | Box | @@ -6200,13 +6200,13 @@ inferType | main.rs:2842:13:2842:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2842:26:2845:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2844:26:2844:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2844:26:2844:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2844:26:2844:59 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2856:36:2858:9 | { ... } | | main.rs:2853:5:2853:22 | Path | | main.rs:2857:13:2857:19 | Path {...} | | main.rs:2853:5:2853:22 | Path | | main.rs:2860:29:2860:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2860:29:2860:33 | SelfParam | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2860:29:2860:33 | SelfParam | TRef | main.rs:2853:5:2853:22 | Path | | main.rs:2860:59:2862:9 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:2860:59:2862:9 | { ... } | E | {EXTERNAL LOCATION} | () | | main.rs:2860:59:2862:9 | { ... } | T | main.rs:2865:5:2865:25 | PathBuf | @@ -6217,12 +6217,12 @@ inferType | main.rs:2868:39:2870:9 | { ... } | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2869:13:2869:22 | PathBuf {...} | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2878:18:2878:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2878:18:2878:22 | SelfParam | &T | main.rs:2865:5:2865:25 | PathBuf | +| main.rs:2878:18:2878:22 | SelfParam | TRef | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2878:34:2882:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2878:34:2882:9 | { ... } | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2878:34:2882:9 | { ... } | TRef | main.rs:2853:5:2853:22 | Path | | main.rs:2880:33:2880:43 | ...::new(...) | | main.rs:2853:5:2853:22 | Path | | main.rs:2881:13:2881:17 | &path | | {EXTERNAL LOCATION} | & | -| main.rs:2881:13:2881:17 | &path | &T | main.rs:2853:5:2853:22 | Path | +| main.rs:2881:13:2881:17 | &path | TRef | main.rs:2853:5:2853:22 | Path | | main.rs:2881:14:2881:17 | path | | main.rs:2853:5:2853:22 | Path | | main.rs:2885:16:2893:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2886:13:2886:17 | path1 | | main.rs:2853:5:2853:22 | Path | @@ -6243,30 +6243,30 @@ inferType | main.rs:2890:24:2890:37 | ...::new(...) | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2891:24:2891:31 | pathbuf1 | | main.rs:2865:5:2865:25 | PathBuf | | main.rs:2898:14:2898:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2898:14:2898:18 | SelfParam | &T | main.rs:2897:5:2899:5 | Self [trait MyTrait] | +| main.rs:2898:14:2898:18 | SelfParam | TRef | main.rs:2897:5:2899:5 | Self [trait MyTrait] | | main.rs:2905:14:2905:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2905:14:2905:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2905:14:2905:18 | SelfParam | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2905:14:2905:18 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2905:14:2905:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | | main.rs:2905:28:2907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2906:13:2906:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2906:13:2906:16 | self | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2906:13:2906:16 | self | &T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2906:13:2906:16 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2906:13:2906:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | | main.rs:2906:13:2906:18 | self.0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2911:14:2911:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2911:14:2911:18 | SelfParam | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2911:14:2911:18 | SelfParam | &T.T | main.rs:2901:5:2902:19 | S | -| main.rs:2911:14:2911:18 | SelfParam | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2911:14:2911:18 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | TRef.T | main.rs:2901:5:2902:19 | S | +| main.rs:2911:14:2911:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2911:28:2913:9 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2912:13:2912:16 | self | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2912:13:2912:16 | self | &T.T | main.rs:2901:5:2902:19 | S | -| main.rs:2912:13:2912:16 | self | &T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2912:13:2912:16 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | TRef.T | main.rs:2901:5:2902:19 | S | +| main.rs:2912:13:2912:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:18 | self.0 | | main.rs:2901:5:2902:19 | S | | main.rs:2912:13:2912:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | | main.rs:2912:13:2912:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | | main.rs:2917:15:2917:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2917:15:2917:19 | SelfParam | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2917:15:2917:19 | SelfParam | &T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2917:15:2917:19 | SelfParam | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2917:15:2917:19 | SelfParam | TRef.T | main.rs:2916:10:2916:16 | T | | main.rs:2917:33:2919:9 | { ... } | | main.rs:2901:5:2902:19 | S | | main.rs:2917:33:2919:9 | { ... } | T | main.rs:2901:5:2902:19 | S | | main.rs:2917:33:2919:9 | { ... } | T.T | main.rs:2916:10:2916:16 | T | @@ -6276,8 +6276,8 @@ inferType | main.rs:2918:15:2918:23 | S(...) | | main.rs:2901:5:2902:19 | S | | main.rs:2918:15:2918:23 | S(...) | T | main.rs:2916:10:2916:16 | T | | main.rs:2918:17:2918:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2918:17:2918:20 | self | &T | main.rs:2901:5:2902:19 | S | -| main.rs:2918:17:2918:20 | self | &T.T | main.rs:2916:10:2916:16 | T | +| main.rs:2918:17:2918:20 | self | TRef | main.rs:2901:5:2902:19 | S | +| main.rs:2918:17:2918:20 | self | TRef.T | main.rs:2916:10:2916:16 | T | | main.rs:2918:17:2918:22 | self.0 | | main.rs:2916:10:2916:16 | T | | main.rs:2922:14:2922:14 | b | | {EXTERNAL LOCATION} | bool | | main.rs:2922:48:2939:5 | { ... } | | {EXTERNAL LOCATION} | Box | @@ -6373,7 +6373,7 @@ inferType | main.rs:2963:20:2970:5 | { ... } | | {EXTERNAL LOCATION} | i32 | | main.rs:2966:26:2966:27 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2968:18:2968:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2968:18:2968:26 | "b: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2968:18:2968:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2968:18:2968:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2968:18:2968:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2969:9:2969:9 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -6388,7 +6388,7 @@ inferType | main.rs:2979:21:2981:13 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2980:24:2980:25 | 12 | | {EXTERNAL LOCATION} | i32 | | main.rs:2983:18:2983:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2983:18:2983:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2983:18:2983:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:2983:18:2983:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:2983:18:2983:29 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2983:29:2983:29 | a | | {EXTERNAL LOCATION} | () | @@ -6587,7 +6587,7 @@ inferType | pattern_matching.rs:16:13:16:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:16:20:16:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:17:18:17:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:18:17:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | @@ -6601,7 +6601,7 @@ inferType | pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:22:22:22:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:22:22:29 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | @@ -6615,7 +6615,7 @@ inferType | pattern_matching.rs:27:9:27:12 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:27:16:27:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:28:14:28:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:14:28:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | @@ -6624,34 +6624,34 @@ inferType | pattern_matching.rs:29:16:29:20 | value | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:29:16:29:21 | TryExpr | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:30:14:30:21 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:14:30:21 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:9:32:14 | value2 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:32:9:32:14 | value2 | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:32:9:32:14 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:9:32:14 | value2 | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:9:32:14 | value2 | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:18:32:26 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:32:18:32:26 | &... | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:32:18:32:26 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:18:32:26 | &... | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:18:32:26 | &... | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:19:32:26 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:32:19:32:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:32:24:32:25 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:5:36:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:33:12:33:22 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:33:12:33:22 | &... | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:33:12:33:22 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:12:33:22 | &... | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:12:33:22 | &... | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:13:33:22 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:33:13:33:22 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:18:33:21 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:26:33:31 | value2 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:33:26:33:31 | value2 | &T | {EXTERNAL LOCATION} | Option | -| pattern_matching.rs:33:26:33:31 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:26:33:31 | value2 | TRef | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:26:33:31 | value2 | TRef.T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:33:33:36:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:34:13:34:16 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:34:20:34:23 | mesg | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:35:18:35:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:18:35:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | @@ -6659,19 +6659,19 @@ inferType | pattern_matching.rs:38:18:38:19 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:5:42:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:39:16:39:19 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:39:16:39:19 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:16:39:19 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:23:39:28 | value3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:39:30:42:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:40:13:40:16 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:40:13:40:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:40:13:40:16 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:40:20:40:23 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:40:20:40:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:40:20:40:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:41:18:41:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:41:18:41:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:41:20:41:23 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:41:20:41:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:9:44:14 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:44:9:44:14 | value4 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:44:18:44:25 | Some(...) | | {EXTERNAL LOCATION} | Option | @@ -6681,27 +6681,27 @@ inferType | pattern_matching.rs:45:12:45:25 | Some(...) | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:12:45:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:21:45:24 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:45:21:45:24 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:21:45:24 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:29:45:34 | value4 | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:45:29:45:34 | value4 | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:45:36:48:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:46:13:46:16 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:46:13:46:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:46:13:46:16 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:46:20:46:23 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:46:20:46:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:46:20:46:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:47:18:47:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:47:18:47:25 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:47:20:47:23 | mesg | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:47:20:47:23 | mesg | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:50:13:50:18 | value5 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:50:13:50:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:50:13:50:18 | value5 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:50:22:50:23 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:51:9:51:9 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:51:9:51:9 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:9:51:9 | x | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:51:13:51:18 | value5 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:51:13:51:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:13:51:18 | value5 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:53:9:53:24 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:53:9:53:24 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:53:9:53:24 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | @@ -6786,58 +6786,58 @@ inferType | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:9:87:22 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:88:9:88:13 | false | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:90:21:90:22 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:91:21:91:28 | "string" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:91:21:91:28 | "string" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:91:21:91:28 | "string" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:95:5:109:5 | match my_nested_enum { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:95:11:95:24 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:95:11:95:24 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:97:13:97:18 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:100:25:100:25 | y | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:100:25:100:25 | y | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:102:14:107:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:104:21:104:21 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:105:17:105:17 | c | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:105:17:105:17 | c | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:105:17:105:17 | c | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:105:21:105:21 | y | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:105:21:105:21 | y | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:105:21:105:21 | y | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:106:13:106:14 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:108:9:108:9 | _ | | pattern_matching.rs:8:1:11:1 | MyEnum | | pattern_matching.rs:108:9:108:9 | _ | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | | pattern_matching.rs:108:9:108:9 | _ | T1.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:108:9:108:9 | _ | T1.T2 | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:108:9:108:9 | _ | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2.TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:108:9:108:9 | _ | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:108:14:108:15 | TupleExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:111:9:111:12 | opt1 | | {EXTERNAL LOCATION} | Option | @@ -6894,7 +6894,7 @@ inferType | pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:175:22:175:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:22:175:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | @@ -6903,7 +6903,7 @@ inferType | pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:179:22:179:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:22:179:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | @@ -6912,7 +6912,7 @@ inferType | pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:183:22:183:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:22:183:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | @@ -6927,34 +6927,34 @@ inferType | pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:192:22:192:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:22:192:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:194:14:194:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:197:9:197:18 | string_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:197:9:197:18 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:197:9:197:18 | string_val | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:197:22:197:28 | "hello" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:197:22:197:28 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:197:22:197:28 | "hello" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:198:5:204:5 | match string_val { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:198:11:198:20 | string_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:198:11:198:20 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:198:11:198:20 | string_val | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:199:9:199:15 | "hello" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:199:9:199:15 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:199:9:199:15 | "hello" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:199:20:202:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:200:17:200:27 | hello_match | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:200:17:200:27 | hello_match | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:200:17:200:27 | hello_match | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:200:31:200:40 | string_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:200:31:200:40 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:200:31:200:40 | string_val | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:201:22:201:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:201:22:201:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:201:44:201:54 | hello_match | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:44:201:54 | hello_match | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:203:9:203:9 | _ | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:203:9:203:9 | _ | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:203:9:203:9 | _ | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:203:14:203:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:206:9:206:16 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:206:20:206:23 | true | | {EXTERNAL LOCATION} | bool | @@ -6965,7 +6965,7 @@ inferType | pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:210:22:210:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:22:210:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | @@ -6974,7 +6974,7 @@ inferType | pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:214:22:214:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:22:214:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | @@ -6988,31 +6988,31 @@ inferType | pattern_matching.rs:225:17:225:27 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:225:31:225:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:226:22:226:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:22:226:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:5:236:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:231:11:231:16 | &value | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:231:11:231:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:231:11:231:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:232:13:232:13 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:232:13:232:13 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:232:13:232:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:232:13:232:13 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:232:13:232:13 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:232:18:235:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:233:17:233:25 | ref_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:233:17:233:25 | ref_bound | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:233:17:233:25 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:233:17:233:25 | ref_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:233:29:233:29 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:233:29:233:29 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:233:29:233:29 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:233:29:233:29 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:233:29:233:29 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:234:22:234:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:234:22:234:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:234:52:234:60 | ref_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:234:52:234:60 | ref_bound | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:234:52:234:60 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:234:52:234:60 | ref_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:240:5:246:5 | match mutable_value { ... } | | {EXTERNAL LOCATION} | () | @@ -7025,7 +7025,7 @@ inferType | pattern_matching.rs:243:13:243:18 | ... += ... | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:243:18:243:18 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:244:22:244:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:22:244:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | @@ -7045,7 +7045,7 @@ inferType | pattern_matching.rs:252:17:252:24 | at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:252:28:252:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:253:22:253:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:22:253:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | @@ -7058,7 +7058,7 @@ inferType | pattern_matching.rs:256:17:256:30 | range_at_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:256:34:256:34 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:257:22:257:63 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:22:257:63 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | @@ -7069,7 +7069,7 @@ inferType | pattern_matching.rs:260:17:260:26 | some_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:260:30:260:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:261:22:261:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:22:261:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | @@ -7077,35 +7077,35 @@ inferType | pattern_matching.rs:263:9:263:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:263:27:265:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:264:22:264:33 | "None value\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:264:22:264:33 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:264:22:264:33 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:5:276:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:17:271:17 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:271:17:271:17 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:17:271:17 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:271:17:271:17 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:271:22:275:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:272:17:272:29 | ref_mut_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:272:33:272:33 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:272:33:272:33 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:272:33:272:33 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:33:272:33 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:272:33:272:33 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:13:273:32 | ... += ... | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:273:14:273:27 | * ... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:273:14:273:27 | * ... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:14:273:27 | * ... | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:15:273:27 | ref_mut_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:274:22:274:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:274:22:274:38 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:279:28:290:1 | { ... } | | {EXTERNAL LOCATION} | () | @@ -7116,7 +7116,7 @@ inferType | pattern_matching.rs:283:9:283:10 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:283:15:283:40 | MacroExpr | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:283:24:283:39 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:283:24:283:39 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | @@ -7124,7 +7124,7 @@ inferType | pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:287:22:287:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:22:287:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | @@ -7140,7 +7140,7 @@ inferType | pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:299:22:299:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:22:299:59 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | @@ -7150,7 +7150,7 @@ inferType | pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:303:22:303:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:22:303:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | @@ -7160,7 +7160,7 @@ inferType | pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:307:22:307:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:22:307:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | @@ -7177,7 +7177,7 @@ inferType | pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:316:22:316:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:22:316:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | @@ -7188,7 +7188,7 @@ inferType | pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | | pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:320:22:320:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:22:320:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | @@ -7201,70 +7201,70 @@ inferType | pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:5:340:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:331:11:331:16 | &value | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:331:11:331:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:331:11:331:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:9:332:11 | &42 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:332:9:332:11 | &42 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:332:9:332:11 | &42 | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:10:332:11 | 42 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:332:16:335:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:334:22:334:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:22:334:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:9:336:10 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:336:9:336:10 | &... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:336:9:336:10 | &... | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:10:336:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:336:15:339:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:337:17:337:27 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:337:31:337:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:338:22:338:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:22:338:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:5:347:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:342:11:342:28 | &mut mutable_value | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:342:11:342:28 | &mut mutable_value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:343:9:343:18 | &mut ... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:343:9:343:18 | &mut ... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:9:343:18 | &mut ... | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:343:18:343:18 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:343:18:343:18 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:18:343:18 | x | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:343:23:346:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:344:17:344:29 | mut_ref_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:344:17:344:29 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:344:33:344:33 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:344:33:344:33 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:344:33:344:33 | x | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:345:22:345:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:345:22:345:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:345:49:345:61 | mut_ref_bound | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:5:354:5 | match ... { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:349:11:349:16 | &value | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:349:11:349:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:349:11:349:16 | &value | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:350:13:350:13 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:350:13:350:13 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:350:13:350:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:350:13:350:13 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:350:13:350:13 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:350:18:353:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:351:17:351:27 | ref_pattern | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:351:17:351:27 | ref_pattern | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:351:17:351:27 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:351:17:351:27 | ref_pattern | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:351:31:351:31 | x | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:351:31:351:31 | x | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:351:31:351:31 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:351:31:351:31 | x | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:351:31:351:31 | x | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:352:22:352:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:352:22:352:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:352:47:352:57 | ref_pattern | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:352:47:352:57 | ref_pattern | &T | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:352:47:352:57 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:352:47:352:57 | ref_pattern | TRef | {EXTERNAL LOCATION} | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | TRef.TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:357:26:398:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -7279,7 +7279,7 @@ inferType | pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:364:22:364:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:22:364:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | @@ -7292,7 +7292,7 @@ inferType | pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:369:22:369:80 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:22:369:80 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | @@ -7303,7 +7303,7 @@ inferType | pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:373:22:373:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:22:373:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | @@ -7316,7 +7316,7 @@ inferType | pattern_matching.rs:377:17:377:25 | general_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:377:29:377:29 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:378:22:378:68 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:22:378:68 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | @@ -7336,7 +7336,7 @@ inferType | pattern_matching.rs:393:17:393:27 | rect_height | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:393:31:393:31 | h | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:394:22:394:64 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:22:394:64 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | @@ -7362,7 +7362,7 @@ inferType | pattern_matching.rs:406:17:406:25 | red_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:406:29:406:33 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:407:22:407:48 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:22:407:48 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | @@ -7378,7 +7378,7 @@ inferType | pattern_matching.rs:412:17:412:30 | blue_component | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:412:34:412:34 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:414:17:415:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:414:17:415:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | @@ -7394,7 +7394,7 @@ inferType | pattern_matching.rs:423:17:423:29 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:423:33:423:37 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:424:22:424:57 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:22:424:57 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | @@ -7405,7 +7405,7 @@ inferType | pattern_matching.rs:427:17:427:23 | any_red | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:427:27:427:27 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:428:22:428:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:22:428:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | @@ -7420,39 +7420,39 @@ inferType | pattern_matching.rs:437:17:437:29 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:437:33:437:33 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:438:22:438:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:22:438:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:443:25:498:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:444:9:444:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:444:9:444:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:9:444:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:9:444:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:444:9:444:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:9:444:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:444:9:444:13 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:444:17:444:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:444:17:444:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:444:17:444:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:447:5:458:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:447:11:447:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:447:11:447:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:447:11:447:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:447:11:447:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:447:11:447:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:447:11:447:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:447:11:447:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:9:448:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:448:9:448:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:448:9:448:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:448:9:448:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:10:448:10 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i64 | @@ -7460,33 +7460,33 @@ inferType | pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:448:24:451:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:449:17:449:27 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:17:449:27 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:449:17:449:27 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:449:31:449:35 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:449:31:449:35 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:449:31:449:35 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:449:31:449:35 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:449:31:449:35 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:449:31:449:35 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:449:31:449:35 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:450:22:450:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:22:450:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:450:43:450:53 | exact_tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:450:43:450:53 | exact_tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:450:43:450:53 | exact_tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:9:452:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:452:9:452:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:452:9:452:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:452:9:452:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:452:10:452:10 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:452:13:452:13 | b | | {EXTERNAL LOCATION} | i64 | @@ -7504,7 +7504,7 @@ inferType | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:455:30:455:30 | c | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:456:22:456:79 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:22:456:79 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:456:45:456:54 | first_elem | | {EXTERNAL LOCATION} | i32 | @@ -7514,20 +7514,20 @@ inferType | pattern_matching.rs:456:70:456:79 | third_elem | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:461:5:466:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:461:11:461:15 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:461:11:461:15 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:461:11:461:15 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:461:11:461:15 | tuple | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:461:11:461:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:461:11:461:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:461:11:461:15 | tuple | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:462:9:462:19 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:462:9:462:19 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:462:9:462:19 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:462:9:462:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:462:24:465:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:464:22:464:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:464:22:464:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:469:9:469:12 | unit | | {EXTERNAL LOCATION} | () | @@ -7539,81 +7539,81 @@ inferType | pattern_matching.rs:472:17:472:26 | unit_value | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:472:30:472:33 | unit | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:473:22:473:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:22:473:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:473:42:473:51 | unit_value | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:478:9:478:14 | single | | {EXTERNAL LOCATION} | (T_1) | -| pattern_matching.rs:478:9:478:14 | single | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:478:9:478:14 | single | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:18:478:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_1) | -| pattern_matching.rs:478:18:478:25 | TupleExpr | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:478:18:478:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:479:5:484:5 | match single { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:479:11:479:16 | single | | {EXTERNAL LOCATION} | (T_1) | -| pattern_matching.rs:479:11:479:16 | single | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:479:11:479:16 | single | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:9:480:12 | TuplePat | | {EXTERNAL LOCATION} | (T_1) | -| pattern_matching.rs:480:9:480:12 | TuplePat | 0(1) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:480:9:480:12 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:10:480:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:480:17:483:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:481:17:481:27 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:481:31:481:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:482:22:482:60 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:22:482:60 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:482:50:482:60 | single_elem | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:9:487:18 | ref_tuple1 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:9:487:18 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:9:487:18 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:35:487:41 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:487:35:487:41 | &... | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:487:35:487:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:35:487:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:35:487:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:487:35:487:41 | &... | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:35:487:41 | &... | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:36:487:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:487:36:487:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:487:36:487:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:36:487:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:487:36:487:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:37:487:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:487:40:487:40 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:5:491:5 | if ... {...} | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:488:12:488:17 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:488:21:488:30 | ref_tuple1 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:488:21:488:30 | ref_tuple1 | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:21:488:30 | ref_tuple1 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:488:32:491:5 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:489:18:489:24 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:489:18:489:24 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:489:18:489:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:489:18:489:27 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:490:18:490:24 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:490:18:490:24 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:490:18:490:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:490:18:490:27 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:494:9:494:18 | ref_tuple2 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:9:494:18 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:9:494:18 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:35:494:41 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:494:35:494:41 | &... | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:494:35:494:41 | &... | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:35:494:41 | &... | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:35:494:41 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:494:35:494:41 | &... | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:35:494:41 | &... | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:36:494:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:494:36:494:41 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:494:36:494:41 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:36:494:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:36:494:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:37:494:37 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:494:40:494:40 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:495:9:495:14 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | | pattern_matching.rs:495:18:495:27 | ref_tuple2 | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:495:18:495:27 | ref_tuple2 | &T.1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef | {EXTERNAL LOCATION} | (T_2) | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:495:18:495:27 | ref_tuple2 | TRef.T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:496:14:496:20 | "n: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:496:14:496:20 | "n: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:496:14:496:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:496:14:496:23 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:497:14:497:20 | "m: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:497:14:497:20 | "m: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:497:14:497:23 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:497:14:497:23 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:500:33:520:1 | { ... } | | {EXTERNAL LOCATION} | () | @@ -7627,25 +7627,25 @@ inferType | pattern_matching.rs:506:17:506:27 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:506:31:506:31 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:507:22:507:48 | "Parenthesized pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:507:22:507:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:22:507:61 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:507:51:507:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:9:512:13 | tuple | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:512:9:512:13 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:9:512:13 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:9:512:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:9:512:13 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:17:512:28 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:512:17:512:28 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:512:17:512:28 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:17:512:28 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:512:17:512:28 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:18:512:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:512:24:512:27 | 2i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:513:5:519:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:513:11:513:15 | tuple | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:513:11:513:15 | tuple | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:513:11:513:15 | tuple | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:11:513:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:11:513:15 | tuple | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:9:514:16 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:514:9:514:16 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:514:9:514:16 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:16 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:16 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:10:514:10 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:13:514:15 | (...) | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:514:14:514:14 | y | | {EXTERNAL LOCATION} | i32 | @@ -7655,22 +7655,22 @@ inferType | pattern_matching.rs:516:17:516:23 | paren_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:516:27:516:27 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:517:22:517:53 | "Parenthesized in tuple: {}, {... | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:517:22:517:71 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:22:517:71 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:517:56:517:62 | paren_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:517:65:517:71 | paren_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:522:25:563:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:523:9:523:13 | slice | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:523:9:523:13 | slice | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:523:9:523:13 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:9:523:13 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:523:9:523:13 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:25:523:40 | &... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:523:25:523:40 | &... | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:523:25:523:40 | &... | &T | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:523:25:523:40 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:523:25:523:40 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:523:25:523:40 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| pattern_matching.rs:523:25:523:40 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:25:523:40 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:26:523:40 | [...] | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:523:26:523:40 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:523:26:523:40 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:27:523:27 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:30:523:30 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:523:33:523:33 | 3 | | {EXTERNAL LOCATION} | i32 | @@ -7678,64 +7678,64 @@ inferType | pattern_matching.rs:523:39:523:39 | 5 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:526:5:551:5 | match slice { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:526:11:526:15 | slice | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:526:11:526:15 | slice | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:526:11:526:15 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:526:11:526:15 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:526:11:526:15 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:527:9:527:10 | SlicePat | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:527:9:527:10 | SlicePat | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:527:9:527:10 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:527:9:527:10 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:527:9:527:10 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:527:15:530:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:528:17:528:27 | empty_slice | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:528:17:528:27 | empty_slice | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:528:17:528:27 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:528:17:528:27 | empty_slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:528:17:528:27 | empty_slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:528:31:528:35 | slice | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:528:31:528:35 | slice | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:528:31:528:35 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:528:31:528:35 | slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:528:31:528:35 | slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:529:22:529:40 | "Empty slice: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:529:22:529:53 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:529:22:529:53 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:529:43:529:53 | empty_slice | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:529:43:529:53 | empty_slice | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:529:43:529:53 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:529:43:529:53 | empty_slice | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:529:43:529:53 | empty_slice | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:531:9:531:11 | SlicePat | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:531:9:531:11 | SlicePat | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:531:9:531:11 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:531:9:531:11 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:531:9:531:11 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:531:16:534:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:533:22:533:41 | "Single element: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:533:22:533:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:533:22:533:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:535:9:535:23 | SlicePat | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:535:9:535:23 | SlicePat | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:535:9:535:23 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:535:9:535:23 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:535:9:535:23 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:535:28:539:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:538:22:538:43 | "Two elements: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:538:22:538:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:538:22:538:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:540:9:540:34 | SlicePat | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:540:9:540:34 | SlicePat | &T | {EXTERNAL LOCATION} | [] | -| pattern_matching.rs:540:9:540:34 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:540:9:540:34 | SlicePat | TRef | {EXTERNAL LOCATION} | [] | +| pattern_matching.rs:540:9:540:34 | SlicePat | TRef.TSlice | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:540:39:550:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:545:17:545:53 | "First: {}, last: {}, middle l... | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:545:17:548:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:545:17:548:34 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:554:9:554:13 | array | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:554:9:554:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:554:9:554:13 | array | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:17:554:28 | [...] | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:554:17:554:28 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:554:17:554:28 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:18:554:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:24:554:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:554:27:554:27 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:555:5:562:5 | match array { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:555:11:555:15 | array | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:555:11:555:15 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:555:11:555:15 | array | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:556:9:556:17 | SlicePat | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:556:9:556:17 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:556:9:556:17 | SlicePat | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:556:22:561:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:560:22:560:49 | "Array elements: {}, {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:560:22:560:70 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:560:22:560:70 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:565:24:601:1 | { ... } | | {EXTERNAL LOCATION} | () | @@ -7749,7 +7749,7 @@ inferType | pattern_matching.rs:572:17:572:27 | const_match | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:572:31:572:35 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:573:22:573:43 | "Matches constant: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:573:22:573:56 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:22:573:56 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:573:46:573:56 | const_match | | {EXTERNAL LOCATION} | i32 | @@ -7767,7 +7767,7 @@ inferType | pattern_matching.rs:581:9:581:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:581:27:583:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:582:22:582:35 | "None variant\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:582:22:582:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:582:22:582:35 | "None variant\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:582:22:582:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:582:22:582:35 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:584:9:584:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | @@ -7777,7 +7777,7 @@ inferType | pattern_matching.rs:585:17:585:26 | some_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:585:30:585:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:586:22:586:37 | "Some value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:586:22:586:49 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:22:586:49 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:586:40:586:49 | some_value | | {EXTERNAL LOCATION} | i32 | @@ -7794,7 +7794,7 @@ inferType | pattern_matching.rs:593:17:593:24 | ok_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:593:28:593:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:594:22:594:35 | "Ok value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:594:22:594:45 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:22:594:45 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:594:38:594:45 | ok_value | | {EXTERNAL LOCATION} | i32 | @@ -7806,7 +7806,7 @@ inferType | pattern_matching.rs:597:17:597:25 | err_value | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:597:29:597:29 | e | | {EXTERNAL LOCATION} | usize | | pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:598:22:598:32 | "Error: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:598:22:598:43 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:22:598:43 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:598:35:598:43 | err_value | | {EXTERNAL LOCATION} | usize | @@ -7823,7 +7823,7 @@ inferType | pattern_matching.rs:609:17:609:25 | small_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:609:29:609:33 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:610:22:610:39 | "Small number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:610:22:610:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:22:610:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:610:42:610:50 | small_num | | {EXTERNAL LOCATION} | i32 | @@ -7834,7 +7834,7 @@ inferType | pattern_matching.rs:613:17:613:25 | round_num | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:613:29:613:33 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:614:22:614:39 | "Round number: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:614:22:614:50 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:22:614:50 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:614:42:614:50 | round_num | | {EXTERNAL LOCATION} | i32 | @@ -7861,7 +7861,7 @@ inferType | pattern_matching.rs:624:17:624:22 | axis_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:624:26:624:26 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:625:22:625:46 | "Point on axis: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:625:22:625:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:22:625:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:625:49:625:54 | axis_x | | {EXTERNAL LOCATION} | i32 | @@ -7881,7 +7881,7 @@ inferType | pattern_matching.rs:633:17:633:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:633:34:633:38 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:634:22:634:35 | "In range: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:634:22:634:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:22:634:51 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:634:38:634:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | @@ -7889,65 +7889,65 @@ inferType | pattern_matching.rs:636:14:636:15 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:640:24:674:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:641:9:641:13 | tuple | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:641:9:641:13 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:641:9:641:13 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:641:9:641:13 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:641:9:641:13 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:641:9:641:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:641:9:641:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:641:9:641:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:641:9:641:13 | tuple | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:641:17:641:41 | TupleExpr | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:641:17:641:41 | TupleExpr | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:641:17:641:41 | TupleExpr | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:641:18:641:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:641:24:641:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:641:30:641:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:641:38:641:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:644:5:649:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:644:11:644:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:644:11:644:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:644:11:644:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:644:11:644:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:644:11:644:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:644:11:644:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:644:11:644:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:644:11:644:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:644:11:644:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:645:9:645:19 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:645:9:645:19 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:645:9:645:19 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:645:9:645:19 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:645:24:648:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:647:22:647:42 | "First with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:647:22:647:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:647:22:647:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:651:5:656:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:651:11:651:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:651:11:651:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:651:11:651:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:651:11:651:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:651:11:651:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:651:11:651:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:651:11:651:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:651:11:651:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:651:11:651:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:652:9:652:18 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:652:9:652:18 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:652:9:652:18 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:652:9:652:18 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:652:23:655:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:654:22:654:41 | "Last with rest: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:654:22:654:52 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:654:22:654:52 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:658:5:664:5 | match tuple { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:658:11:658:15 | tuple | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:658:11:658:15 | tuple | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:658:11:658:15 | tuple | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:658:11:658:15 | tuple | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:658:11:658:15 | tuple | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:658:11:658:15 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:658:11:658:15 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:658:11:658:15 | tuple | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:658:11:658:15 | tuple | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:659:9:659:25 | TuplePat | | {EXTERNAL LOCATION} | (T_4) | -| pattern_matching.rs:659:9:659:25 | TuplePat | 0(4) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 1(4) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 2(4) | {EXTERNAL LOCATION} | f32 | -| pattern_matching.rs:659:9:659:25 | TuplePat | 3(4) | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:659:9:659:25 | TuplePat | T3 | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:659:30:663:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:662:22:662:45 | "First and last: {}, {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:662:22:662:67 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:662:22:662:67 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:667:9:667:13 | point | | pattern_matching.rs:135:1:140:1 | Point | @@ -7962,7 +7962,7 @@ inferType | pattern_matching.rs:670:17:670:22 | rest_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:670:26:670:26 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:671:22:671:39 | "X coordinate: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:671:22:671:47 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:22:671:47 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:671:42:671:47 | rest_x | | {EXTERNAL LOCATION} | i32 | @@ -7983,13 +7983,13 @@ inferType | pattern_matching.rs:695:28:695:28 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:698:34:724:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:700:9:700:20 | complex_data | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:700:9:700:20 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:700:9:700:20 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:700:9:700:20 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:700:9:700:20 | complex_data | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:700:9:700:20 | complex_data | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:700:9:700:20 | complex_data | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:24:700:79 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:700:24:700:79 | TupleExpr | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:700:24:700:79 | TupleExpr | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:700:25:700:44 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:700:36:700:36 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:700:42:700:42 | 2 | | {EXTERNAL LOCATION} | i32 | @@ -8001,13 +8001,13 @@ inferType | pattern_matching.rs:700:76:700:76 | 0 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:702:5:723:5 | match complex_data { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:702:11:702:22 | complex_data | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:702:11:702:22 | complex_data | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:702:11:702:22 | complex_data | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:702:11:702:22 | complex_data | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:702:11:702:22 | complex_data | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:702:11:702:22 | complex_data | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:702:11:702:22 | complex_data | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:704:9:704:61 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:704:9:704:61 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:704:9:704:61 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:704:9:704:61 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:704:9:704:61 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:704:9:704:61 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:704:9:704:61 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:704:10:704:26 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:704:21:704:21 | 1 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:704:24:704:24 | y | | {EXTERNAL LOCATION} | i32 | @@ -8026,28 +8026,28 @@ inferType | pattern_matching.rs:707:17:707:24 | nested_b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:707:28:707:28 | b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:709:17:709:57 | "Complex nested: y={}, green={... | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:709:17:710:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:709:17:710:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:710:17:710:24 | nested_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:710:27:710:34 | nested_g | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:710:37:710:44 | nested_b | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:714:9:714:41 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:714:9:714:41 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:9:714:41 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:9:714:41 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:9:714:41 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:9:714:41 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:9:714:41 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:9:714:71 | ... \| ... | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:9:714:71 | ... \| ... | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:9:714:71 | ... \| ... | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:10:714:24 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:18:714:18 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:27:714:40 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | | pattern_matching.rs:714:27:714:40 | ...::None | T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:45:714:71 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:714:45:714:71 | TuplePat | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:714:45:714:71 | TuplePat | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:714:45:714:71 | TuplePat | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:714:45:714:71 | TuplePat | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:714:45:714:71 | TuplePat | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:714:45:714:71 | TuplePat | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:714:46:714:67 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:714:57:714:57 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:714:61:714:61 | 0 | | {EXTERNAL LOCATION} | i32 | @@ -8057,31 +8057,31 @@ inferType | pattern_matching.rs:715:17:715:29 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:715:33:715:33 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:716:22:716:50 | "Alternative complex: x={:?}\\n... | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:716:22:716:65 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:22:716:65 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:716:53:716:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:719:9:719:13 | other | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:719:9:719:13 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:719:9:719:13 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:719:9:719:13 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:719:9:719:13 | other | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:719:9:719:13 | other | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:719:9:719:13 | other | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:719:18:722:9 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:720:17:720:29 | other_complex | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:720:17:720:29 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:720:17:720:29 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:720:17:720:29 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:720:17:720:29 | other_complex | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:720:17:720:29 | other_complex | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:720:17:720:29 | other_complex | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:720:33:720:37 | other | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:720:33:720:37 | other | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:720:33:720:37 | other | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:720:33:720:37 | other | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:720:33:720:37 | other | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:720:33:720:37 | other | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:720:33:720:37 | other | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:721:22:721:47 | "Other complex data: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:721:22:721:62 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:721:22:721:62 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:721:50:721:62 | other_complex | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:721:50:721:62 | other_complex | 0(2) | pattern_matching.rs:135:1:140:1 | Point | -| pattern_matching.rs:721:50:721:62 | other_complex | 1(2) | pattern_matching.rs:152:1:156:1 | MyOption | -| pattern_matching.rs:721:50:721:62 | other_complex | 1(2).T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:721:50:721:62 | other_complex | T0 | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:721:50:721:62 | other_complex | T1 | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:721:50:721:62 | other_complex | T1.T | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:726:37:758:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:728:9:728:13 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:728:17:728:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | @@ -8096,27 +8096,27 @@ inferType | pattern_matching.rs:731:9:731:13 | let_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:731:17:731:17 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:9:733:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:733:9:733:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:9:733:13 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:733:9:733:13 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:733:9:733:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:733:9:733:13 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:733:9:733:13 | tuple | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:733:17:733:36 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:733:17:733:36 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:733:17:733:36 | TupleExpr | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:733:18:733:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:733:24:733:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:733:30:733:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:734:9:734:17 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:734:9:734:17 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:734:9:734:17 | TuplePat | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:734:9:734:17 | TuplePat | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:734:9:734:17 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:734:9:734:17 | TuplePat | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:734:9:734:17 | TuplePat | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:734:10:734:10 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:734:13:734:13 | b | | {EXTERNAL LOCATION} | i64 | | pattern_matching.rs:734:16:734:16 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:734:21:734:25 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:734:21:734:25 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:734:21:734:25 | tuple | 1(3) | {EXTERNAL LOCATION} | i64 | -| pattern_matching.rs:734:21:734:25 | tuple | 2(3) | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:734:21:734:25 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:734:21:734:25 | tuple | T1 | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:734:21:734:25 | tuple | T2 | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:735:9:735:13 | let_a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:735:17:735:17 | a | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:736:9:736:13 | let_b | | {EXTERNAL LOCATION} | i64 | @@ -8124,18 +8124,18 @@ inferType | pattern_matching.rs:737:9:737:13 | let_c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:737:17:737:17 | c | | {EXTERNAL LOCATION} | f32 | | pattern_matching.rs:739:9:739:13 | array | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:739:9:739:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:9:739:13 | array | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:17:739:34 | [...] | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:739:17:739:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:17:739:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:18:739:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:24:739:24 | 2 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:27:739:27 | 3 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:30:739:30 | 4 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:739:33:739:33 | 5 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:740:9:740:25 | SlicePat | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:740:9:740:25 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:9:740:25 | SlicePat | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:740:29:740:33 | array | | {EXTERNAL LOCATION} | [;] | -| pattern_matching.rs:740:29:740:33 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:29:740:33 | array | TArray | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:744:9:744:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:17:744:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:744:23:744:25 | 255 | | {EXTERNAL LOCATION} | i32 | @@ -8155,12 +8155,12 @@ inferType | pattern_matching.rs:751:9:751:13 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:751:17:751:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:752:13:752:19 | ref_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:752:13:752:19 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:752:13:752:19 | ref_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:752:23:752:27 | value | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:753:9:753:15 | let_ref | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:753:9:753:15 | let_ref | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:9:753:15 | let_ref | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:753:19:753:25 | ref_val | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:753:19:753:25 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:19:753:25 | ref_val | TRef | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:13:756:19 | mut_val | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:756:23:756:27 | 10i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:757:9:757:15 | let_mut | | {EXTERNAL LOCATION} | i32 | @@ -8170,15 +8170,15 @@ inferType | pattern_matching.rs:763:30:763:30 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:33:763:33 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:763:59:767:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:763:59:767:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:763:59:767:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:763:59:767:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:763:59:767:5 | { ... } | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:13:764:19 | param_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:764:23:764:23 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:13:765:19 | param_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:765:23:765:23 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:9:766:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:766:9:766:26 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:766:9:766:26 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:766:9:766:26 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:766:9:766:26 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:10:766:16 | param_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:766:19:766:25 | param_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:769:22:769:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -8190,22 +8190,22 @@ inferType | pattern_matching.rs:770:23:770:23 | r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:771:9:771:15 | param_r | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:774:22:774:38 | TuplePat | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:774:22:774:38 | TuplePat | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:774:22:774:38 | TuplePat | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:774:22:774:38 | TuplePat | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:774:22:774:38 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:22:774:38 | TuplePat | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:774:22:774:38 | TuplePat | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:774:23:774:27 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:774:30:774:30 | _ | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:774:33:774:37 | third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:774:74:778:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:774:74:778:5 | { ... } | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:774:74:778:5 | { ... } | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:774:74:778:5 | { ... } | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:74:778:5 | { ... } | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:775:13:775:23 | param_first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:775:27:775:31 | first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:776:13:776:23 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:776:27:776:31 | third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:777:9:777:34 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:777:9:777:34 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:777:9:777:34 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:777:9:777:34 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:777:9:777:34 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:777:10:777:20 | param_first | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:777:23:777:33 | param_third | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:781:9:781:13 | point | | pattern_matching.rs:135:1:140:1 | Point | @@ -8213,11 +8213,11 @@ inferType | pattern_matching.rs:781:28:781:28 | 5 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:781:34:781:35 | 10 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:9:782:17 | extracted | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:782:9:782:17 | extracted | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:9:782:17 | extracted | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:9:782:17 | extracted | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:9:782:17 | extracted | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:21:782:40 | extract_point(...) | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:782:21:782:40 | extract_point(...) | 1(2) | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:21:782:40 | extract_point(...) | T1 | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:782:35:782:39 | point | | pattern_matching.rs:135:1:140:1 | Point | | pattern_matching.rs:784:9:784:13 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:784:17:784:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | @@ -8228,26 +8228,26 @@ inferType | pattern_matching.rs:785:15:785:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | | pattern_matching.rs:785:29:785:33 | color | | pattern_matching.rs:142:1:143:25 | Color | | pattern_matching.rs:787:9:787:13 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:787:9:787:13 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:787:9:787:13 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:787:9:787:13 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:787:9:787:13 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:787:9:787:13 | tuple | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:787:9:787:13 | tuple | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:787:17:787:38 | TupleExpr | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:787:17:787:38 | TupleExpr | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:787:17:787:38 | TupleExpr | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:787:18:787:22 | 42i32 | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:787:25:787:31 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | | pattern_matching.rs:787:34:787:37 | true | | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:788:9:788:23 | tuple_extracted | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:9:788:23 | tuple_extracted | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:9:788:23 | tuple_extracted | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:788:27:788:46 | extract_tuple(...) | | {EXTERNAL LOCATION} | (T_2) | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 0(2) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | 1(2) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:27:788:46 | extract_tuple(...) | T1 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:788:41:788:45 | tuple | | {EXTERNAL LOCATION} | (T_3) | -| pattern_matching.rs:788:41:788:45 | tuple | 0(3) | {EXTERNAL LOCATION} | i32 | -| pattern_matching.rs:788:41:788:45 | tuple | 1(3) | {EXTERNAL LOCATION} | f64 | -| pattern_matching.rs:788:41:788:45 | tuple | 2(3) | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:788:41:788:45 | tuple | T0 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:41:788:45 | tuple | T1 | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:788:41:788:45 | tuple | T2 | {EXTERNAL LOCATION} | bool | | pattern_matching.rs:792:35:824:1 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:794:9:794:14 | points | | {EXTERNAL LOCATION} | Vec | | pattern_matching.rs:794:18:794:65 | MacroExpr | | {EXTERNAL LOCATION} | Vec | @@ -8270,7 +8270,7 @@ inferType | pattern_matching.rs:797:13:797:18 | loop_y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:797:22:797:22 | y | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:798:18:798:42 | "Point in loop: ({}, {})\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:798:18:798:58 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:18:798:58 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:798:45:798:50 | loop_x | | {EXTERNAL LOCATION} | i32 | @@ -8291,7 +8291,7 @@ inferType | pattern_matching.rs:804:13:804:20 | if_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:804:24:804:24 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:805:18:805:44 | "If let with @ pattern: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:805:18:805:54 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:18:805:54 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:805:47:805:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | @@ -8317,7 +8317,7 @@ inferType | pattern_matching.rs:811:13:811:23 | while_let_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:811:27:811:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:812:18:812:29 | "Popped: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:812:18:812:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:18:812:42 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:812:32:812:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | @@ -8333,7 +8333,7 @@ inferType | pattern_matching.rs:819:17:819:23 | guard_x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:819:27:819:27 | x | | {EXTERNAL LOCATION} | i32 | | pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | | {EXTERNAL LOCATION} | & | -| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:820:22:820:35 | "Positive: {}\\n" | TRef | {EXTERNAL LOCATION} | str | | pattern_matching.rs:820:22:820:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:22:820:44 | { ... } | | {EXTERNAL LOCATION} | () | | pattern_matching.rs:820:38:820:44 | guard_x | | {EXTERNAL LOCATION} | i32 | diff --git a/rust/tools/builtins/types.rs b/rust/tools/builtins/types.rs index 56a8a502e4c..0c6025b4d37 100644 --- a/rust/tools/builtins/types.rs +++ b/rust/tools/builtins/types.rs @@ -24,23 +24,25 @@ pub struct isize; pub struct f32; pub struct f64; -pub struct Slice; -pub struct Array; -pub struct Ref; // todo: add mut variant -pub struct Ptr; // todo: add mut variant +struct Slice; +struct Array; +struct Ref; // todo: add mut variant +struct Ptr; // todo: add mut variant // tuples -pub struct Tuple0; -pub struct Tuple1(T); -pub struct Tuple2(T1, T2); -pub struct Tuple3(T1, T2, T3); -pub struct Tuple4(T1, T2, T3, T4); -pub struct Tuple5(T1, T2, T3, T4, T5); -pub struct Tuple6(T1, T2, T3, T4, T5, T6); -pub struct Tuple7(T1, T2, T3, T4, T5, T6, T7); -pub struct Tuple8(T1, T2, T3, T4, T5, T6, T7, T8); -pub struct Tuple9(T1, T2, T3, T4, T5, T6, T7, T8, T9); -pub struct Tuple10( +struct Tuple0; +struct Tuple1(T0); +struct Tuple2(T0, T1); +struct Tuple3(T0, T1, T2); +struct Tuple4(T0, T1, T2, T3); +struct Tuple5(T0, T1, T2, T3, T4); +struct Tuple6(T0, T1, T2, T3, T4, T5); +struct Tuple7(T0, T1, T2, T3, T4, T5, T6); +struct Tuple8(T0, T1, T2, T3, T4, T5, T6, T7); +struct Tuple9(T0, T1, T2, T3, T4, T5, T6, T7, T8); +struct Tuple10(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); +struct Tuple11( + T0, T1, T2, T3, @@ -52,7 +54,8 @@ pub struct Tuple10( T9, T10, ); -pub struct Tuple11( +struct Tuple12( + T0, T1, T2, T3, @@ -65,83 +68,3 @@ pub struct Tuple11( T10, T11, ); -pub struct Tuple12( - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, -); -pub struct Tuple13( - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, -); -pub struct Tuple14( - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, -); -pub struct Tuple15( - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, -); -pub struct Tuple16( - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, -); From ddee385f371ab5b00d69ed3b251b9c24f2cf80fe Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Tue, 18 Nov 2025 17:18:05 +0100 Subject: [PATCH 815/965] Ripunzip: use releases from github This uses the ripunzip releases from github instead of building them ourselves. --- .gitattributes | 3 - .github/workflows/build-ripunzip.yml | 169 ------------------------- MODULE.bazel | 26 ++-- misc/ripunzip/BUILD.bazel | 2 +- misc/ripunzip/BUILD.ripunzip.bazel | 2 +- misc/ripunzip/ripunzip-Linux.tar.zst | 3 - misc/ripunzip/ripunzip-Windows.tar.zst | 3 - misc/ripunzip/ripunzip-macOS.tar.zst | 3 - misc/ripunzip/ripunzip.bzl | 51 ++++++++ 9 files changed, 62 insertions(+), 200 deletions(-) delete mode 100644 .github/workflows/build-ripunzip.yml delete mode 100644 misc/ripunzip/ripunzip-Linux.tar.zst delete mode 100644 misc/ripunzip/ripunzip-Windows.tar.zst delete mode 100644 misc/ripunzip/ripunzip-macOS.tar.zst create mode 100644 misc/ripunzip/ripunzip.bzl diff --git a/.gitattributes b/.gitattributes index df5bed028be..610342ef78b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -82,9 +82,6 @@ /csharp/paket.main.bzl linguist-generated=true /csharp/paket.main_extension.bzl linguist-generated=true -# ripunzip tool -/misc/ripunzip/ripunzip-* filter=lfs diff=lfs merge=lfs -text - # swift prebuilt resources /swift/third_party/resources/*.zip filter=lfs diff=lfs merge=lfs -text /swift/third_party/resources/*.tar.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/build-ripunzip.yml b/.github/workflows/build-ripunzip.yml deleted file mode 100644 index 041d34bd046..00000000000 --- a/.github/workflows/build-ripunzip.yml +++ /dev/null @@ -1,169 +0,0 @@ -name: Build ripunzip - -on: - workflow_dispatch: - inputs: - ripunzip-version: - description: What reference to checkout from google/ripunzip. Latest by default - required: false - openssl-version: - description: What reference to checkout from openssl/openssl for Linux. Latest by default - required: false - open-pr: - description: Open a pull request updating the ripunzip versions committed to lfs - required: false - default: true # will be false on PRs - pull_request: - paths: - - .github/workflows/build-ripunzip.yml - -permissions: {} - -jobs: - versions: - runs-on: ubuntu-slim - outputs: - ripunzip-version: ${{ inputs.ripunzip-version || steps.fetch-ripunzip-version.outputs.version }} - openssl-version: ${{ inputs.openssl-version || steps.fetch-openssl-version.outputs.version }} - steps: - - name: Fetch latest ripunzip version - id: fetch-ripunzip-version - if: "!inputs.ripunzip-version" - run: &fetch-version - echo "version=$(gh release view --repo $REPO --json tagName --jq .tagName)" | tee -a $GITHUB_OUTPUT - env: - REPO: "google/ripunzip" - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Fetch latest openssl version - id: fetch-openssl-version - if: "!inputs.openssl-version" - run: *fetch-version - env: - REPO: "openssl/openssl" - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - build: - needs: versions - strategy: - fail-fast: false - matrix: - os: - - ubuntu-22.04 # keep at lowest supported ubuntu version for broader glibc compatibility - - macos-15 - - windows-2025 - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v5 - with: - repository: google/ripunzip - ref: ${{ needs.versions.outputs.ripunzip-version }} - # we need to avoid ripunzip dynamically linking into libssl - # see https://github.com/sfackler/rust-openssl/issues/183 - - if: runner.os == 'Linux' - name: checkout openssl - uses: actions/checkout@v5 - with: - repository: openssl/openssl - path: openssl - ref: ${{ needs.versions.outputs.openssl-version }} - - if: runner.os == 'Linux' - name: build and install openssl with fPIC - shell: bash - working-directory: openssl - run: | - ./config -fPIC --prefix=$HOME/.local --openssldir=$HOME/.local/ssl - make -j $(nproc) - make install_sw -j $(nproc) - - if: runner.os == 'Linux' - name: build (linux) - shell: bash - run: | - env OPENSSL_LIB_DIR=$HOME/.local/lib64 OPENSSL_INCLUDE_DIR=$HOME/.local/include OPENSSL_STATIC=yes cargo build --release - mv target/release/ripunzip ripunzip-linux - - if: runner.os == 'Windows' - name: build (windows) - shell: bash - run: | - cargo build --release - mv target/release/ripunzip ripunzip-windows - - name: build (macOS) - if: runner.os == 'macOS' - shell: bash - run: | - rustup target install x86_64-apple-darwin - rustup target install aarch64-apple-darwin - cargo build --target x86_64-apple-darwin --release - cargo build --target aarch64-apple-darwin --release - lipo -create -output ripunzip-macos \ - -arch x86_64 target/x86_64-apple-darwin/release/ripunzip \ - -arch arm64 target/aarch64-apple-darwin/release/ripunzip - - name: Archive - shell: bash - run: | - tar acf ripunzip-$RUNNER_OS.tar.zst ripunzip-$(echo $RUNNER_OS | tr '[:upper:]' '[:lower:]') - - name: Upload built binary - uses: actions/upload-artifact@v4 - with: - name: ripunzip-${{ runner.os }} - path: ripunzip-${{ runner.os }}.tar.zst - retention-days: 5 - compression: 0 - - name: Check built binary - shell: bash - run: | - rm -f ripunzip-*.tar.zst - ./ripunzip-* --version - publish: - needs: [versions, build] - if: inputs.open-pr == 'true' - permissions: - contents: write - pull-requests: write - runs-on: ubuntu-slim - steps: - # workaround for git-lfs not being installed yet on ubuntu-slim runners - - name: Ensure git-lfs is installed - shell: bash - run: | - if which git-lfs &>/dev/null; then - echo "git-lfs is already installed" - exit 0 - fi - cd $TMP - gh release download --repo git-lfs/git-lfs --pattern "git-lfs-linux-amd64-*.tar.gz" --clobber - tar xzf git-lfs-linux-amd64-*.tar.gz - rm git-lfs-linux-amd64-*.tar.gz - cd git-lfs-* - pwd | tee -a $GITHUB_PATH - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/checkout@v5 - with: - sparse-checkout: | - .github - misc/ripunzip - lfs: true - - name: Download built binaries - uses: actions/download-artifact@v4 - with: - merge-multiple: true - path: misc/ripunzip - - name: Open PR - shell: bash - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git switch -c update-ripunzip - git add misc/ripunzip - git commit -m "Update ripunzip binaries to version $VERSION" - git push --set-upstream origin update-ripunzip --force - TITLE="Update ripunzip binaries to version $VERSION" - gh pr create \ - --draft \ - --title "$TITLE" \ - --body "Automated update of ripunzip binaries." \ - --assignee "$ACTOR" || - (gh pr edit --title "$TITLE" --add-assignee "$ACTOR" && gh pr ready --undo) - env: - ACTOR: ${{ github.actor }} - VERSION: ${{ needs.versions.outputs.ripunzip-version }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/MODULE.bazel b/MODULE.bazel index dfd2c469a5e..a17d0bd36c4 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -269,24 +269,16 @@ go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") go_deps.from_file(go_mod = "//go/extractor:go.mod") use_repo(go_deps, "org_golang_x_mod", "org_golang_x_tools") -lfs_archive = use_repo_rule("//misc/bazel:lfs.bzl", "lfs_archive") +ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archive") -lfs_archive( - name = "ripunzip-linux", - src = "//misc/ripunzip:ripunzip-Linux.tar.zst", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", -) - -lfs_archive( - name = "ripunzip-windows", - src = "//misc/ripunzip:ripunzip-Windows.tar.zst", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", -) - -lfs_archive( - name = "ripunzip-macos", - src = "//misc/ripunzip:ripunzip-macOS.tar.zst", - build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", +# go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s +ripunzip_archive( + name = "ripunzip", + version = "2.0.3", + sha256_linux = "ee0e8a957687a5dc3a66b2a4b25883bf762df4c9c07f0651af527a32a405054b", + sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62", + sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64", + sha256_macos_arm = "8a88eea54eac232d162a72a42065e0429b82dbf4f05e9642915dff9d7a81f846", ) register_toolchains( diff --git a/misc/ripunzip/BUILD.bazel b/misc/ripunzip/BUILD.bazel index fb33124f3b2..abd9c082887 100644 --- a/misc/ripunzip/BUILD.bazel +++ b/misc/ripunzip/BUILD.bazel @@ -2,7 +2,7 @@ load("@rules_shell//shell:sh_binary.bzl", "sh_binary") alias( name = "ripunzip", - actual = select({"@platforms//os:" + os: "@ripunzip-%s//:ripunzip" % os for os in ("linux", "windows", "macos")}), + actual = "@ripunzip", visibility = ["//visibility:public"], ) diff --git a/misc/ripunzip/BUILD.ripunzip.bazel b/misc/ripunzip/BUILD.ripunzip.bazel index e2832d1e275..582138dd3e1 100644 --- a/misc/ripunzip/BUILD.ripunzip.bazel +++ b/misc/ripunzip/BUILD.ripunzip.bazel @@ -2,7 +2,7 @@ load("@bazel_skylib//rules:native_binary.bzl", "native_binary") native_binary( name = "ripunzip", - src = glob(["ripunzip-*"])[0], + src = glob(["bin/ripunzip*"])[0], out = "ripunzip" + select({ "@platforms//os:windows": ".exe", "//conditions:default": "", diff --git a/misc/ripunzip/ripunzip-Linux.tar.zst b/misc/ripunzip/ripunzip-Linux.tar.zst deleted file mode 100644 index c9a5ff1e590..00000000000 --- a/misc/ripunzip/ripunzip-Linux.tar.zst +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:252a54114fde9932d2bf3e7a1592bc6767611682a913519585402b9c51d6e2c7 -size 4707184 diff --git a/misc/ripunzip/ripunzip-Windows.tar.zst b/misc/ripunzip/ripunzip-Windows.tar.zst deleted file mode 100644 index 80e41538135..00000000000 --- a/misc/ripunzip/ripunzip-Windows.tar.zst +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a4388816c72e0bc8c30741aaae05dc91b46174db406133cad40c783acf4fad6 -size 1765498 diff --git a/misc/ripunzip/ripunzip-macOS.tar.zst b/misc/ripunzip/ripunzip-macOS.tar.zst deleted file mode 100644 index 3ff3253ca5d..00000000000 --- a/misc/ripunzip/ripunzip-macOS.tar.zst +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a5d8ca7ed78b0da3a572b91556fbf03431c99770072060743c63e2d581d8580 -size 3796231 diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl new file mode 100644 index 00000000000..ce2dfbba785 --- /dev/null +++ b/misc/ripunzip/ripunzip.bzl @@ -0,0 +1,51 @@ +def _impl(repository_ctx): + version = repository_ctx.attr.version + url_prefix = "https://github.com/GoogleChrome/ripunzip/releases/download/v%s" % version + build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") + if repository_ctx.os.name == "linux": + repository_ctx.download_and_extract( + url="%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), + sha256=repository_ctx.attr.sha256_linux, + canonical_id="ripunzip-deb", + output="deb", + ) + repository_ctx.extract( + "deb/data.tar.xz", + strip_prefix="usr", + ) + elif repository_ctx.os.name == "windows": + repository_ctx.download_and_extract( + url="%s/ripunzip_v%s-x86_64-pc-windows-msvc.zip" % (url_prefix, version), + sha256=repository_ctx.attr.sha256_windows, + output="bin", + ) + elif repository_ctx.os.name == "macos": + arch = repository_ctx.os.arch + if arch == "x86_64": + suffix = "x86_64-apple-darwin" + sha256 = repository_ctx.attr.sha256_macos_intel + elif arch == "aarch64": + suffix = "aarch64-apple-darwin" + sha256 = repository_ctx.attr.sha256_macos_arm + else: + fail("Unsupported macOS architecture: %s" % arch) + repository_ctx.download_and_extract( + url="%s/ripunzip_v%s-%s.tar.gz" % (url_prefix, version, suffix), + sha256=sha256, + output="bin", + ) + else: + fail("Unsupported OS: %s" % repository_ctx.os.name) + repository_ctx.file("WORKSPACE.bazel") + repository_ctx.symlink(build_file, "BUILD.bazel") + +ripunzip_archive = repository_rule( + implementation=_impl, + attrs={ + "version": attr.string(mandatory=True), + "sha256_linux": attr.string(mandatory=True), + "sha256_windows": attr.string(mandatory=True), + "sha256_macos_intel": attr.string(mandatory=True), + "sha256_macos_arm": attr.string(mandatory=True), + }, +) From 2af6db63209e66a60a025b7228ea4527af387207 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 18:51:33 +0000 Subject: [PATCH 816/965] C++: Rename 'FieldContent' to 'NonUnionContent'. --- .../code/cpp/ir/dataflow/internal/DataFlowPrivate.qll | 2 +- .../semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 8 ++++---- .../src/utils/modelgenerator/internal/CaptureModels.qll | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 582391e81cc..f9ea35e6bd1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -1574,7 +1574,7 @@ pragma[inline] ContentApprox getContentApprox(Content c) { exists(string prefix, Field f | prefix = result.(FieldApproxContent).getPrefix() and - f = c.(FieldContent).getField() and + f = c.(NonUnionFieldContent).getField() and fieldHasApproxName(f, prefix) ) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 82dcd43e136..e5593427486 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 @@ -2093,8 +2093,8 @@ private Field getAFieldWithSize(Union u, int bytes) { cached private newtype TContent = - TFieldContent(Field f, int indirectionIndex) { - // the indirection index for field content starts at 1 (because `TFieldContent` is thought of as + TNonUnionContent(Field f, int indirectionIndex) { + // the indirection index for field content starts at 1 (because `TNonUnionContent` is thought of as // the address of the field, `FieldAddress` in the IR). indirectionIndex = [1 .. SsaImpl::getMaxIndirectionsForType(f.getUnspecifiedType())] and // Reads and writes of union fields are tracked using `UnionContent`. @@ -2163,11 +2163,11 @@ private module ContentStars { private import ContentStars /** A reference through a non-union instance field. */ -class FieldContent extends Content, TFieldContent { +class NonUnionFieldContent extends Content, TNonUnionContent { private Field f; private int indirectionIndex; - FieldContent() { this = TFieldContent(f, indirectionIndex) } + NonUnionFieldContent() { this = TNonUnionContent(f, indirectionIndex) } override string toString() { result = contentStars(this) + f.toString() } diff --git a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll index ea6ab058134..63d2eee17c9 100644 --- a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -190,7 +190,7 @@ module ModelGeneratorCommonInput implements ModelGeneratorCommonInputSig Date: Tue, 18 Nov 2025 18:52:20 +0000 Subject: [PATCH 817/965] C++: Get rid of abstract'ness from these public predicates. We are not supposed to have abstract public stuff. Oops ... --- .../semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 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 e5593427486..6c93fabfd70 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 @@ -2124,14 +2124,14 @@ private newtype TContent = */ class Content extends TContent { /** Gets a textual representation of this element. */ - abstract string toString(); + string toString() { none() } // overridden in subclasses predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { path = "" and sl = 0 and sc = 0 and el = 0 and ec = 0 } /** Gets the indirection index of this `Content`. */ - abstract int getIndirectionIndex(); + int getIndirectionIndex() { none() } // overridden in subclasses /** * INTERNAL: Do not use. @@ -2142,7 +2142,7 @@ class Content extends TContent { * For example, a write to a field `f` implies that any content of * the form `*f` is also cleared. */ - abstract predicate impliesClearOf(Content c); + predicate impliesClearOf(Content c) { none() } // overridden in subclasses } /** From 7f0fcb0c468a5121bf442b35cfd0d3ea5c0d5645 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 18:53:37 +0000 Subject: [PATCH 818/965] C++: Create a common base class for 'NonUnionContent' and 'UnionContent' called 'FieldContent'. --- .../ir/dataflow/internal/DataFlowPrivate.qll | 36 +++++++------------ .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 31 +++++++++++++--- .../modelgenerator/internal/CaptureModels.qll | 7 +--- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index f9ea35e6bd1..03289a42e40 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -873,23 +873,16 @@ predicate jumpStep(Node n1, Node n2) { predicate storeStepImpl(Node node1, Content c, Node node2, boolean certain) { exists( PostFieldUpdateNode postFieldUpdate, int indirectionIndex1, int numberOfLoads, - StoreInstruction store + StoreInstruction store, FieldContent fc | postFieldUpdate = node2 and + fc = c and nodeHasInstruction(node1, store, pragma[only_bind_into](indirectionIndex1)) and postFieldUpdate.getIndirectionIndex() = 1 and numberOfLoadsFromOperand(postFieldUpdate.getFieldAddress(), - store.getDestinationAddressOperand(), numberOfLoads, certain) - | - exists(FieldContent fc | fc = c | - fc.getField() = postFieldUpdate.getUpdatedField() and - fc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads - ) - or - exists(UnionContent uc | uc = c | - uc.getAField() = postFieldUpdate.getUpdatedField() and - uc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads - ) + store.getDestinationAddressOperand(), numberOfLoads, certain) and + fc.getAField() = postFieldUpdate.getUpdatedField() and + fc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads ) or // models-as-data summarized flow @@ -965,22 +958,17 @@ predicate nodeHasInstruction(Node node, Instruction instr, int indirectionIndex) * `node2`. */ predicate readStep(Node node1, ContentSet c, Node node2) { - exists(FieldAddress fa1, Operand operand, int numberOfLoads, int indirectionIndex2 | + exists( + FieldAddress fa1, Operand operand, int numberOfLoads, int indirectionIndex2, FieldContent fc + | + fc = c and nodeHasOperand(node2, operand, indirectionIndex2) and // The `1` here matches the `node2.getIndirectionIndex() = 1` conjunct // in `storeStep`. nodeHasOperand(node1, fa1.getObjectAddressOperand(), 1) and - numberOfLoadsFromOperand(fa1, operand, numberOfLoads, _) - | - exists(FieldContent fc | fc = c | - fc.getField() = fa1.getField() and - fc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads - ) - or - exists(UnionContent uc | uc = c | - uc.getAField() = fa1.getField() and - uc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads - ) + numberOfLoadsFromOperand(fa1, operand, numberOfLoads, _) and + fc.getAField() = fa1.getField() and + fc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads ) or // models-as-data summarized flow 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 6c93fabfd70..7a9ab6ea2f7 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 @@ -2162,8 +2162,31 @@ private module ContentStars { private import ContentStars +private class TFieldContent = TNonUnionContent or TUnionContent; + +/** + * A `Content` that references a `Field`. This may be a field of a `struct`, + * `class`, or `union`. In the case of a `union` there may be multiple fields + * associated with the same `Content`. + */ +class FieldContent extends Content, TFieldContent { + /** Gets a `Field` of this `Content`. */ + Field getAField() { none() } + + /** + * Gets the field associated with this `Content`, if a unique one exists. + */ + final Field getField() { result = unique( | | this.getAField()) } + + override int getIndirectionIndex() { none() } // overridden in subclasses + + override string toString() { none() } // overridden in subclasses + + override predicate impliesClearOf(Content c) { none() } // overridden in subclasses +} + /** A reference through a non-union instance field. */ -class NonUnionFieldContent extends Content, TNonUnionContent { +class NonUnionFieldContent extends FieldContent, TNonUnionContent { private Field f; private int indirectionIndex; @@ -2171,7 +2194,7 @@ class NonUnionFieldContent extends Content, TNonUnionContent { override string toString() { result = contentStars(this) + f.toString() } - Field getField() { result = f } + override Field getAField() { result = f } /** Gets the indirection index of this `FieldContent`. */ pragma[inline] @@ -2191,7 +2214,7 @@ class NonUnionFieldContent extends Content, TNonUnionContent { } /** A reference through an instance field of a union. */ -class UnionContent extends Content, TUnionContent { +class UnionContent extends FieldContent, TUnionContent { private Union u; private int indirectionIndex; private int bytes; @@ -2201,7 +2224,7 @@ class UnionContent extends Content, TUnionContent { override string toString() { result = contentStars(this) + u.toString() } /** Gets a field of the underlying union of this `UnionContent`, if any. */ - Field getAField() { result = u.getAField() and getFieldSize(result) = bytes } + override Field getAField() { result = u.getAField() and getFieldSize(result) = bytes } /** Gets the underlying union of this `UnionContent`. */ Union getUnion() { result = u } diff --git a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 63d2eee17c9..28892c5b820 100644 --- a/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -340,12 +340,7 @@ private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputS ) } - predicate isField(DataFlow::ContentSet cs) { - exists(DataFlow::Content c | cs.isSingleton(c) | - c instanceof DataFlow::FieldContent or - c instanceof DataFlow::UnionContent - ) - } + predicate isField(DataFlow::ContentSet cs) { cs.isSingleton(any(DataFlow::FieldContent fc)) } predicate isCallback(DataFlow::ContentSet c) { none() } From a5601ce7344cc2f8ed5b84948d49549f39681b49 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 19:52:05 +0000 Subject: [PATCH 819/965] C++: Lift 'getTypeOperand' to the superclass. --- cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll | 30 ++++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll index 83364e422eb..e5df5cb160f 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Cast.qll @@ -750,6 +750,16 @@ class SizeofPackTypeOperator extends SizeofPackOperator { */ class SizeofOperator extends Expr, @runtime_sizeof { override int getPrecedence() { result = 16 } + + /** + * Gets the contained type of this `sizeof`. For example, + * the result is `int` in both cases below: + * ``` + * sizeof(int); + * sizeof(42); + * ``` + */ + Type getTypeOperand() { none() } // overridden in subclasses } /** @@ -766,6 +776,8 @@ class SizeofExprOperator extends SizeofOperator { /** Gets the contained expression. */ Expr getExprOperand() { result = this.getChild(0) } + override Type getTypeOperand() { result = this.getExprOperand().getType() } + override string toString() { result = "sizeof()" } override predicate mayBeImpure() { this.getExprOperand().mayBeImpure() } @@ -784,8 +796,7 @@ class SizeofTypeOperator extends SizeofOperator { override string getAPrimaryQlClass() { result = "SizeofTypeOperator" } - /** Gets the contained type. */ - Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } + override Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } override string toString() { result = "sizeof(" + this.getTypeOperand().getName() + ")" } @@ -842,6 +853,16 @@ class AlignofTypeOperator extends AlignofOperator { */ class DatasizeofOperator extends Expr, @datasizeof { override int getPrecedence() { result = 16 } + + /** + * Gets the contained type of this `__datasizeof`. For example, + * the result is `int` in both cases below: + * ``` + * __datasizeof(int); + * __datasizeof(42); + * ``` + */ + Type getTypeOperand() { none() } } /** @@ -855,6 +876,8 @@ class DatasizeofExprOperator extends DatasizeofOperator { /** Gets the contained expression. */ Expr getExprOperand() { result = this.getChild(0) } + override Type getTypeOperand() { result = this.getExprOperand().getType() } + override string toString() { result = "__datasizeof()" } override predicate mayBeImpure() { this.getExprOperand().mayBeImpure() } @@ -870,8 +893,7 @@ class DatasizeofTypeOperator extends DatasizeofOperator { override string getAPrimaryQlClass() { result = "DatasizeofTypeOperator" } - /** Gets the contained type. */ - Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } + override Type getTypeOperand() { sizeof_bind(underlyingElement(this), unresolveElement(result)) } override string toString() { result = "__datasizeof(" + this.getTypeOperand().getName() + ")" } From d4a8dbb5f3f5ac168be028d1b9b6aec9142993d1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 19:52:30 +0000 Subject: [PATCH 820/965] C++: Slightly modify a test so that we can see the effect of this change. --- cpp/ql/test/library-tests/types/sizeof/sizeof.expected | 6 ++++++ cpp/ql/test/library-tests/types/sizeof/sizeof.ql | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected index c0d075126df..1e2963bc93b 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected @@ -3,8 +3,14 @@ | sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | | sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:23:22:23:22 | i | +| sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | | sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofExprOperator.getExprOperand() | sizeof.cpp:24:22:24:22 | c | +| sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | | sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofExprOperator.getExprOperand() | sizeof.cpp:25:22:25:24 | ptr | +| sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | | sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofExprOperator.getExprOperand() | sizeof.cpp:26:22:26:23 | mc | +| sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofExprOperator.getExprOperand() | sizeof.cpp:27:22:27:24 | arr | +| sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int[10] | | sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:28:23:28:28 | access to array | +| sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql index 531f55ee45c..0ec6711adb8 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql @@ -3,7 +3,7 @@ import cpp from SizeofOperator sto, string elemDesc, Element e where elemDesc = "SizeofTypeOperator.getTypeOperand()" and - e = sto.(SizeofTypeOperator).getTypeOperand() + e = sto.(SizeofOperator).getTypeOperand() or elemDesc = "SizeofExprOperator.getExprOperand()" and e = sto.(SizeofExprOperator).getExprOperand() From 6b136e3a53229352370d314aa4207d6c89ccd298 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 20:00:32 +0000 Subject: [PATCH 821/965] Update cpp/ql/test/library-tests/types/sizeof/sizeof.ql Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- cpp/ql/test/library-tests/types/sizeof/sizeof.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql index 0ec6711adb8..46d78ebbe60 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql @@ -2,7 +2,7 @@ import cpp from SizeofOperator sto, string elemDesc, Element e where - elemDesc = "SizeofTypeOperator.getTypeOperand()" and + elemDesc = "SizeofOperator.getTypeOperand()" and e = sto.(SizeofOperator).getTypeOperand() or elemDesc = "SizeofExprOperator.getExprOperand()" and From a27ac9d59dc47d49ddfd5d64dba052a4e85e5d35 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 20:03:10 +0000 Subject: [PATCH 822/965] C++: Updated expected after Copilot change. --- .../types/sizeof/sizeof.expected | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected index 1e2963bc93b..ac55caf5a02 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.expected +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.expected @@ -1,16 +1,16 @@ -| sizeof.cpp:19:15:19:25 | sizeof(int) | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | -| sizeof.cpp:20:15:20:26 | sizeof(char) | 1 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | -| sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | -| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | +| sizeof.cpp:19:15:19:25 | sizeof(int) | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | +| sizeof.cpp:20:15:20:26 | sizeof(char) | 1 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | char | +| sizeof.cpp:21:15:21:27 | sizeof(int *) | 8 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int * | +| sizeof.cpp:22:15:22:29 | sizeof(MyClass) | 16 | SizeofOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:23:22:23:22 | i | -| sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | +| sizeof.cpp:23:15:23:23 | sizeof() | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | | sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofExprOperator.getExprOperand() | sizeof.cpp:24:22:24:22 | c | -| sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | char | +| sizeof.cpp:24:15:24:23 | sizeof() | 1 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | char | | sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofExprOperator.getExprOperand() | sizeof.cpp:25:22:25:24 | ptr | -| sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int * | +| sizeof.cpp:25:15:25:25 | sizeof() | 8 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int * | | sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofExprOperator.getExprOperand() | sizeof.cpp:26:22:26:23 | mc | -| sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofTypeOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | +| sizeof.cpp:26:15:26:24 | sizeof() | 16 | SizeofOperator.getTypeOperand() | sizeof.cpp:4:7:4:13 | MyClass | | sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofExprOperator.getExprOperand() | sizeof.cpp:27:22:27:24 | arr | -| sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int[10] | +| sizeof.cpp:27:15:27:25 | sizeof() | 40 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int[10] | | sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofExprOperator.getExprOperand() | sizeof.cpp:28:23:28:28 | access to array | -| sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofTypeOperator.getTypeOperand() | file://:0:0:0:0 | int | +| sizeof.cpp:28:16:28:29 | sizeof() | 4 | SizeofOperator.getTypeOperand() | file://:0:0:0:0 | int | From 4279a970fa8dd14b555775bbb0746feef8212d54 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 18 Nov 2025 20:03:24 +0000 Subject: [PATCH 823/965] C++: Remove unnecessary cast. --- cpp/ql/test/library-tests/types/sizeof/sizeof.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql index 46d78ebbe60..31834e0180f 100644 --- a/cpp/ql/test/library-tests/types/sizeof/sizeof.ql +++ b/cpp/ql/test/library-tests/types/sizeof/sizeof.ql @@ -3,7 +3,7 @@ import cpp from SizeofOperator sto, string elemDesc, Element e where elemDesc = "SizeofOperator.getTypeOperand()" and - e = sto.(SizeofOperator).getTypeOperand() + e = sto.getTypeOperand() or elemDesc = "SizeofExprOperator.getExprOperand()" and e = sto.(SizeofExprOperator).getExprOperand() From 702d1bbbeacb4e3999f0d4ee516d6be9b851a5e0 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 19 Nov 2025 08:05:17 +0100 Subject: [PATCH 824/965] Ripunzip: fix mac os string --- misc/ripunzip/ripunzip.bzl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index ce2dfbba785..f9046af95a0 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -6,7 +6,7 @@ def _impl(repository_ctx): repository_ctx.download_and_extract( url="%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), sha256=repository_ctx.attr.sha256_linux, - canonical_id="ripunzip-deb", + canonical_id="ripunzip-linux", output="deb", ) repository_ctx.extract( @@ -16,22 +16,26 @@ def _impl(repository_ctx): elif repository_ctx.os.name == "windows": repository_ctx.download_and_extract( url="%s/ripunzip_v%s-x86_64-pc-windows-msvc.zip" % (url_prefix, version), + canonical_id="ripunzip-windows", sha256=repository_ctx.attr.sha256_windows, output="bin", ) - elif repository_ctx.os.name == "macos": + elif repository_ctx.os.name == "mac os x": arch = repository_ctx.os.arch if arch == "x86_64": suffix = "x86_64-apple-darwin" sha256 = repository_ctx.attr.sha256_macos_intel + canonical_id = "ripunzip-macos-intel" elif arch == "aarch64": suffix = "aarch64-apple-darwin" sha256 = repository_ctx.attr.sha256_macos_arm + canonical_id = "ripunzip-macos-arm" else: fail("Unsupported macOS architecture: %s" % arch) repository_ctx.download_and_extract( url="%s/ripunzip_v%s-%s.tar.gz" % (url_prefix, version, suffix), sha256=sha256, + canonical_id=canonical_id, output="bin", ) else: From f1afe5cd9d3a30af59cba095858b535d577ac3c9 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 19 Nov 2025 08:06:17 +0100 Subject: [PATCH 825/965] Bazel: format --- MODULE.bazel | 6 +++--- misc/ripunzip/ripunzip.bzl | 40 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index a17d0bd36c4..fc6acfc1137 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -274,11 +274,11 @@ ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archi # go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s ripunzip_archive( name = "ripunzip", - version = "2.0.3", sha256_linux = "ee0e8a957687a5dc3a66b2a4b25883bf762df4c9c07f0651af527a32a405054b", - sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62", - sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64", sha256_macos_arm = "8a88eea54eac232d162a72a42065e0429b82dbf4f05e9642915dff9d7a81f846", + sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64", + sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62", + version = "2.0.3", ) register_toolchains( diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index f9046af95a0..b843cdff76b 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -4,21 +4,21 @@ def _impl(repository_ctx): build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") if repository_ctx.os.name == "linux": repository_ctx.download_and_extract( - url="%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), - sha256=repository_ctx.attr.sha256_linux, - canonical_id="ripunzip-linux", - output="deb", + url = "%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), + sha256 = repository_ctx.attr.sha256_linux, + canonical_id = "ripunzip-linux", + output = "deb", ) repository_ctx.extract( "deb/data.tar.xz", - strip_prefix="usr", + strip_prefix = "usr", ) elif repository_ctx.os.name == "windows": repository_ctx.download_and_extract( - url="%s/ripunzip_v%s-x86_64-pc-windows-msvc.zip" % (url_prefix, version), - canonical_id="ripunzip-windows", - sha256=repository_ctx.attr.sha256_windows, - output="bin", + url = "%s/ripunzip_v%s-x86_64-pc-windows-msvc.zip" % (url_prefix, version), + canonical_id = "ripunzip-windows", + sha256 = repository_ctx.attr.sha256_windows, + output = "bin", ) elif repository_ctx.os.name == "mac os x": arch = repository_ctx.os.arch @@ -33,10 +33,10 @@ def _impl(repository_ctx): else: fail("Unsupported macOS architecture: %s" % arch) repository_ctx.download_and_extract( - url="%s/ripunzip_v%s-%s.tar.gz" % (url_prefix, version, suffix), - sha256=sha256, - canonical_id=canonical_id, - output="bin", + url = "%s/ripunzip_v%s-%s.tar.gz" % (url_prefix, version, suffix), + sha256 = sha256, + canonical_id = canonical_id, + output = "bin", ) else: fail("Unsupported OS: %s" % repository_ctx.os.name) @@ -44,12 +44,12 @@ def _impl(repository_ctx): repository_ctx.symlink(build_file, "BUILD.bazel") ripunzip_archive = repository_rule( - implementation=_impl, - attrs={ - "version": attr.string(mandatory=True), - "sha256_linux": attr.string(mandatory=True), - "sha256_windows": attr.string(mandatory=True), - "sha256_macos_intel": attr.string(mandatory=True), - "sha256_macos_arm": attr.string(mandatory=True), + implementation = _impl, + attrs = { + "version": attr.string(mandatory = True), + "sha256_linux": attr.string(mandatory = True), + "sha256_windows": attr.string(mandatory = True), + "sha256_macos_intel": attr.string(mandatory = True), + "sha256_macos_arm": attr.string(mandatory = True), }, ) From 69ee9cdb9f91fdbc10f51db052dad976f7e09ce1 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 19 Nov 2025 08:12:07 +0100 Subject: [PATCH 826/965] Ripunzip: fix mac os and windows URLs --- misc/ripunzip/ripunzip.bzl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index b843cdff76b..823b563b60d 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -15,7 +15,7 @@ def _impl(repository_ctx): ) elif repository_ctx.os.name == "windows": repository_ctx.download_and_extract( - url = "%s/ripunzip_v%s-x86_64-pc-windows-msvc.zip" % (url_prefix, version), + url = "%s/ripunzip_v%s_x86_64-pc-windows-msvc.zip" % (url_prefix, version), canonical_id = "ripunzip-windows", sha256 = repository_ctx.attr.sha256_windows, output = "bin", @@ -33,7 +33,7 @@ def _impl(repository_ctx): else: fail("Unsupported macOS architecture: %s" % arch) repository_ctx.download_and_extract( - url = "%s/ripunzip_v%s-%s.tar.gz" % (url_prefix, version, suffix), + url = "%s/ripunzip_v%s_%s.tar.gz" % (url_prefix, version, suffix), sha256 = sha256, canonical_id = canonical_id, output = "bin", From 880f7b0f18d2128b2c69b15ae9e6398a6a912b20 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 29 Oct 2025 15:51:40 +0100 Subject: [PATCH 827/965] Rust: More path resolution and variable tests --- .../library-tests/path-resolution/main.rs | 44 +++ .../path-resolution/path-resolution.expected | 168 +++++---- .../test/library-tests/variables/Cfg.expected | 348 +++++++++++------- .../test/library-tests/variables/Ssa.expected | 28 ++ rust/ql/test/library-tests/variables/main.rs | 45 +++ .../variables/variables.expected | 29 ++ 6 files changed, 448 insertions(+), 214 deletions(-) diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 9e7ebf5fb17..d60f12b43d7 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -790,6 +790,49 @@ mod impl_with_attribute_macro { } // impl_with_attribute_macro::test } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { // $ item=Option $ item=i32 + let x = Some(42); // $ item=Some + let y : Option = match x { // $ item=Option $ item=i32 + Some(y) => { // $ item=Some + None // $ item=None + } + None => // $ MISSING: item=None + None // $ item=None + }; + match y { + N0ne => // local variable + N0ne + } + } // patterns::test + + #[rustfmt::skip] + fn test2() -> Option { // $ item=Option $ item=i32 + let test_alias = test; // $ item=patterns::test + let test = test_alias(); + test + } + + #[rustfmt::skip] + const z: i32 // $ item=i32 + = 0; // constz + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // $ item=Some + match x { + Some(x) // $ item=Some + => x, + _ => 0 + }; + match x { + Some(z) => z, // $ item=Some $ MISSING: item=constz + _ => 0 + }; + } +} + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -826,4 +869,5 @@ fn main() { AStruct::z_on_type(); // $ item=I124 AStruct {}.z_on_instance(); // $ item=I123 item=I125 impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test + patterns::test(); // $ item=patterns::test } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index 0ff48d11e8d..c460fea7f5b 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -32,6 +32,7 @@ mod | main.rs:629:1:697:1 | mod m24 | | main.rs:714:1:766:1 | mod associated_types | | main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:793:1:834:1 | mod patterns | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -72,7 +73,7 @@ resolvePath | main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | | main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | -| main.rs:47:9:47:13 | super | main.rs:1:1:829:2 | SourceFile | +| main.rs:47:9:47:13 | super | main.rs:1:1:873:2 | SourceFile | | main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | | main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | | main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | @@ -87,7 +88,7 @@ resolvePath | main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | | main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | | main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | -| main.rs:75:5:75:8 | self | main.rs:1:1:829:2 | SourceFile | +| main.rs:75:5:75:8 | self | main.rs:1:1:873:2 | SourceFile | | main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | | main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | @@ -109,7 +110,7 @@ resolvePath | main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:125:13:125:17 | super | main.rs:1:1:829:2 | SourceFile | +| main.rs:125:13:125:17 | super | main.rs:1:1:873:2 | SourceFile | | main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | | main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | | main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | @@ -397,77 +398,94 @@ resolvePath | main.rs:781:21:781:23 | i64 | {EXTERNAL LOCATION} | struct i64 | | main.rs:783:11:783:13 | i64 | {EXTERNAL LOCATION} | struct i64 | | main.rs:789:17:789:19 | Foo | main.rs:774:5:774:15 | struct Foo | -| main.rs:794:5:794:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:794:5:794:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:794:5:794:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:794:5:794:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:794:5:794:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:795:5:795:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:795:5:795:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:796:5:796:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:796:5:796:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:796:5:796:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:796:5:796:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:797:5:797:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:798:5:798:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:799:5:799:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:799:5:799:12 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:800:5:800:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:800:5:800:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:800:5:800:13 | ...::g | main.rs:30:9:34:9 | fn g | -| main.rs:801:5:801:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:801:5:801:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:801:5:801:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | -| main.rs:801:5:801:17 | ...::h | main.rs:37:27:41:13 | fn h | -| main.rs:802:5:802:6 | m4 | main.rs:46:1:53:1 | mod m4 | -| main.rs:802:5:802:9 | ...::i | main.rs:49:5:52:5 | fn i | -| main.rs:803:5:803:5 | h | main.rs:57:1:76:1 | fn h | -| main.rs:804:5:804:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:805:5:805:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:806:5:806:5 | j | main.rs:104:1:108:1 | fn j | -| main.rs:807:5:807:6 | m6 | main.rs:116:1:128:1 | mod m6 | -| main.rs:807:5:807:9 | ...::g | main.rs:121:5:127:5 | fn g | -| main.rs:808:5:808:6 | m7 | main.rs:130:1:149:1 | mod m7 | -| main.rs:808:5:808:9 | ...::f | main.rs:141:5:148:5 | fn f | -| main.rs:809:5:809:6 | m8 | main.rs:151:1:205:1 | mod m8 | -| main.rs:809:5:809:9 | ...::g | main.rs:189:5:204:5 | fn g | -| main.rs:810:5:810:6 | m9 | main.rs:207:1:215:1 | mod m9 | -| main.rs:810:5:810:9 | ...::f | main.rs:210:5:214:5 | fn f | -| main.rs:811:5:811:7 | m11 | main.rs:238:1:275:1 | mod m11 | -| main.rs:811:5:811:10 | ...::f | main.rs:243:5:246:5 | fn f | -| main.rs:812:5:812:7 | m15 | main.rs:306:1:375:1 | mod m15 | -| main.rs:812:5:812:10 | ...::f | main.rs:362:5:374:5 | fn f | -| main.rs:813:5:813:7 | m16 | main.rs:377:1:469:1 | mod m16 | -| main.rs:813:5:813:10 | ...::f | main.rs:444:5:468:5 | fn f | -| main.rs:814:5:814:20 | trait_visibility | main.rs:471:1:521:1 | mod trait_visibility | -| main.rs:814:5:814:23 | ...::f | main.rs:498:5:520:5 | fn f | -| main.rs:815:5:815:7 | m17 | main.rs:523:1:553:1 | mod m17 | -| main.rs:815:5:815:10 | ...::f | main.rs:547:5:552:5 | fn f | -| main.rs:816:5:816:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:816:5:816:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:817:5:817:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:817:5:817:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:818:5:818:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:818:5:818:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:819:5:819:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:820:5:820:12 | my_alias | main.rs:1:1:1:7 | mod my | -| main.rs:820:5:820:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:821:5:821:7 | m18 | main.rs:555:1:573:1 | mod m18 | -| main.rs:821:5:821:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | -| main.rs:821:5:821:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | -| main.rs:821:5:821:20 | ...::g | main.rs:566:13:570:13 | fn g | -| main.rs:822:5:822:7 | m23 | main.rs:602:1:627:1 | mod m23 | -| main.rs:822:5:822:10 | ...::f | main.rs:622:5:626:5 | fn f | -| main.rs:823:5:823:7 | m24 | main.rs:629:1:697:1 | mod m24 | -| main.rs:823:5:823:10 | ...::f | main.rs:683:5:696:5 | fn f | -| main.rs:824:5:824:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:824:5:824:11 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:825:5:825:13 | z_changed | main.rs:702:1:702:9 | fn z_changed | -| main.rs:826:5:826:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | -| main.rs:826:5:826:22 | ...::z_on_type | main.rs:708:5:708:17 | fn z_on_type | -| main.rs:827:5:827:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | -| main.rs:828:5:828:29 | impl_with_attribute_macro | main.rs:772:1:791:1 | mod impl_with_attribute_macro | -| main.rs:828:5:828:35 | ...::test | main.rs:787:5:790:5 | fn test | +| main.rs:795:22:795:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:795:29:795:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:796:17:796:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:797:17:797:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:797:24:797:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:798:13:798:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:799:17:799:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:802:17:802:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:811:19:811:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:811:26:811:28 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:812:26:812:29 | test | main.rs:794:5:808:5 | fn test | +| main.rs:818:14:818:16 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:823:17:823:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:825:13:825:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:13:830:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:837:5:837:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:837:5:837:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:837:5:837:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:837:5:837:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:837:5:837:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:838:5:838:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:838:5:838:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:839:5:839:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:839:5:839:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:839:5:839:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:839:5:839:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:840:5:840:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:841:5:841:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:842:5:842:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:842:5:842:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:843:5:843:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:843:5:843:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:843:5:843:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:844:5:844:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:844:5:844:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:844:5:844:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:844:5:844:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:845:5:845:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:845:5:845:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:846:5:846:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:847:5:847:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:848:5:848:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:849:5:849:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:850:5:850:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:850:5:850:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:851:5:851:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:851:5:851:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:852:5:852:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:852:5:852:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:853:5:853:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:853:5:853:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:854:5:854:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:854:5:854:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:855:5:855:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:855:5:855:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:856:5:856:7 | m16 | main.rs:377:1:469:1 | mod m16 | +| main.rs:856:5:856:10 | ...::f | main.rs:444:5:468:5 | fn f | +| main.rs:857:5:857:20 | trait_visibility | main.rs:471:1:521:1 | mod trait_visibility | +| main.rs:857:5:857:23 | ...::f | main.rs:498:5:520:5 | fn f | +| main.rs:858:5:858:7 | m17 | main.rs:523:1:553:1 | mod m17 | +| main.rs:858:5:858:10 | ...::f | main.rs:547:5:552:5 | fn f | +| main.rs:859:5:859:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:859:5:859:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:860:5:860:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:860:5:860:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:861:5:861:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:861:5:861:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:862:5:862:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:863:5:863:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:863:5:863:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:864:5:864:7 | m18 | main.rs:555:1:573:1 | mod m18 | +| main.rs:864:5:864:12 | ...::m19 | main.rs:560:5:572:5 | mod m19 | +| main.rs:864:5:864:17 | ...::m20 | main.rs:565:9:571:9 | mod m20 | +| main.rs:864:5:864:20 | ...::g | main.rs:566:13:570:13 | fn g | +| main.rs:865:5:865:7 | m23 | main.rs:602:1:627:1 | mod m23 | +| main.rs:865:5:865:10 | ...::f | main.rs:622:5:626:5 | fn f | +| main.rs:866:5:866:7 | m24 | main.rs:629:1:697:1 | mod m24 | +| main.rs:866:5:866:10 | ...::f | main.rs:683:5:696:5 | fn f | +| main.rs:867:5:867:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:867:5:867:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:868:5:868:13 | z_changed | main.rs:702:1:702:9 | fn z_changed | +| main.rs:869:5:869:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:869:5:869:22 | ...::z_on_type | main.rs:708:5:708:17 | fn z_on_type | +| main.rs:870:5:870:11 | AStruct | main.rs:704:1:704:17 | struct AStruct | +| main.rs:871:5:871:29 | impl_with_attribute_macro | main.rs:772:1:791:1 | mod impl_with_attribute_macro | +| main.rs:871:5:871:35 | ...::test | main.rs:787:5:790:5 | fn test | +| main.rs:872:5:872:12 | patterns | main.rs:793:1:834:1 | mod patterns | +| main.rs:872:5:872:18 | ...::test | main.rs:794:5:808:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -493,7 +511,7 @@ resolvePath | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:829:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:873:2 | SourceFile | | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 7d8da915bfb..3efada83369 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -1798,145 +1798,215 @@ edges | main.rs:753:5:753:16 | print_i64(...) | main.rs:744:18:754:1 | { ... } | | | main.rs:753:5:753:17 | ExprStmt | main.rs:753:5:753:13 | print_i64 | | | main.rs:753:15:753:15 | x | main.rs:753:5:753:16 | print_i64(...) | | -| main.rs:756:1:800:1 | enter fn main | main.rs:757:5:757:25 | ExprStmt | | -| main.rs:756:1:800:1 | exit fn main (normal) | main.rs:756:1:800:1 | exit fn main | | -| main.rs:756:11:800:1 | { ... } | main.rs:756:1:800:1 | exit fn main (normal) | | -| main.rs:757:5:757:22 | immutable_variable | main.rs:757:5:757:24 | immutable_variable(...) | | -| main.rs:757:5:757:24 | immutable_variable(...) | main.rs:758:5:758:23 | ExprStmt | | -| main.rs:757:5:757:25 | ExprStmt | main.rs:757:5:757:22 | immutable_variable | | -| main.rs:758:5:758:20 | mutable_variable | main.rs:758:5:758:22 | mutable_variable(...) | | -| main.rs:758:5:758:22 | mutable_variable(...) | main.rs:759:5:759:40 | ExprStmt | | -| main.rs:758:5:758:23 | ExprStmt | main.rs:758:5:758:20 | mutable_variable | | -| main.rs:759:5:759:37 | mutable_variable_immutable_borrow | main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | main.rs:760:5:760:23 | ExprStmt | | -| main.rs:759:5:759:40 | ExprStmt | main.rs:759:5:759:37 | mutable_variable_immutable_borrow | | -| main.rs:760:5:760:20 | variable_shadow1 | main.rs:760:5:760:22 | variable_shadow1(...) | | -| main.rs:760:5:760:22 | variable_shadow1(...) | main.rs:761:5:761:23 | ExprStmt | | -| main.rs:760:5:760:23 | ExprStmt | main.rs:760:5:760:20 | variable_shadow1 | | -| main.rs:761:5:761:20 | variable_shadow2 | main.rs:761:5:761:22 | variable_shadow2(...) | | -| main.rs:761:5:761:22 | variable_shadow2(...) | main.rs:762:5:762:19 | ExprStmt | | -| main.rs:761:5:761:23 | ExprStmt | main.rs:761:5:761:20 | variable_shadow2 | | -| main.rs:762:5:762:16 | let_pattern1 | main.rs:762:5:762:18 | let_pattern1(...) | | -| main.rs:762:5:762:18 | let_pattern1(...) | main.rs:763:5:763:19 | ExprStmt | | -| main.rs:762:5:762:19 | ExprStmt | main.rs:762:5:762:16 | let_pattern1 | | -| main.rs:763:5:763:16 | let_pattern2 | main.rs:763:5:763:18 | let_pattern2(...) | | -| main.rs:763:5:763:18 | let_pattern2(...) | main.rs:764:5:764:19 | ExprStmt | | -| main.rs:763:5:763:19 | ExprStmt | main.rs:763:5:763:16 | let_pattern2 | | -| main.rs:764:5:764:16 | let_pattern3 | main.rs:764:5:764:18 | let_pattern3(...) | | -| main.rs:764:5:764:18 | let_pattern3(...) | main.rs:765:5:765:19 | ExprStmt | | -| main.rs:764:5:764:19 | ExprStmt | main.rs:764:5:764:16 | let_pattern3 | | -| main.rs:765:5:765:16 | let_pattern4 | main.rs:765:5:765:18 | let_pattern4(...) | | -| main.rs:765:5:765:18 | let_pattern4(...) | main.rs:766:5:766:21 | ExprStmt | | -| main.rs:765:5:765:19 | ExprStmt | main.rs:765:5:765:16 | let_pattern4 | | -| main.rs:766:5:766:18 | match_pattern1 | main.rs:766:5:766:20 | match_pattern1(...) | | -| main.rs:766:5:766:20 | match_pattern1(...) | main.rs:767:5:767:21 | ExprStmt | | -| main.rs:766:5:766:21 | ExprStmt | main.rs:766:5:766:18 | match_pattern1 | | -| main.rs:767:5:767:18 | match_pattern2 | main.rs:767:5:767:20 | match_pattern2(...) | | -| main.rs:767:5:767:20 | match_pattern2(...) | main.rs:768:5:768:21 | ExprStmt | | -| main.rs:767:5:767:21 | ExprStmt | main.rs:767:5:767:18 | match_pattern2 | | -| main.rs:768:5:768:18 | match_pattern3 | main.rs:768:5:768:20 | match_pattern3(...) | | -| main.rs:768:5:768:20 | match_pattern3(...) | main.rs:769:5:769:21 | ExprStmt | | -| main.rs:768:5:768:21 | ExprStmt | main.rs:768:5:768:18 | match_pattern3 | | -| main.rs:769:5:769:18 | match_pattern4 | main.rs:769:5:769:20 | match_pattern4(...) | | -| main.rs:769:5:769:20 | match_pattern4(...) | main.rs:770:5:770:21 | ExprStmt | | -| main.rs:769:5:769:21 | ExprStmt | main.rs:769:5:769:18 | match_pattern4 | | -| main.rs:770:5:770:18 | match_pattern5 | main.rs:770:5:770:20 | match_pattern5(...) | | -| main.rs:770:5:770:20 | match_pattern5(...) | main.rs:771:5:771:21 | ExprStmt | | -| main.rs:770:5:770:21 | ExprStmt | main.rs:770:5:770:18 | match_pattern5 | | -| main.rs:771:5:771:18 | match_pattern6 | main.rs:771:5:771:20 | match_pattern6(...) | | -| main.rs:771:5:771:20 | match_pattern6(...) | main.rs:772:5:772:21 | ExprStmt | | -| main.rs:771:5:771:21 | ExprStmt | main.rs:771:5:771:18 | match_pattern6 | | -| main.rs:772:5:772:18 | match_pattern7 | main.rs:772:5:772:20 | match_pattern7(...) | | -| main.rs:772:5:772:20 | match_pattern7(...) | main.rs:773:5:773:21 | ExprStmt | | -| main.rs:772:5:772:21 | ExprStmt | main.rs:772:5:772:18 | match_pattern7 | | -| main.rs:773:5:773:18 | match_pattern8 | main.rs:773:5:773:20 | match_pattern8(...) | | -| main.rs:773:5:773:20 | match_pattern8(...) | main.rs:774:5:774:21 | ExprStmt | | -| main.rs:773:5:773:21 | ExprStmt | main.rs:773:5:773:18 | match_pattern8 | | -| main.rs:774:5:774:18 | match_pattern9 | main.rs:774:5:774:20 | match_pattern9(...) | | -| main.rs:774:5:774:20 | match_pattern9(...) | main.rs:775:5:775:22 | ExprStmt | | -| main.rs:774:5:774:21 | ExprStmt | main.rs:774:5:774:18 | match_pattern9 | | -| main.rs:775:5:775:19 | match_pattern10 | main.rs:775:5:775:21 | match_pattern10(...) | | -| main.rs:775:5:775:21 | match_pattern10(...) | main.rs:776:5:776:22 | ExprStmt | | -| main.rs:775:5:775:22 | ExprStmt | main.rs:775:5:775:19 | match_pattern10 | | -| main.rs:776:5:776:19 | match_pattern11 | main.rs:776:5:776:21 | match_pattern11(...) | | -| main.rs:776:5:776:21 | match_pattern11(...) | main.rs:777:5:777:22 | ExprStmt | | -| main.rs:776:5:776:22 | ExprStmt | main.rs:776:5:776:19 | match_pattern11 | | -| main.rs:777:5:777:19 | match_pattern12 | main.rs:777:5:777:21 | match_pattern12(...) | | -| main.rs:777:5:777:21 | match_pattern12(...) | main.rs:778:5:778:22 | ExprStmt | | -| main.rs:777:5:777:22 | ExprStmt | main.rs:777:5:777:19 | match_pattern12 | | -| main.rs:778:5:778:19 | match_pattern13 | main.rs:778:5:778:21 | match_pattern13(...) | | -| main.rs:778:5:778:21 | match_pattern13(...) | main.rs:779:5:779:22 | ExprStmt | | -| main.rs:778:5:778:22 | ExprStmt | main.rs:778:5:778:19 | match_pattern13 | | -| main.rs:779:5:779:19 | match_pattern14 | main.rs:779:5:779:21 | match_pattern14(...) | | -| main.rs:779:5:779:21 | match_pattern14(...) | main.rs:780:5:780:22 | ExprStmt | | -| main.rs:779:5:779:22 | ExprStmt | main.rs:779:5:779:19 | match_pattern14 | | -| main.rs:780:5:780:19 | match_pattern15 | main.rs:780:5:780:21 | match_pattern15(...) | | -| main.rs:780:5:780:21 | match_pattern15(...) | main.rs:781:5:781:22 | ExprStmt | | -| main.rs:780:5:780:22 | ExprStmt | main.rs:780:5:780:19 | match_pattern15 | | -| main.rs:781:5:781:19 | match_pattern16 | main.rs:781:5:781:21 | match_pattern16(...) | | -| main.rs:781:5:781:21 | match_pattern16(...) | main.rs:782:5:782:36 | ExprStmt | | -| main.rs:781:5:781:22 | ExprStmt | main.rs:781:5:781:19 | match_pattern16 | | -| main.rs:782:5:782:18 | param_pattern1 | main.rs:782:20:782:22 | "a" | | -| main.rs:782:5:782:35 | param_pattern1(...) | main.rs:783:5:783:37 | ExprStmt | | -| main.rs:782:5:782:36 | ExprStmt | main.rs:782:5:782:18 | param_pattern1 | | -| main.rs:782:20:782:22 | "a" | main.rs:782:26:782:28 | "b" | | -| main.rs:782:25:782:34 | TupleExpr | main.rs:782:5:782:35 | param_pattern1(...) | | -| main.rs:782:26:782:28 | "b" | main.rs:782:31:782:33 | "c" | | -| main.rs:782:31:782:33 | "c" | main.rs:782:25:782:34 | TupleExpr | | -| main.rs:783:5:783:18 | param_pattern2 | main.rs:783:20:783:31 | ...::Left | | -| main.rs:783:5:783:36 | param_pattern2(...) | main.rs:784:5:784:26 | ExprStmt | | -| main.rs:783:5:783:37 | ExprStmt | main.rs:783:5:783:18 | param_pattern2 | | -| main.rs:783:20:783:31 | ...::Left | main.rs:783:33:783:34 | 45 | | -| main.rs:783:20:783:35 | ...::Left(...) | main.rs:783:5:783:36 | param_pattern2(...) | | -| main.rs:783:33:783:34 | 45 | main.rs:783:20:783:35 | ...::Left(...) | | -| main.rs:784:5:784:23 | destruct_assignment | main.rs:784:5:784:25 | destruct_assignment(...) | | -| main.rs:784:5:784:25 | destruct_assignment(...) | main.rs:785:5:785:23 | ExprStmt | | -| main.rs:784:5:784:26 | ExprStmt | main.rs:784:5:784:23 | destruct_assignment | | -| main.rs:785:5:785:20 | closure_variable | main.rs:785:5:785:22 | closure_variable(...) | | -| main.rs:785:5:785:22 | closure_variable(...) | main.rs:786:5:786:22 | ExprStmt | | -| main.rs:785:5:785:23 | ExprStmt | main.rs:785:5:785:20 | closure_variable | | -| main.rs:786:5:786:19 | nested_function | main.rs:786:5:786:21 | nested_function(...) | | -| main.rs:786:5:786:21 | nested_function(...) | main.rs:787:5:787:19 | ExprStmt | | -| main.rs:786:5:786:22 | ExprStmt | main.rs:786:5:786:19 | nested_function | | -| main.rs:787:5:787:16 | for_variable | main.rs:787:5:787:18 | for_variable(...) | | -| main.rs:787:5:787:18 | for_variable(...) | main.rs:788:5:788:17 | ExprStmt | | -| main.rs:787:5:787:19 | ExprStmt | main.rs:787:5:787:16 | for_variable | | -| main.rs:788:5:788:14 | add_assign | main.rs:788:5:788:16 | add_assign(...) | | -| main.rs:788:5:788:16 | add_assign(...) | main.rs:789:5:789:13 | ExprStmt | | -| main.rs:788:5:788:17 | ExprStmt | main.rs:788:5:788:14 | add_assign | | -| main.rs:789:5:789:10 | mutate | main.rs:789:5:789:12 | mutate(...) | | -| main.rs:789:5:789:12 | mutate(...) | main.rs:790:5:790:17 | ExprStmt | | -| main.rs:789:5:789:13 | ExprStmt | main.rs:789:5:789:10 | mutate | | -| main.rs:790:5:790:14 | mutate_arg | main.rs:790:5:790:16 | mutate_arg(...) | | -| main.rs:790:5:790:16 | mutate_arg(...) | main.rs:791:5:791:12 | ExprStmt | | -| main.rs:790:5:790:17 | ExprStmt | main.rs:790:5:790:14 | mutate_arg | | -| main.rs:791:5:791:9 | alias | main.rs:791:5:791:11 | alias(...) | | -| main.rs:791:5:791:11 | alias(...) | main.rs:792:5:792:18 | ExprStmt | | -| main.rs:791:5:791:12 | ExprStmt | main.rs:791:5:791:9 | alias | | -| main.rs:792:5:792:15 | capture_mut | main.rs:792:5:792:17 | capture_mut(...) | | -| main.rs:792:5:792:17 | capture_mut(...) | main.rs:793:5:793:20 | ExprStmt | | -| main.rs:792:5:792:18 | ExprStmt | main.rs:792:5:792:15 | capture_mut | | -| main.rs:793:5:793:17 | capture_immut | main.rs:793:5:793:19 | capture_immut(...) | | -| main.rs:793:5:793:19 | capture_immut(...) | main.rs:794:5:794:26 | ExprStmt | | -| main.rs:793:5:793:20 | ExprStmt | main.rs:793:5:793:17 | capture_immut | | -| main.rs:794:5:794:23 | async_block_capture | main.rs:794:5:794:25 | async_block_capture(...) | | -| main.rs:794:5:794:25 | async_block_capture(...) | main.rs:795:5:795:14 | ExprStmt | | -| main.rs:794:5:794:26 | ExprStmt | main.rs:794:5:794:23 | async_block_capture | | -| main.rs:795:5:795:11 | structs | main.rs:795:5:795:13 | structs(...) | | -| main.rs:795:5:795:13 | structs(...) | main.rs:796:5:796:14 | ExprStmt | | -| main.rs:795:5:795:14 | ExprStmt | main.rs:795:5:795:11 | structs | | -| main.rs:796:5:796:11 | ref_arg | main.rs:796:5:796:13 | ref_arg(...) | | -| main.rs:796:5:796:13 | ref_arg(...) | main.rs:797:5:797:30 | ExprStmt | | -| main.rs:796:5:796:14 | ExprStmt | main.rs:796:5:796:11 | ref_arg | | -| main.rs:797:5:797:27 | ref_methodcall_receiver | main.rs:797:5:797:29 | ref_methodcall_receiver(...) | | -| main.rs:797:5:797:29 | ref_methodcall_receiver(...) | main.rs:798:5:798:23 | ExprStmt | | -| main.rs:797:5:797:30 | ExprStmt | main.rs:797:5:797:27 | ref_methodcall_receiver | | -| main.rs:798:5:798:20 | macro_invocation | main.rs:798:5:798:22 | macro_invocation(...) | | -| main.rs:798:5:798:22 | macro_invocation(...) | main.rs:799:5:799:18 | ExprStmt | | -| main.rs:798:5:798:23 | ExprStmt | main.rs:798:5:798:20 | macro_invocation | | -| main.rs:799:5:799:15 | capture_phi | main.rs:799:5:799:17 | capture_phi(...) | | -| main.rs:799:5:799:17 | capture_phi(...) | main.rs:756:11:800:1 | { ... } | | -| main.rs:799:5:799:18 | ExprStmt | main.rs:799:5:799:15 | capture_phi | | +| main.rs:757:5:772:5 | enter fn test | main.rs:759:9:759:25 | let ... = ... | | +| main.rs:757:5:772:5 | exit fn test (normal) | main.rs:757:5:772:5 | exit fn test | | +| main.rs:758:34:772:5 | { ... } | main.rs:757:5:772:5 | exit fn test (normal) | | +| main.rs:759:9:759:25 | let ... = ... | main.rs:759:17:759:20 | Some | | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | | +| main.rs:759:13:759:13 | x | main.rs:760:9:767:10 | let ... = ... | match | +| main.rs:759:17:759:20 | Some | main.rs:759:22:759:23 | 42 | | +| main.rs:759:17:759:24 | Some(...) | main.rs:759:13:759:13 | x | | +| main.rs:759:22:759:23 | 42 | main.rs:759:17:759:24 | Some(...) | | +| main.rs:760:9:767:10 | let ... = ... | main.rs:761:19:761:19 | x | | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | | +| main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | match | +| main.rs:761:13:767:9 | match x { ... } | main.rs:760:13:760:13 | y | | +| main.rs:761:19:761:19 | x | main.rs:762:13:762:19 | Some(...) | | +| main.rs:762:13:762:19 | Some(...) | main.rs:762:18:762:18 | y | match | +| main.rs:762:13:762:19 | Some(...) | main.rs:765:13:765:16 | None | no-match | +| main.rs:762:18:762:18 | y | main.rs:762:18:762:18 | y | | +| main.rs:762:18:762:18 | y | main.rs:763:17:763:20 | None | match | +| main.rs:762:24:764:13 | { ... } | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:763:17:763:20 | None | main.rs:762:24:764:13 | { ... } | | +| main.rs:765:13:765:16 | None | main.rs:765:13:765:16 | None | | +| main.rs:765:13:765:16 | None | main.rs:766:17:766:20 | None | match | +| main.rs:766:17:766:20 | None | main.rs:761:13:767:9 | match x { ... } | | +| main.rs:768:9:771:9 | match y { ... } | main.rs:758:34:772:5 | { ... } | | +| main.rs:768:15:768:15 | y | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | | +| main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | match | +| main.rs:770:17:770:20 | N0ne | main.rs:768:9:771:9 | match y { ... } | | +| main.rs:774:5:781:5 | enter fn test2 | main.rs:776:9:777:17 | let ... = test | | +| main.rs:774:5:781:5 | exit fn test2 (normal) | main.rs:774:5:781:5 | exit fn test2 | | +| main.rs:775:31:781:5 | { ... } | main.rs:774:5:781:5 | exit fn test2 (normal) | | +| main.rs:776:9:777:17 | let ... = test | main.rs:777:13:777:16 | test | | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | | +| main.rs:776:13:776:22 | test_alias | main.rs:778:9:779:25 | let ... = ... | match | +| main.rs:777:13:777:16 | test | main.rs:776:13:776:22 | test_alias | | +| main.rs:778:9:779:25 | let ... = ... | main.rs:779:13:779:22 | test_alias | | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | | +| main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | match | +| main.rs:779:13:779:22 | test_alias | main.rs:779:13:779:24 | test_alias(...) | | +| main.rs:779:13:779:24 | test_alias(...) | main.rs:778:13:778:16 | test | | +| main.rs:780:9:780:12 | test | main.rs:775:31:781:5 | { ... } | | +| main.rs:785:5:798:5 | enter fn test3 | main.rs:787:9:787:24 | let ... = ... | | +| main.rs:785:5:798:5 | exit fn test3 (normal) | main.rs:785:5:798:5 | exit fn test3 | | +| main.rs:786:16:798:5 | { ... } | main.rs:785:5:798:5 | exit fn test3 (normal) | | +| main.rs:787:9:787:24 | let ... = ... | main.rs:787:17:787:20 | Some | | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | | +| main.rs:787:13:787:13 | x | main.rs:788:9:792:10 | ExprStmt | match | +| main.rs:787:17:787:20 | Some | main.rs:787:22:787:22 | 0 | | +| main.rs:787:17:787:23 | Some(...) | main.rs:787:13:787:13 | x | | +| main.rs:787:22:787:22 | 0 | main.rs:787:17:787:23 | Some(...) | | +| main.rs:788:9:792:9 | match x { ... } | main.rs:793:9:797:10 | ExprStmt | | +| main.rs:788:9:792:10 | ExprStmt | main.rs:788:15:788:15 | x | | +| main.rs:788:15:788:15 | x | main.rs:789:13:789:19 | Some(...) | | +| main.rs:789:13:789:19 | Some(...) | main.rs:789:18:789:18 | x | match | +| main.rs:789:13:789:19 | Some(...) | main.rs:791:13:791:13 | _ | no-match | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | | +| main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | match | +| main.rs:790:20:790:20 | x | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:791:13:791:13 | _ | main.rs:791:18:791:18 | 0 | match | +| main.rs:791:18:791:18 | 0 | main.rs:788:9:792:9 | match x { ... } | | +| main.rs:793:9:797:9 | match x { ... } | main.rs:786:16:798:5 | { ... } | | +| main.rs:793:9:797:10 | ExprStmt | main.rs:793:15:793:15 | x | | +| main.rs:793:15:793:15 | x | main.rs:794:13:794:19 | Some(...) | | +| main.rs:794:13:794:19 | Some(...) | main.rs:794:18:794:18 | z | match | +| main.rs:794:13:794:19 | Some(...) | main.rs:796:13:796:13 | _ | no-match | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | | +| main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | match | +| main.rs:795:17:795:17 | z | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:796:13:796:13 | _ | main.rs:796:18:796:18 | 0 | match | +| main.rs:796:18:796:18 | 0 | main.rs:793:9:797:9 | match x { ... } | | +| main.rs:801:1:845:1 | enter fn main | main.rs:802:5:802:25 | ExprStmt | | +| main.rs:801:1:845:1 | exit fn main (normal) | main.rs:801:1:845:1 | exit fn main | | +| main.rs:801:11:845:1 | { ... } | main.rs:801:1:845:1 | exit fn main (normal) | | +| main.rs:802:5:802:22 | immutable_variable | main.rs:802:5:802:24 | immutable_variable(...) | | +| main.rs:802:5:802:24 | immutable_variable(...) | main.rs:803:5:803:23 | ExprStmt | | +| main.rs:802:5:802:25 | ExprStmt | main.rs:802:5:802:22 | immutable_variable | | +| main.rs:803:5:803:20 | mutable_variable | main.rs:803:5:803:22 | mutable_variable(...) | | +| main.rs:803:5:803:22 | mutable_variable(...) | main.rs:804:5:804:40 | ExprStmt | | +| main.rs:803:5:803:23 | ExprStmt | main.rs:803:5:803:20 | mutable_variable | | +| main.rs:804:5:804:37 | mutable_variable_immutable_borrow | main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:804:5:804:39 | mutable_variable_immutable_borrow(...) | main.rs:805:5:805:23 | ExprStmt | | +| main.rs:804:5:804:40 | ExprStmt | main.rs:804:5:804:37 | mutable_variable_immutable_borrow | | +| main.rs:805:5:805:20 | variable_shadow1 | main.rs:805:5:805:22 | variable_shadow1(...) | | +| main.rs:805:5:805:22 | variable_shadow1(...) | main.rs:806:5:806:23 | ExprStmt | | +| main.rs:805:5:805:23 | ExprStmt | main.rs:805:5:805:20 | variable_shadow1 | | +| main.rs:806:5:806:20 | variable_shadow2 | main.rs:806:5:806:22 | variable_shadow2(...) | | +| main.rs:806:5:806:22 | variable_shadow2(...) | main.rs:807:5:807:19 | ExprStmt | | +| main.rs:806:5:806:23 | ExprStmt | main.rs:806:5:806:20 | variable_shadow2 | | +| main.rs:807:5:807:16 | let_pattern1 | main.rs:807:5:807:18 | let_pattern1(...) | | +| main.rs:807:5:807:18 | let_pattern1(...) | main.rs:808:5:808:19 | ExprStmt | | +| main.rs:807:5:807:19 | ExprStmt | main.rs:807:5:807:16 | let_pattern1 | | +| main.rs:808:5:808:16 | let_pattern2 | main.rs:808:5:808:18 | let_pattern2(...) | | +| main.rs:808:5:808:18 | let_pattern2(...) | main.rs:809:5:809:19 | ExprStmt | | +| main.rs:808:5:808:19 | ExprStmt | main.rs:808:5:808:16 | let_pattern2 | | +| main.rs:809:5:809:16 | let_pattern3 | main.rs:809:5:809:18 | let_pattern3(...) | | +| main.rs:809:5:809:18 | let_pattern3(...) | main.rs:810:5:810:19 | ExprStmt | | +| main.rs:809:5:809:19 | ExprStmt | main.rs:809:5:809:16 | let_pattern3 | | +| main.rs:810:5:810:16 | let_pattern4 | main.rs:810:5:810:18 | let_pattern4(...) | | +| main.rs:810:5:810:18 | let_pattern4(...) | main.rs:811:5:811:21 | ExprStmt | | +| main.rs:810:5:810:19 | ExprStmt | main.rs:810:5:810:16 | let_pattern4 | | +| main.rs:811:5:811:18 | match_pattern1 | main.rs:811:5:811:20 | match_pattern1(...) | | +| main.rs:811:5:811:20 | match_pattern1(...) | main.rs:812:5:812:21 | ExprStmt | | +| main.rs:811:5:811:21 | ExprStmt | main.rs:811:5:811:18 | match_pattern1 | | +| main.rs:812:5:812:18 | match_pattern2 | main.rs:812:5:812:20 | match_pattern2(...) | | +| main.rs:812:5:812:20 | match_pattern2(...) | main.rs:813:5:813:21 | ExprStmt | | +| main.rs:812:5:812:21 | ExprStmt | main.rs:812:5:812:18 | match_pattern2 | | +| main.rs:813:5:813:18 | match_pattern3 | main.rs:813:5:813:20 | match_pattern3(...) | | +| main.rs:813:5:813:20 | match_pattern3(...) | main.rs:814:5:814:21 | ExprStmt | | +| main.rs:813:5:813:21 | ExprStmt | main.rs:813:5:813:18 | match_pattern3 | | +| main.rs:814:5:814:18 | match_pattern4 | main.rs:814:5:814:20 | match_pattern4(...) | | +| main.rs:814:5:814:20 | match_pattern4(...) | main.rs:815:5:815:21 | ExprStmt | | +| main.rs:814:5:814:21 | ExprStmt | main.rs:814:5:814:18 | match_pattern4 | | +| main.rs:815:5:815:18 | match_pattern5 | main.rs:815:5:815:20 | match_pattern5(...) | | +| main.rs:815:5:815:20 | match_pattern5(...) | main.rs:816:5:816:21 | ExprStmt | | +| main.rs:815:5:815:21 | ExprStmt | main.rs:815:5:815:18 | match_pattern5 | | +| main.rs:816:5:816:18 | match_pattern6 | main.rs:816:5:816:20 | match_pattern6(...) | | +| main.rs:816:5:816:20 | match_pattern6(...) | main.rs:817:5:817:21 | ExprStmt | | +| main.rs:816:5:816:21 | ExprStmt | main.rs:816:5:816:18 | match_pattern6 | | +| main.rs:817:5:817:18 | match_pattern7 | main.rs:817:5:817:20 | match_pattern7(...) | | +| main.rs:817:5:817:20 | match_pattern7(...) | main.rs:818:5:818:21 | ExprStmt | | +| main.rs:817:5:817:21 | ExprStmt | main.rs:817:5:817:18 | match_pattern7 | | +| main.rs:818:5:818:18 | match_pattern8 | main.rs:818:5:818:20 | match_pattern8(...) | | +| main.rs:818:5:818:20 | match_pattern8(...) | main.rs:819:5:819:21 | ExprStmt | | +| main.rs:818:5:818:21 | ExprStmt | main.rs:818:5:818:18 | match_pattern8 | | +| main.rs:819:5:819:18 | match_pattern9 | main.rs:819:5:819:20 | match_pattern9(...) | | +| main.rs:819:5:819:20 | match_pattern9(...) | main.rs:820:5:820:22 | ExprStmt | | +| main.rs:819:5:819:21 | ExprStmt | main.rs:819:5:819:18 | match_pattern9 | | +| main.rs:820:5:820:19 | match_pattern10 | main.rs:820:5:820:21 | match_pattern10(...) | | +| main.rs:820:5:820:21 | match_pattern10(...) | main.rs:821:5:821:22 | ExprStmt | | +| main.rs:820:5:820:22 | ExprStmt | main.rs:820:5:820:19 | match_pattern10 | | +| main.rs:821:5:821:19 | match_pattern11 | main.rs:821:5:821:21 | match_pattern11(...) | | +| main.rs:821:5:821:21 | match_pattern11(...) | main.rs:822:5:822:22 | ExprStmt | | +| main.rs:821:5:821:22 | ExprStmt | main.rs:821:5:821:19 | match_pattern11 | | +| main.rs:822:5:822:19 | match_pattern12 | main.rs:822:5:822:21 | match_pattern12(...) | | +| main.rs:822:5:822:21 | match_pattern12(...) | main.rs:823:5:823:22 | ExprStmt | | +| main.rs:822:5:822:22 | ExprStmt | main.rs:822:5:822:19 | match_pattern12 | | +| main.rs:823:5:823:19 | match_pattern13 | main.rs:823:5:823:21 | match_pattern13(...) | | +| main.rs:823:5:823:21 | match_pattern13(...) | main.rs:824:5:824:22 | ExprStmt | | +| main.rs:823:5:823:22 | ExprStmt | main.rs:823:5:823:19 | match_pattern13 | | +| main.rs:824:5:824:19 | match_pattern14 | main.rs:824:5:824:21 | match_pattern14(...) | | +| main.rs:824:5:824:21 | match_pattern14(...) | main.rs:825:5:825:22 | ExprStmt | | +| main.rs:824:5:824:22 | ExprStmt | main.rs:824:5:824:19 | match_pattern14 | | +| main.rs:825:5:825:19 | match_pattern15 | main.rs:825:5:825:21 | match_pattern15(...) | | +| main.rs:825:5:825:21 | match_pattern15(...) | main.rs:826:5:826:22 | ExprStmt | | +| main.rs:825:5:825:22 | ExprStmt | main.rs:825:5:825:19 | match_pattern15 | | +| main.rs:826:5:826:19 | match_pattern16 | main.rs:826:5:826:21 | match_pattern16(...) | | +| main.rs:826:5:826:21 | match_pattern16(...) | main.rs:827:5:827:36 | ExprStmt | | +| main.rs:826:5:826:22 | ExprStmt | main.rs:826:5:826:19 | match_pattern16 | | +| main.rs:827:5:827:18 | param_pattern1 | main.rs:827:20:827:22 | "a" | | +| main.rs:827:5:827:35 | param_pattern1(...) | main.rs:828:5:828:37 | ExprStmt | | +| main.rs:827:5:827:36 | ExprStmt | main.rs:827:5:827:18 | param_pattern1 | | +| main.rs:827:20:827:22 | "a" | main.rs:827:26:827:28 | "b" | | +| main.rs:827:25:827:34 | TupleExpr | main.rs:827:5:827:35 | param_pattern1(...) | | +| main.rs:827:26:827:28 | "b" | main.rs:827:31:827:33 | "c" | | +| main.rs:827:31:827:33 | "c" | main.rs:827:25:827:34 | TupleExpr | | +| main.rs:828:5:828:18 | param_pattern2 | main.rs:828:20:828:31 | ...::Left | | +| main.rs:828:5:828:36 | param_pattern2(...) | main.rs:829:5:829:26 | ExprStmt | | +| main.rs:828:5:828:37 | ExprStmt | main.rs:828:5:828:18 | param_pattern2 | | +| main.rs:828:20:828:31 | ...::Left | main.rs:828:33:828:34 | 45 | | +| main.rs:828:20:828:35 | ...::Left(...) | main.rs:828:5:828:36 | param_pattern2(...) | | +| main.rs:828:33:828:34 | 45 | main.rs:828:20:828:35 | ...::Left(...) | | +| main.rs:829:5:829:23 | destruct_assignment | main.rs:829:5:829:25 | destruct_assignment(...) | | +| main.rs:829:5:829:25 | destruct_assignment(...) | main.rs:830:5:830:23 | ExprStmt | | +| main.rs:829:5:829:26 | ExprStmt | main.rs:829:5:829:23 | destruct_assignment | | +| main.rs:830:5:830:20 | closure_variable | main.rs:830:5:830:22 | closure_variable(...) | | +| main.rs:830:5:830:22 | closure_variable(...) | main.rs:831:5:831:22 | ExprStmt | | +| main.rs:830:5:830:23 | ExprStmt | main.rs:830:5:830:20 | closure_variable | | +| main.rs:831:5:831:19 | nested_function | main.rs:831:5:831:21 | nested_function(...) | | +| main.rs:831:5:831:21 | nested_function(...) | main.rs:832:5:832:19 | ExprStmt | | +| main.rs:831:5:831:22 | ExprStmt | main.rs:831:5:831:19 | nested_function | | +| main.rs:832:5:832:16 | for_variable | main.rs:832:5:832:18 | for_variable(...) | | +| main.rs:832:5:832:18 | for_variable(...) | main.rs:833:5:833:17 | ExprStmt | | +| main.rs:832:5:832:19 | ExprStmt | main.rs:832:5:832:16 | for_variable | | +| main.rs:833:5:833:14 | add_assign | main.rs:833:5:833:16 | add_assign(...) | | +| main.rs:833:5:833:16 | add_assign(...) | main.rs:834:5:834:13 | ExprStmt | | +| main.rs:833:5:833:17 | ExprStmt | main.rs:833:5:833:14 | add_assign | | +| main.rs:834:5:834:10 | mutate | main.rs:834:5:834:12 | mutate(...) | | +| main.rs:834:5:834:12 | mutate(...) | main.rs:835:5:835:17 | ExprStmt | | +| main.rs:834:5:834:13 | ExprStmt | main.rs:834:5:834:10 | mutate | | +| main.rs:835:5:835:14 | mutate_arg | main.rs:835:5:835:16 | mutate_arg(...) | | +| main.rs:835:5:835:16 | mutate_arg(...) | main.rs:836:5:836:12 | ExprStmt | | +| main.rs:835:5:835:17 | ExprStmt | main.rs:835:5:835:14 | mutate_arg | | +| main.rs:836:5:836:9 | alias | main.rs:836:5:836:11 | alias(...) | | +| main.rs:836:5:836:11 | alias(...) | main.rs:837:5:837:18 | ExprStmt | | +| main.rs:836:5:836:12 | ExprStmt | main.rs:836:5:836:9 | alias | | +| main.rs:837:5:837:15 | capture_mut | main.rs:837:5:837:17 | capture_mut(...) | | +| main.rs:837:5:837:17 | capture_mut(...) | main.rs:838:5:838:20 | ExprStmt | | +| main.rs:837:5:837:18 | ExprStmt | main.rs:837:5:837:15 | capture_mut | | +| main.rs:838:5:838:17 | capture_immut | main.rs:838:5:838:19 | capture_immut(...) | | +| main.rs:838:5:838:19 | capture_immut(...) | main.rs:839:5:839:26 | ExprStmt | | +| main.rs:838:5:838:20 | ExprStmt | main.rs:838:5:838:17 | capture_immut | | +| main.rs:839:5:839:23 | async_block_capture | main.rs:839:5:839:25 | async_block_capture(...) | | +| main.rs:839:5:839:25 | async_block_capture(...) | main.rs:840:5:840:14 | ExprStmt | | +| main.rs:839:5:839:26 | ExprStmt | main.rs:839:5:839:23 | async_block_capture | | +| main.rs:840:5:840:11 | structs | main.rs:840:5:840:13 | structs(...) | | +| main.rs:840:5:840:13 | structs(...) | main.rs:841:5:841:14 | ExprStmt | | +| main.rs:840:5:840:14 | ExprStmt | main.rs:840:5:840:11 | structs | | +| main.rs:841:5:841:11 | ref_arg | main.rs:841:5:841:13 | ref_arg(...) | | +| main.rs:841:5:841:13 | ref_arg(...) | main.rs:842:5:842:30 | ExprStmt | | +| main.rs:841:5:841:14 | ExprStmt | main.rs:841:5:841:11 | ref_arg | | +| main.rs:842:5:842:27 | ref_methodcall_receiver | main.rs:842:5:842:29 | ref_methodcall_receiver(...) | | +| main.rs:842:5:842:29 | ref_methodcall_receiver(...) | main.rs:843:5:843:23 | ExprStmt | | +| main.rs:842:5:842:30 | ExprStmt | main.rs:842:5:842:27 | ref_methodcall_receiver | | +| main.rs:843:5:843:20 | macro_invocation | main.rs:843:5:843:22 | macro_invocation(...) | | +| main.rs:843:5:843:22 | macro_invocation(...) | main.rs:844:5:844:18 | ExprStmt | | +| main.rs:843:5:843:23 | ExprStmt | main.rs:843:5:843:20 | macro_invocation | | +| main.rs:844:5:844:15 | capture_phi | main.rs:844:5:844:17 | capture_phi(...) | | +| main.rs:844:5:844:17 | capture_phi(...) | main.rs:801:11:845:1 | { ... } | | +| main.rs:844:5:844:18 | ExprStmt | main.rs:844:5:844:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 35adac47802..e6075a0cb3f 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -196,6 +196,13 @@ definition | main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | | main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -404,6 +411,14 @@ read | main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | | main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:793:15:793:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -570,6 +585,13 @@ firstRead | main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | | main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | +| main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | +| main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | +| main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | +| main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | +| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -616,6 +638,7 @@ adjacentReads | main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | main.rs:678:5:678:5 | a | | main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | main.rs:679:15:679:15 | a | | main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | main.rs:687:15:687:15 | x | +| main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | main.rs:793:15:793:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -773,3 +796,8 @@ assigns | main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | | main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | | main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index cdfe1091ee3..b8a3187421f 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -753,6 +753,51 @@ fn capture_phi() { print_i64(x); // $ read_access=x } +mod patterns { + #[rustfmt::skip] + pub fn test() -> Option { + let x = Some(42); // x + let y : Option = // y1 + match x { // $ read_access=x + Some(y) => { // y2 + None + } + None => + None + }; + match y { // $ read_access=y1 + N0ne => // n0ne + N0ne // $ MISSING: read_access=n0ne + } + } + + #[rustfmt::skip] + fn test2() -> Option { + let test_alias = // test_alias + test; + let test = // test + test_alias(); // $ read_access=test_alias + test // $ read_access=test + } + + const z: i32 = 0; + + #[rustfmt::skip] + fn test3() { + let x = Some(0); // x1 + match x { // $ read_access=x1 + Some(x) // x2 + => x, // $ read_access=x2 + _ => 0 + }; + match x { // $ read_access=x1 + Some(z) => + z, // $ SPURIOUS: read_access=z + _ => 0 + }; + } +} + fn main() { immutable_variable(); mutable_variable(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 64431803e6d..42d02b51419 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -142,6 +142,14 @@ variable | main.rs:745:13:745:13 | x | | main.rs:746:13:746:15 | cap | | main.rs:746:20:746:20 | b | +| main.rs:759:13:759:13 | x | +| main.rs:760:13:760:13 | y | +| main.rs:762:18:762:18 | y | +| main.rs:776:13:776:22 | test_alias | +| main.rs:778:13:778:16 | test | +| main.rs:787:13:787:13 | x | +| main.rs:789:18:789:18 | x | +| main.rs:794:18:794:18 | z | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -364,6 +372,14 @@ variableAccess | main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | | main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | | main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | +| main.rs:795:17:795:17 | z | main.rs:794:18:794:18 | z | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | @@ -576,6 +592,14 @@ variableReadAccess | main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | | main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | | main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | +| main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | +| main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | +| main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | +| main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | +| main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | +| main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | +| main.rs:795:17:795:17 | z | main.rs:794:18:794:18 | z | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -649,6 +673,11 @@ variableInitializer | main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | | main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | | main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:759:13:759:13 | x | main.rs:759:17:759:24 | Some(...) | +| main.rs:760:13:760:13 | y | main.rs:761:13:767:9 | match x { ... } | +| main.rs:776:13:776:22 | test_alias | main.rs:777:13:777:16 | test | +| main.rs:778:13:778:16 | test | main.rs:779:13:779:24 | test_alias(...) | +| main.rs:787:13:787:13 | x | main.rs:787:17:787:23 | Some(...) | capturedVariable | main.rs:557:9:557:9 | x | | main.rs:568:13:568:13 | x | From 3be8591370b2018506e96473d2a36ad86352c1e5 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 19 Nov 2025 08:56:06 +0100 Subject: [PATCH 828/965] Ripunzip: fix windows os check, add comments --- misc/ripunzip/ripunzip.bzl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index 823b563b60d..2e707c267e2 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -1,8 +1,10 @@ -def _impl(repository_ctx): +def _ripunzip_archive_impl(repository_ctx): version = repository_ctx.attr.version url_prefix = "https://github.com/GoogleChrome/ripunzip/releases/download/v%s" % version build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") - if repository_ctx.os.name == "linux": + if "linux" in repository_ctx.os.name: + # ripunzip only provides a deb package for Linux: we fish the binary out of it + # a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin repository_ctx.download_and_extract( url = "%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), sha256 = repository_ctx.attr.sha256_linux, @@ -11,16 +13,17 @@ def _impl(repository_ctx): ) repository_ctx.extract( "deb/data.tar.xz", - strip_prefix = "usr", + strip_prefix = "usr/bin", + output = "bin", ) - elif repository_ctx.os.name == "windows": + elif "windows" in repository_ctx.os.name: repository_ctx.download_and_extract( url = "%s/ripunzip_v%s_x86_64-pc-windows-msvc.zip" % (url_prefix, version), canonical_id = "ripunzip-windows", sha256 = repository_ctx.attr.sha256_windows, output = "bin", ) - elif repository_ctx.os.name == "mac os x": + elif "mac os" in repository_ctx.os.name: arch = repository_ctx.os.arch if arch == "x86_64": suffix = "x86_64-apple-darwin" @@ -44,7 +47,8 @@ def _impl(repository_ctx): repository_ctx.symlink(build_file, "BUILD.bazel") ripunzip_archive = repository_rule( - implementation = _impl, + implementation = _ripunzip_archive_impl, + doc = "Downloads a prebuilt ripunzip binary for the host platform from https://github.com/GoogleChrome/ripunzip/releases", attrs = { "version": attr.string(mandatory = True), "sha256_linux": attr.string(mandatory = True), From ec3b2c6a8d1d0c2711e40ef458e846ac01b9225c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 29 Oct 2025 15:52:00 +0100 Subject: [PATCH 829/965] Rust: Path resolution before variable resolution --- .../hello-workspace/path-resolution.ql | 2 +- .../rust/controlflow/internal/Completion.qll | 9 +- .../rust/elements/internal/CallImpl.qll | 2 +- .../rust/elements/internal/ConstImpl.qll | 30 ++- .../FormatTemplateVariableAccessImpl.qll | 2 + .../rust/elements/internal/PathExprImpl.qll | 7 + .../rust/elements/internal/VariableImpl.qll | 19 +- .../lib/codeql/rust/internal/CachedStages.qll | 4 +- .../lib/codeql/rust/internal/Definitions.qll | 5 +- .../codeql/rust/internal/PathResolution.qll | 219 ++++++++++++------ .../macro-expansion/PrintAst.expected | 142 ++++++------ .../library-tests/path-resolution/main.rs | 4 +- .../path-resolution/path-resolution.expected | 3 + .../path-resolution/path-resolution.ql | 2 +- .../test/library-tests/variables/Cfg.expected | 1 + .../test/library-tests/variables/Ssa.expected | 6 +- rust/ql/test/library-tests/variables/main.rs | 4 +- .../variables/variables.expected | 6 +- 18 files changed, 277 insertions(+), 190 deletions(-) diff --git a/rust/ql/integration-tests/hello-workspace/path-resolution.ql b/rust/ql/integration-tests/hello-workspace/path-resolution.ql index 9ec97b61eeb..574a9553155 100644 --- a/rust/ql/integration-tests/hello-workspace/path-resolution.ql +++ b/rust/ql/integration-tests/hello-workspace/path-resolution.ql @@ -2,7 +2,7 @@ import rust import codeql.rust.internal.PathResolution import utils.test.PathResolutionInlineExpectationsTest -query predicate resolveDollarCrate(RelevantPath p, Crate c) { +query predicate resolveDollarCrate(PathExt p, Crate c) { c = resolvePath(p) and p.isDollarCrate() and p.fromSource() and diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll index 0250f1cbc43..33da4db473e 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll @@ -1,5 +1,6 @@ private import codeql.util.Boolean private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl private import rust newtype TCompletion = @@ -123,13 +124,7 @@ class BooleanCompletion extends ConditionalCompletion, TBooleanCompletion { */ private predicate cannotCauseMatchFailure(Pat pat) { pat instanceof RangePat or - // Identifier patterns that are in fact path patterns can cause failures. For - // instance `None`. Only if an `@ ...` part is present can we be sure that - // it's an actual identifier pattern. As a heuristic, if the identifier starts - // with a lower case letter, then we assume that it's an identifier. This - // works for code that follows the Rust naming convention for enums and - // constants. - pat = any(IdentPat p | p.hasPat() or p.getName().getText().charAt(0).isLowercase()) or + pat = any(IdentPat p | p.hasPat() or VariableImpl::variableDecl(_, p.getName(), _)) or pat instanceof WildcardPat or pat instanceof RestPat or pat instanceof RefPat or diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll index 210820fd105..71c6cfbffc0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -82,7 +82,7 @@ module Impl { } private predicate callHasTraitQualifier(CallExpr call, Trait qualifier) { - exists(RelevantPath qualifierPath | + exists(PathExt qualifierPath | callHasQualifier(call, _, qualifierPath) and qualifier = resolvePath(qualifierPath) and // When the qualifier is `Self` and resolves to a trait, it's inside a diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 0234f7cf730..44114674a56 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -5,6 +5,8 @@ */ private import codeql.rust.elements.internal.generated.Const +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl +private import codeql.rust.elements.internal.IdentPatImpl::Impl as IdentPatImpl private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl private import codeql.rust.internal.PathResolution @@ -36,14 +38,30 @@ module Impl { * } * ``` */ - class ConstAccess extends PathExprImpl::PathExpr { - private Const c; - - ConstAccess() { c = resolvePath(this.getPath()) } - + abstract class ConstAccess extends AstNodeImpl::AstNode { /** Gets the constant being accessed. */ - Const getConst() { result = c } + abstract Const getConst(); override string getAPrimaryQlClass() { result = "ConstAccess" } } + + private class PathExprConstAccess extends ConstAccess, PathExprImpl::PathExpr { + private Const c; + + PathExprConstAccess() { c = resolvePath(this.getPath()) } + + override Const getConst() { result = c } + + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } + } + + private class IdentPatConstAccess extends ConstAccess, IdentPatImpl::IdentPat { + private Const c; + + IdentPatConstAccess() { c = resolvePath(this) } + + override Const getConst() { result = c } + + override string getAPrimaryQlClass() { result = ConstAccess.super.getAPrimaryQlClass() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll index adb12a35931..35154ae0acb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FormatTemplateVariableAccessImpl.qll @@ -31,6 +31,8 @@ module Impl { override string toStringImpl() { result = this.getName() } + override string getAPrimaryQlClass() { result = "FormatTemplateVariableAccess" } + /** Gets the name of the variable */ string getName() { result = argument.getName() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll index 652dc68b3c9..cb2abc45e10 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll @@ -4,6 +4,7 @@ * INTERNAL: Do not use. */ +private import rust private import codeql.rust.elements.internal.generated.PathExpr /** @@ -25,5 +26,11 @@ module Impl { override string toStringImpl() { result = this.toAbbreviatedString() } override string toAbbreviatedString() { result = this.getPath().toStringImpl() } + + override string getAPrimaryQlClass() { + if this instanceof VariableAccess + then result = "VariableAccess" + else result = super.getAPrimaryQlClass() + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 61f022c8bfd..4569a108cd8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -1,8 +1,9 @@ private import rust private import codeql.rust.controlflow.ControlFlowGraph +private import codeql.rust.internal.PathResolution as PathResolution private import codeql.rust.elements.internal.generated.ParentChild as ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.PathImpl::Impl as PathImpl -private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl private import codeql.rust.elements.internal.FormatTemplateVariableAccessImpl::Impl as FormatTemplateVariableAccessImpl private import codeql.util.DenseRank @@ -98,7 +99,7 @@ module Impl { * pattern. */ cached - private predicate variableDecl(AstNode definingNode, Name name, string text) { + predicate variableDecl(AstNode definingNode, Name name, string text) { Cached::ref() and exists(SelfParam sp | name = sp.getName() and @@ -117,11 +118,7 @@ module Impl { not exists(getOutermostEnclosingOrPat(pat)) and definingNode = name ) and text = name.getText() and - // exclude for now anything starting with an uppercase character, which may be a reference to - // an enum constant (e.g. `None`). This excludes static and constant variables (UPPERCASE), - // which we don't appear to recognize yet anyway. This also assumes programmers follow the - // naming guidelines, which they generally do, but they're not enforced. - not text.charAt(0).isUppercase() and + not PathResolution::identPatIsResolvable(pat) and // exclude parameters from functions without a body as these are trait method declarations // without implementations not exists(Function f | not f.hasBody() and f.getAParam().getPat() = pat) and @@ -666,7 +663,7 @@ module Impl { } /** A variable access. */ - class VariableAccess extends PathExprBaseImpl::PathExprBase { + class VariableAccess extends PathExprBase { private string name; private Variable v; @@ -677,10 +674,6 @@ module Impl { /** Holds if this access is a capture. */ predicate isCapture() { this.getEnclosingCfgScope() != v.getEnclosingCfgScope() } - - override string toStringImpl() { result = name } - - override string getAPrimaryQlClass() { result = "VariableAccess" } } /** Holds if `e` occurs in the LHS of an assignment or compound assignment. */ @@ -722,7 +715,7 @@ module Impl { } /** A nested function access. */ - class NestedFunctionAccess extends PathExprBaseImpl::PathExprBase { + class NestedFunctionAccess extends PathExprBase { private Function f; NestedFunctionAccess() { nestedFunctionAccess(_, f, this) } diff --git a/rust/ql/lib/codeql/rust/internal/CachedStages.qll b/rust/ql/lib/codeql/rust/internal/CachedStages.qll index 132b9ec8f7e..dc80fc09dad 100644 --- a/rust/ql/lib/codeql/rust/internal/CachedStages.qll +++ b/rust/ql/lib/codeql/rust/internal/CachedStages.qll @@ -115,13 +115,11 @@ module Stages { predicate backref() { 1 = 1 or - exists(resolvePath(_)) + exists(resolvePathIgnoreVariableShadowing(_)) or exists(any(ItemNode i).getASuccessor(_, _, _)) or exists(any(ImplOrTraitItemNode i).getASelfPath()) - or - any(TypeParamItemNode i).hasTraitBound() } } diff --git a/rust/ql/lib/codeql/rust/internal/Definitions.qll b/rust/ql/lib/codeql/rust/internal/Definitions.qll index b1b3e475c46..60520a77cbf 100644 --- a/rust/ql/lib/codeql/rust/internal/Definitions.qll +++ b/rust/ql/lib/codeql/rust/internal/Definitions.qll @@ -37,6 +37,9 @@ private module Cached { TFormatArgsArgIndex(Expr e) { e = any(FormatArgsArg a).getExpr() } or TItemNode(ItemNode i) + pragma[nomagic] + private predicate isMacroCallLocation(Location loc) { loc = any(MacroCall m).getLocation() } + /** * Gets an element, of kind `kind`, that element `use` uses, if any. */ @@ -44,7 +47,7 @@ private module Cached { Definition definitionOf(Use use, string kind) { result = use.getDefinition() and kind = use.getUseType() and - not result.getLocation() = any(MacroCall m).getLocation() + not isMacroCallLocation(result.getLocation()) } } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 54df4a3ca0c..f4349f79327 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -1,9 +1,49 @@ /** * Provides functionality for resolving paths, using the predicate `resolvePath`. + * + * Path resolution needs to happen before variable resolution, because otherwise + * we cannot know whether an identifier pattern binds a new variable or whether it + * refers to a constructor or constant: + * + * ```rust + * let x = ...; // `x` is only a variable if it does not resolve to a constructor/constant + * ``` + * + * Even though variable names typically start with a lowercase letter and constructors + * with an uppercase letter, this is not enforced by the Rust language. + * + * Variables may shadow declarations, so variable resolution also needs to affect + * path resolution: + * + * ```rust + * fn foo() {} // (1) + * + * fn bar() { + * let f = foo; // `foo` here refers to (1) via path resolution + * let foo = f(); // (2) + * foo // `foo` here refers to (2) via variable resolution + * } + * ``` + * + * So it may seem that path resolution and variable resolution must happen in mutual + * recursion, but we would like to keep the inherently global path resolution logic + * separate from the inherently local variable resolution logic. We acheive this by + * + * - First computing global path resolution, where variable shadowing is ignored, + * exposed as the internal predicate `resolvePathIgnoreVariableShadowing`. + * - `resolvePathIgnoreVariableShadowing` is sufficient to determine whether an + * identifier pattern resolves to a constructor/constant, since if it does, it cannot + * be shadowed by a variable. We expose this as the predicate `identPatIsResolvable`. + * - Variable resolution can then be computed as a local property, using only the + * global information from `identPatIsResolvable`. + * - Finally, path resolution can be computed by restricting + * `resolvePathIgnoreVariableShadowing` to paths that are not resolvable via + * variable resolution. */ private import rust private import codeql.rust.elements.internal.generated.ParentChild +private import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl private import codeql.rust.internal.CachedStages private import codeql.rust.frameworks.stdlib.Builtins as Builtins @@ -184,7 +224,7 @@ abstract class ItemNode extends Locatable { pragma[nomagic] final Attr getAttr(string name) { result = this.getAnAttr() and - result.getMeta().getPath().(RelevantPath).isUnqualified(name) + result.getMeta().getPath().(PathExt).isUnqualified(name) } final predicate hasAttr(string name) { exists(this.getAttr(name)) } @@ -1160,34 +1200,6 @@ final class TypeParamItemNode extends TypeItemNode instanceof TypeParam { ItemNode resolveABound() { result = resolvePath(this.getABoundPath()) } - /** - * Holds if this type parameter has a trait bound. Examples: - * - * ```rust - * impl Foo { ... } // has no trait bound - * - * impl Foo { ... } // has trait bound - * - * impl Foo where T: Trait { ... } // has trait bound - * ``` - */ - cached - predicate hasTraitBound() { Stages::PathResolutionStage::ref() and exists(this.getABoundPath()) } - - /** - * Holds if this type parameter has no trait bound. Examples: - * - * ```rust - * impl Foo { ... } // has no trait bound - * - * impl Foo { ... } // has trait bound - * - * impl Foo where T: Trait { ... } // has trait bound - * ``` - */ - pragma[nomagic] - predicate hasNoTraitBound() { not this.hasTraitBound() } - override string getName() { result = TypeParam.super.getName().getText() } override Namespace getNamespace() { result.isType() } @@ -1526,20 +1538,22 @@ private predicate declares(ItemNode item, Namespace ns, string name) { ) } -/** A path that does not access a local variable. */ -class RelevantPath extends Path { - RelevantPath() { not this = any(VariableAccess va).(PathExpr).getPath() } +/** + * A `Path` or an `IdentPat`. + * + * `IdentPat`s are included in order to resolve unqualified references to + * constructors in patterns. + */ +abstract class PathExt extends AstNode { + abstract string getText(); /** Holds if this is an unqualified path with the textual value `name`. */ pragma[nomagic] - predicate isUnqualified(string name) { - not exists(this.getQualifier()) and - not exists(UseTree tree | - tree.hasPath() and - this = getAUseTreeUseTree(tree).getPath().getQualifier*() - ) and - name = this.getText() - } + abstract predicate isUnqualified(string name); + + abstract Path getQualifier(); + + abstract string toStringDebug(); /** * Holds if this is an unqualified path with the textual value `name` and @@ -1561,6 +1575,33 @@ class RelevantPath extends Path { predicate isDollarCrate() { this.isUnqualified("$crate", _) } } +private class PathExtPath extends PathExt instanceof Path { + override string getText() { result = Path.super.getText() } + + override predicate isUnqualified(string name) { + not exists(Path.super.getQualifier()) and + not exists(UseTree tree | + tree.hasPath() and + this = getAUseTreeUseTree(tree).getPath().getQualifier*() + ) and + name = Path.super.getText() + } + + override Path getQualifier() { result = Path.super.getQualifier() } + + override string toStringDebug() { result = Path.super.toStringDebug() } +} + +private class PathExtIdentPat extends PathExt, IdentPat { + override string getText() { result = this.getName().getText() } + + override predicate isUnqualified(string name) { name = this.getText() } + + override Path getQualifier() { none() } + + override string toStringDebug() { result = this.getText() } +} + private predicate isModule(ItemNode m) { m instanceof Module } /** Holds if source file `source` contains the module `m`. */ @@ -1584,7 +1625,7 @@ private ItemNode getOuterScope(ItemNode i) { pragma[nomagic] private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespace ns, ItemNode encl) { // lookup in the immediately enclosing item - exists(RelevantPath path | + exists(PathExt path | path.isUnqualified(name, encl) and ancestor = encl and not name = ["crate", "$crate", "super", "self"] @@ -1620,7 +1661,7 @@ private ItemNode getASuccessor( private predicate isSourceFile(ItemNode source) { source instanceof SourceFileItemNode } -private predicate hasCratePath(ItemNode i) { any(RelevantPath path).isCratePath(_, i) } +private predicate hasCratePath(ItemNode i) { any(PathExt path).isCratePath(_, i) } private predicate hasChild(ItemNode parent, ItemNode child) { child.getImmediateParent() = parent } @@ -1632,7 +1673,7 @@ private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) = * `name` may be looked up inside `ancestor`. */ pragma[nomagic] -private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) { +private predicate keywordLookup(ItemNode ancestor, string name, PathExt p) { // For `crate`, jump directly to the root module exists(ItemNode i | p.isCratePath(name, i) | ancestor instanceof SourceFile and @@ -1646,7 +1687,7 @@ private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) } pragma[nomagic] -private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKind kind) { +private ItemNode unqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { exists(ItemNode ancestor, string name | result = getASuccessor(ancestor, pragma[only_bind_into](name), ns, kind, _) and kind.isInternalOrBoth() @@ -1661,7 +1702,7 @@ private ItemNode unqualifiedPathLookup(RelevantPath p, Namespace ns, SuccessorKi } pragma[nomagic] -private predicate isUnqualifiedSelfPath(RelevantPath path) { path.isUnqualified("Self") } +private predicate isUnqualifiedSelfPath(PathExt path) { path.isUnqualified("Self") } /** Provides the input to `TraitIsVisible`. */ signature predicate relevantTraitVisibleSig(Element element, Trait trait); @@ -1744,14 +1785,14 @@ private module DollarCrateResolution { isDollarCrateSupportedMacroExpansion(_, expansion) } - private predicate isDollarCratePath(RelevantPath p) { p.isDollarCrate() } + private predicate isDollarCratePath(PathExt p) { p.isDollarCrate() } - private predicate isInDollarCrateMacroExpansion(RelevantPath p, AstNode expansion) = + private predicate isInDollarCrateMacroExpansion(PathExt p, AstNode expansion) = doublyBoundedFastTC(hasParent/2, isDollarCratePath/1, isDollarCrateSupportedMacroExpansion/1)(p, expansion) pragma[nomagic] - private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, RelevantPath p) { + private predicate isInDollarCrateMacroExpansionFromFile(File macroDefFile, PathExt p) { exists(Path macroDefPath, AstNode expansion | isDollarCrateSupportedMacroExpansion(macroDefPath, expansion) and isInDollarCrateMacroExpansion(p, expansion) and @@ -1766,17 +1807,17 @@ private module DollarCrateResolution { * calls. */ pragma[nomagic] - predicate resolveDollarCrate(RelevantPath p, CrateItemNode crate) { + predicate resolveDollarCrate(PathExt p, CrateItemNode crate) { isInDollarCrateMacroExpansionFromFile(crate.getASourceFile().getFile(), p) } } pragma[nomagic] -private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { +private ItemNode resolvePathCand0(PathExt path, Namespace ns) { exists(ItemNode res | res = unqualifiedPathLookup(path, ns, _) and if - not any(RelevantPath parent).getQualifier() = path and + not any(PathExt parent).getQualifier() = path and isUnqualifiedSelfPath(path) and res instanceof ImplItemNode then result = res.(ImplItemNodeImpl).resolveSelfTyCand() @@ -1791,13 +1832,16 @@ private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) { result = resolveUseTreeListItem(_, _, path, _) and ns = result.getNamespace() or - result = resolveBuiltin(path.getSegment().getTypeRepr()) and - not path.getSegment().hasTraitTypeRepr() and - ns.isType() + exists(PathSegment seg | + seg = path.(Path).getSegment() and + result = resolveBuiltin(seg.getTypeRepr()) and + not seg.hasTraitTypeRepr() and + ns.isType() + ) } pragma[nomagic] -private ItemNode resolvePathCandQualifier(RelevantPath qualifier, RelevantPath path, string name) { +private ItemNode resolvePathCandQualifier(PathExt qualifier, PathExt path, string name) { qualifier = path.getQualifier() and result = resolvePathCand(qualifier) and name = path.getText() @@ -1845,9 +1889,7 @@ private predicate checkQualifiedVisibility( * qualifier of `path` and `qualifier` resolves to `q`, if any. */ pragma[nomagic] -private ItemNode resolvePathCandQualified( - RelevantPath qualifier, ItemNode q, RelevantPath path, Namespace ns -) { +private ItemNode resolvePathCandQualified(PathExt qualifier, ItemNode q, PathExt path, Namespace ns) { exists(string name, SuccessorKind kind, UseOption useOpt | q = resolvePathCandQualifier(qualifier, path, name) and result = getASuccessor(q, name, ns, kind, useOpt) and @@ -1856,12 +1898,14 @@ private ItemNode resolvePathCandQualified( } /** Holds if path `p` must be looked up in namespace `n`. */ -private predicate pathUsesNamespace(Path p, Namespace n) { +private predicate pathUsesNamespace(PathExt p, Namespace n) { n.isValue() and ( p = any(PathExpr pe).getPath() or p = any(TupleStructPat tsp).getPath() + or + p instanceof PathExtIdentPat ) or n.isType() and @@ -1937,7 +1981,7 @@ private predicate macroUseEdge( * result in non-monotonic recursion. */ pragma[nomagic] -private ItemNode resolvePathCand(RelevantPath path) { +private ItemNode resolvePathCand(PathExt path) { exists(Namespace ns | result = resolvePathCand0(path, ns) and if path = any(ImplItemNode i).getSelfPath() @@ -1950,7 +1994,13 @@ private ItemNode resolvePathCand(RelevantPath path) { else if path = any(PathTypeRepr p).getPath() then result instanceof TypeItemNode - else any() + else + if path instanceof IdentPat + then + result instanceof VariantItemNode or + result instanceof StructItemNode or + result instanceof ConstItemNode + else any() | pathUsesNamespace(path, ns) or @@ -1967,7 +2017,7 @@ private ItemNode resolvePathCand(RelevantPath path) { } /** Get a trait that should be visible when `path` resolves to `node`, if any. */ -private Trait getResolvePathTraitUsed(RelevantPath path, AssocItemNode node) { +private Trait getResolvePathTraitUsed(PathExt path, AssocItemNode node) { exists(TypeItemNode type, ImplItemNodeImpl impl | node = resolvePathCandQualified(_, type, path, _) and typeImplEdge(type, impl, _, _, node, _) and @@ -1979,9 +2029,9 @@ private predicate pathTraitUsed(Element path, Trait trait) { trait = getResolvePathTraitUsed(path, _) } -/** Gets the item that `path` resolves to, if any. */ +/** INTERNAL: Do not use; use `resolvePath` instead. */ cached -ItemNode resolvePath(RelevantPath path) { +ItemNode resolvePathIgnoreVariableShadowing(PathExt path) { result = resolvePathCand(path) and not path = any(Path parent | exists(resolvePathCand(parent))).getQualifier() and ( @@ -1994,29 +2044,43 @@ ItemNode resolvePath(RelevantPath path) { or // if `path` is the qualifier of a resolvable `parent`, then we should // resolve `path` to something consistent with what `parent` resolves to - exists(RelevantPath parent | - resolvePathCandQualified(path, result, parent, _) = resolvePath(parent) + exists(PathExt parent | + resolvePathCandQualified(path, result, parent, _) = resolvePathIgnoreVariableShadowing(parent) ) } -private predicate isUseTreeSubPath(UseTree tree, RelevantPath path) { +/** + * Holds if `ip` resolves to some constructor. + */ +// use `forceLocal` once we implement overlay support +pragma[nomagic] +predicate identPatIsResolvable(IdentPat ip) { exists(resolvePathIgnoreVariableShadowing(ip)) } + +/** Gets the item that `path` resolves to, if any. */ +pragma[nomagic] +ItemNode resolvePath(PathExt path) { + result = resolvePathIgnoreVariableShadowing(path) and + not path = any(VariableAccess va).(PathExpr).getPath() +} + +private predicate isUseTreeSubPath(UseTree tree, PathExt path) { path = tree.getPath() or - exists(RelevantPath mid | + exists(PathExt mid | isUseTreeSubPath(tree, mid) and path = mid.getQualifier() ) } pragma[nomagic] -private predicate isUseTreeSubPathUnqualified(UseTree tree, RelevantPath path, string name) { +private predicate isUseTreeSubPathUnqualified(UseTree tree, PathExt path, string name) { isUseTreeSubPath(tree, path) and not exists(path.getQualifier()) and name = path.getText() } pragma[nomagic] -private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { +private ItemNode resolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { exists(UseOption useOpt | checkQualifiedVisibility(use, result, kind, useOpt) | exists(UseTree midTree, ItemNode mid, string name | mid = resolveUseTreeListItem(use, midTree) and @@ -2033,9 +2097,7 @@ private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path } pragma[nomagic] -private ItemNode resolveUseTreeListItemQualifier( - Use use, UseTree tree, RelevantPath path, string name -) { +private ItemNode resolveUseTreeListItemQualifier(Use use, UseTree tree, PathExt path, string name) { result = resolveUseTreeListItem(use, tree, path.getQualifier(), _) and name = path.getText() } @@ -2187,7 +2249,7 @@ private module Debug { } predicate debugUnqualifiedPathLookup( - RelevantPath p, string name, Namespace ns, ItemNode ancestor, string path + PathExt p, string name, Namespace ns, ItemNode ancestor, string path ) { p = getRelevantLocatable() and exists(ItemNode encl | @@ -2197,14 +2259,19 @@ private module Debug { path = p.toStringDebug() } + ItemNode debugUnqualifiedPathLookup(PathExt p, Namespace ns, SuccessorKind kind) { + p = getRelevantLocatable() and + result = unqualifiedPathLookup(p, ns, kind) + } + predicate debugItemNode(ItemNode item) { item = getRelevantLocatable() } - ItemNode debugResolvePath(RelevantPath path) { + ItemNode debugResolvePath(PathExt path) { path = getRelevantLocatable() and result = resolvePath(path) } - ItemNode debugResolveUseTreeListItem(Use use, UseTree tree, RelevantPath path, SuccessorKind kind) { + ItemNode debugResolveUseTreeListItem(Use use, UseTree tree, PathExt path, SuccessorKind kind) { use = getRelevantLocatable() and result = resolveUseTreeListItem(use, tree, path, kind) } diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 1a0ded6950d..5174e0bd618 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -660,7 +660,7 @@ macro_expansion.rs: # 71| getSegment(): [PathSegment] i32 # 71| getIdentifier(): [NameRef] i32 # 72| getTailExpr(): [CastExpr] a as ... -# 72| getExpr(): [PathExpr,VariableAccess] a +# 72| getExpr(): [VariableAccess] a # 72| getPath(): [Path] a # 72| getSegment(): [PathSegment] a # 72| getIdentifier(): [NameRef] a @@ -738,7 +738,7 @@ macro_expansion.rs: # 84| getFunctionBody(): [BlockExpr] { ... } # 84| getStmtList(): [StmtList] StmtList # 84| getTailExpr(): [MatchExpr] match self { ... } -# 83| getScrutinee(): [PathExpr,VariableAccess] self +# 83| getScrutinee(): [VariableAccess] self # 83| getPath(): [Path] self # 83| getSegment(): [PathSegment] self # 83| getIdentifier(): [NameRef] self @@ -751,7 +751,7 @@ macro_expansion.rs: # 85| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "field" # 85| getArg(1): [RefExpr] &field -# 85| getExpr(): [PathExpr,VariableAccess] field +# 85| getExpr(): [VariableAccess] field # 85| getPath(): [Path] field # 85| getSegment(): [PathSegment] field # 85| getIdentifier(): [NameRef] field @@ -760,7 +760,7 @@ macro_expansion.rs: # 83| getArgList(): [ArgList] ArgList # 83| getArg(0): [StringLiteralExpr] "MyDerive" # 83| getIdentifier(): [NameRef] debug_struct -# 83| getReceiver(): [PathExpr,VariableAccess] f +# 83| getReceiver(): [VariableAccess] f # 83| getPath(): [Path] f # 83| getSegment(): [PathSegment] f # 83| getIdentifier(): [NameRef] f @@ -836,11 +836,11 @@ macro_expansion.rs: # 89| getStmtList(): [StmtList] StmtList # 89| getTailExpr(): [MatchExpr] match ... { ... } # 88| getScrutinee(): [TupleExpr] TupleExpr -# 88| getField(0): [PathExpr,VariableAccess] self +# 88| getField(0): [VariableAccess] self # 88| getPath(): [Path] self # 88| getSegment(): [PathSegment] self # 88| getIdentifier(): [NameRef] self -# 88| getField(1): [PathExpr,VariableAccess] other +# 88| getField(1): [VariableAccess] other # 88| getPath(): [Path] other # 88| getSegment(): [PathSegment] other # 88| getIdentifier(): [NameRef] other @@ -1076,7 +1076,7 @@ proc_macro.rs: # 6| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 6| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 6| getArgList(): [ArgList] ArgList -# 6| getArg(0): [PathExpr,VariableAccess] attr +# 6| getArg(0): [VariableAccess] attr # 6| getPath(): [Path] attr # 6| getSegment(): [PathSegment] attr # 6| getIdentifier(): [NameRef] attr @@ -1098,7 +1098,7 @@ proc_macro.rs: # 6| getIdentifier(): [NameRef] parse # 6| getMatchArmList(): [MatchArmList] MatchArmList # 6| getArm(0): [MatchArm] ... => data -# 6| getExpr(): [PathExpr,VariableAccess] data +# 6| getExpr(): [VariableAccess] data # 6| getPath(): [Path] data # 6| getSegment(): [PathSegment] data # 6| getIdentifier(): [NameRef] data @@ -1124,7 +1124,7 @@ proc_macro.rs: # 6| getArg(0): [MethodCallExpr] err.to_compile_error() # 6| getArgList(): [ArgList] ArgList # 6| getIdentifier(): [NameRef] to_compile_error -# 6| getReceiver(): [PathExpr,VariableAccess] err +# 6| getReceiver(): [VariableAccess] err # 6| getPath(): [Path] err # 6| getSegment(): [PathSegment] err # 6| getIdentifier(): [NameRef] err @@ -1168,7 +1168,7 @@ proc_macro.rs: # 7| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 7| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 7| getArgList(): [ArgList] ArgList -# 7| getArg(0): [PathExpr,VariableAccess] item +# 7| getArg(0): [VariableAccess] item # 7| getPath(): [Path] item # 7| getSegment(): [PathSegment] item # 7| getIdentifier(): [NameRef] item @@ -1190,7 +1190,7 @@ proc_macro.rs: # 7| getIdentifier(): [NameRef] parse # 7| getMatchArmList(): [MatchArmList] MatchArmList # 7| getArm(0): [MatchArm] ... => data -# 7| getExpr(): [PathExpr,VariableAccess] data +# 7| getExpr(): [VariableAccess] data # 7| getPath(): [Path] data # 7| getSegment(): [PathSegment] data # 7| getIdentifier(): [NameRef] data @@ -1216,7 +1216,7 @@ proc_macro.rs: # 7| getArg(0): [MethodCallExpr] err.to_compile_error() # 7| getArgList(): [ArgList] ArgList # 7| getIdentifier(): [NameRef] to_compile_error -# 7| getReceiver(): [PathExpr,VariableAccess] err +# 7| getReceiver(): [VariableAccess] err # 7| getPath(): [Path] err # 7| getSegment(): [PathSegment] err # 7| getIdentifier(): [NameRef] err @@ -1273,7 +1273,7 @@ proc_macro.rs: # 10| getInitializer(): [MethodCallExpr] ast.clone() # 10| getArgList(): [ArgList] ArgList # 10| getIdentifier(): [NameRef] clone -# 10| getReceiver(): [PathExpr,VariableAccess] ast +# 10| getReceiver(): [VariableAccess] ast # 10| getPath(): [Path] ast # 10| getSegment(): [PathSegment] ast # 10| getIdentifier(): [NameRef] ast @@ -1283,7 +1283,7 @@ proc_macro.rs: # 11| getExpr(): [AssignmentExpr] ... = ... # 11| getLhs(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] new_ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] new_ast +# 11| getContainer(): [VariableAccess] new_ast # 11| getPath(): [Path] new_ast # 11| getSegment(): [PathSegment] new_ast # 11| getIdentifier(): [NameRef] new_ast @@ -1320,14 +1320,14 @@ proc_macro.rs: # 11| getArg(0): [FormatArgsArg] FormatArgsArg # 11| getExpr(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast # 11| getIdentifier(): [NameRef] sig # 11| getIdentifier(): [NameRef] ident # 11| getArg(1): [FormatArgsArg] FormatArgsArg -# 11| getExpr(): [PathExpr,VariableAccess] i +# 11| getExpr(): [VariableAccess] i # 11| getPath(): [Path] i # 11| getSegment(): [PathSegment] i # 11| getIdentifier(): [NameRef] i @@ -1359,7 +1359,7 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] span # 11| getReceiver(): [FieldExpr] ... .ident # 11| getContainer(): [FieldExpr] ast.sig -# 11| getContainer(): [PathExpr,VariableAccess] ast +# 11| getContainer(): [VariableAccess] ast # 11| getPath(): [Path] ast # 11| getSegment(): [PathSegment] ast # 11| getIdentifier(): [NameRef] ast @@ -1375,14 +1375,14 @@ proc_macro.rs: # 11| getIdentifier(): [NameRef] Ident # 11| getSegment(): [PathSegment] new # 11| getIdentifier(): [NameRef] new -# 12| getTailExpr(): [PathExpr,VariableAccess] new_ast +# 12| getTailExpr(): [VariableAccess] new_ast # 12| getPath(): [Path] new_ast # 12| getSegment(): [PathSegment] new_ast # 12| getIdentifier(): [NameRef] new_ast # 9| getIdentifier(): [NameRef] map # 8| getReceiver(): [ParenExpr] (...) # 8| getExpr(): [RangeExpr] 0..number -# 8| getEnd(): [PathExpr,VariableAccess] number +# 8| getEnd(): [VariableAccess] number # 8| getPath(): [Path] number # 8| getSegment(): [PathSegment] number # 8| getIdentifier(): [NameRef] number @@ -1614,7 +1614,7 @@ proc_macro.rs: # 16| getInitializer(): [MethodCallExpr] items.quote_into_iter() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] quote_into_iter -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1625,11 +1625,11 @@ proc_macro.rs: # 15| getName(): [Name] i # 15| getStatement(1): [LetStmt] let ... = ... # 15| getInitializer(): [BinaryExpr] ... | ... -# 15| getLhs(): [PathExpr,VariableAccess] has_iter +# 15| getLhs(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter -# 15| getRhs(): [PathExpr,VariableAccess] i +# 15| getRhs(): [VariableAccess] i # 15| getPath(): [Path] i # 15| getSegment(): [PathSegment] i # 15| getIdentifier(): [NameRef] i @@ -1646,7 +1646,7 @@ proc_macro.rs: # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr # 15| getStatement(3): [LetStmt] let _ = has_iter -# 15| getInitializer(): [PathExpr,VariableAccess] has_iter +# 15| getInitializer(): [VariableAccess] has_iter # 15| getPath(): [Path] has_iter # 15| getSegment(): [PathSegment] has_iter # 15| getIdentifier(): [NameRef] has_iter @@ -1764,7 +1764,7 @@ proc_macro.rs: # 16| getScrutinee(): [MethodCallExpr] items.next() # 15| getArgList(): [ArgList] ArgList # 15| getIdentifier(): [NameRef] next -# 16| getReceiver(): [PathExpr,VariableAccess] items +# 16| getReceiver(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items @@ -1772,7 +1772,7 @@ proc_macro.rs: # 15| getArm(0): [MatchArm] ... => ... # 15| getExpr(): [CallExpr] ...::RepInterp(...) # 15| getArgList(): [ArgList] ArgList -# 15| getArg(0): [PathExpr] _x +# 15| getArg(0): [VariableAccess] _x # 15| getPath(): [Path] _x # 15| getSegment(): [PathSegment] _x # 15| getIdentifier(): [NameRef] _x @@ -1876,12 +1876,12 @@ proc_macro.rs: # 16| getExpr(): [CallExpr] ...::to_tokens(...) # 16| getArgList(): [ArgList] ArgList # 16| getArg(0): [RefExpr] &items -# 16| getExpr(): [PathExpr,VariableAccess] items +# 16| getExpr(): [VariableAccess] items # 16| getPath(): [Path] items # 16| getSegment(): [PathSegment] items # 16| getIdentifier(): [NameRef] items # 15| getArg(1): [RefExpr] &mut _s -# 15| getExpr(): [PathExpr] _s +# 15| getExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -1993,7 +1993,7 @@ proc_macro.rs: # 15| getIdentifier(): [NameRef] quote_token_with_context # 16| getTokenTree(): [TokenTree] TokenTree # 15| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 15| getTailExpr(): [PathExpr] _s +# 15| getTailExpr(): [VariableAccess] _s # 15| getPath(): [Path] _s # 15| getSegment(): [PathSegment] _s # 15| getIdentifier(): [NameRef] _s @@ -2040,7 +2040,7 @@ proc_macro.rs: # 22| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 22| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 22| getArgList(): [ArgList] ArgList -# 22| getArg(0): [PathExpr,VariableAccess] item +# 22| getArg(0): [VariableAccess] item # 22| getPath(): [Path] item # 22| getSegment(): [PathSegment] item # 22| getIdentifier(): [NameRef] item @@ -2062,7 +2062,7 @@ proc_macro.rs: # 22| getIdentifier(): [NameRef] parse # 22| getMatchArmList(): [MatchArmList] MatchArmList # 22| getArm(0): [MatchArm] ... => data -# 22| getExpr(): [PathExpr,VariableAccess] data +# 22| getExpr(): [VariableAccess] data # 22| getPath(): [Path] data # 22| getSegment(): [PathSegment] data # 22| getIdentifier(): [NameRef] data @@ -2088,7 +2088,7 @@ proc_macro.rs: # 22| getArg(0): [MethodCallExpr] err.to_compile_error() # 22| getArgList(): [ArgList] ArgList # 22| getIdentifier(): [NameRef] to_compile_error -# 22| getReceiver(): [PathExpr,VariableAccess] err +# 22| getReceiver(): [VariableAccess] err # 22| getPath(): [Path] err # 22| getSegment(): [PathSegment] err # 22| getIdentifier(): [NameRef] err @@ -2123,7 +2123,7 @@ proc_macro.rs: # 23| getInitializer(): [MethodCallExpr] ast.clone() # 23| getArgList(): [ArgList] ArgList # 23| getIdentifier(): [NameRef] clone -# 23| getReceiver(): [PathExpr,VariableAccess] ast +# 23| getReceiver(): [VariableAccess] ast # 23| getPath(): [Path] ast # 23| getSegment(): [PathSegment] ast # 23| getIdentifier(): [NameRef] ast @@ -2133,7 +2133,7 @@ proc_macro.rs: # 24| getExpr(): [AssignmentExpr] ... = ... # 24| getLhs(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] new_ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] new_ast +# 24| getContainer(): [VariableAccess] new_ast # 24| getPath(): [Path] new_ast # 24| getSegment(): [PathSegment] new_ast # 24| getIdentifier(): [NameRef] new_ast @@ -2170,7 +2170,7 @@ proc_macro.rs: # 24| getArg(0): [FormatArgsArg] FormatArgsArg # 24| getExpr(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2203,7 +2203,7 @@ proc_macro.rs: # 24| getIdentifier(): [NameRef] span # 24| getReceiver(): [FieldExpr] ... .ident # 24| getContainer(): [FieldExpr] ast.sig -# 24| getContainer(): [PathExpr,VariableAccess] ast +# 24| getContainer(): [VariableAccess] ast # 24| getPath(): [Path] ast # 24| getSegment(): [PathSegment] ast # 24| getIdentifier(): [NameRef] ast @@ -2317,12 +2317,12 @@ proc_macro.rs: # 26| getExpr(): [CallExpr] ...::to_tokens(...) # 26| getArgList(): [ArgList] ArgList # 26| getArg(0): [RefExpr] &ast -# 26| getExpr(): [PathExpr,VariableAccess] ast +# 26| getExpr(): [VariableAccess] ast # 26| getPath(): [Path] ast # 26| getSegment(): [PathSegment] ast # 26| getIdentifier(): [NameRef] ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2362,12 +2362,12 @@ proc_macro.rs: # 27| getExpr(): [CallExpr] ...::to_tokens(...) # 27| getArgList(): [ArgList] ArgList # 27| getArg(0): [RefExpr] &new_ast -# 27| getExpr(): [PathExpr,VariableAccess] new_ast +# 27| getExpr(): [VariableAccess] new_ast # 27| getPath(): [Path] new_ast # 27| getSegment(): [PathSegment] new_ast # 27| getIdentifier(): [NameRef] new_ast # 25| getArg(1): [RefExpr] &mut _s -# 25| getExpr(): [PathExpr] _s +# 25| getExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2424,7 +2424,7 @@ proc_macro.rs: # 25| getIdentifier(): [NameRef] quote_token_with_context # 27| getTokenTree(): [TokenTree] TokenTree # 25| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 25| getTailExpr(): [PathExpr] _s +# 25| getTailExpr(): [VariableAccess] _s # 25| getPath(): [Path] _s # 25| getSegment(): [PathSegment] _s # 25| getIdentifier(): [NameRef] _s @@ -2504,7 +2504,7 @@ proc_macro.rs: # 38| getMacroCallExpansion(): [MatchExpr] match ... { ... } # 38| getScrutinee(): [CallExpr] ...::parse::<...>(...) # 38| getArgList(): [ArgList] ArgList -# 38| getArg(0): [PathExpr,VariableAccess] input +# 38| getArg(0): [VariableAccess] input # 38| getPath(): [Path] input # 38| getSegment(): [PathSegment] input # 38| getIdentifier(): [NameRef] input @@ -2526,7 +2526,7 @@ proc_macro.rs: # 38| getIdentifier(): [NameRef] parse # 38| getMatchArmList(): [MatchArmList] MatchArmList # 38| getArm(0): [MatchArm] ... => data -# 38| getExpr(): [PathExpr,VariableAccess] data +# 38| getExpr(): [VariableAccess] data # 38| getPath(): [Path] data # 38| getSegment(): [PathSegment] data # 38| getIdentifier(): [NameRef] data @@ -2552,7 +2552,7 @@ proc_macro.rs: # 38| getArg(0): [MethodCallExpr] err.to_compile_error() # 38| getArgList(): [ArgList] ArgList # 38| getIdentifier(): [NameRef] to_compile_error -# 38| getReceiver(): [PathExpr,VariableAccess] err +# 38| getReceiver(): [VariableAccess] err # 38| getPath(): [Path] err # 38| getSegment(): [PathSegment] err # 38| getIdentifier(): [NameRef] err @@ -2586,7 +2586,7 @@ proc_macro.rs: # 39| getStatement(1): [LetStmt] let ... = ... # 39| getInitializer(): [RefExpr] &... # 39| getExpr(): [FieldExpr] ast.ident -# 39| getContainer(): [PathExpr,VariableAccess] ast +# 39| getContainer(): [VariableAccess] ast # 39| getPath(): [Path] ast # 39| getSegment(): [PathSegment] ast # 39| getIdentifier(): [NameRef] ast @@ -2623,7 +2623,7 @@ proc_macro.rs: # 40| getTokenTree(): [TokenTree] TokenTree # 40| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr # 40| getArg(0): [FormatArgsArg] FormatArgsArg -# 40| getExpr(): [PathExpr,VariableAccess] name +# 40| getExpr(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2652,7 +2652,7 @@ proc_macro.rs: # 40| getArg(1): [MethodCallExpr] name.span() # 40| getArgList(): [ArgList] ArgList # 40| getIdentifier(): [NameRef] span -# 40| getReceiver(): [PathExpr,VariableAccess] name +# 40| getReceiver(): [VariableAccess] name # 40| getPath(): [Path] name # 40| getSegment(): [PathSegment] name # 40| getIdentifier(): [NameRef] name @@ -2776,7 +2776,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2812,12 +2812,12 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::to_tokens(...) # 42| getArgList(): [ArgList] ArgList # 42| getArg(0): [RefExpr] &const_ident -# 42| getExpr(): [PathExpr,VariableAccess] const_ident +# 42| getExpr(): [VariableAccess] const_ident # 42| getPath(): [Path] const_ident # 42| getSegment(): [PathSegment] const_ident # 42| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2867,7 +2867,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_colon(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2906,7 +2906,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::push_ident(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2952,7 +2952,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_eq(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -2991,7 +2991,7 @@ proc_macro.rs: # 42| getExpr(): [CallExpr] ...::parse(...) # 42| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3037,7 +3037,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_semi(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3076,7 +3076,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3122,7 +3122,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3168,7 +3168,7 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::push_ident(...) # 44| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3204,12 +3204,12 @@ proc_macro.rs: # 44| getExpr(): [CallExpr] ...::to_tokens(...) # 44| getArgList(): [ArgList] ArgList # 44| getArg(0): [RefExpr] &name -# 44| getExpr(): [PathExpr,VariableAccess] name +# 44| getExpr(): [VariableAccess] name # 44| getPath(): [Path] name # 44| getSegment(): [PathSegment] name # 44| getIdentifier(): [NameRef] name # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3259,7 +3259,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_group(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3384,7 +3384,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3430,7 +3430,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3476,7 +3476,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_group(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3552,7 +3552,7 @@ proc_macro.rs: # 41| getExpr(): [CallExpr] ...::push_rarrow(...) # 41| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3591,7 +3591,7 @@ proc_macro.rs: # 45| getExpr(): [CallExpr] ...::push_ident(...) # 45| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3637,7 +3637,7 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::push_group(...) # 46| getArgList(): [ArgList] ArgList # 41| getArg(0): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3687,12 +3687,12 @@ proc_macro.rs: # 46| getExpr(): [CallExpr] ...::to_tokens(...) # 46| getArgList(): [ArgList] ArgList # 46| getArg(0): [RefExpr] &const_ident -# 46| getExpr(): [PathExpr,VariableAccess] const_ident +# 46| getExpr(): [VariableAccess] const_ident # 46| getPath(): [Path] const_ident # 46| getSegment(): [PathSegment] const_ident # 46| getIdentifier(): [NameRef] const_ident # 41| getArg(1): [RefExpr] &mut _s -# 41| getExpr(): [PathExpr] _s +# 41| getExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3706,7 +3706,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] ToTokens # 41| getSegment(): [PathSegment] to_tokens # 41| getIdentifier(): [NameRef] to_tokens -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3752,7 +3752,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 45| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s @@ -3798,7 +3798,7 @@ proc_macro.rs: # 41| getIdentifier(): [NameRef] quote_token_with_context # 44| getTokenTree(): [TokenTree] TokenTree # 41| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr -# 41| getTailExpr(): [PathExpr] _s +# 41| getTailExpr(): [VariableAccess] _s # 41| getPath(): [Path] _s # 41| getSegment(): [PathSegment] _s # 41| getIdentifier(): [NameRef] _s diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index d60f12b43d7..c0f37bcd18e 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -798,7 +798,7 @@ mod patterns { Some(y) => { // $ item=Some None // $ item=None } - None => // $ MISSING: item=None + None => // $ item=None None // $ item=None }; match y { @@ -827,7 +827,7 @@ mod patterns { _ => 0 }; match x { - Some(z) => z, // $ item=Some $ MISSING: item=constz + Some(z) => z, // $ item=Some item=constz _ => 0 }; } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index c460fea7f5b..20c7e7799be 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -405,6 +405,7 @@ resolvePath | main.rs:797:24:797:26 | i32 | {EXTERNAL LOCATION} | struct i32 | | main.rs:798:13:798:16 | Some | {EXTERNAL LOCATION} | Some | | main.rs:799:17:799:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:801:13:801:16 | None | {EXTERNAL LOCATION} | None | | main.rs:802:17:802:20 | None | {EXTERNAL LOCATION} | None | | main.rs:811:19:811:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | | main.rs:811:26:811:28 | i32 | {EXTERNAL LOCATION} | struct i32 | @@ -413,6 +414,8 @@ resolvePath | main.rs:823:17:823:20 | Some | {EXTERNAL LOCATION} | Some | | main.rs:825:13:825:16 | Some | {EXTERNAL LOCATION} | Some | | main.rs:830:13:830:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:830:18:830:18 | z | main.rs:817:5:819:12 | Const | +| main.rs:830:24:830:24 | z | main.rs:817:5:819:12 | Const | | main.rs:837:5:837:6 | my | main.rs:1:1:1:7 | mod my | | main.rs:837:5:837:14 | ...::nested | my.rs:1:1:1:15 | mod nested | | main.rs:837:5:837:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.ql b/rust/ql/test/library-tests/path-resolution/path-resolution.ql index 0fe49a8e386..f7955929b83 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql @@ -5,7 +5,7 @@ import TestUtils query predicate mod(Module m) { toBeTested(m) } -query predicate resolvePath(Path p, ItemNode i) { +query predicate resolvePath(PathExt p, ItemNode i) { toBeTested(p) and not p.isFromMacroExpansion() and i = resolvePath(p) diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 3efada83369..f93586d373b 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -1865,6 +1865,7 @@ edges | main.rs:794:13:794:19 | Some(...) | main.rs:796:13:796:13 | _ | no-match | | main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | | | main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | match | +| main.rs:794:18:794:18 | z | main.rs:796:13:796:13 | _ | no-match | | main.rs:795:17:795:17 | z | main.rs:793:9:797:9 | match x { ... } | | | main.rs:796:13:796:13 | _ | main.rs:796:18:796:18 | 0 | match | | main.rs:796:18:796:18 | 0 | main.rs:793:9:797:9 | match x { ... } | | diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index e6075a0cb3f..0acf3e94c5b 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -198,11 +198,11 @@ definition | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | | main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | | main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | | main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | | main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | | main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | | main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | -| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -413,12 +413,12 @@ read | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | | main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | | main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | | main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | | main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | | main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | | main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:793:15:793:15 | x | | main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | -| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -587,11 +587,11 @@ firstRead | main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | | main.rs:759:13:759:13 | x | main.rs:759:13:759:13 | x | main.rs:761:19:761:19 | x | | main.rs:760:13:760:13 | y | main.rs:760:13:760:13 | y | main.rs:768:15:768:15 | y | +| main.rs:769:13:769:16 | N0ne | main.rs:769:13:769:16 | N0ne | main.rs:770:17:770:20 | N0ne | | main.rs:776:13:776:22 | test_alias | main.rs:776:13:776:22 | test_alias | main.rs:779:13:779:22 | test_alias | | main.rs:778:13:778:16 | test | main.rs:778:13:778:16 | test | main.rs:780:9:780:12 | test | | main.rs:787:13:787:13 | x | main.rs:787:13:787:13 | x | main.rs:788:15:788:15 | x | | main.rs:789:18:789:18 | x | main.rs:789:18:789:18 | x | main.rs:790:20:790:20 | x | -| main.rs:794:18:794:18 | z | main.rs:794:18:794:18 | z | main.rs:795:17:795:17 | z | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index b8a3187421f..fe13f89b177 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -767,7 +767,7 @@ mod patterns { }; match y { // $ read_access=y1 N0ne => // n0ne - N0ne // $ MISSING: read_access=n0ne + N0ne // $ read_access=n0ne } } @@ -792,7 +792,7 @@ mod patterns { }; match x { // $ read_access=x1 Some(z) => - z, // $ SPURIOUS: read_access=z + z, _ => 0 }; } diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 42d02b51419..ea360357d97 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -145,11 +145,11 @@ variable | main.rs:759:13:759:13 | x | | main.rs:760:13:760:13 | y | | main.rs:762:18:762:18 | y | +| main.rs:769:13:769:16 | N0ne | | main.rs:776:13:776:22 | test_alias | | main.rs:778:13:778:16 | test | | main.rs:787:13:787:13 | x | | main.rs:789:18:789:18 | x | -| main.rs:794:18:794:18 | z | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -374,12 +374,12 @@ variableAccess | main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | | main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | | main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | | main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | | main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | | main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | | main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | | main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | -| main.rs:795:17:795:17 | z | main.rs:794:18:794:18 | z | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | @@ -594,12 +594,12 @@ variableReadAccess | main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | | main.rs:761:19:761:19 | x | main.rs:759:13:759:13 | x | | main.rs:768:15:768:15 | y | main.rs:760:13:760:13 | y | +| main.rs:770:17:770:20 | N0ne | main.rs:769:13:769:16 | N0ne | | main.rs:779:13:779:22 | test_alias | main.rs:776:13:776:22 | test_alias | | main.rs:780:9:780:12 | test | main.rs:778:13:778:16 | test | | main.rs:788:15:788:15 | x | main.rs:787:13:787:13 | x | | main.rs:790:20:790:20 | x | main.rs:789:18:789:18 | x | | main.rs:793:15:793:15 | x | main.rs:787:13:787:13 | x | -| main.rs:795:17:795:17 | z | main.rs:794:18:794:18 | z | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | From 8acfc7f75201d518d7d441716a0da2750495649b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sat, 15 Nov 2025 15:10:08 +0100 Subject: [PATCH 830/965] Rust: Handle `pub extern crate` in path resolution --- rust/ql/lib/codeql/rust/internal/PathResolution.qll | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 54df4a3ca0c..f4346062f37 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -259,8 +259,7 @@ abstract class ItemNode extends Locatable { kind.isInternal() and useOpt.isNone() or - externCrateEdge(this, name, result) and - kind.isInternal() and + externCrateEdge(this, name, kind, result) and useOpt.isNone() or macroExportEdge(this, name, result) and @@ -276,7 +275,7 @@ abstract class ItemNode extends Locatable { result = use_.getASuccessor(name, kind, _) ) or - exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessor(name, kind, useOpt) | + exists(ExternCrateItemNode ec | result = ec.getASuccessor(name, kind, useOpt) | ec = this.getASuccessor(_, _, _) or // if the extern crate appears in the crate root, then the crate name is also added @@ -527,7 +526,7 @@ class ExternCrateItemNode extends ItemNode instanceof ExternCrate { override Namespace getNamespace() { none() } - override Visibility getVisibility() { none() } + override Visibility getVisibility() { result = ExternCrate.super.getVisibility() } override Attr getAnAttr() { result = ExternCrate.super.getAnAttr() } @@ -2107,8 +2106,11 @@ private predicate useImportEdge(Use use, string name, ItemNode item, SuccessorKi /** Holds if `ec` imports `crate` as `name`. */ pragma[nomagic] -private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItemNode crate) { +private predicate externCrateEdge( + ExternCrateItemNode ec, string name, SuccessorKind kind, CrateItemNode crate +) { name = ec.getName() and + (if ec.isPublic() then kind.isBoth() else kind.isInternal()) and exists(SourceFile f, string s | ec.getFile() = f.getFile() and s = ec.(ExternCrate).getIdentifier().getText() From 3d49eff4a570e7d71453bb4dc864235f11bf79fa Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 19 Nov 2025 09:38:26 +0100 Subject: [PATCH 831/965] Rust: Add integration test for `pub extern crate` resolution --- rust/ql/integration-tests/hello-workspace/exe/src/main.rs | 1 + rust/ql/integration-tests/hello-workspace/functions.expected | 2 +- rust/ql/integration-tests/hello-workspace/lib/src/lib.rs | 2 ++ .../integration-tests/hello-workspace/summary.cargo.expected | 4 ++-- .../hello-workspace/summary.rust-project.expected | 4 ++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/rust/ql/integration-tests/hello-workspace/exe/src/main.rs b/rust/ql/integration-tests/hello-workspace/exe/src/main.rs index 5bb9375719e..63670ff63a3 100644 --- a/rust/ql/integration-tests/hello-workspace/exe/src/main.rs +++ b/rust/ql/integration-tests/hello-workspace/exe/src/main.rs @@ -7,4 +7,5 @@ mod a_module; fn main() { my_macro2!(); // $ item=my_macro2 hello(); // $ item=HELLO + lib::extern_crate_alias::a_module::hello(); // $ item=HELLO } diff --git a/rust/ql/integration-tests/hello-workspace/functions.expected b/rust/ql/integration-tests/hello-workspace/functions.expected index 6d8aa73cd83..b6d54fa07d3 100644 --- a/rust/ql/integration-tests/hello-workspace/functions.expected +++ b/rust/ql/integration-tests/hello-workspace/functions.expected @@ -1,2 +1,2 @@ -| exe/src/main.rs:7:1:10:1 | fn main | +| exe/src/main.rs:7:1:11:1 | fn main | | lib/src/a_module/mod.rs:1:1:4:1 | fn hello | diff --git a/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs b/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs index f313f76edad..7999517c72d 100644 --- a/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs +++ b/rust/ql/integration-tests/hello-workspace/lib/src/lib.rs @@ -15,3 +15,5 @@ mod macros { } pub mod a_module; + +pub extern crate self as extern_crate_alias; diff --git a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected index cb07b66d437..11fba34f901 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected @@ -9,8 +9,8 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 21 | -| Lines of user code extracted | 21 | +| Lines of code extracted | 23 | +| Lines of user code extracted | 23 | | Macro calls - resolved | 10 | | Macro calls - total | 10 | | Macro calls - unresolved | 0 | diff --git a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected index cb07b66d437..11fba34f901 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected @@ -9,8 +9,8 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 21 | -| Lines of user code extracted | 21 | +| Lines of code extracted | 23 | +| Lines of user code extracted | 23 | | Macro calls - resolved | 10 | | Macro calls - total | 10 | | Macro calls - unresolved | 0 | From 9bfe847fda437ae5dd73100108edf18d953c5a36 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 19 Nov 2025 10:08:09 +0000 Subject: [PATCH 832/965] C++: Fix awful joins on bochs: ``` Evaluated relational algebra for predicate DataFlowPrivate::storeStepImpl/4#b2c79f9a@13be12rc with tuple counts: 9 ~0% {3} r1 = JOIN `FlowSummaryImpl::Private::Steps::summaryStoreStep/3#5c2d4899` WITH DataFlowUtil::TFlowSummaryNode#40da8361 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Rhs.1 9 ~0% {4} | JOIN WITH DataFlowUtil::TFlowSummaryNode#40da8361 ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Rhs.1, _ 9 ~12% {4} | REWRITE WITH Out.3 := true 1853420 ~0% {3} r2 = SCAN `DataFlowPrivate::nodeHasInstruction/3#f469bb06` OUTPUT In.1, In.0, In.2 100282 ~0% {3} | JOIN WITH `Instruction::StoreInstruction.getDestinationAddressOperand/0#dispred#596a4aba` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2 127910 ~0% {6} | JOIN WITH `DataFlowPrivate::numberOfLoadsFromOperand/4#7e555666_1023#join_rhs` ON FIRST 1 OUTPUT _, Lhs.1, Rhs.1, Rhs.3, Lhs.2, Rhs.2 127910 ~0% {4} | REWRITE WITH Tmp.0 := 1, Out.0 := (Tmp.0 + In.4 + In.5) KEEPING 4 4178182721 ~1% {4} | JOIN WITH `DataFlowUtil::FieldContent.getIndirectionIndex/0#dispred#cc69866f_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3 4290552803 ~0% {5} | JOIN WITH `DataFlowUtil::FieldContent.getAField/0#dispred#ba1c91e5` ON FIRST 1 OUTPUT Lhs.2, Lhs.1, Lhs.3, Lhs.0, Rhs.1 3033745816 ~5% {7} | JOIN WITH DataFlowUtil::PostFieldUpdateNode#b86f3a84_1023#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.2, Rhs.3 3033745816 ~3% {9} | JOIN WITH DataFlowUtil::TPostUpdateNodeImpl#f5e76b7a_21#join_rhs ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.0, Lhs.5, Lhs.6, Rhs.1, _ {8} | REWRITE WITH Tmp.8 := 1, TEST InOut.7 = Tmp.8 KEEPING 8 1516872908 ~0% {7} | SCAN OUTPUT In.4, In.5, In.6, In.0, In.1, In.2, In.3 2409090286 ~1% {6} | JOIN WITH DataFlowUtil::PostFieldUpdateNode#b86f3a84_0231#join_rhs ON FIRST 3 OUTPUT Rhs.3, Lhs.6, Lhs.3, Lhs.4, Lhs.5, Lhs.0 66016 ~45% {4} | JOIN WITH `DataFlowUtil::FieldAddress.getField/0#dispred#bdd01c1a` ON FIRST 2 OUTPUT Lhs.2, Lhs.4, Lhs.5, Lhs.3 66025 ~45% {4} r3 = r1 UNION r2 return r3 ``` --- .../cpp/ir/dataflow/internal/DataFlowPrivate.qll | 11 ++++++++--- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 15 +++------------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 03289a42e40..b5f4f88f4bd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -861,6 +861,10 @@ predicate jumpStep(Node n1, Node n2) { n2.(FlowSummaryNode).getSummaryNode()) } +bindingset[c] +pragma[inline_late] +private int getIndirectionIndexLate(Content c) { result = c.getIndirectionIndex() } + /** * Holds if data can flow from `node1` to `node2` via an assignment to `f`. * Thus, `node2` references an object with a field `f` that contains the @@ -877,12 +881,13 @@ predicate storeStepImpl(Node node1, Content c, Node node2, boolean certain) { | postFieldUpdate = node2 and fc = c and - nodeHasInstruction(node1, store, pragma[only_bind_into](indirectionIndex1)) and + nodeHasInstruction(node1, pragma[only_bind_into](store), + pragma[only_bind_into](indirectionIndex1)) and postFieldUpdate.getIndirectionIndex() = 1 and numberOfLoadsFromOperand(postFieldUpdate.getFieldAddress(), store.getDestinationAddressOperand(), numberOfLoads, certain) and fc.getAField() = postFieldUpdate.getUpdatedField() and - fc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads + getIndirectionIndexLate(fc) = 1 + indirectionIndex1 + numberOfLoads ) or // models-as-data summarized flow @@ -968,7 +973,7 @@ predicate readStep(Node node1, ContentSet c, Node node2) { nodeHasOperand(node1, fa1.getObjectAddressOperand(), 1) and numberOfLoadsFromOperand(fa1, operand, numberOfLoads, _) and fc.getAField() = fa1.getField() and - fc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads + getIndirectionIndexLate(fc) = indirectionIndex2 + numberOfLoads ) or // models-as-data summarized flow 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 7a9ab6ea2f7..7c2b15b1812 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 @@ -2197,10 +2197,7 @@ class NonUnionFieldContent extends FieldContent, TNonUnionContent { override Field getAField() { result = f } /** Gets the indirection index of this `FieldContent`. */ - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { exists(FieldContent fc | @@ -2230,10 +2227,7 @@ class UnionContent extends FieldContent, TUnionContent { Union getUnion() { result = u } /** Gets the indirection index of this `UnionContent`. */ - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { exists(UnionContent uc | @@ -2257,10 +2251,7 @@ class ElementContent extends Content, TElementContent { ElementContent() { this = TElementContent(indirectionIndex) } - pragma[inline] - override int getIndirectionIndex() { - pragma[only_bind_into](result) = pragma[only_bind_out](indirectionIndex) - } + override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { none() } From 7d746d4e3f383f5e3a1d22d682b547d65dfa8b4a Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 14 Nov 2025 08:22:15 +0100 Subject: [PATCH 833/965] C#: Move .NET 10 RC2 basic integration test all platforms folder. --- .../{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/Program.cs | 0 .../dotnet_10_rc2 => all-platforms/dotnet_10}/dotnet_build.csproj | 0 .../dotnet_10_rc2 => all-platforms/dotnet_10}/global.json | 0 .../{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/test.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename csharp/ql/integration-tests/{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/Program.cs (100%) rename csharp/ql/integration-tests/{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/dotnet_build.csproj (100%) rename csharp/ql/integration-tests/{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/global.json (100%) rename csharp/ql/integration-tests/{windows/dotnet_10_rc2 => all-platforms/dotnet_10}/test.py (100%) diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/all-platforms/dotnet_10/Program.cs similarity index 100% rename from csharp/ql/integration-tests/windows/dotnet_10_rc2/Program.cs rename to csharp/ql/integration-tests/all-platforms/dotnet_10/Program.cs diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/all-platforms/dotnet_10/dotnet_build.csproj similarity index 100% rename from csharp/ql/integration-tests/windows/dotnet_10_rc2/dotnet_build.csproj rename to csharp/ql/integration-tests/all-platforms/dotnet_10/dotnet_build.csproj diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json similarity index 100% rename from csharp/ql/integration-tests/windows/dotnet_10_rc2/global.json rename to csharp/ql/integration-tests/all-platforms/dotnet_10/global.json diff --git a/csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py similarity index 100% rename from csharp/ql/integration-tests/windows/dotnet_10_rc2/test.py rename to csharp/ql/integration-tests/all-platforms/dotnet_10/test.py From d7545f21cb07c8b9e8bf4b3ccaa976e5e9a22275 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 14 Nov 2025 08:23:14 +0100 Subject: [PATCH 834/965] C#: Enable tests for all platforms and use .NET 10 instead of .NET 10 RC 2. --- csharp/ql/integration-tests/all-platforms/dotnet_10/global.json | 2 +- csharp/ql/integration-tests/all-platforms/dotnet_10/test.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json index e870e2cf7bd..481e95ec7be 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.100-rc.2.25502.107" + "version": "10.0.100" } } diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py index 00905b67cd4..35612501c3c 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py @@ -1,6 +1,5 @@ import os import runs_on -@runs_on.windows def test(codeql, csharp): codeql.database.create() From ed92352faf889fc5ed9c8fb8efa53f52655c87d5 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 14 Nov 2025 08:23:47 +0100 Subject: [PATCH 835/965] C#: Remove the linux specific .NET 10 RC 2 test. --- .../integration-tests/linux/dotnet_10_rc2/Program.cs | 1 - .../linux/dotnet_10_rc2/dotnet_build.csproj | 10 ---------- .../integration-tests/linux/dotnet_10_rc2/global.json | 5 ----- .../ql/integration-tests/linux/dotnet_10_rc2/test.py | 6 ------ 4 files changed, 22 deletions(-) delete mode 100644 csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs delete mode 100644 csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj delete mode 100644 csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json delete mode 100644 csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs b/csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs deleted file mode 100644 index bd44629f7e2..00000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/Program.cs +++ /dev/null @@ -1 +0,0 @@ -Console.WriteLine($"{string.Join(",", args)}"); diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj b/csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj deleted file mode 100644 index dfb40caafcf..00000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/dotnet_build.csproj +++ /dev/null @@ -1,10 +0,0 @@ - - - - Exe - net10.0 - enable - enable - - - diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json b/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json deleted file mode 100644 index e870e2cf7bd..00000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "10.0.100-rc.2.25502.107" - } -} diff --git a/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py b/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py deleted file mode 100644 index 148626b1cb8..00000000000 --- a/csharp/ql/integration-tests/linux/dotnet_10_rc2/test.py +++ /dev/null @@ -1,6 +0,0 @@ -import os -import runs_on - -@runs_on.linux -def test(codeql, csharp): - codeql.database.create() From 8df57d81a0c6ce66f616723218f0e552fe9c1792 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 14 Nov 2025 11:13:26 +0100 Subject: [PATCH 836/965] C#: Add basic buildless test for .NET 10. --- .../ql/integration-tests/all-platforms/dotnet_10/test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py index 35612501c3c..903d3430061 100644 --- a/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py +++ b/csharp/ql/integration-tests/all-platforms/dotnet_10/test.py @@ -1,5 +1,5 @@ -import os -import runs_on - -def test(codeql, csharp): +def test1(codeql, csharp): codeql.database.create() + +def test2(codeql, csharp): + codeql.database.create(build_mode="none") From 0daee6fbf2d9fa1d60afbcdc3123b4a3d6caac8a Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 18 Nov 2025 14:54:40 +0100 Subject: [PATCH 837/965] C#: Specifically download .NET for Arm architecture. --- .../DotNet.cs | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 4a4fd651a5b..761062bd6af 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -254,7 +254,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching else { var dotnetInstallPath = actions.PathCombine(tempWorkingDirectory, ".dotnet", "dotnet-install.sh"); - var downloadDotNetInstallSh = BuildScript.DownloadFile( "https://dot.net/v1/dotnet-install.sh", dotnetInstallPath, @@ -269,14 +268,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching prelude = downloadDotNetInstallSh & chmod.Script; postlude = shouldCleanUp ? BuildScript.DeleteFile(dotnetInstallPath) : BuildScript.Success; - getInstall = version => new CommandBuilder(actions). - RunCommand(dotnetInstallPath). - Argument("--channel"). - Argument("release"). - Argument("--version"). - Argument(version). - Argument("--install-dir"). - Argument(path).Script; + getInstall = version => + { + var cb = new CommandBuilder(actions). + RunCommand(dotnetInstallPath). + Argument("--channel"). + Argument("release"). + Argument("--version"). + Argument(version); + + // Request ARM64 architecture on Apple Silicon machines + if (actions.IsRunningOnAppleSilicon()) + { + cb.Argument("--architecture"). + Argument("arm64"); + } + + return cb.Argument("--install-dir"). + Argument(path).Script; + }; } var dotnetInfo = new CommandBuilder(actions). From fba496f911ff146822f85fa6c55cfcc66430dac1 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 18 Nov 2025 16:31:09 +0100 Subject: [PATCH 838/965] C#: Add proper .NET environment for dotnet info and list-sdks and streamline the minimal dotnet environment. --- .../Semmle.Autobuild.CSharp/DotNetRule.cs | 6 +----- .../DotNet.cs | 7 +++++-- .../DotNetCliInvoker.cs | 11 +++++++---- .../IDotNetCliInvoker.cs | 13 +++++++++++++ 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs index a29079d205b..a396ab751ea 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs @@ -84,11 +84,7 @@ namespace Semmle.Autobuild.CSharp var temp = FileUtils.GetTemporaryWorkingDirectory(builder.Actions.GetEnvironmentVariable, builder.Options.Language.UpperCaseName, out var shouldCleanUp); return DotNet.WithDotNet(builder.Actions, builder.Logger, builder.Paths.Select(x => x.Item1), temp, shouldCleanUp, ensureDotNetAvailable, builder.Options.DotNetVersion, installDir => { - var env = new Dictionary - { - { "DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true" }, - { "MSBUILDDISABLENODEREUSE", "1" } - }; + var env = DotNet.MinimalEnvironment.ToDictionary(); if (installDir is not null) { // The installation succeeded, so use the newly installed .NET diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 761062bd6af..7bc79238415 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; using System.Linq; using Newtonsoft.Json.Linq; @@ -140,6 +141,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching // The version number should be kept in sync with the version .NET version used for building the application. public const string LatestDotNetSdkVersion = "9.0.300"; + public static ReadOnlyDictionary MinimalEnvironment => IDotNetCliInvoker.MinimalEnvironment; + /// /// Returns a script for downloading relevant versions of the /// .NET SDK. The SDK(s) will be installed at installDir @@ -289,7 +292,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching }; } - var dotnetInfo = new CommandBuilder(actions). + var dotnetInfo = new CommandBuilder(actions, environment: MinimalEnvironment). RunCommand(actions.PathCombine(path, "dotnet")). Argument("--info").Script; @@ -321,7 +324,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private static BuildScript GetInstalledSdksScript(IBuildActions actions) { - var listSdks = new CommandBuilder(actions, silent: true). + var listSdks = new CommandBuilder(actions, silent: true, environment: MinimalEnvironment). RunCommand("dotnet"). Argument("--list-sdks"); return listSdks.Script; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs index e3efce09481..45f69a1fdfc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetCliInvoker.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Diagnostics; using Semmle.Util; using Semmle.Util.Logging; @@ -36,10 +37,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { startInfo.WorkingDirectory = workingDirectory; } - // Set the .NET CLI language to English to avoid localized output. - startInfo.EnvironmentVariables["DOTNET_CLI_UI_LANGUAGE"] = "en"; - startInfo.EnvironmentVariables["MSBUILDDISABLENODEREUSE"] = "1"; - startInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "true"; + + // Set minimal environment variables. + foreach (var kvp in IDotNetCliInvoker.MinimalEnvironment) + { + startInfo.EnvironmentVariables[kvp.Key] = kvp.Value; + } // Configure the proxy settings, if applicable. if (this.proxy != null) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs index 89631ffa861..6e80e1cb2bf 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Collections.ObjectModel; namespace Semmle.Extraction.CSharp.DependencyFetching { @@ -9,6 +10,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// string Exec { get; } + /// + /// A minimal environment for running the .NET CLI. + /// + /// The .NET CLI language is set to English to avoid localized output. + /// + static ReadOnlyDictionary MinimalEnvironment { get; } = new(new Dictionary + { + {"DOTNET_CLI_UI_LANGUAGE", "en"}, + {"MSBUILDDISABLENODEREUSE", "1"}, + {"DOTNET_SKIP_FIRST_TIME_EXPERIENCE", "true"} + }); + /// /// Execute `dotnet ` and return true if the command succeeded, otherwise false. /// If `silent` is true the output of the command is logged as `debug` otherwise as `info`. From 34de2f53180455cc4f2cfbdb6fbfba709e50c5ba Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 19 Nov 2025 10:48:25 +0100 Subject: [PATCH 839/965] C#: Update linux integration tests (as we have added CLI preferred language as english). --- .../linux/compiler_args/CompilerArgs.expected | 387 +++++++++--------- 1 file changed, 194 insertions(+), 193 deletions(-) diff --git a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected index cb1f6163d71..ee3063b3c2b 100644 --- a/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected +++ b/csharp/ql/integration-tests/linux/compiler_args/CompilerArgs.expected @@ -7,196 +7,197 @@ | 6 | /errorreport:prompt | | 7 | /warn:9 | | 8 | /define:TRACE;DEBUG;NET;NET9_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NET9_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER | -| 9 | /highentropyva+ | -| 10 | /nullable:enable | -| 11 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.CSharp.dll | -| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.Core.dll | -| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.dll | -| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Primitives.dll | -| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Registry.dll | -| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/mscorlib.dll | -| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/netstandard.dll | -| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.AppContext.dll | -| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Buffers.dll | -| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Concurrent.dll | -| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.dll | -| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Immutable.dll | -| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.NonGeneric.dll | -| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Specialized.dll | -| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Annotations.dll | -| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.DataAnnotations.dll | -| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.dll | -| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.EventBasedAsync.dll | -| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Primitives.dll | -| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.TypeConverter.dll | -| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Configuration.dll | -| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Console.dll | -| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Core.dll | -| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.Common.dll | -| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.DataSetExtensions.dll | -| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.dll | -| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Contracts.dll | -| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Debug.dll | -| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.DiagnosticSource.dll | -| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.FileVersionInfo.dll | -| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Process.dll | -| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.StackTrace.dll | -| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TextWriterTraceListener.dll | -| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tools.dll | -| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TraceSource.dll | -| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tracing.dll | -| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.dll | -| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.dll | -| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.Primitives.dll | -| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Dynamic.Runtime.dll | -| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Asn1.dll | -| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Tar.dll | -| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Calendars.dll | -| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.dll | -| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Extensions.dll | -| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.Brotli.dll | -| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.dll | -| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.FileSystem.dll | -| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.ZipFile.dll | -| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.dll | -| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.AccessControl.dll | -| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.dll | -| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.DriveInfo.dll | -| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Primitives.dll | -| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Watcher.dll | -| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.IsolatedStorage.dll | -| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.MemoryMappedFiles.dll | -| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipelines.dll | -| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.AccessControl.dll | -| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.dll | -| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.UnmanagedMemoryStream.dll | -| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.dll | -| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Expressions.dll | -| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Parallel.dll | -| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Queryable.dll | -| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Memory.dll | -| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.dll | -| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.dll | -| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.Json.dll | -| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.HttpListener.dll | -| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Mail.dll | -| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NameResolution.dll | -| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NetworkInformation.dll | -| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Ping.dll | -| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Primitives.dll | -| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Quic.dll | -| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Requests.dll | -| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Security.dll | -| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.ServicePoint.dll | -| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Sockets.dll | -| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebClient.dll | -| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebHeaderCollection.dll | -| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebProxy.dll | -| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.Client.dll | -| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.dll | -| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.dll | -| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.Vectors.dll | -| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ObjectModel.dll | -| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.DispatchProxy.dll | -| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.dll | -| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.dll | -| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.ILGeneration.dll | -| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.Lightweight.dll | -| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Extensions.dll | -| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Metadata.dll | -| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Primitives.dll | -| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.TypeExtensions.dll | -| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Reader.dll | -| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.ResourceManager.dll | -| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Writer.dll | -| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.Unsafe.dll | -| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.VisualC.dll | -| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.dll | -| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Extensions.dll | -| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Handles.dll | -| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.dll | -| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.JavaScript.dll | -| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Intrinsics.dll | -| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Loader.dll | -| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Numerics.dll | -| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.dll | -| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Formatters.dll | -| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Json.dll | -| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Primitives.dll | -| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Xml.dll | -| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.AccessControl.dll | -| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Claims.dll | -| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Algorithms.dll | -| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Cng.dll | -| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Csp.dll | -| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.dll | -| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Encoding.dll | -| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.OpenSsl.dll | -| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Primitives.dll | -| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.X509Certificates.dll | -| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.dll | -| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.dll | -| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.Windows.dll | -| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.SecureString.dll | -| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceModel.Web.dll | -| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceProcess.dll | -| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.CodePages.dll | -| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.dll | -| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.Extensions.dll | -| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encodings.Web.dll | -| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Json.dll | -| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.RegularExpressions.dll | -| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Channels.dll | -| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.dll | -| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Overlapped.dll | -| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Dataflow.dll | -| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.dll | -| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Extensions.dll | -| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Parallel.dll | -| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Thread.dll | -| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.ThreadPool.dll | -| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Timer.dll | -| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.dll | -| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.Local.dll | -| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ValueTuple.dll | -| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.dll | -| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.HttpUtility.dll | -| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Windows.dll | -| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.dll | -| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Linq.dll | -| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.ReaderWriter.dll | -| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Serialization.dll | -| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XDocument.dll | -| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlDocument.dll | -| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlSerializer.dll | -| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.dll | -| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.XDocument.dll | -| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/WindowsBase.dll | -| 175 | /debug+ | -| 176 | /debug:portable | -| 177 | /filealign:512 | -| 178 | /generatedfilesout:obj/Debug/net9.0//generated | -| 179 | /optimize- | -| 180 | /out:obj/Debug/net9.0/test.dll | -| 181 | /refout:obj/Debug/net9.0/refint/test.dll | -| 182 | /target:exe | -| 183 | /warnaserror- | -| 184 | /utf8output | -| 185 | /deterministic+ | -| 186 | /langversion:13.0 | -| 187 | /analyzerconfig:obj/Debug/net9.0/test.GeneratedMSBuildEditorConfig.editorconfig | -| 188 | /analyzerconfig:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_9_default.globalconfig | -| 189 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | -| 190 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | -| 191 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | -| 192 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | -| 193 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | -| 194 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | -| 195 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | -| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | -| 197 | Program.cs | -| 198 | obj/Debug/net9.0/test.GlobalUsings.g.cs | -| 199 | obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs | -| 200 | obj/Debug/net9.0/test.AssemblyInfo.cs | -| 201 | /warnaserror+:NU1605,SYSLIB0011 | +| 9 | /preferreduilang:en | +| 10 | /highentropyva+ | +| 11 | /nullable:enable | +| 12 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.CSharp.dll | +| 13 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.Core.dll | +| 14 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.dll | +| 15 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Primitives.dll | +| 16 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/Microsoft.Win32.Registry.dll | +| 17 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/mscorlib.dll | +| 18 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/netstandard.dll | +| 19 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.AppContext.dll | +| 20 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Buffers.dll | +| 21 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Concurrent.dll | +| 22 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.dll | +| 23 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Immutable.dll | +| 24 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.NonGeneric.dll | +| 25 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Collections.Specialized.dll | +| 26 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Annotations.dll | +| 27 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.DataAnnotations.dll | +| 28 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.dll | +| 29 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.EventBasedAsync.dll | +| 30 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.Primitives.dll | +| 31 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ComponentModel.TypeConverter.dll | +| 32 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Configuration.dll | +| 33 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Console.dll | +| 34 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Core.dll | +| 35 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.Common.dll | +| 36 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.DataSetExtensions.dll | +| 37 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Data.dll | +| 38 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Contracts.dll | +| 39 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Debug.dll | +| 40 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.DiagnosticSource.dll | +| 41 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.FileVersionInfo.dll | +| 42 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Process.dll | +| 43 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.StackTrace.dll | +| 44 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TextWriterTraceListener.dll | +| 45 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tools.dll | +| 46 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.TraceSource.dll | +| 47 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Diagnostics.Tracing.dll | +| 48 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.dll | +| 49 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.dll | +| 50 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Drawing.Primitives.dll | +| 51 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Dynamic.Runtime.dll | +| 52 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Asn1.dll | +| 53 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Formats.Tar.dll | +| 54 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Calendars.dll | +| 55 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.dll | +| 56 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Globalization.Extensions.dll | +| 57 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.Brotli.dll | +| 58 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.dll | +| 59 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.FileSystem.dll | +| 60 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Compression.ZipFile.dll | +| 61 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.dll | +| 62 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.AccessControl.dll | +| 63 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.dll | +| 64 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.DriveInfo.dll | +| 65 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Primitives.dll | +| 66 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.FileSystem.Watcher.dll | +| 67 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.IsolatedStorage.dll | +| 68 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.MemoryMappedFiles.dll | +| 69 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipelines.dll | +| 70 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.AccessControl.dll | +| 71 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.Pipes.dll | +| 72 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.IO.UnmanagedMemoryStream.dll | +| 73 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.dll | +| 74 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Expressions.dll | +| 75 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Parallel.dll | +| 76 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Linq.Queryable.dll | +| 77 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Memory.dll | +| 78 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.dll | +| 79 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.dll | +| 80 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Http.Json.dll | +| 81 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.HttpListener.dll | +| 82 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Mail.dll | +| 83 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NameResolution.dll | +| 84 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.NetworkInformation.dll | +| 85 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Ping.dll | +| 86 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Primitives.dll | +| 87 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Quic.dll | +| 88 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Requests.dll | +| 89 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Security.dll | +| 90 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.ServicePoint.dll | +| 91 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.Sockets.dll | +| 92 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebClient.dll | +| 93 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebHeaderCollection.dll | +| 94 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebProxy.dll | +| 95 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.Client.dll | +| 96 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Net.WebSockets.dll | +| 97 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.dll | +| 98 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Numerics.Vectors.dll | +| 99 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ObjectModel.dll | +| 100 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.DispatchProxy.dll | +| 101 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.dll | +| 102 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.dll | +| 103 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.ILGeneration.dll | +| 104 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Emit.Lightweight.dll | +| 105 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Extensions.dll | +| 106 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Metadata.dll | +| 107 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.Primitives.dll | +| 108 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Reflection.TypeExtensions.dll | +| 109 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Reader.dll | +| 110 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.ResourceManager.dll | +| 111 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Resources.Writer.dll | +| 112 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.Unsafe.dll | +| 113 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.CompilerServices.VisualC.dll | +| 114 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.dll | +| 115 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Extensions.dll | +| 116 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Handles.dll | +| 117 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.dll | +| 118 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.JavaScript.dll | +| 119 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.InteropServices.RuntimeInformation.dll | +| 120 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Intrinsics.dll | +| 121 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Loader.dll | +| 122 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Numerics.dll | +| 123 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.dll | +| 124 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Formatters.dll | +| 125 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Json.dll | +| 126 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Primitives.dll | +| 127 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Runtime.Serialization.Xml.dll | +| 128 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.AccessControl.dll | +| 129 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Claims.dll | +| 130 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Algorithms.dll | +| 131 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Cng.dll | +| 132 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Csp.dll | +| 133 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.dll | +| 134 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Encoding.dll | +| 135 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.OpenSsl.dll | +| 136 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.Primitives.dll | +| 137 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Cryptography.X509Certificates.dll | +| 138 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.dll | +| 139 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.dll | +| 140 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.Principal.Windows.dll | +| 141 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Security.SecureString.dll | +| 142 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceModel.Web.dll | +| 143 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ServiceProcess.dll | +| 144 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.CodePages.dll | +| 145 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.dll | +| 146 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encoding.Extensions.dll | +| 147 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Encodings.Web.dll | +| 148 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.Json.dll | +| 149 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Text.RegularExpressions.dll | +| 150 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Channels.dll | +| 151 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.dll | +| 152 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Overlapped.dll | +| 153 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Dataflow.dll | +| 154 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.dll | +| 155 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Extensions.dll | +| 156 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Tasks.Parallel.dll | +| 157 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Thread.dll | +| 158 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.ThreadPool.dll | +| 159 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Threading.Timer.dll | +| 160 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.dll | +| 161 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Transactions.Local.dll | +| 162 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.ValueTuple.dll | +| 163 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.dll | +| 164 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Web.HttpUtility.dll | +| 165 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Windows.dll | +| 166 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.dll | +| 167 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Linq.dll | +| 168 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.ReaderWriter.dll | +| 169 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.Serialization.dll | +| 170 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XDocument.dll | +| 171 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlDocument.dll | +| 172 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XmlSerializer.dll | +| 173 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.dll | +| 174 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/System.Xml.XPath.XDocument.dll | +| 175 | /reference:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/ref/net9.0/WindowsBase.dll | +| 176 | /debug+ | +| 177 | /debug:portable | +| 178 | /filealign:512 | +| 179 | /generatedfilesout:obj/Debug/net9.0//generated | +| 180 | /optimize- | +| 181 | /out:obj/Debug/net9.0/test.dll | +| 182 | /refout:obj/Debug/net9.0/refint/test.dll | +| 183 | /target:exe | +| 184 | /warnaserror- | +| 185 | /utf8output | +| 186 | /deterministic+ | +| 187 | /langversion:13.0 | +| 188 | /analyzerconfig:obj/Debug/net9.0/test.GeneratedMSBuildEditorConfig.editorconfig | +| 189 | /analyzerconfig:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_9_default.globalconfig | +| 190 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll | +| 191 | /analyzer:/usr/share/dotnet/sdk/9.0.304/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.NetAnalyzers.dll | +| 192 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll | +| 193 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll | +| 194 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll | +| 195 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll | +| 196 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll | +| 197 | /analyzer:/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/9.0.8/analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll | +| 198 | Program.cs | +| 199 | obj/Debug/net9.0/test.GlobalUsings.g.cs | +| 200 | obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs | +| 201 | obj/Debug/net9.0/test.AssemblyInfo.cs | +| 202 | /warnaserror+:NU1605,SYSLIB0011 | From edabbfc12fb0331a2d53b22f6be0578844129dd5 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 19 Nov 2025 11:29:25 +0100 Subject: [PATCH 840/965] C#: Add change note. --- .../ql/lib/change-notes/2025-11-19-autobuilder-stability.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-11-19-autobuilder-stability.md diff --git a/csharp/ql/lib/change-notes/2025-11-19-autobuilder-stability.md b/csharp/ql/lib/change-notes/2025-11-19-autobuilder-stability.md new file mode 100644 index 00000000000..719c44ac8ad --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-11-19-autobuilder-stability.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Improved stability when downloading .NET versions by setting appropriate environment variables for `dotnet` commands. The correct architecture-specific version of .NET is now downloaded on ARM runners. From b3c09389c8349616b1b4aa52a8848e8ee600dfbf Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Wed, 19 Nov 2025 11:57:38 +0100 Subject: [PATCH 841/965] Java: add missing QLDoc The check for QLDoc comments was unfortunately broken for some time, so we missed this. --- .../code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll | 1 + 1 file changed, 1 insertion(+) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll index 3ed92f4c551..cd85883f7bc 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/rangeanalysis/BoundSpecific.qll @@ -9,6 +9,7 @@ private import semmle.code.java.dataflow.SSA as Ssa private import semmle.code.java.dataflow.RangeUtils as RU class SsaVariable extends Ssa::SsaDefinition { + /** Gets a use of this variable. */ Expr getAUse() { result = super.getARead() } } From e235e0473ad3ffd9a2d60febd0df14185e436f01 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 19 Nov 2025 12:49:02 +0100 Subject: [PATCH 842/965] C++: Fix `getAnExpandedArgument` The fix was accidentially lost when rebasing the branch that introduced this predicate. --- cpp/ql/lib/semmle/code/cpp/Compilation.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index c4b3796dec8..87bf586842c 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -97,7 +97,7 @@ class Compilation extends @compilation { /** * Gets an expanded argument passed to the extractor on this invocation. */ - string getAnExpandedArgument() { result = this.getArgument(_) } + string getAnExpandedArgument() { result = this.getExpandedArgument(_) } /** * Gets the `i`th expanded argument passed to the extractor on this From fe3f90e0415b8923955aad56c89b663dfcdded08 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 19 Nov 2025 12:49:54 +0100 Subject: [PATCH 843/965] C++: Make `getExpandedArgument` more robust This make the predicate give back sensible results on (upgraded) databases where we do not have expanded arguments, and avoid having to write case distinctions in places where we would want to use `getExpandedArgument`. --- cpp/ql/lib/semmle/code/cpp/Compilation.qll | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index 87bf586842c..6f19be0481a 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -107,7 +107,11 @@ class Compilation extends @compilation { * includes the arguments from that file, rather than just taking the * argument literally. */ - string getExpandedArgument(int i) { compilation_expanded_args(this, i, result) } + string getExpandedArgument(int i) { + if exists(string arg | compilation_expanded_args(this, _, arg)) + then compilation_expanded_args(this, i, result) + else result = this.getArgument(i) + } /** * Gets the total amount of CPU time spent processing all the files in the From 5cdfb3c0a98417b536f169f00c9038d3eae56410 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 19 Nov 2025 12:58:59 +0100 Subject: [PATCH 844/965] C#: Address review comments. --- .../IDotNetCliInvoker.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs index 6e80e1cb2bf..3a599afe96d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs @@ -13,7 +13,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// A minimal environment for running the .NET CLI. /// - /// The .NET CLI language is set to English to avoid localized output. + /// DOTNET_CLI_UI_LANGUAGE: The .NET CLI language is set to English to avoid localized output. + /// MSBUILDDISABLENODEREUSE: To ensure clean environment for each build. + /// DOTNET_SKIP_FIRST_TIME_EXPERIENCE: To skip first time experience messages. /// static ReadOnlyDictionary MinimalEnvironment { get; } = new(new Dictionary { From 481f627ae0b8d581b18267f221081dba9989127f Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 19 Nov 2025 13:34:26 +0100 Subject: [PATCH 845/965] Rust: Add string literal test --- .../extractor-tests/literal/literal.expected | 48 +++++++++---------- .../test/extractor-tests/literal/literal.rs | 11 +++++ 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/rust/ql/test/extractor-tests/literal/literal.expected b/rust/ql/test/extractor-tests/literal/literal.expected index d229d968467..90857eebe63 100644 --- a/rust/ql/test/extractor-tests/literal/literal.expected +++ b/rust/ql/test/extractor-tests/literal/literal.expected @@ -17,29 +17,29 @@ stringLiteral | literal.rs:22:5:22:11 | "\\\\x52" | | literal.rs:23:5:23:11 | r"\\x52" | integerLiteral -| literal.rs:28:5:28:7 | 123 | | -| literal.rs:29:5:29:10 | 123i32 | i32 | -| literal.rs:30:5:30:10 | 123u32 | u32 | -| literal.rs:31:5:31:11 | 123_u32 | u32 | -| literal.rs:33:5:33:8 | 0xff | | -| literal.rs:34:5:34:11 | 0xff_u8 | u8 | -| literal.rs:35:5:35:12 | 0x01_f32 | | -| literal.rs:36:5:36:11 | 0x01_e3 | | -| literal.rs:38:5:38:8 | 0o70 | | -| literal.rs:39:5:39:12 | 0o70_i16 | i16 | -| literal.rs:41:5:41:25 | 0b1111_1111_1001_0000 | | -| literal.rs:42:5:42:28 | 0b1111_1111_1001_0000i64 | i64 | -| literal.rs:43:5:43:15 | 0b________1 | | -| literal.rs:45:5:45:10 | 0usize | usize | -| literal.rs:48:5:49:10 | 128_i8 | i8 | -| literal.rs:50:5:51:10 | 256_u8 | u8 | +| literal.rs:39:5:39:7 | 123 | | +| literal.rs:40:5:40:10 | 123i32 | i32 | +| literal.rs:41:5:41:10 | 123u32 | u32 | +| literal.rs:42:5:42:11 | 123_u32 | u32 | +| literal.rs:44:5:44:8 | 0xff | | +| literal.rs:45:5:45:11 | 0xff_u8 | u8 | +| literal.rs:46:5:46:12 | 0x01_f32 | | +| literal.rs:47:5:47:11 | 0x01_e3 | | +| literal.rs:49:5:49:8 | 0o70 | | +| literal.rs:50:5:50:12 | 0o70_i16 | i16 | +| literal.rs:52:5:52:25 | 0b1111_1111_1001_0000 | | +| literal.rs:53:5:53:28 | 0b1111_1111_1001_0000i64 | i64 | +| literal.rs:54:5:54:15 | 0b________1 | | +| literal.rs:56:5:56:10 | 0usize | usize | +| literal.rs:59:5:60:10 | 128_i8 | i8 | +| literal.rs:61:5:62:10 | 256_u8 | u8 | floatLiteral -| literal.rs:56:5:56:8 | 5f32 | f32 | -| literal.rs:58:5:58:12 | 123.0f64 | f64 | -| literal.rs:59:5:59:10 | 0.1f64 | f64 | -| literal.rs:60:5:60:10 | 0.1f32 | f32 | -| literal.rs:61:5:61:14 | 12E+99_f64 | f64 | -| literal.rs:62:18:62:19 | 2. | | +| literal.rs:67:5:67:8 | 5f32 | f32 | +| literal.rs:69:5:69:12 | 123.0f64 | f64 | +| literal.rs:70:5:70:10 | 0.1f64 | f64 | +| literal.rs:71:5:71:10 | 0.1f32 | f32 | +| literal.rs:72:5:72:14 | 12E+99_f64 | f64 | +| literal.rs:73:18:73:19 | 2. | | booleanLiteral -| literal.rs:66:5:66:8 | true | -| literal.rs:67:5:67:9 | false | +| literal.rs:77:5:77:8 | true | +| literal.rs:78:5:78:9 | false | diff --git a/rust/ql/test/extractor-tests/literal/literal.rs b/rust/ql/test/extractor-tests/literal/literal.rs index ea4ccdece63..4a91c3e7041 100644 --- a/rust/ql/test/extractor-tests/literal/literal.rs +++ b/rust/ql/test/extractor-tests/literal/literal.rs @@ -21,6 +21,17 @@ fn string_literals() { r"R"; // R "\\x52"; r"\x52"; // \x52 + + " + A normal string literal + across many + lines + "; + + r#" + A raw string literal + across multiple lines + "#; } fn integer_literals() { From 0e539dbca5716c6e643620770309704ef579ec23 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 19 Nov 2025 13:39:48 +0100 Subject: [PATCH 846/965] Rust: Handle string literals with line breaks --- rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll | 2 +- rust/ql/test/extractor-tests/literal/literal.expected | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll index a836a4c4075..45c18ac3a9d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll @@ -68,7 +68,7 @@ module Impl { * [1]: https://doc.rust-lang.org/reference/tokens.html#string-literals */ class StringLiteralExpr extends LiteralExpr { - StringLiteralExpr() { this.getTextValue().regexpMatch("r?#*\".*\"#*") } + StringLiteralExpr() { this.getTextValue().charAt(0) = ["\"", "r"] } override string getAPrimaryQlClass() { result = "StringLiteralExpr" } } diff --git a/rust/ql/test/extractor-tests/literal/literal.expected b/rust/ql/test/extractor-tests/literal/literal.expected index 90857eebe63..bc08d37fc96 100644 --- a/rust/ql/test/extractor-tests/literal/literal.expected +++ b/rust/ql/test/extractor-tests/literal/literal.expected @@ -16,6 +16,8 @@ stringLiteral | literal.rs:21:5:21:8 | r"R" | | literal.rs:22:5:22:11 | "\\\\x52" | | literal.rs:23:5:23:11 | r"\\x52" | +| literal.rs:25:5:29:5 | "\n A normal string literal\n... | +| literal.rs:31:5:34:6 | r#"\n A raw string literal\n ... | integerLiteral | literal.rs:39:5:39:7 | 123 | | | literal.rs:40:5:40:10 | 123i32 | i32 | From 8fef60464ed311a7e176cf09c3865828acadde3c Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 19 Nov 2025 13:46:10 +0100 Subject: [PATCH 847/965] JS: Remove out-commented code --- javascript/ql/lib/semmle/javascript/internal/CachedStages.qll | 2 -- 1 file changed, 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll index ae9fe0bce27..17aa82ced6c 100644 --- a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll +++ b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll @@ -171,8 +171,6 @@ module Stages { or exists(any(DataFlow::PropRef ref).getBase()) or - // exists(any(DataFlow::ClassNode cls)) // Depends on AnalyzedNode - // or exists(any(DataFlow::CallNode node).getArgument(_)) or exists(any(DataFlow::CallNode node).getAnArgument()) From efa438a352d8f3dde7ea6516ef089e2eb6f8cb86 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 19 Nov 2025 13:47:30 +0100 Subject: [PATCH 848/965] JS: Move identityFunctionStep back into CachedSteps module --- .../dataflow/internal/FlowSteps.qll | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll index 0f5eff53258..2d199887296 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll @@ -520,23 +520,23 @@ private module CachedSteps { predicate receiverPropWrite(Function f, string prop, DataFlow::Node rhs) { DataFlow::thisNode(f).hasPropertyWrite(prop, rhs) } + + /** + * Holds if there is a step from `pred` to `succ` through a call to an identity function. + */ + overlay[local] + cached + predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { + exists(DataFlow::GlobalVarRefNode global | + global.getName() = "Object" and + succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and + pred = succ.getArgument(0) + ) + } } import CachedSteps -/** - * Holds if there is a step from `pred` to `succ` through a call to an identity function. - */ -overlay[local] -cached -predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { - exists(DataFlow::GlobalVarRefNode global | - global.getName() = "Object" and - succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and - pred = succ.getArgument(0) - ) -} - /** * A utility class that is equivalent to `boolean` but does not require type joining. */ From 2c20d3ffebe5f9fb8f231026061af7d22056cfb7 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 9 Jul 2025 14:55:27 +0100 Subject: [PATCH 849/965] Move weak crypto algorithm query out of experimental --- go/ql/src/{experimental => Security}/CWE-327/CryptoLibraries.qll | 0 .../{experimental => Security}/CWE-327/WeakCryptoAlgorithm.qhelp | 0 .../src/{experimental => Security}/CWE-327/WeakCryptoAlgorithm.ql | 0 .../CWE-327/WeakCryptoAlgorithmCustomizations.qll | 0 go/ql/src/{experimental => Security}/CWE-327/examples/Crypto.go | 0 .../CWE-327/examples/InsecureRandomness.go | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename go/ql/src/{experimental => Security}/CWE-327/CryptoLibraries.qll (100%) rename go/ql/src/{experimental => Security}/CWE-327/WeakCryptoAlgorithm.qhelp (100%) rename go/ql/src/{experimental => Security}/CWE-327/WeakCryptoAlgorithm.ql (100%) rename go/ql/src/{experimental => Security}/CWE-327/WeakCryptoAlgorithmCustomizations.qll (100%) rename go/ql/src/{experimental => Security}/CWE-327/examples/Crypto.go (100%) rename go/ql/src/{experimental => Security}/CWE-327/examples/InsecureRandomness.go (100%) diff --git a/go/ql/src/experimental/CWE-327/CryptoLibraries.qll b/go/ql/src/Security/CWE-327/CryptoLibraries.qll similarity index 100% rename from go/ql/src/experimental/CWE-327/CryptoLibraries.qll rename to go/ql/src/Security/CWE-327/CryptoLibraries.qll diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.qhelp similarity index 100% rename from go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.qhelp rename to go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.qhelp diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql similarity index 100% rename from go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql rename to go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql diff --git a/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithmCustomizations.qll similarity index 100% rename from go/ql/src/experimental/CWE-327/WeakCryptoAlgorithmCustomizations.qll rename to go/ql/src/Security/CWE-327/WeakCryptoAlgorithmCustomizations.qll diff --git a/go/ql/src/experimental/CWE-327/examples/Crypto.go b/go/ql/src/Security/CWE-327/examples/Crypto.go similarity index 100% rename from go/ql/src/experimental/CWE-327/examples/Crypto.go rename to go/ql/src/Security/CWE-327/examples/Crypto.go diff --git a/go/ql/src/experimental/CWE-327/examples/InsecureRandomness.go b/go/ql/src/Security/CWE-327/examples/InsecureRandomness.go similarity index 100% rename from go/ql/src/experimental/CWE-327/examples/InsecureRandomness.go rename to go/ql/src/Security/CWE-327/examples/InsecureRandomness.go From a71bb4ba9a77ef0336bc18b6aeed7521ff9a0b8b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 18 Jul 2025 22:28:40 +0100 Subject: [PATCH 850/965] Convert test to inline expectations --- .../query-tests/Security/CWE-327/Crypto.go | 12 ++++--- .../CWE-327/WeakCryptoAlgorithm.expected | 32 +++++++++---------- .../CWE-327/WeakCryptoAlgorithm.qlref | 5 ++- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/go/ql/test/query-tests/Security/CWE-327/Crypto.go b/go/ql/test/query-tests/Security/CWE-327/Crypto.go index 75229b020a8..a58052df38d 100644 --- a/go/ql/test/query-tests/Security/CWE-327/Crypto.go +++ b/go/ql/test/query-tests/Security/CWE-327/Crypto.go @@ -13,19 +13,21 @@ func crypto() { public := []byte("hello") password := []byte("123456") - buf := password // testing dataflow by passing into different variable + + // testing dataflow by passing into different variable + buf := password // $ Source // BAD, des is a weak crypto algorithm and password is sensitive data - des.NewTripleDESCipher(buf) + des.NewTripleDESCipher(buf) // $ Alert // BAD, md5 is a weak crypto algorithm and password is sensitive data - md5.Sum(buf) + md5.Sum(buf) // $ Alert // BAD, rc4 is a weak crypto algorithm and password is sensitive data - rc4.NewCipher(buf) + rc4.NewCipher(buf) // $ Alert // BAD, sha1 is a weak crypto algorithm and password is sensitive data - sha1.Sum(buf) + sha1.Sum(buf) // $ Alert // GOOD, password is sensitive data but aes is a strong crypto algorithm aes.NewCipher(buf) 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 53cfd40145d..6f40dfcc7ad 100644 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected +++ b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected @@ -1,17 +1,17 @@ -edges -| 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 | -| Crypto.go:22:10:22:12 | buf | semmle.label | buf | -| Crypto.go:25:16:25:18 | buf | semmle.label | buf | -| Crypto.go:28:11:28:13 | buf | semmle.label | buf | -subpaths #select -| Crypto.go:19:25:19:27 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:19:25:19:27 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:22:10:22:12 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:22:10:22:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:25:16:25:18 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:25:16:25:18 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | -| Crypto.go:28:11:28:13 | buf | Crypto.go:16:9:16:16 | password | Crypto.go:28:11:28:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:16:9:16:16 | password | Sensitive data | +| Crypto.go:21:25:21:27 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:21:25:21:27 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | +| Crypto.go:24:10:24:12 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:24:10:24:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | +| Crypto.go:27:16:27:18 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:27:16:27:18 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | +| Crypto.go:30:11:30:13 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:30:11:30:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | +edges +| Crypto.go:18:9:18:16 | password | Crypto.go:21:25:21:27 | buf | provenance | | +| Crypto.go:18:9:18:16 | password | Crypto.go:24:10:24:12 | buf | provenance | | +| Crypto.go:18:9:18:16 | password | Crypto.go:27:16:27:18 | buf | provenance | | +| Crypto.go:18:9:18:16 | password | Crypto.go:30:11:30:13 | buf | provenance | | +nodes +| Crypto.go:18:9:18:16 | password | semmle.label | password | +| Crypto.go:21:25:21:27 | buf | semmle.label | buf | +| Crypto.go:24:10:24:12 | buf | semmle.label | buf | +| Crypto.go:27:16:27:18 | buf | semmle.label | buf | +| Crypto.go:30:11:30:13 | buf | semmle.label | buf | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref index 00d68df5a7c..cdc89fa3080 100644 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref +++ b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref @@ -1 +1,4 @@ -experimental/CWE-327/WeakCryptoAlgorithm.ql +query: Security/CWE-327/WeakCryptoAlgorithm.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql From 188b25f11faf9c5da9ed9036e90c9f2c304707f1 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 9 Jul 2025 14:55:54 +0100 Subject: [PATCH 851/965] Remove `experimental` tag from query metadata --- go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql | 1 - 1 file changed, 1 deletion(-) diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql index ffaaae8e02a..c649bc8e374 100644 --- a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql +++ b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql @@ -5,7 +5,6 @@ * @problem.severity error * @id go/weak-crypto-algorithm * @tags security - * experimental * external/cwe/cwe-327 * external/cwe/cwe-328 */ From 92a3bccfd655755f14da5fbe5a902394ede9388d Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Thu, 10 Jul 2025 16:29:48 +0100 Subject: [PATCH 852/965] Align metadata with related queries --- go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql index c649bc8e374..3de3a8d34ce 100644 --- a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql +++ b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql @@ -1,8 +1,10 @@ /** - * @name Use of a weak cryptographic algorithm - * @description Using weak cryptographic algorithms can allow an attacker to compromise security. + * @name Use of a broken or weak cryptographic algorithm + * @description Using broken or weak cryptographic algorithms can compromise security. * @kind path-problem - * @problem.severity error + * @problem.severity warning + * @security-severity 7.5 + * @precision high * @id go/weak-crypto-algorithm * @tags security * external/cwe/cwe-327 From 5c403d374e7734d9e14d37e4d6a277c92b608391 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Thu, 17 Jul 2025 14:56:38 +0100 Subject: [PATCH 853/965] Move crypto qll files from query pack to library pack --- .../CWE-327 => lib/semmle/go/frameworks}/CryptoLibraries.qll | 0 .../semmle/go/security}/WeakCryptoAlgorithmCustomizations.qll | 2 +- go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename go/ql/{src/Security/CWE-327 => lib/semmle/go/frameworks}/CryptoLibraries.qll (100%) rename go/ql/{src/Security/CWE-327 => lib/semmle/go/security}/WeakCryptoAlgorithmCustomizations.qll (97%) diff --git a/go/ql/src/Security/CWE-327/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll similarity index 100% rename from go/ql/src/Security/CWE-327/CryptoLibraries.qll rename to go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithmCustomizations.qll b/go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll similarity index 97% rename from go/ql/src/Security/CWE-327/WeakCryptoAlgorithmCustomizations.qll rename to go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll index b9104f1fe09..6e25789531f 100644 --- a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithmCustomizations.qll +++ b/go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll @@ -5,8 +5,8 @@ */ import go +private import semmle.go.frameworks.CryptoLibraries private import semmle.go.security.SensitiveActions -private import CryptoLibraries /** * Provides default sources, sinks and sanitizers for reasoning about diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql index 3de3a8d34ce..58adfc00344 100644 --- a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql +++ b/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql @@ -12,7 +12,7 @@ */ import go -import WeakCryptoAlgorithmCustomizations +import semmle.go.security.WeakCryptoAlgorithmCustomizations import WeakCryptoAlgorithm::Flow::PathGraph from WeakCryptoAlgorithm::Flow::PathNode source, WeakCryptoAlgorithm::Flow::PathNode sink From 34b2e3e2bf339fdd0425e9fedd9ea05b18624e45 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 18 Jul 2025 16:14:45 +0100 Subject: [PATCH 854/965] Copy the structure of the Javascript query --- go/ql/lib/go.qll | 1 + go/ql/lib/qlpack.yml | 1 + go/ql/lib/semmle/go/Concepts.qll | 32 ++++ .../semmle/go/frameworks/CryptoLibraries.qll | 179 ++---------------- .../BrokenCryptoAlgorithmCustomizations.qll | 58 ++++++ .../security/BrokenCryptoAlgorithmQuery.qll | 41 ++++ .../WeakCryptoAlgorithmCustomizations.qll | 66 ------- ...ithm.qhelp => BrokenCryptoAlgorithm.qhelp} | 0 ...oAlgorithm.ql => BrokenCryptoAlgorithm.ql} | 8 +- ...xpected => BrokenCryptoAlgorithm.expected} | 0 ...ithm.qlref => BrokenCryptoAlgorithm.qlref} | 2 +- 11 files changed, 153 insertions(+), 235 deletions(-) create mode 100644 go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll create mode 100644 go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll delete mode 100644 go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll rename go/ql/src/Security/CWE-327/{WeakCryptoAlgorithm.qhelp => BrokenCryptoAlgorithm.qhelp} (100%) rename go/ql/src/Security/CWE-327/{WeakCryptoAlgorithm.ql => BrokenCryptoAlgorithm.ql} (66%) rename go/ql/test/query-tests/Security/CWE-327/{WeakCryptoAlgorithm.expected => BrokenCryptoAlgorithm.expected} (100%) rename go/ql/test/query-tests/Security/CWE-327/{WeakCryptoAlgorithm.qlref => BrokenCryptoAlgorithm.qlref} (65%) diff --git a/go/ql/lib/go.qll b/go/ql/lib/go.qll index 16f2f1702fa..688214aae85 100644 --- a/go/ql/lib/go.qll +++ b/go/ql/lib/go.qll @@ -33,6 +33,7 @@ import semmle.go.frameworks.AwsLambda import semmle.go.frameworks.Beego import semmle.go.frameworks.BeegoOrm import semmle.go.frameworks.Bun +import semmle.go.frameworks.CryptoLibraries import semmle.go.frameworks.RsCors import semmle.go.frameworks.Couchbase import semmle.go.frameworks.Echo diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 97c351dfe8a..6d64828d63c 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -6,6 +6,7 @@ extractor: go library: true upgrades: upgrades dependencies: + codeql/concepts: ${workspace} codeql/dataflow: ${workspace} codeql/mad: ${workspace} codeql/threat-models: ${workspace} diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index 1931f16871a..0f30519d0be 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -8,6 +8,10 @@ import go import semmle.go.dataflow.FunctionInputsAndOutputs import semmle.go.concepts.HTTP import semmle.go.concepts.GeneratedFile +private import codeql.concepts.ConceptsShared +private import semmle.go.dataflow.internal.DataFlowImplSpecific + +private module ConceptsShared = ConceptsMake; /** * A data-flow node that executes an operating system command, @@ -505,3 +509,31 @@ module UnmarshalingFunction { abstract string getFormat(); } } + +/** + * Provides models for cryptographic things. + */ +module Cryptography { + private import ConceptsShared::Cryptography as SC + + /** + * A data-flow node that is an application of a cryptographic algorithm. For example, + * encryption, decryption, signature-validation. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `CryptographicOperation::Range` instead. + */ + class CryptographicOperation extends SC::CryptographicOperation { } + + class EncryptionAlgorithm = SC::EncryptionAlgorithm; + + class HashingAlgorithm = SC::HashingAlgorithm; + + class PasswordHashingAlgorithm = SC::PasswordHashingAlgorithm; + + module CryptographicOperation = SC::CryptographicOperation; + + class BlockMode = SC::BlockMode; + + class CryptographicAlgorithm = SC::CryptographicAlgorithm; +} diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll index 5518067b668..9cc0235cbbb 100644 --- a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -3,180 +3,31 @@ */ import go - -/** - * Names of cryptographic algorithms, separated into strong and weak variants. - * - * The names are normalized: upper-case, no spaces, dashes or underscores. - * - * The names are inspired by the names used in real world crypto libraries. - * - * The classification into strong and weak are based on OWASP and Wikipedia (2020). - * - * Sources (more links in qhelp file): - * https://en.wikipedia.org/wiki/Strong_cryptography#Cryptographically_strong_algorithms - * https://en.wikipedia.org/wiki/Strong_cryptography#Examples - * https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html - */ -private module AlgorithmNames { - predicate isStrongHashingAlgorithm(string name) { - name = - [ - "DSA", "ED25519", "SHA256", "SHA384", "SHA512", "SHA3", "ES256", "ECDSA256", "ES384", - "ECDSA384", "ES512", "ECDSA512", "SHA2", "SHA224" - ] - } - - predicate isWeakHashingAlgorithm(string name) { - name = - [ - "HAVEL128", "MD2", "SHA1", "MD4", "MD5", "PANAMA", "RIPEMD", "RIPEMD128", "RIPEMD256", - "RIPEMD320", "SHA0" - ] - } - - predicate isStrongEncryptionAlgorithm(string name) { - name = ["AES", "AES128", "AES192", "AES256", "AES512", "RSA", "RABBIT", "BLOWFISH"] - } - - predicate isWeakEncryptionAlgorithm(string name) { - name = - [ - "DES", "3DES", "ARC5", "RC5", "TRIPLEDES", "TDEA", "TRIPLEDEA", "ARC2", "RC2", "ARC4", - "RC4", "ARCFOUR" - ] - } - - predicate isStrongPasswordHashingAlgorithm(string name) { - name = ["ARGON2", "PBKDF2", "BCRYPT", "SCRYPT"] - } - - predicate isWeakPasswordHashingAlgorithm(string name) { none() } -} - -private import AlgorithmNames - -/** - * A cryptographic algorithm. - */ -private newtype TCryptographicAlgorithm = - MkHashingAlgorithm(string name, boolean isWeak) { - isStrongHashingAlgorithm(name) and isWeak = false - or - isWeakHashingAlgorithm(name) and isWeak = true - } or - MkEncryptionAlgorithm(string name, boolean isWeak) { - isStrongEncryptionAlgorithm(name) and isWeak = false - or - isWeakEncryptionAlgorithm(name) and isWeak = true - } or - MkPasswordHashingAlgorithm(string name, boolean isWeak) { - isStrongPasswordHashingAlgorithm(name) and isWeak = false - or - isWeakPasswordHashingAlgorithm(name) and isWeak = true - } - -/** - * A cryptographic algorithm. - */ -abstract class CryptographicAlgorithm extends TCryptographicAlgorithm { - /** Gets a textual representation of this element. */ - string toString() { result = this.getName() } - - /** - * Gets the name of this algorithm. - */ - abstract string getName(); - - /** - * Holds if the name of this algorithm matches `name` modulo case, - * white space, dashes and underscores. - */ - bindingset[name] - predicate matchesName(string name) { - exists(name.regexpReplaceAll("[-_]", "").regexpFind("(?i)\\Q" + this.getName() + "\\E", _, _)) - } - - /** - * Holds if this algorithm is weak. - */ - abstract predicate isWeak(); -} - -/** - * A hashing algorithm such as `MD5` or `SHA512`. - */ -class HashingAlgorithm extends MkHashingAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - HashingAlgorithm() { this = MkHashingAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * An encryption algorithm such as `DES` or `AES512`. - */ -class EncryptionAlgorithm extends MkEncryptionAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - EncryptionAlgorithm() { this = MkEncryptionAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * A password hashing algorithm such as `PBKDF2` or `SCRYPT`. - */ -class PasswordHashingAlgorithm extends MkPasswordHashingAlgorithm, CryptographicAlgorithm { - string name; - boolean isWeak; - - PasswordHashingAlgorithm() { this = MkPasswordHashingAlgorithm(name, isWeak) } - - override string getName() { result = name } - - override predicate isWeak() { isWeak = true } -} - -/** - * An application of a cryptographic algorithm. - */ -abstract class CryptographicOperation extends DataFlow::Node { - /** - * Gets the input the algorithm is used on, e.g. the plain text input to be encrypted. - */ - abstract Expr getInput(); - - /** - * Gets the applied algorithm. - */ - abstract CryptographicAlgorithm getAlgorithm(); -} +import semmle.go.Concepts::Cryptography +private import codeql.concepts.internal.CryptoAlgorithmNames /** * A cryptographic operation from the `crypto/md5` package. */ -class Md5 extends CryptographicOperation, DataFlow::CallNode { - Md5() { this.getTarget().hasQualifiedName("crypto/md5", ["New", "Sum"]) } +private module CryptoMd5 { + private class Md5 extends CryptographicOperation::Range instanceof DataFlow::CallNode { + Md5() { this.getTarget().hasQualifiedName("crypto/md5", ["New", "Sum"]) } - override Expr getInput() { result = this.getArgument(0).asExpr() } + override DataFlow::Node getInitialization() { result = this } - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) + override CryptographicAlgorithm getAlgorithm() { result.matchesName("MD5") } + + override DataFlow::Node getAnInput() { result = super.getArgument(0) } + + // not relevant for md5 + override BlockMode getBlockMode() { none() } } } /** * A cryptographic operation from the `crypto/sha1` package. */ -class Sha1 extends CryptographicOperation, DataFlow::CallNode { +class Sha1 extends CryptographicOperation::Range instanceof DataFlow::CallNode { Sha1() { this.getTarget().hasQualifiedName("crypto/sha1", ["New", "Sum"]) } override Expr getInput() { result = this.getArgument(0).asExpr() } @@ -189,7 +40,7 @@ class Sha1 extends CryptographicOperation, DataFlow::CallNode { /** * A cryptographic operation from the `crypto/des` package. */ -class Des extends CryptographicOperation, DataFlow::CallNode { +class Des extends CryptographicOperation::Range instanceof DataFlow::CallNode { Des() { this.getTarget().hasQualifiedName("crypto/des", ["NewCipher", "NewTripleDESCipher"]) } override Expr getInput() { result = this.getArgument(0).asExpr() } @@ -202,7 +53,7 @@ class Des extends CryptographicOperation, DataFlow::CallNode { /** * A cryptographic operation from the `crypto/rc4` package. */ -class Rc4 extends CryptographicOperation, DataFlow::CallNode { +class Rc4 extends CryptographicOperation::Range instanceof DataFlow::CallNode { Rc4() { this.getTarget().hasQualifiedName("crypto/rc4", "NewCipher") } override Expr getInput() { result = this.getArgument(0).asExpr() } diff --git a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll new file mode 100644 index 00000000000..e5ac77fbb75 --- /dev/null +++ b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll @@ -0,0 +1,58 @@ +/** + * Provides default sources, sinks and sanitizers for reasoning about + * sensitive information in weak cryptographic algorithms, + * as well as extension points for adding your own. + */ + +import go +private import semmle.go.security.SensitiveActions + +/** + * Provides default sources, sinks and sanitizers for reasoning about + * sensitive information in weak cryptographic algorithms, + * as well as extension points for adding your own. + */ +module BrokenCryptoAlgorithm { + /** + * A data flow source for sensitive information in broken or weak cryptographic algorithms. + */ + abstract class Source extends DataFlow::Node { } + + /** + * A data flow sink for sensitive information in broken or weak cryptographic algorithms. + */ + abstract class Sink extends DataFlow::Node { + /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ + abstract DataFlow::Node getInitialization(); + } + + /** + * A sanitizer for sensitive information in broken or weak cryptographic algorithms. + */ + abstract class Sanitizer extends DataFlow::Node { } + + /** + * A sensitive source. + */ + class SensitiveSource extends Source { + SensitiveSource() { this.asExpr() instanceof SensitiveExpr } + } + + /** + * An expression used by a broken or weak cryptographic algorithm. + */ + class WeakCryptographicOperationSink extends Sink { + CryptographicOperation application; + + WeakCryptographicOperationSink() { + ( + application.getAlgorithm().isWeak() + or + application.getBlockMode().isWeak() + ) and + this = application.getAnInput() + } + + override DataFlow::Node getInitialization() { result = application.getInitialization() } + } +} diff --git a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll new file mode 100644 index 00000000000..2e400c76c85 --- /dev/null +++ b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll @@ -0,0 +1,41 @@ +/** + * Provides a taint tracking configuration for reasoning about + * sensitive information in broken or weak cryptographic algorithms. + * + * Note, for performance reasons: only import this file if + * `BrokenCryptoAlgorithm::Configuration` is needed, otherwise + * `BrokenCryptoAlgorithmCustomizations` should be imported instead. + */ + +import go +import BrokenCryptoAlgorithmCustomizations::BrokenCryptoAlgorithm + +/** + * A taint tracking configuration for sensitive information in broken or weak cryptographic algorithms. + * + * This configuration identifies flows from `Source`s, which are sources of + * sensitive data, to `Sink`s, which is an abstract class representing all + * the places sensitive data may used in broken or weak cryptographic algorithms. Additional sources or sinks can be + * added either by extending the relevant class, or by subclassing this configuration itself, + * and amending the sources and sinks. + */ +private module BrokenCryptoAlgorithmConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate observeDiffInformedIncrementalMode() { any() } + + Location getASelectedSinkLocation(DataFlow::Node sink) { + result = sink.(Sink).getLocation() + or + result = sink.(Sink).getInitialization().getLocation() + } +} + +/** + * Taint tracking flow for sensitive information in broken or weak cryptographic algorithms. + */ +module BrokenCryptoAlgorithmFlow = TaintTracking::Global; diff --git a/go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll b/go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll deleted file mode 100644 index 6e25789531f..00000000000 --- a/go/ql/lib/semmle/go/security/WeakCryptoAlgorithmCustomizations.qll +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ - -import go -private import semmle.go.frameworks.CryptoLibraries -private import semmle.go.security.SensitiveActions - -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ -module WeakCryptoAlgorithm { - /** - * A data flow source for sensitive information in weak cryptographic algorithms. - */ - abstract class Source extends DataFlow::Node { } - - /** - * A data flow sink for sensitive information in weak cryptographic algorithms. - */ - abstract class Sink extends DataFlow::Node { } - - /** - * A sanitizer for sensitive information in weak cryptographic algorithms. - */ - abstract class Sanitizer extends DataFlow::Node { } - - /** - * A sensitive source. - */ - class SensitiveSource extends Source { - SensitiveSource() { this.asExpr() instanceof SensitiveExpr } - } - - /** - * An expression used by a weak cryptographic algorithm. - */ - class WeakCryptographicOperationSink extends Sink { - WeakCryptographicOperationSink() { - exists(CryptographicOperation application | - application.getAlgorithm().isWeak() and - this.asExpr() = application.getInput() - ) - } - } - - private module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof Source } - - predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } - - predicate observeDiffInformedIncrementalMode() { any() } - } - - /** - * Tracks taint flow from sensitive information to weak cryptographic - * algorithms. - */ - module Flow = TaintTracking::Global; -} diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.qhelp b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp similarity index 100% rename from go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.qhelp rename to go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp diff --git a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql similarity index 66% rename from go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql rename to go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 58adfc00344..714a1cc7b3e 100644 --- a/go/ql/src/Security/CWE-327/WeakCryptoAlgorithm.ql +++ b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -12,10 +12,10 @@ */ import go -import semmle.go.security.WeakCryptoAlgorithmCustomizations -import WeakCryptoAlgorithm::Flow::PathGraph +import semmle.go.security.BrokenCryptoAlgorithmQuery +import BrokenCryptoAlgorithmFlow::PathGraph -from WeakCryptoAlgorithm::Flow::PathNode source, WeakCryptoAlgorithm::Flow::PathNode sink -where WeakCryptoAlgorithm::Flow::flowPath(source, sink) +from BrokenCryptoAlgorithmFlow::PathNode source, BrokenCryptoAlgorithmFlow::PathNode sink +where BrokenCryptoAlgorithmFlow::flowPath(source, sink) select sink.getNode(), source, sink, "$@ is used in a weak cryptographic algorithm.", source.getNode(), "Sensitive data" diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected similarity index 100% rename from go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected rename to go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref similarity index 65% rename from go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref rename to go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref index cdc89fa3080..a618df1ed20 100644 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.qlref +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.qlref @@ -1,4 +1,4 @@ -query: Security/CWE-327/WeakCryptoAlgorithm.ql +query: Security/CWE-327/BrokenCryptoAlgorithm.ql postprocess: - utils/test/PrettyPrintModels.ql - utils/test/InlineExpectationsTestQuery.ql From fac5296efca15fa78cb19a95d89af4aef606ed1d Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 14 Oct 2025 13:52:20 +0100 Subject: [PATCH 855/965] Avoid duplicate results using in-barriers --- go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll index 2e400c76c85..ba24dcf5707 100644 --- a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll +++ b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll @@ -24,6 +24,8 @@ private module BrokenCryptoAlgorithmConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + predicate isBarrierIn(DataFlow::Node node) { isSource(node) } + predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } predicate observeDiffInformedIncrementalMode() { any() } From f34a625ac2fa2820a4cd3c301585d1bda2da0fad Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 15 Oct 2025 12:10:22 +0100 Subject: [PATCH 856/965] Model cryptographic operations --- go/ql/lib/semmle/go/Concepts.qll | 67 +++ .../semmle/go/frameworks/CryptoLibraries.qll | 494 ++++++++++++++++-- .../CWE-327/BrokenCryptoAlgorithm.expected | 92 +++- .../query-tests/Security/CWE-327/Crypto.go | 275 ++++++++-- .../Security/CWE-327/CryptoAlgorithm.expected | 2 + .../Security/CWE-327/CryptoAlgorithm.ql | 47 ++ .../test/query-tests/Security/CWE-327/go.mod | 3 + .../internal/CryptoAlgorithmNames.qll | 3 +- 8 files changed, 896 insertions(+), 87 deletions(-) create mode 100644 go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected create mode 100644 go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql create mode 100644 go/ql/test/query-tests/Security/CWE-327/go.mod diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index 0f30519d0be..acb16b62d07 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -536,4 +536,71 @@ module Cryptography { class BlockMode = SC::BlockMode; class CryptographicAlgorithm = SC::CryptographicAlgorithm; + + /** A data flow node that initializes a hash algorithm. */ + abstract class HashAlgorithmInit extends DataFlow::Node { + /** Gets the hash algorithm being initialized. */ + abstract HashingAlgorithm getAlgorithm(); + } + + /** A data flow node that is an application of a hash algorithm. */ + abstract class HashOperation extends CryptographicOperation::Range { + override BlockMode getBlockMode() { none() } + } + + /** A data flow node that initializes an encryption algorithm. */ + abstract class EncryptionAlgorithmInit extends DataFlow::Node { + /** Gets the encryption algorithm being initialized. */ + abstract EncryptionAlgorithm getAlgorithm(); + } + + /** + * A data flow node that initializes a block cipher mode of operation, and + * may also propagate taint for encryption algorithms. + */ + abstract class BlockModeInit extends DataFlow::CallNode { + /** Gets the block cipher mode of operation being initialized. */ + abstract BlockMode getMode(); + + /** Gets a step propagating the encryption algorithm through this call. */ + abstract predicate step(DataFlow::Node node1, DataFlow::Node node2); + } + + /** + * A data flow node that is an application of an encryption algorithm, where + * the encryption algorithm and the block cipher mode of operation (if there + * is one) have been initialized separately. + */ + abstract class EncryptionOperation extends CryptographicOperation::Range { + DataFlow::Node encryptionFlowTarget; + DataFlow::Node inputNode; + + override DataFlow::Node getInitialization() { + EncryptionFlow::flow(result, encryptionFlowTarget) + } + + override EncryptionAlgorithm getAlgorithm() { + result = this.getInitialization().(EncryptionAlgorithmInit).getAlgorithm() + } + + override DataFlow::Node getAnInput() { result = inputNode } + + override BlockMode getBlockMode() { + result = this.getInitialization().(BlockModeInit).getMode() + } + } + + /** + * An `EncryptionOperation` which is a method call where the encryption + * algorithm and block cipher mode of operation (if there is one) flow to the + * receiver and the input is an argument. + */ + abstract class EncryptionMethodCall extends EncryptionOperation instanceof DataFlow::CallNode { + int inputArg; + + EncryptionMethodCall() { + encryptionFlowTarget = super.getReceiver() and + inputNode = super.getArgument(inputArg) + } + } } diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll index 9cc0235cbbb..0c56d8c7e6a 100644 --- a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -7,58 +7,482 @@ import semmle.go.Concepts::Cryptography private import codeql.concepts.internal.CryptoAlgorithmNames /** - * A cryptographic operation from the `crypto/md5` package. + * A data flow call node that is an application of a hash operation where the + * hash algorithm is defined in any earlier initialization node, and the input + * is the first argument of the call. */ -private module CryptoMd5 { - private class Md5 extends CryptographicOperation::Range instanceof DataFlow::CallNode { - Md5() { this.getTarget().hasQualifiedName("crypto/md5", ["New", "Sum"]) } +abstract class DirectHashOperation extends HashOperation instanceof DataFlow::CallNode { + override DataFlow::Node getInitialization() { result = this } - override DataFlow::Node getInitialization() { result = this } + override DataFlow::Node getAnInput() { result = super.getArgument(0) } +} - override CryptographicAlgorithm getAlgorithm() { result.matchesName("MD5") } +private module HashConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof HashAlgorithmInit } + + predicate isSink(DataFlow::Node sink) { any() } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +/** Tracks the flow of hash algorithms. */ +module HashFlow = DataFlow::Global; + +/** + * A data flow node that initializes a block mode and propagates the encryption + * algorithm from the first argument to the receiver. + */ +abstract class StdLibNewEncrypter extends BlockModeInit { + override predicate step(DataFlow::Node node1, DataFlow::Node node2) { + node1 = this.getArgument(0) and + node2 = this.getResult(0) + } +} + +private module EncryptionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof EncryptionAlgorithmInit or + source instanceof BlockModeInit + } + + predicate isSink(DataFlow::Node sink) { any() } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + any(BlockModeInit nbcm).step(node1, node2) + } + + predicate observeDiffInformedIncrementalMode() { any() } +} + +/** + * Tracks algorithms and block cipher modes of operation used for encryption. + */ +module EncryptionFlow = DataFlow::Global; + +private module Crypto { + private module Aes { + private class NewCipher extends EncryptionAlgorithmInit { + NewCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/aes", "NewCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("AES") } + } + } + + private module Des { + private class NewCipher extends EncryptionAlgorithmInit { + NewCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/des", "NewCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("DES") } + } + + private class NewTripleDESCipher extends EncryptionAlgorithmInit { + NewTripleDESCipher() { + exists(Function f | this = f.getACall().getResult(0) | + f.hasQualifiedName("crypto/des", "NewTripleDESCipher") + ) + } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("TRIPLEDES") } + } + } + + private module Md5 { + private class Sum extends DirectHashOperation instanceof DataFlow::CallNode { + Sum() { this.getTarget().hasQualifiedName("crypto/md5", "Sum") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("MD5") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/md5", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("MD5") } + } + } + + private module Rc4 { + private class CipherXORKeyStream extends CryptographicOperation::Range instanceof DataFlow::CallNode + { + CipherXORKeyStream() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/rc4", "Cipher", "XORKeyStream") + } + + override DataFlow::Node getInitialization() { result = this } + + override EncryptionAlgorithm getAlgorithm() { result.matchesName("RC4") } + + override DataFlow::Node getAnInput() { result = super.getArgument(1) } + + override BlockMode getBlockMode() { none() } + } + } + + /** + * Cryptographic operations from the `crypto/sha1` package. + */ + private module Sha1 { + private class Sum extends DirectHashOperation instanceof DataFlow::CallNode { + Sum() { this.getTarget().hasQualifiedName("crypto/sha1", "Sum") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA1") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha1", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA1") } + } + } + + /** + * Cryptographic operations from the `crypto/sha256` package. + */ + private module Sha256 { + private class Sum256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum256() { this.getTarget().hasQualifiedName("crypto/sha256", "Sum256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA256") } + } + + private class Sum224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum224() { this.getTarget().hasQualifiedName("crypto/sha256", "Sum224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA224") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha256", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA256") } + } + + private class New224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New224() { this.getTarget().hasQualifiedName("crypto/sha256", "New224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA224") } + } + } + + private module Sha3 { + private class Sum224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum224() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3224") } + } + + private class Sum256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum256() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3256") } + } + + private class Sum384 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum384() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3384") } + } + + private class Sum512 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512() { this.getTarget().hasQualifiedName("crypto/sha3", "Sum512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3512") } + } + + private class SumShake128 extends DirectHashOperation instanceof DataFlow::CallNode { + SumShake128() { this.getTarget().hasQualifiedName("crypto/sha3", "SumSHAKE128") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE128") } + } + + private class SumShake256 extends DirectHashOperation instanceof DataFlow::CallNode { + SumShake256() { this.getTarget().hasQualifiedName("crypto/sha3", "SumSHAKE256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE256") } + } + + private class New224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New224() { this.getTarget().hasQualifiedName("crypto/sha3", "New224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3224") } + } + + private class New256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New256() { this.getTarget().hasQualifiedName("crypto/sha3", "New256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3256") } + } + + private class New384 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New384() { this.getTarget().hasQualifiedName("crypto/sha3", "New384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3384") } + } + + private class New512 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512() { this.getTarget().hasQualifiedName("crypto/sha3", "New512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA3512") } + } + + private class NewShake128 extends HashAlgorithmInit instanceof DataFlow::CallNode { + NewShake128() { + this.getTarget().hasQualifiedName("crypto/sha3", ["NewCSHAKE128", "NewSHAKE128"]) + } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE128") } + } + + private class NewShake256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + NewShake256() { + this.getTarget().hasQualifiedName("crypto/sha3", ["NewCSHAKE256", "NewSHAKE256"]) + } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHAKE256") } + } + + private class ShakeWrite extends HashOperation instanceof DataFlow::MethodCallNode { + ShakeWrite() { this.getTarget().hasQualifiedName("crypto/sha3", "SHAKE", "Write") } + + override HashAlgorithmInit getInitialization() { HashFlow::flow(result, super.getReceiver()) } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } + + override DataFlow::Node getAnInput() { result = super.getArgument(0) } + } + } + + private module Sha512 { + private class Sum384 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum384() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA384") } + } + + private class Sum512 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512") } + } + + private class Sum512_224 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512_224() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512_224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512224") } + } + + private class Sum512_256 extends DirectHashOperation instanceof DataFlow::CallNode { + Sum512_256() { this.getTarget().hasQualifiedName("crypto/sha512", "Sum512_256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512256") } + } + + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("crypto/sha512", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512") } + } + + private class New384 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New384() { this.getTarget().hasQualifiedName("crypto/sha512", "New384") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA384") } + } + + private class New512_224 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512_224() { this.getTarget().hasQualifiedName("crypto/sha512", "New512_224") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512224") } + } + + private class New512_256 extends HashAlgorithmInit instanceof DataFlow::CallNode { + New512_256() { this.getTarget().hasQualifiedName("crypto/sha512", "New512_256") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("SHA512256") } + } + } + + private module Cipher { + private class NewCBCEncrypter extends StdLibNewEncrypter { + NewCBCEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCBCEncrypter") } + + override BlockMode getMode() { result = "CBC" } + } + + private class NewCFBEncrypter extends StdLibNewEncrypter { + NewCFBEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCFBEncrypter") } + + override BlockMode getMode() { result = "CFB" } + } + + private class NewCTR extends StdLibNewEncrypter { + NewCTR() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCTR") } + + override BlockMode getMode() { result = "CTR" } + } + + private class NewGCM extends StdLibNewEncrypter { + NewGCM() { + exists(string name | this.getTarget().hasQualifiedName("crypto/cipher", name) | + name = ["NewGCM", "NewGCMWithNonceSize", "NewGCMWithRandomNonce", "NewGCMWithTagSize"] + ) + } + + override BlockMode getMode() { result = "GCM" } + } + + private class NewOFB extends StdLibNewEncrypter { + NewOFB() { this.getTarget().hasQualifiedName("crypto/cipher", "NewOFB") } + + override BlockMode getMode() { result = "OFB" } + } + + private class AeadSeal extends EncryptionMethodCall { + AeadSeal() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "AEAD", "Seal") and + inputArg = 2 + } + } + + private class BlockEncrypt extends EncryptionMethodCall { + BlockEncrypt() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "Block", "Encrypt") and + inputArg = 1 + } + } + + private class BlockModeCryptBlocks extends EncryptionMethodCall { + BlockModeCryptBlocks() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "BlockMode", "CryptBlocks") and + inputArg = 1 + } + } + + private class StreamXORKeyStream extends EncryptionMethodCall { + StreamXORKeyStream() { + this.(DataFlow::MethodCallNode) + .getTarget() + .hasQualifiedName("crypto/cipher", "Stream", "XORKeyStream") and + inputArg = 1 + } + } + + private class StreamReader extends EncryptionOperation { + StreamReader() { + lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamReader") and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + f.hasQualifiedName("crypto/cipher", "StreamReader", "S") and + w.writesField(base, f, encryptionFlowTarget) and + DataFlow::localFlow(base, this) + ) and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + f.hasQualifiedName("crypto/cipher", "StreamReader", "R") and + w.writesField(base, f, inputNode) and + DataFlow::localFlow(base, this) + ) + } + } + + /** + * Limitation: StreamWriter wraps a Writer, so we need to look forward to + * where the Writer is written to. Currently this is done using local flow, + * so it only works within one function. + */ + private class StreamWriter extends EncryptionOperation { + StreamWriter() { + lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamWriter") and + inputNode = this and + exists(DataFlow::Write w, DataFlow::Node base, Field f | + w.writesField(base, f, encryptionFlowTarget) and + f.hasQualifiedName("crypto/cipher", "StreamWriter", "S") + | + base = this or + TaintTracking::localTaint(base, this.(DataFlow::PostUpdateNode).getPreUpdateNode()) + ) + } + } + } +} + +private module Hash { + private class HashSum extends HashOperation instanceof DataFlow::MethodCallNode { + HashSum() { this.getTarget().implements("hash", "Hash", "Sum") } + + override HashAlgorithmInit getInitialization() { HashFlow::flow(result, super.getReceiver()) } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } override DataFlow::Node getAnInput() { result = super.getArgument(0) } - - // not relevant for md5 - override BlockMode getBlockMode() { none() } } } +private DataFlow::Node getANonIoWriterPredecessor(DataFlow::Node node) { + node.getType().implements("io", "Writer") and + exists(DataFlow::Node pre | TaintTracking::localTaintStep(pre, node) | + if pre.getType().implements("io", "Writer") + then result = getANonIoWriterPredecessor(pre) + else result = pre + ) +} + /** - * A cryptographic operation from the `crypto/sha1` package. + * Taint flowing to an `io.Writer` (such as `hash.Hash` or `*sha3.SHAKE`) via + * its implementation of the `io.Writer` interface. */ -class Sha1 extends CryptographicOperation::Range instanceof DataFlow::CallNode { - Sha1() { this.getTarget().hasQualifiedName("crypto/sha1", ["New", "Sum"]) } +private class FlowToIoWriter extends HashOperation instanceof DataFlow::Node { + HashAlgorithmInit init; + DataFlow::Node input; - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) + FlowToIoWriter() { + this.getType().implements("io", "Writer") and + HashFlow::flow(init, this) and + // If we have `h.Write(taint)` or `io.WriteString(h, taint)` then it's + // the post-update node of `h` that gets tainted. + exists(DataFlow::PostUpdateNode pun | pun.getPreUpdateNode() = this | + input = getANonIoWriterPredecessor(pun) + ) } + + override HashAlgorithmInit getInitialization() { result = init } + + override HashingAlgorithm getAlgorithm() { result = this.getInitialization().getAlgorithm() } + + override DataFlow::Node getAnInput() { result = input } } /** - * A cryptographic operation from the `crypto/des` package. + * Currently only weak algorithms from the `golang.org/x/crypto` module are + * modeled here. */ -class Des extends CryptographicOperation::Range instanceof DataFlow::CallNode { - Des() { this.getTarget().hasQualifiedName("crypto/des", ["NewCipher", "NewTripleDESCipher"]) } +private module GolangOrgXCrypto { + private module Md4 { + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("golang.org/x/crypto/md4", "New") } - override Expr getInput() { result = this.getArgument(0).asExpr() } + override HashingAlgorithm getAlgorithm() { result.matchesName("MD4") } + } + } - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) - } -} - -/** - * A cryptographic operation from the `crypto/rc4` package. - */ -class Rc4 extends CryptographicOperation::Range instanceof DataFlow::CallNode { - Rc4() { this.getTarget().hasQualifiedName("crypto/rc4", "NewCipher") } - - override Expr getInput() { result = this.getArgument(0).asExpr() } - - override CryptographicAlgorithm getAlgorithm() { - result.matchesName(this.getTarget().getPackage().getName()) + private module Ripemd160 { + private class New extends HashAlgorithmInit instanceof DataFlow::CallNode { + New() { this.getTarget().hasQualifiedName("golang.org/x/crypto/ripemd160", "New") } + + override HashingAlgorithm getAlgorithm() { result.matchesName("RIPEMD160") } + } } } diff --git a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 6f40dfcc7ad..4fbf77dda62 100644 --- a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -1,17 +1,83 @@ #select -| Crypto.go:21:25:21:27 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:21:25:21:27 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | -| Crypto.go:24:10:24:12 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:24:10:24:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | -| Crypto.go:27:16:27:18 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:27:16:27:18 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | -| Crypto.go:30:11:30:13 | buf | Crypto.go:18:9:18:16 | password | Crypto.go:30:11:30:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:18:9:18:16 | password | Sensitive data | +| Crypto.go:36:21:36:28 | password | Crypto.go:36:21:36:28 | password | Crypto.go:36:21:36:28 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:36:21:36:28 | password | Sensitive data | +| Crypto.go:41:22:41:29 | password | Crypto.go:41:22:41:29 | password | Crypto.go:41:22:41:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:41:22:41:29 | password | Sensitive data | +| Crypto.go:46:22:46:29 | password | Crypto.go:46:22:46:29 | password | Crypto.go:46:22:46:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:46:22:46:29 | password | Sensitive data | +| Crypto.go:51:22:51:29 | password | Crypto.go:51:22:51:29 | password | Crypto.go:51:22:51:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:51:22:51:29 | password | Sensitive data | +| Crypto.go:56:22:56:29 | password | Crypto.go:56:22:56:29 | password | Crypto.go:56:22:56:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:56:22:56:29 | password | Sensitive data | +| Crypto.go:61:32:61:39 | password | Crypto.go:61:32:61:39 | password | Crypto.go:61:32:61:39 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:61:32:61:39 | password | Sensitive data | +| Crypto.go:66:30:66:37 | password | Crypto.go:66:30:66:37 | password | Crypto.go:66:30:66:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:66:30:66:37 | password | Sensitive data | +| Crypto.go:68:59:68:83 | call to NewReader | Crypto.go:68:75:68:82 | password | Crypto.go:68:59:68:83 | call to NewReader | $@ is used in a weak cryptographic algorithm. | Crypto.go:68:75:68:82 | password | Sensitive data | +| Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | Crypto.go:72:43:72:50 | password | Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | $@ is used in a weak cryptographic algorithm. | Crypto.go:72:43:72:50 | password | Sensitive data | +| Crypto.go:78:30:78:37 | password | Crypto.go:78:30:78:37 | password | Crypto.go:78:30:78:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:78:30:78:37 | password | Sensitive data | +| Crypto.go:83:30:83:37 | password | Crypto.go:83:30:83:37 | password | Crypto.go:83:30:83:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:83:30:83:37 | password | Sensitive data | +| Crypto.go:91:21:91:33 | call to getPassword | Crypto.go:91:21:91:33 | call to getPassword | Crypto.go:91:21:91:33 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:91:21:91:33 | call to getPassword | Sensitive data | +| Crypto.go:96:22:96:34 | call to getPassword | Crypto.go:96:22:96:34 | call to getPassword | Crypto.go:96:22:96:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:96:22:96:34 | call to getPassword | Sensitive data | +| Crypto.go:101:22:101:34 | call to getPassword | Crypto.go:101:22:101:34 | call to getPassword | Crypto.go:101:22:101:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:101:22:101:34 | call to getPassword | Sensitive data | +| Crypto.go:106:22:106:29 | password | Crypto.go:106:22:106:29 | password | Crypto.go:106:22:106:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:106:22:106:29 | password | Sensitive data | +| Crypto.go:111:22:111:29 | password | Crypto.go:111:22:111:29 | password | Crypto.go:111:22:111:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:111:22:111:29 | password | Sensitive data | +| Crypto.go:116:32:116:44 | call to getPassword | Crypto.go:116:32:116:44 | call to getPassword | Crypto.go:116:32:116:44 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:116:32:116:44 | call to getPassword | Sensitive data | +| Crypto.go:121:30:121:42 | call to getPassword | Crypto.go:121:30:121:42 | call to getPassword | Crypto.go:121:30:121:42 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:121:30:121:42 | call to getPassword | Sensitive data | +| Crypto.go:123:59:123:88 | call to NewReader | Crypto.go:123:75:123:87 | call to getPassword | Crypto.go:123:59:123:88 | call to NewReader | $@ is used in a weak cryptographic algorithm. | Crypto.go:123:75:123:87 | call to getPassword | Sensitive data | +| Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | Crypto.go:127:43:127:55 | call to getPassword | Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | $@ is used in a weak cryptographic algorithm. | Crypto.go:127:43:127:55 | call to getPassword | Sensitive data | +| Crypto.go:133:30:133:37 | password | Crypto.go:133:30:133:37 | password | Crypto.go:133:30:133:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:133:30:133:37 | password | Sensitive data | +| Crypto.go:138:30:138:37 | password | Crypto.go:138:30:138:37 | password | Crypto.go:138:30:138:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:138:30:138:37 | password | Sensitive data | +| Crypto.go:198:22:198:34 | call to getPassword | Crypto.go:198:22:198:34 | call to getPassword | Crypto.go:198:22:198:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:198:22:198:34 | call to getPassword | Sensitive data | +| Crypto.go:205:8:205:10 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:205:8:205:10 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | +| Crypto.go:206:10:206:12 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:206:10:206:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | +| Crypto.go:207:20:207:33 | passwordString | Crypto.go:207:20:207:33 | passwordString | Crypto.go:207:20:207:33 | passwordString | $@ is used in a weak cryptographic algorithm. | Crypto.go:207:20:207:33 | passwordString | Sensitive data | +| Crypto.go:208:10:208:12 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:208:10:208:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | +| Crypto.go:210:17:210:19 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:210:17:210:19 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | +| Crypto.go:211:11:211:13 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:211:11:211:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | edges -| Crypto.go:18:9:18:16 | password | Crypto.go:21:25:21:27 | buf | provenance | | -| Crypto.go:18:9:18:16 | password | Crypto.go:24:10:24:12 | buf | provenance | | -| Crypto.go:18:9:18:16 | password | Crypto.go:27:16:27:18 | buf | provenance | | -| Crypto.go:18:9:18:16 | password | Crypto.go:30:11:30:13 | buf | provenance | | +| Crypto.go:68:75:68:82 | password | Crypto.go:68:59:68:83 | call to NewReader | provenance | MaD:1 | +| Crypto.go:72:27:72:51 | call to NewReader | Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | provenance | MaD:2 | +| Crypto.go:72:43:72:50 | password | Crypto.go:72:27:72:51 | call to NewReader | provenance | MaD:1 | +| Crypto.go:123:75:123:87 | call to getPassword | Crypto.go:123:59:123:88 | call to NewReader | provenance | MaD:1 | +| Crypto.go:127:27:127:56 | call to NewReader | Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | provenance | MaD:2 | +| Crypto.go:127:43:127:55 | call to getPassword | Crypto.go:127:27:127:56 | call to NewReader | provenance | MaD:1 | +| Crypto.go:202:9:202:16 | password | Crypto.go:205:8:205:10 | buf | provenance | | +| Crypto.go:202:9:202:16 | password | Crypto.go:206:10:206:12 | buf | provenance | | +| Crypto.go:202:9:202:16 | password | Crypto.go:208:10:208:12 | buf | provenance | | +| Crypto.go:202:9:202:16 | password | Crypto.go:210:17:210:19 | buf | provenance | | +| Crypto.go:202:9:202:16 | password | Crypto.go:211:11:211:13 | buf | provenance | | +models +| 1 | Summary: bytes; ; false; NewReader; ; ; Argument[0]; ReturnValue; taint; manual | +| 2 | Summary: io; ; false; Copy; ; ; Argument[1]; Argument[0]; taint; manual | nodes -| Crypto.go:18:9:18:16 | password | semmle.label | password | -| Crypto.go:21:25:21:27 | buf | semmle.label | buf | -| Crypto.go:24:10:24:12 | buf | semmle.label | buf | -| Crypto.go:27:16:27:18 | buf | semmle.label | buf | -| Crypto.go:30:11:30:13 | buf | semmle.label | buf | +| Crypto.go:36:21:36:28 | password | semmle.label | password | +| Crypto.go:41:22:41:29 | password | semmle.label | password | +| Crypto.go:46:22:46:29 | password | semmle.label | password | +| Crypto.go:51:22:51:29 | password | semmle.label | password | +| Crypto.go:56:22:56:29 | password | semmle.label | password | +| Crypto.go:61:32:61:39 | password | semmle.label | password | +| Crypto.go:66:30:66:37 | password | semmle.label | password | +| Crypto.go:68:59:68:83 | call to NewReader | semmle.label | call to NewReader | +| Crypto.go:68:75:68:82 | password | semmle.label | password | +| Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | semmle.label | ctrStreamWriter [postupdate] | +| Crypto.go:72:27:72:51 | call to NewReader | semmle.label | call to NewReader | +| Crypto.go:72:43:72:50 | password | semmle.label | password | +| Crypto.go:78:30:78:37 | password | semmle.label | password | +| Crypto.go:83:30:83:37 | password | semmle.label | password | +| Crypto.go:91:21:91:33 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:96:22:96:34 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:101:22:101:34 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:106:22:106:29 | password | semmle.label | password | +| Crypto.go:111:22:111:29 | password | semmle.label | password | +| Crypto.go:116:32:116:44 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:121:30:121:42 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:123:59:123:88 | call to NewReader | semmle.label | call to NewReader | +| Crypto.go:123:75:123:87 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | semmle.label | ctrStreamWriter [postupdate] | +| Crypto.go:127:27:127:56 | call to NewReader | semmle.label | call to NewReader | +| Crypto.go:127:43:127:55 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:133:30:133:37 | password | semmle.label | password | +| Crypto.go:138:30:138:37 | password | semmle.label | password | +| Crypto.go:198:22:198:34 | call to getPassword | semmle.label | call to getPassword | +| Crypto.go:202:9:202:16 | password | semmle.label | password | +| Crypto.go:205:8:205:10 | buf | semmle.label | buf | +| Crypto.go:206:10:206:12 | buf | semmle.label | buf | +| Crypto.go:207:20:207:33 | passwordString | semmle.label | passwordString | +| Crypto.go:208:10:208:12 | buf | semmle.label | buf | +| Crypto.go:210:17:210:19 | buf | semmle.label | buf | +| Crypto.go:211:11:211:13 | buf | semmle.label | buf | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-327/Crypto.go b/go/ql/test/query-tests/Security/CWE-327/Crypto.go index a58052df38d..1a7afc35cb9 100644 --- a/go/ql/test/query-tests/Security/CWE-327/Crypto.go +++ b/go/ql/test/query-tests/Security/CWE-327/Crypto.go @@ -1,55 +1,254 @@ package main import ( + "bytes" "crypto/aes" + "crypto/cipher" "crypto/des" "crypto/md5" "crypto/rc4" "crypto/sha1" "crypto/sha256" + "crypto/sha3" + "crypto/sha512" + "io" + "os" ) -func crypto() { - public := []byte("hello") +var dst []byte = make([]byte, 16) +var password []byte = []byte("123456") - password := []byte("123456") +const passwordString string = "correct horse battery staple" - // testing dataflow by passing into different variable +var public []byte = []byte("hello") + +func getPassword() []byte { + return []byte("123456") +} + +// Note that we do not alert on decryption as we may need to decrypt legacy formats + +func BlockCipherDes() { + // BAD, des is a weak crypto algorithm + block, _ := des.NewCipher(nil) + + block.Encrypt(dst, public) // $ CryptographicOperation="DES. init from line 33." + block.Encrypt(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." + block.Decrypt(dst, password) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." + gcm1.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." + gcm1.Open(nil, nil, password, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." + gcm2.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." + gcm2.Open(nil, nil, password, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." + gcm3.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." + gcm3.Open(nil, nil, password, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." + gcm4.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." + gcm4.Open(nil, nil, password, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="DES. blockMode: CBC. init from lines 33,59." + cbcEncrypter.CryptBlocks(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CBC. init from lines 33,59." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, password) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." + ctrStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(password)} // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." + io.Copy(ctrStreamWriter, bytes.NewReader(password)) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: CFB. init from lines 33,76." + cfbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CFB. init from lines 33,76." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: OFB. init from lines 33,81." + ofbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: OFB. init from lines 33,81." +} + +func BlockCipherTripleDes() { + // BAD, triple des is a weak crypto algorithm and password is sensitive data + block, _ := des.NewTripleDESCipher(nil) + + block.Encrypt(dst, public) // $ CryptographicOperation="TRIPLEDES. init from line 88." + block.Encrypt(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." + block.Decrypt(dst, getPassword()) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." + gcm1.Seal(nil, nil, getPassword(), nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." + gcm1.Open(nil, nil, getPassword(), nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." + gcm2.Seal(nil, nil, getPassword(), nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." + gcm2.Open(nil, nil, getPassword(), nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." + gcm3.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." + gcm3.Open(nil, nil, password, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." + gcm4.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." + gcm4.Open(nil, nil, password, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 114,88." + cbcEncrypter.CryptBlocks(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 114,88." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, getPassword()) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." + ctrStream.XORKeyStream(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getPassword())} // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." + io.Copy(ctrStreamWriter, bytes.NewReader(getPassword())) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 131,88." + cfbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 131,88." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 136,88." + ofbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 136,88." +} + +func BlockCipherAes() { + // GOOD, aes is a strong crypto algorithm + block, _ := aes.NewCipher(nil) + + block.Encrypt(dst, public) // $ CryptographicOperation="AES. init from line 143." + block.Encrypt(dst, password) // $ CryptographicOperation="AES. init from line 143." + block.Decrypt(dst, password) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." + gcm1.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." + gcm1.Open(nil, nil, password, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." + gcm2.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." + gcm2.Open(nil, nil, password, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." + gcm3.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." + gcm3.Open(nil, nil, password, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." + gcm4.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." + gcm4.Open(nil, nil, password, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 143,169." + cbcEncrypter.CryptBlocks(dst, password) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 143,169." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, password) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." + ctrStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(password)} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." + io.Copy(ctrStreamWriter, bytes.NewReader(password)) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 143,186." + cfbStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 143,186." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 143,191." + ofbStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 143,191." +} + +func CipherRc4() { + c, _ := rc4.NewCipher(nil) + c.XORKeyStream(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="RC4. init from line 198." +} + +func WeakHashes() { buf := password // $ Source - // BAD, des is a weak crypto algorithm and password is sensitive data - des.NewTripleDESCipher(buf) // $ Alert + h := md5.New() + h.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." + h.Write(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." + io.WriteString(h, passwordString) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." + md5.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 208." - // BAD, md5 is a weak crypto algorithm and password is sensitive data - md5.Sum(buf) // $ Alert - - // BAD, rc4 is a weak crypto algorithm and password is sensitive data - rc4.NewCipher(buf) // $ Alert - - // BAD, sha1 is a weak crypto algorithm and password is sensitive data - sha1.Sum(buf) // $ Alert - - // GOOD, password is sensitive data but aes is a strong crypto algorithm - aes.NewCipher(buf) - - // GOOD, password is sensitive data but sha256 is a strong crypto algorithm - sha256.Sum256(buf) - - // GOOD, des is a weak crypto algorithm but public is not sensitive data - des.NewTripleDESCipher(public) - - // GOOD, md5 is a weak crypto algorithm but public is not sensitive data - md5.Sum(public) - - // GOOD, rc4 is a weak crypto algorithm but public is not sensitive data - rc4.NewCipher(public) - - // GOOD, sha1 is a weak crypto algorithm but public is not sensitive data - sha1.Sum(public) - - // GOOD, aes is a strong crypto algorithm and public is not sensitive data - aes.NewCipher(public) - - // GOOD, sha256 is a strong crypto algorithm and public is not sensitive data - sha256.Sum256(public) + sha1.New().Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="SHA1. init from line 210." + sha1.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="SHA1. init from line 211." +} + +func StrongHashes() { + buf := password + + sha256.New224().Sum(buf) // $ CryptographicOperation="SHA224. init from line 217." + sha256.Sum224(buf) // $ CryptographicOperation="SHA224. init from line 218." + + sha256.New().Sum(buf) // $ CryptographicOperation="SHA256. init from line 220." + sha256.Sum256(buf) // $ CryptographicOperation="SHA256. init from line 221." + + sha512.New().Sum(buf) // $ CryptographicOperation="SHA512. init from line 223." + sha512.Sum512(buf) // $ CryptographicOperation="SHA512. init from line 224." + + sha512.New384().Sum(buf) // $ CryptographicOperation="SHA384. init from line 226." + sha512.Sum384(buf) // $ CryptographicOperation="SHA384. init from line 227." + + sha512.New512_224().Sum(buf) // $ CryptographicOperation="SHA512224. init from line 229." + sha512.Sum512_224(buf) // $ CryptographicOperation="SHA512224. init from line 230." + + sha512.New512_256().Sum(buf) // $ CryptographicOperation="SHA512256. init from line 232." + sha512.Sum512_256(buf) // $ CryptographicOperation="SHA512256. init from line 233." + + sha3.New224().Sum(buf) // $ CryptographicOperation="SHA3224. init from line 235." + sha3.Sum224(buf) // $ CryptographicOperation="SHA3224. init from line 236." + + sha3.New256().Sum(buf) // $ CryptographicOperation="SHA3256. init from line 238." + sha3.Sum256(buf) // $ CryptographicOperation="SHA3256. init from line 239." + + sha3.New384().Sum(buf) // $ CryptographicOperation="SHA3384. init from line 241." + sha3.Sum384(buf) // $ CryptographicOperation="SHA3384. init from line 242." + + sha3.New512().Sum(buf) // $ CryptographicOperation="SHA3512. init from line 244." + sha3.Sum512(buf) // $ CryptographicOperation="SHA3512. init from line 245." + + sha3.NewSHAKE128().Write(buf) // $ CryptographicOperation="SHAKE128. init from line 247." + sha3.NewCSHAKE128(nil, nil).Write(buf) // $ CryptographicOperation="SHAKE128. init from line 248." + sha3.SumSHAKE128(buf, 100) // $ CryptographicOperation="SHAKE128. init from line 249." + + sha3.NewSHAKE256().Write(buf) // $ CryptographicOperation="SHAKE256. init from line 251." + sha3.NewCSHAKE256(nil, nil).Write(buf) // $ CryptographicOperation="SHAKE256. init from line 252." + sha3.SumSHAKE256(buf, 100) // $ CryptographicOperation="SHAKE256. init from line 253." } diff --git a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected new file mode 100644 index 00000000000..55e9aed2e93 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.expected @@ -0,0 +1,2 @@ +testFailures +invalidModelRow diff --git a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql new file mode 100644 index 00000000000..ab096f9df2a --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql @@ -0,0 +1,47 @@ +import go +import ModelValidation +import utils.test.InlineExpectationsTest + +module Test implements TestSig { + string getARelevantTag() { result = "CryptographicOperation" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "CryptographicOperation" and + exists( + CryptographicOperation::Range ho, string algorithm, string initialization, string blockMode + | + algorithm = ho.getAlgorithm().toString() + "." and + ( + blockMode = " blockMode: " + ho.getBlockMode().toString() + "." + or + not exists(ho.getBlockMode()) and blockMode = "" + ) and + exists(int c | c = count(ho.getInitialization()) | + c = 0 and initialization = "" + or + c = 1 and + initialization = + " init from line " + + strictconcat(DataFlow::Node init | + init = ho.getInitialization() + | + init.getStartLine().toString(), "," + ) + "." + or + c > 1 and + initialization = + " init from lines " + + strictconcat(DataFlow::Node init | + init = ho.getInitialization() + | + init.getStartLine().toString(), "," + ) + "." + ) and + ho.getLocation() = location and + element = ho.toString() and + value = "\"" + algorithm + blockMode + initialization + "\"" + ) + } +} + +import MakeTest diff --git a/go/ql/test/query-tests/Security/CWE-327/go.mod b/go/ql/test/query-tests/Security/CWE-327/go.mod new file mode 100644 index 00000000000..bf42b84feef --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/go.mod @@ -0,0 +1,3 @@ +module test + +go 1.24 diff --git a/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll b/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll index efcd870c724..86392890caf 100644 --- a/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll +++ b/shared/concepts/codeql/concepts/internal/CryptoAlgorithmNames.qll @@ -23,7 +23,8 @@ predicate isStrongHashingAlgorithm(string name) { "BLAKE3", // "DSA", "ED25519", "ES256", "ECDSA256", "ES384", "ECDSA384", "ES512", "ECDSA512", "SHA2", - "SHA224", "SHA256", "SHA384", "SHA512", "SHA3", "SHA3224", "SHA3256", "SHA3384", "SHA3512", + "SHA224", "SHA256", "SHA384", "SHA512", "SHA512224", "SHA512256", "SHA3", "SHA3224", + "SHA3256", "SHA3384", "SHA3512", // see https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/#cryptography.hazmat.primitives.hashes.SHAKE128 "SHAKE128", "SHAKE256", // see https://cryptography.io/en/latest/hazmat/primitives/cryptographic-hashes/#sm3 From 713e19f6f11bfc307dda3584f94768f4a29e994e Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 31 Oct 2025 15:55:54 +0000 Subject: [PATCH 857/965] Make non-path query for encryption only --- .../BrokenCryptoAlgorithmCustomizations.qll | 58 ---- .../security/BrokenCryptoAlgorithmQuery.qll | 43 --- .../Security/CWE-327/BrokenCryptoAlgorithm.ql | 28 +- .../CWE-327/BrokenCryptoAlgorithm.expected | 112 ++------ .../query-tests/Security/CWE-327/Crypto.go | 254 ------------------ .../Security/CWE-327/encryption.go | 167 ++++++++++++ 6 files changed, 216 insertions(+), 446 deletions(-) delete mode 100644 go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll delete mode 100644 go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll delete mode 100644 go/ql/test/query-tests/Security/CWE-327/Crypto.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/encryption.go diff --git a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll deleted file mode 100644 index e5ac77fbb75..00000000000 --- a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmCustomizations.qll +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ - -import go -private import semmle.go.security.SensitiveActions - -/** - * Provides default sources, sinks and sanitizers for reasoning about - * sensitive information in weak cryptographic algorithms, - * as well as extension points for adding your own. - */ -module BrokenCryptoAlgorithm { - /** - * A data flow source for sensitive information in broken or weak cryptographic algorithms. - */ - abstract class Source extends DataFlow::Node { } - - /** - * A data flow sink for sensitive information in broken or weak cryptographic algorithms. - */ - abstract class Sink extends DataFlow::Node { - /** Gets the data-flow node where the cryptographic algorithm used in this operation is configured. */ - abstract DataFlow::Node getInitialization(); - } - - /** - * A sanitizer for sensitive information in broken or weak cryptographic algorithms. - */ - abstract class Sanitizer extends DataFlow::Node { } - - /** - * A sensitive source. - */ - class SensitiveSource extends Source { - SensitiveSource() { this.asExpr() instanceof SensitiveExpr } - } - - /** - * An expression used by a broken or weak cryptographic algorithm. - */ - class WeakCryptographicOperationSink extends Sink { - CryptographicOperation application; - - WeakCryptographicOperationSink() { - ( - application.getAlgorithm().isWeak() - or - application.getBlockMode().isWeak() - ) and - this = application.getAnInput() - } - - override DataFlow::Node getInitialization() { result = application.getInitialization() } - } -} diff --git a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll b/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll deleted file mode 100644 index ba24dcf5707..00000000000 --- a/go/ql/lib/semmle/go/security/BrokenCryptoAlgorithmQuery.qll +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Provides a taint tracking configuration for reasoning about - * sensitive information in broken or weak cryptographic algorithms. - * - * Note, for performance reasons: only import this file if - * `BrokenCryptoAlgorithm::Configuration` is needed, otherwise - * `BrokenCryptoAlgorithmCustomizations` should be imported instead. - */ - -import go -import BrokenCryptoAlgorithmCustomizations::BrokenCryptoAlgorithm - -/** - * A taint tracking configuration for sensitive information in broken or weak cryptographic algorithms. - * - * This configuration identifies flows from `Source`s, which are sources of - * sensitive data, to `Sink`s, which is an abstract class representing all - * the places sensitive data may used in broken or weak cryptographic algorithms. Additional sources or sinks can be - * added either by extending the relevant class, or by subclassing this configuration itself, - * and amending the sources and sinks. - */ -private module BrokenCryptoAlgorithmConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof Source } - - predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - - predicate isBarrierIn(DataFlow::Node node) { isSource(node) } - - predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } - - predicate observeDiffInformedIncrementalMode() { any() } - - Location getASelectedSinkLocation(DataFlow::Node sink) { - result = sink.(Sink).getLocation() - or - result = sink.(Sink).getInitialization().getLocation() - } -} - -/** - * Taint tracking flow for sensitive information in broken or weak cryptographic algorithms. - */ -module BrokenCryptoAlgorithmFlow = TaintTracking::Global; diff --git a/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql index 714a1cc7b3e..67b2d0d6d2b 100644 --- a/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql +++ b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql @@ -1,21 +1,33 @@ /** * @name Use of a broken or weak cryptographic algorithm * @description Using broken or weak cryptographic algorithms can compromise security. - * @kind path-problem + * @kind problem * @problem.severity warning * @security-severity 7.5 * @precision high - * @id go/weak-crypto-algorithm + * @id go/weak-cryptographic-algorithm * @tags security * external/cwe/cwe-327 * external/cwe/cwe-328 */ import go -import semmle.go.security.BrokenCryptoAlgorithmQuery -import BrokenCryptoAlgorithmFlow::PathGraph -from BrokenCryptoAlgorithmFlow::PathNode source, BrokenCryptoAlgorithmFlow::PathNode sink -where BrokenCryptoAlgorithmFlow::flowPath(source, sink) -select sink.getNode(), source, sink, "$@ is used in a weak cryptographic algorithm.", - source.getNode(), "Sensitive data" +from Cryptography::CryptographicOperation operation, string msgPrefix, DataFlow::Node init +where + init = operation.getInitialization() and + // `init` may be a `BlockModeInit`, a `EncryptionAlgorithmInit`, or `operation` itself. + ( + not init instanceof BlockModeInit and + exists(Cryptography::CryptographicAlgorithm algorithm | + algorithm = operation.getAlgorithm() and + algorithm.isWeak() and + msgPrefix = "The cryptographic algorithm " + algorithm.getName() and + not algorithm instanceof Cryptography::HashingAlgorithm + ) + or + not init instanceof EncryptionAlgorithmInit and + operation.getBlockMode().isWeak() and + msgPrefix = "The block mode " + operation.getBlockMode() + ) +select operation, "$@ is broken or weak, and should not be used.", init, msgPrefix diff --git a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected index 4fbf77dda62..00eb67fea0b 100644 --- a/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected +++ b/go/ql/test/query-tests/Security/CWE-327/BrokenCryptoAlgorithm.expected @@ -1,83 +1,29 @@ -#select -| Crypto.go:36:21:36:28 | password | Crypto.go:36:21:36:28 | password | Crypto.go:36:21:36:28 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:36:21:36:28 | password | Sensitive data | -| Crypto.go:41:22:41:29 | password | Crypto.go:41:22:41:29 | password | Crypto.go:41:22:41:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:41:22:41:29 | password | Sensitive data | -| Crypto.go:46:22:46:29 | password | Crypto.go:46:22:46:29 | password | Crypto.go:46:22:46:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:46:22:46:29 | password | Sensitive data | -| Crypto.go:51:22:51:29 | password | Crypto.go:51:22:51:29 | password | Crypto.go:51:22:51:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:51:22:51:29 | password | Sensitive data | -| Crypto.go:56:22:56:29 | password | Crypto.go:56:22:56:29 | password | Crypto.go:56:22:56:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:56:22:56:29 | password | Sensitive data | -| Crypto.go:61:32:61:39 | password | Crypto.go:61:32:61:39 | password | Crypto.go:61:32:61:39 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:61:32:61:39 | password | Sensitive data | -| Crypto.go:66:30:66:37 | password | Crypto.go:66:30:66:37 | password | Crypto.go:66:30:66:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:66:30:66:37 | password | Sensitive data | -| Crypto.go:68:59:68:83 | call to NewReader | Crypto.go:68:75:68:82 | password | Crypto.go:68:59:68:83 | call to NewReader | $@ is used in a weak cryptographic algorithm. | Crypto.go:68:75:68:82 | password | Sensitive data | -| Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | Crypto.go:72:43:72:50 | password | Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | $@ is used in a weak cryptographic algorithm. | Crypto.go:72:43:72:50 | password | Sensitive data | -| Crypto.go:78:30:78:37 | password | Crypto.go:78:30:78:37 | password | Crypto.go:78:30:78:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:78:30:78:37 | password | Sensitive data | -| Crypto.go:83:30:83:37 | password | Crypto.go:83:30:83:37 | password | Crypto.go:83:30:83:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:83:30:83:37 | password | Sensitive data | -| Crypto.go:91:21:91:33 | call to getPassword | Crypto.go:91:21:91:33 | call to getPassword | Crypto.go:91:21:91:33 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:91:21:91:33 | call to getPassword | Sensitive data | -| Crypto.go:96:22:96:34 | call to getPassword | Crypto.go:96:22:96:34 | call to getPassword | Crypto.go:96:22:96:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:96:22:96:34 | call to getPassword | Sensitive data | -| Crypto.go:101:22:101:34 | call to getPassword | Crypto.go:101:22:101:34 | call to getPassword | Crypto.go:101:22:101:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:101:22:101:34 | call to getPassword | Sensitive data | -| Crypto.go:106:22:106:29 | password | Crypto.go:106:22:106:29 | password | Crypto.go:106:22:106:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:106:22:106:29 | password | Sensitive data | -| Crypto.go:111:22:111:29 | password | Crypto.go:111:22:111:29 | password | Crypto.go:111:22:111:29 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:111:22:111:29 | password | Sensitive data | -| Crypto.go:116:32:116:44 | call to getPassword | Crypto.go:116:32:116:44 | call to getPassword | Crypto.go:116:32:116:44 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:116:32:116:44 | call to getPassword | Sensitive data | -| Crypto.go:121:30:121:42 | call to getPassword | Crypto.go:121:30:121:42 | call to getPassword | Crypto.go:121:30:121:42 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:121:30:121:42 | call to getPassword | Sensitive data | -| Crypto.go:123:59:123:88 | call to NewReader | Crypto.go:123:75:123:87 | call to getPassword | Crypto.go:123:59:123:88 | call to NewReader | $@ is used in a weak cryptographic algorithm. | Crypto.go:123:75:123:87 | call to getPassword | Sensitive data | -| Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | Crypto.go:127:43:127:55 | call to getPassword | Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | $@ is used in a weak cryptographic algorithm. | Crypto.go:127:43:127:55 | call to getPassword | Sensitive data | -| Crypto.go:133:30:133:37 | password | Crypto.go:133:30:133:37 | password | Crypto.go:133:30:133:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:133:30:133:37 | password | Sensitive data | -| Crypto.go:138:30:138:37 | password | Crypto.go:138:30:138:37 | password | Crypto.go:138:30:138:37 | password | $@ is used in a weak cryptographic algorithm. | Crypto.go:138:30:138:37 | password | Sensitive data | -| Crypto.go:198:22:198:34 | call to getPassword | Crypto.go:198:22:198:34 | call to getPassword | Crypto.go:198:22:198:34 | call to getPassword | $@ is used in a weak cryptographic algorithm. | Crypto.go:198:22:198:34 | call to getPassword | Sensitive data | -| Crypto.go:205:8:205:10 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:205:8:205:10 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | -| Crypto.go:206:10:206:12 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:206:10:206:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | -| Crypto.go:207:20:207:33 | passwordString | Crypto.go:207:20:207:33 | passwordString | Crypto.go:207:20:207:33 | passwordString | $@ is used in a weak cryptographic algorithm. | Crypto.go:207:20:207:33 | passwordString | Sensitive data | -| Crypto.go:208:10:208:12 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:208:10:208:12 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | -| Crypto.go:210:17:210:19 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:210:17:210:19 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | -| Crypto.go:211:11:211:13 | buf | Crypto.go:202:9:202:16 | password | Crypto.go:211:11:211:13 | buf | $@ is used in a weak cryptographic algorithm. | Crypto.go:202:9:202:16 | password | Sensitive data | -edges -| Crypto.go:68:75:68:82 | password | Crypto.go:68:59:68:83 | call to NewReader | provenance | MaD:1 | -| Crypto.go:72:27:72:51 | call to NewReader | Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | provenance | MaD:2 | -| Crypto.go:72:43:72:50 | password | Crypto.go:72:27:72:51 | call to NewReader | provenance | MaD:1 | -| Crypto.go:123:75:123:87 | call to getPassword | Crypto.go:123:59:123:88 | call to NewReader | provenance | MaD:1 | -| Crypto.go:127:27:127:56 | call to NewReader | Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | provenance | MaD:2 | -| Crypto.go:127:43:127:55 | call to getPassword | Crypto.go:127:27:127:56 | call to NewReader | provenance | MaD:1 | -| Crypto.go:202:9:202:16 | password | Crypto.go:205:8:205:10 | buf | provenance | | -| Crypto.go:202:9:202:16 | password | Crypto.go:206:10:206:12 | buf | provenance | | -| Crypto.go:202:9:202:16 | password | Crypto.go:208:10:208:12 | buf | provenance | | -| Crypto.go:202:9:202:16 | password | Crypto.go:210:17:210:19 | buf | provenance | | -| Crypto.go:202:9:202:16 | password | Crypto.go:211:11:211:13 | buf | provenance | | -models -| 1 | Summary: bytes; ; false; NewReader; ; ; Argument[0]; ReturnValue; taint; manual | -| 2 | Summary: io; ; false; Copy; ; ; Argument[1]; Argument[0]; taint; manual | -nodes -| Crypto.go:36:21:36:28 | password | semmle.label | password | -| Crypto.go:41:22:41:29 | password | semmle.label | password | -| Crypto.go:46:22:46:29 | password | semmle.label | password | -| Crypto.go:51:22:51:29 | password | semmle.label | password | -| Crypto.go:56:22:56:29 | password | semmle.label | password | -| Crypto.go:61:32:61:39 | password | semmle.label | password | -| Crypto.go:66:30:66:37 | password | semmle.label | password | -| Crypto.go:68:59:68:83 | call to NewReader | semmle.label | call to NewReader | -| Crypto.go:68:75:68:82 | password | semmle.label | password | -| Crypto.go:72:10:72:24 | ctrStreamWriter [postupdate] | semmle.label | ctrStreamWriter [postupdate] | -| Crypto.go:72:27:72:51 | call to NewReader | semmle.label | call to NewReader | -| Crypto.go:72:43:72:50 | password | semmle.label | password | -| Crypto.go:78:30:78:37 | password | semmle.label | password | -| Crypto.go:83:30:83:37 | password | semmle.label | password | -| Crypto.go:91:21:91:33 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:96:22:96:34 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:101:22:101:34 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:106:22:106:29 | password | semmle.label | password | -| Crypto.go:111:22:111:29 | password | semmle.label | password | -| Crypto.go:116:32:116:44 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:121:30:121:42 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:123:59:123:88 | call to NewReader | semmle.label | call to NewReader | -| Crypto.go:123:75:123:87 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:127:10:127:24 | ctrStreamWriter [postupdate] | semmle.label | ctrStreamWriter [postupdate] | -| Crypto.go:127:27:127:56 | call to NewReader | semmle.label | call to NewReader | -| Crypto.go:127:43:127:55 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:133:30:133:37 | password | semmle.label | password | -| Crypto.go:138:30:138:37 | password | semmle.label | password | -| Crypto.go:198:22:198:34 | call to getPassword | semmle.label | call to getPassword | -| Crypto.go:202:9:202:16 | password | semmle.label | password | -| Crypto.go:205:8:205:10 | buf | semmle.label | buf | -| Crypto.go:206:10:206:12 | buf | semmle.label | buf | -| Crypto.go:207:20:207:33 | passwordString | semmle.label | passwordString | -| Crypto.go:208:10:208:12 | buf | semmle.label | buf | -| Crypto.go:210:17:210:19 | buf | semmle.label | buf | -| Crypto.go:211:11:211:13 | buf | semmle.label | buf | -subpaths +| encryption.go:30:2:30:36 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:34:2:34:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:38:2:38:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:42:2:42:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:46:2:46:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:50:2:50:47 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:54:2:54:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:56:22:56:91 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:21:59:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:59:22:59:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:60:10:60:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:65:2:65:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:69:2:69:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:28:2:28:31 | ... := ...[0] | The cryptographic algorithm DES | +| encryption.go:76:2:76:32 | call to Encrypt | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:80:2:80:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:84:2:84:38 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:88:2:88:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:92:2:92:42 | call to Seal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:96:2:96:43 | call to CryptBlocks | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:100:2:100:41 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:102:22:102:87 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:21:105:68 | &... [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:105:22:105:68 | struct literal [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:106:10:106:24 | ctrStreamWriter [postupdate] | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:111:2:111:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:115:2:115:45 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:74:2:74:40 | ... := ...[0] | The cryptographic algorithm TRIPLEDES | +| encryption.go:166:2:166:33 | call to XORKeyStream | $@ is broken or weak, and should not be used. | encryption.go:166:2:166:33 | call to XORKeyStream | The cryptographic algorithm RC4 | diff --git a/go/ql/test/query-tests/Security/CWE-327/Crypto.go b/go/ql/test/query-tests/Security/CWE-327/Crypto.go deleted file mode 100644 index 1a7afc35cb9..00000000000 --- a/go/ql/test/query-tests/Security/CWE-327/Crypto.go +++ /dev/null @@ -1,254 +0,0 @@ -package main - -import ( - "bytes" - "crypto/aes" - "crypto/cipher" - "crypto/des" - "crypto/md5" - "crypto/rc4" - "crypto/sha1" - "crypto/sha256" - "crypto/sha3" - "crypto/sha512" - "io" - "os" -) - -var dst []byte = make([]byte, 16) -var password []byte = []byte("123456") - -const passwordString string = "correct horse battery staple" - -var public []byte = []byte("hello") - -func getPassword() []byte { - return []byte("123456") -} - -// Note that we do not alert on decryption as we may need to decrypt legacy formats - -func BlockCipherDes() { - // BAD, des is a weak crypto algorithm - block, _ := des.NewCipher(nil) - - block.Encrypt(dst, public) // $ CryptographicOperation="DES. init from line 33." - block.Encrypt(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." - block.Decrypt(dst, password) - - gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." - gcm1.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." - gcm1.Open(nil, nil, password, nil) - - gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." - gcm2.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." - gcm2.Open(nil, nil, password, nil) - - gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." - gcm3.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." - gcm3.Open(nil, nil, password, nil) - - gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="DES. init from line 33." - gcm4.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. init from line 33." - gcm4.Open(nil, nil, password, nil) - - cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="DES. blockMode: CBC. init from lines 33,59." - cbcEncrypter.CryptBlocks(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CBC. init from lines 33,59." - cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, password) - - ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." - ctrStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." - - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(password)} // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." - io.Copy(os.Stdout, ctrStreamReader) - - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." - io.Copy(ctrStreamWriter, bytes.NewReader(password)) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 33,64." - - // deprecated - - cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: CFB. init from lines 33,76." - cfbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: CFB. init from lines 33,76." - cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) - - ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="DES. blockMode: OFB. init from lines 33,81." - ofbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="DES. blockMode: OFB. init from lines 33,81." -} - -func BlockCipherTripleDes() { - // BAD, triple des is a weak crypto algorithm and password is sensitive data - block, _ := des.NewTripleDESCipher(nil) - - block.Encrypt(dst, public) // $ CryptographicOperation="TRIPLEDES. init from line 88." - block.Encrypt(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." - block.Decrypt(dst, getPassword()) - - gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." - gcm1.Seal(nil, nil, getPassword(), nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." - gcm1.Open(nil, nil, getPassword(), nil) - - gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." - gcm2.Seal(nil, nil, getPassword(), nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." - gcm2.Open(nil, nil, getPassword(), nil) - - gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." - gcm3.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." - gcm3.Open(nil, nil, password, nil) - - gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="TRIPLEDES. init from line 88." - gcm4.Seal(nil, nil, password, nil) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. init from line 88." - gcm4.Open(nil, nil, password, nil) - - cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 114,88." - cbcEncrypter.CryptBlocks(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 114,88." - cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, getPassword()) - - ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." - ctrStream.XORKeyStream(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." - - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getPassword())} // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." - io.Copy(os.Stdout, ctrStreamReader) - - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." - io.Copy(ctrStreamWriter, bytes.NewReader(getPassword())) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 119,88." - - // deprecated - - cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 131,88." - cfbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 131,88." - cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) - - ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 136,88." - ofbStream.XORKeyStream(dst, password) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 136,88." -} - -func BlockCipherAes() { - // GOOD, aes is a strong crypto algorithm - block, _ := aes.NewCipher(nil) - - block.Encrypt(dst, public) // $ CryptographicOperation="AES. init from line 143." - block.Encrypt(dst, password) // $ CryptographicOperation="AES. init from line 143." - block.Decrypt(dst, password) - - gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." - gcm1.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." - gcm1.Open(nil, nil, password, nil) - - gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." - gcm2.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." - gcm2.Open(nil, nil, password, nil) - - gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." - gcm3.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." - gcm3.Open(nil, nil, password, nil) - - gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, public, nil) // $ CryptographicOperation="AES. init from line 143." - gcm4.Seal(nil, nil, password, nil) // $ CryptographicOperation="AES. init from line 143." - gcm4.Open(nil, nil, password, nil) - - cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, public) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 143,169." - cbcEncrypter.CryptBlocks(dst, password) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 143,169." - cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, password) - - ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." - ctrStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." - - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(password)} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." - io.Copy(os.Stdout, ctrStreamReader) - - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." - io.Copy(ctrStreamWriter, bytes.NewReader(password)) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 143,174." - - // deprecated - - cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 143,186." - cfbStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 143,186." - cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, password) - - ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, public) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 143,191." - ofbStream.XORKeyStream(dst, password) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 143,191." -} - -func CipherRc4() { - c, _ := rc4.NewCipher(nil) - c.XORKeyStream(dst, getPassword()) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="RC4. init from line 198." -} - -func WeakHashes() { - buf := password // $ Source - - h := md5.New() - h.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." - h.Write(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." - io.WriteString(h, passwordString) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 204." - md5.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="MD5. init from line 208." - - sha1.New().Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="SHA1. init from line 210." - sha1.Sum(buf) // $ Alert[go/weak-crypto-algorithm] CryptographicOperation="SHA1. init from line 211." -} - -func StrongHashes() { - buf := password - - sha256.New224().Sum(buf) // $ CryptographicOperation="SHA224. init from line 217." - sha256.Sum224(buf) // $ CryptographicOperation="SHA224. init from line 218." - - sha256.New().Sum(buf) // $ CryptographicOperation="SHA256. init from line 220." - sha256.Sum256(buf) // $ CryptographicOperation="SHA256. init from line 221." - - sha512.New().Sum(buf) // $ CryptographicOperation="SHA512. init from line 223." - sha512.Sum512(buf) // $ CryptographicOperation="SHA512. init from line 224." - - sha512.New384().Sum(buf) // $ CryptographicOperation="SHA384. init from line 226." - sha512.Sum384(buf) // $ CryptographicOperation="SHA384. init from line 227." - - sha512.New512_224().Sum(buf) // $ CryptographicOperation="SHA512224. init from line 229." - sha512.Sum512_224(buf) // $ CryptographicOperation="SHA512224. init from line 230." - - sha512.New512_256().Sum(buf) // $ CryptographicOperation="SHA512256. init from line 232." - sha512.Sum512_256(buf) // $ CryptographicOperation="SHA512256. init from line 233." - - sha3.New224().Sum(buf) // $ CryptographicOperation="SHA3224. init from line 235." - sha3.Sum224(buf) // $ CryptographicOperation="SHA3224. init from line 236." - - sha3.New256().Sum(buf) // $ CryptographicOperation="SHA3256. init from line 238." - sha3.Sum256(buf) // $ CryptographicOperation="SHA3256. init from line 239." - - sha3.New384().Sum(buf) // $ CryptographicOperation="SHA3384. init from line 241." - sha3.Sum384(buf) // $ CryptographicOperation="SHA3384. init from line 242." - - sha3.New512().Sum(buf) // $ CryptographicOperation="SHA3512. init from line 244." - sha3.Sum512(buf) // $ CryptographicOperation="SHA3512. init from line 245." - - sha3.NewSHAKE128().Write(buf) // $ CryptographicOperation="SHAKE128. init from line 247." - sha3.NewCSHAKE128(nil, nil).Write(buf) // $ CryptographicOperation="SHAKE128. init from line 248." - sha3.SumSHAKE128(buf, 100) // $ CryptographicOperation="SHAKE128. init from line 249." - - sha3.NewSHAKE256().Write(buf) // $ CryptographicOperation="SHAKE256. init from line 251." - sha3.NewCSHAKE256(nil, nil).Write(buf) // $ CryptographicOperation="SHAKE256. init from line 252." - sha3.SumSHAKE256(buf, 100) // $ CryptographicOperation="SHAKE256. init from line 253." -} diff --git a/go/ql/test/query-tests/Security/CWE-327/encryption.go b/go/ql/test/query-tests/Security/CWE-327/encryption.go new file mode 100644 index 00000000000..2a1bd53440b --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/encryption.go @@ -0,0 +1,167 @@ +package main + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/rc4" + "io" + "os" +) + +var dst []byte = make([]byte, 16) +var secretByteSlice []byte = []byte("") + +const secretString string = "" + +var public []byte = []byte("") + +func getUserID() []byte { + return []byte("") +} + +// Note that we do not alert on decryption as we may need to decrypt legacy formats + +func BlockCipherDes() { + // BAD, des is a weak crypto algorithm + block, _ := des.NewCipher(nil) + + block.Encrypt(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + block.Decrypt(dst, secretByteSlice) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm1.Open(nil, nil, secretByteSlice, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm2.Open(nil, nil, secretByteSlice, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CBC. init from lines 28,49." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CFB. init from lines 28,64." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: OFB. init from lines 28,68." +} + +func BlockCipherTripleDes() { + // BAD, triple des is a weak crypto algorithm and secretByteSlice is sensitive data + block, _ := des.NewTripleDESCipher(nil) + + block.Encrypt(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + block.Decrypt(dst, getUserID()) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm1.Open(nil, nil, getUserID(), nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm2.Open(nil, nil, getUserID(), nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 74,95." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, getUserID()) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getUserID())} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + io.Copy(ctrStreamWriter, bytes.NewReader(getUserID())) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 110,74." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 114,74." +} + +func BlockCipherAes() { + // GOOD, aes is a strong crypto algorithm + block, _ := aes.NewCipher(nil) + + block.Encrypt(dst, secretByteSlice) // $ CryptographicOperation="AES. init from line 120." + block.Decrypt(dst, secretByteSlice) + + gcm1, _ := cipher.NewGCM(block) + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm1.Open(nil, nil, secretByteSlice, nil) + + gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm2.Open(nil, nil, secretByteSlice, nil) + + gcm3, _ := cipher.NewGCMWithRandomNonce(block) + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm3.Open(nil, nil, secretByteSlice, nil) + + gcm4, _ := cipher.NewGCMWithTagSize(block, 12) + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm4.Open(nil, nil, secretByteSlice, nil) + + cbcEncrypter := cipher.NewCBCEncrypter(block, nil) + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 120,141." + cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) + + ctrStream := cipher.NewCTR(block, nil) + ctrStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + io.Copy(os.Stdout, ctrStreamReader) + + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + + // deprecated + + cfbStream := cipher.NewCFBEncrypter(block, nil) + cfbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 120,156." + cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) + + ofbStream := cipher.NewOFB(block, nil) + ofbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 120,160." +} + +func CipherRc4() { + c, _ := rc4.NewCipher(nil) + c.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="RC4. init from line 166." +} From 52d7e2dd18c8035e9bea279d961d5279c8212b92 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 31 Oct 2025 15:56:18 +0000 Subject: [PATCH 858/965] Add query for hashing sensitive data with weak hashing algorithm --- ...WeakSensitiveDataHashingCustomizations.qll | 172 ++++++++++++++++++ .../CWE-327/WeakSensitiveDataHashing.qhelp | 104 +++++++++++ .../CWE-327/WeakSensitiveDataHashing.ql | 114 ++++++++++++ .../CWE-327/WeakSensitiveDataHashing.expected | 22 +++ .../CWE-327/WeakSensitiveDataHashing.qlref | 4 + .../test/query-tests/Security/CWE-327/go.mod | 4 +- .../query-tests/Security/CWE-327/hashing.go | 81 +++++++++ .../vendor/golang.org/x/crypto/md4/stub.go | 16 ++ .../golang.org/x/crypto/ripemd160/stub.go | 16 ++ .../Security/CWE-327/vendor/modules.txt | 4 + 10 files changed, 536 insertions(+), 1 deletion(-) create mode 100644 go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll create mode 100644 go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp create mode 100644 go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql create mode 100644 go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected create mode 100644 go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-327/hashing.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt diff --git a/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll new file mode 100644 index 00000000000..f03b93eb7c2 --- /dev/null +++ b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll @@ -0,0 +1,172 @@ +/** + * Provides default sources, sinks and sanitizers for detecting "use of a + * broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities, as well as extension points for adding your own. This is + * divided into two general cases: + * - hashing sensitive data + * - hashing passwords (which requires the hashing algorithm to be + * sufficiently computationally expensive in addition to other requirements) + */ + +import go +import semmle.go.dataflow.internal.DataFlowPrivate +private import semmle.go.security.SensitiveActions + +/** + * Provides default sources, sinks and sanitizers for detecting "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities on sensitive data that does + * NOT require computationally expensive hashing, as well as extension points for adding your own. + * + * Also see the `ComputationallyExpensiveHashFunction` module. + */ +module NormalHashFunction { + /** + * A data flow source for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that does not require computationally expensive hashing. That is, a + * piece of sensitive data that is not a password. + */ + abstract class Source extends DataFlow::Node { + Source() { not this instanceof ComputationallyExpensiveHashFunction::Source } + + /** + * Gets the classification of the sensitive data. + */ + abstract string getClassification(); + } + + /** + * A data flow sink for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that applies to data that does not require computationally expensive + * hashing. That is, a broken or weak hashing algorithm. + */ + abstract class Sink extends DataFlow::Node { + /** + * Gets the name of the weak hashing algorithm. + */ + abstract string getAlgorithmName(); + } + + /** + * A barrier for "use of a broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities that applies to data that does not require computationally expensive hashing. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * A flow source modeled by the `SensitiveData` library. + */ + class SensitiveDataAsSource extends Source { + SensitiveExpr::Classification classification; + + SensitiveDataAsSource() { + classification = this.asExpr().(SensitiveExpr).getClassification() and + not classification = SensitiveExpr::password() and // (covered in ComputationallyExpensiveHashFunction) + not classification = SensitiveExpr::id() // (not accurate enough) + } + + override SensitiveExpr::Classification getClassification() { result = classification } + } + + /** + * A flow sink modeled by the `Cryptography` module. + */ + class WeakHashingOperationInputAsSink extends Sink { + Cryptography::HashingAlgorithm algorithm; + + WeakHashingOperationInputAsSink() { + exists(Cryptography::CryptographicOperation operation | + algorithm.isWeak() and + algorithm = operation.getAlgorithm() and + this = operation.getAnInput() + ) + } + + override string getAlgorithmName() { result = algorithm.getName() } + } +} + +/** + * Provides default sources, sinks and sanitizers for detecting "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities on sensitive data that DOES + * require computationally expensive hashing, as well as extension points for adding your own. + * + * Also see the `NormalHashFunction` module. + */ +module ComputationallyExpensiveHashFunction { + /** + * A data flow source for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that does require computationally expensive hashing. That is, a + * password. + */ + abstract class Source extends DataFlow::Node { + /** + * Gets the classification of the sensitive data. + */ + abstract string getClassification(); + } + + /** + * A data flow sink for "use of a broken or weak cryptographic hashing algorithm on sensitive + * data" vulnerabilities that applies to data that does require computationally expensive + * hashing. That is, a broken or weak hashing algorithm or one that is not computationally + * expensive enough for password hashing. + */ + abstract class Sink extends DataFlow::Node { + /** + * Gets the name of the weak hashing algorithm. + */ + abstract string getAlgorithmName(); + + /** + * Holds if this sink is for a computationally expensive hash function (meaning that hash + * function is just weak in some other regard. + */ + abstract predicate isComputationallyExpensive(); + } + + /** + * A barrier for "use of a broken or weak cryptographic hashing algorithm on sensitive data" + * vulnerabilities that applies to data that does require computationally expensive hashing. + */ + abstract class Barrier extends DataFlow::Node { } + + /** + * A flow source modeled by the `SensitiveData` library. + */ + class PasswordAsSource extends Source { + SensitiveExpr::Classification classification; + + PasswordAsSource() { + classification = this.asExpr().(SensitiveExpr).getClassification() and + classification = SensitiveExpr::password() + } + + override SensitiveExpr::Classification getClassification() { result = classification } + } + + /** + * A flow sink modeled by the `Cryptography` module. + */ + class WeakPasswordHashingOperationInputSink extends Sink { + Cryptography::CryptographicAlgorithm algorithm; + + WeakPasswordHashingOperationInputSink() { + exists(Cryptography::CryptographicOperation operation | + ( + algorithm instanceof Cryptography::PasswordHashingAlgorithm and + algorithm.isWeak() + or + algorithm instanceof Cryptography::HashingAlgorithm // Note that HashingAlgorithm and PasswordHashingAlgorithm are disjoint + ) and + algorithm = operation.getAlgorithm() and + this = operation.getAnInput() + ) + } + + override string getAlgorithmName() { result = algorithm.getName() } + + override predicate isComputationallyExpensive() { + algorithm instanceof Cryptography::PasswordHashingAlgorithm + } + } +} diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp new file mode 100644 index 00000000000..422cbb83514 --- /dev/null +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp @@ -0,0 +1,104 @@ + + + +

    + Using a broken or weak cryptographic hash function can leave data + vulnerable, and should not be used in security related code. +

    + +

    + A strong cryptographic hash function should be resistant to: +

    +
      +
    • + pre-image attacks: if you know a hash value h(x), + you should not be able to easily find the input x. +
    • +
    • + collision attacks: if you know a hash value h(x), + you should not be able to easily find a different input y + with the same hash value h(x) = h(y). +
    • +
    +

    + In cases with a limited input space, such as for passwords, the hash + function also needs to be computationally expensive to be resistant to + brute-force attacks. Passwords should also have an unique salt applied + before hashing, but that is not considered by this query. +

    + +

    + As an example, both MD5 and SHA-1 are known to be vulnerable to collision attacks. +

    + +

    + Since it's OK to use a weak cryptographic hash function in a non-security + context, this query only alerts when these are used to hash sensitive + data (such as passwords, certificates, usernames). +

    + +

    + Use of broken or weak cryptographic algorithms that are not hashing algorithms, is + handled by the rb/weak-cryptographic-algorithm query. +

    + +
    + + +

    + Ensure that you use a strong, modern cryptographic hash function: +

    + +
      +
    • + such as Argon2, scrypt, bcrypt, or PBKDF2 for passwords and other data with limited input space. +
    • +
    • + such as SHA-2, or SHA-3 in other cases. +
    • +
    + +
    + + +

    + The following example shows two functions for checking whether the hash + of a certificate matches a known value -- to prevent tampering. + + The first function uses MD5 that is known to be vulnerable to collision attacks. + + The second function uses SHA-256 that is a strong cryptographic hashing function. +

    + + + +
    + +

    + The following example shows two functions for hashing passwords. + + The first function uses SHA-256 to hash passwords. Although SHA-256 is a + strong cryptographic hash function, it is not suitable for password + hashing since it is not computationally expensive. +

    + + + + +

    + The second function uses Argon2 (through the argon2 + gem), which is a strong password hashing algorithm (and + includes a per-password salt by default). +

    + + + +
    + + +
  • OWASP: Password Storage Cheat Sheet
  • +
    + +
    diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql new file mode 100644 index 00000000000..bd46bd50a83 --- /dev/null +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql @@ -0,0 +1,114 @@ +/** + * @name Use of a broken or weak cryptographic hashing algorithm on sensitive data + * @description Using broken or weak cryptographic hashing algorithms can compromise security. + * @kind path-problem + * @problem.severity warning + * @security-severity 7.5 + * @precision high + * @id go/weak-sensitive-data-hashing + * @tags security + * external/cwe/cwe-327 + * external/cwe/cwe-328 + * external/cwe/cwe-916 + */ + +import go +import semmle.go.security.WeakSensitiveDataHashingCustomizations + +/** + * Provides a taint-tracking configuration for detecting use of a broken or weak + * cryptographic hash function on sensitive data, that does NOT require a + * computationally expensive hash function. + */ +module NormalHashFunctionFlow { + import NormalHashFunction + + private module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } + + predicate isBarrierIn(DataFlow::Node node) { + // make sources barriers so that we only report the closest instance + isSource(node) + } + + predicate isBarrierOut(DataFlow::Node node) { + // make sinks barriers so that we only report the closest instance + isSink(node) + } + } + + import TaintTracking::Global +} + +/** + * Provides a taint-tracking configuration for detecting use of a broken or weak + * cryptographic hashing algorithm on passwords. + * + * Passwords has stricter requirements on the hashing algorithm used (must be + * computationally expensive to prevent brute-force attacks). + */ +module ComputationallyExpensiveHashFunctionFlow { + import ComputationallyExpensiveHashFunction + + private module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Barrier } + + predicate isBarrierIn(DataFlow::Node node) { + // make sources barriers so that we only report the closest instance + isSource(node) + } + + predicate isBarrierOut(DataFlow::Node node) { + // make sinks barriers so that we only report the closest instance + isSink(node) + } + } + + import TaintTracking::Global +} + +/** + * Global taint-tracking for detecting both variants of "use of a broken or weak + * cryptographic hashing algorithm on sensitive data" vulnerabilities. The two configurations are + * merged to generate a combined path graph. + */ +module WeakSensitiveDataHashingFlow = + DataFlow::MergePathGraph; + +import WeakSensitiveDataHashingFlow::PathGraph + +from + WeakSensitiveDataHashingFlow::PathNode source, WeakSensitiveDataHashingFlow::PathNode sink, + string ending, string algorithmName, string classification +where + NormalHashFunctionFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) and + algorithmName = sink.getNode().(NormalHashFunction::Sink).getAlgorithmName() and + classification = source.getNode().(NormalHashFunction::Source).getClassification() and + ending = "." + or + ComputationallyExpensiveHashFunctionFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) and + algorithmName = sink.getNode().(ComputationallyExpensiveHashFunction::Sink).getAlgorithmName() and + classification = + source.getNode().(ComputationallyExpensiveHashFunction::Source).getClassification() and + ( + sink.getNode().(ComputationallyExpensiveHashFunction::Sink).isComputationallyExpensive() and + ending = "." + or + not sink.getNode().(ComputationallyExpensiveHashFunction::Sink).isComputationallyExpensive() and + ending = + " for " + classification + + " hashing, since it is not a computationally expensive hash function." + ) +select sink.getNode(), source, sink, + "$@ is used in a hashing algorithm (" + algorithmName + ") that is insecure" + ending, + source.getNode(), "Sensitive data (" + classification + ")" diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected new file mode 100644 index 00000000000..301658e22cb --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected @@ -0,0 +1,22 @@ +#select +| hashing.go:20:8:20:22 | secretByteSlice | hashing.go:20:8:20:22 | secretByteSlice | hashing.go:20:8:20:22 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:20:8:20:22 | secretByteSlice | Sensitive data (secret) | +| hashing.go:21:10:21:24 | secretByteSlice | hashing.go:21:10:21:24 | secretByteSlice | hashing.go:21:10:21:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:21:10:21:24 | secretByteSlice | Sensitive data (secret) | +| hashing.go:22:20:22:31 | secretString | hashing.go:22:20:22:31 | secretString | hashing.go:22:20:22:31 | secretString | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:22:20:22:31 | secretString | Sensitive data (secret) | +| hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:23:10:23:24 | secretByteSlice | Sensitive data (secret) | +| hashing.go:25:17:25:31 | secretByteSlice | hashing.go:25:17:25:31 | secretByteSlice | hashing.go:25:17:25:31 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:25:17:25:31 | secretByteSlice | Sensitive data (secret) | +| hashing.go:26:11:26:25 | secretByteSlice | hashing.go:26:11:26:25 | secretByteSlice | hashing.go:26:11:26:25 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:26:11:26:25 | secretByteSlice | Sensitive data (secret) | +| hashing.go:28:16:28:30 | secretByteSlice | hashing.go:28:16:28:30 | secretByteSlice | hashing.go:28:16:28:30 | secretByteSlice | $@ is used in a hashing algorithm (MD4) that is insecure. | hashing.go:28:16:28:30 | secretByteSlice | Sensitive data (secret) | +| hashing.go:29:22:29:36 | secretByteSlice | hashing.go:29:22:29:36 | secretByteSlice | hashing.go:29:22:29:36 | secretByteSlice | $@ is used in a hashing algorithm (RIPEMD160) that is insecure. | hashing.go:29:22:29:36 | secretByteSlice | Sensitive data (secret) | +| hashing.go:80:16:80:23 | password | hashing.go:80:16:80:23 | password | hashing.go:80:16:80:23 | password | $@ is used in a hashing algorithm (SHA256) that is insecure for password hashing, since it is not a computationally expensive hash function. | hashing.go:80:16:80:23 | password | Sensitive data (password) | +edges +nodes +| hashing.go:20:8:20:22 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:21:10:21:24 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:22:20:22:31 | secretString | semmle.label | secretString | +| hashing.go:23:10:23:24 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:25:17:25:31 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:26:11:26:25 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:28:16:28:30 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:29:22:29:36 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:80:16:80:23 | password | semmle.label | password | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref new file mode 100644 index 00000000000..ec9ae0993a2 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.qlref @@ -0,0 +1,4 @@ +query: Security/CWE-327/WeakSensitiveDataHashing.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-327/go.mod b/go/ql/test/query-tests/Security/CWE-327/go.mod index bf42b84feef..59c69723ef5 100644 --- a/go/ql/test/query-tests/Security/CWE-327/go.mod +++ b/go/ql/test/query-tests/Security/CWE-327/go.mod @@ -1,3 +1,5 @@ module test -go 1.24 +go 1.24.0 + +require golang.org/x/crypto v0.43.0 diff --git a/go/ql/test/query-tests/Security/CWE-327/hashing.go b/go/ql/test/query-tests/Security/CWE-327/hashing.go new file mode 100644 index 00000000000..4943da35384 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/hashing.go @@ -0,0 +1,81 @@ +package main + +//go:generate depstubber -vendor golang.org/x/crypto/md4 "" New +//go:generate depstubber -vendor golang.org/x/crypto/ripemd160 "" New + +import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "crypto/sha3" + "crypto/sha512" + "io" + + "golang.org/x/crypto/md4" + "golang.org/x/crypto/ripemd160" +) + +func WeakHashes() { + h := md5.New() + h.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." + h.Write(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." + io.WriteString(h, secretString) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." + md5.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 23." + + sha1.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from line 25." + sha1.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from line 26." + + md4.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD4. init from line 28." + ripemd160.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="RIPEMD160. init from line 29." + + // Only alert when sensitive data is hashed. + md5.New().Sum(public) // $ CryptographicOperation="MD5. init from line 32." + md5.Sum(public) // $ CryptographicOperation="MD5. init from line 33." + sha1.New().Sum(public) // $ CryptographicOperation="SHA1. init from line 34." + sha1.Sum(public) // $ CryptographicOperation="SHA1. init from line 35." +} + +func StrongHashes() { + sha256.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA224. init from line 39." + sha256.Sum224(secretByteSlice) // $ CryptographicOperation="SHA224. init from line 40." + + sha256.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA256. init from line 42." + sha256.Sum256(secretByteSlice) // $ CryptographicOperation="SHA256. init from line 43." + + sha512.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA512. init from line 45." + sha512.Sum512(secretByteSlice) // $ CryptographicOperation="SHA512. init from line 46." + + sha512.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA384. init from line 48." + sha512.Sum384(secretByteSlice) // $ CryptographicOperation="SHA384. init from line 49." + + sha512.New512_224().Sum(secretByteSlice) // $ CryptographicOperation="SHA512224. init from line 51." + sha512.Sum512_224(secretByteSlice) // $ CryptographicOperation="SHA512224. init from line 52." + + sha512.New512_256().Sum(secretByteSlice) // $ CryptographicOperation="SHA512256. init from line 54." + sha512.Sum512_256(secretByteSlice) // $ CryptographicOperation="SHA512256. init from line 55." + + sha3.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA3224. init from line 57." + sha3.Sum224(secretByteSlice) // $ CryptographicOperation="SHA3224. init from line 58." + + sha3.New256().Sum(secretByteSlice) // $ CryptographicOperation="SHA3256. init from line 60." + sha3.Sum256(secretByteSlice) // $ CryptographicOperation="SHA3256. init from line 61." + + sha3.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA3384. init from line 63." + sha3.Sum384(secretByteSlice) // $ CryptographicOperation="SHA3384. init from line 64." + + sha3.New512().Sum(secretByteSlice) // $ CryptographicOperation="SHA3512. init from line 66." + sha3.Sum512(secretByteSlice) // $ CryptographicOperation="SHA3512. init from line 67." + + sha3.NewSHAKE128().Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from line 69." + sha3.NewCSHAKE128(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from line 70." + sha3.SumSHAKE128(secretByteSlice, 100) // $ CryptographicOperation="SHAKE128. init from line 71." + + sha3.NewSHAKE256().Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from line 73." + sha3.NewCSHAKE256(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from line 74." + sha3.SumSHAKE256(secretByteSlice, 100) // $ CryptographicOperation="SHAKE256. init from line 75." +} + +func PasswordHashing() { + password := []byte("") + sha256.Sum256(password) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from line 80." +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go new file mode 100644 index 00000000000..777cc50c0c1 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/md4/stub.go @@ -0,0 +1,16 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for golang.org/x/crypto/md4, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: golang.org/x/crypto/md4 (exports: ; functions: New) + +// Package md4 is a stub of golang.org/x/crypto/md4, generated by depstubber. +package md4 + +import ( + hash "hash" +) + +func New() hash.Hash { + return nil +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go new file mode 100644 index 00000000000..995d3339d8c --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/golang.org/x/crypto/ripemd160/stub.go @@ -0,0 +1,16 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for golang.org/x/crypto/ripemd160, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: golang.org/x/crypto/ripemd160 (exports: ; functions: New) + +// Package ripemd160 is a stub of golang.org/x/crypto/ripemd160, generated by depstubber. +package ripemd160 + +import ( + hash "hash" +) + +func New() hash.Hash { + return nil +} diff --git a/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt new file mode 100644 index 00000000000..1927762821c --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-327/vendor/modules.txt @@ -0,0 +1,4 @@ +# golang.org/x/crypto v0.43.0 +## explicit +golang.org/x/crypto/md4 +golang.org/x/crypto/ripemd160 From d2033ca1d5b0b7db7871d7153e81cf177ba60b6f Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 21 Oct 2025 16:15:43 +0100 Subject: [PATCH 859/965] Add change note --- .../src/change-notes/2025-10-21-go-weak-crypto-algorithm.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 go/ql/src/change-notes/2025-10-21-go-weak-crypto-algorithm.md diff --git a/go/ql/src/change-notes/2025-10-21-go-weak-crypto-algorithm.md b/go/ql/src/change-notes/2025-10-21-go-weak-crypto-algorithm.md new file mode 100644 index 00000000000..d5f9a08fb7f --- /dev/null +++ b/go/ql/src/change-notes/2025-10-21-go-weak-crypto-algorithm.md @@ -0,0 +1,5 @@ +--- +category: newQuery +--- +* Added a new query, `go/weak-crypto-algorithm`, to detect the use of a broken or weak cryptographic algorithm. A very simple version of this query was originally contributed as an [experimental query by @dilanbhalla](https://github.com/github/codeql-go/pull/284). +* Added a new query, `go/weak-sensitive-data-hashing`, to detect the use of a broken or weak cryptographic hash algorithm on sensitive data. From 2cfafe53cac2e9448e5b9ce7c9ce656b29a38068 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 21 Oct 2025 21:28:19 +0100 Subject: [PATCH 860/965] Fix failing ruby crypto test that lists all algorithms --- ruby/ql/test/library-tests/security/CryptoAlgorithms.expected | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected b/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected index eedddb2df9f..3f1ba8e12c6 100644 --- a/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected +++ b/ruby/ql/test/library-tests/security/CryptoAlgorithms.expected @@ -34,6 +34,8 @@ strongHashingAlgorithms | SHA3256 | | SHA3384 | | SHA3512 | +| SHA512224 | +| SHA512256 | | SHAKE128 | | SHAKE256 | | SM3 | From 970b5d74965e08d7db08530fcb16255f4d5b78af Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 21 Oct 2025 21:59:46 +0100 Subject: [PATCH 861/965] Fix query suite integration tests --- .../integration-tests/query-suite/go-code-scanning.qls.expected | 2 ++ .../query-suite/go-security-and-quality.qls.expected | 2 ++ .../query-suite/go-security-extended.qls.expected | 2 ++ .../integration-tests/query-suite/not_included_in_qls.expected | 1 - 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected index 20fcacbc389..d8d3e0a13e7 100644 --- a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected +++ b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected @@ -18,7 +18,9 @@ ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql diff --git a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected index ee0ec8f42ba..71bcb2b0330 100644 --- a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected @@ -41,7 +41,9 @@ ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql diff --git a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected index 9116f7b7ebf..b0447a6c3eb 100644 --- a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected @@ -19,7 +19,9 @@ ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql ql/go/ql/src/Security/CWE-312/CleartextLogging.ql ql/go/ql/src/Security/CWE-322/InsecureHostKeyCallback.ql ql/go/ql/src/Security/CWE-326/InsufficientKeySize.ql +ql/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.ql ql/go/ql/src/Security/CWE-327/InsecureTLS.ql +ql/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql ql/go/ql/src/Security/CWE-338/InsecureRandomness.ql ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql diff --git a/go/ql/integration-tests/query-suite/not_included_in_qls.expected b/go/ql/integration-tests/query-suite/not_included_in_qls.expected index 3b79e47da44..7b8b86a7a53 100644 --- a/go/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/go/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -14,7 +14,6 @@ ql/go/ql/src/experimental/CWE-203/Timing.ql ql/go/ql/src/experimental/CWE-285/PamAuthBypass.ql ql/go/ql/src/experimental/CWE-287/ImproperLdapAuth.ql ql/go/ql/src/experimental/CWE-321-V2/HardCodedKeys.ql -ql/go/ql/src/experimental/CWE-327/WeakCryptoAlgorithm.ql ql/go/ql/src/experimental/CWE-369/DivideByZero.ql ql/go/ql/src/experimental/CWE-400/DatabaseCallInLoop.ql ql/go/ql/src/experimental/CWE-522-DecompressionBombs/DecompressionBombs.ql From 69ecdcb4cd21e74015f9d9fef69e4a44cc30efc6 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 31 Oct 2025 16:06:24 +0000 Subject: [PATCH 862/965] Fix capitalization of class names --- .../semmle/go/frameworks/CryptoLibraries.qll | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll index 0c56d8c7e6a..6fe299c39ed 100644 --- a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -109,9 +109,9 @@ private module Crypto { } private module Rc4 { - private class CipherXORKeyStream extends CryptographicOperation::Range instanceof DataFlow::CallNode + private class CipherXorKeyStream extends CryptographicOperation::Range instanceof DataFlow::CallNode { - CipherXORKeyStream() { + CipherXorKeyStream() { this.(DataFlow::MethodCallNode) .getTarget() .hasQualifiedName("crypto/rc4", "Cipher", "XORKeyStream") @@ -312,26 +312,26 @@ private module Crypto { } private module Cipher { - private class NewCBCEncrypter extends StdLibNewEncrypter { - NewCBCEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCBCEncrypter") } + private class NewCbcEncrypter extends StdLibNewEncrypter { + NewCbcEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCBCEncrypter") } override BlockMode getMode() { result = "CBC" } } - private class NewCFBEncrypter extends StdLibNewEncrypter { - NewCFBEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCFBEncrypter") } + private class NewCfbEncrypter extends StdLibNewEncrypter { + NewCfbEncrypter() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCFBEncrypter") } override BlockMode getMode() { result = "CFB" } } - private class NewCTR extends StdLibNewEncrypter { - NewCTR() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCTR") } + private class NewCtr extends StdLibNewEncrypter { + NewCtr() { this.getTarget().hasQualifiedName("crypto/cipher", "NewCTR") } override BlockMode getMode() { result = "CTR" } } - private class NewGCM extends StdLibNewEncrypter { - NewGCM() { + private class NewGcm extends StdLibNewEncrypter { + NewGcm() { exists(string name | this.getTarget().hasQualifiedName("crypto/cipher", name) | name = ["NewGCM", "NewGCMWithNonceSize", "NewGCMWithRandomNonce", "NewGCMWithTagSize"] ) @@ -340,8 +340,8 @@ private module Crypto { override BlockMode getMode() { result = "GCM" } } - private class NewOFB extends StdLibNewEncrypter { - NewOFB() { this.getTarget().hasQualifiedName("crypto/cipher", "NewOFB") } + private class NewOfb extends StdLibNewEncrypter { + NewOfb() { this.getTarget().hasQualifiedName("crypto/cipher", "NewOFB") } override BlockMode getMode() { result = "OFB" } } @@ -373,8 +373,8 @@ private module Crypto { } } - private class StreamXORKeyStream extends EncryptionMethodCall { - StreamXORKeyStream() { + private class StreamXorKeyStream extends EncryptionMethodCall { + StreamXorKeyStream() { this.(DataFlow::MethodCallNode) .getTarget() .hasQualifiedName("crypto/cipher", "Stream", "XORKeyStream") and From 8d7b2757bfecdf7e9b8d737085bee165e97156e5 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Mon, 3 Nov 2025 13:23:11 +0000 Subject: [PATCH 863/965] Add query help examples --- .../CWE-327/BrokenCryptoAlgorithm.qhelp | 8 +-- .../CWE-327/WeakSensitiveDataHashing.qhelp | 23 +++----- go/ql/src/Security/CWE-327/examples/Crypto.go | 57 ++++--------------- .../CWE-327/examples/WeakPasswordHashing.go | 21 +++++++ .../CWE-327/examples/WeakSecretHashing.go | 19 +++++++ 5 files changed, 64 insertions(+), 64 deletions(-) create mode 100644 go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go create mode 100644 go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go diff --git a/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp index 0283e142fba..a65af78c0ae 100644 --- a/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp +++ b/go/ql/src/Security/CWE-327/BrokenCryptoAlgorithm.qhelp @@ -28,10 +28,10 @@

    - The following code uses the different packages to encrypt/hash - some secret data. The first few examples uses DES, MD5, RC4, and SHA1, - which are older algorithms that are now considered weak. The following - examples use AES and SHA256, which are stronger, more modern algorithms. + The following code uses the different packages to encrypt + some secret data. The first example uses DES, + which is an older algorithm that is now considered weak. The following + example uses AES, which is a stronger, more modern algorithm.

    diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp index 422cbb83514..1fa64e4adaf 100644 --- a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.qhelp @@ -65,35 +65,28 @@

    The following example shows two functions for checking whether the hash - of a certificate matches a known value -- to prevent tampering. + of a secret matches a known value. - The first function uses MD5 that is known to be vulnerable to collision attacks. + The first function uses SHA-1 that is known to be vulnerable to collision attacks. The second function uses SHA-256 that is a strong cryptographic hashing function.

    - +

    The following example shows two functions for hashing passwords. - The first function uses SHA-256 to hash passwords. Although SHA-256 is a - strong cryptographic hash function, it is not suitable for password + The first example uses SHA-256 to hash passwords. Although + SHA-256 is a strong cryptographic hash function, it is not suitable for password hashing since it is not computationally expensive. + + The second function uses PBKDF2, which is a strong password hashing algorithm.

    - - - -

    - The second function uses Argon2 (through the argon2 - gem), which is a strong password hashing algorithm (and - includes a per-password salt by default). -

    - - +
    diff --git a/go/ql/src/Security/CWE-327/examples/Crypto.go b/go/ql/src/Security/CWE-327/examples/Crypto.go index bc2b2fdeba4..b3f71f0772b 100644 --- a/go/ql/src/Security/CWE-327/examples/Crypto.go +++ b/go/ql/src/Security/CWE-327/examples/Crypto.go @@ -3,51 +3,18 @@ package main import ( "crypto/aes" "crypto/des" - "crypto/md5" - "crypto/rc4" - "crypto/sha1" - "crypto/sha256" ) -func main() { - public := []byte("hello") - - password := []byte("123456") - buf := password // testing dataflow by passing into different variable - - // BAD, des is a weak crypto algorithm and password is sensitive data - des.NewTripleDESCipher(buf) - - // BAD, md5 is a weak crypto algorithm and password is sensitive data - md5.Sum(buf) - - // BAD, rc4 is a weak crypto algorithm and password is sensitive data - rc4.NewCipher(buf) - - // BAD, sha1 is a weak crypto algorithm and password is sensitive data - sha1.Sum(buf) - - // GOOD, password is sensitive data but aes is a strong crypto algorithm - aes.NewCipher(buf) - - // GOOD, password is sensitive data but sha256 is a strong crypto algorithm - sha256.Sum256(buf) - - // GOOD, des is a weak crypto algorithm but public is not sensitive data - des.NewTripleDESCipher(public) - - // GOOD, md5 is a weak crypto algorithm but public is not sensitive data - md5.Sum(public) - - // GOOD, rc4 is a weak crypto algorithm but public is not sensitive data - rc4.NewCipher(public) - - // GOOD, sha1 is a weak crypto algorithm but public is not sensitive data - sha1.Sum(public) - - // GOOD, aes is a strong crypto algorithm and public is not sensitive data - aes.NewCipher(public) - - // GOOD, sha256 is a strong crypto algorithm and public is not sensitive data - sha256.Sum256(public) +func EncryptMessageWeak(key []byte, message []byte) (dst []byte) { + // BAD, DES is a weak crypto algorithm + block, _ := des.NewCipher(key) + block.Encrypt(dst, message) + return +} + +func EncryptMessageStrong(key []byte, message []byte) (dst []byte) { + // GOOD, AES is a weak crypto algorithm + block, _ := aes.NewCipher(key) + block.Encrypt(dst, message) + return } diff --git a/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go b/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go new file mode 100644 index 00000000000..671edede7d3 --- /dev/null +++ b/go/ql/src/Security/CWE-327/examples/WeakPasswordHashing.go @@ -0,0 +1,21 @@ +package main + +import ( + "crypto/pbkdf2" + "crypto/rand" + "crypto/sha256" + "crypto/sha512" +) + +func GetPasswordHashBad(password string) [32]byte { + // BAD, SHA256 is a strong hashing algorithm but it is not computationally expensive + return sha256.Sum256([]byte(password)) +} + +func GetPasswordHashGood(password string) []byte { + // GOOD, PBKDF2 is a strong hashing algorithm and it is computationally expensive + salt := make([]byte, 16) + rand.Read(salt) + key, _ := pbkdf2.Key(sha512.New, password, salt, 4096, 32) + return key +} diff --git a/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go b/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go new file mode 100644 index 00000000000..fd65b802548 --- /dev/null +++ b/go/ql/src/Security/CWE-327/examples/WeakSecretHashing.go @@ -0,0 +1,19 @@ +package main + +import ( + "crypto/sha1" + "crypto/sha256" + "slices" +) + +func SecretMatchesKnownHashBad(secret []byte, known_hash []byte) bool { + // BAD, SHA1 is a weak crypto algorithm and secret is sensitive data + h := sha1.New() + return slices.Equal(h.Sum(secret), known_hash) +} + +func SecretMatchesKnownHashGood(secret []byte, known_hash []byte) bool { + // GOOD, SHA256 is a strong hashing algorithm + h := sha256.New() + return slices.Equal(h.Sum(secret), known_hash) +} From 7d7af193dc9331ed1875866114da3a0c6c7fadb5 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Mon, 3 Nov 2025 13:23:43 +0000 Subject: [PATCH 864/965] Fix small mistake in Ruby query help --- .../src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp b/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp index 422cbb83514..33d0c845a66 100644 --- a/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp +++ b/ruby/ql/src/queries/security/cwe-327/WeakSensitiveDataHashing.qhelp @@ -67,7 +67,7 @@ The following example shows two functions for checking whether the hash of a certificate matches a known value -- to prevent tampering. - The first function uses MD5 that is known to be vulnerable to collision attacks. + The first function uses SHA-1 that is known to be vulnerable to collision attacks. The second function uses SHA-256 that is a strong cryptographic hashing function.

    From adbc1efe59d3df5adb018897311fd839c8529e84 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Mon, 3 Nov 2025 17:20:19 +0000 Subject: [PATCH 865/965] Fix diff-informed predicates --- go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll | 4 ---- go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll index 6fe299c39ed..154ac82e7a2 100644 --- a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -21,8 +21,6 @@ private module HashConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof HashAlgorithmInit } predicate isSink(DataFlow::Node sink) { any() } - - predicate observeDiffInformedIncrementalMode() { any() } } /** Tracks the flow of hash algorithms. */ @@ -50,8 +48,6 @@ private module EncryptionConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { any(BlockModeInit nbcm).step(node1, node2) } - - predicate observeDiffInformedIncrementalMode() { any() } } /** diff --git a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql index bd46bd50a83..0a38d9729f0 100644 --- a/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql +++ b/go/ql/src/Security/CWE-327/WeakSensitiveDataHashing.ql @@ -39,6 +39,8 @@ module NormalHashFunctionFlow { // make sinks barriers so that we only report the closest instance isSink(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } import TaintTracking::Global @@ -70,6 +72,8 @@ module ComputationallyExpensiveHashFunctionFlow { // make sinks barriers so that we only report the closest instance isSink(node) } + + predicate observeDiffInformedIncrementalMode() { any() } } import TaintTracking::Global From 349e8ca5897e56c2d6cfab61cb2b4dcf4f5a837b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 4 Nov 2025 10:33:04 +0000 Subject: [PATCH 866/965] Remove unnecessary import --- .../go/security/WeakSensitiveDataHashingCustomizations.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll index f03b93eb7c2..4893193ef4f 100644 --- a/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll +++ b/go/ql/lib/semmle/go/security/WeakSensitiveDataHashingCustomizations.qll @@ -9,7 +9,6 @@ */ import go -import semmle.go.dataflow.internal.DataFlowPrivate private import semmle.go.security.SensitiveActions /** From f562b3d26ed22631e37f31d536890d11005ef6cb Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 18 Nov 2025 22:51:26 +0000 Subject: [PATCH 867/965] Make line differences in test comments relative --- .../Security/CWE-327/CryptoAlgorithm.ql | 22 ++---- .../Security/CWE-327/encryption.go | 74 +++++++++--------- .../query-tests/Security/CWE-327/hashing.go | 78 +++++++++---------- 3 files changed, 83 insertions(+), 91 deletions(-) diff --git a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql index ab096f9df2a..e3b7147be3a 100644 --- a/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql +++ b/go/ql/test/query-tests/Security/CWE-327/CryptoAlgorithm.ql @@ -19,23 +19,15 @@ module Test implements TestSig { exists(int c | c = count(ho.getInitialization()) | c = 0 and initialization = "" or - c = 1 and + c > 0 and initialization = - " init from line " + - strictconcat(DataFlow::Node init | - init = ho.getInitialization() + " init from " + + strictconcat(DataFlow::Node init, int n | + init = ho.getInitialization() and + n = ho.getStartLine() - init.getStartLine() | - init.getStartLine().toString(), "," - ) + "." - or - c > 1 and - initialization = - " init from lines " + - strictconcat(DataFlow::Node init | - init = ho.getInitialization() - | - init.getStartLine().toString(), "," - ) + "." + n.toString(), "," + ) + " lines above." ) and ho.getLocation() = location and element = ho.toString() and diff --git a/go/ql/test/query-tests/Security/CWE-327/encryption.go b/go/ql/test/query-tests/Security/CWE-327/encryption.go index 2a1bd53440b..e6cc712474f 100644 --- a/go/ql/test/query-tests/Security/CWE-327/encryption.go +++ b/go/ql/test/query-tests/Security/CWE-327/encryption.go @@ -27,141 +27,141 @@ func BlockCipherDes() { // BAD, des is a weak crypto algorithm block, _ := des.NewCipher(nil) - block.Encrypt(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + block.Encrypt(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 2 lines above." block.Decrypt(dst, secretByteSlice) gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 6 lines above." gcm1.Open(nil, nil, secretByteSlice, nil) gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 10 lines above." gcm2.Open(nil, nil, secretByteSlice, nil) gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 14 lines above." gcm3.Open(nil, nil, secretByteSlice, nil) gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from line 28." + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. init from 18 lines above." gcm4.Open(nil, nil, secretByteSlice, nil) cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CBC. init from lines 28,49." + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CBC. init from 1,22 lines above." cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + ctrStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 1,26 lines above." - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 28,3 lines above." io.Copy(os.Stdout, ctrStreamReader) - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." - io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from lines 28,53." + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CTR. init from 32,7 lines above." // deprecated cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CFB. init from lines 28,64." + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: CFB. init from 1,37 lines above." cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: OFB. init from lines 28,68." + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="DES. blockMode: OFB. init from 1,41 lines above." } func BlockCipherTripleDes() { // BAD, triple des is a weak crypto algorithm and secretByteSlice is sensitive data block, _ := des.NewTripleDESCipher(nil) - block.Encrypt(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + block.Encrypt(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 2 lines above." block.Decrypt(dst, getUserID()) gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm1.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 6 lines above." gcm1.Open(nil, nil, getUserID(), nil) gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm2.Seal(nil, nil, getUserID(), nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 10 lines above." gcm2.Open(nil, nil, getUserID(), nil) gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 14 lines above." gcm3.Open(nil, nil, secretByteSlice, nil) gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from line 74." + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. init from 18 lines above." gcm4.Open(nil, nil, secretByteSlice, nil) cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from lines 74,95." + cbcEncrypter.CryptBlocks(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CBC. init from 1,22 lines above." cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, getUserID()) ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + ctrStream.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 1,26 lines above." - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getUserID())} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(getUserID())} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 28,3 lines above." io.Copy(os.Stdout, ctrStreamReader) - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." - io.Copy(ctrStreamWriter, bytes.NewReader(getUserID())) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from lines 74,99." + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(getUserID())) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CTR. init from 32,7 lines above." // deprecated cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from lines 110,74." + cfbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: CFB. init from 1,37 lines above." cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from lines 114,74." + ofbStream.XORKeyStream(dst, secretByteSlice) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="TRIPLEDES. blockMode: OFB. init from 1,41 lines above." } func BlockCipherAes() { // GOOD, aes is a strong crypto algorithm block, _ := aes.NewCipher(nil) - block.Encrypt(dst, secretByteSlice) // $ CryptographicOperation="AES. init from line 120." + block.Encrypt(dst, secretByteSlice) // $ CryptographicOperation="AES. init from 2 lines above." block.Decrypt(dst, secretByteSlice) gcm1, _ := cipher.NewGCM(block) - gcm1.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm1.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 6 lines above." gcm1.Open(nil, nil, secretByteSlice, nil) gcm2, _ := cipher.NewGCMWithNonceSize(block, 12) - gcm2.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm2.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 10 lines above." gcm2.Open(nil, nil, secretByteSlice, nil) gcm3, _ := cipher.NewGCMWithRandomNonce(block) - gcm3.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm3.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 14 lines above." gcm3.Open(nil, nil, secretByteSlice, nil) gcm4, _ := cipher.NewGCMWithTagSize(block, 12) - gcm4.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from line 120." + gcm4.Seal(nil, nil, secretByteSlice, nil) // $ CryptographicOperation="AES. init from 18 lines above." gcm4.Open(nil, nil, secretByteSlice, nil) cbcEncrypter := cipher.NewCBCEncrypter(block, nil) - cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CBC. init from lines 120,141." + cbcEncrypter.CryptBlocks(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CBC. init from 1,22 lines above." cipher.NewCBCDecrypter(block, nil).CryptBlocks(dst, secretByteSlice) ctrStream := cipher.NewCTR(block, nil) - ctrStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + ctrStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CTR. init from 1,26 lines above." - ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + ctrStreamReader := &cipher.StreamReader{S: ctrStream, R: bytes.NewReader(secretByteSlice)} // $ CryptographicOperation="AES. blockMode: CTR. init from 28,3 lines above." io.Copy(os.Stdout, ctrStreamReader) - ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." - io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ CryptographicOperation="AES. blockMode: CTR. init from lines 120,145." + ctrStreamWriter := &cipher.StreamWriter{S: ctrStream, W: os.Stdout} // $ CryptographicOperation="AES. blockMode: CTR. init from 31,6 lines above." + io.Copy(ctrStreamWriter, bytes.NewReader(secretByteSlice)) // $ CryptographicOperation="AES. blockMode: CTR. init from 32,7 lines above." // deprecated cfbStream := cipher.NewCFBEncrypter(block, nil) - cfbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CFB. init from lines 120,156." + cfbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: CFB. init from 1,37 lines above." cipher.NewCFBDecrypter(block, nil).XORKeyStream(dst, secretByteSlice) ofbStream := cipher.NewOFB(block, nil) - ofbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: OFB. init from lines 120,160." + ofbStream.XORKeyStream(dst, secretByteSlice) // $ CryptographicOperation="AES. blockMode: OFB. init from 1,41 lines above." } func CipherRc4() { c, _ := rc4.NewCipher(nil) - c.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="RC4. init from line 166." + c.XORKeyStream(dst, getUserID()) // $ Alert[go/weak-cryptographic-algorithm] CryptographicOperation="RC4. init from 0 lines above." } diff --git a/go/ql/test/query-tests/Security/CWE-327/hashing.go b/go/ql/test/query-tests/Security/CWE-327/hashing.go index 4943da35384..0b0cbb56e74 100644 --- a/go/ql/test/query-tests/Security/CWE-327/hashing.go +++ b/go/ql/test/query-tests/Security/CWE-327/hashing.go @@ -17,65 +17,65 @@ import ( func WeakHashes() { h := md5.New() - h.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." - h.Write(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." - io.WriteString(h, secretString) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 19." - md5.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from line 23." + h.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 1 lines above." + h.Write(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 2 lines above." + io.WriteString(h, secretString) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 3 lines above." + md5.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD5. init from 0 lines above." - sha1.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from line 25." - sha1.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from line 26." + sha1.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from 0 lines above." + sha1.Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA1. init from 0 lines above." - md4.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD4. init from line 28." - ripemd160.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="RIPEMD160. init from line 29." + md4.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="MD4. init from 0 lines above." + ripemd160.New().Sum(secretByteSlice) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="RIPEMD160. init from 0 lines above." // Only alert when sensitive data is hashed. - md5.New().Sum(public) // $ CryptographicOperation="MD5. init from line 32." - md5.Sum(public) // $ CryptographicOperation="MD5. init from line 33." - sha1.New().Sum(public) // $ CryptographicOperation="SHA1. init from line 34." - sha1.Sum(public) // $ CryptographicOperation="SHA1. init from line 35." + md5.New().Sum(public) // $ CryptographicOperation="MD5. init from 0 lines above." + md5.Sum(public) // $ CryptographicOperation="MD5. init from 0 lines above." + sha1.New().Sum(public) // $ CryptographicOperation="SHA1. init from 0 lines above." + sha1.Sum(public) // $ CryptographicOperation="SHA1. init from 0 lines above." } func StrongHashes() { - sha256.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA224. init from line 39." - sha256.Sum224(secretByteSlice) // $ CryptographicOperation="SHA224. init from line 40." + sha256.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA224. init from 0 lines above." + sha256.Sum224(secretByteSlice) // $ CryptographicOperation="SHA224. init from 0 lines above." - sha256.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA256. init from line 42." - sha256.Sum256(secretByteSlice) // $ CryptographicOperation="SHA256. init from line 43." + sha256.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA256. init from 0 lines above." + sha256.Sum256(secretByteSlice) // $ CryptographicOperation="SHA256. init from 0 lines above." - sha512.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA512. init from line 45." - sha512.Sum512(secretByteSlice) // $ CryptographicOperation="SHA512. init from line 46." + sha512.New().Sum(secretByteSlice) // $ CryptographicOperation="SHA512. init from 0 lines above." + sha512.Sum512(secretByteSlice) // $ CryptographicOperation="SHA512. init from 0 lines above." - sha512.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA384. init from line 48." - sha512.Sum384(secretByteSlice) // $ CryptographicOperation="SHA384. init from line 49." + sha512.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA384. init from 0 lines above." + sha512.Sum384(secretByteSlice) // $ CryptographicOperation="SHA384. init from 0 lines above." - sha512.New512_224().Sum(secretByteSlice) // $ CryptographicOperation="SHA512224. init from line 51." - sha512.Sum512_224(secretByteSlice) // $ CryptographicOperation="SHA512224. init from line 52." + sha512.New512_224().Sum(secretByteSlice) // $ CryptographicOperation="SHA512224. init from 0 lines above." + sha512.Sum512_224(secretByteSlice) // $ CryptographicOperation="SHA512224. init from 0 lines above." - sha512.New512_256().Sum(secretByteSlice) // $ CryptographicOperation="SHA512256. init from line 54." - sha512.Sum512_256(secretByteSlice) // $ CryptographicOperation="SHA512256. init from line 55." + sha512.New512_256().Sum(secretByteSlice) // $ CryptographicOperation="SHA512256. init from 0 lines above." + sha512.Sum512_256(secretByteSlice) // $ CryptographicOperation="SHA512256. init from 0 lines above." - sha3.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA3224. init from line 57." - sha3.Sum224(secretByteSlice) // $ CryptographicOperation="SHA3224. init from line 58." + sha3.New224().Sum(secretByteSlice) // $ CryptographicOperation="SHA3224. init from 0 lines above." + sha3.Sum224(secretByteSlice) // $ CryptographicOperation="SHA3224. init from 0 lines above." - sha3.New256().Sum(secretByteSlice) // $ CryptographicOperation="SHA3256. init from line 60." - sha3.Sum256(secretByteSlice) // $ CryptographicOperation="SHA3256. init from line 61." + sha3.New256().Sum(secretByteSlice) // $ CryptographicOperation="SHA3256. init from 0 lines above." + sha3.Sum256(secretByteSlice) // $ CryptographicOperation="SHA3256. init from 0 lines above." - sha3.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA3384. init from line 63." - sha3.Sum384(secretByteSlice) // $ CryptographicOperation="SHA3384. init from line 64." + sha3.New384().Sum(secretByteSlice) // $ CryptographicOperation="SHA3384. init from 0 lines above." + sha3.Sum384(secretByteSlice) // $ CryptographicOperation="SHA3384. init from 0 lines above." - sha3.New512().Sum(secretByteSlice) // $ CryptographicOperation="SHA3512. init from line 66." - sha3.Sum512(secretByteSlice) // $ CryptographicOperation="SHA3512. init from line 67." + sha3.New512().Sum(secretByteSlice) // $ CryptographicOperation="SHA3512. init from 0 lines above." + sha3.Sum512(secretByteSlice) // $ CryptographicOperation="SHA3512. init from 0 lines above." - sha3.NewSHAKE128().Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from line 69." - sha3.NewCSHAKE128(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from line 70." - sha3.SumSHAKE128(secretByteSlice, 100) // $ CryptographicOperation="SHAKE128. init from line 71." + sha3.NewSHAKE128().Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from 0 lines above." + sha3.NewCSHAKE128(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE128. init from 0 lines above." + sha3.SumSHAKE128(secretByteSlice, 100) // $ CryptographicOperation="SHAKE128. init from 0 lines above." - sha3.NewSHAKE256().Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from line 73." - sha3.NewCSHAKE256(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from line 74." - sha3.SumSHAKE256(secretByteSlice, 100) // $ CryptographicOperation="SHAKE256. init from line 75." + sha3.NewSHAKE256().Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from 0 lines above." + sha3.NewCSHAKE256(nil, nil).Write(secretByteSlice) // $ CryptographicOperation="SHAKE256. init from 0 lines above." + sha3.SumSHAKE256(secretByteSlice, 100) // $ CryptographicOperation="SHAKE256. init from 0 lines above." } func PasswordHashing() { password := []byte("") - sha256.Sum256(password) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from line 80." + sha256.Sum256(password) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from 0 lines above." } From a70d74220f5a3d77adb7394d25ec832ef16f0d9f Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 18 Nov 2025 22:56:49 +0000 Subject: [PATCH 868/965] Add test for good password hashing --- .../CWE-327/WeakSensitiveDataHashing.expected | 34 ++++++++++--------- .../query-tests/Security/CWE-327/hashing.go | 16 +++++++-- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected index 301658e22cb..e2ee4bdd7a7 100644 --- a/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected +++ b/go/ql/test/query-tests/Security/CWE-327/WeakSensitiveDataHashing.expected @@ -1,22 +1,24 @@ #select -| hashing.go:20:8:20:22 | secretByteSlice | hashing.go:20:8:20:22 | secretByteSlice | hashing.go:20:8:20:22 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:20:8:20:22 | secretByteSlice | Sensitive data (secret) | -| hashing.go:21:10:21:24 | secretByteSlice | hashing.go:21:10:21:24 | secretByteSlice | hashing.go:21:10:21:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:21:10:21:24 | secretByteSlice | Sensitive data (secret) | -| hashing.go:22:20:22:31 | secretString | hashing.go:22:20:22:31 | secretString | hashing.go:22:20:22:31 | secretString | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:22:20:22:31 | secretString | Sensitive data (secret) | +| hashing.go:22:8:22:22 | secretByteSlice | hashing.go:22:8:22:22 | secretByteSlice | hashing.go:22:8:22:22 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:22:8:22:22 | secretByteSlice | Sensitive data (secret) | | hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | hashing.go:23:10:23:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:23:10:23:24 | secretByteSlice | Sensitive data (secret) | -| hashing.go:25:17:25:31 | secretByteSlice | hashing.go:25:17:25:31 | secretByteSlice | hashing.go:25:17:25:31 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:25:17:25:31 | secretByteSlice | Sensitive data (secret) | -| hashing.go:26:11:26:25 | secretByteSlice | hashing.go:26:11:26:25 | secretByteSlice | hashing.go:26:11:26:25 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:26:11:26:25 | secretByteSlice | Sensitive data (secret) | -| hashing.go:28:16:28:30 | secretByteSlice | hashing.go:28:16:28:30 | secretByteSlice | hashing.go:28:16:28:30 | secretByteSlice | $@ is used in a hashing algorithm (MD4) that is insecure. | hashing.go:28:16:28:30 | secretByteSlice | Sensitive data (secret) | -| hashing.go:29:22:29:36 | secretByteSlice | hashing.go:29:22:29:36 | secretByteSlice | hashing.go:29:22:29:36 | secretByteSlice | $@ is used in a hashing algorithm (RIPEMD160) that is insecure. | hashing.go:29:22:29:36 | secretByteSlice | Sensitive data (secret) | -| hashing.go:80:16:80:23 | password | hashing.go:80:16:80:23 | password | hashing.go:80:16:80:23 | password | $@ is used in a hashing algorithm (SHA256) that is insecure for password hashing, since it is not a computationally expensive hash function. | hashing.go:80:16:80:23 | password | Sensitive data (password) | +| hashing.go:24:20:24:31 | secretString | hashing.go:24:20:24:31 | secretString | hashing.go:24:20:24:31 | secretString | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:24:20:24:31 | secretString | Sensitive data (secret) | +| hashing.go:25:10:25:24 | secretByteSlice | hashing.go:25:10:25:24 | secretByteSlice | hashing.go:25:10:25:24 | secretByteSlice | $@ is used in a hashing algorithm (MD5) that is insecure. | hashing.go:25:10:25:24 | secretByteSlice | Sensitive data (secret) | +| hashing.go:27:17:27:31 | secretByteSlice | hashing.go:27:17:27:31 | secretByteSlice | hashing.go:27:17:27:31 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:27:17:27:31 | secretByteSlice | Sensitive data (secret) | +| hashing.go:28:11:28:25 | secretByteSlice | hashing.go:28:11:28:25 | secretByteSlice | hashing.go:28:11:28:25 | secretByteSlice | $@ is used in a hashing algorithm (SHA1) that is insecure. | hashing.go:28:11:28:25 | secretByteSlice | Sensitive data (secret) | +| hashing.go:30:16:30:30 | secretByteSlice | hashing.go:30:16:30:30 | secretByteSlice | hashing.go:30:16:30:30 | secretByteSlice | $@ is used in a hashing algorithm (MD4) that is insecure. | hashing.go:30:16:30:30 | secretByteSlice | Sensitive data (secret) | +| hashing.go:31:22:31:36 | secretByteSlice | hashing.go:31:22:31:36 | secretByteSlice | hashing.go:31:22:31:36 | secretByteSlice | $@ is used in a hashing algorithm (RIPEMD160) that is insecure. | hashing.go:31:22:31:36 | secretByteSlice | Sensitive data (secret) | +| hashing.go:82:23:82:38 | type conversion | hashing.go:82:30:82:37 | password | hashing.go:82:23:82:38 | type conversion | $@ is used in a hashing algorithm (SHA256) that is insecure for password hashing, since it is not a computationally expensive hash function. | hashing.go:82:30:82:37 | password | Sensitive data (password) | edges +| hashing.go:82:30:82:37 | password | hashing.go:82:23:82:38 | type conversion | provenance | | nodes -| hashing.go:20:8:20:22 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:21:10:21:24 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:22:20:22:31 | secretString | semmle.label | secretString | +| hashing.go:22:8:22:22 | secretByteSlice | semmle.label | secretByteSlice | | hashing.go:23:10:23:24 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:25:17:25:31 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:26:11:26:25 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:28:16:28:30 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:29:22:29:36 | secretByteSlice | semmle.label | secretByteSlice | -| hashing.go:80:16:80:23 | password | semmle.label | password | +| hashing.go:24:20:24:31 | secretString | semmle.label | secretString | +| hashing.go:25:10:25:24 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:27:17:27:31 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:28:11:28:25 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:30:16:30:30 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:31:22:31:36 | secretByteSlice | semmle.label | secretByteSlice | +| hashing.go:82:23:82:38 | type conversion | semmle.label | type conversion | +| hashing.go:82:30:82:37 | password | semmle.label | password | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-327/hashing.go b/go/ql/test/query-tests/Security/CWE-327/hashing.go index 0b0cbb56e74..002e94568a2 100644 --- a/go/ql/test/query-tests/Security/CWE-327/hashing.go +++ b/go/ql/test/query-tests/Security/CWE-327/hashing.go @@ -5,6 +5,8 @@ package main import ( "crypto/md5" + "crypto/pbkdf2" + "crypto/rand" "crypto/sha1" "crypto/sha256" "crypto/sha3" @@ -75,7 +77,15 @@ func StrongHashes() { sha3.SumSHAKE256(secretByteSlice, 100) // $ CryptographicOperation="SHAKE256. init from 0 lines above." } -func PasswordHashing() { - password := []byte("") - sha256.Sum256(password) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from 0 lines above." +func GetPasswordHashBad(password string) [32]byte { + // BAD, SHA256 is a strong hashing algorithm but it is not computationally expensive + return sha256.Sum256([]byte(password)) // $ Alert[go/weak-sensitive-data-hashing] CryptographicOperation="SHA256. init from 0 lines above." +} + +func GetPasswordHashGood(password string) []byte { + // GOOD, PBKDF2 is a strong hashing algorithm and it is computationally expensive + salt := make([]byte, 16) + rand.Read(salt) + key, _ := pbkdf2.Key(sha512.New, password, salt, 4096, 32) + return key } From 6c4def13b43aba1709727254eeedcd9344fca3ca Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 19 Nov 2025 17:23:39 +0000 Subject: [PATCH 869/965] C++: Add change note. --- cpp/ql/lib/change-notes/2025-11-19-content.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2025-11-19-content.md diff --git a/cpp/ql/lib/change-notes/2025-11-19-content.md b/cpp/ql/lib/change-notes/2025-11-19-content.md new file mode 100644 index 00000000000..e16bfc903bf --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-11-19-content.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`. \ No newline at end of file From 42f0ce74cabbb34d2f523dd82804753d633c6603 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 14 Nov 2025 17:34:12 +0000 Subject: [PATCH 870/965] C++: Enable overlay compilation --- cpp/ql/lib/qlpack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index febb297cb8d..5c2083a8613 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -21,3 +21,4 @@ dataExtensions: - ext/deallocation/*.model.yml - ext/allocation/*.model.yml warnOnImplicitThis: true +compileForOverlayEval: true From 489fff9572f480fc43ab5cbbf2130a301e4e62fd Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 19 Nov 2025 11:55:22 +0100 Subject: [PATCH 871/965] Rust: Base `DataFlow::Node` on AST instead of CFG --- .../snippets/simple_constant_password.ql | 4 +- .../examples/snippets/simple_sql_injection.ql | 2 +- rust/ql/lib/codeql/rust/Concepts.qll | 13 +- rust/ql/lib/codeql/rust/dataflow/DataFlow.qll | 4 +- rust/ql/lib/codeql/rust/dataflow/Ssa.qll | 35 ++- .../codeql/rust/dataflow/internal/Content.qll | 9 +- .../dataflow/internal/DataFlowConsistency.qll | 11 - .../rust/dataflow/internal/DataFlowImpl.qll | 241 +++++++++--------- .../dataflow/internal/FlowSummaryImpl.qll | 18 +- .../codeql/rust/dataflow/internal/Node.qll | 154 +++++------ .../codeql/rust/dataflow/internal/SsaImpl.qll | 43 ++-- .../dataflow/internal/TaintTrackingImpl.qll | 23 +- .../rust/elements/AssignmentOperation.qll | 5 + .../rust/elements/internal/AstNodeImpl.qll | 3 + .../rust/elements/internal/BlockExprImpl.qll | 8 +- .../rust/elements/internal/ParenExprImpl.qll | 7 +- rust/ql/lib/codeql/rust/frameworks/Poem.qll | 2 +- .../rust/frameworks/rustcrypto/RustCrypto.qll | 2 +- .../codeql/rust/frameworks/stdlib/Stdlib.qll | 10 +- .../AccessAfterLifetimeExtensions.qll | 16 +- .../AccessInvalidPointerExtensions.qll | 2 +- rust/ql/lib/codeql/rust/security/Barriers.qll | 4 +- .../HardcodedCryptographicValueExtensions.qll | 8 +- .../security/InsecureCookieExtensions.qll | 6 +- .../codeql/rust/security/SensitiveData.qll | 5 +- .../rust/security/TaintedPathExtensions.qll | 20 +- .../UncontrolledAllocationSizeExtensions.qll | 37 ++- .../rust/security/UseOfHttpExtensions.qll | 2 +- .../WeakSensitiveDataHashingExtensions.qll | 2 +- .../regex/RegexInjectionExtensions.qll | 6 +- rust/ql/lib/utils/test/InlineFlowTest.qll | 8 +- .../security/CWE-312/CleartextLogging.ql | 2 +- .../CWE-312/CleartextStorageDatabase.ql | 2 +- .../security/CWE-825/AccessAfterLifetime.ql | 14 +- .../src/queries/unusedentities/UnusedValue.ql | 2 +- .../modelgenerator/internal/CaptureModels.qll | 2 +- .../dataflow/barrier/inline-flow.expected | 4 +- .../dataflow/local/DataFlowStep.expected | 5 + .../dataflow/local/inline-flow.expected | 16 +- .../dataflow/sources/env/InlineFlow.ql | 2 +- .../sensitivedata/SensitiveData.ql | 2 +- rust/ql/test/library-tests/variables/Ssa.ql | 8 +- 42 files changed, 403 insertions(+), 366 deletions(-) diff --git a/rust/ql/examples/snippets/simple_constant_password.ql b/rust/ql/examples/snippets/simple_constant_password.ql index 1f0e0a8e101..b0902235a96 100644 --- a/rust/ql/examples/snippets/simple_constant_password.ql +++ b/rust/ql/examples/snippets/simple_constant_password.ql @@ -25,7 +25,7 @@ import codeql.rust.dataflow.TaintTracking module ConstantPasswordConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { // `node` is a string literal - node.asExpr().getExpr() instanceof StringLiteralExpr + node.asExpr() instanceof StringLiteralExpr } predicate isSink(DataFlow::Node node) { @@ -34,7 +34,7 @@ module ConstantPasswordConfig implements DataFlow::ConfigSig { call.getStaticTarget() = target and v.getParameter() = target.getParam(argIndex) and v.getText().matches("pass%") and - call.getArg(argIndex) = node.asExpr().getExpr() + call.getArg(argIndex) = node.asExpr() ) } } diff --git a/rust/ql/examples/snippets/simple_sql_injection.ql b/rust/ql/examples/snippets/simple_sql_injection.ql index 0a991118a50..653c761d7eb 100644 --- a/rust/ql/examples/snippets/simple_sql_injection.ql +++ b/rust/ql/examples/snippets/simple_sql_injection.ql @@ -25,7 +25,7 @@ module SqlInjectionConfig implements DataFlow::ConfigSig { // `node` is the first argument of a call to `sqlx_core::query::query` exists(CallExpr call | call.getStaticTarget().getCanonicalPath() = "sqlx_core::query::query" and - call.getArg(0) = node.asExpr().getExpr() + call.getArg(0) = node.asExpr() ) } } diff --git a/rust/ql/lib/codeql/rust/Concepts.qll b/rust/ql/lib/codeql/rust/Concepts.qll index 20247e08875..2e2220430e1 100644 --- a/rust/ql/lib/codeql/rust/Concepts.qll +++ b/rust/ql/lib/codeql/rust/Concepts.qll @@ -4,14 +4,13 @@ * provide concrete subclasses. */ +private import rust private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.Locations private import codeql.threatmodels.ThreatModels private import codeql.rust.Frameworks private import codeql.rust.dataflow.FlowSource -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.concepts.ConceptsShared private module ConceptsShared = ConceptsMake; @@ -345,16 +344,16 @@ module Path { SafeAccessCheck() { this = DataFlow::BarrierGuard::getABarrierNode() } } - private predicate safeAccessCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - g.(SafeAccessCheck::Range).checks(node, branch) + private predicate safeAccessCheck(AstNode g, Expr e, boolean branch) { + g.(SafeAccessCheck::Range).checks(e, branch) } /** Provides a class for modeling new path safety checks. */ module SafeAccessCheck { /** A data-flow node that checks that a path is safe to access in some way, for example by having a controlled prefix. */ - abstract class Range extends CfgNodes::AstCfgNode { - /** Holds if this guard validates `node` upon evaluating to `branch`. */ - abstract predicate checks(Cfg::CfgNode node, boolean branch); + abstract class Range extends AstNode { + /** Holds if this guard validates `e` upon evaluating to `branch`. */ + abstract predicate checks(Expr e, boolean branch); } } } diff --git a/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll b/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll index cfcea9eaa2d..c299671ec6d 100644 --- a/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll +++ b/rust/ql/lib/codeql/rust/dataflow/DataFlow.qll @@ -8,8 +8,6 @@ private import codeql.dataflow.DataFlow private import internal.DataFlowImpl as DataFlowImpl private import internal.Node as Node private import internal.Content as Content -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides classes for performing local (intra-procedural) and global @@ -68,7 +66,7 @@ module DataFlow { * For example, the guard `g` might be a call `isSafe(x)` and the expression `e` * the argument `x`. */ - signature predicate guardChecksSig(CfgNodes::AstCfgNode g, Cfg::CfgNode e, boolean branch); + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch); /** * Provides a set of barrier nodes for a guard that validates an expression. diff --git a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll index badbef9e420..52e7d35e3b4 100644 --- a/rust/ql/lib/codeql/rust/dataflow/Ssa.qll +++ b/rust/ql/lib/codeql/rust/dataflow/Ssa.qll @@ -9,7 +9,6 @@ module Ssa { private import rust private import codeql.rust.controlflow.BasicBlocks private import codeql.rust.controlflow.ControlFlowGraph - private import codeql.rust.controlflow.CfgNodes private import codeql.rust.controlflow.internal.ControlFlowGraphImpl as CfgImpl private import internal.SsaImpl as SsaImpl @@ -51,7 +50,7 @@ module Ssa { * } * ``` */ - final CfgNode getARead() { result = SsaImpl::getARead(this) } + final Expr getARead() { result = SsaImpl::getARead(this) } /** * Gets a first control flow node that reads the value of this SSA definition. @@ -80,7 +79,7 @@ module Ssa { * } * ``` */ - final CfgNode getAFirstRead() { SsaImpl::firstRead(this, result) } + final Expr getAFirstRead() { SsaImpl::firstRead(this, result) } /** * Holds if `read1` and `read2` are adjacent reads of this SSA definition. @@ -108,7 +107,7 @@ module Ssa { * } * ``` */ - final predicate hasAdjacentReads(CfgNode read1, CfgNode read2) { + final predicate hasAdjacentReads(Expr read1, Expr read2) { SsaImpl::adjacentReadPair(this, read1, read2) } @@ -168,28 +167,28 @@ module Ssa { * ``` */ class WriteDefinition extends Definition, SsaImpl::WriteDefinition { - private CfgNode write; + private AstNode write; WriteDefinition() { - exists(BasicBlock bb, int i, Variable v, CfgNode n | + exists(BasicBlock bb, int i, Variable v, AstNode n | this.definesAt(v, bb, i) and - SsaImpl::variableWriteActual(bb, i, v, n) + SsaImpl::variableWriteActual(bb, i, v, n.getACfgNode()) | - write.(VariableAccessCfgNode).getAccess().getVariable() = v and + write.(VariableAccess).getVariable() = v and ( - write = n.(AssignmentExprCfgNode).getAWriteAccess() + write = n.(AssignmentExpr).getAWriteAccess() or - write = n.(CompoundAssignmentExprCfgNode).getLhs() + write = n.(CompoundAssignmentExpr).getLhs() ) or - not n instanceof AssignmentExprCfgNode and - not n instanceof CompoundAssignmentExprCfgNode and + not n instanceof AssignmentExpr and + not n instanceof CompoundAssignmentExpr and write = n ) } /** Gets the underlying write access. */ - final CfgNode getWriteAccess() { result = write } + final AstNode getWriteAccess() { result = write } /** * Holds if this SSA definition assigns `value` to the underlying @@ -199,19 +198,19 @@ module Ssa { * `let` statement, `let x = value`. Note that patterns on the lhs. are * currently not supported. */ - predicate assigns(ExprCfgNode value) { - exists(AssignmentExprCfgNode ae | + predicate assigns(Expr value) { + exists(AssignmentExpr ae | ae.getLhs() = write and ae.getRhs() = value ) or - exists(IdentPatCfgNode pat | pat.getName() = write | - exists(LetStmtCfgNode ls | + exists(IdentPat pat | pat.getName() = write | + exists(LetStmt ls | pat = ls.getPat() and ls.getInitializer() = value ) or - exists(LetExprCfgNode le | + exists(LetExpr le | pat = le.getPat() and le.getScrutinee() = value ) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll index 67fed2d2def..12e4b682091 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll @@ -3,7 +3,6 @@ */ private import rust -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.frameworks.stdlib.Builtins private import DataFlowImpl @@ -22,7 +21,7 @@ abstract class Content extends TContent { abstract class FieldContent extends Content { /** Gets an access to this field. */ pragma[nomagic] - abstract FieldExprCfgNode getAnAccess(); + abstract FieldExpr getAnAccess(); } /** A tuple field belonging to either a variant or a struct. */ @@ -41,7 +40,7 @@ class TupleFieldContent extends FieldContent, TTupleFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, int pos) { field.isStructField(s, pos) } - override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getTupleField() } + override FieldExpr getAnAccess() { field = result.getTupleField() } final override string toString() { exists(Variant v, int pos, string vname | @@ -74,7 +73,7 @@ class StructFieldContent extends FieldContent, TStructFieldContent { /** Holds if this field belongs to a struct. */ predicate isStructField(Struct s, string name) { field.isStructField(s, name) } - override FieldExprCfgNode getAnAccess() { field = result.getFieldExpr().getStructField() } + override FieldExpr getAnAccess() { field = result.getStructField() } final override string toString() { exists(Variant v, string name, string vname | @@ -153,7 +152,7 @@ final class TuplePositionContent extends FieldContent, TTuplePositionContent { /** Gets the index of this tuple position. */ int getPosition() { result = pos } - override FieldExprCfgNode getAnAccess() { + override FieldExpr getAnAccess() { // TODO: limit to tuple types result.getIdentifier().getText().toInt() = pos } diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll index d544ff888d5..731996661cb 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll @@ -29,17 +29,6 @@ private module Input implements InputSig { } predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) } - - predicate multipleArgumentCallExclude(Node::ArgumentNode arg, DataFlowCall call) { - // An argument such as `x` in `if !x { ... }` has two successors (and hence - // two calls); one for each Boolean outcome of `x`. - exists(CfgNodes::ExprCfgNode n | - arg.isArgumentOf(call, _) and - n = call.asCallCfgNode() and - arg.asExpr().getASuccessor(any(ConditionalSuccessor c)).getASuccessor*() = n and - n.getASplit() instanceof ConditionalCompletionSplitting::ConditionalCompletionSplit - ) - } } import MakeConsistency diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 9fa0f0a5a83..fd6bab4d23e 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -14,7 +14,6 @@ private import codeql.rust.controlflow.internal.Scope as Scope private import codeql.rust.internal.PathResolution private import codeql.rust.internal.TypeInference as TypeInference private import codeql.rust.controlflow.ControlFlowGraph -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.FlowSummary private import Node @@ -60,7 +59,7 @@ final class DataFlowCallable extends TDataFlowCallable { final class DataFlowCall extends TDataFlowCall { /** Gets the underlying call in the CFG, if any. */ - CallCfgNode asCallCfgNode() { this = TCall(result) } + Call asCall() { this = TCall(result) } predicate isSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -69,13 +68,13 @@ final class DataFlowCall extends TDataFlowCall { } DataFlowCallable getEnclosingCallable() { - result.asCfgScope() = this.asCallCfgNode().getExpr().getEnclosingCfgScope() + result.asCfgScope() = this.asCall().getEnclosingCfgScope() or this.isSummaryCall(result.asSummarizedCallable(), _) } string toString() { - result = this.asCallCfgNode().toString() + result = this.asCall().toString() or exists( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver @@ -85,7 +84,7 @@ final class DataFlowCall extends TDataFlowCall { ) } - Location getLocation() { result = this.asCallCfgNode().getLocation() } + Location getLocation() { result = this.asCall().getLocation() } } /** @@ -146,13 +145,13 @@ final class ArgumentPosition extends ParameterPosition { * Note that this does not hold for the receiever expression of a method call * as the synthetic `ReceiverNode` is the argument for the `self` parameter. */ -predicate isArgumentForCall(ExprCfgNode arg, CallCfgNode call, ParameterPosition pos) { +predicate isArgumentForCall(Expr arg, Call call, ParameterPosition pos) { // TODO: Handle index expressions as calls in data flow. - not call.getCall() instanceof IndexExpr and + not call instanceof IndexExpr and ( call.getPositionalArgument(pos.getPosition()) = arg or - call.getReceiver() = arg and pos.isSelf() and not call.getCall().receiverImplicitlyBorrowed() + call.getReceiver() = arg and pos.isSelf() and not call.receiverImplicitlyBorrowed() ) } @@ -181,19 +180,24 @@ module SsaFlow { } /** - * Gets a node that may execute last in `n`, and which, when it executes last, - * will be the value of `n`. + * Gets a node that may execute last in `e`, and which, when it executes last, + * will be the value of `e`. */ -private ExprCfgNode getALastEvalNode(ExprCfgNode e) { - e = any(IfExprCfgNode n | result = [n.getThen(), n.getElse()]) or - result = e.(LoopExprCfgNode).getLoopBody() or - result = e.(ReturnExprCfgNode).getExpr() or - result = e.(BreakExprCfgNode).getExpr() or - result = e.(BlockExprCfgNode).getTailExpr() or - result = e.(MacroBlockExprCfgNode).getTailExpr() or - result = e.(MatchExprCfgNode).getArmExpr(_) or - result = e.(MacroExprCfgNode).getMacroCall().(MacroCallCfgNode).getExpandedNode() or - result.(BreakExprCfgNode).getTarget() = e +private Expr getALastEvalNode(Expr e) { + e = any(IfExpr n | result = [n.getThen(), n.getElse()]) or + result = e.(LoopExpr).getLoopBody() or + result = e.(ReturnExpr).getExpr() or + result = e.(BreakExpr).getExpr() or + e = + any(BlockExpr be | + not be.isAsync() and + result = be.getTailExpr() + ) or + result = e.(MacroBlockExpr).getTailExpr() or + result = e.(MatchExpr).getAnArm().getExpr() or + result = e.(MacroExpr).getMacroCall().getMacroCallExpansion() or + result.(BreakExpr).getTarget() = e or + result = e.(ParenExpr).getExpr() } /** @@ -211,11 +215,11 @@ private ExprCfgNode getALastEvalNode(ExprCfgNode e) { * we add a reverse flow step from `[post] { foo(); &mut a}` to `[post] &mut a`, * in order for the side-effect of `set_data` to reach `&mut a`. */ -ExprCfgNode getPostUpdateReverseStep(ExprCfgNode e, boolean preservesValue) { +Expr getPostUpdateReverseStep(Expr e, boolean preservesValue) { result = getALastEvalNode(e) and preservesValue = true or - result = e.(CastExprCfgNode).getExpr() and + result = e.(CastExpr).getExpr() and preservesValue = false } @@ -236,48 +240,48 @@ module LocalFlow { pragma[nomagic] predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) { - nodeFrom.getCfgNode() = getALastEvalNode(nodeTo.getCfgNode()) + nodeFrom.asExpr() = getALastEvalNode(nodeTo.asExpr()) or // An edge from the right-hand side of a let statement to the left-hand side. - exists(LetStmtCfgNode s | - nodeFrom.getCfgNode() = s.getInitializer() and - nodeTo.getCfgNode() = s.getPat() + exists(LetStmt s | + nodeFrom.asExpr() = s.getInitializer() and + nodeTo.asPat() = s.getPat() ) or // An edge from the right-hand side of a let expression to the left-hand side. - exists(LetExprCfgNode e | - nodeFrom.getCfgNode() = e.getScrutinee() and - nodeTo.getCfgNode() = e.getPat() + exists(LetExpr e | + nodeFrom.asExpr() = e.getScrutinee() and + nodeTo.asPat() = e.getPat() ) or - exists(IdentPatCfgNode p | + exists(IdentPat p | not p.isRef() and - nodeFrom.getCfgNode() = p and - nodeTo.getCfgNode() = p.getName() + nodeFrom.asPat() = p and + nodeTo.(NameNode).getName() = p.getName() ) or - exists(SelfParamCfgNode self | - nodeFrom.getCfgNode() = self and - nodeTo.getCfgNode() = self.getName() + exists(SelfParam self | + nodeFrom.asParameter() = self and + nodeTo.(NameNode).getName() = self.getName() ) or // An edge from a pattern/expression to its corresponding SSA definition. - nodeFrom.(AstCfgFlowNode).getCfgNode() = + nodeFrom.(AstNodeNode).getAstNode() = nodeTo.(SsaNode).asDefinition().(Ssa::WriteDefinition).getWriteAccess() or - nodeFrom.(SourceParameterNode).getParameter().(ParamCfgNode).getPat() = nodeTo.asPat() + nodeFrom.(SourceParameterNode).getParameter().(Param).getPat() = nodeTo.asPat() or - exists(AssignmentExprCfgNode a | - a.getRhs() = nodeFrom.getCfgNode() and - a.getLhs() = nodeTo.getCfgNode() + exists(AssignmentExpr a | + a.getRhs() = nodeFrom.asExpr() and + a.getLhs() = nodeTo.asExpr() ) or - exists(MatchExprCfgNode match | + exists(MatchExpr match | nodeFrom.asExpr() = match.getScrutinee() and - nodeTo.asPat() = match.getArmPat(_) + nodeTo.asPat() = match.getAnArm().getPat() ) or - nodeFrom.asPat().(OrPatCfgNode).getAPat() = nodeTo.asPat() + nodeFrom.asPat().(OrPat).getAPat() = nodeTo.asPat() or // Simple value step from receiver expression to receiver node, in case // there is no implicit deref or borrow operation. @@ -305,12 +309,10 @@ predicate lambdaCreationExpr(Expr creation) { * Holds if `call` is a lambda call of kind `kind` where `receiver` is the * invoked expression. */ -predicate lambdaCallExpr(CallExprCfgNode call, LambdaCallKind kind, ExprCfgNode receiver) { +predicate lambdaCallExpr(CallExpr call, LambdaCallKind kind, Expr receiver) { receiver = call.getFunction() and // All calls to complex expressions and local variable accesses are lambda call. - exists(Expr f | f = receiver.getExpr() | - f instanceof PathExpr implies f = any(Variable v).getAnAccess() - ) and + (receiver instanceof PathExpr implies receiver = any(Variable v).getAnAccess()) and exists(kind) } @@ -379,19 +381,27 @@ module RustDataFlow implements InputSig { node instanceof CaptureNode or node instanceof ClosureParameterNode or node instanceof ReceiverNode or - node instanceof ReceiverPostUpdateNode + node.asExpr() instanceof ParenExpr or + nodeIsHidden(node.(PostUpdateNode).getPreUpdateNode()) + } + + private Expr stripParens(Expr e) { + not e instanceof ParenExpr and + result = e + or + result = stripParens(e.(ParenExpr).getExpr()) } predicate neverSkipInPathGraph(Node node) { - node.(Node::Node).getCfgNode() = any(LetStmtCfgNode s).getPat() + node.(Node::Node).asPat() = any(LetStmt s).getPat() or - node.(Node::Node).getCfgNode() = any(LetExprCfgNode e).getPat() + node.(Node::Node).asPat() = any(LetExpr e).getPat() or - node.(Node::Node).getCfgNode() = any(AssignmentExprCfgNode a).getLhs() + node.(Node::Node).asExpr() = stripParens(any(AssignmentExpr a).getLhs()) or - exists(MatchExprCfgNode match | - node.asExpr() = match.getScrutinee() or - node.asExpr() = match.getArmPat(_) + exists(MatchExpr match | + node.asExpr() = stripParens(match.getScrutinee()) or + node.asPat() = match.getAnArm().getPat() ) or FlowSummaryImpl::Private::Steps::sourceLocalStep(_, node, _) @@ -399,7 +409,7 @@ module RustDataFlow implements InputSig { FlowSummaryImpl::Private::Steps::sinkLocalStep(node, _, _) } - class DataFlowExpr = ExprCfgNode; + class DataFlowExpr = Expr; /** Gets the node corresponding to `e`. */ Node exprNode(DataFlowExpr e) { result.asExpr() = e } @@ -412,7 +422,7 @@ module RustDataFlow implements InputSig { /** Gets a viable implementation of the target of the given `Call`. */ DataFlowCallable viableCallable(DataFlowCall call) { - exists(Call c | c = call.asCallCfgNode().getCall() | + exists(Call c | c = call.asCall() | result.asCfgScope() = c.getARuntimeTarget() or exists(SummarizedCallable sc, Function staticTarget | @@ -511,79 +521,79 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate implicitDerefToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { - TypeInference::receiverHasImplicitDeref(node1.asExpr().getExpr()) and + TypeInference::receiverHasImplicitDeref(node1.asExpr()) and node1.asExpr() = node2.getReceiver() and exists(c) } pragma[nomagic] private predicate implicitBorrowToReceiver(Node node1, ReceiverNode node2, ReferenceContent c) { - TypeInference::receiverHasImplicitBorrow(node1.asExpr().getExpr()) and + TypeInference::receiverHasImplicitBorrow(node1.asExpr()) and node1.asExpr() = node2.getReceiver() and exists(c) } pragma[nomagic] private predicate referenceExprToExpr(Node node1, Node node2, ReferenceContent c) { - node1.asExpr() = node2.asExpr().(RefExprCfgNode).getExpr() and + node1.asExpr() = node2.asExpr().(RefExpr).getExpr() and exists(c) } pragma[nomagic] additional predicate readContentStep(Node node1, Content c, Node node2) { - exists(TupleStructPatCfgNode pat, int pos | + exists(TupleStructPat pat, int pos | pat = node1.asPat() and node2.asPat() = pat.getField(pos) and - c = TTupleFieldContent(pat.getTupleStructPat().getTupleField(pos)) + c = TTupleFieldContent(pat.getTupleField(pos)) ) or - exists(TuplePatCfgNode pat, int pos | + exists(TuplePat pat, int pos | pos = c.(TuplePositionContent).getPosition() and node1.asPat() = pat and node2.asPat() = pat.getField(pos) ) or - exists(StructPatCfgNode pat, string field | + exists(StructPat pat, string field | pat = node1.asPat() and - c = TStructFieldContent(pat.getStructPat().getStructField(field)) and - node2.asPat() = pat.getFieldPat(field) + c = TStructFieldContent(pat.getStructField(field)) and + node2.asPat() = pat.getPatField(field).getPat() ) or c instanceof ReferenceContent and - node1.asPat().(RefPatCfgNode).getPat() = node2.asPat() + node1.asPat().(RefPat).getPat() = node2.asPat() or - exists(FieldExprCfgNode access | + exists(FieldExpr access | node1.asExpr() = access.getContainer() and node2.asExpr() = access and access = c.(FieldContent).getAnAccess() ) or - exists(IndexExprCfgNode arr | + exists(IndexExpr arr | c instanceof ElementContent and node1.asExpr() = arr.getBase() and node2.asExpr() = arr ) or - exists(ForExprCfgNode for | + exists(ForExpr for | c instanceof ElementContent and node1.asExpr() = for.getIterable() and node2.asPat() = for.getPat() ) or - exists(SlicePatCfgNode pat | + exists(SlicePat pat | c instanceof ElementContent and node1.asPat() = pat and node2.asPat() = pat.getAPat() ) or - exists(TryExprCfgNode try | + exists(TryExpr try | node1.asExpr() = try.getExpr() and node2.asExpr() = try and c.(TupleFieldContent) .isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0) ) or - exists(PrefixExprCfgNode deref | + exists(PrefixExpr deref | c instanceof ReferenceContent and deref.getOperatorName() = "*" and node1.asExpr() = deref.getExpr() and @@ -597,7 +607,7 @@ module RustDataFlow implements InputSig { c instanceof FunctionCallReturnContent ) or - exists(AwaitExprCfgNode await | + exists(AwaitExpr await | c instanceof FutureContent and node1.asExpr() = await.getExpr() and node2.asExpr() = await @@ -644,7 +654,7 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate fieldAssignment(Node node1, Node node2, FieldContent c) { - exists(AssignmentExprCfgNode assignment, FieldExprCfgNode access | + exists(AssignmentExpr assignment, FieldExpr access | assignment.getLhs() = access and node1.asExpr() = assignment.getRhs() and node2.asExpr() = access.getContainer() and @@ -654,7 +664,7 @@ module RustDataFlow implements InputSig { pragma[nomagic] private predicate referenceAssignment(Node node1, Node node2, ReferenceContent c) { - exists(AssignmentExprCfgNode assignment, PrefixExprCfgNode deref | + exists(AssignmentExpr assignment, PrefixExpr deref | assignment.getLhs() = deref and deref.getOperatorName() = "*" and node1.asExpr() = assignment.getRhs() and @@ -665,19 +675,19 @@ module RustDataFlow implements InputSig { pragma[nomagic] additional predicate storeContentStep(Node node1, Content c, Node node2) { - exists(CallExprCfgNode call, int pos | - node1.asExpr() = call.getArgument(pragma[only_bind_into](pos)) and + exists(CallExpr call, int pos | + node1.asExpr() = call.getArg(pragma[only_bind_into](pos)) and node2.asExpr() = call and - c = TTupleFieldContent(call.getCallExpr().getTupleField(pragma[only_bind_into](pos))) + c = TTupleFieldContent(call.getTupleField(pragma[only_bind_into](pos))) ) or - exists(StructExprCfgNode re, string field | - c = TStructFieldContent(re.getStructExpr().getStructField(field)) and - node1.asExpr() = re.getFieldExpr(field) and + exists(StructExpr re, string field | + c = TStructFieldContent(re.getStructField(field)) and + node1.asExpr() = re.getFieldExpr(field).getExpr() and node2.asExpr() = re ) or - exists(TupleExprCfgNode tuple | + exists(TupleExpr tuple | node1.asExpr() = tuple.getField(c.(TuplePositionContent).getPosition()) and node2.asExpr() = tuple ) @@ -685,23 +695,23 @@ module RustDataFlow implements InputSig { c instanceof ElementContent and node1.asExpr() = [ - node2.asExpr().(ArrayRepeatExprCfgNode).getRepeatOperand(), - node2.asExpr().(ArrayListExprCfgNode).getAnExpr() + node2.asExpr().(ArrayRepeatExpr).getRepeatOperand(), + node2.asExpr().(ArrayListExpr).getAnExpr() ] or // Store from a `ref` identifier pattern into the contained name. - exists(IdentPatCfgNode p | + exists(IdentPat p | c instanceof ReferenceContent and p.isRef() and node1.asPat() = p and - node2.(NameNode).asName() = p.getName() + node2.(NameNode).getName() = p.getName() ) or fieldAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) or referenceAssignment(node1, node2.(PostUpdateNode).getPreUpdateNode(), c) or - exists(AssignmentExprCfgNode assignment, IndexExprCfgNode index | + exists(AssignmentExpr assignment, IndexExpr index | c instanceof ElementContent and assignment.getLhs() = index and node1.asExpr() = assignment.getRhs() and @@ -808,7 +818,7 @@ module RustDataFlow implements InputSig { /** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { exists(kind) and - exists(Expr e | e = creation.asExpr().getExpr() | + exists(Expr e | e = creation.asExpr() | lambdaCreationExpr(e) and e = c.asCfgScope() or // A path expression, that resolves to a function, evaluates to a function @@ -825,9 +835,9 @@ module RustDataFlow implements InputSig { */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( - receiver.asExpr() = call.asCallCfgNode().(CallExprCfgNode).getFunction() and + receiver.asExpr() = call.asCall().(CallExpr).getFunction() and // All calls to complex expressions and local variable accesses are lambda call. - exists(Expr f | f = receiver.asExpr().getExpr() | + exists(Expr f | f = receiver.asExpr() | f instanceof PathExpr implies f = any(Variable v).getAnAccess() ) or @@ -854,7 +864,7 @@ module VariableCapture { private import codeql.dataflow.VariableCapture as SharedVariableCapture private import codeql.rust.controlflow.BasicBlocks as BasicBlocks - private predicate closureFlowStep(ExprCfgNode e1, ExprCfgNode e2) { + private predicate closureFlowStep(Expr e1, Expr e2) { Stages::DataFlowStage::ref() and e1 = getALastEvalNode(e2) or @@ -883,48 +893,48 @@ module VariableCapture { CapturedParameter() { p = this.getParameter() } - SourceParameterNode getParameterNode() { result.getParameter().getParamBase() = p } + SourceParameterNode getParameterNode() { result.getParameter() = p } } - class Expr extends CfgNode { - predicate hasCfgNode(BasicBlocks::BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends AstNode { + predicate hasCfgNode(BasicBlocks::BasicBlock bb, int i) { this = bb.getNode(i).getAstNode() } } class VariableWrite extends Expr { - ExprCfgNode source; + Expr source; CapturedVariable v; VariableWrite() { - exists(AssignmentExprCfgNode assign, Variable::VariableWriteAccess write | + exists(AssignmentExpr assign, Variable::VariableWriteAccess write | this = assign and v = write.getVariable() and - assign.getLhs().getExpr() = write and + assign.getLhs() = write and assign.getRhs() = source ) or - exists(LetStmtCfgNode ls | - this = ls and - v.getPat() = ls.getPat().getPat() and - ls.getInitializer() = source - ) + this = + any(LetStmt ls | + v.getPat() = ls.getPat() and + ls.getInitializer() = source + ) or - exists(LetExprCfgNode le | - this = le and - v.getPat() = le.getPat().getPat() and - le.getScrutinee() = source - ) + this = + any(LetExpr le | + v.getPat() = le.getPat() and + le.getScrutinee() = source + ) } CapturedVariable getVariable() { result = v } - ExprCfgNode getSource() { result = source } + Expr getSource() { result = source } } - class VariableRead extends Expr instanceof ExprCfgNode { + class VariableRead extends Expr { CapturedVariable v; VariableRead() { - exists(VariableAccess read | this.getExpr() = read and v = read.getVariable() | + exists(VariableAccess read | this = read and v = read.getVariable() | read instanceof VariableReadAccess or read = any(RefExpr re).getExpr() @@ -934,10 +944,10 @@ module VariableCapture { CapturedVariable getVariable() { result = v } } - class ClosureExpr extends Expr instanceof ExprCfgNode { - ClosureExpr() { lambdaCreationExpr(super.getExpr()) } + class ClosureExpr extends Expr { + ClosureExpr() { lambdaCreationExpr(this) } - predicate hasBody(Callable body) { body = super.getExpr() } + predicate hasBody(Callable body) { body = this } predicate hasAliasedAccess(Expr f) { closureFlowStep+(this, f) and not closureFlowStep(f, _) } } @@ -991,10 +1001,11 @@ private module Cached { cached newtype TDataFlowCall = - TCall(CallCfgNode c) { + TCall(Call call) { Stages::DataFlowStage::ref() and + call.hasEnclosingCfgScope() and // TODO: Handle index expressions as calls in data flow. - not c.getCall() instanceof IndexExpr + not call instanceof IndexExpr } or TSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index 2763908ae02..d9457d79510 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -9,7 +9,6 @@ private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.internal.PathResolution private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.Ssa -private import codeql.rust.controlflow.CfgNodes private import Content module Input implements InputSig { @@ -132,9 +131,7 @@ module Input implements InputSig { private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { - DataFlowCall getACall(Public::SummarizedCallable sc) { - result.asCallCfgNode().getCall().getStaticTarget() = sc - } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } /** Gets the argument of `source` described by `sc`, if any. */ private Expr getSourceNodeArgument(Input::SourceBase source, Impl::Private::SummaryComponent sc) { @@ -151,10 +148,9 @@ private module StepsInput implements Impl::Private::StepsInputSig { result = expr.(ClosureExpr) or // The expression is an SSA read of an assignment of a closure - exists(Ssa::Definition def, ExprCfgNode value | - def.getARead().getAstNode() = expr and - def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(value) and - result = value.getExpr().(ClosureExpr) + exists(Ssa::Definition def | + def.getARead() = expr and + def.getAnUltimateDefinition().(Ssa::WriteDefinition).assigns(result.(ClosureExpr)) ) } @@ -164,7 +160,7 @@ private module StepsInput implements Impl::Private::StepsInputSig { RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { s.head() = Impl::Private::SummaryComponent::return(_) and - result.asExpr().getExpr() = source.getCall() + result.asExpr() = source.getCall() or exists(ArgumentPosition pos, Expr arg | s.head() = Impl::Private::SummaryComponent::parameter(pos) and @@ -172,13 +168,13 @@ private module StepsInput implements Impl::Private::StepsInputSig { result.asParameter() = getCallable(arg).getParam(pos.getPosition()) ) or - result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr().getExpr() = + result.(RustDataFlow::PostUpdateNode).getPreUpdateNode().asExpr() = getSourceNodeArgument(source, s.headOfSingleton()) } RustDataFlow::Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { exists(CallExprBase call, Expr arg, ArgumentPosition pos | - result.asExpr().getExpr() = arg and + result.asExpr() = arg and sc = Impl::Private::SummaryComponent::argument(pos) and call = sink.getCall() and arg = pos.getArgument(call) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index e46b4375c04..421f613b5c4 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -35,17 +35,17 @@ class NodePublic extends TNode { /** * Gets the expression that corresponds to this node, if any. */ - final ExprCfgNode asExpr() { this = TExprNode(result) } + final Expr asExpr() { this = TExprNode(result) } /** * Gets the parameter that corresponds to this node, if any. */ - ParamBase asParameter() { result = this.(SourceParameterNode).getParameter().getParamBase() } + ParamBase asParameter() { result = this.(SourceParameterNode).getParameter() } /** * Gets the pattern that corresponds to this node, if any. */ - final PatCfgNode asPat() { this = TPatNode(result) } + final Pat asPat() { this = TPatNode(result) } } abstract class Node extends NodePublic { @@ -56,9 +56,9 @@ abstract class Node extends NodePublic { abstract CfgScope getCfgScope(); /** - * Gets the control flow node that corresponds to this data flow node. + * Gets the AST node that corresponds to this data flow node, if any. */ - CfgNode getCfgNode() { none() } + AstNode getAstNode() { none() } } /** A data flow node used to model flow summaries. */ @@ -119,16 +119,16 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } /** A data flow node that corresponds directly to a CFG node for an AST node. */ -abstract class AstCfgFlowNode extends Node { - AstCfgNode n; +abstract class AstNodeNode extends Node { + AstNode n; - final override CfgNode getCfgNode() { result = n } + final override AstNode getAstNode() { result = n } - final override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + final override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } - final override Location getLocation() { result = n.getAstNode().getLocation() } + final override Location getLocation() { result = n.getLocation() } - final override string toString() { result = n.getAstNode().toString() } + final override string toString() { result = n.toString() } } /** @@ -139,25 +139,25 @@ abstract class AstCfgFlowNode extends Node { * to multiple `ExprNode`s, just like it may correspond to multiple * `ControlFlow::Node`s. */ -class ExprNode extends AstCfgFlowNode, TExprNode { - override ExprCfgNode n; +class ExprNode extends AstNodeNode, TExprNode { + override Expr n; ExprNode() { this = TExprNode(n) } } -final class PatNode extends AstCfgFlowNode, TPatNode { - override PatCfgNode n; +final class PatNode extends AstNodeNode, TPatNode { + override Pat n; PatNode() { this = TPatNode(n) } } /** A data flow node that corresponds to a name node in the CFG. */ -final class NameNode extends AstCfgFlowNode, TNameNode { - override NameCfgNode n; +final class NameNode extends AstNodeNode, TNameNode { + override Name n; NameNode() { this = TNameNode(n) } - NameCfgNode asName() { result = n } + Name getName() { result = n } } /** @@ -169,20 +169,20 @@ abstract class ParameterNode extends Node { abstract predicate isParameterOf(DataFlowCallable c, ParameterPosition pos); } -final class SourceParameterNode extends AstCfgFlowNode, ParameterNode, TSourceParameterNode { - override ParamBaseCfgNode n; +final class SourceParameterNode extends AstNodeNode, ParameterNode, TSourceParameterNode { + override ParamBase n; SourceParameterNode() { this = TSourceParameterNode(n) } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - n.getAstNode() = pos.getParameterIn(c.asCfgScope().(Callable).getParamList()) + n = pos.getParameterIn(c.asCfgScope().(Callable).getParamList()) } /** Get the parameter position of this parameter. */ ParameterPosition getPosition() { this.isParameterOf(_, result) } /** Gets the parameter in the CFG that this node corresponds to. */ - ParamBaseCfgNode getParameter() { result = n } + ParamBase getParameter() { result = n } } /** A parameter for a library callable with a flow summary. */ @@ -223,13 +223,13 @@ abstract class ArgumentNode extends Node { } final class ExprArgumentNode extends ArgumentNode, ExprNode { - private CallCfgNode call_; + private Call call_; private RustDataFlow::ArgumentPosition pos_; ExprArgumentNode() { isArgumentForCall(n, call_, pos_) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = call_ and pos = pos_ + call.asCall() = call_ and pos = pos_ } } @@ -238,19 +238,19 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode { * has taken place. */ final class ReceiverNode extends ArgumentNode, TReceiverNode { - private CallCfgNode n; + private Call n; ReceiverNode() { this = TReceiverNode(n, false) } - ExprCfgNode getReceiver() { result = n.getReceiver() } + Expr getReceiver() { result = n.getReceiver() } - MethodCallExprCfgNode getMethodCall() { result = n } + MethodCallExpr getMethodCall() { result = n } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = n and pos = TSelfParameterPosition() + call.asCall() = n and pos = TSelfParameterPosition() } - override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } override Location getLocation() { result = this.getReceiver().getLocation() } @@ -275,12 +275,12 @@ final class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode { * passed into the closure body at an invocation. */ final class ClosureArgumentNode extends ArgumentNode, ExprNode { - private CallExprCfgNode call_; + private CallExpr call_; ClosureArgumentNode() { lambdaCallExpr(call_, _, this.asExpr()) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { - call.asCallCfgNode() = call_ and + call.asCall() = call_ and pos.isClosureSelf() } } @@ -309,7 +309,7 @@ abstract class ReturnNode extends Node { } final class ExprReturnNode extends ExprNode, ReturnNode { - ExprReturnNode() { this.getCfgNode().getASuccessor() instanceof AnnotatedExitCfgNode } + ExprReturnNode() { n.getACfgNode().getASuccessor() instanceof AnnotatedExitCfgNode } override ReturnKind getKind() { result = TNormalReturnKind() } } @@ -329,11 +329,11 @@ abstract class OutNode extends Node { } final private class ExprOutNode extends ExprNode, OutNode { - ExprOutNode() { this.asExpr() instanceof CallCfgNode } + ExprOutNode() { this.asExpr() instanceof Call } /** Gets the underlying call CFG node that includes this out node. */ override DataFlowCall getCall(ReturnKind kind) { - result.asCallCfgNode() = this.getCfgNode() and + result.asCall() = n and kind = TNormalReturnKind() } } @@ -391,27 +391,27 @@ abstract class PostUpdateNode extends PostUpdateNodePublic, Node { } final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode { - private ExprCfgNode n; + private Expr e; - ExprPostUpdateNode() { this = TExprPostUpdateNode(n) } + ExprPostUpdateNode() { this = TExprPostUpdateNode(e) } - override Node getPreUpdateNode() { result = TExprNode(n) } + override Node getPreUpdateNode() { result = TExprNode(e) } - override CfgScope getCfgScope() { result = n.getScope() } + override CfgScope getCfgScope() { result = e.getEnclosingCfgScope() } - override Location getLocation() { result = n.getLocation() } + override Location getLocation() { result = e.getLocation() } } final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode { - private CallCfgNode n; + private Call call; - ReceiverPostUpdateNode() { this = TReceiverNode(n, true) } + ReceiverPostUpdateNode() { this = TReceiverNode(call, true) } - override Node getPreUpdateNode() { result = TReceiverNode(n, false) } + override Node getPreUpdateNode() { result = TReceiverNode(call, false) } - override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() } + override CfgScope getCfgScope() { result = call.getEnclosingCfgScope() } - override Location getLocation() { result = n.getReceiver().getLocation() } + override Location getLocation() { result = call.getReceiver().getLocation() } } final class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { @@ -445,38 +445,46 @@ final class CastNode extends ExprNode { cached newtype TNode = - TExprNode(ExprCfgNode n) { Stages::DataFlowStage::ref() } or - TSourceParameterNode(ParamBaseCfgNode p) or - TPatNode(PatCfgNode p) or - TNameNode(NameCfgNode n) { n.getName() = any(Variable v).getName() } or - TExprPostUpdateNode(ExprCfgNode e) { - isArgumentForCall(e, _, _) - or - lambdaCallExpr(_, _, e) - or - lambdaCreationExpr(e.getExpr()) - or - // Whenever `&mut e` has a post-update node we also create one for `e`. - // E.g., for `e` in `f(..., &mut e, ...)` or `*(&mut e) = ...`. - e = any(RefExprCfgNode ref | ref.isMut() and exists(TExprPostUpdateNode(ref))).getExpr() - or - e = - [ - any(IndexExprCfgNode i).getBase(), // - any(FieldExprCfgNode access).getContainer(), // - any(TryExprCfgNode try).getExpr(), // - any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(), // - any(AwaitExprCfgNode a).getExpr(), // - any(MethodCallExprCfgNode mc).getReceiver(), // - getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) - ] + TExprNode(Expr e) { e.hasEnclosingCfgScope() and Stages::DataFlowStage::ref() } or + TSourceParameterNode(ParamBase p) { p.hasEnclosingCfgScope() } or + TPatNode(Pat p) { p.hasEnclosingCfgScope() } or + TNameNode(Name n) { n = any(Variable v).getName() and n.hasEnclosingCfgScope() } or + TExprPostUpdateNode(Expr e) { + e.hasEnclosingCfgScope() and + ( + isArgumentForCall(e, _, _) + or + lambdaCallExpr(_, _, e) + or + lambdaCreationExpr(e) + or + // Whenever `&mut e` has a post-update node we also create one for `e`. + // E.g., for `e` in `f(..., &mut e, ...)` or `*(&mut e) = ...`. + e = any(RefExpr ref | ref.isMut() and exists(TExprPostUpdateNode(ref))).getExpr() + or + e = + [ + any(IndexExpr i).getBase(), // + any(FieldExpr access).getContainer(), // + any(TryExpr try).getExpr(), // + any(PrefixExpr pe | pe.getOperatorName() = "*").getExpr(), // + any(AwaitExpr a).getExpr(), // + any(MethodCallExpr mc).getReceiver(), // + getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _) + ] + ) } or - TReceiverNode(CallCfgNode mc, Boolean isPost) { - mc.getCall().receiverImplicitlyBorrowed() and + TReceiverNode(Call call, Boolean isPost) { + call.hasEnclosingCfgScope() and + call.receiverImplicitlyBorrowed() and // TODO: Handle index expressions as calls in data flow. - not mc.getCall() instanceof IndexExpr + not call instanceof IndexExpr } or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or - TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) { + forall(AstNode n | n = sn.getSinkElement() or n = sn.getSourceElement() | + n.hasEnclosingCfgScope() + ) + } or TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c) } or TCaptureNode(VariableCapture::Flow::SynthesizedCaptureNode cn) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index 49b40474c98..29674cbd1df 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -2,7 +2,6 @@ private import rust private import codeql.rust.controlflow.BasicBlocks as BasicBlocks private import BasicBlocks private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import Cfg private import codeql.rust.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl private import codeql.ssa.Ssa as SsaImplCommon @@ -229,11 +228,11 @@ private module Cached { } cached - CfgNode getARead(Definition def) { + Expr getARead(Definition def) { exists(Variable v, BasicBlock bb, int i | Impl::ssaDefReachesRead(v, def, bb, i) and variableReadCertain(bb, i, v.getAnAccess(), v) and - result = bb.getNode(i) + result = bb.getNode(i).getAstNode() ) } @@ -247,8 +246,10 @@ private module Cached { * without passing through any other non-pseudo read. */ cached - predicate firstRead(Definition def, CfgNode read) { - exists(BasicBlock bb, int i | Impl::firstUse(def, bb, i, true) and read = bb.getNode(i)) + predicate firstRead(Definition def, Expr read) { + exists(BasicBlock bb, int i | + Impl::firstUse(def, bb, i, true) and read = bb.getNode(i).getAstNode() + ) } /** @@ -257,12 +258,12 @@ private module Cached { * passing through another non-pseudo read. */ cached - predicate adjacentReadPair(Definition def, CfgNode read1, CfgNode read2) { + predicate adjacentReadPair(Definition def, Expr read1, Expr read2) { exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2, Variable v | Impl::ssaDefReachesRead(v, def, bb1, i1) and Impl::adjacentUseUse(bb1, i1, bb2, i2, v, true) and - read1 = bb1.getNode(i1) and - read2 = bb2.getNode(i2) + read1 = bb1.getNode(i1).getAstNode() and + read2 = bb2.getNode(i2).getAstNode() ) } @@ -287,7 +288,7 @@ private module Cached { DataFlowIntegrationImpl::localMustFlowStep(v, nodeFrom, nodeTo) } - signature predicate guardChecksSig(CfgNodes::AstCfgNode g, Cfg::CfgNode e, boolean branch); + signature predicate guardChecksSig(AstNode g, Expr e, boolean branch); cached // nothing is actually cached module BarrierGuard { @@ -310,47 +311,49 @@ private module Cached { import Cached private import codeql.rust.dataflow.Ssa +private class ExprAlias = Expr; + private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInputSig { private import codeql.rust.dataflow.internal.DataFlowImpl as DataFlowImpl private import codeql.util.Boolean - class Expr extends CfgNodes::AstCfgNode { - predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends ExprAlias { + predicate hasCfgNode(BasicBlock bb, int i) { this.getACfgNode() = bb.getNode(i) } } Expr getARead(Definition def) { result = Cached::getARead(def) } predicate ssaDefHasSource(WriteDefinition def) { none() } // handled in `DataFlowImpl.qll` instead - private predicate isArg(CfgNodes::CallExprBaseCfgNode call, CfgNodes::ExprCfgNode e) { - call.getArgument(_) = e + private predicate isArg(CallExprBase call, Expr e) { + call.getAnArg() = e or - call.(CfgNodes::MethodCallExprCfgNode).getReceiver() = e + call.(MethodCallExpr).getReceiver() = e or - exists(CfgNodes::ExprCfgNode mid | + exists(Expr mid | isArg(call, mid) and e = DataFlowImpl::getPostUpdateReverseStep(mid, _) ) } predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { - exists(CfgNodes::CallExprBaseCfgNode call, Variable v, BasicBlock bb, int i | + exists(Variable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and mutablyBorrows(bb.getNode(i).getAstNode(), v) and - isArg(call, bb.getNode(i)) + isArg(_, bb.getNode(i).getAstNode()) ) } class GuardValue = Boolean; - class Guard extends CfgNodes::AstCfgNode { + class Guard extends AstNode { /** * Holds if the evaluation of this guard to `branch` corresponds to the edge * from `bb1` to `bb2`. */ predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue branch) { exists(Cfg::ConditionalSuccessor s | - this = bb1.getANode() and + this = bb1.getANode().getAstNode() and bb2 = bb1.getASuccessor(s) and s.getValue() = branch ) @@ -369,7 +372,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, GuardValue branch) { exists(ConditionBasicBlock conditionBlock, ConditionalSuccessor s | - guard = conditionBlock.getLastNode() and + guard = conditionBlock.getLastNode().getAstNode() and s.getValue() = branch and conditionBlock.edgeDominates(bb, s) ) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll index b702c514c1a..544bed64730 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll @@ -1,6 +1,5 @@ private import rust private import codeql.dataflow.TaintTracking -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSummary private import DataFlowImpl @@ -21,22 +20,22 @@ module RustTaintTracking implements InputSig { Stages::DataFlowStage::ref() and model = "" and ( - exists(BinaryExprCfgNode binary | + exists(BinaryExpr binary | binary.getOperatorName() = ["+", "-", "*", "/", "%", "&", "|", "^", "<<", ">>"] and pred.asExpr() = [binary.getLhs(), binary.getRhs()] and succ.asExpr() = binary ) or - exists(PrefixExprCfgNode prefix | + exists(PrefixExpr prefix | prefix.getOperatorName() = ["-", "!"] and pred.asExpr() = prefix.getExpr() and succ.asExpr() = prefix ) or - pred.asExpr() = succ.asExpr().(CastExprCfgNode).getExpr() + pred.asExpr() = succ.asExpr().(CastExpr).getExpr() or - exists(IndexExprCfgNode index | - index.getIndex() instanceof RangeExprCfgNode and + exists(IndexExpr index | + index.getIndex() instanceof RangeExpr and pred.asExpr() = index.getBase() and succ.asExpr() = index ) @@ -52,8 +51,16 @@ module RustTaintTracking implements InputSig { cs.getContent() instanceof ReferenceContent ) or - exists(FormatArgsExprCfgNode format | succ.asExpr() = format | - pred.asExpr() = [format.getArgumentExpr(_), format.getFormatTemplateVariableAccess(_)] + exists(FormatArgsExpr format | succ.asExpr() = format | + pred.asExpr() = format.getAnArg().getExpr() + or + pred.asExpr() = + any(FormatTemplateVariableAccess v | + exists(Format f | + f = format.getAFormat() and + v.getArgument() = [f.getArgumentRef(), f.getWidthArgument(), f.getPrecisionArgument()] + ) + ) ) or succ.(Node::PostUpdateNode).getPreUpdateNode().asExpr() = diff --git a/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll b/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll index a3ca1722b57..6fbbdf7cd81 100644 --- a/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll +++ b/rust/ql/lib/codeql/rust/elements/AssignmentOperation.qll @@ -25,6 +25,11 @@ final class AssignmentOperation = AssignmentOperationImpl; final class AssignmentExpr extends AssignmentOperationImpl { AssignmentExpr() { this.getOperatorName() = "=" } + /** + * Gets a write access that occurs in the left-hand side of this assignment expression. + */ + VariableWriteAccess getAWriteAccess() { this = result.getAssignmentExpr() } + override string getAPrimaryQlClass() { result = "AssignmentExpr" } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index 69138190dba..554942f0fdd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -59,6 +59,9 @@ module Impl { ) } + /** Holds if this node is inside a CFG scope. */ + predicate hasEnclosingCfgScope() { exists(this.getEnclosingCfgScope()) } + /** Gets the block that encloses this node, if any. */ cached BlockExpr getEnclosingBlock() { diff --git a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll index 9011109b194..6fcba9900be 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `BlockExpr`. * @@ -26,5 +25,10 @@ module Impl { * } * ``` */ - class BlockExpr extends Generated::BlockExpr { } + class BlockExpr extends Generated::BlockExpr { + /** + * Gets the tail expression of this block, if it exists. + */ + Expr getTailExpr() { result = this.getStmtList().getTailExpr() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll index e8c800bc9b8..158d20e0703 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll @@ -21,6 +21,11 @@ module Impl { * ``` */ class ParenExpr extends Generated::ParenExpr { - override string toStringImpl() { result = "(" + this.getExpr().toAbbreviatedString() + ")" } + override string toStringImpl() { + result = "(" + this.getExpr().toAbbreviatedString() + ")" + or + not exists(this.getExpr().toAbbreviatedString()) and + result = "(...)" + } } } diff --git a/rust/ql/lib/codeql/rust/frameworks/Poem.qll b/rust/ql/lib/codeql/rust/frameworks/Poem.qll index 2554d845293..ad57ba1dc94 100644 --- a/rust/ql/lib/codeql/rust/frameworks/Poem.qll +++ b/rust/ql/lib/codeql/rust/frameworks/Poem.qll @@ -11,7 +11,7 @@ private import codeql.rust.Concepts private class PoemHandlerParam extends RemoteSource::Range { PoemHandlerParam() { exists(TupleStructPat param | - this.asPat().getPat() = param.getAField() and + this.asPat() = param.getAField() and param.getStruct().getCanonicalPath() = ["poem::web::query::Query", "poem::web::path::Path"] ) } diff --git a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll index b34b3abf7cb..b6accba0734 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll +++ b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll @@ -25,7 +25,7 @@ class StreamCipherInit extends Cryptography::CryptographicOperation::Range { // a call to `cipher::KeyInit::new`, `cipher::KeyInit::new_from_slice`, // `cipher::KeyIvInit::new`, `cipher::KeyIvInit::new_from_slices`, `rc2::Rc2::new_with_eff_key_len` or similar. exists(CallExprBase ce, string rawAlgorithmName | - ce = this.asExpr().getExpr() and + ce = this.asExpr() and ce.getStaticTarget().(Function).getName().getText() = ["new", "new_from_slice", "new_with_eff_key_len", "new_from_slices"] and // extract the algorithm name from the type of `ce` or its receiver. diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index 773aa77f80f..d078f08c168 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -4,20 +4,16 @@ private import rust private import codeql.rust.Concepts -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.dataflow.DataFlow private import codeql.rust.internal.PathResolution /** * A call to the `starts_with` method on a `Path`. */ -private class StartswithCall extends Path::SafeAccessCheck::Range, CfgNodes::MethodCallExprCfgNode { - StartswithCall() { - this.getMethodCallExpr().getStaticTarget().getCanonicalPath() = "::starts_with" - } +private class StartswithCall extends Path::SafeAccessCheck::Range, MethodCallExpr { + StartswithCall() { this.getStaticTarget().getCanonicalPath() = "::starts_with" } - override predicate checks(Cfg::CfgNode e, boolean branch) { + override predicate checks(Expr e, boolean branch) { e = this.getReceiver() and branch = true } diff --git a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll index 4b3177c9df9..6e8077ebae0 100644 --- a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll @@ -39,6 +39,14 @@ module AccessAfterLifetime { */ abstract class Barrier extends DataFlow::Node { } + /** + * Holds if the value `source` points to accesses a variable `target` with scope `scope`. + */ + pragma[nomagic] + predicate sourceValueScope(Source source, Variable target, BlockExpr scope) { + valueScope(source.getTarget(), target, scope) + } + /** * Holds if the pair `(source, sink)`, that represents a flow from a * pointer or reference to a dereference, has its dereference outside the @@ -47,8 +55,8 @@ module AccessAfterLifetime { bindingset[source, sink] predicate dereferenceAfterLifetime(Source source, Sink sink, Variable target) { exists(BlockExpr valueScope, BlockExpr accessScope | - valueScope(source.getTarget(), target, valueScope) and - accessScope = sink.asExpr().getExpr().getEnclosingBlock() and + sourceValueScope(source, target, valueScope) and + accessScope = sink.asExpr().getEnclosingBlock() and not mayEncloseOnStack(valueScope, accessScope) ) } @@ -104,7 +112,7 @@ module AccessAfterLifetime { private class RefExprSource extends Source { Expr targetValue; - RefExprSource() { this.asExpr().getExpr().(RefExpr).getExpr() = targetValue } + RefExprSource() { this.asExpr().(RefExpr).getExpr() = targetValue } override Expr getTarget() { result = targetValue } } @@ -114,6 +122,6 @@ module AccessAfterLifetime { * variables through closures properly. */ private class ClosureBarrier extends Barrier { - ClosureBarrier() { this.asExpr().getExpr().getEnclosingCallable() instanceof ClosureExpr } + ClosureBarrier() { this.asExpr().getEnclosingCallable() instanceof ClosureExpr } } } diff --git a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll index 444db014209..bddc2d8ee5a 100644 --- a/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessInvalidPointerExtensions.qll @@ -50,7 +50,7 @@ module AccessInvalidPointer { * A pointer access using the unary `*` operator. */ private class DereferenceSink extends Sink { - DereferenceSink() { any(DerefExpr p).getExpr() = this.asExpr().getExpr() } + DereferenceSink() { any(DerefExpr p).getExpr() = this.asExpr() } } /** diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index cc5ac55fd1b..a55e30aa13e 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -16,7 +16,7 @@ private import codeql.rust.frameworks.stdlib.Builtins as Builtins class NumericTypeBarrier extends DataFlow::Node { NumericTypeBarrier() { exists(StructType t, Struct s | - t = TypeInference::inferType(this.asExpr().getExpr()) and + t = TypeInference::inferType(this.asExpr()) and s = t.getStruct() | s instanceof Builtins::NumericType or @@ -32,7 +32,7 @@ class NumericTypeBarrier extends DataFlow::Node { class IntegralOrBooleanTypeBarrier extends DataFlow::Node { IntegralOrBooleanTypeBarrier() { exists(StructType t, Struct s | - t = TypeInference::inferType(this.asExpr().getExpr()) and + t = TypeInference::inferType(this.asExpr()) and s = t.getStruct() | s instanceof Builtins::IntegralType or diff --git a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll index bc487e42ef0..a7fb35d138b 100644 --- a/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/HardcodedCryptographicValueExtensions.qll @@ -63,7 +63,7 @@ module HardcodedCryptographicValue { * A literal, considered as a flow source. */ private class LiteralSource extends Source { - LiteralSource() { this.asExpr().getExpr() instanceof LiteralExpr } + LiteralSource() { this.asExpr() instanceof LiteralExpr } } /** @@ -75,8 +75,8 @@ module HardcodedCryptographicValue { */ private class ArrayListSource extends Source { ArrayListSource() { - this.asExpr().getExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr or - this.asExpr().getExpr().(ArrayRepeatExpr).getRepeatOperand() instanceof LiteralExpr + this.asExpr().(ArrayListExpr).getExpr(_) instanceof LiteralExpr or + this.asExpr().(ArrayRepeatExpr).getRepeatOperand() instanceof LiteralExpr } } @@ -106,7 +106,7 @@ module HardcodedCryptographicValue { exists(CallExprBase ce | ce.getStaticTarget().(Addressable).getCanonicalPath() = ["getrandom::fill", "getrandom::getrandom"] and - this.asExpr().getExpr().getParentNode*() = ce.getArgList().getArg(0) + this.asExpr().getParentNode*() = ce.getArgList().getArg(0) ) } } diff --git a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll index d5d15c821d8..8e9f855209e 100644 --- a/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/InsecureCookieExtensions.qll @@ -85,13 +85,13 @@ module InsecureCookie { cookieOptionalBarrier(summaryNode, attrib, arg) and // find a call and arg referenced by this optional barrier ce.getStaticTarget() = summaryNode.getSummarizedCallable() and - ce.getArg(arg) = argNode.asExpr().getExpr() and + ce.getArg(arg) = argNode.asExpr() and // check if the argument is always `true` ( if forex(DataFlow::Node argSourceNode, BooleanLiteralExpr argSourceValue | DataFlow::localFlow(argSourceNode, argNode) and - argSourceValue = argSourceNode.asExpr().getExpr() + argSourceValue = argSourceNode.asExpr() | argSourceValue.getTextValue() = "true" ) @@ -101,7 +101,7 @@ module InsecureCookie { // and find the node where this happens (we can't just use the flow summary node, since its // shared across all calls to the modeled function, we need a node specific to this call) ( - node.asExpr().getExpr() = ce.(MethodCallExpr).getReceiver() // e.g. `a` in `a.set_secure(true)` + node.asExpr() = ce.(MethodCallExpr).getReceiver() // e.g. `a` in `a.set_secure(true)` or exists(BasicBlock bb, int i | // associated SSA node diff --git a/rust/ql/lib/codeql/rust/security/SensitiveData.qll b/rust/ql/lib/codeql/rust/security/SensitiveData.qll index 4e6ba21a2d2..1b6abdd52fb 100644 --- a/rust/ql/lib/codeql/rust/security/SensitiveData.qll +++ b/rust/ql/lib/codeql/rust/security/SensitiveData.qll @@ -29,7 +29,7 @@ private class SensitiveDataCall extends SensitiveData { SensitiveDataCall() { exists(CallExprBase call, string name | - call = this.asExpr().getExpr() and + call = this.asExpr() and name = [ call.getStaticTarget().(Function).getName().getText(), @@ -50,7 +50,6 @@ private class SensitiveVariableAccess extends SensitiveData { SensitiveVariableAccess() { HeuristicNames::nameIndicatesSensitiveData(this.asExpr() - .getExpr() .(VariableAccess) .getVariable() .(Variable) @@ -69,7 +68,7 @@ private class SensitiveFieldAccess extends SensitiveData { SensitiveDataClassification classification; SensitiveFieldAccess() { - exists(FieldExpr fe | fieldExprParentField*(fe) = this.asExpr().getExpr() | + exists(FieldExpr fe | fieldExprParentField*(fe) = this.asExpr() | HeuristicNames::nameIndicatesSensitiveData(fe.getIdentifier().getText(), classification) ) } diff --git a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll index 9310999bd3d..2d097c0aa4c 100644 --- a/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/TaintedPathExtensions.qll @@ -8,7 +8,6 @@ private import codeql.rust.dataflow.TaintTracking private import codeql.rust.Concepts private import codeql.rust.dataflow.internal.DataFlowImpl private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides default sources, sinks and barriers for detecting path injection @@ -50,16 +49,16 @@ module TaintedPath { } } -private predicate sanitizerGuard(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - g.(SanitizerGuard::Range).checks(node, branch) +private predicate sanitizerGuard(AstNode g, Expr e, boolean branch) { + g.(SanitizerGuard::Range).checks(e, branch) } /** Provides a class for modeling new path safety checks. */ module SanitizerGuard { /** A data-flow node that checks that a path is safe to access. */ - abstract class Range extends CfgNodes::AstCfgNode { - /** Holds if this guard validates `node` upon evaluating to `branch`. */ - abstract predicate checks(Cfg::CfgNode node, boolean branch); + abstract class Range extends AstNode { + /** Holds if this guard validates `e` upon evaluating to `branch`. */ + abstract predicate checks(Expr e, boolean branch); } } @@ -67,15 +66,14 @@ module SanitizerGuard { * A check of the form `!strings.Contains(nd, "..")`, considered as a sanitizer guard for * path traversal. */ -private class DotDotCheck extends SanitizerGuard::Range, CfgNodes::MethodCallExprCfgNode { +private class DotDotCheck extends SanitizerGuard::Range, MethodCallExpr { DotDotCheck() { - this.getAstNode().(CallExprBase).getStaticTarget().(Addressable).getCanonicalPath() = + this.getStaticTarget().(Addressable).getCanonicalPath() = ["::contains", "::contains"] and - this.getArgument(0).getAstNode().(LiteralExpr).getTextValue() = - ["\"..\"", "\"../\"", "\"..\\\""] + this.getArg(0).(LiteralExpr).getTextValue() = ["\"..\"", "\"../\"", "\"..\\\""] } - override predicate checks(Cfg::CfgNode e, boolean branch) { + override predicate checks(Expr e, boolean branch) { e = this.getReceiver() and branch = false } diff --git a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll index 2f4898f6e9d..c6251563ea6 100644 --- a/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UncontrolledAllocationSizeExtensions.qll @@ -7,8 +7,6 @@ import rust private import codeql.rust.Concepts private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink -private import codeql.rust.controlflow.ControlFlowGraph as Cfg -private import codeql.rust.controlflow.CfgNodes as CfgNodes /** * Provides default sources, sinks and barriers for detecting uncontrolled @@ -45,23 +43,24 @@ module UncontrolledAllocationSize { /** * Holds if comparison `g` having result `branch` indicates an upper bound for the sub-expression - * `node`. For example when the comparison `x < 10` is true, we have an upper bound for `x`. + * `e`. For example when the comparison `x < 10` is true, we have an upper bound for `x`. */ - private predicate isUpperBoundCheck(CfgNodes::AstCfgNode g, Cfg::CfgNode node, boolean branch) { - exists(BinaryExpr cmp | g = cmp.getACfgNode() | - node = cmp.(RelationalOperation).getLesserOperand().getACfgNode() and - branch = true - or - node = cmp.(RelationalOperation).getGreaterOperand().getACfgNode() and - branch = false - or - cmp instanceof EqualsOperation and - [cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and - branch = true - or - cmp instanceof NotEqualsOperation and - [cmp.getLhs(), cmp.getRhs()].getACfgNode() = node and - branch = false - ) + private predicate isUpperBoundCheck(AstNode g, Expr e, boolean branch) { + g = + any(BinaryExpr cmp | + e = cmp.(RelationalOperation).getLesserOperand() and + branch = true + or + e = cmp.(RelationalOperation).getGreaterOperand() and + branch = false + or + cmp instanceof EqualsOperation and + [cmp.getLhs(), cmp.getRhs()] = e and + branch = true + or + cmp instanceof NotEqualsOperation and + [cmp.getLhs(), cmp.getRhs()] = e and + branch = false + ) } } diff --git a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll index bd91cde238f..076ed42edfb 100644 --- a/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/UseOfHttpExtensions.qll @@ -50,7 +50,7 @@ module UseOfHttp { * An HTTP string literal as a source. */ private class HttpStringLiteralAsSource extends Source { - HttpStringLiteralAsSource() { this.asExpr().getExpr() instanceof HttpStringLiteral } + HttpStringLiteralAsSource() { this.asExpr() instanceof HttpStringLiteral } } /** diff --git a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll index 7b6b6c801d7..bd29f0498b3 100644 --- a/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/WeakSensitiveDataHashingExtensions.qll @@ -189,7 +189,7 @@ class ModeledHashOperation extends Cryptography::CryptographicOperation::Range { exists(CallExpr call | sinkNode(input, "hasher-input") and call = input.(Node::FlowSummaryNode).getSinkElement().getCall() and - call = this.asExpr().getExpr() and + call = this.asExpr() and algorithmName = call.getFunction().(PathExpr).getPath().getQualifier().getText() ) } diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 750517708af..7c445bcbfd8 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -6,7 +6,6 @@ private import codeql.util.Unit private import rust private import codeql.rust.dataflow.DataFlow -private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.rust.security.Barriers as Barriers @@ -57,8 +56,8 @@ module RegexInjection { exists(CallExprBase call, Addressable a | call.getStaticTarget() = a and a.getCanonicalPath() = "::new" and - this.asExpr().getExpr() = call.getArg(0) and - not this.asExpr() instanceof LiteralExprCfgNode + this.asExpr() = call.getArg(0) and + not this.asExpr() instanceof LiteralExpr ) } } @@ -78,7 +77,6 @@ module RegexInjection { // A barrier is any call to a function named `escape`, in particular this // makes calls to `regex::escape` a barrier. this.asExpr() - .getExpr() .(CallExpr) .getFunction() .(PathExpr) diff --git a/rust/ql/lib/utils/test/InlineFlowTest.qll b/rust/ql/lib/utils/test/InlineFlowTest.qll index 9ba92f7757b..938559620fc 100644 --- a/rust/ql/lib/utils/test/InlineFlowTest.qll +++ b/rust/ql/lib/utils/test/InlineFlowTest.qll @@ -18,20 +18,20 @@ private import internal.InlineExpectationsTestImpl as InlineExpectationsTestImpl * representation of the path has `name` as a prefix. */ bindingset[name] -private predicate callTargetName(CallExprCfgNode call, string name) { - call.getFunction().(PathExprCfgNode).toString().matches(name + "%") +private predicate callTargetName(CallExpr call, string name) { + call.getFunction().(PathExpr).toString().matches(name + "%") } private module FlowTestImpl implements InputSig { predicate defaultSource(DataFlow::Node source) { callTargetName(source.asExpr(), "source") } predicate defaultSink(DataFlow::Node sink) { - any(CallExprCfgNode call | callTargetName(call, "sink")).getArgument(_) = sink.asExpr() + any(CallExpr call | callTargetName(call, "sink")).getAnArg() = sink.asExpr() } private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and - result = src.asExpr().(CallExprCfgNode).getArgument(0).toString() + result = src.asExpr().(CallExpr).getArg(0).toString() or sourceNode(src, _) and result = src.(Node::FlowSummaryNode).getSourceElement().getCall().getArg(0).toString() and diff --git a/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql b/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql index b1c56114c7b..1e3ae49f56f 100644 --- a/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql +++ b/rust/ql/src/queries/security/CWE-312/CleartextLogging.ql @@ -37,7 +37,7 @@ module CleartextLoggingConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { // flow from `a` to `&a` - node2.asExpr().getExpr().(RefExpr).getExpr() = node1.asExpr().getExpr() + node2.asExpr().(RefExpr).getExpr() = node1.asExpr() } predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { diff --git a/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql b/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql index dd09f2f8f20..d5aa87ad709 100644 --- a/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql +++ b/rust/ql/src/queries/security/CWE-312/CleartextStorageDatabase.ql @@ -36,7 +36,7 @@ module CleartextStorageDatabaseConfig implements DataFlow::ConfigSig { predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { // flow from `a` to `&a` - node2.asExpr().getExpr().(RefExpr).getExpr() = node1.asExpr().getExpr() + node2.asExpr().(RefExpr).getExpr() = node1.asExpr() } predicate observeDiffInformedIncrementalMode() { any() } diff --git a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql index fa8d9765d7c..b9bf80c9474 100644 --- a/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql +++ b/rust/ql/src/queries/security/CWE-825/AccessAfterLifetime.ql @@ -26,17 +26,17 @@ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { node instanceof AccessAfterLifetime::Source and // exclude cases with sources in macros, since these results are difficult to interpret - not node.asExpr().getExpr().isFromMacroExpansion() + not node.asExpr().isFromMacroExpansion() } predicate isSink(DataFlow::Node node) { node instanceof AccessAfterLifetime::Sink and // exclude cases with sinks in macros, since these results are difficult to interpret - not node.asExpr().getExpr().isFromMacroExpansion() and + not node.asExpr().isFromMacroExpansion() and // include only results inside `unsafe` blocks, as other results tend to be false positives ( - node.asExpr().getExpr().getEnclosingBlock*().isUnsafe() or - node.asExpr().getExpr().getEnclosingCallable().(Function).isUnsafe() + node.asExpr().getEnclosingBlock*().isUnsafe() or + node.asExpr().getEnclosingCallable().(Function).isUnsafe() ) } @@ -45,11 +45,9 @@ module AccessAfterLifetimeConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - exists(Variable target, DataFlow::Node sink | + exists(Variable target | + AccessAfterLifetime::sourceValueScope(source, target, _) and result = [target.getLocation(), source.getLocation()] - | - isSink(sink) and - AccessAfterLifetime::dereferenceAfterLifetime(source, sink, target) ) } } diff --git a/rust/ql/src/queries/unusedentities/UnusedValue.ql b/rust/ql/src/queries/unusedentities/UnusedValue.ql index 07e80b00b45..8ef6b85ebe7 100644 --- a/rust/ql/src/queries/unusedentities/UnusedValue.ql +++ b/rust/ql/src/queries/unusedentities/UnusedValue.ql @@ -21,7 +21,7 @@ where not write.isFromMacroExpansion() and not isAllowableUnused(v) and // SSA definitions are only created for live writes - not write = any(Ssa::WriteDefinition def).getWriteAccess().getAstNode() and + not write = any(Ssa::WriteDefinition def).getWriteAccess() and // avoid overlap with the unused variable query not isUnused(v) select write, "Variable $@ is assigned a value that is never used.", v, v.getText() diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 754bb53357a..420051f4ee1 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -120,7 +120,7 @@ private module SummaryModelGeneratorInput implements SummaryModelGeneratorInputS } QualifiedCallable getAsExprEnclosingCallable(NodeExtended node) { - result.getFunction() = node.asExpr().getScope() + result.getFunction() = node.asExpr().getEnclosingCfgScope() } Parameter asParameter(NodeExtended node) { result = node.asParameter() } diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected index 266b4c4be8c..68da00c4312 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected @@ -1,7 +1,8 @@ models edges | main.rs:9:13:9:19 | ...: ... | main.rs:10:11:10:11 | s | provenance | | -| main.rs:10:11:10:11 | s | main.rs:9:30:14:1 | { ... } | provenance | | +| main.rs:10:11:10:11 | s | main.rs:12:9:12:9 | s | provenance | | +| main.rs:12:9:12:9 | s | main.rs:9:30:14:1 | { ... } | provenance | | | main.rs:21:9:21:9 | s | main.rs:22:10:22:10 | s | provenance | | | main.rs:21:13:21:21 | source(...) | main.rs:21:9:21:9 | s | provenance | | | main.rs:26:9:26:9 | s | main.rs:27:22:27:22 | s | provenance | | @@ -16,6 +17,7 @@ nodes | main.rs:9:13:9:19 | ...: ... | semmle.label | ...: ... | | main.rs:9:30:14:1 | { ... } | semmle.label | { ... } | | main.rs:10:11:10:11 | s | semmle.label | s | +| main.rs:12:9:12:9 | s | semmle.label | s | | main.rs:17:10:17:18 | source(...) | semmle.label | source(...) | | main.rs:21:9:21:9 | s | semmle.label | s | | main.rs:21:13:21:21 | source(...) | semmle.label | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index a7df3fdf7b3..36a1c74018e 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -82,12 +82,14 @@ localStep | main.rs:57:9:57:9 | a | main.rs:57:9:57:9 | [SSA] a | | main.rs:57:9:57:9 | a | main.rs:57:9:57:9 | a | | main.rs:57:13:59:5 | loop { ... } | main.rs:57:9:57:9 | a | +| main.rs:57:18:59:5 | { ... } | main.rs:57:13:59:5 | loop { ... } | | main.rs:58:9:58:15 | break 1 | main.rs:57:13:59:5 | loop { ... } | | main.rs:58:15:58:15 | 1 | main.rs:58:9:58:15 | break 1 | | main.rs:61:9:61:9 | [SSA] b | main.rs:64:10:64:10 | b | | main.rs:61:9:61:9 | b | main.rs:61:9:61:9 | [SSA] b | | main.rs:61:9:61:9 | b | main.rs:61:9:61:9 | b | | main.rs:61:13:63:5 | loop { ... } | main.rs:61:9:61:9 | b | +| main.rs:61:18:63:5 | { ... } | main.rs:61:13:63:5 | loop { ... } | | main.rs:62:9:62:23 | break ... | main.rs:61:13:63:5 | loop { ... } | | main.rs:62:15:62:23 | source(...) | main.rs:62:9:62:23 | break ... | | main.rs:68:9:68:13 | mut i | main.rs:68:13:68:13 | i | @@ -131,6 +133,7 @@ localStep | main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | [SSA] a | | main.rs:92:9:92:9 | a | main.rs:92:9:92:9 | a | | main.rs:92:13:97:5 | 'block: { ... } | main.rs:92:9:92:9 | a | +| main.rs:93:14:95:9 | { ... } | main.rs:93:9:95:9 | if b {...} | | main.rs:94:13:94:26 | break 'block 1 | main.rs:92:13:97:5 | 'block: { ... } | | main.rs:94:26:94:26 | 1 | main.rs:94:13:94:26 | break 'block 1 | | main.rs:96:9:96:9 | 2 | main.rs:92:13:97:5 | 'block: { ... } | @@ -143,6 +146,7 @@ localStep | main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | [SSA] a | | main.rs:102:9:102:9 | a | main.rs:102:9:102:9 | a | | main.rs:102:13:107:5 | 'block: { ... } | main.rs:102:9:102:9 | a | +| main.rs:103:14:105:9 | { ... } | main.rs:103:9:105:9 | if b {...} | | main.rs:104:13:104:26 | break 'block 1 | main.rs:102:13:107:5 | 'block: { ... } | | main.rs:104:26:104:26 | 1 | main.rs:104:13:104:26 | break 'block 1 | | main.rs:106:9:106:22 | break 'block 2 | main.rs:102:13:107:5 | 'block: { ... } | @@ -713,6 +717,7 @@ localStep | main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | [SSA] name | | main.rs:480:16:480:19 | name | main.rs:480:16:480:19 | name | | main.rs:481:9:485:9 | if cond {...} | main.rs:480:31:486:5 | { ... } | +| main.rs:481:17:485:9 | { ... } | main.rs:481:9:485:9 | if cond {...} | | main.rs:482:17:482:17 | [SSA] n | main.rs:483:18:483:18 | n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | [SSA] n | | main.rs:482:17:482:17 | n | main.rs:482:17:482:17 | n | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 00640ed9aa4..7b6fd011d03 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -163,8 +163,9 @@ edges | main.rs:352:11:352:12 | s1 [A] | main.rs:356:11:356:12 | s1 [A] | provenance | | | main.rs:353:9:353:25 | ...::A(...) [A] | main.rs:353:24:353:24 | n | provenance | | | main.rs:353:24:353:24 | n | main.rs:353:35:353:35 | n | provenance | | -| main.rs:356:11:356:12 | s1 [A] | main.rs:357:9:357:25 | ...::A(...) [A] | provenance | | +| main.rs:356:11:356:12 | s1 [A] | main.rs:357:9:357:45 | ... \| ... [A] | provenance | | | main.rs:357:9:357:25 | ...::A(...) [A] | main.rs:357:24:357:24 | n | provenance | | +| main.rs:357:9:357:45 | ... \| ... [A] | main.rs:357:9:357:25 | ...::A(...) [A] | provenance | | | main.rs:357:24:357:24 | n | main.rs:357:55:357:55 | n | provenance | | | main.rs:368:9:368:10 | s1 [A] | main.rs:370:11:370:12 | s1 [A] | provenance | | | main.rs:368:14:368:26 | A(...) [A] | main.rs:368:9:368:10 | s1 [A] | provenance | | @@ -173,8 +174,9 @@ edges | main.rs:370:11:370:12 | s1 [A] | main.rs:374:11:374:12 | s1 [A] | provenance | | | main.rs:371:9:371:12 | A(...) [A] | main.rs:371:11:371:11 | n | provenance | | | main.rs:371:11:371:11 | n | main.rs:371:22:371:22 | n | provenance | | -| main.rs:374:11:374:12 | s1 [A] | main.rs:375:9:375:12 | A(...) [A] | provenance | | +| main.rs:374:11:374:12 | s1 [A] | main.rs:375:9:375:19 | ... \| ... [A] | provenance | | | main.rs:375:9:375:12 | A(...) [A] | main.rs:375:11:375:11 | n | provenance | | +| main.rs:375:9:375:19 | ... \| ... [A] | main.rs:375:9:375:12 | A(...) [A] | provenance | | | main.rs:375:11:375:11 | n | main.rs:375:29:375:29 | n | provenance | | | main.rs:389:9:389:10 | s1 [C] | main.rs:393:11:393:12 | s1 [C] | provenance | | | main.rs:389:14:391:5 | ...::C {...} [C] | main.rs:389:9:389:10 | s1 [C] | provenance | | @@ -183,8 +185,9 @@ edges | main.rs:393:11:393:12 | s1 [C] | main.rs:397:11:397:12 | s1 [C] | provenance | | | main.rs:394:9:394:38 | ...::C {...} [C] | main.rs:394:36:394:36 | n | provenance | | | main.rs:394:36:394:36 | n | main.rs:394:48:394:48 | n | provenance | | -| main.rs:397:11:397:12 | s1 [C] | main.rs:398:9:398:38 | ...::C {...} [C] | provenance | | +| main.rs:397:11:397:12 | s1 [C] | main.rs:398:9:398:71 | ... \| ... [C] | provenance | | | main.rs:398:9:398:38 | ...::C {...} [C] | main.rs:398:36:398:36 | n | provenance | | +| main.rs:398:9:398:71 | ... \| ... [C] | main.rs:398:9:398:38 | ...::C {...} [C] | provenance | | | main.rs:398:36:398:36 | n | main.rs:398:81:398:81 | n | provenance | | | main.rs:409:9:409:10 | s1 [C] | main.rs:413:11:413:12 | s1 [C] | provenance | | | main.rs:409:14:411:5 | C {...} [C] | main.rs:409:9:409:10 | s1 [C] | provenance | | @@ -193,8 +196,9 @@ edges | main.rs:413:11:413:12 | s1 [C] | main.rs:417:11:417:12 | s1 [C] | provenance | | | main.rs:414:9:414:24 | C {...} [C] | main.rs:414:22:414:22 | n | provenance | | | main.rs:414:22:414:22 | n | main.rs:414:34:414:34 | n | provenance | | -| main.rs:417:11:417:12 | s1 [C] | main.rs:418:9:418:24 | C {...} [C] | provenance | | +| main.rs:417:11:417:12 | s1 [C] | main.rs:418:9:418:43 | ... \| ... [C] | provenance | | | main.rs:418:9:418:24 | C {...} [C] | main.rs:418:22:418:22 | n | provenance | | +| main.rs:418:9:418:43 | ... \| ... [C] | main.rs:418:9:418:24 | C {...} [C] | provenance | | | main.rs:418:22:418:22 | n | main.rs:418:53:418:53 | n | provenance | | | main.rs:430:9:430:12 | arr1 [element] | main.rs:431:14:431:17 | arr1 [element] | provenance | | | main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | | @@ -443,6 +447,7 @@ nodes | main.rs:353:35:353:35 | n | semmle.label | n | | main.rs:356:11:356:12 | s1 [A] | semmle.label | s1 [A] | | main.rs:357:9:357:25 | ...::A(...) [A] | semmle.label | ...::A(...) [A] | +| main.rs:357:9:357:45 | ... \| ... [A] | semmle.label | ... \| ... [A] | | main.rs:357:24:357:24 | n | semmle.label | n | | main.rs:357:55:357:55 | n | semmle.label | n | | main.rs:368:9:368:10 | s1 [A] | semmle.label | s1 [A] | @@ -454,6 +459,7 @@ nodes | main.rs:371:22:371:22 | n | semmle.label | n | | main.rs:374:11:374:12 | s1 [A] | semmle.label | s1 [A] | | main.rs:375:9:375:12 | A(...) [A] | semmle.label | A(...) [A] | +| main.rs:375:9:375:19 | ... \| ... [A] | semmle.label | ... \| ... [A] | | main.rs:375:11:375:11 | n | semmle.label | n | | main.rs:375:29:375:29 | n | semmle.label | n | | main.rs:389:9:389:10 | s1 [C] | semmle.label | s1 [C] | @@ -465,6 +471,7 @@ nodes | main.rs:394:48:394:48 | n | semmle.label | n | | main.rs:397:11:397:12 | s1 [C] | semmle.label | s1 [C] | | main.rs:398:9:398:38 | ...::C {...} [C] | semmle.label | ...::C {...} [C] | +| main.rs:398:9:398:71 | ... \| ... [C] | semmle.label | ... \| ... [C] | | main.rs:398:36:398:36 | n | semmle.label | n | | main.rs:398:81:398:81 | n | semmle.label | n | | main.rs:409:9:409:10 | s1 [C] | semmle.label | s1 [C] | @@ -476,6 +483,7 @@ nodes | main.rs:414:34:414:34 | n | semmle.label | n | | main.rs:417:11:417:12 | s1 [C] | semmle.label | s1 [C] | | main.rs:418:9:418:24 | C {...} [C] | semmle.label | C {...} [C] | +| main.rs:418:9:418:43 | ... \| ... [C] | semmle.label | ... \| ... [C] | | main.rs:418:22:418:22 | n | semmle.label | n | | main.rs:418:53:418:53 | n | semmle.label | n | | main.rs:430:9:430:12 | arr1 [element] | semmle.label | arr1 [element] | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql index 09b4ab5bf90..9e46b7c3ad2 100644 --- a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.ql @@ -16,7 +16,7 @@ module MyFlowConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { any(CallExpr call | call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() + ).getArgList().getAnArg() = sink.asExpr() } predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) { diff --git a/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql b/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql index 0d5e748f80e..6372e81555d 100644 --- a/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql +++ b/rust/ql/test/library-tests/sensitivedata/SensitiveData.ql @@ -13,7 +13,7 @@ module SensitiveDataConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { any(CallExpr call | call.getFunction().(PathExpr).getPath().getSegment().getIdentifier().getText() = "sink" - ).getArgList().getAnArg() = sink.asExpr().getExpr() + ).getArgList().getAnArg() = sink.asExpr() } } diff --git a/rust/ql/test/library-tests/variables/Ssa.ql b/rust/ql/test/library-tests/variables/Ssa.ql index d93a1f13b64..8ca9bd15e66 100644 --- a/rust/ql/test/library-tests/variables/Ssa.ql +++ b/rust/ql/test/library-tests/variables/Ssa.ql @@ -10,17 +10,17 @@ query predicate definition(Ssa::Definition def, Variable v) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v } -query predicate read(Ssa::Definition def, Variable v, CfgNode read) { +query predicate read(Ssa::Definition def, Variable v, Expr read) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and read = def.getARead() } -query predicate firstRead(Ssa::Definition def, Variable v, CfgNode read) { +query predicate firstRead(Ssa::Definition def, Variable v, Expr read) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and read = def.getAFirstRead() } -query predicate adjacentReads(Ssa::Definition def, Variable v, CfgNode read1, CfgNode read2) { +query predicate adjacentReads(Ssa::Definition def, Variable v, Expr read1, Expr read2) { toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and def.hasAdjacentReads(read1, read2) @@ -54,4 +54,4 @@ query predicate ultimateDef(Ssa::Definition def, Definition ult) { ult != def } -query predicate assigns(Ssa::WriteDefinition def, CfgNode value) { def.assigns(value) } +query predicate assigns(Ssa::WriteDefinition def, Expr value) { def.assigns(value) } From d2bb53a81ee004e4830712253a9ea0daae882a15 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 19 Nov 2025 13:31:24 +0100 Subject: [PATCH 872/965] Rust: Run codegen --- rust/ql/.generated.list | 1 - rust/ql/.gitattributes | 1 - rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 5ed2894e273..fc9e0d0f30c 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -235,7 +235,6 @@ lib/codeql/rust/elements/internal/AwaitExprConstructor.qll 44ff1653e73d5b9f6885c lib/codeql/rust/elements/internal/BecomeExprConstructor.qll ba073aaa256cb8827a0307c3128d50f62b11aac0b1f324e48c95f30351a9b942 3a787ded505c3158fa4f4923f66e8ecdcb7b5f86f27f64c5412dc32dca031f18 lib/codeql/rust/elements/internal/BinaryExprConstructor.qll 7f9b17757f78b9fb7c46e21d2040a77fa50083bef4911c8464991c3d1ad91d87 a59390cd8e896c0bfbdc9ba0674e06d980ffcefa710fbc9886be52ed427e9717 lib/codeql/rust/elements/internal/BlockExprConstructor.qll 438337c807645e98a01440f3f4610d68b0567ba15c8f51dc43bf5a30c9af3696 48ce7a546910c884619762349b8ada9836284f8008298fdb0070a38f7ddf25a0 -lib/codeql/rust/elements/internal/BlockExprImpl.qll 36ac09e4a6eeeec22919b62b1d004bdb5bb2527e67932c308aec383a770768d6 3b4b2a2014f6fe075c63a2d633b297566b548ef2e4343cadf067a9edbcadc876 lib/codeql/rust/elements/internal/BoxPatConstructor.qll 153f110ba25fd6c889092bfd16f73bb610fa60d6e0c8965d5f44d2446fcd48a2 9324cf0d8aa29945551bf8ab64801d598f57aab8cd4e19bcd4e9ef8a4a4e06eb lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf925a119c945632ee883c6f5ebb9a27003c6a8d250afd9 bb77e66b04bb9489340e7506931559b94285c6904b6f9d2f83b214cba4f3cfd5 lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index bde61270e6a..99728972ec7 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -237,7 +237,6 @@ /lib/codeql/rust/elements/internal/BecomeExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BinaryExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BlockExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/BlockExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BoxPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll index 6fcba9900be..9e8576dc440 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BlockExprImpl.qll @@ -11,6 +11,7 @@ private import codeql.rust.elements.internal.generated.BlockExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A block expression. For example: * ```rust From e4853ab0600795f1983fadff531cab7b717fb623 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 19 Nov 2025 13:18:13 +0100 Subject: [PATCH 873/965] Add change note --- rust/ql/lib/change-notes/2025-11-19-dataflow-ast.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-11-19-dataflow-ast.md diff --git a/rust/ql/lib/change-notes/2025-11-19-dataflow-ast.md b/rust/ql/lib/change-notes/2025-11-19-dataflow-ast.md new file mode 100644 index 00000000000..04883ef37d5 --- /dev/null +++ b/rust/ql/lib/change-notes/2025-11-19-dataflow-ast.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The type `DataFlow::Node` is now based directly on the AST instead of the CFG, which means that predicates like `asExpr()` return AST nodes instead of CFG nodes. \ No newline at end of file From d4fdf956a02f0e2549baa50d6de41e851db75589 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 20 Nov 2025 11:03:53 +0100 Subject: [PATCH 874/965] Address review comments --- rust/ql/lib/codeql/rust/dataflow/internal/Node.qll | 2 +- .../codeql/rust/elements/internal/ParenExprImpl.qll | 13 +++++++++++++ .../rust/security/AccessAfterLifetimeExtensions.qll | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index 421f613b5c4..2191714d6a1 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -118,7 +118,7 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { } } -/** A data flow node that corresponds directly to a CFG node for an AST node. */ +/** A data flow node that corresponds directly to an AST node. */ abstract class AstNodeNode extends Node { AstNode n; diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll index 158d20e0703..f52fd3aa067 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll @@ -24,6 +24,19 @@ module Impl { override string toStringImpl() { result = "(" + this.getExpr().toAbbreviatedString() + ")" or + // In macro expansions such as + // + // ```rust + // [ + // "a", + // "b", + // #[cfg(target_os = "macos")] + // "c", + // ] + // ``` + // + // the last array element will give rise to an empty `ParenExpr` when not + // compiling for macos. not exists(this.getExpr().toAbbreviatedString()) and result = "(...)" } diff --git a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll index 6e8077ebae0..06438fef0c8 100644 --- a/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll @@ -40,7 +40,7 @@ module AccessAfterLifetime { abstract class Barrier extends DataFlow::Node { } /** - * Holds if the value `source` points to accesses a variable `target` with scope `scope`. + * Holds if the value pointed to by `source` accesses a variable `target` with scope `scope`. */ pragma[nomagic] predicate sourceValueScope(Source source, Variable target, BlockExpr scope) { From 62ee6d3a33f7245d1c8f67164d4ace9fd02931e3 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:46:42 +0000 Subject: [PATCH 875/965] Made changes requested by reviewers - bounded() for range checking, style and better comments --- .../java/security/SensitiveLoggingQuery.qll | 111 +++++------------- ...-11-17-sensitive-logging-new-sanitizers.md | 2 +- .../query-tests/security/CWE-532/Test.java | 2 + 3 files changed, 35 insertions(+), 80 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 243fc71ea32..abd2da7ec21 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -6,7 +6,7 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.SensitiveActions import semmle.code.java.frameworks.android.Compose private import semmle.code.java.security.Sanitizers -import semmle.code.java.Constants +private import semmle.code.java.dataflow.RangeAnalysis /** A data flow source node for sensitive logging sources. */ abstract class SensitiveLoggerSource extends DataFlow::Node { } @@ -49,37 +49,36 @@ private class TypeType extends RefType { * * It allows for substring operations taking the first N (or last N, for Kotlin) characters, limited to 7 or fewer. */ -private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { - SensitiveLoggerSanitizerCalled() { +private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { + PrefixSuffixBarrier() { exists(MethodCall mc, Method m, int limit | limit = 7 and - mc.getMethod() = m and + mc.getMethod() = m + | + // substring in Java ( - // substring in Java + m.hasQualifiedName("java.lang", "String", "substring") or + m.hasQualifiedName("java.lang", "StringBuffer", "substring") or + m.hasQualifiedName("java.lang", "StringBuilder", "substring") + ) and + ( + twoArgLimit(mc, limit, false) or + singleArgLimit(mc, limit, false) + ) and + this.asExpr() = mc.getQualifier() + or + // Kotlin string operations, which use extension methods (so the string is the first argument) + ( + m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and ( - m.hasQualifiedName("java.lang", "String", "substring") or - m.hasQualifiedName("java.lang", "StringBuffer", "substring") or - m.hasQualifiedName("java.lang", "StringBuilder", "substring") - ) and - ( - twoArgLimit(mc, limit, false) or - singleArgLimit(mc, limit, false) - ) and - this.asExpr() = mc.getQualifier() - or - // Kotlin string operations, which use extension methods (so the string is the first argument) - ( - m.hasQualifiedName("kotlin.text", "StringsKt", "substring") and - ( - twoArgLimit(mc, limit, true) or - singleArgLimit(mc, limit, true) - ) - or - m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and + twoArgLimit(mc, limit, true) or singleArgLimit(mc, limit, true) - ) and - this.asExpr() = mc.getArgument(0) - ) + ) + or + m.hasQualifiedName("kotlin.text", "StringsKt", ["take", "takeLast"]) and + singleArgLimit(mc, limit, true) + ) and + this.asExpr() = mc.getArgument(0) ) } } @@ -87,72 +86,28 @@ private class SensitiveLoggerSanitizerCalled extends SensitiveLoggerBarrier { /** A predicate to check single-argument method calls for a constant integer below a set limit. */ bindingset[limit, isKotlin] private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { - exists(int argIndex, int staticInt | + exists(int argIndex | (if isKotlin = true then argIndex = 1 else argIndex = 0) and - ( - staticInt <= limit and - staticInt > 0 and - mc.getArgument(argIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = - staticInt - or - exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | - source.asExpr() = cte and - cte.getIntValue() = staticInt and - sink.asExpr() = mc.getArgument(argIndex) and - IntegerToArgFlow::flow(source, sink) - ) - ) + bounded(mc.getArgument(argIndex), any(ZeroBound z), limit, true, _) ) } /** A predicate to check two-argument method calls for zero and a constant integer below a set limit. */ bindingset[limit, isKotlin] private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { - exists(int firstArgIndex, int secondArgIndex, int staticInt | - staticInt <= limit and - staticInt > 0 and + exists(int firstArgIndex, int secondArgIndex | ( isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 or isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 ) and mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and - ( - mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = - staticInt - or - exists(CompileTimeConstantExpr cte, DataFlow::Node source, DataFlow::Node sink | - source.asExpr() = cte and - cte.getIntValue() = staticInt and - sink.asExpr() = mc.getArgument(secondArgIndex) and - IntegerToArgFlow::flow(source, sink) - ) - ) + bounded(mc.getArgument(secondArgIndex), any(ZeroBound z), limit, true, _) ) } -/** A data-flow configuration for identifying flow from a constant integer to a use in a method argument. */ -private module IntegerToArgConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.asExpr().getUnderlyingExpr() instanceof CompileTimeConstantExpr and - source.asExpr().getType() instanceof IntegralType and - source.asExpr().(CompileTimeConstantExpr).getIntValue() > 0 - } - - predicate isSink(DataFlow::Node sink) { - exists(MethodCall mc | - sink.asExpr() = mc.getAnArgument() and - sink.asExpr().getType() instanceof IntegralType - ) - } - - predicate isBarrier(DataFlow::Node sanitizer) { none() } - - predicate isBarrierIn(DataFlow::Node node) { none() } -} - -private class GenericSanitizer extends SensitiveLoggerBarrier { - GenericSanitizer() { +private class DefaultSensitiveLoggerBarrier extends SensitiveLoggerBarrier { + DefaultSensitiveLoggerBarrier() { this.asExpr() instanceof LiveLiteral or this instanceof SimpleTypeSanitizer or this.getType() instanceof TypeType @@ -173,5 +128,3 @@ module SensitiveLoggerConfig implements DataFlow::ConfigSig { } module SensitiveLoggerFlow = TaintTracking::Global; - -module IntegerToArgFlow = TaintTracking::Global; diff --git a/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md b/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md index 2e744e2ab2c..a3266e4d9e6 100644 --- a/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md +++ b/java/ql/src/change-notes/2025-11-17-sensitive-logging-new-sanitizers.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Calls to `substring` (for Java), `take` (for Kotlin) and similar functions, when called with a fixed length less than or equal to 7, are now treated as sanitizers for the `java/sensitive-log` query. \ No newline at end of file +* Operations that extract only a fixed-length prefix or suffix of a string (for example, `substring` in Java or `take` in Kotlin), when limited to a length of at most 7 characters, are now treated as sanitizers for the `java/sensitive-log` query. \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-532/Test.java b/java/ql/test/query-tests/security/CWE-532/Test.java index 77086bf31d5..2eed3e79342 100644 --- a/java/ql/test/query-tests/security/CWE-532/Test.java +++ b/java/ql/test/query-tests/security/CWE-532/Test.java @@ -11,5 +11,7 @@ class Test { logger.error("Auth failed for: " + stringTokenizer); // Safe logger.error("Auth failed for: " + authToken.substring(4) + "..."); // Safe logger.error("Auth failed for: " + authToken.substring(0,4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(1,5) + "..."); // $ Alert + logger.error("Auth failed for: " + authToken.substring(0,8) + "..."); // $ Alert } } From 132f02c51bb0073479383441d369e2da016d7ebe Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 20 Nov 2025 14:34:02 +0100 Subject: [PATCH 876/965] Update rust/ql/lib/codeql/rust/internal/PathResolution.qll Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rust/ql/lib/codeql/rust/internal/PathResolution.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index f4349f79327..491f1572f26 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -27,7 +27,7 @@ * * So it may seem that path resolution and variable resolution must happen in mutual * recursion, but we would like to keep the inherently global path resolution logic - * separate from the inherently local variable resolution logic. We acheive this by + * separate from the inherently local variable resolution logic. We achieve this by * * - First computing global path resolution, where variable shadowing is ignored, * exposed as the internal predicate `resolvePathIgnoreVariableShadowing`. From 29a5b27b139790907cb9c63478fd4d6cb28b091f Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:31:56 +0000 Subject: [PATCH 877/965] Removed bounds checking and only using literals - bounded() predicate did not work --- .../code/java/security/SensitiveLoggingQuery.qll | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index abd2da7ec21..dee81770514 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -54,7 +54,7 @@ private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { exists(MethodCall mc, Method m, int limit | limit = 7 and mc.getMethod() = m - | + | // substring in Java ( m.hasQualifiedName("java.lang", "String", "substring") or @@ -86,15 +86,17 @@ private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { /** A predicate to check single-argument method calls for a constant integer below a set limit. */ bindingset[limit, isKotlin] private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { - exists(int argIndex | - (if isKotlin = true then argIndex = 1 else argIndex = 0) and - bounded(mc.getArgument(argIndex), any(ZeroBound z), limit, true, _) + mc.getNumArgument() = 1 and + exists(int firstArgIndex | + (if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0) and + mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= limit ) } /** A predicate to check two-argument method calls for zero and a constant integer below a set limit. */ bindingset[limit, isKotlin] private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { + mc.getNumArgument() = 2 and exists(int firstArgIndex, int secondArgIndex | ( isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 @@ -102,7 +104,7 @@ private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 ) and mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and - bounded(mc.getArgument(secondArgIndex), any(ZeroBound z), limit, true, _) + mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= limit ) } From e904520779445223b7d51d8062960dc401232474 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:34:42 +0000 Subject: [PATCH 878/965] Fixed formatting --- .../security/CWE-532/SensitiveLogInfo.expected | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected index e32ff5654e2..3827d2894ad 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected @@ -1,15 +1,28 @@ #select | Test.java:7:21:7:53 | ... + ... | Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | This $@ is written to a log file. | Test.java:7:46:7:53 | password | potentially sensitive information | | Test.java:8:22:8:52 | ... + ... | Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | This $@ is written to a log file. | Test.java:8:44:8:52 | authToken | potentially sensitive information | +| Test.java:14:22:14:75 | ... + ... | Test.java:14:44:14:52 | authToken : String | Test.java:14:22:14:75 | ... + ... | This $@ is written to a log file. | Test.java:14:44:14:52 | authToken | potentially sensitive information | +| Test.java:15:22:15:75 | ... + ... | Test.java:15:44:15:52 | authToken : String | Test.java:15:22:15:75 | ... + ... | This $@ is written to a log file. | Test.java:15:44:15:52 | authToken | potentially sensitive information | edges | Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | provenance | Sink:MaD:2 | | Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:14:44:14:52 | authToken : String | Test.java:14:44:14:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:14:44:14:67 | substring(...) : String | Test.java:14:22:14:75 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:15:44:15:52 | authToken : String | Test.java:15:44:15:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:15:44:15:67 | substring(...) : String | Test.java:15:22:15:75 | ... + ... | provenance | Sink:MaD:1 | models | 1 | Sink: org.apache.logging.log4j; Logger; true; error; (String); ; Argument[0]; log-injection; manual | | 2 | Sink: org.apache.logging.log4j; Logger; true; info; (String); ; Argument[0]; log-injection; manual | +| 3 | Summary: java.lang; String; false; substring; ; ; Argument[this]; ReturnValue; taint; manual | nodes | Test.java:7:21:7:53 | ... + ... | semmle.label | ... + ... | | Test.java:7:46:7:53 | password : String | semmle.label | password : String | | Test.java:8:22:8:52 | ... + ... | semmle.label | ... + ... | | Test.java:8:44:8:52 | authToken : String | semmle.label | authToken : String | +| Test.java:14:22:14:75 | ... + ... | semmle.label | ... + ... | +| Test.java:14:44:14:52 | authToken : String | semmle.label | authToken : String | +| Test.java:14:44:14:67 | substring(...) : String | semmle.label | substring(...) : String | +| Test.java:15:22:15:75 | ... + ... | semmle.label | ... + ... | +| Test.java:15:44:15:52 | authToken : String | semmle.label | authToken : String | +| Test.java:15:44:15:67 | substring(...) : String | semmle.label | substring(...) : String | subpaths From ce136684e64223f7d6a75df473132dcbe6c9c242 Mon Sep 17 00:00:00 2001 From: aegilops <41705651+aegilops@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:39:32 +0000 Subject: [PATCH 879/965] Fixed formatting --- .../semmle/code/java/security/SensitiveLoggingQuery.qll | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index dee81770514..b4eecdcdb4c 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -54,7 +54,7 @@ private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { exists(MethodCall mc, Method m, int limit | limit = 7 and mc.getMethod() = m - | + | // substring in Java ( m.hasQualifiedName("java.lang", "String", "substring") or @@ -89,7 +89,8 @@ private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { mc.getNumArgument() = 1 and exists(int firstArgIndex | (if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0) and - mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= limit + mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= + limit ) } @@ -104,7 +105,8 @@ private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 ) and mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and - mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= limit + mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= + limit ) } From 30d68d8906af22ba374b566fc8e5d5aabec09f47 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 7 Nov 2025 11:33:52 +0100 Subject: [PATCH 880/965] Java: Add missing deprecated annotations. --- java/ql/lib/semmle/code/java/dataflow/SSA.qll | 14 +++++++------- .../semmle/code/java/dataflow/internal/SsaImpl.qll | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index 233b083a4eb..a627904174b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -193,7 +193,7 @@ VarRead ssaGetAFirstUse(SsaDefinition def) { firstUse(def, result) } * * An SSA variable. */ -class SsaVariable extends Definition { +deprecated class SsaVariable extends Definition { /** Gets the SSA source variable underlying this SSA variable. */ SsaSourceVariable getSourceVariable() { result = super.getSourceVariable() } @@ -203,7 +203,7 @@ class SsaVariable extends Definition { * Gets the `ControlFlowNode` at which this SSA variable is defined. */ pragma[nomagic] - ControlFlowNode getCfgNode() { + deprecated ControlFlowNode getCfgNode() { exists(BasicBlock bb, int i | this.definesAt(_, bb, i) and // phi nodes are inserted at position `-1` @@ -225,7 +225,7 @@ class SsaVariable extends Definition { * * Gets an access of this SSA variable. */ - VarRead getAUse() { result = getAUse(this) } + deprecated VarRead getAUse() { result = getAUse(this) } /** * DEPRECATED: Use `ssaGetAFirstUse(SsaDefinition)` instead. @@ -272,7 +272,7 @@ class SsaVariable extends Definition { * * An SSA variable that either explicitly or implicitly updates the variable. */ -class SsaUpdate extends SsaVariable instanceof WriteDefinition { +deprecated class SsaUpdate extends SsaVariable instanceof WriteDefinition { SsaUpdate() { not this instanceof SsaImplicitInit } } @@ -281,7 +281,7 @@ class SsaUpdate extends SsaVariable instanceof WriteDefinition { * * An SSA variable that is defined by a `VariableUpdate`. */ -class SsaExplicitUpdate extends SsaUpdate { +deprecated class SsaExplicitUpdate extends SsaUpdate { private VariableUpdate upd; SsaExplicitUpdate() { ssaExplicitUpdate(this, upd) } @@ -409,7 +409,7 @@ deprecated class SsaUncertainImplicitUpdate extends SsaImplicitUpdate { * An SSA variable that is defined by its initial value in the callable. This * includes initial values of parameters, fields, and closure variables. */ -class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { +deprecated class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { SsaImplicitInit() { ssaImplicitInit(this) } override string toString() { result = "SSA init(" + this.getSourceVariable() + ")" } @@ -422,7 +422,7 @@ class SsaImplicitInit extends SsaVariable instanceof WriteDefinition { * * Holds if the SSA variable is a parameter defined by its initial value in the callable. */ - predicate isParameterDefinition(Parameter p) { + deprecated predicate isParameterDefinition(Parameter p) { this.getSourceVariable() = TLocalVar(p.getCallable(), p) and p.getCallable().getBody().getControlFlowNode() = this.getCfgNode() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 21843f3e93b..624f82fd341 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -244,7 +244,7 @@ final class UncertainWriteDefinition = Impl::UncertainWriteDefinition; final class PhiNode = Impl::PhiNode; -predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { +deprecated predicate ssaExplicitUpdate(SsaUpdate def, VariableUpdate upd) { exists(SsaSourceVariable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and certainVariableUpdate(v, upd.getControlFlowNode(), bb, i) and @@ -259,7 +259,7 @@ deprecated predicate ssaUncertainImplicitUpdate(SsaImplicitUpdate def) { ) } -predicate ssaImplicitInit(WriteDefinition def) { +deprecated predicate ssaImplicitInit(WriteDefinition def) { exists(SsaSourceVariable v, BasicBlock bb, int i | def.definesAt(v, bb, i) and hasEntryDef(v, bb) and @@ -275,7 +275,7 @@ deprecated predicate ssaDefReachesUncertainDef(TrackedSsaDef def, SsaUncertainIm Impl::uncertainWriteDefinitionInput(redef, def) } -VarRead getAUse(Definition def) { +deprecated VarRead getAUse(Definition def) { exists(SsaSourceVariable v, BasicBlock bb, int i | Impl::ssaDefReachesRead(v, def, bb, i) and result.getControlFlowNode() = bb.getNode(i) and @@ -283,7 +283,7 @@ VarRead getAUse(Definition def) { ) } -predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { +deprecated predicate ssaDefReachesEndOfBlock(BasicBlock bb, Definition def) { Impl::ssaDefReachesEndOfBlock(bb, def, _) } From e76e7ab26a16a6eff8e25fd43b4008cf91b4764d Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 13 Nov 2025 14:31:02 +0100 Subject: [PATCH 881/965] C#: Read from dependency directory from extractor option. --- .../DependencyDirectory.cs | 62 +++++++++++++++++++ .../NugetExeWrapper.cs | 6 +- .../NugetPackageRestorer.cs | 12 ++-- .../Semmle.Util/EnvironmentVariables.cs | 10 +++ 4 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs new file mode 100644 index 00000000000..8efcb5d7d78 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using Semmle.Util; +using Semmle.Util.Logging; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + /// + /// A directory used for storing fetched dependencies. + /// When a specific directory is set via the dependency directory extractor option, + /// we store dependencies in that directory for caching purposes. + /// Otherwise, we create a temporary directory that is deleted upon disposal. + /// + public sealed class DependencyDirectory : IDisposable + { + private readonly string userReportedDirectoryPurpose; + private readonly ILogger logger; + private readonly bool attemptCleanup; + + public DirectoryInfo DirInfo { get; } + + public DependencyDirectory(string subfolderName, string userReportedDirectoryPurpose, ILogger logger) + { + this.logger = logger; + this.userReportedDirectoryPurpose = userReportedDirectoryPurpose; + + string path; + if (EnvironmentVariables.GetBuildlessDependencyDir() is string dir) + { + path = dir; + attemptCleanup = false; + } + else + { + path = FileUtils.GetTemporaryWorkingDirectory(out _); + attemptCleanup = true; + } + DirInfo = new DirectoryInfo(Path.Join(path, subfolderName)); + DirInfo.Create(); + } + + public void Dispose() + { + if (!attemptCleanup) + { + logger.LogInfo($"Keeping {userReportedDirectoryPurpose} directory {DirInfo.FullName} for possible caching purposes."); + return; + } + + try + { + DirInfo.Delete(true); + } + catch (Exception exc) + { + logger.LogInfo($"Couldn't delete {userReportedDirectoryPurpose} directory {exc.Message}"); + } + } + + public override string ToString() => DirInfo.FullName.ToString(); + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs index c77daa8899c..10d89b1e009 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs @@ -25,15 +25,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// /// The computed packages directory. - /// This will be in the Temp location + /// This will be in the Cached or Temp location /// so as to not trample the source tree. /// - private readonly TemporaryDirectory packageDirectory; + private readonly DependencyDirectory packageDirectory; /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, TemporaryDirectory packageDirectory, Semmle.Util.Logging.ILogger logger) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index e0e1bc649fa..e2e548a46a9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -24,12 +24,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private readonly IDotNet dotnet; private readonly DependabotProxy? dependabotProxy; private readonly IDiagnosticsWriter diagnosticsWriter; - private readonly TemporaryDirectory legacyPackageDirectory; - private readonly TemporaryDirectory missingPackageDirectory; + private readonly DependencyDirectory legacyPackageDirectory; + private readonly DependencyDirectory missingPackageDirectory; private readonly ILogger logger; private readonly ICompilationInfoContainer compilationInfoContainer; - public TemporaryDirectory PackageDirectory { get; } + public DependencyDirectory PackageDirectory { get; } public NugetPackageRestorer( FileProvider fileProvider, @@ -48,9 +48,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching this.logger = logger; this.compilationInfoContainer = compilationInfoContainer; - PackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("packages"), "package", logger); - legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("legacypackages"), "legacy package", logger); - missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("missingpackages"), "missing package", logger); + PackageDirectory = new DependencyDirectory("packages", "package", logger); + legacyPackageDirectory = new DependencyDirectory("legacypackages", "legacy package", logger); + missingPackageDirectory = new DependencyDirectory("missingpackages", "missing package", logger); } public string? TryRestore(string package) diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index edce64a53fe..9f1519653de 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -76,5 +76,15 @@ namespace Semmle.Util { return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OVERLAY_BASE_METADATA_OUT"); } + + /// + /// If set, returns the directory where buildless dependencies should be stored. + /// This is needed for caching dependencies. + /// + /// + public static string? GetBuildlessDependencyDir() + { + return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"); + } } } From 1256ccf2ebe769bf5b9167a772801590d7249443 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Thu, 13 Nov 2025 14:33:25 +0100 Subject: [PATCH 882/965] C#: Add extractor option for buildless dependency directory. --- csharp/codeql-extractor.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/csharp/codeql-extractor.yml b/csharp/codeql-extractor.yml index da7d665f7a7..8cba8f18e47 100644 --- a/csharp/codeql-extractor.yml +++ b/csharp/codeql-extractor.yml @@ -74,3 +74,8 @@ options: [EXPERIMENTAL] The value is a path to the MsBuild binary log file that should be extracted. This option only works when `--build-mode none` is also specified. type: array + buildless_dependency_dir: + title: The path where buildless (standalone) extraction should keep dependencies. + description: > + If set, the buildless (standalone) extractor will store dependencies in this directory. + type: string From 2700843a9cb97096674b2e93f6372076afb0899c Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 17 Nov 2025 12:01:59 +0100 Subject: [PATCH 883/965] C#: Add an integration test for setting the dependency directory in BMN. --- .../Assemblies.expected | 1 + .../standalone_dependency_dir/Assemblies.ql | 7 +++++++ .../standalone_dependency_dir/proj/Program.cs | 6 ++++++ .../standalone_dependency_dir/proj/global.json | 5 +++++ .../proj/standalone.csproj | 16 ++++++++++++++++ .../standalone_dependency_dir/test.py | 8 ++++++++ 6 files changed, 43 insertions(+) create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected new file mode 100644 index 00000000000..b98f10a366c --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.expected @@ -0,0 +1 @@ +| dependencies/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql new file mode 100644 index 00000000000..625fc299761 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/Assemblies.ql @@ -0,0 +1,7 @@ +import csharp + +from Assembly a +where + not a.getCompilation().getOutputAssembly() = a and + a.getName().matches("%Newtonsoft%") +select a diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/Program.cs new file mode 100644 index 00000000000..39a9e95bb6e --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/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/all-platforms/standalone_dependency_dir/proj/global.json b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json new file mode 100644 index 00000000000..4c6e2601f69 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.304" + } +} diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj new file mode 100644 index 00000000000..29604e2cbd8 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/proj/standalone.csproj @@ -0,0 +1,16 @@ + + + + Exe + net9.0 + + + + + + + + + + + diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py new file mode 100644 index 00000000000..6aeb36182dd --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py @@ -0,0 +1,8 @@ +import os + +def test(codeql, csharp, cwd): + path = os.path.join(cwd, "dependencies") + os.environ["CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"] = path + # The Assemblies.ql query shows that the Newtonsoft assembly is found in the + # dependency directory set above. + codeql.database.create(source_root="proj", build_mode="none") From 90dbb7a8eb61876e7c0fcf424cd4093f6874ebbd Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 17 Nov 2025 12:50:18 +0100 Subject: [PATCH 884/965] C#: Add change note. --- .../ql/lib/change-notes/2025-11-17-dependencies-directory.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-11-17-dependencies-directory.md diff --git a/csharp/ql/lib/change-notes/2025-11-17-dependencies-directory.md b/csharp/ql/lib/change-notes/2025-11-17-dependencies-directory.md new file mode 100644 index 00000000000..ec86dca35b9 --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-11-17-dependencies-directory.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added a new extractor option to specify a custom directory for dependency downloads in buildless mode. Use `-O buildless_dependency_dir=` to configure the target directory. From 138441b662a0b884365f15d9aae63a53750dd082 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 17 Nov 2025 16:03:53 +0100 Subject: [PATCH 885/965] C#: Address review comments. --- .../DependencyDirectory.cs | 2 +- .../NugetExeWrapper.cs | 4 ++-- csharp/extractor/Semmle.Util/EnvironmentVariables.cs | 3 +-- .../all-platforms/standalone_dependency_dir/test.py | 6 ++++++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs index 8efcb5d7d78..7c816ed5837 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyDirectory.cs @@ -57,6 +57,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } - public override string ToString() => DirInfo.FullName.ToString(); + public override string ToString() => DirInfo.FullName; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs index 10d89b1e009..b90b388e865 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs @@ -24,8 +24,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private readonly FileProvider fileProvider; /// - /// The computed packages directory. - /// This will be in the Cached or Temp location + /// The packages directory. + /// This will be in the user-specified or computed Temp location /// so as to not trample the source tree. /// private readonly DependencyDirectory packageDirectory; diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index 9f1519653de..1af05b9d4ad 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -79,9 +79,8 @@ namespace Semmle.Util /// /// If set, returns the directory where buildless dependencies should be stored. - /// This is needed for caching dependencies. + /// This can be used for caching dependencies. /// - /// public static string? GetBuildlessDependencyDir() { return Environment.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"); diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py index 6aeb36182dd..d5574979c63 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py @@ -1,4 +1,5 @@ import os +import shutil def test(codeql, csharp, cwd): path = os.path.join(cwd, "dependencies") @@ -6,3 +7,8 @@ def test(codeql, csharp, cwd): # The Assemblies.ql query shows that the Newtonsoft assembly is found in the # dependency directory set above. codeql.database.create(source_root="proj", build_mode="none") + + # Check that the packages directory has been created in the dependecies folder. + packages_dir = os.path.join(path, "packages") + assert os.path.isdir(packages_dir), "The packages directory was not created in the specified dependency directory." + shutil.rmtree(path) From 5c454d23e87cf0c5c25b0ece30ec2f5016ab0090 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 21 Nov 2025 10:18:41 +0100 Subject: [PATCH 886/965] C#: Fix typo. --- .../all-platforms/standalone_dependency_dir/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py index d5574979c63..3629693ad29 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependency_dir/test.py @@ -8,7 +8,7 @@ def test(codeql, csharp, cwd): # dependency directory set above. codeql.database.create(source_root="proj", build_mode="none") - # Check that the packages directory has been created in the dependecies folder. + # Check that the packages directory has been created in the dependencies folder. packages_dir = os.path.join(path, "packages") assert os.path.isdir(packages_dir), "The packages directory was not created in the specified dependency directory." shutil.rmtree(path) From ec381e4ec579728b9b2ce9cbe99f92b4cc45b414 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Fri, 21 Nov 2025 10:31:50 +0000 Subject: [PATCH 887/965] Use range analysis and improve tests --- .../java/security/SensitiveLoggingQuery.qll | 28 +++++++------ .../CWE-532/SensitiveLogInfo.expected | 40 +++++++++---------- .../query-tests/security/CWE-532/Test.java | 7 ++++ 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index b4eecdcdb4c..315f915b2e1 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -87,10 +87,11 @@ private class PrefixSuffixBarrier extends SensitiveLoggerBarrier { bindingset[limit, isKotlin] private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { mc.getNumArgument() = 1 and - exists(int firstArgIndex | - (if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0) and - mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= - limit + exists(int firstArgIndex, int delta | + if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0 + | + bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), delta, true, _) and + delta <= limit ) } @@ -98,15 +99,16 @@ private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { bindingset[limit, isKotlin] private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { mc.getNumArgument() = 2 and - exists(int firstArgIndex, int secondArgIndex | - ( - isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 - or - isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 - ) and - mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and - mc.getArgument(secondArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() <= - limit + exists(int firstArgIndex, int secondArgIndex, int delta | + isKotlin = true and firstArgIndex = 1 and secondArgIndex = 2 + or + isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 + | + // mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and + bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), 0, true, _) and + bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), 0, false, _) and + bounded(mc.getArgument(secondArgIndex).getUnderlyingExpr(), any(ZeroBound z), delta, true, _) and + delta <= limit ) } diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected index 3827d2894ad..54f1e9f8a5a 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected @@ -1,28 +1,28 @@ #select -| Test.java:7:21:7:53 | ... + ... | Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | This $@ is written to a log file. | Test.java:7:46:7:53 | password | potentially sensitive information | -| Test.java:8:22:8:52 | ... + ... | Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | This $@ is written to a log file. | Test.java:8:44:8:52 | authToken | potentially sensitive information | -| Test.java:14:22:14:75 | ... + ... | Test.java:14:44:14:52 | authToken : String | Test.java:14:22:14:75 | ... + ... | This $@ is written to a log file. | Test.java:14:44:14:52 | authToken | potentially sensitive information | -| Test.java:15:22:15:75 | ... + ... | Test.java:15:44:15:52 | authToken : String | Test.java:15:22:15:75 | ... + ... | This $@ is written to a log file. | Test.java:15:44:15:52 | authToken | potentially sensitive information | +| Test.java:11:21:11:53 | ... + ... | Test.java:11:46:11:53 | password : String | Test.java:11:21:11:53 | ... + ... | This $@ is written to a log file. | Test.java:11:46:11:53 | password | potentially sensitive information | +| Test.java:12:22:12:52 | ... + ... | Test.java:12:44:12:52 | authToken : String | Test.java:12:22:12:52 | ... + ... | This $@ is written to a log file. | Test.java:12:44:12:52 | authToken | potentially sensitive information | +| Test.java:21:22:21:75 | ... + ... | Test.java:21:44:21:52 | authToken : String | Test.java:21:22:21:75 | ... + ... | This $@ is written to a log file. | Test.java:21:44:21:52 | authToken | potentially sensitive information | +| Test.java:22:22:22:75 | ... + ... | Test.java:22:44:22:52 | authToken : String | Test.java:22:22:22:75 | ... + ... | This $@ is written to a log file. | Test.java:22:44:22:52 | authToken | potentially sensitive information | edges -| Test.java:7:46:7:53 | password : String | Test.java:7:21:7:53 | ... + ... | provenance | Sink:MaD:2 | -| Test.java:8:44:8:52 | authToken : String | Test.java:8:22:8:52 | ... + ... | provenance | Sink:MaD:1 | -| Test.java:14:44:14:52 | authToken : String | Test.java:14:44:14:67 | substring(...) : String | provenance | MaD:3 | -| Test.java:14:44:14:67 | substring(...) : String | Test.java:14:22:14:75 | ... + ... | provenance | Sink:MaD:1 | -| Test.java:15:44:15:52 | authToken : String | Test.java:15:44:15:67 | substring(...) : String | provenance | MaD:3 | -| Test.java:15:44:15:67 | substring(...) : String | Test.java:15:22:15:75 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:11:46:11:53 | password : String | Test.java:11:21:11:53 | ... + ... | provenance | Sink:MaD:2 | +| Test.java:12:44:12:52 | authToken : String | Test.java:12:22:12:52 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:21:44:21:52 | authToken : String | Test.java:21:44:21:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:21:44:21:67 | substring(...) : String | Test.java:21:22:21:75 | ... + ... | provenance | Sink:MaD:1 | +| Test.java:22:44:22:52 | authToken : String | Test.java:22:44:22:67 | substring(...) : String | provenance | MaD:3 | +| Test.java:22:44:22:67 | substring(...) : String | Test.java:22:22:22:75 | ... + ... | provenance | Sink:MaD:1 | models | 1 | Sink: org.apache.logging.log4j; Logger; true; error; (String); ; Argument[0]; log-injection; manual | | 2 | Sink: org.apache.logging.log4j; Logger; true; info; (String); ; Argument[0]; log-injection; manual | | 3 | Summary: java.lang; String; false; substring; ; ; Argument[this]; ReturnValue; taint; manual | nodes -| Test.java:7:21:7:53 | ... + ... | semmle.label | ... + ... | -| Test.java:7:46:7:53 | password : String | semmle.label | password : String | -| Test.java:8:22:8:52 | ... + ... | semmle.label | ... + ... | -| Test.java:8:44:8:52 | authToken : String | semmle.label | authToken : String | -| Test.java:14:22:14:75 | ... + ... | semmle.label | ... + ... | -| Test.java:14:44:14:52 | authToken : String | semmle.label | authToken : String | -| Test.java:14:44:14:67 | substring(...) : String | semmle.label | substring(...) : String | -| Test.java:15:22:15:75 | ... + ... | semmle.label | ... + ... | -| Test.java:15:44:15:52 | authToken : String | semmle.label | authToken : String | -| Test.java:15:44:15:67 | substring(...) : String | semmle.label | substring(...) : String | +| Test.java:11:21:11:53 | ... + ... | semmle.label | ... + ... | +| Test.java:11:46:11:53 | password : String | semmle.label | password : String | +| Test.java:12:22:12:52 | ... + ... | semmle.label | ... + ... | +| Test.java:12:44:12:52 | authToken : String | semmle.label | authToken : String | +| Test.java:21:22:21:75 | ... + ... | semmle.label | ... + ... | +| Test.java:21:44:21:52 | authToken : String | semmle.label | authToken : String | +| Test.java:21:44:21:67 | substring(...) : String | semmle.label | substring(...) : String | +| Test.java:22:22:22:75 | ... + ... | semmle.label | ... + ... | +| Test.java:22:44:22:52 | authToken : String | semmle.label | authToken : String | +| Test.java:22:44:22:67 | substring(...) : String | semmle.label | substring(...) : String | subpaths diff --git a/java/ql/test/query-tests/security/CWE-532/Test.java b/java/ql/test/query-tests/security/CWE-532/Test.java index 2eed3e79342..0383f521ff3 100644 --- a/java/ql/test/query-tests/security/CWE-532/Test.java +++ b/java/ql/test/query-tests/security/CWE-532/Test.java @@ -3,6 +3,10 @@ import org.apache.logging.log4j.Logger; class Test { void test(String password, String authToken, String username, String nullToken, String stringTokenizer) { Logger logger = null; + int zero = 0; + int four = 4; + short zeroS = 0; + long fourL = 4; logger.info("User's password is: " + password); // $ Alert logger.error("Auth failed for: " + authToken); // $ Alert @@ -10,7 +14,10 @@ class Test { logger.error("Auth failed for: " + nullToken); // Safe logger.error("Auth failed for: " + stringTokenizer); // Safe logger.error("Auth failed for: " + authToken.substring(4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(four) + "..."); // Safe logger.error("Auth failed for: " + authToken.substring(0,4) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring(zero,four) + "..."); // Safe + logger.error("Auth failed for: " + authToken.substring((int)zeroS,(int)fourL) + "..."); // Safe logger.error("Auth failed for: " + authToken.substring(1,5) + "..."); // $ Alert logger.error("Auth failed for: " + authToken.substring(0,8) + "..."); // $ Alert } From ce9986c4492acdfb2b8ac39060cd7f456b3c94f0 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:30:31 +0100 Subject: [PATCH 888/965] JS: Change signature of isShadowedFromBulkExport --- javascript/ql/lib/semmle/javascript/ES2015Modules.qll | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 6eee9ea56e5..eee808ce020 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -423,7 +423,7 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati overlay[global] override predicate exportsAs(LexicalName v, string name) { this.getReExportedES2015Module().exportsAs(v, name) and - not isShadowedFromBulkExport(this, name) + not isShadowedFromBulkExport(this.getEnclosingModule(), name) } overlay[global] @@ -433,8 +433,8 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati } /** - * Holds if the given bulk export `reExport` should not re-export `name` because there is an explicit export - * of that name in the same module. + * Holds if bulk re-exports in `mod` should not re-export `name` because there is an explicit export + * of that name in `mod`. * * At compile time, shadowing works across declaration spaces. * For instance, directly exporting an interface `X` will block a variable `X` from being re-exported: @@ -446,8 +446,8 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati * but we ignore this subtlety. */ overlay[global] -private predicate isShadowedFromBulkExport(BulkReExportDeclaration reExport, string name) { - exists(ExportNamedDeclaration other | other.getTopLevel() = reExport.getEnclosingModule() | +private predicate isShadowedFromBulkExport(Module mod, string name) { + exists(ExportNamedDeclaration other | other.getTopLevel() = mod | other.getAnExportedDecl().getName() = name or other.getASpecifier().getExportedName() = name From d5399300e9ece38e440dc4f7b5185abeff7722b9 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 19 Nov 2025 15:32:38 +0000 Subject: [PATCH 889/965] C++: Add `databaseMetadata` and `overlayChangedFiles` tables to dbscheme --- cpp/ql/lib/semmlecode.cpp.dbscheme | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 1a6854060d5..a42ce5fc943 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1,3 +1,4 @@ + /*- Compilations -*/ /** @@ -2378,6 +2379,24 @@ link_parent( int link_target : @link_target ref ); +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + /*- XML Files -*/ xmlEncoding( From c2f96b94e3e21c4d3341f62939b7ebfe0ce22b0d Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 21 Nov 2025 11:28:16 +0000 Subject: [PATCH 890/965] C++: Update stats --- cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 2694 +++++++++++----------- 1 file changed, 1373 insertions(+), 1321 deletions(-) diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 1d796c9aa9a..4ff7d2dd67b 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 12640 + 12641 @externalDataElement @@ -10,35 +10,35 @@ @file - 65198 + 65204 @folder - 12387 + 12388 @diagnostic 359 - - @location_default - 46943795 - @pch 249 + + @location_default + 46943825 + @macro_expansion - 40272403 + 40272429 @other_macro_reference - 300697 + 300698 @normal_function - 2737947 + 2737949 @unknown_function @@ -46,7 +46,7 @@ @constructor - 698677 + 698692 @destructor @@ -58,7 +58,7 @@ @operator - 652426 + 652427 @user_defined_literal @@ -70,23 +70,23 @@ @fun_decl - 4202851 + 4202854 @var_decl - 9383095 + 9383101 @type_decl - 1633437 + 1633438 @namespace_decl - 407917 + 407918 @using_declaration - 267880 + 268041 @using_directive @@ -102,11 +102,11 @@ @parameter - 7019638 + 7019643 @membervariable - 1499493 + 1499494 @globalvariable @@ -114,7 +114,7 @@ @localvariable - 725806 + 726016 @enumconstant @@ -378,7 +378,7 @@ @routineptr - 684266 + 684282 @reference @@ -404,6 +404,10 @@ @scalable_vector 1 + + @decltype + 102350 + @typeof 816 @@ -484,13 +488,9 @@ @remove_reference 5715 - - @decltype - 102350 - @struct - 979711 + 979799 @union @@ -502,11 +502,11 @@ @template_parameter - 866907 + 866985 @alias - 1762011 + 1762169 @unknown_usertype @@ -514,7 +514,7 @@ @class - 324965 + 324966 @template_template_parameter @@ -522,7 +522,7 @@ @proxy_class - 48429 + 48433 @scoped_enum @@ -530,7 +530,7 @@ @template_struct - 212038 + 212057 @template_class @@ -542,23 +542,23 @@ @mangledname - 6364342 + 6364346 @type_mention - 5907627 + 5907630 @concept_template - 3610 + 3609 @routinetype - 604482 + 604495 @ptrtomember - 9725 + 9726 @specifier @@ -582,15 +582,15 @@ @alignas - 2163 + 2164 @attribute_arg_token - 16692 + 16693 @attribute_arg_constant_expr - 71883 + 71889 @attribute_arg_expr @@ -606,23 +606,23 @@ @attribute_arg_type - 459 + 460 @derivation - 476867 + 476878 @frienddecl - 699835 + 700430 @comment - 11233093 + 11233100 @namespace - 8648 + 8649 @specialnamequalifyingelement @@ -630,15 +630,15 @@ @namequalifier - 3037999 + 3037638 @value - 13474763 + 13474772 @initialiser - 2247635 + 2247637 @address_of @@ -650,19 +650,19 @@ @array_to_pointer - 1953766 + 1953767 @parexpr - 4915246 + 4915249 @arithnegexpr - 586538 + 586539 @unaryplusexpr - 4067 + 4068 @complementexpr @@ -694,11 +694,11 @@ @addexpr - 571559 + 571560 @subexpr - 466802 + 466803 @mulexpr @@ -734,11 +734,11 @@ @andexpr - 481223 + 481224 @orexpr - 194057 + 194058 @xorexpr @@ -746,11 +746,11 @@ @eqexpr - 643379 + 643380 @neexpr - 411873 + 411874 @gtexpr @@ -770,7 +770,7 @@ @assignexpr - 1281159 + 1281160 @assignaddexpr @@ -782,7 +782,7 @@ @assignmulexpr - 11183 + 11184 @assigndivexpr @@ -838,7 +838,7 @@ @callexpr - 239762 + 239767 @vastartexpr @@ -858,7 +858,7 @@ @varaccess - 8254728 + 8254733 @runtime_sizeof @@ -866,7 +866,7 @@ @runtime_alignof - 49873 + 49874 @expr_stmt @@ -874,11 +874,11 @@ @routineexpr - 5730574 + 5729912 @type_operand - 1405379 + 1405380 @offsetofexpr @@ -886,11 +886,11 @@ @typescompexpr - 701942 + 701943 @literal - 7966636 + 7966268 @aggregateliteral @@ -898,23 +898,23 @@ @c_style_cast - 6026984 + 6026987 @temp_init - 991871 + 990622 @errorexpr - 45479 + 45480 @reference_to - 1902179 + 1903214 @ref_indirect - 2107171 + 2107218 @vacuous_destructor_call @@ -974,11 +974,11 @@ @thisaccess - 1555763 + 1555764 @new_expr - 46194 + 46195 @delete_expr @@ -986,19 +986,19 @@ @throw_expr - 24145 + 24214 @condition_decl - 408385 + 408340 @braced_init_list - 2151 + 2146 @type_id - 47898 + 47899 @sizeof_pack @@ -1106,7 +1106,7 @@ @ctordirectinit - 112829 + 112831 @ctorvirtualinit @@ -1122,7 +1122,7 @@ @dtordirectdestruct - 39449 + 39450 @dtorvirtualdestruct @@ -1130,7 +1130,7 @@ @dtorfielddestruct - 39824 + 39825 @static_cast @@ -1154,11 +1154,11 @@ @param_ref - 163939 + 163867 @noopexpr - 64 + 48 @istriviallyconstructibleexpr @@ -1186,7 +1186,7 @@ @istrivialexpr - 3367 + 3375 @isstandardlayoutexpr @@ -1258,7 +1258,7 @@ @noexceptexpr - 28343 + 28463 @builtinshufflevector @@ -1322,7 +1322,7 @@ @issame - 4534 + 4533 @isfunction @@ -1430,7 +1430,7 @@ @reuseexpr - 845931 + 845836 @istriviallycopyassignable @@ -1530,7 +1530,7 @@ @requires_expr - 16481 + 16479 @nested_requirement @@ -1538,11 +1538,11 @@ @compound_requirement - 10937 + 10936 @concept_id - 90315 + 90305 @lambdacapture @@ -1550,11 +1550,11 @@ @stmt_expr - 2031638 + 2031639 @stmt_if - 990226 + 990227 @stmt_while @@ -1562,23 +1562,23 @@ @stmt_goto - 157874 + 157889 @stmt_label - 78008 + 78015 @stmt_return - 1241721 + 1241800 @stmt_block - 1728619 + 1728620 @stmt_end_test_while - 233643 + 233644 @stmt_for @@ -1586,11 +1586,11 @@ @stmt_switch_case - 835058 + 834964 @stmt_switch - 411329 + 411283 @stmt_asm @@ -1598,11 +1598,11 @@ @stmt_decl - 771065 + 771066 @stmt_empty - 428842 + 428794 @stmt_continue @@ -1614,7 +1614,7 @@ @stmt_try_block - 26736 + 26771 @stmt_microsoft_try @@ -1634,15 +1634,15 @@ @stmt_range_based_for - 6384 + 6372 @stmt_handler - 43770 + 43779 @stmt_constexpr_if - 106034 + 106035 @stmt_co_return @@ -1670,11 +1670,11 @@ @ppd_ifndef - 160377 + 160378 @ppd_elif - 21912 + 21914 @ppd_else @@ -1686,11 +1686,11 @@ @ppd_plain_include - 318495 + 318524 @ppd_define - 2750047 + 2750049 @ppd_undef @@ -1706,7 +1706,7 @@ @ppd_line - 18799 + 18805 @ppd_error @@ -1762,13 +1762,60 @@ + + databaseMetadata + 1 + + + metadataKey + 1 + + + value + 1 + + + + + metadataKey + value + + + 12 + + + + + + value + metadataKey + + + 12 + + + + + + + + overlayChangedFiles + 50 + + + path + 50 + + + + compilations - 12640 + 12641 id - 12640 + 12641 cwd @@ -1786,7 +1833,7 @@ 1 2 - 12640 + 12641 @@ -1812,11 +1859,11 @@ compilation_args - 1011994 + 1012084 id - 12640 + 12641 num @@ -1824,7 +1871,7 @@ arg - 29262 + 29264 @@ -1893,7 +1940,7 @@ 103 104 - 1995 + 1996 104 @@ -1984,7 +2031,7 @@ 79 89 - 1129 + 1130 89 @@ -2152,12 +2199,12 @@ 1 2 - 13400 + 13402 2 3 - 12682 + 12683 3 @@ -2183,12 +2230,12 @@ 1 2 - 19377 + 19379 2 3 - 8722 + 8723 3 @@ -2203,11 +2250,11 @@ compilation_expanded_args - 1011994 + 1012084 id - 12640 + 12641 num @@ -2215,7 +2262,7 @@ arg - 29262 + 29264 @@ -2284,7 +2331,7 @@ 103 104 - 1995 + 1996 104 @@ -2375,7 +2422,7 @@ 79 89 - 1129 + 1130 89 @@ -2543,12 +2590,12 @@ 1 2 - 13400 + 13402 2 3 - 12682 + 12683 3 @@ -2574,12 +2621,12 @@ 1 2 - 19377 + 19379 2 3 - 8722 + 8723 3 @@ -2904,7 +2951,7 @@ seconds - 14485 + 18352 @@ -2985,27 +3032,27 @@ 3 4 - 544 + 653 4 5 - 816 + 707 6 - 7 - 163 + 9 + 217 - 8 + 9 10 - 217 + 108 10 11 - 108 + 163 11 @@ -3013,19 +3060,24 @@ 217 - 13 - 18 + 15 + 17 + 163 + + + 17 + 21 217 - 18 - 22 + 21 + 51 217 - 25 - 98 - 217 + 118 + 119 + 54 @@ -3098,12 +3150,12 @@ 3 4 - 1089 + 1252 4 5 - 1306 + 1089 5 @@ -3113,32 +3165,32 @@ 6 7 - 599 + 544 7 8 - 217 + 272 8 9 - 217 + 326 9 - 13 + 17 381 - 17 - 46 + 23 + 53 381 - 50 - 90 - 108 + 98 + 99 + 54 @@ -3186,16 +3238,21 @@ 4 5 - 108 - - - 154 - 155 54 - 171 - 172 + 5 + 6 + 54 + + + 195 + 196 + 54 + + + 197 + 198 54 @@ -3212,22 +3269,22 @@ 1 2 - 7732 + 12198 2 3 - 3376 + 4084 3 4 - 2341 + 1415 4 - 46 - 1034 + 44 + 653 @@ -3243,27 +3300,22 @@ 1 2 - 7242 + 10891 2 3 - 3158 + 4465 3 4 - 1960 + 1579 4 - 6 - 1306 - - - 6 - 77 - 816 + 71 + 1415 @@ -3279,12 +3331,12 @@ 1 2 - 10837 + 14866 2 3 - 3648 + 3485 @@ -3560,19 +3612,19 @@ compilation_finished - 12640 + 12641 id - 12640 + 12641 cpu_seconds - 9630 + 9409 elapsed_seconds - 221 + 200 @@ -3586,7 +3638,7 @@ 1 2 - 12640 + 12641 @@ -3602,7 +3654,7 @@ 1 2 - 12640 + 12641 @@ -3618,17 +3670,17 @@ 1 2 - 8268 + 7846 2 3 - 1013 + 1130 3 - 37 - 348 + 35 + 433 @@ -3644,12 +3696,12 @@ 1 2 - 8923 + 8744 2 3 - 707 + 665 @@ -3665,12 +3717,17 @@ 1 2 - 63 + 42 + + + 2 + 3 + 10 3 4 - 21 + 10 4 @@ -3678,14 +3735,19 @@ 10 - 8 - 9 + 9 + 10 + 10 + + + 10 + 11 10 11 12 - 21 + 10 12 @@ -3693,43 +3755,43 @@ 10 - 13 - 14 + 14 + 15 10 - 20 - 21 + 19 + 20 10 - 29 - 30 + 32 + 33 10 - 59 - 60 + 57 + 58 10 - 150 - 151 + 154 + 155 10 - 247 - 248 + 251 + 252 10 - 302 - 303 + 306 + 307 10 - 319 - 320 + 309 + 310 10 @@ -3746,12 +3808,17 @@ 1 2 - 63 + 42 + + + 2 + 3 + 10 3 4 - 21 + 10 4 @@ -3759,14 +3826,19 @@ 10 - 8 - 9 + 9 + 10 + 10 + + + 10 + 11 10 11 12 - 21 + 10 12 @@ -3774,13 +3846,13 @@ 10 - 13 - 14 + 14 + 15 10 - 20 - 21 + 18 + 19 10 @@ -3789,28 +3861,28 @@ 10 - 59 - 60 + 54 + 55 10 - 148 - 149 + 149 + 150 10 - 159 - 160 + 152 + 153 10 - 237 - 238 + 228 + 229 10 - 256 - 257 + 255 + 256 10 @@ -4048,11 +4120,11 @@ locations_default - 46943795 + 46943825 id - 46943795 + 46943825 file @@ -4060,7 +4132,7 @@ beginLine - 7500413 + 7500418 beginColumn @@ -4068,7 +4140,7 @@ endLine - 7501536 + 7501541 endColumn @@ -4086,7 +4158,7 @@ 1 2 - 46943795 + 46943825 @@ -4102,7 +4174,7 @@ 1 2 - 46943795 + 46943825 @@ -4118,7 +4190,7 @@ 1 2 - 46943795 + 46943825 @@ -4134,7 +4206,7 @@ 1 2 - 46943795 + 46943825 @@ -4150,7 +4222,7 @@ 1 2 - 46943795 + 46943825 @@ -4551,7 +4623,7 @@ 1 2 - 4957321 + 4957324 2 @@ -4561,7 +4633,7 @@ 3 4 - 543896 + 543897 4 @@ -4592,7 +4664,7 @@ 1 2 - 5019320 + 5019323 2 @@ -4607,7 +4679,7 @@ 6 57 - 563232 + 563233 57 @@ -4628,7 +4700,7 @@ 1 2 - 5641184 + 5641187 2 @@ -4643,7 +4715,7 @@ 7 25 - 565228 + 565229 25 @@ -4664,12 +4736,12 @@ 1 2 - 7034358 + 7034363 2 85 - 466054 + 466055 @@ -4685,7 +4757,7 @@ 1 2 - 5026306 + 5026309 2 @@ -4700,12 +4772,12 @@ 4 12 - 586934 + 586935 12 72 - 564105 + 564106 72 @@ -5106,12 +5178,12 @@ 1 2 - 4955200 + 4955203 2 3 - 781539 + 781540 3 @@ -5147,7 +5219,7 @@ 1 2 - 5016451 + 5016454 2 @@ -5162,7 +5234,7 @@ 6 52 - 564105 + 564106 52 @@ -5183,7 +5255,7 @@ 1 2 - 7051449 + 7051453 2 @@ -5204,7 +5276,7 @@ 1 2 - 5640311 + 5640314 2 @@ -5240,17 +5312,17 @@ 1 2 - 5024934 + 5024937 2 3 - 743741 + 743742 3 4 - 539530 + 539531 4 @@ -5260,7 +5332,7 @@ 12 72 - 562733 + 562734 72 @@ -5580,15 +5652,15 @@ files - 65198 + 65204 id - 65198 + 65204 name - 65198 + 65204 @@ -5602,7 +5674,7 @@ 1 2 - 65198 + 65204 @@ -5618,7 +5690,7 @@ 1 2 - 65198 + 65204 @@ -5628,15 +5700,15 @@ folders - 12387 + 12388 id - 12387 + 12388 name - 12387 + 12388 @@ -5650,7 +5722,7 @@ 1 2 - 12387 + 12388 @@ -5666,7 +5738,7 @@ 1 2 - 12387 + 12388 @@ -5676,15 +5748,15 @@ containerparent - 77564 + 77571 parent - 12387 + 12388 child - 77564 + 77571 @@ -5698,7 +5770,7 @@ 1 2 - 6029 + 6030 2 @@ -5749,7 +5821,7 @@ 1 2 - 77564 + 77571 @@ -5759,11 +5831,11 @@ numlines - 807861 + 807862 element_id - 806738 + 806739 num_lines @@ -7237,11 +7309,11 @@ fileannotations - 4199643 + 4200019 id - 5765 + 5766 kind @@ -7249,11 +7321,11 @@ name - 58704 + 58709 value - 39505 + 39509 @@ -7288,12 +7360,12 @@ 1 86 - 432 + 433 88 206 - 432 + 433 212 @@ -7303,17 +7375,17 @@ 291 359 - 432 + 433 362 401 - 432 + 433 402 479 - 432 + 433 480 @@ -7328,7 +7400,7 @@ 553 628 - 432 + 433 631 @@ -7359,17 +7431,17 @@ 1 98 - 432 + 433 102 244 - 432 + 433 244 351 - 432 + 433 352 @@ -7384,7 +7456,7 @@ 490 628 - 432 + 433 632 @@ -7399,22 +7471,22 @@ 710 939 - 432 + 433 939 1038 - 432 + 433 1066 1853 - 432 + 433 1853 3292 - 432 + 433 3423 @@ -7498,7 +7570,7 @@ 1 2 - 11024 + 11025 2 @@ -7518,12 +7590,12 @@ 7 9 - 4593 + 4594 9 16 - 4329 + 4330 16 @@ -7533,12 +7605,12 @@ 19 27 - 4255 + 4256 27 47 - 4836 + 4837 47 @@ -7569,7 +7641,7 @@ 1 2 - 58704 + 58709 @@ -7585,12 +7657,12 @@ 1 2 - 11584 + 11585 2 3 - 7687 + 7688 3 @@ -7600,7 +7672,7 @@ 4 6 - 4065 + 4066 6 @@ -7630,7 +7702,7 @@ 41 95 - 4466 + 4467 95 @@ -7691,12 +7763,12 @@ 51 58 - 3030 + 3031 58 80 - 2977 + 2978 81 @@ -7706,7 +7778,7 @@ 151 334 - 2977 + 2978 334 @@ -7732,7 +7804,7 @@ 1 2 - 39495 + 39498 2 @@ -7763,7 +7835,7 @@ 4 5 - 3051 + 3052 5 @@ -7773,7 +7845,7 @@ 8 14 - 3484 + 3485 14 @@ -7783,17 +7855,17 @@ 18 28 - 3199 + 3200 28 34 - 3146 + 3147 34 41 - 3199 + 3200 41 @@ -7813,7 +7885,7 @@ 113 145 - 3030 + 3031 145 @@ -7828,15 +7900,15 @@ inmacroexpansion - 149997201 + 149997296 id - 24671160 + 24671176 inv - 3705370 + 3705372 @@ -7850,37 +7922,37 @@ 1 3 - 2209511 + 2209512 3 5 - 1474989 + 1474990 5 6 - 1620381 + 1620382 6 7 - 6582595 + 6582599 7 8 - 8719067 + 8719073 8 9 - 3557076 + 3557078 9 22 - 507538 + 507539 @@ -7901,7 +7973,7 @@ 2 3 - 743238 + 743239 3 @@ -7931,12 +8003,12 @@ 10 11 - 444653 + 444654 11 337 - 307800 + 307801 339 @@ -7956,15 +8028,15 @@ affectedbymacroexpansion - 48736214 + 48736245 id - 7044796 + 7044800 inv - 3803150 + 3803153 @@ -7978,12 +8050,12 @@ 1 2 - 3846740 + 3846743 2 3 - 766310 + 766311 3 @@ -7993,7 +8065,7 @@ 4 5 - 772742 + 772743 5 @@ -8003,7 +8075,7 @@ 12 50 - 556271 + 556272 50 @@ -8054,7 +8126,7 @@ 14 15 - 408041 + 408042 15 @@ -8064,7 +8136,7 @@ 16 17 - 377680 + 377681 17 @@ -8094,11 +8166,11 @@ macroinvocations - 40354035 + 40354061 id - 40354035 + 40354061 macro_id @@ -8106,7 +8178,7 @@ location - 5919825 + 5919829 kind @@ -8124,7 +8196,7 @@ 1 2 - 40354035 + 40354061 @@ -8140,7 +8212,7 @@ 1 2 - 40354035 + 40354061 @@ -8156,7 +8228,7 @@ 1 2 - 40354035 + 40354061 @@ -8279,7 +8351,7 @@ 1 2 - 177858 + 177859 2 @@ -8300,12 +8372,12 @@ 1 2 - 5256857 + 5256860 2 4 - 428527 + 428528 4 @@ -8326,7 +8398,7 @@ 1 2 - 5897661 + 5897665 2 @@ -8347,7 +8419,7 @@ 1 2 - 5919825 + 5919829 @@ -8420,15 +8492,15 @@ macroparent - 33658296 + 33658318 id - 33658296 + 33658318 parent_id - 15929098 + 15929108 @@ -8442,7 +8514,7 @@ 1 2 - 33658296 + 33658318 @@ -8458,17 +8530,17 @@ 1 2 - 7809235 + 7809240 2 3 - 1595502 + 1595503 3 4 - 4703022 + 4703025 4 @@ -8488,15 +8560,15 @@ macrolocationbind - 6032778 + 6033959 id - 4216419 + 4217710 location - 2276207 + 2276069 @@ -8510,12 +8582,12 @@ 1 2 - 3291436 + 3292783 2 3 - 490596 + 490566 3 @@ -8525,12 +8597,12 @@ 4 5 - 413328 + 413303 5 17 - 13171 + 13170 @@ -8546,12 +8618,12 @@ 1 2 - 1335195 + 1335114 2 3 - 481486 + 481456 3 @@ -8561,12 +8633,12 @@ 4 5 - 427639 + 427613 5 522 - 24087 + 24085 @@ -8576,19 +8648,19 @@ macro_argument_unexpanded - 82481176 + 82486758 invocation - 26280397 + 26280952 argument_index - 696 + 697 text - 343195 + 343226 @@ -8602,22 +8674,22 @@ 1 2 - 9681115 + 9680186 2 3 - 9768522 + 9769396 3 4 - 5001183 + 5001631 4 67 - 1829575 + 1829739 @@ -8633,22 +8705,22 @@ 1 2 - 9863712 + 9862798 2 3 - 9786062 + 9786938 3 4 - 4844554 + 4844988 4 67 - 1786067 + 1786227 @@ -8673,7 +8745,7 @@ 646840 - 2488628 + 2488458 31 @@ -8716,52 +8788,52 @@ 1 2 - 39695 + 39699 2 3 - 62315 + 62321 3 4 - 21025 + 21027 4 5 - 34574 + 34577 5 6 - 39241 + 39245 6 9 - 30867 + 30870 9 15 - 28977 + 28979 15 26 - 25883 + 25885 26 57 - 27139 + 27142 57 517 - 25988 + 25990 518 @@ -8782,17 +8854,17 @@ 1 2 - 243127 + 243149 2 3 - 89856 + 89864 3 9 - 10211 + 10212 @@ -8802,19 +8874,19 @@ macro_argument_expanded - 82481176 + 82486758 invocation - 26280397 + 26280952 argument_index - 696 + 697 text - 207888 + 207906 @@ -8828,22 +8900,22 @@ 1 2 - 9681115 + 9680186 2 3 - 9768522 + 9769396 3 4 - 5001183 + 5001631 4 67 - 1829575 + 1829739 @@ -8859,22 +8931,22 @@ 1 2 - 12639154 + 12638489 2 3 - 8426648 + 8427402 3 4 - 4224417 + 4224795 4 9 - 990177 + 990265 @@ -8899,7 +8971,7 @@ 646840 - 2488628 + 2488458 31 @@ -8942,22 +9014,22 @@ 1 2 - 21827 + 21829 2 3 - 26854 + 26856 3 4 - 43486 + 43490 4 5 - 15903 + 15905 5 @@ -8967,32 +9039,32 @@ 6 7 - 18395 + 18397 7 10 - 18966 + 18967 10 19 - 18321 + 18323 19 51 - 15776 + 15778 51 252 - 15597 + 15598 252 - 1169531 - 9493 + 1169361 + 9494 @@ -9008,17 +9080,17 @@ 1 2 - 105063 + 105072 2 3 - 88895 + 88903 3 66 - 13928 + 13930 @@ -9028,15 +9100,15 @@ functions - 4049287 + 4049290 id - 4049287 + 4049290 name - 1693315 + 1693316 kind @@ -9054,7 +9126,7 @@ 1 2 - 4049287 + 4049290 @@ -9070,7 +9142,7 @@ 1 2 - 4049287 + 4049290 @@ -9112,7 +9184,7 @@ 1 2 - 1690446 + 1690447 2 @@ -9219,26 +9291,26 @@ builtin_functions - 30920 + 30923 id - 30920 + 30923 function_entry_point - 1141750 + 1141776 id - 1138003 + 1138028 entry_point - 1141750 + 1141776 @@ -9252,7 +9324,7 @@ 1 2 - 1134801 + 1134826 2 @@ -9273,7 +9345,7 @@ 1 2 - 1141750 + 1141776 @@ -9283,11 +9355,11 @@ function_return_type - 4066752 + 4066754 id - 4049287 + 4049290 return_type @@ -9305,7 +9377,7 @@ 1 2 - 4031823 + 4031825 2 @@ -9637,33 +9709,33 @@ function_deleted - 87973 + 87963 id - 87973 + 87963 function_defaulted - 51614 + 51609 id - 51614 + 51609 function_prototyped - 4047790 + 4047793 id - 4047790 + 4047793 @@ -9743,11 +9815,11 @@ member_function_this_type - 674132 + 674133 id - 674132 + 674133 this_type @@ -9765,7 +9837,7 @@ 1 2 - 674132 + 674133 @@ -9821,15 +9893,15 @@ fun_decls - 4208839 + 4208841 id - 4202851 + 4202854 function - 4024712 + 4024715 type_id @@ -9837,11 +9909,11 @@ name - 1691818 + 1691819 location - 2813169 + 2813171 @@ -9855,7 +9927,7 @@ 1 2 - 4202851 + 4202854 @@ -9871,7 +9943,7 @@ 1 2 - 4196863 + 4196866 2 @@ -9892,7 +9964,7 @@ 1 2 - 4202851 + 4202854 @@ -9908,7 +9980,7 @@ 1 2 - 4202851 + 4202854 @@ -9924,7 +9996,7 @@ 1 2 - 3861169 + 3861171 2 @@ -9945,7 +10017,7 @@ 1 2 - 4006250 + 4006252 2 @@ -9966,7 +10038,7 @@ 1 2 - 4024712 + 4024715 @@ -9982,7 +10054,7 @@ 1 2 - 3881627 + 3881630 2 @@ -10039,7 +10111,7 @@ 1 2 - 305255 + 305256 2 @@ -10194,7 +10266,7 @@ 1 2 - 1602001 + 1602002 2 @@ -10215,7 +10287,7 @@ 1 2 - 1367227 + 1367228 2 @@ -10241,12 +10313,12 @@ 1 2 - 2420216 + 2420218 2 3 - 251489 + 251490 3 @@ -10267,12 +10339,12 @@ 1 2 - 2438928 + 2438930 2 3 - 233276 + 233277 3 @@ -10293,7 +10365,7 @@ 1 2 - 2698776 + 2698778 2 @@ -10314,7 +10386,7 @@ 1 2 - 2773999 + 2774000 2 @@ -10329,11 +10401,11 @@ fun_def - 1422240 + 1422241 id - 1422240 + 1422241 @@ -10362,11 +10434,11 @@ fun_decl_specifiers - 4279570 + 4279573 id - 1748204 + 1748205 name @@ -10394,7 +10466,7 @@ 3 4 - 1100143 + 1100144 4 @@ -10607,15 +10679,15 @@ fun_decl_noexcept - 141820 + 141823 fun_decl - 141820 + 141823 constant - 141343 + 141346 @@ -10629,7 +10701,7 @@ 1 2 - 141820 + 141823 @@ -10645,7 +10717,7 @@ 1 2 - 140900 + 140903 2 @@ -10671,15 +10743,15 @@ fun_decl_typedef_type - 2759 + 2760 fun_decl - 2759 + 2760 typedeftype_id - 123 + 124 @@ -10693,7 +10765,7 @@ 1 2 - 2759 + 2760 @@ -10709,57 +10781,57 @@ 1 2 - 39 + 40 2 3 - 11 + 12 3 4 - 11 + 12 5 13 - 7 + 8 16 17 - 11 + 12 17 18 - 3 + 4 21 22 - 7 + 8 25 43 - 7 + 8 46 55 - 7 + 8 89 128 - 7 + 8 158 159 - 3 + 4 @@ -10769,11 +10841,11 @@ fun_requires - 29073 + 29070 id - 10099 + 10098 kind @@ -10781,7 +10853,7 @@ constraint - 28837 + 28834 @@ -10795,7 +10867,7 @@ 1 2 - 10035 + 10033 2 @@ -10816,7 +10888,7 @@ 1 2 - 7263 + 7262 2 @@ -10899,7 +10971,7 @@ 1 2 - 28600 + 28597 2 @@ -10920,7 +10992,7 @@ 1 2 - 28837 + 28834 @@ -10930,11 +11002,11 @@ param_decl_bind - 7310174 + 7310179 id - 7310174 + 7310179 index @@ -10942,7 +11014,7 @@ fun_decl - 3531587 + 3531589 @@ -10956,7 +11028,7 @@ 1 2 - 7310174 + 7310179 @@ -10972,7 +11044,7 @@ 1 2 - 7310174 + 7310179 @@ -11070,7 +11142,7 @@ 1 2 - 1508939 + 1508940 2 @@ -11106,7 +11178,7 @@ 1 2 - 1508939 + 1508940 2 @@ -11136,19 +11208,19 @@ var_decls - 9389956 + 9389962 id - 9383095 + 9383101 variable - 9034677 + 9034682 type_id - 1456421 + 1456422 name @@ -11156,7 +11228,7 @@ location - 6274400 + 6274404 @@ -11170,7 +11242,7 @@ 1 2 - 9383095 + 9383101 @@ -11186,7 +11258,7 @@ 1 2 - 9376234 + 9376240 2 @@ -11207,7 +11279,7 @@ 1 2 - 9383095 + 9383101 @@ -11223,7 +11295,7 @@ 1 2 - 9383095 + 9383101 @@ -11239,12 +11311,12 @@ 1 2 - 8703723 + 8703728 2 5 - 330953 + 330954 @@ -11260,7 +11332,7 @@ 1 2 - 8981160 + 8981166 2 @@ -11281,7 +11353,7 @@ 1 2 - 8929265 + 8929271 2 @@ -11302,7 +11374,7 @@ 1 2 - 8783062 + 8783068 2 @@ -11328,7 +11400,7 @@ 2 3 - 284048 + 284049 3 @@ -11395,7 +11467,7 @@ 1 2 - 1119479 + 1119480 2 @@ -11426,7 +11498,7 @@ 1 2 - 985376 + 985377 2 @@ -11482,7 +11554,7 @@ 7 25 - 64119 + 64120 25 @@ -11503,7 +11575,7 @@ 1 2 - 478903 + 478904 2 @@ -11611,7 +11683,7 @@ 1 2 - 5774663 + 5774667 2 @@ -11637,7 +11709,7 @@ 1 2 - 5855499 + 5855503 2 @@ -11658,7 +11730,7 @@ 1 2 - 5975880 + 5975884 2 @@ -11679,7 +11751,7 @@ 1 2 - 6262050 + 6262054 2 @@ -11694,11 +11766,11 @@ var_def - 3766860 + 3766862 id - 3766860 + 3766862 @@ -11848,19 +11920,19 @@ type_decls - 1633437 + 1633438 id - 1633437 + 1633438 type_id - 1614475 + 1614476 location - 1547361 + 1547362 @@ -11874,7 +11946,7 @@ 1 2 - 1633437 + 1633438 @@ -11890,7 +11962,7 @@ 1 2 - 1633437 + 1633438 @@ -11906,7 +11978,7 @@ 1 2 - 1598133 + 1598134 2 @@ -11927,7 +11999,7 @@ 1 2 - 1598258 + 1598259 2 @@ -11948,7 +12020,7 @@ 1 2 - 1525281 + 1525282 2 @@ -11969,7 +12041,7 @@ 1 2 - 1525406 + 1525407 2 @@ -11995,18 +12067,18 @@ type_decl_top - 675275 + 675276 type_decl - 675275 + 675276 type_requires - 7671 + 7670 id @@ -12014,7 +12086,7 @@ constraint - 7649 + 7648 @@ -12064,7 +12136,7 @@ 1 2 - 7628 + 7627 2 @@ -12079,11 +12151,11 @@ namespace_decls - 407917 + 407918 id - 407917 + 407918 namespace_id @@ -12091,11 +12163,11 @@ location - 407917 + 407918 bodylocation - 407917 + 407918 @@ -12109,7 +12181,7 @@ 1 2 - 407917 + 407918 @@ -12125,7 +12197,7 @@ 1 2 - 407917 + 407918 @@ -12141,7 +12213,7 @@ 1 2 - 407917 + 407918 @@ -12355,7 +12427,7 @@ 1 2 - 407917 + 407918 @@ -12371,7 +12443,7 @@ 1 2 - 407917 + 407918 @@ -12387,7 +12459,7 @@ 1 2 - 407917 + 407918 @@ -12403,7 +12475,7 @@ 1 2 - 407917 + 407918 @@ -12419,7 +12491,7 @@ 1 2 - 407917 + 407918 @@ -12435,7 +12507,7 @@ 1 2 - 407917 + 407918 @@ -12445,19 +12517,19 @@ usings - 272030 + 272192 id - 272030 + 272192 element_id - 59042 + 59184 location - 26844 + 26846 kind @@ -12475,7 +12547,7 @@ 1 2 - 272030 + 272192 @@ -12491,7 +12563,7 @@ 1 2 - 272030 + 272192 @@ -12507,7 +12579,7 @@ 1 2 - 272030 + 272192 @@ -12523,12 +12595,12 @@ 1 2 - 51312 + 51453 2 5 - 5385 + 5386 5 @@ -12549,12 +12621,12 @@ 1 2 - 51312 + 51453 2 5 - 5385 + 5386 5 @@ -12575,7 +12647,7 @@ 1 2 - 59042 + 59184 @@ -12591,21 +12663,21 @@ 1 2 - 21173 + 21175 2 4 - 2302 + 2291 4 132 - 1943 + 1953 145 - 367 + 371 1425 @@ -12622,21 +12694,21 @@ 1 2 - 21173 + 21175 2 4 - 2302 + 2291 4 132 - 1943 + 1953 145 - 367 + 371 1425 @@ -12653,7 +12725,7 @@ 1 2 - 26844 + 26846 @@ -12672,8 +12744,8 @@ 10 - 25367 - 25368 + 25380 + 25381 10 @@ -12693,8 +12765,8 @@ 10 - 5377 - 5378 + 5390 + 5391 10 @@ -12726,15 +12798,15 @@ using_container - 580040 + 580229 parent - 21891 + 21914 child - 272030 + 272192 @@ -12748,7 +12820,7 @@ 1 2 - 10370 + 10371 2 @@ -12763,7 +12835,7 @@ 6 7 - 2291 + 2312 7 @@ -12778,7 +12850,7 @@ 145 146 - 2618 + 2619 146 @@ -12799,27 +12871,27 @@ 1 2 - 96583 + 96729 2 3 - 120259 + 120270 3 4 - 20096 + 20097 4 5 - 26706 + 26709 5 65 - 8384 + 8385 @@ -13094,7 +13166,7 @@ 1 2 - 30262 + 30263 2 @@ -13170,7 +13242,7 @@ 17 18 - 4386 + 4387 19 @@ -13231,7 +13303,7 @@ 17 18 - 4386 + 4387 19 @@ -13437,15 +13509,15 @@ params - 7060555 + 7060560 id - 7019638 + 7019643 function - 3404844 + 3404846 index @@ -13467,7 +13539,7 @@ 1 2 - 7019638 + 7019643 @@ -13483,7 +13555,7 @@ 1 2 - 7019638 + 7019643 @@ -13499,7 +13571,7 @@ 1 2 - 6978721 + 6978726 2 @@ -13520,12 +13592,12 @@ 1 2 - 1473137 + 1473138 2 3 - 926246 + 926247 3 @@ -13540,7 +13612,7 @@ 5 65 - 145953 + 145954 @@ -13556,12 +13628,12 @@ 1 2 - 1473137 + 1473138 2 3 - 926246 + 926247 3 @@ -13576,7 +13648,7 @@ 5 65 - 145953 + 145954 @@ -13592,17 +13664,17 @@ 1 2 - 1781636 + 1781637 2 3 - 1030659 + 1030660 3 4 - 437487 + 437488 4 @@ -13782,7 +13854,7 @@ 1 2 - 819587 + 819588 2 @@ -13818,7 +13890,7 @@ 1 2 - 995106 + 995107 2 @@ -13916,11 +13988,11 @@ membervariables - 1501943 + 1501944 id - 1499493 + 1499494 type_id @@ -13928,7 +14000,7 @@ name - 642219 + 642220 @@ -13942,7 +14014,7 @@ 1 2 - 1497151 + 1497152 2 @@ -13963,7 +14035,7 @@ 1 2 - 1499493 + 1499494 @@ -14046,7 +14118,7 @@ 2 3 - 122420 + 122421 3 @@ -14278,19 +14350,19 @@ localvariables - 725806 + 726016 id - 725806 + 726016 type_id - 53403 + 53423 name - 101564 + 101594 @@ -14304,7 +14376,7 @@ 1 2 - 725806 + 726016 @@ -14320,7 +14392,7 @@ 1 2 - 725806 + 726016 @@ -14336,37 +14408,37 @@ 1 2 - 28845 + 28857 2 3 - 7838 + 7840 3 4 - 4027 + 4028 4 6 - 4063 + 4064 6 12 - 4131 + 4132 12 162 - 4007 + 4008 162 19347 - 491 + 492 @@ -14382,22 +14454,22 @@ 1 2 - 38343 + 38358 2 3 - 6702 + 6704 3 5 - 4474 + 4476 5 3509 - 3883 + 3884 @@ -14413,32 +14485,32 @@ 1 2 - 62497 + 62515 2 3 - 16028 + 16032 3 4 - 6526 + 6528 4 8 - 8142 + 8144 8 134 - 7618 + 7620 134 7549 - 751 + 752 @@ -14454,22 +14526,22 @@ 1 2 - 84528 + 84553 2 3 - 8406 + 8408 3 15 - 7678 + 7680 15 1509 - 951 + 952 @@ -14547,15 +14619,15 @@ orphaned_variables - 44320 + 44321 var - 44320 + 44321 function - 41050 + 41051 @@ -14569,7 +14641,7 @@ 1 2 - 44320 + 44321 @@ -14585,7 +14657,7 @@ 1 2 - 40198 + 40199 2 @@ -15318,7 +15390,7 @@ 1 2 - 347167 + 347168 2 @@ -15339,7 +15411,7 @@ 1 2 - 347167 + 347168 2 @@ -15392,7 +15464,7 @@ 1 2 - 347167 + 347168 2 @@ -16179,15 +16251,15 @@ derivedtypes - 3030853 + 3030855 id - 3030853 + 3030855 name - 1460537 + 1460538 kind @@ -16195,7 +16267,7 @@ type_id - 1946677 + 1946678 @@ -16209,7 +16281,7 @@ 1 2 - 3030853 + 3030855 @@ -16225,7 +16297,7 @@ 1 2 - 3030853 + 3030855 @@ -16241,7 +16313,7 @@ 1 2 - 3030853 + 3030855 @@ -16257,7 +16329,7 @@ 1 2 - 1344024 + 1344025 2 @@ -16283,7 +16355,7 @@ 1 2 - 1460537 + 1460538 @@ -16299,7 +16371,7 @@ 1 2 - 1344148 + 1344149 2 @@ -16510,7 +16582,7 @@ 1 2 - 1319324 + 1319325 2 @@ -16535,11 +16607,11 @@ pointerishsize - 2247317 + 2247318 id - 2247317 + 2247318 size @@ -16561,7 +16633,7 @@ 1 2 - 2247317 + 2247318 @@ -16577,7 +16649,7 @@ 1 2 - 2247317 + 2247318 @@ -17100,15 +17172,15 @@ typedefbase - 1762011 + 1762169 id - 1762011 + 1762169 type_id - 837877 + 837952 @@ -17122,7 +17194,7 @@ 1 2 - 1762011 + 1762169 @@ -17138,22 +17210,22 @@ 1 2 - 662420 + 662479 2 3 - 80933 + 80940 3 6 - 64163 + 64169 6 4526 - 30360 + 30363 @@ -17163,7 +17235,7 @@ decltypes - 814485 + 814486 id @@ -17171,7 +17243,7 @@ expr - 814485 + 814486 kind @@ -17301,7 +17373,7 @@ 1 2 - 814485 + 814486 @@ -17317,7 +17389,7 @@ 1 2 - 814485 + 814486 @@ -17333,7 +17405,7 @@ 1 2 - 814485 + 814486 @@ -17349,7 +17421,7 @@ 1 2 - 814485 + 814486 @@ -17611,15 +17683,15 @@ type_operators - 7950 + 7949 id - 7950 + 7949 arg_type - 7177 + 7176 kind @@ -17627,7 +17699,7 @@ base_type - 5243 + 5242 @@ -17641,7 +17713,7 @@ 1 2 - 7950 + 7949 @@ -17657,7 +17729,7 @@ 1 2 - 7950 + 7949 @@ -17673,7 +17745,7 @@ 1 2 - 7950 + 7949 @@ -17689,7 +17761,7 @@ 1 2 - 6403 + 6402 2 @@ -17710,7 +17782,7 @@ 1 2 - 6403 + 6402 2 @@ -17731,7 +17803,7 @@ 1 2 - 7155 + 7154 2 @@ -17927,15 +17999,15 @@ usertypes - 4150876 + 4151247 id - 4150876 + 4151247 name - 918367 + 918449 kind @@ -17953,7 +18025,7 @@ 1 2 - 4150876 + 4151247 @@ -17969,7 +18041,7 @@ 1 2 - 4150876 + 4151247 @@ -17985,22 +18057,22 @@ 1 2 - 654151 + 654210 2 3 - 158635 + 158649 3 8 - 70552 + 70559 8 32672 - 35028 + 35031 @@ -18016,12 +18088,12 @@ 1 2 - 866633 + 866710 2 10 - 51734 + 51739 @@ -18173,11 +18245,11 @@ usertypesize - 1363554 + 1363676 id - 1363554 + 1363676 size @@ -18199,7 +18271,7 @@ 1 2 - 1363554 + 1363676 @@ -18215,7 +18287,7 @@ 1 2 - 1363554 + 1363676 @@ -18473,11 +18545,11 @@ usertype_alias_kind - 1762011 + 1762169 id - 1762011 + 1762169 alias_kind @@ -18495,7 +18567,7 @@ 1 2 - 1762011 + 1762169 @@ -18526,26 +18598,26 @@ nontype_template_parameters - 766231 + 766248 id - 766231 + 766248 type_template_type_constraint - 27118 + 27115 id - 13365 + 13364 constraint - 25979 + 25976 @@ -18559,7 +18631,7 @@ 1 2 - 10206 + 10205 2 @@ -18595,7 +18667,7 @@ 1 2 - 24840 + 24837 2 @@ -18610,15 +18682,15 @@ mangled_name - 7853946 + 7853951 id - 7853946 + 7853951 mangled_name - 6364342 + 6364346 is_complete @@ -18636,7 +18708,7 @@ 1 2 - 7853946 + 7853951 @@ -18652,7 +18724,7 @@ 1 2 - 7853946 + 7853951 @@ -18668,7 +18740,7 @@ 1 2 - 6036258 + 6036261 2 @@ -18689,7 +18761,7 @@ 1 2 - 6364342 + 6364346 @@ -18741,59 +18813,59 @@ is_pod_class - 593785 + 593798 id - 593785 + 593798 is_standard_layout_class - 1124207 + 1124307 id - 1124207 + 1124307 is_complete - 1346034 + 1346155 id - 1346034 + 1346155 is_class_template - 232123 + 232144 id - 232123 + 232144 class_instantiation - 1125875 + 1125965 to - 1122823 + 1122924 from - 71788 + 71794 @@ -18807,12 +18879,12 @@ 1 2 - 1120680 + 1120790 2 8 - 2143 + 2133 @@ -18828,12 +18900,12 @@ 1 2 - 20497 + 20499 2 3 - 12883 + 12884 3 @@ -18848,27 +18920,27 @@ 5 7 - 6061 + 6072 7 10 - 5723 + 5713 10 17 - 5913 + 5903 17 51 - 5385 + 5396 51 4223 - 3558 + 3559 @@ -18878,11 +18950,11 @@ class_template_argument - 2898088 + 2898347 type_id - 1366848 + 1366971 index @@ -18890,7 +18962,7 @@ arg_type - 821942 + 822016 @@ -18904,27 +18976,27 @@ 1 2 - 579258 + 579310 2 3 - 410210 + 410247 3 4 - 250994 + 251017 4 7 - 103078 + 103087 7 113 - 23306 + 23308 @@ -18940,22 +19012,22 @@ 1 2 - 607792 + 607846 2 3 - 424213 + 424251 3 4 - 251829 + 251851 4 113 - 83013 + 83021 @@ -19063,22 +19135,22 @@ 1 2 - 513626 + 513672 2 3 - 167611 + 167626 3 5 - 75072 + 75079 5 47 - 61724 + 61729 47 @@ -19099,17 +19171,17 @@ 1 2 - 723679 + 723744 2 3 - 79898 + 79905 3 22 - 18364 + 18365 @@ -19119,11 +19191,11 @@ class_template_argument_value - 510048 + 510060 type_id - 205797 + 205802 index @@ -19131,7 +19203,7 @@ arg_value - 509912 + 509924 @@ -19145,12 +19217,12 @@ 1 2 - 155787 + 155791 2 3 - 43367 + 43368 3 @@ -19171,12 +19243,12 @@ 1 2 - 147918 + 147921 2 3 - 40471 + 40472 3 @@ -19314,7 +19386,7 @@ 1 2 - 509776 + 509787 2 @@ -19335,7 +19407,7 @@ 1 2 - 509912 + 509924 @@ -19345,15 +19417,15 @@ is_proxy_class_for - 48429 + 48433 id - 48429 + 48433 templ_param_id - 45757 + 45761 @@ -19367,7 +19439,7 @@ 1 2 - 48429 + 48433 @@ -19383,7 +19455,7 @@ 1 2 - 45039 + 45043 2 @@ -19398,11 +19470,11 @@ type_mentions - 5907627 + 5907630 id - 5907627 + 5907630 type_id @@ -19410,7 +19482,7 @@ location - 5851317 + 5851321 kind @@ -19428,7 +19500,7 @@ 1 2 - 5907627 + 5907630 @@ -19444,7 +19516,7 @@ 1 2 - 5907627 + 5907630 @@ -19460,7 +19532,7 @@ 1 2 - 5907627 + 5907630 @@ -19594,7 +19666,7 @@ 1 2 - 5805627 + 5805631 2 @@ -19615,7 +19687,7 @@ 1 2 - 5805627 + 5805631 2 @@ -19636,7 +19708,7 @@ 1 2 - 5851317 + 5851321 @@ -19705,15 +19777,15 @@ function_instantiation - 973767 + 973788 to - 973767 + 973788 from - 182700 + 182704 @@ -19727,7 +19799,7 @@ 1 2 - 973767 + 973788 @@ -19743,12 +19815,12 @@ 1 2 - 110581 + 110583 2 3 - 42787 + 42788 3 @@ -19758,7 +19830,7 @@ 9 104 - 13728 + 13729 119 @@ -19773,11 +19845,11 @@ function_template_argument - 2484632 + 2484687 function_id - 1453189 + 1453222 index @@ -19785,7 +19857,7 @@ arg_type - 297982 + 297989 @@ -19799,22 +19871,22 @@ 1 2 - 782958 + 782976 2 3 - 413128 + 413137 3 4 - 171799 + 171802 4 15 - 85303 + 85305 @@ -19830,22 +19902,22 @@ 1 2 - 802104 + 802122 2 3 - 411221 + 411230 3 4 - 169618 + 169622 4 9 - 70245 + 70247 @@ -19983,12 +20055,12 @@ 1 2 - 174762 + 174766 2 3 - 26333 + 26334 3 @@ -20003,17 +20075,17 @@ 6 11 - 23233 + 23234 11 76 - 23369 + 23370 79 2452 - 7630 + 7631 @@ -20029,7 +20101,7 @@ 1 2 - 256795 + 256801 2 @@ -20049,11 +20121,11 @@ function_template_argument_value - 452748 + 452758 function_id - 196770 + 196774 index @@ -20061,7 +20133,7 @@ arg_value - 450057 + 450067 @@ -20075,12 +20147,12 @@ 1 2 - 151393 + 151396 2 3 - 42890 + 42891 3 @@ -20101,7 +20173,7 @@ 1 2 - 144477 + 144480 2 @@ -20254,7 +20326,7 @@ 1 2 - 447365 + 447375 2 @@ -20275,7 +20347,7 @@ 1 2 - 450057 + 450067 @@ -20379,7 +20451,7 @@ variable_template_argument - 768940 + 768941 variable_id @@ -20849,7 +20921,7 @@ template_template_argument - 9673 + 9674 type_id @@ -20861,7 +20933,7 @@ arg_type - 9081 + 9082 @@ -21080,7 +21152,7 @@ 1 2 - 9060 + 9061 2 @@ -21231,19 +21303,19 @@ concept_templates - 3610 + 3609 concept_id - 3610 + 3609 name - 3610 + 3609 location - 3610 + 3609 @@ -21257,7 +21329,7 @@ 1 2 - 3610 + 3609 @@ -21273,7 +21345,7 @@ 1 2 - 3610 + 3609 @@ -21289,7 +21361,7 @@ 1 2 - 3610 + 3609 @@ -21305,7 +21377,7 @@ 1 2 - 3610 + 3609 @@ -21321,7 +21393,7 @@ 1 2 - 3610 + 3609 @@ -21337,7 +21409,7 @@ 1 2 - 3610 + 3609 @@ -21347,15 +21419,15 @@ concept_instantiation - 90315 + 90305 to - 90315 + 90305 from - 3438 + 3437 @@ -21369,7 +21441,7 @@ 1 2 - 90315 + 90305 @@ -21465,22 +21537,22 @@ is_type_constraint - 36852 + 36848 concept_id - 36852 + 36848 concept_template_argument - 112899 + 112887 concept_id - 76283 + 76275 index @@ -21488,7 +21560,7 @@ arg_type - 21402 + 21399 @@ -21502,12 +21574,12 @@ 1 2 - 46414 + 46409 2 3 - 24647 + 24644 3 @@ -21528,12 +21600,12 @@ 1 2 - 50024 + 50019 2 3 - 22347 + 22345 3 @@ -21636,7 +21708,7 @@ 1 2 - 10378 + 10377 2 @@ -21687,12 +21759,12 @@ 1 2 - 18007 + 18005 2 3 - 3266 + 3265 3 @@ -21838,15 +21910,15 @@ routinetypes - 604482 + 604495 id - 604482 + 604495 return_type - 283845 + 283851 @@ -21860,7 +21932,7 @@ 1 2 - 604482 + 604495 @@ -21876,7 +21948,7 @@ 1 2 - 234073 + 234078 2 @@ -21896,7 +21968,7 @@ routinetypeargs - 1178519 + 1178520 routine @@ -21908,7 +21980,7 @@ type_id - 112073 + 112074 @@ -22262,15 +22334,15 @@ ptrtomembers - 9725 + 9726 id - 9725 + 9726 type_id - 7972 + 7973 class_id @@ -22288,7 +22360,7 @@ 1 2 - 9725 + 9726 @@ -22304,7 +22376,7 @@ 1 2 - 9725 + 9726 @@ -22362,7 +22434,7 @@ 1 2 - 3896 + 3897 2 @@ -22393,7 +22465,7 @@ 1 2 - 3896 + 3897 2 @@ -22466,15 +22538,15 @@ typespecifiers - 854142 + 854164 type_id - 846657 + 849020 spec_id - 1621 + 95 @@ -22488,12 +22560,12 @@ 1 2 - 839173 + 843877 2 3 - 7484 + 5143 @@ -22507,69 +22579,49 @@ 12 - 1 - 2 - 124 + 168 + 169 + 10 - 2 - 3 - 124 + 215 + 216 + 10 - 16 - 17 - 124 + 225 + 226 + 10 - 17 - 18 - 124 + 533 + 534 + 10 - 24 - 25 - 124 + 821 + 822 + 10 - 44 - 45 - 124 + 1568 + 1569 + 10 - 49 - 50 - 124 + 4195 + 4196 + 10 - 51 - 52 - 124 + 18295 + 18296 + 10 - 112 - 113 - 124 - - - 199 - 200 - 124 - - - 325 - 326 - 124 - - - 545 - 546 - 124 - - - 5462 - 5463 - 124 + 54858 + 54859 + 10 @@ -22579,11 +22631,11 @@ funspecifiers - 9714174 + 9714180 func_id - 4008745 + 4008747 spec_id @@ -22601,7 +22653,7 @@ 1 2 - 1527028 + 1527029 2 @@ -22616,7 +22668,7 @@ 4 5 - 692844 + 692845 5 @@ -22737,11 +22789,11 @@ varspecifiers - 3075512 + 3075514 var_id - 2315054 + 2315056 spec_id @@ -22759,7 +22811,7 @@ 1 2 - 1658261 + 1658263 2 @@ -23405,7 +23457,7 @@ 1 2 - 642571 + 642572 2 @@ -23979,11 +24031,11 @@ attribute_arg_value - 16692 + 16693 arg - 16692 + 16693 value @@ -24001,7 +24053,7 @@ 1 2 - 16692 + 16693 @@ -24072,15 +24124,15 @@ attribute_arg_type - 459 + 460 arg - 459 + 460 type_id - 83 + 84 @@ -24094,7 +24146,7 @@ 1 2 - 459 + 460 @@ -24110,22 +24162,22 @@ 1 2 - 71 + 72 2 3 - 3 + 4 35 36 - 3 + 4 60 61 - 3 + 4 @@ -24135,15 +24187,15 @@ attribute_arg_constant - 71883 + 71889 arg - 71883 + 71889 constant - 71883 + 71889 @@ -24157,7 +24209,7 @@ 1 2 - 71883 + 71889 @@ -24173,7 +24225,7 @@ 1 2 - 71883 + 71889 @@ -24351,7 +24403,7 @@ func_id - 799004 + 799005 spec_id @@ -24369,7 +24421,7 @@ 1 2 - 758960 + 758961 2 @@ -24594,15 +24646,15 @@ unspecifiedtype - 7174200 + 7174204 type_id - 7174200 + 7174204 unspecified_type_id - 3962838 + 3962840 @@ -24616,7 +24668,7 @@ 1 2 - 7174200 + 7174204 @@ -24632,12 +24684,12 @@ 1 2 - 2481093 + 2481094 2 3 - 1116610 + 1116611 3 @@ -24657,7 +24709,7 @@ member - 4189503 + 4189506 parent @@ -24669,7 +24721,7 @@ child - 4184887 + 4184890 @@ -24703,7 +24755,7 @@ 5 6 - 42413 + 42414 6 @@ -24947,7 +24999,7 @@ 1 2 - 4184887 + 4184890 @@ -24963,7 +25015,7 @@ 1 2 - 4180272 + 4180274 2 @@ -24978,15 +25030,15 @@ enclosingfunction - 114805 + 114807 child - 114805 + 114807 parent - 71335 + 71337 @@ -25000,7 +25052,7 @@ 1 2 - 114805 + 114807 @@ -25016,7 +25068,7 @@ 1 2 - 49328 + 49329 2 @@ -25041,15 +25093,15 @@ derivations - 476867 + 476878 derivation - 476867 + 476878 sub - 455133 + 455143 index @@ -25057,11 +25109,11 @@ super - 235538 + 235543 location - 35395 + 35396 @@ -25075,7 +25127,7 @@ 1 2 - 476867 + 476878 @@ -25091,7 +25143,7 @@ 1 2 - 476867 + 476878 @@ -25107,7 +25159,7 @@ 1 2 - 476867 + 476878 @@ -25123,7 +25175,7 @@ 1 2 - 476867 + 476878 @@ -25139,7 +25191,7 @@ 1 2 - 438610 + 438620 2 @@ -25160,7 +25212,7 @@ 1 2 - 438610 + 438620 2 @@ -25181,7 +25233,7 @@ 1 2 - 438610 + 438620 2 @@ -25202,7 +25254,7 @@ 1 2 - 438610 + 438620 2 @@ -25362,7 +25414,7 @@ 1 2 - 225726 + 225732 2 @@ -25383,7 +25435,7 @@ 1 2 - 225726 + 225732 2 @@ -25404,7 +25456,7 @@ 1 2 - 235095 + 235100 2 @@ -25425,7 +25477,7 @@ 1 2 - 230189 + 230194 2 @@ -25518,7 +25570,7 @@ 1 2 - 35395 + 35396 @@ -25559,11 +25611,11 @@ derspecifiers - 478639 + 478649 der_id - 476424 + 476435 spec_id @@ -25581,7 +25633,7 @@ 1 2 - 474210 + 474221 2 @@ -25627,11 +25679,11 @@ direct_base_offsets - 449955 + 449965 der_id - 449955 + 449965 offset @@ -25649,7 +25701,7 @@ 1 2 - 449955 + 449965 @@ -25846,23 +25898,23 @@ frienddecls - 699835 + 700430 id - 699835 + 700430 type_id - 42413 + 42414 decl_id - 77876 + 77742 location - 6097 + 6098 @@ -25876,7 +25928,7 @@ 1 2 - 699835 + 700430 @@ -25892,7 +25944,7 @@ 1 2 - 699835 + 700430 @@ -25908,7 +25960,7 @@ 1 2 - 699835 + 700430 @@ -25924,12 +25976,12 @@ 1 2 - 6200 + 6166 2 3 - 14001 + 13967 3 @@ -25944,7 +25996,7 @@ 12 20 - 3577 + 3645 20 @@ -25980,12 +26032,12 @@ 1 2 - 6200 + 6166 2 3 - 14001 + 13967 3 @@ -26000,7 +26052,7 @@ 12 20 - 3577 + 3645 20 @@ -26036,7 +26088,7 @@ 1 2 - 41050 + 41051 2 @@ -26057,12 +26109,12 @@ 1 2 - 48170 + 47864 2 3 - 5893 + 6064 3 @@ -26072,17 +26124,17 @@ 8 15 - 5995 + 6064 15 40 - 6097 + 6064 40 164 - 5723 + 5689 @@ -26098,12 +26150,12 @@ 1 2 - 48170 + 47864 2 3 - 5893 + 6064 3 @@ -26113,17 +26165,17 @@ 8 15 - 5995 + 6064 15 40 - 6097 + 6064 40 164 - 5723 + 5689 @@ -26139,7 +26191,7 @@ 1 2 - 77195 + 77060 2 @@ -26164,7 +26216,7 @@ 2 - 20354 + 20371 374 @@ -26206,7 +26258,7 @@ 2 - 2133 + 2129 340 @@ -26217,19 +26269,19 @@ comments - 11233093 + 11233100 id - 11233093 + 11233100 contents - 4303522 + 4303524 location - 11233093 + 11233100 @@ -26243,7 +26295,7 @@ 1 2 - 11233093 + 11233100 @@ -26259,7 +26311,7 @@ 1 2 - 11233093 + 11233100 @@ -26275,12 +26327,12 @@ 1 2 - 3928782 + 3928784 2 6 - 322969 + 322970 6 @@ -26301,12 +26353,12 @@ 1 2 - 3928782 + 3928784 2 6 - 322969 + 322970 6 @@ -26327,7 +26379,7 @@ 1 2 - 11233093 + 11233100 @@ -26343,7 +26395,7 @@ 1 2 - 11233093 + 11233100 @@ -26353,15 +26405,15 @@ commentbinding - 3914685 + 3914688 id - 3350704 + 3350706 element - 3749146 + 3749148 @@ -26375,7 +26427,7 @@ 1 2 - 3289079 + 3289081 2 @@ -26396,7 +26448,7 @@ 1 2 - 3583607 + 3583609 2 @@ -26411,15 +26463,15 @@ exprconv - 9633161 + 9633168 converted - 9633056 + 9633062 conversion - 9633161 + 9633168 @@ -26433,7 +26485,7 @@ 1 2 - 9632950 + 9632957 2 @@ -26454,7 +26506,7 @@ 1 2 - 9633161 + 9633168 @@ -26464,22 +26516,22 @@ compgenerated - 9893081 + 9895967 id - 9893081 + 9895967 synthetic_destructor_call - 1669514 + 1669328 element - 1243336 + 1243197 i @@ -26487,7 +26539,7 @@ destructor_call - 1669514 + 1669328 @@ -26501,17 +26553,17 @@ 1 2 - 827601 + 827509 2 3 - 408944 + 408898 3 19 - 6790 + 6789 @@ -26527,17 +26579,17 @@ 1 2 - 827601 + 827509 2 3 - 408944 + 408898 3 19 - 6790 + 6789 @@ -26685,7 +26737,7 @@ 1 2 - 1669514 + 1669328 @@ -26701,7 +26753,7 @@ 1 2 - 1669514 + 1669328 @@ -26711,11 +26763,11 @@ namespaces - 8648 + 8649 id - 8648 + 8649 name @@ -26733,7 +26785,7 @@ 1 2 - 8648 + 8649 @@ -26780,7 +26832,7 @@ namespacembrs - 2038490 + 2038492 parentid @@ -26788,7 +26840,7 @@ memberid - 2038490 + 2038492 @@ -26878,7 +26930,7 @@ 1 2 - 2038490 + 2038492 @@ -26888,11 +26940,11 @@ exprparents - 19454445 + 19454457 expr_id - 19454445 + 19454457 child_index @@ -26900,7 +26952,7 @@ parent_id - 12940139 + 12940148 @@ -26914,7 +26966,7 @@ 1 2 - 19454445 + 19454457 @@ -26930,7 +26982,7 @@ 1 2 - 19454445 + 19454457 @@ -27048,17 +27100,17 @@ 1 2 - 7394844 + 7394848 2 3 - 5082739 + 5082743 3 712 - 462555 + 462556 @@ -27074,17 +27126,17 @@ 1 2 - 7394844 + 7394848 2 3 - 5082739 + 5082743 3 712 - 462555 + 462556 @@ -27094,22 +27146,22 @@ expr_isload - 6899307 + 6899311 expr_id - 6899307 + 6899311 conversionkinds - 6050440 + 6050443 expr_id - 6050440 + 6050443 kind @@ -27127,7 +27179,7 @@ 1 2 - 6050440 + 6050443 @@ -27171,8 +27223,8 @@ 1 - 5831532 - 5831533 + 5831535 + 5831536 1 @@ -27183,11 +27235,11 @@ iscall - 5800862 + 5800192 caller - 5800862 + 5800192 kind @@ -27205,7 +27257,7 @@ 1 2 - 5800862 + 5800192 @@ -27229,8 +27281,8 @@ 21 - 268316 - 268317 + 268315 + 268316 21 @@ -27241,11 +27293,11 @@ numtemplatearguments - 627726 + 627727 expr_id - 627726 + 627727 num @@ -27263,7 +27315,7 @@ 1 2 - 627726 + 627727 @@ -27347,23 +27399,23 @@ namequalifiers - 3037999 + 3037638 id - 3037999 + 3037638 qualifiableelement - 3037999 + 3037638 qualifyingelement - 47424 + 47419 location - 551734 + 551672 @@ -27377,7 +27429,7 @@ 1 2 - 3037999 + 3037638 @@ -27393,7 +27445,7 @@ 1 2 - 3037999 + 3037638 @@ -27409,7 +27461,7 @@ 1 2 - 3037999 + 3037638 @@ -27425,7 +27477,7 @@ 1 2 - 3037999 + 3037638 @@ -27441,7 +27493,7 @@ 1 2 - 3037999 + 3037638 @@ -27457,7 +27509,7 @@ 1 2 - 3037999 + 3037638 @@ -27473,22 +27525,22 @@ 1 2 - 31501 + 31498 2 3 - 8165 + 8164 3 5 - 4104 + 4103 5 - 6811 - 3567 + 6810 + 3566 19018 @@ -27509,22 +27561,22 @@ 1 2 - 31501 + 31498 2 3 - 8165 + 8164 3 5 - 4104 + 4103 5 - 6811 - 3567 + 6810 + 3566 19018 @@ -27545,17 +27597,17 @@ 1 2 - 34359 + 34356 2 3 - 7349 + 7348 3 6 - 3567 + 3566 6 @@ -27576,22 +27628,22 @@ 1 2 - 79034 + 79046 2 6 - 38055 + 38030 6 7 - 398479 + 398435 7 192 - 36164 + 36160 @@ -27607,22 +27659,22 @@ 1 2 - 79034 + 79046 2 6 - 38055 + 38030 6 7 - 398479 + 398435 7 192 - 36164 + 36160 @@ -27638,22 +27690,22 @@ 1 2 - 111395 + 111383 2 4 - 13279 + 13278 4 5 - 414767 + 414721 5 33 - 12291 + 12289 @@ -27663,15 +27715,15 @@ varbind - 8254728 + 8254733 expr - 8254728 + 8254733 var - 1050388 + 1050389 @@ -27685,7 +27737,7 @@ 1 2 - 8254728 + 8254733 @@ -27701,12 +27753,12 @@ 1 2 - 171537 + 171538 2 3 - 188702 + 188703 3 @@ -27756,15 +27808,15 @@ funbind - 5810554 + 5809904 expr - 5808083 + 5807433 fun - 275716 + 275686 @@ -27778,12 +27830,12 @@ 1 2 - 5805611 + 5804962 2 3 - 2471 + 2470 @@ -27799,27 +27851,27 @@ 1 2 - 181318 + 181298 2 3 - 38786 + 38782 3 4 - 17169 + 17167 4 8 - 22713 + 22710 8 37798 - 15729 + 15727 @@ -27829,11 +27881,11 @@ expr_allocator - 45240 + 45241 expr - 45240 + 45241 func @@ -27855,7 +27907,7 @@ 1 2 - 45240 + 45241 @@ -27871,7 +27923,7 @@ 1 2 - 45240 + 45241 @@ -27955,11 +28007,11 @@ expr_deallocator - 53825 + 53826 expr - 53825 + 53826 func @@ -27981,7 +28033,7 @@ 1 2 - 53825 + 53826 @@ -27997,7 +28049,7 @@ 1 2 - 53825 + 53826 @@ -28246,11 +28298,11 @@ values - 13474763 + 13474772 id - 13474763 + 13474772 str @@ -28268,7 +28320,7 @@ 1 2 - 13474763 + 13474772 @@ -28314,11 +28366,11 @@ valuetext - 6647515 + 6647555 id - 6647515 + 6647555 text @@ -28336,7 +28388,7 @@ 1 2 - 6647515 + 6647555 @@ -28377,15 +28429,15 @@ valuebind - 13583347 + 13583356 val - 13474763 + 13474772 expr - 13583347 + 13583356 @@ -28399,7 +28451,7 @@ 1 2 - 13384208 + 13384216 2 @@ -28420,7 +28472,7 @@ 1 2 - 13583347 + 13583356 @@ -28430,11 +28482,11 @@ fieldoffsets - 1499493 + 1499494 id - 1499493 + 1499494 byteoffset @@ -28456,7 +28508,7 @@ 1 2 - 1499493 + 1499494 @@ -28472,7 +28524,7 @@ 1 2 - 1499493 + 1499494 @@ -28817,19 +28869,19 @@ initialisers - 2247635 + 2247637 init - 2247635 + 2247637 var - 979695 + 979696 expr - 2247635 + 2247637 location @@ -28847,7 +28899,7 @@ 1 2 - 2247635 + 2247637 @@ -28863,7 +28915,7 @@ 1 2 - 2247635 + 2247637 @@ -28879,7 +28931,7 @@ 1 2 - 2247635 + 2247637 @@ -28947,7 +28999,7 @@ 1 2 - 979687 + 979688 2 @@ -28968,7 +29020,7 @@ 1 2 - 2247635 + 2247637 @@ -28984,7 +29036,7 @@ 1 2 - 2247635 + 2247637 @@ -29000,7 +29052,7 @@ 1 2 - 2247635 + 2247637 @@ -29016,7 +29068,7 @@ 1 2 - 414607 + 414608 2 @@ -29073,7 +29125,7 @@ 1 2 - 414607 + 414608 2 @@ -29098,26 +29150,26 @@ braced_initialisers - 68436 + 68305 init - 68436 + 68305 expr_ancestor - 1675488 + 1675301 exp - 1675488 + 1675301 ancestor - 838560 + 838467 @@ -29131,7 +29183,7 @@ 1 2 - 1675488 + 1675301 @@ -29147,17 +29199,17 @@ 1 2 - 17061 + 17059 2 3 - 811442 + 811351 3 19 - 10056 + 10055 @@ -29167,11 +29219,11 @@ exprs - 25210871 + 25210887 id - 25210871 + 25210887 kind @@ -29179,7 +29231,7 @@ location - 10585982 + 10585988 @@ -29193,7 +29245,7 @@ 1 2 - 25210871 + 25210887 @@ -29209,7 +29261,7 @@ 1 2 - 25210871 + 25210887 @@ -29387,7 +29439,7 @@ 1 2 - 8903992 + 8903998 2 @@ -29418,7 +29470,7 @@ 1 2 - 9043396 + 9043402 2 @@ -29438,15 +29490,15 @@ expr_reuse - 845931 + 845836 reuse - 845931 + 845836 original - 845931 + 845836 value_category @@ -29464,7 +29516,7 @@ 1 2 - 845931 + 845836 @@ -29480,7 +29532,7 @@ 1 2 - 845931 + 845836 @@ -29496,7 +29548,7 @@ 1 2 - 845931 + 845836 @@ -29512,7 +29564,7 @@ 1 2 - 845931 + 845836 @@ -29564,11 +29616,11 @@ expr_types - 25210871 + 25210887 id - 25210871 + 25210887 typeid @@ -29590,7 +29642,7 @@ 1 2 - 25210871 + 25210887 @@ -29606,7 +29658,7 @@ 1 2 - 25210871 + 25210887 @@ -29751,15 +29803,15 @@ new_allocated_type - 46194 + 46195 expr - 46194 + 46195 type_id - 27389 + 27390 @@ -29773,7 +29825,7 @@ 1 2 - 46194 + 46195 @@ -31208,15 +31260,15 @@ condition_decl_bind - 408385 + 408340 expr - 408385 + 408340 decl - 408385 + 408340 @@ -31230,7 +31282,7 @@ 1 2 - 408385 + 408340 @@ -31246,7 +31298,7 @@ 1 2 - 408385 + 408340 @@ -31256,11 +31308,11 @@ typeid_bind - 47898 + 47899 expr - 47898 + 47899 type_id @@ -31278,7 +31330,7 @@ 1 2 - 47898 + 47899 @@ -31367,11 +31419,11 @@ sizeof_bind - 242029 + 242030 expr - 242029 + 242030 type_id @@ -31389,7 +31441,7 @@ 1 2 - 242029 + 242030 @@ -33088,11 +33140,11 @@ stmts - 6358197 + 6358201 id - 6358197 + 6358201 kind @@ -33100,7 +33152,7 @@ location - 2679767 + 2679769 @@ -33114,7 +33166,7 @@ 1 2 - 6358197 + 6358201 @@ -33130,7 +33182,7 @@ 1 2 - 6358197 + 6358201 @@ -33368,7 +33420,7 @@ 1 2 - 2221078 + 2221080 2 @@ -33399,7 +33451,7 @@ 1 2 - 2596949 + 2596951 2 @@ -33569,15 +33621,15 @@ if_then - 990226 + 990227 if_stmt - 990226 + 990227 then_id - 990226 + 990227 @@ -33591,7 +33643,7 @@ 1 2 - 990226 + 990227 @@ -33607,7 +33659,7 @@ 1 2 - 990226 + 990227 @@ -33617,15 +33669,15 @@ if_else - 436535 + 436486 if_stmt - 436535 + 436486 else_id - 436535 + 436486 @@ -33639,7 +33691,7 @@ 1 2 - 436535 + 436486 @@ -33655,7 +33707,7 @@ 1 2 - 436535 + 436486 @@ -33713,15 +33765,15 @@ constexpr_if_then - 106034 + 106035 constexpr_if_stmt - 106034 + 106035 then_id - 106034 + 106035 @@ -33735,7 +33787,7 @@ 1 2 - 106034 + 106035 @@ -33751,7 +33803,7 @@ 1 2 - 106034 + 106035 @@ -33953,15 +34005,15 @@ do_body - 233643 + 233644 do_stmt - 233643 + 233644 body_id - 233643 + 233644 @@ -33975,7 +34027,7 @@ 1 2 - 233643 + 233644 @@ -33991,7 +34043,7 @@ 1 2 - 233643 + 233644 @@ -34049,11 +34101,11 @@ switch_case - 835058 + 834964 switch_stmt - 411329 + 411283 index @@ -34061,7 +34113,7 @@ case_id - 835058 + 834964 @@ -34080,7 +34132,7 @@ 2 3 - 408450 + 408404 3 @@ -34106,7 +34158,7 @@ 2 3 - 408450 + 408404 3 @@ -34269,7 +34321,7 @@ 1 2 - 835058 + 834964 @@ -34285,7 +34337,7 @@ 1 2 - 835058 + 834964 @@ -34295,15 +34347,15 @@ switch_body - 411329 + 411283 switch_stmt - 411329 + 411283 body_id - 411329 + 411283 @@ -34317,7 +34369,7 @@ 1 2 - 411329 + 411283 @@ -34333,7 +34385,7 @@ 1 2 - 411329 + 411283 @@ -34535,11 +34587,11 @@ stmtparents - 5618643 + 5618647 id - 5618643 + 5618647 index @@ -34547,7 +34599,7 @@ parent - 2377534 + 2377536 @@ -34561,7 +34613,7 @@ 1 2 - 5618643 + 5618647 @@ -34577,7 +34629,7 @@ 1 2 - 5618643 + 5618647 @@ -34715,12 +34767,12 @@ 1 2 - 1356880 + 1356881 2 3 - 516457 + 516458 3 @@ -34756,12 +34808,12 @@ 1 2 - 1356880 + 1356881 2 3 - 516457 + 516458 3 @@ -34791,22 +34843,22 @@ ishandler - 43770 + 43779 block - 43770 + 43779 stmt_decl_bind - 724592 + 724593 stmt - 714042 + 714043 num @@ -34814,7 +34866,7 @@ decl - 724592 + 724593 @@ -34828,7 +34880,7 @@ 1 2 - 706590 + 706591 2 @@ -34849,7 +34901,7 @@ 1 2 - 706590 + 706591 2 @@ -34982,7 +35034,7 @@ 1 2 - 724592 + 724593 @@ -34998,7 +35050,7 @@ 1 2 - 724592 + 724593 @@ -35008,11 +35060,11 @@ stmt_decl_entry_bind - 724592 + 724593 stmt - 714042 + 714043 num @@ -35020,7 +35072,7 @@ decl_entry - 724592 + 724593 @@ -35034,7 +35086,7 @@ 1 2 - 706590 + 706591 2 @@ -35055,7 +35107,7 @@ 1 2 - 706590 + 706591 2 @@ -35188,7 +35240,7 @@ 1 2 - 724592 + 724593 @@ -35204,7 +35256,7 @@ 1 2 - 724592 + 724593 @@ -35214,15 +35266,15 @@ blockscope - 1644290 + 1644291 block - 1644290 + 1644291 enclosing - 1427105 + 1427106 @@ -35236,7 +35288,7 @@ 1 2 - 1644290 + 1644291 @@ -35252,7 +35304,7 @@ 1 2 - 1294499 + 1294500 2 @@ -35272,11 +35324,11 @@ jumpinfo - 348324 + 348325 id - 348324 + 348325 str @@ -35284,7 +35336,7 @@ target - 72706 + 72707 @@ -35298,7 +35350,7 @@ 1 2 - 348324 + 348325 @@ -35314,7 +35366,7 @@ 1 2 - 348324 + 348325 @@ -35443,7 +35495,7 @@ 1 2 - 72706 + 72707 @@ -35453,11 +35505,11 @@ preprocdirects - 5408281 + 5408285 id - 5408281 + 5408285 kind @@ -35465,7 +35517,7 @@ location - 5405038 + 5405041 @@ -35479,7 +35531,7 @@ 1 2 - 5408281 + 5408285 @@ -35495,7 +35547,7 @@ 1 2 - 5408281 + 5408285 @@ -35643,7 +35695,7 @@ 1 2 - 5404913 + 5404916 27 @@ -35664,7 +35716,7 @@ 1 2 - 5405038 + 5405041 @@ -35674,7 +35726,7 @@ preprocpair - 1141185 + 1141186 begin @@ -35682,7 +35734,7 @@ elseelifend - 1141185 + 1141186 @@ -35696,7 +35748,7 @@ 1 2 - 649557 + 649558 2 @@ -35722,7 +35774,7 @@ 1 2 - 1141185 + 1141186 @@ -35732,11 +35784,11 @@ preproctrue - 439358 + 439359 branch - 439358 + 439359 @@ -35754,19 +35806,19 @@ preproctext - 4352298 + 4352301 id - 4352298 + 4352301 head - 2955007 + 2955008 body - 1683336 + 1683337 @@ -35780,7 +35832,7 @@ 1 2 - 4352298 + 4352301 @@ -35796,7 +35848,7 @@ 1 2 - 4352298 + 4352301 @@ -35812,7 +35864,7 @@ 1 2 - 2756409 + 2756411 2 @@ -35833,7 +35885,7 @@ 1 2 - 2873796 + 2873798 2 @@ -35854,12 +35906,12 @@ 1 2 - 1535136 + 1535137 2 10 - 127241 + 127242 10 @@ -35880,7 +35932,7 @@ 1 2 - 1539378 + 1539379 2 @@ -35900,15 +35952,15 @@ includes - 318569 + 318598 id - 318569 + 318598 included - 58683 + 58688 @@ -35922,7 +35974,7 @@ 1 2 - 318569 + 318598 @@ -35938,17 +35990,17 @@ 1 2 - 29040 + 29043 2 3 - 9440 + 9441 3 4 - 4952 + 4953 4 @@ -35958,7 +36010,7 @@ 6 11 - 4519 + 4520 11 @@ -36026,11 +36078,11 @@ link_parent - 30400377 + 30401054 element - 3866383 + 3866469 link_target @@ -36048,17 +36100,17 @@ 1 2 - 530489 + 530500 2 9 - 26946 + 26947 9 10 - 3308947 + 3309021 From 6c7370ea95fb8ac1b92584aaa04cc61d0141198b Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 21 Nov 2025 11:30:58 +0000 Subject: [PATCH 891/965] C++: Add up/downgrade scripts --- .../old.dbscheme | 2469 +++++++++++++++++ .../semmlecode.dbscheme | 2450 ++++++++++++++++ .../upgrade.properties | 4 + .../old.dbscheme | 2450 ++++++++++++++++ .../semmlecode.cpp.dbscheme | 2469 +++++++++++++++++ .../upgrade.properties | 2 + 6 files changed, 9844 insertions(+) create mode 100644 cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme create mode 100644 cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme create mode 100644 cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties diff --git a/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme new file mode 100644 index 00000000000..a42ce5fc943 --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/old.dbscheme @@ -0,0 +1,2469 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme new file mode 100644 index 00000000000..1a6854060d5 --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/semmlecode.dbscheme @@ -0,0 +1,2450 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties new file mode 100644 index 00000000000..1a7cdb0ad71 --- /dev/null +++ b/cpp/downgrades/a42ce5fc943254097f85471b94ae2247e819104a/upgrade.properties @@ -0,0 +1,4 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full +databaseMetadata.rel: delete +overlayChangedFiles.rel: delete diff --git a/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme new file mode 100644 index 00000000000..1a6854060d5 --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/old.dbscheme @@ -0,0 +1,2450 @@ +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..a42ce5fc943 --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/semmlecode.cpp.dbscheme @@ -0,0 +1,2469 @@ + +/*- Compilations -*/ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/*- External data -*/ + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Lines of code -*/ + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- C++ dbscheme -*/ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +pch_uses( + int pch: @pch ref, + int compilation: @compilation ref, + int id: @file ref +) + +#keyset[pch, compilation] +pch_creations( + int pch: @pch, + int compilation: @compilation ref, + int from: @file ref +) + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location_default ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +case @function.kind of + 0 = @unknown_function +| 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +// ... 6 = @builtin_function deprecated // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +builtin_functions( + int id: @function ref +) + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +| 63 = @scalable_vector_count // __SVCount_t +| 64 = @complex_fp16 // _Complex __fp16 +| 65 = @complex_std_bfloat16 // _Complex __bf16 +| 66 = @complex_std_float16 // _Complex std::float16_t +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +| 11 = @scalable_vector // Arm SVE +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +tupleelements( + unique int id: @derivedtype ref, + int num_elements: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +case @type_operator.kind of + 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +case @usertype.kind of + 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location_default ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype + | @decltype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_default ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_default ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_default ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- XML Files -*/ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties new file mode 100644 index 00000000000..52b67d65af7 --- /dev/null +++ b/cpp/ql/lib/upgrades/1a6854060d5d3ada16c580a29f8c5ce21f3367f8/upgrade.properties @@ -0,0 +1,2 @@ +description: Add databaseMetadata and overlayChangedFiles relations +compatibility: full From 74d725ef2108c40564154db870a4c378344cdf74 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:31:09 +0100 Subject: [PATCH 892/965] JS: Remove unnecessary override in OriginalExportDeclaration --- javascript/ql/lib/semmle/javascript/ES2015Modules.qll | 6 ------ 1 file changed, 6 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index eee808ce020..bd6e8071cc5 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -820,12 +820,6 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla class OriginalExportDeclaration extends ExportDeclaration { OriginalExportDeclaration() { not this instanceof ReExportDeclaration } - overlay[global] - override predicate exportsAs(LexicalName v, string name) { - this.(ExportDefaultDeclaration).exportsAs(v, name) or - this.(ExportNamedDeclaration).exportsAs(v, name) - } - overlay[global] override DataFlow::Node getSourceNode(string name) { result = this.(ExportDefaultDeclaration).getSourceNode(name) or From 78c8ab11f2293addbf327c954373a40912d23b5f Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:31:34 +0100 Subject: [PATCH 893/965] JS: Split exportsAs into exportsDirectlyAs and reExportsAs --- .../lib/semmle/javascript/ES2015Modules.qll | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index bd6e8071cc5..8634b6539f7 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -345,7 +345,17 @@ abstract class ExportDeclaration extends Stmt, @export_declaration { /** Holds if this export declaration exports variable `v` under the name `name`. */ overlay[global] - abstract predicate exportsAs(LexicalName v, string name); + final predicate exportsAs(LexicalName v, string name) { + this.exportsDirectlyAs(v, name) + or + this.(ReExportDeclaration).reExportsAs(v, name) + } + + /** + * Holds if this export declaration exports variable `v` under the name `name`, + * not counting re-exports. + */ + predicate exportsDirectlyAs(LexicalName v, string name) { none() } /** * Gets the data flow node corresponding to the value this declaration exports @@ -421,7 +431,7 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati override ConstantString getImportedPath() { result = this.getChildExpr(0) } overlay[global] - override predicate exportsAs(LexicalName v, string name) { + override predicate reExportsAs(LexicalName v, string name) { this.getReExportedES2015Module().exportsAs(v, name) and not isShadowedFromBulkExport(this.getEnclosingModule(), name) } @@ -468,8 +478,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar /** Gets the operand statement or expression that is exported by this declaration. */ ExprOrStmt getOperand() { result = this.getChild(0) } - overlay[global] - override predicate exportsAs(LexicalName v, string name) { + override predicate exportsDirectlyAs(LexicalName v, string name) { name = "default" and v = this.getADecl().getVariable() } @@ -524,16 +533,13 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio /** Gets the variable declaration, if any, exported by this named export. */ VarDecl getADecl() { result = this.getAnExportedDecl() } - overlay[global] - override predicate exportsAs(LexicalName v, string name) { + override predicate exportsDirectlyAs(LexicalName v, string name) { exists(LexicalDecl vd | vd = this.getAnExportedDecl() | name = vd.getName() and v = vd.getALexicalName() ) or exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | v = spec.getLocal().(LexicalAccess).getALexicalName() - or - this.(ReExportDeclaration).getReExportedES2015Module().exportsAs(v, spec.getLocalName()) ) } @@ -593,9 +599,8 @@ private class ExportNamespaceStep extends PreCallGraphStep { private class TypeOnlyExportDeclaration extends ExportNamedDeclaration { TypeOnlyExportDeclaration() { this.isTypeOnly() } - overlay[global] - override predicate exportsAs(LexicalName v, string name) { - super.exportsAs(v, name) and + override predicate exportsDirectlyAs(LexicalName v, string name) { + super.exportsDirectlyAs(v, name) and not v instanceof Variable } } @@ -777,6 +782,9 @@ abstract class ReExportDeclaration extends ExportDeclaration { Stages::Imports::ref() and result.getFile() = ImportPathResolver::resolveExpr(this.getImportedPath()) } + + overlay[global] + abstract predicate reExportsAs(LexicalName v, string name); } /** A literal path expression appearing in a re-export declaration. */ @@ -803,6 +811,13 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla override ConstantString getImportedPath() { result = ExportNamedDeclaration.super.getImportedPath() } + + overlay[global] + override predicate reExportsAs(LexicalName v, string name) { + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + this.getReExportedES2015Module().exportsAs(v, spec.getLocalName()) + ) + } } /** From 3a393ecd540218d96d59551741955a476cdad8b5 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:41:34 +0100 Subject: [PATCH 894/965] Fixup! qldoc for reExportsAs --- javascript/ql/lib/semmle/javascript/ES2015Modules.qll | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 8634b6539f7..2c1ec9cc95d 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -783,6 +783,10 @@ abstract class ReExportDeclaration extends ExportDeclaration { result.getFile() = ImportPathResolver::resolveExpr(this.getImportedPath()) } + /** + * Holds if this re-export destination ultimately re-exports `v` (from another module) + * under the given `name`. + */ overlay[global] abstract predicate reExportsAs(LexicalName v, string name); } From 94566e5e1e410114f78b88bdf7c4c7ffb403a351 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:42:10 +0100 Subject: [PATCH 895/965] JS: Remove unnecessary override in OriginalExportDeclaration --- javascript/ql/lib/semmle/javascript/ES2015Modules.qll | 6 ------ 1 file changed, 6 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 2c1ec9cc95d..87913bf7b47 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -838,10 +838,4 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla */ class OriginalExportDeclaration extends ExportDeclaration { OriginalExportDeclaration() { not this instanceof ReExportDeclaration } - - overlay[global] - override DataFlow::Node getSourceNode(string name) { - result = this.(ExportDefaultDeclaration).getSourceNode(name) or - result = this.(ExportNamedDeclaration).getSourceNode(name) - } } From 9c4f85f15bce9be28c3413fa1ba64f863ea9e5fe Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 12:42:30 +0100 Subject: [PATCH 896/965] JS: Split getSourceNode into getDirectSourceNode and getReExportedSourceNode --- .../lib/semmle/javascript/ES2015Modules.qll | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 87913bf7b47..de9bb022afc 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -379,7 +379,17 @@ abstract class ExportDeclaration extends Stmt, @export_declaration { * to module `a` or possibly to some other module from which `a` re-exports. */ overlay[global] - abstract DataFlow::Node getSourceNode(string name); + final DataFlow::Node getSourceNode(string name) { + result = this.getDirectSourceNode(name) + or + result = this.(ReExportDeclaration).getReExportedSourceNode(name) + } + + /** + * Gets the data flow node corresponding to the value this declaration exports + * under the name `name`, not including sources that come from a re-export. + */ + DataFlow::Node getDirectSourceNode(string name) { none() } /** Holds if is declared with the `type` keyword, so only types are exported. */ predicate isTypeOnly() { has_type_keyword(this) } @@ -437,7 +447,7 @@ class BulkReExportDeclaration extends ReExportDeclaration, @export_all_declarati } overlay[global] - override DataFlow::Node getSourceNode(string name) { + override DataFlow::Node getReExportedSourceNode(string name) { result = this.getReExportedES2015Module().getAnExport().getSourceNode(name) } } @@ -490,8 +500,7 @@ class ExportDefaultDeclaration extends ExportDeclaration, @export_default_declar ) } - overlay[global] - override DataFlow::Node getSourceNode(string name) { + override DataFlow::Node getDirectSourceNode(string name) { name = "default" and result = DataFlow::valueNode(this.getOperand()) } } @@ -543,8 +552,7 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio ) } - overlay[global] - override DataFlow::Node getSourceNode(string name) { + override DataFlow::Node getDirectSourceNode(string name) { exists(VarDef d | d.getTarget() = this.getADecl() | name = d.getTarget().(VarDecl).getName() and result = DataFlow::valueNode(d.getSource()) @@ -560,12 +568,11 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | not exists(this.getImportedPath()) and result = DataFlow::valueNode(spec.getLocal()) or - exists(ReExportDeclaration red | red = this | - result = red.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName()) - or - spec instanceof ExportNamespaceSpecifier and - result = DataFlow::valueNode(spec) - ) + // For `export * as B from ".."`, we use the ExportNamespaceSpecifier as a representative for the + // object that gets exposed as `B`. + this instanceof ReExportDeclaration and + spec instanceof ExportNamespaceSpecifier and + result = DataFlow::valueNode(spec) ) } @@ -789,6 +796,13 @@ abstract class ReExportDeclaration extends ExportDeclaration { */ overlay[global] abstract predicate reExportsAs(LexicalName v, string name); + + /** + * Gets the data flow node (from another module) corresponding to the value that is re-exported + * under the name `name`. + */ + overlay[global] + abstract DataFlow::Node getReExportedSourceNode(string name); } /** A literal path expression appearing in a re-export declaration. */ @@ -822,6 +836,13 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla this.getReExportedES2015Module().exportsAs(v, spec.getLocalName()) ) } + + overlay[global] + override DataFlow::Node getReExportedSourceNode(string name) { + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + result = this.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName()) + ) + } } /** From 298e4cfcc5829f662f20e0ede76d35fb1e2b8b69 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 21 Nov 2025 12:53:39 +0100 Subject: [PATCH 897/965] Java: Recognize int-sized long literals. --- java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll index 269c47dc3b7..6985053735c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll +++ b/java/ql/lib/semmle/code/java/dataflow/RangeUtils.qll @@ -86,6 +86,8 @@ pragma[nomagic] private predicate constantIntegerExpr(Expr e, int val) { e.(CompileTimeConstantExpr).getIntValue() = val or + e.(LongLiteral).getValue().toInt() = val + or exists(SsaExplicitWrite v, Expr src | e = v.getARead() and src = v.getValue() and From 51e1bda608d066ef12cec3a1ce5bd9162519be75 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 21 Nov 2025 13:10:32 +0100 Subject: [PATCH 898/965] JS: Move isTypeOnly() check into a direct check, instead of an override --- .../lib/semmle/javascript/ES2015Modules.qll | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index de9bb022afc..ecce9621c24 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -543,13 +543,16 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio VarDecl getADecl() { result = this.getAnExportedDecl() } override predicate exportsDirectlyAs(LexicalName v, string name) { - exists(LexicalDecl vd | vd = this.getAnExportedDecl() | - name = vd.getName() and v = vd.getALexicalName() - ) - or - exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | - v = spec.getLocal().(LexicalAccess).getALexicalName() - ) + ( + exists(LexicalDecl vd | vd = this.getAnExportedDecl() | + name = vd.getName() and v = vd.getALexicalName() + ) + or + exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | + v = spec.getLocal().(LexicalAccess).getALexicalName() + ) + ) and + not (this.isTypeOnly() and v instanceof Variable) } override DataFlow::Node getDirectSourceNode(string name) { @@ -600,18 +603,6 @@ private class ExportNamespaceStep extends PreCallGraphStep { } } -/** - * An export declaration with the `type` modifier. - */ -private class TypeOnlyExportDeclaration extends ExportNamedDeclaration { - TypeOnlyExportDeclaration() { this.isTypeOnly() } - - override predicate exportsDirectlyAs(LexicalName v, string name) { - super.exportsDirectlyAs(v, name) and - not v instanceof Variable - } -} - /** * An export specifier in an export declaration. * @@ -834,7 +825,8 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla override predicate reExportsAs(LexicalName v, string name) { exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() | this.getReExportedES2015Module().exportsAs(v, spec.getLocalName()) - ) + ) and + not (this.isTypeOnly() and v instanceof Variable) } overlay[global] From 2da0814f652698096e9280beb7f1781fc7d623a7 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:15:33 +0000 Subject: [PATCH 899/965] Rust: Add test case involving taint. --- .../CWE-295/DisabledCertificateCheck.expected | 12 +++-- .../test/query-tests/security/CWE-295/main.rs | 49 +++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index e060b50494d..87ca24ddd2f 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -11,14 +11,17 @@ | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:93:32:93:47 | sometimes_global | main.rs:106:17:106:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | | main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | -| main.rs:106:17:106:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | +| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | +| main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | +| main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | nodes | main.rs:4:32:4:35 | true | semmle.label | true | | main.rs:9:36:9:39 | true | semmle.label | true | @@ -38,5 +41,8 @@ nodes | main.rs:83:32:83:37 | always | semmle.label | always | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | -| main.rs:106:17:106:20 | true | semmle.label | true | +| main.rs:144:6:144:7 | b6 | semmle.label | b6 | +| main.rs:144:39:144:42 | true | semmle.label | true | +| main.rs:146:36:146:37 | b6 | semmle.label | b6 | +| main.rs:154:17:154:20 | true | semmle.label | true | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs index 02bd61976e5..f12f0858060 100644 --- a/rust/ql/test/query-tests/security/CWE-295/main.rs +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -100,9 +100,58 @@ fn test_data_flow(sometimes_global: bool) { .unwrap(); } +fn test_threat_model_source() { + // hostname setting from `fs` functions returning `bool` directly + // (these are highly unnatural but serve to create simple tests) + + let b1: bool = std::fs::exists("main.rs").unwrap(); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b1) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .build() + .unwrap(); + + let b2 = std::path::Path::new("main.rs").metadata().unwrap().is_file(); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b2) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .build() + .unwrap(); + + let b3 = std::fs::metadata("main.rs").unwrap().is_dir(); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b3) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .build() + .unwrap(); + + // hostname setting from `stdin`, parsed to `bool` + // (these are a little closer to something real) + + let mut input_line = String::new(); + let input = std::io::stdin(); + input.read_line(&mut input_line).unwrap(); + + let b4: bool = input_line.parse::().unwrap_or(false); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b4) // $ MISSING: Alert[rust/disabled-certificate-check]=stdin + .build() + .unwrap(); + + let b5 = std::str::FromStr::from_str(&input_line).unwrap_or(false); + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b5) // $ MISSING: Alert[rust/disabled-certificate-check]=stdin + .build() + .unwrap(); + + let b6 = if (input_line == "true") { true } else { false }; // $ Source=true + let _client = native_tls::TlsConnector::builder() + .danger_accept_invalid_hostnames(b6) // $ Alert[rust/disabled-certificate-check]=true + .build() + .unwrap(); +} + fn main() { test_native_tls(); test_reqwest(); test_data_flow(true); // $ Source=arg test_data_flow(false); + test_threat_model_source(); } From 8145264b770b92daa2f55fd06145ecf86e7536ef Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:01:16 +0000 Subject: [PATCH 900/965] Rust: Add threat model sources as additional sources for the query. --- .../src/queries/security/CWE-295/DisabledCertificateCheck.ql | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index d08ca32bb25..487a2a00912 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -14,6 +14,7 @@ import rust import codeql.rust.dataflow.DataFlow import codeql.rust.security.DisabledCertificateCheckExtensions +import codeql.rust.Concepts /** * A taint configuration for disabled TLS certificate checks. @@ -22,7 +23,11 @@ module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { import DisabledCertificateCheckExtensions predicate isSource(DataFlow::Node node) { + // the constant `true` node.asExpr().getExpr().(BooleanLiteralExpr).getTextValue() = "true" + or + // a value controlled by a potential attacker + node instanceof ActiveThreatModelSource } predicate isSink(DataFlow::Node node) { node instanceof Sink } From aca7877be23afde4c588d134064a162b9840aa95 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 13:42:22 +0000 Subject: [PATCH 901/965] Rust: Add some missing path / file metadata models. --- .../rust/frameworks/stdlib/fs.model.yml | 22 +++++++++++++++++++ .../CWE-295/DisabledCertificateCheck.expected | 13 +++++++++++ .../test/query-tests/security/CWE-295/main.rs | 4 ++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml index 79b0b16f41e..076cea745fb 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -3,14 +3,27 @@ extensions: pack: codeql/rust-all extensible: sourceModel data: + - ["std::fs::exists", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::read_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read_to_string", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["std::fs::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["std::fs::symlink_metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::path", "ReturnValue", "file", "manual"] - ["::file_name", "ReturnValue", "file", "manual"] - ["::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::open_buffered", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - ["::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::exists", "ReturnValue", "file", "manual"] + - ["::try_exists", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::is_file", "ReturnValue", "file", "manual"] + - ["::is_dir", "ReturnValue", "file", "manual"] + - ["::is_symlink", "ReturnValue", "file", "manual"] + - ["::metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::symlink_metadata", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::read_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] + - ["::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"] - addsTo: pack: codeql/rust-all extensible: sinkModel @@ -68,3 +81,12 @@ extensions: - ["::with_extension", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - ["::with_file_name", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - ["::with_file_name", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::accessed", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::created", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::file_type", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_file", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_dir", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::is_symlink", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::len", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::modified", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::permissions", "Argument[self].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index 87ca24ddd2f..06773d55e08 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -12,6 +12,7 @@ | main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:109:36:109:37 | b1 | main.rs:107:17:107:31 | ...::exists | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | @@ -19,9 +20,16 @@ edges | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | +| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | +| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:1 | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:2 | +| main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | +models +| 1 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 2 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | nodes | main.rs:4:32:4:35 | true | semmle.label | true | | main.rs:9:36:9:39 | true | semmle.label | true | @@ -41,6 +49,11 @@ nodes | main.rs:83:32:83:37 | always | semmle.label | always | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | +| main.rs:107:6:107:7 | b1 | semmle.label | b1 | +| main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | +| main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:109:36:109:37 | b1 | semmle.label | b1 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs index f12f0858060..e62e0e4f4a2 100644 --- a/rust/ql/test/query-tests/security/CWE-295/main.rs +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -104,9 +104,9 @@ fn test_threat_model_source() { // hostname setting from `fs` functions returning `bool` directly // (these are highly unnatural but serve to create simple tests) - let b1: bool = std::fs::exists("main.rs").unwrap(); + let b1: bool = std::fs::exists("main.rs").unwrap(); // $ Source=exists let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_hostnames(b1) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .danger_accept_invalid_hostnames(b1) // $ Alert[rust/disabled-certificate-check]=exists .build() .unwrap(); From 89a9c4654764375abc284819818ad3a9ec2c9750 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 14:46:26 +0000 Subject: [PATCH 902/965] Rust: Second change note. --- rust/ql/lib/change-notes/2025-11-21-fs.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2025-11-21-fs.md diff --git a/rust/ql/lib/change-notes/2025-11-21-fs.md b/rust/ql/lib/change-notes/2025-11-21-fs.md new file mode 100644 index 00000000000..438acd94f9f --- /dev/null +++ b/rust/ql/lib/change-notes/2025-11-21-fs.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more detailed models for `std::fs` and `std::path`. From 785754ec651c7e5c6af89e60b1e53e8587c25804 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 14:15:15 +0000 Subject: [PATCH 903/965] Rust: Switch the query to taint flow, since some taint summaries are relevant now. --- .../CWE-295/DisabledCertificateCheck.ql | 3 +- .../CWE-295/DisabledCertificateCheck.expected | 36 ++++++++++++++++--- .../test/query-tests/security/CWE-295/main.rs | 8 ++--- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index 487a2a00912..35b6d6e7324 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -13,6 +13,7 @@ import rust import codeql.rust.dataflow.DataFlow +import codeql.rust.dataflow.TaintTracking import codeql.rust.security.DisabledCertificateCheckExtensions import codeql.rust.Concepts @@ -35,7 +36,7 @@ module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } } -module DisabledCertificateCheckFlow = DataFlow::Global; +module DisabledCertificateCheckFlow = TaintTracking::Global; import DisabledCertificateCheckFlow::PathGraph diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index 06773d55e08..9d491193efd 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -13,6 +13,8 @@ | main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:109:36:109:37 | b1 | main.rs:107:17:107:31 | ...::exists | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:115:36:115:37 | b2 | main.rs:113:43:113:50 | metadata | main.rs:115:36:115:37 | b2 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:121:36:121:37 | b3 | main.rs:119:11:119:27 | ...::metadata | main.rs:121:36:121:37 | b3 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | @@ -21,15 +23,29 @@ edges | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | | main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | -| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:1 | -| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:2 | +| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:2 | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:4 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | +| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:4 | +| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:6 | +| main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | +| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:1 | +| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | +| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:3 | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:4 | +| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:5 | +| main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | models -| 1 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 2 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 1 | Source: ::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 2 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 3 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 4 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 5 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | +| 6 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | nodes | main.rs:4:32:4:35 | true | semmle.label | true | | main.rs:9:36:9:39 | true | semmle.label | true | @@ -54,6 +70,18 @@ nodes | main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | | main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:109:36:109:37 | b1 | semmle.label | b1 | +| main.rs:113:6:113:7 | b2 | semmle.label | b2 | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | +| main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:113:11:113:71 | ... .is_file() | semmle.label | ... .is_file() | +| main.rs:113:43:113:50 | metadata | semmle.label | metadata | +| main.rs:115:36:115:37 | b2 | semmle.label | b2 | +| main.rs:119:6:119:7 | b3 | semmle.label | b3 | +| main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | +| main.rs:119:11:119:47 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | +| main.rs:121:36:121:37 | b3 | semmle.label | b3 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs index e62e0e4f4a2..6088e6fc1be 100644 --- a/rust/ql/test/query-tests/security/CWE-295/main.rs +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -110,15 +110,15 @@ fn test_threat_model_source() { .build() .unwrap(); - let b2 = std::path::Path::new("main.rs").metadata().unwrap().is_file(); + let b2 = std::path::Path::new("main.rs").metadata().unwrap().is_file(); // $ Source=is_file let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_hostnames(b2) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .danger_accept_invalid_hostnames(b2) // $ Alert[rust/disabled-certificate-check]=is_file .build() .unwrap(); - let b3 = std::fs::metadata("main.rs").unwrap().is_dir(); + let b3 = std::fs::metadata("main.rs").unwrap().is_dir(); // $ Source=is_dir let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_hostnames(b3) // $ MISSING: Alert[rust/disabled-certificate-check]=fs + .danger_accept_invalid_hostnames(b3) // $ Alert[rust/disabled-certificate-check]=is_dir .build() .unwrap(); From ace7a77fd6b0a5d5107e86f6fa023b0a7bdfab67 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 16:01:59 +0000 Subject: [PATCH 904/965] Rust: Switch to MaD models. --- .../rust/frameworks/native-tls.model.yml | 7 ++ .../codeql/rust/frameworks/reqwest.model.yml | 4 + .../DisabledCertificateCheckExtensions.qll | 13 --- .../CWE-295/DisabledCertificateCheck.expected | 102 ++++++++++++------ 4 files changed, 82 insertions(+), 44 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml new file mode 100644 index 00000000000..5af3245238a --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml index 5457460919f..e9bc66b4be7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml @@ -11,6 +11,10 @@ extensions: data: - ["::request", "Argument[1]", "request-url", "manual"] - ["::request", "Argument[1]", "request-url", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - addsTo: pack: codeql/rust-all extensible: summaryModel diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index cfc988ae37f..08cf20670d6 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -20,19 +20,6 @@ module DisabledCertificateCheckExtensions { override string getSinkType() { result = "DisabledCertificateCheck" } } - /** - * A default sink for disabled certificate check vulnerabilities based on function names. - */ - private class DefaultSink extends Sink { - DefaultSink() { - exists(CallExprBase fc | - fc.getStaticTarget().(Function).getName().getText() = - ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and - fc.getArg(0) = this.asExpr().getExpr() - ) - } - } - /** * A sink for disabled certificate check vulnerabilities from model data. */ diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index 9d491193efd..bbc67f6fd18 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,89 +1,129 @@ #select -| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:109:36:109:37 | b1 | main.rs:107:17:107:31 | ...::exists | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:115:36:115:37 | b2 | main.rs:113:43:113:50 | metadata | main.rs:115:36:115:37 | b2 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:121:36:121:37 | b3 | main.rs:119:11:119:27 | ...::metadata | main.rs:121:36:121:37 | b3 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:4:4:4:30 | danger_accept_invalid_certs | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:16:4:16:30 | danger_accept_invalid_certs | main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:37:4:37:30 | danger_accept_invalid_certs | main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:47:4:47:30 | danger_accept_invalid_certs | main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:55:4:55:30 | danger_accept_invalid_certs | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:83:4:83:30 | danger_accept_invalid_certs | main.rs:74:15:74:18 | true | main.rs:83:4:83:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:88:4:88:30 | danger_accept_invalid_certs | main.rs:75:22:75:25 | true | main.rs:88:4:88:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:4:93:30 | danger_accept_invalid_certs | main.rs:154:17:154:20 | true | main.rs:93:4:93:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges +| main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | +| main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | +| main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | provenance | MaD:3 Sink:MaD:3 | +| main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | provenance | MaD:4 Sink:MaD:4 | +| main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | provenance | MaD:5 Sink:MaD:5 | +| main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | | main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | +| main.rs:83:32:83:37 | always | main.rs:83:4:83:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:88:32:88:40 | sometimes | main.rs:88:4:88:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | +| main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | -| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:2 | -| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:4 | +| main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:10 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | +| main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | -| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:4 | -| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:6 | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:10 | +| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:12 | | main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | -| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:1 | +| main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | +| main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | -| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:3 | -| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:4 | -| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:5 | +| main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:10 | +| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:11 | | main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | +| main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | +| main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | models -| 1 | Source: ::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 2 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 3 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 4 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 5 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | -| 6 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | +| 1 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 2 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 3 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 4 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 5 | Sink: ::danger_accept_invalid_certs; Argument[0]; disable-certificate | +| 6 | Sink: ::danger_accept_invalid_hostnames; Argument[0]; disable-certificate | +| 7 | Source: ::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 8 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 9 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | +| 10 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 11 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | +| 12 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | nodes +| main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:4:32:4:35 | true | semmle.label | true | +| main.rs:9:4:9:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:9:36:9:39 | true | semmle.label | true | +| main.rs:16:4:16:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:16:32:16:35 | true | semmle.label | true | +| main.rs:17:4:17:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:17:36:17:39 | true | semmle.label | true | +| main.rs:37:4:37:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:37:32:37:35 | true | semmle.label | true | +| main.rs:42:4:42:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:42:36:42:39 | true | semmle.label | true | +| main.rs:47:4:47:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:47:32:47:35 | true | semmle.label | true | +| main.rs:48:4:48:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:48:36:48:39 | true | semmle.label | true | +| main.rs:55:4:55:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:55:32:55:35 | true | semmle.label | true | +| main.rs:56:4:56:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:56:36:56:39 | true | semmle.label | true | | main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | | main.rs:74:6:74:11 | always | semmle.label | always | | main.rs:74:15:74:18 | true | semmle.label | true | | main.rs:75:6:75:18 | mut sometimes | semmle.label | mut sometimes | | main.rs:75:22:75:25 | true | semmle.label | true | +| main.rs:83:4:83:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:83:32:83:37 | always | semmle.label | always | +| main.rs:88:4:88:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | +| main.rs:93:4:93:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | | main.rs:107:6:107:7 | b1 | semmle.label | b1 | | main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | | main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | +| main.rs:109:4:109:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:109:36:109:37 | b1 | semmle.label | b1 | | main.rs:113:6:113:7 | b2 | semmle.label | b2 | | main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | | main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:113:11:113:71 | ... .is_file() | semmle.label | ... .is_file() | | main.rs:113:43:113:50 | metadata | semmle.label | metadata | +| main.rs:115:4:115:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:115:36:115:37 | b2 | semmle.label | b2 | | main.rs:119:6:119:7 | b3 | semmle.label | b3 | | main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | | main.rs:119:11:119:47 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | +| main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:121:36:121:37 | b3 | semmle.label | b3 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | +| main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | | main.rs:154:17:154:20 | true | semmle.label | true | subpaths From 3ad014b2f9c426efe062a99bef63bc666fb9d773 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 16:33:59 +0000 Subject: [PATCH 905/965] Rust: Additional sinks found in MRVA-1000. --- .../ql/lib/codeql/rust/frameworks/attohttpc.model.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml b/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml new file mode 100644 index 00000000000..0015d605f19 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] From e01c871b70a8d0b58b1dcfcd0b11eed603dc27a4 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 17:12:23 +0000 Subject: [PATCH 906/965] Rust: Accept changes to the dataflow/sources/file test. --- .../library-tests/dataflow/sources/file/TaintSources.expected | 2 ++ rust/ql/test/library-tests/dataflow/sources/file/test.rs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected index d73106fb1cf..f7687e025d7 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -4,8 +4,10 @@ | test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:26:18:26:29 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:29:22:29:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:43:27:43:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:51:52:51:59 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:54:22:54:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:55:27:55:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:65:22:65:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 35a7d2cc1b8..0124d2a094e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -23,7 +23,7 @@ fn test_fs() -> Result<(), Box> { sink(buffer); // $ hasTaintFlow="file.txt" } - for entry in fs::read_dir("directory")? { + for entry in fs::read_dir("directory")? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] @@ -48,7 +48,7 @@ fn test_fs() -> Result<(), Box> { sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow sink(file_name); // $ hasTaintFlow } - for entry in std::path::Path::new("directory").read_dir()? { + for entry in std::path::Path::new("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] From 9db1722060a3353bb94e21350b6a6337d7a13013 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 17:35:34 +0000 Subject: [PATCH 907/965] Rust: Accept consistency check changes. --- .../CONSISTENCY/PathResolutionConsistency.expected | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index 81f06adcde3..40e59cf662a 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -1,6 +1,14 @@ multipleCallTargets -| deallocation.rs:260:11:260:29 | ...::from(...) | -| deallocation.rs:261:11:261:29 | ...::from(...) | +| deallocation.rs:162:5:162:17 | ptr.is_null() | +| deallocation.rs:174:7:174:19 | ptr.is_null() | +| deallocation.rs:186:5:186:17 | ptr.is_null() | +| deallocation.rs:190:5:190:17 | ptr.is_null() | +| deallocation.rs:194:6:194:18 | ptr.is_null() | +| deallocation.rs:202:5:202:17 | ptr.is_null() | +| deallocation.rs:210:25:210:37 | ptr.is_null() | +| deallocation.rs:225:5:225:23 | const_ptr.is_null() | +| deallocation.rs:354:11:354:29 | ...::from(...) | +| deallocation.rs:355:11:355:29 | ...::from(...) | | lifetime.rs:610:13:610:31 | ...::from(...) | | lifetime.rs:611:13:611:31 | ...::from(...) | | lifetime.rs:628:13:628:31 | ...::from(...) | From 988aca1f851d9a812725c1cc843ad8b42316ca92 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:13:08 +0000 Subject: [PATCH 908/965] Rust: Correct QLDoc comment. --- rust/ql/lib/codeql/rust/security/Barriers.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 14df5eb5ae5..fbe3691b412 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -45,7 +45,7 @@ class IntegralOrBooleanTypeBarrier extends DataFlow::Node { /** * Holds if guard expression `g` having result `branch` indicates that the - * sub-expression `node` is not null. For example when `ptr.is_null()` is + * sub-expression `e` is not null. For example when `ptr.is_null()` is * `false`, we have that `ptr` is not null. */ private predicate notNullCheck(AstNode g, Expr e, boolean branch) { From 2ce4c47646806910a684f747d3b59617a3b19631 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:43:35 +0000 Subject: [PATCH 909/965] Rust: More sinks from the MRVA-1000. --- rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml | 2 ++ rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml b/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml index 0015d605f19..47e1beb3925 100644 --- a/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml @@ -9,3 +9,5 @@ extensions: - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml index 5af3245238a..1da63eb7961 100644 --- a/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/native-tls.model.yml @@ -5,3 +5,5 @@ extensions: data: - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] + - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] From eb674d08d63c48e9beb4f94e773cb5281b801540 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:45:47 +0000 Subject: [PATCH 910/965] Rust: Reinstate the original function names model but call it a heuristic now. --- .../lib/codeql/rust/frameworks/attohttpc.model.yml | 13 ------------- .../security/DisabledCertificateCheckExtensions.qll | 13 +++++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) delete mode 100644 rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml b/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml deleted file mode 100644 index 47e1beb3925..00000000000 --- a/rust/ql/lib/codeql/rust/frameworks/attohttpc.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/rust-all - extensible: sinkModel - data: - - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_certs", "Argument[0]", "disable-certificate", "manual"] - - ["::danger_accept_invalid_hostnames", "Argument[0]", "disable-certificate", "manual"] diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index 08cf20670d6..67efbc5b5ad 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -26,4 +26,17 @@ module DisabledCertificateCheckExtensions { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "disable-certificate") } } + + /** + * A heuristic sink for disabled certificate check vulnerabilities based on function names. + */ + private class HeuristicSink extends Sink { + HeuristicSink() { + exists(CallExprBase fc | + fc.getStaticTarget().(Function).getName().getText() = + ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and + fc.getArg(0) = this.asExpr() + ) + } + } } From ff8032a4ec220ef1ca181cac68966eea6206ae09 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:53:57 +0000 Subject: [PATCH 911/965] Rust: Fix after merge. --- .../ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql index 35b6d6e7324..ae22a3c9d2c 100644 --- a/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql +++ b/rust/ql/src/queries/security/CWE-295/DisabledCertificateCheck.ql @@ -25,7 +25,7 @@ module DisabledCertificateCheckConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node node) { // the constant `true` - node.asExpr().getExpr().(BooleanLiteralExpr).getTextValue() = "true" + node.asExpr().(BooleanLiteralExpr).getTextValue() = "true" or // a value controlled by a potential attacker node instanceof ActiveThreatModelSource From 0ea28b402613611deb1e572b4c5e8526e1ab7e59 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:56:53 +0000 Subject: [PATCH 912/965] Rust: Test .expected changes. --- .../CWE-295/DisabledCertificateCheck.expected | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index bbc67f6fd18..d01cdfda84b 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,21 +1,38 @@ #select | main.rs:4:4:4:30 | danger_accept_invalid_certs | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:16:4:16:30 | danger_accept_invalid_certs | main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:37:4:37:30 | danger_accept_invalid_certs | main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:47:4:47:30 | danger_accept_invalid_certs | main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:55:4:55:30 | danger_accept_invalid_certs | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:83:4:83:30 | danger_accept_invalid_certs | main.rs:74:15:74:18 | true | main.rs:83:4:83:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:88:4:88:30 | danger_accept_invalid_certs | main.rs:75:22:75:25 | true | main.rs:88:4:88:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:93:4:93:30 | danger_accept_invalid_certs | main.rs:154:17:154:20 | true | main.rs:93:4:93:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:109:36:109:37 | b1 | main.rs:107:17:107:31 | ...::exists | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:115:36:115:37 | b2 | main.rs:113:43:113:50 | metadata | main.rs:115:36:115:37 | b2 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:121:36:121:37 | b3 | main.rs:119:11:119:27 | ...::metadata | main.rs:121:36:121:37 | b3 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | @@ -28,31 +45,38 @@ edges | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | provenance | MaD:5 Sink:MaD:5 | | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | +| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | +| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | +| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | | main.rs:83:32:83:37 | always | main.rs:83:4:83:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:88:32:88:40 | sometimes | main.rs:88:4:88:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | +| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | | main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:10 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | | main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | +| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | | main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:10 | | main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:12 | | main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | | main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | | main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | +| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | | main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:10 | | main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:11 | | main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | | main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | +| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | | main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | @@ -72,24 +96,34 @@ models nodes | main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:4:32:4:35 | true | semmle.label | true | +| main.rs:4:32:4:35 | true | semmle.label | true | | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:9:36:9:39 | true | semmle.label | true | +| main.rs:9:36:9:39 | true | semmle.label | true | | main.rs:16:4:16:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:16:32:16:35 | true | semmle.label | true | +| main.rs:16:32:16:35 | true | semmle.label | true | | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:17:36:17:39 | true | semmle.label | true | +| main.rs:17:36:17:39 | true | semmle.label | true | | main.rs:37:4:37:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:37:32:37:35 | true | semmle.label | true | +| main.rs:37:32:37:35 | true | semmle.label | true | | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:42:36:42:39 | true | semmle.label | true | +| main.rs:42:36:42:39 | true | semmle.label | true | | main.rs:47:4:47:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:47:32:47:35 | true | semmle.label | true | +| main.rs:47:32:47:35 | true | semmle.label | true | | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:48:36:48:39 | true | semmle.label | true | +| main.rs:48:36:48:39 | true | semmle.label | true | | main.rs:55:4:55:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:55:32:55:35 | true | semmle.label | true | +| main.rs:55:32:55:35 | true | semmle.label | true | | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:56:36:56:39 | true | semmle.label | true | +| main.rs:56:36:56:39 | true | semmle.label | true | | main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | | main.rs:74:6:74:11 | always | semmle.label | always | | main.rs:74:15:74:18 | true | semmle.label | true | @@ -97,16 +131,20 @@ nodes | main.rs:75:22:75:25 | true | semmle.label | true | | main.rs:83:4:83:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:83:32:83:37 | always | semmle.label | always | +| main.rs:83:32:83:37 | always | semmle.label | always | | main.rs:88:4:88:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | +| main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | | main.rs:93:4:93:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | +| main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | | main.rs:107:6:107:7 | b1 | semmle.label | b1 | | main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | | main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:109:36:109:37 | b1 | semmle.label | b1 | +| main.rs:109:36:109:37 | b1 | semmle.label | b1 | | main.rs:113:6:113:7 | b2 | semmle.label | b2 | | main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | | main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | @@ -114,6 +152,7 @@ nodes | main.rs:113:43:113:50 | metadata | semmle.label | metadata | | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:115:36:115:37 | b2 | semmle.label | b2 | +| main.rs:115:36:115:37 | b2 | semmle.label | b2 | | main.rs:119:6:119:7 | b3 | semmle.label | b3 | | main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | @@ -121,9 +160,11 @@ nodes | main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:121:36:121:37 | b3 | semmle.label | b3 | +| main.rs:121:36:121:37 | b3 | semmle.label | b3 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | +| main.rs:146:36:146:37 | b6 | semmle.label | b6 | | main.rs:154:17:154:20 | true | semmle.label | true | subpaths From 993154ed57b46ff0db88348fe53b2b9baa4ada49 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 21 Nov 2025 19:33:40 +0000 Subject: [PATCH 913/965] Rust: Avoid duplicating sinks. --- .../DisabledCertificateCheckExtensions.qll | 5 ++- .../CWE-295/DisabledCertificateCheck.expected | 41 ------------------- 2 files changed, 4 insertions(+), 42 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index 67efbc5b5ad..e2870746547 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -7,6 +7,7 @@ import rust private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts +private import codeql.rust.dataflow.internal.Node as Node /** * Provides default sinks for detecting disabled certificate check @@ -35,7 +36,9 @@ module DisabledCertificateCheckExtensions { exists(CallExprBase fc | fc.getStaticTarget().(Function).getName().getText() = ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and - fc.getArg(0) = this.asExpr() + fc.getArg(0) = this.asExpr() and + // don't duplicate modelled sinks + not exists(ModelsAsDataSink s | s.(Node::FlowSummaryNode).getSinkElement().getCall() = fc) ) } } diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index d01cdfda84b..bbc67f6fd18 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -1,38 +1,21 @@ #select | main.rs:4:4:4:30 | danger_accept_invalid_certs | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | main.rs:4:32:4:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | main.rs:9:36:9:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:16:4:16:30 | danger_accept_invalid_certs | main.rs:16:32:16:35 | true | main.rs:16:4:16:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | main.rs:16:32:16:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | main.rs:17:36:17:39 | true | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | main.rs:17:36:17:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:37:4:37:30 | danger_accept_invalid_certs | main.rs:37:32:37:35 | true | main.rs:37:4:37:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | main.rs:37:32:37:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | main.rs:42:36:42:39 | true | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | main.rs:42:36:42:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:47:4:47:30 | danger_accept_invalid_certs | main.rs:47:32:47:35 | true | main.rs:47:4:47:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | main.rs:47:32:47:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | main.rs:48:36:48:39 | true | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | main.rs:48:36:48:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:55:4:55:30 | danger_accept_invalid_certs | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | main.rs:55:32:55:35 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | main.rs:56:36:56:39 | true | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:83:4:83:30 | danger_accept_invalid_certs | main.rs:74:15:74:18 | true | main.rs:83:4:83:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:83:32:83:37 | always | main.rs:74:15:74:18 | true | main.rs:83:32:83:37 | always | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:88:4:88:30 | danger_accept_invalid_certs | main.rs:75:22:75:25 | true | main.rs:88:4:88:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:88:32:88:40 | sometimes | main.rs:75:22:75:25 | true | main.rs:88:32:88:40 | sometimes | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:93:4:93:30 | danger_accept_invalid_certs | main.rs:154:17:154:20 | true | main.rs:93:4:93:30 | danger_accept_invalid_certs | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:93:32:93:47 | sometimes_global | main.rs:154:17:154:20 | true | main.rs:93:32:93:47 | sometimes_global | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:109:36:109:37 | b1 | main.rs:107:17:107:31 | ...::exists | main.rs:109:36:109:37 | b1 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:115:36:115:37 | b2 | main.rs:113:43:113:50 | metadata | main.rs:115:36:115:37 | b2 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:121:36:121:37 | b3 | main.rs:119:11:119:27 | ...::metadata | main.rs:121:36:121:37 | b3 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | -| main.rs:146:36:146:37 | b6 | main.rs:144:39:144:42 | true | main.rs:146:36:146:37 | b6 | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:9:36:9:39 | true | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | @@ -45,38 +28,31 @@ edges | main.rs:55:32:55:35 | true | main.rs:55:4:55:30 | danger_accept_invalid_certs | provenance | MaD:5 Sink:MaD:5 | | main.rs:56:36:56:39 | true | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | provenance | MaD:6 Sink:MaD:6 | | main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | -| main.rs:73:19:73:40 | ...: bool | main.rs:93:32:93:47 | sometimes_global | provenance | | -| main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:6:74:11 | always | main.rs:83:32:83:37 | always | provenance | | | main.rs:74:15:74:18 | true | main.rs:74:6:74:11 | always | provenance | | | main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | -| main.rs:75:6:75:18 | mut sometimes | main.rs:88:32:88:40 | sometimes | provenance | | | main.rs:75:22:75:25 | true | main.rs:75:6:75:18 | mut sometimes | provenance | | | main.rs:83:32:83:37 | always | main.rs:83:4:83:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:88:32:88:40 | sometimes | main.rs:88:4:88:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | -| main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | | main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:10 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | | main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | -| main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | | main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:10 | | main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:12 | | main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | | main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | | main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | -| main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | | main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:10 | | main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:11 | | main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | | main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | -| main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | | main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:154:17:154:20 | true | main.rs:73:19:73:40 | ...: bool | provenance | | @@ -96,34 +72,24 @@ models nodes | main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:4:32:4:35 | true | semmle.label | true | -| main.rs:4:32:4:35 | true | semmle.label | true | | main.rs:9:4:9:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:9:36:9:39 | true | semmle.label | true | -| main.rs:9:36:9:39 | true | semmle.label | true | | main.rs:16:4:16:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:16:32:16:35 | true | semmle.label | true | -| main.rs:16:32:16:35 | true | semmle.label | true | | main.rs:17:4:17:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:17:36:17:39 | true | semmle.label | true | -| main.rs:17:36:17:39 | true | semmle.label | true | | main.rs:37:4:37:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:37:32:37:35 | true | semmle.label | true | -| main.rs:37:32:37:35 | true | semmle.label | true | | main.rs:42:4:42:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:42:36:42:39 | true | semmle.label | true | -| main.rs:42:36:42:39 | true | semmle.label | true | | main.rs:47:4:47:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:47:32:47:35 | true | semmle.label | true | -| main.rs:47:32:47:35 | true | semmle.label | true | | main.rs:48:4:48:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:48:36:48:39 | true | semmle.label | true | -| main.rs:48:36:48:39 | true | semmle.label | true | | main.rs:55:4:55:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:55:32:55:35 | true | semmle.label | true | -| main.rs:55:32:55:35 | true | semmle.label | true | | main.rs:56:4:56:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:56:36:56:39 | true | semmle.label | true | -| main.rs:56:36:56:39 | true | semmle.label | true | | main.rs:73:19:73:40 | ...: bool | semmle.label | ...: bool | | main.rs:74:6:74:11 | always | semmle.label | always | | main.rs:74:15:74:18 | true | semmle.label | true | @@ -131,20 +97,16 @@ nodes | main.rs:75:22:75:25 | true | semmle.label | true | | main.rs:83:4:83:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:83:32:83:37 | always | semmle.label | always | -| main.rs:83:32:83:37 | always | semmle.label | always | | main.rs:88:4:88:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | -| main.rs:88:32:88:40 | sometimes | semmle.label | sometimes | | main.rs:93:4:93:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | -| main.rs:93:32:93:47 | sometimes_global | semmle.label | sometimes_global | | main.rs:107:6:107:7 | b1 | semmle.label | b1 | | main.rs:107:17:107:31 | ...::exists | semmle.label | ...::exists | | main.rs:107:17:107:42 | ...::exists(...) [Ok] | semmle.label | ...::exists(...) [Ok] | | main.rs:107:17:107:51 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:109:36:109:37 | b1 | semmle.label | b1 | -| main.rs:109:36:109:37 | b1 | semmle.label | b1 | | main.rs:113:6:113:7 | b2 | semmle.label | b2 | | main.rs:113:11:113:52 | ... .metadata() [Ok] | semmle.label | ... .metadata() [Ok] | | main.rs:113:11:113:61 | ... .unwrap() | semmle.label | ... .unwrap() | @@ -152,7 +114,6 @@ nodes | main.rs:113:43:113:50 | metadata | semmle.label | metadata | | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:115:36:115:37 | b2 | semmle.label | b2 | -| main.rs:115:36:115:37 | b2 | semmle.label | b2 | | main.rs:119:6:119:7 | b3 | semmle.label | b3 | | main.rs:119:11:119:27 | ...::metadata | semmle.label | ...::metadata | | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | semmle.label | ...::metadata(...) [Ok] | @@ -160,11 +121,9 @@ nodes | main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:121:36:121:37 | b3 | semmle.label | b3 | -| main.rs:121:36:121:37 | b3 | semmle.label | b3 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:146:36:146:37 | b6 | semmle.label | b6 | -| main.rs:146:36:146:37 | b6 | semmle.label | b6 | | main.rs:154:17:154:20 | true | semmle.label | true | subpaths From b62968fa0ff8c4bbc04b0527cd1cc7ed6ba637ef Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Sat, 22 Nov 2025 09:22:33 +0000 Subject: [PATCH 914/965] Rust: Spelling. --- .../codeql/rust/security/DisabledCertificateCheckExtensions.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll index e2870746547..6a885828ee9 100644 --- a/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/DisabledCertificateCheckExtensions.qll @@ -37,7 +37,7 @@ module DisabledCertificateCheckExtensions { fc.getStaticTarget().(Function).getName().getText() = ["danger_accept_invalid_certs", "danger_accept_invalid_hostnames"] and fc.getArg(0) = this.asExpr() and - // don't duplicate modelled sinks + // don't duplicate modeled sinks not exists(ModelsAsDataSink s | s.(Node::FlowSummaryNode).getSinkElement().getCall() = fc) ) } From b16f8c20a98c94a2fdef30f21678cc87d0531eb6 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 23 Nov 2025 19:05:24 +0100 Subject: [PATCH 915/965] Update rust/ql/lib/codeql/rust/internal/PathResolution.qll Co-authored-by: Simon Friis Vindum --- rust/ql/lib/codeql/rust/internal/PathResolution.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 491f1572f26..acb1f7a8541 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -2050,7 +2050,7 @@ ItemNode resolvePathIgnoreVariableShadowing(PathExt path) { } /** - * Holds if `ip` resolves to some constructor. + * Holds if `ip` resolves to some constructor or constant. */ // use `forceLocal` once we implement overlay support pragma[nomagic] From 17e1e1713e4d30a3c51ebe1be370427e932d1c9f Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 23 Nov 2025 20:24:05 +0100 Subject: [PATCH 916/965] Rust: Add placeholder declarations for `&mut` and `*mut` --- .../elements/builtintypes/BuiltinTypes.expected | 2 ++ rust/tools/builtins/types.rs | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected index cfab22cd61c..e08eb561b58 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -1,6 +1,8 @@ | struct Array | | | struct Ptr | | +| struct PtrMut | | | struct Ref | | +| struct RefMut | | | struct Slice | | | struct Tuple0 | | | struct Tuple1 | | diff --git a/rust/tools/builtins/types.rs b/rust/tools/builtins/types.rs index 0c6025b4d37..fc0be525ab4 100644 --- a/rust/tools/builtins/types.rs +++ b/rust/tools/builtins/types.rs @@ -26,8 +26,10 @@ pub struct f64; struct Slice; struct Array; -struct Ref; // todo: add mut variant -struct Ptr; // todo: add mut variant +struct Ref; +struct RefMut; +struct Ptr; +struct PtrMut; // tuples struct Tuple0; From c9e9322143f57b24f49d27bf33e0001765b4c093 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 12:02:54 +0000 Subject: [PATCH 917/965] C++: Add an example of missing MaD supporrt for non-type template parameters. --- .../library-tests/dataflow/external-models/flow.ext.yml | 3 ++- .../dataflow/external-models/sinks.expected | 1 + .../dataflow/external-models/sources.expected | 1 + .../test/library-tests/dataflow/external-models/test.cpp | 9 +++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml index f0df3e749e6..8e200aabfbd 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml @@ -17,4 +17,5 @@ extensions: - ["", "", False, "ymlStepGenerated", "", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["", "", False, "ymlStepManual_with_body", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["", "", False, "ymlStepGenerated_with_body", "", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["", "", False, "callWithArgument", "", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] \ No newline at end of file + - ["", "", False, "callWithArgument", "", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] + - ["", "", False, "callWithNonTypeTemplate", "(const T &)", "", "Argument[*0]", "ReturnValue", "value", "manual"] \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 0cc01c8165e..51c2180f113 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -13,3 +13,4 @@ | test.cpp:75:11:75:11 | y | test-sink | | test.cpp:83:11:83:11 | y | test-sink | | test.cpp:89:11:89:11 | y | test-sink | +| test.cpp:113:10:113:10 | y | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index 401fffdbd59..fc975299737 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -2,6 +2,7 @@ | test.cpp:10:10:10:18 | call to ymlSource | local | | test.cpp:56:8:56:16 | call to ymlSource | local | | test.cpp:94:10:94:18 | call to ymlSource | local | +| test.cpp:111:10:111:18 | call to ymlSource | local | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | local | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | local | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | local | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index f357b934b2f..830cd8e081f 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -102,4 +102,13 @@ void test_callWithArgument() { } callWithArgument(StructWithOperatorCall_has_constructor_2(), x); callWithArgument(StructWithOperatorCall_no_constructor_2(), x); +} + +template +T callWithNonTypeTemplate(const T&); + +void test_callWithNonTypeTemplate() { + int x = ymlSource(); + int y = callWithNonTypeTemplate<10, int>(x); + ymlSink(y); // $ MISSING: ir } \ No newline at end of file From 732e55df11e4776c83ad010ae5e7b12377d33b91 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 12:06:24 +0000 Subject: [PATCH 918/965] C++: Ignore template non-type parameters in MaD signature matching. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index b71a46f6961..6c60296b56a 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -15,16 +15,17 @@ * reading. * 1. The `namespace` column selects a namespace. * 2. The `type` column selects a type within that namespace. This column can - * introduce template names that can be mentioned in the `signature` column. + * introduce template type names that can be mentioned in the `signature` column. * For example, `vector` introduces the template names `T` and - * `Allocator`. + * `Allocator`. Non-type template parameters cannot be specified. * 3. The `subtypes` is a boolean that indicates whether to jump to an * arbitrary subtype of that type. Set this to `false` if leaving the `type` * blank (for example, a free function). * 4. The `name` column optionally selects a specific named member of the type. - * Like the `type` column, this column can introduce template names that can - * be mentioned in the `signature` column. For example, `insert` - * introduces the template name `InputIt`. + * Like the `type` column, this column can introduce template type names + * that can be mentioned in the `signature` column. For example, + * `insert` introduces the template name `InputIt`. Non-type + * template parameters cannot be specified. * 5. The `signature` column optionally restricts the named member. If * `signature` is blank then no such filtering is done. The format of the * signature is a comma-separated list of types enclosed in parentheses. The @@ -633,6 +634,21 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon canonical = true } +/** Gets the `i`'th supported template parameter for `templateFunction`. */ +private Locatable getSupportedFunctionTemplateArgument(Function templateFunction, int i) { + result = + rank[i + 1](int j, TypeTemplateParameter ttp | + ttp = templateFunction.getTemplateArgument(j) + | + ttp order by j + ) +} + +/** Gets the number of supported template parameters for `templateFunction`. */ +private int getNumberOfSupportedFunctionTemplateArguments(Function templateFunction) { + result = count(int i | exists(getSupportedFunctionTemplateArgument(templateFunction, i)) | i) +} + /** * Normalize the `n`'th parameter of `f` by replacing template names * with `func:N` (where `N` is the index of the template). @@ -640,18 +656,34 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remaining) { exists(Function templateFunction | templateFunction = getFullyTemplatedFunction(f) and - remaining = templateFunction.getNumberOfTemplateArguments() and + remaining = getNumberOfSupportedFunctionTemplateArguments(templateFunction) and result = getParameterTypeWithoutTemplateArguments(templateFunction, n, _) ) or exists(string mid, TypeTemplateParameter tp, Function templateFunction | mid = getTypeNameWithoutFunctionTemplates(f, n, remaining + 1) and templateFunction = getFullyTemplatedFunction(f) and - tp = templateFunction.getTemplateArgument(remaining) and + tp = getSupportedFunctionTemplateArgument(templateFunction, remaining) + | result = mid.replaceAll(tp.getName(), "func:" + remaining.toString()) ) } +/** Gets the `i`'th support template parameter for `templateClass`. */ +private Locatable getSupportedClassTemplateArgument(Class templateClass, int i) { + result = + rank[i + 1](int j, TypeTemplateParameter ttp | + ttp = templateClass.getTemplateArgument(j) + | + ttp order by j + ) +} + +/** Gets the number of supported template parameters for `templateClass`. */ +private int getNumberOfSupportedClassTemplateArguments(Class templateClass) { + result = count(int i | exists(getSupportedClassTemplateArgument(templateClass, i)) | i) +} + /** * Normalize the `n`'th parameter of `f` by replacing template names * with `class:N` (where `N` is the index of the template). @@ -661,7 +693,7 @@ private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining // If there is a declaring type then we start by expanding the function templates exists(Class template | isClassConstructedFrom(f.getDeclaringType(), template) and - remaining = template.getNumberOfTemplateArguments() and + remaining = getNumberOfSupportedClassTemplateArguments(template) and result = getTypeNameWithoutFunctionTemplates(f, n, 0) ) or @@ -673,7 +705,8 @@ private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining exists(string mid, TypeTemplateParameter tp, Class template | mid = getTypeNameWithoutClassTemplates(f, n, remaining + 1) and isClassConstructedFrom(f.getDeclaringType(), template) and - tp = template.getTemplateArgument(remaining) and + tp = getSupportedClassTemplateArgument(template, remaining) + | result = mid.replaceAll(tp.getName(), "class:" + remaining.toString()) ) } From 98879d0f1afb2f893191bd56a1ca374013fbedaa Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 12:06:38 +0000 Subject: [PATCH 919/965] C++: Accept test changes. --- .../dataflow/external-models/flow.expected | 45 +++++++++++++------ .../dataflow/external-models/test.cpp | 2 +- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index b1f984680ad..95b4e2ef8b4 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -30,13 +30,14 @@ models | 29 | Summary: ; ; false; RtlMoveMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | | 30 | Summary: ; ; false; RtlMoveVolatileMemory; ; ; Argument[*@1]; Argument[*@0]; value; manual | | 31 | Summary: ; ; false; callWithArgument; ; ; Argument[1]; Argument[0].Parameter[0]; value; manual | -| 32 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | -| 33 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | -| 34 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | -| 35 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | -| 36 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 32 | Summary: ; ; false; callWithNonTypeTemplate; (const T &); ; Argument[*0]; ReturnValue; value; manual | +| 33 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | +| 34 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | +| 35 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | +| 36 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | +| 37 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:36 | +| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:37 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:17 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:17 Sink:MaD:2 | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | @@ -45,10 +46,10 @@ edges | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:2 | | asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:36 | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:34 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:33 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:35 | +| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:37 | +| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:35 | +| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:34 | +| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:36 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:16 | @@ -60,15 +61,15 @@ edges | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:1 | | test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:34 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:35 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:1 | | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:33 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:34 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:35 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:36 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:1 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | @@ -76,7 +77,7 @@ edges | test.cpp:46:30:46:32 | *arg [x] | test.cpp:47:12:47:19 | *arg [x] | provenance | | | test.cpp:47:12:47:19 | *arg [x] | test.cpp:48:13:48:13 | *s [x] | provenance | | | test.cpp:48:13:48:13 | *s [x] | test.cpp:48:16:48:16 | x | provenance | Sink:MaD:1 | -| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:32 | +| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:33 | | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | test.cpp:46:30:46:32 | *arg [x] | provenance | | | test.cpp:56:2:56:2 | *s [post update] [x] | test.cpp:59:55:59:64 | *& ... [x] | provenance | | | test.cpp:56:2:56:18 | ... = ... | test.cpp:56:2:56:2 | *s [post update] [x] | provenance | | @@ -103,6 +104,13 @@ edges | test.cpp:101:26:101:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | +| test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | +| test.cpp:111:10:111:18 | call to ymlSource | test.cpp:111:10:111:18 | call to ymlSource | provenance | Src:MaD:16 | +| test.cpp:111:10:111:18 | call to ymlSource | test.cpp:112:43:112:43 | *x | provenance | | +| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | provenance | | +| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | test.cpp:113:10:113:10 | y | provenance | Sink:MaD:1 | +| test.cpp:112:43:112:43 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | +| test.cpp:112:43:112:43 | *x | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | provenance | MaD:32 | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:18 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | @@ -314,6 +322,14 @@ nodes | test.cpp:101:26:101:26 | x | semmle.label | x | | test.cpp:103:63:103:63 | x | semmle.label | x | | test.cpp:104:62:104:62 | x | semmle.label | x | +| test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | +| test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | +| test.cpp:111:10:111:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:111:10:111:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:112:43:112:43 | *x | semmle.label | *x | +| test.cpp:113:10:113:10 | y | semmle.label | y | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | semmle.label | [summary param] *0 in CommandLineToArgvA | | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | semmle.label | [summary] to write: ReturnValue[**] in CommandLineToArgvA | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | @@ -472,6 +488,7 @@ subpaths | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | +| test.cpp:112:43:112:43 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | | windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index 830cd8e081f..ce5179e3157 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -110,5 +110,5 @@ T callWithNonTypeTemplate(const T&); void test_callWithNonTypeTemplate() { int x = ymlSource(); int y = callWithNonTypeTemplate<10, int>(x); - ymlSink(y); // $ MISSING: ir + ymlSink(y); // $ ir } \ No newline at end of file From fd566780a6e15acbe02935f34d42566d93114f75 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 12:17:06 +0000 Subject: [PATCH 920/965] Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 6c60296b56a..a269427971e 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -669,7 +669,7 @@ private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remain ) } -/** Gets the `i`'th support template parameter for `templateClass`. */ +/** Gets the `i`'th supported template parameter for `templateClass`. */ private Locatable getSupportedClassTemplateArgument(Class templateClass, int i) { result = rank[i + 1](int j, TypeTemplateParameter ttp | From ecb80cb4fc68d40f756ff0a616cd5c94cd8f0ad1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 20 Nov 2025 19:57:18 +0000 Subject: [PATCH 921/965] C++: Represent field content using a column that is shared by all template instantiations. --- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 170 +++++++++++++++--- 1 file changed, 147 insertions(+), 23 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 7c2b15b1812..872b8c97314 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 @@ -2078,38 +2078,150 @@ predicate localExprFlow(Expr e1, Expr e2) { localExprFlowPlus(e1, e2) } +/** + * A canonical representation of a field. + * + * For performance reasons we we want a unique `Content` that represents + * a given field across any template instantiation of a class. + * + * This is possible in _almost_ all cases, but there are cases where it is + * not possible to map between a field in the uninstantiated template to a + * field in the instantiated template. This problem appears to be only in the + * case of a local class definition. So this abstract class has two + * implementations: a non-local case (where we can represent a canonical field + * as the field declaration from an uninstantiated class template or a non- + * templated class), and a local case (where we simply use the field from the + * instantiated class). + */ +abstract private class CanonicalField extends Field { + /** Gets a field represented by this canonical field. */ + abstract Field getAField(); + + /** + * Gets a class that declares a field represented by this canonical field. + */ + abstract Class getADeclaringType(); + + /** + * Gets a type that this canonical field may have. Note that this may + * not be a unique type. For example, consider this case: + * ``` + * template + * struct S { T x; }; + * + * S s1; + * S s2; + * ``` + * In this case the canonical field corresponding to `S::x` has two types: + * `int` and `char`. + */ + Type getAType() { result = this.getAField().getType() } + + Type getAnUnspecifiedType() { result = this.getAType().getUnspecifiedType() } +} + +private class NonLocalCanonicalField extends CanonicalField { + Class declaringType; + + NonLocalCanonicalField() { + declaringType = this.getDeclaringType() and + not declaringType.isFromTemplateInstantiation(_) and + not declaringType.isLocal() // handled in LocalCanonicalField + } + + override Field getAField() { + exists(Class c | result.getDeclaringType() = c | + // Either the declaring class of the field is a template instantiation + // that has been constructed from this canonical declaration + c.isConstructedFrom(declaringType) and + pragma[only_bind_out](result.getName()) = pragma[only_bind_out](this.getName()) + or + // or this canonical declaration is not a template. + not c.isConstructedFrom(_) and + result = this + ) + } + + override Class getADeclaringType() { + result = this.getDeclaringType() + or + result.isConstructedFrom(this.getDeclaringType()) + } +} + +private class LocalCanonicalField extends CanonicalField { + Class declaringType; + + LocalCanonicalField() { + declaringType = this.getDeclaringType() and + declaringType.isLocal() + } + + override Field getAField() { result = this } + + override Class getADeclaringType() { result = declaringType } +} + +/** + * A canonical representation of a `Union`. See `CanonicalField` for the explanation for + * why we need a canonical representation. + */ +abstract private class CanonicalUnion extends Union { + /** Gets a union represented by this canonical union. */ + abstract Union getAUnion(); + + /** Gets a canonical field of this canonical union. */ + CanonicalField getACanonicalField() { result.getDeclaringType() = this } +} + +private class NonLocalCanonicalUnion extends CanonicalUnion { + NonLocalCanonicalUnion() { not this.isFromTemplateInstantiation(_) and not this.isLocal() } + + override Union getAUnion() { + result = this + or + result.isConstructedFrom(this) + } +} + +private class LocalCanonicalUnion extends CanonicalUnion { + LocalCanonicalUnion() { this.isLocal() } + + override Union getAUnion() { result = this } +} + bindingset[f] pragma[inline_late] -private int getFieldSize(Field f) { result = f.getType().getSize() } +private int getFieldSize(CanonicalField f) { result = max(f.getAType().getSize()) } /** * Gets a field in the union `u` whose size * is `bytes` number of bytes. */ -private Field getAFieldWithSize(Union u, int bytes) { - result = u.getAField() and +private CanonicalField getAFieldWithSize(CanonicalUnion u, int bytes) { + result = u.getACanonicalField() and bytes = getFieldSize(result) } cached private newtype TContent = - TNonUnionContent(Field f, int indirectionIndex) { + TNonUnionContent(CanonicalField f, int indirectionIndex) { // the indirection index for field content starts at 1 (because `TNonUnionContent` is thought of as // the address of the field, `FieldAddress` in the IR). - indirectionIndex = [1 .. SsaImpl::getMaxIndirectionsForType(f.getUnspecifiedType())] and + indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForType(f.getAnUnspecifiedType()))] and // Reads and writes of union fields are tracked using `UnionContent`. not f.getDeclaringType() instanceof Union } or - TUnionContent(Union u, int bytes, int indirectionIndex) { - exists(Field f | - f = u.getAField() and + TUnionContent(CanonicalUnion u, int bytes, int indirectionIndex) { + exists(CanonicalField f | + f = u.getACanonicalField() and bytes = getFieldSize(f) and // We key `UnionContent` by the union instead of its fields since a write to one // field can be read by any read of the union's fields. Again, the indirection index // is 1-based (because 0 is considered the address). indirectionIndex = [1 .. max(SsaImpl::getMaxIndirectionsForType(getAFieldWithSize(u, bytes) - .getUnspecifiedType()) + .getAnUnspecifiedType()) )] ) } or @@ -2175,8 +2287,12 @@ class FieldContent extends Content, TFieldContent { /** * Gets the field associated with this `Content`, if a unique one exists. + * + * For fields from template instantiations this predicate may still return + * more than field, but all the fields will be constructed from the same + * template. */ - final Field getField() { result = unique( | | this.getAField()) } + Field getField() { none() } // overridden in subclasses override int getIndirectionIndex() { none() } // overridden in subclasses @@ -2187,32 +2303,33 @@ class FieldContent extends Content, TFieldContent { /** A reference through a non-union instance field. */ class NonUnionFieldContent extends FieldContent, TNonUnionContent { - private Field f; + private CanonicalField f; private int indirectionIndex; NonUnionFieldContent() { this = TNonUnionContent(f, indirectionIndex) } override string toString() { result = contentStars(this) + f.toString() } - override Field getAField() { result = f } + final override Field getField() { result = f.getAField() } + + override Field getAField() { result = this.getField() } /** Gets the indirection index of this `FieldContent`. */ override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { - exists(FieldContent fc | - fc = c and - fc.getField() = f and + exists(int i | + c = TNonUnionContent(f, i) and // If `this` is `f` then `c` is cleared if it's of the // form `*f`, `**f`, etc. - fc.getIndirectionIndex() >= indirectionIndex + i >= indirectionIndex ) } } /** A reference through an instance field of a union. */ class UnionContent extends FieldContent, TUnionContent { - private Union u; + private CanonicalUnion u; private int indirectionIndex; private int bytes; @@ -2220,24 +2337,31 @@ class UnionContent extends FieldContent, TUnionContent { override string toString() { result = contentStars(this) + u.toString() } + final override Field getField() { result = unique( | | u.getACanonicalField()).getAField() } + /** Gets a field of the underlying union of this `UnionContent`, if any. */ - override Field getAField() { result = u.getAField() and getFieldSize(result) = bytes } + override Field getAField() { + exists(CanonicalField cf | + cf = u.getACanonicalField() and + result = cf.getAField() and + getFieldSize(cf) = bytes + ) + } /** Gets the underlying union of this `UnionContent`. */ - Union getUnion() { result = u } + Union getUnion() { result = u.getAUnion() } /** Gets the indirection index of this `UnionContent`. */ override int getIndirectionIndex() { result = indirectionIndex } override predicate impliesClearOf(Content c) { - exists(UnionContent uc | - uc = c and - uc.getUnion() = u and + exists(int i | + c = TUnionContent(u, _, i) and // If `this` is `u` then `c` is cleared if it's of the // form `*u`, `**u`, etc. (and we ignore `bytes` because // we know the entire union is overwritten because it's a // union). - uc.getIndirectionIndex() >= indirectionIndex + i >= indirectionIndex ) } } From 6bae58e29c23c5322377d8b0493c1a115f7d9cf9 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 12:35:19 +0000 Subject: [PATCH 922/965] C++: Accept more test changes. --- .../taint-tests/test_mad-signatures.expected | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 2409e711e6d..e0002aa9c03 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -26843,6 +26843,24 @@ getParameterTypeName | atl.cpp:71:5:71:17 | _U_STRINGorID | 0 | unsigned int | | atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | LPCTSTR | | atl.cpp:72:5:72:17 | _U_STRINGorID | 0 | const char * | +| atl.cpp:96:5:96:10 | CA2AEX | 0 | LPCSTR | +| atl.cpp:96:5:96:10 | CA2AEX | 0 | const char * | +| atl.cpp:96:5:96:10 | CA2AEX | 1 | UINT | +| atl.cpp:96:5:96:10 | CA2AEX | 1 | unsigned int | +| atl.cpp:97:5:97:10 | CA2AEX | 0 | LPCSTR | +| atl.cpp:97:5:97:10 | CA2AEX | 0 | const char * | +| atl.cpp:124:5:124:11 | CA2CAEX | 0 | LPCSTR | +| atl.cpp:124:5:124:11 | CA2CAEX | 0 | const char * | +| atl.cpp:124:5:124:11 | CA2CAEX | 1 | UINT | +| atl.cpp:124:5:124:11 | CA2CAEX | 1 | unsigned int | +| atl.cpp:125:5:125:11 | CA2CAEX | 0 | LPCSTR | +| atl.cpp:125:5:125:11 | CA2CAEX | 0 | const char * | +| atl.cpp:149:5:149:10 | CA2WEX | 0 | LPCSTR | +| atl.cpp:149:5:149:10 | CA2WEX | 0 | const char * | +| atl.cpp:149:5:149:10 | CA2WEX | 1 | UINT | +| atl.cpp:149:5:149:10 | CA2WEX | 1 | unsigned int | +| atl.cpp:150:5:150:10 | CA2WEX | 0 | LPCSTR | +| atl.cpp:150:5:150:10 | CA2WEX | 0 | const char * | | atl.cpp:196:12:196:14 | Add | 0 | INARGTYPclass:0 | | atl.cpp:198:12:198:17 | Append | 0 | const CAtlArray & | | atl.cpp:199:10:199:13 | Copy | 0 | const CAtlArray & | @@ -27083,6 +27101,10 @@ getParameterTypeName | atl.cpp:940:10:940:18 | SetString | 0 | PCXSTR | | atl.cpp:940:10:940:18 | SetString | 0 | const class:0 * | | atl.cpp:942:11:942:20 | operator[] | 0 | int | +| atl.cpp:1018:10:1018:10 | operator= | 0 | MakeOther && | +| atl.cpp:1018:10:1018:10 | operator= | 0 | const MakeOther & | +| atl.cpp:1023:10:1023:10 | operator= | 0 | MakeOther && | +| atl.cpp:1023:10:1023:10 | operator= | 0 | const MakeOther & | | atl.cpp:1036:5:1036:12 | CStringT | 0 | const VARIANT & | | atl.cpp:1036:5:1036:12 | CStringT | 0 | const tagVARIANT & | | atl.cpp:1037:5:1037:12 | CStringT | 0 | const VARIANT & | @@ -27286,6 +27308,8 @@ getParameterTypeName | standalone_iterators.cpp:20:7:20:7 | operator= | 0 | const int_iterator_by_trait & | | standalone_iterators.cpp:20:7:20:7 | operator= | 0 | int_iterator_by_trait && | | standalone_iterators.cpp:23:27:23:36 | operator++ | 0 | int | +| standalone_iterators.cpp:28:13:28:13 | operator= | 0 | const iterator_traits & | +| standalone_iterators.cpp:28:13:28:13 | operator= | 0 | iterator_traits && | | standalone_iterators.cpp:36:7:36:7 | operator= | 0 | const non_iterator & | | standalone_iterators.cpp:36:7:36:7 | operator= | 0 | non_iterator && | | standalone_iterators.cpp:39:18:39:27 | operator++ | 0 | int | @@ -27297,6 +27321,8 @@ getParameterTypeName | standalone_iterators.cpp:66:30:66:39 | operator++ | 0 | int | | standalone_iterators.cpp:68:30:68:39 | operator-- | 0 | int | | standalone_iterators.cpp:70:31:70:39 | operator= | 0 | int | +| standalone_iterators.cpp:74:13:74:13 | operator= | 0 | const iterator_traits & | +| standalone_iterators.cpp:74:13:74:13 | operator= | 0 | iterator_traits && | | standalone_iterators.cpp:82:7:82:7 | container | 0 | const container & | | standalone_iterators.cpp:82:7:82:7 | container | 0 | container && | | standalone_iterators.cpp:82:7:82:7 | operator= | 0 | const container & | From 0487e0622aa4488e565b550889a492ba31e6ffdd Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 14:04:35 +0000 Subject: [PATCH 923/965] C++: Accept test changes from tests that use getAQlClass. --- .../variables/variables/variable.expected | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cpp/ql/test/library-tests/variables/variables/variable.expected b/cpp/ql/test/library-tests/variables/variables/variable.expected index 1ef5902a9a8..c6ada1f3615 100644 --- a/cpp/ql/test/library-tests/variables/variables/variable.expected +++ b/cpp/ql/test/library-tests/variables/variables/variable.expected @@ -2,10 +2,10 @@ | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | address && | SemanticStackVariable | | | | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | const __va_list_tag & | SemanticStackVariable | | | | file://:0:0:0:0 | (unnamed parameter 0) | file://:0:0:0:0 | const address & | SemanticStackVariable | | | -| file://:0:0:0:0 | fp_offset | file://:0:0:0:0 | unsigned int | Field | | | -| file://:0:0:0:0 | gp_offset | file://:0:0:0:0 | unsigned int | Field | | | -| file://:0:0:0:0 | overflow_arg_area | file://:0:0:0:0 | void * | Field | | | -| file://:0:0:0:0 | reg_save_area | file://:0:0:0:0 | void * | Field | | | +| file://:0:0:0:0 | fp_offset | file://:0:0:0:0 | unsigned int | NonLocalCanonicalField | | | +| file://:0:0:0:0 | gp_offset | file://:0:0:0:0 | unsigned int | NonLocalCanonicalField | | | +| file://:0:0:0:0 | overflow_arg_area | file://:0:0:0:0 | void * | NonLocalCanonicalField | | | +| file://:0:0:0:0 | reg_save_area | file://:0:0:0:0 | void * | NonLocalCanonicalField | | | | variables.cpp:1:12:1:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:2:12:2:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:3:12:3:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | @@ -33,10 +33,10 @@ | variables.cpp:37:6:37:8 | ap3 | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:41:7:41:11 | local | file://:0:0:0:0 | char[] | LocalVariable, SemanticStackVariable | | | | variables.cpp:43:14:43:18 | local | file://:0:0:0:0 | int | GlobalLikeVariable, StaticLocalVariable | | static | -| variables.cpp:48:9:48:12 | name | file://:0:0:0:0 | char * | Field | | | -| variables.cpp:49:12:49:17 | number | file://:0:0:0:0 | long | Field | | | -| variables.cpp:50:9:50:14 | street | file://:0:0:0:0 | char * | Field | | | -| variables.cpp:51:9:51:12 | town | file://:0:0:0:0 | char * | Field | | | +| variables.cpp:48:9:48:12 | name | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | +| variables.cpp:49:12:49:17 | number | file://:0:0:0:0 | long | NonLocalCanonicalField | | | +| variables.cpp:50:9:50:14 | street | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | +| variables.cpp:51:9:51:12 | town | file://:0:0:0:0 | char * | NonLocalCanonicalField | | | | variables.cpp:52:16:52:22 | country | file://:0:0:0:0 | char * | MemberVariable, StaticStorageDurationVariable | | static | | variables.cpp:56:14:56:29 | externInFunction | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | | | variables.cpp:60:10:60:17 | __func__ | file://:0:0:0:0 | const char[9] | GlobalLikeVariable, StaticInitializedStaticLocalVariable | | static | From e37336d5504001dcf2f17bdc84769fe005e6f353 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:10:20 +0000 Subject: [PATCH 924/965] No need for `getUnderlyingExpr` to look through casts --- .../code/java/security/SensitiveLoggingQuery.qll | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 315f915b2e1..7058b844cbd 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -90,7 +90,7 @@ private predicate singleArgLimit(MethodCall mc, int limit, boolean isKotlin) { exists(int firstArgIndex, int delta | if isKotlin = true then firstArgIndex = 1 else firstArgIndex = 0 | - bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), delta, true, _) and + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), delta, true, _) and delta <= limit ) } @@ -104,10 +104,10 @@ private predicate twoArgLimit(MethodCall mc, int limit, boolean isKotlin) { or isKotlin = false and firstArgIndex = 0 and secondArgIndex = 1 | - // mc.getArgument(firstArgIndex).getUnderlyingExpr().(CompileTimeConstantExpr).getIntValue() = 0 and - bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), 0, true, _) and - bounded(mc.getArgument(firstArgIndex).getUnderlyingExpr(), any(ZeroBound z), 0, false, _) and - bounded(mc.getArgument(secondArgIndex).getUnderlyingExpr(), any(ZeroBound z), delta, true, _) and + // mc.getArgument(firstArgIndex).(CompileTimeConstantExpr).getIntValue() = 0 and + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), 0, true, _) and + bounded(mc.getArgument(firstArgIndex), any(ZeroBound z), 0, false, _) and + bounded(mc.getArgument(secondArgIndex), any(ZeroBound z), delta, true, _) and delta <= limit ) } From 1a59839f3c8ad37a4a0d92145c8da40daf210ac2 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:10:54 +0000 Subject: [PATCH 925/965] Range library recognises long literals now --- java/ql/test/query-tests/security/CWE-532/Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/query-tests/security/CWE-532/Test.java b/java/ql/test/query-tests/security/CWE-532/Test.java index 0383f521ff3..6521f7e2df7 100644 --- a/java/ql/test/query-tests/security/CWE-532/Test.java +++ b/java/ql/test/query-tests/security/CWE-532/Test.java @@ -6,7 +6,7 @@ class Test { int zero = 0; int four = 4; short zeroS = 0; - long fourL = 4; + long fourL = 4L; logger.info("User's password is: " + password); // $ Alert logger.error("Auth failed for: " + authToken); // $ Alert From 2e533707161f3e6b63ad0e41060b173990b93827 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 15:01:00 +0000 Subject: [PATCH 926/965] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../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 872b8c97314..d703bf9b54d 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 @@ -2081,7 +2081,7 @@ predicate localExprFlow(Expr e1, Expr e2) { /** * A canonical representation of a field. * - * For performance reasons we we want a unique `Content` that represents + * For performance reasons we want a unique `Content` that represents * a given field across any template instantiation of a class. * * This is possible in _almost_ all cases, but there are cases where it is From eb6b08591df1a3aa743de690c434f5880faff243 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 24 Nov 2025 15:01:09 +0000 Subject: [PATCH 927/965] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../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 d703bf9b54d..4f7a0fd61dc 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 @@ -2289,7 +2289,7 @@ class FieldContent extends Content, TFieldContent { * Gets the field associated with this `Content`, if a unique one exists. * * For fields from template instantiations this predicate may still return - * more than field, but all the fields will be constructed from the same + * more than one field, but all the fields will be constructed from the same * template. */ Field getField() { none() } // overridden in subclasses From 47ab307410d01f9f683a9744e6216482aa94f1cd Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 12:06:58 +0000 Subject: [PATCH 928/965] C++: Respond to review comments. --- .../code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 13 +++++++------ 1 file changed, 7 insertions(+), 6 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 4f7a0fd61dc..1185b6a0c9c 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 @@ -2086,12 +2086,13 @@ predicate localExprFlow(Expr e1, Expr e2) { * * This is possible in _almost_ all cases, but there are cases where it is * not possible to map between a field in the uninstantiated template to a - * field in the instantiated template. This problem appears to be only in the - * case of a local class definition. So this abstract class has two - * implementations: a non-local case (where we can represent a canonical field - * as the field declaration from an uninstantiated class template or a non- - * templated class), and a local case (where we simply use the field from the - * instantiated class). + * field in the instantiated template. This happens in the case of local class + * definitions (because the local class is not the template that constructs + * the instantiation - it is the enclosing function). So this abstract class + * has two implementations: a non-local case (where we can represent a + * canonical field as the field declaration from an uninstantiated class + * template or a non-templated class), and a local case (where we simply use + * the field from the instantiated class). */ abstract private class CanonicalField extends Field { /** Gets a field represented by this canonical field. */ From b4ae58871aeaccea9ff8aa100dc750a802319ee6 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 25 Nov 2025 10:07:51 +0100 Subject: [PATCH 929/965] Rust: Tweak existing `isStruct` predicates --- .../lib/codeql/rust/elements/internal/StructImpl.qll | 11 +++++------ .../codeql/rust/elements/internal/VariantImpl.qll | 12 ++++++------ rust/ql/lib/codeql/rust/internal/PathResolution.qll | 4 ++-- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 4 ++-- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index e4414305ae8..cb4121b7224 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -46,12 +46,11 @@ module Impl { pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } - /** - * Holds if this struct uses record fields. - * - * Empty structs are considered to use record fields. - */ + /** Holds if this struct uses struct fields. */ pragma[nomagic] - predicate isStruct() { not this.isTuple() } + predicate isStruct() { this.getFieldList() instanceof StructFieldList } + + /** Holds if this struct does not have a field list. */ + predicate isUnit() { not this.hasFieldList() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index d6b25b21e28..940ab5554b8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -40,13 +40,13 @@ module Impl { pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } - /** - * Holds if this variant uses struct fields. - * - * Empty variants are considered to use struct fields. - */ + /** Holds if this variant uses struct fields. */ pragma[nomagic] - predicate isStruct() { not this.isTuple() } + predicate isStruct() { this.getFieldList() instanceof StructFieldList } + + /** Holds if this variant does not have a field list. */ + pragma[nomagic] + predicate isUnit() { not this.hasFieldList() } /** Gets the enum that this variant belongs to. */ Enum getEnum() { this = result.getVariantList().getAVariant() } diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index d754258f16d..767d8c3674e 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -659,7 +659,7 @@ private class VariantItemNode extends ParameterizableItemNode instanceof Variant override string getName() { result = Variant.super.getName().getText() } override Namespace getNamespace() { - if super.getFieldList() instanceof StructFieldList then result.isType() else result.isValue() + if super.isStruct() then result.isType() else result.isValue() } override TypeParam getTypeParam(int i) { @@ -969,7 +969,7 @@ private class StructItemNode extends TypeItemNode, ParameterizableItemNode insta override Namespace getNamespace() { result.isType() // the struct itself or - not super.getFieldList() instanceof StructFieldList and + not super.isStruct() and result.isValue() // the constructor } diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 8f9840e0566..75147c29e04 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -787,7 +787,7 @@ private module StructExprMatchingInput implements MatchingInputSig { } private class StructDecl extends Declaration, Struct { - StructDecl() { this.isStruct() } + StructDecl() { this.isStruct() or this.isUnit() } override TypeParam getATypeParam() { result = this.getGenericParamList().getATypeParam() } @@ -804,7 +804,7 @@ private module StructExprMatchingInput implements MatchingInputSig { } private class StructVariantDecl extends Declaration, Variant { - StructVariantDecl() { this.isStruct() } + StructVariantDecl() { this.isStruct() or this.isUnit() } Enum getEnum() { result.getVariantList().getAVariant() = this } From 50e8d0ca20e6d7a6e3b08c0014a7ef70127318e0 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 25 Nov 2025 10:08:26 +0100 Subject: [PATCH 930/965] Rust: Add `isFieldless` and `isUnitOnly` to `Enum` --- .../codeql/rust/elements/internal/EnumImpl.qll | 18 ++++++++++++++++++ .../rust/elements/internal/VariantImpl.qll | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll index e57a416fa72..3862cc42137 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll @@ -31,5 +31,23 @@ module Impl { result = this.getVariantList().getAVariant() and result.getName().getText() = name } + + /** + * Holds if this is a field-less enum, that is, an enum where no constructors contain fields. + * + * See: https://doc.rust-lang.org/reference/items/enumerations.html#r-items.enum.fieldless + */ + predicate isFieldless() { + forall(Variant v | v = this.getVariantList().getAVariant() | v.getNumberOfFields() = 0) + } + + /** + * Holds if this is a unit-only enum, that is, an enum where all constructors are unit variants. + * + * See: https://doc.rust-lang.org/reference/items/enumerations.html#r-items.enum.unit-only + */ + predicate isUnitOnly() { + forall(Variant v | v = this.getVariantList().getAVariant() | v.isUnit()) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index 940ab5554b8..c28553492a0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -36,6 +36,15 @@ module Impl { pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } + int getNumberOfFields() { + not this.hasFieldList() and + result = 0 + or + result = this.getFieldList().(StructFieldList).getNumberOfFields() + or + result = this.getFieldList().(TupleFieldList).getNumberOfFields() + } + /** Holds if this variant uses tuple fields. */ pragma[nomagic] predicate isTuple() { this.getFieldList() instanceof TupleFieldList } From 393da4567e1fcaf5a9c14660db1d41727d996f92 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 25 Nov 2025 10:09:59 +0100 Subject: [PATCH 931/965] Rust: Add tests for `Enum` --- .../library-tests/elements/enum/Cargo.lock | 7 ++++++ .../library-tests/elements/enum/Enum.expected | 7 ++++++ .../test/library-tests/elements/enum/Enum.ql | 6 +++++ .../test/library-tests/elements/enum/enums.rs | 24 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 rust/ql/test/library-tests/elements/enum/Cargo.lock create mode 100644 rust/ql/test/library-tests/elements/enum/Enum.expected create mode 100644 rust/ql/test/library-tests/elements/enum/Enum.ql create mode 100644 rust/ql/test/library-tests/elements/enum/enums.rs diff --git a/rust/ql/test/library-tests/elements/enum/Cargo.lock b/rust/ql/test/library-tests/elements/enum/Cargo.lock new file mode 100644 index 00000000000..b9856cfaf77 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/elements/enum/Enum.expected b/rust/ql/test/library-tests/elements/enum/Enum.expected new file mode 100644 index 00000000000..f910b240ca7 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Enum.expected @@ -0,0 +1,7 @@ +fieldless +| enums.rs:1:1:5:1 | enum Foo | +| enums.rs:7:1:11:1 | enum Fieldless | +| enums.rs:13:1:18:1 | enum Direction | +unitOnly +| enums.rs:1:1:5:1 | enum Foo | +| enums.rs:13:1:18:1 | enum Direction | diff --git a/rust/ql/test/library-tests/elements/enum/Enum.ql b/rust/ql/test/library-tests/elements/enum/Enum.ql new file mode 100644 index 00000000000..82baa8dffe6 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/Enum.ql @@ -0,0 +1,6 @@ +import rust +import TestUtils + +query predicate fieldless(Enum e) { toBeTested(e) and e.isFieldless() } + +query predicate unitOnly(Enum e) { toBeTested(e) and e.isUnitOnly() } diff --git a/rust/ql/test/library-tests/elements/enum/enums.rs b/rust/ql/test/library-tests/elements/enum/enums.rs new file mode 100644 index 00000000000..0f5a964c284 --- /dev/null +++ b/rust/ql/test/library-tests/elements/enum/enums.rs @@ -0,0 +1,24 @@ +enum Foo { + Bar, + Baz, + Qux, +} + +enum Fieldless { + Tuple(), + Struct{}, + Unit, +} + +enum Direction { + North = 0, + East = 90, + South = 180, + West = 270, +} + +enum Color { + Red(u8), + Green(u8), + Blue(u8), +} From 4f13ae3fc9dabc24eaf53ade159169c5bc4d2dad Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Tue, 25 Nov 2025 10:19:49 +0100 Subject: [PATCH 932/965] Rust: Add qldoc --- rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll | 1 + 1 file changed, 1 insertion(+) diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index c28553492a0..ed8b93f6c1d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -36,6 +36,7 @@ module Impl { pragma[nomagic] TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) } + /** Gets the number of fields of this variant. */ int getNumberOfFields() { not this.hasFieldList() and result = 0 From 2024f32e814d0e1e38403825672a28a298b9ed74 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 12:36:29 +0000 Subject: [PATCH 933/965] C++: Add an example with missing flow. --- .../fields/dataflow-consistency.expected | 1 + .../fields/partial-definition-diff.expected | 2 ++ .../fields/partial-definition-ir.expected | 2 ++ .../fields/partial-definition.expected | 2 ++ .../library-tests/dataflow/fields/simple.cpp | 32 +++++++++++++++++++ 5 files changed, 39 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected index 4021dbc492a..1b0b906af52 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/dataflow-consistency.expected @@ -142,6 +142,7 @@ postWithInFlow | simple.cpp:92:7:92:7 | i [post update] | PostUpdateNode should not be the target of local flow. | | simple.cpp:118:7:118:7 | i [post update] | PostUpdateNode should not be the target of local flow. | | simple.cpp:124:5:124:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| simple.cpp:167:9:167:9 | x [post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected index 8137e350d85..6cce6ac4f89 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-diff.expected @@ -308,3 +308,5 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (par | simple.cpp:124:5:124:6 | * ... | AST only | | simple.cpp:131:14:131:14 | a | IR only | | simple.cpp:136:10:136:10 | a | IR only | +| simple.cpp:167:9:167:9 | x | AST only | +| simple.cpp:168:8:168:12 | u_int | IR only | diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected index 8df575d8e16..b09f949271d 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition-ir.expected @@ -670,6 +670,8 @@ | simple.cpp:131:14:131:14 | a | | simple.cpp:135:20:135:20 | q | | simple.cpp:136:10:136:10 | a | +| simple.cpp:167:3:167:7 | u_int | +| simple.cpp:168:8:168:12 | u_int | | struct_init.c:15:8:15:9 | ab | | struct_init.c:15:12:15:12 | a | | struct_init.c:16:8:16:9 | ab | diff --git a/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected b/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected index 397e069c166..127cbadd971 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/partial-definition.expected @@ -597,6 +597,8 @@ WARNING: module 'DataFlow' has been deprecated and may be removed in future (par | simple.cpp:118:7:118:7 | i | | simple.cpp:124:5:124:6 | * ... | | simple.cpp:135:20:135:20 | q | +| simple.cpp:167:3:167:7 | u_int | +| simple.cpp:167:9:167:9 | x | | struct_init.c:15:8:15:9 | ab | | struct_init.c:15:12:15:12 | a | | struct_init.c:16:8:16:9 | ab | diff --git a/cpp/ql/test/library-tests/dataflow/fields/simple.cpp b/cpp/ql/test/library-tests/dataflow/fields/simple.cpp index 3b8d882bc2b..d220b416e1a 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/simple.cpp +++ b/cpp/ql/test/library-tests/dataflow/fields/simple.cpp @@ -136,4 +136,36 @@ void alias_with_fields(bool b) { sink(a.i); // $ MISSING: ast,ir } +template +union U_with_two_instantiations_of_different_size { + int x; + T y; +}; + +struct LargeStruct { + int data[64]; +}; + +void test_union_with_two_instantiations_of_different_sizes() { + // A union's fields is partitioned into "chunks" for field-flow in order to + // improve performance (so that a write to a field of a union does not flow + // to too many reads that don't happen at runtime). The partitioning is based + // the size of the types in the union. So a write to a field of size k only + // flows to a read of size k. + // Since field-flow is based on uninstantiated types a field can have + // multiple sizes if the union is instantiated with types of + // different sizes. So to compute the partition we pick the maximum size. + // Because of this there are `Content`s corresponding to the union + // `U_with_two_instantiations_of_different_size`: The one for size + // `sizeof(int)`, and the one for size `sizeof(LargeStruct)` (because + // `LargeStruct` is larger than `int`). So the write to `x` writes to the + // `Content` for size `sizeof(int)`, and the read of `y` reads from the + // `Content` for size `sizeof(LargeStruct)`. + U_with_two_instantiations_of_different_size u_int; + U_with_two_instantiations_of_different_size u_very_large; + + u_int.x = user_input(); + sink(u_int.y); // $ MISSING: ir +} + } // namespace Simple \ No newline at end of file From 7d76619bea425dc22bb1d03b0bb8dd56bb53ecfb Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 3 Nov 2025 14:54:35 +0000 Subject: [PATCH 934/965] Implement cookie write concepts and httponly query --- go/ql/lib/semmle/go/concepts/HTTP.qll | 92 +++++++++++++++++++ .../semmle/go/frameworks/stdlib/NetHttp.qll | 34 +++++++ .../lib/semmle/go/security/SecureCookies.qll | 79 ++++++++++++++++ .../CWE-1004/CookieWithoutHttpOnly.ql | 28 ++++++ 4 files changed, 233 insertions(+) create mode 100644 go/ql/lib/semmle/go/security/SecureCookies.qll create mode 100644 go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 9bf5b6a7ad8..0fdf5a68624 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -380,4 +380,96 @@ module Http { /** Gets a node that is used in a check that is tested before this handler is run. */ predicate guardedBy(DataFlow::Node check) { super.guardedBy(check) } } + + /** Provides a class for modelling HTTP response cookie writes. */ + module CookieWrite { + /** + * An write of an HTTP Cookie to an HTTP response. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::CookieWrite` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the name of the cookie written. */ + abstract DataFlow::Node getName(); + + /** Gets the value of the cookie written. */ + abstract DataFlow::Node getValue(); + + /** Gets the `Secure` attribute of the cookie written. */ + abstract DataFlow::Node getSecure(); + + /** Gets the `HttpOnly` attribute of the cookie written. */ + abstract DataFlow::Node getHttpOnly(); + } + } + + /** + * An write of an HTTP Cookie to an HTTP response. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::CookieWrite::Range` instead. + */ + class CookieWrite extends DataFlow::Node instanceof CookieWrite::Range { + /** Gets the name of the cookie written. */ + DataFlow::Node getName() { result = super.getName() } + + /** Gets the value of the cookie written. */ + DataFlow::Node getValue() { result = super.getValue() } + + /** Gets the `Secure` attribute of the cookie written. */ + DataFlow::Node getSecure() { result = super.getSecure() } + + /** Gets the `HttpOnly` attribute of the cookie written. */ + DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } + } + + /** Provides a class for modelling the options of an HTTP cookie. */ + module CookieOptions { + /** + * An HTTP Cookie object. + * + * Extend this class to model new APIs. If you want to refine existing API models, + * extend `HTTP::CookieOptions` instead. + */ + abstract class Range extends DataFlow::Node { + /** Gets the node representing the cookie object for the options being set. */ + abstract DataFlow::Node getCookieOutput(); + + /** Gets the name of the cookie represented. */ + abstract DataFlow::Node getName(); + + /** Gets the value of the cookie represented. */ + abstract DataFlow::Node getValue(); + + /** Gets the `Secure` attribute of the cookie represented. */ + abstract DataFlow::Node getSecure(); + + /** Gets the `HttpOnly` attribute of the cookie represented. */ + abstract DataFlow::Node getHttpOnly(); + } + } + + /** + * An HTTP Cookie. + * + * Extend this class to refine existing API models. If you want to model new APIs, + * extend `HTTP::CookieOptions::Range` instead. + */ + class CookieOptions extends DataFlow::Node instanceof CookieOptions::Range { + /** Gets the node representing the cookie object for the options being set. */ + DataFlow::Node getCookieOutput() { result = super.getCookieOutput() } + + /** Gets the name of the cookie represented. */ + DataFlow::Node getName() { result = super.getName() } + + /** Gets the value of the cookie represented. */ + DataFlow::Node getValue() { result = super.getValue() } + + /** Gets the `Secure` attribute of the cookie represented. */ + DataFlow::Node getSecure() { result = super.getSecure() } + + /** Gets the `HttpOnly` attribute of the cookie represented. */ + DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } + } } diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll index 88c9605502f..f68d9518109 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll @@ -293,4 +293,38 @@ module NetHttp { override DataFlow::Node getAPathArgument() { result = this.getArgument(2) } } + + class CookieWrite extends Http::CookieWrite::Range, DataFlow::CallNode { + CookieWrite() { this.getTarget().hasQualifiedName(package("net/http", ""), "SetCookie") } + + override DataFlow::Node getName() { result = this.getArgument(1) } + + override DataFlow::Node getValue() { result = this.getArgument(1) } + + override DataFlow::Node getSecure() { result = this.getArgument(1) } + + override DataFlow::Node getHttpOnly() { result = this.getArgument(1) } + } + + class CookieFieldWrite extends Http::CookieOptions::Range { + Write w; + Field f; + DataFlow::Node written; + string fieldName; + + CookieFieldWrite() { + f.hasQualifiedName(package("net/http", ""), "Cookie", fieldName) and + w.writesField(this, f, written) + } + + override DataFlow::Node getCookieOutput() { result = this } + + override DataFlow::Node getName() { fieldName = "Name" and result = written } + + override DataFlow::Node getValue() { fieldName = "Value" and result = written } + + override DataFlow::Node getSecure() { fieldName = "Secure" and result = written } + + override DataFlow::Node getHttpOnly() { fieldName = "HttpOnly" and result = written } + } } diff --git a/go/ql/lib/semmle/go/security/SecureCookies.qll b/go/ql/lib/semmle/go/security/SecureCookies.qll new file mode 100644 index 00000000000..654acc81569 --- /dev/null +++ b/go/ql/lib/semmle/go/security/SecureCookies.qll @@ -0,0 +1,79 @@ +/** Provides classes and predicates for identifying HTTP cookies with insecure attributes. */ + +import go +import semmle.go.concepts.HTTP +import semmle.go.dataflow.DataFlow + +/** + * Holds if the expression or its value has a sensitive name + */ +private predicate isSensitiveExpr(Expr expr, string val) { + ( + val = expr.getStringValue() or + val = expr.(Name).getTarget().getName() + ) and + val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and + not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") +} + +private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { isSensitiveExpr(source.asExpr(), _) } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getName()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptions co | co.getName() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from sensitive names to HTTP cookie writes. */ +module SensitiveCookieNameFlow = DataFlow::Global; + +private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(source.asExpr().getBoolValue()) } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptions co | co.getSecure() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from boolean expressions to the `Secure` attribute HTTP cookie writes. */ +module BooleanCookieSecureFlow = DataFlow::Global; + +private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { exists(source.asExpr().getBoolValue()) } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getHttpOnly()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptions co | co.getHttpOnly() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from boolean expressions to the `HttpOnly` attribute HTTP cookie writes. */ +module BooleanCookieHttpOnlyFlow = DataFlow::Global; + +predicate isInsecureDefault(Http::CookieWrite cw) { + not BooleanCookieSecureFlow::flow(_, cw.getSecure()) +} + +predicate isNonHttpOnlyDefault(Http::CookieWrite cw) { + not BooleanCookieHttpOnlyFlow::flow(_, cw.getHttpOnly()) +} + +predicate isInsecureDirect(Http::CookieWrite cw, Expr boolFalse) { + BooleanCookieSecureFlow::flow(DataFlow::exprNode(boolFalse), cw.getSecure()) and + boolFalse.getBoolValue() = false +} + +predicate isNonHttpOnlyDirect(Http::CookieWrite cw, Expr boolFalse) { + BooleanCookieHttpOnlyFlow::flow(DataFlow::exprNode(boolFalse), cw.getHttpOnly()) and + boolFalse.getBoolValue() = false +} + +predicate isSensitiveCookie(Http::CookieWrite cw, Expr nameExpr, string name) { + SensitiveCookieNameFlow::flow(DataFlow::exprNode(nameExpr), cw.getName()) and + isSensitiveExpr(nameExpr, name) +} diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql new file mode 100644 index 00000000000..e61fd652680 --- /dev/null +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -0,0 +1,28 @@ +/** + * @name 'HttpOnly' attribute is not set to true + * @description Omitting the 'HttpOnly' attribute for security sensitive data allows + * malicious JavaScript to steal it in case of XSS vulnerability. Always set + * 'HttpOnly' to 'true' to authentication related cookie to make it + * not accessible by JavaScript. + * @kind problem + * @problem.severity warning + * @precision high + * @id go/cookie-httponly-not-set + * @tags security + * experimental + * external/cwe/cwe-1004 + */ + +import go +import semmle.go.security.SecureCookies +import semmle.go.concepts.HTTP + +from Http::CookieWrite cw, Expr sensitiveNameExpr, string name +where + isSensitiveCookie(cw, sensitiveNameExpr, name) and + ( + isNonHttpOnlyDefault(cw) + or + isNonHttpOnlyDirect(cw, _) + ) +select cw, "Sensitive cookie $@ does not set HttpOnly to true", sensitiveNameExpr, name From 74c424dc4cb4bfd6bbb81f2df4b5f53022fb55c1 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 5 Nov 2025 09:57:26 +0000 Subject: [PATCH 935/965] Fixes, add secure query --- .../lib/semmle/go/security/SecureCookies.qll | 55 ++++++++++++++----- .../CWE-1004/CookieWithoutHttpOnly.ql | 19 +++---- .../Security/CWE-614/CookieWithoutSecure.ql | 18 ++++++ 3 files changed, 69 insertions(+), 23 deletions(-) create mode 100644 go/ql/src/Security/CWE-614/CookieWithoutSecure.ql diff --git a/go/ql/lib/semmle/go/security/SecureCookies.qll b/go/ql/lib/semmle/go/security/SecureCookies.qll index 654acc81569..f700c030337 100644 --- a/go/ql/lib/semmle/go/security/SecureCookies.qll +++ b/go/ql/lib/semmle/go/security/SecureCookies.qll @@ -27,10 +27,12 @@ private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { } /** Tracks flow from sensitive names to HTTP cookie writes. */ -module SensitiveCookieNameFlow = DataFlow::Global; +module SensitiveCookieNameFlow = TaintTracking::Global; private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { exists(source.asExpr().getBoolValue()) } + predicate isSource(DataFlow::Node source) { + source.getType().getUnderlyingType() instanceof BoolType + } predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } @@ -39,11 +41,13 @@ private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { } } -/** Tracks flow from boolean expressions to the `Secure` attribute HTTP cookie writes. */ -module BooleanCookieSecureFlow = DataFlow::Global; +/** Tracks flow from boolean expressions to the `Secure` attribute of HTTP cookie writes. */ +module BooleanCookieSecureFlow = TaintTracking::Global; private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { exists(source.asExpr().getBoolValue()) } + predicate isSource(DataFlow::Node source) { + source.getType().getUnderlyingType() instanceof BoolType + } predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getHttpOnly()) } @@ -52,28 +56,53 @@ private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { } } -/** Tracks flow from boolean expressions to the `HttpOnly` attribute HTTP cookie writes. */ -module BooleanCookieHttpOnlyFlow = DataFlow::Global; +/** Tracks flow from boolean expressions to the `HttpOnly` attribute of HTTP cookie writes. */ +module BooleanCookieHttpOnlyFlow = TaintTracking::Global; +/** Holds if `cw` has the `Secure` attribute left at its default value of `false`. */ predicate isInsecureDefault(Http::CookieWrite cw) { not BooleanCookieSecureFlow::flow(_, cw.getSecure()) } -predicate isNonHttpOnlyDefault(Http::CookieWrite cw) { - not BooleanCookieHttpOnlyFlow::flow(_, cw.getHttpOnly()) -} - +/** Holds if `cw` has the `Secure` attribute explicitly set to `false`, from the expression `boolFalse`. */ predicate isInsecureDirect(Http::CookieWrite cw, Expr boolFalse) { BooleanCookieSecureFlow::flow(DataFlow::exprNode(boolFalse), cw.getSecure()) and boolFalse.getBoolValue() = false } +/** Holds if `cw` has the `Secure` attribute set to `false`, either explicitly or by default. */ +predicate isInsecureCookie(Http::CookieWrite cw) { + isInsecureDefault(cw) or + isInsecureDirect(cw, _) +} + +/** Holds if `cw` has the `HttpOnly` attribute left at its default value of `false`. */ +predicate isNonHttpOnlyDefault(Http::CookieWrite cw) { + not BooleanCookieHttpOnlyFlow::flow(_, cw.getHttpOnly()) +} + +/** Holds if `cw` has the `HttpOnly` attribute explicitly set to `false`, from the expression `boolFalse`. */ predicate isNonHttpOnlyDirect(Http::CookieWrite cw, Expr boolFalse) { BooleanCookieHttpOnlyFlow::flow(DataFlow::exprNode(boolFalse), cw.getHttpOnly()) and boolFalse.getBoolValue() = false } -predicate isSensitiveCookie(Http::CookieWrite cw, Expr nameExpr, string name) { - SensitiveCookieNameFlow::flow(DataFlow::exprNode(nameExpr), cw.getName()) and +/** Holds if `cw` has the `HttpOnly` attribute set to `false`, either explicitly or by default. */ +predicate isNonHttpOnlyCookie(Http::CookieWrite cw) { + isNonHttpOnlyDefault(cw) or + isNonHttpOnlyDirect(cw, _) +} + +/** + * Holds if `cw` has the sensitive name `name`, from the expression `nameExpr`. + * `source` and `sink` represent the data flow path from the sensitive name expression to the cookie write. + */ +predicate isSensitiveCookie( + Http::CookieWrite cw, Expr nameExpr, string name, SensitiveCookieNameFlow::PathNode source, + SensitiveCookieNameFlow::PathNode sink +) { + SensitiveCookieNameFlow::flowPath(source, sink) and + source.getNode().asExpr() = nameExpr and + sink.getNode() = cw.getName() and isSensitiveExpr(nameExpr, name) } diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql index e61fd652680..27f86d23dd2 100644 --- a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -4,25 +4,24 @@ * malicious JavaScript to steal it in case of XSS vulnerability. Always set * 'HttpOnly' to 'true' to authentication related cookie to make it * not accessible by JavaScript. - * @kind problem + * @kind path-problem * @problem.severity warning * @precision high * @id go/cookie-httponly-not-set * @tags security - * experimental * external/cwe/cwe-1004 */ import go import semmle.go.security.SecureCookies import semmle.go.concepts.HTTP +import SensitiveCookieNameFlow::PathGraph -from Http::CookieWrite cw, Expr sensitiveNameExpr, string name +from + Http::CookieWrite cw, Expr sensitiveNameExpr, string name, + SensitiveCookieNameFlow::PathNode source, SensitiveCookieNameFlow::PathNode sink where - isSensitiveCookie(cw, sensitiveNameExpr, name) and - ( - isNonHttpOnlyDefault(cw) - or - isNonHttpOnlyDirect(cw, _) - ) -select cw, "Sensitive cookie $@ does not set HttpOnly to true", sensitiveNameExpr, name + isSensitiveCookie(cw, sensitiveNameExpr, name, source, sink) and + isNonHttpOnlyCookie(cw) +select cw, source, sink, "Sensitive cookie $@ does not set HttpOnly attribute to true.", + sensitiveNameExpr, name diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql new file mode 100644 index 00000000000..635d2113f8d --- /dev/null +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -0,0 +1,18 @@ +/** + * @name 'Secure' attribute is not set to true + * @description todo + * @kind problem + * @problem.severity warning + * @precision high + * @id go/cookie-secure-not-set + * @tags security + * external/cwe/cwe-1004 + */ + +import go +import semmle.go.security.SecureCookies +import semmle.go.concepts.HTTP + +from Http::CookieWrite cw +where isInsecureCookie(cw) +select cw, "Cookie does not set Secure attribute to true" From 5094784a4bf33c83ac78e35c984fd6c3e1e3833c Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 5 Nov 2025 10:47:59 +0000 Subject: [PATCH 936/965] Add modeling for gin --- go/ql/lib/semmle/go/frameworks/Gin.qll | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 go/ql/lib/semmle/go/frameworks/Gin.qll diff --git a/go/ql/lib/semmle/go/frameworks/Gin.qll b/go/ql/lib/semmle/go/frameworks/Gin.qll new file mode 100644 index 00000000000..71ed5d931fa --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Gin.qll @@ -0,0 +1,24 @@ +/** + * Provides classes for modeling the `github.com/gin-gonic/gin` package. + */ + +import go +import semmle.go.concepts.HTTP + +/** Provides models for the `gin-gonic/gin` package. */ +module Gin { + /** Gets the package name `github.com/gin-gonic/gin`. */ + string packagePath() { result = package("github.com/gin-gonic/gin", "") } + + private class GinCookieWrite extends Http::CookieWrite::Range, DataFlow::MethodCallNode { + GinCookieWrite() { this.getTarget().hasQualifiedName(packagePath(), "Context", "SetCookie") } + + override DataFlow::Node getName() { result = this.getArgument(0) } + + override DataFlow::Node getValue() { result = this.getArgument(1) } + + override DataFlow::Node getSecure() { result = this.getArgument(5) } + + override DataFlow::Node getHttpOnly() { result = this.getArgument(6) } + } +} From 8d544e5b152c75628dfc3596801ca7b66798f6bd Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 6 Nov 2025 16:54:15 +0000 Subject: [PATCH 937/965] Add tests --- .../CWE-1004/CookieWithoutHttpOnly.expected | 139 ++++ .../CWE-1004/CookieWithoutHttpOnly.go | 136 ++++ .../CWE-1004/CookieWithoutHttpOnly.qlref | 2 + .../test/query-tests/Security/CWE-1004/go.mod | 8 + .../vendor/github.com/gin-gonic/gin/LICENSE | 21 + .../github.com/gin-gonic/gin/binding/stub.go | 12 + .../vendor/github.com/gin-gonic/gin/stub.go | 677 ++++++++++++++++++ .../github.com/gorilla/sessions/stub.go | 75 ++ .../Security/CWE-1004/vendor/modules.txt | 6 + .../CWE-614/CookieWithoutSecure.expected | 6 + .../Security/CWE-614/CookieWithoutSecure.go | 107 +++ .../CWE-614/CookieWithoutSecure.qlref | 2 + .../test/query-tests/Security/CWE-614/go.mod | 8 + .../vendor/github.com/gin-gonic/gin/LICENSE | 21 + .../github.com/gin-gonic/gin/binding/stub.go | 12 + .../vendor/github.com/gin-gonic/gin/stub.go | 677 ++++++++++++++++++ .../github.com/gorilla/sessions/stub.go | 75 ++ .../Security/CWE-614/vendor/modules.txt | 6 + 18 files changed, 1990 insertions(+) create mode 100644 go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected create mode 100644 go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go create mode 100644 go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-1004/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gorilla/sessions/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt create mode 100644 go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected create mode 100644 go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go create mode 100644 go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-614/go.mod create mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE create mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gorilla/sessions/stub.go create mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected new file mode 100644 index 00000000000..93988411db2 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.expected @@ -0,0 +1,139 @@ +#select +| CookieWithoutHttpOnly.go:14:2:14:22 | call to SetCookie | CookieWithoutHttpOnly.go:11:10:11:18 | "session" | CookieWithoutHttpOnly.go:14:20:14:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:11:10:11:18 | "session" | session | +| CookieWithoutHttpOnly.go:23:2:23:22 | call to SetCookie | CookieWithoutHttpOnly.go:19:13:19:21 | "session" | CookieWithoutHttpOnly.go:23:20:23:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:19:13:19:21 | "session" | session | +| CookieWithoutHttpOnly.go:50:2:50:22 | call to SetCookie | CookieWithoutHttpOnly.go:46:10:46:18 | "session" | CookieWithoutHttpOnly.go:50:20:50:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:46:10:46:18 | "session" | session | +| CookieWithoutHttpOnly.go:60:2:60:22 | call to SetCookie | CookieWithoutHttpOnly.go:56:13:56:21 | "session" | CookieWithoutHttpOnly.go:60:20:60:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:56:13:56:21 | "session" | session | +| CookieWithoutHttpOnly.go:90:2:90:22 | call to SetCookie | CookieWithoutHttpOnly.go:86:10:86:18 | "session" | CookieWithoutHttpOnly.go:90:20:90:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:86:10:86:18 | "session" | session | +| CookieWithoutHttpOnly.go:109:2:109:22 | call to SetCookie | CookieWithoutHttpOnly.go:103:10:103:18 | "session" | CookieWithoutHttpOnly.go:109:20:109:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:103:10:103:18 | "session" | session | +| CookieWithoutHttpOnly.go:119:2:119:22 | call to SetCookie | CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | CookieWithoutHttpOnly.go:119:20:119:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | login_name | +| CookieWithoutHttpOnly.go:119:2:119:22 | call to SetCookie | CookieWithoutHttpOnly.go:115:10:115:16 | session | CookieWithoutHttpOnly.go:119:20:119:21 | &... | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:115:10:115:16 | session | session | +| CookieWithoutHttpOnly.go:131:4:131:71 | call to SetCookie | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | Sensitive cookie $@ does not set HttpOnly attribute to true. | CookieWithoutHttpOnly.go:131:16:131:24 | "session" | session | +edges +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | CookieWithoutHttpOnly.go:14:21:14:21 | c | provenance | | +| CookieWithoutHttpOnly.go:11:10:11:18 | "session" | CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | CookieWithoutHttpOnly.go:14:20:14:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | CookieWithoutHttpOnly.go:23:21:23:21 | c | provenance | | +| CookieWithoutHttpOnly.go:19:13:19:21 | "session" | CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | CookieWithoutHttpOnly.go:23:20:23:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | CookieWithoutHttpOnly.go:32:21:32:21 | c | provenance | | +| CookieWithoutHttpOnly.go:28:13:28:21 | "session" | CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | CookieWithoutHttpOnly.go:32:20:32:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | CookieWithoutHttpOnly.go:41:21:41:21 | c | provenance | | +| CookieWithoutHttpOnly.go:37:10:37:18 | "session" | CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | CookieWithoutHttpOnly.go:41:20:41:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | CookieWithoutHttpOnly.go:50:21:50:21 | c | provenance | | +| CookieWithoutHttpOnly.go:46:10:46:18 | "session" | CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | CookieWithoutHttpOnly.go:50:20:50:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | CookieWithoutHttpOnly.go:60:21:60:21 | c | provenance | | +| CookieWithoutHttpOnly.go:56:13:56:21 | "session" | CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | CookieWithoutHttpOnly.go:60:20:60:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | CookieWithoutHttpOnly.go:70:21:70:21 | c | provenance | | +| CookieWithoutHttpOnly.go:66:13:66:21 | "session" | CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | CookieWithoutHttpOnly.go:70:20:70:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | CookieWithoutHttpOnly.go:80:21:80:21 | c | provenance | | +| CookieWithoutHttpOnly.go:76:10:76:18 | "session" | CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | CookieWithoutHttpOnly.go:80:20:80:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | CookieWithoutHttpOnly.go:90:21:90:21 | c | provenance | | +| CookieWithoutHttpOnly.go:86:10:86:18 | "session" | CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | CookieWithoutHttpOnly.go:90:20:90:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:103:10:103:18 | "session" | CookieWithoutHttpOnly.go:105:10:105:13 | name | provenance | | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | CookieWithoutHttpOnly.go:109:21:109:21 | c | provenance | | +| CookieWithoutHttpOnly.go:105:10:105:13 | name | CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | CookieWithoutHttpOnly.go:109:20:109:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | CookieWithoutHttpOnly.go:115:10:115:16 | session | provenance | | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | CookieWithoutHttpOnly.go:119:21:119:21 | c | provenance | | +| CookieWithoutHttpOnly.go:115:10:115:16 | session | CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | provenance | Config | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | CookieWithoutHttpOnly.go:119:20:119:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | provenance | | +nodes +| CookieWithoutHttpOnly.go:10:7:13:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:11:10:11:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:14:20:14:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:14:21:14:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:18:7:22:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:19:13:19:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:23:20:23:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:23:21:23:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:27:7:31:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:28:13:28:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:32:20:32:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:32:21:32:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:36:7:39:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:37:10:37:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:41:20:41:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:41:21:41:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:45:7:48:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:46:10:46:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:50:20:50:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:50:21:50:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:55:7:59:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:56:13:56:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:60:20:60:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:60:21:60:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:65:7:69:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:66:13:66:21 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:70:20:70:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:70:21:70:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:75:7:78:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:76:10:76:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:80:20:80:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:80:21:80:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:85:7:88:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:86:10:86:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:90:20:90:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:90:21:90:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:103:10:103:18 | "session" | semmle.label | "session" | +| CookieWithoutHttpOnly.go:104:7:107:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:105:10:105:13 | name | semmle.label | name | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:109:20:109:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:109:21:109:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:113:13:113:24 | "login_name" | semmle.label | "login_name" | +| CookieWithoutHttpOnly.go:114:7:117:2 | struct literal | semmle.label | struct literal | +| CookieWithoutHttpOnly.go:115:10:115:16 | session | semmle.label | session | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... | semmle.label | &... | +| CookieWithoutHttpOnly.go:119:20:119:21 | &... [pointer] | semmle.label | &... [pointer] | +| CookieWithoutHttpOnly.go:119:21:119:21 | c | semmle.label | c | +| CookieWithoutHttpOnly.go:131:16:131:24 | "session" | semmle.label | "session" | +subpaths diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go new file mode 100644 index 00000000000..0e3958aca2e --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go @@ -0,0 +1,136 @@ +package main + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func handler1(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly set to false by default +} + +func handler2(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + HttpOnly: false, + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler3(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: true, + } + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler4(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.HttpOnly = true + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler5(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler6(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + HttpOnly: val, + } + http.SetCookie(w, &c) // $ Alert // BAD: HttpOnly explicitly set to false +} + +func handler7(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: val, + } + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler8(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.HttpOnly = val + http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true +} + +func handler9(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.HttpOnly = val + http.SetCookie(w, &c) // $ Alert //BAD: HttpOnly explicitly set to false +} + +func handler10(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "consent", + Value: "1", + } + c.HttpOnly = false + http.SetCookie(w, &c) // GOOD: Name is not auth related +} + +func handler11(w http.ResponseWriter, r *http.Request) { + name := "session" // $ Source + c := http.Cookie{ + Name: name, + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: auth related name +} + +func handler12(w http.ResponseWriter, r *http.Request) { + session := "login_name" // $ Source + c := http.Cookie{ + Name: session, // $ Source + Value: "secret", + } + c.HttpOnly = false + http.SetCookie(w, &c) // $ Alert // BAD: auth related name +} + +func main() { + + router := gin.Default() + + router.GET("/cookie", func(c *gin.Context) { + + _, err := c.Cookie("session") + + if err != nil { + c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: httpOnly set to false + } + }) + + router.Run() +} diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref new file mode 100644 index 00000000000..3f81c27e867 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref @@ -0,0 +1,2 @@ +query: security/CWE-1004/CookieWithoutHttpOnly.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-1004/go.mod b/go/ql/test/query-tests/Security/CWE-1004/go.mod new file mode 100644 index 00000000000..5ab32129a9b --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/go.mod @@ -0,0 +1,8 @@ +module example.com/m + +go 1.14 + +require ( + github.com/gin-gonic/gin v1.7.1 + github.com/gorilla/sessions v1.2.1 + ) diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE new file mode 100644 index 00000000000..1ff7f370605 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Manuel Martínez-Almeida + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go new file mode 100644 index 00000000000..43fd634edcd --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go @@ -0,0 +1,12 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin/binding, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin/binding (exports: ; functions: YAML) + +// Package binding is a stub of github.com/gin-gonic/gin/binding, generated by depstubber. +package binding + +import () + +var YAML interface{} = nil diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go new file mode 100644 index 00000000000..e343d5f2aa0 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go @@ -0,0 +1,677 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin (exports: Context; functions: Default) + +// Package gin is a stub of github.com/gin-gonic/gin, generated by depstubber. +package gin + +import ( + bufio "bufio" + template "html/template" + io "io" + multipart "mime/multipart" + net "net" + http "net/http" + time "time" +) + +type Context struct { + Request *http.Request + Writer ResponseWriter + Params Params + Keys map[string]interface{} + Errors interface{} + Accepted []string +} + +func (_ *Context) Abort() {} + +func (_ *Context) AbortWithError(_ int, _ error) *Error { + return nil +} + +func (_ *Context) AbortWithStatus(_ int) {} + +func (_ *Context) AbortWithStatusJSON(_ int, _ interface{}) {} + +func (_ *Context) AsciiJSON(_ int, _ interface{}) {} + +func (_ *Context) Bind(_ interface{}) error { + return nil +} + +func (_ *Context) BindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) BindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) BindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) BindUri(_ interface{}) error { + return nil +} + +func (_ *Context) BindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) BindXML(_ interface{}) error { + return nil +} + +func (_ *Context) BindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) ClientIP() string { + return "" +} + +func (_ *Context) ContentType() string { + return "" +} + +func (_ *Context) Cookie(_ string) (string, error) { + return "", nil +} + +func (_ *Context) Copy() *Context { + return nil +} + +func (_ *Context) Data(_ int, _ string, _ []byte) {} + +func (_ *Context) DataFromReader(_ int, _ int64, _ string, _ io.Reader, _ map[string]string) {} + +func (_ *Context) Deadline() (time.Time, bool) { + return time.Time{}, false +} + +func (_ *Context) DefaultPostForm(_ string, _ string) string { + return "" +} + +func (_ *Context) DefaultQuery(_ string, _ string) string { + return "" +} + +func (_ *Context) Done() <-chan struct{} { + return nil +} + +func (_ *Context) Err() error { + return nil +} + +func (_ *Context) Error(_ error) *Error { + return nil +} + +func (_ *Context) File(_ string) {} + +func (_ *Context) FileAttachment(_ string, _ string) {} + +func (_ *Context) FileFromFS(_ string, _ http.FileSystem) {} + +func (_ *Context) FormFile(_ string) (*multipart.FileHeader, error) { + return nil, nil +} + +func (_ *Context) FullPath() string { + return "" +} + +func (_ *Context) Get(_ string) (interface{}, bool) { + return nil, false +} + +func (_ *Context) GetBool(_ string) bool { + return false +} + +func (_ *Context) GetDuration(_ string) time.Duration { + return 0 +} + +func (_ *Context) GetFloat64(_ string) float64 { + return 0 +} + +func (_ *Context) GetHeader(_ string) string { + return "" +} + +func (_ *Context) GetInt(_ string) int { + return 0 +} + +func (_ *Context) GetInt64(_ string) int64 { + return 0 +} + +func (_ *Context) GetPostForm(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetPostFormArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetPostFormMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetQuery(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetQueryArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetQueryMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetRawData() ([]byte, error) { + return nil, nil +} + +func (_ *Context) GetString(_ string) string { + return "" +} + +func (_ *Context) GetStringMap(_ string) map[string]interface{} { + return nil +} + +func (_ *Context) GetStringMapString(_ string) map[string]string { + return nil +} + +func (_ *Context) GetStringMapStringSlice(_ string) map[string][]string { + return nil +} + +func (_ *Context) GetStringSlice(_ string) []string { + return nil +} + +func (_ *Context) GetTime(_ string) time.Time { + return time.Time{} +} + +func (_ *Context) GetUint(_ string) uint { + return 0 +} + +func (_ *Context) GetUint64(_ string) uint64 { + return 0 +} + +func (_ *Context) HTML(_ int, _ string, _ interface{}) {} + +func (_ *Context) Handler() HandlerFunc { + return nil +} + +func (_ *Context) HandlerName() string { + return "" +} + +func (_ *Context) HandlerNames() []string { + return nil +} + +func (_ *Context) Header(_ string, _ string) {} + +func (_ *Context) IndentedJSON(_ int, _ interface{}) {} + +func (_ *Context) IsAborted() bool { + return false +} + +func (_ *Context) IsWebsocket() bool { + return false +} + +func (_ *Context) JSON(_ int, _ interface{}) {} + +func (_ *Context) JSONP(_ int, _ interface{}) {} + +func (_ *Context) MultipartForm() (*multipart.Form, error) { + return nil, nil +} + +func (_ *Context) MustBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) MustGet(_ string) interface{} { + return nil +} + +func (_ *Context) Negotiate(_ int, _ Negotiate) {} + +func (_ *Context) NegotiateFormat(_ ...string) string { + return "" +} + +func (_ *Context) Next() {} + +func (_ *Context) Param(_ string) string { + return "" +} + +func (_ *Context) PostForm(_ string) string { + return "" +} + +func (_ *Context) PostFormArray(_ string) []string { + return nil +} + +func (_ *Context) PostFormMap(_ string) map[string]string { + return nil +} + +func (_ *Context) ProtoBuf(_ int, _ interface{}) {} + +func (_ *Context) PureJSON(_ int, _ interface{}) {} + +func (_ *Context) Query(_ string) string { + return "" +} + +func (_ *Context) QueryArray(_ string) []string { + return nil +} + +func (_ *Context) QueryMap(_ string) map[string]string { + return nil +} + +func (_ *Context) Redirect(_ int, _ string) {} + +func (_ *Context) RemoteIP() (net.IP, bool) { + return nil, false +} + +func (_ *Context) Render(_ int, _ interface{}) {} + +func (_ *Context) SSEvent(_ string, _ interface{}) {} + +func (_ *Context) SaveUploadedFile(_ *multipart.FileHeader, _ string) error { + return nil +} + +func (_ *Context) SecureJSON(_ int, _ interface{}) {} + +func (_ *Context) Set(_ string, _ interface{}) {} + +func (_ *Context) SetAccepted(_ ...string) {} + +func (_ *Context) SetCookie(_ string, _ string, _ int, _ string, _ string, _ bool, _ bool) {} + +func (_ *Context) SetSameSite(_ http.SameSite) {} + +func (_ *Context) ShouldBind(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindBodyWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindUri(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindXML(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) Status(_ int) {} + +func (_ *Context) Stream(_ func(io.Writer) bool) bool { + return false +} + +func (_ *Context) String(_ int, _ string, _ ...interface{}) {} + +func (_ *Context) Value(_ interface{}) interface{} { + return nil +} + +func (_ *Context) XML(_ int, _ interface{}) {} + +func (_ *Context) YAML(_ int, _ interface{}) {} + +func Default() *Engine { + return nil +} + +type Engine struct { + RouterGroup RouterGroup + RedirectTrailingSlash bool + RedirectFixedPath bool + HandleMethodNotAllowed bool + ForwardedByClientIP bool + RemoteIPHeaders []string + TrustedProxies []string + AppEngine bool + UseRawPath bool + UnescapePathValues bool + MaxMultipartMemory int64 + RemoveExtraSlash bool + HTMLRender interface{} + FuncMap template.FuncMap +} + +func (_ *Engine) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) BasePath() string { + return "" +} + +func (_ *Engine) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Delims(_ string, _ string) *Engine { + return nil +} + +func (_ *Engine) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *Engine) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) HandleContext(_ *Context) {} + +func (_ *Engine) LoadHTMLFiles(_ ...string) {} + +func (_ *Engine) LoadHTMLGlob(_ string) {} + +func (_ *Engine) NoMethod(_ ...HandlerFunc) {} + +func (_ *Engine) NoRoute(_ ...HandlerFunc) {} + +func (_ *Engine) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Routes() RoutesInfo { + return nil +} + +func (_ *Engine) Run(_ ...string) error { + return nil +} + +func (_ *Engine) RunFd(_ int) error { + return nil +} + +func (_ *Engine) RunListener(_ net.Listener) error { + return nil +} + +func (_ *Engine) RunTLS(_ string, _ string, _ string) error { + return nil +} + +func (_ *Engine) RunUnix(_ string) error { + return nil +} + +func (_ *Engine) SecureJsonPrefix(_ string) *Engine { + return nil +} + +func (_ *Engine) ServeHTTP(_ http.ResponseWriter, _ *http.Request) {} + +func (_ *Engine) SetFuncMap(_ template.FuncMap) {} + +func (_ *Engine) SetHTMLTemplate(_ *template.Template) {} + +func (_ *Engine) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *Engine) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type Error struct { + Err error + Type ErrorType + Meta interface{} +} + +func (_ Error) Error() string { + return "" +} + +func (_ *Error) IsType(_ ErrorType) bool { + return false +} + +func (_ *Error) JSON() interface{} { + return nil +} + +func (_ *Error) MarshalJSON() ([]byte, error) { + return nil, nil +} + +func (_ *Error) SetMeta(_ interface{}) *Error { + return nil +} + +func (_ *Error) SetType(_ ErrorType) *Error { + return nil +} + +func (_ *Error) Unwrap() error { + return nil +} + +type ErrorType uint64 + +type HandlerFunc func(*Context) + +type HandlersChain []HandlerFunc + +func (_ HandlersChain) Last() HandlerFunc { + return nil +} + +type IRoutes interface { + Any(_ string, _ ...HandlerFunc) IRoutes + DELETE(_ string, _ ...HandlerFunc) IRoutes + GET(_ string, _ ...HandlerFunc) IRoutes + HEAD(_ string, _ ...HandlerFunc) IRoutes + Handle(_ string, _ string, _ ...HandlerFunc) IRoutes + OPTIONS(_ string, _ ...HandlerFunc) IRoutes + PATCH(_ string, _ ...HandlerFunc) IRoutes + POST(_ string, _ ...HandlerFunc) IRoutes + PUT(_ string, _ ...HandlerFunc) IRoutes + Static(_ string, _ string) IRoutes + StaticFS(_ string, _ http.FileSystem) IRoutes + StaticFile(_ string, _ string) IRoutes + Use(_ ...HandlerFunc) IRoutes +} + +type Negotiate struct { + Offered []string + HTMLName string + HTMLData interface{} + JSONData interface{} + XMLData interface{} + YAMLData interface{} + Data interface{} +} + +type Param struct { + Key string + Value string +} + +type Params []Param + +func (_ Params) ByName(_ string) string { + return "" +} + +func (_ Params) Get(_ string) (string, bool) { + return "", false +} + +type ResponseWriter interface { + CloseNotify() <-chan bool + Flush() + Header() http.Header + Hijack() (net.Conn, *bufio.ReadWriter, error) + Pusher() http.Pusher + Size() int + Status() int + Write(_ []byte) (int, error) + WriteHeader(_ int) + WriteHeaderNow() + WriteString(_ string) (int, error) + Written() bool +} + +type RouteInfo struct { + Method string + Path string + Handler string + HandlerFunc HandlerFunc +} + +type RouterGroup struct { + Handlers HandlersChain +} + +func (_ *RouterGroup) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) BasePath() string { + return "" +} + +func (_ *RouterGroup) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *RouterGroup) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type RoutesInfo []RouteInfo diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gorilla/sessions/stub.go b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gorilla/sessions/stub.go new file mode 100644 index 00000000000..2ebc3858163 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gorilla/sessions/stub.go @@ -0,0 +1,75 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gorilla/sessions, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gorilla/sessions (exports: CookieStore; functions: NewCookieStore) + +// Package sessions is a stub of github.com/gorilla/sessions, generated by depstubber. +package sessions + +import ( + http "net/http" +) + +type CookieStore struct { + Codecs []interface{} + Options *Options +} + +func (_ *CookieStore) Get(_ *http.Request, _ string) (*Session, error) { + return nil, nil +} + +func (_ *CookieStore) MaxAge(_ int) {} + +func (_ *CookieStore) New(_ *http.Request, _ string) (*Session, error) { + return nil, nil +} + +func (_ *CookieStore) Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error { + return nil +} + +func NewCookieStore(_ ...[]byte) *CookieStore { + return nil +} + +type Options struct { + Path string + Domain string + MaxAge int + Secure bool + HttpOnly bool + SameSite http.SameSite +} + +type Session struct { + ID string + Values map[interface{}]interface{} + Options *Options + IsNew bool +} + +func (_ *Session) AddFlash(_ interface{}, _ ...string) {} + +func (_ *Session) Flashes(_ ...string) []interface{} { + return nil +} + +func (_ *Session) Name() string { + return "" +} + +func (_ *Session) Save(_ *http.Request, _ http.ResponseWriter) error { + return nil +} + +func (_ *Session) Store() Store { + return nil +} + +type Store interface { + Get(_ *http.Request, _ string) (*Session, error) + New(_ *http.Request, _ string) (*Session, error) + Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error +} diff --git a/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt new file mode 100644 index 00000000000..f38695b1ffc --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-1004/vendor/modules.txt @@ -0,0 +1,6 @@ +# github.com/gin-gonic/gin v1.7.1 +## explicit +github.com/gin-gonic/gin +# github.com/gorilla/sessions v1.2.1 +## explicit +github.com/gorilla/sessions diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected new file mode 100644 index 00000000000..1695d82a4f7 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.expected @@ -0,0 +1,6 @@ +| CookieWithoutSecure.go:14:2:14:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:23:2:23:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:50:2:50:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:60:2:60:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:90:2:90:22 | call to SetCookie | Cookie does not set Secure attribute to true. | +| CookieWithoutSecure.go:102:4:102:71 | call to SetCookie | Cookie does not set Secure attribute to true. | diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go new file mode 100644 index 00000000000..a066babb6e2 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go @@ -0,0 +1,107 @@ +package main + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func handler1(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure set to false by default +} + +func handler2(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + Secure: false, + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler3(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: true, + } + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler4(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.Secure = true + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler5(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.Secure = false + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler6(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + Secure: val, + } + http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false +} + +func handler7(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: val, + } + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler8(w http.ResponseWriter, r *http.Request) { + val := true + c := http.Cookie{ + Name: "session", + Value: "secret", + } + c.Secure = val + http.SetCookie(w, &c) // GOOD: Secure explicitly set to true +} + +func handler9(w http.ResponseWriter, r *http.Request) { + val := false + c := http.Cookie{ + Name: "session", // $ Source + Value: "secret", + } + c.Secure = val + http.SetCookie(w, &c) // $ Alert //BAD: Secure explicitly set to false +} + +func main() { + + router := gin.Default() + + router.GET("/cookie", func(c *gin.Context) { + + _, err := c.Cookie("session") + + if err != nil { + c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: Secure set to false + } + }) + + router.Run() +} diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref new file mode 100644 index 00000000000..dc326b1e91e --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref @@ -0,0 +1,2 @@ +query: security/CWE-614/CookieWithoutSecure.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-614/go.mod b/go/ql/test/query-tests/Security/CWE-614/go.mod new file mode 100644 index 00000000000..5ab32129a9b --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/go.mod @@ -0,0 +1,8 @@ +module example.com/m + +go 1.14 + +require ( + github.com/gin-gonic/gin v1.7.1 + github.com/gorilla/sessions v1.2.1 + ) diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE new file mode 100644 index 00000000000..1ff7f370605 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Manuel Martínez-Almeida + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go new file mode 100644 index 00000000000..43fd634edcd --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/binding/stub.go @@ -0,0 +1,12 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin/binding, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin/binding (exports: ; functions: YAML) + +// Package binding is a stub of github.com/gin-gonic/gin/binding, generated by depstubber. +package binding + +import () + +var YAML interface{} = nil diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go new file mode 100644 index 00000000000..e343d5f2aa0 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gin-gonic/gin/stub.go @@ -0,0 +1,677 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gin-gonic/gin, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gin-gonic/gin (exports: Context; functions: Default) + +// Package gin is a stub of github.com/gin-gonic/gin, generated by depstubber. +package gin + +import ( + bufio "bufio" + template "html/template" + io "io" + multipart "mime/multipart" + net "net" + http "net/http" + time "time" +) + +type Context struct { + Request *http.Request + Writer ResponseWriter + Params Params + Keys map[string]interface{} + Errors interface{} + Accepted []string +} + +func (_ *Context) Abort() {} + +func (_ *Context) AbortWithError(_ int, _ error) *Error { + return nil +} + +func (_ *Context) AbortWithStatus(_ int) {} + +func (_ *Context) AbortWithStatusJSON(_ int, _ interface{}) {} + +func (_ *Context) AsciiJSON(_ int, _ interface{}) {} + +func (_ *Context) Bind(_ interface{}) error { + return nil +} + +func (_ *Context) BindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) BindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) BindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) BindUri(_ interface{}) error { + return nil +} + +func (_ *Context) BindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) BindXML(_ interface{}) error { + return nil +} + +func (_ *Context) BindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) ClientIP() string { + return "" +} + +func (_ *Context) ContentType() string { + return "" +} + +func (_ *Context) Cookie(_ string) (string, error) { + return "", nil +} + +func (_ *Context) Copy() *Context { + return nil +} + +func (_ *Context) Data(_ int, _ string, _ []byte) {} + +func (_ *Context) DataFromReader(_ int, _ int64, _ string, _ io.Reader, _ map[string]string) {} + +func (_ *Context) Deadline() (time.Time, bool) { + return time.Time{}, false +} + +func (_ *Context) DefaultPostForm(_ string, _ string) string { + return "" +} + +func (_ *Context) DefaultQuery(_ string, _ string) string { + return "" +} + +func (_ *Context) Done() <-chan struct{} { + return nil +} + +func (_ *Context) Err() error { + return nil +} + +func (_ *Context) Error(_ error) *Error { + return nil +} + +func (_ *Context) File(_ string) {} + +func (_ *Context) FileAttachment(_ string, _ string) {} + +func (_ *Context) FileFromFS(_ string, _ http.FileSystem) {} + +func (_ *Context) FormFile(_ string) (*multipart.FileHeader, error) { + return nil, nil +} + +func (_ *Context) FullPath() string { + return "" +} + +func (_ *Context) Get(_ string) (interface{}, bool) { + return nil, false +} + +func (_ *Context) GetBool(_ string) bool { + return false +} + +func (_ *Context) GetDuration(_ string) time.Duration { + return 0 +} + +func (_ *Context) GetFloat64(_ string) float64 { + return 0 +} + +func (_ *Context) GetHeader(_ string) string { + return "" +} + +func (_ *Context) GetInt(_ string) int { + return 0 +} + +func (_ *Context) GetInt64(_ string) int64 { + return 0 +} + +func (_ *Context) GetPostForm(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetPostFormArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetPostFormMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetQuery(_ string) (string, bool) { + return "", false +} + +func (_ *Context) GetQueryArray(_ string) ([]string, bool) { + return nil, false +} + +func (_ *Context) GetQueryMap(_ string) (map[string]string, bool) { + return nil, false +} + +func (_ *Context) GetRawData() ([]byte, error) { + return nil, nil +} + +func (_ *Context) GetString(_ string) string { + return "" +} + +func (_ *Context) GetStringMap(_ string) map[string]interface{} { + return nil +} + +func (_ *Context) GetStringMapString(_ string) map[string]string { + return nil +} + +func (_ *Context) GetStringMapStringSlice(_ string) map[string][]string { + return nil +} + +func (_ *Context) GetStringSlice(_ string) []string { + return nil +} + +func (_ *Context) GetTime(_ string) time.Time { + return time.Time{} +} + +func (_ *Context) GetUint(_ string) uint { + return 0 +} + +func (_ *Context) GetUint64(_ string) uint64 { + return 0 +} + +func (_ *Context) HTML(_ int, _ string, _ interface{}) {} + +func (_ *Context) Handler() HandlerFunc { + return nil +} + +func (_ *Context) HandlerName() string { + return "" +} + +func (_ *Context) HandlerNames() []string { + return nil +} + +func (_ *Context) Header(_ string, _ string) {} + +func (_ *Context) IndentedJSON(_ int, _ interface{}) {} + +func (_ *Context) IsAborted() bool { + return false +} + +func (_ *Context) IsWebsocket() bool { + return false +} + +func (_ *Context) JSON(_ int, _ interface{}) {} + +func (_ *Context) JSONP(_ int, _ interface{}) {} + +func (_ *Context) MultipartForm() (*multipart.Form, error) { + return nil, nil +} + +func (_ *Context) MustBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) MustGet(_ string) interface{} { + return nil +} + +func (_ *Context) Negotiate(_ int, _ Negotiate) {} + +func (_ *Context) NegotiateFormat(_ ...string) string { + return "" +} + +func (_ *Context) Next() {} + +func (_ *Context) Param(_ string) string { + return "" +} + +func (_ *Context) PostForm(_ string) string { + return "" +} + +func (_ *Context) PostFormArray(_ string) []string { + return nil +} + +func (_ *Context) PostFormMap(_ string) map[string]string { + return nil +} + +func (_ *Context) ProtoBuf(_ int, _ interface{}) {} + +func (_ *Context) PureJSON(_ int, _ interface{}) {} + +func (_ *Context) Query(_ string) string { + return "" +} + +func (_ *Context) QueryArray(_ string) []string { + return nil +} + +func (_ *Context) QueryMap(_ string) map[string]string { + return nil +} + +func (_ *Context) Redirect(_ int, _ string) {} + +func (_ *Context) RemoteIP() (net.IP, bool) { + return nil, false +} + +func (_ *Context) Render(_ int, _ interface{}) {} + +func (_ *Context) SSEvent(_ string, _ interface{}) {} + +func (_ *Context) SaveUploadedFile(_ *multipart.FileHeader, _ string) error { + return nil +} + +func (_ *Context) SecureJSON(_ int, _ interface{}) {} + +func (_ *Context) Set(_ string, _ interface{}) {} + +func (_ *Context) SetAccepted(_ ...string) {} + +func (_ *Context) SetCookie(_ string, _ string, _ int, _ string, _ string, _ bool, _ bool) {} + +func (_ *Context) SetSameSite(_ http.SameSite) {} + +func (_ *Context) ShouldBind(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindBodyWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindHeader(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindJSON(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindQuery(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindUri(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindWith(_ interface{}, _ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindXML(_ interface{}) error { + return nil +} + +func (_ *Context) ShouldBindYAML(_ interface{}) error { + return nil +} + +func (_ *Context) Status(_ int) {} + +func (_ *Context) Stream(_ func(io.Writer) bool) bool { + return false +} + +func (_ *Context) String(_ int, _ string, _ ...interface{}) {} + +func (_ *Context) Value(_ interface{}) interface{} { + return nil +} + +func (_ *Context) XML(_ int, _ interface{}) {} + +func (_ *Context) YAML(_ int, _ interface{}) {} + +func Default() *Engine { + return nil +} + +type Engine struct { + RouterGroup RouterGroup + RedirectTrailingSlash bool + RedirectFixedPath bool + HandleMethodNotAllowed bool + ForwardedByClientIP bool + RemoteIPHeaders []string + TrustedProxies []string + AppEngine bool + UseRawPath bool + UnescapePathValues bool + MaxMultipartMemory int64 + RemoveExtraSlash bool + HTMLRender interface{} + FuncMap template.FuncMap +} + +func (_ *Engine) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) BasePath() string { + return "" +} + +func (_ *Engine) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Delims(_ string, _ string) *Engine { + return nil +} + +func (_ *Engine) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *Engine) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) HandleContext(_ *Context) {} + +func (_ *Engine) LoadHTMLFiles(_ ...string) {} + +func (_ *Engine) LoadHTMLGlob(_ string) {} + +func (_ *Engine) NoMethod(_ ...HandlerFunc) {} + +func (_ *Engine) NoRoute(_ ...HandlerFunc) {} + +func (_ *Engine) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *Engine) Routes() RoutesInfo { + return nil +} + +func (_ *Engine) Run(_ ...string) error { + return nil +} + +func (_ *Engine) RunFd(_ int) error { + return nil +} + +func (_ *Engine) RunListener(_ net.Listener) error { + return nil +} + +func (_ *Engine) RunTLS(_ string, _ string, _ string) error { + return nil +} + +func (_ *Engine) RunUnix(_ string) error { + return nil +} + +func (_ *Engine) SecureJsonPrefix(_ string) *Engine { + return nil +} + +func (_ *Engine) ServeHTTP(_ http.ResponseWriter, _ *http.Request) {} + +func (_ *Engine) SetFuncMap(_ template.FuncMap) {} + +func (_ *Engine) SetHTMLTemplate(_ *template.Template) {} + +func (_ *Engine) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *Engine) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *Engine) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type Error struct { + Err error + Type ErrorType + Meta interface{} +} + +func (_ Error) Error() string { + return "" +} + +func (_ *Error) IsType(_ ErrorType) bool { + return false +} + +func (_ *Error) JSON() interface{} { + return nil +} + +func (_ *Error) MarshalJSON() ([]byte, error) { + return nil, nil +} + +func (_ *Error) SetMeta(_ interface{}) *Error { + return nil +} + +func (_ *Error) SetType(_ ErrorType) *Error { + return nil +} + +func (_ *Error) Unwrap() error { + return nil +} + +type ErrorType uint64 + +type HandlerFunc func(*Context) + +type HandlersChain []HandlerFunc + +func (_ HandlersChain) Last() HandlerFunc { + return nil +} + +type IRoutes interface { + Any(_ string, _ ...HandlerFunc) IRoutes + DELETE(_ string, _ ...HandlerFunc) IRoutes + GET(_ string, _ ...HandlerFunc) IRoutes + HEAD(_ string, _ ...HandlerFunc) IRoutes + Handle(_ string, _ string, _ ...HandlerFunc) IRoutes + OPTIONS(_ string, _ ...HandlerFunc) IRoutes + PATCH(_ string, _ ...HandlerFunc) IRoutes + POST(_ string, _ ...HandlerFunc) IRoutes + PUT(_ string, _ ...HandlerFunc) IRoutes + Static(_ string, _ string) IRoutes + StaticFS(_ string, _ http.FileSystem) IRoutes + StaticFile(_ string, _ string) IRoutes + Use(_ ...HandlerFunc) IRoutes +} + +type Negotiate struct { + Offered []string + HTMLName string + HTMLData interface{} + JSONData interface{} + XMLData interface{} + YAMLData interface{} + Data interface{} +} + +type Param struct { + Key string + Value string +} + +type Params []Param + +func (_ Params) ByName(_ string) string { + return "" +} + +func (_ Params) Get(_ string) (string, bool) { + return "", false +} + +type ResponseWriter interface { + CloseNotify() <-chan bool + Flush() + Header() http.Header + Hijack() (net.Conn, *bufio.ReadWriter, error) + Pusher() http.Pusher + Size() int + Status() int + Write(_ []byte) (int, error) + WriteHeader(_ int) + WriteHeaderNow() + WriteString(_ string) (int, error) + Written() bool +} + +type RouteInfo struct { + Method string + Path string + Handler string + HandlerFunc HandlerFunc +} + +type RouterGroup struct { + Handlers HandlersChain +} + +func (_ *RouterGroup) Any(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) BasePath() string { + return "" +} + +func (_ *RouterGroup) DELETE(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) GET(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Group(_ string, _ ...HandlerFunc) *RouterGroup { + return nil +} + +func (_ *RouterGroup) HEAD(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PATCH(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) POST(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) PUT(_ string, _ ...HandlerFunc) IRoutes { + return nil +} + +func (_ *RouterGroup) Static(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFS(_ string, _ http.FileSystem) IRoutes { + return nil +} + +func (_ *RouterGroup) StaticFile(_ string, _ string) IRoutes { + return nil +} + +func (_ *RouterGroup) Use(_ ...HandlerFunc) IRoutes { + return nil +} + +type RoutesInfo []RouteInfo diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gorilla/sessions/stub.go b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gorilla/sessions/stub.go new file mode 100644 index 00000000000..2ebc3858163 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gorilla/sessions/stub.go @@ -0,0 +1,75 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/gorilla/sessions, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/gorilla/sessions (exports: CookieStore; functions: NewCookieStore) + +// Package sessions is a stub of github.com/gorilla/sessions, generated by depstubber. +package sessions + +import ( + http "net/http" +) + +type CookieStore struct { + Codecs []interface{} + Options *Options +} + +func (_ *CookieStore) Get(_ *http.Request, _ string) (*Session, error) { + return nil, nil +} + +func (_ *CookieStore) MaxAge(_ int) {} + +func (_ *CookieStore) New(_ *http.Request, _ string) (*Session, error) { + return nil, nil +} + +func (_ *CookieStore) Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error { + return nil +} + +func NewCookieStore(_ ...[]byte) *CookieStore { + return nil +} + +type Options struct { + Path string + Domain string + MaxAge int + Secure bool + HttpOnly bool + SameSite http.SameSite +} + +type Session struct { + ID string + Values map[interface{}]interface{} + Options *Options + IsNew bool +} + +func (_ *Session) AddFlash(_ interface{}, _ ...string) {} + +func (_ *Session) Flashes(_ ...string) []interface{} { + return nil +} + +func (_ *Session) Name() string { + return "" +} + +func (_ *Session) Save(_ *http.Request, _ http.ResponseWriter) error { + return nil +} + +func (_ *Session) Store() Store { + return nil +} + +type Store interface { + Get(_ *http.Request, _ string) (*Session, error) + New(_ *http.Request, _ string) (*Session, error) + Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error +} diff --git a/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt b/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt new file mode 100644 index 00000000000..f38695b1ffc --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-614/vendor/modules.txt @@ -0,0 +1,6 @@ +# github.com/gin-gonic/gin v1.7.1 +## explicit +github.com/gin-gonic/gin +# github.com/gorilla/sessions v1.2.1 +## explicit +github.com/gorilla/sessions From 2b1cd846b30b9ccafd71a05e26ee2e4f7e3a836e Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 6 Nov 2025 16:55:49 +0000 Subject: [PATCH 938/965] Fixes and doc updates --- go/ql/lib/go.qll | 1 + go/ql/lib/semmle/go/concepts/HTTP.qll | 4 ++-- go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll | 4 ++-- go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql | 2 +- go/ql/src/Security/CWE-614/CookieWithoutSecure.ql | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/go/ql/lib/go.qll b/go/ql/lib/go.qll index 688214aae85..1b8bf94a0d2 100644 --- a/go/ql/lib/go.qll +++ b/go/ql/lib/go.qll @@ -41,6 +41,7 @@ import semmle.go.frameworks.ElazarlGoproxy import semmle.go.frameworks.Email import semmle.go.frameworks.Encoding import semmle.go.frameworks.Fasthttp +import semmle.go.frameworks.Gin import semmle.go.frameworks.GinCors import semmle.go.frameworks.Glog import semmle.go.frameworks.GoJose diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 0fdf5a68624..41f3caec03d 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -381,7 +381,7 @@ module Http { predicate guardedBy(DataFlow::Node check) { super.guardedBy(check) } } - /** Provides a class for modelling HTTP response cookie writes. */ + /** Provides a class for modeling HTTP response cookie writes. */ module CookieWrite { /** * An write of an HTTP Cookie to an HTTP response. @@ -424,7 +424,7 @@ module Http { DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } } - /** Provides a class for modelling the options of an HTTP cookie. */ + /** Provides a class for modeling the options of an HTTP cookie. */ module CookieOptions { /** * An HTTP Cookie object. diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll index f68d9518109..fd86effa975 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll @@ -294,7 +294,7 @@ module NetHttp { override DataFlow::Node getAPathArgument() { result = this.getArgument(2) } } - class CookieWrite extends Http::CookieWrite::Range, DataFlow::CallNode { + private class CookieWrite extends Http::CookieWrite::Range, DataFlow::CallNode { CookieWrite() { this.getTarget().hasQualifiedName(package("net/http", ""), "SetCookie") } override DataFlow::Node getName() { result = this.getArgument(1) } @@ -306,7 +306,7 @@ module NetHttp { override DataFlow::Node getHttpOnly() { result = this.getArgument(1) } } - class CookieFieldWrite extends Http::CookieOptions::Range { + private class CookieFieldWrite extends Http::CookieOptions::Range { Write w; Field f; DataFlow::Node written; diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql index 27f86d23dd2..a37b842c29d 100644 --- a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -7,6 +7,7 @@ * @kind path-problem * @problem.severity warning * @precision high + * @security-severity 5.0 * @id go/cookie-httponly-not-set * @tags security * external/cwe/cwe-1004 @@ -14,7 +15,6 @@ import go import semmle.go.security.SecureCookies -import semmle.go.concepts.HTTP import SensitiveCookieNameFlow::PathGraph from diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql index 635d2113f8d..8efec355d1f 100644 --- a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -4,6 +4,7 @@ * @kind problem * @problem.severity warning * @precision high + * @security-severity 5.0 * @id go/cookie-secure-not-set * @tags security * external/cwe/cwe-1004 @@ -11,8 +12,7 @@ import go import semmle.go.security.SecureCookies -import semmle.go.concepts.HTTP from Http::CookieWrite cw where isInsecureCookie(cw) -select cw, "Cookie does not set Secure attribute to true" +select cw, "Cookie does not set Secure attribute to true." From fa30041498a0645e3704c1b82443d4b98aef0beb Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Sun, 9 Nov 2025 23:50:29 +0000 Subject: [PATCH 939/965] Add qhelp & fix tests --- .../CWE-1004/CookieWithoutHttpOnly.qhelp | 34 ++++++++++++++++++ .../CWE-1004/CookieWithoutHttpOnly.ql | 8 ++--- .../examples/CookieWithoutHttpOnly.go | 22 ++++++++++++ .../CWE-614/CookieWithoutSecure.qhelp | 35 +++++++++++++++++++ .../Security/CWE-614/CookieWithoutSecure.ql | 5 +-- .../CWE-614/examples/CookieWithoutSecure.go | 22 ++++++++++++ 6 files changed, 119 insertions(+), 7 deletions(-) create mode 100644 go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp create mode 100644 go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go create mode 100644 go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp create mode 100644 go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp new file mode 100644 index 00000000000..a9614e2a697 --- /dev/null +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.qhelp @@ -0,0 +1,34 @@ + + + + +

    Cookies without the HttpOnly flag set are accessible to client-side scripts such as JavaScript running in the same origin. +In case of a Cross-Site Scripting (XSS) vulnerability, the cookie can be stolen by a malicious script. +If a sensitive cookie does not need to be accessed directly by client-side JS, the HttpOnly flag should be set.

    +
    + + +

    +Set the HttpOnly flag to true for authentication cookies to ensure they are not accessible to client-side scripts. +

    +
    + + +

    +In the following example, in the case marked BAD, the HttpOnly flag is not set, so the default value of false is used. +In the case marked GOOD, the HttpOnly flag is set to true. +

    + + + +
    + + + +
  • MDN: Set-Cookie Header.
  • +
  • PortSwigger: Cookie without HttpOnly flag set
  • + +
    +
    \ No newline at end of file diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql index a37b842c29d..59881da8aa7 100644 --- a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -1,9 +1,7 @@ /** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. + * @name Cookie 'HttpOnly' attribute is not set to true + * @description Sensitive cookies without the `HttpOnly` property set are accessible by client-side scripts such as JavaScript. + * This makes them more vulnerable to being stolen by an XSS attack. * @kind path-problem * @problem.severity warning * @precision high diff --git a/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go new file mode 100644 index 00000000000..cacb952e852 --- /dev/null +++ b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go @@ -0,0 +1,22 @@ +package main + +import ( + "net/http" +) + +func handlerBad(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + http.SetCookie(w, &c) // BAD: The HttpOnly flag is set to false by default. +} + +func handlerGood(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + HttpOnly: true, + } + http.SetCookie(w, &c) // GOOD: The HttpOnly flag is set to true. +} \ No newline at end of file diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp b/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp new file mode 100644 index 00000000000..4ee969e475c --- /dev/null +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.qhelp @@ -0,0 +1,35 @@ + + + + +

    Cookies without the Secure flag set may be transmitted using HTTP instead of HTTPS. +This leaves them vulnerable to being read by a third party attacker. If a sensitive cookie such as a session +key is intercepted this way, it would allow the attacker to perform actions on a user's behalf.

    +
    + + +

    +Set the Secure flag to true to ensure cookies are only transmitted over secure HTTPS connections. +

    +
    + + +

    +In the following example, in the case marked BAD, the Secure flag is set to false by default. +In the case marked GOOD, the Secure flag is set to true. +

    + + + +
    + + + +
  • MDN: Set-Cookie Header.
  • +
  • Detectify: Cookie lack Secure flag.
  • +
  • PortSwigger: TLS cookie without secure flag set.
  • + +
    +
    \ No newline at end of file diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql index 8efec355d1f..481ed149a24 100644 --- a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -1,6 +1,7 @@ /** - * @name 'Secure' attribute is not set to true - * @description todo + * @name Cookie 'Secure' attribute is not set to true + * @description Cookies without the `Secure` flag may be sent in cleartext. + * This makes them vulnerable to be intercepted by an attacker. * @kind problem * @problem.severity warning * @precision high diff --git a/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go new file mode 100644 index 00000000000..ca502b44b3b --- /dev/null +++ b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go @@ -0,0 +1,22 @@ +package main + +import ( + "net/http" +) + +func handlerBad(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + } + http.SetCookie(w, &c) // BAD: The Secure flag is set to false by default. +} + +func handlerGood(w http.ResponseWriter, r *http.Request) { + c := http.Cookie{ + Name: "session", + Value: "secret", + Secure: true, + } + http.SetCookie(w, &c) // GOOD: The Secure flag is set to true. +} \ No newline at end of file From 536e885f1820b2947facb6f41f2a9d41bce23fa6 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 09:33:09 +0000 Subject: [PATCH 940/965] Remove experimental query --- .../src/experimental/CWE-1004/AuthCookie.qll | 245 ------- .../CWE-1004/CookieWithoutHttpOnly.qhelp | 42 -- .../CWE-1004/CookieWithoutHttpOnly.ql | 99 --- .../CWE-1004/CookieWithoutHttpOnlyBad.go | 17 - .../CWE-1004/CookieWithoutHttpOnlyGood.go | 18 - .../CWE-1004/CookieWithoutHttpOnly.expected | 432 ----------- .../CWE-1004/CookieWithoutHttpOnly.go | 219 ------ .../CWE-1004/CookieWithoutHttpOnly.qlref | 1 - go/ql/test/experimental/CWE-1004/go.mod | 8 - .../vendor/github.com/gin-gonic/gin/LICENSE | 21 - .../github.com/gin-gonic/gin/binding/stub.go | 12 - .../vendor/github.com/gin-gonic/gin/stub.go | 677 ------------------ .../github.com/gorilla/sessions/stub.go | 75 -- .../experimental/CWE-1004/vendor/modules.txt | 6 - .../CWE-1004/CookieWithoutHttpOnly.qlref | 2 +- .../CWE-614/CookieWithoutSecure.qlref | 2 +- 16 files changed, 2 insertions(+), 1874 deletions(-) delete mode 100644 go/ql/src/experimental/CWE-1004/AuthCookie.qll delete mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp delete mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql delete mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go delete mode 100644 go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go delete mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected delete mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go delete mode 100644 go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref delete mode 100644 go/ql/test/experimental/CWE-1004/go.mod delete mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE delete mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go delete mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go delete mode 100644 go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go delete mode 100644 go/ql/test/experimental/CWE-1004/vendor/modules.txt diff --git a/go/ql/src/experimental/CWE-1004/AuthCookie.qll b/go/ql/src/experimental/CWE-1004/AuthCookie.qll deleted file mode 100644 index 58c9f8642b3..00000000000 --- a/go/ql/src/experimental/CWE-1004/AuthCookie.qll +++ /dev/null @@ -1,245 +0,0 @@ -import go - -private class NetHttpCookieType extends Type { - NetHttpCookieType() { this.hasQualifiedName(package("net/http", ""), "Cookie") } -} - -private class GinContextSetCookieMethod extends Method { - GinContextSetCookieMethod() { - this.hasQualifiedName(package("github.com/gin-gonic/gin", ""), "Context", "SetCookie") - } -} - -private class GorillaSessionOptionsField extends Field { - GorillaSessionOptionsField() { - this.hasQualifiedName(package("github.com/gorilla/sessions", ""), "Session", "Options") - } -} - -/** - * A simplistic points-to alternative: given a struct creation and a field name, get the values that field can be assigned. - * - * Assumptions: - * - we don't reassign the variable that the creation is stored in - * - we always access the creation through the same variable it is initially assigned to - * - * This should cover most typical patterns... - */ -private DataFlow::Node getValueForFieldWrite(StructLit sl, string field) { - exists(Write w, DataFlow::Node base, Field f | - f.getName() = field and - w.writesFieldPreUpdate(base, f, result) and - ( - sl = base.asExpr() - or - base.asExpr() instanceof VariableName and - base.getAPredecessor*().asExpr() = sl - ) - ) -} - -/** - * Holds if the expression or its value has a sensitive name - */ -private predicate isAuthVariable(Expr expr) { - exists(string val | - ( - val = expr.getStringValue() or - val = expr.(Name).getTarget().getName() - ) and - val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and - not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") - ) -} - -/** - * A cookie passed as the second parameter to `net/http.SetCookie`. - */ -private class SetCookieSink extends DataFlow::Node { - SetCookieSink() { - exists(DataFlow::CallNode cn | - cn.getTarget().hasQualifiedName(package("net/http", ""), "SetCookie") and - this = cn.getArgument(1) - ) - } -} - -private module NameToNetHttpCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { sink instanceof SetCookieSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - sl.getType() instanceof NetHttpCookieType and - getValueForFieldWrite(sl, "Name") = pred and - sl = succ.asExpr() - ) - } -} - -/** Tracks taint flow from sensitive names to `net/http.SetCookie`. */ -module NameToNetHttpCookieTrackingFlow = TaintTracking::Global; - -private module BoolToNetHttpCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.getType().getUnderlyingType() instanceof BoolType - } - - predicate isSink(DataFlow::Node sink) { sink instanceof SetCookieSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - sl.getType() instanceof NetHttpCookieType and - getValueForFieldWrite(sl, "HttpOnly") = pred and - sl = succ.asExpr() - ) - } -} - -/** - * Tracks taint flow from a `bool` assigned to `HttpOnly` to - * `net/http.SetCookie`. - */ -module BoolToNetHttpCookieTrackingFlow = TaintTracking::Global; - -private module BoolToGinSetCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source.getBoolValue() = false } - - predicate isSink(DataFlow::Node sink) { - exists(DataFlow::MethodCallNode mcn | - mcn.getTarget() instanceof GinContextSetCookieMethod and - mcn.getArgument(6) = sink and - exists(DataFlow::Node nameArg | - NameToGinSetCookieTrackingFlow::flowTo(nameArg) and - mcn.getArgument(0) = nameArg - ) - ) - } - - predicate observeDiffInformedIncrementalMode() { - any() // Merged with other flows in CookieWithoutHttpOnly.ql - } - - Location getASelectedSourceLocation(DataFlow::Node source) { none() } -} - -/** - * Tracks data flow from `HttpOnly` set to `false` to - * `gin-gonic/gin.Context.SetCookie`. - */ -module BoolToGinSetCookieTrackingFlow = DataFlow::Global; - -private module NameToGinSetCookieTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isAuthVariable(source.asExpr()) } - - predicate isSink(DataFlow::Node sink) { - exists(DataFlow::MethodCallNode mcn | - mcn.getTarget() instanceof GinContextSetCookieMethod and - mcn.getArgument(0) = sink - ) - } -} - -/** - * Tracks taint flow from sensitive names to `gin-gonic/gin.Context.SetCookie`. - */ -private module NameToGinSetCookieTrackingFlow = DataFlow::Global; - -/** - * The receiver of `gorilla/sessions.Session.Save` call. - */ -private class GorillaSessionSaveSink extends DataFlow::Node { - GorillaSessionSaveSink() { - exists(DataFlow::MethodCallNode mcn | - this = mcn.getReceiver() and - mcn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "Session", "Save") - ) - } -} - -private class GorillaStoreSaveSink extends DataFlow::Node { - GorillaStoreSaveSink() { - exists(DataFlow::MethodCallNode mcn | - this = mcn.getArgument(2) and - mcn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "CookieStore", "Save") - ) - } -} - -private module GorillaCookieStoreSaveTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source - .(DataFlow::CallNode) - .getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "NewCookieStore") - } - - predicate isSink(DataFlow::Node sink) { - sink instanceof GorillaSessionSaveSink or - sink instanceof GorillaStoreSaveSink - } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(DataFlow::MethodCallNode cn | - cn.getTarget() - .hasQualifiedName(package("github.com/gorilla/sessions", ""), "CookieStore", "Get") and - pred = cn.getReceiver() and - succ = cn.getResult(0) - ) - } -} - -/** - * Tracks data flow from gorilla cookie store creation to - * `gorilla/sessions.Session.Save`. - */ -module GorillaCookieStoreSaveTrackingFlow = DataFlow::Global; - -private module GorillaSessionOptionsTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(StructLit sl | - sl.getType().hasQualifiedName(package("github.com/gorilla/sessions", ""), "Options") and - source.asExpr() = sl - ) - } - - predicate isSink(DataFlow::Node sink) { sink instanceof GorillaSessionSaveSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(GorillaSessionOptionsField f, DataFlow::Write w | w.writesField(succ, f, pred)) - } -} - -/** - * Tracks taint flow from session options to - * `gorilla/sessions.Session.Save`. - */ -module GorillaSessionOptionsTrackingFlow = - TaintTracking::Global; - -private module BoolToGorillaSessionOptionsTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.getType().getUnderlyingType() instanceof BoolType - } - - predicate isSink(DataFlow::Node sink) { sink instanceof GorillaSessionSaveSink } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(StructLit sl | - getValueForFieldWrite(sl, "HttpOnly") = pred and - sl = succ.asExpr() - ) - or - exists(GorillaSessionOptionsField f, DataFlow::Write w | w.writesField(succ, f, pred)) - } -} - -/** - * Tracks taint flow from a `bool` assigned to `HttpOnly` to - * `gorilla/sessions.Session.Save`. - */ -module BoolToGorillaSessionOptionsTrackingFlow = - TaintTracking::Global; diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp deleted file mode 100644 index 2e88a610c9d..00000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.qhelp +++ /dev/null @@ -1,42 +0,0 @@ - - - - -

    -Cookies without HttpOnly attribute are accessible to JavaScript running in the same origin. In case of -Cross-Site Scripting (XSS) vulnerability the cookie can be stolen by malicious script. -

    -
    - - -

    -Protect sensitive cookies, such as related to authentication, by setting HttpOnly to true to make -them not accessible to JavaScript. -

    -
    - - - -

    -In the following example the default HttpOnly value is false. -

    - - - -

    -In the example below HttpOnly is set to true. -

    - - - -
    - - - -
  • type Cookie,
  • -
  • Set-Cookie Header,
  • - -
    -
    \ No newline at end of file diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql deleted file mode 100644 index 1b135ae87f9..00000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @name 'HttpOnly' attribute is not set to true - * @description Omitting the 'HttpOnly' attribute for security sensitive data allows - * malicious JavaScript to steal it in case of XSS vulnerability. Always set - * 'HttpOnly' to 'true' to authentication related cookie to make it - * not accessible by JavaScript. - * @kind path-problem - * @problem.severity warning - * @precision high - * @id go/cookie-httponly-not-set - * @tags security - * experimental - * external/cwe/cwe-1004 - */ - -import go -import AuthCookie - -module NetHttpCookieTrackingFlow = - DataFlow::MergePathGraph; - -module GorillaTrackingFlow = - DataFlow::MergePathGraph3; - -module MergedFlow = - DataFlow::MergePathGraph3; - -import MergedFlow::PathGraph - -/** Holds if `HttpOnly` of `net/http.SetCookie` is set to `false` or not set (default value is used). */ -predicate isNetHttpCookieFlow( - NetHttpCookieTrackingFlow::PathNode source, NetHttpCookieTrackingFlow::PathNode sink -) { - exists( - NameToNetHttpCookieTrackingFlow::PathNode sensitiveName, - NameToNetHttpCookieTrackingFlow::PathNode setCookieSink - | - NameToNetHttpCookieTrackingFlow::flowPath(sensitiveName, setCookieSink) and - ( - not BoolToNetHttpCookieTrackingFlow::flowTo(sink.getNode()) and - source.asPathNode1() = sensitiveName and - sink.asPathNode1() = setCookieSink - or - BoolToNetHttpCookieTrackingFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) and - source.getNode().getBoolValue() = false and - setCookieSink.getNode() = sink.getNode() - ) - ) -} - -/** - * Holds if there is gorilla cookie store creation to `Save` path and - * `HttpOnly` is set to `false` or not set (default value is used). - */ -predicate isGorillaSessionsCookieFlow( - GorillaTrackingFlow::PathNode source, GorillaTrackingFlow::PathNode sink -) { - exists( - GorillaCookieStoreSaveTrackingFlow::PathNode cookieStoreCreate, - GorillaCookieStoreSaveTrackingFlow::PathNode sessionSave - | - GorillaCookieStoreSaveTrackingFlow::flowPath(cookieStoreCreate, sessionSave) and - ( - not GorillaSessionOptionsTrackingFlow::flowTo(sink.getNode()) and - source.asPathNode1() = cookieStoreCreate and - sink.asPathNode1() = sessionSave - or - exists(GorillaTrackingFlow::PathNode options, GorillaTrackingFlow::PathNode sessionSave2 | - GorillaSessionOptionsTrackingFlow::flowPath(options.asPathNode2(), - sessionSave2.asPathNode2()) and - ( - not BoolToGorillaSessionOptionsTrackingFlow::flowTo(sink.getNode()) and - sink = sessionSave2 and - source = options and - sessionSave.getNode() = sessionSave2.getNode() - or - BoolToGorillaSessionOptionsTrackingFlow::flowPath(source.asPathNode3(), sink.asPathNode3()) and - source.getNode().getBoolValue() = false and - sink.getNode() = sessionSave.getNode() - ) - ) - ) - ) -} - -from MergedFlow::PathNode source, MergedFlow::PathNode sink -where - isNetHttpCookieFlow(source.asPathNode1(), sink.asPathNode1()) or - BoolToGinSetCookieTrackingFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) or - isGorillaSessionsCookieFlow(source.asPathNode3(), sink.asPathNode3()) -select sink.getNode(), source, sink, "Cookie attribute 'HttpOnly' is not set to true." diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go deleted file mode 100644 index 852e2f3f3db..00000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyBad.go +++ /dev/null @@ -1,17 +0,0 @@ -package main - -import ( - "net/http" -) - -func handler(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - http.SetCookie(w, &c) -} - -func main() { - http.HandleFunc("/", handler) -} diff --git a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go b/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go deleted file mode 100644 index b0b505e2007..00000000000 --- a/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnlyGood.go +++ /dev/null @@ -1,18 +0,0 @@ -package main - -import ( - "net/http" -) - -func handler(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: true, - } - http.SetCookie(w, &c) -} - -func main() { - http.HandleFunc("/", handler) -} diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected deleted file mode 100644 index 355c0a62b1b..00000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected +++ /dev/null @@ -1,432 +0,0 @@ -edges -| 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 | Config | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | CookieWithoutHttpOnly.go:15:20:15:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | Config | -| 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:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:31:13:31:16 | true | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | Config | -| 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:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:41:15:41:18 | true | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | Config | -| 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:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | Config | -| 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:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:59:13:59:15 | val | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | Config | -| 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:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:69:13:69:15 | val | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | Config | -| 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:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:80:15:80:17 | val | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | Config | -| 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:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:90:15:90:17 | val | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | Config | -| 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:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... | 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:21:100:21 | c | provenance | | -| CookieWithoutHttpOnly.go:99:15:99:19 | false | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | provenance | Config | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | CookieWithoutHttpOnly.go:100:20:100:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | Config | -| 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:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... | 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: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 | Config | -| CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | Config | -| 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:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... | 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 | Config | -| 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: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 | Config | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | provenance | Config | -| 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 | Config | -| 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 | Config | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | provenance | Config | -| 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: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 | Config | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | provenance | Config | -| 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 | Config | -| 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: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 | Config | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | Config | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | provenance | Config | -| 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 | Config | -| 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 | Config | -| 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 | Config | -nodes -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:12:10:12:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:20:13:20:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:22:13:22:17 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:29:13:29:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:31:13:31:16 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:38:10:38:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:41:15:41:18 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:47:10:47:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:50:15:50:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:55:2:55:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:55:9:55:13 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:57:13:57:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:59:13:59:15 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:65:2:65:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:65:9:65:12 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:67:13:67:21 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:69:13:69:15 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:75:2:75:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:75:9:75:12 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:77:10:77:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:80:15:80:17 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:85:2:85:4 | definition of val | semmle.label | definition of val | -| CookieWithoutHttpOnly.go:85:9:85:13 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:87:10:87:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:90:15:90:17 | val | semmle.label | val | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:99:15:99:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:104:10:104:18 | "session" | semmle.label | "session" | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:106:10:106:13 | name | semmle.label | name | -| CookieWithoutHttpOnly.go:109:15:109:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:114:13:114:24 | "login_name" | semmle.label | "login_name" | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:116:10:116:16 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:119:15:119:19 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | semmle.label | &... [pointer] | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | semmle.label | c | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | semmle.label | call to NewCookieStore | -| CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:126:16:126:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:129:2:129:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:133:2:133:9 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:133:14:133:18 | false | semmle.label | false | -| CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:134:16:134:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:146:16:146:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:157:14:157:17 | true | semmle.label | true | -| CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:158:16:158:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:166:2:166:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:169:56:169:63 | argument corresponding to httpOnly | semmle.label | argument corresponding to httpOnly | -| CookieWithoutHttpOnly.go:169:56:169:63 | definition of httpOnly | semmle.label | definition of httpOnly | -| CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:170:16:170:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference [postupdate] | semmle.label | implicit dereference [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] | semmle.label | session [postupdate] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [postupdate] [pointer] | semmle.label | session [postupdate] [pointer] | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | semmle.label | &... | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | semmle.label | struct literal | -| CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | semmle.label | httpOnly | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:178:2:178:8 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:183:16:183:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:191:19:191:25 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | semmle.label | ... := ...[0] | -| CookieWithoutHttpOnly.go:195:16:195:20 | store | semmle.label | store | -| CookieWithoutHttpOnly.go:202:19:202:25 | session | semmle.label | session | -| CookieWithoutHttpOnly.go:214:66:214:70 | false | semmle.label | false | -subpaths -#select -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:15:20:15:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:24:20:24:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:51:20:51:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:55:9:55:13 | false | CookieWithoutHttpOnly.go:61:20:61:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:85:9:85:13 | false | CookieWithoutHttpOnly.go:91:20:91:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:110:20:110:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:120:20:120:21 | &... | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:129:2:129:8 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:129:2:129:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:142:2:142:8 | session | CookieWithoutHttpOnly.go:133:14:133:18 | false | CookieWithoutHttpOnly.go:142:2:142:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:153:2:153:8 | session | CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:153:2:153:8 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:191:19:191:25 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:191:19:191:25 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:202:19:202:25 | session | CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:202:19:202:25 | session | Cookie attribute 'HttpOnly' is not set to true. | -| CookieWithoutHttpOnly.go:214:66:214:70 | false | CookieWithoutHttpOnly.go:214:66:214:70 | false | CookieWithoutHttpOnly.go:214:66:214:70 | false | Cookie attribute 'HttpOnly' is not set to true. | diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go deleted file mode 100644 index 00be0bbf44a..00000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.go +++ /dev/null @@ -1,219 +0,0 @@ -package main - -import ( - "net/http" - - "github.com/gin-gonic/gin" - "github.com/gorilla/sessions" -) - -func handler1(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - http.SetCookie(w, &c) // BAD: HttpOnly set to false by default -} - -func handler2(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: false, - } - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler3(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: true, - } - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler4(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = true - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler5(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler6(w http.ResponseWriter, r *http.Request) { - val := false - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: val, - } - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler7(w http.ResponseWriter, r *http.Request) { - val := true - c := http.Cookie{ - Name: "session", - Value: "secret", - HttpOnly: val, - } - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler8(w http.ResponseWriter, r *http.Request) { - val := true - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = val - http.SetCookie(w, &c) // GOOD: HttpOnly explicitly set to true -} - -func handler9(w http.ResponseWriter, r *http.Request) { - val := false - c := http.Cookie{ - Name: "session", - Value: "secret", - } - c.HttpOnly = val - http.SetCookie(w, &c) // BAD: HttpOnly explicitly set to false -} - -func handler10(w http.ResponseWriter, r *http.Request) { - c := http.Cookie{ - Name: "consent", - Value: "1", - } - c.HttpOnly = false - http.SetCookie(w, &c) // GOOD: Name is not auth related -} - -func handler11(w http.ResponseWriter, r *http.Request) { - name := "session" - c := http.Cookie{ - Name: name, - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: auth related name -} - -func handler12(w http.ResponseWriter, r *http.Request) { - session := "login_name" - c := http.Cookie{ - Name: session, - Value: "secret", - } - c.HttpOnly = false - http.SetCookie(w, &c) // BAD: auth related name -} - -var store = sessions.NewCookieStore([]byte("aa")) - -func handler13(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Save(r, w) // BAD: Default options are set (false) -} - -func handler14(w http.ResponseWriter, r *http.Request) { - httpOnly := false - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // BAD: Explicitly set to false -} - -func handler15(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - } - - session.Save(r, w) // BAD: default (false) is used -} - -func handler16(w http.ResponseWriter, r *http.Request) { - httpOnly := true - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // GOOD: value is true -} - -func handler17(w http.ResponseWriter, r *http.Request, httpOnly bool) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - session.Save(r, w) // GOOD: value is unknown -} - -func handler18(w http.ResponseWriter, r *http.Request) { - httpOnly := false - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - HttpOnly: httpOnly, - } - - store.Save(r, w, session) // BAD: Explicitly set to false -} - -func handler19(w http.ResponseWriter, r *http.Request) { - session, _ := store.Get(r, "session-name") - session.Values["foo"] = "secret" - - session.Options = &sessions.Options{ - MaxAge: -1, - } - - store.Save(r, w, session) // BAD: default (false) is used -} - -func main() { - - router := gin.Default() - - router.GET("/cookie", func(c *gin.Context) { - - _, err := c.Cookie("session") - - if err != nil { - c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // BAD: httpOnly set to false - } - }) - - router.Run() -} diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref deleted file mode 100644 index ca6a153038c..00000000000 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/CWE-1004/CookieWithoutHttpOnly.ql diff --git a/go/ql/test/experimental/CWE-1004/go.mod b/go/ql/test/experimental/CWE-1004/go.mod deleted file mode 100644 index 5ab32129a9b..00000000000 --- a/go/ql/test/experimental/CWE-1004/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module example.com/m - -go 1.14 - -require ( - github.com/gin-gonic/gin v1.7.1 - github.com/gorilla/sessions v1.2.1 - ) diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE b/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE deleted file mode 100644 index 1ff7f370605..00000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Manuel Martínez-Almeida - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go b/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go deleted file mode 100644 index 43fd634edcd..00000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/binding/stub.go +++ /dev/null @@ -1,12 +0,0 @@ -// Code generated by depstubber. DO NOT EDIT. -// This is a simple stub for github.com/gin-gonic/gin/binding, strictly for use in testing. - -// See the LICENSE file for information about the licensing of the original library. -// Source: github.com/gin-gonic/gin/binding (exports: ; functions: YAML) - -// Package binding is a stub of github.com/gin-gonic/gin/binding, generated by depstubber. -package binding - -import () - -var YAML interface{} = nil diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go b/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go deleted file mode 100644 index e343d5f2aa0..00000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/github.com/gin-gonic/gin/stub.go +++ /dev/null @@ -1,677 +0,0 @@ -// Code generated by depstubber. DO NOT EDIT. -// This is a simple stub for github.com/gin-gonic/gin, strictly for use in testing. - -// See the LICENSE file for information about the licensing of the original library. -// Source: github.com/gin-gonic/gin (exports: Context; functions: Default) - -// Package gin is a stub of github.com/gin-gonic/gin, generated by depstubber. -package gin - -import ( - bufio "bufio" - template "html/template" - io "io" - multipart "mime/multipart" - net "net" - http "net/http" - time "time" -) - -type Context struct { - Request *http.Request - Writer ResponseWriter - Params Params - Keys map[string]interface{} - Errors interface{} - Accepted []string -} - -func (_ *Context) Abort() {} - -func (_ *Context) AbortWithError(_ int, _ error) *Error { - return nil -} - -func (_ *Context) AbortWithStatus(_ int) {} - -func (_ *Context) AbortWithStatusJSON(_ int, _ interface{}) {} - -func (_ *Context) AsciiJSON(_ int, _ interface{}) {} - -func (_ *Context) Bind(_ interface{}) error { - return nil -} - -func (_ *Context) BindHeader(_ interface{}) error { - return nil -} - -func (_ *Context) BindJSON(_ interface{}) error { - return nil -} - -func (_ *Context) BindQuery(_ interface{}) error { - return nil -} - -func (_ *Context) BindUri(_ interface{}) error { - return nil -} - -func (_ *Context) BindWith(_ interface{}, _ interface{}) error { - return nil -} - -func (_ *Context) BindXML(_ interface{}) error { - return nil -} - -func (_ *Context) BindYAML(_ interface{}) error { - return nil -} - -func (_ *Context) ClientIP() string { - return "" -} - -func (_ *Context) ContentType() string { - return "" -} - -func (_ *Context) Cookie(_ string) (string, error) { - return "", nil -} - -func (_ *Context) Copy() *Context { - return nil -} - -func (_ *Context) Data(_ int, _ string, _ []byte) {} - -func (_ *Context) DataFromReader(_ int, _ int64, _ string, _ io.Reader, _ map[string]string) {} - -func (_ *Context) Deadline() (time.Time, bool) { - return time.Time{}, false -} - -func (_ *Context) DefaultPostForm(_ string, _ string) string { - return "" -} - -func (_ *Context) DefaultQuery(_ string, _ string) string { - return "" -} - -func (_ *Context) Done() <-chan struct{} { - return nil -} - -func (_ *Context) Err() error { - return nil -} - -func (_ *Context) Error(_ error) *Error { - return nil -} - -func (_ *Context) File(_ string) {} - -func (_ *Context) FileAttachment(_ string, _ string) {} - -func (_ *Context) FileFromFS(_ string, _ http.FileSystem) {} - -func (_ *Context) FormFile(_ string) (*multipart.FileHeader, error) { - return nil, nil -} - -func (_ *Context) FullPath() string { - return "" -} - -func (_ *Context) Get(_ string) (interface{}, bool) { - return nil, false -} - -func (_ *Context) GetBool(_ string) bool { - return false -} - -func (_ *Context) GetDuration(_ string) time.Duration { - return 0 -} - -func (_ *Context) GetFloat64(_ string) float64 { - return 0 -} - -func (_ *Context) GetHeader(_ string) string { - return "" -} - -func (_ *Context) GetInt(_ string) int { - return 0 -} - -func (_ *Context) GetInt64(_ string) int64 { - return 0 -} - -func (_ *Context) GetPostForm(_ string) (string, bool) { - return "", false -} - -func (_ *Context) GetPostFormArray(_ string) ([]string, bool) { - return nil, false -} - -func (_ *Context) GetPostFormMap(_ string) (map[string]string, bool) { - return nil, false -} - -func (_ *Context) GetQuery(_ string) (string, bool) { - return "", false -} - -func (_ *Context) GetQueryArray(_ string) ([]string, bool) { - return nil, false -} - -func (_ *Context) GetQueryMap(_ string) (map[string]string, bool) { - return nil, false -} - -func (_ *Context) GetRawData() ([]byte, error) { - return nil, nil -} - -func (_ *Context) GetString(_ string) string { - return "" -} - -func (_ *Context) GetStringMap(_ string) map[string]interface{} { - return nil -} - -func (_ *Context) GetStringMapString(_ string) map[string]string { - return nil -} - -func (_ *Context) GetStringMapStringSlice(_ string) map[string][]string { - return nil -} - -func (_ *Context) GetStringSlice(_ string) []string { - return nil -} - -func (_ *Context) GetTime(_ string) time.Time { - return time.Time{} -} - -func (_ *Context) GetUint(_ string) uint { - return 0 -} - -func (_ *Context) GetUint64(_ string) uint64 { - return 0 -} - -func (_ *Context) HTML(_ int, _ string, _ interface{}) {} - -func (_ *Context) Handler() HandlerFunc { - return nil -} - -func (_ *Context) HandlerName() string { - return "" -} - -func (_ *Context) HandlerNames() []string { - return nil -} - -func (_ *Context) Header(_ string, _ string) {} - -func (_ *Context) IndentedJSON(_ int, _ interface{}) {} - -func (_ *Context) IsAborted() bool { - return false -} - -func (_ *Context) IsWebsocket() bool { - return false -} - -func (_ *Context) JSON(_ int, _ interface{}) {} - -func (_ *Context) JSONP(_ int, _ interface{}) {} - -func (_ *Context) MultipartForm() (*multipart.Form, error) { - return nil, nil -} - -func (_ *Context) MustBindWith(_ interface{}, _ interface{}) error { - return nil -} - -func (_ *Context) MustGet(_ string) interface{} { - return nil -} - -func (_ *Context) Negotiate(_ int, _ Negotiate) {} - -func (_ *Context) NegotiateFormat(_ ...string) string { - return "" -} - -func (_ *Context) Next() {} - -func (_ *Context) Param(_ string) string { - return "" -} - -func (_ *Context) PostForm(_ string) string { - return "" -} - -func (_ *Context) PostFormArray(_ string) []string { - return nil -} - -func (_ *Context) PostFormMap(_ string) map[string]string { - return nil -} - -func (_ *Context) ProtoBuf(_ int, _ interface{}) {} - -func (_ *Context) PureJSON(_ int, _ interface{}) {} - -func (_ *Context) Query(_ string) string { - return "" -} - -func (_ *Context) QueryArray(_ string) []string { - return nil -} - -func (_ *Context) QueryMap(_ string) map[string]string { - return nil -} - -func (_ *Context) Redirect(_ int, _ string) {} - -func (_ *Context) RemoteIP() (net.IP, bool) { - return nil, false -} - -func (_ *Context) Render(_ int, _ interface{}) {} - -func (_ *Context) SSEvent(_ string, _ interface{}) {} - -func (_ *Context) SaveUploadedFile(_ *multipart.FileHeader, _ string) error { - return nil -} - -func (_ *Context) SecureJSON(_ int, _ interface{}) {} - -func (_ *Context) Set(_ string, _ interface{}) {} - -func (_ *Context) SetAccepted(_ ...string) {} - -func (_ *Context) SetCookie(_ string, _ string, _ int, _ string, _ string, _ bool, _ bool) {} - -func (_ *Context) SetSameSite(_ http.SameSite) {} - -func (_ *Context) ShouldBind(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindBodyWith(_ interface{}, _ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindHeader(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindJSON(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindQuery(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindUri(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindWith(_ interface{}, _ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindXML(_ interface{}) error { - return nil -} - -func (_ *Context) ShouldBindYAML(_ interface{}) error { - return nil -} - -func (_ *Context) Status(_ int) {} - -func (_ *Context) Stream(_ func(io.Writer) bool) bool { - return false -} - -func (_ *Context) String(_ int, _ string, _ ...interface{}) {} - -func (_ *Context) Value(_ interface{}) interface{} { - return nil -} - -func (_ *Context) XML(_ int, _ interface{}) {} - -func (_ *Context) YAML(_ int, _ interface{}) {} - -func Default() *Engine { - return nil -} - -type Engine struct { - RouterGroup RouterGroup - RedirectTrailingSlash bool - RedirectFixedPath bool - HandleMethodNotAllowed bool - ForwardedByClientIP bool - RemoteIPHeaders []string - TrustedProxies []string - AppEngine bool - UseRawPath bool - UnescapePathValues bool - MaxMultipartMemory int64 - RemoveExtraSlash bool - HTMLRender interface{} - FuncMap template.FuncMap -} - -func (_ *Engine) Any(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) BasePath() string { - return "" -} - -func (_ *Engine) DELETE(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) Delims(_ string, _ string) *Engine { - return nil -} - -func (_ *Engine) GET(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) Group(_ string, _ ...HandlerFunc) *RouterGroup { - return nil -} - -func (_ *Engine) HEAD(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) HandleContext(_ *Context) {} - -func (_ *Engine) LoadHTMLFiles(_ ...string) {} - -func (_ *Engine) LoadHTMLGlob(_ string) {} - -func (_ *Engine) NoMethod(_ ...HandlerFunc) {} - -func (_ *Engine) NoRoute(_ ...HandlerFunc) {} - -func (_ *Engine) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) PATCH(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) POST(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) PUT(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *Engine) Routes() RoutesInfo { - return nil -} - -func (_ *Engine) Run(_ ...string) error { - return nil -} - -func (_ *Engine) RunFd(_ int) error { - return nil -} - -func (_ *Engine) RunListener(_ net.Listener) error { - return nil -} - -func (_ *Engine) RunTLS(_ string, _ string, _ string) error { - return nil -} - -func (_ *Engine) RunUnix(_ string) error { - return nil -} - -func (_ *Engine) SecureJsonPrefix(_ string) *Engine { - return nil -} - -func (_ *Engine) ServeHTTP(_ http.ResponseWriter, _ *http.Request) {} - -func (_ *Engine) SetFuncMap(_ template.FuncMap) {} - -func (_ *Engine) SetHTMLTemplate(_ *template.Template) {} - -func (_ *Engine) Static(_ string, _ string) IRoutes { - return nil -} - -func (_ *Engine) StaticFS(_ string, _ http.FileSystem) IRoutes { - return nil -} - -func (_ *Engine) StaticFile(_ string, _ string) IRoutes { - return nil -} - -func (_ *Engine) Use(_ ...HandlerFunc) IRoutes { - return nil -} - -type Error struct { - Err error - Type ErrorType - Meta interface{} -} - -func (_ Error) Error() string { - return "" -} - -func (_ *Error) IsType(_ ErrorType) bool { - return false -} - -func (_ *Error) JSON() interface{} { - return nil -} - -func (_ *Error) MarshalJSON() ([]byte, error) { - return nil, nil -} - -func (_ *Error) SetMeta(_ interface{}) *Error { - return nil -} - -func (_ *Error) SetType(_ ErrorType) *Error { - return nil -} - -func (_ *Error) Unwrap() error { - return nil -} - -type ErrorType uint64 - -type HandlerFunc func(*Context) - -type HandlersChain []HandlerFunc - -func (_ HandlersChain) Last() HandlerFunc { - return nil -} - -type IRoutes interface { - Any(_ string, _ ...HandlerFunc) IRoutes - DELETE(_ string, _ ...HandlerFunc) IRoutes - GET(_ string, _ ...HandlerFunc) IRoutes - HEAD(_ string, _ ...HandlerFunc) IRoutes - Handle(_ string, _ string, _ ...HandlerFunc) IRoutes - OPTIONS(_ string, _ ...HandlerFunc) IRoutes - PATCH(_ string, _ ...HandlerFunc) IRoutes - POST(_ string, _ ...HandlerFunc) IRoutes - PUT(_ string, _ ...HandlerFunc) IRoutes - Static(_ string, _ string) IRoutes - StaticFS(_ string, _ http.FileSystem) IRoutes - StaticFile(_ string, _ string) IRoutes - Use(_ ...HandlerFunc) IRoutes -} - -type Negotiate struct { - Offered []string - HTMLName string - HTMLData interface{} - JSONData interface{} - XMLData interface{} - YAMLData interface{} - Data interface{} -} - -type Param struct { - Key string - Value string -} - -type Params []Param - -func (_ Params) ByName(_ string) string { - return "" -} - -func (_ Params) Get(_ string) (string, bool) { - return "", false -} - -type ResponseWriter interface { - CloseNotify() <-chan bool - Flush() - Header() http.Header - Hijack() (net.Conn, *bufio.ReadWriter, error) - Pusher() http.Pusher - Size() int - Status() int - Write(_ []byte) (int, error) - WriteHeader(_ int) - WriteHeaderNow() - WriteString(_ string) (int, error) - Written() bool -} - -type RouteInfo struct { - Method string - Path string - Handler string - HandlerFunc HandlerFunc -} - -type RouterGroup struct { - Handlers HandlersChain -} - -func (_ *RouterGroup) Any(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) BasePath() string { - return "" -} - -func (_ *RouterGroup) DELETE(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) GET(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) Group(_ string, _ ...HandlerFunc) *RouterGroup { - return nil -} - -func (_ *RouterGroup) HEAD(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) Handle(_ string, _ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) OPTIONS(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) PATCH(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) POST(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) PUT(_ string, _ ...HandlerFunc) IRoutes { - return nil -} - -func (_ *RouterGroup) Static(_ string, _ string) IRoutes { - return nil -} - -func (_ *RouterGroup) StaticFS(_ string, _ http.FileSystem) IRoutes { - return nil -} - -func (_ *RouterGroup) StaticFile(_ string, _ string) IRoutes { - return nil -} - -func (_ *RouterGroup) Use(_ ...HandlerFunc) IRoutes { - return nil -} - -type RoutesInfo []RouteInfo diff --git a/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go b/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go deleted file mode 100644 index 2ebc3858163..00000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/github.com/gorilla/sessions/stub.go +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by depstubber. DO NOT EDIT. -// This is a simple stub for github.com/gorilla/sessions, strictly for use in testing. - -// See the LICENSE file for information about the licensing of the original library. -// Source: github.com/gorilla/sessions (exports: CookieStore; functions: NewCookieStore) - -// Package sessions is a stub of github.com/gorilla/sessions, generated by depstubber. -package sessions - -import ( - http "net/http" -) - -type CookieStore struct { - Codecs []interface{} - Options *Options -} - -func (_ *CookieStore) Get(_ *http.Request, _ string) (*Session, error) { - return nil, nil -} - -func (_ *CookieStore) MaxAge(_ int) {} - -func (_ *CookieStore) New(_ *http.Request, _ string) (*Session, error) { - return nil, nil -} - -func (_ *CookieStore) Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error { - return nil -} - -func NewCookieStore(_ ...[]byte) *CookieStore { - return nil -} - -type Options struct { - Path string - Domain string - MaxAge int - Secure bool - HttpOnly bool - SameSite http.SameSite -} - -type Session struct { - ID string - Values map[interface{}]interface{} - Options *Options - IsNew bool -} - -func (_ *Session) AddFlash(_ interface{}, _ ...string) {} - -func (_ *Session) Flashes(_ ...string) []interface{} { - return nil -} - -func (_ *Session) Name() string { - return "" -} - -func (_ *Session) Save(_ *http.Request, _ http.ResponseWriter) error { - return nil -} - -func (_ *Session) Store() Store { - return nil -} - -type Store interface { - Get(_ *http.Request, _ string) (*Session, error) - New(_ *http.Request, _ string) (*Session, error) - Save(_ *http.Request, _ http.ResponseWriter, _ *Session) error -} diff --git a/go/ql/test/experimental/CWE-1004/vendor/modules.txt b/go/ql/test/experimental/CWE-1004/vendor/modules.txt deleted file mode 100644 index f38695b1ffc..00000000000 --- a/go/ql/test/experimental/CWE-1004/vendor/modules.txt +++ /dev/null @@ -1,6 +0,0 @@ -# github.com/gin-gonic/gin v1.7.1 -## explicit -github.com/gin-gonic/gin -# github.com/gorilla/sessions v1.2.1 -## explicit -github.com/gorilla/sessions diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref index 3f81c27e867..399174134bb 100644 --- a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.qlref @@ -1,2 +1,2 @@ -query: security/CWE-1004/CookieWithoutHttpOnly.ql +query: Security/CWE-1004/CookieWithoutHttpOnly.ql postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref index dc326b1e91e..9b6762358be 100644 --- a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.qlref @@ -1,2 +1,2 @@ -query: security/CWE-614/CookieWithoutSecure.ql +query: Security/CWE-614/CookieWithoutSecure.ql postprocess: utils/test/InlineExpectationsTestQuery.ql From d633120f4d448b1ed84d8689102d08f56884deef Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 09:37:46 +0000 Subject: [PATCH 941/965] Update integration tests --- .../query-suite/go-security-and-quality.qls.expected | 2 ++ .../query-suite/go-security-extended.qls.expected | 2 ++ .../integration-tests/query-suite/not_included_in_qls.expected | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected index 71bcb2b0330..53624256090 100644 --- a/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-and-quality.qls.expected @@ -34,6 +34,7 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-117/LogInjection.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -49,6 +50,7 @@ ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql diff --git a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected index b0447a6c3eb..97f0937346a 100644 --- a/go/ql/integration-tests/query-suite/go-security-extended.qls.expected +++ b/go/ql/integration-tests/query-suite/go-security-extended.qls.expected @@ -12,6 +12,7 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-117/LogInjection.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql @@ -27,6 +28,7 @@ ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql diff --git a/go/ql/integration-tests/query-suite/not_included_in_qls.expected b/go/ql/integration-tests/query-suite/not_included_in_qls.expected index 7b8b86a7a53..93775742500 100644 --- a/go/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/go/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -9,7 +9,6 @@ ql/go/ql/src/Security/CWE-079/StoredXss.ql ql/go/ql/src/Security/CWE-798/HardcodedCredentials.ql ql/go/ql/src/definitions.ql ql/go/ql/src/experimental/CWE-090/LDAPInjection.ql -ql/go/ql/src/experimental/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/experimental/CWE-203/Timing.ql ql/go/ql/src/experimental/CWE-285/PamAuthBypass.ql ql/go/ql/src/experimental/CWE-287/ImproperLdapAuth.ql From ed483dd5b292135abab0254076a94c3d875c8d7e Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 09:44:10 +0000 Subject: [PATCH 942/965] Add change note --- go/ql/src/change-notes/2025-11-10-inseucre-cookie.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 go/ql/src/change-notes/2025-11-10-inseucre-cookie.md diff --git a/go/ql/src/change-notes/2025-11-10-inseucre-cookie.md b/go/ql/src/change-notes/2025-11-10-inseucre-cookie.md new file mode 100644 index 00000000000..89430c39ebe --- /dev/null +++ b/go/ql/src/change-notes/2025-11-10-inseucre-cookie.md @@ -0,0 +1,5 @@ +--- +category: newQuery +--- +* The `go/cookie-http-only-not-set` query has been promoted from the experimental query pack. This query was originally contributed to the experimental query pack by @edvraa. +* A new query `go/cookie-secure-not-set` has been added to detect cookies without the `Secure` flag set. \ No newline at end of file From a25861d8a3f81a557a0f6e1dd5b2b34c4f54b6e6 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 10:18:49 +0000 Subject: [PATCH 943/965] Update integration test --- .../integration-tests/query-suite/go-code-scanning.qls.expected | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected index d8d3e0a13e7..4e58a49e12d 100644 --- a/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected +++ b/go/ql/integration-tests/query-suite/go-code-scanning.qls.expected @@ -12,6 +12,7 @@ ql/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql ql/go/ql/src/Security/CWE-079/ReflectedXss.ql ql/go/ql/src/Security/CWE-089/SqlInjection.ql ql/go/ql/src/Security/CWE-089/StringBreak.ql +ql/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql ql/go/ql/src/Security/CWE-190/AllocationSizeOverflow.ql ql/go/ql/src/Security/CWE-209/StackTraceExposure.ql ql/go/ql/src/Security/CWE-295/DisabledCertificateCheck.ql @@ -26,6 +27,7 @@ ql/go/ql/src/Security/CWE-347/MissingJwtSignatureCheck.ql ql/go/ql/src/Security/CWE-352/ConstantOauth2State.ql ql/go/ql/src/Security/CWE-601/BadRedirectCheck.ql ql/go/ql/src/Security/CWE-601/OpenUrlRedirect.ql +ql/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql ql/go/ql/src/Security/CWE-640/EmailInjection.ql ql/go/ql/src/Security/CWE-643/XPathInjection.ql ql/go/ql/src/Security/CWE-681/IncorrectIntegerConversionQuery.ql From 6282c343966153d1b2a3936db09cfce70cc23c2a Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 10:25:08 +0000 Subject: [PATCH 944/965] Update formatting --- .../CWE-1004/examples/CookieWithoutHttpOnly.go | 6 +++--- .../CWE-614/examples/CookieWithoutSecure.go | 10 +++++----- .../Security/CWE-1004/CookieWithoutHttpOnly.go | 6 +++--- .../Security/CWE-614/CookieWithoutSecure.go | 18 +++++++++--------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go index cacb952e852..a4a78b9f962 100644 --- a/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go +++ b/go/ql/src/Security/CWE-1004/examples/CookieWithoutHttpOnly.go @@ -6,8 +6,8 @@ import ( func handlerBad(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", - Value: "secret", + Name: "session", + Value: "secret", } http.SetCookie(w, &c) // BAD: The HttpOnly flag is set to false by default. } @@ -19,4 +19,4 @@ func handlerGood(w http.ResponseWriter, r *http.Request) { HttpOnly: true, } http.SetCookie(w, &c) // GOOD: The HttpOnly flag is set to true. -} \ No newline at end of file +} diff --git a/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go index ca502b44b3b..dc46c918d36 100644 --- a/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go +++ b/go/ql/src/Security/CWE-614/examples/CookieWithoutSecure.go @@ -6,17 +6,17 @@ import ( func handlerBad(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", - Value: "secret", + Name: "session", + Value: "secret", } http.SetCookie(w, &c) // BAD: The Secure flag is set to false by default. } func handlerGood(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", - Value: "secret", + Name: "session", + Value: "secret", Secure: true, } http.SetCookie(w, &c) // GOOD: The Secure flag is set to true. -} \ No newline at end of file +} diff --git a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go index 0e3958aca2e..6a7e6ffbfe8 100644 --- a/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go +++ b/go/ql/test/query-tests/Security/CWE-1004/CookieWithoutHttpOnly.go @@ -25,7 +25,7 @@ func handler2(w http.ResponseWriter, r *http.Request) { func handler3(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", + Name: "session", Value: "secret", HttpOnly: true, } @@ -63,7 +63,7 @@ func handler6(w http.ResponseWriter, r *http.Request) { func handler7(w http.ResponseWriter, r *http.Request) { val := true c := http.Cookie{ - Name: "session", + Name: "session", Value: "secret", HttpOnly: val, } @@ -125,7 +125,7 @@ func main() { router.GET("/cookie", func(c *gin.Context) { - _, err := c.Cookie("session") + _, err := c.Cookie("session") if err != nil { c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: httpOnly set to false diff --git a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go index a066babb6e2..41ed48c0ba1 100644 --- a/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go +++ b/go/ql/test/query-tests/Security/CWE-614/CookieWithoutSecure.go @@ -16,8 +16,8 @@ func handler1(w http.ResponseWriter, r *http.Request) { func handler2(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", // $ Source - Value: "secret", + Name: "session", // $ Source + Value: "secret", Secure: false, } http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false @@ -25,8 +25,8 @@ func handler2(w http.ResponseWriter, r *http.Request) { func handler3(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ - Name: "session", - Value: "secret", + Name: "session", + Value: "secret", Secure: true, } http.SetCookie(w, &c) // GOOD: Secure explicitly set to true @@ -53,8 +53,8 @@ func handler5(w http.ResponseWriter, r *http.Request) { func handler6(w http.ResponseWriter, r *http.Request) { val := false c := http.Cookie{ - Name: "session", // $ Source - Value: "secret", + Name: "session", // $ Source + Value: "secret", Secure: val, } http.SetCookie(w, &c) // $ Alert // BAD: Secure explicitly set to false @@ -63,8 +63,8 @@ func handler6(w http.ResponseWriter, r *http.Request) { func handler7(w http.ResponseWriter, r *http.Request) { val := true c := http.Cookie{ - Name: "session", - Value: "secret", + Name: "session", + Value: "secret", Secure: val, } http.SetCookie(w, &c) // GOOD: Secure explicitly set to true @@ -96,7 +96,7 @@ func main() { router.GET("/cookie", func(c *gin.Context) { - _, err := c.Cookie("session") + _, err := c.Cookie("session") if err != nil { c.SetCookie("session", "test", 3600, "/", "localhost", false, false) // $ Alert // BAD: Secure set to false From 1bd5005fc18d81e634f0b52296296cabf13c630b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 10 Nov 2025 10:58:07 +0000 Subject: [PATCH 945/965] Fix typos --- go/ql/lib/semmle/go/concepts/HTTP.qll | 4 ++-- go/ql/src/Security/CWE-614/CookieWithoutSecure.ql | 2 +- ...11-10-inseucre-cookie.md => 2025-11-10-insecure-cookie.md} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename go/ql/src/change-notes/{2025-11-10-inseucre-cookie.md => 2025-11-10-insecure-cookie.md} (100%) diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 41f3caec03d..0d3bf55939f 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -384,7 +384,7 @@ module Http { /** Provides a class for modeling HTTP response cookie writes. */ module CookieWrite { /** - * An write of an HTTP Cookie to an HTTP response. + * A write of an HTTP Cookie to an HTTP response. * * Extend this class to model new APIs. If you want to refine existing API models, * extend `HTTP::CookieWrite` instead. @@ -405,7 +405,7 @@ module Http { } /** - * An write of an HTTP Cookie to an HTTP response. + * A write of an HTTP Cookie to an HTTP response. * * Extend this class to refine existing API models. If you want to model new APIs, * extend `HTTP::CookieWrite::Range` instead. diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql index 481ed149a24..9ff157cbbbb 100644 --- a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -8,7 +8,7 @@ * @security-severity 5.0 * @id go/cookie-secure-not-set * @tags security - * external/cwe/cwe-1004 + * external/cwe/cwe-614 */ import go diff --git a/go/ql/src/change-notes/2025-11-10-inseucre-cookie.md b/go/ql/src/change-notes/2025-11-10-insecure-cookie.md similarity index 100% rename from go/ql/src/change-notes/2025-11-10-inseucre-cookie.md rename to go/ql/src/change-notes/2025-11-10-insecure-cookie.md From 03d63dec2e151ba647cd3429d3e3a704ae9b2f9b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 17 Nov 2025 15:07:06 +0000 Subject: [PATCH 946/965] Address reviews - rename and update doc comments --- go/ql/lib/semmle/go/concepts/HTTP.qll | 28 +++++++++---------- .../semmle/go/frameworks/stdlib/NetHttp.qll | 10 +++---- .../lib/semmle/go/security/SecureCookies.qll | 6 ++-- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 0d3bf55939f..12ec551696a 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -381,7 +381,7 @@ module Http { predicate guardedBy(DataFlow::Node check) { super.guardedBy(check) } } - /** Provides a class for modeling HTTP response cookie writes. */ + /** Provides a class for modeling new HTTP response cookie write APIs. */ module CookieWrite { /** * A write of an HTTP Cookie to an HTTP response. @@ -424,10 +424,10 @@ module Http { DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } } - /** Provides a class for modeling the options of an HTTP cookie. */ - module CookieOptions { + /** Provides a class for modeling the new APIs for writes to options of an HTTP cookie. */ + module CookieOptionWrite { /** - * An HTTP Cookie object. + * A write to an HTTP cookie object. * * Extend this class to model new APIs. If you want to refine existing API models, * extend `HTTP::CookieOptions` instead. @@ -436,40 +436,40 @@ module Http { /** Gets the node representing the cookie object for the options being set. */ abstract DataFlow::Node getCookieOutput(); - /** Gets the name of the cookie represented. */ + /** Gets the name of the cookie represented, if any. */ abstract DataFlow::Node getName(); - /** Gets the value of the cookie represented. */ + /** Gets the value of the cookie represented, if any. */ abstract DataFlow::Node getValue(); - /** Gets the `Secure` attribute of the cookie represented. */ + /** Gets the `Secure` attribute of the cookie represented, if any. */ abstract DataFlow::Node getSecure(); - /** Gets the `HttpOnly` attribute of the cookie represented. */ + /** Gets the `HttpOnly` attribute of the cookie represented, if any. */ abstract DataFlow::Node getHttpOnly(); } } /** - * An HTTP Cookie. + * A write to an HTTP cookie object. * * Extend this class to refine existing API models. If you want to model new APIs, * extend `HTTP::CookieOptions::Range` instead. */ - class CookieOptions extends DataFlow::Node instanceof CookieOptions::Range { + class CookieOptionWrite extends DataFlow::Node instanceof CookieOptionWrite::Range { /** Gets the node representing the cookie object for the options being set. */ DataFlow::Node getCookieOutput() { result = super.getCookieOutput() } - /** Gets the name of the cookie represented. */ + /** Gets the name of the cookie represented, if any. */ DataFlow::Node getName() { result = super.getName() } - /** Gets the value of the cookie represented. */ + /** Gets the value of the cookie represented, if any. */ DataFlow::Node getValue() { result = super.getValue() } - /** Gets the `Secure` attribute of the cookie represented. */ + /** Gets the `Secure` attribute of the cookie represented, if any. */ DataFlow::Node getSecure() { result = super.getSecure() } - /** Gets the `HttpOnly` attribute of the cookie represented. */ + /** Gets the `HttpOnly` attribute of the cookie represented, if any. */ DataFlow::Node getHttpOnly() { result = super.getHttpOnly() } } } diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll index fd86effa975..e798d116352 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll @@ -306,15 +306,15 @@ module NetHttp { override DataFlow::Node getHttpOnly() { result = this.getArgument(1) } } - private class CookieFieldWrite extends Http::CookieOptions::Range { - Write w; - Field f; + private class CookieFieldWrite extends Http::CookieOptionWrite::Range { DataFlow::Node written; string fieldName; CookieFieldWrite() { - f.hasQualifiedName(package("net/http", ""), "Cookie", fieldName) and - w.writesField(this, f, written) + exists(Write w, Field f | + f.hasQualifiedName(package("net/http", ""), "Cookie", fieldName) and + w.writesField(this, f, written) + ) } override DataFlow::Node getCookieOutput() { result = this } diff --git a/go/ql/lib/semmle/go/security/SecureCookies.qll b/go/ql/lib/semmle/go/security/SecureCookies.qll index f700c030337..a61620a79c1 100644 --- a/go/ql/lib/semmle/go/security/SecureCookies.qll +++ b/go/ql/lib/semmle/go/security/SecureCookies.qll @@ -22,7 +22,7 @@ private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getName()) } predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(Http::CookieOptions co | co.getName() = pred and co.getCookieOutput() = succ) + exists(Http::CookieOptionWrite co | co.getName() = pred and co.getCookieOutput() = succ) } } @@ -37,7 +37,7 @@ private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(Http::CookieOptions co | co.getSecure() = pred and co.getCookieOutput() = succ) + exists(Http::CookieOptionWrite co | co.getSecure() = pred and co.getCookieOutput() = succ) } } @@ -52,7 +52,7 @@ private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getHttpOnly()) } predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(Http::CookieOptions co | co.getHttpOnly() = pred and co.getCookieOutput() = succ) + exists(Http::CookieOptionWrite co | co.getHttpOnly() = pred and co.getCookieOutput() = succ) } } From 5b702d963e5fcfc93f0569318604c450fc790093 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 17 Nov 2025 15:44:14 +0000 Subject: [PATCH 947/965] Refactor parts of SensitiveCookieNameConfig --- .../lib/semmle/go/security/SecureCookies.qll | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/go/ql/lib/semmle/go/security/SecureCookies.qll b/go/ql/lib/semmle/go/security/SecureCookies.qll index a61620a79c1..5904adbed39 100644 --- a/go/ql/lib/semmle/go/security/SecureCookies.qll +++ b/go/ql/lib/semmle/go/security/SecureCookies.qll @@ -4,22 +4,24 @@ import go import semmle.go.concepts.HTTP import semmle.go.dataflow.DataFlow -/** - * Holds if the expression or its value has a sensitive name - */ -private predicate isSensitiveExpr(Expr expr, string val) { - ( - val = expr.getStringValue() or - val = expr.(Name).getTarget().getName() - ) and - val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and - not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") -} - private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isSensitiveExpr(source.asExpr(), _) } + /** + * Holds if `source` is an expression with a name or literal value `val` indicating a sensitive cookie. + */ + additional predicate isSource(DataFlow::Node source, string val) { + ( + val = source.asExpr().getStringValue() or + val = source.asExpr().(Name).getTarget().getName() + ) and + val.regexpMatch("(?i).*(session|login|token|user|auth|credential).*") and + not val.regexpMatch("(?i).*(xsrf|csrf|forgery).*") + } - predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getName()) } + predicate isSource(DataFlow::Node source) { isSource(source, _) } + + additional predicate isSink(DataFlow::Node sink, Http::CookieWrite cw) { sink = cw.getName() } + + predicate isSink(DataFlow::Node sink) { isSink(sink, _) } predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { exists(Http::CookieOptionWrite co | co.getName() = pred and co.getCookieOutput() = succ) @@ -98,11 +100,10 @@ predicate isNonHttpOnlyCookie(Http::CookieWrite cw) { * `source` and `sink` represent the data flow path from the sensitive name expression to the cookie write. */ predicate isSensitiveCookie( - Http::CookieWrite cw, Expr nameExpr, string name, SensitiveCookieNameFlow::PathNode source, + Http::CookieWrite cw, string name, SensitiveCookieNameFlow::PathNode source, SensitiveCookieNameFlow::PathNode sink ) { SensitiveCookieNameFlow::flowPath(source, sink) and - source.getNode().asExpr() = nameExpr and - sink.getNode() = cw.getName() and - isSensitiveExpr(nameExpr, name) + SensitiveCookieNameConfig::isSource(source.getNode(), name) and + SensitiveCookieNameConfig::isSink(sink.getNode(), cw) } From c6110ed5415af3595cd7082d6fa190086404b86a Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 17 Nov 2025 16:15:10 +0000 Subject: [PATCH 948/965] Split SecureCookies into query specific files --- ...eCookies.qll => CookieWithoutHttpOnly.qll} | 34 +---------------- .../go/security/CookieWithoutSecure.qll | 37 +++++++++++++++++++ .../CWE-1004/CookieWithoutHttpOnly.ql | 12 +++--- .../Security/CWE-614/CookieWithoutSecure.ql | 4 +- 4 files changed, 46 insertions(+), 41 deletions(-) rename go/ql/lib/semmle/go/security/{SecureCookies.qll => CookieWithoutHttpOnly.qll} (69%) create mode 100644 go/ql/lib/semmle/go/security/CookieWithoutSecure.qll diff --git a/go/ql/lib/semmle/go/security/SecureCookies.qll b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll similarity index 69% rename from go/ql/lib/semmle/go/security/SecureCookies.qll rename to go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll index 5904adbed39..915a58ef369 100644 --- a/go/ql/lib/semmle/go/security/SecureCookies.qll +++ b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll @@ -1,4 +1,4 @@ -/** Provides classes and predicates for identifying HTTP cookies with insecure attributes. */ +/** Provides classes and predicates for identifying HTTP cookies without the `HttpOnly` attribute. */ import go import semmle.go.concepts.HTTP @@ -31,21 +31,6 @@ private module SensitiveCookieNameConfig implements DataFlow::ConfigSig { /** Tracks flow from sensitive names to HTTP cookie writes. */ module SensitiveCookieNameFlow = TaintTracking::Global; -private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source.getType().getUnderlyingType() instanceof BoolType - } - - predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } - - predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { - exists(Http::CookieOptionWrite co | co.getSecure() = pred and co.getCookieOutput() = succ) - } -} - -/** Tracks flow from boolean expressions to the `Secure` attribute of HTTP cookie writes. */ -module BooleanCookieSecureFlow = TaintTracking::Global; - private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.getType().getUnderlyingType() instanceof BoolType @@ -61,23 +46,6 @@ private module BooleanCookieHttpOnlyConfig implements DataFlow::ConfigSig { /** Tracks flow from boolean expressions to the `HttpOnly` attribute of HTTP cookie writes. */ module BooleanCookieHttpOnlyFlow = TaintTracking::Global; -/** Holds if `cw` has the `Secure` attribute left at its default value of `false`. */ -predicate isInsecureDefault(Http::CookieWrite cw) { - not BooleanCookieSecureFlow::flow(_, cw.getSecure()) -} - -/** Holds if `cw` has the `Secure` attribute explicitly set to `false`, from the expression `boolFalse`. */ -predicate isInsecureDirect(Http::CookieWrite cw, Expr boolFalse) { - BooleanCookieSecureFlow::flow(DataFlow::exprNode(boolFalse), cw.getSecure()) and - boolFalse.getBoolValue() = false -} - -/** Holds if `cw` has the `Secure` attribute set to `false`, either explicitly or by default. */ -predicate isInsecureCookie(Http::CookieWrite cw) { - isInsecureDefault(cw) or - isInsecureDirect(cw, _) -} - /** Holds if `cw` has the `HttpOnly` attribute left at its default value of `false`. */ predicate isNonHttpOnlyDefault(Http::CookieWrite cw) { not BooleanCookieHttpOnlyFlow::flow(_, cw.getHttpOnly()) diff --git a/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll b/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll new file mode 100644 index 00000000000..86d65ca5c0f --- /dev/null +++ b/go/ql/lib/semmle/go/security/CookieWithoutSecure.qll @@ -0,0 +1,37 @@ +/** Provides classes and predicates for identifying HTTP cookies without the `Secure` attribute. */ + +import go +import semmle.go.concepts.HTTP +import semmle.go.dataflow.DataFlow + +private module BooleanCookieSecureConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.getType().getUnderlyingType() instanceof BoolType + } + + predicate isSink(DataFlow::Node sink) { exists(Http::CookieWrite cw | sink = cw.getSecure()) } + + predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(Http::CookieOptionWrite co | co.getSecure() = pred and co.getCookieOutput() = succ) + } +} + +/** Tracks flow from boolean expressions to the `Secure` attribute of HTTP cookie writes. */ +module BooleanCookieSecureFlow = TaintTracking::Global; + +/** Holds if `cw` has the `Secure` attribute left at its default value of `false`. */ +predicate isInsecureDefault(Http::CookieWrite cw) { + not BooleanCookieSecureFlow::flow(_, cw.getSecure()) +} + +/** Holds if `cw` has the `Secure` attribute explicitly set to `false`, from the expression `boolFalse`. */ +predicate isInsecureDirect(Http::CookieWrite cw, Expr boolFalse) { + BooleanCookieSecureFlow::flow(DataFlow::exprNode(boolFalse), cw.getSecure()) and + boolFalse.getBoolValue() = false +} + +/** Holds if `cw` has the `Secure` attribute set to `false`, either explicitly or by default. */ +predicate isInsecureCookie(Http::CookieWrite cw) { + isInsecureDefault(cw) or + isInsecureDirect(cw, _) +} diff --git a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql index 59881da8aa7..8d11d8c40a6 100644 --- a/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql +++ b/go/ql/src/Security/CWE-1004/CookieWithoutHttpOnly.ql @@ -12,14 +12,14 @@ */ import go -import semmle.go.security.SecureCookies +import semmle.go.security.CookieWithoutHttpOnly import SensitiveCookieNameFlow::PathGraph from - Http::CookieWrite cw, Expr sensitiveNameExpr, string name, - SensitiveCookieNameFlow::PathNode source, SensitiveCookieNameFlow::PathNode sink + Http::CookieWrite cw, string name, SensitiveCookieNameFlow::PathNode source, + SensitiveCookieNameFlow::PathNode sink where - isSensitiveCookie(cw, sensitiveNameExpr, name, source, sink) and + isSensitiveCookie(cw, name, source, sink) and isNonHttpOnlyCookie(cw) -select cw, source, sink, "Sensitive cookie $@ does not set HttpOnly attribute to true.", - sensitiveNameExpr, name +select cw, source, sink, "Sensitive cookie $@ does not set HttpOnly attribute to true.", source, + name diff --git a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql index 9ff157cbbbb..7c3c4ed1dd3 100644 --- a/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql +++ b/go/ql/src/Security/CWE-614/CookieWithoutSecure.ql @@ -5,14 +5,14 @@ * @kind problem * @problem.severity warning * @precision high - * @security-severity 5.0 + * @security-severity 4.0 * @id go/cookie-secure-not-set * @tags security * external/cwe/cwe-614 */ import go -import semmle.go.security.SecureCookies +import semmle.go.security.CookieWithoutSecure from Http::CookieWrite cw where isInsecureCookie(cw) From c7b16a043e78ed2696fc7400096fee3aa2f87df8 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Wed, 19 Nov 2025 06:01:30 +0000 Subject: [PATCH 949/965] Address reviews - update comments, remove unneeded stubs --- go/ql/lib/semmle/go/concepts/HTTP.qll | 8 +- .../go/security/CookieWithoutHttpOnly.qll | 2 +- .../go/security/CookieWithoutSecure.qll | 2 +- .../github.com/gorilla/sessions/stub.go | 75 ------------------- .../Security/CWE-1004/vendor/modules.txt | 3 - .../github.com/gorilla/sessions/stub.go | 75 ------------------- .../Security/CWE-614/vendor/modules.txt | 3 - 7 files changed, 6 insertions(+), 162 deletions(-) delete mode 100644 go/ql/test/query-tests/Security/CWE-1004/vendor/github.com/gorilla/sessions/stub.go delete mode 100644 go/ql/test/query-tests/Security/CWE-614/vendor/github.com/gorilla/sessions/stub.go diff --git a/go/ql/lib/semmle/go/concepts/HTTP.qll b/go/ql/lib/semmle/go/concepts/HTTP.qll index 12ec551696a..479cc19bfcc 100644 --- a/go/ql/lib/semmle/go/concepts/HTTP.qll +++ b/go/ql/lib/semmle/go/concepts/HTTP.qll @@ -427,10 +427,10 @@ module Http { /** Provides a class for modeling the new APIs for writes to options of an HTTP cookie. */ module CookieOptionWrite { /** - * A write to an HTTP cookie object. + * A write to an option of an HTTP cookie object. * * Extend this class to model new APIs. If you want to refine existing API models, - * extend `HTTP::CookieOptions` instead. + * extend `HTTP::CookieOptionWrite` instead. */ abstract class Range extends DataFlow::Node { /** Gets the node representing the cookie object for the options being set. */ @@ -451,10 +451,10 @@ module Http { } /** - * A write to an HTTP cookie object. + * A write to an option of an HTTP cookie object. * * Extend this class to refine existing API models. If you want to model new APIs, - * extend `HTTP::CookieOptions::Range` instead. + * extend `HTTP::CookieOptionWrite::Range` instead. */ class CookieOptionWrite extends DataFlow::Node instanceof CookieOptionWrite::Range { /** Gets the node representing the cookie object for the options being set. */ diff --git a/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll index 915a58ef369..8eed50b8791 100644 --- a/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll +++ b/go/ql/lib/semmle/go/security/CookieWithoutHttpOnly.qll @@ -48,7 +48,7 @@ module BooleanCookieHttpOnlyFlow = TaintTracking::Global Date: Wed, 19 Nov 2025 06:19:49 +0000 Subject: [PATCH 950/965] Remove references to gorilla --- go/ql/test/query-tests/Security/CWE-1004/go.mod | 1 - go/ql/test/query-tests/Security/CWE-614/go.mod | 1 - 2 files changed, 2 deletions(-) diff --git a/go/ql/test/query-tests/Security/CWE-1004/go.mod b/go/ql/test/query-tests/Security/CWE-1004/go.mod index 5ab32129a9b..e0e296499fc 100644 --- a/go/ql/test/query-tests/Security/CWE-1004/go.mod +++ b/go/ql/test/query-tests/Security/CWE-1004/go.mod @@ -4,5 +4,4 @@ go 1.14 require ( github.com/gin-gonic/gin v1.7.1 - github.com/gorilla/sessions v1.2.1 ) diff --git a/go/ql/test/query-tests/Security/CWE-614/go.mod b/go/ql/test/query-tests/Security/CWE-614/go.mod index 5ab32129a9b..e0e296499fc 100644 --- a/go/ql/test/query-tests/Security/CWE-614/go.mod +++ b/go/ql/test/query-tests/Security/CWE-614/go.mod @@ -4,5 +4,4 @@ go 1.14 require ( github.com/gin-gonic/gin v1.7.1 - github.com/gorilla/sessions v1.2.1 ) From e95b3590f0ee51ca04803d75b6c51380381b7004 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 25 Nov 2025 15:54:45 +0100 Subject: [PATCH 951/965] JS: Fix project layout detection for Next.js apps Some parts of the code did not handle case where 'pages' was located at 'app/pages'. --- .../lib/semmle/javascript/frameworks/Next.qll | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Next.qll b/javascript/ql/lib/semmle/javascript/frameworks/Next.qll index 551d325f26a..a65fcdce44d 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Next.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Next.qll @@ -13,12 +13,31 @@ module NextJS { */ PackageJson getANextPackage() { result.getDependencies().getADependency("next", _) } + bindingset[base, name] + pragma[inline_late] + private Folder getOptionalFolder(Folder base, string name) { + result = base.getFolder(name) + or + not exists(base.getFolder(name)) and + result = base + } + + private Folder packageRoot() { result = getANextPackage().getFile().getParentContainer() } + + private Folder srcRoot() { result = getOptionalFolder(packageRoot(), "src") } + + private Folder appRoot() { result = srcRoot().getFolder("app") } + + private Folder pagesRoot() { result = [srcRoot(), appRoot()].getFolder("pages") } + + private Folder apiRoot() { result = [pagesRoot(), appRoot()].getFolder("api") } + /** * Gets a "pages" folder in a `Next.js` application. * JavaScript files inside these folders are mapped to routes. */ Folder getAPagesFolder() { - result = getANextPackage().getFile().getParentContainer().getFolder("pages") + result = pagesRoot() or result = getAPagesFolder().getAFolder() } @@ -217,8 +236,7 @@ module NextJS { * the App Router (`app/api/`) Next.js 13+ structures. */ Folder apiFolder() { - result = - getANextPackage().getFile().getParentContainer().getFolder(["pages", "app"]).getFolder("api") or + result = apiRoot() or result = apiFolder().getAFolder() } From faa55f50e7c9d454251801bf2ce5f376a1cf09c3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 14:52:26 +0000 Subject: [PATCH 952/965] C++: Add another test with a template function whose non-type template parameter is in tail position. --- .../dataflow/external-models/flow.expected | 39 ++++++++++++------- .../dataflow/external-models/sinks.expected | 3 +- .../dataflow/external-models/sources.expected | 2 +- .../dataflow/external-models/test.cpp | 12 ++++-- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index 95b4e2ef8b4..a6b2c9d5e3a 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -105,12 +105,18 @@ edges | test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | -| test.cpp:111:10:111:18 | call to ymlSource | test.cpp:111:10:111:18 | call to ymlSource | provenance | Src:MaD:16 | -| test.cpp:111:10:111:18 | call to ymlSource | test.cpp:112:43:112:43 | *x | provenance | | -| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | provenance | | -| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | test.cpp:113:10:113:10 | y | provenance | Sink:MaD:1 | -| test.cpp:112:43:112:43 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | -| test.cpp:112:43:112:43 | *x | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | provenance | MaD:32 | +| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:16 | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:115:44:115:44 | *x | provenance | | +| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:118:44:118:44 | *x | provenance | | +| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | provenance | | +| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | test.cpp:116:10:116:11 | y1 | provenance | Sink:MaD:1 | +| test.cpp:115:44:115:44 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | +| test.cpp:115:44:115:44 | *x | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | provenance | MaD:32 | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:119:10:119:11 | y2 | provenance | Sink:MaD:1 | +| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | +| test.cpp:118:44:118:44 | *x | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | MaD:32 | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:18 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | @@ -324,12 +330,18 @@ nodes | test.cpp:104:62:104:62 | x | semmle.label | x | | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | -| test.cpp:111:10:111:18 | call to ymlSource | semmle.label | call to ymlSource | -| test.cpp:111:10:111:18 | call to ymlSource | semmle.label | call to ymlSource | -| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | -| test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | -| test.cpp:112:43:112:43 | *x | semmle.label | *x | -| test.cpp:113:10:113:10 | y | semmle.label | y | +| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | +| test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | +| test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:115:44:115:44 | *x | semmle.label | *x | +| test.cpp:116:10:116:11 | y1 | semmle.label | y1 | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | +| test.cpp:118:44:118:44 | *x | semmle.label | *x | +| test.cpp:119:10:119:11 | y2 | semmle.label | y2 | | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | semmle.label | [summary param] *0 in CommandLineToArgvA | | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | semmle.label | [summary] to write: ReturnValue[**] in CommandLineToArgvA | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | @@ -488,7 +500,8 @@ subpaths | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | -| test.cpp:112:43:112:43 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:112:10:112:41 | call to callWithNonTypeTemplate | +| test.cpp:115:44:115:44 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | +| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | | windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 51c2180f113..e28349b7159 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -13,4 +13,5 @@ | test.cpp:75:11:75:11 | y | test-sink | | test.cpp:83:11:83:11 | y | test-sink | | test.cpp:89:11:89:11 | y | test-sink | -| test.cpp:113:10:113:10 | y | test-sink | +| test.cpp:116:10:116:11 | y1 | test-sink | +| test.cpp:119:10:119:11 | y2 | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index fc975299737..cb7e06b801d 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -2,7 +2,7 @@ | test.cpp:10:10:10:18 | call to ymlSource | local | | test.cpp:56:8:56:16 | call to ymlSource | local | | test.cpp:94:10:94:18 | call to ymlSource | local | -| test.cpp:111:10:111:18 | call to ymlSource | local | +| test.cpp:114:10:114:18 | call to ymlSource | local | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | local | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | local | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | local | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index ce5179e3157..6a021431bd9 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -107,8 +107,14 @@ void test_callWithArgument() { template T callWithNonTypeTemplate(const T&); +template +T callWithNonTypeTemplate(const T&); + void test_callWithNonTypeTemplate() { int x = ymlSource(); - int y = callWithNonTypeTemplate<10, int>(x); - ymlSink(y); // $ ir -} \ No newline at end of file + int y1 = callWithNonTypeTemplate<10, int>(x); + ymlSink(y1); // $ ir + + int y2 = callWithNonTypeTemplate(x); + ymlSink(y2); // $ ir +} From 05737af165f8fca31c7744b26f46743a9298b835 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 14:54:47 +0000 Subject: [PATCH 953/965] C++: Only support non-type template parameters in tail position. --- .../semmle/code/cpp/dataflow/ExternalFlow.qll | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index a269427971e..ebf82a59dfa 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -634,14 +634,13 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon canonical = true } -/** Gets the `i`'th supported template parameter for `templateFunction`. */ -private Locatable getSupportedFunctionTemplateArgument(Function templateFunction, int i) { +/** + * Gets the largest index of a template parameter of `templateFunction` that + * is a type template parameter. + */ +private int getLastTypeTemplateFunctionParameterIndex(Function templateFunction) { result = - rank[i + 1](int j, TypeTemplateParameter ttp | - ttp = templateFunction.getTemplateArgument(j) - | - ttp order by j - ) + max(int index | templateFunction.getTemplateArgument(index) instanceof TypeTemplateParameter) } /** Gets the number of supported template parameters for `templateFunction`. */ @@ -649,6 +648,14 @@ private int getNumberOfSupportedFunctionTemplateArguments(Function templateFunct result = count(int i | exists(getSupportedFunctionTemplateArgument(templateFunction, i)) | i) } +/** Gets the `i`'th supported template parameter for `templateFunction`. */ +private Locatable getSupportedFunctionTemplateArgument(Function templateFunction, int i) { + result = templateFunction.getTemplateArgument(i) and + // We don't yet support non-type template parameters in the middle of a + // template parameter list + i <= getLastTypeTemplateFunctionParameterIndex(templateFunction) +} + /** * Normalize the `n`'th parameter of `f` by replacing template names * with `func:N` (where `N` is the index of the template). @@ -669,14 +676,21 @@ private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remain ) } +/** + * Gets the largest index of a template parameter of `templateFunction` that + * is a type template parameter. + */ +private int getLastTypeTemplateClassParameterIndex(Class templateClass) { + result = + max(int index | templateClass.getTemplateArgument(index) instanceof TypeTemplateParameter) +} + /** Gets the `i`'th supported template parameter for `templateClass`. */ private Locatable getSupportedClassTemplateArgument(Class templateClass, int i) { - result = - rank[i + 1](int j, TypeTemplateParameter ttp | - ttp = templateClass.getTemplateArgument(j) - | - ttp order by j - ) + result = templateClass.getTemplateArgument(i) and + // We don't yet support non-type template parameters in the middle of a + // template parameter list + i <= getLastTypeTemplateClassParameterIndex(templateClass) } /** Gets the number of supported template parameters for `templateClass`. */ From a91969b7e157b1aa41a288b210e90cd682edc6d2 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 25 Nov 2025 15:58:11 +0100 Subject: [PATCH 954/965] JS: Change note --- .../ql/src/change-notes/2025-11-25-nextjs-project-layout.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 javascript/ql/src/change-notes/2025-11-25-nextjs-project-layout.md diff --git a/javascript/ql/src/change-notes/2025-11-25-nextjs-project-layout.md b/javascript/ql/src/change-notes/2025-11-25-nextjs-project-layout.md new file mode 100644 index 00000000000..7135aa3f2ed --- /dev/null +++ b/javascript/ql/src/change-notes/2025-11-25-nextjs-project-layout.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed a bug in the Next.js model that would cause the analysis to miss server-side taint sources in the `app/pages` folder. From 0deac833e4542fb49b251c8433a1628a762821f7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 14:59:09 +0000 Subject: [PATCH 955/965] C++: Accept test changes. --- .../dataflow/external-models/flow.expected | 13 ------------- .../library-tests/dataflow/external-models/test.cpp | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index a6b2c9d5e3a..d47ae8950fb 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -104,15 +104,9 @@ edges | test.cpp:101:26:101:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | | test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:32 | | test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:16 | -| test.cpp:114:10:114:18 | call to ymlSource | test.cpp:115:44:115:44 | *x | provenance | | | test.cpp:114:10:114:18 | call to ymlSource | test.cpp:118:44:118:44 | *x | provenance | | -| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | provenance | | -| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | test.cpp:116:10:116:11 | y1 | provenance | Sink:MaD:1 | -| test.cpp:115:44:115:44 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | -| test.cpp:115:44:115:44 | *x | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | provenance | MaD:32 | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:119:10:119:11 | y2 | provenance | Sink:MaD:1 | | test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | @@ -328,16 +322,10 @@ nodes | test.cpp:101:26:101:26 | x | semmle.label | x | | test.cpp:103:63:103:63 | x | semmle.label | x | | test.cpp:104:62:104:62 | x | semmle.label | x | -| test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | -| test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | | test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | -| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | -| test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | -| test.cpp:115:44:115:44 | *x | semmle.label | *x | -| test.cpp:116:10:116:11 | y1 | semmle.label | y1 | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | | test.cpp:118:44:118:44 | *x | semmle.label | *x | @@ -500,7 +488,6 @@ subpaths | test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | -| test.cpp:115:44:115:44 | *x | test.cpp:108:3:108:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:108:3:108:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:115:11:115:42 | call to callWithNonTypeTemplate | | test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index 6a021431bd9..af11ff958f5 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -113,7 +113,7 @@ T callWithNonTypeTemplate(const T&); void test_callWithNonTypeTemplate() { int x = ymlSource(); int y1 = callWithNonTypeTemplate<10, int>(x); - ymlSink(y1); // $ ir + ymlSink(y1); // $ MISSING: ir int y2 = callWithNonTypeTemplate(x); ymlSink(y2); // $ ir From 73b6fa69a988119086f875ad6142549fa14bdc7e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 25 Nov 2025 15:03:26 +0000 Subject: [PATCH 956/965] C++: Fix Code Scanning alert. --- cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index ebf82a59dfa..69e32d23ec1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -677,7 +677,7 @@ private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remain } /** - * Gets the largest index of a template parameter of `templateFunction` that + * Gets the largest index of a template parameter of `templateClass` that * is a type template parameter. */ private int getLastTypeTemplateClassParameterIndex(Class templateClass) { From 5b4e11495502b750bf396c1d966da3f4fa36b9c2 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 25 Nov 2025 16:04:30 +0100 Subject: [PATCH 957/965] JS: Add test --- .../ReflectedXss/ReflectedXss.expected | 4 ++++ .../ReflectedXssWithCustomSanitizer.expected | 2 ++ .../CWE-079/ReflectedXss/app/pages/Next2.jsx | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index e536364f805..b488018d09d 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -35,6 +35,8 @@ | app/api/routeNextRequest.ts:15:20:15:23 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:15:20:15:23 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:27:20:27:23 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:27:20:27:23 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:31:27:31:30 | body | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | app/api/routeNextRequest.ts:31:27:31:30 | body | Cross-site scripting vulnerability due to a $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | +| app/pages/Next2.jsx:8:13:8:19 | req.url | app/pages/Next2.jsx:8:13:8:19 | req.url | app/pages/Next2.jsx:8:13:8:19 | req.url | Cross-site scripting vulnerability due to a $@. | app/pages/Next2.jsx:8:13:8:19 | req.url | user-provided value | +| app/pages/Next2.jsx:15:13:15:19 | req.url | app/pages/Next2.jsx:15:13:15:19 | req.url | app/pages/Next2.jsx:15:13:15:19 | req.url | Cross-site scripting vulnerability due to a $@. | app/pages/Next2.jsx:15:13:15:19 | req.url | user-provided value | | etherpad.js:11:12:11:19 | response | etherpad.js:9:16:9:30 | req.query.jsonp | etherpad.js:11:12:11:19 | response | Cross-site scripting vulnerability due to a $@. | etherpad.js:9:16:9:30 | req.query.jsonp | user-provided value | | formatting.js:6:14:6:47 | util.fo ... , evil) | formatting.js:4:16:4:29 | req.query.evil | formatting.js:6:14:6:47 | util.fo ... , evil) | Cross-site scripting vulnerability due to a $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | formatting.js:7:14:7:53 | require ... , evil) | formatting.js:4:16:4:29 | req.query.evil | formatting.js:7:14:7:53 | require ... , evil) | Cross-site scripting vulnerability due to a $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | @@ -365,6 +367,8 @@ nodes | app/api/routeNextRequest.ts:15:20:15:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:27:20:27:23 | body | semmle.label | body | | app/api/routeNextRequest.ts:31:27:31:30 | body | semmle.label | body | +| app/pages/Next2.jsx:8:13:8:19 | req.url | semmle.label | req.url | +| app/pages/Next2.jsx:15:13:15:19 | req.url | semmle.label | req.url | | etherpad.js:9:5:9:12 | response | semmle.label | response | | etherpad.js:9:16:9:30 | req.query.jsonp | semmle.label | req.query.jsonp | | etherpad.js:11:12:11:19 | response | semmle.label | response | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected index a4b02fa0749..2dceb5fa807 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected @@ -34,6 +34,8 @@ | app/api/routeNextRequest.ts:15:20:15:23 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:27:20:27:23 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | | app/api/routeNextRequest.ts:31:27:31:30 | body | Cross-site scripting vulnerability due to $@. | app/api/routeNextRequest.ts:4:22:4:31 | req.json() | user-provided value | +| app/pages/Next2.jsx:8:13:8:19 | req.url | Cross-site scripting vulnerability due to $@. | app/pages/Next2.jsx:8:13:8:19 | req.url | user-provided value | +| app/pages/Next2.jsx:15:13:15:19 | req.url | Cross-site scripting vulnerability due to $@. | app/pages/Next2.jsx:15:13:15:19 | req.url | user-provided value | | formatting.js:6:14:6:47 | util.fo ... , evil) | Cross-site scripting vulnerability due to $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | formatting.js:7:14:7:53 | require ... , evil) | Cross-site scripting vulnerability due to $@. | formatting.js:4:16:4:29 | req.query.evil | user-provided value | | live-server.js:6:13:6:50 | ` ... /html>` | Cross-site scripting vulnerability due to $@. | live-server.js:4:21:4:27 | req.url | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx new file mode 100644 index 00000000000..d6c2232e957 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/app/pages/Next2.jsx @@ -0,0 +1,19 @@ +export default function Post() { + return ; +} + +Post.getInitialProps = async (ctx) => { + const req = ctx.req; + const res = ctx.res; + res.end(req.url); // $ Alert + return {} +} + +export async function getServerSideProps(ctx) { + const req = ctx.req; + const res = ctx.res; + res.end(req.url); // $ Alert + return { + props: {} + } +} \ No newline at end of file From b33af5b377044a9c313851f9f49647506077215b Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 26 Nov 2025 11:40:41 +0100 Subject: [PATCH 958/965] JS: Fix typo --- javascript/ql/lib/semmle/javascript/ES2015Modules.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index ecce9621c24..9f37e3082b8 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -782,7 +782,7 @@ abstract class ReExportDeclaration extends ExportDeclaration { } /** - * Holds if this re-export destination ultimately re-exports `v` (from another module) + * Holds if this re-export declaration ultimately re-exports `v` (from another module) * under the given `name`. */ overlay[global] From 33c70570660e3b10b6438c79a529326dd192e9b5 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 26 Nov 2025 13:42:43 +0100 Subject: [PATCH 959/965] C++: Remove incorrect tests `__has_feature` is not available in GCC versions before GCC 14. Our frontend was exposing `__has_feature` when emulating earlier versions of GCC. This will be fixed with the latest major frontend update though. --- .../attributes/deprecated_with_msg/deprecated_with_msg.expected | 2 -- .../test/library-tests/attributes/deprecated_with_msg/gcc421.c | 2 -- .../test/library-tests/attributes/deprecated_with_msg/gcc450.c | 2 -- 3 files changed, 6 deletions(-) delete mode 100644 cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c delete mode 100644 cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/deprecated_with_msg.expected b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/deprecated_with_msg.expected index fcc90fac7ab..9101092571b 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/deprecated_with_msg.expected +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/deprecated_with_msg.expected @@ -1,4 +1,2 @@ | clang421.c:1:12:1:19 | clang421 | 0 | | clang450.c:1:12:1:19 | clang450 | 1 | -| gcc421.c:1:12:1:17 | gcc421 | 0 | -| gcc450.c:1:12:1:17 | gcc450 | 1 | diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c deleted file mode 100644 index 7f4e4f4d380..00000000000 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c +++ /dev/null @@ -1,2 +0,0 @@ -static int gcc421 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40201 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c deleted file mode 100644 index a49c8865163..00000000000 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c +++ /dev/null @@ -1,2 +0,0 @@ -static int gcc450 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40500 From 6050a0e1a8ea135196a6c824cf4d363122d77903 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 26 Nov 2025 14:45:31 +0100 Subject: [PATCH 960/965] Rust: Split boolean from number barriers --- rust/ql/lib/codeql/rust/security/Barriers.qll | 41 ++++++++----------- .../rust/security/LogInjectionExtensions.qll | 2 + .../rust/security/SqlInjectionExtensions.qll | 2 + .../regex/RegexInjectionExtensions.qll | 5 ++- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index fbe3691b412..d06287b473f 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -1,5 +1,5 @@ /** - * Classes to represent barriers commonly used in dataflow and taint tracking + * Classes to represent barriers commonly used in data flow and taint tracking * configurations. */ @@ -11,35 +11,26 @@ private import codeql.rust.controlflow.ControlFlowGraph as Cfg private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.frameworks.stdlib.Builtins as Builtins -/** - * A node whose type is a numeric or boolean type, which may be an appropriate - * taint flow barrier for some queries. - */ +/** A node whose type is a numeric. */ class NumericTypeBarrier extends DataFlow::Node { NumericTypeBarrier() { - exists(StructType t, Struct s | - t = TypeInference::inferType(this.asExpr()) and - s = t.getStruct() - | - s instanceof Builtins::NumericType or - s instanceof Builtins::Bool - ) + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof + Builtins::NumericType } } -/** - * A node whose type is an integral (integer) or boolean type, which may be an - * appropriate taint flow barrier for some queries. - */ -class IntegralOrBooleanTypeBarrier extends DataFlow::Node { - IntegralOrBooleanTypeBarrier() { - exists(StructType t, Struct s | - t = TypeInference::inferType(this.asExpr()) and - s = t.getStruct() - | - s instanceof Builtins::IntegralType or - s instanceof Builtins::Bool - ) +/** A node whose type is `bool`. */ +class BooleanTypeBarrier extends DataFlow::Node { + BooleanTypeBarrier() { + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof Builtins::Bool + } +} + +/** A node whose type is an integral (integer). */ +class IntegralTypeBarrier extends DataFlow::Node { + IntegralTypeBarrier() { + TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof + Builtins::IntegralType } } diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index dafebc96731..3603933a0bb 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -49,4 +49,6 @@ module LogInjection { * numeric or boolean type, which is unlikely to expose any vulnerability. */ private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } } diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index ff81df37e40..3a58add0857 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -64,4 +64,6 @@ module SqlInjection { * boolean type, which is unlikely to expose any vulnerability. */ private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } } diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 7c445bcbfd8..b6bd0cd899e 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -94,6 +94,7 @@ module RegexInjection { * We don't include floating point types in this barrier, as `.` is a special character * in regular expressions. */ - private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier - { } + private class IntegralTypeBarrier extends Barrier instanceof Barriers::IntegralTypeBarrier { } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } } From 081ab499c263c571a685acad51c688c707a186fe Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 26 Nov 2025 14:46:28 +0100 Subject: [PATCH 961/965] Rust: Add barrier for fieldless enum types --- rust/ql/lib/codeql/rust/internal/Type.qll | 3 +++ rust/ql/lib/codeql/rust/security/Barriers.qll | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index ccf5c754363..9cfa173c1a9 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -140,6 +140,9 @@ class EnumType extends Type, TEnum { EnumType() { this = TEnum(enum) } + /** Gets the enum that this enum type represents. */ + Enum getEnum() { result = enum } + override TypeParameter getPositionalTypeParameter(int i) { result = TTypeParamTypeParameter(enum.getGenericParamList().getTypeParam(i)) } diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index d06287b473f..2ad60aa79ac 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -34,6 +34,13 @@ class IntegralTypeBarrier extends DataFlow::Node { } } +/** A node whose type is a fieldless enum. */ +class FieldlessEnumTypeBarrier extends DataFlow::Node { + FieldlessEnumTypeBarrier() { + TypeInference::inferType(this.asExpr()).(EnumType).getEnum().isFieldless() + } +} + /** * Holds if guard expression `g` having result `branch` indicates that the * sub-expression `e` is not null. For example when `ptr.is_null()` is From 815af34c6668782c2a813584eb96c89894f23eeb Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 26 Nov 2025 14:47:54 +0100 Subject: [PATCH 962/965] Rust: Add additional barriers to queries --- .../lib/codeql/rust/security/CleartextLoggingExtensions.qll | 6 ++++++ rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll | 3 +++ rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll | 3 +++ 3 files changed, 12 insertions(+) diff --git a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll index 0961efd553f..f634992fb81 100644 --- a/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/CleartextLoggingExtensions.qll @@ -8,6 +8,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.security.SensitiveData private import codeql.rust.Concepts +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting cleartext logging @@ -42,4 +43,9 @@ module CleartextLogging { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + + private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index 3603933a0bb..8ef4f64182a 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -51,4 +51,7 @@ module LogInjection { private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index 3a58add0857..d82065ec5ed 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -66,4 +66,7 @@ module SqlInjection { private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } private class BooleanTypeBarrier extends Barrier instanceof Barriers::BooleanTypeBarrier { } + + private class FieldlessEnumTypeBarrier extends Barrier instanceof Barriers::FieldlessEnumTypeBarrier + { } } From caf6b950acb5a4b76dbbac83337404b926126861 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Wed, 26 Nov 2025 14:29:51 +0000 Subject: [PATCH 963/965] Remove trailing periods from @name metadata in query files Fixed 73 .ql query files where the @name metadata contained an ending period. This ensures consistency with the CodeQL query metadata style guidelines. --- .../Security/CWE-829/ArtifactPoisoningPathTraversal.ql | 2 +- .../CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql | 2 +- .../CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql | 2 +- .../CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql | 2 +- .../Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql | 2 +- .../Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql | 2 +- .../experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql | 2 +- .../Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql | 2 +- .../Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql | 2 +- cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql | 2 +- cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql | 2 +- cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql | 2 +- cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql | 2 +- cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql | 2 +- csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql | 2 +- csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql | 2 +- .../CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql | 2 +- csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql | 2 +- csharp/ql/src/utils/modelconverter/ExtractSinks.ql | 2 +- csharp/ql/src/utils/modelconverter/ExtractSources.ql | 2 +- csharp/ql/src/utils/modelconverter/ExtractSummaries.ql | 2 +- .../ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql | 2 +- csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql | 2 +- csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql | 2 +- csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql | 2 +- csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql | 2 +- .../src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql | 2 +- csharp/ql/test/library-tests/methods/Methods5.ql | 2 +- csharp/ql/test/library-tests/statements/Switch4.ql | 2 +- .../CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql | 2 +- .../Security/CWE/CWE-502/UnsafeDeserializationRmi.ql | 2 +- .../CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql | 2 +- .../CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql | 2 +- java/ql/src/utils/modelconverter/ExtractNeutrals.ql | 2 +- java/ql/src/utils/modelconverter/ExtractSinks.ql | 2 +- java/ql/src/utils/modelconverter/ExtractSources.ql | 2 +- java/ql/src/utils/modelconverter/ExtractSummaries.ql | 2 +- java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql | 2 +- java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql | 2 +- java/ql/src/utils/modelgenerator/CaptureSinkModels.ql | 2 +- java/ql/src/utils/modelgenerator/CaptureSourceModels.ql | 2 +- java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql | 2 +- .../src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql | 2 +- python/ql/src/Classes/MutatingDescriptor.ql | 2 +- python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql | 2 +- python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql | 2 +- python/ql/src/Variables/Global.ql | 2 +- python/ql/src/analysis/KeyPointsToFailure.ql | 2 +- python/ql/src/analysis/PointsToFailure.ql | 2 +- python/ql/src/experimental/Security/CWE-094/Js2Py.ql | 2 +- .../CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql | 2 +- .../cryptography/example_alerts/WeakKDFAlgorithm.ql | 2 +- .../cryptography/example_alerts/WeakKDFKeyLength.ql | 2 +- .../experimental/cryptography/example_alerts/WeakKDFSaltGen.ql | 2 +- .../experimental/cryptography/example_alerts/WeakKDFSaltSize.ql | 2 +- ql/ql/src/queries/performance/DontUseGetAQlClass.ql | 2 +- ql/ql/src/queries/performance/VarUnusedInDisjunct.ql | 2 +- ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql | 2 +- ql/ql/src/queries/style/IfWithElseNone.ql | 2 +- ql/ql/src/queries/style/OverridingParameterName.ql | 2 +- ql/ql/src/queries/style/RedundantAssignment.ql | 2 +- ql/ql/src/queries/style/SuperfluousExists.ql | 2 +- ql/ql/src/queries/style/SwappedParameterNames.ql | 2 +- ql/ql/src/queries/style/UseInstanceofExtension.ql | 2 +- ql/ql/src/queries/style/docs/ClassDocs.ql | 2 +- ql/ql/src/queries/style/docs/PredicateDocs.ql | 2 +- ruby/ql/src/queries/variables/UnusedParameter.ql | 2 +- ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql | 2 +- rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql | 2 +- rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql | 2 +- rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql | 2 +- rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql | 2 +- rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql | 2 +- 73 files changed, 73 insertions(+), 73 deletions(-) diff --git a/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql b/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql index 517a9d1eaad..d03d2407cb7 100644 --- a/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql +++ b/actions/ql/src/experimental/Security/CWE-829/ArtifactPoisoningPathTraversal.ql @@ -1,5 +1,5 @@ /** - * @name Artifact Poisoning (Path Traversal). + * @name Artifact Poisoning (Path Traversal) * @description An attacker may be able to poison the workflow's artifacts and influence on consequent steps. * @kind problem * @problem.severity error diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql b/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql index 74ac8e6da66..c562e28326b 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-125/DangerousWorksWithMultibyteOrWideCharacters.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use convert function. + * @name Dangerous use convert function * @description Using convert function with an invalid length argument can result in an out-of-bounds access error or unexpected result. * @kind problem * @id cpp/dangerous-use-convert-function diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql b/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql index e848b97ef8f..47ece4a2aae 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/DangerousUseOfTransformationAfterOperation.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use of transformation after operation. + * @name Dangerous use of transformation after operation * @description By using the transformation after the operation, you are doing a pointless and dangerous action. * @kind problem * @id cpp/dangerous-use-of-transformation-after-operation diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql b/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql index 61708ce5da0..7d810d6317d 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-200/ExposureSensitiveInformationUnauthorizedActor.ql @@ -1,5 +1,5 @@ /** - * @name Writing to a file without setting permissions. + * @name Writing to a file without setting permissions * @description Lack of restriction on file access rights can be unsafe. * @kind problem * @id cpp/work-with-file-without-permissions-rights diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql b/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql index 9d61418fd77..5ee6a8db1a4 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-243/IncorrectChangingWorkingDirectory.ql @@ -1,5 +1,5 @@ /** - * @name Find work with changing working directories, with security errors. + * @name Find work with changing working directories, with security errors * @description Not validating the return value or pinning the directory can be unsafe. * @kind problem * @id cpp/work-with-changing-working-directories diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql index a8f93155599..6bb6a48a9eb 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-266/IncorrectPrivilegeAssignment.ql @@ -1,5 +1,5 @@ /** - * @name Find the wrong use of the umask function. + * @name Find the wrong use of the umask function * @description Incorrectly evaluated argument to the umask function may have security implications. * @kind problem * @id cpp/wrong-use-of-the-umask diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql b/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql index f62222eb5b9..cecb280a3c2 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-377/InsecureTemporaryFile.ql @@ -1,5 +1,5 @@ /** - * @name Insecure generation of filenames. + * @name Insecure generation of filenames * @description Using a predictable filename when creating a temporary file can lead to an attacker-controlled input. * @kind problem * @id cpp/insecure-generation-of-filename diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql b/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql index 4eb24c14322..d6d1a31b342 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-476/DangerousUseOfExceptionBlocks.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use of exception blocks. + * @name Dangerous use of exception blocks * @description When clearing the data in the catch block, you must be sure that the memory was allocated before the exception. * @kind problem * @id cpp/dangerous-use-of-exception-blocks diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql index a5270518894..066475c35cb 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql @@ -1,5 +1,5 @@ /** - * @name Dangerous use SSL_shutdown. + * @name Dangerous use SSL_shutdown * @description Incorrect closing of the connection leads to the creation of different states for the server and client, which can be exploited by an attacker. * @kind problem * @id cpp/dangerous-use-of-ssl-shutdown diff --git a/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index a15a584e13d..7c547d7f067 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/contentbased-summary-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 813eece65b9..8631ec6ddd6 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/neutral-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 1ed9b032070..84bff3f3994 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id cpp/utils/modelgenerator/sink-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 4f86fb6b6fb..a45b96474b4 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id cpp/utils/modelgenerator/source-models diff --git a/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index a023afabd31..baf4c55ecdc 100644 --- a/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/cpp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cpp/utils/modelgenerator/summary-models diff --git a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql index 44ead3cfd97..bd30e690a66 100644 --- a/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql +++ b/csharp/ql/src/Likely Bugs/Collections/ContainerSizeCmpZero.ql @@ -1,5 +1,5 @@ /** - * @name Container size compared to zero. + * @name Container size compared to zero * @description Comparing the size of a container to zero with this operator will always return the same value. * @kind problem * @problem.severity warning diff --git a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql index b48ddbf0f35..7a328052f86 100644 --- a/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql +++ b/csharp/ql/src/Security Features/CWE-327/DontInstallRootCert.ql @@ -1,5 +1,5 @@ /** - * @name Do not add certificates to the system root store. + * @name Do not add certificates to the system root store * @description Application- or user-specific certificates placed in the system root store could * weaken security for other processing running on the same system. * @kind path-problem diff --git a/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index d8bbbce7065..a2983f15d82 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187). + * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187) * @description Unsafe usage of v1 version of Azure Storage client-side encryption, please refer to http://aka.ms/azstorageclientencryptionblog * @kind problem * @tags security diff --git a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql index 830365e161d..b9d748fdf77 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD neutral model rows. + * @name Extract MaD neutral model rows * @description This extracts the Models as data neutral model rows. * @id cs/utils/modelconverter/generate-data-extensions-neutral */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql index aef2e8fa10e..d442e42b4b6 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSinks.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSinks.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD sink model rows. + * @name Extract MaD sink model rows * @description This extracts the Models as data sink model rows. * @id cs/utils/modelconverter/generate-data-extensions-sink */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSources.ql b/csharp/ql/src/utils/modelconverter/ExtractSources.ql index d940178ca05..d2899346286 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSources.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSources.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD source model rows. + * @name Extract MaD source model rows * @description This extracts the Models as data source model rows. * @id cs/utils/modelconverter/generate-data-extensions-source */ diff --git a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql index c6c5a257f74..e5ca42a97b5 100644 --- a/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql +++ b/csharp/ql/src/utils/modelconverter/ExtractSummaries.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD summary model rows. + * @name Extract MaD summary model rows * @description This extracts the Models as data summary model rows. * @id cs/utils/modelconverter/generate-data-extensions-summary */ diff --git a/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 6030960a1a7..59d917ebbdc 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/contentbased-summary-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index c74240bedea..04f58e1b45e 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/neutral-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql index f0d3294cd8a..be69194d9c2 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id cs/utils/modelgenerator/sink-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 97688d6eb42..78268446c5e 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id cs/utils/modelgenerator/source-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index 61656c200ad..456cc020870 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/summary-models diff --git a/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql b/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql index 19bec058d40..bd7b923a14b 100644 --- a/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql +++ b/csharp/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture typed based summary models. + * @name Capture typed based summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id cs/utils/modelgenerator/summary-models-typed-based diff --git a/csharp/ql/test/library-tests/methods/Methods5.ql b/csharp/ql/test/library-tests/methods/Methods5.ql index b7c74d24d13..eb2980a17da 100644 --- a/csharp/ql/test/library-tests/methods/Methods5.ql +++ b/csharp/ql/test/library-tests/methods/Methods5.ql @@ -1,5 +1,5 @@ /** - * @name Tests call graph. + * @name Tests call graph */ import csharp diff --git a/csharp/ql/test/library-tests/statements/Switch4.ql b/csharp/ql/test/library-tests/statements/Switch4.ql index 742190ad4d5..af44a5f92cf 100644 --- a/csharp/ql/test/library-tests/statements/Switch4.ql +++ b/csharp/ql/test/library-tests/statements/Switch4.ql @@ -1,5 +1,5 @@ /** - * @name Test the implicit switch field isn't populated. + * @name Test the implicit switch field isn't populated */ import csharp diff --git a/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a5d17250491..180b816fc9f 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187). + * @name Unsafe usage of v1 version of Azure Storage client-side encryption (CVE-2022-30187) * @description Unsafe usage of v1 version of Azure Storage client-side encryption, please refer to http://aka.ms/azstorageclientencryptionblog * @kind problem * @tags security diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql index 5573c9e0e1d..5803915dd03 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeDeserializationRmi.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization in a remotely callable method. + * @name Unsafe deserialization in a remotely callable method * @description If a registered remote object has a method that accepts a complex object, * an attacker can take advantage of the unsafe deserialization mechanism * which is used to pass parameters in RMI. diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql index 949ffee66e6..2db3bfa750b 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInConfigurationClass.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization with Spring's remote service exporters. + * @name Unsafe deserialization with Spring's remote service exporters * @description A Spring bean, which is based on RemoteInvocationSerializingExporter, * initializes an endpoint that uses ObjectInputStream to deserialize * incoming data. In the worst case, that may lead to remote code execution. diff --git a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql index 1b570465f23..d74fa98afc1 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-502/UnsafeSpringExporterInXMLConfiguration.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe deserialization with Spring's remote service exporters. + * @name Unsafe deserialization with Spring's remote service exporters * @description A Spring bean, which is based on RemoteInvocationSerializingExporter, * initializes an endpoint that uses ObjectInputStream to deserialize * incoming data. In the worst case, that may lead to remote code execution. diff --git a/java/ql/src/utils/modelconverter/ExtractNeutrals.ql b/java/ql/src/utils/modelconverter/ExtractNeutrals.ql index 47fb80af437..108aa454232 100644 --- a/java/ql/src/utils/modelconverter/ExtractNeutrals.ql +++ b/java/ql/src/utils/modelconverter/ExtractNeutrals.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD neutral model rows. + * @name Extract MaD neutral model rows * @description This extracts the Models as data neutral model rows. * @id java/utils/modelconverter/generate-data-extensions-neutral */ diff --git a/java/ql/src/utils/modelconverter/ExtractSinks.ql b/java/ql/src/utils/modelconverter/ExtractSinks.ql index 4439f3ef008..ae79cf3a49d 100644 --- a/java/ql/src/utils/modelconverter/ExtractSinks.ql +++ b/java/ql/src/utils/modelconverter/ExtractSinks.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD sink model rows. + * @name Extract MaD sink model rows * @description This extracts the Models as data sink model rows. * @id java/utils/modelconverter/generate-data-extensions-sink */ diff --git a/java/ql/src/utils/modelconverter/ExtractSources.ql b/java/ql/src/utils/modelconverter/ExtractSources.ql index cc0faca73d6..8aeb4542a00 100644 --- a/java/ql/src/utils/modelconverter/ExtractSources.ql +++ b/java/ql/src/utils/modelconverter/ExtractSources.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD source model rows. + * @name Extract MaD source model rows * @description This extracts the Models as data source model rows. * @id java/utils/modelconverter/generate-data-extensions-source */ diff --git a/java/ql/src/utils/modelconverter/ExtractSummaries.ql b/java/ql/src/utils/modelconverter/ExtractSummaries.ql index 6fbed049fd6..4976c4a1329 100644 --- a/java/ql/src/utils/modelconverter/ExtractSummaries.ql +++ b/java/ql/src/utils/modelconverter/ExtractSummaries.ql @@ -1,5 +1,5 @@ /** - * @name Extract MaD summary model rows. + * @name Extract MaD summary model rows * @description This extracts the Models as data summary model rows. * @id java/utils/modelconverter/generate-data-extensions-summary */ diff --git a/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 39e8cd9a0a4..e53daa73531 100644 --- a/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/contentbased-summary-models diff --git a/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 6008c3bfb8c..c5ba30945f7 100644 --- a/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/neutral-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 7fcba8850d6..327bcd0da9e 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id java/utils/modelgenerator/sink-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql index c623645820b..2132932981c 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id java/utils/modelgenerator/source-models diff --git a/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index 3bc49c31df2..b33a7a3a4b2 100644 --- a/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/summary-models diff --git a/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql b/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql index f0a33731a87..d356cc16a06 100644 --- a/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql +++ b/java/ql/src/utils/modelgenerator/CaptureTypeBasedSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture typed based summary models. + * @name Capture typed based summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id java/utils/modelgenerator/summary-models-typed-based diff --git a/python/ql/src/Classes/MutatingDescriptor.ql b/python/ql/src/Classes/MutatingDescriptor.ql index aad468f8e3c..afcbcc35bf2 100644 --- a/python/ql/src/Classes/MutatingDescriptor.ql +++ b/python/ql/src/Classes/MutatingDescriptor.ql @@ -1,5 +1,5 @@ /** - * @name Mutation of descriptor in `__get__` or `__set__` method. + * @name Mutation of descriptor in `__get__` or `__set__` method * @description Descriptor objects can be shared across many instances. Mutating them can cause strange side effects or race conditions. * @kind problem * @tags quality diff --git a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql index 01056daaf78..eaabd4c5281 100644 --- a/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql +++ b/python/ql/src/Security/CWE-1004/NonHttpOnlyCookie.ql @@ -1,5 +1,5 @@ /** - * @name Sensitive cookie missing `HttpOnly` attribute. + * @name Sensitive cookie missing `HttpOnly` attribute * @description Cookies without the `HttpOnly` attribute set can be accessed by JS scripts, making them more vulnerable to XSS attacks. * @kind problem * @problem.severity warning diff --git a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql index ebad2ddbba6..9bc58d2d474 100644 --- a/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql +++ b/python/ql/src/Security/CWE-1275/SameSiteNoneCookie.ql @@ -1,5 +1,5 @@ /** - * @name Sensitive cookie with `SameSite` attribute set to `None`. + * @name Sensitive cookie with `SameSite` attribute set to `None` * @description Cookies with `SameSite` set to `None` can allow for Cross-Site Request Forgery (CSRF) attacks. * @kind problem * @problem.severity warning diff --git a/python/ql/src/Variables/Global.ql b/python/ql/src/Variables/Global.ql index b29fb564a87..40e777c62d6 100644 --- a/python/ql/src/Variables/Global.ql +++ b/python/ql/src/Variables/Global.ql @@ -1,5 +1,5 @@ /** - * @name Use of the 'global' statement. + * @name Use of the 'global' statement * @description Use of the 'global' statement may indicate poor modularity. * @kind problem * @problem.severity recommendation diff --git a/python/ql/src/analysis/KeyPointsToFailure.ql b/python/ql/src/analysis/KeyPointsToFailure.ql index d869d547c75..f07e8638f38 100644 --- a/python/ql/src/analysis/KeyPointsToFailure.ql +++ b/python/ql/src/analysis/KeyPointsToFailure.ql @@ -1,5 +1,5 @@ /** - * @name Key points-to fails for expression. + * @name Key points-to fails for expression * @description Expression does not "point-to" an object which prevents further points-to analysis. * @kind problem * @problem.severity info diff --git a/python/ql/src/analysis/PointsToFailure.ql b/python/ql/src/analysis/PointsToFailure.ql index 7b9a2ac0659..fee1e80d2f7 100644 --- a/python/ql/src/analysis/PointsToFailure.ql +++ b/python/ql/src/analysis/PointsToFailure.ql @@ -1,5 +1,5 @@ /** - * @name points-to fails for expression. + * @name points-to fails for expression * @description Expression does not "point-to" an object which prevents type inference. * @kind problem * @id py/points-to-failure diff --git a/python/ql/src/experimental/Security/CWE-094/Js2Py.ql b/python/ql/src/experimental/Security/CWE-094/Js2Py.ql index 53c919d9732..2ed3c37da37 100644 --- a/python/ql/src/experimental/Security/CWE-094/Js2Py.ql +++ b/python/ql/src/experimental/Security/CWE-094/Js2Py.ql @@ -1,5 +1,5 @@ /** - * @name JavaScript code execution. + * @name JavaScript code execution * @description Passing user supplied arguments to a Javascript to Python translation engine such as Js2Py can lead to remote code execution. * @problem.severity error * @security-severity 9.3 diff --git a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql index a0fadbff3f3..fdbda943921 100644 --- a/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql +++ b/python/ql/src/experimental/Security/CWE-327/Azure/UnsafeUsageOfClientSideEncryptionVersion.ql @@ -1,5 +1,5 @@ /** - * @name Unsafe usage of v1 version of Azure Storage client-side encryption. + * @name Unsafe usage of v1 version of Azure Storage client-side encryption * @description Using version v1 of Azure Storage client-side encryption is insecure, and may enable an attacker to decrypt encrypted data * @kind path-problem * @tags security diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql index 0f30571385a..c3dde29952d 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFAlgorithm.ql @@ -1,5 +1,5 @@ /** - * @name Weak KDF algorithm. + * @name Weak KDF algorithm * @description Approved KDF algorithms must one of the following * ["PBKDF2" , "PBKDF2HMAC", "KBKDF", "KBKDFHMAC", "CONCATKDF", "CONCATKDFHASH"] * @assumption The value being used to derive a key (either a key or a password) is correct for the algorithm (i.e., a key is used for KBKDF and a password for PBKDF). diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql index a7c83f9e62e..6a5a48a4fe5 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFKeyLength.ql @@ -1,5 +1,5 @@ /** - * @name Small KDF derived key length. + * @name Small KDF derived key length * @description KDF derived keys should be a minimum of 128 bits (16 bytes). * @assumption If the key length is not explicitly provided (e.g., it is None or otherwise not specified) assumes the length is derived from the hash length. * @kind problem diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql index 9d312583912..4d3cd7b1dfd 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltGen.ql @@ -1,5 +1,5 @@ /** - * @name Weak KDF salt generation. + * @name Weak KDF salt generation * @description KDF salts must be generated by an approved random number generator (os.urandom) * @kind problem * @id py/kdf-weak-salt-gen diff --git a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql index 54f72de0594..7477391a738 100644 --- a/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql +++ b/python/ql/src/experimental/cryptography/example_alerts/WeakKDFSaltSize.ql @@ -1,5 +1,5 @@ /** - * @name Small KDF salt length. + * @name Small KDF salt length * @description KDF salts should be a minimum of 128 bits (16 bytes). * * This alerts if a constant traces to to a salt length sink less than 128-bits or diff --git a/ql/ql/src/queries/performance/DontUseGetAQlClass.ql b/ql/ql/src/queries/performance/DontUseGetAQlClass.ql index dbf31cad4c3..fcba654e175 100644 --- a/ql/ql/src/queries/performance/DontUseGetAQlClass.ql +++ b/ql/ql/src/queries/performance/DontUseGetAQlClass.ql @@ -1,5 +1,5 @@ /** - * @name Don't use getAQlClass. + * @name Don't use getAQlClass * @description Any use of getAQlClass causes both compile-time and runtime to be significantly slower. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql b/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql index 2d85b872153..e6db3ad3d98 100644 --- a/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql +++ b/ql/ql/src/queries/performance/VarUnusedInDisjunct.ql @@ -1,5 +1,5 @@ /** - * @name Var only used in one side of disjunct. + * @name Var only used in one side of disjunct * @description Only using a variable on one side of a disjunction can cause a cartesian product. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql b/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql index e7d27efa66c..70c2955ff01 100644 --- a/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql +++ b/ql/ql/src/queries/style/AcronymsShouldBeCamelCase.ql @@ -1,5 +1,5 @@ /** - * @name Acronyms should be PascalCase/camelCase. + * @name Acronyms should be PascalCase/camelCase * @description Acronyms should be PascalCase/camelCase instead of upper-casing all the letters. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/IfWithElseNone.ql b/ql/ql/src/queries/style/IfWithElseNone.ql index c563c28e9f8..0c1c4b8b17b 100644 --- a/ql/ql/src/queries/style/IfWithElseNone.ql +++ b/ql/ql/src/queries/style/IfWithElseNone.ql @@ -1,5 +1,5 @@ /** - * @name Use of 'if' with a 'none()' branch. + * @name Use of 'if' with a 'none()' branch * @description Using 'if p() then q() else none()' is bad style. It should be rewritten as 'p() and q()'. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/OverridingParameterName.ql b/ql/ql/src/queries/style/OverridingParameterName.ql index 723f4442fc2..1a5630f60a0 100644 --- a/ql/ql/src/queries/style/OverridingParameterName.ql +++ b/ql/ql/src/queries/style/OverridingParameterName.ql @@ -1,5 +1,5 @@ /** - * @name Using a different parameter name than used in the super-predicate. + * @name Using a different parameter name than used in the super-predicate * @description Using another parameter can be an indication of copy-pasted code, or a mistake. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/RedundantAssignment.ql b/ql/ql/src/queries/style/RedundantAssignment.ql index 83f62364d9f..8a741c190f8 100644 --- a/ql/ql/src/queries/style/RedundantAssignment.ql +++ b/ql/ql/src/queries/style/RedundantAssignment.ql @@ -1,5 +1,5 @@ /** - * @name Redundant assignment. + * @name Redundant assignment * @description Assigning the same value twice is redundant. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/SuperfluousExists.ql b/ql/ql/src/queries/style/SuperfluousExists.ql index 84380330fa8..b1993b4994f 100644 --- a/ql/ql/src/queries/style/SuperfluousExists.ql +++ b/ql/ql/src/queries/style/SuperfluousExists.ql @@ -1,5 +1,5 @@ /** - * @name Superfluous 'exists' conjunct. + * @name Superfluous 'exists' conjunct * @description Writing 'exists(x)' when the existence of X is implied by another conjunct is bad practice. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/SwappedParameterNames.ql b/ql/ql/src/queries/style/SwappedParameterNames.ql index c3b835f6ab8..766b798ffdd 100644 --- a/ql/ql/src/queries/style/SwappedParameterNames.ql +++ b/ql/ql/src/queries/style/SwappedParameterNames.ql @@ -1,5 +1,5 @@ /** - * @name Swapped parameter names in overriding predicate. + * @name Swapped parameter names in overriding predicate * @description Swapping the parameter names in an overriding method indicates an implementation mistake. * @kind problem * @problem.severity error diff --git a/ql/ql/src/queries/style/UseInstanceofExtension.ql b/ql/ql/src/queries/style/UseInstanceofExtension.ql index 33ceb5f1030..9cb7a1cd6b5 100644 --- a/ql/ql/src/queries/style/UseInstanceofExtension.ql +++ b/ql/ql/src/queries/style/UseInstanceofExtension.ql @@ -1,5 +1,5 @@ /** - * @name Suggest using non-extending subtype relationships. + * @name Suggest using non-extending subtype relationships * @description Non-extending subtypes ("instanceof extensions") are generally preferable to instanceof expressions in characteristic predicates. * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/docs/ClassDocs.ql b/ql/ql/src/queries/style/docs/ClassDocs.ql index f7e5d7ac8d8..675d8976f16 100644 --- a/ql/ql/src/queries/style/docs/ClassDocs.ql +++ b/ql/ql/src/queries/style/docs/ClassDocs.ql @@ -1,5 +1,5 @@ /** - * @name Class QLDoc style. + * @name Class QLDoc style * @description The QLDoc for a class should start with "A", "An", or "The". * @kind problem * @problem.severity warning diff --git a/ql/ql/src/queries/style/docs/PredicateDocs.ql b/ql/ql/src/queries/style/docs/PredicateDocs.ql index a8a271e7ab8..8ab415fec4a 100644 --- a/ql/ql/src/queries/style/docs/PredicateDocs.ql +++ b/ql/ql/src/queries/style/docs/PredicateDocs.ql @@ -1,5 +1,5 @@ /** - * @name Predicate QLDoc style. + * @name Predicate QLDoc style * @description The QLDoc for a predicate should start with "Gets" or "Holds". * @kind problem * @problem.severity warning diff --git a/ruby/ql/src/queries/variables/UnusedParameter.ql b/ruby/ql/src/queries/variables/UnusedParameter.ql index d212ee883f7..2dc3e0b5341 100644 --- a/ruby/ql/src/queries/variables/UnusedParameter.ql +++ b/ruby/ql/src/queries/variables/UnusedParameter.ql @@ -1,5 +1,5 @@ /** - * @name Unused parameter. + * @name Unused parameter * @description A parameter that is not used later on, or whose value is always overwritten, * can be removed. * @kind problem diff --git a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql index 039fcfbf1c9..160aed49040 100644 --- a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql +++ b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql @@ -1,5 +1,5 @@ /** - * @name Fetch a subset of valid access paths of input and output parameters of a method (framework mode). + * @name Fetch a subset of valid access paths of input and output parameters of a method (framework mode) * @description A list of access paths for input and output parameters of a method. Excludes test and generated code. * @kind table * @id ruby/utils/modeleditor/framework-mode-access-paths diff --git a/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql b/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql index 9dd63e06ea7..38568b02ad4 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureContentSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture content based summary models. + * @name Capture content based summary models * @description Finds applicable content based summary models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/contentbased-summary-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql b/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql index 556d1624f39..aade0ea4037 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureNeutralModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture neutral models. + * @name Capture neutral models * @description Finds neutral models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/neutral-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql index 989637a867e..cbd15849b15 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSinkModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture sink models. + * @name Capture sink models * @description Finds public methods that act as sinks as they flow into a known sink. * @kind diagnostic * @id rust/utils/modelgenerator/sink-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql index 2ffc4894b18..5403e2e3e50 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSourceModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture source models. + * @name Capture source models * @description Finds APIs that act as sources as they expose already known sources. * @kind diagnostic * @id rust/utils/modelgenerator/source-models diff --git a/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql b/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql index d0b3152c9be..48789e72231 100644 --- a/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql +++ b/rust/ql/src/utils/modelgenerator/CaptureSummaryModels.ql @@ -1,5 +1,5 @@ /** - * @name Capture summary models. + * @name Capture summary models * @description Finds applicable summary models to be used by other queries. * @kind diagnostic * @id rust/utils/modelgenerator/summary-models From 329df20e55d4a4b6005b2cc80d9343aba4db3a56 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 26 Nov 2025 15:48:34 +0100 Subject: [PATCH 964/965] Rust: Fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rust/ql/lib/codeql/rust/security/Barriers.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 2ad60aa79ac..845a689af11 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -11,7 +11,7 @@ private import codeql.rust.controlflow.ControlFlowGraph as Cfg private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.frameworks.stdlib.Builtins as Builtins -/** A node whose type is a numeric. */ +/** A node whose type is a numeric type. */ class NumericTypeBarrier extends DataFlow::Node { NumericTypeBarrier() { TypeInference::inferType(this.asExpr()).(StructType).getStruct() instanceof From a9b58b8db37bfd16a6f392429befa5217d3abbec Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Sun, 17 Aug 2025 16:40:19 +0200 Subject: [PATCH 965/965] Rust: Model `async` return types as `dyn Future` --- .../codeql/rust/internal/TypeInference.qll | 16 +++++++---- .../type-inference/type-inference.expected | 28 +++++++++---------- rust/tools/builtins/mentions.rs | 6 ++++ 3 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 rust/tools/builtins/mentions.rs diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 75147c29e04..e58ae8b1a5b 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -629,7 +629,7 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat n2 = be.getStmtList().getTailExpr() and if be.isAsync() then - prefix1 = TypePath::singleton(getFutureOutputTypeParameter()) and + prefix1 = TypePath::singleton(getDynFutureOutputTypeParameter()) and prefix2.isEmpty() else ( prefix1.isEmpty() and @@ -2053,7 +2053,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi or exists(TypePath suffix | result = this.resolveRetType(suffix) and - path = TypePath::cons(getFutureOutputTypeParameter(), suffix) + path = TypePath::cons(getDynFutureOutputTypeParameter(), suffix) ) else result = this.resolveRetType(path) } @@ -3024,13 +3024,18 @@ private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { } pragma[nomagic] -private TraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } +private DynTraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } pragma[nomagic] private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { result.getTypeAlias() = any(FutureTrait ft).getOutputType() } +pragma[nomagic] +private DynTraitTypeParameter getDynFutureOutputTypeParameter() { + result = TDynTraitTypeParameter(any(FutureTrait ft).getOutputType()) +} + pragma[nomagic] predicate isUnitBlockExpr(BlockExpr be) { not be.getStmtList().hasTailExpr() and @@ -3047,7 +3052,7 @@ private Type inferBlockExprType(BlockExpr be, TypePath path) { result = getFutureTraitType() or isUnitBlockExpr(be) and - path = TypePath::singleton(getFutureOutputTypeParameter()) and + path = TypePath::singleton(getDynFutureOutputTypeParameter()) and result instanceof UnitType ) else ( isUnitBlockExpr(be) and @@ -3072,6 +3077,7 @@ final private class AwaitTarget extends Expr { } private module AwaitSatisfiesConstraintInput implements SatisfiesConstraintInputSig { + pragma[nomagic] predicate relevantConstraint(AwaitTarget term, Type constraint) { exists(term) and constraint.(TraitType).getTrait() instanceof FutureTrait @@ -3390,7 +3396,7 @@ private Type inferClosureExprType(AstNode n, TypePath path) { exists(ClosureExpr ce | n = ce and path.isEmpty() and - result = TDynTraitType(any(FnOnceTrait t)) + result = TDynTraitType(any(FnOnceTrait t)) // always exists because of the mention in `builtins/mentions.rs` or n = ce and path = TypePath::singleton(TDynTraitTypeParameter(any(FnOnceTrait t).getTypeParam())) and diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index a56b6b7c475..6e8901b7349 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -4908,12 +4908,12 @@ inferType | main.rs:2227:25:2229:5 | { ... } | | main.rs:2221:5:2221:14 | S1 | | main.rs:2228:9:2228:10 | S1 | | main.rs:2221:5:2221:14 | S1 | | main.rs:2231:41:2233:5 | { ... } | | main.rs:2231:16:2231:39 | impl ... | -| main.rs:2232:9:2232:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2232:9:2232:20 | { ... } | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2232:9:2232:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2232:9:2232:20 | { ... } | dyn(Output) | main.rs:2221:5:2221:14 | S1 | | main.rs:2232:17:2232:18 | S1 | | main.rs:2221:5:2221:14 | S1 | | main.rs:2235:41:2237:5 | { ... } | | main.rs:2235:16:2235:39 | impl ... | -| main.rs:2236:9:2236:16 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2236:9:2236:16 | { ... } | Output | {EXTERNAL LOCATION} | () | +| main.rs:2236:9:2236:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2236:9:2236:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | | main.rs:2245:13:2245:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | | main.rs:2245:13:2245:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | & | | main.rs:2245:13:2245:42 | SelfParam | Ptr.TRef | main.rs:2239:5:2239:14 | S2 | @@ -4928,8 +4928,8 @@ inferType | main.rs:2253:9:2253:10 | S2 | | main.rs:2239:5:2239:14 | S2 | | main.rs:2253:9:2253:10 | S2 | | main.rs:2252:16:2252:39 | impl ... | | main.rs:2256:22:2264:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2257:9:2257:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2257:9:2257:12 | f1(...) | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2257:9:2257:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2257:9:2257:12 | f1(...) | dyn(Output) | main.rs:2221:5:2221:14 | S1 | | main.rs:2257:9:2257:18 | await ... | | main.rs:2221:5:2221:14 | S1 | | main.rs:2257:9:2257:22 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2258:9:2258:12 | f2(...) | | main.rs:2231:16:2231:39 | impl ... | @@ -4943,13 +4943,13 @@ inferType | main.rs:2261:9:2261:10 | S2 | | main.rs:2239:5:2239:14 | S2 | | main.rs:2261:9:2261:16 | await S2 | | main.rs:2221:5:2221:14 | S1 | | main.rs:2261:9:2261:20 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:2262:13:2262:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2262:13:2262:13 | b | Output | main.rs:2221:5:2221:14 | S1 | -| main.rs:2262:17:2262:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2262:17:2262:28 | { ... } | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:13:2262:13 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2262:13:2262:13 | b | dyn(Output) | main.rs:2221:5:2221:14 | S1 | +| main.rs:2262:17:2262:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2262:17:2262:28 | { ... } | dyn(Output) | main.rs:2221:5:2221:14 | S1 | | main.rs:2262:25:2262:26 | S1 | | main.rs:2221:5:2221:14 | S1 | -| main.rs:2263:9:2263:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2263:9:2263:9 | b | Output | main.rs:2221:5:2221:14 | S1 | +| main.rs:2263:9:2263:9 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2263:9:2263:9 | b | dyn(Output) | main.rs:2221:5:2221:14 | S1 | | main.rs:2263:9:2263:15 | await b | | main.rs:2221:5:2221:14 | S1 | | main.rs:2263:9:2263:19 | ... .f() | | {EXTERNAL LOCATION} | () | | main.rs:2274:15:2274:19 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -6550,8 +6550,8 @@ inferType | main.rs:3061:5:3061:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3062:5:3062:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3063:5:3063:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:3064:5:3064:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:3064:5:3064:15 | ...::f(...) | Output | {EXTERNAL LOCATION} | () | +| main.rs:3064:5:3064:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:3064:5:3064:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | | main.rs:3065:5:3065:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3066:5:3066:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | | main.rs:3067:5:3067:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | diff --git a/rust/tools/builtins/mentions.rs b/rust/tools/builtins/mentions.rs new file mode 100644 index 00000000000..a3731164893 --- /dev/null +++ b/rust/tools/builtins/mentions.rs @@ -0,0 +1,6 @@ +// Type mentions required by type inference + +use std::future::Future; +fn mention_dyn_future(f: &dyn Future) {} + +fn mention_dyn_fn_once(f: &dyn FnOnce() -> F) {}